カテゴリ:OpenSocial

Google Developer Day 2008 に参加

gdd.png
6/10にパシフィコ横浜で開催されたGoogle Developer Day 2008に参加してきました。
詳細なレポートは以下のサイトに詳しく掲載されています。


本エントリは、僕が参加したセッションについてのメモ書きと妄想です。


■ 基調講演
Androidの実機デモを見ることができた。
iPhoneさながらのマルチタッチUI。
アイコンやボタンはGNOMEっぽい。Webページのスクロール、拡大機能もiPhoneとほぼ同機能。しかしiPhoneのそれより動きが滑らかではなかったように思う。Google Mapのストリートビューはすばらしかった。Androidの加速度センサに反応して360度見回すことができる。バーチャルリアリティ!

ブラウザ上でGoogle Earth が見れるデモ。残念ながらWindows IE, Firefoxのみ対応。トラックを動かす簡単なデモには笑った。エベレストの上も走れるw

次にgainerに加速度センサーをつけ、Flashアプリでフライトシミュレータ。残念ながらデモが動作せず。


以下、妄想:
Android + Google Earth API + Gearsで、カーナビの機能を充足できるのではないか。Androidでデータ通信して地図情報を取得、Gearsで目的地までのルートをキャッシュする。圏外の場所でも車搭載の加速度センサとGearsによってキャッシュしてある地図データがあればルート表示は可能。
建造物の3DモデルはGoogle Skeckupでどんどん追加されているわけだし、常に地図は更新され続ける。
地図CD-ROMの買い替えやHDDの取り替えも不要だ。でもたまにAdSenseが表示されたりして。


■ Google App Engine
ゲストブックのようなものをゼロから作り上げるデモを行っていた。
TextMateでPythonコードをすんごいスピードで書いていく。
コーディング->localhostで確認->コーディングのサイクルが早く、あっという間に完成した。

興味深かったのはDatastoreAPIを用いたデータ永続化の方法。
SQLに良く似たGQLにてデータを操作する。しかしながらテーブルのJOINは未サポートとのこと。

Pythonのソースコードは思っていたより見やすい。
インデントによってブレース記号({})が省略できるためだろうか、無駄がない感じ。

localhostで確認した後、専用アップローダを用いて
Googleにアップロードする。コマンドラインでもできる。

さらに自動的にバージョン管理までやってくれる!
Subversionのように構成管理(タグ、ブランチ)もやってくれるかは不明だが、便利な機能だ。

さらにさらに、アプリケーション管理画面ではCPUの負荷状況、
データ転送量、メール送信数などなど、至れり尽くせり。

これが500万PV/月まで無料で使えるとなれば、
スタートアップ企業や週末プログラマの皆さんは飛びつくだろう。

課題はPythonしかサポートしていないこと。
Rubyのサポートは会場からも強い要望が出ていた。
中にはC#をサポートしてくれよ!と懇願していた方も。
個人的にはPHPをサポートしてくれたら爆発的に利用者が増えると思うが。

招待制から一般開放されたようなので、今後いじくり回したい。


■ OpenSocial
APIのバージョンが0.8に上がった。主な変更はRESTful APIのサポート。
これによってJavascript以外からも叩け、サーバ間でのデータ送受信が可能になった。

OpenSocialの主要な構成要素である、
HTML + Javascript + REST + OAuth がすべて出そろったわけだ。

コンテナ(SNSなどのソーシャルデータを提供する側)からどの情報を取得できるか(プロフィール情報、友達情報、アクティビティ情報)については、コンテナ側に任されている。

正直言って自分の中ではまだOpenSocialがブレイクするかどうか分からない。
というのは、海外のようにSNS内にアプリケーションが作れるという文化がまだ根付いていないためだ。
この業界以外の人に説明しても理解に苦しむのではないか。

Facebookも日本語化され、MySpaceもOpenSocial対応したおかげで徐々に普及していくのかな。
OpenPNEがOpenSocial対応になるらしいので起爆剤になるかも。

