Power Automate UIフローで現在できることを検証してみた

2019年11月に発表になり、最初のプレビュー版が出たPower Automate UIフロー (プレビュー) ですが、[前回の記事でセットアップ方法や、使い方の超概要](https://qiita.com/RPAbot/items/a359d44f2909742e5838)について書きました。

年が明けて、Power Automateもビルドが上がり、UIフローインストーラが日本語対応したり、と機能が改善されているので、そのあたりを見ていきましょう。

# Power Automate トップ画面
画面一番上のメニューの領域のデザインが新しくなり、「Power Automate」ときちんと文字が入ったり、旧来のEdgeでもアイコンの背景が表示されるようになったりと、細かい改善がなされています。(ただし、UIフローの対応は**Google Chrome**と**Chromium版Microsoft Edge**であることには変わりありません)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/cdbc64c7-181e-9c67-6d84-14cd65b2f080.png)

# UIフロー環境の準備
[2019年11月当時](https://qiita.com/RPAbot/items/a359d44f2909742e5838)からアップデートがあった部分を中心に、何が変わったか見てみます。

以下のコンポーネントをセットアップします。

* [UIフローインストーラ](https://go.microsoft.com/fwlink/?linkid=2102613)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/9be14f48-b3ac-2cf6-a1b9-6aa38458d8e8.png) (9MBくらいのサイズ)
    * 含まれているPower Automateブラウザー拡張機能をChromium版Edge or Chromeで有効にする ([ここ](https://chrome.google.com/webstore/detail/microsoft-flow-preview/jcajipieipkmjpfakbdhmjidmhidogoo)からもダウンロードできます)
* (オプション) [Selenium IDE](https://go.microsoft.com/fwlink/?linkid=2107665) - Web UI フローを使う場合
* (オプション) [オンプレミスデータゲートウェイ](https://go.microsoft.com/fwlink/?LinkId=820925&clcid=0x409) ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/df1dccfd-b9b0-2821-0929-f8a1f4e301a3.png) (520KB)- UIフローのトリガーをイベント、スケジュール、ボタンフローから行うときにのみ必要

### UIフローインストーラの実行
Setup.Microsoft.Flow.UIflow.exe を実行します。
あらかじめChromium版EdgeやChromeは閉じておいてください。
**UIがきちんと日本語になっていますね！**(まだ文字列の後ろが切れているところもありますが) 画面左下を見ると、**前回と比べてバージョンが0.2.219.19302 ⇒ 0.3.40.19331 となっていることがわかります。**

ウィザードを進めていきます。<font color="Red">赤く</font>囲ったところをクリックしていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/1acc3c78-7d08-d1ae-7fe1-2f0b60e54192.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/fa687cad-965a-6519-155f-ef3d639f65a3.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/02ae1731-6de8-d4d5-3edf-45a3bfa4d76f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/3a7564ee-0624-18fb-9951-fec897678149.png)
インストールが正常に完了すると、以下のようなアイコンがデスクトップに作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/705fe40f-0e18-8b3a-e208-c7e47493afec.png)

実行中はタスクバーにアイコンが表示されます。UIフロー実行時はアイコンがあるかどうかを確認しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/d03fce05-f7b9-53ea-d967-1793dc87788b.png)


### Power Automate ブラウザー拡張機能の有効化
**前回は自動でインストールされませんでしたが、今回はUIフローインストーラに含まれていたようです。**
Google Chromeを起動すると、画面右上に、新しいアドインがインストールされたことを示す感嘆符 (⚠️)が表示されます。「拡張機能を有効にする」ボタンをクリックしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/156af55b-c464-872c-ea0e-81c8cb3e7376.png)


### Selenium IDE ブラウザー拡張機能のダウンロードと有効化
このアドインは2019年12月1日のものが最新版で、英語版ですので手順は省略します。

Chromeで`chrome://extentions` (次世代Edgeでは`edge://extentions`)を開くと、拡張機能がインストールされていることが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/c352a372-2adf-19ce-f14b-9e037b1f6250.png)

# デスクトップUIフローの作成

### 記録
**記録画面のツールバーが日本語化されました！**記録中の、デスクトップアプリケーションのUI要素分解も快適で使いやすく、さすがアクセシビリティAPIを開発している本家の製品です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/933ecef8-e6a0-db31-1abd-4540b64f5818.png)

