Claude Code サブエージェント:「並列」が本当に並列になる条件
1つのアシスタントメッセージ内で複数のAgent(エージェント)ツールを呼び出すと、それらは同時に実行される。ターンをまたいで1件ずつ呼び出すと直列実行になる。この違いを理解しているかどうかだけで、マルチエージェント設計の作り方が大きく変わる。
サブエージェントとは何か
サブエージェントは、親の会話とは独立したコンテキストウィンドウ・システムプロンプト・ツール・モデルを持つ、別会話のインスタンスである。Agentツール(旧名Task、v2.1.63でAgentへ改称)経由で起動し、.claude/agents/または~/.claude/agents/にMarkdown+YAMLフロントマター(=ファイル冒頭に置くメタデータ記述)として定義する。サブエージェントがさらに別のサブエージェントを生成するネスト(入れ子構造)は、明示的に禁止されている。
並列実行の条件
1つのアシスタント返信の中に複数のAgent呼び出しを並べると、実行基盤(ハーネス)がそれらを同時に走らせる。一方、ターンごとに1件ずつAgentを呼び出すと直列実行になり、並列にはならない。親からサブエージェントへ渡せる情報の経路はプロンプト文字列のみであり、会話のコンテキストそのものは共有されない。同時実行数の明確な上限値は公式文書に記載がなく、実務上の上限はレート制限(=一定時間内に処理できる回数の制限)とコンテキストウィンドウの大きさで決まる。
並列が有効なケース
互いに独立したタスク——例えばテスト実行・リンター(=コードの書き方をチェックするツール)・セキュリティスキャンを同時に走らせる場合には並列化が有効である。各サブエージェントの結果をサマリーだけで返せば、親のコンテキストが肥大化するのを防げる。ファイルの所有権がエージェント間で明確に分離されている場合も適している。Anthropicの事例では、並列化によって調査時間を最大90%短縮したと報告されている。
並列が逆効果になるケース
複数のエージェントが同一ファイルを書き換えると、競合状態(レースコンディション=複数の処理が同時に同じ資源を操作して結果が不定になる現象)が生じ、最後に書き込んだ内容だけが残ってしまう。BのタスクがAの出力を前提とするような依存関係がある場合は、並列ではなく直列で実行すべきである。同じ探索を重複して行うと、3つの類似したgrep(=文字列検索)が同じ情報をトークン3倍のコストで読むことになる。壁時計時間(=実際に経過する時間)はほぼ横ばいでも、トークンの総消費量はエージェント数倍に膨らむ点に注意する。
まとめ
並列サブエージェントが節約するのは壁時計時間であって計算量そのものではない。サブタスクが本当に独立している場合にのみ、並列化には価値がある。
出典・参考
- Subagents in the SDK — 公式ドキュメント
- Subagents – Parallelization — 公式ドキュメント
- What subagents inherit — 公式ドキュメント
- Multi-agent research system — Anthropic公式ブログ
- Forked Subagents — 記事
関連ノート
- Browser Automation MCP 2026 — Comparing Playwright, chrome-devtools and agent-browser
- A tidy-up of the Claude Agents specifications
- "how does <filepath> work?" — Claude Code's placeholder prompt
- Claude Code's CLAUDE.md hierarchy — which instructions reach how far
- Claude Mythos and Oceanus — the cutting edge and its "version for everyone"
- Claude Code orchestration glossary, 2026-05