チュートリアル: Azure Digital Twins をデプロイし、空間グラフを構成するTutorial: Deploy Azure Digital Twins and configure a spatial graph

Azure Digital Twins サービスを使用すると、人、場所、デバイスを一貫した空間システムにまとめることができます。You can use the Azure Digital Twins service to bring together people, places, and devices in a coherent spatial system. この一連のチュートリアルでは、Azure Digital Twins を使用して、温度と空気の質が最適な状態の部屋の使用を検出する方法を示します。This series of tutorials demonstrates how to use Azure Digital Twins to detect room occupancy with optimal conditions of temperature and air quality.

これらのチュートリアルでは、.NET コンソール アプリケーションを使用して、オフィス ビルのシナリオを構築する手順を説明します。These tutorials will walk you through a .NET console application to build a scenario of an office building. このビルには、複数のフロアがあり各フロアに部屋があります。The building has multiple floors and rooms within each floor. それぞれの部屋には、モーション、周囲温度、空気の質を検出するセンサーを備えたデバイスがあります。The rooms contain devices with attached sensors that detect motion, ambient temperature, and air quality.

Azure Digital Twins サービスを使用して、建物内の物理的なエリアとエンティティをデジタル オブジェクトとして複製する方法を学習します。You'll learn how to replicate the physical areas and entities in the building as digital objects by using the Azure Digital Twins service. 別のコンソール アプリケーションを使用して、デバイス イベントをシミュレートします。You'll simulate device events by using another console application. 次に、これらの物理的なエリアとエンティティで発生するイベントをほぼリアルタイムで監視する方法を学習します。Then, you'll learn how to monitor the events that come from these physical areas and entities in near real time.

オフィス管理者は、この情報を使用して、この建物内で働く従業員が最適な条件の会議室を予約するのを支援することができます。An office administrator can use this information to help an employee working in this building to book meeting rooms with optimal conditions. オフィス施設管理者は、お客様の設定を使用して、部屋の使用傾向を調べたり、メンテナンスのために作業環境を監視したりすることができます。An office facilities manager can use your setup to get usage trends of the rooms, and to monitor working conditions for maintenance purposes.

このシリーズの最初のチュートリアルで学習する内容は次のとおりです。In the first tutorial of this series, you learn how to:

  • Digital Twins をデプロイする。Deploy Digital Twins.
  • アプリにアクセス許可を付与する。Grant permissions to your app.
  • Digital Twins サンプル アプリを変更する。Modify a Digital Twins sample app.
  • 建物をプロビジョニングする。Provision your building.

これらのチュートリアルで使用および変更するサンプルは、概念についてさらに詳しく説明されている、空き部屋を見つけるためのクイック スタートのサンプルと同じです。These tutorials use and modify the same samples that the quickstart to find available rooms uses, for a more detailed and in-depth coverage of the concepts.

前提条件Prerequisites

  • Azure サブスクリプション。An Azure subscription. Azure アカウントがない場合は、無料アカウントを作成します。If you don’t have an Azure account, create a free account.

  • .NET Core SDK。The .NET Core SDK. これらのチュートリアルで使用される Azure Digital Twins サンプルは、C# で記述されています。The Azure Digital Twins samples used in these tutorials are written in C#. サンプルをビルドして実行する開発マシンには、必ず .NET Core SDK バージョン 2.1.403 以上をインストールしておいてください。Make sure to install .NET Core SDK version 2.1.403 or later on your development machine to build and run the sample. コマンド ウィンドウで dotnet --version を実行して、適切なバージョンがマシンにインストールされていることを確認してください。Check that the right version is installed on your machine by running dotnet --version in a command window.

  • Visual Studio Code。サンプル コードを確認するために使用します。Visual Studio Code to explore the sample code.

Digital Twins をデプロイするDeploy Digital Twins

