Plone Conference 2010参加レポート

Plone Conference 2010 Day 2

この記事を読むのに必要な時間:およそ 9 分

Plone Conference 2010,2日目のレポートをお届けします。当日は,時差ボケの影響できちんと朝早く起きられたため,昨日と同じ会場で昨日と同じ朝食を食べて,朝からたくさんのセッションを聞きました。

朝食のベーコンサンドとミルクティー

朝食のベーコンサンドとミルクティー

From copy to paster: A middle-class Plone developer tale

スピーカーのErico Andrei氏はSimples Coslutoriaというコンサルティング会社の共同創業者であり,Plone Cono Surという南米のユーザーグループの中心的メンバーでもあります。このセッションでは,自分が6年間Plone関連で開発をしてきて,どのように手法が変わっていったのかが説明されました。

Erico Andrei氏

Erico Andrei氏

もともとはマーケティング関連の仕事をしていたそうですが,2004年に開発者に転身し100以上のプロジェクトに関わってきたとのことです(手がけたプロジェクトの中にbrasil.gov.brという,おそらく政府系のものもあるとのこと)⁠当然たくさんの失敗もしてきたので,そのあたりも踏まえて話が進められました。

開発の話では,Plone 2.5以前の時代はコードをコピーしてペーストしてプロダクトを作成していたがそれで問題がなかったし,その方法が最も効率的だったそうです。しかしPlone 3になって開発手法が大きく変わりました。Erico Andrei氏たちはそのことを「Harry Aspeliのせいだ」と彼を避難していました(これは昨日のセッションでも発表をしていた開発の中心人物Martin Aspeli氏をハリー・ポッターになぞらえて言っています。ひどい(笑)ですね)⁠

We blamed “Harry Aspeli”

We blame

しかし実際に悪いのは意義のある変革を理解していない自分たちであって,Martin Aspeli氏や他の人が悪いわけではないと気づいたそうです。幸いPlone 3関連の書籍がPackt Publishing からたくさん出版されていました。その後勉強をしなおしてPloneコミュニティに参加し,開発で貢献するようになったそうです。例としては,他の人が作成したCMFContentPanelsというプロダクトを使用したいが,Plone 2.5でしか動作しないためPlone 3で動作するように修正したProducts.CMFContentPanelsを作成したことを挙げていました。

現在はbeyondskins.*とsc.*という名前空間でプロダクトを多数作成しているそうです。たしかにPython Package Index : PyPIsc.で検索すると多数のプロダクトが表示されます。また,開発のベースとして自身のパッケージsc.dev.coreを使用しているそうです。

今後の予定としてはプロダクトのPlone 4対応を進めていきたいということと,Diazo(旧xdv)を使用したテーマの書き換えにも挑戦していくとのことでした。

Plone 2.5からPlone 3で開発手法が大きく変更になり大変だったという話は,筆者もとても同意できる話しでした。乗り越えるためには,やっぱり勉強するという地道な努力しかないんだなと再認識しました。

The State of Plone Caching

このセッションではPloneのコンテンツを素早く返すためのキャッシュについての現状を説明するものでした。Ricardo Newbery氏はplone.app.cachingのリリースマネージャーです。

Ricardo Newbery氏

Ricardo Newbery氏

はじめに,このあと説明するCacheFuとplone.app.cachingはPloneのキャッシュに必須ではありませんと話しました。あくまでキャッシュの設定を簡単にするためのツールです。

CacheFu

CacheFuは2006年に最初のリリースがされました。キャッシュに関する4つのプロダクトをまとめたパッケージです。この発表の日か次の日にはPlone 4で動作するバージョンをリリースするとのことでした(実際にリリースされたのか未確認ですが)⁠Plone 2.5からPlone 4.0 で動作しており,Plone 4.0上で動作しているCacheFuのデモが行われました。

plone.app.caching

plone.app.cachingはPlone 4に対応したもう一つのキャッシュ設定プロダクトです。Plone 4.1に同梱予定です(PLIP#11065)⁠キャッシュのルールはzcml(XMLの設定ファイル)やGeneric SetupのXMLに記述して使用します。設定画面はplone.cachingプロダクトで提供するそうです。Zopeのeventにも対応しているとのこと。

IPubAflerTraversal, IPubBeforeCommit, IPubBeforeStreamingのようにインターフェースを使用してキャッシュの制御を行う仕組みのため,CacheFuのように既存コードへの影響が少なくよさそうな印象を受けました。

キャッシュ構成

キャッシュ構成は,Plone側ではキャッシュせず,プロキシとブラウザでのキャッシュの使用をすすめていました。キャッシュの強さとして,3つのレベルがHTTPヘッダの例付きで示されました。

合成ビューと分割ビュー

このセッションでは,ポートレットなど動的な部品も含んだ表示のことを合成ビュー,ページを構成するそれぞれの部品ごとのことを分割ビューと呼び,分割ビューの場合はESIEdge Side Includesという仕組みを使用してキャッシュを行うことを想定されていることが語られました。そして,それぞれのビューが持つ特性に合わせたキャッシュ方法が提示されました。

キャッシュ・プロキシ

キャッシュができるプロキシとして,以下が紹介されていました。

また,plone.recipe.squidplone.recipe.varnishというbuildout用のレシピが用意されているため,とりあえずプロキシでのキャッシュを行うにはこのレシピの使用が勧められていました。ただし,レシピを使用すると小回りが効かないので注意が必要とのこと。

診断ツール

キャッシュ用のヘッダ情報がきちんとついているか確認するためのツールとして,FirefoxのLive HTTP Headersなどが紹介されました。実際のキャッシュヘッダーの例を示しながら説明されました。

テスト

最後に実行速度を試験するためのツールがいくつか紹介されました。それぞれ対応する範囲などが違うため用途に応じた使い分けが必要です。

質疑応答では「SquidとVarnishのどちらがおすすめか?」という質問があり,回答は「Varnishのバージョン2がおすすめ」とのことでした。

Plone 4はPlone 3に対してパフォーマンスがよくなっていますが,キャッシュをうまく使用することにより,より速く応答を返すことができるようになります。plone.app.cachingとVarnish,そしてVarnish用のレシピを使用した環境をPlone 4サイトを構築してみたいと思います。

著者プロフィール

鈴木たかのり(すずきたかのり)

BeProud 所属。

部内のサイトを作るためにZope/Ploneと出会い,その後必要にかられてPythonを使い始める。最近miniじゃなくなりつつあるPython mini Hack-a-thonの主催者の一人でもある。

趣味は吹奏楽とレゴとペンシルパズル。2012年の目標は9月にオープンするマレーシアのレゴランドに行くこと。写真はうちのフェレットくろちゃんとくりちゃんです。

Twitter: @takanory
ブログ: http://takanory.net/takalog/

コメント

コメントの記入