Sublime Textを「自分専用の静的解析エンジン」へと進化させる:Linter自作への道
エンジニアの皆さん、こんにちは。多くの開発者がVS Codeの重厚なAI機能に流れる中、なぜ我々が未だにSublime Textを愛してやまないのか。それは、このエディタが単なる「テキスト編集ツール」ではなく、「開発者の脳内のロジックを直接OSに接続するインターフェース」だからです。
既存のLinterプラグインは便利ですが、組織固有のコーディング規約や、「特定のライブラリのこの関数は、この引数構成で呼ぶべき」といったドメイン特有の制約までは守ってくれません。
今回は、Sublime Textの「Build System」という強力なパイプラインを使い、外部の静的解析スクリプトをシームレスにエディタへ統合する方法を伝授します。これをマスターすれば、あなたのコードは保存するたびに「自分専用の教官」によって自動添削されるようになります。
—
1. なぜ「Build System」で解析を行うのか
Sublime TextのBuild Systemは、本来コンパイルやテストを実行するための機能です。しかし、これを「静的解析のトリガー」として利用することで、以下のメリットが生まれます。
- 極限の軽量性: 巨大なLanguage Serverを立ち上げる必要はありません。必要な時に、必要なスクリプトだけを呼び出します。
- 言語非依存: Python、Node.js、あるいは単なるBashスクリプトでも、標準出力(stdout)で結果を返せば、すべてSublime Textの出力パネルに集約できます。
- 即時フィードバック: ショートカット(`Ctrl+B` / `Cmd+B`)一発で、解析結果がエディタの下部に美しく整形されて表示されます。
—
2. 実践:独自の「規約違反チェッカー」を作る
まずは、簡単な「TODOコメントをチェックする」というルールを想定しましょう。特定のキーワードが含まれていたら警告を出す、というシンプルな解析スクリプトを構築します。
ステップ1:解析用スクリプトの作成
まず、プロジェクトルートに `lint_check.py` を作成します。これがあなたの「専用教官」です。
lint_check.py
import sys
import re
def check_code(file_path):
with open(file_path, ‘r’, encoding=’utf-8′) as f:
content = f.read()
# TODOコメントを見つけて行番号と共に抽出する正規表現
matches = re.finditer(r’TODO:(.)’, content)
for m in matches:
# 行番号を簡易計算(実際はもっと高度なスキャンが可能)
line_no = content.count(‘\n’, 0, m.start()) + 1
print(f”{file_path}:{line_no}: warning: TODOが見つかりました -> {m.group(1).strip()}”)
if __name__ == “__main__”:
# 引数で渡されたファイルパスをチェック
if len(sys.argv) > 1:
check_code(sys.argv[1])
ステップ2:Sublime Textへ統合(Build Systemの設定)
次に、Sublime Textにこのスクリプトを実行する命令を与えます。
`Tools` > `Build System` > `New Build System…` を開き、以下のJSONを保存してください。ファイル名は `CustomLinter.sublime-build` とします。
{
// 実行するコマンドの定義
“shell_cmd”: “python3 lint_check.py \”$file\””,
// エラー行をSublimeが認識するための正規表現
“file_regex”: “^(..[^:]):([0-9]+): (.)$”,
// 実行ディレクトリをファイルと同じ場所に設定
“working_dir”: “$file_path”,
// 出力結果をキャプチャしてコンソールに表示
“selector”: “source.python”
}
—
3. 精度高い「HelloWorld」:動作確認の瞬間
設定が終わったら、適当なPythonファイルを開き、中に `TODO: ここでバグを直す` と書いて保存してください。
そして、キーボードで `Ctrl+B` (Windows) / `Cmd+B` (Mac) を叩きます。
すると、下部の出力パネルに以下のように表示されるはずです。
/path/to/your/project/main.py:12: warning: TODOが見つかりました -> ここでバグを直す
[Finished in 0.1s]
ここが魔法のポイントです。
出力されたエラー行を ダブルクリック してみてください。Sublime Textが自動的に該当ファイルを開き、該当行へカーソルをジャンプさせます。これが「Build System」をLinterとして使う最大の恩恵です。
—
4. 開発効率を劇的に変えるためのアドバイス
この仕組みを構築したことで、あなたは「解析ルールをコード化できる」という武器を手に入れました。
- チーム開発への応用: `lint_check.py` をリポジトリに含め、チーム全員にこのBuild Systemを配布すれば、環境を問わず全員が同じ規約でチェックを行えます。
- AIとの連携: 外部のLLM API(OpenAI APIなど)を `lint_check.py` 内で呼び出せば、「保存するたびに、AIがコードレビューしてアドバイスをくれる」という最強の環境が数行のコードで実現します。
Sublime Textの美しさは、「あなた自身がツールを支配している」と実感できる点にあります。複雑な設定メニューに迷い込む前に、まずはこの「Build System」をいじり倒してみてください。
これをマスターすれば、毎日のコーディングが単なる作業から、自分だけの究極の開発環境を作り上げる「創造的な冒険」へと変わりますよ。次に何を作るか、ぜひ教えてくださいね。応援しています!