サイト名変更・お引越しのお知らせ

Conventional Commitsとは何かを解説

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では、featfix以外も使うことができます。

よく使われるPrefix一覧を紹介します。

モグモグさん

もともとはAngularの規約に影響されてできたものなので、それがベースにあります。

Prefix意味
feat新しい機能
fixバグの修正
docsドキュメント変更
refactorコード改善
testテスト追加や変更
styleスタイルの追加や変更
perfパフォーマンス改善
choreビルドやツール変更

まとめ

Conventional Commitsとは何かについて解説しました。

Conventional Commitsのまとめ
  • Conventional Commitsはコミットメッセージの軽量規約(ルール)のこと
  • コミットメッセージのタイトルや本文にルールも付与
  • 開発者側: 変更点を理解しやすい
  • システム側: 自動化が容易