?ハングアウトとは、Googleアカウントでできるメッセンジャーサービスです。メッセンジャーだけではなくビデオチャットもあり、APIも提供しています。Gmailの左下にあるアドレス帳のようなものとか、最近はデスクトップアプリのようにブラウザから独立しているものもあります。このAPIを使用するとハングアウト内で実行できるアプリを開発できます。ハングアウトアプリケーションまたはChromeの拡張機能内でのみ動作します。ファイルで構成されています。(これをガジェットXMLと言います。)ガジェットXMLは下記のようなコードが書かれています。インポートしてUIを設定することも可能です。メタ情報の組み込まれたModulePrefs要素とプログラム本体部分のContent要素で構成されています。ModulePrefsのrequireにはインポートする機能を指定します。上の例では標準で必要なrpc機能と、データをアプリに渡す為のviews機能を指定してます。(gapi.hangout.~)にアクセスできます。このファイルをBasic認証等かかっていないオープンなサーバにホスティングします。次の2つの主な特徴が含まれています。ハングアウト参加者間のデータを同期する機能ハングアウトセッション中、すべてのアプリケーションインスタンスで共有される状態オブジェクトを保持しています。データ形式はJSON形式です。関数を使用してアクセスされ、管理されます。gapi.hangout.data.setValue()とgetValue()を使います。アプリケーション内の特定のアクションをトリガーできるイベントが用意されています。イベントには、参加者が入退出した、マイクがミュートにされた、音量が変更された、共有状態が変更された、などがあります。リファレンス(v1.4)に記載されています。以下の例は、ハングアウトに参加したときに呼ばれるイベントのコールバック関数です。叩いてみた試しにハングアウトの特徴の一つである共有状態を使い、ハングアウトアプリを作成してみます。作ろうとしているアプリは、同じYoutubeの動画をみんなでリアルタイムに見るというものです。5人でこのアプリを使い、誰かがYoutubeのURLを投稿するとリアルタイムに後の4人のアプリでも同じ動画が再生されます。ハングアウトAPIの特徴の一つである「共有される状態オブジェクト」を応用したアプリになります。処理フローは次のようになりました。URLを投稿すると共有されている状態オブジェクトが更新されます。共有されている状態オブジェクトが更新されると共有状態更新イベントが走ります。イベントが走ると共有されている状態オブジェクトからデータを取得し動画に反映します。作成したガジェットXMLは下記のようになりました。1.このガジェットXMLをオープンなサーバにホスティングします。