Python向けのウェブアプリケーションフレームワークはいろいろあるのですが、その中からwebapp2をいじってみたのでメモがわりにここに書いてみるぜ。
webappという名前を見て気付いた人もいると思うけど、GoogleAppEngineで使われてるフレームワークなのだ。
webappがPython2.5用の以前からあるフレームワークで、webapp2の方はPython2.7向けの新しいフレームワーク。
さて、このwebapp2。GoogleAppEngine上だけでなく、ふつーのWSGIアプリケーションとして動くんですな。
今回はGoogleAppEngineを使わずにwebapp2をいじってみることにしたよ。
まず最初はwebapp2のインストールなのだが、今回はわけあってモジュールとしてインストールせずに使ってみた。
必要なのは
の3つ。それぞれ最新版のwebapp2-2.5.1.zip、WebOb-1.2b3.zip、Paste-1.7.5.1.tar.gzをダウンロード。
そいつらをディレクトリext以下で展開しておいておいた。
こんな状態ね。
webapp2_sample/
  + ext/
    + Paste-1.7.5.1/
    + WebOb-1.2b3/
    + webapp2-2.5.1/
まあ、ふつーに使う人はeasy_installなりpipでインストールすればいいんじゃないかな。
後はコードを書くだけですね。
今回は由緒正しくHello, Worldを書いてみた。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
sys.path.append('ext/Paste-1.7.5.1')
sys.path.append('ext/WebOb-1.2b3')
sys.path.append('ext/webapp2-2.5.1')
import webapp2
class HelloWorld(webapp2.RequestHandler):
    def get(self):
        self.response.write(u'こんにちは世界')
applications = webapp2.WSGIApplication([
    ('/', HelloWorld),
    ], debug=True)
def main():
    from paste import httpserver
    httpserver.serve(applications, host='127.0.0.1', port='8080')
if __name__ == '__main__':
    main()
「Hello, world!」じゃなくて「こんにちは世界」じゃないか、というツッコミはなしの方向でお願いできればと。さらに、コトノハサマは? なんて恐ろしすぎですよ…
動かすのは簡単。上のコードをmain.pyで保存してるとします。
$ python main.py
こ・れ・だ・け。
後はブラウザでlocalhostのポート8080を叩いたらちゃんと動いた!

あ、環境はMacOSX 10.7.3上のpython 2.7.1でございます。
GoogleAppEngineをよく使う人にとっては、GoogleAppEngine以外のところでも同じ感覚でウェブアプリ書けてステキ。
webapp2自体はシンプルなフレームワークなので、いろいろ自分色に染めまくるのもいいかも。
オレオレフレームワークでも作ってみるかい?
