OA化とはなんでしょう。表をMS-Excelにすることです。
それは丁度、文書をワープロで打ってOA化と言っていたようなものです。
なに?MS-Excelはもう古い?最近は報告書を電子メールで送ることをOAという?さて実感としてはいかがなもんでしょう。でも、とりあえず何かをまとめて表現するときはMS-Excelの表にすることは、とても多いです。そして、それが原本、というか公式の資料になりますから、他社・他部署との受け渡しもMS-Excelのワークシートで行われます。
そんなわけでこんな感じのメールが添付ファイルとともに飛び交います。
「拠点別のクライアント/サーバーのIPアドレス、ホスト名はこの表のとおりお願いします」というと、数日して「作業担当者に渡す表はこれです。要望内容をチェックしてください」と帰ってきます。一方では(マルチベンダーなもんで)「サーバーのhostsファイルの追加内容はこのようになりました。確認をお願いします」と飛んでくる。
最初は、そのたびごとにExcelシートの内容を切り出してくるツールを作っていました。他の会社も同じようなことをやっているに違いありません。なにしろサーバーは300以上。ワークシートも300枚以上。ひょっとしたらものすごい非能率かもしれません。(マクロを組むとデータの切り出しに2時間くらいかかる、と先方の担当者がぼそっとつぶやいていたような。)気がつくと同じようなプログラム、カレントディレクトリのワークシートを読み込んで、必要なセルだけをCSV形式で吐き出す、というのを4〜5本書いていました。プログラム内部にセルの番地を切っているので使いまわすときには、ソースをいじってリコンパイル。でもこれでは私以外使えませんし、テストもいちいちやらねばならない。そこでもったいない、と汎用的に使えるものを書き始めました。ちなみに、ステップ数だけならば、一回こっきり使うべく作ったものの10倍を超えます。汎用的に使えるようにするとはこういうことです。
しかし、同じような仕事、今後も回ってくるであろうとき、私がいないと能率がどどどーんと下がってしまうというのも可哀想だしなあ。一度このペースでやってしまうと、今後とも同じペースでできることを管理者は期待するだろうし。
さらには、こういうツールを作ってもメンテナンスができなければ意味がない、という批判をかわすために「オープンソース」にいたします。多分同じような非能率を行っている会社は少なくないと思いますから。名前は"Extract Cell Value"を縮めてExtracelとしました。決してExcelをもじったわけではありません。この辺の命名のセンス、我ながら何とかならんもんですかねえ。アイコンもできてないし。まてよ、PickUp Cell Vaule、略してPickcelVというのもいいなあ。ピクセルブイ、ないしピクセルファイブと読まれそうだが、それもまたよし。よし、これに決めた。変更決定!PixcelV。
やっていることは、かつて書いたinvexの逆のようなことです。invexはcsvファイルを項目ごとに指定したMS-Excelワークシートに貼り付けていきますが、1レコード=1MS-Excelファイルという不自由さがありました。PixcelVは一つのファイルから複数レコードを作ってくれます。しかも表題部分と個別レコード部分を連結して出力してくれます。
具体的にはこういうことです。私が作ったワークシートは上のほうにサーバーの定義が切られていて、下のほうにそのサーバーにぶら下がる個別クライアントの定義を書き込んでいる。一覧表としてはこれで十分なわけです。しかし、実際に作業する側は、各クライアントのセットアップをするときにサーバー情報も意識しておく必要がありますので、一行にサーバー定義とクライアント定義が並んでいたほうが都合がよい。
そのために、本プログラムPixcelVはサーバー定義を読み込んで保持したあと、各クライアント定義を書き出す際にサーバー定義をくっつけて出力してくれる機能を備えています。クライアント定義を一つ読み込むと指定した分量だけ、行/列方向にシフトして次を読んでくれる。(つまりMS-Excelでは2行以上にまたがった定義でも1レコードに出力してくれる。)
そのとき、キーとなるセルを指定しておいて、そこが空欄になれば、もうそのファイルに処理すべきレコードはないと考えて、そのファイルを閉じ、次のファイルを読み込む。
処理するファイルは、ディレクトリ内部のMS-Excelファイル全部でも、1ファイルだけでもかまいません。出力ファイルは入力ファイル別でも、全部いっしょでもどっちでも指定できます。ね、なかなかのもんでしょ。出力ファイルが1ファイルだけのときは既存の同名ファイルをバックアップするようになっていますが、個別のときは何も考えずに上書きします。でもバックアップとったほうがいいかなあ。でもとった時のほうが問題となる確率高いんだわ。(とても複雑だが、ありがちな動きを想定している。)と、偉そうに書きましたが例によってまだドキュメントができておりません。上にあるように気を利かせてプログラムを書くとドキュメントが異様にめんどくさいんですよ。気を回したことをきちんと文章に落とさなければならないわけですからね。
ちなみに、PixcelV、最後のVをファイブと読むと、バージョン番号に聞こえるから「ブイ」と読もうと思うのですが、「ブイ」って特殊な響きがありますよね。Vサインのおかげでしょう。このVサイン。第二次世界大戦中にイギリスBBCが作ったという話を聞いたことがあるんですが、本当でしょうか。ナチス占領下のフランスに向けて放送を行った際に、手を握ってから中指と人差し指を立てるとVの形になる。英語でもフランス語でも「勝利」という単語は「V」から始まる。だから、このVサインで勝利を誓い合おう、という話だったと思います。ということは、ナチス党員はVサインをしない?