littlewing

人間とコンピューターとメディアの接点をデザインするために考えたこと

Microsoft Azureクラウド上でHoloLensのSharingService(ホログラム共有)を動かす。

HoloLensのSharingServiceを使うと、複数台のHoloLensでセンサーデータなどの共有が簡単にでき、同じオブジェクトを表示したり、協業ができるようになります。 SharingService自体はUnityEditor上やHoloLensエミュレータ上でも動作します。

SharingServiceをAzure上で動かしたので、そのメモ。

Microsoftのクラウドコンピューティング Windows Azure入門

Microsoftのクラウドコンピューティング Windows Azure入門

  • 作者: 砂金信一郎,遠藤大樹,酒井達明,藤田昭人
  • 出版社/メーカー: アスキー・メディアワークス
  • 発売日: 2009/11/27
  • メディア: 大型本
  • 購入: 2人 クリック: 125回
  • この商品を含むブログ (6件) を見る

SharingService.exeについて

SharingServiceは、 Unity上でHololensアプリを開発するためのGitHubで公開されている便利なライブラリ集「HoloToolkit-Unity」に付属しています。

HoloLens上で動かすのではなくHoloLensとネットワークでつながった64bitのWindowsマシンで動作するexe形式のアプリケーションです。

SharingServiceの利用方法

使用方法はこのあたりを見てください。

  • Holograms 240

  • HoloToolkit-UnityのSharingに関するドキュメント

SharingServiceをMicrosoft Azureクラウド上で動かす

通常、SharingServiceを利用するには複数台のHoloLensと、同一ネットワーク上にあるPCが必要になります。 ただ、外出先など、普段と違うネットワーク環境でデモする場合には不便です。 そこでAzureクラウド上に設置すればどこでも利用できるのがメリットです。

また、開発時に、SharingServiceへ接続するエミュレーター上のアプリやUnity環境と同一のPCだと、利用ポートがかぶってしまうため、Sharing機能がうまく動作しません。 そんな時、もう一台PCを用意するよりAzureで動かしたほうが手っ取り早い。

使わない時はクラウドサーバーをOFFにしておけば料金の節約にもなります。

デメリットとしては、ネットワーク情報が暗号化されていないので場合によってはセキュリティー的な問題(VPNがあれば解決?)と、ローカルネットワークと比較すると遅延が発生する可能性があります。

利用するための手順

ざっくりいうと、以下の手順です。

  1. Azureのアカウントを作成(既にアカウントがあれば不要)
  2. 新しいVMを立ち上げる(64bitのWindows Server)
  3. ネットワークまわりの設定を行う(DNS/Firewall)
  4. SharingService.exeをサービスとしてインストールする

新しいVMを立ち上げて、SharingServiceをサービスに登録するだけです。


[手順1]Azureのアカウントを作成

  • 既にアカウントを持っている人は不要。
  • 新規作成はこちらからできます。
  • 新規作成時には1か月利用できる2万円分のクーポンがついてきます。
  • 今回の内容を試すには十分この無料の枠内に収まります。

[手順2]新しいVMを立ち上げる

  • Azureのダッシュボードにアクセスして新しいVMを作成します。
  • WindowsOSであれば何でもいいんですが、今回は以下の内容にしました。
    • OS:Windows Server 2016 Datacenter
    • サーバープラン:A1 Standard

f:id:pigshape:20161101115825p:plain

  • A1 Standardだと1か月動かし続けると8,000円くらい
  • ただ、AWSと異なり、Azureは分単位の課金となるので、細かく制御すれば節約可能です。

最初OSに「Windows 10 Enterprise N」を選ぼうとしたのですが、Azure上のWindows10はMSDNサブスクライバに有料登録していないと使えないみたいです。


[手順3]ネットワークまわりの設定を行う

  • SharingServiceを使うにはportの開放が必要です。
  • 20600-20604あたりが使われます。
  • VM作成時に、半自動で作成された「ネットワーク セキュリティ グループ」を選択して、Firewallの設定を追加します。
  • 標準ではリモートデスクトップ(TCP/3389)のみが解放されているので、 UDPの20600-20604ポートを追加で開放します。

3-1.ネットワーク セキュリティ グループのFirewallの設定

f:id:pigshape:20161101115919p:plain

3-2.DNSの設定

IPアドレスは、VMを終了・起動させるたびに動的に変更されてしまうため、 DNSの設定を行います。DNSを設定すればIPアドレスが変わっても、常に同じホスト名でVMにアクセスできます。 f:id:pigshape:20161101121343p:plain サーバーの設置場所に東日本を選んだので、DNSは

********.japaneast.cloudapp.azure.com

という形になります。

3-3.VMにリモートデスクトップでアクセス

  • 手元のPCからリモートデスクトップ接続をします。
  • 接続先に、設定したDNSのホスト名、アカウント情報はVM作成時に入力した内容でAzure上のWindowsにログインします。

f:id:pigshape:20161101121651p:plain


[手順4]SharingService.exeをサービスとしてインストールする

VMにログインできたら、SharingServiceを設置します。 VM内からブラウザが使えるのでEdgeを立ち上げて以下のURLにアクセスしてSharingService.exeをダウンロードします。

https://github.com/Microsoft/HoloToolkit-Unity/tree/master/External/HoloToolkit/Sharing/Server

  • ダウンロードできたらOS内のFirewallにも、SharingService.exeの通信許可を設定します。
  • コントロールパネル >システムとセキュリティーメニューから実施してください。

f:id:pigshape:20161101120023p:plain

  • コマンドプロンプトを立ち上げて
SharingService.exe -install

とするとサービスとして登録ができるのですが、そのままではエラーになってしまいます。(access denied.)

f:id:pigshape:20161101120112p:plain

その場合は、OS のサービス一覧メニューからSharingサービスを探して、プロパティーを表示し、 LogonをLocalSystemAccountに変更すると、正常に起動できます。

f:id:pigshape:20161101120225p:plain

こうすることで、AzureダッシュボードからVMを起動するだけで、SharingServiceも自動的に起動します。

Unity側の設定

SharingプレハブをHierarcyに配置して接続先に先ほどのDNSの名称を設定してください。

f:id:pigshape:20161101165524p:plain

これで動くはず。

以上


関連記事

ひと目でわかるAzure 基本から学ぶサーバー&ネットワーク構築

ひと目でわかるAzure 基本から学ぶサーバー&ネットワーク構築