2019/03/30
3月31日まで行われていた「第二回東京公共交通オープンデータチャレンジ」にて、優秀賞をいただきましたので、表彰式の発表にて話しきれなかった応募した経緯などを記します。
今回作成した「WorkerStep」は、主な機能として、リアルタイム情報を元にした
を提供します。
WebAPP: https://workerstep.work
使い方: https://howto.workerstep.work
紹介動画:https://youtu.be/c23aNJTSwfU
高校時代、担任だった先生にお声がけいただき、高校生向けのいくつかのコンテストにグループで応募してきました。具体的には、日本統計学会スポーツ分科会の「スポーツデータの解析コンペ」において野球盤のようにシミュレーションしたり、武蔵野大学の行う「数理工学コンテスト」において大型商業施設における客の流動性変化のシミュレーションなどです。
大学生になり、お互いに違う学校となりましたが、また皆でなにかやりたいということで、5月に今回の「第二回東京公共交通オープンデータチャレンジ」に応募しようと決めました。
5月~8月 データを眺め、加工を試す。
8月 大まかな作品の方針を決定。
8月~9月 経路検索プログラムの基礎部分を作成。
10月~ UI部分の作成開始(応募期限日まで継続)
10月 遅延推定を作成
12月 リアルタイム性を持たせる。
1月 混雑推定を作成
1月 応募用動画などの作成
※提出期限5分前まで頑張ったのですが、バグは直しきれませんでした。。。
ODPTから提供されるリアルタイム列車位置情報には、5分以上の遅延のみ遅延扱いとなっていました。なので、列車時刻表に記載されている時刻とリアルタイム列車位置情報の最後に発車した駅の発車時刻を比較することにより1分以上の遅延を算出し、また、過去のデータから遅延回復を推定することで行っています。
上記の列車遅延推定を読み込み、5分毎にグラフを再構築しています。
ある瞬間の例だと、ノード数34万8949くらいのグラフとなります。エッジに設定しているコストは、所要時間及び乗り換え回数(ノード到達ごとに算出)です。運賃に関しても導入したかったのですが、会社によってデータ提供がないため断念しました。
混雑推定は、
1. 交通センサスデータより、各利用者がいつ、どこからどこまで乗車するというODデータを膨大に作成する。
2. すべてを経路検索にかける。
3. 集計する
という流れで行っております。
その結果、下図のように大まかな列車混雑を推定することができます。
上の図は、丸の内線のとある3本の列車の混雑推定をした結果です。1本後の列車が新宿駅止まりなため、2本後の列車は、他の列車と比較して徐々に混雑していく様子がわかります。
ただ、問題点として、列車の運行情報にはリアルタイムのものを使用していても、乗客に関する情報がないため、イベントや時間ごとの乗客数変化、乗客ごとの経路選択状況などをあまり考慮することができず、精度がいいとは言えません。あくまでもおおまかな参考程度の推定です。
基本的に、各社のVPSサービスを使用しました。学生であまりお金がかけられないため、学生無償枠を利用させていただいたり、ヨーロッパの安いVPSサービスを利用してみたりしたため、開発時にはさほどかかりませんでした。
各プログラムはWebAPIとして実装されており、Json形式またはCSV形式にて連携しています。上記以外にも、開発時にはリアルタイム列車位置情報取得プログラムを動かしていました。
応募から現時点までは、ConoHa VPS を使用しています。詳細はODPTの発表用スライドに掲載しています。
フレームワークなど、UI開発の知識が全くと言っていいほどなかったので、フロントエンド作成がとっても大変でした。まだまだ知識が足りないので頑張ります。
作品へのリンクを掲載させていただきます。技術不足により少し重いですが、賞金の一部をサーバー経費にあてることである程度サービスを延命させることができそうなので、普段使いに使用していただけると励みになります!!
WebAPP: https://workerstep.work
使い方: https://howto.workerstep.work
また、コメントや技術的アドバイスなどをいただけると幸いです。
需要がありそうでしたら、もう少し詳細に加筆しようと思います。