RPAとそれ以外の自動化方法の比較、RPAが向いているのはどんな場合か
RPAはロボットによる業務自動化を意味します。
PCで行う事務作業は作業は単純でも処理件数が膨大なものがあります。
それらの作業をソフトウェアを使って自動化する事でコストを下げる試みです。
近年日本においても急速に普及してきました。
しかしPCでの作業の自動化についてはこれまでもスクリプトやマクロを使う方法がありました。
これらとRPAはどこが違うのかそれぞれが向いているのはどんな作業なのかを考えてみます。
自動化の方法
PC上における操作を自動化する方法はRPAだけではありません。
後に説明するマクロによる方法や、スクリプト言語による方法があります。
また昔からバッチファイルやシェルスクリプトを利用して定型作業を自動化する事が行われてきました。
まずここではRPA以外のこれらの方法とRPAとの違いを説明します。
バッチファイルとシェルスクリプト
Windowsなど現在ではPCでの操作は画面上のアイコンやメニューなどをマウスを操作してクリックまたは画面上をタップして行うGUI(Graphical User Interface)になっていますが、以前はキーボードをつかってコマンド(命令)を入力するCUI(character user interface)でした。
バッチファイルとは複数のコマンド(命令)を記載したものを一つのファイルとして保存しそれらの命令を一括して実行できるようにしたファイルの事です。
例えばWindowsのメモ帳を起動したいなら「call notepad.exe」と書いて保存します。
call はexe(実行)ファイルを呼び出す命令です。
この例では一つの命令を書いてあるだけですが複数の命令を指示してアプリケーション間でデータのやり取りをするなど出来るわけです。
Unix系のOSではシェルスクリプトを使って同じように操作の自動化が可能です。
スクリプト言語を使う方法
スクリプトというのはプログラミング言語の一種でC++、C#やJavaなどの言語に比べて簡単で覚えやすい言語の事です。
C++などでは人間が書いたプログラムを実行するためコンピュータが理解できる機械語にまず翻訳(コンパイル)してから実行するのに対してスクリプトでは命令を一つづつ機械語に直して実行する(インタープリタ型と呼びます)方式をとります。
このやり方のためソースプログラムをすぐ実行できますが、その代わり実行速度がコンパイル型に比べて遅い欠点があります。
JavaScriptやPHP、Ruby 、Pythonなどがスクリプト言語でこれらを使っても操作自動化が可能です。
RPAとの比較
スクリプト言語はコンパイル型言語に比べて簡単とは言ってもこれを使うためには言語について学習する必要があり習得には多少なりとも時間がかかります。
はじめての人がいきなり自動化処理プログラムを作れるという訳にはいきません。
RPAの場合、自動化したい対象にもよりますがあらかじめソフトウェアに用意された操作を呼び出してそれを画面上で並べたりまたレコーディング機能によって人間がやった操作をそのまま記録させるなどしてプログラム操作を一切せずに自動化設定が可能です。
このため自動化操作をおこなうために新しい人を雇用したり養成する必要がありません。
人的コスト面でRPAが有利です。
ただしRPAとスクリプト言語は必ずしも対立や競合する関係ではありません。
RPAでもより細かな操作や調整を行うためにはプログラミングが必要で、それに既存のスクリプト言語を採用しているソフトがあるからです。
自動化する項目が多数あるような場合はスクリプトやバッチファイルによる自動化は入力が多く複雑になって大変です。
しかし自動化する項目が単純な場合はスクリプトやバッチ処理の方が向いています。
この場合はコマンドを覚える必要があるといっても数は少なく習得に時間がかかることもありません。
ですから作業の内容や複雑さによっては自動化のためにRPAを導入する必要は必ずしもなくスクリプトなどの使用がおすすめになる事もあります。
マクロとRPAを比較
マクロとは「プログラムの複数の命令を実行する順番に定義したもの」(ASCII.jpデジタル用語辞典)です。
ただマクロという言葉が最も多く使われるのはExcelやWordなどのマイクロソフト社のOfficeソフト等で使用するものを指す場合でしょう。
これらのマクロは各ソフトウェア上の作業・操作手順を記録してそれを自動実行させるものです。
これをとりあえず使うためにはプログラミングの知識は必要なく「マクロの記録」機能で人が行う作業をそのまま記録させる事ができます。
なおこれらのマクロはマイクロソフトのプログラミング言語の一つVisual Basic.NETのサブセットであるVisual Basic for Applications(VBA)によって記述されています。
マクロの記録を使えばプログラム知識はいりませんが、細かい調節をおこなったり無駄な記録(人間の操作手順をそのまま記録するので無駄な操作もある)を削除するにはVBAの知識が必要です。
その代わり知っていればマクロの記録機能を使わずに直接自動化処理マクロが効率的に作成できます。
VBAはかなり使いやすく簡単な言語ですが、それでもJavaScriptなどのスクリプト言語よりは難しく習得には時間がかかります。
RPAと比べた場合、適用範囲でVBAマクロは劣ります。
Excelマクロの場合Excel自身と他のOfficeソフトならびにいくつかのマイクロソフト社製ソフトを制御する事に限られます。
また画面上でのクリック操作などの制御は出来ません。
VBAマクロの場合、少し複雑な事を行うためにはVBAの知識が必要です。
RPAの場合も対象や操作によってはスクリプト言語などの知識が必要になりますが、プログラミングなしで制御できる事がVBAマクロよりずっと多くなります。
自動化対象がExcelをはじめとするMicroSoft Officeソフトのみで既にVBAの技術を持っている場合はVBAマクロを使う方が有利でしょうが、それ以外の場合はRPAソフトを用いるのがおすすめです。
RPAでの自動化の実際
ここでRPAでの自動化の一例を示します。
RPAといっても自動化の方法などベンダー・ソフト毎に異なりますのでここでは個人や小規模な法人なら無料で使う事の出来るUiPathの場合を述べます。
このソフトウェアはUiPath社が提供するもので有料版もありますがCommunity Editionなら小規模事業者、学術機関、非営利団体なら無料で使用できる事になっています。
自動化する操作には画面上のアイコンやメニューなどをクリックしたりキーボードによる入力操作やExcelなどのアプリケーションを起動、起動したアプリケーションへのデータ入力など様々なものがありますがUiPathではこれらをアクティビティと呼び最初から多数のアクティビティが(自分で作ったり記録しなくても)用意されています。
UiPathにはデザイナーパネルというアクティビティを配置する画面があります。
自動化操作は自動化したいアクティビティを選んでこのパネル上に配置する事で行います。
複数の操作が必要な場合、それらを選んで配置し各操作間でデータの受け渡しなどがあればそれらをつなぎ合わせたりして連携させます。
このように必要な操作(アクティビティ)を選んできて画面上にドラッグ&ドロップして関係個所をつなぐといった操作で済んでしまします。
メッセージを表示させる操作の場合でもコマンドを入力する事はなくプロパティパネルを開いて項目に記入するだけです。
かなり複雑な操作や込み入った事をしない限りプログラミングを一切せずに自動化操作を設定できます。
画面上のオブジェクトの認識方法
RPAはVBAマクロなどと異なり画面上のアイコンのクリックなどの操作なども自動化するため対象のオブジェクトがどれか、どこにあるかを知る必要があります。
対象オブジェクトを判断する方法としては次の三つのアプローチがとられています。
構造的に検出
例えばWebページの場合ならHTML/CSSによる構造を調べて複数の要素を指定して対象のオブジェクトを知る方法です。
PCのデスクトップなどの場合はどんな場合も変化しない要素を読み取ってそれを手がかりとします。
間違った認識をおこさないように、どのような要素を使うかがRPAソフトウェア開発者の腕の見せ所となります。
以下の二つの方法に比べてこのやり方が最も信頼度が高いと考えられています。
座標を指定
これはモニターのスクリーンまたは各アプリケーションの例えば左上を座標原点としてそこから横方向・縦方向に何ピクセルと指定して監視対象を特定する方法です。
確実でかつ高速に対象の特定ができますが画面解像度、レイアウト、各アプリの表示位置などが変わると使えなくなります。
画像認識を使って特定
対象物例えばボタンなどを覚えさせて同じものを画面上で探索する方法です。
今のところは同じ画像のオブジェクトが複数ある場合など対処が難しい場合もあり構造的に検出の方法より特定確度は劣ります。
ですが機械学習の成果を取り込む事で確度が向上する事が期待できます。
どの方法が良いのか
現在は「構造的に検出」を主としてそれを座標指定と画像認識で補完しています。
まとめ
PC上の作業の自動化については特に単純な物の場合は以前から用いられてきたバッチファイルを使ったりスクリプト言語を用いた方が簡単になる場合があります。
また特定のアプリケーション、例えばExcelやOfficeソフトのみの場合はRPAを使わなくてもこれらに備わっているマクロ機能を使った方が容易になる場合があります。
ただしRPAツールはほとんどプログラミング知識なしで作業の自動化ができ一般的には従来の方法より優れているといえます。