SikuliXで使える関数とか設定とかを俯瞰できるように一覧にしている。[公式サイト]と表記したリンクは、http://sikulix-2014.readthedocs.org/en/latest/の該当ページへのリンクを設定している。
よく使う機能は限られているから、一度も使ったことがない機能もあるなー。
マークの機能は公式サイトのドキュメントを読む(というか見る)のがお勧め。
マークは公式サイトのドキュメントに掲載のない隠し機能です。
■General features regarding scripting and image handling ・・・
公式サイト
よく使う機能は限られているから、一度も使ったことがない機能もあるなー。




■General features regarding scripting and image handling ・・・

マウスの動作やログ出力など、各種機能の動作に関わる共通仕様の設定方法を説明している。
■Interacting with the User and other Applications ・・・
公式サイト
スクリプトの実行条件を入力したりエラーメッセージを表示したりしたいときの、ポップアップ画面の表示方法や、他のアプリケーションを開いたり閉じたりといった連携方法の説明をしている。
■General Settings and Access to Environment Information ・・・
公式サイト
下記のうちEnvクラスは旧バージョンの互換性を保つために残してある記述方法で非推奨、別のクラスにリダイレクトされる。
■Region (rectangular pixel area on a screen) ・・・
公式サイト
画像認識の対象とする矩形の範囲の設定と取得方法、画像を検索する方法、マウス操作の方法を説明している。スクリプトの中で一番使う機能だと思う。(find, exists, type, paste, click, doubleClick, dragDropを覚えたら簡単なスクリプトならすぐ書けてしまう。)
■Location ・・・
公式サイト
マウスを移動するときや、画像認識対象範囲を座標で指定したい場合に使う機能の説明をしている。
■Screen ・・・
公式サイト
デフォルトのスクリーン、マルチモニタ
のときのスクリーン、スクリーンキャプチャの方法などを説明をしている。
■Pattern ・・・
公式サイト
画像検索機能(find, exists, clickなど)のオプションと考えたら理解しやすい。IDEの中に貼り付けた画像をクリックして表示する[パターン設定]ウインドウで設定すると自動的にスクリプトが編集されるので、ここの文法は覚えなくても心配無用。(パターン設定の使い方はここで説明している。)
■Match ・・・
公式サイト
find系の処理では、最小類似度より類似度の高い画像を抽出する。抽出された画像がいったいどれ程の類似度であったかは、そのスコアで知ることができる。
■Finder ・・・
公式サイト
スクリーンの画像を検索対象とするのではなく、ファイル保存した画像を検索対象にする場合の方法を説明している。
■Key Constants ・・・
公式サイト
type()の引数に指定するキー定数を説明している。
(※addHotkey()に使うmodifier keyとしては使えないことに注意!)
■The Application Class(App) ・・・
公式サイト
コマンド | 説明&リンク |
---|---|
setShowActions | click()などの操作の前に、検索対象に指定した画像の位置で赤色の◎印を点滅する機能。(バグのためSikuliX1.1.0やSikuliX1.1.1では動作しない。) highlight()で代替可能。(環境設定で常時ハイライト表示することも可能。) |
exit | pythonにはsys.exit()があるが、SikuliXの内部初期化のためにexit()を使わなくてはならない。 |
Settings.setImageCache![]() |
SikuliX1.1.1以降で有効。デフォルトでは一度使った画像はキャッシュされ、画像が更新されたとしてもキャッシュしたものが使用されるが、設定をSettings.setImageCache(0)にした後は、使うたびにすべての画像がファイルからロードされる。デフォルトに戻すには、Settings.setImageCache(1)に設定する。![]() |
Settings.ActionLogs Settings.InfoLogs Settings.DebugLogs |
![]() |
Settings.MinSimilarity | find系の処理で抽出対象にする条件は、個々にパターン設定する場合を除くとデフォルトで最小類似度70%。デフォルトの最小類似度を変更するときに使用する。 |
Settings.MoveMouseDelay | mouseMove()の位置が特定できてからマウスの移動を開始するまでの時間を遅らせるときに使用する。【注】Windows10の場合、Settings.MoveMouseDelay=0に設定すると奇妙な動きをします。できるだけ速く操作したいときは、0.1に設定すれば想定通りの動きをします。 |
Settings.DelayBeforeMouseDown | |
Settings.DelayBeforeDrag | (前のバージョンではDelayAfterDragだったのだが、なんで名前が変わったのか?) |
Settings.DelayBeforeDrop | |
Settings.ClickDelay | |
Settings.TypeDelay | |
Settings.SlowMotionDelay | |
Settings.WaitScanRate Settings.ObserveScanRate |
|
Settings.ObserveMinChangedPixels | |
Settings.AlwaysResize ImageCallback |
SikuliX1.1.3以降で有効。![]() |
Settings.UserLogs Settings.UserLogPrefix Debug.user |
setUserLogFileの説明で使ってる |
Settings.UserLogTime | |
Debug.setUserLogFile | setUserLogFileは存在しないフォルダを指定するとエラーになるね |
getBundlePath | ![]() 現在実行しているスクリプトの格納フォルダを取得することができます。ログの出力先や、スクリプト独自の設定ファイル格納先としてスクリプトフォルダを使いたいときなどに重宝します。 ここで使っている。 |
getBundleFolder | |
getParentPath | |
getParentFolder | |
makePath | |
makeFolder | |
unzip | |
setBundlePath | |
getBundlePath | |
getImagePath | |
addImagePath | ここで使ってる Webサーバに画像を置いて使いたいときもaddImagePath |
addHTTPImagePath | |
removeImagePath | |
resetImagePath | |
addImportPath | |
load | SQLiteを使う方法 sikulix.jarにバインドされていないクラスを追加するときなどに便利。SQLiteドライバを使いたいときやSeleniumWebDriverを使いたいときなど、load(xxx.jar)の1行追加するだけOK。sys.pathにパスが追加されるので、xxx.jarに含まれるクラスをimportして使えるようになる。(SikuliX1.1.0以降のPython版で使用可能) ※SikuliX1.1.4から使えなくなります。SikuliX1.1.4以降で外部jarファイルを使う方法は、ここを参照。 |
runScript (バージョンX1.1.1から) |
RobotFramework利用 と スクリプトの連続実行 や UIAutomation連携で使ってる |
■Interacting with the User and other Applications ・・・

