[Product/Platform/Protocol]Google Wave解剖―Wave入門…データ構造,入出力,リアルタイムの共同編集

この記事を読むのに必要な時間:およそ 4 分

Waveの入出力

Waveはサーバ/クライアント型のシステムです。Google WaveではWebブラウザがWaveクライアントとなりますが,WaveそのものはWebに特化した技術ではありません。電子メールと同様に,専用のWaveクライアントでWaveを読み書きしてもかまいません。

また,Waveは分散型のシステムです。電子メールが複数のメールサーバを経由して配送されるのと同様に,Waveのドキュメントも複数のWaveサーバを通して配信されます。

Waveプロバイダ

Waveのユーザは,メールアドレスと同じく"ユーザ名@ドメイン名"の形式で表されるWaveアドレスを持ちます。Waveユーザは必ず,ドメイン名によって示されるWaveプロバイダに所属します。Waveプロバイダは,しかるべきサーバさえ用意すれば誰でも立ち上げることができます。

ユーザは,すべての入出力を自分が所属するプロバイダに対して行います。ドメインを超えてメッセージをやりとりする場合には,プロバイダ間でリアルタイムの通信が行われます図3⁠。

詳しくは後述しますが,プロバイダ間の通信にはXMPPというプロトコルが使われます。一方,ユーザとプロバイダとの通信については検討が始まったばかりで,まだ定まった方法がありません。Google WaveではWebブラウザからアクセスするためにHTTPが利用されます。

図3 WaveユーザとWaveプロバイダ

図3 WaveユーザとWaveプロバイダ

waveletのコピー

ユーザが新しくwaveletを作成すると,その実体がプロバイダ上に作成されます。waveletにほかのドメインの参加者を加えると,waveletのコピーが相手方のプロバイダにも作られます図4注4⁠。

コピー元となるwaveletはローカルwavelet,コピーされたwaveletはリモートwaveletと呼ばれます。ローカルwaveletは一つしかありませんが,リモートwaveletはプロバイダごとに作られます。あるプロバイダがローカルwaveletを持つとき,プロバイダはそのwaveletを「ホストしている」といいます。

waveletの内容はプロバイダ間でリアルタイムに同期されるので,ユーザは常に自分のプロバイダから最新のデータが得られるようになっています。

図4 waveletのコピー

図4 waveletのコピー

注4)
参加者が同じプロバイダにいる限りはコピーされません。同じwaveletは,一つのプロバイダに一つしか作られません。

waveの見え方

前述のとおり,一つのwaveは複数のwaveletから構成されます。ここで特定のプロバイダに着目すると,個々のwaveはローカルwaveletとリモートwaveletとが混在した状態になりえます図5⁠。

また,同じwaveであっても,waveletによって参加者が異なります。一つのトピックを中心として,アクセス権の異なる複数のwaveletを集めたものがwaveである,と見ることもできます。

Google Waveでは,個々のwaveには次のようなwaveletが含まれます図6⁠。

共有(shared)
すべての参加者によって共有されるwavelet
私信(private reply)
一部のユーザ間でやりとりされるwavelet。個人宛のメールのようなもの
ユーザデータ(user data)
特定のユーザだけが所有するwavelet。未読情報など,システム上のデータ

こうした違いは技術的なものではなく,内部的にはwaveletの参加者の違いとして表されます。

図5 waveletごとに参加者が異なる

図5 waveletごとに参加者が異なる

図6 特定ユーザから見たwaveのイメージ

図6 特定ユーザから見たwaveのイメージ

著者プロフィール

西田圭介(にしだけいすけ)

COBOLコンパイラからVPNサーバ,ドライバ開発からWebアプリまで,必要とあらば何でも手掛けるフリーエンジニア。IPAの平成14年度未踏ユースにおけるスーパークリエータ。