GetVariationName APIが呼び出されると、構造化されたプロセスに従って、ユーザーにバリエーションを割り当てるかどうかが判定されます。このプロセスの詳細は次のとおりです。
オーディエンスのターゲティング
APIはまず、テストの設定時に定義されたオーディエンスのターゲティング条件に基づいて、ユーザーがテストの対象となるかどうかを評価します。通常、これらの条件は、ブラウザー、デバイスの種類、OS、またはuserAttributesで渡されたカスタムユーザーデータなどのユーザー属性に基づきます。
- ユーザーの属性がオーディエンスのターゲティング条件に一致する場合、APIは次の手順に進みます。
- ユーザーがこれらの条件を満たさない場合、APIは直ちにnullを返します。これは、そのユーザーがテストの対象外であることを示します。
ユーザーストレージサービス
次に、APIはユーザーストレージサービスが有効になっているかどうかを確認します。このサービスは、ユーザーに以前割り当てられたバリエーションを複数のセッションにわたって記憶し、バリエーションの割り当てに一貫性を持たせます。
- ユーザーに割り当てられたバリエーションがユーザーストレージサービスにすでに保存されている場合、APIはそのバリエーションを取得して返します。
- 保存済みのバリエーションがない場合、APIは以下のバケット分割ロジックを使用して新しいバリエーションを割り当てます。
MurmurHashによるハッシュ化
次の手順では、テストのトラフィックの割り当て設定に基づいて、ユーザーがテストの対象となるかどうかを判定します。
- APIは、ユーザーID(userId)にMurmurHashアルゴリズムを適用します。このハッシュアルゴリズムは、各ユーザーIDに対して一意の数値を常に0~9,999の範囲で生成します。この数値がユーザーのハッシュ値として使用されます。
- MurmurHashアルゴリズムは、特定のテストにおいて、セッションが異なっても同じユーザーIDに対して常に同じハッシュ値を生成します。これにより、そのテストでは、ユーザーに対して一貫性があり固定されたバリエーションが割り当てられます。
バリエーションのマッピング
テスト内の各バリエーションには、割り当てられたトラフィックの割合(%)に対応する特定のハッシュ値の範囲が設定されます。
例:
- 「オリジナル」バリエーションには、0~2,000のハッシュ範囲が割り当てられます。
- 「バリエーション1」には、2,001~4,000のハッシュ範囲が割り当てられます。
- 「バリエーション2」には、~6,000のハッシュ範囲が割り当てられ、以降も同様に続きます。
これらのハッシュ範囲は互いに重複しないため、各ユーザーには1つのバリエーションのみが割り当てられます。また、全範囲を網羅しており、テストに割り当てられたトラフィック範囲全体をカバーします。
APIは、ユーザーのハッシュ値が定義済みのいずれかの範囲に含まれるかどうかを確認します。
- 含まれる場合、対応するバリエーションがユーザーに割り当てられます。
- ハッシュ値が割り当て済みのすべての範囲外にある場合、そのユーザーはテストのトラフィックの割り当て対象外となり、nullが返されます。
戻り値
- ユーザーがテストの対象となり、バリエーションが正常に割り当てられた場合、APIは割り当てられたバリエーション名を返します。
- いずれかの段階でユーザーがテストの対象外と判定された場合、APIはnullを返します。
ユーザー属性を指定せずにGetVariationNameを使用する方法
GetVariationName APIは、ユーザー属性を指定せずに呼び出すこともできます。次のコードは、ユーザー属性のパラメーターを渡さずにAPIを呼び出す方法を示しています。
メソッド
string variationName = pageSenseClient.GetVariationName(experimentName, userId);
パラメーターの詳細
|
パラメーター |
種類 |
説明 |
|
experimentName |
文字列 |
有効にするテスト名。 |
|
userId |
文字列 |
ユーザーを識別するための一意のID。 |