werkzeug
何かと最近話題のwerkzeugですが、こいつが一体なんなのか
書いてみる。
werkzeug
ドイツ語で工具を意味する。pythonistaがwebアプリケーション
開発を書くための工具であるようなライブラリ。
(あくまで工具である)
具体的にはWSGI Utilityで、粒度の小さい部品のみを提供する。
部品、部品はバラ売り状態で、基本的にはWSGI対応フレームワ
ークをスクラッチで組み上げるための物である。
(フレームワークを作るためのフレームワーク)
提供機能
提供してる機能は以下であるが、基本的なレベルまで実装されて
いる。
代表的なもの
- Wrapper
- Request Object
- Response Object
- Request Mixin Object(Reqest拡張に使う)
- Response Mixin Object(Response拡張に使う)
- Routing System(Routesとほぼ同じ)
- 基本的なconvter
- Template(非常にシンプルなもの)
- Management Script Utilities(djangoのmanage.pyの土台になるもの)
- 開発サーバ起動
- interpreter起動
- Test Support
- Client(Test用クライアント)
- HTTP Exceptions(djangoのError系Responseに当たる)
- Notfoundなど
- Aborter(エラーショートカット)
- Utilities
- 便利なデータ構造
- Header系 Object
- Url Helper(hrefとかで使う)
- HTML Helper(escape処理)
- WSGI Helper(シンプルなMiddleware)
- Context Local(Context, threadlocal util)
- Debbug System(リッチなdebug情報出力)
- WSGI Serving(WSGI配備Helper)
なんで必要なのか?
なんでWSGI Utilitiesなんて必要なのか?
WSGIの仕様は柔軟に対応できるようぬるめに設計されている。
そのため、使いやすくするためには色々、実装しなければい
けないところが多い。そこを埋めるのがwerkzeug。
用意しないといけないもの
werkzeugはUtilityなので実際にアプリケーションに組むには
色々と足りない。
基本的に以下の機能は自分で用意しないといけない。
- Model
- Template
- View
データベース系は全くないので自分で好きな物を選択できる。
(SQLAlchemyなど)
テンプレートエンジンも基本自前で用意する。そのため
Form処理なんかも自前になる。
あとつなぎであるviewの処理ももちろん自前になる。
好きな物を選択して作るフレームワークなので組みようによ
ってはpylonsそのものになるし、django風なものも作れる。
せっかくなので何回かにわけてこいつでアプリケーション
を作ってみようと思う。