> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kameleoon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 多変量テストの実験を作成する

> Automation API を使用して多変量テスト（MVT）の実験を作成し、カスタムのトラフィック配分を設定します。

## 目的

複数のセクションとバリエーションを持つ多変量テスト（MVT）の実験を作成し、それらのバリエーション間でカスタム（不均等）のトラフィック配分を設定します。

<Warning>
  `POST /experiments` で多変量テストの実験を作成すると、Kameleoon は `mvtAllocationSettings` に送信した値に関係なく、常にすべてのバリエーションに均等なトラフィック配分を適用し、送信された `locked` の値は `false` にリセットされます。カスタムのトラフィック配分を設定するには、このチュートリアルで説明する 3 つのステップに従ってください。実験を作成し、生成された ID を取得したうえで、`PATCH` リクエストで配分を更新します。
</Warning>

MVT の概念（セクション、バリエーション、組み合わせ）の概要と、Kameleoon アプリでのトラフィック配分の設定方法については、[多変量テストのセットアップ](/ja/user-manual/experimentation/web-experimentation/advanced-experiment-types/setting-up-multivariate-tests) を参照してください。

## 前提条件

* `access token`

Automation API を使用するには access token が必要です。
[access token の取得手順](/ja/developer-docs/apis/automation-api-rest/get-started/get-started#1-obtain-an-access-token) に従って、プログラムでトークンを取得してください。

* `siteId`

[サイトをコードで取得するエンドポイント](/api-reference/site/get-a-site-by-code) を呼び出して、`siteCode` からコード内で直接 `siteId` を取得するか、[新しい実験を作成する](/ja/developer-docs/apis/automation-api-rest/tutorials/experiments/create-a-new-experiment#requirements) の手順に従ってアプリで確認してください。

## 主要な概念

### リファレンスバリエーション

Kameleoon は、送信された各セクションに自動的にリファレンスバリエーションを追加します。このリファレンスは、レスポンス内でそのセクションの配分エントリの中で `variationId: "0"` として表示されます。

`Original` という名前のバリエーションを自分で送信した場合、Kameleoon はそれを別の追加バリエーションとして作成します。生成されたリファレンスを識別したり置き換えたりすることはありません。同じセクション内で 2 つの異なるベースラインバリエーションをテストする場合にのみ、明示的な `Original` バリエーションを送信してください。

### クライアントが送信する ID は一時的なもの

`mvtVariations` で送信する `sectionId` とバリエーションの `id` は、同じリクエスト内でのみエントリを関連付けるために使用されます。これらは、Kameleoon が永続的な ID を生成する前に、`mvtAllocationSettings`内の各配分エントリを正しいセクションとバリエーションに接続します。任意の整数を使用して構いません。

Kameleoon は送信された値を破棄し、独自に生成した `sectionId` と `variationId` に置き換えます。以降のすべてのリクエストでは、生成された値（レスポンスおよびその後の `GET` リクエストで返される値）を使用してください。レスポンスには、送信したバリエーション名は含まれず、生成された ID のみが含まれます。生成されたどの ID がどの送信済みの名前に対応するかを確認する必要がある場合は、Kameleoon アプリで実験を確認してください。

### セクション ID と組み合わせ ID の違い

Kameleoon は、多変量テストの実験に対して 2 種類の異なる ID を生成します。

* **セクション ID とバリエーション ID** は、あるセクション内の 1 つのバリエーションを識別します。これらは `mvtAllocationSettings.sectionsAllocations` で使用します。
* **組み合わせ ID** は、公開された訪問者に表示される、セクションごとに 1 つずつのバリエーションからなる完全な組み合わせを識別します。Kameleoon は、すべてのセクションのバリエーション（各セクションのリファレンスを含む）の直積として、可能なすべての組み合わせを生成し、組み合わせ ID をトップレベルの `variations` 配列と `deviations` マップのキーとして返します。これらは `mvtAllocationSettings.combinationsAllocations` で使用します。

`sectionsAllocations` と `combinationsAllocations` はどちらも同じ配分エントリの構造（`allocationPart`、`checked`、`locked`、`sectionId`、`variationId`）を使用するため、どちらか一方の方法のみを選択してください。

* 各セクション内のバリエーションごとにトラフィックを配分するには、`sectionsAllocations` を指定します。Kameleoon は、セクションレベルの値から各組み合わせの割合を導き出します。
* 特定の組み合わせに直接トラフィックを配分するには、`combinationsAllocations` を指定します。

組み合わせ ID は Kameleoon が生成するまで存在しないため、作成リクエストで `combinationsAllocations` を指定することはできません。`GET` リクエストで生成された組み合わせ ID を取得し、このチュートリアルで `sectionsAllocations` に使用したのと同じパターンに従って、後続の `PATCH` リクエストで `combinationsAllocations` を設定してください。

## 手順

### 1. 実験を作成する

**エンドポイント:**

```
POST https://api.kameleoon.com/experiments
```

| 名前                        | 型      | 説明                                                                                                        |
| ------------------------- | ------ | --------------------------------------------------------------------------------------------------------- |
| `baseURL`                 | 文字列    | グラフィックエディターで読み込むページの URL です。                                                                              |
| `name`                    | 文字列    | 実験の名前です。                                                                                                  |
| `siteId`                  | 整数     | プロジェクトの `siteId` です。                                                                                      |
| `type`                    | 文字列    | 多変量テストの場合は `MVT` を指定します。                                                                                  |
| `mvtVariations`           | 配列     | 作成するセクションとバリエーションです。各エントリには、一時的な `sectionId`、`sectionName`、および `{id, name}` オブジェクトの `variations` 配列が必要です。 |
| `mvtAllocationSettings`   | オブジェクト | トラフィック配分の設定です。Kameleoon は作成時にこのオブジェクトを受け付けますが、送信された値に関係なく常に均等な配分を適用します。                                   |
| `trafficAllocationMethod` | 文字列    | 自動化された方法ではなく、自分でトラフィック配分を制御する場合は `MANUAL` を指定します。                                                         |

**例:**

```bash theme={null}
curl -L -X POST 'https://api.kameleoon.com/experiments' \
-H 'Content-Type: application/json' \
-H 'Accept: */*' \
-H 'Authorization: Bearer <ACCESS_TOKEN>' \
--data-raw '{
  "baseURL": "https://test-site.fr/",
  "name": "MVT_1",
  "siteId": 29353,
  "type": "MVT",
  "trafficAllocationMethod": "MANUAL",
  "mvtVariations": [
    {
      "sectionId": 1,
      "sectionName": "Button color",
      "variations": [
        {"id": 1, "name": "Red"},
        {"id": 2, "name": "Blue"}
      ]
    },
    {
      "sectionId": 2,
      "sectionName": "Button wording",
      "variations": [
        {"id": 1, "name": "Buy now"},
        {"id": 2, "name": "Shop now"}
      ]
    }
  ],
  "mvtAllocationSettings": {
    "exposedPart": 0.8,
    "sectionsAllocations": [
      {"allocationPart": 0.6, "checked": true, "locked": true, "sectionId": 1, "variationId": "0"},
      {"allocationPart": 0.25, "checked": true, "locked": true, "sectionId": 1, "variationId": "1"},
      {"allocationPart": 0.15, "checked": true, "locked": true, "sectionId": 1, "variationId": "2"},
      {"allocationPart": 0.5, "checked": true, "locked": true, "sectionId": 2, "variationId": "0"},
      {"allocationPart": 0.3, "checked": true, "locked": true, "sectionId": 2, "variationId": "1"},
      {"allocationPart": 0.2, "checked": true, "locked": true, "sectionId": 2, "variationId": "2"}
    ],
    "combinationsAllocations": []
  }
}'
```

**レスポンス（抜粋）:**

```json theme={null}
{
  "id": 404811,
  "siteId": 29353,
  "name": "MVT_1",
  "type": "MVT",
  "status": "draft",
  "trafficAllocationMethod": "MANUAL",
  "variations": [1351297, 1351298, 1351299, 1351300, 1351301, 1351302, 1351303, 1351304, 1351305],
  "mvtAllocationSettings": {
    "exposedPart": 0.8,
    "sectionsAllocations": [
      {"variationId": "1351294", "sectionId": 4451, "allocationPart": 0.33333334, "locked": false, "checked": true},
      {"variationId": "1351293", "sectionId": 4451, "allocationPart": 0.33333334, "locked": false, "checked": true},
      {"variationId": "0", "sectionId": 4451, "allocationPart": 0.33333334, "locked": false, "checked": true},
      {"variationId": "1351296", "sectionId": 4452, "allocationPart": 0.33333334, "locked": false, "checked": true},
      {"variationId": "1351295", "sectionId": 4452, "allocationPart": 0.33333334, "locked": false, "checked": true},
      {"variationId": "0", "sectionId": 4452, "allocationPart": 0.33333334, "locked": false, "checked": true}
    ],
    "combinationsAllocations": []
  }
}
```

Kameleoon が新しい `sectionId` と `variationId`（`4451`、`4452`、`1351293`-`1351296`）を生成し、各セクションにリファレンスバリエーション（`variationId: "0"`）を追加し、送信した配分を `0.33333334` の均等な割合に置き換え、`locked` を `false` にリセットしたことに注目してください。`exposedPart` は送信したとおりに保持されます。希望する配分を設定するために、次のステップに進んでください。

### 2. 生成された ID を取得する

作成時のレスポンスから生成された ID を取得していない場合は、`GET` リクエストで取得します。

**エンドポイント:**

```
GET https://api.kameleoon.com/experiments/{experimentId}
```

**例:**

```bash theme={null}
curl -L -X GET 'https://api.kameleoon.com/experiments/404811' \
-H 'Authorization: Bearer <ACCESS_TOKEN>'
```

レスポンスには、手順 1 で示したものと同じ `mvtAllocationSettings.sectionsAllocations` 配列が含まれており、次の手順で必要となる、生成された `sectionId` と `variationId` の値が確認できます。

### 3. カスタムのトラフィック配分を設定する

**エンドポイント:**

```
PATCH https://api.kameleoon.com/experiments/{experimentId}
```

`mvtAllocationSettings` を再度送信します。今回は、手順 2 で取得した生成済みの `sectionId` と `variationId` の値を使用します。

**例:**

```bash theme={null}
curl -L -X PATCH 'https://api.kameleoon.com/experiments/404811' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <ACCESS_TOKEN>' \
--data-raw '{
  "trafficAllocationMethod": "MANUAL",
  "mvtAllocationSettings": {
    "exposedPart": 0.8,
    "sectionsAllocations": [
      {"allocationPart": 0.6, "checked": true, "locked": true, "sectionId": 4451, "variationId": "1351294"},
      {"allocationPart": 0.25, "checked": true, "locked": true, "sectionId": 4451, "variationId": "1351293"},
      {"allocationPart": 0.15, "checked": true, "locked": true, "sectionId": 4451, "variationId": "0"},
      {"allocationPart": 0.5, "checked": true, "locked": true, "sectionId": 4452, "variationId": "1351296"},
      {"allocationPart": 0.3, "checked": true, "locked": true, "sectionId": 4452, "variationId": "1351295"},
      {"allocationPart": 0.2, "checked": true, "locked": true, "sectionId": 4452, "variationId": "0"}
    ],
    "combinationsAllocations": []
  }
}'
```

**レスポンス（抜粋）:**

```json theme={null}
{
  "id": 404811,
  "mvtAllocationSettings": {
    "exposedPart": 0.8,
    "sectionsAllocations": [
      {"variationId": "1351294", "sectionId": 4451, "allocationPart": 0.6, "locked": true, "checked": true},
      {"variationId": "1351293", "sectionId": 4451, "allocationPart": 0.25, "locked": true, "checked": true},
      {"variationId": "0", "sectionId": 4451, "allocationPart": 0.15, "locked": true, "checked": true},
      {"variationId": "1351296", "sectionId": 4452, "allocationPart": 0.5, "locked": true, "checked": true},
      {"variationId": "1351295", "sectionId": 4452, "allocationPart": 0.3, "locked": true, "checked": true},
      {"variationId": "0", "sectionId": 4452, "allocationPart": 0.2, "locked": true, "checked": true}
    ],
    "combinationsAllocations": []
  }
}
```

配分が送信した値と一致し、`locked` は `true` のままになります。その後の `GET` リクエストでも同じ結果が確認できます。

### 4. 実験を確認する

Kameleoon アプリの **Experiments Dashboard** に移動し、実験を開いて、セクション、バリエーション、トラフィック配分が設定内容と一致していることを確認します。

## 既知の制限事項

* **大規模な多変量テストの削除がタイムアウトする場合があります。** 実験に多数の組み合わせが含まれる場合、`DELETE /experiments/{experimentId}` が `504 Gateway Timeout` エラーを返すことがあります。タイムアウトが発生しても、削除が失敗したとは限りません。削除を再試行する前に、同じ実験 ID に対して `GET` リクエストを送信し、実験がまだ存在するかどうかを確認してください。
