実験の有効化

実験の有効化

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

activateExperiment()メソッドは、指定したユーザーに対してフルスタックA/Bテストを有効にするために使用します。オーディエンスのターゲティングルールに基づいて、そのユーザーがテストの対象となるかを評価し、対象となる場合は対応するバリエーションを割り当てます。

このAPIを使用すると、特定のユーザーまたはセッションに提供するテストのバリエーションを決定できます。

メソッドの呼び出し

  1. // フルスタックA/Bテストを有効にする
  2. $variationName= $pageSenseClient->activateExperiment($experimentName, $userId, $userAttributes);

メソッドのパラメーター

パラメーター

説明

experimentName

文字列

有効にするテスト名です。

userId

文字列

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

userAttributes

配列

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


戻り値  

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

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

使用例

  1. use Zoho\PageSense\PageSenseClient;
  2. // ユーザー属性の配列を作成する
  3. $userAttributes = [
  4. 'Browser' => 'Chrome',
  5. 'Device' => 'Desktop',
  6. 'OS' => 'Windows 10'
  7. ];
  8. // フルスタックA/Bテストを有効にする
  9. $variationName = $pageSenseClient->activateExperiment($experimentName, $userId, $userAttributes);
  10. // 各バリエーションのロジックを設定する
  11. if ($variationName=== 'Original') {
  12.     // コード:元のバリエーションを処理するロジック
  13. } elseif ($variationName=== 'Variation 1') {
  14.  // コード:バリエーション1のロジック
  15. } elseif ($variationName === 'Variation 2') {
  16. // コード:バリエーション2のロジック
  17. } elseif ($variationName === 'Variation 3') {
  18. // コード:バリエーション3のロジック
  19. } else {
  20. // コード:ユーザーがどのバリエーションにも属さない場合}


APIの仕組み  

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

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

APIはまず、ユーザーがPageSenseで定義されたテストのオーディエンスのターゲティングルールを満たしているか確認します。これらのルールでは、ブラウザー、デバイスの種類、OS、またはユーザー属性で渡された個別指定のプロパティなどを使用できます。

  • ユーザーの属性がオーディエンスのターゲティング条件に一致する場合、評価が続行されます。

  • ユーザーの属性が条件に一致しない場合、APIは直ちにnullを返し、ユーザーがテストの対象ではないことを示します。

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

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

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

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

3. MurmurHashによるハッシュ化  

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

このハッシュ値によって、テストのトラフィックの割り当て範囲内でのユーザーの位置が決まり、バリエーションが割り当てられます。

  • MurmurHashでは、特定のユーザーIDとテストキーの組み合わせに対して、常に同じハッシュ値が生成されます。

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

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

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

バリエーション

値の範囲

オリジナル

0 – 2,000

バリエーション1

2,001 – 4,000

バリエーション2

4,001 – 6,000

バリエーション3

6,001 – 8,000

 

これらの範囲は重複せず、全体としてテストのトラフィックの割り当てをすべて網羅します。

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

  • ユーザーのハッシュ値が、バリエーションに割り当てられたすべての範囲外にある場合、ユーザーにはバリエーションが割り当てられず、テストの対象にもなりません。また、バリエーションとして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までメールでお気軽にお問い合わせください。