[Claude Code] terminal-notifierで作業完了通知を受け取る

2026-03-20 hit count image

Claude CodeのHooks機能とterminal-notifierを活用して、作業完了時にmacOSデスクトップ通知を受け取る方法を紹介します。Stop HookとNotification Hookの設定まで解説します。

generative_ai

概要

Claude Codeに作業を任せて別の作業をしていると、作業が終わったかどうか頻繁にターミナルを確認してしまいます。Claude CodeのHooks機能とmacOSのterminal-notifierを連携すれば、作業が完了したり入力が必要な時にデスクトップ通知を自動的に受け取ることができます。

この記事では、terminal-notifierのインストールからClaude Code Hooksの設定まで、ステップバイステップで解説します。

Claude Codeのインストール方法と基本的な使い方はClaude Code 基礎知識と基本的な使い方を参照してください。

なぜ通知が必要なのか?

Claude Codeにコード作成、リファクタリング、テスト作成などの作業を任せると、完了まで数十秒から数分かかることがあります。この間に別の作業をしていても、通知を受け取ればすぐに戻ることができ、待ち時間なく効率的に作業を続けられます。

特に以下のような状況で役立ちます。

  • Claudeがコードを作成している間に別のドキュメント作業をしている時
  • 長いリファクタリング作業を任せてブラウザで別の作業をしている時
  • Claudeが権限確認を要求しているのにターミナルを見ていない時

terminal-notifierのインストール

terminal-notifierはmacOSでコマンドラインからデスクトップ通知を送れるツールです。Homebrewで簡単にインストールできます。

brew install terminal-notifier

インストール確認

インストールが完了したら、以下のコマンドで確認します。

terminal-notifier -title 'テスト' -message '通知が正常に動作しています' -sound default

macOS画面の右上に通知が表示されれば、正常にインストールされています。

基本的な使い方

terminal-notifierの主なオプションは以下の通りです。

オプション説明
-title通知タイトル-title 'Claude Code'
-subtitle通知サブタイトル-subtitle '作業完了'
-message通知本文-message 'リクエストされた作業が完了しました'
-sound通知音-sound default
-group通知グループID(同グループは置換される)-group 'claude-code'
-open通知クリック時に開くURL-open 'https://...'
-appIcon通知アイコン画像-appIcon '/path/to/icon.png'

-groupオプションを使用すると、同じグループの前の通知が新しい通知に置き換えられ、通知センターがClaude通知で埋まるのを防げます。

Claude Code Hooksとは?

HooksはClaude Codeで特定のイベントが発生した時に自動的に実行されるコマンドです。settings.jsonで設定し、様々なイベントにシェルコマンドを紐付けることができます。

通知に活用できる主なHookイベントは以下の通りです。

イベント発生タイミング活用
StopClaude応答完了時作業完了通知
Notificationユーザー入力が必要な時権限リクエスト、入力待ち通知

settings.jsonファイルの場所

Claude Codeの設定ファイルは用途に応じて複数の場所に存在します。

スコープファイルパス適用対象
ユーザー(グローバル)~/.claude/settings.json全プロジェクトに適用
プロジェクト.claude/settings.jsonプロジェクト内の全協力者
ローカル.claude/settings.local.json自分のみ、該当プロジェクトのみ

通知設定は個人環境によって異なるため、ユーザー(グローバル)設定~/.claude/settings.json)に追加することを推奨します。

Hookの構造

Hookは以下の構造で設定します。

{
  "hooks": {
    "イベント名": [
      {
        "matcher": "マッチングパターン",
        "hooks": [
          {
            "type": "command",
            "command": "実行するシェルコマンド"
          }
        ]
      }
    ]
  }
}
  • イベント名: Hookが実行されるイベント(StopNotificationなど)
  • matcher: Hookが実行される条件をフィルタリングするパターンです。"*"に設定すると全ての場合に実行されます。
  • type: 実行タイプです。"command"はシェルコマンドを実行します。
  • command: 実行するシェルコマンドです。

Stop Hook — 作業完了通知

Claudeが応答を完了(作業が終了)した時に通知を送る設定です。

{
  "hooks": {
    "Stop": [
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "terminal-notifier -title 'Claude Code' -subtitle '作業完了' -message 'リクエストされた作業が完了しました' -sound default -group 'claude-code'"
          }
        ]
      }
    ]
  }
}

