間違ったコミットメッセージが生む現場のカオス|チーム開発で差がつく書き方

間違ったコミットメッセージが生む現場のカオス|チーム開発で差がつく書き方
C
クリオ
Web制作ディレクター / フロントエンジニア

こんにちは!

今日は「間違ったコミットメッセージが生む現場のカオス」について解説します。

僕が経験した「コミットメッセージ地獄」

正直に告白します。
僕も新人時代、Gitのコミットメッセージをめっちゃテキトーに書いてました。
「update」「fix」「changes」…そんな雑なメッセージばっかり。
後で過去のコードを遡ろうとしたとき、「あ、このバグ修正いつやった?」「このコードなんで追加した?」って完全に迷子になるんですよ。

数年前、プロジェクト途中でバグが発見されて、原因を探るために過去のコミットを調べることになったんです。
ところがメッセージが「fixed」「update」「changes」ばっかりで、実際に何が変わったのか全然分からない。
結局コードの差分を1つ1つ手作業で確認する羽目になって、めっちゃ時間かかったんですよ。
その時に気づきました。
「あ、コミットメッセージってめっちゃ大事やな」って。

現場でよく見るのは、このテの困った状況です:

  • 「update」だけのメッセージで、何を更新したのか全然分からない
  • 複数の修正を1つのコミットに詰め込んで、メッセージが曖昧
  • 日本語と英語がごちゃ混ぜで、チーム内で統一がない
  • 絵文字だけとか、意味不明な省略語を使ってる

実務で使える効果的なメッセージの書き方

では、どうやって書くといいのか。
僕が現場で実際に使ってる方法を紹介します。

基本は「1行目に変更内容を簡潔に、2行目以降に詳細を書く」です。
業界標準ともいえる「Conventional Commits」という形式があるんですが、それに従うのがいいですよ。

形式:
type(scope): subject
body
footer

具体例を見てみましょう。

良い例:

feat(header): ナビゲーションメニューにドロップダウン機能を追加
ユーザーからの要望で、カテゴリ一覧をサブメニュー形式で表示できるようにした。
hover時にアニメーション付きで展開される。
Closes #123

悪い例:

update
fixed stuff

見比べると一目瞭然ですよね。
最初の良い例なら、後で見返した時に「あ、このコミットはヘッダーのナビゲーションドロップダウン追加の時のやつだ」ってすぐ分かります。

実践的なポイント:

  • typefeat(機能追加)、fix(バグ修正)、docs(ドキュメント)、style(コード整形)などに統一する
  • scopeは変更した機能やファイルの範囲を括弧内に書く
  • 1行目は命令形で書く(「〜した」より「〜する」)
  • body部分は「なぜそうしたのか」を説明する
  • チケット番号があれば footer に記載する

よくある勘違いと対策

勘違い1:「短いメッセージで十分」

最初は戸惑うかもしれませんが、実は後々めっちゃ役に立つんです。
チーム開発では、他の人があなたのコードを読むこともあります。
「なんでこんなコード書いてるの?」という疑問は、コミットメッセージで解決できるんですよ。

勘違い2:「日本語と英語を混ぜていいやん」

これはほんま避けた方がいいです。
チーム内で統一しましょう。
グローバルなプロジェクトなら英語、社内プロジェクトなら日本語など、最初に決めておくといいですよ。

勘違い3:「細かい修正は1つのコミットに詰め込んでいい」

これも現場でよく見るんですが、避けた方がいいです。
1つのコミットは「1つの論理的な変更」を表すようにするのが理想的。
後で何かあった時に git revert で1つのコミットを戻したい時、他の変更まで一緒に消えてしまいますからね。

まとめ

コミットメッセージは、一見地味な作業に思えるかもしれません。
でも、チーム開発では本当に大切です。
3ヶ月後、1年後にあなたのコードを見返す時、そのメッセージが命綱になるんです。

最初は「めんどくさいな」って思うかもしれませんが、やってみると習慣になります。
そして何より、チームの信頼が違います。
「あ、このメッセージなら絶対分かりやすいな」って安心されるようになりますよ。

ぜひ今日から実践してみてください。

Web制作で困ったことがあったら、またこのブログを覗いてくださいね!

― クリオ