さいしょに
個人的にSikuliはあまり好きでない。
それでもコレを使わなければいけなくなる…ということが多々ある。
Uipathを導入する資金がない少額案件だったり。
自分トコで使うからOSS使おうぜという方針だったり。
前の開発者が何を思ったのかSikuliで開発していたり…!だ。
もしかすると
これは「Sikuli使うなら素Pythonでいいやん」という偏見のある記述かもしれないが、
決して「Sikuliは使えないヤツだ!」と嘆いているわけではない。
注意して使えば何だって「自分が書いたように動く」ものなのだ。
Sikuli開発の注意点
端末に依存しやすい
sikuliは「画像認識型」と呼ばれるRPAツール。
ディスプレイの解像度が違う…とか、背景画像が違う…とかちょっとした違いですぐに動かなくなる。
透過やマスクをすることもできるようにはなったが心もとない。
OSのバージョンアップや、端末の個別な設定でフォントが変わったりしても動かなくなることも不安要素なのだ。
とはいえ、sikuliにもtypeコマンドという「キーボード操作」で端末を動かす機能が存在する。
IEを起動するにしても
doubleClick("IEの画像")
でなく
type('r', Key.WIN)
type('iexplore.exe')
type(Key.ENTER)
と書いた方が端末の依存はなくなるだろう。
結局そうやって書くなら素でPython書くのと同じじゃね?と思ってしまう。
Python3に対応していない
sikuliの言語はJythonという「JavaVM上で動くPython」だ。
「普通のPythonと何が違うか?」はあまり気にせずに組めると思って良い。
このJython。
Python3には対応していないのだ。
なんなんsikuliしぬのん…?Jythonしぬのん…?
Python2とPython3との違いというと
print関数の使い方が変わったとか、
数値の取り扱いが変わった…ということしか思いつかないので、参考の記事を。
Python2からPython3.0での変更点 - Qiita
因みにsikuliではJRubyという言語(JavaVM上で動くRuby)も利用が可能だが…サンプルですらあまり見たことはない。
日本語入力が面倒
日本語入力にはpaste
コマンドを利用するのだが、
# typeコマンドと間違えがち
type('日本語')
# 文字化けさせがち
paste('日本語')
…というミスを多々する。
久しぶりに触ると確実にtype
コマンドは打ってるだろう。
正しくはUTF-8への文字コード指定を加えた書き方になる。
paste(u'日本語')
よく考えると何気に一番間違えている部分かもしれない。
レコーディング機能など無い
レコーディング機能というとExcelにある「マクロの保存」のように、
自動化したい手順を操作することで、自動的に生成される機能のこと。
Uipathであればこういう機能があるのだが、
さすが無料というべきかそのような便利機能はsikuliには用意されていない。
いやいや、こんなの許容範囲である…と言いたいのだが、
Uipathを触った後だとどうしても比較をしてしまう。
新しいsikuliXだとコマンドのリストがなくなったらしい
…なんで?まじでなんで?
コマンドリスト…というのはGUIで命令を選択できる便利機能。
素PythonよりもRPAツールを使う時の強みだと思っているのだが…
コレがなくなるとは。。
私は一歩手前である1.1.3のバージョンまでしか使っていなかったので全く知らなかったがこちらの記事によると次のバージョンでは無効化されているらしい。
Sikuri 1.1.4でコマンドバーが表示されない。 - Qiita
うーん。続報がないので今の2.0.4で復活しているのかどうかがわからん…
次の開発でSikuli使うことはわかってるから、新しいの入れてみるかーという感じ。
前述の日本語問題とかコマンドリストあっても間違えてたからあんまり変わらん…と言われればそれまでかもしれない。
追記(2020/08/19)
続報が見つからないもので、2.0.4をインストールした。
コマンドリストはなくなっていた…日本語問題とかどうでもよくなるぐらいめちゃくちゃ不便になった。泣きたい。
おわりに
日曜プログラマでない限り、何等かの制約は必ずついてくる。
あれができない!これができない!
と嘆いて「利用しない」という選択肢を取るのは簡単だが、
過去の遺物が好みでないからサックリ捨て去るのは必ずしも良いわけではないし、
新しいものを生み出す際の引き出しは多い方が良いだろう。
それぞれの見出しこそネガティブだが解決方法は用意されている。
sikuliでできないのはレコーディング機能ぐらいだろう。
そう。注意して使えば何だって「自分が書いたように動く」ものなのだ。