GitHub Copilot Hooks を使えば、コード提案の前後に独自スクリプトを自動実行できます。この記事では、設定手順・活用事例・よくある失敗とその対処法を具体的に解説します。読み終えたあと、すぐに自分の開発環境へ導入できる内容になっています。


GitHub Copilot Hooksとは何か

GitHub Copilot Hooks とは、GitHub Copilot がコード提案・補完を行うタイミングや、コードをエディタに適用する前後に、任意のシェルスクリプトやコマンドを自動実行できる仕組みです。

チームのコーディング規約を自動で強制したり、セキュリティスキャンをコミット前に走らせたりといった用途に使えます。個人開発者からエンタープライズチームまで、コード品質を一定に保ちたいすべての開発者にとって実用性の高い機能です。

Git フックと混同されがちですが、GitHub Copilot Hooks は Copilot の動作に直接介入できる点が異なります。Copilot の提案を受け入れた瞬間にリンターが走る、という体験は一度試すと手放せなくなります。


GitHub Copilot Hooksに必要なツールと選び方

Hooks を活用するには、GitHub Copilot 本体に加えていくつかの補助ツールが必要です。用途別に選ぶのが正解です。

ツール主な用途難易度向いているチーム
Huskygit フック管理の定番★☆☆Node.js プロジェクト全般
pre-commitPython/多言語対応フックマネージャー★★☆Python・多言語混在プロジェクト
lefthook高速・並列実行対応フック管理★★☆大規模チーム・CI連携重視
GitHub ActionsCI/CD パイプラインとの統合★★★デプロイ前の品質ゲート設定

Husky が最もおすすめです。 Node.js 環境であれば設定が最も簡単で、ドキュメントも充実しています。Python プロジェクトなら pre-commit 一択と考えてください。


GitHub Copilot Hooksの手順

最初は何から始めればいいか分からない人がほとんどです。ここでは Husky を使ったもっとも基本的な設定から解説します。

Step 1:前提環境の確認

以下がすべて揃っていることを確認します。この手順を省くと後で必ず詰まります。

  • Node.js 18 以上がインストール済み
  • VS Code に GitHub Copilot 拡張機能がインストール済み・有効化済み
  • プロジェクトルートに package.json が存在する
node -v       # v18.0.0 以上であることを確認
npm -v        # 9.0.0 以上を推奨
git log --oneline -1   # git リポジトリが初期化済みか確認

Step 2:Husky のインストールと初期化

npm install --save-dev husky
npx husky init

npx husky init を実行すると、.husky/ ディレクトリとサンプルの pre-commit ファイルが自動生成されます。

Step 3:Hooksスクリプトの作成

.husky/pre-commit ファイルを編集し、Copilot が生成したコードに対して実行したいスクリプトを記述します。

#!/bin/sh
# リンター実行(ESLint)
npm run lint

# 型チェック(TypeScript プロジェクトの場合)
npm run type-check

# セキュリティスキャン(任意)
npm audit --audit-level=high

個人的にはこのステップが一番重要だと思います。ここで実行するコマンドの選定が、Hooks の有効性を決定します。

Step 4:.github/copilot-instructions.md との連携

リポジトリルートに .github/copilot-instructions.md を作成し、Copilot に対してチームの規約を伝えます。

# Copilot Instructions

- TypeScript の strict モードを前提にコードを書くこと
- 関数の戻り値型は必ず明示すること
- `any` 型の使用は禁止
- コメントは日本語で記述すること

このファイルにより、Copilot の提案自体がチーム規約に沿ったものになり、Hooks でのリジェクト件数が大幅に減ります。

Step 5:動作確認とチームへの展開

# テストコミットで Hooks が正常に動作するか確認
git add .
git commit -m "test: hooks動作確認"

エラーが出た場合はスクリプトの終了コードを確認してください。exit 1 を返すコマンドがあると、コミットが中断されます。問題なければ package.json ごとリポジトリにコミットし、チーム全員が npm install を実行するだけで同じ環境を再現できます。


