visionOSアプリの計画を立てる

Apple Vision ProとvisionOS向けのアプリやゲーム開発に必要なさまざまなツールとテクノロジーについて確認しましょう。デベロッパが開発を始めるために必要なすべてはAppleが提供し、アプリに実装したい機能やパフォーマンスをvisionOSテクノロジーで実現することができます。

    広がる可能性

    Apple Vision Proは、空間コンピューティング向けにゼロから設計された初めてのプラットフォームです。Apple Vision Proを装着すると、周囲の環境に溶け込む、無限に広がるキャンバスの上でさまざまなアプリやゲームを操作することも、1つの体験に集中して新しい場所を探索することもできます。visionOSのユニークな機能を活かして、人とのつながり、効率性の向上、エンターテインメントの概念を再定義するアプリの構築方法を学びましょう。また、SwiftUIUIKitRealityKitARKitなどの既存のフレームワークを使ってアプリをvisionOSに対応させる方法も確認しましょう。

    • おなじみのウインドウを共有スペースに作成する:1つまたは複数のウインドウを開きます。これらのウインドウはSwiftUIのシーンであり、空間内に平面として表示されます。ウインドウでは、従来のビューやコントロールを使用することができ、1つまたは複数のウインドウを開いてアプリのコンテンツを管理することができます。アプリのウインドウは、ほかのアプリと並んで表示され、ユーザーはウインドウのサイズを変更したり、周囲に配置したりできます。
    • 3D要素でインターフェイスを拡張する:3DオブジェクトやRealityViewをウインドウに追加して、奥行きを持たせます。ユーザーがあらゆる角度からコンテンツを見られるようにするには、ボリュームを作成することを検討しましょう。ボリュームは、アプリのほかのウインドウと並んで共有スペースに表示されます。
    • イマーシブ体験レベルを上げる:アプリをフルスペースで開くと、visionOSのキャンバス全体をそのアプリが占有します。3Dコンテンツをユーザーの周囲に直接配置したり、別の世界へのポータルを開いたり、ユーザーを包み込むように周囲全体に表示したりできます。フルスペースを開くと、そのアプリのウインドウとボリュームが表示され、ほかのアプリのコンテンツは非表示になります。

    visionOS向けアプリの制作では、アプリ内でウインドウ、ボリューム、スペースをいつでも組み合わせたり調整したりして、コンテンツに最適な体験を作り出すことができます。アプリ内でイマーシブ体験を提供すべき鍵となるタイミングを特定し、イマーシブ体験のレベルを自然に移行させることができます。

    既存のiPadOSアプリやiOSアプリを互換性のあるアプリとしてvisionOSで実行することもできます。アプリは、拡大縮小可能な単一のウインドウとしてユーザーの周囲に表示されます。

    開発を始めるには

    Appleの統合開発環境であるXcodeが、ソフトウェア開発プロセスの出発点です。Xcodeには、プロジェクト管理、コードエディタ、UI用のビジュアルエディタ、デバッグツール、各種デバイスのシミュレータ、パフォーマンス評価ツールなど、ソフトウェア開発に必要なすべてのツールが用意されています。またXcodeには、「フレームワーク」と呼ばれる、ソフトウェア開発用のシステムコードモジュールが含まれています。

    Xcodeをダウンロードする

    XcodeのvisionOS向け新規プロジェクトメニューのスクリーンショット。 XcodeのvisionOS向け新規プロジェクトメニューのスクリーンショット。

    Xcodeで新規プロジェクトを作成するには、「File(ファイル)」>「New(新規)」>「Project(プロジェクト)」を選択して、表示される指示に従い、visionOS向けアプリの開発を開始します。すべての新規プロジェクトではSwiftUIが使用されます。SwiftUIは、アプリの主要な機能を作成する最新の宣言型プログラミングモデルを提供します。

    SwiftUIは、Appleのデータ管理テクノロジーとシームレスに連携し、コンテンツの制作をサポートします。Swift標準ライブラリおよびFoundationフレームワークには、Array型やDictionary型などの構造型や、文字列、数字、日付、その他の一般的なデータ値に使用する値型が用意されています。ユーザー定義のカスタム型については、SwiftのCodableサポートを採用してそれらの型をディスク上で永続化します。アプリでより大規模な構造化データを管理する場合は、SwiftDataCore DataCloudKitで提供されているオブジェクト指向モデルを使用してデータの管理と永続化を行えます。

    また、堅牢で使い慣れたUnityのオーサリングツールを使用して、新しいアプリやゲームを制作することもできます。AR Foundationなどの使い慣れたUnityの機能に加えて、パススルーや動的中心窩レンダリングなど、visionOSのすべてのメリットを活用することができます。

    新しい次元をインターフェイスに追加する

    アプリ制作は、まずウインドウから始めて、必要に応じて要素を追加し、ユーザーがコンテンツに没入できるようにします。3Dコンテンツを表示するためのボリュームを追加したり、フルスペースでイマーシブ体験のレベルを高めたりします。mixedスタイルでは、パススルーを表示するようにスペースが構成されます。progressiveまたはfullスタイルを適用すれば、イマーシブ体験のレベルを高め、気を散らすものを最小限に抑えることができます。

    • ウインドウに奥行きを加える:奥行きベースのオフセットをビューに適用し、ウインドウの一部を強調したり、モードの変化を示唆することができます。3Dオブジェクトをビューのレイアウトに直接組み込み、2Dビューと並べて配置することもできます。
    • カスタムビューにホバーエフェクトを追加する:ホバーエフェクトを使用して、ユーザーが見ているカスタム要素を強調表示することができます。ホバーエフェクトの動作をカスタマイズして、見た目を自在に演出できます。
    • オーナメントを使用してメニューやツールバーを実装する:よく使うツールやコマンドは、オーナメントを使用してウインドウの外枠に配置できます。

    visionOSアプリにおいて重要な役割を果たすRealityKitは、アプリ内で3Dオブジェクトの作成やアニメーションを管理するために使用されます。RealityKitコンテンツをプログラムで作成するか、Reality Composer Proを使用して、必要とするオブジェクト、アニメーション、サウンド、ビジュアルエフェクトがすべて含まれたシーン全体を作成できます。RealityViewでそれらのシーンをウインドウ、ボリューム、またはスペースに含めることができます。その他にも、以下のような3D機能をアプリで活用することができます。

    • ダイナミックエフェクトにMaterialXシェーダを採用する:MaterialXは、映画、ビジュアルエフェクト、エンターテインメント、ゲーム業界の主要企業が導入しているオープンスタンダードです。既存のツールで作成したMaterialXシェーダを、Reality Composer Proを使用してRealityKitのシーンに組み込めます。
    • 3DコンテンツをUSDZファイルで保存する:お気に入りのツールを使用して、複雑な3Dオブジェクトやメッシュを作成したら、それらをUSDZアセットとしてプロジェクトに保存できます。Reality Composer Proでアセットに非破壊的な変更を行い、それらをもっと大きなシーンに組み合わせることができます。
    • Xcodeで3Dコンテンツのプレビューを作成する:プロジェクトウインドウから、3Dコンテンツを含むSwiftUIビューを直接プレビューできます。Xcodeのプレビューに複数のカメラ位置を指定することで、さまざまな角度からコンテンツを見ることができます。

    Human Interface Guidelines

    Appleの「ヒューマンインターフェイスガイドライン」では、アプリのインターフェイスのデザイン、コンテンツのナビゲーション、インタラクションの管理などに関する貴重な情報が得られます。visionOSのエコシステムについて学ぶ際の優先事項として、このガイドラインを確認してください。

    わかりやすい操作方法を考案する

    visionOSでは、ユーザーは主に目と手を使ってアプリを操作します。間接ジェスチャでは、オブジェクトを見たあと、親指をほかの指でタップすると、そのオブジェクトを選択できます。直接ジェスチャでは、3D空間で自分の指を使ってオブジェクトを操作します。アプリで入力を処理する時は、次のことを行ってください。

    • 標準のシステムジェスチャを採用する:タップ、スワイプ、ドラッグ、長押し、ダブルタップ、ズーム、回転などのジェスチャで、アプリの大部分の操作を行えるようにします。SwiftUIUIKitには、これらのジェスチャを各プラットフォームで処理するためのサポートが内蔵されています。
    • 外部ゲームコントローラのサポートを追加する:ゲームコントローラは、別形式の入力方法をアプリに提供します。接続されたワイヤレスキーボード、トラックパッド、アクセシビリティハードウェアからの入力は、システムによって自動的にアプリのイベントハンドラコードに送られます。ゲームコントローラの場合、Game Controllerフレームワークで明示的にサポートを追加する必要があります。
    • ARKitでカスタムジェスチャを作成する:システムはARKitを使用して、ユーザーの周囲環境との相互作用をスムーズに行っています。アプリをフルスペースに移行させる場合、ユーザーの手と指の位置を取得する許可をリクエストし、その情報を使用してカスタムジェスチャを作成できます。

    ARKitには、フルスペースでコンテンツ関連の操作をサポートするための追加サービスが用意されています。ユーザーの周囲にある表面を検出したり、既知の画像を検出したりして、それらにアンカーを取り付けることができます。周囲の環境のメッシュを取得し、それをRealityKitのシーンに追加することで、アプリのコンテンツと実世界のオブジェクトとの相互作用を可能にします。周囲の環境に対するApple Vision Proの位置と向きを決定し、ワールドアンカーを追加してコンテンツを配置できます。

    新たなレベルのオーディオやビデオを作成する

    Apple Vision Proはステレオスコピック(立体視)ビデオに対応しており、映画などのエンターテインメントが画面の枠を越えて、ユーザーの周囲環境に飛び出すかのように投影されます。visionOSがデフォルトで備えている空間オーディオ体験についても、活用方法を検討しましょう。

    • ビデオアセットを3D用にアップデートする:イマーシブな3D環境で3D映画を再生することで、映画鑑賞を新たなレベルに引き上げることができます。QuickTimeファイル形式では、画面から飛び出すように見えるコンテンツを含めることができます。AVKitAVFoundationを使用して、映画を再生できます。ステレオスコピックコンテンツ向けの要素を映画ファイルに含めることができます。
    • 空間オーディオのサポートを組み込む:AVFoundationフレームワークのオーディオ固有の型を含むAVFAudioを使用して、アプリの音楽プレイヤーを開発できます。ゲームやアプリで複雑かつダイナミックな空間オーディオ体験の構築を可能にするPHASEを使用して、オーディオを別次元に進化させましょう。
    • ライブコンテンツや収録済みコンテンツをストリーミング配信する:HTTP Live Streamingを使用し、ストリーミング配信コンテンツを作成してサーバにデプロイしましょう。ストリーミング配信されたコンテンツをアプリで再生する場合は、AVFoundationを使用します。

    インクルージョンを考慮する

    誰もがコンテンツに確実にアクセスできるよう、インクルーシブなアプリを開発しましょう。Appleのテクノロジーは、さまざまな方法でインクルージョンをサポートしています。アプリ全体で以下の事項をサポートしましょう。

    • アプリを国際化およびローカライズする:グローバルな市場を視野に入れ、アプリをローカライズして異なる地域や言語に対応させましょう。アプリをローカライズできるよう、異なる言語や地域向けに文字列、日付、時刻、通貨、数字をフォーマットするためのコードが提供されているFoundationフレームワークを使用します。左から右に書く言語と右から左に書く言語の両方において、UIが適切に表示されるよう対応させてください。アプリのリソースは、ローカライズしてXcodeのプロジェクトに追加します。国際化およびローカリゼーションのプロセスに関する情報については、「ローカリゼーション」を参照してください。
    • インクルーシブな表現や用語を使用する:コンテンツを作成する際は社会的および文化的な違いを考慮し、特定のユーザーに対してネガティブまたは軽蔑的なニュアンスを持つ画像や用語の使用を避けてください。詳しくは、「ヒューマンインターフェイスガイドライン」の「インクルージョン」を参照してください。
    • アクセシビリティラベルとナビゲーションを更新する:Appleのテクノロジーにはアクセシビリティのサポートが直接組み込まれていますが、画面読み上げ機能やその他の機能でアクセシビリティに配慮した体験を作成するには、デベロッパが提供する情報が必要になります。アクセシビリティラベルやその他の説明が有益な情報を提供していること、およびフォーカスベースのナビゲーションがシンプルで直感的になっていることを確認してください。詳しくは、「アクセシビリティ」を参照してください。
    • 別の方法で機能にアクセスできるようにする:メニューコマンドゲームコントローラなど、別の方法でもユーザーがコンテンツを選択したり操作したりできるようにします。ユーザーが支援技術を使用して、RealityKitのエンティティを切り替えたり選択したりできるように、RealityKitのエンティティにアクセシビリティコンポーネントを追加します。
    • VoiceOverのアナウンスを追加する:visionOSでVoiceOverが有効になっていると、ユーザーは手のジェスチャでアプリ間を移動できます。Direct Gestureモードを有効にしてアプリを操作する場合は、ユーザーがコンテンツの操作を把握できるようにアナウンスを利用することができます。
    • オーディオコンテンツにキャプションを含める:キャプションは、一部のユーザーにとって必須ですが、特定の状況ではすべてのユーザーにとって実用的になります。たとえば、騒音がある環境でビデオを視聴する場合に便利です。テキストやダイアログだけでなく、音楽やアプリのサウンドエフェクトにもキャプションを含めます。カスタムビデオエンジンに表示するキャプションにも、システムの外観を採用するようにしてください。
    • 視覚とモーションの影響について検討する:モーションエフェクトは、動きにそれほど敏感ではないユーザーにも不快感を与える場合があります。速い動き、弾んだり波打つような動き、拡大アニメーション、多軸の動き、スピン、回転などを組み込んだエフェクトの使用を制限してください。システムのアクセシビリティ設定で動きを減らすことが推奨されている場合は、適切な代替策を提供します。詳しくは、「ヒューマンインターフェイスガイドライン」の「モーション」を参照してください。

    visionOSでアクセシビリティに配慮したアプリを開発する方法について詳しくは、「visionOSアプリのアクセシビリティサポートの向上」を参照してください。

    プライバシーを優先する

    プライバシーは重要なため、ユーザーのデータがどのように使用されるかを明確にする必要があります。データを収集する場合は、その情報がどのように使用されるかを説明する、プライバシーに関する声明を表示するようにします。個人データを利用するAppleテクノロジーを採用する場合、データの初回利用時に、データの使用用途に関する説明をシステム上で表示してください。詳しくは、「プライバシーとユーザー環境設定に関するベストプラクティスの採用」を参照してください。

    • 収集するデータに対して具体的なメリットを提供する:個人情報を提供することにユーザーが同意した場合、それに対する確かなメリットをアプリで提供する必要があります。ユーザーの個人データを入手する目的で、データを収集しないでください。
    • 収集した情報がどのように使用されるかを明確に説明する:ユーザーのデータの使用方法について透明性を確保してください。プライバシーに関わるテクノロジーについて使用許諾を求める時には、そのデータが必要な理由をユーザーが理解できるよう、使用について明確に説明する目的文字列を提供する必要があります。また、App Storeのアプリのページで、データについて説明する必要があります。
    • 収集および保存したデータを保護する:データを収集する場合は必ず、悪意ある攻撃からそのデータを保護してください。パスワードに代わるセキュリティ対策としてパスキーを採用します。個人識別情報、金銭に関するデータ、機密性の高いその他のデータは、ユーザーの暗号化されたキーチェーンに保存します。その他の個人データは、ディスク上の暗号化テクノロジーやその他のAppleのセキュリティテクノロジーを使用して保存します。ローカルに保存するデータやアプリの外部に送信するデータは、AppleのCryptoKitを使用して暗号化します。

    アプリをテストして調整を行う

    開発中にアプリをテストし、Apple Vision Proで正常に動作することを確認する方法がいくつかあります。

    • アプリを徹底的にテストおよびデバッグする:開発中に問題が発生した際は、組み込まれているXcodeデバッガを使用してデバッグを行います。XCTestを使用して自動テストスイートを作成し、ビルドするたびに毎回テストを実行して、新しいコードが想定通りに機能することを確認します。さまざまなシステム負荷をかけた状態でこれらのテストを行い、アプリの動作を調べます。
    • ワークロードに注意する:アプリが実行する処理によって、具体的なメリットが得られるようにします。アルゴリズムを最適化して、アプリによるCPUリソースとGPUリソースの消費を最小限に抑えます。Xcodeに付属するInstruments Appを使用して、コードのボトルネックやパフォーマンスに関するその他の問題を特定します。詳しくは、「visionOSアプリのパフォーマンスプランの作成」を参照してください。
    • 継続的インテグレーション(CI)ワークフローを採用する:CIのアプローチを採用し、コミットごとにコードベースの品質と安定性が維持されるようにします。テストスイートの一環として、パフォーマンス関連のテストも実行します。Xcode Cloudの継続的インテグレーションシステムを使用して、ビルド、テストサイクル、QAチームへのApp配布を自動化します。

    さらにその先へ

    アプリをビルドし、実行できることを確認したら、その体験を向上させる方法を検討しましょう。特定機能の追加やコンテンツに対するアプローチの変更など、小さい変更が大きい違いをもたらすこともあります。

    • SharePlayでつながりを提供する:共有と共同作業は、visionOSの重要な部分を占めています。そのため、アプリのどのアクティビティをFaceTimeで利用できるようにするか、十分に検討しましょう。Group Activitiesフレームワークを使用して、アクティビティの開始やアップデートの管理に関するサポートを追加できます。
    • 空間ペルソナ向けにSharePlayアクティビティをデザインする:アプリ内で空間ペルソナ向けにSharePlayをサポートできる場面を特定し、共有コンテキストの維持に必要となる追加の詳細データを同期します。たとえば、ウインドウのコンテンツだけでなく、ウインドウのスクロール位置も共有したいかもしれません。

    その他のリソース

    独自の機能を提供すると同時に、Appleのプラットフォームと緊密に統合する各種テクノロジーを確認しましょう。これらのテクノロジーにより、iOSiPadOSmacOStvOS、visionOS、watchOSの全プラットフォームを通してシームレスなアプリとゲームのエコシステムを実現できます。