Pythonベース伝統的WebフレームワークZope2上のCMS Ploneの存在
アドベントカレンダー
昨年は、Plone.jpにてアドベントカレンダーをたかのりさん(@takanory)が中心になり回しました。今年は枠を広げて、「Python Web フレームワーク」関係のアドベントカレンダーを行いたいと思います。
技術系アドベントカレンダーは、12月1日から12月25日(諸説によると24日までともあるが)の25日間、1日1個ずつ tips 的な記事をBlogなどに掲載していく物です。
12月1日初回は私から回したいと思います。トップバッターと言うことですので、Python界隈では最近語られることの少なくなった、WebフレームワークZope上に出来ているPloneを紹介します。
Ploneの紹介
DjangoやTurboGearsなどの最近はやりの軽量フレームワークがメジャーになるまでは、Pythonのフレームワークと言えばZopeのことが語られてきました。しかしZopeは重厚なフレームワークであると言えます。パブリッシャーの内蔵やデータベースの内蔵など、独自の文化で成り立っている面もあり、Zopeを使うというのに敷居があり、さらに難しいと言われています。
そのZopeの魅力をもっと伝えたいという事から始まった、エンタープライズ指向CMSの構築という物の結果がPloneという完成されたオープンソースCMSです。
Ploneは、もちろんPythonで書かれています。Zope2やCMFへの依存も大きくそれ無しでは成り立たない物です。ただ、最近のPloneは「Powered by Plone & Python」書かれるケースが多くなっています。
Ploneの機能
エンタープライズ指向CMSという事ですので、基本的なCMSの仕組みは備わっています。多くの機会で紹介されている機能としては、下記が上げられます。
- コンテンツ作成・更新に専門知識を必要としない (WYSIWYGエディタの 内蔵)
- コンテンツごと、部署ごとに公開承認のフローを設けることが可能
- ユーザ認証・アクセス管理が充実しており、既存ディレクトリサービスと の連携が可能
- 公開日時、終了日時の設定 ?日英など多言語化に対応
- コンテンツの版管理、履歴管理
- リアルタイム検索エンジンを内蔵
- PDFなどファイルや画像を一元管理
- アクセシビリティ(JIS X8341)への対応が可能
これら以外にも、たくさんの機能やプラグインが存在していて、何かを開発すると言うよりはそのまま使える物になっています。
Ploneの使用例
様々な用途に向くPloneですが、特に下記に様なサイトで使用されています。
- 大学・公共機関の公式公開サイト
- 部署単位の公開サイト
- ある程度のコンテンツを持つ企業サイト
- イントラネット内の文書管理サイト
- その他
一つの特徴である、ユーザ認証機能などを使った企業サイトにてサポートをユーザ権限に応じて行う事例もあります。また検索機能はユーザ権限毎にその権限にマッチした結果を返してくれますので、イントラネットでは非常に便利な機能となっています。
私の提供しているOSSプロダクト
これだけですと、いつも読んで頂いている方に申し訳ないので、私が2009年頃から積極的にオープンソースソフトウェア(OSS)にしているプロダクトを紹介します。
- Products.BigramSplitter (Plone3用に日本語検索を行えるプロダクト(Plone4には同じ機能が入っています)
- c2.patch.plone3mail (Plone3用に日本語メールが文字化けやエラーなどを防止するプロダクト、さらにISO-2022-JPメールに対応(Plone4に対応させていません))
- c2.transform.msoffice (MS-Word, MS-Excelなどのファイル内を検索対象にするプロダクト、内部でJavaを使用しています)
- c2.app.shorturl (長くなりがちのPloneのURLの短縮版も作る物)
- c2.patch.filenamenormalizer (日本語のファイル名をダウンロードする際に)
- c2.patch.dateforlisting (期限前のコンテンツがリスティングされない仕様的バグの解消)
- c2.patch.contentslist (コンテンツの内部管理上のリストを逆に表示して見せる物)
- c2.patch.atrefs (ATRefs関連のセキュリティバグを解消した開発用ツール)
多くの物が、αやβのままにしていますが、他の皆さんからのバグレポートや使用実績を元に正式リリースにしたいといつも思っています。しかし、それらの連絡を頂けるケースが少ないので、そのままとなっているケースが多いのが現状です。
使って問題ないよとかここに問題があったなどの簡単な連絡を頂けるとうれしく思います。
なお、全てPython Package Index(PyPI)に置いてあります。
最後に
短く書くことを心がけましたが、どうしても言いたいことが多くなってしまいました。(失礼しました)
次は、最近Python mini hack a thonなどでご一緒する機会の多く各種フレームワークに詳しい、@aodag さん にお願いしたいと思います。