RPAは画面上の操作対象をどうやって認識しているのか、最も確度の高い認識方法はどれか
RPAはRobotic Process Automationを略したもので、ロボットによって業務・作業を自動化するといった意味があります。
ここでいうロボットはハードウェア的なものではなくソフトウェアの一種です。
単純作業を自動化する事で業務の効率化ができ、その分ういた人的資源を他の分野に向ける事ができるので近年日本でも急速に普及しています。
ここではRPAがPC画面上のアプリケーションなどをどうやって認識しているのか見てみます。
RPAと適用業務
RPAは業務の効率化を実現するため急速に普及しています。
ただしRPAの導入が向いている業務とそうでない業務がありますので、これをしっかり認識して導入する必要があります。
RPAは、作業自体は単純だが処理件数が膨大な業務を行うのに向いています。
例えば顧客情報を収めたデータベースから住所や氏名を取り出してそれを使ってはがき作成ソフトで住所欄に記入、裏面に顧客の性別・年齢によって(これらもデータベースから取り出します)別のメッセージを記入するなどです。
これが例えば10件程度ならわざわざお金をかけてRPAなどのシステムを導入しなくても人の手でやれば良いでしょうが件数が数千・数万単位になりまた毎月それを行うとなれば、そのような単純作業に人手を割くのは大変非効率です。
こういった業務にRPAは向いています。
逆にRPAが向いていないのは細かな条件によって業務手順や行う事の変更が多い物や、人による高度な判断が必要な処理です。
今後RPAにAIの成果が導入される事でこれらの判断が必要とされる業務にも適用可能になっていくでしょうが現在はそのレベルには達していません。
また地図を読み取って何らかの処理をするなどの高度な画像認識を要する業務も困難です。
こういった目的のためにRPAを導入するのはおすすめできません。
RPAとコスト
RPAの導入目的は業務の効率化とそれによるコストの削減です。
また単純作業を人手で行う場合はミスの発生も無視できません。
RPAを使う事でミスを減らすことができるという利点もあります。
ただし問題となるのはコストです。
価格はどれくらいか
通常RPAは安いものでも年間数百万円、Automation Anywareでは年間1000万円以上が必要となります。
これらは対応できる業務や機能などによって価格が変わりますので安ければ良いというものでもないのですが、個人や小規模な法人では導入するのが困難です。
ただし条件によって無料で使用可能なUiPathや、完全にフリーのRPAExpressもあるのでお金がなければRPAは導入できないというわけではありません。
各ソフトウェアは使える機能や操作方法が変わってきますので、導入時には値段だけではなくそこも考慮しましょう。
特にいかに簡単に自動化が出来るかは重要です。
自動化操作の設定が難しかったり、多少でも必要な技能があるとソフトを使うための人を雇ったり養成するコストが必要になるからです。
他の自動化方法
RPA以外にも自動化の方法はあります。
よくRPAとの比較であげられるExcelマクロや、Windowsによるバッチファイルを作っての処理やUnix系のシェルスクリプトによる処理また通常のプログラミング言語より簡単なスクリプトによって自動化プログラムを組むなどの方法があります。
ただExcelマクロは主にExcelに対しての処理を自動化するものです。
MicroSoft製のソフトならExcelマクロから操作できるものもありますが様々なソフトを動かすのは無理です。
スクリプト言語等による方法はかなり複雑なところまで自動化出来ますが、この方法にしてもExcelマクロにしてもプログラミングの技能が必要でRPAのように、プログラムすることなく多くの処理が自動化できるというわけにはいきません。
作業がとても単純だったりなどの条件の場合のみ、RPA以外の自動化方法が向いているといえます。
監視・認識の三つの仕組み
RPAは他の自動化方法と異なり人間の操作そのものを自動化するものです。
つまり、PCのデスクトップ上にソフトを起動し、キーボードやマウスを操作してソフト上のどこかをクリックしたり、メニューを出して項目を選択したり等の操作をしていきます。
こうした操作の流れをそのまま自動化したものです。
そのためRPAには、どんなソフトを使ってどんな操作をしたのかという認識が出来なければなりません。
また複数のソフトを連携する作業が普通ですから、どんなアプリケーションが動作しているか監視する必要があります。
RPAをPC上で動作するロボットと考えると画面上の状態を知るための目が必要という事です。
これを実現する方法としてRPAでは三つの方法を用いています。
現在発表されている各RPAソフトウェアは、この中の一つの方法をとっているのではなく三つの方法を組み合わせる事で認識の精度を上げています。
オブジェクトを認識させる方法
webページの場合はHTMLでページの構造がcssでレイアウトの状態がわかります。
こういった構造を解析する事でページ上のどの部品にどんな操作がおこなわれたかを認識する方法です。
これは「対象のオブジェクトを構造的に検出する」方法と呼ばれます。
webページ以外の場合には同じような構造上の特徴を捉える事で同じ手法がとれます。
例えばWindowsの場合、画面上に現れるすべての部品(ウインドウ)にはそれぞれ異なる番号(ID)が与えられています。
これを使えば画面上のすべての部品を認識する事が可能です。
そして各部品になんらかの操作(ボタンが押された、ある部品がクリックされた、キーボードから入力されたなど)が行われるとOSからメッセージが出されるます。
アプリケーションソフトウェアはこれらのメッセージを捉えて夫々の目的の処理を行います。
これらのメッセージはOSから発せられるだけでなく各ソフトからも発生させる事が可能で、これを使ってあるソフトウェアが別のソフトへメッセージを送る事で他ソフトを操作する事が可能になります。
こういった仕組みを利用すればデスクトップ上の監視、どこのソフトのどの部分にどんな操作が発生したかを知りまたそれらを自動化する事が可能になります。
実際のRPAソフトでは具体的にどうやって構造的に認識しているかは各ソフトウェアで異なると考えられます。
ここで挙げた手法はあくまでこのような方法が可能だという一例です。
この方法の利点は処理するアプリケーションが画面上のどこにあっても、またサイズを拡大・縮小して変更しても認識が可能だという点です。
以下で紹介する方法に比べて間違いが最も起こりにくい方法です。
画像認識による方法
これは操作させるアプリや各部品の画像をRPAに覚えさせて画面上に同じ画像を探させて認識させる方法です。
他にアプリのレイアウト、デザイン・色などを覚えさせます。
ただしこの方法は同じ画像が画面上に複数ある場合(例えば同じ見かけのボタンが複数のソフトで使用されそれらが画面上に展開されている場合など)や、対象のアプリのレイアウトがバージョンアップなどで変更された場合(例えばボタンのスタイルを変更した等)には認識が出来なくなります。
またアプリケーションによってはレイアウトやスタイルが何種類か選べる物がありますが、そのような場合スタイルを変えただけで認識できなくなります。
これらの場合、各スタイル事に画像設定をおこなったりバージョンアップ毎に記憶させる画像を変更したりするなど、煩雑な処理が必要になりRPA導入の理由である業務の効率化の趣旨に反します。
ただこの方法の精度は以前に比べると向上してきておりボタンなどのサイズが多少変わったぐらいだと認識可能になって来ています。
今後は機械学習と組み合わる事で認識精度の向上、画像を覚えさせる場合の手間(自動的に学習させるなど)の減少が期待されます。
現在はあくまで補助的な手法ですが今後は正確度があがる事で上のオブジェクト認識に迫る方法になるでしょう。
座標指定による方法
デスクトップ上の左上を座標原点として、横方向と縦方向をピクセル単位で測る事で位置を指定する方法です。
例えば(50,100)[デスクトップ画面の左上から横(右)方向に50ピクセル、縦(下)方向に100ピクセル移動した位置]という具合です。
これで操作対象のウインドウ(アプリ)やマウスクリックの位置などを指定する方法です。
座標指定はデスクトップに対してだけではなく各アプリのウインドウ(対象アプリのウインドウの左上を原点としてアプリ内のボタンなどの部品位置やクリック位置を指定するなど)に対して行う事もあります。
この方法は最も精度よく位置を指定できますが、アプリの表示位置やレイアウト変更、画面解像度の変更などで座標位置が異なってしまい使う事が出来なくなります。
そういった状況における変化を考慮して座標位置を計算して変更も可能ですが、どんな変更にも対応するのは非常に難しいので、この方法はもっとも誤作動がおこる方法です。
以上の描く方法は構造認識の方法を主としてそれを補間するために画像認識・座標指定の順で取り込んでいくやり方がおすすめです。
まとめ
RPAにおける画面上の認識・監視手法には大きく三つの方法があります。
最も確度の高いのはオブジェクトを構造的に認識する方法です。
これ以外に画像認識と座標を指定する方法があります。
後者の二つの方法は正確度に於いて劣りますが、構造認識の方法と組み合わせる事で認識精度の向上に役立ちます。
特に画像認識はRPAにAI特に機械学習の機能が取り入れられる事で今後果たす役割が大きくなると予想できます。