Mixed Reality Toolkit - Unityで始めるHoloLens/WinMR開発～バージョンの変遷

# Mixed Reality Toolkitのバージョンは？
Mixed Reality Toolkit - Unityのバージョンは何使ってますか？ライブラリとしては更新頻度が高く、また開発に使うUnityも結構更新するので、安定したバージョンがどれなの的な話になることが多いです。今回は公式で公開されているリリース情報を整理してみました。最後の方にじゃあどれがよさげ（経験則）を記載。

## Mixed Reality Toolkit - UnityのバージョンとUnityバージョンの対応表
ちなみにVisual Studioのバージョンはさほど影響受けないので省略します。Mixed Reality Toolkit - Unity（以下MRTK)とサポートUnityのバージョンは以下の通りです。いわゆるRC系については除いています。
主な追加機能は主観で気になったものを一部抜粋しているだけですので、詳細は各リリースタグの内容で確認をお願いします。

（2019年9月時点の情報）

|MRTK バージョン|対応Unity|対応OS|Windows SDK|主な追加機能|
|:--|:--|:--|:--|:--|
|2.0.0([tags](https://github.com/microsoft/MixedRealityToolkit-Unity/releases/tag/v2.0.0)) [^1] |Unity 2018.4, 2019.1 or 2019.2[^2]|Windows 10 Fall Creators Update|10.0.18362|<ul><li>XRデバイスに対応するUnity開発の基本的な[機能](https://microsoft.github.io/MixedRealityToolkit-Unity/README.html)を提供</li><li>新たな気持ちで開発が必要[^3]</li><li>マルチプラットフォーム対応<ul><li>Microsoft HoloLens</li><li>Microsoft HoloLens 2</li><li>Windows Mixed Reality headsets</li><li>OpenVR headsets (HTC Vive / Oculus Rift)</li></ul></li></ul>|
|2017.4.3.0 - Refresh([tags](https://github.com/microsoft/MixedRealityToolkit-Unity/releases/tag/2017.4.3.0-Refresh))|Unity 2017.1.X～Unity 2017.4 LTS|Windows 10 Fall Creators Update|10.0.17134|2017.4.3.0のコードコメントやドキュメントのみメンテした版|
|2017.4.3.0([tags](https://github.com/microsoft/MixedRealityToolkit-Unity/releases/tag/2017.4.3.0))|Unity 2017.1.X～Unity 2017.4 LTS|Windows 10 Fall Creators Update|10.0.17134|バグFix|
|2017.4.2.0([tags](https://github.com/Microsoft/MixedRealityToolkit-Unity/releases/tag/2017.4.2.0))|Unity 2017.1.X～Unity 2017.4 LTS|Windows 10 Fall Creators Update|10.0.17134|<ul><li>QR Code Trackingの追加（Preview)</li><ul>|
|2017.4.3.0([tags](https://github.com/Microsoft/MixedRealityToolkit-Unity/releases/tag/2017.4.3.0))|Unity 2017.1.X～Unity 2017.4 LTS|Windows 10 Fall Creators Update|10.0.17134|主にバグFix|
|2017.4.2.0([tags](https://github.com/Microsoft/MixedRealityToolkit-Unity/releases/tag/2017.4.2.0))|Unity 2017.1.X～Unity 2017.4 LTS|Windows 10 Fall Creators Update|10.0.17134|<ul><li>QR Code Trackingの追加（Preview)</li><ul>|
|2017.4.1.0([tags](https://github.com/Microsoft/MixedRealityToolkit-Unity/releases/tag/2017.4.1.0))|Unity 2017.1.X～Unity 2017.4 LTS|Windows 10 Fall Creators Update|10.0.17134|<ul><li>AppBarのカスタムアイコンのサンプル</li><li>Spectator Viewのマルチレンズ対応</li><li>CompoundButtonSpeechの追加</li><li>"Add the Spatial Mapping Prefab" がscene configuration windowに追加</li><ul>|
|2017.4.0.0([tags](https://github.com/Microsoft/MixedRealityToolkit-Unity/releases/tag/2017.4.0.0))|Unity 2017.1.X～Unity 2017.4 LTS|Windows 10 Fall Creators Update|10.0.17134|<ul><li>モーションコントローラのRayを視覚化</li><li>ダイアログとプログレスのUI追加</li><li>ツールチップの追加</li><li>空間マッピングに関する設定の追加</li><li>Spectator Viewのプレビュー版</li><ul>|
|2017.2.1.4 Patch([tags](https://github.com/Microsoft/MixedRealityToolkit-Unity/releases/tag/2017.2.1.4))|Unity2017.2.1p2|Windows 10 Fall Creators Update|10.0.16299|<ul><li>MRTKスタンダートシェーダーの追加</li><li>両手操作機能の追加(TwoHandManipulate)</li><li>Motion Controller hapticsとHolographicButtonの追加</li><li>BoundingBoxとAppBarの追加</li></ul>|
|2017.2.1.3 Hot Fix([tags](https://github.com/Microsoft/MixedRealityToolkit-Unity/releases/tag/2017.2.1.3))|Unity 2017.2.1p2|Windows 10 Fall Creators Update|10.0.16299|破壊的アップデート。2017.2.1.2でUNETをMRTKのExampleに移動する際に失敗しており、ライブラリが不安定になったため急遽提供された。|
|2017.2.1.2 （欠番）|-|2017.2.1.3にある通り、このリリースは壊れているのでタグ上から削除されている。|
|2017.2.1.1([tags](https://github.com/Microsoft/MixedRealityToolkit-Unity/releases/tag/2017.2.1.1)) | Unity 2017.2.1f1|Windows 10 Fall Creators Update|10.0.16299|Bug Fix.|
|2017.2.1.0([tags](https://github.com/Microsoft/MixedRealityToolkit-Unity/releases/tag/2017.2.1.0)) | Unity 2017.2.1f1|Windows 10 Fall Creators Update|10.0.16299|<ul><li> Mixed Reality Design Labs UX 機能の追加</li><li>モーションコントローラの外観変更機能の追加</li><li>Microphone Helperの復帰</li></ul>|
|2017.2.0p1 MRTP4 ([tags](https://github.com/Microsoft/MixedRealityToolkit-Unity/releases/tag/v1.2017.2.0))|HoloLens:Unity 2017.1.2<br/>WinMR:Unity  2017.2.0p1 MRTP 4|Windows 10 Fall Creators Update(WinMRの場合)<br />※明記はされていないがおそらく。。。|HoloLens:10.0.15063<br/>WinMR:10.0.16299|Windows Mixed Reality Deviceに対応直後でUnityのバージョンがデバイス毎に乖離している。|
|2017.2.0 MRTP([tags](https://github.com/Microsoft/MixedRealityToolkit-Unity/releases/tag/v1.Dev.2017.2.1)) |WinMR:Unity  2017.2.0p1 MRTP 4|未記載|未記載|WinMR専用のライブラリ。主にモーションコントローラ系の機能が追加されている。|
|2017.1.2([tags](https://github.com/Microsoft/MixedRealityToolkit-Unity/releases/tag/v1.2017.1.2))|Unity 2017.1.2f1|未記載|未記載|破壊的アップデートが行われていた時期。<ul><li>XboxControllerへの対応</li><li>Micstreamの一時的な除外</li></ul>|
|1.5.8.0([tags](https://github.com/Microsoft/MixedRealityToolkit-Unity/releases/tag/v1.5.8.0))|Unity 5.6.2f1 |未記載|未記載|Unity 5.X系の最後のリリース|
|1.5.7.0([tags](https://github.com/Microsoft/MixedRealityToolkit-Unity/releases/tag/v1.5.7.0))|Unity 5.6.1f1 |未記載|未記載|１年前のサンプルはこのあたりのバージョンが多いはず。|
|1.5.6.0([tags](https://github.com/Microsoft/MixedRealityToolkit-Unity/releases/tag/v1.5.6))|Unity 5.5.2f1 |未記載|未記載|１年前のサンプルはこのあたりのバージョンが多いはず。|
|1.5.5.0([tags](https://github.com/Microsoft/MixedRealityToolkit-Unity/releases/tag/v1.5.5.0))|Unity 5.5.0f3 |未記載|未記載|１年前のサンプルはこのあたりのバージョンが多いはず。|
|1.5.4.0([tags](https://github.com/Microsoft/MixedRealityToolkit-Unity/releases/tag/v1.5.4.0))|Unity 5.4 |未記載|未記載|１年前のサンプルはこのあたりのバージョンが多いはず。|

## 結局どのあたりが幸せになるのか（2019/09/20時点）

普段自身が使う組合せは以下の2つになりました。

* 新しいもの/マイグレーションしたもの
 * [Microsoft Mixed Reality Toolkit v2.0.0](https://github.com/microsoft/MixedRealityToolkit-Unity/releases/tag/v2.0.0)
 * Unity 2018.4.6f1 or Unity 2019.1.X
 * Visual Studio 2019
 
* 旧版、ハンズオン
 * MTRK 2017.4.3.0
 * Unity 2017.4.17f1 (LTS)

なお、MRTKに対してUnityのバージョンは上げても大丈夫な場合が多いです。
例えばMRTK 2017.2.1.0に対してUnity 2017.4.Xなどです。ただ、何か不安定さを感じたら、バージョン合わせるなどするといいと思います。

## 移植性ってあるの？
Mixed Reality Toolkit V2.0.0への移植については、破壊的アップデートを超えてもはや別物といっても過言ではないので、提供されているドキュメント[^3]を活用して頑張るしかないです。ただし、「対応するデバイスがHoloLensのみ」など作成時のデバイスから変更することがないのであれば、あえてV2への移植をしない選択肢もあると思います。MRTK V1系の最終は2017.4.3.0ですが、ライブラリとしては安定しているので各種開発環境のサポート期間と相談しながら決めていけばよいかと思います。

[^1]: バージョンの命名規約が変更されました。
[^2]: GitHub上のプロジェクトはUnity 2018.4.6f1で作成されています。もしプルリクなどする場合はこのバージョンでするようにしてください。
[^3]: 旧バージョンとの互換性は基本的にありません。なおRC2とも互換性が一部ないです。このため旧版はマイグレーションが必須です。詳細は[Upgrading from HTK](https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/HTKToMRTKPortingGuide.html)、[Updating from RC2](https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/Updating.html)