Skip to main content
Kameleoon のターゲティング条件は、特定の条件に基づいてフィーチャーフラグをトリガーします。これらの条件を効果的に使用するには、addData() メソッドで値を設定します。一部のシナリオでは、getRemoteVisitorData() を呼び出して訪問者の履歴データを取得します。この組み合わせにより、高度にターゲット化されたパーソナライズ体験を作成できます。

Kameleoon SDK でのデータ管理

正確なデータは一貫したターゲティングと実験を保証します。以下のセクションでは、クライアントサイドおよびサーバーサイドの SDK がどのようにターゲティング条件を管理するか、また、サーバーからデータを取得するために getRemoteVisitorData() をいつ使用するかについて説明します。

主要用語

  • ターゲティング条件: ターゲティングに使用される特定のユーザー属性またはセッション属性(例:コンバージョン、ブラウザ、カスタムデータ)。
  • クライアントサイド: Web ブラウザまたはモバイルアプリで動作する標準 SDK のデータ処理。
  • クライアントサイド (クロスデバイス): 複数のデバイスにわたって一貫した訪問者プロファイルを維持するクライアントサイド実装のデータ処理。
  • サーバーサイド: SDK がバックエンドサーバー上で動作する際のデータ処理。クライアントサイド SDK と異なり、サーバーサイド SDK は通常、セッション終了後に訪問者情報を削除します。
  • Web のみ: ページ URL やページタイトルなど、ブラウザでのみ生成されるデータに基づくターゲティング条件です。Web SDK はこのデータを自動的に収集します。Android、iOS、Flutter の各 SDK はブラウザがデータを生成しないため、これらの条件をサポートしません。React Native SDK はこれらの条件を実験的にサポートしています。サーバーサイド SDK はこれらの条件をサポートしており、addData() でデータを受け取るか、getRemoteVisitorData() で以前の Web セッションから取得します。

データ収集の要件

SDK は、ターゲティング条件を評価するために特定の訪問者データを必要とします。以下の表は、SDK が自動的に処理する条件と、明示的なメソッド呼び出しを必要とする条件を示しています。
「Web のみ」はデータの発生元を示すものであり、どの SDK が使用できるかを示すものではありません。Web のみの条件はブラウザのデータに由来するため、大半のモバイル SDK はサポートしていませんが、サーバーサイド SDK は addData() または getRemoteVisitorData() を通じてサポートしています。モバイル SDK の中で例外となるのが React Native SDK で、これらの条件を実験的にサポートしています。
  • * 自動データ収集は、シングルページアプリケーション (SPA) では機能しません。SPA では、addData() メソッドを手動で呼び出す必要があります。
  • ** モバイル SDK(Android、iOS、Flutter)ではサポートされていません。React Native SDK は addData() を通じて実験的にサポートしています。

履歴データのために getRemoteVisitorData() を使用する

以下の表は、ターゲティング判断のために履歴データを取得する際に、getRemoteVisitorData() へのリモート呼び出しが必要となるケースを示します。

データ処理の定義

クライアントサイド SDK

  • いいえ(自動): SDK がこのデータを自動的に収集します。リモートリクエストや明示的な addData() 呼び出しは不要です。
  • いいえ: SDK はこのデータを自動的には収集しません。addData()、trackConversion()、または getVariation() のような評価メソッドを使用してこのデータを追加する必要があります。リモートリクエストは不要です。
  • はい: getRemoteVisitorData() を呼び出す必要があります。この要件は、サーバーで生成されるデータ(「Likelihood to convert」など)や、複数のデバイス間でセッションを統一して前のデバイスからアクションを取得する場合に適用されます。

サーバーサイド SDK

  • いいえ(自動): 「SDK type」のみに適用されます。SDK がこれを自動的に収集します。
  • いいえ: このデータを提供するには addData() または trackConversion() を使用します。リモートリクエストは不要です。
  • いいえ/はい: データはサーバー上で直接提供することも、リモートリクエストによって取得することもできます。このシナリオは、クライアントサイド SDK が現在の訪問中にすでに情報を収集している場合に発生します。
  • はい: getRemoteVisitorData() を呼び出す必要があります。サーバーサイド SDK は 限られたデータストレージ を持つため、過去の訪問や実験の排他性などの履歴的なアクションを特定するためにリモート呼び出しが必要です。

リモートデータ取得の利点

getRemoteVisitorData() を呼び出すと、以下の利点が得られます。
  • 最新の情報: 決定に Data API からのリアルタイムデータを使用できます。
  • クロスデバイスの一貫性: 他のデバイスやセッションから収集されたデータにアクセスできます。
  • 履歴アクセス: ローカル SDK の状態がクリアされていても、過去の URL 訪問など、以前のユーザー行動を取得できます。
VisitorDataFiltersType パラメーターを使用して、取得する過去の訪問数を指定したり、特定の条件フィルターを適用したりできます。

エッジターゲティングの制約

