要点まとめ
- terminal-notifierやosascriptはmacOS通知センターへローカル通知を投稿するため、単体ではiPhoneに届きません。
- NotiFerryを使えば、既存のスクリプトを書き換えずに terminal-notifier、Script Editor、Ghostty、iTerm2 の通知をiPhoneへ自動転送できます。
- 新しいスクリプトから無料で直接iPhoneへ送りたい場合は、~/.zshrc に curl + ntfy.sh の小さな関数を追加する方法も有効です。
terminal-notifierとosascriptがmacOSで動く仕組み
macOSのシェルスクリプトやMakefile、cron / launchdジョブからデスクトップ通知を出す場合、主に以下の2つが使われます。
# 1. Homebrewの terminal-notifier でMacに通知を出す
brew install terminal-notifier
terminal-notifier -title "バックアップ完了" -message "Time Machine と rsync が完了しました"
# 2. 追加インストール不要の osascript で通知を出す
osascript -e 'display notification "マイグレーションが完了しました" with title "PostgreSQL"'どちらも最終的にはmacOSの通知デーモン(usernoted)にレコードを書き込みます。つまり、Macの通知センターを読み取れる仕組みがあれば、すべてのCLI通知をそのままスマホへ中継できます。
方法1:スクリプトを書き換えずにNotiFerryでiPhoneへ転送する
すでに dotfiles、テストランナー、ビルドスクリプト、Claude Codeフックなどで terminal-notifier やターミナルのベル通知を使っている場合、それらをすべて curl に書き換えるのは手間がかかります。
- NotiFerryで通知センターの読み取り専用アクセスを許可: フルディスクアクセスは不要で、通知センターの単一フォルダのみを選択します。
- 対象アプリにCLI通知元を追加:
terminal-notifier、Script Editor(osascriptの送信元)、およびお使いのターミナル(Ghostty、iTerm2、Kitty、WezTerm)にチェックを入れます。 - MacとiPhoneの両方で受信: デスクにいるときはMacの画面右上にバナーが表示され、席を離れているときはiPhoneやApple Watchのntfyで同じ通知を確認できます。
方法2:~/.zshrcにntfy送信関数を追加する(無料・CLI単体)
特定のコマンドの完了だけを無料でiPhoneへ飛ばしたい場合は、~/.zshrc に以下のような小さな関数を定義しておくと便利です。
# ~/.zshrc に追加しておくと、コマンドの後に notify-iphone を繋げるだけでiPhoneへ通知
notify-iphone() {
local title="${1:-ターミナル}"
local body="${2:-コマンドが完了しました}"
curl -s -H "Title: ${title}" -d "${body}" "https://ntfy.sh/your-private-topic" >/dev/null
}
# 使い方:長時間コマンドの後に呼び出す
npm run build && notify-iphone "ビルド成功" "本番バンドルの生成が完了しました"CLI通知アプローチの比較
| 方法 | Mac画面のバナー | iPhoneへの通知 | 既存スクリプトの変更 |
|---|---|---|---|
| terminal-notifier / osascript 単体 | あり | なし | 不要 |
| curl + ntfy 関数 | なし(別途呼び出しが必要) | あり(無料) | 各コマンドの書き換えが必要 |
| terminal-notifier + NotiFerry | あり | あり(GUIアプリも一括対応) | 不要(そのまま動作) |
MacとiPhoneでの動作イメージ
macOSの通知センターフォルダに読み取り専用アクセスを許可し(フルディスクアクセス不要)、iPhoneの無料アプリ「ntfy」で専用トピックを購読します。テスト通知の受信を確認すると、7日間の無料トライアルが開始されます。

よくある質問
terminal-notifierにはiPhoneへ直接プッシュ通知を送るオプションはありますか?
いいえ。terminal-notifierはmacOSのローカル通知センター(NSUserNotification / UNUserNotificationCenter)にバナーを投稿するためのCLIツールであり、ネットワーク経由でiPhoneへ送信する機能は持っていません。
既存のシェルスクリプトやMakefileに書かれた terminal-notifier をそのままiPhoneへ飛ばせますか?
はい。terminal-notifierやosascript(Script Editor)が投稿した通知はすべてmacOS通知センターに記録されるため、NotiFerryで対象アプリとして有効にすれば、既存のスクリプトを1行も書き換えることなくiPhoneのntfyアプリへ自動転送されます。
Ghostty、iTerm2、Kitty、WezTermのコマンド完了通知も転送できますか?
はい。これらのターミナルエミュレータは、バックグラウンドタブで長時間コマンドが完了した際やOSC 9 / OSC 99 / OSC 777エスケープシーケンスを受け取った際にmacOS通知センターへ通知を送るため、NotiFerryでそのままiPhoneへ転送できます。
新しくスクリプトを書く場合は terminal-notifier と curl のどちらが良いですか?
1〜2個のシェルスクリプトからiPhoneだけに通知したい場合は、curlでntfyへ直接POSTするシェル関数が最もシンプルで無料です。Macの画面にもバナーを出しつつ、席を離れているときはiPhoneでも受け取りたい場合や、多数のスクリプト・GUIアプリを一括管理したい場合はNotiFerryとの組み合わせが便利です。