セグメントへの機能フラグの適用

アプリ所有者として、フィーチャーフラグを作成・管理し、コレクションに追加して、SDK を使用してアプリ内で活用できます。 実行時にフィーチャーを有効または無効にすることによって、フィーチャーの適用可能性を制御することもできます。

ServiceNow 統合を使用して、 App Configuration 環境で開始された構成変更の承認プロセス・フローを追加できます。 承認プロセス・フローは、dev、stage、および production などの App Configuration 環境に適用できます。 詳しくは、 ワークフローの管理 を参照してください。

機能は、すべてのコレクション・ユーザーに対して、特定のユーザーとデバイスのセットに対して、または特定のユーザーとデバイスのセットに対して、有効または無効にすることができます。

機能の有効化または無効化は、開始日時と終了日時を定義することで調整できます。 また、定義済みの機能を有効または無効にできる特定の日を選択できます。 開始時間、終了時間、日付の設定方法、機能フラグをトグルさせる特定の日の選択方法については、 スケジュールフラグを 参照してください。

デフォルトでは、 機能フラグページには、 App Configuration サービスインスタンスの現在の環境で作成された機能フラグの一覧と、 名前タイプ最終更新日時 、最終評価日時対象セグメントなどのレコードの詳細が表示されます。 フラグの種類は、ブール型、数値型、文字列型の3つに分類されます。

  • **「ブール値」**フラグには 2 つの値があり、デフォルト値を「true」または「false」に設定できます。
  • **「文字列」**タイプのフラグは、テキスト形式のデータ、および JSON ファイルまたは YAML ファイルをサポートします。
  • 「数値」 フラグは、整数をサポートします。

特徴
リスト*特徴
*リスト

機能フラグの作成

機能フラグを作成するには、以下の手順を実行します。

  1. App Configuration コンソールで、**「機能フラグ」**をクリックします。

  2. 「現在の環境」 を選択して、その環境の機能フラグのリストを表示します。

  3. 「作成」 をクリックします。 サイドパネルが開き、新しいフィーチャーフラグを作成するための入力欄が表示されます。

    機能{: caption="を作成する新しい機能" caption-side="bottom"}を作成する機能フラグを作成する

  4. 機能フラグの詳細を指定します。

    • 名前 - 機能フラグの名前。
    • 機能フラグ ID - 入力された機能名に基づいて機能フラグ ID 値が自動的に提案されます。 同じものは必要に応じて変更することができます。 この機能フラグ ID 値を SDK または API コードで ID として使用します。
    • フラグ・タイプ - 機能フラグのタイプを指定します。 サポートされるタイプとしては、ブール値、ストリング、数値があります。 フラグ・タイプとデフォルト値について詳しくは、 機能フラグ・タイプの選択 を参照してください。
    • デフォルト値 - 選択した機能フラグ・タイプのデフォルト値を指定します。 フラグ・タイプとデフォルト値について詳しくは、 機能フラグ・タイプの選択 を参照してください。
    • オプションで、ここで機能フラグを適用するためのコレクションを選択します。 それ以外の場合は、機能フラグを切り替える前にコレクションを追加する必要があります。 「 コレクション間で機能フラグの有効性を設定 」リストから選択することで、1つまたは複数のコレクションに機能フラグを追加できます。
    • フィーチャーのロールアウト-スライダーを使用して Rollout percentage を指定します。 手動ロールアウトの詳細については、 機能ロールアウトのパーセンテージを設定するを 参照してください。
    • 説明 - 機能フラグの説明を追加します。これはオプションです。
    • 必要に応じて、フィーチャーフラグを識別するのに役立つタグを定義してください。
  5. 「作成」 をクリックします。

デフォルトでは、新しいフィーチャーフラグを作成すると、「 有効 」のトグルスイッチは「 OFF 」に設定されます。

機能フラグ・タイプの選択

以下のいずれかのフラグ・タイプを機能フラグに関連付けることができます。

  • ブール値
  • ストリング
  • 数値

各フラグ・タイプには、デフォルト値があります。

  • トグルスイッチを「 ON 」に設定した場合、「 有効な値 」の値の入力が必須となりますが、セグメントをターゲットに設定する際にはこの値を上書きすることができます。
  • トグルスイッチを 「OFF」 に設定する場合、「 無効」の値の指定が必要ですが、セグメントをターゲットに設定する際にはこの値を上書きすることができます。

ブール値

**「フラグ・タイプ」としてブール値 を選択すると、「デフォルト値」**の詳細が表示されます。

