PowerAppsの変数(グローバル変数・コンテキスト変数)の使い方

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リストなどのデータソースに保存する必要があります。

また、変数名が分かりにくいと後でメンテナンスしにくくなります。isLoadingselectedIdcurrentUserのように用途がわかる名前をつけることをおすすめします。


関連記事

タイトルとURLをコピーしました