トランクベース開発
全開発者が 1 つのメインブランチに頻繁にコミットし、長寿命ブランチを避ける開発手法
GitDevOps
トランクベース開発とは
トランクベース開発 (Trunk-Based Development) は、全開発者が 1 つのメインブランチ (trunk/main) に頻繁にコミットし、長寿命のフィーチャーブランチを避ける開発手法である。DORA の研究で、高パフォーマンスチームの特徴として報告されている。
Git Flow vs トランクベース
| 観点 | Git Flow | トランクベース |
|---|---|---|
| ブランチ寿命 | 数日〜数週間 | 数時間〜1 日 |
| マージ頻度 | 低い | 高い (1 日複数回) |
| マージコンフリクト | 多い | 少ない |
| リリース頻度 | 低い | 高い |
| CI/CD との相性 | 中 | 高い |
進め方
1. main から短命ブランチを作成
2. 小さな変更をコミット (数時間以内)
3. PR を作成、レビュー
4. main にマージ
5. CI/CD で自動デプロイ
❌ 避けるべき: feature/big-refactor (2 週間)
✅ 推奨: fix/validation-error (2 時間)
小さな変更の原則
1 つの PR には 1 つの変更だけを含め、差分は 200 行以内に抑える。大きな PR はレビューの質が下がるためだ。リファクタリングと機能追加は別の PR に分け、変更の意図を明確にする。各 PR にテストを含めて、PR 単体で検証可能にする。
トランクベース開発の前提条件
| 前提 | 理由 |
|---|---|
| 自動テスト | main が常にデプロイ可能であることを保証 |
| CI/CD | マージ後に自動デプロイ |
| フィーチャーフラグ | 未完成の機能を隠す |
| コードレビュー | 品質を維持 |
| 小さな変更 | コンフリクトを最小化 |
トランクベース開発の関連書籍も参考になる。