えいのうにっき

a-knowの日記です

日課の未達成を Pixela にリマインドさせる(Pixela v1.17.0 リリース)

僕は、毎日の日記を Scrapbox に書いている。そして、その更新頻度を Pixela に連携させている。これについては以前このブログでも書いている(Scrapbox への更新がどれくらい活発におこなわれているかを Pixela で可視化する - えいのうにっき)。

それとは別に、Pixela には通知機能がすでに実装されている。

blog.a-know.me

ただこれは、「あらかじめ指定しておいた数値(閾値)を超えたら、そのことを通知する」というものであり、例えば僕の日課のような「毎日日記を書く」といったようなことの場合、「一定以上たくさん日記を書けたこと」については通知を受け取ることができても、「その日、日記を書き忘れていること」については通知を受け取ることができなかった。

......と、いうのは昨日までの話。今日の 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 の作成方法についての説明はここでは割愛するが、詳細は以下を参照されたし。

api.slack.com

最後に、通知条件の指定。「何がどうなったときに通知をおこなうか」という通知条件を 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":"")は、リマインドはおこなわれない。

これをつかって実際にリマインドを受けてみた様子が以下。

f:id:a-know:20200405191358p:plain

ぜひ使ってみてください

毎日飲まなきゃいけない薬。積極的なレビューが推奨されている Pull Request。毎日5ページは読むと決めた本。今回の Pixela のアップデートが、あなたが決めた毎日の日課の達成の助けとなれば、幸いです。