Gaji-Labo ブログ

Gaji おじさん(Hubot)に電車の運行情報を教えてもらう

development

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

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

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

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

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

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

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

仕様を検討する

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

おじさんへの作業依頼を書いてみる

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

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

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

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

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

作業依頼書

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

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

まとめ

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

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

関連リンク