BeeX Technical Blog

  • 26,534
  • Keita

SikuliXを導入してRPAとして動かす詳細手順(Windows10)

RPAへの取り組みについて、弊社的には1年以上前にさかのぼりますが、コンサル部隊で本格的に取り組むきっかけとなったのが、社内勉強会で発表されたこれです。

元ネタは弊社内技術者向けに書いているのですが、その当時の温度感を重視して、体裁をあえてそのままにしました。これでSAPGUIからパスワードのリセットのデモを見たときは、「おぉ!」という歓声が沸きました。実際に動いているのを見てみると、やっぱり印象が違いますね。

Have Fun!

🔰SikuliXの公式サイトとか

🔰SikuliXとは

SikuliXは、Windows、Mac、またはLinux / Unixを実行しているデスクトップコンピュータの画面に表示されるものをIntelがOSSでやってるOpenCVという画像処理ライブラリを利用して自動化するツール。

SikuliXを利用すると、テストの自動化とか色々とできて便利らしい。

あと最近流行り?のRPAとは名乗ってないけれどRPA的な事も出来る。

(RPAの厳密な定義もあるのかどうかよくわかりませんが……)

なおSikuliXの処理は

  • Python (Jython) (preselected) allows scripting using Python language level 2.7 (internally used interpreter Jython 2.7 )
  • Ruby: scripting using Ruby language level 1.9 (internally used interpreter JRuby 1.7.x )
  • java

でコーディングできる。デフォルトはpythonの様子。

🔰SikuliとSikuliX

ネットで検索するとSikuliとSikuliXの2つが引っかかる。

SikuliX by RaiManのSikuli is God’s Eyeを見ると。

  • Sikuliは2009年にMITのUser Interface Design Groupが始めたOSS。
  • Sikuliは2012年でプロジェクトを終了し、開発とサポートをsikuliXに引き継いだ。

らしい。

ちなみにSikuliのリポジトリはgithub – sikuli

こちらはもう更新される事はないでしょう。

というわけで、現在はSikuliXの情報を収集して利用すれば問題ありません。

🔰SikuliXの利用環境構築

本資料でインストールする環境は

  • Windows10
  • SikuliX Version 1.1.1
  • java version “1.8.0_144”
  • Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
  • Java HotSpot(TM) Client VM (build 25.144-b01, mixed mode)

SikuliX QuickstartにWindows/Mac OSX/Linux/Unixそれぞれのクイックスタート資料があるのでこれを参考にインストールを行う。

chocolateyにも一応パッケージが存在するが、versionが1.1.0と少し古いものだったので本資料では公式サイトからダウンロードしてインストールを行った。

🔰前提条件確認

SikuliXを動かす前提条件として、Versionの1.1.1では

In any case you must have a valid Java installation of at least Java 7 (JRE (runtime only) or JDK (runtime + development kit)).

らしいのでjava -versionで環境確認。

OK。条件を満たしてない場合はjavaをインストールして下さい。

  • Real Screen needed
  • Using Virtual Machines
  • Machine not useable in parallel while SikuliX scripts or programs are running

🔰SikuliXのダウンロードとインストール

SikuliX Quickstartにしたがって、該当Versionのダウンロードを行う。(本資料では1.1.1)

本資料でのインストール先はc:\tools\sikulixとしたので下記のようにダウンロードしたファイルを配置。
(どうやらsikuliXはsikulixsetup-1.1.1.jarを置いたディレクトリにイントールするっぽい?)

インストールディレクトリに配置したsikulixsetup-1.1.1.jarを実行して、

はい

必要な物にチェックを付ける。

チェックについての詳細はHボタンを押すか、3.How do I set up SikuliXに書いてあります。

下記画像ではpythonとかrubyとかjavaとか、そのうち触ってみようかな? という思惑で適当にチェックを付けてますが。
普通に触る分にはデフォルトのpythonだけで十分な気がします。

はい

はい

OK

OK

インストール完了

🔰SikuliX IDEの起動

4.Getting started with SikuliX IDE

意外と公式サイトに丁寧に説明が書いてあります。(上記参照)

今回はrunsikulix.cmdを実行して起動してみる。

SikuliX IDEが起動しました。ここでSikulixの処理を記述していきます。

🔰まずは公式ドキュメントにあるHelloWorldをやってみる

Hello World (Windows)

SikulixのドキュメントにそのものずばりのHelloWorldという例があるのでやってみる。

🔰スクリプトのドキュメントは下記にあるので使い方はここをみればOK

🔰Windowsボタンを探してクリックして、HelloWorldとタイプするSikulixスクリプトを作成する

まずは現在開いているSikulix Scriptが無題となっているのでHelloWorld用として保存する。

今回はデスクトップにSikulix.HelloWorldとして保存してみた。

赤枠のスクリーンショットボタンを押すと、スクリーンショットを取得するモードとなるのでWindowsボタンを範囲選択する。

スクリーンショットを取る

Windowsボタンを範囲選択

IDEのコーディング部分に画像が挿入された。

今回はこの画像をクリックさせたい。

click()で囲んでやるとクリックする。

クリックした後の動作として文字列のタイプを行うのは。

type(“文字列”)で指定する。

type(“HelloWorld”)

と直接入力してもよいが、赤枠の部分をクリックすると自動でそれぞれの処理が挿入されたりする。

textとなっている部分を”HelloWorld”に変更して保存

🔰Sikulixスクリプトの実行

(実行ボタン) や (メニュー -> 実行) から実行する。

マウスが動きだして、WindowsボタンをクリックしてHelloWorldとタイプします。

🔰実行動作

ウィンドウズボタンが画像認識されて、マウスカーソルが自動的に誘導される。

Windowsボタンにマウスが移動してクリック

typeで helloworld とキー入力が行われる。

ウィンドウズボタンを押した後の検索テキストにhelloworldと入力されて処理は完了。

🔰今回作成されたSikulixスクリプトファイル群

🔰総評

SikuliX IDEでさっくりとコーディングできるので、かなりとっつきやすい印象を受けた。

処理の完了を検知するとかは、特定画像が表示されるまで待てばよい。 という方法が使えるのでプロセスを検知したら、トリガが発生したらという従来の方法にとらわれない検知が可能な点が面白い。

SikuliX IDEのコーディング画面には画像が入って来るのでなかなか見た目のインパクトが強いですね。

ちなみに、最新のノートPCだとOKだが、数年前の古いノートPC だとロボット特有の空振り(画像を認識しない)がしばしば発生しました。ある意味、画像認識ライブラリのチューニング余地とか、CPUの拡張命令サポートとかの課題があるのかもしれませんが、深くは追い切れませんでした。