メインコンテンツへスキップ
このチュートリアルでは、Automation API を使用して実験結果をリクエストし、勝者のバリエーションを判断する方法を説明します。これは、実験の作成バリエーションの変更ゴールとセグメントの関連付け、および 実験の開始 に関する以前のチュートリアルに続くものです。

要件

  • access_token
Automation API には アクセストークン が必要です。アクセストークン取得セクション の手順に従って、プログラムでトークンを取得します。
  • experimentId
experimentId は、結果が必要な実験の数値識別子です。実験を表示している間に Kameleoon アプリの URL で見つけることができます(たとえば、https://app.kameleoon.com/.../experiments/188308/...)。フィーチャーフラグ実験の場合、ID は Rollout Planner に表示されます。

ゴール

このチュートリアルでは、以下の例の実験を使用します:
Experiment_188308
Product Page Redesign と呼ばれるこの実験には、オリジナルバージョンに加えて 2 つのバリエーション Redesign 1 (ID 828220)Redesign 2 (ID 828221) が含まれます。この実験にはいくつかの目的がありますが、本チュートリアルではメインゴール(クリックトラッキング を通じて 保険の登録 を追跡)のみに焦点を当てます。 このガイドでは、実験結果を取得して解釈し、フィルタを適用する方法を説明します。
このチュートリアルはフィーチャーフラグ実験にも適用されます。ただし、https://api.kameleoon.com/experiments/* の代わりに https://api.kameleoon.com/feature-flags/* エンドポイントを使用してください:experimentIdRollout Planner にあります:

1. データコードを取得する

ケース 1: 結果を直接取得する

エンドポイント: Request experiment’s result エンドポイント に POST リクエストを送信して、実験結果を取得します。
名前説明
experimentIdStringリクエストヘッダーの必須フィールド。
goalIdArrayメインゴール結果を特定するための特定のゴール ID を指定します。
referenceVariationIdObject比較対象の参照バリエーション ID。
sequentialTestingString信頼区間を決定するための逐次検定を使用する場合は true に設定。
visitorDataString訪問ベースのデータを取得する場合は false に設定。訪問者ベースのデータを取得する場合は true に設定。
例:
curl -L -X POST 'https://api.kameleoon.com/experiments/188308/results' \
-H 'Content-Type: application/json' \
-H 'Accept: */*' \
-H 'Authorization: Bearer <ACCESS_TOKEN>' \
--data-raw '{
  "visitorData": false,
  "sequentialTesting": true,
  "referenceVariationId": "0",   
  "goalsIds": [
 279599
  ]
}'

ケース 2: 認可なしで結果を共有する

1. SharedToken を取得する

エンドポイント: Share experiment results エンドポイント から SharedToken を取得することで、認可されていないユーザーと結果を共有します。
curl -L -X POST 'https://api.kameleoon.com/experiments/188308/results/share' \
-H 'Content-Type: application/json' \
-H 'Accept: */*' \
-H 'Authorization: Bearer <ACCESS_TOKEN>' \
--data-raw '{
  "visitorData": false,
  "sequentialTesting": true,
  "referenceVariationId": "0",   
  "goalsIds": [
 279599
  ]
}'
レスポンス:
{
    "method": "POST",
    "url": "https://api.kameleoon.com/experiments/188308/results",
    "path": "/experiments/188308/results",
    "headers": {
        "SharedToken": "eyJhbGciOiJIUzUxMiJ9.eyJleHAiOjE4NDQ5NDI5MTMsInNoYXJlZENvZGUiOiJhZmM1NzRjN2I4MjY4NTY3NzI2YjZhMDRhMTUxMjgyNjA3Zjk1ZGI4YjA1Y2RkZGY1ZDEwM2ExZDg5ZWM0MmZmIn0.oCECNm5mEhgIthc6eejo9BrfB7p8kEIrpoqtNb4JUiHK6nsxWHMvLc4hHYXCg3DgaBlVoKv6eEZHGty9c-VAoA",
        "Content-Type": "application/json"
    },
    "payload": {
        "visitorData": false,
        "sequentialTesting": true,
        "referenceVariationId": "0",
        "goalsIds": [
            279599
        ]
    }
}

1. SharedToken を使って dataCode を取得する

アクセストークンの代わりに SharedToken を使用して、Request experiment’s result エンドポイント に POST リクエストを送信し、実験結果を取得します。
名前説明
experimentIdStringリクエストヘッダーの必須フィールド。
goalIdArrayメインゴール結果を特定するための特定のゴール ID を指定します。
referenceVariationIdObject比較対象の参照バリエーション ID。
sequentialTestingString信頼区間を決定するための逐次検定を使用する場合は true に設定。
visitorDataString訪問ベースのデータを取得する場合は false に設定。訪問者ベースのデータを取得する場合は true に設定。
例:
curl -L -X POST 'https://api.kameleoon.com/experiments/188308/results' \
-H 'Content-Type: application/json' \
-H 'Accept: */*' \
-H 'SharedToken: <ACCESS_TOKEN>' \
--data-raw '{
  "visitorData": false,
  "sequentialTesting": true,
  "referenceVariationId": "0",   
  "goalsIds": [
 279599
  ]
}'

