(57)【要約】【課題】  修正ファイルオープン動作を用いてサーバを実装すること。【解決手段】  修正ファイルオープン動作では、ユーザが修正オープンを実行するとき、当初はファイルをロックせずにファイルが開かれる。ユーザがそのファイルを開くよう試みている、またはそのファイルを開く意図があることをユーザが（明示的または暗黙的に）示したとき、そのファイルを編集用にロックすることができる。このように、ユーザがファイルを要求するときのデフォルト動作は、他のユーザがファイルにアクセスすることを拒否することなくファイルを開くことである。次いで、ユーザが編集を行うことを示したとき、そのファイルに対するロックがかけられる。【選択図】  図４
2004265415.tif 000002
【特許請求の範囲】
【請求項１】
開かれるファイルのロックを遅延させる方法であって、
前記ファイルを開く要求を受け取るステップと、
前記ファイルを読み取るために開くステップと、
編集発生イベントが発生したことを判定するステップと、
前記ファイルにロックをかけるステップと
を備えたことを特徴とする方法。
【請求項２】
前記ファイルを開くステップは、前記ファイルを読取り専用モードで開くステップを含み、前記ロックをかけるステップは、前記ユーザについて読取り／書込みモードを変更するステップを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記編集発生イベントが発生したことを判定するステップは、前記ファイルに対する変更を受け取るステップを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記編集発生イベントが発生したことを判定するステップは、前記ファイルを編集する要求をユーザから受け取るステップを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記編集発生イベントが発生したことを判定するステップは、予め定められた期間、ユーザが前記ファイルをオープンにしていることについての判定を含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記ファイルを開くステップは、前記ファイルのユーザコピーを作成するステップを含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記ファイルはサーバコンピュータ上に配置され、ユーザはユーザコンピュータを使用しており、前記サーバコンピュータと前記ユーザコンピュータは動作可能に接続され、前記ファイルのユーザコピーは前記ユーザコンピュータに対してローカルであることを特徴とする請求項６に記載の方法。
【請求項８】
前記ファイルにロックをかけるステップは、
前記ユーザコピーが作成されてから前記ファイルが変更されたか否かを判定するステップと、
前記ファイルが変更された場合、前記ファイルにロックをかけるステップと
を含むことを特徴とする請求項６に記載の方法。
【請求項９】
前記ファイルが変更されたか否かを判定するステップは、前記サーバコンピュータ上の現在のバージョンのファイルのバージョン情報を、前記ユーザコピーのバージョン情報と比較するステップを含むことを特徴とする請求項８に記載の方法。
【請求項１０】
所定のバージョンの前記ファイルのバージョン情報は、前記所定のバージョンに対する最後の変更時に関する情報を含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記ファイルにロックをかけるステップは、
前記ファイルが変更された場合、１つまたは複数の不一致解決の選択肢を前記ユーザに提供するステップをさらに含むことを特徴とする請求項８に記載の方法。
【請求項１２】
前記不一致解決の選択肢は、前記ファイルのユーザコピーを保存する選択肢を含むことを特徴とする請求項８に記載の方法。
【請求項１３】
前記不一致解決の選択肢は、前記サーバコンピュータ上の前記ファイルの現在のバージョンを取り出す選択肢を含むことを特徴とする請求項８に記載の方法。
【請求項１４】
請求項１に記載の方法を実行することを特徴とする、オペレーティングシステムの少なくとも１つ、複数のコンピュータ実行可能命令が格納されたコンピュータ読取可能媒体、コプロセッシング装置、コンピューティング装置、およびコンピュータ実行可能命令を搬送する被変調データ信号。
【請求項１５】
動作可能に接続されたサーバにファイルを要求するコンピュータシステムであって、
サーバコンピュータ上のファイルを開く要求を受け取る入力モジュールと、
前記ファイルを読取り専用モードで開くための、前記ユーザ入力モジュールに動作可能に接続された読取り専用モードオープニングモジュールと、
編集が発生したか否かを判定する編集発生表示モジュールと、
前記ファイルを読取り書込みモードで開くための、前記編集発生表示モジュールに動作可能に接続された読取り書込みモードオープニングモジュールと、
前記ファイルを使用するための、前記読取り専用モードオープニングモジュールおよび前記読取り書込みモードオープニングモジュールに動作可能に接続されたファイル使用モジュールと
を備えたことを特徴とするコンピュータシステム。
【請求項１６】
前記動作可能な接続は、ネットワーク接続を含むことを特徴とする請求項１５に記載のシステム。
【請求項１７】
前記編集発生表示モジュールは、前記ユーザが前記ファイルに対する変更を要求したか否かを判定することを特徴とする請求項１５に記載のシステム。
【請求項１８】
前記編集発生表示モジュールは、前記ファイルを編集用に使用可能とすることを前記ユーザが要求したか否かを判定することを特徴とする請求項１５に記載のシステム。
【請求項１９】
前記編集発生表示モジュールは、予め定められた期間の間、前記ユーザが前記ファイルをオープンにしているか否かを判定することを特徴とする請求項１５に記載のシステム。
【請求項２０】
前記ファイルのユーザコピーを格納するための記憶装置をさらに備えたことを特徴とする請求項１５に記載のシステム。
【請求項２１】
前記ファイルのユーザコピーが前記サーバ上の前記現在のバージョンのファイルのコピーであるか否かを検出するための、前記読取り書込みモードオープニングモジュールに動作可能に接続された変更検出モジュールをさらに備えたことを特徴とする請求項２０に記載のシステム。
【請求項２２】
前記サーバ上の前記ファイルの現在のバージョンの変更が前記変更検出モジュールによって検出されなかった場合、前記読取り書込みモードオープニングモジュールは、前記ファイルを前記ユーザに対して読取り書込みモードで開くことを特徴とする請求項２１に記載のシステム。
【請求項２３】
前記サーバ上のファイルの現在のバージョンの変化を検出する際に、前記ユーザに少なくとも１つの変更解決の選択肢を提示する変更解決モジュールをさらに備えることを特徴とする請求項２１に記載のシステム。
【請求項２４】
前記不一致解決の選択肢は、前記ファイルの前記ユーザコピーを保存する選択肢を含むことを特徴とする請求項２３に記載のシステム。
【請求項２５】
前記不一致解決の選択肢は、前記サーバコンピュータ上の前記現在のバージョンのファイルを取り出す選択肢を含むことを特徴とする請求項２３に記載のシステム。
【請求項２６】
前記変更検出モジュールは、前記サーバコンピュータ上の前記現在のバージョンのファイルのバージョン情報を、前記ユーザコピーのバージョン情報と比較することを特徴とする請求項２０に記載のシステム。
【請求項２７】
前記ファイルの所定のバージョンについての前記バージョン情報は、前記所定のバージョンに対する最後の変更時に関する情報を含むことを特徴とする請求項２６に記載のシステム。
【請求項２８】
リモートサーバ上のリモートファイルを使用する方法であって、
ユーザからの前記リモートファイルのオープンを要求するとの表示の際、前記リモートサーバから前記現在のバージョンのリモートファイルのコピーを受け取るステップと、
前記リモートファイルと同一のタイプのファイルと共に使用するように適合されたソフトウェアアプリケーションを使用して、前記ユーザに対して前記コピーを表示するステップと、
前記ユーザからの前記リモートファイルの編集を意図するとの表示の際、他のユーザからの書き込みに対して前記リモートサーバ上のファイルをロックすることを要求するステップと
を備えたことを特徴とする方法。
【請求項２９】
前記リモートファイルのオープンを要求するとのユーザからの表示は、前記ユーザがハイパーリンクをクリックすることを含むことを特徴とする請求項２８に記載の方法。
【請求項３０】
前記ユーザが前記リモートファイルの編集を意図するとの表示は、前記アプリケーションにおけるの前記コピーに対する変更を受け取ることを含むことを特徴とする請求項２８に記載の方法。
【請求項３１】
前記ユーザが前記リモートファイルの編集を意図するとの表示は、前記ユーザから前記アプリケーションにおいて前記コピーを編集する要求を受け取ることを含むことを特徴とする請求項２８に記載の方法。
【請求項３２】
前記ユーザが前記リモートファイルの編集を意図するとの表示は、予め定められた期間、前記ユーザが前記コピーをオープンにしているとの判定を含むことを特徴とする請求項２８に記載の方法。
【請求項３３】
前記他のユーザからの書き込みに対して前記リモートサーバ上のファイルをロックすることを要求するステップは、
前記コピーが作成されて以降前記リモートファイルが変更されたか否かを判定するステップと、
前記リモートファイルが変更された場合、他のユーザからの書き込みに対して前記リモートサーバ上のリモートファイルをロックすることを要求するステップと
を含むことを特徴とする請求項２８に記載の方法。
【請求項３４】
前記ファイルが変更されているか否かを判定するステップは、前記リモートサーバ上のリモートファイルのバージョン情報と、前記コピーのバージョン情報とを比較するステップを有することを特徴とする請求項３３に記載の方法。
【請求項３５】
前記ユーザのためにロックをかけるステップは、
前記リモートファイルが変更された場合、１つまたは複数の不一致解決の選択肢を前記ユーザに提供するステップをさらに含むことを特徴とする請求項３３に記載の方法。
【請求項３６】
請求項２８に記載の方法を実行することを特徴とする、オペレーティングシステムの少なくとも１つ、複数のコンピュータ実行可能命令が格納されたコンピュータ読取可能媒体、コプロセッシング装置、コンピューティング装置、およびコンピュータ実行可能命令を搬送する被変調データ信号。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は文書管理の分野に関し、より詳細には、ユーザがアクセスするサーバファイルのロックを遅延させるための方法およびシステムに関する。
【背景技術】
【０００２】
ウェブサーバなどのサーバコンピュータは２重の役割を果たす場合がある。サーバは、ユーザがコンテンツにアクセスすることのできる発信元（ｐｕｂｌｉｓｈｉｎｇ  ｌｏｃａｔｉｏｎ）として使用することができる。また、サーバは２ユーザ以上が文書に関して共同作業を行うことのできる共同作業環境としても使用することができる。すなわち、各ユーザは、文書を更新または編集することができるわけである。サーバが発信元として使用される場合、サーバは、サーバ上のバージョンを変更せずに維持して、ファイルを要求する任意のユーザにファイルのコピーを別個に配信する。サーバが共同作業環境として使用される場合、サーバは、ファイルの編集を求めるユーザが最新のコピーにアクセスすることを許可する機能を持つ。しかし、発信機能と共同作業機能の双方をサポートするサーバは、しばしばこれらの両方の目的で同時に使用される。
【０００３】
このような二重に使用することにより問題が発生する。例えば、サーバがウェブサーバである場合、（ハイパーリンクをたどることによって）ウェブサーバ上のファイルにアクセスするためのデフォルトの機構は、２つの動作の一方しか行わない。ハイパーリンクおよびウェブサーバに応じて、ハイパーリンクをクリックすることにより、ユーザが元のファイルを変更することなく読み取ることができるファイルのコピーが作成され、またはハイパーリンクをクリックすることにより、サーバ上のファイルが開かれて、ユーザがファイルを編集することが可能となる。ファイルが編集用に開かれるとき、そのファイルはロックされ、他のユーザがファイルを編集することはできない。
【０００４】
一般に、ファイルは、ファイルを開くユーザに許可される様々なアクセス権で開くことができる。読取り用にファイルを開くと、ファイルは読取り専用として開かれ、ユーザはファイル中のデータを変更しない限りそのデータを読み取り／閲覧し、あるいは閲覧することを許可される。編集用にファイルを開くと、ファイルは読取り／書込みとして開かれ、ユーザは同じ特権を許可されるが、またデータを修正したり、データに付加したりすることも許可される。ファイルが読取り／書込みとして開かれると、このファイルはロックされる。このファイルロックにより、ファイルの修正は一度に１ユーザだけとなるよう保証され、２ユーザ以上による修正の不一致（ｃｏｎｆｌｉｃｔ）が防止される。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
デフォルト動作がユーザの望む動作ではないときに問題が生じる。例えば、ユーザがファイルを編集することを望む場合に、デフォルトが読取り用のコピーのオープンであるならば、ユーザに対する所望の機能は提供されない。同様に、デフォルトが編集用のファイルのオープンであり、ユーザがファイルの読取りだけを望む場合、ファイルはロックされ、そのファイルを編集することを望む別のユーザはファイルの編集ができなくなる。読取り用にファイルを開き、次いでファイルを編集することを望むユーザは、ファイルを終了させ、次いで編集用にそのファイルを再び開かなければならない。
【課題を解決するための手段】
【０００６】
サーバには修正ファイルオープン動作が実装され、この修正ファイルオープン動作では、ユーザが修正オープンを実行すると、当初はファイルをロックせずにファイルが開かれる。ユーザがそのファイルを開くことを試みているとき、またはそのファイルを開く意図があることをユーザが（明示的または暗黙的に）指示したとき、そのファイルは編集用にロックされる。このように、ユーザがファイルを要求するときのデフォルト動作は、他のユーザがファイルにアクセスすることを拒否することなくファイルを開くことである。次いで、ユーザが編集を行うことを指示したとき、そのファイルに対しロックがかけられる。
【０００７】
上記の概要、ならびに以下の好ましい実施形態の詳細な説明は、添付の図面と共に読むときにより良く理解されよう。本発明を例示するために、図面には本発明の例示的実施形態が示されている。しかし、このことにより本発明は、開示される特定の方法および手段に限定されるわけではない。
【発明を実施するための最良の形態】
【０００８】
（概説）
ユーザが共用サーバ上の文書を開くときの柔軟性を可能にするために、修正オープンが実装される。修正オープンを使用してファイルを開くとき、ファイルは読取り専用で開かれる。修正オープンを使用してファイルを開いたユーザが、ファイルに対して編集を行うことを指示したときにだけ、ファイルに対しロックがかけられ、そのユーザに関してファイル読取り／書込みが行われ、その他のユーザはファイルに対する編集特権を得ることができない。
【０００９】
（例示的コンピューティング装置）
図１および以下の記載により、本発明を実施することができる適切なコンピューティング環境について、簡潔で一般的な説明が与えられる。しかし、前述のように、ハンドヘルド装置、ポータブル装置、およびその他のコンピューティング装置と、すべての種類のコンピューティングオブジェクトとが、本発明と共に使用するように企図されることを理解されたい。したがって、汎用コンピュータについて以下で説明するが、これは一例であって、本発明は、ネットワーク／バス互換性があり対話型のシンクライアントなど、その他のコンピューティング装置でも実施することができる。したがって、非常にわずかな、または最小のクライアント資源しか含まれないネットワークホストのサービス環境、例えば、情報家電（ａｐｐｌｉａｎｃｅ）内に配置されたオブジェクトのようなクライアント装置が単にネットワーク／バスに対するインターフェースとして働くネットワーク環境や、その他のコンピューティング装置とオブジェクトとで本発明を実施することができる。実質的には、データを格納することができ、またはデータをそこから取り出すことができるどんな場所も、本発明による操作に対して望ましく、または適した環境である。
【００１０】
必須ではないが、本発明は、装置またはオブジェクトのためのサービスの開発者が使用するために、オペレーティングシステムを介して実施することができ、および／または本発明に従って動作するアプリケーションソフトウェア内に含めることができる。ソフトウェアは、クライアントワークステーション、サーバ、あるいはその他の装置など１つまたは複数のコンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で説明することができる。一般に、プログラムモジュールには、特定のタスクを実行する、あるいは特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。通常、プログラムモジュールの機能は、様々な実施形態で必要に応じて組み合わせても分散させてもよい。さらに、本発明を他のコンピュータシステム構成を用いて実施できることを当業者は理解されるであろう。本発明に使用するのに適していると考えられる周知のコンピューティングシステム、環境、および／または構成としては、限定はしないが、パーソナルコンピュータ（ＰＣ）、現金自動預払機、サーバコンピュータ、ハンドヘルド装置またはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラム可能な消費者向け電子機器、ネットワークＰＣ、アプライアンス、照明、環境制御要素、ミニコンピュータ、メインフレームコンピュータなどがある。本発明は、通信ネットワーク／バスあるいはその他のデータ伝送媒体を通じてリンクされたリモート処理装置でタスクが実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含むローカルとリモートのどちらのコンピュータ記憶媒体にも配置することができ、クライアントノードがサーバノードとして振舞うことができる。
【００１１】
したがって、図１は本発明を実施することのできる適切なコンピューティングシステム環境１００の一例を示しているが、上記で明らかにしたようにコンピューティングシステム環境１００は適切なコンピューティング環境の一例に過ぎず、本発明の使用法または機能の範囲について何らかの制限を示唆するものではない。例示的動作環境１００に示す構成要素のいずれか１つあるいはその組合せに関して、コンピューティング環境１００が何らかの依存関係または要件を有するものと解釈すべきでもない。
【００１２】
図１を参照すると、本発明を実施する例示的システムは、コンピュータシステム１１０の形態の汎用コンピューティング装置を含む。コンピュータシステム１１０の構成要素には、限定はしないが、処理装置１２０と、システムメモリ１３０と、システムメモリを含む様々なシステム構成要素を処理装置１２０に結合するシステムバス１２１とを含めることができる。システムバス１２１は、様々なバスアーキテクチャのいずれかを使用する、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のいずれでもよい。例えばこうしたアーキテクチャには、限定はしないが、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、およびＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス（メザニンバスとも呼ばれる）が含まれる。
【００１３】
通常、コンピュータシステム１１０は様々なコンピュータ読取可能媒体を含む。コンピュータ読取可能媒体はコンピュータシステム１１０がアクセスできる利用可能などんな媒体でもよく、それには不揮発性媒体と揮発性媒体の両方、取り外し可能媒体と固定媒体の両方が含まれる。例えば、限定はしないが、コンピュータ読取可能媒体にはコンピュータ記憶媒体と通信媒体を含めることができる。コンピュータ記憶媒体には、コンピュータ読取可能命令、データ構造、プログラムモジュール、あるいはその他のデータなどの情報を格納するために任意の方法または技術で実装された揮発性および不揮発性の、取り外し可能および取り外し不能の媒体が含まれる。コンピュータ記憶媒体には、限定はしないが、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、電気消去可能プログラマブル読取り専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリ、またはその他のメモリ技術、コンパクトディスク読取り専用メモリ（ＣＤＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、またはその他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、またはその他の磁気記憶装置、あるいは所望の情報を格納するのに使用することができ、コンピュータシステム１１０がアクセスできる他のどんな媒体も含まれる。通信媒体は通常、コンピュータ読取可能命令、データ構造、プログラムモジュール、あるいはその他のデータを、搬送波や他の移送機構などの被変調データ信号として実施し、それには任意の情報配信媒体が含まれる。「被変調データ信号」という用語は、信号の特性集合のうちの１つまたは複数を有する信号、または情報を信号内に符号化するように変化する信号を意味する。例えば、限定はしないが、通信媒体には、有線ネットワークやダイレクトワイヤード接続などの有線媒体、ならびに音響媒体、ＲＦ媒体、赤外線媒体、他のワイヤレス媒体などのワイヤレス媒体が含まれる。上記のいずれかの組合せもコンピュータ読取可能媒体の範囲内に含めるべきである。
【００１４】
システムメモリ１３０は、読取り専用メモリ（ＲＯＭ）１３１やランダムアクセスメモリ（ＲＡＭ）１３２など、揮発性および／または不揮発性メモリの形態のコンピュータ記憶媒体を含む。起動時などにコンピュータシステム１１０内の要素間で情報を転送する助けとなる基本ルーチンを含む基本入出力システム１３３（ＢＩＯＳ）は、通常はＲＯＭ１３１に格納される。ＲＡＭ１３２は通常、処理装置１２０から即座にアクセス可能であり、および／または処理装置１２０によって現在操作されているデータおよび／またはプログラムモジュールを含む。例えば、限定はしないが、図１に、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７を示す。
【００１５】
コンピュータシステム１１０は、その他の取り外し可能／固定、揮発性／不揮発性のコンピュータ記憶媒体も含むことができる。単なる例に過ぎないが、図１に、固定不揮発性の磁気媒体を読み書きするハードディスクドライブ１４１、取り外し可能な不揮発性の磁気ディスク１５２を読み書きする磁気ディスクドライブ１５１、およびＣＤ−ＲＯＭやその他の光学媒体などの取り外し可能な不揮発性の光ディスク１５６を読み書きする光ディスクドライブ１５５を示す。この例示的動作環境で使用することができるその他の取り外し可能／固定、揮発性／不揮発性のコンピュータ記憶媒体には、限定はしないが、磁気テープカセット、フラッシュメモリカード、デジタルバーサタイルディスク、デジタルビデオテープ、固体ＲＡＭ、固体ＲＯＭなどが含まれる。ハードディスクドライブ１４１は通常、インターフェース１４０などの取り外し不能メモリインターフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は通常、インターフェース１５０などの取り外し可能メモリインターフェースによってシステムバス１２１に接続される。
【００１６】
上記で議論し、図１に図示するドライブとその関連するコンピュータ記憶媒体は、コンピュータシステム１１０に関するコンピュータ読取可能命令、データ構造、プログラムモジュール、および他のデータの記憶を実現する。例えば図１では、ハードディスクドライブ１４１がオペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を格納するものとして図示している。これらの構成要素は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同一であっても、異なっていてもよいことに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７には、少なくともこれらが相異なるコピーであることを示すために異なる番号を付けてある。ユーザは、キーボード１６２や、一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス１６１などの入力装置を介して、コマンドおよび情報をコンピュータシステム１１０に入力することができる。他の入力装置（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどを含めることができる。これらの入力装置や他の入力装置はしばしば、システムバス１２１に結合されるユーザ入力インターフェース１６０を介して処理装置１２０に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースおよびバス構造によって接続することもできる。ノースブリッジなどのグラフィックスインターフェース１８２もシステムバス１２１に接続することができる。ノースブリッジは、ＣＰＵまたはホスト処理装置１２０と通信するチップセットであり、アクセラレーテッドグラフィックスポート（ＡＧＰ）通信に対する任を担う。１つまたは複数のグラフィックス処理装置（ＧＰＵ）１８４が、グラフィックスインターフェース１８２と通信することができる。この点で、ＧＰＵ１８４は一般に、レジスタ記憶装置などのオンチップメモリ記憶装置を含み、ビデオメモリ１８６と通信する。しかしＧＰＵ１８４はコプロセッサの一例であり、したがって様々なコプロセッシング装置をコンピュータ１１０内に含めることができる。モニタ１９１または他のタイプのディスプレイ装置も、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続され、そのインターフェースはビデオメモリ１８６と通信することができる。モニタ１９１に加えて、コンピュータシステムはまた、スピーカ１９７やプリンタ１９６などの他の周辺出力装置も含むことができ、その周辺出力装置は、出力周辺インターフェース１９５を介して接続することができる。
【００１７】
コンピュータシステム１１０は、リモートコンピュータ１８０などの１つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク環境または分散環境で動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置、または他の共通ネットワークノードでよく、一般に、コンピュータシステム１１０に関して上記で述べた要素のうちの多数またはすべてを含むが、図１にはメモリ記憶装置１８１だけを示している。図１に示す論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１および広域ネットワーク（ＷＡＮ）１７３を含むが、他のネットワーク／バスも含むことができる。このようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネット、およびインターネットで一般的なものである。
【００１８】
ＬＡＮネットワーキング環境で使用する際、コンピュータシステム１１０は、ネットワークインターフェース／アダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用する際、コンピュータシステム１１０は一般に、インターネットなどのＷＡＮ１７３を介して通信を確立するためのモデム１７２または他の手段を含む。モデム１７２は内蔵でも外付けでもよく、ユーザ入力インターフェース１６０、または他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク環境では、コンピュータシステム１１０に関して示したプログラムモジュールまたはその一部を、リモートメモリ記憶装置内に格納することができる。例えば、限定はしないが、図１にリモートアプリケーションプログラム１８５を、メモリ装置１８１上に常駐するものとして示す。図示するネットワーク接続は例示的なものであって、コンピュータ間の通信リンクを確立する他の手段も使用できることを理解されよう。
【００１９】
パーソナルコンピューティングとインターネットとが相互に影響し合った結果、様々な分散コンピューティングフレームワークが開発され、また開発されつつある。個人ユーザもビジネスユーザにも等しくシームレスに相互運用およびウェブ使用が可能なアプリケーションおよびコンピューティング装置に対するインターフェースが提供され、コンピューティング活動をいっそうウェブブラウザ指向またはネットワーク指向にする。
【００２０】
例えば、ＭＩＣＲＯＳＯＦＴ（登録商標）の．ＮＥＴプラットフォームは、ウェブベースのデータ記憶装置やダウンロード可能なデバイスソフトウェアなどの、サーバおよびビルディングブロックサービスを含む。本明細書では、コンピューティング装置上に常駐するソフトウェアに関連して例示的実施形態を説明するが、本発明の１つまたは複数の部分は、．ＮＥＴの言語およびサービスのすべてでサポートされ、またはそれを介してアクセスされる、本発明による動作を実行できるようなオペレーティングシステム、またはアプリケーションプログラミングインターフェース（ＡＰＩ）、またはコプロセッサと、ディスプレイ装置と、要求側オブジェクトとのいずれかの間の「仲介（ｍｉｄｄｌｅ  ｍａｎ）」オブジェクトを介して実装することもでき、その他の分散コンピューティングフレームワークとしても実装することができる。
【００２１】
（ロックの遅延）
図２を参照すると、ファイル２１０がサーバコンピュータ２００上に常駐している。権限を有するユーザが、ファイルを開くよう要求を行う。ユーザは、いくつかの方法でサーバコンピュータに接続することができる。例えばユーザは、直接に、ローカルエリアネットワーク（ＬＡＮ）を介して、またはインターネットなどのネットワークを介してリモートに接続することができる。図２の例では、ユーザコンピュータ２３０が、ネットワーク２２０を介してサーバコンピュータ２００に接続される。
【００２２】
ユーザは、ファイルを開くよう要求する。そのような要求を出す方法としては、サーバコンピュータ２００によってサービスされるウェブページ上のハイパーリンクを選択する方法がある。サーバが要求を受け取ると、サーバは、ユーザコンピュータ２３０がファイルを開くことを許可する。ファイルは、ユーザのコンピュータ上でアプリケーション２４０によって開かれる。例えばこのアプリケーションは、ワードプロセッシングアプリケーション、スプレッドシートアプリケーション、オーディオプレーヤアプリケーション、またはダウンロードしたデータをユーザが利用することができるどんなアプリケーションでもよい。一実施形態においては、ユーザは、ユーザコンピュータ２３０上のウェブ閲覧アプリケーションで表示されるウェブページ内のハイパーリンクを選択し、ウェブ閲覧アプリケーションは、適切なアプリケーションでファイルを開く。
【００２３】
ファイルが開かれたとき、一実施形態においては、ファイルのコピーがユーザコンピュータ２３０のキャッシュ内に作成される。ユーザは、サーバコンピュータ２００上のコピーを閲覧し、または読み取る（あるいは、対話、例えばファイルがオーディオデータを含む場合、オーディオプレーヤでそれを再生する等を行う）。当初ファイルを開くとき、ファイルは、「読取り専用」権限で開かれる。このようにして、複数のユーザが、ファイルにアクセスしてそれを使用することができる。
【００２４】
これに代わる実施形態においては、ユーザコンピュータ２３０でローカルコピーを作成する代わりに、読取り専用権限を有するすべてのユーザがサーバ上のファイルを閲覧する。
【００２５】
ファイルのロックは、ユーザのファイル編集の意図が示されたときにだけ行われる。このロックにより、ユーザがファイルに対する「読取り／書込み」許可を有することとなる。次いでユーザは、ファイルデータを修正し、またはファイルデータに付加することができる。
【００２６】
この編集意図の表示（ｉｎｔｅｎｔ  ｔｏ  ｅｄｉｔ  ｉｎｄｉｃａｔｉｏｎ）は、さまざまな形態のうちの１つとすることができる。一実施形態においては、編集意図は、何らかの形でファイルを修正するユーザによって示される。別の実施形態においては、編集意図はユーザによって示される。これは、アプリケーションに組み込まれた特別な「編集」コマンドによって行うことができ、または既に行った変更を保存するようにユーザが要求したときに行われる。別の実施形態においては、編集意図の判定は、予め定められた期間、ユーザが前記ファイルをオープンにしているかについて判定する。例えば、ユーザが読取り専用モードでファイルを１０分間オープンにしている場合、ユーザはファイルを編集する意図があると推定することができる。
【００２７】
一実施形態においては、ロックがかけられると、ユーザコンピュータ２３０のキャッシュ内のファイルのコピーが、現在サーバ上にあるバージョンと同じバージョンであるかについて判定が行われる。これは、その間に編集が行われなかったことを保証するためである。例えば、ユーザＡが、ファイルの第１バージョンを開くが、編集意図を示さない（したがってロックをかけない）。次いでユーザＡが、編集意図を示すことによってロックをかける場合、現在サーバ上にあるファイルのバージョンが、ユーザＡが閲覧中の、編集しようとするバージョンと同一となることを保証しなければならない。ユーザがファイルを開いた時点と、ユーザが編集意図を示した時点の間のある時点とで、ユーザＢがサーバコンピュータ２００上のファイルを開いて修正した場合、不一致が生じる恐れがある。不一致解決の選択肢をユーザに提示すべきである。
【００２８】
例えば、ユーザＡは、ファイルにかなりの変更を行った可能性があり、その変更により、その間に行ったどんな変更も置き換えられるべきであると判断される可能性がある。その場合、ユーザコンピュータ２３０上のバージョンがファイル２１０としてサーバコンピュータ２００に書き込まれ、ユーザＡが読取り／書込み特権を有するようにファイルがロックされる。あるいは、ユーザＡは、ユーザＡがローカルで作業中のバージョンを別のファイルとして保存し、サーバコンピュータ２００上のファイル２１０を編集用に再び開くよう判断する可能性もある。その他の不一致解決の選択肢（ｃｏｎｆｌｉｃｔ  ｒｅｓｏｌｕｔｉｏｎ  ｏｐｔｉｏｎｓ）もユーザに提示することができる。
【００２９】
ユーザコンピュータ２３０内のファイルのコピーが、現在サーバ上にあるファイル２１０のバージョンと同一のバージョンであるか否かを判定するために、バージョン情報を格納して比較することができる。この情報は、バージョン番号、保存した時間／日付情報、またはその他のバージョンデータを含むことができる。あるいは、実際のファイル２１０と、ユーザコンピュータ２３０内にキャッシュされたバージョンとの完全な比較を行ってファイルの内容が同一であるか否かを判定することもできる。
【００３０】
ユーザがユーザコンピュータ２３０にファイル２１０をコピーしないが、その代わりにファイル２１０をサーバコンピュータ２００から直接開く代替の実施形態においては、編集発生（ｅｄｉｔ  ｔｒｉｇｅｒｉｎｇ）イベントが発生したとき、そのユーザに関して編集ファイル２１０に対するロックがかけられる。
【００３１】
図３に示すように、ステップ３００では、ファイルを開く要求を受け取る。ステップ３１０ではファイルを開く。一実施形態においては、ファイルは、読取り専用モードでサーバから直接開かれる。これに代わる実施形態においては、ファイルのコピーが作成されてそれが開かれる。ステップ３２０では、編集発生（ｅｄｉｔｉｎｇ  ｔｒｉｇｅｒ）イベントが発生したかについて判定を行う。この編集発生イベントは、ファイルのローカルコピーが作成された場合には、ユーザがファイルのローカルコピーに対する変更を保存することでよい。この編集発生イベントはまた、ファイルのサーバコピーが読取り専用で開かれた場合には、ユーザがファイルに対して変更を試みることでもよい。この編集発生イベントはまた、所定の期間が経過したこと、ユーザから受け取った「編集」の表示、または編集用にサーバファイルのロックを必要とするその他のどんなイベントでもよい。
【００３２】
ステップ３３０では、ファイルに対してロックがかけられる。これにより、ユーザが修正を不一致にさせることなしに修正するために、ファイルのサーバコピーがロックされる。
【００３３】
図４に示すように、一実施形態においては不一致解決を実施することができる。図３と同様に、第１ステップ４１０は、ファイルを開く要求を受け取るときである。第２ステップ４２０では、ファイルのローカルコピーを作成し、そのローカルコピーを編集用に開く。第３ステップ４３０では、編集発生イベントが発生したかについて判定を行う。次いで比較４４０を行って、サーバ上のファイルのバージョンがステップ４２０でコピーしたバージョンと同一であるか否かを判定する。同一のバージョンである場合、ステップ４５０でファイルに対してロックがかけられる。ユーザがファイルのローカルコピーに対して変更を行った場合、こうした変更を反映するためにファイルのサーバコピーを更新することができる。バージョンが変化した場合、ステップ４６０で不一致解決の選択肢をユーザに提示する。これにより、ステップ４５０のように、ファイルに対しロックをかけることができるが、その他の不一致解決の選択肢をとることもできる。
【００３４】
このようにして、何人かのユーザによって同時にファイルを開くことができ、そのユーザすべてがファイルの内容を使用することができる。しかし、ユーザがファイルを修正することを要求すると、そのユーザに関してロックがかけられ、ファイルに対する読取り／書込み特権を有することになる。
【００３５】
（結論）
上述のように、様々なコンピューティング装置およびネットワークアーキテクチャに関連して本発明の例示的実施形態を説明したが、基礎となる概念は、修正ファイルオープンを実装することが望ましいどんなコンピューティング装置またはシステムにも適用することができる。したがって、本発明の方法およびシステムは、様々なアプリケーションおよび装置に適用することができる。本明細書では例示的なプログラミング言語、名前、および実施例を様々な選択肢の代表として選んだが、こうした言語、名前、および実施例は限定を意図するものではない。本発明で達成されるのと同じ、類似の、または同等のシステムおよび方法を達成するオブジェクトコードを提供する多数の方法があることを当業者は理解されよう。
【００３６】
本明細書で説明した様々な技法は、ハードウェアまたはソフトウェア、あるいは適切である限り、両者の組合せに関連して実施することができる。したがって、本発明の方法および装置、あるいは本発明のある態様または部分は、フロッピィ（登録商標）ディスケット、ＣＤＲＯＭ、ハードドライブ、またはその他の任意の機械読取可能記憶媒体などの有形媒体として実施されたプログラムコード（すなわち命令）の形態を取ることができ、プログラムコードがコンピュータなどのマシンにロードされ実行されたときに、そのマシンが本発明を実施するための装置となる。プログラム可能コンピュータ上のプログラムコード実行のケースでは、コンピューティング装置は一般に、プロセッサ、プロセッサによって読取り可能な記憶媒体（揮発性および不揮発性のメモリおよび／または記憶素子を含む）、少なくとも１つの入力装置、および少なくとも１つの出力装置を含む。例えばデータ処理ＡＰＩなどを使用することによって本発明の信号処理サービスを利用することができる１つまたは複数のプログラムは、コンピュータと通信するために高水準の手続き型プログラミング言語またはオブジェクト指向プログラミング言語で実装することが好ましい。しかし、望むならアセンブリ言語または機械語でプログラムを実装することもできる。いずれにしても、言語はコンパイル型言語またはインタプリタ型言語でよく、ハードウェア実装と組み合わせることができる。
【００３７】
本発明の方法および装置は、電気的な配線またはケーブル、光ケーブル、あるいは他の任意の形態の伝送などの、何らかの伝送媒体を介して伝送されるプログラムコードの形で実施された通信を介して実施することも可能であり、プログラムコードが、ＥＰＲＯＭ、ゲートアレイ、プログラマブルロジックデバイス（ＰＬＤ）、クライアントコンピュータ、ビデオレコーダなどのマシンで受信され、ロードされ、実行されるとき、上記の例示的実施形態で説明した信号処理機能を有する受信側のマシンが本発明を実施する装置になる。汎用プロセッサ上に実装するとき、このプログラムコードは、プロセッサと結び付き、本発明の機能を起動するように動作する固有の装置が提供される。加えて、本発明に関連して使用する任意の記憶技術は常にハードウェアとソフトウェアの組合せでよい。
【００３８】
様々な図の好ましい実施形態と共に本発明を説明したが、本発明から逸脱することなく、他の類似の実施形態を使用することができ、あるいは本発明と同じ機能を実施するために記載の実施形態に修正や追加を行うことができることを理解されたい。さらに、特に無線ネットワーク装置の数が引き続き増加しているので、ハンドヘルド装置のオペレーティングシステム、およびアプリケーション特有のオペレーティングシステムを含む様々なコンピュータプラットフォームが企図されることを強調しておく。したがって、本発明はどの単一の実施形態にも限定すべきではなく、添付の特許請求の範囲による幅と範囲において解釈すべきである。
【図面の簡単な説明】
【００３９】
【図１】本発明の諸態様を実施することができる例示的コンピューティング環境を示すブロック図である。
【図２】サーバコンピュータと、ネットワークと、ユーザコンピュータと、その他のコンピュータとの間の関係の一例を示す機能図である。
【図３】本発明の一実施形態による遅延ロックを示す流れ図である。
【図４】本発明の一実施形態による遅延ロックを示す流れ図である。
【符号の説明】
【００４０】
１００  コンピューティングシステム環境
１１０  コンピュータシステム
１２０  処理装置
１２１  システムバス
１３０  システムメモリ
１３１  読取り専用メモリ（ＲＯＭ）
１３２  ランダムアクセスメモリ（ＲＡＭ）
１３３  基本入出力システム（ＢＩＯＳ）
１３４、１４４  オペレーティングシステム
１３５、１４５  アプリケーションプログラム
１３６、１４６  他のプログラムモジュール
１３７、１４７  プログラムデータ
１４０、１５０  インターフェース
１４１  ハードディスクドライブ
１５１  磁気ディスクドライブ
１５２  磁気ディスク
１５５  光ディスクドライブ
１５６  光ディスク
１６０  ユーザ入力インターフェース
１６１  ポインティングデバイス
１６２  キーボード
１７０  ネットワークインターフェース／アダプタ
１７１  ＬＡＮ
１７２  モデム
１７３  ＷＡＮ
１８０  リモートコンピュータ
１８１  メモリ記憶装置
１８２  グラフィックインターフェース
１８４  グラフィックス処理装置（ＧＰＵ）
１８５  リモートアプリケーションプログラム
１８６  ビデオメモリ
１９０  ビデオインターフェース
１９１  モニタ
１９５  出力周辺インターフェース
１９６  プリンタ
１９７  スピーカ
２００  サーバコンピュータ
２１０  ファイル
２２０  ネットワーク
２３０  ユーザコンピュータ
２４０  アプリケーション
【図１】
2004265415.tif 000003
【図２】
2004265415.tif 000004
【図３】
2004265415.tif 000005
【図４】
2004265415.tif 000006