このセクションの手順を使用して、Azure Digital Twins サービスの新しいインスタンスを作成します。Use the steps in this section to create a new instance of the Azure Digital Twins service. 作成できるインスタンスは、サブスクリプションごとに 1 つだけです。Only one instance can be created per subscription. 実行中のインスタンスが既にある場合は、スキップして次のセクションに進んでください。Skip to the next section if you already have one running.

  1. Azure Portal にサインインします。Sign in to the Azure portal.

  2. 左側のウィンドウで、[リソースの作成] を選択します。From the left pane, select Create a resource. digital twins を検索し、[Digital Twins (プレビュー)] を選択します。Search for digital twins, and select Digital Twins (preview). [作成] を選択してデプロイ プロセスを開始します。Select Create to start the deployment process.

    新しい Digital Twins インスタンスを作成するための選択

  3. [Digital Twins] ウィンドウで、次の情報を入力します。In the Digital Twins pane, enter the following information:

    • [リソース名]:Digital Twins インスタンスの一意の名前を作成します。Resource Name: Create a unique name for your Digital Twins instance.

    • サブスクリプション:この Digital Twins インスタンスを作成するために使用するサブスクリプションを選択します。Subscription: Choose the subscription that you want to use to create this Digital Twins instance.

    • [リソース グループ]:Digital Twins インスタンスのリソース グループを選択または作成します。Resource group: Select or create a resource group for the Digital Twins instance.

    • [場所]:使用しているデバイスに最も近い場所を選択します。Location: Select the closest location to your devices.

      情報が入力されている [Digital Twins] ウィンドウ

  4. Digital Twins の情報を確認してから、[作成] を選択します。Review your Digital Twins information, and then select Create. Digital Twins インスタンスが作成されるまでに数分かかる場合があります。Your Digital Twins instance might take a few minutes to be created. [通知] ウィンドウで進行状況を監視できます。You can monitor the progress in the Notifications pane.

  5. Digital Twins インスタンスの [概要] ウィンドウを開きます。Open the Overview pane of your Digital Twins instance. [管理 API] の下のリンクに注目します。Note the link under Management API.

    [管理 API] の URL は、https://yourDigitalTwinsName.yourLocation.azuresmartspaces.net/management/swagger という形式です。The Management API URL is formatted as https://yourDigitalTwinsName.yourLocation.azuresmartspaces.net/management/swagger. この URL では、インスタンスに適用される Azure Digital Twins REST API のドキュメントが表示されます。This URL takes you to the Azure Digital Twins REST API documentation that applies to your instance. この API ドキュメントを読んで使用する方法については、「How to use Azure Digital Twins Swagger (Azure Digital Twins Swagger の使用方法)」を参照してください。Read How to use Azure Digital Twins Swagger to learn how to read and use this API documentation.

    [管理 API] の URL を https://yourDigitalTwinsName.yourLocation.azuresmartspaces.net/management/api/v1.0/ という形式に変更します。Modify the Management API URL to this format https://yourDigitalTwinsName.yourLocation.azuresmartspaces.net/management/api/v1.0/. アプリケーションは、変更された URL をベース URL として使用してインスタンスにアクセスします。Your application will use the modified URL as the base URL to access your instance. この変更した URL を一時ファイルにコピーします。Copy this modified URL to a temporary file. これは次のセクションで必要になります。You'll need this in the next section.

    管理 API

アプリにアクセス許可を付与するGrant permissions to your app

Digital Twins では、Azure Active Directory (Azure AD) を使用してサービスに対する読み取り/書き込みアクセスを制御します。Digital Twins uses Azure Active Directory (Azure AD) to control read/write access to the service. お客様の Digital Twins インスタンスに接続する必要のあるアプリケーションは、Azure AD に登録しなければなりません。Any application that needs to connect with your Digital Twins instance must be registered with Azure AD. このセクションの手順では、サンプル アプリを登録する方法を示します。The steps in this section show how to register your sample app.

