なぜ「Sublime Textのプラグイン」を書くべきなのか?
多くのエンジニアがVS CodeやCursorのような「オールインワン」なエディタに流れる中、あえてSublime Textを使い続ける理由は明確です。それは「驚異的な起動速度」と「エディタそのものを自由に拡張できるPython実行環境」がシームレスに統合されているからです。
Sublime Textのプラグイン開発は、単なるマクロ作成ではありません。エディタのコア(C++)とあなたの書くロジック(Python)が、APIを介してメモリ空間を共有して動作します。つまり、あなたはエディタの挙動を「外側から操作する」のではなく、「エディタの機能の一部として組み込む」ことができるのです。
これをマスターすれば、毎日のコーディングで「あと一歩、こう動いてくれたらいいのに」という小さなストレスを、わずか数行のコードで完全に消し去ることができます。
—
1. 開発の舞台を整える:専用ディレクトリの構造
Sublime Textのプラグインは、`Packages`ディレクトリ内の特定の構造を守るだけで認識されます。まずは以下の手順で環境を作ります。
1. Sublime Textを起動。
2. メニューバーの `Preferences` > `Browse Packages…` を選択。
3. 開いたフォルダの中に `MyOptimizer` というフォルダを作成します。
これだけです。Sublime Textは、このフォルダを監視し、中に配置された`.py`ファイルを自動的に読み込みます。コンパイルも再起動も不要。保存した瞬間、あなたのコードはエディタの一部になります。
—
2. Hello Worldを超えた「自動整形」のロジック
単にポップアップを出すだけのHello Worldは誰でも書けます。今回は、「選択したテキストを即座に大文字変換し、かつログに残す」という、実務で使える最小単位のプラグインを作成します。
`MyOptimizer/main.py` というファイルを作成し、以下のコードを記述してください。
import sublime
import sublime_plugin
TextCommandクラスを継承することで、エディタの編集機能に介入します
class UppercaseAndLogCommand(sublime_plugin.TextCommand):
def run(self, edit):
# viewは現在開いているファイルを指すオブジェクト
for region in self.view.sel():
if not region.empty():
# 選択範囲のテキストを取得
s = self.view.substr(region)
# 大文字変換して置換
self.view.replace(edit, region, s.upper())
# コンソールにログを出力(Ctrl+` で確認可能)
print(f”変換実行: {s} -> {s.upper()}”)
このコードの「本質」
- `sublime_plugin.TextCommand`: エディタの編集イベントをフックするための基底クラスです。
- `edit`オブジェクト: Sublime Textのundo/redoスタックを管理するための「編集トークン」です。これを経由しない変更は、エディタの履歴管理から漏れてしまいます。
—
3. 動作確認:コマンドを呼び出す
作成したプラグインを呼び出すには、コマンドパレット(`Ctrl+Shift+P`)を使います。しかし、今のままでは名前が長すぎます。これをキーボードショートカットに割り当てましょう。
`Preferences` > `Key Bindings` を開き、右側のユーザー設定ファイルに以下を追記します。
[
// Ctrl+Shift+U を押すと、先ほど作ったコマンドが実行される設定
{
“keys”: [“ctrl+shift+u”],
“command”: “uppercase_and_log”
}
]
※ クラス名が `UppercaseAndLogCommand` の場合、コマンド名は自動的にスネークケースの `uppercase_and_log` に変換されるのがSublime流の規約です。
—
4. 現場で「震える」ための次のステップ
ここから先は、あなたの発想次第で可能性は無限に広がります。
実践的なアイデアの種
1. スニペットの動的生成: 特定のプロジェクトフォルダを開いた時だけ、そのプロジェクト固有の定型文をメニューに追加する。
2. API連携: 選択した関数名をGoogleで検索したり、ChatGPT APIを叩いてリファクタリング案をサイドバーに表示したりする。
3. 自動バリデーション: ファイル保存時に、独自のLintルール(社内規約など)に違反していないかチェックし、エラーなら保存をブロックする。
最後に
Sublime Textのプラグイン開発は、「IDEに支配されるのではなく、IDEを支配する」というエンジニアとしての強力な武器になります。
最初は小さな修正からで構いません。あなたが毎日繰り返している「退屈な手作業」を、Pythonで自動化してみませんか?一度その快感を知れば、もう既製品のエディタ設定には戻れなくなるはずです。
もし分からないことがあれば、いつでもまた聞きに来てください。あなたの開発環境を最高のものに仕上げるお手伝いをしますよ。