

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 例 2: A/B トラフィック分割
<a name="monetization-functions-examples-ab"></a>

## シナリオ
<a name="monetization-functions-examples-ab-scenario"></a>

ストリーミングサービスは、CUSTOM\_OUTPUT 関数を使用して、広告リクエストトラフィックを A/B テスト用の 2 つの広告決定サーバー (ADS) URLs にランダムに分割したいと考えています。広告リクエストの半分は v1 エンドポイントに送信され、半分は v2 エンドポイントに送信されます。

## 設定
<a name="monetization-functions-examples-ab-config"></a>

**A/B トラフィック分割 (CUSTOM\_OUTPUT):**

```
{
    "FunctionId": "abTestAdsUrl",
    "FunctionType": "CUSTOM_OUTPUT",
    "CustomOutputConfiguration": {
        "Runtime": "JSONATA",
        "Output": {
            "adsRequest.url": "{%$random() < 0.5 ? 'https://ads.example.com/v1/decision?session=' & session.id : 'https://ads.example.com/v2/decision?session=' & session.id%}"
        }
    }
}
```

この設定では、次のようになります。
+ `FunctionId` — この関数の一意の名前。
+ `FunctionType` — HTTP 呼び出しを行わずに式`CUSTOM_OUTPUT`を評価します。
+ `Output` — 2 つの ADS URL のいずれかをランダムに選択する式`adsRequest.url`にマッピングします。 URLs

## 関数マッピング
<a name="monetization-functions-examples-ab-mapping"></a>

```
{
    "FunctionMapping": {
        "PRE_ADS_REQUEST": "abTestAdsUrl"
    }
}
```

## 関数が実行されるとどうなるか
<a name="monetization-functions-examples-ab-runtime"></a>

1. 再生中に広告時間枠が発生します。

1. MediaTailor は`PRE_ADS_REQUEST`ライフサイクルフックを実行し、 を実行します`abTestAdsUrl`。

1. `$random()` 関数は 0～1 の値を返します。値が 0.5 未満の場合、関数は ADS URL を v1 エンドポイントに設定します。それ以外の場合は、URL を v2 エンドポイントに設定します。

`$random()` 関数は広告時間枠ごとに評価されるため、分割はセッションごとではなく広告リクエストごとです。

**ヒント**  
トラフィックの分割率を調整するには、しきい値を変更します。たとえば、 `$random() < 0.8`はトラフィックの 80% を最初の URL に送信し、20% を 2 番目の URL に送信します。

**注記**  
に書き込むと、現在の広告時間枠の再生設定で設定されたデフォルトの ADS URL が`adsRequest.url`上書きされます。

詳細については、[CUSTOM\_OUTPUT](monetization-functions-types-custom-output.md)、[PRE\_ADS\_REQUEST](monetization-functions-hooks-pre-ads.md)、および [JSONata 式リファレンス](monetization-functions-jsonata.md) を参照してください。