2026-10-08 発行(読了 8 分)
実プロダクトのアーキテクチャ・使用例から AI 開発の現在地を週 3 回・1 号 1 テーマで深掘り
エージェントの出力はずっとテキストとマークダウンだった。表を並べ替えたい、候補から一つ選びたい、ファイルを開いて直したい — こうした操作を「会話の往復」でこなすのは遅く、誤解も生む。2026年はここに標準が入った年だ。1月26日に MCP Apps が MCP 初の公式拡張として出て、ツールが HTML の UI を返し、ホストがそれを sandbox 付き iframe で描く形が Claude・VS Code・ChatGPT に広がった。一方 Google は A2UI で「コードではなくデータを送り、描くのはクライアント」という逆の設計を推し、8月に Gemini Enterprise で GA にした。そして 9月29日の OpenAI DevDay では、MCP Apps を土台に UI を会話の外 — サイドバー、横のパネル、ファイルビューア — へ出す拡張が発表された。論点は「UI を出すか」ではなく「誰が描き、どこに置くか」に移っている。
MCP Apps の仕組みは単純だ。ツール定義の _meta.ui.resourceUri が ui:// スキームのリソースを指し、そこに HTML/JavaScript がまとめて入っている。ホストはツール呼び出しに合わせてこのリソースを取得し、sandbox 付き iframe で描画する。iframe とホストは postMessage 上の JSON-RPC で双方向にやり取りし、ツールの入力・結果を UI に渡し、UI 側からのツール呼び出しやモデルへのコンテキスト更新を受け取る。サーバー開発者から見れば、自社の Web UI をほぼそのまま会話に持ち込める。
この形に各社がまとまった理由は、既存資産の流用と一回書けば複数ホストで動くことの二つだ。ChatGPT は独自の Apps SDK で先行していたが、ドキュメントでは「MCP Apps 標準を実装している」と明記し、独自キー openai/outputTemplate を互換エイリアスに格下げした。代わりに背負うのは安全性の負担で、公式発表は iframe sandbox・事前宣言テンプレートのレビュー・監査可能な JSON-RPC・UI 起点のツール呼び出しへのユーザー同意という 4 層で守る設計を示している。任意のコードを受け入れる以上、境界はホストが引くしかない。
A2UI は逆側から設計されている。エージェントが送るのは「どのコンポーネントをどう並べ、どのデータを結びつけるか」を記述した宣言的な JSON で、実行可能なコードではない。クライアントは信頼済みのコンポーネントのカタログを持ち、エージェントはそこにあるものしか要求できない。v0.9 ではクライアント定義関数(入力検証などに使う)とクライアント→サーバーのデータ同期が加わり、ユーザーが UI で編集した状態をエージェントへ返せるようになった。描画は React・Flutter・Angular・Lit の公式レンダラーが担い、トランスポートは MCP・WebSocket・REST・A2A などを選ばない。
Google がこの道を選んだのは、iframe 方式のコストを嫌ったからだ。初版の発表は、外部の信頼できない送り手から UI を受け取るために HTML/JS を iframe に入れる方式を「重く、見た目がちぐはぐになりうる」と書き、LLM が生成した任意コードの実行をリスクとして挙げている。カタログ型なら見た目はアプリのデザインシステムに揃い、Web だけでなくモバイルのネイティブ UI にも描ける。その代わり、エージェントはカタログにない UI を出せない。Gemini Enterprise は 8月17日に A2UI エージェントの登録を GA にしたが、マネージド側の一部の登録経路は A2UI 描画にまだ対応していないとリリースノートに明記しており、エコシステムは MCP Apps より狭い。
9月29日の DevDay で OpenAI が出した plugin extensions は、描画方式ではなく UI の置き場所を広げる拡張だ。各 UI は ui:// リソースに結びついた MCP App のままで、ツールの _meta に entrypoint を足すだけで場所が変わる。global ならサイドバーから全画面で開くアプリ、thread なら会話の横に開くパネル、file なら指定した拡張子(例: stl)のファイルを開くビューア兼エディタになる。加えて ChatGPT と MCP App の間で双方向にコンテキストを共有する Model-App Context 拡張も用意された。
これまでの MCP Apps は「ツール呼び出しの回答に添付される UI」で、会話が進めば流れて消えた。パネルやファイルビューアは会話と並行して居座る作業面で、ユーザーは UI を操作しながらモデルと話し続ける。こうなると UI 側の状態をモデルにどう見せるかが設計の中心に移り、OpenAI が文脈同期を独立した拡張に切り出したのはそのためだと読める(推測)。初期実装として Canva(サイドバーとプレビュー)、Figma(デスクトップでの composer メンション)、Adobe(Acrobat・Photoshop のファイルハンドラ)が挙がっており、Codex にも同じ拡張が入る。仕様は MCP と MCP Apps を拡張するかたちで公開されたが、現時点では OpenAI 固有の拡張で、他ホストが追随するかは分からない。