はじめに
フィーチャーフラグを使用すると、アプリ内の機能をどのユーザーに表示するかを決定し、新しいアプリビルドをリリースすることなくその決定を変更できます。フラグはMoEngageダッシュボードから制御し、アプリは実行時にその値を読み取ります。 MoEngageは、独立したフィーチャーフラグ製品を提供していません。代わりに、セルフハンドルIn-Appキャンペーンを使用してフィーチャーフラグを構築します。キャンペーンがJSONペイロードをアプリに配信し、アプリはそのペイロード内の値を読み取って、どのエクスペリエンスをレンダリングするかを決定します。ペイロードはキャンペーンコンテンツであるため、セグメントによるターゲティング、コントロールグループによる一定割合のユーザーの除外、A/Bテストによるバリアントの比較が可能です。 この記事では、頻繁に購入するユーザーはカートに商品を追加した後に支払い画面に直接移動し、頻繁に購入しないユーザーには最初に商品のレコメンデーション画面が表示されるフィーチャーフラグを構築します。期待される結果
2つのユーザーセグメントが同じフラグに対して異なる値を受け取るため、同じアプリビルドで2つの異なるチェックアウトパスが生成されます。キャンペーンを編集または一時停止することで、どちらかのパスを変更したり、セグメントを完全にオフにしたりできます。- 頻繁に購入するユーザー
- 頻繁に購入しないユーザー

MoEngageにおけるフィーチャーフラグの仕組み
フィーチャーフラグは3つの要素で構成されます。- オーディエンス: フラグの特定の値を受け取るユーザーを定義するセグメントです。
- フラグの値: セルフハンドルIn-Appキャンペーンによって配信されるJSONペイロードです。
- アプリのロジック: ペイロードを読み取り、対応するエクスペリエンスをレンダリングするアプリ内のコードです。
フラグの値ごとに1つのセルフハンドルIn-Appキャンペーンを作成します。1つのキャンペーンは1つのオーディエンスを対象とし、1つのペイロードを保持するため、2つのセグメントに対して2つの値を持つフラグには2つのキャンペーンが必要です。どのキャンペーンにも一致しないユーザーはペイロードを受け取らず、アプリはデフォルトのエクスペリエンスにフォールバックします。
例: チェックアウトフローをパーソナライズする
次の例では、「Payment flow for frequent buyers」という名前のフラグを設定し、頻繁に購入するユーザー向けと頻繁に購入しないユーザー向けにそれぞれ1つの値を設定します。ステップ1: セグメントを作成する
キャンペーンを作成する前に、2つのオーディエンスを定義します。キャンペーン作成中の Target audience セクションで作成するか、事前に Segment > Create segment から作成できます。 Filter users by セクションで、Product Purchased イベントに対する User behavior フィルターを追加します。- 頻繁に購入するユーザー: 過去20日間に Product Purchased を at least(少なくとも)5回実行したユーザー。
- 頻繁に購入しないユーザー: 過去20日間に Product Purchased を at most(多くとも)5回実行したユーザー。
- 頻繁に購入するユーザー
- 頻繁に購入しないユーザー

ロールアウト対象のユーザーの固定リストがすでにある場合は、ルールを定義する代わりにファイルセグメントとしてアップロードしてください。詳細については、ファイルセグメントを参照してください。
ステップ2: フラグのペイロードを定義する
アプリが読み取るキーと、各セグメントが受け取る値を決定します。この例では2つのキーを使用します。buy_now_action はボタンが表すイベントを、buy_now_url はボタンの遷移先を記録します。
- 頻繁に購入するユーザー
- 頻繁に購入しないユーザー
ステップ3: セルフハンドルIn-Appキャンペーンを作成する
ステップ2で作成した各セグメントのペイロードを使用して、セグメントごとに次の手順を繰り返します。ステップ3.1: ターゲットユーザー
- 左側のサイドバーで Engage > Campaigns をクリックし、+ Create campaign をクリックします。
- Inbound で In-app をクリックします。
- 「Payment flow flag - frequent buyers」のように、フラグとセグメントを識別できる Campaign name を入力します。関連する Campaign tags を選択します。
- Target Platforms セクションで、アプリが動作するプラットフォームを選択します。
- Trigger Criteria セクションで、アプリがペイロードを受け取るタイミングを選択します。セッション中のどの時点でもユーザーがアクセスできる画面をフラグで制御する場合は、On app open を選択します。
- Target audience セクションで、ステップ1で作成したセグメントを選択します。
- Control Group セクションで、キャンペーンから除外するユーザーを指定します。詳細については、機能を段階的にロールアウトするを参照してください。
- Next をクリックします。
ステップ3.2: コンテンツ
- Custom template editor に移動し、Self-Handled をクリックします。
- ペイロードフィールドに、ステップ2で定義したこのセグメント用のJSONペイロードを入力します。
- Template Settings で、対象とする各デバイスタイプの設定を行います。
- キャンペーンをプレビューし、Next をクリックします。
ステップ3.3: スケジュールと目標
- Send campaign セクションで、キャンペーンの開始と終了のタイミングを、頻度と制限とともに定義します。フィーチャーフラグは通常、終了日なしで実行されるため、キャンペーンを一時停止するまでフラグは有効なままになります。
- Conversion Goals セクションで、フラグ付きのエクスペリエンスのパフォーマンスが向上したかどうかを判断するための目標を追加します。この例では、Product Purchased イベントをトラッキングします。
- Delivery Controls セクションで、ロールアウトに必要なコントロールを設定します。詳細については、In-Appキャンペーンの作成を参照してください。
- Publish をクリックします。
ステップ4: アプリでペイロードを利用する
ユーザーがいずれかのキャンペーンの対象になると、アプリはペイロードを受け取ります。buy_now_action を読み取り、対応する画面をレンダリングします。
- 値が
purchaseの場合、ユーザーを支払い画面に移動させます。 - 値が
add_to_cartの場合、ユーザーをレコメンデーション画面に移動させ、そこから支払い画面へのパスを提供します。 - ペイロードが届かない場合は、デフォルトのチェックアウトフローをレンダリングします。
機能を段階的にロールアウトする
コントロールグループを使用してターゲットオーディエンスの一部を除外することで、フラグ付きのエクスペリエンスを受け取ったユーザーと、受け取らなかった同等のユーザーを比較できます。- キャンペーンコントロールグループ: ステップ1の Control Group セクションで、キャンペーンのターゲットオーディエンスから除外する割合を設定します。この割合を徐々に下げることで、フラグの対象となるオーディエンスを拡大します。
- グローバルコントロールグループ: Settings > Control Groups で、ワークスペース全体のホールドアウトの割り当てを設定します。詳細については、グローバルコントロールグループを参照してください。

