GitHub Copilotを置き換える:Ollama + Continue.dev

laptop_mac macOS Sonoma Intermediate schedule 8 min read
Author by Alex Rivera • May 14, 2024

Step 1 クラウド自動補完 vs ローカルAIのコスト

GitHub Copilotが有効な状態でVS Codeに入力するすべてのキーストロークは、MicrosoftのAzureホスト型OpenAIインフラストラクチャに送信されている。これは陰謀論ではなく、公式ドキュメントに記載されたプロダクトアーキテクチャである。あなたの独自アルゴリズム、内部ビジネスロジック、未公開の機能、アーキテクチャ上の意思決定——これらはすべてマシンの外へ出ている。個人プロジェクトに取り組む個人開発者にとって、このトレードオフは許容範囲内であることが多い。しかし、商業的に機密性の高いソフトウェアを開発するチームにとっては、セキュリティおよびコンプライアンス上の重大なリスクである。

そして、金銭的な側面も無視できない。

GitHub Copilotの実際の料金体系

プラン 月額コスト 年額コスト 10人チーム
Copilot Individual $10/月 $100/年 $1,000/年
Copilot Business $19/月/ユーザー $228/年/ユーザー $2,280/年
Copilot Enterprise $39/月/ユーザー $468/年/ユーザー $4,680/年

Businessティアで50名のエンジニアを抱える中規模組織の場合、年間$11,400という費用が発生する——それも、外部ベンダーに対して無期限に、基盤モデルの所有権も価格安定性の保証もないまま支払い続けることになる。Microsoftはすでにリリース以降にCopilotの料金を改定しており、その傾向が反転する構造的な理由は存在しない。

「ローカルAI」とは実際に何を意味するのか

Ollamaを通じてローカルモデルを実行することで、状況は根本的に変わる。計算コストは既存のハードウェアのみである。プライバシーモデルは絶対的——データはマシンの外へ一切出ない。レイテンシはクラウドベースの補完よりも低いことが多い。なぜなら、リモート推論サーバーへの往復ネットワークオーバーヘッドを排除できるからだ。

Terminal
Cloud Copilotのフロー:
Keypress → VS Code → HTTPS → Azure OpenAI → Inference → Response → VS Code

Local Ollamaのフロー:
Keypress → VS Code → localhost:11434 → Inference → Response → VS Code

localhostの推論パスは、障害モードのカテゴリを丸ごと排除する: APIのアウテージ、レート制限、企業プロキシの干渉、地理的なレイテンシのばらつき。これまで厳格な企業ファイアウォールの内側でCopilotを全く使用できなかった開発者が、ネットワーク境界に一切触れることなく、完全に機能するコードモデルを実行できるようになる。

クラウド依存の隠れたコスト

ライセンス費用を超えて、クラウド自動補完は過小評価されやすいオペレーショナルカップリングをもたらす:

  • ベンダーロックイン: チームのワークフローが、価格・可用性・利用規約を一方的にコントロールするサードパーティサービスに依存するようになる。
  • コンプライアンス上のオーバーヘッド: 多くの規制産業(医療・金融・防衛)では、コードを外部送信するツールに対して正式なデータ処理契約とセキュリティレビューが必要となる。これらの環境においてCopilotの承認プロセスは決して軽微ではない。
  • コンテキストウィンドウの漏洩: クラウドモデルは現在のファイルだけでなく、設定に応じて隣接ファイル・最近開いたタブ・リポジトリのメタデータといった周辺コンテキストバッファも受け取る。
  • 監査証跡の欠如: コードの提案が外部のブラックボックスから来ている場合、訴訟やライセンス紛争においてIPの来歴を特定することが複雑になる。

ローカルモデルが今日競争力を持つ領域

コンシューマーハードウェア上で動作するCode Llama 13BStarCoder2 7Bのような最新の量子化モデルは、最も一般的な自動補完シナリオ——ボイラープレート生成、関数シグネチャの補完、テストのスキャフォールディング、一般的なアルゴリズムの実装——においてCopilotと真に競争力のある補完品質を実現している。モデルが特定の言語やパターンで訓練されたコードを扱う場合、そのギャップはさらに縮まる。

計算は単純明快だ: ゼロの限界コスト、完全なデータ主権、外部依存なし——対して、増大するSaaS費用とクラウド推論プロバイダーにコードベースを共有するという暗黙の合意。長期的なツールチェーンの所有権を真剣に考えるチームにとって、ローカルファーストのアプローチは妥協ではなく、より防御性の高いアーキテクチャ上の選択である。

Step 2 前提条件: VS CodeとOllama

設定に入る前に、2つの基盤コンポーネントを確実に揃え、検証する必要がある。適切な前提条件の検証を省略することは、本来シンプルであるはずのローカルAIセットアップのデバッグに開発者が何時間も費やす最も一般的な原因である。これらを正しく行えば、以降の手順はすべて機械的に進む。


Visual Studio Code

VS Code 1.80以降が必要である。Continue.dev拡張機能はインラインゴーストテキスト補完のためにモダンなVS Code APIに依存しており、古いバージョンでは無言で失敗するか、品質が低下した動作をする。

コマンドラインでバージョンを確認する:

Terminal
code --version

期待される出力(実際のものはより新しい場合がある):

Terminal
1.89.1
e170252f762678dec6ca2cc69aba1864a9a1f8ad
x64

VSCodiumのようなフォーク版を使用している場合も、Continue.devは完全に互換性がある——ただし、VSCodiumはデフォルトでMicrosoftの独自拡張機能ホストなしで出荷されているため、Microsoft MarketplaceではなくOpen VSX Registryから拡張機能を取得することを確認すること。


Ollama

Ollamaは、モデルのダウンロードや量子化管理を担当し、localhost:11434上にOpenAI互換のREST APIを公開するローカルモデルランタイムである。この互換性レイヤーこそが、Continue.devがOllamaとこれほどクリーンに統合できる理由であり——カスタムプラグインアーキテクチャは一切不要だ。

プラットフォーム別インストール方法:

プラットフォーム コマンド / 方法
macOS brew install ollama または ollama.com からダウンロード
Linux curl -fsSL https://ollama.com/install.sh \| sh
Windows ollama.com/download からネイティブインストーラー

インストール後、Ollamaデーモンを起動する:

Terminal
ollama serve

macOSでは、インストール後にOllamaがメニューバーアプリケーションとして自動的に起動する。Linuxでは、systemdサービスとして登録することが推奨される:

Terminal
sudo systemctl enable ollama
sudo systemctl start ollama

APIが稼働していることを確認する:

Terminal
curl http://localhost:11434/api/tags

成功した場合、ローカルにインストールされたモデルの一覧を含むJSONオブジェクトが返される。この段階でリストが空であっても問題ない——モデルのダウンロードは後のステップで行う。

Terminal
{
  "models": []
}

ハードウェアの考慮事項

ほとんどのチュートリアルが曖昧にしている部分がここだ。あなたのハードウェアが、どのモデルがどの量子化レベルで実行可能かを直接決定する。

VRAM / ユニファイドメモリ 推奨ティア 予想レイテンシ
8 GB Q4_K_MでのSBモデル 許容範囲 (40–80 tok/s)
16 GB Q4_K_Mでの13Bモデル 良好 (30–60 tok/s)
24 GB+ Q4_K_Mでの34Bモデル 優秀 (20–40 tok/s)
CPUのみ Q4最大で3B〜7B 遅いが機能する

OllamaはMetal(Apple Silicon)、CUDA(NVIDIA)、ROCm(AMD)を通じてGPUへのレイヤーオフロードを自動的に処理する。手動設定は不要——Ollamaがハードウェアを検出し、透過的にレイヤーオフロードを最適化する。

Apple Siliconユーザーへの重要な注意: ユニファイドメモリはCPUとGPU間で共有される。16 GBのMacBook Pro M3は、独立したVRAMの上限がないため、13Bモデルを快適に実行できる。これはローカルAIワークフローにおけるApple Siliconの最も強力な根拠の一つである。


環境の確認

先に進む前に、この簡単なサニティチェックを実行すること:

Terminal
# VS Codeのバージョンを確認
code --version

# OllamaがRrunningで応答可能であることを確認
curl -s http://localhost:11434/api/tags | python3 -m json.tool

# GPUアクセラレーションを確認 (Ollamaのログ)
ollama run llama3.2:1b "say ok"

モデル推論中にOllamaのターミナル出力を監視すること。GPUを参照するレイヤーオフロードカウントが表示されるはずだ。すべてがCPUで実行されている場合は、より大きなコードモデルをプルする前にドライバーのインストールを再確認すること。

両方の前提条件が確認できたら、Continue.devをインストールしてすべてを連携させる準備が整った。

Step 3 ステップ1: Continue.dev拡張機能のインストール

Continue.devはこのセットアップ全体の要であり——GitHub Copilotのドロップイン代替として機能するオープンソースAIコードアシスタントだが、一つの重要なアーキテクチャ上の違いがある: リクエストをあなたが指示した場所にルーティングする、すなわちローカルで動作するOllamaインスタンスを含む。テレメトリなし。クラウドへの送信なし。サブスクリプションなし。

VS Code Marketplaceからのインストール

最もシンプルなインストール方法は、エディタ内のVS Code Extension Marketplaceを通じて直接行う:

  1. VS Codeを開く
  2. Ctrl+Shift+X(Windows/Linux)またはCmd+Shift+X(macOS)を押してExtensionsパネルを開く
  3. 「Continue」を検索する
  4. Continueが公開している拡張機能を見つける(アイコンはパープルグラデーションのロゴ)
  5. Installをクリックする

あるいは、VS Code CLIを使用してコマンドラインからインストールする:

Terminal
code --install-extension Continue.continue

VS Codium(テレメトリフリーのフォーク版)を使用している場合、拡張機能はOpen VSX Registryから利用できる:

Terminal
codium --install-extension Continue.continue

注意: Continue.devはJetBrains IDE(IntelliJ、PyCharm、GoLandなど)も別のプラグインでサポートしているが、このガイドはVS Codeの統合に限定して焦点を当てる。


インストールの確認

インストール後、VS Code環境に2つの即時的な変化が確認できるはずだ:

UI要素 場所 目的
Continueのサイドバーアイコン アクティビティバー(左パネル) チャットインターフェースを開く
インラインゴーストテキスト コードエディタ 自動補完の提案
キーボードショートカット Ctrl+L グローバル Continueチャットパネルにフォーカス
キーボードショートカット Tab エディタ 自動補完の提案を承認

アクティビティバーのContinueアイコンをクリックしてサイドパネルを開く。初回起動時、ContinueはプロバイダーへSの接続を促すオンボーディングフローを表示する。これはスキップまたは閉じて構わない——次のステップでconfig.jsonを直接編集してOllamaを接続する。GUIウィザードよりもはるかに細かいコントロールが得られるからだ。


拡張機能のアーキテクチャを理解する

先に進む前に、Continueが実際に何をインストールし、どのように通信するかを理解しておくことが重要だ:

Terminal
VS Code Extension (Continue.dev)
        │
        ▼
  config.json  ──────────────────────────────────────────────────┐
        │                                                          │
        ▼                                                          ▼
  Chat Provider (LLM)                               Autocomplete Provider (LLM)
  e.g., Ollama → llama3                             e.g., Ollama → starcoder2
        │                                                          │
        └────────────────────────┬─────────────────────────────────┘
                                 │
                                 ▼
                    http://localhost:11434  (Ollama REST API)

Continueはチャットオートコンプリートを、独立して設定可能な2つのプロバイダーに分離している。これは強力な区別だ——llama3deepseek-coderのような大規模な指示チューニングモデルを会話型クエリ用として実行しながら、starcoder2:3bのような軽量なフィルインザミドルモデルを低レイテンシのインライン補完用として使用できる。この水準のプロバイダー粒度を公開している主要なCopilot代替製品は他に存在しない。


config.jsonファイルの場所

Continueの動作全体は単一のJSONファイルによって制御される。その場所を把握しておくこと:

オペレーティングシステム パス
macOS ~/.continue/config.json
Linux ~/.continue/config.json
Windows %USERPROFILE%\.continue\config.json

Continueパネルの設定ギアアイコンからVS Code内で直接開くか、ターミナルで手動でナビゲートすることができる:

Terminal
# macOS / Linux
cat ~/.continue/config.json

# Windows (PowerShell)
Get-Content "$env:USERPROFILE\.continue\config.json"

拡張機能がインストールされ、設定ファイルの場所が確認できたら、ContinueをローカルのOllamaインスタンスに向ける準備が整った。

Step 4 ステップ2: OllamaのためのConfig.jsonの設定

Continue.devをインストールしたら、拡張機能の動作全体は単一のファイルconfig.jsonによって管理される。ここでContinueをローカルのOllamaインスタンスに接続し、チャットと自動補完のどちらをどのモデルが担当するかを定義し、パフォーマンスパラメータを調整する。このファイルを正しく設定することが、不安定で動作の遅いセットアップと、GitHub Copilotに匹敵する応答性を持つセットアップの差を生む。

config.jsonの場所

Continueは設定をホームディレクトリに保存する:

オペレーティングシステム パス
macOS / Linux ~/.continue/config.json
Windows %USERPROFILE%\.continue\config.json

Continueサイドバーのギアアイコンをクリックすることで、VS Codeから直接開くこともできる。クリックするとconfig.jsonがエディタで開かれる。


Ollamaの最小構成

以下は、チャットとタブ自動補完の両方においてContinueをローカルで動作するOllamaインスタンスに接続する、プロダクションレディなベースラインconfig.jsonである:

Terminal
{
  "models": [
    {
      "title": "CodeLlama 13B (Chat)",
      "provider": "ollama",
      "model": "codellama:13b",
      "apiBase": "http://localhost:11434"
    }
  ],
  "tabAutocompleteModel": {
    "title": "StarCoder2 3B (Autocomplete)",
    "provider": "ollama",
    "model": "starcoder2:3b",
    "apiBase": "http://localhost:11434"
  },
  "tabAutocompleteOptions": {
    "useCopyBuffer": false,
    "maxPromptTokens": 1024,
    "prefixPercentage": 0.85
  },
  "allowAnonymousTelemetry": false
}

なぜ2つの別々のモデルが必要なのか? チャットモデルは指示追従とマルチターンダイアログに最適化されている。自動補完モデル——特にFill-in-the-Middle(FIM)で訓練されたもの——は、プレフィックスサフィックスのコンテキストウィンドウが与えられた状態でコードを予測するために特別にチューニングされている。この2つを混同すると、どちらの体験も低下する。


各フィールドの詳細

models配列 — Continueチャットパネルで利用可能なモデルを定義する。複数のエントリを追加し、実行時に切り替えることができる。各オブジェクトに必要なもの: - provider: ローカル推論には"ollama"を設定 - model: ollama listに表示される正確なタグ - apiBase: Ollamaのデフォルトのエンドポイント。ポートを変更した場合のみ修正する

tabAutocompleteModel — インライン自動補完専用のエントリ。このモデルはキーストロークの停止のたびに起動するため、小さく、速いほど良い。FIMサポートを持つ3B〜7Bパラメータモデルが最適なポイントである。

tabAutocompleteOptions — 自動補完エンジンの詳細な制御:

オプション 目的
useCopyBuffer false クリップボードの内容が提案に漏れることを防ぐ
maxPromptTokens 1024 リクエストごとに送信されるコンテキストウィンドウを制限——レイテンシに直結する
prefixPercentage 0.85 トークン予算の85%をカーソル前のコードに割り当てる

allowAnonymousTelemetry — これをfalseに設定すること。ローカルAIを実行しているのは、まさにコードをサードパーティのサーバーから遠ざけるためだ。Continueの分析パイプラインにテレメトリを送信する理由はない。


接続の確認

config.jsonを保存した後、VS Codeコマンドパレット(Cmd+Shift+P / Ctrl+Shift+P)を開いて以下を実行し、ContinueからOllamaに到達できることを確認する:

Terminal
Continue: Open Debug Panel

グリーンのステータスインジケーターとモデルへの正常なpingが表示されるはずだ。connection refusedエラーが発生した場合は、以下でOllamaが動作していることを確認する:

Terminal
ollama serve
# またはステータスを確認する
curl http://localhost:11434/api/tags

プルしたモデルが一覧表示された有効なJSONレスポンスが返れば、APIが稼働しており、ContinueがSの補完を提供できることが確認される。

Step 5 ステップ3: Code LlamaまたはStarCoder2のダウンロード

Continue.devをインストールし、config.jsonを設定したら、次の重要な決断は実際にマシンにプルするモデルの選択だ。ローカルコード補完とチャットにおいて、2つのモデルが議論を支配している: Code Llama(Meta)とStarCoder2(BigCode/Hugging Face)。どちらもOllamaを通じて優れた動作をするが、意味のある異なる強みを持っている。それらを分析し、正確なプルコマンドを説明する。


モデル比較の概要

特徴 Code Llama StarCoder2
開発者 Meta AI BigCode (HuggingFace)
パラメータサイズ 7B、13B、34B、70B 3B、7B、15B
ライセンス Llama 2 Community BigCode OpenRAIL-M
強み 汎用コーディング + チャット、Python マルチ言語フィルインザミドル
コンテキストウィンドウ 16Kトークン 16Kトークン
最適なユースケース チャット + 補完のハイブリッド 純粋な自動補完 / FIM
VRAM(7Bバリアント) 約4〜5 GB 約4〜5 GB

推奨: 8 GBのVRAMまたはRAMに余裕がある場合は、バランスの取れた体験のためにcodellama:7b-codeから始めること。インライン自動補完の品質とマルチ言語サポートに純粋に焦点を当てている場合は、starcoder2:7bがフィルインザミドル(FIM)ベンチマークで上回ることが多い。


OllamaでCode Llamaをプルする

Ollamaはモデル管理を極めてシンプルにしている。ターミナルを開いて実行する:

Terminal
# 軽量な7B instructバリアント——最良の出発点
ollama pull codellama:7b-instruct

# 7Bコード特化バリアント——よりよい生の補完、チャットは少ない
ollama pull codellama:7b-code

# ハードウェアに余裕がある場合(13Bは明らかに鋭い)
ollama pull codellama:13b-instruct

instructバリアントは自然言語の指示を理解し、Continue.dev内のチャットパネルに最適だ。codeバリアントはスリムダウンされ、純粋に補完タスクにチューニングされている——「自動補完エンジン」バリアントだと考えると良い。

プル後、モデルが利用可能であることを確認する:

Terminal
ollama list

以下のような出力が確認できるはずだ:

Terminal
NAME                    ID              SIZE    MODIFIED
codellama:7b-instruct   8fdf8f752f6e    3.8 GB  2 minutes ago

OllamaでStarCoder2をプルする

StarCoder2はフィルインザミドル(FIM)タスクのために専用に構築されており——これはIDEの自動補完が依存するものそのものだ。The Stack v2データセットから600以上のプログラミング言語で訓練されており、例外的に幅広い対応範囲を誇る。

Terminal
# 3B——ほぼすべての最新マシン、CPU専用を含む、で動作する
ollama pull starcoder2:3b

# 7B——品質とリソース使用のスイートスポット
ollama pull starcoder2:7b

# 15B——約10 GB以上のVRAMが必要だが、Copilotに近い品質を提供
ollama pull starcoder2:15b

ターミナルからすぐにモデルをテストし、正しく応答していることを確認する:

Terminal
ollama run starcoder2:7b "Write a Python function to flatten a nested list."

一貫性のある、構文的に正しい出力が得られれば、モデルはContinue.devで使用する準備ができている。


ハードウェア制約に関する注意

より大きなパラメータ数に怯む必要はない。量子化モデル(Ollamaがデフォルトでプルするもの——通常Q4_K_M量子化)は理論的なサイズよりも劇的に小さい。Q4量子化の7Bモデルは以下の環境で快適に動作する:

  • Apple Silicon Mac(M1/M2/M3)、16 GB ユニファイドメモリ——MetalによるほぼネイティブなGPUアクセラレーション
  • Step 6 NVIDIA GPU、6〜8 GB VRAM(RTX 3060、4060など)