Google I/O 2009レポート

開発チームが明かす、Google Waveの実装概要


2009/06/01

 Google Wave4000Wave

 Google WaveWaveGoogle I/OWave

Wave


 HTML調Wave

 WaveWaveWaveWaveWaveWave使
inbox.png チャットだけではなく、中央にWaveをリストした「inbox」があるのが分かる。アイコンを見れば、新着メッセージ数を示しているらしい数字も見て取れる。左にはスパムフォルダすらある(さらによく見るとMuteボタンもある)

Waveはグーグルだけのサービスになるのか?

lars.jpg Waveプロジェクトの創始者でプロジェクトリーダーのラース・ラスムセン(Lars Rasmussen)氏

 WaveSMTPWaveSMTPIMAPWaveWaveSMTPIMAP/POP

 WaveSMTPSMTP

 Wave1ISPWave60ms300msSkype

 WaveISPWaveWave

 1WaveHTML 5Wave使HTML 5WaveHTML 5

 SMTPWaveWaveTwitter使Wave

 1WaveWaveWebAPIWebWave
embed.png WebページにWaveを埋め込むためのAPIも用意されている(http://code.google.com/apis/wave/embed/

 WaveCMSWebWave稿Wave使1Wave使

 WaveWave


 1

 IM

 Wave

 1WaveWaveWaveletWavelet
wave02.png Waveのデータモデル。各WaveにはWaveletと呼ぶ会話スレッドが含まれていて、そのそれぞれの参加者が紐付いている。このため、同一Wave上でもプライベートメッセージのやり取りなどは可能

サーバはどうなってるの?


 WaveWaveHTML 

 Wave

 Wave

 Google App EngineJettyOSSHTTP使WaveWaveApp Engine

 WaveHTTPWaveXMPPWaveComet使WaveI/OWaveApacheHTTPWave


 Wave調Google Wave: Under the hoodWave

 Wave1ABCDE1ACEACEACDnn
ot01.jpg ナイーブな実装だと、リアルタイム共同編集では簡単に不整合が起こる
ot02.jpg 正しく動作させるには、サーバ側に送られた操作を適宜変換する必要がある

 ABCDED4ABCDEACDED4ACDWave

 nmn×m

 Wave21
state.jpg クライアント側とサーバ側の双方で編集作業をすると、それぞれでバージョンが進んでいく

 この2つの操作の行う「Operation Composer」(操作合成器)は、関数型プログラミング言語にあるzip系の関数のように働くという。任意の2本の操作ストリームをこの合成器に流し込むと、合成後の1本の操作ストリームが出てくる。この合成器、操作ストリーミングというモデルは、マルチコアCPU環境、あるいはデータセンターで非常によくスケールしそうだ。

zip.jpg 合成を行う合成器は2つの操作ストリームを入力とし、1本の操作ストリームとして吐き出す
composition.jpg 2段階の編集履歴を1つの操作にまとめる例。オレンジが要素の削除、グリーンが追加を表している。この例では合成の結果、「K」が省略されているのが分かる

 もう1つ、操作の合成に関して興味深いのは編集履歴の蓄積から任意のバージョンを引き出すときに最小限の計算量で済ませるために、「Composition tree」(合成ツリー)と呼ぶデータ構造を採用したという話だ。

tree.jpg 合成ツリーのデータ構造。任意のバージョン間の変換は、log(n)回の処理で完了する

 Op4Op5Op611Op3Op1411

 2nO(n)O(log(n))Op3Op14


Op5Op8

Op9Op12

Op13Op14


3log(n)1331131016

 Wave1ACK11ACK

 ACKACK

 Operational Transformation10Xerox1995PS

 11WaveO(log(n))O(n)O(n^2)121WaveWeb

 WaveWebGoogle ChromeChromeJavaScriptV8DOMinnerHTMLHTMLWaveHTMLV8Mads AgerV8使12WebWebWave

 WebComet使1

 Google DocsGtalkWaveGoogle Spreadsheets

 2007Wave550Google Wave

関連リンク

(@IT 西村賢)

情報をお寄せください:

HTML5 + UX フォーラム 新着記事


GAS 2017/7/12
 

GETPOSTPHP 2017/7/10
 HTMLget/postPHPPHP 7.12017

PHPforbreak/continue 2017/6/26
 breakcontinue使for使whilePHP 7.12017

Spreadsheet 2017/6/12
 Spreadsheet使使

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

キャリアアップ

- PR -

注目のテーマ

ソリューションFLASH

「ITmedia マーケティング」新着記事

SASのCMOが語る マーケティング部門が社内の生成AI活用のけん引役に適している理由
データとアナリティクスの世界で半世紀近くにわたり知見を培ってきたSAS。同社のCMOに、...

SALES ROBOTICSが「カスタマーサクセス支援サービス」を提供
SALES ROBOTICSは、カスタマーサクセスを実現する新サービスの提供を開始した。

「Fortnite」を活用  朝日広告社がメタバース空間制作サービスとマーケティング支援を開始
朝日広告社は、人気ゲーム「Fortnite」に新たなゲームメタバース空間を公開した。また、...