Hubot に電車の運行情報を教えてもらう


こんにちは。 Gaji-Labo 衛生班の和田です。
土鍋の焦げ付きを落とすには重曹を入れて煮出すと良いです。水から始めるのがポイント!

この記事は、 Gaji-Labo Advent Calendar 2015 、24日目の記事です。

さて、弊社の重要メンバーの1人である、 がじ専務(※1/以下、専務)ですが、毎日の仕事に加えて、今日は新たな役割をお願いしたいと思います。
※1 詳しくは、山岸の「弊社の重要メンバー、がじ専務」という記事 をチェックしてみてください。

電車の運行情報を教えてほしい

Gaji-Labo のメンバーは多くの場合、電車で移動しています。
また、メンバーによっては、1日に何度も移動が発生する場合があります。

電車が遅れていたりすると、色々と調整が必要になることもありますが、頻繁に運行情報をチェックしているわけではありません。

そこで、専務に定期的に運行情報を知らせてくれるようにお願いしてみることにしました。

仕様を検討する

「なんか、いい感じの API ないかなー」ということで探してみたのですが、残念ながら、カジュアルに使えそうなものが見つかりませんでした……(無償のものもあったのですが、申し込みが必要だったり)
そこで、メンバーの代わりに Web サイトをチェックして、報告してもらうことにします。

専務への作業依頼を書いてみる

必要な作業を検討します。

  • node-cron で定期的にチェックしてもらう
  • cheerio-httpcli で Yahoo! の運行情報 をスクレイピング
  • 必要な情報を取り出して整形し、 Slack に流す

と思ったのですが思い直しました。
「定期的に運行情報を知らせてくれる」というのがポイントだった気がしますが、「定期的に流す」というのに抵抗があったので、 「senmu 電車」に反応するようにします。

以下のように変更します。

  • senmu 電車 でお願いする
  • cheerio-httpcli で Yahoo! の運行情報 をスクレイピング
  • 必要な情報を取り出して整形し、 Slack に流す

作業依頼書

サンプルを Gist に置きました。

cheerio-httpcli を使ったのは初めてでしたが、取ってきた Web ページをパースして、jQuery ライクに扱える大変便利なモジュールですね。

まとめ

  • cheerio-httpcli 便利
  • だが、対象 Web サイトの HTML の構造が変わったら修正が必要
  • うーん、でもやっぱり自分で取りに行くならおじさんに頼まなくてよくね?
  • などと、いろいと考えるのもまたよし
  • Hubot や Raspberry Pi で楽しみながら自習するのおすすめ

よい年をお迎えください!

関連リンク


投稿者 Gaji-Labo Staff

Gaji-Laboの社内デジタル環境でいろいろなお手伝いをしているがじ専務&じら常務。みんなのシリーズ記事をまとめたり、卒業したスタッフの過去記事を記録したり、Twitterをやったりしています。