チュートリアル:セッションやデバイス間で空間アンカーを共有する

Azure Spatial Anchors は、クロスプラットフォーム対応の開発者向けサービスです。このサービスを使用すると、時間が経過した後でも複数のデバイス間で位置情報を保持するオブジェクトを使用して複合現実エクスペリエンスを作成できます。

このチュートリアルでは、Azure Spatial Anchors を使用してあるセッション中にアンカーを作成した後、同じデバイスまたは異なるデバイス上でそれらを探知します。 同じアンカーを、同じ場所にある複数のデバイスで同時に探知することもできます。

Animation showing spatial anchors that are created with a mobile device and used with a different device over the course of days.

このチュートリアルで学習する内容は次のとおりです。

  • アンカーを共有するために使用できる ASP.NET Core Web アプリを Azure にデプロイし、指定した期間、メモリ内にアンカーを格納する。
  • クイック スタートで提供されている Unity サンプルの AzureSpatialAnchorsLocalSharedDemo シーンを構成して、アンカー共有 Web アプリを利用する。
  • 1 つまたは複数のデバイスにアンカーをデプロイして実行する。

Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。

前提条件

このチュートリアルを開始する前に、以下の前提条件を満たしていることを確認します。

  • Azure Spatial Anchors の概要」を読んでいる。
  • 5 分間のクイック スタートのいずれかを完了している。

    Note

    Android (NDK) と iOS (Swift) のクイックスタートには現在、このチュートリアルで説明している機能は紹介されていません。

  • いずれかの基礎知識:
    • Android を使用している場合は、ARCore
    • iOS を使用している場合は、ARKit
  • Visual Studio 2019 以降と ASP.NET および Web の開発ワークロードがインストールされている Windows コンピューター。
  • .NET Core 3.1 SDK
  • アプリをデプロイして実行する 1 つまたは複数の次のデバイス:HoloLens、HoloLens 2、iOS、Android。

Note

このチュートリアルでは、Unity と ASP.NET Core Web アプリを使用しますが、ここでのアプローチは Azure Spatial Anchors 識別子を他の複数デバイス間で共有する方法の一例を示しているに過ぎません。 同じ目的を実現するために、他の言語やバックエンド テクノロジを使用することもできます。

Spatial Anchors リソースを作成する

Azure ポータルにアクセスします。

左側のウィンドウで、 [リソースの作成] を選択します。

検索ボックスを使用して、「Spatial Anchors」を検索します。

Screenshot showing the results of a search for Spatial Anchors.

[Spatial Anchors] を選択し、 [作成] を選択します。

[Spatial Anchors アカウント] ウィンドウで次を行います。

  • 通常の英数字を使用して一意のリソース名を入力します。

  • リソースをアタッチするサブスクリプションを選択します。

  • [新規作成] を選択して、リソース グループを作成します。 「myResourceGroup」と名前を付け、 [OK] を選択します。

    リソース グループとは、Web アプリ、データベース、ストレージ アカウントなどの Azure リソースのデプロイと管理に使用する論理コンテナーです。 たとえば、後から簡単な手順で一度にリソース グループ全体を削除することもできます。

  • リソースを配置する場所 (リージョン) を選択します。

  • [作成] を選択して、リソースの作成を開始します。

Screenshot of the Spatial Anchors pane for creating a resource.

リソースが作成されると、Azure portal に、デプロイが完了したことが表示されます。

Screenshot showing that the resource deployment is complete.

[リソースに移動] を選択します。 これでリソースのプロパティを表示できます。

リソースの [アカウント ID] 値は後で使用するためにテキスト エディターにコピーしておきます。

Screenshot of the resource properties pane.

また、リソースの [アカウント ドメイン] 値を後で使用するためにテキスト エディターにコピーします。

Screenshot showing the resource's account domain value.

[設定][アクセス キー] を選択します。 [主キー] 値の [アカウント キー] を後で使用するためにテキスト エディターにコピーします。

Screenshot of the Keys pane for the account.

サンプル プロジェクトのダウンロード

次のコマンドを実行して samples リポジトリを複製します。

git clone https://github.com/Azure/azure-spatial-anchors-samples.git
cd ./azure-spatial-anchors-samples

アンカー共有サービスをデプロイする

Visual Studio を開いてから、Sharing\SharingServiceSample フォルダー内のプロジェクトを開きます。

発行ウィザードを開く

ソリューション エクスプローラーで、SharingService プロジェクトを右クリックし、 [発行] を選択します。

発行ウィザードが起動します。

[App Service][発行] の順に選択し、[App Service の作成] ウィンドウを開きます。

Azure へのサインイン

Azure portal にサインインします。

[App Service の作成] ウィンドウで、 [アカウントの追加] をクリックし、Azure サブスクリプションにサインインします。 既にサインインしている場合、ドロップダウン リストからアカウントを選択します。

Note

既にサインインしている場合は、まだ [作成] を選択しないでください。

リソース グループを作成する

