Hatena::ブログ(Diary)

こたにき

自作 Greasemonkey スクリプト一覧

2009-06-11

ざっくり Google Wave (1)

★ この説明は Google Wave Federation Protocol の Draft Protocol Spec (June 8, 2009) を読んで、僕なりに噛み砕いたものです。感覚をつかむ事を目的としているので、説明には間違いや不正確な部分があるかもしれません。ご了承ください。

Wave ≒ Mail

ツールとしての「メール」は現役ですが、古い技術です。Google は、この「メール」をもっとマシなものにできないかと考えて、この「Google Wave」を生み出しました。

Google が定義した取り決め*1では、Wave サービス をユーザーに提供する Wave プロバイダ(または Wave サーバー)が存在します。これは、メールサービス を提供する メールサーバー と似ています。

ユーザーはそれぞれ、Wave プロバイダからもらった Wave アドレス を持っています。これは jane@nicewave.com のように、メールアドレスと全く同じものです。nicewave.com の部分が、Wave プロバイダドメインです。

f:id:kotas:20090612030214j:image

Wave プロバイダは誰でも立ち上げる事ができます。Google が新サービスとして始める Google Wave は、Gmail のように単なる Wave プロバイダであり、それに便利なUIをくっつけたものです。*2しかし、Google はこの Wave プロバイダ間でやりとりするための取り決めや、開発者が利用できる API なども含めて Google Wave と呼んでいるようです。

Wave ≠ Mail

このように、旧来のメールそっくりな Google Wave ですが、違うところもあります。

まず、メールはやりとりしません。Google Wave では、皆で1つの文書に対して、あーでもないこーでもないと書き込みをしていきます。それだけだと、ただの掲示板と大した違いがありません。ここからが Google Wave のすごいところ。

他の人たちの書き込みが、見ているだけで、リアルタイムに更新されていったらどうなるでしょう?

それはつまり、届いた内容が次々に表示されていって、こちらが返信を書くと即座に相手にも伝わるという事です。まるでチャットをしているような迅速なやりとりができます。

では、Google Waveチャットなのでしょうか?

かなり近いのですが、チャットではありません。文書に対しての書き込みは全てサーバーに保存されて、相手がオンラインでもオフラインでも関係ありませんし、チャットでは文書を作る事は出来ません。

みんなが編集する文書の集まりを、Wave (ウェーブ)と呼びます。逆にいえば、みんな Wave の上でやりとりをするわけです。

f:id:kotas:20090612031218j:image

Wave の中身

Wave の中身を見てみましょう。

f:id:kotas:20090612030450j:image

Wave の中には、「会話の単位」となる Wavelet (ウェーブレット)が集まっています。実際には、ユーザーは Wavelet を読み書きします。

Wavelet の中には、その会話(または文書の編集)に参加しているユーザーのリストがあります。参加者しか Wavelet を読み書きする事はできません。

また、Wavelet は他にも、みんなが編集している文書の中身をあらわす ドキュメント を持っています。この実体は XML 文書です*3

Wave と Wavelet の区別について、疑問に思う方もいらっしゃるでしょう。Wavelet の参加者は、同じ Wave 内に新たに自分専用の Wavelet を作る事ができます。自分専用なので、他の参加者は許可されない限り Wavelet の内容を読み書きできません。

これだけだと何のことかわかりませんね。例えば、インスタントメッセンジャーを使って、複数人でチャットしている様子を思い浮かべて下さい。ある参加者だけに、こっそりと伝えたい事があったらどうするでしょう? その参加者だけとの間で、新たに会話を始めますよね? あなたが今新しく始めたのが Wavelet です :)

Wave と Wavelet の管理者

Wave も Wavelet も、それを作ったユーザーが所属している Wave プロバイダ上で作られます。例えば、ユーザー jane@nicewave.com が新しく Wave を作ると、その Wave は nicewave.com によって管理されます。*4

では、nicewave.com によって管理されている Wave に、ユーザー me@mywave.com が参加して、Wavelet を新しく作るとどうなるでしょうか? その Wavelet は、今度は mywave.com によって管理される事になります。*5

つまり、Wave と Wavelet を管理する Wave プロバイダは、違う場合があるわけです。

管理するということ

「管理する」というのは、「オリジナルを持っている」という意味です。

文書を編集するためには、文書の内容を知る必要があります。自分が所属している Wave プロバイダが、文書を 管理 していれば、特に問題はありません。

ただ、他の Wave プロバイダが管理する文書の場合はどうでしょう?

文書を読むには、インターネット越しにダウンロードしてくる必要があります。それはつまり、文書の「コピー」を作っている事になります。コピーを持っておけば、わざわざ同じ文書を読む度にダウンロードする必要がありません。

このように、他の Wave プロバイダが持つ文書を読み書きする場合、一旦、自分の Wave プロバイダに文書のコピーを作り、それに対して読み書きする事になります。*6

f:id:kotas:20090612025925j:image

Google Wave のスゴい所

Google Wave のスゴい所は何でしょう?

