Python 2.5 と Google App Engine を試してみる

先日、ある方から著者である柴田さんのサイン入りの「みんなのPython」をいただいた。

みんなのPython

みんなのPython

せっかく Python をやるなら Google App Engine だろうと思い、登録しようとしたら案の定 Waiting List 入り、早くサインアップだけしておくべきだった。
とりあえず SDK を落としてインストールしようとしたら Python 2.5 が必須とのこと。自分が普段使っている CentOS 5 に入ってるのは Python 2.4 なので、別途インストールしなければならない。
というわけでまずは環境構築からスタートのようです。

ちょっと脱線

Google Gear があって Google App Engine と来たので、なんかデータストアの部分をカプセルかして提供してくれるとかいう物とかあるのかと思ったんですが、そういうことはないようです。
なんか Google Gear で本来のサーバーサイド処理も JavaScript でみたいな実装ができて、それでオンラインもオフラインもどっちも意識せずに開発できるようなことにはならないのだろうか。
ECMAScript というか ActionScript 3 を見てると Java と変わらない厳格な書き方もできるし、Flex の実装してるともうサーバーサイドもこの言語で書ければいいのにと思う。

Python 2.5 と Google App Engine をセットアップ

Download Python から Python 2.5.2 compressed source tarball のリンク URLを wget してコンパイルする。とりあえずオプションは特に付けなかった。

$ wget http://www.python.org/ftp/python/2.5.2/Python-2.5.2.tar.bz2
$ bunzip2 -c Python-2.5.2.tar.bz2 | tar xvf -
$ cd Python-2.5.2
$ ./configure --prefix=/usr/local/Python-2.5.2
$ make
$ sudo make install

さらに Google App Engine を落として展開する。Downloads - Google App Engine — Google Developers から Linux/Other Platforms - 1.0.1 - 4/14/08 を入れる。

$ wget http://googleappengine.googlecode.com/files/google_appengine_1.0.1.zip
$ unzip google_appengine_1.0.1.zip 
$ cd google_appengine
$ less README

dev_appserver.py にアプリケーションルートを渡して実行するようだ。HTTP サーバも要らない(まあ Python だし当然か)。demos/guestbook というのがあるので、とりあえずこれを実行してみる。address 引数指定しないと localhost でbind してしまうから指定する。そしてブラウザから http://○○○○:8080/ にアクセスしてみた。

$ /usr/local/Python-2.5.2/bin/python ./dev_appserver.py --address=0.0.0.0 demos/guestbook
WARNING  2008-05-05 16:40:19,501 datastore_file_stub.py] Could not read datastore data from /tmp/dev_appserver.datastore
WARNING  2008-05-05 16:40:19,503 datastore_file_stub.py] Could not read datastore data from /tmp/dev_appserver.datastore.history
INFO     2008-05-05 16:40:19,516 dev_appserver_main.py] Running application guestbook on port 8080: http://0.0.0.0:8080
INFO     2008-05-05 07:40:23,861 dev_appserver.py] "GET / HTTP/1.1" 200 -
INFO     2008-05-05 07:40:23,865 dev_appserver_index.py] Updating /proj/comp/google_appengine/demos/guestbook/index.yaml
INFO     2008-05-05 07:40:28,409 dev_appserver.py] "POST /sign HTTP/1.1" 302 -
INFO     2008-05-05 07:40:28,493 dev_appserver.py] "GET / HTTP/1.1" 200 -

Guestbook( コメント書きアプリ)が動いた。スタートはここで終了。