特許第6979987号(P6979987)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社ソニー・コンピュータエンタテインメントの特許一覧

<>
  • 特許6979987-情報処理装置 図000002
  • 特許6979987-情報処理装置 図000003
  • 特許6979987-情報処理装置 図000004
  • 特許6979987-情報処理装置 図000005
  • 特許6979987-情報処理装置 図000006
  • 特許6979987-情報処理装置 図000007
  • 特許6979987-情報処理装置 図000008
  • 特許6979987-情報処理装置 図000009
  • 特許6979987-情報処理装置 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6979987
(24)【登録日】2021年11月18日
(45)【発行日】2021年12月15日
(54)【発明の名称】情報処理装置
(51)【国際特許分類】
   G06F 8/65 20180101AFI20211202BHJP
【FI】
   G06F8/65
【請求項の数】9
【全頁数】14
(21)【出願番号】特願2019-141306(P2019-141306)
(22)【出願日】2019年7月31日
(65)【公開番号】特開2021-26298(P2021-26298A)
(43)【公開日】2021年2月22日
【審査請求日】2020年7月31日
(73)【特許権者】
【識別番号】310021766
【氏名又は名称】株式会社ソニー・インタラクティブエンタテインメント
(74)【代理人】
【識別番号】100105924
【弁理士】
【氏名又は名称】森下 賢樹
(74)【代理人】
【識別番号】100109047
【弁理士】
【氏名又は名称】村田 雄祐
(74)【代理人】
【識別番号】100109081
【弁理士】
【氏名又は名称】三木 友由
(74)【代理人】
【識別番号】100134256
【弁理士】
【氏名又は名称】青木 武司
(72)【発明者】
【氏名】畠山 明之
【審査官】 金田 孝之
(56)【参考文献】
【文献】 特開2015−207145(JP,A)
【文献】 特開2009−230523(JP,A)
【文献】 国際公開第2012/081099(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/00−8/38
G06F 8/60−8/77
G06F 9/44−9/445
G06F 9/451
(57)【特許請求の範囲】
【請求項1】
第1パッチファイルを保持する第1保持部と、
所定のブロックサイズをもつ複数のデータブロックにより構成される第2パッチファイルの各データブロックの第1ハッシュ値を保持する第2保持部と、
第1パッチファイルにおける前記ブロックサイズ分のデータの第1ハッシュ値を算出するハッシュ値算出部と、
第1段階の比較処理として、前記ハッシュ値算出部により算出された第1ハッシュ値と、前記第2保持部に保持された各データブロックの第1ハッシュ値とを比較する比較部と、を備え、
前記比較部は、第1段階の比較処理において第1ハッシュ値同士の一致を判定すると、第2段階の比較処理として、第1パッチファイルにおける前記ブロックサイズ分のデータの第2ハッシュ値と、第1ハッシュ値が一致した第2パッチファイルのデータブロックの第2ハッシュ値とを比較し、第2ハッシュ値同士の一致を判定すると、第1パッチファイルにおける前記ブロックサイズ分のデータと、第2パッチファイルのデータブロックに含まれるデータの一致を判定
前記ハッシュ値算出部は、前記比較部が一致を判定した第1パッチファイルにおける前記ブロックサイズ分のデータの終了アドレスの次のアドレスから連続する前記ブロックサイズ分のデータの第1ハッシュ値を算出し、
前記比較部は、第1段階の比較処理として、前記比較部が一致を判定した第1パッチファイルにおける前記ブロックサイズ分のデータの終了アドレスの次のアドレスから連続する前記ブロックサイズ分のデータの第1ハッシュ値と、前記第2保持部に保持された第1ハッシュ値とを比較する、
ことを特徴とする情報処理装置。
【請求項2】
第2ハッシュ値のビット数は、第1ハッシュ値のビット数よりも多い、
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記第2保持部は、第2パッチファイルの各データブロックの第2ハッシュ値を保持する、
ことを特徴とする請求項1または2に記載の情報処理装置。
【請求項4】
前記ハッシュ値算出部は、第1段階の比較処理で使用する第1ハッシュ値とともに、同一ビット長の値の異なる1以上の第1ハッシュ値を算出し、
前記比較部は、同一ビット長の値の異なる1以上の第1ハッシュ値を、第2ハッシュ値の少なくとも一部として利用する、
ことを請求項1から3のいずれかに記載の情報処理装置。
【請求項5】
前記ハッシュ値算出部は、第1パッチファイルにおける前記ブロックサイズ分のデータを所定数のバイト分だけずらしたデータの第1ハッシュ値を算出する、
ことを特徴とする請求項1から4のいずれかに記載の情報処理装置。
【請求項6】
前記ハッシュ値算出部は、第1パッチファイルにおける前記ブロックサイズ分のデータを1バイト分だけずらしたデータの第1ハッシュ値を算出する、
ことを特徴とする請求項5に記載の情報処理装置。
【請求項7】
第1パッチファイルを保持する第1保持部と、
所定のブロックサイズをもつ複数のデータブロックにより構成される第2パッチファイルの各データブロックの第1ハッシュ値を保持する第2保持部と、
第1パッチファイルにおける前記ブロックサイズ分のデータの第1ハッシュ値を算出するハッシュ値算出部と、
第1段階の比較処理として、前記ハッシュ値算出部により算出された第1ハッシュ値と、前記第2保持部に保持された各データブロックの第1ハッシュ値とを比較する比較部と、を備え、
前記比較部は、第1段階の比較処理において第1ハッシュ値同士の一致を判定すると、第2段階の比較処理として、第1パッチファイルにおける前記ブロックサイズ分のデータの第2ハッシュ値と、第1ハッシュ値が一致した第2パッチファイルのデータブロックの第2ハッシュ値とを比較し、第2ハッシュ値同士の一致を判定すると、第1パッチファイルにおける前記ブロックサイズ分のデータと、第2パッチファイルのデータブロックに含まれるデータの一致を判定するものであって、
前記ハッシュ値算出部は、第1段階の比較処理で使用した第1ハッシュ値と同一ビット長であって値の異なる複数のハッシュ値を算出して、算出した複数のハッシュ値を組み合わせることで、前記比較部による第2段階の比較処理で使用する第1パッチファイルにおける前記ブロックサイズ分のデータの第2ハッシュ値を算出する、
ことを特徴とする情報処理装置。
【請求項8】
第1パッチファイルを保持する第1保持部と、所定のブロックサイズをもつ複数のデータブロックにより構成される第2パッチファイルの各データブロックの第1ハッシュ値を保持する第2保持部に接続するコンピュータに、
第1パッチファイルにおける前記ブロックサイズ分のデータの第1ハッシュ値を算出する機能と、
第1段階の比較処理として、算出された第1ハッシュ値と、前記第2保持部に保持された各データブロックの第1ハッシュ値とを比較する機能と、
第1段階の比較処理において第1ハッシュ値同士の一致を判定すると、第2段階の比較処理として、第1パッチファイルにおける前記ブロックサイズ分のデータの第2ハッシュ値と、第1ハッシュ値が一致した第2パッチファイルのデータブロックの第2ハッシュ値とを比較する機能と、
第2段階の比較処理において第2ハッシュ値同士の一致を判定すると、第1パッチファイルにおける前記ブロックサイズ分のデータと、第2パッチファイルのデータブロックに含まれるデータの一致を判定する機能と、
第2段階の比較処理においてデータ同士の一致を判定すると、一致を判定した第1パッチファイルにおける前記ブロックサイズ分のデータの終了アドレスの次のアドレスから連続する前記ブロックサイズ分のデータの第1ハッシュ値を算出する機能と、
第1段階の比較処理として、一致を判定した第1パッチファイルにおける前記ブロックサイズ分のデータの終了アドレスの次のアドレスから連続する前記ブロックサイズ分のデータの第1ハッシュ値と、前記第2保持部に保持された第1ハッシュ値とを比較する機能と、
を実現させるためのプログラム。
【請求項9】
第1パッチファイルを保持する第1保持部と、所定のブロックサイズをもつ複数のデータブロックにより構成される第2パッチファイルの各データブロックのハッシュ値を保持する第2保持部に接続するコンピュータに、
第1パッチファイルにおける前記ブロックサイズ分のデータの第1ハッシュ値を算出する機能と、
第1段階の比較処理として、算出された第1ハッシュ値と、前記第2保持部に保持された各データブロックの第1ハッシュ値とを比較する機能と、
第1段階の比較処理において第1ハッシュ値同士の一致を判定すると、第1段階の比較処理で使用した第1ハッシュ値と同一ビット長であって値の異なる複数のハッシュ値を算出して、算出した複数のハッシュ値を組み合わせることで、第2段階の比較処理で使用する第1パッチファイルにおける前記ブロックサイズ分のデータの第2ハッシュ値を算出する機能と、
第2段階の比較処理として、第1パッチファイルにおける前記ブロックサイズ分のデータの第2ハッシュ値と、第1ハッシュ値が一致した第2パッチファイルのデータブロックの第2ハッシュ値とを比較する機能と、
第2段階の比較処理において第2ハッシュ値同士の一致を判定すると、第1パッチファイルにおける前記ブロックサイズ分のデータと、第2パッチファイルのデータブロックに含まれるデータの一致を判定する機能と、
を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、配信するデータ量を削減するための技術に関する。
【背景技術】
【0002】
特許文献1は、異なる2つのバージョンのパッチファイルにおける各データブロックのハッシュ値を比較して、両者の間に同一のデータブロックが存在するか判定する差分情報生成ソフトウェアを開示する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2015−207145号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に開示された差分情報生成ソフトウェアは、異なる2つのバージョンのパッチファイルにおけるデータブロック単位での同一を判定する。そのため新しいバージョンのデータブロックのデータが古いバージョンに含まれていたとしても、データブロック内での記録位置がずれているとデータブロックとしては異なるため、データブロックの同一を判定しない。つまり特許文献1に開示された技術によると、新しいバージョンのデータブロックのデータが古いバージョンに含まれていても、データブロック内での記録位置がずれていることで古いバージョンに含まれていることを確認できず、配信データ量を効果的に削減できないという問題がある。また異なる2つのバージョンのパッチファイル間の重複データを探索する処理は、効率的に実施されることが好ましい。
【0005】
そこで本発明は、配信するデータ量を効率的に削減するための技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
上記課題を解決するために、本発明のある態様の情報処理装置は、第1パッチファイルを保持する第1保持部と、所定のブロックサイズをもつ複数のデータブロックにより構成される第2パッチファイルの各データブロックの第1ハッシュ値を保持する第2保持部と、第1パッチファイルにおけるブロックサイズ分のデータの第1ハッシュ値を算出するハッシュ値算出部と、第1段階の比較処理として、ハッシュ値算出部により算出された第1ハッシュ値と、第2保持部に保持された各データブロックの第1ハッシュ値とを比較する比較部とを備える。比較部は、第1段階の比較処理において第1ハッシュ値同士の一致を判定すると、第2段階の比較処理として、第1パッチファイルにおけるブロックサイズ分のデータの第2ハッシュ値と、第1ハッシュ値が一致した第2パッチファイルのデータブロックの第2ハッシュ値とを比較し、第2ハッシュ値同士の一致を判定すると、第1パッチファイルにおけるブロックサイズ分のデータと、第2パッチファイルのデータブロックに含まれるデータの一致を判定する。
【0007】
本発明の別の態様もまた、情報処理装置である。この情報処理装置は、第1パッチファイルを保持する第1保持部と、所定のブロックサイズをもつ複数のデータブロックにより構成される第2パッチファイルの各データブロックのハッシュ値を保持する第2保持部と、第1パッチファイルにおけるブロックサイズ分のデータのハッシュ値を算出するハッシュ値算出部と、ハッシュ値算出部により算出されたハッシュ値と、第2保持部に保持された各データブロックのハッシュ値とを比較する比較部とを備える。ハッシュ値算出部は、第1パッチファイルにおけるブロックサイズ分のデータを、所定数のバイト分ずつずらしたデータの第1ハッシュ値を算出する。
【0008】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【0009】
本発明の情報処理技術によると、配信するデータ量を効率的に削減するための技術を提供することが可能となる。
【図面の簡単な説明】
【0010】
図1】実施例にかかるアプリケーション配信システムを示す図である。
図2】情報処理装置の機能ブロックを示す図である。
図3】第1パッチファイルと第2パッチファイルの例を示す図である。
図4】各データブロックの第1ハッシュ値の例を示す図である。
図5】第1ハッシュ値の例を示す図である。
図6】第1ハッシュ値の例を示す図である。
図7】第1ハッシュ値の例を示す図である。
図8】第1ハッシュ値の例を示す図である。
図9】第2ハッシュ値の例を示す図である。
【発明を実施するための形態】
【0011】
図1は、本発明の実施例にかかるアプリケーション配信システム1を示す。アプリケーション配信システム1は、アプリケーションソフトウェアおよびパッチファイルを配信する配信サーバ4と、配信サーバ4にアプリケーションソフトウェアおよびパッチファイルを配信可能にアップロードする情報処理装置10と、インターネットなどのネットワーク2を介して配信サーバ4からアプリケーションソフトウェアおよびパッチファイルをダウンロードする複数のユーザ端末3とを備える。実施例においてアプリケーションソフトウェアはゲームソフトウェアであり、ユーザ端末3はゲーム装置であってよい。
【0012】
ゲームメーカは、シナリオを修正または追加する際にパッチファイルを作成する。パッチファイルは、ゲームメーカから情報処理装置10に提供されて、配信サーバ4に配信可能にアップロードされる。ユーザ端末3は、配信サーバ4からパッチファイルをダウンロードして、ゲームを最新の状態で実行できるようにする。シナリオの修正や追加は頻繁に行われることが多く、パッチファイルはバージョン情報により管理される。
【0013】
複数のバージョンのパッチファイルがリリースされている場合、ユーザ端末3は、最新のバージョンのパッチファイルをダウンロードすれば、ゲームを最新の状態で起動できるようになる。ユーザ端末3が全てのバージョンのパッチファイルをダウンロードしているとは限らないため、最新のパッチファイルには、過去のバージョンのパッチファイルに含まれる修正コンテンツおよび追加コンテンツが含まれる。そのためバージョンが新しいほど、パッチファイルのデータ量は大規模化する。
【0014】
ユーザ端末3が、最新バージョンのパッチファイルをダウンロードする際、既にダウンロード済みの過去のバージョンのパッチファイルに含まれるコンテンツをダウンロードする必要はない。そのため実施例の情報処理装置10は、最新のバージョンのパッチファイルのデータブロックに含まれるデータが過去のバージョンのパッチファイルに含まれるか確認して、未ダウンロードのデータブロックのみをユーザ端末3に配信させるようにする。
【0015】
図2は、情報処理装置10の機能ブロックを示す。情報処理装置10は、処理部20および記録部40を備える。処理部20は、第1ハッシュ値算出部22、第2ハッシュ値算出部24、比較部26および差分情報生成部28を有し、記録部40は、第1パッチファイル保持部42、第2パッチファイル保持部44、ハッシュ値保持部46および差分情報記録部48を有する。
【0016】
これらの構成は、ハードウエアコンポーネントでいえば、任意のコンピュータのCPU、メモリ、メモリにロードされたプログラム、ストレージなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。
【0017】
情報処理装置10は、配信サーバ4と同じ運営主体によって管理され、新しいパッチファイルと古いパッチファイルとの差分情報を生成する。なお情報処理装置10の機能はゲームメーカに提供されて、新しいパッチファイルの配信データ量をどれだけ削減できるか確認するために利用されてもよい。
【0018】
バージョンが異なるパッチファイル間では、多くのデータが共通する。バージョン1の古いパッチファイルと、バージョン2の新しいパッチファイルが存在する場合、既にユーザ端末3が、バージョン1のパッチファイルをダウンロード済みであれば、バージョン2のパッチファイルにおける同じデータを含むデータブロックをダウンロードすることは、ネットワークリソースを無駄に使用することになる。そこでユーザ端末3において既にダウンロード済みのデータについては、配信サーバ4からダウンロードしないことが好ましい。
【0019】
第1パッチファイル保持部42は、古いバージョン1の第1パッチファイルを保持し、第2パッチファイル保持部44は、新しいバージョン2の第2パッチファイルを保持する。第2パッチファイルは、最新のパッチファイルであってよい。情報処理装置10は、ゲームメーカから第2パッチファイルを受け取ると、第2パッチファイル保持部44に格納して、第2パッチファイルの複数のデータブロックの中で、第1パッチファイルとの関係で配信しなくてよいデータブロックが存在するか確認する処理を実施する。
【0020】
図3は、第1パッチファイルと第2パッチファイルの例を示す。各パッチファイルは、所定のブロックサイズをもつ複数のデータブロックにより構成される。パッチファイルは、圧縮されていても、圧縮されていなくてもよい。データブロックはファイルシステムがデータを転送する基本単位であり、たとえば64キロバイトに設定される。実際のパッチファイルは、膨大な数のデータブロックにより構成されるが、図3では説明の便宜上、第1パッチファイルが20個のデータブロックT〜T19で構成され、第2パッチファイルが20個のデータブロックL〜L19で構成される例を示している。
【0021】
実施例において第1パッチファイルは既にユーザ端末3にダウンロードされている。また第2パッチファイルのデータブロックL〜L19のそれぞれが配信候補である。以下、第2パッチファイルのデータブロックL〜L19のデータが、第1パッチファイルに含まれているか確認する手法について説明する。
【0022】
図4は、第2パッチファイルの各データブロックの第1ハッシュ値を示す。第1ハッシュ値算出部22は、第2パッチファイルの各データブロックの第1ハッシュ値を算出する。ここで第1ハッシュ値算出部22は、線形合同法(linear congruential generator)を利用して、64ビットのローリングハッシュ値Rを算出する。具体的に第1ハッシュ値算出部22は、データブロックLの第1ハッシュ値をR、データブロックLの第1ハッシュ値をR、・・・データブロックL19の第1ハッシュ値をR19と算出する。第1ハッシュ値算出部22は、算出した第1ハッシュ値を、ハッシュ値保持部46に記憶させる。これによりハッシュ値保持部46は、第2パッチファイルの各データブロックの第1ハッシュ値を保持する。
【0023】
以後、第1パッチファイルのデータが、第2パッチファイルのデータブロックのデータと同じであるか確認する処理を実施する。ここで比較対象となる第1パッチファイルのデータは、アドレスが連続するブロックサイズ分のデータである。第1ハッシュ値算出部22は、第1パッチファイルにおけるブロックサイズ分のデータの第1ハッシュ値を算出する。
【0024】
最初に第1ハッシュ値算出部22は、第1パッチファイルの先頭バイトからブロックサイズ分のデータの第1ハッシュ値を算出する。
図5は、第1パッチファイルの先頭バイトからブロックサイズ分のデータの第1ハッシュ値Rb0を示す。第1パッチファイルの先頭バイトからブロックサイズ分のデータは、データブロックTのデータに対応する。つまり第1ハッシュ値算出部22は、データブロックTの64ビットローリングハッシュ値Rb0を算出する。
【0025】
実施例の比較部26は2段階の比較処理を実施する。比較部26は、第1段階の比較処理として、第1ハッシュ値同士を比較し、第1ハッシュ値の一致を判定すると、第2段階の比較処理として、第1ハッシュ値よりも衝突確率の低い第2ハッシュ値同士を比較する。
【0026】
まず比較部26は、第1段階の比較処理として、第1ハッシュ値算出部22により算出された第1ハッシュ値と、ハッシュ値保持部46に保持された第2パッチファイルの各データブロックの第1ハッシュ値とを比較する。つまり比較部26は、算出された第1ハッシュ値Rb0と、第2パッチファイルの各データブロックの第1ハッシュ値R〜R19とを比較する。このとき第1ハッシュ値Rb0が、第1ハッシュ値R〜R19のいずれかと一致すると、比較部26は、第2段階の比較処理を実施するが、ここでは、第1ハッシュ値Rb0が、第1ハッシュ値R〜R19のいずれとも一致せず、第1パッチファイルのデータブロックTと同じデータを含むデータブロックが第2パッチファイルに存在しないことが確認される。
【0027】
次に、第1ハッシュ値算出部22は、前回第1ハッシュ値を求めたブロックサイズ分のデータを所定数のバイト分だけスライドして同じブロックサイズ分のデータを特定し、特定したデータの第1ハッシュ値を算出する。なおスライドするバイト数は、ブロックサイズ(64キロバイト)よりも小さいバイト数であり、1バイトであってよい。
【0028】
図6は、前回のブロックサイズ分のデータを所定数のバイト分だけスライドさせたブロックサイズ分のデータの第1ハッシュ値Rb1を示す。図5のブロックサイズ分のデータと比較して、図6に示すブロックサイズ分のデータは、データブロックTのデータを所定数のバイト分だけずらしたデータである。実施例で、所定数のバイトは「1バイト」であり、第1ハッシュ値算出部22は、前回のデータを1バイトだけスライドしたデータの64ビットローリングハッシュ値Rb1を算出する。
【0029】
比較部26は、第1段階の比較処理として、第1ハッシュ値算出部22により算出された第1ハッシュ値Rb1と、ハッシュ値保持部46に保持された第2パッチファイルの各データブロックの第1ハッシュ値R〜R19とを比較する。ここでは、第1ハッシュ値Rb1が、第1ハッシュ値R〜R19のいずれとも一致せず、第2パッチファイルのデータブロックが、第1パッチファイルのデータブロックTを1バイト分だけスライドした64キロバイトのデータに一致しないことが確認される。
以後、第1ハッシュ値算出部22は、第1ハッシュ値を求めたブロックサイズ分のデータを1バイト分ずつずらしたデータを特定し、当該データの第1ハッシュ値を算出する。
【0030】
図7は、前回第1ハッシュ値を求めたブロックサイズ分のデータを1バイト分だけスライドさせたデータの第1ハッシュ値Rb2を示す。第1ハッシュ値算出部22が、第1パッチファイルのデータブロックTを2バイト分だけスライドしたデータの64ビットローリングハッシュ値Rb2を算出すると、比較部26が、算出された第1ハッシュ値Rb2と、第2パッチファイルの各データブロックの第1ハッシュ値R〜R19とを比較する。ここでは、第1ハッシュ値Rb2が、第1ハッシュ値R〜R19のいずれとも一致せず、第2パッチファイルのデータブロックが、第1パッチファイルのデータブロックTを2バイト分だけスライドした64キロバイトのデータに一致しないことが確認される。
【0031】
図8は、前回第1ハッシュ値を求めたブロックサイズ分のデータを1バイト分だけスライドさせたデータの第1ハッシュ値Rb3を示す。第1ハッシュ値算出部22が、第1パッチファイルのデータブロックTを3バイト分だけスライドしたデータの64ビットローリングハッシュ値Rb3を算出すると、比較部26が、算出された第1ハッシュ値Rb3と、第2パッチファイルの各データブロックの第1ハッシュ値R〜R19とを比較する。
【0032】
このとき比較部26が、第1ハッシュ値Rb3と、第2パッチファイルの各データブロックの第1ハッシュ値R〜R19のいずれかとの一致を判定する。ここでは第1ハッシュ値Rb3に、第1ハッシュ値Rが一致する。比較部26は、第1段階の比較処理において第1ハッシュ値同士の一致を判定すると、第1パッチファイルにおけるブロックサイズ分のデータと、第2パッチファイルのデータブロックLとが同一である可能性が高いことを確認する。
【0033】
続いて比較部26は、第2段階の比較処理として、第1パッチファイルにおけるブロックサイズ分のデータの第2ハッシュ値と、第1ハッシュ値が一致した第2パッチファイルのデータブロックLの第2ハッシュ値とを比較する。第2段階の比較処理は、第1段階の比較処理で使用した第1ハッシュ値よりも、衝突確率の低い第2ハッシュ値を利用する。第2ハッシュ値は、SHA−256アルゴリズムにより256ビットのハッシュ値として算出されてよい。
【0034】
ハッシュ値の衝突確率を低くするためには、ハッシュ値のビット数を多くすればよいことが知られている。そこで実施例においても、第2ハッシュ値のビット数を、第1ハッシュ値のビット数よりも多くすることで、第2段階の比較処理における衝突確率を低くできる。
【0035】
第2ハッシュ値算出部24はSHA−256アルゴリズムを利用して、第1パッチファイルにおけるブロックサイズ分のデータの第2ハッシュ値Hb3を算出し、また第1ハッシュ値が一致した第2パッチファイルのデータブロックLの第2ハッシュ値Hを算出する。なお第2ハッシュ値算出部24は、事前に第2パッチファイルのデータブロックL〜L19の第2ハッシュ値H〜H19を算出して、ハッシュ値保持部46に記憶させておいてもよい。これにより第2段階の比較処理の開始前に、ハッシュ値保持部46は、第2パッチファイルの各データブロックの第2ハッシュ値を保持していてよい。
【0036】
図9は、算出された2つの第2ハッシュ値を示す。比較部26は、第1パッチファイルにおけるブロックサイズ分のデータの第2ハッシュ値Hb3と、第1ハッシュ値が一致した第2パッチファイルのデータブロックLの第2ハッシュ値Hとを比較し、第2ハッシュ値同士が一致すると、第1パッチファイルにおけるブロックサイズ分のデータと、第2パッチファイルのデータブロックLに含まれるデータの一致を判定する。なお第2ハッシュ値同士が一致しなければ、比較部26は、第1パッチファイルにおけるブロックサイズ分のデータと、第2パッチファイルのデータブロックLに含まれるデータとが異なることを判定する。
【0037】
差分情報生成部28は、一致した第2パッチファイルのデータブロックLのデータが含まれる第1パッチファイルのアドレス情報を取得する。このアドレス情報は、第2パッチファイルと第1パッチファイルの差分情報を構成し、差分情報記録部48に記録される。差分情報は、第2パッチファイルの各データブロックに対して生成され、第1パッチファイルに同一のデータが含まれるデータブロックに対しては、同一のデータが第1パッチファイルに含まれていることを示すフラグ情報(フラグ値1)と、第1パッチファイルのアドレス情報が差分情報として記録される。
【0038】
第1ハッシュ値算出部22が、第1パッチファイルの最終バイトを含むデータの第1ハッシュ値を算出し、比較部26による比較処理が終了すると、差分情報生成部28は、第1パッチファイルに同一のデータが含まれないデータブロックに対して、同一のデータが第1パッチファイルに含まれていないことを示すフラグ情報(フラグ値0)を差分情報として記録する。
【0039】
実施例において比較部26は、第1段階の比較処理を64ビットの第1ハッシュ値を用いて実施することで、256ビットのハッシュ値を用いて第1段階の比較処理を実施する場合と比較すると、第1段階における計算量を大幅に削減できる。また実施例では第1ハッシュ値算出部22が、第1パッチファイルのブロックサイズ分のデータを1バイトずつスライドして第1ハッシュ値を算出し、比較部26が、算出された第1ハッシュ値と第2パッチファイルの各データブロックの第1ハッシュ値とを比較する第1段階の比較処理を繰り返す。これにより第2パッチファイルのデータブロックに含まれるデータと同一である可能性が高い全てのデータを、第1パッチファイルから抽出でき、第2パッチファイルの配信データ量を大幅に削減することが可能となる。
【0040】
情報処理装置10は、全ての処理を完了すると第2パッチファイルを各データブロック内で暗号化し、暗号化した第2パッチファイルと、差分情報記録部48に記録した差分情報とを、配信サーバ4に配信可能にアップロードする。
【0041】
第1パッチファイルをダウンロード済みのユーザ端末3が、配信サーバ4に第2パッチファイルの送信を要求すると、配信サーバ4は、ユーザ端末3が第1パッチファイルをダウンロード済みであることを確認する。それから配信サーバ4は、第1パッチファイルと第2パッチファイルとの差分情報を参照して、第2パッチファイルの配信処理を実行する。この配信処理では、フラグ値0が設定されたデータブロックが配信され、一方でフラグ値1が設定されたデータブロックについては配信せず、対応付けられた第1パッチファイルのアドレス情報が配信される。
【0042】
以上、本発明を実施例をもとに説明した。この実施例は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。実施例では、アプリケーションの例としてゲームを示したが、それ以外のアプリケーションであってもよい。
【0043】
実施例では、第1ハッシュ値算出部22が、第1パッチファイルにおいてブロックサイズ分のデータを1バイトずつスライドさせて第1ハッシュ値を算出することを説明した。図9に示すように比較部26が、第1パッチファイルにおけるブロックサイズ分のデータと第2パッチファイルのデータブロックとが一致することを判定すると、第1ハッシュ値算出部22は、前回のブロックサイズ分のデータをブロックサイズ分だけずらしたデータ、つまり前回のブロックサイズ分の終了アドレスの次のアドレスから連続するブロックサイズ分のデータの第1ハッシュ値を算出してよい。
【0044】
パッチファイルでは、データ読出の効率等のために、同じデータが記録されていることが多い。そのため比較部26が、第1パッチファイルにおけるデータに一致するデータブロックLを見つけた後、比較処理を繰り返していくと、第1パッチファイルにおける別のデータがデータブロックLに一致することもある。この場合、差分情報生成部28は、その後のデータ構成が第2パッチファイルに近い第1パッチファイルのデータのアドレス情報を、データブロックLに対する差分情報として記録することが好ましい。
【0045】
実施例で比較部26は、第1段階の比較処理を64ビットの第1ハッシュ値を用いて実施した。第1段階の処理効率を高めるため、比較部26は、第1段階の比較処理を分割して実施してよい。つまり比較部26は、最初に64ビットのうちの一部のビットを用いた一致判定を実施し、その後、一部一致した第1ハッシュ値の64ビットを比較する処理を実施してよい。このときハッシュ値保持部46は、第1ハッシュ値R〜R19に加えて、第1ハッシュ値R〜R19の上位24ビットを抽出して保持し、比較部26は、第1ハッシュ値算出部22により算出された第1ハッシュ値の上位24ビットと、ハッシュ値保持部46に保持された第1ハッシュ値R〜R19の上位24ビットとを最初に比較してよい。
【0046】
変形例において、第2ハッシュ値算出部24は、第1ハッシュ値算出部22によって代用されてよい。変形例で第1ハッシュ値算出部22は、第1段階の比較処理で使用する第1ハッシュ値とともに、同一ビット長の値の異なる1以上の第1ハッシュ値を算出する。具体的に第1ハッシュ値算出部22は、線形合同法のパラメータを異ならせて、同一ビット長の値の異なる複数の第1ハッシュ値を算出する。比較部26は、同一ビット長の値の異なる1以上の第1ハッシュ値を、第2ハッシュ値の少なくとも一部として利用してよい。たとえば第1ハッシュ値算出部22が、第1段階の比較処理で使用する第1ハッシュ値とともに、別値をもつ3種類の第1ハッシュ値を算出することで、比較部26は、合計256ビットの第2ハッシュ値として利用してもよい。
【符号の説明】
【0047】
1・・・アプリケーション配信システム、10・・・情報処理装置、20・・・処理部、22・・・第1ハッシュ値算出部、24・・・第2ハッシュ値算出部、26・・・比較部、28・・・差分情報生成部、40・・・記録部、42・・・第1パッチファイル保持部、44・・・第2パッチファイル保持部、46・・・ハッシュ値保持部、48・・・差分情報記録部。
図1
図2
図3
図4
図5
図6
図7
図8
図9