「実践J2EEシステムデザイン」を読みました
「実践J2EEシステムデザイン(原題: Expert One-on-One J2EE Design and Development)」を読みました。
作者のロッド・ジョンソンのサイトはこちらです。 http://blog.springframework.com/rod/ blogは続かなかったようです。 # この本を書いた時、ロッド・ジョンソンは32歳。凄いですね。
素晴らしい本で、Javaファンになってしまいました。
本を読んだら、WebフレームワークのMVCモデルについて語りたくなりました。いつか勉強会のネタにします。題して、「Spring vs. Struts vs. RoR(Ruby on Rails)、Webフレームワーク対決」です。これらは皆MVCをうたっていながら、用語に微妙な差があります。例えば、SpringのModelとRoRのModelの指す範囲はかなり違うと感じました。SpringのModelの方が限定(分離)されています。RoRのModelは、Springで言うEntity Beanまで含みそうなほど広く使っています(Springは、Model層をEntity Bean層から強く引き離すことを主張しています)。RoRに関しては、Software Designの特集を読んだだけの知識なので、話半分で聞いてください。
全体的にSpringはソフトウェアの構造をレイヤ的に疎結合にする志向が強く、ぼくの好みに合います。
Entity(知らない人は、とりあえず、RDBなどの抽象化層と思ってください)の話を続けます。世の中にはO/Rマッピングという技術があります。O/Rマッピングを最初に聞いた時から、ずっと微妙な違和感を感じていました。ただ、その違和感をうまく言語化できませんでした。この本で、ようやく長年の違和感をうまく言語化できました。 269ページの次の記述です。 「O/Rマッピングソリューションは一般に、リレーショナルデータベースの目的が個々の行や列を操作することであると前提しています。しかし、これは誤りです。リレーショナルデータベースが操作を最も得意とするのは、一連のタプルです。」
RDBは、永続化機能を持ったコレクション + 高速なインデクサ、としても使えるのは事実ですが、この特徴とRDB特有の特徴(上で言うタプル操作(演算))は直交しているのではとずっと思っていたのですが、あながち変でも無かったようです。
ロッド・ジョンソンがO/Rマッピングを否定していないのと同様、ぼくもO/Rマッピングを否定しているわけではありません。
ブログでも日常会話でも、ぼくは特定の技術を否定や批判するように見えることがありますが、多くの場合、批判している対象は、その特定の技術ではなく、その技術への無理解や無批判な態度の方です。
- 素晴らしい技術 + その技術をあまり良く理解していない開発者、の組み合わせ
- 問題があったり洗練されていない技術 + その技術を熟知している開発者、の組み合わせ
このふたつの組み合わせがあれば、ぼくは後者が圧倒的に良いと思っています。
- Category(s)
- カテゴリなし
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/inoue/expert-j2ee/tbping
Re:「実践J2EEシステムデザイン」を読みました
さて、「Spring vs. Struts vs. RoR Webフレームワーク対決」楽しみに待っております。
MVC初心者の私が、Webフレームワークというか、Webアーキテクチャパターンというかの学習を進める中で困惑したのは、オブジェクト指向のマナーとしてのMVCとWebシステムでのMVCが、実態の異なる側面の説明なしに、同じMVCというワードで表現されていることでした。
Webの場合の「C」から「V」へ渡される「M」は活き活きとしたオブジェクトではない単なるデータの格納オブジェクトだったり、あるいは「M」はそもそもドメインモデルを隠蔽したビジネスロジックも含んだModel層を指していたり。
純粋な論理的な設計上の工夫と、Webという仕組みを前提とした実装上の工夫を統合した真に実践的な理論展開を期待しています。
あたかも、斬新かつシンプルな意匠設計と頑健かつ経済性にも優れた構造設計の建築物のような。