> ## 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.

# API リファレンス

> Kameleoon JavaScript Activation API メソッドのリファレンスドキュメント。

## Kameleoon.API.Core

このモジュールには、ちらつきを発生させずにフロントエンドで A/B テストのバリエーションを実装するための関数が含まれています。最適な結果を得るために、これらのメソッドは指定された順序で使用してください。このモジュールには、プライバシー法や法的同意の収集のためのメソッドを含む、エンジン初期化メソッドも含まれています。

Activation API の JavaScript オブジェクトを呼び出す前に、Kameleoon Engine が読み込まれていることを確認してください。トラッキングデータの送信、実験のトリガー、訪問者属性の更新を行う際は、コマンドの遅延実行のために Kameleoon コマンドキューを使用してください。エンジンが読み込まれている場合、渡されたコマンドや関数は即時に実行されます。そうでない場合は、後で実行するためにキューに入れられます。詳細については、[コマンドキュー](./command-queue) のドキュメントを参照してください。

### enableLegalConsent

```javascript theme={null}
var agreedButton = Kameleoon.API.Utils.querySelectorAll("#agreed")[0];

Kameleoon.API.Utils.addEventListener(agreedButton, "mousedown", function (event) {
  Kameleoon.API.Core.enableLegalConsent();
});
```

訪問者から法的同意を取得した後、`enableLegalConsent()` メソッドを呼び出して Kameleoon を有効化します。このメソッドは Kameleoon の通常の動作モードを有効にします。詳細については、[同意管理](../../../privacy-and-compliance/consent-management) の記事を参照してください。

##### 引数

| 名前     | 型      | 説明                                                                                                                                                                                                                                                                                                 |
| ------ | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| module | String | 有効化するモジュールの名前: "PRODUCT\_RECOMMENDATION"、"AB\_TESTING"、"PERSONALIZATION"、または "BOTH"。たとえば、`PRODUCT_RECOMMENDATION` は商品推奨機能**のみ**でエントリーポイントを実行します。`AB_TESTING` は A/B テスト**および**商品推奨を有効にします (同意を区別するカスタムオプションが有効になっていない限り)。`OTH` はすべての機能を有効にします。省略された場合、このメソッドはデフォルトですべてのモジュール (`BOTH`) の法的同意を有効にします。 |

<Note>
  商品推奨の同意を別途管理できるカスタムオプションも利用可能です。このオプションが有効な場合、`enableLegalConsent("PRODUCT_RECOMMENDATION")` を明示的に呼び出してモジュールを有効化してください。この機能を有効にするには、カスタマーサクセスマネージャーにお問い合わせください。
</Note>

### disableLegalConsent

```javascript theme={null}
var disableButton = Kameleoon.API.Utils.querySelectorAll("#disable")[0];

Kameleoon.API.Utils.addEventListener(disableButton, "mousedown", function (event) {
  Kameleoon.API.Core.disableLegalConsent();
});
```

訪問者が Kameleoon の使用を拒否した場合に `disableLegalConsent()` メソッドを呼び出します。このメソッドは通常の動作モードを無効にします。詳細については、[同意管理の記事](../../../privacy-and-compliance/consent-management) を参照してください。

##### 引数

| 名前     | 型      | 説明                                                                                                        |
| ------ | ------ | --------------------------------------------------------------------------------------------------------- |
| module | String | 無効化するモジュールの名前: "AB\_TESTING"、"PERSONALIZATION"、または "BOTH"。省略された場合、このメソッドはすべてのモジュール (`BOTH`) の法的同意を無効にします。 |

<Note>
  商品推奨の同意を別途管理できるカスタムオプションも利用可能です。このオプションが有効な場合、`disableLegalConsent("PRODUCT_RECOMMENDATION")` を明示的に呼び出してモジュールを無効化してください。この機能を有効にするには、カスタマーサクセスマネージャーにお問い合わせください。
</Note>

### enableSinglePageSupport

```javascript theme={null}
if (location.href.indexOf("mySPAWebsitePart") != -1) {
  Kameleoon.API.Core.enableSinglePageSupport();
}
```

`enableSinglePageSupport()` メソッドは、ブラウザのページ読み込みに関係なく、アクティブな URL が変更されたときに Kameleoon エンジンを再読み込みします。複数の URL と単一の初期読み込みを持つシングルページアプリケーション (SPA) ではこのメソッドを使用してください。Kameleoon は各 URL の変更を新しいページとして扱い、URL ターゲティングおよびページビューなどの指標の正確なトラッキングを可能にします。

<Note>
  SPA の再読み込み時に、Kameleoon は "kameleoonElement" または "kameleoonStyleSheet" で始まる HTML ID を使用してページに追加されたすべての要素も自動的に削除します。
</Note>

### enableDynamicRefresh

```javascript theme={null}
if (location.href.indexOf("cart") != -1) {
    Kameleoon.API.Core.enableDynamicRefresh();
}
```

`enableDynamicRefresh()` メソッドは要素の変更を検出し、グラフィックエディタによる変更を再適用します。このメソッドは、URL の変更やページの再読み込みなしに DOM を動的に変更する SPA をサポートし、動的更新が実験を削除することを防ぎます。その他の SPA タイプについては `enableSinglePageSupport()` を参照してください。

### getConfiguration

```javascript theme={null}
var configuration = Kameleoon.API.Core.getConfiguration();

if (configuration.siteCode == "abcde12345") {
  document.cookie = "MyMainSite=true;";
} else if (configuration.siteCode == "12345abcdef") {
  document.cookie = "MySubSite=true;";
}
```

`getConfiguration()` メソッドは、サイトの Kameleoon 構成のグローバル定数値を含む Configuration オブジェクトへの参照を返します。

##### 戻り値

| 名前            | 型      | 説明                    |
| ------------- | ------ | --------------------- |
| configuration | Object | Configuration オブジェクト。 |

### load

```javascript theme={null}
var href = location.href;

var intervalId = Kameleoon.API.Utils.setInterval(function () {
  if (location.href != href) {
    Kameleoon.API.Core.load();
  }
}, 2000);
```

`load()` メソッドは Kameleoon エンジンを初期化します。初期化は通常、アプリケーションファイルの読み込み時に自動的に行われますが、手動で呼び出す必要がある場合もあります。この例では、`enableSinglePageSupport()` と同様に、各 URL の変更後に再読み込みを実装する方法を示しています。

<Note>
  SPA の再読み込み時に、Kameleoon は "kameleoonElement" または "kameleoonStyleSheet" で始まる HTML ID を使用してページに追加されたすべての要素も自動的に削除します。
</Note>

### processRedirect

```javascript theme={null}
var experiment = Kameleoon.API.Experiments.getByName("RedirectExperiment");

if (experiment.associatedVariation.id == 123456) {
  Kameleoon.API.Core.processRedirect("https://www.mywebsite.com?variation=A");
}
```

`processRedirect()` メソッドは、通常はスプリット A/B 実験のために、ブラウザを別の URL にリダイレクトします。バックグラウンドでの正確なトラッキングを確保するため、`window.location.href = redirectionURL;` の代わりにこのメソッドを使用してください。

<Note>
  リダイレクト URL がベース URL とは異なるドメインにあり、かつ Kameleoon インストールに [統合セッションデータ](../../../web-experimentation/technical-concepts/unify-session-data-storage-across-subdomains) が含まれていない場合、エンジンは正確なトラッキングを確保するためにターゲット URL に `kameleoonRedirect-{experimentID}` パラメータを追加します。
</Note>

##### 引数

| 名前             | 型      | 説明                         |
| -------------- | ------ | -------------------------- |
| redirectionURL | String | リダイレクト先の URL。このフィールドは必須です。 |

### runWhenConditionTrue

```javascript theme={null}
Kameleoon.API.Core.runWhenConditionTrue(function () {
  return typeof jQuery != "undefined";
}, function () {
  jQuery("#bloc-2345").text("Mon nouveau texte");
}, 200);
```

