トランクベース開発とは?
トランクベース開発とは、開発者が小さな変更を単一の共有ブランチ、すなわちトランクに非常に頻繁に統合するブランチングモデルです。
トランクベース開発は、互いに離れていってマージが苦痛になる長命なブランチへの反動です。全員をトランクの近くで作業させ、頻繁にマージすることで、統合を安価かつ継続的にします。
中心となる考え方
全員が統合する1つのメインブランチ、すなわちトランクがあります。開発者はそれに直接commitするか、数週間ではなく数時間から1日だけ存続する非常に短命なブランチを使います。変更は小さく保たれ、大きくコンフリクトを起こしやすいdiffなしに素早くマージできるようにします。
仕組み
- 作業を小さく、独立して出荷可能な変更に分割します。
- トランクから短時間だけブランチを切り、素早くマージして戻します。
- トランクへの各マージの検証をCIに任せます。
- feature flagを使い、未完成の作業をトランク内に隠します。
実例
大きな機能を作る開発者は、1か月続くブランチで作業しません。代わりに、flagで保護された小さなスライスを毎日トランクにマージします。機能はflagが有効化されるまでユーザーには見えませんが、コードは継続的に統合されテストされるため、巨大なマージが起こることは決してありません。
なぜCI/CDと相性が良いのか
トランクベース開発と継続的インテグレーションは互いを補強します。頻繁で小さなマージは、各マージが自動的に検証される場合にのみ安全に保たれ、それはまさにCIが提供するものです。トランクを常にrelease可能に保つことは、継続的デリバリーとデプロイメントの前提条件でもあります。
トレードオフ
このモデルは規律を求めます。小さな変更、速いレビュー、良いテスト、そして未完成の作業のためのfeature flagです。その代わりに、マージ地獄を避け、コードベースを常に出荷可能な状態に保ちます。これが高いパフォーマンスを発揮するチームがこれを好む理由です。
重要なポイント
- トランクベース開発は、全員を1つのブランチに頻繁に統合させ続けます。
- ブランチは短命で、変更は小さく保たれます。
- 安全を保つために、強力なCIとfeature flagに依存します。
関連ガイド
What Is a Feature Branch?What is a feature branch? Learn how isolating work on its own branch works, how it merges back, an example, t…
What Is Continuous Integration?What is continuous integration? A plain-English explainer covering what CI is, how it works, a worked example…
What Is a Merge Queue?What is a merge queue? Learn how it serializes merges and tests each change against the latest main, an examp…
What Is Branch Protection?What is branch protection? Learn how rules guard important branches, the common protections, an example, and…