実験の実行 — 有効化、バリエーションの取得、目標の追跡

実験の実行 — 有効化、バリエーションの取得、目標の追跡

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

テストの有効化
activateExperimentを呼び出してユーザーをテストに割り当て、その割り当てを記録します。SDKはターゲティング条件を確認し、バケット振り分けロジックを実行して、完了ハンドラーを通じてバリエーション名を返します。
メソッド  
  1. swift
  2. import PageSenseFramework
  3. pageSenseClient.activateExperiment(
  4.     experimentName: String,
  5.     userId: String,
  6.     userAttributes:[String: String]
  7. ) {variationName in
  8.     ifvariationName != nil {
  9.         print('バリエーションが正常に割り当てられました')
  10.     } else {
  11.         print('ユーザーが条件を満たしていないか、テストが無効です')
  12.     }
  13. }
パラメーター  

パラメーター

種類

説明

experimentName

String

有効にするテストです。

userId

String

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

userAttributes

Dictionary

オーディエンスのターゲティングとセグメント化に使用するキーと値のペアです。


戻り値  
  • バリエーション名—ユーザーが条件を満たし、テストに割り振られた場合。
  • nil—ユーザーがターゲティング条件を満たしていないか、トラフィックの割り当て対象外である場合。
使用例  
  1. swift
  2. import PageSenseFramework
  3. varcurrentVariationName: String?
  4. varuserAttributes: [String: String]= [:]
  5. userAttributes['DeviceType']= 'Phone'
  6. userAttributes['OS']= 'iOS'
  7. userAttributes['OSVersion']= '17.0'
  8. userAttributes['DeviceModel']= 'iPhone 15 Pro'
  9. pageSenseClient.activateExperiment(
  10.     experimentName: 'experimentName',
  11.     userId:userId,
  12.     userAttributes:userAttributes
  13. ) {variationName in
  14.     guard let self= self else { return }
  15.     self.currentVariationName = variationName
  16. }
  17. func applyVariation() {
  18.     ifcurrentVariationName == 'original' {
  19.         // オリジナルを処理
  20.     } else ifcurrentVariationName == 'Variation 1' {
  21.         // バリエーション1を処理
  22.     } else ifcurrentVariationName == 'Variation 2' {
  23.         // バリエーション2を処理
  24.     } else {
  25.         // ユーザーが条件を満たしていないか、バリエーションがnil
  26.     }
  27. }
SDKによるユーザー評価の仕組み  

手順1 — オーディエンスのターゲティング
SDKは、userAttributesディクショナリーをテストのターゲティング条件と照合します。ユーザーが条件を満たしていない場合は、直ちにnilが返され、バケットへの振り分けは行われません。

手順2 — MurmurHashによるバケット分け
SDKは、ユーザーIDとテストキーの組み合わせをMurmurHashでハッシュ化します。これにより、0~9,999の範囲で一貫した数値が生成されます。
テストキーがハッシュの入力に含まれるため、同じユーザーでもテストごとに異なるハッシュ値が生成され、テスト間でバリエーションの割り当てが互いに独立した状態に保たれます。

手順3 — バリエーションの割り当て
各バリエーションには、0~9,999の範囲の一部が割り当てられます。SDKは、ユーザーのハッシュ値がどの範囲に該当するかを確認します。
バリエーション
ハッシュ範囲
オリジナル
0 – 2,000
バリエーション1
2,001 – 4,000
バリエーション2
4,001 – 6,000
ハッシュがいずれかの範囲に該当すると、そのバリエーションが割り当てられます。すべての範囲外の場合は、nilが返されます。

手順4 — トラッキング
バリエーションが割り当てられると、SDKはトラッキングデータをPageSenseに非同期で送信します。メインスレッドをブロックせず、UIのパフォーマンスにも影響しません。

バリエーション名の取得
getVariationNameはactivateExperimentとまったく同じように動作し、同じターゲティングチェックとMurmurHashによるバケット分けを行いますが、トラッキングデータはPageSenseに送信しません。インプレッションを記録せずにユーザーのバリエーションを確認する必要がある場合に使用します。

メソッド  
  1. swift
  2. import PageSenseFramework

  3. pageSenseClient.getVariationName(
  4.     experimentName: String,
  5.     userId: String,
  6.     userAttributes:[String: String]
  7. ) {variationName in
  8.     ifvariationName != nil {
  9.         print('バリエーションを正常に取得しました')
  10.     } else {
  11.         print('ユーザーが対象外か、テストが無効です')
  12.     }
  13. }
パラメーター  

