Edited at

AROWを使った位置情報のアプリ開発(ハンズオンみたいなやつ)



++注意++

この記事は、Unity Fukuoka 14のセッション『AROWを使った位置情報のアプリ開発(ハンズオンみたいなやつ)』の資料になります。


概要

アプリ開発と言ってもAROWをどう活用するかは、開発するアプリケーションのサービス内容によって使い方が変わります。

今回は、AROWの公式チュートリアルやAROWが組み込まれたゲーム「アニマルランランド」などを参考に、各ステップごとにAROWを解説していきます。

本セッションの目的は、AROWの使い方を知り、AROWを活用したアプリ開発ができるようになるとなります。


環境


  • macOS Mojave(ver.10.14)

  • Unity 2019.1.0f2

  • AROW ver.0.1.2


ステップ1:AROW SDKについて

AROWのサイトにアクセスし新規登録画面へ進む

新規開発者登録(無料)を済ませてデベロッパーアカウントを作成

AROW SDKのダウンロード


AROW SDKの導入方法

AROW SDKを解凍してUnityプロジェクトを開いた状態でArowSDK.unitypackageをダブルクリック

スクリーンショット 2019-06-09 12.05.26.png

AROW SDKをUnityプロジェクトにImportする



ここでUnity 2017.xやUnity 2018.xの場合、Scripting Runtime Versionのバージョンがデフォルトで.NET 3.5になっているためエラーが発生してしまいます。

初回設定からサンプルの起動までの内容通りに.NET 4.xに変更することで解決します。

スクリーンショット 2019-06-16 21.11.52.png

スクリーンショット 2019-06-16 21.12.58.png

また、サンプルを起動した時にエラーが起きるのでシーンの設定も一緒に行っておきましょう。



公式チュートリアルのライセンス認証を参考にライセンス情報の登録


AROWの各機能を扱うためにライセンスを発行する

新規ライセンス発行ページでライセンスの説明(メモ)を記入しライセンスを発行する

トークンはこのページでしか表示されません。

発行したライセンスページからでは二度とトークンを確認することはできないため、しっかり保存しておきましょう。



Arow > Create LicenseDataをクリックして Assets/ArowOutput が作られ、その中にあるLicenseDataをクリックしInspectorから先ほど発行したライセンスのトークンをコピペする。

これでAROW SDKの準備が整ったので、初回設定からサンプルの起動までスタートシーンからの起動で紹介されているサンプルを触ってみると良いでしょう!


ステップ2:POI(Point Of Interest)データ

さて、ここからは実際に3Dマップを生成しながらPOIデータを扱っていきましょう。

POIデータに関しては以下の資料に詳細が載ってあります。



資料:AROW の紹介 〜概要編〜

公式チュートリアルのPOIデータの使い方を参考に触っていきましょう。

マップデータダウンロードからPOIデータ(poi-jp-all.zip)をダウンロード


POIデータの導入と環境設定について

POIデータの実態は、Jsonファイル内に記述されている位置情報です。

POIデータを扱うには、このJsonファイルの内容をAROW MAP(.arowmap)に適応するためにArowMapToolsが用意している各コマンドを扱います。



先ほど解凍したarow-sdkのフォルダ内にあるMapPackage.zip を解凍。

MapPackage/README.md の内容にしたがって事前設定を行う。

2019/6/6にリリースされたAROW SDK ver.0.1.2時点のREADME.md(一部)は以下の内容になっている。

スクリーンショット 2019-06-09 18.27.24.png

# 概要

OpenStreetMap のデータを AROW で利用可能な形式にするなど、マップデータを編集するツール群です。

# 動作確認環境

