🌸

うっかり開発者の味方、Claude Code Hooks で手を離せる環境をつくる

に公開

Claude Code を使っていると、待ち時間が長くなり、つい他の作業に手が伸びてしまうことがあります。
でも、ふとターミナルを確認するとこんな経験、ありませんか?

実装が止まっていると思ったら、冒頭でユーザー入力を待っていた

とっくに処理が終わっていたのに、気づかず他作業を続けていた

こうした見落としを防ぐには、「完了」や「入力待ち」などのタイミングで通知が出るようにしておくことが効果的です。

さらに、lint チェックやコードフォーマットなど、毎回やるべき定型処理も忘れがち。
これらも Claude Code 側で自動実行できれば、より快適に作業が進められます。

そんな「通知」と「定型作業の自動化」を実現できるのが、Claude Code の Hook 機能です。

Hooksとは? 概要解説

Hooks は 2025年7月に導入された機能です。
Claude が処理の各段階で発火するイベントに応じて、ユーザーが定義したシェルコマンドを自動実行できます。
以下の4つのタイミングで動作します:

イベント名 説明
PreToolUse Claude がツール使用を始める直前に実行
PostToolUse ツール使用が終了した後に実行
Notification Claude が通知(ユーザー入力待ちなど)を出したときに実行
Stop Claude の生成が完了または停止したときに実行

👉 詳細仕様については公式ドキュメントを参照してください: Hooks reference - Anthropic Docs

実用例

例えば以下のような使い方ができます…

🎧 1. 処理完了時に音で通知する
長時間の処理中に他作業へ集中してしまい、処理の完了に気づけないケースを防ぐため、Notification や Stop イベントで音声通知を設定できます。

🧹 2. ファイル編集後に自動フォーマットを行う
PostToolUse イベントを利用して、Claude によるファイル編集直後にフォーマットツール(例:black)を自動で実行できます。

🧪 3. 編集後にテストを自動で実行する
フォーマットだけでなく、変更されたファイルに対して自動でテストを実行することも可能です。

よく使うイベントと利用例

イベント 主な用途
PreToolUse CLI実行前にチェック、検証、制御などを実行 特定のバージョン確認や依存モジュール未更新時の警告など、事前に環境異常が起きていないかをチェック
PostToolUse 実行後のフォーマット・テスト・通知に有効 ファイル編集・保存直後にコードフォーマットの自動
Notification プロンプト待ちなどで外部通知 ntfy や notify-send を使って音やポップアップで通知

導入手順

設定ファイルを作成/編集する

プロジェクトルートに .claude/settings.local.json または .claude/settings.json を作成し、以下のような設定を追加します。

{
  "hooks": {
    "EventName": [
      {
        "matcher": "ToolPattern",
        "hooks": [
          {
            "type": "command",
            "command": "your-command-here"
          }
        ]
      }
    ]
  }
}

hookの設定ファイルについて
いくつか書く場所があり、効果の範囲が異なります

  • ~/.claude/settings.json: ユーザー設定。全てのリポジトリで反映される
  • .claude/settings.json: プロジェクト設定。gitに乗るのでチームで共有される
  • .claude/settings.local.json: ローカルプロジェクト設定。自動的にコミットされない設定になるので個人の設定になる。

CLI で確認・登録する

設定を保存したら、以下の手順で Hooks を反映させます。

  • $ claude で Claude Code を起動

  • チャット欄に /hooks と入力

  • 設定済みの Hooks を確認・編集。ガイドに沿って新規追加も可能です

実装例:Mac のシステム音で通知する

{
  "hooks": {
    "Stop": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "/usr/bin/afplay --volume 0.3 /System/Library/Sounds/Pop .aiff"
          }
        ]
      }
    ],
    "Notification": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "/usr/bin/afplay --volume 0.3 /System/Library/Sounds/Blow.aiff"
          }
        ]
      }
    ]
  }
}
  • Stop:処理完了時に Pop.aiff を再生

  • Notification:プロンプト待ち時に Blow.aiff を再生

  • matcher を空にすると、すべての対象に対して適用されます

  • 特定のツールやファイルタイプごとに通知音を変えたい場合は matcher を指定することで対応できます。

まとめ:安心して「他ごと」できる開発環境を手に入れよう

Claude Code の Hooks は、設定がシンプルながら効果的。
通知や定型処理を自動化しておくことで、他の作業に集中していても大事な進捗を見逃しません。

「いつの間にか止まっていた」

「完了していたのに気づかなかった」

こうしたミスを減らし、開発に集中できる環境をつくるなら、まず Hooks をひとつ試してみることから始めてみてください。

より詳細を

Discussion