A2UI の説明: Agent-to-UI プロトコルが行うこと (および行わないこと)
A2UI は、AI エージェントがクライアントがレンダリングするインターフェイスを記述できるようにする宣言型 JSON プロトコルです。それがどのように機能するか、どのレンダラーが存在するか、そしてそれが何をしないのか。
核心
A2UI (エージェントから UI) は、Google によって作成されたオープンな宣言型 JSON プロトコルです。 AI エージェントはインターフェイスの説明を送信し、クライアントはエージェントからコードを実行するのではなく、独自のネイティブ コンポーネントを使用してそれをレンダリングします。これは、アニメーション システム、コンポーネント ライブラリ、または完成したレンダラーではなく、信頼境界を越えて UI 構造とデータを移動する方法です。 ExodeUI は A2UI レンダラーではなく、Google と提携していません。
A2UIとは何ですか?
A2UI は、エージェント駆動インターフェイス用のプロトコルです。 AI エージェントは、大量のテキストを返したり、生成されたコードを実行したりする代わりに、UI を記述する JSON メッセージのストリーム (どのサーフェスを作成するか、どのコンポーネントが含まれるか、どのデータがそれらを埋めるか) を送信します。クライアントはこれらのメッセージを受信し、すでに信頼しているコンポーネントを使用して結果をレンダリングします。 A2UI は Google によって作成され、Apache 2.0 ライセンスを取得しており、CopilotKit とオープンソース コミュニティからの貢献を受けています。 2026 年 10 月の時点で、現在の製品仕様は v0.9.1 であり、v1.0 はリリース候補でした。
A2UI が解決しようとしている問題
エージェントは有用な回答を生み出すのは得意ですが、それをインターフェースとして提供するのは苦手です。テキスト応答では、比較表、注文フォーム、またはダッシュボードを表示できません。任意の HTML または JavaScript を生成すると、クライアントが作成していないコードを実行するようになるため、プレゼンテーションの問題が解決され、セキュリティの問題が発生します。 A2UI は 3 番目のルートを選択します。エージェントは制約された形式で UI を記述し、クライアントはそれをレンダリングする方法を決定します。エージェントはクライアントが承認したコンポーネントのみを使用でき、出力は実行可能コードではなくデータです。
A2UI サーフェスの構築方法
このプロトコルは、少数のメッセージ タイプのセットを使用します。正確なスキーマはバージョン間で異なるため、実装する前に仕様を確認してください。ただし、形状は安定しています。
- createSurface: レンダラーに新しいサーフェスを作成するように指示します。これは、エージェントが更新できるインターフェイスの領域です。
- updateComponents: そのサーフェス上のコンポーネント定義を追加または変更します
- updateDataModel: 構造を再送信せずに、コンポーネントが表示するデータを変更します。
- deleteSurface: 不要になったサーフェスを削除します
レンダラーとトランスポート
A2UI はトランスポートに依存しません。仕様ではメッセージについて説明しますが、メッセージの伝達方法については説明しません。このプロジェクトには、Angular、Flutter、Lit、React、Markdown のレンダラー実装と、AG-UI、A2A、MCP のトランスポート バインディングがリストされており、WebSocket、SSE、REST も使用できます。この柔軟性が重要です。同じエージェントの応答を、それぞれ独自の設計システムを使用する Web クライアント、モバイル アプリ、またはデスクトップ アプリケーションによってレンダリングできます。
A2UI がしないこと
A2UI は読みすぎやすいです。アプリにドロップできるコンポーネント ライブラリは同梱されておらず、それ自体では何もレンダリングされません。クライアントが制御するレンダラーとコンポーネント カタログが必要です。 UI の動きは決まりません。これは、ツールとデータをモデルに公開する MCP や、エージェントとフロントエンド間の対話イベントを伝達する AG-UI に代わるものではありません。また、エンジニアリング レビューの必要性がなくなるわけではありません。生成されたインターフェイスは、読み込み、空の状態とエラーの状態、権限とアクセシビリティを処理する必要があります。
A2UI vs AG-UI vs MCP
これら 3 つは同じ問題の異なる層を解決するため、一緒に言及されることがよくあります。便利な略記: A2UI はインターフェイスを記述し、AG-UI は対話を実行し、MCP はエージェントにツールとデータを提供します。 A2UI 自身のドキュメントでは、AG-UI が A2UI のトランスポート バインディングとして説明されており、A2UI は MCP を介して移動することもできます。これらは補完的なものであり、競合する標準ではありません。統合を選択する場合は、最も勢いのあるプロトコルからではなく、クライアントがレンダリングできるものと、すでにサポートしているトランスポートから始めてください。
アニメーションとインタラクションが適合する場所
A2UI は構造とデータを記述します。モーションはクライアントの関心事です。レンダラーは、サーフェスが即座に表示されるか、フェードインするか、前の状態から遷移するかを決定します。これは製品チームにとって朗報です。アニメーション システムがクライアント内に保持され、デザイン システムとアクセシビリティ設定を尊重できるからです。これは、A2UI 実装が自動的にアニメーション化されないことも意味します。生成されたインターフェイスでボタンの押下、状態遷移、またはマスコットの反応が必要な場合、クライアントはその動作を提供する必要があります。 ExodeUI はクライアントでインタラクティブ モーションを再生でき、AI コーディング ツール用の MCP サーバーを備えていますが、A2UI レンダラーではないため、A2UI レンダラーとして説明すべきではありません。
実装コード例
// Simplified shape of an A2UI message stream (schema differs by version).
{ "createSurface": { "surfaceId": "cart" } }
{ "updateComponents": { "surfaceId": "cart", "components": [ /* ... */ ] } }
{ "updateDataModel": { "surfaceId": "cart", "data": { /* ... */ } } }
{ "deleteSurface": { "surfaceId": "cart" } }覚えておきたい原則
- A2UI は、エージェント記述インターフェイス用の JSON プロトコルであり、Google によって作成され、Apache 2.0 でライセンスされています。
- クライアントは独自のコンポーネントを使用してレンダリングします。エージェントは任意の UI コードを実行しません
- メッセージを定義し、レンダラー、トランスポート、モーションをクライアントに任せます。
- アニメーション システムやドロップイン コンポーネント ライブラリではありません
- ExodeUI は A2UI レンダラーではなく、Google との提携はありません。