読者です 読者をやめる 読者になる 読者になる

mmts1007’s diary

プログラミング関連の技術系ブログです。

傘が必要か通知する bot を作った

注意:今回は趣味全開の内容です。

ことりちゃんが毎朝 Slack に今日傘が必要か通知する bot を作りました。

f:id:mmts1007:20160320181655p:plain

その日の降水確率が 50% を超えている時は、傘を忘れないよう Mention 付きでメッセージを投稿します。

f:id:mmts1007:20160323001324p:plain

これで、傘を忘れてびしょ濡れになることは少なくなるはず。

経緯

  • 3月初旬に傘を持って行かずびしょ濡れになり、後悔した
  • 毎朝傘を持っていくべきか調べて出勤するのは面倒臭い
  • 自分で作りたかった

という理由から、毎朝 Slack に傘が必要か通知する bot を作りました。

ソースコード

github.com

使用技術

  • Heroku
  • Ruby
  • Rake
  • Slack(Incoming WebHooks)

Heroku Scheduler を利用し、指定の時間に傘が必要か Slack に通知する Rake タスクを実行しています。
Slack への通知は Incoming WebHooks を利用しています。

降水確率の取得

傘の必要性はその日の降水確率から判断しています。 天気予報の Web API は種類があったのですが、降水確率を取得できる Web API はあまり見つけられず。
今回は 気象庁の天気予報情報を XML で配信 - drk7jp を利用しました。

指定の都道府県・地域の 6時間ごと(00-06, 06-12, 12-18, 18-24)の降水確率が取得できるため、1日の最高降水確率によってメッセージを分ける実装にしました。

text = case today.probabilities_of_rain.max
         when 50..100 # %
           DANGER_MESSAGE
         when 40..50 # %
           CAUTION_MESSAGE
         else
           NOTICE_MESSAGE
         end

https://github.com/mmts1007/rake_lake/blob/6ce6421ae942dc50f163d9a2cfeee7baa5cb9101/lib/tasks/slack/notify/probability_of_rain.rb#L24-L31

その他

heroku は Web 上から簡単に環境変数をセットできるため、 都道府県・地域・IncomingWebHook URL・メッセージは環境変数を利用して切り替えられるようにしました。

まとめ

趣味全開ですが、heroku を試すこともでき、実用性もあるので良しとしますw