iOS アプリ開発 〜 Mac のカメラを使ってシミュレータでカメラの動作確認

はじめに

iOS アプリ開発では、シミュレータでカメラを利用できません。そのため、カメラ機能を実装していると実機での確認が必須になります。

しかし、カメラ以外の機能を開発している場合でも、カメラが関係する部分をテストしたい場合があります。たとえば、ユーザープロフィール機能の開発中にアバター画像の撮影機能を確認したい場合などです。こうしたケースでは、毎回実機ビルドするのは開発効率を下げる要因になります。

RocketSim を使えば、シミュレータから Mac のカメラを利用できるようになります。この記事では、RocketSim のシミュレータカメラサポート機能について紹介します。

RocketSim のシミュレータカメラサポート

RocketSim は Xcode シミュレータの機能を拡張する Mac アプリです。Mac App Store から無料でダウンロードできます。

その中でも便利なのが、シミュレータカメラサポート機能です。Mac のカメラ映像をシミュレータから利用できるようになります。

カメラサポートは有料機能なので、試すにはライセンスが必要です。ただ、一度設定してしまえば、実機なしでカメラ機能をテストできるようになります。

シミュレータで実行すると、Mac のカメラ映像が表示されました。冒頭の動画で実際の動作を確認できます。

セットアップ

Mac App Store から RocketSim をインストールします。

RocketSim on Mac App Store

インストールが完了したら、アプリを起動しておきます。

次に、アプリの初期化コードに以下を追加します。

import SwiftUI

@main
struct YourApp: App {
    init() {
        loadRocketSimConnect()
    }

    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }

    private func loadRocketSimConnect() {
        #if DEBUG
        guard (Bundle(path: "/Applications/RocketSim.app/Contents/Frameworks/RocketSimConnectLinker.nocache.framework")?.load() == true) else {
            print("Failed to load RocketSim Connect linker framework")
            return
        }
        print("RocketSim Connect successfully linked")
        #endif
    }
}

このコードは Debug ビルドでのみ有効になります。#if DEBUG で囲んでいるので、Release ビルドには影響しません。App Store に提出するときも問題ありません。

フレームワークの読み込みに失敗しても(RocketSim がインストールされていない環境など)、アプリは正常に起動します。

まとめ

RocketSim を使えば、シミュレータで Mac のカメラを利用できます。カメラ機能の実装時に毎回実機ビルドする必要がなくなるので、開発がかなり楽になりました。

有料機能ではありますが、頻繁にカメラ機能を扱う場合は、検討してみる価値があります。

参考リンク