2015年9月22日

仙台市営バスの時刻表やルート検索ができるAPIを作りました


タイトルの通りです。

きっかけ

きっかけは知人が「市営バスのデータは開示できるか」と問い合わせたところ、データがもらえた&GitHubなどにアップロードしても良いといわれたことです。
ただデータがExcelでびっしり表組されたものだったので、適当にデータを引っ張ってくるスクリプトをPythonで書きました。

仙台市からもらったデータ

仙台市からもらったデータ

データセットはGitHubで公開しています。
aobayama/sendaibus_dataset

ついでに作ったAPIを公開してみた

「せっかくなら知人と使えるAPIでも作ろうか」ということで、最初は内部向けのAPIを作りました。作っているうちに楽しくなってきて、いろいろ機能を追加していったら、割と便利なものが出来上がったので公開、という感じです。
bus.aobayama.net
仙台市の検索サイトやどこバスなどのサービスもありますが、すぐに重くなって使えなくなったり(雨の日や通勤時間は必ず)、着時刻検索ができなかったり…などと不満があったので、個人的には現時点でも割と満足しています。
無料で公開しておりますので、アプリケーション開発などにお役立てください。

一応ソースコードも公開しています。(が、現状はDBすら使っていないという設計だったりします。あとでAzure SQL+EFかMongoに移行します)
気になる方は下のリンクからどうぞ。
aobayama/SendaiBusSearchAPI

こちらはJavaScriptからいろいろ叩くサンプルです。APIでどんなことができるかをざっくりと知りたい方はこちらから。
仙台市営バスAPI サンプル集

ASP.NET Web APIのバージョニング

今回APIを作るうえで意識したのがWebAPIのバージョニングです。作成するうえで非常に勉強になったのが、しばやんせんせーのブログ(ASP.NET Web API でバージョニングを実現する方法を調べた)です。

私は記事中の一番下のライブラリを使いましたが、最初から意識していなくてもかなり簡単に移行することができました。また、ライブラリがIApiExplorerを実装したVersionedApiExplorerクラスをはじめから提供してくれたので、ASP.NETのHelp Pageも簡単にバージョニングに対応させることができました。ASP.NETのルーティングとConfigurationすごい…。

本日のオチ

作り始めたころは対応してなかったのですが、さすがGoogleせんせーですね。現在公開しているサービスの安定性や精度は保証できるものではないので、あくまでこちらのシステムは補助的な感じでご活用ください。


Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*