レスポンス:
{"dataCode":"14443931880924098266207585267983330260134079899081739889989435434342588016765"}

2. 実験結果を取得する

エンドポイント: dataCode を受け取った後、result エンドポイント を使用します。 例:
curl -L -X GET 'https://api.kameleoon.com/results?dataCode=14443931880924098266207585267983330260134079899081739889989435434342588016765'

レスポンス:

{
 "status": "READY",
 "data": {
  "dataCode": "14443931880924098266207585267983330260134079899081739889989435434342588016765",
  "variationData": {
   "_reference": {
    "breakdownData": {
     "_reference": {
      "intervalData": {},
      "generalData": {
       "visitCount": 126862,
       "visitorCount": 0,
       "goalsData": {
        "279599": {
         "conversionCount": 1898,
         "convertedVisitCount": 1898,
         "revenueCount": 235352.0,
         "convertedVisitorCount": 0,
         "revenuePerVisit": 1.86,
         "revenuePerVisitor": 0.0,
         "conversionRate": 0.014961138875313333,
         "averageCart": 124.0,
         "ratioValue": 0.0,
         "outlierBounds": {
          "lower": 0.1,
          "upper": 99.0
         }
        }
       }
      }
     }
    }
   },
   "828220": {
    "breakdownData": {
     "_reference": {
      "intervalData": {},
      "generalData": {
       "visitCount": 167938,
       "visitorCount": 0,
       "goalsData": {
        "279599": {
         "conversionCount": 7826,
         "convertedVisitCount": 7826,
         "revenueCount": 986076.0,
         "convertedVisitorCount": 0,
         "revenuePerVisit": 5.87,
         "revenuePerVisitor": 0.0,
         "reliability": 100.0,
         "improvementRange": {
          "min": 193.92,
          "max": 229.03,
          "half": 17.56
         },
         "improvementRate": 211.48,
         "conversionRate": 0.04660053114840001,
         "averageCart": 126.0,
         "ratioValue": 0.0,
         "continuousMetrics": {
          "conversions": {
           "reliability": 1.0,
           "improvementRate": 2.114771645178252,
           "halfInterval": 0.10445147824911348,
           "lowerBound": 2.0103201669291386,
           "upperBound": 2.219223123427365
          },
          "revenuePerVisit": {
           "reliability": 1.0,
           "improvementRate": 2.1650098975198366,
           "halfInterval": 0.10613617951119597,
           "lowerBound": 2.0588737180086407,
           "upperBound": 2.2711460770310326
          },
          "averageCart": null
         },
         "outlierBounds": {
          "lower": 0.1,
          "upper": 99.0
         }
        }
       }
      }
     }
    }
   },
   "828221": {
    "breakdownData": {
     "_reference": {
      "intervalData": {},
      "generalData": {
       "visitCount": 174194,
       "visitorCount": 0,
       "goalsData": {
        "279599": {
         "conversionCount": 1477,
         "convertedVisitCount": 1477,
         "revenueCount": 189056.0,
         "convertedVisitorCount": 0,
         "revenuePerVisit": 1.09,
         "revenuePerVisitor": 0.0,
         "reliability": 100.0,
         "improvementRange": {
          "min": -47.93,
          "max": -38.72,
          "half": 4.6
         },
         "improvementRate": -43.33,
         "conversionRate": 0.00847905209134643,
         "averageCart": 128.0,
         "ratioValue": 0.0,
         "continuousMetrics": {
          "conversions": {
           "reliability": 1.0,
           "improvementRate": -0.4332615877700786,
           "halfInterval": 0.027369693136479373,
           "lowerBound": -0.46063128090655797,
           "upperBound": -0.40589189463359926
          },
          "revenuePerVisit": {
           "reliability": 1.0,
           "improvementRate": -0.41497970350459723,
           "halfInterval": 0.028252586463462577,
           "lowerBound": -0.4432322899680598,
           "upperBound": -0.38672711704113466
          },
          "averageCart": null
         },
         "outlierBounds": {
          "lower": 0.1,
          "upper": 99.0
         }
        }
       }
      }
     }
    }
   }
  },
  "ventilationNames": null,
  "cupedDataByGoalId": {}
 }
}

3. 結果を解釈して勝者バリエーションを判断する

