

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

# デバイスのコードを生成する
<a name="managedintegrations-sdk-codegen-generate"></a>

マネージド統合コード生成ツールを使用して、デバイス用にカスタマイズされた C コードを作成します。このセクションでは、 SDK に含まれているサンプルファイルまたは独自の仕様からコードを生成する方法について説明します。生成スクリプトを使用し、ワークフロープロセスを理解し、デバイス要件に合ったコードを作成する方法について説明します。

**Topics**
+ [前提条件](#managedintegrations-sdk-codegen-genprereq)
+ [カスタム .matter ファイルのコードを生成する](#managedintegrations-sdk-codegen-genspecfile)
+ [コード生成ワークフロー](#managedintegrations-sdk-codegen-genworkflow)

## 前提条件
<a name="managedintegrations-sdk-codegen-genprereq"></a>

1. Python 3.10 以降。

2. コード生成用の .matter ファイルから始めます。End device SDK は、 に 2 つのサンプルファイルを提供します`codgen/matter_files folder`。
+ `custom-air-purifier.matter `
+ `aws_camera.matter`

**注記**  
これらのサンプルファイルは、デモアプリケーションクラスターのコードを生成します。

**コードの生成**  
次のコマンドを実行して、アウトフォルダにコードを生成します。

```
bash ./gen-data-model-api.sh
```

## カスタム .matter ファイルのコードを生成する
<a name="managedintegrations-sdk-codegen-genspecfile"></a>

特定の`.matter`ファイルのコードを生成したり、独自の`.matter`ファイルを提供するには、次のタスクを実行します。

**カスタム .matter ファイルのコードを生成するには**

1. .matter ファイルを準備する

1. generation コマンドを実行します。

   ```
   ./codegen.sh [--format] configs/dm_basic.json path-to-matter-file output-directory
   ```

**(オプション) カスタムスキーマでコードを生成するには**

1. カスタムスキーマを `JSON`形式で準備する

1. generation コマンドを実行します。

   ```
   ./codegen.sh [--format] configs/dm_basic.json path-to-matter-file output-directory --custom-schemas-dir path-to-custom-schema-directory
   ```

上記のコマンドでは、複数のコンポーネントを使用して`.matter`ファイルを`C`コードに変換します。
+ `codegen.py` **ConnectedHomeIP** プロジェクトから
+ にある Python プラグイン `codegen/py_scripts/iotmi_data_model.py`
+ `codegen/py_scripts/templates` フォルダの Jinja2 テンプレート

プラグインは Jinja2 テンプレートに渡す変数を定義し、最終的な C コード出力を生成するために使用されます。`--format` フラグを追加すると、生成されたコードに Clang 形式が適用されます。

## コード生成ワークフロー
<a name="managedintegrations-sdk-codegen-genworkflow"></a>

コード生成プロセスでは、ユーティリティ関数と によるトポロジーソートを使用して、.matter ファイルデータ構造を整理します`topsort.py`。これにより、データ型とその依存関係の適切な順序付けが保証されます。

次に、スクリプトは .matter ファイル仕様と Python プラグイン処理を組み合わせて、必要な情報を抽出してフォーマットします。最後に、Jinja2 テンプレートフォーマットを適用して、最終的な C コード出力を作成します。

このワークフローにより、.matter ファイルからのデバイス固有の要件が、マネージド統合システムと統合される機能 C コードに正確に変換されます。