既にアプリの登録がある場合は、それをサンプルに再利用することができます。If you already have an app registration, you can reuse it for your sample. ただし、このセクションを参照して、アプリの登録が適切に構成されていることを確認してください。However, browse through this section to make sure your app registration is configured correctly.

  1. Azure portal で、左側のウィンドウの [Azure Active Directory] を開き、[プロパティ] ウィンドウを開きます。In the Azure portal, open Azure Active Directory from the left pane, and then open the Properties pane. ディレクトリ ID を一時ファイルにコピーします。Copy the Directory ID to a temporary file. この値は、次のセクションでサンプル アプリケーションを構成する際に使用します。You'll use this value to configure a sample application in the next section.

    Azure Active Directory のディレクトリ ID

  2. [アプリの登録] ウィンドウを開き、[新しいアプリケーションの登録] ボタンを選択します。Open the App registrations pane, and then select the New application registration button.

    [アプリの登録] ウィンドウ

  3. [名前] ボックスに、このアプリ登録の表示名を入力します。Give a friendly name for this app registration in the Name box. [アプリケーションの種類][ネイティブ] を選択し、[リダイレクト URI]https://microsoft.com を選択します。Choose Application type as Native, and Redirect URI as https://microsoft.com. 作成 を選択します。Select Create.

    [作成] ウィンドウ

  4. 登録されたアプリを開き、[アプリケーション ID] フィールドの値を一時ファイルにコピーします。Open the registered app, and copy the value of the Application ID field to a temporary file. この値により、Azure Active Directory アプリが識別されます。This value identifies your Azure Active Directory app. アプリケーション ID は、次のセクションでサンプル アプリケーションを構成する際に使用します。You'll use the application ID to configure your sample application in the following sections.

    Azure Active Directory のアプリケーション ID

  5. アプリ登録ウィンドウを開きます。Open your app registration pane. [設定] > [必要なアクセス許可] の順に選択します。その後、次の操作を行います。Select Settings > Required permissions, and then:

    a.a. 左上にある [追加] を選択して、[API アクセスの追加] ウィンドウを開きます。Select Add on the upper left to open the Add API access pane.

    b.b. [API を選択します] を選択し、Azure Digital Twins を検索します。Select Select an API and search for Azure Digital Twins. 検索で API が見つからない場合は、代わりに Azure Smart Spaces を検索します。If your search doesn't locate the API, search for Azure Smart Spaces instead.

    c.c. [Azure Digital Twins (Azure Smart Spaces Service)] オプションを選択し、[選択] を選択します。Select the Azure Digital Twins (Azure Smart Spaces Service) option and choose Select.

    d.d. [アクセス許可の選択] を選択します。Choose Select permissions. [読み取り/書き込みアクセス] の委任されたアクセス許可チェック ボックスをオンにし、[選択] を選択します。Select the Read/Write Access delegated permissions check box, and choose Select.

    e.e. [API アクセスの追加] ウィンドウで、[完了] を選択します。Select Done in the Add API access pane.

    f.f. [必要なアクセス許可] ウィンドウで、[アクセス許可の付与] ボタンを選択し、表示される確認メッセージに同意します。In the Required permissions pane, select the Grant permissions button, and accept the acknowledgement that appears.

    [必要なアクセス許可] ウィンドウ

Digital Twins サンプルを構成するConfigure the Digital Twins sample

このセクションでは、Digital Twins REST API と通信する Azure Digital Twins アプリケーションについて説明します。This section walks you through an Azure Digital Twins application that communicates with the Digital Twins REST APIs.

サンプルのダウンロードDownload the sample

空き部屋を見つけるためのクイック スタート用に既にサンプルをダウンロードしている場合は、これらの手順をスキップできます。If you already have the samples downloaded for the quickstart to find available rooms, you can skip these steps.

  1. Digital Twins .NET サンプルをダウンロードします。Download the Digital Twins .NET samples.
  2. お客様のマシン上に zip フォルダーの内容を展開します。Extract the contents of the zip folder on your machine.

サンプルの確認Explore the sample

