Conventional Commitsとは何かについて解説します。
モグモグさん
こちらのドキュメントを補足しているものなので、ドキュメントを参考にしてください。
- Conventional Commitsについて理解できる
- Conventional Commitsを使えるようになる
Conventional Commitsとは
コミットメッセージの軽量規約
コミットメッセージを読みやすくするための仕様で、細かくルールが定められています。
Prefixとは、単語の先頭に付加して特定の意味を付け加えるもののことです。
例えば下記のようなルールが定められています。
- Prefixのルール
- タイトルのルール
- メッセージ本文のルール
- フッターのルール
具体的な例
具体的なコミットメッセージを用いて解説します。
feat: ユーザーフォロー機能の追加
タイムラインのフォロー機能とは異なるユーザーのフォロー機能を追加。
タイムラインとは別のロジックのため別のファイルに分けている。
See-also: https://hogehoge.com/abc
Ref: #abc
Prefixとタイトル
feat: ユーザーフォロー機能の追加
Prefixとタイトルに関する主なルール(一部)はこちらです。
- featやfixなど特定のPrefixから始める
- 特定の文字列の後は:とspaceが必要
- feat!のように!をつけることでBREAKING CHANGEを意味
- タイトルは短い要約を記載
本文
タイムラインのフォロー機能とは異なるユーザーのフォロー機能を追加。
タイムラインとは別のロジックのため別のファイルに分けている。
本文に関する主なルール(一部)はこちらです。
- タイトルから1行改行してから始める
- 本文自体は改行等自由に記載可能
フッター
See-also: https://hogehoge.com/abc
Ref: #abc
フッターに関する主なルール(一部)はこちらです。
- 本文から1行改行してから始める
- フッターのトークンはspaceの代わりに–が必要
モグモグさん
より詳細な仕様はドキュメントをご確認ください。
Conventional Commitsのメリット
Conventional Commitsのメリットについて解説していきます。
開発者側がコミットを理解しやすい
そもそもコミットメッセージは、変更点を伝えるためにあるので、ルールを用いて標準化することは大きなメリットです。
ルールがなければ、メッセージから変更点がわかりやすい人がいたり雑でわかりにくい人がいたりとなかなか大変になります。
フォーマットが統一されていることでPRのレビューであったり、過去の変更点を確認する際に理解の助けになります。
モグモグさん
過去の変更は結構忘れがち…汗
実際に個人やチームで導入する際には、commitlintなどを使うとルールの適用をシステム的に行うことができるのでおすすめです。
システムが理解しやすい
フォーマットが統一化されていることでシステムも理解しやすいです。
つまり、コミットメッセージを用いた自動化ができます。
例えば、main(master)ブランチにマージしたときに、自動でCHANGELOGを作成したりすることが容易になります。
モグモグさん
よく使われるPrefix一覧
Conventional Commitsでは、featやfix以外も使うことができます。
よく使われるPrefix一覧を紹介します。
モグモグさん
もともとはAngularの規約に影響されてできたものなので、それがベースにあります。
Prefix | 意味 |
---|---|
feat | 新しい機能 |
fix | バグの修正 |
docs | ドキュメント変更 |
refactor | コード改善 |
test | テスト追加や変更 |
style | スタイルの追加や変更 |
perf | パフォーマンス改善 |
chore | ビルドやツール変更 |
まとめ
Conventional Commitsとは何かについて解説しました。
- Conventional Commitsはコミットメッセージの軽量規約(ルール)のこと
- コミットメッセージのタイトルや本文にルールも付与
- 開発者側: 変更点を理解しやすい
- システム側: 自動化が容易