
[並列作業] ClaudeCodeの進捗を「音+案件名」で通知!プロンプト付き!
Claude Codeを複数プロジェクトで並列に走らせていると、どこが終わったか見失いがち。Hooksとsayコマンドで「効果音+案件名の読み上げ」を設定すれば、画面を見なくても進捗が分かります。コピペで設定できるプロンプト付き。
公開日2026.02.09
更新日2026.02.09
Claude Codeの作業完了、見逃していませんか?
Claude Codeにリファクタリングを依頼して、ブラウザで別の調べ物をしていたら、気づいたときには数分前に終わっていた。あるいは、Claude Codeが質問を投げて入力待ちなのに気づかず放置してしまった。
複数のターミナルでClaude Codeを並列に走らせている場合はなおさらです。 フロントエンドの修正、API側のリファクタ、テストの追加──それぞれ別のセッションで同時に進めていると、どのプロジェクトが終わったのか、どこで質問が来ているのか、把握しきれなくなります。
この記事では、~/.claude/settings.jsonのHooks機能を使って、タスク完了時と質問待ち時にmacOSで音を鳴らす方法を紹介します。さらにsayコマンドを組み合わせれば、「my-app 完了」のようにプロジェクト名を音声で読み上げてくれるので、画面を見なくてもどのプロジェクトで何が起きたか把握できます。設定だけで済むため、コードを書く必要はありません。
⚡ 今すぐ設定したい方へ
Claude Codeにコピペするだけで設定が完了するプロンプトを用意しました。 → セットアッププロンプトへジャンプ
目次
Claude CodeのHooksとは?
Claude Codeには、特定のイベント発生時にシェルコマンドを自動実行する「Hooks」という機能があります。~/.claude/settings.jsonに設定を記述することで、以下のようなタイミングでコマンドを実行できます。
Stop- Claude Codeがタスクを完了して停止したときNotification- Claude Codeがユーザーへの通知を発行したとき(質問や確認待ち)
この仕組みを使って、macOSのシステムサウンドを再生します。
Claude Codeで通知音を設定する方法
基本:効果音を鳴らす
~/.claude/settings.jsonに以下を追記します。
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "afplay /System/Library/Sounds/Hero.aiff"
}
]
}
],
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "afplay /System/Library/Sounds/Glass.aiff"
}
]
}
]
}
}この設定により、タスク完了時には「Hero」、質問・確認待ち時には「Glass」というサウンドが再生されます。音が異なるため、画面を見なくてもどちらの状態か判別できます。
afplayコマンドについて
afplayはmacOSに標準で搭載されているオーディオ再生コマンドです。追加のインストールは不要で、.aiffや.mp3などのファイルを再生できます。
利用可能なシステムサウンド
/System/Library/Sounds/ディレクトリには以下のサウンドファイルが用意されています。
| サウンド名 | 印象 |
|---|---|
Basso | 低い警告音 |
Blow | 風のような音 |
Bottle | ボトルを吹く音 |
Frog | カエルの鳴き声 |
Funk | ファンキーな効果音 |
Glass | ガラスを叩く音 |
Hero | 達成感のある音 |
Morse | モールス信号風 |
Ping | 軽い通知音 |
Pop | ポップ音 |
Purr | 振動のような音 |
Sosumi | 短い電子音 |
Submarine | 潜水艦のソナー風 |
Tink | 小さな金属音 |
ターミナルで実際に鳴らして試すことができます。
afplay /System/Library/Sounds/Hero.aiff好みの組み合わせを見つけて設定に反映してください。
macOSの通知バナーも表示するには?
音だけでなくmacOSの通知バナーも表示したい場合は、osascriptコマンドを使います。
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "osascript -e 'display notification \"タスクが完了しました\" with title \"Claude Code\" sound name \"Hero\"'"
}
]
}
],
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "osascript -e 'display notification \"入力を待っています\" with title \"Claude Code\" sound name \"Glass\"'"
}
]
}
]
}
}osascriptを使うと、通知バナーの表示とサウンドの再生を1つのコマンドで実行できます。通知センターにも履歴が残るため、離席中に何が起きたかを後から確認するのにも便利です。
💡 osascriptの通知にはターミナルアプリの通知許可が必要
osascriptの通知は、実行元のターミナルアプリを通じて表示されます。初回実行時に通知が出ない場合は、「システム設定 > 通知」で自分が使っているターミナルアプリの通知を許可してください。
- Terminal.app を使っている場合 → 「ターミナル」を許可
- iTerm2 を使っている場合 → 「iTerm2」を許可
- Warp を使っている場合 → 「Warp」を許可
- Ghostty を使っている場合 → 「Ghostty」を許可
並列作業の切り札:音声でプロジェクト名を読み上げる
Claude Codeを複数ターミナルで並列に動かす運用は生産性が高い反面、「どのプロジェクトが終わったのか」が効果音だけでは分かりません。
macOSのsayコマンドを組み合わせると、作業ディレクトリのフォルダ名を音声で読み上げてくれます。
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "afplay /System/Library/Sounds/Hero.aiff && say \"$(basename \"$PWD\") 完了\""
}
]
}
],
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "afplay /System/Library/Sounds/Glass.aiff && say \"$(basename \"$PWD\") 質問があります\""
}
]
}
]
}
}例えばmy-appディレクトリで作業していた場合、タスク完了時に「my-app 完了」、質問待ち時に「my-app 質問があります」と読み上げられます。イヤホンをしていれば、画面を一切見ずにどのプロジェクトで何が起きたか把握できます。
読み上げ音声を変える
sayコマンドは-vオプションで音声を変更できます。日本語の読み上げにはKyokoやOtoyaが使えます。
# 利用可能な日本語音声を確認
say -v '?' | grep ja_JP
# 音声を指定して読み上げ
say -v Kyoko "my-app 完了"Hooksに適用する場合は、コマンド部分を以下のように変更します。
afplay /System/Library/Sounds/Hero.aiff && say -v Kyoko \"$(basename \"$PWD\") 完了\"設定のポイント
完了と質問で音を変える
同じ音にしてしまうと、画面を見るまでどちらの状態か分かりません。タスク完了には達成感のある「Hero」、質問待ちには控えめな「Glass」のように、意味の異なるサウンドを割り当てると便利です。
Notificationのmatcherについて
Notificationのmatcherフィールドは、通知メッセージのフィルタリングに使います。空文字列""を指定するとすべての通知にマッチします。特定のメッセージだけに反応させたい場合は、正規表現パターンを指定できます。
既存のsettings.jsonとの統合
settings.jsonに既に他の設定がある場合は、hooksキーを追加する形で記述します。既存の設定を上書きしないよう注意してください。
まとめ
Claude CodeのHooks機能を使えば、設定ファイルの記述だけでタスク完了や質問待ちの音声通知を実現できます。
設定のポイントは以下の通りです。
~/.claude/settings.jsonのhooksにStopとNotificationのイベントを設定するafplayコマンドでmacOSのシステムサウンドを再生する- 完了と質問で異なるサウンドを割り当てると、画面を見なくても状態を判別できる
osascriptを使えば通知バナーとサウンドを同時に表示できるsayコマンドでプロジェクト名を読み上げれば、複数セッション並行時もどこで何が起きたか判別できる
小さな設定ですが、マルチタスクで開発しているときの待ち時間を減らす効果があります。
コピペで設定完了:Claude Code用セットアッププロンプト
手動でsettings.jsonを編集するのが面倒な場合、以下のプロンプトをClaude Codeにそのまま貼り付ければ自動で設定してくれます。
効果音のみ(シンプル版)
~/.claude/settings.json にhooksを追加して。
Stop(タスク完了)で afplay /System/Library/Sounds/Hero.aiff、
Notification(入力待ち)で afplay /System/Library/Sounds/Glass.aiff を鳴らすようにして。
既存設定はそのまま残して。効果音+プロジェクト名読み上げ(おすすめ)
Claude Codeの通知音を設定して。以下の通りに実装してほしい。
■ ~/.claude/settings.json のhooksに以下を設定
Stop(タスク完了)のcommand:
(afplay /System/Library/Sounds/Hero.aiff && say "$(basename "$PWD") 完了") > /dev/null 2>&1 &
Notification(matcher空文字)のcommand:
(afplay /System/Library/Sounds/Glass.aiff && say "$(basename "$PWD") 質問があります") > /dev/null 2>&1 &
hookをブロックしないよう、必ず > /dev/null 2>&1 & でバックグラウンド実行すること。
既存のsettings.jsonの設定はそのまま残してhooksだけ追加・更新して。Claude Codeがsettings.jsonを読み取って、既存の設定を壊さずにhooksをマージしてくれます。
