ExperimentContext オブジェクトを experiment として ACUL コンポーネントに注入します。
注入が行われるのは、オプトインした画面だけです。オプトインは画面ごとに行い、その画面の context_configuration 配列に "experiment" を追加します。
画面が実験コンテキストを受け取るようにオプトインするには、/api/v2/prompts/{prompt}/screen/{screen}/rendering エンドポイントに PATCH リクエストを送信します。
Example
{prompt} は prompt 名 (例: login) に、{screen} は画面名 (例: login) に置き換えてください。
実験の判定とテナントログの拡充は、画面がオプトインしているかどうかにかかわらず、常に実行されます。オプトインで制御されるのは、
experiment プロパティが ACUL コンポーネントに渡されるかどうかだけです。これはデータ最小化のための措置です。実験コンテキストを必要としない画面はオプトインしないでください。実験コンテキストの構造
window.universal_login_context.experiment から実験コンテキストにアクセスできます。
Experiment Center (Beta) では、ACUL SDK は experiment プロパティを自動的には追加しないため、
window.universal_login_context.experiment で定義する必要があります。experiment は null です。
config パラメータには、割り当てられたバリエーションに対する完全にマージ済みの設定が含まれます。Experiment Center は、機能フラグのベースラインパラメータを取得し、その上に割り当てられたバリエーションのオーバーライドをマージします。機能フラグで定義されたすべてのパラメータは、常に config 内に値を持ちます。
たとえば、機能フラグにベースライン値が "Sign in" の button_label パラメータがあり、割り当てられたバリエーションでそれが "Continue" にオーバーライドされている場合、config.button_label.value は "Continue" になります。
コントロールバリエーションの場合 (オーバーライドなし) 、config.button_label.value は "Sign in" です。
パラメータの値を取得する
config[paramName].value を使ってパラメータの値にアクセスできます。
?.) を使用してください。有効な experiment がない場合、experiment prop は undefined になります。
is_control の使用
is_control は true になります (ベースラインが配信され、オーバーライドは適用されません) 。変更のない体験をどのユーザーが見たかを追跡したい場合や、コントロールユーザーに対する任意の処理をスキップしたい場合に使用します。
is_control ではなくパラメータ値 (config.my_param.value) を直接確認してください。
パラメータに基づくチェックのほうが読みやすく、将来の実験でどのバリエーションを統計上の対照群にするかを変更しても正しく機能します。
例:ボタン文言のバリエーション実験
button_label: "Sign in" を継承)
トリートメントバリエーション:
?? "Sign in" フォールバックは、有効な experiment がない場合 (このとき experiment は undefined となり、config?.button_label?.value も undefined と評価されます) に対応するためのものです。必要に応じて、別途 null チェックを使うこともできます:
例: ブール値による機能の段階的ロールアウト
=== true でチェックしているのは (truthy チェックではなく) 意図的です。これにより、experiment が undefined の場合や config が存在しない場合ではなく、パラメータが明示的に true のときにのみバナーが表示されます。
トラブルシュート
experiment プロパティが undefined になるのは、次の 3 つの状況です。
- テナントで現在有効な実験がない
- 画面が
context_configurationを通じてオプトインしていない - テナントで Experiment Center が有効になっていない
experiment は常に undefined になる可能性があるものとして扱ってください。最も安全なパターンは次のとおりです。
experiment プロパティが存在するとは決して想定しないでください。experiment が定義されていることを前提にしたコードは、実験が実行されていない場合にエラーを引き起こします。しかも、ほとんどの場合はその状態です。