よくある失敗と対処法

Hooks が実行されずコミットが通ってしまう

これが意外と盲点になりやすい問題です。.husky/ 配下のファイルに実行権限が付与されていないことが原因です。

chmod +x .husky/pre-commit

また、git commit --no-verify オプションを使うと Hooks をスキップできてしまいます。CI/CD 側でも同じチェックを走らせることで、スキップ対策になります。

リンターエラーで毎回コミットが止まる

Copilot が生成したコードにスタイル違反が多く含まれる場合、毎回 Hooks が失敗してストレスになります。確実に失敗するパターンは「ルールを設定したが自動修正コマンドを組み込んでいないケース」です。

# NG:エラーを報告するだけで修正しない
npm run lint

# OK:修正してからチェックする
npm run lint -- --fix && npm run lint

Windows 環境でシェルスクリプトが動かない

Windows の Git Bash 環境では、シェルスクリプトの改行コードが CRLF になっているとエラーになります。

# .gitattributes に追記して改行コードを統一する
echo "*.sh text eol=lf" >> .gitattributes

正直なところ、筆者もここで数時間詰まった経験があります。Windows 環境のメンバーがいるチームは必ず事前に確認してください。


関連ツールの詳細

ESLint

JavaScript・TypeScript のコード品質チェックに最も広く使われているリンターです。GitHub Copilot が生成したコードにも即座に適用でき、未使用変数・型エラー・セキュリティリスクを自動検出します。プラグインが豊富で、React・Vue・Next.js など主要フレームワークにも対応しています。

Prettier

コードフォーマッターの標準ツールです。インデント・クォート・セミコロンの有無などのスタイルを自動統一します。ESLint との併用が基本で、Copilot が生成したコードのフォーマットを即座に整えられます。

GitHub Actions

プッシュ・プルリクエストのタイミングでリンター・テスト・セキュリティスキャンを自動実行するCI/CDサービスです。ローカルの Hooks をすり抜けたコードもここで確実に検知できます。GitHub との統合がネイティブで、設定ファイルは .github/workflows/ に YAML で記述します。


よくある質問(FAQ)

Q. GitHub Copilot を使わない開発者にも Hooks は影響しますか?

A. はい、影響します。Husky などのフックマネージャーは Copilot の有無に関係なく、すべての git commit に対して実行されます。チーム全員のコード品質を一律に管理できる点は、むしろメリットです。

Q. Hooks の実行が遅くてコミットに時間がかかります。改善方法はありますか?

A. lefthook を使うと複数の Hooks を並列実行できるため、実行時間を大幅に短縮できます。また、変更されたファイルだけをリントする lint-staged との組み合わせも効果的です。全ファイルをスキャンするのをやめるだけで、実行時間が数秒から数十ミリ秒になることもあります。

Q. .github/copilot-instructions.md に書いた内容はどこまで Copilot に反映されますか?

A. VS Code の GitHub Copilot 拡張機能(v1.177 以降)では、リポジトリルートに配置した copilot-instructions.md の内容がコンテキストとして自動的に読み込まれます。ただし、複雑な指示は部分的にしか反映されないこともあるため、シンプルで具体的なルールを書くことが重要です。


まとめ

GitHub Copilot Hooks を導入すれば、Copilot が生成したコードの品質を自動で担保できます。まずは Husky のインストールと pre-commit への ESLint 追加から始めてください。

設定のポイントは次の3つです。

  • Husky で pre-commit フックを設定し、リンターを自動実行する
  • .github/copilot-instructions.md でチーム規約を Copilot に伝える
  • GitHub Actions でローカルのフックを CI/CD 側でも二重にチェックする

Hooks は一度設定すれば自動で動き続けます。コードレビューの指摘事項が減り、チーム全体の開発スピードが上がるのを実感できるはずです。

最終更新日:2026年4月9日