iOSシミュレーターのGPS情報更新は緯度経度の入力が面倒
最近iOSアプリのGPSの機能をデバッグする機会があり、複数の異なるロケーションで表示をテストしたい場面がありました。
通常シミュレーターのGPS情報は、シミュレーターのナビゲーションメニューから Features > Location > Custom Location
を選択し、緯度と経度を直接数値で入力する必要があります。
この設定方法だと いちいちメニューを開くのが面倒 ですし、何より 緯度経度をGoogle Mapsなどで調べ、カンマ区切りの情報を2つの数値に分割してコピペする という煩雑な作業が発生します
そのため、以前の私のように「極力位置情報の更新は行わない」という無駄(?)な努力をしている方もいるかもしれません。
set-simulator-locationは地名で位置情報を検索し設定してくれる神ツール
この作業を楽にする方法がないか調べていたところ set-simulator-location
というCLIツールを発見したのですが、これが神ツールでした
インストールはhomebrewかmintに対応しています。
$ brew install lyft/formulae/set-simulator-location
$ mint install lyft/set-simulator-location
インストールしたら、コマンドラインでおもむろに set-simulator-location -q 地点名
のように打つだけで、なんと マップで指定位置を検索し、座標を起動中のシミュレーターのロケーションにセットしてくれるのです
検索の機能性がMapアプリと同じなので、日本語などの多言語検索にも対応しているのが嬉しいですね
ちなみに裏ではMapKit APIを叩いているみたいです。
DEMO set-simulator-location
を使って位置情報を更新する様子
とりあえず動作の様子を先にみてほしいので動画を貼ります
これなら位置情報の更新がすごく楽になりますね
使い方
-q
オプションの引数に地名を与えると、検索と位置情報の設定が可能です。
$ set-simulator-location -q 東京駅 # 駅名
> Setting location to 35.6810419 139.7672144
$ set-simulator-location -q 富士山頂 # ランドマーク
> Setting location to 35.35975 138.73118
$ set-simulator-location -q Retty Inc # 会社名
> Setting location to 35.65394870599763 139.74173247814178
$ set-simulator-location -q 명동 # ハングルなどMapKitが対応している入力言語なら何でもOK
> Setting location to 37.5626802 126.9847376
なお検索の基準点が日本だと皇居付近で固定されているようで、複数ヒットする可能性があるようなクエリを使うとそこから一番近い場所に飛ぶようになっていました。
ただ詳細な挙動は不明なので、指定コンビニなどをクエリにする場合は店名まで指定する必要がありそう。
$ set-simulator-location -q コンビニ # 市ヶ谷付近のコンビニがヒットする
> Setting location to 35.691158245798476 139.74538564682007
$ set-simulator-location -q ローソン三田一丁目店
> Setting location to 35.6546947 139.74188
$ set-simulator-location -q ラーメン二郎 # 神田二郎がヒット
> Setting location to 35.6886097 139.7712955
もちろん緯度経度を指定することも可能で、その場合は set-simulator-location -c [緯度] [経度]
で指定します。
$ set-simulator-location -q 35.6810419 139.7672144
> Setting location to 35.6810419 139.7672144
GPS機能のデバッグが捗ること間違いないので、iOSでGPS機能を使って開発する方はインストール必須のツールだと思います