web
You’re offline. This is a read only version of the page.
close
Skip to main content

Notifications

Announcements

No record found.

Community site session details

Community site session details

Session Id :
Dynamics 365 Community / Blogs / Microsoft Dynamics ブログ / Power Fx をオープン ソースとして提供開始

Power Fx をオープン ソースとして提供開始

Asami Hirai Profile Picture Asami Hirai

(本投稿は米国時間2021年11月2日付のブログ投稿の日本語抄訳です。内容に齟齬がある場合、原文を正とさせていただきます。)

このたびマイクロソフトは、Microsoft Power Fx をオープン ソースとしてプレビュー リリースしました。Power Fx は Excel に似たロー コードのプログラム言語で、MIT ライセンスに基づき、お客様のプロジェクトに自由に統合できます。

Power Fx については 3 月の Ignite の場で発表し、概要詳細についてのブログ記事を 2 本公開しました。どちらも今年投稿した中で特に閲覧数の多い記事となっています。Power Fx には、私たちの予想をはるかに上回る関心をお寄せいただいています。

そして今回、そのソース コードが公開されました。このリリースはプレビューであることから、メジャー バージョンの番号は 0 となっています。皆様からのご意見を参考にしつつ、セマンティクスやホスティング API の具体化に向けて、今後も全力で取り組んでいきます。すべての関数を実装したわけではなく、数式バーもまだ提供できない状態のため、ご質問も多数あるかと思いますが、皆様のお力を借りながら共にこの成長のジャーニーを進んでいければ幸いです。

