> ## Documentation Index
> Fetch the complete documentation index at: https://adcp-docs-ja.pier1.co.jp/llms.txt
> Use this file to discover all available pages before exploring further.

# クリエイティブの移行

> AdCP クリエイティブを v2 から v3 に移行します。creative_ids をウェイト付きアサインメントに、assets_required をフォーマット探索用の統合アセット配列に置き換える。

# クリエイティブの移行

AdCP 3.0 はクリエイティブ処理に3つの破壊的変更を加える: `FormatCategory` enum とフォーマットの `type` フィールドが削除され、ウェイト付きクリエイティブアサインメントがシンプルな ID 配列を置き換え、統合 `assets` 配列がフォーマット探索の `assets_required` を置き換える。

## Format category removal

### What changed

| v2 field                                                        | v3 field | Change type |
| --------------------------------------------------------------- | -------- | ----------- |
| フォーマットオブジェクトの `type`（FormatCategory enum）                       | 削除       | Deleted     |
| `list_creative_formats` / `get_products` の `format_types` フィルター | 削除       | Deleted     |

### Why

`FormatCategory` enum（`video`、`display`、`audio`、`native`、`social`、`custom`）は、マルチアセットフォーマットにうまくマップしない粗い分類子でした。「video」フォーマットはディスプレイのコンパニオンバナーやテキストオーバーレイも必要とする場合があります。enum は、本質的にマルチモーダルなフォーマットに 1 つのカテゴリを選ぶことを実装者に強制し、一貫しないフィルタリングと探索のギャップを招きました。

### Migration

`format_types` フィルターを `asset_types`（フォーマットが必要とするもの）または `format_ids`（完全一致）に置き換えます。

**v2:**

```json theme={null}
{
  "format_types": ["video"]
}
```

**v3 — アセットタイプでフィルター:**

```json theme={null}
{
  "asset_types": ["video"]
}
```

**v3 — 完全なフォーマット ID でフィルター:**

```json theme={null}
{
  "format_ids": [
    { "agent_url": "https://creatives.example.com", "id": "video_preroll_30s" }
  ]
}
```

`asset_types` は、そのタイプのアセットを少なくとも 1 つ含む任意のフォーマットを返します — したがってコンパニオンバナー付きのビデオフォーマットは `["video"]` と `["image"]` の両方の結果に現れます。

***

## クリエイティブアサインメント

### 変更内容

| v2 フィールド              | v3 フィールド                         | 変更タイプ |
| --------------------- | -------------------------------- | ----- |
| `creative_ids`（文字列配列） | `creative_assignments`（オブジェクト配列） | 置き換え  |

### シンプルな移行（均等ウェイト）

**v2:**

```json theme={null}
{
  "creative_ids": ["creative_1", "creative_2"]
}
```

**v3 — 均等分配には `weight` を省略する:**

```json theme={null}
{
  "$schema": "https://adcontextprotocol.org/schemas/v3/core/creative-assignment.json",
  "creative_id": "creative_1"
}
```

`create_media_buy` パッケージのコンテキストで:

```json theme={null}
{
  "creative_assignments": [
    { "creative_id": "creative_1" },
    { "creative_id": "creative_2" }
  ]
}
```

すべてのアサインメントで `weight` が省略された場合、インプレッションは均等に分配されます。

### ウェイト付きアサインメント

各クリエイティブが受け取るインプレッションの割合を制御する:

```json theme={null}
{
  "creative_assignments": [
    { "creative_id": "hero_video", "weight": 60 },
    { "creative_id": "promo_video", "weight": 40 }
  ]
}
```

ウェイトは相対的 — 合計が100になる必要はないが、そうすることで意図が明確になります。

### プレースメントターゲティング

プロダクト内の特定のプレースメントに特定のクリエイティブをアサインする:

```json theme={null}
{
  "creative_assignments": [
    {
      "creative_id": "hero_video",
      "placement_ids": ["homepage_hero"],
      "weight": 100
    },
    {
      "creative_id": "sidebar_banner",
      "placement_ids": ["article_sidebar"],
      "weight": 100
    },
    {
      "creative_id": "fallback_banner",
      "weight": 50
    }
  ]
}
```

