Google Developer Day 2009

Google Developer Day 2009 に参加してきました。参加できなかった方も後日、Web でビデオ撮影された内容が公開されるそうです。朝の基調講演のメインホール、午後からの個別のセッションもそうですが、立ち見が出るほどに大盛況でした。

私が参加したセッションは以下になります。

基調講演

少し遅刻していったので及川さんのお話の途中でした。私がこれまで参加してきたイベントの基調講演というのは、お偉いさんが1時間ぐらい、ありがたいお話をしてくれるパターンが多かったのですが、この基調講演は違っていました。午後からのセッションを担当するスピーカーの何人かが、入れ替わり立ち代りに Google のテクノロジーを15〜30分程度で紹介していました。午後からどのお話を聞くかの指標にもなるし、話題に飽きがないので、私にとっては新鮮でした。

その基調講演の中で本イベントの事前登録者全員に Android ケータイの配布プレゼントが発表されました。私はモバイル系のお仕事をしているわけでもなく、あんまり興味があったわけでもないのですが、Android キターって思ってしまいましたo(^ ^)o

さすが Google さんですね、お金があ、、、いや、エンジニアのマインドが分かってらっしゃる。これをきっかけにちょっと遊んでみるかも。

個人的には、及川さんと石原さんのプレゼンが良かったです。人を惹きつけるというか、聞いてしまうという雰囲気がありました。もちろん内容も素晴らしいのですが、多くの聴衆を相手に恰好良いなという印象を受けました。

複雑でスケールするアプリを Google App Engine で構築するには

私が GAE での開発経験がないのもあり、内容を把握するのが難しかったです。うろ覚えで内容を記載しますが、間違っていたらごめんなさい。ツッコミあれば修正します。

twitter のような micro-blog アプリケーションを開発する場合のベストプラクティスやメッセージングの処理方法についてお話されていました(と思います)。メッセージやオブジェクトをコピーする fan-out は簡単ですが、スケールしない。そこで reference を渡すようにしたら効率的ですね。その流れで list property が云々とか、BigTable は merge-join しかできないよというお話をされていた気がします。

設計としては Message クラスに sender と body を、MessageIndex クラスに receiver を設けると、スケールする仕組みになります。というのは、receiver において、Protocol Buffers の re-serialize がコストになるから、それを切り離すと良いんです(と説明されていた気がします)

Protocol Buffers については WEB+DB PRESS Vol.46 の記事がとても分かり易いです。

まとめとして以下のキーワードを提示していました。

  • list property と merge-join
  • fan-out
  • Geo info
  • Relation graphs
  • Fuzzy "values"


以下のサイトを良い事例として紹介していました。上記のような内容を考慮すると、スケールするようです。
Publish-subscribe test
DAG -> people

Java で動かす Google App Engine

