AIエージェントが自らUIを組み立てる!安全で美しいインターフェースを自動生成する新標準 — A2UI

google/A2UITypeScript13.2k

A2UIは、AIエージェント(自動で作業を行うAIプログラム)がチャットの会話中に、ボタンやフォームなどのリッチな画面を安全に生成・表示できるようにするGoogleのオープンソースプロジェクトです。エージェントは「こんなUIを表示してほしい」という指示をJSON(データの記述形式)で送り、受け取ったアプリ側が自分のフレームワークで画面を描画する仕組みで、まるで「メニューの注文書」のように安全なデータのやり取りだけでUIが実現されます。プログラムコードを直接実行しないためセキュリティが高く、Flutter、Angular、Litなど様々なフレームワークで同じUI指示を表示できるのが大きな特徴です。AIエージェントを開発する企業やチームが、チャットボットや業務自動化ツールに動的なUIを組み込みたいときに活用できます。

🔥 なぜ話題?

GoogleがA2A(Agent-to-Agent)プロトコルやAG UIなどエージェント間連携の標準化を推し進める中で、エージェントが安全にUIを生成する仕組みとしてA2UIが公開され、AIエージェント開発コミュニティから大きな注目を集めています。特に、LLMが生成するコードをそのまま実行するセキュリティリスクを回避しつつ、リッチなUIを実現できるアプローチが画期的と評価されています。

💡 こう使える!

例えば、社内のAIチャットボットに「来週の出張の交通費精算をして」と話しかけると、エージェントが日付選択、金額入力欄、領収書アップロードボタンを含む精算フォームをその場で自動生成し、チャット画面内に表示してくれるといった使い方ができます。

ユースケース: AIチャットボットが会話の流れに応じて、予約フォームやダッシュボードなどの操作画面をその場で自動生成して表示する場面で使えます。

  • AIが生成するUIはデータ形式なので安全 — 任意のコード実行リスクがない
  • Flutter・Web・Litなど複数フレームワークで同じJSON指示を描画可能
  • LLMが逐次生成しやすいフラットリスト構造で、段階的なUI更新に対応

技術情報

言語

TypeScript

ライセンス

Apache-2.0

最終更新

2026-03-13

スター数

13,153

フォーク数

985

Issue数

210

技術詳細

アーキテクチャ・仕組み

A2UIは「UI生成」と「UI実行」を分離する4段階のフローで動作します:

  1. Generation(生成): Geminiなどの LLM がUIコンポーネントの構成を記述した A2UI Response(JSON)を生成
  2. Transport(転送): A2AプロトコルやAG UIなどを通じてクライアントに送信
  3. Resolution(解析): クライアント側の A2UI Renderer が JSON をパース
  4. Rendering(描画): 抽象的なコンポーネント(例: type: 'text-field')をクライアント固有のウィジェットにマッピングして描画

セキュリティモデル

  • A2UIは宣言的データ形式であり、実行可能コードではない
  • クライアント側で事前承認済みの「カタログ」に登録されたコンポーネント(Card, Button, TextFieldなど)のみ描画可能
  • 「Smart Wrapper」パターンにより、iframeサンドボックスや独自のセキュリティポリシーを開発者が制御可能
  • 「trust ladder(信頼レベルの段階制御)」をカスタムコンポーネント内で実装可能

LLMとの親和性

  • UIはフラットリスト+IDリファレンスで表現され、LLMが逐次的に生成しやすい構造
  • 段階的レンダリング(progressive rendering)に対応し、レスポンシブなUX を実現
  • 会話の進行に応じて差分だけを効率的に更新可能

対応環境・フレームワーク

カテゴリ対応状況
レンダラー(現在)Lit(Webコンポーネント)、Flutter(GenUI SDK経由)
レンダラー(計画中)React、Jetpack Compose、SwiftUI
トランスポートA2Aプロトコル、AG UI(REST等は計画中)
LLMJSON出力可能な任意のモデル(サンプルはGemini使用)
エージェントFW(計画中)Genkit、LangGraph

拡張性・カスタマイズ

  • オープンレジストリパターン: サーバー側の型をカスタムクライアント実装にマッピング可能
  • Smart Wrapper: 既存UIコンポーネント(ネイティブウィジェット、Reactコンポーネント等)をA2UIのデータバインディング・イベントシステムに接続可能

主なユースケース

  • 動的フォーム生成: 会話コンテキストに応じたカスタムフォーム(日付ピッカー、スライダー等)
  • リモートサブエージェント: 旅行予約エージェント等の専門エージェントがUI付きの結果を返却
  • 適応型ワークフロー: クエリに応じた承認ダッシュボードやデータ可視化の動的生成

現在のステータスとロードマップ

  • 現在 v0.8(パブリックプレビュー) — 仕様・実装は動作するが進化中
  • v1.0仕様の安定化を目指している
  • React、Jetpack Compose、SwiftUI等の公式レンダラー追加を計画

ライセンス

  • Apache 2.0 ライセンス(商用利用可能)

連携ツール

インストール・クイックスタート

前提条件

  • Node.js(Webクライアント用)
  • Python(エージェントサンプル用)
  • Gemini APIキーが必要

レストラン検索デモの実行

  1. リポジトリをクローン:
git clone https://github.com/google/A2UI.git
cd A2UI
  1. APIキーを設定:
export GEMINI_API_KEY="your_gemini_api_key"
  1. エージェント(バックエンド)を起動:
cd samples/agent/adk/restaurant_finder
uv run .
  1. クライアント(フロントエンド)を起動(別ターミナル):
cd renderers/markdown/markdown-it
npm install && npm run build
cd ../../web_core
npm install && npm run build
cd ../lit
npm install && npm run build
cd ../../samples/client/lit/shell
npm install && npm run dev

参考になる外部の関連記事

過去のトレンド履歴

関連リポジトリ

WhatsApp・Telegram・Slack…22以上のチャットアプリを1つのAIアシスタントに統合! — openclaw

openclaw/openclawTypeScript301.9k

OpenClawは、自分のパソコンやサーバーで動かせる個人用AIアシスタントです。WhatsApp、Telegram、Slack、Discord、LINE、iMessageなど22以上のメッセージアプ

daytonaio/daytona

daytonaio/daytonaTypeScript57.6k

DaytonaはAI生成コードを安全かつ柔軟に実行するためのインフラストラクチャプラットフォームです。AI開発者がコード生成後の実行環境を気にすることなく、セキュアな環境でコードをテストできます。クラ

AIコーディング助手の「記憶喪失」を解決!セッションをまたいで文脈を自動保存・復元 — claude-mem

thedotmack/claude-memTypeScript56.7k

claude-memは、AIコーディングツール「Claude Code」のプラグインで、コーディングセッション中にClaudeが行ったすべての操作を自動的に記録し、AIで圧縮・要約した上で、次回のセッ

プログラミング不要!ドラッグ&ドロップでAIエージェントを作れるビジュアルツール — Flowise

FlowiseAI/FlowiseTypeScript50.3k

Flowiseは、AIエージェント(自律的に判断して動くAIプログラム)をプログラミングなしで構築できるオープンソースのツールです。パズルのピースを組み合わせるように、画面上でブロックをドラッグ&ドロ

Claude Codeの内部設計を12ステップで完全理解!AIエージェントの「乗り物」を自分で作る学習教材 — learn-claude-code

shareAI-lab/learn-claude-codeTypeScript43.4k

learn-claude-codeは、Anthropic社のClaude Codeというコーディングエージェントがどのような仕組みで動いているかを、12段階のレッスンで段階的に学べる教材リポジトリです