それは、1つの文書を、ネットワークをまたいで、みんなで一斉に編集できるところです。

1つの文書をみんなで編集するといえば Wiki があります。あまり経験がないかもしれませんが、Wiki の1ページを編集して保存しようとすると、他の人が同じページを編集していてエラーが出てしまう事があります。

同じファイルをみんなで編集しても、普通はお互いの修正を上書きしてしまいます。みんなで1つのものを編集するのは、簡単なようでとても難しいのです。ましてや、ネットワーク越しともなれば……。

そこで Google は考えました。

Operational Transformation

文書を作るには、以下のように、文字を入力したり消したりして進めていきます。

  1. Aを書く
  2. Bを書く
  3. Cを書く
  4. Bを消す
  5. Dを書く

逆に言えば、この一連の操作の流れと同じように文字を書き消しすれば、同じ文書を作る事ができるわけです。という事は、一連の操作を保存しておけば、いつでも同じ文書を再現できる事になります。

Wave プロバイダは、文書の内容ではなく、この一連の操作を保存しているのです。

誰かが文書に「Aを書く」と、Wave プロバイダは「Aを書く」を一連の操作に追加します。また、同時に他の Wave プロバイダにも「Aを書く」という操作を伝えます。*7すると、その Wave プロバイダ上のユーザー達に「Aが書かれた」事がリアルタイムに伝わるのです。

では、誰かが「Aを書く」のと同時に、他の人が「Bを書く」とどうなるでしょうか? 同時に編集しているので、そういう事もよく起こります。

XYZ

というテキストに対して

  • 「2文字目の前に A を書く」(XAY にするつもりで)
  • 「3文字目の前に B を書く」(YBZ にするつもりで)

という操作がある時、これらを順番に実行すると

XABYZ

となってしまい、「YBZ」にするつもりだった人は、思った位置に書けなかった事になってしまいます。

そこで登場するのが Operational Transformation 、直訳すると「操作の変換」という技術です(略して OT)。この技術を使うと、操作を矛盾のないように変換する事ができます。

  • 「2文字目の前に A を書く」(XAY にするつもりで)

という操作は特に変換をかけずにそのまま行います。

XAYZ

その次の

  • 「3文字目の前に B を書く」(YBZ にするつもりで)

という操作は、OT によって変換され

  • 「4文字目の前に B を書く」(YBZ にするつもりで)

となります。結果として

XAYBZ

となって、両者とも思った位置に書き込めた事になります。

このように OT を使うと、みんなが一斉に書き込んでも、出来る限り矛盾のないように一連の流れに変換する事ができるというわけです。*8

Google のスゴい所

実は Operational Transformation は10年以上も昔から研究されている技術です。

Google のスゴい所は、古くからある JavaScriptAjax という付加技術と組み合わせる事で Google Suggest というサービスにアレンジしたように、昔からある技術の価値を見抜き、現代風にアレンジしてしまう力なのだと思います。

メールが Google Wave としてアレンジされたように :)

*1:この取り決め (=Google Wave Federation Protocol) は、あくまでも「こんなのはどうだ」という下書きであり、仕様はオープンな場で議論により決定されている最中です。

*2:Comet や HTML5 を使ったフロントエンドはとても挑戦的で魅力的です。

*3:実際には XML 文書だけではなく、部分テキストの色などの装飾、ハイパーリンクなどを表現するための「スタンドオフアノテーション」と呼ばれる情報も持っています

*4Wave には、それを識別するために Wave id という名前がつけられています。例えば nicewave.com$abc123 という Wave id だったら、nicewave.com によって管理されていて abc123 というIDを持つ Wave を指しています。

*5:Wavelet にも同様に、Wavelet id という名前がつけられています。例えば mywave.com/nicewave.com$abc123/xyz987 という Wavelet id だったら、mywave.com によって管理されている xyz987 というIDを持つ Wavelet があり、nicewave.com$abc123 という Wave に所属している事がわかります。Wave と Wavelet を同じ Wave プロバイダが管理している場合、mywave.com/abc123/xyz987 のように Wave id のドメイン部分と '$' が省略されます。

*6:逆に言えば、必要なければ他の Wave プロバイダには送信されないので、同一 Wave プロバイダ上での会話が他のプロバイダに漏れる事はありません。

*7:この時、プロバイダサーバー間では XMPP というプロトコルが使われます。Google TalkJabber などのインスタントメッセンジャーで使われている通信方法です。

*8:もうちょっと技術的に言えば、排他ロックやトランザクション処理の必要がなくなるため、1つ1つの更新をとても高速に行う事ができます

chaichanPaPachaichanPaPa 2009/06/13 13:26 Wave は、将来的にはMailに置き換わるものですか?
それとも、別々に各々進化していくのでしょうか?

NN 2009/06/13 18:24 ど素人発言で申し訳ないですが絵チャっぽいなあと思いました。
こういう話題もいいですよね。

