急にRPAというのが流行ってきた。コンピュータネタ、目次へ
ようするにパソコン上のオペレーションを自動化するもので、それだけならMicrosoftExcelのマクロとあまり変わらないのだが、まずは既存の業務アプリケーションがあって、それの操作を対象とするところに違いがある。(と思っている。)最近、20年前に戻ったかのような感覚を覚えることが多いのだが、これもまたそう。似たようなものを作って普及させようとした覚えがある。
1997年に自分史上初のRPAツールを作った。ウィルス対策しっかりやりましょう、ということが強調されていた時代。メールサーバーでのウィルスチェックがあまり普及しておらず、更にはファイル読み込み時に自動でウィルスチェックするなんて機能が一般的でなかった頃なので、電子メールにファイルを添付するときは、ウィルスチェックをするのがマナーというのが強調されていた。そこで、私は添付するファイルを特定のドライブに入れて、そのプログラムを走らせれば、ウィルスチェックをかけ、メールソフトを立ち上げ、ファイルを添付して文面入力画面を開き、フッター部分に「添付ファイル○○は、PCCSCANにてパターンファイルnnnでウィルスチェック済みです。」という文言を追加するものを作ったわけだ。
ちなみにDelphiで書いた。添付ファイルの置き場所は固定、といった不親切なところはあるが、フッターにキッチリ実行結果を書いてくれるところなど、自分らしい丁寧さかな、と思っている。
もちろん社内では「無視された」。ここで会社名を書くとその信用力に疑念がさしはさまれかねないようなことだが事実だ。ウィルスチェックをするというマナーの必要性は認めて検討はしていたのだが(だから提案したのだが)、何というソフトでどのパターンファイルを使ってチェックしたを相手に伝える(それどころかウィルスチェックをしたということすら相手に伝える)必要性がないと判断したということだからね。好意的にみると「魔法にしか見えなかった」ので使うのが怖かった、のかな?それ以降もRPAのプログラムはいくつも書いたよ。そして一部ではあるが私を含めて似たようなことができないか一生懸命がんばった人間が少なからずいたようだ。UNIXにはシェルスクリプトがある。MS−DOSにもバッチファイルがある。それまではコンピュータに命令するのはコマンドの役目だったから、そのコマンドをつなげてやれば結構なことが自動でできたのだ。先ほどのウィルスチェックもファイル名をコマンドのパラメータとして渡している。
ところがパソコンのインターフェースがGUIになって、その便利なバッチが使えなくなった。シェルスクリプトやバッチファイルで業務を自動化してきた人間は「GUIでもなんとかできないか」といろいろやってみたわけだ。マイクロソフト自身もそのようなニーズは把握していたようで、Windows3.1には「レコーダー」というGUI操作を記録するソフトが付属していた。これがおそらくは第一次のRPA。ブームとはいかなかったが、私だってMicrosoftWindowsの画面の各部品のIDを調べて、システムコールを横取りし、といろいろ試してみた。(付属のレコーダーはほとんど使い物にならなかった。)が、私を含めてほとんど全員が討ち死にしたと思われる。
最大の原因は、Windows for MS-DOS(WindowsNT3.51のマニュアルにある正式な呼び方です。Windows9xというよりよほどスマートだ)の安定感が信用ならなかったことにあるのではなかろうか。ある程度野心的な試みをすると、不審な動き(含むクラッシュ)をしたのである。オブジェクト名もなんとなく変わってたりするし。(そこで作ったのがMyHope。)WindowsがNTベースになっても、自動化は完全管理の環境下、つまりテスト限定であったわけだな。あるいは新規に端末を導入するときの作業を自動化(予定した以外の設定変更やソフトのインストールがなされてない)する場合。
つまりは皆さん痛い思いを繰り返してまで自動化にこだわってはいなかったのだろう。ところがアプリケーションがWebベース、つまりイントラネットになって風向きが変わったのではないかと思っている。画面をブラウザに表示するそのソースを容易に見ることができるのだ。確かに今のJavaScriptとXML化で肥大化したHTMLソースを読むのは大変だ。でも読めないわけではない。たとえ読めなかったとしても、ボタンやチェックボックス、テキスト入力エリアといったオブジェクトが「どう定義されているか」はっきりと記述されているのだ。これならHTML解析ソフトと組み合わせれば何とかなる。さらにはCPUパワーが増したのが大きい。20年前は画像の一致で押すボタン、入力するテキストボックスを見つけるなんてことは考えられなかったが、今であれば造作もない。画像で判別できれば、Webアプリでなくても操作は自動化できる。
というわけで、私も自動化の試みを再開した。残念ながらMS-Excelベースだが、誰か長期に休むことになって「人が足りないからオペレーション応援してくれ」なんてのがあれば(仮定法)、オペの対象はイントラアプリか、なら行けるかも!とプログラムを書いて、あとは自動実行なんてことをやった(だろう)。(簡単そうに書いてますが、インラインフレームをどう扱うかで、苦労した苦労した。)もし安定して動きだした後にその人が復帰したとしたら。最初は本調子ではないだろうから「こんなツール作ったから」と紹介してリハビリを兼ねて実行を任せる、なんてことをするといいかもしれない。ようするに #実行はじめたら終わるまで休んでていいよ。#
この状態をもう少し進めることができればRPAには障害者雇用拡大のツールとしてという使い道もできると思っている。ある程度は自動実行の状態を監視しないといけないものもあるので、それをお願いする。体力の消耗は少ないと思う。止まる時は先方のシステムがWebであるがゆえに不安定ということが多いので、都度知らせてくれたので対応はとれる。極端な話、ツールが安全に止まってさえくれれば監視者は倒れていても構わない。そのかわり想定外の事象が起った時は、意図してない画面に遷移したことに気づかずオペレーションを続行する、なとということをせず安全に止まるようなプログラムを書くというノウハウが必要になる。
あ、そうそう今はMicrosoftExcelのマクロで書いてますよ。20年前と違って許可のないプログラム使うとチェックされますから。でもVBAなら問題なしでしょ。以前Delphiで作ったRPAツールを入れて誰も何とも云わなかったのは自作プログラムを社内端末にインストールするなんてことが想定されていなかったからです。イントラだったら何とかなるや、と思った人が私以外にもいたのだろう。ということで、RPA用のプログラミングツールがどんどん出るようになってきた。基本的にはWebアプリ向けみたいだが、画面を画像として認識してクリックするボタンを探すという20年前には考えられなかったパソコンの処理能力を活かしたり、座標を指定してマウスを持って行くという20年前でも危なくてできなかったようなことを機能として持っていたりする。
しかしなんて価格だろう。実行環境ですらNeXTSTEPよりも高い。開発環境ならNeXT本体が買えてしまう。Steve Jobsがデモで「NeXTSTEPは安価だ」といった理由が今更ながらよくわかる。あれだけできてたった10万円だ。(もちろんオーディエンスは大ブーイングだったが。〜私がJobsと握手してもらったのはその時。)追加として。先ほど端末の新規導入にRPAを使った、って書いたけどその時のマニュアルにあった事項をちょっと紹介。キーボードやマウスの操作をソフトでエミュレートしているので、リアルに接続されているキーボードを叩いたり、マウスを動かしたりすると動作が狂うのだ。そこでマニュアルには「ツールを動かした後は、キーボードやマウスに手を触れないように」と書いてあった。それがやがて「マウスを裏返す」に変わった。なるほど、確実にカーソルは動かなくなる。でも光学式マウスになると裏返すとちょっとまぶしいね。なので無線マウスを前提として「スイッチを切る」が推奨されることになるかもしれません。こういうちょっとしたことを自作のRPAツールのマニュアルに書いておくといい場合があるかもしれません。
現在進行中の歴史なので続きは早くて半年後。