フィーチャーフラグの仕組み ― デプロイせずに機能のON/OFFを切り替える技術
フィーチャーフラグって何なの?
コードの中に「この機能をONにするかOFFにするか」を制御するスイッチを埋め込む仕組みだよ。たとえば新しい検索画面を作ったとき、コードは本番にデプロイするけど、フラグがOFFなら誰にも見えない。準備ができたらフラグをONにするだけで公開できるんだ
デプロイし直さなくていいの?それはすごいね!
そこが最大のメリットだね。コードの中では「if (featureFlag.isEnabled('new-search'))」のように書いておくだけ。フラグの値は設定ファイルや管理サービスから取得するから、管理画面でポチッと切り替えるだけで反映されるよ
全員に一気に公開するのはちょっと怖い気がするんだけど…
いい感覚だね。だからフィーチャーフラグには「段階的ロールアウト」という使い方があるんだ。最初はユーザーの10%だけにON、問題なければ50%、最後に100%と段階的に広げていく。もし不具合が見つかったら、フラグをOFFにするだけで即座に元に戻せる。これをキルスイッチと呼ぶよ
フラグにも種類があるの?
大きく4種類に分けられるよ。リリースフラグは新機能の公開制御、実験フラグはA/Bテスト用、運用フラグはパフォーマンス調整やキルスイッチ、権限フラグは特定ユーザーだけに機能を開放するもの。目的によってフラグの寿命や管理方法が変わってくるんだ
自分でフラグの仕組みを作るのは大変そうだけど、何かサービスがあるの?
LaunchDarklyが業界で一番有名だね。管理画面からフラグの作成・ターゲティング・ロールアウト比率の設定ができる。オープンソースだとUnleashやFlagsmithがあるよ。ターゲティングルールも柔軟で、「日本のユーザーだけ」「有料プランだけ」「社内メンバーだけ」といった細かい条件でフラグを制御できるんだ
フラグってずっと残しておくものなの?
ここがフィーチャーフラグ運用の一番大事なポイントだよ。フラグにはライフサイクルがあって、作成 → 有効化 → 全員に展開 → クリーンアップという流れが基本。全員に公開して安定したら、フラグを削除してコードをスッキリさせるのが鉄則なんだ
削除しないとどうなるの?
これが業界でよく問題になる「フラグ負債」だよ。使われなくなったフラグがコード中に何百個も残って、どれが生きていてどれが死んでいるか誰も分からなくなる。ある有名な事例では、古いフラグの設定ミスが原因で大規模障害が起きたこともあるんだ。定期的にフラグを棚卸しする仕組みが必要だよ
フラグを使いこなせると開発の進め方自体が変わるんだね!