勝者バリエーションは、高い信頼性(95% を超える)と参照バリエーションと比較した正の改善率を示す必要があります。 JSON レスポンスは、Redesign 1 と Redesign 2 の両方が 100% の信頼度を持つことを示しています。ただし、Redesign 1 は +211.48% の改善率を示すのに対し、Redesign 2 は -43.33% の率を示します。したがって、Redesign 1 が勝者です。 Redesign 1
"828220": {
    "breakdownData": {
     "_reference": {
      "intervalData": {},
      "generalData": {
       "visitCount": 167938,
       "visitorCount": 0,
       "goalsData": {
        "279599": {
         "conversionCount": 7826,
         "convertedVisitCount": 7826,
         "revenueCount": 986076.0,
         "convertedVisitorCount": 0,
         "revenuePerVisit": 5.87,
         "revenuePerVisitor": 0.0,
         "reliability": 100.0,
         "improvementRange": {
          "min": 193.92,
          "max": 229.03,
          "half": 17.56
         },
         "improvementRate": 211.48,
Redesign 2

"828221": {
    "breakdownData": {
     "_reference": {
      "intervalData": {},
      "generalData": {
       "visitCount": 174194,
       "visitorCount": 0,
       "goalsData": {
        "279599": {
         "conversionCount": 1477,
         "convertedVisitCount": 1477,
         "revenueCount": 189056.0,
         "convertedVisitorCount": 0,
         "revenuePerVisit": 1.09,
         "revenuePerVisitor": 0.0,
         "reliability": 100.0,
         "improvementRange": {
          "min": -47.93,
          "max": -38.72,
          "half": 4.6
         },
         "improvementRate": -43.33,

4. 実験結果をフィルタする

breakdown パラメータと filter パラメータを使用して、特定の結果を取得します。breakdown パラメータは、新規訪問者、オペレーティングシステム、ブラウザ、曜日、SDK、タイムゾーンなどの要因でデータを整理します。
breakdown パラメータは、リクエストごとに 1 つのオブジェクト のみを受け付けます(配列ではありません)。複数のディメンションを比較するには、ブレークダウンごとに 1 つのリクエストを送信してください。

ブレークダウンの形式

ほとんどのブレークダウンタイプは type フィールドのみを受け取ります。例:
"breakdown": {
  "type": "BROWSER"
}
INTERVALCUSTOM_DATUMCROSS_CAMPAIGN タイプは追加のフィールドを取ります。 INTERVAL ブレークダウン — 時間間隔で結果を分割します。"type": "INTERVAL"interval フィールドと組み合わせます:
"breakdown": {
  "type": "INTERVAL",
  "interval": "DAY"
}
interval フィールドは HOURDAYWEEKMONTHYEAR を受け付けます。 たとえば、結果を直接取得する手順 に基づいて、breakdown パラメータを BROWSER に設定し、filters パラメータを NEW_VISITOR に設定して、新規訪問者のみのブラウザブレークダウンを返します。Export experiment results エンドポイント への cURL リクエストは以下のようになります:

curl -L -X POST 'https://api.kameleoon.com/experiments/188308/results' \
-H 'Content-Type: application/json' \
-H 'Accept: */*' \
-H 'Authorization: Bearer <ACCESS_TOKEN>
' \
--data-raw '{
  "visitorData": true,
  "sequentialTesting": true,
  "breakdown": {
    "type": "BROWSER"
  },
  "referenceVariationId": "0",
  "filters": [
    
    {
        "type":"NEW_VISITOR",
        "visitorsType":"NEW_VISITORS",
        "include":true
    }],
  "goalsIds": [
        279599
  ]
}'
dataCode を受け取った後、次の GET リクエストを送信します:
curl -L -X GET 'https://api.kameleoon.com/results?dataCode=14443931880924098266207585267983330260134079899081739889989435434342588016765'
リクエストが成功すると、Chrome ブラウザを使用する新規訪問者の実験結果が返されます。次のレスポンスはわかりやすさのために省略されています:
>....                                                                                                                                                              
                        }
                    },
                    "OTHERS": {
                        "intervalData": {},
                        "generalData": {
                            "visitCount": 0,
                            "visitorCount": 587206,
                            "goalsData": {
                                "279599": {
                                    "conversionCount": 5410,
                                    "convertedVisitCount": 0,
                                    "revenueCount": 692480.0,
                                    "convertedVisitorCount": 5359,
                                    "revenuePerVisit": 0.0,
                                    "revenuePerVisitor": 1.18,
                                    "reliability": 100.0,
                                    "improvementRange": {
                                        "min": -53.0,
                                        "max": -48.7,
                                        "half": 2.15
                                    },
                                    "improvementRate": -50.85,
                                    "conversionRate": 0.009126269145751235,
                                    "averageCart": 129.22,
                                    "ratioValue": 0.0
                                }
                            }
                        }
                    },
                    "CHROME": {
                        "intervalData": {},
                        "generalData": {
                            "visitCount": 0,
                            "visitorCount": 16,
                            "goalsData": {
                                "279599": {
                                    "conversionCount": 0,
                                    "convertedVisitCount": 0,
                                    "revenueCount": 0.0,
                                    "convertedVisitorCount": 0,
                                    "revenuePerVisit": 0.0,
                                    "revenuePerVisitor": 0.0,
                                    "reliability": 50.0,
                                    "improvementRange": {
                                        "min": null,
                                        "max": null,
                                        "half": null
                                    },
                                    "improvementRate": 0.0,
                                    "averageCart": 0.0,
                                    "ratioValue": 0.0
                                }
                            }
                        }
                    }
                }
            }
        },
        "ventilationNames": null,
        "cupedDataByGoalId": {}
    }
}