Automation360での画面操作自動化アプローチ

#Automation360での画面操作自動化アプローチ
画面上のUIを操作していく方法については、各RPAで実装方法はまちまちだと思います。
同じAutomation Anywhereでもv11とAutomation360 では実装の方法が異なるものが有ります。
そして、Automation360単体で見ても、同じことを実装するのに複数のアプローチが考えられたりします。
これまでAutomation360 を触ってきた中で、こんな感じで考えながらやっているというのを纏めてみました。

##どのような方法があるか
まず、どのような方法が使えそうなのか、それぞれの方法で何が出来るのかを簡単に一覧にしました。
基本的には、この表の上の物から試してみて、ダメなら次の方法を試すという形になるのかなと。

| 方法 | クリック | データの取得 | データの設定 |
|:-:|:-:|:-:|:-:|
| レコーダー - ユニバーサルレコーダー  |  〇 | 〇  |  〇 |
| キーストロークのシミュレーション  | （エンターキー押す）  | （Ctrl+A, Ctrl+C等）  | 〇  |
| 画像認識  | 〇  | ×  | ×  |
| マウス | 〇  | ×  | ×  |
| レコーダー - AI Sense  | 〇  | 〇  | 〇  |
| OCR | ×  | 〇  |  × |
| アプリ統合 | ×  | 〇  |  × |

それぞれの方法について、下記、非常に簡単にですが使い方や注意点を記載します。（後半のは特に簡単に・・・）

##1. レコーダー - ユニバーサルレコーダー
v11では用途別に分かれてましたが、Automation360ではユニバーサルレコーダーとして、一つのレコーダーでアプリケーションもWebもキャプチャすることが出来るようになっています。（AI Senseは2021年1月現在は入り口だけ統合され、レコーダーとしてはまだ別に存在しています。）

起動は開発画面上部のこのアイコンから。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615564/3ebe22a6-90be-8dd5-eaa9-7ddfb6209891.png)
起動すると、どのウィンドウをキャプチャするのかを聞かれますので、
選択の上、Universal Recorderを選択します。（既にUI変わっているかも・・・）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615564/cbba15cb-584b-351a-47cc-9561a5299e8b.png)

すると、下記の様なツールバーが出てきて、対象のウィンドウにフォーカスが当たります。
認識したオブジェクトが赤枠で囲まれますので、操作したい対象を選択してテキスト入力やクリック操作をして記録していきます。
最後にFinishを押せば、ステップが生成されます。
Tipsとしては、項目間の移動はTabキーでは行わない事、画面スクロール等は一旦Pauseしてから行うことですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615564/e48599fe-4cc9-82af-a29a-bdb479194bc8.png)

また、アクションのコマンドとしても用意されていますので、1ステップずつ作っていく場合はこちらになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615564/517296df-e22d-2712-481a-c39ae576502d.png)

こちらの使い方としては、
１．（新規にとる場合は）Applicationを選び
２．リフレッシュボタンを押す
３．対象のウィンドウを指定したのち
４．キャプチャ開始
となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615564/866f4ff2-a75a-3e2d-4b07-e28d772696f1.png)

対象ウィンドウの、設定または取得したいテキストや表、押したいボタンが赤枠で括られますので指定します。
そして、アクションで実施したい動作を選択します。
このとき、選択したオブジェクトによって、利用可能なアクションが変わり、設定すべき項目も変わってきます。
下記の例では、テキストボックスなので、テキストの設定等があり、実際に入力するテキストを入れるための設定項目が表示されています。

＊尚、レコーダーで一連の動作を記録している時と違い、例えばボタンを押したとき、対象のウィンドウの方ではそのアクションは発生しませんので、手動で進める必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615564/151ae586-47d3-e43a-1c1e-84516faaa846.png)

