こんにちは!
技術担当の @yeaah_masa です。
当社では位置情報に関するiOSアプリ開発を長年行ってきており、ほぼ毎日のように位置情報とにらめっこしています。そんな中であんなことできたらいいな…ということも多いのですが、意外と出来ないケースもあります。しかしやり方次第で出来たときはとても嬉しいものです。
今回は以外と知られていない?そんな機能の1つを紹介をしたいと思います。
(知ってる方は華麗にスルーしてください)
環境
Xcode version:14.2 (14C18)
MacOS version:12.6.4
TL;DR
GPX Generatorを使うべし
位置シミュレートのパターン
Xcodeで位置情報をシミュレートしたい場合、標準で2パターン用意されています。2.の派生が今回ご紹介する3パターン目です。
- Simulatorアプリの[Features] – [Location]を使う
- Xcodeでデバッグ実行時のメニューからデフォルトの位置を選択する
- Xcodeでデバッグ実行時のメニューからGPXファイルを読み込んで実行 ←今回紹介したいケース
それでは1つずつ見ていきましょう。
1. Simulatorアプリの[Features] – [Location]を使う
これは知ってる方も多いと思います。
Simlatorアプリを起動し、メニューから[Features] – [Location]を開くとこんな感じで位置情報を化かすことが出来ます。

None | 位置情報の偽装なし |
Custom Location… | 緯度経度を入力し任意の位置(固定)を表示 |
City Run | カリフォルニアのApple社周辺をランニングで移動し続ける |
City Bicycle Ride | カリフォルニアのApple社周辺を自転車で移動し続ける |
Freeway Drive | カリフォルニアのApple社周辺を車で移動し続ける |
Apple | カリフォルニアのApple社の位置(固定)を表示 |
適当な位置でも良い場合は事足りるのですが、やたらApple社の周辺ばかり走らされるのもテストしづらい。あとCustom Locationで直接座標入力できるので、決まった位置へ移動するにはこれで充分ですが、固定なので移動などはシミュレートできません。
Appleがこの機能をもう少し作り込んでくれれば何の問題もないんですけどね。。。
2. Xcodeでデバッグ実行時のメニューからデフォルトの位置を選択する
XcodeでRunした際に、画面下部にひっそりと表示されるコイツ。

これの矢印アイコンをクリックすることでも位置情報をシミュレートできます。
※矢印アイコンが表示されない場合は、1.のSimulatorアプリのLocationがNoneになっていない時なのでNoneに設定しましょう。
このメニューを開くと、世界の代表都市の位置がシミュレートできるようになっています。
ただこれでもまだ足りませんよね。。。?
もっと特定の位置へササッと切り替えたり、動いた時のテストもしたい。
そんな時に次の3パターン目です。

3. Xcodeでデバッグ実行時のメニューからGPXファイルを読み込んで実行
さっきの2.のメニューで一番下に「Add GPS Exchange to Workspace…」ってのがありましたよね。これを使います。
GPS Exchange(通称:GPX)については公式サイトを確認ください。
要はGPSデータ(ウェイポイント、ルート、トラック)を交換するための軽量なXMLデータフォーマットのことです。位置情報だけじゃなくルートやトラック情報も書き込めるフォーマットで数多くのアプリケーションで使用されています。
で、Google Mapなどでもルートを引いたらGPXでエクスポート出来るのですが、なぜかXcodeではGPXのタグに全然対応していないのです。。。
例をあげると、Google Mapから出力したGPXは<trk>タグの<trkpt>として位置が連続的に記録されます。
しかし!
Xcodeでそのまま読み込んでも何も起こりません。。。なぜか。。。
それは「<trk>タグに対応していないから」です!!!
わーお。びっくり。
ではどうするか。対応するタグで出力するしかない!のです。
対応しているタグはどうやら <wpt> (ウェイポイント)のみのよう。
面倒だが自分でテキスト変換してデータ作るしかないのか。。。と諦めかけてたその時。。。
<wpt>タグで位置情報を連続に吐き出してくれるサイトがあったんです!!(やったね!)
こちら、アクセスすれば直感的にわかりますが、シミュレートしたい場所の地図を表示してポチポチ押していけばどんどんピンが追加されるのでそれをつないでいくだけ。
速度も指定できるので、歩きの場合や車移動などもある程度実現できるかと。
そして終わったら下ボタンで「Download GPX」するだけ!
ファイルが用意できたら、さきほどの2.のメニューからGPXファイルを読み込ませればプロジェクトにコピーされて使用できるようになります。
一度作成すれば他人にも渡したり使い回せるので非常に効率アップです!
まとめ
知ってる人は当然知っている、でも知らない人もいる!?かもしれないネタ、いかがでしたか?
私は正直このようなシミュレートはAppleが重い腰を上げるか、別ツールを使わないと出来ないと思ってたので参考サイトを発見したときは目からウロコ状態でした。
位置情報サービスを使用するアプリの開発者やテスターの方々のお役に立てば幸いです。
またこういうネタが溜まってきたらブログに書こうと思いますので、たまに当社ブログも覗いてもらえると嬉しいです。
それでは!