Microsoft Build 2021で話があったMixed Realityに絡むDigital Tiwnsについての技術要約

# Microsoft Build 2021でのMixed Realityに関する情報

先月Microsoft Build 2021が開催されました。Mixed Reality関連では新しいリリースなどがなかったため、大きなアップデートはなかったのですが興味深い内容はいくつかありました。少しその話を整理しつつ関連する技術を整理してみたいと思います。
Build 2021では6つの主要テーマが紹介されておりMixed Realityはその中でDigital Twinsとの絡みで話がありました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/10f406f3-5306-965c-23f1-3fe06e9776ff.png)
[キーノートから引用](https://news.microsoft.com/ja-jp/features/microsoft-build-2021/)

詳細は別途セションが実施されており、今回はこの記事の中で出てきた関連技術を整理しながら技術を整理していこうかと思います。

* [Building Digital Twins, Mixed Reality and Metaverse Apps](https://mybuild.microsoft.com/sessions/f06287c8-8e56-452f-ae2f-e739c2be4870)

## [Building Digital Twins, Mixed Reality and Metaverse Apps](https://mybuild.microsoft.com/sessions/f06287c8-8e56-452f-ae2f-e739c2be4870)セションの内容

セションの内容で特に気になったポイントで整理すると以下のような話があるようです。

* 物理環境をデジタル化によりデジタルツインを構築
* デジタル上のモデル化と現実はリアルタイム同期が必要
* 分析、予測、シミュレーションを通して自律的な制御を実現する
* Mixed Realityなどと組合わせることでDigital Twinsによる情報をより効果的に活用

Digital Twinsについては「現実の事象をモデル化しリアルタイムでデジタル情報による写像をつくる」という表現がよくされる形です。これについては「Azure Digital Twins」とサービス名にもついているものがあるのですが、いくつかのテクノロジーやサービスを連携して実現することになります。
MicrosoftのAzure系のサービスを利用してこれらのDigital Twinsやその情報を活用するための技術スタックとしては以下の様に示されていました。ほぼAzureのみで完結できるというところもあるのですが、特にポイントになりそうなのが、「 一見複雑な技術スタックは段階的に取り入れることができる」ところだと思います。例えば、Azure IoTサービスとAzure Digital Twins間はAzure Functionを利用して実現しますが、これらは後からでもFunctionsを追加して機能拡張することが容易ですし、Digital Twinsのモデルデータも途中からの変更も可能です。
また、それぞれ必要な役割に応じてサービスが分かれているため実現したい領域に合わせてサービスを組合わせるということが容易になっています。例えば、もっと最小限の利用手段としてはAzure IoT, Azure Digital Twinsの2つのサービスを活用する方法になると思います。この2つのサービスにより、「現実環境のセンシングに必要なIoTエッジをAzure IoTサービス群で管理」、「現実環境をモデル化したAzure Digital Twins上のモデルデータでセンシングデータを管理」を実現可能となります。
さらに高度なことを実現するためにはさらに上位のスタックを活用することが可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/e68e74f9-d985-f9bc-dfaf-0d98cf556936.png)

各レイヤーはそれぞれ以下のような役割で定義されています。

* **Model** : デジタルツインで最初に行うのは**モデル化**
   * 対象は物理世界のものであればなんでもよい  
* **Synchronize** : 重要なことは、現実環境とデジタル環境を**ライブで同期化**すること
   * これによってDigital Twinsを現実のものにする  
   * 物理的な世界と同期させることで、そのモデルにソフトウェアの技術を適用
* **Monitor** : 同期化した情報を**モニタリング**
   * デジタルカウンター等を通してモニターする  
* **Track the Past, Analyze** : 情報の蓄積による**過去情報のトラッキング**と**分析**
   * **過去情報を蓄積**することで状況を把握する  
   * デジタル環境から物理環境の**インサイト情報**を得る事ができる  
* **Predict, Simulate, Autonomous Control** : **シミュレーション**から未来を**予測**、**自律的な制御**を実現する
    * インサイト情報をもとに先に発生することを**予見**する
        * ソフトウェア適用可能なデジタル環境であれば予測可能
    * デジタルツイン環境があれば、実環境を通さずにデジタル上で様々な**シミュレーション**が可能  
    * シミュレーション結果を基に**物理環境での作業を最適化**、**自律的な制御を可能**にする  
* **Interact** : **現実環境とデジタル環境の相互作用**
    * デジタルツインの中でも実現できる最もパワフルなことの1つ
    * **物理環境にデジタルレプリカ情報を重ねて対話**し**豊富なメタデータや洞察**を活用
    * **距離を超えた純粋な仮想空間で、世界中の同僚や専門家と対話可能**

これらをAzureのサービス群で実現します。

## 各レイヤーの概要と詳細

ここでは各レイヤーのAzureサービスの概要とリンクを整理します。

### Azure IoT サービス群

AzureのIoTサービスはIoTデバイスの管理や、テレメトリー情報の管理を実現するための複数のサービスが提供されています。各サービスの詳細は以下の要約とリンクを参考にしてください。このレイヤーでは**実世界のセンシングと接続**を実現します。

* データのモニタリングとアクション
* エッジデバイスの管理と更新
* デバイスとデータの保護

#### Azure IoT Hub
IoT アプリケーションとそこに接続されたデバイスとの間における双方向の通信において、中央のメッセージ ハブとしての役割を担う。

https://docs.microsoft.com/ja-jp/azure/iot-hub/about-iot-hub?WT.mc_id=MR-MVP-5003104


#### Azure IoT Edge
ジネス ロジックを標準のコンテナーにパッケージ化して IoT ソリューションをスケールアウトし、それらのコンテナーを任意のデバイスにデプロイして、すべてをクラウドから監視

https://docs.microsoft.com/ja-jp/azure/iot-edge/about-iot-edge?view=iotedge-2020-11?WT.mc_id=MR-MVP-5003104

#### Azure Defender for IoT
IoT/OT デバイス、脆弱性、脅威を特定するための統合セキュリティ ソリューション

https://docs.microsoft.com/ja-jp/azure/defender-for-iot/overview?WT.mc_id=MR-MVP-5003104

#### Azure Percept
IoT と AI をエッジで使用してビジネス変革を促進するために設計されたハードウェア、ソフトウェア、およびサービスのファミリ

https://docs.microsoft.com/ja-jp/azure/azure-percept/overview-azure-percept?WT.mc_id=MR-MVP-5003104

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/dee18b96-4462-70c3-89bd-ec907225f190.png)
Azure Perceptは実機を手に入れたのでどういうことができるかはまた整理します。
基本的にはIoT エッジデバイスとして使えるのですが、開発キットではカメラ、音声が利用可能です。
簡単なセットアップでAzure IoT HubにIoT エッジデバイスとして利用可能、Azure Percept Studioというポータル上で以下のような設定が可能です。

