Google A2A Agentプロトコル徹底解説:マルチAgent相互運用、タスク委任とMCP比較

AI与大数据

概要

  • Google A2A(Agent-to-Agent)プロトコルは2026年のマルチAgentシステム相互運用の業界標準
  • A2AとMCPは異なるレイヤーの問題を解決:MCPはAgentとツールの接続、A2AはAgent間の協業
  • Agent CardはA2Aの「名刺」:能力、エンドポイント、認証方式を宣言
  • タスクライフサイクル(Task Lifecycle)がA2Aの中核抽象:送信→処理→完了/失敗/入力要求
  • プロトコル原理からPython実装までの完全ソリューション。マルチAgentオーケストレーション実践を含む

目次


マルチAgent時代の相互運用課題

2025年にMCPプロトコルが「Agentがツールにどう接続するか」を解決。2026年に企業が直面する新たな問題:

カスタマーサービスAgent、注文Agent、物流Agent、返金Agent — これらはどう協業するか?

課題 A2Aなし A2Aあり
Agent発見 URLハードコード、1つ変更で全体障害 Agent Card自動登録・発見
タスク委任 カスタムHTTP、チームごとに異なる 標準Task API
状態同期 ポーリングまたは独自WebSocket 標準イベントストリーム(SSE)
セキュリティ認証 各Agentが独自実装 統一OAuth2/API Key
異種互換 Python AgentがGo Agentを呼べない プロトコル層で統一、言語非依存

協業シナリオ例:ユーザーが「先週買ったヘッドホンの配送状況は?」と質問 → カスタマーサービスAgentが注文Agentにタスク委任 → 物流Agentに委任 → 異常時は返金Agentに委任。各AgentはA2A標準プロトコルで自分の領域に専念。


A2Aプロトコル中核概念

中核エンティティ

エンティティ 説明 類比
Agent Card Agentの能力宣言とエンドポイント情報 サービスレジストリのサービス記述
Task 完全なライフサイクルを持つ作業リクエスト HTTPリクエスト + 非同期ジョブ
Message Task内の単一インタラクション チャットメッセージ
Artifact Taskの成果物(ファイル、データ、レポート) APIレスポンスボディ
Part MessageまたはArtifactのコンテンツ断片 MIMEマルチパート

Agent Card:Agentの「名刺」

{
  "name": "order-agent",
  "description": "注文照会、作成、状態変更を処理するAgent",
  "url": "https://agents.example.com/order",
  "version": "1.0.0",
  "skills": [
    {"id": "query-order", "name": "注文照会", "description": "注文番号またはユーザーIDで注文詳細を照会"},
    {"id": "create-order", "name": "注文作成", "description": "商品リストから新規注文を作成"}
  ],
  "authentication": {"schemes": ["bearer"]}
}

/.well-known/agent.jsonにホスト — OAuthの.well-known/openid-configurationと同様。


タスクライフサイクルとステートマシン

submitted(送信済み)→ working(処理中)→ completed(完了)
                                      → failed(失敗)
                                      → input-required(追加入力必要)

Task API中核メソッド

メソッド 説明
tasks/send 新規タスク送信
tasks/get タスク状態照会
tasks/cancel タスクキャンセル
tasks/subscribe SSEイベントストリーム購読

A2A vs MCP:プロトコル層比較

観点 MCP A2A
解決する問題 Agentとツール/データの接続 Agent間の協業と委任
通信モード Client-Server Peer-to-Peer
中核抽象 Tool、Resource、Prompt Task、Message、Artifact
状態管理 ステートレス ステートフル(Taskライフサイクル)
関係 補完関係 補完関係

一言で:MCPはAgentに「手」(ツール)を与え、A2AはAgentに「チーム編成」(協業)を可能にする。

組み合わせアーキテクチャ

ユーザー → オーケストレーターAgent
              ├─ A2A → カスタマーサービスAgent → MCP → ナレッジベース
              ├─ A2A → 注文Agent → MCP → 注文DB
              └─ A2A → 物流Agent → MCP → 物流API

Python A2A Server実装

class OrderAgent:
    async def handle_task_send(self, params: dict) -> dict:
        task_id = params.get("id", str(uuid.uuid4()))
        message = params["message"]
        user_text = message["parts"][0]["text"]

        task = Task(id=task_id, status=TaskStatus.WORKING)
        try:
            if "query" in user_text.lower() or "照会" in user_text:
                order_id = self._extract_order_id(user_text)
                if not order_id:
                    task.status = TaskStatus.INPUT_REQUIRED
                    return self._task_to_response(task)
                order = await self.order_service.get_order(order_id)
                task.status = TaskStatus.COMPLETED
                task.artifacts.append({"name": "注文詳細", "parts": [{"type": "data", "data": order}]})
        except Exception as e:
            task.status = TaskStatus.FAILED
        return self._task_to_response(task)

マルチAgent協業実践:カスタマーサービス振り分け

class CustomerServiceOrchestrator:
    async def handle_user_query(self, query: str) -> str:
        intent = await self._classify_intent(query)
        agent_url = self.agents.get(intent)
        if not agent_url:
            return "申し訳ございませんが、現在お問い合わせを処理できません"
        task_result = await self._send_a2a_task(agent_url, query)
        if task_result["status"] == "completed":
            return self._format_artifacts(task_result["artifacts"])
        return "処理中に問題が発生しました。しばらくしてから再度お試しください"

セキュリティモデルと本番デプロイ

レイヤー 対策
トランスポート HTTPS/TLS 1.3必須
認証 OAuth2 Bearer Token
認可 Skillレベル権限
監査 Task ID全チェーン追跡

本番チェックリスト:/.well-known/agent.json、K8s Service公開、API Gateway認証・レート制限、Taskタイムアウト(デフォルト30秒)、Task成功率・平均処理時間・Agent可用性の監視。


面接ポイントと選定ガイド

Q1:A2AとMCPの関係は?

補完関係。MCPは垂直統合(Agent-ツール)、A2Aは水平統合(Agent-Agent)。本番システムでは通常両方を使用。

Q2:A2Aと直接HTTP APIの違いは?

A2Aは標準化されたTaskライフサイクル、Agent発見、状態プッシュ、Artifact受け渡しを提供。直接HTTPは各チームが独自実装が必要で、異なるチームのAgentは相互運用できない。

Q3:A2Aが不要な場合は?

単一Agent + MCPツールで十分な場合。A2Aの価値は複数の専門Agentが協業する必要があるシナリオ(カスタマーサービス振り分け、多段階承認、クロスドメインタスクオーケストレーション)。

Q4:A2Aのタスクタイムアウト処理は?

送信側がタイムアウト設定、タイムアウト後はtasks/cancel呼び出し。長時間タスクはtasks/subscribeでSSEイベントストリームを購読(tasks/getのポーリングではなく)。


A2A プロトコルとエコシステム(2026)

Linux Foundation ガバナンス、MCP と「ツール層 + 協業層」の完全スタック。

SSE ストリーミング実践

tasks/subscribe で長時間タスクの進捗をリアルタイム配信。

マルチテナントと Agent Registry

テナント分離、Skill レベルレート制限、Task 全チェーン監査。

2026年トレンド

Agent Marketplace、ローコード A2A エクスポート、OWASP Agent セキュリティ、エッジ Agent 協業。


まとめと関連記事

Google A2AプロトコルはマルチAgent相互運用の標準化空白を埋め、MCPと「ツール層 + 協業層」の完全なプロトコルスタックを形成。

設計要点

  1. A2AはAgent間協業、MCPはAgentとツールの接続を解決
  2. Agent Cardは/.well-known/agent.jsonでの発見メカニズム
  3. Taskが中核抽象、完全なライフサイクルステートマシンを持つ
  4. マルチAgentオーケストレーションはコーディネーターパターン、意図で専門Agentにルーティング
  5. 本番はHTTPS + OAuth2 + Task全チェーン追跡必須

関連記事

参考資料

ブラウザローカルツールを無料で試す →

#A2A协议#Agent互操作#Google A2A#多Agent协作#MCP对比#2026