コルネの進捗や備忘録が記されたなにか

進捗や成果物や備忘録てきななにかを雑に更新していきます。

Power Appsで利用可能な数式であるPower FxがCopilotによってより手軽に利用できるようになります


スポンサードリンク

はじめに

Power AppsではPower Fxという関数式が利用可能です。

Power Appsを利用したことがる方ならお馴染みの、Filter関数やSort関数などの関数式がそれにあたりますね。

そんなPower Fxの利用がCopilotによって強化されます!

powerapps.microsoft.com

Copilotによって以下ができるようになるらしいです。

  • Copilotによる数式の解説
  • 自然言語による数式の提案

GitHub Copilotなどのコーディング時に利用可能だったAI機能の一部がPower Fxでも利用可能になった形ですね。

なおこの機能は現在、英語環境のみで利用可能です。
日本語で利用したい場合はもう少し待ちましょう。

CopilotによるPower Fxの強化を体験してみる

Copilotによる数式の解説

Copilotによって数式の解説ができるようになりました!

実際利用している様子は以下ポストの動画をみてみてください。

Copilotによる数式の解説機能は、数式バーの左端にCopilotアイコンが表示されていますので、こちらを選択して、"Explain this formula"を選択することにより解説を行ってくれます。

解説を行ってくれた結果が"Copy"を選択することでクリップボードにコピーすることが可能です。
数式内に自動でコメントを追加してくれる機能ではないので注意してください。

今回数式は As 演算子の解説に載っている、チェス盤パターンをテキスト文字列として生成する数式を利用させていただきました。

learn.microsoft.com

Concat(
    ForAll( Sequence(8) As Rank,
        Concat(
            ForAll( Sequence(8) As File,
                    If( Mod(Rank.Value + File.Value, 2) = 1, " X ", " . " )
            ),
            Value
        ) & Char(10)
    ),
    Value
)

動画でも行われていますが、こちらの数式を解説してもらうと以下のような結果になりました。

生成された解説-1

This expression concatenates the values of the 'Value' column for each combination of 'Rank' and 'File' where the remainder of the sum of 'Rank' and 'File' divided by 2 is equal to 1, with " X " as the separator. It then concatenates the resulting string with the 'Value' column again, using "." as the separator. Finally, it concatenates the entire string with the 'Value' column one more time.

日本語訳-1

この式は、'Rank' と 'File' の組み合わせごとに、'Rank' と 'File' の合計を 2 で割った余りが 1 になる 'Value' 列の値を、" X " をセパレータとして連結する。次に、". "を区切り文字として、結果の文字列を再び'Value'列に連結する。最後に、文字列全体をもう一度'Value'列に連結する。

こちらの解説ですが、また後日実行すると以下のような解説が返ってきました。

生成された解説-2

This expression concatenates the values in the 'Value' column for each combination of 'Rank' and 'File' where the sum of 'Rank' and 'File' is an odd number, and appends the 'Value' column at the end.

日本語訳-2

この式は、'Rank'と'File'の和が奇数である場合、'Rank'と'File'の各組み合わせの'Value'カラムの値を連結し、最後に'Value'カラムを追加する。

フィードバックなどにより日々精度が改善されているということですね。
皆さんもCopilotによる結果がよければGoodを、悪ければBadをフィードバックするようにしてCopilotの精度改善に協力しましょう!

さて、このようにPower Fxで作成した式をCopilotによって手軽に解説が行えるようになりました。

これにより以下が期待できるようになると思います。

  • 作成した数式にコメントを付ける
  • 三者から貰った or 引き継いだ数式をCopilotによって解説してもらう

ただ、今回例で利用した結果を見てもらえればわかるかと思いますが、あくまでもCopilotで解説可能なのは数式がどのようなことを行っているのかです。

なぜこのような数式を設定しているのか?についての意図や要件については解説してくれません。
それは数式だけではわからないですからね。

例えば今回ですと、この数式によって「チェス盤パターン」をテキスト文字列として生成しています。

これはCopilotにより生成された解説からでは汲み取れないですね。

これはローコード開発に限った話ではありませんが、数式(プログラム)には「実装者しか知り得ない情報を他の開発者にわかりやすく伝えること」を意識して記載するようにしましょう。

自然言語による数式の提案

コメントからの数式の提案

ブログ内にあるこちらの機能ですね。

https://powerappsblogmedia.azureedge.net/powerappsblog/2024/04/Comments-2-Fx-04262024.gif

こちらの機能は、2024/05/04 現在、私の環境ではまだ試すことができませんでした。。。

アイディアパネルによる数式の提案

イデアパネルがサポートされているコントロール (ギャラリー、データテーブル、テキストボックス、ドロップダウン、コンボボックス、テキストラベル) にて、アイディアパネルを利用することでCopilotによる数式の提案を受けることができます。

アイディアパネルとは、以下のように「Copilot」を選択して、その後表示されるポップアップを選択することで表示されるパネルのことですね。
表示されるポップアップの文字列はコントロールによって異なります。

実際の利用イメージとしては以下のようになります。

このようにアイディアパネルで提案された数式を選択して適用することができます。

ギャラリーコントロールですと Items プロパティが対象になりますね。

また提案される数式には式だけでなく、解説までついてきます。

もちろん初期表示されている数式だけでなく、自身が行いたいフィルター/ソート条件を自然言語で生成をお願いすることもできます。

例えば、以下のようなプロンプトを投げてみます。

Filters the table 'DummyPersonalInfo' to include only the rows where the value in the '血液型' column is equal to the string literal "A". It then sorts the filtered table based on the values in the '年齢' column in descending order.

これによって期待される結果は以下になりますね。

Sort(Filter('DummyPersonalInfo', 血液型 = "A"), '年齢', SortOrder.Descending)

ただ上の結果を見てもらえればわかる通り、期待していた結果とは異なる結果が提案されてしまいました。

Sort(Filter('DummyPersonalInfo', 'Title' = "A"), '年齢', SortOrder.Descending)

フィルター条件は 'Title' ではなく、 '血液型' ですね。
'Title' なんて一つも指示していないのにどこから出てきたのだろうか?

フィルター条件の方はミスがありましたが、ソート条件は問題なさそうです。

このような場合は、適応された式を自身で修正してあげる必要がありますね。

一応このようにアイディアパネルが利用可能であればギャラリー以外でももちろん利用可能ですよ。というのを示しておきます。

まぁプロンプトが悪いのか想定通りの提案してくれていないですが。。。

おわりに

以上のように、まだまだCopilotの機能は100%正確とはいえません。

Copilotを利用することで、初学者には開発のハードルが下がり、これまでの利用者にとってはCopilotのサポートを受けることでより生産性が増すことになるかと思います。

しかし、Copilotは言葉の意味の通り「副操縦士」です。
Copilotの提案を受けて最終的な決定を下すのは「操縦士」である、あなたです。

このことをきちんと理解したうえでCopilotを活用しましょう。


スポンサードリンク