GetVariationName APIが呼び出されると、ユーザーにバリエーションを割り当てるかどうかを判断するための体系的なプロセスが実行されます。以下は、このプロセスの詳細な内訳です。
Audience Targeting
APIはまず、ユーザーが実験の構成時に定義されたAudience Targetingの条件を満たしているかどうかを評価します。これらの条件は通常、ブラウザ、デバイス種類、オペレーティングシステム、またはuserAttributesで渡されるカスタムユーザーデータなど、ユーザー属性に基づきます。
- ユーザーの属性がAudience Targetingの条件と一致する場合、APIは次の手順に進みます。
- ユーザーがこれらの条件を満たさない場合、APIは直ちにnullを返し、ユーザーが実験に含まれる適格性がないことを示します。
ユーザー Storage サービス
次に、API はユーザー Storage サービスが有効かどうかを確認します。このサービスは、複数のセッションにわたって同じユーザーに以前割り当てられたバリエーションを記憶することで、バリエーション割り当ての一貫性を保つのに役立ちます。
- すでにユーザーに対してバリエーションが割り当てられ、ユーザー Storage サービスに保存されている場合、API はその保存されたバリエーションを取得して返却します。
- 保存されたバリエーションが存在しない場合、API は以下で説明するバケッティングロジックを使用して新しいバリエーションの割り当てを進めます。
MurmurHash を用いたハッシュ化
次の手順として、ユーザーが実験のトラフィック割り当て設定に基づき、実験対象となるかどうかを判断します。
- API は、ユーザーの ID(userId)にMurmurHash アルゴリズムを適用します。このハッシュアルゴリズムは、各ユーザーIDごとに一貫して0 から 9999の間の一意な数値を生成し、これがユーザーのハッシュ値となります。
- MurmurHash アルゴリズムは、同じ実験内で異なるセッションでも、ユーザーIDに対して常に同じハッシュ値を生成します。これにより、特定の実験におけるユーザーへのバリエーション割り当てが決定的かつ安定的に行われます。
バリエーションのマッピング
実験内の各バリエーションには、割り当てられたトラフィック割合(%)に応じた特定のハッシュ値範囲が割り当てられます。
例:
- 「元の内容」バリエーションには、ハッシュ範囲 0~2000 が割り当てられます。
- 「Variation 1」には、ハッシュ範囲 2001~4000 が割り当てられます。
- 「Variation 2」には、ハッシュ範囲 4001~6000 が割り当てられる、というように続きます。
これらのハッシュ範囲は重複せず、ユーザーごとに1つのバリエーションのみが割り当てられることを保証します。また、全体として網羅的であり、実験の割り当てられたトラフィック範囲全体をカバーします。
API は、ユーザーのハッシュ値がこれらの定義された範囲内に収まっているかどうかを確認します。
- 範囲内であれば、該当するバリエーションがユーザーに割り当てられます。
- ハッシュ値がいずれの割り当て範囲にも該当しない場合、ユーザーは実験のトラフィック割り当て内に含まれず、null が返却されます。
返却値
- ユーザーが実験対象であり、バリエーションが正常に割り当てられた場合、API は割り当てたバリエーションの名前を返却します。
- ユーザーがいずれかの段階で実験対象外となった場合、API はnull を返却します。
ユーザー属性なしで GetVariationName を利用する
GetVariationName API は、ユーザー属性を指定せずに呼び出すことも可能です。以下のコードは、ユーザー属性パラメーターを渡さずに API を呼び出す方法を示しています。
方法
string variationName = pageSenseClient.GetVariationName(experimentName, userId);
パラメーター詳細:
|
パラメーター |
種類 |
説明 |
|
experimentName |
String |
有効化する実験の名前。 |
|
userId |
String |
ユーザーの一意な識別子。 |