自動生成されるPrefixが気になった件
Gitでは変更履歴をコミットという単位で記録し、併せてメッセージを残します。いわゆるコミットメッセージは、作業者にとって貴重な手がかりになり、変更の目的や経緯を知る、過去の内容を参照するなど、様々な用途があります。メッセージの書き方を工夫することは有意義であり、一般的な慣習や規約も存在します。先人たちの考えや提案はたびたび参考になります。
最近はCopilotや各種AIツールがコミットメッセージを自動生成してくれるようになりました。私自身も生成されたメッセージをそのまま使い(あまり意識することなく)コミットします。一方、人が手動でメッセージを書く機会もまだまだあります。
手動と自動のメッセージが混在する中、「そもそもどういうルールに基づいて各種AIは生成しているのか?」 を知りたくなりました。Git初学者の身でもあるため、改めてコミットメッセージ、特にPrefixについてChatGPTとともに学んだ際の記事です。
Conventional Commits について
さて、早速ChatGPTに相談したところ、参考の記事とともに「最近はConventional Commitsがかなり優勢」とのこと。
Conventional Commitsが初見のため、詳細を教えてもらいます。
- コミットメッセ―ジを標準化するための規約
- 自動化(CI/CD)を踏まえて人間と機械が読みやすくをコンセプトとしている
- 歴史的には10年以上前から発展してきたもの
- 2013~2014年
- GoogleのAngularチームが使い始める
- 2015~2017年
- JavaScript界隈のツールにて広まる
- 2017~2018年
- 汎用仕様として「Conventional Commits 1.0.0-beta」が公開される
- 2020年以降
- 自動化ツールの普及とともにAIのコミットメッセージ生成でも広く利用される
- 2013~2014年
発端を深堀りすると、バージョン番号に意味を持たせる 「Semantic Versioningの自動化」 に行き着きます。例えば 3.2.1 のようなバージョン番号は
- 3=MAJOR(メジャー):後方互換性を崩す変更、既存ユーザへに影響する可能性あり
- 2=MINOR(マイナー):後方互換性を保った機能追加、既存ユーザに影響なし
- 1=PATCH(パッチ):バグ修正、ユーザから見て変化なし
という構成と意味を持ちます。
変更内容(コミット内容)を自動的に判定できれば、バージョン番号を自動的に作れそうです。そのため、コミットメッセージに一定のルールを設けてみた結果、いい感じに運用でき、普及されたようです。
私のPrefix
現時点では次の4種類を使っていこうかなーと思います。
| prefix | 用途 |
|---|---|
| docs | ドキュメントの更新 |
| fix | 修正 |
| ci | GitHub ActionsやCI設定 |
| feat | 新しいコンテンツや機能の追加 |
私の場合、
- Gitの勉強用ノートをmarkdown形式でまとめており、それらをリポジトリにpush
- html生成ツールの
MkDocsを用いてサイト化する方針
という用途です。
学習用ノートのため、大半がdocsです。一方で、MkDocsの設定やサイトを充実させることを見込み、feat ciを備えておきました。個人用途であり、さらに記憶にとどめやすいようにprefixは最小数が好ましいという考えもあります。
まとめ
-
Conventional Commitsというコミットメッセージの規約があり、AIの自動生成においても広く利用されている - 個人のドキュメント作成では
docsfixcifeatの4種類あたりで十分そう - 業務でコミットルールを検討する際も
Conventional Commitsが出発点として有望