バリエーション名の取得

バリエーション名の取得

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

getVariationName()メソッドは、フルスタックA/Bテストで、指定したユーザーに割り当てられたバリエーション名を取得します。

このAPIはユーザーに割り当てられたバリエーションのみを返し、PageSenseで追跡イベントを発生させません。ユーザーに割り当てるバリエーションのみを確認し、有効化イベントを発生させたくない場合に、このAPIを使用できます。

メソッドの呼び出し

  1. // フルスタックA/Bテストでユーザーに割り当てられたバリエーションを取得
  2. $variationName= $pageSenseClient->getVariationName($experimentName, $userId, $userAttributes);
メソッドのパラメーター

パラメーター

種類

説明

experimentName

string

バリエーションを取得するテスト名。

userId

string

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

userAttributes

array

(任意)オーディエンスのターゲティングとセグメント化に使用するユーザー属性の連想配列。

 

戻り値  

  • ユーザーがフルスタックA/Bテストの対象となる場合、割り当てられたバリエーション名を返します。

  • ユーザーがオーディエンスのターゲティング条件を満たしていないか、テストのトラフィックの割り当て対象外である場合、NULLを返します。

サンプルコード

  1. use Zoho\PageSense\PageSenseClient;
  2. // ユーザー属性の配列を作成
  3. $userAttributes= [
  4. 'Browser' => 'Chrome',
  5. 'Device' =>'Desktop',
  6. 'OS' => 'Windows 10'
  7. ];
  8. // テストでユーザーに割り当てられたバリエーションを取得
  9. $variationName = $pageSenseClient->getVariationName($experimentName, $userId, $userAttributes);
  10. // バリエーション固有のロジックを処理
  11. if ($variationName === 'Original') {
  12. // コード:'Original'バリエーションのロジック
  13. } elseif ($variationName === 'Variation 1') {
  14. // コード:'Variation 1'バリエーションのロジック
  15. } elseif ($variationName === 'Variation 2') {
  16. // コード:'Variation 2'バリエーションのロジック
  17. } elseif ($variationName === 'Variation 3') {
  18. // コード:'Variation 3'バリエーションのロジック
  19. } else {
  20. // コード:ユーザーがどのバリエーションにも属していない場合}


APIの仕組み
  

getVariationName() メソッドが呼び出されると、一連の手順に従って、ユーザーに割り当てるバリエーションが決定されます。

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

APIはまず、PageSenseで定義されたオーディエンスのターゲティング条件に基づいて、ユーザーがテストの対象となるかどうかを評価します。

通常、ターゲティング条件には、ブラウザー、デバイスの種類、OS、またはユーザー属性で渡す個別指定のユーザーデータなどの属性が含まれます。

  • ユーザーがターゲティング条件に一致する場合 → 処理が続行されます。

  • ユーザーがターゲティング条件に一致しない場合 → バリエーションとしてNULLが返されます。

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

ユーザーストレージサービスは、特定のテストでユーザーに割り当てられたバリエーションを、データベース、Redisキャッシュ、ファイルシステムなど、ユーザーが用意したストレージ層に保存します。これにより、セッションやブラウザーが異なる場合でも、特定のA/Bテストでユーザーには常に同じバリエーションが割り当てられます。

  • 該当するテストのユーザーIDに対して保存済みのバリエーションが存在する場合は、ストレージから取得して返されます。

存在しない場合、SDKはハッシュアルゴリズムを使用して新規バリエーションを割り当てます。

3. MurmurHashによるハッシュ化  

ユーザーIDとテストキーを組み合わせて一意のキーを作成し、APIはこの一意のキーにMurmurHashアルゴリズムを適用して0から9,999までの数値を生成します。

MurmurHashアルゴリズムは、特定のユーザーIDとテストキーの組み合わせに対して同じハッシュ値を生成します。これにより、セッションやブラウザーが異なる場合でも、特定のテストでユーザーには常に同じバリエーションが割り当てられます。

生成されたハッシュ値を使用し、テスト全体のトラフィックの割り当てと各バリエーションへの個別のトラフィックの割り当てに基づいて、ユーザーが属するバリエーションが決定されます。

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

各バリエーションには、トラフィックの割り当てに比例した重複しないハッシュ範囲が割り当てられます。たとえば、特定のFull Stackテストで、トラフィックの割り当てが全体の80%、4つのバリエーションがマッピングされ、各バリエーションに25%ずつトラフィックが割り当てられているとします。この場合、各バリエーションのハッシュ値の範囲は次のようになります。

バリエーション

ハッシュ値の範囲

オリジナル

0 – 2,000

バリエーション1

2,001 – 4,000

バリエーション2

4,001 – 6,000

バリエーション3

6,001 – 8,000

  • ユーザーのハッシュ値がこれらの範囲のいずれかに含まれる場合、そのバリエーションが返されます。

  • ユーザーのハッシュ値が定義されたすべての範囲外にある場合、ユーザーはテストの対象外となり、NULLが返されます。

5. 戻り値のロジック  

条件

戻り値

ユーザーが条件を満たし、バリエーションが割り当てられた場合

バリエーション名

ユーザーがオーディエンスのターゲティング条件を満たさない場合

NULL

ユーザーがトラフィックの割り当て範囲外にある場合

NULL


ユーザー属性なしでgetVariationName()を使用するには  

getVariationName()APIは、ユーザー属性を指定せずに呼び出すこともできます。現在、この種類のAPI呼び出しは、「すべての訪問者」を対象とするテストでのみ使用できます。特定のオーディエンスのターゲティング条件が設定されたテストでは使用できません。このAPI呼び出しでユーザー属性を渡さない場合、ユーザーがオーディエンスのターゲティング条件を満たさないためです。

メソッドの呼び出し

  1. // ユーザーに割り当てられたバリエーションを取得
  2. $variationName= $pageSenseClient->getVariationName($experimentName, $userId);

動作の仕組み  

  • 必要なのは、ExperimentNameUser Idのみです。

  • オーディエンスのターゲティングは引き続き実行されますが、ユーザー属性が渡されないため、次のように処理されます。
          ユーザーが条件を満たすのは、「すべての訪問者」を対象とするテストのみです。
         ユーザーが対象外となるのは、特定のオーディエンスのターゲティング条件が設定されたテストです。ユーザー属性を利用できないためです。

  • 条件を満たすと、APIはMurmurHashベースのバケット分けを使用して、割り当てるバリエーションを決定します。

  • ユーザーのハッシュ値がテストのトラフィックの割り当て範囲外にある場合、NULLが返されます。

ベストプラクティス  

  • 常に一貫した一意のユーザーID(ログインID、メールアドレスなど)を使用してください。セッションIDは頻繁に変更され、セッションごとに異なるバリエーションがユーザーに表示される可能性があるため、ユーザーIDとして使用しないでください。

  • NULLが返された場合も、常に適切に処理してください。バリエーションとしてNULLが返された場合に備えて、フォールバック処理を追加してください。

  • 頻繁に利用するユーザーのバリエーション割り当てをキャッシュし、ハッシュ評価の繰り返しを避けてください。

  • オーディエンスのターゲティングとレポートのセグメント化で一貫性を保つため、アプリケーション全体でユーザー属性のキーに同じ名前を使用してください。

NotesWebページにバリエーションのみを表示する場合は、getVariationName()APIを使用します。アクティベーションイベントもactivateExperiment()APIで追跡する場合は、こちらを使用します。

このドキュメントが、操作を円滑に進めるためのお役に立てば幸いです。詳しい説明が必要な場合や質問がある場合は、いつでもsupport@zohopagesense.comまでメールでお問い合わせください。