Avoid Git Hooks Tools
コンテキスト
Section titled “コンテキスト”モダンな開発プロジェクトにおいて、コード品質を保つためにHuskyやLefthookなどのGit Hooksツールが広く使用されている。これらのツールは、コミット前にリンターやテストを自動実行することで、不完全なコードがリポジトリに入ることを防ぐ目的で導入される。
しかし、開発フローの多様化により、WIP(Work in Progress)ブランチでの作業や実験的なコミットが頻繁に行われるようになった。Git Hooksによる厳格なチェックは、これらの柔軟な開発スタイルを阻害し、開発者の生産性を低下させる場面が増加している。
また、CI/CDパイプラインが十分に整備された環境では、プルリクエスト時の自動チェックがGit Hooksの役割を代替できるため、ローカル環境でのGit Hooksの必要性が問われている。
HuskyやLefthookなどのGit Hooksツールを使用しない。代わりにCI/CDパイプラインでコード品質チェックを実行する。
選択肢1: Git Hooksツールを使用しない
Section titled “選択肢1: Git Hooksツールを使用しない”-
利点:
- WIPコミットや実験的なコミットが妨げられない
- コミット時間の短縮による開発効率の向上
- ブランチを頻繁に切り替える際のストレス軽減
- 大きなファイル変更時でもコミットが遅延しない
- 開発者が自身のペースで作業を進められる
- CI/CDパイプライン整備時の冗長性排除
-
欠点:
- ローカル環境での即座なフィードバックが得られない
- 品質の低いコードがリポジトリに一時的に存在する可能性
- プルリクエスト作成時まで問題が発見されない
- チーム内でのコード品質に対する意識統一が必要
選択肢2: Huskyを使用
Section titled “選択肢2: Huskyを使用”-
利点:
- コミット前の自動チェックによる品質保証
- 早期のエラー発見とフィードバック
- チーム全体での一貫したコード品質
- 設定の標準化とシンプルさ
-
欠点:
- WIPコミット時の開発フローの阻害
- コミット時間の大幅な増加
- 大規模プロジェクトでのパフォーマンス問題
- 開発者体験の悪化
- スキップオプション使用時の一貫性の欠如
選択肢3: Lefthookを使用
Section titled “選択肢3: Lefthookを使用”-
利点:
- Huskyより高速な実行性能
- 並列実行によるチェック時間の短縮
- 豊富な設定オプション
- 複数言語プロジェクトへの対応
-
欠点:
- 根本的なコミット阻害問題は解決されない
- 設定の複雑性
- WIP作業フローとの相性の悪さ
- チェック失敗時の開発フロー断絶
この決定による影響を記述する。
-
ポジティブな影響:
- 開発者の作業効率向上とストレス軽減
- WIPブランチでの自由な実験と反復開発の促進
- コミット頻度の増加による変更履歴の細分化
- 大規模な変更作業時の中間保存が容易
- CI/CDパイプラインへの一元化による管理コスト削減
-
ネガティブな影響:
- ローカル開発時の品質チェック機会の減少
- プルリクエスト作成時までエラーが未発見
- 開発者個人のコード品質管理への依存度増加
-
リスク:
- CI/CDパイプラインが適切に設定されていない場合の品質低下
- チーム内でのコード品質に対する意識格差
- プルリクエストレビュー時の負荷増加
- 品質問題の発見タイミングの遅延