2.Azure Storage の統合2. Integrating Azure storage

このチュートリアルでは、エンティティ データを Azure Table Storage に、そしてサムネイル画像を Azure Blob Storage に保存する方法について学習します。In this tutorial, you will learn how to save entity data to Azure Table storage and thumbnail images to Azure Blob storage. この機能を使用すると、ID、名前、サムネイル画像などのデータを含む "追跡オブジェクト" を、セッションおよびデバイスを介してクラウドとの間で保存および取得することができます。This feature will allow us to store and retrieve Tracked Objects with data like ID, Name, Thumbnail Image, etc. across sessions and devices to the cloud.

目標Objectives

  • Azure Storage の基本について学習するLearn the basics about Azure storage
  • Table Storage に対してデータの格納、変更、および取得を行う方法を学習するLearn how to store, modify and retrieve data from Table storage
  • Blob Storage に対して画像の格納および削除を行う方法を学習するLearn how to store and delete images from Blob storage

Azure Storage についてUnderstanding Azure storage

Azure Storage は、クラウドでの Microsoft のストレージ ソリューションであり、多くのシナリオと要件に対応できます。Azure storage is a Microsoft storage solution on the cloud that can cover many scenarios and requirements. 非常に大規模なスケーリングが可能で、開発者が簡単に使用できます。It can scale massively and is easily approachable by developers. すべてのサービスを、Azure ストレージ アカウント の包括的なサービスとして利用することができます。All services can be consumed under the umbrella of an Azure storage Account. このユース ケースでは、Table StorageBlob Storage を使用します。For our use case we will use Table storage and Blob storage.

詳細については、Azure ストレージ サービスに関するページを参照してください。Learn more about Azure storage services.

Azure Table StorageAzure Table storage

このサービスを使用すると、NoSQL 形式でデータを格納することができます。このプロジェクトでは、それを使用して、名前、説明、空間アンカー ID など、"追跡オブジェクト" に関する情報を格納します。This services allows us to store data in a NoSQL fashion, in this project we will use it to store information about the Tracked Object such as: name, description, spatial anchor id, and more.

デモ アプリケーションのコンテキストでは、2 つのテーブルが必要です。1 つは、プロジェクトに関する情報とトレーニング済みモデルの状態に関する情報 (詳細についてはチュートリアル「Azure Custom Vision の統合」を参照) を格納するテーブルであり、もう 1 つは "追跡オブジェクト" に関する情報を格納するものです。In context of the demo application, you need two Tables, one to store information about the project with information about the state of trained models more about that in the (Integrating Azure Custom Vision) tutorial and a second table to store information about Tracked Objects.

詳細については、Azure Table Storage に関するページを参照してください。Learn more about Azure Table storage.

Azure Blob StorageAzure Blob storage

このサービスでは、大規模なバイナリ ファイルを格納することができます。"追跡オブジェクト" について撮影した写真をサムネイルとして格納するために、これを使用します。This service allows to store large binary files, you will use this to store photos taken for Tracked Objects as thumbnail. デモ アプリケーションでは、画像を格納するために、BLOB コンテナーが 1 つ必要です。For of the demo application you need one Blob Container to store the images.

詳細については、Azure Blob Storage に関するページを参照してください。Learn more about Azure Blob storage.

Azure Storage の準備Preparing Azure Storage

Azure ストレージ サービスを利用するには、Azure ストレージ アカウントが必要です。To consume the Azure storage services you will need an Azure storage account. ストレージ アカウントを作成するには、ストレージ アカウントの作成に関するページを参照してください。To create a storage account, see Create a storage account. ストレージ アカウントの詳細については、Azure ストレージ アカウントの概要に関するページを参照してください。To learn more about storage accounts, see Azure storage account overview.

ストレージ アカウントを作成したら、このレッスンの次のセクションで必要となる接続文字列を Azure portal から取得できます。Once you have a storage account, you can retrieve the connection string from the Azure Portal which will be needed in the next section of this lesson.

