🧠 AI プロダクト動向

2026-10-08 発行(読了 8 分)

実プロダクトのアーキテクチャ・使用例から AI 開発の現在地を週 3 回・1 号 1 テーマで深掘り

今号のテーマ AGENT-UI

エージェントの UI は「誰が描くか」で二つに割れた — iframe で持ち込む MCP Apps、カタログで描かせる A2UI、そして会話の外へ

エージェントの出力はずっとテキストとマークダウンだった。表を並べ替えたい、候補から一つ選びたい、ファイルを開いて直したい — こうした操作を「会話の往復」でこなすのは遅く、誤解も生む。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 を出すか」ではなく「誰が描き、どこに置くか」に移っている。

TL;DR — 3 行で
📐 パターン 1: 持ち込み型: ツールが HTML を返し、ホストが iframe に閉じ込める

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 層で守る設計を示している。任意のコードを受け入れる以上、境界はホストが引くしかない。

MCP Apps(MCP 公式拡張)
ツールが ui:// の HTML リソースを宣言し、ホストが sandbox 付き iframe で描画、JSON-RPC over postMessage で双方向通信する
2026年1月26日に MCP 初の公式拡張として公開。Claude(Web・デスクトップ)、Goose、VS Code Insiders が初日から対応し、ChatGPT も同週から展開すると明記された。セキュリティは iframe sandbox・テンプレートの事前宣言・監査可能なメッセージ・ユーザー同意の 4 層で組まれている。
📄 一次ソース
VS Code(チャット内の MCP Apps 描画)
エージェントのツール呼び出し結果を、ドラッグで並べ替えるリストやフレームグラフとしてチャット内に表示する
VS Code チームは「MCP Apps を完全サポートした最初の主要 AI コードエディタ」とし、Storybook の MCP サーバーがコンポーネントのライブプレビューをチャットに出す例を挙げた。並べ替えを手で直すか、エージェントに頼むかを同じ UI で選べる点が、テキスト往復との違いだ。
📄 一次ソース
示唆: 既に Web UI を持つ SaaS が複数の AI ホストに顔を出すなら MCP Apps が最短経路。ただし UI からのツール呼び出しは同意フローを通る前提で設計し、UI に状態を閉じ込めず「ツールを呼べば同じ結果になる」形を保っておくと、UI 非対応ホストでも劣化して動く。
📐 パターン 2: カタログ型: エージェントはデータだけを送り、描くのはクライアント

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 より狭い。

A2UI v0.9(Google)
宣言的 JSON + クライアント側の承認済みコンポーネントカタログで描画し、v0.9 でクライアント定義関数と双方向データ同期を追加
2026年4月17日公開。既存のコンポーネントカタログでそのまま描けることを前面に出し、オプションのコンポーネント群の名前を「Standard」から「Basic」に変えて「新しい部品を用意する必要はない」と位置付け直した。MCP は依存先ではなく選べるトランスポートの一つで、MCP Apps との連携はロードマップ項目に入っている。
📄 一次ソース
A2UI 初版の設計意図(Google)
「データのように安全で、コードのように表現力がある」を掲げ、iframe 方式を明示的に退けた
2025年12月15日の初版発表は A2UI を「実行可能なコードではなく宣言的なデータ形式」と定義し、エージェントはクライアントの信頼済みカタログからしか部品を選べないとした。MCP Apps と比べたとき、安全性の担保を sandbox ではなく表現力の制限で得ている点が本質的な違いになる。
📄 一次ソース
示唆: 自社アプリの中にエージェントを組み込み、見た目をデザインシステムに揃えたい、あるいはモバイルのネイティブ描画が要るならカタログ型が向く。判断基準は「描画ロジックを誰が持つか」で、UI を提供する側がホストの外にいるなら MCP Apps、自分がホストなら A2UI と考えると迷いにくい。
📐 パターン 3: 置き場所の拡張: UI が会話の中から sidebar・パネル・ファイルビューアへ出た

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 固有の拡張で、他ホストが追随するかは分からない。

