Google Wave API開発ガイド(前編)

プレビュー公開が始まったGoogle Wave「超」入門


株式会社鳥人間
郷田まり子
2009/10/1
ついにプレビュー公開が始まった、リアルタイム&(ポーリングによる)擬似プッシュ型のコミュニケーションとコラボレーションのプラットフォーム「Google Wave」の特集です。その概要と「Gadget」「Embed」「Robot」という3つの拡張APIを使ったWaveの作り方を徹底解説します

ついにプレビュー公開が始まった「Google Wave」とは

 9月30日に、Google Apps
アカウント所持者を対象にしたプレビュー公開
が始まったGoogle Wave(以下、Wave)は、グーグルが世界に提案した、1つのコミュニケーション&コラボレーションプラットフォームです。

 Waveを拡張することで、従来では実装が面倒であったプッシュ型の通信による複数ユーザー間での情報の同期を行うようなWebアプリケーションを開発できます。Waveについての詳細は下記記事をご参照ください。

Google Waveって結局、何ができるの?

 まず、Wave単体を初めて使ってみたときは、「チャット」のようなものだと思われるでしょう。しかし、ただ上から順々に文字列のメッセージが並んでいくだけではありません。

 1つの発言(Blip)に対して、その子要素となる発言を追加し、ツリー状の構造を持たせることができます。さらに、発言の途中の一部分に対してリプライを追加できます。 文書スタイルも豊富で、リッチテキスト編集ができ、さらに画像動画などを埋め込むことができます。 また、「プレイバック」機能を使うことで、それまでの流れを再現することもできます。

「ナマのWave」は、このような姿をしています

 具体的にいうと、フランス人とリアルタイム翻訳チャットでチェスをし、ボタン1つでリプレイ再生。友人と今夜の店を投票で決めて、Googleマップで待ち合わせ場所もすぐに決定。これらのことが、Google Wave上ですべてできます。

ほかの活用例はギャラリーで見られる

 Waveの活用例を集めたギャラリーも公開されています。

 ここはユーザーによる自薦他薦を受け付けているので、面白い作品ができたら公開してみるのもいいですね!

Waveの3つのカタチGadget、Robot、Embed

 「ナマのWave」を拡張することで、Waveの底力は発揮されます。「Robot」「Gadget」といったものを追加することで、ナマのWaveはあらゆる形のコミュニケーション&コラボレーションを実現する多様なWebアプリケーションへと形を変えていきます。使い方によって、グループウェアの代替となったり、オンラインゲームになったり……。

ゲームから実用まで、さまざまなガジェットが作られている

Robot Waveに一般ユーザーとして参加し、会話に加わる
Embed 外部サイトにWaveの画面を埋め込む
Gadget Waveの画面上に埋め込む小さなソフトウェア

 本特集では、この「Gadget」「Embed」「Robot」という3つの拡張APIを使ったWaveの作り方を解説します。

Gadget

 Gadgetは、Waveのサイトの任意の場所に埋め込むことのできる小さなソフトウェアです。Robotのように参加者として振る舞うのではなく、クライアントサイドで動きます。

 GadgetはXML形式で記述し、任意のWebサーバに公開したものを呼び出すことで挿入できます。GadgetのXMLの中には、HTMLタグを書いたり、CSSを利用したり、JavaScriptを書いたりすることができます。また、Flashを埋め込むこともできます。Webページ用のGoogleガジェットの開発経験のある方にはなじみやすいでしょう。

 また、Gadgetの開発を支援する「GadgetEditor」というオンラインツールが公開されています。これを使ってみるのもいいでしょう。

 このGadgetには、ほかのユーザーと同期された専用のデータを保持するための 「SharedState」(あるいは単純に、「State」)というオブジェクトが用意されており、そこに key-valueハッシュの形式でデータを保存できます。このStateオブジェクトにJavaScriptでアクセスし、更新したり、自分あるいはほかの参加者によるStateの更新にフックできます。

 例えば、チェスの対戦を行うGadgetならば、参加者の1人が盤上で駒を動かしたときに、その手の内容がStateに適当なString形式で保存され、ほかの参加者にも即座にその更新が通知され、対戦相手や観戦者の画面上のチェス盤の駒が動く、といった流れを実装することになります。

Embed

 Embedは、Web ページにWaveを埋め込むことです。単にWaveの画面を<iframe>内に表示するというのではなく、埋め込んだWaveオブジェクトをWave外からJavaScriptで操作するためのAPIが公開されています。

 例えば、自ら開発したWebアプリケーションの中で起こった出来事を、その片隅に埋め込んだWaveの中で発言するといった使い方ができます。

Robot

 Robotは、一般ユーザーと同等の参加者としてWaveに参加し、自動で会話をするソフトウェアです。現在、RobotはGoogle App Engineのクラウド上で動かせます。

 Robotの用途としては、

  • 人間と簡単な会話ができるボット・プログラム「人工無脳」のように、会話の内容に反応して発言をする
  • 書き込まれたコードをシンタックスハイライトする

 といったシンプルなものから、外部Webサービスとの連携を行うようなもの、 例えば

  • 外部WebサイトのRSSを取得してきて会話に流す
  • Wave上の発言をTwitterに投稿する
  • ユーザーの書き込んだコマンドに応じて検索エンジンで検索し、その結果を張り付ける

 があります。また、1つのWaveからはほかのWaveが見えませんが、Robotが複数のWaveに参加することによって、例えば

  • 別々のWaveで行った投票の結果を同期する

 といったことができます。

 次ページからは、具体的にGadget、Embed、Robotのそれぞれの開発手法を解説します。前編である本稿では、クライアントサイドのGadget、Embedについて解説し、後編ではクラウドサイドのRobotについて解説します。

1-2-3-4

 INDEX
Google Wave API開発ガイド(前編)
プレビュー公開が始まったGoogle Wave「超」入門
Page1
ついにプレビュー公開が始まった「Google Wave」とは
Google Waveって結局、何ができるの?
Waveの3つのカタチGadget、Robot、Embed
  Page2
Google Wave Gadget開発の基礎知識
  Page3
投票Gadgetを作ってみた
  Page4
Google Wave Embed開発の基礎知識
今後次々と充実? Embed APIのこれから



リッチクライアント&帳票 全記事一覧へ



HTML5 + UX フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

HTML5+UX 記事ランキング

本日 月間