TL;DR
- Claude Code の
--modelオプションで OpenRouter 経由の無料モデルに切り替えられる -
google/gemini-2.5-flash-preview,meta-llama/llama-4-maverick,deepseek/deepseek-r1,qwen/qwen3-235b-a22b,mistralai/mistral-small-3.2-24bの 5 モデルを比較検証 - コード補完・リファクタ・テスト生成それぞれで得意不得意が明確に異なる
- コスト 0 円運用の現実解: タスク種別でモデルを使い分けるのが最善
背景
Claude Code は強力な AI コーディング支援ツールですが、Claude 3.7 Sonnet や Opus を毎日フル活用するとコストが数千〜数万円規模に跳ね上がります。
OpenRouter には :free サフィックス付きの無料エンドポイントが複数存在し、Claude Code の ANTHROPIC_BASE_URL / --model を切り替えることで、これらを利用できます。本記事では 2026 年 5 月時点の無料モデル 5 選を「コーディング支援」の観点で比較します。
注意: OpenRouter の無料枠はレートリミット・コンテキスト長・可用性が有料プランより制限されています。本番クリティカルな用途には向きません。
前提: Claude Code で OpenRouter モデルを使う最小設定
Claude Code v1.x 以降、環境変数 ANTHROPIC_BASE_URL と ANTHROPIC_API_KEY を OpenRouter 向けに設定するだけでルーティングできます。
export ANTHROPIC_BASE_URL="https://openrouter.ai/api/v1"
export ANTHROPIC_API_KEY="sk-or-v1-xxxxxxxxxxxx" # OpenRouter の API キー
モデルを指定して起動:
claude --model "google/gemini-2.5-flash-preview:free" "この関数をリファクタして"
または ~/.claude/settings.json に永続化:
{
"model": "google/gemini-2.5-flash-preview:free",
"fallbackModel": "anthropic/claude-3.5-haiku"
}
比較した 5 モデル (2026 年 5 月時点)
| # | モデル ID (OpenRouter) | パラメータ規模 | コンテキスト長 | 無料枠レートリミット |
|---|---|---|---|---|
| 1 | google/gemini-2.5-flash-preview:free |
非公開 (Gemini 2.5 系) | 1M token | 10 RPM |
| 2 | meta-llama/llama-4-maverick:free |
400B MoE (17B active) | 128K token | 20 RPM |
| 3 | deepseek/deepseek-r1:free |
671B MoE | 64K token | 5 RPM |
| 4 | qwen/qwen3-235b-a22b:free |
235B MoE (22B active) | 40K token | 10 RPM |
| 5 | mistralai/mistral-small-3.2-24b:free |
24B dense | 128K token | 20 RPM |
※ レートリミット・コンテキスト長は OpenRouter 公式ドキュメント記載値。変更される場合があります。
比較軸 1: コード補完・関数生成
プロンプト例:
TypeScript で、配列から重複を除去しつつ元の順序を保持する関数を書いてください。
ジェネリクスを使い、プリミティブだけでなくオブジェクトも key 指定で扱えるようにしてください。
Gemini 2.5 Flash ⭐⭐⭐⭐⭐
レスポンス品質・速度ともに最高水準。1M トークンのコンテキストは大規模リポジトリの全体把握にも対応。
function uniqueBy<T>(arr: T[], key?: keyof T): T[] {
const seen = new Set<unknown>();
return arr.filter((item) => {
const k = key !== undefined ? item[key] : item;
if (seen.has(k)) return false;
seen.add(k);
return true;
});
}
// 使用例
uniqueBy([1, 2, 2, 3]); // [1, 2, 3]
uniqueBy([{ id: 1 }, { id: 2 }, { id: 1 }], "id"); // [{id:1},{id:2}]
型推論も正確で、コードスタイルも一貫している。
Llama 4 Maverick ⭐⭐⭐⭐
十分実用的な品質。軽量 active パラメータ (17B) のおかげでレイテンシが低い。コメントや JSDoc を積極的に付けてくれる傾向あり。
DeepSeek R1 ⭐⭐⭐⭐
Chain of Thought が標準装備のため、思考ログが長くなりがち。純粋なコード生成では少し冗長。複雑なロジックの設計相談には逆にこれが強み。
Qwen3 235B ⭐⭐⭐½
コード品質は高いが、40K トークン上限が実際のコードレビュー用途では制約になりやすい。小〜中規模ファイルのレビューに絞れば十分。
Mistral Small 3.2 24B ⭐⭐⭐
最も軽量。シンプルなユーティリティ関数・型定義の補完なら高速で問題なし。複雑なロジックになると補完の抜け漏れが出やすい。
比較軸 2: リファクタリング支援
プロンプト例:
以下の Express ルートをリファクタして:
1. async/await へ変換
2. エラーハンドリングを middleware 化
3. バリデーションを zod で追加
// before
app.get('/users/:id', (req, res) => {
User.findById(req.params.id, (err, user) => {
if (err) return res.status(500).json({ error: err.message });
if (!user) return res.status(404).json({ error: 'Not found' });
res.json(user);
});
});
結果まとめ
| モデル | 変換精度 | 追加提案の質 | 指示忠実度 |
|---|---|---|---|
| Gemini 2.5 Flash | ◎ | middleware の再利用性を自発的に提案 | 全指示達成 |
| Llama 4 Maverick | ◎ | コメント丁寧 | 全指示達成 |
| DeepSeek R1 | ○ | CoT で設計を解説してから実装 | 全指示達成 (冗長) |
| Qwen3 235B | ○ | バリデーションスキーマが詳細 | 全指示達成 |
| Mistral Small | △ | middleware は省略気味 | 2/3 達成 |
Gemini 2.5 Flash と Llama 4 Maverick が均衡してトップ。
比較軸 3: テスト生成 (Vitest / Jest)
プロンプト例:
以下の関数に対して Vitest のユニットテストを書いてください。
エッジケース (空配列・undefined・重複のみ) も網羅してください。
テスト生成は「エッジケースの網羅率」が品質を左右します。
DeepSeek R1 が逆転 ⭐⭐⭐⭐⭐
推論ステップを踏みながらエッジケースを洗い出すため、テスト生成では 5 モデル中最高品質。パラメタライズドテストも自然に出力してきます。
// DeepSeek R1 が生成したテスト (一部)
describe("uniqueBy", () => {
it("空配列を渡した場合は空配列を返す", () => {
expect(uniqueBy([])).toEqual([]);
});
it("全要素が重複している場合は最初の 1 件のみ返す", () => {
expect(uniqueBy([1, 1, 1])).toEqual([1]);
});
it("key 指定でオブジェクトの重複を除去する", () => {
const input = [{ id: 1, val: "a" }, { id: 2, val: "b" }, { id: 1, val: "c" }];
expect(uniqueBy(input, "id")).toEqual([{ id: 1, val: "a" }, { id: 2, val: "b" }]);
});
it("プリミティブで key を渡さない場合に正常動作する", () => {
expect(uniqueBy(["a", "b", "a", "c"])).toEqual(["a", "b", "c"]);
});
});
Gemini 2.5 Flash も品質は高いですが、テスト数が少なめの傾向あり。
比較軸 4: ドキュメント生成 / JSDoc
軽量タスクは Mistral Small 3.2 24B が輝きます。20 RPM の高レートリミットと低レイテンシで、コメント補完・JSDoc 生成を大量に流しても詰まりにくい。
# 複数ファイルへ JSDoc を一括追加するユースケースで重宝
for f in src/**/*.ts; do
claude --model "mistralai/mistral-small-3.2-24b:free" \
"このファイルの全 export に JSDoc コメントを追加して" < "$f"
done
用途別おすすめモデル一覧
| 用途 | おすすめモデル | 理由 |
|---|---|---|
| 大規模リポジトリ全体把握・設計 | gemini-2.5-flash-preview:free |
1M コンテキスト |
| 日常的なコード補完・リファクタ | llama-4-maverick:free |
高速・高 RPM・高品質 |
| テスト生成・バグ原因分析 | deepseek-r1:free |
CoT で網羅的推論 |
| 中規模コードレビュー・型チェック | qwen3-235b-a22b:free |
高品質・バランス型 |
| JSDoc / コメント補完の一括処理 | mistral-small-3.2-24b:free |
軽量・高 RPM |
レートリミット対策: fallback 設定
無料枠は 429 Too Many Requests が頻発します。Claude Code の settings.json で fallback を設定しておくと詰まりにくくなります。
{
"model": "google/gemini-2.5-flash-preview:free",
"fallbackModel": "meta-llama/llama-4-maverick:free",
"maxRetries": 3,
"retryDelay": 2000
}
また、Claude Code 外で OpenRouter を使う場合は、公式 SDK の x-or-retry-after ヘッダを見て指数バックオフするのが定石です。
// OpenRouter 推奨のバックオフ実装例
async function fetchWithRetry(url: string, options: RequestInit, attempt = 0) {
const res = await fetch(url, options);
if (res.status === 429 && attempt < 5) {
const retryAfter = Number(res.headers.get("x-or-retry-after") ?? 2);
await new Promise((r) => setTimeout(r, retryAfter * 1000 * 2 ** attempt));
return fetchWithRetry(url, options, attempt + 1);
}
return res;
}
コンテキスト長の実際の使い方
Gemini 2.5 Flash の 1M トークンは、以下のような用途で真価を発揮します:
# リポジトリ全体をコンテキストに乗せて設計相談
find src -name "*.ts" | xargs cat | claude \
--model "google/gemini-2.5-flash-preview:free" \
"この codebase の依存関係を整理して、循環参照を検出してください"
一方 DeepSeek R1 の 64K は、単一ファイルのレビューや特定モジュールの深掘りには十分ですが、モノリス全体を一括で流すには足りません。
まとめ
| 観点 | 勝者 |
|---|---|
| 総合品質 | Gemini 2.5 Flash |
| コスパ (無料枠でのスループット) | Llama 4 Maverick |
| テスト生成・推論深度 | DeepSeek R1 |
| 軽量タスクの量産 | Mistral Small 3.2 24B |
コスト 0 円で AI コーディング支援を最大化するなら、目的別にモデルを使い分けるのが現時点の最善解です。毎日の補完・リファクタは Llama 4 Maverick、テスト生成は DeepSeek R1、大規模設計相談は Gemini 2.5 Flash、という三刀流が安定します。
OpenRouter の無料枠は月次で追加・削除されるため、定期的に openrouter.ai/models の free フィルタで最新状況を確認することをおすすめします。
参考リンク
- OpenRouter 公式ドキュメント
- Claude Code 公式 — モデル設定
- OpenRouter モデル一覧 (free フィルタ付き)
- DeepSeek R1 技術レポート (arXiv:2501.12948)
- Llama 4 発表ブログ (Meta AI)
- Qwen3 技術レポート (Qwen Team)
- Mistral Small 3.2 リリースノート
✍️ 本記事の著者: 合同会社ジモラボ
ジモラボは、八王子を拠点に AI を活用した SaaS を多数開発しています。本記事の技術検証もそうした開発過程の副産物です。
- 🌐 公式サイト: https://locallab.jp
- 🔍 AI SEO 最適化 SaaS: lookupai.jp
- 📺 YouTube: @locallab_llc
- ✉️ お問い合わせ: info@locallab.jp
興味を持っていただけたら、ぜひ各 SNS のフォローもお願いします!