tech.guitarrapc.cóm

Technical updates

HoloLens Emulator エミュレータの準備と DEP6100 エラーの対処

今、個人的に何が一番おもしろいかというと、AR/VRです。

VR元年と言われて久しいですが (2013年が実質VR開発者にとっての元年というのはおいておいて)、昨年から個人的に話題なのがARにおける有望株Microsoft HoloLensです。

HoloLensの何がいいかって言うと、現実を良く考えているからなわけですが、昔のアニメに機動戦艦ナデシコってあったじゃないですか? あの世界ってAR + VRがうまく組み合わさってると思うんですね。という世迷い事はおいておいてできないかなぁと思ってた動画のような世界が目の前にあるというのがワクワクするわけです。

https://youtu.be/7d59O6cfaM0

とはいえ、残念ながらHoloLensはいくつかの条件をクリアしないと手に入りません。特にUSの住所というのがツラい...。

  • You are a developer in the United States or Canada where the Development Edition will first be available
  • You are a Windows Insider. By participating in the Windows Insider program, you agree to provide feedback and work with us to define the future of holographic computing
  • Please note that the Development Edition hardware and apps are in English only

https://www.microsoft.com/Microsoft-hololens/en-us/development-edition

実機がないなら、エミュレータでまずは頑張りましょう。今回は、エラーの対処も含めてエミュレータの起動まで追っていきます。エミュレータの起動、実行がうまくいくということは、HoloLens開発に乗り出せるはずです。

エミュレータとは

HoloLensエミュレータはWindowsPhoone10や他のエミュレータ同様に、実機の動作を手元のPCで再現するものです。もちろん、HoloLensはARなのでPCで再現というのは極々限定的ですが、それでも結構面白いですし全然楽しいです。

そして、開発において「高速にイテレーションを回す事」は非常に大事で、実機ではなくエミュレータで動作を確認というのは必須です。Hololensエミュレータは、エミュレータ実行中でもVisual Studioでデバッグなし実行 > 実行中のエミュレータにそのまま新しいパッケージがデプロイされる *1 ので良い感じです。*2

https://developer.microsoft.com/en-us/Windows/holographic/using_the_hololens_emulator

エミュレータ単独の実行については以下の記事が詳しいです。

https://buchizo.wordpress.com/2016/04/04/hololens-emulator-%E3%82%92%E8%A7%A6%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B/

さて、エミュレータを実行するといってもどうやってという事になります。先人のブログにも紹介がありますが、結構どの記事もざっくりしすぎてて、うまく起動できないとハマるでしょう。そして大体うまく起動できません。

https://matatabi-ux.hateblo.jp/entry/2016/04/06/100000

https://www.naturalsoftware.jp/entry/2016/04/07/093200

https://blog.nnasaki.com/entry/2016/04/02/105956

https://blog.kokoni.jp/?p=919

先日、Unity + VS2015 + HoloLensエミュレータの構成で5人ぐらいでHoloLensモクモク会を行ってハマった箇所をすべて解決できたので、その方法も踏まえて紹介します。

目標

HoloLensのチュートリアルが普通に行えることを目指します。

すなわち、Unity でビルド > Visual Studio でエミュレータにデプロイ > エミュレータでアプリを起動、プレイです。

事前準備

チュートリアルの前に、事前にエミュレータを含めた準備しましょう。

VR Ready 以外のノートPCは難しい

Surface Bookも含めて、一般的なノートPCを複数台試しましたがUnityでのサンプルプロジェクトを含めて、まともにエミュレータを動かすなら無理です。

諦めて、VR ReadyなノートPCかデスクトップにしましょう。

実体験として、VR Ready PCとかはうってつけです。

https://www.geforce.com/hardware/technology/vr/vr-ready-program

特に、LITTLEGEAR i310は筐体の小ささと性能のバランスから好みです。

https://www.g-tune.jp/desktop/littlegear_h110/#s

最低でも、HoloLens - Install and Toolsのソフトウェアに加えてハードウェア要件を満たしておかないと、レンダリング内容を落としたりとか悲しい対応が必要になります。

OS

HoloLensでなくとも、AR/VR開発はDirectX 12が基本なので、Windows 8.1を使っている人はWindows 10にすることを推奨します。

Mac OSXでBoot CampしたWindows 10 Proで動作確認できています。ただし、当然MacBook Proでは描画が追い付かず死にます。

環境準備

実行のための環境を用意します。票の上から順に準備、インストールするといい感じです。HoloLens Emulatorは最後でokです。*3

