社長BLOG
プログラムでは時には設計をあきらめることも必要
- 2010-10-24 (日)
- 社長BLOG
プログラムの設計は、コンピューター上の世界や空間をデザインするというとてもクリエイティブな作業だ。
コンピューター上には制約やルールが少ないので、何パターンでも設計をすることができる。
これが良くもあり、悪く転ぶこともある。たいていはつくって、使っていくうちに当初の設計の不具合に気付き、設計を途中でどんどん変えていく。改善できればそれはそれでいいのだが、中には袋小路にはまってしまって、リカバリーがうまく行かないこともある。
自分の経験では、JavaMailにかなり苦労させられた。
OpenPNEの前身はPNEという転送メールのサービスで、当時学生だった自分はこの転送メールの処理をJavaMailでやろうと考えていたのだ。
JavaMailというのはJava上でメールを扱うためのライブラリなのだが、結論からいうと、この設計にかなり無理があった。
それまでJavaの設計は魔法使いのような人たちがやっているので、完璧なんだろうと思っていたが、そうじゃないこともあるんだとそのとき初めて感じた。
設計の対象である電子メールというものは、とにかく仕様がぐちゃぐちゃで、エレガントに扱おうとしても元々無理がある。ぐちゃぐちゃならぐちゃぐちゃのまま簡単に扱えるようにすればよかったのだが、それをがんばってJavaですべて設計してしまったところが、失敗だったと思う。結果として、メール処理関連だけで130個もクラスを作ってしまった。そもそものメールが複雑なので仕方ないにせよ、これはきつい。
どうすればよかったかというと、これといった結論は無いのだが、おそらくは、メール処理のコア部分にJavaを使わずに、Unixのネイティブプログラムやスクリプト言語などで、場当たり的なコードを書くべきだったと思う。