Sikulixで作成したスクリプトを複数人で利用したい場合や、顧客にコードを納品する場合などに「作成したスクリプトをどうやって配布するればいいか」という問題に直面すると思います。
配布先がプログラムを書く人でなければ、コードが見える必要がありませんし、共有するファイルサイズは小さい方いいです。
本記事ではシンプルに配布する方法を記載します。
前提
Pythonでスクリプトを作成していることを前提とします。そのためJythonのインストールが必須となります。(Javascriptで作成する場合はJythonのインストール不要)
本記事の理解にあたっては、なぜSikuliXにはJythonが必要なのか、Pythonはどういう原理で動いているのかを理解することをオススメします。
原理についてはこちらの記事に記載してます。
SikuliXの4つの実行方法と配布方法
配布方法の説明のためには実行方法も定義する必要がありますので、実行方法も合わせて説明します。
1. IDEから実行
【実行方法】
IDEの実行ボタンを押して実行します。一般的な方法です。
【配布方法】
配布先PCには、IDEとJythonをインストールしてもらいます。
配布の際は.sikuliフォルダを丸ごと配布します。
2. .sikuliをコマンドラインから実行
【実行方法】
コマンドラインから.sikuliフォルダを指定して実行します。
バッチファイルを作成してバッチファイルのダブルクリックでも実行可能です。
.sikuliフォルダ + sikulixide.jar + Jythonにて実行出来ます。
【配布方法】
配布先PCには、IDEとJythonをインストールしてもらいます。
配布の際は.sikuliフォルダを丸ごと (+ バッチファイルから実行する場合はバッチファイルも)を配布します。
バッチファイルの具体的な作成・実行方法はこちらに記載してます。
3. .sklをコマンドラインから実行
【実行方法】
コマンドラインからzip化した.sklファイルを指定して実行します。
バッチファイルを作成してバッチファイルのダブルクリックでも実行可能です。
IDEにてエクスポートしたsklファイル + sikulixide.jar + Jythonにて実行出来ます。
【配布方法】
配布先PCには、IDEとJythonをインストールしてもらいます。
配布の際は.sklファイル (+ バッチファイルから実行する場合はバッチファイルも)を配布します。
4. .jarをコマンドラインから実行
【実行方法】
コマンドラインからコンパイルしたjarファイルを指定して実行します。
バッチファイルを作成してバッチファイルのダブルクリックでも実行可能です。
IDEにてエクスポートしたjarファイル + sikulixide.jar + Jythonにて実行出来ます。
【配布方法】
配布先PCには、sikulixapiとJythonをインストールしてもらいます。
配布の際は.jarファイル (+ バッチファイルから実行する場合はバッチファイルも)を配布します。
なお、実行方法3、4の違いですが、3は単なるzip化で、4は.classにコンパイルしています。作成したコードを難読化したい場合は4を選択すればよいかと思います。
なお、2020年5月時点の最新のステーブルverは2.0.4ですが、4の方法だとバグがあるようで、2.0.5で改善されたようです。
https://answers.launchpad.net/sikuli/+question/689507
4の方法でかつPythonでなくJavascriptでスクリプト作成すれば、IDEとJython不要で実行できるので、実行環境も含めてコンパクトに配布することが出来そうですね。
番外編
実行環境とスクリプト全てを1ファイルにまとめる
SikuliXの本来の使い方とは異なりますが、nsisのようなインストーラ作成ツールを使えば可能なようです。
通常RPAを使うとなると、RPA製品のライセンスを購入したり、RPA製品のインストールが必要だったり、利用者間で製品を揃えたりしなければならず使うまでが面倒でしたが、SikuliXはそもそもOSSなのでライセンス購入不要であり、またこの方法を使えば利用者による面倒なインストール作業も不要となるので、即座にRPAを利用することができます。
不要なファイルを削除する
配布先に指定のサイトからダウンロード・インストールすらさせたくない場合は、IDEとJythonも含めて配布する必要があります。
その場合は、.jarファイル(IDE)を解凍して利用するOS以外のフォルダを消す(Win or MAC or Linux)。それから再度圧縮すればよりコンパクトにすることが出来ます。
以下コマンドでJarファイルを解凍してください。
jar -xvf sikulix-2.0.1.jar
例えばMACの場合は以下を消す。これだけで、サイズを1/3程減らせます。
消してしまったら他のOSでは動かないと思われるかもしれませんが、そもそもキーボードのショートカットや、スクリーンサイズも解像度も異なる環境全てで動作するスクリプトを目指すというのはRPAの性質上困難です。
同じプラットフォームで動かすことを前提に作成する方がよいでしょう。
本記事の参考FAQ
Q:多大なる工数を費やし作成したスプリプトだからコードをセキュアにしたい
A:SikuliはオープンソースでありSikuliを使って稼いでもいい。なのでもっとセキュアにしたいのであれば自分で作ってね。
https://answers.launchpad.net/sikuli/+question/685498
Q:インストール不要で、スクリプトを実行可能な1ファイルにすることは出来るか?
A:nsisのようなツールを使えば可能。なおSikuliXは実行時にJavaと
sikulixapi.jar、Jython(Pythonで実装する場合)が必要。JavascriptかJavaで書けばJythonは不要だけど、将来JavaスクリプトエンジンがJavaから削除されるよう。https://answers.launchpad.net/sikuli/+question/689093
以上です。