GUI 自動化ソフトを使って仕事を効率化する方法

【情報】
今日は、Mac , Windows , RaspberryPi で使える、 GUI 自動制御ソフトについてご紹介したいと思います。安価にかつ簡単に自動化環境を構築されたい方々にとって有用な情報となれば幸いです。


Windows で使える、 GUI 自動制御ソフト】
ここ数年前ぐらいから、AI だのロボットが話題となっています。
人間の仕事を奪うのではなどの心配もされている様ですが、非人間的な作業から解放されて、人間がより安全で快適な環境で作業出来る事を実現し、人間らしく創造性の高い事に集中出来る様になるのであれば、大歓迎といったところでしょうか。

私たち技術者がする仕事の中にも、とても退屈で非人間的な仕事が残っていたりします。
例えば、回路図エディターで書いた回路図からBOMリストを作成し、実際に購買部門に発注してもらえる様なデータに形を整えて、データを共通データ・ベースへ登録する作業とか
実験で「Easy MCUser」からIoTデバイスへ送るデータをパラメーターを振って送信したいとか
GUI
を操作しなければテスト出来ないソフトウェアの検証作業とか
以上の様な作業が自動化したい作業の例として考えられます。。。Windows であれば、「VBA」を使えばかなりの事が出来ますが、ソフトウェア間で通信をしたりデータを受け渡ししたりしようとすると、それぞれ I/O の仕様を調べたり,場合によってはそもそも簡単にはデータの受け渡しが出来なかったりといった事があります。そんな時、人力で気合いを入れてやらなければならない仕事は、想像性もなく、間違いも発生しやすく、大変です。。。
今回ご紹介したいのは、そんな非人間的な作業から解放してくれる,ロボットをつくるための道具です。

マウス操作を自動化するソフトウェアの例
http://www.uwsc.info/
http://officezitan.com/?page_id=4200
http://www.susi-paku.com/paku-tinytask.html
http://toolmania.info/post-3620/

上記の様にマウス操作を自動化するソフトウェアは色々なものがありますが、今回は簡単で便利・一押しのソフト、「UWSC」をご紹介します。
UWSC」は、Windows 上でマウス/キーボードを自動制御する事が可能なソフトです。マウスやキーボードの操作をスクリプトとして記録し、再生するだけではなく、プログラミングによってさらに複雑な事が出来ます。実現出来る複雑な処理の中には、画像の判定をして合致していたらスクリプトを実行したりなどといった高度な事もあります。まるで、人間が GUI の操作でソフトウェアと対話しながら何らかの作業を実行する様な事が実現出来るというわけです。

では早速、【これだけ知っていれば、かなりの事が出来る!】的な基本構文についてご紹介します。


◎一定時間、スクリプトの実行を停止
書式の説明
Sleep
( )
・引数
 秒 スリープする秒数(最小=0.0011[mS])


◎任意の文字列をクリップボードに格納する
//
まずは変数「clpb」を宣言する
Dim clpb = "clpb
だよ"
//
以下のスクリプトを実行すると、クリップボードには「直接指定した文字列」が保存されます。
SendStr
(0, "直接指定した文字列")
//
以下スクリプトを実行すると、クリップボードには変数 clpb に格納された「clpbだよ」という文字列が保存されます。
SendStr
(0, clpb)

書式の説明
SendStr
( ID, 文字列 )
・引数
ID
Windowを識別するIDID=0 でクリップボードへ格納される)
  文字列 :送りたい文字列を指定


◎クリップボードの内容をスクリプト中の任意の変数に記憶させる
//
まずは変数「clpb」を宣言する
Dim clpb = ""
//
以下のスクリプトを実行すると、変数「clpb」へクリップボードの内容が格納される
clpb = GetStr
(0)


◎ループ実行中の処理を強制的に停止させる
If GetKeyState
(vk_end) then
Break
Endif


◎指定回数「XXXX」に達するまで、ループする
For A = 0 TO XXXX
:
:
Next


◎条件「XXXX」が満たされている間、ループする
While
(XXXX)
:
:
Wend


