Sikuliとは
Sikuliは画像認識を使ってUIの操作を自動化するソフトウェアです。
たとえば、「検索したい単語を入力して検索ボタンをクリック」といった操作を自動化できます。画像認識は操作対象のUIコンポーネントを見つけるために使います。そのため、操作対象周辺のスクリーンショットと、操作方法を一緒にスクリプトとして記述します。特に、UIの内部やソースコードを簡単にいじれないときに本領を発揮します。
なお、画像認識にはOpenCVを使っており、スクリプトはJythonかJRubyで記述します。IDEが付属しており、スクリーンショットを撮ったりクリックするといった操作を簡単に記述できます。Javaの実行環境があればよいので、Windows/Mac/Linux/Android/iOSなどの上で動かすことができます。jarパッケージによるインストーラーもあり、インストールが簡単なところもポイントが高いです。
百聞は一見にしかず、ということで公式ホームページでも紹介されている動画を紹介しておきます。ブラウザの新しいタブを作成して、dog, cat, mouseの三つの単語をGoogle検索する動画です。最初の10秒くらいにスクリプトが表示され、そのあと実行している様子が分かります。
この動画の例では非常に簡単なものになっていますが、以下のような用途が紹介されていました。
- 日常的なアプリケーションやウェブページの操作
- ゲームのプレイング
- UIのテスト
Angly Birdsをプレイを自動化している動画などもあり、とても面白いです。人工知能とアプリケーションを繋ぐことにも使えると思いますし、適用範囲は広いと思います。
Sikuliによって自動化できる操作
Sikuliによって自動化できる主な操作をリストアップしてみました。
- アプリケーションの操作
- 起動
- 停止
- フォーカス
- マウス操作
- カーソル移動
- 左クリック
- ダブルクリック
- 右クリック
- ドラグ&ドロップ
- キーボード入力
- テキストや画像による類似領域の検索
- 指定した領域のイベント検出
- テキストや画像パターンの出現・消失を検出
- 領域内の変化を検出
- ユーザや他のアプリケーションとのインタラクション
- ポップアップ(操作の確認やYes/Noの選択)
- ダイアログからのテキスト入力
- ドロップダウンによる選択
- コマンド実行
大抵の操作は自動化できそうです。
Sikuliのバージョンについて
Sikuliの安定版は1.0.1ですが、開発版のSikuliX 1.1.0で以下のような様々な機能が追加されています。
- 画像からの文字認識(tesseract)
- JRubyによるスクリプトの記述
- マウスホイール操作のサポート
1.1.0の開発もほぼ終わっているようなので、いまから使うのであればSikuliX 1.1.0がオススメです。SikuliX 2.0の開発も2015年の1月から始めているようです。GitHubを見てみたかぎりでは、どのような機能が追加されるかはまだ不明のようです。
Sikuli Slidesの紹介
Sikuliの周辺ツールにSikuli Slidesというものがあります。Sikuli SlidesはUIの操作を記述したスライドを変換して実行するソフトウェアです。
SikuliXではJythonやJRubyでスクリプトを記述していましたが、操作対象のスクリーンショットと操作内容を表すアノテーションを使ってUIの操作をスライドに記述します。スライドを実行するときにはJavaの実行環境が必要ですが、PowerPointやGoogle Presentationをエディターとして使ってUIの操作を記述できるので、なかなか面白い試みだと思います。
まとめ
画像認識を使ってUIの操作を自動化するSikuliを紹介しました。操作を自動化したいアプリケーションを簡単にいじれないときに、試してみるのはアリだと思います。
リンク
Sikuliの公式ホームページなど。
Sikuliの紹介記事など。