ChatGPT plugin extensions(OpenAI MCP Extensions)
MCP App に global / thread / file の entrypoint を宣言させ、サイドバー・会話横パネル・ファイルビューアに配置する
UI 本体は MCP Apps のまま、置き場所だけを _meta で指定する設計で、既存の MCP App を作り直さずに常駐型へ移せる。composer メンションはデスクトップアプリ限定、Web の Free・Go プランへの提供は「近日」とされ、展開は段階的だ。
📄 一次ソース
ChatGPT の UI 実装ガイド
まずインライン、必要なときだけ fullscreen や picture-in-picture に広げる。描画用ツールだけに resourceUri を付ける分離パターンを推奨
OpenAI は「ChatGPT は MCP Apps 標準を実装している」と明記し、データ取得ツールと描画ツールを分け、UI を出すツールだけに _meta.ui.resourceUri を付けるよう勧めている。UI を再マウントせずにデータだけ更新できるため、常駐型 UI の前提になる構成だ。
📄 一次ソース
示唆: UI を会話の外に常駐させるなら、「UI の現在の状態をモデルがいつ・どこまで見られるか」を最初に決める。データ取得と描画のツールを分けておけば、インライン・パネル・ファイルビューアのどこに置いても同じサーバー実装を使い回せる。
✍️ 編集後記 MCP Apps と A2UI の違いは、安全性を sandbox で買うか、表現力を絞ることで買うかの違いだ。どちらが勝つかより、UI が回答の添付物から常駐する作業面に変わりつつあることの方が設計への影響は大きい。会話ログしか見ていないエージェントは、ユーザーが今パネルで何を触っているかを知らない — 次に詰めるべきはそこになる。
🔗 今号の動向ピックアップ
📚 過去号
2026-10-10
エージェントコマースは「一つの決済プロトコル」をやめた — 発見・同意の証明・本人ログインを別レイヤーに切り分ける設計へUCP は加盟店が /.well-known/ucp に能力を公開し、エージェント側と「共通する能力だけ」を交渉で残す設計。OpenAI も ACP の主軸をチャット内決済から商品カタログの受け渡しへ移し、決済は加盟店側に戻した。
2026-10-06
音声エージェントは「話す層」と「考える層」を分けた — カスケードか音声直結かの二択が終わった理由OpenAI の GPT-Live-1 は会話の進行だけを担い、推論とツール実行は裏側のテキストモデルへ非同期に委譲する二層構成を採った。
2026-10-03
2026-10-01
エージェントは「呼び出すたびに消える」から「状態を持ち続ける」へ — OpenAI・Google・Alibabaが同時に永続化レイヤーを足したOpenAIの「dots」はユーザーごとに専用クラウドコンピュータを割り当て、ChatGPT・Slack・Teamsを横断して会話間の文脈を保持する常駐エージェント。
2026-09-29
エージェントの長期記憶は「要約」をやめた — 編集可能なファイル、共有された手順、非破壊のグラフへClaudeは会話終了後の要約をやめ、対話中にトピック単位のファイルへ直接書き込み、ユーザーが個別に編集できる方式に切り替えた。
2026-09-26
マルチエージェント協調は「並列に投げる」から「役割を絞った2体」に収束した — Fusion 型アーキテクチャが解いた失敗伝播問題Cognitionは「分散マルチエージェントは前提の食い違いで失敗が伝播する」と自ら警告した後、lead+sidekickの2体だけに絞った制約付き構成「Fusion」を主力製品化し、2026年9月にローカル環境まで展開した。
2026-09-24
カスタマー対応エージェントの設計は「決定木」から「自然言語手順×コードの二層構造」へDecagonは決定木を捨て、業務担当者が自然言語で書いた手順を構造化ロジックにする一方、返金などの機微操作だけコードで検証するAOPへ移行し、NG.CASHでは解決率が70%まで向上した。
2026-09-22
モデルルーティングが開発ツールの既定機能になった — 選ぶのは人間ではなく分類器GitHub Copilotは9月にauto model selectionへ「efficiency/balance/intelligence」の3段階ティアを追加し、Cursorは60万件超の実利用データで学習した分類器(Cursor Router)でモデル選定を自動化した。
2026-09-19
エージェントの権限設計は「毎回確認」から「境界を先に固定する」へ移ったOpenAI CodexとAnthropicのClaude Codeは、サンドボックスの制限強度と確認ダイアログの要否を別軸にし、境界内の行為は原則自動承認する設計にそろえた。
2026-09-17
コード検索の設計が三方向に割れた — ベクトルDBを捨てる陣営、極める陣営、置き換える陣営Claude Code は埋め込みベースのRAGを捨て、grep/globの反復探索に完全移行——再インデックスの陳腐化とコードアップロードのセキュリティリスクを避けるため。
2026-09-15
エージェント実行基盤のマネージド化 — 3社が同時に「実行環境を貸す側」に回ったOpenAIが9月10日、Codexハーネスをagents/environments/sessions/eventsの4プリミティブに集約した Agents API を公開ベータで公開。基盤自体の追加課金はなくトークン・ツール実費のみ。
2026-09-12
コンテキストは会話ログではない — Working Context / Session / Memory / Artifacts への分離が実装標準になったGoogle ADKは2026年9月、コンテキストを Working Context・Session・Memory・Artifacts の4層に分離し、閾値到達で非同期に要約するcompactionを実装したと公式ブログで説明した。
2026-09-10
Agent Skills という第3のレイヤー — プロンプトでもRAGでもなく「必要になるまで読まない」設計Agent Skillsは「メタデータ(~100トークン)→本文(<5000トークン推奨)→付随ファイル」の3段階でコンテキストに読み込む、プログレッシブディスクロージャー設計。
2026-09-08
エージェント評価の再設計 — テキスト一致から状態検証、そして「修正がテストになる」仕組みへAnthropicはテキスト一致の判定から、環境の状態が実際に変わったかを見る outcome/state チェックへの転換を公式に推奨している。
2026-09-03
長時間稼働エージェントの状態管理 — 「会話の保存」から「プロセスの永続化」へGoogle ADKやMastraは、ツール呼び出しなどステップの境界ごとに実行状態をシリアライズして外部ストレージに書き込み、コンテナが落ちても直前のステップから再開できる設計に収束している。
2026-09-01
コードレビューエージェントの設計 — 差別化は検出率ではなく、文脈の取り方と『直すところまで』の範囲に移ったGitHub Copilot・Qodo・Cursor Bugbot・Cloudflareの内製ツールが、diff単体の解析から脱却し、リポジトリ全体・PR履歴・過去の指摘への反応まで動的に文脈を取りに行く設計へ収束している
2026-08-29
構造化出力は「お願い」から「強制」へ — 3社がグラマー制約デコーディングで足並みを揃えた2026年OpenAI・Anthropic・Google の主要3社が、JSON Schema をトークン生成レベルで強制する「グラマー制約デコーディング」に共通で対応した
2026-08-27
マルチエージェント協調 — 割っていいのは「コンテキストの切れ目」だけAnthropic は Research 機能で並列サブエージェントを使い内部評価で90.2%の性能改善を報告するが、トークン消費は通常の約15倍になるとも明記している。
2026-08-25
エージェントのメモリ設計 — 生ログでも単一要約でもなく、書き換え可能な単位に分解するClaude は2026年7月、記憶を単一のローリング要約から個別の書き換え可能なエントリへ移行。ChatGPT は非同期の「Dreaming」処理で古い事実を時制ごと書き換える。
2026-08-22
プロンプトキャッシュはコスト最適化ではない — 「プレフィックス固定」というアーキテクチャ制約キャッシュ命中率はもはや副次指標ではなく、Manus はこれを「本番エージェントで最重要のメトリック」と明言している。
2026-08-20
接続ツールが増えるほど遅くなる問題 — コード実行と検索遅延ロードの2つの答えAnthropicは公式エンジニアリングブログで、MCPツールをコードAPIとして提示しファイルシステム越しにオンデマンドで読み込ませる方式により、あるタスクのトークン消費を150,000から2,000(98.7%減)に削減したと報告した
2026-08-18
MCPエージェントの認可設計 — 同意画面を「増やす」実装と「無くす」実装に分岐したMCPの権限設計は「サーバー単位のOAuth」から「ツールごとのスコープ」へ移り、WorkOSやCloudflareが個別ツール内での権限チェックを標準パターンとして提示している。
2026-08-15
エージェントの評価・観測性 — 「最終出力の一致」から「軌跡(トラジェクトリ)の妥当性」へAnthropic は Tasks/Graders/Transcripts の三要素でエージェント評価を構造化し、1回でも成功する確率 pass@k と毎回成功する確率 pass^k を分けて計測する運用を提示した。
2026-08-13
モデルルーティング — 1モデルに全部背負わせない設計が標準になったVercel AI GatewayやGitHub Copilot Autoは、ヒューリスティック分類→難易度ティア判定→プロバイダ違いのフォールバック、という二段構成のタスク別ルーティングをすでに標準実装にしている。
2026-08-11
コンテキスト圧縮はどこで行うべきか — API・モデル訓練・ハーネス、3層に割れた実装場所Anthropic は compaction をサーバーサイド API のオプションとして実装し、モデル本体は変更していない
2026-08-08
エージェントのコード実行基盤 — サンドボックスは「重い専用マシン」と「軽いアイソレート」に分かれ始めたCloudflare Sandboxes と Vercel Sandbox はどちらも「持続する専用マシン」型サンドボックスをGA化し、スナップショット復元でコールドブート30秒を2秒程度まで縮めた。
2026-08-06
RAG 構成パターンの現在地 — 二段構成の次は、検索そのものをエージェントに埋め込むPerplexity は Vespa 上で lexical・embedding のハイブリッド検索から cross-encoder rerank へ絞り込む多段構成を採り、Databricks は同じ構成を単一パラメータで追加できる機能として一般化した。
2026-08-04
ワークフロー型 vs エージェント型 — 複雑さを足す前に何を確かめるかAnthropic は「経路を誰が決めるか」で workflow と agent を定義し、単純な方から試すべきだと明言している。
2026-08-01
コンテキストエンジニアリング — 「何を見せるか」ではなく「何を見せないか」を設計する事前に全部読み込むのではなく、ファイルパスやURLなど軽量な参照を渡して実行時に取得する「Just-in-Time retrieval」がCursorやAnthropicの標準手法になった。
2026-07-30
マルチエージェント協調 — 「書き込みを一本化する」が唯一の合意点になった理由Cognition は2025年、複数エージェントの並行書き込みが矛盾した判断を生むとして「マルチエージェントを作るな」と主張したが、2026年4月に態度を転換し「書き込みは一本化し、エージェントは行動ではなく知性を提供する」構成に絞って実例を公開した
2026-07-28
エージェントのメモリ設計 — 保存容量ではなく「書き込みの境界線」を設計するAnthropic は Claude Managed Agents の記憶をファイルとして保存し、監査ログ・ロールバック・スコープ別パーミッションを標準機能として public beta で提供している
2026-W30
エージェントの評価・観測性 — 「良さそう」を数値にする前に何を測らないかを決めるAnthropic は Claude Code の品質劣化が6週間、内部の eval・コードレビュー・単体テストをすべてすり抜けていたと自ら公表し、変更ごとの広範な eval とソーク期間の導入を表明した