この設定を適用すると、Claudeにどんな作業を任せても、作業が終わった瞬間にmacOSデスクトップ通知が表示されます。

各オプションの説明:

  • -title 'Claude Code': 通知上部にClaude Codeというタイトルが表示されます。
  • -subtitle '作業完了': タイトルの下に作業完了というサブタイトルが表示されます。
  • -message 'リクエストされた作業が完了しました': 通知本文メッセージです。
  • -sound default: macOSデフォルト通知音が再生されます。他の作業に集中していても音で気づくことができます。
  • -group 'claude-code': 同じグループIDの通知を一つにまとめます。連続して複数の作業を指示しても通知が溜まらず、最新の通知に置き換えられます。

Notification Hook — 入力待ち通知

Claudeがユーザーの入力を待っている時(権限リクエスト、質問など)に通知を送る設定です。

{
  "hooks": {
    "Notification": [
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "terminal-notifier -title 'Claude Code' -subtitle '入力待ち' -message '権限リクエストまたは入力待ちです' -sound default -group 'claude-code'"
          }
        ]
      }
    ]
  }
}

Claude Codeのデフォルトモード(Editモード)では、ファイル修正やコマンド実行などにユーザーの権限承認が必要です。Notification Hookがないと、Claudeが権限確認を要求して止まっているのを知らずに待ち続けてしまうことがあります。

この設定を適用すると、Claudeが入力を待つ瞬間にすぐ通知が届くので、素早く戻って承認し作業を続けることができます。

全体設定

Stop HookとNotification Hookを合わせた~/.claude/settings.jsonの全体設定です。

{
  "hooks": {
    "Stop": [
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "terminal-notifier -title 'Claude Code' -subtitle '作業完了' -message 'リクエストされた作業が完了しました' -sound default -group 'claude-code'"
          }
        ]
      }
    ],
    "Notification": [
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "terminal-notifier -title 'Claude Code' -subtitle '入力待ち' -message '権限リクエストまたは入力待ちです' -sound default -group 'claude-code'"
          }
        ]
      }
    ]
  }
}

両方のHookを設定すると、以下のような流れで通知を受け取ることができます。

  1. Claudeに作業を任せて別の作業をします。
  2. Claudeが権限確認が必要な場合 → **「入力待ち」**通知が届きます。
  3. 権限を承認して再び別の作業に戻ります。
  4. Claudeが作業を完了した場合 → **「作業完了」**通知が届きます。

この二つの通知だけで、ターミナルを確認せずともClaudeの状態を把握できます。

設定の確認

設定が正しく適用されたかClaude Code内で確認できます。

/hooks

/hooksコマンドを実行すると、現在設定されているHookの一覧を確認できます。

または、以下のコマンドで設定ファイルの内容を直接確認できます。

cat ~/.claude/settings.json

設定ファイルを修正した後は、Claude Codeを再起動する必要なくすぐに適用されます。

macOS通知権限の設定

terminal-notifier通知が表示されない場合、macOSの通知権限設定を確認する必要があります。

  1. システム設定 > 通知 に移動します。
  2. アプリ一覧からterminal-notifierを探します。
  3. 通知を許可がオンになっているか確認します。
  4. 通知タイプがバナーまたは通知に設定されているか確認します。

初めてterminal-notifierを実行すると、macOSが通知権限を尋ねるポップアップを表示します。許可を選択しないと通知が正常に表示されません。

**おやすみモード(集中モード)**が有効になっていると通知が表示されない場合があります。必要に応じて、terminal-notifierを集中モードの許可アプリに追加してください。

完了

以上でClaude Codeにおけるterminal-notifierを活用した通知設定方法について解説しました。Stop HookとNotification Hookの二つを設定するだけで、作業完了と入力待ち状態を見逃さず効率的に作業できます。

Claude Codeに作業を任せて別の作業に集中できるようになりますので、まだ設定していない方はぜひ適用してみてください。

私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!

アプリ広報

今見てるブログを作成たDekuが開発したアプリを使ってみてください。
Dekuが開発したアプリはFlutterで開発されています。

興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。



SHARE
Twitter Facebook RSS