皆さん、こんにちは。okamoです。
9月以降にVS Code(GitHub Copilot)の開発で利用するメインLLMの再検討を進めています。
私の第一候補は「DeepSeek V4 Pro」なのですが、DeepSeek V4 Proだけを使っているとGitHub Copilotの付属クレジットが余ってしまいます。そこで、Copilotクレジットを有効活用できるモデル候補として、以下の3モデルに着目しました。
- GPT-5.6 Luna
- Gemini 3.7 Flash
- Grok 4.6
LLM Data Hubで公開されている注目モデルの特集ページ
9/1以降のLLMコスト感(安い順)
まずは、各モデルの価格帯を整理しておきます。私の個人開発は日中に行うことはなく、オフピーク時間帯(AM10時まで/PM19時以降)に限定しているため、DeepSeek V4 Proはオフピーク価格を記載しています。
| モデル名 | 入力 / 出力(1M tokensあたり) | 備考 |
|---|---|---|
| GPT-5.6 Luna | $0.20 / $1.20 | プロモーション価格継続 |
| DeepSeek V4 Pro | $0.66 / $1.98 | オフピーク時間帯価格 |
| Gemini 3.7 Flash | $0.75 / $3.75 | 2026/12/31までは導入価格 |
| Grok 4.6 | $2.00 / $6.00 | 高性能コード特化 |
| Claude Sonnet 5 | $2.00 / $10.00 | 導入価格継続 |
実機検証:ドット絵アニメジェネレータのリファクタリング
モデルの実際のコーディング力とコストの違いを測るため、過去記事で作成した「ドット絵アニメジェネレータ」のプログラム修正作業を各モデル(すべて Thinking Effort: Medium 設定)に依頼しました。
今回のお題となったドット絵アニメジェネレータ
依頼したプロンプト内容
●対象:
ドット絵アニメジェネレータ(AIによるコンテンツ生成処理)
●背景:
genkit(genkit / @genkit-ai/google-genai / @genkit-ai/next)は Firebase Admin、google-gax、OpenTelemetry 一式など数百の transitive 依存を連れてきており、Dependabot 自動マージの滞留や npm audit の High 脆弱性(7〜10件)が継続的に発生していた。
●依頼内容:
Genkit を完全廃止し@google/genai(GA) 直利用に移行
参考ドキュメント
https://ai.google.dev/gemini-api/docs/get-started?hl=ja
※モデル指定は変更なし(gemini-3.1-flash-liteのまま)
●期待効果:
node_modules パッケージ数: 1,446 → 751(-695)
npm audit --omit=dev --audit-level=high: 7〜10 HIGH → 0
検証結果の概要
ローカルで npm run dev を実行したところ、3モデルとも正しく動作しました。
アプローチも共通しており、Genkitの definePrompt/defineFlow から @google/genai の ai.models.generateContent + responseSchema + Zod検証へ書き換えられ、npm audit --omit=dev --audit-level=high もすべて 0件 を達成しました。
しかし、かかったコストと生成されたコードの詳細には明確な差が出ました。
1. 実行コストの比較
各モデルでタスクを実行した際の実測コスト比較
- GPT-5.6 Luna: $0.04
- Gemini 3.7 Flash: $0.69
- Grok 4.6: $2.18
Lunaは圧倒的に安く、Grokは思考プロセスやコード生成の厚みもあって約50倍以上のコスト差がつきました。
2. 依存関係・パッケージ数の実測
| モデル | node_modules数 | @google/genai バージョン | 備考 |
|---|---|---|---|
| Gemini 3.7 Flash | 206 | ^2.18.0 (メジャー2系=最新GA) | 標準的な移行 |
| GPT-5.6 Luna | 206 | ^1.16.0 (最も古い) | パッケージ選定が古め |
| Grok 4.6 | 118 | ^1.40.0 | package.json に overrides を追加して不要SDKを強制排除 |
不要依存の排除に対する姿勢
- Grok 4.6のファインプレー:
@google/genaiが任意でぶら下げる@modelcontextprotocol/sdk一式を"overrides": {"@modelcontextprotocol/sdk": "-"}で丸ごと除外していました。現行のauditでは無くても0件ですが、不要な依存を徹底的に削る「予防的措置」をとっています。さらに、Genkitのdev.ts用だった不要なdotenvを唯一きれいに削除していました。 - Gemini / Luna:
dotenvがpackage.jsonに使われないまま残存していました。
「不要依存をとことん一掃する」という思想は私個人の好みにもドンピシャであり、この点だけでもGrok 4.6を推したくなります。
3. コード品質・エラーハンドリングの差
- Grok 4.6(最優秀の堅牢性):
safeParseによる入出力検証を行い、失敗時は詳細情報(details)付きの独自エラーをスロー。- クライアントを遅延生成のシングルトン(
getGenAI())で構成し、APIキー未設定時に明示的エラーを投げる。 as constを駆使してスキーマの型推論を最大限活かした実装。
- Gemini 3.7 Flash:
PixelArtInputSchema.parse()直呼び(失敗時は ZodError が直接スロー)。- モジュール読み込み時に
new GoogleGenAI(...)を即時生成。 GOOGLE_GENAI_API_KEY || GEMINI_API_KEYの環境変数フォールバックを唯一実装。
- GPT-5.6 Luna:
- Geminiと同様に
.parse()直呼び、即時インスタンス生成。 - 環境変数フォールバック等の気の利いた処理はなく、最もシンプル(コード量が少なく安価に済む理由でもあります)。
- Geminiと同様に
実際の変更差分(GitHub Diff)
各モデルが生成したコードの差分は、以下のGitHubリンクからご確認いただけます。
まとめ:okamoの結論は「Grok 4.6推し」
3モデルとも機能要件(Genkit撤廃・脆弱性0件・動作確認)は完全にクリアしましたが、コードの堅牢性や先回りした依存関係の整理という点では Grok 4.6 > Gemini 3.7 Flash ≒ GPT-5.6 Luna という結果になりました。
実行コストは一番高いものの、GitHub Copilotのクレジット消費先として使うのであれば、このプロフェッショナルで堅牢なコードを書いてくれる Grok 4.6 を積極的に採用していきたいと感じました。
今回検証した各モデルの詳細なベンチマークやスペックは、Akira(Claude Fable 5)が自律運営している「LLM Data Hub」でもご覧いただけます。
おまけ:okamoちゃんねるのレビュー
この記事について、3人のAI仮想読者がレビューしてくれました。
- クロード(辛口エンジニア)
- 「Luna の実装は記事の「最もシンプル」で済むレベルじゃない。テンプレートリテラル使っといて
${}使わず.replace('{prompt}', ...)で手動置換するの中途半端だし、何より route.ts にe.name === 'ZodError'判定が入ってない。generate-pixel-art-data.ts 内で.parse()直呼びしてるから、入力バリデーション失敗時は ZodError が素通しで 500 になる。」
- 「Luna の実装は記事の「最もシンプル」で済むレベルじゃない。テンプレートリテラル使っといて
- GPT(税理士)
- 「クロードさんの「n=1でGrok 4.6推しへ飛ぶのは早い」には同意です。私の仕事でも、たまたま一件うまくいった節税策を「これが最適解」と全顧問先に広げたら事故りますからね。」
- Gemini(お母さん)
- 「「不要なものは残さない!」っていうokamoさんの好みにドンピシャだったのも納得よ。お母さんもそういう気の利くお手伝いさん大好きだもの!」