【ふぃーちゃーとぐる】

フィーチャートグル とは?

最終更新:
💡 デプロイ済みの機能を「スイッチ」で出し入れする

機能の有効・無効や使う処理を、フラグや設定によって切り替える手法。コードの配置とユーザーへの機能公開を分けたり、対象ユーザーごとに動作を変えたりできる。

📌 このページのポイント
配置したコードの動作を選ぶ コードは配置済みONOFF新機能を使う従来の動作対象ユーザーや設定で分岐を選ぶ
フラグに応じて実行する処理を選ぶ例。切り替えの反映方法は実装によって異なる。
ひよこ ひよこ
ブランチで管理するのと何が違うの?
ペンギン先生 ペンギン先生
ブランチはコードの変更を分けて管理する仕組みだよ。トグルは、アプリに入っているコードのうちどの処理を使うかを選ぶ仕組み。新機能を本番に配置しておき、公開はあとからONにする、といった使い方ができるんだ。
ひよこ ひよこ
OFFなら未完成のコードを入れても安全?
ペンギン先生 ペンギン先生
フラグで囲んだ処理を通らないようにはできるけれど、それだけで安全が保証されるわけではないよ。共通処理やデータベースへの変更にも影響がないか、ONとOFFの両方で確認する必要があるんだ。
ひよこ ひよこ
どんな場面で便利?
ペンギン先生 ペンギン先生
社内だけで先に試したり、一部のユーザーから公開を広げたりできるよ。A/Bテストではユーザーをグループに分けて別の処理を見せ、結果を計測する。グループを必ず半分ずつにする決まりはないんだ。
ひよこ ひよこ
問題があったら、すぐOFFにできる?
ペンギン先生 ペンギン先生
実行中に設定を更新できる方式なら、機能停止用のキルスイッチに使えるよ。一方、設定をビルド時に埋め込む方式では再デプロイが必要になることもある。切り替えが反映される時間や範囲も確認しよう。OFFにしても、すでに起きたデータ変更が元に戻るわけではないよ。
ひよこ ひよこ
フラグはずっと残しておくの?
ペンギン先生 ペンギン先生
全員への公開が終わった一時的なフラグは、不要になった分岐と一緒に削除するよ。増えるほど設定やテストの組み合わせが複雑になるから、目的と削除時期を決めて管理するんだ。長く必要な運用用フラグとは分けて考えよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「フィーチャートグル」って出てきたら「機能のON/OFFをフラグで制御する手法」と思えればだいたいOK!
📖 おまけ:英語の意味
「Feature Toggle / Feature Flag」 = 機能切り替え / 機能フラグ
💬 Toggle(切り替えスイッチ)の名前の通り、機能をスイッチのようにON/OFFできるよ

参考資料

← 用語集にもどる