【ITニュース解説】How to Use Semantic Versioning and Conventional Commits With Husky
2025年09月08日に「Dev.to」が公開したITニュース「How to Use Semantic Versioning and Conventional Commits With Husky」について初心者にもわかりやすいように丁寧に解説しています。
ITニュース概要
HuskyとCommitlintを使い、Gitのコミットメッセージを標準化する方法を紹介。Semantic VersioningとConventional Commitsを強制することで、チーム開発におけるコミット規約の統一を支援する。Node.jsプロジェクトへの導入手順として、開発用依存関係の追加、設定ファイルの編集などを解説。
ITニュース解説
この記事は、チーム開発におけるGitのコミットメッセージの標準化と、それによってもたらされるメリットについて解説している。特に、Semantic Versioning(セマンティックバージョニング)とConventional Commits(慣習的コミット)という概念を導入し、Huskyというツールを使ってGitフックを設定することで、コミットメッセージの形式を強制する方法を紹介している。
Semantic Versioningとは、ソフトウェアのバージョン番号の付け方に関するルールだ。major.minor.patchという形式でバージョンを表し、それぞれの数字が意味を持つ。
- Major(メジャー): 互換性のない変更があった場合に更新される。
- Minor(マイナー): 後方互換性のある新機能が追加された場合に更新される。
- Patch(パッチ): バグ修正など、後方互換性のある修正が行われた場合に更新される。
このルールに従うことで、ソフトウェアの利用者は、バージョン番号を見るだけで変更内容のおおよその影響範囲を把握できる。
Conventional Commitsは、コミットメッセージの書き方に関するルールだ。type(scope): descriptionという形式でメッセージを記述し、typeにはfeat(新機能)、fix(バグ修正)、docs(ドキュメントの変更)など、コミットの種類を示すキーワードを使用する。scopeは変更が及ぶ範囲を示す(例:特定のコンポーネント名)。descriptionは変更内容の簡単な説明だ。
このルールに従うことで、コミットログが整理され、変更履歴が追いやすくなる。また、自動化ツールを使ってリリースノートを生成したり、バージョン番号を自動的に更新したりすることも可能になる。
記事では、これらの概念をチーム開発に取り入れるために、Huskyというツールを利用している。Huskyは、Gitフックと呼ばれる仕組みを利用して、特定のGitコマンド(コミットなど)の実行前後にスクリプトを実行できるツールだ。
この記事では、Huskyを使って、コミットメッセージがConventional Commitsのルールに従っているかをチェックするスクリプトを実行するように設定している。これにより、開発者はルールに違反したコミットメッセージを誤って登録してしまうことを防ぐことができる。具体的には、commitlintというツールをHuskyと組み合わせて使用し、コミットメッセージのバリデーションを行っている。commitlintは、設定ファイルに基づいてコミットメッセージを検証し、ルールに違反している場合はコミットを拒否する。
記事では、以下の手順でHuskyとcommitlintを設定する方法を紹介している。
- 必要なパッケージをインストールする。
1npm i -D @commitlint/{cli,config-conventional} husky
- Huskyを初期化する。
1npx husky init
.husky/pre-commitを.husky/commit-msgにリネームし、コミットメッセージの検証スクリプトを.husky/commit-msgに書き込む。
1mv .husky/pre-commit .husky/commit-msg 2echo "npx --no -- commitlint --edit $1" > .husky/commit-msg
commitlintの設定ファイルcommitlint.config.tsを作成し、Conventional Commitsのルールを適用するように設定する。
1echo "export default { extends: ['@commitlint/config-conventional'] };" > commitlint.config.ts
これらの設定を行うことで、コミット時に自動的にコミットメッセージが検証され、Conventional Commitsのルールに従っていない場合はコミットが拒否されるようになる。
記事では、さらに、Jiraなどのチケット管理システムとの連携についても触れている。コミットメッセージにJiraのチケット番号を含めるようにルールを設定することで、変更内容と対応するチケットを紐付けることができ、開発の進捗管理が容易になる。
Semantic VersioningとConventional Commitsを導入し、Huskyなどのツールを使ってコミットメッセージを標準化することで、チーム開発におけるコミュニケーションコストを削減し、開発効率を向上させることができる。特に、新しいメンバーがチームに加わった場合、これらのルールが整備されていることで、スムーズに開発に参加できるようになるだろう。また、自動化ツールとの連携により、リリース作業やドキュメント生成の効率化も期待できる。
システムエンジニアを目指す初心者は、これらの概念を理解し、積極的に開発現場で活用することで、より高品質なソフトウェア開発に貢献できるようになるだろう。