API Functionality 概要
ActivateExperiment APIが呼び出されると、バリエーションをユーザーに割り当てるべきかどうかを判断するために、体系的なプロセスに従います。以下はそのプロセスの詳細な内訳です。
Audience Targeting
まずAPIは、実験設定時に定義されたAudience Targeting条件に基づき、ユーザーが実験対象かどうかを判定します。
これらの条件は通常、ブラウザやデバイス種類、オペレーティングシステム、またはuserAttributesで渡されたカスタムユーザーデータなど、ユーザー属性に基づいています。
- ユーザーの属性がAudience Targeting条件と一致する場合、APIは次の手順に進みます。
- 条件を満たさない場合、APIは直ちにnullを返し、そのユーザーが実験に適格でないことを示します。
ユーザー Storage サービス
次に、APIはユーザー Storage サービスが有効かどうかを確認します。このサービスは、複数のセッションを通じてユーザーに以前割り当てられたバリエーションを記憶し、一貫した割り当てを実現します。
- 既にユーザーに割り当てられ保存されているバリエーションがユーザー Storage サービスに存在する場合、APIはその保存済みバリエーションを取得し返します。
- 保存済みバリエーションが存在しない場合、APIは以下で説明するバケッティングロジックを使用して新しいバリエーションを割り当てます。
Hashing with MurmurHash
次の手順は、実験のトラフィック割り当て設定に基づき、ユーザーが実験対象かどうかを判断することです。
- APIはMurmurHashアルゴリズムをユーザーID(userId)に適用します。このハッシュアルゴリズムは、各ユーザーIDに対して常に0から9999の間の一意の数値を生成し、これがユーザーのハッシュ値となります。
- MurmurHashアルゴリズムは、同じ実験内で異なるセッションでも常に同じユーザーIDに対し同じハッシュ値を生成します。これにより、同じ実験内でユーザーへのバリエーション割り当てが決定的かつ一貫性のあるものとなります。
Variation Mapping
実験内の各バリエーションには、割り当てられたトラフィック割合(%)に対応する特定のハッシュ値範囲が割り当てられます。
例:
- '元の内容' バリエーションには0–2000のハッシュ範囲が割り当てられます
- 'Variation 1' には2001–4000のハッシュ範囲が割り当てられます
- 'Variation 2' には4001–6000のハッシュ範囲が割り当てられ、以降同様です。
これらのハッシュ範囲は重複せず、ユーザーごとに一つのバリエーションのみが割り当てられることを保証し、全体で網羅的に実験の割り当てられたトラフィック範囲をカバーします。
APIはユーザーのハッシュ値がこれらの範囲内にあるかどうかを確認します:
- 該当する場合は、対応するバリエーションがユーザーに割り当てられます。
- ハッシュ値がいずれの割り当て範囲にも該当しない場合、ユーザーは実験のトラフィック割り当て内に含まれず、nullが返されます。
Tracking and 分析
バリエーションが正常に割り当てられると、APIは該当するトラッキングデータをPageSenseサーバーへ送信します。このデータは分析、レポート、および実験パフォーマンスの評価に使用されます。
返品する 値
- ユーザーが実験に適格で、バリエーションが正常に割り当てられた場合、APIは割り当てられたバリエーション名を返します。
- いずれかの段階でユーザーが実験に適格でない場合、APIはnullを返します。