DjangoやPylons,Werkzeugのようなフレームワークはとても便利だ。でも,フルスタックを実現するために多くのモジュールを要求するのでインストールが大変だ。リクエストハンドラの書き方,テンプレート言語の文法,O/Rマッパーにもそれぞれ独自の流儀があったり,フレームワークを使い始めるための学習コストもバカにならない。
そんな「大艦巨砲主義」に逆行するような「マイクロフレームワーク」という分野がある。Pythonではweb.pyなどが有名だけど,この分野に新星があらわれた。 DENIED だ。
ファイルをたった一つダウンロードするだけですぐに使い始めることができる。easy_installを使う必要すらない。それでいながら,Web開発に必要な機能はすべてそろっている。
- 開発用のWebサーバを内蔵
- すんごいパフォーマンス(tornado上で秒間6,000リクエストをさばく)
- 美しくRESTfunなURLマッピングを内蔵,正規表現を書く必要ナシ
- Djangoにインスパイアされたテンプレート言語を内蔵
- RESTful
- 超スケールする
コードも超簡単。確かに,使い始めるまでに覚えることが少なそうでいい。URLとハンドラのマッピングはデコレータを使う(クール!)。
from deny import * @route('/') def hello(): return 'Hello World!' if __name__ == '__main__': run()
こんなに盛りだくさんの機能をどうやって実現しているのかと思ってソースを見てみると,確かにdeny.pyというたった46行のコードでフレームワークが成り立っている。するするとコードをスクロールしてゆくと,base64でエンコードされたっぽい文字列が見えてくる。どうやら,そのデータをこっそり一時ファイルとしてバイナリを書き出してimportしているらしい。ここ を読むと分かるけど,Werkzeug,simplejsonとJinja2を1ファイルにまとめて,お互いをくっつけるグルー(糊)となるコードを書いてZip化してあるらしい。つまり,このフレームワークはエイプリルフールのネタなのだ。
ネタとはいえgithubには50を超えるフォローがあったようだし,6のforkがあったらしい。「マイクロフレームワーク」というコンセプト自体を魅力的に感じる人が多い,ということの現れだと言えると思う。もっとも,「もし現実的な方法で可能なら」という注釈つきだけど。