本日はAWESOME-COPILOTの技術調査枠です。
AWESOME-COPILOTのドキュメントを読みながら実際に操作を試して記事に残します。
今回はカスタムインストラクションの一つCode Components for Model-Driven Appsについてです。
Code Components for Model-Driven Apps
Code Components for Model-Driven AppsはModel-driven AppsでPCFコンポーネントを使用する際の開発・利用ルールをCopilotに教えるカスタムインストラクションです
Model-driven AppsはMicrosoft Power Apps(Power Platform)のアプリの種類の1つで、データモデル(Dataverse)を中心に自動的にUIやアプリを生成するビジネスアプリ作成方式です。
以下のページからCode Components for Model-Driven Appsのインストールボタンをクリックして取得します。
github.com
インストールボタンを押してCode Components for Model-Driven Appsをダウンロードします。
すると.github/instructions配下にインストラクションがインストールされます。

インストールしたインストラクションはCopilotの動作に自動的に適用されます。
このインストラクションを読み込むと、CopilotはModel-driven AppsでPCFコンポーネントを使う方法を理解した前提でコード生成・提案を行います。
具体的にはCopilotは以下のような行動をとります。
Model-driven Appsのアーキテクチャを前提にする
CopilotはPCFをModel-driven Appsのデータモデル中心の構造の中で使うことを前提に説明します。
アーキテクチャの主な要素は以下の通りです。
| 要素 | 役割 |
|---|---|
| Dataverse | データストレージ |
| Entity / Table | データ構造 |
| Form | UI画面 |
| PCF Control | フィールドのUI拡張 |
つまりPCFはフォームのフィールド表示をカスタマイズするUIコンポーネントとして扱われます。
PCFコンポーネントをDataverseソリューションに追加
CopilotはPCFコンポーネントをソリューションとして管理する方法を前提に説明します。
以下の基本フローに従います。
- PCFコンポーネント作成
- build
- Dataverse solution に追加
- Power Apps 環境にインポート
Power Platform開発ではSolution管理が必須であることを前提に提案します。
フィールドコントロールとしての利用
Model-driven AppsではPCFコンポーネントはフォームフィールドのUIコントロールとして使われます。
Copilotは次のような用途を想定して提案します。
- カスタム日付ピッカー
- マップ表示
- グラフ表示
- リッチテキスト
- 外部API表示
つまりDataverseフィールドを拡張するUIとして設計します。
PCFコントロールのバインディング
CopilotはPCFコンポーネントとDataverseフィールドのバインディングを前提にコードを提案します。
PCFはcontext.parametersを使ってDataverseデータを取得します。
UIとユーザー体験を重視
Model-driven Appsはビジネスアプリとして使われるため、Copilotは以下を考慮したUIコンポーネント設計を提案します。
- Fluent UI
- アクセシビリティ
- レスポンシブ
パフォーマンスを考慮する
Copilotは以下のパフォーマンス最適化を提案します。
- 不要なレンダリングを避ける
- DOM操作最小化
- 軽量UI
Dataverseセキュリティを考慮
Model-driven Appsでは以下のセキュリティで考慮すべき点があります。
- ロールベースアクセス
- フィールドセキュリティ
- Dataverse 権限
CopilotはPCFコンポーネント設計時に以下を考慮した提案を行います。
- 権限不足のケース
- API 制限
PCFコンポーネントの開発ライフサイクル
CopilotはPCF開発の典型フローを理解した上で提案します。
基本的な開発手順は以下の通りになります。
- PCFプロジェクト作成
- TypeScript実装
- build
- solution package 作成
- Dataverse インポート
- フォームに配置
つまりPower Platform開発フロー全体を理解した回答になります。