◎メッセージボックスへ表示任意の文字を表示させる
//
まずは変数「clpb0」を宣言して、初期値も設定する
Dim clpb0 = "
それそれ!"
//
以下のスクリプトを実行すると、メッセージボックスが現れて、変数「clpb」の内容(「それそれ!」)が表示される
MsgBox
(clpb0)


◎表示されたウィンドウの名称を取得する
//
まずは変数「Cond」を宣言して、初期値も設定する
Dim Cond = ""
//
変数「Cond」にマウスがある位置に表示されているウィンドウの名称を格納する
Cond = Status
(GetID(GET_ACTIVE_WIN), ST_TITLE)
//
以下のスクリプトを実行すると、メッセージボックスが現れて、変数「Cond」の内容が表示される
MsgBox
(Cond)


◎知っていると便利な Windows のキーボード・ショートカット
・チェック・ボックスのチェック/アン・チェック:「スペース」キー
・選択可能なテキスト・ボックス/チェック・ボックスなどの異動:「TAB」キー


◎大変参考になったサイト(もっと詳しく知りたい、もっと複雑な事をしたい時に)
http://www.uwsc.info/sample.html
UWSCで自動化 超速!! Windows マクロテクニック
http://canal22.org/category/advance/excel/
http://izagne.com/uwsc/#
http://uwscguide.seesaa.net/
http://nem.symphonic-net.com/uwsct/0610uwsct.html#MakingSupport
http://canal22.org/control/break/

GUI
制御を自動化させて、複数のソフト間でデータのやり取りをしたい場合など、「UWSC」を使う事でかなりの事が出来るのではないかと思います。自動化を推進したい方、退屈な作業から解放されたい方は、ぜひ「UWSC」と「Easy MCUser」の組合わせをご検討頂ければと思います。


Mac , Linux で使える、 GUI 自動制御ソフト】
自宅では主に Mac を使っている者として、Mac 上で動作する GUI 自動制御ソフトも忘れてはいけません。Mac 用としては、Apple Script から引き継がれた「Automator」で決まりと思います。又、Linux 用としては、「xautomation」なるものがありました。こちらは、ターミナルから直接コマンドを打ち込んでみて試した程度で、まだ本格的に使ってはいないのですが、感触的には
UWSC」と似ている感じです。これら2点のソフトもお勧めです。
それぞれ良い所があり、本当であればプラットフォームに依存しない形で提供されていれば良いのですが、作者の方に感謝してそれぞれの良い点と出来る限り共通な機能を使って移植性を高められればと考えています。下記、Mac 用の「Automator」と、RaspberryPi3 で動作確認をした、「xautomation」のリンクを張っておきますので、自動化にご興味がある方は、サイトを訪れてみて頂ければと思います。


Mac GUI 自動制御ソフト(Automator):プリインストールされています!
使い方の解説集
https://help.apple.com/automator/mac/10.10/
http://tonbi.jp/AppleScript/Automator/
http://d.hatena.ne.jp/zariganitosh/20090129/1233271424
https://allabout.co.jp/gm/gc/3601/


