はじめに
Azure Spatial Anchorsのチュートリアルを行うと、時間が経過しても他デバイスとSpatial Anchorsのデータを共有できるアプリを作成できます。しかし、この記事だけで進めていこうとするとつまる部分も出てきました。
そこで、この記事では実際に行った際の難しかった点を中心に、チュートリアルの手順を解説していきます。
開発環境
- Visual Studio 2019以降とASP.NETおよび Web の開発ワークロードがインストールされている Windows コンピューター
- .NET Core 3.1 SDK
- Android Studio 4.1
- Git for Windows
Azure Spatial Anchorsを作成する
Azure ポータルでSpatial Anchorsを作成します。
リソースの作成から、Spatial Anchorsを選択し、作成ボタンを押します。Spatial Anchorsアカウントのウィンドウに移動します。
リソース名など設定項目は特に指定はありません。ただし、ここで作成したらもう使わない、と決めているなら削除しやすいようにリソースグループは新規作成すると便利です。
新規を選択するとリソースが作成されます。少し待つと、デプロイ完了の表示が出てきます。これで完成です!
この後使用するのでリソースに移動ボタンをクリックし、概要のアカウントIDとアカウントドメイン、設定のキーにあるプライマリーキーの値をコピーしてそれぞれメモ帳などに残しておいてください。
サンプルプロジェクトのダウンロード
Git for Windowsを使って、以下のコマンドを実行します。実行できるとサンプルフォルダが複製されます。(Git for Windowsの初心者だったので、使い方に手間取りました……初心者の方はこのサイトを参考にインストール、初期設定してみてください。)
git clone https://github.com/Azure/azure-spatial-anchors-samples.git
cd ./azure-spatial-anchors-samples
次にAndroid Studioを開きます。リボンにあるFileから、Openを選択し、複製したサンプルフォルダのAndroid/Javaプロジェクトを開きます。その中から、Android/Java/app/src/main/java/com/microsoft/sampleandroid/AzureSpatialAnchorsManager.javaファイルを開きます。
ここで先ほどコピーした値を、ファイルに書き換えていきます。
SpatialAnchorsAccountKey フィールドはプライマリーキーに、SpatialAnchorsAccountId フィールドはアカウントID、
SpatialAnchorsAccountDomain フィールドはアカウントドメインに
それぞれset meを置き換えます。
データベースの作成
Azure Cosmos DBを作成します。
こちらも設定項目に指定はありません。ただしなるべく安く済ませるために、geo 冗長性、マルチリージョン書き込みオプションを 無効にしてください。
確認と作成をクリックして作成します。作成されてからリソースに移動し、接続文字列の値をコピーします。
サンプルフォルダ内のSharingService\Startup.csをVisual Studioを開きます。ファイルの先頭にある♯define INMEMORY_DEMO をコメントアウトします。
同様に、SharingService\appsettings.jsonを開きます。StorageConnectionStringプロパティの値を、コピーした接続文字列に変更します。
ファイルを全て保存できたらOKです。
アンカー共有サービスのデプロイ
サンプルフォルダ内にある、Sharing\SharingServiceSampleのプロジェクトSharingService.csprojをVisual Studioで開きます。
ソリューションエクスプローラー内にSharingServiceSampleプロジェクトが出ているので、右クリックで発行を選択します。App Service、発行の順に選択し、App Service の作成ウィンドウを開きます。
開けたらAzureにログインし、App Serviceプランを作成していきます。余計な料金がかからないように、サイズをFreeにすることをお忘れなく!
次に、Webアプリを作成して発行します。アプリ名を決定して、作成をクリックして作成していきます。リソースの作成が終わったら公開設定が出てくるので、発行をクリックするとアプリがブラウザで開けます。
https://<<アプリ名>>.azurewebsites.netとなっているURLはコピーしておいてください。
サンプルアプリのデプロイ
Android Studioでサンプル フォルダーから、Android/Java/app/src/main/java/com/microsoft/sampleandroid/SharedActivity.javaファイルを開きます。
SharedActivity.java ファイルのSharingAnchorsServiceUrlの値を、先ほどコピーしたURLにします。この時、URL をhttps://<<アプリ名>>.azurewebsites.net/api/anchorsのように、末尾にapi/anchorsを追記して変更します。
最後に、アプリをデバイスにデプロイします。Android Studioでアプリをデプロイするのが初めての場合は、AVD Managerからデバイスに合わせたAVD(アンドロイド仮想デバイス)を作成します。これを行わないと、アプリをデバイスで動かせないです。
Android Studioの上部に「app」と「自分のデバイス」が表示されていたら準備完了です。実行ボタン(再生ボタンのようなもの)をクリックすると、デバイスにビルドされます。
デバイスに表示される4つのボタンから、Sharedを選択してからCreateを選択すると、アンカーの作成を行います。作成したアンカーを呼び出すのはLocateです。
また、アンカーを保存・呼び出すのにはデバイスのインターネット接続が必須です。上手く保存できない時は接続状況も確認してみてください。
まとめ
これでアンカーを共有できるようになりました。
余談ですが、共有したいアンカーを選択するとそこに黄色の球体が出てくるのですが、保存完了すると緑色に変化します。ですが、保存されるのは黄色の球体です。