メインコンテンツへスキップ
グラフィックエディターまたはコードエディターで作成した Web 実験には Kameleoon Application スクリプトを使用してください。フィーチャーフラグおよびフィーチャー実験には Web SDK を使用してください。Kameleoon はハイブリッドモードで実行できることに注意してください。ハイブリッドモードでは、Web SDK と Kameleoon JavaScript アプリケーションファイルの両方を使用します。ハイブリッドモードでは、個々のタスクに対して最適なアプローチを使用できます。たとえば、バリエーションの実装とデプロイはサーバーサイドの方が容易で、トラッキングは JavaScript ファイルでより効果的に実行できます。
Kameleoon は初期化中に CDN サーバーを使用します。設定が受信され、キャッシュされると、取得と更新は迅速に行われます(最も近い CDN からのサーバーのレイテンシによりますが、50〜70 ms)。
設定を取得する方法は 2 つあります:ポーリングストリーミング です。
Server Side Events(SSE または EventSource)プロトコルが使用されます。
CDN は、フィーチャーフラグの設定を更新するたび(たとえば、バリエーション、トラフィック公開、ターゲティングなど)、または 24 時間ごとにパージされます。
クライアントサイド SDK を使用しており、Web サイトが標準の Content-Security-Policy (CSP) HTTP ヘッダーを介してリソース(スクリプト、画像、メディア、CSS)の読み込みを制限している場合は、サイトの CSP を更新して Kameleoon リソースの読み込みを許可してください。
script-src https://[your-site-code].kameleoon.io https://[your-site-code].kameleoon.eu https://client-config.kameleoon.com https://sdk-config.kameleoon.eu https://*.experimentation.dev 'unsafe-eval';
connect-src https://[your-site-code].kameleoon.io https://[your-site-code].kameleoon.eu https://eu-data.kameleoon.eu https://eu-data.kameleoon.io https://na-data.kameleoon.eu https://na-data.kameleoon.io https://editor.kameleoon.com https://api.kameleoon.com https://customers.kameleoon.com https://logger.kameleoon.io https://client-config.kameleoon.com https://sdk-config.kameleoon.eu https://*.experimentation.dev;
Kameleoon を ハイブリッドモード で使用している場合、Kameleoon スクリプトのドメイン https://[your-site-code].kameleoon.xx はプロジェクトごとに異なる可能性があります。プロジェクトは作成日に応じて kameleoon.eu または kameleoon.io のいずれかでホストされている場合があります。Kameleoon アプリのプロジェクトに表示されるドメインを使用していることを確認してください。[your-site-code] を、それが表示される各行の Kameleoon の サイトコード に置き換え、これを設定に追加してください。
各サーバーインスタンスにはそれぞれメモリがあるため、収集されたすべての訪問者データはそのインスタンスに保存されます。同じ訪問者からのリクエストが同じサーバーインスタンスで処理されるフレームワークを使用する必要があります。そうでない場合、訪問者データは各トラッキングリクエスト前に完全に追加するか、getRemoteVisitorData メソッドを使用してロードする必要があります。問題が SDK 設定の違いにある場合は、ストリーミング オプションを使用してください。
すべての評価はレイテンシを排除するためにローカルで行われます。トラッキングリクエストはその後、非同期に Kameleoon の Data API サーバーに送信されます。
訪問者を実験のバリエーションに割り当てるため、Kameleoon はまず訪問者コード、実験 ID、および再プール時の追加要素を使用して識別子を構築します。次に、ハッシュ関数 SHA-256 の同期実装が、この識別子のハッシュを計算します。ハッシュ化を通じて得られた整数は、その後ゼロから 1 までの浮動小数点数にマッピングされ、実験のバリエーションに割り当てられます。SHA-256 関数は決定論的であるため、同じユーザー(同じ訪問者コード)は、割り当ての再計算が明示的に要求されない限り、常に実験の同じバリエーションに割り当てられます。
こちら で詳しく説明されている方法に従ってください。
すべての可能なケースについては、この 記事 で説明されています。
訪問者からの訪問数が多い場合、それらはボットである可能性があります。ボットが実験に影響を与えるのを防ぐため、プロジェクト設定で ボットフィルタリングオプション を有効化してください。訪問者がボットではないことを示すには、SDK メソッドを使用して Kameleoon の UserAgent データを渡す必要があります。メソッドを呼び出すと、Kameleoon がユーザーをフィルタリングするのを防ぎます。
レポートに予期しない割り当て(たとえば、50/50 ではなく 10/90)が表示されたり、訪問者が欠落している場合、以下のいずれかが原因である可能性があります:
  • 特定のバリエーションに対する訪問者プールの絞り込み: まず getVariations(onlyActive: true, track: false) を呼び出すと、SDK はアクティブな(ON)バリエーションに割り当てられた訪問者のみを返します。次に、これらの特定の訪問者にのみ実験ページを表示し、getVariation(track: true) を呼び出すと、Kameleoon は ON バリエーションのみを追跡し、結果として 1 つのバリエーションのみを示すレポートになります。
  • トラッキングリクエストのための時間不足: Kameleoon は特定の間隔でデータを送信します。訪問者が ON バリエーションの Kameleoon クライアントが統合されているページに滞在し、その後 OFF バリエーション用のクライアントがないページに移動した場合、クライアントは OFF バリエーションのトラッキングリクエストを送信する時間が足りない可能性があります。
  • 特定のバリエーションの設定漏れ: 一部のバリエーションで UserAgent または setLegalConsent が省略されている可能性があります。たとえば、ON バリエーションのページでのみ同意を与える場合、Kameleoon は OFF バリエーションの訪問者を追跡できません。
  • 訪問者データの欠落: SDK は訪問者データを自動的に収集しません。ターゲティングとトラッキングが正しく機能するように、明示的に追加する必要があります。

