2008-12-02[n年前へ]
■"Win32GuiTest.exe"で自動作成したRubyスクリプト実行動画
"Win32GuiTest.exe"で「Windows操作を再現するRubyスクリプト」を自動で作るの処理例、つまり、"Win32GuiTest.exe"で自動作成したPerlスクリプトをWin32GuiTest by RubyでRubyスクリプトに変換し、そのRubyスクリプトを走らせてみた時の動作画面を下に動画として貼り付けておきます。
まずは、下に貼り付けた動画がpl2rb.rb(変換前のPerlスクリプトはpl.plになります)の実行画面になります。行った作業はテキストを入力して、何回かコピー&ペーストして、その後に削除する、というものです。
そしてこちらがoutput_revised.rb (変換前のPerlスクリプトはoutput.rbです)の実行画面です。行った作業は、日本語入力とアルファベット入力を自動で行ったものです(ちなみに、"Win32GuiTest.exe"は、私の環境では、日本語変換モード切り替えのキーコンビネーションをきちんと記録してくれなかったので、Rubyコードの方に修正を入れてあります)。
2009-04-02[n年前へ]
■GUI操作を自動化する魔法のソフト「InP」
実はInPは、前述したSePの品質評価用ソフトウェアを外販したものだ。
Windows上のあらゆる操作を記録、制御するという製品の性質上、SePでは膨大な項目のテストが必要になる。しかも多くはエンドユーザーが行なうGUI操作をシミュレーションしなければならない。
2009-04-26[n年前へ]
■win32GuiTest.rb にコマンドプロンプトを閉じる関数を追加する
Windows上のRubyで、さまざまな(雑多な)GUI関係の操作を簡単に行うことができるライブラリ、win32GuiTest.rbに、ひとつ関数を増やしておきました。増やした関数は"closeComandWindowLikeName"という名前の、指定した文字列が含まれるコマンドプロンプトのWindowをすべて閉じる、というものになります。
たとえば、下記のようなスクリプトを書けば、Windowタイトル中に"mongrel"という文字列を含むコマンドプロンプトをすべて閉じ・終了させます。
require 'win32GuiTest'ちなみに、closeComandWindowLikeName('mongrel',3)と書けばウィンドゥを閉じるための毎キー操作につき、3秒の時間間隔を使います。何も指定しなければ、キー操作の時間間隔は2秒になります。
gui=Win32GuiTest.new
gui.closeComandWindowLikeName('mongrel')
この程度の機能であれば自分で作る人の方が多いでしょうし、そもそもこんな機能を使うという人がいるかどうかは…怪しいところですが、とりあえず、何かの役に立つかもしれませんのでライブラリとしてソースコードを置いておくことにします。
2009-10-14[n年前へ]
■AutoHotkeyで任意の場所・タイミングでRubyやPerl等を使おう
キー入力する際に、さまさまな機能を使いたくなります。たとえば、以前作ったAmetMulti,AmetPerlなどは、ATOKのAMET機能(変換機能を拡張することができる仕様)を使って、Atokでプログラミング言語の一行プログラムを実行させたり、そういったワンライナー(一行プログラム)を辞書登録してしまうことで、文字処理・作成だけでなく、アスキーアート作成機能・画像取得機能などさまざまなことをしてみました。下の動画は、AmetMutiを使って、画像取得を行い、画像処理をかけたり、アスキーアート化を行った時のデモ動画です。
最近のATOKには、そういった機能拡張がより簡易にできる機能が追加されているようです。とはいえ、市販ソフトのお仕着せ機能を使うのも(趣味としては)少しつまらないですし、何より、ATOKで似たようなことをするならAMET拡張機能を使えば良いので、わざわざ車輪の再発明のようなことはしたくありません。(趣味なんですから)何か新しいものに挑戦したいものです。
そこで、今回はWindows用の(これまた無料の)AutoHotKeyを使って、キー入力を自由自在にフックして、さまざまな機能拡張を追加してみたい、と思います。AutoHotKeyはさまざまな機能を持ったソフトウェアなので、AutoHotkeyは、キー・スワッピングや語句置換や、キー入力などをトリガーにした各種処理ができるソフトで、非常に高機能なものです。その概略については、「AutoHotkeyを流行らせるページ」を一読してみれば、知ることができると思います。とはいえ、あまりも機能が多岐にわたっているので、まずは、既存のスクリプトを使ったり・改造したりすることから始めるのが良いと思います。
さて、今日は、AutoHotKeyを使い、"rby"と打つと、クリップボードに入っているRuby(ワンライナー)スクリプトを実行させ、その結果をキー送出させるプログラムを書いてみることにします。
準備作業は、まずAutoHotKeyをインストールします(再起動などは必要ありません)。そして、プロセスを起動して標準出力を読み書きするスクリプトをAutoHotKeyのAutoHotkey.ahkに追加します。もちろん、Rubyも必要です(どのようなバージョンでも構いません)。また、Rubyでなく、Perlでも何でもスクリプトを変えれば同機能を実現できます。
それでは、スクリプトをAutoHotkey.ahkに追加しましょう。
::rby:: a=ruby -e ' c=' d=%a%%clipboard%%c% pi:=PRun(d) PWaitExit(pi) r:=PRead(pi) Send,%r% PClosehandle(pi) returnはい、これだけです。rbyという単語入力がされたら、rubyを-eオプションを付け起動させ、クリップボードの中身をワンライナーとして処理した上で、その結果をキー送出させる、というわけです。
あとはAutoHotKeyで.ahkファイルを再読み込みし、メモ帳を開いて、
puts Time.now.monthと書き、その一行をコピーして、rbyと入力しエンターキーを押すと、そこには10という文字が出現します。もしも、 puts Math.sin(5) という一文をコピーして、rbyと打てば、メモ帳上に-0.958924274663138という文字が出現します。
もちろん、メモ帳でなくても構いませんし、
a=ruby -e 'の一行を
a=perl -e 'とでも適当に替えるだけで、Perlを好きなソフト上で好きなタイミングで自由に使うことができるようになります。awkでも何でも同じ話、です。
というわけで、今日はautoHotKeyを使って、自分の指先が叩くキーボードのすぐ向こうに、RubyやPerlの機能をいつでも呼び出せるようにしてみました。もちろん、この話はさらに(無料の)Mathematica Player機能の実装などにも繋がっていくことになります。
2009-11-14[n年前へ]
■マクロを組んで消える「作業」
「マクロを組んで作業は「実力」ではない?」という記事を読み、さまざまな投稿が書きこまれてからも、なかなかここにメモすることができずにいました。なぜか、その記事に関して考えをまとめることができないこと、さらに、それがいわゆる「釣り記事」であることもあり、何とも書きようがないままでいます。特に、「作業」ということに関して「釣り記事」を書くということに対し、何とも書きようがない心持ちがして、何も書けないでいるような気がします。
「私たちにとって、パートさんたちにとって、仕事って何なんだろうね。この作業が自動化されたのをみて、パートさんは喜ぶんだろうか、悲しくなるんだろうか」としみじみとしてしまったのでした。
そして、今もまだ何も書けません。だから、その記事を読んだときに連想したこと、以前書いた記事「人を楽にする作業」をリンクしておこうと思います。
「ただの単純作業は機械に任せて、人間は人間のセンスが必要な作業へ進んでいくんだろうな」とはもちろん思う。ただ、そういう新たな作業へ移行していくことを喜ぶ人もいるだろうけれど、そんな移行を辛く感じる人もきっといるだろうと思う。色んな人がいるのだから、新しい作業に適応していく人もいるだろうし、そうでない人もいるだろうと思う。マクロを組んで消える「作業」がある、そこで生まれるものもあるだろうし、また同時に消えるものもあるのだろうか、と考える。
人間は、決してあきらめてはならない
「ロボット (R.U.R)」 カレル・チャペック