最後、レコーダーを使う時も、ステップ単位で利用する時にも気を付ける必要がある点です。
特にWebサイトやWebベースのアプリを操作した際に、同じテキスト入力やボタンでありながら、HTML ID等が動的に変わってしまうことがあります。
そうした場合は、動的に変化する部分を*(アスタリスク)に置き換えたり、そのプロパティを項目特定に使用しないようにチェックを外してあげるという対応が必要となります。（SAP Hana Fioriとか、SFDCとか。）



##2. キーストロークのシミュレーション

レコーダーが上手くいかないとき。つまり、オブジェクトが取れない時に使える手として、キーストロークのシミュレーションがあります。
こちらは、対象のウィンドウに対して、キーボードを入力したのと同じ効果があります。
ですので、Tabキーや矢印キーを使用して項目間を移動したり、ファンクションキー等を押してメニューを表示したりといったことが可能となります。もちろん、エンターキーも押せますし、CtrlやAltキーとその他のキーの組み合わせも可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615564/d984914c-4f63-2cdd-ffba-7fd61e9c6e58.png)

##3. 画像認識
キーストロークのシミュレーションで項目間移動はある程度できますが、UIによっては押したいボタンに移動できなかったりします。そんな時に使用できるのが、画像認識です。指定した画像と同じ部分や、一致した部分から指定した座標だけずれた場所をクリックしたりできます。

１．まず、クリックしたいウィンドウを指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615564/21349482-5b86-dcfc-5eba-dc7188d12e80.png)

２．次に、クリックしたいボタンがどのあたりに表示されるのかを指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615564/ee3f4746-096b-b357-b8a4-f9adde38a8b9.png)

マウスで範囲指定したら、右クリックで確定です。

３．そして、実際にクリックしたい画像の部分を選択します。
プロパティの下の方で、再度アプリケーションを選択して、キャプチャします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615564/0786bd25-839b-d677-0d42-b4a80f35348c.png)

今度はクリックしたい範囲を指定。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615564/0d0c6c63-3ae6-7566-a3e5-84297209df95.png)

４．一致した場合のアクションを指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615564/3c1a36ab-7721-b26c-9e74-a070bf724fe9.png)

これで、上手く動くと、指定した画像の部分をクリックしてくれるようになります。

##4. マウス
クリックや移動、スクロール等のマウス操作をシミュレーションできます。
ただし、こちらは、アプリケーション内の座標指定でのマウス操作となる為、UIが変更され対象の位置が変わってしまうと動かなくなってしまう恐れがありますのでご注意ください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615564/e6acc7e7-54a9-3520-c180-671b16df7c63.png)

##5. レコーダー - AI Sense
画像認識と文字認識、機械学習等を用いたレコーダーで、例えば、リモートデスクトップを利用しているケースや、古いアプリケーションで上手くオブジェクトを掴めない時に利用できます。
ただし、現時点では、日本語が対象外との事ですので、今後に期待です。

##6. OCR
OCRを利用してテキストを取得するコマンドです。
別途記事（[→こちら](https://qiita.com/aaiso/items/499eae27706da9c7299d)）を書いていますのでそちらを参照してください。
パラメータファイルを作って読み込ませると、結構高精度に読みます。

##7. アプリ統合
こちらも、v11の頃からあり、ご利用いただいているお客様もいるようですが、正直なところ、私が試した限りはあまりうまく動きません。。。　上記のOCRコマンドを利用したほうが良いかと思います。

##8. その他
他にも、アプリケーションによっては、各種スクリプト言語での操作が可能だったり、Power Automate等の別の自動化手段があったりしますので、そういったものと組み合わせるという手もあります。

#最後に

画面操作の自動化が実現をする。そして、対象のアプリケーションのUIが変更された場合にメンテナンスしやすいというのがベストとはなりますが、環境によっては簡単に自動化できないケースも出てきます。
少しメンテナンス性が下がってしまう可能性はありますが、実現するための方法が多く用意されていますので、色々試しながら自動化を作ってみてください。