(57)【要約】【課題】  プログラムなどのデータを更新（バージョンアップ）する際の差分データのサイズを小さくすることを目的とする。【解決手段】  差分データ生成装置１００において、差分データ第１生成部１２０は、データ記憶部１９０に記憶された旧データ１９２と新データ１９１とを読み込んで、従来のＭｏｖｅ命令コードとＡｄｄ命令コードを使用した変換前差分データ１９３を生成する。差分データ第２生成部１３０は、変換前差分データ１９３に基づいて、Ｍｏｖｅ処理後に新データの処理ポインタの値を更新しない特殊Ｍｏｖｅ命令コードと、新データの処理ポインタの値の更新のみを行うＳｋｉｐ命令コードを使用した変換後差分データ１９４を生成する。差分データ出力部１４０は、変換前差分データ１９３と変換後差分データ１９４とのデータサイズを比較し、データサイズの小さい方を差分データとして出力する。【選択図】        図１５
2006079492.tif 000002
【特許請求の範囲】
【請求項１】
旧データから新データに移行するために、旧データのデータ位置を示す旧データポインタと新データのデータ位置を示す新データポインタとを制御する情報と、移行するデータの情報とに関する命令コードを含む差分データを生成する差分データ生成装置において、
旧データと新データとを記憶するデータ記憶部と、
データ記憶部に記憶された旧データと新データとを読み込んで、
旧データポインタの示す位置とコピーサイズとを示し、旧データポインタの示す位置にあるデータを新データポインタの示す位置からコピーサイズ分コピーし、新データポインタの示す位置からコピーサイズ分移動した位置を示す値を新データポインタに設定することを示す第１Ｍｏｖｅ命令コードを差分データに含めるかの判定と、
追加データと追加データサイズとを示し、新データポインタの示す位置から追加データを追加し、新データポインタの示す位置を追加データサイズ分移動した位置を示す値を新データポインタに設定することを示すＡｄｄ命令コードを差分データに含めるかの判定と、
旧データポインタの示す位置とコピーサイズとを示し、旧データポインタの示す位置にあるデータを新データポインタの示す位置からコピーサイズ分コピーし、新データポインタの値を更新しないことを示す第２Ｍｏｖｅ命令コードを差分データに含めるかの判定と、
ポインタ更新サイズを示し、新データポインタの示す位置からポインタ更新サイズ分移動した位置を示す値を新データポインタに設定することを示すＳｋｉｐ命令コードを差分データに含めるかの判定とを行い記憶部に記憶し、判定結果に基づいて差分データを生成して記憶部に記憶する差分データ生成部と
を備えたことを特徴とする差分データ生成装置。
【請求項２】
上記差分データ生成部は、
データ記憶部に記憶された旧データと新データとに基づいて、第１Ｍｏｖｅ命令コードを差分データに含めるかの判定と、Ａｄｄ命令コードを差分データに含めるかの判定とを行い、第２Ｍｏｖｅ命令コードとＳｋｉｐ命令コードとを含まない差分データを生成する差分データ第１生成部と、
差分データ第１生成部が生成した差分データを入力し、入力した差分データに基づいて、第２Ｍｏｖｅ命令コードを差分データに含めるかの判定と、Ｓｋｉｐ命令コードを差分データに含めるかの判定とを行い、判定結果に基づいて差分データを生成する差分データ第２生成部と
を備えたことを特徴とする請求項１記載の差分データ生成装置。
【請求項３】
上記データ記憶部は、さらに、
旧データの各部分のデータである部分データの位置を示す旧データ配置情報データと、
旧データの部分データに対応している新データの部分データの位置を示す新データ配置情報データとを記憶し、
上記差分データ生成部は、
上記データ記憶部に記憶された旧データ配置情報データと新データ配置情報データとにおいて対応する旧データの部分データと新データの部分データとが同一サイズの場合に、第２Ｍｏｖｅ命令コードを差分データに含めると判定し、対応する旧データの部分データを対応する新データの部分データの位置にコピーすることを示す第２Ｍｏｖｅ命令コードを含む差分データを生成する
ことを特徴とする請求項１記載の差分データ生成装置。
【請求項４】
上記データ記憶部は、
旧データの各部分のデータである部分データの位置を示す旧データ配置情報データと、
旧データの部分データに対応している新データの部分データの位置を示す新データ配置情報データとを記憶し、
上記差分データ生成部は、
上記データ記憶部に記憶された旧データ配置情報データと新データ配置情報データとにおいて対応する旧データの部分データと新データの部分データとが同一サイズの場合に、第２Ｍｏｖｅ命令コードを差分データに含めると判定し、対応する旧データの部分データと対応する新データの部分データとの共通部分列を検索し、旧データの部分データのうち、先頭の共通部分列から最終の共通部分列までを、新データの部分データのうち、先頭の共通部分列から最終の共通部分列の位置にコピーすることを示す第２Ｍｏｖｅ命令コードを含む差分データを生成する
ことを特徴とする請求項１記載の差分データ生成装置。
【請求項５】
上記差分データ生成部は、
データ記憶部に記憶された旧データと新データとに基づいて、第１Ｍｏｖｅ命令コードを差分データに含めるかの判定と、Ａｄｄ命令コードを差分データに含めるかの判定とを行い、第２Ｍｏｖｅ命令コードとＳｋｉｐ命令コードとを含まない差分データを生成する差分データ第１生成部と、
上記データ記憶部に記憶された旧データ配置情報データと新データ配置情報データとにおいて対応する旧データの部分データと新データの部分データとが同一サイズの場合に、第２Ｍｏｖｅ命令コードを差分データに含めると判定し、対応する旧データの部分データを対応する新データの部分データの位置にコピーすることを示す第２Ｍｏｖｅ命令コードを含む差分データを生成する差分データ第２生成部と
差分データ第１生成部が生成した差分データと差分データ第２生成部が生成した差分データとを入力し、入力した差分データのデータサイズを比較し、データサイズの小さい方を差分データとして出力する差分データ出力部と
を備えることを特徴とする請求項３または請求項４記載の差分データ生成装置。
【請求項６】
上記データ記憶部は、
旧データの各部分のデータである部分データの位置を示す旧データ配置情報データと、
旧データの部分データに対応している新データの部分データの位置を示す新データ配置情報データとを記憶し、
上記差分データ生成部は、
上記データ記憶部に記憶された旧データ配置情報データと新データ配置情報データとで対応する旧データの部分データと新データの部分データとの最長共通部分列を検索する最長共通部分列検索部と、
上記データ記憶部に記憶された旧データと新データとに基づいて、第１Ｍｏｖｅ命令コードを差分データに含めるかの判定と、Ａｄｄ命令コードを差分データに含めるかの判定とを行い、最長共通部分列検索部が検索した最長共通部分列を旧データから新データにコピーすることを示す第１Ｍｏｖｅ命令コードを含み、第２Ｍｏｖｅ命令コードとＳｋｉｐ命令コードとを含まない差分データを生成する差分データ第１生成部と、
差分データ第１生成部が生成した差分データを入力し、入力した差分データに基づいて、第２Ｍｏｖｅ命令コードを差分データに含めるかの判定と、Ｓｋｉｐ命令コードを差分データに含めるかの判定とを行い、判定結果に基づいて差分データを生成する差分データ第２生成部と
を備えたことを特徴とする請求項１記載の差分データ生成装置。
【請求項７】
上記差分データ第１生成部は、
第１Ｍｏｖｅ命令コードを差分データに含めると判定した場合、旧データポインタの示す位置を新データポインタの示す位置に対する相対値で表す第１Ｍｏｖｅ命令コードを含む差分データを生成し、
上記差分データ第２生成部は、
上記差分データ第１生成部が生成した差分データを入力し、入力した差分データに含まれる第１Ｍｏｖｅ命令コードを抽出し、抽出した第１Ｍｏｖｅ命令コードの中から、旧データポインタの示す新データポインタに対する相対値が同一である第１Ｍｏｖｅ命令コードを複数取得し、取得した複数の第１Ｍｏｖｅ命令コードを、第２Ｍｏｖｅ命令コードとＳｋｉｐ命令コードとの少なくともいずれかに変換して差分データを生成する
ことを特徴とする請求項２または請求項６記載の差分データ生成装置。
【請求項８】
上記差分データ生成部は、さらに、
上記差分データ第１生成部が生成した差分データと上記差分データ第２生成部が生成した差分データとを入力し、入力した差分データのデータサイズを比較し、データサイズの小さい方を差分データとして出力する差分データ出力部を備えた
ことを特徴とする請求項２または請求項６または請求項７いずれかに記載の差分データ生成装置。
【請求項９】
旧データから新データに移行するために、旧データのデータ位置を示す旧データポインタと新データのデータ位置を示す新データポインタとを制御する情報と、移行するデータの情報とに関する命令コードを含む差分データを生成する差分データ生成装置の差分データ生成方法において、
旧データと新データとを記憶部に記憶するデータ記憶工程と、
データ記憶工程で記憶された旧データと新データとを読み込んで、
旧データポインタの示す位置とコピーサイズとを示し、旧データポインタの示す位置にあるデータを新データポインタの示す位置からコピーサイズ分コピーし、新データポインタの示す位置からコピーサイズ分移動した位置を示す値を新データポインタに設定することを示す第１Ｍｏｖｅ命令コードを差分データに含めるかの判定と、
追加データと追加データサイズとを示し、新データポインタの示す位置から追加データを追加し、新データポインタの示す位置から追加データサイズ分移動した位置を示す値を新データポインタに設定することを示すＡｄｄ命令コードを差分データに含めるかの判定と、
旧データポインタの示す位置とコピーサイズとを示し、旧データポインタの示す位置にあるデータを新データポインタの示す位置からコピーサイズ分コピーし、新データポインタの値を更新しないことを示す第２Ｍｏｖｅ命令コードを差分データに含めるかの判定と、
ポインタ更新サイズを示し、新データポインタの示す位置からポインタ更新サイズ分移動した位置を示す値を新データポインタに設定することを示すＳｋｉｐ命令コードを差分データに含めるかの判定と
を行い記憶部に記憶し、判定結果に基づいて差分データを生成して記憶部に記憶する差分データ生成工程と
を実行することを特徴とする差分データ生成方法。
【請求項１０】
請求項９記載の差分データ生成方法をコンピュータに実行させる差分データ生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ更新のための差分データ生成装置、差分データ生成方法および差分データ生成プログラムに関するものである。
【背景技術】
【０００２】
パーソナルコンピュータや組込み機器（携帯電話、カーナビゲーションシステムなど）などの装置では、プロセッサによって扱われるプログラムなどのデータを更新（バージョンアップ）することがある。バージョンアップの際には、記憶媒体や通信網を介して更新前データと更新後データの差分データを装置に送り、装置内で差分データを更新前データに適用して更新後データを生成する、という方法が一般的である。なお、更新前データと更新後データの差分データは、バージョンアップ対象の装置とは別の装置（差分データ生成装置）においてあらかじめ生成される。
【０００３】
通信帯域の狭い無線網などを使用して差分情報を装置に送付するようなシステムにおいては特に、差分データのサイズは小さいことが望ましい。そして、差分データの表現方法、抽出方法を工夫することによって、差分データサイズを小さくすることが可能である。
【０００４】
図１は、旧データ１９２と新データ１９１を示す図である。
各種データ、特に組込み機器向けプログラムやカーナビゲーションシステム向けの地図データなどのバージョンアップに際しては、図１に示すように、旧データ１９２と新データ１９１との位置がずれて、且つ、ずれた部分について飛び飛びでデータの内容が変更になっている、というパターンの更新が多く見られる。
図１ではＡとＡ’、ＣとＣ’、ＥとＥ’、ＧとＧ’の内容が同一でＢとＢ’、ＤとＤ’、ＦとＦ’の内容が変更になっている。
【０００５】
図２は、従来例による差分データを示す図である。
図１に示す旧データ１９２と新データ１９１とに対する差分データとして一般的な差分データ表現方法を図２に基づいて説明する。
一般的な差分データ表現方法には、例えばＷａｌｔｅｒ  Ｆ．Ｔｉｃｈｙの論文「Ｔｈｅ  Ｓｔｒｉｎｇ−ｔｏ−Ｓｔｒｉｎｇ  Ｃｏｒｒｅｃｔｉｏｎ  Ｐｒｏｂｌｅｍ  ｗｉｔｈ  Ｂｌｏｃｋ  Ｍｏｖｅｓ」がある。
この表現方法は、旧データ１９２の一部、あるいは全部からデータを移動して前記新データ１９１にコピーすることを意味するＭｏｖｅ命令と、新データ１９１に当該差分データ中に記述したデータを追加することを意味するＡｄｄ命令とを差分データ表現に用いる方法である。
図１の例に適用すると（ただしＡ〜Ｇ、Ａ’〜Ｇ’の範囲に限定）、図２に示すような差分データで旧データ１９２と新データ１９１の間の差分を表現することが出来る。
ＡからＡ’、ＣからＣ’、ＥからＥ’、ＧからＧ’のデータの移行はＭｏｖｅ命令で表され、Ｂ’、Ｄ’、Ｆ’への新規データの追加はＡｄｄ命令で表されている。
Ｍｏｖｅ命令は位置情報として旧データにおける対象データの位置するアドレスを示している。
Ｍｏｖｅ命令には旧データ１９２における位置情報が必要となるため、図２のようにＭｏｖｅ命令とＡｄｄ命令が交互に現れるようなケースではＭｏｖｅ命令の位置情報が差分データサイズ増加の要因の一つとなってしまう。
【０００６】
このＭｏｖｅ命令の位置情報により差分データサイズが増加することに対して、Ｍｏｖｅ命令には新データ１９１と旧データ１９２のオフセット情報を用い、Ｍｏｖｅ命令を表現する際には直前のＭｏｖｅ命令のオフセット情報を参照し、オフセットが同じ場合は１ビットのフラグを立てて直前のＭｏｖｅ命令とオフセットが同じであることを示すことで、Ｍｏｖｅ命令のオフセット情報を省略するという方法が開示されている（特許文献１）。
オフセットとは、旧データ１９２内の移行データを新データ１９１内の移行位置に移行する際の相対値を示す。
普通にオフセット情報を示すには１ビットより多くのデータが必要であることから（例えば１ｂｙｔｅ）、前記方法によって余分なオフセット情報を省略し、差分データサイズを小さくすることができる。
【０００７】
前記特許文献１の方法によって表現される図１に対する差分データは図３に示すような形式になる。
図１に示すＡからＡ’、ＣからＣ’、ＥからＥ’、ＧからＧ’のデータ移行についてＭｏｖｅ命令の位置情報をオフセットで表すと、オフセットはそれぞれ「＋１００」で同じとなる。図３は、連続する同一オフセットである「＋１００」を１ビットの「ｆｌａｇ」で表したものである。
【０００８】
しかしながら前記差分表現方法では、図４に示すようにＢ’、Ｆ’が旧データ１９２の別の位置（Ｈ）からのＭｏｖｅ命令で表現できる場合には、Ｍｏｖｅ命令のオフセットが連続して同じ値をとらないため、前記フラグを用いたオフセット情報の省略はあまり効果がない。
【０００９】
図４に示す旧データ１９２から新データ１９１への更新を特許文献１の方法によって表現すると図５のようになる。
この場合には、「ｆｌａｇ」は１ヶ所しか使用できず、フラグを用いたオフセット情報の省略にあまり効果が無いことを示している。
【００１０】
図４のようなケースに対して効果のある方法として、特許文献１ではＭｏｖｅ命令で頻繁に用いられるオフセット情報は一つまたは複数のビットで表現する、という方法について開示されている。この方法によって、図４におけるＡ’、Ｃ’、Ｅ’、Ｇ’のＭｏｖｅ命令についてオフセット情報を一つまたは複数のビットで表現することで差分データサイズを小さくすることができる。
図４においては、「ｆｌａｇ」を含め「＋１００」をオフセットとするＭｏｖｅ命令が４つあり、「＋１００」を示すビット表現を用いることで差分データサイズを小さくする。
【００１１】
しかしながら、図６に示すようにＡ’がＡだけでなくＩとも等しく、Ｅ’がＥだけでなくＪとも等しいようなケースでは、特許文献１で開示された処理では必ずしもＡ→Ａ’、Ｅ→Ｅ’というＭｏｖｅ命令が差分として抽出されるとは限らない。同一オフセットを一つまたは複数のビットで表現するような手法では、同じオフセットが出来るだけ多く現れた方が差分データを小さくすることが出来るが、図６のようなケースでＩ→Ａ’、Ｊ→Ｅ’というようにＭｏｖｅ命令が差分として抽出された場合、差分データのサイズ削減効果は小さくなってしまう。
【００１２】
図６に示す旧データ１９２から新データ１９１への更新を特許文献１の方法によって表現すると図７のようになる。
この場合には、同一オフセットは「＋１００」が２ヶ所にあるだけで、「＋１００」という値を示す「＋１００ｆｌａｇ」を２ヶ所で使用することしかできない。また、「＋１００ｆｌａｇ」が「＋１００」という値であることを示す別情報を持たなければ行けないことからも差分データのサイズ削減効果は小さくなってしまう。
【特許文献１】特開２００４−１５２１３６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
一つのバージョンのデータを別のバージョンのデータに更新するためのデータ更新システムにおいて、更新前データと更新後データの差分データサイズを小さくすることが要求されている。このような状況において、各種データ、特に組込み機器向けプログラムやカーナビゲーションシステム向けの地図データなどのバージョンアップに際しては、図１や図４、図６のようなパターンの更新が多く見受けられるが、従来の技術では前記のようなパターンに対して小さいサイズで差分データを表現できなかったり、小さいサイズで差分データを表現できる可能性があってもそのような表現で差分データを抽出することが保証されないという課題があった。
【００１４】
本発明は、上記課題の解決を踏まえてなされたもので、従来の技術では差分データを小さいサイズで表現できなかったような更新パターンにおいて差分データを小さく表現できることと、差分データを小さく表現することが出来る可能性がある場合に的確に差分データを小さく表現することができるようにすることなどを目的とする。
【課題を解決するための手段】
【００１５】
本発明の差分データ生成装置は、旧データと新データとを記憶するデータ記憶部と、データ記憶部に記憶された旧データと新データとを読み込んで、旧データポインタの示す位置とコピーサイズとを示し、旧データポインタの示す位置にあるデータを新データポインタの示す位置からコピーサイズ分コピーし、新データポインタの示す位置からコピーサイズ分移動した位置を示す値を新データポインタに設定することを示す第１Ｍｏｖｅ命令コードを差分データに含めるかの判定と、追加データと追加データサイズとを示し、新データポインタの示す位置から追加データを追加し、新データポインタの示す位置を追加データサイズ分移動した位置を示す値を新データポインタに設定することを示すＡｄｄ命令コードを差分データに含めるかの判定と、旧データポインタの示す位置とコピーサイズとを示し、旧データポインタの示す位置にあるデータを新データポインタの示す位置からコピーサイズ分コピーし、新データポインタの値を更新しないことを示す第２Ｍｏｖｅ命令コードを差分データに含めるかの判定と、ポインタ更新サイズを示し、新データポインタの示す位置からポインタ更新サイズ分移動した位置を示す値を新データポインタに設定することを示すＳｋｉｐ命令コードを差分データに含めるかの判定とを行い記憶部に記憶し、判定結果に基づいて差分データを生成して記憶部に記憶する差分データ生成部とを備えたことを特徴とする。
【発明の効果】
【００１６】
本発明によれば、例えば、従来の技術では差分データを小さいサイズで表現できなかったような更新パターンにおいて差分データを小さく表現できる。
【発明を実施するための最良の形態】
【００１７】
実施の形態１．
まず、差分データの表現方法について説明する。
差分データ生成装置では従来のＭｏｖｅ命令（第１Ｍｏｖｅ命令または第１Ｍｏｖｅ命令コード）、Ａｄｄ命令（Ａｄｄ命令コード）に加えて特殊Ｍｏｖｅ命令（第２Ｍｏｖｅ命令または第２Ｍｏｖｅ命令コード）とＳｋｉｐ命令（Ｓｋｉｐ命令コード）とを差分データの表現に用いる。
特殊Ｍｏｖｅ命令は、旧データ１９２の一部、あるいは全部からデータを移動して前記新データ１９１にコピーした後に、前記新データ１９１に対する書換えポインタを前記コピーデータの先頭に移動させることを意味する。
Ｓｋｉｐ命令は、新データ１９１に対する書換えポインタを前方に指定長分進めることを意味する。
【００１８】
ここで、各差分命令のフォーマットの例を図８に示す。
ただし、図８に示すのはあくまでも説明のための例であって、本発明の効果が図８に示すフォーマットに限定されていることを示すものではない。
Ｍｏｖｅ命令は、Ｍｏｖｅを表す命令識別子１ｂｙｔｅ（バイト）と旧データ１９２と新データ１９１とのオフセット（Ｍｏｖｅオフセット）２ｂｙｔｅ、Ｍｏｖｅ対象のデータ長（Ｍｏｖｅサイズ）４ｂｙｔｅで表現している。
Ａｄｄ命令は、Ａｄｄを表す命令識別子１ｂｙｔｅとＡｄｄするサイズ（Ａｄｄサイズ）２ｂｙｔｅ、および実際にＡｄｄする内容（Ａｄｄデータ）で表現している。また、ＡｄｄデータのサイズはＡｄｄサイズである。
特殊Ｍｏｖｅ命令は、特殊Ｍｏｖｅを表す命令識別子１ｂｙｔｅと旧データ１９２と新データ１９１とのオフセット（特殊Ｍｏｖｅオフセット）２ｂｙｔｅ、Ｍｏｖｅ対象のデータ長（特殊Ｍｏｖｅサイズ）４ｂｙｔｅで表現する。
Ｓｋｉｐ命令は、Ｓｋｉｐを表す命令識別子１ｂｙｔｅとＳｋｉｐするサイズ（Ｓｋｉｐサイズ）４ｂｙｔｅで表現している。
Ｓｋｉｐ命令ではＭｏｖｅ命令や特殊Ｍｏｖｅ命令とは異なりオフセット情報が不要であるため、Ｍｏｖｅ命令や特殊Ｍｏｖｅ命令と比較して小さいサイズで表現することができる。
【００１９】
図９には、図１で示す更新パターンにおける、Ａ’からＧ’までの部分の差分データを示している。
差分データは従来の方法としてＭｏｖｅ命令とＡｄｄ命令だけを用い、Ｍｏｖｅ命令の位置情報をオフセットで表した場合の差分データである。
この場合、図８に示す命令フォーマットを使用すると、Ｍｏｖｅ命令（７ｂｙｔｅ）が４つで２８ｂｙｔｅ、Ａｄｄ命令（３ｂｙｔｅ＋Ａｄｄサイズ）が１３ｂｙｔｅ、２３ｂｙｔｅ、１３ｂｙｔｅで差分データの合計サイズは７７ｂｙｔｅになる。
【００２０】
図１０は、図１で示す更新パターンにおける、Ａ’からＧ’までの部分の差分データを特殊Ｍｏｖｅ命令とＳｋｉｐ命令とを使用して示している。
図中において特殊Ｍｏｖｅ命令を「Ｍｏｖｅ’」で示す。
最初の特殊Ｍｏｖｅ命令によって、旧データ１９２のＡからＧまでのデータを新データ１９１のＡ’からＧ’にコピーした後、新データ１９１の更新ポインタをＡ’の先頭に戻す。
次にＳｋｉｐ命令によって更新ポインタを１００ｂｙｔｅ進めてＢ’の先頭に移動させる。
次にＡｄｄ命令によってＢ’の内容１０ｂｙｔｅ分のデータを追加する。
それ以降も同様の処理を行う。このような差分データ表現によって、Ａ’からＧ’までの間を更新することが可能である。
なお、この場合の差分データのサイズは、特殊Ｍｏｖｅ命令が７ｂｙｔｅ、Ｓｋｉｐ命令（５ｂｙｔｅ）が４つで２０ｂｙｔｅ、Ａｄｄ命令（３ｂｙｔｅ＋Ａｄｄサイズ）が１３ｂｙｔｅ、２３ｂｙｔｅ、１３ｂｙｔｅで合計７６ｂｙｔｅであり、図９に示した従来の差分データより小さいサイズになっている。
図１の例に対しては、差分データのサイズは１ｂｙｔｅしか小さくなっていないが、ＭｏｖｅとＡｄｄの繰り返し数が大きくなるにつれて差分データとしてより小さくなる。
【００２１】
なお、差分データを使用して行う旧データから新データへのデータ更新処理は、特殊Ｍｏｖｅ命令が差分データに現れた時点でＭｏｖｅサイズ分のコピーを行うのではなく、特殊Ｍｏｖｅ命令のオフセットとＭｏｖｅサイズを記憶部に記憶し、その後に発生するＳｋｉｐ命令の適用時に、前記Ｓｋｉｐ命令の対象範囲が前記特殊Ｍｏｖｅ命令のＭｏｖｅ範囲に含まれるかどうかを判断し、含まれている場合には前記Ｓｋｉｐ命令をＭｏｖｅ命令に置き換えて処理することも可能である。
このＳｋｉｐ命令をＭｏｖｅ命令に置き換える処理は、前記特殊Ｍｏｖｅ命令のオフセットをＭｏｖｅオフセットとし、前記Ｓｋｉｐ命令のＳｋｉｐサイズをＭｏｖｅサイズとすることで行える。
この更新処理によって、特殊Ｍｏｖｅ命令をその意味通りに処理した際の無駄なコピー処理を回避することが可能となる。
例えば、図１の例では新データ１９１におけるＢ’、Ｄ’、Ｆ’部分へのコピーをしなくてもよいことになる。
【００２２】
次に、従来の方法では効率的に差分データを表現できない図４のパターンが効率的に表現できることを図１１と図１２とを用いて説明する。
【００２３】
図１１は、図４の更新パターンに対して位置情報をＭｏｖｅオフセットで表したＭｏｖｅ命令とＡｄｄ命令とで表した従来の差分データを示している。
この場合の差分データは、Ｍｏｖｅ命令が６つで４２ｂｙｔｅ、Ａｄｄ命令が２３ｂｙｔｅで合計６５ｂｙｔｅになる。
【００２４】
図１２は、図４の更新パターンに対して特殊Ｍｏｖｅ命令とＳｋｉｐ命令とを使用して表した差分データである。
この場合の差分データは、特殊Ｍｏｖｅ命令が７ｂｙｔｅ、Ｍｏｖｅ命令が２つで１４ｂｙｔｅ、Ｓｋｉｐ命令が４つで２０ｂｙｔｅ、Ａｄｄ命令が２３ｂｙｔｅで合計６４ｂｙｔｅとなり、図１１で示した従来の差分データより小さいサイズになっている。
【００２５】
また、特許文献１のオフセット省略フラグを用いた場合にはＭｏｖｅ命令のオフセットが同じ値で連続しないために差分データサイズ圧縮の効果が薄れるのに対し、特殊Ｍｏｖｅ命令は図４の更新パターンでも図１の更新パターンと同様に使用することが可能であり、差分データサイズの圧縮効果が薄れることはない。
【００２６】
上記において、特殊Ｍｏｖｅ命令とＳｋｉｐ命令とを使用して差分データを生成すれば、従来のＭｏｖｅ命令の命令サイズとＳｋｉｐ命令の命令サイズとのサイズ差分、差分データのデータサイズを小さくすることができることを説明した。
このため、図６の更新パターンに対してもＳｋｉｐ命令の使用が多くなるに従い、従来の差分データに比べ差分データを小さくすることができる。
【００２７】
次に、特殊Ｍｏｖｅ命令とＳｋｉｐ命令とを使用した差分データを生成する差分データ生成装置について説明する。
【００２８】
図１３は、実施の形態１における差分データ生成装置１００の外観を示す図である。
図１３において、差分データ生成装置１００は、システムユニット９１０、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）表示装置９０１、キーボード（Ｋ／Ｂ）９０２、マウス９０３、コンパクトディスク装置（ＣＤＤ）９０５、プリンタ装置９０６、スキャナ装置９０７を備え、これらはケーブルで接続されている。
さらに、差分データ生成装置１００は、ＦＡＸ機９３２、電話器９３１とケーブルで接続され、また、ローカルエリアネットワーク（ＬＡＮ）９４２、ウェブサーバ９４１を介してインターネット９４０に接続されている。
【００２９】
図１４は、実施の形態１における差分データ生成装置１００のハードウェア構成図である。
図１４において、差分データ生成装置１００は、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９１１を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、通信ボード９１５、ＣＲＴ表示装置９０１、Ｋ／Ｂ９０２、マウス９０３、ＦＤＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）９０４、磁気ディスク装置９２０、ＣＤＤ９０５、プリンタ装置９０６、スキャナ装置９０７と接続されている。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０、光ディスク装置は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
通信ボード９１５は、ＦＡＸ機９３２、電話器９３１、ＬＡＮ９４２等に接続されている。
例えば、通信ボード９１５、Ｋ／Ｂ９０２、スキャナ装置９０７、ＦＤＤ９０４などは、情報入力部の一例である。
また、例えば、通信ボード９１５、ＣＲＴ表示装置９０１などは、出力部の一例である。
【００３０】
ここで、通信ボード９１５は、ＬＡＮ９４２に限らず、直接、インターネット９４０、或いはＩＳＤＮ等のＷＡＮ（ワイドエリアネットワーク）に接続されていても構わない。直接、インターネット９４０、或いはＩＳＤＮ等のＷＡＮに接続されている場合、差分データ生成装置１００は、インターネット９４０、或いはＩＳＤＮ等のＷＡＮに接続され、ウェブサーバ９４１は不用となる。
磁気ディスク装置９２０には、オペレーティングシステム（ＯＳ）９２１、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３は、ＣＰＵ９１１、ＯＳ９２１、ウィンドウシステム９２２により実行される。
【００３１】
上記プログラム群９２３には、各実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
ファイル群９２４には、各実施の形態の説明において、「〜の判定結果」、「〜の判断結果」、「〜の計算結果」、「〜の処理結果」として説明するものが、「〜ファイル」として記憶されている。
また、各実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータの入出力を示し、そのデータの入出力のためにデータは、磁気ディスク装置９２０、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  ｃａｒｔｒｉｄｇｅ）、光ディスク、ＣＤ（コンパクトディスク）、ＭＤ（ミニディスク）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のその他の記録媒体に記録される。あるいは、信号線やその他の伝送媒体により伝送される。
【００３２】
また、各実施の形態の説明において「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、ハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
【００３３】
また、各実施の形態を実施するプログラムは、磁気ディスク装置９２０、ＦＤ、光ディスク、ＣＤ、ＭＤ、ＤＶＤ等のその他の記録媒体による記録装置を用いて記憶されても構わない。
【００３４】
図１５は、実施の形態１における差分データ生成装置１００の内部構成図である。
図１５において、実施の形態１における差分データ生成装置１００は、旧データから新データに移行するために、旧データのデータ位置を示す旧データポインタと新データのデータ位置を示す新データポインタとを制御する情報と、移行するデータの情報とに関する命令コード（Ｍｏｖｅ命令コード、Ａｄｄ命令コード、特殊Ｍｏｖｅ命令コード、Ｓｋｉｐ命令コード）を含む差分データを生成する。
また、差分データを生成するためにデータ記憶部１９０と差分データ生成部１１０とを備える。
【００３５】
差分データ生成部１１０は、差分データ第１生成部１２０と差分データ第２生成部１３０と差分データ出力部１４０とを備えて差分データを生成し出力する。
【００３６】
差分データ第１生成部１２０は、データ記憶部１９０に記憶された旧データ１９２と新データ１９１とに基づいて以下の処理を行う。
旧データポインタの示す位置とコピーサイズとを示し、旧データポインタの示す位置にあるデータを新データポインタの示す位置からコピーサイズ分コピーし、新データポインタの示す位置をコピーサイズ分移動した値を新データポインタに設定することを示す第１Ｍｏｖｅ命令コード（従来のＭｏｖｅ命令コード）を差分データに含めるかの判定を行う。
また、追加データと追加データサイズとを示し、新データポインタの示す位置から追加データを追加し、新データポインタの示す位置を追加データサイズ分移動した位置を示す値を新データポインタに設定することを示すＡｄｄ命令コードを差分データに含めるかの判定を行う。
そして、判定結果に基づいて変換前差分データ１９３（特殊Ｍｏｖｅ命令とＳｋｉｐ命令とを使用しない差分データ）を生成し、データ記憶部１９０に記憶する。
【００３７】
差分データ第２生成部１３０は、データ記憶部１９０に記憶された変換前差分データ１９３に基づいて以下の処理を行う。
旧データポインタの示す位置とコピーサイズとを示し、旧データポインタの示す位置にあるデータを新データポインタの示す位置からコピーサイズ分コピーし、新データポインタの値を更新しないことを示す第２Ｍｏｖｅ命令コード（特殊Ｍｏｖｅ命令コード）を差分データに含めるかの判定を行う。
また、ポインタ更新サイズを示し、ポインタ更新サイズ分移動した位置を示す値を新データポインタに設定することを示すＳｋｉｐ命令コードを差分データに含めるかの判定を行う。
そして、判定結果に基づいて変換後差分データ１９４（特殊Ｍｏｖｅ命令とＳｋｉｐ命令とを使用する差分データ）を生成し、データ記憶部１９０に記憶する。
【００３８】
差分データ出力部１４０は、データ記憶部１９０に記憶された変換前差分データ１９３のデータサイズと変換後差分データ１９４のデータサイズとを比較し、データサイズの小さい方を差分データとして出力する。
【００３９】
図１の更新パターンを旧データ１９２から新データ１９１への更新とした場合は、図９の差分データが変換前差分データ１９３に相当し、図１０の差分データが変換後差分データ１９４に相当し、サイズの小さい変換後差分データ１９４が適用される差分データになる。
【００４０】
図１６は、実施の形態１における差分データ生成装置１００の処理の流れを示すフローチャートである。
図１６に示すように、差分データ生成装置１００は以下の処理を行う。
【００４１】
まず、差分データ第１生成部１２０は、データ記憶部１９０に記憶された新データ１９１と旧データ１９２とを入力し、入力した新データ１９１と旧データ１９２とに基づいて変換前差分データ１９３を生成しデータ記憶部１９０に記憶する（Ｓ１０１）。
【００４２】
差分データ第１生成部１２０が行う変換前差分データ１９３の生成処理は、従来の差分抽出処理を用いることができる。
例えば、Ｗａｌｔｅｒ  Ｆ．Ｔｉｃｈｙの論文「Ｔｈｅ  Ｓｔｒｉｎｇ−ｔｏ−Ｓｔｒｉｎｇ  Ｃｏｒｒｅｃｔｉｏｎ  Ｐｒｏｂｌｅｍ  ｗｉｔｈ  Ｂｌｏｃｋ  Ｍｏｖｅｓ」において使用されている処理で変換前差分データ１９３を生成する。
【００４３】
次に、差分データ第２生成部１３０は、データ記憶部１９０に記憶された変換前差分データ１９３を入力し、入力した変換前差分データ１９３に基づいて変換後差分データ１９４を生成しデータ記憶部１９０に記憶する（Ｓ１０２）。
【００４４】
図１７は、実施の形態１における差分データ第２生成部１３０の処理の流れを示すフローチャートである。
Ｓ１０２の差分データ第２生成部１３０の変換後差分データ１９４生成処理について図１７に基づいて説明する。
まず、変換前差分データ１９３からすべてのＭｏｖｅ命令のオフセット情報を抽出する（Ｓ２０１）。
次に、同一オフセットを持つＭｏｖｅ命令が複数個ある場合には、これらのＭｏｖｅ命令の内、先頭のＭｏｖｅ命令の直前の位置に特殊Ｍｏｖｅ命令を挿入する。
このとき、特殊Ｍｏｖｅ命令のＭｏｖｅサイズは、最後のＭｏｖｅ命令でＭｏｖｅするデータの終了アドレスと、先頭のＭｏｖｅ命令でＭｏｖｅするデータの開始アドレスの差を設定する。
また、特殊Ｍｏｖｅ命令のオフセットはＭｏｖｅ命令のオフセットと同一にする。
次に、前記同一オフセットを持つＭｏｖｅ命令すべてをＳｋｉｐ命令に置き換える（Ｓ２０３）。
このとき、Ｓｋｉｐサイズは置き換え対象Ｍｏｖｅ命令のＭｏｖｅサイズと同じにする。
こうすることで、差分データ４０６を特殊Ｍｏｖｅ命令を用いた差分データに変換することができる。
【００４５】
差分データ第２生成部１３０の変換後差分データ１９４生成処理の動作例を図１と図９と図１０を用いて説明する。
Ｓ２０１において、図９に示す変換前差分データ１９３からＭｏｖｅ命令のオフセット情報を抽出することで、オフセット「＋１００」のＭｏｖｅ命令が４つあることが分かる。
この４つのＭｏｖｅ命令は図１のＡ’、Ｃ’、Ｅ’、Ｇ’に相当する。
Ｓ２０２において、これらＭｏｖｅ命令の先頭にあたる「Ｍｏｖｅ  ＋１００  １００」命令の直前に特殊Ｍｏｖｅ命令「Ｍｏｖｅ’  ＋１００  ４４０」を挿入する。
Ｓ２０３において、各Ｍｏｖｅ命令をＳｋｉｐ命令に置き換えることで、変換後差分データ１９４が生成される。
生成される変換後差分データ１９４は図１０に示す差分データである。
【００４６】
図１６において、差分データ出力部１４０は、データ記憶部１９０に記憶された変換前差分データ１９３と変換後差分データ１９４とを入力し、変換後差分データ１９４と変換前差分データ１９３とのサイズを比較する。そして、変換後差分データ１９４のサイズの方が小さい場合は、変換後差分データ１９４を差分データとして出力する。また、変換前差分データ１９３のサイズの方が小さい場合は、変換前差分データ１９３を差分データとして出力する（Ｓ１０３）。
【００４７】
なお、前記の差分データ第２生成部１３０の変換後差分データ１９４生成処理では、同一オフセットのＭｏｖｅ命令が複数個あった場合には、前記に該当するすべてのＭｏｖｅ命令を特殊Ｍｏｖｅ命令でまとめていた。
但し、前記に該当する一部のＭｏｖｅ命令のみを特殊Ｍｏｖｅ命令でまとめても構わない。
さらに、前記に該当するＭｏｖｅ命令の様々な組合せに対して特殊Ｍｏｖｅ命令を適用し、その際にもっとも差分データサイズが小さい組合せを判定し特殊Ｍｏｖｅ命令を挿入しても構わない。
【００４８】
以上の構成、および処理を有することによって、差分データ生成装置１００は従来の技術では差分データを小さいサイズで表現できなかったような更新パターンにおいて差分データを小さく表現することができる。
【００４９】
また、差分データ生成部１１０が差分データ第１生成部１２０と差分データ第２生成部１３０とを備えることで、変換前差分データ１９３と変換後差分データ１９４とを生成でき、さらに、差分データ出力部１４０を備えることで、よりサイズの小さい差分データを選択することができる。
【００５０】
実施の形態２．
実施の形態２において、上記実施の形態１と異なる部分を説明し、その他の部分は上記実施の形態１と同様であるものとする。
図１８は、実施の形態２における差分データ生成装置１００の内部構成図である。
図１８において、データ記憶部１９０は、旧データ１９２の各部分のデータである部分データの位置を示す旧データ配置情報データ１９７と、新データ１９１の各部分のデータである部分データの位置を示す新データ配置情報データ１９６とを記憶する。
また、差分データ生成部１１０は、部分データ対応付け部１５０と差分抽出部１６０とを備える。
【００５１】
部分データ対応付け部１５０は、データ記憶部１９０に記憶された新データ配置情報データ１９６と旧データ配置情報データ１９７とを入力し、新データ配置情報データ１９６に示される新データ１９１の部分データと、旧データ配置情報データ１９７に示される旧データ１９２の部分データとを対応付けた部分データ対応付け情報データ１９８を生成しデータ記憶部１９０に記憶する。
【００５２】
差分抽出部１６０は、データ記憶部１９０に記憶された部分データ対応付け情報データ１９８と旧データ１９２と新データ１９１とに基づいて、特殊Ｍｏｖｅ命令とＳｋｉｐ命令とを使用した差分データ１９５を生成する。
【００５３】
図１９は、実施の形態２における新旧データと配置情報データとを示す図である。
旧データ１９２は４つの部分データＡ、Ｂ、Ｃ、Ｄから構成される。また、この情報は旧データ配置情報データ１９７に記載されている。
旧データ配置情報データ１９７の「Ａ  ０  ５００」という行は、部分データＡがアドレス０からサイズ５００の範囲にあることを示している。
同様に新データ１９１にも部分データＡ、Ｂ、Ｃ、Ｄが存在する。
なお図１９の例では、新データ配置情報データ１９６が旧データ配置情報データ１９７に対して部分データＡのサイズが２００増えていること、部分データＢの開始アドレスが２００増加していること、部分データＣの開始アドレスが２００増えてサイズが１００増加していること、部分データＤの開始アドレスが３００増えてサイズが３００減少していることが分かる。
【００５４】
一般的には新旧データ間では部分データは１対１で対応することが多いが、旧データ１９２では存在しなかった部分データが新データ１９１には存在したり、旧データ１９２には存在した部分データが新データ１９１には存在しない、というケースもある。
【００５５】
旧データ１９２および新データ１９１の配置情報データには、新旧データがプログラムのバイナリイメージである場合には、プログラムをリンクする際に出力されるリンクマップファイルを用いることができる。このリンクマップファイルとはプログラム内の配置情報が記述されたものである。
また、配置情報は必ずしもデータとは別情報として提供されなければならないわけではなく、データ内に配置情報も含むようなデータであれば、配置情報としてデータそのものを使用することも可能である。データ内に配置情報を含むデータには、例えばＤＬＬ（Ｄｙｎａｍｉｃ  Ｌｉｎｋ  Ｌｉｂｒａｒｙ）がある。
【００５６】
そして、部分データとは例えば、プログラムのリンクにおけるセクションのことを指す。
また、旧データ１９２、新データ１９１それぞれが唯一つの部分データから構成される、とみなすことも可能である。この場合、配置情報データは必要ない。
【００５７】
図２０は、実施の形態２における部分データ対応付け情報データ１９８を示す図である。
部分データ対応付け部１５０は、旧データ配置情報データ１９７と新データ配置情報データ１９６とに基づいて、旧データ１９２と新データ１９１の部分データの対応付けを行い、図２０に示すような部分データ対応付け情報データ１９８を生成する。
図２０において、部分データ対応付け情報データ１９８は、旧データ１９２と新データ１９１との部分データＡ同士、部分データＢ同士、部分データＣ同士、部分データＤ同士のオフセットとサイズとを対応付けている。また、同一サイズである部分データＢについて同一サイズフラグを設定している。
【００５８】
部分データ対応付け情報データ１９８を使用して差分データを生成する方法を以下に示す。
第一の方法では、対応付けられた部分データ同士のサイズが同じ場合は、その領域全体を特殊Ｍｏｖｅ命令で表現した後、旧部分データの先頭と新部分データの先頭とから順番に比較して行き、一致する部分にはＳｋｉｐ命令を、一致しない部分にはＡｄｄ命令もしくは旧データ１９２の違う部分のデータを指定したＭｏｖｅ命令を割り当てる。
【００５９】
第一の方法を図２１を用いて説明する。
対応付けられた旧データ１９２の部分データ（ｐ１からｐ６の間に位置するデータ）と新データ１９１の部分データ（ｑ１からｑ６の間に位置するデータ）のサイズが同じであったとする。
この場合、最初にｐ１からｐ６及びｑ１からｑ６のサイズと、ｐ１とｑ１のオフセットをそれぞれ特殊Ｍｏｖｅサイズと特殊Ｍｏｖｅオフセットとする特殊Ｍｏｖｅ命令を生成する。
そして、旧データ１９２のｐ１、新データ１９１のｑ１にそれぞれ着目する。
次に、ｐ１、ｑ１からそれぞれ１単位（例えば１ｂｙｔｅ）ずつ旧データ１９２と新データ１９１を比較して行く。
ｐ２とｑ２に到達し、旧データ１９２と新データ１９１とで異なる位置が見つかると、まず新データ１９１のｑ１からｑ２の間をＳｋｉｐ命令で表現する。
次に、ｐ２、ｑ２から１単位ずつ旧データ１９２と新データ１９１を比較して行き、ｐ３とｑ３で再び新旧データ１９２の一致を発見する。
この時点でｐ２からｐ３の範囲に対する差分データを生成する。
ここで、ｐ２からｐ３の範囲に対する差分データの生成方法として、新データ１９１のｐ２からｐ３の部分はＡｄｄ命令で表現するか、旧データ１９２から一致する部分を発見してＭｏｖｅ命令で表現するか、もしくはＡｄｄ命令とＭｏｖｅ命令の組合せで表現する、などの方法を用いることが出来る。
そして再びｐ３、ｑ３から同様の処理を継続して行き、最終的にｐ６とｑ６に到達した時点でＳｋｉｐ命令を出力して処理を終了する。
【００６０】
図２２は、実施の形態２における差分抽出部１６０の処理の流れを示すフローチャートである。
上記第一の差分データ生成方法の処理の流れについて図２２に基づいて説明する。
差分抽出部１６０は、データ記憶部１９０に記憶された部分データ対応付け情報データ１９８の同一サイズフラグを参照し、旧データ１９２と新データ１９１とで対応する同一サイズの部分データを検索し、検索した部分データに対して以下の処理を行い、特殊Ｍｏｖｅ命令とＳｋｉｐ命令とを生成する。
【００６１】
まず、検索した旧データ１９２と新データ１９１との部分データのサイズと、旧データ１９２の部分データが新データ１９１の部分データに対する相対アドレスを、特殊Ｍｏｖｅサイズおよび特殊Ｍｏｖｅオフセットとする特殊Ｍｏｖｅ命令を生成する（Ｓ２０１）。
次に、未処理の部分データに対し、旧データ１９２の部分データと新データ１９１の部分データとから１バイトずつ取得する（Ｓ２０３）。
次に、取得した旧データ１９２の１バイトと新データ１９１の１バイトとを比較する（Ｓ２０４）。
取得した旧データ１９２の１バイトと新データ１９１の１バイトとを比較した結果、同一値である場合、旧データ１９２の部分データと新データ１９１の部分データとからの１バイトずつの取得（Ｓ２０３）と比較（Ｓ２０４）とを、未処理データが無いと判定する（Ｓ２０２）か、取得した１バイトが異なる（Ｓ２０４）まで繰り返す。
取得した旧データ１９２の１バイトと新データ１９１の１バイトとを比較した結果、異なる値である場合、取得した旧データ１９２の部分データと新データ１９１の部分データの同一であった部分について、同一部分のサイズをＳｋｉｐサイズとするＳｋｉｐ命令を生成する（Ｓ２０５）。
【００６２】
また、取得した旧データ１９２の１バイトと新データ１９１の１バイトとを比較した結果、同一値であった後、未処理の部分データが無いと判定した場合（Ｓ２０２）、Ｓ２０５と同様にして同一部分のサイズをＳｋｉｐサイズとするＳｋｉｐ命令を生成し、処理を終える（Ｓ２１０）。
【００６３】
Ｓｋｉｐ命令を生成（Ｓ２０５）後、未処理の部分データの有無を判定する（Ｓ２０６）。
未処理の部分データが有ると判定した場合、未処理の部分データに対し、旧データ１９２の部分データと新データ１９１の部分データとから１バイトずつ取得する（Ｓ２０７）。
次に、取得した旧データ１９２の１バイトと新データ１９１の１バイトとを比較する（Ｓ２０８）。
取得した旧データ１９２の１バイトと新データ１９１の１バイトとを比較した結果、異なる値である場合、旧データ１９２の部分データと新データ１９１の部分データとからの１バイトずつの取得（Ｓ２０７）と比較（Ｓ２０８）とを、未処理データが無いと判定する（Ｓ２０６）か、取得した１バイトが同一値を示す（Ｓ２０８）まで繰り返す。
取得した旧データ１９２の１バイトと新データ１９１の１バイトとを比較した結果、同一値である場合、取得した旧データ１９２の部分データと新データ１９１の部分データとで異なった部分について、Ａｄｄ命令、Ｍｏｖｅ命令を生成する。例えば、異なる部分のサイズと異なる部分の新データ１９１とをＡｄｄサイズおよびＡｄｄデータとするＡｄｄ命令を生成し、Ｓ２０２から処理を繰り返す（Ｓ２０９）。
【００６４】
また、取得した旧データ１９２の１バイトと新データ１９１の１バイトとを比較した結果、異なる値であった後、未処理の部分データが無いと判定した場合（Ｓ２０６）、Ｓ２０９と同様にしてＡｄｄ命令、Ｍｏｖｅ命令を生成し、処理を終える（Ｓ２１１）。
【００６５】
上記説明において、特殊Ｍｏｖｅ命令を生成する（Ｓ２０１）前に、旧データ１９２と新データ１９１の先頭から順次比較を行って最初に一致した部分を特殊Ｍｏｖｅ命令の対象範囲の先頭とし、旧データ１９２と新データ１９１の末尾から順次先頭方向に向かって比較を行って最初に一致した部分を特殊Ｍｏｖｅ命令の対象範囲の末尾とする、といった処理を追加してもよい。
これにより、無駄な領域のコピーを防ぐことができる。
【００６６】
また、さらに特殊Ｍｏｖｅ命令を用いない従来の方法により差分データを抽出し、差分データサイズを比較してサイズの小さい方を当該部分データに対する差分データとして出力してもよい。
そのためには、上記実施の形態１で説明した差分データ第１生成部１２０と差分データ出力部１４０とを実施の形態２における差分データ生成装置１００が備えればよい。
これにより、差分データ生成装置１００は、より小さいサイズの差分データを出力できる。
【００６７】
実施の形態２において、差分データ生成装置１００は、旧データ配置情報データ１９７と新データ配置情報データ１９６とを入力として、同一サイズである旧データの部分データと新データの部分データとに対して、特殊Ｍｏｖｅ命令とＳｋｉｐ命令とを使用した差分データを生成できることを説明した。
【００６８】
実施の形態３．
実施の形態３では、部分データ対応付け情報データ１９８を使用した差分データの第２の生成方法について説明する。
実施の形態３において、上記実施の形態と異なる部分を説明し、その他の部分は上記実施の形態と同様であるものとする。
図２３は、実施の形態３における差分データ生成装置１００の内部構成図である。
差分データ生成装置１００の内部構成について、上記実施の形態１の図１５および上記実施の形態２の図１８と異なる構成を図２３に基づいて説明し、その他の構成は図１５および図１８と同様であるものとする。
【００６９】
差分データ第１生成部１２０はＬＣＳ（Ｌｏｎｇｅｓｔ  Ｃｏｍｍｏｎ  Ｓｕｂｓｅｑｕｅｎｃｅ）抽出部１２１を備える。
また、差分データ第１生成部１２０は部分データ対応付け情報データ１９８と新データ１９１と旧データ１９２とを入力として、特殊Ｍｏｖｅ命令とＳｋｉｐ命令とを使用しない差分データである変換前差分データ１９３を出力する。
差分データ第２生成部１３０は、部分データ対応付け情報データ１９８と変換前差分データ１９３とを入力として、特殊Ｍｏｖｅ命令とＳｋｉｐ命令とを使用した変換後差分データ１９４を出力する。
【００７０】
ＬＣＳ抽出部１２１は、旧データ１９２と新データ１９１とで対応する部分データから最長共通部分列（ＬＣＳ）を抽出する。
ＬＣＳの抽出については、従来の技術として例えば「Ｅ．Ｗ．Ｍｙｅｒｓ，  “Ａｎ  Ｏ（ＮＤ）  ｄｉｆｆｅｒｅｎｃｅ  ａｌｇｏｒｉｔｈｍ  ａｎｄ  ｉｔｓ  ｖａｒｉａｔｉｏｎｓ”，  Ａｌｇｏｒｉｔｈｍｉｘａ，  １  （１９８６），  ｐｐ２５１−２６６」などの効率的なアルゴリズムが知られており、これら従来の技術を用いることができる。
ＬＣＳには、旧データ１９２から新データ１９１へのコピーに際して、旧データ１９２での順番と新データ１９１での順番が入れ替わるようなコピーは検出しない、という特徴がある。
図６の例で説明すると、ＪからＥ’へのコピーとＧからＧ’へのコピーは同時に検出されず、ＥからＥ’、ＧからＧ’へのコピーは同時に検出可能である。
この特徴から、図１や図６に示すような旧データ１９２から新データ１９１への更新において位置ずれが発生し、かつ途中にデータの変更が発生しているようなケースにおいて、特殊Ｍｏｖｅ命令で表現できるパターン、つまり同一オフセットのＭｏｖｅ命令が連続するパターンを検出できる確率が、図６のＪからＥ’、ＧからＧ’を同時に抽出できる通常の差分データ抽出方法と比べて高いといえる。このため、ＬＣＳの抽出により、差分データを小さく表現することが出来る可能性がある場合に的確に差分データを小さく表現し、特殊Ｍｏｖｅ命令とＳｋｉｐ命令を使用してより効果的な差分データを生成することができる。
【００７１】
差分データ第１生成部１２０はＬＣＳを求めた後、ＬＣＳと判定された部分列をＭｏｖｅ命令で表現し、それでない部分はＡｄｄ命令で表現することで変換前差分データ１９３を生成する。
図２４の例では、ＡとＡ’、ＢとＢ’・・・ＧとＧ’が共通部分と判定され、それぞれがＭｏｖｅ命令で表現され、残りの部分はＡｄｄ命令で表現される。
【００７２】
次に、差分データ第２生成部１３０が行う同一オフセットのＭｏｖｅ命令を集めて一つの特殊Ｍｏｖｅ命令に置き換える処理について説明する。
処理の一例として、上記実施の形態１で説明したように、同一オフセットのＭｏｖｅ命令のうち先頭から末尾までを一つの特殊Ｍｏｖｅ命令で表現する処理が考えられる。
また、差分データを先頭から探索して行き、最初に見つかったＭｏｖｅ命令のオフセットを記憶し、同一オフセットではないＭｏｖｅ命令が見つかるまで、もしくは比較範囲である部分データの末尾に到達するまでの範囲を特殊Ｍｏｖｅ命令で表現する動作も考えられる。
この際、Ａｄｄ命令については読み飛ばすものとする。
【００７３】
後者の処理を図２４を用いて説明する。
新データ１９１のＡ’に対するＭｏｖｅ命令を最初に読み込み、そのオフセット情報を記憶しておく。
Ａ’に対するＭｏｖｅ命令の次はＡｄｄ命令であり、これは無視する。
次にＢ’に対するＭｏｖｅ命令が見つかり、オフセット情報は前出のＡ’に対するＭｏｖｅ命令のオフセット情報と同一なので、Ｂ’に対するＭｏｖｅ命令も特殊Ｍｏｖｅ命令の範囲候補とする。
同様にしてＣ’、Ｄ’に対するＭｏｖｅ命令も同一オフセットであるので、特殊Ｍｏｖｅ命令の範囲候補とする。
Ａｄｄ命令をはさんでＥ’に対するＭｏｖｅ命令を発見するが、このオフセット情報はＡ’に対するオフセット情報とは異なる。
そのため、Ａ’から直前のＭｏｖｅ命令の対象、つまりＤ’までを特殊Ｍｏｖｅ命令の対象範囲として出力する。
また、異なるオフセット情報が発見されたので、Ｅ’に対するＭｏｖｅ命令以降は、Ｅ’に対するＭｏｖｅ命令のオフセット情報を比較するオフセット情報として処理を進める。
結果、Ｅ’、Ｆ’、Ｇ’に対するＭｏｖｅ命令のオフセット情報が同一であり、またＧ’が部分データの末尾なので、Ｅ’からＧ’への範囲を特殊Ｍｏｖｅ命令の対象範囲とする。
【００７４】
次に、差分データ第２生成部１３０の動作を説明する。
図２４の例では、Ａ’からＤ’の範囲、およびＥ’からＧ’の範囲を表す差分データの先頭に特殊Ｍｏｖｅ命令を挿入し、Ｍｏｖｅ命令はＳｋｉｐ命令に置き換える。
また、Ａｄｄ命令はそのままＡｄｄ命令として表現するか、Ａｄｄ命令に相当する新データ１９１の範囲について旧データ１９２から一致部分を探してＭｏｖｅ命令に置き換える。
また、Ｄ’とＥ’にはさまれた範囲についてはそのままＡｄｄ命令を出力するか、もしくは旧データ１９２全体から一致部分を探してＭｏｖｅ命令で表現し変換後差分データ１９４を生成する。
【００７５】
差分データ出力部１４０は、変換前差分データ１９３と変換後差分データ１９４とのサイズを比較し、サイズの小さい方を差分データとして出力する。
これにより、より小さい差分データを選択することができる。
【００７６】
図２５は、実施の形態３における差分データ第１生成部１２０の処理の流れを示すフローチャートである。
また、図２６は実施の形態３における差分データ第２生成部１３０の処理の流れを示すフローチャートである。
上記に説明した差分データ第１生成部１２０と差分データ第２生成部１３０との処理の流れを図２５および図２６に基づいて説明する。
【００７７】
図２５において、差分データ第１生成部１２０は以下の処理を行い、変換前差分データ１９３を生成する。
部分データ対応付け情報データ１９８を参照し、旧データ１９２と新データ１９１とから対応する部分データを取得する（Ｓ３０２）。
ＬＣＳ抽出部１２１を起動し、取得した部分データからＬＣＳを抽出する（Ｓ３０３）。
抽出したＬＣＳに対して、ＬＣＳの長さと、ＬＣＳの旧データ１９２における新データ１９１に対する相対位置を示す値とを、ＭｏｖｅサイズおよびＭｏｖｅオフセットにしたＭｏｖｅ命令を生成する（Ｓ３０４）。
抽出したＬＣＳのサイズを判定する（Ｓ３０５）。
抽出したＬＣＳのサイズが一定値以上であれば、同一の部分データに対して、抽出したＬＣＳの次に長い共通部分列を抽出し（Ｓ３０３）、抽出した共通部分列に対するＭｏｖｅ命令の生成（Ｓ３０４）を行う。ＬＣＳのサイズを判定する一定値は任意であり、例えば、Ｍｏｖｅ命令で表した方がＡｄｄ命令で表すより命令コードのサイズが小さくなる値である。図８に示す命令コードフォーマットの場合、ＬＣＳのサイズが４ｂｙｔｅ以上かの判定を行う。
抽出したＬＣＳのサイズが一定値未満であれば、ＬＣＳとして抽出されなかった部分に対してＡｄｄ命令を生成する（Ｓ３０６）。
Ａｄｄ命令を生成（Ｓ３０６）後、部分データ対応付け情報データ１９８を参照し、旧データ１９２と新データ１９１とから新たに部分データを取得し（Ｓ３０２）、ＬＣＳの抽出（Ｓ３０３）、Ｍｏｖｅ命令の生成（Ｓ３０４）、Ａｄｄ命令の生成（Ｓ３０６）を行う。
部分データ対応付け情報データ１９８を参照した結果、新たに部分データが無い場合、処理を終える（Ｓ３０１）。
【００７８】
次に、図２６において、差分データ第２生成部１３０は以下の処理を行い、変換後差分データ１９４を生成する。
変換後差分データ１９４から命令コードを取得する（Ｓ４０２）。
取得した命令コードを判定する（Ｓ４０３）。
取得した命令コードがＡｄｄ命令の場合、次の命令コードを取得し（Ｓ４０２）、取得した命令コードを判定する（Ｓ４０３）。
取得した命令コードがＭｏｖｅ命令の場合、Ｍｏｖｅオフセットを判定する（Ｓ４０４）。
取得したＭｏｖｅ命令のＭｏｖｅオフセットが、取得した一つ前のＭｏｖｅ命令のＭｏｖｅオフセットと同一である場合、取得したＭｏｖｅ命令をＳｋｉｐ命令に置換する（Ｓ４０５）。
Ｍｏｖｅ命令をＳｋｉｐ命令に置換（Ｓ４０５）後、次の命令コードを取得し（Ｓ４０２）、取得した命令コードを判定し（Ｓ４０３）、処理を繰り返す。
取得したＭｏｖｅ命令のＭｏｖｅオフセットが、取得した直前のＭｏｖｅ命令のＭｏｖｅオフセットと同一でない場合、特殊Ｍｏｖｅ命令を挿入する（Ｓ４０６）。
また、一つ前の特殊Ｍｏｖｅ命令のＭｏｖｅオフセットに、Ｓｋｉｐ命令に置き換えたＭｏｖｅ命令のＭｏｖｅオフセットを設定する。
また、一つ前の特殊Ｍｏｖｅ命令のＭｏｖｅサイズに、Ｍｏｖｅ命令から置き換えたＳｋｉｐ命令のＳｋｉｐサイズと、Ｓｋｉｐ命令に挟まれたＡｄｄ命令のＡｄｄサイズとの合計サイズを設定する。
特殊Ｍｏｖｅ命令を挿入（Ｓ４０６）後、次の命令コードを取得し（Ｓ４０２）、取得した命令コードを判定し（Ｓ４０３）、処理を繰り返す。
全ての命令コードを処理し、取得する命令コードが無いと判定した場合、処理を終了する（Ｓ４０１）。
【００７９】
以上の構成および処理を有することによって、差分データ生成装置１００は、従来の技術では差分データを小さいサイズで表現できなかったような更新パターンにおいて差分データを小さく表現することができる。
また、差分データを小さく表現することが出来る可能性がある場合に的確に差分データを小さく表現することができる。
【００８０】
実施の形態４．
実施の形態４では、部分データ対応付け情報データ１９８を使用した差分データの第３の生成方法について説明する。
実施の形態４において、上記実施の形態と異なる部分を説明し、その他の部分は上記実施の形態と同様であるものとする。
図２７は、実施の形態４における差分データ生成装置１００の内部構成図である。
差分データ生成装置１００の内部構成について、上記実施の形態１の図１５、上記実施の形態２の図１８および上記実施の形態３の図２３と異なる構成を図２７に基づいて説明し、その他の構成は図１５、図１８および図２３と同様であるものとする。
【００８１】
差分データ生成部１１０は、差分ＬＣＳ抽出部１７０を備える。
差分ＬＣＳ抽出部１７０は、ＬＣＳ抽出部１７１を備える。
また、差分ＬＣＳ抽出部１７０は、部分データ対応付け情報データ１９８と新データ１９１と旧データ１９２とを入力とし、差分データ１９５を生成する。
また、ＬＣＳ抽出部１７１は、上記実施の形態３のＬＣＳ抽出部１２１と同様にＬＣＳの抽出を行なう。
【００８２】
図２８は、実施の形態４における部分データ対応付け情報データ１９８を示す図である。
実施の形態４において部分データ対応付け部１５０は、図２８に示すような部分データ対応付け情報データ１９８を生成する。
部分データ対応付け情報データ１９８は、部分結合データフラグ項目を持ち、図１９において、旧データ１９２の部分データＡ、Ｂ、Ｃ、Ｄを結合したデータと、新データ１９１の部分データＡ、Ｂ、Ｃ、Ｄを結合したデータとが同一サイズであることを示している。
【００８３】
図２９は、実施の形態４における差分ＬＣＳ抽出部１７０の処理の流れを示すフローチャートである。
実施の形態４における差分ＬＣＳ抽出部１７０の差分データ生成処理について図２９に基づいて説明する。
【００８４】
図２８に示すような部分データ対応付け情報データ１９８から一つデータを取得し、部分データが部分結合データに含まれるか判定する（Ｓ５０２）。
部分データが部分結合データに含まれる場合、結合部分データに含まれる部分データのオフセットと合計サイズとを、特殊Ｍｏｖｅオフセットおよび特殊Ｍｏｖｅサイズとする特殊Ｍｏｖｅ命令を生成する（Ｓ５０４）。
結合部分データに含まれる各部分データに対して、ＬＣＳを抽出し、Ｓｋｉｐ命令とＡｄｄ命令との生成を行う（Ｓ５０５〜Ｓ５１０）。
Ｓ５０５〜Ｓ５１０の処理は、上記実施の形態３の図２５に示す差分データ第１生成部１２０の処理Ｓ３０１〜Ｓ３０６と同様であり、差分ＬＣＳ抽出部１７０は、抽出したＬＣＳに対してＭｏｖｅ命令ではなくＳｋｉｐ命令を生成する（Ｓ５０６）。
結合部分データに含まれる全ての部分データに対して処理し、取得する部分データが無いと判定した場合（Ｓ５０５）、次の結合部分データを取得し、特殊Ｍｏｖｅ命令を生成し、処理を繰り返す。
部分データが部分結合データに含まれない場合、上記実施の形態２の図２２や、上記実施の形態３の図２５および図２６に示す処理を行い、部分結合データに含まれない部分データに対する差分データを生成する（Ｓ５０３）。
部分データ対応付け情報データ１９８に示される全ての部分データを処理した場合、処理を終了する（Ｓ５０１）。
【００８５】
上記実施の形態において、以下のことを説明した。
新旧２つのデータに対して、旧データ１９２から新データ１９１へバージョンアップするための差分データを抽出する差分データ生成装置において、前記差分データとして、前記旧データ１９２の一部、あるいは全部からデータを移動して前記新データ１９１にコピーすることを意味する０個以上のＭｏｖｅ命令と、新データ１９１に当該差分データ中に記述したデータを追加することを意味する０個以上のＡｄｄ命令と、前記旧データ１９２の一部、あるいは全部からデータを移動して前記新データ１９１にコピーした後に、前記新データ１９１に対する書換えポインタを前記コピーデータの先頭に移動させることを意味する０個以上の特殊Ｍｏｖｅ命令と、前記新データ１９１に対する書換えポインタを前方に指定長分進めることを意味する０個以上のＳｋｉｐ命令とで構成される差分データを生成する差分データ生成装置１００について説明した。
【００８６】
また、差分データ生成装置１００が、特殊Ｍｏｖｅ命令を含まない形式で旧データ１９２から新データ１９１へバージョンアップするための差分データを抽出する差分抽出処理手段と、前記特殊Ｍｏｖｅ命令を含まない形式の差分データに対して、特殊Ｍｏｖｅ命令で表現した方が差分データサイズが小さくなるような箇所を発見して、特殊Ｍｏｖｅ命令を含んだ表現に置き換える差分データ変換手段とを有すること説明した。
【００８７】
また、差分データ生成装置１００が、新旧データ１９２、もしくは新旧データ１９２に付随して提供される配置情報データに含まれる新旧データ１９２の配置情報を元に、新旧データ１９２の部分データ同士を対応付ける部分データ対応付け手段と、前記領域対応付け機能によって対応付けられた新旧データ１９２の部分データ同士を比較して差分データを生成する差分抽出処理手段とを有し、差分抽出処理手段が、対応付けられた部分データ同士のデータ長が同一の場合には、差分データの構成要素として前記部分データ領域分のコピーを示す特殊Ｍｏｖｅ命令を用いることを説明した。
【００８８】
また、差分抽出処理手段が、対応付けられた部分データ同士のデータ長が同一の場合には、新旧データ１９２の先頭から同一オフセット同士を比較し、最初に一致する位置から最後に一致する位置までの間を特殊Ｍｏｖｅ命令で表現することを説明した。
【００８９】
差分抽出処理手段が、対応付けられた部分データ同士に対して最長共通部分系列を求め、求まった最長共通部分列を差分データとして表現する最長共通部分系列計算手段と、最長共通部分系列計算手段によって生成された差分データから特殊Ｍｏｖｅ命令で表現する範囲を０個以上選び出す複写範囲決定手段と、複写範囲決定手段によって特殊Ｍｏｖｅ命令で表現することが決まった範囲を特殊Ｍｏｖｅ命令を用いた差分データで置き換える差分データ生成手段から構成されること説明した。
【００９０】
差分データ生成手段が、複写範囲決定手段によって特殊Ｍｏｖｅ命令で表現することが決まった範囲は特殊Ｍｏｖｅ命令を用いた差分データで置き換え、そうでない範囲に対しては通常の差分データを新たに生成する差分データ生成手段であることを説明した。
【００９１】
差分抽出処理手段が、特殊Ｍｏｖｅ命令を構成要素として含む差分データと、特殊Ｍｏｖｅ命令を構成要素として含まない差分データとの２種類を生成し、サイズの小さい方の差分データを差分データとして出力することを説明した。
【００９２】
差分抽出処理手段が、特殊Ｍｏｖｅ命令を構成要素として含むように生成された差分データの各特殊Ｍｏｖｅ命令に相当する新データ１９１の範囲に対して、特殊Ｍｏｖｅ命令を使用しないパターンでも差分抽出を行い、前記範囲の差分データについて特殊Ｍｏｖｅ命令を使用した差分データと使用しない差分データとでデータサイズを比較し、特殊Ｍｏｖｅ命令を使用しない差分データの方がサイズが小さい場合は前記新データ１９１の範囲に対する差分データを前記特殊Ｍｏｖｅ命令を使用しない差分データに置き換えることを説明した。
【図面の簡単な説明】
【００９３】
【図１】旧データ１９２と新データ１９１を示す図。
【図２】従来例による差分データを示す図。
【図３】従来例による差分データを示す図。
【図４】旧データ１９２と新データ１９１を示す図。
【図５】従来例による差分データを示す図。
【図６】旧データ１９２と新データ１９１を示す図。
【図７】従来例による差分データを示す図。
【図８】実施の形態１における差分データの命令コードフォーマットを示す図。
【図９】従来例による差分データを示す図。
【図１０】実施の形態１における差分データを示す図。
【図１１】従来例による差分データを示す図。
【図１２】実施の形態１における差分データを示す図。
【図１３】実施の形態１における差分データ生成装置１００の外観を示す図。
【図１４】実施の形態１における差分データ生成装置１００のハードウェア構成図。
【図１５】実施の形態１における差分データ生成装置１００の内部構成図。
【図１６】実施の形態１における差分データ生成装置１００の処理の流れを示すフローチャート。
【図１７】実施の形態１における差分データ第２生成部１３０の処理の流れを示すフローチャート。
【図１８】実施の形態２における差分データ生成装置１００の内部構成図。
【図１９】実施の形態２における新旧データと配置情報データとを示す図。
【図２０】実施の形態２における部分データ対応付け情報データ１９８を示す図。
【図２１】実施の形態２における旧データ１９２と新データ１９１を示す図。
【図２２】実施の形態２における差分抽出部１６０の処理の流れを示すフローチャート。
【図２３】実施の形態３における差分データ生成装置１００の内部構成図。
【図２４】実施の形態３における旧データ１９２と新データ１９１を示す図。
【図２５】実施の形態３における差分データ第１生成部１２０の処理の流れを示すフローチャート。
【図２６】実施の形態３における差分データ第２生成部１３０の処理の流れを示すフローチャート。
【図２７】実施の形態４における差分データ生成装置１００の内部構成図。
【図２８】実施の形態４における部分データ対応付け情報データ１９８を示す図。
【図２９】実施の形態４における差分ＬＣＳ抽出部１７０の処理の流れを示すフローチャート。
【符号の説明】
【００９４】
１００  差分データ生成装置、１１０  差分データ生成部、１２０  差分データ第１生成部、１２１  ＬＣＳ抽出部、１３０  差分データ第２生成部、１４０  差分データ出力部、１５０  部分データ対応付け部、１６０  差分抽出部、１７０  差分ＬＣＳ抽出部、１７１  ＬＣＳ抽出部、１９０  データ記憶部、１９１  新データ、１９２  旧データ、１９３  変換前差分データ、１９４  変換後差分データ、１９５  差分データ、１９６  新データ配置情報データ、１９７  旧データ配置情報データ、１９８  部分データ対応付け情報データ、９０１  ＣＲＴ表示装置、９０２  Ｋ／Ｂ、９０３  マウス、９０４  ＦＤＤ、９０５  ＣＤＤ、９０６  プリンタ装置、９０７  スキャナ装置、９１０  システムユニット、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  磁気ディスク装置、９２１  ＯＳ、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群、９３１  電話器、９３２  ＦＡＸ機、９４０  インターネット、９４１  ウェブサーバ、９４２  ＬＡＮ。
【図１】
2006079492.tif 000003
【図２】
2006079492.tif 000004
【図３】
2006079492.tif 000005
【図４】
2006079492.tif 000006
【図５】
2006079492.tif 000007
【図６】
2006079492.tif 000008
【図７】
2006079492.tif 000009
【図８】
2006079492.tif 000010
【図９】
2006079492.tif 000011
【図１０】
2006079492.tif 000012
【図１１】
2006079492.tif 000013
【図１２】
2006079492.tif 000014
【図１３】
2006079492.tif 000015
【図１４】
2006079492.tif 000016
【図１５】
2006079492.tif 000017
【図１６】
2006079492.tif 000018
【図１７】
2006079492.tif 000019
【図１８】
2006079492.tif 000020
【図１９】
2006079492.tif 000021
【図２０】
2006079492.tif 000022
【図２１】
2006079492.tif 000023
【図２２】
2006079492.tif 000024
【図２３】
2006079492.tif 000025
【図２４】
2006079492.tif 000026
【図２５】
2006079492.tif 000027
【図２６】
2006079492.tif 000028
【図２７】
2006079492.tif 000029
【図２８】
2006079492.tif 000030
【図２９】
2006079492.tif 000031