「テストを有効にする」ステップでは、ユーザーがフルスタックA/Bテストの対象かどうかを評価し、該当するバリエーションを割り当てます。ここで、アプリケーションはユーザーに表示するエクスペリエンスを決定します。
テストの有効化ロジックは、PageSense SDKを使用してすべてサーバー側で実行されます。
テストを有効にすると、次のことができます。
ユーザーがフルスタックテストの対象かどうかを確認する
対象となるユーザーに一貫したバリエーションを割り当てる
割り当てられたバリエーションに基づいてアプリケーションの動作を制御する
同じユーザーに、セッションをまたいで同じバリエーションを継続して表示する
テストは、次のタイミングで有効にします。
SDKが正常に初期化された後
ユーザーセッションの開始時、またはユーザーの識別情報を取得できた時点
バリエーション固有の表示を行う、またはロジックを実行する前
メモ:SDKの初期化コールバックが完了する前に有効化を呼び出さないでください。
ユーザー属性は、PageSenseで設定したオーディエンスのターゲティングルールに基づいて、ユーザーがテストの対象となるかどうかを判定するために使用されます。
KOTLIN
JAVA
パラメーター
|
パラメーター |
データ型 |
必須 |
説明 |
|
experimentName |
文字列 |
はい |
PageSenseで設定したフルスタックテストの名前。 |
|
userId |
文字列 |
はい |
ユーザーを一意に識別する固定の識別子。セッションが変わっても同じ値を使用する必要があります。 |
|
userAttributes |
Map<String, String> |
いいえ |
オーディエンスのターゲティングやセグメント化に使用する、任意のユーザー属性。 |
レスポンスについて
ユーザーがテストの対象となる場合、APIは、そのユーザーに割り当てられたバリエーション名を文字列形式で返します。
オーディエンスのターゲティング条件やトラフィックの割り当てによりユーザーが対象外となる場合、APIはnullを返します。
安全に代替処理を行えるよう、nullの場合を必ず処理してください。
|
状況 |
結果 |
|
テストが見つからない |
nullを返す |
|
ユーザーがトラフィックの割り当て対象外 |
nullを返す |
|
オーディエンスのターゲティング条件を満たさない |
nullを返す |
|
SDKが初期化されていない |
動作は未定義(初期化前に呼び出さないでください) |
1. オーディエンスのターゲティング
APIはまず、ユーザーがPageSenseで定義されたテストのオーディエンスのターゲティングルールを満たしているかどうかを確認します。これらのルールには、ブラウザー、デバイスの種類、OSなどのユーザー属性や、ユーザー属性として渡されたカスタムプロパティを含めることができます。
ユーザーの属性がオーディエンスのターゲティング条件に一致する場合、評価を続行します。
一致しない場合、APIは直ちにnullを返し、ユーザーがテストの対象外であることを示します。
2. ユーザーストレージサービス
ユーザーストレージサービスは、特定のテストでユーザーに割り当てられたバリエーションを、データベース、Redisキャッシュ、ファイルシステムなど、ユーザーが指定したストレージ層に保存します。これにより、異なるセッションやブラウザーでも、特定のA/Bテストで同じユーザーには常に同じバリエーションが割り当てられます。
テストの対象となるユーザーIDについて、保存済みのバリエーションが存在する場合は、ストレージから取得して返します。
存在しない場合、SDKはハッシュアルゴリズムを使用して新規バリエーションを割り当てます。
3. MurmurHashによるハッシュ化
ユーザーIDとテストのキーを組み合わせて一意のキーを生成し、APIがこの一意のキーにMurmurHashアルゴリズムを適用して、0から9,999までの決定論的な数値を生成します。
このハッシュ値に基づいて、テストのトラフィックの割り当て範囲内でのユーザーの位置が決まり、バリエーションが割り当てられます。
MurmurHashでは、特定のユーザーIDとテストキーの組み合わせに対して、常に同じハッシュ値が生成されます。
これにより、異なるセッションやブラウザーでも、ユーザーには常に同じバリエーションが割り当てられます。
4. バリエーションのマッピング
テスト内の各バリエーションには、割り当てられたトラフィックの割合(%)に基づいて値の範囲が設定されます。たとえば、トラフィックの割り当てが80%で、4つのバリエーションにそれぞれ25%ずつトラフィックを配分するA/Bテストでは、各バリエーションの値の範囲は次のように設定されます。
|
バリエーション |
値の範囲 |
|
オリジナル |
0 – 2,000 |
|
バリエーション1 |
2,001 – 4,000 |
|
バリエーション2 |
4,001 – 6,000 |
|
バリエーション3 |
6,001 – 8,000 |
これらの範囲は互いに重複せず、全体としてテストのトラフィックの割り当て全域を網羅します。
ユーザーのハッシュ値が特定のバリエーションの範囲内にある場合、そのバリエーションがユーザーに割り当てられます。
ユーザーのハッシュ値が、バリエーションに割り当てられたすべての範囲外にある場合、ユーザーにはバリエーションが割り当てられず、テストの対象外となり、バリエーションとしてNULLが返されます。
5. 追跡と分析
APIはPageSenseへのユーザーの訪問を追跡するイベントを発生させ、テスト名、ユーザーID、バリエーション名、および渡された場合はユーザー属性の詳細を記録します。
6. 戻り値
|
結果 |
戻り値 |
|
ユーザーが対象条件を満たし、バリエーションが割り当てられた場合 |
バリエーション名を返します |
|
ユーザーがオーディエンスのターゲティングルールに一致しない場合 |
NULLを返します |
|
ユーザーがトラフィックの割り当て範囲外にある場合 |
NULLを返します |
場合によっては、ユーザー属性を渡さずにフルスタックテストを有効にすることがあります。これは次のような場合に役立ちます。
ユーザー属性をまだ利用できない場合
テストの対象がすべての訪問者の場合
バリエーションの割り当てにユーザー識別子のみを使用する場合
ユーザー属性を指定しない場合、SDKは追加のオーディエンス条件を必要としないテストのみを対象にユーザーを評価します。
KOTLIN と JAVA
重要な注意事項
ユーザー属性を指定しない場合、対象となるのはすべての訪問者を対象とするテストのみです
同じユーザーIDには常に同じバリエーションが割り当てられます
安全にフォールバックできるよう、nullの場合を必ず処理します
ベストプラクティス
安定したユーザー識別子(ユーザーIDやアカウントIDなど)を使用します。
ユーザー属性は、利用可能な場合にのみ渡します。
同じユーザーセッションでactivateExperimentを複数回呼び出さないようにします。
テストの対象外となるユーザーについても、必ず処理を行います。