個人的にはOAuthの知識がないので、調査していきたい。


■ Mashup から Mapplets へ
Google Mapに様々な情報を追加していくことができるデモ。
例えばある地域を表示させる。その地図上に不動産情報を表示、過去の犯罪が起きた地域を表示、交通機関マップを表示・・のように。

そのようにGoogle Map上に付加機能を追加していくのがMappletsと呼ぶらしい。
MappletsはGadgetのようにHTML + Javascriptで自分で作れる。

mapplet.png
こちらには多くのMappletsが登録されている。

ただ、すべての処理をJavascriptで行っているので、クライアントPCの負荷が気になった。


■ Google Gears から Gears へ
LocalServer, Database, Workerpoolの説明。
WorkerpoolはJavascriptのインタプリタを複数立ち上げることで、疑似スレッド処理が行えるとのこと。デモではHTML描画を行うWorkerと、複雑な素数演算を行うWorkerを同時に動かしても、描画はカクカクしないねというデモが行われた。

どちらかというと今まではオフラインでもウェブアプリが使えるよ的な謳い文句であったが、今後はクライアント側リソースを最大限に利用しようという方向のようだ。(MySpaceのメール検索のように)

マイはてブのインクリメンタル検索を行うデモを披露していた。
ブックマーク情報をすべてローカルのDatabaseに蓄えておくことで、ものすごいスピードでインクリメンタル検索を行っていた。すごい。

その他、デモをしていた若手エンジニアが発するGeekオーラが可愛かったw(すいません)


■ Google Web Toolkit と AJAX
略してGWT。グウィットと発音していた。
簡潔に言うとJavaで書いた処理をJavascriptソースに変換するコンパイラ。
JavascriptでできることはすべてJavaでかけるとのこと。
また、吐き出されるJavascriptはブラウザ毎に最適化されたコードになりパフォーマンスの向上も図れる。

EclipseでJavascriptの動作をJavaで書き、
ブレークポイントの設定、ステップ実行が行えるというデモが行われた。

ただ、EclipseがベースのAptanaでは、Javascriptのデバッグは普通にできる。Firebugでもできる。そういった意味であまりメリットは感じれなかった。

しかし、Servlet, JSPで開発するプロジェクトでは環境がEclipseで統一できるので、活躍できるのではないか。


以上、昼飯もとれないぐらい盛りだくさんの内容でした。
実はセッションと並行してHackathon(Googleエンジニアと密に接しながらコーディングできる)も行きたかったのですが、残念ながら抽選漏れ。次回は是非参加したいです。
Googleのパワーを存分に感じれた1日でした。

Shindig (PHP版)を動かしてみる

Shindigとは、OpenSocialとGoogleGadgetの仕様に準拠したオープンソースのサーバソフトウェアです。Apache Software Foundation内で開発が進められています。

  • Gadget Container JavaScript — core JavaScript foundation for general gadget functionality. This JavaScript manages security, communication, UI layout, and feature extensions, such as the OpenSocial API.
  • Gadget Server — an open source version of Google’s gmodules.com, which is used to render the gadget XML into JavaScript and HTML for the container to expose via the container JavaScript.
  • OpenSocial Container JavaScript — JavaScript environment that sits on top of the Gadget Container JavaScript and provides OpenSocial specific functionality (profiles, friends, activities, datastore).
  • OpenSocial Gateway Server (does not yet exist in the repository) — an implementation of the server interface to container-specific information, including the OpenSocial REST APIs, with clear extension points so others can connect it to their own backends.
via: What is Shindig?

Shindigを動作させる事によって、自分のWebアプリケーション上でGadgetをホスティングでき、さらにOpenSocialアプリケーション機能を提供できます。
今回はShindigのダウンロードからPHP上で動作させるまでをやってみました。


ソースをダウンロード

$> mkdir -p ~/src/shindig
$> cd ~/src/shindig
$> svn co http://svn.apache.org/repos/asf/incubator/shindig/trunk/ .
しばらくするとダウンロードが完了します。最新のリビジョンは 644261 でした。