Linux GUI 自動制御ソフト(xautomation
以下のコマンドでインストール可能
sudo apt-get install xautomation
起動は以下のコマンドで
xautomation

http://blog.father.gedow.net/2012/07/26/debian-xen-domu-auto-mouse-keyboard/
http://blog.father.gedow.net/2012/07/27/xautomation-auto-mouse-keyboard-manual/
http://www.ninja-ninja.xyz/melts/melts%E8%87%AA%E5%8B%95%E5%8C%96%E3%81%AE%E6%97%85%E3%81%9D%E3%81%AE1%E3%80%82xautomation%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB
http://pieceofnostalgy.blogspot.jp/2014/02/blog-post.html

http://blog.goo.ne.jp/gemma01/e/b2fef1f58df04ee5cbfd2342e8139497
https://kamiclog.wordpress.com/2012/03/11/%E3%80%90xautomation%E3%80%91%E3%81%A7%E3%81%AE%E8%A8%98%E5%8F%B7%E5%85%A5%E5%8A%9B%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%80%82/

xautomation のインストール可能
sudo apt-get install xautomation
xautomation

xautomation の使い方/コマンド
xte - Generates fake input using the XTest extension

SYNOPSIS
xte
[options] commands...

DESCRIPTION
xte is a program that generates fake input using the XTest extension
,
more reliable than xse.

OPTIONS
A summary of options is included below.

-x display
Send commands to remote X server. Note that some commands may
not work correctly unless the display is on the console
, e.g.
the display is currently controlled by the keyboard and mouse
and not in the background. This seems to be a limitation of the
XTest extension.

--help
, -h
Show summary of options.

COMMANDS
key k Press and release key k

keydown k
Press key k down

keyup k
Release key k

str string
Do a bunch of key X events for each char in string

mouseclick i
Click mouse button i

mousemove x y
Move mouse to screen position x
, y

mousermove x y
Move mouse relative from current location by x
, y

mousedown i
Press mouse button i down


mouseup i
Release mouse button i

sleep x
Sleep x seconds

usleep x
Usleep x microseconds

SOME USEFUL KEYS
This keys are case sensitive.

Home
Left
Up
Right
Down
Page_Up
Page_Down
End
Return
BackSpace
Tab
Escape
Delete
Shift_L
Shift_R
Control_L
Control_R
Meta_L
Meta_R
Alt_L
Alt_R
Multi_key

SEE ALSO
pat2ppm
(1), patextract(1), png2pat(1), rgb2pat(1), visgrep(1).

xautomation スクリプト・ファイルの例
#!/bin/bash
sleep 0.5
xte "keydown Control_L"
xte "keydown Shift_L"
xte "key v"
xte "keyup Shift_L"
xte "keyup Control_L"

#!/bin/bash
xte "key Escape"
sleep 0.5
xte "str :wq"
sleep 0.5
xte "key Return"


iOS / Android OS GUI 自動制御ソフト(Appium
Appium」は、リリース・コードをそのままテストすることが可能なツール。まだ触れる機会が無いですが、有用な情報としてスクラップしておきました。
http://softwaretest.jp/labo/tech/labo-456/
http://iti.hatenablog.jp/entry/2014/01/06/092626
http://qiita.com/m_ohsumi/items/6b4f10010467d4aa2291
http://www.atmarkit.co.jp/ait/articles/1504/27/news025.html
http://developers.mobage.jp/blog/2014/7/25/appium

スクリーンショット 2016-02-15 21.09.37


本日、「Easy MCUser Ver.2.0」をリリースしました

【お知らせ】
本日、「Easy MCUser Ver.2.0」をリリースしました。
Easy MCUser の開発言語である XOJO 。2017年リリース1 として、先週最新版がリリースされました。一つ前の開発環境では表示系で問題が発生しておりましたものが改善された事を確認出来た為、Easy MCUser も再コンパイルして今回のリリースにこぎつけました。一時期、XOJO の開発バーションを古いものに戻して Easy MCUser をコンパイルする事も考えましたが、XOJO のリリースが 2017年リリース1で全て解決です。

今回の Easy MCUser のバージョンアップでは、β版で機能が追加されている「Raspberry Pi」のサポートと、今まで必要であった マスター MCU が不要となり、マスター MCU レスの接続形態を実現しています。通信速度も9.6[Kbps]から57.6[Kbps]へ速度をアップしています。
ダウンロードは、「
こちら」から可能です。

【ちょっと広告】
Easy MCUser は、ユーザーがプログラミングをせずに、マイコンを使って自分のやりたい事を簡単に実現するためのソフトウェアです。以下に示す様な3つの特徴を持っています。

・GUIの操作によって、簡単にマイコンを直接動かせる
・GUIの操作を録画し、録画した操作を編集する事でマイコンのプログラムを生成出来る
・1つのマイコンでは難しい処理も、
複数のマイコンへ分散して処理させられる

教育現場で、クリエーターに、仕事の小道具としてお使い頂ければ幸いです。

​​Easy MCUser enables you easily that you want to do your own by using microcontrollers without do programming. Easy MCUser has three features such as shown below.

· By GUI of the operation, you can control easily the microcontroller directly.
· Record the operation of the GUI, you can generate the program of microcontroller by editing the recorded operation.
· If you have difficult process in one microcontroller, Easy MCUser can distributes to a plurality of microcontrollers.


スクリーンショット 2016-02-15 21.09.37