【とらんくべーすかいはつ】

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

💡 「全員がmainに直接コミット」で合流渋滞をなくす開発スタイル
📌 このページのポイント
トランクベース開発 main 開発者A 開発者B 開発者C 開発者A 開発者B 開発者C 開発者A 開発者B 数時間 最大1日 if (featureFlag) → 未完成機能を安全に隠す ✕ 長寿命ブランチ = 競合多発 マージ地獄になる ◎ 短命ブランチ = 頻繁にマージ 小さな変更を素早く統合 ↓ 頻繁に小さなコミット ↓
トランクベース開発は1本のメインブランチに頻繁に統合し、短命ブランチとフィーチャーフラグで安全に開発する手法
ひよこ ひよこ

トランクベース開発ってブランチを使わないってこと?

ペンギン先生 ペンギン先生

ブランチを完全に禁止するわけじゃないけど、使うとしても1日以内にマージする短命ブランチだけ。Git-flowみたいにdevelop・release・featureと何本もブランチを長期間並行させるのとは真逆の発想だね。

ひよこ ひよこ

でもmainに直接コミットしたら壊れない?

ペンギン先生 ペンギン先生

だからCI(継続的インテグレーション)が必須になる。コミットするたびに自動テストが走って、壊れたらすぐ検知できる。「小さな変更を頻繁に」がルールだから、壊れても影響範囲が小さくて直しやすい。

ひよこ ひよこ

まだ完成してない機能はどうするの?mainにコミットしたら見えちゃうよね?

ペンギン先生 ペンギン先生

そこでフィーチャーフラグを使う。コードは本番に入っているけど、フラグでオフにしておけばユーザーには見えない。完成したらフラグをオンにするだけでリリースできる。デプロイリリースを分離するテクニックだね。

ひよこ ひよこ

Git-flowとどっちがいいの?

ペンギン先生 ペンギン先生

チームの規模や状況による。トランクベースはCI/CDが整っている・チーム全員のスキルが高い・リリース頻度を上げたいケースに向いている。Git-flowは厳密なリリース管理が必要なプロダクトに向いている。Google・Facebook・Netflixなどはトランクベースを採用しているよ。

ひよこ ひよこ

大規模チームでもmainに直接コミットして大丈夫なの?

ペンギン先生 ペンギン先生

Googleは数万人のエンジニアが単一リポジトリモノレポ)でトランクベース開発をしている。秘訣は強力な自動テスト・コードレビュー・フィーチャーフラグの組み合わせ。あと変更を小さく保つ文化が根付いていることが重要で、「1コミットの差分は数十行」というルールを守ることでコンフリクトを最小化している。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
トランクベース開発って出てきたら「全員がmainブランチに直接・頻繁にコミットして長寿命ブランチを避ける開発手法」と思えばだいたいOK!
📖 おまけ:英語の意味
「Trunk-Based Development」 = 幹(trunk)を中心に据えた開発
💬 trunk(幹)は木の幹のこと。枝(branch)を伸ばさず幹に直接実を付けるイメージから
← 用語集にもどる