⚙️ 自動化

通知アラートシステム

システムイベント、ファイル変更、定期リマインダーの自動通知を設定します

★☆☆ 初級 15 min 2025年1月13日

ユースケース

常に監視することなく重要なイベントを把握することは不可欠です。Cowork は、特定の条件が満たされたときにアラートを送信する通知システムの設定を支援できます。

プロンプト例

Mac で自動通知を設定したいです。以下を作成してください:

1. ファイル監視:
   - ~/Downloads にファイルが追加されたらアラート
   - ~/Documents/Important が変更されたらアラート

2. システムアラート:
   - ディスク使用量が 80% を超えたら通知
   - 特定のプロセスが停止したらアラート

3. スケジュールリマインダー:
   - 毎日午前 9:45 にデイリースタンドアップリマインダー
   - 毎週日曜日にバックアップリマインダー

スクリプトと launchd 設定を作成してください。~/Scripts/notifications/ に保存

Cowork の動作

  1. モニターセットアップ: ファイルとシステムウォッチャーを作成します
  2. アラート設定: ネイティブ通知を設定します
  3. スケジュール定義: launchd/cron ジョブを作成します
  4. スクリプト生成: 監視スクリプトを作成します
  5. ドキュメント: セットアップ手順を提供します

出力サンプル

#!/bin/bash
# download_watcher.sh - Downloads フォルダを監視

WATCH_DIR="$HOME/Downloads"
LOG_FILE="$HOME/Scripts/notifications/download.log"

fswatch -0 "$WATCH_DIR" | while read -d "" event; do
    filename=$(basename "$event")

    # 部分ダウンロードをスキップ
    if [[ "$filename" == *.crdownload ]] || [[ "$filename" == *.part ]]; then
        continue
    fi

    # 隠しファイルをスキップ
    if [[ "$filename" == .* ]]; then
        continue
    fi

    # 通知を送信
    osascript -e "display notification \"$filename\" with title \"新しいダウンロード\" sound name \"Glass\""

    # イベントをログに記録
    echo "$(date '+%Y-%m-%d %H:%M:%S') - 新しいファイル: $filename" >> "$LOG_FILE"
done
#!/bin/bash
# disk_check.sh - ディスク使用量を監視

THRESHOLD=80

# ディスク使用率を取得(macOS)
USAGE=$(df -h / | awk 'NR==2 {gsub(/%/,""); print $5}')

if [ "$USAGE" -gt "$THRESHOLD" ]; then
    osascript -e "display notification \"ディスク使用量 ${USAGE}%\" with title \"警告: ディスク容量\" sound name \"Basso\""

    # オプション: クリーンアップを支援するため Finder を開く
    # open ~/Downloads
fi
#!/bin/bash
# standup_reminder.sh - デイリースタンドアップリマインダー

osascript <<EOF
display dialog "デイリースタンドアップまで 15 分です!

準備:
- 昨日やったこと
- 今日やること
- ブロッカーはあるか" with title "スタンドアップリマインダー" buttons {"閉じる", "メモを開く"} default button "閉じる"

if button returned of result is "メモを開く" then
    tell application "Notes" to activate
end if
EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <!-- com.user.standup-reminder.plist -->
    <key>Label</key>
    <string>com.user.standup-reminder</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/you/Scripts/notifications/standup_reminder.sh</string>
    </array>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>9</integer>
        <key>Minute</key>
        <integer>45</integer>
    </dict>
    <key>RunAtLoad</key>
    <false/>
</dict>
</plist>

インストール

# ファイル監視用の fswatch をインストール
brew install fswatch

# launchd サービスをロード
launchctl load ~/Library/LaunchAgents/com.user.standup-reminder.plist
launchctl load ~/Library/LaunchAgents/com.user.disk-check.plist

# ダウンロードウォッチャーをバックグラウンドで開始
nohup ~/Scripts/notifications/download_watcher.sh &

ヒント

  • 重要なアラートにはネイティブ通知を使用する
  • リモートアラート用に Slack/Discord との統合を検討する
  • 通知頻度を適切に保つ
  • 重要なアラートにはサウンドを追加する