WebOS Goodies

WebOS の未来を模索する、ゲームプログラマあがりの Web 開発者のブログ。

WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。
Subscribe       

Google Social Developers 忘年会 2011 の Hangouts API セッション資料を公開します

だいぶ時間があいてしまいましたが、昨年の 12/10 に行われた Google Social Developers 2011 忘年会の Google Hangouts API セッションの資料 & デモを公開します。このイベントは Google Social Developers Japan グループが主催したもので、ソーシャルに興味のある方々を集めて 2011 年を振り返ったり、 2012 年の夢を語り合ったりして盛り上がろう、というものです。多くの方々にご参加いただき、とても楽しいイベントとなりました。

イベントの内容については既に多くの方がレポートされていますのでご参照いただくとして(手抜き)、私はこのイベントで Hangouts API についてのセッションを担当しました。 Hangouts API のガジェットから Google+ API を叩いたり、リアルタイムステート共有を使って遊ぶデモなどをご紹介しましたので、ぜひご覧くださいませ。

Google Hangouts API とは

Google Hangouts API は、 Google+ のビデオチャット機能(ハングアウト)上で動く Google ガジェットを開発するための API です。ハングアウトと連携する API も提供されていて、いろいろと面白いことができます。

Google Hangouts API
https://developers.google.com/+/hangouts/

実はこのブログでもこちらの記事で解説したのですが、その後に API が完全にリライトされてしまいました。今回のセッションではその新しい形式の API でいくつかのサンプルコードを紹介しています。

セッション資料

セッション資料は以下の URL で公開しています。

http://webos-goodies.jp/attachments/social_develop...

Google の html5slides で作っているのですが、サイズが固定なので埋め込みできないのが難点ですね。また、 Chrome 以外では確認していないので、もしうまく表示されないときは Chrome で見てくださいませ。

デモのソースはこちらにあります。

http://webos-goodies.googlecode.com/svn/trunk/blog...

セッションの前半は簡単な Hello World ガジェットの表示方法なので、こちらの記事とほとんど同じです。後半の 2 つのデモについては少し説明しようと思います。

Google+ API へのアクセス

デモのひとつめは、 Google+ API を叩いて参加者のプロフィールを取得するものです (profile.xml) 。デモを実行するときは、ソースコードに埋め込まれている Google+ API の API キーを自分のものに差し替えてください。

Hangouts API を利用すると、それぞれの参加者の Google+ ID (および名前、アバター画像)が取得できます。それを利用して Google+ API の People:get を呼び出し、公開プロフィールを取得・表示します。 Hangouts API と Google+ API を連携させる例として参考にしていただけるかと思います。もちろんプロフィール情報だけでなく、 ActivitiesComments なども取得できるはずです。

蛇足ですが、 jQuery の Deferred で makeRequest をラップし、 makeRequest を簡単に使えるようにするコードなども紹介しています。

リアルタイムステート共有で簡単なタンクゲーム

もうひとつのデモは、 Hangouts API のリアルタイムステート共有(アプリケーションステート)を利用してゲームを作ってみました (plusshot.xml) 。

ゲームの内容としては、各参加者が自機(ホームベース型のやつ)をカーソルキーで操作し、弾を発射して相手を倒すというものです。使っている Hangouts API の機能は以下の 3 つ。

  • アプリケーションステート
  • マイクの入力レベルの取得
  • アバター画像の指定

まず、 Hangouts API では全参加者が簡単な key-value ストレージを共有できるので、それを利用して自機の座標を受け渡しています。もっとも、リアルタイム同期といってもタイムラグがあるので、自機以外の動きが反映されるのは遅く、かなりカクカクしています。弾の発射はさらにいい加減で、弾が発射された座標だけを渡して、各々のガジェットにデータが届いた時点で発射するという手抜きぶり。当然、各参加者の画面はだいぶ違ったものになります。まあサンプルということでご勘弁ください。

次のマイクレベルは、弾を発射するためのトリガーとして使っています。 Hangouts API ではマイクからの入力レベル(音量)をリアルタイムで取得できるので、それが閾値を超えた時に弾を発射するようになっています。ゲームとしてややりづらいことこの上ありませんが、 Hangouts API ならではの機能ということで使ってみました。

そして最後のアバター画像は、ハングアウトの画面の下に表示されている各参加者のストリーム上に画像を重ねられる機能です。これを利用して自機と同じ色の四角を表示することで、自機と参加者の対応が取れるようにしています。ただ、現在は若干バグっているようで、上の画像では場所がずれてしまっています orz

ちなみに、現在の Hangouts API では、フェイストラッキングで顔と同期して動くオーバーレイ画像も表示できます(トナカイの角と同じやつですね)。それを使えば、参加者に自機と同じヘルメットを被せるとかも可能でしょう。忘年会イベントには間に合わなかったのが残念ですが、次はぜひ使ってみたいですね。

Hangouts API はまだ開発者向けプレビューなので、実用的ではない部分が多々ありますが、上記のように面白い機能がいろいろあり、しかも頻繁に追加されています。ぜひ試してみてください。 Google Social Developers Japan グループへの登録もお忘れなく〜 (^^)/

関連記事

この記事にコメントする

Recommendations
Books
「Closure Library」の入門書です。
詳しくはこちらの記事をどうぞ!
Categories
Recent Articles