実験を有効化する

実験を有効化する

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

activateExperiment() メソッドは、指定したユーザーに対して Full Stack A/B テストの実験を有効化するために使用します。このメソッドは、オーディエンスターゲティングルールに基づいてユーザーが実験の対象かどうかを判定し、対象である場合は対応するバリエーションを割り当てます。

この API を使用すると、特定のユーザーまたはセッションに対して、どの実験バリエーションを配信すべきかを判定できます。

メソッドの呼び出し

  1. // Full Stack A/B テスト実験を有効化
  2. $variationName= $pageSenseClient->activateExperiment($experimentName, $userId, $userAttributes);

メソッドパラメーター

パラメーター

種類

説明

experimentName

string

有効化する実験の名前。

userId

string

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

userAttributes

array

(任意) オーディエンスターゲティングおよびセグメンテーションに使用する、ユーザー属性の連想配列。


返される値  

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

  • ユーザーが実験の対象とならない場合は null を返します。これは、ユーザーが実験のオーディエンスターゲティングルールに一致しないか、実験に割り当てられたトラフィックの範囲外である場合に発生します。

使用例

  1. use Zoho\PageSense\PageSenseClient;
  2. // ユーザー属性配列を作成
  3. $userAttributes = [
  4. 'Browser' => 'Chrome',
  5. 'Device' => 'Desktop',
  6. 'OS' => 'Windows 10'
  7. ];
  8. // Full Stack A/B テスト実験を有効化
  9. $variationName = $pageSenseClient->activateExperiment($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 の動作について  

activateExperiment() メソッドが呼び出されると、バリエーションをユーザーに割り当てるべきかどうかを判断するために、次の手順で処理が行われます。

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

まず API は、ユーザーが PageSense で定義された実験のオーディエンスターゲティングルールを満たしているかどうかを確認します。これらのルールには、ブラウザー、デバイスの種類、OS などのユーザー属性や、ユーザー属性で渡された任意のカスタムプロパティを含めることができます。

  • ユーザーの属性がオーディエンスターゲティング条件と一致する場合、評価は次のステップに進みます。

  • 一致しない場合、API はnullをすぐに返し、そのユーザーがこの実験の対象外であることを示します。

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

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

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

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

3. MurmurHash を使用したハッシュ化  

ユーザー ID と実験キーを結合して一意のキーを作成し、この一意のキーに対して MurmurHash アルゴリズムを適用して、0 ~ 9999 の範囲の決定論的な数値を生成します。

このハッシュ値により、実験のトラフィック配分範囲におけるユーザーの位置が決まり、その位置に応じてバリエーションが割り当てられます。

  • MurmurHash は、同じユーザー ID と実験キーの組み合わせに対して、常に同じハッシュ値を生成します。

  • これにより、異なるセッションやブラウザー間でも、ユーザーは常に一貫したバリエーションが割り当てられます。

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

実験内の各バリエーションには、割り当てられたトラフィック割合(%)に基づいて値の範囲が設定されます。例えば、トラフィック配分 80% の A/B テスト実験で、4 つのバリエーションにそれぞれ 25% ずつトラフィックを割り当てる場合、4 つのバリエーションの値の範囲は次のようになります。

バリエーション

値の範囲

元の内容

0 – 2000

Variation 1

2001 – 4000

Variation 2

4001 – 6000

Variation 3

6001 – 8000

 

これらの範囲は互いに重複せず、実験に割り当てられたトラフィック全体をカバーします。

  • ユーザーのハッシュ値が特定のバリエーションの範囲内に入る場合、そのバリエーションがユーザーに割り当てられます。

  • ユーザーのハッシュ値が、いずれのバリエーションにも割り当てられている範囲外の場合は、ユーザーにはバリエーションが割り当てられず、そのユーザーは実験の対象外となり、バリエーションとしては NULL が返されます。

5. トラッキングと分析  

バリエーションが割り当てられると、次の処理が行われます。

  • API は PageSense へのユーザー訪問のトラッキング処理を開始し、実験名、ユーザー ID、バリエーション名、および(渡された場合は)ユーザー属性の詳細を記録します。

6. 返される値

結果

返される値

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

バリエーション名を返します

ユーザーがオーディエンスターゲティングルールに一致しない場合

NULL を返します

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

NULL を返します


ユーザー属性なしで activateExperiment() を使用する  
以下のように、ユーザー属性パラメーターを指定せずに API を呼び出すこともできます。

メソッドの呼び出し

  1. //ユーザー属性なしで実験をアクティブ化する
  2. $variationName= $pageSenseClient->activateExperiment($experimentName, $userId);

動作方法  

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

  • オーディエンスターゲティングは引き続き評価されます。ただし、
    実験のターゲットが「すべての訪問者」の場合、そのユーザーは実験の対象になります。
    実験に特定のオーディエンスターゲティング条件が含まれている場合は、ユーザー属性が指定されていないため、そのユーザーは実験の対象外となります。

  • その後、API は MurmurHash アルゴリズムを適用して、割り当てるバリエーションを決定します。

  • ユーザーのハッシュ値がいずれかのバリエーションの定義済み範囲内に入る場合は、その一致したバリエーションが返されます。そうでない場合は、バリエーションとしてNULLが返されます。

ベストプラクティス  

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

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

  • 頻繁にアクセスするユーザーについては、ハッシュの再評価を避けるために、バリエーションの割り当て結果をキャッシュすることをおすすめします。

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

本ドキュメントが、お客様の作業の一助となれば幸いです。さらに説明が必要な場合やご不明な点がありましたら、いつでも support@zohopagesense.com までメールでお問い合わせください。