オプションの Azure Storage ExplorerOptional Azure Storage Explorer

アプリケーション内の UI からデータに関するすべての変更を表示および確認することができますが、Azure Storage Explorer をインストールすることをお勧めします。While you can see and verify all data changes from the UI inside the application, we recommend to install Azure Storage Explorer. このツールを使用すると、Azure Storage 内のデータを視覚的に確認できるため、デバッグを行うときや学習するときに大いに役立ちます。This tool allows you to visually see the data in the Azure storage and is of great help when debugging and learning.

ヒント

Unity エディター内からテストする場合は、次のローカル エミュレーターを使用できます。For testing from inside the Unity editor you can use a local emulator:

シーンの準備Preparing the scene

[階層] ウィンドウで、DataManager オブジェクトを見つけて選択します。In the Hierarchy window, locate the DataManager object and select it.

DataManager スクリプト コンポーネント構成フィールドがインスペクターに表示された Unity

[インスペクター] ウィンドウから、DataManager (script) コンポーネントは Azure Storage 関連のすべての設定が保持される場所であることがわかります。From the Inspector window you will see that the DataManager (script) component is where all Azure storage related settings are kept. 関連する設定はすべて、既に設定されているので、"接続文字列" フィールドを、Azure portal から取得できるものに置き換えるだけで済みます。All relevant settings are already set, you just need to replace the Connection String field with the one you can retrieve from the Azure Portal. ローカルの Azure ストレージ エミュレーター ソリューションを使用している場合は、既に指定されている "接続文字列" を保持できます。If you are using a local Azure storage emulator solution, then you can keep the already provided Connection String.

DataManager (スクリプト) は、Table Storage および Blob Storage とやりとりすることが役割であり、UI コンポーネント上の他のコントローラー スクリプトによって利用されます。The DataManager (script) is responsible for talking to the Table storage and Blob storage which is consumed by other controller scripts on the UI components.

Azure Table Storage に対するデータの書き込みと読み取りWriting and reading data from Azure Table storage

すべての準備が整ったら、"追跡オブジェクト" を作成します。With everything prepared it's time to create a Tracked Object.

ご利用の HoloLens 上でアプリケーションを開き、 [オブジェクトの設定] をクリックします。EnterObjectName オブジェクトが階層内でどのようにアクティブになるかがわかります。Open the application on your HoloLens, click on the Set Object and you will see how the EnterObjectName object will become active in the hierarchy. このメニューで、"検索バー" をクリックし、"追跡オブジェクト" に付ける名前を入力します。In this menu click on the search bar and type in the name you want to give the Tracked Object. 名前を指定したら、 [オブジェクトの設定] ボタンをクリックします。After providing a name click on the Set object button. これにより、Azure Table Storage に "追跡オブジェクト" が作成され、 [オブジェクト カード] が表示されるようになります。This will create the Tracked Object on the Azure Table storage and you will see now the Object Card.

この [オブジェクト カード] は、"追跡オブジェクト" の UI 表現であり、このチュートリアル シリーズでは重要な役割を何度も果たします。This Object Card is a UI representation of the Tracked Object and will have an important role several times in this tutorial series.

次に、説明 "テキスト ボックス" をクリックし、「Car」と入力します。その後、 [保存] をクリックして、変更を保存します。Now click on the description text box and type in "Car", after that click on the Save button to save the changes. アプリケーションを停止してから、再実行します。Stop the application and rerun it.

今度は、 [オブジェクトの検索] をクリックし、以前 "追跡オブジェクト" を作成するときに使用した名前を "検索バー" に入力します。Now this time click on Search Object and type in the search bar the name you have used before when creating the Tracked Object. すべてのデータを含む [オブジェクト カード]Azure Table Storage から取得されていることがわかります。You will see that the Object Card with all the data is retrieved from the Azure Table storage.

