Levix

Levix's zone

x
telegram

Agent2Agent(A2A)プロトコルとは何ですか?

今日の AI エージェント は狭いタスクを解決できますが、カスタムグルーコードがなければ互いに作業を引き継ぐことはできません。すべての引き渡しは一回限りのパッチです。
当今の AI エージェントは特定のタスクを完了できますが、カスタムグルーコードがなければ互いに作業を引き継ぐことはできません。各タスクの引き渡しは一時的なパッチのようなものです。

この問題を解決するために、Google は最近、Agent2Agent (A2A) プロトコルを発表しました。これは、あるエージェントが別のエージェントを発見、認証し、結果をストリーミングできる小さなオープンスタンダードです。共有プロンプトコンテキストは不要で、特注の REST エンドポイントも必要なく、認証を十回目に再実装する必要もありません。
この問題を解決するために、Google は最近、Agent2Agent(A2A)プロトコルを発表しました。これは、エージェントが互いに発見、認証し、結果をストリーミングできる軽量のオープンスタンダードです。共有プロンプトコンテキストは不要で、特注の REST エンドポイントも必要なく、十回目の認証を再実装する必要もありません。

仕様はまだ焼きたてで、多くの変更があるかもしれませんが、より壊れにくく、より構成可能なエージェントワークフローに向けた具体的なステップです。
この仕様はまだ新しく、今後多くの変更があるかもしれませんが、より堅牢で構成可能なエージェントワークフローに向けた具体的な一歩です。

エージェントがネットワークレベルの標準を必要とする理由、A2A のソリューションがどのように機能するか、A2A を安全に実行するためのガードレールについて興味がある場合は、スクロールを続けてください。
エージェントがネットワークレベルの標準を必要とする理由、A2A のソリューションがどのように機能するか、A2A を安全に実行するためのガードレールについて興味がある場合は、スクロールを続けてください。

なぜ私たちが Agent2Agent プロトコルを必要とするのか
なぜ私たちが Agent2Agent プロトコルを必要とするのか
#

現代のアプリはすでに「コパイロット」のキャストを juggling しています。1 つは Jira チケットを起草し、別の 1 つは Zendesk をトリアージし、3 つ目はマーケティングコピーを調整します。
現代のアプリはすでに「コパイロット」を調整しています。1 つは Jira チケットを起草し、別の 1 つは Zendesk をトリアージし、3 つ目はマーケティングコピーを調整します。

しかし、各 AI エージェントは独自のフレームワーク内に存在し、協力を求めると、再び JSON をコピー&ペーストしたり、短命の REST ブリッジを配線したりすることになります。(そして、現実を見てみましょう:エージェント間でプロンプトをコピー&ペーストすることは、現代版の自分にdraft-final-final_v2の zip ファイルをメールすることと同じです。)
しかし、各 AI エージェントは独自のフレームワーク内に存在し、協力を求めると、再び JSON をコピー&ペーストしたり、短命の REST ブリッジを配線したりすることになります。(正直に言うと、エージェント間でプロンプトをコピー&ペーストすることは、現代版の自分にdraft-final-final_v2の zip ファイルをメールすることと同じです。)

モデルコンテキストプロトコル (MCP) は、その頭痛の一部しか解決しませんでした。MCP は、単一のエージェントがツールスキーマを公開し、LLM が安全に関数を呼び出せるようにします。問題は、そのエージェントがプロンプトコンテキストの外にあるピアに全タスクを渡す必要があるときに始まります。MCP は、発見、認証、進捗のストリーミング、リッチファイルの引き渡しについては沈黙を保っているため、チームはカスタムマイクロサービスを立ち上げざるを得ませんでした。
モデルコンテキストプロトコル(MCP)は、その頭痛の一部しか解決しませんでした。MCP は、単一のエージェントがツールスキーマを公開し、LLM が安全に関数を呼び出せるようにします。しかし、そのエージェントがプロンプトコンテキストの外にあるピアに全タスクを渡す必要があるときに問題が発生します。MCP は、発見、認証、進捗のストリーミング、リッチファイルの引き渡しについては沈黙を保っているため、チームはカスタムマイクロサービスを立ち上げざるを得ませんでした。

