トランクベース開発について調べてみた

目的

  • 「LeanとDevOpsの科学」という本を読んでいた時に「トランクベース開発」という単語が出てきたのがきっかけ。
  • トランクベースというのがどんな開発方法で何が好ましいのか理由が分からなかった。
  • そのためトランクベース開発を自分なりに調べ、その内容を自分への備忘録としてまとめて記事にしました。

トランクベース開発とは

  • トランクベース開発とは、細かく頻繁にメインブランチにマージする開発方法
    • トランク(trunk): 開発の中心(メインライン)となるディレクトリのこと
      • Subversionではmasterやmainと呼ばすにtrunkと呼んでいた。
  • トランクベース開発ではブランチは基本的に1~2日以内にマージする
    • 開発のブランチを長い期間存在させることを許さない

トランクベース開発のメリット

  • 細かく頻繁にマージするため競合が起こりにくい
  • 作業を小さい単位で行うことになるため、マージとコードレビューにかかるコストが小さくなる

トランクベース開発の留意点

  • 高い成果が出している組織の共通点としてブランチが短命だというレポートがある。
  • 大型な機能の開発、または複雑な機能の開発を行う場合への適用が難しい
    • どうしても1~2日以内では終わらなくなってしまう
    • すぐにはマージしたくないなどの場合もある
  • 組織がCI/CDに成熟していないと難しい
    • 「変更をデプロイ可能な状態に維持しながらマスターにマージ」を常に高速に実行する必要がある

さいごに

  • トランクベース開発について、ざっくりと自分の調べたことをまとめてみました。
  • 開発スピード向上の点では良さそうですが、CI/CDが成熟してないと導入してもメリットが出しにくい気がしました。
  • 銀の弾丸はありませんので、特徴を把握し、その時の開発の状況に応じて適切に戦略を選ぶなかの手法の1つとして覚えて置きたいと思います。