どうやって操作する?
アプリケーション操作を自動化できるのが、RPAの基本的な機能だと思っている。
RPA製品と対象のアプリケーションには相性のようなものがあって、簡単に自動化できる場合もあれば、そうでない場合もある。それは、概ねどういう方法で自動化できるかによってくる。
RPA製品でアプリケーションを操作する方法としては以下のものがある。基本的には検討するべき優先順位の順序で並べている。
- アプリケーション連携
- UIオブジェクト認識1
- キーボード入力
- OCR
- 画像
- 位置座標
優先順位の基準は、安定すること。
安定していれば開発も楽なことが多い(試行錯誤しなくて済むし、後からうまく動かないことが判明して直さなきゃいけなくなるようなことも少ない)。
そして動作も早いことが多い(例外的に、位置座標は不安定だけど動作は高速)。
実際には境界が曖昧なものもあるし、状況次第で番号の大きいものを使った方がいいこともある。
また、1つのアプリケーションの操作でも、複数の方法を組み合わせて使うことが多い。
アプリケーション連携
大体のRPA製品で、Excelとの連携が可能。こういう場合、内部的なプログラムで、対象のアプリケーションと直接的に連携していることが多く、誤動作が少ない。
そういうものが使えるならまずそれを使う。
ただ、Excelの操作機能がありますよ、というように機能紹介に書かれていたとしても、実際には機能が限られる。例えば、セルの読み書きなどは普通は大抵の製品で可能だけど、フォントを変えたりまではできない。
その場合はそれ以外の方法を使うことになる。
UIオブジェクト認識
製品によっては、アプリケーションの内部構造を分析した上で、どこをクリックするのか、どの部分のテキストを読み取るか、などをRPAに教えることができたりする。2
こういうことができると非常に開発効率が高く、誤作動も少なく、しかも早い。
でもアプリケーションによって対応していたりしていなかったりするので、これができるかどうかをまず確認したい。
また、やや技術的な話になるが、内部的にどのようにオブジェクトを特定しているか把握しておくとベター。
Automation Anywhereは木構造内の位置関係を上から順に辿っている。この場合構造の位置関係が変更になると動作しなくなるため要注意。
一方、UiPathは、セレクターと呼ばれるXML形式のコードでオブジェクトを指定しており、編集することもできる。順序が変わっても動くことが多い。
UiPathはこのあたりの技術に長けている、と個人的には判断している。
キーボード入力
この辺りから地道になってくる。
例えば、ショートカットキーを使う、矢印キーでカーソルを動かす、Enterキーで確定するなど、マウスを使わずに操作を進めていく方法。
オブジェクト認識ができない場合、マウスを使うよりこちらほうが安定する。
ただし、カーソルを矢印で動かす場合などは、カーソル初期位置が操作のたびに変わるようなことが無いかは要注意。
OCR
画面上に指定の文字があるかを判断し、その文字のあった場所をクリックするなどして操作する方法。
例えば、CitrixやVMWareなどのVDI製品やリモートデスクトップ接続の接続先のアプリケーションを自動化したい場合などは、こうした方法に頼ることになる。
UIオブジェクトも認識せず、キー入力も受け付けない場合、OCRが選択肢に入る。
ただし、以下の点に注意したい。
まず、精度を確認すること。
読み取り対象の文字が英数のみの場合、かなりの精度で認識できる。
日本語で精度の高いOCRエンジンを使うには、有償のものを使う必要があることが多い。
また、例えば「Submit」と書かれたボタンをクリックする場合、他の箇所に「Submit」の文字が現れないかもチェックする。現れる場合は画面の上半分から探すなど、範囲を限定できるかを考える。
認識に時間がかかる点にも注意が必要。
クラウドサービスを利用する場合、開発環境はもちろん、本番環境のネットワークもサービスに接続可能であることを確認したい。(プロキシなどでブロックされてないよね?ということ)
画像
予め画像をRPAに登録しておき、マッチした画像で対象の位置座標を指定してクリックなどを行う方法。
注意点としては、解像度や文字の大きさが変わると動作しなくなることが多い。
開発環境と本番環境が違う環境の場合、この辺りの設定は合わせる必要がある。設定を合わせたつもりでも環境が変わると動かなくなることもよくあるので、必ず確認すること。
位置座標
クリックするマウスの位置座標をRPAに登録する。ウィンドウ内の座標だったり、相対的な座標を指定できる場合もある。
ウィンドウの大きさによって位置が変わってしまう場合には使えなかったり、なかなか安定しない。最終手段。