スクリプトの実行条件を入力したりエラーメッセージを表示したりしたいときの、ポップアップ画面の表示方法や、他のアプリケーションを開いたり閉じたりといった連携方法の説明をしている。
コマンド | 説明&リンク |
---|---|
popat (バージョンX1.1.1から) |
ポップアップ表示の位置は、デフォルトではスクリーンの中心です。ポップアップ表示位置を変更したいときに使います。 |
popup | ここで使ってる ※時間指定でウインドウを自動で閉じる機能が実装されたorg.sikuli.script.Doクラスの説明はこちら |
popError | ポップアップウインドウいろいろ(popAsk, popError, select, input) |
popAsk | popErrorの説明で使ってる |
input | popErrorの説明で使ってる |
inputText | 複数行の文字列を入力したいときに使います。 |
select(Python版) popSelect(Ruby版) |
こことここで使ってる プルダウンメニューから選択させるときに使います。 |
popFile (バージョンX1.1.1から) |
ファイル出力先として任意のフォルダを選択させたいような場合に使います。 |
Env.addHotkey | コマンドラインから実行したスクリプトをスマートに止める スクリプト実行中にキー操作を行ったタイミングで割り込み処理(スクリプトの強制終了とか、Global変数の書き換えとか)を実行させたいとき使います。 |
Env.removeHotkey | Env.addHotkeyで追加したホットキーを削除します。 |
openApp | App.openと同じ、アプリケーションを開きます。 |
switchApp | openAppしたアプリケーションにフォーカスを与えます。 |
closeApp | openAppしたアプリケーションを閉じます。 |
run(command) | UIAutomation連携で使ってる バッチファイルの実行など、コマンドラインからの実行を行うとき使います。 |
■General Settings and Access to Environment Information ・・・

下記のうちEnvクラスは旧バージョンの互換性を保つために残してある記述方法で非推奨、別のクラスにリダイレクトされる。
コマンド | 説明&リンク |
---|---|
Sikulix.prefStore | |
Sikulix.prefLoad | |
Sikulix.prefRemove | |
Settings.getOS Env.getOS |
|
Settings.getOSVersion Env.getOSVersion |
|
Settings.isWindows | |
Settings.isMac | |
Settings.isLinux | |
Settings.getSikuliVersion Env.getSikuliVersion |
|
App.getClipboard Env.getClipboard App.setClipboard ![]() Env.setClipboard ![]() |
ここで使ってる クリップボードを使って連携可能な他のツールを使うときに便利です。 |
Key.isLockOn Env.isLockOn |
バグあり(Numlockキーの状態を取得する機能です。) |
Mouse.at Env.getMouseLocation |
ここで使ってる マウスの座標位置を取得します。 |
Vision.setParameter | |
Vision.getParameter |
■Region (rectangular pixel area on a screen) ・・・

