ホームページ目次前の話次の話

久々に息抜きがてらPerlのプログラムを組んでいただけなのだが

2003年5月31日

5月も今日で御仕舞いだ。ずっと書かないでいたら、なぜか色々メールが飛ん できたりする。つれづれにしか書いていない、無茶苦茶不定期なコーナ─とい うか、全体がすべて不定期なのだが、なぜか週刊誌のようにどんどん書き加え られていくと期待されているようだ。雑誌編集部は、いっぱい執筆者を抱えて いるのでいいが、こちらはたった1名、それもパソコン初心者だけなのである。 何とか執筆陣をそろえなければと悪銭苦闘しているのだが、いまだ誰もゴース トライターになってくれない。原稿1本書いてくれたら、ビール一杯くらいは ど〜んと驕ろうと思うっいるのだが、誰かいないかなぁ。

今年の5月の連休は、なぜか非常に忙しくなってしまった。休みくらいはパソ コンに触るまいと思っているのに、ちょっと飲み会の席でトイレに行っている 間に、膨大な作業を私が行うことが取り決めれられていた。これでは、おちお ちトイレにも行けない。会議に無断欠席した者に面倒な仕事が振られるのは当 然の報いだが、トイレに行くのはそれとは訳が違うと思うのだが。そのとき決 められた作業をコツコツと仕上げるために、今年のゴールデンウィークの大半 は潰れてしまった。

酒の席、とりわけ酒代は払わなくて良いよなんて言われる席は危なくて仕方が ない。ただより高いものはないと言うが、その場では、何となく高くてうまい 日本酒などを飲んで、美味しい料理を食って、なぜか別れ際に「例の件をよろ しく」とか言われて、「はて、なんのことかな」と思いながら帰宅する。後日、 同席していた人に聞くと、とんでもない約束が調印されていたりする。


最近、久々にプログラムを書いている。文章を書いたり、書類を書いたり読ん だり、そんなことばかりしていると、どうも体調が優れなくなる。 パズルの問題を作るとか、パソコンを組み立てて遊ぶとか、 プログラミング言語の勉強をする、パソコンの勉強をするなど、 パソコン初心者らしいことをしていないと、体に異変が起きてしまう。

それで、ちょっとPerlのプログラムを久々に作り始めた。 Perlなので、プログラムといってもとても短くて、 10行、20行程度のPerl初心者らしいプログラム(スクリプトと呼ぶべきだな)を組んでいる。

この数年間は、Perlのプログラムをあまり作っていなかったので、 たいていの事は忘れてしまった。 それで、「初めてのPerl」とか、「Perlの国へようこそ 」などで調べながら 作っていたら、隣から変な顔で見られてしまった。

入門書を参考にしていると、すぐにバレてしまうので、対策を考えた。 Perlについての説明やら、実例はいくらでもインターネット上に転がっている。 それらを参考にしながら作っていれば、普段の作業と同じなので何もバレるこ とはない。それに何かちょっと特殊なアルゴリズムなどを探すには、 インターネットの方が検索エンジンもそろっていて便利である。

ということで、ある変換(年月日を与えて、基準の日からの日数を求める) を行う処理が必要になって、はてどうしたものか面倒だなと思い、さっそく インターネットで探した。年月日を与えて曜日を出すプログラムはたくさん 転がっていた。それをちょっと直して使おうかと思ったが、あまりよろしくな いのでちょろちょろ探していたら、かなりオーソドックスな方法で、うるう年 の調整をしているのが見つかったので、とりあえずそれを利用することにして、 作成中のPerlスクリプトの中にコピーして、合うように修正していたら、 使いにくいので捨てて、また別のを物色していた。

そういたら、今度はぴったしのが出てきた。言語はCだったが、まあちょっと 変形するだけでPerlのサブルーチンにできるということで、直して使うことにした。

	$leap = int($yy/4) - int($yy/100) + int($yy/400);
	$days = $yy*365 + $leap + $mm*28 + int((13*$mm+8)/5) +$dd - 399;
$yy,$mm,$dd は年月日(ただし1月2月は前の年の13月、14月とみなす)で、 $leapがうるう年の累積誤差で、2行目の方が累積日数らしい。

というのをやっていたら、これも隣にバレてしまった。困ったものだ。

上の計算のやり方、確か昔、今はなき計算機科学の雑誌bitに載っていたよう な気がする。それを、ちょっとアレンジして、マイコン雑誌のアセンブラの 懸賞問題に仕立て上げたのだが、(13*$mm+8)/5 の部分が難しかったらしい。

とまあ、このようにして、忘れれてしまったテクニックは、インターネットか ら拾ってきて、プログラムに突っ込んでは作り上げている。 この手法が使えるので、インターネットはとても便利である。

ところが、最初のプログラムをコピーして、良くないので捨てて、 あとのを修正して使ったことが隣にバレてしまった。 プログラムはこのようにして、効率よく、楽をして作ると、どんどん良いも のに変貌していくというのを、なかなか正しく伝えられなくて、困っている。 自分の頭は使わず、世界中の人の知恵を利用させてもらうのがなんたって一番。

なお、上記計算式が正しいかどうかは、初心者なので保証できない。 インターネットでは、使う人の自己責任。


ホームページ目次前の話次の話