フィードバックのご提供や最新情報の確認については、マイクロソフトの GitHub リポジトリ (https://github.com/microsoft/power-fx (英語)) をご覧ください。

ロー コードをあらゆる人に

Power Fx は、あらゆる人を対象としたロー コード言語です。Excel で数式を記述しているユーザーは数億人に上りますが、その知識を活用していただくことができます。自然言語が GPT-3 でサポートされており、ノー コード ビルダーによって Power Fx 関数が作成されるため、使用のハードルが低くなっています。

また、開発時間も劇的に短くなるため、プロ開発者にも好まれています。宣言型で厳密に型指定された関数言語ベースとなっています。差分コンパイル、Intellisense、即時のエラー レポート、作成時の実行といった、充実した作成エクスペリエンスを得られます。VS Code や Git などのツールやワークフローが既に含まれていますが、本日は、GitHub、Azure Dev Ops、その他の Git プロバイダーから Power Apps Studio を使用する共同オーサリング機能も試験的にサポートすることを発表しました。

何よりも、共通言語として Power Fx を使用することによって、この 2 つの陣営の間がスムーズにサポートされるようになります。幅広いスキルと専門知識を持つ人々が共同で作業するフュージョン チームによって、非常に効果的なソリューションを作成できるようになります。

ロー コードをあらゆる環境に

3 月には、2 つの統合機能のプライベート プレビューを Power Platform に実装しました。1 つは、モデル駆動型アプリのコマンド実行機能 (英語) です。Power Fx でコマンドを記述して実装できるため、プロセスが簡素化され、JavaScript を使用する必要もありません。

 

 CommandingBlog.gif

もう 1 つは、Dataverse 関数列 (英語) です。Power Fx を使用して、レコードの列をまたいで簡潔で強力な関数を容易に記述できます。

 

 2021_2D00_10_2D00_31_5F00_22h20_5F00_29.gif

この取り組みはまだ始まったばかりです。現在は Power Virtual Agents と Power Automate Desktop への統合を進めており、来年には実装される予定です。

その価値は明確で、ある製品で Power Fx を習得したら、その知識を他のさまざまな製品でも活用できます。数億人の Excel ユーザーが既に持っている知識を活用できるという、Power Fx が誕生した理由と同じです。

そして、価値はそれだけに留まりません。この知識を活用できる範囲が業界全体にまで広がればさらに強力です。プログラム言語の成功は、単体では成立しません。ユーザーの皆様は、私たちが想像もしないようなシナリオを見つけてくれます。成長のためには、それを使用するユーザーや活発なユーザー コミュニティが必要です。そうした理由から、Power Fx はオープン ソース化することになりました。ロー コードをあらゆるユーザーとあらゆる環境にお届けします。

Acumatica (英語) には、初期からこの取り組みにご協力いただいています。同社は早い段階でその将来性を見出し、マイクロソフトとの共同作業を開始して機能やホスティング API の決定に協力し、重要なフィードバックを提供してくれています。Acumatica の最高戦略責任者兼エグゼクティブ バイス プレジデントである Ajoy Krishnamoorthy 氏は、Acumatica Summit 2021 カンファレンスで、Power Fx への取り組みについて次のように報告しました。(動画についてはブログ投稿をご参照ください)

マイクロソフトの目標は、Acumatica をはじめとするあらゆる組織で、広く普及している Excel 関数言語をユーザーが利用してロー コードでカスタマイズできるようにすることです。そのためにあるのが、Power Fx です。

実際に使用してみる

それでは、簡単なサンプルを使って Power Fx をご紹介しましょう。Read-Eval-Print Loop (REPL) コンソール アプリケーションで、関数の定義、変数の取り扱い、式の評価を行えます。

ここでは手順を簡略化するために、無料提供されている Visual Studio Community Edition を使用します。この方法でなくても、ここで必要なものは C# のソースおよびNuGet パッケージとして GitHub から入手できます。

  1. Visual Studio 2019 以降がインストールされていない場合は、Community Edition をインストールします。
  2. Visual Studio を起動します。[What would you like to do?] ダイアログで、右側の [Clone a Repository] を選択します。
  3. https://github.com/microsoft/power-fx-host-samples」と入力してから [Clone] を選択します。
  4. ソリューション エクスプローラーで [ConsoleREPL] ソリューションを選択します。
  5. [Build] メニューで [Build Solution] を選択します。これで必要な Power Fx の NuGet パッケージがダウンロードされ、インストールされます。
  6. [Debug] メニューで [Start Debugging] を選択します。コンソール ウィンドウがポップアップします。
  7. これで Power Fx が実行されます。Excel 関数を何か入力して試してみましょう。

2021_2D00_10_2D00_31_5F00_15h53_5F00_20.gif

次に手順を説明します。

  • 式を評価するには、単純にそれを入力します。たとえば、2+2 を入力します。ホスト アプリケーション コード内で、式の文字列を伴う engine.Eval への呼び出しが作成されます。解析はすべて Power Fx が行います。
  • Set 関数を使用して変数を設定します。方法は Power Apps Canvas と同じです。たとえば、「Set( Radius, 10 )」と入力すると、Radius 変数に 10 という数値が代入されます。内部で engine.UpdateVariable への呼び出しが作成されます。
  • 変数名 = 」という形で関数を定義します。ここでは、円の面積を求める公式「Area = 3.14 * Radius * Radius」としました。内部で engine.SetFormula への呼び出しが作成されます。
  • この関数は他の関数や変数に依存するため、依存先が変更されると自動的に再計算が実行されます。Radius の値を 400 に変更して「Set( Radius, 400 )」と入力すると、内部で engine.UpdateVariable が呼び出され、Area の再計算結果が自動的に表示されます。
  • 次に、円周を求める式を追加してみましょう。また、Radius の値をさらに 800 に変更すると、Area と Circumference の両方が自動的に再計算されます。スプレッドシートのセルの依存関係と同様です。
  • REPL の使用に関する情報を取得するために、Help() を評価します。Help 関数はホストで提供される関数で、Power Fx 言語の正式なものではありません。ホストの共通パターンとして、ホスト自体から提供されます。これは、engine.AddFunction の呼び出しとして登録されます。

Console REPL ホストのサンプルのソース コードは、https://github.com/microsoft/power-fx-host-samples/blob/main/Samples/ConsoleREPL/ConsoleREPL.cs (英語) ですべてご覧いただけます。

円のプログラムも興味深いですが、テーブルを含む例も見てみましょう。Power Apps Canvas と同じフィルタリング、並べ替え、集計の機能を使用できます。

2021_2D00_10_2D00_31_5F00_15h48_5F00_00.gif

さらに詳しい説明

今回のリリースでは、Power Fx を C# として実装できます。お客様や内部パートナーは、最初のステップとして、サーバー環境で C# を実行することに最も強い関心を持っていました。Power Apps では JavaScript コード ジェネレーターが使用され、Dataverse 関数列では SQL コード ジェネレーターが使用されます。これらは今後実装を予定しています。コード ジェネレーターにかかわらず、すべての統合機能で同じコンパイラ フロントエンドが使用されます。

_3B75CF50_1.jpg

現時点では、Power Apps Canvas と Excel から約 60 種類が実装されており、今後さらに拡充される予定です。

また、この取り組みでは、VS Code と同じエンジンを使用するオープン ソースの Monaco (英語) を基盤とするコンパニオン数式バーを実装しています。これも同様にオープン ソースで、npm パッケージとして提供されます。この数式バーは、この記事で先ほど紹介したコマンド実行と関数列の 2 つのアニメーションで確認できます。数式バーは Power Fx エクスペリエンスにおいて不可欠なパーツであり、数式の入力中に候補を提示したり、警告やエラーをその場でフィードバックしたりします。この機能は今回のリリースには間に合いませんでしたが、数か月以内に実装される予定です。

ソース コードの入手方法

ソース コードに関連する GitHub リポジトリは 2 つあります。

コアは必ずしもクローニングしてビルドする必要はありません。Console REPL で使用される NuGet パッケージには、Microsoft.PowerFx.CoreMicrosoft.PowerFx.Interpreter の 2 つがあります。これらのパッケージの作成には https://github.com/microsoft/power-fx (英語) のソースが使用されています。

現在 NuGet パッケージがホストされている場所は仮置き場であり、近いうちに NuGet.org に移動する予定です。

マイクロソフト純正製品も、同一のオープン ソース製品および NuGet パッケージを使用しています。このため、オープン ソース製品と同じ品質であり、マイクロソフトの社内と社外の両方で Power Fx を使用して、製品数を増やしています。

次のステップ

先にお伝えしたとおり、今回のものはバージョン 0 です。プレビューであり、今後さまざまな点が変更されます。この言語やホストのしくみは、これから皆様と共に徐々に進化させていきます。https://github.com/microsoft/power-fx (英語) がその舞台となりま

Comments

*This post is locked for comments