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

# SDK 実行フロー

> Kameleoon SDK 実行の 3 つの段階（初期化、ユーザー識別と属性割り当て、バリエーション割り当てとトラッキング）を理解しましょう。

## 概要

Kameleoon の SDK を使用すると、Web およびモバイルアプリケーションでユーザーエクスペリエンスを向上させるための実験を実施できます。下の図に基づき、Kameleoon SDK で実験を実装するには、**初期化**、**ユーザー識別と属性割り当て**、**バリエーション割り当てとトラッキング** の 3 つの段階があります。本記事ではこれら各段階について詳しく説明します。

<Frame>
  ![SDK Flow](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/sdk-flow/newImage.jpg)
</Frame>

<Note>
  以下の各ステップで説明されているメソッド（およびその名称）は、特定の SDK 言語の慣習に基づき、異なる構文を持ちます。
</Note>

### 1. 初期化

初期化時に、SDK は Cloudflare の Content Delivery Network を介して、更新されたフィーチャーフラグ設定を取得します。取得方法には次の 2 つがあります。デフォルトオプションの **ポーリング** では、SDK が定期的に CDN に要求を送信し（デフォルト間隔は 60 分毎）、最新の設定を取得します。プレミアムオプションの **ストリーミング** では、Kameleoon SDK は server-sent events (SSE) を介して設定のリアルタイムな変更を通知されます。設定が取得されると、SDK はバリエーションおよびターゲティングプロセスとともに、訪問者コードの割り当てを開始します。詳細については、[技術的考慮事項](../technical-reference/technical-considerations#フィーチャーフラグの設定とバケッティング) をご覧ください。

<Note>
  図に示されているように、**ストリーミング** 中、`on_configuration_update` メソッド（名称は SDK ごとに異なります）を使用すると、設定にデータ更新があった際のイベントを処理できます。このメソッドは 1 つの入力パラメーター handler を受け取ります。handler は、リアルタイム設定イベントによって設定が更新されたときに呼び出されます。詳細については、各 [Web](#4-helpful-documents) および [Mobile](#4-helpful-documents) SDK をご参照ください。
</Note>

### 2. ユーザー識別と属性割り当て

この段階では、バリエーションを計算するため、**訪問者コードが割り当てられ**、**ユーザー属性** が組み込まれます。

* **1. 訪問者コードの割り当て:** 初期化時に、訪問者に一意の ID を割り当てるオプションがあります。Web SDK では、`getVisitorCode()` メソッドが要求ヘッダーの Cookie から訪問者コードを取得します。訪問者コードが存在しない場合、メソッドはランダムな訪問者コードを生成し、応答ヘッダー Cookie に保存します。モバイル SDK では、訪問者コードはモバイルデバイスのメモリから取得されます。

* **2. ターゲティング目的のユーザー属性の追加:** Kameleoon のターゲティング条件により、[ユーザー属性](../targeting-and-segmentation/native-segmentation) に基づいてフィーチャーフラグをアクティブ化できます。これらの条件を効果的に使用するには、`addData()` メソッドで値を設定したり、`getRemoteVisitorData()` を使用して [特定の条件](../targeting-and-segmentation/native-segmentation#when-is-getremotevisitordata-required) を取得して使用します。ユーザー属性はその後、サーバーサイド SDK ではサーバーメモリ、クライアントサイド SDK ではブラウザのローカルストレージ、モバイル SDK ではデバイスメモリに保存されます。詳細については、[データストレージに関する記事](../technical-reference/technical-considerations#データストレージ) をご覧ください。

* **3. ターゲティング目的の外部データの追加:** ユーザーの好みや CRM データなどの外部データは、Data API（REST API）の [POST エンドポイント](/api-reference/map/update-data-for-several-keys/) を介して保存できます。このデータは、`getRemoteData()` メソッドを使用して SDK で取得します。

### 3. バリエーション割り当てとトラッキング

Kameleoon SDK では、`getVariation()`（`isFeatureActive()` / `getVariations()`）メソッドは、複数のバリエーションを含むフィーチャー実験の設定を取得します。特定のユーザーに割り当てられたバリエーションキーを取得するために使用できます。

訪問者がフィーチャーフラグのすべてのターゲティング条件と公開ルールを満たすと、Kameleoon はハッシュ関数を使用して訪問者をバリエーションに割り当て、トラッキングサービスに実験イベントを送信します。訪問者が条件を満たさない場合、ユーザーが Web またはモバイルアプリでアクティブであることを示すアクティビティイベントが送信されます。さらに、`flush()` メソッドを使用して、その他の保存されているデータをトラッキングサービスに送信できます。

### 4. 関連ドキュメント

言語固有の連携については、**Web SDK** および **Mobile SDK** の記事をご参照ください。

**Web SDK**

* [Node JS](../../sdks/web-sdks/nodejs-sdk)
* [Java](../../sdks/web-sdks/java-sdk)
* [JS/TS](../../sdks/web-sdks/js-sdk)
* [React](../../sdks/web-sdks/react-js-sdk)
* [C#](../../sdks/web-sdks/csharp-sdk)
* [Go](../../sdks/web-sdks/go-sdk)
* [PHP](../../sdks/web-sdks/php-sdk)
* [Ruby](../../sdks/web-sdks/ruby-sdk)
* [Python](../../sdks/web-sdks/python-sdk)
* [Rust](../../sdks/web-sdks/rust-sdk)
* [Elixir](../../sdks/web-sdks/elixir-sdk)

**Mobile SDK**

* [iOS](../../sdks/mobile-sdks/ios-sdk)
* [Android](../../sdks/mobile-sdks/android-sdk)
* [Flutter](../../sdks/mobile-sdks/flutter-sdk)
* [React Native](../../sdks/mobile-sdks/react-native-sdk)

**追加リソース**

* [FAQ](../technical-reference/faq-global)