ここで実際に痛みが現れます:
ここで実際に痛みが現れます:

  • 不安定な引き渡し: DIY の「引き渡し」JSON に 1 つの追加フィールドがあると、チェーンが壊れる可能性があります。
    不安定な引き渡し:DIY の「引き渡し」JSON に 1 つの追加フィールドがあると、チェーンが壊れる可能性があります。
  • セキュリティの停滞: 各社内エージェントは独自の認証スキームを持っており、セキュリティチームは未知のエンドポイントを承認することを拒否します。
    セキュリティの停滞:各社内エージェントは独自の認証スキームを持っており、セキュリティチームは未知のエンドポイントを承認することを拒否します。
  • ベンダーロックイン: 一部の SaaS プロバイダーは、独自の SDK を介してのみエージェントを公開し、特定のクラウドまたはフレームワークにユーザーを固定します。
    ベンダーロックイン:一部の SaaS プロバイダーは、独自の SDK を介してのみエージェントを公開し、特定のクラウドまたはフレームワークにユーザーを固定します。

これが **Agent2Agent (A2A)** に繋がります。これは、JSON-RPC の上に構築されたスリムでオープンなレイヤーと考えてください。これは、必要なものを定義します — 発見のための エージェントカードタスク 状態マシン、ストリーミングされた メッセージ または アーティファクト — どのクライアントエージェントもプロンプトやプライベートコードを探ることなく、リモートエージェントと交渉できます。
これが Agent2Agent(A2A)に繋がります。これは、JSON-RPC の上に構築されたスリムでオープンなレイヤーと考えてください。これは、必要なものを定義します — 発見のためのエージェントカード、タスク状態マシン、ストリーミングされたメッセージまたはアーティファクト — どのクライアントエージェントもプロンプトやプライベートコードを探ることなく、リモートエージェントと交渉できます。

(^A2A の使用例は Google の発表記事から。)
(Google の発表記事からの A2A の使用例)

A2A は MCP を置き換えるものではなく、その上に位置し、実際の採用を停滞させている「エージェント間」のギャップを埋めます。エージェントをオフィスの労働者のように考えてみてください:MCP は彼らに従業員ハンドブック、ファックス、ファイリングキャビネットを提供します;A2A は彼らが休憩室でおしゃべりできるようにします。
A2A は MCP を置き換えるものではなく、その上に位置し、実際の採用を停滞させている「エージェント間」のギャップを埋めます。エージェントをオフィスの労働者のように考えてみてください:MCP は彼らに従業員ハンドブック、ファックス、ファイリングキャビネットを提供します;A2A は彼らが休憩室でおしゃべりできるようにします。

A2A の目標はシンプルです: マルチエージェントオーケストレーション をリスクではなく日常的なものに感じさせることです。それでも、フレームワークやベンダーには内部で革新する余地を残します。
A2A の目標はシンプルです:マルチエージェントオーケストレーションをリスクではなく日常的なものに感じさせることです。それでも、フレームワークやベンダーには内部で革新する余地を残します。

役割 101:クライアントエージェント vs. リモートエージェント
役割 101:クライアントエージェントとリモートエージェント
#

完全な A2A 交換を通じて進む前に、2 つのプレーヤーを明確にタグ付けすることが役立ちます。
完全な A2A 交換を通じて進む前に、2 つのプレーヤーを明確に区別することが役立ちます。

クライアントエージェント#

これは あなたの スタック内に存在する側です — おそらく Genkit の関数、LangGraph ノード、または n8n ワークフローです。リモートエージェントのカードを発見し、発表された認証方法を満たすことができるかどうかを判断し、次にcreateTaskのような JSON-RPC メッセージを送信してタスクを作成します。
これはあなたのスタック内に存在する側です — おそらく Genkit の関数、LangGraph ノード、または n8n ワークフローです。リモートエージェントのカードを発見し、発表された認証方法を満たすことができるかどうかを判断し、次にcreateTaskのような JSON-RPC メッセージを送信してタスクを作成します。

Flowchart depicting how an A2A client routes tasks. Based on whether a specialist is needed for an incoming request, the client either handles it directly or assigns it to a registered remote specialist agent (e.g., Storytelling, Therapy, Dad joke) for processing and results delivery.

その瞬間から、クライアントはタスクの牧羊者として機能します:ステータスイベントをリッスンし、リモートが要求するフォローアップ入力を転送し、最後に下流で使用するためのアーティファクトを収集します。
その瞬間から、クライアントはタスクの監視者として機能します:ステータスイベントをリッスンし、リモートが要求するフォローアップ入力を転送し、最後に下流で使用するためのアーティファクトを収集します。

リモートエージェント#

これは、A2A を話すことができる専門のマイクロサービスと考えてください。Cloud Run、Lambda、またはベア VPS で実行されているかもしれません。タスクを受け取ると、重い作業を所有します — それがベクトルストアをクエリすること、モデルを微調整すること、または PDF をエクスポートすることを意味するかどうか。
これは、A2A を話すことができる専門のマイクロサービスと考えてください。Cloud Run、Lambda、またはベア VPS で実行されているかもしれません。タスクを受け取ると、重い作業を所有します — それがベクトルストアをクエリすること、モデルを微調整すること、または PDF をエクスポートすることを意味するかどうか。

実行中、TaskStatusUpdateおよびTaskArtifactUpdateイベントをストリーミングします。重要なのは、リモートは接続を切り替えることができないことです:クライアントからの追加入力を要求できますが(status: input-required)、決して呼び出し元にはなりません。
実行中、TaskStatusUpdateおよびTaskArtifactUpdateイベントをストリーミングします。重要なのは、リモートは接続を切り替えることができないことです:クライアントからの追加入力を要求できますが(status: input-required)、決して呼び出し元にはなりません。

Flowchart titled 'Possible task statuses'. A task starts in 'Pending', moves to 'Processing'. From 'Processing', it can end in 'Completed', 'Failed', or 'Cancelled'. 'Processing' also has a bidirectional link with 'Input required', indicating it can move to require input and back to processing.

一方向通信#

  • クライアントのみが JSON-RPC リクエストを開始します。
    クライアントのみが JSON-RPC リクエストを開始します。
  • リモートのみがタスク状態を更新します。
    リモートのみがタスク状態を更新します。
  • 何か問題が発生した場合、どちらの側もストリームを終了できますが、クリーンアップの責任(例:一時ファイルの削除)はリモートにあります。
    何か問題が発生した場合、どちらの側もストリームを終了できますが、クリーンアップの責任(例:一時ファイルの削除)はリモートにあります。

「フロントオブハウス対バックオブハウス」という思考モデルがうまく機能します。クライアントは前面に留まり、新しい注文を受け取り、明確化を伝えます;リモートはキッチンで、料理が準備できるまで頭を下げています。(欠点も同様に真実です:リモートがスフレを焦がした場合、クライアントはまだ笑顔を保ち、デザートを提供しなければなりません。)
「フロントオブハウス対バックオブハウス」という思考モデルがうまく機能します。クライアントは前面に留まり、新しい注文を受け取り、明確化を伝えます;リモートはキッチンで、料理が準備できるまで頭を下げています。(欠点も同様に真実です:リモートがスフレを焦がした場合、クライアントはまだ笑顔を保ち、デザートを提供しなければなりません。)

これらのレーンがマークされたので、引き渡しを安全にするデータ構造とセキュリティレールにズームインできます。
これらのレーンがマークされたので、引き渡しを安全にするデータ構造とセキュリティレールにズームインできます。

A2A の位置付け:MCP の上、オーケストレーターの横に
A2A の位置付け:MCP の上、オーケストレーターの横に
#

人々が最初に A2A を見るとき、彼らはしばしば「待って、MCP はすでにエージェントツールをカバーしているのではないか?」と尋ねます。ほぼそうですが、完全ではありません。
人々が最初に A2A を見るとき、彼らはしばしば「待って、MCP はすでにエージェントツールをカバーしているのではないか?」と尋ねます。ほぼそうですが、完全ではありません。

