ankuro.dev
← ブログ一覧に戻る
Claude Code Hooks 入門——コピペで5分、最初のフックを動かす
2026-04-01#Claude Code#AI#Hooks#自動化#入門

Claude Code Hooks 入門——コピペで5分、最初のフックを動かす

Hooksは便利そうだけど、設定が難しそうで手を出せていない——この記事はそういう人向け。

Pythonの知識は不要。シェルスクリプト1行から始めて、「Claudeが作業を終えるたびにログが残る」 状態を5分で作る。


この記事でやること

Claude Codeが応答を終了するたびに、こんなログが残るようにする。

2026-04-01 10:23:45  Claudeが作業を完了しました
2026-04-01 10:31:12  Claudeが作業を完了しました

シンプルだけど、フックが「確かに動いている」ことを確認するのに十分。


必要なもの

  • Claude Codeがインストールされていること
  • ターミナルが使えること

以上。


Step 1: スクリプトを作る

まずフックが呼び出すスクリプトを作る。

mkdir -p ~/.claude/hooks

次のファイルを作成する:

cat > ~/.claude/hooks/on_stop.sh << 'EOF'
#!/bin/bash
echo "$(date '+%Y-%m-%d %H:%M:%S')  Claudeが作業を完了しました" >> ~/.claude/hooks/claude.log
EOF

実行権限を付ける(これを忘れるとフックが動かない):

chmod +x ~/.claude/hooks/on_stop.sh

Step 2: settings.jsonに登録する

~/.claude/settings.json をエディタで開いて以下を書く(ファイルがなければ新規作成)。

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "~/.claude/hooks/on_stop.sh"
          }
        ]
      }
    ]
  }
}

ファイルの保存場所について:

場所 効果
~/.claude/settings.json すべてのプロジェクトに適用(グローバル)
.claude/settings.json(プロジェクトのルート) そのプロジェクトのみ

まずはグローバルで試すのがわかりやすい。


Step 3: 動作確認

Claude Codeを起動して、何か一言話しかける。

「こんにちは」

Claudeが返答したら、ターミナルでログを確認する。

cat ~/.claude/hooks/claude.log

こんな出力が出ればフックが動いている:

2026-04-01 10:23:45  Claudeが作業を完了しました

うまくいかない場合

ログファイルが作られない

chmod +x を忘れていることが多い。

chmod +x ~/.claude/hooks/on_stop.sh

settings.jsonを編集したのに反応しない

Claude Codeを再起動すると反映される。

JSONの書き方が間違っている

構文エラーがあるとフック自体が読み込まれない。このサイトで確認できる:

cat ~/.claude/settings.json | python3 -m json.tool

エラーが出なければJSON自体は正しい。


応用:macOSの通知を出す

ログではなく画面に通知を出したい場合は、スクリプトをこれに変える。

#!/bin/bash
osascript -e 'display notification "Claudeが作業を完了しました" with title "Claude Code"'

Claudeが応答を終えるたびに画面右上に通知が出る。


次のステップ

フックが動いたら、もう少し実用的なことができるようになる。


中級編 #2:Claude Codeを自動化する——Hooksでスクリプトを割り込ませる