システム通知
システム通知とは、オペレーティングシステムのネイティブなアラートであり、システムの通知センターまたはシステムトレイに表示されます。IDE内蔵の通知(エディタ内でのみ表示される)とは異なり、以下の状況でもシステム通知は表示され続けます:
- IDEが最小化されている、またはバックグラウンドで実行中
- 他のアプリケーションを使用中
- スクリーンがロックされている(OSの設定による)
- コンピュータから離れている
これらの通知は、以下のような情報を提供します:
- タスク完了ステータス
- 重大なエラーまたは警告
- 長時間実行される操作の進捗状況
- 重要なシステムイベント
対応オペレーティングシステム
システム通知は主要なプラットフォームすべてで動作しますが、それぞれ異なる基盤技術を利用しています:
| オペレーティングシステム | 技術 | 必要条件 |
|---|---|---|
| macOS | AppleScript + terminal-notifier | 組み込みサポートあり;オプションで機能強化可能 |
| Windows | PowerShell + Windows ランタイム | PowerShell 実行ポリシーの適切な設定が必要 |
| Linux | notify-send | libnotify パッケージのインストールが必要 |
プラットフォーム別設定方法
macOS 設定
macOS はシステム通知に対して最も優れた組み込みサポートを提供しており、以下の2つの方法が利用可能です:
方法1: 組み込み AppleScript(フォールバック用)
追加設定不要。macOS のネイティブコマンドを利用して通知を表示します。
方法2: terminal-notifier による強化(推奨)
カスタムアイコンなど、よりリッチな通知を利用するには terminal-notifier をインストールしてください:
# Homebrew でインストール
brew install terminal-notifier
# または npm でインストール
npm install -g terminal-notifier動作方式: VJSP はまず terminal-notifier の使用を試みます。見つからない場合は自動的に AppleScript にフォールバックします。
Windows 設定
Windows の通知機能には、PowerShell の実行ポリシーを適切に設定する必要があります。
ステップ1: PowerShell 実行ポリシーの設定
PowerShell を管理者として開き、以下のコマンドを実行します:
# 現在のポリシーを確認
Get-ExecutionPolicy
# ローカルスクリプトの実行を許可(推奨)
Set-ExecutionPolicy RemoteSigned -Scope CurrentUserステップ2: Windows ランタイムへのアクセス確認
通知機能は PowerShell 経由で Windows.UI.Notifications API を使用します。対応環境は以下の通りです:
- ✅ Windows 10(すべてのエディション)
- ✅ Windows 11(すべてのエディション)
- ✅ Windows Server 2016 以降
- ❌ Windows 8.1 以前(制限あり、または非対応)
実行ポリシーオプション
| ポリシー | 説明 | セキュリティレベル | 推奨度 |
|---|---|---|---|
Restricted | すべてのスクリプト実行をブロック(デフォルト) | 最高 | ❌ 通知機能が無効になる |
RemoteSigned | ローカルスクリプトは実行可;ダウンロードされたスクリプトは署名必須 | 高 | ✅ 推奨 |
Unrestricted | すべてのスクリプトを実行(警告あり) | 中 | ⚠️ 注意して使用 |
AllSigned | すべてのスクリプトにデジタル署名が必要 | 最高 | ❌ 制限が厳しすぎる |
Linux 設定
Linux では libnotify パッケージと notify-send コマンドが必要です。
Ubuntu/Debian
sudo apt update
sudo apt install libnotify-bin
which notify-send # インストール確認Red Hat / CentOS / Fedora
# RHEL/CentOS
sudo yum install libnotify
# Fedora
sudo dnf install libnotify
which notify-send # 確認Arch Linux
sudo pacman -S libnotify
which notify-send # 確認デスクトップ環境との互換性
| デスクトップ環境 | サポートレベル | 備考 |
|---|---|---|
| GNOME | ✅ 完全対応 | ネイティブ通知センター |
| KDE Plasma | ✅ 完全対応 | 統合通知システム |
| XFCE | ✅ 良好 | 通知デーモンが必要 |
| Unity | ✅ 完全対応 | Ubuntu の通知システム |
| i3 / Sway | ⚠️ 制限あり | 手動でのデーモン設定が必要 |
| Headless | ❌ 非対応 | ディスプレイサーバーが利用不可 |
通知デーモンの設定(上級者向け)
軽量ウィンドウマネージャーを使用している場合、手動で通知デーモンを起動する必要があります:
# dunst(軽量デーモン)をインストール
sudo apt install dunst # Debian/Ubuntu
sudo pacman -S dunst # Arch
# 手動で起動
dunst &
# ウィンドウマネージャー起動時に自動起動させる場合
echo "dunst &" >> ~/.xinitrcシステム通知の検証
プラットフォーム別のテストコマンド
macOS
# AppleScript のテスト
osascript -e 'display notification "Test message" with title "Test Title" sound name "Tink"'
# terminal-notifier のテスト(インストール済みの場合)
terminal-notifier -message "Test message" -title "Test Title" -sound TinkWindows
$template = @"
<toast>
<visual>
<binding template="ToastText02">
<text id="1">Test Title</text>
<text id="2">Test message</text>
</binding>
</visual>
</toast>
"@
[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] | Out-Null
[Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType = WindowsRuntime] | Out-Null
$xml = New-Object Windows.Data.Xml.Dom.XmlDocument
$xml.LoadXml($template)
$toast = [Windows.UI.Notifications.ToastNotification]::new($xml)
[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier("Test App").Show($toast)Linux
# 基本テスト
notify-send "Test Title" "Test message"
# アイコン付き(任意)
notify-send -i dialog-information "Test Title" "Test message"トラブルシューティング
よくある問題と解決策
macOS
問題: 通知が表示されない
- ✅ システム設定 → 通知 → ターミナル(または IDE) → 「通知を許可」がオンになっているか確認
- ✅ 集中モード(Do Not Disturb) を無効化
- ✅ 上記のコマンドで手動テスト
- ✅
terminal-notifierを再インストール:brew install --force terminal-notifier
Windows
問題: 「スクリプトの実行は無効になっています」
- 🔧 次を実行:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
問題: Windows 11 で通知が表示されない
- ✅ 設定 → システム → 通知 → 通知を有効化
- ✅ 集中モード(Focus Assist) をオフ
- ✅ Windows Push Notifications User Service が実行中であることを確認
問題: PowerShell スクリプトエラー
- 🔧 PowerShell を v5.1 以上に更新
- 🔍 バージョン確認:
$PSVersionTable.PSVersion
Linux
問題: notify-send: command not found
- 🔧
libnotify-bin(Debian/Ubuntu)、libnotify(RHEL/Fedora)、またはlibnotify(Arch)をインストール
問題: i3/Sway で通知が表示されない
- 🔧 デーモンをインストール・実行:
sudo apt install dunst && dunst &
問題: 権限エラーまたはディスプレイが空欄
- 🔍 X11/Wayland セッションを確認:
echo $DISPLAYが:0などの値を返すことを確認 - 🔐 ユーザーがディスプレイサーバーにアクセスできることを確認
システム通知を適切に設定すれば、IDE から離れていても重要な更新を見逃すことはありません。