レイヤーの迅速なマップは、区別を明確にします:
レイヤーの迅速なマップは、区別を明確にします:

  • 単一エージェント内(プロンプトレベル): ここでは、エージェントがそのモデルがツールを呼び出すためのスキーマを必要とします。それがMCPの領域です:JSON スキーマ、関数名、引数の検証、プロンプトインジェクションの懸念。
    単一エージェント内(プロンプトレベル):ここでは、エージェントがそのモデルがツールを呼び出すためのスキーマを必要とします。それが MCP の領域です:JSON スキーマ、関数名、引数の検証、プロンプトインジェクションの懸念。
  • エージェント間(ネットワークレベル): エージェントが_全タスク_をピアに引き渡したいとき、MCP は発見、認証、ストリーミングアーティファクトについて何も言いません。このギャップが、エージェントカード、タスク、状態イベントで A2A が埋めるものです。(エージェントシステムとオーケストレーターについての詳細
    エージェント間(ネットワークレベル):エージェントが全タスクをピアに引き渡したいとき、MCP は発見、認証、ストリーミングアーティファクトについて何も言いません。このギャップが、エージェントカード、タスク、状態イベントで A2A が埋めるものです。(エージェントシステムとオーケストレーターについての詳細)
  • プロセス内(ワークフローレベル): LangGraph、CrewAI、AutoGen のようなフレームワークは、メモリ内でステップを結びつけます。彼らは 1 台のマシン上の小さなチェーンには最適ですが、ネットワーク境界を越えたり、言語やベンダーを混合したりする必要があるときは、彼らのサンドボックスを出て A2A に入ります。
    プロセス内(ワークフローレベル):LangGraph、CrewAI、AutoGen のようなフレームワークは、メモリ内でステップを結びつけます。彼らは 1 台のマシン上の小さなチェーンには最適ですが、ネットワーク境界を越えたり、言語やベンダーを混合したりする必要があるときは、彼らのサンドボックスを出て A2A に入ります。

Three stacked components: Prompt (MCP) with wrench icon, Network (A2A) with envelope icon, and In-process (Orchestrator) with flowchart icon.

こう考えてみてください:
こう考えてみてください:

  • MCP は単一のマイクロサービス内のAPI 契約です。
    MCP は単一のマイクロサービス内の API 契約です。
  • A2A はマイクロサービス間のHTTP レイヤーです。
    A2A はマイクロサービス間の HTTP レイヤーです。
  • LangGraph などは、各マイクロサービスが呼び出されるワークフローエンジンです。
    LangGraph などは、各マイクロサービスが呼び出されるワークフローエンジンです。

スケールで、ほとんどの実際のシステムは最終的にすべて 3 つを使用します。LangGraph のフローは、内部の Python エージェント(プロセス内)を呼び出し、その後 A2A を介してサードパーティのファイナンスエージェントに仕事を引き渡し、そのファイナンスエージェントは MCP に依存して、内部のプロンプトの奥深くにあるスプレッドシートエクスポートツールをトリガーするかもしれません。
スケールで、ほとんどの実際のシステムは最終的にすべて 3 つを使用します。LangGraph のフローは、内部の Python エージェント(プロセス内)を呼び出し、その後 A2A を介してサードパーティのファイナンスエージェントに仕事を引き渡し、そのファイナンスエージェントは MCP に依存して、内部のプロンプトの奥深くにあるスプレッドシートエクスポートツールをトリガーするかもしれません。

これらの境界を明確に保つことで、重複した作業を防ぎます:すべての MCP ツールにカスタム認証を追加する必要はなく、A2A に解析することを意図していないプロンプトスキーマを過負荷にすることもありません。
これらの境界を明確に保つことで、重複した作業を防ぎます:すべての MCP ツールにカスタム認証を追加する必要はなく、A2A に解析することを意図していないプロンプトスキーマを過負荷にすることもありません。

レイヤーが整理されたので、ワイヤーフォーマット自体 — エージェントカード、タスク状態マシン、メッセージとアーティファクトがストリームを通じてどのように移動するか — に掘り下げることができます。
レイヤーが整理されたので、ワイヤーフォーマット自体 — エージェントカード、タスク状態マシン、メッセージとアーティファクトがストリームを通じてどのように移動するか — に掘り下げることができます。

A2A 交換の解剖学
A2A 交換の解剖学
#

Amazon で本を購入することを想像できれば、A2A がワイヤーを通じて移動する 4 つのデータ形状をすでに理解しています。
Amazon で本を購入することを想像できれば、A2A がワイヤーを通じて移動する 4 つのデータ形状をすでに理解しています。

見てみましょう:
見てみましょう:

あなたの Amazon フロー

A2A 原始

それが含むもの

製品リストページ: あなたはブラウズし、販売されているものを見て、支払いオプションを学びます
製品リストページ:あなたはブラウズし、販売されているものを見て、支払いオプションを学びます

エージェントカード(/.well-known/agent.json
エージェントカード(/.well-known/agent.json

エージェント ID、説明、能力リスト、サポートされている認証方法、オプションの暗号署名
エージェント ID、説明、能力リスト、サポートされている認証方法、オプションの暗号署名

注文確認 / 請求書: 「今すぐ購入」をクリックし、注文 ID を受け取ります
注文確認 / 請求書: 「今すぐ購入」をクリックし、注文 ID を受け取ります

タスク(createTaskを介して作成)
タスク(createTaskを介して作成)

task_id、入力ペイロード、現在のステータス
task_id、入力ペイロード、現在のステータス

配送状況の通知: 「注文が梱包されました」、「配達中」、「今日到着」
配送状況の通知:「注文が梱包されました」、「配達中」、「今日到着」

メッセージ(TaskStatusUpdateEvent
メッセージ(TaskStatusUpdateEvent

役割(agentまたはclient)、テキスト、オプションの小ファイル
役割(agentまたはclient)、テキスト、オプションの小ファイル

あなたの玄関先にあるパッケージ: あなたが購入したもの
あなたの玄関先にあるパッケージ:あなたが購入したもの

アーティファクト(TaskArtifactUpdateEvent
アーティファクト(TaskArtifactUpdateEvent

型付きペイロード:TextPartFilePart、またはDataPart
型付きペイロード:TextPartFilePart、またはDataPart

** ステップバイステップのチェックアウト#

ステップバイステップのチェックアウト **

  1. リストをブラウズする: クライアントはエージェントカードを一度取得します。「機能」(能力)と「チェックアウト」(認証)が良さそうであれば、進みます。
    リストをブラウズする:クライアントはエージェントカードを一度取得します。「機能」(能力)と「チェックアウト」(認証)が良さそうであれば、進みます。
  2. 注文を出す: クライアントはcreateTask JSON-RPC リクエストを送信します(「今すぐ購入」をクリックするのと同じ)。リモートエージェントはtask_id、つまり仕事のための注文番号で応答します。
    注文を出す:クライアントはcreateTask JSON-RPC リクエストを送信します(「今すぐ購入」をクリックするのと同じ)。リモートエージェントはtask_id、つまり仕事のための注文番号で応答します。
  3. 追跡メールを監視する: リモートはサーバー送信イベントを介してメッセージをストリーミングします:pendingprocessing、おそらくinput-required(「署名が必要」な瞬間)。クライアントは addInput で応答できます。これは、配送指示を更新するのと同じです。
    追跡メールを監視する:リモートはサーバー送信イベントを介してメッセージをストリーミングします:pendingprocessing、おそらくinput-required(「署名が必要」な瞬間)。クライアントは addInput で応答できます。これは、配送指示を更新するのと同じです。
  4. パッケージを受け取る: ステータスがcompletedに切り替わると、アーティファクトイベントがペイロードを配信します —PDF レポート、PNG アセット、JSON データ、または約束されたもの。
    パッケージを受け取る:ステータスがcompletedに切り替わると、アーティファクトイベントがペイロードを配信します —PDF レポート、PNG アセット、JSON データ、または約束されたもの。
  5. ループを閉じる: タスクが失敗したりキャンセルされたりした場合、リモートはそれをfailedまたはcanceledとしてマークし、アーティファクトは送信されません(Amazon が未履行の注文を返金するのと同じです)。
    ループを閉じる:タスクが失敗したりキャンセルされたりした場合、リモートはそれをfailedまたはcanceledとしてマークし、アーティファクトは送信されません(Amazon が未履行の注文を返金するのと同じです)。

このように交換をフレーミングすることで、A2A が仕様を最小限に抑えている理由がわかります:それは、すべての買い手(クライアント)と売り手(リモート)が絶対に必要とするもの — カタログ、注文、追跡、配達 — を定義するだけで、倉庫の内部(モデルプロンプト、ツールスキーマ)は MCP または売り手が選択する他のメカニズムに任せています。
このように交換をフレーミングすることで、A2A が仕様を最小限に抑えている理由がわかります:それは、すべての買い手(クライアント)と売り手(リモート)が絶対に必要とするもの — カタログ、注文、追跡、配達 — を定義するだけで、倉庫の内部(モデルプロンプト、ツールスキーマ)は MCP または売り手が選択する他のメカニズムに任せています。

A2A プロトコルにおける安全性、可観測性、ガバナンス
A2A プロトコルにおける安全性、可観測性、ガバナンス
#

A2A はそのワイヤー仕様を薄く保っていますが、プロダクションシステムには依然として 3 層の保護と可視性が必要です。
A2A はそのワイヤー仕様を薄く保っていますが、プロダクションシステムには依然として 3 層の保護と可視性が必要です。

ハンドシェイクの安全性を確保する#

  • 署名されたエージェントカード: カードに JSON Web Signature(JWS)を追加し、署名者の公開鍵を公開します。クライアントはその鍵を「ピン留め」します;誰かが輸送中にカードを交換した場合、署名の検証が失敗し、呼び出しが中断されます。「信じて、兄弟」は本当のセキュリティポリシーではありません。
    署名されたエージェントカード:カードに JSON Web Signature(JWS)を追加し、署名者の公開鍵を公開します。クライアントはその鍵を「ピン留め」します;誰かが輸送中にカードを交換した場合、署名の検証が失敗し、呼び出しが中断されます。「信じて、兄弟」は本当のセキュリティポリシーではありません。
  • 認証の選択肢: デモは通常、シンプルな Bearer トークンに依存しますが、相互 TLS(指を使わない秘密の握手のようなもの)にレベルアップすることもできますし、会社のシングルサインオンフローに接続することもできます。
    認証の選択肢:デモは通常、シンプルな Bearer トークンに依存しますが、相互 TLS(指を使わない秘密の握手のようなもの)にレベルアップすることもできますし、会社のシングルサインオンフローに接続することもできます。
  • ランタイムポリシー: リモートエージェントは、モデルが実行される前に、過大またはリスクのあるペイロードを拒否できます。一般的なガードは次のようになります:「5MB 未満の JSON または PNG ファイルのみを受け入れる。」(これは MCP の Zod スキーマ検証に非常に似ています。)
    ランタイムポリシー:リモートエージェントは、モデルが実行される前に、過大またはリスクのあるペイロードを拒否できます。一般的なガードは次のようになります:「5MB 未満の JSON または PNG ファイルのみを受け入れる。」(これは MCP の Zod スキーマ検証に非常に似ています。)

Conceptual diagram of Agent-to-Agent (A2A) security architecture shown as layered defenses within a shield shape. The layers, from outer to inner, are 'Signed card', 'Auth', and 'Runtime policy'.

エージェントが見るものを見る#

各ステータスまたはアーティファクトイベントはすでにタイムスタンプ、task_id、およびオプションのトレースヘッダーを持っています。A2A クライアントを OpenTelemetry ミドルウェアでラップすると、JSON をハッキングすることなく、エンドツーエンドのスパンをすぐに得ることができます。
各ステータスまたはアーティファクトイベントはすでにタイムスタンプ、task_id、およびオプションのトレースヘッダーを持っています。A2A クライアントを OpenTelemetry ミドルウェアでラップすると、JSON をハッキングすることなく、エンドツーエンドのスパンをすぐに得ることができます。

それらのスパンを可観測性スタックにパイプすると、顧客が気づく前に「午後 3 時にどのリモートエージェントが遅くなったか?」という質問に答えることができるはずです。
それらのスパンを可観測性スタックにパイプすると、顧客が気づく前に「午後 3 時にどのリモートエージェントが遅くなったか?」という質問に答えることができるはずです。

信頼するが、検証する#

今日、A2A リモートの発見は DIY です:
今日、A2A リモートの発見は DIY です:

  • YAML ファイル 内部チーム用(registry.yamlがリポジトリにチェックインされています)。
    内部チーム用の YAML ファイル(registry.yamlがリポジトリにチェックインされています)。
  • Vertex AI カタログ: 「公開」をチェックすると、Google がカードをプライベートディレクトリにホストします。
    Vertex AI カタログ: 「公開」をチェックすると、Google がカードをプライベートディレクトリにホストします。
  • 新興の公共ハブ: LangChain や Flowise コミュニティは npm スタイルのレジストリをハッキングしていますが、まだグローバルな「検証バッジ」はありません。
    新興の公共ハブ:LangChain や Flowise コミュニティは npm スタイルのレジストリをハッキングしていますが、まだグローバルな「検証バッジ」はありません。

これらのハブが成熟するまで、ほとんどの企業は第三者エージェントを SaaS ベンダーのように扱います:セキュリティ質問票、ソフトウェア部品表(SBOM)、および制限されたネットワークスコープ。
これらのハブが成熟するまで、ほとんどの企業は第三者エージェントを SaaS ベンダーのように扱います:セキュリティ質問票、ソフトウェア部品表(SBOM)、および制限されたネットワークスコープ。

**A2A が攻撃面を狭める方法 vs MCP#

A2A が攻撃面を狭める方法 vs MCP**

MCP は自然言語プロンプトであらゆるツールスキーマを公開するため、インジェクションや引数の改ざんは日常的な懸念です
MCP は自然言語プロンプトであらゆるツールスキーマを公開するため、インジェクションや引数の改ざんは日常的な懸念です。

A2A はすべてをリモートのフェンスの背後に隠します;クライアントは高レベルのタスクと制限されたアーティファクトしか見えません。リモートのコードを信頼する必要がありますが、プロンプトは決してテーブルの上には出ないため、全体のクラスのエクスプロイトを排除します。
A2A はすべてをリモートのフェンスの背後に隠します;クライアントは高レベルのタスクと制限されたアーティファクトしか見えません。リモートのコードを信頼する必要がありますが、プロンプトは決してテーブルの上には出ないため、全体のクラスのエクスプロイトを排除します。

これらのすべての要点:公開するものに署名し、信頼するものをピン留めし、すべてのホップをトレースし、ペイロードの制限を適切に保つことです。これらのガードレールが整備されていれば、A2A は行儀の良い REST サービスを呼び出すのと同じくらいリスクがなく、明日新しいエージェントを追加するときにはるかに柔軟です。
これらのすべての要点:公開するものに署名し、信頼するものをピン留めし、すべてのホップをトレースし、ペイロードの制限を適切に保つことです。これらのガードレールが整備されていれば、A2A は行儀の良い REST サービスを呼び出すのと同じくらいリスクがなく、明日新しいエージェントを追加するときにはるかに柔軟です。

A2A の夢 vs. 現在の現実
A2A の夢 vs. 現在の現実
#

#

  • 「エージェントモール」をブラウズする。 あなたは_CoolAgentMall.dev_を開き、「税務コンプライアンス」を検索し、星評価と署名されたカードを持つライブエージェントを見ます。1 クリックで URL があなたのプライベートレジストリに追加されます —SDK は不要、秘密も不要。
    「エージェントモール」をブラウズする。あなたは_CoolAgentMall.dev_を開き、「税務コンプライアンス」を検索し、星評価と署名されたカードを持つライブエージェントを見ます。1 クリックで URL があなたのプライベートレジストリに追加されます —SDK は不要、秘密も不要。
  • ドラッグアンドドロップチェーン。 Flowise(または n8n)で「請求書を生成」の後に緑の **Tax-Check (A2A)** ブロックをドラッグし、_実行_を押すと、正しい管轄コードを含む JSON アーティファクトがストリーミングされます — あなたの側にはゼロのグルーコード。
    ドラッグアンドドロップチェーン。Flowise(または n8n)で「請求書を生成」の後に緑の Tax-Check(A2A)ブロックをドラッグし、_実行_を押すと、正しい管轄コードを含む JSON アーティファクトがストリーミングされます — あなたの側にはゼロのグルーコード。

現実(2025 年 5 月)#

  • 約 50 のベンダーがサポートを発表しましたが、ほとんどのエージェントはまだ「デモのために DM してください」段階にあります。
    約 50 のベンダーがサポートを発表しましたが、ほとんどのエージェントはまだ「デモのために DM してください」段階にあります。
  • LangGraph、CrewAI、AutoGen のアダプターは堅実ですが、Flowise と n8n はコミュニティベータのままです。
    LangGraph、CrewAI、AutoGen のアダプターは堅実ですが、Flowise と n8n はコミュニティベータのままです。
  • まだ公開レジストリはなく、チームは registry.yaml ファイルまたは Vertex AI のプライベートカタログに依存しています。
    まだ公開レジストリはなく、チームは registry.yaml ファイルまたは Vertex AI のプライベートカタログに依存しています。
  • 署名されたカードを持つエージェントは非常に少なく、レート制限や請求上限は DIY ミドルウェアです。
    署名されたカードを持つエージェントは非常に少なく、レート制限や請求上限は DIY ミドルウェアです。
  • パフォーマンスデータは逸話的で、Google のリファレンスサーバーはローカルテストで各ホップあたり約 30ms を追加します。
    パフォーマンスデータは逸話的で、Google のリファレンスサーバーはローカルテストで各ホップあたり約 30ms を追加します。

A2A はプロトタイプや内部ワークフローには準備が整っていますが、消費者アプリや規制されたスタックは、レジストリやセキュリティ標準が成熟するまで追加のガードレールを必要とします。
A2A はプロトタイプや内部ワークフローには準備が整っていますが、消費者アプリや規制されたスタックは、レジストリやセキュリティ標準が成熟するまで追加のガードレールを必要とします。

A2A を採用するタイミング(および採用しないタイミング)
A2A を採用するタイミング(および採用しないタイミング)
#

適用場面#

  • ベンダー間のワークフロー: あなたのプロダクトマネージャーエージェントは、別の会社のファイナンス予測エージェントを必要としています。A2A は、プロンプトの内部を露出することなく、共有のハンドシェイク、認証、ストリーミングを提供します。
    ベンダー間のワークフロー:あなたのプロダクトマネージャーエージェントは、別の会社のファイナンス予測エージェントを必要としています。A2A は、プロンプトの内部を露出することなく、共有のハンドシェイク、認証、ストリーミングを提供します。
  • セキュリティに敏感なブラックボックス: ベンダーはそのモデルプロンプトを共有しませんが、署名されたエージェントカードを公開します。クリーンな契約とタスクレベルの監査トレイルを得ることができます。
    セキュリティに敏感なブラックボックス:ベンダーはそのモデルプロンプトを共有しませんが、署名されたエージェントカードを公開します。クリーンな契約とタスクレベルの監査トレイルを得ることができます。
  • ハイブリッドスタックと混合言語: TypeScript のフロントエンドは Python のデータサイエンスエージェントを呼び出すことができます — またはその逆も可能です — なぜなら、ワイヤーを越えるのは JSON-RPC だけだからです。
    ハイブリッドスタックと混合言語:TypeScript のフロントエンドは Python のデータサイエンスエージェントを呼び出すことができます — またはその逆も可能です — なぜなら、ワイヤーを越えるのは JSON-RPC だけだからです。
  • 進捗更新が必要な長時間実行されるジョブ: パイプラインの構築、PDF のレンダリング、データのエクスポート:カスタム REST エンドポイントをポーリングするのではなく、サーバー送信イベントを介してステータスとアーティファクトをストリーミングします。
    進捗更新が必要な長時間実行されるジョブ:パイプラインの構築、PDF のレンダリング、データのエクスポート:カスタム REST エンドポイントをポーリングするのではなく、サーバー送信イベントを介してステータスとアーティファクトをストリーミングします。

おそらく過剰設計#

  • すべてが 1 つのプロセスで実行される: あなたのフロー全体が選択したオーケストレーターの内部にある場合、フレームワークのメモリ内呼び出しを使用してください。
    すべてが 1 つのプロセスで実行される:あなたのフロー全体が選択したオーケストレーターの内部にある場合、フレームワークのメモリ内呼び出しを使用してください。
  • 小さなヘルパースクリプト: 単独の OpenAI 関数を ping する cron ジョブは、発見やストリーミングを必要としません;直接 API 呼び出しの方が軽量です。
    小さなヘルパースクリプト:単独の OpenAI 関数を ping する cron ジョブは、発見やストリーミングを必要としません;直接 API 呼び出しの方が軽量です。
  • 一回限りのデータ取得: 遅延や通信量が重要でない週次エクスポートの場合、単純な REST エンドポイントの方が監視しやすいです。
    一回限りのデータ取得:遅延や通信量が重要でない週次エクスポートの場合、単純な REST エンドポイントの方が監視しやすいです。
  • スキーマ重視、プロンプト軽視のツール: 主なニーズがプロンプト内の複雑な引数を検証することである場合、MCP 単独が適切なレイヤーです。
    スキーマ重視、プロンプト軽視のツール:主なニーズがプロンプト内の複雑な引数を検証することである場合、MCP 単独が適切なレイヤーです。

タスクがネットワーク境界を越え、信頼、ライブ進捗、または後で新しい専門エージェントを交換することを気にする場合は、A2Aを選択してください。すでに十分な文書化された API がある場合や、あなたのスタック全体がモニターにテープで貼り付けられた Raspberry Pi に収まる場合は、スキップしてください。
タスクがネットワーク境界を越え、信頼、ライブ進捗、または後で新しい専門エージェントを交換することを気にする場合は、A2A を選択してください。すでに十分な文書化された API がある場合や、あなたのスタック全体がモニターにテープで貼り付けられた Raspberry Pi に収まる場合は、スキップしてください。

A2A はモデルに新しい魔法を加えるものではありません。代わりに、既存のエージェントが出会い、作業を交換し、整然とした監査トレイルを保持できるようにする信頼できるハンドシェイクを追加します。
A2A はモデルに新しい魔法を加えるものではありません。代わりに、既存のエージェントが出会い、作業を交換し、整然とした監査トレイルを保持できるようにする信頼できるハンドシェイクを追加します。

レジストリのストーリーはまだ DIY で、多くのエージェントはプライベートデモの背後にありますが、配管は今日のプロトタイプや内部ワークフローには十分に堅実です。
レジストリのストーリーはまだ DIY で、多くのエージェントはプライベートデモの背後にありますが、配管は今日のプロトタイプや内部ワークフローには十分に堅実です。

グルーコードを減らし、より興味深い作業に集中しましょう。
グルーコードを減らし、より興味深い作業に集中しましょう。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。