Skip to content
Latchkey

トランクベース開発とは?

トランクベース開発は、全員が小さな変更を単一のメインブランチに頻繁に統合し、長命なブランチを避けるブランチ戦略です。

トランクベース開発は、チームが 1 つの共有ブランチ、すなわちトランクの近くで作業し続けるようにします。何週間も存在するフィーチャーブランチではなく、開発者は小さな変更を行い、毎日、あるいは 1 日に何度もマージします。これは、高速な継続的インテグレーションを最もよく支えるブランチモデルです。

中心となる考え方

通常 main と呼ばれる 1 つのトランクがあり、常にリリース可能な状態を保ちます。作業は非常に短命なブランチ上、またはフィーチャーフラグの背後でトランク上に直接行われ、すぐにマージし戻されます。目標は、変更がトランクから離れて過ごす時間を最小限にすることです。

短いブランチのワークフロー

変更はブランチを切り、レビューとテストを受け、1 日ほどでマージされます。

A short-lived trunk branch
git switch -c fix/typo
git commit -am "Fix typo in header"
# open PR, pass CI, merge same day

なぜうまくいくのか

全員が頻繁に統合するため、マージは小さいままでコンフリクトはまれです。トランクは常に最新の現実を反映するため、苦痛なビッグバン統合はありません。未完成の機能は長命なブランチに放置されるのではなく、フィーチャーフラグの背後に隠されます。

トランクベース開発と CI/CD

このモデルは高速で信頼できるパイプラインに依存します。すべての小さな変更がすぐにマージされるなら、CI はそれぞれを数分で検証し、トランクを緑に保たなければなりません。その見返りとして、トランクは常に出荷可能に近い状態になり、それはまさに継続的デリバリーが必要とするものです。高速なランナーは、この緊密なフィードバックループを実用的にします。

うまく機能させるには

  • ブランチは数週間ではなく、数時間か 1 日だけ生かします。
  • 未完成の作業はフィーチャーフラグの背後に隠します。
  • 頻繁なマージが検証され続けるよう、高速な CI に投資します。
  • 壊れたトランクはライン停止の事態として扱います。

重要なポイント

  • トランクベース開発は小さな変更を 1 つのメインブランチに頻繁に統合します。
  • 長命なブランチと、それが引き起こすコンフリクトを最小限に抑えます。
  • 常にリリース可能なトランクを緑に保つため、高速な CI に依存します。

関連ガイド