📐

Claude16台で10万行のCコンパイラを作った論文を読んで、「いや答えあるじゃん」と思った話

に公開3

Anthropicのエンジニアリングブログに、とんでもない記事が出た。

https://www.anthropic.com/engineering/building-c-compiler

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の仕事。この分業がうまくいっている時が、一番速い。


このシリーズが初めての方はこちらから

https://zenn.dev/shio_shoppaize/articles/5fee11d03a11a1

GitHub

https://github.com/yohey-w/multi-agent-shogun


元記事: Building a C compiler with Claude as my coding agent — Nicholas Carlini, Anthropic

Discussion

藤田望藤田望

C言語の仕様は標準化されていて、GCCという正解実装がある。

GCC(gcc)はC言語の標準に必ずしも合致しないので正解実装は言い杉。

rana_kualurana_kualu

いまのところ性能的には論外ということです。

SQLiteのコンパイルには成功するものの、実際動かすとGCCに比べてSQLの実行が最大16万倍遅くなります。
また一部インクルードパスがハードコードされていたり、オプション-O3がただの飾りでなんにも機能していないなど、様々にツッコミがなされていたりします。

もちろん現時点での話であり、今後最適化が進んだりすればどうなるかはわかりませんけどね。