RSS

GenericSetupを使う

GenericSetupを使ったPloneのプロダクト作成をがんばる。

GenericSetup(GS)はPloneのセットアップをPythonのコードで行うのではなく、xmlで設定を行うための仕組み。skinの設定、Toolのインストール、Typeの登録、その他もろもろを一切pythonのコードを書くことなく実行する。設定を設定専用ファイルに分離したということでいいのかな。

現在ProductのExtension/Install.pyにごちゃごちゃとpythonのコードが書かれていて見通しが悪くなっている。それをGenericSetupにしてしまえば目的別のxmlファイルとなって一気にきれになる。QuickInstllerでもインストールできるが、GenericSetupに投げるだけのコードになっている。しかしわずか数行でおしまい。人によっていろいろと違う書き方がしてあってやなもんでしたが、これである意味標準化される。

思想としてMVCの一環かなという気がしないでもない。Content Typeの扱いなんかそう。今はArchetypesを使ってかなりテンプレート化した書き方が可能となっているけど、modelとcontrollerが入り混った感もある。pythonのクラスはODBにつっこむだけのデータだけと思えば、actionなんてものは外から与えるべきではないのか、という考え方は正しいと思う。modelとしてのclass、actionはGSから与える。メタデータもContent Typeにもともとあるわけではない、Ploneの側で必要だからメタデータ、だからGSで与える。確かにそうだ。

Zope3の考え方に従えば自然かなと。当然Viewをなんとかしろって話になるんだが、Zope3ならZCMLにadapterを定義してviewを定めるという方向なのかな。そこまではやってない。

ATAmazonが2.5で動かないので、直すついでに導入しようとしている。ごちゃごちゃと少しだけコードは書いたが、努力の過程はまた後日書く。