Power Appsで外部APIを叩いたり、複雑なJSONデータを扱うとき、
- ParseJSON関数を使った後のデータ処理がダルすぎる…
- UntypedObjectからいちいち型変換(Value関数とかText関数とか)するの、コードが長くなって見にくい…
みたいに感じることがよくある。
今回は、そんなPower AppsでのJSON地獄から抜け出せる最強の機能「ユーザー定義型(UDT:User Defined Types)」を使ったアプローチを紹介。
これを使えば、冗長だったコードが劇的にスッキリして、後から見返しても「きれいなコード」を保てるようになるので、ぜひチェックしてみてもらえれば!
事前設定
[設定]→[更新]→[試験段階]→[ユーザー定義型]をONにする。
※設定を変えた後、保存してPower Apps Studioを再起動する必要あり。

基本的な使い方
【定義する型名】 := Type({プロパティ1の名前:プロパティ1の型, プロパティ2の名前:プロパティ2の型 ...})
// 例:型「ねこ」を作る場合(名前、年齢、誕生日がプロパティ)
Cat := Type({name:Text, age:Number, birthday:Date});





基本的な使い方は以上。
ここから「型が定義できると何ができるのか」を解説。
使い道1:ParseJSONを使ってWebAPIの戻り値を受け取る
1つ目の使い道は、ParseJSON関数と組み合わて(WebAPIなどから返された)JSONを簡単に解析できるようになること。



これまで:ParseJSONのみ

これから:ユーザー定義型とParseJSONを組み合わせ

※ParseJSONの「第一引数にJSON文字列」「第二引数に定義した型」を指定


今までは「カスタムコネクタの作成」または「Power Automate側でJSONの解析をして応答する」または「Power Apps側でParseJSONを頑張って書く」しかなかったので、とても嬉しい。
使い道2:半構造化データを簡単に使う|継承関係にあるテーブルの実現
続いての使い道は、半構造化データを簡単に扱えるようにすること。
「名前」や「価格」といった共通の属性は列として持たせればいいんだけど、各商品特有の属性(本であればページ数、音楽であれば再生時間)をどのように定義するか、は結構悩ましい。





他にもいろいろと使い道はありそうなので、ユーザー定義関数に並んで今後が楽しみな機能。

