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を作る方法」も参考にどうぞ。
—