* AIを活用したIoTエッジデバイス環境を簡単に利用可能
    * 各種画像処理系のAIサービス（Cognitive Services等）から簡単にモデルをIoTエッジデバイスにデプロイ
    * 音声処理系サービス（LUIS等）から音声コマンド等をIoTエッジデバイスにデプロイ
* エッジデバイスで分析した情報はAzure IoT Hubのテレメトリー情報として受信
    * カメラに人物が写るとその分析結果が情報として発信等 

### Azure Digital Twins
現実世界の環境全体のデジタル モデルに基づいたツイン グラフの作成を可能にする、サービスとしてのプラットフォームです

https://docs.microsoft.com/ja-jp/azure/digital-twins/overview?WT.mc_id=MR-MVP-5003104

* Azure Digital Twinsは一種の専用言語を用いたNoSQL型のDBに近い
* Digital Twin Definition language(DTDL)言語で現実世界をモデル表現
* Jsonで定義し、現実世界のモデルの関係性やパラメータを定義
* ある意味でオブジェクト指向プログラミングの「クラス」と「インスタンス」といった概念と似ている。
* 様々なトリガーと駆使し現実世界のデジタル情報をモデルに従ってデータ管理する

| ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/d2f26335-3fff-7cea-1db1-951b218b7622.png) | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/c9c9eee6-dfe4-2b75-a859-b5be32609375.png) |
|:-:|:-:|

### Azure Maps,Indoor

マッピング データを使用して、地理的なコンテキストを Web とモバイル アプリケーションに提供する一連の地理空間サービスおよび SDK。乱暴にいうと、地図データがないMapで使う機能を利用できるSDKのようなもの

https://docs.microsoft.com/ja-jp/azure/azure-maps/about-azure-maps?WT.mc_id=MR-MVP-5003104

![AzureMaps2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152548/2bb6824a-241d-2ff1-28c8-a05f78111faf.gif)
上図のGifは、Azure MapsのIndoorマップでの可視化の例です。このようにオリジナルのフロア情報や地図情報を活用したコンテンツ開発が可能になります。主な特徴は以下の通りです。

* 複数のスタイルと衛星画像でベクター マップおよびラスター マップをレンダリングするための REST API。
* プライベートな屋内マップ データに基づいてマップを作成およびレンダリングするための Creator サービス (プレビュー)。
* 世界中の住所、場所、および目的地を見つけるための検索サービス。
* ポイント間、マルチポイント、マルチポイント最適化、等時線、電気自動車、商用車、影響を受ける交通、マトリックス ルーティングなど、さまざまなルーティングのオプション。
* リアルタイムの交通情報を必要とするアプリケーション向けのトラフィック フロー ビューとインシデント ビュー。
* 公共の輸送情報を要求する Mobility Service (プレビュー)。さまざまな移動手段とリアルタイムの到着を組み合わせた、ルートの計画。
* タイム ゾーンおよび位置情報 (プレビュー) サービス。
* デジタル海抜モデルを使用した Elevation Service (プレビュー)
* Azure 内でホストされている位置情報を使用した、ジオフェンシング サービスとマッピング データ ストレージ。
* 地理空間分析による位置情報インテリジェンス。

### Azure Synapse Analytics
データ ウェアハウスやビッグ データ システム全体にわたって分析情報を取得する時間を早めるエンタープライズ分析サービス。