画像認識の対象とする矩形の範囲の設定と取得方法、画像を検索する方法、マウス操作の方法を説明している。スクリプトの中で一番使う機能だと思う。(find, exists, type, paste, click, doubleClick, dragDropを覚えたら簡単なスクリプトならすぐ書けてしまう。)
コマンド | 説明&リンク |
---|---|
Region | ここで使ってる find()やexists()などの画像認識機能は、対象範囲が小さいほど検索に要する時間が短くて済む。対象範囲を指定しないときはスクリーン全体が対象となる。範囲を限定することができるなら、対象範囲をRegionで指定して、そのRegionに対してfind()やexists()を使用するのが良い。 |
setX setY setW setH |
|
moveTo | |
setROI | ここで使ってる |
setRect | |
morphTo | |
getX getY getCenter |
ここで使ってる |
getW getH |
|
getTopLeft getTopRight getBottomLeft getBottomRight |
![]() |
getScreen | |
getLastMatch | |
getLastMatches | ここで使ってる スクリーンやRegionに対してfindAll()した結果は、getLastMatches()でマッチオブジェクトに取り出す。マッチオブジェクトの有無を確認するときhasNext()を使い、マッチオブジェクトから1つずつ取り出すときnext()を使う。 |
getTime | |
isRegionValid | |
setAutoWaitTimeout getAutoWaitTimeout setWaitScanRateget WaitScanRate |
ここで使ってる |
get getRow getCol setRows setCols |
getRowとgetColにはバグあり |
setRaster getRow getCol getCell |
ここで使ってる |
isRasterValid | |
getRows getCols getRowH getColW |
|
offset | |
inside nearby above below left right grow |
|
find | 画像を検索します。(画像が見つからなかったときはFindFailedエラーが発生します、) |
findAll findAllByRow() findAllByColumn() findAllList(), getAll() | 検索画像がスクリーン上に複数あるときはfindAll()で探す ByRow, ByColumn, ListはSikuliX1.1.4から 公式サイト ![]() |
wait | |
waitVanish | |
findBest findBestList findAnyList findAny |
公式サイト![]() findBestの使い方 findBestの使い方(+α) ![]() |
exists | 目的の画像が現れるまでexists()で待つ 画像を検索します。(findと違って、画像が見つからなかったときはFalseを返すだけで、FindFailedエラーは発生しません。) |
onAppear observe stopObserver |
onAppearの使い方 メインの処理に関係ない割り込みはonAppear()で並列処理する 画像が現れた時の処理を定義するとき使います。 |
onVanish onChange |
画像が消えた時の処理を定義するとき使います。 |
observeInBackground | |
getType getPattern getRegion getMatch getChanges getCount getTime repeat getName |
ここで使ってる onAppearやonVanishなどのイベントハンドラで使います。 getTypeを使うと、発生したイベントの種類を取得することができます。 |
hasObserver isObserving hasEvents getEvents getEvent setInactive setActive |
|
click doubleClick rightClick |
画像の検索条件にして検索し、クリックやダブルクリックを行います。 デフォルトでは、操作の位置は指定した画像の中心ですが、中心からのオフセット値を設定することで、任意の場所を操作することができます。 |
highlight highlightOn highlightOff highlightAllOff |
ここで使ってる、表示色を指定してhighlight()を使う 検索した画像の位置をハイライト表示します。スクリプトをデバッグするときなどに、想定した場所が検索できているのか、確認するときに重宝します。findAnyで見つかった場所をハイライト表示する |
hover | onAppearの説明で使ってる |
dragDrop | スライダーをDragDrop()で操作する |
drag dropAt |
popupダイアログを邪魔にならない場所に移動 |
type | ここで使ってる AltやCtrlなどの文字にできないキー操作を行うときに使います。 |
paste | 文字列を入力するときに使います。 |
text | OCR機能で電卓の数字を読み取ってみた |
mouseDown mouseUp |
|
mouseMove | マウスを移動するコマンドmouseMove() |
wheel | |
keyDown keyUp |
ここで使ってる |
setFindFailedResponse | 検索画像が見つからないときに対話する仕掛けsetFindFailedResponse |
setFindFailedHandler (バージョンX1.1.1から) |
![]() |
setImageMissingHandler (バージョンX1.1.1から) |
|
getFindFailedResponse setThrowException getThrowException |
■Location ・・・

