4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ClaudeCodeの「待ってたんだけど・・・」を見逃さない!Mac通知機能で開発効率を劇的に改善する方法

Last updated at Posted at 2025-12-01

はじめに

ClaudeCodeを使ってコーディング作業をしていると、皆さんこんな経験はありませんか?

Gemini_Generated_Image_5y9ln55y9ln55y9l.png

「あ、そういえば30分前にClaudeCodeに指示したタスク、終わったかな・・・?」と思って画面を見ると、実はClaude Codeが30分前から自分の返答を待っていたというケース。

タスクが完了してると思いきや、1ミリも仕事は進んでいなかった。
これは非常に時間がもったいないですよね。私も何十回これをしてしまったか分かりません。

この記事では、Mac通知機能を使ってClaude Codeの待機状態を見逃さない仕組みを紹介します。この仕組みを導入することで、ClaudeCodeが人間の判断を仰ぎたい時に即座に気づけるようになり、開発効率が大幅に向上します!!

問題:ClaudeCodeの待機状態に気づかない

よくあるシナリオ

  1. Claude Codeに実装を依頼する

    • 「この機能を実装してください」とリクエスト
  2. Claude Codeが調査・検討を開始

    • コードベースを探索
    • 実装方針を検討
  3. Claude Codeが質問を投げかける

    • 「AとBどちらの実装方法が良いですか?」
    • しかし、開発者は他の作業に集中していて気づかない
  4. 30分後、画面を見ると...

    • Claude Codeが待機状態だったことに気づく
    • 30分が丸々無駄になってしまった

なぜこの問題が発生するのか

  • Claude Codeは静かに待つ: 音声通知やポップアップなどはデフォルトで表示されない
  • マルチタスク環境: 開発者は複数のウィンドウやタスクを同時に扱っている
  • フォーカスの分散: コードレビュー、ミーティング、Slack対応など、常に画面を見ているわけではない

この問題を解決するのが、音を併用したMac通知機能を活用した通知システムです。

解決策:Mac通知機能でリアルタイムに通知

基本的なアイデア

Claude Codeが以下のような状況になった時、Mac通知センターに通知を音付きで送信します:

Gemini_Generated_Image_dr2yj5dr2yj5dr2y.png

  1. ユーザーの入力・返答を待つ場合
  2. ツール実行前の承認が必要な場合
  3. タスク完了時
  4. エラーが発生した場合

実装の仕組み

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.jsonpermissions.allowに追加することで、通知なしで実行できます:

{
  "permissions": {
    "allow": [
      "Bash(ENVIRONMENT=development python:*)",
      "Read",
      "Glob"
    ]
  }
}

これにより:

  • 通知のノイズを削減
  • 頻繁な操作の効率化
  • 重要な通知のみに集中

実際の動作フロー

シナリオ: 実装方針の確認が必要な場合

  1. Claude Codeが調査を開始

    「コードベースを調査して、実装方針を検討します」
    
  2. 調査完了、質問を準備

    「2つの実装方法があります:
    A: 既存のServiceクラスを拡張
    B: 新しいServiceクラスを作成
    どちらが良いでしょうか?」
    
  3. 通知を送信

    # Bashツールで通知
    osascript -e 'display notification "ユーザの反応を待っています" with title "Claude Code" sound name "Glass"'
    
  4. Mac通知センターに表示

    • サウンドが鳴る
    • 通知バナーが表示される
    • 開発者が即座に気づく
  5. 開発者が回答

    「Aの方法でお願いします」
    
  6. Claude Codeが実装を続行

シナリオ: ファイル変更が必要な場合

  1. Claude Codeがファイル変更を検討

  2. 変更前に通知

    osascript -e 'display notification "ファイル変更の確認が必要です" with title "Claude Code" sound name "Glass"'
    
  3. 承認ダイアログとともに通知が届く

    • 開発者は通知でファイル変更を認識
    • 承認ダイアログで変更内容を確認
    • 承認または拒否を選択

実装時の重要なポイント

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"'

トラブルシューティング

通知が表示されない場合

  1. Mac通知センターの設定を確認

    • システム設定 > 通知 > スクリプトエディタまたはターミナル
    • 通知を許可に設定
  2. osascriptの動作確認

    osascript -e 'display notification "テスト通知" with title "Test" sound name "Glass"'
    
  3. おやすみモードの確認

    • おやすみモードが有効だと通知が表示されない

通知が多すぎる場合

  1. 許可リストの見直し

    • 頻繁に使用するツールをpermissions.allowに追加
  2. 通知メッセージの調整

    • 重要度に応じてサウンドを変更
    • Critical: "Basso"(重低音)
    • Normal: "Glass"(標準)
    • Info: サウンドなし

まとめ

Mac通知機能を活用することで、Claude Codeとの対話効率が劇的に向上します。

導入のメリット

時間の節約: 待機状態に即座に気づける
マルチタスク対応: 他の作業に集中しながらClaude Codeを活用
ストレス削減: 定期的に画面を確認する必要がない
精度向上: タイムリーな質問回答で、より正確な実装を実現

導入のステップ

  1. .claude/settings.local.json"notifyOnUserAction": trueを追加
  2. .claude/CLAUDE.mdに通知ルールを記載
  3. 実装パターンを定義
  4. 必要に応じて許可リストを調整

この仕組みは、Claude Codeをより効果的に活用するための基盤となります。ぜひ、あなたのプロジェクトにも導入してみてください!


参考リンク


4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?