SikuliでWin10のGUIアプリを自動操作したよ

自動化/自動操作

どうも、この前PythonとSeleniumでブラウザ操作の自動化を行いましたが、この記事ではSikuliというライブラリを使ってWindowsの操作全般を自動的に行うことをやっていこうと思います。なぜ今回そんなことをするはめになったかというと、バイナリ解析や逆コンパイルを規約で禁じられているプログラムからデータを簡単に参照できるようにしたかったからです。…と言っても調べると解析している人は大量にいるのでなんとも悲しいなぁという感じです。



OS : Windows 10 64bit
Sikuli : 1.1.0


1. Sikuliとは?

Sikuliは内部に画像解析ライブラリの超定番OpenCVを持っているGUIの自動的操作ツールです。OpenCVを持っているわけですから、画面表示に対して主にテンプレートマッチングを行いそこに対してクリックなどの操作を行うことを得意にしているみたいです。Sikuli専用の開発環境では、マッチング用のテンプレートを超簡単にキャプチャできるのでとっても使いやすいツールに仕上がっています。今回はこの開発環境を使ってみました。

2. インストール方法

次にインストール方法です。jar形式なので一般的なインストーラとは微妙に異なりますが、まぁ、そんなことは関係ないでしょう。ちゃちゃっとやっていきましょう。まずは、公式サイトにアクセスしてください。このページ内の「How can I get SikuliX?」の項目内にある「SikuliX’s Launchpad page.」のリンクで移動し、そこにある「sikulixsetup-x.x.x.jar(x部分は数字)」を保存してください。保存先は、どこでもいいですが、自分は今回デスクトップに「Sikulix」というフォルダを作成してその中に保存しました。

次に、保存したsikulixsetupを実行します。すると以下の画像のようなウィンドウが出現するので、1番の項目にだけチェックを入れて「Setup Now」を押します。
computer_002_001

自分はこの時何故か一度目にインストールが失敗してしまったのですが、もう一度やったら何故かインストールできました。備忘録的には最悪ですが、原因は不明です。みなさんもインストールに失敗しても何回かやると成功しちゃうかもしれません。……JDKのバージョンが合わない場合はさすがに成功しないと思うので、そこは注意です。

インストールが完了すると、sikulixsetup〜.jarをおいていたフォルダ内にいくつかのファイルが生成されいるはずです。実際にsikuliのIDEを実行するにはrunsikulix.cmdを実行します。すると、コマンドプロンプトが出現し、しばらくするとIDEが出てきます。これでインストールは完了です。

3. 自動化してみる

さて、次は実際に自動化させてみましょう。先ほどのIDEを起動しておいてください。別に自動化させるのは何でも良いのですが、今回はめんどくさいので、デスクトップ上にフォルダを作成してそれをゴミ箱に突っ込むという果てしなくどうでもいい作業を自動化させてみます。ちなみに最終形態は以下の画像のようになります。
computer_002_002

たかだか5行のコードで簡単に自動化させることができてしまいます。というわけで、このようになる手順を見ていきましょう。まず、IDEを起動すると左側に出ている項目一覧から「マウスの動作」内の「rightClick([カメラマーク])」を選んでください。すると画面全体が暗くなり、「Select an image」という状態になります。この状態時、クリックをさせたい領域をドラックで選択することができます。選択が終わるとIDE画面に戻り、先ほど選択した領域が登録されていることがわかります。次に「キーボードの操作」から「type(text)」を選択したください。これは、textの部分に入る文字をタイプするという動作を行います。今回は右クリックメニュー内のフォルダを新規作成するためのショートカットであるx,fを順番に押しています。上記の完成図では次のClickはrightClickと同じなので省略。その次のdragDropはその名の通りドラッグ&ドロップを行う命令ですが、これもClickと同じように領域をドラックで選択すれば大丈夫です。

なんとこれだけの手順でGUIの自動化をさせることができるようになりました。お手軽すぎてびっくりです。

おわりに

さて、今回は、GUIの自動化ということでSikuliを使ってきましたが、とてつもなく簡単でした。一応PythonやRubyなどのプログラム内部から呼び出すこともできるようですが、今回はIDEを使って超お手軽に自動化という形でやってきました。これを使えば簡単だけど何度も繰り返さなくてはいけない作業を簡単に自動化させることができるはずです。余った時間で遊べるじゃないか!! でも遊ぶのも時間がもったいない、自動化しちゃえば良いじゃね? ……。 自動化の闇が深まったところで今回はおしまいです。


RaiMan’s SikuliX

2016-10-17自動化/自動操作