これなに?
WWDC23開催時点で判明した、iPhone&iPadエンジニアがVisionOS(VisionProヘッドセットデバイス)へのアプリ対応でしておくべきことを簡潔にまとめています
結論
- 基本的にiPhone&iPad向けのアプリはヘッドセットで問題なく動作する可能性が高いとのことで、大きな作業は発生しない
- XcodeにxrOS SDK(ヘッドセットデバイス向けSDK。多分visionOS SDKになる)をインストールする必要がある
- ライトモード定義での対応が必須
- ヘッドセットではアプリがライトモードで動作するため
- iPadアプリの場合は横向き対応が必要
- 基本横向き表示されるので、縦向き推奨のアプリは明示すること
- iPhoneアプリは縦で表示される
- デバイス独自の機能(カメラなど)を利用している場合は、デバイスの機能が利用可能か否かのチェックコードが必須
- まだ詳細は出ていないが、おそらくmacro等でデバイスごとに利用する機能を分岐する必要などが出てくるかも
- 一旦はチェックしておけば問題ないとのこと
- カスタムジェスチャーを入れている場合、複数タップの許諾などをチェックし動作確認すること
- ヘッドセットでは両手同時や目や声での操作が可能になるため、既存のカスタムジェスチャー定義で予期せぬ操作が行われる可能性があるとのこと
- 両手で同時に操作されることを想定して、設定を見直す必要がある
- Info.plistに新しい設定項目を追加
- UIPreferredDefaultInterface Orientation キーなどのヘッドセット用の設定項目をInfo.plistに追加する必要がある(追加される詳細なキーは未だ未発表??)
- UIKitのViewに目や声でアクセスできるプロパティを設定する
- 検索窓などのFieldであれば、isLookToDictateEnabled というプロパティをtrueにすることで、目と声で検索できるようになるとのこと
- 上記以外にも今後ヘッドセットならではのアクセス方法に関するプロパティが出てくるかも
- ARKitを利用している場合は再構築が必要
- iPhoneやiPadのカメラ映像上で動作するようなARView/ARSessionなどはヘッドセットでは動作しないとのこと
- visionOSと同時にARKitも大きく刷新されたことで、改めて再構築する必要がある
- 今後の方針を決める
- 基本的に既存のアプリはvisionOS上で問題なく動作するが、あくまで四角いWindow上でしか動作しないため、空間的に利用できるアプリにはならない
- その上で、iPhone&iPadのアプリとしてiOS SDKでビルドしてヘッドセット上で動作させるか、あるいはヘッドセット用アプリとしてしっかり対応してxrOS SDKでビルドするかを議論する必要がある
余談
- Touch ID や Face ID をサポートしている場合、ヘッドセット上で目を使いロックを解除する「Optic ID」と自動でブリッジされるとのこと。すごい。
- SpriteKit や Storyboard などのUIフレームワークはvisionOSのビルドでは利用出来ない。したがって、こうしたフレームワークを利用している場合、iOS SDKでビルドするしかない。
参考文献