LLMがエディタ上でリアルタイムにコードの続きを予測・提案する機能。Fill-in-the-Middle学習により、カーソル位置の前後文脈から最適なコード断片を生成する。
LLMコード補完は、開発者がコードを書いている最中にLLMがリアルタイムで次に書くべきコードを予測し、ゴーストテキスト(薄い灰色の文字)として表示する機能です。従来のIDE補完(IntelliSense等)がAPIリファレンスから候補を列挙するのに対し、LLM補完はコードの文脈・パターン・意図を理解して複数行にわたる実装を提案します。
| 比較項目 | 従来のIDE補完 | LLMコード補完 |
|---|---|---|
| 補完単位 | メソッド名・プロパティ名 | 数行〜数十行のコードブロック |
| 文脈理解 | 型情報・スコープ内変数 | プロジェクト全体の意図・パターン |
| 対応範囲 | 言語の静的解析可能な部分 | コメント・文字列・設定ファイルも含む |
| 精度根拠 | 型システム(確定的) | 確率的予測(幻覚の可能性あり) |
| レイテンシ | 即座(ローカル解析) | 100〜500ms(API呼び出し) |
コード補完で最も重要な学習手法がFIMです。通常のLLMはテキストを左から右に生成しますが、FIMでは「前のコード(Prefix)」と「後のコード(Suffix)」を与えて「中間(Middle)」を予測するよう学習します。
これにより、既存コードの途中にカーソルを置いた状態での補完が可能になります。関数の途中に新しいロジックを挿入するケースや、既存のif文にelse節を追加するケースで威力を発揮します。
コード補完はタイピングに追従する必要があるため、レイテンシが最重要の品質指標です。
| レイテンシ | 体験 |
|---|---|
| 50ms以下 | タイピングと同時に表示。思考の邪魔にならない |
| 100〜200ms | わずかに遅延を感じるが実用的 |
| 300〜500ms | 入力してから表示まで待つ感覚がある |
| 500ms以上 | ストレスを感じる。キーストローク中に前の候補が残る |
補完精度を左右するのはモデルに渡すコンテキストの質です。
| 指標 | 業界平均 | 優良ライン |
|---|---|---|
| 受け入れ率(Acceptance Rate) | 25〜30% | 35%以上 |
| 持続率(Persistence Rate) | 60〜70% | 75%以上 |
| 文字節約率(Characters Saved) | 30〜40% | 50%以上 |
「持続率」は受け入れた補完が30秒後も編集されずに残っている割合で、補完品質の実質的な指標です。
1〜10行の定型パターン(ループ・条件分岐・API呼び出し)はインライン補完が効率的です。新しいファイルの作成や複雑なロジック実装はチャットで指示する方が精度が高くなります。
7B〜15Bパラメータのモデル(Qwen2.5-Coder-14B等)をGPU搭載マシンでローカル推論すれば、プライバシーを保ちつつ実用的な補完が可能です。レイテンシは100〜300msでクラウドAPIと同等です。
あります。LLMの補完は確率的予測であり、存在しないメソッド呼び出しや型不一致のコードを生成することがあります。TypeScriptの型チェックやリンターとの併用が推奨されます。