OllamaとContinue.devでVS Codeにローカルコード補完AIを導入する方法|インターネット不要でコーディング支援を社内環境に組み込む

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)ローカルLLM > OllamaとContinue.devでVS Codeにローカルコード補完AIを導入する方法|インターネット不要でコーディング支援を社内環境に組み込む
「GitHub CopilotはSaaSだから社内セキュリティポリシーでNG。でも、コーディング支援AIはどうしても使いたい。」
「VS Codeで補完AIを動かしたいが、コードがクラウドに送信されるリスクが怖くて踏み切れない。」
そんな悩みを抱えるエンジニアや情報システム担当者は多い。この記事では、OSSのVS Codeコーディング支援拡張「Continue.dev」とOllamaを組み合わせて、Ubuntu Server上でローカルLLMによるコード補完・チャット型コードレビューを動かす手順を解説する。コードは一切インターネットに出ない。閉域ネットワーク環境でも動作する構成だ。Continue.devのインストール・OllamaへのAPI接続設定・モデル選定・チャット活用まで一通りカバーする。

この記事のポイント

・Continue.devはconfig.jsonのprovider: "ollama"とapiBaseを設定するだけでローカルLLMに接続できる
・チャット用にLlama3.3、Tab補完用にPhi-4と役割でモデルを分けることで応答速度と品質を両立できる
・コードはすべてローカル推論で処理されるため、社内規定でSaaSのCopilotが使えない環境でも導入できる
・VS Code拡張の初回インストールだけはオンライン環境またはVSIXファイルで事前に済ませておく


OllamaとContinue.devでVS Codeにローカルコード補完AIを導入する方法|インターネット不要でコーディング支援を社内環境に組み込む

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

Continue.devとOllamaを組み合わせるとできること

Continue.devは、GitHub CopilotのようなVS Code向けAIコーディング支援機能をOSSで実現する拡張機能だ。Tab補完(インライン補完)とチャットパネルによるコードレビュー・質問応答の2軸で構成されており、バックエンドのLLMを自由に差し替えられる。

GitHub CopilotがMicrosoftのクラウドにコードを送信するのに対し、Continue.dev+Ollamaの組み合わせはすべての推論をローカルサーバー上で完結させる。コードが自社ネットワークの外に出ることはない。

具体的にできることは次のとおりだ。
・関数の途中でTabを押すと後続コードを自動補完する
・チャット欄に「このコードの問題点を教えて」と入力してコードレビューを依頼できる
・バグの説明、テストコード生成、コメント追記といった定型作業を日本語プロンプトで依頼できる

社内でのCopilot利用制限に悩んでいる現場、情報漏洩リスクを徹底的に排除したい金融・医療・製造業の開発環境でとくに効果的な構成だ。ライセンスコストもかからず、OSSのため継続的に無償で使い続けられる。

前提環境とモデルを準備する

1. 稼働中のOllamaを確認する

この手順を始める前に、Ubuntu Server上でOllamaが動作していることを確認する。Ollamaの導入手順は「Ubuntu ServerでローカルLLMを構築する方法」で詳しく解説している。

# Ollamaサービスが稼働中かどうかを確認する $ systemctl is-active ollama active # Ollama APIが応答するかcurlで確認する $ curl http://localhost:11434/api/tags {"models":[{"name":"llama3.3:70b-instruct-q4_0",...}]}

VS CodeとOllamaが別マシンの場合は、OllamaがデフォルトでLISTENする127.0.0.1を外部IPに変更する必要がある。systemdのオーバーライドファイルで環境変数を設定する。

# オーバーライドファイルを作成する $ sudo mkdir -p /etc/systemd/system/ollama.service.d/ $ sudo tee /etc/systemd/system/ollama.service.d/override.conf << 'EOF' [Service] Environment="OLLAMA_HOST=0.0.0.0:11434" EOF # 設定を反映してサービスを再起動する $ sudo systemctl daemon-reload $ sudo systemctl restart ollama # 外部IPでLISTENしているか確認する $ ss -tlnp | grep 11434 LISTEN 0 128 0.0.0.0:11434 0.0.0.0:*

