2013.04.13
PythonのWebフレームワーク6種をかんたんに紹介
1月に「Pythonを始めるなら、1ファイルの軽量Webフレームワーク「Bottle」がおすすめ」というのを書いたところ、なかなか反響が大きかった。そこで今回は、私がいくらか使ったことがあるPythonのWebフレームワーク6種について、かんたんに紹介するというのをやってみたい。コメントは、私のごく主観的な印象に基づいている。

Bottle(ボトル)
http://bottlepy.org/

「bottle.py」という1ファイルだけでできている。環境構築が不要なので、Python入門に最適。1ファイルに全部入っているので、組み込むのも容易だし、依存リスクもないので、実用にもいいと思う。これだけシンプルなのは、生存戦略としても強い。

CherryPy(チェリーパイ)
http://cherrypy.org/

Bottleより大きいが、外部依存がないので、これも環境構築不要で、Python入門に最適。ルーティング型でなく、オブジェクトツリーをトラバースする方式なので、オブジェクト指向っぽい。古株で、プロジェクトにはあまり動きがない印象。

Django(ジャンゴ)
https://www.djangoproject.com/

PythonのWebフレームワークではもっとも有名で、PythonにおけるRails的な存在。先ごろ出たバージョン1.5より、Python 3にも対応。テンプレートエンジンやORMなども自前で持つオールインワン型なので、わかりやすいともいえるが、柔軟性に欠けるとも言える。付属の管理画面がすばらしい。データベースはRDBが前提なので、MongoDBなどを使いたい場合は選択肢から外れる。現時点ではまだ主流だが、以前ほどの勢いはないようにも感じる。

Flask(フラスク)
http://flask.pocoo.org/

Pythonの軽量Webフレームワークでは代表格。Djangoの次に人気がある。プロジェクトの動機としては、Djangoに影響を受けつつ、Djangoの自前主義を脱して、軽量化したような感じ。ドキュメントも充実していて、ユーザも多い。プロジェクトもそこそこ活発な印象だが、Python 3にはまだ対応していない。昨日の「「神社(Jinja)」という名前のソフトウェア」で紹介したJinja2は姉妹プロジェクト。

Pyramid(ピラミッド)
http://www.pylonsproject.org/projects/pyramid/

最近じわじわ人気が出てきているフレームワーク。いまのところ人気度ではDjango、Flaskの次くらいだが、今後有望だと思う。設計が実に洗練されており、大規模開発にも向いている。Python 3にも対応。プロジェクトの経緯としては、以前Zopeをやっていた人たちによる「BFG」をベースとして、そこにPylonsプロジェクトが合流し、Pyramidという名前になった。Pyramidを含む包括的なプロジェクト名としては「Pylons」を名乗っている。

Plone(プローン)
http://plone.org/

10年以上の歴史があり、CMSとしては高機能かつ完成度が高い。しかし規模が大きく、Zopeベースでクセが強いため、カスタマイズしたり、Webフレームワークとして使いこなすには、かなりの知識がいる。このため新規参入者が少なく、プロジェクトもやや勢いがないように感じる。

以上の6種について、それぞれのいいところをひとことでまとめると、

Bottle - 1ファイルで入門に最適
CherryPy - オブジェクト指向っぽい
Django - 実績ナンバーワン
Flask - 軽量で人気
Pyramid - 設計がすばらしい
Plone - 完成度が高いCMS

といったところか。

このほか、Facebookが作ったTornado(トルネード)というのもあり、人気が出てきているようだ。私は使ったことがないので、ここには含めなかった。

PythonのWebフレームワークをこれから使ってみたい人や、すでにどれかを使っているが、別のものも試してみたい、といった人の参考になれば幸いである。


関連エントリ:
PythonのWebフレームワーク「CherryPy」 入門用にも適した、枯れた名品
http://mojix.org/2013/01/05/python-cherrypy
Pythonを始めるなら、1ファイルの軽量Webフレームワーク「Bottle」がおすすめ
http://mojix.org/2013/01/04/python-bottle
サーバの思い出、Zopeの思い出
http://mojix.org/2008/09/22/server_zope