デスクトップ通知が出来るnode.jsライブラリ「node-notifier」



今やweb開発のみならずバッチ処理やデスクトップアプリ等、様々な場面で活躍するnode.jsですが、デスクトップ通知(notification)が出来るnode.jsのライブラリ" node-notifier "の紹介です。

* デスクトップ通知

* 実際にMac上で使ってみました

node-notifierはポップアップ形式でデスクトップ通知を表示出来るライブラリで、クラスプラットフォーム(Windows, Mac, Linux)で動作します。

* 対応プラットフォーム

Mac OS X: 10.8以上 又は Growlがインストールされている環境.
Linux: notify-osd 又は libnotify-binがインストールされている環境 (Ubuntuにはデフォルトで搭載)
Windows: 8以上 又は Growlがインストールされている環境.

* 参考画像: Growl ( デスクトップ通知アプリケーション )


node-notifierのインストール

下記のスニペットをコマンドラインライン上で打つとnode-notifierのインストールが開始されます。
( node.jsのインストールは事前に済ませておいてください )

# node.js v5.9.0で検証をしましたが問題なく動作しました

# node-nofifierのインストール
npm install --save node-notifier


node-notifierの使い方

node-notifierの使い方は至ってシンプル。以下のスニペットが最小のコードです。

// app.js

const notifier = require('node-notifier');

// Object
notifier.notify({
  'title': '最小限のnode-notifier',
  'message': 'Hello Notification!!'
});

# コマンドライン上で実行
node app.js

* 上のコードを実行した結果

また、通知を出した後にコールバック処理をさせることも出来ます。何かのバッチ処理を書いた時に"処理が始まりました" -> ”処理が終わりました”のような事ができますね。

その他にも通知をクリックした時の処理やタイムアウトの処理も可能。

const notifier = require('node-notifier');
const path = require('path');

notifier.notify({
  title: 'node-notifierテスト', // タイトル
  message: '例えば、ffmpegを使って、動画の変換を開始!など', //メッセージ
  icon: path.join(__dirname, '/img/icon.jpg'), // 画像  * 絶対パス (windowsのballoonsでは動きません)
  sound: true, // Macのnotification center 又は Windowsトースターのみ
  wait: true // 通知イベントのオプション * クリックイベントやタイムアウト等
  // 'open': 'file://' + __dirname + '/img/icon.jpg' ファイルを開かせることも出来ます
}, function (err, response) {
  // コールバック関数
  // 通知を出した後、何かをさせる場合はここに処理を記述していきます。
});

notifier.on('click', function (notifierObject, options) {
  // wait: true の場合にクリックされた時のイベント処理
    notifier.notify('クリックされました');
});

notifier.on('timeout', function (notifierObject, options) {
  // wait: true の場合にタイムアウト( 何もせず放置 )した時のイベント処理
    notifier.notify('タイムアウトです。');
});

* 左は実行時、右はクリック時


Summary

node-notifierは上で紹介したこと以外にも、GrowlやMacの通知センター、Windowsのtoasterやバルーンにも最適化することが出来ます。

Electronではデフォルトでデスクトップ通知のAPIが用意されているので、node-notifierを使う必要がありませんが、node.jsを使ってコマンドライン上で画像の一括ロスレス圧縮や、ffmpegのラッパー等を作る時には重宝しそうなライブラリです。

単体で使うことは無いと思いますが、何かと組み合わせると面白いものが出来そうですね。

GitHub: mikaelbr/node-notifier

 

この記事のカテゴリ
プログラミング

この記事に付けられているタグ