検索コンパニオン:ロッキー4

 以前「ロッキー3」という、Microsoft WindowsのローカルディスクにあるMS-OFFICEおよびPDFファイルの一覧を作り、かつそのなかの不要分を削除するツールを書いたのは以前紹介した通り。

 ところがこれはMicorosoft WindowsXPでしか動かないという問題がありました。
いや、いいんです。バージョンアップの必要はございません。予想通り問い合わせは一件もありませんでしたので、需要はないのです。
 そのままほっぽっといてもよかったのですが、人生いろいろあります。
 このプログラムってさあ、もともとパソコンを外に持ち出すとき「余分なものはない」という確証を取るために作ったのだな。そして最近、勤務場所の変更などでまたもやパソコンを移動させることが増えてきた。
 となると、万が一のことを考えて対策を取っていることにするのは必要なことである。
 パソコンが輸送中になくなって「重要情報はないんだろうな!」となることもあるだろう。知らん顔していればいいのだが、「前回はチェックできていたのに、なぜやってないんだ」と問い詰められたとき、言い訳のネタにされてとばっちりを食うのはこっちである。
 しゃーない。作る。

 前回、さらさらと作れた理由はWindowsScriptingHostとやらから、WindowsXPの持つ「検索」の機能が使えたから、である。ところがWindowsも7となると、その「検索」が「ない」。つまり手動で検索しないといけない。
 再帰呼び出しを使えば、階層的ディレクトリの下までチェックできるので、似たようなことはアクセス権確認なんぞでしょっちゅうやっているのだが、Win7でローカルディスクを相手にすると結構めんどくさいことが発生した。
 どうやら名前はあれど、姿が見えず、というディレクトリが存在しているようなのだ。
たとえば
C:\Documents and Settings
とかいうやつである。多分WindowsXPとの互換性維持のためにダミーでおいているのだと思うが、ここにぶつかるとVisual BasicのFileSystemObjectが「書き込みできません」と落ちてしまう。仕方なく例外処理をやって、空行を出さないように戻って、エラーをクリアして、と貧弱な例外処理の範囲内で対処して。
 でもさ、いいこともあるよ。各ファイルについてファイルタイプを調べることができるので、そこに「Microsoft Office〜」などとあれば、書き出す対象と判断できる。なんかこっちの方が取りこぼしがないような気がする。しかし、実行してみると「テンプレート」だろうが「アドイン」だろうが引っ張り出してきて、結果、ずらっと並んだ数千件のファイル群。当然、消してはならないものもあり、このなかから消さなくてはならないファイルを見つけるとなると、こりゃ見落すなという方が無理だわ。
 更に問題なことに「遅い」。いちいちファイルタイプを見ているとそれなりに処理時間はかかるようだ。そこで、涙を呑んで拡張子指定式に切り替える。
 しかし、コードの最初で定数として、対象拡張子をカンマ区切りで並べておけば、内部で配列にしてくれて、照合するところまで行ってくれるんだから、保守性はいいんだよということで認めてくれ。

 それでも遅いんだけどね。アタリマエダ。検索をOSに任せればアセンブラなりC言語レベルで走る。こっちはVBAである。(Pascalならもっと速く走らせる自信はあるが、そういうわけにもいかなくなってね。)それでもそれなりのチューニングは施した。

 Microsoft Windows7に対応しても、やっぱり需要はないんだろうな。
 では、PCが紛失「データはありません」と言い張っている人は、何を根拠にしているのだろう。
 あ、正直に言うのか。これはこれで潔い。大丈夫、これだけの腕のあるハッカーなら自分の能力を試したかっただけで、引っこ抜いた情報をどうの、なんて思わないよ。(その気でやったのならイベントログから6006と6009を消している。)

フリーソフト開発秘話、目次
ホーム