`placement_ids` が省略された場合、クリエイティブはパッケージのすべてのプレースメントで実行されます。`placement_ids` はプロダクトの placements 配列の `placement_id` 値を参照します。

<Note>
  `sync_creatives` は `placement_ids` をサポートしません。プレースメントレベルのターゲティングには `create_media_buy` または `update_media_buy` を使用します。
</Note>

### クリエイティブアサインメントスキーマ

各アサインメントオブジェクト:

```json theme={null}
{
  "$schema": "https://adcontextprotocol.org/schemas/v3/core/creative-assignment.json",
  "creative_id": "hero_video",
  "weight": 60,
  "placement_ids": ["homepage_hero"]
}
```

| フィールド           | タイプ           | 必須  | 説明                                                    |
| --------------- | ------------- | --- | ----------------------------------------------------- |
| `creative_id`   | string        | はい  | `list_creatives` または `sync_creatives` からのクリエイティブを参照する |
| `weight`        | number（0〜100） | いいえ | デリバリーウェイト。均等分配の場合は省略。                                 |
| `placement_ids` | string\[]     | いいえ | 特定のプレースメントをターゲット。すべての場所で実行するには省略。                     |

***

## アセット探索

### 変更内容

| v2 フィールド                 | v3 フィールド           | 変更タイプ |
| ------------------------ | ------------------ | ----- |
| `assets_required`（文字列配列） | `assets`（オブジェクト配列） | 置き換え  |
| `preview_image`          | `format_card`      | 置き換え  |

### フォーマットアセット

**v2** — 必須アセット ID のみをリスト:

```json theme={null}
{
  "format_id": { "agent_url": "https://creatives.example.com", "id": "display_300x250" },
  "name": "Standard Banner 300x250",
  "assets_required": ["main_image", "headline"]
}
```

**v3** — `required` ブールフラグ付きですべてのアセットをリスト:

```json theme={null}
{
  "format_id": { "agent_url": "https://creatives.example.com", "id": "display_300x250" },
  "name": "Standard Banner 300x250",
  "assets": [
    {
      "item_type": "individual",
      "asset_id": "main_image",
      "asset_type": "image",
      "required": true,
      "requirements": {
        "min_width": 300,
        "min_height": 250,
        "accepted_mime_types": ["image/png", "image/jpeg"]
      }
    },
    {
      "item_type": "individual",
      "asset_id": "headline",
      "asset_type": "text",
      "required": true,
      "requirements": {
        "max_length": 50
      }
    },
    {
      "item_type": "individual",
      "asset_id": "impression_tracker",
      "asset_type": "url",
      "required": false,
      "requirements": {
        "url_type": "tracking_pixel"
      }
    }
  ]
}
```

### アセット配列が提供するもの

* **完全な探索** — 必須だけでなく、フォーマットがサポートするすべてのアセットを確認できます
* **タイプ情報** — 各アセットは `asset_type`（image、video、text、url など）を宣言します
* **要件** — インライン制約（寸法、長さ、MIME タイプ）
* **オプションアセット** — トラッカー、コンパニオンバナー、その他のオプション要素が見えるようになりました
* **繰り返し可能なグループ** — カルーセルとマルチアイテムフォーマットは `item_type: "repeatable_group"` を使用します

### アセットアイテムタイプ

`assets` 配列の各エントリには `item_type` 識別子がある:

**個別アセット**（`item_type: "individual"`）:

```json theme={null}
{
  "item_type": "individual",
  "asset_id": "main_video",
  "asset_type": "video",
  "required": true,
  "requirements": {
    "min_duration_seconds": 15,
    "max_duration_seconds": 30,
    "accepted_mime_types": ["video/mp4"]
  }
}
```

**繰り返し可能なグループ**（`item_type: "repeatable_group"`）— カルーセルとマルチアイテムフォーマット用:

