ここ1ヶ月半くらいGoogle App Engineを弄っている訳ですが、練習でイチローウォッチャーというサイトを作りました。イチローの試合結果を集めて、グラフで可視化する簡単なアプリな訳ですが、結構長く掛かってしまいました。
開発環境はGAE + Django(app-engine-patch) + as3です。
せっかくなので遅まきではありますが、Google App Engineについて気付いた点を列挙してみました。ちなみに僕はpythonもDjangoも今回初めて触りました。php + cakeからの移民になります。
python (2.5.x)
- 内包表記が便利すぎる
- ソース整形時にインデントがずれて発生するバグがストレスフル
- インクリメント、デクリメントが無いなんて。。
- __init__.pyが存在するディレクトリがパッケージになる。。
- 公式リファレンスが読みにくい (サンプルが少ない)
- pdbはデバッグコードが必要なのが残念
- 辞書の展開とJSONの相性良すぎ
Google App Engine
- 無料でしかも安定してる
- 管理ページが充実してる
-
datastore
- RDBに対するアクセスよりも重い
- 本番サーバのデータを削除するのが面倒
- フェッチあたり1000件の縛りがやっぱり面倒
- 集約関数とgroup byが無いのが残念すぎる
- flashとはpyamfを使って通信
- lxmlが使えない。結果的にxpathが使えない
Django(app-engine-patch)
- adminインタフェースが使える
- scafoldはない
- GAEへの依存度を減らせる
- Djangoのテンプレートは今まで見た中で一番良い
- Djangoの慣習がよく出来ていて、プロジェクト全体が整理される
- Djangoの習得コストはそんなに安くない(結局1ヶ月くらいかかった)
バックエンドがRDBで無い等、確かにGAEは色々制約は強いですが、それでも現状では個人や小さな企業にとって最良のホスティングサービスだと思います。GAEを使えるようになっていれば、サーバ運用のコストは劇的に下がります。個人的に考えているのは、その結果としてクライアントサイド開発の際にも手軽にサーバとの連携を視野に入れる事が出来ると言う事です。これはGAEを覚えたかった一番の理由で、これからiPhone等のクライアントアプリ開発に絡めていこうと思っています。
またFlashを使えばGAEの制約をある程度は緩和できそうです。現状ではGAEだけで全てを処理するのは難しいですが、GAEをシステムの中心に据えて、サブシステムと連携させていく事で、面白い物が作れそうな、そんな気がします。

