ユーザー定義関数(UDF)がGAへ ※ユーザー定義型(UDT)はじきにGA予定(2025/9月)

はじめに

Power Appsのキャンバスアプリで使用できる、ユーザー定義関数(UDF)がついにGAされました。また、公式ブログではユーザー定義型(UDT)についてもじきにGAが予定されているとのことです。今回はあまり検証は出来ていないので公式情報を中心にご紹介となります。

ユーザー定義関数(UDF)の概要

ユーザー定義関数(UDF)とは、開発者が独自に関数を定義し、アプリ内の任意の場所から呼び出せる仕組みです。
App.Formulas に定義し、ラベルコントロールのテキストや、ボタンコントロールのOnSelectなど任意の場所から呼び出して利用できます。※以下は公式ブログのサンプル

 UDFの主なメリット

UDFの主なメリットは以下の感じです。やはり再利用性、保守性の面でメリットが高いと感じます。
複数個所に同じ実装をしていると修正時に一部だけ修正漏れということもよくありますが、そういった点をUDFではカバーできます。

再利用性複数画面・コントロールで同じロジックを使える
保守性ロジックの修正が一箇所で対応でき、修正漏れを低減できる
可読性アプリのコードが整理され見通しが良くなる
パフォーマンス

冗長な処理を減らしアプリの動作をより軽快にできる

実装のポイント

UDFは通常のPower Fxの構文とは書き方が少し異なります。少しプロ開発コードよりの感じですがなれれば問題ないと思います。通常はSetやNotifyなど動作関数はサポートされませんが、やむを得ない場合は{}で囲むことで利用できるようになっています。

  • App.Formula に記述:関数は App オブジェクトの Formulas に定義
  • Function キーワードを使用:(通常のPower Fxとは少し異なる構文)で関数を定義
  • グローバル変数との連携も可能:Set() などで定義した値を関数内で使用可能(必要に応じて)

構文

CodeFunctionName( [ ParameterName1ParameterType1 [ , ParameterName2ParameterType2 … ] ] ) : ReturnType = { Formula1 [ ; Formula2 … ] };

  • FunctionName – 必須 ユーザー定義関数の名前
  • ParameterName(s) – 省略可 関数パラメーターの名前
  • ParameterType(s) – 省略可 組み込みデータ型名、データ ソース名、または Type 関数で定義された型の名前
  • ReturnType – 必須 関数からの戻り値の型。
  • Formula(s) – 必須 パラメーターに基づいて関数の値を計算する数式

公式ブログの記事

公式の記事は以下です。

Power Apps のユーザー定義関数の一般提供

実装サンプル

実装サンプルについては公式ブログやDocsにあがっていますので参考ください。
また、有識者、MVPの方々が以前より有益な記事をアップされていますので合わせて参考にしましょう!
※以前のサンプルがどっかにいってしまいアップできなかったので公式を転記してます。すいません💦

おわりに

ずっと試験段階で少し前にプレビューとなったユーザー定義関数(UDF)がついにGAされました!ユーザー定義型(UDT)についてもじきにGAの予定とのこと。
UDTについては以前確認した際にこれは便利になるぞ!と思い早速記事にしましたが、UDFについては特に記事にしていないので有識者の記事を参考にしましょう!

従来のPower Fxの記述に加えてこれらの(プログラマー思考よりの)書き方は少し抵抗のあるケースもあるかとおもいます。これらを利用するのは必須ではないですし、標準的な書き方の方が分かりやすく引継ぎもしやすいという点もあるかもです。
ただこれらを使用することで保守性や可読性、パフォーマンスなどが上がるなどメリットも大きいので、メンバーのスキル状況や運用面も含めてご検討いただくと良いのではと思います。それでは。

UDT、UDF関連の以前の記事

UDTを確認してその後に書いた記事です。ParseJSON関数を絡めて使いやすくなったよーと紹介しています。

この記事は役に立ちましたか?

もし参考になりましたら、下記のボタンで教えてください。

ヨウセイ

ヨウセイ

一般職からSharePoint、C#、.NET系技術者へ、そこからPower App、Power Automate技術者へと転身。 ワンランク上のおっさんはPower Appsでシステム開発が出来る〜! qiitaや自社HPでも技術ブログを書いていました。

関連記事

コメント

この記事へのコメントはありません。

CONTENTS