Levix

Levix's zone

x
telegram

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

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

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

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

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

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

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

しかし、各 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:クライアントエージェント vs. リモートエージェント
#

完全な 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 のようなフレームワークは、メモリ内でステップをつなぎます。これらは単一のマシン上での小さなチェーンには最適ですが、ネットワーク境界を越える必要がある場合や、言語やベンダーを混合する必要がある場合は、彼らのサンドボックスを出て A2A に入ります。
    プロセス内(ワークフローレベル):LangGraph、CrewAI、AutoGen のようなフレームワークは、メモリ内でステップをつなぎます。これらは単一のマシン上での小さなチェーンには最適ですが、ネットワーク境界を越える必要がある場合や、言語やベンダーを混合する必要がある場合は、彼らのサンドボックスを出て 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 フロー
あなたの Amazon フロー

A2A 原始
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 が MCP と比較して攻撃面を狭める方法#

A2A が MCP と比較して攻撃面を狭める方法 **

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

A2A はすべてをリモートのフェンスの後ろに隠します;クライアントは高レベルのタスクと制限されたアーティファクトのみを見ます。リモートのコードを_信頼する_必要がありますが、プロンプトは決してテーブルの上にはなく、これにより全クラスの悪用の可能性が排除されます。
A2A はすべてをリモートのフェンスの後ろに隠します;クライアントは高レベルのタスクと制限されたアーティファクトのみを見ます。リモートのコードを_信頼する_必要がありますが、プロンプトは決してテーブルの上にはなく、これにより全クラスの悪用の可能性が排除されます。

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

A2A の夢と現在の現実
A2A の夢と現在の現実
#

#

  • 「エージェントモール」をブラウズ。 あなたは_CoolAgentMall.dev_を開き、「税務コンプライアンス」を検索し、星評価と署名されたカードを持つライブエージェントを見ます。一回のクリックで URL があなたのプライベートレジストリに追加されます —SDK も秘密も不要です。
    「エージェントモール」をブラウズ。 あなたは_CoolAgentMall.dev_を開き、「税務コンプライアンス」を検索し、星評価と署名されたカードを持つライブエージェントを見ます。一回のクリックで URL があなたのプライベートレジストリに追加されます —SDK も秘密も不要です。
  • ドラッグアンドドロップのチェーン。 Flowise(または n8n)で、「請求書を生成」の後に緑の ** 税務チェック(A2A)ブロックをドラッグし、_実行_を押すと、正しい管轄コードを含む JSON アーティファクトがストリーミングされます — あなたの側でのグルーコードはゼロです。
    ドラッグアンドドロップのチェーン。 Flowise(または n8n)で、「請求書を生成」の後に緑の
    税務チェック(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 関数を呼び出す cron ジョブには、発見やストリーミングは必要ありません;直接 API 呼び出しの方が軽量です。
    小さなヘルパースクリプト: 単独の OpenAI 関数を呼び出す cron ジョブには、発見やストリーミングは必要ありません;直接 API 呼び出しの方が軽量です。
  • 一回限りのデータプル: レイテンシや通信量が重要でない週次エクスポートの場合、単純な REST エンドポイントの方が監視しやすいです。
    一回限りのデータプル: レイテンシや通信量が重要でない週次エクスポートの場合、単純な REST エンドポイントの方が監視しやすいです。
  • スキーマ重視、プロンプト軽視のツール: 主なニーズがプロンプト内の複雑な引数を検証することである場合、MCP 単独が適切なレイヤーです。
    スキーマ重視、プロンプト軽視のツール: 主なニーズがプロンプト内の複雑な引数を検証することである場合、MCP 単独が適切なレイヤーです。

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

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

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

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

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