Git Commit Template & Conventional Commits: Gitの履歴を「ゴミの山」にしないために

Git tutorial - IT technology blog
Git tutorial - IT technology blog

お手軽3ステップ:完璧なコミットテンプレートを導入する

急いでプロジェクトをプロフェッショナルに整えたい場合は、以下のテンプレートを60秒以内に導入しましょう:

ステップ 1: ユーザーのホームディレクトリ(またはプロジェクト直下)にテンプレートファイルを作成します:

touch ~/.gitmessage

ステップ 2: 以下の標準化された内容を .gitmessage ファイルに貼り付けます:

<type>(<scope>): <subject>

# --- コミット種別の一覧 ---
#   feat:     新機能
#   fix:      バグ修正
#   docs:     ドキュメントの更新
#   style:    コードスタイルの変更(ロジックに影響なし)
#   refactor: リファクタリング(バグ修正や機能追加を含まないコード整理)
#   perf:     パフォーマンス改善
#   test:     テストの追加・修正
#   chore:    ビルドツールや依存関係の更新など
# --------------------------
# <scope>: 影響範囲(例: auth, api, ui...)
# <subject>: 簡潔な説明(50文字以内)

ステップ 3: システム全体にテンプレートを適用します:

git config --global commit.template ~/.gitmessage

これからは、git commit を実行するたびに、エディタにガイドが表示されるようになります。何を書くべきか迷って手が止まることはもうありません。

なぜ「いい加減なコミット」は自分を苦しめるのか?

最後に git log を実行したとき、「fixed」、「update」、「asdfghj」といった無意味なメッセージが並んでいたことはありませんか?それはまさに惨事です。

エンジニアになりたての頃、私はある計算関数の変更理由を特定するためだけに4時間を費やしたことがあります。理由は、コミットメッセージに「fix」と一言書かれていただけだったからです。1,000ファイル以上あるプロジェクトで、そのような「匿名の」コミットを数千件も読み返すのは、暗闇の中で針を探すような作業でした。

チーム開発において、コミットメッセージの手抜きは同僚をイライラさせるだけでなく、自動化の可能性を潰してしまいます。機械なら3秒で終わるChangelogの作成に、午後一杯を費やすことになりかねません。

Conventional Commits:プロフェッショナルのための黄金律

各自が自由に書くのではなく、コミュニティによって統一された規格が Conventional Commits です。これは、コンピュータがコードの履歴を理解し、分類できるようにするための科学的な命名規則です。

標準的なコミットは以下のようになります:

feat(auth): Googleログイン機能を追加

- Google OAuth2 SDKを統合
- データベースのusersテーブルを更新

Fixes: #123

覚えておくべき主な「type(種別)」:

  • feat: 新機能の追加(例:チェックアウトページの作成)。
  • fix: バグ修正(例:モバイル表示での価格表示の不具合修正)。
  • refactor: コードの整理。機能自体は変更しない。
  • docs: README、コメント、またはAPIドキュメントの修正。
  • chore: ReactライブラリのアップグレードやDocker設定など、雑多な作業。

この分類方法は非常に強力です。簡単な grep コマンド一つで、先月の新機能だけを素早く抽出することができます。

アップグレード:ツールにコミットメッセージを書かせる

type を覚えるのが面倒なら、Commitizen を使いましょう。自分で入力する代わりに、対話形式の質問に答えるだけで正確なメッセージを生成できます。

Commitizenのクイックインストール:

npm install -g commitizen cz-conventional-changelog
echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc

これで、git cz と入力するだけで対話型インターフェースが表示され、変更の種類を選んでEnterを押すだけになります。

Changelogの自動生成:手間を省く究極の技

これが最も価値のある部分です。すべてのコミットが規約に従っていれば、コマンド一行でプロフェッショナルな CHANGELOG.md ファイルを作成できます:

npx standard-version

このツールはGitの履歴を自動的に解析し、3つの処理を行います:バージョンの更新(例:1.0.1から1.1.0へ)、変更履歴のChangelogへの追記、そしてGitタグの作成です。もう二度と、手作業で変更ログを書き出す必要はありません。

現場からの教訓

この規約を10人のチームに導入した当初、多くの反対に遭いました。開発スピードが落ちるという不満です。しかし、運用開始から2ヶ月後、最も強く反対していたメンバーこそが、過去のバグを数秒で見つけられるようになったことに感謝していました。

ワークフローをよりスムーズにするためのヒント:

  • Git Hooksの活用: husky を導入して、規約に沿わないコミットをブロックしましょう。誤った形式でコミットしようとするとGitが拒否するため、強制的に修正を促すことができます。
  • Scopeの活用: feat(api)fix(ui) のように、影響を受けるモジュールを明記しましょう。これにより、コードレビュー担当者はどこを重点的にチェックすべきか即座に判断できます。
  • 素早い修正: 誤ってコミットしてしまった場合は、履歴を汚す前に git commit --amend を使ってメッセージを修正しましょう。

コミットメッセージの標準化は、単なる体裁の問題ではありません。それはプロフェッショナルなCI/CDシステムを構築し、付随作業から解放されるための基盤です。今日から始めましょう。クリーンなGit履歴こそが、責任ある開発者の証です!

Share: