概要
prek は、 pre-commit の高速・依存レスな代替ツール。 Rust製で、 単一バイナリ ・多言語対応・ディスク効率化を実現。 CPython や FastAPI などの有名プロジェクトでも導入実績。 pre-commit 設定やフックと高い互換性を維持。 多彩なインストール方法と、 monorepo や各種言語ツールチェーンへの対応が特徴。
prekとは何か
- pre-commit の再設計版としてRustで開発されたフック実行フレームワーク
- PythonやNode.jsなど、多言語で書かれたフックの実行・依存管理を自動化
- 高速動作 ・ 依存レス ・ ディスク効率化 を重視した設計
- pre-commit の設定・フックと互換性を持つドロップイン代替
- monorepo(ワークスペースモード) 対応
- uv との連携によるPython仮想環境・依存管理
- Python, Node.js, Bun, Go, Rust, Rubyなどのツールチェーンをフック間で共有
- 一部フックはRustネイティブ実装で更なる高速化
主な特徴
- 単一バイナリ で動作、Pythonや他のランタイム不要
- pre-commit よりも数倍高速、ディスク消費も約半分
- オフライン・即時利用 可能なbuiltinフックサポート
- フック・リポジトリの並列クローン・インストール・実行 で全体の効率向上
- Python仮想環境 作成・依存インストールの高速化(uv利用)
- 直感的なコマンド拡張 (--directory, --last-commit, 複数フック同時実行など)
- フック一覧表示 や 自動アップデート 機能
- シェル補完 によるコマンド入力支援
- サプライチェーン攻撃対策 (auto-update時の--cooldown-days等)
インストール方法一覧
-
スタンドアロンインストーラー (Linux/macOS/Windows対応)
- curl/powershellによるワンライナー
-
PyPI (pip, uv, pipxでインストール可能)
-
Homebrew
-
mise
-
cargo-binstall (Rustユーザー向け)
-
Cargo (ソースからビルド、Rust 1.89+必須)
-
npmjs (Node.jsパッケージとして、npm/pnpm/bun対応)
-
Nix/Nixpkgs
-
conda-forge
-
Scoop (Windows用)
-
MacPorts
-
GitHub Releases (バイナリ直接ダウンロード)
-
GitHub Actions (CI/CD統合用)
- 例: j178/prek-action, taiki-e/install-action
導入・使い方
- 既存プロジェクトで pre-commit からの移行はクイックスタートガイド参照
- 新規導入時は設定ファイル作成、フック実行、git hookインストールの流れ
- prek run コマンドで柔軟なフック実行が可能
他ツールとの違い・優位点
- pre-commit よりも高速・効率的な環境構築とフック実行
- フックごとの環境を共有 することでディスク消費・インストール時間を削減
- 並列処理 による全体パフォーマンス向上
- uv による高速なPython仮想環境管理
- Rustネイティブフック で更なる高速化
- repo: builtin によるオフラインフック対応
- monorepo でのサブプロジェクト個別設定サポート
- 使いやすさ向上 のためのコマンド・補完機能・一覧表示
導入実績・利用プロジェクト
- CPython
- Apache Airflow
- FastAPI
- Typer
- Ruff
- OpenClaw
- Home Assistant
- OpenLineage
- Authlib
- Django Project
- Requests-Cache
- python-attrs
- Apache Iceberg
- Lucene
- msgspec
- humanize
- MoonshotAI/kimi-cli
- simple-icons
- ast-grep
- commitizen
- cocoindex
- cachix/devenv など
謝辞
- pre-commit のオリジナル開発者・コントリビューターへの感謝
- Astralチーム (特にuvプロジェクト)からの多大な技術的学び
- Rustでの効率的・イディオマティックな実装手法の参考
prek は、次世代のフック実行基盤として注目されており、今後もさらなる対応言語や機能拡張が期待されるツール。 pre-commit ユーザーや高速・効率化を求める開発現場におすすめ。