UnleashでフィーチャーフラグのON/OFFとあわせて値を返すVariants使用例
要約
-
UnleashのVariants利用方法について
- Variantsを設定することで、Feature FlagのON/OFFと合わせて任意の値を返すことができる
- 利用例
- バナー表示の表示期間・表示画像をUnleash側で切り替える
- ABテストの表示パターンをVariantsで取得できるようにする
Unleashについて簡単に
UnleashはFeature Flag(機能切り替えのためのフラグ)の管理ツールです。
コード上でフィーチャーフラグを見て特定の機能の公開/非公開を判断するよう実装しておくことで、Unleashの画面上でフラグのON/OFFを切り替えるだけで機能の公開/非公開を行うことができるようになります。
様々な条件(Strategy)によって返す値を変えることができるので、ABテスト用にUIを出し分けるとか、特定の時間だけ表示する機能などをUnleash上でコントロールすることができます。
UnleashのVariants機能とは?
※Strategyと合わせて設定するVariantsについての説明です。バージョン5.8.2で確認しています。
どういった条件だとフラグがONになるかの設定(Strategy)が可能ですが、そこでVariantsという値を設定しておくと、フラグがONだった場合にその値を取得することができます。
フラグがONだったら"hoge"という文字列を返す、といった感じですね。
variantsは複数設定することができ、2つ設定すると2/1の確率でどちらかの値が返されるようになります。
(割合はカスタム可能)
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からのリクエストには必ず同じパターン(値)が返るようになります。
Discussion