マジセミドライブ

ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。

OSS情報

2020.01.01

【OSS情報アーカイブ】SikuliX

【OSS情報アーカイブ】SikuliX

※当記事に記載されている情報は、古くなっている場合があります。オフィシャルサイトで最新情報をご確認ください。

「SikuliX」とは

「SikuliX」基本情報

■概要

SikuliX(シクリ)とは、画像認識を利用したUI操作自動化ツールです。簡単な操作で「テスト作業自動化」や「RPA」用途として利用できます。

■基本説明

SikuliXはPC操作を自動化できるツールです。

「検索ボックスに検索ワードを入力して検索ボタンをクリックする」などの視覚的な操作をワークフローとして自動化できます。

画像処理ライブラリ「OpenCV」を利用して、GUIコンポーネント(PCスクリーン上の画像)をオブジェクトとして認識し、オブジェクトに対してクリックや文字入力といった基本操作を実行できます。

そのため、GUIの内部コード(ソースコード)にアクセスできない場合でも制御できます。

■経緯

「SikuliX」は「Sikuli」をベースとして開発されています。

当初MITで「Sikuli」として開発されていましたが、その後、2012年から「SikuliX」として開発が継続しています。

■ユースケース

SikuliXは、シンプルに利用できるため、幅広い用途で利用できます。

・ソフトウェアテスト—UI動作テスト
・RPA用途—アプリケーション操作自動化、Webページにおける繰り返しタスク自動化
・ITシステム管理
・ネットワーク管理
・ゲームプレイング など

ソフトウェアテスト

ソフトウェアテストでは、あるワークフローによって動かされるアプリケーションが期待通りに動作するかどうかについてチェックする必要があります。特に複雑なGUIを持つアプリケーションでは、テスト工程に大きな負荷がかかります。

SikuliXは「スクリプト」もしくは「JavaベースAPI」で制御可能であるため、テストケースに組み込むことで、「テスト効率」と「アプリケーション品質」を向上させるサポートツールとして利用できます。

■オフィシャルサイト情報

オフィシャルサイト

