Doge log

Abby CTO 雑賀 力王のオフィシャルサイトです

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の土台になるもの)
  • 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風なものも作れる。

せっかくなので何回かにわけてこいつでアプリケーション
を作ってみようと思う。