Claude Codeの回答が終わったら音で通知!Stop Hookを使って作業効率を爆上げする方法
「AIに重い処理を投げている間、別タブで作業していたら戻るのを忘れてしまった」
そんな経験はありませんか?シンプルな Stop Hook を導入するだけで、Claude Codeが回答を完了するたびに自動で音を鳴らして通知してくれます。
1. はじめに
自律型AIエージェントである「Claude Code」は、ファイルの編集、テストの実行、仕様書の自動生成など、複雑で時間のかかるタスクをバックグラウンドで処理してくれます。
しかし、処理を待つ数分間のうちにブラウザやVS Code、Slackなどにウィンドウを切り替え、気づけばClaude Codeの作業が終わっているのに戻るのを忘れて放置していた……ということはよくあります。
この問題を解決する極めてシンプルなアプローチが、**「Claude Codeの回答が完了した瞬間に、システム音や特定の音声ファイルを自動再生する」**という方法です。
核心となる仕組みはこれだけです:
Claude Codeの
StopHookを利用して、回答(Agentの返答)が完了したタイミングで音声再生コマンドを実行させる。
2. Claude Codeの「Hooks」とは何か?
Claude Codeには、特定のライフサイクルイベント(セッション開始、コマンド実行前後、ツール呼び出し前後、そしてAIの回答終了など)が発生した際に、任意のシェルコマンドを実行できる Hooks(フック) という仕組みが組み込まれています。
設定ファイルは以下の優先順位で読み込まれます:
-
~/.claude/settings.json:ユーザー全体のグローバル設定(すべてのプロジェクトで有効) -
.claude/settings.json:プロジェクト個別設定(リポジトリのルート配下、チーム共有用) -
.claude/settings.local.json:ローカル環境用プロジェクト個別設定(個人向け)
今回使用するのは Stop イベントです。これはClaudeのメインエージェントが回答の出力を完全に停止した(完了した)タイミングでトリガーされるため、「タスク完了通知」に最適です。
3. 音声ファイルの用意と生成方法(tts-edgeの活用)
音声通知に使用する .wav ファイルは、お好みの効果音を用意して ~/.claude/sounds/ ディレクトリに配置すれば動作します。
もし手元に適当な音声ファイルがない場合や、オリジナルの音声を作成したい場合は、以下のClaude Code Skillを使用してテキストから日本語音声を生成するのがおすすめです。
- tts-edge:Microsoft EdgeのTTS(音声合成)エンジンを利用して、任意のテキストから高品質な音声ファイルをコマンドラインで生成できるSkillです。
使い方
このSkillを導入後、以下のようにClaude Codeに指示するだけで、指定したセリフの音声ファイルを生成できます:
tts-edge "タスクが完了しました"
※生成された .mp3 ファイルを .wav 形式に変換し、done.wav 等の名前で ~/.claude/sounds/ ディレクトリに配置してください。
Media.SoundPlayer は標準で .wav 形式のみをサポートしている点にご注意ください。
4. 最小の構成例(JSON設定)
「回答が終わったら音を鳴らす」という目的を達成するための、~/.claude/settings.json の設定例は以下の通りです。
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "powershell -NoProfile -ExecutionPolicy Bypass -Command \"(New-Object Media.SoundPlayer 'C:\\\\Users\\\\ユーザー名\\\\.claude\\\\sounds\\\\done.wav').PlaySync()\""
}
]
}
]
}
}
💡 設定時の注意点
- Windowsのパスに含まれるバックスラッシュ(円マーク)は、JSON内でエスケープする必要があるため、
\\\\のように4つ重ねるか、ダブルクォーテーションのエスケープを考慮してください。 - すでに
hooksの設定が存在する場合、丸ごと上書きすると既存のフック(自動フォーマットやログ記録など)が消えてしまうため、必ずStop配下に要素を追加するようにマージしてください。 - 設定ファイルを編集した後は、Claude Codeを再起動するか、コンソールで
/hooksコマンドを実行してフックが正しく登録されているか確認してください。
5. プロンプト一発でClaude Codeに設定させる方法(推奨)
手動でJSONを編集したり、エスケープシーケンスに悩まされたりしたくない場合は、Claude Code自身に設定を任せるのが最も安全でスマートです。
以下のプロンプトをそのままClaude Codeに送信してください。
Claude Codeのタスク終了通知音を設定してください。
【ゴール】
Claude Codeが回答を完了するたびに、Stop Hookを通じてwav形式の音声ファイルを自動再生する。
【私の環境】
- OS: Windows
- Claude Codeのグローバル設定ディレクトリ: ~/.claude
- 音声ファイルの配置先: ~/.claude/sounds/done.wav
【実行手順】
1. まず、`~/.claude/settings.json`、`~/.claude/settings.local.json`、`~/.claude/hooks/hooks.json` に既存の hooks 設定がないか確認してください。
2. すでに hooks 設定がある場合は、元の設定を上書きせず、`Stop` Hookのみをマージしてください。
3. `~/.claude/sounds` ディレクトリが存在しない場合は作成してください。
4. `done.wav` が存在しない場合は、音声ファイルを配置するよう私に通知してください(架空の音声ファイルを作成しないでください)。
5. Windowsでの再生コマンドは、PowerShellの `Media.SoundPlayer` を使用し、`PlaySync()` で実行してください。
6. 設定ファイルを変更する前に、元の設定ファイルのバックアップを作成してください。
7. 設定が完了したら、実際にどのファイルを変更したかと、`/hooks` コマンドまたは簡単な対話で検証する方法を教えてください。
💡 なぜこのプロンプトが有効なのか?
- 既存設定の保護:他の拡張フックを壊さないように「マージ」を明示しています。
- パスの自動解決:環境に合わせたユーザー名やパスのエスケープをClaude自身が自動で処理します。
- バックアップの作成:万が一に備え、書き換え前のファイルを退避させます。
設定が完了したら、以下のチェック用プロンプトで自律検証をさせるとさらに確実です:
追加した Stop Hook が以下の条件を満たしているかチェックしてください:
1. JSONの構文が正しいこと
2. 既存の hooks に影響を与えていないこと
3. 音声ファイルのパスが存在すること
4. PowerShellコマンドが単独で実行可能であること
5. hookの実行に失敗しても、Claude Codeの動作自体をブロックしないこと
6. まとめ
AIエージェントの作業は、開発スピードを劇的に高めてくれますが、その「待ち時間」のマルチタスクによる集中力の分散が新たな課題となっています。
今回紹介した Stop Hook による通知音設定は、数分の変更で**「AIが作業している間は安心して別の画面に集中し、終わったらすぐに本線に戻る」**という非常に快適な開発体験をもたらしてくれます。
ぜひお手持ちのClaude Codeに導入して、効率的なAI駆動開発(AI-Driven Development)をお試しください!