そういう、モデルなんです。

ビジネスモデル、3Dモデル、設計図、模型などの現状と動向を考察、関連書籍の紹介

フリーのRPAツール SikuliX 1.1.4

UIPath などの RPA ツールが流行しているが、無料で使えるツールがないか探してみた。

結論としてはRPAツールとは言い難いが、デスクトップの画像を認識して操作をある程度自動化するような OSS として SikuliX というものがあったので試してみた。

なお開発者が自称するところによれば、SikuliX は

ビジュアル・ワークフローの自動化 automate visual workflow を目的とした、WYSIWYSツール

とのこと。

一つの画像も無い、素っ気ない SikuliX のサイトへ行く
sikulix.com

能書き

SikuliX IDE の jar ファイルをダウンロード

現行バージョンは Version 1.1.4 とのこと。 
最低限必要なのは SikuliX IDE のようなので、これをダウンロードした。

D:\Program Files (x86)\Sikulix

にファイル sikulix.jar を配置した。

ダブルクリックしてみたがアプリの関連付けがされておらず起動しなかった。

まず Java のインストールが必要だった

そういえば最近 Java なるものを使っていないので、Java 環境そのものがなかった。

Java 8 以上ならば動作するとのことなので、Open JDK 11 を JDK 11.0.2 GA Release よりダウンロード。 

Zip 形式だったので右クリックして解凍し、作成されたフォルダ jdk-11.0.2 を Cドライブ直下にフォルダごと移動した。 

Java へのパス設定は必須なので [Windows の設定]より[環境変数を編集]を選んで、f:id:tombi-aburage:20190305110153p:plain

Path 変数に Jdk-11.0.2 を追加した。 

f:id:tombi-aburage:20190305111508p:plain

 コマンドプロンプトを起動し、sikulix.jar を指定して Java を起動する。 

f:id:tombi-aburage:20190305111731p:plain

たくさんの警告 WARNING を出力しながらも、一応起動した。
インタフェースの一部は日本語化されているようだが、英語部分もまだある。

f:id:tombi-aburage:20190305112547p:plain

Java 実行環境の作り方を知らないと、起動させることもままならない感じだ。
なんだが使い始めるまでのハードルがかなり高いぞ…

サンプルスクリプト hello world を試作

分かりやすいとはいえないがドキュメントがある。

Sikuli / SikuliX Documentation for version 1.1+ (2014 and later) — SikuliX 1.1+ documentation に大体の使い方の説明があり、

最も簡単なスクリプト(いわゆる Hello World )の作り方は以下のとおり。

https://sikulix-2014.readthedocs.io/en/latest/tutorials/helloworld/helloworld-win.html

実行すると、マウスポインタがするすると Windows (スタート)アイコンのところまで移動してクリックし、hello world が検索条件欄に入力された。

f:id:tombi-aburage:20190305114036p:plain

 

使い方をさらに調べてみる

もちろん、こんな hello world では何の役にも立たない。

より理解するために SikuliX - QUICKSTART を読み始めたら、まだ最新のドキュメントではないので Getting Started のほうを見よとのことだった。

Until this page is revised for version 1.1.4+ look here for Getting Started 

 なお、 SikuliX を対象とした書籍としては以下のものがある。

オープンソースで作る!RPAシステム開発入門 設計・開発から構築・運用まで

オープンソースで作る!RPAシステム開発入門 設計・開発から構築・運用まで

 

始めるには Getting Started

Getting Started というリンクをクリックした先の Web ページは、単なるチェンジログのページであり、始めるために必要なことは少しも書いておらず、最新版での変更点のみ。ドキュメンテーションはかなり混乱しているようだ。

バージョン 1.1.4 には、バージョン2で予定している機能しか入れておらず、主な変更点としては:

  • C++ 実装は Java に置き換え、OpenCV は最新の3.4
  • 文字とOCR機能は Tess4J (Tesseract 3.0.5ベース) で実装
  • 検索のさい、透明な部分のある画像によるマスクが可能に
  • adb 経由での Android 対応の再実装

IDEJythonJRuby を使うには対応するファイルのダウンロードが必要であり、JavaScript についてはまだ利用できない。

とのこと。

再び QUICKSTART に戻る

Getting Started では始められなかったので、再度 QUICKSTART に戻って続きを読む。

前提条件チェック Check the prerequisites

  • 64ビットOSでしか動作しない
  • Java8以上でないと動作しない(最新版を推奨)

とのこと。

別のマシンで試したところ、64ビットOS上の Java8 JRE では動作しなかったので、とにかく Java は最新にしておいたほうがトラブルは少ないと思う。

SiuliX のダウンロードするには How do I download SikuliX

