(57)【特許請求の範囲】
【請求項１】
第１パッチファイルを保持する第１保持部と、
所定のブロックサイズをもつ複数のデータブロックにより構成される第２パッチファイルの各データブロックの第１ハッシュ値を保持する第２保持部と、
第１パッチファイルにおける前記ブロックサイズ分のデータの第１ハッシュ値を算出するハッシュ値算出部と、
第１段階の比較処理として、前記ハッシュ値算出部により算出された第１ハッシュ値と、前記第２保持部に保持された各データブロックの第１ハッシュ値とを比較する比較部と、を備え、
前記比較部は、第１段階の比較処理において第１ハッシュ値同士の一致を判定すると、第２段階の比較処理として、第１パッチファイルにおける前記ブロックサイズ分のデータの第２ハッシュ値と、第１ハッシュ値が一致した第２パッチファイルのデータブロックの第２ハッシュ値とを比較し、第２ハッシュ値同士の一致を判定すると、第１パッチファイルにおける前記ブロックサイズ分のデータと、第２パッチファイルのデータブロックに含まれるデータの一致を判定し、
前記ハッシュ値算出部は、前記比較部が一致を判定した第１パッチファイルにおける前記ブロックサイズ分のデータの終了アドレスの次のアドレスから連続する前記ブロックサイズ分のデータの第１ハッシュ値を算出し、
前記比較部は、第１段階の比較処理として、前記比較部が一致を判定した第１パッチファイルにおける前記ブロックサイズ分のデータの終了アドレスの次のアドレスから連続する前記ブロックサイズ分のデータの第１ハッシュ値と、前記第２保持部に保持された第１ハッシュ値とを比較する、
ことを特徴とする情報処理装置。
【請求項２】
第２ハッシュ値のビット数は、第１ハッシュ値のビット数よりも多い、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第２保持部は、第２パッチファイルの各データブロックの第２ハッシュ値を保持する、
ことを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記ハッシュ値算出部は、第１段階の比較処理で使用する第１ハッシュ値とともに、同一ビット長の値の異なる１以上の第１ハッシュ値を算出し、
前記比較部は、同一ビット長の値の異なる１以上の第１ハッシュ値を、第２ハッシュ値の少なくとも一部として利用する、
ことを請求項１から３のいずれかに記載の情報処理装置。
【請求項５】
前記ハッシュ値算出部は、第１パッチファイルにおける前記ブロックサイズ分のデータを所定数のバイト分だけずらしたデータの第１ハッシュ値を算出する、
ことを特徴とする請求項１から４のいずれかに記載の情報処理装置。
【請求項６】
前記ハッシュ値算出部は、第１パッチファイルにおける前記ブロックサイズ分のデータを１バイト分だけずらしたデータの第１ハッシュ値を算出する、
ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
第１パッチファイルを保持する第１保持部と、
所定のブロックサイズをもつ複数のデータブロックにより構成される第２パッチファイルの各データブロックの第１ハッシュ値を保持する第２保持部と、
第１パッチファイルにおける前記ブロックサイズ分のデータの第１ハッシュ値を算出するハッシュ値算出部と、
第１段階の比較処理として、前記ハッシュ値算出部により算出された第１ハッシュ値と、前記第２保持部に保持された各データブロックの第１ハッシュ値とを比較する比較部と、を備え、
前記比較部は、第１段階の比較処理において第１ハッシュ値同士の一致を判定すると、第２段階の比較処理として、第１パッチファイルにおける前記ブロックサイズ分のデータの第２ハッシュ値と、第１ハッシュ値が一致した第２パッチファイルのデータブロックの第２ハッシュ値とを比較し、第２ハッシュ値同士の一致を判定すると、第１パッチファイルにおける前記ブロックサイズ分のデータと、第２パッチファイルのデータブロックに含まれるデータの一致を判定するものであって、
前記ハッシュ値算出部は、第１段階の比較処理で使用した第１ハッシュ値と同一ビット長であって値の異なる複数のハッシュ値を算出して、算出した複数のハッシュ値を組み合わせることで、前記比較部による第２段階の比較処理で使用する第１パッチファイルにおける前記ブロックサイズ分のデータの第２ハッシュ値を算出する、
ことを特徴とする情報処理装置。
【請求項８】
第１パッチファイルを保持する第１保持部と、所定のブロックサイズをもつ複数のデータブロックにより構成される第２パッチファイルの各データブロックの第１ハッシュ値を保持する第２保持部に接続するコンピュータに、
第１パッチファイルにおける前記ブロックサイズ分のデータの第１ハッシュ値を算出する機能と、
第１段階の比較処理として、算出された第１ハッシュ値と、前記第２保持部に保持された各データブロックの第１ハッシュ値とを比較する機能と、
第１段階の比較処理において第１ハッシュ値同士の一致を判定すると、第２段階の比較処理として、第１パッチファイルにおける前記ブロックサイズ分のデータの第２ハッシュ値と、第１ハッシュ値が一致した第２パッチファイルのデータブロックの第２ハッシュ値とを比較する機能と、
第２段階の比較処理において第２ハッシュ値同士の一致を判定すると、第１パッチファイルにおける前記ブロックサイズ分のデータと、第２パッチファイルのデータブロックに含まれるデータの一致を判定する機能と、
第２段階の比較処理においてデータ同士の一致を判定すると、一致を判定した第１パッチファイルにおける前記ブロックサイズ分のデータの終了アドレスの次のアドレスから連続する前記ブロックサイズ分のデータの第１ハッシュ値を算出する機能と、
第１段階の比較処理として、一致を判定した第１パッチファイルにおける前記ブロックサイズ分のデータの終了アドレスの次のアドレスから連続する前記ブロックサイズ分のデータの第１ハッシュ値と、前記第２保持部に保持された第１ハッシュ値とを比較する機能と、
を実現させるためのプログラム。
【請求項９】
第１パッチファイルを保持する第１保持部と、所定のブロックサイズをもつ複数のデータブロックにより構成される第２パッチファイルの各データブロックのハッシュ値を保持する第２保持部に接続するコンピュータに、
第１パッチファイルにおける前記ブロックサイズ分のデータの第１ハッシュ値を算出する機能と、
第１段階の比較処理として、算出された第１ハッシュ値と、前記第２保持部に保持された各データブロックの第１ハッシュ値とを比較する機能と、
第１段階の比較処理において第１ハッシュ値同士の一致を判定すると、第１段階の比較処理で使用した第１ハッシュ値と同一ビット長であって値の異なる複数のハッシュ値を算出して、算出した複数のハッシュ値を組み合わせることで、第２段階の比較処理で使用する第１パッチファイルにおける前記ブロックサイズ分のデータの第２ハッシュ値を算出する機能と、
第２段階の比較処理として、第１パッチファイルにおける前記ブロックサイズ分のデータの第２ハッシュ値と、第１ハッシュ値が一致した第２パッチファイルのデータブロックの第２ハッシュ値とを比較する機能と、
第２段階の比較処理において第２ハッシュ値同士の一致を判定すると、第１パッチファイルにおける前記ブロックサイズ分のデータと、第２パッチファイルのデータブロックに含まれるデータの一致を判定する機能と、
を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、配信するデータ量を削減するための技術に関する。
【背景技術】
【０００２】
特許文献１は、異なる２つのバージョンのパッチファイルにおける各データブロックのハッシュ値を比較して、両者の間に同一のデータブロックが存在するか判定する差分情報生成ソフトウェアを開示する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１５−２０７１４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に開示された差分情報生成ソフトウェアは、異なる２つのバージョンのパッチファイルにおけるデータブロック単位での同一を判定する。そのため新しいバージョンのデータブロックのデータが古いバージョンに含まれていたとしても、データブロック内での記録位置がずれているとデータブロックとしては異なるため、データブロックの同一を判定しない。つまり特許文献１に開示された技術によると、新しいバージョンのデータブロックのデータが古いバージョンに含まれていても、データブロック内での記録位置がずれていることで古いバージョンに含まれていることを確認できず、配信データ量を効果的に削減できないという問題がある。また異なる２つのバージョンのパッチファイル間の重複データを探索する処理は、効率的に実施されることが好ましい。
【０００５】
そこで本発明は、配信するデータ量を効率的に削減するための技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のある態様の情報処理装置は、第１パッチファイルを保持する第１保持部と、所定のブロックサイズをもつ複数のデータブロックにより構成される第２パッチファイルの各データブロックの第１ハッシュ値を保持する第２保持部と、第１パッチファイルにおけるブロックサイズ分のデータの第１ハッシュ値を算出するハッシュ値算出部と、第１段階の比較処理として、ハッシュ値算出部により算出された第１ハッシュ値と、第２保持部に保持された各データブロックの第１ハッシュ値とを比較する比較部とを備える。比較部は、第１段階の比較処理において第１ハッシュ値同士の一致を判定すると、第２段階の比較処理として、第１パッチファイルにおけるブロックサイズ分のデータの第２ハッシュ値と、第１ハッシュ値が一致した第２パッチファイルのデータブロックの第２ハッシュ値とを比較し、第２ハッシュ値同士の一致を判定すると、第１パッチファイルにおけるブロックサイズ分のデータと、第２パッチファイルのデータブロックに含まれるデータの一致を判定する。
【０００７】
本発明の別の態様もまた、情報処理装置である。この情報処理装置は、第１パッチファイルを保持する第１保持部と、所定のブロックサイズをもつ複数のデータブロックにより構成される第２パッチファイルの各データブロックのハッシュ値を保持する第２保持部と、第１パッチファイルにおけるブロックサイズ分のデータのハッシュ値を算出するハッシュ値算出部と、ハッシュ値算出部により算出されたハッシュ値と、第２保持部に保持された各データブロックのハッシュ値とを比較する比較部とを備える。ハッシュ値算出部は、第１パッチファイルにおけるブロックサイズ分のデータを、所定数のバイト分ずつずらしたデータの第１ハッシュ値を算出する。
【０００８】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【０００９】
本発明の情報処理技術によると、配信するデータ量を効率的に削減するための技術を提供することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】実施例にかかるアプリケーション配信システムを示す図である。
【図２】情報処理装置の機能ブロックを示す図である。
【図３】第１パッチファイルと第２パッチファイルの例を示す図である。
【図４】各データブロックの第１ハッシュ値の例を示す図である。
【図５】第１ハッシュ値の例を示す図である。
【図６】第１ハッシュ値の例を示す図である。
【図７】第１ハッシュ値の例を示す図である。
【図８】第１ハッシュ値の例を示す図である。
【図９】第２ハッシュ値の例を示す図である。
【発明を実施するための形態】
【００１１】
図１は、本発明の実施例にかかるアプリケーション配信システム１を示す。アプリケーション配信システム１は、アプリケーションソフトウェアおよびパッチファイルを配信する配信サーバ４と、配信サーバ４にアプリケーションソフトウェアおよびパッチファイルを配信可能にアップロードする情報処理装置１０と、インターネットなどのネットワーク２を介して配信サーバ４からアプリケーションソフトウェアおよびパッチファイルをダウンロードする複数のユーザ端末３とを備える。実施例においてアプリケーションソフトウェアはゲームソフトウェアであり、ユーザ端末３はゲーム装置であってよい。
【００１２】
ゲームメーカは、シナリオを修正または追加する際にパッチファイルを作成する。パッチファイルは、ゲームメーカから情報処理装置１０に提供されて、配信サーバ４に配信可能にアップロードされる。ユーザ端末３は、配信サーバ４からパッチファイルをダウンロードして、ゲームを最新の状態で実行できるようにする。シナリオの修正や追加は頻繁に行われることが多く、パッチファイルはバージョン情報により管理される。
【００１３】
複数のバージョンのパッチファイルがリリースされている場合、ユーザ端末３は、最新のバージョンのパッチファイルをダウンロードすれば、ゲームを最新の状態で起動できるようになる。ユーザ端末３が全てのバージョンのパッチファイルをダウンロードしているとは限らないため、最新のパッチファイルには、過去のバージョンのパッチファイルに含まれる修正コンテンツおよび追加コンテンツが含まれる。そのためバージョンが新しいほど、パッチファイルのデータ量は大規模化する。
【００１４】
ユーザ端末３が、最新バージョンのパッチファイルをダウンロードする際、既にダウンロード済みの過去のバージョンのパッチファイルに含まれるコンテンツをダウンロードする必要はない。そのため実施例の情報処理装置１０は、最新のバージョンのパッチファイルのデータブロックに含まれるデータが過去のバージョンのパッチファイルに含まれるか確認して、未ダウンロードのデータブロックのみをユーザ端末３に配信させるようにする。
【００１５】
図２は、情報処理装置１０の機能ブロックを示す。情報処理装置１０は、処理部２０および記録部４０を備える。処理部２０は、第１ハッシュ値算出部２２、第２ハッシュ値算出部２４、比較部２６および差分情報生成部２８を有し、記録部４０は、第１パッチファイル保持部４２、第２パッチファイル保持部４４、ハッシュ値保持部４６および差分情報記録部４８を有する。
【００１６】
これらの構成は、ハードウエアコンポーネントでいえば、任意のコンピュータのＣＰＵ、メモリ、メモリにロードされたプログラム、ストレージなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。
【００１７】
情報処理装置１０は、配信サーバ４と同じ運営主体によって管理され、新しいパッチファイルと古いパッチファイルとの差分情報を生成する。なお情報処理装置１０の機能はゲームメーカに提供されて、新しいパッチファイルの配信データ量をどれだけ削減できるか確認するために利用されてもよい。
【００１８】
バージョンが異なるパッチファイル間では、多くのデータが共通する。バージョン１の古いパッチファイルと、バージョン２の新しいパッチファイルが存在する場合、既にユーザ端末３が、バージョン１のパッチファイルをダウンロード済みであれば、バージョン２のパッチファイルにおける同じデータを含むデータブロックをダウンロードすることは、ネットワークリソースを無駄に使用することになる。そこでユーザ端末３において既にダウンロード済みのデータについては、配信サーバ４からダウンロードしないことが好ましい。
【００１９】
第１パッチファイル保持部４２は、古いバージョン１の第１パッチファイルを保持し、第２パッチファイル保持部４４は、新しいバージョン２の第２パッチファイルを保持する。第２パッチファイルは、最新のパッチファイルであってよい。情報処理装置１０は、ゲームメーカから第２パッチファイルを受け取ると、第２パッチファイル保持部４４に格納して、第２パッチファイルの複数のデータブロックの中で、第１パッチファイルとの関係で配信しなくてよいデータブロックが存在するか確認する処理を実施する。
【００２０】
図３は、第１パッチファイルと第２パッチファイルの例を示す。各パッチファイルは、所定のブロックサイズをもつ複数のデータブロックにより構成される。パッチファイルは、圧縮されていても、圧縮されていなくてもよい。データブロックはファイルシステムがデータを転送する基本単位であり、たとえば６４キロバイトに設定される。実際のパッチファイルは、膨大な数のデータブロックにより構成されるが、図３では説明の便宜上、第１パッチファイルが２０個のデータブロックＴ０〜Ｔ１９で構成され、第２パッチファイルが２０個のデータブロックＬ０〜Ｌ１９で構成される例を示している。
【００２１】
実施例において第１パッチファイルは既にユーザ端末３にダウンロードされている。また第２パッチファイルのデータブロックＬ０〜Ｌ１９のそれぞれが配信候補である。以下、第２パッチファイルのデータブロックＬ０〜Ｌ１９のデータが、第１パッチファイルに含まれているか確認する手法について説明する。
【００２２】
図４は、第２パッチファイルの各データブロックの第１ハッシュ値を示す。第１ハッシュ値算出部２２は、第２パッチファイルの各データブロックの第１ハッシュ値を算出する。ここで第１ハッシュ値算出部２２は、線形合同法（linear congruential generator）を利用して、６４ビットのローリングハッシュ値Ｒを算出する。具体的に第１ハッシュ値算出部２２は、データブロックＬ０の第１ハッシュ値をＲ０、データブロックＬ１の第１ハッシュ値をＲ１、・・・データブロックＬ１９の第１ハッシュ値をＲ１９と算出する。第１ハッシュ値算出部２２は、算出した第１ハッシュ値を、ハッシュ値保持部４６に記憶させる。これによりハッシュ値保持部４６は、第２パッチファイルの各データブロックの第１ハッシュ値を保持する。
【００２３】
以後、第１パッチファイルのデータが、第２パッチファイルのデータブロックのデータと同じであるか確認する処理を実施する。ここで比較対象となる第１パッチファイルのデータは、アドレスが連続するブロックサイズ分のデータである。第１ハッシュ値算出部２２は、第１パッチファイルにおけるブロックサイズ分のデータの第１ハッシュ値を算出する。
【００２４】
最初に第１ハッシュ値算出部２２は、第１パッチファイルの先頭バイトからブロックサイズ分のデータの第１ハッシュ値を算出する。
図５は、第１パッチファイルの先頭バイトからブロックサイズ分のデータの第１ハッシュ値Ｒｂ０を示す。第１パッチファイルの先頭バイトからブロックサイズ分のデータは、データブロックＴ０のデータに対応する。つまり第１ハッシュ値算出部２２は、データブロックＴ０の６４ビットローリングハッシュ値Ｒｂ０を算出する。
【００２５】
実施例の比較部２６は２段階の比較処理を実施する。比較部２６は、第１段階の比較処理として、第１ハッシュ値同士を比較し、第１ハッシュ値の一致を判定すると、第２段階の比較処理として、第１ハッシュ値よりも衝突確率の低い第２ハッシュ値同士を比較する。
【００２６】
まず比較部２６は、第１段階の比較処理として、第１ハッシュ値算出部２２により算出された第１ハッシュ値と、ハッシュ値保持部４６に保持された第２パッチファイルの各データブロックの第１ハッシュ値とを比較する。つまり比較部２６は、算出された第１ハッシュ値Ｒｂ０と、第２パッチファイルの各データブロックの第１ハッシュ値Ｒ０〜Ｒ１９とを比較する。このとき第１ハッシュ値Ｒｂ０が、第１ハッシュ値Ｒ０〜Ｒ１９のいずれかと一致すると、比較部２６は、第２段階の比較処理を実施するが、ここでは、第１ハッシュ値Ｒｂ０が、第１ハッシュ値Ｒ０〜Ｒ１９のいずれとも一致せず、第１パッチファイルのデータブロックＴ０と同じデータを含むデータブロックが第２パッチファイルに存在しないことが確認される。
【００２７】
次に、第１ハッシュ値算出部２２は、前回第１ハッシュ値を求めたブロックサイズ分のデータを所定数のバイト分だけスライドして同じブロックサイズ分のデータを特定し、特定したデータの第１ハッシュ値を算出する。なおスライドするバイト数は、ブロックサイズ（６４キロバイト）よりも小さいバイト数であり、１バイトであってよい。
【００２８】
図６は、前回のブロックサイズ分のデータを所定数のバイト分だけスライドさせたブロックサイズ分のデータの第１ハッシュ値Ｒｂ１を示す。図５のブロックサイズ分のデータと比較して、図６に示すブロックサイズ分のデータは、データブロックＴ０のデータを所定数のバイト分だけずらしたデータである。実施例で、所定数のバイトは「１バイト」であり、第１ハッシュ値算出部２２は、前回のデータを１バイトだけスライドしたデータの６４ビットローリングハッシュ値Ｒｂ１を算出する。
【００２９】
比較部２６は、第１段階の比較処理として、第１ハッシュ値算出部２２により算出された第１ハッシュ値Ｒｂ１と、ハッシュ値保持部４６に保持された第２パッチファイルの各データブロックの第１ハッシュ値Ｒ０〜Ｒ１９とを比較する。ここでは、第１ハッシュ値Ｒｂ１が、第１ハッシュ値Ｒ０〜Ｒ１９のいずれとも一致せず、第２パッチファイルのデータブロックが、第１パッチファイルのデータブロックＴ０を１バイト分だけスライドした６４キロバイトのデータに一致しないことが確認される。
以後、第１ハッシュ値算出部２２は、第１ハッシュ値を求めたブロックサイズ分のデータを１バイト分ずつずらしたデータを特定し、当該データの第１ハッシュ値を算出する。
【００３０】
図７は、前回第１ハッシュ値を求めたブロックサイズ分のデータを１バイト分だけスライドさせたデータの第１ハッシュ値Ｒｂ２を示す。第１ハッシュ値算出部２２が、第１パッチファイルのデータブロックＴ０を２バイト分だけスライドしたデータの６４ビットローリングハッシュ値Ｒｂ２を算出すると、比較部２６が、算出された第１ハッシュ値Ｒｂ２と、第２パッチファイルの各データブロックの第１ハッシュ値Ｒ０〜Ｒ１９とを比較する。ここでは、第１ハッシュ値Ｒｂ２が、第１ハッシュ値Ｒ０〜Ｒ１９のいずれとも一致せず、第２パッチファイルのデータブロックが、第１パッチファイルのデータブロックＴ０を２バイト分だけスライドした６４キロバイトのデータに一致しないことが確認される。
【００３１】
図８は、前回第１ハッシュ値を求めたブロックサイズ分のデータを１バイト分だけスライドさせたデータの第１ハッシュ値Ｒｂ３を示す。第１ハッシュ値算出部２２が、第１パッチファイルのデータブロックＴ０を３バイト分だけスライドしたデータの６４ビットローリングハッシュ値Ｒｂ３を算出すると、比較部２６が、算出された第１ハッシュ値Ｒｂ３と、第２パッチファイルの各データブロックの第１ハッシュ値Ｒ０〜Ｒ１９とを比較する。
【００３２】
このとき比較部２６が、第１ハッシュ値Ｒｂ３と、第２パッチファイルの各データブロックの第１ハッシュ値Ｒ０〜Ｒ１９のいずれかとの一致を判定する。ここでは第１ハッシュ値Ｒｂ３に、第１ハッシュ値Ｒ８が一致する。比較部２６は、第１段階の比較処理において第１ハッシュ値同士の一致を判定すると、第１パッチファイルにおけるブロックサイズ分のデータと、第２パッチファイルのデータブロックＬ８とが同一である可能性が高いことを確認する。
【００３３】
続いて比較部２６は、第２段階の比較処理として、第１パッチファイルにおけるブロックサイズ分のデータの第２ハッシュ値と、第１ハッシュ値が一致した第２パッチファイルのデータブロックＬ８の第２ハッシュ値とを比較する。第２段階の比較処理は、第１段階の比較処理で使用した第１ハッシュ値よりも、衝突確率の低い第２ハッシュ値を利用する。第２ハッシュ値は、ＳＨＡ−２５６アルゴリズムにより２５６ビットのハッシュ値として算出されてよい。
【００３４】
ハッシュ値の衝突確率を低くするためには、ハッシュ値のビット数を多くすればよいことが知られている。そこで実施例においても、第２ハッシュ値のビット数を、第１ハッシュ値のビット数よりも多くすることで、第２段階の比較処理における衝突確率を低くできる。
【００３５】
第２ハッシュ値算出部２４はＳＨＡ−２５６アルゴリズムを利用して、第１パッチファイルにおけるブロックサイズ分のデータの第２ハッシュ値Ｈｂ３を算出し、また第１ハッシュ値が一致した第２パッチファイルのデータブロックＬ８の第２ハッシュ値Ｈ８を算出する。なお第２ハッシュ値算出部２４は、事前に第２パッチファイルのデータブロックＬ０〜Ｌ１９の第２ハッシュ値Ｈ０〜Ｈ１９を算出して、ハッシュ値保持部４６に記憶させておいてもよい。これにより第２段階の比較処理の開始前に、ハッシュ値保持部４６は、第２パッチファイルの各データブロックの第２ハッシュ値を保持していてよい。
【００３６】
図９は、算出された２つの第２ハッシュ値を示す。比較部２６は、第１パッチファイルにおけるブロックサイズ分のデータの第２ハッシュ値Ｈｂ３と、第１ハッシュ値が一致した第２パッチファイルのデータブロックＬ８の第２ハッシュ値Ｈ８とを比較し、第２ハッシュ値同士が一致すると、第１パッチファイルにおけるブロックサイズ分のデータと、第２パッチファイルのデータブロックＬ８に含まれるデータの一致を判定する。なお第２ハッシュ値同士が一致しなければ、比較部２６は、第１パッチファイルにおけるブロックサイズ分のデータと、第２パッチファイルのデータブロックＬ８に含まれるデータとが異なることを判定する。
【００３７】
差分情報生成部２８は、一致した第２パッチファイルのデータブロックＬ８のデータが含まれる第１パッチファイルのアドレス情報を取得する。このアドレス情報は、第２パッチファイルと第１パッチファイルの差分情報を構成し、差分情報記録部４８に記録される。差分情報は、第２パッチファイルの各データブロックに対して生成され、第１パッチファイルに同一のデータが含まれるデータブロックに対しては、同一のデータが第１パッチファイルに含まれていることを示すフラグ情報（フラグ値１）と、第１パッチファイルのアドレス情報が差分情報として記録される。
【００３８】
第１ハッシュ値算出部２２が、第１パッチファイルの最終バイトを含むデータの第１ハッシュ値を算出し、比較部２６による比較処理が終了すると、差分情報生成部２８は、第１パッチファイルに同一のデータが含まれないデータブロックに対して、同一のデータが第１パッチファイルに含まれていないことを示すフラグ情報（フラグ値０）を差分情報として記録する。
【００３９】
実施例において比較部２６は、第１段階の比較処理を６４ビットの第１ハッシュ値を用いて実施することで、２５６ビットのハッシュ値を用いて第１段階の比較処理を実施する場合と比較すると、第１段階における計算量を大幅に削減できる。また実施例では第１ハッシュ値算出部２２が、第１パッチファイルのブロックサイズ分のデータを１バイトずつスライドして第１ハッシュ値を算出し、比較部２６が、算出された第１ハッシュ値と第２パッチファイルの各データブロックの第１ハッシュ値とを比較する第１段階の比較処理を繰り返す。これにより第２パッチファイルのデータブロックに含まれるデータと同一である可能性が高い全てのデータを、第１パッチファイルから抽出でき、第２パッチファイルの配信データ量を大幅に削減することが可能となる。
【００４０】
情報処理装置１０は、全ての処理を完了すると第２パッチファイルを各データブロック内で暗号化し、暗号化した第２パッチファイルと、差分情報記録部４８に記録した差分情報とを、配信サーバ４に配信可能にアップロードする。
【００４１】
第１パッチファイルをダウンロード済みのユーザ端末３が、配信サーバ４に第２パッチファイルの送信を要求すると、配信サーバ４は、ユーザ端末３が第１パッチファイルをダウンロード済みであることを確認する。それから配信サーバ４は、第１パッチファイルと第２パッチファイルとの差分情報を参照して、第２パッチファイルの配信処理を実行する。この配信処理では、フラグ値０が設定されたデータブロックが配信され、一方でフラグ値１が設定されたデータブロックについては配信せず、対応付けられた第１パッチファイルのアドレス情報が配信される。
【００４２】
以上、本発明を実施例をもとに説明した。この実施例は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。実施例では、アプリケーションの例としてゲームを示したが、それ以外のアプリケーションであってもよい。
【００４３】
実施例では、第１ハッシュ値算出部２２が、第１パッチファイルにおいてブロックサイズ分のデータを１バイトずつスライドさせて第１ハッシュ値を算出することを説明した。図９に示すように比較部２６が、第１パッチファイルにおけるブロックサイズ分のデータと第２パッチファイルのデータブロックとが一致することを判定すると、第１ハッシュ値算出部２２は、前回のブロックサイズ分のデータをブロックサイズ分だけずらしたデータ、つまり前回のブロックサイズ分の終了アドレスの次のアドレスから連続するブロックサイズ分のデータの第１ハッシュ値を算出してよい。
【００４４】
パッチファイルでは、データ読出の効率等のために、同じデータが記録されていることが多い。そのため比較部２６が、第１パッチファイルにおけるデータに一致するデータブロックＬ８を見つけた後、比較処理を繰り返していくと、第１パッチファイルにおける別のデータがデータブロックＬ８に一致することもある。この場合、差分情報生成部２８は、その後のデータ構成が第２パッチファイルに近い第１パッチファイルのデータのアドレス情報を、データブロックＬ８に対する差分情報として記録することが好ましい。
【００４５】
実施例で比較部２６は、第１段階の比較処理を６４ビットの第１ハッシュ値を用いて実施した。第１段階の処理効率を高めるため、比較部２６は、第１段階の比較処理を分割して実施してよい。つまり比較部２６は、最初に６４ビットのうちの一部のビットを用いた一致判定を実施し、その後、一部一致した第１ハッシュ値の６４ビットを比較する処理を実施してよい。このときハッシュ値保持部４６は、第１ハッシュ値Ｒ０〜Ｒ１９に加えて、第１ハッシュ値Ｒ０〜Ｒ１９の上位２４ビットを抽出して保持し、比較部２６は、第１ハッシュ値算出部２２により算出された第１ハッシュ値の上位２４ビットと、ハッシュ値保持部４６に保持された第１ハッシュ値Ｒ０〜Ｒ１９の上位２４ビットとを最初に比較してよい。
【００４６】
変形例において、第２ハッシュ値算出部２４は、第１ハッシュ値算出部２２によって代用されてよい。変形例で第１ハッシュ値算出部２２は、第１段階の比較処理で使用する第１ハッシュ値とともに、同一ビット長の値の異なる１以上の第１ハッシュ値を算出する。具体的に第１ハッシュ値算出部２２は、線形合同法のパラメータを異ならせて、同一ビット長の値の異なる複数の第１ハッシュ値を算出する。比較部２６は、同一ビット長の値の異なる１以上の第１ハッシュ値を、第２ハッシュ値の少なくとも一部として利用してよい。たとえば第１ハッシュ値算出部２２が、第１段階の比較処理で使用する第１ハッシュ値とともに、別値をもつ３種類の第１ハッシュ値を算出することで、比較部２６は、合計２５６ビットの第２ハッシュ値として利用してもよい。
【符号の説明】
【００４７】
１・・・アプリケーション配信システム、１０・・・情報処理装置、２０・・・処理部、２２・・・第１ハッシュ値算出部、２４・・・第２ハッシュ値算出部、２６・・・比較部、２８・・・差分情報生成部、４０・・・記録部、４２・・・第１パッチファイル保持部、４４・・・第２パッチファイル保持部、４６・・・ハッシュ値保持部、４８・・・差分情報記録部。
【図１】
0006979987.tif 000002
【図２】
0006979987.tif 000003
【図３】
0006979987.tif 000004
【図４】
0006979987.tif 000005
【図５】
0006979987.tif 000006
【図６】
0006979987.tif 000007
【図７】
0006979987.tif 000008
【図８】
0006979987.tif 000009
【図９】
0006979987.tif 000010