node-scheduleという予定を登録して実行するnpmライブラリの紹介
node.jsを使っていて出会った、使い勝手の良さそうなライブラリ(俺基準)を紹介していくシリーズを初めてみました。
node-schedule
https://www.npmjs.org/package/node-schedule
指定時間に登録したタスクを実行してくれるライブラリです。 Dateオブジェクト、日時指定、時刻指定、CRON形式での指定等に対応し、非常に使い勝手が良いです。
installation
npm install
usage
scheduleJob
メソッドを呼び出すことでタスクが登録されます。
第一引数に実行タイミング、第二引数にジョブ名(省略可)、第三引数に実行したいタスクを登録します。 返り値はJobオブジェクトです。
var schedule = require("node-schedule"); var job = schedule.scheduleJob(timing, name, fn);
JobオブジェクトはEventEmitterを利用しており、いくつかのフックポイントが提供されています。
- scheduled: タスクの登録時
- run: タスク実行
- cahceled: 予定のキャンセル時
job.on("scheduled", function () { console.log(this.name + "の予定が登録されました"); }); job.on("run", function () { console.log(this.name + "の予定が実行されました"); }); job.on("canceled", function () { console.log(this.name + "の予定がキャンセルされました"); });
Dateオブジェクトを使う場合
下記は2014/07/05 22:30:00
に処理を実行する場合の例です。
var job = schedule.scheduleJob(new Date(2014, 07, 05, 22, 30, 0), function () { console.log("登録されたジョブの実行"); });
日時を指定する場合
以下の項目をオブジェクトで定義します。
- year
- month
- day
- dayOfWeek
- hour
- minute
- second
下記は毎日18:30
に処理を実行する場合の例です。
var job = schedule.scheduleJob({ hour : 18 minute: 30 }, function () { console.log("実行"); });
CRON形式
下記は毎日18:30
に処理を実行する場合の例です。
-
による範囲指定は可能ですが、/
による指定はできないようです。(たぶん)
var job = schedule.scheduleJob('30 18 * * *', function () { console.log("実行"); });
まとめ
node-scheduleはご覧の通り、特定日時や特定時間での繰り返し処理に向いています。 記法が多岐に渡り、様々なタイマー処理に適応できます。
ちなみに僕はIRCBotでミーティングや予定のリマインドに利用しています。 ぜひ使ってみてください