ダウンロードした jar をダブルクリックすれば起動すると書いてあるが、手許の2台のPCではいずれも起動しなかったので、コマンドプロンプトからの起動にしたほうがトラブルは少ないと思う。

SikuliX をセットアップするには How do I set up SikuliX

記載の通りセットアップ手順は 1.1.3 までが対象なので、1.1.4 には関係ない。

SikuliX IDE を使い始めるには Getting started with SikuliX IDE

幾つか起動方法が書かれているが、最後の Java コマンドによる方法しかうまくいかなかった。
Java8 JRE が入っているPCでは、そちらが誤って起動されるので、ダウンロードした最新の Java 10 JDK/bin フォルダにある Java コマンドをフルパス指定することで起動させた。

c:\jdk-11.0.2\bin\java -jar c:\Sikulix\sikulix.jar

助けが欲しいときは Getting help

どうやら、上記 API ドキュメントが一番詳しそうなので読んでみた

前置きとして以下のような説明があった。

SikuliX の動作の仕組みとシステム仕様 SikuliX - how does it work and system specific information

SikuliX の基本 the basics、システム仕様 system specifics を全て読んだ。

しかし、この2章にも使い方は書かれておらず、画像による判定方式について細々と説明されているだけだった。

また開発者自身の定義によれば、SikuliXとは

ビジュアル・ワークフローの自動化 automate visual workflow を目的とした、WYSIWYSツール

とのこと。

世の中にある自動化ツールを3つに分類の上で、

  • 操作記録レコーダー Recorder
  • GUI検出 GUI aware
  • 視覚的 Visually

本ツールは「視覚的」に属しており「操作記録」の機能は現在無いとの説明。
但し、RobotFramework、Cucumber、Selenium と組み合わせた例はあるとのことだった。

なお画像判定は OpenCV の matchTemplate を使ったピクセル単位の一致なので、実行環境が違う場合には失敗しやすい。これはバージョン2で画像管理方法などを改善する予定とのこと。

SikuliX スクリプトとプログラミング SikuliX scripting and usage in programming scenarios

  • 画像の表示を待ち合わせ、GUI要素をマウスやキーボードで操作する手順の繰り返しが基本
  • スクリプト言語を理解することが望ましいが、最初は SikuliX IDE でも十分
  • SikuliX script の実体は書いたスクリプトとキャプチャした画像が格納されたフォルダだが、直接フォルダはいじらないように
  • 配布用のスクリプトは jar、zip 形式でまとめることができ、jar の場合は Sikulix 本体も含めることができるので java 環境さえあれば他のPCでもすぐ実行できる

説明を読み進めていくと、どうやら IDE の標準は Python であり、先に helloworld を作ったときにすでに Python を使っていたらしいことに今さら気づいた。

SikuliX IDEスクリプト作成し画像を整理する SikuliX IDE create/run scripts and organize your images

特に有益な情報はなかった

SikuliX APIスクリプティングJavaプログラミング SikuliX API for scripting and Java programming

これらはリファレンスであり、前から読んでも使い方は分からない。

チュートリアル Tutorials を見たほうがまだましだが、チュートリアルのとおりに IDE の Command List が表示されない。

調べてみたら最新バージョンでは Command List が未実装に戻ってしまったらしく、いきなり心が折れた。2018年8月25日時点のバグとして:

[1.1.4] IDE: No Command List --- dropped by intention --- there should be some replacement

wait、exist など重要と思われる関数の説明も API ドキュメントの中にはない。
最新バージョンで根本的に変更されたのか?

分かりやすい説明がどこにもないので、索引 Index を見て、メソッド名から機能を想像し、解説の中にあるサンプルコードを読むのが一番早そうだが、とても楽だとはいえない… 

やはりタダはタダなりの苦労がある。

そのうち進化していくとは思うが、現時点では取っつきにくい。

少しだけ試して、使いやすい・とっつきやすいなどと言っている人もいるようだが、使いこなしているという人を見かけない。IT業界以外の一般ピープルには、使い始めることすら困難だろう。

いまのところ安定バージョンと開発バージョンの区別もなく、ドキュメントは追いついておらず、開発途中で状態のわからないものを試す感じになってしまう。

夜間ビルドが走っている最中なのか、JavaDoc へのリンクも切れていて Not Found になるし・・・ドキュメンテーションがかなり貧弱。

また実装方式としても、画像のピクセル単位の一致で判定しているので、OS のバージョンや利用者の環境ごとにアイコンが違うだけでも動かなくなってしまいそうだ。バージョン2で改善はされそうではあるが。

でも面白いし、個人PCの安定した環境ならば使いみちはあるかもしれないので、もう少し落ち着いたら、少しずつ練習してみようとは思う。