バリエーション名の取得

バリエーション名の取得

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

Get Variation Name APIは、フルスタックA/Bテストのテスト名を返すために使用します。ユーザーがテストの対象となるかどうかを評価し、その結果に応じてバリエーションを割り当てます。

ユーザー属性を指定しないgetVariationNameの使用

メソッド

  1. string variationName = pageSenseClient.GetVariationName(experimentName, userId, userAttributes);

パラメーターの詳細

パラメーター

説明

experimentName

文字列

有効にするテスト名。

userId

文字列

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

userAttributes

HashMap<String, String>

オーディエンスのターゲティングとセグメント化に使用するユーザー属性のマップ。


戻り値

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

使用例

  1. // ユーザー属性オブジェクトを作成
  2. Dictionary<string, string> userAttributes = new Dictionary<string, string>();
  3.  
  4. // ユーザー属性の値を追加
  5. userAttributes['Browser'] = 'Chrome';
  6. userAttributes['Device'] = 'Desktop';
  7. userAttributes['OS'] = 'Windows 10';
  8.  
  9. // フルスタックA/Bテストでユーザーに割り当てられたバリエーションを取得
  10. string variationName = pageSenseClient.GetVariationName(experimentName, userId, userAttributes);
  11.  
  12. // フルスタックA/Bテストの各バリエーションに対するコード変更を設定
  13.  
  14. if (variationName.Equals('Original')){
  15. // コード:「Original」を処理するコードを記述
  16. } else if (variationName.Equals('Variation 1')){
  17. // コード:「バリエーション1」を処理するコードを記述
  18. } else if (variationName.Equals('Variation 2')){
  19. // コード:「バリエーション2」を処理するコードを記述
  20. } else if (variationName.Equals('Variation 3')){
  21. // コード:「バリエーション3」を処理するコードを記述
  22. } else{
  23. // コード:ユーザーがフルスタックA/Bテストの対象ではない場合。
  24. } 


API機能の概要

GetVariationName APIが呼び出されると、構造化されたプロセスに従って、ユーザーにバリエーションを割り当てるかどうかが判定されます。このプロセスの詳細は次のとおりです。

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

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

ユーザーストレージサービス

次に、APIはユーザーストレージサービスが有効になっているかどうかを確認します。このサービスは、ユーザーに以前割り当てられたバリエーションを複数のセッションにわたって記憶し、バリエーションの割り当てに一貫性を持たせます。
  1. ユーザーに割り当てられたバリエーションがユーザーストレージサービスにすでに保存されている場合、APIはそのバリエーションを取得して返します。
  2. 保存済みのバリエーションがない場合、APIは以下のバケット分割ロジックを使用して新しいバリエーションを割り当てます。

MurmurHashによるハッシュ化

次の手順では、テストのトラフィックの割り当て設定に基づいて、ユーザーがテストの対象となるかどうかを判定します。

  1. APIは、ユーザーID(userId)にMurmurHashアルゴリズムを適用します。このハッシュアルゴリズムは、各ユーザーIDに対して一意の数値を常に0~9,999の範囲で生成します。この数値がユーザーのハッシュ値として使用されます。
  2. MurmurHashアルゴリズムは、特定のテストにおいて、セッションが異なっても同じユーザーIDに対して常に同じハッシュ値を生成します。これにより、そのテストでは、ユーザーに対して一貫性があり固定されたバリエーションが割り当てられます。

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

テスト内の各バリエーションには、割り当てられたトラフィックの割合(%)に対応する特定のハッシュ値の範囲が設定されます。
例:
  1. 「オリジナル」バリエーションには、0~2,000のハッシュ範囲が割り当てられます。
  2. 「バリエーション1」には、2,001~4,000のハッシュ範囲が割り当てられます。
  3. 「バリエーション2」には、~6,000のハッシュ範囲が割り当てられ、以降も同様に続きます。
これらのハッシュ範囲は互いに重複しないため、各ユーザーには1つのバリエーションのみが割り当てられます。また、全範囲を網羅しており、テストに割り当てられたトラフィック範囲全体をカバーします。

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

戻り値

  1. ユーザーがテストの対象となり、バリエーションが正常に割り当てられた場合、APIは割り当てられたバリエーション名を返します
  2. いずれかの段階でユーザーがテストの対象外と判定された場合、APIはnullを返します

ユーザー属性を指定せずにGetVariationNameを使用する方法

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

メソッド

string variationName = pageSenseClient.GetVariationName(experimentName, userId);

パラメーターの詳細

パラメーター

種類

説明

experimentName

文字列

有効にするテスト名。

userId

文字列

ユーザーを識別するための一意のID。

 

API機能の概要

  1. このバージョンのAPIでは、テスト名とユーザーIDのみが必要です。
  2. オーディエンスのターゲティング処理は引き続き実行されます。ただし、ユーザー属性が指定されていないため、オーディエンスのターゲティング条件が[すべての訪問者]に設定されているテストのみが対象となります。
  3. テストにデバイスの種類、場所、カスタム属性など、追加のオーディエンスのターゲティング条件が含まれている場合、評価に使用するユーザー属性データがないため、そのユーザーは自動的に対象外と判定されます。
  4. [すべての訪問者]を許可するテストでは、MurmurHashに基づくスタンダードなバリエーション割り当てロジックが適用されます。ユーザーのハッシュ値がいずれかのバリエーションに定義された範囲内にある場合、そのバリエーションが割り当てられ、APIは割り当てられたバリエーション名を返します。
  5. テストのトラフィックの割り当て設定により、ユーザーのハッシュ値が定義済みのすべてのバリエーション範囲外にある場合、バリエーションは割り当てられず、APIはnullを返します。
このドキュメントが、処理の理解に役立てば幸いです。さらに詳しい説明が必要な場合や質問がある場合は、support@zohopagesense.comまでいつでもメールでお問い合わせください。