設定変更後にファイアウォールで11434番ポートが閉じている場合は別途開放が必要だ。社内ネットワークのセグメントだけに限定して開放するのが安全だ。

2. コーディング支援に使うモデルをpullする

この記事ではチャット用にLlama3.3(70B量子化)、Tab補完用にPhi-4(14B量子化)を使う。補完は軽量モデルで十分なため、用途別に使い分けることで応答速度を確保する。

モデルの選定基準は「チャットは精度重視・補完は速度重視」が基本だ。

# チャット用モデルをダウンロードする(約40GB・GPU 24GB以上推奨) $ ollama pull llama3.3:70b-instruct-q4_0 # Tab補完用モデルをダウンロードする(約15GB・GPU 8GB以上推奨) $ ollama pull phi4:14b-q8_0 # ダウンロード済みモデルを確認する $ ollama list NAME SIZE MODIFIED llama3.3:70b-instruct-q4_0 40 GB 2 hours ago phi4:14b-q8_0 15 GB 2 hours ago

GPUメモリが16GB未満の環境では、チャット用モデルをMistral(mistral:7b-instruct-q8_0)に替えると動作が軽くなる。モデルごとの性能・メモリ消費の目安については「ローカルLLMのモデルを比較する方法」が参考になる。

Continue.devをVS Codeにインストールする

1. オンライン環境でVS Code拡張をインストールする

VS Codeの拡張機能パネル(Ctrl+Shift+X)で「Continue」を検索する。「Continue – Codestral, Claude, and more」が表示されたらインストールボタンを押す。インストール後、VS Codeの左サイドバーにContinueのアイコンが追加される。

コマンドラインからインストールする場合は以下のように実行する。

# コマンドラインからContinue.devをインストールする $ code --install-extension Continue.continue # インストール済み拡張を確認する $ code --list-extensions | grep -i continue Continue.continue

インストール後にVS Codeを再起動すると、左サイドバーにContinueのアイコンが表示される。

2. 閉域(オフライン)環境でインストールする

インターネット接続のない環境では、別途オンライン環境でVSIXファイルをダウンロードして持ち込む方法を使う。Continue.devの公式GitHubリリースページからVSIXファイルを入手し、scpやUSBストレージ経由でオフライン端末に転送する。

転送後に以下のコマンドでインストールする。

# 転送したVSIXファイルからオフラインインストールする $ code --install-extension continue-X.X.X.vsix # インストール完了後に拡張の有効化を確認する $ code --list-extensions | grep -i continue Continue.continue

なお、Continue.devが機能するためにはOllamaへのネットワーク疎通さえあれば動作する。インターネットに出る必要があるのは拡張の初回インストール時だけだ。

config.jsonでOllamaに接続する設定手順

1. config.jsonの場所を開く

Continue.devの接続先設定はホームディレクトリ配下のJSONファイルで管理する。VS Code内からコマンドパレット(Ctrl+Shift+P)で「Continue: Open config.json」を実行すると直接開ける。

ファイルが見当たらない場合はContinue.devを一度起動することで自動生成される。

# Linuxの場合のconfig.jsonパス $ ls -la ~/.continue/config.json -rw-r--r-- 1 user user 512 Jul 02 10:00 /home/user/.continue/config.json # ファイルの中身を確認する $ cat ~/.continue/config.json

2. モデルとOllamaエンドポイントを設定する

config.jsonを以下の形式で記述する。apiBaseにはOllamaが稼働するサーバーのIPアドレスを指定する。VS CodeとOllamaが同一マシンなら http://localhost:11434 でよい。別マシンの場合はサーバーのIPアドレスに替える。

{ "models": [ { "title": "Llama3.3(チャット用)", "provider": "ollama", "model": "llama3.3:70b-instruct-q4_0", "apiBase": "http://192.168.1.100:11434" } ], "tabAutocompleteModel": { "title": "Phi-4(Tab補完用)", "provider": "ollama", "model": "phi4:14b-q8_0", "apiBase": "http://192.168.1.100:11434" } }

