MR and Azure 309: AzureのApplication Insights機能

こんにちは、ナレコム菅井です。

今回はMR and Azure 309のアプリを作っていきます。

今回使用したツールは以下の通りです。
・Windows
・Unity 2017.4.11f1
・Visual Studio 2017
・HoloLens

このアプリはAzure Application Insights APIを使ってユーザーの行動を分析するアプリです。ユーザーが最も接近しているオブジェクトの色を変えてみます。それではさっそく始めて行きましょう!

 

0.準備


まず、Application Insights Serviceを利用するための準備をします。

1. Azure Portalにログインします。

2. [リソースの作成]からApplication Insightsと検索します。下のようなアイコンが出てきたら開きます。

3. Application Insightsの説明が出てきますので、[作成]をクリックします。

4. Application Insightsに関する情報を入力する画面になりますので、入力していきます(※記入例です)。入力し終わったら、[作成]をクリックします。

5. お知らせタブを開きます。デプロイが終了したら、[リソースへ移動]します。


このあとの行程で後ほどの必要なインストルメンテーション キー、アプリケーション ID、API キーを取得します。

6. [プロパティ]を開き、インストルメンテーション キーの位置を確認します。

7. [API アクセス]からアプリケーション IDを確認します。

8. 同じ画面([API アクセス])からAPI キーを取得します。[API キーの作成]をクリックするとAPI キーの作成画面が出てきますので、必要な情報を入力し、[キーの作成]をクリックします。キーが示された画面がポップするのでキーを確実に保存しメモしておきます。


 

1.Unityの設定


続いてUnityの設定を行っていきたいと思います。以下の手順で進めていきましょう。

1.Unityを開き、[New]から新しいプロジェクトをつくる。
名前をMRApplicationInsightsとして、[Create project]をクリックします。

2. [Build Settings..]からさまざまな項目を編集していく。
[File]->[Build Settings..]を開きます。

a.プラットフォームの変更
[PC, Mac & Linux Standalone]を[Universal Windows Platform]に変更し、[Switch Platform]をクリックします

b.[Player Settings..]を編集する
[Player Settings..]をクリックします。

そのあと[Other Settings]、[Publishing Settings]->[Capabilities]、[XR Settings]を以下のように設定してきます。



