MicrosoftのA2A Integrationとは?変更点と管理者・開発者の確認ポイント

MicrosoftのA2A Integrationは、AIエージェント同士を標準プロトコルで接続するための開発者向け機能です。結論から言うと、確認すべきポイントは「A2Aでつなぐべき境界があるか」「AgentCardで公開する情報は適切か」「認証・シークレット・セッション永続化を本番向けに設計できているか」「SDK v1移行に伴うAPI変更を吸収できているか」の4つです。

Microsoft LearnのA2A Integrationページは2026年5月11日に更新されており、Agent-to-Agentプロトコルによるエージェント発見、メッセージ通信、長時間タスク、異なるフレームワーク間の相互運用が整理されています。これはCopilotの画面機能ではなく、Microsoft Agent Frameworkで作ったエージェントを他のエージェントや外部システムと連携させるための実装・運用設計に関わる内容です。(Microsoft Learn)

目次

MicrosoftのA2A Integrationとは

A2A Integrationは、Microsoft Agent FrameworkのエージェントをA2Aプロトコルで公開したり、外部のA2A対応エージェントに接続したりするための統合機能です。

A2Aは「Agent-to-Agent」の略で、エージェント同士が標準化された形式でやり取りするためのプロトコルです。公式情報では、次のような機能が示されています。

機能何ができるか実務での意味
AgentCardによる発見エージェントの名前、説明、バージョン、URL、機能などをメタデータとして公開する呼び出し側が「このエージェントは何ができるか」を事前に判断できる
メッセージベースの通信ユーザーまたは他エージェントからのメッセージを送受信する異なるサービス間でも会話形式で連携できる
タスクによる長時間処理すぐに完了しない処理をタスクとして扱う大量データ処理、調査、分析などを非同期的に扱いやすい
クロスプラットフォーム連携異なる言語・フレームワークで作られたエージェントを接続する.NET、Python、他社フレームワークの混在環境で使いやすい

A2A Integrationの価値は、単に「エージェントをHTTPで呼べる」ことではありません。別チーム、別サービス、別言語、別クラウド、外部パートナーのエージェントを、密結合にせず連携させる点にあります。Microsoftの解説でも、A2Aはサービス境界、チーム境界、組織境界をまたぐ場合に有効であり、同一プロセス内で完結するなら「agents as tools」のほうがシンプルだとされています。(Microsoft Learn)

2026年5月11日更新情報で押さえる主なポイント

今回のA2A Integrationで管理者や開発者が見るべき点は、単なる機能追加ではなく「エージェントを外部に公開する設計」へ踏み込んでいることです。

観点内容確認すべきこと
.NETでのA2A公開Microsoft.Agents.AI.Hosting.A2A.AspNetCoreによりASP.NET Core経由でエージェントを公開できるWeb APIとして公開するURL、認証方式、ネットワーク境界を決める
PythonでのA2A連携agent-framework-a2aパッケージにより、外部A2Aエージェントへの接続とAgent Frameworkエージェントの公開が可能Python側の依存関係、非同期処理、HTTPクライアント設定を確認する
AgentCardエージェントの発見・統合に使うメタデータ説明文に社内情報や機密情報を書かない。バージョンと機能を明確にする
StreamingServer-Sent Eventsにより応答をリアルタイムに受け取れるタイムアウト、切断、再接続、ログ出力を設計する
contextId同じ会話を継続するための識別子として使われる個人情報を直接入れない。保存期間と削除方針を決める
認証Python例ではAuthInterceptorによるBearer認証の例が示されているトークンの取得元、期限切れ時の処理、権限範囲を確認する

.NET向けにはA2A Hosting用のNuGetパッケージ、Python向けにはagent-framework-a2aが示されています。公式ページのサンプルでは、ASP.NET Core Web APIプロジェクトにA2A関連パッケージ、Microsoft Foundry接続用ライブラリ、Swagger確認用ライブラリを追加する流れが紹介されています。(Microsoft Learn)

影響範囲:誰が対応すべきか

A2A Integrationは、Microsoft 365の一般ユーザーや通常のテナント管理者がすぐ設定変更を迫られる機能ではありません。影響が大きいのは、Microsoft Agent FrameworkでAIエージェントを開発・運用しているチームです。

