ローカルLLMでコーディング支援は出来るのか
GitHub Copilot, Cursor, Cline, Windsurfなどコーディング支援系AIサービスが多く登場しておりますが、セキュリティやコストの観点から業務への導入にはハードルを感じているプロジェクトもいまだ多くあるかと思われます。
ローカルLLMによるコーディング支援が可能になると、以下のメリットがあります。
- 外部に情報を送信せずにローカルマシンで完結できる
- インターネット接続不要
- サブスクリプション費用不要
- 必要に応じて、モデルの選択やカスタマイズができる
そこで、今回は最新モデルを使用したローカルLLMとVS Codeを連携し、どれだけ使えるかを実験してみます。
PCスペック
- OS: Windows 11 64ビット (24H2, OS ビルド 26100.3915)
- メモリ 16GB
- 専用GPUなし
Ollama(オラマ)のインストール
OllamaはローカルでLLMを利用するためのオープンソースアプリケーションです。
上記リンクからOllamaのインストールができます。
Qwen3モデルのダウンロード
↑利用可能なモデル一覧が確認できます。
今回はアリババが2025/4/29に公開した最新モデルのQwen3をダウンロードしてみます。
モデルのパラメータ数が選択できますが、今回は4bのモデルで実験してみます。
下記コマンドにより、モデルがダウンロードされ、ダウンロード完了次第モデルが実行可能な状態になります。
ollama run qwen3:4b
http://localhost:11434/をブラウザから開くことで、Ollamaが起動しているかを確認できます。
コマンドラインからQwen3と対話してみる
デフォルトで Thinking Mode(推論モード) になっているため、前置きが長く、出力に時間がかかります。
>>> こんにちは
<think>
Okay, the user said "こんにちは" which is Japanese for "Hello". I need to respond in a friendly and welcoming manner. Since they might be a non-native speaker, I should keep the response simple and
positive. Maybe start with a greeting in Japanese, then a welcome message in English. I should also offer assistance and ask how I can help them today. Keep it conversational and open-ended to encourage
further interaction.
</think>
こんにちは!😊
ようこそ、ここに来てくれて本当にうれしいです。
どんなことをお手伝いできますか?
何か質問があれば、いつでもお気軽におねがいください!
30秒程度で返答されました。プロンプトの後ろに/nothink
または/no_think
をつけることで、推論を行わないNon-Thinking Mode
で出力されます。
>>> こんにちは /nothink
<think>
</think>
こんにちは!どうぞよろしくお願いします。何かお手伝いできますか?
こちらは5秒程度で出力されました。
今回コード補完やチャットに使用する際は推論を行わないNon-Thinking Mode
で設定していきます。
VS Codeとの連携
- 拡張機能のContinueを入れる
https://www.continue.dev/ -
.continue\config.json
に以下を記述する
{
"models": [
{
"title": "qwen3:4b",
"provider": "ollama",
"model": "qwen3:4b",
"systemMessage": "/nothink",
"apiBase": "http://localhost:11434"
}
],
"tabAutocompleteModel": {
"title": "qwen3:4b",
"provider": "ollama",
"model": "qwen3:4b",
"systemMessage": "/nothink",
"apiBase": "http://localhost:11434"
}
}
上記でVS Code側の設定は完了です。
ゼロからゲームを作らせてみる
今回はじゃんけんゲームを作成してもらいました。
2分ほどで動作するコードを出力してくれました。
(実際にん手みたいな些細なミスあり)
既存のコードについて質問してみる
上記のじゃんけんゲームについて部分的に質問してみました。Continueではコードを範囲選択し、ctrl+L
でチャットにコードを追加できます。
1分半ほどで処理の説明を出してくれました。
既存のコードを修正してもらう
上記のじゃんけんゲームについて部分的に修正をしてみました。Continueではコードを範囲選択し、ctrl+I
でチャットにコードを追加し、編集を依頼できます。
要求に対して2分ほどでコードを修正してくれました。
ちゃんと動作もします
タブ補完をさせてみる
設定やPCスペックの問題かもしれませんが、コード補完の提案までにコーディングの手を1~2分止める必要があり、あまり実用的ではなさそうです。
使い物になるかどうか
ユースケース | 評価 | 使用感 |
---|---|---|
チャットによる対話 | 〇 | 問題なく使用できる、少し出力が遅い(軽い要求なら1~2分)、物量の多いコードは同時に読み込ませられない |
エディットモードによるコード修正 | 〇 | 問題なく使用できる、少し出力が遅い(軽い要求なら1~2分)、コード範囲が広いと時間がかかる(100行のコードの修正に10 分かかった) |
コードのタブ補完 | △ | 1~2分コーディングの手を止めないとコードの提案がされない、提案の精度も少し微妙 |
エージェントモード | (現状ローカルLLMでは使用できない) | - |
メモリを食うのがデメリット
4bのモデルだと、使用中はつねに3~4GBほどのメモリを占領するので、メモリに余裕がないPCだと動作が難しいです。
(追加実験)Qwen3:14bモデルでも同様の実験をしてみましたが。。
上記スペックのPCで動作するおそらく限界である14bのモデルでも実験してみました。
(噂では、14bのモデルでGPT-4oに匹敵する性能を持っているとのこと。)
14bのモデルは、メモリを10GB程度空けないと動作しませんでした。また、コードのエディットに30分程度要したり、PCのスペック不足のためかとても実用的な動作はしませんでした。
まとめ
GitHub CopilotやCursorで利用できる上位モデルを使用する場合と比較すると、まだまだ使い勝手が不十分なところもあります。
しかしながら、軽量な要求に限定すれば、ローカルLLMによるコーディングアシスタントは十分使い物になりました。
セキュリティやコストの観点から生成AIの利用が制限されるプロジェクトで、ローカルLLMを導入するのは大いに可能性を感じました。
さらにメモリやGPUを積んであるPCであれば、もっと大きいモデルをサクサク利用できるので、高スペックのPCや自前のサーバーで大きいLLMモデルをホストするのもありかもしれません。