続いて、[Unity C#]にチェックを入れます。[Build Settings..]の変更は以上です。

3. Sceneの保存
[Add Open Scenes]をクリックし、[新しいフォルダー]からScenesと名前をつけて、この中にApplicationInsightsSceneとして保存します。

[Build Settings..]の変更は以上です。

4. パッケージのインポート。
まず、AppInsights_LabPlugins.unitypackageをダウンロードします。[Assets]->[Import Package]->[Custom Package]をクリックします。ダウンロードしたAppInsights_LabPlugins.unitypackageを選択し、[Import]をクリックします。


5. インポートした中身を確認する。
まず、[Plugins]->[Insights]の中にある[Microsoft.ApplicationInsights] の中身です。

続いて、[Plugins]->[Insigths]->[WSA]の中にある[Microsoft.ApplicationInsights] の中身です。

[Pliugins]->[Newtonsoft]の中にある[Newtonsoft.Json]の中身です。

さらに[Pliugins]->[Newtonsoft]->[WSA]の中にある[Newtonsoft.Json]の中身も確認します。

 

2. カメラの編集


1. [Hierarchy]->[Create]->[Create Empty]でゲームオブジェクトを作り、名前をCamera Parentとします。

2. [Hierarchy]->[Create]->[3D Object]->[Sphere]として球を作り、名前をRight Handとします。このRight Handの[Inspector]から
a. [Transform]
—————————-
Position  | 全て0
—————————-
Rotation | 全て0
—————————-
Scale     | 全て0.1
—————————-

b. [Sphere Collider]を削除
[Sphere Collider]の歯車マークから[Remove Component]をクリックします。

3. 今作成した[Right Hand]と[Main Camera]を、今作った[Camera Parent]の子オブジェクトにします。移動したいオブジェクトを[Camera Parent]にD&Dで、移動できます。以下のようになればオッケーです。

 

3.オブジェクトの作成


ここでは土台、球、正方形、カプセルを配置していきます。また、後ろの三つのオブジェクトにタグをつけていきます。

1. 土台の配置
[Hierarchy]->[Create]->[3D Object]->[Plane]で作り、[Inspector]パネルを編集していきます。
Transform
—————————————-
Position  | X : 0 | Y : -1 | Z : 0
—————————————-
Rotation | 全て0
—————————————-
Scale      | X : 5 | Y : 1 | Z : 5
—————————————-

続いてこの土台に色をつけていきたいと思います。
[Project]->[Create]->[Material]とし名前をBlueとします。このBlueマテリアルを選択し、[Inspector]を編集していきたいと思います。[Main Maps]の[Albedo]という項目から色を変えます。今回は仮に#3592ffffとします。


今作成したBlueマテリアルを先ほど作った土台(Plane)にD&Dします。

2. 球の配置
[Hierarchy]パネル内で先ほどと同様にして3D Objectの[Sphere]を作ります。この[Inspector]を
Transform
——————————————
Position  | X : 5 | Y : 0 | Z : 0
——————————————
Rotation | 全て0
——————————————
Scale      | 全て1
——————————————

3. 正方形の配置
[Hierarchy]パネル内で先ほどと同様にして3D Objectの[Sphere]を作ります。この[Inspector]を
Transform
—————————————–
Position  | X :  0 | Y : 0 | Z : 5
—————————————–
Rotation | 全て0
—————————————-
Scale      | 全て1
—————————————-

4. カプセルの配置
[Hierarchy]パネル内で先ほどと同様にして3D Objectの[Sphere]を作ります。この[Inspector]を
Transform
—————————————–
Position  | X : -5 | Y : 1 | Z : 0
—————————————–
Rotation | 全て0
—————————————–
Scale      | 全て1
—————————————-

[Hierarchy]パネルがこのようになっているはずです。

5. タグづけ
今作ったSphere,Cube,Capsulの中からどれでも良いので一つ選び、[Inspector]->[Tag]から[Add Tag..]でタグを追加していきます。名前はObjectInSceneとします。これではタグを作っただけなので、再び[Inspector]->[Tag]で[ObjectInScene]を選択します。


残りの二つのオブジェクトにも同様のタグをつけます。これによってスクリプトでタグのついたオブジェクトの挙動を制御できるようになります。

 

4.スクリプトの作成


ここでは以下の5つのクラスを作っていきます。
・ApplicationInsightsTracker
・Gaze
・ObjectTrigger
・DataFromAnalytics
・Movement

スクリプトの作り方はまず、すべてのスクリプトをまとめておくフォルダーを作成します。[Project]->[Create]をクリックし、[Folder]を選択して新しいフォルダーを作ります。名前をScriptsとします。続いて[Project]->[Create]->[C# Script]をクリックし、クラス名をつけていきます。

・ApplicationInsigthsTracker
このクラスはユーザーの動きに合わせて、Azure Application Insightsに情報を送信する役割を担います。コードは以下の通りです。ここでインストルメンテーションキーとアプリケーションIDとAPIキーが必要です。コード内のInsert・・・に適切にこれらを入れます。

・Gaze
このクラスはユーザーの視点に関する情報を記憶したりするためのクラスです。コードは以下の通りです。

・ObjectTrigger
このクラスは、シーン内のキューブ、カプセル、球のうちカメラがどれの近くにいるのかを判断するのに使います。コードは以下の通りです。

・DataFromAnalytics
このクラスは、どの物体と一番近づいたかデータを取得し、Azure Application Insightsとのやりとりを通して物体の色を決める役割を担っています。コードは以下の通りです。

・Movement
最後のクラスです。他のスクリプトをシーン内のオブジェクトに反映させるためのクラスです。

 

5.ビルド


[File]->[Build Settings..]->[Build]の順に選択します。新しいフォルダー(BUILDS)を作成し、その中にさらにフォルダー(MR_Azure_Insights)を作ります。このフォルダーを選択し、保存します。

この後の手順についてはこちらを参照してください。

HoloLensで実行した時の様子です。

以上となります。 お疲れ様でした。

この記事を書いた人

azure-recipe-user