> ## 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 最適化目標を beta.3 から rc.1 に移行します。単数の optimization_goal を、識別子付きユニオンと優先順位付けを使用したマルチゴール配列に置き換える。

# 最適化目標の移行

AdCP 3.0 rc.1 は単数の `optimization_goal` オブジェクトを `optimization_goals` 配列に置き換える。各目標は `kind` の識別子付きユニオンで、優先順位付きのマルチゴールパッケージをサポートします。

## 変更内容

| beta.3                        | rc.1                                                | 注記                                 |
| ----------------------------- | --------------------------------------------------- | ---------------------------------- |
| `optimization_goal`（単一オブジェクト） | `optimization_goals`（配列）                            | 識別子付きユニオンの配列                       |
| 暗黙的な単一目標                      | `priority` フィールド                                    | 1 = 最高優先度                          |
| 1つの目標タイプ                      | 2種類: `metric` と `event`                             | `kind` フィールドで識別                    |
| リーチ最適化なし                      | `reach_unit` と `target_frequency` を持つ `reach` メトリック | プロダクトが `supported_reach_units` を宣言 |

## 目標の種類

すべての目標には `kind` 識別子がある:

* **`metric`** — セラーネイティブのデリバリーメトリック（クリック、視聴、リーチ、エンゲージメントなど）
* **`event`** — `sync_event_sources` で設定されたイベントソースに紐づいたコンバージョントラッキング

### メトリック目標

```json theme={null}
{
  "$schema": "https://adcontextprotocol.org/schemas/latest/core/optimization-goal.json",
  "kind": "metric",
  "metric": "clicks",
  "target": {
    "kind": "cost_per",
    "value": 2.50
  },
  "priority": 1
}
```

サポートされるメトリック: `clicks`、`views`、`completed_views`、`viewed_seconds`、`attention_seconds`、`attention_score`、`engagements`、`follows`、`saves`、`profile_visits`、`reach`。

ターゲットタイプ:

* `cost_per` — メトリックユニットあたりの目標コスト（例: \$2.50 CPC）
* `threshold_rate` — 目標レート閾値（例: 2% CTR の 0.02）

### イベント目標

```json theme={null}
{
  "$schema": "https://adcontextprotocol.org/schemas/latest/core/optimization-goal.json",
  "kind": "event",
  "event_sources": [
    {
      "event_source_id": "es_web_pixel",
      "event_type": "purchase",
      "value_field": "order_total",
      "value_factor": 1
    }
  ],
  "target": {
    "kind": "per_ad_spend",
    "value": 4.0
  },
  "attribution_window": {
    "post_click": { "interval": 7, "unit": "days" },
    "post_view": { "interval": 1, "unit": "days" }
  },
  "priority": 2
}
```

イベントターゲットタイプ:

* `cost_per` — コンバージョンあたりの目標コスト（CPA）
* `per_ad_spend` — 広告費用対効果（ROAS）の目標。`value_field` が必要。
* `maximize_value` — 総コンバージョン価値を最大化。`value_field` が必要。

### リーチ目標

リーチは追加フィールドを持つメトリック目標だ:

```json theme={null}
{
  "$schema": "https://adcontextprotocol.org/schemas/latest/core/optimization-goal.json",
  "kind": "metric",
  "metric": "reach",
  "reach_unit": "individuals",
  "target_frequency": {
    "min": 2,
    "max": 5,
    "window": { "interval": 7, "unit": "days" }
  },
  "priority": 1
}
```

`reach_unit` の値: `individuals`、`households`、`devices`、`accounts`、`cookies`、`custom`。

`target_frequency` は `min` または `max` の少なくとも一方と、Duration オブジェクトとしての `window`（例: `{"interval": 7, "unit": "days"}` または `{"interval": 1, "unit": "campaign"}`）が必要です。

## マルチゴールパッケージ

複数の目標は `priority`（1 = 最高）で順序付けられます。セラーは優先度の高い目標を優先的に最適化し、低い優先度の目標をタイブレーカーとして使用します。

**beta.3:**

```json theme={null}
{
  "optimization_goal": {
    "metric": "clicks",
    "target_cpc": 2.50
  }
}
```

**rc.1:**

```json theme={null}
{
  "optimization_goals": [
    {
      "kind": "metric",
      "metric": "clicks",
      "target": { "kind": "cost_per", "value": 2.50 },
      "priority": 1
    },
    {
      "kind": "event",
      "event_sources": [
        { "event_source_id": "es_web_pixel", "event_type": "purchase" }
      ],
      "target": { "kind": "cost_per", "value": 25.00 },
      "priority": 2
    }
  ]
}
```

## プロダクトケイパビリティ

プロダクトは `metric_optimization` を通じて最適化サポートを宣言する:

```json test=false theme={null}
{
  "metric_optimization": {
    "supported_metrics": ["clicks", "views", "completed_views", "reach"],
    "supported_reach_units": ["individuals", "households"],
    "supported_view_durations": [6, 15, 30],
    "supported_targets": ["cost_per", "threshold_rate"]
  },
  "max_optimization_goals": 3
}
```

* `supported_metrics` — プロダクトが最適化できるメトリック
* `supported_reach_units` — `reach` が supported\_metrics にある場合に必要
* `supported_view_durations` — `completed_views` メトリックの秒数
* `supported_targets` — 利用可能なターゲット種類。省略された場合、ターゲットなしの目標（ボリューム最大化）のみ許可されます
* `max_optimization_goals` — パッケージあたりの目標の最大数

## 移行ステップ

<Steps>
  <Step title="フィールドの名前を変更する">
    すべてのリクエスト構築コードで `optimization_goal`（単数）を `optimization_goals`（配列）に置き換える。
  </Step>

  <Step title="kind 識別子を追加する">
    既存の目標を `"kind": "metric"` または `"kind": "event"` でラップします。メトリック目標はセラーネイティブのメトリックを使用し、イベント目標は `sync_event_sources` からのイベントソースを参照します。
  </Step>

  <Step title="ターゲットを再構造化する">
    フラットなターゲットフィールド（例: `target_cpc`）を識別子付きの `target` オブジェクトに置き換える: `{ "kind": "cost_per", "value": 2.50 }`。
  </Step>

  <Step title="優先度を追加する">
    単一目標パッケージには `priority: 1` を設定します。マルチゴールパッケージには昇順の優先度値を割り当てる（1 = 最高）。
  </Step>

  <Step title="レスポンス解析を更新する">
    レスポンスから最適化目標を読む場合（例: `get_media_buy`）、タイプ固有のフィールドにアクセスする前に `kind` で分岐して目標タイプを決定します。
  </Step>

  <Step title="プロダクトケイパビリティを確認する">
    目標を送信する前に、プロダクトの `metric_optimization.supported_metrics` と `max_optimization_goals` を確認します。セラーはサポートされていないメトリックと制限を超えた目標を拒否します。
  </Step>

  <Step title="スキーマに対して検証する">
    リクエストを `optimization-goal.json` スキーマに対して実行します。識別子付きユニオンは種類ごとに正しいフィールドを適用します。
  </Step>
</Steps>

<Card title="コンバージョントラッキングと最適化目標" icon="arrow-right" href="/docs/media-buy/conversion-tracking/index">
  イベントソースを設定し、コンバージョンイベントを送信し、デリバリー目標を最適化します。
</Card>

***

**関連:** [チャンネル](/docs/reference/migration/channels) | [価格](/docs/reference/migration/pricing) | [シグナル](/docs/reference/migration/signals) | [AdCP 3.0 概要](/docs/reference/whats-new-in-v3)