Visual Studio Code で、展開されたサンプル フォルダー内の digital-twins-samples-csharp\digital-twins-samples.code-workspace ファイルを開きます。In the extracted sample folder, open the file digital-twins-samples-csharp\digital-twins-samples.code-workspace in Visual Studio Code. ここには次の 2 つのプロジェクトが含まれています。It contains two projects:

  • プロビジョニング サンプル occupancy-quickstart を使用すると、空間インテリジェンス グラフを構成およびプロビジョニングできます。You can use the provisioning sample occupancy-quickstart to configure and provision a spatial intelligence graph. このグラフは、物理空間とそこに含まれるリソースのデジタル化画像です。This graph is the digitized image of your physical spaces and the resources in them. これには、スマート ビルのためのオブジェクトを定義するオブジェクト モデルが使用されています。It uses an object model, which defines objects for a smart building. Digital Twins オブジェクトと REST API の完全な一覧については、この REST API ドキュメントまたはお客様のインスタンス用に作成された Management API URL を参照してください。For a complete list of Digital Twins objects and REST APIs, visit this REST API documentation or the Management API URL that was created for your instance.

    サンプルを確認し、サンプルと Digital Twins インスタンスの通信のしくみを見るには、src\actions フォルダーから開始できます。To explore the sample to see how it communicates with your Digital Twins instance, you can start with the src\actions folder. このフォルダー内のファイルによって、これらのチュートリアルで使用するコマンドが実装されます。The files in this folder implement the commands that you'll use in these tutorials:

    • provisionSample.cs ファイルでは、空間グラフのプロビジョニング方法が示されます。The provisionSample.cs file shows how to provision your spatial graph.
    • getSpaces.cs ファイルでは、プロビジョニングされた空間に関する情報が取得されます。The getSpaces.cs file gets information about the provisioned spaces.
    • getAvailableAndFreshSpaces.cs ファイルでは、ユーザー定義関数と呼ばれるカスタム関数の結果が取得されます。The getAvailableAndFreshSpaces.cs file gets the results of a custom function called a user-defined function.
    • createEndpoints.cs ファイルでは、他のサービスと対話するためのエンドポイントが作成されます。The createEndpoints.cs file creates endpoints to interact with other services.
  • device-connectivity シミュレーション サンプルを使用すると、センサー データがシミュレートされ、お客様の Digital Twins インスタンス用にプロビジョニングされた IoT ハブにそのデータが送信されます。The simulation sample device-connectivity simulates sensor data and sends it to the IoT hub that's provisioned for your Digital Twins instance. このサンプルは、空間グラフをプロビジョニングした後の次のチュートリアルで使用します。You'll use this sample in the next tutorial after you provision your spatial graph. このサンプルを構成するために使用されるセンサーとデバイスの識別子は、グラフのプロビジョニングに使用するものと同じである必要があります。The sensor and device identifiers that you use to configure this sample should be the same as what you'll use to provision your graph.

プロビジョニング サンプルの構成Configure the provisioning sample

  1. コマンド ウィンドウを開き、ダウンロードしたサンプルに移動します。Open a command window and go to the downloaded sample. 次のコマンドを実行します。Run the following command:

    cd occupancy-quickstart/src
    
  2. 次のコマンドを実行して、依存関係をサンプル プロジェクトに復元します。Restore dependencies to the sample project by running this command:

    dotnet restore
    
  3. Visual Studio Code で occupancy-quickstart プロジェクトの appSettings.json ファイルを開きます。In Visual Studio Code, open the appSettings.json file in the occupancy-quickstart project. 次の値を更新します。Update the following values:

    • ClientId: Azure AD アプリ登録のアプリケーション ID を入力します。ClientId: Enter the application ID of your Azure AD app registration. この ID は、アプリのアクセス許可の設定に関するセクションでメモしたものです。You noted this ID in the section where you set app permissions.
    • Tenant: Azure AD テナントのディレクトリ ID を入力します。Tenant: Enter the directory ID of your Azure AD tenant. この ID も、アプリのアクセス許可の設定に関するセクションでメモしたものです。You also noted this ID in the section where you set app permissions.
    • BaseUrl: Digital Twins インスタンスの URL を入力します。BaseUrl: Enter the URL of your Digital Twins instance. この URL を取得するには、URL https://yourDigitalTwinsName.yourLocation.azuresmartspaces.net/management/api/v1.0/ 内のプレースホルダーをお客様のインスタンスの値に置き換えます。To get this URL, replace the placeholders in this URL with values for your instance: https://yourDigitalTwinsName.yourLocation.azuresmartspaces.net/management/api/v1.0/. また、デプロイに関するセクションに示されている Management API URL を変更することによってもこの URL を取得できます。You can also get this URL by modifying the Management API URL from the deployment section. swagger/api/v1.0/ に置き換えてください。Replace swagger/ with api/v1.0/.
  4. サンプルを使用して確認できる Digital Twins の機能の一覧を表示します。See a list of Digital Twins features that you can explore by using the sample. 次のコマンドを実行します。Run the following command:

    dotnet run
    

プロビジョニング プロセスを理解するUnderstand the provisioning process

このセクションでは、サンプルで建物の空間グラフがどのようにプロビジョニングされるかを説明します。This section shows how the sample provisions a spatial graph of a building.

