612 Views
February 22, 25
スライド概要
Global Power Platform Bootcamp 2025 in Japan で登壇した際の資料です。
https://connpass.com/event/342780/
こちらのイベントは Global Power Platform Bootcamp の日本リージョンで開催したイベントです。
https://www.powerplatformbootcamp.com/
■AI要約
Power Appsでは、Power Fxというローコード言語を用いてカスタム関数を作成することができます。関数化することで再利用性や可読性が向上し、保守やテストが容易になります。特に、コンポーネントライブラリやユーザー定義型関数を利用することで、独自の関数を作成し活用する方法を紹介します。これにより、開発工数の短縮や運用保守性の向上を図ることができます。
GLOBAL POWER PLATFORM BOOTCAMP 2025 Japan Power Appsで カスタム関数を作成してみよう コルネ #GlobalPowerPlatformBootcamp #GPPB2025 #GPPB2025JP
コルネ X: @koruneko32767 Company: AKKODiSコンサルティング Blog: コルネの進捗や備忘録が記されたなにか YouTube: Korune Ch. コルネ Docswell: https://www.docswell.com/user/korune Community: Japan Power Platform Game Builders 業務改善検討会 Japan Power Platform Dev User Group Japan Power Platform Community Caravan Who I am: Power Appsでゲーム作成したりPower Platformの ちょっとディープな使い方紹介したりしている人です #GlobalPowerPlatformBootcamp #GPPB2025 #GPPB2025JP
Power Appsと関数 Power AppsではPower Fxというローコード言語を用いて計算式や動作を定義することがで きます。 これらの式はアプリを作成していると同じような処理を何度も記述しないといけない場面 に皆さんもよく遭遇するかと思います。 そんなとき役に立つのが再利用可能な関数を定義しておくことです。 Power Appsでは関数を定義する方法として現在3種類の方法があります。 • コンポーネントライブラリ(カスタム関数) • ユーザー定義型関数(UDF) • コードコンポーネント(Power Apps Component Framework) 今回はローコードで利用可能な赤文字2種類の機能について紹介していきます。 #GlobalPowerPlatformBootcamp #GPPB2025 #GPPB2025JP
関数化するとなにが嬉しいのか 関数化することで以下のようなメリットがあります。 ✓ 再利用性: 一度作成した関数を他の処理でも何度も利用することができます。 ✓ 可読性: 関数を利用することでコードが整理されて読みやすくなります。 ✓ 保守性: 特定のコードを独立して持たせていますので、保守管理が用意になります。 ✓ 抽象化: 複雑な処理を関数化して提供できるので、他の開発者は内部の詳細を気にせず に使うことができます。 ✓ テストの容易さ: 特定の処理で問題が発生した際に対象の関数が正しく動作しているか 確認することで、問題の切り分けがしやすくなります。 自身はもちろん他の開発者の開発工数の短縮や運用保守性の向上に! #GlobalPowerPlatformBootcamp #GPPB2025 #GPPB2025JP
コンポーネントライブラリの概要 コンポーネントライブラリを活用することで再利用可能なキャンバスアプリのパーツを作 成することができます。 パーツはカスタム関数だけでなく、ヘッダーやポップアップなどのカスタムコントロール も作成してキャンバスアプリで利用することができます。 コンポーネントライブラリはキャンバスアプリとは別で作成します。 コンポーネントライブラリ キャンバスアプリ コンポーネント カスタム関数 1 1 1 𝑓𝑥 𝑎, 𝑏 1 1 1 1 カスタム関数 1 コンポーネント 参考: キャンバス コンポーネントの概要 #GlobalPowerPlatformBootcamp #GPPB2025 #GPPB2025JP
ユーザー定義関数の概要
ユーザー定義関数を活用することで、組み込み関数と同じように、パラメーターを受け
取って値を返す独自の関数を記述することができます。
ユーザー定義関数は名前の通り関数式のみ定義することが可能です。
ユーザー定義関数はキャンバスアプリ内に設定し、`App.Formulas`プロパティで定義します。
キャンバスアプリ
1 App
11
Formulas
:= Type( [ { Title: Text, Author: Text, Genre: Text } ] );
= 𝑓𝑥 LibraryType
LibraryGenre( SelectedGenre: Text ): LibraryType = Filter( Library, Genre = SelectedGenre );
OnSelect
= 𝑓𝑥 LibraryGenre("Fiction")
参考: ユーザー定義関数
#GlobalPowerPlatformBootcamp
#GPPB2025
#GPPB2025JP
コンポーネントライブラリの作りかた コンポーネントライブラリは、 詳細 > すべて見る > アプリの拡張機能 > コンポーネントライブラリ からアクセスすることができます。 よく使う場合はピン止めして開きやすくしておくことをおススメします。 #GlobalPowerPlatformBootcamp #GPPB2025 #GPPB2025JP
コンポーネントライブラリの作りかた 1. コンポーネントは「新しいコンポーネントライブラリ」から作成することが可能です。 2. 次に「新しいカスタムプロパティ」からプロパティの定義を行います。 3. 今回は関数の作成を行いたいので、「プロパティの型」で「関数」を選びます。 「関数」を選択すると「パラメーター」を設定できるようになるので関数に必要なパ ラメーターも定義しましょう。 #GlobalPowerPlatformBootcamp #GPPB2025 #GPPB2025JP
コンポーネントライブラリの作りかた 作成したカスタムプロパティは画面上部のプロパティにて選択できるようになっています。 対象の関数で定義したい式をプロパティと合わせて設定しましょう。 この式だと0除算エラーが 発生しちゃうね… #GlobalPowerPlatformBootcamp #GPPB2025 #GPPB2025JP
コンポーネントライブラリの使い方 1. 作成したコンポーネントをキャンバスアプリで利用するには「挿入」よりコンポーネ ントを追加する必要があります。 #GlobalPowerPlatformBootcamp #GPPB2025 #GPPB2025JP
コンポーネントライブラリの使い方 2. 「挿入」から追加したコンポーネントをアプリ内で利用したい場合は、他コントロー ルと同様に画面内に追加してあげる必要があります。 3. アプリに追加することで、対象のコンポーネントにあるカスタムプロパティ(カスタム 関数)を呼び出すことができるようになります。 Tips ✓ カスタム関数としてコンポーネントを作成する場合はコントロールの要素は不要なので、コン ポーネントのサイズは 0 で作成しておくといいよ! ✓ カスタム関数は他の画面からでも呼び出せるので追加するのは1つだけでいいよ! ✓ カスタム関数を管理する用の画面を用意してそこにカスタム関数を置いておくと管理が楽になる 場合があるよ! #GlobalPowerPlatformBootcamp #GPPB2025 #GPPB2025JP
ユーザー定義関数の作りかた ユーザー定義関数はキャンバスアプリ内で定義します。 ただし、ユーザー定義関数は現在プレビュー機能ですので、設定から機能をオンにしてあ げる必要があります。 ※設定変更後アプリを再起動する必要があります。 #GlobalPowerPlatformBootcamp #GPPB2025 #GPPB2025JP
ユーザー定義関数の作りかた ユーザー定義関数は、`App.Formulas`プロパティ内で定義を行います。 ユーザー定義関数の定義方法は少し特殊で以下のような構文を用います。 Formulas = 𝑓𝑥 FunctionName(ParameterName1: ParameterType1[, ParameterName2: ParameterType2 …]): ReturnType = Formula; • FunctionName: ユーザー定義関数の名前を設定します。 • ParameterName(s): ユーザー定義関数で利用するパラメーターの名前を設定します。 • ParameterType(s): パラメーターのデータ型を設定します。 • ReturnType: ユーザー定義関数が返す値のデータ型を設定します。 • Formula: ユーザー定義関数で計算を行う数式を設定します。 設定例 Formulas = 𝑓𝑥 BMI(Weight: Number, Height: Number): Number = Weight / Power(Height / 100, 2); #GlobalPowerPlatformBootcamp #GPPB2025 #GPPB2025JP
ユーザー定義関数の使い方 ユーザー定義型関数を利用するには、用意されている他の関数と同じように作成した関数 とそれに設定されたパラメータを呼び出すだけで簡単に利用することが可能です。 Tips ✓ ユーザー定義型関数作成時に”;” を設定するのを忘れないようにしよう。 ✓ パラメータをオプションに設定する方法は(今のところ)ないよ。 #GlobalPowerPlatformBootcamp #GPPB2025 #GPPB2025JP
ユーザー定義関数で行動関数を利用する
最近のアップデートでユーザー定義関数でも`Set`や`Notify`のような副作用を持つ行動関数
(動作関数)を利用できるようになりました。
行動関数を利用したい場合は式を”{ }”で囲みます。
Formulas
= 𝑓𝑥
Spend( Amount: Number ) : Void = {
If( Amount > Savings,
Error( $"{Amount} is more than available savings" ),
Set( Savings, Savings - Amount );
Set( Spent, Spent + Amount)
);
};
Caution
ドキュメントでも記載されている通り、このやり方はあくまでもやむを得ない場合の処置です。
>その代わりに関数型プログラミングのパターンに頼り、必要に応じて Power Fx が自動的に計算式を
再計算するようにするのが最良です。しかし、やむを得ない場合もあります。 ユーザー定義関数に
動作ロジックを含めるには、本文を中かっこで囲みます。
参考: ユーザー定義関数の動作
#GlobalPowerPlatformBootcamp
#GPPB2025
#GPPB2025JP
簡易比較 コンポーネント(カスタム関数) ユーザー定義関数 管理場所 コンポーネントライブラリ アプリ内の`App. Formulas` パラメータの必須設定 必須/オプションどちらも利用可 必須のみ データ型 次スライド参照 次スライド参照 関数やパラメータの説明 コメントと設定 コメントのみ 他アプリでの利用 コンポーネントの共有 式のコピペ コントロールと合わせて定義 可 不可 複数関数の作成 カスタムプロパティに分けて定義 `App. Formulas`にすべて記載 #GlobalPowerPlatformBootcamp #GPPB2025 #GPPB2025JP
簡易比較(データ型) テキスト 数値 ブール値 日時 日付(時刻なし) 時刻(日付なし) レコード テーブル イメージ ビデオまたはオーディオ 色 通貨 UntypedObject(型宣言なし) Void(戻り値の型なし) ハイパーリンク GUID コンポーネント(カスタム関数) ユーザー定義関数 ○ ○ ○ ○ ○ ○ ○ ○ × ○ × ○ ○ △ ○ △ ○ × ○ × ○ ○ ○ × × ○ × ○ × ○ × ○ “△”の箇所は RecordOf 関数と Type 関数 を活用すれば定義可能です。 #GlobalPowerPlatformBootcamp #GPPB2025 #GPPB2025JP
どう使い分ければいいの? ユーザー定義関数 ユーザー定義関数はアプリ内で設定するので以下のようなケースでおすすめです。 • 手軽に使いたい • ごく限られたアプリでのみしか利用しない • JSONを絡めて利用したい(UntypedObject) • 他のアプリや利用者に影響を受けることなく関数を利用したい コンポーネント(カスタム関数) カスタム関数はコンポーネントライブラリとして作成してコンポーネントとして共有が可 能なので以下のようなケースでおすすめです。 • 複数のアプリで利用したい • 他のユーザーにも関数を共有したい • 関数を特定の管理者が一元管理したい #GlobalPowerPlatformBootcamp #GPPB2025 #GPPB2025JP
さいごに アプリの作成に慣れてきた方は、コンポーネントライブラリやユーザー定義関数を用いて 式の関数化を検討してみましょう! 関数化しておくことで、何度も同じ式を記載しなくてよくなり、また改修の際も対象の関 数1か所を直すだけで済むようになる場合があるので、開発面はもちろんのこと運用面でも メリットがあります。 コンポーネントライブラリとユーザー定義関数ともに少し一癖あるかもしれませんが、そ れぞれの特徴やできることを理解して、皆さまも是非関数作成にチャレンジしてみてくだ さい! #GlobalPowerPlatformBootcamp #GPPB2025 #GPPB2025JP
Thank you for watching. Could you Please provide your feedback on this session and this event. ご視聴ありがとうございました! フィードバックにご協力ください Session survey Event survey 本セッションに対するアンケート イベント全体に対するアンケート 本セッションついて参考になった点や 感銘を受けた点、もっと知りたかったことなどをお寄せください。 運営チームメンバー、登壇者、サポートメンバーに対する 暖かいフィードバックをお待ちしております。 #GlobalPowerPlatformBootcamp #GPPB2025 #GPPB2025JP