AdCP v3 への移行
AdCP v3 はメディアバイの枠を越えて、ガバナンス、ブランドセーフティ、会話型ブランド体験へとスコープを拡張するメジャーリリースです。本ガイドでは v2.x からのアップグレードに必要な内容をまとめています。
v3 に移行する理由
v3 の主な違い
v3 は AdCP の戦略的拡張を示します。
| 領域 | v2.x | v3.x |
|---|
| プロトコル範囲 | Media Buy, Signals, Creative | + Governance, Sponsored Intelligence |
| チャンネルモデル | フォーマット指向 5 チャンネル | 計画指向 19 チャンネル |
| 機能ディスカバリ | エージェントカード拡張 | 実行時 get_adcp_capabilities タスク |
| クリエイティブ割り当て | ID 配列のみ | プレースメント指定付きの重み付き割り当て |
| ジオターゲティング | 暗黙に米国中心 | 名前付きシステムを明示(グローバル) |
主要テーマ
- メディアプランとの整合 - 新チャンネル分類は、技術的なレンダリングだけでなく実際の予算配分を反映。
- ガバナンスとブランドセーフティ - ガバナンスプロトコルでプロパティリストとコンテンツ基準を扱い、エンタープライズの安全性ワークフローを支援。
- 会話型コマース - Sponsored Intelligence プロトコルがブランドエージェントの呼び出し方を定義し、リッチな会話体験を提供。
- グローバルターゲティング - 名前付きジオシステムで米国中心の前提を排除し、国際市場をサポート。
- 実行時ディスカバリ - 静的なカード拡張を
get_adcp_capabilities に置き換え、動的に機能を取得。
役割別の移行ポイント
構築しているものに応じて移行手順が異なります。
販売側エージェント(パブリッシャー、SSP、ネットワーク)
- 非互換: データ構造を v3 形式に更新(チャンネル、価格、ジオターゲティング)
- 新規実装: 実行時ディスカバリ用に
get_adcp_capabilities を実装
- 新規連携: ガバナンスエージェントと連携する場合、
get_products でプロパティリストフィルターをサポート
バイヤーエージェント/オーケストレーター(DSP、エージェンシー、ブランド)
- 非互換: すべてのリクエスト/レスポンス処理を v3 形式に更新
- 新しい利用:
get_adcp_capabilities で販売側の能力を実行時に取得
- 新規連携: プロパティリストで在庫を絞り込み、会話型ブランド体験のために SI セッションを呼び出す
Signals エージェント(データ/計測ベンダー)
- 非互換: スキーマ参照を v2 から v3 に更新
- チャンネル変更なし: Signals プロトコルはコアモデルでメディアチャンネルを使用しません
Creative エージェント(クリエイティブ管理、DCO)
- 非互換:
required ブールを持つ assets 配列をサポートし、フルなアセットディスカバリに対応
- チャンネル変更なし: フォーマットの
type(video/display/audio)は IAB のクリエイティブ分類でありメディアチャンネルではありません
Governance エージェント(検証/ブランドセーフティベンダー) — v3 で新規
Sponsored Intelligence エージェント(ブランドエージェント) — v3 で新規
非互換の変更
チャンネル enum は、計画指向の 19 チャンネルに全面置き換えられました。
チャンネル値を読み書きするすべてのコードを更新してください。
v2.x チャンネル (5):
["display", "video", "audio", "native", "retail"]
v3.x チャンネル (19):
[
"display", "olv", "social", "search", "ctv", "linear_tv",
"radio", "streaming_audio", "podcast", "dooh", "ooh",
"print", "cinema", "email", "gaming", "retail_media",
"influencer", "affiliate", "product_placement"
]
チャンネル対応表
| v2 Channel | v3 Channel(s) | Notes |
|---|
display | display | 標準ディスプレイは変更なし |
video | olv, ctv, linear_tv, cinema | 配信コンテキスト別に分割 |
audio | radio, streaming_audio, podcast | フォーマットと配信で分割 |
native | Removed | 代わりにフォーマットの native プロパティを使用 |
retail | retail_media | 明確化のため名称変更 |
完全な定義は Media Channel Taxonomy を参照。
移行手順
- チャンネル使用箇所を棚卸し - コード中でチャンネル値を読み書きする箇所をすべて特定
- 旧→新のマッピング - 上記テーブルに従い値を変換
- フィルターを更新 - チャンネルでフィルターする場合は新しい値に置き換え
- 十分にテスト - チャンネル不一致は検証エラーの原因に
価格オプションのフィールド名称変更
価格オプションの意味を明確化し、ハード制約とソフトな目安を分離しました。
v2.x:
{
"pricing_option_id": "cpm_usd_auction",
"pricing_model": "cpm",
"currency": "USD",
"price_guidance": {
"floor": 10.00,
"p50": 15.00,
"p75": 18.00
}
}
v3.x:
{
"pricing_option_id": "cpm_usd_auction",
"pricing_model": "cpm",
"currency": "USD",
"floor_price": 10.00,
"price_guidance": {
"p50": 15.00,
"p75": 18.00
}
}
フィールド変更
| v2 Field | v3 Field | Notes |
|---|
fixed_rate | fixed_price | 価格であることを明確化(レートではない) |
price_guidance.floor | floor_price | ハード制約としてトップレベルに移動 |
意味の違い
- ハード制約 (
fixed_price, floor_price) - 違反すると入札拒否される出版社の強制価格
- ソフトな目安 (
price_guidance.p25/.p50/.p75/.p90) - 過去分布を示し入札調整に利用
移行手順
- すべての価格オプションで
fixed_rate を fixed_price にリネーム
price_guidance 内の floor をトップレベルの floor_price へ移動
- リーダー側で新フィールドを読むよう更新
- オークション入札が適切にフロアを尊重するかテスト
移行期間の扱い: 移行中は旧・新フィールドが混在する場合があります。両方チェックする実装を検討してください。const price = option.fixed_price ?? option.fixed_rate;
const floor = option.floor_price ?? option.price_guidance?.floor;
v3 で書き出す側は新フィールドのみを使用してください。旧フィールド(fixed_rate, is_fixed, price_guidance.floor)は v3 リーダーでは認識されません。
重み付きのクリエイティブ割り当て
creative_ids 配列を creative_assignments オブジェクトに置き換えます。
v2.x:
{
"creative_ids": ["creative_1", "creative_2"]
}
v3.x:
{
"creative_assignments": [
{ "creative_id": "creative_1", "weight": 60 },
{ "creative_id": "creative_2", "weight": 40 }
]
}
移行手順
- すべての
creative_ids 配列を creative_assignments に置換
- 旧 JSON を受け入れる場合は、
creative_ids を重み均等な creative_assignments にマッピング
- プレースメント単位のターゲティングがある場合は
placement_ids を組み合わせる(該当する場合)
地理ターゲティングの命名されたシステム
v3 ではジオターゲティングに名前付きシステムを使用し、US 前提を排除します。
例: v2 から v3 への変換
v2.x (暗黙に米国州):
{
"geo": {
"states": ["CA", "NY"]
}
}
v3.x (明示的なシステム名):
{
"geo": {
"systems": [
{
"name": "us_states_iso",
"codes": ["US-CA", "US-NY"]
}
]
}
}
推奨システム名
us_states_iso — ISO 3166-2 コード
ca_provinces_iso — カナダ州/準州 (ISO 3166-2)
countries_iso — 国コード (ISO 3166-1 alpha-2)
dma_nielsen — Nielsen DMA コード
移行手順
- 既存のジオフィールドを確認し、暗黙のシステムを特定
- 適切なシステム名を選び、コードを変換(例: CA → US-CA)
- バリデーションを更新し、未知のシステム名を拒否
- 国際キャンペーンで複数システムが混在しないか確認
クリエイティブアセットディスカバリ
v3 のフォーマットは assets 配列に required ブールを含み、必須/任意を明確化します。
v2.x:
{
"assets": [
{ "item_type": "individual", "asset_id": "video_file", "asset_type": "video" }
]
}
v3.x:
{
"assets": [
{
"item_type": "individual",
"asset_id": "video_file",
"asset_type": "video",
"required": true,
"requirements": {
"duration": "30s",
"format": ["MP4"],
"resolution": ["1920x1080", "1280x720"]
}
},
{
"item_type": "individual",
"asset_id": "companion_banner",
"asset_type": "image",
"required": false,
"requirements": {
"dimensions": "300x250",
"format": ["PNG", "JPG", "GIF"]
}
}
]
}
移行手順
- すべてのフォーマット定義に
required を追加し、任意アセットを明確化
requirements を充実させ、検証/プレビュー/生成が可能なようにします
- クライアントサイドロジックを更新し、必須/任意の扱いを区別
移行チェックリスト
- スキーマ参照を更新 - v2 スキーマ URL を v3 に差し替え
- チャンネル更新 - 新しい 19 チャンネルに統一
- 価格オプション更新 -
fixed_price と floor_price を使用
- クリエイティブ割り当て -
creative_assignments と重み、必要ならプレースメント指定を使用
- ジオターゲティング - 名前付きジオシステムを明示
- アセット要件 -
required 付き assets 配列を実装
- Runtime Discovery -
get_adcp_capabilities を実装/呼び出し
- プロパティリスト - ガバナンスが関与する場合に対応
- SI セッション - 会話型ブランド体験が必要な場合は SI プロトコルを実装
- テスト - チャンネル、価格、ジオ、クリエイティブ割り当てのケースを網羅
よくある質問
Q: v2 と v3 を同時にサポートすべき?
移行期間中は両方のフィールド名を読み取れるようにするのが現実的です。書き出しは v3 形式に揃えてください。
Q: v2 のネイティブチャンネルはどうなる?
v3 ではネイティブをチャンネルから外し、フォーマットレベルの native プロパティで表現します。ネイティブインベントリは display や social など、実際の配信コンテキストに分類してください。
Q: 既存の入札ロジックへの影響は?
価格フィールド名の変更(fixed_price/floor_price)とチャンネル値の変更が主な影響点です。検証スキーマを v3 に切り替え、エラーを早期検出してください。
まとめ
AdCP v3 は計画・ガバナンス・会話型ブランド体験までカバー範囲を拡大します。上記のチェックリストに沿ってコードとスキーマを更新し、get_adcp_capabilities や新しいチャンネル分類を活用してください。