Visual Studio Code で、occupancy-quickstart\src\actions フォルダーに移動し、provisionSample.cs ファイルを開きます。In Visual Studio Code, browse to the occupancy-quickstart\src\actions folder and open the file provisionSample.cs. 次の関数に注目してください。Note the following function:

public static async Task<IEnumerable<ProvisionResults.Space>> ProvisionSample(HttpClient httpClient, ILogger logger)
{
    IEnumerable<SpaceDescription> spaceCreateDescriptions;
    using (var r = new StreamReader("actions/provisionSample.yaml"))
    {
        spaceCreateDescriptions = await GetProvisionSampleTopology(r);
    }

    var results = await CreateSpaces(httpClient, logger, spaceCreateDescriptions, Guid.Empty);

    Console.WriteLine($"Completed Provisioning: {JsonConvert.SerializeObject(results, Formatting.Indented)}");

    return results;
}

この関数では、同じフォルダー内の provisionSample.yaml が使用されています。This function uses provisionSample.yaml in the same folder. このファイルを開き、オフィス ビルの階層が VenueFloorAreaRooms となっている点に注目してください。Open this file, and note the hierarchy of an office building: Venue, Floor, Area, and Rooms. これらの物理空間のいずれにも、devicessensors を含めることができます。Any of these physical spaces can contain devices and sensors. 各エントリには、Floor、Room など、あらかじめ定義された type があります。Each entry has a predefined type—for example, Floor, Room.

サンプルの yaml ファイルでは、Default Digital Twins オブジェクト モデルを使用して空間グラフが表示されます。The sample yaml file shows a spatial graph that uses the Default Digital Twins object model. このモデルでは、ほとんどの型に汎用的な名前が与えられています。This model provides generic names for most types. 建物であれば、汎用的な名前で十分です。Generic names are sufficient for a building. たとえば、SensorDataType の Temperature、SpaceBlobType の Mapがあります。Examples are Temperature for SensorDataType, and Map for SpaceBlobType. 空間型の例としては、FocusRoom、ConferenceRoom などのサブタイプを備えた Room があります。An example space type is Room with subtypes FocusRoom, ConferenceRoom, and so on.

異なるタイプの現場 (工場など) の空間グラフを作成する必要がある場合は、別のオブジェクト モデルが必要になることがあります。If you had to create a spatial graph for a different type venue, such as a factory, you might need a different object model. プロビジョニング サンプルに対してコマンド ラインでコマンド dotnet run GetOntologies を実行すると、使用可能なモデルを見つけることができます。You can find out which models are available to use by running the command dotnet run GetOntologies on the command line for the provisioning sample.

空間グラフとオブジェクト モデルの詳細については、Digital Twins オブジェクト モデルと空間インテリジェンス グラフに関するページを参照してください。For more information on spatial graphs and object models, read Understanding Digital Twins object models and spatial intelligence graph.

サンプル空間グラフの変更Modify the sample spatial graph

