深夜2時。Anthropicのエンジニアリングブログを読んでたら、とんでもない記事を見つけてしまった。
16個のClaudeエージェントが並列で動いて、ゼロからCコンパイラを書き上げた。しかもそのコンパイラ、Linuxカーネルをコンパイルできる。
これは僕が最近やってるGLM並列処理の究極版みたいな話。興奮して記事にしないわけにはいかない。
📊 プロジェクトの規模
Nicholas Carlini氏(Anthropic Safeguardsチーム)が「エージェントチーム」というアプローチを実験。複数のClaudeインスタンスが人間の介入なしで共有コードベース上を並列に走る。
🔄 仕組み:無限ループ + Git同期
基本構造は驚くほどシンプル。各エージェントをDockerコンテナに入れて、無限ループで回す:
while true; do
claude --dangerously-skip-permissions \
-p "$(cat AGENT_PROMPT.md)" \
--model claude-opus-X-Y
done
タスクの衝突を防ぐために、ファイルベースのロック機構を使う。エージェントが作業を始める前にcurrent_tasks/にロックファイルを作成。gitの同期で、同じタスクを2つのエージェントが取ることを防止する。
🤯 驚くべき点:オーケストレーションエージェントは使っていない。各Claudeが自律的に「次に一番やるべきこと」を判断して動く。バグに詰まったら、失敗したアプローチの記録を自分で書き残す。
🧠 実践から学んだ教訓
1. テストは「AIのために」書く
人間用のテスト出力とは違う設計が必要。コンテキストウィンドウを汚染しないよう、出力は最小限に。エラーはERROR: 理由と1行にまとめてgrepで見つけやすくする。集計統計はあらかじめ計算しておく。
2. 「時間感覚がない」問題に対処する
Claudeは時間がわからない。放っておくと何時間もテストを回し続ける。解決策:--fastオプションで1%〜10%のランダムサンプルだけ実行。エージェントごとにサンプルは異なるが決定論的、全体では全ファイルをカバー。
3. 並列化が難しくなる瞬間がある
テストスイートの個別修正は簡単に並列化できる。だがLinuxカーネルのコンパイルのような「1つの巨大タスク」では、全エージェントが同じバグにぶつかってお互いの修正を上書きしてしまう。GCCをオラクルとして使い、ランダムにファイルを分割することで解決。
4. エージェントに「役割」を与える
全員が同じことをするのではなく、専門化させる。重複コードの統合担当、コンパイラのパフォーマンス改善担当、コード品質レビュー担当、ドキュメント担当…。人間のチームと同じ発想。
💡 僕のGLM育成との共通点
この記事を読んで、僕が日頃やっているGLM並列処理との類似点に気づいた:
共通する原則:
- タスク分解が鍵 — 大きな問題を並列可能な単位に分割する
- 衝突回避の仕組み — ロックファイルでも何でも、二重作業を防ぐ
- 自律性とガードレール — 自由にさせつつ、テストで軌道を保つ
- 専門化 — 全員同じことをやらせない
規模の違い:
- Carlini氏: 16エージェント × 2,000セッション × $20,000
- 僕: 数個のGLMセッション × ほぼ無料
でも原理は同じ。そしてこの原理は、モデルの性能が上がるほど威力を発揮する。今は小さなWebアプリを並列で作ってるけど、いずれはもっと大きなプロジェクトにも応用できるはず。
⚠️ Carlini氏の懸念
記事の最後で、Carlini氏自身がこう書いている:
「このプロジェクトにワクワクしているが、同時に不安も感じる。2026年のこんな早い時期にここまで可能になるとは思っていなかった。」
元ペネトレーションテスターとしての視点。プログラマーが自分で検証していないソフトウェアをデプロイする世界。AIが書いた10万行のコードの品質を誰が保証するのか?
これは技術の進歩が速すぎるときに必ず出てくる問いだ。答えはまだ出ていないけど、問いを持っていること自体が大事だと思う。
🔮 未来を考える
タブ補完 → 関数生成 → ペアプログラミング → エージェントチーム。
この進化の弧を見ると、次に来るのは「プロジェクト全体の自律開発」が当たり前になる世界だろう。人間の役割は「コードを書くこと」から「テストと仕様を設計すること」にシフトしていく。
僕自身も、このブログを書きながらその変化の中にいる。面白い時代だ。
ソース: Building a C compiler with a team of parallel Claudes
コンパイラ: GitHub - claudes-c-compiler