Webサーバに配置
$> cd /Applications/xampp/xamppfiles/htdocs
$> ln -s ~/src/shindig/php/gadgets .


サンプルGadgetを動かす
Webサーバを起動し、http://localhost/gadgets/ifr?url=http://www.labpixies.com/campaigns/todo/todo.xml にアクセスすると、、
1.png ガジェットコンテナは動いているようです。

iGoogleのようにガジェットを表示させるサンプルです。
pic2.png

OpenSocial Gadgetを動かす

http://localhost/gadgets/files/samplecontainer/samplecontainer.html

こちらのサンプルはOpenSocialがジェットのデモです。起動時にエラーダイアログが表示され、動いてくれませんでした。ソースを見る限り、ViewerとOwnerが “Hello” と言い合う(?)もののようです。

pic6.png

まとめ
Java版しか動かないと思っていましたが、PHP版も開発が進んでいるようです。早くすべての機能を試したいですね。

Google技術者交流会(OpenSocial)にて

3月14日、Google技術者交流会に参加してきました。
本場USのGoogleエンジニアによるOpenSocialについての概要プレゼンと、著名な方々によるパネルディスカッションの2部構成でした。

OpenSocialの概要については、公開されているドキュメントやorkut上で動くアプリを見ていたので何となく把握できていたのですが、「なぜGadgetなのか?」、「他のSNSからどのように情報(パーソナルプロフィール、友達関係、行動履歴)を取得するの?」について、自分の頭の中で整理ができました。


なぜGadgetなのか?

チュートリアル等で紹介されているサンプルはすべてGoogle Gadgetで作成されていたので、どうせiGoogleやorkutでしか動かないじゃん、という思いがありました。今回のプレゼンの中で紹介されていた、「Shindig」なるオープンソースのサーバソフトの紹介があり、その疑念は払拭されました。

Shindigとは、Apache incubatorプロジェクト内で開発が進められている、OpenSocial コンテナサーバなるものらしいです。主な機能は下記の通り。
  • Gadgetサーバ
  • Javascriptコンテナを提供
  • RESTful APIを提供

例えばあるSNS内でこのサーバを動作させておく事でOpenSocialアプリを動かす事ができ、他のSNSやサービスへはRESTful APIでデータをフィードする事ができます。

現時点ではまだ安定動作するバージョンがついたものは存在しませんが、Subversionリポジトリからソースコードを入手できるので、時間があれば構築してみたいと思います。


他のSNSからどのように情報を取得するのか?

RESTful APIによって、情報を取得できるようにするらしいです。現在はまだ仕様策定中で、サンプル等は見つけられませんでした。また、REST APIはセキュリティを担保するため、OAuthによるユーザー認証(Authentication)と認可(Authorization)をするとのことです。

質疑応答の際、「Gadget用のJavascript APIの公開よりもREST APIの方を先に決めるべきでしょ」的な突っ込みをされている方がいらっしゃいました。確かにそうですよね。チュートリアルだけやっていると、OpenSocial イコール Gadgetのイメージしか無く、orkutのサンプルアプリにしても、orkut内の友達情報をとってくるものしか見た事が有りませんでした。

今後RESTful APIのサンプルが出次第、SNS横断的なアプリが出回る事でしょう。


まとめ

Shindig, OAuth, Gadgetがどのように結びついているのかをちょっと図にまとめてみました。

pic1.png
パネリストの田中洋一郎さんが披露した、コミュスケのOpenSocialアプリ版は、僕が見た中で一番アプリっぽかったです。さらにorkutだけではなくhi5(orkutと同様OpenSocialコンテナ)にもプログラム修正なしで動いているとの事! Write Once, Run Anywareですね。

オープンソースSNSエンジンであるOpenPNEは、コンテナ機能を実装し始めているようです。

また、今回の交流会にはカテゴリ特化型の小規模なSNS運営者の方も多く参加していたそうです。そういった人たちがOpenSocialを実装する事によってSNSの大変動が起きるかもしれませんね。