記録を開始すると、ツールバーの「入力の使用」と「出力の取得」が利用できるようになります。

### 入力の使用 (いわゆる「定数」)
作成手順のステップの中で、「入力」を定義しておくと、定義した初期値を使ってUIフローを実行できます。手元で実行することを「テスト」と呼びますが、最初に入力を定義するときに初期値は設定できますが、各テスト時に値を変更できます。いわゆる「定数」として機能します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/9cb87deb-ea19-47e7-5182-331ac25be66b.png)

この値を使って、記録時にコントロールへの入力に使うことができます。もちろん、入力はその場でキーボードを使って入力してもいいのですが、それだと値がフローの中にハードコードされてしまうため、汎用性を考えると入力を定義してそれを使うほうが良いです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/ff19370b-f5e4-2615-eb1d-3159fccaeb56.png)

「入力」は、記録ツールバーの「入力の使用」-「新規入力」で、その場で作成もできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/0ed8fc3f-ae12-7e19-b8c4-f22c08c32db7.png)


### 出力の取得 (いわゆる「変数」)
作成手順のステップの中でも出力というものが出てくるのですが、その場では何もできず、いったん記録を行うとツールバーで出力が定義でき、そうすると作成手順の中で出力の編集ができるようになるという、多少わかりにくいUI構造になっています。

これは、UIの中から値を取ってくる入れ物として使うもので、いわゆる「変数」として機能します。

「出力の取得」-「テキストの選択」を選択して、UI上で取得したい文字列を選択すると、ウィンドウが開いて、出力に「名前」を付けて保存できるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/7437cdf1-bdfc-676d-1605-baf102414ada.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/cc18c703-04ed-17df-23e1-0741594d8f6c.png)

出力を指定すると、フローの中に「テキストの取得」(GetElementText)アクションが挿入され、出力が作成手順のステップの中で管理できるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/8c526051-e50e-8b73-5052-f6918afbaca4.png)

出力は、記録の中でUIの別の場所に再入力することも可能です。(「入力の使用」-「出力の記録」、ただしまだうまく動かない！？)


### 手動アクションの追加
記録によってフローが作成されると、フローの最後に以下のようなボタンが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/15ccb383-8cb1-b7fb-ad3d-87aaf85bf61b.png)
これをクリックすることで、手動で追加のUIアクションを追加できます。現在のところ以下のような選択肢があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/6acf60a0-d67a-d295-e889-9dad8a805742.png)

# デスクトップUIフローの実行
**Windowsのシステム言語は日本語のまま実行することが可能になりました。** 
ためしに、電卓を1~6までボタンをクリックするというUIフローを作成して実行したところ、以下のように6秒かけて正常に終了しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/1b3ddfc6-f50f-166a-3893-b20c07306e28.png)

# UI Flowsテンプレート
<font color="Red">(2020年2月2日 追加)</font>
Power Automateでテンプレートを検索すると、以下の2つがひっかかります。どちらもオンプレミスゲートウェイが必要でPremiumライセンスが必要になるようです。(無料試用版で試すこともできます)モバイルからUIフローをトリガーしてタスクを実行するというシナリオが実現できそうです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/d90d2891-bd15-e3a0-7ac5-0644885cd89a.png)

