グローバル変数

完了

グローバル変数は柔軟性が高いため、最も一般的に利用されている変数です。 変数の設定後、それをアプリ全体で参照したり、更新したりすることができます。 それにより、同じ情報を繰り返しクエリすることを回避できます。必要な情報を命令方式で構築したり、単純にプレースホルダーとして構築したりできます。

ユーザーの情報を格納する

アプリの一般的な設計パターンは、アプリを個人用にカスタマイズすることです。 たとえば、アプリの各画面に "ようこそ" を表示し、ユーザーの名前を表示するような単純なカスタマイズも可能です。 Power Apps では、ラベル コントロールで次の式を使用することで、宣言方式でようこそメッセージを表示し、ユーザーの名前を取得できます。

"Welcome " & User().FullName

この式は Welcome という文字列を表示した後、ユーザーの DisplayName プロパティを Azure Active Directory にクエリし、それをテキストとして表示します。 ただし、各画面にこの関数を含めると、画面を開くたびに、Power Apps は Microsoft Entra ID から直接、そのデータをクエリしなければなりません。 このため、ネットワークが繰り返し呼び出され、アプリの動作が遅くなります。

アプリを起動したときに、グローバル変数にその情報を格納し、アプリ全体でその変数を参照するという手法が推奨されます。 これは、次の式でアプリの OnStart プロパティを変更することで実行できます。

Set(varUserDisplayName, User().FullName)

ラベル コントロールに対して、式を次のように変更します。

"Welcome " & varUserDisplayName

前の手順のコードと対応するメッセージのスクリーンショット。

この式では、前の式と同じ出力が得られますが、各画面で Microsoft Entra ID に戻る必要がなく、Power Apps は変数に格納されている値を参照できます。

変数の状態を追跡する

宣言型のプログラミングでは、データのクエリに基づいてコントロールの表示/非表示を切り替えるでしょう。 たとえば、顧客の注文を管理するアプリがある場合、顧客の未払い請求書が 3 件を超えた場合にのみ、警告アイコンを表示するようにします。 この警告に加え、未払い請求書が 3 件を超えている場合、顧客が新しい注文を送信しようとしたときにマネージャーの承認を取得することを必須にします。 この承認ワークフローは、ユーザーが承認ボタンを選択したときに開始されます。

宣言型のプログラミングでは、警告アイコンの “Visible” プロパティを次のように設定するでしょう。

CountRows(Filter(InvoiceEntity, CustomerNumber = ThisCustomersNumber 
And Status = "Outstanding")) > 3

アイコンは true の場合に表示され、false の場合に表示されません。 次に、[承認] ボタンの “Visible” プロパティで同じ式を繰り返します。

問題は、2 つの異なる場所で保守管理する式が複雑になることと、クエリから重複するネットワーク トラフィックが生成されて、アプリで処理され、データ ソースで処理されることです。

複雑な呼び出しを一度だけ実行して、結果を変数に保存し、その変数を利用して各コンソールの “Visible” プロパティを制御する手法が推奨されます。

これを行うには、画面の OnVisible プロパティを構成し、変数を設定します。

Set(varOustandingExceeded, CountRows(Filter(InvoiceEntity, CustomerNumber = 
ThisCustomersNumber And Status = "Outstanding")) > 3)

変数 varOutstandingExceeded は、式の結果に基づいて true または false になります。 ここで、アイコンとボタン コンソールの Visible プロパティを varOutstandingExceeded に設定します。

追加の式や関数は必要ありません。 これは、これらのコントロールが Visible プロパティの true または false を受け取り、変数が true または false になるためです。 画面の OnVisible プロパティの Set 関数に基づき、Power Apps は変数の種類をブール値に設定し、式の結果に基づいて値を true または false に設定します。

このような小さな変更でアプリの効率が高まり、保守管理が簡単になります。 使用中に変更されない情報を繰り返し取得するときは、常に変数を組み込んでください。