はじめに

こんにちは!システム開発部のYです。

WWDC 2023にて、Apple新製品「Vision Pro」が発表されました。
Vision Pro」には「Vision OS」という名前のOSが搭載されます。

そのVisionOSでの基本や、アプリ開発についてWWDCの動画等から記載されている内容を引用して、まとめていきます。詳しい情報については参考先URLを参照してください。

確認バージョン

  • MacBook Pro (13-inch, 2019, Two Thunderbolt 3 ports)
    • プロセッサ 1.4 GHz クアッドコアIntel Core i5
    • グラフィックス Intel Iris Plus Graphics 645 1536 MB
    • メモリ 16 GB 2133 MHz LPDDR3
  • macOS Ventura 13.5
  • Xcode15 beta5
  • Vision OS 1.0 beta

VisionOSの基本

Window/Volume/Space

詳細についてはURL参照: https://developer.apple.com/videos/play/wwdc2023/10260/

空間コンピューティングの基本的な要素であるWindowVolumeSpaceという空間コンピューティングの基本要素によって、没入感の連続を実現するアプリを構築するための柔軟なツールセットが提供されます。

  1. Window
    VisionOSのウィンドウは、macOSのウィンドウと同じ概念。Safariを起動すればSafariのウィンドウが開きます。ウィンドウ内にはそのアプリのコンテンツが表示される。
    VisionOSのウィンドウにもmacOSのウィンドウとは異なるところがある。それはウィンドウ内に奥行きを持った3Dオブジェクトを表示することができる。
  2. Volume
    Volumeは空間上に3Dオブジェクトだけを表示できるもの。ウィンドウの様な外枠もなく、空間上に3Dオブジェクトとして表示される。色々な角度からオブジェクトを見ることができる。横から覗いたり、裏側に回り込んでみたり、3Dオブジェクトを好きな角度から見ることができる。
  3. Space
    VisionOSのSpaceは、macOSのデスクトップをイメージ。少しだけ違うのは、デスクトップはディスプレイサイズという限られた領域の中にしか表示できないが、VisionOSは360度全ての空間がディスプレイになっている。
    そしてSpaceにはShared SpaceFull Spaceというモードがある。

    • Shared Space
      デフォルトでは、アプリは共有スペースに起動をする。
      共有スペースは、Macのデスクトップ上の複数のアプリケーションと同じように、アプリケーションが並んで存在する場所。ユーザーは、アプリを好きな場所に配置し直すことができる。
    • Full Space
      フルスペースは、空間全体を1つのアプリで独占します。macOSのウィンドウをフルスクリーンにするとデスクトップ全体がウィンドウだけになるその概念と似ています。
      しかし、VisionOSではスペース空間全体になるため、フルスペースにすると見渡す限り全ての空間がアプリに独占されます。

VisionOSシミュレーター操作

※WWDC動画内のシミュレータースクショ

上部タブの説明

下部タブの説明

VisionOSジェスチャー

詳細についてはURL参照: https://developer.apple.com/design/human-interface-guidelines/gestures

Direct gestureCommon use
ズーム両手で行う主要ジェスチャーの1つ。両横を引っ張るように指をつまんでズームイン、逆の操作でズームアウト。またウィンドウのサイズを、四隅をつまむことで調整できます
タップ親指と人差し指を合わせると、目で見ている画面上のアイコン等がタップされたことになります。要はiPhoneの画面をタップするのと同じです
ダブルタップ2回タップすると、iPhoneでダブルタップに相当するジェスチャーとなります
ピンチとドラッグスクロールやウィンドウを動かすことに使用。横方向またはタテにスクロールでき、手を速く動かすと速くスクロールできます
ピンチ&ホールド親指と人差し指を合わせたまま行う操作。iPhoneのタップ&ホールド(タップして押しっぱなし)に似ており、テキストのハイライト等ができます
回転これも両手ジェスチャーで、指でウィンドウ等をつまんで手を回転させて、仮想オブジェクトを操作できるようです

VisionOS向けのアプリ開発について

既存コードからの移植(UIKit)

詳細についてはURL参照: https://developer.apple.com/videos/play/wwdc2023/111215/

Generalタブから、Supported DestinationsでVisionOSを追加するのみ

※ビルドエラー(移植時の注意点)

