【手続補正書】
【提出日】平成25年3月29日(2013.3.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
クライアントコンピューターにおいて、アンドゥ操作中、メタデータを保存するための方法であって、
前記クライアントコンピューターにおいて、文書の第１のセクションを、前記クライアントコンピューターの文書処理アプリケーション上で修正するステップであって、文書の第１のセクションを修正するステップは、前記文書の前記第１のセクションにおいて１つまたは複数のユーザーアクションを実施するステップを含む、ステップと、
前記文書の前記第１のセクションを修正している間に、前記クライアントコンピューターにおいて、前記文書の第２のセクションに対するメタデータを受信するステップであって、前記文書の前記第２のセクションは、前記文書の前記第１のセクションとは異なる、ステップと、
前記文書の前記第２のセクションに対する前記メタデータを受信した後、前記文書の前記第２のセクションに前記メタデータを挿入するステップと、
前記メタデータが前記文書の前記第２のセクションに挿入された後、アンドゥ操作を前記文書処理アプリケーション上で実施するステップであって、前記アンドゥ操作が、
前記クライアントコンピューターにおいて、前記文書の前記第２のセクションに対する前記メタデータを取り除くステップと、
前記文書の前記第１のセクションにおける前記１つまたは複数のユーザーアクションのうちの最新のユーザーアクションをアンドゥするステップと、
前記文書の前記第２のセクションに対する前記メタデータを復元するステップと
を含むステップであって、前記クライアントコンピューターにおいて前記文書の前記第２のセクションに対する前記メタデータを取り除くステップは、プログラムスタックから前記メタデータを取り除くステップと、前記プログラムスタックとは異なる前記クライアントコンピューター上のメモリ領域に前記メタデータを記憶するステップとを含む、ステップと
を含むことを特徴とする方法。
【請求項２】
前記文書の前記第２のセクションに対して、前記クライアントコンピューターにおいて受信された前記メタデータは、前記文書の前記第２のセクションに対するロックであることを特徴とする請求項１に記載の方法。
【請求項３】
前記文書の前記第１のセクションは、前記文書内のパラグラフに対応することを特徴とする請求項１に記載の方法。
【請求項４】
前記文書の前記第２のセクションに対して前記受信されたメタデータをプログラムスタック内に記憶するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記プログラムスタックは、アンドゥ／リドゥスタックであることを特徴とする請求項４に記載の方法。
【請求項６】
前記１つまたは複数のユーザーアクションは、前記プログラムスタックに保存されることを特徴とする請求項４に記載の方法。
【請求項７】
前記最新のユーザーアクションをアンドゥするステップは、前記プログラムスタックから前記最新のユーザーアクションを取り除くステップを含むことを特徴とする請求項４に記載の方法。
【請求項８】
前記文書の前記第２のセクションに対する前記メタデータを取り除くステップは、前記プログラムスタックとは異なる前記クライアントコンピューター上の前記メモリ領域から前記メタデータを取得するステップと、前記取得されたメタデータを前記プログラムスタックに記憶するステップとを含むことを特徴とする請求項７に記載の方法。
【請求項９】
前記１つまたは複数のユーザーアクションは、前記文書の前記第１のセクション内でタイプすること、前記文書の前記第１のセクション内で書式変更をすること、および前記文書の前記第１のセクション内でテキストを削除することを含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記文書の前記第１のセクションは、前記文書内の第１のユーザーが編集している第１のパラグラフに対応し、前記文書の前記第２のセクションは、第２のユーザーが編集している第２のパラグラフに対応することを特徴とする請求項１に記載の方法。
【請求項１１】
前記第２のユーザーに前記第１のパラグラフを修正させないための第１のロックを送信するステップさらに含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記第１のユーザーに前記第２のパラグラフを修正させないための第２のロックを送信するステップさらに含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
コンピューティング装置であって、
処理ユニットと、
前記処理ユニットに接続されたシステムメモリであって、前記処理ユニットによって実行される際、
ユーザーが前記コンピューティング装置上で文書を作成および編集することを可能とする文書処理モジュールと、
サーバーコンピューターからメタデータを受信し、前記文書処理モジュールによって開かれた文書の１つまたは複数のセクションに、前記メタデータを挿入するメタデータマージモジュールと、
１つまたは複数のユーザーアクションを記憶し、前記サーバーコンピューターから受信したメタデータを記憶するアンドゥ／リドゥモジュールであって、アンドゥ／リドゥスタックを含み、前記メタデータおよび前記ユーザーアクションは前記アンドゥ／リドゥスタックに記憶され、ユーザーアクションをアンドゥする前に、前記文書の１つまたは複数のセクションから前記メタデータを取り除くことにより、ユーザーが前記１つまたは複数のユーザーアクションをアンドゥすることを可能にし、前記ユーザーアクションをアンドゥした後、前記文書の前記１つまたは複数のセクションに取り除かれたメタデータを再挿入するアンドゥ／リドゥモジュールと、
サーバーコンピューターから受信されたメタデータを文書上に表示するユーザーインタフェースモジュールと
を前記処理ユニットに作成させる命令を備えるシステムメモリであって、前記アンドゥ／リドゥモジュールは前記アンドゥ／リドゥスタックから前記メタデータを取り除き、前記アンドゥ／リドゥスタックとは異なる前記クライアントコンピューター上のメモリ領域に前記メタデータを記憶するシステムメモリと
を備えたことを特徴とするコンピューティング装置。
【請求項１４】
前記文書の１つまたは複数のセクションは、パラグラフであることを特徴とする請求項１３に記載のコンピューティング装置。
【請求項１５】
前記メタデータは、ロックであり、前記ロックは、前記ロックが挿入された前記文書の前記１つまたは複数のセクションに、ユーザーが書き込むことを防止することを特徴とする請求項１４に記載のコンピューティング装置。
【請求項１６】
前記メタデータは、ロックであり、前記ロックは、前記ロックが挿入された前記文書の前記１つまたは複数のセクションに、ユーザーが書き込むことを防止することを特徴とする請求項１３に記載のコンピューティング装置。
【請求項１７】
前記アンドゥ／リドゥモジュールはさらに、リドゥプログラムスタックを備え、前記リドゥプログラムスタックは、１つまたは複数のユーザーアクションおよびメタデータを記憶し、前記リドゥプログラムスタックにより、前記文書内の前記メタデータのインテグリティを維持しながら、前記ユーザーアクションに対するアンドゥ操作は取り消されることを可能とすることを特徴とする請求項１３に記載のコンピューティング装置。
【請求項１８】
命令を備えるコンピューター可読記憶媒体であって、第１のクライアントコンピューターの処理ユニットによって実行されるときに、前記第１のクライアントコンピューターの前記処理ユニットに、
前記第１のクライアントコンピューター上で文書の第１のパラグラフを編集するステップであって、前記第１のパラグラフは、前記第１のクライアントコンピューター上でユーザーによって編集され、前記文書の前記第１のパラグラフの前記編集は、前記文書の前記第１のパラグラフ内に１つまたは複数のユーザーアクションを含み、前記１つまたは複数のユーザーアクションは、前記第１のパラグラフ内にタイプすること、前記第１のパラグラフ内のテキストを削除すること、前記第１のパラグラフ内の書式変更をすること、および前記第１のパラグラフを書式設定することを含み、前記文書の前記第１のパラグラフ内の前記１つまたは複数のユーザーアクションは、前記第１のクライアントコンピューター上のアンドゥ／リドゥスタック上に記憶する、ステップと、
前記文書の前記第１のパラグラフを編集している間に、前記第１のクライアントコンピューターにおいて、前記文書の第２のパラグラフに対するロックを受信するステップであって、前記ロックはサーバーコンピューターから受信され、前記ロックは、第２のクライアントコンピューター上の別のユーザーが、現在前記文書の前記第２のパラグラフを編集していることを示し、前記ロックにより前記ユーザーが前記第２のパラグラフを編集できないようにする、ステップと、
前記文書の前記第２のパラグラフに対する前記ロックを受信した後、前記第１のクライアントコンピューター上の前記処理ユニットに、
前記文書の前記第２のパラグラフ内に前記ロックを挿入するステップであって、前記ロックにより、前記第１のクライアントコンピューター上の前記ユーザーが、前記第１のクライアントコンピューター上で前記第２のパラグラフを編集することができないようにする、ステップと、
前記第１のクライアントコンピューターの前記アンドゥ／リドゥスタック上に前記ロックを記憶するステップと、
前記第１のクライアントコンピューターの前記アンドゥ／リドゥスタック上に前記ロックを記憶した後、前記第１のクライアントコンピューターにおいてアンドゥ操作を実施するステップであって、前記アンドゥ操作により、前記第１のクライアントコンピューター上の前記処理ユニットに、
前記第１のクライアントコンピューターにおいて前記アンドゥ／リドゥスタックから前記文書の前記第２のパラグラフに対する前記ロックを取り除くステップと、
前記第１のクライアントコンピューターにおいて前記アンドゥ／リドゥスタックから前記ロックが取り除かれると、前記ロックを前記第１のクライアントコンピューター上のメモリに一時的に記憶するステップであって、前記ロックは、前記アンドゥ／リドゥスタックを含まないメモリ領域に記憶する、ステップと、
前記第１のクライアントコンピューターにおいて前記アンドゥ／リドゥスタックから前記ロックが取り除かれると、前記第１のクライアントコンピューターにおいて、前記１つまたは複数のユーザーアクションの内の最新のものをアンドゥするステップであって、前記１つまたは複数のユーザーアクションの内の前記最新のものは、前記アンドゥ／リドゥスタックから取り除かれる、ステップと
前記第１のクライアントコンピューターにおいて前記１つまたは複数のユーザーアクションの内の前記最新のものがアンドゥされた後、前記ロックが一時的に記憶される前記第１のクライアントコンピューター上の前記メモリ領域から前記ロックを取り除き、前記ロックを前記アンドゥ／リドゥスタック上に復元するステップと、
を行わせるステップと
を行わせることを特徴とするコンピューター可読記憶媒体。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【発明の名称】メタデータマージにわたるアンドゥ機能およびリドゥ機能の維持
【技術分野】
【０００１】
（背景技術）
オンライン文書コラボレーションシステムは、文書の共同オーサリングを支援すること
ができる。共同オーサリングにより、複数のユーザーが同一文書にアクセスし、文書に変更を加え、文書コラボレーションシステムにおいてそれらの変更をマージすることが可能となる。異なるユーザーが文書の同一部分を編集している場合、問題が起こり得る。
【０００２】
例えば、２人のユーザーが文書の同一部分に変更を加える場合があり、システムは、修正を単一の文書にマージする際、それらの変更を調整しなければならない。さらに、ユーザーが文書を以前の状態に戻そうとするがその間に他のユーザーがその文書をすでに修正している場合、不一致が生じ得る。この結果、例えば、ユーザーが、共同オーサリングされる文書に自分が加えた変更をアンドゥ(Undo)しようとする場合、予期せぬ挙動を生む可能性がある。
【発明の概要】
【課題を解決するための手段】
【０００３】
開示の実施形態は、クライアントコンピューターにおいて、アンドゥ操作中、メタデータを保存することを対象とする。文書の第１のセクションは、クライアントコンピューターの文書処理アプリケーション上で修正される。文書の第１のセクションを修正することには、文書の第１のセクションにおいて１つまたは複数のユーザーアクションを実施することが含まれる。文書の第１のセクションを修正している間に、文書の第２のセクションに対するメタデータを、クライアントコンピューターにおいて受信する。文書の第２のセクションは、文書の第１のセクションとは異なる。文書の第２のセクションに対するメタデータを受信した後、メタデータを文書の第２のセクションに挿入する。
【０００４】
メタデータを文書の第２のセクションに挿入した後、アンドゥ操作は文書処理アプリケーション上で実施される。アンドゥ操作は、文書の第２のセクションからメタデータを取り除くステップ、文書の第１のセクションにおける１つまたは複数のユーザーアクションの内の最新のユーザーアクションをアンドゥするステップ、および文書の第２のセクションに対するメタデータを復元するステップを含む。
【０００５】
１つまたは複数の技術の詳細について、以下の添付図面および記述において説明する。これらの技術の他の特徴、目的および利点は、以下の記述、図面および請求項から明らかとなろう。
【図面の簡単な説明】
【０００６】
【図１】メタデータマージにわたって文書におけるアンドゥ(undo)／リドゥ(redo)機能を維持するためのシステム例を示す図である。
【図２】メタデータマージにわたって文書におけるアンドゥ／リドゥ機能を維持するための機能を実装する、図１のクライアントコンピューター例のモジュール例を示す図である。
【図３】アンドゥ／リドゥスタック例のタイムスナップショット例を示す図である。
【図４】クライアントコンピューター例において実施されるアンドゥ操作例の流れ図である。
【図５】メタデータマージにわたって文書におけるアンドゥ／リドゥ機能の維持を実装する図２のクライアントコンピューター例を示す図である。
【発明を実施するための形態】
【０００７】
本開示は、共同オーサリングされる文書において、メタデータマージにわたってアンドゥ／リドゥ機能を維持するシステムおよび方法を対象とする。共同オーサリングされる文書は、複数のユーザーが同時にアクセスおよび修正することができる文書である。
【０００８】
本明細書に記載するいくつかの例においては、アンドゥ／リドゥ機能は、メタデータマージにわたって維持される。メタデータ、一般的には共同オーサリングしている別のユーザーからのパラグラフロックを文書に挿入する場合、メタデータマージが生じる。本システムおよび本方法は、ユーザーアクションを記憶し、メタデータもまた記憶する状態ベースのアンドゥ／リドゥスタックの使用について開示するものである。本システムおよび本方法により、アンドゥ／リドゥ機能がメタデータマージの影響を受けないように、スタック上に記憶したメタデータを効果的にスキップすることが可能となる。
【０００９】
図１は、メタデータマージにわたって文書におけるアンドゥ／リドゥ機能を維持するためのシステム例１００を示している。例示的システム１００は、クライアント１０２および１０４、ネットワーク１０６、ならびにサーバー１０８を含む。より多くまたはより少ない数のクライアント、サーバー、およびネットワークを使用してもよい。本開示においては、クライアントおよびクライアントコンピューターという用語を区別なく用い、かつ、サーバーおよびサーバーコンピューターという用語を区別なく用いている。
【００１０】
例示の実施形態においては、クライアント１０２および１０４は、以下に説明するように、コンピューティング装置である。
【００１１】
クライアント１０２、１０４に記憶された複数の情報の中には、クライアントＯＳ(Operating System)およびクライアントアプリケーションがある。クライアントＯＳは、クライアントシステムのハードウェアリソースおよびソフトウェアリソースを管理するプログラムである。クライアントアプリケーションはクライアント１０２、１０４のリソースを利用して、ユーザーにより指定されたタスクを直接実施する。例えば、クライアント１０２、１０４は、文書ファイルを作成し編集するために用いられる文書処理プログラムといった、１つまたは複数のソフトウェアアプリケーションを含む。このようなアプリケーションの一例は、ワシントン州レドモンドにあるＭｉｃｒｏｓｏｆｔ社製のＭｉｃｒｏｓｏｆｔ  Ｗｏｒｄ文書処理アプリケーションである。このようなアプリケーションの他の例もまた、適用可能である。
【００１２】
実施形態例においては、ネットワーク１０６は、ＬＡＮ(Local Area Network)、ＷＡＮ(Wide Area Network)、またはインターネットである。クライアント１０２および１０４は、サーバー１０８、およびサーバー１０８にリモートに接続されたリソースにアクセスすることができる。
【００１３】
例示のサーバー１０８は一般的に、ワシントン州レドモンドにあるＭｉｃｒｏｓｏｆｔ社製のＷＩＮＤＯＷＳ（登録商標）オペレーティングシステムといった、ネットワークコンピューターの動作を制御するのに適したオペレーティングシステム、または、これもまたワシントン州レドモンドにあるＭｉｃｒｏｓｏｆｔ社製のＷｉｎｄｏｗｓ（登録商標）  Ｓｅｒｖｅｒ  ２００８といったサーバーを含む。
【００１４】
一実施形態例においては、システム例１００は、オンラインブラウザーベースの文書コラボレーションシステムである。オンラインブラウザーベースの文書コラボレーションシステムの一例は、ワシントン州レドモンドにあるＭｉｃｒｏｓｏｆｔ社製のＳＨＡＲＥＰＯＩＮＴ（登録商標）チームサービスソフトウェアである。システム例１００において、サーバー１０８は、例えばワシントン州レドモンドにあるＭｉｃｒｏｓｏｆｔ社製のＭｉｃｒｏｓｏｆｔ  Ｏｆｆｉｃｅ  ＳｈａｒｅＰｏｉｎｔ  Ｓｅｒｖｅｒ  ２００７といった、Ｍｉｃｒｏｓｏｆｔ  ＳｈａｒｅＰｏｉｎｔサーバーである。
【００１５】
実施形態例においては、クライアント１０２および１０４は、サーバー１０８上に記憶された文書を共同オーサリングすることができる。文書の各セクションは、一般的にはパラグラフである。しかしながら、セクションは、例えば、文、パラグラフ、見出し、図面、表などといった、文書の任意の下位部分であることができる。文書は、例えば単一の表、単一の文といった、１つのセクションだけを含んでもよく、または、複数の表、複数の文、もしくは複数のパラグラフといった、複数のセクションを含んでもよい。本明細書に開示する実施形態例では、文書のセクションは文書のパラグラフである。
【００１６】
クライアント１０２における共同オーサリングのユーザーが、文書のパラグラフ内にタイプすると、例示のクライアント１０２がそのパラグラフに関するメタデータをサーバー１０８に送信する。メタデータは一般的にパラグラフロックの形態であり、クライアント１０２が編集中のパラグラフをロックしていることを示している。一例では、ユーザーがパラグラフに修正を加えると、そのパラグラフは編集中であると識別される。別の例では、ユーザーがパラグラフにカーソルを置くと、そのパラグラフは編集中であると識別される。ただ１人の共同オーサリングのユーザーしか、文書のある特定のパラグラフを同時に編集することを許されないため、クライアント例は編集中のパラグラフをロックする。
【００１７】
サーバー１０８がクライアント１０２からメタデータを受信すると、サーバー１０８は、文書を開いている他の共同オーサリングのユーザー全てを識別する。サーバー１０８は、識別した共同オーサリングのユーザーに、メタデータを送信する。例えば、例示のクライアント１０４上の共同オーサリングのユーザーが文書を開いている場合、サーバー１０８は、クライアント１０４上の共同オーサリングのユーザーが開いている文書に、メタデータを挿入する。
【００１８】
実施形態例においては、サーバー１０８は、クライアント１０２上の共同オーサリングのユーザーが編集中のパラグラフに対応する、クライアント１０４上の共同オーサリングのユーザーが開いている文書のパラグラフに、パラグラフロックを挿入する。ロックにより、クライアント１０４上の共同オーサリングのユーザーが、ロックが挿入されたパラグラフを編集できないようにする。しかしながら、クライアント１０４上の共同オーサリングのユーザーは、文書内のロックされていない他の任意のパラグラフを編集してもよい。クライアント１０４上の共同オーサリングのユーザーはまた、クライアント１０４上で開かれている文書内に、１つまたは複数の新しいパラグラフを作成し、それらのパラグラフを編集してもよい。
【００１９】
クライアント１０４上での編集の過程で、共同オーサリングのユーザーがユーザーアクションをアンドゥしたい場合がある。例えば、共同オーサリングのユーザーが、誤ったキーをタイプした、共同オーサリングのユーザーが書式変更をしたがアンドゥしたい、または、共同オーサリングのユーザーがカットアンドペースト操作を行ったがアンドゥしたい場合がある。共同オーサリングのユーザーが望む他のユーザーアクションが可能である。
【００２０】
アンドゥ操作のさらなる例は、２００５年３月３０日出願の米国特許第７，４９９，９５５号明細書、および２００７年１月１５日出願の米国特許出願第１１／６２３，２３４号明細書に記載されており、その両者とも、参照により本明細書に組み込まれる。
【００２１】
例示のクライアント１０４上の共同オーサリングのユーザーがユーザーアクションをアンドゥする１つの方法は、例えば、クライアント１０４上の例示のアンドゥキーを押すことにより、アンドゥ操作を実施することである。一般的に、アンドゥ操作は、最新のアクションをアンドゥし、文書を以前のアクションに戻す。例えば、共同オーサリングのユーザーが、文書内に文字「ｔ」「ｈ」および「ｅ」をタイプした場合、例１０４上の例示のアンドゥキーを押すと、最新のアクション（たとえば文字「ｅ」のタイピング）を削除し、その結果、文書はアンドゥ操作後、文字「ｔ」および「ｈ」を含む。
【００２２】
ユーザーアクションをアンドゥすることを可能とするために、ユーザーアクションは一般的に、例えばアンドゥ／リドゥスタックといったプログラムスタック上に保存する。例えば、ユーザーが文字「ｔ」をタイプすると、文字「ｔ」をアンドゥ／リドゥスタック上に記憶する。次いで、文字「ｈ」をタイプすると、文字「ｈ」をアンドゥ／リドゥスタック上に記憶し、文字「ｅ」をタイプすると、文字「ｅ」をアンドゥ／リドゥスタック上に記憶する。実施形態例においては、実際の文字をスタック上に記憶するのではない。代わりに、メモリ内の領域へのポインタを記憶することができる。メモリ内の領域が、実際の文字を含むことができる。
【００２３】
例えばアンドゥ／リドゥスタックといったプログラムスタックは、後入れ先出しベースで動作する。上記の例では、文字「ｅ」は、それがスタック上に記憶した３つの文字の内の最新の文字だったので、最初にスタックから離れる。アンドゥ操作例中に、文字「ｅ」をスタックから取り出し、スタックの一番上に文字「ｈ」が残る。
【００２４】
メタデータロックもまた、例示のアンドゥ／リドゥスタック上に記憶する。ユーザーがパラグラフ内にタイプしている場合、ユーザーがタイプする各文字は、アンドゥ／リドゥスタック上に連続して記憶される。しかしながら、ユーザーがタイプしている間にメタデータロックを受信した場合、ロックもまた、アンドゥ／リドゥスタック上に記憶する。ロックをアンドゥ／リドゥスタック上に記憶する理由は、Ｍｉｃｒｏｓｏｆｔ  Ｗｏｒｄのような文書処理アプリケーションでは、アンドゥ／リドゥスタックは一般的に、ロックを含むあらゆるアクションを記憶するからである。従って、ユーザーがアンドゥ操作を実施する場合、ロックは、それがアンドゥ／リドゥスタックの一番上に配置されているので、一般的には廃棄されるのではなく保存されることが望ましい。この結果、ユーザーが予想するアンドゥ／リドゥの挙動が生じる。つまり、ユーザーは一般的に、最新のユーザーアクションをアンドゥし、文書内のいかなるロックも取り除かないアンドゥ操作を予想する。
【００２５】
アンドゥ操作中、パラグラフロックを保存するために、実施形態例においては、アンドゥ操作が生じた場合、パラグラフロックはアンドゥ／リドゥスタックから取り除かれ、一時的にクライアントコンピューター上のメモリに記憶される。次いで、アンドゥ／リドゥスタックの一番上に記憶したユーザーアクションはアンドゥされる。アンドゥ／リドゥスタックの一番上に記憶したユーザーアクションがアンドゥされた後、パラグラフロックはメモリから取得され、スタック上に戻して記憶する。この方法では、ユーザーの視点から、アンドゥ操作は予想通りに進行し、ロックは文書内に維持される。
【００２６】
図２は、例示のクライアント１０２上のモジュール例を示している。例示のクライアント１０２は、例示のデータ処理モジュール２０２、例示のメタデータマージモジュール２０４、例示のユーザーインタフェースモジュール２０６、および例示のアンドゥ／リドゥモジュール２０８を含む。例示のデータ処理モジュール２０２には、ワシントン州レドモンドにあるＭｉｃｒｏｓｏｆｔ社製のＭｉｃｒｏｓｏｆｔ  Ｗｏｒｄ文書処理アプリケーションといった文書処理プログラムを含む。
【００２７】
例示のメタデータマージモジュール２０４は、例示のサーバー１０８から受信したメタデータを処理し、メタデータを、クライアントコンピューター１０２上で開いている文書の適切なセクションに挿入する。一般的には、メタデータは、他の共同オーサリングのユーザーが編集中の文書のセクションにかかっているロックを表す。例示のメタデータマージモジュール２０４が文書のある特定のセクションに対するロックをサーバー１０８から受信すると、例示のメタデータマージモジュール２０４は、クライアントコンピューター１０２上で開かれている文書の対応するセクションに、ロックを挿入する。ロックにより、クライアント１０２上の共同オーサリングのユーザーがロックの対象となっている文書のセクションを編集できないようにする。実施形態例においては、文書のセクションは文書のパラグラフに対応する。他の実施形態例においては、文書のセクションの粒度は、上述のように変化してよい。
【００２８】
例示のユーザーインタフェースモジュール２０６は、例示のメタデータマージモジュール２０４からロックを受信し、文書の適切なセクションにロックを表示する。たとえば、例示のユーザーインタフェースモジュール２０６は、パラグラフがロックされていることを示すために、パラグラフを角括弧する。別の例としては、例示のユーザーインタフェースモジュールは、ロックされているパラグラフに隣接して、ロックを表すアイコンを挿入してもよい。さらに、例示のユーザーインタフェースモジュールは、パラグラフを共同オーサリングしているユーザー名を表示してもよい。他の例も可能である。ユーザーが、パラグラフがロックされているというグラフィカルな表示を見ると、ユーザーは、ロックが取り除かれるまで、そのパラグラフ内の編集が無効となることを知らされる。
【００２９】
このようなロックに関するさらなる詳細は、２００８年６月２５日出願の米国特許出願第１２／１４５，５３６号明細書に見出すことができ、その全体が参照により本明細書に組み込まれる。他の構成も可能である。
【００３０】
例示のアンドゥ／リドゥモジュール２０８は、アンドゥ要求およびリドゥ要求を処理し、文書内のいかなるメタデータロックのインテグリティをも維持しながら、文書内のアンドゥ操作およびリドゥ操作を実施する。例示のアンドゥ／リドゥモジュール２０８は例示のアンドゥ／リドゥスタックを含む。例示のアンドゥ／リドゥスタックはアンドゥセクションおよびリドゥセクションを含む。従来のプログラムスタックは、入力をスタック上に積み、入力をスタックから取り出すが、例示のアンドゥ／リドゥスタックは、アンドゥ／リドゥスタックのある特定の部分にマーカーを設ける。マーカーがアンドゥ／リドゥスタックのどこを指しているかに関連して、ユーザーアクションおよびメタデータロックをアンドゥ／リドゥスタックに記憶する、またはそこから取り除く。論じたように、実施形態例においては、アンドゥ／スタック例は、ユーザーアクションを指すポインタおよびメタデータロックを指すポインタを記憶することができる。
【００３１】
アンドゥ要求が受信されると、例示のアンドゥ／リドゥモジュール２０８は、クライアントコンピューター１０２上のアンドゥ／リドゥスタックをチェックし、アンドゥ／リドゥスタックのアンドゥ部から、何らかのメタデータロックを取り除く。次いで、アンドゥ／リドゥスタックのアンドゥ部から取り除いた全てのメタデータロックは、一時的にクライアントコンピューター１０２上のメモリに記憶される。次いで、最新のユーザーアクションはアンドゥ／リドゥスタックから取り除かれ、最新のユーザーアクションは元に戻される。例えば、最新のユーザーアクションが文字を太字体にすることであった場合、アンドゥ操作により、その文字から太字体が取り除かれる。
【００３２】
アンドゥ操作が完了した後、例示のアンドゥ／リドゥモジュール２０８は、メモリに一時的に記憶したロックを取り出し、ロックをアンドゥ／リドゥスタックに復元する。例示のアンドゥ／リドゥモジュールは、ロックをアンドゥ／リドゥスタックから取り除いたのと反対の順序で、ロックを復元する。例えば、２つのロックがアンドゥ／リドゥスタックから取り除かれた場合、先ず取り除いた第２のロックをスタックに復元し、次に取り除いた第１のロックを復元する。すると、スタック上のロックは、最新のユーザーアクションをアンドゥ／リドゥスタックから取り除く前と同じ順序となる。従って、無反応または不規則なユーザーインタフェースの挙動といった、ユーザー体験への何らかの悪影響を最小限に抑えつつ、ロックを復元する。
【００３３】
アンドゥ／リドゥスタックにより、アンドゥ操作はリドゥされることも可能となる。例えば、ユーザーアクションが、アンドゥ操作の結果として、アンドゥ／リドゥスタックのアンドゥセクションから取り除かれた場合、ユーザーアクションは、アンドゥ／リドゥスタックのリドゥ部に記憶される。アンドゥ操作は取り消されるべきと判断される場合、例えば、例示のクライアントコンピューター１０２上の例示のリドゥボタンを押すことにより、ユーザーアクションはアンドゥ／リドゥスタックのリドゥ部から取り除かれ、文書に、およびアンドゥ／リドゥスタックのアンドゥ部に復元する。例えば、アンドゥ操作が文書から文字「ｅ」を取り除いた場合、リドゥ操作は文字「ｅ」を復元する。さらに、リドゥ操作は文字「ｅ」をアンドゥ／リドゥスタックのアンドゥ部に復元する。
【００３４】
図３は、ユーザーの編集セッションのタイムスナップショット(time snapshot)におけるアンドゥ／リドゥスタック例および文書例を示している。例示の図において、各文字は、例えばパラグラフＡ、Ｂ、Ｃ、およびＤといったある特定のパラグラフのコンテンツを表している。
【００３５】
タイムスナップショット３０２において、ユーザーが、パラグラフＡにおけるコンテンツを含む文書を開く。なんら編集されていないので、例示のアンドゥ／リドゥスタックは空である。
【００３６】
タイムスナップショット３０４において、ユーザーが、パラグラフＢに対するコンテンツを作成する。例示のアンドゥ／リドゥスタックは水平ライン３１４を示し、それは、例示のアンドゥ／リドゥスタックのリドゥ部と例示のアンドゥ／リドゥスタックのアンドゥ部との間の境界を示している。例示のアンドゥ／リドゥスタックのアンドゥ部は、下部３１６である。タイムスナップショット３０４において、例示のアンドゥ／リドゥスタックの下部３１６は「‐Ｂ」を示している。「‐Ｂ」はパラグラフＢに対するアンドゥアクションを表している。例示のパラグラフＢでなされる各ユーザーアクションは、記号「‐Ｂ」で表される。例えば、ユーザーが、パラグラフＢ内に文字「Ｔ」「ｈ」および「ｅ」のみタイプした場合、各文字は、タイプした順序、すなわち最初に「Ｔ」、次に「ｈ」、その次に「ｅ」の順序で、アンドゥ／リドゥスタックに挿入される。簡単にするため、これらのアクションすべてを、記号「‐Ｂ」で表す。
【００３７】
タイムスナップショット３０６において、ユーザーが、パラグラフＣに対するコンテンツを作成する。それに応じて、スナップショット３０６の文書セクションは、文書が現在パラグラフＡ、Ｂ、およびＣ内にコンテンツを有することを示している。さらに、記号「‐Ｃ」は、アンドゥ／リドゥスタックの下部３１８に追加される。
【００３８】
タイムスナップショット３０８において、メタデータマージの結果として、パラグラフＡに対するロックが、例示のクライアントコンピューター１０２において受信される。ロックは、パラグラフＡの周りのロック記号３２０により表している。ロックは、例えばクライアントコンピューター１０４といったクライアントシステム上の共同オーサリングのユーザーが、パラグラフＡを編集していることを表しているメタデータである。ロックがクライアントコンピューター１０２で受信されると、ロックは、アンドゥ／リドゥスタックのアンドゥセクションにも追加される。これを例示のロック記号３２２で表している。ロック３２２はまた、アンドゥ／リドゥスタックのアンドゥ部内で、先の入力「‐Ｃ」と角括弧３２４でくくられていることを示している。ロックが先の入力「‐Ｃ」と角括弧でくくられていることを示す理由は、メタデータマージの前の文書の状態を強調するためである。
【００３９】
タイムスナップショット３１０において、例示のクライアントコンピューター１０２におけるユーザーが、パラグラフＣ内で行った最新の入力をアンドゥするためにアンドゥ操作を実施すると決定する。アンドゥ操作が実施されると、例示のアンドゥ／リドゥモジュール２０８が、文書例３３０内のロックを一時的に取り除き、パラグラフＣ内で行った最新の入力に対するアンドゥ操作を実施し、次いで文書例３３０内にロックを再挿入する。これらのアクションは、例示のアンドゥ／リドゥスタックのリドゥ部３２６に追加される。アクションが、例示のアンドゥ／リドゥスタックのリドゥ部３２６に追加されることで、必要ならば、リドゥ操作によってアクションを元に戻すことができる。
【００４０】
例示のアンドゥ／リドゥスタックの例示のリドゥ部３２６は、パラグラフＣに対して行った最新の入力に対するアンドゥアクションをリドゥするためには、例示のアンドゥ／リドゥスタックの例示のリドゥ部３２６の下から上に向かって、まず、現在のロック（記号「‐Ｌ」で示されている）を取り除き、次いで、パラグラフＣに対する最新の入力をパラグラフＣに再挿入し、次いで、ロック（記号「Ｌ」で示されている）を文書に再挿入することを示している。
【００４１】
タイムスナップショット３１０はまた、パラグラフＣに対するアンドゥ操作後、文書例３３０がパラグラフＡおよびＢを含むことを示している。これは、簡単にするために、パラグラフＣに対するアンドゥ操作により、パラグラフＣ内のテキストを全て取り除くと仮定している。タイムスナップショット３１０はまた、パラグラフＣ内の最新のユーザーアクションをアンドゥした後、例示のアンドゥ／リドゥスタック３２８のリドゥ部がロックおよびパラグラフＢの最新のユーザーアクションを示すことを示している。これは、次のアンドゥ操作により、ロックを一時的に取り除き、パラグラフＢの最新のユーザーアクションをアンドゥするよう設定されていることを示している。
【００４２】
タイムスナップショット３１２において、例示のクライアントコンピューター１０２におけるユーザーが、新しいパラグラフＤでタイプを開始する。ユーザーが新しいアクションを開始するといつでも、アンドゥ／リドゥスタックのリドゥ部がクリアされる。これは、新しいアクションを開始すると、先のアンドゥ操作を元に戻すことはもはやできないからである。例えば、ユーザーが「ｔ」「ｈ」および「ｓ」をタイプし、次いで「ｓ」に対してアンドゥ操作を行い、次いで「ｅ」をタイプした場合、「ｅ」をタイプしたときにリドゥスタックがクリアされていなければ、リドゥ操作は「ｓ」を復元し、結果「ｔ」「ｈ」「ｅ」「ｓ」となり、これは明らかに意図したものではない。
【００４３】
タイムスナップショット３１２の文書部例３３０は、パラグラフＤを文書に追加したことを示している。タイムスナップショット３１２の例示のアンドゥ／リドゥスタックの例示のアンドゥ部３３２は、記号「‐Ｄ」が追加されることを示している。パラグラフＤをパラグラフＡ上のロックを受信した後に作成しているので、最初にロックは取り除かれなくても、パラグラフＤに対する最新のユーザーアクションはアンドゥされることができる。しかしながら、パラグラフＤに対する最新のユーザーアクションがリドゥされる場合、論じたように、パラグラフＡに対する最新のユーザーアクションをアンドゥするために、文書例３３０上のロックは一時的に取り除かれなければならない。
【００４４】
図４は、例示のクライアントコンピューター１０２により実施される操作例４００を示す流れ図である。操作４０２において、共有文書は例示のクライアントコンピューター１０２で開かれる。共有文書は、例えばＭｉｃｒｏｓｏｆｔ  ＳｈａｒｅＰｏｉｎｔ  Ｓｅｒｖｅｒ  ２００７といった、オンラインブラウザーベースの文書コラボレーションサーバー上に記憶されるものである。共有文書はまた、例示のクライアントコンピューター１０４上のユーザーといった他のユーザーによる共同オーサリングに利用可能である。例示の文書処理モジュール２０２を用いて、共有文書は開かれ、処理される。
【００４５】
操作４０４において、クライアントコンピューター１０２上の共同オーサリングのユーザーが、文書の第１のパラグラフを修正する。ユーザーは、第１のパラグラフ内にタイプする、第１のパラグラフの一部を削除する、または、第１のパラグラフ内の書式変更をすることにより、第１のパラグラフを修正することができる。第１のパラグラフ内にタイプすることは、第１のパラグラフを作成すること、および第１のパラグラフ内のテキストを編集することを含む。
【００４６】
操作４０６において、クライアントコンピューター１０２上の例示のメタデータマージモジュール２０４が、文書の第２のパラグラフに対するメタデータロックを受信する。操作４０８において、例示のメタデータマージモジュール２０４が、メタデータロックを文書の第２のパラグラフに挿入する。メタデータロックは、クライアントコンピューター１０４に対して別のクライアントシステム上の共同オーサリングのユーザーが、文章の第２のパラグラフを修正していることを示している。メタデータロックにより、クライアントコンピューター１０２上のユーザーは文書の第２のパラグラフを修正できないこととなる。
【００４７】
操作４１０において、例示のユーザーインタフェースモジュール２０６が、クライアント１０２上の共同オーサリングのユーザーが文書のどのパラグラフがロックされているかすぐにわかるように、文書上にグラフィカルな形態でメタデータロックを表示する。操作４１２において、例示のメタデータマージモジュール２０４が、クライアントコンピューター１０２上のアンドゥ／リドゥスタック上にメタデータロックを記憶する。
【００４８】
操作４１４において、クライアントコンピューター１０２上の共同オーサリングのユーザーが、アンドゥ操作を開始する。例えば、クライアントコンピューター１０２上の共同オーサリングのユーザーが文書の第１のパラグラフの最新のユーザーアクションをアンドゥしたい場合がある。アンドゥ操作は、例示のアンドゥ／リドゥモジュール２０８によって処理される。最新のユーザーアクションは編集アクションであり、その編集アクションは、文字をタイプする、第１のパラグラフの一部を削除する、および、第１のパラグラフ内の書式変更をすることを含んでよい。ユーザーは一般的に、例えばアンドゥキーを押すというように、アンドゥ操作に関連するクライアントコンピューター１０２上のキーを押すことにより、アンドゥ操作を開始する。
【００４９】
操作４１６において、例示のメタデータマージモジュール２０４が、アンドゥ／リドゥスタック上のメタデータロックを取り除き、メタデータロックを、例示のクライアントコンピューター１０２上の、アンドゥ／リドゥスタック以外の領域にあるメモリに一時的に記憶する。操作４１８において、最新のユーザーアクションはアンドゥされ、操作４２０において、例示のメタデータマージモジュール２０４が、メタデータロックをアンドゥ／リドゥスタック上に復元する。
【００５０】
図５は、クライアント１０２上の例示の物理コンポーネントを示すブロック図である。クライアントコンピューター１０４、サーバーコンピューター１０８および／もしくはクライアントコンピューター１０２、１０４、ならびに／または、サーバーコンピューター１０８内の電子コンピューティング装置は、クライアント１０２と同様の方法で実装することができる。
【００５１】
図５の例に示すように、クライアント１０２は、例えば、デスクトップコンピューター、ラップトップコンピューター、端末コンピューター、携帯情報端末、または携帯電話などの電子コンピューティング装置である。
【００５２】
クライアントは、メモリユニット５０１を含む。メモリユニット５０１は、データおよび命令を記憶することが可能なコンピューター可読データ記憶媒体である。メモリユニット５０１は、様々な異なる種類のコンピューター可読データ記憶媒体であってよく、それらには、ＤＲＡＭ(dynamic random access memory)、ＤＤＲ  ＳＤＲＡＭ(double data rate synchronous dynamic random access memory)、低待ち時間ＤＲＡＭ(reduced latency DRAM)、ＤＤＲ  ＳＤＲＡＭ、ＤＤＲ３  ＳＤＲＡＭ、Ｒａｍｂｕｓ  ＲＡＭ、または他の種類のコンピューター可読データ記憶媒体を含むが、それらに限らない。
【００５３】
クライアント１０２はまた、通信媒体を含むことができる。通信媒体は一般的に、コンピューター可読命令、データ構造、プログラムモジュール、または、搬送波もしくは他のトランスポート機構といった変調データ信号による他のデータによって具現化することができ、任意の情報配信媒体を含む。「変調データ信号」という用語は、１つもしくは複数の特性のセットを有する信号か、または、情報を信号で符号化するような方法で変化した信号を意味する。例として、通信媒体は、有線ネットワークまたは直接有線接続といった有線媒体、ならびに、音響、ＲＦ、赤外線および他の無線媒体といった無線媒体を含む。
【００５４】
さらに、クライアント１０２は、処理ユニット５０２を含む。第１の例では、処理ユニット５０２は、処理ユニット５０２に特定の機能を提供させるソフトウェア命令を実行することができる。この第１の例では、処理ユニット５０２は、１つもしくは複数の処理コア、および／または、１つもしくは複数の別個のマイクロプロセッサとして実装してもよい。例えば、この第１の例では、処理ユニット５０２は、１つまたは複数のＩｎｔｅｌ  Ｃｏｒｅ２マイクロプロセッサとして実装してもよい。処理ユニット５０２は、ｘ８６命令セット、ＰＯＷＥＲ命令セット、ＲＩＳＣ命令セット、ＳＰＡＲＣ命令セット、ＩＡ‐６４命令セット、ＭＩＰＳ命令セット、または別の命令セットといった命令セットの命令を実行することが可能である。第２の例では、処理ユニット５０２は、特定の機能を提供するＡＳＩＣ(application specific integrated circuit)として実装してもよい。第３の例では、処理ユニット５０２は、ＡＳＩＣを用いることにより、およびソフトウェア命令を実行することにより、特定の機能を提供することができる。
【００５５】
クライアント１０２はまた、クライアントコンピューター（１０２および１０４）またはサーバーコンピューター１０８がビデオ情報を表示装置５０６に出力することを可能にするビデオインタフェース５０４を含む。表示装置５０６は、様々な異なる種類の表示装置であってよい。例えば、表示装置５０６は、ブラウン管表示装置、ＬＣＤ表示パネル、プラズマスクリーン表示パネル、タッチセンサー式表示パネル、ＬＥＤアレイ、または別の種類の表示装置であってよい。
【００５６】
さらに、クライアント１０２は、不揮発性記憶装置５０８を含む。不揮発性記憶装置５０８は、データおよび／または命令の記憶することが可能なコンピューター可読データ記憶媒体である。不揮発性記憶装置５０８は、様々な異なる種類の異なる不揮発性記憶装置であってよい。例えば、不揮発性記憶装置５０８は、ハードディスクドライブ、磁気テープドライブ、ＣＤ‐ＲＯＭドライブ、ＤＶＤ‐ＲＯＭドライブ、ブルーレイディスクドライブ、または他の種類の不揮発性記憶装置のうちの１つもしくは複数であってよい。
【００５７】
クライアント１０２はまた、クライアントコンピューター１０２、１０４、およびサーバーコンピューター１０８が外部コンポーネントと通信することを可能にする外部コンポーネントインタフェース５１０を含む。図５の例に示したように、外部コンポーネントインタフェース５１０は、入力装置５１２および外部記憶装置５１４と通信する。クライアント１０２の一実装においては、外部コンポーネントインタフェース５１０は、ＵＳＢ(Universal Serial Bus)インタフェースである。クライアント１０２の他の実装においては、クライアント１０２は、クライアント１０２が入力装置および／または出力装置と通信することを可能にする別の種類のインタフェースを含んでもよい。例えば、クライアント１０２は、ＰＳ／２インタフェースを含んでもよい。入力装置５１２は、様々な異なる種類の装置であってよく、それらには、キーボード、マウス、トラックボール、スタイラス入力装置、タッチパッド、タッチセンサー式表示装置、タッチセンサー式表示スクリーン、または他の種類の入力装置が含まれるが、それらに限らない。外部記憶装置５１４は、様々な異なる種類のコンピューター可読データ記憶媒体であってよく、それらには、磁気テープ、フラッシュメモリモジュール、磁気ディスクドライブ、光ディスクドライブ、および他のコンピューター可読データ記憶媒体が含まれる。
【００５８】
さらに、クライアント１０２は、クライアント１０２がネットワーク１０６とデータを送受信することを可能にするネットワークインタフェース５１６を含む。ネットワークインタフェース５１６は、様々な異なる種類のネットワークインタフェースであってよい。例えば、ネットワークインタフェース５１６は、イーサネット（登録商標）インタフェース、トークンリングインタフェース、光ファイバーインタフェース、無線ネットワークインタフェース（例えば、ＷｉＦｉ、ＷｉＭＡＸなど）、または別の種類のネットワークインタフェースであってよい。
【００５９】
クライアント１０２はまた、クライアント１０２の様々なコンポーネント間の通信を容易にする通信媒体５１８を含む。通信媒体５１８は、１つまたは複数の異なる種類の通信媒体を含み、それらは、ＰＣＩバス、ＰＣＩ  Ｅｘｐｒｅｓｓバス、ＡＧＰ(accelerated graphics port)バス、Ｉｎｆｉｎｉｂａｎｄ相互接続、シリアルＡＴＡ(advanced attachment)相互接続、パラレルＡＴＡ相互接続、ファイバチャネル相互接続、ＵＳＢバス、ＳＣＳＩ(small computer system interface)インタフェース、または別の種類の通信媒体を含むが、それらに限らない。
【００６０】
コンピューター可読データ記憶媒体のいくつかを図５の例に示している（すなわち、メモリユニット５０１、不揮発性記憶装置５０８、および外部記憶装置５１４）。これらのコンピューター可読データ記憶媒体は、合わせて単一の論理コンピューター可読データ記憶媒体を構成してもよい。この単一の論理コンピューター可読データ記憶媒体は、処理ユニット５０２により実行可能な命令を記憶することができる。上記の記述で説明したアクションは、この単一の論理コンピューター可読データ記憶媒体上に記憶された命令の実行の結果、生じ得るものである。従って、この記述において、ある特定の論理モジュールがある特定のアクションを実施すると述べる場合、その記述は、ソフトウェアモジュールの命令が、処理ユニット５０２といった処理ユニットにアクションを実施させることを意味すると解釈することができる。
【００６１】
上述の様々な実施形態は、単に例示として提供するものであって、限定と解釈すべきではない。上述の実施形態に、本開示の真の趣旨および範囲から逸脱することなく、様々な修正および変更を加えてもよい。