もっと知りたいPython

第3回WebフレームワークTurboGears, Django, Pylons

LLベースのWeb開発フレームワークは、Ruby on Railsをきっかけに大きく認知を広げました。PythonとWeb開発の歴史はとても長く、実に成熟しています。前回紹介したPloneのベースになっているZopeは著名なLLベースのWebフレームワークのひとつです。当時Boboと呼ばれていたZopeの開発が始まったのは1996年のことでした。10年以上前に、すでにオブジェクト指向Web開発を実践していたPythonistaの有能さには本当にびっくりさせられます。

Python製Webフレームワークの新時代

Zope以外にも、Pythonには多くのWeb開発用のフレームワークが存在します。どのフレームワークも素晴らしいのですが、Zopeの存在が大きすぎたせいか、多くの開発者の支持を得ることはできなかったようです。

Zopeを筆頭にいくつものフレームワークが群雄割拠していた状況も、数年前から変わりつつあります。いくつかのフレームワークが、Zopeの人気をしのぐ勢いで開発者の注目を集め始めたのです。今回は、人気のあるPython製フレームワークのうち3つを取り上げ、紹介したいと思います。

どのフレームワークも、Webアプリケーションを作るために必要な機能を備えたフルスタックのフレームワークです。インストールやセットアップが簡単なのも特徴です。Pythonの基本を知った方なら、気軽に試せます。

TurboGears

TurboGearsは2005年から開発が始まりました。AjaxやWebサービスといった今日的なWeb技術を手軽に体験できる意欲的なフレームワークです。⁠メガフレームワーク」を標榜し、実績のある既存のライブラリをフレームワークを構成する部品として活用しています。TurboGearsは、ライブラリ間の結びつきを強める役割を主に担っています。また、O/Rマッパー、テンプレートエンジンなど一部の部品は置き換え可能で、必要に応じて部品を取り替えることができます。このような形式のWebフレームワークが現れることを見ても、Pythonの言語としての層の厚さが見て取れます。

TurboGearsのノリの良さ、開発効率の高さを実感するには、20分で作るWiki(20 Minute Wiki)という動画を見ると良いでしょう。また、日本語の情報が必要な方は、技術評論社から出版されている拙著「TurboGears×Python」や、共著「最新Pythonエクスプローラ」をぜひお読みください。

Django

Djangoはもともとニュースサイトを運営するために作成された内製のWebフレームワークでした。TurboGearsと違い、多くの部分がフロムスクラッチで作られています。2005年にオープンソース化され、完成度の高さなどから注目を集めるようになりました。ニュースサイトという高負荷な動的生成サイトをドライブしているフレームワークである、ということも注目を集めた理由のひとつのようです。Java製のSNSをDjangoでリプレースしたら、サーバ機が4分の1で済んだという事例があることからも、高負荷対応というTurboGearsとは少々異なったDjangoの特徴と指向性が見て取れます。

Djangoのもう1つの特徴は、CRUDフォーム生成の手軽さです。データベースとの接続を制御するO/Rマッパーの定義にCRUDフォームを制御するための情報を埋め込むだけで、adminと呼ばれる綺麗なデータ編集用のフォームがほぼ自動で生成できるのです。Djangoのコア開発陣はRailsの開発陣とともに開発イベントを行うくらい仲が良いのですが、Railsを使っている開発者は、DjangoのCRUD自動生成を決まって羨むようです。

ただし、CRUDフォームが自動で生成される反面、カスタマイズ性が低いのも事実のようです。今後newformsという、より柔軟なフォーム生成の仕組を取り込む計画のようです。

日本語の情報が豊富なのもDjangoの大きな特徴です。ドキュメントはほとんど日本語訳されていますし、国内のコミュニティが定期的に勉強会を開催しています。

Pylons

Pylonsは今回紹介するフレームワークの中では一番新しく、2006年から開発が始まりました。TurboGearsと同様に、既存のライブラリを組み合わせて、結びつきを強める形で形成されているフレームワークです。TurboGearsよりも、さらに先進的な機能を備えています。

Pylonsの特徴はフレームワークの「柔軟性」です。TurboGearsも複数のテンプレートエンジンなどを切り替えて利用できますが、TurboGearsはMVCのC(コントローラ)CherryPyというWebアプリケーションサーバに依存しているため、この部分の柔軟性に欠けます。Pylonsではリクエストディスパッチャが置き換え可能で、コントローラに相当する部分も置き換えられます。

また、Pylonsは最も早くWSGIに対応したフレームワークでもあります。WSGIとは、WebサーバとPython製のアプリケーションの通信方法の標準を定めた仕様です。WSGIはPythonのWeb開発でトレンドになる仕様です。

フレキシビリティがあり、PythonのWeb開発標準仕様をいち早く取り入れたPylonsは一部で最も将来性のあるフレームワークと目されています。TurboGearsの次期バージョンでは、Pylonsとの統合を目指すことがアナウンスされています。いち早くPythonのWeb開発の先端を覗いてみたい方は、ぜひPylonsを使ってみてください。

次回は、2007年8月末に最初のαバージョンがリリースされたPythonの次期バージョン3.0について紹介したいと思います。

おすすめ記事

記事・ニュース一覧