Pythonにおける自動化処理には、いろいろなやり方があります。
今回は、そのうちの一つであるSikuliXに関して解説していきます。
SikuliXには、他の方法とは大きく異なる特徴があります。
その特徴とは、専用の開発ツール(IDE)が用意されていることです。
この記事では、実際にそのIDEを使って動作確認まで行います。
この記事を読めば、SikuliXでGUIの自動化を行うことが可能となります。
本記事の内容
- SikuliXとは?
- SikuliXのシステム要件
- SikuliXのインストール
- SikuliXの動作確認
それでは、上記に沿って解説していきます。
SikuliXとは?
Sikuli(̪シクリ)とは、インディアン文化において神の目を表します。
神の目のごとく、GUI操作するということなのでしょうか?
そのSikuliは、2009年に開発が始まりました。
2012年にSikuliのサポートが引き継がれる形で、SikuliXが誕生しました。
つまり、SikuliXはSikuliの後継プロジェクトということになります。
では、このSikuliXとはいったい何なのでしょうか?
SikuliXは、デスクトップコンピュータの画面上に表示されているものを自動化します。
GUI処理の自動化ツールと言えます。
具体的には、様々なアプリケーションを連携させることが可能です。
連携させて、処理を自動化します。
いわゆる、RPAというヤツです。
そして、連携させる処理(命令)をSikuliX上で記述していくわけです。
その際に、PythonやRubyなどのプログラミング言語を利用できます。
ここでSikuliXの技術的なことを説明しておきます。
まずは、SikuliX自体はJavaで開発されています。
これが大きな特徴の一つです。
もう一つは、 SikuliXが以下の技術に支えられているということです。
- OpenCV
- Tesseract
OpenCV
OpenCVに技術により、画面のGUIアプリを認識できます。
OpenCVと言えば、顔認識で有名ですね。
このOpenCVのインストールに関しては、次の記事で解説しています。
当ブログにおけるOpenCVに関する過去記事は、以下で確認できます。
OpenCVに関する過去記事
他のツールやライブラリでも、OpenCVは利用されています。
その意味では、OpenCVを画像認識に利用するのは一般的なことと言えます。
Tesseract
Tesseractの技術により、テキストを認識しています。
Tesseractは、オープンソースのOCRです。
次の記事では、Tesseractに関して解説しています。
こちらもOpenCVと同じく、他のツールやライブラリで利用されています。
SikuliX自体もオープンソースです。
このようにオープンソース同士が協働し合うのは、本当に素晴らしいことと言えます。
是非とも、このオープンソースの恩恵を受けましょう。
SikuliXのシステム要件
2021年1月時点において、SikuliXの最新(安定版)バージョンは2.0.4となります。
この最新バージョンは、2020年3月にリリースされています。
SikuliX 2.0.4のシステム要件で重要なのは、一つだけです。
「Javaが必要」
Javaのインストールに関しては、ここでは説明しません。
もしかしたら、すでにインストール済みかもしれません。
ちなみに、コマンドプロンプトで次のように入力してください。
>java -version java version "1.8.0_221" Java(TM) SE Runtime Environment (build 1.8.0_221-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
インストールされていれば、上記のようにJavaのバージョンが表示されます。
ただし、バージョンには注意してください。
最低でもJava 8以上が必要となります。
よって、私の環境では大丈夫です。
Javaのバージョンさえクリアしていれば、特に問題はないでしょう。
SikuliXのインストール
ここでは、Windows 10にSikuliXをインストールします。
そして、SikuliX上ではPythonでプログラミングをします。
そのためのインストール手順となります。
SikuliXの公式ダウンロードページ
https://raiman.github.io/SikuliX1/downloads.html
最初に、上記ダウンロードページにアクセス。
シンプルなページ上に以下のリンクがあります。

上記リンクをクリック。
そうするとファイルのダウンロードが始まります。

適当(各自で管理する)なフォルダに保存します。
続けて、同じページ上に次のリンクがあることを確認してください。

SikuliX上でPythonを利用するので、「The Jython interpreter 2.7.1 for python scripting (the default)」をクリック。
もしRubyを利用するなら、「The JRuby interpreter 9.x for ruby scripting」を選んでください。

先ほどの「sikulixide-2.0.4.jar」を保存したのと、同じフォルダに保存します。

結果的に、選択したフォルダ内は上記のような状況になるはずです。
以上で、SikuliXのインストールが完了となります。
「もう終わり?」と思うかもしれませんが、最新バージョンはこれでインストールが終わりです。
それでは、最後に動作確認をしておきましょう。
SikuliXの動作確認
SikuliXIDE(統合開発環境)を起動します。
jarファイルをダウンロードしたフォルダにまで移動。
SikuliXIDEの起動方法には、2つの方法があります。
- jar(sikulixide-2.0.4.jar)ファイルのダブルクリック
- コマンドプロンプトにおいてJavaコマンドの実行
Windows環境なら、ダブルクリックで起動することになるでしょう。
コマンドで実行する場合は、以下。
>java -jar sikulixide-2.0.4.jar
もし起動に失敗するばら、次のオプションで起動すればログが見れます。
>java -jar sikulixide-2.0.4.jar -v -c
起動に成功したら、以下の画面が表示されます。

ここでjarのあるフォルダを確認します。
そうすると、「jython-standalone-2.7.1.jar」が消えています。
安心してください。
「jython-standalone-2.7.1.jar」は、以下のフォルダに移動しているだけです。
C:\Users\ユーザー\AppData\Roaming\Sikulix\Extensions
確認できたら、SikuliXIDEのメニュー「ツール」をクリック。

以下のようなサブメニューが表示。

「拡張機能」を選択します。
以下の画面が表示されます。

ここでは特に何かをするわけではありません。
jython-standalone-2.7.1.jarが、Extensionsフォルダにある時点で拡張機能として有効のようです。
最後に実際にGUIアプリの自動処理をしてみましょう。
自動化する処理は、「メモ帳の起動」です。
コードは、以下。
# -*- coding: utf-8 import os import subprocess #アプリのパス app_path = os.path.join(os.environ['WINDIR'],'notepad.exe') #対象アプリを開く subprocess.Popen([app_path]) #アプリの起動を待つ sleep(3)
以下のようにコードを記載します。

コードを記述したら、「実行」ボタンをクリック。
(ファイルは適当な名称で保存してください)
自動的にメモ帳が立ち上がります。
簡単な処理ですが、見事に自動化の成功です。