ターゲティング設定の確認

ターゲティングに問題があると思われる場合、以下の手順に従ってください:
  1. 100% の公開で非ターゲティングルールを作成し、希望するバリエーションを割り当てます。
  2. ターゲティングを追加し、ユーザーがバリエーションを受け取らないことを確認します。
  3. 必要な Kameleoon データを追加します。
ユーザーはバリエーションを再び受け取るはずです。これが失敗する場合、問題を切り分けるためにより単純なターゲティング条件を試してみてください。
はい、データはすぐにターゲティングで利用可能になります。サーバーベースの SDK では訪問者セッション中、クライアントベースの SDK(モバイルと Web)では設定された有効期間中、データは利用可能です。
SDK の種類によって異なります。サーバー SDK では、訪問者のデータは訪問者のセッション中、稼働メモリに保存されます。デフォルトは 30 分ですが、セッションの長さは設定可能です。
sessionDuration パラメーターを使用してセッション期間が長いほど、SDK がメモリに保持するデータが多くなります。データが多いほど消費量が増加します。訪問者が連絡されるたびにセッションは追加で 30 分延長されます。したがって、SDK は最後のリクエストから少なくとも 30 分間はデータが削除されないことを保証します。
クライアント SDK(モバイルおよび Web)では、データはローカルストレージ(Web では LocalStorage)に保存されます。データは永続的に保存できますが、dataExpirationInterval または targetingDataCleanupInterval パラメーターを使用してデータの有効期限を設定でき、その後データは削除されます。
一般的に、「flush」メソッドを手動で呼び出す必要はありません:データは他の SDK メソッド への呼び出しと一緒に送信されます。ただし、訪問者のフィーチャーフラグをトリガーせずに Data API にデータを送信する必要がある場合は、「flush」メソッドを使用してください。
サーバーベースの SDK では、データは訪問者のセッション中に保存されます。ユーザーのセッションが期限切れになっていなければ、リクエストごとにデータをロードする必要はありません。モバイル SDK では、データは永続的に保存されます(または設定に従います)。ユーザーセッションがアクティブでなくなった場合、または訪問者がクライアント SDK 内でデバイス間を移動している場合は、適切なパラメーターで getRemoteVisitorData メソッドを呼び出して、Data API に送信されたデータを取得します。ロード後、データは訪問者のターゲティングに含まれます。
GDPR ルールに従い、訪問者の同意がない場合、Kameleoon は製品機能の正しい動作に必要な技術情報のみを使用します。同意がない場合、Kameleoon は Targeted Delivery ルールに対してはバリエーションを送信しますが、Experiment ルールには送信しません。その他の情報(たとえば、CustomData、ページビュー、ジオロケーション)はすべて、訪問者の同意がある場合(許可が付与されたとき)にのみ送信されます。同意管理の詳細については、こちら で読むことができます。
デフォルトでは、SDK は複数のイベントをまとめてバッチ処理し、設定可能な間隔で分析目的のトラッキングリクエストを Kameleoon サーバーに送信します。このアプローチにより効率が向上し、サーバーの負荷が低減されます。トラッキングリクエストは以下の場合に送信されます:
  • 定期的: デフォルトでは、リクエストは 1000 ミリ秒(1 秒) ごとに送信されます。tracking interval 値を設定することで、この間隔を変更できます。
  • オンデマンド: コード内で flush(instant=true) のようなメソッドが呼び出された場合、即座に送信されます。
具体的には、間隔の期限が切れる前に以下のいずれかのメソッドが呼び出されると、トラッキングリクエストがトリガーされます:
  • getVariationtracktrue に設定されている場合)。
  • getVariationstracktrue に設定されている場合)。
  • isFeatureActivetracktrue に設定されている場合)。
  • trackConversion
  • flushinstant=true の有無にかかわらず)
