2022年2月9日
Feature Flags
多値フラグは無制限の状態を持つフラグで、論理値(二値)フラグのようにオンとオフだけではありません。その活用方法をご紹介します。
フィーチャーフラグというと、オンかオフか、真か偽か、ということを思い浮かべます。これは論理値フラグと呼ばれ、2つの状態しか持ちません。しかし、フラグには他にも多値フラグと呼ばれるものがあり、無制限の状態を持つ可能性があります。
今回は、多値フラグとは何か、そしてどのように使うのかを見ていきましょう。
論理値フラグは比較的理解しやすいものですが、明白なもの以外にも潜在的なユースケースが大量にあります。真の状態と偽の状態があり、基本的にはデフォルトと変更があります。もっと簡単に言えば 、オンとオフです。
これに対して多値フラグは、状態の数に制限がありません。
そのメリットは、フラグの使い方を広げて、さまざまなシナリオをカバーできることです。最も分かりやすいのは、A/Bテストと呼ばれるものです(A/Bと書いてあっても、通常は2つ以上の選択肢があります)。しかし、多値フラグについて考える方法はそれ以外にもたくさんあります。
具体的なユースケースについて掘り下げる前に、Harnessでは多値フラグが異なるデータ型を含んでいることに注目する必要があります。なぜなら、論理値フラグの値が何であろうと、実際の評価はbooleanという単一のデータ型だからです。一方、多変数フラグは、より自由度が高いため、データ型と値が必要です。
現在、文字列、JSON、整数が使用可能ですが、今後、みなさんからのフィードバックをもとに、さらに多くのデータ型を使用できるようにする予定です。データ型を追加することで、より強力なユースケースを製品に組み込むことができます。
A/Bテストは、通常、ユーザーの行動に焦点を当てます。ほとんどの場合、行動を修正する変化の統計的な有意性を決定することです。例えば最も解約を減らす「キャンセル」ボタンは赤、緑、青のどれか。
A/Bテストは、一度に多くの選択肢をテストできるため、多値フラグを活用できます。試用期間(3日間、7日間、30日間)や、文言(「刺激的」、「高度」、「革新的」) のテストがその例です。
A/Bテストは、フィーチャーフラグとAmplitudeなどの行動分析ツールを組み合わせることで、ユーザーの行動を把握し、調整しながら学習することができます。
文字列やJSONデータ型の利点の1つは、アプリケーションのバックエンドで、永続的な構成として、あるいはテスト用に多変数を使用できることです。
実際の例を挙げましょう。例えば、キャッシュからユーザーデータを取得し、コールドストレージに保存するアーカイブシステムがあるとします。98%の時間、このサービスは5分ごとに実行する必要があります。しかし、負荷の問題や他のエンジニアリングの変更により、運用を変更したい場合があります。
多値フラグを使用すれば、間隔を長くしたり短くしたり、あるいは完全に一時停止したりを、ボタンをクリックするだけで簡単に設定することができます。このように、アーカイバーを遅延または一時停止する際も、コアアプリケーションを変更せずに済みます。
これらの潜在的なユースケースは、運用チーム、SRE、アーキテクチャーチームの頭の中や手順書の中にあります。メンバー全員と話し合ってみてください。この種の動作を多値フラグに配線することで、時間の節約と耐障害性の向上が期待できることを確認してください。
規制された業界で働く人々や、消費者規制が異なる国で働く人々にとって、共通プロンプトの文章を変更する必要がある場合があります。
このような場合、多値フラグを使用すると便利です。物流業であれば、州ごとに異なる税率を1つのフラグで表示できます。また、データを扱う企業であれば、カリフォルニア州、米国のその他の地域、EU、英国に、法律で定められた異なるプライバシーメッセージを表示することもできます。全て1つの多値フラグで一元管理できます。
よくあるのは、このロジックをフラグと同じようにアプリケーションで配線し、アプリケーションが自動的に決定する方法で す。これは表面的には素晴らしいことですが、現実には、フラグ機能を使用したソリューションで得られる可視性、簡単な監査、制御を失ってしまいます。
多値フラグを斬新な方法で使っていますか?もしそうなら、ぜひ教えてください。
多値フラグは、A/Bテストよりも強力なツールです。上記のシナリオは一般的な例ですが、他にもたくさんあります。フラグを使いこなせば、アプリを制御し、可視化するための新しい方法を発見することができます。
フラグを立てる際には、単純な「はい」「いいえ」のフラグを超える方法についてチームと話し合ってください。さらに、複数の選択肢から学びたい場合について話し合います(そして、その過程で議論を回避します。フラグをつけて出荷し、実際のデータで解決できるのに、どの選択肢が最適かについて争う必要はないでしょう)。また、アプリケーションの運用タスクをフラグと結びつけて、より制御しやすくすることもできます。
この記事はHarness社のウェブサイトで公開されているものをDigital Stacksが日本語に訳したものです。無断複製を禁じます。原文はこちらです。