2011年5月19日木曜日

Google App Engineで開発してみた感想とか環境とか

Google App Engine(GAE)でガリガリと開発し始めて2週間ぐらいたったので、今回は開発の感想とか現在の開発環境とか。

発端~準備
チヌかかり釣りMEGAのSNS要素としてコミュニティ機能が欲しかったので、どうせデータのスケーリングを視野にいれるならGAEでやってみんべ、と思い立って始めたのが3月末。以前からPythonには興味があったのでついでに勉強しようとPythonを言語として選択。Pythonの勉強用にDive Into Python 3という大変すばらしい資料がネットに転がっていたのでそれでPython的なものを理解した。ただPythonは3と2で言語仕様の互換性が途絶しているため実際にGAEで開発するときはそこらへんを考慮しなくてはいけなかった(まぁ今までのところほとんど意識することはなかったのだけれども)。

で、Pythonをぼんやりと理解したので次いで背景も含めたGAEの理解に努めた。資料的にはGetting Started: PythonからApp Engine Python Overviewまわりの全部、それと内部的な動作を理解するのにMastering the datastoreもすべて目を通した。あとIndexまわりを理解するためにもBigtable: A Distributed Storage System for Structured Dataの出だし数ページには目を通しておいたほうが良いと感じた。

開発はじめ
開発環境はEclipse 3.6 Heliosを採用。GAEのページにEclipse用のプラグインがあるのでそれを使えば簡単に開発環境が構築できる。ただ、GAEそのままで開発を始めるとすぐに不便なことに突き当たる。GAEはDjangoのテンプレート機能を標準でサポートしてくれているが、それ以外の機能はない(それ以外にももしかしたらあるのかもしれないけれど知らない)。たとえばユーザ機能(GAE標準としてはGoogle AccountとOpen Idが用意されている)だったり、管理者機能、セッション機能なんかも当然ない。セッション機能とかはGAE用にgae-sessionsなどを開発してくれている人がいるけれどもどうせならここらへんの機能はフレームワークとして用意されているほうが好ましい。また生のGAEで困ったのがフォームの検証機能なんかも全然サポートされていない。これはかなり困った。ということでGAE上でDjangoを使用できるようにポートしてくれているDjango-nonrelを使用することにした。

Django-nonrelを使うことでModelFormやUser機能などDjangoの恩恵をすべて享受しているのに、さらにGAEのデータストアをラップしてくれているModel機能のお陰でBigtableも意識せずに使えちゃうというヘブン状態に突入できた。ただ当たり前なのだけれどもデータのjoinができないなどのGAEのデータ特性はそのままなのでそこらへんは注意しなければならない。

環境とか
Django-nonrelはほとんど素のDjangoと変わらずに開発できる(素のDjangoを触ったことがないので実際には分からないけど)のでストレスなくサクサク開発できるようになった。そこで更なる開発効率を達成するために下記のプラグインやらフレームワークやらを導入した。

Aptana Studio 3
これを入れるとPyDevが手に入り、さらにEclipse用のDjangoプラグインが手に入る。さらにさらにDjango Template Editorも手に入るのでマストゲットな一品。

Lettuce
Behavior Driven Development用のテストフレームワーク。これはかなり良い。C#用のMSpecとかよりも断然開発しやすい。MSpecが駄目というよりもDjango自体が自動テストで開発するのに向いてる環境だと実感した。

Selenium
ブラウザの挙動をそのままトレースできるツール。かなりのポテンシャルを感じるけれど、Lettuceとの相性がいまいちなのでいまいち把握していない。複雑なUIをぐりぐり作り始めたらちゃんと調査するつもり。

現在の開発環境は下記
Eclipse 3.6
PyDev
Django-nonrel
Lettuce

感想
GAEで開発しているという感じはほぼなく、Djangoで開発していると感じる。それと環境をしっかりと整えればかなり開発しやすいと感じた。まだまだTransaction周りなど、Django-nonrelがどのようにラップしているか正確に把握していないので手探りしながらなのは否めないけれど、大枠問題がない。あとPythonでの開発は楽しい。コンパイラが無いのはうっとうしいけれど、その分しっかりとテストコードを書いておけばいいのだし、もっとしっかりやるならコードカバレッジも併用すればよいんでしょ(まだ使ったことないけど)。

0 件のコメント:

コメントを投稿