突然ですが皆さん、電車寝過ごし or 乗り遅れてませんか?
私は普段から隙があれば寝る生活をしているので、この2つに悩む人々の痛みが身に染みてわかります。笑
今回はこれらに対するソリューションとしての乗換案内アプリを作成します。(詳しくは要件定義編で...!)
APIを選定する
調べてみたところ、全国の駅数はおよそ9055駅あるようです。
これらの駅に関する情報を全て手動で作成するのは忍びないので、外部のAPIを頼ることにします。
意外にも(?)駅情報や乗り換えルートを提供するAPIは色々あるようで、以下の4種類から選定しました。
NAVITIME API(採用)
-
メリット
- 無料(月500回まで)
- ライセンス取得が容易
公式ページからは法人申請のみだが、rapidAPIを経由することで個人契約が可能 - 無料の割に機能が豊富
-
デメリット
- 無料リクエスト上限が少ない
とはいえ回数に制限があるだけでenterprise版と変わらない機能を使用できるので、今回はこのAPIを採用
->もしリクエスト上限に達するまでにユーザーを獲得できたらマネタイズ手段について検討する
- 無料リクエスト上限が少ない
ジョルダン乗換案内オープンAPI
-
メリット
- 無料(月1種類につき3000回、合計で10000回)
- 乗換案内に必要な基本機能をサポート
- 経路検索
- 駅名検索
- 路線名検索 など。
-
デメリット
- 利用用途に制約がある
非公開アプリでは使用不可、など。
ストアなどに公開する前提なら問題なし -
ライセンス取得に審査が必要
開設前の場合企画書の提出を求められることから、決してユルユルではない審査を通過する必要があると考えられる
->"乗換案内自体の実装"は想定していないのではないか、という結論に至りました。
- 利用用途に制約がある
公共交通センターAPI(ODPT)
- メリット
- 無料
呼び出し回数については制限がある旨のみ明記(月1000回までという噂がある) - ライセンス取得が容易
私の場合は申請から数十分で承認されました。
- 無料
- デメリット
-
経路検索機能がない
実は当初このAPIを採用していたのですが、いざ経路検索をしようと仕様書を読み込むと検索についてはマニュアルで実装する必要があるようです。
最短経路の探索には、dijkstra法やA*アルゴリズムを使えます。が、- 全国各駅を頂点、移動時間を重みとする辺を持つグラフを作ると膨大になる
- いわゆる乗換案内アプリには経由駅指定等があるが、それらの実装が重いことが想定される
- そもそもアルゴリズムの改善が主な目的ではない
などの点から見送りました。
-
経路検索機能がない
GoogleMapsPlatform(Routes API)
- メリット
-
自由度が高い
GoogleMapと銘打っているだけあってその自由度の高さは他とは比較になりません。
リアルタイムの交通機関情報はもちろん、徒歩や自転車での所要時間も考慮することができます。
東京の西側など、自転車で行った方が圧倒的に早いような駅関係もある気がするのでそれを求めるアプリとかあっても面白いかなと思いました。
-
自由度が高い
- デメリット
-
有料
Routes APIには制限付きで無料利用可能のEssentials版とPro版がありますが、Essentials版では他APIでは取得できるリアルタイム交通情報を取得できないという問題があり、見送ることになりました。
有料版の機能の豊富さは群を抜いているので、収益が立ちそうであればこちらのAPIを用いるように改修するかもしれません。
-
有料
以上のように当面はNAVITIME APIを用いて開発していくことになりました。
次回は要件定義編を予定していますが、バックエンド開発で詰まったところがあればまた記事にするかもしれません。
アプリ完成までの過程は基本的に全て記事にする予定なので、お楽しみに...!