```json theme={null}
{
  "item_type": "repeatable_group",
  "asset_group_id": "card",
  "required": true,
  "min_count": 2,
  "max_count": 10,
  "selection_mode": "sequential",
  "assets": [
    {
      "asset_id": "card_image",
      "asset_type": "image",
      "required": true,
      "requirements": {
        "min_width": 600,
        "min_height": 600,
        "aspect_ratio": "1:1"
      }
    },
    {
      "asset_id": "card_title",
      "asset_type": "text",
      "required": true,
      "requirements": {
        "max_length": 40
      }
    }
  ]
}
```

### フォーマットカード（preview\_image の置き換え）

v2 の `preview_image` URL はクリエイティブレンダリングシステムを使用する `format_card` に置き換えられます:

```json theme={null}
{
  "format_card": {
    "format_id": {
      "agent_url": "https://creatives.example.com",
      "id": "format_card_standard"
    },
    "manifest": {
      "format_name": "Standard Banner 300x250",
      "preview_url": "https://cdn.example.com/previews/banner_300x250.png"
    }
  }
}
```

***

## 移行ステップ

### Format category

<Steps>
  <Step title="Remove format_types filters">
    `list_creative_formats` と `get_products` のリクエストから `format_types` を削除します。
  </Step>

  <Step title="Replace with asset_types">
    `asset_types` を使って、フォーマットが受け入れるアセット（例: `["video"]`、`["image"]`）でフィルタリングします。
  </Step>

  <Step title="Or use format_ids">
    必要な特定のフォーマットが分かっている場合は、完全なフォーマットマッチングに `format_ids` を使います。
  </Step>

  <Step title="Stop reading type field">
    フォーマットオブジェクトから `type` フィールドを読む任意のコードを削除します — v3 ではもう存在しません。
  </Step>
</Steps>

### クリエイティブアサインメント

<Steps>
  <Step title="creative_ids を置き換える">
    `creative_ids` 配列を `creative_assignments` オブジェクト配列に置き換える。
  </Step>

  <Step title="creative_id を設定する">
    各アサインメントオブジェクトに `creative_id` を設定します。
  </Step>

  <Step title="ウェイトを追加する">
    不均等な分配が必要な場合はウェイトを追加し、それ以外は `weight` を省略します。
  </Step>

  <Step title="placement_ids を追加する">
    プレースメントレベルのターゲティングが必要な場合は `placement_ids` を追加します。
  </Step>

  <Step title="sync_creatives 呼び出しを更新する">
    これらも `creative_assignments` を使用するが、`placement_ids` なし。
  </Step>
</Steps>

### アセット探索

<Steps>
  <Step title="assets_required を置き換える">
    `assets_required` の解析を `assets` 配列の反復に置き換える。
  </Step>

  <Step title="required ブールフラグを確認する">
    すべてのリストされたアセットが必須と仮定するのではなく、各アセットの `required` ブールフラグを確認します。
  </Step>

  <Step title="asset_type を使用する">
    各アセットが期待するファイルの種類を理解するために `asset_type` を使用します。
  </Step>

  <Step title="item_type を処理する">
    `"individual"` と `"repeatable_group"` を確認します。
  </Step>

  <Step title="preview_image を置き換える">
    `preview_image` の読み取りを `format_card` レンダリングに置き換える。
  </Step>

  <Step title="検証する">
    クリエイティブマニフェストはキーとして正確な `asset_id` 値を使用しなければなりません。
  </Step>
</Steps>

<Card title="クリエイティブ" icon="arrow-right" href="/docs/creative/index">
  完全なクリエイティブドキュメント: フォーマット、アセットタイプ、マニフェスト、クリエイティブエージェント。
</Card>

***

**関連:** [チャンネル](/docs/reference/migration/channels) | [価格](/docs/reference/migration/pricing) | [ジオターゲティング](/docs/reference/migration/geo-targeting) | [カタログ](/docs/reference/migration/catalogs) | [アトリビューション](/docs/reference/migration/attribution) | [AdCP 3.0 概要](/docs/reference/whats-new-in-v3)