ファイルを保存するとContinue.devが自動で再読み込みし、新しい設定が即座に反映される。エラーダイアログが出なければ接続成功だ。

3. チャット用モデルとTab補完用モデルを分ける理由

チャットと補完に同じ大型モデルを割り当てると、Tab補完のたびに70BクラスのモデルがフルにVRAMを消費する。1回の補完で数十秒かかる状態になり実用に耐えない。

チャットは長い文脈を理解する能力が重要なのでLlama3.3(70B)を使い、Tab補完は直後の数トークン予測で十分なのでPhi-4(14B)のような軽量モデルを充てる。この役割分担で補完レスポンスが1~3秒程度に収まる。

モデルの使い分けの考え方は「Llama3.3とPhi-4の性能・メモリ消費を比較する」でも詳しく解説している。

Tab補完(インライン補完)を動かす

1. 補完をトリガーして動作を確認する

設定完了後、Pythonファイルなど任意のソースコードを開いてコードを途中まで書く。タイプを止めると0.5秒後にグレーのゴーストテキストで補完候補が表示される。Tabキーで候補を確定し、Escキーでキャンセルする。

Ollamaサーバー側でリクエストが届いているかをログで確認すると、接続が正常か確かめられる。

# Ollamaサーバー側でTab補完リクエストのログを確認する $ journalctl -u ollama -f --no-pager # 正常時のログ出力例 Jul 02 10:23:01 server ollama[1234]: llm request model=phi4:14b-q8_0 prompt_tokens=256 Jul 02 10:23:02 server ollama[1234]: llm response model=phi4:14b-q8_0 tokens=32 duration=1.4s

補完候補が表示されない場合はVS Codeのステータスバーにある「Continue」インジケーターを確認する。「Autocomplete Enabled」の表示がなければ、ContinueのサイドバーパネルからAutocompleteをONにする。

2. 補完速度を調整するオプション設定

補完リクエストが頻繁に発火するとOllamaサーバーの負荷が上がる。以下のtabAutocompleteOptionsで発火タイミングと投入トークン数を絞れる。

{ "tabAutocompleteModel": { "title": "Phi-4(Tab補完用)", "provider": "ollama", "model": "phi4:14b-q8_0", "apiBase": "http://192.168.1.100:11434" }, "tabAutocompleteOptions": { "maxPromptTokens": 1024, "debounceDelay": 600 } }

debounceDelay(ミリ秒)はタイプ停止後に補完を発火するまでの待機時間だ。600~800を目安にするとタイプ中の無駄なリクエストが減り、サーバー負荷が下がる。maxPromptTokensを下げると推論が速くなる反面、直前コンテキストを参照できる範囲が狭くなる。環境に合わせて調整する。

チャット機能でコードレビュー・説明を活用する

1. チャットパネルの基本操作

サイドバーのContinueアイコンをクリックするかCtrl+L(MacはCmd+L)でチャットパネルを開く。入力欄に日本語でプロンプトを書いてEnterを押すとLlama3.3が応答を返す。

チャットで使える主な用途は次のとおりだ。
・「この関数のバグを探して修正案を提案して」
・「このシェルスクリプトにコメントを追加して」
・「エラーメッセージの原因と対処法を教えて」
・「このPythonコードをbash関数に書き換えて」

コードが外部に送信されないため、機密性の高い社内ロジックや設定スクリプトも安心してチャットに貼り付けられる。情シス・セキュリティ部門から承認を得やすい点が実務上の大きなメリットだ。

2. 選択コードをチャットに引用してレビューを依頼する

VS Code上でレビューしたいコードを範囲選択してCtrl+Shift+Lを押すと、選択範囲が自動引用された状態でチャット入力欄が開く。そのままレビュー依頼を追記して送信する。

社内ツールのシェルスクリプトやCRON設定など、クラウドに送れないコードのレビューを手軽に行える。現場のエンジニアに話を聞くと「コードレビューを依頼する相手がいないとき、ローカルLLMに投げると意外と使えるフィードバックが返ってくる」という声が多い。

