Pythonフレームワーク調査

どれを勉強するか決めるために, web上の情報を集めてみた. 集めただけなので真偽は不明.

シェアはDjangoが圧倒的で, 次いでFlaskという印象を受けた. なんとなくマイクロフレームワークを勉強したい気持ちがあったので, Flask・Bottleを重点的に調べた. データベースを使うならDjango, データベースを使わない小・中規模のものであればFlask, 極小規模でいいならBottleが良さそう.

参考サイト

Django

  • http://djangoproject.jp/
  • フルスタックフレームワーク
  • データベース主体のWebサイトを簡単に構築できる.
  • URLディスパッチャー・O/Rマッパー・テンプレートエンジンなど沢山の機能が備わっている
  • 管理者用GUIを自動生成したりプロトタイプを容易に作成したりできる.
  • 学習コストは重そう

Flask

  • http://flask.pocoo.org/
  • 最小限の機能をもち、小規模・中規模なWebアプリケーションの構築に向いている
  • 単体テストもサポート.
  • secure cookiesもサポート.
  • データベース抽象化やフォーム値の検証などの機能はもたない
  • python3にも対応済み
  • 大規模アプリ対応のBlueprintという機能がある.
  • Webアプリケーション全体を1つのファイルに記述することも可能
  • データベース連携は考慮されていない

Bottle

  • http://bottlepy.org/docs/dev/index.html
  • 最大の特徴は1ファイルで導入できること. PythonのStandard Library以外に依存しない
  • 機能の大半がルーティング.
  • フォーム・ファイルアップロード・cookie・headerといったHTTP関連のメタデータも便利に使える.
  • テンプレート内にpythonコードを埋め込むことができる(pythonを知らない人が触れなくなるので使わないほうがいい気がする).
  • SSL通信をサポートするにはChrryPYなどを使ったりしないといけない.

Tornade

  • http://www.tornadoweb.org/en/stable/
  • シンプルかつ処理が高速.
  • 特に静的ファイルの配信が高速. Apacheではなくnginxと一緒に使用されるのが一般的
  • Websocketがサポートされているので, リアルタイム通信目的で使われたり, node.jsの代替として使われたりする.
  • ノンブロッキングなWebサーバのためIOを後回しにしてリクエスト処理を行うことができる.

CherryPY

Pyramid

  • 小さい・早い・堅実

Plone