これまでアプリで使用する定義値はApp.OnStartプロパティ内でグローバル変数として定義してきたが、今回新しく機能「App.Formulas」が追加されたので試してみた。
2023/12/07追記:いつの間にかGAされていたので、記事内の「プレビュー」の文字を削除しました。
これまで定義値の宣言はApp.OnStart内でSet関数を使用して宣言していた
もちろん機能的には何の問題もないんだけど、
- アプリ起動時に設定するから値によっては起動時間が遅くなる
- App.OnStartプロパティの式のボリュームが増えて読みにくい
- 宣言した定義値を書き換えできてしまう
といった問題があった。
そこで今回追加されたのが「App.Formulas」プロパティで、このApp.Formulas内でアプリで使う定義値を宣言することができる。
App.Formulasプロパティでの定義値の宣言
App.Formulasの利点
公式によるとSetで作成したグローバル変数に比べ、App.Formulasで宣言した値はこんな利点がある。
- 数式の値は常に利用可能
- 数式の値は常に最新
- 数式の定義は不変
- 数式の計算を遅延させることができる
- 数式は名前マネージャーで管理され、自動で再計算される
数式の値は常に利用可能
App.Formulasで宣言される値は、循環参照を作らない限りタイミングを考えずに使用することができる。
数式の値は常に最新
App.Formulasでデータソースから取得した値を定義値にしたとき、その定義値はデータソースを更新すれば自動で更新される(Setみたいに再代入する必要がない)。
DataverseやSPOリストにアプリのユーザーごとの設定を保存するときなどに役に立つかもしれない。
数式の定義は不変
これでアプリの保守や回収を別の開発者に引き継いだときに、間違って定義値を書き換えてしまったことによるデグレを防ぐことができる。
数式の計算を遅延させることができる
App.Formulasで宣言した値は、その値が必要になったタイミングで計算されるため起動時間の短縮にもつながる。
例えばトップ画面では使用しない定義値でもApp.OnStart内のSet関数で宣言してしまうと、アプリ開始時にその定義値を計算/設定してしまう。
対してApp.Formulasで定義値を宣言すると、その宣言値が必要になったタイミング(例えばその値を使用する画面に遷移した後)で計算/設定するため、アプリ起動時の負荷がかなり軽減される。
数式は名前マネージャーで管理され、自動で再計算される
最後のこれだけよくわからなかったんだけど、ひとまず原文。
(今のところ思い浮かばないけれど)これはこれでどこかで使い道があるのかな。
ということで新しく追加されたApp.Formulasプロパティはかなり便利な機能なので、積極的に使用していきたい。
コメント