Power Fx を理解する

完了

ロー コード開発について少し学んだ後、あなたと Kiana は、アプリケーションの構築でこれまでに使用してきた C# や JavaScript のようなプログラミング言語と Power Apps で使用される Power FX の間に共通点があることに気が付きました。

Microsoft Power Fx は、キャンバス ベースの Power Apps 内でロジックを記述するためのロー コード言語です。 Power Fx は Microsoft Excel をベースに開発され、Excel での多くの記述パターンを踏襲しています。

記述と式

ただし、Excel では単に式を作成するだけでなく、特定セルの値を計算するための式や方法を記述します。 A1 = B2 * 2 は、A1 の値を定義する式であり、B2 が変更するたびに自動的に再計算されます。

Power Fx は、同じ式のパターンを使用します。 セルは、コントロールまたはオブジェクトのプロパティで置き換えられます。 ここでは、リバース文字列検索のために、Stack Overflow から次の Excel の式を取得しました。

Excel の式: =RIGHT(A1,LEN(A1)-FIND(

ここから Power Fx の式を作成しました。 この 2 つで異なるのは、セルの参照がコントロール プロパティの参照に置き換わったことです。

Power Apps 内で実行される Power Fx の式: =RIGHT(Input.Text,LEN(Input.Text)-FIND(

同じ構文や関数が Power Fx で機能する点だけでなく、もう 1 つ別の点にも注目してください。 (上部ボックスの) Input.Text が変更されると、(下部ボックスの) Label.Text が自動的に再計算されます。 アプリはスプレッドシートのように動作し、実行方法を指定するコードをアプリ開発者が追加しなくても、常に再計算が行われます。

宣言型アプリ モデル

多くの従来型のアプリケーション開発スタックでは、スタック全体で命令型モデルが使用されています。 つまり、アプリ開発者は、認証と承認、ビジネス ロジック、ユーザー インターフェイス、サーバーまたはクラウド サービスの構成など、アプリで実行するすべての処理に対するコードを記述する必要があります。

Power Fx は、Excel と同様に宣言型の言語です。 開発者は必要な動作を定義しますが、動作方法やそれを実行するタイミングはシステムによって決定されます。 実際の作業では、ほとんどの作業は他に影響することなく関数によって実行されるため、Power Fx は機能的な言語であると言えます。

以下は、画面に色付けを行うためのより複雑な式の例です。 赤、緑、および青を制御するスライダーが変更されると、背景色は再計算され、自動的に変化します。

Power Fx の式: Fill = RGBA( RedSlider.Value, GreenSlider.Value, BlueSLider.Value, 100% )

他の言語で一般的に使用される、スライダー コントロールの OnChange イベントは必要ありません。 実際に、Fill プロパティの値を明示的に設定する方法はありません。 つまり、信頼できるソースは 1 つだけ存在することになり、これは大きなメリットになります。 色が正しく変更されない場合、1 つの式を確認するだけで理由を理解することができます。 予期しないタイミングでプロパティを設定する孤立コードをアプリで探す必要はありません。 実際、時間の要素はなく、正しい式の値が常に保持されます。

スライダーが濃い色に設定されるに従って、赤、緑、青のラベルが白に変わっていく点にも注目してください。 これは、各ラベル コントロールの “Color” プロパティの単純な式によって行われます。

If(
    BlueSlider.Value + GreenSlider.Value + RedSlider.Value < 150,
    White,
    Black
)

ラベルの色を設定するロジックは、背景色を変更するロジックとは切り離されている完全に別の計算です。 通常 Power Fx ロジックでは、大きなモノリシック プロシージャではなく、多数の独立した小さな式が使用されます。 こうすることで、ロジックが理解しやすくなり、既存のロジックを妨げることなく拡張することができます。

命令型には時間と場所の手順ごとのロジックがありますが、Power Fx でも同様のロジックを使用できます。 アプリは変更をデータベースに書き込み、ボタンの押下で自動化を開始しますが、スプレッドシートではこのような操作は実行されません。 上記の利点や Excel との一貫性のために、可能な限り宣言型のアプローチを推奨します。

メモ

命令型の開発手法の使用については、Power Apps のキャンバス アプリに命令型の開発手法を利用するを参照してください。