夷藤さん鵜飼さんのダブルスで発表されていました。会場は立ち見だけでなく、座り見が出るほどに大盛況でした(^ ^;;、というか夷藤さんは Google に移籍したんだと私は驚きました。

これから GAE で開発しようと考えている人向けにちょうど良いような全体像を体系的にお話されました。私にとっては、最も分かり易くて参考になったセッションでした

以下、内容になります。

  • GAE とは

Google App Engine を利用すると、Google のインフラ上で Web アプリケーションを開発して実行できます。PaaS(Platform As A Service) の1つです。現在、開発言語として PythonJava がサポートされています。
HTTP リクエストは30秒以内、サーバからの push はできないという制限があります。ずっとコネクションを張り続けて通信するようなアプリケーションは開発できません。
全ての API 呼び出しは API Proxy を経由するので、そこをインターセプトする事で AOP(Aspect-Oriented Programming) に類似したことができる?

  • GAE の特徴

開発ツールのインストールや OS やツール類のメンテナンス(セキュリティアップデート)は Google が全て行ってくれるので開発者が意識する必要はありません。また、Web アプリケーションの負荷に応じて自動的にリソースが割り当てられてスケールするので、リソースの分配についても意識する必要はありません。負荷が小さい Web アプリケーションは無料で利用できるのも開発者にとってメリットがあります。

私は Java の開発経験がないので間違っていたらごめんなさい。ツッコミあれば修正します。
Java 標準の API を利用することもできるし、GoogleAPI も利用できます。Servlet 2.5 互換コンテナで、HTTP Session や JSP が利用できます。例えば、認証系は Servlet APIGoogle Account、DataStore は JPA/JDO と BigTable、Caching は javax と memcaching 等になります。SDKEclipse や Ant が利用できます。
サンドボックスJVM が動くので、JythonJRuby 等、JVM 上で動作する言語であれば、基本的に何でも動きます。

  • DataStore

GAE の最大の特徴になります。鵜飼さんが格好良い言葉を引用されていました。

私のアプリケーションに RDBMS は大袈裟すぎる。単にデータを保存できればいいだけなのに。

目的はデータの永続化であって、非正規化を怖れてはいけないと説く鵜飼さんの言葉には重みがありました。私は元 SIer だったので、如何に DB スキーマを柔軟に設計するかが DB Administrator の腕の見せ所なように考えていました。パラダイム・シフトですね、大きなショックを受けました。
もちろんイントラネット内の閉じたシステムにおいては RDBMS は優れたソリューションの1つです。しかし、Web アプリケーションのような、どれだけスケールするかよく分からないシステムにおいては BigTable のような、スキーマを定義せずに巨大テーブルにデータを分散させる仕組みも良いです。アプリ層で定義するソフトスキーマとも呼んでいました。特徴としては、トランザクションが Atomic に扱える、クエリは SQL ライクな GQL(Google Query Language)、階層化ができるなどをあげていました。

  • Comming Soon
    • タスクキュー
    • フルテキストサーチ
    • メール受信


参考までに作成したリアルタイム・マインドマップです。

リファレンス:
GoogleAppEngineJava

クラウドコンピューティングがもたらす5つのメリットとは -Google Apps Premier Edition / Education Edition-

クラウドって何がおいしいの?」というマーケティング系のお話でした。企業における社員1人あたりの社内システムのコストが7万円程度で、Google Apps Premier edition を利用すると1万円程度で済むそうです。Google さんのシステムが社会的、ビジネス的にどのように認知されていくかに依りますが、社内システムを Google に切り替えた方がコストダウンできるのは明白でしょう。システム管理者は諸手をあげて喜びそうです。

簡単にまとめると、メールは Gmail を使えばスパムフィルターはついてるし、バックアップは取れて最高ですね。セキュリティ対応も何も気にしなくて良いですね。インターネットに繋がる環境さえあれば、お仕事はどこでも出来て良いですね。色んな Google API が使えておもしろいですね。既存の企業内システムとの連携もバッチグーですね。

とまぁ、クラウドって良いこと尽くしですよね〜という発表でした。社会的責任と信頼性をどう担保するかが課題かな。


Google テクノロジー ライトニングトーク

twitter で tsuda ってたので以下のリファレンスをご覧ください(^ ^;;
Google-App-Engine-Japan でお馴染みの松尾さんが発表されていました。私も以下のグループに参加してみました。
kay-users
Tokyo Google Technology Users Group (Tokyo GTUG)

リファレンス:
LightningTalk

Google Wave APIs

Wave のアーキテクチャ、アプリケーションの開発方法や API の種類を説明されていました。基調講演でされていたデモがとても良かったです。

会社でWave使ったら、コミュニケーションコストがすごく減りそうですよね。みんなでWave見ながら会議とかしてみたいっす。

http://twitter.com/j7400157/status/2086717939

私はまだまだよく分かっていないので、詳細を書くのはやめます。1ヶ月後ぐらいに本イベント参加者にアカウントが配布されるらしいとの噂も聞きました。ちょっと使ってみてまた感想を書きたいです。

リファレンス:
GoogleWave