🛰️

iPhoneのGPSはどれくらい正確か測定してみた

2024/09/24に公開

はじめに

iPhone 14 Pro以降のProシリーズには高精度2周波GPSが搭載されていることをご存じでしょうか。本記事では以下の3機種について位置情報(緯度と経度)がどれくらい正確に測定できるか比較します。

  • iPhone 15 Pro
  • iPhone 13
  • iPhone SE 第2世代

結果

事前に緯度と経度を求めた地点を基準点とします。ここに上記3つのiPhoneを置いて、基準点からの誤差を測定します。

測定は約30分間実施しました。場所は建物内ですが、空が開けて見える場所を選んでいます。測定した日時は2024年9月23日の14:00頃です。

表 基準点からの誤差(単位:メートル)

機種 最小値 中央値 最大値
iPhone 15 Pro 3.9 11.0 20.8
iPhone 13 5.1 23.4 44.2
iPhone SE 第2世代 11.2 18.4 27.3

iPhone 14 Pro以降の機種は、それより古い機種と比較してより正確な位置情報を取得できる傾向にあります。測定方法の詳細については次の節で補足します。

測定方法と測定時の状況

測定方法と測定時の状況について補足します。

測定方法

サードパーティーのアプリは内部の挙動を知ることができないため、結果を信頼できません。そこで、測定用にアプリを作成しました。

https://github.com/moutend/LocationLogger

Core Locationフレームワークで得られる位置情報について

Core LocationフレームワークのCLLocationManagerは以下2点を制御できます。

  1. desiredAccuracyプロパティ: 取得する位置情報の精度を示す。
  2. distanceFilterプロパティ: 現在地からどれくらい移動した場合に位置情報を再取得するかを示す。

desiredAccuracyプロパティの値については最も高精度な情報が得られるkCLLocationAccuracyBestForNavigationを設定しています。distanceFilterプロパティについてはフィルタリングなしを示すkCLDistanceFilterNoneを設定しています。

(参考資料)

サンプリングの間隔について

現在地の位置情報が更新されるとデリゲート(CLLocationManagerDelegate)が呼び出されます。注意点として、デリゲートが呼び出される間隔は一定ではありません。短い場合は1秒ほど、長い場合は20秒ほど間隔が開きます。なるべく多くのデータを収集するため、また長時間測定を続けた場合の傾向を知るために、今回は測定時間を30分としました。

(参考資料)

CLLocationManagerDelegate - Apple Developer Documentation

緯度と経度から2つの地点間の距離を求める方法について

基準点からの距離はHaversine式で求めました。今回はiPhone機種ごとに相対的な誤差の少なさを比較できれば良いので、一般に広く利用されているHaversine式が適しているだろうと判断しました。

生データについて

今回の測定で得られた生データはGitHubリポジトリのWikiに添付してあります。ほぼ1秒間隔でサンプリングできていますが、これは偶然です。CLLocationManagerにサンプリングの間隔を固定する機能はありません。

測定時の状況

3機種に共通の条件は次のとおりです。

  1. 測定開始時のバッテリー残量は100 %とした
  2. 測定アプリを除き他のアプリはすべて閉じた
  3. WiFiをONにして同じネットワークに接続した
  4. BluetoothをONにした

後で補足しますが、位置情報を取得する際に利用しているのはGPSの情報だけではありません。そのためWiFiとBluetoothを有効にしています。

iOSバージョンとモバイル通信の状態については次の通りです。

機種 iOSバージョン モバイル通信の状態
iPhone 15 Pro iOS 17.5.1 SoftBank アンテナピクト 4/4
iPhone 13 iOS 15.7.1 docomo アンテナピクト 4/4
iPhone SE 第2世代 iOS 17.5.1 SIMなし(モバイル通信検索中ステータス)

結果の解釈について

今回の測定結果を解釈する上で必要な予備知識をおさらいします。すでに理解している場合は読み飛ばしてください。

GPSは必ず数メートルの誤差が生じる

GPSは人工衛星から発信される電波を利用して位置情報を得る仕組みです。詳細については以下のページにまとめられています。

GPSの仕組み(原理・誤差原因、「みちびき」情報)

特にソフトウェア畑のエンジニアであれば、一度は目を通してみてください。APIを叩けば位置情報は得られますが、その裏側について一歩踏み込んだ知見が得られるはずです。

さて、今回のように、デバイス単独で位置情報を取得する方式は単独測位とよばれます。ここで重要な点は以下の2つです。

  1. 測定結果には常に数メートルから数十メートルの誤差が含まれる。
  2. 条件次第で誤差は変動する。

1点目は物理的な特性によるものです。人工衛星から発信された電波は雲による減衰や建物による反射などの影響を受けます。iPhoneに搭載されたセンサー性能の良し悪しとは関係がないため、悪条件で測定すれば必ず誤差が生じます。

2点目も考慮が漏れがちなポイントです。新しいiPhone 15 Proを利用したとしても、高層ビルの谷間では電波がつかめず位置情報が不正確になるかもしれません。古いiPhone SE第2世代を利用したとしても周囲に障害物のない公園であれば正確な位置情報が得られるかもしれません。

例えば徒歩ナビゲーションアプリを開発するとして、対応機種をiPhone 14 Pro以降に限定したとします。しかし、これではナビゲーションの正確さを担保したことにはなりません。繰り返しになりますが周囲の環境次第で誤差は変動します。悪条件で測定すれば誤差が大きくなります。

GPSだけで現在地を特定しているわけではない

