見出し画像

あなたが通った道を再現します! -走行実績からルートを「再現」する仕組み-

この記事は、NAVITIME JAPAN Advent Calendar 2022の3日目の記事です。
https://adventar.org/calendars/7390

こんにちは。しろくまと、テニスマンと、キングカズです。
ナビタイムジャパンで、iOSアプリ開発・バックエンド開発・インフラ管理をそれぞれ担当しています。

2022年9月7日、ナビタイムジャパンは、iOS版『NAVITIMEドライブサポーター』の有料会員向けに「軌跡ルート」を提供開始いたしました。

「軌跡ルート」は、ユーザー一人一人の過去の走行実績を再現したルートを提案する機能です。直近の往路と復路で最大2種類の「軌跡ルート」がルート検索結果に並び、「走ったことがあるルートを使いたい」「行きに使った道で帰りたい」という場合に便利な機能となっています。
下記プレスリリースにて、さらに詳しい機能説明を行っておりますので、是非ご覧いただけますと幸いです。

こちらの記事では、「軌跡ルート」の仕組みと開発に際しての課題やその解決策についてお話ししていきたいと思います。

「再現」の難しさ

「軌跡ルート」は、お客さまからいただいた「自分が通ったことのあるルートを出してほしい」というご要望から開発が始まりました。
最初に議論したところは、やはり「どうやって走ったルートを再現するか」「何をもって再現とするか」でした。

「再現なのだから、走ったルートを保存しておいて、そのまま次に使えばいいだけじゃないの」と思われるかもしれません。しかし、記録時点では最適解であった位置情報をそのまま使ってしまうと、新規開通道路や一時的な規制に対応できず、経路探索を行なったときに「遠回りすぎるルートを出してしまう」「この時間帯には使えない道路を使用したルートを出してしまう」ということが起きかねません。

「再現」を実現

走行実績データをコストに加える経路探索

先ほどお話ししたように、記録した位置情報をそのまま経路に反映するのは現実的ではありません。
そこで、「軌跡ルート」では既存の経路探索の仕組みを応用することにしました。具体的には「時間・距離などの既存の要素に加え、走行実績データを加味したコストモデルを使用する」という方法を取っています。

走行実績データは、ルート案内時に取得した走行ログを分析などに使用できるように加工したデータです。走行ログよりも位置情報の精度が上がっており、高速・一般道の区別も行えます。
経路探索を行う際に、時間や距離よりも走行実績データの優先度を上げると「時間がかかるけど同じ道路を通る」「距離は長くなるけど同じ道路を通る」ルートが出るようになります。

データをそのまま使うのではなく、比重をかけるという形を採用することで、新規開通道路や規制にも対応しつつ、以前走った道路をなるべく再現した経路を探索できるようになっています。

「軌跡ルート」のコストモデル

走行実績データの作成と管理

「軌跡ルート」は、行きに使った経路を帰りにも使えるようにするために、走行実績データを当日中に作成しています。ここでは具体的なデータの作成方法と、作成したデータの管理方法について説明します。

準リアルタイムなデータ作成

走行実績データの大元である走行ログは、データ量が膨大であり処理に多くのリソースが必要なため、通常は1日1回の定期実行で『Amazon EMR』などを立ち上げてデータ作成を行っています。

しかし、当日の帰りに走行実績データを使えるようにするためには、目的地到着後すぐにデータを作成しなければなりません。また、アプリ上で目的地に到着した際にサーバーにリクエストを送信し、サーバー上でデータ作成を行った場合、目的地への到着時刻は特定の時間帯に集中しやすいので、負荷が高くなり過ぎる懸念があります。

「軌跡ルート」の場合、到着後すぐではなく、帰り道を検索するまでにデータが作成されていればいいので、安定性を重視してリクエストをキューに積んで順番にデータを作成しています。遅くとも1時間以内にはデータが作成されるため、実用上は問題なく利用できます。

インフラシステム構成

走行実績データ作成リクエストのキューイングには『Amazon SQS』を、データ作成処理には『AWS Lambda』を使用しています。『Amazon SQS』を『AWS Lambda』のイベントトリガーに設定することで、キューに積まれたリクエストを即座に処理しています。

走行実績データの一覧情報の管理には『Amazon DynamoDB』を使用し、走行実績データ本体は『Amazon S3』に蓄積しています。『Amazon DynamoDB』にデータを集約した方が取り扱いは楽なのですが、将来的に走行実績データが1項目の上限サイズである400KBを超える可能性を考慮しています。

システム構成概要

おわり

「軌跡ルート」についてのお話はいかがでしたでしょうか。
「軌跡ルート」には、実際に走行した経路を再現することはもちろん、「再現したルートを当日から使うことができる」という特徴もあります。初めて行った場所から帰るとき、家までの経路をカーナビで検索しながら「なるべく行きに使った道で帰りたいな」と思ったことがある方は多いのではないでしょうか。
「軌跡ルート」はそういったニーズに応え、慣れた道で安心して運転できるようサポートする機能です。
一度試してみたいなと思った方は、ぜひiOS版『NAVITIMEドライブサポーター』をご利用いただけますと幸いです。