DBIx::ObjectMapperという、PoEAA(Patterns of Enterprise Application Architecture, エンタープライズアプリケーションアーキテクチャパターン)のthe Data Mapper pattern(データマッパーパターン)に則った新手のO/Rマッパーに興味を惹かれました。その一因は、現在進行形で開発しているAmikecoに於いて、the Active Record pattern(アクティブレコードパターン)指向であるDBIx::Classを用いて、ドメインモデルの細かな機微をどこまで表現するか悩んでいることにあります。
本稿では、現在の悩みの詳細、つまりDBIx::Classでテーブル継承系パターンを強引に実現している現状をご紹介しつつ、DBIx::ObjectMapperへ期待を抱くに至った経緯を簡単に記してみます。
追記 : tokuhiromさんに素晴らしいご指摘をいただきました! 本稿でSingle Table Inheritanceを実現できないと嘆いていたのは、Active Recordであることそれ自体が原因ではありません。パターンとモジュールをやや混同して書いてしまいましたので、お詫びします。また、その記事では、DBIx::ClassでもSingle Table Inheritanceを実現していたとのご紹介をいただいているので、(本文中にも弁解を書いていたように(弱気だなぁ))DBIx::Classの実装というよりも、私の使い方が今ひとつであることが原因のようです。愚直に書いただけでパターンを実現できない現状について、何が直接の原因となっているのかということを、落ち着いて・突き詰めてよく考えるべきであることを悟りました。拙い論考に対して鮮やかな反証をご提示いただいて、感激しています。本当にどうもありがとうございました!
追記 : nekokakさんやeiskeoishiさんたちの会話は、示唆に富んでいます。要件や現実世界が複雑だからといって、脊椎反射して腕まくりしてホイホイとモデリングをがっつりやるのは、多くの場合は再考の余地がある働き方だと感じます。いかに無理・無駄を省いてシンプルなものにしていくか、勉強を深めて参りたいです。


最近のコメント