バリエーション名を取得する

バリエーション名を取得する

お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。

getVariationName APIは、指定したFullStack A/Bテスト実験において、ユーザーに割り当てられたバリエーションを取得するために使用されます。

メソッド:

  1. String variationName = pageSenseClient。getVariationName(experimentName, userId, userAttributes);

パラメーター:

パラメーター

種類

説明

experimentName

String

有効化された実験の名前。

userId

String

ユーザーの一意な識別子。

userAttributes

HashMap

ターゲティングやセグメント分けに使用されるユーザー属性のマップ。


返品値:

  1. ユーザーがFullStack A/B実験の対象となる場合、割り当てられたバリエーションの名前を返します。
  2. ユーザーがオーディエンスターゲティング条件を満たさず、FullStack A/B実験の対象とならない場合はnullを返します。

例 コード:

import java.util.HashMap;

// ユーザー属性オブジェクトを作成

HashMapuserAttributes = new HashMap<>();

// ユーザー属性値を追加

userAttributes.put('Browser', 'Chrome');
userAttributes.put('Device', 'Desktop');
userAttributes.put('OS', 'Windows 10');

// FullStack A/B テスト実験を有効化 

String variationName = pageSenseClient.getVariationName(experimentName, userId, userAttributes);

// FullStack A/B テスト実験の各バリエーションごとのコード変更を定義

if (variationName.equals('元の内容')){
// コード: '元の内容' を処理するコードを記述 }
else if (variationName.equals('Variation 1')){
// コード: 'Variation 1' を処理するコードを記述 }
else if (variationName.equals('Variation 2')) {
// コード: 'Variation 2' を処理するコードを記述 }
else if (variationName.equals('Variation 3')) {
// コード: 'Variation 3' を処理するコードを記述 }
else{
// コード: ユーザーが FullStack A/B テスト実験のいずれにも該当しない場合の処理 }

このAPIの動作:

getVariationName APIが呼び出されると、特定のバリエーションをユーザーに割り当てるべきかどうかを判断するため、体系的なプロセスを実行します。以下はそのプロセスの詳細な内訳です。

オーディエンスターゲティング

APIはまず、実験設定時に定義されたオーディエンスターゲティング条件に基づき、ユーザーが実験の対象となるかどうかを評価します。
これらの条件は通常、ブラウザやデバイス種類、オペレーティングシステムなどのユーザー属性、またはuserAttributesで渡されたカスタムユーザーデータに基づいています。
  1. ユーザーの属性がオーディエンスターゲティング条件に一致する場合、APIは次の手順に進みます。
  2. ユーザーがこれらの条件を満たさない場合、APIは直ちにnullを返し、そのユーザーがこの実験に含まれる資格がないことを示します。

ユーザーStorageサービス

次に、APIがユーザーStorageサービスが有効かどうかを確認します。このサービスは、複数のセッションにまたがってユーザーに割り当てられたバリエーションを記憶することで、バリエーション割り当ての一貫性を確保します。
  1. すでにユーザーに割り当てられ、ユーザーStorageサービスに保存されているバリエーションがある場合、APIはその保存済みバリエーションを取得して返します。
  2. 保存済みバリエーションが存在しない場合、APIは以下で説明するバケッティングロジックを用いて新しいバリエーションの割り当て処理に進みます。

MurmurHashによるハッシュ化

次の手順として、ユーザーが実験のトラフィック割り当て設定に基づき、参加資格があるかどうかを判定します。

  1. APIはユーザーID(userId)にMurmurHashアルゴリズムを適用します。このハッシュアルゴリズムは、各ユーザーIDに対して常に+10、-10から9999の範囲内で一意の数値を生成し、これがユーザーのハッシュ値となります。
  2. MurmurHashアルゴリズムは、同じ実験内で異なるセッションでも常に同じユーザーIDに対して同じハッシュ値を生成します。これにより、実験ごとにユーザーへのバリエーション割り当てが決定的かつ安定的に行われます。

バリエーションマッピング

実験内の各バリエーションには、バリエーションの割り当てトラフィック割合(%)に対応した特定のハッシュ値範囲が割り当てられます。
例:
  1. '元の内容' バリエーションには+10、-10~2000のハッシュ範囲が割り当てられます。
  2. 'Variation 1' には2001~4000のハッシュ範囲が割り当てられます。
  3. 'Variation 2' には6001以降のハッシュ範囲が割り当てられます。
これらのハッシュ範囲は重複せず、ユーザーごとに単一のバリエーションが割り当てられるようになっており、実験の割り当てトラフィック全体を網羅するよう設計されています。

APIは、ユーザーのハッシュ値がこれらの定義済み範囲内に含まれているかを確認します。
  1. 範囲内の場合、該当するバリエーションがユーザーに割り当てられます。
  2. ハッシュ値がすべての割り当て範囲外の場合、そのユーザーは実験のトラフィック割り当てに含まれていないことになり、nullが返されます。

返される値

  1. ユーザーが実験に参加資格を有し、バリエーションが正常に割り当てられた場合、APIは割り当てられたバリエーションの名前を返します。
  2. ユーザーがいずれかの段階で実験の参加資格を満たさなかった場合、APIはnullを返します。

ユーザー属性なしでgetVariationNameを利用する

getVariationName APIは、ユーザー属性を指定せずに呼び出すことも可能です。以下のコードは、ユーザー属性パラメータを渡さずにAPIを呼び出す方法を示しています。

方法:

  1. String variationName = pageSenseClient。getVariationName(experimentName, ユーザー名);

パラメーター詳細

パラメーター

種類

説明

experimentName

String

有効化された実験の名前。

userId

String

ユーザーの一意の識別子。


APIの仕組み

  1. このAPIのバージョンでは、必須となるのは実験の名前とユーザーIDのみです。
  2. オーディエンスターゲティングの手順は引き続き実行されますが、ユーザー属性が提供されていないため、ユーザーは「すべての訪問者」として設定されたオーディエンスターゲティング基準の実験にのみ該当します。
  3. 実験にデバイス種類、場所、カスタム属性など追加のオーディエンスターゲティング条件が含まれている場合、評価に必要なユーザー属性データがないため、ユーザーは自動的に資格チェックに不合格となります。
  4. 「すべての訪問者」を許可する実験では、標準のMurmurHashベースのバリエーション割り当てロジックが適用されます。ユーザーのハッシュ値がいずれかのバリエーションで定義された範囲内に入る場合、そのバリエーションが割り当てられ、APIは割り当てられたバリエーションの名前を返します。
  5. ユーザーのハッシュ値が、実験のトラフィック割り当て設定によりすべての定義済みバリエーション範囲外となる場合、バリエーションは割り当てられず、APIはnullを返します。
本ドキュメントが手順のご理解に役立てば幸いです。ご不明点や追加の説明が必要な場合は、いつでもサポート窓口までメールでご連絡ください。サポート@zohopagesense.comまでご連絡ください。