2010年5月29日

BPStudy #33

昨日は恵比寿に行って Google App Engine に関するお勉強をしてきました。先日開催された Google I/O で発表されたいくつかのことと、実際に開発を進める中での勘所を共有できれば良いかなぁというのが動機です。Google I/O での App Engine に関するビジネス面での最大の発表は VMWare との協業だと思いますが、開発面での発表はどんなことがあったっけかな?ということの確認です。

Google I/O 2010 App Engineセッションレポート

最初のスピーカの方は実際に Google I/O 2010 に参加してきたようで、写真やビデオの紹介もありました。よくよく考えると創業10年程度でここまでのイベントを開催できる Google はスゴいと実感させられます。さて、セッションの内容はブログにまとめられていた通りに BigQueryChannel API に関することでした。実際に Channel API のデモで遊んでみると、確かにリアルタイム性の高いアプリケーションも実装できそうな感じでした。Wave Protocol のような federation の機構は意識されていない印象でしたが、インターネット上でのリアルタイムメッセージングはこれで十分なんだろうなぁ、と思いました。Java のライブラリにも Defered が導入されるようですし、通信方法を websocket へ移行してもソースコードをそのまま使えるそうです。差分情報だけをそれが存在するときに限って配信してくれれば良いので、スポーツなどのテキストライブ (例:ジロ・デ・イタリア2010の第20ステージ) に使えると嬉しい機能ですね。あと、デモのソースコードを公開している辺りは Google らしいな、と感じます。

一方の BigQuery はまだ一般の開発者が気軽に使える代物ではないらしく、Google の中の人とメールでやり取りしながら作業を進めなくてはいけない場合があるレベルのようです。Google Storage にデータを入れ込む部分が難しいのでしょうか。とはいえ、想定するデータ数が数百億件という規模なので、気軽にそんなデータ量を使う人もいないでしょうが。600億件くらいのデータセットに対して SQL の COUNT(*) 文を実行しても、10秒くらいで結果が返ってくるそうです。概念としては MapReduce や Hadoop + Hive に似ているのかもしれませんが、結果セットがすぐに返ってくる、という点がポイントです。Google Spreadsheet から BigQuery を使える?とのことなので、気が向いたら実験してみても良いかもしれませんね。なお、トランザクション機能と Pivot 分析はサポートしていないそうなので、用途に合わせて考える必要がある、というところでしょうか (今後もサポートしない、ということではありませんけど)。まぁ、自分は数百億件規模のデータを気軽に扱うことは当面ありませんので、どうでもいいっちゃどうでもいい話ではあります。

Slim3がすごいトコ

次の話は App Engine の Java 用のフレームワークである Slim3 の紹介でした。個人的には、やっぱり型安全のためには色々なことが必要なんだよなぁ、と誰もが思っているんだと再認識できました。Controller 層の単体テストもできたり、前のテストが次のテストに影響しないようにしてくれるのはモダンなフレームワークではありがちな話ですが、仕事では (Google App Engine を使っているわけではありませんが...) 何のことやらと放置しているので耳の痛い話でした。それにしても、MyModel を定義したら自動的に MyModelMeta が定義されるのは直感的には好き嫌いが分かれそうです。型安全なクエリを生成するためや、そのチューニング、あるいは Eclipse のような IDE との親和性を高めるためであることは認識できますが、Java っぽい考え方に慣れていない人には何とも表現しようがない難しさがありそうです。

Global Transaction のサポートと、asInteger などで入力値の型キャストを担当してくれる機能は、どのプログラミング言語でも必要とされる機能ですね。他にも、テストに関する諸々の説明がありました。自分の開発マシンでテストする場合と App Engine にアップロードした後でテストする場合で、挙動が異なる可能性は仕方ないと割り切っています。しかし、本番環境でテストを実行すると、その過程も計算資源の利用としてカウントされてしまい、あまりにも大量のテストを実行するとクラウド破産を引き起こす可能性もあるとかないとか。なかなかに複雑な世界ですね。

まとめ

ぼやーっとしていた部分のいくつかが解消されて、有意義な時間でした。蛇足ですが、一番笑劇的だったのは、Google App Engine を Java で使ってる人と Python で使ってる人のアンケートをとったら Python の方がやや多く、Java の人は本当にスーツを着ていたことでした (平日の夜だから)。そうは言っても、業務レベルで App Engine を使っている人もいると思うと、計算資源の在り方、使い方は大きく変わってきています。「クラウド・コンピューティング」という表現は4年も経たない比較的新しいものですが、ことばを得たことで飛躍的な進歩の真っ只中にあります。そんな中で Google が App Engine をどのような方向に育てていくのかは興味深いですね。最後ではありますが、BPStudy を運営してくださった方々には感謝です。

コメントを投稿