PythonでWebAppの開発に必要なN個のこと

元ネタ

あるプログラミング言語で実際にWebAppを開発できるようになるまで、何が必要だろうか。言語仕様の習得は終えているとしよう。おそらく、最低限以下のような知識が必要だと思われる。とりあえずPythonについて知っていることを書いた。

パッケージマネージャ

まずライブラリの管理。モジュールをインストールし、可能であればバージョンを固定し、適切にロードする機能が必要だ。

Pythonの場合は pip というPyPIクライアントでライブラリをインストールする。ライブラリパスの設定は virtualenv で行う。

アプリケーションサーバー

Webサーバへのインターフェイスとしては、WSGIという仕様がある。WSGIに準拠したツールキットとしてWebObやWerkzuegなどがあり、サーバーには標準ライブラリのwsgirefやwaitress、gunicornなどがある。 本番環境ではgunicornが人気だ。

リクエストパラメーターの処理

cgi.FieldStorage が標準ライブラリにあるが、WebObやWerkzeugのRequestクラスを使うべきである。

ルーティング

サーバにきたリクエストを適切なコントローラに振り分ける機能だ。 Werkzeugにも含まれているし、ルーティング単体のライブラリWebDispatchもある。

データベース

標準ライブラリのsqliteをはじめ、DB API2.0がドライバの標準インターフェイスとなっている。 ORMを使うのであれば、SQLAlchemy以外の選択肢は思いつかない。

ビューのレンダリング

HTMLテンプレートエンジンは数え切れないほどあるので、主義思想なりパフォーマンスなりで選択しよう。

  • Jinja2
  • Mako
  • Chameleon
  • Kajiki

JSONの取扱いは標準モジュールのjsonがあるが、バグフィックスなどが行われているsimplejsonをインストールするべきだ。

テストフレームワーク

標準のunittestや、nose, py.testがある。最近はpy.testの人気が高い

  • unittest
  • nose
  • py.test

WSGIアプリケーションのテストには webtest が便利である。

mockライブラリがpython3.3以降で標準ライブラリに含まれている。

testfixturesはより詳しい情報を表示するアサーションや、ファイルシステムのフィクスチャ、例外のテストコンテキストなど便利なユーティリティをまとめている。

HTTPクライアント

標準ライブラリの httplib, urllib, などあるが、最近はrequestsが非常に使いやすいAPIを提供している。

WAF

Djangoという定番があるが、上記のツールを組み合わせると発狂するので、以下のフレームワークをおすすめする。 どれもwsgiに準拠したフレームワークである。

  • pyramid
  • flask
  • bottle

以上。URLは気力があったら追記するので、それまではぐぐってほしい。

Comments !

blogroll

social