* [Copy data from a formatted Word doc to an Excel file](https://flow.microsoft.com/ja-jp/galleries/public/templates/89391c98774b43f9af9c2ff21e9a4156/copy-data-from-a-formatted-word-doc-to-an-excel-file/)<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/5aefe64d-7045-ff6e-784b-d2ea4ed9da93.png)<br/>詳細ビデオ: https://aka.ms/UIflows_DataCopy

* [Convert .xls files to .xlsx using UI flows](https://flow.microsoft.com/ja-jp/galleries/public/templates/8925727cb4f044e9b577f5ae111f2947/convert-xls-files-to-xlsx-using-ui-flows/)<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/83e79505-8b5a-6399-7b6b-3b5ccb9e0ffa.png)
<br/>詳細ビデオ: https://aka.ms/UIflows_ConvertXLS

### 利用手順
1. テンプレートのページにある「このテンプレートを使用」ボタンをクリックします。<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/340fe839-f0c4-fabb-546f-0fa9df0654b3.png)

2. SharePointまたはOneDriveにサインインします。<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/f328d736-a21e-b6b1-29c0-483f1c944663.png)
3. UI Flowsの「作成」をクリックします。<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/a756df3b-fb80-88ba-88ce-142788bc07c8.png)
4. 認証情報とGatewayに関する情報を入力します。<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/16384563-a3f8-1b11-4a05-f1d8ea307c44.png)
<font color="Red">※ なぜか、gatewayをインストール済みなのにgatewayが認識されず、先に進めませんでした...</font>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/d48770b5-a53f-32ed-1bc0-65d572d2ddb4.png)


# 今後の実装に期待したいところ
Power Automate UIフローはまだプレビューで、2020年前半 (こういう言い方をするときはおそらく4~5月くらいがターゲット？)に正式リリースが予定されています。他社のRPAと比べてみて脅威になりそうなところもあれば、まだ足りないところもあります。以下、期待とともに足りないポイントについて箇条書きにしてみました。正式リリースまでに改善されることを望みます。

* デスクトップUIフロー
    * 「記録」することが中心の実装となっていますが、一方、主要RPAツールは記録に頼るUIには必ずしもなっていない。なぜならUI操作による記録だけでは限界があるからです。一度記録を行った後に手動でアクションを追加できるようになっているのですが、最初からそれができるとより使い勝手がよくなると思います。
    * 実行速度がまだまだ遅いです。プレビュー版だからでしょうが、正式リリースでは大幅な高速化を期待します。
    * 一度記録してしまうと、セレクターの微調整はテキストベースで実施しなければならず、高度な知識がないと無理！再びUIベースのインターフェイスで微調整ができると、エンジニアでなくても使えるものになるでしょう。
    * 他のフローの仕組みとの連携。これができると他社にはない特徴となり、RPA+iPaaSのソリューションとしてかなり強力な地位を築けるでしょう。現在のところ、他のフローからの呼び出しインターフェイスはなさそうです。UIフローの中では最初のステップでトリガー条件を指定できる (?) ようですが、いまのところは手で式を書かなければいけないようです。これももっと簡単になるとよいです。(ちなみに、既存のフローから呼び出すトリガーとしてUフローの外側から設定できるようですね。)<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/6e08811d-e13f-c616-9810-958c743dacf2.png)
    * 現在利用できるアクションの数は9つだけですが、主要RPAツールでは、ライブラリによる拡張機能も含めて数百のアクションが利用できるのが一般的です。これは、それだけのシステムのパターンについての個別対応が必要であるためです。ターミナル、SAP、リモートデスクトップなどはさらに特殊な処理が必要になります。また、フロー中で取得した値 (文字列、数字)を加工して再利用するような仕組みもありません。正式リリースで、マイクロソフトがどのレベルまで対応してくるのか注目されます。
    * スクリプトによる拡張機能。エンジニアであれば期待してしまうところですが、TypeScriptやPython等のスクリプトを書くことで、UI要素のコントロールをさらに細かく実施できる選択肢を残しておいてくれると、標準機能では対応できないことでも開発者が入ればできるようになることが増えます。後発でRPA分野に入る場合には実装しておく方がよいかもしれません。

* Web UI フロー
    * オープンソースであるSelenium IDEに頼った実装となっているため、UIがチグハグなものになってしまい、デスクトップUIフローやポータルの使い勝手との統一感がイマイチです。また、アドインは英語しか出ていないため、この部分が日本語化されるのか、マイクロソフトがコントロールできるのかどうかも不安です。 
* その他
    * Power Automateがどこまでのペルソナをカバーするのかにもよるのですが、現在のところ、フローの実行のスケジューリング、実行するマシンの選択と管理、パスワード管理といった「サーバー型RPAの管理機能」は皆無です。WinActorやUiPathが現在広がっているRDAの領域に侵食するには十分ですが、本来のRPAの目的を遂行するには機能が足りません。