本日行われた第3回東京公共交通オープンデータチャレンジにて、審査員特別賞を頂きました。
今後、東京公共交通オープンデータチャレンジなどのコンテストに応募する人に向け、反省点などを共有させて頂きます。
技術的な話よりは、このアプリを作成することになった動機などがメインです。
作成したもの:いついく?くらべる。Powered by Worker Step
下の図のような、経路検索システムです。一般的な経路検索との違いは、出発時間を1分ずつずらし、1時間分の複数経路を一括で検索してグラフ化することです。
上・下の図は、ある経路における東京駅から渋谷駅までの所要時間を表した図です。
列車の接続が良い時は待ち時間が少なくなるので、最短22分で到着します。一方、列車の接続が悪い場合には、39分掛かってしまいます。
1つ目のグラフのように、出発時間によって、中央線経由で行った方が早い場合や山手線で行った方が早い場合なども異なります。
本システムは、「定期券を買う場合、一般的にどちらの経路の方が早いか」といった疑問を一気に可視化できるツールとなっています。
なぜこれを作ったか
他のコンテストで予想より忙しくなってしまったこと、大学の試験期間と完全に重なってしまったことから、〆切1週間前に、当初計画していたアプリの開発は不可能であると判断し、全く異なる方向性に切り替えました。
元々はチームで行っていたのですが…。第4回コンテストも開催されるとのことで、そちらの方で再挑戦したいと思います。
ということで、完全に方向性を変えてから、残された時間は僅か1週間。しかも、試験前。そんな絶望的なタイミングでしたが、既に持っている強みを活かせるアイデアを再検討していました。そんな中、学校へ行く途中で列車を1本乗り過ごしただけなのに到着が15分程遅くなるという事件が発生(2か月に1度くらいあります)。いつ家を出るのが一番お得なのだろうかと思い立ち、第2回コンテストで作成した経路検索エンジンを用いて、多くの経路検索を行う(第2回の混雑シミュレーションの方が遥かに数は多いです)このシステムを作成しようという方針に決めました。
スケジュール
日時 | 進捗 |
---|---|
2019年4月 | 始動 |
2019年5月~8月 | なあなあで方針が決まらず… |
2019年9月 | 製作に取り掛かるも、なかなか進まず… |
2019年11月 | 方針変更 |
2019年11月9日・10日 | なんとか形にする。 |
2019年11月14日・15日 | 修正・動画作成など |
システム構成
システム構成は、次のようになっています。
今回追加したのは、左下の「60分一括検索」及び「Web Server」部分です。
制作にかける時間を短縮するため、既存のリソースを最大限生かせる構成にしました。
その分無駄が多く、60分一括検索をするのであれば、同じ列車に乗るときは前回の検索結果を利用するなどの効率化ができるはずですが、今回の作品では「9:00発」と「9:01発」の発車は、全くの別物として検索しています。
今回のサーバー側のプログラムは、基本的にPHPとC++で作成しているのですが、個人的に最近始めたGoなどで書いてみたいなとも思います。
60分一括検索プログラム(C++)
ユーザからの検索クエリを受け取り、複数経路の60分の検索クエリを後述の経路検索プログラムに投げる役割をしているプログラムです。今回、新たに開発しました。(開発といっても、クエリを投げるためのforループを回して、結果をJacaScriptで扱いやすいように、1時間分のデータをまとめてJSONに変換するだけですが。)
経路検索プログラム(C++)
第2回東京公共交通オープンデータチャレンジで使用したものを、データ構造などを改良したバージョンです。できることは基本的に変えていませんが、複数経路での所要時間を取り出せるように、他のプログラムとの通信部分を若干改良しました。
経路検索に関する大まかな仕組みは、
第2回東京公共交通オープンデータチャレンジで優秀賞をいただきました。の記事をご覧ください。
遅延推定プログラム(C++)
今回は使用していません。
混雑推定プログラム(C++)
今回は使用していません。
感想
他の受賞者の方々の作品も、東京をデジタル空間上に再現したものや、駅構内の経路検索など、非常に面白い作品が多かったです。他の参加者との歓談会、とても楽しませていただきました。
公共交通系のLT会などがありましたら、プロフィールに記載してあるメールアドレスにお誘いいただけると嬉しいです。
応募期限直前での計画変更ということで、目的ありきではなく、既存のプログラムありきになってしまったことを申し訳なく思います。しかし、昨年応募させて頂いたプログラムにわずかに手を加えただけで、「リアルタイム遅延情報を考慮した経路検索アプリ」から「1時間分の経路を検索し、比較できるアプリ」へと、見せ方をかなり変えることができたことには満足しています。
第4回では、今回ドタバタして完成まで漕ぎ着けなかった元々の計画を、仲間と共に応募できるよう、頑張りたいと思います。
デバッグ等が間に合わず、若干動作が不安定ですので、春休みに改良しようと思います。
試してみていただけると幸いです。
WebアプリURL:
https://kuraberu.workerstep.work
第4回東京公共交通オープンデータチャレンジも開催されるようです。
挑戦してみてはいかがでしょうか。