最近、 Vision Pro をリリースし、私は幸運にもそのオーナーになることができました。それ以来、私は自分のアプリケーションの開発に熱心に取り組んでおり、Vision Pro App Store 内のさまざまなアプリやトレンドを探求してきました。 Apple が 私の注意を引いたのは、新しいアプリが毎日のように登場しているものの、没入型仮想現実体験に適したものはほんのわずかだということです。多くの開発者が Vision Pro の機能に関するドキュメントや例を見つけるのに苦労しているようです。しかし、Vision Pro の機能を活用することで、アプリケーションを差別化し、ユーザーに優れた体験を提供できます。 この記事では、アプリケーションを作成する際に発見したヒントやコツをいくつか紹介します。これらのヒントは、アプリケーションを目立たせるだけでなく、VisionOS 内でのシームレスな統合とネイティブな感覚を保証するのに役立ちます。 暗い周囲効果 ビデオや写真を表示するときに、ウィンドウの背景が暗くなることに気づいたことがあると思います。設定では、これは「自動調光」と呼ばれます。同じ効果を得るには、ビューで を使用する必要があります。そうすると、ユーザーの周囲のスペースが暗くなり、ウィンドウは明るいままになります。これにより、コンテンツに焦点を合わせやすくなります。 .preferredSurroundingsEffect(.systemDark) 非表示のウィンドウコントロールライン ビデオやコンテンツを表示するときに、ユーザーの気を散らすことなく、ウィンドウが空中に浮かんでいるような効果を生み出す必要があります。このため、Apple は、現在のウィンドウを移動したり閉じたりするために使用されるウィンドウの下部のバーを非表示にする機能を提供しています。.persistentSystemOverlays を使用すると、ウィンドウ上のこのコントロール バーを非表示にできます。このコントロール バーは、デフォルトのアニメーションで消え、ユーザーがウィンドウを操作したときにのみ表示されます。 .persistentSystemOverlays(.hidden) ビデオ反射効果 標準の Apple TV アプリケーションを開いて映画をオンにすると、映画ウィンドウの反射がフレームごとに変化し、より没入感のある効果が得られることがわかります。ビデオの周囲にグロー効果を得るには、 を使用して を有効にする必要があります。そうすると、Apple TV や HBO Max と同じ効果が得られます。ドキュメントには次のように書かれています。 VideoPlayerComponent isPassthroughTintingEnabled これは、ビデオ再生中にパススルーの色付けを有効にして、フレームの平均色を取得し、その色でパススルーを色付けしてビデオの周囲に表示し、ビデオを強調します。 ウィンドウのサイズ変更 ユーザーがウィンドウのサイズを変更できないようにしたい場合は、次の方法があります。 onAppear { guard let windowScene = UIApplication.shared.connectedScenes.first as?UIWindowScene else { return } windowScene.requestGeometryUpdate(.Vision(resizingRestrictions: UIWindowScene.ResizingRestrictions.none)) } このメソッドでは追加のサイズ設定を指定することもできます。メソッドの完全なシグネチャは次のようになります。 windowScene.requestGeometryUpdate(.Vision(size:, minimumSize:, maximumSize:, resizingRestrictions:)) 手の視認性 アプリケーションが没入型空間を使用していて、ユーザーに手を見せたくない場合、または AmazeVR のように仮想の手で置き換えたい場合は、 を使用する必要があります。 .upperLimbVisibility(.hidden) オーナメント VisionOS アプリケーションで のようなサイドバーを見たことがあると思います。Apple は、ウィンドウを「拡張」してその両側に装飾を追加できる、VisionOS 用の新しい メソッドを導入しました。 TabBars View .ornament( visibility: .visible, attachmentAnchor: .scene(.bottom), contentAlignment: .center ) { HStack { Button("Play", systemImage: "play.fill") { } Button("Stop", systemImage: "stop.fill") { } } .labelStyle(.iconOnly) .padding(.all) .glassBackgroundEffect() } コアロケーション 私が実験的に検証できた興味深い事実は、CMMotionManager のメソッドが没入型空間でのみ機能し、通常のウィンドウ ビューでは機能しないということです。 結論 VisionOS には、ユーザーを仮想世界に誘い込み、その一部であると感じさせる没入型アプリケーションを作成するためのツールが多数用意されています。Vision Pro 向けのアプリケーションはますます増えていますが、その機能をすべて活用しているものはごくわずかです。そこで、差別化を図るチャンスが生まれます。それらを活用して、メリットを得てください。残念ながら、開発者は簡単にアクセスできるドキュメントや例を見つけるのに苦労しています。そのため、この記事を書いています。私のヒントが、アプリケーションの改善に役立つことを願っています。