2023年12月9日に行われた札幌iPhone開発勉強会でのプレゼンテーション資料。
iPadOS17以降でiPadでUVC(USB Video Class)がサポートされたので実際にハードウェアを接続して動作を確認した旨のプレゼンテーション。
iPadで動くだけでは面白みがないのでSwiftUI を使ってMultiplatform 対応としiPadOS、macOS で動作するサンプルコードも用意している。
サンプルコードはUVCから取り込んだ映像をプレビューするだけとなっている。接続されるデバイスはコンソールゲーム機をターゲットとしている。
UVCデバイスを扱うコードを作成する上でつまづいた点はUVCからビデオ映像を取り込む際に使用するフレームワークであるAVFoundationの基本設定はビデオ会議やセルフィー向けのカメラ設定がデフォルトとなっている点である。
ビデオ会議やセルフィー向けのカメラ設定がデフォルト、とは何の話かというと映像のミラーリング(Mirroring)設定がデフォルトで有効でかつ自動ミラーリング属性が用意されている点、ミラーリングを解除する場合は自動ミラーリング設定を無効としてからミラー設定を無効とする必要がある。
マルチプラットフォームに関してはUVCから取り込んだ映像のプレビューを表示する画面に関してはSwiftUIでiPadOSとmacOSで共通化できない箇所であるためそれぞれ別のコードを記述する必要がある。
iPasOSとmacOSではプレビュー表示用オブジェクト自体は共通なのだが表示の処理は違いがあるのでiOS/iPadOS に慣れ親しんだプログラマーには違和感があるコードかもしれない。