みんなのケータイ

サンデープログラマーはClaude Codeにプッシュ通知をしてほしい

 AIにプログラミングしてもらう、いわゆるバイブコーディング、みなさんも楽しんでいるでしょうか。Claude Codeとか、OpenAIのCodexとか、GoogleのAntigravityとか他にもいろいろありますが、最近筆者はClaude Codeでいろいろ遊んでいます。

Claude Codeのデスクトップアプリ

 Claude Codeを使うときにはいくつか選択肢があって、Webでも使えるし、WindowsやMacのデスクトップアプリでも、コマンドプロンプト(ターミナル)でも、コードエディタのVisual Studio Code(の拡張機能)でも、わりと好きな場所から使うことができます。

 分かりやすさでいうとデスクトップアプリかVisual Studio Codeの拡張機能なのですが、ベーシックなのはターミナルです。

 なんとなく原始的な感じでとっつきにくさはあるけれども、ターミナルで使う場合は他にはないメリットがあります。それは、ちゃんと「通知」してくれること。これがけっこう重要だったりします。

Visual Studio Codeで開発中。拡張機能ではなくターミナルでClaude Codeを使う

 たとえばClaude Codeに何か作業をお願いした後、自分自身はたいてい他の作業に移ることになります。コーディングはClaude Codeにまかせてしまって、人間の方は真面目に原稿を書いたり、SNSを見たり、動画を見たり、音楽を聞いたり、お昼ご飯は何にしようかな~なんて物思いにふけったりするわけです。

 そうすると、Claude Code先生が作業を終えたとしても、あるいは作業途中でユーザーに何か確認を求めてきたりしても、気づけなかったりします。長時間放置することになれば、せっかくのパラレル作業があまり意味のないものになってしまいます。

 中断することなしに、自動でプラン策定からコーディング、テスト、改善まで自動で回す方法もありますが、プロジェクトの内容によっては1つ1つ作業結果を確認して、ユーザー自身の手でテストしながら進めたいときもあります。なので、作業が中断してしまっているときは、それにできるだけ早く気づけるようにしたい。

 それに使える仕組みとして、Claude Codeでは「フック(hooks)」や「通知(Notification)」というものが用意されています。これがうまく機能してくれるのが、他ならぬターミナルでの実行です。

 Visual Studio Codeの拡張機能だと必要な設定をしてもなぜかうまく動きません。デスクトップアプリには「通知」機能はあるものの、パソコンのデスクトップへの通知でしかないので不十分です。

フックに関する公式のヘルプページ

 このフックと通知の機能を使って、あれこれやると、スマホにもプッシュ通知を送ることができます。パソコンから離れてしまっても、作業が止まったときにはスマホに通知が来てそれに気づけるわけです。

 さらに筆者は、スマホとスマートウォッチを連携させているので、通知がスマートウォッチにも届きます。Claude Codeの叫びをいつでもどこでも受け取れるのです。

 設定の仕方は環境などによって変わりますが、作業フォルダに「.claude」フォルダを作成し、そこに以下のような内容の「settings.json」を保存します。これはWindows(bashインストール済み)での例です。

settings.jsonの例
{
  • "permissions": {
  • "allow": [
  • "Bash(dir:*)"
  • ]
  • },
  • "hooks": {
  • "Notification": [
  • {
  • "matcher": "",
  • "hooks": [
  • {
  • "type": "command",
  • "command": "bash /mnt/ドライブ文字列/path/to/project/.claude/notify.sh"
  • }
  • ]
  • }
  • ]
  • }
  • }

     でもって、上記の「command」で指定したパスにある通り「notify.sh」というファイルを作って、以下のような内容で保存します。

    notify.shの例
    #!/bin/bash
    • curl.exe -s -H "Title: Claude Code" -d "アタシ、待ってる!" https://ntfy.sh/something-else

       次に「ntfy」というスマホアプリをインストールします。これは、任意の文字列(トピック)を識別用のキーにして通信内容をサーバー~クライアント(パソコンやスマホ)間でやりとりできるようにするツールです。

       ちょっと分かりにくいかもしれませんが、アプリで「something-else」というトピックに決めたとして、それを先述のように「https://ntfy.sh/something-else」と記述しておくと、ざっくり以下のような流れで処理されます(このURL自体に認証などはないので、知っている人は自由にアクセスできてしまいます。類推しにくい文字列にしましょう)。

       「Claude Codeが作業を終えると、settings.jsonで設定したコマンドが実行される」→「https://ntfy.sh/something-else にメッセージ送信される」→「サーバーがそれを受け取る」→「サーバーとスマホが通信し、スマホ画面に通知する」という流れ。

      画面右下の「+」ボタンをタップ
      任意のキーワードを入力して「購読する」をタップ。あとは待つだけ

       これにより、Claude Codeが作業を一時停止するようなことがあると、スマホやスマートウォッチに通知が送られ、処理がストップしたんだな、ということに気づけます。トリガーが発火するのに(仕様上)タイムラグがあるときもありますが、いつまでも待機させることにはならないので効率的にClaude Codeを動かせるようになるはずです。

      Claude Codeが待機状態になると……
      スマホとスマートウォッチに通知が届く

       この通知のおかげでClaude Codeを使ったコーディング効率は劇的にアップしました。メッセージが1つしかないとなんとなく飽きてくるので、筆者はnotify.shでたくさんのメッセージパターンを設定しています。Claude Code先生のいろいろな叫びが聞けて楽しい感じ。じっくりマイペースでバイブコーディングしていきたい方におすすめです。

      大量のメッセージパターンを追加しておくと楽しくなっちゃう