“昔プログラマ”を自称する私めも、会社勤めをしている頃は“日曜大工”ならぬ“日曜プログラマ”をしばしばやっていたものだ。定年後は、一応仕事は大学教師ということになっているが、ナニ毎日が日曜日(サンデー毎日)と言ってもよい状態である。であるからして、大掛かりに日曜プログラマができそうなものだが、もう若い頃のような大掛かりなソフトウェア開発を試みる気力は、残念ながら持ち合わせていない。
それでも、日頃使い慣れたアプリケーションで少しでも使い勝手に不満が出てくると、すぐさまその解決策を求めてプログラム作りを始めてしまうのである。既存のソフトウェアに後から機能追加することを、普通“プラグイン”とか“アドイン”などと呼ぶ。追加したプログラムが、アプリケーションと連携して動作はするが、一体となって動作するわけではない場合はアドインとは呼ばない。単なる“ツール”と呼ぶべきであろう。
最近のアプリケーションは、アドインされることを前提として設計されているものが多い。したがって、私めのような“老プログラマ”でも挑戦する場はたくさん存在するのである。
私が作ったアドインソフト、あるいはツール類を以下簡単に紹介することにしよう。
(1)アクセス数の一覧表(ツール)
私のホームページ内には、色々な場所にカウンターが設定されていて、そのページ内容がどの程度読者に読まれているか記録されるようになっている。最近は検索エンジン経由で(トップページを通らず)直接アクセスしてくる人が多いから、トップページにだけカウンターを設定しておいても意味がない。そのようなカウンター設定場所が年々増えていって、今では170個所を超えている。それらの個所をいちいち見ている訳にはいかないから、一覧表にして表示できれば便利であろう。そう思って作ったのが「Knuhsの書斎・アクセス数の一覧表」(図1)である。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfFVnWN81MbvK5YPWaKmQ_f72d7s2mz66VXMb6Fcm1iQLNZDn4UxjSYiEb5i6Ja2MwOTYBNo_VuJLXozG1Sp3cEbUbntY-t5LvIZz2b-JohrtyVtV8VhZCZIXr6oo4WaV76Mi5o3PU03M/s200/counter1.jpg)
②「Access日時」……最近のアクセス日時、
③「Access数」………昨日までの総アクセス数、
④「最新値」…………現時点の総アクセス数
がそれぞれの列の枠内に表示される仕組みになっている。
Access日時の表示が赤だとその日にアクセスされたことを意味し、青だと前日にアクセスされたことが分かる。前日の記録からどう変化しているかが一目了然で分かるように工夫されている。
このツールは、Perl言語で記述されている。出力はHTMLファイルで、ブラウザ上で結果を見ることができるようになっている。この表を毎朝最新のものに作り直してアクセス状況の変化を観察しているのである。時々刻々と変わっていくカウンター値(最右欄)を見るのは、なかなかのものである。
このHTMLファイルは私のローカルなマシン上に置かれているが、実は、私のホームページ上にもこれと同類の“allcount.html”というファイルがあり、上記③が「月頭Access数」つまり「月始めの総アクセス数」に固定されて表示されている。これを見れば、月始めからどう変化しているかが分かるようになっている。 http://beam.to/knuhs で簡単にアクセス表示できるから、関心のある方は見てください。
(2)スパムメールの整理・後始末(アドイン)
私めのところには、毎日200通あまりの迷惑メールが届く。メイラーのフィルター機能だけでは対処しきれないので、スパムメールキラーというアプリケーションを用いて一挙にそれらを排除することにしている。排除すると言っても、その中に間違って受け取るべきメールが紛れ込むこともあり得るから、一応は私的なごみ箱(1か月間は保管しておく)へ捨てる前にざっと目視で確認する必要がある。慣れてくると2~3分で済む作業である。
スパムメールキラーでは、メールの発信月ごとに特定のフォルダー上にスパムメールをまとめてくれる。たとえば、2010年7月だと“201007”という名のフォルダーが作られ、その上に置いてくれるのである。新しい月の初日は“201006”と“201007”という二つのフォルダーに分けて保管してくれる。親切で、よくできた仕様だと思う。
ところが、最近のスパムメールには発信日時を詐称するものが増えている。そうなると目視チェックを複数のフォルダー上で実施しなければならなくなり効率が悪い。そこで手作業で1つのフォルダー上にまとめてから目視チェックを行うことにした。面倒だがその方が早く済むのである。
しかし発信日時を詐称するメールは増え続け、多い日には10個の偽フォルダーが作られたりする事態になってしまった。たとえば6月のある日の例では、
偽フォルダー名 詐称された年月(*1)といった具合である。これでは手作業での対応は限界がある。そこで以下のようなバッチファイル(xmvfx.bat)をPerl言語で作りだすことにした。
200611 2006年11月
201003 2010年 3月
201004 2010年 4月
201012 2010年12月
202606 2026年 6月
203006 2030年 6月
203306 2033年 6月
203406 2034年 6月
203706 2037年 6月
203801 2038年 1月
【注】(*1)発信年月を詐称する(誤記する。あるいは“欺記する”と言うべきか)理由はよく分からないが、多分受信メールの一覧の先頭に表示させることを狙っているのではないかと思う。
●xmvfx.bat ファイルの内容例これを
@echo off
if (%1)==(1) %then% goto clear
move /y 200611\*.* 201006>nul
move /y 201003\*.* 201006>nul
move /y 201004\*.* 201006>nul
move /y 201012\*.* 201006>nul
move /y 202606\*.* 201006>nul
move /y 203006\*.* 201006>nul
move /y 203306\*.* 201006>nul
move /y 203406\*.* 201006>nul
move /y 203706\*.* 201006>nul
move /y 203801\*.* 201006>nul
echo:* 全メールを 201006 に集めました。
echo:* 内容をチェックしてください。
goto exit
:clear
echo:* 圧縮ごみ箱に移動してもよろしいですね?
pause
move /y 201006\*.* 圧縮ごみ箱>nul
cd 圧縮ごみ箱>nul
c:\tools\lha m 201007-pack *.txt *.001>nul
:exit
xmvfx [Enter] で呼び出せば一か所への“移動”を、
xmvfx 1 [Enter] で呼び出せば“ごみ箱”へ、となる。
この呼出し系列をスパムメールキラーのツールとして登録し、スパムメールキラーの中で利用するのである。もちろん、現在年月や詐称年月などは毎日変わるから、このバッチファイルも毎日作り直さねばならない。それを工夫するのがPerlプログラミングの面白いところである。ここでやりたい作業自体は一連のコマンド列で書き下せる程度のものだから、バッチファイルの形で簡単にツール類を作成しアドインできることになる。あなたも試してみませんか。
ここで、ごみ箱の中身を圧縮したのは、スパムメールにはウイルスが付着していることが多いので、そのまま私的な“ごみ箱”に(少なくとも1か月間)置いておくと、ウイルス対策ソフトが「ウイルス発見!」と騒ぎ出すことがあるからである。圧縮したり、更にはパスワード付きで封印保管すれば万全であろう。
(3)ソースプログラム集(ツール)
大学のプログラミングの授業で用いるプログラムのソーステキストを取り出すためのものである。毎回の授業に出席し、その場で指定された秘密のキー(*2)を入力すれば自動的にソースイメージが引き出せるようになっている。授業中にそのプログラムを用いて実行したり、改造したりして利用するためのものである。ただし、授業中しか引き出せないように工夫されているところがミソである(正確に言えば、その日の内なら授業の時間内でなくても引き出せるようにはなっている)。随分と意地悪な先生だと思われていることであろう。ただ、欠席して引き出せなかった学生も、プログラム自体は教科書に載っているのだから自分でシコシコとキー入力すればよいだけのことである。それ程意地悪とは思わないが、どうであろうか。
このプログラムは、PerlとC/C++とを用いて作られている。
【注】(*2)この秘密のキーは、一定の規則に則って定められているが、今まで誰もそれに気が付いた学生はいない。
(4)課題提出状況の表示(ツール)
授業では、毎週課題が出る科目もある。その回答を、期日までにメールで送付することになっているが、その管理が結構面倒なのである。少しずつプログラム化して自動処理化しようとしているところである。
私は表計算ソフトで提出状況を管理しているが、学生の方も受理されたのかどうか知りたいから、提出状況の一覧がウェッブ上に表示されれば便利であろう。 そこで、私はメイラーから取り込んだデータをPerlで処理し(学籍番号と課題番号を抜き出す)、その結果を表計算ソフトへ入力する。表計算ソフトではVBマクロのプログラムを用いて管理表に登録(締切前か後か、1週間以上遅れているか等を判断)する。その一覧を定期的にHTML化して出力し、再びPerlで変換して表示形式を整えてウェッブ上にアップする。この一連の処理をPerlとVBマクロプログラムで半自動化しているのである。学生の回答が、締切日に遅れたり、誤って何度も同じ文面のメールを送ってしまったり(そういう例が結構多い)しても少しも驚かない体勢になっている。
老プログラマにとって、アドインソフトやツールの作成は、ぼけ防止に最適であるように思う。
![](http://www.hi-ho.ne.jp/skinoshita/images/frmark15.gif)