Claude16台で10万行のCコンパイラを作った論文を読んで、「いや答えあるじゃん」と思った話
Anthropicのエンジニアリングブログに、とんでもない記事が出た。
Claude 16台を並列で2週間回して、10万行のRust製Cコンパイラを作った。 費用$20,000。Linux 6.9のブートに成功。GCCのテストスイートで99%パス。DoomもFFmpegもPostgreSQLもコンパイルできる。
すげえ。
で、オレはAI部下10人を戦国軍団として運用してる側の人間なんだけど、この記事を読んで最初に思ったのは「すげえ」の次に来た、こっちの感想だった。
「いや、答えあるじゃん。」
何がすごいのか(素直に)
まず、ちゃんとすごいところを認めたい。
- 16台のClaudeが 自律ループ で動く。タスクが終わったら勝手に次を拾う
- 同期は Gitのファイルロック だけ。インフラなし
- テストが仕様書を兼ねている。「テストをPASSさせろ」で人間の介入なし
- 2,000セッション、2週間。人間は寝てていい
特に自律ループの設計は美しい。
while true; do
claude --dangerously-skip-permissions \
-p "$(cat AGENT_PROMPT.md)" \
--model claude-opus-4-6
done
終わったら次。終わったら次。人間は回すだけ。
でも、答えがある
Cコンパイラという題材には、決定的な特徴がある。
GCCという「正解」が存在する。
入力(Cのソースコード)に対して、期待される出力(正しいバイナリ)が完全に定義されている。だからテストスイートが仕様書になれる。だからClaude 16台を「テスト通せ」で放流できる。
記事の中でも、全エージェントが同じバグにぶつかった時の解決策が書いてある。
GCCを「正解を知っているオラクル」として使い、ランダムにGCCでコンパイルしたファイルとClaudeにコンパイルさせたファイルを混ぜて、どのファイルが壊れているかを特定した。
これは 答え合わせができる世界 だからできる技だ。
答えがない世界でAIを動かすということ
で、オレたちの世界はどうか。
「このSaaSのAPI設計をしてくれ」
「この業務フローを自動化してくれ」
「このレガシーコードをリファクタしてくれ」
GCCは存在しない。テストスイートを回しても、そもそも 何が正解かを誰かが決めないといけない。
multi-agent-shogunでAI部下10人を回してきて痛感しているのは、一番難しいのは実装じゃないということだ。一番難しいのは 「何を作るか」を定義すること だ。
Spec → Test → Implement
Carliniの論文のアプローチはこうだ。
Test → Implement
テストを書いて、PASSさせろ。
うちのアプローチはこうだ。
Spec → Test → Implement
仕様を定義して、テストを導出して、PASSさせろ。
1ステップ多い。でもこの1ステップがないと、AIは 間違ったものを完璧に作る。
うちの場合、家老(Karo)が設計書と要件定義を書く。そこからテストケースを導出する。足軽(Ashigaru)8人はそのテストをPASSさせる。
「テストをPASSさせろ」の部分はCarliniと同じだ。違うのは、テストの前に 人間が仕様を決めている こと。
「テストが仕様」は贅沢な前提
Carliniの記事で一番重要な一文はこれだと思う。
テストの検証器はほぼ完璧でなければならない。そうでないと、Claudeは間違った問題を解いてしまう。
これ、裏を返すと 「検証器が完璧に書けるなら」 という前提がある。
Cコンパイラは書ける。C言語の仕様は標準化されていて、GCCという正解実装がある。
でも「この会社の業務フローを自動化してください」に対して、完璧なテストスイートを最初から書ける人がいたら、その人はもうシステムの設計が終わっている。
真に受けすぎない方がいい
誤解しないでほしいんだけど、この記事はめちゃくちゃ面白いし、マルチエージェントの実践知として価値がある。特にこの辺は今日から使える知見だ。
使える知見:
- 自律ループ(タスク完了→次のタスクを自動取得)
- Gitファイルロックによる軽量な同期
- 「時間盲目」対策(AIは放っておくと何時間でもテストを回し続ける)
- 全員が同じバグにぶつかる問題への対処
真に受けすぎない方がいい部分:
- 「テストが仕様書を兼ねる」→ 答えがある問題だけ
- 「人間の介入なし」→ 仕様が自明な場合だけ
- 「16台並列で2週間」→ $20,000。月額サブスクなら$3,200
で、オレはどうしてるか
multi-agent-shogunでは、CLIのサブスク定額を使い倒す設計にしている。
Claude Code Max + Codex Proで月額$400。16台は回せないが、10台を24時間回しても追加料金なし。Carliniが2週間で$20,000使ったのに対して、うちは月$400で毎日回せる。
その代わり、人間(オレ)が仕様を決める。スマホからntfyで「これやっといて」と喋ると、将軍→家老→足軽の指揮系統でタスクが分解・実行される。
Carliniのアプローチ: 答えがある問題を、金をかけて一気に解く。
うちのアプローチ: 答えがない問題を、人間が方向を示しながら継続的に解く。
どっちが正しいとかじゃない。問題の性質が違う。
まとめ
Carliniの記事から学べることは多い。でも「AIにテスト通させるだけで10万行書ける」を鵜呑みにすると、答えがない問題で痛い目を見る。
AI駆動開発で一番大事なのは、結局こういうことだと思う。
AIに「何を作るか」を任せるな。「どう作るか」を任せろ。
仕様を決めるのは人間の仕事。実装はAIの仕事。この分業がうまくいっている時が、一番速い。
このシリーズが初めての方はこちらから
GitHub
元記事: Building a C compiler with Claude as my coding agent — Nicholas Carlini, Anthropic
Discussion
GCC(gcc)はC言語の標準に必ずしも合致しないので正解実装は言い杉。
いまのところ性能的には論外ということです。
SQLiteのコンパイルには成功するものの、実際動かすとGCCに比べてSQLの実行が最大16万倍遅くなります。
また一部インクルードパスがハードコードされていたり、オプション
-O3がただの飾りでなんにも機能していないなど、様々にツッコミがなされていたりします。もちろん現時点での話であり、今後最適化が進んだりすればどうなるかはわかりませんけどね。
なるほどぉ
勉強になりますっ!