`runWhenConditionTrue()` メソッドは、`conditionFunction` が true を返したときにコールバック関数を実行します。このメソッドはポーリング機構を使用するため、ちらつきが発生する可能性があります。パフォーマンス向上のため、代わりに `runWhenElementPresent()` を使用してください。詳細については [`runWhenElementPresent()` の説明](#runwhenelementpresent) を参照してください。

##### 引数

| 名前                | 型        | 説明                                                                                                                                                                           |
| ----------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| conditionFunction | Function | **true** または **false** を返す JavaScript 関数。このフィールドは必須です。                                                                                                                       |
| callback          | Function | **conditionFunction** が **true** を返したときに実行される JavaScript 関数。このフィールドは必須です。                                                                                                    |
| pollingInterval   | Number   | エンジンはこの間隔で定期的に **conditionFunction** を実行します。`runWhenElementPresent()` が利用できない場合、**pollingInterval** を低くするとちらつきは減少しますが、CPU 使用率は増加します。省略された場合、このメソッドはデフォルトで **200 ミリ秒** になります。 |

### runWhenElementPresent

```javascript theme={null}
// With mutation observers management.
Kameleoon.API.Core.runWhenElementPresent("#bloc-2345", function (elements) {
 elements[0].innerText = "My new Text";
});

// With multiple CSS selectors. Executes if any one of the elements is present.
Kameleoon.API.Core.runWhenElementPresent("#bloc-567, .cta-button, #bloc-789", function (elements) {
 elements[0].innerText = "More new text";
});

// Without mutation observers management, Kameleoon polls every 200ms to check if the element is on the page.
Kameleoon.API.Core.runWhenElementPresent("#MyPopup.showed", function (elements) {
 Kameleoon.API.Events.trigger("popup displayed");
}, 200);

// With mutation observers management and Single Page App support, Kameleoon applies modifications whenever new elements are added to the DOM or when there is a dynamic refresh of the Single Page App that removes previous modifications.
Kameleoon.API.Core.runWhenElementPresent(".product-button", function (elements) {
 elements.forEach(element => {
  element.innerText = "Add To Cart";
 });
}, null, true);
```

`runWhenElementPresent()` メソッドは、特定の要素が DOM に表示されたときにコールバック関数を実行します。このメソッドは、ミューテーションオブザーバーを使用してちらつき防止技術を実現しています。バリエーションのキーとなる要素を特定し、最初の引数として要素を、コールバックとして実装コードを指定して `runWhenElementPresent()` を呼び出します。これにより、ブラウザが表示の更新サイクルを開始する前に、要素が出現するとすぐに変更が実行されることが保証されます。

複数の要素に対して動作させる場合は、想定される最終的な要素のみをターゲットにするのではなく、各要素に対して個別に `runWhenElementPresent()` を呼び出します。1 回の呼び出しでは、異なる要素が出現する間に更新サイクルが発生した場合にちらつきが生じることがあります。

<Note>
  この値を指定すると、Mutation Observer とアンチちらつき機能が**無効化**され、レガシーのポーリングに戻ります。CPU 負荷の高い複雑なセレクタクエリなど、特定のケースでのみこの引数を使用してください。
</Note>

##### 引数

| 名前               | 型        | 説明                                                                                                                                                          |
| ---------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| selector         | String   | 要素の CSS セレクタ。複数の CSS セレクタを指定する場合は、カンマ区切りの単一文字列を指定します。1 つ以上の要素が存在するとコールバックが実行されます。このフィールドは必須です。                                                              |
| callback         | Function | 要素が DOM に表示されたときに実行される JavaScript 関数。このフィールドは必須です。                                                                                                          |
| pollingInterval  | Number   | この値を指定すると Mutation Observer が無効化され、エンジンがレガシーのポーリングに戻るため、ちらつきが発生する可能性があります。このフィールドは省略可能です。                                                                   |
| isDynamicElement | Boolean  | 有効な場合、ページ読み込み時に即座に見つからないセレクタを Kameleoon が追跡し、要素が出現するたびにコールバックを実行します。セレクタにマッチする新しい要素ごとにコールバックが再度トリガーされます。この設定は、動的メニュー、無限スクロール、ポップアップをサポートします。このフィールドは省略可能です。 |

### runWhenShadowRootElementPresent

```javascript theme={null}
const wrapper = document.querySelector(".shadow-wrapper");
const shadow = wrapper.attachShadow({ mode: "open" });
const span = document.createElement("span");
span.classList.add("selector-inside-wrapper");
span.textContent = "I'm in the shadow DOM";
shadow.appendChild(span);

Kameleoon.API.Core.runWhenShadowRootElementPresent('.shadow-wrapper', '.selector-inside-wrapper', (elements) => {
    elements[0].innerText = "New text" 
});

```

`runWhenShadowRootElementPresent()` メソッドは、`mode: open` に設定された Shadow DOM 内に特定の要素が出現したときに **callback** 関数を実行します。

#### 引数

| 名前                        | 型        | 説明                                                                                                                                  |
| ------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| parentSelector            | String   | 親要素の CSS セレクタ。このフィールドは必須です。                                                                                                         |
| shadowRootElementSelector | String   | Shadow DOM 内の CSS セレクタ。このフィールドは必須です。                                                                                                |
| callback                  | Function | Shadow DOM 内に要素が出現したときに実行される JavaScript 関数。このフィールドは必須です。                                                                            |
| isDynamicElement          | Boolean  | 有効な場合、即座に見つからないセレクタを Kameleoon が追跡し、要素が出現するたびにコールバックを実行します。セレクタにマッチする新しい要素ごとにコールバックが再度トリガーされます。この設定は、動的メニュー、無限スクロール、ポップアップをサポートします。 |

## Kameleoon.API.Goals

このモジュールは、購入確認や売上登録を含む、ゴールのトリガリングおよびコンバージョンデータを管理します。

### cancelConversion

```javascript theme={null}
var buttons = Kameleoon.API.Utils.querySelectorAll(".btnRemoveFromCart");

buttons.forEach(function (button) {
  Kameleoon.API.Utils.addEventListener(button, "mousedown", function (event) {
    Kameleoon.API.Goals.cancelConversion(event.target.id);
  });
});
```

`cancelConversion()` メソッドは、現在の訪問中にトリガーされたコンバージョンをキャンセルします。このメソッドでは、過去の訪問のコンバージョンはキャンセルできません。

##### 引数

| 名前           | 型                 | 説明                                             |
| ------------ | ----------------- | ---------------------------------------------- |
| goalNameOrID | String または Number | Kameleoon App で定義されたゴールの名前または ID。このフィールドは必須です。 |

### processConversion

<Warning>
  processConversion を実装する前に、ゴール ID を必要とせずにカスタマイズを簡素化する [カスタムゴール用カスタムコード](#triggergoal-custom-code-for-custom-goal) 機能を確認してください。
</Warning>

```javascript theme={null}
//Conversion for "Add to cart" goal (goal id 123456)
Kameleoon.API.Core.runWhenElementPresent("#buyButton", ([buyButton]) => {
  Kameleoon.API.Utils.addEventListener(buyButton, "click", () => {
    Kameleoon.API.Goals.processConversion(123456); //Add to cart
  });
});

//Conversion for "Add to cart" goal (goal id 123456) with optional revenue argument
Kameleoon.API.Core.runWhenElementPresent("#buyButton", ([buyButton]) => {
  Kameleoon.API.Utils.addEventListener(buyButton, "click", () => {
    Kameleoon.API.Goals.processConversion(123456, 19.99); //Add to cart
  });
});
```

`processConversion()` メソッドはコンバージョンをトリガーします。メタデータは、`processConversion()` で設定する前に [Kameleoon App で構成](/ja/user-manual/assets/goals/create-a-goal#メタデータ) されている必要があります。

<Note>
  Google Tag Manager などのタグ管理システムからコンバージョンを開始する場合は、エンジンが読み込まれるまで実行を遅延させるために [Kameleoon コマンドキュー](./command-queue) を使用してください。エンジンは初期化後にキューに入れられたコマンドを順番に処理します。例:

  ```javascript theme={null}
  window.kameleoonQueue = window.kameleoonQueue || [];
  kameleoonQueue.push(['Kameleoon.API.Goals.processConversion', 'GOAL_ID']);
  ```
</Note>

##### 引数

| 名前           | 型                 | 説明                                                                                                                                                                                                                                                                                                         |
| ------------ | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| goalNameOrID | String または Number | Kameleoon App で定義されたゴールの名前または ID。ゴール名は一意である必要があります。このフィールドは必須です。                                                                                                                                                                                                                                           |
| revenue      | Number            | 取引金額。この値を指定することで、Kameleoon は売上や平均カート金額などの購入指標を追跡できます。このフィールドは省略可能です。                                                                                                                                                                                                                                       |
| metadata     | Object            | Kameleoon App でゴールメタデータとして定義されたカスタムデータに特定の値を設定します。[事前に Kameleoon App で定義されている必要があります](/ja/user-manual/assets/goals/create-a-goal#メタデータ)。オブジェクトのキーは **カスタムデータのインデックス**（[Custom data ダッシュボード](/ja/user-manual/assets/custom-data/manage-custom-data#カスタムデータのインデックスを確認する) の `INDEX` 列にある数値）です。このフィールドは省略可能です。 |

<Note>
  メタデータの値は [生データのエクスポート](/user-manual/experiment-analytics/analyze-results/results-page/results-page-actions#Export) および [結果ページ](/user-manual/experiment-analytics/analyze-results/data-and-metrics/goal-metadata) からアクセスできます。

  `metadata` パラメータを指定すると、Kameleoon は以前に `setCustomData()` を介して収集された値ではなく、現在のコンバージョンにそれらの値を使用します。パラメータを省略した場合、Kameleoon は同じ訪問内でコンバージョン前に最後に追跡された `customData` の値を使用します。

  Kameleoon は `processConversion()` メソッドに直接渡されたメタデータの値のみを考慮し、以前に設定されたカスタムデータは無視します。次の例では、コンバージョンは指定されたメタデータ (例: インデックス 5 に 'Amex Credit Card') のみと関連付けられます。

  ```javascript theme={null}
  Kameleoon.API.Data.setCustomData(5, 'Credit Card');
  Kameleoon.API.Data.setCustomData(9, 'Express Delivery');

  Kameleoon.API.Goals.processConversion("GoalIDorName", revenue, {
      5: ["Amex Credit Card", "PayPal"], // PaymentMode Custom Data
      4: 1234567, // OrderID CustomData
      3: "1q2w3e4r" // PayPalID CustomData 
  })
  ```
</Note>

### triggerGoal (カスタムゴール用カスタムコード)

**カスタムゴール**をトリガーするには、新しいゴールを作成し、**Trigger my goal** パネルにコードを追加してカスタムコードを挿入します。

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/api-tutorial/custom-code-for-custom-goals.gif)
</Frame>

`triggerGoal()` 関数は、ゴール ID を必要とせずにコードパネルからゴールをトリガーします。

```javascript theme={null}
//No params
triggerGoal();
//With revenue
triggerGoal(49.99);
//With revenue and metadata
triggerGoal(49.99, {5: "Gold"});
```

##### 引数

| 名前       | 型      | 説明                                                                                                                                                                                                                   |
| -------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| revenue  | Number | 取引金額。この値を指定することで、Kameleoon は売上や平均カート金額などの購入指標を追跡できます。このフィールドは省略可能です。                                                                                                                                                 |
| metadata | Object | Kameleoon App でゴールメタデータとして定義されたカスタムデータに特定の値を設定します。オブジェクトのキーは **カスタムデータのインデックス**（[Custom data ダッシュボード](/ja/user-manual/assets/custom-data/manage-custom-data#カスタムデータのインデックスを確認する) の `INDEX` 列にある数値）です。このフィールドは省略可能です。 |

<Note>
  メタデータの値は [生データのエクスポート](/user-manual/experiment-analytics/analyze-results/results-page/results-page-actions#Export) および [結果ページ](/user-manual/experiment-analytics/analyze-results/data-and-metrics/goal-metadata) からアクセスできます。

  `metadata` パラメータを指定すると、Kameleoon は以前に `setCustomData()` を介して収集された値ではなく、現在のコンバージョンにそれらの値を使用します。パラメータを省略した場合、Kameleoon は同じ訪問内でコンバージョン前に最後に追跡された `customData` の値を使用します。

  Kameleoon は `triggerGoal()` メソッドに直接渡されたメタデータの値のみを考慮し、以前に設定されたカスタムデータは無視します。次の例では、コンバージョンは指定されたメタデータ (例: インデックス 5 に 'Amex Credit Card') のみと関連付けられます。

  ```javascript theme={null}
  Kameleoon.API.Data.setCustomData(5, 'Credit Card');
  Kameleoon.API.Data.setCustomData(9, 'Express Delivery');

  triggerGoal( revenue, {
      5: ["Amex Credit Card", "PayPal"], // PaymentMode Custom Data
      4: 1234567 // OrderID CustomData,
      3: "1q2w3e4r" // PayPalID CustomData 
  })

  ```
</Note>

## Kameleoon.API.Data

このモジュールは、顧客や訪問の特性を追跡するための**カスタムデータ**を設定するメソッドを提供します。また、Kameleoon の統合 LocalStorage 内のデータの取得および書き込みを行うデータ管理メソッドも含まれています。

### readLocalData

```javascript theme={null}
var userId = Kameleoon.API.Data.readLocalData("myUserId");

if (userId) {
  Kameleoon.API.Data.retrieveDataFromRemoteSource(userId, function (data) {
    console.log(data.returningVisitor);
  });
}
```

`readLocalData()` メソッドは、以前に `writeLocalData()` を介して保存したローカルデータを読み取ります。エンジンは、標準的なストレージ制限を回避する統合 Local Storage からこのデータを取得します。

##### 引数

| 名前  | 型      | 説明                       |
| --- | ------ | ------------------------ |
| key | String | 取得するデータのキー。このフィールドは必須です。 |

##### 戻り値

| 名前    | 型      | 説明     |
| ----- | ------ | ------ |
| value | String | データの値。 |

### performRemoteSynchronization

```javascript theme={null}
Kameleoon.API.Data.performRemoteSynchronization("customDataName", "customDataValue", false);
```

`performRemoteSynchronization()` メソッドは、Data API へのサーバー同期呼び出し (SSC) をトリガーします。この呼び出しは、現在の訪問者に対して Kameleoon バックエンドサーバーに保存されている訪問履歴を取得し、LocalStorage に書き込みます。これにより、データが Activation API を介してアクセス可能になり、ターゲティングで利用できるようになります。このメソッドは通常、クロスデバイスリコンシリエーションまたは Safari ITP のために自動的に実行されるため、手動で呼び出す必要はありません。

##### 引数

| 名前               | 型       | 説明                                                                                                                              |
| ---------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------- |
| key              | String  | マッピング識別子として機能するカスタムデータのキー (例: アカウント ID やメール)。省略された場合、このメソッドは Kameleoon App でクロスデバイスリコンシリエーション用に構成されたデフォルトの識別子を使用します。            |
| value            | String  | Data API 呼び出しに使用される現在の訪問者識別子の値。省略された場合、このメソッドは最初の引数で指定されたカスタムデータの現在の値を使用します。                                                    |
| currentVisitOnly | Boolean | 有効な場合、SSC は現在の訪問のみのデータをリクエストします。Data API またはサーバー間統合経由で取得したカスタムデータ値を更新するためにこの最適化を使用してください。省略された場合、このメソッドはデフォルトで **false** になります。 |

### resetCustomData

```javascript theme={null}
Kameleoon.API.Data.resetCustomData("MyCustomDataName");
```

`resetCustomData()` メソッドはカスタムデータの値をリセットします。

##### 引数

| 名前   | 型      | 説明                                           |
| ---- | ------ | -------------------------------------------- |
| name | String | Kameleoon App で定義されたカスタムデータの名前。このフィールドは必須です。 |

### retrieveDataFromRemoteSource

```javascript theme={null}
if (location.href.indexOf("loginPage") != -1) {
  Kameleoon.API.Core.runWhenConditionTrue(function () {
    return typeof dataLayer != null;
  }, function () {
    dataLayer.forEach(function (map) {
      if (map.userId) {
        Kameleoon.API.Data.retrieveDataFromRemoteSource(userId, function (data) {
          Kameleoon.API.Data.setCustomData("known_user", data.knownUser);
        });
      }
    });
  }, 200);
}
```

`retrieveDataFromRemoteSource()` メソッドは、指定された **key** でリモート Kameleoon サーバーに保存されたデータを取得します。このメソッドは、Data API 経由で以前に保存されたデータの取得をサポートしています。訪問者に対して大量のデータを迅速に保存および取得する場合に使用します。

この非同期メカニズムでは、サーバー呼び出しが完了したときに **callback** 関数が必要です。

##### 引数

| 名前       | 型        | 説明                                                                     |
| -------- | -------- | ---------------------------------------------------------------------- |
| key      | String   | ルックアップキー。このフィールドは必須です。                                                 |
| callback | Function | データが取得されたときに呼び出される関数。JS オブジェクトである **data** 引数とともに呼び出されます。このフィールドは必須です。 |

### setCustomData

```javascript theme={null}

// Single Type Custom Data
Kameleoon.API.Data.setCustomData("mySingleCustomDataName", "myNewValue"); --> "myNewValue"

// List Type Custom Data
Kameleoon.API.Data.setCustomData("myListCustomDataName", "myFirstValue"); --> ["myFirstValue"]
Kameleoon.API.Data.setCustomData("myListCustomDataName", "mySecondValue"); --> ["myFirstValue", "mySecondValue"]
Kameleoon.API.Data.setCustomData("myListCustomDataName", ["myThirdValue", "myFourthValue"]); --> ["myFirstValue", "mySecondValue", "myThirdValue", "myFourthValue"]
Kameleoon.API.Data.setCustomData("myListCustomDataName", ["myThirdValue", "myFourthValue"], true); --> ["myThirdValue", "myFourthValue"]

// Count List Type Custom Data
Kameleoon.API.Data.setCustomData("myCountListCustomDataName", "myFirstValue"); --> {value: 'myFirstValue', count: 1}
Kameleoon.API.Data.setCustomData("myCountListCustomDataName", "myFirstValue"); --> {value: 'myFirstValue', count: 2}
Kameleoon.API.Data.setCustomData("myCountListCustomDataName", "mySecondValue"); --> --> {value: 'myFirstValue', count: 2}, {value: 'mySecondValue', count: 1}
```

`setCustomData()` メソッドはカスタムデータの値を設定します。

##### 引数

| 名前                    | 型                           | 説明                                                                                                                                                                                                                                         |
| --------------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| CustomDataNameOrIndex | String または Number           | Kameleoon App で定義されたカスタムデータの名前またはインデックス (インデックスはカスタムデータダッシュボードの 'INDEX' 列に表示されます)。このフィールドは必須です。                                                                                                                                            |
| value                 | String、Number、Boolean、Array | カスタムデータの値。指定する引数は、Kameleoon App でこのカスタムデータに対して宣言された型と一致する必要があります。このフィールドは必須です。**`setCustomData()` は、`Type` が `Single` に設定されている場合、String、Number、Boolean を受け付けます。`Type` が `List` または `Count List` に設定されている場合、String または Number の配列を受け付けます。** |
| overwrite             | Boolean                     | **省略可能なブール値**。`true` の場合、新しい値が既存のカスタムデータを上書きします。`false` または省略の場合: **List/Count List** は値を追加します (すべての値がレポートに表示されます)。**Single 型**は上書きします (最新の値のみがレポートに表示されます)。**Page スコープのカスタムデータ** (すべての型) は値を追加します。                                        |

### writeLocalData

```javascript theme={null}
Kameleoon.API.Data.writeLocalData("myData", "myDataValue", true);
```

`writeLocalData()` メソッドは、後で `readLocalData()` を介して取得するために、訪問者のブラウザにローカルデータを記録します。エンジンは、標準的なストレージ制限を回避する統合セッションデータとして Local Storage にこれを保存します。データは RAM キャッシングを介して同じタブ内ですぐに取得可能になり、物理的な書き込みは非同期で行われます。

##### 引数

| 名前         | 型       | 説明                                                                                           |
| ---------- | ------- | -------------------------------------------------------------------------------------------- |
| key        | String  | 書き込むデータのキー (名前)。このフィールドは必須です。                                                                |
| value      | String  | 書き込むデータの値。このフィールドは必須です。                                                                      |
| persistent | Boolean | データの永続性の切り替え。非永続データは 1 時間後に期限切れになり、永続データは 30 日間保持されます。省略された場合、このメソッドはデフォルトで **false** になります。 |

## Kameleoon.API.Events

このモジュールは、実験やパーソナライゼーションのターゲティングのためにカスタムイベントをトリガーします。標準的な DOM イベントについては、[Activation API イベントのドキュメント](./activation-api-events) を確認してください。

### trigger

```javascript theme={null}
Kameleoon.API.Events.trigger("myTriggerEventName");
```

`trigger()` メソッドは、セグメントをターゲットにするためのカスタムイベントをトリガーします。

##### 引数

| 名前        | 型      | 説明                          |
| --------- | ------ | --------------------------- |
| eventName | String | トリガーするイベントの名前。このフィールドは必須です。 |

## Kameleoon.API.Tracking

このモジュールは、Kameleoon の結果を Adobe Analytics (Omniture) などのサードパーティのトラッキングおよび分析プラットフォームと統合します。

### processOmniture

```javascript theme={null}
function s_doPlugins(s) {
  /* Kameleoon Integration */
  window.kameleoonQueue = window.kameleoonQueue || [];
  kameleoonQueue.push(['Tracking.processOmniture', s]);
  window.kameleoonOmnitureCallSent = true;

  // Add your other doPlugins code below
}

s.doPlugins = s_doPlugins;
```

Kameleoon は Adobe Analytics (Omniture) とのネイティブ統合を提供しています。例に従って、`s_doPlugins()` のコードを含むファイルを変更してください。この関数内で次の手順を完了します。

* `Kameleoon.API.Tracking.processOmniture()` への呼び出しを追加します。
* 初回呼び出し送信を追跡するために、`window.kameleoonOmnitureCallSent` グローバル変数を `true` に設定します。この変数は他の場所でも設定できますが、`s_doPlugins()` 内で設定する必要があります。

この統合は、コストを管理しやすくするために Adobe Analytics のヒット数を最小化します。Kameleoon は、メインのトラッキング呼び出しの後に実験またはパーソナライゼーションがトリガーされた場合にのみ、追加のヒットを送信します。これは非同期読み込み (Kameleoon が分析コードの後に読み込まれる場合) や、ボタンクリックのようにページ読み込み後に発生する「遅延」トリガーの結果です。

Kameleoon が最初に読み込まれ、ページ読み込み時にアクティブな実験を特定する場合、グローバルトラッキング呼び出しにはすべての追加データが含まれます。

##### 引数

| 名前             | 型      | 説明                                                                                                                                          |
| -------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------- |
| omnitureObject | Object | Omniture オブジェクトへの参照。通常、グローバル変数 "s" (**window\.s**) が Omniture オブジェクトを表します。また、`s_doPlugins()` メソッドに引数 (同じく "s" という名前) として渡されます。このフィールドは必須です。 |

## Kameleoon.API.Products

このモジュールは商品カタログへのアクセスを提供します。商品閲覧や購入の登録、商品をカートへの追加、推奨商品の取得、または時間ごとまたは日ごとの閲覧数や購入数などの商品統計を取得するために使用します。

<Note>
  このモジュールは、Product Recommendation モジュールまたは Product Targeting アドオンを購読している場合に利用できます。
</Note>

### obtainRecommendedProducts

```javascript theme={null}
Kameleoon.API.Products.obtainRecommendedProducts(
  "1a2b3c4d",
  {
    item: 123500,
    exclude: [3, 14, 159, 26535],
    category: 146,
    search_query: "To be or not to be",
    limit: 15,
    brands: ["Alas", "poor", "Yorick", 'kameleooner'],
    categories: [1, 146, 123500]
  },
  function (response) {
    // the functionality of rendering a block of product recommendations
  },
  function (error) {
    // when something went wrong
  }
);
```

`obtainRecommendedProducts()` メソッドは、指定されたアルゴリズムによって計算された推奨商品を非同期サーバー呼び出しで取得します。

<Warning>
  このメソッドが意味のある結果を返すには、`trackProductView()` や `trackCategoryView()` などの正しい商品トラッキングが必要です。
</Warning>

##### 引数

| 名前              | 型        | 説明                                                                                                        |
| --------------- | -------- | --------------------------------------------------------------------------------------------------------- |
| code            | String   | 推奨ブロックの一意のコード。                                                                                            |
| params          | Object   | [推奨プラットフォームから返されるデータを制御するパラメータ。](#parameters-to-control-the-data-returned-by-the-recommendation-platform) |
| successCallback | Function | API レスポンスオブジェクトを受け取るコールバック関数。このフィールドは必須です。                                                                |
| errorCallback   | Function | エラーが発生した場合に実行されるコールバック関数。このフィールドは省略可能です。                                                                  |

#### 推奨プラットフォームから返されるデータを制御するパラメータ

| 名前              | 型      | 説明                                                                    |
| --------------- | ------ | --------------------------------------------------------------------- |
| item            | String | 現在の商品の ID。「類似」および「この商品も購入されています」アルゴリズムでは必須です。                         |
| exclude         | Array  | 除外する商品識別子のカンマ区切りリスト。                                                  |
| extended        | Number | "1" の場合、メソッドは商品の詳細情報を返します。省略された場合、商品 ID のみを返します。                      |
| category        | Number | カテゴリページのアルゴリズムでは必須です。推奨を指定されたカテゴリに制限します。                              |
| categories      | Array  | このフィールドは省略可能です。使用された場合、指定されたカテゴリ (カテゴリ ID のカンマ区切りリスト) からの推奨商品のみを返します。 |
| brands          | Array  | このフィールドは省略可能です。使用された場合、指定されたブランド (ブランドのカンマ区切りリスト) からの推奨商品のみを返します。     |
| locations       | Array  | このフィールドは省略可能です。使用された場合、リストされた場所 (場所 ID のカンマ区切りリスト) で利用可能な推奨商品を返します。   |
| limit           | Number | このフィールドは省略可能です。推奨商品の最大数。                                              |
| exclude\_brands | Number | このフィールドは省略可能です。推奨から除外する必要があるブランドのカンマ区切りリスト。                           |

#### API レスポンス

コールバック関数は、次の値を持つ API レスポンスオブジェクトを受け取ります。

| 名前       | 型      | 説明                                                        |
| -------- | ------ | --------------------------------------------------------- |
| html     | String | ブロックの HTML コード。Kameleoon の個人アカウントで HTML テンプレートをカスタマイズします。 |
| title    | String | ブロックのタイトル。ブロックルールの "Action" 要素の値に対応します。                   |
| products | Array  | 商品 ID のリスト。                                               |
| id       | Number | 一意のブロック識別子。Kameleoon の個人アカウント内のブロックリストにあるブロック ID に対応します。  |

### trackAddToCart

```javascript theme={null}
var buyButton = Kameleoon.API.Utils.querySelectorAll("#buyButton")[0];
Kameleoon.API.Utils.addEventListener(buyButton, "mousedown", function () {
  Kameleoon.API.Products.trackAddToCart("myProductId", 19.99, 1, {
    stock: true, 
    recommended_code: 'some-unique-code' //see the arguments table for more information
    recommended_by: 'dynamic'//see the arguments table for more information
  });
});
```

`trackAddToCart()` メソッドは、訪問者がショッピングカートに商品を追加したときにトリガーされます。

##### 引数

| 名前         | 型      | 説明                                                                                                                                         |
| ---------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------ |
| productID  | String | 商品の一意の識別子。このフィールドは必須です。                                                                                                                    |
| unitPrice  | Number | **productID** で参照される商品 1 単位の価格。このフィールドは省略可能です。指定されない場合、インポートされた商品フィードからのデフォルト価格が使用されます。                                                    |
| amount     | Number | カート更新後の商品の合計数量。インクリメンタルな値ではなく絶対値を使用してください。たとえば、カートに同じ `productID` のアイテムが 2 つあり、もう 1 つ追加する場合は 3 を指定します。20 個入っているカートから 2 個削除する場合は 18 を指定します。 |
| parameters | Object | [推奨プラットフォームのパラメータ。](#parameters-for-the-recommendation-platform) このフィールドは省略可能です。                                                           |

#### 推奨プラットフォームのパラメータ

| 名前                | 型       | 説明                                                                       |
| ----------------- | ------- | ------------------------------------------------------------------------ |
| recommended\_by   | String  | SPA またはポップアップの場合、この値を "dynamic" に設定します。このフィールドは特定のシナリオで必須です。             |
| recommended\_code | String  | SPA またはポップアップの場合、アカウントの "data-recommender-code" 属性にある一意のウィジェットコードを提供します。 |
| stock             | Boolean | 商品の在庫状況。この値は商品フィードまたはカタログインポートからのデータを上書きします。このフィールドは省略可能です。              |

### trackAddToWishList

```javascript theme={null}
Kameleoon.API.Products.trackAddToWishList("myProductId"); // to add to wish list

Kameleoon.API.Products.trackAddToWishList("myProductId", -1); // to remove from wish list
```

`trackAddToWishList()` メソッドは、訪問者がウィッシュリストやお気に入りに商品を追加または削除したときに実行されます。

| 名前        | 型      | 説明                                                                  |
| --------- | ------ | ------------------------------------------------------------------- |
| productId | String | ウィッシュリストに追加された商品の一意の識別子。このフィールドは必須です。                               |
| quantity  | Number | 更新する数量。削除を示すには負の値 (例: -1) を使用します。省略された場合、このメソッドはデフォルトで **1** になります。 |

### trackCategoryView

```javascript theme={null}
if (location.href.indexOf("productPage") != -1) {
  Kameleoon.API.Core.runWhenConditionTrue(function () {
    return typeof dataLayer != null;
  }, function () {
    dataLayer.forEach(function (map) {
      if (map.categoryID) {
        Kameleoon.API.Products.trackCategoryView(5);
      }
    });
  }, 200);
}
```

`trackCategoryView()` メソッドは、セッション中の各カテゴリページビューに対して実行されます。

##### 引数

| 名前         | 型      | 説明                       |
| ---------- | ------ | ------------------------ |
| categoryID | String | 一意のカテゴリ識別子。このフィールドは必須です。 |

### trackProductView

```javascript theme={null}
Kameleoon.API.Products.trackProductView("myProductID", {
    "name": "productName",
    "categories": [{
        "id": "13",
        "name": "productCategory",
        "parent": null,
        "url": "website.com/category/2"
    }],
    "imageURL": "https://www.mywebsite/productImage.jpg",
    "price": 19.99,
   "oldPrice": 23.99,
    "accessories": ['productID1', 'productID2'],
    "available": true,
    "availableQuantity": 15,
    "brand": "productBrand",
    "groupId": "groupID1",
    "sku": "productSKU",
    "description": "This is a short description",
    "rating": 4,
    "model": "phone 14 128GB",
    "leftovers": "one",
    "tags": ["shirt", "red"],
    "typePrefix": "mobile phone",
    "seasonality": [1, 2, 3, 10, 11, 12],
    "priceMargin": 100,
    "isChild": false,
    "isNew": false,
    "isFashion": true,
    "auto": {
        "vds": ["BP8AN5", "HH5820"],
        "compatibility": [ 
            {
                "brand": "BMW"
            }, 
            { 
                "brand": "Mini", "model": "Cooper S" 
            } 
        ]
    },
    "fashion":  {
        "gender": "f",
        "type": "shoe",
        "sizes": ["37", "42"],
        "feature": "adult",
        "colors": [ 
            { 
                "color": "red" 
            }, 
            { 
                "color": "green", "picture": "https://example.com/items/395532-green.jpg" 
            }
        ]
    },
    "params": [
        {
            "name": "connectivity",
            "value": ["bluetooth", "wi-fi"]
        },
        {
            "name": "lengths",
            "value": ["4", "6", "8"],
            "unit": "cm"
        }
    ]
});
```

`trackProductView()` メソッドは、セッション中の各商品ビューに対して実行されます。このメソッドにより、Kameleoon は XML フィード統合なしで自動化された商品カタログを構築でき、商品推奨プロジェクトのセットアップが簡素化されます。

##### 引数

| 名前          | 型      | 説明                                                                                       |
| ----------- | ------ | ---------------------------------------------------------------------------------------- |
| productID   | String | 商品識別子。これはこの特定の商品の一意の識別子であれば何でも構いません。このフィールドは必須です。                                        |
| productData | Object | [Product オブジェクト](#product)。Product Recommendation アドオンを介して商品フィードをインポートする場合、このフィールドは必須です。 |

### trackSearchQuery

```javascript theme={null}
Kameleoon.API.Products.trackSearchQuery("Example search request");
```

`trackSearchQuery()` メソッドはユーザーの検索クエリを記録します。

##### 引数

| 名前            | 型      | 説明                    |
| ------------- | ------ | --------------------- |
| search\_query | String | 検索クエリの値。このフィールドは必須です。 |

### trackTransaction

```javascript theme={null}
Kameleoon.API.Products.trackTransaction(
 [
  {
   "productID": "myProductID1",
   "quantity": 4
  },
  {
   "productID": "myProductID4564",
   "quantity": 1
  }
 ],
 {
  "order": "N318",
  "order_price": 29999
 }
);
```

`trackTransaction()` メソッドは、取引または購入が発生したときに実行されます。

##### 引数

| 名前       | 型      | 説明                                                                                  |
| -------- | ------ | ----------------------------------------------------------------------------------- |
| products | Array  | 取引内の各商品の `productID` と `quantity` を含むオブジェクトのリスト。このフィールドは必須です。                       |
| params   | Object | [推奨プラットフォーム用の追加パラメータ。](#additional-parameters-for-tracktransaction) このフィールドは省略可能です。 |

##### trackTransaction の追加パラメータ

| 名前              | 型       | 説明                                                                             |
| --------------- | ------- | ------------------------------------------------------------------------------ |
| order           | string  | 店舗の注文番号。これを省略すると、エンジンは内部の番号付けシステムを使用し、注文ステータスの同期ができなくなります。下記のパラメータ説明を参照してください。 |
| order\_price    | Number  | 割引、ボーナス、追加サービスを含む最終的な注文金額。省略すると、エンジンは商品データベースから割引やサービスを含まない金額を計算します。           |
| email           | string  | 顧客のメールアドレス。                                                                    |
| phone           | string  | 顧客の電話番号。                                                                       |
| promocode       | string  | 取引のプロモコード。                                                                     |
| order\_cash     | number  | 現金支払金額。                                                                        |
| order\_bonuses  | number  | ボーナス支払金額。                                                                      |
| order\_delivery | number  | 配送料。                                                                           |
| order\_discount | number  | 注文割引金額。                                                                        |
| delivery\_type  | string  | 配送方法。                                                                          |
| payment\_type   | string  | 支払いタイプ (例: "cash"、"card"、"wire")。                                              |
| tax\_free       | boolean | 免税ステータス。                                                                       |

### obtainInstantSearchProducts

```javascript theme={null}
Kameleoon.API.Products.obtainInstantSearchProducts(
 {
  search_query: "To be or not to be"
 },
 function (response) {
  // the functionality to render a block from instant search
 },
 function (error) {
  // to handle when something goes wrong
 }
);
```

`obtainInstantSearchProducts()` メソッドは、Kameleoon Search からパーソナライズされたインスタント検索結果を非同期サーバー呼び出しで取得します。

##### 引数

| 名前              | 型        | 説明                                         |
| --------------- | -------- | ------------------------------------------ |
| search\_query   | String   | ユーザーが提供する検索クエリ。このフィールドは必須です。               |
| successCallback | Function | API レスポンスオブジェクトを受け取るコールバック関数。このフィールドは必須です。 |
| errorCallback   | Function | エラーが発生した場合に実行されるコールバック関数。このフィールドは省略可能です。   |

#### API レスポンス

コールバック関数は、次の値を持つ API レスポンスオブジェクトを受け取ります。

| 名前                       | 型      | 説明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ------------------------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| search\_query            | String | 検索クエリ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| categories               | Array  | カテゴリに関する情報を含む配列。各オブジェクトには次のプロパティがあります:<ul><li>id – カテゴリ ID (string)</li><li>name – カテゴリ名 (string)</li><li>url – カテゴリ URL (string)</li><li>count – カテゴリ内の商品数 (number)</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| filters                  | Array  | フィルターに関する情報を含む配列。各オブジェクトには次のプロパティがあります: <ul><li>filter – フィルターオブジェクト。次のプロパティがあります:</li><li>count – このパラメータを持つ商品の合計数 (number)</li><li>values – 値の配列 (object)。次のプロパティがあります:</li><li>value – 値ラベル (string)</li><li>count – このパラメータを持つ商品の数 (number)</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| html                     | String | 商品を含むブロックの HTML コード。テンプレートは Kameleoon の個人アカウントでカスタマイズします。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| price\_range             | Object | 商品の最低価格と最高価格。次のプロパティがあります:<ul><li>min – 最低価格 (number)</li><li>max – 最高価格 (number)</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| products                 | Array  | 商品に関する情報を含む配列。各オブジェクトには次のプロパティがあります:<ul><li>description – 商品説明 (string)</li><li>url – 絶対商品 URL (string)</li><li>url\_handle – 相対商品 URL (string)</li><li>picture – Kameleoon ストレージ内の商品画像 URL (string)</li><li>name – 商品名 (string)</li><li>price – 商品価格 (number / int)</li><li>price\_full – 商品価格 (number / float)</li><li>price\_formatted – 通貨付き商品価格 (string)</li><li>price\_full\_formatted – 通貨付き商品価格 (string)</li><li>image\_url - Kameleoon ストレージ内の絶対商品画像 URL (string)</li><li>image\_url\_handle - Kameleoon ストレージ内の相対商品画像 URL (string)</li><li>image\_url\_resized - リサイズされた商品画像 URL (array)</li><li>currency – 商品通貨 (string、Kameleoon の個人アカウントの通貨、またはショップ設定で指定したカスタム値に対応します)</li><li>id – 商品 ID (string)</li><li>old\_price – 商品旧価格 (number / int、デフォルト - 0)</li><li>old\_price\_full – 商品旧価格 (number / float)</li><li>old\_price\_formatted – 通貨付き商品旧価格 (string)</li><li>old\_price\_full\_formatted – 通貨付き商品旧価格 (string)</li><li>追加プロパティ。リクエストに "extended" パラメータが渡された場合、categories – 商品カテゴリ (array)。次のプロパティがあります:<ul><li>id – カテゴリ ID (string)</li><li>name – カテゴリ名 (string)</li><li>parent\_id – 親カテゴリ ID (string)</li><li>url - カテゴリ URL</li><li>category\_ids - 商品カテゴリ ID (array)</li></ul></li></ul> |
| search\_query\_redirects | array  | リダイレクトに関する情報を含む配列。各オブジェクトには次のプロパティがあります:<ul><li>query – 検索クエリ (string)</li><li>redirect\_link – リダイレクト先 URL (string)</li><li>deep\_link – モバイルアプリ用 URL (string)</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| products\_tota           | Number | 商品の合計数                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |

### obtainFullSearchProducts

```javascript theme={null}
Kameleoon.API.Products.obtainFullSearchProducts(
 {
  search_query: "To be or not to be",
  limit: 15,
  brands: ["Alas", "poor", "Yorick"],
  categories: [1, 146, 100500],
  filters: { key: ["value"], key: ["value"] },
  sort_by: "price",
  order: "asc"
 },
 function (response) {
  // the functionality to render a block from full search
 },
 function (error) {
  // when something went wrong
 }
);
```

`obtainFullSearchProducts()` メソッドを使用して、フィルタリングオプション付きの Kameleoon Search ソリューションから完全な検索結果を取得します。

##### 引数

| 名前              | 型        | 説明                                                                          |
| --------------- | -------- | --------------------------------------------------------------------------- |
| search\_query   | Object   | ユーザーが提供する検索クエリとオプションのフィルターパラメータ。次のセクションでフィルタリングパラメータを確認してください。このフィールドは必須です。 |
| successCallback | Function | API レスポンスオブジェクトを受け取るコールバック関数。このフィールドは必須です。                                  |
| errorCallback   | Function | エラーが発生した場合に実行されるコールバック関数。このフィールドは省略可能です。                                    |

##### 結果をフィルタリングするためのパラメータ

| 名前                  | 型       | 説明                                                                                                                         |
| ------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------- |
| search\_query       | String  | 検索クエリ。このフィールドは必須です。                                                                                                        |
| limit               | Number  | 結果の上限数。このフィールドは省略可能です。                                                                                                     |
| offset              | Number  | 結果のオフセット。このフィールドは省略可能です。                                                                                                   |
| category\_limit     | Number  | サイドバーフィルターに返すカテゴリの数。このフィールドは省略可能です。                                                                                        |
| categories          | Array   | フィルターするカテゴリのカンマ区切りリスト。このフィールドは省略可能です。                                                                                      |
| extended            | Number  | 完全な検索結果を取得するには `true` に設定します。                                                                                              |
| sort\_by            | String  | ソートパラメータ: `popular`、`price`、`discount`、`sales_rate`、`date`。このフィールドは省略可能です。                                                 |
| order               | String  | ソート方向: asc または desc (デフォルト)。このフィールドは省略可能です。                                                                                |
| locations           | Array   | 場所 ID のカンマ区切りリスト。このフィールドは省略可能です。                                                                                           |
| brands              | Array   | フィルターするブランドのカンマ区切りリスト。このフィールドは省略可能です。                                                                                      |
| filters             | String  | フィルターパラメータ付きのオプションのエスケープされた JSON 文字列。例: `{"bluetooth":["yes"],"offers":["15% cashback"],"weight":["1.6"]}`。このフィールドは省略可能です。 |
| price\_min          | Number  | 最低価格。このフィールドは省略可能です。                                                                                                       |
| price\_max          | Number  | 最高価格。このフィールドは省略可能です。                                                                                                       |
| colors  false       | Array   | 色のカンマ区切りリスト。このフィールドは省略可能です。                                                                                                |
| fashion\_sizes      | Array   | サイズのカンマ区切りリスト。このフィールドは省略可能です。                                                                                              |
| exclude             | Array   | 検索結果から除外する商品 ID のカンマ区切りリスト。このフィールドは省略可能です。                                                                                 |
| email               | String  | S2S 統合用のみ、サービスがユーザーのセッションを持たない場合に使用します。Mobile SDK では使用しません。このフィールドは省略可能です。                                                 |
| no\_clarification   | Boolean | 明確化検索を無効にします。デフォルトは **false** です。Kameleoon サポートからの指示がない限り、このパラメータは使用しないでください。                                              |
| merchants           | Array   | マーチャントのカンマ区切りリスト。このフィールドは省略可能です。                                                                                           |
| filters\_search\_by | String  | フィルターで使用可能なオプション: `name`、`quantity`、`popularity`。このフィールドは省略可能です。                                                           |

#### API レスポンス

コールバック関数は、次の値を持つ API レスポンスオブジェクトを受け取ります。

| 名前              | 型      | 説明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| --------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| brands          | Array  | ブランドに関する情報を含む配列。各オブジェクトには次のプロパティがあります:<ul><li>name – ブランド名 (string)</li><li>picture – ブランドの画像 (string)</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| categories      | Array  | カテゴリに関する情報を含む配列。各オブジェクトには次のプロパティがあります:<ul><li>alias – カテゴリエイリアス (string)</li><li>id – カテゴリ ID (string)</li><li>name – カテゴリ名 (string)</li><li>parent – 親カテゴリ ID (string)</li><li>url – カテゴリ URL (string)</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| filters         | Array  | フィルターに関する情報を含む配列。各オブジェクトには次のプロパティがあります:<ul><li>filter – フィルターオブジェクト。次のプロパティがあります:<ul><li>count – このパラメータを持つ商品の合計数 (number)</li><li>values – 値の配列 (object)。次のプロパティがあります: \* value – 値ラベル (string)、count – このパラメータを持つ商品の数 (number)</li></ul></li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| html            | String | 商品を含むブロックの HTML コード。テンプレートは Kameleoon の個人アカウントでカスタマイズします。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| price\_range    | Object | 商品の最低価格と最高価格。次のプロパティがあります:<ul><li>min – 最低価格 (number)</li><li>max – 最高価格 (number)</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| products        | Array  | 商品に関する情報を含む配列。各オブジェクトには次のプロパティがあります:<ul><li>brand – 商品ブランド (string)</li><li>currency – 商品通貨 (string、Kameleoon の個人アカウントの通貨、またはショップ設定で指定したカスタム値に対応します)</li><li>id – 商品 ID (string)</li><li>is\_new – 商品プロパティ (boolean、デフォルト - null)</li><li>name – 商品名 (string)</li><li>old\_price – 商品旧価格 (string、デフォルト - 0)</li><li>picture – Kameleoon ストレージ内の商品画像 URL (string)</li><li>price – 商品価格 (number)</li><li>price\_formatted – 通貨付き商品価格 (string)</li><li>url – 商品 URL (string)</li><li>リクエストに "extended" パラメータが渡された場合の追加プロパティ:<ul><li>barcode – 商品バーコード (string)</li></ul></li><li>categories – 商品カテゴリ (array)。次のプロパティがあります:<ul><li>id – カテゴリ ID (string)</li><li>name – カテゴリ名 (string)</li><li>parent – 親カテゴリ ID (string)</li></ul></li><li>params – パラメータに関する情報を含む配列。各オブジェクトには次のプロパティがあります:<ul><li>key – パラメータ名 (string)</li><li>values – 値の配列 (array)</li></ul></li></ul> |
| products\_total | Number | 商品の合計数                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| search\_query   | String | ユーザーが入力した検索クエリ。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |

### obtainProductInteractions

```javascript theme={null}
Kameleoon.API.Products.obtainProductInteractions("123456", product => {
  console.log("product", product); // {123456: {views: 1, cartQuantities: 0, boughtQuantities: 0}}
});
Kameleoon.API.Products.obtainProductInteractions(["123456", "654321"], products => {
  console.log("products", products);
});
Kameleoon.API.Products.obtainProductInteractions(
  "123456",
  callback,
  new Date().getTime() - 1000 * 60 * 60 * 24, // timeBegin
  new Date().getTime() // timeEnd
);
```

`obtainProductInteractions()` メソッドは、`trackProductView()`、`trackTransaction()`、または `trackAddToCart()` 経由で追跡された商品のインタラクション指標を取得します。

##### 引数

| 名前        | 型        | 説明                               |
| --------- | -------- | -------------------------------- |
| eans      | Array    | 商品 ID (String として)。このフィールドは必須です。 |
| callback  | Function | 商品データを受け取るコールバック関数。このフィールドは必須です。 |
| timeBegin | Number   | 日付範囲の開始 (UNIX ミリ秒のタイムスタンプ)。      |
| timeEnd   | Number   | 日付範囲の終了 (UNIX ミリ秒のタイムスタンプ)。      |

##### API レスポンス

| 名前               | 型       | 説明                                                |
| ---------------- | ------- | ------------------------------------------------- |
| eans             | Array   | 商品の一意の識別子。各商品 ID は、インタラクション指標を含むオブジェクトにマッピングされます。 |
| views            | integer | 商品が閲覧された回数。                                       |
| cartQuantities   | integer | 商品が訪問者のカートに追加された合計回数。                             |
| boughtQuantities | integer | 商品が購入された合計回数。                                     |

### obtainProductData

```javascript theme={null}
Kameleoon.API.Products.obtainProductData("123456", product => {
  console.log("product", product);
});
Kameleoon.API.Products.obtainProductData(["123456", "654321"], products => {
  console.log("products", products);
});
Kameleoon.API.Products.obtainProductData("123456", callback, {
  name: true,
  categoryId: true
}); // {123456: {name: '', categoryId: '' }}
```

`obtainProductData()` メソッドは、`trackProductView()` を介して送信されたアイテムの商品情報を取得します。

##### 引数

| 名前         | 型        | 説明                                                    |
| ---------- | -------- | ----------------------------------------------------- |
| eans       | Array    | 商品 ID (String として)。このフィールドは必須です。                      |
| callback   | Function | 商品データを受け取るコールバック関数。このフィールドは必須です。                      |
| parameters | Object   | 特定のフィールドを取得するためのオプションパラメータ。デフォルトは `{ all: true }` です。 |

##### API レスポンス

| 名前          | 型      | 説明                                                                           |
| ----------- | ------ | ---------------------------------------------------------------------------- |
| eans        | Array  | 商品の一意の識別子。各商品 ID は、インタラクション指標を含むオブジェクトにマッピングされます。                            |
| productData | Object | [Product オブジェクト](#product)。`trackProductView` で送信された同じオブジェクトがこのフィールドで受信されます。 |

### obtainRecommendedCollections

```javascript theme={null}
Kameleoon.API.Products.obtainRecommendedCollections("123456", collections => {
    /* The functionality of rendering a product collection block */
    console.log("collections", collections);
}, error => {
    /* Error handling logic if something goes wrong */
});
```

`obtainRecommendedCollections()` メソッドは、指定されたコレクションから商品を取得します。

##### 引数

| 名前              | 型        | 説明                                                   |
| --------------- | -------- | ---------------------------------------------------- |
| collectionId    | String   | 商品コレクション ID。Product Collections ダッシュボードセクションで利用可能です。 |
| successCallback | Function | API レスポンスオブジェクトを受け取るコールバック関数。このフィールドは必須です。           |
| errorCallback   | Function | エラーが発生した場合に実行されるコールバック関数。このフィールドは省略可能です。             |

#### API レスポンス

##### Products

API はオブジェクトの配列を返します。`products` 配列の各オブジェクトには以下が含まれます。

| **パラメータ**              | **型**            | **説明**                             |
| ---------------------- | ---------------- | ---------------------------------- |
| name                   | String           | 商品の名前                              |
| url                    | String (URL)     | 商品ページの URL                         |
| description            | String           | 商品の説明                              |
| category\_ids          | Array of Strings | 商品が属するカテゴリ ID のリスト                 |
| brand                  | String           | 商品のブランド                            |
| fashion\_feature       | String           | ファッション機能 (例: `"adult"`)            |
| fashion\_gender        | String           | 商品の対象性別                            |
| sales\_rate            | Integer          | 商品の販売率                             |
| relative\_sales\_rate  | Float            | 他の商品と比較した相対的な販売率                   |
| picture                | String (URL)     | メイン商品画像の URL                       |
| categories             | Array of Objects | カテゴリオブジェクトのリスト (システム定義の構造)         |
| price\_formatted       | String           | フォーマットされた商品価格 (例: `$29.99`)        |
| price\_full\_formatted | String           | フォーマットされた完全価格/元の価格                 |
| price                  | Float            | 現在の商品価格                            |
| price\_full            | Float            | 割引前の元の価格/完全価格                      |
| image\_url             | String (URL)     | リサイズされた商品画像の URL                   |
| image\_url\_handle     | String (URL)     | 処理済み画像 URL (ハンドルベース)               |
| image\_url\_resized    | String (URL)     | リサイズされた画像 URL                      |
| url\_handle            | String           | コレクション内で商品にアクセスするために使用される URL ハンドル |
| currency               | String           | 商品価格に使用される通貨コード (例: `USD`、`EUR`)   |
| id                     | String           | 商品 ID (システムによっては数値または文字列)          |
| html                   | String (HTML)    | コレクション作成時に選択された HTML テンプレート        |

## Kameleoon.API.Experiments

このモジュールは、ライブな実験にアクセスするメソッドを提供します。

<Note>
  このモジュールは Kameleoon Web Experimentation ソリューションでのみ利用可能です。
</Note>

### assignVariation

```javascript theme={null}
var experimentID = 2468;
var variationID;

if (Kameleoon.API.CurrentVisit.device.type == "Desktop") {
  variationID = 123456;
} else if (Kameleoon.API.CurrentVisit.device.type == "Tablet") {
  variationID = 654321;
} else {
  variationID = 987654;
}

Kameleoon.API.Experiments.assignVariation(experimentID, variationID);
```

`assignVariation()` メソッドは、実験に対する特定のバリエーションの関連付けを強制し、標準の割り当てアルゴリズムをオーバーライドします。実験がトリガーされる前にこれを呼び出すと、エンジンは後の有効化のためにバリエーションを事前割り当てします。実験がすでにトリガーされている場合は、既存の関連付けを置き換えるために **override** 引数を **true** に設定します。

##### 引数

| 名前           | 型       | 説明                                                                                     |
| ------------ | ------- | -------------------------------------------------------------------------------------- |
| experimentID | Number  | 実験の ID。このフィールドは必須です。                                                                   |
| variationID  | Number  | バリエーションの ID。このフィールドは必須です。                                                              |
| override     | Boolean | **true** の場合、エンジンは既存のバリエーションの関連付けを指定された値で置き換えます。省略された場合、このメソッドはデフォルトで **false** になります。 |

### block

```javascript theme={null}
// The experiment will be blocked for the current page
Kameleoon.API.Experiments.block(12345);

// The experiment will be blocked for the whole visit
Kameleoon.API.Experiments.block(54321, true);
```

`block()` メソッドは、`trigger()` を通じた手動呼び出しを含む、実験のトリガーまたは有効化を防止します。ブロックは、次の `Kameleoon.API.Core.load()` までデフォルトで現在のページに適用されます。訪問全体にわたって実験をブロックするには、**visit** 引数を **true** に設定します。

##### 引数

| 名前           | 型       | 説明                                                                                     |
| ------------ | ------- | -------------------------------------------------------------------------------------- |
| experimentID | Number  | 実験の ID。このフィールドは必須です。                                                                   |
| visit        | Boolean | **true** の場合、エンジンは訪問全体にわたって実験をブロックします。省略された場合、ブロックは現在のページのみに適用されます (デフォルト: **false**)。 |

### getAll

```javascript theme={null}
Kameleoon.API.Experiments.getAll().forEach(function (experiment) {
  if (experiment.id == 123456 && experiment.active) {
    console.log(experiment.name);
  }
});
```

`getAll()` メソッドは、すべてのライブ実験 (実行中、ドラフト/一時停止/停止ではないもの) を返します。

##### 戻り値

| 名前          | 型     | 説明                                     |
| ----------- | ----- | -------------------------------------- |
| experiments | Array | [Experiment オブジェクト](#experiment) のリスト。 |

### getActive

```javascript theme={null}
if (Kameleoon.API.Experiments.getActive().length == 0) {
  Kameleoon.API.Events.trigger("No Experiments Events");
}
```

`getActive()` メソッドは、現在の訪問とページに対するアクティブな実験を返します。実験は、そのバリエーションコードが現在のセッションコンテキストで実行された場合にアクティブとなります。訪問中に他の URL で有効化した実験を取得するには、`getActivatedInVisit()` を使用してください。

##### 戻り値

| 名前          | 型     | 説明                                     |
| ----------- | ----- | -------------------------------------- |
| experiments | Array | [Experiment オブジェクト](#experiment) のリスト。 |

### getById

```javascript theme={null}
var experiment = Kameleoon.API.Experiments.getById(123456);

if (experiment && experiment.active) {
  console.log(experiment.name);
}
```

`getById()` メソッドは、指定された ID の実験を返します。

##### 引数

| 名前 | 型      | 説明                   |
| -- | ------ | -------------------- |
| id | Number | 実験の ID。このフィールドは必須です。 |

##### 戻り値

| 名前         | 型      | 説明                                |
| ---------- | ------ | --------------------------------- |
| experiment | Object | [Experiment オブジェクト](#experiment)。 |

### getByName

```javascript theme={null}
var experiment = Kameleoon.API.Experiments.getByName("MyExperimentName");

if (experiment && experiment.active) {
  console.log(experiment.id);
}
```

`getByName()` メソッドは、指定された名前の実験を返します。

##### 引数

| 名前   | 型      | 説明                  |
| ---- | ------ | ------------------- |
| name | String | 実験の名前。このフィールドは必須です。 |

##### 戻り値

| 名前         | 型      | 説明                                |
| ---------- | ------ | --------------------------------- |
| experiment | Object | [Experiment オブジェクト](#experiment)。 |

### getTriggeredInVisit

```javascript theme={null}
Kameleoon.API.Experiments.getTriggeredInVisit().forEach(function (experiment) {
  if (experiment.id == 123456) {
    console.log(experiment.name);
  }
});
```

`getTriggeredInVisit()` メソッドは、現在の訪問中にトリガーされたすべての実験を返します。

##### 戻り値

| 名前          | 型     | 説明                                     |
| ----------- | ----- | -------------------------------------- |
| experiments | Array | [Experiment オブジェクト](#experiment) のリスト。 |

### getActivatedInVisit

```javascript theme={null}
Kameleoon.API.Experiments.getActivatedInVisit().forEach(function (experiment) {
  if (experiment.id == 123456) {
    console.log(experiment.name);
  }
});
```

`getActivatedInVisit()` メソッドは、現在の訪問中に有効化されたすべての実験を返します。

##### 戻り値

| 名前          | 型     | 説明                                     |
| ----------- | ----- | -------------------------------------- |
| experiments | Array | [Experiment オブジェクト](#experiment) のリスト。 |

### trigger

```javascript theme={null}
let experimentID = 123456;
Kameleoon.API.Experiments.trigger(experimentID, true);
```

`trigger()` メソッドは、ターゲティングセグメントの条件を回避して実験を強制的にトリガーします。このアクションは実験を開始しますが、有効化しない可能性があります。

##### 引数

| 名前           | 型       | 説明                                                                                                                                                 |
| ------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| experimentID | Number  | 実験の ID。このフィールドは必須です。                                                                                                                               |
| trackingOnly | Boolean | バックエンド実装とフロントエンドトラッキングを持つハイブリッド実験では、バリエーションアセット (JS、CSS、リダイレクト) を実行せずにトラッキングアクションのみを実行するために **true** に設定します。省略された場合、このメソッドはデフォルトで **false** になります。 |

## Kameleoon.API.Personalizations

このモジュールは、ライブなパーソナライゼーションにアクセスするメソッドを提供します。

### disable

```javascript theme={null}
let personalizationID = 12345;
Kameleoon.API.Personalizations.disable(personalizationID);
```

`disable()` メソッドは、パーソナライゼーションを無効としてマークします。ポップインのようなインタラクティブな要素に対して使用します。ユーザーが要素を閉じたときに `disable()` を呼び出して、パーソナライゼーションのステータスを更新します。Kameleoon は、ネイティブの非カスタムインターフェース要素に対してこの呼び出しを自動的に実装します。

##### 引数

| 名前 | 型      | 説明                            |
| -- | ------ | ----------------------------- |
| id | Number | パーソナライゼーションの ID。このフィールドは必須です。 |

### getActive

```javascript theme={null}
if (Kameleoon.API.Personalizations.getActive().length == 0) {
  Kameleoon.API.Events.trigger("No Personalizations Events");
}
```

`getActive()` メソッドは、現在の訪問とページに対するアクティブなパーソナライゼーションを返します。パーソナライゼーションは、そのバリエーションコードが実行され、関連付けられたアクションが引き続き表示されている場合にアクティブとなります。他の URL でトリガーされたパーソナライゼーション、またはポップインのような現在閉じられているものを取得するには、`getTriggeredInVisit()` を使用してください。

##### 戻り値

| 名前               | 型     | 説明                                               |
| ---------------- | ----- | ------------------------------------------------ |
| personalizations | Array | [Personalization オブジェクト](#personalization) のリスト。 |

### getAll

```javascript theme={null}
Kameleoon.API.Personalizations.getAll().forEach(function (personalization) {
  if (personalization.id == 123456 && personalization.active) {
    console.log(personalization.name);
  }
});
```

`getAll()` メソッドは、すべてのライブなパーソナライゼーション (実行中、ドラフト/一時停止/停止ではないもの) を返します。

##### 戻り値

| 名前               | 型     | 説明                                               |
| ---------------- | ----- | ------------------------------------------------ |
| personalizations | Array | [Personalization オブジェクト](#personalization) のリスト。 |

### getById

```javascript theme={null}
var personalization = Kameleoon.API.Personalizations.getById(123456);

if (personalization && personalization.active) {
  console.log(personalization.name);
}
```

`getById()` メソッドは、指定された ID のパーソナライゼーションを返します。

##### 引数

| 名前 | 型      | 説明                            |
| -- | ------ | ----------------------------- |
| id | Number | パーソナライゼーションの ID。このフィールドは必須です。 |

##### 戻り値

| 名前              | 型      | 説明                                          |
| --------------- | ------ | ------------------------------------------- |
| personalization | Object | [Personalization オブジェクト](#personalization)。 |

### getByName

```javascript theme={null}
var personalization = Kameleoon.API.Personalizations.getByName("MyPersonalizationName");

if (personalization && personalization.active) {
  console.log(personalization.id);
}
```

`getByName()` メソッドは、指定された名前のパーソナライゼーションを返します。

##### 引数

| 名前   | 型      | 説明                           |
| ---- | ------ | ---------------------------- |
| name | String | パーソナライゼーションの名前。このフィールドは必須です。 |

##### 戻り値

| 名前              | 型      | 説明                                          |
| --------------- | ------ | ------------------------------------------- |
| personalization | Object | [Personalization オブジェクト](#personalization)。 |

### getTriggeredInVisit

```javascript theme={null}
Kameleoon.API.Personalizations.getTriggeredInVisit().forEach(function (personalization) {
  if (personalization.id == 123456) {
    console.log(personalization.name);
  }
});
```

`getTriggeredInVisit()` メソッドは、現在の訪問中にトリガーされたすべてのパーソナライゼーションを返します。

##### 戻り値

| 名前               | 型     | 説明                                               |
| ---------------- | ----- | ------------------------------------------------ |
| personalizations | Array | [Personalization オブジェクト](#personalization) のリスト。 |

### getActivatedInVisit

```javascript theme={null}
Kameleoon.API.Personalizations.getActivatedInVisit().forEach(function (personalization) {
  if (personalization.id == 123456) {
    console.log(personalization.name);
  }
});
```

`getActivatedInVisit()` メソッドは、現在の訪問中に有効化されたすべてのパーソナライゼーションを返します。

##### 戻り値

| 名前               | 型     | 説明                                               |
| ---------------- | ----- | ------------------------------------------------ |
| personalizations | Array | [Personalization オブジェクト](#personalization) のリスト。 |

### trigger

```javascript theme={null}
let personalizationID = 123456;
Kameleoon.API.Personalizations.trigger(personalizationID, true);
```

`trigger()` メソッドは、ターゲティングセグメントの条件を回避してパーソナライゼーションを強制的にトリガーします。このアクションはパーソナライゼーションを開始しますが、有効化しない可能性があります。

##### 引数

| 名前                | 型       | 説明                                                                                                                                                                  |
| ----------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| personalizationID | Number  | パーソナライゼーションの ID。このフィールドは必須です。                                                                                                                                       |
| trackingOnly      | Boolean | 外部パーソナライゼーション (ターゲティングまたはトラッキングを Kameleoon が管理する) では、バリエーションアセット (JS、CSS、リダイレクト) を実行せずにトラッキングアクションのみを実行するために **true** に設定します。省略された場合、このメソッドはデフォルトで **false** になります。 |

## Kameleoon.API.Variations

このモジュールは、バリエーションを管理するメソッドを提供します。

### execute

```javascript theme={null}
if (Kameleoon.API.Utils.querySelectorAll("#KameleoonPopin").length == 0) {
  Kameleoon.API.Experiments.getById(123456).variations.forEach(function (variation) {
    if (variation.name == "MyVariation") {
      Kameleoon.API.Variations.execute(variation.id);
    }
  });
}
```

`execute()` メソッドは、指定されたバリエーション ID の JavaScript を実行し、CSS を適用します。

## Kameleoon.API.Segments

このモジュールは、セグメントとターゲティングを管理するメソッドを提供します。

### getAll

```javascript theme={null}
let segments = Kameleoon.API.Segments.getAll();
```

`getAll()` メソッドは、実験、パーソナライゼーション、または Audience トラッキングに関連付けられたものを含む、すべてのライブセグメントを返します。

##### 戻り値

| 名前       | 型     | 説明                               |
| -------- | ----- | -------------------------------- |
| segments | Array | [Segment オブジェクト](#segment) のリスト。 |

### getById

```javascript theme={null}
let segment = Kameleoon.API.Segments.getById(123456);
```

`getById()` メソッドは、指定された ID のセグメントを返します。

##### 引数

| 名前 | 型      | 説明                      |
| -- | ------ | ----------------------- |
| id | Number | セグメントの ID。このフィールドは必須です。 |

##### 戻り値

| 名前      | 型      | 説明                          |
| ------- | ------ | --------------------------- |
| segment | Object | [Segment オブジェクト](#segment)。 |

### getByName

```javascript theme={null}
let segment = Kameleoon.API.Segments.getByName("My segment");
```

`getByName()` メソッドは、指定された名前のセグメントを返します。

##### 引数

| 名前   | 型      | 説明                     |
| ---- | ------ | ---------------------- |
| name | String | セグメントの名前。このフィールドは必須です。 |

##### 戻り値

| 名前      | 型      | 説明                          |
| ------- | ------ | --------------------------- |
| segment | Object | [Segment オブジェクト](#segment)。 |

### reevaluate

```javascript theme={null}
Kameleoon.API.Utils.addEventListener(document.body, "mouseleave", function (event) {
  if (event.clientY < 0) {
    Kameleoon.API.Segments.reevaluate(123456);
  }
});
```

`reevaluate()` メソッドは、指定されたセグメントのターゲティング条件の即時再評価を強制します。評価は通常、ページ読み込み時に行われ、**true**、**false**、または **undefined** のステータスになります。このメソッドは、エンジンが初期化されたばかりであるかのように評価プロセスを再開します。

##### 引数

| 名前 | 型      | 説明                      |
| -- | ------ | ----------------------- |
| id | Number | セグメントの ID。このフィールドは必須です。 |

### trigger

```javascript theme={null}
Kameleoon.API.Segments.trigger(12345);
```

`trigger()` メソッドは、現在の訪問者に対してセグメントトリガーを強制し、ターゲティング条件を回避します。

##### 引数

| 名前 | 型      | 説明                      |
| -- | ------ | ----------------------- |
| id | Number | セグメントの ID。このフィールドは必須です。 |

## Kameleoon.API.Triggers

このモジュールは、トリガーとターゲティングを管理するメソッドを提供します。

### getAll

```javascript theme={null}
let triggers = Kameleoon.API.Triggers.getAll();
```

`getAll()` メソッドは、実験、パーソナライゼーション、または Audience トラッキングに関連付けられたものを含む、すべてのライブトリガーを返します。

##### 戻り値

| 名前       | 型     | 説明                               |
| -------- | ----- | -------------------------------- |
| triggers | Array | [Trigger オブジェクト](#trigger) のリスト。 |

### getById

```javascript theme={null}
let trigger = Kameleoon.API.Triggers.getById(123456);
```

`getById()` メソッドは、指定された ID のトリガーを返します。

##### 引数

| 名前 | 型      | 説明                     |
| -- | ------ | ---------------------- |
| id | Number | トリガーの ID。このフィールドは必須です。 |

##### 戻り値

| 名前      | 型      | 説明                          |
| ------- | ------ | --------------------------- |
| trigger | Object | [Trigger オブジェクト](#trigger)。 |

### getByName

```javascript theme={null}
let trigger = Kameleoon.API.Triggers.getByName("My trigger");
```

`getByName()` メソッドは、指定された名前のトリガーを返します。

##### 引数

| 名前   | 型      | 説明                    |
| ---- | ------ | --------------------- |
| name | String | トリガーの名前。このフィールドは必須です。 |

##### 戻り値

| 名前      | 型      | 説明                          |
| ------- | ------ | --------------------------- |
| trigger | Object | [Trigger オブジェクト](#trigger)。 |

### reevaluate

```javascript theme={null}
Kameleoon.API.Utils.addEventListener(document.body, "mouseleave", function (event) {
  if (event.clientY < 0) {
    Kameleoon.API.Triggers.reevaluate(123456);
  }
});
```

`reevaluate()` メソッドは、指定されたトリガーのターゲティング条件の即時再評価を強制します。評価は通常、ページ読み込み時に行われ、**true**、**false**、または **undefined** のステータスになります。このメソッドは、エンジンが初期化されたばかりであるかのように評価プロセスを再開します。

##### 引数

| 名前 | 型      | 説明                     |
| -- | ------ | ---------------------- |
| id | Number | トリガーの ID。このフィールドは必須です。 |

### trigger

```javascript theme={null}
Kameleoon.API.Triggers.trigger(12345);
```

`trigger()` メソッドは、現在の訪問者に対してトリガーの発火を強制し、ターゲティング条件を回避します。

##### 引数

| 名前 | 型      | 説明                     |
| -- | ------ | ---------------------- |
| id | Number | トリガーの ID。このフィールドは必須です。 |

## Kameleoon.API.Utils

このモジュールは、一般的な操作のためのユーティリティメソッドを提供します。

### addEventListener

```javascript theme={null}
var popin = document.createElement("div");
popin.id = "kameleoonPopin";
popin.innerHTML = "<img src='https://www.mywebsite.com/myImage.jpg'/>";
document.body.appendChild(popin);

Kameleoon.API.Utils.addEventListener(popin, "mousedown", function (event) {
  document.body.removeChild(popin);
});
```

`addEventListener()` メソッドは、指定された要素にイベントハンドラをアタッチします。

<Note>
  Kameleoon は、エンジン再読み込み時にこの API を介して作成されたすべてのイベントリスナーをリセットします。適切なクリーンアップを確保するため、SPA でリスナーを追加する場合はこのメソッドを使用してください。
</Note>

##### 引数

| 名前        | 型        | 説明                                  |
| --------- | -------- | ----------------------------------- |
| element   | Object   | リスナーの対象要素。このフィールドは必須です。             |
| eventType | String   | イベント名。このフィールドは必須です。                 |
| callback  | Function | イベントがトリガーされたときに実行する関数。このフィールドは必須です。 |

### addUniversalClickListener

```javascript theme={null}
let btn = document.querySelector("#MyButton");

Kameleoon.API.Utils.addUniversalClickListener(btn, function (event) {
  let goalID = 1234;
  Kameleoon.API.Goals.processConversion(goalID);
});
```

`addUniversalClickListener()` メソッドは、デスクトップでのマウスクリックと、モバイルデバイスおよびタブレットでのタッチダウンイベントをリッスンするクリックハンドラをアタッチします。モバイルデバイスでは、エンジンが `touchstart` イベントの後に `touchend` イベントを検出し、その間に `touchmove` がない場合にタッチダウンが発生します。

<Note>
  Kameleoon は、エンジン再読み込み時にこの API を介して作成されたすべてのリスナーをリセットし、SPA でのクリーンアップを容易にします。
</Note>

<Note>
  デスクトップデバイスでは、右クリックもこのメソッドをトリガーします (例: 新しいタブでリンクを開くとき)。
</Note>

##### 引数

| 名前       | 型        | 説明                                      |
| -------- | -------- | --------------------------------------- |
| element  | Object   | リスナーの対象要素。このフィールドは必須です。                 |
| callback | Function | クリックイベントがトリガーされたときに実行する関数。このフィールドは必須です。 |

### clearInterval

```javascript theme={null}
var myInterval = Kameleoon.API.Utils.setInterval(function () {
  if (window.dataLayer != null) {
    Kameleoon.API.Utils.clearInterval(myInterval);
  }
}, 1000);
```

`clearInterval()` メソッドは、`setInterval()` を介して設定したタイマーをクリアします。

##### 引数

| 名前         | 型      | 説明                                                |
| ---------- | ------ | ------------------------------------------------- |
| intervalId | Number | `setInterval()` メソッドによって返されたタイマー ID。このフィールドは必須です。 |

### clearTimeout

```javascript theme={null}
var myTimeout = Kameleoon.API.Utils.setTimeout(function () {
  var popin = document.createElement("div");
  popin.id = "kameleoonPopin";
  popin.innerHTML = "<img src='https://www.mywebsite.com/myImage.jpg'/>";
  document.body.appendChild(popin);
}, 5000);

Kameleoon.API.Utils.addEventListener(document.body, "mousedown", function () {
  Kameleoon.API.Utils.clearTimeout(myTimeout);
});
```

`clearTimeout()` メソッドは、`setTimeout()` を介して設定したタイマーをクリアします。

##### 引数

| 名前        | 型      | 説明                              |
| --------- | ------ | ------------------------------- |
| timeoutId | Number | `setTimeout()` によって返されたタイマー ID。 |

### computeHash

```javascript theme={null}
var emailId = Kameleoon.API.Utils.createHash("myemail@mail.com");
Kameleoon.API.Data.setCustomData("VisitorEmail", emailId);
```

`computeHash()` メソッドは、文字列からハッシュを計算します。機密性の高い個人情報を直接操作せずに一意のデータを処理するために使用します。

##### 引数

| 名前     | 型      | 説明               |
| ------ | ------ | ---------------- |
| string | String | ハッシュを計算するソース文字列。 |

##### 戻り値

| 名前   | 型      | 説明                                                                                                                            |
| ---- | ------ | ----------------------------------------------------------------------------------------------------------------------------- |
| hash | String | 生成されたハッシュ。使用されているアルゴリズムは、[java.lang.String の `hashCode()` の実装](https://www.w3schools.com/java/ref_string_hashcode.asp) と同じです。 |

### getURLParameters

```javascript theme={null}
var parameters = Kameleoon.API.Utils.getURLParameters();

if (parameters.productID != null) {
  Kameleoon.API.Events.trigger("ProductPage");
}
```

`getURLParameters()` メソッドは、現在の URL を解析し、検出されたすべてのパラメータを返します。このメソッドは、検索 (?) およびハッシュ (#) パラメータの両方をサポートしています。

##### 戻り値

| 名前         | 型      | 説明                           |
| ---------- | ------ | ---------------------------- |
| parameters | Object | パラメータ名をキー、パラメータ値を値とするオブジェクト。 |

### performRequest

```javascript theme={null}
Kameleoon.API.Utils.performRequest(
  "https://www.my_web_server_url.com",
  function () {
    if (this.readyState == 4 && this.status == 200) {
      eval(this.responseText);
    }
  },
  function() {
    console.log("Request cancelled");
  },
  2000
);
```

`performRequest()` メソッドは、リモート Web サーバーへの呼び出しを開始します。

##### 引数

| 名前                | 型        | 説明                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ----------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| url               | String   | リモートサーバーの URL。このフィールドは必須です。                                                                                                                                                                                                                                                                                                                                                                                                                         |
| readyStateHandler | Function | サーバーから応答を受信したときに実行されるコールバック関数。イベント引数がこの関数に渡され ([load event](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/load_event))、基礎となる XMLHttpRequest オブジェクトがコールバックにバインドされます。そのため、コールバック内では **this** を通じて [XMLHttpRequest のすべてのプロパティ](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#Properties) が利用可能です。このフィールドは省略可能です。                                                                                                   |
| errorHandler      | Function | エラーが発生した場合に呼び出されるコールバック関数。イベント引数がこの関数に渡され ([error event](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestEventTarget/onerror) または [timeout event](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/timeout))、基礎となる XMLHttpRequest オブジェクトがコールバックにバインドされます。そのため、コールバック内では **this** を通じて [XMLHttpRequest のすべてのプロパティ](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#Properties) が利用可能です。このフィールドは省略可能です。 |
| timeout           | Number   | リクエストをキャンセルするまでの待ち時間 (ミリ秒)。デフォルトは 5000 ミリ秒です。                                                                                                                                                                                                                                                                                                                                                                                                       |

### querySelectorAll

```javascript theme={null}
var foundElements = Kameleoon.API.Utils.querySelectorAll(".kameleoonClassName");

foundElements.forEach(function (element) {
  element.style.display = "none";
});
```

`querySelectorAll()` メソッドは、指定された CSS セレクタにマッチするすべてのドキュメント要素を静的 `NodeList` オブジェクトとして返します。

<Note>
  このメソッドは、**:contains** および **:eq** を含むセレクタをサポートしています。
</Note>

##### 引数

| 名前       | 型      | 説明                            |
| -------- | ------ | ----------------------------- |
| selector | String | 1 つ以上の CSS セレクタ。このフィールドは必須です。 |

##### 戻り値

| 名前       | 型     | 説明               |
| -------- | ----- | ---------------- |
| elements | Array | クエリにマッチする要素のリスト。 |

### setInterval

```javascript theme={null}
var countdown = 10;
var timer = document.createElement("div");
timer.innerHTML = countdown.toString();
document.body.appendChild(timer);

var myInterval = Kameleoon.API.Utils.setInterval(function () {
  countdown--;
  timer.innerHTML = countdown.toString();

  if (countdown == 0) {
    Kameleoon.API.Utils.clearInterval(myInterval);
  }
}, 1000);
```

`setInterval()` メソッドは、指定されたミリ秒間隔で関数または式を実行します。

Kameleoon は、エンジン再読み込み時にこの API を介して作成されたすべての間隔をリセットします。適切なクリーンアップを確保するため、SPA ではこのメソッドを使用してください。

##### 引数

| 名前           | 型        | 説明                                    |
| ------------ | -------- | ------------------------------------- |
| function     | Function | 定期的に実行される JavaScript 関数。このフィールドは必須です。 |
| milliseconds | Number   | 間隔の継続時間 (ミリ秒)。デフォルトは 200 ミリ秒です。       |

##### 戻り値

| 名前         | 型      | 説明                              |
| ---------- | ------ | ------------------------------- |
| intervalId | Number | `clearInterval()` で使用するタイマー ID。 |

### setTimeout

```javascript theme={null}
var myTimeout = Kameleoon.API.Utils.setTimeout(function () {
  Kameleoon.API.Events.Trigger("5 seconds elapsed");
}, 5000);
```

`setTimeout()` メソッドは、指定されたミリ秒数後に関数または式を実行します。

Kameleoon は、エンジン再読み込み時にこの API を介して作成されたすべてのタイムアウトをリセットします。適切なクリーンアップを確保するため、SPA ではこのメソッドを使用してください。

##### 引数

| 名前           | 型        | 説明                                     |
| ------------ | -------- | -------------------------------------- |
| function     | Function | 定期的に実行される JavaScript 関数。このフィールドは必須です。  |
| milliseconds | Number   | 関数を実行するまでの待ち時間 (ミリ秒)。デフォルトは 200 ミリ秒です。 |

##### 戻り値

| 名前        | 型      | 説明                             |
| --------- | ------ | ------------------------------ |
| timeoutId | Number | `clearTimeout()` で使用するタイマー ID。 |

## Kameleoon.API.Visitor

このモジュールは、現在の [Visitor オブジェクト](#visitor) への参照を取得するショートカットを提供します。Activation API には単一の一意の Visitor オブジェクトが含まれています。このモジュールでは、訪問者コードをオーバーライドすることもできます。

### setVisitorCode

```javascript theme={null}
 // Setting up the Kameleoon VisitorCode Override

// Initialize the KameleoonQueue if it doesn't exist
window.kameleoonQueue = window.kameleoonQueue || [];

// Push the command to set the VisitorCode with your own ID

 window.kameleoonQueue.push({
    level: "IMMEDIATE",
    command: () => Kameleoon.API.Visitor.setVisitorCode("<USER_ID>")
 });
```

`setVisitorCode()` メソッドは、訪問者ごとにランダムに生成される一意の識別子である Kameleoon VisitorCode をオーバーライドします。ID が一意で、255 文字を超えないようにしてください。

このメソッドはできるだけ早く、特に Kameleoon が実験をトリガーする前に呼び出してください。エンジンがバリエーションを割り当てた後に VisitorCode を更新すると、エンジンはバリエーションを再割り当てします。

## Kameleoon.API.CurrentVisit

このモジュールは、現在進行中の [Visit オブジェクト](#visit) への参照を取得するショートカットを提供します。これは `Kameleoon.API.Visitor.visits[Kameleoon.API.Visitor.visits.length - 1]` と同じオブジェクトを参照します。

## Configuration

Configuration オブジェクトには、このサイトでの Kameleoon の現在の構成に関連するグローバル定数値が含まれています。

### プロパティ

| 名前                | 型       | 説明                                                                                                                                                                                                                  |
| ----------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| siteCode          | String  | Web サイトにインストールされている Kameleoon アプリケーションファイルに対応する一意のサイトコード。10 個のランダムな文字 (小文字と数字) からなる文字列です。                                                                                                                           |
| singlePageSupport | Boolean | シングルページサポートが構成されている場合は **true** に設定されます。構成は Kameleoon アプリを介してグローバルに、または `Kameleoon.API.Core.enableSinglePageSupport()` を介して行われます。シングルページサポートにより、ブラウザのページ再読み込みを必要とせずに、URL の変更が `Kameleoon.API.Core.load()` をトリガーします。 |
| goals             | Array   | このサイトのすべてのアクティブな (構成された) ゴールを表す [Goal オブジェクト](#goal) のリスト。                                                                                                                                                          |
| generationTime    | Number  | Kameleoon アプリケーションファイルの最後の生成時刻 (UTC 形式 - 1970 年 1 月 1 日からのミリ秒)。                                                                                                                                                     |

## Visitor

Visitor オブジェクトには、特定の訪問とは無関係な訪問者スコープのデータが含まれます。このオブジェクトには、訪問者のすべての [Visit オブジェクト](#visit) のリストが含まれます。

### プロパティ

| 名前                          | 型       | 説明                                                                                                                                                      |
| --------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| code                        | String  | ランダムに生成された訪問者コード。Kameleoon サーバーサイド SDK を介してサーバー上でカスタム値が特別に設定されていない限り、16 個のランダムな文字 (小文字と数字) からなる文字列です。                                                   |
| numberOfVisits              | Number  | 訪問者の合計訪問数。この値は `visits.length` を超えることがあります。Activation API は最新の 25 件の訪問のみを保持するためです。                                                                      |
| firstVisitStartDate         | Number  | 最初の訪問の開始日 (UNIX ミリ秒)。この値は `visits[0].startDate` と一致しない場合があります。Activation API は最新の 25 件の訪問のみを保持するためです。                                                   |
| visits                      | Array   | この訪問者が Web サイトで行ったすべての [Visit オブジェクト](#visit) のリスト (最大 25 件)。この訪問者が 25 件を超える訪問を行った場合、このプロパティを通じて最新の 25 件のみが利用可能です。                                      |
| currentVisit                | Object  | 現在進行中の訪問に対応する [Visit オブジェクト](#visit)。これは **Kameleoon.API.CurrentVisit** と同じオブジェクトへの参照です。                                                                |
| previousVisit               | Object  | 前回の訪問に対応する [Visit オブジェクト](#visit)。前回の訪問がない場合 (つまり、現在の訪問が最初のもの) 、このプロパティは **null** になります。                                                                |
| customData                  | Object  | **VISITOR** スコープのすべてのカスタムデータのマップ。マップのキーは定義されたカスタムデータ名です。このマップには、Kameleoon アプリで **VISITOR** スコープで定義したカスタムデータのみが含まれます。他のカスタムデータには Visit オブジェクトからアクセスできます。 |
| experimentLegalConsent      | Boolean | **true** の場合、エンジンは訪問者が実験を有効化するための法的同意を取得しました (または必要ではありません)。訪問者が同意を与えていない、または拒否した場合、このプロパティは **null** になります。                                            |
| personalizationLegalConsent | Boolean | **true** の場合、エンジンは訪問者がパーソナライゼーションを有効化するための法的同意を取得しました (または必要ではありません)。訪問者が同意を与えていない、または拒否した場合、このプロパティは **null** になります。                                   |

## Visit

Visit オブジェクトは、単一の訪問を表し、Kameleoon が収集したリアルタイム情報を含みます。データポイントには、訪問コンテキスト (デバイス、位置)、観察された行動 (継続時間、ページビュー)、およびトリガーされた実験やパーソナライゼーションなどの Kameleoon の操作が含まれます。

### プロパティ

| 名前                           | 型      | 説明                                                                                                                                                                              |
| ---------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| index                        | Number | 訪問のインデックス。特定の訪問者の最初の訪問のインデックスは 0 です。Activation API は最新の 25 件の訪問のみを保持するため、`Kameleoon.API.Visitor.visits[0].index` は 0 と等しくない場合があります。                                             |
| startDate                    | Number | 訪問開始の日付 (UTC 形式 - 1970 年 1 月 1 日からのミリ秒)。                                                                                                                                        |
| duration                     | Number | この訪問の継続時間 (ミリ秒)。この訪問が現在の訪問の場合、この値は常に最新の状態です (アクセスされるたびに再計算されます)。                                                                                                                |
| pageViews                    | Number | 訪問中に閲覧されたページ数。SPA では、`Kameleoon.API.Core.load()` を呼び出すとこの数値が増加します。シングルページサポートが有効な場合、URL の変更により自動的にこの呼び出しがトリガーされます。                                                              |
| locale                       | String | 訪問者のブラウザのロケール。                                                                                                                                                                  |
| device                       | Object | この訪問の訪問者のデバイスに対応する [Device オブジェクト](#device)。                                                                                                                                    |
| geolocation                  | Object | この訪問の訪問者の位置に対応する [Geolocation オブジェクト](#geolocation)。                                                                                                                            |
| weather                      | Object | この訪問の訪問者の天気に対応する [Weather オブジェクト](#weather)。                                                                                                                                    |
| activatedExperiments         | Array  | この訪問で有効化されたすべての実験に対応する [ExperimentActivation オブジェクト](#experimentactivation) のリスト。                                                                                               |
| activatedPersonalizations    | Array  | この訪問で有効化されたすべてのパーソナライゼーションに対応する [PersonalizationActivation オブジェクト](#personalizationactivation) のリスト。                                                                            |
| conversions                  | Object | この訪問で行われたコンバージョンのマップ。マップのキーは定義されたゴール ID です。値は **count** (この訪問でこのゴールがコンバージョンに至った回数) と **revenue** (この訪問でのこのゴールの合計売上) の 2 つのキーを持つオブジェクトです。                                        |
| customData                   | Object | **PAGE** または **VISIT** スコープのすべてのカスタムデータのマップ。マップのキーは定義されたカスタムデータ名です。このマップには、Kameleoon アプリで **PAGE** または **VISIT** スコープで定義したカスタムデータのみが含まれます。他のカスタムデータには Visitor オブジェクトからアクセスできます。 |
| currentProduct               | Object | 現在の商品ページに表示されている商品に対応する [Product オブジェクト](#product)。訪問者が現在商品ページにいない場合、このプロパティは **null** になります。                                                                                   |
| products                     | Array  | この訪問で閲覧されたすべての商品ページに対応する [Product オブジェクト](#product) のリスト (該当する場合 **currentProduct** を含む)。                                                                                       |
| acquisitionChannel           | String | 訪問の取得チャネルの名前。取得チャネルのリストとその特性 (主に URL パラメータなどで推定する方法) は、Kameleoon アプリを使用して定義されます。                                                                                                |
| landingPageURL               | String | 訪問の最初のページの URL。通常はランディングページと呼ばれます。                                                                                                                                              |
| initialConversionPredictions | Object | Kameleoon Conversion Scores (KCS) のマップ。マップのキーは定義されたキーモーメント名です。値は 0 から 100 の範囲で、指定されたキーモーメントの KCS を表します。(注: Kameleoon は最近、Kameleoon アプリで「key moment」を「triggers」に変更しました。)         |

<Note>
  `kameleoonConversionScores` プロパティは、AI Predictive Targeting アドオンでのみ利用可能です。
</Note>

## Device

Device オブジェクトには、特定の訪問のデバイスに関するデータが含まれます。

### プロパティ

| 名前             | 型       | 説明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| -------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| browser        | String  | ブラウザの名前。可能な値: **Chrome**、**Chromium**、**Firefox**、**Safari**、**Microsoft Edge**、**Internet Explorer**、**Opera**、**Android**、**iPhone**、**iPad**、**iPod**、**Samsung Internet for Android**、**Opera Coast**、**Yandex Browser**、**UC Browser**、**Maxthon**、**Epiphany**、**Puffin**、**Sleipnir**、**K-Meleon**、**Windows Phone**、**Vivaldi**、**Sailfish**、**SeaMonkey**、**Amazon Silk**、**PhantomJS**、**SlimerJS**、**BlackBerry**、**WebOS**、**Bada**、**Tizen**、**QupZilla**、**Googlebot**、**Blink**、**Gecko**、**Webkit**。 |
| browserVersion | String  | ブラウザのバージョン。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| os             | String  | OS の名前。可能な値: **Windows**、**Mac**、**Linux**、**Android**、**iOS**、**Chrome OS**、**Windows Phone**。                                                                                                                                                                                                                                                                                                                                                                                                                      |
| type           | String  | デバイスのタイプ。可能な値: **Desktop**、**Tablet**、**Phone**。                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| screenHeight   | Number  | デバイスの画面の高さ (ピクセル単位)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| screenWidth    | String  | デバイスの画面の幅 (ピクセル単位)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| windowHeight   | Number  | ブラウザのウィンドウの高さ (ピクセル単位)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| windowWidth    | String  | ブラウザのウィンドウの幅 (ピクセル単位)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| adBlocker      | Boolean | このデバイスにアクティブな広告ブロッカーがある場合は **true**、そうでない場合は **false** に等しいブール値。                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| timeZone       | String  | ブラウザのタイムゾーン。値は [TZ データベースのタイムゾーン](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) に対応する文字列 (例: "Europe/Paris") です。                                                                                                                                                                                                                                                                                                                                                                                     |

## Geolocation

Geolocation オブジェクトには、特定の訪問の訪問者の物理的な位置に関するデータが含まれます。

### プロパティ

| 名前         | 型      | 説明              |
| ---------- | ------ | --------------- |
| country    | String | 国名 (英語)。        |
| region     | String | 地域の名前 (国の優先言語)。 |
| city       | String | 市の名前 (国の優先言語)。  |
| postalCode | String | 郵便番号。           |
| latitude   | Number | 緯度 (度単位)。       |
| longitude  | Number | 経度 (度単位)。       |

## Weather

Weather オブジェクトには、訪問時に発生した天気の状態に関するデータが含まれます。

### プロパティ

| 名前                   | 型      | 説明                                                                                                            |
| -------------------- | ------ | ------------------------------------------------------------------------------------------------------------- |
| temperature          | String | 温度 (ケルビン)。                                                                                                    |
| humidity             | String | 湿度 (パーセンテージ、0 から 100)。                                                                                        |
| pressure             | String | 大気圧 (hPa)。                                                                                                    |
| windSpeed            | String | 風速 (メートル/秒)。                                                                                                  |
| cloudiness           | Number | 雲量 (パーセンテージ、0 から 100)。                                                                                        |
| sunrise              | Number | 日の出時刻 (UTC 形式 - 1970 年 1 月 1 日からのミリ秒)。                                                                        |
| sunset               | Number | 日の入り時刻 (UTC 形式 - 1970 年 1 月 1 日からのミリ秒)。                                                                       |
| conditionCode        | Number | 天気状態の ID コード。[完全なリファレンスリストはこちらで入手できます。](https://openweathermap.org/weather-conditions)                        |
| conditionDescription | String | `conditionCode` と一致する天気状態の説明。たとえば、`conditionCode` が **800** の場合、`conditionDescription` は **clear sky** になります。 |

## Experiment

Experiment オブジェクトは Kameleoon の A/B テストを表します。コアプロパティには、セグメントと関連するバリエーションが含まれます。バリエーションには、変更を実装する JavaScript および CSS コードが含まれます。

### プロパティ

| 名前                               | 型       | 説明                                                                                                                                                                                                                           |
| -------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| id                               | Number  | 実験の ID。                                                                                                                                                                                                                      |
| name                             | String  | 実験の名前。                                                                                                                                                                                                                       |
| dateLaunched                     | Number  | 実験の初回起動時刻 (UTC 形式 - 1970 年 1 月 1 日からのミリ秒)。                                                                                                                                                                                   |
| dateModified                     | Number  | 実験の最終変更時刻 (UTC 形式 - 1970 年 1 月 1 日からのミリ秒)。                                                                                                                                                                                   |
| targetSegment                    | Object  | 実験に関連付けられた [Segment オブジェクト](#segment)。                                                                                                                                                                                       |
| variations                       | Array   | この実験の [Variation オブジェクト](#variation) のリスト。                                                                                                                                                                                   |
| trafficDeviation                 | Object  | 現在の実験トラフィック割り当てのマップ。キーはバリエーション ID です (ID **0** はリファレンス)。値はパーセンテージ (0-100) です。トラフィックの一部が割り当てられていない場合、合計は 100 と等しくならないことがあります。                                                                                                 |
| untrackedTrafficReallocationTime | Number  | 追跡されていないトラフィックに対して実行された最後の再割り当て時刻 (UTC 形式 - 1970 年 1 月 1 日からのミリ秒)。再割り当てが行われたことがない場合、値は **null** になります。                                                                                                                       |
| goals                            | Array   | 実験で追跡されている [Goal オブジェクト](#goal) のリスト。                                                                                                                                                                                        |
| mainGoal                         | Object  | 実験のメインゴールを表す [Goal オブジェクト](#goal)。                                                                                                                                                                                           |
| triggered                        | Boolean | 実験がページでトリガーされた場合は **true**、そうでない場合は **false** に等しいブール値。                                                                                                                                                                      |
| active                           | Boolean | 実験が現在ページでアクティブな場合は **true**、そうでない場合は **false** に等しいブール値。                                                                                                                                                                     |
| triggeredInVisit                 | Boolean | 実験が現在の訪問でトリガーされた場合は **true**、そうでない場合は **false** に等しいブール値。これは、訪問がどこかの時点で実験のセグメント条件を満たしたことを意味します。                                                                                                                              |
| activatedInVisit                 | Boolean | **true** の場合、エンジンは現在の訪問中に実験を有効化しました。トリガーされた実験が有効化を保証するわけではありません。トラフィック除外やキャッピングなどの要因が有効化を妨げる可能性があります。                                                                                                                        |
| nonExpositionReason              | String  | エンジンが実験をトリガーしたが有効化しなかった場合、このフィールドは理由を表します。可能な値: `EXPERIMENT_EXCLUSION` (訪問者が実験から除外された母集団に属する、つまり結果にはカウントされない) および `VISITOR_CAPPING` (訪問者が有効化を妨げるキャッピング制限に達した)。このプロパティは、エンジンが現在のページで実験をトリガーし `active` が **false** の場合に利用できます。 |
| associatedVariation              | Object  | 指定された訪問者の実験に関連付けられた [Variation オブジェクト](#variation)。実験がまだ有効化されていない場合、これは通常 **null** になりますが、事前割り当てが行われた場合は除きます。                                                                                                                |
| redirectProcessed                | Boolean | **true** の場合、前のページでこの実験の URL リダイレクトが発生しました。このプロパティは [processRedirect()](#processredirect) または手動構成を通じて設定されます。JavaScript ベースの統合では、リダイレクトによってさらなるコード実行がキャンセルされる可能性があります。必要に応じてランディングページでネットワーク要求を再送信するために、このプロパティを確認してください。     |

## Personalization

Personalization オブジェクトは、特定のセグメントに対する Kameleoon のパーソナライゼーションアクションを表します。コアプロパティには、セグメントと関連する単一バリエーションが含まれます。Variation オブジェクトには、パーソナライゼーションアクションを実装する JavaScript および CSS コードが含まれます。

### プロパティ

| 名前                  | 型       | 説明                                                                                                                                                                                                                                           |
| ------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| id                  | Number  | パーソナライゼーションの ID。                                                                                                                                                                                                                             |
| name                | String  | パーソナライゼーションの名前。                                                                                                                                                                                                                              |
| dateLaunched        | Number  | パーソナライゼーションの初回起動時刻 (UTC 形式 - 1970 年 1 月 1 日からのミリ秒)。                                                                                                                                                                                          |
| dateModified        | Number  | パーソナライゼーションの最終変更時刻 (UTC 形式 - 1970 年 1 月 1 日からのミリ秒)。                                                                                                                                                                                          |
| targetSegment       | Object  | パーソナライゼーションに関連付けられた [Segment オブジェクト](#segment)。                                                                                                                                                                                              |
| goals               | Array   | パーソナライゼーションで追跡されている [Goal オブジェクト](#goal) のリスト。                                                                                                                                                                                               |
| mainGoal            | Object  | パーソナライゼーションのメインゴールを表す [Goal オブジェクト](#goal)。                                                                                                                                                                                                  |
| triggered           | Boolean | **true** の場合、パーソナライゼーションはページでトリガーされました。                                                                                                                                                                                                      |
| active              | Boolean | **true** の場合、パーソナライゼーションはページでアクティブ (表示) です。                                                                                                                                                                                                  |
| triggeredInVisit    | Boolean | **true** の場合、パーソナライゼーションは現在の訪問中にトリガーされました。これは、訪問がパーソナライゼーションのセグメント条件を満たしたことを示します。                                                                                                                                                            |
| activatedInVisit    | Boolean | **true** の場合、エンジンは現在の訪問中にパーソナライゼーションのアクションを表示しました。パーソナライゼーションをトリガーしても、エンジンがアクションを表示することを保証するわけではありません。たとえば、キャッピングオプションやコントロールグループのメンバーシップが表示を妨げる可能性があります。                                                                                    |
| nonExpositionReason | String  | トリガーされたが表示されなかった場合の非露出の理由。可能な値: `GLOBAL_EXCLUSION`、`PERSONALIZATION_EXCLUSION`、`PRIORITY`、`SCHEDULE`、`PERSONALIZATION_CAPPING`、`VISITOR_CAPPING`、`SCENARIO`、`SIMULATION`。このプロパティは、パーソナライゼーションが現在のページでトリガーされ `active` が **false** の場合に利用できます。 |
| associatedVariation | Object  | 関連付けられた [Variation オブジェクト](#variation)。このプロパティは常にパーソナライゼーションの有効なオブジェクトを参照します。                                                                                                                                                                |

## ExperimentActivation

`ExperimentActivation` オブジェクトは、特定の訪問中に有効化された実験を表します。訪問は履歴的なものである可能性があるため、関連付けられた実験は停止している場合があります。そのような場合、エンジンは実験メタデータ (名前、起動日、セグメント) をアプリケーションファイルに挿入しないため、API を介して利用できなくなります。ただし、ID は引き続き利用できます。

### プロパティ

| 名前                    | 型      | 説明                                                                                                      |
| --------------------- | ------ | ------------------------------------------------------------------------------------------------------- |
| experimentID          | Number | 実験の ID。                                                                                                 |
| associatedVariationID | Number | 関連付けられたバリエーションの ID。関連付けられたバリエーションがリファレンス (コントロール) の場合、ID は 0 と等しくなります。                                  |
| associatedVariation   | Object | 関連付けられた [Variation オブジェクト](#variation)。実験またはバリエーションがもはやアクティブでない場合 (停止または一時停止) 、このプロパティは **null** になります。 |
| times                 | Array  | この訪問におけるこの実験の有効化時刻のリスト (UTC 形式 - 1970 年 1 月 1 日からのミリ秒)。                                                 |

## PersonalizationActivation

`PersonalizationActivation` オブジェクトは、特定の訪問中に有効化されたパーソナライゼーションを表します。実験と同様に、パーソナライゼーションが停止している場合はメタデータが利用できなくなりますが、ID は引き続きアクセス可能です。

### プロパティ

| 名前                    | 型      | 説明                                                                                                                 |
| --------------------- | ------ | ------------------------------------------------------------------------------------------------------------------ |
| personalizationID     | Number | パーソナライゼーションの ID。                                                                                                   |
| associatedVariationID | Number | 関連付けられたバリエーションの ID。                                                                                                |
| personalization       | Object | 関連付けられた [Personalization オブジェクト](#personalization)。パーソナライゼーションがもはやアクティブでない場合 (停止または一時停止) 、このプロパティは **null** になります。 |
| associatedVariation   | Object | 関連付けられた [Variation オブジェクト](#variation)。パーソナライゼーションまたはバリエーションがもはやアクティブでない場合 (停止または一時停止) 、このプロパティは **null** になります。   |
| times                 | Array  | この訪問におけるこのパーソナライゼーションの有効化時刻のリスト (UTC 形式 - 1970 年 1 月 1 日からのミリ秒)。                                                   |

## Variation

`Variation` オブジェクトは `Experiment` の構成要素を表します。A/B テストには、1 つのバリエーションとリファレンスを持つ A/B テストや、2 つとリファレンスを持つ A/B/C テストのように、複数のバリエーションが含まれます。パーソナライゼーションは単一の [Variation オブジェクト](#variation) に関連付けられます。

<Note>
  バリエーションコードの実行中、`this` キーワードは対応する `Variation` オブジェクトを参照します。この参照を使用して、(たとえば `associatedCampaign` プロパティを介して) オブジェクト階層を移動してください。
</Note>

### プロパティ

| 名前                   | 型      | 説明                                                                                                               |
| -------------------- | ------ | ---------------------------------------------------------------------------------------------------------------- |
| id                   | Number | バリエーションの一意の ID。バリエーションがリファレンス (コントロール) を表す場合、ID は **0** と等しくなります。                                                |
| name                 | String | バリエーションの名前。バリエーションがリファレンス (コントロール) を表す場合、名前は "Reference" と等しくなります。                                               |
| associatedCampaign   | Object | このバリエーションにリンクされた [Experiment](#experiment) または [Personalization](#personalization) オブジェクト。                       |
| instantiatedTemplate | Object | このバリエーションが構築された [インスタンス化されたテンプレートオブジェクト](#template) (該当する場合)。バリエーションがテンプレートから構築されていない場合、このプロパティは **null** になります。 |
| reallocationTime     | Number | バリエーションに対して実行された最後のトラフィック再割り当ての時刻 (UTC 形式 - 1970 年 1 月 1 日からのミリ秒)。再割り当てが行われたことがない場合、値は **null** になります。           |

## Template

`Template` オブジェクトは、インスタンス化された Widget テンプレートを表します。Kameleoon アプリのインターフェースを通じて共通のコードベースからバリエーションを生成するためにテンプレートを使用します。`Template` オブジェクトには、関連付けられたバリエーションの事前定義されたフィールドとその値が含まれます。

### プロパティ

| 名前           | 型      | 説明                                                                                                                                                                                                                    |
| ------------ | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| name         | String | ベーステンプレートの名前。                                                                                                                                                                                                         |
| customFields | Object | テンプレートデータに対応するマップ。キーはベーステンプレートで定義されたフィールドの名前です。値は、関連付けられたバリエーションに入力したインスタンス化された値です。たとえば、単一のテキストフィールド "currentDiscount" を持つテンプレートを作成した場合、`customFields` は `{"currentDiscount": "-10% on all orders today!"}` のようになります。 |

## Goal

`Goal` オブジェクトは、Kameleoon アプリで定義された主要パフォーマンス指標 (KPI) を表します。

### プロパティ

| 名前   | 型      | 説明                                                                    |
| ---- | ------ | --------------------------------------------------------------------- |
| id   | Number | ゴールの ID。                                                              |
| name | String | ゴールの名前。                                                               |
| type | String | ゴールのタイプ。可能な値: **CLICK**、**SCROLL**、**URL**、**ENGAGEMENT**、**CUSTOM**。 |

## Segment

`Segment` オブジェクトには、訪問がセグメントに属するために満たす必要のある基準が含まれます。Kameleoon プラットフォームでは、セグメントには年齢や位置などの定数条件と、ページ滞在時間やカート内容などのトリガー条件が含まれます。

### プロパティ

| 名前   | 型      | 説明         |
| ---- | ------ | ---------- |
| id   | Number | セグメントの ID。 |
| name | String | セグメントの名前。  |

## Trigger

Trigger オブジェクトには、訪問がトリガーを発火させるために満たす必要のある基準が含まれます。Kameleoon プラットフォームでは、トリガーには年齢や位置などの定数条件と、ページ滞在時間やカート内容などのトリガー条件が含まれます。

### プロパティ

| 名前   | 型      | 説明        |
| ---- | ------ | --------- |
| id   | Number | トリガーの ID。 |
| name | String | トリガーの名前。  |

## Product

`Product` オブジェクトは、カタログ内のアイテムを記述します。ほとんどのプロパティはオプションで、**null** の可能性があります。

### プロパティ

| 名前                | 型       | 必須    | 説明                                                                                             |
| ----------------- | ------- | ----- | ---------------------------------------------------------------------------------------------- |
| id                | String  | True  | 商品の一意の ID。                                                                                     |
| name              | String  | False | 商品の名前。                                                                                         |
| sku               | String  | False | 商品の Stock Keeping Unit (SKU) 。                                                                 |
| categories        | Array   | False | [Category オブジェクト](#category) のリスト                                                              |
| imageURL          | String  | False | この商品のメイン画像の URL。                                                                               |
| price             | Number  | False | 商品の現在の価格。                                                                                      |
| oldPrice          | Number  | False | 商品の元の価格。通常は割引やプロモーション前のもの。                                                                     |
| brand             | String  | False | 商品のブランド名。                                                                                      |
| description       | String  | False | 商品のテキストによる説明。                                                                                  |
| available         | Boolean | False | 商品が在庫にあるかどうかの表示。                                                                               |
| availableQuantity | Number  | False | 商品の現在の在庫量。                                                                                     |
| rating            | Number  | False | 商品に付けられた評価 (通常は 0 から 5 ですが、任意の数値も可能)。                                                          |
| tags              | Array   | False | この商品のタグのリスト (String として)。                                                                      |
| typePrefix        | String  | False | "mobile phone" や "washing machine" などの商品タイプ。検索アルゴリズムで使用されます。                                   |
| merchantID        | String  | False | Web サイトがマーケットプレイスを運営している場合、この商品の販売者/マーチャント ID。                                                 |
| groupId           | String  | False | 商品のバリアントを 1 つのグループに結合するためにこのフィールドを使用します。                                                       |
| model             | String  | False | 商品のモデル。                                                                                        |
| leftovers         | String  | False | 特定の商品の在庫。次のいずれかの値を使用してください: `one` (1 個のみ利用可能)、`few` (限られた数量、最大 10 単位)、または `lot` (10 単位以上利用可能)。 |
| priceMargin       | Number  | False | 商品価格マージンの重み付け係数。0 から 100 の間。                                                                   |
| isFashion         | Boolean | False | 衣料品の場合は `true` に設定します。                                                                         |
| isChild           | Boolean | False | 子供向け商品の場合はこのフィールドを使用します。                                                                       |
| isNew             | Boolean | False | 新商品の場合はこのフィールドを使用します。                                                                          |
| accessories       | Array   | False | 現在の商品の補完的または同等であり得る商品 ID の配列。                                                                  |
| seasonality       | Array   | False | 整数の配列 (月: 1-12) 。                                                                              |
| params            | Array   | False | [Param オブジェクト](#param) のリスト                                                                    |
| fashion           | Object  | False | [Fashion オブジェクト](#fashion)                                                                     |
| auto              | Object  | False | [Auto オブジェクト](#auto)                                                                           |

## Category

### プロパティ

| 名前     | 型      | 必須    | 説明            |
| ------ | ------ | ----- | ------------- |
| id     | String | True  | カテゴリの一意の ID。  |
| name   | String | False | カテゴリの名前。      |
| parent | String | False | 親カテゴリの一意の ID。 |
| url    | String | False | カテゴリの URL。    |

## Param

商品に関するカスタム情報をアップロードできるオプションの汎用フィールドで、他のフィールドに収まらないものです。
たとえば、この情報は、商品の購入に必要なメンバーシップステータス、または旅行サーキットの出発日と帰国日などになります。

### プロパティ

| 名前    | 型      | 必須    | 説明                                                         |
| ----- | ------ | ----- | ---------------------------------------------------------- |
| name  | String | True  | パラメータの名前。                                                  |
| value | Array  | True  | 値のリスト (String として) 。                                       |
| unit  | String | False | cm (センチメートル) 、wt (ワット) 、gr (グラム) などの SI 単位の 2 文字の略語を使用します。 |

## Fashion

商品に関するカスタム情報をアップロードできるオプションの汎用フィールド。

### プロパティ

| 名前      | 型      | 説明                                                                                                        |
| ------- | ------ | --------------------------------------------------------------------------------------------------------- |
| gender  | String | "f" (Female) または "m" (Male) でなければなりません。                                                                   |
| type    | String | 商品タイプ。可能な値: `shoe`、`shirt`、`tshirt`、`underwear`、`trouser`, `jacket`、`blazer`、`sock`、`belt`、`hat`、`glove`。 |
| feature | String | 商品が大人専用か子供専用かを示すためにこのフィールドを使用します。"child" または "adult" の値を取る必要があります。                                        |
| colors  | Array  | [Color オブジェクト](#color) のリスト。                                                                              |

## Color

### プロパティ

| 名前      | 型      | 説明       |
| ------- | ------ | -------- |
| color   | String | 商品の色。    |
| picture | String | 画像の URL。 |

## Auto

商品に関するカスタム情報をアップロードできるオプションの汎用フィールド。

### プロパティ

| 名前            | 型     | 説明                                         |
| ------------- | ----- | ------------------------------------------ |
| vds           | Array | 車の指紋として機能する車両識別番号 (VIN) を含む配列。             |
| compatibility | Array | [Compatible オブジェクト](#compatible) のリストを含みます |

## Compatible

### プロパティ

| 名前    | 型      | 必須    | 説明       |
| ----- | ------ | ----- | -------- |
| brand | String | True  | 車のブランド名。 |
| model | String | False | 車のモデル名。  |
