UnleashでフィーチャーフラグのON/OFFとあわせて値を返すVariants使用例

2024/02/04に公開

要約

  • UnleashのVariants利用方法について
    • Variantsを設定することで、Feature FlagのON/OFFと合わせて任意の値を返すことができる
    • 利用例
      • バナー表示の表示期間・表示画像をUnleash側で切り替える
      • ABテストの表示パターンをVariantsで取得できるようにする

Unleashについて簡単に

UnleashはFeature Flag(機能切り替えのためのフラグ)の管理ツールです。
コード上でフィーチャーフラグを見て特定の機能の公開/非公開を判断するよう実装しておくことで、Unleashの画面上でフラグのON/OFFを切り替えるだけで機能の公開/非公開を行うことができるようになります。
様々な条件(Strategy)によって返す値を変えることができるので、ABテスト用にUIを出し分けるとか、特定の時間だけ表示する機能などをUnleash上でコントロールすることができます。

Unleashのフラグ設定画面

UnleashのVariants機能とは?

※Strategyと合わせて設定するVariantsについての説明です。バージョン5.8.2で確認しています。

どういった条件だとフラグがONになるかの設定(Strategy)が可能ですが、そこでVariantsという値を設定しておくと、フラグがONだった場合にその値を取得することができます。
フラグがONだったら"hoge"という文字列を返す、といった感じですね。

variantsは複数設定することができ、2つ設定すると2/1の確率でどちらかの値が返されるようになります。
(割合はカスタム可能)

strategy設定内のvariants設定部分

VariantsはNode.jsのクライアントでは getVariant というメソッドで取得できます。
(他の言語でも同じような感じだと思うんですけど)

// 戻り値の型
interface IVariant {
    name: string;
    enabled: boolean;
    payload?: {
        type: string;
        value: string;
    };
}

フラグが有効ならpayloadが取得できます。

値の種類

値のタイプも複数あり、5.8.2ではstring、json、csv、numberを返すことができます。

値のタイプを選択するセレクトボックス

利用例

UIの表示に関する利用例を上げてみました。

例1.特定の期間に指定したバナー画像を表示する

Strategy設定のConstraintsで、特定の期間だけフラグをONにすることができます。そしてVariableで表示するバナー画像の情報を渡すことができるので、コードの変更をおこなうことなくUnleashでの操作でバナー画像と表示期間を変更することができます。

Constraintsで表示期間を設定
表示期間の指定の例

表示する画像の情報をjson形式で返す
画像情報を渡す例

例2.ABテストを行う

複数のVariantsを用意して異なる値を返し、コード側でその値を見て表示内容を切り替えることで簡単にABテストが可能です。

パターン分のVariantsを設定して、それぞれ同じ割合で値が返される
複数返す値を設定する例

補足:Stickinessで表示パターンが固定される

例えばUIのABテストで、アクセスするたびに表示されるものが変わってしまうと困ります。どういった条件で表示パターンを固定するかをStickinessで設定することができます。

たとえばSessionIdを設定し、フラグ取得の際に渡すContextにSessionIdを含めておくことで、同じSessionIdからのリクエストには必ず同じパターン(値)が返るようになります。

Stickinessを選択するセレクトボックス

Discussion