詳細については以下URL参照:
https://developer.apple.com/documentation/visionos/bringing-your-app-to-visionos

  • VisionOSはiOS14以前の非推奨となったAPIをサポートしていない
  • VisionOSで変換されないAPIがある
    •  UIDeviceOrientation がその一例(デバイスが複数の向きで使用されることを前提としているがVisionOSでは当てはまらない)
    • UIScreen 1つのハードウェアスクリーンによる、1つのウィンドウという前提は成り立たない

VisionOS向けにアプリを磨き上げる

App Icon

詳細については以下URL参照:
https://developer.apple.com/design/human-interface-guidelines/app-icons#visionOS

VisionOSのアプリアイコンは、3つの画像「Front, Middle, Back」を重ねて立体的表現をすることができる。※最低2つ以上のレイヤー画像を設定する必要があります。

背景色、フォントサイズ

VisionOSのデフォルト背景色はガラス色になっています。テキスト色などが見にくくなってしまう場合があります。その場合は、SystemColorを使用するとOSによって見た目が変わる。
同様にフォントサイズを使う代わりに、HeadlineやBodyなどを使用すると読みやすくなる。

Material

UIViewControllerのデフォルトの背景は、ガラス色です。
変更することができ、UIViewControllerのPreferredContainerBackgroundStyleプロパティをautomaticやglass、また.hiddenを返すこともできる。

ホバーエフェクト

UIHoverEffect: https://developer.apple.com/documentation/uikit/uihovereffect
カーソルを合わせると薄くハイライトされて表示される。

VisionOSでは、UIViewControllerやlistなどのシステムコンポーネントを使用すると、デフォルトでこれらのホバーエフェクトが得られるようになる。

また、HoverStyleプロパティを変更することで、無効にすることもできる。

下記は、UICollectionViewCellにHoverStyleプロパティを設定し丸みを帯びた長方形の形状を指定している。

アプリを2次元から3次元の世界に移行していく

Presentations/Ornaments/RealityKit

  1. Presentations
    Sheet表現
    iPadとは異なり、ViewControllerの「IsModalInPresentation」プロパティに関係なくタッチやその他のジェスチャーで閉じない。

    Alert表現
    シートと同じように、常にViewControllerは背面移動されアラートが表示される。
    標準的な、Presentationを使用しているのならVisionOSで既にベストな位置に表示される。
  2. Ornaments
    アプリのScene周辺の適切な範囲内にコンテンツを配置できる。
    空間プラットフォームが提供する追加のスペースを、これまで不可能だった方法で活用できる。
    下記はタブバーをSceneの左側にOrnamentsとして配置している。

    SafariはOrnamentsを使用し、検索エリアをWebページの上に表示をしている。
    Ornamentsを使えば、アプリが主要コンテンツを中央に配置しコントロールを端へ移動してくれる。

  3. RealityKit
    3Dモデルを表示する。
    新しいRealityViewはRealityKitコンテンツをホストできる。これによりエンティティをSwiftUI階層に追加できる。
    また既存のAPIであるUIHostingControllerはSwiftUIViewをホストできる。これでUIKitアプリを書き直すことなく、SwiftUIの他の新しいAPIと同様にRealityViewを利用することができる。

開発に使用できるマシンについて

詳細について: https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes

Appleによれば、現在開発者向けに提供されているXcode 15 beta 8において、既知の課題としてIntel Macでのシミュレータのサポートが行われていないと記載されています。
そのため、いち早く試してみるにはApple Silicon搭載のMacを使用するのが現時点では手堅そうです。

まとめ

VisionOSの基本、VisionOS向けのアプリ開発についてまとめました。

SpaceにはWindowVolumeを表示することが出来て、SpaceにはShared SpaceFull Spaceが存在します。

Simulator操作は、操作していれば慣れてきそうですね。ジェスチャーについては、実機確認するのが楽しみです。

また既存コードからの移植のしやすさは、注意点はあるもののそこまで難しくは無さそうです。

VisionPro発売が待ち遠しいです。個人で買うのには躊躇しますが。。笑

参考リンク



ギャップロを運営しているアップフロンティア株式会社では、一緒に働いてくれる仲間を随時、募集しています。 興味がある!一緒に働いてみたい!という方は下記よりご応募お待ちしております。
採用情報をみる