(57)【要約】【課題】木構造を構成する各ノードの公開状態を容易に把握できる情報共有方法、装置、およびプログラムを提供する。【解決手段】いずれかのノードの公開状態を変更する公開状態操作要求があると、実行可否判定手段１１は、記憶装置４上にある各ノードの公開状態を参照し、ホームルートノードから各リーフノードに至る全てのパスにおいて公開状態の変化回数が最大で１回までという条件を満たして、公開状態操作要求を実行することが可能か否か判定する。実行可否判定手段１１において実行可能と判定された公開状態操作要求を、公開状態操作手段１３がその条件を満たすように実行する。また、木構造を変更する木構造操作要求があると、木構造操作部１２が公開状態を参照し、その条件を満たすように木構造操作要求を実行する。【選択図】      図８
2004234238.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つの単位ユーザの所有する情報を、ホームルートノードから少なくとも１つのリーフノードまで複数のノードが連なる単位ユーザ毎の木構造で、前記ノードに対応付けて記憶装置上に保持し、前記各ノードの公開状態を管理する情報共有方法であって、
いずれかのノードの公開状態を変更する公開状態操作要求があると、コンピュータが前記記憶装置上にある前記各ノードの公開状態を参照し、前記ホームルートノードから前記各リーフノードに至る全てのパスにおいて公開状態の変化回数が最大で１回までという条件を満たして該公開状態操作要求を実行することが可能か否か判定する第１のステップと、
前記第１のステップにおいて実行可能と判定された公開状態操作要求を前記コンピュータが前記条件を満たすように実行する第２のステップと、
前記木構造を変更する木構造操作要求があると、前記コンピュータが前記公開状態を参照し、前記条件を満たすように該木構造操作要求を実行する第３のステップとを有する情報共有方法。
【請求項２】
前記第１のステップにおいて、前記公開状態操作要求が公開状態の設定を要求するものである場合、操作対象ノードの公開状態がホームルートノードと同じか、または前記木構造において公開状態の変更起点となっていれば、前記公開状態操作要求を実行可能と判定し、前記操作対象ノードの公開状態が前記ホームルートノードと異なり、かつ前記変更起点でなければ、前記公開状態操作要求を実行不可と判定する、請求項１記載の情報共有方法。
【請求項３】
前記第１のステップにおいて、前記公開状態操作要求が公開状態の解除を要求するものである場合、操作対象ノードが前記木構造において公開状態の変更起点になっていれば、前記公開状態操作要求を実行可能と判定し、前記操作対象ノードが前記変更起点でなければ、前記公開状態操作要求を実行不可と判定する、請求項１記載の情報共有方法。
【請求項４】
前記第１のステップにおいて、前記公開状態操作要求の操作対象ノードがホームルートノードであれば実行不可と判定する、請求項１記載の情報共有方法。
【請求項５】
前記第２のステップにおいて、前記公開状態操作要求が公開状態の設定を要求するものである場合、操作対象ノードの公開状態を前記公開状態操作要求により要求されたように設定し、前記操作対象ノードをルートとする最大部分木に含まれる全てのノードの公開状態を前記操作対象ノードと一致させる、請求項１記載の情報共有方法。
【請求項６】
前記第２のステップにおいて、前記公開状態操作要求が公開情報の解除を要求するものである場合、操作対象ノードの公開を解除し、前記操作対象ノードをルートとする最大部分木に含まれる全てのノードの公開状態を前記操作対象ノードと一致させる、請求項１記載の情報共有方法。
【請求項７】
前記第３のステップにおいて、前記木構造操作要求が新規ノードの作成を要求するものである場合、要求された位置に前記新規ノードを作成する、請求項１記載の情報共有方法。
【請求項８】
前記新規ノードを作成した後、さらに、該新規ノードの公開状態を親ノードと一致させる、請求項７記載の情報共有方法。
【請求項９】
前記第３のステップにおいて、前記木構造操作要求が少なくとも１つのノードからなるノード群の複製を要求するものである場合、要求された位置に前記ノード群の複製を作成する、請求項１記載の情報共有方法。
【請求項１０】
前記ノード群の複製を作成した後、さらに、該ノード群の複製を構成する前記ノードの公開状態を、該ノード群のルートノードの親ノードと一致させる、請求項９記載の情報共有方法。
【請求項１１】
前記第３のステップにおいて、前記木構造操作要求が少なくとも１つのノードからなるノード群の移動を要求するものである場合、要求された移動先ノードの下に前記ノード群を移動させる、請求項１記載の情報共有方法。
【請求項１２】
前記ノード群を移動した後、さらに、前記移動先ノードの公開状態がホームルートノードと異なるか否かにより異なる処理を行う、請求項１１記載の情報共有方法。
【請求項１３】
前記ノード群を移動した後、さらに、前記ノード群に含まれる前記各ノードの公開状態によって異なる処理を行う、請求項１１または１２に記載の情報共有方法。
【請求項１４】
前記処理は、前記ノード群に含まれる前記各ノードの公開状態を維持する第１の処理か、該各ノードの公開状態を前記移動先ノードと一致させる第２の処理か、前記第１の処理または前記第２の処理のいずれを行うかをユーザに問い合わせ、前記ユーザにより選択された方を行う第３の処理かのいずれかである、請求項１２または１３に記載の情報共有方法。
【請求項１５】
前記木構造内の前記各ノードは、ホームルートノードと同じ公開状態の未変更ノードと、前記ホームルートノードと異なりかつ親ノードと異なる公開状態の変更起点ノードと、前記ホームルートノードと異なりかつ親ノードと同じ公開状態の変更継続ノードとに分類され、その分類が前記各ノードの変更状態種別として前記公開状態の情報に付加されて管理されており、
前記コンピュータが前記公開状態を参照する際、前記変更状態種別を参照する、請求項１記載の情報共有方法。
【請求項１６】
前記木構造内には、他のノードへのショートカットとなるノードが含まれる、請求項１記載の情報共有方法。
【請求項１７】
少なくとも１つの単位ユーザの所有する情報を、ホームルートノードから少なくとも１つのリーフノードまで複数のノードが連なる単位ユーザ毎の木構造で、前記ノードに対応付けて記憶装置上に保持し、前記各ノードの公開状態を管理する情報共有装置であって、
いずれかのノードの公開状態を変更する公開状態操作要求があると、前記記憶装置上にある前記各ノードの公開状態を参照し、前記ホームルートノードから前記各リーフノードに至る全てのパスにおいて公開状態の変化回数が最大で１回までという条件を満たして、該公開状態操作要求を実行することが可能か否か判定する実行可否判定手段と、
前記実行可否判定手段において実行可能と判定された公開状態操作要求を前記条件を満たすように実行する公開状態操作手段と、
前記木構造を変更する木構造操作要求があると、前記公開状態を参照し、前記条件を満たすように該木構造操作要求を実行する木構造操作手段とを有する情報共有装置。
【請求項１８】
前記実行可否判定手段は、前記公開状態操作要求が公開状態の設定を要求するものである場合、操作対象ノードの公開状態がホームルートノードと同じか、または前記木構造において公開状態の変更起点となっていれば、前記公開状態操作要求を実行可能と判定し、前記操作対象ノードの公開状態が前記ホームルートノードと異なり、かつ前記変更起点でなければ、前記公開状態操作要求を実行不可と判定する、請求項１７記載の情報共有装置。
【請求項１９】
前記実行可否判定手段は、前記公開状態操作要求が公開状態の解除を要求するものである場合、操作対象ノードが前記木構造において公開状態の変更起点になっていれば、前記公開状態操作要求を実行可能と判定し、前記操作対象ノードが前記変更起点でなければ、前記公開状態操作要求を実行不可と判定する、請求項１７記載の情報共有装置。
【請求項２０】
前記実行可否判定手段は、前記公開状態操作要求の操作対象ノードがホームルートノードであれば実行不可と判定する、請求項１７記載の情報共有装置。
【請求項２１】
前記公開状態操作手段から呼び出されると、操作対象ノードをルートとする最大部分木に含まれる全てのノードの公開状態を前記操作対象ノードと一致させる公開状態設定対応手段をさらに有し、
前記公開状態操作手段は、前記公開状態操作要求が公開状態の設定を要求するものである場合、操作対象ノードの公開状態を前記公開状態操作要求により要求されたように設定し、前記公開状態設定対応手段を呼び出す、請求項１７記載の情報共有装置。
【請求項２２】
前記公開状態操作手段から呼び出されると、操作対象ノードをルートとする最大部分木に含まれる全てのノードの公開状態を前記操作対象ノードと一致させる公開状態解除対応手段をさらに有し、
前記公開状態操作手段は、前記公開状態操作要求が公開情報の解除を要求するものである場合、操作対象ノードの公開を解除し、前記公開状態解除対応手段を呼び出す、請求項１７記載の情報共有装置。
【請求項２３】
前記木構造操作手段は、前記木構造操作要求が新規ノードの作成を要求するものである場合、要求された位置に前記新規ノードを作成する、請求項１７記載の情報共有装置。
【請求項２４】
前記木構造操作手段から呼び出されると、前記新規ノードの公開状態を親ノードと一致させる新規作成対応手段をさらに有し、
前記木構造操作手段は、前記新規ノードを作成した後、前記新規作成対応手段を呼び出す、請求項２３記載の情報共有装置。
【請求項２５】
前記木構造操作手段は、前記木構造操作要求が少なくとも１つのノードからなるノード群の複製を要求するものである場合、要求された位置に前記ノード群の複製を作成する、請求項１７記載の情報共有装置。
【請求項２６】
前記木構造操作手段から呼び出されると、前記ノード群の複製を構成する前記ノードの公開状態を、該ノード群のルートノードの親ノードと一致させる複製対応手段をさらに有し、
前記木構造操作手段は、前記ノード群の複製を作成した後、前記複製対応手段を呼び出す、請求項２５記載の情報共有装置。
【請求項２７】
前記木構造操作手段は、前記木構造操作要求が少なくとも１つのノードからなるノード群の移動を要求するものである場合、要求された移動先ノードの下に前記ノード群を移動させる、請求項１７記載の情報共有装置。
【請求項２８】
前記木構造操作手段から呼び出されると、前記移動先ノードの公開状態がホームルートノードと異なるか否かにより異なる処理を行う移動対応手段をさらに有し、
前記木構造操作手段は、前記ノード群を移動した後、前記移動対応手段を呼び出す、請求項２７記載の情報共有装置。
【請求項２９】
前記移動対応手段は、さらに前記ノード群に含まれる前記各ノードの公開状態によって異なる処理を行う、請求項２８に記載の情報共有装置。
【請求項３０】
前記移動対応手段が行う前記処理は、前記ノード群に含まれる前記各ノードの公開状態を維持する第１の処理か、該各ノードの公開状態を前記移動先ノードと一致させる第２の処理か、前記第１の処理または前記第２の処理のいずれを行うかをユーザに問い合わせ、前記ユーザにより選択された方を行う第３の処理かのいずれかである、請求項２８または２９に記載の情報共有装置。
【請求項３１】
前記木構造内の前記各ノードは、ホームルートノードと同じ公開状態の未変更ノードと、前記ホームルートノードと異なりかつ親ノードと異なる公開状態の変更起点ノードと、前記ホームルートノードと異なりかつ親ノードと同じ公開状態の変更継続ノードとに分類され、その分類が前記各ノードの変更状態種別として前記公開状態の情報に付加されて管理されており、
前記公開状態を参照する際、前記変更状態種別を参照する、請求項１７記載の情報共有装置。
【請求項３２】
参照先ノードへのショートカットとなるノードを作成し、前記ショートカットのノードが指定されると、前記参照先ノードを検索するショートカット管理手段をさらに有する、請求項１７記載の情報共有装置。
【請求項３３】
コンピュータに、少なくとも１つの単位ユーザの所有する情報を、ホームルートノードから少なくとも１つのリーフノードまで複数のノードが連なる単位ユーザ毎の木構造で、前記ノードに対応付けて記憶装置に保持させ、前記各ノードの公開状態を管理させるための情報共有プログラムであって、
いずれかのノードの公開状態を変更する公開状態操作要求があると、前記記憶装置上にある前記各ノードの公開状態を参照し、前記ホームルートノードから前記各リーフノードに至る全てのパスにおいて公開状態の変化回数が最大で１回までという条件を満たして、該公開状態操作要求を実行することが可能か否か判定する第１の処理と、
前記第１のステップにおいて実行可能と判定された公開状態操作要求を前記条件を満たすように実行する第２の処理と、
前記木構造を変更する木構造操作要求があると、前記公開状態を参照し、前記条件を満たすように該木構造操作要求を実行する第３の処理とを有する情報共有プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のユーザやグループに共有される情報を木構造にして格納し、管理するファイルシステムに関し、特に、他ユーザや他グループへの情報の公開を管理するファイルシステムに関する。
【０００２】
【従来の技術】
ＷｉｎｄｏｗｓやＵｎｉｘといったオペレーティングシステムでは、ユーザやグループの所有する情報がファイルシステム内に格納される。ファイルシステムは、個々の情報のノードを木構造に連結して保持している（非特許文献１、２参照）。ノードとは、木構造を構成する各々の情報である。
【０００３】
また、インターネットなどのＷＡＮ上で提供されるネットワークストレージサービスにおいても、多くの場合、ユーザやグループの所有する情報が木構造で保持される。
【０００４】
図６３は、木構造で保持される情報の一例を示す図である。この例では、ユーザ「福井」、ユーザ「田中」、グループ「料理クラブ」、グループ「ＰＴＡ」が所有する情報がそれぞれ木構造を構成している。木構造を構成する各情報がノードである。
【０００５】
図６３からも分かるように、情報を所有する単位は、個人であるユーザである場合と、複数人からなるグループである場合とがある。ユーザであるかグループであるかを区別して考える必要がない場合には、ユーザとグループを含めて、「単位ユーザ」と称することとする。
【０００６】
通常、ある単位ユーザに所有されているノードには、その単位ユーザに属さない者がアクセスすることはできない。しかし、所有者である単位ユーザが各ノードに公開先を設定することによって、その単位ユーザに属さない者からのアクセスを可能とすることができる。
【０００７】
図６４は、従来の情報共有システムの構成を示すブロック図である。図６４を参照すると、従来の情報共有システムは、入力装置１、データ処理装置３、記憶装置４、および出力装置２を有している。
【０００８】
入力装置１は、キーボード、マウス、タブレット等である。出力装置２は、ディスプレイ装置や印刷装置等である。記憶装置４は各種情報を記憶する。データ処理装置３は、データ処理を有するソフトウェアプログラムを実行することにより動作する。
【０００９】
記憶装置４は、木構造記憶部９を有している。木構造記憶部９は、各単位ユーザが所有する情報を、単位ユーザ毎の木構造として記憶している。また、さらに各単位ユーザ毎の木構造が、大きな全体木構造内に、その一部として含まれている場合もある。
【００１０】
図６５は、木構造を構成する各ノードのデータ構造の一例を示す図である。図６５を参照すると、各ノードは、コンテンツの他に、親ノードポインタ、子ノードポインタリスト、所有者アクセス許可情報、公開先アクセス許可情報リストなどを含む。
【００１１】
コンテンツは、テキスト、画像、音楽、バイナリーデータ、ソフトウェアプログラムなどの任意のデータである。
【００１２】
親ノードポインタは、親ノードを指定するための情報である。
【００１３】
子ノードポインタリストは、子ノードを指定するための情報である子ノードポインタのリストである。子ノードポインタリストには、複数の子ノードポインタが含まれてもよい。
【００１４】
図６６は、所有者アクセス許可情報の一例を示す図である。図６６を参照すると、所有者アクセス許可情報は、そのノードの所有者名と、その所有者のノードに対する読む権利および書き込む権利等を含むアクセス権限とで構成されている。
【００１５】
図６７は、公開先アクセス許可情報の一例を示す図である。図６７を参照すると、公開先アクセス許可情報は、そのノードの公開先となる単位ユーザ名（すなわち、ユーザ名またはグループ名）と、その公開先の単位ユーザのノードに対する読む権利および書き込む権利等を含むアクセス権限とで構成される。公開先アクセス許可情報リストは、公開先アクセス許可情報のリストである。公開先アクセス許可情報リストには、複数の公開先アクセス許可情報が含まれてもよい。
【００１６】
データ処理装置３は、アプリケーション実行部５、アクセス許可判定部６、木構造操作部７、および公開状態操作部８を有している。
【００１７】
アプリケーション実行部５は、ワードプロセッサ、メールソフト、ＷＷＷブラウザ、ＨＴＴＰサーバ、Ｗｅｂアプリケーションサーバなどの各種アプリケーションを実行する。
【００１８】
アプリケーション実行部５で実行されるアプリケーションは、木構造記憶部９に木構造で保持されているノードを必要に応じて読み書きする。この読み書き操作には、ノードのコンテンツを読み書きする操作の他に、ノードの新規作成、複製、移動、削除などの木構造操作と、公開先の設定または解除やアクセス権限の設定または解除などの公開状態操作がある。公開状態とは、ノードの公開先やアクセス権限の状態である。公開状態操作とは、ノードの公開状態を変更する操作である。
【００１９】
アプリケーション実行部５は、ノードの読み書きを行う際、読み書きの操作要求をアクセス許可判定部６に渡す。
【００２０】
アクセス許可判定部６は、操作の対象となるノードの所有者アクセス許可情報と、公開先アクセス許可情報リストを参照し、要求された読み書き操作が許可されるか否か判定する。
【００２１】
図６８は、図６４に示されたアクセス許可判定部６の動作を示すフローチャートである。図６８を参照すると、まず、アクセス許可判定部６は、ステップＳ９０１で、操作に関連する全てのノードの所有者アクセス許可情報および公開先アクセス許可情報リストを木構造記憶部９から読出す。次に、アクセス許可判定部６は、ステップＳ９０２で、アプリケーションの実行者がそれら全てのノードに対するアクセス権限を有するか否か判定する。実行者は、それらノードの所有者である場合と、他の単位ユーザである場合がある。
【００２２】
実行者がアクセス権限を持たないノードが１つでもあれば、アクセス許可判定部６は、ステップＳ９０３で、操作の実行を拒否する。実行者が全てのノードに対するアクセス権限を持っていれば、アクセス許可判定部６は、ステップＳ９０４で、操作の実行を許可し、操作を実行するモジュールに操作要求を転送する。
【００２３】
読み書き操作が許可されると、操作要求は次のように処理される。
【００２４】
操作要求がコンテンツまたはアクセス権限の読み書きである場合、操作要求は木構造記憶部９に送られ、そこで処理される。また、操作要求が木構造操作である場合も、操作要求は木構造操作部７に送られ、そこで処理される。これに対して、操作要求が公開状態操作である場合、操作要求は公開状態操作部８に送られ、そこで処理される。
【００２５】
図６９は、公開状態操作部８の動作を示すフローチャートである。公開状態操作部８は、操作要求に従って操作対象ノードの公開先を変更する。
【００２６】
図６９を参照すると、まず、公開状態操作部８は、ステップＳ１００１で、操作要求が公開の設定を要求するものか否か判定する。操作要求が公開設定を要求するものであれば、公開情報操作部８は、ステップＳ１００２で、操作対象ノードを木構造記憶部９内から見つけ、そのノードに公開先を設定する。
【００２７】
ステップＳ１００１の判定において、操作要求が公開設定を要求するもので無ければ、公開状態操作部８は、ステップＳ１００３で、操作要求が公開の解除を要求するものか否か判定する。操作要求が公開解除を要求するものであれば、公開状態操作部８は、ステップＳ１００４で、操作対象ノードを木構造記憶部９から見つけ、そのノードの公開を解除する。
【００２８】
ステップＳ１００３の判定において、操作要求が公開の解除を要求するもので無ければ、公開状態操作部８は、ステップＳ１００５で、エラーを通知する。
【００２９】
図７０は、木構造操作部７の動作を示すフローチャートである。木構造操作部７は、操作要求に従ってノードの新規作成、複製、移動、削除を行う。
【００３０】
図７０を参照すると、木構造操作部７は、ステップＳ１１０１、Ｓ１１０３、Ｓ１１０５、Ｓ１１０７の判定により操作要求の場合分けを行う。
【００３１】
操作要求がノードの新規作成を要求するものであれば、木構造操作部７は、ステップＳ１１０２で、木構造記憶部９内に新たなノードを作成する。操作要求がノード群の複製を要求するものであれば、木構造操作部７は、ステップＳ１１０４で、指定されたノード群の複製を、指定された複製先ノードの下に作成する。
【００３２】
操作要求がノード群の移動を要求するものであれば、木構造操作部７は、ステップＳ１１０６で、指定されたノード群を、指定された移動先ノードの下に移動する。操作要求がノードの削除を要求するものであれば、木構造操作部７は、ステップＳ１１０８で、指定されたノードをルートノードとする最大部分木のノードを削除する。ルートノードとは、木構造を構成するノードから親方向に辿ったとき最後に辿り着くノードであり、単にルートと称されることもある。また、木構造を構成するノードの部分集合であって、それらのノードが１つの木を構成しているとき、その木を部分木と称する。そして、最大部分木とは、指定されたノードと、指定されたノードから子方向に辿って、到達できる全てのノードからなる部分木である。操作要求が前述のいずれでもなければ、木構造操作部７は、ステップＳ１１０９で、エラーを通知する。
【００３３】
図７１は、従来の情報共有システムに管理される木構造の各ノードの公開状態の一例を示す図である。木構造記憶部９に格納された木構造の各ノードは、所有者ではない他の単位ユーザに公開されることができる。図７１において、各ノードの公開先は各ノードの上に付されたアルファベットで示されている。この例では、ノードＮ１、Ｎ２、Ｎ３、Ｎ４は単位ユーザＢに公開されている。また、ノードＮ５、Ｎ６、Ｎ７は単位ユーザＢと単位ユーザＣに公開されている。また、ノードＮ８、Ｎ９、Ｎ１０は単位ユーザＤに公開されている。また、ノードＮ１６、Ｎ１７は単位ユーザＥと単位ユーザＦに公開されている。
【００３４】
このように、従来の情報共有システムでは、任意のノードを任意の単位ユーザに公開することを許容している。図７１に示されているように、ホームルートノード（Ｎ０）からリーフノードまでのパスにある各ノードにおいて、それらを辿る間に公開先が何度も変化している。ホームルートノードとは、単位ユーザの所有する木構造全体のルートノードである。リーフノードとは、子ノードを持たないノードであり、単にリーフと称されることもある。例えば、ホームルートノードＮ０からリーフノードＮ６までに着目すると、ノードＮ０が公開されておらず、ノードＮ１、Ｎ２がＢに公開されており、ノードＮ５、Ｎ６がＢおよびＣに公開されている。つまり、このパスでは公開先が２回変化している。
【００３５】
図７２は、図７１で示した木構造を領域に分けて簡略化し、各領域のノードの公開先を分かりやすく示した図である。図７２を参照しても、公開先が複数回変化しているパスが有ることが分かる。
【００３６】
以上説明した従来の情報共有システムによれば、所有者は各ノードに自由に公開先を設定することができる。しかし、情報共有システムによって多数の情報を管理する場合、ノードの各々に公開先を設定する作業は煩雑であり、また時間のかかるものであった。
【００３７】
その煩雑さを緩和するために、親ノードの公開先を子ノードが継承する機能を用いた情報共有システムがある。継承機能を用いれば、親ノードの公開先を継承したノードへの公開先の設定を省略することができる。
【００３８】
図７３は、継承機能を用いた情報共有システムにより管理される木構造の一例を示す図である。図７３では、右肩に“○”が付されているノードは親の公開先を継承するノードである。また、右肩に“●”が付されているノードは、親の公開先を継承しないノードである。
【００３９】
図７０例では、ノードＮ０、Ｎ１、Ｎ８、Ｎ５、Ｎ１６、Ｎ１８が親の公開先を継承しないノードである。また、それ以外のノードが親の公開先を継承するノードである。この情報共有システムは、親の公開先を継承しないノードＮ０、Ｎ１、Ｎ５、Ｎ８、Ｎ１６、Ｎ１８のみに公開先を設定することにより、図７１と同様に、自由に各ノードの公開状態を設定することができる。
【００４０】
【非特許文献１】
Ｄｅｎｎｉｓ  Ｍ．  Ｒｉｔｃｈｉｅ  ａｎｄ  Ｋｅｎ  Ｔｈｏｍｐｓｏｎ，  Ｔｈｅ  Ｕｎｉｘ  Ｔｉｍｅ  Ｓｈａｒｉｎｇ  Ｓｙｓｔｅｍ，  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  ｏｆ  ｔｈｅ  ＡＣＭ，  Ｖｏｌｕｍｅ  １７，  Ｎｕｍｂｅｒ  ７，  Ｊｕｌｙ  １９７４，  ｐｐ３６５−３７５
【非特許文献２】
Ｍｉｃｈａｅｌ  Ｍ．  Ｓｗｉｆｔ  ａｎｄ  Ａｎｎｅ  Ｈｏｐｋｉｎｓ，  Ｉｍｐｒｏｖｉｎｇ  ｔｈｅ  Ｇｒａｎｕｌａｒｉｔｙ  ｏｆ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  ｆｏｒ  Ｗｉｎｄｏｗｓ  ２０００，  ＡＣＭ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  ａｎｄ  Ｓｙｓｔｅｍ  Ｓｅｃｕｒｉｔｙ，  Ｖｏｌｕｍｅ  ５，  Ｎｕｍｂｅｒ  ４，  Ｎｏｖｅｍｂｅｒ  ２００２，  ｐｐ３９８−４３７
【００４１】
【発明が解決しようとする課題】
継承機能を用いた従来の情報共有システムでは、任意のノードをルートとする部分木について、その部分木を構成するノードの各々の公開先を知るためには、アクセス許可情報と継承情報を用いて、部分木を構成する全てのノードの公開先を個々に調べる必要がある。例えば、図７３において、ノードＮ１をルートとする部分木を構成するノードの各々の公開先を知るには、ノードＮ２〜Ｎ１０までの全てのノードを調べる必要があり、作業が煩雑である。
【００４２】
また、この従来の情報共有システムにおいて、任意のノードの公開を変更した場合にそのノードをルートとする部分木を構成する各々のノードの公開先がどのように変化するかを予測するためには、そのノードをルートとする部分木を構成するノードのアクセス許可情報と継承情報を全て予め調べておかなければならず、作業が煩雑である。
【００４３】
また、この従来の情報共有システムでは、任意の部分木を移動する場合にも、これらと同様の問題が発生する。
【００４４】
本発明の目的は、木構造を構成する各ノードに公開先を容易に設定することができ、かつ、各ノードの公開状態を容易に把握でき、また操作による各ノードの公開状態の変化を容易に判断することのできる情報共有方法、装置、およびプログラムを提供することである。
【００４５】
【課題を解決するための手段】
本発明の情報共有方法は、少なくとも１つの単位ユーザの所有する情報を、ホームルートノードから少なくとも１つのリーフノードまで複数のノードが連なる単位ユーザ毎の木構造で、前記ノードに対応付けて記憶装置上に保持し、前記各ノードの公開状態を管理する情報共有方法であって、
いずれかのノードの公開状態を変更する公開状態操作要求があると、コンピュータが前記記憶装置上にある前記各ノードの公開状態を参照し、前記ホームルートノードから前記各リーフノードに至る全てのパスにおいて公開状態の変化回数が最大で１回までという条件を満たして、該公開状態操作要求を実行することが可能か否か判定する第１のステップと、
前記第１のステップにおいて実行可能と判定された公開状態操作要求を前記コンピュータが前記条件を満たすように実行する第２のステップと、
前記木構造を変更する木構造操作要求があると、前記コンピュータが前記公開状態を参照し、前記条件を満たすように該木構造操作要求を実行する第３のステップとを有している。
【００４６】
したがって、本発明によれば、公開状態操作の際、条件を満たして実行できる場合にのみ条件を満たすように操作を実行し、また、木構造操作の際、条件を満たすように操作を実行するので、木構造のホームルートノードからリーフノードに至る全てのパスにおいて公開状態の変化が最大１回までであるという条件が常に満たされる。
【００４７】
また、前記第１のステップにおいて、前記公開状態操作要求が公開状態の設定を要求するものである場合、操作対象ノードの公開状態がホームルートノードと同じか、または前記木構造において公開状態の変更起点となっていれば、前記公開状態操作要求を実行可能と判定し、前記操作対象ノードの公開状態が前記ホームルートノードと異なり、かつ前記変更起点でなければ、前記公開状態操作要求を実行不可と判定することとしてもよい。
【００４８】
したがって、操作対象ノードが未変更か、変更起点となっているときに、操作対象ノードの公開状態の設定が可能なので、上述した条件が満たされる。
【００４９】
また、前記第１のステップにおいて、前記公開状態操作要求が公開状態の解除を要求するものである場合、操作対象ノードが前記木構造において公開状態の変更起点になっていれば、前記公開状態操作要求を実行可能と判定し、前記操作対象ノードが前記変更起点でなければ、前記公開状態操作要求を実行不可と判定することとしてもよい。
【００５０】
したがって、操作対象ノードが変更起点となっているときに、操作対象ノードの公開状態の解除が可能なので、上述した条件が満たされる。
【００５１】
また、前記第１のステップにおいて、前記公開状態操作要求の操作対象ノードがホームルートノードであれば実行不可と判定することとしてもよい。
【００５２】
したがって、ホームルートノードの公開状態の操作が禁止されるので、上述した条件が満たされる。
【００５３】
また、前記第２のステップにおいて、前記公開状態操作要求が公開状態の設定を要求するものである場合、操作対象ノードの公開状態を前記公開状態操作要求により要求されたように設定し、前記操作対象ノードをルートとする最大部分木に含まれる全てのノードの公開状態を前記操作対象ノードと一致させることとしてもよい。
【００５４】
したがって、公開状態の設定の際、操作対象ノードとそれをルートとする最大部分木の全ノードの公開状態が同じ状態に設定されるので、上述した条件が満たされる。
【００５５】
また、前記第２のステップにおいて、前記公開状態操作要求が公開情報の解除を要求するものである場合、操作対象ノードの公開を解除し、前記操作対象ノードをルートとする最大部分木に含まれる全てのノードの公開状態を前記操作対象ノードと一致させることとしてもよい。
【００５６】
したがって、公開状態の解除の際、操作対象ノードとそれをルートとする最大部分木の全ノードの公開状態が全て解除されるので、上述した条件が満たされる。
【００５７】
また、前記第３のステップにおいて、前記木構造操作要求が新規ノードの作成を要求するものである場合、要求された位置に前記新規ノードを作成する。さらに、前記新規ノードを作成した後、さらに、該新規ノードの公開状態を親ノードと一致させることとしてもよい。
【００５８】
したがって、要求応じて新規にノードが作成され、そのノードの公開状態が親ノードと一致するので、上述した条件が満たされる。
【００５９】
また、前記第３のステップにおいて、前記木構造操作要求が少なくとも１つのノードからなるノード群の複製を要求するものである場合、要求された位置に前記ノード群の複製を作成する。さらに前記ノード群の複製を作成した後、さらに、該ノード群の複製を構成する前記ノードの公開状態を、該ノード群のルートノードの親ノードと一致させることとしてもよい。
【００６０】
したがって、要求に応じてノード群の複製が作成され、複製されたノード群に含まれる全ての公開状態が、複製先であるルートノードの親ノードと一致するので、上述した条件が満たされ、ユーザは、容易に木構造全体の公開状態を把握することができる。
【００６１】
また、前記第３のステップにおいて、前記木構造操作要求が少なくとも１つのノードからなるノード群の移動を要求するものである場合、要求された移動先ノードの下に前記ノード群を移動させる。前記ノード群を移動した後、さらに、前記移動先ノードの公開状態がホームルートノードと異なるか否かにより異なる処理を行うこととしてもよく、かつ／または、前記ノード群に含まれる前記各ノードの公開状態によって異なる処理を行うこととしてもよい。
【００６２】
したがって、要求に応じてノード群が移動され、移動されたノード群に含まれる全ての公開状態が、移動先ノードの公開状態および／または移動されたノード群に含まれるノードの公開状態により好ましい処理を行うことができ、上述した条件を満たすことができる。
【００６３】
また、前記処理は、前記ノード群に含まれる前記各ノードの公開状態を維持する第１の処理か、該各ノードの公開状態を前記移動先ノードと一致させる第２の処理か、前記第１の処理または前記第２の処理のいずれを行うかをユーザに問い合わせ、前記ユーザにより選択された方を行う第３の処理かのいずれかであってもよい。
【００６４】
したがって、移動されたノード群に含まれるノードの公開状態が、移動先ノードの公開状態および／または移動されたノード群に含まれるノードの公開状態により、維持されるか、移動先ノードと一致させるか、ユーザ選択されるかの設計ポリシーに応じた好ましい処理が行われ、上述した条件を満たされる。
【００６５】
また、前記木構造内の前記各ノードは、ホームルートノードと同じ公開状態の未変更ノードと、前記ホームルートノードと異なりかつ親ノードと異なる公開状態の変更起点ノードと、前記ホームルートノードと異なりかつ親ノードと同じ公開状態の変更継続ノードとに分類され、その分類が前記各ノードの変更状態種別として前記公開状態の情報に付加されて管理されており、
前記コンピュータが前記公開状態を参照する際、前記変更状態種別を参照することとしてもよい。
【００６６】
したがって、ノード毎に変更状態種別の情報が付与されており、コンピュータはそれを参照するので、木構造における公開状態の変化の様子を容易に把握することができる。
【００６７】
また、前記木構造内には、他のノードへのショートカットとなるノードが含まれることとしてもよい。
【００６８】
したがって、木構造のホームルートノードからリーフノードに至る全てのパスにおいて公開状態の変化が最大１回までであるという条件を満たしながら、公開状態が入れ子になった木構造を単位ユーザに見せることができる。
【００６９】
本発明の情報共有装置は、少なくとも１つの単位ユーザの所有する情報を、ホームルートノードから少なくとも１つのリーフノードまで複数のノードが連なる単位ユーザ毎の木構造で、前記ノードに対応付けて記憶装置上に保持し、前記各ノードの公開状態を管理する情報共有装置であって、
いずれかのノードの公開状態を変更する公開状態操作要求があると、前記記憶装置上にある前記各ノードの公開状態を参照し、前記ホームルートノードから前記各リーフノードに至る全てのパスにおいて公開状態の変化回数が最大で１回までという条件を満たして、該公開状態操作要求を実行することが可能か否か判定する実行可否判定手段と、
前記実行可否判定手段において実行可能と判定された公開状態操作要求を前記条件を満たすように実行する公開状態操作手段と、
前記木構造を変更する木構造操作要求があると、前記公開状態を参照し、前記条件を満たすように該木構造操作要求を実行する木構造操作手段とを有している。
【００７０】
また、前記実行可否判定手段は、前記公開状態操作要求が公開状態の設定を要求するものである場合、操作対象ノードの公開状態がホームルートノードと同じか、または前記木構造において公開状態の変更起点となっていれば、前記公開状態操作要求を実行可能と判定し、前記操作対象ノードの公開状態が前記ホームルートノードと異なり、かつ前記変更起点でなければ、前記公開状態操作要求を実行不可と判定することとしてもよい。
【００７１】
また、前記実行可否判定手段は、前記公開状態操作要求が公開状態の解除を要求するものである場合、操作対象ノードが前記木構造において公開状態の変更起点になっていれば、前記公開状態操作要求を実行可能と判定し、前記操作対象ノードが前記変更起点でなければ、前記公開状態操作要求を実行不可と判定することとしてもよい。
【００７２】
また、前記実行可否判定手段は、前記公開状態操作要求の操作対象ノードがホームルートノードであれば実行不可と判定することとしてもよい。
【００７３】
また、前記公開状態操作手段から呼び出されると、操作対象ノードをルートとする最大部分木に含まれる全てのノードの公開状態を前記操作対象ノードと一致させる公開状態設定対応手段をさらに有し、
前記公開状態操作手段は、前記公開状態操作要求が公開状態の設定を要求するものである場合、操作対象ノードの公開状態を前記公開状態操作要求により要求されたように設定し、前記公開状態設定対応手段を呼び出すこととしてもよい。
【００７４】
また、前記公開状態操作手段から呼び出されると、操作対象ノードをルートとする最大部分木に含まれる全てのノードの公開状態を前記操作対象ノードと一致させる公開状態解除対応手段をさらに有し、
前記公開状態操作手段は、前記公開状態操作要求が公開情報の解除を要求するものである場合、操作対象ノードの公開を解除し、前記公開状態解除対応手段を呼び出すこととしてもよい。
【００７５】
また、前記木構造操作手段は、前記木構造操作要求が新規ノードの作成を要求するものである場合、要求された位置に前記新規ノードを作成することとしてもよい。
【００７６】
また、前記木構造操作手段から呼び出されると、前記新規ノードの公開状態を親ノードと一致させる新規作成対応手段をさらに有し、
前記木構造操作手段は、前記新規ノードを作成した後、前記新規作成対応手段を呼び出すこととしてもよい。
【００７７】
また、前記木構造操作手段は、前記木構造操作要求が少なくとも１つのノードからなるノード群の複製を要求するものである場合、要求された位置に前記ノード群の複製を作成することとしてもよい。
【００７８】
また、前記木構造操作手段から呼び出されると、前記ノード群の複製を構成する前記ノードの公開状態を、該ノード群のルートノードの親ノードと一致させる複製対応手段をさらに有し、
前記木構造操作手段は、前記ノード群の複製を作成した後、前記複製対応手段を呼び出すこととしてもよい。
【００７９】
また、前記木構造操作手段は、前記木構造操作要求が少なくとも１つのノードからなるノード群の移動を要求するものである場合、要求された移動先ノードの下に前記ノード群を移動させることとしてもよい。
【００８０】
また、前記木構造操作手段から呼び出されると、前記移動先ノードの公開状態がホームルートノードと異なるか否かにより異なる処理を行う移動対応手段をさらに有し、
前記木構造操作手段は、前記ノード群を移動した後、前記移動対応手段を呼び出すこととしてもよい。
【００８１】
また、前記移動対応手段は、さらに前記ノード群に含まれる前記各ノードの公開状態によって異なる処理を行うこととしてもよい。
また、前記移動対応手段が行う前記処理は、前記ノード群に含まれる前記各ノードの公開状態を維持する第１の処理か、該各ノードの公開状態を前記移動先ノードと一致させる第２の処理か、前記第１の処理または前記第２の処理のいずれを行うかをユーザに問い合わせ、前記ユーザにより選択された方を行う第３の処理かのいずれかであってもよい。
【００８２】
また、前記木構造内の前記各ノードは、ホームルートノードと同じ公開状態の未変更ノードと、前記ホームルートノードと異なりかつ親ノードと異なる公開状態の変更起点ノードと、前記ホームルートノードと異なりかつ親ノードと同じ公開状態の変更継続ノードとに分類され、その分類が前記各ノードの変更状態種別として前記公開状態の情報に付加されて管理されており、
前記公開状態を参照する際、前記変更状態種別を参照することとしてもよい。
【００８３】
また、参照先ノードへのショートカットとなるノードを作成し、前記ショートカットのノードが指定されると、前記参照先ノードを検索するショートカット管理手段をさらに有することとしてもよい。
【００８４】
本発明のプログラムは、コンピュータに、少なくとも１つの単位ユーザの所有する情報を、ホームルートノードから少なくとも１つのリーフノードまで複数のノードが連なる単位ユーザ毎の木構造で、前記ノードに対応付けて記憶装置に保持させ、前記各ノードの公開状態を管理させるための情報共有プログラムであって、
いずれかのノードの公開状態を変更する公開状態操作要求があると、前記記憶装置上にある前記各ノードの公開状態を参照し、前記ホームルートノードから前記各リーフノードに至る全てのパスにおいて公開状態の変化回数が最大で１回までという条件を満たして、該公開状態操作要求を実行することが可能か否か判定する第１の処理と、
前記第１のステップにおいて実行可能と判定された公開状態操作要求を前記条件を満たすように実行する第２の処理と、
前記木構造を変更する木構造操作要求があると、前記公開状態を参照し、前記条件を満たすように該木構造操作要求を実行する第３の処理とを有している。
【００８５】
【発明の実施の形態】
本発明の情報共有システムでは、ユーザやグループの所有する情報を、少なくとも１つのノードからなる木構造で管理している。なお、ユーザとグループを区別する必要がない場合、ユーザとグループの双方を含めて単位ユーザと称することとする。
【００８６】
所有者は、所有する情報の一部または全部を他の単位ユーザに公開できる。公開先となった単位ユーザはその情報にアクセスすることができる。ただし、本発明の情報共有システムでは、ルートノードからリーフノードまでの全てのパスにおける公開先の変化回数に制限が加えられている。具体的には、各ノードの公開先を設定する際、木構造のルートノードから各リーフノードまでの全てのパスにおいて、公開先の変化回数が１回以下とされる。
【００８７】
これにより、ユーザが情報の公開／非公開を変更するときや、情報の木構造の形状を変更するときにどの情報がだれに公開されるかを判定、予測することを容易にするものである。
【００８８】
図１は、本発明の対象となる木構造で管理された情報の一例を示す図である。図１を参照して、ノードとは、木構造を構成する個々の情報をいう。ルートノードとは、木構造を構成するノードを、親方向に辿ったとき最後に到達するノードである。ルートノードのことを単にルートという場合がある。リーフノードとは、子ノードを持たないノードである。リーフノードのことを単にリーフという場合がある。
【００８９】
図１（１）に示すように、１人のユーザが所有する情報が構成する木構造全体をユーザホームと呼ぶ。図１（２）に示すように、１つのグループが所有する情報が構成する木構造全体をグループホームと呼ぶ。ユーザとグループを特に区別する必要がない場合、単位ユーザが所有する情報が構成する木構造全体をホームと呼ぶ。ホームを構成する木構造のルートノードはホームルートノードと呼ばれる。
【００９０】
部分木とは、木構造を構成するノードの部分集合であって、それらが１つの木を構成しているものを言う。例えば、図１（３）の木構造において、ノードＮ１、Ｎ２、Ｎ５、Ｎ６は部分木を構成する。
【００９１】
部分木に含まれるノードがＸ自身か、またはＸから子供方向にたどって到達できるノードのいずれかである部分木をノードＸをルートとする部分木という。例えば、図１（３）の木構造において、ノードＮ７、Ｎ８、Ｎ９から構成される部分木やノードＮ７、Ｎ８、Ｎ９、Ｎ１０から構成される部分木は、いずれもノードＮ７をルートとする部分木である。
【００９２】
ノードＸから子供方向にたどって到達できる全てのノードとノードＸとで構成される部分木をノードＸをルートとする最大部分木という。例えば、図１（３）の木構造において、ノードＮ７をルートとする最大部分木は、ノードＮ７、Ｎ８、Ｎ９、Ｎ１０、Ｎ１１から構成される。
【００９３】
以下の説明では、ユーザとグループを特に区別しない。また、単位ユーザ名（すなわちユーザ名あるいはグループ名）を大文字のアルファベット１文字Ａ〜Ｆで示すことにする。
【００９４】
図２は、本発明において課された条件を満たす木構造の一例を示す図である。図２には、ホームを構成する木構造の各ノードは、所有者ではない他の単位ユーザに公開されることができる。図２において、各ノードの公開先は各ノードの上に付されたアルファベットで示されている。この例では、ノードＮ１、Ｎ２、Ｎ３、Ｎ４、Ｎ５、Ｎ６、Ｎ７、Ｎ８、Ｎ９、Ｎ１０は単位ユーザＢに公開されている。また、ノードＮ１６、Ｎ１７、Ｎ１８、Ｎ１９、Ｎ２０は単位ユーザＥと単位ユーザＦに公開されている。
【００９５】
図２に示されているように、ホームルートノード（Ｎ０）から各リーフノードまでのパスにある各ノードにおいて、それらを辿る間に公開先が最大１回まで変化している。例えば、ホームルートノードＮ０からリーフノードＮ４までに着目すると、ノードＮ０が公開されておらず、ノードＮ１、Ｎ２、Ｎ３、Ｎ４がＢに公開されている。つまり、このパスでは、ノードＮ０とＮ１の間で公開先が１回だけ変化している。
【００９６】
同様に、リーフノードＮ６、Ｎ７、Ｎ１０に至るパスは全てノードＮ１を通過するので、条件を満たすためには、ノードＮ５、Ｎ６、Ｎ７、Ｎ８、Ｎ９、Ｎ１０は全てノードＮ１と同じ公開先Ｂを持たなければならない。この条件を言い換えると、あるノードＸで公開先が変化したら、そのノードをルートとする最大部分木のノードがノードＸと同じ公開先を持つといえる。図２では、公開先が空のノードＮ１１と、公開先が単位ユーザＥ、ＦのノードＮ１６との間で公開先が変化している。そのため、ノードＮ１６をルートとする最大部分木を構成する各ノード、すなわちノードＮ１６、Ｎ１７、Ｎ１８、Ｎ１９、Ｎ２０は、ノードＮ１６と同じ公開先（単位ユーザＥ、Ｆ）に公開される。
【００９７】
図３は、図２で示した木構造を複数の領域に分けて簡略化し、各領域のノードの公開先を分かりやすく示した図である。図３において、公開先の変化が１回までであることが分かる。
【００９８】
図２に示した例では、ノードＮ０の公開先が空であったが、ノードＮ０に公開先がある場合でも図２の例と同様に、「木構造のルートノードからリーフノードに至る全てのパスにおいて、公開先の変化が最大１回まで」という条件で木構造を構成することができる。図４はその例であり、ノードＮ０の公開先としてＣが設定されている。この場合でも公開先の変更点はノードＮ１、Ｎ１６であり、図２の木構造と同様に条件を満たしている。図５は図４に示された情報の公開状況を簡略化して示した図である。
【００９９】
図６は、本発明の条件を満たす木構造の一例を示す図である。ホームルートノードと同じ公開先を持つノードとホームルートノード自身（図６では、ノードＮ０、Ｎ１１、Ｎ１２、Ｎ１３、Ｎ１４、Ｎ１５）は未変更ノードと呼ばれる。それ以外のノードは変更済みノードと呼ばれる。
【０１００】
未変更ノードが占める領域は未変更領域と呼ばれ、変更済みノードが占める領域は変更済み領域と呼ばれる。木構造をホームルートノードから順にたどっていって、初めて登場する変更済みノードを変更起点ノードと呼ぶ。図６の場合、ノードＮ１、Ｎ１６が変更起点ノードである。
【０１０１】
図６では、ホームルートノードの公開先が空の例を示したが、図７のようにホームルートノードの公開先が空でない場合（図７では公開先がＣ）も同じ用語を用いることができる。
【０１０２】
情報共有システムは、「木構造のルートノードから各リーフノードに至る全てのパスにおいて、公開先の変化が最大１回しかない」という条件を常に満たす必要がある。そのため、情報共有システムは、木構造を変更する操作（ノードの新規作成、複製、移動）を行う際や、公開状態を変更する操作（公開設定、公開変更、公開解除）を行う際、その条件を満たすように各ノードの公開先を設定する。
【０１０３】
したがって、本発明の情報共有システムによれば、公開先が変化しているノードを見つければ、それをルートとする最大部分木全体が同じ相手先に公開されていると判断できるので、ユーザは、部分木を構成する全てのノードの公開先を調べる必要がない。
【０１０４】
また、公開先の設定、解除を行った場合や、ノードの新規作成、移動、削除という木構造操作を行った場合に、上述の条件が維持されるので、公開構造が複雑化することなく、システムを利用するユーザの負担が少ない。
【０１０５】
本発明の一実施形態について図面を参照して詳細に説明する。
【０１０６】
図８は、本発明の一実施形態の情報共有システムの構成を示すブロック図である。図８を参照すると、本実施形態の情報共有システムは、入力装置１、データ処理装置１０、記憶装置４、および出力装置２を有している。
【０１０７】
入力装置１は、キーボード、マウス、タブレット等である。出力装置２は、ディスプレイ装置や印刷装置等である。記憶装置４は各種情報を記憶する。データ処理装置１０は、各種処理を有するソフトウェアプログラムを実行することにより動作するコンピュータである。
【０１０８】
記憶装置４は、木構造記憶部９を有している。木構造記憶部９は、各単位ユーザが所有する情報を、各単位ユーザ毎の木構造として記憶している。
【０１０９】
図９は、木構造を構成する各ノードのデータ構造を示す図である。図９を参照すると、各ノードは、コンテンツの他に、親ノードポインタ、子ノードポインタリスト、所有者アクセス許可情報、公開先アクセス許可情報リストなどを含む。
【０１１０】
コンテンツは、テキスト、画像、音楽、バイナリーデータ、ソフトウェアプログラムなどの任意のデータである。
【０１１１】
親ノードポインタは、親ノードを指定するための情報である。
【０１１２】
子ノードポインタリストは、子ノードを指定するための情報である子ノードポインタのリストである。子ノードポインタリストには、複数の子ノードポインタが含まれてもよい。
【０１１３】
図１０は、所有者アクセス許可情報の一例を示す図である。図１０を参照すると、所有者アクセス許可情報は、そのノードの所有者名と、その所有者のノードに対する読む権利および書き込む権利等を含むアクセス権限とで構成されている。
【０１１４】
図１１は、公開先アクセス許可情報の一例を示す図である。図１１を参照すると、公開先アクセス許可情報は、そのノードの公開先となる単位ユーザ名と、その公開先の単位ユーザのノードに対する読む権利および書き込む権利等を含むアクセス権限とで構成される。公開先アクセス許可情報リストは、公開先アクセス許可情報のリストである。公開先アクセス許可情報リストには、複数の公開先アクセス許可情報が含まれてもよい。
【０１１５】
図１２は、ノードに格納されている情報の一例を示す図である。図１２に示された各領域は、図９のものと一致している。図１２は、図２におけるノードＮ１６に格納されている情報を例示している。すなわち、コンテンツは“ＨｅｌｌｏＷｏｒｌｄ”であり、親ノードポインタはノードＮ１１を指し、子ノードポインタリストに含まれる各子ノードポインタはノードＮ１７、Ｎ１８を指している。また、所有者アクセス許可情報には、所有者が単位ユーザＡであり、読む操作と書き込む操作が可能なことが示されている。また、公開先アクセス許可情報リストには、公開先の単位ユーザＥおよび単位ユーザＦは読む操作が可能なことが示されている。
【０１１６】
一般に、情報共有システムでは、情報の集まり（部分木）単位に、公開／非公開が設定される。そして、公開している情報のうち、どの情報にどのアクセス権限（読む権利、書き込む権利等）を与えるかを個別に設定する。したがって、所有者である単位ユーザは、まず部分木単位の公開先を意識し、次に個別のデータに対する各単位ユーザのアクセス権限を意識する。アクセス権限は、デフォルト値を用いたり、継承機能を用いることにより、自動的に付与されることがあるが、公開先は単位ユーザが明示的に設定する。
【０１１７】
ここでは、公開先の設定変更を容易にすることと、どの情報がだれに公開されているかを容易に判断することに注目し、以下の説明では、ノードが保持する公開先の扱い方について示す。
【０１１８】
データ処理装置１０は、アプリケーション実行部５、アクセス許可判定部６、実行可否判定部１１、木構造操作部１２、公開状態操作部１３、および制約維持部２０を有している。
【０１１９】
制約維持部２０は、公開設定・解除対応部２１、新規作成対応部２２、複製対応部２３、および移動対応部２４を有している。
【０１２０】
アプリケーション実行部５は、ワードプロセッサ、メールソフト、ＷＷＷブラウザ、ＨＴＴＰサーバ、Ｗｅｂアプリケーションサーバなどの各種アプリケーションの実行機能を提供する。アプリケーション実行部５で実行されるアプリケーションは、必要に応じて木構造記憶部９が記憶している木構造の情報を読み書きする。木構造の情報の読み書きは、ノードのコンテンツを読み書きする操作、ノードの新規作成、複製、移動、削除などの木構造操作、ノードの公開先の設定解除や読み書き権限の設定解除などの公開状態操作の際に行われる。公開状態とは、ノードの公開先や読み書き等のアクセス権限の状態である。本実施形態では、主に公開先に着目した例を示す。公開状態操作とは、ノードの公開状態を変更する操作である。アプリケーション実行部５が木構造の情報の読み書きを行う際、読み書きの要求はまずアクセス許可判定部６に渡される。
【０１２１】
アクセス許可判定部６は、対象となるノードの所有者アクセス許可情報と、公開先アクセス許可情報リストを参照して、要求された読み書き操作が許可されるかどうか判定する。
【０１２２】
読み書き操作が許可された場合、操作要求は次のように処理される。操作要求がコンテンツまたはアクセス権限の読み書きである場合は、操作要求は木構造記憶部９に送られて処理される。操作要求が木構造操作である場合は、操作要求は木構造操作部１２に送られて処理される。操作要求が公開状態操作である場合は、操作要求は実行可否判定部１１に送られて処理される。
【０１２３】
実行可否判定部１１は、操作対象ノードの木構造内での位置と公開先の設定状況を参照し、公開状態操作が可能か否か判定する。操作が可能であると判定すると、実行可否判定部１１は、操作要求は公開状態操作部１３に送られて処理される。
【０１２４】
公開状態操作部１３は、操作要求に従って操作対象ノードの公開先を変更し、次に、制約維持部２０内にある公開設定・解除対応部２１に操作要求を送る。
【０１２５】
木構造操作部１２は、操作内容に応じてノードの新規作成、複製、移動、削除を行った後、操作内容に応じて、新規作成対応部２２、複製対応部２３、または移動対応部２４に操作要求を送る。削除操作のときは要求の転送を行わない。
【０１２６】
公開設定・解除対応部２１は、操作要求を受けると、操作対象ノードをルートとする最大部分木のノードに対して、操作対象ノードに保持されている公開先を設定する。
【０１２７】
新規作成対応部２２は、新規に作成したノードの親ノードの公開先を新規に作成したノードに設定する。
【０１２８】
複製対応部２３は、複製操作によって作成されたノード群に対して、それらのルートノードの親ノードが保持する公開先を設定する。
【０１２９】
移動対応部２４は、次の２つのケースの場合に、移動先ノードの公開先を読み出し、それを移動対象ノードすべてに設定する。１つ目のケースは、移動先ノードが変更済みノードである場合。２つ目のケースは、移動先ノードが未変更ノードであり、かつ、移動対象ノード群のルートノードが変更済みノードであり、かつ、移動対象ノード群のルートノードが変更起点ノードでない場合である。
【０１３０】
以下、本実施形態の情報共有システムおよび各部の動作について詳細に説明する。
【０１３１】
情報記憶部９には、各単位ユーザが所有する情報が格納されている。１つの単位ユーザが所有する情報は、１つの木構造を構成する。
【０１３２】
アプリケーション実行部５は、ワードプロセッサ、メールソフト、ＷＷＷブラウザ、ＨＴＴＰサーバ、Ｗｅｂアプリケーションサーバなどの各種アプリケーションの実行機能を提供する。実行部５で実行されるアプリケーションは、必要に応じて入力装置１、出力装置２を用いて入出力動作を実行するとともに、必要に応じて木構造記憶部９が記憶している木構造の情報を読み書きする。この読み書き操作には、ノードのコンテンツを読み書きする操作の他に、ノードの新規作成、複製、移動、削除等からなる木構造操作と、ノードの公開先の設定・解除や読み書き権限の設定・解除からなる公開状態操作がある。アプリケーション実行部５が木構造の情報の読み書きを行う際、読み書きの要求はまずアクセス許可判定部６に渡される。
【０１３３】
図１３は、アクセス許可判定部６の動作を示すフローチャートである。図１３を参照すると、まず、アクセス許可判定部６は、操作に関連する全てのノードのアクセス許可情報を木構造記憶部９から読み出す（ステップＳ１０１）。次に、アクセス許可判定部６は、それら全てのノードに対して、アプリケーションの実行者がアクセス権を有している否か判定する（ステップＳ１０２）。
【０１３４】
全てのノードに対してアクセス権があれば、アクセス許可判定部６は、操作の実行を許可し、操作の実行を行うモジュールに操作要求を転送する（ステップＳ１０４）。１つでもアクセス権のないノードがあれば、アクセス許可判定部６は、操作の実行を拒否する（ステップＳ１０３）。
【０１３５】
ステップＳ１０１において読み出される「操作に関連するノード」は、要求された操作の内容によって異なる。要求された操作の内容がコンテンツ情報の読み書きであれば、操作に関連するノードは、読み書きの対象となるノードである。例えば、図２１に示された、ノードＮ１１のコンテンツを書き込む操作では、操作に関連するノードはＮ１１のみになる。
【０１３６】
また、要求された操作の内容がノードの新規作成であれば、操作に関連するノードは、新規作成されるノードの親となるノードである。例えば、図２２に示された、ノードＮ２０の下にノードＮ２１を新規作成する操作では、操作に関連するノードはノードＮ２０である。
【０１３７】
また、要求された操作の内容が複製であれば、操作に関連するノードは、複製の対象となる（１つあるいは複数の）ノードと、複製操作によって新たに作られるノードの親になるノードである。例えば、図２５に示された、ノードＮ１３、Ｎ１４、Ｎ１５をノードＮ２０の下に複製する操作では、操作に関連するノードは、ノードＮ１３、Ｎ１４、Ｎ１５、Ｎ２０である。
【０１３８】
また、要求された操作の内容が移動であれば、操作に関連するノードは、移動の対象となるノードと、そのノードをルートとする最大部分木に属するノードと、移動の対象となるノードの親ノードと、移動後の親になるノードである。例えば、図２８に示された、ノードＮ１３をノードＮ２０の下に移動する操作では、ノードＮ１３の配下にあるノードＮ１４、Ｎ１５も一緒に移動される。したがって、操作に関連するノードは、ノードＮ１２、Ｎ１３、Ｎ１４、Ｎ１５、Ｎ２０である。ただし、情報共有システムの動作ポリシーによっては、ノードＮ１４、Ｎ１５のアクセス権を考慮しないことも考えられる。その場合、操作に関連するノードはノードＮ１２、Ｎ１３、Ｎ２０になる。
【０１３９】
また、要求された操作の内容がノードの削除であれば、操作に関連するノードは、削除される（１つあるいは複数の）ノードと、それらをルートとする最大部分部分木に含まれるノードと、削除されるノードの親となるノードである。例えば、図３１に示された、ノードＮ１８を削除する操作では、Ｎ１８をルートとする最大部分木に属するノード、すなわちノードＮ１９、Ｎ２０も親を失うため同時に削除される。したがって、操作に関連するノードは、ノードＮ１８、Ｎ１９、Ｎ２０および親であるノードＮ１６である。
【０１４０】
また、要求された操作の内容がノードの公開先の設定または解除の操作であれば、操作に関連するノードは、公開先の設定または解除の対象となるノードと、そのノードをルートとする最大部分木に属するノードである。例えば、図３３に示された、ノードＮ１３の公開先として単位ユーザＤを設定する操作では、条件を満たすためにノードＮ１４、Ｎ１５も単位ユーザＤに公開される。したがって、操作に関連するノードは、ノードＮ１３、Ｎ１４、Ｎ１５である。また、図３６に示された、ノードＮ１６に公開先としてＤを追加する操作では、条件を満たすために、ノードＮ１７、Ｎ１８、Ｎ１９、Ｎ２０にも公開先として単位ユーザＤが追加される。したがって、操作に関連するノードは、ノードＮ１６、Ｎ１７、Ｎ１８、Ｎ１９、Ｎ２０になる。また、図３９に示された、ノードＮ１６の公開先から単位ユーザＦを削除して単位ユーザＥのみにする操作では、上述の追加と同様に、操作に関連するノードは、ノードＮ１６、Ｎ１７、Ｎ１８、Ｎ１９、Ｎ２０である。また、図４２に示された、ノードＮ１６に設定されている公開先を解除する操作では、上述の追加や削除と同様に、操作に関連するノードは、ノードＮ１６、Ｎ１７、Ｎ１８、Ｎ１９、Ｎ２０になる。
【０１４１】
アクセス許可判定部６での判定を通過した操作要求、すなわち実行を許可された操作要求は、操作の内容に応じて各ブロックに送られる。
【０１４２】
操作要求がコンテンツ情報の読み書きであれば、操作要求は木構造記憶部９に送られて処理される。操作要求が木構造操作であれば、操作要求は木構造操作部１２に送られて処理される。操作要求が公開状態操作であれば、操作要求は実行可否判定部１１に送られて処理される。
【０１４３】
操作要求が公開状態操作である場合について詳細に説明する。
【０１４４】
操作要求は、実行可否判定部１１に送られ、その操作が実行可能か否か判断される。
【０１４５】
図１４は、実行可否判定部１１の動作を示すフローチャートである。
【０１４６】
まず、操作要求を受けると、実行可否判定部１１は、操作対象ノードがホームルートノードか否か判定する（ステップＳ２００）。操作対象ノードがホームルートノードであれば、実行可否判定部１１は、実行を拒否する（ステップＳ２０４）。操作対象ノードがホームルートノードでなければ、実行可否判定部１１は、操作要求が公開設定操作か否か判定する（ステップＳ２０１）。
【０１４７】
操作要求が公開設定操作であれば、実行可否判定部１１は、操作対象ノードが未変更ノードか否か判定する（ステップＳ２０２）。操作対象ノードが未変更ノードであれば、実行可否判定部１１は、操作の実行を許可する（ステップＳ２０５）。操作対象ノードが未変更ノードでなければ、実行可否判定部１１は、操作対象ノードが変更起点ノードか否か判定する（ステップＳ２０３）。
【０１４８】
操作対象ノードが公開起点ノードであれば、実行可否判定部１１は、実行を許可する（ステップＳ２０５）。操作対象ノードが公開起点ノードでなければ、実行可否判定部１１は、操作の実行を拒否する（ステップＳ２０４）。
【０１４９】
ステップＳ２０１の判定において、操作要求が公開設定操作でないと判断された場合、実行可否判定部１１は、操作要求が公開解除操作か否かの判定を行う（ステップＳ２０６）。
【０１５０】
操作要求が公開解除操作でなければ、実行可否判定部１１は、エラーを通知する（ステップＳ２０７）。操作要求が公開解除操作であれば、実行可否判定部１１は、操作対象ノードが変更起点ノードか否か判定する（ステップＳ２０８）。操作対象ノードが変更起点ノードであれば、実行可否判定部１１は、その操作の実行を許可する（ステップＳ２１０）。操作対象ノードが変更起点ノードでなければ、実行可否判定部１１は、その操作の実行を拒否する（ステップＳ２０９）。
【０１５１】
つまり、公開設定操作の対象は、ホームルートノード以外の未変更ノードか、変更起点ノードでなければならない。公開解除操作の対象は変更起点ノードでなければならない。
【０１５２】
実行可否判定部１１において実行の許可された操作要求は、公開状態操作部１３に送られる。
【０１５３】
図１５は、公開状態操作部１３の動作を示すフローチャートである。
【０１５４】
操作要求を受けた公開状態操作部１３は、まず、操作要求が公開設定操作か否か判定する（ステップＳ３０１）。操作要求が公開設定操作であれば、公開状態操作部１３は、操作対象ノードを木構造記憶部９内から見つけ、公開先を設定する（ステップＳ３０２）。
【０１５５】
操作要求が公開設定操作でなければ、公開状態操作部１３は、操作要求が公開解除操作かどうか判定する（ステップＳ３０３）。操作要求が公開解除操作であれば、公開状態操作部１３は、操作対象のホームの未設定ノードが持つ公開先を操作対象ノードに設定する（ステップＳ３０４）。
【０１５６】
ステップＳ３０２またはＳ３０４の処理の後、公開状態操作部１３は、公開設定・解除対応部２１を呼び出す（ステップＳ３０６）。
【０１５７】
ステップＳ３０３の判定において、操作要求が公開解除操作でなければ、公開状態操作部１３は、エラーを通知する（ステップＳ３０５）。
【０１５８】
具体例を用いて公開状態操作部１３の動作を詳細に説明する。
【０１５９】
図３３には、未変更ノードであるノードＮ１３に公開先Ｄを設定する例が示されている。この場合、図１５のステップＳ３０１の判定においてＹｅｓ側に進む。そして、ステップＳ３０２の処理により、公開状態操作部１３はノードＮ１３の公開先として単位ユーザＤを設定し、木構造および公開状態は図３４の状態になる。次に、公開状態操作部１３はステップＳ３０６に進む。
【０１６０】
図３６には、変更起点ノードＮ１６の公開先に単位ユーザＤを追加し、単位ユーザＤ，Ｅ，Ｆとする例が示されている。この場合、図１５のステップＳ３０１の判定でＹｅｓ側に進む。そして、ステップＳ３０２の処理により、公開状態操作部１３はノードＮ１６の公開先を単位ユーザＤ、Ｅ、Ｆとし、木構造および公開状態は図３７の状態になる。次に、公開状態操作部１３はステップＳ３０６に進む。
【０１６１】
図３９には、変更起点ノードＮ１６の公開先から単位ユーザＦを削除して単位ユーザＥのみにする例が示されている。この場合、図１５のステップＳ３０１の判定でＹｅｓ側に進む。そして、ステップＳ３０２の処理により、公開状態操作部１３はノードＮ１６の公開先を単位ユーザＥとし、木構造および公開状態は図４０の状態になる。そして、公開状態操作部１３はステップＳ３０６に進む。
【０１６２】
図４２には、変更起点ノードＮ１６の公開を解除する例が示されている。この場合、図１５のステップＳ３０１の判定でＮｏ側に進み、ステップＳ３０３の判定でＹｅｓ側に進む。次に、公開状態操作部１３は、ステップＳ３０４の処理において、まず未変更ノードの公開先を取得する。図４２の場合、未変更ノード（Ｎ０、Ｎ１１、Ｎ１２、Ｎ１３、Ｎ１４、Ｎ１５）の公開先は空であり、すなわち公開先がない。そのため、公開情報操作部１３は、空の公開先を取得し、それをノードＮ１６に設定する。その結果、木構造および公開状態は図４３の状態になる。そして、公開状態操作部１３はステップＳ３０６に進む。
【０１６３】
操作要求が木構造操作である場合について詳細に説明する。
【０１６４】
図１６は、木構造操作部１２の動作を示すフローチャートである。
【０１６５】
木構造操作の要求がアクセス許可判定部６から木構造操作部１２に送られると、木構造操作部１２は、ステップＳ４０１、Ｓ４０３、Ｓ４０５、Ｓ４０７の判定によって、操作要求の場合分けを行う。
【０１６６】
ステップＳ４０１の判定で操作要求が新規作成であれば、木構造操作部１２は、木構造記憶部９内に新しいノードを作成する（ステップＳ４０２）。次に、木構造操作部１２は、新規作成対応部２２を呼び出す（ステップＳ４１０）。
【０１６７】
ステップＳ４０３の判定で操作要求が複製であれば、木構造操作部１２は、指定されたノード群の複製を、複製先として指定されたノードの下に作成する（ステップＳ４０４）。次に、木構造操作部１２は、複製対応部２３を呼び出す（ステップＳ４１１）。
【０１６８】
ステップＳ４０５の判定で操作要求が移動であれば、木構造操作部１２は、指定されたノード群を、移動先として指定されたノードの下に移動する（ステップＳ４０６）。次に、木構造操作部１２は、移動対応部２４を呼び出す（ステップＳ４１２）。
【０１６９】
ステップＳ４０７の判定で操作要求が削除であれば、木構造操作部１２は、指定されたノードをルートとする最大部分木を削除する（ステップＳ４０８）。
【０１７０】
操作要求が前述のいずれでもなければ、木構造操作部１２は、エラーを通知する（ステップＳ４０９）。
【０１７１】
具体例を用いて木構造操作部１２の動作を詳細に説明する。
【０１７２】
図２２には、ノードＮ２０の下に新しいノードＮ２１を作成する例が示されている。この場合、図１６のステップＳ４０２の処理によりノードＮ２１がノードＮ２０の下に作成され、木構造および公開状態は図２３の状態になる。次に、木構造操作部１２はステップＳ４１０で新規作成対応部２２を呼び出す。
【０１７３】
図２５には、ノードＮ１３、Ｎ１４、Ｎ１５の複製をノードＮ２０の下に作る例が示されている。この場合、図１６のステップＳ４０４の処理によりノードＮ２０の下に複製されたノードＮ２２、Ｎ２３、Ｎ２４が作成され、木構造および公開状態は図２６の状態になる。次に、木構造操作部１２は、ステップＳ４１１で複製対応部２３を呼び出す。
【０１７４】
図２８には、ノードＮ１３、Ｎ１４、Ｎ１５をノードＮ２０の下に移動する例が示されている。この場合、図１６のステップＳ４０６で、ノードＮ１３、Ｎ１４、Ｎ１５がノードＮ２０の下に移動され、木構造および公開状態は図２９の状態になる。次に、木構造操作部１２は、ステップＳ４１２で移動対応部２４を呼び出す。
【０１７５】
図３１では、ノードＮ１８を削除する例が示されている。この場合、図１６のステップＳ４０８で、ノードＮ１８をルートとする最大部分木に属するノード、すなわちノードＮ１８、Ｎ１９、Ｎ２０が削除され、木構造および公開状態は図３２の状態になる。
【０１７６】
図１７は、公開設定・解除対応部２１の動作を示すフローチャートである。
【０１７７】
公開設定・解除対応部２１は、呼び出されると、操作対象ノードをルートとする最大部分木に属するノードのうち、操作対象ノードを除いたもの全てに対して、操作対象ノードが保持する公開先を設定する（ステップＳ５０１）。
【０１７８】
具体例を用いて公開設定・解除対応部２１の動作を詳細に説明する。
【０１７９】
上述したように、図３３には、未変更ノードであるノードＮ１３に公開先として単位ユーザＤを設定する例が示されている。公開状態操作部１３による処理が行われると、木構造および公開状態は図３４の状態になっている。
【０１８０】
ここで、公開設定・解除対応部２１が、ステップＳ５０１の処理により、ノードＮ１３に設定されている公開先の単位ユーザＤをノードＮ１４とＮ１５に設定すると、木構造および公開状態は図３５の状態になる。
【０１８１】
上述したように、図３６には、変更起点ノードＮ１６の公開先に単位ユーザＤを追加して単位ユーザＤ、Ｅ、Ｆとする例が示されている。公開状態操作部１３による処理が行われると、木構造および公開状態は図３７の状態になる。
【０１８２】
ここで、公開設定・解除対応部２１が、ステップＳ５０１の処理により、ノード１６に設定されている公開先の単位ユーザＤ、Ｅ、ＦをノードＮ１７、Ｎ１８、Ｎ１９、Ｎ２０に設定すると、木構造および公開状態は図３８の状態になる。
【０１８３】
上述したように、図３９には、変更起点ノードＮ１６の公開先から単位ユーザＦを削除して単位ユーザＥのみにする例が示されている。公開状態操作部１３による処理が行われると、木構造および公開状態は図４０の状態になる。
【０１８４】
ここで、公開設定・解除対応部２１が、ステップＳ５０１の処理により、ノードＮ１６に設定されている公開先の単位ユーザＥをノードＮ１７、Ｎ１８、Ｎ１９、Ｎ２０に設定すると、木構造および公開状態は図４１の状態になる。
【０１８５】
上述したように、図４２には、変更起点ノードＮ１６の公開を解除する例が示されている。公開状態操作部１３による処理が行われると、木構造および公開状態は図４３の状態になる。
【０１８６】
ここで、公開設定・解除対応部２１が、ステップ５０１の処理により、ノードＮ１６に設定されている空の公開先をノードＮ１７、Ｎ１８、Ｎ１９、Ｎ２０に設定すると、木構造および公開状態は図４４の状態になる。
【０１８７】
図１８は、新規作成対応部２２の動作を示すフローチャートである。
【０１８８】
新規作成対応部２２は、呼び出されると、まず、新規に作成したノードの親ノードの公開先を読み出す（ステップＳ６０１）。次に、新規作成対応部２２は、その読み出した公開先を新規に作成したノードに設定する（ステップＳ６０２）。
【０１８９】
具体例を用いて新規作成対応部２２の動作を詳細に説明する。
【０１９０】
上述したように図２２には、ノードＮ２０の下に子供としてノードＮ２１を作成する例が示されている。木構造操作部１２による処理が行われると、木構造および公開状態は図２３に示す状態になる。
【０１９１】
ここで、新規作成対応部２２が、ステップＳ６０１の処理によりノードＮ２０の公開先である単位ユーザＥ、Ｆを読み出し、ステップＳ６０２の処理によりノードＮ２１に設定すると、木構造および公開状態は図２４の状態になる。
【０１９２】
図１９は、複製対応部２３の動作を示すフローチャートである。
【０１９３】
複製対応部２３は、呼び出されると、まず、複製操作によって作成されたノード群のルートノードを見つけ、その親ノードの公開先を読み出す（ステップＳ７０１）。次に、複製対応部２３は、その公開先を、複製操作によって作成されたノード群の各ノードに設定する（ステップＳ７０２）。
【０１９４】
具体例を用いて複製対応部２３の動作を詳細に説明する。
【０１９５】
上述したように、図２５には、ノードＮ１３をルートとする最大部分木（すなわちノードＮ１３、Ｎ１４、Ｎ１５）を複製してノードＮ２２、Ｎ２３、Ｎ２４を作成し、ノードＮ２０の下に配置する例が示されている。木構造操作部１２による処理が行われると、木構造および公開状態は図２６の状態になる。
【０１９６】
ここで、複製対応部２３が、ステップＳ７０１の処理によりノードＮ２０の公開先である単位ユーザＥ、Ｆを読み出し、ステップＳ７０２の処理によりノードＮ２２、Ｎ２３、Ｎ２４に設定すると、木構造および公開状態は図２７の状態になる。
【０１９７】
図２０は、移動対応部２４の動作を示すフローチャートである。
【０１９８】
移動対応部２４は、呼び出されると、まず、移動先ノードが変更済みノードであるか否か判定する（ステップＳ８０１）。移動先ノードが変更済みノードであれば、移動対応部２４は、サブルーチンＡを呼び出す（ステップＳ８０４）。
【０１９９】
移動先ノードが変更済みノードでなければ、移動対応部２４は、移動対象ノード群の公開状況によって、ケース１〜４に場合分けする（ステップＳ８０２）。ケース１は、移動対象ノード群の全てのノードが未変更ノードの場合である。ケース２は、移動対象ノード群は、ルートが未変更ノードであるが、変更済みノードを含む場合である。ケース３は、移動対象ノード群のルートが変更起点ノードの場合である。ケース４は、移動対象ノード群は、ルートが変更済みノードでありかつ変更起点ノードでない場合である。
【０２００】
移動対応部２４は、ケースに応じて、サブルーチンＡの呼び出しの有無を決定し、必要に応じてサブルーチンＡを呼び出す（Ｓ８０３）。本実施形態では、ケース４の場合のみサブルーチンＡを呼び出している。
【０２０１】
サブルーチンＡでは、移動対応部２４は、まず、移動先ノードの公開先を読み出す（ステップＳ８１０）。次に、移動対応部２４は、移動対象の全てのノードにステップＳ８１０で読み出された公開先を設定する（ステップＳ８１１）。
【０２０２】
なお、ここでは、ケース４の場合、サブルーチンＡを呼び出し、移動対象ノード群の公開先を移動先ノードと一致させることとしたが、設計ポリシーによって他の処理も考えられる。移動対象ノード群の公開先を維持することとしてもよく、また、維持するか、移動先ノードと一致させるかをユーザに問い合わせることとしても良い。
【０２０３】
また、ここでは、ケース３の場合、サブルーチンＡを呼び出さず、公開先を維持することとしたが、設計ポリシーによって他の処理も考えられる。移動先ノードと一致させることとしてもよく、また、維持するか、移動先ノードと一致させるかをユーザに問い合わせることとしても良い。
【０２０４】
また、ここでは、ケース２の場合、サブルーチンＡを呼び出さず、公開先を維持することとしたが、移動対象ノード群に含まれる全てのノードの公開先を移動先ノードと一致させてもよく、また、維持するか、移動先ノードと一致させるかをユーザに問い合わせても良い。
【０２０５】
具体例を用いて移動対応部２４の動作を詳細に説明する。
【０２０６】
上述したように、図２８には、ノードＮ１３、Ｎ１４、Ｎ１５をノードＮ２０の下に移動する例が示されている。木構造操作部１２による処理が行われると、ノードＮ１３、Ｎ１４、Ｎ１５がノードＮ２０の下に移動され、木構造および公開状態は図２９の状態になる。
【０２０７】
ここで、移動対応部２４による図２０のステップＳ８０４の処理により、木構造および公開状態は図３０のようになる。
【０２０８】
図４５は、移動対象ノード群の公開状態による場合分けを示す図である。この場合分けは、図２０のステップＳ８０２におけるケース１〜４に対応する。図４５において、移動対象のノードは、ノードＮＸをルートとする最大部分木である。移動対象ノード群の公開状況は、（ａ）〜（ｄ）の４つのケースに場合分けされる。
【０２０９】
（ａ）は、移動対象ノード群のノードが全て未変更ノードの場合である。（ｂ）は、移動対象ノード群のルートが未変更ノードだが、移動対象ノード群の内部に変更済みノードが含まれる場合である。（ｃ）は、移動対象ノード群のルートノードが変更起点ノードである場合である。（ｄ）は、移動対象ノード群のルートが変更済みノードであり、かつ変更起点ノードでない場合である。なお、図４５（ｂ）には、変更済みノードの部分木が１つ（すなわちノードＮＹをルートとする部分木）ある場合が例示されているが、複数個であってもかまわない。
【０２１０】
図４６は、移動先ノードの公開状態による場合分けを示す図である。この場合分けは、図２０のステップＳ８０１における判定に対応する。図４６において、移動先ノードはノードＮＴである。移動先ノードの公開状況は、（ｘ）と（ｙ）の２つのケースに場合分けされる。
【０２１１】
（ｘ）は、移動先ノードが未変更ノードである場合である。（ｙ）は、移動先ノードが変更済みノードである場合である。
【０２１２】
（ｙ）は、さらに、移動先ノードが変更起点ノードではない場合（ｙ−１）と、変更起点ノードである場合（ｙ−２）の２つを含む。しかし、これら２つのケースで、移動対応部２４のの処理に区別がないので、ここでは同一視している。
【０２１３】
移動対象ノード群による場合分けが４ケースであり、移動先ノードによる場合分けが２ケースであるので、移動操作の場合分けは８（４×２）ケースに場合分けされることとなる。これをケース１〜８と呼ぶことにする。
【０２１４】
以下、各ケースでの移動対応部２４の処理について説明する。
【０２１５】
図４７は、ケース１を模式的に示す図である。ケース１では、移動対象が（ａ）であり、移動先が（ｘ）である。図４７（１）は移動前の状態を表す。図４７（２）は木構造操作部１２での処理が終わった段階での状態を示す。図４７（３）は移動対応部２４での処理が終わった段階での状態を示す。移動対応部２４は、図２０のステップＳ８０２においてケース１に進むので、公開先設定作業であるサブルーチンＡを行わない。
【０２１６】
図４８は、ケース２を模式的に示す図である。ケース２では、移動対象が（ｂ）であり、移動先が（ｘ）である。移動対応部２４は、図２０のステップＳ８０２においてケース２に進むので、公開先設定作業であるサブルーチンＡは行わない。
【０２１７】
図４９は、ケース３を模式的に示す図である。ケース３では、移動対象が（ｃ）であり、移動先が（ｘ）である。移動対応部２４は、図２０のステップＳ８０２においてケース３に進むので、公開先設定作業であるステップサブルーチンＡは行わない。
【０２１８】
図５０は、ケース４を模式的に示す図である。ケース４では、移動対象が（ｄ）であり、移動先が（ｘ）である。移動対応部２４は、図２０のステップＳ８０２においてケース４に進むので、公開先設定作業であるサブルーチンＡを行う（ステップＳ８０３）。その結果、移動したノードは全て未変更ノードとなる。
【０２１９】
図５１は、ケース５を模式的に示す図である。ケース５では、移動対象が（ａ）であり、移動先が（ｙ）である。移動対応部２４は、図２０のステップＳ８０１でＹｅｓ側に進むので、サブルーチンＡを行う。その結果、移動した全てのノードにノードＮＴと同じ公開先が設定される。
【０２２０】
図５２は、ケース６を模式的に示す図である。ケース６では、移動対象が（ｂ）であり、移動先が（ｙ）である。移動対応部２４は、図２０のステップＳ８０１でＹｅｓ側に進むので、サブルーチンＡを行う。その結果、移動した全てのノードにノードＮＴと同じ公開先が設定される。
【０２２１】
図５３は、ケース７を模式的に示す図である。ケース７では、移動対象が（ｃ）であり、移動先が（ｙ）である。移動対応部２４は、図２０のステップＳ８０１でＹｅｓ側に進むので、サブルーチンＡを行う。その結果、移動した全てのノードにノードＮＴと同じ公開先が設定される。
【０２２２】
図５４は、ケース８を模式的に示す図である。ケース８では、移動対象が（ｄ）であり、移動先が（ｙ）である。移動対応部２４は、図２０のステップＳ８０１でＹｅｓ側に進むので、サブルーチンＡを行う。その結果、移動した全てのノードにノードＮＴと同じ公開先が設定される。
【０２２３】
図５５は、各ケースにおける移動対応部２４の処理を示す一覧表である。
【０２２４】
なお、ケース２、３、４の場合の処理内容は、この例が唯一選択可能な処理ではなく、システム設計者のポリシーによって別の処理とすることも考えられる。
【０２２５】
例えば、ケース３の場合、図５５では処理無しとなっている。しかし、未変更のノードの下に移動するのだから、全ての移動対象ノードを未変更ノードにするのが自然であるという設計ポリシーに基づき、移動先の公開先を全ての移動対象ノードに設定することも考えられる。そのためには、図２０のフローチャートを、ステップＳ８０２のケース３でサブルーチンＡを呼び出すように変更すればよい。また、維持するか、移動先ノードと一致させるかをユーザに問い合わせても良い。
【０２２６】
以上説明したように、本実施形態の情報共有システムによれば、木構造のルートノードからリーフノードに至る全てのパスにおいて公開先の変化が最大１回までであるという条件が常に満たされることになる。これは、実行可否判定部１１が、この条件に反する操作を拒否すると共に、制約維持部２０が、木構造の操作時や公開状態の変更時に、この条件を満たすように、木構造のノードに対して公開先の設定や変更を行うことによって実現されている。
【０２２７】
したがって、ユーザは、全ノードの公開状態を調べなくても、ルートノードから各リーフノードに至るパスの各々において、最大１つしかない変更起点ノードの有無および位置を調べるだけで、木構造全体の公開状態を把握することができる。なお、各パスにおける変更起点ノードの数が最大１つとしたが、これが２つとなると、木構造内の公開状態が複雑化し、ユーザが容易に把握できなくなる。また、ユーザは、変更起点ノードの有無および位置を調べれば、木構造の操作や公開状態の操作を行ったときにノードの公開状態がどう変化するかを容易に判断することができる。
【０２２８】
なお、本実施形態において具体的には、操作対象ノードが未変更か、変更起点となっているときに、操作対象ノードの公開状態の設定を可能とする。また、操作対象ノードが変更起点となっているときに、操作対象ノードの公開状態の解除を可能とする。また、ホームルートノードの公開状態の操作を禁止する。また、公開状態の設定の際、操作対象ノードとそれをルートとする最大部分木の全ノードの公開状態を同じ状態に設定する。また、公開状態の解除の際、操作対象ノードとそれをルートとする最大部分木の全ノードの公開状態を全て解除することにより上述した条件が満たされる。また、要求応じて新規にノードが作成され、そのノードの公開状態を親ノードと一致させる。また、要求に応じてノード群の複製が作成され、複製されたノード群に含まれる全ての公開状態を、複製先であるルートノードの親ノードと一致させる。
【０２２９】
これらのことにより、上述した条件を常時満たすことが可能となり、ユーザによる現状の公開状態や、所望の操作後の公開状態の把握が容易となっている。
【０２３０】
また、本実施形態において具体的には、要求に応じてノード群が移動され、移動されたノード群に含まれる全ての公開状態が、移動先ノードの公開状態および／または移動されたノード群に含まれるノードの公開状態により設計ポリシーに応じた好ましい処理を行う。また、移動されたノード群に含まれるノードの公開状態が、移動先ノードの公開状態および／または移動されたノード群に含まれるノードの公開状態により、維持されるか、移動先ノードと一致させるか、ユーザ選択されるかの設計ポリシーに応じた好ましい処理を行う。
【０２３１】
なお、本実施形態の情報共有システムとして、図１に示した様に、各単位ユーザのホームがそれぞれに存在するファイル管理構成を例示したが、本発明はそれに限定されない。本発明は、各単位ユーザの各々の所有する情報が木構造で保持され、管理されていれば良く、各単位ユーザのホームが、さらに大きな全体木の部分をなしていてもよい。
【０２３２】
本発明の他の実施形態について図面を参照して説明する。
【０２３３】
図５６は、本発明の他の実施形態の情報共有システムにより管理される各ノードのデータ構造の一例を示す図である。図５６では、図９で示されたデータ構造に、「変更状態種別」が追加されている。変更状態種別とは、ホームルートノードから自ノードの間で公開先が変化しているか否か、また変化している場合に、親ノードと自ノードの間で変化しているか否かを示す。変更状態種別には、「未変更ノード」、「変更起点ノード」、「変更継続ノード」の３つの種別がある。「変更継続ノード」は、変更起点ノードでない、変更済みノードである。
【０２３４】
図５７は、図５６に示したデータ構造を用いた場合に、ノードに格納されている情報の一例を示す図である。図５７には、図２のノードＮ１６に格納されている情報の例が示されている。
【０２３５】
本実施形態によれば、ノードに変更状態種別の情報が含まれているので、それを参照すれば、そのノードが、未変更ノードか、変更起点ノードか、あるいは変更継続ノードかを容易に判断することができる。
【０２３６】
本発明のさらに他の実施形態について図面を参照して説明する。
【０２３７】
図５８は、本発明のさらに他の実施形態の情報共有システムの構成を示すブロック図である。図５８を参照すると、本実施形態の情報共有システムのデータ処理装置１５は、ショートカット管理部１４を有する点で図８のデータ処理装置１０と異なる。
【０２３８】
ショートカット管理部１４は、ノードを指定してそれに対するショートカットを作成する機能と、ショートカットを指定されると、参照先のノードを検索する機能を有する。
【０２３９】
ショートカットのノードは、参照先となる他のノードを呼び出すノードであり、子供を持てないため、木構造内で必ずリーフノードになるという点を除き、通常のノードとまったく同じように扱うことができる。したがって、図８の実施形態のデータ処理装置１０により実行可能な全ての処理は、図５８の実施形態のデータ処理装置１５により実行可能である。
【０２４０】
図５９は、ショートカットを用いた場合のノードの公開状況の一例を示す図である。図６０は、図５９に示された公開状況を簡略化して示した図である。
【０２４１】
図５８の実施形態のデータ処理装置１５は、さらに、図５９、図６０に示すようにショートカットを用いることにより、木構造のルートノードからリーフノードに至る全てのパスにおいて公開先の変化が最大１回までという条件を満たしたままで、図６１のように公開状態が入れ子になった木構造を単位ユーザに見せることができる。
【０２４２】
本発明のさらに他の実施形態について図面を参照して説明する。
【０２４３】
図６２は、本発明のさらに他の実施形態の情報共有システムの構成を示す図である。図６２を参照すると、本実施形態のデータ処理装置１６は記録媒体１７と接続可能なコンピュータである。この記録媒体１７は磁気ディスク、半導体メモリその他の記録媒体であり、情報共有プログラムが記録されている。
【０２４４】
情報共有プログラムは記録媒体１７からデータ処理装置１６に読み込まれる。データ処理装置１６は情報共有プログラムを実行することにより、図８あるいは図５８に示したデータ処理装置と同じ処理を行う。
【０２４５】
【発明の効果】
本発明によれば、公開状態操作の際、条件を満たして実行できる場合にのみ条件を満たすように操作を実行し、また、木構造操作の際、条件を満たすように操作を実行するので、木構造のホームルートノードからリーフノードに至る全てのパスにおいて公開状態の変化が最大１回までであるという条件が常に満たされ、ユーザは、全ノードの公開状態を調べなくても、ルートノードから各リーフノードに至るパスの各々において、最大１つしかない変更起点ノードの有無および位置を調べるだけで、木構造全体の公開状態を把握することができる。また、ユーザは、変更起点ノードの有無および位置を調べれば、木構造の操作や公開状態の操作を行ったときにノードの公開状態がどう変化するかを容易に判断することができる。
【０２４６】
また、ノード毎に変更状態種別の情報が付与されており、コンピュータはそれを参照するので、木構造における公開状態の変化の様子を容易に把握することができ、公開状態操作の実行の可否の判断や、木構造操作を迅速かつ容易に行うことができる。
【０２４７】
また、木構造のホームルートノードからリーフノードに至る全てのパスにおいて公開状態の変化が最大１回までであるという条件を満たしながら、公開状態が入れ子になった木構造を単位ユーザに見せることができるので、ユーザによる公開状態の把握の容易性と、ノードの公開の自由度を両立させることができる。
【図面の簡単な説明】
【図１】本発明の対象となる木構造で管理された情報の一例を示す図である。
【図２】本発明において課された条件を満たす木構造の一例を示す図である。
【図３】図２で示した木構造を複数の領域に分けて簡略化し、各領域のノードの公開先を分かりやすく示した図である。
【図４】本発明において課された条件を満たす木構造の他の例を示す図である。
【図５】図４に示された情報の公開状況を簡略化して示した図である。
【図６】本発明の条件を満たす木構造の一例を領域分けした図である。
【図７】本発明の条件を満たす木構造の他の例を領域分けした図である。
【図８】本発明の一実施形態の情報共有システムの構成を示すブロック図である。
【図９】木構造を構成する各ノードのデータ構造を示す図である。
【図１０】所有者アクセス許可情報の一例を示す図である。
【図１１】公開先アクセス許可情報の一例を示す図である。
【図１２】ノードに格納されている情報の一例を示す図である。
【図１３】アクセス許可判定部の動作を示すフローチャートである。
【図１４】実行可否判定部の動作を示すフローチャートである。
【図１５】公開状態操作部１３の動作を示すフローチャートである。
【図１６】木構造操作部の動作を示すフローチャートである。
【図１７】公開設定・解除対応部の動作を示すフローチャートである。
【図１８】新規作成対応部の動作を示すフローチャートである。
【図１９】複製対応部の動作を示すフローチャートである。
【図２０】移動対応部の動作を示すフローチャートである。
【図２１】コンテンツを書き込む操作を示す図である。
【図２２】新規作成操作を示す図である。
【図２３】新規作成操作において、新規ノードが配置された状態を示す図である。
【図２４】新規作成操作において、作成されたノードに公開先が設定された状態を示す図である。
【図２５】複製操作を示す図である。
【図２６】複製操作において、複製されたノードが配置された状態を示す図である。
【図２７】複製操作において、複製されたノードに公開先が設定された状態を示す図である。
【図２８】移動操作を示す図である。
【図２９】移動操作において、ノードが移動された状態を示す図である。
【図３０】移動操作において、移動されたノードに公開先が設定された状態を示す図である。
【図３１】削除操作を示す図である。
【図３２】削除操作において、ノードが削除された状態を示す図である。
【図３３】設定操作を示す図である。
【図３４】設定操作において、操作対象ノードに公開先が設定された状態を示す図である。
【図３５】設定操作において、操作対象ノードをルートとする最大部分木に含まれるノードの公開先を操作対象ノードと一致させた状態を示す図である。
【図３６】公開先を追加する操作を示す図である。
【図３７】公開先を追加する操作において、操作対象ノードに公開先を追加した状態を示す図である。
【図３８】公開先を追加する操作において、操作対象ノードをルートとする最大部分木に含まれるノードの公開先を操作対象ノードと一致させた状態を示す図である。
【図３９】公開先を削除する操作を示す図である。
【図４０】公開先を削除する操作において、操作対象ノードから公開先を削除した状態を示す図である。
【図４１】公開先を削除する操作において、操作対象ノードをルートとする最大部分木に含まれるノードの公開先を操作対象ノードと一致させた状態を示す図である。
【図４２】公開を解除する操作を示す図である。
【図４３】公開を解除する操作において、操作対象ノードの公開を解除した状態を示す図である。
【図４４】公開を解除する操作において、操作対象ノードをルートとする最大部分木に含まれるノードの公開先を操作対象ノードと一致させた状態を示す図である。
【図４５】移動操作における移動対象ノード群の公開状態による場合分けを示す図である。
【図４６】移動操作における移動先ノードの公開状態による場合分けを示す図である。
【図４７】移動操作におけるケース１を模式的に示す図である。
【図４８】移動操作におけるケース２を模式的に示す図である。
【図４９】移動操作におけるケース３を模式的に示す図である。
【図５０】移動操作におけるケース４を模式的に示す図である。
【図５１】移動操作におけるケース５を模式的に示す図である。
【図５２】移動操作におけるケース６を模式的に示す図である。
【図５３】移動操作におけるケース７を模式的に示す図である。
【図５４】移動操作におけるケース８を模式的に示す図である。
【図５５】移動操作の各ケースにおける移動対応部の処理を示す一覧表である。
【図５６】本発明の他の実施形態の情報共有システムにより管理される各ノードのデータ構造の一例を示す図である。
【図５７】図５６に示したデータ構造を用いた場合に、ノードに格納されている情報の一例を示す図である。
【図５８】本発明のさらに他の実施形態の情報共有システムの構成を示すブロック図である。
【図５９】ショートカットを用いた場合のノードの公開状況の一例を示す図である。
【図６０】図５９に示された公開状況を簡略化して示した図である。
【図６１】公開状態が入れ子になった木構造の一例を示す図である。
【図６２】本発明のさらに他の実施形態の情報共有システムの構成を示す図である。
【図６３】従来の木構造で保持される情報の一例を示す図である。
【図６４】従来の情報共有システムの構成を示すブロック図である。
【図６５】木構造を構成する各ノードのデータ構造の一例を示す図である。
【図６６】所有者アクセス許可情報の一例を示す図である。
【図６７】公開先アクセス許可情報の一例を示す図である。
【図６８】図６４に示されたアクセス許可判定部の動作を示すフローチャートである。
【図６９】図６４に示された公開状態操作部の動作を示すフローチャートである。
【図７０】図６４に示された木構造操作部の動作を示すフローチャートである。
【図７１】従来の情報共有システムに管理される木構造の各ノードの公開状態の一例を示す図である。
【図７２】図７１で示した木構造を領域に分けて簡略化し、各領域のノードの公開先を分かりやすく示した図である。
【図７３】継承機能を用いた情報共有システムにより管理される木構造の一例を示す図である。
【符号の説明】
１    入力装置
２    出力装置
４    記憶装置
５    アプリケーション実行部
６    アクセス許可判定部
９    木構造記憶部
１０    データ処理装置
１１    実行可否判定部
１２    木構造操作部
１３    公開状態操作部
１４    ショートカット管理部
１６    データ処理装置
１７    記録媒体
２０    制約維持部
２１    公開設定・解除対応部
２２    新規作成対応部
２３    複製対応部
２４    移動対応部
Ｓ１０１〜Ｓ１０４、Ｓ２００〜Ｓ２１０、Ｓ３０１〜Ｓ３０６、Ｓ４０１〜Ｓ４１２、Ｓ５０１、Ｓ６０１、Ｓ６０２、Ｓ７０１、Ｓ７０３、Ｓ８０１〜Ｓ８０４、Ｓ８１０、Ｓ８１１    ステップ
【図１】
2004234238.tif 000003
【図２】
2004234238.tif 000004
【図３】
2004234238.tif 000005
【図４】
2004234238.tif 000006
【図５】
2004234238.tif 000007
【図６】
2004234238.tif 000008
【図７】
2004234238.tif 000009
【図８】
2004234238.tif 000010
【図９】
2004234238.tif 000011
【図１０】
2004234238.tif 000012
【図１１】
2004234238.tif 000013
【図１２】
2004234238.tif 000014
【図１３】
2004234238.tif 000015
【図１４】
2004234238.tif 000016
【図１５】
2004234238.tif 000017
【図１６】
2004234238.tif 000018
【図１７】
2004234238.tif 000019
【図１８】
2004234238.tif 000020
【図１９】
2004234238.tif 000021
【図２０】
2004234238.tif 000022
【図２１】
2004234238.tif 000023
【図２２】
2004234238.tif 000024
【図２３】
2004234238.tif 000025
【図２４】
2004234238.tif 000026
【図２５】
2004234238.tif 000027
【図２６】
2004234238.tif 000028
【図２７】
2004234238.tif 000029
【図２８】
2004234238.tif 000030
【図２９】
2004234238.tif 000031
【図３０】
2004234238.tif 000032
【図３１】
2004234238.tif 000033
【図３２】
2004234238.tif 000034
【図３３】
2004234238.tif 000035
【図３４】
2004234238.tif 000036
【図３５】
2004234238.tif 000037
【図３６】
2004234238.tif 000038
【図３７】
2004234238.tif 000039
【図３８】
2004234238.tif 000040
【図３９】
2004234238.tif 000041
【図４０】
2004234238.tif 000042
【図４１】
2004234238.tif 000043
【図４２】
2004234238.tif 000044
【図４３】
2004234238.tif 000045
【図４４】
2004234238.tif 000046
【図４５】
2004234238.tif 000047
【図４６】
2004234238.tif 000048
【図４７】
2004234238.tif 000049
【図４８】
2004234238.tif 000050
【図４９】
2004234238.tif 000051
【図５０】
2004234238.tif 000052
【図５１】
2004234238.tif 000053
【図５２】
2004234238.tif 000054
【図５３】
2004234238.tif 000055
【図５４】
2004234238.tif 000056
【図５５】
2004234238.tif 000057
【図５６】
2004234238.tif 000058
【図５７】
2004234238.tif 000059
【図５８】
2004234238.tif 000060
【図５９】
2004234238.tif 000061
【図６０】
2004234238.tif 000062
【図６１】
2004234238.tif 000063
【図６２】
2004234238.tif 000064
【図６３】
2004234238.tif 000065
【図６４】
2004234238.tif 000066
【図６５】
2004234238.tif 000067
【図６６】
2004234238.tif 000068
【図６７】
2004234238.tif 000069
【図６８】
2004234238.tif 000070
【図６９】
2004234238.tif 000071
【図７０】
2004234238.tif 000072
【図７１】
2004234238.tif 000073
【図７２】
2004234238.tif 000074
【図７３】
2004234238.tif 000075