第 4 章: バージョン管理と Conventional Commits¶
4.1 はじめに¶
ソフトウェア開発では、変更履歴を安全に管理し、チームで追跡可能にする仕組みが重要です。 Git による版管理とコミットメッセージ規約を整えることで、TDD の小さな変更を確実に積み上げられます。
4.2 Git によるバージョン管理¶
Scala プロジェクト(apps/scala)では、次の基本フローで変更を記録します。
cd apps/scala
git init
git add .
git commit -m "chore(scala): initialize sbt project"
git init でリポジトリを初期化し、git add でステージング、git commit で履歴を確定します。
TDD では Red → Green → Refactor の小さな単位でコミットすると、変更意図を追いやすくなります。
.gitignore の設定¶
apps/scala/.gitignore には、ビルド成果物と IDE 補助ファイルを含めます。
target/
.bsp/
.metals/
.bloop/
.idea/
*.class
*.log
*.jar
.DS_Store
project/metals.sbt
project/project/
最低限として、次の 4 つは必ず除外します。
target/.bsp/.metals/.bloop/
4.3 Conventional Commits¶
Conventional Commits は、Angular Convention に由来するコミットメッセージ規約です。 基本フォーマットは次の通りです。
<type>(<scope>): <subject>
type: 変更種別scope: 変更対象(任意)subject: 変更内容の要約(命令形・簡潔)
type の種類¶
feat: 新機能の追加fix: バグ修正docs: ドキュメント変更style: 振る舞いに影響しない整形refactor: 振る舞いを変えない構造改善test: テスト追加・修正chore: ビルドや設定などの雑務
scope と subject の書き方¶
scopeはモジュール単位で短く書きます(例:scala,fizzbuzz,ci)。subjectは 50 文字前後を目安に、何をしたかを明確に書きます。- 末尾の句点は付けません。
コミットメッセージの例¶
test(fizzbuzz): add failing test for multiples of 15
feat(fizzbuzz): implement generateList for 1 to n
refactor(fizzbuzz): simplify rule matching order
docs(scala): add chapter about sbt and scalafmt
chore(ci): add scala-ci workflow for pull requests
4.4 ブランチ戦略¶
Git Flow の基本概念¶
Git Flow では、主に次のブランチを使います。
main: リリース済みの安定コードdevelop: 開発統合ブランチfeature/*: 機能開発ブランチrelease/*: リリース準備ブランチhotfix/*: 緊急修正ブランチ
学習用プロジェクトでは、まず main と feature/* の運用から始めると実践しやすいです。
feature ブランチの作成と運用¶
git switch main
git pull origin main
git switch -c feature/scala-chapter-04
運用ポイントは次の通りです。
- 1 ブランチ 1 テーマに絞ります。
- Red / Green / Refactor の区切りで小さくコミットします。
- 完了後に Pull Request を作成し、レビュー後に
mainへマージします。
4.5 まとめ¶
この章では、Scala の TDD 開発を支える版管理の基礎を整理しました。
- Git の基本操作で変更履歴を安全に管理する
.gitignoreで不要ファイルを除外する- Conventional Commits で履歴を読みやすくする
featureブランチ運用で変更を分離する
次章では、sbt を中心にパッケージ管理と静的解析を整備します。