新機能を公開した直後に、大きな不具合が見つかった。そんなとき、「大急ぎでコードを直して、再度公開する」以外にも、実は選択肢があります。
フィーチャーフラグとは「機能のスイッチ」のこと
フィーチャーフラグとは、特定の機能のオン・オフを、コードを書き直すことなく切り替えられる仕組みのことです。プログラムの中に「この機能を表示するかどうか」を判定する小さなスイッチ(フラグ)をあらかじめ用意しておき、管理画面などからそのスイッチを操作するだけで、機能の見え方をコントロールできます。
家の壁にある照明のスイッチをイメージすると分かりやすいかもしれません。電球の配線をやり直さなくても、スイッチを切り替えるだけで、部屋を明るくしたり暗くしたりできます。フィーチャーフラグも同じように、コードという「配線」自体は変えずに、機能の見え方だけを切り替えます。
なぜ、この仕組みが重要なのか
新機能を公開した後に問題が見つかった場合、通常であれば、原因を調べて修正し、あらためてコードを公開し直す必要があります。この一連の作業には、どうしても一定の時間がかかります。特に多くの利用者が使っているサービスでは、その間も問題が起き続けてしまいます。
フィーチャーフラグを使っていれば、この状況が大きく変わります。問題が起きたら、管理画面からスイッチをオフにするだけで、その機能を即座に非表示にできます。コードの修正や再公開を待つ必要がなく、被害を最小限に食い止められるのです。まさに「何かあったら、すぐ電源を落とせる」状態を、あらかじめ用意しておくようなものです。
その他の使われ方
フィーチャーフラグは、緊急時の備えとしてだけでなく、日常的な開発の中でも幅広く活用されています。
- 開発中の機能を、本番環境に置きながらも利用者には見せないようにしておく
- 特定の社員や、限られたテストユーザーだけに新機能を先行公開する
- 有料プランの利用者だけに、特定の機能を表示する
前回紹介した「カナリアリリース」(一部の利用者にだけ新機能を先行公開する手法)を実現するための具体的な仕組みとして、このフィーチャーフラグが使われることもよくあります。「誰に、どの機能を見せるか」を柔軟にコントロールできる点が、フィーチャーフラグの大きな強みです。
まとめ
フィーチャーフラグは、機能のオン・オフをコードの修正なしに切り替えられる仕組みです。緊急時にすぐ機能を止められる備えとしてだけでなく、開発中の機能を隠しておいたり、特定の利用者だけに先行公開したりと、日常的な開発の中でも幅広く役立っています。「すぐに戻せる」という安心感を作っておくことが、この仕組みの本質的な価値だといえます。