【入門編】Gitのフック(Hooks)を使い倒せ!ローカルコミット時にテストを自動実行する方法 – バージョン管理・CI/CD活用バイブル

こんにちは。エンジニアリングの現場で「なぜかCIで落ちる」「フォーマットが汚くてレビューで指摘される」といった無駄な手戻りに時間を溶かしていませんか?

実は、「コミットする前の数秒」に投資するだけで、あなたの開発体験は劇的に変わります。

今日は、Gitの隠れた強力な機能「Git Hooks」、その中でも最も実用的な「pre-commit」を使い倒して、あなたのPCに「専属の厳格なレビュアー」を常駐させる方法を伝授します。

—

1. Git Hooksとは何か?「門番」を雇うということ

Gitには、特定の操作(コミットやプッシュなど)の直前・直後にスクリプトを走らせる機能があります。これがGit Hooksです。

pre-commitフックは、まさに「コミットボタンを押した直後、リポジトリに保存される前」に割り込んで、テストやフォーマットチェックを強制する門番です。

  • メリット: CIサーバーにコードが届く前にバグを発見できる。
  • 最大の恩恵: 「テストが通っていないコードをリポジトリに入れない」という規律が、強制的にチーム全員に浸透する。

—

2. 環境構築:最小構成で最大の効果を

Git Hooksを自分でゼロから書くのも勉強になりますが、現場では`pre-commit`というフレームワークを使うのが鉄則です。これを使えば、面倒なシェルスクリプト管理から解放されます。

ステップ1:インストール

Python環境があれば一撃です。(なければHomebrewなどでインストールしてください)

pip install pre-commit

ステップ2:設定ファイルの作成

プロジェクトのルートディレクトリに `.pre-commit-config.yaml` を作成します。これが「どのルールを適用するか」を定義する司令塔です。

.pre-commit-config.yaml
repos:

  • repo: https://github.com/pre-commit/pre-commit-hooks

rev: v4.4.0
hooks:
# 1. 余分なホワイトスペースを削除(綺麗なコードの基本)

  • id: trailing-whitespace

# 2. ファイル末尾に改行を強制(Unix標準)

  • id: end-of-file-fixer

# 3. JSONが壊れていないかチェック

  • id: check-json

# 4. YAMLの構文チェック

  • id: check-yaml
  • repo: https://github.com/psf/black

rev: 23.3.0
hooks:
# Pythonコードを自動フォーマット(これだけでレビューの指摘が減ります)

  • id: black

ステップ3:フックの有効化

最後に、以下のコマンドを一度だけ叩いてください。これで準備完了です。

pre-commit install

—

3. Hello World的な動作確認:実際に壊してみる

さて、魔法が正しく動くか確認しましょう。わざと「末尾に不要なスペースがあるファイル」を作ってみます。

1. `test.py` を作成し、わざと変なスペースを入れる。
2. `git add test.py` を実行。
3. `git commit -m “テストコミット”` を実行。

すると……コミットが止まります!

`pre-commit` が勝手にファイルを修正して「ファイルを修正したから、もう一回addしてね」と教えてくれます。これで、あなたは二度と「フォーマット違反」でレビューを落とされることはありません。

—

4. 伝説のエンジニアからのアドバイス:運用のコツ

ここからが現場の知見です。導入しただけで満足してはいけません。

  • 「速さ」を優先する: フックが重すぎると開発者はイライラして無効化します。最初は「フォーマット」や「構文チェック」などの軽量なものから始め、テストが重い場合はCI側に任せましょう。
  • チームで共有する: `.pre-commit-config.yaml` は必ずリポジトリに含めてコミットしてください。チーム全員が同じルールで開発できる、これが最強の品質管理です。
  • どうしても飛ばしたい時: `git commit –no-verify` を使えばフックをスキップできます。どうしても緊急でコミットしたい時だけに使いましょう(多用厳禁です)。

まとめ:今日から「品質」に妥協しないエンジニアに

Git Hooksは、あなたのコーディング習慣を強制的にレベルアップさせてくれる強力なツールです。「コードの品質は、コミットする瞬間に決まる」。この意識を持つだけで、あなたは確実にチームの中で一目置かれる存在になります。

まずは今日、あなたのプロジェクトに `.pre-commit-config.yaml` を置いてみてください。その瞬間に、あなたの開発環境は「プロフェッショナルな現場」へと進化しますよ。

何か詰まったら、いつでも聞いてくださいね。応援しています!

タイトルとURLをコピーしました