仕事で地図アプリを触る機会があった。 内容は既存システムの機器リプレースで、外付けの単体GPSモジュールから「ワイヤレスWANモジュール内蔵GPS」というものに変更になる。 内蔵モジュール名は「Sierra Wireless Snapdragon X7 LTE-A NMEA Port」というもの。 上記の検証として、機器を入れ替えても現在地が正しく取れるよね、という確認。 「ただのリプレースだから~」と言われても、いざ実施して問題が出ない方が珍しい。 今回も例に漏れず問題は起きた。 事象としては、現在地が約50キロずれるという、地図アプリとしては致命的なバグ。 早速原因を探ってみた。 原因 まずGPSの受信には、NMEA 0183というプロトコルが使用されていて、 当アプリではその中の「GMC」というセンテンスから現在地を取得している。 $GPRMC,023301.0,A,3624.902