[オブジェクト カード] を閉じて、新しい "追跡オブジェクト" を作成し、そのデータを編集することも自由にできます。Feel free to close the Object Card and create new Tracked Objects and edit their data.

ヒント

Azure Storage Explorer をインストール済みである場合、objects テーブルを参照すると、"追跡対象" オブジェクトが作成されていることがわかります。If you have installed the Azure Storage Explorer then look into the objects table and you will see there the created Tracked Object.

Azure Blob Storage への画像のアップロードおよびダウンロードUploading and Download image from Azure Blob storage

このセクションでは、Azure Blob Storage を使用して、"追跡オブジェクト" のサムネイルとして使用される画像をアップロードおよびダウンロードします。In this section you will use the Azure Blob storage to upload and download images that will be used as thumbnails for Tracked Objects.

注意

このチュートリアルでは、アプリケーションによって、写真を撮影して、画像を BLOB ストレージにアップロードします。In this tutorial the application will take photos to upload images to the Blob storage. それを Unity エディターからローカルに実行している場合は、Web カメラがコンピューターに接続されていることを確認してください。If you are running this locally from the Unity editor, then make sure that you have a webcam connected to your computer.

ご利用の HoloLens 上でアプリケーションを開き、 [Set Object](オブジェクトの設定) をクリックし、"検索バー" に「Car」という名前を入力します。Open the application on your HoloLens, click on Set Object and type in the search bar the name "Car". これで、 [オブジェクト カード] が表示されるので、 [カメラ] ボタンをクリックすると、AirTap を実行して写真を撮るように指示されます。Now you should see the Object Card, click on the Camera button and you will be instructed to do an AirTap to take a photo. 写真を撮影すると、アクティブなアップロードについて通知するメッセージが表示され、しばらくすると、プレースホルダーが以前にあった場所に、その画像が表示されます。After taking a photo you will see a message that informs you about the active upload and after a while the image should appear where the placeholder was before.

次に、アプリケーションを再実行し、"追跡オブジェクト" を検索します。前にアップロードした画像がサムネイルとして表示されます。Now rerun the application and search for the Tracked Object and the previously uploaded image should appear as thumbnail.

Azure Blob Storage から画像を削除するDeleting image from Azure Blob storage

前のセクションでは、Azure Blob Storage に新しい画像をアップロードしました。このセクションでは、"追跡オブジェクト" のサムネイル画像を削除します。In the previous section you uploaded new images to Azure Blob storage, in this section you will delete an image thumbnail for Tracked Objects.

ご利用の HoloLens 上でアプリケーションを開き、 [Set Object](オブジェクトの設定) をクリックし、"検索バー" に「Car」という名前を入力します。Open the application on your HoloLens, click on Set Object and type in the search bar the name "Car". これで、サムネイル画像を伴って [オブジェクト カード] が表示されるので、 [削除] ボタンをクリックします。Now you should see the Object Card with the thumbnail image, click on the Delete button. サムネイル画像がプレースホルダー画像に置き換えられていることがわかります。You will notice that the thumbnail image is replaced by the placeholder image.

次に、アプリケーションを再実行して、前に削除したサムネイルの "追跡オブジェクト" を検索するとプレースホルダー画像のみが表示されます。Now rerun the application and search for the Tracked Object of the previously deleted thumbnail, you should only see the placeholder image.

結論Congratulations

このチュートリアルでは、Azure ストレージ サービスを使用して非構造化データ (ここでは、クラウド上の HoloLens 2 デモ アプリケーション用の "追跡オブジェクト" や、サムネイル画像の形式のバイナリなど) を保持する方法について学習しました。In this tutorial you learned how Azure storage services can be used to persist unstructured data, like in our case Tracked Objects and binaries in form of thumbnail images for the HoloLens 2 demo application on the cloud.

次のチュートリアルでは、Azure Custom Vision を使用して、"追跡オブジェクト" に関連付けられている画像を検出する方法を学習します。In the next tutorial you will learn how to use Azure Custom Vision to detect images associated with a Tracked Object.