【最強】iOSアプリのデバイス毎の確認をiOSシミュレータを複数起動して最速で行う【最高】

この記事は eureka Native Advent Calendar 2017 – Qiita の19日目の記事です。

Pairs Global事業部のiOSエンジニアのmuukiiです 🤠

Xcode9ではシミュレータの複数同時起動が可能になりました。
これにより、開発時にシミュレータを切り替えることなく、並行してデバイス毎の確認ができるようになったのは大きなアップデートですよね!

しかし、修正を行った際にスキーム設定からシミュレータを選択して全てのデバイスに対して実行しなおすのは面倒ですね?😏

今回はこの面倒さを解消するTipsを紹介します 🚀

.appファイルはドラッグ&ドロップでインストールできる

実はシミュレータには.appファイルをドラッグ&ドロップするとアプリがインストールされるようになっています。

補足
.appファイルはシミュレータ用のアーキテクチャ(x86_64など)でビルドされている必要があります。

この仕組みを利用して次の動画のようなことができます。



まず、事前にシミュレータを複数起動しておきます。
Xcodeから実行するシミュレータは適当に選択しておき、ビルドが終わったタイミングでXcode上のProducts/MyApp.appを残りのシミュレータにドラッグ&ドロップでインストールします。

修正 → 確認のフロー

  1. アプリの動作を確認したいシミュレータをすべて起動しておく
  2. どれかのシミュレータを対象としてXcodeから実行
  3. ビルドが終わったらProducts/MyApp.appを残りのシミュレータにドラッグ&ドロップでインストール
  4. すべてのシミュレータで動作を確認
  5. 修正が必要であれば、修正を行い2から繰り返す

これからはシミュレータが活躍する時代

本記事ではGUIによる操作を行っていますが、xcrun simctlコマンドを利用することでターミナルやスクリプトからでもシミュレータの追加・起動・インストールなどの操作が行えます。
工夫次第では、「一気に全てのシミュレータで起動」とか実現できます。

.appファイルさえあればよいのでアプリのリリース毎にシミュレータ用の.appファイルを管理しておけば、あとで簡易的な確認をする際にとても便利です。

シミュレータをターゲットにしてアーカイブはできないので、次のようなスクリプトでビルドを行い、DerivedDataから.appファイルを取り出せます。
ビルドコマンド

$ xcodebuild -workspace <ワークスペース> -scheme <スキーム> -arch x86_64 -sdk iphonesimulator -configuration <Configuration> 

.appファイルが存在するDerivedDataのパスを取得

$ xcodebuild -workspace <ワークスペース> -scheme <スキーム> -arch x86_64 -sdk iphonesimulator -configuration <Configuration> -showBuildSettings | grep -m 1 "CONFIGURATION_BUILD_DIR" | grep -oEi "\/.*"

まとめ

この方法でレイアウトの確認、OSごとの動作確認のサイクルがかなり早くなりました 🤩
外部ディスプレイを使ってシミュレータを表示しておくともっと快適になりそうです。
これ本当に今年一番嬉しかったことですね。 Androidエンジニアからは「そんなのAndroidなら最初からできたよ」と言われましたが😭

  • このエントリーをはてなブックマークに追加

エウレカでは、一緒に働いていただける方を絶賛募集中です。募集中の職種はこちらからご確認ください!皆様のエントリーをお待ちしております!

Recommend

Androidのカスタムプッシュ通知でリッチなUXをユーザーに届けよう

Go初心者でもすぐできる!Raspberry Piと組み合わせて素早く目覚ましを作る方法