はじめに
コンポーネントライブラリはいいぞ!
ということで、あまり触れられていない(?)コンポーネントライブラリの「プロパティの型」についてまとめようと思います。
コンポーネントライブラリってそもそもなに?という方はこちらをご確認ください。
なお、この資料作成時と現在利用可能なプロパティの型は異なっております。
↓↓現在↓↓

プロパティの型
「プロパティの型」を利用するには以下設定を「オン」にする必要があります。

この機能、いつになったらGAされるんですかね??
まさか忘れてる...なんてことはないですよね...?
公式ドキュメントはこちらです。
データ
「データ」はキャンバスアプリからコンポーネントに対して値を渡したいときに利用します。
例えばコンポーネント上に表示する文字を設定設定したい場合や、コンポーネント内のコントロールの色を設定したい場合などに利用します。
以下のようなプロパティを作成してコンポーネント内のラベルにて利用したとします。


このコンポーネントをキャンバスアプリ内で利用すると以下のようになります。

はじめてコンポーネントを作成する際は最もイメージしやすいプロパティかもしれませんね。
関数
「関数」はカスタム関数を作成したい場合に利用します。
会計の計算や機械系の計算など、Power Appsにはない関数を作成したい場合に利用することになります。
こちらで私やHiroさんなどが過去に公開したカスタム関数が公開されています。
...が、更新3年前で止まってますね、、、
例えば以下のようなプロパティとパラメータを作成したとします。

これに対して以下のような関数をコンポーネント内で定義してみます。
ちなみにこれはじゃんけんの勝敗を判定するためのロジックですね。

上記のように、式の中でプロパティ内で定義したパラメータを利用することができます。
これをキャンバスアプリで利用すると以下のようになります。

カスタム関数は以下のような構文でキャンバスアプリから呼び出すことができます。
<コンポーネント名>.<プロパティ名>(<パラメータ-1>, <パラメータ-2> ... , <パラメータ-N>)
コントロールをいくつか組み合わせたコンポーネントですと、他の既存のコントロールと同様にそのコンポーネントを利用する場所(画面)別にコンポーネントを配置する必要がありますが、カスタム関数の場合はアプリ内に1つのみ追加でOKです。
コネクターをイメージしていただければと思います。
コネクターと異なる点は、カスタム関数はアプリ内にコンポーネントを1つ配置する必要があるという点ですね。
イベント
「イベント」はコンポーネント内の動作のプロパティにイベントを設定したい場合に利用します。
動作のプロパティとは OnSelect などの OnXXXX のようなプロパティのことです。
このプロパティは「ボタンが押されたとき」のイベントをキャンバスアプリ側で定義したい場合によく利用しますね。
例えば以下のようにプロパティを定義して、ボタンの OnSelect にてこのイベントを呼び出すように設定したとします。


これをキャンバスアプリで利用すると以下のようになります。

上記では、Screen2に遷移するようなイベントを設定していますので"Next"ボタンを選択すると、Screen2に遷移します。
アクション
「アクション」はコンポーネント内のコントロールや変数、コレクションを変化させたい場合に利用します。
例えば以下のようなプロパティとパラメータを作成したとします。

これに対して以下のようにコレクションにレコードを追加する式を定義してみます。

ちなみにこのコレクションはこちらで定義しています。

これはコンポーネントが表示されたときに初期化するためのやり方となるのですが、詳しい説明は以下でしているので、興味のある方はこちらをご覧ください。
さて、このアクションをキャンバスアプリで呼び出すと以下のようになります。

「関数」と同じ呼び出し方ですね。
SampleHeading 以外オプションにしているので SampleImage は省いて設定してもエラーとなっていませんね。
パラメータの必須/オプションに関してはこちらの資料のP.50-P.51でまとめているのが参考になるかな?と思いますので、良かったらみてみてください。
実際にアクションを実行してみると、コレクションが追加されていることが確認できます。

おわりに
コンポーネントライブラリ、非常に便利な機能だと思うのですが、既定では表示されなくなっていたり(詳細からアクセスする必要がある)プレビューが一向外れなかったりとしているんですよね、、、
そのせいもあってか少し認知度が低いような気がしています。
Power Appsを組織で利用する場合、使い方次第では開発工数の削減やデザインの統一ができたりしますので、皆さまも是非コンポーネントライブラリの作成を行ってみてください!
