あるプログラミング言語で実際に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 !