2024年5月版 - Copilot in cloud flowsの機能

:::note warn
本記事は2024年5月4日に書かれたものです。
:::

# はじめに
進化が激しいCopilot。
`Power Apps`や`Power Automate`にも`Copilot`の機能が2024年5月頭の時点でも使用できる状況です。

試験的な機能だと思いますが、せっかく使える機能を使わないことは、宝の持ち腐れ。
今できることを検証し、Qiitaにまとめます。

https://learn.microsoft.com/ja-jp/power-automate/get-started-with-copilot

# Copilotを試験的に使うときのスタンス

まず記事を書く前に、[Microsoft learnの文章](https://learn.microsoft.com/ja-jp/power-automate/get-started-with-copilot)を引用します。

> Copilot は、現在も開発中の新しい技術です。 英語での使用に最適化されており、他の言語でのサポートは限定的です。 そのため、その一部が優先する言語ではなく英語で表示される場合があります。
>> [クラウド フローで Copilot の利用を開始する Microsoft learnより](https://learn.microsoft.com/ja-jp/power-automate/get-started-with-copilot)

`現在の開発中の新しい技術` ということが何よりのポイントです。
期待する能力が100%発揮されるかどうかは、AI技術全般にも言えますが、
保証されているものではないということを念頭に置いて使う機能だと思っています。

夢のある技術ですが、今自分が期待するものではないからというので、評価を下すのは尚早だということを先にお伝えします。

# できること1 「プロンプトからクラウドフローを作成する」
トップページの赤枠の機能に、プロンプトを記入することで、クラウドフローを作成できます。
また必要な接続もセットアップされることが、ポイントです。

[learnにある下記のプロンプト](https://learn.microsoft.com/ja-jp/power-automate/get-started-with-copilot#examples-of-interactions-with-copilot)で試してみます。

```
contoso@gmail.com からのメールを受信したら、Teams に投稿します。
```

1. 記述画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/a821ef53-2240-507a-8b10-a5fb233682ea.png)
1. 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/93fedba2-c065-b1f6-32d4-2642fddb8f96.png)

:::note info
2024年5月4日段階ですが、日本語による記述でも、アクション名が英語になるものの、正しいフローが生成されます。
:::

どんなプロンプトが試せるのか…判断が難しいところですが、[Sample Solution Gallery](https://adoption.microsoft.com/en-us/sample-solution-gallery/?keyword=prompt&sort-by=updateDateTime-true&page=1&product=Power%20Automate&keyword=prompt)のページから、有効であるプロンプトが紹介されています。
是非、こちらから使えそうなものを見ていただきたいです。

https://adoption.microsoft.com/en-us/sample-solution-gallery/?keyword=prompt&sort-by=updateDateTime-true&page=1&product=Power%20Automate&keyword=prompt

プロンプトは英語が有効です。
翻訳をガンガン使い倒していきましょう。

```plaintext:日本語プロンプト
5pmに"gatsuo@gmail.com"が差出人のメールを一日分取得し、それぞれのメールのタイトル、本文でHTMLテーブルを作成し、Teamsでフローボットから投稿します。
```

```plaintext:英語に変換
At 5pm, retrieve the day's worth of emails from the sender "gatsuo@gmail.com", create an HTML table with the title and body of each email, and post it from Flowbot in Teams.
```

それらしいものが出来上がります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/e63a87f9-057f-5292-82c0-be78978cc3ff.png)

内容は微調整が必要ですが、都度設定する手間が省けます。
細かいタスクは、英語のプロンプトを控えて、サッと作り上げることを期待しましょう。

# できること2 「作成したクラウドフローを説明する」★★★★★★
これを紹介したいがために記事を書いたのですが、**自分が作成したクラウドフローの説明をCopilotがしてくれます。、**

特にメモ欄や概要など、記載項目が多く設けられているPower Automateには、書ける情報をなるべく書いたほうが、保守性という観点ではいいでしょう。しかし手間です。

ただそれもCopilotに任せると非常に楽！

## 実験！

かなり評判を頂戴した[Power Apps・Power Automate・Teamsによる承認者数を自在に設定できるワークフローを作成する](https://qiita.com/DEmodoriGatsuO/items/56c3324dae17a961e891)のPower Automateフローで実験。

https://qiita.com/DEmodoriGatsuO/items/56c3324dae17a961e891

プロンプトは純正の日本語で実行します。

```plaintext:プロンプト
この承認ワークフローの概要を、変数の役割、使用する接続、SharePointサイトを含めて、詳しく説明してください。
```

```plaintext:Copilotの回答
この承認ワークフローでは、変数がいくつか使用されます。
例えば、"Approver"という変数は、承認者の名前やメールアドレスを格納するために使用されます。
また、"ApprovalStatus"という変数は、承認の状態（承認済み、却下など）を格納するために使用されます。

このワークフローでは、SharePointサイトとの接続も使用されます。
例えば、ワークフローが特定のドキュメントライブラリ内のファイルを承認する場合、SharePointサイトへの接続が必要です。
この接続を使用して、ワークフローはファイルの詳細を取得し、承認者に通知を送信します。

また、このワークフローでは、メールサービスとの接続も使用される場合があります。
例えば、承認者に承認の依頼を送信するために、メールサービスへの接続が必要です。
この接続を使用して、ワークフローは承認者にメールを送信し、承認の結果を受け取ります。

以上が、この承認ワークフローで使用される変数の役割、接続の使用方法、およびSharePointサイトとの関係の概要です。
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/feaebc0e-2432-1ec9-07ad-a90487f1f525.png)


**素晴らしすぎる!!!**
日本語ですよ！これは凄すぎると思い、**狂喜乱舞する勢い**です。

これがGAされたとき、**Power AutomateのPowerはとんでもないことになるぞ！！** と今から興奮します！

ほんっとにお勧めの機能ですので、ぜひお手元の環境で試してみてください！


# できること3 「関数を作成する」
Power Automateの関数ですが、種類が非常に豊富であり、「あれ、この関数ってどう書くのだったか？」と度々悩んでしまいます。

そこも**CopilotのPowerがキラリ✨**と光る瞬間です。

たとえば、`utcNow関数`という関数があります。
そちらを・・・、いやCopilotに説明してもらいましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/07f6e106-b7fd-0b66-acf6-513bbc7bf17c.png)

```plaintext:結果
utcNow関数は、Power Automateで使用される関数の1つです。
この関数は、現在の日時を協定世界時（UTC）で取得するために使用されます。
つまり、この関数を使用すると、現在の日時をUTC形式で取得することができます。
この関数は、日付や時間を操作するために使用される他の関数と組み合わせて使用することができます。
たとえば、特定の日時をUTC形式で計算したり、日時の差を計算したりする際に使用することができます。
```

機械的ですが、現在時刻を取得する関数ですね。
`utcNow関数`を実行した場合、戻り値は現在のUTC日時(世界協定時間)になります。
つまり、日本時間と9時間ずれます。

毎回日時を日本時間に調整することが手間ですが、Copilotに聞くと・・・

```plaintext:プロンプト
現在日時を日本時間で出力する関数を教えてください。
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/af414ea1-2db1-1fb0-e66c-66cd7ecaa4ee.png)

```plaintext:結果
Power Automateでは、現在の日時を日本時間で出力するためには、以下の手順を実行します。

1. 「Compose」アクションを追加します。
2. 式エディタを開き、以下の式を入力します：addHours(utcNow(), 9) この式は、現在の日時（UTC）に9時間を加えることで、日本時間に変換します。
3. 「Compose」アクションの出力を使用して、日本時間の日時を利用することができます。

この方法で、Power Automateで現在の日時を日本時間で出力することができます。
```

**エクセレント!!**
関数は`addHours(utcNow(), 9)`ですね！

[SharePointコネクタの複数の項目の取得](https://learn.microsoft.com/ja-jp/connectors/sharepoint/#%E9%A0%85%E7%9B%AE%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B)の戻り値の判定

https://learn.microsoft.com/ja-jp/connectors/sharepoint/#%E9%A0%85%E7%9B%AE%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B


```plaintext:プロンプト
SharePointの「複数の項目の取得」の戻り値の数を数える関数を教えてください。
````

```plaintext:結果
Power Automateでは、「複数の項目の取得」アクションの戻り値の数を数えるための特別な関数は提供されていません。ただし、戻り値は配列として返されるため、配列の長さを取得することで項目の数を数えることができます。

例えば、以下のような式を使用して配列の長さを取得できます：

length(outputs('複数の項目の取得の戻り値'))
この式は、"複数の項目の取得の戻り値"というアクションの出力の配列の長さを返します。
```

**バッチリ！**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/d248558f-1658-aaa1-a2f1-d16fdab23fd5.png)

```plaintext:プロンプト
base64ToString関数を説明してください。
```

```plaintext:結果
base64ToString関数は、Base64エンコードされた文字列をデコードして元の文字列に変換するための関数です。
Base64エンコードは、バイナリデータをテキスト形式に変換するための方法であり、データの安全な転送や保存に使用されます。

base64ToString関数を使用すると、Base64エンコードされた文字列をデコードして元の文字列を取得できます。例えば、Power AutomateのアクションでBase64エンコードされた画像を受け取り、それをデコードして表示する場合に使用することができます。
```

悩み勝ちな`base64`の解説も素晴らしい！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2734332/b0f7be92-d1a9-a0a9-700d-5a1369378edd.png)

**日本語も結構いけるじゃないですか！**
難しければ、[Copilot in Edge](https://learn.microsoft.com/ja-jp/copilot/edge)を使うなり、手段は様々！

https://learn.microsoft.com/ja-jp/copilot/edge

**めちゃくちゃ熱い機能！**
[Microsoft Build](https://microsoft-events.connpass.com/event/314114/) も楽しみです！

https://microsoft-events.connpass.com/event/314114/

# おわりに
Copilotの躍進で正に仕事の景色が大きく変わりそうです。
OpenAI、Microsoftの凄まじいタレント達に改めて敬服します。

**使いこなして自分が出せるせきかを引き上げていきたいものです。**

そういえば、[Microsoft learnで新しいラーニングパス](https://learn.microsoft.com/ja-jp/training/paths/get-started-with-microsoft-365-copilot/)がでていました。


https://learn.microsoft.com/ja-jp/training/paths/get-started-with-microsoft-365-copilot/

こちらはMicrosoft 365のCopilotですね！
**身につけて新時代に備えましょー！**