JP2008041112A - 差分データ生成装置、差分データ生成装置の差分データ生成方法および差分データ生成プログラム - Google Patents

差分データ生成装置、差分データ生成装置の差分データ生成方法および差分データ生成プログラム Download PDF

Info

Publication number
JP2008041112A
JP2008041112A JP2007249287A JP2007249287A JP2008041112A JP 2008041112 A JP2008041112 A JP 2008041112A JP 2007249287 A JP2007249287 A JP 2007249287A JP 2007249287 A JP2007249287 A JP 2007249287A JP 2008041112 A JP2008041112 A JP 2008041112A
Authority
JP
Japan
Prior art keywords
data
size
instruction code
new
copy
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007249287A
Other languages
English (en)
Other versions
JP4249793B2 (ja
Inventor
Satoshi Mitsui
聡 三井
Ryozo Kiyohara
良三 清原
Daizo Kikko
大造 橘高
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2007249287A priority Critical patent/JP4249793B2/ja
Publication of JP2008041112A publication Critical patent/JP2008041112A/ja
Application granted granted Critical
Publication of JP4249793B2 publication Critical patent/JP4249793B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】プログラムなどのデータを更新(バージョンアップ)する際の差分データのサイズを小さくすることを目的とする。
【解決手段】差分データ生成装置100において、差分データ第1生成部120は、データ記憶部190に記憶された旧データ192と新データ191とを読み込んで、従来のMove命令コードとAdd命令コードを使用した変換前差分データ193を生成する。差分データ第2生成部130は、変換前差分データ193に基づいて、Move処理後に新データの処理ポインタの値を更新しない特殊Move命令コードと、新データの処理ポインタの値の更新のみを行うSkip命令コードを使用した変換後差分データ194を生成する。差分データ出力部140は、変換前差分データ193と変換後差分データ194とのデータサイズを比較し、データサイズの小さい方を差分データとして出力する。
【選択図】図15

Description

本発明は、データ更新のための差分データ生成装置、差分データ生成方法および差分データ生成プログラムに関するものである。
パーソナルコンピュータや組込み機器(携帯電話、カーナビゲーションシステムなど)などの装置では、プロセッサによって扱われるプログラムなどのデータを更新(バージョンアップ)することがある。バージョンアップの際には、記憶媒体や通信網を介して更新前データと更新後データの差分データを装置に送り、装置内で差分データを更新前データに適用して更新後データを生成する、という方法が一般的である。なお、更新前データと更新後データの差分データは、バージョンアップ対象の装置とは別の装置(差分データ生成装置)においてあらかじめ生成される。
通信帯域の狭い無線網などを使用して差分情報を装置に送付するようなシステムにおいては特に、差分データのサイズは小さいことが望ましい。そして、差分データの表現方法、抽出方法を工夫することによって、差分データサイズを小さくすることが可能である。
図1は、旧データ192と新データ191を示す図である。
各種データ、特に組込み機器向けプログラムやカーナビゲーションシステム向けの地図データなどのバージョンアップに際しては、図1に示すように、旧データ192と新データ191との位置がずれて、且つ、ずれた部分について飛び飛びでデータの内容が変更になっている、というパターンの更新が多く見られる。
図1ではAとA’、CとC’、EとE’、GとG’の内容が同一でBとB’、DとD’、FとF’の内容が変更になっている。
図2は、従来例による差分データを示す図である。
図1に示す旧データ192と新データ191とに対する差分データとして一般的な差分データ表現方法を図2に基づいて説明する。
一般的な差分データ表現方法には、例えばWalter F.Tichyの論文「The String−to−String Correction Problem with Block Moves」がある。
この表現方法は、旧データ192の一部、あるいは全部からデータを移動して前記新データ191にコピーすることを意味するMove命令と、新データ191に当該差分データ中に記述したデータを追加することを意味するAdd命令とを差分データ表現に用いる方法である。
図1の例に適用すると(ただしA〜G、A’〜G’の範囲に限定)、図2に示すような差分データで旧データ192と新データ191の間の差分を表現することが出来る。
AからA’、CからC’、EからE’、GからG’のデータの移行はMove命令で表され、B’、D’、F’への新規データの追加はAdd命令で表されている。
Move命令は位置情報として旧データにおける対象データの位置するアドレスを示している。
Move命令には旧データ192における位置情報が必要となるため、図2のようにMove命令とAdd命令が交互に現れるようなケースではMove命令の位置情報が差分データサイズ増加の要因の一つとなってしまう。
このMove命令の位置情報により差分データサイズが増加することに対して、Move命令には新データ191と旧データ192のオフセット情報を用い、Move命令を表現する際には直前のMove命令のオフセット情報を参照し、オフセットが同じ場合は1ビットのフラグを立てて直前のMove命令とオフセットが同じであることを示すことで、Move命令のオフセット情報を省略するという方法が開示されている(特許文献1)。
オフセットとは、旧データ192内の移行データを新データ191内の移行位置に移行する際の相対値を示す。
普通にオフセット情報を示すには1ビットより多くのデータが必要であることから(例えば1byte)、前記方法によって余分なオフセット情報を省略し、差分データサイズを小さくすることができる。
前記特許文献1の方法によって表現される図1に対する差分データは図3に示すような形式になる。
図1に示すAからA’、CからC’、EからE’、GからG’のデータ移行についてMove命令の位置情報をオフセットで表すと、オフセットはそれぞれ「+100」で同じとなる。図3は、連続する同一オフセットである「+100」を1ビットの「flag」で表したものである。
しかしながら前記差分表現方法では、図4に示すようにB’、F’が旧データ192の別の位置(H)からのMove命令で表現できる場合には、Move命令のオフセットが連続して同じ値をとらないため、前記フラグを用いたオフセット情報の省略はあまり効果がない。
図4に示す旧データ192から新データ191への更新を特許文献1の方法によって表現すると図5のようになる。
この場合には、「flag」は1ヶ所しか使用できず、フラグを用いたオフセット情報の省略にあまり効果が無いことを示している。
図4のようなケースに対して効果のある方法として、特許文献1ではMove命令で頻繁に用いられるオフセット情報は一つまたは複数のビットで表現する、という方法について開示されている。この方法によって、図4におけるA’、C’、E’、G’のMove命令についてオフセット情報を一つまたは複数のビットで表現することで差分データサイズを小さくすることができる。
図4においては、「flag」を含め「+100」をオフセットとするMove命令が4つあり、「+100」を示すビット表現を用いることで差分データサイズを小さくする。
しかしながら、図6に示すようにA’がAだけでなくIとも等しく、E’がEだけでなくJとも等しいようなケースでは、特許文献1で開示された処理では必ずしもA→A’、E→E’というMove命令が差分として抽出されるとは限らない。同一オフセットを一つまたは複数のビットで表現するような手法では、同じオフセットが出来るだけ多く現れた方が差分データを小さくすることが出来るが、図6のようなケースでI→A’、J→E’というようにMove命令が差分として抽出された場合、差分データのサイズ削減効果は小さくなってしまう。
図6に示す旧データ192から新データ191への更新を特許文献1の方法によって表現すると図7のようになる。
この場合には、同一オフセットは「+100」が2ヶ所にあるだけで、「+100」という値を示す「+100flag」を2ヶ所で使用することしかできない。また、「+100flag」が「+100」という値であることを示す別情報を持たなければ行けない
ことからも差分データのサイズ削減効果は小さくなってしまう。
特開2004−152136号公報
一つのバージョンのデータを別のバージョンのデータに更新するためのデータ更新システムにおいて、更新前データと更新後データの差分データサイズを小さくすることが要求されている。このような状況において、各種データ、特に組込み機器向けプログラムやカーナビゲーションシステム向けの地図データなどのバージョンアップに際しては、図1や図4、図6のようなパターンの更新が多く見受けられるが、従来の技術では前記のようなパターンに対して小さいサイズで差分データを表現できなかったり、小さいサイズで差分データを表現できる可能性があってもそのような表現で差分データを抽出することが保証されないという課題があった。
本発明は、上記課題の解決を踏まえてなされたもので、従来の技術では差分データを小さいサイズで表現できなかったような更新パターンにおいて差分データを小さく表現できることと、差分データを小さく表現することが出来る可能性がある場合に的確に差分データを小さく表現することができるようにすることなどを目的とする。
本発明の差分データ生成装置は、旧データと新データとを記憶するデータ記憶部と、データ記憶部に記憶された旧データと新データとを読み込んで、旧データポインタの示す位置とコピーサイズとを示し、旧データポインタの示す位置にあるデータを新データポインタの示す位置からコピーサイズ分コピーし、新データポインタの示す位置からコピーサイズ分移動した位置を示す値を新データポインタに設定することを示す第1Move命令コードを差分データに含めるかの判定と、追加データと追加データサイズとを示し、新データポインタの示す位置から追加データを追加し、新データポインタの示す位置を追加データサイズ分移動した位置を示す値を新データポインタに設定することを示すAdd命令コードを差分データに含めるかの判定と、旧データポインタの示す位置とコピーサイズとを示し、旧データポインタの示す位置にあるデータを新データポインタの示す位置からコピーサイズ分コピーし、新データポインタの値を更新しないことを示す第2Move命令コードを差分データに含めるかの判定と、ポインタ更新サイズを示し、新データポインタの示す位置からポインタ更新サイズ分移動した位置を示す値を新データポインタに設定することを示すSkip命令コードを差分データに含めるかの判定とを行い記憶部に記憶し、判定結果に基づいて差分データを生成して記憶部に記憶する差分データ生成部とを備えたことを特徴とする。
本発明によれば、例えば、従来の技術では差分データを小さいサイズで表現できなかったような更新パターンにおいて差分データを小さく表現できる。
実施の形態1.
まず、差分データの表現方法について説明する。
差分データ生成装置では従来のMove命令(第1Move命令または第1Move命令コード)、Add命令(Add命令コード)に加えて特殊Move命令(第2Move命令または第2Move命令コード)とSkip命令(Skip命令コード)とを差分データの表現に用いる。
特殊Move命令は、旧データ192の一部、あるいは全部からデータを移動して前記新データ191にコピーした後に、前記新データ191に対する書換えポインタを前記コピーデータの先頭に移動させることを意味する。
Skip命令は、新データ191に対する書換えポインタを前方に指定長分進めることを意味する。
ここで、各差分命令のフォーマットの例を図8に示す。
ただし、図8に示すのはあくまでも説明のための例であって、本発明の効果が図8に示すフォーマットに限定されていることを示すものではない。
Move命令は、Moveを表す命令識別子1byte(バイト)と旧データ192と新データ191とのオフセット(Moveオフセット)2byte、Move対象のデータ長(Moveサイズ)4byteで表現している。
Add命令は、Addを表す命令識別子1byteとAddするサイズ(Addサイズ)2byte、および実際にAddする内容(Addデータ)で表現している。また、AddデータのサイズはAddサイズである。
特殊Move命令は、特殊Moveを表す命令識別子1byteと旧データ192と新データ191とのオフセット(特殊Moveオフセット)2byte、Move対象のデータ長(特殊Moveサイズ)4byteで表現する。
Skip命令は、Skipを表す命令識別子1byteとSkipするサイズ(Skipサイズ)4byteで表現している。
Skip命令ではMove命令や特殊Move命令とは異なりオフセット情報が不要であるため、Move命令や特殊Move命令と比較して小さいサイズで表現することができる。
図9には、図1で示す更新パターンにおける、A’からG’までの部分の差分データを示している。
差分データは従来の方法としてMove命令とAdd命令だけを用い、Move命令の位置情報をオフセットで表した場合の差分データである。
この場合、図8に示す命令フォーマットを使用すると、Move命令(7byte)が4つで28byte、Add命令(3byte+Addサイズ)が13byte、23byte、13byteで差分データの合計サイズは77byteになる。
図10は、図1で示す更新パターンにおける、A’からG’までの部分の差分データを特殊Move命令とSkip命令とを使用して示している。
図中において特殊Move命令を「Move’」で示す。
最初の特殊Move命令によって、旧データ192のAからGまでのデータを新データ191のA’からG’にコピーした後、新データ191の更新ポインタをA’の先頭に戻す。
次にSkip命令によって更新ポインタを100byte進めてB’の先頭に移動させる。
次にAdd命令によってB’の内容10byte分のデータを追加する。
それ以降も同様の処理を行う。このような差分データ表現によって、A’からG’までの間を更新することが可能である。
なお、この場合の差分データのサイズは、特殊Move命令が7byte、Skip命令(5byte)が4つで20byte、Add命令(3byte+Addサイズ)が13byte、23byte、13byteで合計76byteであり、図9に示した従来の差分データより小さいサイズになっている。
図1の例に対しては、差分データのサイズは1byteしか小さくなっていないが、MoveとAddの繰り返し数が大きくなるにつれて差分データとしてより小さくなる。
なお、差分データを使用して行う旧データから新データへのデータ更新処理は、特殊Move命令が差分データに現れた時点でMoveサイズ分のコピーを行うのではなく、特殊Move命令のオフセットとMoveサイズを記憶部に記憶し、その後に発生するSkip命令の適用時に、前記Skip命令の対象範囲が前記特殊Move命令のMove範囲に含まれるかどうかを判断し、含まれている場合には前記Skip命令をMove命令に置き換えて処理することも可能である。
このSkip命令をMove命令に置き換える処理は、前記特殊Move命令のオフセットをMoveオフセットとし、前記Skip命令のSkipサイズをMoveサイズとすることで行える。
この更新処理によって、特殊Move命令をその意味通りに処理した際の無駄なコピー処理を回避することが可能となる。
例えば、図1の例では新データ191におけるB’、D’、F’部分へのコピーをしなくてもよいことになる。
次に、従来の方法では効率的に差分データを表現できない図4のパターンが効率的に表現できることを図11と図12とを用いて説明する。
図11は、図4の更新パターンに対して位置情報をMoveオフセットで表したMove命令とAdd命令とで表した従来の差分データを示している。
この場合の差分データは、Move命令が6つで42byte、Add命令が23byteで合計65byteになる。
図12は、図4の更新パターンに対して特殊Move命令とSkip命令とを使用して表した差分データである。
この場合の差分データは、特殊Move命令が7byte、Move命令が2つで14byte、Skip命令が4つで20byte、Add命令が23byteで合計64byteとなり、図11で示した従来の差分データより小さいサイズになっている。
また、特許文献1のオフセット省略フラグを用いた場合にはMove命令のオフセットが同じ値で連続しないために差分データサイズ圧縮の効果が薄れるのに対し、特殊Move命令は図4の更新パターンでも図1の更新パターンと同様に使用することが可能であり、差分データサイズの圧縮効果が薄れることはない。
上記において、特殊Move命令とSkip命令とを使用して差分データを生成すれば、従来のMove命令の命令サイズとSkip命令の命令サイズとのサイズ差分、差分データのデータサイズを小さくすることができることを説明した。
このため、図6の更新パターンに対してもSkip命令の使用が多くなるに従い、従来の差分データに比べ差分データを小さくすることができる。
次に、特殊Move命令とSkip命令とを使用した差分データを生成する差分データ生成装置について説明する。
図13は、実施の形態1における差分データ生成装置100の外観を示す図である。
図13において、差分データ生成装置100は、システムユニット910、CRT(Cathode Ray Tube)表示装置901、キーボード(K/B)902、マウス903、コンパクトディスク装置(CDD)905、プリンタ装置906、スキャナ装置907を備え、これらはケーブルで接続されている。
さらに、差分データ生成装置100は、FAX機932、電話器931とケーブルで接続され、また、ローカルエリアネットワーク(LAN)942、ウェブサーバ941を介してインターネット940に接続されている。
図14は、実施の形態1における差分データ生成装置100のハードウェア構成図である。
図14において、差分データ生成装置100は、プログラムを実行するCPU(Central Processing Unit)911を備えている。CPU911は、バス912を介してROM913、RAM914、通信ボード915、CRT表示装置901、K/B902、マウス903、FDD(Flexible Disk Drive)904、磁気ディスク装置920、CDD905、プリンタ装置906、スキャナ装置907と接続されている。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920、光ディスク装置は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
通信ボード915は、FAX機932、電話器931、LAN942等に接続されている。
例えば、通信ボード915、K/B902、スキャナ装置907、FDD904などは、情報入力部の一例である。
また、例えば、通信ボード915、CRT表示装置901などは、出力部の一例である。
ここで、通信ボード915は、LAN942に限らず、直接、インターネット940、或いはISDN等のWAN(ワイドエリアネットワーク)に接続されていても構わない。直接、インターネット940、或いはISDN等のWANに接続されている場合、差分データ生成装置100は、インターネット940、或いはISDN等のWANに接続され、ウェブサーバ941は不用となる。
磁気ディスク装置920には、オペレーティングシステム(OS)921、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923は、CPU911、OS921、ウィンドウシステム922により実行される。
上記プログラム群923には、各実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
ファイル群924には、各実施の形態の説明において、「〜の判定結果」、「〜の判断結果」、「〜の計算結果」、「〜の処理結果」として説明するものが、「〜ファイル」として記憶されている。
また、各実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータの入出力を示し、そのデータの入出力のためにデータは、磁気ディスク装置920、FD(Flexible Disk cartridge)、光ディスク、CD(コンパクトディスク)、MD(ミニディスク)、DVD(Digital Versatile Disk)等のその他の記録媒体に記録される。あるいは、信号線やその他の伝送媒体により伝送される。
また、各実施の形態の説明において「〜部」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、ハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
また、各実施の形態を実施するプログラムは、磁気ディスク装置920、FD、光ディスク、CD、MD、DVD等のその他の記録媒体による記録装置を用いて記憶されても構わない。
図15は、実施の形態1における差分データ生成装置100の内部構成図である。
図15において、実施の形態1における差分データ生成装置100は、旧データから新データに移行するために、旧データのデータ位置を示す旧データポインタと新データのデータ位置を示す新データポインタとを制御する情報と、移行するデータの情報とに関する命令コード(Move命令コード、Add命令コード、特殊Move命令コード、Skip命令コード)を含む差分データを生成する。
また、差分データを生成するためにデータ記憶部190と差分データ生成部110とを備える。
差分データ生成部110は、差分データ第1生成部120と差分データ第2生成部130と差分データ出力部140とを備えて差分データを生成し出力する。
差分データ第1生成部120は、データ記憶部190に記憶された旧データ192と新データ191とに基づいて以下の処理を行う。
旧データポインタの示す位置とコピーサイズとを示し、旧データポインタの示す位置にあるデータを新データポインタの示す位置からコピーサイズ分コピーし、新データポインタの示す位置をコピーサイズ分移動した値を新データポインタに設定することを示す第1Move命令コード(従来のMove命令コード)を差分データに含めるかの判定を行う。
また、追加データと追加データサイズとを示し、新データポインタの示す位置から追加データを追加し、新データポインタの示す位置を追加データサイズ分移動した位置を示す値を新データポインタに設定することを示すAdd命令コードを差分データに含めるかの判定を行う。
そして、判定結果に基づいて変換前差分データ193(特殊Move命令とSkip命令とを使用しない差分データ)を生成し、データ記憶部190に記憶する。
差分データ第2生成部130は、データ記憶部190に記憶された変換前差分データ193に基づいて以下の処理を行う。
旧データポインタの示す位置とコピーサイズとを示し、旧データポインタの示す位置にあるデータを新データポインタの示す位置からコピーサイズ分コピーし、新データポインタの値を更新しないことを示す第2Move命令コード(特殊Move命令コード)を差分データに含めるかの判定を行う。
また、ポインタ更新サイズを示し、ポインタ更新サイズ分移動した位置を示す値を新データポインタに設定することを示すSkip命令コードを差分データに含めるかの判定を行う。
そして、判定結果に基づいて変換後差分データ194(特殊Move命令とSkip命令とを使用する差分データ)を生成し、データ記憶部190に記憶する。
差分データ出力部140は、データ記憶部190に記憶された変換前差分データ193のデータサイズと変換後差分データ194のデータサイズとを比較し、データサイズの小さい方を差分データとして出力する。
図1の更新パターンを旧データ192から新データ191への更新とした場合は、図9の差分データが変換前差分データ193に相当し、図10の差分データが変換後差分データ194に相当し、サイズの小さい変換後差分データ194が適用される差分データになる。
図16は、実施の形態1における差分データ生成装置100の処理の流れを示すフローチャートである。
図16に示すように、差分データ生成装置100は以下の処理を行う。
まず、差分データ第1生成部120は、データ記憶部190に記憶された新データ191と旧データ192とを入力し、入力した新データ191と旧データ192とに基づいて変換前差分データ193を生成しデータ記憶部190に記憶する(S101)。
差分データ第1生成部120が行う変換前差分データ193の生成処理は、従来の差分抽出処理を用いることができる。
例えば、Walter F.Tichyの論文「The String−to−String Correction Problem with Block Moves」において使用されている処理で変換前差分データ193を生成する。
次に、差分データ第2生成部130は、データ記憶部190に記憶された変換前差分データ193を入力し、入力した変換前差分データ193に基づいて変換後差分データ194を生成しデータ記憶部190に記憶する(S102)。
図17は、実施の形態1における差分データ第2生成部130の処理の流れを示すフローチャートである。
S102の差分データ第2生成部130の変換後差分データ194生成処理について図17に基づいて説明する。
まず、変換前差分データ193からすべてのMove命令のオフセット情報を抽出する(S201)。
次に、同一オフセットを持つMove命令が複数個ある場合には、これらのMove命令の内、先頭のMove命令の直前の位置に特殊Move命令を挿入する。
このとき、特殊Move命令のMoveサイズは、最後のMove命令でMoveするデータの終了アドレスと、先頭のMove命令でMoveするデータの開始アドレスの差を設定する。
また、特殊Move命令のオフセットはMove命令のオフセットと同一にする。
次に、前記同一オフセットを持つMove命令すべてをSkip命令に置き換える(S203)。
このとき、Skipサイズは置き換え対象Move命令のMoveサイズと同じにする。
こうすることで、差分データ406を特殊Move命令を用いた差分データに変換することができる。
差分データ第2生成部130の変換後差分データ194生成処理の動作例を図1と図9と図10を用いて説明する。
S201において、図9に示す変換前差分データ193からMove命令のオフセット情報を抽出することで、オフセット「+100」のMove命令が4つあることが分かる。
この4つのMove命令は図1のA’、C’、E’、G’に相当する。
S202において、これらMove命令の先頭にあたる「Move +100 100」命令の直前に特殊Move命令「Move’ +100 440」を挿入する。
S203において、各Move命令をSkip命令に置き換えることで、変換後差分データ194が生成される。
生成される変換後差分データ194は図10に示す差分データである。
図16において、差分データ出力部140は、データ記憶部190に記憶された変換前差分データ193と変換後差分データ194とを入力し、変換後差分データ194と変換前差分データ193とのサイズを比較する。そして、変換後差分データ194のサイズの方が小さい場合は、変換後差分データ194を差分データとして出力する。また、変換前差分データ193のサイズの方が小さい場合は、変換前差分データ193を差分データとして出力する(S103)。
なお、前記の差分データ第2生成部130の変換後差分データ194生成処理では、同一オフセットのMove命令が複数個あった場合には、前記に該当するすべてのMove命令を特殊Move命令でまとめていた。
但し、前記に該当する一部のMove命令のみを特殊Move命令でまとめても構わない。
さらに、前記に該当するMove命令の様々な組合せに対して特殊Move命令を適用し、その際にもっとも差分データサイズが小さい組合せを判定し特殊Move命令を挿入しても構わない。
以上の構成、および処理を有することによって、差分データ生成装置100は従来の技術では差分データを小さいサイズで表現できなかったような更新パターンにおいて差分データを小さく表現することができる。
また、差分データ生成部110が差分データ第1生成部120と差分データ第2生成部130とを備えることで、変換前差分データ193と変換後差分データ194とを生成でき、さらに、差分データ出力部140を備えることで、よりサイズの小さい差分データを選択することができる。
実施の形態2.
実施の形態2において、上記実施の形態1と異なる部分を説明し、その他の部分は上記実施の形態1と同様であるものとする。
図18は、実施の形態2における差分データ生成装置100の内部構成図である。
図18において、データ記憶部190は、旧データ192の各部分のデータである部分データの位置を示す旧データ配置情報データ197と、新データ191の各部分のデータである部分データの位置を示す新データ配置情報データ196とを記憶する。
また、差分データ生成部110は、部分データ対応付け部150と差分抽出部160とを備える。
部分データ対応付け部150は、データ記憶部190に記憶された新データ配置情報データ196と旧データ配置情報データ197とを入力し、新データ配置情報データ196に示される新データ191の部分データと、旧データ配置情報データ197に示される旧データ192の部分データとを対応付けた部分データ対応付け情報データ198を生成しデータ記憶部190に記憶する。
差分抽出部160は、データ記憶部190に記憶された部分データ対応付け情報データ198と旧データ192と新データ191とに基づいて、特殊Move命令とSkip命令とを使用した差分データ195を生成する。
図19は、実施の形態2における新旧データと配置情報データとを示す図である。
旧データ192は4つの部分データA、B、C、Dから構成される。また、この情報は旧データ配置情報データ197に記載されている。
旧データ配置情報データ197の「A 0 500」という行は、部分データAがアドレス0からサイズ500の範囲にあることを示している。
同様に新データ191にも部分データA、B、C、Dが存在する。
なお図19の例では、新データ配置情報データ196が旧データ配置情報データ197に対して部分データAのサイズが200増えていること、部分データBの開始アドレスが200増加していること、部分データCの開始アドレスが200増えてサイズが100増加していること、部分データDの開始アドレスが300増えてサイズが300減少していることが分かる。
一般的には新旧データ間では部分データは1対1で対応することが多いが、旧データ192では存在しなかった部分データが新データ191には存在したり、旧データ192には存在した部分データが新データ191には存在しない、というケースもある。
旧データ192および新データ191の配置情報データには、新旧データがプログラムのバイナリイメージである場合には、プログラムをリンクする際に出力されるリンクマップファイルを用いることができる。このリンクマップファイルとはプログラム内の配置情報が記述されたものである。
また、配置情報は必ずしもデータとは別情報として提供されなければならないわけではなく、データ内に配置情報も含むようなデータであれば、配置情報としてデータそのものを使用することも可能である。データ内に配置情報を含むデータには、例えばDLL(Dynamic Link Library)がある。
そして、部分データとは例えば、プログラムのリンクにおけるセクションのことを指す。
また、旧データ192、新データ191それぞれが唯一つの部分データから構成される、とみなすことも可能である。この場合、配置情報データは必要ない。
図20は、実施の形態2における部分データ対応付け情報データ198を示す図である。
部分データ対応付け部150は、旧データ配置情報データ197と新データ配置情報データ196とに基づいて、旧データ192と新データ191の部分データの対応付けを行い、図20に示すような部分データ対応付け情報データ198を生成する。
図20において、部分データ対応付け情報データ198は、旧データ192と新データ191との部分データA同士、部分データB同士、部分データC同士、部分データD同士のオフセットとサイズとを対応付けている。また、同一サイズである部分データBについて同一サイズフラグを設定している。
部分データ対応付け情報データ198を使用して差分データを生成する方法を以下に示す。
第一の方法では、対応付けられた部分データ同士のサイズが同じ場合は、その領域全体を特殊Move命令で表現した後、旧部分データの先頭と新部分データの先頭とから順番に比較して行き、一致する部分にはSkip命令を、一致しない部分にはAdd命令もしくは旧データ192の違う部分のデータを指定したMove命令を割り当てる。
第一の方法を図21を用いて説明する。
対応付けられた旧データ192の部分データ(p1からp6の間に位置するデータ)と新データ191の部分データ(q1からq6の間に位置するデータ)のサイズが同じであったとする。
この場合、最初にp1からp6及びq1からq6のサイズと、p1とq1のオフセットをそれぞれ特殊Moveサイズと特殊Moveオフセットとする特殊Move命令を生成する。
そして、旧データ192のp1、新データ191のq1にそれぞれ着目する。
次に、p1、q1からそれぞれ1単位(例えば1byte)ずつ旧データ192と新データ191を比較して行く。
p2とq2に到達し、旧データ192と新データ191とで異なる位置が見つかると、まず新データ191のq1からq2の間をSkip命令で表現する。
次に、p2、q2から1単位ずつ旧データ192と新データ191を比較して行き、p3とq3で再び新旧データ192の一致を発見する。
この時点でp2からp3の範囲に対する差分データを生成する。
ここで、p2からp3の範囲に対する差分データの生成方法として、新データ191のp2からp3の部分はAdd命令で表現するか、旧データ192から一致する部分を発見してMove命令で表現するか、もしくはAdd命令とMove命令の組合せで表現する、などの方法を用いることが出来る。
そして再びp3、q3から同様の処理を継続して行き、最終的にp6とq6に到達した時点でSkip命令を出力して処理を終了する。
図22は、実施の形態2における差分抽出部160の処理の流れを示すフローチャートである。
上記第一の差分データ生成方法の処理の流れについて図22に基づいて説明する。
差分抽出部160は、データ記憶部190に記憶された部分データ対応付け情報データ198の同一サイズフラグを参照し、旧データ192と新データ191とで対応する同一サイズの部分データを検索し、検索した部分データに対して以下の処理を行い、特殊Move命令とSkip命令とを生成する。
まず、検索した旧データ192と新データ191との部分データのサイズと、旧データ192の部分データが新データ191の部分データに対する相対アドレスを、特殊Moveサイズおよび特殊Moveオフセットとする特殊Move命令を生成する(S201)。
次に、未処理の部分データに対し、旧データ192の部分データと新データ191の部分データとから1バイトずつ取得する(S203)。
次に、取得した旧データ192の1バイトと新データ191の1バイトとを比較する(S204)。
取得した旧データ192の1バイトと新データ191の1バイトとを比較した結果、同一値である場合、旧データ192の部分データと新データ191の部分データとからの1バイトずつの取得(S203)と比較(S204)とを、未処理データが無いと判定する(S202)か、取得した1バイトが異なる(S204)まで繰り返す。
取得した旧データ192の1バイトと新データ191の1バイトとを比較した結果、異なる値である場合、取得した旧データ192の部分データと新データ191の部分データの同一であった部分について、同一部分のサイズをSkipサイズとするSkip命令を生成する(S205)。
また、取得した旧データ192の1バイトと新データ191の1バイトとを比較した結果、同一値であった後、未処理の部分データが無いと判定した場合(S202)、S205と同様にして同一部分のサイズをSkipサイズとするSkip命令を生成し、処理を終える(S210)。
Skip命令を生成(S205)後、未処理の部分データの有無を判定する(S206)。
未処理の部分データが有ると判定した場合、未処理の部分データに対し、旧データ192の部分データと新データ191の部分データとから1バイトずつ取得する(S207)。
次に、取得した旧データ192の1バイトと新データ191の1バイトとを比較する(S208)。
取得した旧データ192の1バイトと新データ191の1バイトとを比較した結果、異なる値である場合、旧データ192の部分データと新データ191の部分データとからの1バイトずつの取得(S207)と比較(S208)とを、未処理データが無いと判定する(S206)か、取得した1バイトが同一値を示す(S208)まで繰り返す。
取得した旧データ192の1バイトと新データ191の1バイトとを比較した結果、同一値である場合、取得した旧データ192の部分データと新データ191の部分データとで異なった部分について、Add命令、Move命令を生成する。例えば、異なる部分のサイズと異なる部分の新データ191とをAddサイズおよびAddデータとするAdd命令を生成し、S202から処理を繰り返す(S209)。
また、取得した旧データ192の1バイトと新データ191の1バイトとを比較した結果、異なる値であった後、未処理の部分データが無いと判定した場合(S206)、S209と同様にしてAdd命令、Move命令を生成し、処理を終える(S211)。
上記説明において、特殊Move命令を生成する(S201)前に、旧データ192と新データ191の先頭から順次比較を行って最初に一致した部分を特殊Move命令の対象範囲の先頭とし、旧データ192と新データ191の末尾から順次先頭方向に向かって比較を行って最初に一致した部分を特殊Move命令の対象範囲の末尾とする、といった処理を追加してもよい。
これにより、無駄な領域のコピーを防ぐことができる。
また、さらに特殊Move命令を用いない従来の方法により差分データを抽出し、差分データサイズを比較してサイズの小さい方を当該部分データに対する差分データとして出力してもよい。
そのためには、上記実施の形態1で説明した差分データ第1生成部120と差分データ出力部140とを実施の形態2における差分データ生成装置100が備えればよい。
これにより、差分データ生成装置100は、より小さいサイズの差分データを出力できる。
実施の形態2において、差分データ生成装置100は、旧データ配置情報データ197と新データ配置情報データ196とを入力として、同一サイズである旧データの部分データと新データの部分データとに対して、特殊Move命令とSkip命令とを使用した差分データを生成できることを説明した。
実施の形態3.
実施の形態3では、部分データ対応付け情報データ198を使用した差分データの第2の生成方法について説明する。
実施の形態3において、上記実施の形態と異なる部分を説明し、その他の部分は上記実施の形態と同様であるものとする。
図23は、実施の形態3における差分データ生成装置100の内部構成図である。
差分データ生成装置100の内部構成について、上記実施の形態1の図15および上記実施の形態2の図18と異なる構成を図23に基づいて説明し、その他の構成は図15および図18と同様であるものとする。
差分データ第1生成部120はLCS(Longest Common Subsequence)抽出部121を備える。
また、差分データ第1生成部120は部分データ対応付け情報データ198と新データ191と旧データ192とを入力として、特殊Move命令とSkip命令とを使用しない差分データである変換前差分データ193を出力する。
差分データ第2生成部130は、部分データ対応付け情報データ198と変換前差分データ193とを入力として、特殊Move命令とSkip命令とを使用した変換後差分データ194を出力する。
LCS抽出部121は、旧データ192と新データ191とで対応する部分データから最長共通部分列(LCS)を抽出する。
LCSの抽出については、従来の技術として例えば「E.W.Myers, “An O(ND) difference algorithm and its variations”, Algorithmixa, 1 (1986), pp251−266」などの効率的なアルゴリズムが知られており、これら従来の技術を用いることができる。
LCSには、旧データ192から新データ191へのコピーに際して、旧データ192での順番と新データ191での順番が入れ替わるようなコピーは検出しない、という特徴がある。
図6の例で説明すると、JからE’へのコピーとGからG’へのコピーは同時に検出されず、EからE’、GからG’へのコピーは同時に検出可能である。
この特徴から、図1や図6に示すような旧データ192から新データ191への更新において位置ずれが発生し、かつ途中にデータの変更が発生しているようなケースにおいて、特殊Move命令で表現できるパターン、つまり同一オフセットのMove命令が連続するパターンを検出できる確率が、図6のJからE’、GからG’を同時に抽出できる通常の差分データ抽出方法と比べて高いといえる。このため、LCSの抽出により、差分データを小さく表現することが出来る可能性がある場合に的確に差分データを小さく表現し、特殊Move命令とSkip命令を使用してより効果的な差分データを生成することができる。
差分データ第1生成部120はLCSを求めた後、LCSと判定された部分列をMove命令で表現し、それでない部分はAdd命令で表現することで変換前差分データ193を生成する。
図24の例では、AとA’、BとB’・・・GとG’が共通部分と判定され、それぞれがMove命令で表現され、残りの部分はAdd命令で表現される。
次に、差分データ第2生成部130が行う同一オフセットのMove命令を集めて一つの特殊Move命令に置き換える処理について説明する。
処理の一例として、上記実施の形態1で説明したように、同一オフセットのMove命令のうち先頭から末尾までを一つの特殊Move命令で表現する処理が考えられる。
また、差分データを先頭から探索して行き、最初に見つかったMove命令のオフセットを記憶し、同一オフセットではないMove命令が見つかるまで、もしくは比較範囲である部分データの末尾に到達するまでの範囲を特殊Move命令で表現する動作も考えられる。
この際、Add命令については読み飛ばすものとする。
後者の処理を図24を用いて説明する。
新データ191のA’に対するMove命令を最初に読み込み、そのオフセット情報を記憶しておく。
A’に対するMove命令の次はAdd命令であり、これは無視する。
次にB’に対するMove命令が見つかり、オフセット情報は前出のA’に対するMove命令のオフセット情報と同一なので、B’に対するMove命令も特殊Move命令の範囲候補とする。
同様にしてC’、D’に対するMove命令も同一オフセットであるので、特殊Move命令の範囲候補とする。
Add命令をはさんでE’に対するMove命令を発見するが、このオフセット情報はA’に対するオフセット情報とは異なる。
そのため、A’から直前のMove命令の対象、つまりD’までを特殊Move命令の対象範囲として出力する。
また、異なるオフセット情報が発見されたので、E’に対するMove命令以降は、E’に対するMove命令のオフセット情報を比較するオフセット情報として処理を進める。
結果、E’、F’、G’に対するMove命令のオフセット情報が同一であり、またG’が部分データの末尾なので、E’からG’への範囲を特殊Move命令の対象範囲とする。
次に、差分データ第2生成部130の動作を説明する。
図24の例では、A’からD’の範囲、およびE’からG’の範囲を表す差分データの先頭に特殊Move命令を挿入し、Move命令はSkip命令に置き換える。
また、Add命令はそのままAdd命令として表現するか、Add命令に相当する新データ191の範囲について旧データ192から一致部分を探してMove命令に置き換える。
また、D’とE’にはさまれた範囲についてはそのままAdd命令を出力するか、もしくは旧データ192全体から一致部分を探してMove命令で表現し変換後差分データ194を生成する。
差分データ出力部140は、変換前差分データ193と変換後差分データ194とのサイズを比較し、サイズの小さい方を差分データとして出力する。
これにより、より小さい差分データを選択することができる。
図25は、実施の形態3における差分データ第1生成部120の処理の流れを示すフローチャートである。
また、図26は実施の形態3における差分データ第2生成部130の処理の流れを示すフローチャートである。
上記に説明した差分データ第1生成部120と差分データ第2生成部130との処理の流れを図25および図26に基づいて説明する。
図25において、差分データ第1生成部120は以下の処理を行い、変換前差分データ193を生成する。
部分データ対応付け情報データ198を参照し、旧データ192と新データ191とから対応する部分データを取得する(S302)。
LCS抽出部121を起動し、取得した部分データからLCSを抽出する(S303)。
抽出したLCSに対して、LCSの長さと、LCSの旧データ192における新データ191に対する相対位置を示す値とを、MoveサイズおよびMoveオフセットにしたMove命令を生成する(S304)。
抽出したLCSのサイズを判定する(S305)。
抽出したLCSのサイズが一定値以上であれば、同一の部分データに対して、抽出したLCSの次に長い共通部分列を抽出し(S303)、抽出した共通部分列に対するMove命令の生成(S304)を行う。LCSのサイズを判定する一定値は任意であり、例えば、Move命令で表した方がAdd命令で表すより命令コードのサイズが小さくなる値である。図8に示す命令コードフォーマットの場合、LCSのサイズが4byte以上かの判定を行う。
抽出したLCSのサイズが一定値未満であれば、LCSとして抽出されなかった部分に対してAdd命令を生成する(S306)。
Add命令を生成(S306)後、部分データ対応付け情報データ198を参照し、旧データ192と新データ191とから新たに部分データを取得し(S302)、LCSの抽出(S303)、Move命令の生成(S304)、Add命令の生成(S306)を行う。
部分データ対応付け情報データ198を参照した結果、新たに部分データが無い場合、処理を終える(S301)。
次に、図26において、差分データ第2生成部130は以下の処理を行い、変換後差分データ194を生成する。
変換後差分データ194から命令コードを取得する(S402)。
取得した命令コードを判定する(S403)。
取得した命令コードがAdd命令の場合、次の命令コードを取得し(S402)、取得した命令コードを判定する(S403)。
取得した命令コードがMove命令の場合、Moveオフセットを判定する(S404)。
取得したMove命令のMoveオフセットが、取得した一つ前のMove命令のMoveオフセットと同一である場合、取得したMove命令をSkip命令に置換する(S405)。
Move命令をSkip命令に置換(S405)後、次の命令コードを取得し(S402)、取得した命令コードを判定し(S403)、処理を繰り返す。
取得したMove命令のMoveオフセットが、取得した直前のMove命令のMoveオフセットと同一でない場合、特殊Move命令を挿入する(S406)。
また、一つ前の特殊Move命令のMoveオフセットに、Skip命令に置き換えたMove命令のMoveオフセットを設定する。
また、一つ前の特殊Move命令のMoveサイズに、Move命令から置き換えたSkip命令のSkipサイズと、Skip命令に挟まれたAdd命令のAddサイズとの合計サイズを設定する。
特殊Move命令を挿入(S406)後、次の命令コードを取得し(S402)、取得した命令コードを判定し(S403)、処理を繰り返す。
全ての命令コードを処理し、取得する命令コードが無いと判定した場合、処理を終了する(S401)。
以上の構成および処理を有することによって、差分データ生成装置100は、従来の技術では差分データを小さいサイズで表現できなかったような更新パターンにおいて差分データを小さく表現することができる。
また、差分データを小さく表現することが出来る可能性がある場合に的確に差分データを小さく表現することができる。
実施の形態4.
実施の形態4では、部分データ対応付け情報データ198を使用した差分データの第3の生成方法について説明する。
実施の形態4において、上記実施の形態と異なる部分を説明し、その他の部分は上記実施の形態と同様であるものとする。
図27は、実施の形態4における差分データ生成装置100の内部構成図である。
差分データ生成装置100の内部構成について、上記実施の形態1の図15、上記実施の形態2の図18および上記実施の形態3の図23と異なる構成を図27に基づいて説明し、その他の構成は図15、図18および図23と同様であるものとする。
差分データ生成部110は、差分LCS抽出部170を備える。
差分LCS抽出部170は、LCS抽出部171を備える。
また、差分LCS抽出部170は、部分データ対応付け情報データ198と新データ191と旧データ192とを入力とし、差分データ195を生成する。
また、LCS抽出部171は、上記実施の形態3のLCS抽出部121と同様にLCSの抽出を行なう。
図28は、実施の形態4における部分データ対応付け情報データ198を示す図である。
実施の形態4において部分データ対応付け部150は、図28に示すような部分データ対応付け情報データ198を生成する。
部分データ対応付け情報データ198は、部分結合データフラグ項目を持ち、図19において、旧データ192の部分データA、B、C、Dを結合したデータと、新データ191の部分データA、B、C、Dを結合したデータとが同一サイズであることを示している。
図29は、実施の形態4における差分LCS抽出部170の処理の流れを示すフローチャートである。
実施の形態4における差分LCS抽出部170の差分データ生成処理について図29に基づいて説明する。
図28に示すような部分データ対応付け情報データ198から一つデータを取得し、部分データが部分結合データに含まれるか判定する(S502)。
部分データが部分結合データに含まれる場合、結合部分データに含まれる部分データのオフセットと合計サイズとを、特殊Moveオフセットおよび特殊Moveサイズとする特殊Move命令を生成する(S504)。
結合部分データに含まれる各部分データに対して、LCSを抽出し、Skip命令とAdd命令との生成を行う(S505〜S510)。
S505〜S510の処理は、上記実施の形態3の図25に示す差分データ第1生成部120の処理S301〜S306と同様であり、差分LCS抽出部170は、抽出したLCSに対してMove命令ではなくSkip命令を生成する(S506)。
結合部分データに含まれる全ての部分データに対して処理し、取得する部分データが無いと判定した場合(S505)、次の結合部分データを取得し、特殊Move命令を生成し、処理を繰り返す。
部分データが部分結合データに含まれない場合、上記実施の形態2の図22や、上記実施の形態3の図25および図26に示す処理を行い、部分結合データに含まれない部分データに対する差分データを生成する(S503)。
部分データ対応付け情報データ198に示される全ての部分データを処理した場合、処理を終了する(S501)。
上記実施の形態において、以下のことを説明した。
新旧2つのデータに対して、旧データ192から新データ191へバージョンアップするための差分データを抽出する差分データ生成装置において、前記差分データとして、前記旧データ192の一部、あるいは全部からデータを移動して前記新データ191にコピーすることを意味する0個以上のMove命令と、新データ191に当該差分データ中に記述したデータを追加することを意味する0個以上のAdd命令と、前記旧データ192の一部、あるいは全部からデータを移動して前記新データ191にコピーした後に、前記新データ191に対する書換えポインタを前記コピーデータの先頭に移動させることを意味する0個以上の特殊Move命令と、前記新データ191に対する書換えポインタを前方に指定長分進めることを意味する0個以上のSkip命令とで構成される差分データを生成する差分データ生成装置100について説明した。
また、差分データ生成装置100が、特殊Move命令を含まない形式で旧データ192から新データ191へバージョンアップするための差分データを抽出する差分抽出処理手段と、前記特殊Move命令を含まない形式の差分データに対して、特殊Move命令で表現した方が差分データサイズが小さくなるような箇所を発見して、特殊Move命令を含んだ表現に置き換える差分データ変換手段とを有すること説明した。
また、差分データ生成装置100が、新旧データ192、もしくは新旧データ192に付随して提供される配置情報データに含まれる新旧データ192の配置情報を元に、新旧データ192の部分データ同士を対応付ける部分データ対応付け手段と、前記領域対応付け機能によって対応付けられた新旧データ192の部分データ同士を比較して差分データを生成する差分抽出処理手段とを有し、差分抽出処理手段が、対応付けられた部分データ同士のデータ長が同一の場合には、差分データの構成要素として前記部分データ領域分のコピーを示す特殊Move命令を用いることを説明した。
また、差分抽出処理手段が、対応付けられた部分データ同士のデータ長が同一の場合には、新旧データ192の先頭から同一オフセット同士を比較し、最初に一致する位置から最後に一致する位置までの間を特殊Move命令で表現することを説明した。
差分抽出処理手段が、対応付けられた部分データ同士に対して最長共通部分系列を求め、求まった最長共通部分列を差分データとして表現する最長共通部分系列計算手段と、最長共通部分系列計算手段によって生成された差分データから特殊Move命令で表現する範囲を0個以上選び出す複写範囲決定手段と、複写範囲決定手段によって特殊Move命令で表現することが決まった範囲を特殊Move命令を用いた差分データで置き換える差分データ生成手段から構成されること説明した。
差分データ生成手段が、複写範囲決定手段によって特殊Move命令で表現することが決まった範囲は特殊Move命令を用いた差分データで置き換え、そうでない範囲に対しては通常の差分データを新たに生成する差分データ生成手段であることを説明した。
差分抽出処理手段が、特殊Move命令を構成要素として含む差分データと、特殊Move命令を構成要素として含まない差分データとの2種類を生成し、サイズの小さい方の差分データを差分データとして出力することを説明した。
差分抽出処理手段が、特殊Move命令を構成要素として含むように生成された差分データの各特殊Move命令に相当する新データ191の範囲に対して、特殊Move命令を使用しないパターンでも差分抽出を行い、前記範囲の差分データについて特殊Move命令を使用した差分データと使用しない差分データとでデータサイズを比較し、特殊Move命令を使用しない差分データの方がサイズが小さい場合は前記新データ191の範囲に対する差分データを前記特殊Move命令を使用しない差分データに置き換えることを説明した。
旧データ192と新データ191を示す図。 従来例による差分データを示す図。 従来例による差分データを示す図。 旧データ192と新データ191を示す図。 従来例による差分データを示す図。 旧データ192と新データ191を示す図。 従来例による差分データを示す図。 実施の形態1における差分データの命令コードフォーマットを示す図。 従来例による差分データを示す図。 実施の形態1における差分データを示す図。 従来例による差分データを示す図。 実施の形態1における差分データを示す図。 実施の形態1における差分データ生成装置100の外観を示す図。 実施の形態1における差分データ生成装置100のハードウェア構成図。 実施の形態1における差分データ生成装置100の内部構成図。 実施の形態1における差分データ生成装置100の処理の流れを示すフローチャート。 実施の形態1における差分データ第2生成部130の処理の流れを示すフローチャート。 実施の形態2における差分データ生成装置100の内部構成図。 実施の形態2における新旧データと配置情報データとを示す図。 実施の形態2における部分データ対応付け情報データ198を示す図。 実施の形態2における旧データ192と新データ191を示す図。 実施の形態2における差分抽出部160の処理の流れを示すフローチャート。 実施の形態3における差分データ生成装置100の内部構成図。 実施の形態3における旧データ192と新データ191を示す図。 実施の形態3における差分データ第1生成部120の処理の流れを示すフローチャート。 実施の形態3における差分データ第2生成部130の処理の流れを示すフローチャート。 実施の形態4における差分データ生成装置100の内部構成図。 実施の形態4における部分データ対応付け情報データ198を示す図。 実施の形態4における差分LCS抽出部170の処理の流れを示すフローチャート。
符号の説明
100 差分データ生成装置、110 差分データ生成部、120 差分データ第1生成部、121 LCS抽出部、130 差分データ第2生成部、140 差分データ出力部、150 部分データ対応付け部、160 差分抽出部、170 差分LCS抽出部、171 LCS抽出部、190 データ記憶部、191 新データ、192 旧データ、193 変換前差分データ、194 変換後差分データ、195 差分データ、196 新データ配置情報データ、197 旧データ配置情報データ、198 部分データ対応付け情報データ、901 CRT表示装置、902 K/B、903 マウス、904 FDD、905 CDD、906 プリンタ装置、907 スキャナ装置、910 システムユニット、911 CPU、912 バス、913 ROM、914 RAM、915 通信ボード、920 磁気ディスク装置、921 OS、922 ウィンドウシステム、923 プログラム群、924 ファイル群、931 電話器、932 FAX機、940 インターネット、941 ウェブサーバ、942 LAN。

Claims (14)

  1. 特定の機器に対して当該機器内の旧データを新データに更新させる命令コードを示す差分データを生成する差分データ生成装置であり、
    前記旧データと前記新データとを記憶するデータ記憶部と、
    前記新データ内での位置を示す新データポインタが示す位置に前記旧データに含まれるデータをコピーデータとしてコピーさせると共にコピーさせたデータのサイズであるコピーサイズ分移動した位置を示すように前記新データポインタを更新させる第1Move命令コードであり、前記旧データ内でのコピーデータの位置と前記新データ内でのコピーデータの位置との相対値を示すオフセットと前記コピーサイズとを示す第1Move命令コードと、
    前記新データに追加データを追加させると共に前記追加データのサイズである追加サイズ分移動した位置を示すように前記新データポインタを更新させるAdd命令コードであり、前記追加データと前記追加サイズとを示すAdd命令コードと、
    前記新データポインタが示す位置に旧データに含まれるデータをコピーデータとしてコピーさせて前記新データポインタは更新させない第2Move命令コードであり、前記オフセットとコピーデータのサイズであるコピーサイズとを示す第2Move命令コードと、
    前記新データポインタが示す位置を移動させるサイズである移動サイズを示し、前記移動サイズ分移動した位置を示すように前記新データポインタを更新させるSkip命令コードと
    の少なくともいずれかの命令コードを用いて前記差分データを生成する差分データ生成部とを備え、
    前記差分データ生成部は、
    前記新データのうち前記旧データと同一である部分を前記コピーデータとする前記第1Move命令コードと、前記新データのうち前記旧データと同一でない部分を前記追加データとする前記Add命令コードとで差分第1データを生成し、
    生成した前記差分第1データにおいて前記オフセットが同一である前記第1Move命令コードが複数ある場合に、前記オフセットが同一である先頭の前記第1Move命令コードの前記コピーデータの先頭から前記オフセットが同一である最後の前記第1Move命令コードの前記コピーデータの最後までを前記コピーデータとする前記第2Move命令コードを、前記オフセットが同一である先頭の前記第1Move命令コードの直前に挿入すると共に、前記オフセットが同一である複数の前記第1Move命令コードそれぞれを、当該第1Move命令コードの前記コピーサイズを前記移動サイズとする前記Skip命令コードに置き換えて、前記差分第1データから前記差分データを生成する
    ことを特徴とする差分データ生成装置。
  2. 前記差分データ生成装置は、さらに、
    前記差分データ生成部が生成した前記差分第1データのデータサイズと前記差分データ生成部が生成した前記差分データのデータサイズとを比較し、データサイズの小さい方を前記旧データを前記新データに更新させる差分データとして選択する差分データ選択部
    を備えることを特徴とする請求項1記載の差分データ生成装置。
  3. 特定の機器に対して当該機器内の旧データを新データに更新させる命令コードを示す差分データを生成する差分データ生成装置であり、
    前記旧データと、前記新データと、前記旧データを構成する各部分データについて当該部分データの前記旧データ内での配列位置と当該部分データのサイズとを示す旧データ配置情報と、前記新データを構成する各部分データについて当該部分データの前記新データ内での配列位置と当該部分データのサイズとを示す新データ配置情報とを記憶するデータ記憶部と、
    前記新データ内での位置を示す新データポインタが示す位置に前記旧データに含まれるデータをコピーデータとしてコピーさせて前記新データポインタを更新させない特殊Move命令コードであり、前記旧データ内でのコピーデータの位置と前記新データ内でのコピーデータの位置との相対値を示すオフセットと前記コピーサイズとを示す特殊Move命令コードと、
    前記新データに追加データを追加させると共に前記追加データのサイズである追加サイズ分移動した位置を示すように前記新データポインタを更新させるAdd命令コードであり、前記追加データと前記追加サイズとを示すAdd命令コードと、
    前記新データポインタが示す位置を移動させるサイズである移動サイズを示し、前記移動サイズ分移動した位置を示すように前記新データポインタを更新させるSkip命令コードと
    の少なくともいずれかの命令コードを用いて前記差分データを生成する差分データ生成部とを備え、
    前記差分データ生成部は、
    前記データ記憶部に記憶された前記旧データ配置情報と前記新データ配置情報とに基づいて、配列順序とデータサイズとが同じである前記旧データの部分データと前記新データの部分データとについて、前記旧データの当該部分データを前記コピーデータとする前記特殊Move命令コードと、
    前記新データの当該部分データのうち前記旧データの当該部分データと同一である部分のサイズを前記移動サイズとする前記Skip命令コードと、
    前記新データの当該部分データのうち前記旧データの当該部分データと同一でない部分を前記追加データとする前記Add命令コードと
    で前記差分データを生成する
    ことを特徴とする差分データ生成装置。
  4. 前記差分データ生成部は、
    前記新データポインタが示す位置に旧データに含まれるデータをコピーデータとしてコピーさせると共にコピーさせたデータのサイズであるコピーサイズ分移動した位置を示すように前記新データポインタを更新させる第1Move命令コードであり、前記旧データ内でのコピーデータの位置と前記新データ内でのコピーデータの位置との相対値を示すオフセットと前記コピーサイズとを示す第1Move命令コードを用いて、
    前記新データのうち前記旧データと同一である部分を前記コピーデータとする前記第1Move命令コードと、前記新データのうち前記旧データと同一でない部分を前記追加データとする前記Add命令コードとで差分第1データを生成し、
    前記差分データ生成装置は、さらに、
    前記差分データ生成部が生成した前記差分第1データのデータサイズと前記差分データ生成部が生成した前記差分データのデータサイズとを比較し、データサイズの小さい方を前記旧データを前記新データに更新させる差分データとして選択する差分データ選択部
    を備えることを特徴とする請求項3記載の差分データ生成装置。
  5. 特定の機器に対して当該機器内の旧データを新データに更新させる命令コードを示す差分データを生成する差分データ生成装置であり、
    前記旧データと、前記新データと、前記旧データを構成する各部分データについて当該部分データの前記旧データ内での配列位置と当該部分データのサイズとを示す旧データ配置情報と、前記新データを構成する各部分データについて当該部分データの前記新データ内での配列位置と当該部分データのサイズとを示す新データ配置情報とを記憶するデータ記憶部と、
    前記新データ内での位置を示す新データポインタが示す位置に前記旧データに含まれるデータをコピーデータとしてコピーさせると共にコピーさせたデータのサイズであるコピーサイズ分移動した位置を示すように前記新データポインタを更新させる第1Move命令コードであり、前記旧データ内でのコピーデータの位置と前記新データ内でのコピーデータの位置との相対値を示すオフセットと前記コピーサイズとを示す第1Move命令コードと、
    前記新データに追加データを追加させると共に前記追加データのサイズである追加サイズ分移動した位置を示すように前記新データポインタを更新させるAdd命令コードであり、前記追加データと前記追加サイズとを示すAdd命令コードと、
    前記新データポインタが示す位置に旧データに含まれるデータをコピーデータとしてコピーさせて前記新データポインタは更新させない第2Move命令コードであり、前記オフセットとコピーデータのサイズであるコピーサイズとを示す第2Move命令コードと、
    前記新データポインタが示す位置を移動させるサイズである移動サイズを示し、前記移動サイズ分移動した位置を示すように前記新データポインタを更新させるSkip命令コードと
    の少なくともいずれかの命令コードを用いて前記差分データを生成する差分データ生成部とを備え、
    前記差分データ生成部は、
    前記データ記憶部に記憶された前記旧データ配置情報と前記新データ配置情報とに基づいて、配列順序が同じである前記旧データの部分データと前記新データの部分データとについて、前記旧データの当該部分データと前記新データの当該部分データとの共通部分列を特定し、共通部分列を前記コピーデータとする前記第1Move命令コードと、共通部分列以外の部分を前記追加データとする前記Add命令コードとで差分第1データを生成し、
    生成した前記差分第1データにおいて前記オフセットが同一である前記第1Move命令コードが複数ある場合に、前記オフセットが同一である先頭の前記第1Move命令コードの前記コピーデータの先頭から前記オフセットが同一である最後の前記第1Move命令コードの前記コピーデータの最後までを前記コピーデータとする前記第2Move命令コードを、前記オフセットが同一である先頭の前記第1Move命令コードの直前に挿入すると共に、前記オフセットが同一である複数の前記第1Move命令コードそれぞれを、当該第1Move命令コードの前記コピーサイズを前記移動サイズとする前記Skip命令コードに置き換えて、前記差分第1データから前記差分データを生成する
    ことを特徴とする差分データ生成装置。
  6. 特定の機器に対して当該機器内の旧データを新データに更新させる命令コードを示す差分データを生成する差分データ生成装置であり、
    前記旧データと、前記新データと、前記旧データを構成する各部分データについて当該部分データの前記旧データ内での配列位置と当該部分データのサイズとを示す旧データ配置情報と、前記新データを構成する各部分データについて当該部分データの前記新データ内での配列位置と当該部分データのサイズとを示す新データ配置情報とを記憶するデータ記憶部と、
    前記新データ内での位置を示す新データポインタが示す位置に前記旧データに含まれるデータをコピーデータとしてコピーさせると共にコピーさせたデータのサイズであるコピーサイズ分移動した位置を示すように前記新データポインタを更新させる第1Move命令コードであり、前記旧データ内でのコピーデータの位置と前記新データ内でのコピーデータの位置との相対値を示すオフセットと前記コピーサイズとを示す第1Move命令コードと、
    前記新データに追加データを追加させると共に前記追加データのサイズである追加サイズ分移動した位置を示すように前記新データポインタを更新させるAdd命令コードであり、前記追加データと前記追加サイズとを示すAdd命令コードと、
    前記新データポインタが示す位置に旧データに含まれるデータをコピーデータとしてコピーさせて前記新データポインタは更新させない第2Move命令コードであり、前記オフセットとコピーデータのサイズであるコピーサイズとを示す第2Move命令コードと、
    前記新データポインタが示す位置を移動させるサイズである移動サイズを示し、前記移動サイズ分移動した位置を示すように前記新データポインタを更新させるSkip命令コードと
    の少なくともいずれかの命令コードを用いて前記差分データを生成する差分データ生成部とを備え、
    前記差分データ生成部は、
    前記データ記憶部に記憶された前記旧データ配置情報と前記新データ配置情報とに基づいて、配列順序が同じである前記旧データの部分データと前記新データの部分データとについて、前記旧データの当該部分データと前記新データの当該部分データとの共通部分列を特定し、共通部分列を前記コピーデータとする前記第1Move命令コードと、共通部分列以外の部分を前記追加データとする前記Add命令コードとで差分第1データを生成し、
    生成した差分第1データにおいて上記オフセットを同一とする第1Move命令コードの連続する第1Move命令コード群が複数ある場合に、複数の第1Move命令コード群それぞれについて、当該第1Move命令コード群の先頭の第1Move命令コードのコピーデータの先頭から当該第1Move命令コード群の最後の第1Move命令コードのコピーデータの最後までを上記第2コピーデータとする第2Move命令コードを、当該第1Move命令コード群の先頭の第1Move命令コードの直前に挿入すると共に、複数の第1Move命令コード群の各第1Move命令コードそれぞれを、当該第1Move命令コードのコピーサイズを上記ポインタ更新サイズとするSkip命令コードに置き換えることにより、上記差分第1データから上記差分データを生成する
    ことを特徴とする差分データ生成装置。
  7. 前記差分データ生成装置は、さらに、
    前記差分データ生成部が生成した前記差分第1データのデータサイズと前記差分データ生成部が生成した前記差分データのデータサイズとを比較し、データサイズの小さい方を前記旧データを前記新データに更新させる差分データとして選択する差分データ選択部
    を備えることを特徴とする請求項5または請求項6記載の差分データ生成装置。
  8. 特定の機器に対して当該機器内の旧データを新データに更新させる命令コードを示す差分データを生成する差分データ生成装置であり、
    前記旧データと、前記新データと、前記旧データを構成する各部分データについて当該部分データの前記旧データ内での配列位置と当該部分データのサイズとを示す旧データ配置情報と、前記新データを構成する各部分データについて当該部分データの前記新データ内での配列位置と当該部分データのサイズとを示す新データ配置情報とを記憶するデータ記憶部と、
    前記新データ内での位置を示す新データポインタが示す位置に前記旧データに含まれるデータをコピーデータとしてコピーさせると共にコピーさせたデータのサイズであるコピーサイズ分移動した位置を示すように前記新データポインタを更新させる第1Move命令コードであり、前記旧データ内でのコピーデータの位置と前記新データ内でのコピーデータの位置との相対値を示すオフセットと前記コピーサイズとを示す第1Move命令コードと、
    前記新データに追加データを追加させると共に前記追加データのサイズである追加サイズ分移動した位置を示すように前記新データポインタを更新させるAdd命令コードであり、前記追加データと前記追加サイズとを示すAdd命令コードと、
    前記新データポインタが示す位置に旧データに含まれるデータをコピーデータとしてコピーさせて前記新データポインタは更新させない第2Move命令コードであり、前記オフセットとコピーデータのサイズであるコピーサイズとを示す第2Move命令コードと、
    前記新データポインタが示す位置を移動させるサイズである移動サイズを示し、前記移動サイズ分移動した位置を示すように前記新データポインタを更新させるSkip命令コードと
    の少なくともいずれかの命令コードを用いて前記差分データを生成する差分データ生成部とを備え、
    前記差分データ生成部は、
    前記データ記憶部に記憶された前記旧データ配置情報と前記新データ配置情報とに基づいて、合計サイズと部分データの数とが同じである前記旧データの連続して配置される複数の部分データと前記新データの連続して配置される複数の部分データとについて、前記旧データの当該複数の部分データを前記コピーデータとする前記特殊Move命令コードを生成し、
    前記旧データの当該複数の部分データと前記新データの当該複数の部分データとで配列順序が同じである前記旧データの部分データと前記新データの部分データとについて、前記旧データの当該部分データと前記新データの当該部分データとの共通部分列を特定し、
    共通部分列のサイズを前記移動サイズとする前記Skip命令コードを生成し、
    共通部分列以外の部分を前記追加データとする前記Add命令コードを生成して、
    前記差分データを生成する
    ことを特徴とする差分データ生成装置。
  9. 特定の機器に対して当該機器内の旧データを新データに更新させる命令コードを示す差分データを生成する差分データ生成装置の差分データ生成方法であり、
    差分データ生成部が、
    前記新データ内での位置を示す新データポインタが示す位置に前記旧データに含まれるデータをコピーデータとしてコピーさせると共にコピーさせたデータのサイズであるコピーサイズ分移動した位置を示すように前記新データポインタを更新させる第1Move命令コードであり、前記旧データ内でのコピーデータの位置と前記新データ内でのコピーデータの位置との相対値を示すオフセットと前記コピーサイズとを示す第1Move命令コードと、
    前記新データに追加データを追加させると共に前記追加データのサイズである追加サイズ分移動した位置を示すように前記新データポインタを更新させるAdd命令コードであり、前記追加データと前記追加サイズとを示すAdd命令コードと、
    前記新データポインタが示す位置に旧データに含まれるデータをコピーデータとしてコピーさせて前記新データポインタは更新させない第2Move命令コードであり、前記オフセットとコピーデータのサイズであるコピーサイズとを示す第2Move命令コードと、
    前記新データポインタが示す位置を移動させるサイズである移動サイズを示し、前記移動サイズ分移動した位置を示すように前記新データポインタを更新させるSkip命令コードと
    の少なくともいずれかの命令コードを用いて、
    前記新データのうち前記旧データと同一である部分を前記コピーデータとする前記第1Move命令コードと、前記新データのうち前記旧データと同一でない部分を前記追加データとする前記Add命令コードとで差分第1データを生成し、
    生成した前記差分第1データにおいて前記オフセットが同一である前記第1Move命令コードが複数ある場合に、前記オフセットが同一である先頭の前記第1Move命令コードの前記コピーデータの先頭から前記オフセットが同一である最後の前記第1Move命令コードの前記コピーデータの最後までを前記コピーデータとする前記第2Move命令コードを、前記オフセットが同一である先頭の前記第1Move命令コードの直前に挿入すると共に、前記オフセットが同一である複数の前記第1Move命令コードそれぞれを、当該第1Move命令コードの前記コピーサイズを前記移動サイズとする前記Skip命令コードに置き換えて、前記差分第1データから前記差分データを生成する
    ことを特徴とする差分データ生成装置の差分データ生成方法。
  10. 特定の機器に対して当該機器内の旧データを新データに更新させる命令コードを示す差分データを生成する差分データ生成装置の差分データ生成方法であり、
    差分データ生成部が、
    前記新データ内での位置を示す新データポインタが示す位置に前記旧データに含まれるデータをコピーデータとしてコピーさせて前記新データポインタを更新させない特殊Move命令コードであり、前記旧データ内でのコピーデータの位置と前記新データ内でのコピーデータの位置との相対値を示すオフセットと前記コピーサイズとを示す特殊Move命令コードと、
    前記新データに追加データを追加させると共に前記追加データのサイズである追加サイズ分移動した位置を示すように前記新データポインタを更新させるAdd命令コードであり、前記追加データと前記追加サイズとを示すAdd命令コードと、
    前記新データポインタが示す位置を移動させるサイズである移動サイズを示し、前記移動サイズ分移動した位置を示すように前記新データポインタを更新させるSkip命令コードと
    の少なくともいずれかの命令コードを用いて、
    前記旧データを構成する各部分データについて当該部分データの前記旧データ内での配列位置と当該部分データのサイズとを示す旧データ配置情報と、前記新データを構成する各部分データについて当該部分データの前記新データ内での配列位置と当該部分データのサイズとを示す新データ配置情報とに基づいて、配列順序とデータサイズとが同じである前記旧データの部分データと前記新データの部分データとについて、前記旧データの当該部分データを前記コピーデータとする前記特殊Move命令コードと、
    前記新データの当該部分データのうち前記旧データの当該部分データと同一である部分のサイズを前記移動サイズとする前記Skip命令コードと、
    前記新データの当該部分データのうち前記旧データの当該部分データと同一でない部分を前記追加データとする前記Add命令コードと
    で前記差分データを生成する
    ことを特徴とする差分データ生成装置の差分データ生成方法。
  11. 特定の機器に対して当該機器内の旧データを新データに更新させる命令コードを示す差分データを生成する差分データ生成装置の差分データ生成方法であり、
    差分データ生成部が、
    前記新データ内での位置を示す新データポインタが示す位置に前記旧データに含まれるデータをコピーデータとしてコピーさせると共にコピーさせたデータのサイズであるコピーサイズ分移動した位置を示すように前記新データポインタを更新させる第1Move命令コードであり、前記旧データ内でのコピーデータの位置と前記新データ内でのコピーデータの位置との相対値を示すオフセットと前記コピーサイズとを示す第1Move命令コードと、
    前記新データに追加データを追加させると共に前記追加データのサイズである追加サイズ分移動した位置を示すように前記新データポインタを更新させるAdd命令コードであり、前記追加データと前記追加サイズとを示すAdd命令コードと、
    前記新データポインタが示す位置に旧データに含まれるデータをコピーデータとしてコピーさせて前記新データポインタは更新させない第2Move命令コードであり、前記オフセットとコピーデータのサイズであるコピーサイズとを示す第2Move命令コードと、
    前記新データポインタが示す位置を移動させるサイズである移動サイズを示し、前記移動サイズ分移動した位置を示すように前記新データポインタを更新させるSkip命令コードと
    の少なくともいずれかの命令コードを用いて、
    前記旧データを構成する各部分データについて当該部分データの前記旧データ内での配列位置と当該部分データのサイズとを示す旧データ配置情報と、前記新データを構成する各部分データについて当該部分データの前記新データ内での配列位置と当該部分データのサイズとを示す新データ配置情報とに基づいて、配列順序が同じである前記旧データの部分データと前記新データの部分データとについて、前記旧データの当該部分データと前記新データの当該部分データとの共通部分列を特定し、共通部分列を前記コピーデータとする前記第1Move命令コードと、共通部分列以外の部分を前記追加データとする前記Add命令コードとで差分第1データを生成し、
    生成した前記差分第1データにおいて前記オフセットが同一である前記第1Move命令コードが複数ある場合に、前記オフセットが同一である先頭の前記第1Move命令コードの前記コピーデータの先頭から前記オフセットが同一である最後の前記第1Move命令コードの前記コピーデータの最後までを前記コピーデータとする前記第2Move命令コードを、前記オフセットが同一である先頭の前記第1Move命令コードの直前に挿入すると共に、前記オフセットが同一である複数の前記第1Move命令コードそれぞれを、当該第1Move命令コードの前記コピーサイズを前記移動サイズとする前記Skip命令コードに置き換えて、前記差分第1データから前記差分データを生成する
    ことを特徴とする差分データ生成装置の差分データ生成方法。
  12. 特定の機器に対して当該機器内の旧データを新データに更新させる命令コードを示す差分データを生成する差分データ生成装置であり、
    差分データ生成部が、
    前記新データ内での位置を示す新データポインタが示す位置に前記旧データに含まれるデータをコピーデータとしてコピーさせると共にコピーさせたデータのサイズであるコピーサイズ分移動した位置を示すように前記新データポインタを更新させる第1Move命令コードであり、前記旧データ内でのコピーデータの位置と前記新データ内でのコピーデータの位置との相対値を示すオフセットと前記コピーサイズとを示す第1Move命令コードと、
    前記新データに追加データを追加させると共に前記追加データのサイズである追加サイズ分移動した位置を示すように前記新データポインタを更新させるAdd命令コードであり、前記追加データと前記追加サイズとを示すAdd命令コードと、
    前記新データポインタが示す位置に旧データに含まれるデータをコピーデータとしてコピーさせて前記新データポインタは更新させない第2Move命令コードであり、前記オフセットとコピーデータのサイズであるコピーサイズとを示す第2Move命令コードと、
    前記新データポインタが示す位置を移動させるサイズである移動サイズを示し、前記移動サイズ分移動した位置を示すように前記新データポインタを更新させるSkip命令コードと
    の少なくともいずれかの命令コードを用いて、
    前記旧データを構成する各部分データについて当該部分データの前記旧データ内での配列位置と当該部分データのサイズとを示す旧データ配置情報と、前記新データを構成する各部分データについて当該部分データの前記新データ内での配列位置と当該部分データのサイズとを示す新データ配置情報とに基づいて、配列順序が同じである前記旧データの部分データと前記新データの部分データとについて、前記旧データの当該部分データと前記新データの当該部分データとの共通部分列を特定し、共通部分列を前記コピーデータとする前記第1Move命令コードと、共通部分列以外の部分を前記追加データとする前記Add命令コードとで差分第1データを生成し、
    生成した差分第1データにおいて上記オフセットを同一とする第1Move命令コードの連続する第1Move命令コード群が複数ある場合に、複数の第1Move命令コード群それぞれについて、当該第1Move命令コード群の先頭の第1Move命令コードのコピーデータの先頭から当該第1Move命令コード群の最後の第1Move命令コードのコピーデータの最後までを上記第2コピーデータとする第2Move命令コードを、当該第1Move命令コード群の先頭の第1Move命令コードの直前に挿入すると共に、複数の第1Move命令コード群の各第1Move命令コードそれぞれを、当該第1Move命令コードのコピーサイズを上記ポインタ更新サイズとするSkip命令コードに置き換えることにより、上記差分第1データから上記差分データを生成する
    ことを特徴とする差分データ生成装置の差分データ生成方法。
  13. 特定の機器に対して当該機器内の旧データを新データに更新させる命令コードを示す差分データを生成する差分データ生成装置であり、
    差分データ生成部が、
    前記新データ内での位置を示す新データポインタが示す位置に前記旧データに含まれるデータをコピーデータとしてコピーさせると共にコピーさせたデータのサイズであるコピーサイズ分移動した位置を示すように前記新データポインタを更新させる第1Move命令コードであり、前記旧データ内でのコピーデータの位置と前記新データ内でのコピーデータの位置との相対値を示すオフセットと前記コピーサイズとを示す第1Move命令コードと、
    前記新データに追加データを追加させると共に前記追加データのサイズである追加サイズ分移動した位置を示すように前記新データポインタを更新させるAdd命令コードであり、前記追加データと前記追加サイズとを示すAdd命令コードと、
    前記新データポインタが示す位置に旧データに含まれるデータをコピーデータとしてコピーさせて前記新データポインタは更新させない第2Move命令コードであり、前記オフセットとコピーデータのサイズであるコピーサイズとを示す第2Move命令コードと、
    前記新データポインタが示す位置を移動させるサイズである移動サイズを示し、前記移動サイズ分移動した位置を示すように前記新データポインタを更新させるSkip命令コードと
    の少なくともいずれかの命令コードを用いて、
    前記旧データを構成する各部分データについて当該部分データの前記旧データ内での配列位置と当該部分データのサイズとを示す旧データ配置情報と、前記新データを構成する各部分データについて当該部分データの前記新データ内での配列位置と当該部分データのサイズとを示す新データ配置情報とに基づいて、合計サイズと部分データの数とが同じである前記旧データの連続して配置される複数の部分データと前記新データの連続して配置される複数の部分データとについて、前記旧データの当該複数の部分データを前記コピーデータとする前記特殊Move命令コードを生成し、
    前記旧データの当該複数の部分データと前記新データの当該複数の部分データとで配列順序が同じである前記旧データの部分データと前記新データの部分データとについて、前記旧データの当該部分データと前記新データの当該部分データとの共通部分列を特定し、
    共通部分列のサイズを前記移動サイズとする前記Skip命令コードを生成し、
    共通部分列以外の部分を前記追加データとする前記Add命令コードを生成して、
    前記差分データを生成する
    ことを特徴とする差分データ生成装置の差分データ生成方法。
  14. 請求項9〜請求項13いずれかに記載の差分データ生成装置の差分データ生成方法をコンピュータに実行させる差分データ生成プログラム。
JP2007249287A 2007-09-26 2007-09-26 差分データ生成装置、差分データ生成装置の差分データ生成方法および差分データ生成プログラム Expired - Fee Related JP4249793B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007249287A JP4249793B2 (ja) 2007-09-26 2007-09-26 差分データ生成装置、差分データ生成装置の差分データ生成方法および差分データ生成プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007249287A JP4249793B2 (ja) 2007-09-26 2007-09-26 差分データ生成装置、差分データ生成装置の差分データ生成方法および差分データ生成プログラム

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2004264948A Division JP4036852B2 (ja) 2004-09-13 2004-09-13 差分データ生成装置、差分データ生成方法および差分データ生成プログラム

Publications (2)

Publication Number Publication Date
JP2008041112A true JP2008041112A (ja) 2008-02-21
JP4249793B2 JP4249793B2 (ja) 2009-04-08

Family

ID=39175971

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007249287A Expired - Fee Related JP4249793B2 (ja) 2007-09-26 2007-09-26 差分データ生成装置、差分データ生成装置の差分データ生成方法および差分データ生成プログラム

Country Status (1)

Country Link
JP (1) JP4249793B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011113123A (ja) * 2009-11-24 2011-06-09 Mitsubishi Electric Corp 差分管理装置及びコンピュータプログラム及び差分管理方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011113123A (ja) * 2009-11-24 2011-06-09 Mitsubishi Electric Corp 差分管理装置及びコンピュータプログラム及び差分管理方法

Also Published As

Publication number Publication date
JP4249793B2 (ja) 2009-04-08

Similar Documents

Publication Publication Date Title
EP3021218B1 (en) Upgrade packet generation method, server, software upgrade method, and mobile terminal
JP5019578B2 (ja) 記憶装置に記憶されたコンテンツのバージョンを更新する方法およびシステム
JP5267337B2 (ja) プログラム、記憶媒体、情報処理装置、プリンタ装置およびシステム
US8683312B2 (en) Inter-document links involving embedded documents
JP4714778B2 (ja) アーカイブ装置、変換装置および変換プログラム
US20060161605A1 (en) Data management system, a data management apparatus, a data management method, a data supplying system, and a computer-readable recording medium with a program recorded therein
KR20120063455A (ko) 펌웨어 업데이트 장치 및 방법
CN105760201A (zh) 一种嵌入式装置的启动方法和装置
US8196093B2 (en) Apparatus and method for componentizing legacy system
JP4036852B2 (ja) 差分データ生成装置、差分データ生成方法および差分データ生成プログラム
JP2009093501A (ja) 画像処理装置及びその制御方法
JP4249793B2 (ja) 差分データ生成装置、差分データ生成装置の差分データ生成方法および差分データ生成プログラム
JPWO2010044150A1 (ja) プログラム変更管理装置、プログラム変更管理プログラムおよびプログラム変更管理方法
US11789708B2 (en) Compression of firmware updates
US10310871B2 (en) Non-transitory computer-readable recording medium storing control program, control device and control method
JP2004227520A (ja) 新旧プログラム書換情報生成装置及び新旧プログラム書換情報生成方法及びプログラム及びプログラムを記録したコンピュータ読み取り可能な記録媒体
JP4885569B2 (ja) スタイルシート生成装置及びスタイルシート生成プログラム
US20070245336A1 (en) Method of generating patch file and computer readable recording medium storing programs for executing the method
JP4791205B2 (ja) 差分生成装置及び差分適用装置及び差分生成プログラム及び差分適用プログラム
JP4865449B2 (ja) 差分生成装置及び差分適用装置及び差分生成プログラム及び差分適用プログラム及び差分生成適用システム及び差分生成適用方法
JP3733135B1 (ja) ソフトウエア差分抽出適用システム及び差分抽出装置及び差分適用装置及びプログラム
WO2017145357A1 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
JP5673730B2 (ja) 情報処理装置
KR100750169B1 (ko) 델타 파일 생성 방법 및 이를 이용한 소프트웨어 업데이트방법
JP2009206606A (ja) 情報処理装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081111

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081210

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090113

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090115

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120123

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130123

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130123

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees