Gemma 4 × Claude Code Router:Claude Code をローカルモデルで動かす(2026)
Claude Code は Anthropic がリリースしたターミナル型 AI コーディングツールで、コンテキスト理解とコード生成の質に定評があります。ただしデフォルトかつ唯一サポートされるバックエンドは Anthropic のクラウド API で、ソースコードは毎回アップロードされ、利用のたびに課金が発生します。
コードの機密性、オフライン環境、あるいは制限の厳しい社内ネットワークで働くエンジニアにとって、これは実用上の大きなハードルです。Claude Code Router(CCR) はコミュニティ発の OSS プロキシで、Claude Code の API リクエストを横取りし、指定したバックエンド(OpenAI、ローカル Ollama、その他互換 API)へ転送します。つまりローカルの Gemma 4 を Claude Code の「頭脳」として使えるわけです。
本記事ではセットアップ全体を丁寧に追いかけます。CCR のインストール、Gemma 4 バックエンドの設定、実運用例、そして必ず理解しておくべき利用制限とリスクまで。推奨記事ではなく、グレーゾーンの選択肢を正直に紹介するスタンスで書きます。
なぜ Claude Code をローカルモデルで動かしたいのか
具体的な手順の前に、需要の合理性を整理しておきます。以下はいずれも現実的なシナリオです。
規制業界のコードベース。 金融、防衛、医療、一部官公庁ではソースコードの外部送信が許されません。Anthropic 側の利用規約でこの要件は満たせず、ローカルモデルなら社内ネットワークの外に出ません。
不安定または遮断されたネットワーク。 リモートワークの劣悪な Wi-Fi、長時間フライト、野外研究、セキュアラボ。クラウド API は落ちますが、ローカルモデルは動き続けます。
カスタム / ファインチューニング済みモデル。 特定ドメイン(バイオインフォ、EDA、社内 DSL)に寄せた Gemma 4 を使いたい。Claude Code の UX はそのまま活かしつつ、重みだけ差し替えたい、という使い方です。
いずれも技術的に合理な動機であり、「Claude に課金したくない」とは別の話として扱います。
注意事項(実行前に必ず読んでください)
免責事項: 以下の手順は Claude Code の上流 API エンドポイントをサードパーティのローカルプロキシに書き換えます。Anthropic の利用規約の扱い次第では Claude Code の使用許諾に違反する可能性があり、アカウント停止のリスクも否定できません。本記事は技術ドキュメントであり法的助言ではありません。社内導入を検討する場合は、必ず法務・セキュリティチームのレビューを経てください。
加えて技術的なトレードオフも受け入れる必要があります。
- 機能のダウングレード。 extended thinking、prompt caching、一部の tool use フォーマットは Anthropic モデル前提で設計されています。Gemma 4 に差し替えた時点でこれらは動作劣化・挙動異常・サイレントフェイルの可能性があります。
- 出力品質の差。 Gemma 4 26B / 31B は優秀な OSS モデルですが、複雑なマルチファイル推論では Claude 3.5 / 4 に及びません。期待値は下げてください。
- コミュニティプロジェクトで SLA なし。 CCR はボランティア運営です。Anthropic 側のワイヤフォーマット変更で一夜にして壊れる可能性があり、サポート契約は存在しません。
これらを受け入れられる方のみ読み進めてください。
Claude Code Router の正体
CCR は Node.js で書かれた小さなローカル HTTP プロキシです。役割はシンプルです。
- ローカルポートで待機する。
- Anthropic Messages API 形式のリクエストを受け取る。
- OpenAI 互換フォーマット(Ollama / LiteLLM / OpenRouter など)に変換して転送する。
- 返ってきたストリーミングレスポンスを Claude Code 期待の形式に戻す。
肝はこのフォーマット変換です。メッセージロール、tool call ブロック、ストリーミングの delta、stop reason など両 API で微妙に異なる部分を吸収し、Claude Code から見ると Anthropic と話しているようにふるまいます。
事前準備
- Node.js 18+(CCR は Node プロジェクト)
- Ollama インストール済み・起動中(ollama.com)
- Gemma 4 26B または 31B を Ollama で pull 済み
- Claude Code(
npm install -g @anthropic-ai/claude-code) - ハードウェア:26B は 16 GB 以上、31B は 24 GB 以上のメモリ推奨。詳細は末尾の関連記事へ。
Step 1:Claude Code Router をインストールする
リポジトリを clone して依存関係をインストールします。
git clone https://github.com/<org>/claude-code-router.git
cd claude-code-router
npm installリポジトリ URL は fork ごとに異なります。CCR はコミュニティプロジェクトなので、GitHub で "claude code router" や "claude code proxy" を検索し、直近コミットのあるメンテナンスブランチを選んでください。
Step 2:CCR を Ollama に向ける
CCR ディレクトリに .env(fork によっては config.json)を作成します。
UPSTREAM_PROVIDER=ollama
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=gemma4:26b-a4b
PORT=8082プロキシを起動します。
npm start次のようなログが出れば成功です。
Claude Code Router started on port 8082
Upstream: ollama (gemma4:26b-a4b)
Ready to accept connectionsHTTP エンドポイントを軽く疎通確認します。
curl http://localhost:8082/v1/modelsGemma 4 モデルを含む JSON が返るはずです。
Step 3:Claude Code を CCR に向ける
Claude Code は ANTHROPIC_BASE_URL で API エンドポイントを決めます。ローカルプロキシを指定します。
export ANTHROPIC_BASE_URL="http://localhost:8082"
export ANTHROPIC_API_KEY="local" # 非空ならどんな値でも可
claudeClaude Code はいつも通り起動し、すべてのリクエストが CCR 経由で Gemma 4 に流れます。
毎回環境変数をいじりたくなければ ~/.zshrc / ~/.bashrc に書くか、alias で切り替えるのが実用的です。
alias claude-local='ANTHROPIC_BASE_URL=http://localhost:8082 ANTHROPIC_API_KEY=local claude'こうすると claude は公式 API、claude-local はローカル Gemma 4、と用途を分けられます。
Step 4:実運用してみる
コード解説:
> src/auth/middleware.ts が何をしているか説明してGemma 4 がファイルを読み、要約してくれます。単一ファイルなら十分、複数モジュールをまたぐ深い推論は苦手です。
新規エンドポイント生成:
> src/api/health.ts を作成。GET /api/health でステータスとバージョンを返すハンドラを実装してCRUD や HTTP スキャフォールドの類はよく書けます。
バグ修正:
> npm test で "Cannot read properties of undefined" が出る。src/utils/parser.ts を見てほしい明確なスタックトレースがあれば Gemma 4 はたいてい原因を特定します。エラー信号の薄い潜在バグは目に見えて難しくなります。
実際の体験比較
| 観点 | Claude Code(公式) | CCR + Gemma 4 26B | CCR + Gemma 4 31B |
|---|---|---|---|
| コード生成品質 | 非常に高い | 中程度(GPT-3.5 級) | 良好(GPT-4 近似) |
| マルチファイル推論 | 非常に高い | 弱い | 中程度 |
| Tool use 互換性 | 完全 | 一部異常 | 一部異常 |
| Extended thinking | 対応 | 非対応 | 非対応 |
| レスポンス速度 | 高速(クラウド) | 20–40 t/s | 15–30 t/s |
| プライバシー | コードが外部に出る | 完全ローカル | 完全ローカル |
| オフライン | 不可 | 可 | 可 |
| 月額 | 従量課金 | 0 円 | 0 円 |
向く用途:単一ファイルのコード生成、コード解説、小規模バグ修正、オフライン/隔離環境での暫定利用。
向かない用途:大規模リファクタ、長文脈のマルチファイル編集、extended thinking 前提の深い推論。
他のローカル AI コーディング構成との比較
| 選択肢 | ネイティブローカル対応 | プロキシ必要 | Git 連携 | マルチファイル編集 | 成熟度 |
|---|---|---|---|---|---|
| Aider + Gemma 4 | ネイティブ | 不要 | 自動コミット | 強い | 高(30K+ stars) |
| Codex CLI + Gemma 4 | 設定必要 | 不要 | なし | 単一ファイル中心 | 中 |
| CCR + Claude Code + Gemma 4 | 非対応 | CCR 必要 | なし | 強い(Claude Code 継承) | 低(実験的) |
| Cursor + Ollama | プラグイン必要 | 不要 | なし | 強い | 中 |
率直な所感: 「ローカルモデル + ターミナル編集」が目的なら、Aider の方が成熟した選択肢です。CCR が正解になるのは、すでに Claude Code のワークフローに深く投資していて、かつ明確なプライバシー/オフライン要件がある場合に限られます。
トラブルシューティング
"Port already in use" — .env の PORT を変えるか、8082 を掴んでいるプロセスを落とします。
lsof -i :8082
kill -9 <PID>Claude Code が "Authentication failed" — ANTHROPIC_API_KEY が空でないこと、ANTHROPIC_BASE_URL が CCR のポートを指していることを確認してください。
出力が文字化け/途切れる — CCR のフォーマット変換は完全ではありません。git pull && npm install で最新化、31B に切り替え(フォーマット追従がマシ)、プロンプトを簡素化、を順に試してください。
レスポンスが遅い — ollama ps で Ollama が GPU 稼働か確認。メモリがつらい場合は GGUF 量子化の検討を。
FAQ
Q:CCR を使うと Anthropic にアカウント停止されますか? A:リスクはゼロではありません。Claude Code の API エンドポイント書き換えは利用規約違反の可能性があります。法的助言はできません。商用導入では必ず法務に相談してください。
Q:Gemma 4 は Claude を完全に置き換えられますか? A:できません。Claude Code は Anthropic モデル特有の能力(extended thinking、特定の tool use フォーマット、深い文脈処理)を前提に設計されています。Gemma 4 はその機能サブセットとして使うのが現実的です。
Q:Windows でも動きますか? A:動きます。Node.js と Ollama はクロスプラットフォームで、インストール手順も同じです。
Q:GPT-4 など他のクラウドモデルにも向けられますか? A:CCR は OpenAI を含む複数の上流に対応しますが、そうすると「ローカルプライバシー」という本来の価値が失われ、上流側の課金も発生します。
Q:なぜ Aider や Codex CLI を直接使わないのでしょうか? A:多くの場合それが正解です。Aider の repo map と自動 git commit はローカルモデル運用と相性が良い。Claude Code の UX がどうしても必要なケースに限り CCR を検討してください。詳細は Aider + Gemma 4 ガイド。
Q:Gemma 4 E2B / E4B は使えますか? A:技術的には可能ですが実用は困難です。4B / 8B は agentic なコーディング負荷に耐えられません。最低 26B 推奨です。
Q:チームの本番運用に使えますか? A:おすすめしません。ToS リスクに加え、CCR は個人メンテのプロキシです。共有経路に乗せるのは避け、個人調査や限定的なパイロットに留めるのが安全です。
関連記事
Stop reading. Start building.
~/gemma4 $ Get hands-on with the models discussed in this guide. No deployment, no friction, 100% free playground.
Launch Playground />