パラメーター
種類
説明
experimentName
String
確認するテストです。
userId
String
ユーザーを識別する一意のIDです。
userAttributes
Dictionary
オーディエンスのターゲティングとセグメント化に使用するキーと値のペアです。

戻り値  
  • バリエーション名—ユーザーがテストの対象となる場合。
  • nil—ユーザーがターゲット条件を満たしていないか、トラフィックの割り当て対象外である場合。
使用例  

  1. swift
  2. import PageSenseFramework
  3. varcurrentVariationName: String?
  4. varuserAttributes: [String: String]= [:]
  5. userAttributes['DeviceType']= 'Phone'
  6. userAttributes['OS']= 'iOS'
  7. userAttributes['OSVersion']= '17.0'
  8. userAttributes['DeviceModel']= 'iPhone 15 Pro'
  9. pageSenseClient.getVariationName(
  10.     experimentName: 'experimentName',
  11.     userId:userId,
  12.     userAttributes:userAttributes
  13. ) {variationName in
  14.     guard let self= self else { return }
  15.     self.currentVariationName = variationName
  16. }
  17. func applyVariation() {
  18.     ifcurrentVariationName == 'original' {
  19.         // オリジナルを処理
  20.     } else ifcurrentVariationName == 'Variation 1' {
  21.         // バリエーション1を処理
  22.     } else ifcurrentVariationName == 'Variation 2' {
  23.         // バリエーション2を処理
  24.     } else {
  25.         // ユーザーが対象外、またはバリエーションがnil
  26.     }
  27. }
評価では、activateExperimentと同じ手順(オーディエンスのターゲティング → MurmurHashによるバケット分け → バリエーションの割り当て)が実行されます。唯一の違いは、PageSenseに追跡イベントが送信されないことです。

バリエーション
ハッシュ範囲
オリジナル
0 – 2,000
バリエーション1
2,001 – 4,000
バリエーション2
4,001 – 6,000

目標の追跡
ユーザーが、PageSenseで目標として設定したアクション(購入、フォームの送信、ボタンのタップなど)を完了したときに、trackGoalを呼び出します。SDKは、最初にユーザーがテストの対象かどうかを確認します。対象外の場合、呼び出しは通知なく破棄されます。エラーは発生せず、何も記録されません。

メソッド  
  1. swift
  2. pageSenseClient.trackGoal(
  3.     experimentName: String,
  4.     userId: String,
  5.     goalName: String,
  6.     userAttributes:[String: String]
  7. )
パラメーター

パラメーター

説明

experimentName

String

この目標が属するテスト。

userId

String

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

goalName

String

追跡する目標の名前。

userAttributes

Dictionary

オーディエンスのターゲティングとセグメント化に使用するキーと値のペア。


コンバージョンが記録される条件  
次の2つの条件を両方満たす必要があります。
  • ユーザーがテストの対象条件(ターゲティングルールとトラフィックの割り当て)を満たしている。
  • ユーザーが目標アクションを完了している。
このAPIでデータを記録するには、事前にPageSenseのテスト内で目標を設定する必要があります。ユーザーが対象条件を満たしていない場合、呼び出しは無視されます。

使用例  
  1. swift
  2. varuserAttributes: [String: String]= [:]
  3. userAttributes['DeviceType']= 'Phone'
  4. userAttributes['OS']= 'iOS'
  5. userAttributes['OSVersion']= '17.0'
  6. userAttributes['DeviceModel']= 'iPhone 15 Pro'
  7. pageSenseClient.trackGoal(
  8.     experimentName: 'experimentName',
  9.     userId:userId,
  10.     goalName: 'goalName',
  11.     userAttributes:userAttributes
  12. )
SDKによる処理の仕組み 
 
手順1 — オーディエンスのターゲティング
userAttributesがテストのターゲティングルールと照合されます。ユーザーが対象条件を満たしていない場合、呼び出しは通知なく破棄されます。

手順2 — バケット割り当てによるユーザー判定
SDKは、ユーザーIDとテストキーの組み合わせにMurmurHashを適用します。生成されたハッシュがバリエーションの範囲内にある場合、そのユーザーはテストの対象となります。

手順3 — コンバージョンの記録
ユーザーが対象条件を満たしている場合、SDKは目標のコンバージョンデータをPageSenseに非同期で送信します。メインスレッドはブロックされず、UIにも影響しません。このデータは、テストの分析、コンバージョンレポート、バリエーションのパフォーマンス評価に使用されます。
 



このドキュメントは、各手順をわかりやすく案内するために作成されています。さらにサポートが必要な場合や質問がある場合は、support@zohopagesense.com - までお気軽にお問い合わせください。いつでもサポートいたします。