🧠 AI プロダクト動向

2026-08-29 発行(読了 6 分)

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

今号のテーマ STRUCTURED-OUTPUT

構造化出力は「お願い」から「強制」へ — 3社がグラマー制約デコーディングで足並みを揃えた2026年

「JSON で返して」とプロンプトに書いて祈るフェーズは終わった。OpenAI が2024年8月にJSON Schema をトークン生成そのものに強制するアプローチを出してから1年半、Anthropic は2026年3月に構造化出力とstrict tool use をGA、Google も2025年11月にGemini API のJSON Schema 対応範囲を大幅拡張した。3社が同じ技術(グラマー制約デコーディング)に収束したことで、エージェント設計における「壊れたJSON をどう扱うか」という問いそのものが過去のものになりつつある。

TL;DR — 3 行で
📐 パターン 1: 「お願い」から「強制」へ — グラマー制約デコーディングの仕組み

従来のJSON出力は、プロンプトで「このスキーマ通りに返して」と指示し、返ってきたテキストをjson.loadsでパースし、失敗したらリトライする、という運任せの設計だった。グラマー制約デコーディングはこれを生成側の制約に変える。JSON Schema をコンテキストフリー文法(CFG)に変換し、次のトークン候補をその文法に一致するものだけに動的にマスキングすることで、モデルが構造的に間違ったトークンを出力できないようにする。

業界がここに収束したのは、プロンプト頼みの遵守率がどれだけ高くても、エージェントの多段処理では1回の失敗が全体を止めるからだ。OpenAI は自社ベンチマークで、この方式に切り替えたgpt-4o-2024-08-06が複雑なJSON Schema追随評価で100%を記録した一方、旧世代のgpt-4-0613は40%未満だったと報告している。数パーセントの失敗率でも、ステップ数が増えるほど累積的に致命傷になる。

OpenAI API Structured Outputs(gpt-4o-2024-08-06)
JSON Schema をCFGに変換し、トークン単位で生成を制約
この方式を最初に本番投入した事例。公式ブログで、旧来のプロンプト依存方式との精度差(100% vs 40%未満)を具体的な評価スコアとして公開しており、後続2社が同方式を採用する根拠になった
📄 一次ソース
示唆: 新規にJSON出力を要件にする機能は、プロンプト指示ではなく各社のstrict/structured-outputオプションを最初から使う。「プロンプトで頼んでパースでリカバリ」は技術的負債として扱う。
📐 パターン 2: 2026年、Anthropic・Google も追いついた — ただし対応スキーマの範囲は揃っていない

Anthropic は2026年3月、Claude Developer Platform とAWS Bedrock 上で構造化出力とstrict tool use を一般提供した。公式ドキュメントは「strict: trueinput_schemaを文法にコンパイルし、生成時点でスキーマ違反を排除する」と明記しており、コンパイル済みスキーマは最大24時間キャッシュされる。Google も2025年11月、Gemini API のJSON Schema 対応を拡張し、anyOf$refprefixItemsなどのキーワードとプロパティの順序保持に対応、Pydantic やZod のスキーマがそのまま通るようになったと発表した。

ただし「JSON Schema に対応した」の中身は3社で一致していない。Claude のドキュメントには専用の「JSON Schema limitations」ページがあり、サポート対象外のキーワードが明記されている。Google は再帰スキーマや条件分岐まで踏み込んでいるが、対応モデルはGemini 2.5系に限られる。JSON Schema という共通仕様の名前を使っていても、実装が保証する範囲は各社の実装依存だということが、複数モデルを併用するプロダクトほど効いてくる。

Claude Developer Platform Structured Outputs / Strict Tool Use
2026年3月にAPI・Bedrockで一般提供、グラマー制約サンプリングで出力とツール引数の両方を保証
公式ドキュメントがキャッシュの挙動(24時間)とJSON Schemaの非対応キーワードを明示しており、他社より仕様の透明性を優先した設計であることがわかる
📄 一次ソース
Gemini API 構造化出力
2025年11月にJSON Schemaキーワード対応を拡張し、プロパティ順序を保持
公式ブログで、Pydantic/Zodのスキーマ定義がそのまま使えるようになったと明言しており、既存のバリデーションライブラリ資産を移行コストなく転用できる設計を狙ったことがわかる
📄 一次ソース
示唆: 複数プロバイダーを切り替え可能にするプロダクトは、JSON Schemaの仕様書ではなく各社の「サポート範囲」ドキュメントを突き合わせてから設計する。名前が同じでも保証内容は同じではない。
📐 パターン 3: 対象は「最終出力」から「途中のツール呼び出し」へ拡大した

同じ技術は、エージェントが最後に返す答えだけでなく、途中のツール呼び出しの引数にも適用され始めている。OpenAI の関数呼び出しガイドは、strict: trueを設定することで「best effort ではなく確実に」スキーマ通りの引数になると明記し、その代わりadditionalProperties: falseと全フィールドのrequired指定を要求する制約を課している。Anthropic のstrict tool use も同じグラマー制約サンプリングのパイプラインをツール定義に対して使う。

これが効くのは多段エージェントだ。1つのツール呼び出しの引数が壊れれば、そこから先の全ステップが止まるか誤動作する。従来は「呼び出し後に検証し、失敗したらモデルにもう一度呼ばせる」というリトライ設計で吸収していたが、これは呼び出しのたびにレイテンシとコストを積み増す。生成時点で構造を保証する方式に倒せば、このリトライループ自体が不要になる。

OpenAI Function calling(strict mode)
関数呼び出しの引数生成にもCFG制約を適用し、best effortをやめる
公式ガイドが、strict modeを有効にする条件(additionalProperties: falseと全フィールドrequired)を明示しており、引数の型不一致によるランタイムエラーを構造的に排除する設計であることがわかる
📄 一次ソース
示唆: 多段エージェントを新規に組むなら、ツール引数の正しさをリトライループで担保するのではなく、対応モデルのstrict機能を最初から有効化し、リトライは「引数は正しいが実行が失敗した場合」専用に絞る。
✍️ 編集後記 構造化出力の技術自体は目新しくない。ただし「3社が同じ保証を提供する」状態になったことで、開発者側の設計判断が「モデルの出力をどう検証・修復するか」から「どの範囲までモデルに保証させ、どこからをアプリ側の責務にするか」に移った。パースエラー対策のコードを書く時間は減るが、代わりに各社のスキーマ対応範囲表を読む時間が増える——トレードオフの中身が変わっただけだ、と捉えておくのが実務的だろう。
🔗 今号の動向ピックアップ
📚 過去号
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-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 とソーク期間の導入を表明した