GUIって案外不便なものです。ウィンドウを開いて10件くらいのデータを入力するのなら、まあ許せるのですが100件とか200件を連続して入力しなければならないとなるとうんざりしてしまうでしょう。
一般には、そんなことは起こらないことになっており、そうであるからこそGUIによる対話型入力というデザインを採用したのでありましょうが、そのデザインが間違っていないとしても数百件のデータを入力する必要に駆られることがあります。その対話型入力を採用したプログラムの動作確認テストの場合です。
だいたいさまざまなパターンを網羅したテストケースを作って、画面から打ち込んで、結果を検証するという動きになると思います。そのとき、入力ミスをしたりすると大変です。とりわけ取り消し/訂正機能が貧弱だったり、その機能にバグがあった場合などなど。
また、結果が変だったときプログラムがおかしいのか、入力ミスをしたのか、分からなかった場合など悲劇であります。
似たようなことを2000年問題対策のころに既存プログラムの動作確認テストとして行った人も多いんじゃないかと思います。また、プログラムがおかしいということで修正したとき。建前上は同じ入力テストを最初からやり直さなければなりません。つい数日前、死ぬ思いでやったのに・・・とうんざりするのが普通の人間というものですね。
この状況をなんとかしようと、GUI操作を自動化するツールの導入を検討しました。自腹を切ってScriPlayerProなんぞを購入しましたが、とても不安定です。エクスプローラーからファイル名を取得するだけですらうまくできませんし、サンプルプログラムもまともに動きませんし、極めつけはスクリプトをテキストファイルに書き出しても、今度は読み込んでくれません。ちゃんとテストしたのか>エー・アイ・ソフト。
そんなわけで、長いこと自動化はあきらめていたのですが、「手で打っていては絶対に間に合うわけのない登録作業」を申しつけられて、次善の策を実行に移しました。大抵の場合、テストデータなんかMS-Excelのワークシートで作ったりしているわけでしょうから、画面に打ち込む文字列を、予め1行ずつテキストファイルに書き出しておくくらいは造作ないことでしょう。そうすれば、プログラムがそれを読んで1行ずつクリップボードに納めてくれる、ということをやってくれれば楽なんじゃないだろうか。そして、クリップボードから該当の画面に内容を貼り付ける毎に次の行をまた納める、という動きをしてくれれば入力の手間はとても軽減されます。少なくともタイプミスはない。
ところが、クリップボードから他のアプリケーションに貼り付けられた、というイベントを捕捉する手段というのは見当もつきません。かくしてNiftyServeのFDELPHIにお伺いを立てますと、としさんという方が遅延レンダリングという技法を使うのだと教えてくれました。この人のホームページ、Windows Programing Tipsはプログラマ必見です。非常に高度な技が詰め込まれております。あとは、いかに使いやすくするかです。もちろん今度貼り付けられることになっている文字列は画面に表示しますし、一つ前と一つ後のレコードも表示します。
今度貼り付けようとするレコードは、どの画面に貼り付けるのか、とかも判断しやすいように見出しを設定できるようになっていますし、見出しの変わり目ではパネルの色が変化して注意を促す。最終レコードを貼り付けると画面が真っ青になる。このへんの色は「あか」「きいろ」「あお」を使っておりますが、個人の趣味でブルーノカラー(ようするにMiffyの絵本で使われている色)です。
どのレコードが貼り付けられたか、はログファイルに出力してくれますし。途中で止めてプログラムを止めても、再度動かしたときはその続きからクリップボードにコピーしてくれます。貼り付けるレコードの内容を変えたいときは変更できますし、変更内容もログファイルに書き出します。ちなみにログファイルは書き出し毎にOpenCloseを繰り返します。途中でOSや開発中のプログラムがハングアップしてもデータは救えるようにね。すごいでしょう。
起動時の読み込みファイルは、同じディレクトリにテキストファイルが1個しかなければ、それを強制的に開きます。1個もなかったり、2個以上あったときはファイル選択画面が開きます。これは、プログラムと入力レコードだけを納めたファイルフロッピーに入れてテスト機に突っ込む、という運用シーンを考えてのことです。結構大変だった。最終レコードの処理が特殊になるのでね。
さて、私がこれを作る動機となった「手で打っていては絶対に間に合うわけのない登録作業」というのはなんだったのでしょうか。(真の動機は別にあると思われても、仕方ないだろうなあ、プログラム名がプログラム名だから)
今回1200台のパソコンをネットワークに追加するので、ネットワーク管理プログラムにこいつらのホスト名とIPアドレスを教えてやらなければならなくなったのです。しかし、これらはWindowsNT上のプログラムから対話形式で登録しなければならない。普通、テキストファイル読み込みで一括登録できるようにするだろう。
まあ、たしかにテキストファイルのインポート機能はあるが動作保証はしていないそうだ。直感的インターフェースによりユーザビリティの向上!というのは耳に優しいが、しかしそれしか方法が無いというのは困る。設計者はマウスの発明者の次の言葉を知らないに違いありません。《GUIは初心者には向いていますが、あくまで簡単で自然なインターフェースが優れているのならば、人は大人になっても三輪車に乗っているはずでしょう》。
こんな製品だから、イメージキャラクターに採用した元ロッテのトレーニングコーチが一年で大リーグを首になるのです。子どもが寝ているころに早起きして、コーディングをしていましたところニョーボは「なんでそんなことするの、ばかじゃない。そんなの元の(登録)プログラムの設計が悪いんだから直してもらうのが筋でしょう。それに、入力の人件費を考えてみてよ、やるとしてもそんなの学生バイトよんできてやってもらうとかしないと。」
何とかしようと努力している人間に何という言いぐさであろうか。
間に合わない計画でもやらなきゃならないし、かといって間に合わない計画を作った人間にペナルティなしというのも問題だし、、、それは「どうしてこんなネットワーク管理ツールを導入したんだ!」「最終検証はこっちでやるとしても、学生バイトでも何人かよんでくる算段をしてくれないと」と騒いだ方が実力のアピールにはなるだろうし、できなくてもこっちの責任と言われることはなさそうだしなあ。ニョーボの言うのも正論は正論。
でも、まあ作っちゃったし。でもソースはオープンにするのは止めておこう。かのネットワーク管理プログラムの製造元が買ってくれるかもしれないから。この会社に仕事をお願いしたときの単価を考えると、お、結構いい金になるじゃないか。睡眠時間削ってニョーボに怒られたせいか、ぶつけてしまった車の修理代は充分出るぞ。(;_;)
もちろんこの会社と付き合いあるけど、社員一人一人は好きなんですよ。でもねえ。運動会を止めてしまう、など経費削減策が効きすぎたんじゃないかなあ。丁度そういうインフォーマルな結びつきが事実上の社内教育体制を構成していたのをなくしちゃったものだから、底上げがはかれなくなった、といかいう理由があるのではないかなあ。