Feature flag type - Boolean
Feature flag type - Boolean

  1. リストから**「有効値」**を選択します。 この値は、機能フラグのトグルスイッチが「 ON 」に設定されている場合、デフォルトで返されます。 この値は、セグメントをターゲットに設定する際に上書きすることができます。

  2. リストから**「無効値」**を選択します。 機能フラグのトグル・スイッチがオフ に設定されている場合は、デフォルトでこの値が返されます。

ストリング

**「フラグ・タイプ」としてストリングを選択すると、「デフォルト値」**の詳細が表示されます。

フィーチャーフラグタイプ -{: caption="列で選択フィーチャーフラグタイプ -" caption-side="bottom"}列フィーチャーフラグタイプ - 文字列

  1. リストからストリング・フラグ・タイプの 「フォーマット」 を選択します。 サポートされる形式は、テキスト、JSON、および YAML です。 JSON または YAML 形式を選択した場合は、選択した形式で 「有効値」「無効値」 を指定します。

  2. **「有効値」**を指定します。 この値は、機能フラグのトグルスイッチが「 ON 」に設定されている場合に、デフォルトで返されます。 この値は、セグメントをターゲットに設定する際に上書きすることができます。

  3. **「無効値」**を指定します。 機能フラグのトグル・スイッチがオフ に設定されている場合は、デフォルトでこの値が返されます。

数値

**「フラグ・タイプ」として数値 を選択すると、「デフォルト値」**の詳細が表示されます。

![フィーチャーフラグタイプ-数値*フィーチャーフラグタイプを")

  1. リストから**「有効値」**を選択します。 整数値のみがサポートされています。 この値は、機能フラグのトグルスイッチが「 ON 」に設定されている場合に、デフォルトで返されます。 この値は、セグメントをターゲットに設定する際に上書きすることができます。

  2. リストから**「無効値」**を選択します。 整数値のみがサポートされています。 機能フラグのトグル・スイッチがオフ に設定されている場合は、デフォルトでこの値が返されます。

コレクションのターゲット機能フラグの設定

オプションで、ここで機能フラグを適用するためのコレクションを選択します。 それ以外の場合は、機能フラグを切り替える前にコレクションを追加する必要があります。 機能フラグの作成時、または機能フラグの詳細の編集時に、1 つ以上のコレクションに機能フラグを追加できます。

機能フラグにコレクションを追加する場合は、**「複数のコレクションにおけるフラグの可用性」**フィールドのリストからコレクションを選択します。

コレクションにリンクされていないフィーチャーフラグをターゲットにしようとすると、フィーチャーフラグをコレクションに追加するためのウィンドウが表示されます。

機能のロールアウト率の構成

機能フラグには、0 から 100 の範囲のロールアウト率を構成できます。ロールアウト率は、一部のユーザーまたはデバイスに対する機能の適用性を示します。

手動によるロールアウトは、ランダムに選ばれたごく一部のユーザーやエンティティのサブセットに対して機能を有効にするのに役立ち、リリースサイクルをより細かく制御し、段階的な提供を実現します。 ロールアウトする機能が意図したとおりに動作していることを確認したら、時間の経過とともにパーセンテージを増やします。

手動ロールアウトは、ルールセットに基づいてハッシュを生成するハッシュアルゴリズムを使用する。 このハッシュは、そのユーザーのパーセント値を生成するために SDK によって使用されます。 そのユーザーに対して生成されたパーセンテージ値は、手動ロールアウト値に設定された値と比較され、そのユーザーがその機能を受ける資格があるかどうかを決定する。

例えば、ハッシュに 1 から 100,000 までのパーティションがあるとします。 機能フラグを割り当てると、ハッシュによって各パーティションのユーザーに 1 から 100,000 の値が割り当てられます。 例えば、フィーチャー・フラグに 25% を割り当てると、 App Configuration SDK は、そのフィーチャーを 1 から 25,000 までのハッシュ・パーティションに配信します。 その機能を受け取るユーザーのパーセンテージを 25% から 50% に変更すると、既にその機能を受け取るパーティションのセットに、パーティション 25,001 から 50,000 が追加されます。

LiteプランおよびEnterpriseプランでは、手動ロールアウト機能をご利用いただけます。

以下は、手動ロールアウトのシナリオの一部である:

  • 機能フラグが無効になっている場合、SDK はデフォルトの Disabled value を返します。
  • セグメントルールなしで機能フラグが有効で、手動ロールアウトが設定されていない場合、SDKはデフォルトの Enabled値を返します。
  • セグメントルールなしで機能フラグが有効で、手動ロールアウトが0%に設定されている場合、SDKはすべてのユーザーに対して Disabled値を返します。
  • セグメントルールなしで機能フラグが有効で、手動ロールアウトがパーセント、例えば50%に設定されている場合、SDKはユーザーが設定された手動ロールアウトサイズに属しているかどうかをチェックし、ユーザーがロールアウト基準に属している場合、SDKは Enabled値を返します。 ユーザーがロールアウト基準に属していない場合、SDK は Disabled value を返します。
  • 機能フラグがセグメント・ルールで有効になっている場合、SDK はまず、構成されているルールに照らしてユーザーを評価します。 ユーザーが設定されたルールの一部である場合、SDKはそのユーザーが手動ロールアウトの対象であるかどうかを評価する。
    • 複数のルールが構成されていて、最初の一致が見つかるまでユーザーのルール・マッチングがチェックされる場合。 一致するものが見つからない場合、SDK はデフォルトのロールアウトに対して評価します。
    • ユーザーがセグメントの一部であると評価され、セグメントの手動ロールアウトが0%である場合、ユーザーがセグメントの一部であっても、ユーザーはセグメント値を受け取らない。 SDK は、デフォルトの Disabled value を返します。
    • ユーザーがセグメントの一部であると評価され、セグメントの手動ロールアウトがパーセンテージ、例えば50%に設定されている場合、SDKはユーザーが設定されたロールアウトサイズに属しているかどうかをチェックし、ユーザーがロールアウト基準に属している場合、SDKはセグメントのオーバーライド値を返します。 ユーザーがロールアウト基準に属していない場合、SDK は Disabled value を返します。
パーセントのロールアウト・シナリオ
機能フラグ ターゲットは構成されていますか? 手動
ロールアウト
ユーザー

構成済みセグメントの一部ですか
ユーザー

マニュアル・ロールアウト
基準の一部ですか?
SDK によって
returned
値が返されました
無効 NA 任意の% ロールアウト・セット NA NA 無効な値
有効 いいえ 0% NA いいえ 無効な値
有効 ある 0% ある いいえ 無効な値
有効 ある 0% いいえ いいえ 無効な値
有効 いいえ 0% から 100% NA ある 有効な値
有効 いいえ 0% から 100% NA いいえ 無効な値
有効 ある Betweeen 0% から 100% ある ある オーバーライド値
有効 ある Betweeen 0% から 100% ある いいえ 無効な値
有効 ある 0% から 100% いいえ ある 有効な値
有効 ある 0% から 100% いいえ いいえ 無効な値
有効 いいえ 100% NA ある 有効な値
有効 ある 100% ある ある オーバーライド値
有効 ある 100% いいえ ある 有効な値

機能フラグを指定してターゲット・セグメントを設定

機能フラグを 1 つ以上のターゲット・セグメントにロールアウトできます。 必要に応じて、フラグ値ごとに異なるセグメントを設定できます。

  1. App Configuration コンソールで、**「機能フラグ」**に移動します。 このペインには、 App Configuration サービスインスタンスの現在の環境で利用可能なフィーチャーフラグの一覧が表示されます。

  2. 必要な機能フラグ行の Add targetingをクリックして、 Add targeting configurations サイドパネルを表示します。

  3. Feature rollout (Default)」 セクションには、機能フラグ作成時に定義されたデフォルトのロールアウト率スライダーが表示されます。 スライダーを動かすことで、ロールアウト率の値を調整できます。 スライダーを調整すると、変更は自動的に保存されます。

  4. Rules(ルール) セクションでは、機能を見る人をコントロールするルールを定義し、複数のルールを簡単に管理することができます。 初期ビューには、[ ルールを作成] ボタンと、既存のルールをフィルタリングするための検索フィールドが表示されます。

    ルールの追加
    ルールの追加

    ルールを作成する際には、以下を指定する:

    • ルール名- ルールの説明的な名前を入力します(最大100文字)。

    • ルールID- ルールの一意の識別子を入力します。 英字、数字、ドット(.)、ハイフン(-)、アンダースコア(_)のみ。最大100文字。

    • ロールアウト率 では、値を オーバーライド または デフォルトからの継承 として定義できます。 Override オプションが選択されている場合は、スライダーを使用してロールアウトのパーセンテージ値を調整します。 パーセンテージは、スライダーを調整すると自動的に保存されます。

    • セグメントの選択- リストから1つまたは複数のセグメントを選択します。 選択されたセグメントは、カウント表示(例えば、「1×セグメントが選択されました。) ターゲットに使用できるセグメントがない場合は、 「セグメントの作成」 をクリックします。 セグメントの作成について詳しくは、 セグメントの作成 を参照してください。

    • 「有効値」 には、 「オーバーライド」 を選択して値を変更するか、 「フラグから継承」 を選択できます。

    • 優先度- ルールの優先度を設定し、ルールの評価順序を決定します。 優先順位は以下のいずれかに設定できます:

      • Set to Bottom - ルールの優先順位を最後に設定する。 これはデフォルト・オプションです。
      • Set to Top - 優先順位をルールの最上位(つまり1)に設定します。
      • 特定の位置 - ユーザーが定義した特定の位置に優先順位を設定します。 (優先順位は1からルール数まで)。

    Save Rule ]をクリックすると、ルールが作成・保存される。 ルールの設定が完了したら、パネルを閉じるだけです。

  5. ルールを作成すると、ルールテーブルに優先度ルール名セグメントロールアウト情報が表示されます。 オーバーフローメニューを使用して、各ルールに対して以下のアクションを実行できます:

    • コピー- 既存のルールを複製して新しいルールを作成します。

    コピー・ルール・オーバーフロー・メニュー
    コピー・ルール・オーバーフロー・メニュー

    コピー・ルール・ビュー
    コピー・ルール・ビュー

    • ルールの編集- 既存のルール設定を変更します。

    ルール・オーバーフロー・メニューの編集
    ルール・オーバーフロー・メニューの編集

    ルールビューの編集
    ルールビューの編集

    • 優先順位の編集- ルールの評価順序を変更する。 優先順位は、ルールが評価される順序を決定する。 優先順位番号の低いルールが最初に評価される。 優先順位は前述したオプションのいずれかに設定できる。

    優先オーバーフローメニューの編集
    優先オーバーフローメニューの編集

    優先順位ルールのビューを編集
    優先順位ルールのビューを編集

    • Delete- ルールを削除します。 削除を選択すると、誤って削除しないように確認ダイアログが表示されます。

    ルール・オーバーフロー・メニューの削除
    ルール・オーバーフロー・メニューの削除

    削除確認ダイアログ
    削除ルール確認ダイアログ

