(57)【要約】【課題】多数のファイルを保持する場合でも、更新したファイルの数に比べて更新処理を重くせずに、比較回数の増大を抑制する。【解決手段】ファイル比較部１４が、サーバ側ハッシュツリー情報１２ａとクライアント側ハッシュツリー情報２２ａとにそれぞれ含まれるハッシュ値を互いに比較し、前方走査により、各ハッシュ値が互いに一致する場合には当該各ハッシュ値のノードよりも下の階層の比較処理をスキップする。このため、保持するファイルの個数に比べて更新したファイルの個数が少ない場合には、比較回数を大幅に低減することができる。また、更新処理を１個のファイル単位で実行するので、更新したファイルの数に比べて更新処理が重くならない。従って、上記課題を解決できる。【選択図】      図１
2008250903.tif 000002
【特許請求の範囲】
【請求項１】
ファイルを更新可能なサーバ装置と、前記サーバ装置により更新されたファイルをコピーして更新するクライアント装置とを備えたファイル更新装置であって、
前記サーバ装置は、
互いに木構造の階層関係を構成する複数のディレクトリ情報及びファイルが記憶されたサーバ側ファイルリポジトリ手段と、
前記サーバ側ファイルリポジトリ手段内の複数のディレクトリ情報及びファイルに基づいて、前記木構造と同一の木構造の階層関係を構成する複数のハッシュ値を有するサーバ側ハッシュツリー情報を生成するサーバ側ハッシュツリー生成手段と、
前記クライアント装置から受けたハッシュツリー送信要求に基づいて、前記サーバ側ハッシュツリー情報を前記クライアント装置に送信するツリー情報送信手段と、
前記クライアント装置から受けた更新対象ファイル送信要求に基づいて、前記サーバ側ファイルリポジトリ手段内の該当するファイルを前記クライアント装置に送信するファイル送信手段とを備えており、
前記クライアント装置は、
互いに木構造の階層関係を構成する複数のディレクトリ情報及びファイルが記憶されたクライアント側ファイルリポジトリ手段と、
前記クライアント側ファイルリポジトリ手段内の複数のディレクトリ情報及びファイルに基づいて、前記木構造と同一の木構造の階層関係を構成する複数のハッシュ値を有するクライアント側ハッシュツリー情報を生成するクライアント側ハッシュツリー生成手段と、
前記ハッシュツリー送信要求を前記サーバ装置に送信し、当該サーバ装置からサーバ側ハッシュツリー情報を受信するツリー情報受信手段と、
このサーバ側ハッシュツリー情報と前記クライアント側ハッシュツリー情報とにそれぞれ含まれる各ハッシュ値を上位側から互いに比較し、前記各ハッシュ値が互いに一致する場合には当該各ハッシュ値よりも下位側のハッシュ値の比較をスキップするツリー情報比較手段と、
前記比較の結果、ハッシュ値が相違する更新対象ファイルのファイル名を列挙した更新ファイルリストを作成する更新リスト作成手段と、
前記更新ファイルリスト内のファイル名を指定した更新ファイル送信要求を前記サーバ装置に送信する手段と、
前記サーバ装置から受けた更新対象のファイルを前記クライアント側ファイルリポジトリ手段にコピーして更新するファイルコピー手段と
を備えたことを特徴とするファイル更新装置。
【請求項２】
請求項１に記載のファイル更新装置において、
前記サーバ装置は、
前記サーバ側ファイルリポジトリ手段内のファイルを更新した後、前記サーバ側ハッシュツリー生成手段を起動する手段と、
前記起動されたサーバ側ハッシュツリー生成手段により生成されたサーバ側ハッシュツリー情報が記憶されるサーバ側ハッシュツリーリポジトリ手段と
を備えており、
前記ツリー情報送信手段は、前記ハッシュツリー送信要求に基づいて、前記サーバ側ハッシュツリーリポジトリ手段内のサーバ側ハッシュツリー情報を前記クライアント装置に送信することを特徴とするファイル更新装置。
【請求項３】
ファイルを更新可能なサーバ装置と、前記サーバ装置により更新されたファイルをコピーして更新するクライアント装置とを備えたファイル更新装置のプログラムであって、
前記サーバ装置のコンピュータを、
互いに木構造の階層関係を構成する複数のディレクトリ情報及びファイルをサーバ側ファイルリポジトリ装置に書き込む手段、
前記サーバ側ファイルリポジトリ装置内の複数のディレクトリ情報及びファイルに基づいて、前記木構造と同一の木構造の階層関係を構成する複数のハッシュ値を有するサーバ側ハッシュツリー情報を生成するサーバ側ハッシュツリー生成手段、
前記クライアント装置から受けたハッシュツリー送信要求に基づいて、前記サーバ側ハッシュツリー情報を前記クライアント装置に送信するツリー情報送信手段、
前記クライアント装置から受けた更新対象ファイル送信要求に基づいて、前記サーバ側ファイルリポジトリ装置内の該当するファイルを前記クライアント装置に送信するファイル送信手段として機能させ、
前記クライアント装置のコンピュータを、
互いに木構造の階層関係を構成する複数のディレクトリ情報及びファイルをクライアント側ファイルリポジトリ装置に書き込む手段、
前記クライアント側ファイルリポジトリ装置内の複数のディレクトリ情報及びファイルに基づいて、前記木構造と同一の木構造の階層関係を構成する複数のハッシュ値を有するクライアント側ハッシュツリー情報を生成するクライアント側ハッシュツリー生成手段、
前記ハッシュツリー送信要求を前記サーバ装置に送信し、当該サーバ装置からサーバ側ハッシュツリー情報を受信するツリー情報受信手段、
このサーバ側ハッシュツリー情報と前記クライアント側ハッシュツリー情報とにそれぞれ含まれる各ハッシュ値を上位側から互いに比較し、前記各ハッシュ値が互いに一致する場合には当該各ハッシュ値よりも下位側のハッシュ値の比較をスキップするツリー情報比較手段、
前記比較の結果、ハッシュ値が相違する更新対象ファイルのファイル名を列挙した更新ファイルリストを作成する更新リスト作成手段、
前記更新ファイルリスト内のファイル名を指定した更新ファイル送信要求を前記サーバ装置に送信する手段、
前記サーバ装置から受けた更新対象のファイルを前記クライアント側ファイルリポジトリ装置にコピーして更新するファイルコピー手段、
として機能させるためのプログラム。
【請求項４】
請求項３に記載のプログラムにおいて、
前記サーバ装置のコンピュータを、
前記サーバ側ファイルリポジトリ装置内のファイルを更新した後、前記サーバ側ハッシュツリー生成手段を起動する手段、
前記起動されたサーバ側ハッシュツリー生成手段により生成されたサーバ側ハッシュツリー情報をサーバ側ハッシュツリーリポジトリ装置に書き込む手段、
として機能させ、
前記ツリー情報送信手段は、前記ハッシュツリー送信要求に基づいて、前記サーバ側ハッシュツリーリポジトリ装置内のサーバ側ハッシュツリー情報を前記クライアント装置に送信する手順を含むプログラム。
【請求項５】
ファイルを更新可能なサーバ装置と、前記サーバ装置により更新されたファイルをコピーして更新するクライアント装置とが実行するファイル更新方法であって、
前記サーバ装置が、互いに木構造の階層関係を構成する複数のディレクトリ情報及びファイルをサーバ側ファイルリポジトリ装置に書き込む工程と、
前記サーバ装置が、前記サーバ側ファイルリポジトリ装置内の複数のディレクトリ情報及びファイルに基づいて、前記木構造と同一の木構造の階層関係を構成する複数のハッシュ値を有するサーバ側ハッシュツリー情報を生成する工程と、
前記クライアント装置が、互いに木構造の階層関係を構成する複数のディレクトリ情報及びファイルをクライアント側ファイルリポジトリ装置に書き込む工程と、
前記クライアント装置が、前記クライアント側ファイルリポジトリ装置内の複数のディレクトリ情報及びファイルに基づいて、前記木構造と同一の木構造の階層関係を構成する複数のハッシュ値を有するクライアント側ハッシュツリー情報を生成する工程と、
前記クライアント装置が、ハッシュツリー送信要求を前記サーバ装置に送信し、当該サーバ装置からサーバ側ハッシュツリー情報を受信する工程と、
前記クライアント装置が、このサーバ側ハッシュツリー情報と前記クライアント側ハッシュツリー情報とにそれぞれ含まれる各ハッシュ値を上位側から互いに比較し、前記各ハッシュ値が互いに一致する場合には当該各ハッシュ値よりも下位側のハッシュ値の比較をスキップする工程と、
前記クライアント装置が、前記比較の結果、ハッシュ値が相違する更新対象ファイルのファイル名を列挙した更新ファイルリストを作成する工程と、
前記クライアント装置が、前記更新ファイルリスト内のファイル名を指定した更新ファイル送信要求を前記サーバ装置に送信する工程と、
前記サーバ装置が、前記クライアント装置から受けた更新対象ファイル送信要求に基づいて、前記サーバ側ファイルリポジトリ装置内の該当するファイルを前記クライアント装置に送信する工程と、
前記クライアント装置が、前記サーバ装置から受けた更新対象のファイルを前記クライアント側ファイルリポジトリ装置にコピーして更新する工程と
を備えたことを特徴とするファイル更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイル更新装置、プログラム及び方法に係り、例えば、多数のファイルを保持する場合でも、更新したファイルの数に比べて更新処理を重くせずに、比較回数の増大を抑制し得るファイル更新装置、プログラム及び方法に関する。
【背景技術】
【０００２】
一般に、互いに通信可能な複数の装置間においては、一方の装置で更新されたファイルを他方の装置に更新する場合がある。この種の公知技術としては、ＵＮＩＸ（登録商標）のｒｓｙｎｃコマンドの如く、ファイルの下位概念であるブロックごとに付与されたハッシュ値を比較することによりファイルが更新されたことを判別し、ファイル全体を比較することなく、変更のあったブロックを更新する方式がある。
【０００３】
この方式は、コンペア・バイ・ハッシュ（compare-by-hash；ハッシュ値による比較）と呼ばれており、変更が全体の７４％以下であれば、ファイル全体を比較して変更のあったファイルを更新する全体更新（Whole file）方式に比べ、有利であることが知られている（例えば、非特許文献１参照）。
【０００４】
しかしながら、コンペア・バイ・ハッシュ方式は、更新対象を特定するために全てのファイルのブロック単位でのハッシュ値を比較する必要があるので、保持するファイルの個数に応じて、比較回数が増大してしまうという不都合がある。例えば、１個当たりｍ個のブロックを要するｎ個のファイルを比較する場合、比較回数はｍ×ｎ回であるので、α個のファイルが増大した場合、比較回数がｍ×α回増大してしまう。仮にｍ＝１としても、α個のファイルが増大した場合にはα回の比較回数が増大してしまう。
【０００５】
また、比較回数の増大を抑制する観点から、ハッシュ値を付与する単位を大きくした場合、比較回数は低減するものの、更新したファイルの数に比べ、更新処理が重くなる不都合が生じる。例えばｐ個のファイルごとにハッシュ値を付与する場合（但し、ｐ≧２）、ｍ＝１の際に比較回数は（ｎ＋α）／ｐ回に低減されるものの、ハッシュ値が不一致となったｐ個のファイルの集合のうちの１個のファイルが更新された場合でもｐ個のファイルの集合を更新する必要があるので、更新したファイルの数に比べて更新処理がｐ倍重くなる不都合が生じる。
【０００６】
まとめると、コンペア・バイ・ハッシュ方式においては、保持するファイル数の増大に応じて比較回数が増大する不都合があり、ハッシュ値を付与する単位をｐ倍大きくして比較回数を１／ｐ倍に低減させると、比較回数と更新負荷とのトレードオフの関係により、更新処理がｐ倍重くなってしまう。
【０００７】
なお、ハッシュ値による比較と更新に関連した先行技術として、例えば特許文献１記載の方式がある。特許文献１には、複数の装置間で過去に送受信したデータとそのハッシュ値とを互いに対応付けて記憶装置に記憶しておき、一方の装置がデータを転送する前に、当該データのハッシュ値（フィンガープリント）と、過去の転送データのハッシュ値とを比較し、両者が同じ値であればハッシュ値を転送する方式が開示されている。転送先の装置では、受けたハッシュ値から対応する過去のデータを記憶装置から読み出すことにより、ネットワークを流れるデータ量を大幅に削減可能となっている。
【０００８】
しかしながら、特許文献１記載の技術は、既に特定されている更新対象（転送するデータ）のハッシュ値を比較する場合の話であるため、更新対象を特定するためにハッシュ値を比較する場合の前述した不都合とは関係がない。
【非特許文献１】Val Henson, Richard Henderson, “Guidelines for Using Compare-by-hash”. http://infohost.nmt.edu/~val/review/hash2.pdf
【特許文献１】特開２００２−２６８９３７号公報、第４５−４６段落
【発明の開示】
【発明が解決しようとする課題】
【０００９】
以上説明したように、従来のコンペア・バイ・ハッシュ方式では、多数のファイルを保持する場合、比較回数が増大する不都合があるか、又は更新したファイルの数に比べて更新処理が重くなる不都合がある。
【００１０】
本発明は上記実情を考慮してなされたもので、多数のファイルを保持する場合でも、更新したファイルの数に比べて更新処理を重くせずに、比較回数の増大を抑制し得るファイル更新装置、プログラム及び方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
第１の発明は、ファイルを更新可能なサーバ装置と、前記サーバ装置により更新されたファイルをコピーして更新するクライアント装置とを備えたファイル更新装置であって、前記サーバ装置としては、互いに木構造の階層関係を構成する複数のディレクトリ情報及びファイルが記憶されたサーバ側ファイルリポジトリ手段と、前記サーバ側ファイルリポジトリ手段内の複数のディレクトリ情報及びファイルに基づいて、前記木構造と同一の木構造の階層関係を構成する複数のハッシュ値を有するサーバ側ハッシュツリー情報を生成するサーバ側ハッシュツリー生成手段と、前記クライアント装置から受けたハッシュツリー送信要求に基づいて、前記サーバ側ハッシュツリー情報を前記クライアント装置に送信するツリー情報送信手段と、前記クライアント装置から受けた更新対象ファイル送信要求に基づいて、前記サーバ側ファイルリポジトリ手段内の該当するファイルを前記クライアント装置に送信するファイル送信手段とを備えており、前記クライアント装置としては、互いに木構造の階層関係を構成する複数のディレクトリ情報及びファイルが記憶されたクライアント側ファイルリポジトリ手段と、前記クライアント側ファイルリポジトリ手段内の複数のディレクトリ情報及びファイルに基づいて、前記木構造と同一の木構造の階層関係を構成する複数のハッシュ値を有するクライアント側ハッシュツリー情報を生成するクライアント側ハッシュツリー生成手段と、前記ハッシュツリー送信要求を前記サーバ装置に送信し、当該サーバ装置からサーバ側ハッシュツリー情報を受信するツリー情報受信手段と、このサーバ側ハッシュツリー情報と前記クライアント側ハッシュツリー情報とにそれぞれ含まれる各ハッシュ値を上位側から互いに比較し、前記各ハッシュ値が互いに一致する場合には当該各ハッシュ値よりも下位側のハッシュ値の比較をスキップするツリー情報比較手段と、前記比較の結果、ハッシュ値が相違する更新対象ファイルのファイル名を列挙した更新ファイルリストを作成する更新リスト作成手段と、前記更新ファイルリスト内のファイル名を指定した更新ファイル送信要求を前記サーバ装置に送信する手段と、前記サーバ装置から受けた更新対象のファイルを前記クライアント側ファイルリポジトリ手段にコピーして更新するファイルコピー手段とを備えたファイル更新装置である。
【００１２】
なお、第１の発明は、サーバ装置及びクライアント装置の集合体を「装置」として表現したが、これに限らず、サーバ装置又はクライアント装置毎に「装置」として表現してもよく、また、各装置の集合体又は装置毎に「プログラム」、「プログラムを記憶した記憶媒体」又は「方法」として表現してもよい。
【００１３】
（作用）
第１の発明では、サーバ側ファイルリポジトリ手段内のディレクトリ情報及びファイルの木構造と同一の木構造を有するサーバ側ハッシュツリー情報を生成し、クライアント側ファイルリポジトリ手段内のディレクトリ情報及びファイルの木構造と同一の木構造を有するクライアント側ハッシュツリー情報を生成する。
【００１４】
次に、サーバ側ハッシュツリー情報とクライアント側ハッシュツリー情報とにそれぞれ含まれる各ハッシュ値を上位側から互いに比較し、各ハッシュ値が互いに一致する場合には当該各ハッシュ値よりも下位側のハッシュ値の比較をスキップする。
【００１５】
このため、保持するファイルの個数に比べて更新したファイルの個数が少ない場合には、比較回数を大幅に低減することができる。
【００１６】
また、比較の結果、ハッシュ値が相違する更新対象ファイルをサーバ装置からコピーして更新する。すなわち、更新処理を１個のファイル単位で実行するので、更新したファイルの数に比べて更新処理が重くならない。
【００１７】
従って、第１の発明では、多数のファイルを保持する場合でも、更新したファイルの数に比べて更新処理を重くせずに、比較回数の増大を抑制することができる。
【発明の効果】
【００１８】
以上説明したように本発明によれば、多数のファイルを保持する場合でも、更新したファイルの数に比べて更新処理を重くせずに、比較回数の増大を抑制することができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の各実施形態について図面を用いて説明する。なお、以下のファイル更新装置は、ハードウェア構成、又はハードウェア資源とソフトウェアとの組合せ構成のいずれでも実施可能となっている。組合せ構成のソフトウェアとしては、予めネットワーク又は記憶媒体から対応する装置のコンピュータにインストールされ、対応する装置の機能を実現させるためのプログラムが用いられる。
【００２０】
（第１の実施形態）
図１は本発明の第１の実施形態に係るファイル更新装置の構成を示す模式図である。このファイル更新装置は、ファイルを更新可能な１台のサーバ装置１０と、このサーバ装置１０により更新されたファイルをコピーして更新するＮ台のクライアント装置２０１〜２０Ｎとを備えている。サーバ装置１０と各クライアント装置２０１〜２０Ｎとは互いにネットワーク３０を介して接続されている。サーバ装置１０はサーバ側環境を構成し、Ｎ台のクライアント装置２０１〜２０Ｎはクライアント側環境を構成している。クライアント側環境のクライアント装置の台数Ｎは複数台に限らず、１台でもよい。
【００２１】
ここで、サーバ装置１０は、サーバ側ファイルリポジトリ部１１、サーバ側ハッシュツリーリポジトリ部１２、ファイル更新部１３、ハッシュツリー生成部１４及びファイル送信部１５を備えている。
【００２２】
サーバ側ファイルリポジトリ部１１は、ファイル更新部１３から読出／書込可能でファイルツリー生成部１４及びファイル送信部１５から読出可能な記憶装置であり、更新の対象となるディレクトリ情報及びファイル１１ａが格納されている。
【００２３】
ディレクトリ情報及びファイル１１ａは、図２に模式的に示すように、最上位のルートディレクトリＲからそれぞれ１個以上のディレクトリＡ，…，Ｆを順次介して最下層の各ファイルａ，…，ｇに至る木構造の階層関係を互いに構成している。以下、ディレクトリ情報及びファイル１１ａが構成する木構造をディレクトリ構造とも呼ぶ。
【００２４】
サーバ側ハッシュツリーリポジトリ部１２は、ハッシュツリー生成部１４から読出／書込可能な記憶装置であり、ハッシュツリー生成部１４により生成されたサーバ側ハッシュツリー情報１２ａが蓄積される。なお、ハッシュツリー情報の生成方法については後述する。
【００２５】
ここで、サーバ側及びクライアント側ハッシュツリー情報１２ａ，２２ａとしては、ツリー構造を表現する場合の実装容易性及び再利用可能性の観点から、図３に示すように、ＸＭＬ（extensible markup language）形式のメタ（構造化）データが好ましい。このＸＭＬ形式のメタデータは、図４に示すように、図２に示したディレクトリ構造と同一の木構造の階層関係を構成するハッシュツリーに対応して記述されており、ディレクトリ又はファイルであるノード毎にノード名及びハッシュ値を含むタグ情報が記述され、各タグ情報がノードの階層に対応した階層に記述されている。ノード名は、ノードがディレクトリの場合にはディレクトリ名であり、ノードがファイルの場合にはファイル名である。なお、このようなＸＭＬ形式のメタデータは、ＤＯＭ（document object model）規格に基づいて、生成、参照及び更新が可能となっている。本実施形態のファイル更新装置は、ＤＯＭ規格に対応している。また、サーバ側及びクライアント側ハッシュツリー情報１２ａ，２２ａがＸＭＬ形式のメタデータの場合、ファイルシステムに相当するＤＴＤ（document type definition: 文書型定義）、ＸＭＬスキーマなどを定義し、当該メタデータをファイルシステムリポジトリとしてＸＭＬデータベースに蓄積し、ファイルシステムの履歴管理（遷移、差分抽出）を行う履歴管理部を付加してもよい。
【００２６】
ファイル更新部１３は、操作者の操作により、図示しない端末装置からサーバ側ファイルリポジトリ部１１内のファイル１１ａを更新する機能をもっている。
【００２７】
ハッシュツリー生成部１４は、クライアント装置２０１〜２０Ｎのいずれかからハッシュツリー送信要求を受けると、サーバ側ファイルリポジトリ部１１内のディレクトリ情報及びファイル１１ａに基づいてサーバ側ハッシュツリー情報１２ａを生成し、得られたサーバ側ハッシュツリー情報１２ａをサーバ側ハッシュツリーリポジトリ部１２に書き込むと共に、このサーバ側ハッシュツリー情報１２ａを要求元のクライアント装置２０１〜２０Ｎに送信するものである。このサーバ側ハッシュツリー情報１２ａは、図２に示した木構造と同一の木構造の階層関係を構成する複数のハッシュ値を有している。
【００２８】
ここで、ハッシュツリー情報の生成方法について述べる。例えば、図２に示したファイルリポジトリにおけるディレクトリ構造を木構造とみなすことにより、ノードをディレクトリ構造におけるディレクトリ情報及びファイル１１ａ，２１ａととらえた場合、各ノードに対して後方走査を行うことによりディレクトリ構造を解釈し、最下層ノードから順次ハッシュ値を算出する。
【００２９】
ここで、後方走査とは、図５に示すように、丸数字の要素（ノード）１〜要素１４の順、つまりある節点を根とする部分木の葉を左から右へ走査し、最後にその根を走査することを木全体の根から再帰的に行うことである。なお、図５中、丸数字はハッシュ値の算出順序でもある。
【００３０】
各ノードに対応するハッシュ値算出の対象となる情報をエンティティ情報と定義したとき、図６に示すように、ノードがファイルであればエンティティ情報をファイルの内容そのものとファイル名、ノードがディレクトリ情報であればディレクトリ直下にあるディレクトリ情報とファイルのハッシュ値をエンティティ情報としてハッシュ値を計算する。図６中、“Ｈ（  ）”はカッコ内のエンティティ情報に施すハッシュ関数を表す。“‖”はデータの連結を表す。また、エンティティ情報には、日付情報、所有者情報、グループ情報等の固有の情報を付加してもよい。
【００３１】
ファイル送信部１５は、クライアント装置２０１〜２０Ｎのいずれかから更新対象ファイル送信要求を受けると、サーバ側ファイルリポジトリ部１１から該当する更新対象ファイル１１ａを読み出し、この更新対象ファイル１１ａを要求元のクライアント装置２０１〜２０Ｎに送信するものである。
【００３２】
続いて、クライアント装置２０１〜２０Ｎについて説明する。但し、各クライアント装置２０１〜２０Ｎは互いに同一構成のため、ここではクライアント装置２０１を代表例に挙げて説明する。
【００３３】
クライアント装置２０１は、クライアント側ファイルリポジトリ部２１、クライアント側ハッシュツリーリポジトリ部２２、ハッシュツリー生成部２３、ハッシュツリー比較部２４及びファイルコピー部２５を備えている。
【００３４】
クライアント側ファイルリポジトリ部２１は、ファイルツリー生成部２３から読出可能でファイルコピー部１５から書込可能な記憶装置であり、更新の対象となるディレクトリ情報及びファイル２１ａが格納されている。ディレクトリ情報及びファイル２１ａは、サーバ装置１０側のディレクトリ情報及びファイル１１ａと同一の木構造を有し、サーバ装置１０で更新されたディレクトリ情報及びファイル１１ａと同一内容になるように、更新されるものである。
【００３５】
クライアント側ハッシュツリーリポジトリ部２２は、ハッシュツリー生成部２３から読出／書込可能でハッシュツリー比較部２４から読出可能な記憶装置であり、ハッシュツリー生成部２３により生成されたクライアント側ハッシュツリー情報２２ａが蓄積されている。
【００３６】
クライアント側ハッシュツリー情報２２ａは、クライアント側ファイルリポジトリ部２１内のディレクトリ情報及びファイル２１ａから、前述したサーバ側ハッシュツリー情報１２ａと同一方法により生成され、図２に示したディレクトリ構造と同一の木構造の階層関係を構成するハッシュツリーに対応して記述されている。
【００３７】
なお、サーバ側ファイルリポジトリ部１１内のディレクトリ情報及びファイル１１ａとクライアント側ファイルリポジトリ部２１内のディレクトリ情報及びファイル２１ａとが同一の場合（サーバ側のファイル更新がクライアント側に反映されている場合）、クライアント側ハッシュツリー情報２２ａは、サーバ側ハッシュツリー情報１２ａと同一のものとなる。
【００３８】
ハッシュツリー比較部２４は、ハッシュツリー生成部２３から起動されると、クライアント側ハッシュツリーリポジトリ部２２から最新のクライアント側ハッシュツリー情報２２ａを読み出す機能と、ハッシュツリー送信要求をサーバ装置１０に送信する機能と、受信したサーバ側ハッシュツリー情報１２ａとクライアント側ハッシュツリー情報２２ａとを比較する機能と、比較の結果、ハッシュ値が相違するファイル名を列挙した更新ファイルリストＬを生成する機能と、この更新ファイルリストＬをファイルコピー部２５に送出する機能とをもっている。
【００３９】
ここで、ハッシュツリー比較方法について述べる。例えば、図２に示したファイルリポジトリにおけるディレクトリ構造を木構造とみなすことにより、ノードをディレクトリ構造におけるディレクトリ情報及びファイル１１ａ，２１ａととらえた場合、各ノードに対して前方走査を行うことによりディレクトリ構造を解釈しながら同一ノード同士のハッシュ値を比較する。具体的には、同一ノード名に対応するハッシュ値を互いに比較する。
【００４０】
前方走査とは、図７に示すような丸数字の要素（ノード）１〜要素１４の順、つまりある節点を根とする部分木の葉を根から左、最後に走査することを木全体の根から再帰的に行うことである。図７中の丸数字は、後述するスキップが無い場合の前方走査の順序を示している。但し、２つのハッシュツリー情報１２ａ，２２ａにおける同一ノード同士のハッシュ値が一致している場合には根以下の比較をスキップする。走査ノードのハッシュ値が一致している場合、一致したノードよりも下の階層の比較処理をスキップするため、一般に、ファイル全体に占める更新対象ファイル数が少ない場合に有効であることがわかる。
【００４１】
例えば、ｎ個のファイル全体に占める更新対象ファイルが１個の場合、ｎ個のファイルのディレクトリ構造が２分木構造であれば、従来ｎ回必要だった比較回数がlog2ｎ回に低減される。これは、例えばｎ＝１００個のファイルのうちの１個の更新対象ファイルを特定する場合、従来１００回の比較回数が必要だったのに比べ、本実施形態では７回の比較回数で特定可能なことを意味している。
【００４２】
ファイルコピー部２５は、ハッシュツリー比較部２４から更新ファイルリストを受けると、更新ファイルリストＬ内のファイル名を指定した更新対象ファイル送信要求をサーバ装置１０に送信する機能と、サーバ装置から受けた更新対象ファイル１１ａをクライアント側ファイルリポジトリ部２１にコピーすることにより、クライアント側ファイルリポジトリ部２１内のファイル２１ａを更新する機能とをもっている。
【００４３】
次に、以上のように構成されたファイル更新装置の動作について図８乃至図１０を参照しながら説明する。
【００４４】
始めに、図８に示すように、サーバ装置１０においては、図示しない端末装置からファイル更新部１３を介してサーバ側ファイルリポジトリ部１１内のファイルが適宜、更新されるものとする（ＳＴ０）。
【００４５】
一方、クライアント装置２０１においては、サーバ側ファイルリポジトリ部１１内のファイルと同一のファイルをクライアント側リポジトリ部２１に保持する必要があるものとする。これに伴い、クライアント装置２０１は、サーバ装置１０がファイルを更新した場合、サーバ装置１０により更新されたファイルをコピーして更新する必要が生じる。但し、クライアント装置２０１は、操作者の不在時に電源がオフ状態にされるので、電源がオン状態に切り替えられたとき、ファイル更新の有無をサーバ装置１０に問い合わせる必要があるものとする。これは全てのクライアント装置２０１〜２０Ｎにおいて共通する。
【００４６】
いま、クライアント装置２０１は、電源がオフ状態であったが、操作者により、電源がオン状態に切り替えられたとする。
【００４７】
このとき、クライアント装置２０１においては、ハッシュツリー生成部２３がクライアント側ファイルリポジトリ部２１からディレクトリ情報及びファイル２１ａを読み出し（ＳＴ１）、このディレクトリ情報及びファイル２１ａに対応するクライアント側ハッシュツリー情報２２ａを生成する（ＳＴ２）。
【００４８】
ここで、ステップＳＴ２の処理について図９を用いて詳細に説明する。  
ハッシュツリー生成部２３は、図２に示したディレクトリ情報及びファイル２１ａを図５に示したようにトラバース（後方走査によるノード移動）し（ＳＴ２−１）、トラバースが終了したか否かを判定する（ＳＴ２−２）。
【００４９】
トラバースが終了していなければ、図６の丸数字に示すように木構造の葉に該当するノードから順次、ハッシュ値を算出し（ＳＴ２−３）、ハッシュ値にノード属性（ディレクトリ情報又はファイル名）を付加して（ＳＴ２−４）、ステップＳＴ２−１に戻る。
【００５０】
一方、ステップＳＴ２−２の判定の結果、トラバースが終了していれば、前回のクライアント側ハッシュツリー情報２２ａからルートディレクトリのハッシュ値を取得し（ＳＴ２−５）、今回のルートディレクトリのハッシュ値と同じか否かを判定し（ＳＴ２−６）、同じであれば処理を終了してハッシュツリー比較部２４を起動する。
【００５１】
一方、ステップＳＴ２−６の判定結果が否であれば、ステップＳＴ２−４の結果に基づいてクライアント側ハッシュツリー情報２２ａを生成する（ＳＴ２−７）。以上がステップＳＴ２の詳細である。
【００５２】
続いて、ハッシュツリー生成部２３は、生成したクライアント側ハッシュツリー情報２２ａをクライアント側ハッシュツリーリポジトリ部２２へ蓄積すると共に（ＳＴ３）、ハッシュツリー比較部２４を起動する。
【００５３】
ハッシュツリー比較部２４では、起動されると、クライアント側ハッシュツリーリポジトリ部２２から最新のクライアント側ハッシュツリー情報２２ａを読み出すと共に（ＳＴ４）、ハッシュツリー送信要求をサーバ装置１０に送信する（ＳＴ５）。
【００５４】
サーバ装置１０においては、ハッシュツリー生成部１４がハッシュツリー送信要求を受けると、サーバ側ファイルリポジトリ部１１からディレクトリ情報及びファイル１１ａを読み出して（ＳＴ６）、このディレクトリ情報及びファイル１１ａに基づいてサーバ側ハッシュツリー情報１２ａを生成する（ＳＴ７）。サーバ側ハッシュツリー情報１２ａの生成は、前述したクライアント側ハッシュツリー情報２２ａの生成処理（ＳＴ２−１〜ＳＴ２−７）と同様に行われる。
【００５５】
しかる後、ハッシュツリー生成部１４は、このサーバ側ハッシュツリー情報１２ａをサーバ側ハッシュツリーリポジトリ部１２に書き込むと共に（ＳＴ８）、クライアント装置２０１に返信する（ＳＴ９）。
【００５６】
クライアント装置２０１においては、ハッシュツリー比較部２４がサーバ側ハッシュツリー情報１２ａを受けると、クライアント側ハッシュツリー情報２２ａのハッシュ値とサーバ側ハッシュツリー情報１２ａのハッシュ値とを前方走査により同一ノード間で比較し、ハッシュ値の相違がある場合には、相違したハッシュ値に対応するファイル名を含む更新ファイルリストＬを生成する。ハッシュ値の相違が無い場合には更新ファイルリストＬを生成せず、処理を終了する（ＳＴ１０）。
【００５７】
ここで、ステップＳＴ１０の処理について図１０を用いて詳細に説明する。  
ハッシュツリー比較部２４は、クライアント側及びサーバ側の各ハッシュツリー情報２２ａ，１２ａの各ルートディレクトリのハッシュ値を取得し（ＳＴ１０−１）、両ハッシュ値が同じか否かを判定する（ＳＴ１０−２）。各ルートディレクトリのハッシュ値が同じであれば、サーバ装置１０においてファイル更新が無かったことになるので、ステップＳＴ１０の処理を終了し、以後のステップＳＴ１１〜ＳＴ１５の処理も行わない。
【００５８】
一方、ステップＳＴ１０−２の結果、各ルートディレクトリのハッシュ値が異なれば、サーバ装置１０においてファイル更新があったことになるので、図７に示したように、各ハッシュツリー情報２２ａ，１２ａをトラバース（前方走査によるノード移動）し（ＳＴ１０−３）、移動先のノードのハッシュ値をそれぞれ取得する（ＳＴ１０−４）。
【００５９】
ハッシュツリー比較部２４は、取得した両ハッシュ値が同じか否かを判定し（ＳＴ１０−５）、両者が同じであればステップＳＴ１０−８に進み、両者が異なれば当該ノードがファイルか否かを判定する（ＳＴ１０−６）。当該ノードがファイルであれば、更新ファイルリストＬに当該ノードのファイル名を追加し（ＳＴ１０−７）、当該ノードがファイルでなければ（又はディレクトリであれば）ステップＳＴ１０−８に進む。
【００６０】
次に、ハッシュツリー比較部２４は、トラバースが終了したか否かを判定し（ＳＴ１０−８）、終了していなければステップＳＴ１０−３に戻ってトラバースを続け、トラバースが終了していればステップＳＴ１０を終了する。以上がステップＳＴ１０の詳細である。
【００６１】
このようなステップＳＴ１０によれば、前方走査により、一致したノードよりも下の階層の比較処理をスキップするため、保持するファイルの個数に比べて更新したファイルの個数が少ない場合には、比較回数を大幅に低減することができる。
【００６２】
続いて、ハッシュツリー比較部２４は、生成した更新ファイルリストＬをファイルコピー部２５へ送信する（ＳＴ１１）。
【００６３】
ファイルコピー部２５は、更新ファイルリストＬ内のファイル名を指定した更新対象ファイル送信要求をサーバ装置１０に送信する（ＳＴ１２）。
【００６４】
サーバ装置１０は、ファイル送信部１５が更新対象ファイル送信要求を受けると、更新対象ファイル送信要求に指定されたファイル名に基づき、サーバ側ファイルリポジトリ部１１から該当する更新対象ファイル１１ａを読み出して（ＳＴ１３）、クライアント装置２０１に送信する（ＳＴ１４）。
【００６５】
クライアント装置２０１においては、ファイルコピー部２５が更新対象ファイル１１ａを受けると、この更新対象ファイル１１ａをクライアント側ファイルリポジトリ部２２にコピーして（ＳＴ１５）、更新前の同一ファイル名のファイルに上書きすることにより、更新処理を終了する。
【００６６】
また、サーバ装置１０は、他のクライアント装置２０２〜２０Ｎからハッシュツリー送信要求を受けた場合も同様に、サーバ側ファイルリポジトリ部１１から生成したサーバ側ハッシュツリー情報１２ａをクライアント装置２０１に返信する（ＳＴ６〜ＳＴ９）。
【００６７】
上述したように本実施形態によれば、クライアント側ファイルリポジトリ部２１内のディレクトリ情報及びファイル２１ａの木構造と同一の木構造を有するクライアント側ハッシュツリー情報２２ａを生成し、サーバ側ファイルリポジトリ部１１内のディレクトリ情報及びファイル１１ａの木構造と同一の木構造を有するサーバ側ハッシュツリー情報１２ａを生成する。
【００６８】
次に、サーバ側ハッシュツリー情報１２ａとクライアント側ハッシュツリー情報２２ａとにそれぞれ含まれる各ハッシュ値を上位側から互いに比較し、各ハッシュ値が互いに一致する場合には当該各ハッシュ値よりも下位側のハッシュ値の比較をスキップする。
【００６９】
このため、保持するファイルの個数に比べて更新したファイルの個数が少ない場合には、比較回数を大幅に低減することができる。
【００７０】
また、比較の結果、ハッシュ値が相違する更新対象ファイルをサーバ装置からコピーして更新する。すなわち、更新処理を１個のファイル単位で実行するので、更新したファイルの数に比べて更新処理が重くならない。
【００７１】
従って、多数のファイルを保持する場合でも、更新したファイルの数に比べて更新処理を重くせずに、比較回数の増大を抑制することができる。
【００７２】
詳しくは、ハッシュ値計算にハッシュツリーの概念を導入することでディレクトリ毎のハッシュ値の算出を可能とするとともに、更新対象特定にはルートノードからディレクトリ構造に沿った前方走査を実行することで更新対象の特定を可能とすることにより、従来のブロック単位にハッシュ値を比較する方式に比べ、更新判定、更新対象特定処理における比較回数を低減し、効率の良いファイル更新を達成することができる。
【００７３】
なお、本実施形態においては、サーバ側ハッシュツリー情報１２ａをクライアント装置２０１からの送信要求後に生成したが、これに限らず、クライアント装置２０１からの送信要求の有無にかかわらず、サーバ側ファイルリポジトリ部１１の更新イベント発生の都度など事前に行うように変形してもよい。この変形例は第３の実施形態として説明する。
【００７４】
（第２の実施形態）
次に、本発明の第２の実施形態に係るファイル更新装置について説明する。  
本実施形態は、ハッシュツリー情報の変形例であり、具体的には図３に述べたＸＭＬ形式のハッシュツリー情報に代えて、図１１に示すように、図２に示したノード毎に、当該ノードのディレクトリ情報又はファイル名と、当該ノードを根とする部分木のハッシュ値とを互いに関連付けたサーバ側及びクライアント側ハッシュツリー情報１２ａ，２２ａを用いている。
【００７５】
すなわち、本実施形態のハッシュツリー情報は、ノードがディレクトリの場合には、ディレクトリ情報自体を含む構造により、ディレクトリ構造の木構造と同一の木構造を有している。
【００７６】
ここで、図１２はＵＮＩＸのディレクトリ構造におけるハッシュ値の算出例を示しており、図１３は図１２の一部を具体的に表している。但し、図１３中、アクセス権限、所有者、グループ、ファイルサイズ、最終更新日付及び最終更新日時は省略してもよい。
【００７７】
以上のようにハッシュツリー情報１２ａ，２２ａがディレクトリ情報自体を含む構成としても、ハッシュツリー情報１２ａ，２２ａがディレクトリ構造の木構造と同一の木構造を有することに変わりは無いから、前述同様に、ステップＳＴ２，ＳＴ７のハッシュツリー生成処理や、ステップＳＴ１０のハッシュツリーの比較処理を実行することができる。
【００７８】
例えば図１４に示す如き、１０４個のファイル数のディレクトリ構造に対し、図１５に示すように、前述同様にステップＳＴ２，ＳＴ７のハッシュツリー生成処理を実行し、図１６に示すように、前述同様にステップＳＴ１０のハッシュツリーの比較処理を実行することができる。また、ステップＳＴ１０によれば、前方走査により、一致したノードよりも下の階層の比較処理をスキップするため、図１６に示した例の場合、従来１０４回の比較回数が必要だったのに比べ、８回の比較回数で済んでいる。
【００７９】
上述したように本実施形態によれば、ＸＭＬ形式以外のデータ形式であっても、ディレクトリ構造の木構造と同一の木構造を有するハッシュツリー情報１２ａ，２２ａを生成できるので、第１の実施形態と同様の効果を得ることができる。
【００８０】
（第３の実施形態）
次に、本発明の第３の実施形態に係るファイル更新装置について説明する。  
本実施形態は、第１又は第２の実施形態の変形例であり、クライアント装置２０１からの送信要求の有無にかかわらず、サーバ側ファイルリポジトリ部１１の更新イベント発生の都度、サーバ側ハッシュツリー情報１２ａを生成する構成となっている。
【００８１】
これに伴い、サーバ装置１０は、図１７に示すように、前述したファイル更新部１３及びハッシュツリー生成部１４に代えて、ファイル更新部１３及びハッシュツリー生成部１４の機能を一部変形したファイル更新部１３’及びハッシュツリー生成部１４’を備えている。
【００８２】
ここで、ファイル更新部１３’は、図示しない端末装置の操作に応じて、サーバ側ファイルリポジトリ部１１内のファイルを更新する機能と、ファイル更新後にハッシュツリー生成部１４’を起動する機能とをもっている。
【００８３】
ハッシュツリー生成部１４’は、ファイル更新部１３’に起動されると、サーバ側ファイルリポジトリ部１１内のディレクトリ情報及びファイル１１ａからサーバ側ハッシュツリー情報１２ａを生成し、得られたサーバ側ハッシュツリー情報１２ａをサーバ側ハッシュツリーリポジトリ部１２に書き込む機能と、クライアント装置２０からハッシュツリー送信要求を受けると、サーバ側ハッシュツリーリポジトリ部１２から読み出したサーバ側ハッシュツリー情報１２ａをクライアント装置２０に送信する機能とをもっている。
【００８４】
次に、以上のように構成されたファイル更新装置の動作について説明する。
【００８５】
始めに、図１７に示すように、サーバ装置１０においては、図示しない端末装置からファイル更新部１３を介してサーバ側ファイルリポジトリ部１１内のファイルが適宜、更新される（ものとする（ＳＴ０’−１）。
【００８６】
このとき、ファイル更新部１３’は、ファイル更新後にハッシュツリー生成部１４’を起動する（ＳＴ０’−２）。
【００８７】
ハッシュツリー生成部１４’は、ファイル更新部１３’に起動されると、サーバ側ファイルリポジトリ部１１からディレクトリ情報及びファイル１１ａを読み出し（ＳＴ０’−３）、このディレクトリ情報及びファイル１１ａからサーバ側ハッシュツリー情報１２ａを生成し（ＳＴ０’−４）、得られたサーバ側ハッシュツリー情報１２ａをサーバ側ハッシュツリーリポジトリ部１２に書き込む（ＳＴ０’−５）。
【００８８】
なお、サーバ側ハッシュツリー情報１２ａの生成過程は、図９に示した処理のうち、ステップＳＴ２−１〜ＳＴ２−４及びＳＴ２−７により実行される。すなわち、本実施形態のサーバ装置１０は、ファイル更新をトリガとして動作するので、ファイル更新の有無を確認するためのステップＳＴ２−５及びＳＴ２−６が省略される。
【００８９】
しかる後、クライアント装置２０１においては、前述した通り、電源がオン状態に切り替えられたとする。このとき、クライアント装置２０１は、前述した通り、ステップＳＴ１〜ＳＴ５を実行し、ハッシュツリー送信要求をサーバ装置１０に送信する（ＳＴ５）。
【００９０】
サーバ装置１０においては、ハッシュツリー生成部１４’がハッシュツリー送信要求を受けると、前述とは異なり、サーバ側ハッシュツリーリポジトリ部１２からサーバ側ハッシュツリー情報１２ａを読み出し（ＳＴ９’−１）、サーバ側ハッシュツリー情報１２ａをクライアント装置２０１に返信する（ＳＴ９’−２）。
【００９１】
以下、前述した通り、ステップＳＴ１０〜ＳＴ１５が実行される。
【００９２】
また、サーバ装置１０は、他のクライアント装置２０２〜２０Ｎからハッシュツリー送信要求を受けた場合も同様に、サーバ側ハッシュツリーリポジトリ部１２から読み出したサーバ側ハッシュツリー情報１２ａをクライアント装置２０１に返信する（ＳＴ９’−１〜ＳＴ９’−２）。
【００９３】
上述したように本実施形態によれば、第１又は第２の実施形態と同様の効果を得ることができ、さらに、第１又は第２の実施形態とは異なり、ハッシュツリー送信要求を受ける毎にサーバ側ハッシュツリー情報１２ａを生成せずに読み出すだけで済むので、クライアント装置２０１〜２０Ｎの台数Ｎに応じてハッシュツリー生成処理の回数を低減することができる。
【００９４】
なお、上記実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フロッピー（登録商標）ディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤなど）、光磁気ディスク（ＭＯ）、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【００９５】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【００９６】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワークソフト等のＭＷ（ミドルウェア）等が上記実施形態を実現するための各処理の一部を実行しても良い。
【００９７】
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、ＬＡＮやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
【００９８】
また、記憶媒体は１つに限らず、複数の媒体から上記実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【００９９】
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記実施形態における各処理を実行するものであって、パソコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【０１００】
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【０１０１】
なお、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組合せてもよい。
【図面の簡単な説明】
【０１０２】
【図１】本発明の第１の実施形態に係るファイル更新装置の構成を示す模式図である。
【図２】同実施形態におけるディレクトリ情報及びファイルの階層関係を示す模式図である。
【図３】同実施形態におけるハッシュツリー情報の一例を示す模式図である。
【図４】同実施形態におけるハッシュツリー情報を説明するための模式図である。
【図５】同実施形態における後方走査を説明するための模式図である。
【図６】同実施形態における後方走査によるハッシュ値の算出例を示す模式図である。
【図７】同実施形態における前方走査を説明するための模式図である。
【図８】同実施形態における全体動作を説明するための模式図である。
【図９】同実施形態におけるハッシュツリーの生成動作を説明するための模式図である。
【図１０】同実施形態におけるハッシュツリーの比較動作を説明するための模式図である。
【図１１】本発明の第２の実施形態に係るファイル更新装置に用いられるハッシュツリー情報の一例を示す模式図である。
【図１２】同実施形態におけるハッシュ値の算出例を示す模式図である。
【図１３】図１２の一部を具体的に表す模式図である。
【図１４】同実施形態におけるディレクトリ構造の一例を示す模式図である。
【図１５】同実施形態におけるハッシュツリーの生成処理を示す模式図である。
【図１６】同実施形態におけるハッシュツリーの比較処理を示す模式図である。
【図１７】本発明の第２の実施形態に係るファイル更新装置の動作を説明するための模式図である。
【符号の説明】
【０１０３】
１０…サーバ装置、１１…サーバ側ファイルリポジトリ部、１１ａ，２１ａ…ディレクトリ情報及びファイル、１２…サーバ側ハッシュツリーリポジトリ部、１２ａ，２２ａ…ハッシュツリー情報、１３…ファイル更新部、１４，２３…ハッシュツリー生成部、１５…ファイル送信部、２０１〜２０Ｎ…クライアント装置、２１…クライアント側ファイルリポジトリ部、２２…クライアント側ハッシュツリーリポジトリ部、２４…ハッシュツリー比較部、２５…ファイルコピー部２５、Ｌ…更新ファイルリスト。
【図１】
2008250903.tif 000003
【図２】
2008250903.tif 000004
【図３】
2008250903.tif 000005
【図４】
2008250903.tif 000006
【図５】
2008250903.tif 000007
【図６】
2008250903.tif 000008
【図７】
2008250903.tif 000009
【図８】
2008250903.tif 000010
【図９】
2008250903.tif 000011
【図１０】
2008250903.tif 000012
【図１１】
2008250903.tif 000013
【図１２】
2008250903.tif 000014
【図１３】
2008250903.tif 000015
【図１４】
2008250903.tif 000016
【図１５】
2008250903.tif 000017
【図１６】
2008250903.tif 000018
【図１７】
2008250903.tif 000019