Claude Codeのフック機能で繰り返し作業を自動化する方法

Claude Codeのフック機能で繰り返し作業を自動化する方法

「Claude Codeに指示するたびに、同じお願いを繰り返してる気がする…」

そう感じたことありませんか?

たとえば「ファイルを編集したら毎回フォーマットして」とか「何か実行する前に一言確認して」とか。毎回伝えるの、地味にめんどうですよね。

実はClaude CodeにはHooks(フック)という機能があって、こういう「毎回やってほしいこと」を事前に設定しておける仕組みがあります。

この記事では、非エンジニアでもコピペで使えるHooksの設定例を紹介します。

Claude Code Hooksって何?一言で言うと「自動トリガー」です

Hooksは、Claude Codeが特定の動作をしたタイミングで、自動的に別の処理を走らせる仕組みです。

イメージとしては、こんな感じ:

  • ファイルを編集した**後** → 自動でフォーマットをかける
  • ツールを実行する**前** → 危険なコマンドかどうか確認する
  • セッションが始まった**とき** → プロジェクトの状態をチェックする

プログラミング経験がない方に伝えると、「もしXしたら、自動でYしてね」というルールをあらかじめ設定できる機能、と考えると分かりやすいです。

毎回Claude Codeに口頭で頼む必要がなくなるので、地味に便利です。

Hooksで設定できるタイミングは6種類

タイミング いつ発火するか
SessionStart Claude Codeを起動したとき
UserPromptSubmit 自分がメッセージを送信したとき
PreToolUse Claudeがツールを使う
PostToolUse Claudeがツールを使った
PostToolUseFailure ツールの実行が失敗したとき
SessionEnd セッションを終了したとき

実際によく使うのは `PreToolUse`(実行前)と `PostToolUse`(実行後)の2つです。

「ファイルを編集した後に自動でフォーマット」なら PostToolUse、

「危険そうなコマンドを実行する前にブロック」なら PreToolUse、という感じで使い分けます。

設定ファイルはどこに書く?

Hooksは `settings.json` というファイルに書きます。場所は2種類あります:

ファイルの場所 用途
`~/.claude/settings.json` 自分のPCすべてに適用(グローバル設定)
`.claude/settings.json` そのプロジェクトだけに適用

どちらでもOKですが、最初は グローバル設定(`~/.claude/settings.json`) に書くのがおすすめです。

ファイルがない場合は新しく作ればOK。

実際にどう書くの?コピペで使える設定3つ

ここからが本題です。実際に使えるHooksの設定を3つ紹介します。

設定1:ファイルを保存したら自動で通知する(MacOS)

Claudeがファイルを編集するたびに、Mac上に通知を飛ばす設定です。「何か変わったけど気づかなかった」というミスを防げます。


{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'display notification \"ファイルが更新されました\" with title \"Claude Code\"'"
          }
        ]
      }
    ]
  }
}

このJSONを `~/.claude/settings.json` に貼り付けるだけで動きます。

設定2:セッション開始時に今日の日付をログに記録する

Claude Codeを起動するたびに、ログファイルに日時を記録します。「いつ何をやったか」の履歴が自動でたまる感じです。


{
  "hooks": {
    "SessionStart": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "echo \"[$(date '+%Y-%m-%d %H:%M')] セッション開始\" >> ~/claude_session_log.txt"
          }
        ]
      }
    ]
  }
}

設定3:rm(削除コマンド)を実行しようとしたら警告を出す

これが個人的に一番おすすめです。Claudeが `rm` コマンドを実行しようとしたとき、先に警告メッセージを出します。誤削除を防ぐセーフガードとして有効です。


{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "echo '⚠️ rmコマンドが実行されようとしています。内容を確認してください。' >&2"
          }
        ]
      }
    ]
  }
}

設定ファイルのフルテンプレート(3つをまとめて設定)

上の3つをまとめて設定したい場合は、以下をそのまま `~/.claude/settings.json` に貼り付けてください。


{
  "hooks": {
    "SessionStart": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "echo \"[$(date '+%Y-%m-%d %H:%M')] セッション開始\" >> ~/claude_session_log.txt"
          }
        ]
      }
    ],
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "echo '⚠️ Bashコマンドが実行されます。処理内容を確認してください。' >&2"
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'display notification \"ファイルが更新されました\" with title \"Claude Code\"'"
          }
        ]
      }
    ]
  }
}

Hooksを設定してみた正直な感想

私がHooksを使い始めたのは「Claude Codeが何をしているか把握しきれてない」という不安からでした。

設定してみてよかったのは、「Claudeが動いたことを通知で教えてくれる」 安心感があること。バックグラウンドで何かが変わっても気づけるようになりました。

ただ正直なところ、まだ「これ絶対入れるべき!」という使い方は見つけられていなくて、現在進行形で試してます。

エンジニアの方はもっと高度な使い方(コードの自動テスト実行、Git自動コミットなど)もできるみたいですが、非エンジニアの自分には今のところ「通知」と「ログ記録」で十分かなと思っています。

Claude Codeに設定してもらうプロンプト

「自分でJSONを書くのは難しい」という方は、Claude Code自体に設定してもらいましょう。以下のプロンプトをそのまま貼り付けてください。


私のClaude Code設定にHooksを追加してほしいです。

以下の2つを設定してください:
1. ファイルを編集したときにMacの通知を出す(PostToolUse)
2. セッション開始時に ~/claude_session_log.txt に日時を記録する(SessionStart)

~/.claude/settings.json に追記する形でお願いします。
既存の設定がある場合は上書きしないように注意してください。

これを貼るだけで、Claude Codeが設定ファイルを書いてくれます。

まとめ

  • Hooksは「Claude Codeの動作の前後に自動処理を挟む」機能
  • 設定は `~/.claude/settings.json` にJSONで書くだけ
  • よく使うのは `PreToolUse`(実行前)と `PostToolUse`(実行後)
  • 非エンジニアには「通知」「ログ記録」「危険なコマンドの警告」が特に使いやすい
  • 難しければClaude Code自身に設定してもらえばOK

Hooksは「毎回お願いしてたことを自動化する」ための機能です。まずは通知とログ記録から試してみてください。

Claude Codeをもっと使いこなしたい方は、前回の記事「CLAUDE.mdで自分専用AIを作る方法」も参考にどうぞ。

*参考:Claude Code公式Hooksドキュメント*