◉ANTIGRAVITY LABEN
記事一覧/Agents & Manager
◈ Agents & Manager/2026-04-01上級

Antigravity × A2Aプロトコル実装ガイド — エージェント間通信でスケーラブルなAIシステムを構築する

GoogleのA2A(Agent-to-Agent)プロトコルをAntigravityで実装する実践ガイドです。エージェントカード設計からタスク委譲、ストリーミング通信、本番環境デプロイまで実践的なノウハウを実運用の視点からまとめます。

A2A4エージェント74マルチエージェント41AgentKit17プロトコル分散AI

✦ プレミアム記事

取り組みの背景 — A2Aプロトコルが変えるエージェントアーキテクチャ

最初のエージェントを立てた日、私は自分のクライアントが返し続ける 404 の理由が分からず、curl を三十分ほど叩いておりました。原因は認証でも CORS でもなく、参照した記事に書かれていたカードのパスが、いまの仕様と違っていたというだけのことでした。仕様の変化に追いつけていなかったのは、コードではなく私のほうだったのです。

A2A(Agent-to-Agent)プロトコルは、AIエージェントが互いに通信し、タスクを委譲し合うための標準仕様です。2025年4月に公開され、いまは Linux Foundation 傘下の Agentic AI Foundation が管理しています。仕様は v1.0 に達し、操作名やエージェントカードの構造にも手が入りました。動くコードを載せた文章が古びやすい領域ですので、判断のよりどころにした一次情報へのリンクは、そのつど本文の中に置いています。

エージェント間の通信を自前で設計していた頃と比べて何が変わったかというと、異なるフレームワーク・異なる言語で実装されたエージェント同士が、ひとつのHTTP/SSEベースのインターフェースで会話できるようになりました。ここでは Antigravity で A2A 準拠のエージェントを一から組み立てながら、私がつまずいた箇所を通り道の目印として書き残します。

この記事で扱う範囲:

  • A2Aプロトコルのコアコンセプト(エージェントカード・タスク・アーティファクト)
  • Antigravity + AgentKit 2.0 での環境構築
  • エージェントカードの設計と公開
  • タスク委譲パターン(同期・非同期・ストリーミング)
  • 認証とセキュリティの実装
  • エラーハンドリングとリトライ戦略
  • Cloudflare Workers へのデプロイ
  • 実際のユースケースで学ぶ実装例
  • v1.0 での操作名・構造の変更と、既存実装の畳み方

A2Aプロトコルの基礎概念

A2Aを理解するうえで、まず4つのコアコンセプトを把握しておきましょう。

エージェントカード(Agent Card)

エージェントカードは、エージェントの「名刺」にあたるJSONマニフェストです。/.well-known/agent-card.json というパスで公開され、エージェントが何ができるか(スキル)、どう通信するか(エンドポイント・認証方式)、どんな入出力フォーマットに対応しているかを宣言します。

このパスについては、一度つまずいたので先にお伝えします。公開当初のサンプルや古い記事では /.well-known/agent.json と書かれていることがありますが、A2A の Agent Discovery ドキュメントが定める標準パスは /.well-known/agent-card.json です(RFC 8615 の well-known URI の考え方に沿ったもの)。私は移行期に書かれた記事のコードをそのまま貼って、クライアント側が 404 を返し続ける理由がしばらく分かりませんでした。既存の相手と接続する必要があるあいだは、両方のパスで同じカードを返しておき、相手の移行が済んでから旧パスを畳むのが安全です。

{
  "name": "DataAnalysisAgent",
  "description": "CSVデータを解析し、洞察とグラフを生成するエージェント",
  "url": "https://data-agent.example.com",
  "version": "1.0.0",
  "capabilities": {
    "streaming": true,
    "pushNotifications": false,
    "stateTransitionHistory": true
  },
  "authentication": {
    "schemes": ["Bearer"]
  },
  "skills": [
    {
      "id": "analyze-csv",
      "name": "CSV分析",
      "description": "CSVファイルを受け取り、統計分析とビジュアライゼーションを提供する",
      "tags": ["data", "csv", "analysis"],
      "inputModes": ["text", "file"],
      "outputModes": ["text", "file", "data"]
    }
  ]
}

タスク(Task)

タスクはエージェント間でやり取りされる仕事の単位です。一意のIDを持ち、submitted → working → completed(または failed) というライフサイクルをたどります。タスクにはメッセージ(会話履歴)とアーティファクト(成果物)が含まれます。

アーティファクト(Artifact)

アーティファクトはタスクの成果物です。テキスト、ファイル、構造化データなど複数のパーツを持つことができ、ストリーミングで段階的に配信することも可能です。

プッシュ通知(Push Notifications)

長時間かかるタスクの場合、エージェントは完了時にクライアントへWebhookでプッシュ通知を送れます。クライアントが常時接続を維持しなくて済むため、バッチ処理に適しています。


✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦エージェントカードの設計から認証・レジストリ・本番デプロイまで、A2A実装の全工程を一貫した設計思想でつなげられます
✦ETag による条件付き取得とプロセス内キャッシュの効き方の違いを実測値で示し、どちらを先に入れるべきかを判断できます
✦v1.0 の操作名・エージェントカード構造の変更点と、既存実装を壊さずに畳んでいく移行の順番がわかります
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Antigravity Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

◈ Agents & Manager2026-10-16
エージェントに .zip を渡す前に、.git を除いて 29 MB を 15 MB にし、秘密情報の警告 28 件を見分けました
Antigravity アプリ v2.23.0 で .zip を添付できるようになりました。自分のリポジトリを実際に固めて .git の重さと秘密情報検査の誤検知を数え、除外・検査・マニフェストを一度に行う Python スクリプトの全文を残します。
◈ Agents & Manager2026-09-24
無人実行のエージェントが設定ファイルを書き換えたら戻す、小さな番人スクリプトの組み方
読み取り専用にしたはずの枠をエージェント自身が設定ファイルごと広げてしまう、という報告を読んで、夜間の無人実行を外側から包む番人を組みました。実行前後の指紋比較・退避と復元・打ち切り時間の3点を、動くコードでお伝えします。
◈ Agents & Manager2026-09-08
/boost が「検証済み」と返してきたとき、その worktree に何が無かったのかを先に数えています
Antigravity の /boost は使い捨ての隔離ワークツリーでテストを走らせます。手元のビルドが git に入っていないファイルへ依存していると、その検証は別の木の上で通ります。ずれを先に数える手順を書き残します。