NTTドコモR&Dの技術ブログです。

UnityでApple Vision Pro / visionOS アプリを開発する!

※ 本記事は 2026/3/31 以前にNTTコノキューにて記載した記事になります

はじめに

こんにちは、NTTコノキュー 浅井です。

みなさんVision Pro開発してますか? ついに日本でも発売開始が発表され、いよいよ本格的に盛り上がってくるかと思います。 NTTコノキューでは、昨年のWWWDCから細々と取り組みを進めています。
記事も書きました

Apple Vision Pro / visionOS 向けのアプリは、記事執筆時点(2024/06/10)では

  • Xcodeでのネイティブ開発
  • Unityでの開発
  • Unreal Engineでの開発

の3つがありますが、今回はUnityでの開発方法についてまとめます!

Unityでの開発方法 - PolySpatial

Unityでは、visionOS向けのアプリ開発環境を「Unity PolySpatial」として提供しています。
https://docs.unity3d.com/Packages/com.unity.polyspatial.visionos@1.1/manual/index.html

Unity PolySpatial

PolySpatialの利用条件・要件

記事執筆時点(2024/06/10)ではUnity Pro, Unity Enterprise, またはUnity Industryのユーザーのみに提供されています。つまり無料ユーザーは利用できません。

要件としては以下です。

  1. Unityユーザー(Unity Pro, Unity Enterprise, またはUnity Industry)
  2. Unity 2022.3 LTS
  3. Xcode15, VisionOS SDK&シミュレーター
  4. macOS 14.0以降のMacBook(上記を実行出来るスペック)
MacBookの「実行出来るスペック」って結局どれが良いの?

シミュレータが動作すれば良いなら、そこまで高いものである必要はないかもしれません。 が、色々考えるとM1以上が良いのでは、と思います。

Apple公式ドキュメント上では特にM1以上などの記載はなく、 Vision ProとMacの接続要件はMac OS 14 Sonoma以上となっているくらいかと思います。

ただ、Unreal EngineではM1以上と明記されています。 そのため、「とりあえずM1以上」にするのが安全だと思います。

PolySpatialでの開発をやってみる

というわけで、準備が整いました。ではいきましょう! 手順は以下です。

なお、今回は構築が簡単なTemplateを利用します。

  1. PolySpatial Immersive Templateをダウンロード
  2. Xcode 15をインストール
  3. XcodeのvisionOS SDK / Simulatorをダウンロード
  4. Play to Deviceをセットアップ
  5. シミュレータの実行
  6. Unityアプリのビルド&Xcodeでの実行

1. PolySpatial Immersive Templateをダウンロード

Unity公式より.zipファイルをダウンロードします。 zipファイルを解凍し、Unity Hubから開きます。
https://docs.unity3d.com/Packages/com.unity.polyspatial.visionos@1.1/manual/TutorialCreateFromTemplate.html

ここで、基本的にはPolySpatialの最新バージョンを利用します。 今回は、1.1.6を使用します。

バージョン選択

Templateなので、基本的にUnityプロジェクトとして成立されているため、このままSample Sceneを確認出来ます。 各種Sample SceneはAssets/Samples/PolySpatial/Scenes/配下に配置されています。

Unity画面

この時点では、Unity上でシミュレータを実行しても、トグルなどをクリックできるくらいで、Vision Pro上での表示はシミュレートできません。

Unity上でシミュレータを実行

それでは次に進みます。

2. Xcode 15をインストール

Apple公式より.xipファイルをダウンロードします。 .xipファイルをFinderでダブルクリックすると、インストールが開始されます。
https://developer.apple.com/download/all/

こちらも基本的には最新バージョンの利用で良いです。visionOSの場合アップデートによる変更も大きいため、適宜内容を確認しながら判断するのが良いと思います。 今回はXcode 15.3を使用します。

Xcode選択

なお、XcodeはApp Storeからもダウンロードが可能ですが、バージョン指定やβ版の利用などもあるため、上記の公式からダウンロードする方が良いです。
https://developer.apple.com/jp/xcode/resources/

公式サイト経由のDL

また複数のXcodeを管理するXcodesというツールもあるので、お好みで。
https://github.com/XcodesOrg/XcodesApp

3. XcodeのvisionOS SDK / Simulatorをダウンロード

1.visionOS SDK Xcode>File>New>File...よりvisionOSを選択すると、SDKが未インストールの場合Getと表示されるので、インストールできます。

SDKインストール

※画像はiOSの場合ですが、visionOSでも同様です。

2.visionOS Simulator Apple公式より.dmgファイルをダウンロードします。 こちらもFinderでダブルクリックでOKです。
https://developer.apple.com/download/all/

Simulator

4. Play to Deviceをセットアップ

Play to Deviceとは

