開発プロセス

トランクベース開発 とらんくべーすかいはつ

トランクベース開発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の特徴として実証

関連用語