自動化ツールの SikuliX を使って話題の RPA を試してみる

# 概要

Webアプリのテスト自動化で有名なものとして `Selenium` や `TestCafe` などがありますが、これらのツールはWebアプリ専用となっており、Windowsの画面の操作であったりExcelの操作などは自動化させることができません。

以前からあらゆる操作を自動化したいというニーズはあったかと思いますが、2016年ごろから `RPA` (Robotic Process Automation) という言葉が使われ始め、AI や IoT などのように話題になってきています。RPA は簡単に説明すると、認知技術(ルールエンジンや機械学習、AIなど)を活用した業務の効率化や自動化を行う仮想知的労働者という定義になっていますが、この RPA のツールを利用することで、Webアプリだけでなくあらゆる操作を自動化できるようになり、作業の効率化が図れるようになっています。

RPA ツールに関しては既に多くのベンダーからリリースされていますが、今回はオープンソースの **SikuliX (シクリ)** というツールを使って自動化の世界を試したいと思います。

# 動作環境

* Windows 10 (64bit)
* Java SE 8 (64bit)

# 準備

## 1. Java のインストール

SikuliX では `Java SE 8` が推奨されてるため、[Java SE Downloads](https://www.oracle.com/technetwork/java/javase/downloads/index.html) から Java SE 8 の `JRE` をダウンロードします。

Java SE 8 のインストール後、環境変数の `PATH` へ通しておき Java コマンドが使える状態にしておきます。

```
> java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
```

## 2. SikuliX のインストール

SikuliX の [download page](https://launchpad.net/sikuli/sikulix) から `sikulixsetup-1.1.3.jar` をダウンロードします。
(※2019/02/21 現在、最新バージョンは 1.1.3 です)

ダウンロードした jar ファイルは `C:\SikuliX` フォルダへ配置しておきます。
Windows のコマンドプロンプトを起動し、以下のコマンドを実行します。

```
> cd C:\SikuliX
> java -jar sikulixsetup-1.1.3.jar
```

確認ダイアログが表示されるので「はい」ボタンで続行します。

![sikulix1.png](https://qiita-image-store.s3.amazonaws.com/0/278145/84683370-5acf-be12-fc2f-b0fd2b33b6a4.png)

しばらくすると、セットアップのダイアログが表示されるので「1」にチェックを付けて「Setup Now」ボタンでセットアップを開始します。
ちなみに、「2」のチェックは必須ではありません。 `NetBeans` や `Eclipse` から Java の API を使用して開発を行う場合のみチェックを付けてください。

![sikulix2.png](https://qiita-image-store.s3.amazonaws.com/0/278145/307cbaf7-f35e-4ed1-1cf3-980d51549f05.png)

セットアップ内容の確認ダイアログが表示されます。「はい」ボタンで続行します。

![sikulix3.png](https://qiita-image-store.s3.amazonaws.com/0/278145/a4797f71-fd72-d804-3644-2a7f40c8ef87.png)

セットアップが完了するとダイアログが表示されるので「OK」ボタンで閉じます。

## 3. SikulixIDE の起動

`C:\SikuliX` フォルダに `runsikulix.cmd` ファイルが配置されるのでコマンドプロンプトから実行します。

```
> runsikulix.cmd
```

しばらくすると `SikulixIDE 1.1.3` が起動します。

![sikulix6.png](https://qiita-image-store.s3.amazonaws.com/0/278145/3e393f0b-6573-c5f7-3119-f0ca8c077fe5.png)

「ファイル」メニューから「名前を付けて保存」を実行し、フォルダ名を「test」として保存します。
保存すると以下のようにフォルダが生成されます。

```
C:\SikuliX\test.sikuli
```

## 4. 自動化の操作の記録

自動化したい操作は SikulixIDE から簡単に作成することができます。
SikulixIDE の左上にある「スクリーンショットを撮る」ボタンをクリックします。

![sikulix14.png](https://qiita-image-store.s3.amazonaws.com/0/278145/e0afc21e-d87b-4d9f-d9b5-d0c35ffa5e56.png)

「Select an image」というメッセージとともに画面が暗くなります。
この状態で SikuliX に自動でクリックしてほしいエリアを選択します。

![sikulix12.png](https://qiita-image-store.s3.amazonaws.com/0/278145/8bd75e83-af77-bda3-0d75-27c73c7c4f83.png)

今回は左下の Windows のスタートボタンをクリックすることにします。
スタートボタンのエリアを矩形選択します。

![sikulix13.png](https://qiita-image-store.s3.amazonaws.com/0/278145/95b076ff-6cef-e1f3-cd58-4932267ae8f6.png)

エリアを選択すると、SikulixIDE 画面が再び表示され、選択したスタートボタンの画像が表示されます。

![sikulix7.png](https://qiita-image-store.s3.amazonaws.com/0/278145/8c111bc6-7df3-0b34-8257-7bf0f95d3c2f.png)

スタートボタンをクリック後は `Hello World!` と入力するようにしてみます。

スタートボタン画像を「click」で囲み、「type」を追加して「Hello World!」となるようにスクリプトを修正します。
修正したら `ctrl + s` キーで保存しておきます。

```
click([スタートボタン画像])
type("Hello World!")
```

![sikulix10.png](https://qiita-image-store.s3.amazonaws.com/0/278145/7eeafede-fb20-5129-d7bc-d9ca27e437fc.png)

## 5. 自動化した操作の実行

作成したスクリプトを SikulixIDE 上で実行してみます。
SikulixIDE の「実行」ボタンをクリックすると自動化した操作をその場で試すことができます。

![sikulix.gif](https://qiita-image-store.s3.amazonaws.com/0/278145/18520bd7-b9fb-eaef-94d3-6f1e533da5b9.gif)

正しく実行されると、Windows のスタートボタンが自動でクリックされ、`Hello World!` という文字が自動で入力されます。

このように、SikuliX のスクリプトへ自動化したい操作を入力しておくことで決まった操作を自動で実行してくれるようになります。この仕組みを応用することで従来は難しかったWindowsの画面の操作であったりExcelの操作も自動化できるため、自動化の世界は広がります。

特に注目すべきは、クリックしてほしいエリアの画像をスクリプトから指定するだけで実行時に自動判定され、画像と一致するエリアを正しくクリックしてくれるところです。RPA は非常に賢くて便利ですね。

今回は SikulixIDE からの実行のみを試しましたが、SikuliX には API が提供されているため、プログラムに組み込んで自動化の仕組みを作ることもできます。ぜひ RPA を活用して業務の効率化を図ってみてください。