伝説のテキストエディタ「Sublime Text」を、最強のAI駆動開発環境へと進化させる
こんにちは。日々のコードベースを眺めながら「なぜこの単純な繰り返しを人間が手作業で書いているのか?」と自問自答したことはありませんか?
VS Codeの巨大なエコシステムも便利ですが、Sublime Textの「起動速度」と「驚異的なメモリ効率」は、一度慣れると他では代替できません。今回は、その軽快なSublime Textに、LSPや重厚なサードパーティプラグインに依存せず、たった数十行のPythonコードでGPT-4oを直接組み込む方法を伝授します。
これは単なる「設定」ではありません。エディタの深部にあるAPIを直接叩き、あなたの思考を即座にコードへ変換する「専用インターフェース」を構築する旅です。
—
なぜ「自作プラグイン」なのか?
既存のAIプラグインは便利ですが、往々にして「余計なUI」や「強制的なワークフロー」が付属してきます。自分のエディタは、自分の思考の速度で動くべきです。Python APIで自作すれば、以下のメリットが得られます。
1. 究極の軽量化: 余計なバックグラウンドプロセスは一切なし。必要な時にだけAPIを叩く。
2. 完全な制御: 選択範囲をどう変換するか、プロンプトをどう組み立てるかを100%自分で支配できる。
3. 学習の副産物: エディタの内部挙動を理解することで、ツールを使う側から「ツールを拡張する側」へ進化できる。
—
1. 準備:Sublime Textの「心臓部」に触れる
Sublime Textのプラグインディレクトリへ移動しましょう。メニューの `Preferences > Browse Packages…` を選択してください。そこに `User` というフォルダがあります。ここが、あなたのカスタマイズの聖域です。
この中に `GPTAssistant` というフォルダを作り、その中に `gpt_request.py` というファイルを作成します。
—
2. 実装:PythonによるOpenAI API統合
Sublime TextのPython APIは `sublime` と `sublime_plugin` モジュールで構成されています。これらを使って、選択範囲を取得し、APIを叩き、結果を挿入します。
import sublime
import sublime_plugin
import urllib.request
import json
OpenAI APIの設定(環境変数から読み込むのがベストプラクティスです)
API_KEY = “sk-…”
API_URL = “https://api.openai.com/v1/chat/completions”
class GptRequestCommand(sublime_plugin.TextCommand):
def run(self, edit):
# 現在選択されている範囲を取得
for region in self.view.sel():
if not region.empty():
selected_text = self.view.substr(region)
# スレッドで実行(UIを固めないための定石)
sublime.set_timeout_async(lambda: self.fetch_ai(edit, region, selected_text), 0)
def fetch_ai(self, edit, region, text):
payload = {
“model”: “gpt-4o”,
“messages”: [{“role”: “user”, “content”: f”以下のコードを改善・補完してください:\n{text}”}]
}
req = urllib.request.Request(API_URL, data=json.dumps(payload).encode(‘utf-8’))
req.add_header(“Authorization”, f”Bearer {API_KEY}”)
req.add_header(“Content-Type”, “application/json”)
with urllib.request.urlopen(req) as response:
data = json.loads(response.read().decode(‘utf-8’))
result = data[‘choices’][0][‘message’][‘content’]
# メインスレッドでエディタに書き戻す
sublime.set_timeout(lambda: self.view.replace(edit, region, result), 0)
—
3. ショートカットで呼び出す(最も重要な仕上げ)
スクリプトを書いただけでは意味がありません。これを「脳の一部」として機能させるために、キーバインドを設定します。
`Preferences > Key Bindings` を開き、以下の内容を追記してください。
[
// Ctrl+Shift+G を押すだけでAIが選択範囲を書き換える
{
“keys”: [“ctrl+shift+g”],
“command”: “gpt_request”
}
]
—
4. 精度を高めるための「現場の知見」
ただAPIを叩くだけでは、生成されるコードは「一般的」すぎて実戦で使えません。ここからがアーキテクトの腕の見せ所です。
- コンテキストの注入: プロンプトに `現在のファイルパス: {self.view.file_name()}` や、`言語: {self.view.settings().get(‘syntax’)}` を含めてください。これにより、GPT-4oが「何をすべきか」をより正確に理解します。
- 非同期処理の徹底: `sublime.set_timeout_async` を使わないと、APIの応答が返ってくるまでエディタがフリーズします。ユーザー体験を損なわないための絶対条件です。
- エラーハンドリング: ネットワークエラーやAPI制限(Rate Limit)が起きた際、`sublime.error_message(“AI Request Failed”)` を使うことで、サイレントクラッシュを防ぎましょう。
最後に:ここから先はあなたの物語
この仕組みを導入すると、コーディングの景色が変わります。メソッド名を選択して `Ctrl+Shift+G` を押せばドキュメントが生成され、複雑なロジックを選択すればリファクタリング案が降ってくる。
あなたは「コードを書く人」から「コードを指揮する人」へと変化するのです。
Sublime Textという最高の武器に、AIという知性を直接インストールしたあなたなら、どんな課題でも解決できるはずです。まずはこのコードを動かしてみてください。何か疑問があれば、いつでもまた聞きに来てくださいね。さあ、開発を楽しみましょう!