Ignite Microsoft は本日、Power Platform 向けのローコード言語である Power Fx を発表しましたが、これは同社がキャンバス アプリと呼ぶ既存の数式言語から抽出されたもので、まったく新しいものではありません。
同社は長年、クラウド向けのVisual Basicに相当する、非プログラマーでもビジネスアプリケーションを構築できるツールを探していました。そして、主要ソリューションとしてPower Appsを選定しました。Power Appsは複数のコンポーネントで構成されています。
その中核を成すのは、Microsoft Dataverse(旧称Common Data Service)です。これはDynamicsのデータプラットフォームであり、カスタムデータやSQL Serverなどの他のソースへのコネクタによって補完されています。Power Appsには3種類あります。モデル駆動型アプリ(Dynamics CRM上に構築されたフォームによく似ています)、キャンバスアプリ(開発者が白紙の状態から開発を始める)、そしてポータルアプリ(Dataverse上に構築されたウェブサイト)です。
キャンバスアプリはExcelのような数式言語をサポートしていますが、Microsoftはこれをキャンバスアプリから抽出し、より幅広い適用範囲を実現するとともに、「Power Fx」という名称も採用しています。Excelに似ているという事実は、Microsoftがスプレッドシートを使いこなすビジネスパーソンにアピールしたいと考えていることを考えると、大きな意味を持ちます。
Power FxはYAMLに埋め込むことができ、VS Codeなどのツールでソースコードを管理したり編集したりできます。
マイクロソフトがCommon Data ServiceをDataverseに改名した際、テーブルデータの用語をレコードとフィールドから行と列に変更したのも、おそらく同様の理由によるものでしょう。「何億人もの人々が毎日Excelでスプレッドシートを作成しています。彼らが既に知っているExcelの概念を活用し、簡単にアプリを作成できるようにしましょう」と、同社はPower FxのGitHubリポジトリで述べています。
Microsoftは、Power Fxをモデル駆動型アプリ、Dataverseの計算列、Power Virtual Agents(チャットボット)、Power Automate(ワークフロー)に拡張する予定です。Githubリポジトリは現在ドキュメントのみで、Power Fxを実行するには「Power Appsの無料トライアル」が必要です。
概要ドキュメントでは、Power Fx は数式ベースであると説明されています。例として挙げられていたのは、スライダーをドラッグすると色が変わるパネルです。スライダーにはイベントハンドラーはありませんが、背景の塗りつぶしはスライダーの値を含む数式で定義されています。「色が期待どおりに動作しない場合は、この数式を確認する必要があります」と説明されています。
さらに、アプリケーションは常にライブ状態であり、コンパイルモードや実行モードは存在しないという点も挙げられます。「増分コンパイラは、プログラムとそれが処理するデータの同期を継続的に維持するために使用されます」とMicrosoftは説明しています。
同社によれば、Power Fx は、他の言語では労力を要する作業を自動化および簡素化する。例として、非同期コード (常に使用)、サーバー側コードとクライアント側コード (「Power Fx は、可能なものはサーバーに自動的に委任します」)、リレーショナル データ (「メーカーは、単純なドット表記を使用して、レコードの関係のグラフ全体にアクセスできます」)、およびデータ列の選択 (Power Fx は、必要と思われるものだけを取得します) が挙げられる。
プロのコーディング担当者は、ビジュアル環境ではなくVisual Studio Codeなどのエディタを使い、コードをソースコード管理下に置くことを好む傾向があります。Power Fxは、YAMLソースファイルに数式を埋め込むことでこれを可能にします。YAML構文は正しく記述するのが容易ではないため、ローコード開発を行うビジネスユーザーにとってこのオプションは必ずしも好ましい選択肢とは言えません。
MicrosoftはPower Fxを宣言型かつ関数型と説明しましたが、完全にそうとは言えません。「副作用のない純粋関数を推奨します」とドキュメントには記されていますが、「アプリは本質的に状態を変化させます。そのため、一部の関数には副作用があります」とも書かれています。
この言語は強い型付けを持つと言われていますが、型は使用状況から推測され、明示的に宣言されることはありません。ただし、技術的には、すべての値の型はコンパイル時に判明します。オブジェクト指向ではありません。
珍しい機能として、すべてのPower Fxドキュメントには「言語バージョンスタンプ」が含まれています。これは、古いコードであっても、最新のランタイムに互換性のない変更があっても、正しく実行されることを意味します。その後、ドキュメントを開いて編集すると、システムは新しいランタイムに合わせて数式を自動的に書き換えます。
背景塗りつぶしはPower Fx式によってスライダーにリンクされています。イベントハンドラーはありません。
Power Fx の問題は、Microsoft の Power Platform に結び付けられているため、Excel から多くの部分を借用しているという事実を除けば、より広範囲に使用できる言語として普及できないことです。
もう一つの問題は、スマートさを追求したプラットフォームが、開発者の意図通りに動作しない場合、フラストレーションを感じさせる可能性があることです。これはブラックボックスであり、コードの動作をトレースする手段が限られているためです。しかし、ここでのメッセージは明確です。Power Fxこそが、Microsoftのローコード環境で高度なアプリケーションを構築するために開発者が扱わなければならないものなのです。®