Google WaveのAPI概要

Googleが新しいウェブアプリケーションプラットフォームの発表を行いました。

概要については@ITの記事が分かりやすいです。

Googleによる公式発表会の動画も見れます。ただ、長い・・・^^;

デモではリアルタイム翻訳しながらチャットをしたりしてます。それも一文字ずつサーバに送られて相手側に表示されます(もちろんバックスペースで消したら、相手側も一文字消えます)。すごい、面白い!きっとこれからブームが来るに違いない!

そんなわけでDeveloper's Guideを読み始めてみたので、自分用メモを兼ねてまとめておきます。拙い英語力で読んだので、間違いがあるかもしれません。気になる人は原文に当たってみてください。

Waveエンティティ

Waveプラットフォームにはいくつかのエンティティが存在します。Developer's Guideの図と併せて見てください。

  • wave
    • 複数の参加者(bot含む)によって構成される。waveは動的なエンティティで、参加者によってリアルタイムに操作され、その状態やヒストリー情報を保管する。また、waveはwaveletのコンテナとなり、複数のwaveletを管理する。
  • wavelet
    • waveによって生成され、blipsと呼ばれるメッセージを複数格納している。waveletはアクセス制御の単位となり、あるwaveletの参加者は、そのwavelet内のメッセージにフルアクセスできる。また、Google Wave APIの処理は、すべてwaveletもしくはそれ以下のレベルで行われる。
    • あるwaveletから生成された子waveletは親のアクセス制御を継承せず、個別のwaveletとして機能する(あるwaveletで発生したイベントが、他のwaveletには影響しない)。その一方で、親と子は同一のwaveコンテナ内で管理される。
  • blip
    • wavelet上の個々のメッセージ。blipは更に子のblipを持つことができ、wavelet内で階層構造を成している。各waveletには少なくとも一つのルートblipが存在する。
  • document
    • blipが管理するXML形式のメッセージ。APIを通して、書き換えられたり、付け加えられたりする。

Wave APIについて

Wave APIはいくつかの要素から構成され、それらが単独で用いられたり、組み合わせて使われたりします。

  • Extensions
    • extensionと呼ばれるアプリケーションによって機能拡張することができます。開発者はbotにwaveと相互通信する機能を持たせたり(Robots API)、waveの参加者として機能するガジェットを作成すること(Gadgets API)でextensionを実現できます。
  • Embeded Waves
    • 開発者は既にあるwebアプリケーションにwaveアプリケーションを埋め込むことができます。これにより、既存のwebアプリケーションをシームレスで統合的なコミュニケーションツールにすることができます。

開発環境について

プレビュー版なので、開発環境はかなり限られています。現在はJavaPythonのクライアントライブラリが提供されています(ただし、チュートリアルJava版のみ。Python版も近々アップデートされる模様)。

現在、Java版ではEclipseGoogle App EngineSDKを導入するのが一番簡単な開発方法で、開発したbotはApp Engineのサーバー上でのみ動かせるようです。将来的にはどんなサーバー上でも動かせるようにしていくそうです。また、ローカルでのテスト環境がまだないため、今後テスト環境を含めたWave SDKを提供していくようです。

つづく・・・