コレクションにリンクされていないフィーチャーフラグをターゲットにしようとすると、フィーチャーフラグをコレクションに追加するためのウィンドウが表示されます。

ターゲティングルールの評価方法

ターゲティングを設定するときは、以下の評価動作に注意してください:

  • セグメント内では、異なる属性が AND で評価される。
  • 1つのセグメント属性内で、複数の値は OR で評価されます。
  • ターゲティングルール内では、選択された複数のセグメントが OR で評価される。
  • ターゲティング・ルール全体で、ルールは優先順位によって評価され、最初にマッチしたルールが適用される。

たとえば、あるルールにセグメント Production - US-EastProduction - Eu-De が含まれる場合、どちらかのセグメントがマッチすると、そのルールはマッチする。 これらのオーディエンスに個別にロールアウトしたい場合は、個別のルールを作成するか、必要な属性をすべて含む各セグメントを定義し、優先度順にルールを並べます。

eu-de の本番ユーザーに対して最初に機能を有効にし、 us-east の本番ユーザーに対して後に機能を有効にする場合、次のように、必要なすべての属性を持つ各セグメントを定義します:

  • セグメント1: environment is production region is eu-de
  • セグメント2: environment is production region is us-east

次に、これらのセグメントを別々のルールでターゲットにし、 Edit targeting ビューで優先度順にルールを並べる。 このアプローチは、各ルールが意図された利用者のみにマッチすることを保証するのに役立つ。

機能フラグの有効化

フィーチャーフラグをセグメントに割り当てたら、トグル(ON/OFF)をクリックして、フィーチャーフラグを有効または無効にしてください。

機能フラグ - オーバーフロー・メニュー

各機能フラグのオーバーフロー・メニュー (3 つの垂直ドット) は、**「編集」操作、「コピー」操作、「削除」操作と、既にターゲットに設定されているこれらの機能フラグの「ターゲット設定の削除 (Remove targeting)」**で構成されています。

caption-side=bottom"
特徴
特徴フラグのオーバーフローメニュー

  • 編集 」オプションを選択すると、「 名前 」や「 説明 」の変更、 タグの追加や削除、 フラグの種類や デフォルト値の変更、および「 コレクション間のフラグの可用性 」フィールドの情報について、コレクションの追加や削除を行うことができます。
  • コピー 」オプションを選択すると、フィーチャーフラグの情報がコピーされるため、フィーチャーフラグの「 名前 」を変更する必要があります。 必要に応じて他の詳細を変更できます。
  • **「削除」**オプションを選択すると、選択した機能フラグを削除するかどうかの確認を求める確認ウィンドウが表示されます。 「削除」オプションを選択すると、機能フラグが完全に削除され、この操作は元に戻せません。
  • 機能フラグのリスト内の機能フラグで**「クリップボードにコピー」アイコンをクリックすると、機能フラグの機能フラグ ID** 値がクリップボードにコピーされます。
  • ターゲティングを削除すると、セグメントに対するフィーチャーフラグのターゲティングが解除されます。