【UiPath】Autopilot for Developersを試してみた（テキストから式を生成する編）

# １．はじめに
　Autopilot for Developersは2024年7月2日にGAされた機能となります。いくつかの機能がありますが、第2弾として今回はStudio Web上で「テキストから式を生成する」を試してみたいと思います。
　参考までに第1弾は[「テキストからワークフローを生成する」](https://qiita.com/tomohiroArai/items/833f7cb29cd71732d279)を触ってみました。
　また、[DevDivesというウェビナー](https://start.uipath.com/devdives240726_autopilotfordeveloper.html)で第1弾第2弾の一部内容に触れていますので、そちらも併せてご覧頂けると幸いです。

# ２．前提条件
　Automation Cloudにおいて、以下のいずれかのライセンスを保有していることを前提とします。
　　**・Automation Developer - ネームド ユーザー**
　　**・Citizen Developer - ネームド ユーザー**
　　**・Tester - ネームド ユーザー**
　細かな消費条件や制限については[公式Doc](https://docs.uipath.com/ja/autopilot/other/latest/user-guide/about-autopilot#licensing)をご参照ください。

# ３．機能の紹介
　機能としては主にプロンプト文から式（条件式や代入など）の生成をしてくれますが、ここでは少し細分化してみていきたいと思います。
| No | 機能 | 内容 |
| :---- | :---- | :---- |
| 1 | プロンプト文から式を生成 | プロンプト文をもとに条件式や代入式を作ってくれる |
| 2 | エラーの修正 | プロンプト文から生成された式や記述した式に構文エラーがあれば、修復をしてくれる |
| 3 | 式の検証 | 式で利用されている標準的な型（StringやDateなど）の変数をテストできる |

# ４．使ってみよう
　各機能毎に動作を見ていきたいと思います。
### ４．１．プロンプト文から式を生成
#### 前提条件
　事前にUiPath Demo サイトのサンプルExcelの行データを読み込んでいる状況で、条件分岐の条件をプロンプト文で作ってみたいと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301393/d72e2842-151a-8676-13f7-2aa1da434dfa.png)

#### トライ
　利用するプロンプト文は以下の通りとなります。
 > **Excelのデータの「タイトル」列が宿泊費であり、「金額」列が5000円を超える場合**

#### 結果
　「タイトル」列の比較が文字列への変換ができておらず、エラーとなってしまいました。ここで「エラーの修正」機能を利用したいところですが、Object型のまま修正しようとするようで、うまくいきませんでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301393/62c7d930-5bbb-5e20-e6eb-d976251f8a27.png)
そこで、以下のようにプロンプト文を変えてみます。
> **Excelのデータの「タイトル」列が文字列の宿泊費であり、「金額」列が5000円を超える場合**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301393/e47537c3-2949-0b5d-a83b-49f7b9d585f5.png)

:::note warn
　先ほどの式をクリアせずに実施すると、うまく既存の記載内容をもとに修正してくれます。一方で、式をクリアしてプロンプト文を実行すると、プロンプト文変更前と同様の結果になりました。記述されている式の内容を考慮してくれるようです。
:::

#### 考察
　再現性という部分については、難点がありますが、式が存在する場合は内容を考慮をしてくれる部分があるようなので、複数回プロンプト文を実行するか一部型を意識した記述をすることで改善されるようです。今後の進化に期待したいです。

### ４．２．エラーの修正
#### 前提条件
　先ほどと同じ式を他言語（例えば、Javaの演算子）で記述してしまった場合を考えます。
> **CurrentRow("タイトル").ToString() = "宿泊費" && Convert.ToDecimal(CurrentRow("金額")) > 5000**
#### トライ
　修正ボタンを押してみます。

#### 結果
　問題なく修正ができました。
**【Before】**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301393/5db57c75-06cb-e965-8dd4-47a5523c57ae.png)

**【After】**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301393/cd66c2a4-a46f-9f51-a069-ca86be059db9.png)

#### 考察
　1つ目の機能の修正時には利用できない場面があったため、多くの場面で利用できるかは不透明な印象です。ただし、ちょっとした構文エラーなどの際に有効活用できることを期待したいです。なお、式をプロンプト文から自由に生成できれば、この機能の利用範囲は限定的でも問題ないかなと思っています。

### ４．３．式の検証
#### 前提条件
　[前回の記事](https://qiita.com/tomohiroArai/items/833f7cb29cd71732d279)で作成したワークフローをもとにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301393/9c760651-2f1e-f75d-83b5-910eeb7ee954.png)

#### トライ
　ワークフローのOutlookでメールを送信するアクティビティの「件名」の内容を修正するため、「[式エディター]を開く」をクリックし、以下のように式を書き換えます。
> **"Autopilotテスト" + ExcelFile.CreationDate.Value.ToString("yyyy/MM/dd")**
　式入力後、ExcelのプロパティにあるCreationDateがテストできるようになり、2024年8月5日10時とします。

#### 結果
　「Autopilotテスト2024/08/04」となってしまい、想定した日と1日ずれています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301393/2dd25d8f-2131-4f20-9cec-7e16f1e3071f.png)
　UTCで実行されていると考え、9時に設定してみます。予定通り「Autopilotテスト2024/08/05」が表示されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301393/03525dd5-ccd0-6d34-fc88-0e51be5cab3e.png)

:::note warn
　Date側に関しては8時59分とした場合、2024年8月4日となったため、UTCのタイムゾーンとなっている裏付けが取れましたので、ご注意ください。
:::

#### 考察
　UTCで動作しているという部分で少し想定と異なる部分がありましたが、注意点を理解すれば、便利な機能であるため、式単独での確認がしやすい機能だなと感じています。

# ５．最後に
　今回のご紹介内容により、少しでもAutopilotに興味を持っていただき、何か1つでもRPAを触ってみるきっかけになれば幸いです。
　本記事はあくまでも個人の見解を述べているものとなりますので、参考情報として頂ければと存じます。