【2020-10-01 追記】当機能は廃止されました。
僕は、毎日の日記を Scrapbox に書いている。そして、その更新頻度を Pixela に連携させている。これについては以前このブログでも書いている(Scrapbox への更新がどれくらい活発におこなわれているかを Pixela で可視化する - えいのうにっき)。
それとは別に、Pixela には通知機能がすでに実装されている。
ただこれは、「あらかじめ指定しておいた数値(閾値)を超えたら、そのことを通知する」というものであり、例えば僕の日課のような「毎日日記を書く」といったようなことの場合、「一定以上たくさん日記を書けたこと」については通知を受け取ることができても、「その日、日記を書き忘れていること」については通知を受け取ることができなかった。
......と、いうのは昨日までの話。今日の Pixela のアップデートにより、「あらかじめ指定しておいた数値(閾値)」を「指定した時間までに超えていなかったら通知させる」ということができるようになりました。いわゆるリマインド機能ですね。
Release v1.17.0 · a-know/Pixela · GitHub
やりかた
リマインドの設定方法の説明を、上記の例をそのまま使って、「Scrapbox の更新が毎日21時までに0回だったら、slack に通知させる」ことを例にして以下に紹介する。
まずは「Scrapbox の更新頻度を Pixela に連携させる」ことを、下準備としてやっておく。それについては Scrapbox への更新がどれくらい活発におこなわれているかを Pixela で可視化する - えいのうにっき に、ユーザー登録からコマンド例つきで書いているのでそちらを参照されたし。
つづいて、通知関連の設定。まずは、通知先となる slack チャンネルの情報を登録する必要がある。「どこに通知するか」という通知先に関する情報のことを Pixela では「Channel(チャンネル)」としている。以下のようなコマンドを実行することにより、チャンネルを作成することができる。
$ curl -X POST https://pixe.la/v1/users/a-know/channels -H 'X-USER-TOKEN:thisissecret' -d '{"id":"my-channel","name":"My slack channel","type":"slack","detail":{"url":"https://hooks.slack.com/services/T035DA4QD/B06LMAV40/xxx","userName":"Pixela Notification","channelName":"pixela-notify"}}'
この https://hooks.slack.com/services/T035DA4QD/B06LMAV40/xxx
の部分については、あらかじめあなたの slack workspace で Incoming Webhook URL
を生成しておく必要がある。slack の incoming webhook の作成方法についての説明はここでは割愛するが、詳細は以下を参照されたし。
最後に、通知条件の指定。「何がどうなったときに通知をおこなうか」という通知条件を Pixela に登録しておくわけだが、この条件のことを Pixela では Notification
としている。これを作成するには、以下のようなコマンドになる。
$ curl -X POST https://pixe.la/v1/users/a-know/graphs/scrapbox/notifications -H 'X-USER-TOKEN:thisissecret' -d '{"id":"sb-reminder","name":"Scrapbox Reminder","target":"quantity","condition":">","threshold":"0","remindBy":"21","channelID":"my-channel"}'
ポイントは以下。
Notification
はグラフごとに設定する形になるので、a-know
というユーザーでscrapbox
というグラフを作ったなら、/users/a-know/graphs/scrapbox/notifications
になるchannelID
に指定している文字列は、channel を作ったときに指定したid
に対応している。remindBy
が、今回のアップデートにより指定できるようになった項目。0
から23
を指定できる。指定しておくと、毎日その時刻になったら進捗が自動的にチェックされ、Notification
で指定した条件を満たしていなかったら、通知がおこなわれる。- 上の例のように、
"remindBy":"21"
としている場合、毎日21時に更新回数が 0 より大きい("condition":">","threshold":"0"
)という条件を満たしていなかったら、通知がおこなわれる。 - 何も指定しなかった場合(
"remindBy":""
)は、リマインドはおこなわれない。
これをつかって実際にリマインドを受けてみた様子が以下。
ぜひ使ってみてください
毎日飲まなきゃいけない薬。積極的なレビューが推奨されている Pull Request。毎日5ページは読むと決めた本。今回の Pixela のアップデートが、あなたが決めた毎日の日課の達成の助けとなれば、幸いです。