MRが楽しい

MRやVRについて学習したことを書き残す

AWESOME-COPILOTのドキュメントを読む その113(React Controls & Platform Libraries)

本日はAWESOME-COPILOTの技術調査枠です。
AWESOME-COPILOTのドキュメントを読みながら実際に操作を試して記事に残します。
今回はカスタムインストラクションの一つReact Controls & Platform Librariesについてです。

React Controls & Platform Libraries

React Controls & Platform LibrariesはGitHub Copilot を「Reactベース PCF(Power Apps Component Framework)専門エンジニア」にするルールです。

以下のページからGenaiscriptのインストールボタンをクリックして取得します。
github.com

インストールボタンを押してReact Controls & Platform Librariesをダウンロードします。
すると.github/instructions配下にインストラクションがインストールされます。

インストールしたインストラクションはCopilotの動作に自動的に適用されます。
このインストラクションを読み込むと、Copilotは以下のプロジェクトに対してPower Apps PCF + React platform libraries前提でコード生成するようになります。

  • TypeScript
  • React (TSX)
  • JavaScript
  • manifest XML
  • pcfproj
  • csproj

以下の関連ファイルを対象に動作します。

  • **/*.{ts,tsx,js,json,xml,pcfproj,csproj}

具体的にはCopilotは以下のような行動をとります。

Reactコンポーネント作成方法

通常のPCF作成時に、--framework reactを指定します。

pac pcf init -n ReactSample -ns SampleNamespace -t field -fw react -npm
パラメータ 意味
-n コンポーネント名
-ns namespace
-t field フィールド型PCF
-fw react React Control化
-npm npm install自動実行

起動方法は通常PCFと同じです。

npm start

作成後は以下で利用可能です。

  • Model-driven app
  • Custom pages
  • Canvas app

通常PCFとの違い

Manifestのcontrol-type

control-type="virtual"になります。

platform-libraryが追加される

Manifest内に以下が入ります。

<resources>
  <code path="index.ts" order="1" />
  <platform-library name="React" version="16.14.0" />
  <platform-library name="Fluent" version="9.46.2" />
</resources>

Power Apps提供React、Power Apps提供Fluent UIを使うことになります。

index.tsの実装が変わる

updateView()でReactElementを返す方式になります。
「Reactコンポーネントを返す」という設計変更です。

bundle.jsが小さい

React/Fluentが同梱されないため、bundle.jsが軽量化されます。

サンプル

以下のReact化サンプルを提供します。

サンプル 内容
ChoicesPickerReact ChoicesPickerControlのReact版
FacepileReact ReactStandardControlのReact版

Virtual Controlなので高性能です。

対応ライブラリバージョン

現在Power Appsが提供する上限バージョンは以下の通りです。

ライブラリ Runtime
React Model: 17.0.2 / Canvas: 16.14
Fluent 8 8.121.1
Fluent 9 9.68.0

注意点

Fluent 8とFluent 9は同時利用不可なのでManifestでどちらか一方のみを指定します。