トランクベース開発 とらんくべーすかいはつ
トランクベース開発TBDフィーチャーフラグ継続的インテグレーション短命ブランチデプロイ頻度
トランクベース開発ってGitFlowと何が違うの?
簡単に言うとこんな感じ!
GitFlowは「長期ブランチでじっくり開発してマージ」だけど、トランクベース開発は「毎日mainブランチに小さくコミット」する手法だよ!長期ブランチは「マージ地獄」が起きやすいから、短いサイクルで本流に合流し続けることで統合の痛みをなくすんだ。Google・Facebookも採用してるやり方だよ。
トランクベース開発とは
トランクベース開発(Trunk-Based Development:TBD) とは、全開発者が単一のメインブランチ(トランク)に頻繁に(少なくとも1日1回)直接コミットする、または短命なフィーチャーブランチ(1〜2日)からメインへマージする開発手法です。
Continuous Integration(CI)の真の実践であり、DORA研究でも「ハイパフォーマーなチームの特徴」として挙げられています。
GitFlowとの比較
| 観点 | GitFlow | トランクベース開発 |
|---|---|---|
| ブランチ寿命 | 数週間〜数ヶ月 | 最大1〜2日 |
| マージ頻度 | 低い | 毎日 |
| マージ競合 | 頻繁・大規模 | 少ない・小規模 |
| 未完成機能 | ブランチで隔離 | フィーチャーフラグで非表示 |
| リリース | releaseブランチから | mainから直接 |
| 適合規模 | 大規模チーム | 少数精鋭チーム |
未完成機能の扱い:フィーチャーフラグ
トランクベース開発では、未完成の機能をブランチで隔離する代わりにフィーチャーフラグ(Feature Toggle) でコードを隠します。
// フィーチャーフラグで新機能を制御
if (featureFlags.isEnabled('new-checkout-flow')) {
return <NewCheckoutFlow />;
} else {
return <OldCheckoutFlow />;
}
トランクベース開発の前提条件
- 自動テストが十分に整っている(CI通過=品質保証)
- デプロイが自動化されている(CD環境がある)
- チームメンバーが小さなコミットに慣れている
- フィーチャーフラグの仕組みがある
歴史と背景
- 2000年代:Google・Facebookが単一トランクで大規模開発する手法を実践
- 2014年:Paul Hammat・Jez Humbleが「Continuous Delivery」でTBDを推奨
- 現在:DORAメトリクス研究でElite performerの特徴として実証
関連用語
- Gitブランチ戦略 — TBDとGitFlowの比較文脈
- CI/CDパイプライン — TBDを支えるCI/CDの自動化
- フィーチャーフラグ — TBDで未完成機能を隠すための仕組み
- ソフトウェアメトリクス — DORAメトリクスでTBDの効果を測定
- 継続的デプロイ — TBDから直接本番デプロイする仕組み