Tbpgr Blog

元エンジニア 人事 tbpgr(てぃーびー) のブログ

システム開発全般 | Feature Toggleによるリリース機能制限とそのリスク

概要

Feature Toggleによるリリース機能制限とそのリスク

詳細

Feature Toggleによるリリース機能制限とそのリスクについて。

Feature Toggleとは、システムの一部機能をon/off可能にしておく仕組み。
プロジェクトの政治的事情などによく利用される手法。
設定ファイルにtrue/falseなどを設定することにより機能の利用可能有無を切り替える。
各種実装箇所では該当フラグを見て機能のアクティブ/非アクティブを切り替える。
feature toggle, bits, flags, flippers, switchesなど様々な呼び方がある。

機能のon/offに対するプロジェクトの決定が行われ次第すぐにリリース出来るのが利点。

開発のミスなどにより、本来見えてはいけない機能が見えてしまうリスクがある。
最終的にフラグを必要としなくなった際にはフラグの機能を削除して
再リリースすることが好ましいが、予算や納期の都合などによりそのままになることが多い。
特に機能を利用しなかった場合は、何も動作しない機能のためのロジックがシステムに居座り続けることになる。

また、よくあることだが開発者が辞めたり別のチームに移っていくと、
なぜこのコードは存在しているのか、必要なのかどうなのかすら分かる人が居なくなるために
不要そうなロジックなのに消せない、という状況にもなる。

上記のような問題点があるため、基本的にはこの手法は最終手段にすべきである。

オーソドックスな手法としては小さいサイクルでリリースをしていればそもそもこういった手法が
必要になる機会は減るはずである。

また、どうしてもこの手法を利用しなければならないとしても
UI部分のリリースは実際に表示が必要となるイテレーションのぎりぎりまで保留にすべき。
ロジック部分のみの切り替えであれば、画面に誤って表示されてしまうこともないため。

以上、Martin Fowlerの見解+自分の現場経験などからの補足。

参照

Martin FowlerによるFeature Toggleに関する記事
http://martinfowler.com/bliki/FeatureToggle.html