YAPC::Okinawa 2018のタイムテーブルをスマホアプリで見られるようにしたのでメモを残す。
課題
自分はイベント参加時、余り事前にどれに参加するかを決めてないのだけど、最近のYAPC::Japanでは:
- 紙のタイムテーブルが付属していない
- タイムテーブルのページはスマホで見ると結構重い
という感じでちょっと困っていたので、なんとかしたいなあ、と思っていた。
解決法
そんなある日、たまたまgiggityというAndroid用汎用タイムテーブル表示アプリがあることを知る。ということでタイムテーブルのページをスクレイピングしてこのアプリが読み込める形式に変換することに決定。
作る
変換元なのだけど、よく見るとタイムテーブルはGoogleDocsからJSONを引っ張って加工していることが分かったので、このJSONをソースにすることに。
giggityはPentabarf/frab/waferといったXMLデータを読み込めるようなのだけど、frabだけはXML Schema が公開されているようなのでこれを選択。
しかしfrabを含めてデータ定義情報がない。ということで既存のXMLを参考にして適当に埋める。GUIDとかあるけどちゃんと作るの面倒だしアプリでは使わないだろうということで適当に入れる。さらに
これでgiggityでデータを表示することには成功。しかし実は元データのGoogleDocsに情報が入ってなくてHTML直表示しているところがある。この辺りの情報はソースに直接埋め込んで処理。
成果
ソースはgistに、変換結果は https://argrath.ub32.org/tmp/yapcokinawa2018.xml に置いた。giggityを起動して右上の"+"を押し、このURLを指定するとスケジュールが表示される。定期的にcronで更新したいところ。
終わりに
ということでとりあえず今回の自分の目的は達成できたのだけど、イベント運営側でXMLだけでも提供してもらえると色々幸せかも。あとiPhone用アプリは見つけられなかったので、ここに需要があるのでは、とは思った。