Objective::DBI(仮)

改めて。DBIとはPerlからDBMSに接続するための共通のインターフェースを提供しているモジュールだ。あくまでインターフェースだから、それだけで動くことはない。DBDという別モジュールが、実際の接続を担当している。これはとても便利だし、PerlからDBに接続する場合には避けて通れない道となっている。
だが、不便でもある。というのも、DBに接続して処理をするときにSQLという、データベースを扱う言語が必要となる。これをPerlスクリプト中に描く必要があり、それはPerlスクリプトではない。print "";みたいなのだ。
別の言葉で言うならば、読みにくいのだ。PerlならPerlSQLならSQL、HTMLならHTML。それを一箇所に書くこと自体に問題があると考える。少なくとも、それぞれがある種のインターフェースを提供し、そこを介してのデータのやり取りである方がいい。そのための方法として、例えばHTMLを扱うために、それをそのままではなくてテンプレートを用いたりする。
SQLの場合も同じで、そのためにDBIにラッパーをかませたもの。すなわち例えばClass::DBIがあるわけだ。Objective::DBI(仮)もその位置にある。では、Objetive::DBIの存在意義はなんなのだろうか。こんなことを考えたのは、車輪の再開発ではないかと指摘されたからだ。確かに、本のわずかな労力の削減では、そこまで価値があるとは思えない。逆に、Class::DBIの持つたくさんの機能を付加するために、多量の労力が必要になるのではないだろうか。
その答えとして、やはりClass::DBIが一番不得意としている、Tableのjoinに対する機能を付加したいと思う。現在のClass::DBIだと、has_aやhas_manyといった機能が存在しているのは事実だが、やはりleft joinやright joinといったものを複数用いるような複雑な結合時には、自分でSQLを書かなくてはならない。
出来ることなら、全くSQLを書かずに済ませたい。そして、それでいてある程度の速度を維持したい。それをこのObject::DBI開発における、一つの目標にしたいと思う。
決意表明、終わり。