リソース グループとは、Web アプリ、データベース、ストレージ アカウントなどの Azure リソースのデプロイと管理に使用する論理コンテナーです。 たとえば、後から簡単な手順で一度にリソース グループ全体を削除することもできます。

[リソース グループ] の横にある [新規] をクリックします。

リソース グループに myResourceGroup という名前を付けて、 [OK] をクリックします。

App Service プランを作成する

App Service プランは、アプリのホストとなる Web サーバー ファームの場所、サイズ、機能を規定します。 1 つの App Service プランを共有するように Web アプリを構成することで、複数のアプリをホストするときのコストを抑えることができます。

App Service プランには、次の定義があります。

  • リージョン (例: 北ヨーロッパ、米国東部、東南アジア)
  • インスタンス サイズ (S、M、L)
  • スケール カウント (1 ~ 20 インスタンス)
  • SKU (Free、Shared、Basic、Standard、Premium)

[ホスティング プラン] の隣にある [新規] を選択します。

[ホスティング プランの構成] ウィンドウで、以下の設定を使用します。

設定 推奨値 説明
App Service プラン MySharingServicePlan App Service プランの名前
場所 米国西部 Web アプリがホストされているデータセンター
サイズ Free ホスティング機能を決める価格レベル

[OK] を選択します。

Web アプリを作成して発行する

[アプリ名] に一意のアプリ名を入力します。 有効な文字は a-z、0-9、ダッシュ (-) です。あるいは、自動的に生成された一意の名前をそのまま使用します。 Web アプリの URL は https://<app_name>.azurewebsites.net です。<app_name> には自分のアプリの名前を指定します。

[作成] をクリックして、Azure リソースの作成を開始します。

ウィザードの完了後に、Azure に ASP.NET Core Web アプリを発行してから、既定のブラウザーでアプリを開きます。

Screenshot of a published ASP.NET web app in Azure.

このセクションで使用したアプリ名は、形式 https://<app_name>.azurewebsites.net の URL プレフィックスとして使用されます。 後で使用するためにこの URL をテキスト エディターにコピーします。

サンプル アプリのデプロイ

Java Android サンプルでは、デバイス間での共有がサポートされています。

Android Studio でサンプル フォルダーから SharedActivity.java ファイルを開きます。

SharingAnchorsServiceUrl ファイルの SharingAnchorsServiceUrl の値として、前の手順で (ASP.NET Web アプリの Azure デプロイから) コピーした URL を入力します。

URL の index.htmlapi/anchors に置き換えます。 https://<app_name>.azurewebsites.net/api/anchors のようになります。

アプリをデバイスにデプロイします。

アプリが起動したら、 [Choose A Demo]\(デモの選択\) ウィンドウで、左右の矢印を使用して [LocalShare] オプションを選択します。 その後、 [Go!]\(実行\) をクリックします。

アプリ内の手順に従います。 [Create Share Anchor]\(アンカーの作成と共有\) または [Locate Shared Anchor]\(共有されたアンカーの配置\) を選択できます。

[Create Share Anchor]\(アンカーの作成と共有\) を使用すると、アンカーを作成して共有サービスに保存できます。 これに対して、それを共有サービスから取得するために使用できる ID が返されます。 お使いのデバイスまたは別のデバイスから、2 番目のシナリオである [Locate Shared Anchor]\(共有されたアンカーの検索\) を実行できます。

[Locate Shared Anchor]\(共有されたアンカーの検索\) を使用すると、前述の ID を入力することで、以前に共有されたアンカーを見つけることができます。 シナリオを選択すると、その後の操作がアプリから指示されます。 たとえば、環境情報を収集するためにデバイスをあちこちに移動させることを求められます。 あとで、環境内にアンカーを配置し、保存されるのを待機します。新しいセッションを開始してから、それを見つけます。

リソースをクリーンアップする

前の手順では、リソース グループ内に Azure リソースを作成しました。 これらのリソースが将来必要になると思わない場合は、リソース グループを削除してリソースを削除できます。

Azure portal メニューまたは [ホーム] ページから、 [リソース グループ] を選択します。 次に、 [リソース グループ] ページで [myResourceGroup] を選択します。

[myResourceGroup] ページで、一覧表示されたリソースが、削除しようとするリソースであることを確認します。

[リソース グループの削除] を選択し、確認のためテキスト ボックスに「myResourceGroup」と入力して、 [削除] を選択します。

次のステップ

このチュートリアルでは、ASP.NET Core Web アプリを Azure にデプロイし、Unity アプリを構成してデプロイしました。 そのアプリで空間アンカーを作成し、ASP.NET Core Web アプリを使用して他のデバイスと共有しました。

Azure Cosmos DB を使用して共有済みの空間アンカー識別子のストレージを永続化するように、ASP.NET Core Web アプリを改良できます。 Azure Cosmos DB サポートを追加すれば、ASP.NET Core Web アプリでアンカーを今日にも作成できるようになります。 次に、Web アプリに格納されているアンカー識別子を使用して、数日後再びアンカーを検索するようにアプリを設定できます。