米Google Inc.が2009年5月28日に発表した新コミュニケーション・ツール「Google Wave」の内容について,開発者会議「Google I/O」のセッションが解説があった(Tech-On!関連記事1,2,3)。
同時並行制御の基本的な考え方は,1995年に米Xerox Corp.のPARC(Palo Alto Research Center)で開発された「Jupiter Collaboration System」で用いられたものを踏襲している。文書に対する更新はクライアント側とサーバー側の両方で発生する。その際にそれぞれの側での更新を一連の操作として,それぞれの「操作ストリーム」を生成する。操作とは,例えば「何文字目を消去」「何文字目に文字列‘abc’を追加」などといったものだ。
ここで単純にそれぞれの操作を実施してしまうと,タイミングによってはクライアント側とサーバー側の情報が食い違ってしまう。並行して同時に操作が発生した場合に,同時発生後の操作の内容を修正してから操作を実施するというのが基本的なアイデアである。これを「Operational Transformation(OT)」と呼んでいる。ただしサーバーには複数台の操作が入るため,基本的にはサーバー側ではOTの変更は実施しない。クライアント側で工夫している。まずクライアントはサーバーから「了解」のメッセージが返るまで,次の操作は送信しない。つまりクライアント側の変更は1回までとなる。クライアント側でサーバーのOTパスを推測して保存し,クライアント側で操作の変更をしてからサーバーに送るようにしている。