pre-commit 導入メモ#
本記事では、Git コミット前にコードやドキュメントの整形・チェックを自動で行うツール pre-commit について、導入方法と活用を整理します
はじめに:pre-commit とは#
pre-commit は、Git の「コミット前フック」を簡単に管理・運用するための Python 製ツールです。以下のような作業を自動化できます:
ファイル末尾の改行チェック
Python コードの整形(Black)
Markdown や reStructuredText の文法チェック
YAML / JSON / TOML の構文検査
セキュリティ的に危険なコードの検出(Bandit など)
インストールと初期設定#
まずは pre-commit をインストールします。仮想環境でもシステム全体でも OK です。
pip install pre-commit
もしくは pipx 派の方は:
pipx install pre-commit
次に、プロジェクトのルートに .pre-commit-config.yaml
を用意します。
基本的な例:
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.5.0
hooks:
- id: end-of-file-fixer
- id: trailing-whitespace
- repo: https://github.com/psf/black
rev: 24.3.0
hooks:
- id: black
- repo: https://github.com/pycqa/flake8
rev: 6.1.0
hooks:
- id: flake8
フックのインストール:
pre-commit install
これで、次回の git commit
時に自動的にチェックが走るようになります。
バージョン管理と自動更新#
すべてのフックにはバージョン(rev)が指定されており、次のコマンドで一括更新できます:
pre-commit autoupdate
pre-commit によるドキュメントチェック#
Markdown や reStructuredText のような軽量マークアップも pre-commit によって整備できます。
doctoc
:Markdown の目次自動生成mdformat
:Markdown の自動整形(Python製)doc8
:reStructuredText のルールチェックrstcheck
:Sphinx 向けの構文検証
pre-commit で自動目次生成や API ドキュメント整形を行えば、ドキュメントの陳腐化を防止 しつつ、差分として明示できる のが大きな利点です。
全てのファイルをチェックしたい場合は以下コマンドを使います:
pre-commit run --all-files
pre-commitは、自動でフォーマット修正などを行うため意図せずファイル変更してしまう場合があります。その時は、以下のコマンドで直近コミットまで戻せます:
git restore --source=HEAD --staged --worktree .
pre-commit の徹底#
コミットのたびにフックが実行されることで、次のような効果があります:
品質維持が“自動”で担保される
Lint/整形のルール統一が強制される
CI で気づく前に、ローカルで問題を検出できる
チームで運用する場合には、README や CONTRIBUTING に以下を明記することで定着が進みます:
pre-commit install
まとめ#
pre-commitに関する導入の基本を整理しました。 今後、網羅的な設定や、CIへの連携なども検討していきたいと思います。
記事情報
- 投稿日:
2025-05-16
- 著者:
mtakagishi