Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ホロラボでの HoloLens アプリ開発技術 / App Development at HoloLab

tarukosu
July 29, 2020

ホロラボでの HoloLens アプリ開発技術 / App Development at HoloLab

Tokyo HoloLens ミートアップ vol.21 での登壇資料です。

発表動画
https://www.youtube.com/watch?v=-QLk_Qo4YLk

リンクや動画をまとめたブログ記事はこちら
https://tarukosu.hatenablog.com/entry/meetup21

tarukosu

July 29, 2020
Tweet

More Decks by tarukosu

Other Decks in Technology

Transcript

  1. ホロラボでの HoloLens アプリ開発技術 1. [Closed Source] ホロラボ社内での取り組み 2. [Open Source]

    ソースコードを公開している技術・ライブラリ 3. [Experimental] 開発中・実験中の技術 4
  2. ホロラボでの HoloLens アプリ開発技術 1. [Closed Source] ホロラボ社内での取り組み 2. [Open Source]

    ソースコードを公開している技術・ライブラリ 3. [Experimental] 開発中・実験中の技術 5
  3. 社内ライブラリ: HoloLab Toolkit 7 Unity アプリ開発用社内ライブラリ 開発用ツール(エディタ拡張) • アプリ用コンポーネントや MRTK

    の インポート • プロジェクトの設定変更 アプリ用コンポーネント • QR コードトラッキング • GLB モデルローダー • お絵描きモジュール などなど
  4. HoloLab Toolkit の開発フロー GitHub Flow を利用 1. Issue を作成 2.

    master ブランチからブランチを切って開発 3. Pull Request を作成 4. CI .NET Scripting Backend と IL2CPP の両方でビルドテスト 5. GitHub 上でマージ(Squash and merge) 10
  5. いまから WebRTC を始めたい場合は? まずは Web アプリで WebRTC について学ぶ ライブラリ選択 •

    [Deprecated] WebRTC UWP SDK https://github.com/webrtc-uwp/webrtc-uwp-sdk • MixedReality-WebRTC https://github.com/microsoft/MixedReality-WebRTC - Release v1.0.3 (https://github.com/microsoft/MixedReality-WebRTC/releases/tag/v1.0.3) - Release v2.0.0 (preview) (https://github.com/microsoft/MixedReality-WebRTC/releases) 趣味プロジェクト or 社内調査から始めるのがおすすめ ハマりどころが多いので、納期があるとつらい 16
  6. HoloLens アプリでの実践クリーンアーキテクチャ とある HoloLens アプリを作る際、 クリーンアーキテクチャを意識して実装を行った クリーンアーキテクチャの説明は省略します。 詳しく知りたい方は「世界一わかりやすいClean Architecture」 (https://www.nuits.jp/entry/easiest-clean-architecture-2019-09)

    をご覧ください。 アプリで必要だった機能 - Web サーバから情報を取得して DB (SQLite) へ書き込み - DB からデータを読み取りアプリ内に表示 - アプリ内で入力した情報を DB へ書きこみ - 書き込まれた情報を Web サーバへアップロード 18
  7. アーキテクチャ 19 Use Cases Controller Presenter Repository Unity UI DB

    https://blog.cleancoder.com/uncle- bob/2012/08/13/the-clean-architecture.html より引用 アプリケーションのコア部分を DLL (Managed Plugin) として作成 Presenter 2D UWP UI Controller 開発用 2D UWP アプリ HoloLens アプリ
  8. DLL プロジェクトの構成 Unity を一切使わずに、開発・テスト・実行・デバッグを行った 20 DLL のコードを格納 (共有プロジェクト) .NET Framework

    向けに DLL をビルドするプロジェクト UWP 向けに DLL をビルドするプロジェクト UWP 向け DLL を使った テスト用 2D UWP アプリ 単体テスト
  9. ホロラボでの HoloLens アプリ開発技術 1. [Closed Source] ホロラボ社内での取り組み 2. [Open Source]

    ソースコードを公開している技術・ライブラリ 3. [Experimental] 開発中・実験中の技術 21
  10. ライブラリを含むプロジェクトの Git 管理 MRTK などのライブラリを含むプロジェクトを Git で管理する場合 短期プロジェクト Unity Package

    をインポートして、普通に Git で管理 長期プロジェクトやライブラリ Git submodule として追加 - ライブラリのコードが自分のリポジトリに 入らない (コミットIDのみ管理される) - バージョン変更が楽 23 自分のリポジトリ Assets/ Scripts/ SampleScript.cs Scenes/ SampleScene.scene _external/ MixedRealityToolkit-Unity MixedRealityToolkit-Unity Assets/ MRTK/ Core/ XR/ Documentation/ … … … …
  11. Git submodule として追加したライブラリを Assets に入れるには Assets 内に追加したいフォルダへのシンボリックリンクを作成 詳しくはブログをご覧ください https://tarukosu.hatenablog.com/entry/UnitySubmodule 24

    Assets/ Scripts/ SampleScript.cs Scenes/ SampleScene.scene MRTK/ Core Providers _external/ MixedRealityToolkit-Unity/ Assets/ MRTK/ Core Providers … Submodule を含めて clone したフォルダ構成 それぞれ 対応するフォルダへの シンボリックリンク … SymlinkSettings.yaml go-symlink-creator シンボリックリンクを作成するツール (OSS)
  12. CLI から Unity プロジェクトを開くツール 現在のフォルダの Unity プロジェクトを開く プロジェクトの Unity バージョン

    ProjectSettings¥ProjectVersion.txt で判定 起動する Unity のパス Unity Hub のコマンドで取得 26 https://github.com/tarukosu/go-unity-cli
  13. XR Line Renderer Unity Technologies が公開している、 XR 用に最適化された軽量 Line Renderer

    HoloLens では正常に動作しなかったため、 Fork して改良 リポジトリ: https://github.com/HoloLabInc/XRLineRenderer/tree/hololab/for-hololens Unity Package: https://github.com/HoloLabInc/XRLineRenderer/releases/tag/hololab-v1.0.0 32 HoloLens でのキャプチャ画像
  14. HoloLens App Manager の仕組み 36 Azure Storage PC アプリパッケージの アップロード

    PC ダウンロード インストール Device Portal の API を利用 https://github.com/microsoft/ WindowsDevicePortalWrapper HoloLens 2
  15. HoloLens App Manager を社内で使うには README に従って - Azure Storage Account

    の作成 - プロジェクトの設定 ビルドしたアプリを社内共有 各自アプリをインストールし、 USB 接続でのインストールを有効にする ためのコマンドを実行 (詳細はREADME) 37 https://github.com/HoloLabInc/HoloLensAppManager
  16. ホロラボでの HoloLens アプリ開発技術 1. [Closed Source] ホロラボ社内での取り組み 2. [Open Source]

    ソースコードを公開している技術・ライブラリ 3. [Experimental] 開発中・実験中の技術 38
  17. Power Platform とは 以下の4製品からなる - Power BI - Power Apps

    - Power Automate - Power Virtual Agents データプラットフォーム Microsoft Dataflex Pro (旧: Common Data Service) 41 https://docs.microsoft.com/ja-jp/powerapps/maker/common-data- service/data-platform-intro より引用
  18. Power Platform と HoloLens 大規模なシステムを少ない工数で構築できるというメリット データストア 2Dアプリ (PC/タブレット/スマートフォン) データ分析 HoloLens

    アプリケーションの立ち位置 システム内のアプリケーションの1つ HoloLens のメリットが活きる場面で利用する - 3D モデル表示が有用な場面 - ハンズフリーで作業がしたい場面 42
  19. HoloLens アプリで Web サーバーを立てる HTTP 通信には以下のライブラリを利用 [Unity Editor/IL2CPP] System.Net.HttpListerner [.NET

    Scripting Backend] NETStandard.HttpListener https://github.com/StefH/NETStandard.HttpListener ルーティングは自前実装 StreamingAssets フォルダ内の ファイルを返す (html/js など) 49 Blazor WebAssembly のサンプルページ
  20. スクリプトによる UI 定義 Flutter や UIWidgets のようなもの C# スクリプトで UI

    を記述 ボタンクリックのコールバックを指定可能 51
  21. ホロラボでの HoloLens アプリ開発技術 1. [Closed Source] ホロラボ社内での取り組み 2. [Open Source]

    ソースコードを公開している技術・ライブラリ 3. [Experimental] 開発中・実験中の技術 52