0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Microsoft Power Fx の概要

Posted at

業務でMicrosoft Power Apps を恒常的に利用するにあたり、Power Fx の概要を把握するためにこの記事を書いてみようと思います。

参考資料:
https://github.com/microsoft/Power-Fx/blob/main/docs/overview.md
https://learn.microsoft.com/en-us/power-platform/power-fx/overview

Microsoft Power Fx の概要

Power Fx は、

  • キャンバスアプリ(Power Apps)の数式言語(Formula language)の新しい名称
  • Power Platform の他の製品と統合し、オープンソースとして利用できるよう進行中
  • Power Platform 全体で使用されるローコード言語
  • 汎用的ながらも強力な型付けがなされた宣言的な関数型プログラミング言語
  • Excel のように簡単に記述することができる
  • プログラミングをしたことがない人のための「ノーコード」から、熟練したプロのための「プロコード」まで、あらゆる開発範囲をカバー

例えば、文字を逆順に検索する数式は以下のようになります。

Excel の場合:
reverse-search-excel.png

Power Fx の場合:
reverse-search-power-apps.gif

Power Fx では、Input: のコントロールの値が変更されると、Label: のコントロールは自動的に計算式を再計算して新しい値を表示します。他の言語によくあるようなOnChangeイベントハンドラはありません。

スプレッドシートと同様にPower Fx は常に「ライブ」で、コンパイルモードや実行モードに変更することなく瞬時に反映され、エラーも瞬時に検出&表面化されます。またPower Fx に実装されているインクリメンタルコンパイラによって、インテリセンス(IntelliSense)、提案、自動補完、型チェックもサポートされています。

Power Fx の式は非常に強力で、ほとんどのロジックを1行で記述することができます。

JavaScriptとの比較の例:
low-code-javascript.gif

Power Fx の設計原則

  • シンプル:非プログラマー向けに設計され、学習負担が少ない。一方で開発者の生産性も向上
  • Excelとの整合性:Excelの式をベースとしており、直感的な操作が可能。必要に応じてSQLの考え方も活用
  • 宣言型:「何をしたいか」を記述し、処理順序やタイミングは自動的に最適化
  • 関数型:副作用のない純粋な関数を優先。必要に応じて状態変更もサポート
  • 機能的:機能を組み合わせて使いやすく設計
  • 強い型付け:型はコンパイル時に確認され、エラーを早期発見
  • 型推論:明示的な型宣言なしで、型を自動的に判断
  • ローカライズされた小数点セパレータ:Excelと同様にロケール(地域)に応じた小数点表記
  • 非オブジェクト指向:プロパティやメソッドではなく関数として操作
  • 拡張性:独自のコンポーネントや関数を作成可能
  • 開発者フレンドリー:コメントや互換性維持など、開発者に配慮
  • 発展的言語:後方互換性を重視しつつ、柔軟に改善可能
  • 未定義値なし:未初期化変数は空白値(a blank value)として扱い、エラーや曖昧さを回避
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?