
Power AppsのFormulas(名前付き数式)は、OnStartに書き続けてきた初期化処理をすっきり整理できる機能です。海外コミュニティでは数年前から話題になっていますが、国内ではまだ使っている人が少ない印象です。
Formulasとは何か
Formulasは、数式に名前をつけて再利用できる仕組みです。簡単にいえば、Excelの名前付き範囲のようなものです。一度定義した数式はアプリ全体のどこからでも参照でき、値が変わっても一箇所を修正するだけで全体に反映されます。
たとえば、ログインユーザーの情報を何度も参照したいとき、従来はOnStartでSet(gUser, User())と書いてグローバル変数に格納していました。Formulasでは変数を使わず、直接 MyUser = User()と定義するだけで、アプリ全体で MyUser として参照できます。
MyUser = User()
OnStartとの違い
| 項目 | OnStart | Formulas |
|---|---|---|
| 実行タイミング | アプリ起動時に1回だけ実行 | 参照されたときに評価(遅延評価) |
| 変数への保存 | 必要(Set・Collect等で格納) | 不要(名前そのものが数式) |
| 起動速度への影響 | あり(処理が多いと遅くなる) | 少ない(必要になったとき評価) |
| デバッグのしやすさ | 実行順序の管理が必要 | 独立した定義なので追いやすい |
最大の違いは遅延評価です。OnStartは起動時に全部実行されますが、Formulasは参照された瞬間に計算されます。使わない数式は実行されないため、起動時のパフォーマンスに優しい設計になっています。
定義方法
FormulasはAppコントロールのプロパティに存在しています。

定義の書き方はシンプルです。
MyUser = User()
AppTitle = "社内申請ポータル"
TodayJP = Text(Today(), "yyyy年mm月dd日")
このように定義しておけば、画面のどこでも MyUser.Email や AppTitle とそのまま書くだけで参照できます。変数のように Set() や UpdateContext() は必要ありません。
向いているケースと向いていないケース
Formulasが向いているケース
- User()や Today()など、アプリ全体で何度も参照する値
- 静的な定数(アプリタイトル、色コード、URLなど)
- OnStartが長くなってきたアプリのリファクタリング
- パフォーマンス改善が必要なアプリ
Formulasが向いていないケース
- ユーザーの入力や操作によって値が変わるケース(変数が必要)
- Collect()など副作用を伴う処理
- 特定のタイミングだけ実行したい処理
Formulasは純粋な計算式の命名にしか使えず、副作用(データの変更・変数への書き込み)を含む処理は書けません。なんでもFormulasに移行しようとすると詰まるので、適材適所で使い分けることが大切です。
実際に使ってみた感想
個人的には、User()の参照をFormulasに移したところ、アプリの起動が体感的に速くなりました。OnStartにUser()とCollect()を並べて書いていたのを、Collectはそのままに User()だけFormulasに切り出したのですが、それだけでも違いが出ます。
まとめ
FormulasはOnStartを置き換えるものではなく、補完するものです。変数を使わずに済む定義はFormulasへ、副作用を含む処理はOnStartにと分けるだけで、アプリ全体のコードが整理されます。まだ使ったことがない方は、まず User() の定義をひとつ移してみることをおすすめします。慣れてくると手放せなくなります。
