
概要
アプリ開発と言っても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を解凍してUnityプロジェクトを開いた状態でArowSDK.unitypackageをダブルクリック
AROW SDKをUnityプロジェクトにImportする
ここでUnity 2017.xやUnity 2018.xの場合、Scripting Runtime Versionのバージョンがデフォルトで.NET 3.5になっているためエラーが発生してしまいます。
初回設定からサンプルの起動までの内容通りに.NET 4.xに変更することで解決します。
また、サンプルを起動した時にエラーが起きるのでシーンの設定も一緒に行っておきましょう。
公式チュートリアルのライセンス認証を参考にライセンス情報の登録
AROWの各機能を扱うためにライセンスを発行する
新規ライセンス発行ページでライセンスの説明(メモ)を記入しライセンスを発行する
トークンはこのページでしか表示されません。
発行したライセンスページからでは二度とトークンを確認することはできないため、しっかり保存しておきましょう。
Arow > Create LicenseData
をクリックして Assets/ArowOutput が作られ、その中にあるLicenseDataをクリックしInspectorから先ほど発行したライセンスのトークンをコピペする。
これでAROW SDKの準備が整ったので、初回設定からサンプルの起動までのスタートシーンからの起動で紹介されているサンプルを触ってみると良いでしょう!
ステップ2:POI(Point Of Interest)データ
さて、ここからは実際に3Dマップを生成しながらPOIデータを扱っていきましょう。
POIデータに関しては以下の資料に詳細が載ってあります。
公式チュートリアルの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(一部)は以下の内容になっている。
# 概要
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.csproj
とArowMapTools/ArowMapTools.csproj
をAtomやVSCodeなどのテキストエディタで開いてHintPathタグ内のパスを削除し、README.mdにしたがってUnityEngine.dllのフルパスに変更する。
Unity.appを選択して右クリックからパッケージの中身を表示をクリック
MapPackageのフォルダをエディターで開いておくと作業しやすいです。
VSCodeだと上記のままツールバー > 表示 > ターミナル
をクリックし、VSCode上でビルド・実行の内容($ make -f Makefile_for_mac build
)を実行することができます。
その他は環境に応じてCLI作業ができるツールを立ち上げて実行しましょう。
注意
間違いやすい(最初間違えてましたw)のが、UnityEngine.dllではなくUnityEditor.dllになっていると$ make -f Makefile_for_mac build
のときに以下のようにエラーになるためご注意ください。
ちなみに余談ですが、通常、Unityは1つのバージョンだけインストールしていると思いますが、Unityでのアプリ開発では複数のバージョンでビルド・動作の確認を行うことが一般的になってきた(2017.x/2018.x/2019.xと各バージョンのUnityが増えてきたためである)ため、Unityのバージョンは複数インストールしておくことをオススメします。
さて、チュートリアルに戻ってPOIデータとAROW MAPの準備をしましょう。
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.arowmaをAssets/StreamingAssets
にドラッグ&ドロップして上書きしましょう。
POIデータを統合したAROW MAPを実行して確認する
上記のコマンドで生成されたshibuy.arowmapを実行して確認するには、ローカルサーバを用いてサンプルを起動のチュートリアルで確認ができます。
ツールバー > Arow > Local Server > Open Config
をクリックして、Portは変えずにServer Root Pathの設定内容をSelect Server Root Pathからフォルダー指定でフルパスに設定しましょう。
これで準備ができたのでローカルサーバーを起動して、shibuy.arowmapを実行して確認してみましょう。
_StartSceneをPlayしてAROW MAPをクリック
shibuy.arowmapをクリック
変な表示になっている際は、Camera Resetをクリックするとキャラクターがカメラの目の前に表示されるため、建物の自動生成をクリックするとshibuy.arowmapのモデルデータが表示されます。
ですが、残念ながらこのサンプルではconvenience_store.jsonの適応内容を確認することができません。このサンプルでは、AROW MAPを表示させてキャラクターを動かしてAROW MAPを確認するぐらいまでとなります。
もし、特定のPOIデータのモデルを変えたい場合は、ArowMapObjectModelにPOIデータが管理されているみたいなので、現状のバージョンだと各リストの中身を読み、特定のPOIデータに位置するモデルを変更するソースコードを書く必要があります。
※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からでも問い合わせ対応できるようですが、公式のコミュニティページがあるのでそちらから問い合わせの内容を詳細に連絡すると良いでしょう。