マウスを移動するときや、画像認識対象範囲を座標で指定したい場合に使う機能の説明をしている。
コマンド | 説明&リンク |
---|---|
Location | ここで使ってる |
getX getY setLocation offset above below left right |
ここで使ってる |
■Screen ・・・

デフォルトのスクリーン、マルチモニタ

コマンド | 説明&リンク |
---|---|
Screen | 検索対象のモニターはScreen(n)で指定します。メインモニターならSCREEN, Screen(0), または指定無しで検索できます。2台目のモニターならScreen(1).find(画像)です。ALL.find(画像)とすると、複数のモニターを対象にして検索ができます。ALLはあらかじめ定義された定数で、全てのモニターを統合した領域を表します。 |
getNumberScreens | |
getBounds | ここやここ使ってる |
capture | スクリーンショットをcapture()するとき4分割して保存する エラー発生時にスクリーンショットとトレースバックを残す |
selectRegion | selectRegion()で範囲を指定して画像を保存する |
vncStart |
■Pattern ・・・

画像検索機能(find, exists, clickなど)のオプションと考えたら理解しやすい。IDEの中に貼り付けた画像をクリックして表示する[パターン設定]ウインドウで設定すると自動的にスクリプトが編集されるので、ここの文法は覚えなくても心配無用。(パターン設定の使い方はここで説明している。)
コマンド | 説明&リンク |
---|---|
Pattern similar exact |
ここで使ってる |
targetOffset getFilenameget TargetOffset |
■Match ・・・

find系の処理では、最小類似度より類似度の高い画像を抽出する。抽出された画像がいったいどれ程の類似度であったかは、そのスコアで知ることができる。
コマンド | 説明&リンク |
---|---|
getScore getTarget |
findAll("img.png") mm = SCREEN.getLastMatches() while mm.hasNext(): m = mm.next().highlight(1, "blue") print m.getScore() |
■Finder ・・・

スクリーンの画像を検索対象とするのではなく、ファイル保存した画像を検索対象にする場合の方法を説明している。
コマンド | 説明&リンク |
---|---|
Finder findAll hasNext next |
スクリーンの代わりに画像ファイルを検索するにはFinder() |
find |
■Key Constants ・・・

type()の引数に指定するキー定数を説明している。
(※addHotkey()に使うmodifier keyとしては使えないことに注意!)
■The Application Class(App) ・・・

コマンド | 説明&リンク |
---|---|
focus | popupダイアログを最前面に表示する方法 |
pause App isRunning hasWindow getWindow getPID getName setUsing open close focusedWindow window |
コメント
コメント一覧 (4)
お忙しいところ、ご回答頂きまして、ありがとうございます。
使用しているバージョンはSikuliX1.1.0です。
現在、mac book pro core i5で使用しています。
ご指摘の通り、今夜Javaのバージョンなど確認してみようと思います。
アドバイス、ありがとうございます。
助かります。
SikuliX1.1.0を使っているでしょうか?手元に古いバージョンが動作する環境が無いので、SikuliX1.1.0でしか確認できませんので、ご了承願います。
32ビット版 Windows7、Java1.8.0_40という環境で、forループの中に、Click()とDragDrop()の処理を書いて試しましたが、メモリをどこまでも消費していく感じはありませんでした。
64ビット版だとメモリ管理も違ってくるかもしれません。SikuliXというよりJavaがどうメモリ管理をしているかに因っていると思われます。明確な回答ができませんが、ご了承願います。
高校でベーシックをかじって以来30年ぶりにプログラムをはじめまして、
SikuliXに興味があり、このHPを参考にさせていただいています。
たいへん助かってます。
メモリーの使用量について質問があるのですが、
SikuliXで目的の画像を見つけたらクリック、存在しなかったらドラッグして
画面を送るプログラムを書いてみたのですが、
実行すると徐々にメモリーを使い始め、4GBも超えてしまします。
Sikuliですとこんなにメモリーを使用するものなのでしょうか?
いきなり申し訳ありません。
このブログにコメントするにはログインが必要です。
さんログアウト
この記事には許可ユーザしかコメントができません。