「各駅停車でゆっくり行きたい」機能を実現した話
はじめに
こんにちは、ラーメンは闘争です。普段は経路探索エンジンチームで、新規機能の開発や既存機能の改善に取り組んでいます。最近加齢のせいかラーメンをロクに食べられない身体になりました。つらい。
本日は、この秋に開発した新規機能について、お話したいと思います。
こういう状況、ありませんか
みなさん、日々いろいろな時にNAVITIMEを開いて目的地までの乗換経路を探していただいていることかと思います。これまで、私たちは原則として「なるべく短い時間で行ける経路が良い経路」だという観点から経路を計算してみなさんにお見せしてきました。
そのため、快速電車とそうでない電車などが存在している場合、快速電車の方をみなさんにご提案することが多くありました。実際、ユーザーの皆様からのフィードバックでも、なるべく快速電車に乗りたいというお声はよくいただいています。
しかし、「今ちょっと時間あるし……ゆっくり本でも読みながら目的地に行きたいなあ」とか、「ちょっと今朝は体調がすぐれないし、電車に乗っていて気持ちが悪くなったときにすぐ降りれるような経路に乗りたいなあ」などとお考えになったことはないでしょうか。私にはあります。
「各駅停車でゆっくり行きたい」
そこで今回開発したのが、「各駅停車でゆっくり経路」です。この経路では、出発地点から目的地点まで、各駅停車の電車(※1,※2)のみを使用した経路が出るようになっています。
このようにすることで、先ほどお尋ねしたような「今ちょっと時間あるし……ゆっくり本でも読みながら目的地に行きたいなあ」とか、「ちょっと今朝は体調がすぐれないし、電車に乗っていて気持ちが悪くなったときにすぐ降りれるような経路に乗りたいなあ」などといった課題に答えられるようになったのではないかと思います。
アルゴリズムの概略
内部的にどうしているのかについてご興味がおありの方々向けに少しだけどのようなロジックで「各駅停車でゆっくり経路」が算出されているのかについてお話をします。
まず、この経路ですが、最初から「各停電車」のみに絞って経路を計算しているわけではありません。なぜなら、そうしてしまうとその経路が「各停電車」以外を許容した場合と比べてどれほど遅いのか、どれほど乗換回数が少ないのか……などといった比較ができなくなってしまうからです。
最初の段階では、あくまで「各停電車」を少し選ばれやすくしただけの状態で、他の快速電車も選択肢に入れた上で、最適な経路を計算します。こうすることで、「確かに各停電車だけで出発地から目的地まで行けているんだけど、あまりにも遅すぎるよなあ……」とか「各停電車に乗るためとはいえ、さすがに遠回りしすぎじゃないだろうか……」などといった問題のある経路をこの段階で除外してしまいます。
その上で、「各停電車」のみで行ける経路が候補に挙がってきた場合、他に各停電車のみで行ける経路が出ていないか、あるいは他のいずれの経路よりも乗換回数が少ないか、などの点をチェックします。こうすることで、品質が十分に担保された「各駅停車でゆっくり経路」を結果として出力できるようになります。
こういう行き方を出せるようになりました
こうして計算された「各駅停車でゆっくり経路」は、通常表示している経路(最大4本)に追加するかたちで表示されます(十分な品質に達していると判断された経路がない場合、表示されません)。
通常表示する経路の枠にこの経路を入れないのは、あくまで通常表示する経路の枠では、快速電車などを用いた従来通りの価値観で経路を選びたいからです。実際、このように通常表示する経路に追加する形で「各駅停車でゆっくり経路」を出すと、それが通常の観点(例:時間優先など)では優位性がないと判断される場合であっても、出力できるようになります。
このように通常表示する経路の追加枠として「各駅停車でゆっくり経路」を出すことのさらなる利点は、他の優位性の高い経路と「各駅停車でゆっくり経路」とのトレードオフをユーザー自身の目で見て確認できるようになるというものです。出力する経路の数をあまり絞りすぎると、ユーザーの皆様に「他に良い経路が実はあるのでは?」という疑念を抱かせてしまうこともあるのではないかと思うのですが、これを「通常表示している経路(最大4本)+α」というところまでで抑えておくことで、そうした疑念をユーザーの皆様が抱かないで済むと私たちは考えています。
まとめ
今回は、この秋に新しく開発した「各駅停車でゆっくり経路」についてお話いたしました。この機能は近日中に「乗換NAVITIME」から利用できるようになる見込みです。ぜひこの機能をご活用し、よりゆっくりとした移動をより安心してお楽しみください。
↓↓↓ 「各駅停車でゆっくり経路」が近日中に使えるようになる「乗換NAVITIME」のインストールはこちらから! ↓↓↓
ーーーー
※1:「各駅停車とは何か」という問題は掘り下げると根深い問題で、鉄道事業者で「各停」と案内されていても途中にある駅に停車しないといったケースなどもあり、一筋縄ではいきません。ですが、そうした点を考慮していると開発などが難しくなるだけでなく、ユーザーの皆様からみても「どういう挙動をしているのか良く分からない」機能になるかもしれないと考えたため、今回は鉄道事業者で「各停」や「普通」などと案内されている電車を「各停電車」と呼称することにしました。
※2:なお、現状では鉄道事業者で「各停」や「普通」などと案内されている電車をすべて網羅できているわけではありません。今回公開する機能が好評を博した場合は、それらのデータの整備により力を入れていくようにしたいと思っております。