SikuliX(シクリエックス)検討中

SikuliX(シクリエックス)というものを今更知りました。Pythonを使えば手軽に無料のRPA環境が作成できます。

無料のRPAツール

無料で利用可能なRPAのツールはいくつかあります。

マクロマン
Power Automate
UiPath Community Edition
Automation Anywhere
SikuliX

マクロマンは少し使いましたが画像認識がイマイチでした。

SikuliX(シクリエックス)

SikuliX(シクリエックス)、画像認識技術を使ってパソコン画面上の操作(マウスやキーボード)を自動化するオープンソースのツールです。

一般的な自動化ツール(Seleniumなど)が「システムの内部データ(HTMLの構造など)」を読み取って操作するのに対し、SikuliXは「人間が画面を見てボタンをクリックする」のと同じように、画面に表示されている画像を認識して操作するのが最大の特徴です。

主な特徴

画像認識ベースの操作: 画面のスクリーンショット(ボタンや入力欄の画像)をあらかじめ保存しておき、「画面内にこの画像が現れたら、そこをクリックする」「この画像の右側に文字を入力する」といった指示を出します。

マルチプラットフォーム対応: Javaで作られているため、Windows、Mac、LinuxなどOSを問わず動作します。

プログラミング言語で制御: 主にPython(正確にはJava実装のJython)やRuby(JRuby)を使って、条件分岐や繰り返し処理を含む柔軟なスクリプトを書くことができます。

大学の研究から生まれたツール

SikuliXは、もともと「Sikuli(シクリ)」という名前で、マサチューセッツ工科大学(MIT)の研究プロジェクトとして始まりました。

2012年以降、オリジナルのMIT版の開発が停滞したため、現在は RaiMan(Raimund Hocke)氏 を中心としたコミュニティがプロジェクトを引き継ぎ、「SikuliX(シクリエックス)」として進化を続けています。

自由度の高い「MITライセンス」

SikuliXは、MITライセンスのもとで公開されています。

  • 商用利用可能: 企業の業務自動化などに無償で利用できます。
  • 改変・再配布可能: ソースコードを修正したり、他のソフトウェアに組み込んだりすることも許可されています。
  • 著作権表示の維持: 著作権表示(Licenseファイルなど)を保持すること以外に大きな制限はありません。

バージョン状況

SikuliXは現在、Java 8以降をベースとした 2.0.x系 が安定版として広く使われています。

バージョン系列ステータス特徴
SikuliX 1.1.x旧安定版長らく使われてきましたが、現在はサポート終了気味です。
SikuliX 2.0.x現在の主流最新のJava環境への対応やバグ修正が行われている標準的なバージョンです。
SikuliX 3.0.x開発中より現代的なアーキテクチャへの刷新が予定されている次世代版です。

現在の開発状況

主要開発者のRaiMan(Raimund Hocke)氏は、GitHubのリポジトリにおいて、開発ステータスを以下のようにアナウンスしています。

“Paused (not available) till somewhen in later 2025" (2025年後半のいつかまで、開発を休止・利用不可とする)

現在、開発リソースは以下のように割り振られています:

  • 2.0.x系(安定版): 2.0.5や2.0.6が実質的なメインです。バグ修正や最小限の維持が行われています。
  • 2.1.0(開発版): 一時期開発が進められていましたが、現在は「Suspended(一時停止)」とされています。
  • 3.0.x(次世代版): 構想はあるものの、具体的なコードとしての完成はまだ先という状況です。

リリース時期の予測

公式のアナウンスに基づくと、2025年末以降に開発が再開または進展する見込みですが、3.0.xとしての正式リリースは2026年以降になると予想されます。

  • 課題: RaiMan氏という個人開発者の尽力に依存している部分が大きいため、リリース時期は流動的です。
  • 期待される変化: リリースされる際は、内部構造が大きく変わり、よりネイティブなPython 3.xとの連携(Py4Jなど)が強化されると言われています。

