株式会社リクルートスタッフィングが運営するITSTAFFINGでは、弊社に派遣登録いただいている皆さまのスキル向上を支援するイベントを、定期的に開催しています。
2019年5月24日のイベントでは「プログラミング未経験者でもできる!動かして学ぶRPA超入門ハンズオン」と題し、株式会社完全自動化研究所の代表であり、RPAについての書籍も執筆する小佐井 宏之さんを講師にお招きし、RPAについて教えていただきました。今回のイベントは、実際に手を動かすハンズオン形式。参加者は各自ノートPCを持ち込んで学ばれました。
・RPAとは?
・簡単なロボットを作ってみよう
・RPAツール「SikuliX」のテクニック
【講師プロフィール】
小佐井 宏之さん
エンジニア。株式会社完全自動化研究所代表取締役社長。京都工芸繊維大学造形工学専攻修士課程修了。大学院まで現代アートやデザインを勉強していたが、客先常駐のプログラマとしてIT業界に飛び込み、現場でプログラムやシステム開発を身に付ける。2010年フリーランスとして独立し、2016年RPAと出会う。2017年に起業し、2018年に書籍「オープンソースで作る!RPAシステム開発入門」(翔泳社)を上梓。執筆・講演の傍ら、顧客企業内の業務自動化をサポートしている。
RPAとは?
RPA(Robotic Process Automation)とは、コンピュータにできることはコンピュータにさせるということ。人員不足や働き方改革が叫ばれる今、注目されているテーマでもあります。
RPAツールには、実行環境と認識タイプにそれぞれの種類があるそうです。今回のイベントで使われた「SikuliX」は、デスクトップ型、画像認識型に分類されます。
SikuliXは、Windows上で動作し、無料で使えるアプリケーションで、人の目のように画像を認識し、人の手のようにマウスやキーボードを動かしてくれます。また、条件に応じた操作や、繰り返しなどの処理は、プログラミング言語のPythonを使うことで対応できます。
RPAツールを使って簡単なロボットを作ってみよう
まずは簡単なロボットを作ってみます。今回作るロボットの作業は次のようなもの。
SikuliXでは条件分岐、繰り返しなどの複雑な処理も行えますが、今回は順次処理のみを使います。
作業登録の準備として、事前にデスクトップに「hello.txt」という名前のファイルを作成。中身は何も入力されていない空の状態です。
次に具体的な作業手順を登録していきます。手順は、小佐井さんのとても分かりやすいスライドがあったため、参加者の皆さんも戸惑うことはありませんでした。
ポイントは、あらかじめSikuliX以外のウィンドウを最小化にしておくなど、登録作業がスムーズに行えるのと同時に、SikuliXが画面認識を間違えないようにしておくことだそうです。
キャプチャーモードの状態から、マウスでhello.txtのアイコンを範囲指定の要領で囲んで、クリックをします。アイコンを囲むのに失敗したら、ソースコードウィンドウに記述されたコードを削除して、やり直します。
成功したら、SikuliXの「実行」ボタンをクリック。hello.txtのアイコンがダブルクリックされ、メモ帳が立ち上がればOK。うまくいけば、テキストを入力する部分をプログラミングします。
SikuliXのソースコードウィンドウに次のプログラムを追加します。
type("Hello")
sleep(3)
sleep(3)は3秒待つための命令で、ウィンドウが開く前にテキスト入力してしまうのを避けるためのものだそうです。
次に名前を付けて保存する作業を登録します。
SikuliXのコマンドから「click()」を選択し、キャプチャーモードで、メモ帳の「ファイル」メニューを選択。これで「ファイル」メニューをクリックするところは登録できました。
問題は次です。キャプチャーモードにしてから、「ファイル」メニューを開き、一覧から「名前を付けて保存」を選択するのですが、どうしても間に合いません。
そんなときは、SikuliXの「ファイル」メニューから「環境設定」をクリックし、「環境設定」ダイアログボックスで「キャプチャーを実行するまでの時間」を1秒から3秒に変更します。
「名前を付けて保存」の選択ができたら、ファイル名を入力させます。
「ファイル名を付けて保存」のダイアログボックスは、表示されたとき、ファイル名を入力するテキストボックスの文字列が選択されている状態。なので、そのまま新しいファイル名を入力します。
そこで、SikuliXのソースコードウィンドウに、
と入力します。
今回のイベントでは作業を進めるため、実際の「ファイル名を付けて保存」のダイアログボックスの方にも、人間の手でファイル名を入力。
次に、「click()」でキャプチャーモードにして、ダイアログボックスの「保存」ボタンを選択します。
この後、実際のメモ帳の方は保存ぜず、操作をキャンセルし、メモ帳の画面に戻ります。こうしておかなければHello2.txtが作られ、SikuliXに作業をさせるとき、既にファイルが存在する旨の警告メッセージが表示されてしまい、手順通りに進まなくなってしまうからです。
そして最後にメモ帳を終了させます。ウィンドウを閉じるには、ウィンドウ右上の「×」(閉じる)ボタンをクリックする、F4キーのショートカットを使う、「ファイル」メニューから「終了」を選ぶなど、複数の異なる方法があります。今回は「ファイル」メニューから「終了」を選びます。手順は「名前を付けて保存」のときと同じです。
以上でSikuliXへの登録作業はおしまい。実際に、SikuliXの「実行」ボタンをクリックしてみると、あっと言う間に、メモ帳が勝手に立ち上がり、文字列が入力され、勝手に新しいファイルに保存され、メモ帳が終了。参加者の皆さんは、感動されていたのと同時に驚かれていました。
SikuliXのテクニック
基本的な操作が理解できたところで、小佐井さんがSikuliXのちょっとしたテクニックをいくつか教えてくださいました。
Webのログイン画面などで、IDとパスワードを入力するテキストボックスが同じように並んでいる場合に、それぞれの入力で、テキストボックスを画像として指定しても、それがIDなのか、パスワードなのか、SikuliXには区別がつきません。
そのままだと、先に一致したIDのテキストボックスにパスワードを入力してしまうといったミスが起きてしまう可能性もあります。
これを解決するのが「ターゲットオフセット」という機能で、テキストボックスのタイトル文字列などで位置を特定しておき、そこからオフセットさせたテキストボックスに文字を入力させることができます。
指定した画面領域の中から画像を探させる「Region」という機能もあります。こちらは、異なる複数の領域に同じ画像がある場合も特定できるように、画面内の絶対座標で定められた領域内で判断しています。ただし、絶対座標で画像を探すため、ウィンドウの最大化や、表示位置の変更で、正しく認識できないこともあるそうです。
イベントの最後には小佐井さんが、WebブラウザからIDとパスワードを入力してシステムにログインをしたあと、特定の期間の売上データをダウンロードして保存するという、本格的なロボットのデモを披露。毎日、あるいは毎週の売上をダウンロードして保存するなどといった「定型業務」をこのような形で自動化できたら便利ですね。