(57)【要約】  リアルタイムコラボレーションの間に複数のユーザ又はクライアントがスプレッドシートファイル上でプロセスを実行するための技術が開示されている。この技術によれば、少なくとも１つのクライアントによって計算をローカルに行うことができる。こうすることにより、効率アップを達成することができる。なぜなら、データ更新だけをホストマシンに提供すればよいからである。よって、好ましくは、ローカルに行われる計算が異なるデータを生成可能かを決定する。もしコンフリクトを起こすデータが生成される可能性があるならば、スプレッドシートファイルのための計算は通常、リモートでホストマシンによって行われる。そうでなければ、ローカル計算を行うことができる各クライアントは計算をローカルに行い、更新されたデータだけをホストマシンに送信する。計算をローカルに行うべきか否かの決定は、１つ又は複数の新しい式がスプレッドシートファイルに追加されたときのような場合に、状況に応じて実行される。
2011502303.tif 000002
【特許請求の範囲】
【請求項１】
プロセスを実行するためのコンピュータ実行可能命令を記憶したコンピュータ可読媒体であって、前記プロセスは、
第１のクライアント（２００）においてスプレッドシートファイル（２１０）を開くステップであって、前記スプレッドシートファイル（２１０）は第２のクライアント（２２０）においても開かれて前記第１のクライアント（２００）と前記第２のクライアント（２２０）とが前記スプレッドシートファイル（２１０）上でコラボレートするステップと、
前記スプレッドシートファイル（２１０）におけるデータに対して少なくとも１つの計算を前記第１のクライアント（２００）においてローカルに行うステップと、
前記第１のクライアント（２００）における前記第１のスプレッドシートファイル（２１０）に前記計算の結果を表示するステップとを備えることを特徴とするコンピュータ可読媒体。
【請求項２】
前記コンピュータ実行可能命令によって実行される前記プロセスは、前記スプレッドシートファイル（２１０）における計算がローカルに行われる場合に異なるデータを返信可能かを決定するステップをさらに備えることを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項３】
前記コンピュータ実行可能命令によって実行される前記プロセスは、前記スプレッドシートファイル（２１０）内の式を、異なる結果を生成することが知られている式の所定リストと比較するステップをさらに備えることを特徴とする請求項２に記載のコンピュータ可読媒体。
【請求項４】
前記コンピュータ実行可能命令によって実行される前記プロセスは、前記スプレッドシートファイル（２１０）における前記計算をローカルに行うべきかを前記第１のクライアント（２００）に選択させるステップをさらに備えることを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項５】
前記コンピュータ実行可能命令によって実行される前記プロセスにおいて、前記スプレッドシートファイル（２１０）における前記計算をローカルに行うべきかの前記選択は、管理方針によって予め決められることを特徴とする請求項４に記載のコンピュータ可読媒体。
【請求項６】
前記コンピュータ実行可能命令によって実行される前記プロセスは、コラボレーションの間に加えられた式について、前記スプレッドシートファイル（２１０）における計算がローカルに行われる場合に異なるデータを返信可能であるかを状況に応じて決定するステップをさらに備えることを特徴とする請求項２に記載のコンピュータ可読媒体。
【請求項７】
前記コンピュータ実行可能命令によって実行される前記プロセスは、
前記スプレッドシートファイル（２１０）における前記データに対する更新を受信するステップと、
更新された前記データを用いる式について、前記スプレッドシートファイル（２１０）における新しい計算をローカルに行うステップとをさらに備えることを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項８】
プロセスを実行するためのコンピュータ実行可能命令を記憶したコンピュータ可読媒体であって、前記プロセスは、
第１のクライアント（２００）においてスプレッドシートファイル（２１０）を開くステップであって、前記スプレッドシートファイル（２１０）は第２のクライアント（２２０）においても開かれて前記第１のクライアント（２００）と前記第２のクライアント（２２０）とが前記スプレッドシートファイル（２１０）上でコラボレートするステップと、
前記スプレッドシートファイル（２１０）におけるデータの計算を前記第１のクライアント（２００）においてローカルに行うべきか前記第１のクライアント（２００）以外のリモートデバイスにおいて行うべきかを決定するステップであって、
前記計算がローカルに行われるべきならば、前記計算を前記第１のクライアント（２００）においてローカルに行い、  
前記計算がリモートで行われるべきならば、前記計算を行うためのデータを前記リモートデバイスに送る、ステップとを備えることを特徴とするコンピュータ可読媒体。
【請求項９】
前記コンピュータ実行可能命令によって実行される前記プロセスは、前記スプレッドシートファイル（２１０）における計算がローカルに行われる場合に異なるデータを返信可能かを決定するステップをさらに備えることを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１０】
前記コンピュータ実行可能命令によって実行される前記プロセスは、前記スプレッドシートファイル（２１０）内の式を、異なる結果を生成することが知られている式の所定リストと比較するステップをさらに備えることを特徴とする請求項９に記載のコンピュータ可読媒体。
【請求項１１】
前記コンピュータ実行可能命令によって実行される前記プロセスは、前記スプレッドシートファイル（２１０）における前記計算をローカルに行うべきかを前記第１のクライアント（２００）に選択させるステップをさらに備えることを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１２】
前記コンピュータ実行可能命令によって実行される前記プロセスは、コラボレーションの間に加えられた式について、前記スプレッドシートファイル（２１０）における計算がローカルに行われる場合に異なるデータを返信可能かを状況に応じて決定するステップをさらに備えることを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１３】
前記コンピュータ実行可能命令によって実行される前記プロセスは、
前記スプレッドシートファイル（２１０）における前記データに対する更新を受信するステップと、
更新された前記データを用いる式について、前記スプレッドシートファイル（２１０）における新しい計算をローカルに行うステップとをさらに備えることを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１４】
プロセスを実行するためのコンピュータ実行可能命令を記憶したコンピュータ可読媒体であって、前記プロセスは、
第１のクライアント（２００）においてスプレッドシートファイル（２１０）を開くステップであって、前記スプレッドシートファイル（２１０）は第２のクライアント（２２０）においても開かれて前記第１のクライアント（２００）と前記第２のクライアント（２２０）とが前記スプレッドシートファイル（２１０）上でコラボレートするステップと、
前記スプレッドシートファイル（２１０）の前記スプレッドシートファイル（２１０）の全体よりも小さな第１のプライベートビューを前記第１のクライアント（２００）において提供するステップとを備えることを特徴とするコンピュータ可読媒体。
【請求項１５】
前記コンピュータ実行可能命令によって実行される前記プロセスは、前記第１のクライアント（２００）によって前記スプレッドシートファイル（２１０）上で行われる各処理をホストマシンに同期させるかを決定するステップをさらに備えることを特徴とする請求項１４に記載のコンピュータ可読媒体。
【請求項１６】
前記コンピュータ実行可能命令によって実行される前記プロセスにおいて、前記スプレッドシートファイル（２１０）の前記第１のプライベートビューが、前記スプレッドシートファイル（２１０）に適用されるフィルタによって決定されることを特徴とする請求１４に記載のコンピュータ可読媒体。
【請求項１７】
前記コンピュータ実行可能命令によって実行される前記プロセスは、前記第１のクライアント（２００）によって前記スプレッドシートファイル（２１０）に入力された新しいデータの全てをホストマシンに同期させるステップをさらに備えることを特徴とする請求項１４に記載のコンピュータ可読媒体。
【請求項１８】
前記コンピュータ実行可能命令によって実行される前記プロセスは、ホストマシンから受信された全ての変更を前記第１のクライアント（２００）に適用するステップをさらに備えることを特徴とする請求項１４に記載のコンピュータ可読媒体。
【請求項１９】
前記コンピュータ実行可能命令によって実行される前記プロセスは、前記スプレッドシートファイル（２１０）の前記第１のプライベートビューをホストマシンにおいても維持するステップをさらに備えることを特徴とする請求項１４に記載のコンピュータ可読媒体。
【請求項２０】
前記コンピュータ実行可能命令によって実行される前記プロセスは、
各クライアントのビューを前記スプレッドシートファイル（２１０）のフォーマットで書くステップと、
前記スプレッドシートファイル（２１０）の前記ビューをホストマシンに記憶するステップとをさらに備えることを特徴とする請求項１４に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
幾つかのスプレッドシートアプリケーションに関する新しい機能は、複数のユーザが１つのスプレッドシートファイル上で同時にリアルタイムでコラボレートすることができることである。これは、各ユーザが瞬間的に（又はほぼ瞬間的に）、ファイルを編集している他のユーザにより行われる変更を見ることが出来るという編集モードである。例えば、第１のユーザがスプレッドシートセルの内容を変更したとき、他の全てのユーザがスプレッドシートの更新を数ミリ秒後に各自のビュー（ｖｉｅｗ）において見ることができ、よって、変更が行われるとすぐに全ての変更が表示されるように感じる。この種のコラボレーションには、リアルタイムチャットやユーザプレゼンス情報のような他の機能がしばしば伴う。もし上記機能を上手に実行することができれば、ユーザが同じスプレッドシートに対して作業をしてデータを同時に共有し編集するという状態を正しく表示することができる。
【背景技術】
【０００２】
リアルタイムコラボレーションの１つの問題点は、ほとんどの場合、各コラボレーションユーザがスプレッドシートファイル内の同じデータを見たがることである。これは、明確なユーザの期待であり、もしユーザが変更をした後に同じデータを見なければ、ユーザはデータが不正確であると感ずるか、自分が行った変更が正しく受信されていないと感ずる。また、ユーザは誰が正しいデータを持っているのかということについて不安になる。このようなユーザの期待はユーザエクスペリエンスにとって非常に重要なことであるので、従来のリアルタイムコラボレーション環境における計算はサーバのような中心部で行われ、その後、各クライアントに個別に配信されていた。これは異なるタイミングで行われる異なる計算により、多くの場合データが異なってしまうからである。従って、ユーザが変更を行うたびに、変更が配信されて、スプレッドシートファイルが再計算及び再配信されて、スプレッドシートファイルの各クライアントバージョンを更新できるようにしていた。これをするにはかなりの時間を要し、複雑な計算をするスプレッドシートでは特に長い時間を要する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
リアルタイムコラボレーションの別の問題点は、コラボレーションするユーザが自分自身のビューでデータを見たいとしばしば望むことである。例えば、複数のユーザが１つの大きな表にデータを入力しているとき、各ユーザは本人しか見たいと思わないエントリを持っていることがある。各ユーザは固有の方法で表をフィルタリングして、本人が責任を持つエントリだけを表示したいと望むことがある。問題は、通常各ユーザが異なるフィルタを有しており、そのフィルタが同じ表に適用されるが、各ユーザが同じ表を同時に編集しているので、全ユーザが他のユーザの変更を見ることになることである。このことにより、従来、リアルタイムコラボレーション環境でデータを操作又は分析することは、不可能でないにしても非常に難しかった。
【課題を解決するための手段】
【０００４】
スプレッドシートファイル上で複数のユーザ又はクライアントによりリアルタイムコラボレーションで処理を行う技術がここに開示されている。この技術によれば、複数のクライアントの少なくとも１つにより計算をローカルに行うことができる。このようにすることにより性能が向上する。なぜならデータ更新だけをホストマシンに提供すればよいからである。よって、好ましくは、ローカルに行われる計算が異なるデータを生成可能かどうかについての決定がなされる。もしコンフリクトするデータが生成される可能性があるなら、スプレッドシートファイルの計算は通常、ホストマシンによりリモートで行われる。もしそうでなければ、上記のことができる各クライアントが計算をローカルに行い、更新データだけをホストマシンに送る。１つ又は複数の新しい式がコラボレーションしている複数クライアントの１つによりスプレッドシートファイルに追加されときのような場合に、計算がローカルに行われるべきか否かの決定は状況に応じてなされる。
【０００５】
スプレッドシートファイル上でコラボレートしているクライアントによって、スプレッドシートファイルの所望のビューを提供する技術についても本明細書に開示されている。スプレッドシートファイルの詳細の全てが含まれている典型的な共有ビューを表示するのではなく、プライベートビュー（ｐｒｉｖａｔｅ  ｖｉｅｗ）が各クライアント毎に、クライアントが選択するデータに応じて表示される。これは、例えば、ソート、フィルタその他のツールの使用の結果として得られるものである。従って、特定の指定動作だけがクライアントコンピュータとホストマシンの間で同期されるが、全てのデータが提供されるので、その後他のクライアントコンピュータにもデータを送信することができる。コラボレーションの後にクライアントコンピュータの所望のビュー又はプライベートビューを利用可能にするために、各ビューがホストマシンのスプレッドシートファイルに残ることもある。
【０００６】
上記した発明の概要は本発明の概念を簡潔に紹介するための記載であり、本発明の技術思想は後述する発明の実施形態で更に説明される。上記した発明の概要は特許請求の範囲に記載された発明の重要な特徴や本質的な特徴を特定することを意図していない。また、上記した発明の概要は特許請求の範囲に記載された発明の範囲を決定する場合の補助情報として用いられることを意図していない。
【図面の簡単な説明】
【０００７】
例示的な実施形態は添付図面を参照して下記の発明の実施形態の説明を読むことにより、より良く理解されるであろう。
【０００８】
【図１】図１は典型的なコンピューティング装置のブロック図である。
【図２】図２は複数のクライアントコンピュータがスプレッドシートファイル上でコラボレートしている様子を示すシステム図であり、１つのクライアントコンピュータがローカルに計算をしている場合を示している。
【図３】図３はスプレッドシートファイル上でコラボレートしている複数のクライアントコンピュータがスプレッドシートファイルで計算を行う方法のフローチャートである。
【図４】図４はスプレッドシートファイル上でコラボレートしている複数のクライアントコンピュータにスプレッドシートファイルのビューを提供する方法のフローチャートである。
【発明を実施するための形態】
【０００９】
法令に規定された要件を満たすように、本発明の内容を詳細に説明する。しかしながら、本明細書そのものは、本発明の範囲を限定する意図を有していない。特許請求の範囲に記載された発明は下記に説明されたもの以外の実施形態で実施することができる。例えば、現在又は未来の技術に鑑み、本明細書に記載されたものとは異なるステップを含んでもよいし、同様なステップを組み合わせてもよい。
【００１０】
図１は、上記した本発明の内容を実施することができる適切なコンピューティングシステム環境１００の例を示している。このコンピューティングシステム環境１００は適切なコンピューティング環境の一例に過ぎず、上記した本発明の機能又は用途の範囲に関して何らかの限定を与えることを意図していない。また、コンピューティング環境１００は、典型的な動作を行うコンピューティング環境１００内に図示されているコンポーネントの任意の１つ又は任意の組み合わせに関連した従属性や要件を有していると解釈されるべきではない。
【００１１】
図１を参照すると、コンピューティングシステム環境１００は汎用コンピューティング装置としてコンピュータ１１０を有している。コンピュータ１１０のコンポーネントは、処理ユニット１２０、システムメモリ１３０及びシステムバス１２１を含んでもよいが、これらに限定されない。システムバス１２１は、システムメモリを含む種々のシステムコンポーネントを処理ユニット１２０に接続している。システムバス１２１は、色々なバスアーキテクチャを使用するメモリバス、メモリコントローラ、ペリフェラルバス（ｐｅｒｉｐｈｒａｌ  ｂｕｓ）又はローカルバス等のいずれのバス構造を有してもよい。上記アーキテクチャは、例えば、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、拡張ＩＳＡバス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスを含むが、これらに限定されない。尚、ＰＣＩバスはメザニンバス（Ｍｅｚｚａｎｉｎｅ  ｂｕｓ）としても知られている。
【００１２】
通常、コンピュータ１１０は種々のコンピュータ可読媒体を含んでいる。コンピュータ可読媒体はコンピュータ１１０によりアクセス可能であれば任意の入手可能な媒体でよい。コンピュータ可読媒体は、揮発性及び不揮発性の媒体、取り外し可能な及び固定の媒体を含む。例えば、コンピュータ可読媒体は、コンピュータ記憶媒体と通信媒体を含んでもよいが、これらに限定されない。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュールその他のデータのような情報を記憶するための任意の方法又は技術で使用される揮発性及び不揮発性の取り外し可能な及び固定の媒体を含む。コンピュータ記憶媒体は例えば、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ，フラッシュメモリ、その他のメモリ手段、ＣＲＲＯＭ，ＤＶＤ、その他の光学ディスク記憶手段、磁気カセット、磁気テープ、磁気ディスク記憶装置、その他の磁気記憶手段、及び、所望の情報を記憶することができ且つコンピュータ１１０によりアクセス可能な上記以外の任意の媒体を含むが、これらに限定されない。通常、通信媒体は、コンピュータ可読命令、データ構造、プログラムモジュール及びその他のデータを、搬送波のような変調されたデータ信号又は他の移送手段に保有しており、通信媒体は任意の情報配信媒体を含む。「変調されたデータ信号」という用語は、信号内の情報を符号化するように設定又は変更された特性を１つ以上有する信号を意味する。例として、通信媒体は、有線ネットワーク又は有線直結（ｄｉｒｅｔ−ｗｉｒｅｄ  ｃｏｎｎｅｃｔｉｏｎ）のような有線媒体及び音響媒体、ＲＦ媒体、赤外線媒体、その他の無線媒体のような無線媒体を含むが、これらに限定されない。上記したものの任意の組み合わせも、コンピュータ可読媒体の範疇に含まれる。
【００１３】
システムメモリ１３０はコンピュータ記憶媒体として、ＲＯＭ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）１３１及びＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）１３２のような揮発性メモリ及び／又は不揮発性メモリを有する。ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ/Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）１３３は、例えばスタートアップの際にコンピュータ１１０内の要素間で情報を伝送するための基本ルーチンを含んでおり、通常はＲＯＭ１３１に記憶されている。通常、ＲＡＭ１３２は、処理ユニット１２０により直ちにアクセス可能である及び／又は処理ユニット１２０により処理中のデータ及び／又はプログラムモジュールを含んでいる。一例として、図１はオペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６及びプログラムデータ１３７を示しているが、これらに限定されない。
【００１４】
コンピュータ１１０は他の取り外し可能な／固定の、揮発性／不揮発性のコンピュータ記憶媒体をさらに有してもよい。一例として、図１は、固定の不揮発性の磁気媒体に読み書きを行うハードディスクドライブ１４１と、取り外し可能な不揮発性の磁気ディスク１５２に読み書きを行う磁気ディスクドライブ１５１と、ＣＤ−ＲＷ、ＤＶＤ−ＲＷ、その他の光学媒体のような取り外し可能な不揮発性の光学ディスク１５６に読み書きを行う光学ディスクドライブ１５５とを示している。上記した以外の取り外し可能な／固定の、揮発性／不揮発性のコンピュータ記憶媒体で上記の典型的な動作環境において使用することができるものは、磁気テープカセット、フラッシュメモリカード、ＤＶＤ、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭ等であるが、これらに限定されない。通常、ハードディスクドライブ１４１はシステムバス１２１に、インターフェース１４０のような固定のメモリインターフェースを介して接続される。また、磁気ディスクドライブ１５１及び光学ディスクドライブ１５５は通常、システムバス１２１に、インターフェース１５０のような取り外し可能なメモリインターフェースにより接続される。
【００１５】
上述され且つ図１に示されたドライブ及びこれらに付随するコンピュータ記憶媒体は、コンピュータ１１０において使用されるコンピュータ可読命令、データ構造、プログラムモジュール及びその他のデータを記憶する。例えば、図１において、ハードディスクドライブ１４１はオペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６及びプログラムデータ１４７を記憶するものとして図示されている。尚、これらコンポーネントはオペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６及びプログラムデータ１３７と同じであってもよいし異なっていてもよい。本明細書では、オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６及びプログラムデータ１４７には異なる番号が付けられており、少なくとも、これらが異なるものであることを示している。ユーザはコマンド及び情報をキーボード１６２及びポインティングデバイス１６１のような入力装置を介してコンピュータ１１０に入力することができる。ポインティングデバイス１６１は例えば、マウス、トラックボール、タッチパッドである。その他の入力装置（不図示）としては、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信用アンテナ、スキャナ等が挙げられる。上記及びその他の入力装置はしばしば処理ユニット１２０にユーザ入力インターフェース１６０を介して接続される。ユーザ入力インターフェース１６０はシステムバス１２１に接続されている。尚、上記及びその他の入力装置は、パラレルポート、ゲームポート又はＵＳＢ（ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）のような他のインターフェース及びバス構造により処理ユニット１２０に接続されてもよい。グラフィックスインターフェース１８２も、システムバス１２１に接続されてよい。１つ又は複数のＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔｓ）１８４はグラフィックスインターフェース１８２と通信可能であってもよい。モニタ１９１又は他のタイプの表示装置も、ビデオインターフェース１９０のようなインターフェースを介してシステムバス１２１に接続されている。ビデオインターフェース１９０はビデオメモリ１８６と通信可能である。モニタ１９１に加え、コンピュータは、スピーカ１９７及びプリンタ１９６のようなその他の周辺出力機器も含んでもよい。これら機器は出力周辺機器インターフェース１９５を介して接続される。
【００１６】
コンピュータ１１０はネットワーク環境又は分散環境で機能することがで、この場合、リモートコンピュータ１８０のような１つ又は複数のリモートコンピュータにつながる論理接続を使用する。リモートコンピュータ１８０は、例えば、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、又はその他の一般的なネットワークノードであり、図１には１つのメモリ記憶デバイス１８１しか示されていないが、通常、上記コンピュータ１１０に関連して上述された要素の多く又は全てを含む。図１に示された論理接続は、ＬＡＮ（ローカルエリアネットワーク）１７１及びＷＡＮ（広域ネットワーク）１７３を含むが、他のネットワーク／バスを含んでもよい。このようなネットワーク環境は、家庭、オフィス、企業内コンピュータネットワーク、イントラネット及びインターネットにおいて広く使用されているものである。
【００１７】
ＬＡＮネットワーク環境で使用される場合、コンピュータ１１０はＬＡＮ１７１にネットワークインターフェース又はアダプタ１７０を介して接続される。ＷＡＮネットワーク環境で使用される場合、コンピュータ１１０は通常、インターネットのようなＷＡＮ１７３を介して通信を可能とするモデム１７２又はその他の手段を含む。モデム１７２は外部に設けられる場合もあるし内部に設けられる場合もあるが、ユーザ入力インターフェース１６０又は他の適切な手段を介してシステムバス１２１に接続され得る。ネットワーク環境においては、コンピュータ１１０に関連して説明されたプログラムモジュール又はその一部は、リモートメモリ記憶装置に記憶されてもよい。例として、図１はリモートアプリケーションプログラム１８５がメモリ装置１８１にある場合を示しているが、これに限定されない。尚、図示されたネットワーク接続は例示であり、コンピュータ同士間で通信リンクを確立する他の手段を使用してもよい。
【００１８】
図２から次のことが理解できる。即ち、上記したものに類似した２つ又は３つ以上のコンピューティングシステム２００、２２０は、第１のクライアント及び第２のクライアントとして知られているものであり、スプレッドシートファイル２１０のような共通の１つのファイル上で、リアルタイムでコラボレートしたいと望むことがある。これは、各ユーザ又はクライアントが、ファイルを同時に編集している他のユーザ又はクライアントによって行われる変更を見る編集モードである。図示されているように、これは、サーバ２３０のような別のホストマシンを介して行われる。このホストマシンは保存されるスプレッドシートファイルのバージョンを有している。勿論、クライアントコンピュータのいずれかがコラボレーション用ホストマシンとして使用されることもある。この場合、クライアントコンピュータが上記能力を備え且つクライアントコンピュータが正しくネットワーク化されていることが条件となる。
【００１９】
典型的なコラボレーション環境においては、クライアントコンピュータ（例えば、コンピューティングシステム２００）は、メッセージ又はデータ更新を、コンピュータ実行命令を介してホストマシン２３０に伝達する（矢印２４０で示されているように）。ホストマシン２３０は、全てのクライアントから受信される色々な変更や入力データを処理し（ボックス２５０に示されているように）、データ更新等を、コンピュータ実行命令を介して各クライアントコンピュータに送信する（矢印２６０で示されているように）。このように、全てのクライアントコンピュータに対してスプレッドシートファイル２１０の状態は、コラボレーション中は、同期状態に維持される。尚、いずれかのクライアントコンピュータによりスプレッドシートファイル２１０に行われる変更は、迅速に別のクライアントコンピュータに提供されるので、全ての変更は変更が生じたときに現れるように見える。
【００２０】
スプレッドシートファイル２１０で行われる全ての計算を中央処理して結果を個々のクライアントコンピュータに再配信するという動作をホストマシン２３０に任せるのではなく、少なくとも幾つかの状況下では、計算を１つ又は複数のクライアントコンピュータによってローカルに行うことが好ましい場合もある（ボックス２７０を参照）。図２の例では、クライアントコンピュータ２２０だけが上記のようなローカルな計算を行うように図示されているが、任意の数の他のクライアントコンピュータ（例えば、クライアントコンピュータ２００）も上記のローカルな計算を行ってよい。ローカルな計算は、例えば、技術分野でシッククライアント（ｔｈｉｃｋ  ｃｌｉｅｎｔ）バージョンとして知られているものによって、または、他の論理（例えば、ローカルなウェブページに含まれている論理）を使用することによって、行うことができる。このようなローカルな計算がクライアントコンピュータ２２０によって行われた後、データに対する更新だけ（ボックス２８０参照）がホストマシン２３０に送信され（矢印２９０で示されているように）同期がとられる。尚、任意のコラボレートセッションにおいて、１つ又は複数のクライアントコンピュータがスプレッドシートファイル２１０の計算をローカルに行ってもよいし、１つ又は複数のクライアントコンピュータはホストマシン２３０を利用して上記計算をリモートで行ってもよい。しかしながら、特に、複雑な計算が含まれるとき、スプレッドシートファイル２１０によって要求される計算をローカルに行うことにより、データ更新がより早く完了する場合がある。
【００２１】
スプレッドシートファイル２２０のローカルな計算がどのように、複数のユーザ又はクライアントを含むコラボレートセッションの間に好適に採用されるかをより良く理解するために、関係するプロセスステップが図３に示されている。図示されているように、リアルタイムコラボレーションは、ホストマシンに記憶されているスプレッドシートファイルが複数のクライアント又はユーザによって開かれると開始する（ボックス３００）。その後、ホストマシンは、スプレッドシートファイルのために実行されるべき計算がクライアントによってローカルに行われるのならば異なるデータを返信可能かを、決定する（ボックス３０５）。より詳しくは、ホストマシンは好ましくは、スプレッドシートファイル内の全ての式を、異なる結果を生成するものとして知られている式の所定リストと比較する。計算結果同士のずれは、色々な理由により生じ得る。例えば、計算がいつまたはどこで行われたかにより、ずれが生ずることもある。各スプレッドシート計算では上記決定を個別に行う。なぜなら上記決定は、上記機能がどのように評価されるかに応じて変わることがあるからである。
【００２２】
もし上記計算が常に同じ結果を返信するものであるとホストマシンによって決定されたならば、上記計算をローカルに行わせるためのメッセージが各クライアントコンピュータに送られ（ボックス３１０）、クライアントコンピュータが計算を行う（ボックス３１５）。尚、ローカルに計算を行う各クライアントコンピュータはクライアントのスプレッドシートファイルに計算結果を表示し（ボックス３２０）、データのみを含む対応更新情報をホストマシンに送る（ボックス３２５）。従って、ホストマシンはクライアントコンピュータからの複数の更新情報を同期させ、更新情報を全てのクライアントコンピュータに送る（ボックス３３０）。
【００２３】
たとえ上記計算がクライアントコンピュータによりローカルに行われる場合に異なるデータが返信され得ると決定されても、各ユーザ又はクライアントにはスプレッドシートファイルの式をローカルに計算するか否かを決めるための選択又は選択肢が提供されることが好ましい（ボックス３３５）。例えば、（例えば、どの時間帯にクライアントコンピュータが位置するのかに応じた結果を関数が与える場合）異なる結果を返信するローカル計算が許容される場合もある。このような場合、計算はクライアントコンピュータによってローカルに行われ（ボックス３４０）、計算結果はクライアントコンピュータによって表示され（ボックス３４５）、対応するデータ更新がホストマシンに送られる（ボックス３５０）。
【００２４】
もしクライアントが計算をローカルに行うことができなければ、あるいは、もし異なる結果が許容できないと考えられるならば、データ更新はホストマシンに送られ（ボックス３５５）、スプレッドシートファイルのための計算は好ましくはホストマシンによってリモートに行われる（ボックス３６０）。データ更新はその後ホストマシンからクライアントコンピュータに送られる（ボックス３３０）。スプレッドシートファイルの式の計算をローカルに行うか否かの選択は管理方針によって予め決めておくこともできる。
【００２５】
スプレッドシートファイルの式の計算をローカルに行うか否かに拘わらず、次のことがフィードバックループ３３２から理解できる。即ち、データ更新がホストマシンによって同期して行われて全てのクライアントに送られること（ボックス３３０）が、コラボレーション中は連続して行われることが好ましいということが理解できる。このように、クライアントコンピュータは現在のデータに基づいてスプレッドシートファイルを変更することができ且つ現在のデータに基づいてスプレッドシートファイルの計算を行うことができる。
【００２６】
スプレッドシートファイルの計算をローカルに行うか否かの決定を状況に応じて行えるようにするためには、コラボレーションの間に新しい式がスプレッドシートファイルに追加されたかを決定するステップを上記プロセスが含むことが好ましい（ボックス３６５）。明らかに、もしクライアントコンピュータによって式が追加されていないならば、ホストマシンからクライアントコンピュータへのデータ更新の送信は続けられる（ボックス３３０）。１つ又は複数の新しい式がコラボレーションの間に追加されると、フィードバックループ３７０が形成されて、新しい式が分析され、スプレッドシートファイルの計算がローカルに行われるときに異なるデータが返信可能かどうかを新たに決定することになる（ボックス３１０）。
【００２７】
本発明の他の側面は、コラボレーションの間に各クライアントコンピュータにおいて表示されるスプレッドシートファイルのビューに関する。クライアントコンピュータがスプレッドシートファイル全体を表示する、スプレッドシートファイルの共有ビューに限定されるのではなく、スプレッドシートファイルの特定のオブジェクトのみを表示する、プライベートビューを持つことをクライアント又はユーザは好む場合もある。スプレッドシートファイル内の全てのデータが各クライアントコンピュータにとって同じであり、いかなるデータに行われる変更もホストマシンによって更新可能であり、各クライアントコンピュータに送られるとする。各クライアントコンピュータはデータのクライアントのビューにのみ適用するソーティングとフィルタリングを施すことができるので、各クライアントはスプレッドシートファイルにおいて自分のためだけに調整されたデータビューを持つことができる。このことにより、複数の大きな表を同時に編集又は分析する必要があるクライアントは、１つの編集を行うときと同じような体験をすることになる。勿論、好ましくは、１つのクライアントコンピュータによって行われるビューへの変更は、他の全てのクライアントへ配信されない。
【００２８】
図４に示されているように、コラボレーションは、スプレッドシートファイルが複数のクライアントコンピュータによって開かれたときに開始される（ボックス４００）。尚、クライアントがスプレッドシートファイルにおいてデータオブジェクトをプライベートビュー又は共有ビューのいずれで見るかを選択できるようにするための選択又は選択肢が（例えば、ユーザインターフェースによって）提供される（ボックス４０５）。この選択肢はスプレッドシート全体に包括的に提供されるか、スプレッドシートのオブジェクト毎に提供される。もしクライアントがプライベートビューを持ちたいと望むなら、データのビューは、まるで一人のユーザが編集を行っている場合と同じように、クライアントにより生成される（ボックス４１０）。
【００２９】
ユーザ又はクライアントがコラボレーションで処理を行う度に、ユーザ又はクライアントは、スプレッドシートファイルについて処理をホストマシンと同期させるべきかを決定する（ボックス４１５）。よって、好ましくは、クライアントアプリケーションはどの処理がホストマシンと同期されるべきか及び同期されるべきではないかを知るロジックを含む。例えば、特定の処理（例えば、ソーティング、フィルタリング、ピボットテーブル操作（ＰｉｖｏｔＴａｂｌｅ  ｍａｎｉｐｕｌａｔｉｏｎｓ）等）が同期されるべきでないかが決定される。いずれにせよ、好ましくは、クライアントによってスプレッドシートファイルに追加された又は変更されたデータは、常にホストマシンと同期される（ボックス４２０）。
【００３０】
その後ホストマシンがデータ更新を処理して、データ更新を全てのクライアントコンピュータに送ることになる（ボックス４２５）。クライアントコンピュータがホストマシンから受信する全ての変更は、コラボレーションにおいてそのような変更が通常適用されるように適用される。よって、データにおけるどのような変更も、それがたとえプライベートビューに示されているデータにおける変更であっても、コラボレーションしている他の全てのクライアントコンピュータによって取得される。同時に、データにおける変更がプライベートビューで見ることができない場合には、変更はプライベートビューのユーザインターフェースに表示されない。コラボレーションの間は編集プロセスが継続的に進行するので、好ましくはフィードバックループ４３５を設けることにより、ホストマシンからの更新されたデータは選ばれたビューに表示される。
【００３１】
勿論、上記ビューに代わるもう一つのビューは共有ビューであり、共有ビューはスプレッドシートファイルを包括的に表示する。プライベートビューが選択されない場合、プライベートビューの代わりに、共有ビューが生成される（ボックス４３０）。
【００３２】
一旦ユーザ又はクライアントコンピュータがコラボレーションから外れることを決めると、好ましくは、クライアントコンピュータのために選択されたビューはホストコンピュータに記憶されているスプレッドシートファイルに残される（ボックス４４０）。このようにすれば、クライアントコンピュータはスプレッドシートファイルを後日開いたとき、スプレッドシートファイルからそのビューを見ることができる。任意ではあるが、各クライアントコンピュータのビューに関して、ロジックはスプレッドシートファイルのフォーマットで書かれてもよい。このビューはファイルフォーマットで表として表すことができ、各ユーザ、オブジェクト及びオブジェクトのビューのエントリを有する。
【００３３】
１つの典型的な状況としては、第１のユーザと第２のユーザが、例えば、スプレッドシートアプリケーションのシック（ｔｈｉｃｋ）クライアントバージョンを使用して、スプレッドシートの大きな表においてコラボレートしている場合が考えられる。この表は例えば、各国毎の販売データを含む。例えば、第１のユーザ又は第１のクライアントがフィルタリングを適用することにより、米国における販売のみを表示するのに対し、第２のユーザはフィルタリングを適用することによりフランスにおける販売のみを表示する。もし第２のユーザがフランスにおける販売を含む上記表の行に変更を行ったとすると、データが変更された後に変更は第１のユーザのコンピュータに送信される。但し、第１のユーザのビューは上記変更をスクリーン上に反映しない。なぜなら、フランスにおける全ての販売データは、現在、フィルタリングされて、ビューに表示されないようになっているからである。しかしながら、第２のユーザによって行われる変更が考慮されている、第１のユーザのスプレッドシートにおけるトータルセールスチャートのような第１のユーザのスプレッドシートの他の場所は正確に更新される。また、第２のユーザは、フランスとスペインからの販売データを見ることができるように、適用されたフィルタリングを変更することもある。この変更はビューに影響を与えるだけだから、この変更はホストマシンには送信されないようにし、第１のユーザによっても認識されないようにしてもよい。
【００３４】
本発明の内容を構造的特徴及び／または方法論的な動作に注目して説明してきたが、特許請求の範囲に記載されている本発明の内容は、上記された特徴または動作に限定される必要はない。上記された特徴または動作は特許請求の範囲に記載された本発明を実施する１つの例として開示されているだけである。
【図１】
2011502303.tif 000003
【図２】
2011502303.tif 000004
【図３】
2011502303.tif 000005
【図４】
2011502303.tif 000006
【国際調査報告】
2011502303.tif 000007
2011502303.tif 000008