GoogleのAgent-to-Agent（A2A）とは何か？AIエージェント連携の仕組みとADKとの関係

## はじめに

最近のAI開発において、個々のAIエージェントは特定のタスクで高い能力を発揮するようになってきました。しかし、現実の問題解決には複数の専門知識が必要な場合が多く、AIエージェント間の効果的な連携が課題となっています。

この記事では、Googleが提案する「Agent-to-Agent（A2A）」という、AIエージェント間の通信フレームワークについて解説します。A2Aは、異なるAIエージェントが人間のチームのように効率的に協力できるようにする技術です。Googleは最近このプロトコルを正式に発表し、オープンソースとして公開しました。さらに、A2Aを実装するためのAgent Development Kit（ADK）についても解説します。

## 前提知識

この記事を理解するために必要な前提知識は以下の通りです：

- AIエージェントの基本概念
- APIやHTTP通信の基礎
- JSONデータ形式の基本

専門的な知識がなくても理解できるよう、なるべく平易な言葉で説明していきます。

## なぜAIエージェント間の連携が必要なのか？

### 現在のAIの課題：専門性の島々

現在のAI技術は、特定の専門分野に特化したエージェントが増えています。例えば：

- スケジュール管理に優れたAI
- データ分析を得意とするAI
- 創造的な文章作成を行うAI

これらのエージェントはそれぞれの分野で高い能力を発揮しますが、お互いに連携できないため、複雑な問題解決には人間が仲介役となる必要があります。

### 具体例：出張計画の場合

例えば「来月の東京出張を計画して」という一見シンプルなリクエストを考えてみましょう。この依頼には実際、複数の専門知識が必要です：

- カレンダー管理（空き日程の確認）
- 旅行情報（適切なフライトやホテルの予約）
- 予算管理（コスト効率の良い選択）
- 地理情報（効率的な移動計画）

このような依頼を処理するために、大きな「スーパーエージェント」を作る方法も考えられますが、それには2つの大きな問題があります：

1. 構築と保守が非常に複雑になる
2. 既存の専門エージェントの能力を再開発する必要がある

A2Aはこれらの問題を解決し、各エージェントが得意分野に集中しながら連携できる仕組みを提供します。

## A2Aとは何か：AIのための共通言語

A2Aは、どのAIエージェントも使用できる共通の通信規格です。国際的な職場で英語や中国語が共通言語として機能するように、A2Aはエージェント間の協力を可能にします。

Googleの定義によると、A2Aは「不透明なエージェントアプリケーション間の通信と相互運用性を可能にするオープンプロトコル」です。基盤となる技術フレームワークやベンダーに関係なく、エージェントが連携できるようにすることが目的です。

A2Aの特徴は、単なる情報交換だけでなく、タスクの調整や進行管理まで定義している点です：

### 1. 紹介プロトコル

「エージェントカード」というデジタル履歴書を通じて、エージェント同士がお互いの能力を発見できます。エージェントカードには、そのエージェントができることとコンタクト方法が記載されています。これらは通常、標準化されたエンドポイント（例：`/.well-known/agent.json`）でホストされるJSONファイルです。

### 2. タスク管理

エージェント同士で作業を割り当て、進捗を追跡できます。例えば、カレンダーエージェントがフライトの選択肢を必要とする場合、旅行エージェントに正式なリクエストを送り、ステータスをモニタリングできます。各タスクには一意のIDが割り当てられ、特定のライフサイクル（提出済み→作業中→入力必須→完了/失敗/キャンセル）に従います。

### 3. 豊富なコミュニケーション

エージェント間ではテキストだけでなく、画像、構造化データ、ファイルなど、効果的な協力に必要なさまざまな形式の情報を交換できます。通信は以下のパート形式で構成されます：

- TextPart：プレーンテキストやフォーマット済みテキスト
- DataPart：JSONなどの構造化データ
- FilePart：バイナリデータやファイル参照

### 4. 質問・確認メカニズム

エージェントがタスク完了に追加情報を必要とする場合、人間の同僚が質問するのと同じように、作業を一時停止して明確化を求めることができます。

## A2Aの仕組み：実例で理解する

「娘の誕生日パーティーを来週末に計画するのを手伝って」と、あなたの個人AIアシスタントに依頼したとします。

裏側では、あなたのプライマリアシスタント（ここではアレックスと呼びます）が、これに複数の専門分野が必要だと認識します。A2Aを使用して、アレックスは以下のように専門エージェントと協力します：

1. アレックスはエージェントカードディレクトリをチェックし、イベント計画、ケータリング推薦、招待状デザイン専門のエージェントを見つけます。技術的には、各エージェントのエージェントカード（通常は`https://agent-domain/.well-known/agent.json`のような標準URLでホストされるJSONファイル）をリクエストします。

2. アレックスは各専門エージェントに個別のタスクを作成します：
   - イベントプランナーには：「8歳の女の子の誕生日パーティーの会場とアクティビティのアイデアが必要です」
   - ケータリングアドバイザーには：「誕生日パーティーで12人の子供と6人の大人向けのケーキと食事オプションを探しています」
   - デザインエージェントには：「子供の誕生日パーティーの楽しい招待状テンプレートを作成してください」

3. イベントプランナーエージェントはタスク状態を「入力必須」に設定し、「予算範囲はいくらですか？」という質問を返します。アレックスはあなたについて知っていることから回答するか、直接あなたに尋ねてから返答します。

4. ケータリングエージェントはメニューオプション、価格、食事制限情報などの構造化JSONデータを返し、アレックスはこれをユーザーフレンドリーな表示に変換します。

5. デザインエージェントは招待状テンプレートを画像ファイルとして作成し、それらをアーティファクトとしてパッケージ化します。アレックスはこれらのテンプレートをビジュアルオプションとして提示できます。

このプロセス全体を通じて、あなたはアレックスとだけやり取りするだけで、複数エージェントのオーケストレーションを意識する必要はありません。A2Aが裏側で調整を処理するため、最終結果は一貫性のあるものになります。

## A2Aの技術アーキテクチャ

親しみやすい例の背後には、エージェント間の協力を可能にする技術的な要素があります：

### 1. クライアント-サーバーモデル

A2A通信では、一方のエージェントがクライアント（イニシエーター）、もう一方がサーバー（レスポンダー）として機能します。この役割は流動的で、コンテキストに応じて入れ替わることもあります。

### 2. エージェントカード

これらは標準化されたエンドポイント（例：`/.well-known/agent.json`）でホストされる能力マニフェストとなるJSONファイルです。含まれる情報：

```json
{
  "name": "RecipeAgent",
  "description": "Agent that helps users with recipes and cooking",
  "url": "https://example.com/agent",
  "provider": {
    "organization": "Culinary AI Inc.",
    "url": "https://culinary-ai.example.com"
  },
  "version": "1.0.0",
  "documentationUrl": "https://example.com/agent/docs",
  "capabilities": {
    "streaming": true,
    "pushNotifications": true,
    "stateTransitionHistory": false
  },
  "authentication": {
    "schemes": ["Bearer"],
    "credentials": "..."
  },
  "defaultInputModes": ["text/plain"],
  "defaultOutputModes": ["text/plain", "image/jpeg"],
  "skills": [
    {
      "id": "generateRecipe",
      "name": "Generate Recipe",
      "description": "Creates recipes based on ingredients and preferences",
      "tags": ["cooking", "food", "recipes"],
      "examples": [
        "Create a recipe with chicken and pasta",
        "What can I make with potatoes?"
      ]
    }
  ]
}
```

### 3. 状態管理付きタスク

A2Aの各作業はタスクとしてカプセル化され、以下の要素を持ちます：

- 一意の識別子
- ライフサイクル状態（提出済み、作業中、入力必須、完了、失敗、キャンセル）
- タイムスタンプや所有権情報などのメタデータ

### 4. メッセージ構造

通信は、一つ以上のパーツを含むメッセージで構成されます：

- TextPart：プレーンテキストやフォーマット済みテキスト
- DataPart：JSONなどの構造化データ
- FilePart：バイナリデータやファイル参照

各パーツはMIMEタイプを持ち、コンテンツ形式を示します。

### 5. トランスポートプロトコル

A2Aは主にHTTP/HTTPSを使用します：

- タスク作成と更新のための標準RESTエンドポイント
- 長時間実行タスクの更新ストリーミング用のServer-Sent Events（SSE）
- 非同期通知用のオプションのWebhookサポート

### 6. セキュリティレイヤー

エージェント間の認証には企業グレードのメカニズムを使用：

- OAuth 2.0フロー
- APIキー
- JWTトークン
- アクセス制御権限

この設計により、A2Aは素早い質問応答から、完了に数時間または数日かかる可能性のある複雑な長期協力ワークフローまで対応できます。

## A2AとMCPの関係

A2Aプロトコルは、AnthropicのModel Context Protocol（MCP）と補完関係にあります。GoogleはA2AをMCPを補完するものとして位置づけています。

- **MCP**：個々のエージェントがツールやコンテキストを使用する方法に焦点を当てたプロトコル。エージェントが適切なツールや情報にアクセスできるようにします。
- **A2A**：エージェント間の通信と協力に焦点を当てたプロトコル。異なるエージェントがどのように協力するかを定義します。

職場のアナロジーを使うと、MCPは各ワーカーに適切な装備とリソース（「ツールボックス」）へのアクセスを提供し、A2Aはワーカーがプロジェクトでどのようにコミュニケーションし協力するかを確立します。

両方のプロトコルは競合するものではなく、補完的です。個々のエージェントは、MCPを使用して専門機能を実行するために必要なツールとコンテキストにアクセスし、次にA2Aを使用して複数部分から成るタスクで他のエージェントと連携できます。

## Google ADK（Agent Development Kit）とA2Aの関係

Google Agent Development Kit（ADK）は、AIエージェントとマルチエージェントシステムの開発を簡素化するために設計されたオープンソースフレームワークです。これはA2Aプロトコルと密接に関連しており、A2Aを実装するための重要なツールとして機能します。

### ADKとは何か

ADKは、AI開発者がエージェントの構築、管理、評価、デプロイを簡単に行えるようにする開発キットです。柔軟性とモジュール性を重視し、個人開発者から企業まで幅広いユーザーに対応しています。

### ADKとA2Aの連携ポイント

1. **相互運用性の実現**：ADKで構築されたエージェントは、標準の`/run`HTTPエンドポイントとエージェントのメタデータを`.well-known/agent.json`を通じて公開することで、A2Aプロトコルと互換性を持ちます。これにより、異なるフレームワークで構築されたエージェント間の発見と通信が容易になります。

2. **マルチエージェントシステムの構築**：ADKは複数の専門エージェントを階層的に構成し、複雑な調整と委任を可能にするように設計されています。A2Aプロトコルはこれらのエージェント間のコミュニケーションの標準化をサポートします。

3. **実装例**：GoogleのA2Aリポジトリには、ADKを使用して「経費精算」エージェントを作成し、A2Aサーバーとしてホストするサンプルが含まれています。このエージェントはクライアントからのテキストリクエストを処理し、詳細が不足している場合はWebフォームを返します。

### ADKの主な機能

- **マルチエージェント設計**：複数の専門エージェントをモジュール式で階層的に配置
- **多様なモデル対応**：Geminiなどのモデルやサードパーティのモデルにも対応
- **豊富なツールエコシステム**：検索、コード実行などの組み込みツールや、サードパーティライブラリとの統合
- **ストリーミング機能**：双方向の音声やビデオストリーミングなどの機能をサポート

## A2Aの実際の応用例

A2Aプロトコルはすでに実際のビジネスシナリオで採用され始めています。ADKと組み合わせることで、次のような応用が可能になります：

### マルチエージェント旅行アシスタント

例えば、ADKとA2Aを使用してマルチエージェント旅行アシスタントを構築することができます：

- フライト検索エージェント
- ホテル検索エージェント
- アクティビティ推薦エージェント

これらが連携して、ユーザーの旅行プランニングを総合的にサポートします。各エージェントはRESTAPIとFastAPIサーバーを通じて通信し、A2A互換クライアントを通じて情報を交換します。

### 採用プロセスの自動化

従来の採用プロセスでは、HR担当者が様々なタスクを手動で調整する必要がありました。A2A搭載のAIワークスペースでは、システムが自動的に処理します：

- 人材調達エージェント：候補者の検索と選別
- スケジューラーエージェント：面接の日程調整
- バックグラウンドチェックエージェント：応募者の経歴確認

これらのエージェントがA2Aプロトコルを使用して連携することで、採用プロセス全体を効率化します。

## A2Aのメリット

A2Aフレームワークは以下のような利点をもたらします：

### モジュール式の改善

より優れたカレンダーエージェントが登場した場合、他のコンポーネントを中断することなく、AIエコシステムに組み込むことができます。

### 段階的な自動化

以前は人間による調整が必要だった複雑なワークフローが、エージェント間で自律的に実行できるようになります。

### 専門的な卓越性

すべてにおいて中途半端なAIを一つ作るのではなく、開発者は特定のドメインで真に優れたエージェントを作成できます。

## まとめ

A2Aは、単に個々のAIを賢くするのではなく、AIエージェント間のコラボレーションをより賢くする仕組みです。GoogleのADKはこのプロトコルを実装するための強力な開発キットとして、A2Aエコシステムの発展に貢献しています。

人間組織が専門的役割を効果的なチームへと組み合わせるように、A2AとADKは専門AIエージェントのネットワークが連携して複雑な問題を解決することを可能にします。

Googleはこれらのツールをオープンソースとして公開し、明確な貢献パスを設定しています。多くの企業パートナーがすでにA2Aプロトコルの定義とその技術仕様に積極的に貢献しています。

将来的には、個々のAIツールを直接操作する方法から、自己調整するAIエージェントチームに成果を委任する方向へとシフトしていくでしょう。ユーザー体験はよりシンプルになり、同時に機能はより強力になります。

## 参考リンク

- [Google A2A GitHub リポジトリ](https://github.com/google/A2A)
- [Google A2A 技術ドキュメント](https://github.com/google/A2A/blob/main/README.md#getting-started)
- [Google ADK 公式ドキュメント](https://google.github.io/adk-docs/)
- [Google Developers Blog: Agent2Agent Protocol発表](https://developers.googleblog.com/en/a2a-a-new-era-of-agent-interoperability/)
- [Google Developers Blog: Agent Development Kit発表](https://developers.googleblog.com/en/agent-development-kit-easy-to-build-multi-agent-applications/)
- [DiamantAI: Google's Agent2Agent (A2A) Explained](https://diamantai.substack.com/p/googles-agent2agent-a2a-explained)