環境 理由
グラフィックボード(ビデオカード) NVIDIA GTX 960以上 (GTX 980Tiだとぬるぬる動くので個人的に推奨です)
エミュレータでグラボが効かないとか言いますが、圧倒的に違います。ほんと。
できれば GTX970以上がいいです。
Intel-VT/AMD-V エミュレータは実態が Hyper-V なので。仮想化支援は、Hyper-V の実行環境に必要
Windows 10 Pro/Enterprise Hyper-V の実行環境に必要
Windows 10 開発者モード HoloLens エミュレータの実行に必要です。設定 > セキュリティと更新 > 開発者向けから設定可能です。
Visual Studio 2015 Update 2 Visual Studio 2015 Update 1 でも動くは動きますが、Update2 はすでに動作検証済みです。
Universal Windows App Development Tools 1.2 or 1.3 HoloLens - Install and Toolsの通りですが、1.2でなくとも 1.3 でok です
Windows 10 SDK (10.0.10586) と 10.0.26624 エミュレータの実行に必要です。HoloLens - Install and Tools にある通りですが、「必ずWindows 10 SDK 10.0.10586 と 10.0.26624 の両方が入っていることを確認」してください。
もしそうでない場合、VS 2015 Update 1 の変更から、UWPツールでインストールされていることを確認 + Windows 10 SDK からダウンロード、インストールしましょう。
Unity HoloLens Technical Preview Beta 10 Unity からのビルド、エミュレータでの実行に必須です。
64bit版Unity - UWP Runtimeを順番にインストールしてください。
HoloLens Emulator エミュレータ本体です。同時に Holographic DirectX project templates for Visual Studio を含んでいます。
VS2015などをまとめてインストールしていると、Hyper-V の構成が完了してなかったりするので「HoloLens Emulatorのインストール前に再起動が推奨」です。

インストールの確認

チェック表を用意しました。すべて問題ないなら、幸せになれるでしょう。

  • [ ] グラフィックボードがGTX960以上だ
  • [ ] Intel仮想化支援が有効なハードウェアのPCである
  • [ ] Windows 10 Pro/Enterpriseである
  • [ ] Windows 10開発者モードにしている
  • [ ] Hyper-V Virtual Machine Managementサービスが動いているGet-Service vmm
  • [ ] VS2015 Update2をインストールした
  • [ ] Universal Windows App Development Tools 1.2 or 1.3がインストールされている
  • [ ] Windows 10 SDK (10.0.10586) と10.0.26624がインストールされている
  • [ ] Unity HoloLens Technical Preview Beta 10がインストールされている
  • [ ] Unity - UWP Runtimeがインストールされている
  • [ ] HoloLens Emulatorがインストールされている

エミュレータが動くことの確認

エミュレータは起動できただけでは意味がありません。作ったアプリをデプロイして起動できてこそ意味があります。

HoloLensの開発者向けドキュメントに、エミュレータ向け神チュートリアルがあります。エミュレータへのデプロイ、アプリの実行の最終確認にもなるので、 Chapter 1 - "Holo" world までやりましょう。

https://developer.microsoft.com/en-us/windows/holographic/holograms_101e

エミュレータ向けチュートリアル

Unity HoloLens Technical Preview Beta 10を起動して、順番にやるだけです。簡単なので、Unityを触ったことがなくても余裕です。

開始前確認

開始前に、チェックリストに挙げた HoloLens エミュレータの事前準備が完了していることを確認してください。

プロジェクトファイルのダウンロード

チュートリアル101eのプロジェクト名Origamiは、Unityプロジェクトファイルが公開されています。ダウンロード、解凍してチュートリアルを進めましょう。

https://github.com/Microsoft/HolographicAcademy/archive/Holograms-101.zip

Chapter1完了とエミュレータの実行

Chapter 1をUnityで設定したら、

Windows Storeとしてビルドします。

ビルド後にビルドしたフォルダ (チュートリアルならApp) が開くので、Origami.slnをVisual Studio 2015で開きます。

もし、Windows 10の開発者モードにしていないならVisual Studioの起動時に変更するように言われるので変更してください。

Visual Studioが起動したら、デプロイ準備です。ビルド構成周りを設定します。

項目 設定値
ビルド構成 Release
プラットフォーム x86
デプロイ先 HoloLens Emulator 10.0.11082.1039

加えて、Visual StudioのデバッグオプションもHoloLens開発で推奨されているとおり、Tools > Options > Debugging > Enable Just My Code > 無効にします。

ここまでできたら、デバッグなしで実行 (Ctrl + F5) で実行します。デバッグなしにすることで、エミュレータ起動、デプロイが完了するとVSにフォーカスが戻り、継続してデプロイが可能になるのでF5デバッグよりオススメです。

まず、ビルドが完了してHoloLens Emulatorにデプロイするところで、昇格を求められます。

