Commitizenによる統一されたGitコミットメッセージの管理

チーム開発において、一貫性のあるコミットメッセージは、プロジェクトの履歴を理解しやすくし、変更履歴の自動生成やCI/CDのトリガーとしても役立ちます。Commitizen は、Gitのコミットメッセージを効果的に統一するためのツールで、対話的なプロンプトを通じてコミットメッセージの作成を支援します。

Commitizenとは

Commitizen は、コミットメッセージのフォーマットを強制し、開発者が一貫性のあるメッセージを作成できるようにするCLIツールです。対話形式でコミットメッセージの各要素(タイプ、スコープ、説明など)を入力できるため、手動でフォーマットを覚える必要がありません。

導入手順

1. Commitizenのインストール

まず、Commitizen CLIをグローバルにインストールします。

npm install -g commitizen

これにより、git cz コマンドが利用可能になります。

2. コミットメッセージ規約アダプターのインストール

Commitizenを使用する際、どのようなフォーマットでコミットメッセージを記述するかを定義する「アダプター」が必要です。ここでは、Conventional Commits 規約に準拠したコミットメッセージを作成できる cz-conventional-changelog を使用します。

npm install -g cz-conventional-changelog

次に、Commitizenがこのアダプターを使用するように設定ファイルを作成します。

# .czrc ファイルを作成し、アダプターのパスを記述
echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc

注意: この .czrc ファイルはユーザーのホームディレクトリに作成されます。プロジェクトごとに異なるアダプターを使用したい場合は、プロジェクトのルートディレクトリに package.json を作成し、config.commitizen.path を設定する方法もあります。

使用方法

通常の git commit コマンドの代わりに、git cz コマンドを使用してコミットメッセージを作成します。

git cz

このコマンドを実行すると、対話型のプロンプトが表示され、コミットメッセージの各部分を選択・入力することができます。

cz-cli@4.3.0, cz-conventional-changelog@3.3.0

? Select the type of change that you're committing: (Use arrow keys)
❯ feat:     A new feature
  fix:      A bug fix
  docs:     Documentation only changes
  style:    Changes that do not affect the meaning of the code (white-space,
formatting, missing semi-colons, etc)
  refactor: A code change that neither fixes a bug nor adds a feature
  perf:     A code change that improves performance

プロンプトの指示に従って、コミットのタイプ(feat, fix, docs など)、スコープ、短い説明、詳細な説明などを入力していくことで、Conventional Commits規約に沿ったコミットメッセージが自動的に生成されます。

Conventional Commitsの主なタイプ

  • feat: 新機能の追加
  • fix: バグ修正
  • docs: ドキュメントのみの変更
  • style: コードのスタイルに関する変更(フォーマット、セミコロンなど)
  • refactor: リファクタリング(バグ修正でも新機能でもないコード変更)
  • perf: パフォーマンス改善
  • test: テストコードの追加や修正
  • build: ビルドシステムや外部依存に関する変更
  • ci: CI/CDに関する変更
  • chore: その他の雑多な変更(ビルドプロセスや補助ツールなど)
  • revert: 以前のコミットの取り消し

Commitizenを導入することで、チーム全体でコミットメッセージの品質を向上させ、プロジェクトの管理をより効率的に行うことができます。