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

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

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

実験の有効化
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

辞書

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


戻り値  
  • パターン名—ユーザーが条件を満たし、実験の対象に割り当てられた場合。
  • 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
ユーザーの一意の識別子です。
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

文字列

この目標が属する実験。

userId

文字列

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

goalName

文字列

追跡する目標の名前。

userAttributes

辞書

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


コンバージョンデータが実際に記録されるタイミング  
次の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 - までお気軽にお問い合わせください。いつでもサポートいたします。