複数の AI エージェントを同時に動かす方法
Claude Code、Codex、その他の AI コーディングエージェントを並行実行し、開発を高速化するためのステップバイステップガイドです。
1 度に 1 つの AI エージェントを動かすのが普通です。しかし、2 つでも 3 つでも 5 つでも、異なる作業を同時に進めることはできます。やり方、注意点、向いている場面を見ていきましょう。
なぜ複数のエージェントを動かすのか?
理由は単純に時間です。独立したタスクが 3 つあり、それぞれに 5 分のエージェント作業が必要なら、順番にやると 15 分かかります。並列なら 5 分です。
ただし、メリットは時間短縮だけではありません。
- 専門化 — エージェントごとに得意分野を分けられます。複雑なリファクタリングは Claude Code、素早い試作は Codex、機械的な作業はシェルスクリプト、という具合です。
- レビューの流れ — 1 つのエージェントがコードを書き、別のエージェントがレビューする。待ち時間のない即時フィードバックが得られます。
- コンテキスト分離 — 各エージェントは、自分のタスクに集中したクリーンな文脈を持てます。1 つの過負荷なコンテキストで全てを抱える必要がありません。
方法 1: 複数のターミナルウィンドウ
最も単純な方法です。複数のターミナルを開き、それぞれでエージェントを起動します。
Terminal 1:
cd ~/project
claude # 認証リファクタリング用の Claude Code を起動Terminal 2:
cd ~/project
claude # API テスト用の Claude Code を起動Terminal 3:
cd ~/project
codex # ドキュメント用の Codex を起動これは機能しますが、大きな欠点があります。1 度に見えるのは 1 つのターミナルだけで、画面を小さな分割ペインにするしかありません。Agent 1 が終わっても、そのターミナルに切り替えて確認しない限り分かりません。
方法 2: tmux の分割ペイン
tmux を使うと、1 つのウィンドウに複数の端末セッションを並べられます。
tmux new-session -s agents
# Ctrl+b % で縦分割
# Ctrl+b " で横分割別ウィンドウよりはましで、複数のエージェントを同時に見られます。ただし tmux のペインは固定グリッドです。3 つ以上になると、各ペインが小さすぎて読みづらくなります。さらに、エージェントの状態(作業中、待機中、完了)を視覚的に示してはくれません。
方法 3: キャンバスベースのワークスペース
2 つ以上のエージェントに最も有効なのは、視覚的なキャンバスワークスペースです。各エージェントを無限キャンバス上の別タイルに配置し、ワークフロー内での役割に応じて空間的に並べます。
ターミナルウィンドウや tmux より優れている点:
- 自由にサイズ変更できる — 今注目しているエージェントに広くスペースを割ける。
- エージェント状態の表示 — どれが作業中、待機中、完了かを一目で把握できる。
- ルーティング接続 — あるエージェントの出力を別のエージェントに自動で渡せる。
- 永続化 — レイアウトが保存される。閉じても開き直しても、すべて元の場所にある。
MadoHub はこのために作られています。無限キャンバス上で、ドラッグ可能でサイズ変更可能なタイルとしてターミナルベースのエージェントを実行し、リアルタイムで状態を検出します。
注意点
ファイル競合
2 つのエージェントが同じファイルを同時に編集すると、競合が発生します。並列実行する前に、別々のファイルやモジュールを担当していることを確認してください。
良い分割:
- Agent A が
src/auth/を担当し、Agent B がsrc/api/を担当する
悪い分割:
- Agent A と Agent B の両方が
src/config/database.tsを変更する
リソース消費
各 AI エージェントセッションは、RAM(ターミナル + エージェントプロセス)と API クレジットを消費します。Claude Code を 5 インスタンス同時に動かせば、API 利用も 5 倍になります。従量課金プランではクレジット消費に注意してください。
コンテキスト汚染
複数のエージェントが同じ git リポジトリで動いていると、あるエージェントの未コミット変更が、同じファイルを読む別のエージェントを混乱させることがあります。解決策は次の通りです。
- Git ブランチ — 各エージェントを別ブランチで動かす。
- 独立ディレクトリ — タスクが本当に独立しているなら、別コピーのプロジェクトを使う。
- 順次依存 — Agent B は Agent A が変更をコミットした後に開始する。
複数エージェントを使うべき場面
| シナリオ | 単一エージェント | 複数エージェント |
|---|---|---|
| 小さなバグ修正 1 件 | はい | 過剰 |
| 大きなリファクタリング + テスト | 場合による | はい - 実装とテストに分ける |
| 独立した複数機能 | いいえ | はい - 機能ごとに 1 エージェント |
| 実装後のコードレビュー | 逐次 | はい - パイプライン方式 |
| 未知のコードベース探索 | はい | 過剰 |
目安はこうです。仕事を明確な境界で独立した部分にきれいに分割できるなら、複数エージェントのほうが速いです。逆に、作業が深く絡み合っているなら、完全なコンテキストを持つ 1 つのエージェントのほうが向いています。
引き継ぎを自動化する
複数エージェント作業で最大の摩擦は、情報の手渡しです。Agent A が終わったあと、その要点を Agent B に伝えるには、テキストをコピーし、プロンプト用に整形し、貼り付ける必要があります。
自動ルーティングはこの摩擦をなくします。Agent A が終わると、システムがその完了を検出し、関連出力を抽出し、Agent B に適したプロンプトへ変換して渡します。
これで、手作業のマルチエージェントワークフローが、最小限の介入で動くパイプラインになります。セットアップしたら進捗を監視し、エージェントが方向性を必要とする時だけ介入すればよいのです。
始め方
- 現在のプロジェクトから、互いに独立した 2 つのタスクを選ぶ。
- 2 つのターミナルを左右に開く。
- それぞれでエージェントを起動する。
- 注意の向き方がどう変わるか観察する。1 つのタスクに深く集中するのではなく、2 つのタスクを横断して見るようになるはずです。
- 片方が終わったら、その要点をもう一方に手動で渡してみる。
これを実際にやってみると、自動ルーティングやビジュアルワークスペースがなぜ存在するのかが分かります。手動版を、ほぼ無意識で済む状態にするためです。