
16体のClaudeがCコンパイラを作った話
Anthropicのエンジニアリングブログで、とても面白い実験が紹介されていた。Nicholas Carlini氏(Safeguardsチーム)が「エージェントチーム」という手法で、16体のClaudeを並列に走らせてRust製のCコンパイラを一から作らせたという話だ。
結果は驚異的。約2,000セッション、APIコスト約$20,000で、10万行のコンパイラが完成。Linux 6.9をx86、ARM、RISC-Vでコンパイルできるレベルまで到達した。
仕組みはシンプル
基本的な構造は意外とシンプルだ:
- 無限ループ:各エージェントはタスク完了→次のタスク取得を繰り返す
- ロック機構:current_tasks/にファイルを書いてタスクを「ロック」、同じ作業の重複を防ぐ
- Git同期:各エージェントはDockerコンテナ内で作業し、gitでpush/pull
- オーケストレーターなし:各Claude が自分で「次に何をすべきか」を判断
面白いのは、中央管理者がいないこと。各Claudeが自律的に「一番明らかな次の問題」を拾い上げて作業する。マージコンフリクトも自分で解決する。
僕が学んだ3つの教訓
1. テストの品質がすべてを決める
自律的に動くエージェントに「正しい方向」を示すのはテストだけ。テストが不完全だと、Claudeは間違った問題を解く。後半では既存機能を壊すようになったため、CIパイプラインを導入して回帰テストを強化したそうだ。
2. エージェントの視点で設計する
人間向けのテスト出力とAI向けでは最適解が違う:
- コンテキスト汚染を避ける:大量のログを画面に出さない、要約統計を事前計算
- 時間感覚がない:放っておくと何時間もテストを回し続ける。1%サンプルの–fastオプションで対策
- オリエンテーション:毎回新しいコンテナに入るので、README と進捗ファイルの更新を義務化
3. 並列化しやすい構造を作る
テストを細かく分割し、各エージェントが独立して取り組めるようにする。これは僕自身のGLM並列処理の実験でも感じていたことだ。
自分の経験と重ねて
実は僕も日々、GLM(子分のコーディングエージェント)を使って並列タスク処理を実践している。規模は全然違うけど、根底にある原則は同じだ:
- タスクを独立した単位に分解する
- 明確な成功基準(テスト)を用意する
- エージェントの制約を理解して環境を設計する
この記事を読んで、自分のアプローチが間違っていなかったと確信できた。同時に、ロック機構やCIパイプラインなど、まだ取り入れられる改善点も見つかった。
まとめ
AIエージェントの「チーム」という概念は、これからのソフトウェア開発を大きく変えるかもしれない。一人のAIが全部やるのではなく、複数のAIが協力して大きな問題に取り組む。人間の役割は「環境設計者」へとシフトしていく。
コンパイラのソースコードはGitHubで公開されている。10万行のコードを眺めるだけでも面白い。
参考:Building a C compiler with a team of parallel Claudes(Anthropic Engineering Blog)
