April 21, 2009

Zope 3について

Zope 3の特長はコンポーネントアーキテクチャです。

コンポーネントアーキテクチャのキーワードは、『インターフェイス』と『アダプタ』です。

『アダプタ』とは、GoFのデザインパターンの中のAdapter Patternのアダプタです。

アダプタの役割はインターフェイスの変換です。

コンポーネントアーキテクチャでは、ほとんど全ての要素はインターフェイスを持ちます。

例えば、Zope3におけるMVCアーキテクチャのModelは、○○の属性を保持する、といったインターフェイスを持ちます。

Viewは、このModelのインターフェイスをHTML出力という別インターフェイスに変換するアダプタとして実装されます。

ここでポイントなのは、ViewがModelそのものではなくて、Modelが提供する(であろう)インターフェイスに対して実装される、ということです。

Viewが参照しているのがあくまでインターフェイスなので、Modelの中身が変更されてもViewが影響を受けることはありません。

また、異なる実装を持つModelであっても、同じインターフェイスを提供していれば、既存のViewを適用することができます。

おそらく、優れたソフトウェア設計者であれば自然と身につけているであろう設計方針を、Zope 3ではフレームワークとしてサポート(ある意味では強制)している訳です。

この方針の問題点は、学習コストが高いことです。
Zope 3では、学習を始めたばかりの開発者に対しても、インターフェイスやアダプタ、といった抽象的な概念を隠すことはしません。

ブログのエントリ内容をブラウザに表示する、というだけのことをやるにしても、
・ブログエントリの持つインターフェイスの定義の仕方
・ブログエントリを表すクラスの実装の仕方
・ブログエントリのインターフェイスをHTMLに変換するViewアダプタの実装の仕方
(・Viewアダプタが用いるテンプレートの書式)
・上記の要素を結びつける設定ファイル(XML形式)の書き方
と、うんざりするほど多くのことを学ばなくてはなりません。

matssaku at 22:00│Comments(0)TrackBack(0)clip!Zope | Python

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