- Unity Editor v2017.4.25f
- dotnet 2.2.300
- [.NET Core の Build Apps](https://dotnet.microsoft.com/download)

windows, mac で確認しています。

# 利用例

それぞれの環境で実行可能ファイルをビルドし、利用します。

## Windows

### 事前設定

`ArowLibrary/ArowLibrary.csproj`, `ArowMapTools/ArowMapTools.csproj` に UnityEngine.dll への参照を追加します。

それぞれテキストエディタで開き、
`<HintPath>UNITY_APP_PATH\Contents\Managed\UnityEngine.dll</HintPath>` となっている場所を
`<HintPath>C:\Program Files\Unity\Hub\Editor\2017.4.25f1\Editor\Data\Managed\UnityEngine.dll</HintPath>` のように編集します。

### ビルド・実行

$ dotnet publish -c Release -r win-x64

$ ./ArowMapTools/bin/Release/netcoreapp2.1/win-x64/ArowMapTools.exe -m {コマンド} [-i 入力ファイル] [-o 出力ファイル]

## Mac

### 事前設定

`ArowLibrary/ArowLibrary.csproj`, `ArowMapTools/ArowMapTools.csproj` に UnityEngine.dll への参照を追加します。

それぞれテキストエディタで開き、
`<HintPath>UNITY_APP_PATH\Contents\Managed\UnityEngine.dll</HintPath>` となっている場所を
`<HintPath>/Applications/Unity/Hub/Editor/2017.4.25f1/Unity.app\Contents\Managed\UnityEngine.dll</HintPath>` のように編集します。

Mac では以下のようにコマンドからも編集できます。

$ # プロジェクトが参照する Unity.app の場所を設定します。
$ make -f Makefile_for_mac unity_setting UnityDirectory=/Applications/Unity/Hub/Editor/2017.4.25f1/Unity.app

### ビルド・実行

$ make -f Makefile_for_mac build

$ ./ArowMapTools/bin/Release/netcoreapp2.1/osx-x64/publish/ArowMapTools -m {コマンド} [-i 入力ファイル] [-o 出力ファイル]

# 有効なコマンド一覧
## AddArowMap

二つの arowmap ファイルを一つにまとめる。

## AddPoiToBeefMap

POI データを aromwap ファイルに追加する。

## ConvertGsiBldToArowMap

国土地理院の建物データを arowmap ファイルに追加する。

## ConvertRoad

道データから不要な情報を取り除いて整形を行う。

...etc

ArowLibrary/ArowLibrary.csprojArowMapTools/ArowMapTools.csprojAtomVSCodeなどのテキストエディタで開いてHintPathタグ内のパスを削除し、README.mdにしたがってUnityEngine.dllのフルパスに変更する。

スクリーンショット 2019-06-09 18.47.15.png

スクリーンショット 2019-06-09 18.47.33.png

Unity.appを選択して右クリックからパッケージの中身を表示をクリック



MapPackageのフォルダをエディターで開いておくと作業しやすいです。

スクリーンショット 2019-06-09 19.55.11.png

スクリーンショット 2019-06-09 19.55.35.png

VSCodeだと上記のままツールバー > 表示 > ターミナルをクリックし、VSCode上でビルド・実行の内容($ make -f Makefile_for_mac build)を実行することができます。

その他は環境に応じてCLI作業ができるツールを立ち上げて実行しましょう。

スクリーンショット 2019-06-09 19.53.43.png


注意

間違いやすい(最初間違えてましたw)のが、UnityEngine.dllではなくUnityEditor.dllになっていると$ make -f Makefile_for_mac buildのときに以下のようにエラーになるためご注意ください。



スクリーンショット 2019-06-09 19.46.15.png

ちなみに余談ですが、通常、Unityは1つのバージョンだけインストールしていると思いますが、Unityでのアプリ開発では複数のバージョンでビルド・動作の確認を行うことが一般的になってきた(2017.x/2018.x/2019.xと各バージョンのUnityが増えてきたためである)ため、Unityのバージョンは複数インストールしておくことをオススメします。

スクリーンショット 2019-06-09 19.45.53.png

さて、チュートリアルに戻ってPOIデータとAROW MAPの準備をしましょう。

スクリーンショット 2019-06-09 20.20.38.png

UnityプロジェクトのAssets/StreamingAssetsを開いてにconvenience_store.jsonをドラッグ&ドロップしImportする。今回は、チュートリアルに従っていきますが、もし他のAROW MAPを使いたい場合は、マップデータダウンロードのページから特定の地域のAROW MAPをダウンロードしImportしてください。

普段からUnityでアプリ開発をしている人は気づいていると思いますが、必ずしもStreamingAssetsにPOIデータとAROW MAPを管理しなくても良いです。

POIデータをStreamingAssetsで管理しているのは、あくまでサンプルコード側の設計がStreamingAssetsにPOIデータがある前提で作られているため、実際にアプリ開発する際は、サーバからPOIデータをダウンロードしてインポートするような設計が考えられます。



また、POIデータとAROW MAPを一緒に扱う際には、結合する必要があり、先ほど実行した$ make -f Makefile_for_mac buildの後に続き、チュートリアル通り以下のようにAddPoiToBeefMapコマンドを実行する。

POIデータとAROW MAPが統合されたデータshibuy.arowmaAssets/StreamingAssetsにドラッグ&ドロップして上書きしましょう。


POIデータを統合したAROW MAPを実行して確認する

上記のコマンドで生成されたshibuy.arowmapを実行して確認するには、ローカルサーバを用いてサンプルを起動のチュートリアルで確認ができます。

ツールバー > Arow > Local Server > Open Configをクリックして、Portは変えずにServer Root Pathの設定内容をSelect Server Root Pathからフォルダー指定でフルパスに設定しましょう。

スクリーンショット 2019-06-15 16.34.14.png





これで準備ができたのでローカルサーバーを起動して、shibuy.arowmapを実行して確認してみましょう。



_StartSceneをPlayしてAROW MAPをクリック

スクリーンショット 2019-06-15 18.27.58.png

shibuy.arowmapをクリック



変な表示になっている際は、Camera Resetをクリックするとキャラクターがカメラの目の前に表示されるため、建物の自動生成をクリックするとshibuy.arowmapのモデルデータが表示されます。

ですが、残念ながらこのサンプルではconvenience_store.jsonの適応内容を確認することができません。このサンプルでは、AROW MAPを表示させてキャラクターを動かしてAROW MAPを確認するぐらいまでとなります。

もし、特定のPOIデータのモデルを変えたい場合は、ArowMapObjectModelにPOIデータが管理されているみたいなので、現状のバージョンだと各リストの中身を読み、特定のPOIデータに位置するモデルを変更するソースコードを書く必要があります。

スクリーンショット 2019-06-16 14.39.41.png

AROW - リファレンス

次回以降のアップデートでこのモデルの差し替え機能が実装されるとのことなのでやる必要は無いですが、ライブラリなどの中身を知ることは大事なので時間があればやってみると良いでしょう!


ステップ3:アニマルランランドについて



アニマルランランドは、以下のエラーのようにUnity 2019.xには対応できていないため、サポートされているUnity 2017.4.5f1で開きましょう。



環境設定時に使用するdockerをインストールしておきましょう。

ところが環境の用意の際に$ docker-compose up -d --buildを実行するとエラーが発生しました。



どうも最近起きている事象らしい。

debian(jessie)のdocker image使ってるとapt-getでエラーが出る


さいごに

各イベントでAROWチームのエンジニアが登壇してその時の資料をslideshareにアップしているようなので何かの参考にされてください。

また、各SNSで情報発信をやっており、SNSからでも問い合わせ対応できるようですが、公式のコミュニティページがあるのでそちらから問い合わせの内容を詳細に連絡すると良いでしょう。