対象者影響最初に確認すること
.NET開発者ASP.NET CoreでエージェントをA2A公開する実装に影響利用中のパッケージ、API名、エンドポイント設計
Python開発者外部A2Aエージェントの呼び出し、A2Aサーバー公開に影響A2AAgent、A2AExecutor、非同期処理、認証処理
管理者・セキュリティ担当エージェントの外部公開、AgentCard、認証、通信ログに影響公開範囲、トークン管理、監査ログ、機密情報の露出
DevOps/SREHTTP経由の分散サービスとしての運用に影響タイムアウト、リトライ、スケールアウト、永続ストレージ
Microsoft 365管理者直接影響は限定的。ただしM365連携エージェントを公開する場合は関与が必要Teams、SharePoint、Outlookなどに触れる権限とデータ境界

特に注意したいのは、A2Aを使うとエージェントが「アプリケーション内の部品」ではなく「ネットワーク越しに呼ばれるサービス」になる点です。HTTP呼び出しによる遅延、ネットワーク障害、タイムアウト、リトライ、バージョニングなど、通常のサービス間通信と同じ運用課題が発生します。(Microsoft Learn)

開発者が確認すべきSDK v1移行の注意点

A2A Integrationを見るときは、同時にA2A SDK v1 Migration Guideも確認すべきです。Microsoftの移行ガイドでは、Agent FrameworkのA2A統合パッケージがA2A SDK v1に更新され、従来のv0.3依存を置き換える破壊的変更として説明されています。影響範囲は、A2A Agentのクライアント側とA2A Hostingのサーバー側の両方です。(Microsoft Learn)

とくに混乱しやすいのは、A2A Integrationページの最小例と、A2A Hosting/Migration Guideで示される新しい構成の違いです。既存コードを持つチームは、サンプルをそのままコピーするのではなく、利用しているパッケージバージョンに対応したAPIを確認してください。

旧来の考え方・実装例新しい確認ポイント実務での対応
MapA2Aで登録・エンドポイント・AgentCardをまとめて扱うサーバー登録、エンドポイントマッピング、AgentCard公開が分離されるAddA2AServer、MapA2AHttpJson、MapA2AJsonRpc、MapWellKnownAgentCardの利用可否を確認する
JSON-RPC前提で通信する既定ではHTTP+JSONが優先され、JSON-RPCはフォールバックになるJSON-RPCを維持したい場合はPreferredBindingsを明示する
AgentCardをMapA2Aの引数で渡すAgentCardを専用の呼び出しで公開するURL、プロトコル、バージョン、機能説明を整理する
A2AHostingOptionsを使うA2AServerRegistrationOptionsに名称変更設定クラス名の変更を移行時に確認する
ITaskManagerの戻り値を前提にする直接公開されない構成に変わる内部処理に依存している箇所を修正する

移行ガイドでは、旧来のMapA2A(agent, path, agentCard)が、AddA2AServerによる登録、MapA2AHttpJsonまたはMapA2AJsonRpcによるエンドポイント公開、MapWellKnownAgentCardによるAgentCard公開へ整理されています。既存のA2A実装がある場合、この差分はビルドエラーだけでなく、実行時のルーティングやクライアント互換性にも影響します。(Microsoft Learn)

管理者が確認すべき設定と運用ポイント

AgentCardに載せる情報を絞る

AgentCardは、呼び出し側がエージェントを発見し、能力を理解するためのメタデータです。公式ページでは、名前、説明、バージョン、URL、ストリーミングやプッシュ通知などのCapabilitiesがプロパティ例として示されています。(Microsoft Learn)

本番環境では、AgentCardを「自己紹介」ではなく「公開される仕様書」と考えてください。説明文に内部システム名、顧客名、非公開の業務プロセス、管理用URLを含めると、エージェントを呼び出す前の段階で情報を漏らすことになります。

実務では、次のように切り分けると安全です。

項目書いてよい例避けたい例
NameInvoiceReviewAgent顧客名や案件名を含む名称
Description請求書の形式確認を支援するエージェント利用中の内部DB名や業務フローを詳細に書く
Version1.0.0更新日や担当者名だけで管理する
Url公開を前提にしたA2Aエンドポイント管理画面、社内限定URL、検証用URL
Capabilitiesstreaming対応など必要な機能実装予定だが未検証の機能

また、A2A Hostingの関連ドキュメントでは、well-known pathで公開できるAgentCardはホストごとに1つという注意が示されています。複数エージェントを同一アプリケーションで公開する場合は、どのエージェントを発見可能にするか、どのエージェントはURLを直接知っているクライアントだけが呼ぶかを設計する必要があります。(Microsoft Learn)

