バリエーション名の取得方法

バリエーション名の取得方法

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

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

この API は、ユーザーに割り当てられたバリエーションのみを返し、PageSense へのトラッキング処理は行いません。単にユーザーがどのバリエーションに割り当てられるべきかを知りたいだけで、アクティベーションイベントを発火させたくない場合に使用します。

メソッドの呼び出し

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

Parameter

種類

説明

experimentName

string

バリエーションを取得する対象の実験名。

userId

string

ユーザーを一意に識別する ID。

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 === '元の内容') {
  12. // コード: '元の内容' バリエーション用のロジック
  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 で定義されたオーディエンスターゲティング条件を満たし、実験の対象となるかどうかを評価します。

ターゲティング条件には通常、ブラウザー、デバイス種別、オペレーティングシステム、または ユーザー属性 で渡す任意のカスタムユーザーデータなどの属性が含まれます。

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

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

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

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

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

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

3. MurmurHash によるハッシュ化  

ユーザー ID と実験キーを組み合わせて一意のキーを作成し、この一意のキーに対して API が MurmurHash アルゴリズム を適用して0 〜 9999 の数値を生成します。

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

生成されたハッシュ値は、その実験の合計トラフィック配分と、各バリエーションに割り当てられた個別トラフィックに基づいて、ユーザーがどのバリエーションに属するかを判定するために使用されます。

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

各バリエーションには、そのトラフィック配分に比例した 重複しないハッシュ範囲 が割り当てられます。ある Full Stack 実験で、合計トラフィック配分が 80% で、4 つのバリエーションがマッピングされており、それぞれのバリエーションに 25% のトラフィックが割り当てられているとします。この場合、各バリエーションのハッシュ値範囲は次のようになります。

バリエーション

ハッシュ値の範囲

元の内容

0 – 2000

バリエーション 1

2001 – 4000

バリエーション 2

4001 – 6000

バリエーション 3

6001 – 8000

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

  • ユーザーのハッシュ値が定義されたすべての範囲外にある場合 → ユーザーは実験のいずれのバリエーションにも属さず、NULLが返されます。

5. 返される値のロジック  

シナリオ

返される値

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

バリエーション名

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

NULL

ユーザーがトラフィック配分の範囲外にある

NULL


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

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

メソッドの呼び出し方法

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

動作方法  

  • 必須なのは、ExperimentName とユーザー ID のみです。

  • オーディエンスターゲティングは引き続き実行されますが、ユーザー属性が渡されないため:
          ユーザーが対象となるのは、「すべての訪問者をターゲットにした実験のみです。
         ユーザーは、対象になりません ユーザー属性が利用できないため、特定のオーディエンスターゲティング条件が設定されている実験には参加できません。

  • ユーザーが対象となった後、API は MurmurHash ベースのバケッティングを使用して、割り当てるバリエーションを決定します。

  • ユーザーのハッシュ値が実験のトラフィック配分の範囲外にある場合 → NULLを返します。

ベストプラクティス  

  • 常に一貫性があり一意なユーザー ID(例:ログイン ID、メールアドレスなど)を使用してください。ユーザー ID にセッション ID を使用することは避けてください。セッション ID は頻繁に変更されるため、セッションごとに異なるバリエーションがユーザーに配信されてしまいます。

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

  • 頻繁にアクセスするユーザーについては、ハッシュの評価を繰り返さないよう、バリエーション割り当てをキャッシュすることを検討してください。

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

NotesWeb ページ上でバリエーションのみをレンダリングしたい場合は getVariationName() API を使用し、アクティベーションイベントもトラッキングしたい場合は activateExperiment() API を使用してください。

このドキュメントが手順の理解に役立てば幸いです。さらに詳しい説明が必要な場合やご不明な点がある場合は、いつでも support@zohopagesense.com までメールでお問い合わせください。

    Zoho CRM 管理者向けトレーニング

    「導入したばかりで基本操作や設定に不安がある」、「短期間で集中的に運用開始できる状態にしたい」、「運用を開始しているが再度学び直したい」 といった課題を抱えられているユーザーさまに向けた少人数制のオンライントレーニングです。

    日々の営業活動を効率的に管理し、導入効果を高めるための方法を学びましょう。

    Zoho CRM Training



              Zoho Campaigns Resources

                Zoho WorkDrive Resources




                  • Desk Community Learning Series


                  • Digest


                  • Functions


                  • Meetups


                  • Kbase


                  • Resources


                  • Glossary


                  • Desk Marketplace


                  • MVP Corner


                  • Word of the Day


                  • Ask the Experts









                                  Resources

                                  Videos

                                  Watch comprehensive videos on features and other important topics that will help you master Zoho CRM.



                                  eBooks

                                  Download free eBooks and access a range of topics to get deeper insight on successfully using Zoho CRM.



                                  Webinars

                                  Sign up for our webinars and learn the Zoho CRM basics, from customization to sales force automation and more.



                                  CRM Tips

                                  Make the most of Zoho CRM with these useful tips.