演習 - Azure Storage を統合する
このモジュールでは、エンティティ データを Azure Table Storage に保存し、サムネイル画像を Azure Blob Storage に保存する方法について学習します。 この機能を使用すると、ID、名前、サムネイル画像などのデータを含む追跡対象オブジェクトをセッションおよびデバイスを介してクラウドとの間で格納および取得することができます。
Azure Storage の概要
Azure Storage は、クラウドでの Microsoft のストレージ ソリューションであり、多くのシナリオと要件に対応できます。 非常に大規模なスケーリングが可能で、開発者が簡単に使用できます。 すべてのサービスは、Azure ストレージ アカウントの傘下で使用できます。 このユース ケースでは、"Table ストレージ" と "BLOB ストレージ" を使用します。
詳細については、Azure ストレージ サービスに関するページを参照してください。
Azure Table Storage
このサービスを使用すると、データを NoSQL 方式で格納できます。 このプロジェクトでは、名前、説明、空間アンカー ID などの "追跡オブジェクト" に関する情報を格納するために使用します。
このデモ アプリケーションのコンテキストでは、2 つのテーブルが必要です。トレーニング済みモデルの状態についての情報を含むプロジェクトに関する情報を格納するもの (詳細については、このモジュールの後半のAzure Custom Vision の統合に関する演習を参照) と、追跡対象オブジェクトに関する情報を格納するための 2 番目のテーブルです。
詳細については、Azure Table Storage に関するページを参照してください。
Azure Blob Storage
このサービスを使用すると、大きなバイナリ ファイルを格納できます。 追跡対象オブジェクト用に撮影した写真をサムネイルとして格納するには、Azure Blob Storage を使用します。
このデモ アプリケーションの目的上、画像を格納するために 1 つの BLOB コンテナーが必要です。
Azure Blob Storage の詳細については、こちらを参照してください。
Azure Storage を準備する
Azure ストレージ サービスを使用するには、Azure ストレージ アカウントが必要です。 ストレージ アカウントを作成するには、ストレージ アカウントの作成に関するページを参照してください。 ストレージ アカウントの詳細については、「ストレージ アカウントの概要」を参照してください。
ストレージ アカウントを作成したら、Azure portal から接続文字列を取得できます。 これは、[セキュリティとネットワーク]>[アクセス キー] で確認できます。 このレッスンの次のセクションでその接続文字列が必要になります。
オプションの Azure Storage Explorer
アプリケーション内の UI ですべてのデータ変更を表示して確認できますが、Azure Storage Explorer をインストールすることをお勧めします。 このツールを使用すると、Azure Storage のデータを視覚化できます。これは、デバッグや学習を行うときに非常に役立ちます。
ヒント
Unity エディター内からテストする場合は、次のローカル エミュレーターを使用できます。
- Windows では、Azurite エミュレーターを使用できます。
- MacOS または Linux では、Docker に Azurite Docker イメージを使用できます。
シーンを準備する
[階層] ウィンドウで、DataManager オブジェクトを見つけて選択します。
[インスペクター] ウィンドウの DataManager (スクリプト) コンポーネントには、Azure Storage に関連するすべての設定値が含まれています。 関連するすべての設定値は既に設定されているので、[接続文字列] フィールドを Azure portal から取得したものに置き換えるだけで済みます。 ローカルの Azure ストレージ エミュレーター ソリューションを使用している場合は、既に指定されている接続文字列をそのまま使用するか、空のままにすることができます。
DataManager (スクリプト) は、Table Storage と Blob Storage との通信を担当し、UI コンポーネント上の他のコントローラー スクリプトによって使用されます。
Azure Table Storage のデータを読み書きする
Note
HoloLens 2 のビルドとテストは必須ではありません。 HoloLens デバイスがない場合は、HoloLens 2 Emulator でテストできます。 デバイスは HoloLens.com で購入できます。
すべての準備が整ったので、"追跡対象オブジェクト" を作成します。
HoloLens でアプリケーションを開き、[オブジェクトの設定] を選択します。 EnterObjectName オブジェクトが階層内でアクティブになります。 検索バーを選択し、追跡対象オブジェクトに付ける名前を入力します。 名前を指定した後、[オブジェクトの設定] ボタンを選択します。 これにより、追跡対象オブジェクトが Azure Table Storage に作成されます。 [オブジェクト カード] が表示されます。
この [オブジェクト カード] は、''追跡オブジェクト'' の UI 表現であり、このチュートリアル シリーズでは重要な役割を持ちます。
ここで、[説明] テキスト ボックスを選択して「Car」と入力し、[保存] ボタンを選択して変更内容を保存します。 アプリケーションを停止してから、再実行します。
[オブジェクトの検索] を選択し、検索バーに追跡対象オブジェクトを作成するときに先ほど入力した名前を入力します。 Azure Table Storage からすべてのデータが取得された [オブジェクト カード] が表示されます。
自由に [オブジェクト カード] を閉じ、新しい ''追跡オブジェクト'' を作成し、そのデータを編集します。
ヒント
Azure Storage Explorer をインストールした場合は、[オブジェクト] テーブルで追跡対象オブジェクトを見つけることができます。
Azure Blob Storage から画像をアップロードおよびダウンロードする
このセクションでは、Azure Blob Storage を使用して "追跡オブジェクト" のサムネイルとして使用する画像をアップロードおよびダウンロードします。
Note
このチュートリアルでは、Azure Blob Storage に画像をアップロードするためにアプリケーションで写真を撮ります。 Unity エディターからローカルでこれを実行する場合は、Web カメラがコンピューターに接続されていることを確認してください。
HoloLens でアプリケーションを開き、[オブジェクトの設定] を選択して、検索バーに「Car」と入力します。 [オブジェクト カード] で、[カメラ] ボタンを選択します。 AirTap を行って写真を撮るように指示されます。 写真を撮った後、アクティブなアップロードについて通知するメッセージが表示され、しばらくするとプレースホルダーが以前あった場所にその画像が表示されるはずです。
ここで、アプリケーションを再実行し、追跡対象オブジェクトを検索します。 以前にアップロードした画像がサムネイルとして表示されるはずです。
Azure Blob Storage から画像を削除する
前のセクションでは、新しい画像を Azure Blob Storage にアップロードしました。 このセクションでは、''追跡オブジェクト'' の画像サムネイルを削除します。
HoloLens でアプリケーションを開き、[オブジェクトの設定] を選択して、検索バーに「Car」と入力します。 サムネイル画像が示された [オブジェクト カード] で、[削除] ボタンを選択します。 サムネイル画像がプレースホルダー画像に置き換えられます。
ここで、アプリケーションを再実行し、先ほど削除したサムネイルの追跡対象オブジェクトを検索します。 プレースホルダーの画像のみが表示されるはずです。