これは、Mautic Advent Calendar 2017 18日目です。
Sikuli
Sikuliは、オープンソースのUI操作自動化ツールで、OpenCVによる画像認識技術をベースにできています。2017年に流行った言い方では、RPAのうちのRDA(Robotic Desktop Automation)に相当するツールです。
画面操作を定義し、バッチ処理で定期的あるいは手動で実行することで、設定した作業が自動処理され、定型業務におけるコスト削減を促進します。
システム開発でありがちな、とりあえずCSVで出力して別システムの受け渡しは「運用でカバー(SIerがユーザー企業を説得する魔法の言葉)」という手動処理を自動化することに最も役立ちます。
CSVインポートサンプルの実行
今回は、タイトルの通り、MauticにおけるコンタクトのCSVインポートを自動化します。殆どの方は手動で実施されていると思いますし、外部システムのデータ連携で、ここだけ手動になり、自動化の壁になっています。
こちらからサンプルをダウンロードすることができます。
サンプルは、Windows 10 を前提に作成しました。Sikuli自体はJavaなのでどこでも動きます。
<前提>
- 実行環境:Windows10
- 使用アプリ:Firefox
- Mautic 2.12を使用
- Sikuli 1.1.1 を使用
- Sikuliは、Cドライブ直下に、sikuliフォルダを作成し、その中にインストール
- Cドライブ直下に、mautic フォルダを作成し、mauticフォルダ内に、contacts_import.csvを用意すること
- contacts_import.csv は、サンプルとともにダウンロードすることができます。
サンプルのファイル名は、「mautic-csv-import.skl」で、Sikuli IDE → 「ファイル」 → 「開く」 で読み込んでください。読み込み後、Sikuli IDEの画面で、お使いのMautic URLやMauticにログインするためのユーザー名、パスワードを適宜入力してください。
動作確認するには、Sikuli IDE内の「実行」をクリックします。
バッチ処理するには、Sikuli IDEで、「ファイル」 → 「実行ファイルをエクスポート」を選び、.skl形式で出力します。出力した.sklファイルをコマンドプロンプトで実行します。
実行には、「runsikulix.cmd」のパス -r .sklファイルのパス を入力し実行します。
例 C:\sikuli\runsikulix.cmd -r C:\Users\PCユーザー名\Desktop\mautic-csv-import.skl
サンプルを実行するとお使いのMauticに、contacts_import.csv のデータが登録されたと思います。
定期的に実行したい場合は、Windows環境の方は「タスクスケジューラ」を使用します。
Sikuliのインストール
インストール前に、Java環境を導入しておきます。
http://www.sikuli.org/ にアクセスし、「SikuliX - Learn More and Get it」をクリックします。
画面右側の「Get Version」をクリックします。
画面内の「sikulixsetup-x.x.x.jar」をクリックし、ダウンロードします。2017年12月18日現在は、sikulixsetup-1.1.1.jar でした。
Cドライブ直下に、sikuliフォルダを作成し、ダウンロードした「sikulixsetup-x.x.x.jar」を移動、移動後、「sikulixsetup-x.x.x.jar」をダブルクリックしてインストーラーを起動します。
(2) Pack1を選択。言語選択はPython。前述のサンプルで使用した環境は、Pythonを入れています。Pack1にチェックを入れ、「Setup Now」をクリック。
(4)インストールが始まります。途中、Jythonのインストール確認画面が表示された場合は、「はい」をクリック。
Sikuliの起動とスクリプトの作り方
Cドライブ直下のsikuliフォルダにインストールしましたので、sikuliフォルダにアクセスし、「runsikulix.cmd」をダブルクリックしてSikuli IDEを起動します。Sikuli IDE上で、自動化のためのスクリプトを作成します。
画面左側から各処理を選択し、スクリプトを作成します。
サンプルでは、最初にFirefoxを起動し、Mautic環境にアクセスするようにしたいので、最初に「ファイル名を指定して実行」画面を呼び出す処理を記述しています。
次に、「ファイル名を指定して実行」画面で、firefox.exe URL と入力するために、exsitsをクリックして対象領域をキャプチャします。
キャプチャし、キャプチャ領域に、firefox.exe URLを入力するために、pasteを使用します。ついでにpasteの処理後に、Enterキーを押す処理を加えます。
ここまでを実行しますと、Firefoxが起動し、Mauticログイン画面が表示されるまでを自動化することができます。
以後、先ほどのexsits処理と同じ要領で、スクリプト定義を続けます。サンプルでは、キャプチャした範囲が表示されるまで最大◯秒待つ、「wait」やキャプチャ領域を見つける「find」、キャプチャ領域をクリックする「click」「doubleClick」を用いて作成しています。
まとめ
MauticのCSVインポートは、手動処理なので面倒になり、以前から自動化したかったので試してみましたところ、割りと上手く行ったように思えます。
自動化はWebブラウザだけなく、様々なアプリケーションに適用できますので、日々の定型業務に応用してみると良いでしょう。多くの業務を抱えている人は特に。
サンプルが動かない等はコメントか、メール希望であればプロフィール(@kolinz)に掲載しているFacebookあるいは、Twitter経由で連絡先を教えていただければ対応します。