2023年10月16日に「GO TechTalk #23 ジオスペシャル!位置情報活用の現場をお話します!」(connpass)を開催しました。
本記事では当日の内容を簡単に紹介します。
GO TechTalkとは?
GO TechTalkは、GO株式会社のエンジニアたちが、タクシーアプリ『GO』をはじめとしたサービスやプロダクトを開発する中で得た技術的ナレッジを共有するイベントです。
GO株式会社ではモビリティに関連するさまざまなサービスを展開しています。モビリティを扱うサービス開発の現場では、車両の位置管理、お客さまがタクシーの配車を希望する場所の特定、車が通るべきルートの検索、一時停止すべき交差点の特定、経路検索や住所検索で必要な地図など、必ずと言っていいほど位置に関する情報とそれを扱う技術が必要になります。
23回目となる今回は、位置情報を扱うシステムの紹介に加え、位置情報特有の苦労や課題、そしてそれを解決するための工夫について紹介しました。
イベント当日には多くの方から感想や質問を受け取りました。当日にお答えすることができなかった質問についても、本記事にて回答しております。参加できなかった方はもちろん、参加された方もぜひご一読ください。
こちらのポストのスレッドで当日の様子や雰囲気を感じていただけると思います。
GO TechTalk #23 「ジオスペシャル!位置情報活用の現場をお話します!」
— GO Inc. dev | タクシーアプリ『GO』 (@goinc_techtalk) October 16, 2023
19:00からはじまります!
Live配信: https://t.co/RtgLHUKYl3
イベントページ: https://t.co/gP1BxFypnJ#goinc_tech_talk
登壇者紹介
今回はこちらのメンバーが登壇しました。
- データエンジニア:松浦 慎平
- ソフトウェアエンジニア:牧瀬 芳太郎
- データサイエンティスト:齋藤 智輝
- 広報:高堂 和芽(@sandgirl_14)
初めての位置情報エンジニアリング つまずきポイントあるある
スマートフォンの普及により、一人一台がGPSを持つようになり、モビリティ業界だけでなくさまざまな業界でエンジニアが位置情報を取り扱う機会が増えています。しかし、位置情報を扱う際には基礎知識が不可欠であり、それがないとさまざまな問題にぶつかることがあります。
このパートでは、位置情報を取り扱う際の基本知識、位置情報のデータフォーマット、位置情報を検索する際のよくある問題とその解決方法などについて紹介しました。
Q. 測地系の種類について、今回は世界基準のものと日本ローカルのものが紹介されましたが、他の国でもそれぞれローカル基準の測地系があったりするのでしょうか?
はい、さまざまな測地系が存在します。用途や地域条件に応じて、適切な測地系を選択する必要があります。
Q. GOではどのデータフォーマットを利用していますか?
他社から提供されるデータや購入したデータは、シェープファイル形式であることがあります。しかし、システムに組み込む際には、PostGISなどのデータベース用フォーマットに変換・格納して利用しています。
『GO』アプリの地理空間データを扱う工夫
タクシーアプリ『GO』のサービスを提供するにあたり、さまざまな地理空間データを管理・加工・利用しています。このような地理空間データはそのデータ量の大きさや、高速にアクセスする必要性から、分割管理したり、使いやすいように加工したり、地理空間インデックスを用いてアドレッシングするなど、シーンに応じて多種多様な工夫が必要になります。
このパートでは、タクシーアプリ『GO』で利用している3つの地理空間インデックス(地域メッシュ、Morton Keys、H3)についてそれぞれの特徴や採用理由、扱う際のポイントを紹介しました。
Q. 海だけしかない場合にコードが割り振られていないメッシュがありました。今後埋め立てなどによって道路ができた場合はメッシュコードが新たに付与されるなど、逐一更新されていくのでしょうか。
はい、必要なタイミングで新たに付与することになります。
Q. 機械学習などで地域メッシュを使うとのことでしたが、空間分割というのはどうしても離散的にならざるを得ないとおもいますが、隣接する空間のデータを参照するなどの工夫はされていますか?
ケースバイケースですが、ご指摘の通り、少しだけ隣接する空間のデータを参照することもあります。
Q. 緯度経度の座標表現では限界がある場所もあるのでしょうか?例えば、道路の下にも道路があったりする複雑な3次元的な場所ではどうするのか気になりました。
道路の場合は、道路の繋がりをグラフ構造で管理することが多いです。ただたしかに上下に道路がある場所で、どちらの道路かを特定したい場合には、それまでの経路を考慮するなどの工夫が必要です。
Q. Morton KeysはGOさんでの独自フォーマットで採用されているということでしょうか?
はい。独自のバイナリフォーマットで管理しています。
Q. 空間検索のインデックスとしてGeoハッシュの方法もあるかと思いますが、空間インデックス採用の際に検討されたのかどうか気になりました。Geoハッシュではなく、Morton Keysを採用した理由などあれば教えていただきたいです。
Geoハッシュはかなり Morton Keys に近いですが、文字列変換の際に Base32 処理が入るのでその分低速になると思います。今回の用途では、文字列を介する必要性が無かったため Morton Keys を採用しています。
位置情報を用いた高速な検索システムの裏側
タクシーアプリ『GO』で呼び出されるタクシー車両に設置されている乗務員用端末には、『GO』独自の目的地検索機能が搭載されています。この検索機能は、検索対象となるランドマークの位置情報とタクシー車両の現在地の関係も加味して、高速に検索する必要があります。
このパートでは、本機能の概要や、検索対象データを作成する際のジオコーディングの課題、そしてそれを解決するための工夫について紹介しました。
Q. 住所も距離の減衰を用いているのでしょうか?例えば京都と東京都のように共通部分を持つものや、同じ名称の地名など現在位置によって優先すべき住所を出す機能はあるのでしょうか。
現時点は行っておらず、座標とタクシー車両の位置との直線距離で減衰をかけています。
Q. デジタル庁のアドレスベースレジストリはGOで使われていますか?
今回紹介した機能の中では使っておりません。
Q. 少し聞き逃した部分もあるのですが、「成田空港」と検索して「新東京国際空港」をバシッと出すようなアルゴリズムもあったりするのでしょうか。
アルゴリズムではないかもしれないのですが、検索対象文字列をを正式名称の他に別称文字列まで広げるときれいに当てることができます。ただ別称などはどこから持ってくるなり名称から拡張する必要はあります。
アーカイブ動画
開催履歴・開催予定
GO TechTalk は不定期開催しています。過去の開催レポートは こちら にもありますので、ぜひご覧ください!
GO株式会社の最新技術情報は公式アカウント @goinc_techtalkで随時発信していきますので、ぜひフォローして続報をお待ちください!