書き直そうかどうかと悩んでいたプログラムであるが、この度めでたくバージョン2の完成に向けて開発が開始された。といっても別にチームで開発しているわけじゃないから、自分で決めて、自分で書き直しはじめたというそれだけのことなんだけど。まあ、たまには大げさにいいたくなることもあります。
今回の書き直しにおける目標は、オブジェクト指向で書いてみること。できる限り処理をクラス内に押し込んでしまって、メインのCGIは可能なかぎり簡素にしてみるつもり。そう、廃棄されたバージョン1ではオブジェクト指向は導入していなかった。関数指向スタイルで書いてきたのだ。
ここでオブジェクト指向を導入したのはなぜかというと、今やっているものがオブジェクト指向なら断然見通しがよくなるから、というわけではなくて、単純にいえば名前空間かな。オブジェクト指向のいいところは、名前空間を意識しやすいところにあるのだと思う。変数やなんかはメンバー変数をうまく使ってやると散らばらず管理しやすく思えるし、変数に直接アクセスするのではなく、セッターやゲッターを使ってやれば処理に対して意識的にあれるかなと。まあ、セッター、ゲッターを使うとわかりやすくなるという理屈でもないのだけど、できるだけ具体的な名前を付けてやることで、そこでなにをしようとしているかだけでもわかりやすくなればもうけものだ。
オブジェクト指向はJavaでちょこっとやったので、そういうつもりで書き始めてみたら、まあPerlのオブジェクト指向プログラミングのわかりにくいことったらないね。でもまあ、インスタンス変数が使えることには変わりないわけだから、このへんの便利さは変わらないと思う。とかいってるけど、これ連想配列を使うなどして、関数指向で書いてもあんまり変わらんのだよなあ。とかいう風に書いてる時点でおわかりと思うが、つまり私はオブジェクト指向の利点をよく理解していない。
なので、関数指向で書いてきたものを一発オブジェクト指向的に書き直してみて、思考の整理とオブジェクト指向的考え方への接近を試みようというのも今回の目的のひとつである。この試みがうまくいったらば、私にとってのちょっとした前進となることだろう。でもまあ、この試みが失敗したとしても、バージョン3に着手すればいいだけの話で、だからまずはなんでもチャレンジしてみようかと思ったわけさ。