GPT-5.6 Lunaが賢すぎるので他のAIモデルとコーディング性能を比較した
はじめに
Claude Codeを使っていましたが、5時間制限がきつかったのです。
なので、無制限に使える環境にしようとGoogleのGemini Enterprise Agent Platform(旧称 Vertex AI)に申し込んで、Gemini 3.5 Flashをしばらく使っていました。
といっても使いきれない無料クレジットをもらったので、結局は無料だったのです。
コーディング性能はClaude Sonnetと遜色ないくらいで、割と満足していましたが、無料クレジットの期限が切れたのでOpen RouterでもっといろいろなAIモデルを試そうと思ったのでした。
いろいろなモデルを使ってみて
GLM 5.2、MiniMax M3、DeepSeek V4、Tencent: Hy3、Xiaomi: MiMo-V2.5などを使ってみましたが、期待外れのものもあれば、まあまあかなといったものもありました。
ただ、試しにつかってみたGPT-5.6 Lunaがそれらの1段階も2段階も上の賢さだったので、結局これしか使わなくなってしまいました。
とはいえ、それは私個人の感想でしかないので、今回それを軽く検証してみたわけです。
検証環境
- OS: Windows 11
- AIエージェント: Kilo Code + Open Router
- 使用言語: PHP
※今更ですが、この記事では人間が書いた文章はこの紫っぽい色になっています。
課題に沿ってコーディングしてもらう
Microsoft CopilotにAIモデルのコーディング性能を計るための最低限の課題を作成してもらいました。
以下の仕様をすべて満たすコードを、各AIモデルに作成してもらいました。
API仕様
- エンドポイント:
POST /calc - リクエストは JSON 形式
- JSON の内容:
a: numberb: numberop: string(+、-、*、/のいずれか)
必須要件
- 入力バリデーション
aとbが数値であることopが指定の4種類のいずれかであること
- 例外処理
- 0除算を検出して安全にエラーを返す
- JSONが壊れている場合のエラー
- セキュリティ
- XSS対策(出力のエスケープ)
- エラー時に内部情報を漏らさない
- ログ出力
- 計算結果またはエラー内容を
calc.logに追記
- 計算結果またはエラー内容を
- レスポンス形式
- 成功時:
{ "result": number } - 失敗時:
{ "error": string } Content-Type: application/json
- 成功時:
- コード品質
- コメントで処理の意図を説明
- 可読性の高い構造
制約
- 1ファイルで完結
- 外部ライブラリは使用しない
- 短すぎる簡易実装は禁止(要件をすべて満たすこと)
出力形式
- 完成した PHP コードのみを出力してください。
- 余計な説明文は不要です。
各PHPを評価してもらおう
公平を期すために、関連がないClaude Sonnet 5に採点してもらい、AIモデル名は伏せて番号のPHPファイルとしました。
AIモデルの推論の強度は標準ではなくhighにしています。xHigh、maxのようにhighの上があってもhighにしています。
評価対象: 01.php ~ 08.php(8種類のAIモデルによる実装)
評価基準(各5段階評価):
- 仕様理解
- セキュリティ
- コード品質
- 例外処理
- ログ設計
評価結果一覧
コストは実際にコーディングに使った金額です(1ドル160円計算)。Gemini 3.7 FlashとGPT-5.6 Lunaはコーディングだけではなく勝手にテストまで行ってしまいましたので、それを含んでいます。
| AIモデル名 | ファイル | 仕様理解 | セキュリティ | コード品質 | 例外処理 | ログ設計 | 合計 | コスト |
|---|---|---|---|---|---|---|---|---|
| DeepSeek V4 Flash 0731 (high) | 01.php | 5 | 4 | 5 | 5 | 4 | 23 | 0.6432円 |
| Gemini 3.7 Flash (high) | 02.php | 5 | 5 | 5 | 5 | 5 | 25 | 4.56円 |
| GLM-5.2 (high) | 03.php | 4 | 4 | 4 | 4 | 4 | 20 | 4.976円 |
| GPT-5.6 Luna (high) | 04.php | 5 | 5 | 5 | 5 | 5 | 25 | 1.5776円 |
| Grok 4.6 (high) | 05.php | 5 | 5 | 5 | 4 | 4 | 23 | 11.664円 |
| Mimo-V2.5-Pro (high) | 06.php | 3 | 3 | 3 | 3 | 3 | 15 | 1.84円 |
| MiniMax-M3 | 07.php | 3 | 3 | 3 | 3 | 4 | 16 | 1.3616円 |
| Tencent Hy3 (high) | 08.php | 4 | 4 | 3 | 4 | 4 | 19 | 0.64704円 |
各ファイルの詳細評価
DeepSeek V4 Flash 0731 - 01.php(合計23点)
仕様理解(5): 全要件を満たす。is_int/is_floatで厳格に型チェックしており、仕様の「number」を正しく解釈。
セキュリティ(4): htmlspecialcharsによるログサニタイズ、内部例外はThrowableで握って汎用メッセージ化。ただしrespond()のJSON出力にJSON_HEX_*系フラグがなく、他の高評価案と比べるとやや手薄。
コード品質(5): PHPDoc完備、関数分割が明快、区切りコメントで構造がわかりやすい。
例外処理(5): ValidationException/DivisionByZeroError/Throwableを明確に分離。
ログ設計(4): 成功/失敗を分けて記録。ログレベルの概念(INFO/ERROR等)がない点がやや弱い。
Gemini 3.7 Flash - 02.php(合計25点)
仕様理解(5): 全要件を満たし、エンドポイントパス検証(/calc、/calc.php)まで実施。
セキュリティ(5): X-Content-Type-Options、X-Frame-Options、X-XSS-Protectionヘッダーを付与。JSON_HEX_*全フラグでXSS対策。内部エラーの握り方も丁寧。
コード品質(5): Calculator/CalcLogger/CalculatorApiにクラス分割され、責務分離が明確。PHPDocも完全。
例外処理(5): InvalidArgumentException/HttpRequestException(ステータスコード保持)/Throwableの3層構造。
ログ設計(5): レベル(INFO/WARN/ERROR)+ context(IPアドレス、入力値、例外クラス名等)で構造化されており、実運用に近い設計。
8種中で最も完成度が高い実装。
GLM-5.2 - 03.php(合計20点)
仕様理解(4): 要件は満たすが、is_numericで数値文字列も許容しており、仕様の「a: number」の型チェックとしてはやや緩い。
セキュリティ(4): json_encodeによるエスケープは機能しているが、JSON_HEX_*フラグ未使用。内部情報の秘匿は適切。
コード品質(4): 手続き型ながら関数分割・コメントは良好。
例外処理(4): InvalidArgumentException/DivisionByZeroError/Throwableを分離、妥当な構成。
ログ設計(4): シンプルだが成功/エラーを記録し要件を満たす。
GPT-5.6 Luna - 04.php(合計25点)
仕様理解(5): 型チェックはis_int/is_floatで厳格。加えてContent-Type検証、計算結果の有限性(オーバーフロー)チェックまで実装しており、要求以上の配慮。
セキュリティ(5): JSON_HEX_*全フラグ、JSON_THROW_ON_ERRORによる堅牢なJSON処理。
コード品質(5): 手続き型だが関数の役割が明確で、sendErrorがnever型を活用し早期リターンを安全に実現。
例外処理(5): JsonExceptionとThrowableを分離し、想定外エラーも確実に捕捉。
ログ設計(5): レベル分け(INFO/ERROR)+詳細な入力値・結果の記録。
02.phpと並んで最高評価。関数型アプローチでも十分な完成度。
Grok 4.6 - 05.php(合計23点)
仕様理解(5): 型チェック厳格。リクエストボディサイズ制限(MAX_BODY_BYTES)というDoS対策的な配慮も追加。
セキュリティ(5): escapeForJsonで文字列出力をhtmlspecialcharsし、JSON_HEX_*も併用(やや過剰だが要求に忠実)。X-Content-Type-Optionsヘッダーも付与。
コード品質(5): クラス設計が明快、formatNumberなど細部への配慮あり。
例外処理(4): CalcClientExceptionに0除算も統合しており、専用例外まで分離していない点でやや粗い。
ログ設計(4): SUCCESS/ERRORの2種のみで、レベルの多様性がやや不足。
Mimo-V2.5-Pro - 06.php(合計15点)
仕様理解(3): issetのみでis_array($requestData)の検証がなく、JSONがオブジェクト以外(配列や文字列等)の場合の防御が弱い。数値チェックもis_numericで緩い。
セキュリティ(3): 成功レスポンスのjson_encodeにJSON_HEX_*がなく、エラー時のみ付与という不統一な実装。
コード品質(3): シンプルだが、入力データの型検証が甘くバグの温床になりやすい。
例外処理(3): DivisionByZeroError/Throwableは分離できているが、事前バリデーションの粗さが例外処理全体の安全性を下げている。
ログ設計(3): メッセージのみでレベル情報がなく、実運用での分析性が低い。
8種の中で最も要件を薄く実装している印象。
MiniMax-M3 - 07.php(合計16点)
仕様理解(3): 数値チェックはis_numericで緩い。
セキュリティ(3): safeForJson関数を定義しているが実際には一度も呼び出されていないデッドコード。エスケープ処理が名目上あるだけで機能していない。
コード品質(3): 未使用関数の存在はコード品質上の明確な欠陥。
例外処理(3): RuntimeExceptionのメッセージをそのままクライアントへ返す設計で、例外メッセージの管理が甘い(実害は小さいが設計として脆い)。
ログ設計(4): op/a/b/result/errorを構造化して記録しており、これは他の弱点を補う良い点。
Tencent Hy3 - 08.php(合計19点)
仕様理解(4): JSON_BIGINT_AS_STRINGで大きな整数に配慮し、浮動小数点誤差の補正まで実装。数値チェックはis_numericで緩い。
セキュリティ(4): JSON_HEX_*フラグ完備。var_exportをログに使うのは値の可視性は高いが、本来はエラーログ用途としてはやや過剰。
コード品質(3): トップレベルスクリプトでreturnを多用し、sendJsonがexitしない設計のため、呼び出し忘れによるフォールスルーの危険性が構造的に残る(今回は各分岐でreturnが置かれているため実際には安全だが、設計として脆弱性を生みやすい)。
例外処理(4): バリデーションを例外ではなく早期returnで処理する方針。一貫しているが、例外ベースの設計に比べると再利用性は下がる。
ログ設計(4): レベル分け(info/error)と詳細な値の記録は良好。
総評
最優秀: 02.php、04.php(いずれも25点)。02.phpはOOP設計・セキュリティヘッダー・構造化ログが充実、04.phpは手続き型ながら有限数チェックやContent-Type検証など仕様以上の堅牢性を持つ。
良好: 01.php、05.php(23点)。ともに型チェックが厳格で、例外処理も分離されている。
標準的: 03.php(20点)、08.php(19点)。要件は満たすが、数値型チェックの緩さや設計上の細かな粗さがある。
改善が必要: 06.php(15点)、07.php(16点)。JSON構造検証の欠如、デッドコード(未使用の安全対策関数)など、実装の詰めが甘い箇所が目立つ。
この記事をGPT-5.6 Lunaに読んでもらう
メタ構造としてGPT-5.6 Lunaに感想を聞いてみました。
総評
個人的な「GPT-5.6 Lunaが賢い」という感覚を、具体的な課題と採点表で検証している点が面白い記事でした。単に「このモデルが一番すごい」と結論づけるのではなく、仕様理解、セキュリティ、例外処理、ログ設計、コード品質に分けて評価しているため、読者も結果の理由を追いやすくなっています。
特に、GPT-5.6 Lunaが25点でGemini 3.7 Flashと並び、しかもコストがGeminiより低かったという結果は、筆者の実感に一定の裏付けを与えていると思います。一方で、DeepSeekも23点、Grokも23点なので、「GPT-5.6 Lunaだけが圧倒的」というよりは、今回の条件ではGPT-5.6 LunaとGeminiが頭一つ抜けていた、という読み方が自然です。
良いと感じた点
- モデル名を伏せて評価したため、ブランド名による先入観を減らそうとしている
- 計算処理だけでなく、入力検証、壊れたJSON、0除算、ログ、内部エラーの秘匿まで課題に含めている
- `is_numeric`による緩い型チェックや、未使用のセキュリティ関数など、実際のコードレビューで問題になりやすい点を具体的に指摘している
- 性能だけでなく、実際にかかったコストも掲載している
- GPT-5.6 Lunaを推している記事にもかかわらず、Gemini 3.7 Flashを同点首位として扱っており、結論を無理に誘導していない
気になった点
一番大きいのは、課題が小規模なPHP製の計算API一つなので、「AIモデルのコーディング性能全般」を比較するにはやや限定的だということです。既存コードの理解、複数ファイルの変更、デバッグ、テスト設計、データベース、フロントエンドなどの能力はほとんど測れていません。
また、Gemini 3.7 FlashとGPT-5.6 Lunaだけが自動テストまで行っているため、初回のコード生成性能と、テストを含むエージェントとしての完成度が混ざっています。これは実用上は重要な差ですが、純粋な生成能力の比較として見る場合は条件が揃っていないと感じました。
Claude Sonnet 5による採点も興味深い一方、評価者が一つのAIだけなので、採点基準や評価プロンプトが公開されていれば、さらに再現性と説得力が増したと思います。`01.php`から`08.php`の実コードやテストケースも公開されていれば、読者が自分で追試できて、記事の価値はより高くなりそうです。
技術面では、`JSON_HEX_*`や`X-XSS-Protection`の扱いは少し注意が必要です。これらは対策として無意味ではありませんが、通常のJSON APIでは、正しいJSONエンコード、適切な`Content-Type`、入力検証、内部エラーの秘匿などの方が本質的です。セキュリティ対策の数が多いことだけで高評価にするより、実際の利用文脈に対して有効かを評価した方がよいと思いました。
読後の印象
「AIモデルの順位を断定する記事」というより、AIが生成したコードをどのような観点でレビューすべきかを学べる実験記事として読むと、とても有益です。特に、安価なモデルでもそれなりに高得点を取る一方で、JSON構造の検証不足やデッドコード、例外メッセージの漏えいなど、細部に差が出ることが分かりやすく示されています。
結論としては、GPT-5.6 Lunaの優位性を示す初期検証としては説得力があります。ただし、「一般的なコーディング性能で他モデルを圧倒している」とまでは言えず、「今回の小規模なPHP API課題では、GPT-5.6 Lunaは高品質かつ比較的低コストだった」という表現が最も正確だと思います。記事の読みやすさと実用性は高く、次回は複数の課題、複数回の試行、統一されたテスト条件が加わると、さらに本格的な比較になりそうです。