iPhoneで得られる位置情報イコールGPSで得られる位置情報ではありません。iPhoneで現在地の緯度と経度を取得するさいには、GPSに加えて以下の情報も考慮されます。

  • 最寄りの携帯電話の基地局が発する信号
  • 近くのデバイスが発するWiFiの信号
  • 近くのデバイスがハッスルBluetoothの信号

これらの情報を総合的に判断して位置情報が決定されます。以下、Apple Developerのドキュメントから引用します。

Core Location generates location updates using a combination of Wi-Fi, cellular, and GPS hardware, and it generates compass updates using magnetometer hardware. For location updates, Core Location doesn’t use every piece of hardware every time. You specify the level of precision you want in your CLLocationManager object, and Core Location turns on the hardware it needs to deliver that data in the most power-efficient way.

(引用元)Configuring your app to use location services - Apple Developer Documentation

また、今回の測定はある地点に固定して行いましたが、移動中であればデバイスに組み込まれた加速度センサーの信号も利用されているかもしれません。さらに、センサーからの生データをそのままAPIに渡しているのではなく、機械学習的なアプローチで何らかの補正を加えているかもしれません。Core Locationフレームワークの内部がどのような実装になっているのかはブラックボックスですので、あくまで想像です。

iPhone 13の位置情報は精度が低い理由

iPhone 13はiPhone SE 第2世代より取得される位置情報の精度が低い結果となりました。両者に搭載されているGPSの性能は同じであり、同程度の精度で位置情報が取得できるはずです。それでは、なぜ差が生じたのか検討します。

  1. iOSバージョンの違い: iPhone 13はiOS 15.7.1、iPhone SE 第2世代はiOS 17.5.1を搭載しています。OSのバージョンによって位置情報を推定したり補正したりする方法が異なる恐れがあります。仮にiOSの更新によって、Core Locationフレームワークの内部的な動作に変更が加えられている場合、取得される位置情報の精度に差が生じることになります。
  2. 携帯電話の基地局の違い: iPhone 13はdocomoの基地局、iPhone SE 第2世代はSIMなしで基地局を検索中のステータスでした。接続先の基地局によって位置推定や補正の動作が変化するのであれば、結果に差が生じることになります。
    3.. 統計的なばらつき: 位置情報が取得される間隔は一定ではありません。同じ場所、同じ時刻に測定を開始しましたが、たまたま悪条件が重なった瞬間に測定が行われた恐れがあります。

例えば、現在地とは全く異なる場所を現在地として示しているのであればセンサーの故障を疑えます。しかし、今回の差は極端なものではありません。複合的な要因によるものかもしれません。

今後の展望

GPSを用いて位置情報を取得する場合、精度には限界があります。しかし、より高精度に位置情報を取得する技術はすでに存在します。例えばネットワーク型RTKモジュールがiPhoneに搭載されるとセンチメートル級の位置情報が取得可能になるかもしれません。

実際、RTKモジュールを搭載したAndroidタブレットは存在します。ただし、土木建築の測量や重機の自動操舵を想定した製品ですので、一般向けではありません。

また、仮にRTKモジュールがiPhoneに搭載されたとしても、モジュール単独では利用できません。電子基準点からの補正情報をインターネット経由で配信するシステムの運用が必要になるためです。

とはいえ、可能性がゼロとも言えません。例えばCore LocationフレームワークのCLGeocoderは住所文字列を緯度と経度に変換します。この変換処理はオンデバイスではなくクラウドで処理されます。

Appleがその気になれば電子基準点サービスの運用は可能です。あるいは電子基準点サービスを提供している企業を買収して、自社のシステムに取り込む手段もあります。

ただし、iPhoneで高精度な位置情報が取得できるようになるとプライバシーの問題が懸念されます。すでにAppleは正確な位置情報が得られるアクセサリーとしてAirTagを販売していますが、UWBを用いてセンチメートル単位で場所を特定するにはiPhoneからAirTagに近づく必要があります。

AirTagは言わば受動的な方式です。単独で正確な位置情報を取得するデバイスではありません。一方、iPhone単独で高精度な位置情報が得られるようになればストーカー行為のリスクなど危険性が跳ね上がります。

付加価値とコストやリスクが釣り合わないので、iPhone単独でセンチメートル級の高精度な位置情報が取得できる未来が訪れる可能性は低いかもしれません。

(おまけ)iPhone機種別GPSの一覧

Apple Store公式サイトでは歴代のiPhone技術仕様を比較できます。比較表にはデバイスが対応しているGPSの種類が表示されていますので、以下にまとめました。

高精度2周波GPS(GPS、GLONASS、Galileo、QZSS、BeiDou、NavIC)

  • iPhone 16 Pro
  • iPhone 16 Pro Max
  • iPhone 15 Pro
  • iPhone 15 Pro Max

高精度2周波GPS(GPS、GLONASS、Galileo、QZSS、BeiDou)

  • iPhone 14 Pro
  • iPhone 14 Pro Max

GPS、GLONASS、Galileo、QZSS、BeiDou

  • iPhone 16
  • iPhone 16 Plus
  • iPhone 15
  • iPhone 15 Plus
  • iPhone 14
  • iPhone 14 Plus
  • iPhone 13
  • iPhone 13 mini
  • iPhone 13 Pro
  • iPhone 13 Pro Max
  • iPhone 12
  • iPhone 12 mini
  • iPhone 12 Pro
  • iPhone 12 Pro Max
  • iPhone SE 第3世代

GPS / GNSS

  • iPhone 11 /
  • iPhone 11 Pro
  • iPhone 11 Pro Max
  • iPhone XS
  • iPhone XS Max
  • iPhone XR
  • iPhone X
  • iPhone SE 第2世代

Discussion