https://docs.microsoft.com/ja-jp/azure/synapse-analytics/overview-what-is?WT.mc_id=MR-MVP-5003104

エンタープライズ データ ウェアハウスで使用される SQL テクノロジ、ビッグ データに使用される Spark テクノロジ、データ統合と ETL および ELT のための パイプライン、Power BI、CosmosDB、AzureML などの他の Azure サービスとの緊密な統合の長所を組み合わせたもの


### Azure AI & Microsoft Project Bonsai

言わずと知れたAzure上で実現可能な機械学習の各種サービス群。膨大なリアルタイムデジタルデータを分析し自律制御や判断に必要な情報を引出すために活用します。

https://azure.microsoft.com/ja-jp/overview/ai-platform/?WT.mc_id=MR-MVP-5003104

Project BonsaiはAIを活用した自動化開発を高速化するローコードAIプラットフォームであり、Microsoft の自律システム スイートの一部

* 強化学習により機械教示を簡素化、よりスマートな自律システムのトレーニング/展開を実現

https://docs.microsoft.com/ja-jp/bonsai/product/?WT.mc_id=MR-MVP-5003104



### Power Platform

ローコードソリューションの迅速な開発を実現するサービス群。分析したデジタルデータを実務で活用するためのUI/UX、フローの構築などを実現する。

https://www.microsoft.com/ja-jp/biz/dynamics/power-platform.aspx


### Microsoft HoloLens & Microsoft Mesh

Mixed Reality技術でデジタル環境とデジタル環境を相互作用させることでより高度な活動を実現する。相互作用させるといっても現実環境にそのまま投影するという簡単な利用方法から、作業支援のための補完情報の可視化、遠隔支援など様々な領域でデジタル情報の利用を可能にするためのテクノロジー。
特に、今回特徴的だったのはMeshによるコラボレーティブプラットフォームを明確に打ち出していること。

https://docs.microsoft.com/en-us/mesh/overview?WT.mc_id=MR-MVP-5003104

これにより、世界のどこにいても、人々がプレゼンスでつながり、空間を超えて共有し、互いに協力し合うことが可能になる（はず）。

## まとめ

ということで、 [Building Digital Twins, Mixed Reality and Metaverse Apps](https://mybuild.microsoft.com/sessions/f06287c8-8e56-452f-ae2f-e739c2be4870)セションを振り返ってみました。このセションと合わせて、これらDigital Twinsのサービスの幾つかを体験できる以下のラーニングパスも公開されています。
興味がある方は一度チャレンジしてみてください。
このラーニングパスで提供されるサンプルについても後日アーキテクチャ面で解説したいと思います。

https://docs.microsoft.com/ja-jp/learn/paths/build-mixed-reality-azure-digital-twins-unity/?WT.mc_id=MR-MVP-5003104


## ラーニングパス解説(Qiita記事)

### Microsoft Learn 「Azure Digital Twins と Unity を使用して Mixed Reality デジタルツインを構築する」解説(Azure IoT Hub編)

https://qiita.com/miyaura/items/14812caf737afd48a460

### Microsoft Learn 「Azure Digital Twins と Unity を使用して Mixed Reality デジタルツインを構築する」解説(Azure Digital Twins編)
https://qiita.com/miyaura/items/dc78983d7094038e9f29

## 参考リンク 

* Microsoft Build 2021 関連セション
    * [Build Opening](https://mybuild.microsoft.com/sessions/ff7c228c-3471-4ea2-90f1-4673d511c41c)
    * [Building Digital Twins, Mixed Reality and Metaverse Apps](https://mybuild.microsoft.com/sessions/348c6af7-60b3-46e5-bf09-f5a9b299dd45)
    * [Connect IoT data to HoloLens 2 with Azure Digital Twins and Unity](https://mybuild.microsoft.com/sessions/815a692f-398b-4772-ac18-c021f5116757)
        * (ラーニングパスの解説も兼ねているのでお勧め )

* ラーニングパス
    * [Azure Digital Twins と Unity を使用して Mixed Reality デジタル ツインを構築する](https://docs.microsoft.com/ja-jp/learn/paths/build-mixed-reality-azure-digital-twins-unity/?WT.mc_id=MR-MVP-5003104?WT.mc_id=MR-MVP-5003104)
* Azure 関連
    * [Azure Mapsのドキュメント](https://docs.microsoft.com/ja-jp/azure/azure-maps/?WT.mc_id=MR-MVP-5003104)
    * [Microsoft Meshへようこそ](https://docs.microsoft.com/ja-jp/mesh/?WT.mc_id=MR-MVP-5003104)
    * [Microsoft Power Platformドキュメント](https://docs.microsoft.com/ja-jp/power-platform/?WT.mc_id=MR-MVP-5003104)
    * [Azure IoT Hubのドキュメント](https://docs.microsoft.com/ja-jp/azure/iot-hub/?WT.mc_id=MR-MVP-5003104)
    * [Azure Digital Twinsのドキュメント](https://docs.microsoft.com/ja-jp/azure/digital-twins/?WT.mc_id=MR-MVP-5003104)