Hololens2のエミュレータ開発環境構築

# 結論
Hololens2用のエミュレータは、プロセッサ：i5-7300HQ、RAM: 8Gだと動くけど使い物にならない。

# 環境

* Windows 10 Pro
* プロセッサ: i5-7300HQ
* RAM: 8GB
* システムの種類: 64ビット
* HP PAVILION

# 開発環境構築 
MicrosoftのDocsに沿って進めてみる。

## Hololensの開発に必要なテクノロジーパスの選択

https://docs.microsoft.com/ja-jp/
Docsのドキュメントディレクトリには、MixedRealityに関する項目はなさそうである。
![holo_env_01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245808/2b5f1fc4-b885-d368-cc7b-7f7090f564b9.jpeg)

「Windows」を選択すると、MixedRealityに関する項目がある。
![holo_env_02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245808/201596ab-8ed8-334a-0017-3427ff99f46a.jpeg)

「Mixed Reality の概要」を確認し、「開発を始める」を選択する。
![holo_env_03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245808/d545002a-243b-3a6e-6c3d-97a9d3fd6e27.jpeg)

Hololensを開発するテクノロジーパスとして、2020/5/23現在、４つの方法がある。

![holo_env_04.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245808/804fa72c-7e01-401b-add9-494638686624.jpeg)

* Unity
* Unreal
* JavaScript
* Native

上2つはゲームエンジンで、「JavaScript」はブラウザ上で動作するMRアプリを作成する際に使用すると理解。
また、Windows Mixed Reality APIsを直接修正したい場合は「Native」を選択して開発すると理解。
やったことがあるという理由で、Unity開発を採用。
https://docs.microsoft.com/ja-jp/windows/mixed-reality/unity-development-overview

## 各種ツールのインストール
Docsに記載されている通り、各種ツールをインストールする
https://docs.microsoft.com/ja-jp/windows/mixed-reality/install-the-tools

* Windows 10
    * 開発者モードに変更。開発者モードに変更しないと制限される内容はわかっていない。
* Windows 10 SDK（10.0.18362.0　2020/5/23時点）
    * SDKのバージョンは、レジストリ エディターから確認できる、バージョンが古かったためインストールする。

「Unity」と「Visual Studio」については次のように記載されていた。

> Unity に関する注意事項: 特定の目的のために意図的により新しいバージョンの (LTS 以外の) Unity をインストールしようとしているのでなければ、Visual Studio のインストールの一部として Unity ワークロードをインストールするのではなく、下記のように Unity 2018.4 LTS ストリームをインストールすることをお勧めします。

> Visual Studio 2019 16.2以降

念のため「MRTK」が推奨している「Unity」と「Visual Studio」のバージョンを確認したところ、同様だったためインストールする。
https://github.com/Microsoft/MixedRealityToolkit-Unity

* Visual Studio 2019 16.5
    * Docsの通り、ワークロードの「C++によるデスクトップ開発」「ユニバーサルWindowsプラットフォーム開発」を追加、また「ユニバーサルWindowsプラットフォーム開発」のオプションの「USBデバイスの接続」を追加
![holo_env_05.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245808/db9e7e64-9cf5-691e-61ff-9ab244210650.jpeg)

* Unity
    * UnityHubをダウンロードする(https://unity3d.com/jp/get-unity/download)
    * Docsが推奨している、2018.4.23f1 LTSをインストールする
    * モジュールの追加で、「UWP Build Support(IL2CPP）」を追加する
![holo_env_06.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245808/fd896685-dfcb-1f60-ed29-505b63b431a4.jpeg)


## エミュレータのインストール

Hololens2が手元にないためエミュレータをインストールする。リンク先のシステム要件を満たしているか注意が必要。
https://docs.microsoft.com/ja-jp/windows/mixed-reality/using-the-hololens-emulator

* Hololens2のエミュレータでは、仮想化技術を使用しているためBIOSの設定を変更する。
BIOSから「System Configuration」-「Virtualization Technology」を「Enabled」に変更する。

* 「コントロールパネル」-「プログラム」-「プログラムと機能」-「Windowsの機能の有効化または無効化」にて「Hyper-V」にチェックをいれ、マシンを再起動させる。
![holo_env_09.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245808/808cfe99-5cad-3921-a883-ba13ebe4914b.jpeg)


* Hololens2用のエミュレータをダウンロードし、インストールする。

## MRTKの設定
MRTKのガイドに沿って設定していく。
https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/GettingStartedWithTheMRTK.html#get-the-latest-mrtk-unity-packages

* リンク先から、「Microsoft.MixedReality.Toolkit.Unity.Foundation.2.3.0.unitypackage」をダウンロードする。
![holo_env_10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245808/9023c0a8-10d4-ee76-1250-ee5231bc790d.jpeg)

* Unityにて新規プロジェクトを作成
![holo_env_11.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245808/10007518-1af0-7f78-cf52-44ead13f91c6.jpeg)

* MRTKをインポート
![holo_env_12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245808/4403c400-4b43-2504-1d23-c612a619b2b6.jpeg)
![holo_env_13.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245808/5f9b65e5-abdd-3f29-b909-2794ba76eeca.jpeg)
![holo_env_14.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245808/768e3342-20b0-0417-5649-dd5d43b476b7.jpeg)

* ビルドする

## Holens2用エミュレータの起動

* Visual Studioにて作成したプロジェクト開き、対象のデバイスにエミュレータを選択
![holo_env_15.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245808/124d1b07-8019-88b0-7df3-52868c405fb7.jpeg)

* デバッグ実行し、エミュレータを起動する。（7~8分かかる）
![holo_env_16.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245808/a2d042c9-7d57-c979-0551-9f52d814cd81.jpeg)

現状のPCスペックだと、CPUとメモリが100%近くになってしまいエミュレータがフリーズしてしまった。。。

# 参考

参考にさせていただきました。ありがとうございました。
https://www.slideshare.net/TakahiroMiyaura/mrtk-v2-178304375
https://forest.watch.impress.co.jp/docs/news/1253524.html
https://docs.microsoft.com/ja-jp/windows-server/virtualization/hyper-v/deploy/deploy-graphics-devices-using-remotefx-vgpu
https://bluebirdofoz.hatenablog.com/entry/2019/11/04/014834