花粉症の薬を飲むタイミングをSlackで通知する

アレグラ

花粉症なんですが、アレグラを飲んでいます。
ただ、年間とおしてこのシーズンしか薬を飲むという週間がないため
頻繁に飲み忘れが発生し
いつも変なタイミングで薬を飲んでいたので改善策を模索していたのですが、最終的にSlackに落ち着きました。

なぜSlackなのか?

まず、アレグラを飲むタイミングは毎食後とかではなく朝と、夕方の2回という事なので「飯食ったらとりあえず薬」みたいな週間が根付かせられません。(当社比)
そこで、手段として当初は以下の2案を考えていましたが、どちらも下記の事由につきうまくいきませんでした。

おくすり管理アプリを使う

検索してみると、この世にはとんでもないぐらい多くのお薬アプリがでまわっているようで、まず選ぶのから大変でした。
多くのお薬管理アプリは「飲み忘れ防止機能」的な通知が実装されてて良いなぁ と思ったんですが、困ったのが多機能すぎる事
2個くらいDLしてみたんですが初回の設定からくじけそうになりました。
自分しか使わないのに「薬を飲む人の名前」「薬の名前」「薬のグラム数」「各タイミングの飲む量」などなど。
あと、たまたま落としたアプリがイケてなかっただけかもしれませんが、UIが独特すぎて使い方わからなくて挫折した感ある。

そしてスマホアプリに頼ると、スマホ見てない時(夕方とか)は忘れる。
できればPC側にもお知らせしてほしい

カレンダーやTODOアプリに登録する

定期で登録するといいんじゃないっすかね。
と、思ったんですがまずカレンダーに毎日アレグラの予定入れるのなんか変だな って思ったのと、TODOアプリは自分の場合Wunderlist使ってるんですが
アレグラ飲むっていうタスクだけずっと残るの微妙説
が、ありましてこれらの案も却下となりました。

Slackが具合いいところ2点

スマホにもPCにも通知が飛ぶところ

外出時は、スマホに通知が来るのはいいんですけど、夕方18時頃にPCにもSlackクライアントを常駐させてさえいればDeskTopNotificationがきますね。
これがとても良い。
たまに見逃すんですがw

カスタマイズの柔軟性

なんにせよ、TODOアプリやお薬管理アプリは通知メッセージの仕様は1パタンですがSlackに通知するのは自分(が書いたスクリプト)なので時間もそうですが、メッセージを朝と夜で変えたり、画像を変えたり、なんでもできますね。
あと、正直お薬管理アプリ使ってて思ったんですが人の作ったもの操作するよりrubyのソース書き換える方が100倍簡単だという事を学びました。

実装

この記事読んだだけで実際に10分で完成しました。
「10分コーディング! Rubyでつくる Slack時報」
https://moneyforward.com/engineers_blog/2015/02/18/slack-timer/

マジでマスターピースですね。 この記事。
マネーフォワード自分も利用させていただいておりますが、すごいいいサービスですね。
毎月給料日に必ず開きます。
(゚益゚)給料あがんねーかな。。

とりあえずできたもの

  require 'slack'

  token = MY_TOKEN
  text = 'アレグラの時間です'

  Slack.configure do |config|
    config.token = token
  end

  Slack.chat_postMessage(text: text, channel: '#general')

最初、chat_postMessageの引数で渡す channel名でシャープ(#)を入れてなかったので若干戸惑いました。
まずこれだけでひとまず手動で通知できるようになりました。

アレグラbot

続いてWheneverの実装もしていきます。
wheneverの設定で毎日何時にSlackに通知飛ばしてもらうかを決めるすんぽう。

ところで、Gemfileにwheneverを追加するだけですが自分の場合bundlerのInstall先をVendor下に入れてるので
bundle execで呼びますね。

$bundle exec wheneverize
[add] writing `./config/schedule.rb'
[done] wheneverized!

whenever のconfig/schedule.rbにタイミングと、実行コマンドーを書きます。
コマンドー

 every '0 8,18 * * *' do
   command 'cd ~/dev/aregra; bundle exec ruby oshirase.rb'
 end

朝の8時と夕方の18時にお知らせしてもらう事にしました。
これをサーバのcrontabに反映させます。

$ bundle exec whenever --update-crontab

これがちゃんとcrontabに登録されているか確認してみます

$ crontab -l
# Begin Whenever generated tasks for: /home/lobster//dev/aregra/config/schedule.rb
0 8,18 * * * /bin/bash -l -c 'cd ~/dev/aregra; bundle exec ruby oshirase.rb'

よしよし。
こでPCやスマホにSlack先輩が通知してくれるようになりました。

アレグラbot2

実際に運用してどうか?

実装した時が一番楽しかったです。
けど実装することが目的ではないので・・ アレグラの飲み忘れに寄与しているかというと、今のところは全部飲めていますね。
あと3週間くらい飲み続ける事になりますが、追ってまた感想を追記したいと思います。

ところでアレグラって毎年飲んでるんですが、この薬自体どれくらいの効果があるんでしょうね。。

 

2016-03-01 | Posted in 技術的なポエムNo Comments » 


関連記事

Comment





Comment



*