バリエーション名の取得

バリエーション名の取得

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

バリエーション名取得APIを使用すると、特定のFull Stack A/Bテストでユーザーに割り当てられたバリエーションを、テストを再評価または再有効化せずに取得できます。

このAPIは、次のような場合に役立ちます。

  • 割り当て済みのバリエーションを取得する

  • ユーザーフローの後続段階で、バリエーション固有のロジックを適用する

  • 複数の画面や行動にわたって一貫性を確保する

このAPIでできること

このAPIでは、次の操作を実行できます。

  • ユーザーに割り当て済みのバリエーションを取得する

  • テスト有効化の呼び出しの重複を回避する

  • アプリ内の異なる箇所で一貫した動作を適用する

  • テストの対象外であるユーザーを安全に処理する

バリエーション名取得APIを使用するタイミング

次の場合に、このAPIを使用します。

  • ユーザーに対してテストがすでに有効化されている場合

  • 割り当てられたバリエーションを再確認する場合

  • 初回の有効化フロー以外でバリエーション情報が必要な場合

以前にテストが有効化されていない場合、このAPIはnullを返すことがあります。

ユーザー属性を使用したバリエーション名の取得

バリエーション名を取得する際にユーザー属性を渡すことで、オーディエンス条件を正しく評価できます。

KOTLIN

  1. // ユーザー属性を格納するマップを作成する
  2. val userAttributes = mutableMapOf(
  3. 'DeviceType'to'Phone',
  4. 'OS' to 'Android',
  5. 'OSVersion'to '14',
  6. 'DeviceModel'to'Pixel 8 Pro'
  7. )
  8. // ユーザーのバリエーション名を取得する
  9. val variationName = pageSenseClient.getVariationName(
  10. experimentName,
  11. userId,
  12. userAttributes
  13. )
  14. // バリエーション固有のロジックを処理する
  15. if (variationName == 'Original') {
  16. // オリジナルのバリエーションを処理する
  17. } else if (variationName == 'Variation 1') {
  18. // バリエーション1を処理する
  19. } else if (variationName == 'Variation 2') {
  20. // バリエーション2を処理する
  21. } else if (variationName == 'Variation 3') {
  22. // バリエーション3を処理する
  23. } else {
  24. // ユーザーはテストの対象外です
    }

JAVA

  1. import java.util.HashMap;
  2. // ユーザー属性を保持するマップを作成
  3. HashMap<String, String> userAttributes = new HashMap<>();
  4. userAttributes.put('DeviceType', 'Phone');
  5. userAttributes.put('OS', 'Android');
  6. userAttributes.put('OSVersion', '14');
  7. userAttributes.put('DeviceModel', 'Pixel 8 Pro');
  8. // ユーザーのバリエーション名を取得
  9. String variationName = pageSenseClient.getVariationName(
  10. experimentName,
  11. userId,
  12. userAttributes
  13. );
  14. // バリエーション固有のロジックを処理
  15. if ('Original'.equals(variationName)) {
  16. // オリジナルのバリエーションを処理
  17. } else if ('Variation 1'.equals(variationName)) {
  18. // バリエーション1を処理
  19. } else if ('Variation 2'.equals(variationName)) {
  20. // バリエーション2を処理
  21. } else if ('Variation 3'.equals(variationName)) {
  22. // バリエーション3を処理
  23. } else {
  24. // ユーザーはテストの対象外
  25. }
パラメーター

パラメーター

種類

必須

説明

experimentName

文字列

はい

PageSenseで設定したフルスタックテストの名前です。

userId

文字列

はい

ユーザーを識別するための一意かつ固定のIDです。セッションが異なる場合も同じ値を使用する必要があります。

userAttributes

Map<String, String>

いいえ

オーディエンスのターゲティングやセグメント化に使用する、任意のユーザー属性です。

  

activateExperiment()とgetVariationName()の使い分け

ユースケース

推奨メソッド

初回の評価

activateExperiment

割り当て済みのバリエーションの取得

getVariationName

 

ユーザー属性を使用しないバリエーション名の取得  

ユーザー属性がない場合は、テスト名とユーザーIDだけを使用してバリエーションを取得できます。
この場合、対象が[すべての訪問者]に設定されているテストのみが該当します。

  1. // ユーザー属性を使用せずにバリエーション名を取得
  2. val variationName = pageSenseClient.getVariationName(
  3. experimentName,
  4. userId
  5. )

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を返す

重要事項  

  • このAPIではテストを有効にしません

  • ユーザーにすでに割り当てられているバリエーションのみを返します

  • ユーザーが対象外の場合、またはテストが一度も有効にされていない場合は、nullが返されます

  • nullの場合も常に安全に処理してください

推奨事項  

  • ユーザーセッションごとにテストを一度有効にします

  • 以降の確認にはgetVariationNameを使用します

  • 一貫した結果を得るには、固定されたユーザー識別子を使用します

  • ユーザー属性は、利用できる場合にのみ渡します