もし今、業務やプロジェクトでSikuliXを使おうと考えているのであれば、「3.0.xを待つ」のは得策ではありません。

  1. 現行の2.0.5 / 2.0.6 を使う: これらが現在の「完成形」であり、十分に実用的です。
  2. Java環境に注意: 現行版はJava 11〜17程度での動作が推奨されています。
  3. Python 3を使いたい場合: SikuliX IDEを使うのではなく、sikulixapi.jarを使いながらPythonから呼び出すライブラリ(sikulix4pythonなど)を検討してください。

現行の SikuliX 2.0.5 / 2.0.6 で採用されている Python は、厳密には 「Jython(ジャイソン)2.7」 です。

Jython 2.7

Jython は、Java プラットフォーム上で動作する Python 実装です。

  • 文法: Python 2.7 系に準拠しています。
  • 特徴: Python のコードから直接 Java のライブラリを呼び出せるため、SikuliX のコア(Java製)を操作するのに最適です。
  • 注意点: 現在主流の Python 3.x 系とは互換性がありません。(例えば print "hello" と書き、print("hello") のカッコは必須ではありません)。

SikuliX が Jython を使い続けているのには、技術的な理由があります。

密結合: SikuliX は Java で書かれた画像認識エンジンを積んでいます。Jython を使うと、スクリプト(Python)とエンジン(Java)を同じ JVM(Java仮想マシン)内で高速にやり取りできるからです。

Jython の限界: 残念ながら、Jython プロジェクト自体が Python 3 への対応に難航しており、2.7 で止まっている状態です。

もし「最新の Python 3」で SikuliX を使いたいなら

SikuliX IDE(付属のエディタ)を使わず、以下の方法をとる必要があります。

  • PyRobot や PyAutoGUI を使う: 完全に Python 3 の世界で完結させる代替ツールです。
  • SikuliX API をブリッジする:Py4J という仕組みを使い、Python 3 から Java 上の SikuliX 機能を呼び出す方法です(少し上級者向けです)。

「Python 2.7 の文法でも、自動化さえできれば問題ない」 というスタンスであれば、現行の 2.0.x 系をそのまま使うのが最も手軽で安定しています。

Python 3だけでやる?

ここまでしらべてPythonがわかるのであれば、Python3オンリーで自動化すればいいのではと思いました。

SikuliXが内部で行っている「画面キャプチャ + 画像認識(OpenCV) + マウス操作」というプロセスを、Python 3のライブラリを組み合わせることで簡単に再現できます。むしろ現在のPython環境では、SikuliXを使わずにPython 3だけで完結させる方が主流になっています。

主に使われる2つの代表的なライブラリ

PyAutoGUI(最も手軽で人気)

「とにかく簡単に、SikuliXのようなことをやりたい」場合に最適です。

  • 特徴: マウス操作、キーボード入力、画面内の画像検索機能がすべてパッケージ化されています。
  • 画像マッチング:locateOnScreen('button.png') という関数一つで、画面内から特定の画像を探し、その座標を返してくれます。

OpenCV + PyAutoGUI(高度な処理)

SikuliXのエンジンそのものである OpenCV を直接使います。

  • 特徴: 非常に高速で、高度な画像処理(グレースケール化、複雑なテンプレートマッチング、動画解析)が可能です。
  • メリット: 「複数の画像から一番似ているものを探す」「特定の範囲内だけで探す」といった細かい制御が自前で書けます。

SikuliX vs Python 3(PyAutoGUI等)の比較

項目SikuliX (2.0.x)Python 3 (PyAutoGUI等)
言語Jython 2.7 (古い)Python 3.x (最新)
IDE専用エディタあり (画像が貼れる)VS Codeなどの汎用エディタ
ライブラリJava用なら豊富Python用(NumPy等)がすべて使える
画像管理スクショを撮って管理しやすい自分でファイル管理が必要
導入障壁Javaのインストールが必要pip install だけで完結

どちらを選ぶべき?

  • SikuliXを選ぶべきケース: 「プログラミングは苦手だけど、専用エディタにスクショを貼り付けながら直感的に自動化を作りたい」という場合。
  • Python 3を選ぶべきケース: 「Excel操作(OpenPyXL)やWeb解析(Selenium)、AI機能など、最新のPythonライブラリと組み合わせて高度な自動化を作りたい」という場合。

Systemrpa

Posted by zzz