Unityではエディター上でシミュレーションを実行出来ますが、Vision Pro向けは非対応です。そのため、Xcode側で提供されるシミュレータと連携することで実現しています。 つまり、Unityで実行ボタンを押すと、XcodeのvisionOSシミュレータ側でUnityアプリが起動し、デバッグが捗るというものです。

これが出来ないと、毎回Unityでビルド→Xcodeプロジェクトを実行→シミュレータで動作確認となり、かなり手間なので、セットアップ必須だと言えます。
https://docs.unity3d.com/Packages/com.unity.polyspatial.visionos@1.1/manual/PlayToDevice.html

なお、Vision Pro実機があれば、実機と接続することも可能なようです。

セットアップ方法

今回は、visionOS Simulatorでのセットアップを行います。

1.まず、PlayToDeviceHost.app.zipをダウンロードします。  zipを解凍し、PlayToDeviceHost.appがFinder上にあることを確認します。
https://docs.unity3d.com/Packages/com.unity.polyspatial.visionos@1.1/manual/PlayToDevice.html#first-time-setup---visionos-simulator

2.Xcode > Open Developer Tool > Simulatorより、visionOSシミュレータを実行します。

visionOSシミュレータ実行

シミュレータの実行は結構時間がかかるので、待っても起動しない場合は、一度強制終了して、再起動すると良いです。(私の環境では結構なります)

3.PlayToDeviceHost.appをvisionOSシミュレータにドラッグ&ドロップして、配置します。

シミュレータ実行画面

シミュレータ上に配置されていることを確認して完了です。

シミュレーションアプリの表示

5. シミュレータの実行

1.visionOSシミュレータ上で、PlayToDeviceHost.appを実行します。  画面上でにIPアドレスとDeviceNameを確認します。

PlayToDeviceHost.app

  1. UnityエディターでWindow>PolySpatial>Play to Deviceをクリックします。  Play to Device画面が表示されます。

Play to Device画面

3.Unityエディター上のPlay to Device画面で、Advanced Settings>Direct Connection配下のName, Host IPへ、5-1で確認した情報を入力します。  次に、Add Deviceをクリック→Available ConnectionsのConnectの該当デバイスにチェック→Connect on PlayをEnabledに変更します。

Unityエディター上のPlay to Device画面

4.Unityエディターで実行ボタンをクリックします。Unityエディターで表示されるアプリがvisionOSシミュレータ上にも表示されます。アプリの操作は基本visionOSシミュレータ側で行うことが可能となり、挙動はUnity側と連動します。

Unityエディター

補足:なお、Xcode側でも未提供のため、ARKitを利用するアプリはシミュレータでは動作しません。Unity TemplateではMixedReality, Image Trackign, Meshingが該当します。ということで、これらを試すにはVision Pro実機が必要です。

以下の通り、ダイアログ以外何も表示されません。

ARKitを利用するアプリのシミュレータ挙動

6. Unityアプリのビルド&Xcodeでの実行

最後に、Xcodeでの実行まで進めます。

1.Unityでのビルド 今回はTempleteのSample Sceneをそのままビルドします。 Assets/Samples/PolySpatial/Scenes/配下のSceneを全て含めることで、ProjectLauncherから各種アプリを選択可能なTempleteのアプリをそのまま再現できます。 File>Build SettingsからBuild Settings画面を開き、Scene In Buildの枠にSceneファイルをドラッグ&ドロップします。

Build Settings画面

加えると右側に番号が振られるので、0番は必ずProjectLauncherとしてください。順番はドラッグ&ドロップで変更できるので、追加してから順序を入れ替えればOKです。

Scene設定

あとはBuildをクリックしてビルドを実施します。プロジェクト名は適当で。

2.Xcodeで実行ファイルを起動 Unityでビルドして生成されたファイルの中から、.xcodeprojファイルをダブルクリックします。 Xcodeでファイルが実行され"Build Succeeded"を表示されていればシミュレータ上で実行ができます。 ※Meshingなどがあるからか、Xcodeでのシミュレータでの実行はできないようです。

最後に

UnityでのApple Vision Pro / visionOS アプリの開発方法は以上です。 XRデバイスはPC/スマホと異なり2次元的な画面操作では無いため、実機でのデバッグが良いです。ですがXRデバイスは高額なので試す分には実機不要だとありがたいですし、何よりわざわざ被って行うのが手間です。 ということで、XRデバイスの開発はシミュレータ環境が必須です。

他のXRデバイスでも実機無しでシミュレートするやり方が存在し多種多様ですが、ネイティブアプリ開発環境が提供されるvisionOSの場合、Xcode側のシミュレータと連動するのは良いやり方だなと思いました。

とはいえその分開発環境は2つ分必要になるので、中々の手間です。(そういう背景を踏まえてTemplateが用意されているとは思いつつ) 今後はより手軽になっていくんでしょうか。引き続き情報収集・開発など色々進めていきたいと思います。