「Activate Experiment」手順では、ユーザーが Full Stack A/B テストの対象かどうかを判定し、それに応じてバリエーションを割り当てます。これは、アプリケーションがユーザーにどのエクスペリエンスを表示するかを決定するポイントです。
実験のアクティベーションロジックは、PageSense SDK を使用してサーバーサイドのみで実行されます。
実験をアクティブ化すると、次のことができます。
ユーザーが Full Stack 実験の対象かどうかを確認する
対象ユーザーに一貫したバリエーションを割り当てる
割り当てられたバリエーションに基づいてアプリケーションの動作を制御する
同じユーザーがセッションをまたいでも同じバリエーションを見続けられるようにする
次のタイミングで実験をアクティブ化してください。
SDK の初期化が正常に完了した後
ユーザーセッションの開始時、またはユーザー ID が利用可能になったタイミング
バリエーションごとのレンダリングやロジックを実行する前
メモ: アクティベーションは、SDK の初期化コールバックが完了する前に呼び出さないでください。
ユーザー属性は、PageSense で定義されたオーディエンスターゲティングルールに基づき、ユーザーが実験の対象かどうかを判定するのに役立ちます。
KOTLIN
JAVA
パラメーター
|
パラメーター |
種類 |
必須 |
説明 |
|
experimentName |
String |
はい |
PageSense で設定したフルスタック実験の名前。 |
|
userId |
String |
はい |
ユーザーを一意かつ安定して識別する ID。セッションをまたいで一貫している必要があります。 |
|
userAttributes |
Map<String, String> |
いいえ |
オーディエンスターゲティングやセグメンテーションに使用する任意のユーザー属性。 |
レスポンスの理解
ユーザーが実験の条件を満たしている場合、API はユーザーに割り当てられたバリエーション名をString 形式で返します。
ユーザーがオーディエンスターゲティングやトラフィック配分の条件を満たさない場合、API はnullを返します。
安全なフォールバック動作を確保するため、常にnullが返されるケースをハンドリングしてください。
|
シナリオ |
結果 |
|
実験が見つからない |
null を返す |
|
ユーザーがトラフィック配分の対象外 |
null を返す |
|
オーディエンスターゲティングに失敗 |
null を返す |
|
SDK が初期化されていない |
動作は未定義(初期化が完了する前に呼び出さないでください) |
1. オーディエンスターゲティング
API はまず、ユーザーが PageSense で定義された実験のオーディエンスターゲティングルールを満たしているかどうかを確認します。これらのルールには、ブラウザー、デバイスの種類、OS、ユーザー属性で渡される任意のカスタムプロパティなどのユーザー属性を含めることができます。
ユーザーの属性がオーディエンスターゲティング条件と一致する場合、評価が続行されます。
一致しない場合、API は直ちに null を返し、そのユーザーが実験の対象外であることを示します。
2. ユーザーストレージサービス
ユーザーストレージサービスは、データベース、Redis キャッシュ、ファイルシステムなど、ユーザーが用意したストレージレイヤーに、特定の実験でユーザーに割り当てられたバリエーションを保存します。これにより、異なるセッションやブラウザー間でも、同じ A/B テストに対して常に同じバリエーションがユーザーに割り当てられるようになります。
対象のユーザー ID と実験に対して、すでに保存済みのバリエーションが存在する場合は、ストレージから取得され、そのまま返されます。
存在しない場合、SDK はハッシュアルゴリズムを使用して新しいバリエーションの割り当てを行います。
3. MurmurHash によるハッシュ化
ユーザー ID と実験キーを結合して一意のキーを作成し、この一意のキーに MurmurHash アルゴリズムを適用して、0 ~ 9999 の範囲の決定論的な数値を生成します。
このハッシュ値によって、実験のトラフィック配分範囲内でのユーザーの位置が決まり、割り当てるバリエーションが決定されます。
MurmurHash は、同じユーザー ID と実験キーの組み合わせに対して、常に同じハッシュ値を生成します。
これにより、異なるセッションやブラウザー間でも、ユーザーは常に一貫したバリエーションが割り当てられます。
4. バリエーションのマッピング
実験内の各バリエーションには、割り当てられたトラフィック割合(%)に基づいて値の範囲が割り当てられます。例えば、トラフィック配分 80% の A/B テスト実験で、4 つのバリエーションにそれぞれ 25% ずつトラフィックを割り当てる場合、4 つのバリエーションの値の範囲は次のように割り当てられます。
|
バリエーション |
値の範囲 |
|
元の内容 |
0 – 2000 |
|
Variation 1 |
2001 – 4000 |
|
Variation 2 |
4001 – 6000 |
|
Variation 3 |
6001 – 8000 |
これらの範囲は重複せず、実験に割り当てられたトラフィックの合計を網羅します。
ユーザーのハッシュ値が特定のバリエーションの範囲内に入る場合、そのバリエーションがユーザーに割り当てられます。
ユーザーのハッシュ値が、バリエーションに割り当てられたすべての範囲外である場合、ユーザーにはいずれのバリエーションも割り当てられず、そのユーザーは実験の対象外となり、バリエーションには NULL が返されます。
5. トラッキングと分析
API は PageSense へのユーザー訪問のトラッキング処理を開始し、実験名、ユーザー ID、バリエーション名、および(渡された場合は)ユーザー属性の詳細を記録します。
6. 返される値
|
結果 |
返される値 |
|
ユーザーが対象となり、バリエーションが割り当てられた場合 |
バリエーション名を返す |
|
ユーザーがオーディエンスターゲティングルールに一致しない場合 |
NULL を返す |
|
ユーザーがトラフィック配分の範囲外である場合 |
NULL を返す |
場合によっては、ユーザー属性を渡さずにフルスタック実験をアクティブ化したいことがあります。これは次のような場合に便利です。
ユーザー属性がまだ利用できない場合
実験のターゲットがすべての訪問者
バリエーションの割り当てに、ユーザー識別子だけを利用したい場合
ユーザー属性が指定されていない場合、SDK は追加のオーディエンス条件を必要としない実験に対してのみ、そのユーザーを評価します。
KOTLIN & JAVA
重要なメモ
ユーザー属性が指定されていない場合に対象となるのは、すべての訪問者をターゲットにした実験のみです。
同じユーザー ID に対するバリエーションの割り当ては決定的(再現性あり)なままです。
安全なフォールバック動作を確保するため、常にnullの場合をハンドリングしてください。
ベストプラクティス
(ユーザー ID やアカウント ID などの)安定したユーザー識別子を使用します。
ユーザー属性は、利用可能な場合にのみ渡してください。
同じユーザーセッションに対して、activateExperimentを複数回呼び出すことは避けてください。
実験の対象外となるユーザーも必ず考慮して処理してください。
「導入したばかりで基本操作や設定に不安がある」、「短期間で集中的に運用開始できる状態にしたい」、「運用を開始しているが再度学び直したい」 といった課題を抱えられているユーザーさまに向けた少人数制のオンライントレーニングです。
日々の営業活動を効率的に管理し、導入効果を高めるための方法を学びましょう。