認証とシークレット管理を本番向けにする

A2A Integrationのサンプルでは、Microsoft Foundry接続情報をdotnet user-secretsまたは環境変数で設定する流れが示され、appsettings.jsonに直接書く方法は本番アプリでは推奨されないと説明されています。(Microsoft Learn)

本番環境では、次の方針を基本にしてください。

確認項目推奨される考え方
APIキー・エンドポイント環境変数、Key Vault、マネージドIDなどで管理する
ローカル開発dotnet user-secretsや開発用環境変数を使う
本番の認証可能なら特定の資格情報やマネージドIDを使う
ログAuthorizationヘッダー、トークン、プロンプト内の機密情報を出力しない
トークン期限切れ自動更新、再試行、失敗時の監査ログを設計する

公式サンプルではDefaultAzureCredentialが使われていますが、Microsoftは本番利用では慎重に検討し、遅延、意図しない資格情報探索、フォールバック機構によるセキュリティリスクを避けるため、ManagedIdentityCredentialなど特定の資格情報の利用を検討するよう注意しています。(Microsoft Learn)

contextIdとセッション状態を設計する

A2Aでは、contextIdが会話の継続に使われます。同じcontextIdを使うことで、エージェントは会話履歴を維持できます。逆に言えば、contextIdの扱いを誤ると、別ユーザーの文脈が混ざる、会話履歴が失われる、削除すべきデータが残り続けるといった問題が起きます。(Microsoft Learn)

避けたいのは、メールアドレス、社員番号、顧客IDなどをそのままcontextIdに入れることです。ランダムなIDやアプリケーション側で管理するセッションIDを使い、ユーザー情報との対応はサーバー側で安全に管理するほうが現実的です。

A2A Hostingでは、既定のInMemoryAgentSessionStoreとInMemoryTaskStoreは開発用途向けであり、アプリケーション再起動時に状態が失われ、複数インスタンス間で共有されません。本番展開では永続化された実装に差し替える必要があります。(Microsoft Learn)

Python開発者が見るべきポイント

Python側では、agent-framework-a2aパッケージにより、外部A2A対応エージェントへの接続と、Agent FrameworkエージェントのA2A公開の両方が扱えます。公式ページでは、A2AAgentを使ってリモートA2Aエンドポイントをラップし、AgentCardから機能を解決して通信する例が示されています。(Microsoft Learn)

Python実装で確認すべき点は次のとおりです。

項目確認ポイント
接続先の発見AgentCardを取得できるか。カード内のURLと実際の到達性が一致しているか
StreamingServer-Sent Eventsを受け取るクライアント実装がタイムアウトしないか
長時間タスクcontinuation tokenを保存し、ポーリングや再接続に使えるか
context_idAgentSessionから自動導出される場合と明示指定する場合の優先順位を理解する
認証AuthInterceptorでBearerトークンなどを付与する場合、期限切れと更新処理を設計する

注意したいのは、長時間タスクの扱いです。A2Aクライアント側では、リモートエージェントがタスクを返す場合にcontinuation tokenを使って結果を取得できます。一方、Agent FrameworkでA2Aホストされたエージェントについては、A2A Hostingドキュメントでbackground responsesはまだサポートされていないと記載されています。自社で公開するエージェントに長時間処理を持たせる場合は、公式の対応状況を確認し、代替としてジョブキューや外部タスク管理を用意する判断が必要です。(Microsoft Learn)

A2Aを使うべきケース、使わないほうがよいケース

A2A Integrationは便利ですが、すべてのエージェント連携に使うべきではありません。HTTP越しの通信になるため、単一アプリケーション内で完結する処理にまでA2Aを使うと、設計が複雑になり、遅延と障害ポイントが増えます。

判断基準A2Aが向いているA2Aを避けたほうがよい
サービス境界エージェントが別サービスとして動いている同じプロセス内で呼べる
チーム境界別チームがエージェントを所有している同じチームがすべて管理している
組織境界外部企業や別組織のエージェントを使う社内の単一アプリだけで完結する
言語・フレームワーク.NET、Python、他フレームワークが混在する同じ言語・同じランタイムで統一されている
運用要件独立したリリース、監査、認証が必要低遅延で単純な関数呼び出しが重要

たとえば、社内の請求書確認エージェントと、外部パートナーの税務チェックエージェントを連携させる場合はA2Aが向いています。互いの内部実装を知らなくても、AgentCardで機能を把握し、標準プロトコルで通信できるためです。