provisionSample.yaml ファイルには、次のノードが含まれています。The provisionSample.yaml file contains the following nodes:

  • resources: resources ノードでは、お客様の設定内のデバイスと通信するための Azure IoT Hub リソースが作成されます。resources: The resources node creates an Azure IoT Hub resource to communicate with the devices in your setup. グラフのルート ノードにある IoT ハブは、グラフ内のすべてのデバイスおよびセンサーと通信できます。An IoT hub at the root node of your graph can communicate with all the devices and sensors in your graph.

  • spaces: Digital Twins オブジェクト モデルでは、spaces は物理的な場所を表します。spaces: In the Digital Twins object model, spaces represent the physical locations. それぞれの空間には、Type (たとえば、Region、Venue、Customer) とわかりやすい Name があります。Each space has a Type—for example, Region, Venue, or Customer—and a friendly Name. 空間は他の空間に属することができ、これによって階層構造が作られます。Spaces can belong to other spaces, creating a hierarchical structure. provisionSample.yaml ファイルには、架空の建物の空間グラフが含まれています。The provisionSample.yaml file has a spatial graph of an imaginary building. 入れ子になった論理的な空間、つまり Venue 内の型 Floor、フロア内の Area、エリア内の Room ノードに注目してください。Note the logical nesting of spaces of type Floor within Venue, Area in a floor, and Room nodes in an area.

  • devices: 空間には devices を含めることができます。これは、複数のセンサーを管理する物理エンティティまたは仮想エンティティです。devices: Spaces can contain devices, which are physical or virtual entities that manage a number of sensors. たとえば、ユーザーの電話機、Raspberry Pi センサー ポッド、ゲートウェイなどがデバイスに該当します。For example, a device might be a user’s phone, a Raspberry Pi sensor pod, or a gateway. サンプルにある架空の建物の Focus Room という名前の部屋に Raspberry Pi 3 A1 デバイスがどのように含まれているかに注目してください。In the imaginary building in your sample, note how the room named Focus Room contains a Raspberry Pi 3 A1 device. それぞれのデバイス ノードは一意の hardwareId で識別されます。これは、サンプルではハードコーディングされています。Each device node is identified by a unique hardwareId, which is hardcoded in the sample. このサンプルを実際の運用環境用に構成する場合は、これらの値をお客様の設定の値に置き換えてください。To configure this sample for an actual production, replace these with values from your setup.

  • sensors: デバイスは、複数の sensors を含むことができます。sensors: A device can contain multiple sensors. これらは、温度、モーション、バッテリー レベルなどの物理的な変化を検出して記録することができます。They can detect and record physical changes like temperature, motion, and battery level. それぞれのセンサー ノードは hardwareId で一意に識別されます。これは、ここではハードコーディングされています。Each sensor node is uniquely identified by a hardwareId, hardcoded here. 実際のアプリケーションではこれらを、お客様の設定に含まれているセンサーの一意の識別子に置き換えてください。For an actual application, replace these by using the unique identifiers of the sensors in your setup. provisionSample.yaml ファイルには、MotionCarbonDioxide を記録する 2 つのセンサーがあります。The provisionSample.yaml file has two sensors to record Motion and CarbonDioxide. CarbonDioxide センサーの行の下に次の行を追加して、Temperature を記録する別のセンサーを追加します。Add another sensor to record Temperature, by adding the following lines, below the lines for the CarbonDioxide sensor. これらは、provisionSample.yaml 内でコメントにされた行として提供されていることに注意してください。Note that these are provided in provisionSample.yaml as commented-out lines. 各行の先頭にある # 文字を削除するだけでコメント解除することができます。You can uncomment them by removing the # character in the front of each line.

            - dataType: Temperature
              hardwareId: SAMPLE_SENSOR_TEMPERATURE
    

    注意

    dataType キーと hardwareId キーがこのスニペットの上のステートメントに揃っていることを確認します。Make sure the dataType and hardwareId keys align with the statements above this snippet. また、エディターで空白がタブに置き換えられないことを確認します。Also make sure that your editor does not replace spaces with tabs.

provisionSample.yaml ファイルを保存して閉じます。Save and close the provisionSample.yaml file. 次のチュートリアルでは、このファイルに情報をさらに追加したうえで、Azure Digital Twins のサンプルの建物をプロビジョニングします。In the next tutorial, you'll add more information to this file, and then provision your Azure Digital Twins sample building.

ヒント

Azure Digital Twins グラフ ビューア―を使って、空間グラフを表示および変更できます。You can view and modify your spatial graph using the Azure Digital Twins Graph Viewer.

リソースのクリーンアップClean up resources

この時点で Azure Digital Twins の探索を中止する場合は、このチュートリアルで作成されたリソースを削除してかまいません。If you want to stop exploring Azure Digital Twins at this point, feel free to delete resources created in this tutorial:

  1. Azure portal の左側のメニューにある [すべてのリソース] をクリックし、目的の Digital Twins リソース グループを選択して [削除] を選択します。From the left menu in the Azure portal, select All resources, select your Digital Twins resource group, and select Delete.

    ヒント

    ご自分の Digital Twins インスタンスの削除で問題が発生していた場合は、サービス更新が修正と共にロールアウトされています。If you experienced trouble deleting your Digital Twins instance, a service update has been rolled out with the fix. ご自分のインスタンスの削除を再試行してください。Please retry deleting your instance.

  2. 必要に応じて、作業マシン上のサンプル アプリケーションを削除します。If necessary, delete the sample application on your work machine.

次の手順Next steps

サンプルの建物の状態を監視するためのカスタム ロジックを実装する方法について学習するために、シリーズの次のチュートリアルに進んでください。To learn how to implement a custom logic to monitor conditions in your sample building, go to the next tutorial in the series: