2009-07-13

_ (第1回)Zope/Plone開発勉強会とその他諸々

先週末、また参加してきました。 今回は、前回の成果を受けての開発だったので、基本的にはただ作ればいいだけでした。 前回から Testing.ZopeTestCase.ZopeTestCase をベースにしてunit testで実験してましたが、 これをもっとテストっぽくしながらの開発でした。

いくつか悩んだことがありました。構造的に、

  • Localizer のインスタンスはどっかに適当に置く。テストでは天辺の App オブジェクトの直下へ。
  • Localizer には複数の MessageCatalog を置くことができる。これらは一個一個が異なるメッセージ・ドメインを担当します。
  • MessageCatalogPersistentMapping を使って、メッセージと言語をキーにして、翻訳メッセージを保持します。

という具合です。

zope.i18n で定義されるインターフェースのうち、 今回重要なのは ITranslationDomain だけです。 これは zope.i18n のコードを読めばわかりました。 実際に定義されているのは、スキーマでは domain が担当するメッセージ・ドメインを示す必要があり、translate メソッドで翻訳メッセージを返せないといけません。

ということは、domain を持つ必要上、 Localizer が直接 ITranslationDomain をprovideするより、 MessageCatalog がprovideするのが自然、ということなります。

ここで困ったことに、MessageCatalog には既に translate というメソッドが、昔のZPTのAPIに従って実装されていて、名前が衝突してしまいます。 この問題については 清水川さん に相談していただいたりしたんですが、 結局、古い仕組みの GlobalTranslationService がサポートされているZopeだったら今まで通り、 なかったら ITranslationDomain に合わせるという、あんまり美しくない方法で逃げることにしました。

それ以外で微妙にハマったのは、

  • five.localsitemanager.make_objectmanager_site でSite Managerを作るだけでは不十分で、local utilityを機能させるには、zope.site.hooks.setSite を呼ばないといけない。local utilityは queryUtility で返ってくる時、なんとかWrapperに包まれてきて(正確な名前は忘れた)、path expansionが必要になって、relative pathしかわからないので、siteの位置を教えてあげないと辿れないとか、そういう問題だった。自分で書いていて、何を書いているかよくわからないけれど、とにかく setSite しないといけない。
  • namespaceの宣言で、XMLに xmlns:i18n=...とか書くけど、Page Templateは pt_render すると、namespaceの宣言をすっぱり引っこ抜いてしまう。だからテストの時は注意が必要。
  • 同様に、XMLの最後に改行があると、Page Templateは勝手に引っこ抜いてしまう。これもテストでは注意が必要。

それ以外はふつうにやれば、できました。 ちゃんと時間内に動くようになったので、前回よりは気持ちよかったです。 後は少しだけコードをきれいにして、パッチを送るだけです。

ところで、最近Python、Zopeネタで書籍がまた増えてます。

10日でおぼえる Python 入門教室

「10日でおぼえる Python 入門教室」は 寺田さん に献本していただきました。 ありがとうございました。 Pythonで長年現場で利用されている CMSコミュニケーションズ の人たちが書かれているだけあって、 内容がしっかりしてます。 この本のいいところは、例が学習用に無理やり捏造したようなものではなく、本当に実世界で意味のあるものが多いことです。 チュートリアル風の入門書なので、 「まともな例がないとイメージしにくい」「言語は何となくわかったけど練習するネタが思いつかない」という人に向いていると思います。

あえて悪い点をあげるなら、「言語マニア向きな内容ではない」「サイズが小さいようで大きい」といったあたりでしょうか。 このシリーズの特徴ではあるのでしょうが、 いっそのこともっと小さく(薄くって意味ではなく)すれば、持ち運びがきいて嬉しいんじゃないかなあと思いました。

Zope3入門篇—Zope3を使ったWebコンポーネント開発

「Zope3入門篇—Zope3を使ったWebコンポーネント開発」は、 Zope3の入門書の定番である いわゆるPhilikon本 の日本語訳(の上巻)です。 訳者は現在の所属を見るとわかりにくいかもしれませんが、 わかる人にはわかる、元Zope Japanの面子です。 Zopeのコミッタである、うちのyuseiもレビューに参加させてもらったので、 訳語が変とか、原文と意味が違うとか、そんな心配は一切必要ありません。

入門書として見ると、かなりハードな内容ですが、 コンポーネント技術を徹底的に解説しているので、 個人的には是非大学の講義なんかで取り上げていただきたいと思ってます。

[]

トップ «前の日記(2009-06-30) 最新