そして、エミュレータが起動してきます。

さぁ、どうですか? HoloLens Emulatorは起動しましたか?

ここで大体の人はエラーが出るでしょう。DEP6100Unable to activate Windows Store app のエラーが出た場合は、記事の最後を見てください。

うまくいった人は、Microsoft Holographic Academyのロゴが表示されて

右クリックで、Origamiアプリを開始しましょう。

おめでとうございます! あとは、チュートリアルやアプリ開発を楽しんでください。

Visual Studio 2015 から HoloLens Emulatorへのデプロイ時のエラーについて

Visual Studioから、HoloLensエミュレータにデプロイした際のエラーは、この2つがほとんどのようです。

DEP6100 エラー

最も、多くの人がぶつかる罠がこれです。私もぶつかりました。

DEP6100 : The following unexpected error occurred during bootstrapping stage 'Connecting to the device 'F957827B-6FC8-4538-A5BA-3B3807152A56'.': MissingMethodException - Method not found: 'Boolean Microsoft.Tools.Connectivity.RemoteDevice.Ping()'.

原因は、周囲の人の対応も含めてすべてWindows SDK起因でした。

実は、HoloLens Emulatorを入れると、Windows SDK (10.0.26624)に変わる場合があります。この時にWindows 10 SDK (10.0.10586)が入っていないと怒られます。あるいは逆に、10.0.10586が入っていても、10.0.26624がないと怒られます。

この場合、

  • Windows 10 SDK (10.0.10586) *4を入れてください。10.0.26624のアンインストールは不要です

10.0.10586が入っていても怒られる場合があります。その場合は、

  • UnityとVisual Studioを終了してから Visual Studio 2015 の変更から、UWPツールの中でインストールされていること + Windows 10 SDK をダウンロードしてインストールし直しましょう

Windows 10 SDK (10.0.10586 あるいは 10.0.26624のどちらがない場合でもここから)

インストール後は、ビルドからやり直して再度HoloLens Emulatorにデプロイしてみてください。

  • Unity を開き直し > Unity でビルドし直し
  • Visual Studioでデプロイしなおし

ちなみに、一部対処法に上がっているRemote Tools for Visual Studio 2015 Update 2やレジストリは意味がないことを確認しています。いれなくてokです。(入れても悪影響はありません)

https://blog.nnasaki.com/entry/2016/04/02/213311

https://forums.hololens.com/discussion/226/cant-deploy-to-the-hololens-emulator

https://forums.hololens.com/discussion/228/emulator-troubleshooting-with-galaxyexplorer

https://forums.hololens.com/discussion/226/cant-deploy-to-the-hololens-emulator

https://forums.hololens.com/discussion/238/dep6100-the-following-unexpected-error-occurred-during-bootstrapping-stage

Unable to activate Windows Store app エラー

DEP 6100を超えた後に、ぶつかるエラーがこれです。普通にデバッグしてても出たりします。

Unable to activate Windows Store app 'Origami_sx6pycx103f58!App'. The activation request failed with error '型の初期化中にキャッチできない例外が発生しました'.

これは、古いSDKやビルドがbinやobjに残っているのが原因なので、binobj を消してもう一度ビルドすれば通るはずです。

HoloLens エミュレータの改善してほしいツラいポイント

触っていると、いくつか改善を期待したいことが出てきます。

デバッグが困難

ブレークポイントで停止しつつ、ということができないのが非常に辛いです。

HoloLens実機ならできるので、とても悩ましい....エミュレータも対応してくれないかしら。

HoloLens - Using Visual Studio

Unity の Startと一体化されていない

現状、HoloLensにデプロイするには、Unity でビルド > Visual Studio でデバッグなし実行でデプロイというフローです。

正直、Unityで開発しているので、Build and RunでHoloLens Emulatorにデプロイされるとか、UnityのGameウィンドウで実行されるかしてほしいのです。

今後に期待ですね。

エミュレータの起動が遅い

エミュレータの起動は、結構時間がかかります。一度起動してしまえば、新しいアプリをデプロイしてすぐに反映するのですが、一度でもエミュレータを落とすと時間がかかります。

これはHyper-Vイメージの実行を含めて行っているので仕方がないのですが、もっと早くなってほしいですね。こういう時にもNano使えるといいんですが。

まとめ

チュートリアル自体より、エミュレータ開始の難易度が高かったのですが、だいたいこれで解決のはずです。

楽しんで開発しましょう!

*1:つまりContinuous Deploy

*2:いちいちエミュレータを止めると、エミュレータの起動が遅く時間かかるのでこれ大事

*3:つまりOneGetで自動化事案

*4:あるいは、10.0.26624