Skip to content

システム通知

システム通知とは、オペレーティングシステムのネイティブなアラートであり、システムの通知センターまたはシステムトレイに表示されます。IDE内蔵の通知(エディタ内でのみ表示される)とは異なり、以下の状況でもシステム通知は表示され続けます:

  • IDEが最小化されている、またはバックグラウンドで実行中
  • 他のアプリケーションを使用中
  • スクリーンがロックされている(OSの設定による)
  • コンピュータから離れている

これらの通知は、以下のような情報を提供します:

  • タスク完了ステータス
  • 重大なエラーまたは警告
  • 長時間実行される操作の進捗状況
  • 重要なシステムイベント

対応オペレーティングシステム

システム通知は主要なプラットフォームすべてで動作しますが、それぞれ異なる基盤技術を利用しています:

オペレーティングシステム技術必要条件
macOSAppleScript + terminal-notifier組み込みサポートあり;オプションで機能強化可能
WindowsPowerShell + Windows ランタイムPowerShell 実行ポリシーの適切な設定が必要
Linuxnotify-sendlibnotify パッケージのインストールが必要

プラットフォーム別設定方法

macOS 設定

macOS はシステム通知に対して最も優れた組み込みサポートを提供しており、以下の2つの方法が利用可能です:

方法1: 組み込み AppleScript(フォールバック用)
追加設定不要。macOS のネイティブコマンドを利用して通知を表示します。

方法2: terminal-notifier による強化(推奨)
カスタムアイコンなど、よりリッチな通知を利用するには terminal-notifier をインストールしてください:

bash
# Homebrew でインストール
brew install terminal-notifier

# または npm でインストール
npm install -g terminal-notifier

動作方式: VJSP はまず terminal-notifier の使用を試みます。見つからない場合は自動的に AppleScript にフォールバックします。

Windows 設定

Windows の通知機能には、PowerShell の実行ポリシーを適切に設定する必要があります。

ステップ1: PowerShell 実行ポリシーの設定
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

bash
sudo apt update
sudo apt install libnotify-bin
which notify-send  # インストール確認

Red Hat / CentOS / Fedora

bash
# RHEL/CentOS
sudo yum install libnotify

# Fedora
sudo dnf install libnotify

which notify-send  # 確認

Arch Linux

bash
sudo pacman -S libnotify
which notify-send  # 確認

デスクトップ環境との互換性

デスクトップ環境サポートレベル備考
GNOME✅ 完全対応ネイティブ通知センター
KDE Plasma✅ 完全対応統合通知システム
XFCE✅ 良好通知デーモンが必要
Unity✅ 完全対応Ubuntu の通知システム
i3 / Sway⚠️ 制限あり手動でのデーモン設定が必要
Headless❌ 非対応ディスプレイサーバーが利用不可

通知デーモンの設定(上級者向け)

軽量ウィンドウマネージャーを使用している場合、手動で通知デーモンを起動する必要があります:

bash
# dunst(軽量デーモン)をインストール
sudo apt install dunst    # Debian/Ubuntu
sudo pacman -S dunst      # Arch

# 手動で起動
dunst &

# ウィンドウマネージャー起動時に自動起動させる場合
echo "dunst &" >> ~/.xinitrc

システム通知の検証

プラットフォーム別のテストコマンド

macOS

bash
# 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 Tink

Windows

powershell
$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

bash
# 基本テスト
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 から離れていても重要な更新を見逃すことはありません。