アプリケーションを自動操縦する
目次
RPA でパソコン操作をロボット化
以前の記事で、ブラウザを自動操作する方法をご紹介しました。
この方法を使うと、自動的にWEBサイトを巡回して、データを取り寄せたり、決まった操作を実現できます。
こうした決められた動作を繰り返し行う様子は、まるでロボットの動作をみているようです。
ブラウザは自動操作するのは、Pythonとseleniumを使えば実現できますが、ではブラウザ以外を自動操縦するロボットを作る事はできないでしょうか?
実は可能です。
RPA(Robotic Process Automation)という技術で、コンピューター上で「毎回同じ操作」をしているならその操作をロボットに任せてしまい、業務の効率化や、生産性の向上を行う事ができます。
今回は、フリーで使用できるRPAツールとして、Sikuri(シクリ)を試してみます。
SikuriXについて
Sikuri(シクリ)は、画像認識の能力を持ち、コンピュータ画面で表示された画像に対して「こういう処理をしなさい」とプログラムできるアプリケーションです。
人間がコンピューターで仕事をする場合でも、例えば「画面が切り替わってこのボタンが出たら押す」や「こういう名前の入力欄が出たら、データを入力して」など決まった操作をしている事が多いですね。
SikuliXが動いていれば、画像の切り替わりや、入力欄の特徴を捉え、所定の操作をさせる事ができます。
余談ですが、Sikuri(シクリ)はメキシコの先住民族ウィチョル族の言葉で「神の眼」という意味だそうです。
コンピュータに使用者の「視点」を持たせる事が出来た事で、この名前になったようですね。
参考書籍はあまりなく、少々古いものですが
を参考にしています。
SikuriXのインストール
SikuliXは、Javaの実行環境を必要としますので、現在、Java実行環境をインストールしていない場合は、インストールが必要です。
既にJava実行環境をインストール済みでしたら、SikuriXのインストールへ直接進みます。
Java実行環境のインストール
まず、Javaのダウンロードサイトに行き、実行ファイルを入手します。
その際、中央の目立つボタンではなく、その下のすべてのJavaダウンロードをクリックします。
Windows オフライン (64ビット)のファイルをダウンロードします。
執筆時には、jre-8u281-windows-x64.exe がダウンロードされました。
このファイルを実行すれば、Javaの実行環境が構築されます。
SikuriX IDEのインストール
SikuriX IDEをインストールし、SikuriX の実行用ファイルを作成できる環境を構築します。
SikuriXの配布サイトに行き、実行ファイルを取得します。
中央にあるリンクから、sikulixide-2.0.5.jarをダウンロードします。
以前のバージョンでは、他にもダウンロードするファイルが必要だったのですが、2.0.5から同梱になったとの事で、このファイル一つで実行できます。
ダウンロードしたファイルを、C:\直下など、できるだけ短い名前のフォルダに移動し、実行すれば、SikuriX IDEの画面が立ち上がります。
注意点として、日本語の入ったフォルダには入れられませんので、格納するフォルダは必ず全文字が英数字である事を確認してください。
今回は、C:\直下にsikurixというフォルダを作成し、そこに配置しました。
このファイルを実行すると、IDEが表示されます。
SikuriXの実行ファイルの作成
IDEが起動したら、実行ファイルを作成していきます。
といっても、殆どプログラムの知識は必要なく、画面を指定して処理を入れていくだけになります。
簡単な例として、WinSCPを立ち上げてみます。
スクリーンショットを録るをクリックすると、画面のキャプチャができます。
必要な場所を矩形に切り取りします。
すると、このように矩形に切った画像が表示されます。
この画像をクリックすると、細かい設定が可能です。
ファイルは矩形選択の情報です。
マッチングプレビューの赤い部分が、マッチした部分です。
通常、画像の中心に処理が行われますが、ターゲットオフセットで位置を変更できます。
次に、画像の前後に、何を実施するのかを記述します。
デスクトップ上のアイコンからアプリを起動するのは、ダブルクリックなので
doubleClick([画像])
と記述します。
実行の前に、メニューのファイルから、名前を付けて保存しておきましょう。
今回は、C:\sikurix にWinSCP_testという名前で保存しました。
保存すると保存名のフォルダができ、中にキャプチャした画像と、実行ファイルのpyファイルが保存されます。
あとは実行ボタンを押すと、今回作成したファイルが実行されます。
Windows10のデスクトップ上で、マッチするWinSCPのアイコンを探し、指定したダブルクリックをしたため、WinSCPが立ち上がりました。
より複雑な処理
これだけではつまらないので、処理を加えます。
doubleClick("1621923311178.png")
exists("1621925196305.png",15)
click("1621925302927.png")
wait(5)
click("1621925385371.png")
click("1621925560634.png")
type("PASSWD")
click("1621925846407.png")
各処理の数字.pngはキャプチャした画像を指していて、IDEの画面ではこのように見えます。
exists(,15) は、画像が出てくるまで最大15秒待ちます。
しばらくすると画面が切り替わるアプリの場合、ここに切り替わった後の画像を入れておき、出てくるまで待て と指示できます。
ここではサイトの一覧が表示されるのを待っています。
click()は画像をクリックします。
クリック点は中央ですが、先ほどのターゲットオフセットを指定した場合は、その点がクリックされます。
wait(5) は5秒待ちという意味です。
type(“PASSWD”) は、その前の画像でポイントを決めておき、指定した文字列を「キーボード入力した」と再現できます。
そのため、ここではパスフレーズの部分にPASSWDと入力している事になります。
この処理を実行すると、WinSCPが立ち上がり、ログインボタンが押され、パスフレーズを入力してOKがクリックされます。
条件分岐など
WinSCPは、前回接続したサイトを覚えているため、一度このスクリプトを動かし、「吉川商会」のサイトに入ると、クリックによりサイト名の編集に入ってしまいます。
このため、未選択時のサイト名をキャプチャしておき、その画像がでてきたらクリックという事が可能です。
このようにすると、マッチングが99とかなりきつめにしましたので、白地で「吉川商会SSH」がでるまで5秒待つことになります。
一度ログインした後では、ややブルーの地なので、この判断ではマッチせず、吉川商会SSHはクリックされず、次の処理に移っていくことになります。
逆に、他サイトを覗いて閉じたあとでは、白地の吉川商会SSHになるため、クリックされます。
このように、条件分岐も仕込むことが可能です。
SikuriXIDEの環境設定
デフォルトの設定では、「スクリーンショットを録る」を押すと1秒でキャプチャモードになります。
キャプチャーを実行するまでの時間 を例えば10にすると、「スクリーンショットを録る」から10秒でキャプチャされるようになります。
マウスの操作や、ホバー後に出てくるメニューなどを覚えさせる場合は、長めにとれば大丈夫です。
作成したファイルの実行
IDE上で動作が希望通りなら、このファイルを実行できるようにしましょう。
call java -jar C:\sikuliX\sikulixide-2.0.5.jar -r C:\sikuliX\WinSCP_test.sikuli
call java -jarの後に、sikulixide-2.0.5.jarをフルパスで記入。
-r の後に、作成したプロジェクトを記載します。
これを、名称.batで保存し、バッチファイルを作成します。
あとは、batファイルをダブルクリックすれば、作成した処理 今回の場合、WinSCPが立ち上がり、サイトが指定され、ログインされます。
このバッチファイルを、Windowsのスケジューラーに登録すれば、指定の時間に無人で処理も可能です。
お仕事で使う場合は、出勤の何時間か前に自動的に起動するように設定しておけば、朝来たときには、判断を必要としないルーチンの処理作業はすべて終わっている という事も可能です。
SikuriX実行時の注意点
このように自動処理を可能にするRPAのひとつとしてSikuriXを紹介しましたが、注意しなくてはならないことがあります。
人間の判断がどうしても必要とい処理はSikuriXでは実行できません。
あくまで、いつも同じ作業をしているルーチンワークの部分になります。
判断として可能なのは、指定のダイアログが表示されるのをif文で待ったり、定型の選択肢を選ぶくらいです。
また、あらかじめ取得した画面情報から、自動的にマウスを操作して処理している関係上、予期しないアプリや情報画面が立ち上がったりすると、画面の一部がそれに隠れてしまったりして処理が停止することがあります。
当然、SikuriXを実行中のパソコンを人間が触ったりすると、予期しない画面により処理が実行できなくなる場合があります。
SikuriXを実行する場合は、必要なアプリケーション以外はインストールしていない、通知などをすべて切った、SikuriX専用マシンを用意したほうがよろしいかと思います。