Open4
トランクベース駆動開発とFeature Flagsのノウハウ

トランクベース開発というものがある。
一つのメインブランチ(trunk)上で作業を行い、1~2日以内にマージすることを前提とした作業用ブランチ(short-lived branch)を作成して、そこで作業を行う。
始めるにはCIは大前提となり、E2Eなどの自動テストは必須となる。それをやらないと、バグなどがあるのか使用通りに挙動するのか何も確認してないのに本番に反映させるわけにはいかない。
また細かい単位をどんどんマージさせていくので、一つの作業用ブランチで一つの機能の開発なんてできる可能性の方が低い。
そのため、デプロイされている機能をON/OFFをいつでも制御できるFeature Flag
を入れることも必須となってくる。
Feature Flag
には4種類ある。
- Release Toggles(リリーストグル)
- Experiment Toggles(実験トグル)
- Ops Toggles(運用トグル)
- Permission Toggles(許可トグル)

Feature Flagのツールにはいくつかあるが、主に以下がありオススメとのこと。
- LaunchDarkly
- Unleash
- Split
LaunchDarkly
が一番機能豊富とのこと。
Unleash
はセルフホスティングとクラウドベースの両方がある。
Split
には機能が限定されるものの、無料プランがある。
詳しい比較表には以下がある。
参考資料
https://codezine.jp/article/detail/14662

FeatureFlag導入時の注意点
フラグの実装には統一ルールなどを設けないと、コードの肥大化や複雑にしてしまう原因にもなるとのこと。その辺を以下の記事がうまく解説していた。

Unleash
とSplit