列車運行情報を取得するgemを作った
関東の列車運行情報を取得するgemを作った。 https://t.co/yyqDmW5ETr
— しふみん (@shifumin) 2018年10月8日
関東エリアの列車の運行情報を取得するgemを作りました。
標題は目的語が大きく、情報を取得できるのは関東エリアのみです(大事なことなので)
github.com traininfo_kanto | RubyGems.org | your community gem host
インストール
Gemfileに下記の行を追加して bundle install
するか、
# Gemfile gem 'traininfo_kanto'
あるいは、直接gemをインストールしてください。
gem install traininfo_kanto
使い方
# app.rb require 'traininfo_kanto' TraininfoKanto.get(['山手線', '京浜東北線'], url: true)
こんなコードを用意しておいて
$ ruby app.rb
実行すると
["山手線は平常運転です。", "京浜東北線は列車遅延があります。\n宇都宮線内でドア点検を行った影響で、一部列車に遅れが出ています。 (9月21日 16時45分掲載)\nhttps://transit.yahoo.co.jp/traininfo/detail/22/0/"]
が返ってきます。
url
オプションがあり、 true
にすると「平常運転」以外の場合に最後に詳細ページのリンクを追加します(デフォルトは false
)
コマンド
$ traininfo_kanto get 山手線 京浜東北線 山手線は平常運転です。 京浜東北線は列車遅延があります。 宇都宮線内でドア点検を行った影響で、一部列車に遅れが出ています。 (9月21日 16時45分掲載)
みたいな感じでも使えます。
CLIでは url
オプションはなしです(そのうち実装するかも)
Docker
shifumin/traininfo_kanto - Docker Hub
Docker Hubにイメージを上げたので、Dockerの実行環境があれば
$ docker run --rm shifumin/traininfo_kanto get 山手線 京浜東北線
で試すことができます。
Rubyの環境すら必要ありません。
便利ですね。
どうやって情報を取得しているか
単純にYahoo!路線情報の運行ページ{:target='_blank'}をnokogiriでスクレイピングして情報を取得しています。
やりたかったこと
要はこういうことをやりたかったんですよね。
上記はうちのSlack botです。
で、運行情報取得部分だけgemに切り出しました。
注意点
さて、注意点があります。
関東の運行情報と言いながら現時点(2018年10月9日)でサポートしている路線は下記だけです。
(メトロ、都営とJRの僕が利用しそうな路線と後小湊鉄道だけ)
JRは頑張って後で追加します。私鉄は……w
Supported routes
まだできていないこと
- サポートしている路線の数が少ない
- せめてJR東日本(関東)の路線は全てカバーしたい
- テストを全く書いていない
- gemのテストの知見を得たいので書きたい
- CLIの
traininfo_kanto list
(運行情報を取得できる路線一覧を取得する)のサブコマンドくらいは流石に実装したい- 実装します
終わりに
Rubygems作成とDockerHubにDocker imageアップロードは初めてでしたが、学びがありよかったです。
こちらからは以上です。