上記のメソッド呼び出しに加え、クライアントサイド SDK は、他のアクティビティが発生していない場合、15 秒 ごとにトラッキングリクエストを送信します。このリクエストは訪問者のセッションを維持するのに役立ちます。アクティビティトラッキング間隔は、Android および iOS SDK で設定可能です。サーバーサイド SDK の場合、イベントのバッチ処理は、各トラッキングリクエストが複数の訪問者のデータを 1 つのリクエストに統合できるため、特に有効です。このアプローチでは、すべての影響を受けた訪問者の情報を集約し、間隔ごとに 1 回送信することで、効率を向上させ、サーバーの負荷を低減します。
トラッキングリクエストは Data API のレート制限 の対象となります。クライアントサイド SDK の場合、複数の訪問者が同じネットワークを共有している環境(たとえば、オフィス内)では、同じ IP アドレスから発信されているように見えることがあり、レート制限を超過して 429 - Too Many Requests エラーを引き起こす可能性があります。
異なる SDK では、言語の特性により、メソッドの名前が異なる場合があります。
以下は、HTTP リクエストを行う SDK メソッドのリストです:
  • isFeatureActive / getFeatureVariationKey / getFeatureVariable / trackConversion / flush
    • これらのメソッドは、訪問者に関するすべての情報(ユーザーが受信したバリエーションを含む)を保存するために Data API への非同期リクエストを行います。これは、app.kameleoon.com で統計を表示するために使用されます。
  • getRemoteData / getRemoteVisitorData / getWarehouseAudience
    • これらのメソッドは、訪問者に関する情報を取得するために Data API への同期リクエストを行います。
  • さらに、SDK は内部作業に必要な設定を取得するために非同期リクエストを行います。
isFeatureActive は、フラグがアクティブかどうかを知る必要があるが、訪問者が受信した正確なバリエーションを知る必要がない場合に呼び出すことができます。Experiment ルールを使用する場合、「off」以外に 2 つ以上のバリエーションがある場合は getFeatureVariationKey を呼び出す方が良いでしょう。
はい、クライアントサイド SDK(Kameleoon JavaScript SDK または engine.js アプリケーションファイル)とサーバーサイド SDK の両方を使用してハイブリッド連携を実装できます。このセットアップでは、getVisitorCode メソッドを呼び出すことが不可欠です。これにより、ブラウザとサーバー間で訪問者を一貫して認識し、特定のフィーチャーフラグに対してクライアントサイドコード(たとえば、イベントトラッキング)とサーバーサイドコード(たとえば、機能実行)の両方を実行する際に、一貫したバリエーション割り当てを保証します。
ハイブリッド連携(Web サイト <-> server SDK、JS SDK <-> server、engine <-> server SDK)を使用している場合、getVisitorCode を使用する必要があります。getVisitorCode を呼び出すと、訪問者コードが取得され、Cookie を使用して送信されます。ハイブリッド連携を使用していない場合、getVisitorCode を呼び出す必要はありません。ただし、ランダムな訪問者コードを生成するために呼び出すこともできます。
getVisitorCode にはドメインのインストールが必要です。そうでない場合、同じ訪問者でも、サイトの異なるサブドメイン上で異なる訪問者コードを持つため、異なるバリエーションを取得する可能性があります。
サーバーとクライアント SDK を同時に使用している場合、両方の SDK に対して同意を設定する必要があります。詳細については、この 記事をご参照ください。
Kameleoon は、多くのエクスペリエンス最適化ソリューションと同様に、特定の広告ブロッカーによってブロックされる可能性があります。これは主に、Web 実験アプリケーションファイル(engine.js)と、Web サイトに読み込まれた JavaScript コードに依存するクライアントサイド SDK に影響します。一方、サーバーサイド SDK はサーバー内で動作するため、広告ブロッカーの影響を受けません。広告ブロッカーを使用しているユーザーを実験に含めたい場合、Kameleoon は Kameleoon のデフォルトドメインの代わりにカスタムドメインを使用できるプレミアムオプションを提供しています。カスタムドメインは、広告ブロッカーが Kameleoon を検出してブロックすることを防ぎます。設定後、Kameleoon はトラッキング目的または SDK 設定の更新のいずれかにおいて、当社のサーバーへのすべての送信ネットワークリクエストにカスタムドメインを使用します。カスタムドメインの使用は、セルフホスティングとは異なります。カスタムドメインを使用する場合、Kameleoon のインフラストラクチャは引き続きすべてのコンテンツ(たとえば、engine.js、SDK 設定、トラッキング呼び出し)をホストして提供します。違いは、これらのリクエストが experiments.mydomain.com のような、あなたが管理するドメインを経由してルーティングされることです。このオプションを有効にするには、テクニカルアカウントマネージャーにご連絡ください。サブドメイン(たとえば、experiments.mydomain.com)ではなく、完全なドメイン(たとえば、experiments-mydomain.com)を提供する必要があります。ドメイン名には kameleoon という部分文字列を含めることはできません。
  • Web 実験では、デフォルトの Kameleoon ドメイン(kameleoon.)への参照をカスタムドメインに置き換えます。
    • 例: //SITE_CODE.{your-domain}/engine.js
  • クライアントサイド SDK では、SDK の初期化で networkDomain パラメーターを使用します。
カスタムドメインではなくセルフホスティングを使用する場合は、このガイド に従ってください。