はじめての Mixed Reality アプリ開発 環境構築の巻

皆さんこんにちは。マイクロソフトでDevRelを担当している鈴木です。今年最も注力しているといっても過言ではない「[Mixed Reality Dev Days Japan](https://microsoft-events.connpass.com/event/187143/)」のイベント開催を目前に何かやろうと思い立ち、ふと目の前にGPUを搭載したWindowsマシンが転がっていて、[先ほどHoloLens 2も届いた](https://twitter.com/szkn27/status/1332173466292764674)ので、前提知識ゼロの私がイベント開催までにMixed Realityをアプリをどこまで作れるのか試してみるコーナーを勝手に作りました！ 目指せMRの民主化！

ちなみに大学ではComputer Scienceを専攻してC++（C#じゃなくてC++とかアセンブラ）を書きながら、ゼミではVRの研究もしていたはずなんですが、卒業以来ほとんどコード書いてないし、開発という開発に携わってません、そんな初学者にもバッチリなMicrosoft Learnという学習コンテンツもあると聞いたのでなんとかなるはず！

~~はい、番宣はここまで。~~

それではここからガチでやっていきます。そもそもWindowsマシンを触るのもかなり久しぶりなので、スクリーンショットのショートカットから調べてます。汗

## Windows Mixed Reality 開発環境のセットアップ

何はともあれまずは公式ドキュメントを見ていきます。あまり知られてないんですがマイクロソフトは公式のドキュメントが充実してます。ただドキュメントは膨大な量でそれなりに更新されているので翻訳はだいたい機械翻訳です。もし日本語が読みづらいと感じたら英語のドキュメントも確認してみてください。

[Mixed Reality に関するドキュメント](https://docs.microsoft.com/ja-jp/windows/mixed-reality/)
![スクリーンショット 2020-11-25 150128.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33718/eff3e64d-0716-d5db-0d05-220c266f1082.png)

概念・概要もとてもとても重要ですが真っ先にアプリ開発を試したい私は迷わず開発者向けと書かれたページに進んでいきます。

[Mixed Reality 開発の概要](https://docs.microsoft.com/ja-jp/windows/mixed-reality/develop/development?tabs=unity)

ふむふむ、どうやらMR開発には3つの開発オプションが存在するようです。

- Unity 
- Unreal 
- Native (OpenXR)

とりあえず最後のNativeは明らかに玄人っぽいにおいがしたので、UnityかUnrealを選んでいくことにします。ここでは[Microsoft Learnのモジュール](https://docs.microsoft.com/ja-jp/learn/modules/mixed-reality-toolkit-project-unity/)にも登場しているUnityでセットアップします。

![スクリーンショット 2020-11-25 151222.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33718/2f4a49a1-1ba3-9869-8099-1408e9cdf22d.png)

MR開発といってもいきなりホログラムを使った開発ができるわけではありません。なのでMixed Realityツールキット (MRTK) としてあらかじめ用意されているものを使います。いわゆるSDK (Software Development Kit) ですね。

ここからはこのLearnのモジュールをベースにして残りの作業を進めていきたいと思います。まず必要なのがこれら[ツールのインストール](https://docs.microsoft.com/ja-jp/windows/mixed-reality/develop/install-the-tools?tabs=unity)です。

- Windows 10 PC
    - Windows 10
    - Visual Studio 2019
    - Windows 10 SDK
    - HoloLens 2 エミュレーター

- Unity
    - Unity 2019.2.X がインストールされている Unity Hub
    - Unity のインターフェイス、シーンの作成、パッケージのインポート、シーンへの GameObjects の追加に関する基本的な知識
    - MixedRealityToolkit-Unity

Windows 10のマシンはすでに最新バージョンになっていたので、さっそくVisual Studio 2019のインストールをはじめます。執筆時点での最新バージョンは16.8.2でした。
![スクリーンショット 2020-11-25 151731.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33718/e478ce44-a4b5-7193-49e9-974a5ded9837.png)

Visual Studioのインストールウィザードを進めていきます。ここでワークロード・目的別に必要なコンポーネントを一括でインストールできます、MRアプリ開発には、デスクトップとモバイルにある

- C++ によるデスクトップ開発
- ユニバーサル Windows プラットフォーム (UWP) の開発

が必要です、オプションとして

- Unity によるゲーム開発

にもチェックしておくと、のちのち必要になるUnity Hubが一緒にインストールできて便利です。なお、全体で17GBとかになるのでストレージ容量と時間に余裕をもってお試しください。いちど再起動を求められました。

![スクリーンショット 2020-11-25 163836.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33718/40bdbc93-0d0c-bbac-54cd-f64eb5fa613c.png)

続いてWindows 10 SDKですが、先ほどのC++ によるデスクトップ開発を選択していればコンポーネントに含まれているはずです。MRアプリはWindowsアプリの一種ということなんですね、他に単独のインストーラーも用意されています。

まだまだあります、今度はエミュレーター、実際のHoloLensで動かす前にWindowsマシン上のエミュレーターでアプリを起動できます。エミュレーターに必要なのは10.4GB、そろそろ専用の開発マシンが欲しくなりますね。。ここでも再起動を求められました。

![スクリーンショット 2020-11-25 154728.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33718/619c327e-0c29-aac9-87e1-42a551f6558f.png)

## Unity 2019のセットアップ

さて、ここからはUnity側の設定に移りましょう。Visual Studioの設定時にUnity Hubと呼ばれるツールをインストールしているのでそれを起動します。初回ではライセンスがないと表示されるので、まだ取得していない場合は登録しておきましょう。

Unity IDを発行して、ライセンスを取得します。

![スクリーンショット 2020-11-25 155320.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33718/f521069b-3e4c-79c6-a89c-720ff08cbb09.png)

![スクリーンショット 2020-11-25 155551.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33718/2df5482a-a062-2cf0-0920-e167cc3c6764.png)

ライセンスが反映された状態でUnity Hubにログインし、最新のUnityをインストールしておきましょう。ここでは推奨リリースとなっている 2019.4.15f1 (LTS) で進めていくことにします。ちなみにDev toolsとしてすでにインストール済みのVisual Studioを指定しておくと、Visual StudioからUnityの機能を呼び出せるようになります。

![スクリーンショット 2020-11-25 160323.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33718/57ea761f-fba2-b891-27e7-5b87e25679dc.png)

![スクリーンショット 2020-11-25 160502.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33718/e3b97b4b-d817-3a67-f7c8-7fd766f8631b.png)

# まとめ

環境構築って本当にいろんなものを用意する必要があって、必ずしもワンパッケージになっているわけではありません。そのため自分がいま何をしているのか、何のためにこのツールをインストールしているのかよくわからなくなることが多々あります。ここで各ツールが何をしているのか簡単におさらいしておきましょう。

- Visual Studio：IDEと呼ばれる統合開発環境、MR開発以外にも様々なシーンで使われている万能ツール
- Windows 10 SDK：HoloLensなど実際のデバイス上で動かす際のUWP (Universal Windows Platform) 開発に必要
- Unity：今回のMRアプリ開発でメインで用います、VR/AR開発でもよく用いられる3D開発のゲームエンジン
- MRTK (Mixed Reality Toolkit -Unity, -Unreal) オープンソースで開発が進められているMixed Reality開発用のツールキット

次回はUnityのセットアップを進めていきます！