Notesへ戻る
Power Platformメモ
Power AppsのSetとUpdateContextの違い(変数の使い分け)
Power AppsでSetとUpdateContextどちらを使えばいいか迷ったときの使い分けポイントをざっくり整理したメモです。
Power AppsのSetとUpdateContextの違い(変数の使い分け)
この記事の位置づけ
この記事は、Power Appsの初学者向け技術メモです。関数の動作は環境・バージョンによって変わることがあります。
実際のアプリで動作を確認してください。
ざっくり言うと
Power Appsで変数を使うとき、「SetとUpdateContextどっちを使えばいいの?」という疑問をよく見ます。
一言で言うと、アプリ全体で使う値はSet、そのスクリーン内だけで使う値はUpdateContextという使い分けが入口になります。
Set(グローバル変数)
特徴
- アプリ全体(全スクリーン)からアクセスできる
- 一度Setすると別のスクリーンでも値を保持する
Set(変数名, 値)で設定する
使い方
Set(currentUser, User().FullName)
Set(isLoggedIn, true)
Set(selectedItem, Gallery1.Selected)
参照の仕方
変数名をそのまま使います。
Label.Text: currentUser
If(isLoggedIn, "ログイン済み", "未ログイン")
向いているケース
- ログインユーザー情報など、複数スクリーンで共有する値
- ナビゲーション間で引き継ぐ選択状態
- アプリ起動時に1度だけ取得してキャッシュしたいデータ
UpdateContext(ローカル変数)
特徴
- 設定したスクリーン内でのみアクセスできる
- 別のスクリーンに遷移すると値は引き継がれない
UpdateContext({変数名: 値})で設定する(中括弧{}が必要)
使い方
UpdateContext({isLoading: true})
UpdateContext({errorMessage: "入力してください"})
UpdateContext({showDialog: false})
複数の変数を同時に設定することもできます。
UpdateContext({isLoading: false, showDialog: true})
参照の仕方
変数名をそのまま使います(SetとSetの書き方は同じ)。
If(isLoading, "読み込み中...", "完了")
向いているケース
- ローディング表示のON/OFF
- そのスクリーン内だけのフォームのエラーメッセージ
- ダイアログの表示/非表示フラグ
- スクリーン内だけで使う一時的な値
Set と UpdateContext の比較
| 比較項目 | Set(グローバル変数) | UpdateContext(ローカル変数) |
|---|---|---|
| スコープ | アプリ全体 | そのスクリーンのみ |
| 別スクリーンからアクセス | ○ できる | ✕ できない |
| 書き方 | Set(name, value) | UpdateContext({name: value}) |
| 向いている用途 | 共有データ・選択状態 | 一時的なUI状態 |
どちらを使うか迷ったときの判断の入口
「別のスクリーンでこの値を使う予定があるか?」
→ ある場合: Set
→ このスクリーン内だけ: UpdateContext
複雑なアプリになってくると、グローバル変数(Set)が増えすぎて管理しにくくなることがあります。スクリーン内で完結する値はUpdateContextを使ってスコープを限定するのがシンプルな設計につながります。
注意点
SetもUpdateContextも、アプリを閉じると値は消えます。次回起動時も維持したい値は、SharePointリストなどのデータソースに保存する必要があります。
また、変数名が分かりにくいと後でメンテナンスしにくくなります。isLoading・selectedId・currentUserのように用途がわかる名前をつけることをおすすめします。