JP2004201144A - データ圧縮方法および装置 - Google Patents
データ圧縮方法および装置 Download PDFInfo
- Publication number
- JP2004201144A JP2004201144A JP2002369101A JP2002369101A JP2004201144A JP 2004201144 A JP2004201144 A JP 2004201144A JP 2002369101 A JP2002369101 A JP 2002369101A JP 2002369101 A JP2002369101 A JP 2002369101A JP 2004201144 A JP2004201144 A JP 2004201144A
- Authority
- JP
- Japan
- Prior art keywords
- character string
- data
- file
- encoded data
- matching
- 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.)
- Pending
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
【目的】データ量の少ない圧縮データを生成する。
【構成】新ファイル中に圧縮対象窓が設定され,新ファイル中の圧縮対象窓に先行する位置に第1参照窓がそれぞれ設定される。また旧ファイルの文字列に第2参照窓が設定される(ステップ11)。圧縮対象窓中の文字列と第1参照窓中の文字列が比較され,一致する最長の文字列が検索される(ステップ12)。一致する文字列が検索されると(ステップ13でYES ),第1参照窓中の一致文字列の先頭の文字位置と文字列長を表す符号化データAが生成されて記憶される(ステップ14)。さらに圧縮対象文字列と旧ファイル中の第2参照窓中の文字列についても同様の処理が行われ,符号化データBが生成されて記憶される(ステップ15,ステップ16でYES ,ステップ17)。一致文字数の多い方の符号化データがパッチ・データ(圧縮データ)に採用される(ステップ21,22)。
【選択図】 図2
【構成】新ファイル中に圧縮対象窓が設定され,新ファイル中の圧縮対象窓に先行する位置に第1参照窓がそれぞれ設定される。また旧ファイルの文字列に第2参照窓が設定される(ステップ11)。圧縮対象窓中の文字列と第1参照窓中の文字列が比較され,一致する最長の文字列が検索される(ステップ12)。一致する文字列が検索されると(ステップ13でYES ),第1参照窓中の一致文字列の先頭の文字位置と文字列長を表す符号化データAが生成されて記憶される(ステップ14)。さらに圧縮対象文字列と旧ファイル中の第2参照窓中の文字列についても同様の処理が行われ,符号化データBが生成されて記憶される(ステップ15,ステップ16でYES ,ステップ17)。一致文字数の多い方の符号化データがパッチ・データ(圧縮データ)に採用される(ステップ21,22)。
【選択図】 図2
Description
【0001】
【技術分野】
この発明は,データ圧縮方法および装置に関する。
【0002】
【従来例】
図15(A),(B)を参照して,LZ(Lempel-Ziv)方式に基づくデータ圧縮の基本的な考え方を説明する。LZ方式に基づくデータ圧縮では,データ列中に繰返し現れるデータ列の一部を利用し,元データを復元できるようにデータ列を圧縮する。
【0003】
非圧縮データ列が,文字列「An outcry in Spain is an outcry in vain」 (図15(A) 参照)であるとする(スペースも文字として扱う)。この文字列を先頭から順に見ていくと,「Spain 」に含まれる「in 」 (iと,nと,スペースの3文字)という文字列は,先行する文字列「An outcry in 」に含まれる「in 」と一致する文字列である。同様に,「・・・is an outcry in vain」に含まれる「n outcry in 」 は,先行する「An outcry in 」中の「n outcry in 」と一致する文字列である。最後の「vain」に含まれる「ain」は,先行する「Spain」に含まれる「ain」と一致する文字列である。
【0004】
先行する文字列を有する文字列,上述の例の場合は,「in 」,「n outcry in」および「ain」のそれぞれが,先行する文字列の位置によって表わされる。
【0005】
先行する文字列の位置を,たとえば,「<−6,3>」のように表す。<−6,3>は,6文字分文字列を遡って3文字分の文字列であることを意味する。
【0006】
図15(A)において,先行する文字列を有する文字列(「in 」,「n outcry in 」および「ain」)について上述のように「<>」を用いて表すと,図15(A)の文字列は,「An outcry in Spa<-6,3>is a <-22,12>v<-21,3>」(図15(B))のように表すことができる。
【0007】
1文字分のビット数を8ビットとすると,図15(A) の文字列には39文字(スペースも1文字としてカウントする)が含まれているので,8×39=312 ビットのデータ量となる。図15(B) において3つの「<○,○>」の部分のビット数を,たとえばそれぞれ13ビットとする(図15(A) の文字列を最大に遡るときに39文字分戻るので,遡る39文字分の文字数をカウントするために6ビットが必要,39文字分文字列を遡った場合に,39文字分(最大値)をカウントするためにさらに6ビットが必要,「<○,○>」であることを示すために1ビットを必要とすると,6+6+1=13ビットのデータ量が必要となる)。図15(B) の文字列には,21文字分の文字と,3つの「<○,○>」を含むので,データ量は8×21+13×3=168+39=207ビットのデータ量となる。312ビットのデータ量のデータが207ビットのデータ量のデータによって表されている。すなわち,図15(B) の文字列は,図15(A) の文字列の約60%程度のデータ量に圧縮されている。
【0008】
図15(B)の文字列(圧縮データ列)を伸長する場合には,図15(B)の文字列を先頭から見ていき,<-6,3>の部分は,6文字分文字列を遡って3文字分の文字列(in ) に置換する。次に<-22,12>の部分は,22文字分文字列を遡って12文字分の文字列(n outcry in ) に置換する。さらに<-21,3>の部分は,21文字分文字列を遡って3文字分の文字列(ain)に置換する。図15(A)と同じ文字列に戻る。このように,図15(B)(圧縮データ列)から図15(A)(非圧縮データ列)を完全に復元することができるので,LZ方式のデータ圧縮は可逆的な圧縮方式である。
【0009】
LZ方式のさらなる特徴として,圧縮の対象となる文字列と,その文字列と比較される先行する文字列とが,非圧縮データ中の一定量(一定文字数)について設定される点があげられる。
【0010】
図16および図17を用いて,LZ方式のデータ圧縮をさらに説明する。
【0011】
圧縮の対象となる文字列部分を5文字分とし,比較される先行する文字列部分も5文字分とする。圧縮の対象となる文字列部分および比較される先行する文字列部分は,次に説明するように,圧縮処理中において文字列の後ろの向きに順次スライドしていく。以下,圧縮の対象となる文字列部分の範囲を「圧縮対象窓」,比較される先行する文字列部分の範囲を「参照窓」と呼ぶ。図16および図17において,圧縮対象窓を実線によって,参照窓を破線によってそれぞれ枠で囲って示す。圧縮対象窓が位置する文字列の前の5文字分の範囲に,参照窓が位置する。
【0012】
圧縮対象の文字列(非圧縮データ列)を「12442623421234262342」とする。
【0013】
はじめに圧縮対象窓を圧縮対象文字列の先頭から5文字分に位置させる。参照窓は圧縮対象窓の前の5文字分の範囲に位置するので,初期状態では,参照窓には圧縮対象文字列中の文字は入っていない(図16(A) )。
【0014】
圧縮対象窓中の5文字のうちの先頭から5文字,先頭から4文字,先頭から3文字,先頭から2文字,先頭から1文字を,参照窓中の文字列によって表すことができるかどうかが判断される。具体的には「12442」と同じ文字列が参照窓中にあるか,「1244」と同じ文字列が参照窓中にあるか,「124」と同じ文字列が参照窓中にあるか,「12」と同じ文字列が参照窓中にあるか,「1」と同じ文字列が参照窓中にあるかが,順番に判断される。
【0015】
図16(A) では参照窓中に文字列がない。この場合には,符号化データとして圧縮対象窓中の先頭の1文字がそのまま用いられる。先頭の1文字が符号化データとされたので,圧縮対象窓と参照窓とがそれぞれ1文字分,文字列の後ろ向きにスライドする(図16(B) )。
【0016】
図16(D) を参照して,圧縮対象窓中の先頭の文字「4」は,参照窓中に存在する。圧縮対象窓中の先頭の文字「4」の位置を起点に,1文字分文字列を遡って1文字分を表す「<−1,1>」が,符号化データとして採用される。
【0017】
図17(B) を参照して,圧縮対象窓中の先頭から2文字分の「42」は,参照窓中に存在する。圧縮対象窓中の先頭の文字「4」の位置を起点に,5文字分遡って2文字分を表す「<−5,2>」が,符号化データとして採用される。
【0018】
同様に,図17(D) を参照して,圧縮対象窓中の先頭から4文字分の「2342」は,参照窓中に存在する。圧縮対象窓中の先頭の文字「2」の位置を起点に,5文字分遡って4文字分を表す「<−5,4>」が,符号化データとして採用される。
【0019】
上述のようにして,圧縮対象の文字列は,最終的には図17(F) に示す符号化データによって表される。
【0020】
LZ方式に基づくデータ圧縮を改良した方式,一例を挙げると,LZ方式のデータ圧縮を高速に処理するための装置および方法等も提案されている(たとえば,特許文献1参照)。いずれにしても,従来のLZ(Lempel-Ziv)方式に基づくデータ圧縮処理は,一つの文字列中においてその文字列を圧縮することを基本としている。
【0021】
【特許文献1】
特開平10−187410号公報
【0022】
【発明の開示】
この発明は,異なる2つの文字列を用いて,圧縮データを生成することを目的とする。
【0023】
この発明はさらに,更新前の文字列と,更新前の文字列の一部を更新した更新後の文字列とを用いて,圧縮データを生成することを目的とする。
【0024】
この発明によるデータ圧縮方法は,第1ファイル中の圧縮対象文字列(入力データ)と,上記圧縮対象文字列に先行する第1ファイル中の第1比較文字列(第1辞書データ)とを比較して一致する最長の文字列を検索し,一致する文字列が検索された場合に,上記第1比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第1符号化データを生成する。さらに,第1ファイル中の圧縮対象文字列と,第2ファイル中の第2比較文字列(第2辞書データ)とを比較して一致する最長の文字列を検索し,一致する文字列が検索された場合に,上記第2比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第2符号化データを生成する。そして,圧縮対象文字列中の一致文字列を第1符号化データまたは第2符号化データを用いて表した,第1ファイルの圧縮データを生成する。
【0025】
この発明によるデータ圧縮装置は,第1ファイル中の圧縮対象文字列(入力データ)と,上記圧縮対象文字列に先行する第1ファイル中の第1比較文字列(第1辞書データ)とを比較して一致する最長の文字列を検索する第1の検索手段,上記第1の検索手段によって一致する文字列が検索された場合に,上記第1比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第1符号化データを生成する第1符号化データ生成手段,第1ファイル中の圧縮対象文字列と,第2ファイル中の第2比較文字列(第2辞書データ)とを比較して一致する最長の文字列を検索する第2の検索手段,上記第2の検索手段によって一致する文字列が検索された場合に,上記第2比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第2符号化データを生成する第2符号化データ生成手段,ならびに圧縮対象文字列中の一致文字列を第1符号化データまたは第2符号化データを用いて表した第1ファイルの圧縮データを生成する圧縮データ生成手段を備えている。
【0026】
この発明によると,第1ファイル中に含まれる圧縮対象文字列と同じ文字列が,圧縮対象文字列に先行する第1比較文字列に含まれている場合に,第1比較文字列における一致文字列の位置を符号化した第1符号化データが生成される。さらに,圧縮対象文字列と同じ文字列が第2ファイル中の第2比較文字列に含まれている場合には,第2比較文字列における一致文字列の位置を符号化した第2符号化データが生成される。すなわち,この発明のデータ圧縮方法および装置では,従来のLZ方式によるデータ圧縮,すなわち第1ファイル中に含まれる先行する同一の文字列を利用したデータ圧縮に加えて,第2ファイル中に含まれる文字列を利用したデータ圧縮が行われる。
【0027】
この発明は,第1ファイルが第2ファイルの一部に追加,変更または削除(以下,「追加,変更または削除」を包括的に「更新」という)を施したファイルである場合に,その効果が一層高められる。第1ファイルが第2ファイルの一部を更新したものである場合,第1ファイルには第2ファイルに含まれる文字列と同じ(同一)の文字列を多く含んでいる。この発明によると,更新前の第2ファイル中の第2比較文字列が用いられて,一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第2符号化データが生成される。第1ファイルが第2ファイルの一部を更新したものである場合,文字列長が長い一致文字列について第2符号化データが生成される頻度が高い。生成される圧縮データの圧縮率を大幅に高めることができる。
【0028】
このようにこの発明によると,圧縮対象文字列中の一致文字列を第1符号化データまたは第2符号化データによって表した第1ファイルの圧縮データが生成される。第1符号化データは第1ファイル中の先行する文字列を用いた符号化データであるので,従来のLZ方式と同様に,第1ファイルのみによって第1符号化データから元の文字列を得ることができる。第2符号化データは,第2ファイル中の文字列を用いた符号化データであるので,第2符号化データから元の文字列を得る場合には第2ファイルが存在することが必要とされる。すなわち,この発明によって得られる第2符号化データを含む圧縮データは,第2ファイルが存在することを前提として伸張する(第1ファイルを得る)ことができるデータであると言える。
【0029】
一般的には,第1ファイルに含まれる文字列の一部が圧縮対象文字列とされ,第1ファイルに含まれる文字列の一部が第1比較文字列とされる。また,第2ファイルに含まれる文字列の一部が第2比較文字列とされる。好ましくは,圧縮対象文字列中の一致文字列について第1符号化データまたは第2符号化データが生成された場合,符号化された一致文字列の文字数分,圧縮対象文字列,第1比較文字列および第2比較文字列がスライド(シフト)する(スライディング・ウインドウ;動的辞書法)。第1ファイル中の新たな圧縮対象文字列と,新たな第1比較文字列および新たな第2比較文字列とが比較される(同一の文字列が存在するかどうかが判断される)。この処理を繰返すことによって,第1ファイルに含まれるすべての文字列について圧縮処理が施されることになる。この場合には,上記第1比較文字列における一致文字列の先頭の文字の位置および上記第2比較文字列における一致文字列の先頭の文字の位置には,上記圧縮対象文字列の位置に対する相対位置が用いられる。
【0030】
一実施態様では,上記圧縮対象文字列について第1符号化データと第2符号化データの両方が生成された場合には,第1比較文字列における一致文字列の文字列長と,第2比較文字列における一致文字列の文字列長とを比較し,文字列長が長い方についての第1符号化データまたは第2符号化データを用いて圧縮データを生成する。文字列長の長い一致文字列についての符号化データが用いられて圧縮データが生成されるので,高い圧縮率を実現することができる。文字列長が同じである場合には,第1符号化データおよび第2符号化データのいずれを用いても圧縮率は同じになるので,第1符号化データまたは第2符号化データのいずれか(いずれでもよい)を用いて圧縮データを生成する。
【0031】
この発明を次のように表現することもできる。この発明によるパッチ・データの生成方法は,旧ファイルと旧ファイルの一部を更新した新ファイルとに基づいてパッチ・データを生成する方法であって,新ファイル中の圧縮対象文字列と,上記圧縮対象文字列に先行する新ファイル中の第1比較文字列とを比較して一致する最長の文字列を検索し,一致する文字列が検索された場合に,上記第1比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第1符号化データを生成し,新ファイル中の圧縮対象文字列と,旧ファイル中の第2比較文字列とを比較して一致する最長の文字列を検索し,一致する文字列が検索された場合に,上記第2比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第2符号化データを生成し,圧縮対象文字列中の一致文字列を第1符号化データまたは第2符号化データを用いて表したパッチ・データを生成する。
【0032】
この発明によるパッチ・データ生成装置は,旧ファイルと旧ファイルの一部を更新した新ファイルとに基づいてパッチ・データを生成する装置であって,新ファイル中の圧縮対象文字列と,上記圧縮対象文字列に先行する新ファイル中の第1比較文字列とを比較して一致する最長の文字列を検索する第1の検索手段,上記第1の検索手段によって一致する文字列が検索された場合に,上記第1比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第1符号化データを生成する第1符号化データ生成手段,新ファイル中の圧縮対象文字列と,旧ファイル中の第2比較文字列とを比較して一致する最長の文字列を検索する第2の検索手段,上記第2の検索手段によって一致する文字列が検索された場合に,上記第2比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第2符号化データを生成する第2符号化データ生成手段,ならびに圧縮対象文字列中の一致文字列を第1符号化データまたは第2符号化データを用いて表したパッチ・データを生成するパッチ・データ生成手段を備えている。
【0033】
この発明によると,旧ファイルと旧ファイルを更新した新ファイルとに基づいてパッチ・データが生成される。パッチ・データは,旧ファイルの存在を前提に新ファイルを生成するためのデータである。すなわち,パッチ・データに含まれる第1符号化データおよび第2符号化データについて,第1符号化データであれば先行する新ファイル中の文字列に置換え,第2符号化データであれば旧ファイル中の文字列に置換えることによって,新ファイルを生成することができる。たとえば,旧ファイルが存在するが新ファイルは存在しないコンピュータにおいて,パッチ・データが取得されることによって新ファイルを生成することができる。このように,パッチ・データは旧ファイルを新ファイルに更新するためのデータであると言える。
【0034】
この発明は,上述のパッチ・データ生成装置によって生成されたパッチ・データを記憶する記憶手段を備えたサーバと,クライアントとがネットワークを介して相互に接続されるビデオ・ゲーム・システムにおいて用いられる上記サーバと,上記クライアント(ビデオ・ゲーム装置,パーソナル・コンピュータ等)も提供している。
【0035】
この発明によるビデオ・ゲーム・システムにおいて用いられるサーバは,上述のパッチ・データ生成装置によって生成されたパッチ・データを記憶する記憶手段を備え,クライアントから送信されるパッチ・データ送信要求に応答して,上記パッチ・データを上記クライアントに送信する送信手段を備えたものである。
【0036】
この発明によるビデオ・ゲーム・システムにおいて用いられるクライアントは,上記旧ファイルを記憶する記憶手段,パッチ・データ送信要求を上記サーバに送信する送信手段,上記サーバから送信される上記パッチ・データを受信する受信手段,および上記受信手段によって受信されたパッチ・データと記憶手段に記憶された上記旧ファイルとに基づいて,上記新ファイルを生成する手段を備えている。
【0037】
サーバは,クライアントからのパッチ・データ送信要求に応答して,クライアントにパッチ・データを送信する。クライアントは旧ファイルを記憶しているので,旧ファイルとサーバから送信されたパッチ・データとに基づいて新ファイルを得ることができる。パッチ・データのデータ量は新ファイルのデータ量に比べて格段にデータ量が少ないので,サーバからクライアントに新ファイルを送信する場合に比べて,少ないデータ通信量でサーバからクライアントにパッチ・データを送信することができる。データ伝送時間を大幅に短縮することができる。
【0038】
第1ファイル(新ファイル)中の先行する文字列(上述の第1比較文字列)を用いることなく,第2ファイル(旧ファイル)中の文字列(上述の第2比較文字列)のみを用いて符号化データを作成し,この符号化データを圧縮データに採用してもよい。この発明によるデータ圧縮方法は,第2ファイルの一部を更新した第1ファイル中の圧縮対象文字列と,上記第2ファイル中の比較文字列とを比較して一致する最長の文字列を検索し,一致する文字列が検索された場合に,上記比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した符号化データを生成し,圧縮対象文字列を符号化データを用いて表した第1ファイルの圧縮データを生成する。
【0039】
この発明によるデータ圧縮装置は,第2ファイルの一部を更新した第1ファイル中の圧縮対象文字列と,上記第2ファイル中の比較文字列とを比較して一致する最長の文字列を検索する検索手段,上記検索手段によって一致する文字列が検索された場合に,上記比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した符号化データを生成する符号化データ生成手段,および圧縮対象文字列を,上記符号化データ生成手段によって生成された符号化データを用いて表した第1ファイルの圧縮データを生成する圧縮データ生成手段を備えたものである。
【0040】
第1ファイルは第2ファイルの一部を更新したものであるので,生成される圧縮データに含まれる符号化データは一致文字長の長い文字列を表す頻度が高く,データ量の小さい圧縮データを得ることができる。
【0041】
この発明は,上述の圧縮データの生成をコンピュータに実行させるためのプログラムも提供している。
【0042】
【実施例の説明】
(1)パッチ・データ作成処理(圧縮処理)およびバージョン・アップ処理(伸張処理)
図1は,パッチ・データ作成処理(圧縮処理)とバージョン・アップ処理(伸張処理)を概念的に示すものである。
【0043】
この実施例における圧縮処理は,旧ファイルと新ファイルの2つのファイルを利用して,新ファイルを圧縮した圧縮データを作成する処理である。伸張処理は旧ファイルと上述の圧縮処理によって作成された圧縮データとを利用して,新ファイルを得るための処理である。
【0044】
圧縮処理によって作成される圧縮データは,旧ファイルを有し,かつ新ファイルを持たないコンピュータにおいて伸張処理によって新たに新ファイルを得るために用いられる。圧縮処理の対象とされる新ファイルは,一般には,旧ファイルの一部に追加,変更または削除(以下,追加,変更または削除を包括的に「更新」という)を施したものである。圧縮データは,旧ファイルから,旧ファイルを更新した新ファイルを得るために必要とされるデータと言える。以下の説明では,圧縮データを「パッチ・データ」と言うことにする。圧縮処理を「パッチ・データ作成処理」と言うことにする。
【0045】
伸張処理は,旧ファイルとパッチ・データとに基づいて新ファイルを得るための処理である。伸張処理は,旧ファイルを新ファイルに更新するための処理と言える。以下の説明では,伸張処理を「バージョン・アップ処理」ということにする。
【0046】
(i) パッチ・データ作成処理(圧縮処理)
図2はパッチ・データ作成処理の流れを示すフローチャートである。図3(A) 〜(D)および図4(A)〜(D) は,パッチ・データ作成処理の流れを,具体的に示すものである。
【0047】
パッチ・データ作成処理は,上述のように,旧ファイルと新ファイルの2つのファイルを利用してパッチ・データを作成する処理である。パッチ・データ作成処理はコンピュータによって実行される。パッチ・データ作成処理を実行するコンピュータには,旧ファイルと,新ファイルと,パッチ・データ作成プログラムがあらかじめ用意される。
【0048】
パッチ・データ作成処理は,新ファイルの文字列中に繰返し出現する文字列と,旧ファイル中に出現する新ファイルと同じ文字列とを利用して,新ファイルの文字列を圧縮する処理である。後述するように,パッチ・データ作成処理では,新ファイルに含まれる文字列のうちの一部についての圧縮が連続して行われる。この実施例では,新ファイル中に含まれる文字列のうち圧縮処理の対象となる文字列部分を5文字分とする。また後述するように,圧縮処理対象の文字列部分は,同じ新ファイル中の先行する文字列部分と比較される。比較される先行する文字列部分も5文字分とする。新ファイルにおいて圧縮処理対象となる文字列部分の範囲を「圧縮対象窓」,比較される先行する文字列部分の範囲を「第1参照窓」と呼ぶ。
【0049】
旧ファイル中にも,圧縮処理対象の文字列部分と比較される文字列部分が設けられる。旧ファイルにおいて比較される文字列部分の範囲を「第2参照窓」と呼ぶ。第2参照窓の範囲は10文字分とする。
【0050】
後述するように,圧縮対象窓,第1参照窓,第2参照窓は,文字列の後ろ向きに順次スライドする。圧縮対象窓がスライドすることによって,新ファイル中のすべての文字列について圧縮処理が施される。
【0051】
図3および図4を参照して具体的に説明する。旧ファイルを「12445423430234262342」とする。新ファイルを「12442623421234262342」とする。
【0052】
はじめに,圧縮対象窓を新ファイルの先頭から5文字分「12442」に位置させる。第1参照窓は圧縮対象窓の前の5文字分に位置させる(初期状態において,第1参照窓には新ファイル中の文字列は入っていない)。さらに,旧ファイルにおいて10文字分の第2参照窓を位置させる。第2参照窓の位置は,第1参照窓および圧縮対象窓を合わせた位置と同じ位置とする(図3(A) )。コンピュータ処理の観点から言えば,コンピュータのメモリのバッファ・エリアに,圧縮対象窓中の文字列,第1参照窓中の文字列,第2参照窓中の文字列が記憶される(ステップ11)。
【0053】
はじめに,圧縮対象窓中の5文字分の文字列「12442」のうち,先頭から5文字「12442」,4文字「1244」,3文字「124」,2文字「12」,1文字「1」と一致する文字列が,第1参照窓の文字列に含まれているかどうか順次検索される(ステップ12)。
【0054】
圧縮対象窓中の文字列と一致する文字列が第1参照窓に含まれている場合には(ステップ13でYES ),一致する文字列が符号化データによって表される(詳しくは,後述する)。第1参照窓中の文字列が用いられて作成された符号化データを「符号化データA」と呼ぶ。符号化データAはコンピュータのメモリに一時的に記憶される。
【0055】
図3(A) の例では,第1参照窓中に文字列がないので圧縮対象窓中の文字列と一致する文字列は第1参照窓中の文字列には含まれていない(ステップ13でNO)。
【0056】
次に,圧縮対象窓中の5文字分の文字列のうち,先頭から5文字,4文字,3文字,2文字,1文字と一致する文字列が,第2参照窓の文字列に含まれているかどうか順次検索される(ステップ15)。
【0057】
図3(A) の例では,圧縮対象窓中の先頭から4文字「1244」が,第2参照窓中に存在する。旧ファイルの第2参照窓において「1244」の4文字分の位置を表す「<旧,0,4>」が符号化データとしてコンピュータのメモリに一時的に記憶される(ステップ16でYES ,ステップ17)。「<旧,0,4>」は,旧ファイルの第2参照窓中の文字列であって,0文字目の位置(圧縮対象用窓中の先頭の文字に対応する位置にある第2参照窓中の文字の位置)を起点にして,4文字分の文字列(すなわち「1244」;一致文字数は「4」)であることを表す。第2参照窓中の文字列が用いられて作成される符号化データを「符号化データB」と呼ぶ。
【0058】
符号化データAおよび/または符号化データBがメモリに一時的に記憶された場合には(ステップ18でYES ),第1参照窓中の文字列を用いた符号化データAと第2参照窓中の文字列を用いた符号化データBとにおいて,一致文字数(一致文字列長)が比較される(ステップ19)。符号化データAまたは符号化データBのうち,一致文字数がより多い方が符号化データとして採用される(ステップ21またはステップ22)。
【0059】
新ファイルのすべての文字列について圧縮処理を終えたかどうかが判断される(ステップ23)。圧縮処理すべき文字列が残っている場合には(ステップ23でNO),圧縮対象窓,第1参照窓および第2参照窓が文字列の後ろの方向にスライドする(ステップ24)。図3(A) の例の場合には,圧縮対象窓中の4文字分が符号化データとされたので,圧縮対象窓,第1参照窓および第2参照窓がそれぞれ4文字分,文字列の後ろ向きにスライドする(図3(B) )。
【0060】
新たに圧縮対象窓中に含まれるようになった5文字分の文字列について,上述と同様に,第1参照窓または第2参照窓中の文字列に同一の文字列が含まれているかどうかが判断される。
【0061】
図3(B) を参照して,圧縮対象窓中の5文字分の文字列「26234」のうち,先頭から5文字「26234」,4文字「2623」,3文字「262」,2文字「26」,1文字「2」と一致する文字列が,第1参照窓中の文字列にあるかどうかが順次判断され(ステップ12),さらに第2参照窓中の文字列にあるかどうかが順次判断される(ステップ15)。
【0062】
圧縮対象窓中の先頭の文字「2」は,第1参照窓および第2参照窓のいずれにも含まれている。符号化データAおよび符号化データBがメモリに一時的に記憶される。符号化データAの一致文字数と符号化データBの一致文字数が同じである場合には,第1参照窓中の文字列を用いた符号化データAが符号化データとして採用される(ステップ19でA≧B,ステップ21)(図2(B) において「<新,−3,1>」)。「<新,−3,1>」は,新ファイルの第1参照窓中の文字列であって,圧縮対象窓中の先頭の文字を起点にして3文字分文字列を遡って1文字分の文字列であることを意味する。
【0063】
符号化データよりも,圧縮対象窓中の文字列をそのまま用いた方がデータ量が少ないような場合には,圧縮対象窓中の文字列をそのまま用いるようにしてもよい。具体的に言うと,上述の例の場合には,<新,−3,1>を符号化データとする(「<新,−3,1>」によって文字列「2」を表す)のに代えて,文字列「2」を符号化データとして用いてもよい。
【0064】
圧縮対象窓中の1文字分が符号化データとされたので,圧縮対象窓,第1参照窓および第2参照窓がそれぞれ1文字分,文字列の後ろ向きにスライドする(ステップ24,図3(C) )。
【0065】
図3(C) を参照して,圧縮対象窓中の文字列「62342」,「6234」,「623」,「62」および「6」のいずれも第1参照窓および第2参照窓に含まれていない(ステップ18でNO)。この場合には圧縮対象窓中の先頭の1文字が符号化データとされる。すなわち,圧縮対象用窓中の文字列が「62342」の場合には,その先頭の文字「6」が符号化データとされる(ステップ20)。
【0066】
圧縮対象窓中の1文字分が符号化データとされたので,圧縮対象窓,第1参照窓および第2参照窓がそれぞれ1文字分,文字列の後ろ向きにスライドする(図3(D) )。
【0067】
図3(D) を参照して,圧縮対象窓中の文字列「23421」のうち,先頭の1文字「2」は第1参照窓中に含まれている(符号化データAは<旧,−5,1>または<旧,−2,1>)(ステップ13でYES )。符号化データA「<旧,−5,1>」または「<旧,−2,1>」がメモリに一時的に記憶される(ステップ14)。また,圧縮対象窓中の先頭から3文字「234」は,第2参照窓に含まれている(符号化データBは<旧,0,3>)(ステップ16でYES )。符号化データB「<旧,0,3>」がメモリに一時的に記憶される(ステップ17)。符号化データBの方が符号化データAよりも一致文字数は多いので,符号化データB「<旧,0,3>」が符号化データとして採用される(ステップ19でA<B,ステップ22)。圧縮対象窓,第1参照窓および第2参照窓がそれぞれ3文字分,文字列の後ろ向きにスライドする(図4(A) )。
【0068】
図4(A) を参照して,圧縮対象窓中の先頭の1文字「2」は,第1参照窓および第2参照窓のいずれにも含まれている。第1参照窓中の「2」の位置を表す符号化データが採用される(図4(A) において「<新,−5,1>」)(ステップ19でA≧B,ステップ21)。圧縮対象窓,第1参照窓および第2参照窓がそれぞれ1文字分,文字列の後ろ向きにスライドする(図4(B) )。
【0069】
図4(B) を参照して,圧縮対象窓中の「12342」,「1234」,「123」,「12」および「1」のいずれも第1参照窓および第2参照窓に含まれていない。符号化データとして圧縮対象窓中の先頭の1文字「1」が用いられる(ステップ18でNO,ステップ20)。圧縮対象窓,第1参照窓および第2参照窓がそれぞれ1文字分,文字列の後ろ向きにスライドする(図4(C) )。
【0070】
図4(C) を参照して,圧縮対象窓中の「23426」は第2参照窓中に含まれている。「<旧,0,5>」が符号化データとされる(ステップ19でA<B,ステップ22)。圧縮対象用窓,第1参照窓および第2参照窓がそれぞれ5文字分,文字列の後ろ向きにスライドする(図4(D) )。
【0071】
図4(D) を参照して,圧縮対象用窓中の「2342」は第1参照用窓にも,第2参照用窓にも含まれている。「<新,−5,4>」が符号化データとして採用される(ステップ19でA≧B,ステップ21)。
【0072】
新ファイル中のすべての文字列について圧縮処理が終了すると,パッチ・データ作成処理が終了する(ステップ23でYES )。図4(D) に示す符号化データが「パッチ・データ」である。
【0073】
1文字分のビット数を8ビットとすると,図3および図4に示す新ファイルには20文字含まれているので,8×20=160 ビットのデータ量となる。ここで,図4(D) のパッチ・データにおいて,符号化データ「<○,○,○>」の部分のビット数を,たとえば9ビットとする(第2参照窓において文字列の位置を表すのに4ビットが必要,最大5文字分をカウントするために3ビットが必要,「<>」であることを示すために1ビットが必要,新または旧(第1参照用窓中の文字列であるか,第2参照用窓中の文字列であるか)の区別に1ビットが必要とすると,4+3+1+1=9ビットのデータ量が必要となる)。図4(D) に示すパッチ・データには,2文字分の文字と,6つの「<○,○,○>」を含むので,データ量は8×2+6×9=70ビットのデータ量となる。パッチ・データは,新ファイルのデータ量の約40%程度のデータ量となる。
【0074】
(ii)バージョン・アップ処理(伸張処理)
バーション・アップ処理は,上述したように,旧ファイルとパッチ・データとを用いて,新ファイルを作成する処理である。図5は,図4(D) に示す旧ファイルとパッチ・データを用いて新ファイルを作成する処理を具体的に示すものである。バージョン・アップ処理は,バーション・アップ・プログラムを有するコンピュータにおいて実行される。バージョン・アップ・プログラムが実行されることによってバージョン・アップ処理が進行する。
【0075】
パッチ・データを先頭から見ていく。<旧,0,4>の部分は,旧ファイルの文字列の先頭から4文字分と置換される(「1244」)。<新,−3,1>は,作成途中の新ファイルにおいて3文字分遡って1文字分の文字列と置換される(「12442」)。次の「6」はそのまま「6」が用いられる(「124426」)。<旧,0,3>は,旧ファイルの文字列の0文字目から3文字分と置換される。6文字分まで新ファイルが完成しているので旧ファイルの文字列の0文字目は,旧ファイルの文字列のうち先頭から6文字分を除いた次の文字(7文字目)になる(「124426234」)。<新,−5,1>は,作成途中の新ファイルにおいて5文字分遡って1文字分の文字列と置換される(「1244262342」)。次の「1」はそのまま「1」が用いられる(「12442623421」)。<旧,0,5>は旧ファイルの文字列の0文字目(11文字分まで新ファイルが完成しているので,0文字目は旧ファイルの12文字目になる)から5文字分と置換される(「1244262342123426」)。<新,−5,4>は,作成途中の新ファイルにおいて5文字分遡って4文字分と置換される(「12442623421234262342」)。このようにして,旧ファイルとパッチ・データとから,新ファイルを得ることができる。
【0076】
旧ファイルと新ファイルの両方を有し,かつパッチデータ作成処理プログラムを有するコンピュータをコンピュータAとする。旧ファイルを有し,バージョン・アップ・プログラムを有するコンピュータをコンピュータBとする。上述のように,コンピュータAでは新ファイルと旧ファイルとに基づいてパッチ・データを作成することができる。コンピュータAからコンピュータBにパッチ・データを送信することによって,コンピュータBにおいてはバーション・アップ・プログラムによって新ファイルを得ることができる。上述のように,パッチ・データのデータ量は,新ファイルのデータ量よりも格段に少ない。新ファイルそのものをコンピュータAからコンピュータBに送信する場合に比べて,少ないデータ通信量でコンピュータBにおいて新ファイルを得ることができる。データ伝送時間を大幅に短縮することができる。
【0077】
(2)応用例
図6は,ネットワークを利用したビデオ・ゲーム・システムのブロック図を示している。このビデオ・ゲーム・システムは,上述のパッチ・データ作成処理およびバージョン・アップ処理を利用して,ユーザの所有するビデオ・ゲーム装置のハードディスクに記憶されているビデオ・ゲームを,バージョン・アップさせることができるシステムである。
【0078】
ネットワークを利用したビデオ・ゲーム・システムは,ネットワーク1と,サーバ・コンピュータ2(以下,サーバ2という)と,複数のビデオ・ゲーム装置3とから構成される。
【0079】
ネットワークを利用したビデオ・ゲーム・システムでは,後述するように,サーバ2においてビデオ・ゲームのためのプログラムまたはデータについてのバージョン・アップが行われた場合に,サーバ2において上述のパッチ・データ作成処理が行われ,パッチ・データが作成される。このパッチ・データがユーザの所有するビデオ・ゲーム装置3にネットワーク1を介して送信(配信)される。ビデオ・ゲーム装置3において,上述のバージョン・アップ処理が行われることによって,ビデオ・ゲーム装置3には最新のプログラムまたはデータが保存される。
【0080】
図7は,ビデオ・ゲーム装置3の全体的構成を示している。図8はビデオ・ゲーム装置3の電気的構成を示すブロック図である。
【0081】
ビデオ・ゲーム装置3は,ゲーム機本体31,表示画面上に現れるポインタ等を操作するためのコントローラ32,ゲームの進行状態等を記録するためのメモリ・カード33およびゲーム機本体から出力される画像データおよび音声データの入力を受付け,受付けた画像データによって表される画像を表示画面上に表示し,音声データによって表される音声をスピーカから出力する出力装置(スピーカを持つ表示装置等)34を含む。ゲーム機本体31の前端面には,ビデオ・ゲームのためのプログラムおよびデータ等が記録されたDVD−ROM(またはCD−ROM)(以下,単にDVDという)35を装填するためのディスク・トレイ36が設けられている。DVD35はこのディスク・トレイ36上に載置される。ディスク・トレイ36の右側には,リセット・ボタン37およびエジェクト・ボタン38が設けられている。リセット・ボタン37はゲーム機本体31のRAMを初期化する(リセットする)ために用いられる。エジェクト・ボタン38はディスク・トレイ36の開閉に用いられる。さらにゲーム機本体31の前端面には,メモリ・カード33を接続するためのメモリ・カード・スロット39,コントローラ32を接続するためのコントローラ・コネクタ40,外部機器等を接続するためのUSB(Universal Serial Bus)コネクタ41がそれぞれ2つずつ設けられている。図7では,メモリ・カード・スロット39にメモリ・カード33が,コントローラ・コネクタ40にコントローラ32が,それぞれ1つずつ接続されている。
【0082】
図8を参照して,ゲーム機本体31はCPU51を含む。CPU51はゲーム機本体31の動作を統括的に制御する。CPU51にはバス54を介して,ワーク・エリア,バッファ・エリア,カウンタ・エリア等を提供するRAM52,DVD35に記録されたプログラムおよびデータを読出すDVD−ROMドライブ53,DVD35,RAM52,ハードディスク59等に記憶されたサウンド・データを処理して出力装置34に出力するサウンド処理回路55,DVD35,RAM52,ハードディスク59等に記憶されたグラフィック・データを処理して出力装置34に出力するグラフィック処理回路56,ネットワーク1を通じてデータ等を送受信するための通信装置58とバス54との間,およびコントローラ32とバス54との間のデータの送受信を制御するインターフェース回路57,オペレーティング・システム,ブラウザ,ビデオ・ゲーム・プログラムおよびデータ,バージョン・アップ・プログラム等が記憶されたハードディスク(HD)59がそれぞれ接続されている。
【0083】
ハードディスク59に記憶されているビデオ・ゲーム・プログラムおよびデータは,DVD−ROMドライブ53によってDVD35から読取られてインストールされたものと,後述するようにして,ネットワーク1を介してサーバ2から送信されたパッチ・データを,バージョン・アップ・プログラムによって処理することによって得られるプログラムまたはデータを含む。
【0084】
図9は,サーバ2の電気的構成を示すブロック図である。
【0085】
サーバ2は,サーバ2を統括的に制御するCPU61を含む。CPU61にデータ入力等に用いられる入力装置(キーボード,マウス等)62,文字,画像等を可視的に出力する表示装置(LCDディスプレイ等)63,ワーク・エリア,バッファ・エリア等を提供するメモリ64,ネットワーク1を通じてデータ等を送受信するための通信装置65,ならびにプログラムおよびデータを記憶するハードディスク66が接続されている。
【0086】
ハードディスク66には,ビデオ・ゲームのためのプログラムおよびデータと,パッチ・データと,パッチ・データ作成プログラムとが記憶されている。
【0087】
ビデオ・ゲームのためのプログラムおよびデータは,複数のプログラム・ファイルおよびデータ・ファイルによって構成される。一般的には,ハードディスク66には,複数の種類のビデオ・ゲームのそれぞれについて複数のプログラム・ファイルおよびデータ・ファイルが記憶されているが,説明を簡単にするために,この実施例では,一種類のビデオ・ゲーム(以下,「コンテンツA」と呼ぶ)のためのプログラム・ファイルおよびデータ・ファイルが記憶されているものとする。
【0088】
さらに,ハードディスク66には,一つのコンテンツAについて,異なるバージョンのものが記憶されている。すなわち,サーバ2において,コンテンツAに含まれる複数のプログラム・ファイルおよびデータ・ファイルのうち,一または複数のプログラム・ファイルおよびデータ・ファイルについて修正,追加,削除等(更新)が行われる(バージョン・アップ)と,更新前のコンテンツAと,更新後のコンテンツAとがハードディスク66に記憶される。コンテンツAはバージョン番号を持つ。更新が行われる度にコンテンツAのバージョンがインクリメントされる(バージョン1からバージョン2へのバージョン・アップ,バージョン2からバージョン3へのバージョン・アップ等)。
【0089】
コンテンツAについてバージョン・アップが行われると,更新されたファイル(プログラム・ファイルおよび/またはデータ・ファイル)と,更新前のファイルとが用いられて,パッチ・データが作成される。パッチ・データの作成は,ハードディスク66に記憶されたパッチ・データ作成プログラムの処理にもとづく。サーバ2において実行されるパッチ・データ作成プログラムの処理は,図2を参照して説明した処理と同じ処理である。作成されたパッチ・データもハードディスク66に記憶される。
【0090】
図10は,ネットワークを用いたビデオ・ゲーム・システムにおけるビデオ・ゲーム装置3とサーバ2のそれぞれの処理と,これらの間のデータ通信の流れを示すフローチャートである。図10に示す処理のためのプログラムおよびデータは,ビデオ・ゲーム装置3とサーバ2のそれぞれにあらかじめ記憶されているものとする。
【0091】
ユーザの所有するビデオ・ゲーム装置3のゲーム機本体31に内蔵されているハードディスク59には,ビデオ・ゲーム(コンテンツAとする)のためのプログラム・ファイルおよびデータ・ファイルが記憶されているものとする。すなわち,ユーザは,コンテンツAのプログラム・ファイルおよびデータ・ファイルが記録されたDVD35を購入し,購入したDVD35をDVD−ROMドライブ53に装着する。DVD35に記録されているコンテンツAのプログラム・ファイルおよびデータ・ファイルがDVD−ROMドライブ53によって読出され,ビデオ・ゲーム装置3のハードディスク59にインストールされる。
【0092】
また,ビデオ・ゲーム装置3のユーザには,サーバ2の管理者(たとえば,コンテンツAを提供する企業)からあらかじめIDとパスワードを付与されているものとする。ユーザに付与されたIDおよびパスワードも,ビデオ・ゲーム装置3のハードディスク59に記憶されているものとする。
【0093】
ユーザがビデオ・ゲーム装置3のゲーム機本体31の電源をオンし,所定の操作を行うと,ハードディスク59に記憶されているIDとパスワードが,ネットワーク1を介してビデオ・ゲーム装置3からサーバ2に送信される(ステップ71)。サーバ2においてIDおよびパスワードを用いたユーザ認証が行われる(ステップ91)。
【0094】
ビデオ・ゲーム装置3の出力装置34の表示画面上には,ハードディスク59に記憶されているビデオ・ゲームの名称が一覧に表示される。ハードディスク59の複数の種類のビデオ・ゲームのためのプログラム・ファイルおよびデータ・ファイルが記憶されている場合には,複数のビデオ・ゲームの名称が表示画面上に表示される。ユーザはプレイしようとしているゲームの名称を,コントローラ32を用いて選択する(ステップ72)。
【0095】
ビデオ・ゲーム装置3のハードディスク59に記憶されているビデオ・ゲーム(ビデオ・ゲームのためのプログラム・ファイルおよびデータ・ファイルの少なくとも一つ)には,バージョン情報が記憶されている。ユーザがコントローラ32を用いてゲームの名称を選択すると,選択されたビデオ・ゲームの種類を表すデータと,そのバージョン情報とが,ネットワーク1を通じてビデオ・ゲーム装置3からサーバ2に送信される(ステップ73)。
【0096】
サーバ2はビデオ・ゲーム装置3からビデオ・ゲームの種類とそのバージョン情報を受信すると,ビデオ・ゲーム装置3のハードディスク59に記憶されている選択されたビデオ・ゲーム(コンテンツAとする)についてのバージョンが,最新のバージョンであるかどうかを判断する(ステップ92)。最新バージョンであるか,または古いバージョン(最新ではないバージョン)であるかを表すデータ(比較結果)が,サーバ2からビデオ・ゲーム装置3に送信される(ステップ93)。
【0097】
ビデオ・ゲーム装置3において,ビデオ・ゲーム装置3のハードディスク59に記憶されているコンテンツAのバージョンが最新バージョンである旨のデータを受信した場合には(ステップ74でYES ),ビデオ・ゲーム装置3の出力装置34の表示画面上に最新バージョンである旨を表すメッセージが表示され(ステップ75),その後コンテンツAのビデオ・ゲームがスタートする(ステップ82)。サーバ2において,バージョン・アップのための処理は行われない(ステップ94でNO)。
【0098】
ビデオ・ゲーム装置3のハードディスク59に記憶されているコンテンツAのバージョンが最新ではない旨のデータを受信した場合には(ステップ74でNO),ビデオ・ゲーム装置3の表示画面には,バージョン・アップを行う旨のメッセージが表示される(ステップ76)。
【0099】
サーバ2において,ユーザのビデオ・ゲーム装置3のハードディスク59に記憶されているコンテンツAのバージョンが最新のものでないことが判断されると(ステップ94でYES ),サーバ2はバージョン・アップに必要なデータ量をビデオ・ゲーム装置3に送信する(ステップ95)。
【0100】
バージョン・アップに必要なデータ量を表すデータを受信したビデオ・ゲーム装置3では,ハードディスク59の空き容量が十分であるかどうかを判断する(ステップ77)。
【0101】
バージョン・アップに必要とされる十分な空き容量がビデオ・ゲーム装置3のハードディスク59に残っていない場合には(ステップ77でNG),ビデオ・ゲーム装置3の表示画面上にハードディスク59の空き容量が不足している旨のメッセージが表示される(ステップ79)。その後,古いバージョンのコンテンツAのビデオ・ゲームがスタートする(ステップ82)。ハードディスク59に記憶されている不必要なファイルの削除またはハードディスクの追加等をユーザに勧めるメッセージを,表示画面上に表示してもよい。
【0102】
ハードディスク59の空き容量が十分にある場合(ステップ77でOK),ビデオ・ゲーム装置3からサーバ2にパッチ・データの送信要求が送信される(ステップ78)。パッチ・データの送信要求を受信したサーバ2は,バージョン・アップに必要なパッチ・データをビデオ・ゲーム装置3に送信する(ステップ96でYES ,ステップ97)。パッチ・データの送信要求を所定の時間内に受信しなかった場合には,サーバ2はバージョン・アップのための処理を終了する(ステップ96でNO)。
【0103】
パッチ・データを受信したビデオ・ゲーム装置3では,バージョン・アップ・プログラムが起動し,バージョン・アップ処理が実行される(ステップ80)。バージョン・アップ処理は,図5を参照して説明した処理と同じ処理である。
【0104】
図11は,バージョン・アップ処理におけるサーバ・コンピュータ2およびビデオ・ゲーム装置3の処理と,これらの間のデータの流れとを,分かりやすく示すものである。
【0105】
サーバ2は,コンテンツA(バージョン1)とコンテンツA(バージョン2)の異なる2つのバージョンのコンテンツAをハードディスク66に記憶しているものとする。コンテンツA(バージョン1)は,ファイルa,ファイルb,ファイルc,ファイルdおよびファイルeの5つのファイルを含む。コンテンツA(バージョン2)は,ファイルa,ファイルb,ファイルc’,ファイルdおよびファイルeの5つのファイルを含む。すなわち,コンテンツA(バージョン2)は,コンテンツA(バージョン1)のファイルcが,ファイルc’に置き換えられたものである。
【0106】
他方,ビデオ・ゲーム装置3のハードディスク59にはコンテンツA(バージョン1)(ファイルa,ファイルb,ファイルc,ファイルdおよびファイルe)が記憶されている。ここでユーザがビデオ・ゲーム装置3の電源をオンとし,プレイするゲームとしてコンテンツAを選択すると,パッチ・データ送信要求がビデオ・ゲーム装置3からサーバ2に送信される。サーバ2のハードディスク66には,ファイルcとファイルc’とに基づいてパッチ・データ作成プログラムにしたがって作成されたパッチ・データx(符号100 で示す)が記憶されている。パッチ・データ送信要求の受信に応じて,パッチ・データxがサーバ2からビデオ・ゲーム装置3に送信される。もちろん,パッチ・データ送信要求を受信するたびに,サーバ2においてパッチ・データを作成するようにしてもよい。
【0107】
図12はパッチ・データのデータ構造を概念的に示している。パッチ・データ100 は,パッチ・データ本体と,ファイル名(ヘッダ情報)とを含む。ファイル名は,パッチ・データの作成に用いられた旧ファイル(更新前のファイル)のファイル名である。図11に示す例の場合には,ファイル名の部分には「ファイルc」が記述される。
【0108】
ビデオ・ゲーム装置3では,サーバ2から受信したパッチ・データxに含まれるファイル名(ファイルc)に基づいて,バージョン・アップすべきファイルcをRAM52に読出す。RAM52に読出されたファイルcとパッチ・データxのパッチ・データ本体とに基づいてバージョン・アップ処理が実行される。新たにファイルc’が作成される。作成されたファイルc’がコンテンツAに組込まれる。ファイルa,ファイルb,ファイルc’,ファイルdおよびファイルeから構成されるコンテンツA(バージョン2)が,ビデオ・ゲーム装置3のハードディスクに保存される。バージョン情報(ファイルa,b,c’,dまたはeのいずれかに記述されている,バージョン情報のみが記述されたファイルをコンテンツAに含ませておいてもよい)が,バージョン1からバージョン2に書替えられる。ファイルc(旧ファイル)は,一般にはビデオ・ゲーム装置3のハードディスク59から削除される。
【0109】
図10に戻って,バージョン・アップが成功すると,正常にバージョン・アップが終了した旨を表すデータがビデオ・ゲーム装置3からサーバ2に送信される(ステップ81)。その後,ビデオ・ゲーム装置3において最新バージョンのコンテンツAのビデオ・ゲームがスタートする(ステップ82)。
【0110】
このように,ネットワークを用いたビデオ・ゲーム・システムでは,ビデオ・ゲーム装置3のハードディスク59に記憶されているビデオ・ゲームのバージョン・アップ(旧ファイルのバージョン・アップ)に必要なパッチ・データが,ネットワーク1を介してサーバ2から送信される。ビデオ・ゲーム装置3では旧ファイルとパッチ・データに基づいて新ファイルが作成されてバージョン・アップが完了する。パッチ・データのデータ量は新ファイルに比べて格段にデータ量が少ないので,新ファイルそのものをサーバ2からビデオ・ゲーム装置3に送信する場合に比べてデータ通信量を少なくすることができ,短い時間でデータ通信を終えることができる。
【0111】
(3)変形例
図13は,図10に示すビデオ・ゲーム装置3とサーバ2のそれぞれの処理と,これらの間のデータ通信の流れを示すフローチャートの変形例を示すものである。図10のフローチャートと同じ処理には同一の符号を付し,重複する説明を避ける。図14は,変形例において,サーバ2のハードディスク66に記憶されるデータベース(バージョン管理データベース101 )の一例を示している。サーバ2のハードディスク66にバージョン管理データベース101 が記憶されている点を除き,サーバ2の構成は上述の図9と同じである。ビデオ・ゲーム装置3についても上述の図7および図8と同じ構成を持つ。
【0112】
サーバ2のハードディスク59に記憶されているバージョン管理データベース101 は,ユーザID,パスワード,ユーザ氏名,ビデオ・ゲーム名およびバージョン番号に関するデータが記憶されている。ユーザが所有するビデオ・ゲームごとに,そのビデオ・ゲームのバージョンがサーバ2において管理される。
【0113】
ビデオ・ゲーム装置3からIDおよびパスワード,ならびに選択されたビデオ・ゲームの種類を表すデータがサーバ2に送信されると(ステップ71,72),サーバ2はバージョン管理データベース101 をアクセスして,IDおよびパスワードによって特定されるユーザが選択したビデオ・ゲームのバージョン情報を取得する。選択されたビデオ・ゲームが最新バージョンであるかどうかが判断される(ステップ92A)。
【0114】
バージョン・アップが正常終了した旨のデータをサーバ2が受信すると,サーバ2ではバージョン管理データベース101 に格納されているバージョン番号を新たなバージョン番号に更新する(ステップ78)。このようにして,ユーザが所有するビデオ・ゲーム装置3のハードディスク59に記憶されているビデオ・ゲームのバージョンがサーバ2において管理される。
【0115】
ユーザが所有するビデオ・ゲーム装置3に,2つ前,3つ前のバージョンのコンテンツが記憶されている場合,たとえば,コンテンツの最新バージョンがバージョン4であり,ビデオ・ゲーム装置3にはバージョン1のコンテンツが記憶されている場合には,上述のバージョン・アップ処理を複数回繰返すことによって,すなわち,バージョン1をバージョン2にバージョン・アップし,バージョン2をバージョン3にバージョン・アップし,さらにバージョン3をバージョン4にバージョン・アップすることによって,ビデオ・ゲーム装置3のコンテンツを最新バージョンとすることができる。もちろん,バージョン1のコンテンツとバージョン4のコンテンツとを用いて,バージョン1からバージョン4へのバージョン・アップを行うためのパッチ・データをサーバ2において作成して,ビデオ・ゲーム装置3に送信するようにしてもよい。1回のバージョン・アップ処理によって,バージョン1からバージョン4へのバージョン・アップを図ることができる。
【図面の簡単な説明】
【図1】パッチ・データ作成処理(圧縮処理)とバージョン・アップ処理(伸張処理)を概念的に示している。
【図2】パッチ・データ作成処理の流れを示すフローチャートである。
【図3】(A) から(D) はパッチ・データ作成処理の流れを具体的に示している。
【図4】(A) から(D) はパッチ・データ作成処理の流れを具体的に示している。
【図5】バージョン・アップ処理の流れを具体的に示している。
【図6】ネットワークを利用したビデオ・ゲーム・システムのブロック図である。
【図7】ビデオ・ゲーム装置の全体的構成を示している。
【図8】ビデオ・ゲーム装置の電気的構成を示すブロック図である。
【図9】サーバの電気的構成を示すブロック図である。
【図10】ビデオ・ゲーム装置とサーバとの間のデータ通信の流れを示すフローチャートである。
【図11】サーバにおいて実行されるパッチ・データ作成処理およびビデオ・ゲーム装置において実行されるバージョン・アップ処理の様子を示している。
【図12】パッチ・データのデータ構造の一例を示している。
【図13】ビデオ・ゲーム装置とサーバとの間のデータ通信の流れの他の例を示すフローチャートである。
【図14】バージョン管理データベースの一例を示している。
【図15】(A) および(B) は従来のLZ方式にもとづくデータ圧縮の考え方を示すもので,(A) は圧縮対象の文字列を,(B) は圧縮処理後のデータ列をそれぞれ示している。
【図16】(A) から(G) は従来のLZ方式にもとづくデータ圧縮の具体的な処理の流れを示している。
【図17】(A) から(F) は従来のLZ方式にもとづくデータ圧縮の具体的な処理の流れを示している。
【符号の説明】
1 ネットワーク
2 サーバ・コンピュータ
3 ビデオ・ゲーム装置
51,61 CPU
59,66 ハードディスク
【技術分野】
この発明は,データ圧縮方法および装置に関する。
【0002】
【従来例】
図15(A),(B)を参照して,LZ(Lempel-Ziv)方式に基づくデータ圧縮の基本的な考え方を説明する。LZ方式に基づくデータ圧縮では,データ列中に繰返し現れるデータ列の一部を利用し,元データを復元できるようにデータ列を圧縮する。
【0003】
非圧縮データ列が,文字列「An outcry in Spain is an outcry in vain」 (図15(A) 参照)であるとする(スペースも文字として扱う)。この文字列を先頭から順に見ていくと,「Spain 」に含まれる「in 」 (iと,nと,スペースの3文字)という文字列は,先行する文字列「An outcry in 」に含まれる「in 」と一致する文字列である。同様に,「・・・is an outcry in vain」に含まれる「n outcry in 」 は,先行する「An outcry in 」中の「n outcry in 」と一致する文字列である。最後の「vain」に含まれる「ain」は,先行する「Spain」に含まれる「ain」と一致する文字列である。
【0004】
先行する文字列を有する文字列,上述の例の場合は,「in 」,「n outcry in」および「ain」のそれぞれが,先行する文字列の位置によって表わされる。
【0005】
先行する文字列の位置を,たとえば,「<−6,3>」のように表す。<−6,3>は,6文字分文字列を遡って3文字分の文字列であることを意味する。
【0006】
図15(A)において,先行する文字列を有する文字列(「in 」,「n outcry in 」および「ain」)について上述のように「<>」を用いて表すと,図15(A)の文字列は,「An outcry in Spa<-6,3>is a <-22,12>v<-21,3>」(図15(B))のように表すことができる。
【0007】
1文字分のビット数を8ビットとすると,図15(A) の文字列には39文字(スペースも1文字としてカウントする)が含まれているので,8×39=312 ビットのデータ量となる。図15(B) において3つの「<○,○>」の部分のビット数を,たとえばそれぞれ13ビットとする(図15(A) の文字列を最大に遡るときに39文字分戻るので,遡る39文字分の文字数をカウントするために6ビットが必要,39文字分文字列を遡った場合に,39文字分(最大値)をカウントするためにさらに6ビットが必要,「<○,○>」であることを示すために1ビットを必要とすると,6+6+1=13ビットのデータ量が必要となる)。図15(B) の文字列には,21文字分の文字と,3つの「<○,○>」を含むので,データ量は8×21+13×3=168+39=207ビットのデータ量となる。312ビットのデータ量のデータが207ビットのデータ量のデータによって表されている。すなわち,図15(B) の文字列は,図15(A) の文字列の約60%程度のデータ量に圧縮されている。
【0008】
図15(B)の文字列(圧縮データ列)を伸長する場合には,図15(B)の文字列を先頭から見ていき,<-6,3>の部分は,6文字分文字列を遡って3文字分の文字列(in ) に置換する。次に<-22,12>の部分は,22文字分文字列を遡って12文字分の文字列(n outcry in ) に置換する。さらに<-21,3>の部分は,21文字分文字列を遡って3文字分の文字列(ain)に置換する。図15(A)と同じ文字列に戻る。このように,図15(B)(圧縮データ列)から図15(A)(非圧縮データ列)を完全に復元することができるので,LZ方式のデータ圧縮は可逆的な圧縮方式である。
【0009】
LZ方式のさらなる特徴として,圧縮の対象となる文字列と,その文字列と比較される先行する文字列とが,非圧縮データ中の一定量(一定文字数)について設定される点があげられる。
【0010】
図16および図17を用いて,LZ方式のデータ圧縮をさらに説明する。
【0011】
圧縮の対象となる文字列部分を5文字分とし,比較される先行する文字列部分も5文字分とする。圧縮の対象となる文字列部分および比較される先行する文字列部分は,次に説明するように,圧縮処理中において文字列の後ろの向きに順次スライドしていく。以下,圧縮の対象となる文字列部分の範囲を「圧縮対象窓」,比較される先行する文字列部分の範囲を「参照窓」と呼ぶ。図16および図17において,圧縮対象窓を実線によって,参照窓を破線によってそれぞれ枠で囲って示す。圧縮対象窓が位置する文字列の前の5文字分の範囲に,参照窓が位置する。
【0012】
圧縮対象の文字列(非圧縮データ列)を「12442623421234262342」とする。
【0013】
はじめに圧縮対象窓を圧縮対象文字列の先頭から5文字分に位置させる。参照窓は圧縮対象窓の前の5文字分の範囲に位置するので,初期状態では,参照窓には圧縮対象文字列中の文字は入っていない(図16(A) )。
【0014】
圧縮対象窓中の5文字のうちの先頭から5文字,先頭から4文字,先頭から3文字,先頭から2文字,先頭から1文字を,参照窓中の文字列によって表すことができるかどうかが判断される。具体的には「12442」と同じ文字列が参照窓中にあるか,「1244」と同じ文字列が参照窓中にあるか,「124」と同じ文字列が参照窓中にあるか,「12」と同じ文字列が参照窓中にあるか,「1」と同じ文字列が参照窓中にあるかが,順番に判断される。
【0015】
図16(A) では参照窓中に文字列がない。この場合には,符号化データとして圧縮対象窓中の先頭の1文字がそのまま用いられる。先頭の1文字が符号化データとされたので,圧縮対象窓と参照窓とがそれぞれ1文字分,文字列の後ろ向きにスライドする(図16(B) )。
【0016】
図16(D) を参照して,圧縮対象窓中の先頭の文字「4」は,参照窓中に存在する。圧縮対象窓中の先頭の文字「4」の位置を起点に,1文字分文字列を遡って1文字分を表す「<−1,1>」が,符号化データとして採用される。
【0017】
図17(B) を参照して,圧縮対象窓中の先頭から2文字分の「42」は,参照窓中に存在する。圧縮対象窓中の先頭の文字「4」の位置を起点に,5文字分遡って2文字分を表す「<−5,2>」が,符号化データとして採用される。
【0018】
同様に,図17(D) を参照して,圧縮対象窓中の先頭から4文字分の「2342」は,参照窓中に存在する。圧縮対象窓中の先頭の文字「2」の位置を起点に,5文字分遡って4文字分を表す「<−5,4>」が,符号化データとして採用される。
【0019】
上述のようにして,圧縮対象の文字列は,最終的には図17(F) に示す符号化データによって表される。
【0020】
LZ方式に基づくデータ圧縮を改良した方式,一例を挙げると,LZ方式のデータ圧縮を高速に処理するための装置および方法等も提案されている(たとえば,特許文献1参照)。いずれにしても,従来のLZ(Lempel-Ziv)方式に基づくデータ圧縮処理は,一つの文字列中においてその文字列を圧縮することを基本としている。
【0021】
【特許文献1】
特開平10−187410号公報
【0022】
【発明の開示】
この発明は,異なる2つの文字列を用いて,圧縮データを生成することを目的とする。
【0023】
この発明はさらに,更新前の文字列と,更新前の文字列の一部を更新した更新後の文字列とを用いて,圧縮データを生成することを目的とする。
【0024】
この発明によるデータ圧縮方法は,第1ファイル中の圧縮対象文字列(入力データ)と,上記圧縮対象文字列に先行する第1ファイル中の第1比較文字列(第1辞書データ)とを比較して一致する最長の文字列を検索し,一致する文字列が検索された場合に,上記第1比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第1符号化データを生成する。さらに,第1ファイル中の圧縮対象文字列と,第2ファイル中の第2比較文字列(第2辞書データ)とを比較して一致する最長の文字列を検索し,一致する文字列が検索された場合に,上記第2比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第2符号化データを生成する。そして,圧縮対象文字列中の一致文字列を第1符号化データまたは第2符号化データを用いて表した,第1ファイルの圧縮データを生成する。
【0025】
この発明によるデータ圧縮装置は,第1ファイル中の圧縮対象文字列(入力データ)と,上記圧縮対象文字列に先行する第1ファイル中の第1比較文字列(第1辞書データ)とを比較して一致する最長の文字列を検索する第1の検索手段,上記第1の検索手段によって一致する文字列が検索された場合に,上記第1比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第1符号化データを生成する第1符号化データ生成手段,第1ファイル中の圧縮対象文字列と,第2ファイル中の第2比較文字列(第2辞書データ)とを比較して一致する最長の文字列を検索する第2の検索手段,上記第2の検索手段によって一致する文字列が検索された場合に,上記第2比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第2符号化データを生成する第2符号化データ生成手段,ならびに圧縮対象文字列中の一致文字列を第1符号化データまたは第2符号化データを用いて表した第1ファイルの圧縮データを生成する圧縮データ生成手段を備えている。
【0026】
この発明によると,第1ファイル中に含まれる圧縮対象文字列と同じ文字列が,圧縮対象文字列に先行する第1比較文字列に含まれている場合に,第1比較文字列における一致文字列の位置を符号化した第1符号化データが生成される。さらに,圧縮対象文字列と同じ文字列が第2ファイル中の第2比較文字列に含まれている場合には,第2比較文字列における一致文字列の位置を符号化した第2符号化データが生成される。すなわち,この発明のデータ圧縮方法および装置では,従来のLZ方式によるデータ圧縮,すなわち第1ファイル中に含まれる先行する同一の文字列を利用したデータ圧縮に加えて,第2ファイル中に含まれる文字列を利用したデータ圧縮が行われる。
【0027】
この発明は,第1ファイルが第2ファイルの一部に追加,変更または削除(以下,「追加,変更または削除」を包括的に「更新」という)を施したファイルである場合に,その効果が一層高められる。第1ファイルが第2ファイルの一部を更新したものである場合,第1ファイルには第2ファイルに含まれる文字列と同じ(同一)の文字列を多く含んでいる。この発明によると,更新前の第2ファイル中の第2比較文字列が用いられて,一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第2符号化データが生成される。第1ファイルが第2ファイルの一部を更新したものである場合,文字列長が長い一致文字列について第2符号化データが生成される頻度が高い。生成される圧縮データの圧縮率を大幅に高めることができる。
【0028】
このようにこの発明によると,圧縮対象文字列中の一致文字列を第1符号化データまたは第2符号化データによって表した第1ファイルの圧縮データが生成される。第1符号化データは第1ファイル中の先行する文字列を用いた符号化データであるので,従来のLZ方式と同様に,第1ファイルのみによって第1符号化データから元の文字列を得ることができる。第2符号化データは,第2ファイル中の文字列を用いた符号化データであるので,第2符号化データから元の文字列を得る場合には第2ファイルが存在することが必要とされる。すなわち,この発明によって得られる第2符号化データを含む圧縮データは,第2ファイルが存在することを前提として伸張する(第1ファイルを得る)ことができるデータであると言える。
【0029】
一般的には,第1ファイルに含まれる文字列の一部が圧縮対象文字列とされ,第1ファイルに含まれる文字列の一部が第1比較文字列とされる。また,第2ファイルに含まれる文字列の一部が第2比較文字列とされる。好ましくは,圧縮対象文字列中の一致文字列について第1符号化データまたは第2符号化データが生成された場合,符号化された一致文字列の文字数分,圧縮対象文字列,第1比較文字列および第2比較文字列がスライド(シフト)する(スライディング・ウインドウ;動的辞書法)。第1ファイル中の新たな圧縮対象文字列と,新たな第1比較文字列および新たな第2比較文字列とが比較される(同一の文字列が存在するかどうかが判断される)。この処理を繰返すことによって,第1ファイルに含まれるすべての文字列について圧縮処理が施されることになる。この場合には,上記第1比較文字列における一致文字列の先頭の文字の位置および上記第2比較文字列における一致文字列の先頭の文字の位置には,上記圧縮対象文字列の位置に対する相対位置が用いられる。
【0030】
一実施態様では,上記圧縮対象文字列について第1符号化データと第2符号化データの両方が生成された場合には,第1比較文字列における一致文字列の文字列長と,第2比較文字列における一致文字列の文字列長とを比較し,文字列長が長い方についての第1符号化データまたは第2符号化データを用いて圧縮データを生成する。文字列長の長い一致文字列についての符号化データが用いられて圧縮データが生成されるので,高い圧縮率を実現することができる。文字列長が同じである場合には,第1符号化データおよび第2符号化データのいずれを用いても圧縮率は同じになるので,第1符号化データまたは第2符号化データのいずれか(いずれでもよい)を用いて圧縮データを生成する。
【0031】
この発明を次のように表現することもできる。この発明によるパッチ・データの生成方法は,旧ファイルと旧ファイルの一部を更新した新ファイルとに基づいてパッチ・データを生成する方法であって,新ファイル中の圧縮対象文字列と,上記圧縮対象文字列に先行する新ファイル中の第1比較文字列とを比較して一致する最長の文字列を検索し,一致する文字列が検索された場合に,上記第1比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第1符号化データを生成し,新ファイル中の圧縮対象文字列と,旧ファイル中の第2比較文字列とを比較して一致する最長の文字列を検索し,一致する文字列が検索された場合に,上記第2比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第2符号化データを生成し,圧縮対象文字列中の一致文字列を第1符号化データまたは第2符号化データを用いて表したパッチ・データを生成する。
【0032】
この発明によるパッチ・データ生成装置は,旧ファイルと旧ファイルの一部を更新した新ファイルとに基づいてパッチ・データを生成する装置であって,新ファイル中の圧縮対象文字列と,上記圧縮対象文字列に先行する新ファイル中の第1比較文字列とを比較して一致する最長の文字列を検索する第1の検索手段,上記第1の検索手段によって一致する文字列が検索された場合に,上記第1比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第1符号化データを生成する第1符号化データ生成手段,新ファイル中の圧縮対象文字列と,旧ファイル中の第2比較文字列とを比較して一致する最長の文字列を検索する第2の検索手段,上記第2の検索手段によって一致する文字列が検索された場合に,上記第2比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第2符号化データを生成する第2符号化データ生成手段,ならびに圧縮対象文字列中の一致文字列を第1符号化データまたは第2符号化データを用いて表したパッチ・データを生成するパッチ・データ生成手段を備えている。
【0033】
この発明によると,旧ファイルと旧ファイルを更新した新ファイルとに基づいてパッチ・データが生成される。パッチ・データは,旧ファイルの存在を前提に新ファイルを生成するためのデータである。すなわち,パッチ・データに含まれる第1符号化データおよび第2符号化データについて,第1符号化データであれば先行する新ファイル中の文字列に置換え,第2符号化データであれば旧ファイル中の文字列に置換えることによって,新ファイルを生成することができる。たとえば,旧ファイルが存在するが新ファイルは存在しないコンピュータにおいて,パッチ・データが取得されることによって新ファイルを生成することができる。このように,パッチ・データは旧ファイルを新ファイルに更新するためのデータであると言える。
【0034】
この発明は,上述のパッチ・データ生成装置によって生成されたパッチ・データを記憶する記憶手段を備えたサーバと,クライアントとがネットワークを介して相互に接続されるビデオ・ゲーム・システムにおいて用いられる上記サーバと,上記クライアント(ビデオ・ゲーム装置,パーソナル・コンピュータ等)も提供している。
【0035】
この発明によるビデオ・ゲーム・システムにおいて用いられるサーバは,上述のパッチ・データ生成装置によって生成されたパッチ・データを記憶する記憶手段を備え,クライアントから送信されるパッチ・データ送信要求に応答して,上記パッチ・データを上記クライアントに送信する送信手段を備えたものである。
【0036】
この発明によるビデオ・ゲーム・システムにおいて用いられるクライアントは,上記旧ファイルを記憶する記憶手段,パッチ・データ送信要求を上記サーバに送信する送信手段,上記サーバから送信される上記パッチ・データを受信する受信手段,および上記受信手段によって受信されたパッチ・データと記憶手段に記憶された上記旧ファイルとに基づいて,上記新ファイルを生成する手段を備えている。
【0037】
サーバは,クライアントからのパッチ・データ送信要求に応答して,クライアントにパッチ・データを送信する。クライアントは旧ファイルを記憶しているので,旧ファイルとサーバから送信されたパッチ・データとに基づいて新ファイルを得ることができる。パッチ・データのデータ量は新ファイルのデータ量に比べて格段にデータ量が少ないので,サーバからクライアントに新ファイルを送信する場合に比べて,少ないデータ通信量でサーバからクライアントにパッチ・データを送信することができる。データ伝送時間を大幅に短縮することができる。
【0038】
第1ファイル(新ファイル)中の先行する文字列(上述の第1比較文字列)を用いることなく,第2ファイル(旧ファイル)中の文字列(上述の第2比較文字列)のみを用いて符号化データを作成し,この符号化データを圧縮データに採用してもよい。この発明によるデータ圧縮方法は,第2ファイルの一部を更新した第1ファイル中の圧縮対象文字列と,上記第2ファイル中の比較文字列とを比較して一致する最長の文字列を検索し,一致する文字列が検索された場合に,上記比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した符号化データを生成し,圧縮対象文字列を符号化データを用いて表した第1ファイルの圧縮データを生成する。
【0039】
この発明によるデータ圧縮装置は,第2ファイルの一部を更新した第1ファイル中の圧縮対象文字列と,上記第2ファイル中の比較文字列とを比較して一致する最長の文字列を検索する検索手段,上記検索手段によって一致する文字列が検索された場合に,上記比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した符号化データを生成する符号化データ生成手段,および圧縮対象文字列を,上記符号化データ生成手段によって生成された符号化データを用いて表した第1ファイルの圧縮データを生成する圧縮データ生成手段を備えたものである。
【0040】
第1ファイルは第2ファイルの一部を更新したものであるので,生成される圧縮データに含まれる符号化データは一致文字長の長い文字列を表す頻度が高く,データ量の小さい圧縮データを得ることができる。
【0041】
この発明は,上述の圧縮データの生成をコンピュータに実行させるためのプログラムも提供している。
【0042】
【実施例の説明】
(1)パッチ・データ作成処理(圧縮処理)およびバージョン・アップ処理(伸張処理)
図1は,パッチ・データ作成処理(圧縮処理)とバージョン・アップ処理(伸張処理)を概念的に示すものである。
【0043】
この実施例における圧縮処理は,旧ファイルと新ファイルの2つのファイルを利用して,新ファイルを圧縮した圧縮データを作成する処理である。伸張処理は旧ファイルと上述の圧縮処理によって作成された圧縮データとを利用して,新ファイルを得るための処理である。
【0044】
圧縮処理によって作成される圧縮データは,旧ファイルを有し,かつ新ファイルを持たないコンピュータにおいて伸張処理によって新たに新ファイルを得るために用いられる。圧縮処理の対象とされる新ファイルは,一般には,旧ファイルの一部に追加,変更または削除(以下,追加,変更または削除を包括的に「更新」という)を施したものである。圧縮データは,旧ファイルから,旧ファイルを更新した新ファイルを得るために必要とされるデータと言える。以下の説明では,圧縮データを「パッチ・データ」と言うことにする。圧縮処理を「パッチ・データ作成処理」と言うことにする。
【0045】
伸張処理は,旧ファイルとパッチ・データとに基づいて新ファイルを得るための処理である。伸張処理は,旧ファイルを新ファイルに更新するための処理と言える。以下の説明では,伸張処理を「バージョン・アップ処理」ということにする。
【0046】
(i) パッチ・データ作成処理(圧縮処理)
図2はパッチ・データ作成処理の流れを示すフローチャートである。図3(A) 〜(D)および図4(A)〜(D) は,パッチ・データ作成処理の流れを,具体的に示すものである。
【0047】
パッチ・データ作成処理は,上述のように,旧ファイルと新ファイルの2つのファイルを利用してパッチ・データを作成する処理である。パッチ・データ作成処理はコンピュータによって実行される。パッチ・データ作成処理を実行するコンピュータには,旧ファイルと,新ファイルと,パッチ・データ作成プログラムがあらかじめ用意される。
【0048】
パッチ・データ作成処理は,新ファイルの文字列中に繰返し出現する文字列と,旧ファイル中に出現する新ファイルと同じ文字列とを利用して,新ファイルの文字列を圧縮する処理である。後述するように,パッチ・データ作成処理では,新ファイルに含まれる文字列のうちの一部についての圧縮が連続して行われる。この実施例では,新ファイル中に含まれる文字列のうち圧縮処理の対象となる文字列部分を5文字分とする。また後述するように,圧縮処理対象の文字列部分は,同じ新ファイル中の先行する文字列部分と比較される。比較される先行する文字列部分も5文字分とする。新ファイルにおいて圧縮処理対象となる文字列部分の範囲を「圧縮対象窓」,比較される先行する文字列部分の範囲を「第1参照窓」と呼ぶ。
【0049】
旧ファイル中にも,圧縮処理対象の文字列部分と比較される文字列部分が設けられる。旧ファイルにおいて比較される文字列部分の範囲を「第2参照窓」と呼ぶ。第2参照窓の範囲は10文字分とする。
【0050】
後述するように,圧縮対象窓,第1参照窓,第2参照窓は,文字列の後ろ向きに順次スライドする。圧縮対象窓がスライドすることによって,新ファイル中のすべての文字列について圧縮処理が施される。
【0051】
図3および図4を参照して具体的に説明する。旧ファイルを「12445423430234262342」とする。新ファイルを「12442623421234262342」とする。
【0052】
はじめに,圧縮対象窓を新ファイルの先頭から5文字分「12442」に位置させる。第1参照窓は圧縮対象窓の前の5文字分に位置させる(初期状態において,第1参照窓には新ファイル中の文字列は入っていない)。さらに,旧ファイルにおいて10文字分の第2参照窓を位置させる。第2参照窓の位置は,第1参照窓および圧縮対象窓を合わせた位置と同じ位置とする(図3(A) )。コンピュータ処理の観点から言えば,コンピュータのメモリのバッファ・エリアに,圧縮対象窓中の文字列,第1参照窓中の文字列,第2参照窓中の文字列が記憶される(ステップ11)。
【0053】
はじめに,圧縮対象窓中の5文字分の文字列「12442」のうち,先頭から5文字「12442」,4文字「1244」,3文字「124」,2文字「12」,1文字「1」と一致する文字列が,第1参照窓の文字列に含まれているかどうか順次検索される(ステップ12)。
【0054】
圧縮対象窓中の文字列と一致する文字列が第1参照窓に含まれている場合には(ステップ13でYES ),一致する文字列が符号化データによって表される(詳しくは,後述する)。第1参照窓中の文字列が用いられて作成された符号化データを「符号化データA」と呼ぶ。符号化データAはコンピュータのメモリに一時的に記憶される。
【0055】
図3(A) の例では,第1参照窓中に文字列がないので圧縮対象窓中の文字列と一致する文字列は第1参照窓中の文字列には含まれていない(ステップ13でNO)。
【0056】
次に,圧縮対象窓中の5文字分の文字列のうち,先頭から5文字,4文字,3文字,2文字,1文字と一致する文字列が,第2参照窓の文字列に含まれているかどうか順次検索される(ステップ15)。
【0057】
図3(A) の例では,圧縮対象窓中の先頭から4文字「1244」が,第2参照窓中に存在する。旧ファイルの第2参照窓において「1244」の4文字分の位置を表す「<旧,0,4>」が符号化データとしてコンピュータのメモリに一時的に記憶される(ステップ16でYES ,ステップ17)。「<旧,0,4>」は,旧ファイルの第2参照窓中の文字列であって,0文字目の位置(圧縮対象用窓中の先頭の文字に対応する位置にある第2参照窓中の文字の位置)を起点にして,4文字分の文字列(すなわち「1244」;一致文字数は「4」)であることを表す。第2参照窓中の文字列が用いられて作成される符号化データを「符号化データB」と呼ぶ。
【0058】
符号化データAおよび/または符号化データBがメモリに一時的に記憶された場合には(ステップ18でYES ),第1参照窓中の文字列を用いた符号化データAと第2参照窓中の文字列を用いた符号化データBとにおいて,一致文字数(一致文字列長)が比較される(ステップ19)。符号化データAまたは符号化データBのうち,一致文字数がより多い方が符号化データとして採用される(ステップ21またはステップ22)。
【0059】
新ファイルのすべての文字列について圧縮処理を終えたかどうかが判断される(ステップ23)。圧縮処理すべき文字列が残っている場合には(ステップ23でNO),圧縮対象窓,第1参照窓および第2参照窓が文字列の後ろの方向にスライドする(ステップ24)。図3(A) の例の場合には,圧縮対象窓中の4文字分が符号化データとされたので,圧縮対象窓,第1参照窓および第2参照窓がそれぞれ4文字分,文字列の後ろ向きにスライドする(図3(B) )。
【0060】
新たに圧縮対象窓中に含まれるようになった5文字分の文字列について,上述と同様に,第1参照窓または第2参照窓中の文字列に同一の文字列が含まれているかどうかが判断される。
【0061】
図3(B) を参照して,圧縮対象窓中の5文字分の文字列「26234」のうち,先頭から5文字「26234」,4文字「2623」,3文字「262」,2文字「26」,1文字「2」と一致する文字列が,第1参照窓中の文字列にあるかどうかが順次判断され(ステップ12),さらに第2参照窓中の文字列にあるかどうかが順次判断される(ステップ15)。
【0062】
圧縮対象窓中の先頭の文字「2」は,第1参照窓および第2参照窓のいずれにも含まれている。符号化データAおよび符号化データBがメモリに一時的に記憶される。符号化データAの一致文字数と符号化データBの一致文字数が同じである場合には,第1参照窓中の文字列を用いた符号化データAが符号化データとして採用される(ステップ19でA≧B,ステップ21)(図2(B) において「<新,−3,1>」)。「<新,−3,1>」は,新ファイルの第1参照窓中の文字列であって,圧縮対象窓中の先頭の文字を起点にして3文字分文字列を遡って1文字分の文字列であることを意味する。
【0063】
符号化データよりも,圧縮対象窓中の文字列をそのまま用いた方がデータ量が少ないような場合には,圧縮対象窓中の文字列をそのまま用いるようにしてもよい。具体的に言うと,上述の例の場合には,<新,−3,1>を符号化データとする(「<新,−3,1>」によって文字列「2」を表す)のに代えて,文字列「2」を符号化データとして用いてもよい。
【0064】
圧縮対象窓中の1文字分が符号化データとされたので,圧縮対象窓,第1参照窓および第2参照窓がそれぞれ1文字分,文字列の後ろ向きにスライドする(ステップ24,図3(C) )。
【0065】
図3(C) を参照して,圧縮対象窓中の文字列「62342」,「6234」,「623」,「62」および「6」のいずれも第1参照窓および第2参照窓に含まれていない(ステップ18でNO)。この場合には圧縮対象窓中の先頭の1文字が符号化データとされる。すなわち,圧縮対象用窓中の文字列が「62342」の場合には,その先頭の文字「6」が符号化データとされる(ステップ20)。
【0066】
圧縮対象窓中の1文字分が符号化データとされたので,圧縮対象窓,第1参照窓および第2参照窓がそれぞれ1文字分,文字列の後ろ向きにスライドする(図3(D) )。
【0067】
図3(D) を参照して,圧縮対象窓中の文字列「23421」のうち,先頭の1文字「2」は第1参照窓中に含まれている(符号化データAは<旧,−5,1>または<旧,−2,1>)(ステップ13でYES )。符号化データA「<旧,−5,1>」または「<旧,−2,1>」がメモリに一時的に記憶される(ステップ14)。また,圧縮対象窓中の先頭から3文字「234」は,第2参照窓に含まれている(符号化データBは<旧,0,3>)(ステップ16でYES )。符号化データB「<旧,0,3>」がメモリに一時的に記憶される(ステップ17)。符号化データBの方が符号化データAよりも一致文字数は多いので,符号化データB「<旧,0,3>」が符号化データとして採用される(ステップ19でA<B,ステップ22)。圧縮対象窓,第1参照窓および第2参照窓がそれぞれ3文字分,文字列の後ろ向きにスライドする(図4(A) )。
【0068】
図4(A) を参照して,圧縮対象窓中の先頭の1文字「2」は,第1参照窓および第2参照窓のいずれにも含まれている。第1参照窓中の「2」の位置を表す符号化データが採用される(図4(A) において「<新,−5,1>」)(ステップ19でA≧B,ステップ21)。圧縮対象窓,第1参照窓および第2参照窓がそれぞれ1文字分,文字列の後ろ向きにスライドする(図4(B) )。
【0069】
図4(B) を参照して,圧縮対象窓中の「12342」,「1234」,「123」,「12」および「1」のいずれも第1参照窓および第2参照窓に含まれていない。符号化データとして圧縮対象窓中の先頭の1文字「1」が用いられる(ステップ18でNO,ステップ20)。圧縮対象窓,第1参照窓および第2参照窓がそれぞれ1文字分,文字列の後ろ向きにスライドする(図4(C) )。
【0070】
図4(C) を参照して,圧縮対象窓中の「23426」は第2参照窓中に含まれている。「<旧,0,5>」が符号化データとされる(ステップ19でA<B,ステップ22)。圧縮対象用窓,第1参照窓および第2参照窓がそれぞれ5文字分,文字列の後ろ向きにスライドする(図4(D) )。
【0071】
図4(D) を参照して,圧縮対象用窓中の「2342」は第1参照用窓にも,第2参照用窓にも含まれている。「<新,−5,4>」が符号化データとして採用される(ステップ19でA≧B,ステップ21)。
【0072】
新ファイル中のすべての文字列について圧縮処理が終了すると,パッチ・データ作成処理が終了する(ステップ23でYES )。図4(D) に示す符号化データが「パッチ・データ」である。
【0073】
1文字分のビット数を8ビットとすると,図3および図4に示す新ファイルには20文字含まれているので,8×20=160 ビットのデータ量となる。ここで,図4(D) のパッチ・データにおいて,符号化データ「<○,○,○>」の部分のビット数を,たとえば9ビットとする(第2参照窓において文字列の位置を表すのに4ビットが必要,最大5文字分をカウントするために3ビットが必要,「<>」であることを示すために1ビットが必要,新または旧(第1参照用窓中の文字列であるか,第2参照用窓中の文字列であるか)の区別に1ビットが必要とすると,4+3+1+1=9ビットのデータ量が必要となる)。図4(D) に示すパッチ・データには,2文字分の文字と,6つの「<○,○,○>」を含むので,データ量は8×2+6×9=70ビットのデータ量となる。パッチ・データは,新ファイルのデータ量の約40%程度のデータ量となる。
【0074】
(ii)バージョン・アップ処理(伸張処理)
バーション・アップ処理は,上述したように,旧ファイルとパッチ・データとを用いて,新ファイルを作成する処理である。図5は,図4(D) に示す旧ファイルとパッチ・データを用いて新ファイルを作成する処理を具体的に示すものである。バージョン・アップ処理は,バーション・アップ・プログラムを有するコンピュータにおいて実行される。バージョン・アップ・プログラムが実行されることによってバージョン・アップ処理が進行する。
【0075】
パッチ・データを先頭から見ていく。<旧,0,4>の部分は,旧ファイルの文字列の先頭から4文字分と置換される(「1244」)。<新,−3,1>は,作成途中の新ファイルにおいて3文字分遡って1文字分の文字列と置換される(「12442」)。次の「6」はそのまま「6」が用いられる(「124426」)。<旧,0,3>は,旧ファイルの文字列の0文字目から3文字分と置換される。6文字分まで新ファイルが完成しているので旧ファイルの文字列の0文字目は,旧ファイルの文字列のうち先頭から6文字分を除いた次の文字(7文字目)になる(「124426234」)。<新,−5,1>は,作成途中の新ファイルにおいて5文字分遡って1文字分の文字列と置換される(「1244262342」)。次の「1」はそのまま「1」が用いられる(「12442623421」)。<旧,0,5>は旧ファイルの文字列の0文字目(11文字分まで新ファイルが完成しているので,0文字目は旧ファイルの12文字目になる)から5文字分と置換される(「1244262342123426」)。<新,−5,4>は,作成途中の新ファイルにおいて5文字分遡って4文字分と置換される(「12442623421234262342」)。このようにして,旧ファイルとパッチ・データとから,新ファイルを得ることができる。
【0076】
旧ファイルと新ファイルの両方を有し,かつパッチデータ作成処理プログラムを有するコンピュータをコンピュータAとする。旧ファイルを有し,バージョン・アップ・プログラムを有するコンピュータをコンピュータBとする。上述のように,コンピュータAでは新ファイルと旧ファイルとに基づいてパッチ・データを作成することができる。コンピュータAからコンピュータBにパッチ・データを送信することによって,コンピュータBにおいてはバーション・アップ・プログラムによって新ファイルを得ることができる。上述のように,パッチ・データのデータ量は,新ファイルのデータ量よりも格段に少ない。新ファイルそのものをコンピュータAからコンピュータBに送信する場合に比べて,少ないデータ通信量でコンピュータBにおいて新ファイルを得ることができる。データ伝送時間を大幅に短縮することができる。
【0077】
(2)応用例
図6は,ネットワークを利用したビデオ・ゲーム・システムのブロック図を示している。このビデオ・ゲーム・システムは,上述のパッチ・データ作成処理およびバージョン・アップ処理を利用して,ユーザの所有するビデオ・ゲーム装置のハードディスクに記憶されているビデオ・ゲームを,バージョン・アップさせることができるシステムである。
【0078】
ネットワークを利用したビデオ・ゲーム・システムは,ネットワーク1と,サーバ・コンピュータ2(以下,サーバ2という)と,複数のビデオ・ゲーム装置3とから構成される。
【0079】
ネットワークを利用したビデオ・ゲーム・システムでは,後述するように,サーバ2においてビデオ・ゲームのためのプログラムまたはデータについてのバージョン・アップが行われた場合に,サーバ2において上述のパッチ・データ作成処理が行われ,パッチ・データが作成される。このパッチ・データがユーザの所有するビデオ・ゲーム装置3にネットワーク1を介して送信(配信)される。ビデオ・ゲーム装置3において,上述のバージョン・アップ処理が行われることによって,ビデオ・ゲーム装置3には最新のプログラムまたはデータが保存される。
【0080】
図7は,ビデオ・ゲーム装置3の全体的構成を示している。図8はビデオ・ゲーム装置3の電気的構成を示すブロック図である。
【0081】
ビデオ・ゲーム装置3は,ゲーム機本体31,表示画面上に現れるポインタ等を操作するためのコントローラ32,ゲームの進行状態等を記録するためのメモリ・カード33およびゲーム機本体から出力される画像データおよび音声データの入力を受付け,受付けた画像データによって表される画像を表示画面上に表示し,音声データによって表される音声をスピーカから出力する出力装置(スピーカを持つ表示装置等)34を含む。ゲーム機本体31の前端面には,ビデオ・ゲームのためのプログラムおよびデータ等が記録されたDVD−ROM(またはCD−ROM)(以下,単にDVDという)35を装填するためのディスク・トレイ36が設けられている。DVD35はこのディスク・トレイ36上に載置される。ディスク・トレイ36の右側には,リセット・ボタン37およびエジェクト・ボタン38が設けられている。リセット・ボタン37はゲーム機本体31のRAMを初期化する(リセットする)ために用いられる。エジェクト・ボタン38はディスク・トレイ36の開閉に用いられる。さらにゲーム機本体31の前端面には,メモリ・カード33を接続するためのメモリ・カード・スロット39,コントローラ32を接続するためのコントローラ・コネクタ40,外部機器等を接続するためのUSB(Universal Serial Bus)コネクタ41がそれぞれ2つずつ設けられている。図7では,メモリ・カード・スロット39にメモリ・カード33が,コントローラ・コネクタ40にコントローラ32が,それぞれ1つずつ接続されている。
【0082】
図8を参照して,ゲーム機本体31はCPU51を含む。CPU51はゲーム機本体31の動作を統括的に制御する。CPU51にはバス54を介して,ワーク・エリア,バッファ・エリア,カウンタ・エリア等を提供するRAM52,DVD35に記録されたプログラムおよびデータを読出すDVD−ROMドライブ53,DVD35,RAM52,ハードディスク59等に記憶されたサウンド・データを処理して出力装置34に出力するサウンド処理回路55,DVD35,RAM52,ハードディスク59等に記憶されたグラフィック・データを処理して出力装置34に出力するグラフィック処理回路56,ネットワーク1を通じてデータ等を送受信するための通信装置58とバス54との間,およびコントローラ32とバス54との間のデータの送受信を制御するインターフェース回路57,オペレーティング・システム,ブラウザ,ビデオ・ゲーム・プログラムおよびデータ,バージョン・アップ・プログラム等が記憶されたハードディスク(HD)59がそれぞれ接続されている。
【0083】
ハードディスク59に記憶されているビデオ・ゲーム・プログラムおよびデータは,DVD−ROMドライブ53によってDVD35から読取られてインストールされたものと,後述するようにして,ネットワーク1を介してサーバ2から送信されたパッチ・データを,バージョン・アップ・プログラムによって処理することによって得られるプログラムまたはデータを含む。
【0084】
図9は,サーバ2の電気的構成を示すブロック図である。
【0085】
サーバ2は,サーバ2を統括的に制御するCPU61を含む。CPU61にデータ入力等に用いられる入力装置(キーボード,マウス等)62,文字,画像等を可視的に出力する表示装置(LCDディスプレイ等)63,ワーク・エリア,バッファ・エリア等を提供するメモリ64,ネットワーク1を通じてデータ等を送受信するための通信装置65,ならびにプログラムおよびデータを記憶するハードディスク66が接続されている。
【0086】
ハードディスク66には,ビデオ・ゲームのためのプログラムおよびデータと,パッチ・データと,パッチ・データ作成プログラムとが記憶されている。
【0087】
ビデオ・ゲームのためのプログラムおよびデータは,複数のプログラム・ファイルおよびデータ・ファイルによって構成される。一般的には,ハードディスク66には,複数の種類のビデオ・ゲームのそれぞれについて複数のプログラム・ファイルおよびデータ・ファイルが記憶されているが,説明を簡単にするために,この実施例では,一種類のビデオ・ゲーム(以下,「コンテンツA」と呼ぶ)のためのプログラム・ファイルおよびデータ・ファイルが記憶されているものとする。
【0088】
さらに,ハードディスク66には,一つのコンテンツAについて,異なるバージョンのものが記憶されている。すなわち,サーバ2において,コンテンツAに含まれる複数のプログラム・ファイルおよびデータ・ファイルのうち,一または複数のプログラム・ファイルおよびデータ・ファイルについて修正,追加,削除等(更新)が行われる(バージョン・アップ)と,更新前のコンテンツAと,更新後のコンテンツAとがハードディスク66に記憶される。コンテンツAはバージョン番号を持つ。更新が行われる度にコンテンツAのバージョンがインクリメントされる(バージョン1からバージョン2へのバージョン・アップ,バージョン2からバージョン3へのバージョン・アップ等)。
【0089】
コンテンツAについてバージョン・アップが行われると,更新されたファイル(プログラム・ファイルおよび/またはデータ・ファイル)と,更新前のファイルとが用いられて,パッチ・データが作成される。パッチ・データの作成は,ハードディスク66に記憶されたパッチ・データ作成プログラムの処理にもとづく。サーバ2において実行されるパッチ・データ作成プログラムの処理は,図2を参照して説明した処理と同じ処理である。作成されたパッチ・データもハードディスク66に記憶される。
【0090】
図10は,ネットワークを用いたビデオ・ゲーム・システムにおけるビデオ・ゲーム装置3とサーバ2のそれぞれの処理と,これらの間のデータ通信の流れを示すフローチャートである。図10に示す処理のためのプログラムおよびデータは,ビデオ・ゲーム装置3とサーバ2のそれぞれにあらかじめ記憶されているものとする。
【0091】
ユーザの所有するビデオ・ゲーム装置3のゲーム機本体31に内蔵されているハードディスク59には,ビデオ・ゲーム(コンテンツAとする)のためのプログラム・ファイルおよびデータ・ファイルが記憶されているものとする。すなわち,ユーザは,コンテンツAのプログラム・ファイルおよびデータ・ファイルが記録されたDVD35を購入し,購入したDVD35をDVD−ROMドライブ53に装着する。DVD35に記録されているコンテンツAのプログラム・ファイルおよびデータ・ファイルがDVD−ROMドライブ53によって読出され,ビデオ・ゲーム装置3のハードディスク59にインストールされる。
【0092】
また,ビデオ・ゲーム装置3のユーザには,サーバ2の管理者(たとえば,コンテンツAを提供する企業)からあらかじめIDとパスワードを付与されているものとする。ユーザに付与されたIDおよびパスワードも,ビデオ・ゲーム装置3のハードディスク59に記憶されているものとする。
【0093】
ユーザがビデオ・ゲーム装置3のゲーム機本体31の電源をオンし,所定の操作を行うと,ハードディスク59に記憶されているIDとパスワードが,ネットワーク1を介してビデオ・ゲーム装置3からサーバ2に送信される(ステップ71)。サーバ2においてIDおよびパスワードを用いたユーザ認証が行われる(ステップ91)。
【0094】
ビデオ・ゲーム装置3の出力装置34の表示画面上には,ハードディスク59に記憶されているビデオ・ゲームの名称が一覧に表示される。ハードディスク59の複数の種類のビデオ・ゲームのためのプログラム・ファイルおよびデータ・ファイルが記憶されている場合には,複数のビデオ・ゲームの名称が表示画面上に表示される。ユーザはプレイしようとしているゲームの名称を,コントローラ32を用いて選択する(ステップ72)。
【0095】
ビデオ・ゲーム装置3のハードディスク59に記憶されているビデオ・ゲーム(ビデオ・ゲームのためのプログラム・ファイルおよびデータ・ファイルの少なくとも一つ)には,バージョン情報が記憶されている。ユーザがコントローラ32を用いてゲームの名称を選択すると,選択されたビデオ・ゲームの種類を表すデータと,そのバージョン情報とが,ネットワーク1を通じてビデオ・ゲーム装置3からサーバ2に送信される(ステップ73)。
【0096】
サーバ2はビデオ・ゲーム装置3からビデオ・ゲームの種類とそのバージョン情報を受信すると,ビデオ・ゲーム装置3のハードディスク59に記憶されている選択されたビデオ・ゲーム(コンテンツAとする)についてのバージョンが,最新のバージョンであるかどうかを判断する(ステップ92)。最新バージョンであるか,または古いバージョン(最新ではないバージョン)であるかを表すデータ(比較結果)が,サーバ2からビデオ・ゲーム装置3に送信される(ステップ93)。
【0097】
ビデオ・ゲーム装置3において,ビデオ・ゲーム装置3のハードディスク59に記憶されているコンテンツAのバージョンが最新バージョンである旨のデータを受信した場合には(ステップ74でYES ),ビデオ・ゲーム装置3の出力装置34の表示画面上に最新バージョンである旨を表すメッセージが表示され(ステップ75),その後コンテンツAのビデオ・ゲームがスタートする(ステップ82)。サーバ2において,バージョン・アップのための処理は行われない(ステップ94でNO)。
【0098】
ビデオ・ゲーム装置3のハードディスク59に記憶されているコンテンツAのバージョンが最新ではない旨のデータを受信した場合には(ステップ74でNO),ビデオ・ゲーム装置3の表示画面には,バージョン・アップを行う旨のメッセージが表示される(ステップ76)。
【0099】
サーバ2において,ユーザのビデオ・ゲーム装置3のハードディスク59に記憶されているコンテンツAのバージョンが最新のものでないことが判断されると(ステップ94でYES ),サーバ2はバージョン・アップに必要なデータ量をビデオ・ゲーム装置3に送信する(ステップ95)。
【0100】
バージョン・アップに必要なデータ量を表すデータを受信したビデオ・ゲーム装置3では,ハードディスク59の空き容量が十分であるかどうかを判断する(ステップ77)。
【0101】
バージョン・アップに必要とされる十分な空き容量がビデオ・ゲーム装置3のハードディスク59に残っていない場合には(ステップ77でNG),ビデオ・ゲーム装置3の表示画面上にハードディスク59の空き容量が不足している旨のメッセージが表示される(ステップ79)。その後,古いバージョンのコンテンツAのビデオ・ゲームがスタートする(ステップ82)。ハードディスク59に記憶されている不必要なファイルの削除またはハードディスクの追加等をユーザに勧めるメッセージを,表示画面上に表示してもよい。
【0102】
ハードディスク59の空き容量が十分にある場合(ステップ77でOK),ビデオ・ゲーム装置3からサーバ2にパッチ・データの送信要求が送信される(ステップ78)。パッチ・データの送信要求を受信したサーバ2は,バージョン・アップに必要なパッチ・データをビデオ・ゲーム装置3に送信する(ステップ96でYES ,ステップ97)。パッチ・データの送信要求を所定の時間内に受信しなかった場合には,サーバ2はバージョン・アップのための処理を終了する(ステップ96でNO)。
【0103】
パッチ・データを受信したビデオ・ゲーム装置3では,バージョン・アップ・プログラムが起動し,バージョン・アップ処理が実行される(ステップ80)。バージョン・アップ処理は,図5を参照して説明した処理と同じ処理である。
【0104】
図11は,バージョン・アップ処理におけるサーバ・コンピュータ2およびビデオ・ゲーム装置3の処理と,これらの間のデータの流れとを,分かりやすく示すものである。
【0105】
サーバ2は,コンテンツA(バージョン1)とコンテンツA(バージョン2)の異なる2つのバージョンのコンテンツAをハードディスク66に記憶しているものとする。コンテンツA(バージョン1)は,ファイルa,ファイルb,ファイルc,ファイルdおよびファイルeの5つのファイルを含む。コンテンツA(バージョン2)は,ファイルa,ファイルb,ファイルc’,ファイルdおよびファイルeの5つのファイルを含む。すなわち,コンテンツA(バージョン2)は,コンテンツA(バージョン1)のファイルcが,ファイルc’に置き換えられたものである。
【0106】
他方,ビデオ・ゲーム装置3のハードディスク59にはコンテンツA(バージョン1)(ファイルa,ファイルb,ファイルc,ファイルdおよびファイルe)が記憶されている。ここでユーザがビデオ・ゲーム装置3の電源をオンとし,プレイするゲームとしてコンテンツAを選択すると,パッチ・データ送信要求がビデオ・ゲーム装置3からサーバ2に送信される。サーバ2のハードディスク66には,ファイルcとファイルc’とに基づいてパッチ・データ作成プログラムにしたがって作成されたパッチ・データx(符号100 で示す)が記憶されている。パッチ・データ送信要求の受信に応じて,パッチ・データxがサーバ2からビデオ・ゲーム装置3に送信される。もちろん,パッチ・データ送信要求を受信するたびに,サーバ2においてパッチ・データを作成するようにしてもよい。
【0107】
図12はパッチ・データのデータ構造を概念的に示している。パッチ・データ100 は,パッチ・データ本体と,ファイル名(ヘッダ情報)とを含む。ファイル名は,パッチ・データの作成に用いられた旧ファイル(更新前のファイル)のファイル名である。図11に示す例の場合には,ファイル名の部分には「ファイルc」が記述される。
【0108】
ビデオ・ゲーム装置3では,サーバ2から受信したパッチ・データxに含まれるファイル名(ファイルc)に基づいて,バージョン・アップすべきファイルcをRAM52に読出す。RAM52に読出されたファイルcとパッチ・データxのパッチ・データ本体とに基づいてバージョン・アップ処理が実行される。新たにファイルc’が作成される。作成されたファイルc’がコンテンツAに組込まれる。ファイルa,ファイルb,ファイルc’,ファイルdおよびファイルeから構成されるコンテンツA(バージョン2)が,ビデオ・ゲーム装置3のハードディスクに保存される。バージョン情報(ファイルa,b,c’,dまたはeのいずれかに記述されている,バージョン情報のみが記述されたファイルをコンテンツAに含ませておいてもよい)が,バージョン1からバージョン2に書替えられる。ファイルc(旧ファイル)は,一般にはビデオ・ゲーム装置3のハードディスク59から削除される。
【0109】
図10に戻って,バージョン・アップが成功すると,正常にバージョン・アップが終了した旨を表すデータがビデオ・ゲーム装置3からサーバ2に送信される(ステップ81)。その後,ビデオ・ゲーム装置3において最新バージョンのコンテンツAのビデオ・ゲームがスタートする(ステップ82)。
【0110】
このように,ネットワークを用いたビデオ・ゲーム・システムでは,ビデオ・ゲーム装置3のハードディスク59に記憶されているビデオ・ゲームのバージョン・アップ(旧ファイルのバージョン・アップ)に必要なパッチ・データが,ネットワーク1を介してサーバ2から送信される。ビデオ・ゲーム装置3では旧ファイルとパッチ・データに基づいて新ファイルが作成されてバージョン・アップが完了する。パッチ・データのデータ量は新ファイルに比べて格段にデータ量が少ないので,新ファイルそのものをサーバ2からビデオ・ゲーム装置3に送信する場合に比べてデータ通信量を少なくすることができ,短い時間でデータ通信を終えることができる。
【0111】
(3)変形例
図13は,図10に示すビデオ・ゲーム装置3とサーバ2のそれぞれの処理と,これらの間のデータ通信の流れを示すフローチャートの変形例を示すものである。図10のフローチャートと同じ処理には同一の符号を付し,重複する説明を避ける。図14は,変形例において,サーバ2のハードディスク66に記憶されるデータベース(バージョン管理データベース101 )の一例を示している。サーバ2のハードディスク66にバージョン管理データベース101 が記憶されている点を除き,サーバ2の構成は上述の図9と同じである。ビデオ・ゲーム装置3についても上述の図7および図8と同じ構成を持つ。
【0112】
サーバ2のハードディスク59に記憶されているバージョン管理データベース101 は,ユーザID,パスワード,ユーザ氏名,ビデオ・ゲーム名およびバージョン番号に関するデータが記憶されている。ユーザが所有するビデオ・ゲームごとに,そのビデオ・ゲームのバージョンがサーバ2において管理される。
【0113】
ビデオ・ゲーム装置3からIDおよびパスワード,ならびに選択されたビデオ・ゲームの種類を表すデータがサーバ2に送信されると(ステップ71,72),サーバ2はバージョン管理データベース101 をアクセスして,IDおよびパスワードによって特定されるユーザが選択したビデオ・ゲームのバージョン情報を取得する。選択されたビデオ・ゲームが最新バージョンであるかどうかが判断される(ステップ92A)。
【0114】
バージョン・アップが正常終了した旨のデータをサーバ2が受信すると,サーバ2ではバージョン管理データベース101 に格納されているバージョン番号を新たなバージョン番号に更新する(ステップ78)。このようにして,ユーザが所有するビデオ・ゲーム装置3のハードディスク59に記憶されているビデオ・ゲームのバージョンがサーバ2において管理される。
【0115】
ユーザが所有するビデオ・ゲーム装置3に,2つ前,3つ前のバージョンのコンテンツが記憶されている場合,たとえば,コンテンツの最新バージョンがバージョン4であり,ビデオ・ゲーム装置3にはバージョン1のコンテンツが記憶されている場合には,上述のバージョン・アップ処理を複数回繰返すことによって,すなわち,バージョン1をバージョン2にバージョン・アップし,バージョン2をバージョン3にバージョン・アップし,さらにバージョン3をバージョン4にバージョン・アップすることによって,ビデオ・ゲーム装置3のコンテンツを最新バージョンとすることができる。もちろん,バージョン1のコンテンツとバージョン4のコンテンツとを用いて,バージョン1からバージョン4へのバージョン・アップを行うためのパッチ・データをサーバ2において作成して,ビデオ・ゲーム装置3に送信するようにしてもよい。1回のバージョン・アップ処理によって,バージョン1からバージョン4へのバージョン・アップを図ることができる。
【図面の簡単な説明】
【図1】パッチ・データ作成処理(圧縮処理)とバージョン・アップ処理(伸張処理)を概念的に示している。
【図2】パッチ・データ作成処理の流れを示すフローチャートである。
【図3】(A) から(D) はパッチ・データ作成処理の流れを具体的に示している。
【図4】(A) から(D) はパッチ・データ作成処理の流れを具体的に示している。
【図5】バージョン・アップ処理の流れを具体的に示している。
【図6】ネットワークを利用したビデオ・ゲーム・システムのブロック図である。
【図7】ビデオ・ゲーム装置の全体的構成を示している。
【図8】ビデオ・ゲーム装置の電気的構成を示すブロック図である。
【図9】サーバの電気的構成を示すブロック図である。
【図10】ビデオ・ゲーム装置とサーバとの間のデータ通信の流れを示すフローチャートである。
【図11】サーバにおいて実行されるパッチ・データ作成処理およびビデオ・ゲーム装置において実行されるバージョン・アップ処理の様子を示している。
【図12】パッチ・データのデータ構造の一例を示している。
【図13】ビデオ・ゲーム装置とサーバとの間のデータ通信の流れの他の例を示すフローチャートである。
【図14】バージョン管理データベースの一例を示している。
【図15】(A) および(B) は従来のLZ方式にもとづくデータ圧縮の考え方を示すもので,(A) は圧縮対象の文字列を,(B) は圧縮処理後のデータ列をそれぞれ示している。
【図16】(A) から(G) は従来のLZ方式にもとづくデータ圧縮の具体的な処理の流れを示している。
【図17】(A) から(F) は従来のLZ方式にもとづくデータ圧縮の具体的な処理の流れを示している。
【符号の説明】
1 ネットワーク
2 サーバ・コンピュータ
3 ビデオ・ゲーム装置
51,61 CPU
59,66 ハードディスク
Claims (16)
- 第1ファイル中の圧縮対象文字列と,上記圧縮対象文字列に先行する第1ファイル中の第1比較文字列とを比較して一致する最長の文字列を検索し,一致する文字列が検索された場合に,上記第1比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第1符号化データを生成し,
第1ファイル中の圧縮対象文字列と,第2ファイル中の第2比較文字列とを比較して一致する最長の文字列を検索し,一致する文字列が検索された場合に,上記第2比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第2符号化データを生成し,
圧縮対象文字列中の一致文字列を第1符号化データまたは第2符号化データを用いて表した,第1ファイルの圧縮データを生成する,データ圧縮方法。 - 第1符号化データまたは第2符号化データによって表された一致文字列の文字数分,圧縮対象文字列,第1比較文字列および第2比較文字列をそれぞれスライドする,請求項1に記載のデータ圧縮方法。
- 上記第1比較文字列における一致文字列の先頭の文字の位置および上記第2比較文字列における一致文字列の先頭の文字の位置は,上記圧縮対象文字列の位置に対する相対位置である,請求項2に記載のデータ圧縮方法。
- 上記圧縮対象文字列について第1符号化データと第2符号化データの両方が生成された場合に,第1比較文字列における一致文字列の文字列長と,第2比較文字列における一致文字列の文字列長とを比較し,
文字列長が長い方についての第1符号化データまたは第2符号化データを用いて圧縮データを生成し,
文字列長が同じである場合には,第1符号化データまたは第2符号化データのいずれかを用いて圧縮データを生成する,請求項1から3のいずれか一項に記載のデータ圧縮方法。 - 第1ファイル中の圧縮対象文字列と,上記圧縮対象文字列に先行する第1ファイル中の第1比較文字列とを比較して一致する最長の文字列を検索する第1の検索手段,
上記第1の検索手段によって一致する文字列が検索された場合に,上記第1比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第1符号化データを生成する第1符号化データ生成手段,
第1ファイル中の圧縮対象文字列と,第2ファイル中の第2比較文字列とを比較して一致する最長の文字列を検索する第2の検索手段,
上記第2の検索手段によって一致する文字列が検索された場合に,上記第2比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第2符号化データを生成する第2符号化データ生成手段,ならびに
圧縮対象文字列中の一致文字列を第1符号化データまたは第2符号化データを用いて表した第1ファイルの圧縮データを生成する圧縮データ生成手段を備えた,データ圧縮装置。 - 第1符号化データまたは第2符号化データによって表された一致文字列の文字数分,圧縮対象文字列,第1比較文字列および第2比較文字列をスライドする手段を備えた,請求項5に記載のデータ圧縮装置。
- 上記第1比較文字列における一致文字列の先頭の文字の位置および上記第2比較文字列における一致文字列の先頭の文字の位置は,上記圧縮対象文字列の位置に対する相対位置である,請求項6に記載のデータ圧縮装置。
- 上記圧縮対象文字列について第1符号化データと第2符号化データの両方が生成された場合に,第1比較文字列における一致文字列の文字列長と,第2比較文字列における一致文字列の文字列長とを比較する比較手段をさらに備え,
上記圧縮データ生成手段は,
上記比較手段によって一致文字列の文字列長が長いと判定された方についての第1符号化データまたは第2符号化データを用いて圧縮データを生成し,
上記比較手段によって一致文字列の長さが同じと判定された場合には,第1符号化データまたは第2符号化データのいずれかを用いて圧縮データを生成する,請求項5から7のいずれか一項に記載のデータ圧縮装置。 - 第1ファイル中の圧縮対象文字列と,上記圧縮対象文字列に先行する第1ファイル中の第1比較文字列とを比較して一致する最長の文字列を検索させ,一致する文字列が検索された場合に,上記第1比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第1符号化データを生成させ,
第1ファイル中の圧縮対象文字列と,第2ファイル中の第2比較文字列とを比較して一致する最長の文字列を検索させ,一致する文字列が検索された場合に,上記第2比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第2符号化データを生成させ,
圧縮対象文字列中の一致文字列を第1符号化データまたは第2符号化データを用いて表した第1ファイルの圧縮データを生成させるようにコンピュータを制御する,データ圧縮プログラム。 - 第2ファイルの一部を更新した第1ファイル中の圧縮対象文字列と,上記第2ファイル中の比較文字列とを比較して一致する最長の文字列を検索し,
一致する文字列が検索された場合に,上記比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した符号化データを生成し,
圧縮対象文字列を符号化データを用いて表した第1ファイルの圧縮データを生成する,データ圧縮方法。 - 第2ファイルの一部を更新した第1ファイル中の圧縮対象文字列と,上記第2ファイル中の比較文字列とを比較して一致する最長の文字列を検索する検索手段,
上記検索手段によって一致する文字列が検索された場合に,上記比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した符号化データを生成する符号化データ生成手段,および
圧縮対象文字列を,上記符号化データ生成手段によって生成された符号化データを用いて表した第1ファイルの圧縮データを生成する圧縮データ生成手段を備えた,データ圧縮装置。 - 第2ファイルの一部を更新した第1ファイル中の圧縮対象文字列と,上記第2ファイル中の比較文字列とを比較して一致する最長の文字列を検索させ,
一致する文字列が検索された場合に,上記比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した符号化データを生成させ,
圧縮対象文字列を符号化データによって表した第1ファイルの圧縮データを生成させるようにコンピュータを制御する,データ圧縮プログラム。 - 旧ファイルと旧ファイルの一部を更新した新ファイルとに基づいてパッチ・データを生成する方法であって,
新ファイル中の圧縮対象文字列と,上記圧縮対象文字列に先行する新ファイル中の第1比較文字列とを比較して一致する最長の文字列を検索し,一致する文字列が検索された場合に,上記第1比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第1符号化データを生成し,
新ファイル中の圧縮対象文字列と,旧ファイル中の第2比較文字列とを比較して一致する最長の文字列を検索し,一致する文字列が検索された場合に,上記第2比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第2符号化データを生成し,
圧縮対象文字列中の一致文字列を第1符号化データまたは第2符号化データを用いて表したパッチ・データを生成する,パッチ・データ生成方法。 - 旧ファイルと旧ファイルの一部を更新した新ファイルとに基づいてパッチ・データを生成する装置であって,
新ファイル中の圧縮対象文字列と,上記圧縮対象文字列に先行する新ファイル中の第1比較文字列とを比較して一致する最長の文字列を検索する第1の検索手段,
上記第1の検索手段によって一致する文字列が検索された場合に,上記第1比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第1符号化データを生成する第1符号化データ生成手段,
新ファイル中の圧縮対象文字列と,旧ファイル中の第2比較文字列とを比較して一致する最長の文字列を検索する第2の検索手段,
上記第2の検索手段によって一致する文字列が検索された場合に,上記第2比較文字列における一致文字列の先頭の文字の位置と一致文字列の文字列長を符号化した第2符号化データを生成する第2符号化データ生成手段,ならびに
圧縮対象文字列中の一致文字列を第1符号化データまたは第2符号化データを用いて表したパッチ・データを生成するパッチ・データ生成手段を備えた,
パッチ・データ生成装置。 - 請求項14に記載のパッチ・データ生成装置によって生成されたパッチ・データを記憶する記憶手段を備えたサーバと,クライアントとがネットワークを介して相互に接続されるビデオ・ゲーム・システムにおいて用いられる上記サーバであって,
クライアントから送信されるパッチ・データ送信要求に応答して,上記パッチ・データを上記クライアントに送信する送信手段を備えている,サーバ。 - 請求項14に記載のパッチ・データ生成装置によって生成されたパッチ・データを記憶する記憶手段を備えたサーバと,クライアントとがネットワークを介して相互に接続されるビデオ・ゲーム・システムにおいて用いられる上記クライアントであって,
上記旧ファイルを記憶する記憶手段,
パッチ・データ送信要求を上記サーバに送信する送信手段,
上記サーバから送信される上記パッチ・データを受信する受信手段,および
上記受信手段によって受信されたパッチ・データと記憶手段に記憶された上記旧ファイルとに基づいて,上記新ファイルを生成する手段を備えている,
クライアント。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002369101A JP2004201144A (ja) | 2002-12-20 | 2002-12-20 | データ圧縮方法および装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002369101A JP2004201144A (ja) | 2002-12-20 | 2002-12-20 | データ圧縮方法および装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004201144A true JP2004201144A (ja) | 2004-07-15 |
Family
ID=32765426
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002369101A Pending JP2004201144A (ja) | 2002-12-20 | 2002-12-20 | データ圧縮方法および装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004201144A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016514393A (ja) * | 2013-02-13 | 2016-05-19 | オートデスク,インコーポレイテッド | 差分符号化のためのシリアライゼーション |
-
2002
- 2002-12-20 JP JP2002369101A patent/JP2004201144A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016514393A (ja) * | 2013-02-13 | 2016-05-19 | オートデスク,インコーポレイテッド | 差分符号化のためのシリアライゼーション |
US9659020B2 (en) | 2013-02-13 | 2017-05-23 | Autodesk, Inc. | Serialization for delta encoding |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3305190B2 (ja) | データ圧縮装置及びデータ復元装置 | |
US7965841B2 (en) | Method and apparatus for compressing and decompressing data, and computer product | |
JP5579760B2 (ja) | 係数の位置をコード化する方法及び装置 | |
US6425125B1 (en) | System and method for upgrading client software | |
KR102319657B1 (ko) | 저장된 데이터 유닛들의 동작 관리 | |
JP4642697B2 (ja) | 画像キャッシュメモリを有する画像表示装置 | |
JP2005044360A (ja) | データのパッケージ内デルタ圧縮(intra−packetdeltacompression)のためのシステムおよび方法 | |
US20090284400A1 (en) | Method and System for Reducing Required Storage During Decompression of a Compressed File | |
KR102275431B1 (ko) | 저장된 데이터 유닛들의 동작 관리 | |
JP2007508753A5 (ja) | ||
JP2007508753A (ja) | データ圧縮システム及び方法 | |
US7463782B2 (en) | Data encoding with an amplitude model and path between the data and corresponding decoding | |
KR100495593B1 (ko) | 파일 처리 방법, 데이터 처리 장치, 및 기억 매체 | |
KR102275240B1 (ko) | 저장된 데이터 유닛들의 동작 관리 | |
JP3869033B2 (ja) | データ・ファイルの圧縮および伸張方法 | |
JP6365545B2 (ja) | データ圧縮装置、方法およびプログラム | |
JP2004201144A (ja) | データ圧縮方法および装置 | |
JPH04360246A (ja) | ファイル圧縮装置 | |
JPH10261969A (ja) | データ圧縮方法および装置 | |
JP2004258865A (ja) | 情報処理方法 | |
JP3384844B2 (ja) | データ圧縮方法および装置並びにデータ復元方法および装置 | |
JP3863130B2 (ja) | 通信システム、サービス方法、端末方法、ならびに、プログラム | |
JPH05150940A (ja) | データ圧縮方法およびデータ伸張方法ならびに装置 | |
JP4345438B2 (ja) | 辞書データ圧縮装置、電子辞書装置及びプログラム | |
JP4155991B2 (ja) | 信号符号化装置、信号符号化方法、プログラムおよび記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Effective date: 20040408 Free format text: JAPANESE INTERMEDIATE CODE: A621 |
|
A977 | Report on retrieval |
Effective date: 20050707 Free format text: JAPANESE INTERMEDIATE CODE: A971007 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050712 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20051108 |