はじめに
ClaudeCodeを使ってコーディング作業をしていると、皆さんこんな経験はありませんか?
「あ、そういえば30分前にClaudeCodeに指示したタスク、終わったかな・・・?」と思って画面を見ると、実はClaude Codeが30分前から自分の返答を待っていたというケース。
タスクが完了してると思いきや、1ミリも仕事は進んでいなかった。
これは非常に時間がもったいないですよね。私も何十回これをしてしまったか分かりません。
この記事では、Mac通知機能を使ってClaude Codeの待機状態を見逃さない仕組みを紹介します。この仕組みを導入することで、ClaudeCodeが人間の判断を仰ぎたい時に即座に気づけるようになり、開発効率が大幅に向上します!!
問題:ClaudeCodeの待機状態に気づかない
よくあるシナリオ
-
Claude Codeに実装を依頼する
- 「この機能を実装してください」とリクエスト
-
Claude Codeが調査・検討を開始
- コードベースを探索
- 実装方針を検討
-
Claude Codeが質問を投げかける
- 「AとBどちらの実装方法が良いですか?」
- しかし、開発者は他の作業に集中していて気づかない
-
30分後、画面を見ると...
- Claude Codeが待機状態だったことに気づく
- 30分が丸々無駄になってしまった
なぜこの問題が発生するのか
- Claude Codeは静かに待つ: 音声通知やポップアップなどはデフォルトで表示されない
- マルチタスク環境: 開発者は複数のウィンドウやタスクを同時に扱っている
- フォーカスの分散: コードレビュー、ミーティング、Slack対応など、常に画面を見ているわけではない
この問題を解決するのが、音を併用したMac通知機能を活用した通知システムです。
解決策:Mac通知機能でリアルタイムに通知
基本的なアイデア
Claude Codeが以下のような状況になった時、Mac通知センターに通知を音付きで送信します:
- ユーザーの入力・返答を待つ場合
- ツール実行前の承認が必要な場合
- タスク完了時
- エラーが発生した場合
実装の仕組み
Mac標準のosascriptコマンドを使用して通知を送信します:
osascript -e 'display notification "メッセージ" with title "Claude Code" sound name "Glass"'
この通知は:
- Mac通知センターに表示される
- サウンド付きで気づきやすい
- 他のアプリを使用中でも通知が届く
実際の通知の様子(注意:動画は音がでます)
See the Pen Untitled by hiroshi take (@hiroshi-take) on CodePen.
実装方法:プロジェクトでの設定
ステップ1: 通知機能を有効化
.claude/settings.local.jsonに以下の設定を追加します:
{
"permissions": {
"allow": [
// 事前承認するツールのリスト
],
"deny": [],
"ask": []
},
"notifyOnUserAction": true // ← この設定を追加
}
ステップ2: 通知ルールを定義
.claude/CLAUDE.mdにClaude Codeへの指示を記載します。以下は実際に使用しているルールの抜粋です:
## 【最重要】ユーザーアクション時の通知ルール
### 通知が必要なタイミング
以下のいずれかに該当する場合、必ず通知を送信してからメッセージを終えること:
1. **ユーザーからの入力・返答を待つ場合**
- 「いかがでしょうか?」などの質問で終わるメッセージ
2. **ユーザーの承認が必要なツール・コマンド実行前**
- AskUserQuestionツール実行前
- Task tool(Plan、Explore等のsubagent)実行前
- MCPツール実行前
- ファイル変更系ツール実行前
3. **タスク完了時**
4. **エラーが発生してユーザー対応が必要な時**
### 通知の実装方法
```bash
osascript -e 'display notification "【状況に応じたメッセージ】" with title "Claude Code" sound name "Glass"'
メッセージ例:
-
"ユーザの反応を待っています"- 次のユーザー入力を待つ時 -
"質問があります"- AskUserQuestionツール使用前 -
"情報収集を開始します"- Task tool使用前 -
"ツール実行の確認が必要です"- MCPツール実行前 -
"タスクが完了しました"- 作業完了時
### ステップ3: 実装パターンの定義
Claude Codeに対して、具体的な実装パターンを指示します:
#### パターン1: ユーザー入力を待つ場合
```markdown
1. ユーザーへのメッセージを出力
2. その直後にBashツールで通知を送信
理由: 回答を書くのに時間がかかるため、通知を先に送ると「まだ考え中」のように見えてしまう。回答完成後に通知を送ることで、ユーザーが通知を受け取った時には回答が表示されている状態にする。
パターン2: ツール実行前の承認が必要な場合
1. Bashツールで通知を送信
2. その直後にツールを実行(ユーザー承認ダイアログが表示される)
実装例:
1. Bashツールで通知送信
osascript -e 'display notification "ツール実行の確認が必要です" with title "Claude Code" sound name "Glass"'
2. 直後にMCPツール実行
mcp__atlassian__fetch(id="https://...")
ステップ4: 許可リストの活用
頻繁に使用するツールは.claude/settings.local.jsonのpermissions.allowに追加することで、通知なしで実行できます:
{
"permissions": {
"allow": [
"Bash(ENVIRONMENT=development python:*)",
"Read",
"Glob"
]
}
}
これにより:
- 通知のノイズを削減
- 頻繁な操作の効率化
- 重要な通知のみに集中
実際の動作フロー
シナリオ: 実装方針の確認が必要な場合
-
Claude Codeが調査を開始
「コードベースを調査して、実装方針を検討します」 -
調査完了、質問を準備
「2つの実装方法があります: A: 既存のServiceクラスを拡張 B: 新しいServiceクラスを作成 どちらが良いでしょうか?」 -
通知を送信
# Bashツールで通知 osascript -e 'display notification "ユーザの反応を待っています" with title "Claude Code" sound name "Glass"' -
Mac通知センターに表示
- サウンドが鳴る
- 通知バナーが表示される
- 開発者が即座に気づく
-
開発者が回答
「Aの方法でお願いします」 -
Claude Codeが実装を続行
シナリオ: ファイル変更が必要な場合
-
Claude Codeがファイル変更を検討
-
変更前に通知
osascript -e 'display notification "ファイル変更の確認が必要です" with title "Claude Code" sound name "Glass"' -
承認ダイアログとともに通知が届く
- 開発者は通知でファイル変更を認識
- 承認ダイアログで変更内容を確認
- 承認または拒否を選択
実装時の重要なポイント
1. 通知のタイミング
#### 正しい実装
1. ユーザー入力待ちの場合:
- メッセージを完成させてから通知を送る
2. ツール実行前の承認が必要な場合:
- 通知を送ってからツールを実行
#### 間違った実装
- ❌ ユーザー入力待ちで、メッセージを書く前に通知を送る
- ❌ ツール実行後に通知を送る
- ❌ 通知を送らずにメッセージだけ送る
2. 通知メッセージの使い分け
状況に応じて適切なメッセージを選択します:
| 状況 | メッセージ |
|---|---|
| ユーザー入力待ち | "ユーザの反応を待っています" |
| 質問 | "質問があります" |
| 情報収集開始 | "情報収集を開始します" |
| ツール実行前 | "ツール実行の確認が必要です" |
| ファイル変更前 | "ファイル変更の確認が必要です" |
| タスク完了 | "タスクが完了しました" |
| エラー発生 | "エラーが発生しました" |
3. 判定フローの実装
Claude Codeに対して、以下のチェックリストを常に確認させます:
**メッセージ送信前のチェックリスト:**
- [ ] このメッセージの後、ユーザーの入力を待つか?
- [ ] AskUserQuestionツールを使うか?
- [ ] Task toolを使うか?
- [ ] MCPツールを使うか?
- [ ] ファイル変更系ツールを使うか?
- [ ] タスクが完了したか?
- [ ] エラーが発生したか?
該当する場合は通知を送信。
導入効果
1. 時間の無駄を削減
導入前:
- Claude Codeが待機していることに気づかず、30分〜1時間の遅延
- 1日に2〜3回発生すると、1〜3時間の損失
導入後:
- 通知によって即座に気づく🥳
- 待機時間がほぼゼロに🎉
2. 開発フローの改善
導入前:
- Claude Code画面を定期的に確認する必要がある
- マルチタスクがしづらい
導入後:
- 他の作業に集中できる
- 通知が来たら対応するだけ
- ストレスフリーな開発環境
3. Claude Codeの活用度向上
導入前:
- 待機状態に気づかないため、Claude Codeの質問機会を逃す
- 結果的にClaude Codeが不十分な情報で実装を進めてしまう
導入後:
- すべての質問にタイムリーに回答
- より精度の高い実装が実現
応用例
1. チーム開発での活用
複数の開発者がClaude Codeを使用する場合、通知ルールを統一することで:
- 一貫した開発体験
- ベストプラクティスの共有
- オンボーディングの効率化
2. CI/CDパイプラインとの連携
Claude Codeがテストやビルドを実行する際、結果を通知:
# テスト完了時
osascript -e 'display notification "テストが完了しました" with title "Claude Code" sound name "Glass"'
# ビルド失敗時
osascript -e 'display notification "ビルドに失敗しました" with title "Claude Code" sound name "Basso"'
3. 長時間タスクの進捗通知
長時間かかるタスク(データ移行、大規模リファクタリングなど)の進捗を通知:
# 50%完了時
osascript -e 'display notification "タスクが50%完了しました" with title "Claude Code" sound name "Ping"'
# 完了時
osascript -e 'display notification "タスクが完了しました" with title "Claude Code" sound name "Glass"'
トラブルシューティング
通知が表示されない場合
-
Mac通知センターの設定を確認
- システム設定 > 通知 > スクリプトエディタまたはターミナル
- 通知を許可に設定
-
osascriptの動作確認
osascript -e 'display notification "テスト通知" with title "Test" sound name "Glass"' -
おやすみモードの確認
- おやすみモードが有効だと通知が表示されない
通知が多すぎる場合
-
許可リストの見直し
- 頻繁に使用するツールを
permissions.allowに追加
- 頻繁に使用するツールを
-
通知メッセージの調整
- 重要度に応じてサウンドを変更
- Critical: "Basso"(重低音)
- Normal: "Glass"(標準)
- Info: サウンドなし
まとめ
Mac通知機能を活用することで、Claude Codeとの対話効率が劇的に向上します。
導入のメリット
✅ 時間の節約: 待機状態に即座に気づける
✅ マルチタスク対応: 他の作業に集中しながらClaude Codeを活用
✅ ストレス削減: 定期的に画面を確認する必要がない
✅ 精度向上: タイムリーな質問回答で、より正確な実装を実現
導入のステップ
-
.claude/settings.local.jsonに"notifyOnUserAction": trueを追加 -
.claude/CLAUDE.mdに通知ルールを記載 - 実装パターンを定義
- 必要に応じて許可リストを調整
この仕組みは、Claude Codeをより効果的に活用するための基盤となります。ぜひ、あなたのプロジェクトにも導入してみてください!
参考リンク

