こんな「通念」、聞いたことありませんか?
- 「AIにコードを書かせるならRustが最強。型システムとborrow checkerがAIのミスを全部弾いてくれる」
- 「C++をAIに書かせるのは危険。未定義動作とポインタの地雷原だから、機能は作れてもバグだらけになる」
- 「Pythonは楽だけど、動的型付けだからAIが書くと実行時エラーまみれになる」
AIコーディングエージェントを使っているエンジニアなら、一度はどこかで見聞きした言説だと思います。私もそう思っていました。
そこで今回、まったく同じ仕様を6つの言語でAIに実装させて、どの言語が一番「完成度の高い成果物」になるのか を実験してみました。結論から言うと、事前予想はきれいに裏切られました。
この記事では、実験の設計・結果・そして「AIに有利な言語とは何か」についての考察を共有します。
harness software : Claude Code
Model : Opus4.7
Effort : High
言語: C#、C++、Haskell、Java、Python、Rust
1. 実験の設計
お題:ミニ・ボクセルエディタ
全言語に共通で、以下の仕様を与えました。
| 要件 | 内容 |
|---|---|
| 3Dビュー | オービットカメラ(回転 / パン / ズーム) |
| ボクセル編集 | レイキャストによる設置・削除、半透明の設置プレビュー |
| パレット | ボクセル / ビルボードオブジェクトの2種を切り替え |
| レイヤー | Auto(自動スタック)/ Manual(固定Y)モード、レイヤー移動 |
| UI | モード・レイヤー・選択中アイテムの状態表示 |
対象言語と技術スタック
| 言語 | スタック | 一言でいうと |
|---|---|---|
| C# | WinForms + 自作ソフトウェアラスタライザ | 描画APIなしの硬派構成 |
| C++ | Win32 API + OpenGL 1.1 | 枯れ切ったレガシー構成 |
| Haskell | GLFW + OpenGL 3.3 | 関数型代表 |
| Java | Swing + Java2D | 標準ライブラリのみ |
| Python | pygame + PyOpenGL + numpy | 低レベル寄りスクリプト構成 |
| Rust | winit + wgpu | 唯一のモダンGPU構成 |
ポイント:実装もセルフチェックも、AIにやらせる
今回の実験のメインです。各言語ごとにハーネスを組み、AIが自分で実装し、自分でビルドして、自分のランタイムをチェックしながら仕上げる という形にしました。つまり「AIが自走して完成と判断したもの」が成果物です。基本的なハーネスはやっておいた上で検証しました。
harness software : Claude Code
Model : Opus4.7
Effort : High
2. 事前予想 ― 一般的な通念ベース
実験前に立てた予想はこうでした。
| 順位予想 | 言語 | 理由(通念) |
|---|---|---|
| 1 | Rust | コンパイラが厳しい=AIのミスを機械が弾く。セルフチェックループと相性最強のはず |
| 2 | C# / Java | 型あり・GCあり・標準GUIありで安定するはず |
| 3 | Python | 書きやすいが実行時エラーが残りそう |
| 4 | C++ | 機能は盛れるが、未定義動作とリソース管理でバグが残るはず |
| 5 | Haskell | 純粋関数型でGUI/ゲームループは苦行のはず |
特にRustには期待していました。「コンパイルが通れば大体動く」言語なので、AIが自分で検証しながら作る今回のハーネスとは相性が良いはずだ、と。逆にC++は「機能は多いがバグも多い」成果物になると踏んでいました。
3. 結果 ― 予想は外れた
実機テストの結果がこちらです。
Python
Rust
| 項目 | C# | C++ | Haskell | Java | Python | Rust |
|---|---|---|---|---|---|---|
| 機能カバレッジ | 高 | 高 | 低 | 高 | 高 | 中 |
| 実機で見つかった欠陥 | 1 | 0 | 0(そもそも機能が少ない) | 1 | 0 | 1 |
| 削除機能 | ✅ | ✅ | ❌ なし | ✅ | ✅ | ⚠️ 全消去のみ |
| UI/フィードバック | ボタン+ステータスバー | ボタン+2段バー | 色チップのみ | テキストHUD最多 | パレットパネル+HUD | タイトルバー実況 |
| 総合順位 | 3 | 1 | 6 | 2 | 2(同率) | 5 |
1位はまさかのC++(欠陥ゼロ)
「バグだらけになるはず」だったC++が、実機テストで唯一、欠陥ゼロのフル機能実装 でした。設置・自動スタック・削除(Xキー)・プレビュー・モード切替・レイヤー・パレット・ズーム・カメラリセット、その全部がキーボードとUIボタンの両方で動く。Auto=青 / Manual=オレンジのレイヤーギズモ色分けまで入っていて、視覚フィードバックも一番丁寧でした。
Win32 + OpenGL 1.1 という構成は人間には苦行ですが、AIは平然と書き切ってきました。
期待のRustは5位(レンダリングバグ+機能不足)
一方のRustは、起動も操作も軽快で、タイトルバーにモード・レイヤー・オブジェクト数がリアルタイム表示されるなど見どころはあったものの──
- オブジェクト(白い円のビルボード)を設置すると、緑の四角形がレンダリングされる(テクスチャレイヤー/ティント周りのバグと推定)
- 個別削除が存在しない(Rキーの全消去のみ)
という、エディタとして痛い問題が2つ。「コンパイルは通っているが、画面に出るものが仕様と違う」という、borrow checkerでは絶対に検出できない種類のバグ が残っていました。
その他の言語
- Java(2位):ボクセルを積むと作業レイヤーが自動で追従する「レイヤー自動トラッキング」を唯一実装。HUDの情報量も最多。ただしTABキーがSwingのフォーカス移動に食われて無反応(クリックで代替可能)。
- Python(同率2位):テストした操作すべてが無欠陥で動作。6言語で唯一READMEまで同梱。ただしカメラリセットがないなど機能数で半歩劣る。
- C#(3位):描画APIを一切使わず、レイキャスト・透視補正テクスチャリング・深度バッファまでソフトウェアラスタライザを自作してきた技術的最優秀賞。ただしTabキーがWinFormsのフォーカス移動に食われる欠陥が1件。
- Haskell(6位):コアループ(レイキャスト→プレビュー→設置)とWASD自由飛行は動くが、削除機能がそもそも存在しない。テキストHUDもなし。プルーフオブコンセプト止まり。
ちなみに面白かったのは、C#とJavaがまったく同じ種類のバグ(Tab/TABキーがGUIフレームワークのフォーカストラバーサルに食われる)を踏んでいた ことです。言語ではなくフレームワークの罠は、AIも人間と同じように踏むようです。
4. 考察 ― 「AIに有利な言語」とは何だったのか
予想と結果のズレを整理すると、こうなります。
予想していたモデル:
言語の安全性が高い = AIのミスを機械が弾く = 成果物の品質が高い
実際に観測されたモデル:
学習データの量 × APIの枯れ具合 = 成果物の品質
コンパイラの厳しさは「実行時の正しさ」を保証しない
Rustのコンパイラが保証するのはメモリ安全性とデータ競合の不在であって、「テクスチャ配列の何番目をサンプリングするか」が仕様通りかどうかは知ったことではない わけです。今回のバグはまさにそこで起きました。GUI・グラフィックスというドメインでは、AIが出すバグの大半は「型で弾ける種類のバグ」ではなく「画面に出して初めて分かる種類のバグ」でした。
枯れたAPIは学習データの宝庫
C++ + Win32 + OpenGL 1.1 は、30年分のサンプルコード・解説記事・Stack Overflowの回答 がインターネット上に堆積している構成です。AIにとっては膨大な学習データで何度も見たパターンの組み合わせであり、自信を持って正しいコードを出せる領域だったと考えられます。
一方のwgpuは、設計はモダンですがAPIのバージョン間変化が激しく、学習データも相対的に少ない。AIは「それっぽいが微妙に違う」コードを書きやすい領域です。
セルフチェックの及ぶ範囲も言語で差がない
「Rustはセルフチェックループと相性が良いはず」という予想も外れました。理由は単純で、AIのセルフチェックがカバーできるのはコンパイル・起動・ログまでで、「白い円が緑の四角に見える」ことは自分では見えない からです。結局どの言語でも、最後に画面を見て操作する検証が品質を決めていました。
教訓
今のAIに有利な言語とは「コンパイラが厳しい言語」ではなく、「学習データが豊富で、APIが枯れていて、検証ループを回しやすい言語」 である。そして言語が何であれ、ランタイムを実際に目で見て操作する検証を省略した品質保証は成立しない。
5. 注意点(この実験の限界)
- サンプル数は各言語1実装ずつ(n=1)です。試行ごとのブレは均せていません。
- お題がGUI/グラフィックス寄りなので、CLIツールやサーバ実装ではまったく別の結果になり得ます。
- 1つのAIモデル・1つのハーネス構成での結果です。「Rustが不利」という一般論ではなく、「通念ほどRustが有利でも、C++が不利でもなかった」 という報告として読んでください。
- マウス右/中ボタンのドラッグ操作(カメラ回転・パン)は検証ツールの制約で全言語未検証です。
まとめ
- 同一仕様のボクセルエディタを 6言語でAIに自走実装 させ、実機で全機能を操作して比較した。
- 事前予想は「Rustが1位、C++はバグだらけ」。結果は「C++が欠陥ゼロで1位、Rustはレンダリングバグ+機能不足で5位」。
- C#とJavaは、言語ではなく GUIフレームワークのフォーカストラバーサルという同じ罠 を踏んだ。
- AIの成果物品質を決めていたのは言語の安全性ではなく、学習データの量とAPIの枯れ具合。
- コンパイラもAIのセルフチェックも「画面に出るものが正しいか」までは保証しない。最後にランタイムを目で見て操作する検証 が、結局いちばん効く品質ゲートだった。





