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の世界を体験してみよう |
|
- プログラムの実行はどのようにして行われるのか、Linuxカーネルのコードから探る (2017/7/20)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。最終回は、Linuxカーネルの中では、プログラムの起動時にはどのような処理が行われているのかを探る - エンジニアならC言語プログラムの終わりに呼び出されるexit()の中身分かってますよね? (2017/7/13)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。今回は、プログラムの終わりに呼び出されるexit()の中身を探る - VBAにおけるFileDialog操作の基本&ドライブの空き容量、ファイルのサイズやタイムスタンプの取得方法 (2017/7/10)
指定したドライブの空き容量、ファイルのタイムスタンプや属性を取得する方法、FileDialog/エクスプローラー操作の基本を紹介します - さらば残業! 面倒くさいエクセル業務を楽にする「Excel VBA」とは (2017/7/6)
日頃発生する“面倒くさい業務”。簡単なプログラミングで効率化できる可能性がある。本稿では、業務で使うことが多い「Microsoft Excel」で使えるVBAを紹介する。※ショートカットキー、アクセスキーの解説あり
|
|