ExperimentContext オブジェクトを experiment として挿入します。
挿入は、オプトインした画面でのみ行われます。オプトインは画面ごとに行い、その画面の context_configuration 配列に "experiment" を追加します。
画面で実験コンテキストを受け取るようにオプトインするには、/api/v2/prompts/{prompt}/screen/{screen}/rendering エンドポイントに対して PATCH リクエストを実行します。
Example
{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 prop は undefined になります。
is_control を使用する
is_control は、ユーザーがコントロールグループに属している場合に true になります (ベースラインが適用され、オーバーライドは適用されていません) 。変更のないエクスペリエンスをどのユーザーが見たかを追跡する必要がある場合や、コントロールグループのユーザーに対する任意の処理をスキップしたい場合に使用します。
is_control ではなく、パラメーターの値 (config.my_param.value) を直接確認してください。
パラメーターの値に基づく確認のほうが可読性が高く、将来の実験でどのバリエーションを統計上のコントロールにするかを変更しても、正しく機能します。
例: 文言バリエーションの実験
button_label: "Sign in" を継承)
トリートメントバリエーション:
?? "Sign in" フォールバックは、有効な実験がない場合 (この場合、experiment は undefined となり、config?.button_label?.value も undefined と評価されます) に対応します。必要に応じて、個別に null チェックを行うこともできます:
例: 真偽値を使った機能の段階的ロールアウト
=== true のチェック (truthy チェックではなく) を意図的に使用しているのは、パラメーターが明示的に true の場合にのみバナーが表示されるようにするためです。experiment が undefined の場合や config が存在しない場合には表示されません。
トラブルシューティング
experiment プロパティが undefined になるケースは 3 つあります。
- 現在、テナントで有効な実験がない
- 画面が
context_configurationでオプトインしていない - テナントで Experiment Center が有効になっていない
experiment は常に undefined になる可能性があるものとして扱ってください。最も安全なパターンは次のとおりです。
experiment プロパティが存在するものと決めつけないでください。experiment が定義されていることに依存したコードは、実行中の実験がない場合にエラーをスローします。実際には、ほとんどの時間で実験は実行されていません。