Macにおけるローカル通知の実装方法
Mac環境で通知を実行するには Apple Scriptをコマンドラインで実行する osascript
コマンドを利用できる。例えば、Cursorであれば、Cursr Rulesに以下のプロンプトを記載し、コマンドを実行を Auto-run にするとコード生成完了時に通知が来るようになる。
完了時に以下をコマンド実行 osascript -e 'display notification "Please check the generated code." with title "Cursor" subtitle "✅ Code Editing Completed." sound name "Bell"'
それぞれに対応する要素は上記の画像の通り。通知音を鳴らせるのも便利。ただし、あくまで Apple Scriptの実行となるため、通知をクリックしてもCursor側のWindowには戻らないため、どの処理が終わったのかも表示した方が使いやすいかもしれない。
通知が鳴らない場合には、OS側での通知許可がない可能性が高い。その場合においてはアプリケーション→ユーティリティからスクリプトエディタを起動して以下を実行。
display notification "Hello from AppleScript" with title "Setup"
その上で、Macの設定を開いて、通知セクションからスクリプトエディタによる許可を明示的に設定することでコマンドラインからも通知ができるようになるはずだ。
デプロイ時の成功/失敗通知を音で分かるにようにする
応用編として、デプロイ時の成功と失敗を音とアイコンで直感的に分かるようなシェルスクリプトを組んだ。
DEPLOY_OUTPUT=$(deploy_command) 2>&1) if [ $? -eq 0 ]; then osascript -e "display notification \"Deployment succeeded.\" with title \"Visual Studio Code\" subtitle \"✅ Cloud Function ${FUNCTION_NAME} deployment.\" sound name \"Bell\"" else ERROR_MESSAGE=$(echo "$DEPLOY_OUTPUT" | head -n 1 ) osascript -e "display notification \"Deployment failed: ${ERROR_MESSAGE}\" with title \"Visual Studio Code\" subtitle \"❌ Cloud Function ${FUNCTION_NAME} deployment.\" sound name \"Basso\"" echo "Deployment failed for ${FUNCTION_NAME}." echo "Error: ${ERROR_MESSAGE}" fi
この例では、 $? で直前のデプロイコマンドの成否を返して、標準エラーメッセージを標準出力にも入れつつ、最初の1行を表示させることでエラーメッセージを通知している。音としても Bell とBasso に切り分けることで他のことをしていても直感的に状況がわかる。
なぜ今、ローカル通知が必要なのか?
AIが生成をしている間、人間は別のことができる。特に『Replit – Build apps and sites with AI』といったサービスを利用するとiPhoneのモバイルアプリで指示を出せばコードが生成され、開発環境にデプロイされて動作確認までできる。待ち時間はそれなりにあるが、コード生成が終わるか追加判断が必要であれば通知がくる。ChatGPTのDeepResearchなどと同じで生成をいちいち見守る必要はない。
かつての開発といえば、1ウィンドウ、1ブランチ、1人称視点が常識だったが、AIコードエージェントによる自動生成部分が増えていくのにあたっていかに単位時間あたりの命令を生成しておくかが重要になった。コード生成時間にシーケンシャルに待っていたり、遊んでいるのであれば楽にはなったが生産性自体は上がっていない。ひとつのソフトウェアにおいて、AIエージェントの力を最大限に発揮するためには複数ウィンドウで、単一リポジトリのコードクローンを作って、異なるモジュールに対して同時多発的にプルリクを創造する必要がある。
このような、"聖徳太子コーディング" が前提になった時に欲しくなるのが、それぞれのタスクの完了を「すぐ」「はっきり」知らせてくれるローカル通知である。開発環境デプロイであったり、コード生成であったりには一定の時間がかかり、失敗することもあるため別のことを始めていても結果はすぐに知りたい。バイブコーディング段階でCI/CD環境を構築していちいちデプロイしていくも厳しいため、ローカル通知での完結が便利。