MENU
AI

Claude Codeの作業が完了したらmacOSの通知音を鳴らす

Katz

長時間のコード作業中に他のタスクをしていて、Claude Codeの完了に気づかないことがあります。音による通知を設定することで、作業完了に気付けるようにし、生産性を向上させたいと思います。今回はその設定方法について調べたのでまとめます。

macOSで通知音を鳴らすには?

macOSで通知音を鳴らすには、osascriptのdisplay notificationコマンドを利用します。display notificationは以下の構文でパラメータを指定します。

osascript -e 'display notification "メッセージ" with title "タイトル" subtitle "サブタイトル" sound name "音声名"'
パラメータ名必要可否詳細
messageYes通知メッセージとして表示したい文字列を指定する依頼していたタスクが完了しました
titleNo通知タイトルとして表示したい文字列を指定するClaude Code
subtitleNo通知サブタイトルとして表示したい文字列を指定するタスク完了通知
sound nameNo通知時に鳴らす通知音を指定するBasso、Frog、Hero、Pop、Submarine、Blow、Funk、Morse、Purr、Tink、Bottle、 Glass、Ping、Sosumi

Claude Codeのhooksで完了に通知音を鳴らす

Claude Codeのhooks機能と連携して、Claude Codeを実行している任意のタイミング(フックイベント)で通知音を鳴らすように設定します。

今回はPostToolUse、Stop、SessionEndの3つのフックイベントのタイミングで通知音を鳴らしてみます。以下の設定内容を自身の環境に適した設定ファイルに追記してください。

フックイベント一覧

Claude Code | Hooks – フックイベント概要

イベント名実行タイミング説明
PreToolUseツール呼び出しの直前ツールが呼び出される前に、特定のスクリプトやコマンドを実行します。
PostToolUseツール呼び出しの直後ツールの実行が完了した後に、結果の処理や後続のタスクを実行します。
UserPromptSubmitユーザープロンプト送信時ユーザーがプロンプトを送信し、Claudeがそれを処理する前にトリガーされます。
NotificationClaude Codeからの通知時Claude Codeが通知を発行するタイミングで実行されます。
Stop応答終了時Claude Codeが応答の生成を完了する際に実行されます。
SubagentStopサブエージェントタスク完了時サブエージェントがタスクを完了したときにトリガーされます。
PreCompactコンパクト操作の直前Claude Codeがコードの圧縮や最適化などのコンパクト操作を行う前に実行されます。
SessionStartセッション開始時新しいセッションが開始されるか、既存のセッションが再開されるときに実行されます。
SessionEndセッション終了時Claude Codeのセッションが終了する際に実行されます。

設定ファイル

Claude Code | 設定ファイル

設定の種類ファイルパス内容
ユーザー設定~/.claude/settings.json全てのプロジェクトに適用される、個人のグローバル設定を定義します。
共有プロジェクト設定.claude/settings.jsonソース管理にチェックインされ、チームと共有される設定です。
ローカルプロジェクト設定.claude/settings.local.jsonソース管理にチェックインされない設定で、個人の好みや実験に使用されます。

設定内容

{
  "hooks": {
    "PostToolUse": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'display notification \"ツール実行完了\" with title \"Claude Code\" sound name \"Glass\"'"
          }
        ]
      }
    ],
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'display notification \"セッション終了\" with title \"Claude Code\" sound name \"Ping\"'"
          }
        ]
      }
    ],
    "SessionEnd": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'display notification \"作業完了\" with title \"Claude Code\" sound name \"Hero\"'"
          }
        ]
      }
    ]
  }
}

注意事項:ターミナルアプリの通知を許可する

ターミナルアプリの通知が許可されていない場合、通知が表示されないため通知を許可する必要があります。私はGhosttyを利用していますが、以下の手順でGhosttyの通知機能を有効化する必要がありました。

  1. Claude Codeの設定完了後、Claude Codeでセッションを開始し、通知音を鳴らすフックイベントを発生させる
  2. フックイベントが発生すると、Ghosttyで通知を許可するか尋ねるダイアログが表示され、System Settings → NotificationにGhosttyが表示されるようになる
  3. System Settings → NotificationでGhosttyのAllow notificationsをONにして通知を有効化する

動作確認

これらの設定により、Claude Codeの作業状況をリアルタイムで把握し、効率的な開発環境を構築できます。通知音が鳴るようになったため、作業が進んでいるのか、終了したのかが分かりやすい環境になりました。

ABOUT ME
Katz(Yusuke Katsuragawa)
Katz(Yusuke Katsuragawa)
Androidエンジニア
AndroidエンジニアをやっているKatzです。最近はKotlin Multiplatformを中心にやっています。経歴やお仕事の依頼については、私のプロフィールに詳細を記載していますので、ご確認ください。
記事URLをコピーしました