エッジで評価されるフィーチャーフラグと実験は、インテグレーションがエッジワーカーに提供する訪問者データにのみアクセスできます。エッジリクエストは、まったく新しい訪問者セッションに対するサーバーサイド SDK の評価と同様に動作します。つまり、エッジワーカーはその訪問者からの以前のリクエストを記憶している保証がないため、ほとんどのターゲティング条件は、明示的にデータを提供しない限り評価するデータを持ちません。 ターゲティング条件を評価できるように訪問者データをエッジワーカーに取り込む方法については、以下で説明します。結果として得られるフラグとバリエーションの決定をオリジンサーバーに送り返すことは別の問題であり、ここで説明する addData() と Cookie の仕組みでは扱いません。エッジフレームワークはこの決定を送り返すための仕組みをそれぞれ異なる形で公開しているため、使用するフレームワークのドキュメントを確認してください。

エッジでの訪問者データの取得元

使用するエッジフレームワークによっては、ユーザーエージェントや位置情報など一部のブラウザ・デバイスデータが、プラットフォーム独自のリクエストコンテキスト API を通じて受信リクエストから直接取得できます。フレームワークが何を公開しているかについては、そのドキュメントを確認してください。カスタムデータや訪問者履歴を含む他のすべてのターゲティング条件は、インテグレーションが明示的に提供しない限り、ワーカーに届く手段がありません。 データの取得元にかかわらず、インテグレーションはそのデータを読み取り、フィーチャーフラグまたは実験を評価する前に addData() を呼び出す責任を負います。Kameleoon は、フレームワークがリクエスト自体で公開するデータを含め、エッジにおいてこれらのデータを代わりに収集することはありません。

エッジでの getRemoteVisitorData()

getRemoteVisitorData() は、サーバーサイドでの評価と同様にエッジでも動作しますが、ほとんどのエッジのユースケースでは実用的ではありません。
  • レイテンシ: getRemoteVisitorData() の呼び出しは、Data API から訪問者の履歴データを取得するのに通常 100~200 ms かかります。フラグとバリエーションの評価自体は通常ミリ秒単位で完了するため、リクエストごとにリモートデータ取得を追加すると、レイテンシがほとんどのエッジのユースケースが目標とする範囲を大きく超えてしまいます。
  • 永続的な共有メモリがない: エッジプラットフォームはいつでもワーカーインスタンスを破棄して再作成できるため、フレームワークがリクエストをまたいで保存できる永続的な共有メモリを提供していない限り、getRemoteVisitorData() の結果をリクエスト間でキャッシュすることは信頼できません。
このメソッドがエッジ以外でどのように機能するかについては、履歴データのために getRemoteVisitorData() を使用する を参照してください。ほとんどのエッジのユースケースでは、代わりに以下で説明するアプローチを使用して、ターゲティング条件が必要とする訪問者データを addData() で提供してください。

訪問者データをエッジワーカーに渡す

エッジ SDK は訪問者データを自ら取得することも保持することもできないため、インテグレーションはリクエスト時にそのデータを利用可能にする責任を負います。
  1. たとえば以前のページ読み込み時やクライアントサイド SDK の呼び出し時など、上流で訪問者属性を収集します。
  2. エッジワーカーは外部呼び出しを行わずに受信リクエストから Cookie を読み取れるため、通常は Cookie として属性をエッジリクエストに渡します。
  3. エッジワーカー内で属性を読み取り、フィーチャーフラグまたは実験を評価する前に、それらを使って addData() を呼び出します。
Cookie の実用的なサイズ制限は約 4 KB です。この予算は、ターゲティング条件が実際に必要とする訪問者属性のために確保してください。

制約はエッジフレームワークとプランによって異なる

エッジフレームワークの機能は時間とともに変化し、使用するプロバイダーだけでなく、そのプロバイダーとの具体的なプランにも依存する場合があります。外部リクエストのサポート、リクエストをまたいだ共有メモリ、コンピュートの課金はすべてフレームワークごとに異なり、プランの階層やプロバイダーが提供内容を更新するタイミングによって変わる可能性もあります。外部呼び出しやリクエストをまたいだキャッシュなど特定の機能に依存する前に、使用するフレームワークの最新のドキュメントとアカウントのプランの詳細を確認してください。Kameleoon が現在サポートしているフレームワークについては、サーバーレスエッジコンピューティングスターターキット を参照してください。

ハイブリッド実験モード

ハイブリッド実験は SDK と Kameleoon JavaScript スニペットを組み合わせ、高度なターゲティングを可能にします。詳細については、ハイブリッド実験 ガイドをご覧ください。 利点:
  • 実装プロセスを効率化します。
  • エンジンが収集した datalayer 変数やフロントエンドの目標などのクライアントサイドデータに、SDK レベルで直接アクセスできます。
要件:
  • SDK と Kameleoon JavaScript タグの両方を実装する必要があります。
このモードで getRemoteVisitorData() を呼び出すと、Web ページ上で Kameleoon エンジンによって自動的に収集されたすべてのデータポイントにアクセスできます。