kotaskotas 2009/06/14 22:53 >> id:chaichanPaPa さん
Mailを置き換えるかは今後の普及次第ですが、Mailが無くなる事はないと思っています。
その気になれば Mail⇔Wave 間でやりとりできるような Wave プロバイダを
作る事も可能だと思うので(特に Gmail ⇔ Google Wave は Google がやりそう)
Wave に乗り換えるのは簡単になると期待しています。

>> N さん
多人数でのやりとりという意味ではその通りだと思います。
実際、お絵かきチャットは Google Wave の機能で実現できる範囲です。
この記事では書きませんでしたが、Google Wave 上に Flash などを埋め込む事も可能だからです。

roshihyroshihy 2009/06/15 02:47 分かりやすかったです、ありがとうございました。

chaichanPaPachaichanPaPa 2009/06/15 20:41 >>id:kotasさん
回答、ありがとうございます。
昔のWeb日記と今のブログみたいな関係に似ていますね。
Waveに今後も注目していきたいと思います。

ビー!ビー!ビー!ビー!ビー!ビー! 2009/07/10 07:49
遠隔ヴァイブ試してきたよーヽ( ・∀・)ノ
街中だってのにスイッチ入れる度にさっちゃんたら足ガクガクしちゃって・・・
見てて興奮しすぎて近くのビルのトイレでやっちゃったし(*´д`*)
ヴァイブ遊びってチョー楽しーよねー(´・∀・`)

http://ZyFQhvY.meshiuma.tsukimisou.net/

ヒャッハーーー!!!!ヒャッハーーー!!!! 2009/07/13 20:29
あひょー!初 体 験でいきなり生でマ ヌ コに挿入してきたワイさあ!!!!
「ぶっちゃけオ ナ ホの方が気持ちE!」って言ってた友達はヴァカだろーw
1000%生挿入が最強だろぉぉぉおおおおがあぁああ!!!!!

http://jMrybNG.fctwo.d-viking.jp/

ネトゲ廃人ぽにゃたの場合ネトゲ廃人ぽにゃたの場合 2009/07/27 12:45
働かざるものヤルべし!!!ほんと働いたら負けだわ(´Д`;)
オレ真面目に会社員やってたけど、今はその頃より月の稼ぎ3倍だよ?
初めてヤった時は4万だけだったけど、今じゃ平均一回7万だかんなwww
もうアフォらしくて会社員ヤメたしwwwww 毎日ネトゲ最高wwww

http://netoge.bolar.net/B3gNr3b/

試してみたお!試してみたお! 2009/08/06 22:40
オッス!ニートの桜井だよ!いやいや毎度毎度!!!!!
ここで釣った女でコンニャクオナと生マヌコのどっちが気持ちいいか試したお!!
えとうん・・・問答無用で生マヌコの勝ちだわwwwwwwwwwww
てかハメさせてくれた女子が当たり前のように10万くれたんだけど何でー???

http://ene.creampie2.net/KOjASeC/

はいちゃんちゃんちゃん!!!!はいちゃんちゃんちゃん!!!! 2009/08/11 01:07
もーさすがに3回は果てるってーー!!!(>_<)
連続じゃないだけマシだけど1 0 万の為とはいえ3回ヤるとティ ンコさんが火を噴きそうなくらい真っ赤っ赤だよ(^^;
まー何気に足 コ キしてもらったのって初めてだし、得っちゃ得だけどねーwww

http://kachi.strowcrue.net/UiY9B02/

だしゃーし!!!!!!だしゃーし!!!!!! 2009/08/17 17:48
ぜっぷる!ぜっぷーる!!ぴゃひぃぃ!!!!!
ちょっと!落ち着け!!!いや、俺が落ち着く!!!!!!!!

なんかよくわからんが濡れ濡れオ マ ン 湖にカチカチの俺様を挿入しただけで
5 万貰えた!!! ナニこれww ちょっと今からもっかい行ってくるwwwwww

http://yuzo.plusnote.net/7AVJqvd/

くっちゃいの!くっちゃいの! 2009/08/23 20:42
3日お風呂入らずに来て!!って言われたから
我慢してその通りにしたんだが、行為を始めた途端に
チ ン カ スだらけの俺のテ ィ ン コを咥えてキレイにしてくれたわwwww

とりあえずされるがままでフィニッシュしたんだが、
ボーナス付けるとかイミフな事言われて8 万ゲットしたよ(^^;ラッキー♪

http://okane.d-viking.com/Rnw5eYf/

もっとほしいです!!もっとほしいです!! 2009/08/28 09:24
とりま一回3 万って事で約束してたんだけど、
色々オモチャ使ったりビデオ撮ってあげたりしたら

1 0 万 貰 え た 件 wwwwwwwwww

やりたい放題するほど報 酬増えるとかマジキチwwwwww

http://koro.chuebrarin.com/ZgjJup7/

774774 2009/09/04 06:21 面白く、わかりやすかったです
アイデアで飯が食えるって格好いいな…

ありがとうありがとう 2009/09/25 04:32 「【詳報】Google Waveとは何なのか?」の記事はよくわからなかったけど、
この記事はわかりやすい!

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証