(57)【要約】【課題】  ドキュメントに記述されたリンク先の参照ファイルに変更が生じた場合に、当該ドキュメントのポータビリティを維持しながら、当該参照ファイルの変更を管理者が認知できるようにする変更検知装置等を提供する。【解決手段】  変更検知装置は、電子化されたドキュメントに記述された、当該ドキュメントから参照される参照ファイルのリンク先を表す参照先アドレスを抽出する抽出部と、前記抽出された参照先アドレスを表す第１の二進数列と、当該参照先アドレスによって参照される前記参照ファイルを表す第２の二進数列とを排他的論理和演算することによって合成列を生成する合成部と、前記生成された合成列を、前記参照先アドレスと関連付けて前記ドキュメントに書き込む書き込み部とを備える。【選択図】      図１
2014160918.tif 000002
【特許請求の範囲】
【請求項１】
電子化されたドキュメントに記述された、当該ドキュメントから参照される参照ファイルのリンク先を表す参照先アドレスを抽出する抽出部と、
前記抽出された参照先アドレスを表す第１の二進数列と、当該参照先アドレスによって参照される前記参照ファイルを表す第２の二進数列とを排他的論理和演算することによって合成列を生成する合成部と、
前記生成された合成列を、前記参照先アドレスと関連付けて前記ドキュメントに書き込む書き込み部と
を備えた変更検知装置。
【請求項２】
前記抽出部は、前記書き込み部により書き込まれた合成列を前記ドキュメントから抽出し、
前記合成部は、前記抽出された合成列と前記参照ファイルを表す前記第２の二進数列とを排他的論理和演算することにより復元列を生成する
請求項１記載の変更検知装置。
【請求項３】
前記合成部は、前記第１の二進数列と前記第２の二進数列のうち、列長の長い方を一方列、短い方を他方列とし、前記一方列から前記他方列と同一の列長を第１の部分列として切り縮めた残りを第１の残列とし、前記第１の部分列と前記他方列とを排他的論理和演算して得られる第１の合成列を生成し、
以降、ｎを２以上の自然数として、前記第（ｎ−１）の残列が前記他方列より長い場合、前記第（ｎ−１）の残列から前記他方列と列長が同一の第ｎの部分列を切り縮め、その残りを第ｎの残列として、前記第ｎの部分列と前記他方列とを排他的論理和演算して得られる第ｎの合成列を生成し、
前記第ｎの残列が前記他方列よりも短くなった場合に、当該他方列から前記第ｎの残列と同一の列長を切り縮めた第（ｎ＋１）の合成列を生成し、
前記第１ないし第（ｎ＋１）の合成列を前記切り縮めた順に連結することによって、前記合成列を生成する
請求項１または請求項２記載の変更検知装置。
【請求項４】
前記合成部は、前記抽出部により抽出された合成列を一方列、前記参照ファイルを表す前記第２の二進数列を他方列とし、前記一方列から前記他方列と同一の列長を第１の部分列として切り縮めた残りを第１の残列とし、前記第１の部分列と前記他方列とを排他的論理和演算して得られる第１の復元列を生成し、
以降、ｎを２以上の自然数として、前記第（ｎ−１）の残列が前記他方列より長い場合、前記第（ｎ−１）の残列から前記他方列と列長が同一の第ｎの部分列を切り縮め、その残りを第ｎの残列として、前記第ｎの部分列と前記他方列とを排他的論理和演算して得られる第ｎの復元列を生成し、
前記第ｎの残列が前記他方列よりも短くなった場合に、当該他方列から前記第ｎの残列と同一の列長を切り縮めた第（ｎ＋１）の復元列を生成し、
前記第１ないし第（ｎ＋１）の復元列を前記切り縮めた順に連結することによって、前記復元列を生成する
請求項２記載の変更検知装置。
【請求項５】
電子化されたドキュメントに記述された、当該ドキュメントから参照される参照ファイルのリンク先を表す参照先アドレスを抽出部により抽出し、
前記抽出された参照先アドレスを表す第１の二進数列と、当該参照先アドレスによって参照される前記参照ファイルを表す第２の二進数列とを排他的論理和演算することによって合成列を合成部により生成し、
前記生成された合成列を、前記参照先アドレスと関連付けて前記ドキュメントに書き込み部により書き込む
変更検知方法。
【請求項６】
前記抽出部は、前記書き込み部により書き込まれた合成列を前記ドキュメントから抽出し、
前記合成部は、前記抽出された合成列と前記参照ファイルを表す前記第２の二進数列とを排他的論理和演算することにより復元列を生成する
請求項５記載の変更検知方法。
【請求項７】
前記合成部は、前記第１の二進数列と前記第２の二進数列のうち、列長の長い方を一方列、短い方を他方列とし、前記一方列から前記他方列と同一の列長を第１の部分列として切り縮めた残りを第１の残列とし、前記第１の部分列と前記他方列とを排他的論理和演算して得られる第１の合成列を生成し、
以降、ｎを２以上の自然数として、前記第（ｎ−１）の残列が前記他方列より長い場合、前記第（ｎ−１）の残列から前記他方列と列長が同一の第ｎの部分列を切り縮め、その残りを第ｎの残列として、前記第ｎの部分列と前記他方列とを排他的論理和演算して得られる第ｎの合成列を生成し、
前記第ｎの残列が前記他方列よりも短くなった場合に、当該他方列から前記第ｎの残列と同一の列長を切り縮めた第（ｎ＋１）の合成列を生成し、
前記第１ないし第（ｎ＋１）の合成列を前記切り縮めた順に連結することによって、前記合成列を生成する
請求項５または請求項６記載の変更検知方法。
【請求項８】
前記合成部は、前記抽出部により抽出された合成列を一方列、前記参照ファイルを表す前記第２の二進数列を他方列とし、前記一方列から前記他方列と同一の列長を第１の部分列として切り縮めた残りを第１の残列とし、前記第１の部分列と前記他方列とを排他的論理和演算して得られる第１の復元列を生成し、
以降、ｎを２以上の自然数として、前記第（ｎ−１）の残列が前記他方列より長い場合、前記第（ｎ−１）の残列から前記他方列と列長が同一の第ｎの部分列を切り縮め、その残りを第ｎの残列として、前記第ｎの部分列と前記他方列とを排他的論理和演算して得られる第ｎの復元列を生成し、
前記第ｎの残列が前記他方列よりも短くなった場合に、当該他方列から前記第ｎの残列と同一の列長を切り縮めた第（ｎ＋１）の復元列を生成し、
前記第１ないし第（ｎ＋１）の復元列を前記切り縮めた順に連結することによって、前記復元列を生成する
請求項６記載の変更検知方法。
【請求項９】
電子化されたドキュメントに記述された、当該ドキュメントから参照される参照ファイルのリンク先を表す参照先アドレスを抽出部により抽出する処理と、
前記抽出された参照先アドレスを表す第１の二進数列と、当該参照先アドレスによって参照される前記参照ファイルを表す第２の二進数列とを排他的論理和演算することによって合成列を合成部により生成する処理と、
前記生成された合成列を、前記参照先アドレスと関連付けて前記ドキュメントに書き込み部により書き込む処理とを
コンピュータに実行させる変更検知プログラム。
【請求項１０】
前記抽出部により、前記書き込み部により書き込まれた合成列を前記ドキュメントから抽出する処理と、
前記合成部により、前記抽出された合成列と前記参照ファイルを表す前記第２の二進数列とを排他的論理和演算することにより復元列を生成する処理とを
コンピュータに実行させる請求項９記載の変更検知プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ドキュメント等の電子データ（以下、「ドキュメント」とする）から参照される外部ファイル等の電子データ（以下、「参照ファイル」とする）に、変更が加えられたことを検知する変更検知装置、変更検知方法および変更検知プログラムに関する。
【背景技術】
【０００２】
近年の電子化されたドキュメントは、例えばＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）／ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）形式にて記述される。これらの形式で記述されたドキュメントでは、ひとつのドキュメントから他の独立した参照ファイルを直接参照することが可能である。これは、いわゆるハイパーリンクと呼ばれる仕組みである。
【０００３】
この仕組みを用いることにより、独立したファイルとして管理された参照ファイルを、別のドキュメントから利用することが可能となる。すなわち、文書の共用や再利用が可能となる。
【０００４】
例えば、ドキュメントの管理者は、当該ドキュメントに、参照するファイルのＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）またはＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）を記述する。これにより、いずれのファイルの中身を参照するのかをファイル名を使って指し示すことができるので、ファイルの実体（内容）を直接ドキュメントに記述することなく他のファイルから当該内容を参照することが可能となる。
【０００５】
上記のように、ドキュメントにハイパーリンクを記述することにより参照ファイルの内容を他のドキュメントから参照する場合、ドキュメントと、ハイパーリンクにより関連付けられる参照ファイルとの組み合わせの版（バージョン、レビジョン）管理が重要である。例えば、参照ファイルの内容のみ変更された場合、ドキュメントの管理者の意図とは異なる参照ファイルが参照されてしまう虞がある。特に、参照ファイルが図表などのグラフィックデータを示す場合、当該参照ファイルに微細な変更がなされたとしても、管理者の目視等ではその変更を認知することが難しい。このように、ドキュメントと、参照ファイルの各ファイル名とを用いて変更履歴等を管理する場合、参照ファイルの内容の変更を正確に管理できないという課題がある。
【０００６】
また、このようなハイパーリンクを用いた文書構造を前提とした版管理の方法では、リンク毎にドキュメントと参照ファイルの版数の組み合わせを独自のデータベースを用いて管理する等、複雑な管理装置を必要とするものが多い。したがって、一旦特定の管理装置または方法を使用してしまうと、容易には他の管理装置または方法には移行できないという問題が生じる。すなわち、文書の利用が特定の管理装置または方法との組み合わせに限定されるので、ドキュメントのポータビリティを喪失させ、文書の利用範囲を限定してしまう。
【０００７】
特許文献１には、データ改ざん検出装置が開示される。このデータ改ざん検出装置では、二つの独立した文書等の電子データを一組として、変更を管理する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許第４９２４５６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上記特許文献１に開示されるデータ改ざん検出装置では、二つの独立した文書等の電子データを一組として文書の変更を管理しており、これを、１つのドキュメントから複数の参照ファイルを参照するドキュメントの変更の管理に適用する場合、以下の課題が生じる。すなわち、上記ドキュメントと参照ファイルとを１対１の関係で管理しなければならないので、ドキュメントに変更が生じた場合、すべての関係付けを更新する必要があるので管理に手間が掛かる上に、当該関係付けの更新漏れ等が発生する可能性が高いという課題がある。
【００１０】
また、特許文献１に開示されるデータ改ざん検出装置は、対となる文書の一方に変更（改ざん）が生じたことを検出することを目的としており、当該検出のためのデータを外部のデータベース等に保存する必要がある。これは、上述したハイパーリンクを用いた文書構造を前提とした版管理装置または方法と同様に、ドキュメントのポータビリティを喪失させることを意味する。
【００１１】
本願発明は、上記課題を鑑みてなされたものであり、ドキュメントに記述されたリンク先の参照ファイルに変更が生じた場合に、当該ドキュメントのポータビリティを維持しながら、当該参照ファイルの変更を管理者が認知できるようにする変更検知装置、変更検知方法および変更検知プログラムを提供することを主要な目的とする。
【課題を解決するための手段】
【００１２】
本発明の第１の変更検知装置は、電子化されたドキュメントに記述された、当該ドキュメントから参照される参照ファイルのリンク先を表す参照先アドレスを抽出する抽出部と、前記抽出された参照先アドレスを表す第１の二進数列と、当該参照先アドレスによって参照される前記参照ファイルを表す第２の二進数列とを排他的論理和演算することによって合成列を生成する合成部と、前記生成された合成列を、前記参照先アドレスと関連付けて前記ドキュメントに書き込む書き込み部とを備える。
【００１３】
本発明の第１の変更検知方法は、電子化されたドキュメントに記述された、当該ドキュメントから参照される参照ファイルのリンク先を表す参照先アドレスを抽出部により抽出し、前記抽出された参照先アドレスを表す第１の二進数列と、当該参照先アドレスによって参照される前記参照ファイルを表す第２の二進数列とを排他的論理和演算することによって合成列を合成部により生成し、前記生成された合成列を、前記参照先アドレスと関連付けて前記ドキュメントに書き込み部により書き込む。
【００１４】
なお同目的は、上記の各構成を有する管理コントローラまたは管理方法を、コンピュータによって実現するコンピュータ・プログラム、およびそのコンピュータ・プログラムが格納されている、コンピュータ読み取り可能な記憶媒体によっても達成される。
【発明の効果】
【００１５】
本願発明によれば、ドキュメントに記述されたリンク先の参照ファイルに変更が生じた場合に、当該ドキュメントのポータビリティを維持しながら、当該参照ファイルの変更を管理者が認知できる効果が得られる。
【図面の簡単な説明】
【００１６】
【図１】本発明の第１の実施形態に係る変更検出装置の構成を示すブロック図である。
【図２】本発明の第１の実施形態に係る変更検出装置により管理するドキュメントおよび参照ファイルの例を示す図である。
【図３】本発明の第１の実施形態に係る変更検出装置のハードウエア構成を示す図である。
【図４】本発明の第１の実施形態に係る変更検出装置の合成動作を示すフローチャート（ａ）と、復元動作を示すフローチャート（ｂ）である。
【図５】本発明の第１の実施形態に係る変更検出装置の合成動作の詳細を示すフローチャートである。
【図６】本発明の第１の実施形態に係る変更検出装置の二進数列の演算のための作業用データのデータ構造を示す図である。
【図７】本発明の第１の実施形態に係る変更検出装置の合成部による合成処理の詳細を説明するフローチャートである。
【図８】本発明の第１の実施形態に係る変更検出装置の合成処理において、データＡとデータＢの例を示す図（ａ）と、データＡをデータＢの長さに切り縮める図（ｂ）である。
【図９】本発明の第１の実施形態に係る変更検出装置の合成処理において、データＡがデータＢより短くなった場合を示す図である。
【図１０】本発明の第１の実施形態に係る変更検出装置の復元動作の詳細を示すフローチャートである。
【図１１】本発明の第２の実施形態に係る変更検出装置の構成を示すブロック図である。
【図１２】本発明の第２の実施形態に係る変更検出装置の文字列抽出部の動作を示すフローチャートである。
【図１３】本発明の第２の実施形態に係る変更検出装置の二進数列の演算のための作業用データのデータ構造を示す図である。
【図１４】本発明の第３の実施形態に係る変更検出装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施形態について図面を参照して詳細に説明する。
【００１８】
第１の実施形態
図１は、本発明の第１の実施形態に係る変更検出装置１００の構成を示す図である。図１に示すように、変更検出装置１００は、抽出部１０１、列長算出部１０２、整形部１０３、合成部１０４、書き込み部１０５および作業データ記憶部１０６を備える。
【００１９】
図２は、本発明の第１の実施形態に係る変更検出装置１００により管理するドキュメント２００および参照ファイル２０２の例を示す図である。図２に示すように、ドキュメント２００には、参照する参照ファイルのリンク先を指定するハイパーリンク２０１が記述される。ここでは、例えば、ファイル名“ｆｏｏ．ｈｔｍｌ”という参照ファイルのリンク先を指定するＵＲＬ形式の表現として、＜ａ  ｈｒｅｆ＝”．／ｆｏｏ．ｈｔｍｌ”＞が記述される。このハイパーリンク２０１を、ユーザがマウス等の入力装置を用いて指定すると共に所定の操作をすると、参照ファイル２０２が開くことにより、管理者は参照可能となる。ドキュメント２００および参照ファイル２０２は、それぞれ二進数列としてコンピュータでは表現される。
【００２０】
図１に示す変更検出装置１００の各構成要素は、概略以下のように動作する。すなわち、抽出部１０１は、ドキュメント２００から参照する参照ファイルのリンク先を指定するハイパーリンクの二進数表現を抽出すると共に、参照ファイル２０２の二進数表現（二進数列）を抽出する。列長算出部１０２は、抽出部１０１により抽出された二進数表現（二進数列）の列長を算出する。整形部１０３は、抽出部１０１により抽出された二進数列のデータ形式を整形する。合成部１０４は、ハイパーリンクを表す二進数列と参照ファイル２０２を表す二進数列との排他的論理和演算すると共にその結果を連結することより、合成データ（合成列）を生成する。書き込み部１０５は、生成された合成データをドキュメント２００に書き込む。作業データ記憶部１０６は、整形部１０３が整形した二進数列を格納する。
【００２１】
図１に示す変更検出装置１００の抽出部１０１、列長算出部１０２、整形部１０３、合成部１０４、書き込み部１０５は、コンピュータにより実現した場合、図３に例示するハードウエア構成を有する。図３に示す構成は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２１０、メモリ等の記憶媒体２１１および記憶媒体２１１に格納されるプログラム２１２を備える。ＣＰＵ２１０は、各種ソフトウエア・プログラム（コンピュータ・プログラム）を実行することにより、変更検出装置１００の全体的な動作を司る。本実施形態および以下に示す他の実施形態において、ＣＰＵ２１０が、メモリ等の記憶媒体２１１を適宜参照しながら、以下に示す変更検出装置１００が備える各機能（各部）のソフトウエア・プログラムを実行する。
【００２２】
上述したように、図２に示すドキュメント２００には、参照ファイル２０２のファイル名を指定するハイパーリンクが記述されるのみであるので、参照ファイル２０２の中身が変更されたとしても、ドキュメント２００の管理者は認知できない。そこで、ドキュメント２００の管理者が参照ファイル２０２に変更がなされたことを認知できるようにするために、変更検出装置１００は、以下の動作を行う。
【００２３】
以下に、変更検出装置１００の動作の概略を説明する。ここで、ドキュメント２００に記述されるハイパーリンク２０１を「Ａ」、参照ファイル２０２を「Ｂ」と称する。また、ＡおよびＢを表す二進数表現を、それぞれＢＩＮ（Ａ）、ＢＩＮ（Ｂ）と表現する。さらに、Ａを表す二進数列の長さをＬＥＮ（ＢＩＮ（Ａ））、Ｂを表す二進数列の長さを、ＬＥＮ（ＢＩＮ（Ｂ））と表現する。
【００２４】
図４（ａ）、（ｂ）は、変更検出装置１００の動作の概略を示す図である。図４（ａ）、（ｂ）に示すように、変更検出装置１００は、合成動作と復元動作を行う。詳細は後述するが、変更検出装置１００の合成動作の概略を、図４（ａ）を参照しながら説明する。
【００２５】
変更検出装置１００は、ドキュメント２００からハイパーリンク２０１（ＵＲＬ）の二進数表現を抽出する（ステップＳ３０１）と共に、参照ファイル２０２の二進数表現を読み込む（ステップＳ３０２）。続いて、変更検出装置１００は、抽出されたハイパーリンク２０１と参照ファイル２０２の各二進数表現の排他的論理和演算
Ｆ（Ａ，Ｂ）＝ＢＩＮ（Ａ）  ＸＯＲ  ＢＩＮ（Ｂ）
を行う（ステップＳ３０３）。変更検出装置１００は、排他的論理和演算した結果を合成する（ステップＳ３０４）（詳細は、図７を参照して後述する）。変更検出装置１００は、合成した結果を、上記ハイパーリンク２０１と関連付けて、ドキュメント２００に書き込む（ステップＳ３０５）。
【００２６】
上述したように、ドキュメント２００に書き込まれた合成結果に基づいて、変更検出装置１００は、上記参照ファイル２０２が変更されたか否かを検出することができる。変更検出装置１００は、当該合成結果を復元することにより、上記検出を行う。すなわち、上記合成した結果Ｆ（Ａ，Ｂ）は、ＡおよびＢの各情報を完全に含む情報であるので、排他的論理和の代数的性質により、Ａと合成Ｆ（Ａ，Ｂ）とを用いて、Ｂを復元できる。同様に、Ｂと合成Ｆ（Ａ，Ｂ）を用いて、Ａを復元できる。一方、ＡまたはＢと異なるデータを用いた場合、その対となるＢまたはＡは復元できない。例えば、Ａが変更された場合、Ａの変更後のＡ’と合成Ｆ（Ａ，Ｂ）とを用いても、Ｂを復元することはできない。
【００２７】
変更検出装置１００は、上述のように復元動作を実施することにより、参照ファイル２０２が変更されたことを検出する。以下に、変更検出装置１００の復元動作の概略を、図４（ｂ）を参照しながら説明する。
【００２８】
変更検出装置１００は、ドキュメント２００に書き込まれている合成結果と、それに関連付けられたハイパーリンク２０１の二進数表現とを、当該ドキュメントから読み出す（ステップＳ５０１）。変更検出装置１００は、読み出した合成結果と（ステップＳ５０２）、参照ファイルの二進数表現ＢＩＮ（Ｂ）とを用いて（ステップＳ５０３）、排他的論理和の逆関数演算
Ｆ＾（−１）（Ｆ１，Ｂ）＝Ｆ（Ａ，Ｂ）  ＸＯＲ  ＢＩＮ（Ｂ）
を行う（ステップＳ５０４）。なお、Ｆ＾（−１）は、Ｆのマイナス１乗、すなわち逆関数を表す。
【００２９】
Ｂに変更が生じていた場合、上記演算によって、Ａは正しく復元されない。したがって、変更検出装置１００は、ドキュメントから読み出したＡの記述と、ステップＳ５０４における演算の結果と比較することにより、Ｂに対する変更の有無を検出することができる。
【００３０】
なお、ドキュメント２００内への合成結果の書き込みは、例えばドキュメント２００がＨＴＭＬ形式で記述される場合は、コメントとして記述してもよい。ドキュメント２００がＸＭＬ形式で記述される場合は、例えばメタデータや特殊なタグ等、ドキュメントの処理系に影響を与えないデータの記述方法を用いて記述してもよい。また、ドキュメント内の書き込み位置は、いずれのハイパーリンクに対する合成結果であるかを一意に特定できる位置であればよい。例えば、ハイパーリンクを参照用のキーとして記述する場合、ドキュメントの処理系に影響を与えない位置であればどこに記述してもよい。
【００３１】
次に、変更検出装置１００の合成動作の詳細を、図１、図５ないし図９を参照して説明する。図５は、図４（ａ）に示した変更検出装置１００の合成動作の詳細を示すフローチャートである。
【００３２】
抽出部１０１は、管理対象となるドキュメント２００を読み込む（ステップＳ６０１）。抽出部１０１は、読み込んだドキュメント２００から、ハイパーリンクの記述を表す二進数表現と、当該ハイパーリンクからリンク先として指定される参照ファイルの参照ファイル名を表す二進数表現とを抽出する（ステップＳ６０２）。そして、抽出部１０１は、抽出されたファイル名を有する参照ファイルの二進数表現を読み込む（ステップＳ６０３）。抽出部１０１は、読み込んだ結果を列長算出部１０２に通知する。
【００３３】
列長算出部１０２は、受け取った、ハイパーリンクを表す二進数表現（二進数列）と、参照ファイルを表す二進数表現（二進数列）の列長をそれぞれ算出する（ステップＳ６０４）。抽出部１０１は、ドキュメント２００に記述されるすべてのハイパーリンクと参照ファイル名に関して上記抽出を行い、列長算出部１０２は、抽出されたすべての二進数列の列長の算出を行う（ステップＳ６０５）。
【００３４】
すべてのハイパーリンクに関してステップＳ６０２ないしステップＳ６０４の処理が終了したら、整形部１０３は二進数列の整形処理を実施する（ステップＳ６０６）。
【００３５】
図６は、二進数列の演算のための作業用データのデータ構造を示す図である。図６に示すように、作業用データは、固定長のＬ１（７０１）、Ｌ２（７０２）と、可変長のＬＢ（７０３）とを含む。Ｌ１（７０１）は、列長の二進数表現を格納する。Ｌ２（７０２）は、抽出部１０１が抽出したハイパーリンクの二進数表現または参照ファイルのファイル名の二進数表現を格納する。ＬＢ（７０３）は、参照ファイルの内容等を格納する。なお、Ｌ１（７０１）とＬ２（７０２）は、該当するデータを格納するのに十分な桁数を有することとする。
【００３６】
整形部１０３は、抽出部１０１が抽出したすべてのハイパーリンクおよび参照ファイルの各二進数列について、順次、図６に示すデータ構造に整形する。そして、整形部１０３は、整形処理を実施した二進数列を、順次作業データ記憶部１０６に格納する。
【００３７】
続いて、合成部１０４は、合成処理を実施する。図７は、合成部１０４による合成処理（図５に示すステップＳ６０７）の詳細を説明するフローチャートである。図７を参照して、合成部１０４による合成処理について説明する。ここで、ＢＩＮ、ｐｉｖｏｔは、作業用変数とする。
【００３８】
合成部１０４は、作業データ記憶部１０６から、まず、１番目のデータと２番目のデータとを読み出す（ステップＳ８０１）。１番目のデータ、２番目のデータを、それぞれＢＩＮ（Ａ）、ＢＩＮ（Ｂ）と仮定する。ＢＩＮ（Ａ）、ＢＩＮ（Ｂ）は、それぞれハイパーリンクを表す二進数表現、参照ファイルを表す二進数表現のいずれでもよい。なお、作業データ記憶部１０６には、図５に示すステップＳ６０６において、ハイパーリンクを表す二進数列を整形処理したものと、参照ファイルを表す二進数列を整形処理したものが、それぞれその順または逆順に格納される。
【００３９】
合成部１０４は、ＢＩＮ（Ａ）とＢＩＮ（Ｂ）との列長を比較する（ステップＳ８０２）。ＢＩＮ（Ｂ）の長さがＢＩＮ（Ａ）の長さ以上の場合、合成部１０４は、変数ＢＩＮにＢＩＮ（Ｂ）を代入すると共に、変数ｐｉｖｏｔにＢＩＮ（Ａ）を代入する（ステップＳ８０３）。一方、ＢＩＮ（Ｂ）の長さがＢＩＮ（Ａ）の長さよりも短い場合、合成部１０４は、変数ＢＩＮにＢＩＮ（Ａ）を代入し、変数ｐｉｖｏｔにＢＩＮ（Ｂ）を代入する（ステップＳ８０４）。図８（ａ）は、ＢＩＮ（Ａ）とＢＩＮ（Ｂ）の例を示す。
【００４０】
続いて、合成部１０４は、短い二進数列（ｐｉｖｏｔ）の長さに、長い二進数列（ＢＩＮ）を切り縮める。すなわち、合成部１０４は、ＢＩＮの第ｉビット（ここではｉ＝０）から第ｋビットまでを、変数ｐに代入する（ステップＳ８０５）。図８（ｂ）は、ＢＩＮの第ｉビットから第ｋビットまでを示す。ここで、ｉは自然数、ｋは（ｉ＋ＬＥＮ（ｐｉｖｏｔ）−１）を示す。
【００４１】
続いて合成部１０４は、ｐとｐｉｖｏｔとの排他的論理和演算を行う（ステップＳ８０６）。続いて合成部１０４は、第（ｋ＋１）ビット〜第ｍａｘビットまでのＢＩＮ（第１の残データ）の長さと、変数ｐｉｖｏｔの長さとを比較する（ステップＳ８０７）。第（ｋ＋１）ビット〜第ｍａｘビットまでのＢＩＮの長さが、変数ｐｉｖｏｔの長さ以上の場合、図示しない記憶回路にステップＳ８０６にて行った排他的論理和演算の結果を格納する（ステップＳ８０８）。当該ステップＳ８０５からステップＳ８０８までの処理を、一回目のループとする。
【００４２】
続いて合成部１０４は、ｉにｋを、ｋに（ｋ＋ＬＥＮ（ＢＩＮ（ｐｉｖｏｔ）））を、それぞれ代入し（ステップＳ８０９）、ステップＳ８０５に処理を戻す。すなわち、合成部１０４は、ｐｉｖｏｔの長さに、ＢＩＮを切り縮める処理を繰り返す（２回目以降のループ）。そして、合成部１０４は、ステップＳ８０７において、第（ｋ＋１）ビット〜第ｍａｘビットまでのＢＩＮの長さの方が、変数ｐｉｖｏｔよりも短くなった場合、すなわち、図９に示す状態になったとき、第ｉビット〜第ｋビットまでのＢＩＮと、第０ビット〜第ｋビットまでのｐｉｖｏｔとの排他的論理和演算を実施する（ステップＳ８１０）。
【００４３】
続いて、合成部１０４は、上記記憶回路に格納しておいた排他的論理和演算の結果を、格納された順に連結すると共に、当該連結した末尾にステップＳ８１０にて排他的論理和演算した結果を連結する（ステップＳ８１１）。以上の手順により、合成部１０４は、合成データを生成すると共に、合成処理（図５に示すステップＳ６０７）を終了する。
【００４４】
合成部１０４は、上記生成した合成データを書き込み部１０５に通知する。書き込み部１０５は、合成データを、当該合成データを生成する元となったハイパーリンクと関連付けてドキュメント２００に書き込む（ステップＳ６０８）。合成部１０４は、すべてのハイパーリンクに関して、上記合成処理が終了していない場合（ステップＳ６０９）、ステップＳ６０７に処理を戻すと共に、作業データ記憶部１０６に格納される次のデータについて上記合成処理を実施する。
【００４５】
合成部１０４によりすべてのハイパーリンクに関して上記合成処理が実施され、書き込み部１０５によりドキュメントへの書き込み処理が実施されると（ステップＳ６０９）、変更検出装置１００は、合成動作を終了する。
【００４６】
次に、変更検出装置１００の復元動作の詳細を、図１０を参照して説明する。
【００４７】
変更検出装置１００の抽出部１０１は、管理対象のドキュメントを読み込み（ステップＳ９０１）、当該ドキュメントに記述される参照ファイルのファイル名の二進数表現と、それに関連づけて書き込まれている合成結果の二進数表現とを抽出する（ステップＳ９０２）。続いて抽出部１０１は、抽出したファイル名に関連付けられる参照ファイルの二進数表現を読み出す（ステップＳ９０３）。
【００４８】
続いて列長算出部１０２は、上記図５に示した合成動作における算出と同様に、抽出部１０１が読み出した参照ファイルと合成結果の各二進数列の列長を算出する（ステップＳ９０４）。列長算出部１０２は、抽出部１０１が抽出したすべての合成結果に関して、当該合成結果の二進数列と、参照ファイルの二進数列の列長の算出を行う（ステップＳ９０５）。
【００４９】
続いて、整形部１０３は、列長算出部１０２が列長を算出した二進数列について、整形処理を実施すると共に、整形後のデータを作業データ記憶部１０６に格納する（ステップＳ９０６）。当該整形処理は、上記合成動作における整形処理と同様であるので、詳細な説明を省略する。
【００５０】
続いて、合成部１０４は、作業データ記憶部１０６に格納される、合成結果の二進数列の整形後のデータと、参照ファイルの二進数列の整形後のデータとに関して、合成処理を行う（ステップＳ９０７）。当該合成処理は、上記合成動作における合成処理と同様であるので、詳細な説明を省略する。ただし、この合成処理は、ハイパーリンクを復号するための復号処理でもあり、当該合成処理の結果を復号データ（復号列）と称する。
【００５１】
参照ファイルに変更がない場合は、上記復号データは、当該参照ファイルに関連付けられたハイパーリンクと等しいものとなる。一方、参照ファイルが変更されている場合は、上記復号データは、当該参照ファイルに関連付けられたハイパーリンクとは異なる。合成部１０４は、上記復号データを、変更検出装置１００の表示装置等（不図示）に表示する（ステップＳ９０８）。合成部１０４は、抽出部１０１がステップＳ９０２で抽出したすべての合成結果に関して、合成処理（復号処理）を実施する（ステップＳ９０９）。
【００５２】
ドキュメントの管理者は、上記表示装置等に表示された結果を見て、参照ファイルに対する変更の有無を認知することができる。
【００５３】
以上のように、本第１の実施形態によれば、変更検出装置１００の抽出部１０１は、ドキュメント２００からハイパーリンクを示す二進数列を抽出すると共に、当該ハイパーリンクが指定する参照ファイルを示す二進数列を抽出する。列長算出部１０２は、抽出された２つの二進数表現の列長を算出し、整形部１０３は、当該２つの二進数列の整形を実施する。合成部１０４は、整形された２つの二進数列を互いに排他的論理和演算することにより、合成データを生成する。書き込み部１０５は、当該合成データをハイパーリンクと関連付けてドキュメント２００に書き込む。合成部１０４はまた、ドキュメント２００に書き込まれた合成データを読み出すと共に、当該合成データと、合成データが作成される元となった参照ファイルとを排他的論理和演算することにより、合成データを復元すると共に、その復元の結果を提示する。
【００５４】
上記構成を採用するので、本第１の実施形態に係る変更検出装置１００によれば、ドキュメントの管理者は、当該ドキュメントに書き込まれた合成データを復元した結果に基づいて、当該ドキュメントから参照するファイルに変更がなされたか否かを検知できるという効果が得られる。また、変更検出装置１００によれば、ドキュメントに記述されるハイパーリンクと参照ファイルとを関連付けた結果である合成データをドキュメントに記述するので、他の管理装置に当該合成データを保存等する必要がない。よって、当該ドキュメントの利用が特定の管理装置に限定されないので、本第１の実施形態によれば、ドキュメントのポータビリティを維持することができるという効果が得られる。さらに、本第１の実施形態によれば、ドキュメントと参照ファイルとの版管理を１対１の対応関係で行うものではないので、ドキュメントに変更が生じた場合でも管理に手間が掛からない上に、当該関係付けの更新漏れ等が発生する恐れがないという効果が得られる。
【００５５】
第２の実施形態
次に、本発明の第２の実施形態に係る変更検出装置１０００について説明する。
【００５６】
参照ファイルとして、図表を表す図表ファイルをドキュメントから参照する場合、この図表ファイルのリンク先を指定するハイパーリンクの近傍に、当該図表に関する説明が記述される場合が多い。この場合、図表ファイルが変更されたとき、この近傍に記述される図表に関する説明も変更しなければならない。一方、図表に関する説明が変更されたとき、当該図表ファイルも変更しなければならない可能性が高い。本第２の実施形態では、このような場合に対応できる変更検出装置１０００について説明する。
【００５７】
図１１は、本第２の実施形態に係る変更検出装置１０００の構成を示すブロック図である。図１１に示すように、変更検出装置１０００は、第１の実施形態にて説明した変更検出装置１００が備える構成要素に加えて、文字列抽出部１０７を備える。
【００５８】
文字列抽出部１０７は、変更検出装置１０００が、ドキュメント２００中の図表に関する説明の修正有無を検出するために、当該説明を示す文字列に関して、以下の処理を行う。文字列抽出部１０７による処理の後、変更検出装置１０００の各構成要素は、上記第１の実施形態で説明した動作を行う。
【００５９】
図１２は、文字列抽出部１０７の動作を示すフローチャートである。図１２を参照して、文字列抽出部１０７の動作について説明する。
【００６０】
文字列抽出部１０７は、ドキュメント２００から、図表ファイルのリンク先を指定するハイパーリンクの近傍に記述される、図表に関する説明を示す文字列の範囲を指定する（ステップＳ１１０１）。
【００６１】
続いて文字列抽出部１０７は、上記指定した範囲の文字列の開始点を保存する（ステップＳ１１０２）。開始点とは、ドキュメント２００内において当該文字列の最初の文字が存在する行の番号と、当該文字の左端から数えたときの文字数とを用いて示される座標である。開始点を表す座標は、固定長にて（Ｘ，Ｙ）＝００００Ｘ００００Ｙのように二進数で表現される。ただし、００００Ｘおよび００００Ｙは、それぞれ十分な長さの固定長を有することとする。
【００６２】
続いて文字列抽出部１０７は、上記指定した範囲の文字列の終了点を保存する（ステップＳ１１０３）。終了点とは、ドキュメント２００内において当該文字列の最後の文字が存在する行の番号と、当該文字の左端から数えたときの文字数とを用いて示される座標である。終了点も、上記開始点と同様の座標を用いて二進数で表現される。
【００６３】
続いて文字列抽出部１０７は、上記保存した開始点から終了点までの文字列の二進数表現を読み込む（ステップＳ１１０４）。続いて文字列抽出部１０７は、ステップＳ１１０２にて保存した開始点と、ステップＳ１１０３にて保存した終了点と、ステップＳ１１０４にて読み込んだ文字列の二進数表現とを連結する（ステップＳ１１０５）。そして、文字列抽出部１０７は、上記連結した文字列の長さを算出し（ステップＳ１１０６）、当該連結した文字列に対するハッシュ値を算出する（ステップＳ１１０７）。すなわち、文字列抽出部１０７は、連結した文字列から固定長の疑似乱数を生成するハッシュ関数を用いてハッシュ値を算出する。
【００６４】
文字列抽出部１０７は、上記ステップＳ１１０１からステップＳ１１０７の動作を、ドキュメント２００に記述されるすべての図表に関する説明について実施する。
【００６５】
ステップＳ１１０７まで処理された文字列について、以降、変更検出装置１０００は、第１の実施形態において説明した動作と同様の動作を実施する。すなわち、抽出部１０１は、ドキュメント２００からハイパーリンクを表す二進数表現と、参照ファイル２０２を表す二進数表現とを抽出する。列長算出部１０２は、抽出部１０１が抽出した各二進数列の列長を算出する。整形部１０３は、列長算出部１０２から受け取った二進数列に対して、第１の実施形態において説明したのと同様に、整形処理を実施する。また、整形部１０３は、文字列抽出部１０７から受け取った二進数列に対しても整形処理を実施する。
【００６６】
図１３は、本第２の実施形態にかかる二進数列の演算のための作業用データのデータ構造を示す図である。図１３に示すように、作業用データは、固定長のＬ１（１２０１）、Ｌ２（１２０２）と、可変長のＬＢ（１２０３）とを含む。Ｌ１（１２０１）は、文字列抽出部１０７から受け取った二進数列の列長を格納する。Ｌ２（１２０２）は、抽出部１０７が抽出した、図１２に示すステップＳ１１０４にて文字列を抽出した図表ファイルを指定するハイパーリンクを表す二進数表現を格納する。ＬＢ（１２０３）は、図１２に示すステップＳ１１０７にて算出されたハッシュ値を格納する。なお、Ｌ１（１２０１）とＬ２（１２０２）は、該当するデータを格納するのに十分な桁数を有することとする。
【００６７】
整形部１０３は、上記第１の実施形態にて説明した動作と同様に、ドキュメント２００に含まれるすべてのハイパーリンクを表す二進数列の整形処理を行うと共に、その結果を作業データ記憶部１０６に格納する。同様に、整形部１０３は、文字列抽出部１０７から受け取った二進数列に対しても整形処理を実施すると共に、その結果を作業データ記憶部１０６に格納する。
【００６８】
合成部１０４は、上述のように作業データ記憶部１０６に格納された、図表に関する説明を表す文字列の二進数表現と、ハイパーリンクを表す二進数表現との合成処理を、第１の実施形態と同様に実施する。合成処理以降の動作は、第１の実施形態における図５に示すステップＳ６０７以降の動作と同様である。
【００６９】
図１３に示すように整形された、上記図表に関する説明を示す二進数列と、参照ファイルを示す二進数列とを、第１の実施形態にて説明した動作と同様に合成した結果の復元データに基づいて、管理者は図表に関する説明に変更が生じたかどうかを認識することができる。
【００７０】
以上のように、第２の実施形態によれば、文字列抽出部１０７は、ドキュメント２００から、図表に関する説明を示す文字列を抽出すると共に、当該文字列のハッシュ値を算出する。整形部１０３は、当該文字列の列長と、ドキュメント２００に記述される図表ファイルを指定するハイパーリンクと、上記算出されたハッシュ値とを含む文字列を、図１３に示すように整形する。合成部１０４は、図表に関する説明から生成された二進数列と、当該図表を示す参照ファイルの二進数列とを、排他的論理和演算することにより、合成データを生成する。書き込み部１０５は、当該合成データをハイパーリンクと関連付けてドキュメント２００に書き込む。合成部１０４はまた、ドキュメント２００に書き込まれた合成データを読み出すと共に、当該合成データと、合成データが作成される元となった参照ファイルとを排他的論理和演算することにより、合成データを復元し、その結果を提示する。
【００７１】
上記構成を採用するので、本第２の実施形態に係る変更検出装置１０００によれば、ドキュメントの管理者は、提示された復元の結果に基づいて、当該ドキュメントに記述される、参照ファイルに関する説明に変更がなされたか否かを検知できる。これにより、図表に関する説明が変更されたにも関わらず、図表に対して必要な修正がなされないという修正漏れを防ぐことができるという効果が得られる。
【００７２】
第３の実施形態
図１４は、本発明の第３の実施形態に係る変更検知装置２５０の構成を示すブロック図である。図１４に示すように、変更検知装置２５０は、抽出部２５１、合成部２５２および書き込み部２５３を備える。
【００７３】
抽出部２５１は、電子化されたドキュメントに記述された、当該ドキュメントから参照される参照ファイルのリンク先を表す参照先アドレスを抽出する。合成部２５２は、前記抽出された参照先アドレスを表す第１の二進数列と、当該参照先アドレスによって参照される前記参照ファイルを表す第２の二進数列とを排他的論理和演算することによって合成列を生成する。書き込み部２５３は、前記生成された合成列を、前記参照先アドレスと関連付けて前記ドキュメントに書き込む。
【００７４】
上記構成を採用することにより、本第３の実施形態によれば、ドキュメントに記述されたリンク先の参照ファイルに変更が生じた場合に、当該ドキュメントのポータビリティを維持しながら、当該参照ファイルの変更を管理者が認知できる効果が得られる。
【００７５】
なお、上述した各実施形態では、図１および図１１に示す変更検出装置を、図３に示すＣＰＵ２１０が実行する一例として、ソフトウエア・プログラムによって実現する場合について説明した。しかしながら、図１および図１１に示す各ブロックに示す機能は、一部または全部を、ハードウエアとして実現してもよい。
【００７６】
また、上述した各実施形態を例に説明した本発明は、上述した変更検出装置に対して、その説明において参照したフローチャート（図４、図５、図７、図１０、図１２）の機能を実現可能なコンピュータ・プログラムを供給した後、そのコンピュータ・プログラムを、ＣＰＵ２１０に読み出して実行することによって達成される。
【００７７】
また、係る供給されたコンピュータ・プログラムは、読み書き可能なメモリ（一時記憶媒体）またはハードディスク装置等のコンピュータ読み取り可能な記憶デバイスに格納すればよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムを表すコード或いは係るコンピュータ・プログラムを格納した記憶媒体によって構成されると捉えることができる。
【産業上の利用可能性】
【００７８】
本発明は、例えば、ＨＴＭＬ形式で記述されるドキュメントを管理する情報処理装置に適用できる。
【符号の説明】
【００７９】
１００  変更検出装置
１０１  抽出部
１０２  列長算出部
１０３  整形部
１０４  合成部
１０５  書き込み部
１０６  作業データ記憶部
２００  ドキュメント
２０２  参照ファイル
【図１】
2014160918.tif 000003
【図２】
2014160918.tif 000004
【図３】
2014160918.tif 000005
【図４】
2014160918.tif 000006
【図５】
2014160918.tif 000007
【図６】
2014160918.tif 000008
【図７】
2014160918.tif 000009
【図８】
2014160918.tif 000010
【図９】
2014160918.tif 000011
【図１０】
2014160918.tif 000012
【図１１】
2014160918.tif 000013
【図１２】
2014160918.tif 000014
【図１３】
2014160918.tif 000015
【図１４】
2014160918.tif 000016