

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# コンポーネントモデルを作成する
<a name="create-component-models"></a>

 AWS IoT SiteWise コンポーネントモデルを使用して、アセットモデルやその他のコンポーネントモデルから参照できるサブアセンブリを定義します。このようにして、コンポーネントの定義を他の複数のモデル間で、または同じモデル内で複数回再利用できます。

コンポーネントモデルを定義するプロセスは、アセットモデルを定義するのと非常に似ています。アセットモデルと同様に、コンポーネントモデルには名前、説明、アセットプロパティがあります。ただし、コンポーネントモデル自体を使用してアセットを直接作成することはできないため、コンポーネントモデルにアセット階層定義を含めることはできません。また、コンポーネントモデルではアラームを定義できません。

例えば、モーター温度、エンコーダー温度、絶縁抵抗プロパティを持つサーボモーターのコンポーネントを定義できます。次に、CNC マシンなど、サーボモーターを含む機器のアセットモデルを定義できます。

**注記**  
最下位レベルのノードから業務をモデル化することをお勧めします。例えば、CNC マシンのアセットモデルを作成する前に、サーボモーターコンポーネントを作成します。アセットモデルには、既存のコンポーネントモデルへの参照が含まれています。
コンポーネントモデルから直接アセットを作成することはできません。コンポーネントを使用するアセットを作成するには、アセットのアセットモデルを作成する必要があります。次に、コンポーネントを参照するカスタム複合モデルを作成します。アセットモデルの作成の詳細については、「[でアセットモデルを作成する AWS IoT SiteWise](create-asset-models.md)」を参照してください。カスタム複合モデルの作成の詳細については、「[カスタム複合モデルを作成する (コンポーネント)](create-custom-composite-models.md)」を参照してください。

以下のセクションでは、 AWS IoT SiteWise API を使用してコンポーネントモデルを作成する方法について説明します。

**Topics**
+ [コンポーネントモデルを作成する (AWS CLI)](#create-component-model-cli)
+ [コンポーネントモデルの例](#component-model-example)

## コンポーネントモデルを作成する (AWS CLI)
<a name="create-component-model-cli"></a>

 AWS Command Line Interface (AWS CLI) を使用してコンポーネントモデルを作成できます。

[CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) オペレーションを使用して、プロパティを持つコンポーネントモデルを作成します。このオペレーションでは、次の構造を持つペイロードが必要です。

```
{
  "assetModelType": "COMPONENT_MODEL",
  "assetModelName": "{{String}}",
  "assetModelDescription": "{{String}}",
  "assetModelProperties": {{Array of AssetModelProperty}},
}
```

**コンポーネントモデルを作成するには (AWS CLI)**

1. `component-model-payload.json` という名前のファイルを作成して、次の JSON オブジェクトをファイルにコピーします。

   ```
   {
     "assetModelType": "COMPONENT_MODEL",
     "assetModelName": "",
     "assetModelDescription": "",
     "assetModelProperties": [
   
     ]
   }
   ```

1. 任意の JSON テキストエディタを使用して、以下の `component-model-payload.json` ファイルを編集します。

   1. コンポーネントモデルの名前 (`assetModelName`) を入力します (**Servo Motor** または **Servo Motor Model** など)。この名前は、この AWS リージョンのアカウントのすべてのアセットモデルとコンポーネントモデルで一意である必要があります。

   1. (オプション) コンポーネントモデルの外部 ID (`assetModelExternalId`) を入力します。これはユーザー定義 ID です。詳細については、AWS IoT SiteWise  ユーザーガイドの [外部 ID を持つリファレンスオブジェクト](object-ids.md#external-id-references)を参照してください。

   1. (オプション) アセットモデルの説明 (`assetModelDescription`) を入力するか、`assetModelDescription` キーと値のペアを削除します。

   1. (オプション) コンポーネントモデルのアセットプロパティ (`assetModelProperties`) を定義します。詳細については、「[データのプロパティを定義する](asset-properties.md)」を参照してください。

   1. (オプション) アセットモデルのタグ (`tags`) を追加します。詳細については、「[AWS IoT SiteWise リソースにタグを付ける](tag-resources.md)」を参照してください。

1. 次のコマンドを実行して、JSON ファイルの定義からコンポーネントモデルを作成します。

   ```
   aws iotsitewise create-asset-model --cli-input-json file://component-model-payload.json
   ```

   オペレーションは、アセットモデルまたは別のコンポーネントモデルでコンポーネントモデルにリファレンスを追加するときに参照する `assetModelId` を含むレスポンスを返します。レスポンスには、モデルの状態 (`assetModelStatus.state`) も含まれます。これは、最初は `CREATING` です。コンポーネントモデルのステータスは、変更が伝播されるまで `CREATING` です。
**注記**  
複雑なモデルの場合、コンポーネントモデルの作成プロセスに数分かかることがあります。コンポーネントモデルの現在のステータスを確認するには、`assetModelId` を指定して [DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html) オペレーションを使用します。コンポーネントモデルのステータスが `ACTIVE` になったら、アセットモデルまたは他のコンポーネントモデルでコンポーネントモデルへの参照を追加できます。詳細については、「[アセットおよびモデルの状態](asset-and-model-states.md)」を参照してください。

1. (オプション) コンポーネントモデルのカスタム複合モデルを作成します。カスタム複合モデルでは、モデル内のプロパティをグループ化したり、別のコンポーネントモデルを参照することでサブアセンブリを含めたりすることができます。詳細については、「[カスタム複合モデルを作成する (コンポーネント)](create-custom-composite-models.md)」を参照してください。

## コンポーネントモデルの例
<a name="component-model-example"></a>

このセクションでは、 AWS CLI および AWS IoT SiteWise SDKs でコンポーネントモデルを作成するために使用できるコンポーネントモデル定義の例を示します。このコンポーネントモデルは、CNC マシンなど、別の機器で使用できるサーボモーターを表します。

**Topics**
+ [サーボモーターコンポーネントモデル](#example-servo-motor)

### サーボモーターコンポーネントモデル
<a name="example-servo-motor"></a>

次のコンポーネントモデルは、CNC マシンなどの機器で使用できるサーボモーターを表します。サーボモーターは、温度や電気抵抗など、さまざまな測定値を提供します。これらの測定値は、サーボモーターコンポーネントモデルを参照するアセットモデルから作成されたアセットのプロパティとして使用できます。

```
{
    "assetModelName": "ServoMotor",
    "assetModelType": "COMPONENT_MODEL",
    "assetModelProperties": [
        {
            "dataType": "DOUBLE",
            "name": "Servo Motor Temperature",
            "type": {
            "measurement": {}
            },
            "unit": "Celsius"
        },
        {
            "dataType": "DOUBLE",
            "name": "Spindle speed",
            "type": {
            "measurement": {}
            },
            "unit": "rpm"
        }
    ]
}
```