一方、1つのWebアプリ内で「要約エージェント」と「分類エージェント」を順番に呼ぶだけなら、A2Aよりもアプリ内の関数やワークフローでつないだほうがシンプルです。

展開前に実施したいテスト手順

A2A Integrationを本番へ展開する前に、最低限次のテストを行ってください。

手順確認内容失敗しやすいポイント
エンドポイント確認A2AエンドポイントとAgentCardに到達できるか開発環境のURLが残っている
AgentCard検証Name、Description、Version、URL、Capabilitiesが正しいか内部情報を書きすぎる
認証テスト正しいトークンで成功し、不正トークンで拒否されるか認証なしで公開されている
contextIdテスト同じcontextIdで会話が継続し、別contextIdで分離されるかユーザー間で文脈が混ざる
Streamingテスト長い応答を途中で受信できるかプロキシやロードバランサーでSSEが切れる
再起動テストアプリ再起動後も必要な状態が保持されるかInMemoryストアのまま本番運用している
スケールアウトテスト複数インスタンスでセッションやタスク状態が整合するかインスタンスごとに状態が分断される
プロトコル互換性HTTP+JSONとJSON-RPCのどちらを使うか明確かSDK v1移行で既定プロトコルが変わり、既存クライアントが想定外の通信になる

特にSDK v1移行後は、HTTP+JSONが優先され、JSON-RPCはフォールバックとして扱われます。既存クライアントがJSON-RPC前提で作られている場合は、A2AClientOptions.PreferredBindingsで明示的に指定するか、クライアント側をHTTP+JSON対応に更新する必要があります。(Microsoft Learn)

よくある失敗と回避策

A2A Integrationで失敗しやすいのは、プロトコルそのものよりも運用設計です。実装が動いた段階で完了にせず、公開範囲、権限、状態管理、障害時の動きを確認してください。

失敗例起きる問題回避策
サンプルコードのAPI名だけを見て実装する利用中のSDKバージョンと合わずビルドやルーティングで失敗するA2A Integration、A2A Hosting、Migration Guideをセットで確認する
AgentCardに詳しすぎる説明を書く内部構成や業務情報が外部に見える公開仕様として必要な情報だけに絞る
認証なしで検証環境を公開する意図しない呼び出しやコスト増につながる検証環境でも認証、IP制限、ログ監査を入れる
DefaultAzureCredentialを本番で安易に使う意図しない資格情報探索やフォールバックが起きる本番ではマネージドIDなど明示的な資格情報を検討する
InMemoryストアで本番運用する再起動やスケールアウトで会話・タスク状態が失われる永続化ストアに差し替える
A2Aを同一プロセス内の単純連携に使う遅延と複雑性が増える同一アプリ内なら関数、ツール、ワークフローでつなぐ
contextIdに個人情報を入れるログや外部通信で個人情報が露出するランダムIDやアプリ側セッションIDを使う

まず何をすべきか

A2A Integrationを導入する前に、最初にやるべきことは実装ではなく棚卸しです。自社のエージェント連携が、本当にサービス境界・チーム境界・組織境界をまたぐのかを確認してください。境界をまたがないなら、A2Aではなくアプリ内のツール呼び出しやワークフローで十分な場合があります。

A2Aを使う判断になったら、次の順に進めると安全です。

優先度作業目的
高利用中のAgent FrameworkとA2A関連パッケージのバージョンを確認するSDK v1の破壊的変更に対応する
高AgentCardに公開する情報を決める不要な情報露出を防ぐ
高認証、シークレット、資格情報の管理方法を決める本番環境で安全に公開する
高セッションとタスク状態の永続化を設計する再起動・スケールアウトに耐える
中HTTP+JSONとJSON-RPCの利用方針を決める既存クライアントとの互換性を保つ
中Streamingと長時間処理の動作を検証する切断、再接続、タイムアウトに備える
中監査ログと失敗時のアラートを設定する障害や不正利用を早期に検知する

MicrosoftのA2A Integrationは、AIエージェントを単体アプリから分散サービスへ広げるための重要な仕組みです。ただし、導入効果が出るのは「境界をまたぐ連携」が明確な場合です。まずは対象エージェント、公開するAgentCard、認証方式、状態管理、SDK v1移行の影響を確認し、小さな検証環境で通信・ストリーミング・再起動時の挙動までテストしてから本番展開するのが現実的です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次