→SikuliX(RaiMan's SikuliX)

ライセンス情報

SikuliXのライセンスは「MIT License」です。

詳細について、こちらを参照ください。
→GitHub →RaiMan/SikuliX1 →LICENSE

動作環境

SikuliXは64ビットシステムのみをサポートします。

また、Java実行環境が必要です。Java実行環境が整っている環境であれば「Windows」「Mac」「Linux」などで動作できます。

Linux/UNIXシステムの場合、セットアップするためのいくつかの前提条件があります。

→SikuliX →Special setup information for Linux systems

ダウンロード

→GitHub →raiman →SikuliX1 Downloads

■同様製品

同様な機能を提供する製品として、次のようなものがあります。

オープンソース製品:「Selenium」など。

「SikuliX」の主な特徴

■SikuliX IDE

SikuliXには、スクリプト作成をサポートするSikuliX用統合開発環境「SikuliX IDE」が提供されています。

スクリプトの編集と実行のための基本的な機能として、「ビジュアルワークフローに必要なイメージ作成機能」「ワークフロー作成機能」「スクリプトエディタ」を備えています。

「SikuliX IDE」を利用することで、プログラミングを習得していなくても、簡単に繰り返しタスクを自動化できます。

■画像認識機能

画像をオブジェクトとして認識

SikuliXは、HTMLなどの構造を把握するのではなく、画像をオブジェクトとして認識することで自動操作対象とする点が特徴です。

画像解析ライブラリ「OpenCV」を使用して画像認識を行い、操作対象となるUIコンポーネントをオブジェクトとして認識します。

https://opencv.org/

独自アプリケーションにも対応可能

画像ベースで処理するため、独自アプリケーションなど、ソースコード(内部構造)にアクセスできない場合でも対応できます。

OS非依存

「画面から取得したWebコンポーネントスクリーンショット」と「実際に表示されているWebコンポーネント」のマッチングは、OSの内部機能を利用せずにOpenCVを使用して行います。

OpenCVの動作はOSに依存しない実装になっているため、SikuliXは、WindowsやLinuxなど、OSに依存せずに使用できます。

■テキスト認識機能

SikuliXには、テキスト認識(OCR)機能も付属しており、イメージ内のテキストを検索するために使用できます。

手書き文字に対する認識精度はそれほど高くはありませんが、PCに表示されるテキスト文字であれば実用可能なケースもあります。

この機能は、光学文字認識エンジンである「Tess4J」や「Tesseract」によって提供されています。

→sourceforge →Tess4J

→GitHub →tesseract-ocr/tesseract

■リアルスクリーン表示が必要

「SikuliXスクリプトを実行しているシステム」または「SikuliX機能を使用しているアプリケーション」は実際の画面に接続され、なおかつ、表示されている必要があります。

SikuliXは実際の画面を監視する必要があるため、スリープモードやスクリーンセーバー表示などで対象アプリケーションが非表示となると、SikuliXは機能できません。

ユーザーがシステムを操作して、画面上で何が起こっているのかを見ることができる状態になっている必要があります。

自動化スクリプト「SikuliXスクリプト」

自動化スクリプト「SikuliXスクリプト」

■概要

「SikuliXスクリプト」は、実際の画面に表示されるGUIに対してアクションを実行するためのワークフローであり、マウスやキーボードのイベントを指示するために画像パターンを使用してGUI対話を自動化するためのものです。

「画像が画面に表示されるのを待つ一連の作業」や「表示可能なGUI要素に対するマウスまたはキーボードによるアクション」などが記述されます。

ワークフローステートメントは「決定処理」「繰り返し処理」「状態変化を伴う処理」などを実装するために、スクリプト言語の機能によって補完されます。

■構造

SikuliXスクリプトの中核

SikuliXスクリプトの中核は、以下の2つから構成されるJavaライブラリです。

①「java.awt.Robot」—キーボードとマウスのイベントを適切な場所に配信
②「OpenCVに基づくC++エンジン」—画面上の指定されたイメージパターンを検索

イメージパターン検索エンジン

イメージパターン検索するC++エンジンは、JNI(Java Native Interface)を介してJavaに接続されており、プラットフォームごとにコンパイルする必要があります。

Javaライブラリーの上に、薄いJython(プログラミング言語PythonのJava実装)の層がエンドユーザー向けのシンプルで明確なコマンドのセットとして提供されています。

そのため、「JRuby」「Scala」「JavaScript」など、JVM上で実行されている他の言語のシンレイヤーを簡単に追加できます。

■ファイル構成

SikuliXスクリプトは、「スクリプト化されたワークフローのステートメントを含む1つのファイル」と「ワークフローをサポートするためにキャプチャした多数の画像ファイル」で構成されています。

■保存場所

SikuliXスクリプトは、スクリプトの名前が付けられたディレクトリ(フォルダ)に保存されます。

■保存形式

SikuliXスクリプトには「zip-file」と「jar-file」の2つの保存形式があります。

これらは、SikuliXスクリプトの内容を1つのファイルにまとめているため容易に配布できます。

ターゲットシステムに有効なSikuliXのインストールがある限り、両方をSikuliXを使用して実行できます。

■実行方法

SikuliX IDE

SikuliX IDEでは、エディタタブにある「スクリプト実行ボタン」をクリックすることで、SikuliXスクリプトを実行できます。

コマンドライン

SikuliXスクリプトは、コマンドラインからでも実行できます。

→sikulix-2014.readthedocs.io →How to run SikuliX from Command Line

自動化スクリプト「SikuliXスクリプト」作成方法

自動化スクリプト「SikuliXスクリプト」作成方法

■スクリプティング

SikuliX IDEを使用して、オブジェクト認識によるスクリプトを作成することで、単純な反復作業を自動化できます。

操作対象となるUIコンポーネントをスクリーンショットで取得しながらオブジェクトを作成し、そのオブジェクトに対してマウスやキーボードでのアクションを設定していくことで自動化スクリプトを作成します。

視覚的に分かりやすいため、「プログラミングに慣れていないユーザー」や「SikuliX IDEがサポートしているスクリプト言語に精通していないユーザー」でも、簡単にスクリプトを作成できます。

■プログラミング

SikuliXスクリプトは、Javaに対応したAPIによるプログラミング制御も可能です。

基本的な操作スクリプトをSikuliX IDEのスクリプティング機能で作成した後に、スクリプトを記述することで「条件分岐処理追加」「繰り返し処理追加」「ワークフローの最適化」などを行えます。

スクリプト言語サポート

SikuliXは以下のスクリプト言語をサポートしています。

・Python
・Robot Framework
・Ruby(JRuby)
・JavaScript
・Scala
・Clojure など

Java API

SikuliXのCore機能はJavaで実装されているため、Java APIを使用してSikuliXを制御できます。

「IntelliJ IDEA」「Eclipse」「NetBeans」などのIDEを利用すると、利用可能なAPIを使用したSikuliX制御プログラムを効率的に作成できます。

→sikulix-2014.readthedocs.io →How to use SikuliX API in your JAVA programs or Java aware scripting

→raiman.github.io →SikuliX1 →javadocs

 

参考元サイト

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

この記事のタグ一覧

おすすめの記事

【IT用語解説】「 デジタルヒューマン 」とは😊

IT用語解説

2024.01.26

【IT用語解説】「 デジタルヒューマン 」とは😊

【IT用語解説】「 デジタルヒューマン 」として、「デジタルヒューマンとは何か?」「どのようにして作成できるのか?」「私たちの世界にどのような影響を与えているのか?」などについて、まとめています。

【トレンド解説】超入門「 スマートファクトリー 」🏭

トレンド解説

2024.04.15

【トレンド解説】超入門「 スマートファクトリー 」🏭

「 スマートファクトリー 」への理解を深めるための解説として、初心者向けにわかりやすくまとめた記事です。「新しい工場の概念」「デジタルツインの活用」「IoT技術による最適化」など、現代の製造業に必要な知識を効果的に学べます。 スマートファクトリー の導入によるメリットを具体的に解説しています。