Conventional Commit とは?
Conventional commit とは、type プレフィックスと説明のような構造化されたフォーマットに従ったメッセージを持つコミットのことで、ツールも人間もその意図を解析できます。
Conventional Commits は、一貫性のある機械可読な方法でコミットメッセージを書くための軽量な規約です。各メッセージを feat や fix のような type で始めることで、チームは履歴を追いやすくし、さらに重要なことに、ツールがバージョニングや changelog を自動化できるようにします。
フォーマット
Conventional commit のメッセージは、type、括弧内の任意の scope、コロン、そして短い説明で始まります。一般的な type には、機能を表す feat、バグ修正を表す fix、docs、refactor、test、chore があります。任意の本文とフッターで詳細を追加したり、breaking change を示したりできます。
Conventional commit のメッセージ
この構造は、習慣になってしまえば簡単に書けます。
git commit -m "feat(auth): add password reset flow"
git commit -m "fix(api): handle empty response body"構造が役立つ理由
一貫したフォーマットは履歴を一目で読めるようにし、ツールがそれを解釈できるようにします。type は各変更の性質を伝え、scope は関連する作業をまとめ、マークされた breaking change は major バージョンの引き上げを示します。人間にとっても利点があります。ログが明確で分類された記録として読めるのです。
CI/CD における conventional commits
自動化されたリリースツールは conventional commit のメッセージを読み取り、次のバージョンを決定して changelog を生成します。fix は patch の引き上げ、feat は minor の引き上げ、breaking change は major の引き上げを生み出し、いずれも手動でのバージョン編集は不要です。これによりコミットの規律が完全に自動化されたリリースパイプラインへと変わります。
規約の導入
- 各メッセージを
feat、fix、docsのような type で始めます。 - 役立つ場合は、変更を領域ごとにまとめる scope を追加します。
- ツールが major バージョンを引き上げられるよう breaking change をマークします。
- リリースツールと組み合わせて履歴からバージョニングを自動化します。
重要なポイント
- Conventional commit は構造化された解析可能なメッセージフォーマットに従います。
- feat や fix のような type プレフィックスは変更の性質を伝えます。
- リリースツールはそれらを読み取ってバージョニングと changelog を自動化します。