社内でのAI利用ガイドラインの整備状況によって導入判断が変わる現場も多い。その背景については「社内でChatGPTが使えないときの代替手段」が参考になる。

接続できない・動かないときのトラブル対処

「Connection refused」または「timeout」が出るとき

最も多い原因はOllamaのLISTENアドレスだ。デフォルトの127.0.0.1は同一マシン以外からアクセスできない。別マシンからVS Codeで接続する場合は前述のOLLAMA_HOST=0.0.0.0:11434の設定を見直す。

ファイアウォールで11434番ポートが閉じている場合も同様のエラーが出る。以下で確認・開放する。

# UFWで社内セグメントからのみ11434ポートを許可する $ sudo ufw allow from 192.168.1.0/24 to any port 11434 # ポートのLISTEN状態を確認する $ ss -tlnp | grep 11434 LISTEN 0 128 0.0.0.0:11434 0.0.0.0:* # curlでconfig.jsonのapiBaseに指定したURLを直接叩いて疎通確認する $ curl http://192.168.1.100:11434/api/tags {"models":[...]}

「model not found」が出るとき

config.jsonのモデル名はOllamaにpull済みのモデル名と完全一致が必要だ。大文字・小文字・量子化サフィックスを含めて正確に記述する。ollama listで名前を確認してからconfig.jsonに貼り付けると確実だ。

量子化サフィックスはphi4:14b-q8_0のように-q8_0形式で付けること。:q8_0単独の記述はOllamaでは無効なので注意が必要だ。 Tab補完の応答が極端に遅い場合

tabAutocompleteModelに70Bクラスの大型モデルを設定していると補完のたびに数十秒かかる。tabAutocompleteModelには必ず7B~14Bクラスの軽量モデルを指定すること。

Phi-4(14B)でもGPUメモリ8GB以上のサーバーがあれば1~3秒程度に収まる。CPU推論のみの環境では30秒以上かかる場合があり、Tab補完の実用はGPU環境を前提とした方がよい。

本記事のまとめ

Continue.devとOllamaを組み合わせることで、VS Codeのコーディング支援AIを完全社内クローズで運用できる環境が手に入る。設定の核心はconfig.json1枚の編集のみで、ハードルは低い。チャット用に大型モデル・補完用に軽量モデルを分ける設計が実用性のカギになる。

手順 コマンド/設定 ポイント
チャット用モデル取得 ollama pull llama3.3:70b-instruct-q4_0 大型・高品質・GPU 24GB以上推奨
補完用モデル取得 ollama pull phi4:14b-q8_0 軽量・高速・GPU 8GB以上推奨
外部接続許可 OLLAMA_HOST=0.0.0.0:11434 VS Codeと別マシンの場合のみ必要
接続設定ファイル ~/.continue/config.json provider: "ollama" と apiBase を設定
Tab補完確定 Tabキー(キャンセルはEscキー) 候補表示後に押す
チャット起動 Ctrl+L 選択コードは Ctrl+Shift+L で引用
補完速度調整 tabAutocompleteOptions.debounceDelay 600~800ms推奨でサーバー負荷を抑える

ローカルLLMによるコーディング支援を2日間のハンズオンで体験する

Continue.devとOllamaの組み合わせは、手を動かして補完やレビューを試すことで実感がつかめる構成だ。実機GPU環境で手を動かしながら習得したい方向けに、「ローカルAIマスターセミナー」を開催しています。
少人数(最大8名)ZOOMハンズオン形式で実施しています。

>> ローカルAIマスターセミナーの詳細を確認する
ローカルLLMの構築・運用に関する関連記事もあわせて参考にしてください。

Ubuntu ServerでローカルLLMを構築する方法|Ollamaで機密データを外に出さず業務AIを動かす完全ガイド
社内でChatGPTが使えないときの代替手段|機密データを守るローカルLLMという選択肢
ローカルLLMのモデルを比較する方法|Llama3.3・Mistral・Gemma・Phi-4をUbuntuで使い分けるポイント

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。