Skip to main content
この記事では、相互排他的な実験の一部がクライアントサイドで、一部がサーバーサイドで実行される場合に、Kameleoon Web Experimentation(クライアントサイド)と Kameleoon Feature Experimentation(サーバーサイド)の両方にまたがる相互排他的な設定を構成する方法について説明します。
相互排他グループの背景にある考え方(Kameleoon が訪問者をグループに割り当てるタイミングや、事前に検討すべきトレードオフを含む)については、相互排他グループを参照してください。

シナリオ

3 つの相互排他的な実験を実行したいとします。
  • 2 つの実験は Kameleoon Web Experimentation(JavaScript ベース)を通じてクライアントサイドで実行されます。
  • 1 つの実験は Kameleoon Feature Experimentation(たとえばバックエンド SDK 経由)を通じてサーバーサイドで実行されます。
異なるテクノロジーがユーザージャーニーの異なる段階でこれらの実験をアクティブ化するとしても、訪問者がこれらのうち 1 つだけに露出するようにする必要があります。

両方のテクノロジーにまたがる相互排他性を設定する

1. フィーチャー実験から始める

フィーチャー実験はサーバーサイドで実行され、ページ読み込み前の早い段階でのターゲティングが必要なため、最初にトラフィックを割り当てます。
  1. フィーチャー実験を作成します。
  2. この実験に総トラフィックの 33%、またはテスト計画に合わせたその他の割合を割り当てます。
残りの 67% のトラフィックは、2 つの Web 実験で利用できるようになります。

2. Web 実験用の相互排他グループを作成する

Web 実験用の相互排他グループを作成するの手順に従って、2 つの Web 実験用の相互排他グループを作成します。このグループ化により、訪問者は 2 つの Web 実験のうちどちらか 1 つだけを見るようになり、両方を見ることはありません。

3. フィーチャー実験の参加者を Web 実験から除外する

フィーチャー実験にバケットされた訪問者をどちらの Web 実験にも入れないようにするため、両方の Web 実験に次のターゲティング条件を適用します。
  • ターゲティング条件: Campaigns → Feature flagfeature_experiment_name の任意のバリエーションに露出した訪問者を除外する。
この条件により、両方のテクノロジーにまたがる相互排他性が維持されます。

4. 同期タイミングを考慮する

デフォルトでは、Kameleoon Web Experimentation はページ読み込みごとにリモート同期コールを実行し、訪問者がすでにフィーチャー実験に露出しているかどうかを確認します。Kameleoon はこのコールを使用して、訪問者を Web 実験に含めるか除外するかを判断します。 3 つの実験すべてが同じページで実行されている場合、この設定は扱いが難しくなります。Web エンジンは、訪問者を Web 実験に含めるかどうかを決定する前にサーバーサイドの露出ステータスを待つ必要があり、これがフリッカリングや表示の遅延を引き起こす可能性があります。
フィーチャー実験と Web 実験がカスタマージャーニーの異なる時点、たとえば異なるページでトリガーされる場合は、Web 実験のいずれかにすでに露出した訪問者を除外する除外ターゲティング条件を、フィーチャー実験にも追加してください。

推奨される解決策

フリッカリングを排除してリアルタイムで判断するには、リモートコールを待たずに、訪問者のフィーチャー実験ステータスをフロントエンドで直接公開します。
  1. SDK メソッド getEngineTrackingCode() を使用します。
  2. 出力をページの HTML、できれば <head> セクションに挿入します。
こうすることで、Kameleoon は訪問者がフィーチャー実験にすでに露出していたかどうかを即座に把握でき、より速くスムーズなターゲティングが可能になります。