第1回 Zope 3の魅力に迫る

田原 悠西

2008/8/13

Pythonで作られたWebアプリケーションフレームワークのZope 3とは何か。設計思想から実際の運用ノウハウまでを解説する(編集部)

 Zope 3は、プログラミング言語Pythonで書かれたWebアプリケーションフレームワークです。1998年にオープンソース化され、現在も開発が続けられているZope 2の後継として、完全な再設計の上で2001年から開発されています。2004年に最初のバージョン3.0がリリースされ、間もなく3.4がリリースされる予定です。

 Zopeを使って作られたアプリケーションでは、オープンソースCMSのPloneが有名です。PloneはZope 2上で動くアプリケーションですが、Zope 2にバックポートされたZope 3の機能を積極的に使って作られています。

 また、Zope 3で作られたアプリケーションとして広く使われているものに、GNU/LinuxディストリビューションのUbuntuの開発に使われているLaunchpadがあります。Launchpadはバグ管理、ソースコード管理、翻訳、プロジェクト管理などの機能を提供するWebサイトで、UbuntuやZopeなどさまざまなフリーソフトウェアのプロジェクトに利用されています。

Zopeフレームワークの変遷

 Zopeがオープンソースソフトウェアとして公開されてから約10年、Zope 3に至るまでの道のりを紹介したいと思います。

 元々のZopeはPythonで作られたソフトウェアでしたが、Pythonプログラマのためのフレームワークではありませんでした。どちらかというと、プログラマでない人のためのWebアプリケーション開発用のWebアプリケーションサーバでした。

 Zope自身はPythonで作られていましたが、Zopeで動くアプリケーションの開発には、Pythonではなく、DTMLというテンプレート言語が主に使われていました。

 当時はZopeのアプリケーション開発手法がまだ確立されていなかったため、Zopeユーザーはそれぞれ思い思いのやり方でアプリケーションを作っていました。しかし、だんだんとWebアプリケーションが複雑になり始め、開発がうまくいかなくなってきました。

 そこで2001年に登場したのが、CMF(Content Management Framework)というフレームワークです。これはMVCの設計モデルやワークフロー機能などを備えたZopeにとって非常に画期的な初めての公式フレームワークでした。

 CMFでは、Pythonプログラミングがアプリケーション開発の中心に据えられました。Webアプリケーションの複雑さが増してくることで、ZopeはZope上のアプリケーション開発でもPythonを必要とするようになっていきます。結局、本当に複雑な問題に取り組むには強力なプログラミング言語の力が必要になってくるからです。

 CMFの非常に優れた設計のおかげで、複雑なアプリケーションの開発が容易になり、Ploneなどの大型アプリケーションが登場することになりました。

 しかし、CMFをどんどん活用していった結果、新たな問題が見えてきました。それは、Zopeのコア機能の使い勝手の悪さです。多重継承の弊害や統一されていないZope内部のAPIなど、古い設計やフレームワークとして作られていないことなどが問題になってきました。

 そこでZope自体の見直しを図ることになり、Zope 2やCMFの設計思想を基に、Zopeを使ったアプリケーション開発の経験、最新のソフトウェア技術を導入した新しい設計のZopeとなるZope 3が作られました。Zope 3は初めからPythonのフレームワークとして使うことを前提に開発され、Pythonと親和性の高いものになるように作られています。

 Zope 3はリリース後にも、さらにリファクタリングを進め、現在は当初よりもシンプルな設計になっています。

ほかのソフトウェアと何が違うのか?

 Zope 3のユニークな特徴は主に3つあります。

 1つ目はオブジェクトデータベースを利用したオブジェクト指向フレームワークであることです。アプリケーション内部でデータを表現しているPythonのオブジェクトをそのまま保存できるので、わざわざデータを外部のデータベースにマッピングする必要がありません。また、Pythonの動的型付け言語としての柔軟さのおかげで、保存するデータの項目数や種類の追加変更が簡単にできます。

 2つ目の特徴は、Zope 3で導入されたZope Component Architectureというコンポーネント指向フレームワークです。アプリケーションをたくさんの独立した小さな部品の集まりとして扱えるので、拡張しやすく、テストコードを書きやすい、再利用しやすいといったメリットがあります。zope.orgのレポジトリには数百ものコンポーネントZPL(Zopeのオープンソースライセンス)で公開されています。

 3つ目の特徴は、Webアプリケーションフレームワークとしては比較的長い歴史のあるソフトウェアであることです。Zope 3自身は2001年から始まったプロジェクトで、フルスクラッチから設計実装されたものですが、基盤になる技術はZope 2としてプロダクション環境で長く使われており、とても安定しています。

Zope 3の魅力に迫る

 Zope 3の魅力であり、Zope 3を使ったアプリケーション開発の最大のメリットは、上に挙げたZope Component Architectureを利用できることです。現在のWebアプリケーションには非常に多くの機能が求められており、いかに複雑化に対応し、拡張性が高く、かつ保守しやすいソフトウェアを開発するかがとても重要な問題になっています。

 Zope Component Architectureはこの問題を解決するためにZope開発者たちが何年もかけて設計した非常に優れたフレームワークです。すでにさまざまなプロダクション環境で広く使われ、成功しています。

 本当に複雑なアプリケーションを開発するときに、Zope 3はとても役に立ちます。

 また、コンポーネント指向フレームワークとなったことによる利点として、従来のZope 2に比べて、Zopeアプリケーション、Pythonアプリケーション間のモジュールの再利用性が高まったことが挙げられます。部品化が進んだことで、コンポーネントを相互に利用しやすくなり、PythonやZopeの開発コミュニティの開発力を有効活用しやすくなりました。

 例えば、svn.zope.orgの開発レポジトリには複数のZope 3アプリケーション由来のパッケージがいくつも登録されていて、それぞれ別のZope 3アプリケーションから簡単に利用できるようになっています。

 
1/3

Index
Zope 3の魅力に迫る
Page1
Zopeフレームワークの変遷
ほかのソフトウェアと何が違うのか?
Zope 3の魅力に迫る
  Page2
GrokでZope 3を使う
Zope 3/Grokの環境設定とインストール
  Page3
grokprojectでアプリケーション開発環境をセットアップ
サーバの起動と終了

Zope 3とは何ぞや?

 Coding Edgeお勧め記事
いまさらアルゴリズムを学ぶ意味
コーディングに役立つ! アルゴリズムの基本(1)
 コンピュータに「3の倍数と3の付く数字」を判断させるにはどうしたらいいか。発想力を鍛えよう
Zope 3の魅力に迫る
Zope 3とは何ぞや?(1)
 Pythonで書かれたWebアプリケーションフレームワーク「Zope 3」。ほかのソフトウェアとは一体何が違っているのか?
貧弱環境プログラミングのススメ
柴田 淳のコーディング天国
 高性能なIT機器に囲まれた環境でコンピュータの動作原理に触れることは可能だろうか。貧弱なPC上にビットマップの直線をどうやって引く?
Haskellプログラミングの楽しみ方
のんびりHaskell(1)
 関数型言語に分類されるHaskell。C言語などの手続き型言語とまったく異なるプログラミングの世界に踏み出してみよう
ちょっと変わったLisp入門
Gaucheでメタプログラミング(1)
 Lispの一種であるScheme。いくつかある処理系の中でも気軽にスクリプトを書けるGaucheでLispの世界を体験してみよう
  Coding Edgeフォーラムフィード  2.01.00.91


Coding Edge フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

>

Coding Edge 記事ランキング

本日 月間