visionOS Pathway
Pathwayを始める
Pathwayは、魅力的なアプリやゲームを開発する際に参照できるビデオ、ドキュメント、リソースをまとめたシンプルで使いやすいコレクションです。
Apple Vision Proが生み出す無限のキャンバスは、空間コンピューティング体験をゼロから再考できる自由を生み出し、探索し、試行し、遊ぶためのまったく新しい可能性をもたらします。ユーザーは、周囲とのつながりを保ちながらアプリを操作することも、作り出された世界に完全に浸ることもできます。何よりも、SwiftUI、UIKit、RealityKit、ARKitなどの使い慣れたフレームワークを使って、visionOS向けのアプリを開発できます。これまでにAppleプラットフォーム向けの開発経験がなくても問題ありません。
学習内容
- Apple Vision Pro向けのvisionOSアプリを計画して作成する方法
- Appleのデザインツールとリソースをダウンロードできる場所
- ヒューマンインターフェイスガイドラインを活用する方法
用意するもの
- Xcodeでアプリをビルド、テスト、配信する
Apple向けの開発がはじめての場合
Appleデベロッパとして今すぐ始める
visionOSについてご不明な点がある場合
Apple Developer Forumsを見る
空間コンピューティングの構成要素を学ぶ
ウインドウ、ボリューム、スペースなど、空間コンピューティングを構成する基本要素についてご確認ください。次に、これらの要素を使って魅力的でイマーシブな体験を作成する上で、使い慣れたフレームワークがどのように役立つかをご覧ください。
さらに詳しく
空間コンピューティング向けのアプリ構築のための準備
はじめてのイマーシブなアプリの開発
アクセシブルな空間体験の実現
SwiftUIにおける空間コンピューティングの概要
UIKitにおける空間コンピューティングの概要
visionOS向けにデザインする
空間コンピューティング向けの素晴らしいアプリ、ゲーム、体験をデザインする方法を学びましょう。このシリーズでは、まったく新しい入力とコンポーネントについて理解し、奥行きとスケールの世界に飛び込むことができます。イマーシブな瞬間を構築し、空間オーディオのサウンドスケープを作成します。共同作業やつながりを生み出す機会を探し、ユーザーが新しい世界を探索している間も、現実の周囲環境との関係性を維持できるようにサポートしましょう。空間体験を初めてデザインするデベロッパも、フルイマーシブなアプリを長年開発してきたデベロッパも、ヒーローになれる魔法の瞬間や、魅力的なサウンドスケープ、人間中心のUIなどすべてをvisionOSで創造する方法を学ぶことができます。
空間デザインの原則
空間ユーザーインターフェイスのためのデザイン
空間入力のためのデザイン
空間的なSharePlay体験の設計
イマーシブなサウンドデザインの詳細
視覚と動きのデザインに関する考慮事項
visionOS向けに制作する
visionOS向けアプリの制作では、アプリ内でウインドウ、ボリューム、スペースをいつでも組み合わせたり調整したりして、コンテンツに最適な体験を作り出すことができます。
既存のiPadOSアプリやiOSアプリを互換性のあるアプリとしてvisionOSで実行することもできます。アプリは、拡大縮小可能な単一のウインドウとしてユーザーの周囲に表示されます。
適切なツールを入手する
ソフトウェア開発プロセスの出発点は、Appleの統合開発環境であるXcodeをダウンロードすることです。Xcodeには、プロジェクト管理、コードエディタ、UI用のビジュアルエディタ、デバッグツール、各種デバイスのシミュレータ、パフォーマンス評価ツールなど、ソフトウェア開発に必要なすべてのツールが用意されています。またXcodeには、「フレームワーク」と呼ばれる、ソフトウェア開発用のシステムコードモジュールが含まれています。
Xcodeで新規プロジェクトを作成するには、「File(ファイル)」>「New(新規)」>「Project(プロジェクト)」を選択して、表示される指示に従い、visionOS向けアプリの開発を開始します。すべての新規プロジェクトではSwiftUIが使用されます。SwiftUIは、アプリの主要な機能を作成する最新の宣言型プログラミングモデルを提供します。
SwiftUIは、Appleのデータ管理テクノロジーとシームレスに連携し、コンテンツの制作をサポートします。Swift標準ライブラリおよびFoundationフレームワークには、Array型やDictionary型などの構造型や、文字列、数字、日付、その他の一般的なデータ値に使用する値型が用意されています。ユーザー定義のカスタム型については、SwiftのCodableサポートを採用してそれらの型をディスク上で永続化します。アプリでより大規模な構造化データを管理する場合は、SwiftData、Core Data、CloudKitで提供されているオブジェクト指向モデルを使用してデータの管理と永続化を行えます。
また、堅牢で使い慣れた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のプレビューに複数のカメラ位置を指定することで、さまざまな角度からコンテンツを見ることができます。
操作が簡単なインタラクションを作成する
visionOSでは、ユーザーは主に目と手を使ってアプリを操作します。間接ジェスチャでは、オブジェクトを見たあと、親指をほかの指でタップすると、そのオブジェクトを選択できます。直接ジェスチャでは、3D空間で自分の指を使ってオブジェクトを操作します。アプリで入力を処理する時は、次のことを行ってください。
- 標準のシステムジェスチャを採用する:タップ、スワイプ、ドラッグ、長押し、ダブルタップ、ズーム、回転などのジェスチャで、アプリの大部分の操作を行えるようにします。SwiftUIやUIKitには、これらのジェスチャを各プラットフォームで処理するためのサポートが内蔵されています。
- 外部ゲームコントローラのサポートを追加する:ゲームコントローラは、代替となる入力方法をアプリに提供します。接続されたワイヤレスキーボード、トラックパッド、アクセシビリティハードウェアからの入力は、システムによって自動的にアプリのイベントハンドラコードに送られます。ゲームコントローラの場合、Game Controllerフレームワークで明示的にサポートを追加する必要があります。
- ARKitでカスタムジェスチャを作成する:システムはARKitを使用して、ユーザーの周囲環境との相互作用をスムーズに行っています。アプリをフルスペースに移行させる場合、ユーザーの手と指の位置を取得する許可をリクエストし、その情報を使用してカスタムジェスチャを作成できます。
ARKitには、フルスペースでコンテンツ関連の操作をサポートするための追加サービスが用意されています。ユーザーの周囲にある表面を検出したり、既知の画像を検出したりして、それらにアンカーを取り付けることができます。周囲の環境のメッシュを取得し、それをRealityKitのシーンに追加することで、アプリのコンテンツと実世界のオブジェクトとの相互作用を可能にします。周囲の環境に対するApple Vision Proの位置と向きを決定し、ワールドアンカーを追加してコンテンツを配置できます。
次レベルのオーディオやビデオを作成する
Apple Vision Proはステレオスコピック(立体視)ビデオに対応しており、映画などのエンターテインメントが画面の枠を越えて、ユーザーの周囲環境に飛び出すかのように投影されます。visionOSがデフォルトで備えている空間オーディオ体験についても、活用方法を検討しましょう。
- ビデオアセットを3D用にアップデートする:イマーシブな3D環境で3D映画を再生することで、映画鑑賞を新たなレベルに引き上げることができます。QuickTimeファイル形式では、画面から飛び出すように見えるコンテンツを含めることができます。AVKitやAVFoundationを使用して、映画を再生できます。ステレオスコピックコンテンツ向けの要素を映画ファイルに含めることができます。
- 空間オーディオのサポートを組み込む:AVFoundationフレームワークのオーディオ固有の型を含むAVFAudioを使用して、アプリの音楽プレイヤーを開発できます。ゲームやアプリで複雑かつダイナミックな空間オーディオ体験の構築を可能にするPHASEを使用して、オーディオを別次元に進化させましょう。
- ライブコンテンツや収録済みコンテンツをストリーミング配信する:HTTP Live Streamingを使用し、ストリーミング配信コンテンツを作成してサーバにデプロイしましょう。ストリーミング配信されたコンテンツをアプリで再生する場合は、AVFoundationを使用します。
インクルージョンを考慮する
誰もがコンテンツに確実にアクセスできるよう、インクルーシブなアプリを開発しましょう。Appleのテクノロジーは、さまざまな方法でインクルージョンをサポートしています。アプリ全体で以下の事項をサポートしましょう。HIGですべてのプラットフォームにわたってインクルージョンを確保する方法をご確認ください。
- アクセシビリティラベルとナビゲーションを更新する:Appleのテクノロジーにはアクセシビリティのサポートが直接組み込まれていますが、画面読み上げ機能やその他の機能でアクセシビリティに配慮した体験を作成するには、デベロッパが提供する情報が必要になります。アクセシビリティラベルやその他の説明が有益な情報を提供していること、およびフォーカスベースのナビゲーションがシンプルで直感的になっていることを確認してください。詳しくは、「アクセシビリティ」を参照してください。
- 別の方法で機能にアクセスできるようにする:メニューコマンドやゲームコントローラなど、別の方法でもユーザーがコンテンツを選択したり操作したりできるようにします。ユーザーが支援技術を使用して、RealityKitのエンティティを切り替えたり選択したりできるように、RealityKitのエンティティにアクセシビリティコンポーネントを追加します。
- VoiceOverのアナウンスを追加する:visionOSでVoiceOverが有効になっていると、ユーザーは手のジェスチャでアプリ間を移動できます。Direct Gestureモードを有効にしてアプリを操作する場合は、ユーザーがコンテンツの操作を把握できるようにアナウンスを利用することができます。
- オーディオコンテンツにキャプションを含める:キャプションは、一部のユーザーにとって必須ですが、特定の状況ではすべてのユーザーにとって実用的になります。たとえば、騒音がある環境でビデオを視聴する場合に便利です。テキストやダイアログだけでなく、音楽やアプリのサウンドエフェクトにもキャプションを含めます。カスタムビデオエンジンに表示するキャプションにも、システムの外観を採用するようにしてください。
- 視覚とモーションの影響について検討する:モーションエフェクトは、動きにそれほど敏感ではないユーザーにも不快感を与える場合があります。速い動き、弾んだり波打つような動き、拡大アニメーション、多軸の動き、スピン、回転などを組み込んだエフェクトの使用を制限してください。システムのアクセシビリティ設定で動きを減らすことが推奨されている場合は、適切な代替策を提供します。詳しくは、「ヒューマンインターフェイスガイドライン」の「モーション」を参照してください。
visionOSでアクセシビリティに配慮したアプリを開発する方法について詳しくは、「visionOSアプリのアクセシビリティサポートの向上」を参照してください。
テストして調整する
開発中にアプリをテストし、Apple Vision Proで正常に動作することを確認する方法がいくつかあります。
- アプリを徹底的にテストおよびデバッグする:開発中に問題が発生した際は、組み込まれているXcodeデバッガを使用してデバッグを行います。XCTestを使用して自動テストスイートを作成し、ビルドするたびに毎回テストを実行して、新しいコードが想定通りに機能することを確認します。さまざまなシステム負荷をかけた状態でこれらのテストを行い、アプリの動作を調べます。
- ワークロードに注意する:アプリが実行する処理によって、具体的なメリットが得られるようにします。アルゴリズムを最適化して、アプリによるCPUリソースとGPUリソースの消費を最小限に抑えます。Xcodeに付属するInstrumentsアプリを使用して、コードのボトルネックやパフォーマンスに関するその他の問題を特定します。詳しくは、「visionOSアプリのパフォーマンスプランの作成」をご参照ください。
- 継続的インテグレーション(CI)ワークフローを採用する:CIのアプローチを採用し、コミットごとにコードベースの品質と安定性が維持されるようにします。テストスイートの一環として、パフォーマンス関連のテストも実行します。Xcode Cloudの継続的インテグレーションシステムを使用して、ビルド、テストサイクル、QAチームへのApp配布を自動化します。
SwiftUIとRealityKitの詳細
SwiftUIとRealityKitの詳細については、SwiftUIのシーンタイプに焦点を当てたセッションシリーズをご覧ください。ウインドウ、ボリューム、スペースのすべてにおいて優れた体験を構築するのに役立ちます。Model 3D APIについて確認し、アプリに奥行きや次元を追加する方法や、RealityViewを使って3Dコンテンツをレンダリングする方法を学びましょう。このシリーズでは、visionOS向けに素晴らしいイマーシブ体験を作り出すうえで役立つ、新しいSwiftUIシーンタイプ「ImmersiveSpace」の導入についても確認できます。シーンタイプを管理し、イマーシブ感を高め、新たな次元の空間体験を構築するためのベストプラクティスをご確認ください。
関連ドキュメント
以下では、RealityKitを使用して、イマーシブで魅力的なコンテンツをアプリで提供する方法を確認できます。RealityKitのエンティティ、コンポーネント、システムから始めて、3Dモデルやエフェクトをプロジェクトに追加する方法を確認できます。また、コンテンツをエンティティ階層に埋め込む方法や、アンカーを使用して仮想コンテンツと現実世界を融合させる方法、パーティクルエフェクトをアプリに取り入れる方法、ビデオコンテンツを追加する方法、ポータルを使用してよりイマーシブな体験を作り出す方法などを紹介します。
関連ドキュメント
ARKitの再発見
visionOSはARKitアルゴリズムを使用して、永続性、ワールドマッピング、セグメンテーション、マッティング、環境照明などの機能を処理します。これらのアルゴリズムは常時実行されているため、共有スペースに配置されているアプリやゲームはARKitの恩恵を自動的に受けられます。アプリによって専用のフルスペースが開かれると、そのアプリはARKit APIを活用して仮想コンテンツと現実世界を融合させることができます。
このシリーズでは、プライバシーを保護しながらインタラクティブな体験を構築できるように、このフレームワークがどのように全体的に再考されたかについて説明します。仮想のボールに床の上を跳ねさせたり、仮想の絵の具を壁に投げつけたりなど、ユーザーのいる実際の場所と相互作用する3Dコンテンツを作成する方法を発見しましょう。ARKit APIの最新のアップデートを確認し、アプリでハンドトラッキングやシーンジオメトリを活用する方法について、デモを見ながら順を追って確認することができます。
関連ドキュメント
visionOS向けのデベロッパツールについて知る
Appleは、visionOS向けの優れたアプリ、ゲーム、体験を構築するのに役立つ包括的なツールスイートを提供しています。ここまでXcodeについて見てきました。ここでは、3D開発ワークフローでReality Composer Proを活用する方法や、Unityのオーサリングツールで空間コンピューティング向けの素晴らしい体験を作り出す方法について確認しましょう。
Reality Composer Proについて
visionOSアプリ向けの3Dコンテンツをプレビューして準備するための新しい方法を学びましょう。Reality Composer Proでは、USDの威力を引き出し、3Dモデル、マテリアル、サウンドなどのアセットの作成、編集、プレビューに役立てることができます。このシリーズでは、このツールを活用してアプリ向けのイマーシブコンテンツを作成する方法や、マテリアルをオブジェクトに追加する方法、XcodeでReality Composer Proコンテンツに命を吹き込む方法を紹介します。また、AppleプラットフォームでのUniversal Scene Description(USD)の最新アップデートについても紹介します。
Reality Composer Proについて
Reality Composer Proにおけるマテリアルの詳細
Reality Composer ProコンテンツのXcodeでの使用
USDエコシステムの詳細
Unityの概要
visionOSの空間体験を、Unityで直接ビルドする方法を学びましょう。Unityデベロッパが既存の3Dシーンとアセットで、どのようにvisionOS向けのアプリやゲームを開発できるのか確認しましょう。UnityとAppleのフレームワークは緊密に統合されているため、RealityKitを利用すれば、ウインドウ、ボリューム、共有スペース向けのいずれの3Dコンテンツでも空間体験を構築できます。加えて、ネイティブ入力へのアクセスや、パススルーなど、Appleプラットフォームならではのメリットも活用することができます。また、Unityでフルイマーシブ体験を作り出す方法についても紹介します。
TestFlightとApp Store Connectについて確認する
App Store Connectでは、visionOSアプリを管理およびテストし、App Storeで配信するために必要なツールが提供されています。このシリーズでは、初めて空間コンピューティングアプリを配信する場合や、既存アプリをvisionOSに対応させる場合、また互換性を管理する場合の基本事項とベストプラクティスを紹介します。また、TestFlight for visionOSを使用して、アプリをテストし、イテレーションを行いながら、貴重なフィードバックを収集する方法についても紹介します。
visionOS向けの制作についてさらに理解を深める
共同作業、共有、仕事効率化に役立つ体験を構築する
アプリやゲームでユーザー同士が同じ空間にいるかのような体験を提供するvisionOSにおいて、共有と共同作業は主要な機能となります。Macの場合と同じように、FaceTime通話では、デフォルトでどのアプリウインドウでもほかの人と共有することができます。さらにGroupActivitiesフレームワークを採用すれば、次世代の共同作業体験を作り出すことができます。
アプリに組み込むことができる共有アクティビティの種類について学び、Apple Vision ProでのSharePlay向けにアプリをデザインして開発しましょう。共同作業体験の中でユーザー同士が状況を共有できるようにする方法や、空間Personaのサポートを通じてアプリでさらに有意義なやり取りを提供する方法を確認できます。
ゲームとメディア体験を構築する
visionOSを使って、ゲームやメディアで真にイマーシブな体験を作り出す方法を発見しましょう。ゲームやメディアでは、すべてのイマーシブ体験のレベルで魅力的なストーリーを伝えたり、ユーザー同士を新しい方法でつなげたりすることができます。このシリーズでは、visionOS向けのゲームやストーリーの創作を開始する際に利用できるいくつかの方法を紹介します。RealityKitで3Dコンテンツを効果的にレンダリングする方法を学び、視覚とモーションに関するデザイン上の考慮事項を確認しましょう。また、MetalやUnityを使用してユーザーを新しい世界に引き込むフルイマーシブ体験を作り出す方法を学びましょう。
ボタンを押す操作にエフェクトを追加したり、完全にイマーシブなサウンドスケープを作成したりなど、サウンドによってvisionOSのアプリやゲームの体験を劇的に向上させることができます。ウインドウ、ボリューム、スペースに質感のあるイマーシブ体験を作り出すため、Appleのデザイナーがどのようにサウンドを選び、サウンドスケープを作成しているかを確認しましょう。このシリーズでは、空間にオーディオキューを配置し、繰り返されるサウンドに変化を持たせ、音で楽しめる瞬間をアプリに組み込むことにより、アプリの基本的な操作をサウンドで強化する方法を紹介します。
アプリやゲームでメディアコンテンツを提供している場合、ビデオパイプラインをアップデートし、visionOS向けの優れた再生体験の構築に役立つセッションシリーズを用意しています。このシリーズでは、3Dコンテンツに対応できるようにデリバリーパイプラインを拡張する方法を確認し、アプリで空間メディアストリーミングを行うためのヒントやテクニックを学ぶことができます。また、ビデオ再生をvisionOS向けに強化するフレームワークとAPIを使用して、イマーシブで魅力的な再生体験を作り出す方法も紹介します。
関連ドキュメント
iPadアプリやiPhoneアプリをvisionOSで実行する
既存のiPadOSアプリやiOSアプリをvisionOSで実行する方法をご覧ください。iPadOSアプリやiOSアプリがこのプラットフォームでどのように動作するかを学び、フレームワークの依存関係や、iPad向けアプリの相互関係について確認することができます。既存アプリを新たなレベルに引き上げる準備ができたら、iPadアプリやiPhoneアプリの体験を共有スペース向けに最適化し、映像処理を向上させる方法についてもご確認ください。
関連ドキュメント
もっと先へ
アプリをビルドし、実行できることを確認したら、その体験を向上させる方法を検討しましょう。
Web体験を構築する
visionOS向けWebがどのようなものかを理解し、ユーザーが新しい方法でWebコンテンツを体験できるようにする方法を確認しましょう。また、このプラットフォームの入力モデルについて確認し、Webサイトを空間コンピューティング向けに最適化する方法も学ぶことができます。このシリーズでは、新しい標準がどのようにWeb向けの3D体験の構築に役立つのかを説明します。また、Safari Extensionの最新アップデートについて掘り下げ、Safariのデベロッパ向け機能でApple Vision Pro体験のプロトタイプとテストに活用する方法を紹介します。
Quick LookをWebまたはアプリで使用するかどうかに関わらず、3Dコンテンツや、空間画像、空間ビデオなどに対して、強力なプレビューを追加する方法を学ぶことができます。下記のビデオでは、システムでこのような体験を提供するためのさまざまな方法を紹介し、コンテンツをドラッグ&ドロップして共有スペースに新しいウインドウを作成する方法や、アプリ内からQuick Lookに直接アクセスする方法を紹介します。また、visionOSでQuick Look向けの3Dコンテンツを作成する際のベストプラクティスについても説明します。これには、3Dのクオリティとパフォーマンスに関する重要な考慮事項も含まれます。