【コンベンショナルコミッツ】

Conventional Commits とは?

💡 コミットメッセージに型を与えて、履歴を会話できるドキュメントに変える
📌 このページのポイント
Conventional Commits の形式 feat (auth) : Googleログインを追加 タイプ 変更の種類 スコープ 変更箇所(省略可) 概要 変更の説明 主なタイプ一覧 feat fix docs refactor chore test feat → マイナーバージョンアップ fix → パッチバージョンアップ BREAKING CHANGE → メジャーバージョンアップ(自動判定)
タイプで変更の種類を明示し、セマンティックバージョンやCHANGELOGの自動生成に活用する
ひよこ ひよこ

コミットメッセージって「修正した」とか「追加した」って書けばよくないの?

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

それでも動くけど、後で「このコミットは何を直したの?」ってなったとき困るんだよ。Conventional Commitsはメッセージの形式を決めることで、ツールが自動で変更履歴を作れるようにするんだ

ひよこ ひよこ

どんな形式なの?

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

「feat: ログイン機能を追加」「fix: パスワードバリデーションを修正」みたいに、先頭に種類を書くんだよ。featは新機能、fixはバグ修正、docsはドキュメント更新といった意味があるんだ

ひよこ ひよこ

種類を先に書くだけで自動化できるの?

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

そう!たとえば「feat:」があればマイナーバージョンアップ、「fix:」ならパッチバージョンアップ、「BREAKING CHANGE:」があればメジャーバージョンアップって自動判断できるんだ。セマンティックバージョニングと相性抜群だよ

ひよこ ひよこ

CHANGELOGも自動で作れるの?

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

standard-versionやrelease-itといったツールを使えば、コミット履歴から「## Features」「## Bug Fixes」と整理されたCHANGELOGを自動生成できるよ。リリース作業がぐっと楽になるんだ

ひよこ ひよこ

チームで使うときに大変じゃないの?

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

commitlintというツールでコミット前にチェックできるから、慣れればそんなに大変じゃないよ。最初は窮屈に感じるかもしれないけど、半年後の自分がコミット履歴を見たとき、絶対に感謝するんだよね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Conventional Commits」って出てきたら「コミットメッセージの書き方ルールで自動化に使う規約」と思えればだいたいOK!
📖 おまけ:英語の意味
「Conventional Commits」 = 慣例的なコミット
💬 「Conventional(慣例・規約通りの)」なコミットメッセージにしようという仕様だよ。Angular.jsのコミット規約をベースに2019年に標準化されたんだ
← 用語集にもどる