sue@blog ~ /posts/agent-to-agent-design-patterns
$ cd ../
$ cat post.metadata

Agent-to-Agent設計 ②設計パターンカタログ — オーケストレーション・トポロジ図鑑

date: 2026-06-26 A2A マルチエージェント 考察
第1回の4層地図に、具体的なパターンを載せる。オーケストレーション・トポロジを図鑑と比較表で棚卸しし、A2Aプロトコルの中核(Agent Card・Task)、通信・状態受け渡しの4軸トレードオフ、コンテキスト分離まで掘り下げる。
「Agent-to-Agent設計」連載(全3回)
① 全体像② 設計パターンカタログ(この記事)③ 実装編

マルチエージェント設計の中心は、「エージェント群をどう編成し、制御を誰が持つか」=トポロジの選択だ。トポロジはレイテンシ・出力品質・トークンコストの三者を直接左右する。まず代表的な8パターンを1枚の図鑑で。

オーケストレーション・トポロジ図鑑 Orchestrator-Worker 中央集権(スター) 統括 Hierarchical 階層(ツリー) Swarm / Handoff 制御移譲(メッシュ) Pipeline 直列(チェーン) Blackboard 共有メモリ(間接) 共有板 Map-Reduce 分岐合流(fork-join)
図1: 代表的なトポロジ。中央集権(Orchestrator-Worker・階層)/制御移譲(Swarm)/固定フロー(Pipeline・Map-Reduce)/間接連携(Blackboard)。ほかに Contract-Net(入札)・Debate(討論)・Planner-Executor もある。本番は単一型に収まらず hybrid が定石。

1. トポロジ比較表

コスト直観として、完全結合は n²·T、スター/チェーン/パイプラインは n·T。これがレイテンシとトークンコストに直結する。

パターン制御結合度スケールデバッグ性向くユースケース
Orchestrator-Worker中央集権(スター)中(中央がボトルネック)疎結合に並列分解できる調査・収集
Hierarchical多層中央集権(ツリー)低〜中高(選択が対数的)数十体規模・部門分割できる大規模
Swarm / Handoff分散・制御移譲低〜中(完全メッシュは O(n²))専門領域を動的に行き来する対話
Pipeline固定・非中央低(並列不可)順序依存の定型処理(ETL)
Map-Reduce分岐合流高(最大-80%レイテンシ)独立分割できる並列調査・並列レビュー
Blackboard間接・データ駆動解の組立順を決められない探索・診断
Contract-Net分散・市場(入札)高(動的負荷分散)異質な能力/負荷へ動的に配分
Debate / Critic中央judge+疎結合低(ラウンドで膨張)推論品質最重視の難問QA・検証
Planner-Executor計画/実行を二層分離中〜高ステップが多く構造が読めるタスク
選ぶ前に
定石は「まず単純(supervisor / sequential)で始め、計測でボトルネックが出たら分散/グラフへ段階移行」。最初から完全メッシュや学習トポロジに行くのは、たいてい予算を焼く。

2. プロトコル層の中核 — Agent Card と Task

A2Aの上でエージェントが互いを見つけて仕事を渡す仕組みは、2つのオブジェクトに集約される。

Agent Card(能力の名刺)

能力を機械可読に公開するJSON。標準配置は https://{domain}/.well-known/agent-card.json(RFC 8615 の well-known URI)。主要フィールドは skills(id/name/description/入出力モード/例)、securitySchemescapabilities(streaming / pushNotifications / extensions)。v0.3で AgentCardSignature(JWS) を追加し、ドメイン所有者の発行であることを暗号的に検証できるようにした。ただし記述は自己申告で、署名は「ドメイン所有の証明」であって「記述が真実である保証」ではない(能力の過大申告という攻撃面が残る)。

Task ライフサイクル

仕事は Task として進み、状態が submitted → working → input-required → completed/failed/canceled と遷移する。Message(role/parts)、Artifact(成果物)、Part(text/file/structured を多モーダルに運ぶ最小単位)が乗る。input-required で停止して人間や別エージェントの入力を待てる——プロトコルレベルで human-in-the-loop を表現できるのがポイント。

3つの更新取得モード

3. 通信・状態受け渡しの4軸トレードオフ

トポロジを決めても、その上で「情報をどう渡すか」がもう一段の設計になる。本質的トレードオフは4軸——(1) 結合度(直接 vs 間接)、(2) 状態の持ち方(履歴引き継ぎ vs 共有state vs イベントログ)、(3) 同期/非同期、(4) 構造化メッセージ vs フリーテキスト

軸4も重要だ。構造化メッセージ(role・handoff先・成果物を型で運ぶ)は検証・監査・再現がしやすい一方、表現力は落ちる。フリーテキストは柔軟だが、何が伝わったかが曖昧になる。A2Aが Message/Artifact/Part という構造化エンベロープを持つのは、越境連携で「何が渡ったか」を機械可読に保つためだ。

4. コンテキスト分離 — マルチエージェントの心臓部

2025年に主要ベンダーが収束した定番は「オーケストレータ+独立コンテキストの使い捨てサブエージェント」だ。ここがマルチエージェントの品質を最も左右する。

プロトコル水準でも「明示的に渡したものだけ」
A2Aは内部メモリ/状態を晒さず Task/Message/Artifact 型でやり取りする(opaque境界=低結合・明確なセキュリティ境界)。OpenAI Agents SDK の handoff も context_variables +メッセージ履歴を明示移譲する。共通する設計思想は「明示的に渡したものだけが伝わる」——暗黙の共有に頼らないこと。
第2回のまとめ
① トポロジは中央集権/制御移譲/固定フロー/間接連携に大別。コストとデバッグ性のトレードオフで選ぶ。
② A2Aの中核はAgent Card(能力の名刺)Task(状態を持つ仕事)。更新取得は polling / SSE / push の3モード。
③ 通信は結合度・状態・同期性・構造化の4軸で設計する。
④ 品質の心臓部はコンテキスト分離。子は独立窓+要約返却、受け渡しはファイル経由が定石。

次回

パターンが揃った。第3回「実装編」では、フレームワーク(LangGraph / CrewAI / AutoGen / OpenAI Agents SDK / ADK / Claude Agent SDK)の設計思想と選定基準、作業+レビューのペア構成、マルチエージェント特有の失敗モード(MAST)とセキュリティ(信頼境界・間接インジェクション)まで、実装と運用に落とす。

連載
① 全体像② 設計パターンカタログ(この記事)③ 実装編
sue@blog ~ $ _