最近、IT分野で話題のキーワード:RPA(Robotic Process Automation)。こちらでも触れていますが、PCで行う決まった作業を自動で行ってくれる技術です。
この記事では、「UI自動操作の概要」とRPAとして利用することができるフリーツール:「sikuliX の概要」を記載しようと思います。
UIの自動操作の概要について
PCを自動で操作するには、UI(User Interface)を操作する必要があります。UIは、簡単に言えば、利用者にコンピューターなどを利用する際に操作するもの総称です。機器でいうと、マウスやキーボード。ディスプレイなどが該当します。また、PCのディスプレイ上を考えるとディスプレイに表示されているUIを操作する方法は、2つに分かれます。それは、CUI と GUI(今回話題にするのはこっち)です。
Character User Interfaceの略で、文字で操作する方法。もしくはその操作を手助けするもの。コマンドプロンプトが代表例です。
Graphical User Interfaceの略で、画像(オブジェクト)で操作する方法。もしくはその操作を手助けするもの。通常のPCの操作が相当し、ディスプレイに表示されるボタンやアイコンなどが代表例です。
また、GUI で操作する場合、目的の場所(例えば、押下するボタン、アイコン、文字入力する場所)を思い通りに指定できるか?という所が重要になっています。計算機で「1」を押したいのに、「2」を押して計算していたら困りますよね?その目的の場所を指定する方法は大きく3つに分かれます。
X-Y軸をイメージしていただければ想像しやすいと思いますが、左上を(0,0)としてピクセルレベルで位置を指定する方法です。FullHD(1920×1080)であれば、一番右下の座標は(1920,1080)になります。
方法としては、希望する位置を的確に指定するというメリットがあります。その反面、「指定したいオブジェクトの前に異なるオブジェクト」があったり、「オブジェクトの位置が移動していた」「最大化/最小化していた」などによって正しく指定できない可能性があるというデメリットがあります。
アイコンやボタンなどのオブジェクトを画像として認識し、直接そのオブジェクトを指定する方法です。
希望するオブジェクトの画像を的確に指定するというメリットがあります。これにより、「オブジェクトの位置が移動していた」「最大化/最小化していた」ということで、指定できる可能性が高くなります。しかし、ツールによっては、100%指定できるわけではありませんし、OSの種類が変わったり、バージョンアップによるデザイン変更が発生すれば認識しなくなる可能性は高くなります。ただし、その環境に沿った画像を使用すれば、回避できる問題ではあります。
1つ1つのオブジェクトは、人間のDNAなどと同じように、各々異なる情報(パラメータ)を持っています。それの情報を使用して指定する方法です。
3つの中で一番正確に特定できる方法だと思います。オブジェクトがもつ情報が代わりさえしなければ、基本的に画像の状態に問わず指定することが可能になってきます。ただし、オブジェクトが持つ情報で知る方法が分からなければ、使用することはできません。
これらを見ると、この記事を見ている方の中には、オブジェクトが持つ情報でGUIの操作をすることが一番良いと考える人もいるかと思います。
そこで、実際に行いたいことを考えてみてください。
例えば、邪魔するものが他に存在せず、単にウィンドウやアプリが1つだけ存在する場合はどうなるでしょうか?しかも、1つの環境のみで繰り返し行う単純作業で処理速度が重要になってくる操作だとしましょう。この操作の自動化で、オブジェクトが持つ情報で指定する方法を採用するでしょうか?答えはNoだと思います。この場合は座標で指定する方法が一番適していると考えるべきでしょう。
このように、自身がやりたいことを念頭に置き、3つの中からどれが一番適切な方法か?を検討して、実現する方法を構築していくのが一番良い方法かと思います。
sikuliXの概要について
業務や個人でRPAを体験してみようということで導入しやすいツールの1つに sikuliX が挙げられます。上記説明の言葉を使うと、SikuliXは 画像を指定することで、目的の場所(オブジェクト)を指定してGUIを自動で操作する ツールです。
初心者でも始めやすい点として、以下の点が挙げられます。
- フリーツールである
- 画像のキャプチャで目標のオブジェクトを指定できる
- ソースコードを書かなくても、直感的に使うことができる(V1.1.3まで)
- 慣れてきたら、Jython(Javaで作られたPython)、JRuby(Javaで作られたRuby)を使用することで、繰り返し文(for / whileなど)や条件分岐(if文)などの記載も可能になる
sikuliX は、初めて試してみる自動化ツールとしては、とても入りやすいものだと思います。
RPAがどのようなものか体験するだけでも良いと思うので、ぜひ皆さん試してみてください。
↓↓sikuli X の公式HPは、こちらです。↓↓
↓↓sikuliXのインストール方法は、こちらをどうぞ↓↓
↓↓sikuliXの基本的な使い方は、こちらをどうぞ↓↓
↓↓RPAに興味のある方は、こちらもどうぞ↓↓