位置情報やモーションを使ったアプリのデバッグはナカナカ厄介です。GPSを使ったアプリを制作したことのある開発者であれば、屋外に出て実際に使ってみなければ発生しない事象に頭を悩ませた事が多いでしょう。
GPSの挙動や携帯基地局それにWiFiスポット密度などの影響を受ける現象は、やはり現地に出向かないと解決の糸口を掴むことはできません。しかし、それ以前のロジックテストを行うために外に出ることも意外と多いものです。
たとえばフィットネス系アプリであれば、ジョギングした経路がリアルタイムに正しく表示されるかどうかの確認が必要であったり、走行スピードに対応してメッセージが自動的に切り替わるかどうかといったような機能のチェックが求められることもあります。
また観光アプリであれば、場所を移動した際に新しい情報が自動的に取り込まれるかどうかといった事や、AR(拡張現実)アプリの場合には指定した場所に正しい情報が現れる確認なども、移動を伴う条件下で検証しなければなりません。
XcodeとiOSシミュレータを使った移動シミュレーションは、こういったデバッグをサポートするための有益なツールと言えます。同じ行動軌跡を繰り返しテストすることで、ロジックチェックやバグの再現、バージョンアップ時の再テストがルーチン化できるからです。ただしiOSシミュレータで再現できるのは、決まった場所の、理想的な移動軌跡だけなのが問題点です。
現地でしか発生しない事象を再生する
たとえばトンネルが続く道ではGPSが思ったように動作せず、現在位置がトンネルの入口から出口へ突然ジャンプするような挙動を示すこともあります。このように現地でしか発生しない事象をGeoPlayerを使って収録したGPXデータは有益なテストリソースであると言えるでしょう。実際にその土地に行かなくても、誰かが現地収録したGPXデータを利用すれば、そこで実地テストしているかのようなデバッグが、ある程度は可能になるからです。
GPXデータを再生する
GeoPlayerはこういったデバッグを支援するためのツールです。基本的にGeoPlayerアプリは自分の移動軌跡をGPXデータとして記録するためのツールですが、後からそのGPXデータを記録した時と同じ速度で再生し、他のiOSデバイスに対してBluetooth経由で情報送信できる点がユニークだと言えます。
つまり3時間で完走したマラソンのGPXデータがiPhone(A)のGeoPlayerに記録されていれば、そのマラソンの移動軌跡を3時間かけて再生しながら、各時点での緯度経度をiPhone(A)からiPhone(B)のアプリへ順次Bluetoothで送ることができるわけです。情報を受信したiPhone(B)のアプリは、その緯度経度情報を利用して、あたかも今まさにマラソンを走っているかのように動作します。このようにiPhone(A)で再生している位置情報を利用して、iPhone(B)のアプリをデバッグすることが可能になります。
モーションデータを再生する
さらにGeoPlayerの面白いところは、位置情報と同時にモーション情報も再生できることです。M7プロセッサ付きiPhoneでGeoPlayerを使って移動軌跡を記録すると、その時点のモーション情報も同時に記録されます。これをiPhone(A)で再生すると、iPhone(B)には位置情報とモーション情報が同時に送信されます。マラソンの例で言えばコースを走行中なのか、登り坂で歩いているのか、給水所で停止中なのかといった情報が再現されることになります。
ジオフェンスをデバッグする
CLRegionを使ったジオフェンス系アプリのデバッグは、屋外でしかデバッグできないアプリの筆頭に挙げられますが、GeoPlayerとGeoFakeフレームワークを使えばリージョンモニタリングのデバッグも可能です。指定したジオフェンスを出入りするような行動軌跡をGPXで記録しておき、GeoPlayerでその軌跡を再生することで机上に居ながらにしてジオフェンスを通過するテストを行うことができます。ゴール圏内に入ると声援を送り始めるようなマラソン支援アプリのデバッグも、開発室の中で行うことができるわけです。
マニュアルモードでの繊細なシミュレーション
GeoPlayerにはマニュアル操作モードもあり、クライアントが接続されている状態でGeoPlayer側の地図を指で移動させると、クライアント側も追従して移動します。この操作によってGPX記録されている移動軌跡の再生中にチョットした道草をさせることができるなど、さらに細かい位置移動のシミュレーションを行うこともできるようになっています。
さらに詳しい情報
・GeoPlayerでGPSアプリをデバッグする
・GeoPlayerでモーションアプリをデバッグ