(57)【要約】【課題】ネットワーク上の多数のノード間で情報共有しながら、互いに競合することなく、必要以上にアクセスを制限されることもなく、協調して並行的に共有情報の編集加工ができ、最終的に統一された形で保存情報として反映させることが可能な情報の管理方法、及びノードとしての情報処理装置を提供する。【解決手段】複数のノードが、編集に必要な情報を互いに提供し、最新状態で共有する。各ノードが共有情報の一部を編集するため、互いに他のノードにロックを掛け合い、それぞれの編集部分を互いに競合させず、並行的に編集する。少なくとも一つのノードが代表して、編集済みの共有情報を保存ノードに送信し、更新保存させる。【選択図】図１０
2008123088.tif 000002
【特許請求の範囲】
【請求項１】
情報記憶手段を有する複数のノード間で、それぞれ編集対象の情報を共有し、編集するネットワークシステムにおける情報の管理方法であって、
複数の前記ノードが、前記情報を協調して編集するための編集参加ノードとして、前記情報を保存するノードから前記情報を共有情報として取得するとともに、協調編集のための編集情報を取得、または生成して、前記共有情報と前記編集情報をそれぞれの前記情報記憶手段に保持する情報共有工程と、
前記情報共有工程によって前記共有情報を取得した前記編集参加ノードが、それぞれの前記情報記憶手段に保持する前記共有情報の任意の一部を編集するために、互いに他のノードに対してそれぞれの編集する共有情報の任意の一部にロックを掛け合い、それぞれの編集する共有情報の任意の一部同士を互いに競合させることなく、並行的に編集動作を行う協調編集工程と、
前記協調編集工程によって前記共有情報を協調編集した前記編集参加ノードの少なくとも一つが、当該ノードの前記情報記憶手段に保持する協調編集済みの前記共有情報を、元の前記情報を保存するノードに送信し、元の前記情報を協調編集済みの前記共有情報に更新し、更新された前記情報として保存する情報保存工程と、を有する
ことを特徴とする情報の管理方法。
【請求項２】
前記協調編集工程は、
前記情報共有工程によって前記共有情報を取得した前記編集参加ノードのそれぞれが、当該ノードの前記情報記憶手段に保持する前記共有情報の一部を編集するために、他のノードに対して共有情報の一部にロックを掛けるようにロック情報を送信してから、前記共有情報の一部の編集を行い、
前記ロック情報を受信した他のノードは、それぞれのノードの前記情報記憶手段に保持する前記共有情報の一部に編集できないようにロックを掛ける、相互情報ロック工程と、
前記相互情報ロック工程において前記ロック情報を送信したそれぞれのノードが、当該ノードの前記情報記憶手段に保持する前記共有情報の一部の編集を終えた後、他のノードに対して共有情報の一部に掛けたロックを外すためのアンロック情報を送信し、
前記アンロック情報を受信した他のノードは、それぞれのノードの前記情報記憶手段に保持する前記共有情報の一部に掛けたロックを外す、相互情報アンロック工程と、を備える
ことを特徴とする請求項１に記載の情報の管理方法。
【請求項３】
前記情報共有工程において、前記編集参加ノードが取得し、それぞれの前記情報記憶手段に保持する前記編集情報は、
前記共有情報を取得した編集参加ノードに関する情報、及びそれら編集参加ノードによる前記共有情報の編集履歴に関する情報を含み、
前記編集参加ノード間で前記共有情報とともに共有され、編集参加ノードが変化したり、編集の行われたりする毎に更新される
ことを特徴とする請求項１または２に記載の情報の管理方法。
【請求項４】
前記協調編集工程において、
編集参加ノードはそれぞれ、当該ノードの前記情報記憶手段に保持する前記共有情報の一部の編集を終えた後、他のノードに対して前記アンロック情報を送信する毎に、前記共有情報の一部の編集内容を含む編集情報を共有するために、自らの保持する編集情報を更新するとともに、他のノードに対して更新した前記編集情報を前記アンロック情報とともに送信し、
また他のノードから前記アンロック情報と前記編集情報を受信する毎に、受信した前記編集情報に基づいて、自らの情報記憶手段に保持する編集情報を更新する、
ことを特徴とする請求項３に記載の情報の管理方法。
【請求項５】
前記情報保存工程は、
編集を終えたノードが前記編集参加ノードから抜けて、前記編集情報が更新されていき、最後のノードが編集を終えたときに、当該ノードによって実行される
ことを特徴とする請求項１乃至４の何れか１項に記載の情報の管理方法。
【請求項６】
前記情報保存工程は、
編集を終えたノードが前記編集参加ノードから抜けるに際して、当該ノードでの保存指示があるとき、当該ノードによって実行される
ことを特徴とする請求項１乃至４の何れか１項に記載の情報の管理方法。
【請求項７】
元の前記情報を保存するノードは、当該ノードから前記情報を取得したノードに関するアクセス情報を保持しており、
前記情報共有工程において、
元の前記情報を保存するノードにアクセスしたノードは、前記アクセス情報を参照し、既に前記情報を前記共有情報として取得したノードが存在する場合は、当該ノードにアクセスして前記共有情報及びその編集情報を取得する
ことを特徴とする請求項１乃至６の何れか１項に記載の情報の管理方法。
【請求項８】
前記相互情報ロック工程では、
編集開始するノードから送信される前記ロック情報は、
ロックを掛ける前記共有情報の一部に関する情報として、
当該ノードでの現在編集中の箇所から一定範囲内のエリア、現在表示されているウィンドウエリア、またはシステムがロックを必要とするエリアの一つ以上を含む
ことを特徴とする請求項２乃至７の何れか１項に記載の情報の管理方法。
【請求項９】
前記相互情報アンロック工程では、
ロックを外すタイミングとして、
編集開始したノードでの、編集入力後一定時間経過後、ユーザによる編集終了指示、または入力ウィンドウの非アクティブ状態の一つ以上に基づき編集を終了し、
当該ノードから前記アンロック情報が送信される
ことを特徴とする請求項２乃至８の何れか１項に記載の情報の管理方法。
【請求項１０】
前記協調編集工程では、
任意の編集参加ノードが、前記ロック情報に基づき既にロックを掛けている前記共有情報の一部に対して編集を行いたい場合に、他のノードに予約ロック情報を送信し、
予約したノードが当該ロック情報に対応するアンロック情報を受信すると、他のノードに前記予約ロック情報に基づくロックが掛かり、予約したノードによる編集が可能になる
ことを特徴とする請求項２乃至９の何れか１項に記載の情報の管理方法。
【請求項１１】
前記協調編集工程では、
同一のエリアをロックエリアとして含む前記予約ロック情報が複数発生した場合、当該エリアに対するロックが外されるたびに、前記予約ロック情報に基づくロックを発生順に実行し、
実行待ちの予約ロック情報件数が所定数に達した場合は、当該エリアに対するロックを外すタイミングを調整する
ことを特徴とする請求項１０に記載の情報の管理方法。
【請求項１２】
情報記憶手段を有する複数のノード間で、それぞれ編集対象の情報を共有し、編集するネットワークシステムにおける、ノードとしての情報処理装置であって、
前記情報を他のノードと協調して編集するための編集参加ノードとして、前記情報を保存するノードから前記情報を共有情報として取得するとともに、協調編集のための編集情報を取得、または生成して、前記共有情報と前記編集情報を前記情報記憶手段に保持させる情報共有手段と、
前記情報記憶手段に保持する前記共有情報の任意の一部を編集するために、他のノードが保持する前記共有情報の対応する一部にロックを掛け、また他のノードから自らの編集する共有情報の任意の一部にロックを掛けさせることで、他のノードと、それぞれの編集する共有情報の任意の一部同士を互いに競合させることなく、並行的に編集動作を行う協調編集手段と、
前記協調編集手段による協調編集を終えた前記共有情報を、元の前記情報を保存するノードに送信し、元の前記情報を協調編集済みの前記共有情報に更新し、保存させる情報保存手段と、を有する
ことを特徴とする情報処理装置。
【請求項１３】
前記協調編集手段は、
前記情報記憶手段に保持する前記共有情報の一部を編集するために、他のノードに対して共有情報の一部にロックを掛けるようにロック情報を送信し、
また他のノードから前記ロック情報を受信したときには、自らの前記情報記憶手段に保持する前記共有情報の一部に編集できないようにロックを掛ける、情報ロック手段と、
前記情報記憶手段に保持する前記共有情報の一部の編集を終えた後、他のノードに対して共有情報の一部に掛けたロックを外すためのアンロック情報を送信し、
また他のノードから前記アンロック情報を受信したときには、自らの前記情報記憶手段に保持する前記共有情報の一部に掛けたロックを外す、情報アンロック手段と、を備える
ことを特徴とする請求項１２に記載の情報処理装置。
【請求項１４】
前記情報共有手段により取得し、前記情報記憶手段に保持する前記編集情報は、
協調編集するために、同じ前記共有情報を取得し、共有する編集参加ノードに関する情報、及びそれら編集参加ノードによる前記共有情報の編集履歴に関する情報を含み、
前記編集参加ノード間で前記共有情報とともに共有され、編集参加ノードが変化したり、編集の行われたりする毎に更新される
ことを特徴とする請求項１２または１３に記載の情報処理装置。
【請求項１５】
前記協調編集手段は、
前記情報記憶手段に保持する前記共有情報の一部の編集を終えた後、他のノードに対して前記アンロック情報を送信する毎に、前記共有情報の一部の編集内容を含む編集情報を共有するために、保持する編集情報を更新するとともに、他のノードに対して更新した前記編集情報を前記アンロック情報とともに送信し、
また他のノードからアンロック情報と編集情報を受信する毎に、受信した前記編集情報に基づいて、前記情報記憶手段に保持する前記編集情報を更新する、
ことを特徴とする請求項１４に記載の情報処理装置。
【請求項１６】
前記情報保存手段は、
編集を終えたノードが前記編集参加ノードから抜けて、前記編集情報が更新されていき、自らが最後のノードとして編集を終えたときに、編集を終えた前記共有情報を、元の前記情報を保存するノードに送信し、元の前記情報を編集済みの前記共有情報に更新し、保存させるものである
ことを特徴とする請求項１２乃至１５の何れか１項に記載の情報処理装置。
【請求項１７】
前記情報保存手段は、
編集を終えて前記編集参加ノードから抜けるに際して、保存指示があるときに、編集を終えた前記共有情報を、元の前記情報を保存するノードに送信し、元の前記情報を編集済みの前記共有情報に更新し、保存させるものである
ことを特徴とする請求項１２乃至１５の何れか１項に記載の情報処理装置。
【請求項１８】
元の前記情報を保存するノードは、当該ノードから前記情報を取得したノードに関するアクセス情報を保持しており、
前記情報共有手段は、
元の前記情報を保存するノードにアクセスして前記アクセス情報を参照し、既に前記情報を前記共有情報として取得したノードが存在する場合は、当該ノードにアクセスして前記共有情報及びその編集情報を取得する
ことを特徴とする請求項１２乃至１７の何れか１項に記載の情報処理装置。
【請求項１９】
前記情報ロック手段は、
ロックを掛ける前記共有情報の一部に関する情報として、
現在編集中の箇所から一定範囲内のエリア、現在表示されているウィンドウエリア、またはシステムがロックを必要とするエリアの一つ以上を含む、
前記ロック情報を送信する
ことを特徴とする請求項１３乃至１８の何れか１項に記載の情報処理装置。
【請求項２０】
前記情報アンロック手段は、
ロックを外すタイミングとして、
編集入力後一定時間経過後、ユーザによる編集終了指示、または入力ウィンドウの非アクティブ状態の一つ以上に基づき編集を終了し、
前記アンロック情報を送信する
ことを特徴とする請求項１３乃至１９の何れか１項に記載の情報処理装置。
【請求項２１】
前記協調編集手段は、
前記ロック情報に基づき既にロックを掛けている前記共有情報の一部に対して編集を行いたい場合に、他のノードに予約ロック情報を送信し、
当該ロック情報に対応する前記アンロック情報を受信すると、他のノードに前記予約ロック情報に基づくロックを掛けさせ、編集を可能にする
ことを特徴とする請求項１３乃至２０の何れか１項に記載の情報処理装置。
【請求項２２】
前記協調編集手段は、
同一のエリアをロックエリアとして含む前記予約ロック情報を複数受信した場合、当該エリアに対するロックが外されるたびに、前記予約ロック情報に基づくロックを受信順に実行し、
実行待ちの予約ロック情報件数が所定数に達した場合は、当該エリアに対するロックを外すタイミングを調整する
ことを特徴とする請求項２１に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報を複数のノード間で共有し、編集するネットワークにおける情報の管理方法、及びネットワークを構成するノードとしての情報処理装置に関する。
【背景技術】
【０００２】
近年、ネットワークを構成する任意のノード間で自由にデータの送受信を行うような通信形態を有するネットワークが盛んに利用されるようになってきた。
【０００３】
従来は、中央にホストの役目を担ったサーバなどがあり、クライアントとしての各端末が、それぞれホストサーバにアクセスし、端末間でやり取りが必要であれば、ホストサーバが仲介して行うというタイプの中央集中処理型のネットワークが主流であった。
【０００４】
これに対して、いわゆる分散処理型のネットワークが徐々に登場してきている。保存する情報を分散する、またその処理を分散するといった機構を実現するためには、通信の機能も分散しなければならない。すなわち、ネットワークを構成する各ノード間で、自由にデータ通信が行われなければならない。
【０００５】
代表的な形態として、Ｐ２Ｐ（Ｐｅｅｒ  ｔｏ  Ｐｅｅｒ）と呼ばれる通信ネットワークの形態がある。Ｐ２Ｐは不特定多数のノード間で直接情報のやり取りを行なうネットワークの利用形態であり、技術的に中央サーバの媒介を要するものと、バケツリレー式にデータを運ぶものの２種類がある。
【０００６】
中央サーバを要する場合にも、中央サーバはファイル検索データベースの提供とノードの接続管理のみを行っており、データ自体のやり取りはノード間の直接接続によって行われている。
【０００７】
また、中央サーバがホストとして集中処理するような形態であっても、任意のクライアントが中央サーバとしての機能を果たすよう随時変更可能なシステムもあり、実質的には不特定多数の任意のノード間で直接情報のやり取りを行なうＰ２Ｐのシステムと同等機能を有すると見なせるようなネットワーク形態もある。
【０００８】
こういったデータ共有、分散処理のネットワーク形態を効率的に達成する技術が研究されてきた（特許文献１、２、参照）。特許文献１及び２では、何れもＰ２Ｐのシステムを採っており、任意のノード間でデータを共有し、データ送受信を行うシステムが形成されている。
【０００９】
これらにより、ネットワークシステムの利用形態としての自由度は向上し、ユーザは大きな利便性を手に入れたが、一方では、各処理能力を分散して所有することになるため、個々のユーザの処理の自由度から見ればかえって不便となる場合もある。
【００１０】
例えば、データを共有して所有するとすれば、ネットワークの規模が大きく、共有の範囲が拡がれば拡がるほど、膨大なユーザが共有データにアクセスすることになる。しかしアクセスするだけでなく、編集などの加工を自由に行えるようにしようとすれば、アクセスが集中すると共有するデータの整合性がとれなくなるため、アクセス不可のユーザが発生してくる。すなわち競合が生じてくる。
【００１１】
アクセスして共有データを取得することはできても、それを元のデータに反映することはできず、同時にアクセスしただけ、データファイルができてしまうといった状態になり、収拾がつかなくなりかねない。またそれを防止しようと排他的にロックを掛けるようにすると、アクセスできないユーザが多く出てくることになってしまう。
【００１２】
広いネットワーク上の多数のユーザが共有するデータに対して、互いに協調してデータの編集加工ができ、最終的に統一された形で保存データとして反映されるというシステムが望まれる。
【特許文献１】特開２００１−６７３２５号公報
【特許文献２】特開２００４−２５２７３２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
上記のようにＰ２Ｐネットワークシステムなどのデータを複数のノードで共有し、互いに編集などの加工処理が可能なシステムにおいては、広いネットワーク上の多数のユーザがアクセスしようとすると、競合が発生し、同時にアクセスして処理を行うとデータの整合性がとれなくなってしまうことが起こる。排他的にロックを掛けることで競合を避けようとすると、多くのユーザがアクセスできなくなってしまう。また、各ユーザにデータ取得を許し、並行的に処理をさせると、多数のデータファイルが発生し、収拾がつかなくなってしまう。
【００１４】
本発明の目的は、上記の課題を解決し、ネットワーク上の複数のノードに共有された情報に対して、多数のノード間で情報共有しながら、互いに競合することなく、必要以上にアクセスを制限されることもなく、協調して並行的に共有情報の編集加工ができ、最終的に統一された形で保存情報として反映されることが可能な情報の管理方法、及びノードとしての情報処理装置を提供することである。
【課題を解決するための手段】
【００１５】
本発明は、上記の課題を解決するため、以下の特徴を有するものである。
【００１６】
１．  情報記憶手段を有する複数のノード間で、それぞれ編集対象の情報を共有し、編集するネットワークシステムにおける情報の管理方法であって、複数の前記ノードが、前記情報を協調して編集するための編集参加ノードとして、前記情報を保存するノードから前記情報を共有情報として取得するとともに、協調編集のための編集情報を取得、または生成して、前記共有情報と前記編集情報をそれぞれの前記情報記憶手段に保持する情報共有工程と、前記情報共有工程によって前記共有情報を取得した前記編集参加ノードが、それぞれの前記情報記憶手段に保持する前記共有情報の任意の一部を編集するために、互いに他のノードに対してそれぞれの編集する共有情報の任意の一部にロックを掛け合い、それぞれの編集する共有情報の任意の一部同士を互いに競合させることなく、並行的に編集動作を行う協調編集工程と、前記協調編集工程によって前記共有情報を協調編集した前記編集参加ノードの少なくとも一つが、当該ノードの前記情報記憶手段に保持する協調編集済みの前記共有情報を、元の前記情報を保存するノードに送信し、元の前記情報を協調編集済みの前記共有情報に更新し、更新された前記情報として保存する情報保存工程と、を有することを特徴とする情報の管理方法。
【００１７】
２．  前記協調編集工程は、前記情報共有工程によって前記共有情報を取得した前記編集参加ノードのそれぞれが、当該ノードの前記情報記憶手段に保持する前記共有情報の一部を編集するために、他のノードに対して共有情報の一部にロックを掛けるようにロック情報を送信してから、前記共有情報の一部の編集を行い、前記ロック情報を受信した他のノードは、それぞれのノードの前記情報記憶手段に保持する前記共有情報の一部に編集できないようにロックを掛ける、相互情報ロック工程と、前記相互情報ロック工程において前記ロック情報を送信したそれぞれのノードが、当該ノードの前記情報記憶手段に保持する前記共有情報の一部の編集を終えた後、他のノードに対して共有情報の一部に掛けたロックを外すためのアンロック情報を送信し、前記アンロック情報を受信した他のノードは、それぞれのノードの前記情報記憶手段に保持する前記共有情報の一部に掛けたロックを外す、相互情報アンロック工程と、を備えることを特徴とする１に記載の情報の管理方法。
【００１８】
３．  前記情報共有工程において、前記編集参加ノードが取得し、それぞれの前記情報記憶手段に保持する前記編集情報は、前記共有情報を取得した編集参加ノードに関する情報、及びそれら編集参加ノードによる前記共有情報の編集履歴に関する情報を含み、前記編集参加ノード間で前記共有情報とともに共有され、編集参加ノードが変化したり、編集の行われたりする毎に更新されることを特徴とする１または２に記載の情報の管理方法。
【００１９】
４．  前記協調編集工程において、編集参加ノードはそれぞれ、当該ノードの前記情報記憶手段に保持する前記共有情報の一部の編集を終えた後、他のノードに対して前記アンロック情報を送信する毎に、前記共有情報の一部の編集内容を含む編集情報を共有するために、自らの保持する編集情報を更新するとともに、他のノードに対して更新した前記編集情報を前記アンロック情報とともに送信し、また他のノードから前記アンロック情報と前記編集情報を受信する毎に、受信した前記編集情報に基づいて、自らの情報記憶手段に保持する編集情報を更新する、ことを特徴とする３に記載の情報の管理方法。
【００２０】
５．  前記情報保存工程は、編集を終えたノードが前記編集参加ノードから抜けて、前記編集情報が更新されていき、最後のノードが編集を終えたときに、当該ノードによって実行されることを特徴とする１乃至４の何れか１項に記載の情報の管理方法。
【００２１】
６．  前記情報保存工程は、編集を終えたノードが前記編集参加ノードから抜けるに際して、当該ノードでの保存指示があるとき、当該ノードによって実行されることを特徴とする１乃至４の何れか１項に記載の情報の管理方法。
【００２２】
７．  元の前記情報を保存するノードは、当該ノードから前記情報を取得したノードに関するアクセス情報を保持しており、前記情報共有工程において、元の前記情報を保存するノードにアクセスしたノードは、前記アクセス情報を参照し、既に前記情報を前記共有情報として取得したノードが存在する場合は、当該ノードにアクセスして前記共有情報及びその編集情報を取得することを特徴とする１乃至６の何れか１項に記載の情報の管理方法。
【００２３】
８．  前記相互情報ロック工程では、編集開始するノードから送信される前記ロック情報は、ロックを掛ける前記共有情報の一部に関する情報として、当該ノードでの現在編集中の箇所から一定範囲内のエリア、現在表示されているウィンドウエリア、またはシステムがロックを必要とするエリアの一つ以上を含むことを特徴とする２乃至７の何れか１項に記載の情報の管理方法。
【００２４】
９．  前記相互情報アンロック工程では、ロックを外すタイミングとして、編集開始したノードでの、編集入力後一定時間経過後、ユーザによる編集終了指示、または入力ウィンドウの非アクティブ状態の一つ以上に基づき編集を終了し、当該ノードから前記アンロック情報が送信されることを特徴とする２乃至８の何れか１項に記載の情報の管理方法。
【００２５】
１０．  前記協調編集工程では、任意の編集参加ノードが、前記ロック情報に基づき既にロックを掛けている前記共有情報の一部に対して編集を行いたい場合に、他のノードに予約ロック情報を送信し、予約したノードが当該ロック情報に対応するアンロック情報を受信すると、他のノードに前記予約ロック情報に基づくロックが掛かり、予約したノードによる編集が可能になることを特徴とする２乃至９の何れか１項に記載の情報の管理方法。
【００２６】
１１．  前記協調編集工程では、同一のエリアをロックエリアとして含む前記予約ロック情報が複数発生した場合、当該エリアに対するロックが外されるたびに、前記予約ロック情報に基づくロックを発生順に実行し、実行待ちの予約ロック情報件数が所定数に達した場合は、当該エリアに対するロックを外すタイミングを調整することを特徴とする１０に記載の情報の管理方法。
【００２７】
１２．  情報記憶手段を有する複数のノード間で、それぞれ編集対象の情報を共有し、編集するネットワークシステムにおける、ノードとしての情報処理装置であって、前記情報を他のノードと協調して編集するための編集参加ノードとして、前記情報を保存するノードから前記情報を共有情報として取得するとともに、協調編集のための編集情報を取得、または生成して、前記共有情報と前記編集情報を前記情報記憶手段に保持させる情報共有手段と、前記情報記憶手段に保持する前記共有情報の任意の一部を編集するために、他のノードが保持する前記共有情報の対応する一部にロックを掛け、また他のノードから自らの編集する共有情報の任意の一部にロックを掛けさせることで、他のノードと、それぞれの編集する共有情報の任意の一部同士を互いに競合させることなく、並行的に編集動作を行う協調編集手段と、前記協調編集手段による協調編集を終えた前記共有情報を、元の前記情報を保存するノードに送信し、元の前記情報を協調編集済みの前記共有情報に更新し、保存させる情報保存手段と、を有することを特徴とする情報処理装置。
【００２８】
１３．  前記協調編集手段は、前記情報記憶手段に保持する前記共有情報の一部を編集するために、他のノードに対して共有情報の一部にロックを掛けるようにロック情報を送信し、また他のノードから前記ロック情報を受信したときには、自らの前記情報記憶手段に保持する前記共有情報の一部に編集できないようにロックを掛ける、情報ロック手段と、前記情報記憶手段に保持する前記共有情報の一部の編集を終えた後、他のノードに対して共有情報の一部に掛けたロックを外すためのアンロック情報を送信し、また他のノードから前記アンロック情報を受信したときには、自らの前記情報記憶手段に保持する前記共有情報の一部に掛けたロックを外す、情報アンロック手段と、を備えることを特徴とする１２に記載の情報処理装置。
【００２９】
１４．  前記情報共有手段により取得し、前記情報記憶手段に保持する前記編集情報は、協調編集するために、同じ前記共有情報を取得し、共有する編集参加ノードに関する情報、及びそれら編集参加ノードによる前記共有情報の編集履歴に関する情報を含み、前記編集参加ノード間で前記共有情報とともに共有され、編集参加ノードが変化したり、編集の行われたりする毎に更新されることを特徴とする１２または１３に記載の情報処理装置。
【００３０】
１５．  前記協調編集手段は、前記情報記憶手段に保持する前記共有情報の一部の編集を終えた後、他のノードに対して前記アンロック情報を送信する毎に、前記共有情報の一部の編集内容を含む編集情報を共有するために、保持する編集情報を更新するとともに、他のノードに対して更新した前記編集情報を前記アンロック情報とともに送信し、また他のノードからアンロック情報と編集情報を受信する毎に、受信した前記編集情報に基づいて、前記情報記憶手段に保持する前記編集情報を更新する、ことを特徴とする１４に記載の情報処理装置。
【００３１】
１６．  前記情報保存手段は、編集を終えたノードが前記編集参加ノードから抜けて、前記編集情報が更新されていき、自らが最後のノードとして編集を終えたときに、編集を終えた前記共有情報を、元の前記情報を保存するノードに送信し、元の前記情報を編集済みの前記共有情報に更新し、保存させるものであることを特徴とする１２乃至１５の何れか１項に記載の情報処理装置。
【００３２】
１７．  前記情報保存手段は、編集を終えて前記編集参加ノードから抜けるに際して、保存指示があるときに、編集を終えた前記共有情報を、元の前記情報を保存するノードに送信し、元の前記情報を編集済みの前記共有情報に更新し、保存させるものであることを特徴とする１２乃至１５の何れか１項に記載の情報処理装置。
【００３３】
１８．  元の前記情報を保存するノードは、当該ノードから前記情報を取得したノードに関するアクセス情報を保持しており、前記情報共有手段は、元の前記情報を保存するノードにアクセスして前記アクセス情報を参照し、既に前記情報を前記共有情報として取得したノードが存在する場合は、当該ノードにアクセスして前記共有情報及びその編集情報を取得することを特徴とする１２乃至１７の何れか１項に記載の情報処理装置。
【００３４】
１９．  前記情報ロック手段は、ロックを掛ける前記共有情報の一部に関する情報として、現在編集中の箇所から一定範囲内のエリア、現在表示されているウィンドウエリア、またはシステムがロックを必要とするエリアの一つ以上を含む、前記ロック情報を送信することを特徴とする１３乃至１８の何れか１項に記載の情報処理装置。
【００３５】
２０．  前記情報アンロック手段は、ロックを外すタイミングとして、編集入力後一定時間経過後、ユーザによる編集終了指示、または入力ウィンドウの非アクティブ状態の一つ以上に基づき編集を終了し、前記アンロック情報を送信することを特徴とする１３乃至１９の何れか１項に記載の情報処理装置。
【００３６】
２１．  前記協調編集手段は、前記ロック情報に基づき既にロックを掛けている前記共有情報の一部に対して編集を行いたい場合に、他のノードに予約ロック情報を送信し、当該ロック情報に対応する前記アンロック情報を受信すると、他のノードに前記予約ロック情報に基づくロックを掛けさせ、編集を可能にすることを特徴とする１３乃至２０の何れか１項に記載の情報処理装置。
【００３７】
２２．  前記協調編集手段は、同一のエリアをロックエリアとして含む前記予約ロック情報を複数受信した場合、当該エリアに対するロックが外されるたびに、前記予約ロック情報に基づくロックを受信順に実行し、実行待ちの予約ロック情報件数が所定数に達した場合は、当該エリアに対するロックを外すタイミングを調整することを特徴とする２１に記載の情報処理装置。
【発明の効果】
【００３８】
本発明によれば、情報を複数のノード間で共有し、編集するネットワークシステムにおいて、複数の編集参加ノードが、編集に必要な情報を互いに提供し、最新の状態で共有する。また、それぞれのノードが共有情報の一部を編集するために、互いに他のノードにロックを掛け合い、それぞれの編集する部分を互いに競合させることなく、並行的に編集動作を行う。そして、編集参加ノードの少なくとも一つが代表して、編集済みの共有情報を元の情報を保存するノードに送信し、更新保存させる。
【００３９】
これにより、多数のノード間で情報共有しながら、互いに競合することなく、必要以上にアクセスを制限されることもなく、協調して並行的に共有情報の編集加工ができ、最終的に統一された形で保存情報として反映されることが可能な情報の管理方法、及びノードとしての情報処理装置を提供することができる。
【発明を実施するための最良の形態】
【００４０】
以下に、図を参照して本発明に係る実施形態を説明する。
【００４１】
（ネットワークの全体構成）
図１はネットワーク１の全体的な構成の例を示す図である。図１を用いて本発明に係る情報の管理方法、及び情報処理装置により構成されるネットワークの実施形態について、その全体構成を説明する。
【００４２】
本発明の実施形態に係るネットワーク１は、図１に示すように、複数台の端末装置２（２１、２２、…、２ｎ）、スイッチングハブ３、ルータ４、及び認証サーバ５などのノードによって構成されるＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）である。これらの端末装置２は、スイッチングハブ３にツイストペアケーブルによってスター型に繋がれている。
【００４３】
ネットワークを構成するノードとしての端末装置２は、本発明に係る情報処理装置であり、パーソナルコンピュータ、ワークステーション、またはプリンタなどのような、他の装置との間でデータの入出力の処理を実行する装置である。以下、ノードといえば単にこの端末装置のことを指し、情報処理装置としてのパーソナルコンピュータが用いられるものとして説明する。
【００４４】
また本実施形態では、Ｐ２Ｐ（Ｐｅｅｒ  ｔｏ  Ｐｅｅｒ）と呼ばれる通信ネットワークの形態を採っている。Ｐ２Ｐは不特定多数のノード間で直接情報のやり取りを行なうネットワークの利用形態であり、技術的に中央サーバの媒介を要するものと、バケツリレー式にデータを運ぶものの２種類がある。
【００４５】
中央サーバを要する場合にも、中央サーバはファイル検索データベースの提供とノードの接続管理のみを行っており、データ自体のやり取りはノード間の直接接続によって行われている。
【００４６】
また、中央サーバがホストとして集中処理するような形態であっても、任意のクライアントが中央サーバとしての機能を果たすよう随時変更可能なシステムもあり、実質的には不特定多数の任意のノード間で直接情報のやり取りを行なうＰ２Ｐのシステムと同等機能を有すると見なせるようなネットワーク形態もある。
【００４７】
本実施形態では、中央サーバは用いず、後で図３の接続トポロジーを説明するが、予め関連付けられたノード（端末装置）間では直接接続を行い、通信する。その他のノードとは、直接接続したノードを介して間接的に接続することになる。認証サーバ５は認証のための証明書に関わる管理のみを担い、通信のための接続には直接関わらない。またルータ４もノード（端末装置）間の通信には直接関与しない。
【００４８】
Ｐ２Ｐでは、直接ノード同士が通信するため、如何にお互いの正当性を認証するか、不正の入り込む余地を抑制するかというセキュリティが重要である。そのために認証サーバ５の発行するディジタル証明書を用いる。後述するＳＳＬ通信においては、Ｘ．５０９仕様のディジタル証明書が使用される。
【００４９】
以下、上記の観点から、本実施形態に係るネットワークにおいて、これらのノード２同士がデータ通信を行い、各ノードで共有された情報について、協調して編集を行う場合について説明する。
【００５０】
（端末装置の構成）
図２はノード（端末装置）２のハードウェア構成の例を示す図である。
【００５１】
端末装置２は、図２に示すように、ＣＰＵ２０ａ、ＲＡＭ２０ｂ、ＲＯＭ２０ｃ、ハードディスク２０ｄ、通信インタフェース２０ｅ、画像インタフェース２０ｆ、入出力インタフェース２０ｇ、その他の種々の回路または装置などによって構成される。
【００５２】
通信インタフェース２０ｅは、例えばＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）であって、ツイストペアケーブルを介してスイッチングハブ３のいずれかのポートに繋がれている。画像インタフェース２０ｆは、モニタと繋がれており、画面を表示するための映像信号をモニタに送出する。
【００５３】
入出力インタフェース２０ｇは、キーボード若しくはマウスなどの入力装置またはＣＤ−ＲＯＭドライブなどの外部記憶装置などと繋がれている。そして、ユーザが入力装置に対して行った操作の内容を示す信号を入力装置から入力する。または、ＣＤ−ＲＯＭなどの記録媒体に記録されているデータを外部記憶装置に読み取らせ、これを入力する。または、記録媒体に書き込むためのデータを外部記憶装置に出力する。
【００５４】
ハードディスク２０ｄには、後で機能ブロック図（図５）を用いて説明するが、データ保持部２０１、ノード情報部２０２、編集履歴部２０３、一時情報記憶部２０４、処理背制御部２０５、その他操作部２０６、データ受信部２０７、データ解析部２０８、データ作成部２０９、及びデータ送信部２１０などの機能を実現するためのプログラム及びデータが格納されている。これらのプログラム及びデータは必要に応じてＲＡＭ２０ｂに読み出され、ＣＰＵ２０ａによってプログラムが実行される。
【００５５】
各ノード２には、それぞれ、他のノード２との識別のために、ホスト名（マシン名）、ＩＰアドレス、及びＭＡＣアドレスが与えられている。ホスト名は、ネットワーク１の管理者などが自由に付けることができる。ＩＰアドレスは、ネットワーク１の規則に従って与えられる。ＭＡＣアドレスは、そのノード２の通信インタフェース１０ｅに対して固定的に与えられているアドレスである。
【００５６】
本実施形態では、ノード（端末装置）２１、２２、…ごとに「ＰＣ１」、「ＰＣ２」、…のようなホスト名が付されているものとする。以下、これらのノード２をホスト名によって記載することがある。
【００５７】
（ノードの接続形態）
図３はノードの接続形態、すなわちノード（端末装置）の論理的なトポロジーの例を示す図である。図３を用いてノード２の接続形態を説明する。
【００５８】
ノード２は、図３に示すように、仮想空間に配置されているものと仮想されている。そして、点線で示すように、仮想空間内の近隣の少なくとも１台の他のノード２と関連付けられている。かつ、これらの関連付けによって、すべてのノード２が互いに直接的にまたは間接的に関連するようになっている。
【００５９】
なお、「直接的に関連」とは、図３において１本の点線で繋がれていること（例えば、図３のＰＣ１とＰＣ２またはＰＣ９とのような関係）を言い、「間接的に関連」とは、２本以上の点線及び１つ以上のノードで繋がれていること（例えば、図３のＰＣ１とＰＣ４とのような関係）を言う。ノード２は、自らに直接的に関連付けられている他のノード２に対してデータを送信する。
【００６０】
図４は図３のように関連付けられたノード２の接続テーブルＴＬの例を示す図である。各ノード２毎に、直接データ送信可能な、「直接的に関連」付けられている他のノード２との接続のための情報のリストをテーブル化して保持している。
【００６１】
例えば、図３におけるＰＣ１、ＰＣ２、ＰＣ６、ＰＣ７、ＰＣ８、及びＰＣ９のノードには、それぞれ図４に示すような接続テーブルＴＬ１、ＴＬ２、ＴＬ６、ＴＬ７、ＴＬ８、及びＴＬ９が保持されている。
【００６２】
（端末装置の各部の機能）
図５（ａ）はノード（端末装置）２の機能的構成の例を示すブロック図である。図５（ａ）を用いてノード２の各部の処理機能について説明する。
【００６３】
データ保持部２０１は、そのノード２またはユーザなどの属性を示す属性データ、そのノード２自身のディジタル証明書、失効リスト（ＣＲＬ）、オペレーティングシステム（ＯＳ）またはアプリケーションソフトなどが使用するデータ、ユーザがアプリケーションソフトによって作成したデータ、その他種々のデータを、ファイルとして保存している。
【００６４】
ディジタル証明書は、ノード２の要請により認証サーバ５が発行し、当該ノード２が保持し、ノード２同士の通信時に互いを認証するのに利用される。失効リスト（ＣＲＬ）は、ノードの脱退などによるディジタル証明書の失効を登録記載するもので、認証サーバ５が管理するが、Ｐ２Ｐ通信を行う本実施形態では、各ノード２がそれぞれ失効リスト（ＣＲＬ）を保持し、更新などの管理を行う。
【００６５】
ノード情報部２０２は、そのノード２自身に直接的に関連付けられている他のノード２のホスト名、ＩＰアドレス、及びＭＡＣアドレスなどの属性の一覧を示す接続テーブルＴＬを保存している。例えば、図３におけるＰＣ１、ＰＣ２、ＰＣ６、ＰＣ７、ＰＣ８、及びＰＣ９のノード情報部２０２に、それぞれ図４に示すような接続テーブルＴＬ１、ＴＬ２、ＴＬ６、ＴＬ７、ＴＬ８、及びＴＬ９が保存されている例を図４を用いて既述した。これらの接続テーブルＴＬの内容は、各ノード２の関連付けに基づいて管理者によって予め作成される。
【００６６】
その他操作部２０６は、上記ノード情報部２０２に保持される接続テーブルＴＬの管理を行う。
【００６７】
また、その他操作部２０６は、データ保持部２０１にデータを保存し、またはデータ保持部２０１に保存されているデータを更新するなどの処理を行う。例えば、ノード２の環境または設定内容が変わるごとに、属性データを更新する。または、失効リスト（ＣＲＬ）を更新する処理を行う。
【００６８】
また、その他操作部２０６は、他のノード２から送信されて来たディジタル証明書などに基づいて当該他のノード２の認証の処理を行う。また送信されて来たディジタル証明書が失効していないかどうかを、データ保持部２０１に保存されている失効リスト（ＣＲＬ）を参照して確認する。また、当該ノード２が新たにネットワークに参加、もしくは脱退しようとする場合の処理などを行う。
【００６９】
その他操作部２０６は、必要に応じてデータ受信部２０７、データ送信部２１０を介してネットワーク１の他のノード２とデータ通信を行い、また必要に応じてノード情報部２０２、データ保持部２０１のデータを参照、あるいは更新する。
【００７０】
データ受信部２０７は、他のノード２とデータ通信を行うための制御処理を行う。データ受信部２０７は、ネットワーク１を流れるパケットのうち、そのノード２に必要なものを受信する。
【００７１】
データ解析部２０８は、データ受信部２０７が受信した受信データから必要な情報を抽出してその内容を解析することによって、その受信データの種類を判別する。
【００７２】
データ作成部２０９は、処理制御部２０５、その他操作部２０６などの指示に基づいて、他のノード２に送信するための送信データを作成する。
【００７３】
データ送信部２１０は、送信データ作成部２０９によって生成され、パケット化された送信データを他のノード２に送信する。
【００７４】
＜情報共有、協調編集及び情報保存に関わる機能＞
図５（ｂ）は、各ノード２同士でのデータ情報共有と協調編集に関わる機能要素部分の詳細、特に処理制御部２０５の機能の内部構成を示す図である。図５（ｂ）を用いて、各ノード間でのデータ共有と共有データの協調編集、及び編集済みデータの保存に関わる機能要素について説明する。
【００７５】
処理制御部２０５は、データをノード２同士で協調編集するために互いにデータ共有する処理や、編集時に互いにロックを掛け合い、編集エリアが競合しないように調整する処理機能や、編集を終えた後の保存などのデータ処理を制御する。
【００７６】
処理制御部２０５は、情報共有処理部２１１、協調編集処理部２１２、そして情報保存処理部２１３を構成要素として含み、また協調編集処理部２１２は、情報ロック処理部２１２ａ、情報アンロック処理部２１２ｂをその構成要素として含む。
【００７７】
一方、ノード情報部２０２、編集履歴部２０３、及び一時情報記憶部２０４は、上記協調編集などに必要な情報をそれぞれ一時的に保持する。
【００７８】
ノード情報部２０２は、協調編集を行うために共有データを取得し、保持している編集参加ノードを特定することができるノード情報を保持する。
【００７９】
編集履歴部２０３は、各ノードで編集された内容や履歴に関する編集履歴情報を保持する。
【００８０】
そして一時情報記憶部２０４は、共有データそのもの、ロック状態、ロックエリアに関する情報、また場合によっては編集中の差分データを一時的に保持する。
【００８１】
これにより、後述する制御情報（ロック情報、アンロック情報）、編集情報（編集履歴、ノード情報）、そして共有データやその差分情報を、協調編集のためにノード間で互いに送受信することができる。すなわち、ノード情報部２０２、編集履歴部２０３、及び一時情報記憶部２０４は、情報記憶手段として機能する。
【００８２】
情報共有処理部２１１は、編集したいデータ（情報）を他のノードとともに協調して編集するため、元のデータを保存しているノード、あるいは既にそのデータ（情報）を共有データ（共有情報）として保持している他のノードから取得し、共有データとして一時情報記憶部２０４に保持する。すなわち、情報共有処理部２１１は情報共有手段として機能する。共有データ（共有情報）を取得する処理の詳細は後述する。
【００８３】
また、協調編集処理部２１２は、共有データの一部を編集するに当たって、他のノードの対応する共有データの一部にロックを掛け、また他のノードからも自らの保持する共有データの一部にロックを掛けさせることで、他のノードと、それぞれの編集する共有データの一部同士が互いに競合しないように、並行的に編集動作を行わせる。すなわち、協調編集処理部２１２は協調編集手段として機能する。共有データ（共有情報）を協調して編集する処理の詳細は後述する。
【００８４】
また情報保存処理部２１３は、必要に応じて一時情報記憶部２０４に保持する編集を終えた共有データ（共有情報）を編集前の元のデータを保存するノードに送信し、元のデータ（情報）と置き換えて、更新保存させる。すなわち、情報保存処理部２１３は情報保存手段として機能する。共有データ（共有情報）を元データとして更新保存する処理の詳細は後述する。
【００８５】
また情報ロック処理部２１２ａは、協調編集手段として機能する際に、共有データの一部を編集するに当たって、他のノードの対応する共有データの一部にロックを掛けさせるようにロック情報を送信する。また他のノードからロック情報を受信したときは、同様に自らの保持する共有データの一部にロックを掛ける。すなわち、情報ロック処理部２１２ａは情報ロック手段として機能する。
【００８６】
また情報アンロック処理部２１２ｂは、ロック情報を送信して編集中の共有データの一部について、編集を終えた後、他のノードに対して共有データの一部に掛けさせたロックを外すためのアンロック情報を送信する。また他のノードからアンロック情報を受信したときには、同様に自らの保持する共有データの一部に掛けたロックを外す。すなわち、情報アンロック処理部２１２ｂは情報アンロック手段として機能する。
【００８７】
処理制御部２０５は、共有データの協調編集処理、特に情報のロック、アンロック処理において、必要に応じてデータ受信部２０７、データ送信部２１０を介してネットワーク１の他のノード２とデータ通信を行い、各種情報を送受信する。各種情報とは、上記ノード情報部２０２、編集履歴部２０３、及び一時情報記憶部２０４が保持する制御情報（ロック情報、アンロック情報）、編集情報（編集履歴、ノード情報）、そして共有データやその差分情報である。上記データ通信により、これらの情報が参照、あるいは更新される。共有データの協調編集処理、特に情報のロック、アンロック処理における上述の処理については後述する。
【００８８】
（ノード間のＳＳＬ通信）
ところで、本実施形態におけるノード２は、直接的にまたは間接的に関連付けられたノード２との間でＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ）通信を行うことができる。ＳＳＬは、ディジタル証明書を用いて暗号化を行うことにより、ネットワーク上でデータを安全に送受信するためのプロトコルである。本実施形態におけるＳＳＬ通信のコネクションを確立する処理の流れについて、以下に説明する。
【００８９】
なお、一般的なディジタル証明書及び失効リスト（ＣＲＬ）の標準仕様は、ＩＴＵ（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｕｎｉｏｎ）によってＸ．５０９として定められている。以下のＳＳＬ通信の説明においては、ディジタル証明書をＸ．５０９証明書と呼称する。
【００９０】
図６はＳＳＬ通信のコネクションを確立する際の処理の流れの例を説明するための図である。図３のノード、例えばＰＣ１とＰＣ２とが目的の通信を行おうとする場合を例に、図６を参照しながらさらに詳細に説明する。
【００９１】
ＳＳＬ通信のコネクションを確立する前段階として、接続自体の確立が行われる。まず、例えばＰＣ１において、ＰＣ２と通信を行いたい旨のコマンドをユーザがキーボードなどを操作して入力したとする。すると、データ作成部２０９は接続要求データを作成し、データ送信部２１０はその接続要求データを他方のノードＰＣ２に対して送信する。
【００９２】
そうすると、ＰＣ２において、データ受信部２０７はＰＣ１からの接続要求データを受信し、データ解析部２０８はそのデータの種類を解析する。ここでは、当然、接続要求データであると解析される。データ作成部２０９は接続を許可する旨を示す接続許可データを生成し、データ送信部２１０はＰＣ１に送信する。
【００９３】
ＰＣ１のデータ受信部２０７によって接続許可データが受信され、その後所定の処理が行われると、ＰＣ１とＰＣ２とが接続される。但し、この時点では、まだＳＳＬ通信のコネクションは確立されておらず、この後ＳＳＬ通信のコネクション確立のフローに入る。
【００９４】
まず、ＰＣ１及びＰＣ２のうちのいずれか一方において、データ作成部２０９は対応可能なＳＳＬのバージョンを示すＳＳＬバージョンデータを生成し、データ送信部２１０はこれを他方に送信する（ステップＳ１）。図６では、ＰＣ１がＰＣ２に対してＳＳＬバージョンデータを送信したものとする。
【００９５】
そうすると、ＰＣ２において、データ受信部２０７がＳＳＬバージョンデータを受信し、データ解析部２０８はそのデータの種類を解析し、データ作成部２０９はＳＳＬバージョンデータに示されるバージョンのうちＰＣ２で対応可能なバージョンを１つ選択し、これを示すＳＳＬバージョン選択データを生成する。そして、データ送信部２１０は、これをＰＣ１に送信する（ステップＳ２）。
【００９６】
ＰＣ１において、ＰＣ２からのＳＳＬバージョン選択データがデータ受信部２０７によって受信されると、それに示されるバージョンのＳＳＬを、目的の通信のためのプロトコルとして採用することに決定する。ＰＣ２においても、同様に決定する。
【００９７】
次いでＰＣ２において、Ｘ．５０９ディジタル証明書をＰＣ１に送信する。このＸ．５０９証明書が周知の認証サーバ５によって署名されたものでなければ、そこに達するまでの証明書のチェーンも送信する。ＰＣ１においては認証サーバ５自身を証明するルート証明書を予め保持しており、そのなかにＰＣ２から受信したＸ．５０９証明書を署名したものがあるかどうかを検証する。また当該証明書が、その署名を行った認証サーバ５の発行した証明書失効リスト（ＣＲＬ）に記載がないかどうかを確認し、もし記載があればこの時点で通信を終了する（ステップＳ３）。
【００９８】
上記認証処理をクリアすれば、この後、ＰＣ２は、応答終了の旨をＰＣ１に対して通知する（ステップＳ４）。
【００９９】
ＰＣ２からの応答終了の通知を受けて、ＰＣ１は、ＳＳＬ通信で使用する共通鍵を生成するために、３８４ビットのランダムな値であるプリマスターキーを生成する。ＰＣ１のデータ作成部２０９は、プリマスターキーを、ＰＣ２より受け取ったＸ．５０９証明書に含まれるＰＣ２の公開鍵によって暗号化してＰＣ２に送信する（ステップＳ５）。
【０１００】
また、ＰＣ１はこのプリマスターキーを基に、実際にデータの暗号化に使用する共通鍵を生成して、通信用の暗号鍵をその共通鍵に切り替えるように制御を行う。また暗号鍵を切り替える旨の暗号切り替え通知をＰＣ２に送信する（ステップＳ６）。
【０１０１】
ＰＣ１からの暗号切り替え終了の通知を受けると（ステップＳ７）、ＰＣ２においても、暗号鍵の切り替えを行うべく、ＰＣ１に暗号切り替えの通知を送信する（ステップＳ８）。ＰＣ２のデータ受信部２０７は、ＰＣ１から受信した自らの公開鍵で暗号化されたプリマスターキーを、対応する自らの秘密鍵で復号する。データ解析部２０８がこれを解析することによってデータの種類がプリマスターキーであることを確認すると、データ操作部２０４は、受信したプリマスターキーを基に共通鍵を生成し、以後、ＰＣ１との間ではその共通鍵による暗号化通信が行われるように制御を行う。つまり、暗号鍵の切替えを行う。
【０１０２】
ＰＣ２は、上記暗号鍵の切り替えを終了すると、ＰＣ１に暗号切り替え終了の通知を送信する（ステップＳ９）。
【０１０３】
以上の処理によって、ＰＣ１とＰＣ２との間でＳＳＬ通信のコネクションが確立される。これにより、目的の通信を安全に行うことができる。
【０１０４】
なお、上述したコネクションの確立は、ＰＣ２のＸ．５０９証明書をＰＣ１が確認する場合を示したが、同時にＰＣ１のＸ．５０９証明書をＰＣ２が確認する場合もある。これをＳＳＬクライアント認証通信と呼ぶ。
【０１０５】
このＳＳＬクライアント認証通信をＰＣ同士、及び認証サーバとの間で行うためには、各々がＸ．５０９証明書を保持している必要があり、また証明書を検証するためにルート証明書も保持している必要がある。
【０１０６】
このようにして、ネットワーク１の各ノード２は、互いに認証されたノードとして安全に通信する動作を果たすことができる。
【０１０７】
（情報の共有と編集時の競合）
本実施形態に係るネットワーク１では、上述したように接続テーブルＴＬにより規定された「関連付けられた」ノード（端末装置２）間で相互認証し、ＳＳＬ通信を確立して、互いにデータの送受信を行う。
【０１０８】
各ノードで共有されたデータ（情報）は、こういった通信をベースにして、互いに送受信されることにより、任意のノードで利用することが可能となる。また互いに編集に必要な情報が、こういった通信をベースにして送受信されることにより、各ノードで互いに協調して編集動作を行うことが可能になる。
【０１０９】
なお以降の説明では、各ノードで共有され、協調編集され、保存される情報のことをすべてデータと呼称し、説明する。また、そのデータを加工したり、修正したりして変更する処理をすべて編集と呼称し、説明する。
【０１１０】
まず、一般的なネットワークにおけるデータの編集について簡単に述べる。
【０１１１】
ネットワーク１に仮に中央サーバとして機能するノード（ＰＣ１）があるとする。ＰＣ１には元のデータが保存されている。これを編集したいノード（ＰＣ２）は、ＰＣ１にアクセスして、編集を行う。
【０１１２】
しかし、同時にノード（ＰＣ３）も編集したいとアクセスした場合、競合が生じてしまう。これを避けるためには、通常は次のような対処が行われる。
【０１１３】
一つは、例えばＰＣ２が編集のためにアクセスしたときに、そのデータをコピーして一時的にローカルに保持し、それを用いて編集作業を行う方法である。後からアクセスしたＰＣ３も同様にコピーして編集することができる。
【０１１４】
但し、この場合ＰＣ２とＰＣ３の双方が編集結果をＰＣ１の元のデータに反映させようとすると、結果的に異なる二つのデータをどう反映させるかで整合がとれなくなってしまう。
【０１１５】
もう一つは、排他的にロックを掛ける方法である。例えばＰＣ２が編集のためにＰＣ１にアクセスしたときに、直接編集するか、データをコピーして編集するかに拘わらず、他のノードがそのデータにアクセスできないようにロックを掛ける。後からアクセスしたＰＣ３は編集を拒否され、複数のノードが編集作業を行うことはない。
【０１１６】
これにより、編集作業が競合することはなくなるが、多数のノードがアクセスするようなデータでは、いつアクセスしても編集できないといった不便が発生してくる。
【０１１７】
本実施形態に係る上記ネットワーク１での情報の管理方法においては、ネットワーク上の複数のノード間で情報共有しながら、編集に必要な各種情報をやり取りしながら、互いに協調して並行的に共有情報の編集加工ができ、最終的に統一された形で保存情報として反映することができるようにしている。
【０１１８】
情報の管理は、編集するデータを編集参加ノードで共有する情報共有処理、ロックやアンロックの処理を介して、競合せずにノード間で並行して編集する協調編集処理、編集を終えたデータを元のデータに反映する情報保存処理という全体的な流れを有する。そういった代表的なフローの例を以下に説明する。
【０１１９】
（情報共有から協調編集、情報保存に至る全体処理例）
図７は、情報共有処理から情報保存処理に至るまでの代表的な処理の流れを示すフローチャートである。図７を用いて、全体としての処理例の概要を説明する。
【０１２０】
まず、分散共有されたデータを利用したいノードは、元のデータファイルが保存されているノードにアクセスする（ステップＳ１１）。元のデータファイルが保存されているノードは、そのデータの現在のバージョンを取得しようとアクセスしたノードを、アクセス情報として記憶手段に保持している。アクセスしたノードは、まずこのアクセス情報を参照する（ステップＳ１２）。
【０１２１】
この参照により、アクセスしたノードは、参照したアクセス情報に既に記載されたノードがあるかどうかで、自らが最初にそのデータファイルにアクセスして取得しようとしているノードであるかどうかを判定することができる。すなわち、記載がなければ自らが最初にアクセスしたノードである。
【０１２２】
ステップＳ１３では、上記のように自らが最初にアクセスしたノードであるかどうかを判定する。最初のノードである場合（ステップＳ１３：ＹＥＳ）は、ステップＳ１４に進み、データを取得する処理を行う。最初のノードでない場合（ステップＳ１３：ＮＯ）は、ステップＳ１６に進み、既にそのデータを取得したノードの情報を取得する。
【０１２３】
ここで処理が分岐するのは、編集に参加するノードで各種情報を共有するためである。つまり、最初のノードは元のデータファイルを保存しているノードにアクセスする必要があるが、後から編集に参加するノードは、その時点での編集情報などを共有する必要があり、既に参加済みのノードにアクセスして共有データとともに取得するようにしている。具体的な処理例は後述する。
【０１２４】
ステップＳ１４では、元のデータファイルを保存しているノードに最初にアクセスしたノードは、そのデータファイルを編集のために共有するデータとして取得する。合わせて、元のデータファイルを保存しているノードのアクセス情報には、このノードがキャッシュ先として記載される。
【０１２５】
この時点では最初のノードなので編集情報などはまだない。編集が開始されれば、ノード情報部２０２、編集履歴部２０３に編集情報を保持する。
【０１２６】
ステップＳ１５では、取得したデータから編集用の展開データを作成し、一時情報記憶部２０４に、他の編集参加ノードからアクセス可能な状態で、すなわち共有データとして保持する。この後協調編集処理に移る。
【０１２７】
一方、ステップＳ１６では、元のデータファイルを保存しているノードに後からアクセスしたノードは、元のデータファイルは取得せず、参照したアクセス情報からキャッシュ先、すなわち既にデータファイルを取得したノードの情報を取得する。ここで元のデータファイルを保存しているノードのアクセス情報に、後からアクセスしたノードも、編集参加ノードとして追加記載されるようにしてもよい。
【０１２８】
ステップＳ１７では、取得したキャッシュ先のノードにアクセスして、公開されている共有データを取得する。取得したデータは一時情報記憶部２０４に保持する。また、キャッシュ先に既に編集情報があれば、それも合わせて取得してノード情報部２０２、編集履歴部２０３に保持する。この後協調編集処理に移る。
【０１２９】
以上のステップＳ１１からステップＳ１７の工程は、情報共有工程として機能する。
【０１３０】
ステップＳ１８は、協調編集処理である。編集参加ノードは、それぞれ共有データを保持し、編集参加ノードや編集履歴などの編集情報も共有している。互いにロック情報、アンロック情報などの制御情報をやり取りし、編集するエリアを調整し合うとともに、編集情報の更新をやり取りして、最新の情報を共有するようにする。こうして、競合による不整合を発生させずに協調して編集を行う。
【０１３１】
すなわち、ステップＳ１８は協調編集工程として機能する。詳細は、図１０を用いて後述する。
【０１３２】
ステップＳ１９及びステップＳ２０は、通常すべての編集参加ノードでの協調編集が終えてから行う情報保存、すなわち元データファイルへの置き換え更新を途中で実施するケースであり、障害などにより編集済みの共有データを元データに反映できなくなることを防止するなどの目的を持った処理である。
【０１３３】
ステップＳ１９では、例えば編集を終え、編集参加ノードから抜けるノードが、共有データや情報を削除する前に、ファイル保存の指示の有無を判定する。ファイル保存の指示がある場合（ステップＳ１９：ＹＥＳ）は、ステップＳ２０に進み、共有データの保存処理を行う。ファイル保存の指示がない場合（ステップＳ１９：ＮＯ）は、ステップＳ２１に進み、通常の編集終了の処理に向かう。
【０１３４】
ステップＳ２０では、保持する共有データを、保持するその時点で最新の編集情報に照らして、反映すべきデータファイルとし、元のデータファイルを保存されているノードに送信し、元データファイルと置き換え更新させる。
【０１３５】
またそれに合わせて、編集情報を更新して他の編集参加ノードにも送信し、元データファイルの更新に合わせて共有データを更新させる。その後ステップＳ２１に進み、共有データの削除に至る通常の編集終了の処理に向かう。
【０１３６】
ステップＳ２１では、編集終了かどうかを判定する。判定方法を含めて具体的な処理例は後述する。編集を終了する場合（ステップＳ２１：ＹＥＳ）は、ステップＳ２２に進み、最後の編集参加ノードであるかどうかを判定する。編集を終了しない場合（ステップＳ２１：ＮＯ）は、ステップＳ１８に戻り、協調編集処理を継続する。
【０１３７】
ステップＳ２２では、最後の編集参加ノードであるかどうかを判定する。判定方法は編集情報の編集参加しているノード情報を参照し、記載されているのが自ノードのみであれば最後のノードである。最後のノードである場合（ステップＳ２２：ＹＥＳ）は、ステップＳ２３に進み、共有データの保存処理を行う。最後のノードでない場合（ステップＳ２２：ＮＯ）は、ステップＳ２４に進み、共有データの削除へと向かう。
【０１３８】
ステップＳ２３では、保持する共有データを、保持する最新の編集情報に照らして、反映すべきデータファイルとし、元のデータファイルを保存されているノードに送信し、元データファイルと置き換え更新させる。
【０１３９】
ステップＳ２４では、不要になった保持する共有データを編集情報などとともに削除する。合わせて、元のデータファイルを保存しているノードにアクセスし、自ノードがアクセス情報に記載されている場合は、削除させる。これですべての処理は終了となる。
【０１４０】
以上のステップＳ１９からステップＳ２４の工程は、情報保存工程として機能する。
【０１４１】
（情報共有処理例）
図８及び図９は、情報共有処理の具体例を示す図である。図８及び図９を参照して、情報共有処理の具体例を説明する。
【０１４２】
図８（ａ）、（ｂ）、そして図９（ａ）、（ｂ）は、その順に協調編集のための情報共有処理の流れを示している。図８は編集に参加するノードが最初の１台目の場合を、図９は編集に参加するノードが２台目以降の場合を、それぞれ示している。
【０１４３】
各図において、ネットワーク１は、ノードとしてのＰＣ１からＰＣ７によって構成される。もちろんノードの数は任意である。ここでは、ＰＣ７が編集の対象となるデータファイル（Ｆｉｌｅ１）を保存しており、ＰＣ１が編集に参加しようとする最初の１台であり、ＰＣ５とＰＣ６がその後に編集参加するものとする。編集に参加するのは計３台であるが、もちろん編集参加ノード数も任意である。
【０１４４】
図８（ａ）において、ＰＣ１は編集の対象となるデータファイル（Ｆｉｌｅ１）を保存するＰＣ７にアクセスし、まずＦｉｌｅ１についてのアクセス情報を参照する。しかしこの時点では、ＰＣ１はＦｉｌｅ１の現在のバージョンにアクセスした最初のノードであり、アクセス情報にはまだ何の記載もない。従って、ＰＣ１は自らが最初の１台であることを判定する。
【０１４５】
ここまでの処理は、図７のステップＳ１１からステップＳ１３の工程に相当する。最初の１台であるかどうかを判定してデータの取得先を換える理由は、全体フローの説明で既に述べた通りである。
【０１４６】
図８（ｂ）において、編集に参加する最初の１台であるＰＣ１は、保存ノードであるＰＣ７から編集の対象となるデータファイル（Ｆｉｌｅ１）を取得する。ＰＣ１は取得したファイル形式のＦｉｌｅ１から編集用の展開データを作成し、一時情報記憶部２０４にキャッシュとして保持する。この編集用の共有データであるＦｉｌｅ１は、他の編集参加ノードからもアクセス可能なように公開する。
【０１４７】
またＰＣ１は、今後編集参加ノードで共有するために編集情報（編集参加ノードの情報、編集履歴情報など）を設定し、合わせて公開する。
【０１４８】
一方、保存ノードであるＰＣ７はＦｉｌｅ１を取得したＰＣ１に関する情報をキャッシュ先情報としてアクセス情報に記載する。この後にアクセスしてくる編集参加ノードはこのアクセス情報を参照して、キャッシュ先を判定するのである。
【０１４９】
ここまでの処理は、図７のステップＳ１４からステップＳ１５の工程に相当する。
【０１５０】
次に図９（ａ）において、ＰＣ５とＰＣ６が新たに編集に参加しようと、データファイル（Ｆｉｌｅ１）を保存するＰＣ７にアクセスする。ＰＣ１の場合と同様に、まずＦｉｌｅ１についてのアクセス情報を参照する。しかしＰＣ５とＰＣ６の順序に拘わらず、何れも自らが２台目以降であると判定し、参照したアクセス情報からキャッシュ先としてＰＣ１の情報を得ることになる。
【０１５１】
一方、保存ノードであるＰＣ７はＦｉｌｅ１を取得しようとアクセスしてきたＰＣ５、ＰＣ６に関する情報をアクセス情報に追加して記載してもよい。その場合は、キャッシュ先ノードが編集参加ノードから抜けた場合の次のキャッシュ先ノード候補情報となる。
【０１５２】
ここまでの処理は、図７のステップＳ１６の工程に相当する。２台目以降に編集参加したＰＣ５とＰＣ６は、キャッシュ先情報を取得しただけで、保存ノードであるＰＣ７からはＦｉｌｅ１の取得は行わない。
【０１５３】
図９（ｂ）においては、２台目以降に編集参加したＰＣ５とＰＣ６は、取得したキャッシュ先情報に基づいて、ＰＣ１にアクセスし、公開されている共有データＦｉｌｅ１を取得する。ＰＣ５とＰＣ６は、取得したＦｉｌｅ１をキャッシュコピーとして、一時情報記憶部２０４に保持する。
【０１５４】
一方、ＰＣ１はアクセスしてきたＰＣ５とＰＣ６を新たな編集参加ノードと認知して、編集情報（編集参加ノードの情報）を更新する。更新した編集情報は、Ｆｉｌｅ１と合わせて提供し、常に最新の編集情報が共有されるようにする。もちろん、ＰＣ１以外の参加ノードで更新が発生した場合も同様である。また、この時点でＰＣ１によりＦｉｌｅ１の編集が既に行われていれば、その編集履歴情報も含めて更新した編集情報を共有する。
【０１５５】
ここまでの処理は、図７のステップＳ１７の工程に相当する。これらの情報共有処理により、編集参加ノード（ここでは、ＰＣ１、ＰＣ５、ＰＣ６）は、共有データＦｉｌｅ１と最新の編集情報を互いに公開した状態で共有することになる。この状態で次の協調編集処理は行われる。
【０１５６】
（協調編集処理例）
図１０は、協調編集処理の流れの例を示すシーケンス図である。図１０を参照して、協調編集処理の流れを説明する。
【０１５７】
図１０においては、図左の編集ノードと図右のロックノードとの２種類のノード（編集ノードとロックノード）での処理の流れを並列的に示している。編集ノードとロックノードの関係は、単にノード間の処理についての相対的な関係を示し、固定的なものではない。
【０１５８】
編集ノードとは、編集参加ノードのうちの編集を開始した任意のノードである。その編集ノードから見れば、他の編集参加ノードはすべてロックノードである。もちろん、他のノードもそのノード自身から見れば、自らは編集ノードであって、他のノードはすべてロックノードであるように見える。すなわち、例えばＰＣ１、ＰＣ５、ＰＣ６からなる編集参加ノードにおいて、ＰＣ１を編集ノードとすれば、ＰＣ５とＰＣ６はロックノードであり、ＰＣ５を編集ノードとすれば、ＰＣ１とＰＣ６はロックノードである。
【０１５９】
図１０の上部、すなわち、編集ノードでのステップＳ３１からステップＳ３５、及びロックノードでのステップＳ４１からステップＳ４３は、編集参加ノード間で各ノードがそれぞれ編集する共有データの一部に対して、互いにロックを掛け合う相互情報ロック処理を行う。すなわち、相互情報ロック工程として機能する。
【０１６０】
また図１０の下部、すなわち、編集ノードでのステップＳ３６からステップＳ３９、及びロックノードでのステップＳ４４からステップＳ４８は、編集参加ノード間で各ノードがそれぞれロックを掛け合った編集する共有データの一部に対して、互いにロックを外し、それぞれ共有データの一部を更新し合う相互情報アンロック処理を行う。すなわち、相互情報アンロック工程として機能する。
【０１６１】
ここで、協調編集処理（相互情報ロック処理と相互情報アンロック処理）において各ノードに保持され、協調編集のために使用される情報について述べておく。
【０１６２】
図１１は、各ノードに保持され、協調編集のために使用される情報を示す図表である。
図１１を用いて、各種情報を説明する。
【０１６３】
図１１において、各編集参加ノードは、それぞれ編集の対象である共有データと編集状態を制御する制御情報や編集に利用する編集情報を保持している。
【０１６４】
共有データは、既に述べた編集対象のデータそのものであり、場合によってはまだ編集履歴に反映されていない各編集参加ノードで編集中の差分データをも含む。
【０１６５】
制御情報は、各編集参加ノードでの共有データに対する現在のロック状態や予約ロッックの状況など編集を制約する情報を含む。
【０１６６】
共有データと制御情報は、各編集参加ノードの一時情報記憶部２０４に保持される。
【０１６７】
編集情報は、各編集参加ノードで編集した結果を統一して整合的に反映させるための情報であり、編集に参加している各ノードの情報や各ノードでの編集履歴情報を含む。
【０１６８】
編集に参加している各ノードの情報は、すべての編集参加ノードで常に最新情報を共有するために用いられ、ノード情報部２０２に保持される。
【０１６９】
各ノードでの編集履歴情報は、自ノード及び他ノードで編集を終えた、その編集内容を含んだ履歴情報であり、すなわち協調編集によるすべての変更内容を含んでおり、その最新結果が共有されるものである。
【０１７０】
この編集履歴情報と共有データをつきあわせれば、その時点での最新編集結果を反映し、保存ノードの保存する元データに置き換えて更新することができるようになっている。編集履歴情報は各編集参加ノードの編集履歴部２０３に保持される。
【０１７１】
以下に協調編集処理例の流れを相互情報ロック処理と相互情報案ロック処理とに分けて説明する。
【０１７２】
＜情報ロック処理＞
図１２は、相互情報ロック処理の具体例を示す図である。前述の図１０と図１２とを用いて、相互情報ロック処理例の流れを説明する。
【０１７３】
図１２においては、情報共有処理例で参照した図８、図９と同様のＰＣ１からＰＣ７によるネットワーク構成であり、編集参加ノードはＰＣ１、ＰＣ５、ＰＣ６であるとする。またここでは、ＰＣ５が編集開始する状況を想定して説明する。
【０１７４】
図１０において、編集ノードは、まずステップＳ３１で、編集を開始するに当たって、他ノードとの競合を防止するためのロックエリアを検出する。
【０１７５】
編集開始のタイミングの設定方法は、任意である。ユーザの指示によってロックエリアの検出が開始されてもよいし、編集に用いる何らかのキーをトリガーとしてロックエリア検出が開始されてもよい。
【０１７６】
ロックエリアの検出方法も任意である。但し、ロックエリアは当面編集するのに必要な範囲に抑えた方がよい。編集する共有データの一部分のみをロックエリアとすることによって、他ノードによる編集に対する制約を最小限に抑えることができる。
【０１７７】
ロックエリアの検出法の例としては、例えば図１２に示したように、編集ノードＰＣ５において、共有データＦｉｌｅ１のカーソルが置かれた位置から一定範囲内のエリアとしてもよい。また現在編集のために表示中のウィンドウエリアをロックエリアとしてもよい。あるいはシステムがロックを必要とするエリアをロックエリアとしてもよい。
【０１７８】
ステップＳ３１では、検出したロックエリアを基にロック情報を作成する。自らが他のノードにロックエリアを指定し、ロックを掛けさせるために送信する情報であり、一時情報記憶部２０４に制御情報として保持する。
【０１７９】
ステップＳ３３では、編集情報を参照し、編集参加ノード情報に基づき、ロック情報の送信先を設定する。送信先は他の編集参加ノードすべてである。図１２の場合は、ＰＣ５以外の編集参加ノード、すなわちＰＣ１とＰＣ６である。
【０１８０】
ステップＳ３４では、作成したロック情報を設定した送信先に送信する。これでロック情報を受信した他のノード（ロックノード）は指定したロックエリアにロックを掛けることになる。図１２では、ＰＣ５からＰＣ１とＰＣ６にロック情報が送信されている。
【０１８１】
上記の処理において、ロックエリアを検出した段階で、制御情報を参照すると、他のノードから既に受信しているロック情報とロックエリアが重なっている場合があり得る。つまり、他のノードが編集中で既にロックが掛かっており、編集したいができないという場合である。この場合は、必要に応じて予約ロック情報として作成し、同様に送信してもよい。同一エリアに対する複数の予約ロックは発信順に実行待ちとなる。
【０１８２】
送信されたロック情報を受信したノード（ロックノード）の方の処理について述べる。
【０１８３】
ステップＳ４１で、ロックノードはロック情報を受信する。受信したロック情報は制御情報として、一時情報記憶部２０４に保持する。図１２では、ＰＣ１とＰＣ６がＰＣ５からのロック情報を受信している。
【０１８４】
ステップＳ４２では、受信したロック情報からロックエリアを抽出する。ステップＳ４３では、抽出したロックエリアにロックを掛ける。図１２では、ＰＣ５における共有データＦｉｌｅ１での編集領域、すなわちロックエリアと対応するＰＣ１とＰＣ６それぞれの共有データＦｉｌｅ１での領域にロックが掛かっている。
【０１８５】
また、ロック情報ではなく。予約ロック情報を受信した場合は、一旦制御情報として、一時情報記憶部２０４に保持し、実行待ちとなる。同一エリアに対する複数の予約ロックは発信順に実行待ちとなる。
【０１８６】
これでＰＣ５での編集と競合することはなくなる。編集ノードであるＰＣ５は、ステップＳ３５において、編集作業を行う。図１２でＰＣ５の差分情報というのは、編集中でまだ編集履歴に反映されていない差分データである。
【０１８７】
以上で相互情報ロック工程は終了である。実際は、編集ノードはＰＣ５だけではなく、ＰＣ１やＰＣ６も編集ノードであり、ロックノードでもあるので、互いにロックを掛け合うことになる。次に述べる相互情報アンロック処理も同様であり、相互にロックを外して編集結果を反映し合うことになる。またすべての協調編集処理が終了するまで、すなわち編集中のノードがなくなるまで、ロックとアンロックの処理は何度も繰り返されることになるであろう。
【０１８８】
＜情報アンロック処理＞
図１３は、相互情報アンロック処理の具体例を示す図である。前述の図１０と図１３とを用いて、相互情報アンロック処理例の流れを説明する。
【０１８９】
図１３においては、相互情報ロック処理例で参照した図１２と同様のＰＣ１からＰＣ７によるネットワーク構成であり、編集参加ノードはＰＣ１、ＰＣ５、ＰＣ６であるとする。またここでは、ＰＣ５が自らロック情報送信したエリアの編集を終了し、ロックを外す状況を想定して説明する。
【０１９０】
図１０において、編集ノードＰＣ５は、ステップＳ３５での編集処理を終えてロック解除に入るものとする。
【０１９１】
ロックしたエリアの編集を終えてロック解除に入るタイミングは、任意に設定すればよい。図１３に示したように、例えばポップアップウインドウなどでユーザによる編集終了指示を受けてもよいし、また編集中の入力ウインドウが非アクティブになった状態でそのエリアの編集は終了としてもよいし、あるいは、入力を開始してから一定時間が経過すると終了するように設定してもよい。
【０１９２】
また、ロックしたエリアに対して、実行待ちの予約ロック情報が所定の件数以上ある場合には、ロック解除のタイミングを早めるなどの処置をとることが望ましい。例えば入力を開始してから一定時間が経過すると終了するように設定しているのならば、その終了時間を早めるなどの調整を行ってもよい。
【０１９３】
また、ロック解除に関しては、例えば管理者権限による強制割り込みでのロック解除や予約ロック情報の実行待ち順序の変更などが可能な処置をとることもできる。
【０１９４】
ステップＳ３６では、自らが編集していたエリア、すなわちロックエリアを検出する。自ら保持している制御情報を参照すればよい。
【０１９５】
ステップＳ３７では、検出したロックエリアに対するアンロック情報を作成する。自らが他のノードに送信したロック情報によるロックを解除し、ロックを外させるために送信する情報であり、一時情報記憶部２０４に制御情報として保持する。
【０１９６】
また編集終了に当たり、編集履歴情報を更新する。編集中であった差分情報は、すべて編集履歴情報に移される。
【０１９７】
ステップＳ３８では、編集情報を参照し、編集参加ノード情報に基づき、アンロック情報の送信先を設定する。ロック情報送信の場合と同様、送信先は他の編集参加ノードすべてである。図１３の場合は、ＰＣ５以外の編集参加ノード、すなわちＰＣ１とＰＣ６である。
【０１９８】
ステップＳ３９では、作成したアンロック情報を設定した送信先に送信する。これでアンロック情報を受信した他のノード（ロックノード）はロックエリアのロックを外すことになる。図１２では、ＰＣ５からＰＣ１とＰＣ６にアンロック情報が送信されている。
【０１９９】
またアンロック情報とともに、更新された編集履歴情報も編集情報として送信する。あるいは、更新された編集履歴情報の代わりに、そのベースとなる差分データであってもよい、またそれを反映した共有データそのものであってもよい。
【０２００】
送信されたアンロック情報を受信したノード（ロックノード）の方の処理について述べる。
【０２０１】
ステップＳ４４で、ロックノードはアンロック情報を受信する。受信したアンロック情報は制御情報として、一時情報記憶部２０４に保持する。図１３では、ＰＣ１とＰＣ６がＰＣ５からのアンロック情報を受信している。
【０２０２】
またロックノードは、編集ノードＰＣ５から更新された編集履歴情報、あるいは共有データ、もしくはそれとの差分データを受信する。これにより、すべての編集参加ノードで、編集ノードＰＣ５による編集内容が反映されることになる。図１３では、ＰＣ１とＰＣ６がＰＣ５からの更新された編集履歴情報を受信している。
【０２０３】
ステップＳ４５では、受信したアンロック情報からアンロックエリアを抽出する。対応するロック情報から抽出してもよい。ステップＳ４６では、抽出したアンロックエリアのロックを外す。図１３では、ＰＣ５における共有データＦｉｌｅ１での編集終了領域、すなわちアンロックエリアと対応するＰＣ１とＰＣ６それぞれの共有データＦｉｌｅ１での領域に掛かっているロックが外される。
【０２０４】
また、アンロック情報に対応するロック情報に対して、実行待ちの予約ロック情報がある場合は、以下の工程を終えた後、実行待ちの予約ロック情報を新たにロック情報として、既に述べた相互情報ロック処理が実行される。すなわち、予約ロック情報を送信したノード以外は再度ロックを掛けることになる。同一エリアに対する複数の予約ロックが実行待ちの場合は、発信順に実行される。
【０２０５】
次のステップＳ４７及びステップＳ４８では、編集ノードＰＣ５での編集内容を各ノードで反映し、共有する。まずステップＳ４７で編集情報を抽出する。受信した編集情報から編集履歴の更新に必要な情報を抽出する。ステップＳ４７で編集履歴を更新する。更新された編集履歴を受信したのであれば、そのまま保持する編集履歴を置き換え更新してもよい。
【０２０６】
編集ノードＰＣ５での編集内容を各ノードで反映し、共有する形態は、他にも様々考えられ、任意の形態を採ればよい。例えば既に述べたように、共有データそのものを更新して共有するようにしてもよいし、あるいは差分データとして蓄積し、保持するようにしてもよい。また、差分データを編集履歴の中に移し、編集履歴情報を更新していく形態でもよい。どのような形態であれ、それらの情報を利用して適時最新の共有データを生成し、例えば表示するなどの利用が可能である。
【０２０７】
（情報保存処理）
図１４は、情報保存処理の具体例を示す図である。図１４を参照して、情報保存処理の具体例を説明する。
【０２０８】
図１４においては、情報共有処理例で参照した図８、図９と同様のＰＣ１からＰＣ７によるネットワーク構成であり、元データファイル（Ｆｉｌｅ１）の保存ノードはＰＣ７、編集参加ノードはＰＣ１、ＰＣ５、ＰＣ６であるとする。但し、編集に参加しているノードのうちＰＣ５とＰＣ６が、既に編集を終えて編集参加ノードから抜けており、最後の１台であるＰＣ１がまさに編集を終えようとしている状況を想定して説明する。
【０２０９】
途中で編集を終了し抜けていくノードの中で、ファイル保存の指示により最後の１台でなくても共有データを保存ノードに送信し、置き換え更新させる場合があってもよいことは、図７による情報保存処理の説明の中で既に述べた。編集参加ノードの中のどのノードがすべての編集参加ノードによる編集内容を代表して保存ノードに送信するかは任意である。どの編集参加ノードも、その時点では最新の編集内容を反映したデータを共有している。最後の一台であればそれ以上最新がないという意味で、選択されたものである。
【０２１０】
図１４において、編集を終了する最後の１台であるＰＣ１は、保存ノードであるＰＣ７に編集の結果を反映するために更新された共有データ（Ｆｉｌｅ１’）を送信する。これは協調編集処理により更新された編集情報、差分データ、共有データの形態に応じて、最新の共有データ（Ｆｉｌｅ１’）を生成できることは既に述べたとおりである。
【０２１１】
図１４においては、Ｆｉｌｅ１の編集履歴が送信されている。この編集履歴の中には、協調編集処理の間に各ノードからの編集内容として蓄積された差分情報が含まれている。図では保存ノードＰＣ７がデータファイル（Ｆｉｌｅ１’）を生成するような図としているが、もちろん上述のように、ＰＣ１の方で共有データ（Ｆｉｌｅ１’）を生成し、送信してもよい。
【０２１２】
保存ノードＰＣ７は取得した共有データＦｉｌｅ１’からファイル形式の保存データ（Ｆｉｌｅ１’）を作成し、元のデータファイル（Ｆｉｌｅ１）と置き換え、データ保持部２０１に更新、保存する。もちろんこのＦｉｌｅ１’は、新たに編集を望むノードがあれば、同様に新たな編集参加ノードからアクセス可能なように再び公開される。
【０２１３】
保存ノードＰＣ７の元のデータファイルが更新された後は、最後の一台であるＰＣ１は、保持している共有データ、編集情報などを廃棄する。また、保存ノードＰＣ７のアクセス情報からキャッシュ先情報としてのＰＣ１ノードの記載を削除させて、編集参加ノードから脱退する。
【０２１４】
上記はノードＰＣ１が最後の一台である場合を説明したが、ＰＣ１が最後の一台でない場合も、情報保存処理、すなわち保存ノードであるＰＣ７に元のデータファイルを更新させる処理を行わない点を除けば、同様の処理で編集の参加を終了し、脱退する。
【０２１５】
終了するに当たっては、他の編集参加ノードにノード情報を送り、編集参加ノードから抜けることを通知する、すなわち各ノードの保持するノード情報を更新させる。合わせて保存ノードＰＣ７のアクセス情報からキャッシュ先情報としてのＰＣ１ノードの記載を削除させて、終了する。
【０２１６】
保存ノードＰＣ７のアクセス情報がアクセスしたノードすべてを順に記載している場合は、キャッシュ先のＰＣ１ノードが削除されることで、次のノードがキャッシュ先と見なされることになる。
【０２１７】
保存ノードＰＣ７のアクセス情報が最初にアクセスしたノードのみを記載している場合は、保存ノードＰＣ７はＰＣ１から編集参加ノード情報を受け取り、それに基づいてアクセス情報を更新し、次の編集参加ノードがキャッシュ先情報として記載される。
【０２１８】
（情報を分散保存している場合の処理例）
以上の処理例では、元のデータファイル（Ｆｉｌｅ１）を保存しているノードが１台という場合を例にしていたが、元のデータファイル（Ｆｉｌｅ１）が複数のノードで分散保存されている場合にも、同様に共有データを協調編集処理することができる。
【０２１９】
異なるのは、情報共有処理で、最初の編集参加ノードは複数の保存ノードにアクセスして、データファイル（Ｆｉｌｅ１）を生成すること、及び情報保存処理で、共有データＦｉｌｅ１’を分割されたデータファイル（Ｆｉｌｅ１’）に変えて、複数の保存ノードに送信することである。
【０２２０】
図１５は情報を分散保存している場合の情報共有処理の具体例を示す図である。図１５を用いて、分散保存している場合の情報共有処理の具体例を説明する。
【０２２１】
図１５において、ネットワーク１は、ＰＣ１からＰＣ７のノードによって構成され、ここではＰＣ３、ＰＣ４、ＰＣ７が、それぞれ３分割された元のデータファイル（Ｆｉｌｅ１−１から１−３）を保存しており、ＰＣ１が編集に参加しようとする最初の１台であるものとする。
【０２２２】
ＰＣ１は３台の保存ノードにアクセスし、元のデータファイル（Ｆｉｌｅ１−１から１−３）を取得する。３台の保存ノードには、それぞれキャッシュ先としてＰＣ１がアクセス情報に記載される。
【０２２３】
ＰＣ１で３分割された元のデータファイル（Ｆｉｌｅ１−１から１−３）から、図１５に示すように共有データ（Ｆｉｌｅ１）を生成してしまえば、後は保存データの台数は特に関係なく、協調編集が行える。後から編集に参加するノードは、それぞれ保存ノードのアクセス情報を参照し、ＰＣ１の共有データ（Ｆｉｌｅ１）を取得すればよい。
【０２２４】
情報保存処理についても同様である。ＰＣ１が最後の編集参加ノードであるとすると、情報共有処理のときとは逆に、編集済みの共有データ（Ｆｉｌｅ１’）を３分割された編集済みのデータファイル（Ｆｉｌｅ１’−１から１’−３）に変えて、３台の保存ノード（ＰＣ３、ＰＣ４、ＰＣ７）に分散保存させればよい。
【０２２５】
このように本実施形態によれば、情報を複数のノード間で共有し、編集するネットワークシステムにおいて、複数の編集参加ノードが、編集に必要な情報を互いに提供し、最新の状態で共有する。また、それぞれのノードが共有情報の一部を編集するために、互いに他のノードにロックを掛け合い、それぞれの編集する部分を互いに競合させることなく、並行的に編集動作を行う。そして、編集参加ノードの少なくとも一つが代表して、編集済みの共有情報を元の情報を保存するノードに送信し、更新保存させる。
【０２２６】
これにより、多数のノード間で情報共有しながら、互いに競合することなく、必要以上にアクセスを制限されることもなく、協調して並行的に共有情報の編集加工ができ、最終的に統一された形で保存情報として反映されることが可能な情報の管理方法、及びノードとしての情報処理装置を提供することができる。
【０２２７】
なお本発明の範囲は、上記実施形態に限定されるものではない。本発明の趣旨を逸脱しない限り、それらの変更された形態もその範囲に含むものである。
【図面の簡単な説明】
【０２２８】
【図１】ネットワーク１の全体構成例を示す図である。
【図２】ネットワーク１を構成するノード（端末装置）２のハードウェア構成例を示す図である。
【図３】ネットワーク１を構成する各ノード２の接続形態、すなわちノードの論理的なトポロジーの例を示す図である。
【図４】図３のように関連付けられたノード２の接続テーブルＴＬ例を示す図である。
【図５】ノード（端末装置）２の機能構成例を示すブロック図（ａ）、及び処理制御部２０５の機能の内部構成を示す図（ｂ）である。
【図６】ＳＳＬ通信のコネクションを確立する際の処理例を説明するためのシーケンス図である。
【図７】情報共有処理から情報保存処理に至るまでの代表的な処理の流れを示すフローチャートである。
【図８】情報共有処理の具体例として、最初に編集参加したＰＣ１がＰＣ７のアクセス情報を参照している様子（ａ）、及びＰＣ１がＰＣ７からデータを取得している様子（ｂ）を示す図である。
【図９】情報共有処理の具体例として、後から編集参加したＰＣ５とＰＣ６がＰＣ７のアクセス情報を参照している様子（ａ）、及びＰＣ５とＰＣ６がＰＣ１から共有データを取得している様子（ｂ）を示す図である。
【図１０】協調編集処理の流れの例を示すシーケンス図である。
【図１１】各ノードに保持され、協調編集のために使用される情報を示す図表である。
【図１２】相互情報ロック処理の具体例を示す図である。
【図１３】相互情報アンロック処理の具体例を示す図である。
【図１４】情報保存処理の具体例を示す図である。
【図１５】情報を分散保存している場合の情報共有処理の具体例を示す図である。
【符号の説明】
【０２２９】
１  ネットワーク
２  端末装置（ノード）
３  スイッチングハブ
４  ルータ
５  認証サーバ
２０１  データ保持部
２０２  ノード情報部
２０３  編集履歴部
２０４  一時情報記憶部
２０５  処理制御部
２０６  その他操作部
２０７  データ受信部
２０８  データ解析部
２０９  データ作成部
２１０  データ送信部
２１１  商法共有処理部
２１２  協調編集処理部
２１２ａ  情報ロック処理部
２１２ｂ  情報アンロック処理部
２１３  情報保存処理部
ＴＬ  接続テーブル
【図１】
2008123088.tif 000003
【図２】
2008123088.tif 000004
【図３】
2008123088.tif 000005
【図４】
2008123088.tif 000006
【図５】
2008123088.tif 000007
【図６】
2008123088.tif 000008
【図７】
2008123088.tif 000009
【図８】
2008123088.tif 000010
【図９】
2008123088.tif 000011
【図１０】
2008123088.tif 000012
【図１１】
2008123088.tif 000013
【図１２】
2008123088.tif 000014
【図１３】
2008123088.tif 000015
【図１４】
2008123088.tif 000016
【図１５】
2008123088.tif 000017