(57)【特許請求の範囲】
【請求項１】
コンピュータに、
第１の文字コードによる文字データ列が、一または複数の文字を含む文字列の単位で圧縮符号化された圧縮ファイルを入力し、
前記圧縮ファイルに含まれ、前記文字データ列の圧縮符号化の単位それぞれに関連づけられた圧縮情報それぞれを、当該圧縮符号化の単位の前記第１の文字コード表記に対応する伸長文字コード列から、当該圧縮符号化の単位の第２の文字コード表記に対応する伸長文字コード列にそれぞれ変換し、
前記圧縮符号化された前記文字データ列の圧縮符号化の単位それぞれ、および、前記変換された前記文字データ列の圧縮符号化の単位それぞれに関連づけられた圧縮情報それぞれから、変換圧縮ファイルを生成する、
処理を行わせることを特徴とするプログラム。
【請求項２】
前記変換する処理は、
前記第１の文字コードによる文字データ列の圧縮符号化の単位に関連づけられた圧縮情報の識別子が第１識別子であるか第２識別子であるかを判定し、
前記圧縮情報の識別子が第１識別子である場合には、前記圧縮情報から得られる前記第１の文字コード表記に対応する文字データ列への位置を特定し、前記第１の文字コード表記の文字データ列を記憶する第１文字コード表を前記第２の文字コード表記の文字データ列を記憶する第２文字コード表に置換した文字コード表と前記特定した位置とを基にして、前記圧縮情報を前記第１の文字コード表記に対応する情報から前記第２の文字コード表記に対応する情報に変換することを特徴とする請求項１に記載のプログラム。
【請求項３】
前記圧縮情報の識別子が第２識別子である場合には、前記圧縮情報に含まれる登録位置に基づく情報に示される位置の情報を基にして、前記圧縮情報を前記第１の文字コード表記に対応する情報から前記第２の文字コード表記に対応する情報に変換することを特徴とする請求項２に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムに関する。
【背景技術】
【０００２】
圧縮データに対し、文字コード変換が必要な場合、一般的に伸長処理と文字コード変換処理の順に２パスで実施される（例えば、特許文献１参照）。したがって、伸長処理の結果を記憶する記憶領域が準備される必要がある。
【０００３】
圧縮伸長アルゴリズムとしては、ＬＺ７７を用いたＺＩＰが主流である。ＺＩＰでは、圧縮対象の文字列に対して、スライド窓を用いて最長一致の文字列を判定し、圧縮データを生成する。一方、伸長対象の圧縮データに対して、スライド窓を用いて最長一致の文字列を判定し、伸長データを生成する。スライド窓を用いた最長一致の文字列の判定は、バイト単位で行われる。
【０００４】
また、静的辞書を用いて、圧縮対象の文字列を静的辞書の日本語の単語やＣＪＫ文字に割り当てられた圧縮符号に変換し、圧縮データを生成する技術がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−３００３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、圧縮データを伸長したデータに対して文字コード変換を行う場合、圧縮データの伸長処理により出力されるデータの単位と、文字コード変換処理が行われるデータの単位が異なるため、一旦、圧縮データを伸長処理により全て展開した後、別個の処理として、展開したデータに対して文字コード変換処理を行う必要がある。このため、一例として、記憶領域に無駄が生じるという問題がある。また、別の例として、処理時間が長くなるという問題がある。
【０００７】
例えば、従来技術で用いる静的辞書には、特定の文字コード系の日本語の単語や、中国語、韓国語、日本語の文字であるＣＪＫ文字が登録されているので、登録されている日本語の単語やＣＪＫ文字に割り当てられた圧縮符号に変換され、圧縮処理が行われる。このような場合には、図１に示すように、伸長処理では、静的辞書に対応する伸長用のケヤキ木を用いて、圧縮データを全て伸長し、全て伸長した伸長データを記憶領域に記憶する。そして、文字コード変換処理は、記憶領域に記憶された全ての伸長データの文字コードを変換し、変換データを生成する。この結果、伸長処理は、圧縮データ全体の伸長結果を記憶領域に記憶することが必要となり、記憶領域に無駄が生じる。また、伸長処理および文字コード変換処理の処理時間が長くなる。
【０００８】
１つの側面では、伸長処理と文字コード変換処理に用いられる記憶領域の無駄をなくす
ことを目的とする。１つの側面では、伸長処理および文字コード変換処理の処理時間を短縮することを目的とする。
【課題を解決するための手段】
【０００９】
第１の案では、コンピュータに、下記の処理を実行させる。コンピュータに、第１の文字コードによる文字データ列が、一または複数の文字を含む文字列の単位で圧縮符号化された圧縮ファイルを入力する処理を実行させる。コンピュータに、前記圧縮ファイルに含まれ、前記文字データ列の圧縮符号化の単位それぞれに関連づけられた圧縮情報それぞれを、当該圧縮符号化の単位の前記第１の文字コード表記に対応する情報から、当該圧縮符号化の単位の第２の文字コード表記に対応する情報にそれぞれ変換する処理を実行させる。コンピュータに、前記圧縮符号化された前記文字データ列の圧縮符号化の単位それぞれ、および、前記変換された前記文字データ列の圧縮符号化の単位それぞれに関連づけられた圧縮情報それぞれから、変換圧縮ファイルを生成する処理を実行させる。
【発明の効果】
【００１０】
１つの態様によれば、一括伸長後に変換する場合と比べ伸長処理と文字コード変換処理に用いられる記憶領域の無駄をなくすることができる。また、一括伸長後に変換する場合と比べ伸長処理および文字コード変換処理の処理時間を短縮することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、伸長処理の一例を示す図である。
【図２】図２は、本実施例に係る情報処理装置の圧縮処理の流れの一例を示す図である。
【図３】図３は、動的辞書部の一例を示す図である。
【図４】図４は、圧縮ファイルＦ２のブロック構成例を示す図である。
【図５Ａ】図５Ａは、本実施例に係る情報処理装置の伸長処理の流れの一例を示す図（１）である。
【図５Ｂ】図５Ｂは、本実施例に係る情報処理装置の伸長処理の流れの一例を示す図（２）である。
【図６】図６は、本実施例に係る情報処理装置の構成を示す機能ブロック図である。
【図７】図７は、本実施例に係る文字コードテーブルのデータ構造の一例を示す図である。
【図８Ａ】図８Ａは、圧縮用のケヤキ木のデータ構造の一例を示す図（１）である。
【図８Ｂ】図８Ｂは、圧縮用のケヤキ木のデータ構造の一例を示す図（２）である。
【図９】図９は、伸長用のケヤキのデータ構造の一例を示す図である。
【図１０】図１０は、本実施例に係る圧縮部の構成の一例を示す機能ブロック図である。
【図１１】図１１は、本実施例に係る伸長部の構成の一例を示す機能ブロック図である。
【図１２】図１２は、本実施例に係る圧縮部の処理手順を示すフローチャートである。
【図１３】図１３は、本実施例に係る伸長部の処理手順を示すフローチャートである。
【図１４】図１４は、コンピュータのハードウェア構成例を示す図である。
【図１５】図１５は、コンピュータで動作するプログラムの構成例を示す図である。
【図１６】図１６は、実施形態のシステムにおける装置の構成例を示す図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示するプログラムの実施例を図面に基づいて詳細に説明する。プログラムは、例えば、圧縮プログラムや伸長プログラムを含む。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００１３】
図２は、本実施例に係る情報処理装置の圧縮処理の流れの一例を示す図である。情報処理装置は、圧縮処理のワークエリアとして、メモリに記憶領域Ａ１、記憶領域Ａ２、記憶領域Ａ３、記憶領域Ａ４を設ける。以下の説明では適宜、記憶領域Ａ１、記憶領域Ａ２、記憶領域Ａ３をそれぞれ、符号化部、参照部、動的辞書部と呼ぶ。
【００１４】
情報処理装置は、圧縮対象のファイルＦ１を読み出し、ファイルＦ１のテキストに対し、英文字の場合、先頭文字から終端記号を区切りとする文字列を英文字の単語として抽出する。また、情報処理装置は、圧縮対象のファイルＦ１のテキストに対し、ＣＪＫ文字または日本語の単語の場合、先頭文字から文字単位にＣＪＫ文字または日本語の単語として抽出する。例えば、ファイルＦ１には、特定の文字コード系である「・・・東・・今日・・Ｋａｔａｏｋａ△・・・」というデータが含まれる。「東」、「今日」や「Ｋａｔａｏｋａ△」などの単語が存在する。「東」は、ＣＪＫ文字の一例であり、「今日」は、日本語の単語の一例であり、文字コード系によって異なる文字コード列で表わされる。「Ｋａｔａｏｋａ」は、人名の英文字の一例であり、文字コード系によって変わらない文字コード列で表わされる。終端記号は、空白（スペース）、カンマ（，）やピリオド（．）の記号である。本実施例では一例として、終端記号を「△（三角）」で表す。また、本実施例では一例として、ファイルＦ１のテキストの文字コード系をＵＴＦ−８として説明する。
【００１５】
情報処理装置は、ビットフィルタＣ１と文字コード列とを比較して、文字コード列がビットフィルタＣ１にヒットするか否かを判定する。ビットフィルタは、静的辞書を用いて圧縮する単語の文字コード列を特定するフィルタである。情報処理装置は、文字コード列がビットフィルタＣ１にヒットした場合には、静的辞書に基づいて単語の文字コード列に対応する圧縮符号に変換し、圧縮データを出力する。これに対して、情報処理装置は、文字コード列がビットフィルタＣ１の静的辞書にヒットしない場合には、動的辞書に登録された単語の文字コード列に対応する圧縮符号に変換し、圧縮データを出力する。
【００１６】
ここで、静的辞書とは、一般的な英語辞書、国語辞典や教科書などを基にして文書中に出現する単語や文字の出現頻度を特定し、出現頻度のより高い単語や文字に対して、より短い圧縮符号を割当てた辞書である。また、静的辞書には、日本語の単語単位もしくはＣＪＫ文字単位に圧縮符号が割り当てられる。
【００１７】
動的辞書は、ビットフィルタＣ１にヒットしない文字コード列はスライド窓の符号化部に格納され、蓄積された参照部の文字コード列と照合される。一致した文字コード列は、動的辞書に登録され、その登録番号が圧縮符号に割り当てられる。動的辞書に関する詳しい説明は後述する。
【００１８】
情報処理装置が圧縮対象のファイルＦ１のＣＪＫ文字「東」の圧縮データを生成する場合の処理について説明する。また、ＣＪＫ文字の文字コード列は、ビットフィルタＣ１にヒットするものとする。
【００１９】
情報処理装置は、ＣＪＫ文字「東」とビットフィルタＣ１とを比較して、ＣＪＫ文字「東」がビットフィルタＣ１にヒットするか否かを判定する。情報処理装置は、ＣＪＫ文字「東」がビットフィルタＣ１にヒットするため、ＣＪＫ文字「東」を静的辞書に登録されている圧縮符号に符号化する。情報処理装置は、識別子「０」とＣＪＫ文字「東」の圧縮符号とを含む圧縮データｄ１を生成する。識別子「０」は、文字コード列が静的辞書に基づいて符号化されたことを示す情報である。情報処理装置は、圧縮データｄ１を記憶領域Ａ４に書き込む。
【００２０】
次に、情報処理装置が圧縮対象のファイルＦ１の日本語の単語「今日」の圧縮データを生成する場合の処理について説明する。また、日本語の単語の文字コード列は、ビットフィルタＣ１にヒットするものとする。
【００２１】
情報処理装置は、日本語の単語「今日」とビットフィルタＣ１とを比較して、日本語の単語「今日」がビットフィルタＣ１にヒットするか否かを判定する。情報処理装置は、日本語の単語「今日」がビットフィルタＣ１にヒットするため、日本語の単語「今日」を静的辞書に登録されている圧縮符号に符号化する。情報処理装置は、識別子「０」と日本語の単語「今日」の圧縮符号とを含む圧縮データｄ３を生成する。識別子「０」は、文字コード列が静的辞書に基づいて符号化されたことを示す情報である。情報処理装置は、圧縮データｄ３を記憶領域Ａ４に書き込む。
【００２２】
次に、情報処理装置が圧縮対象のファイルＦ１の英文字の文字列「Kataoka△」の圧縮データを生成する場合の処理について説明する。また、文字列「Kataoka△」は、ビットフィルタＣ１にヒットしないものとする。
【００２３】
情報処理装置は、文字列「Kataoka△」とビットフィルタＣ１とを比較して、文字列「Kataoka△」がビットフィルタＣ１にヒットするか否かを判定する。情報処理装置は、文字列「Kataoka△」がビットフィルタＣ１にヒットしないため、下記の処理を実行する。
【００２４】
情報処理装置は、文字列「Kataoka△」を記憶領域Ａ１に格納し、記憶領域Ａ２に格納された文字列と、記憶領域Ａ１の文字列とを比較して、最長一致文字列を検索する。最長一致文字列は、記憶領域Ａ１に格納された文字列と、記憶領域Ａ２に格納された文字列のうち、最も長く一致する文字列である。例えば、記憶領域Ａ２に文字列「・・・Kataoka△・・・」が既に格納されている場合には、最長一致文字列は「Kataoka△」となる。情報処理装置は、記憶領域Ａ２に対して「K」の探索を行い、探索により得られた記憶領域Ａ２内の「K」の位置から「a」、「t」、「a」、「o」、「k」、「a」、「△」と連続しているか否か、順次照合する。
【００２５】
情報処理装置は、最長一致文字列が所定の長さＬｍｉｎ以上である場合に、最長一致文字列「Kataoka△」を動的辞書部の記憶領域Ａ３に登録する。情報処理装置は、動的辞書部の登録内容に基づいて圧縮符号を生成する。すなわち、情報処理装置は、動的辞書部に登録した最長一致文字列の登録番号を、文字列「Kataoka△」の圧縮符号として特定する。情報処理装置は、識別子「１」と文字列「Kataoka△」の圧縮符号とを含む圧縮データｄ２を生成する。識別子「１」は、文字列が動的辞書に基づいて符号化されたことを示す情報である。情報処理装置は、圧縮データｄ２を記憶領域Ａ４に書き込む。また、情報処理装置は、記憶領域Ａ１に格納された文字列を、記憶領域Ａ２に追記することで、記憶領域Ａ２を更新する。
【００２６】
記憶領域Ａ２は、それぞれのデータサイズが定められたデータ領域である。例えば、記憶領域Ａ２は、例えば６４キロバイトの固定長の記憶領域である。情報処理装置は、記憶領域Ａ２に定められたデータサイズ以上のデータを格納する場合には、記憶領域Ａ２の先頭に格納された古いデータの上から新しいデータを格納する。記憶領域Ａ２内に格納されるデータは、データの格納に応じて更新される書き込み位置からの相対的なアドレスにより、先頭位置が示される。
【００２７】
記憶領域Ａ３は、入力ファイルの大きさに応じて、データサイズが定められた記憶領域である。例えば、記憶領域Ａ３は、例えば６４キロバイトの固定長の記憶領域である。例えば、情報処理装置は、記憶領域Ａ３に定められたデータサイズ以上のデータを格納する場合には、新たなデータの格納を抑止する。
【００２８】
図３は、動的辞書部の一例を示す図である。図３に示される動的辞書部は、記憶領域Ａ３と参照テーブルＴ１とを含む。参照テーブルＴ１は、登録番号と、格納位置と、データ長とを対応づけて保持する。図３に示す例では、登録番号、格納位置、データ長を２進数で表す。登録番号は、記憶領域Ａ３に登録された最長一致の文字コード列が、何番目に登録されたデータであるかを示す情報である。なお、本実施例では、１番目に登録されたデータの登録番号を「００００００００」とする。格納位置は、最長一致文字列の先頭文字が格納された記憶領域Ａ３内の位置（バイト）を示す情報である。データ長は、最長一致文字列の長さを示す情報である。
【００２９】
例えば、最長一致文字列「Kataoka△」が記憶領域Ａ３に７番目に登録された最長一致文字列である場合には、情報処理装置は、最長一致文字列「Kataoka△」に対応する登録番号として、参照テーブルＴ１の登録番号に「０００００１１１」を登録する。また、情報処理装置は、最長一致文字列「Kataoka△」の先頭文字「K」が記憶領域Ａ３の「３０」に格納されているため、格納位置に「００００００００１１１０」を登録する。情報処理装置は、最長一致文字列「Kataoka△」のデータ長が「８」であるため、データ長に「１０００」を登録する。
【００３０】
図３に示すように、最長一致文字列「Kataoka△」が動的辞書部に登録されたものとすると、最長一致文字列「Kataoka△」の登録番号は「０００００１１１」となる。この場合には、情報処理装置は、文字列「Kataoka△」の圧縮符号を「０００００１１１」とする。このため、情報処理装置は、文字列「Kataoka△」の圧縮データｄ２として、識別子「１」、登録番号「０００００１１１」を含む圧縮データｄ２を生成する。
【００３１】
図４は、圧縮ファイルＦ２のブロック構成例を示す図である。図４に示すように、圧縮ファイルＦ２は、ヘッダ部と、圧縮データと、トレーラ部とを有する。ヘッダ部は、例えば、圧縮ファイルＦ２の生成に用いられた圧縮アルゴリズムを識別する情報や、圧縮に用いられたパラメータなどの情報を有する。圧縮データは、情報処理装置が生成した各圧縮データに対応する。トレーラ部は、圧縮処理が完了した後の動的辞書部の情報を有する。動的辞書部の情報は、図３に示した動的辞書部の情報に対応する。
【００３２】
図５Ａおよび図５Ｂは、本実施例に係る情報処理装置の伸長処理の流れの一例を示す図である。図５Ａでは、ＣＪＫ文字を圧縮した圧縮データの伸長処理と、英文字の文字列を圧縮した圧縮データの伸長処理の流れを示す。図５Ｂでは、日本語の単語を圧縮した圧縮データの伸長処理の流れを示す。情報処理装置は、伸長処理のワークエリアとして、メモリに記憶領域Ｂ１、記憶領域Ｂ２および記憶領域Ｂ３を設ける。情報処理装置は、圧縮ファイルＦ２を記憶領域Ｂ１にロードし、順次圧縮データを読み出す。情報処理装置は、読み出した圧縮データに基づいて、伸長データの生成を行う。なお、本実施例に係る伸長処理は、圧縮データの伸長結果を文字コード変換が行われた状態の伸長結果にする。図５Ａおよび図５Ｂでは、ＵＴＦ−８からＵＴＦ−１６へ文字コード変換が行われた状態の伸長データにするものとする。
【００３３】
情報処理装置は、圧縮データに含まれる識別子に応じた伸長処理を行う。情報処理装置は、生成した伸長データを記憶領域Ｂ３に格納し、記憶領域Ｂ３に格納された伸長データに基づいて伸長ファイルＦ３が生成される。また、情報処理装置は、記憶領域Ｂ２に、図４のトレーラ部に格納された動的辞書部の情報をロードする。以下の説明では適宜、記憶領域Ｂ１を符号化部と呼び、記憶領域Ｂ２を動的辞書部と呼ぶ。なお、伸長ファイルＦ３は、変換圧縮ファイルの一例である。
【００３４】
図５Ａでは、図２に示した圧縮データｄ１，ｄ２に対する伸長処理を説明する。
【００３５】
情報処理装置は、圧縮データｄ１を読み出し、圧縮データｄ１の識別子を判定する。情報処理装置は、圧縮データｄ１の識別子が「０」である場合には、圧縮データｄ１が、静的辞書によって符号化されたと判定する。情報処理装置は、圧縮データｄ１と伸長用ケヤキ木とを比較して、伸長用ケヤキ木に示される伸長データへのポインタを特定する。そして、情報処理装置は、特定した伸長データへのポインタを基に、文字コード変換が行われた伸長データを特定する。すなわち、情報処理装置は、ＵＴＦ−８からＵＴＦ−１６へ文字コード変換が行われた伸長データを特定する。
【００３６】
例えば、情報処理装置は、伸長データへのポインタに対応するＵＴＦ−８の文字コードテーブルをＵＴＦ−１６の文字コードテーブルに置換する。ここで、文字コードテーブルとは、ＣＪＫ文字に対する文字コード列を表すテーブルであり、文字コード系毎に存在する。文字コード系毎の各文字コードテーブルには、予め定められたＣＪＫ文字の順に文字コード列が設定される。情報処理装置は、置換されたＵＴＦ−１６の文字コードテーブルと伸長データへのポインタとを基にして、ＵＴＦ−１６における伸長データを特定する。一例として、伸長用ケヤキ木の伸長データへのポインタが、ＵＴＦ−８の文字コードテーブルの「Ｅ６９ＤＢ１」を指しているとする。「Ｅ６９ＤＢ１」は、ＣＪＫ文字「東」のＵＴＦ−８の文字コード列である。すると、伸長用ケヤキ木の伸長データへのポインタが、文字コードテーブルの置換後、ＵＴＦ−１６の文字コードテーブルの「６７７１」を指すため、伸長データへのポインタに対するＵＴＦ−１６の伸長データが特定される。すなわち、ＵＴＦ−８からＵＴＦ−１６に変換された文字コード列「６７７１」が特定される。
【００３７】
そして、情報処理装置は、文字コード変換が行われた伸長データを、記憶領域Ｂ３に書き込む。
【００３８】
情報処理装置は、圧縮データｄ２を読み出し、圧縮データｄ２の識別子を判定する。情報処理装置は、圧縮データｄ２の識別子が「１」である場合には、圧縮データｄ２が、動的辞書によって符号化されたと判定する。情報処理装置は、圧縮データｄ２内の圧縮符号に基づいて、動的辞書部を参照し、伸長データを生成する。そして、情報処理装置は、文字コード変換が行われた伸長データを特定する。なお、英文字は、ＡＳＣＩＩ（American1  standard  code  for  information  interchange）などあらゆる文字コード系で同一の文字コード列となるので、生成した伸長データを、ＵＴＦ−８からＵＴＦ−１６へ文字コード変換しても、同じ文字コード列となる。
【００３９】
例えば、情報処理装置は、圧縮データｄ２に含まれる登録番号と、動的辞書部の参照テーブルＴ１とを比較して、記憶領域Ｂ２内の格納位置およびデータ長を特定する。情報処理装置は、格納位置およびデータ長に対応するデータを、記憶領域Ｂ２から読み出し、読み出したデータを伸長データとする。例えば、圧縮データｄ２内の登録番号は、動的辞書部内の「Kataoka△」を示すため、伸長データとして「Kataoka△」が生成される。
【００４０】
そして、情報処理装置は、文字コード変換が行われた伸長データを、記憶領域Ｂ３に書き込む。
【００４１】
図５Ｂでは、図２に示した圧縮データｄ３に対する伸長処理を説明する。
【００４２】
情報処理装置は、圧縮データｄ３を読み出し、圧縮データｄ３の識別子を判定する。情報処理装置は、圧縮データｄ３の識別子が「０」である場合には、圧縮データｄ３が、静的辞書によって符号化されたと判定する。情報処理装置は、圧縮データｄ３と伸長用ケヤキ木とを比較して、伸長用ケヤキ木に示される伸長データへのポインタを特定する。そして、情報処理装置は、特定した伸長データへのポインタを基に、文字コード変換が行われた伸長データを特定する。すなわち、情報処理装置は、ＵＴＦ−８からＵＴＦ−１６へ文字コード変換が行われた伸長データを特定する。
【００４３】
例えば、情報処理装置は、伸長データへのポインタに対応するＵＴＦ−８の文字コードテーブルをＵＴＦ−１６の文字コードテーブルに置換する。ここで、文字コードテーブルとは、日本語の単語に対する文字コード列を表すテーブルであり、文字コード系毎に存在する。文字コード系毎の各文字コードテーブルには、予め定められた日本語の単語の順に文字コード列が設定される。情報処理装置は、置換されたＵＴＦ−１６の文字コードテーブルと伸長データへのポインタとを基にして、ＵＴＦ−１６における伸長データを特定する。一例として、伸長用ケヤキ木の伸長データへのポインタが、ＵＴＦ−８の文字コードテーブルの「ｅ４ｂｂ８ａｅ２ｂｄ８７」を指しているとする。「ｅ４ｂｂ８ａｅ２ｂｄ８７」は、日本語の単語「今日」のＵＴＦ−８の文字コード列である。すると、伸長用ケヤキ木の伸長データへのポインタが、文字コードテーブルの置換後、ＵＴＦ−１６の文字コードテーブルの「４ｅｃａ６５ｅ５」を指すため、伸長データへのポインタに対するＵＴＦ−１６の伸長データが特定される。すなわち、ＵＴＦ−８からＵＴＦ−１６に変換された文字コード列「４ｅｃａ６５ｅ５」が特定される。
【００４４】
そして、情報処理装置は、文字コード変換が行われた伸長データを、記憶領域Ｂ３に書き込む。なお、文字コードテーブルの詳細は、後述するものとする。
【００４５】
図６は、本実施例に係る情報処理装置の構成を示す機能ブロック図である。図６に示すように、この情報処理装置１００は、圧縮部１００ａと、伸長部１００ｂと、記憶部１００ｃとを有する。
【００４６】
圧縮部１００ａは、図２に示した圧縮処理を実行する処理部である。伸長部１００ｂは、図５Ａおよび図５Ｂに示した伸長処理を実行する処理部である。記憶部１００ｃは、文字コードテーブル２００を記憶する。文字コードテーブル２００は、圧縮データの識別子が「０」である場合に圧縮データが伸長される際に用いられるテーブルであり、文字コード系毎に存在する。また、文字コードテーブル２００には、ＣＪＫ文字に対する伸長文字コード列と、日本語の単語に対する伸長文字コード列が含まれる。
【００４７】
ここで、文字コードテーブルの２００のデータ構造を、図７を参照して説明する。図７は、本実施例に係る文字コードテーブルのデータ構造の一例を示す図である。図７では、文字コード系がＵＴＦ−８とＵＴＦ−１６である場合の文字コードテーブル２００について説明する。図７に示すように、文字コードテーブル２００は、伸長文字コード列２００ａを長さ２００ｂとともに記憶する。伸長文字コード列２００ａは、伸長後の文字コード列であり、ＣＪＫ文字または日本語の単語を文字コード系で表した文字コード列に対応する。長さ２００ｂは、伸長文字コード列２００ａの長さを示す。伸長文字コード列２００ａは、異なる文字コード系同士で、同じＣＪＫ文字または同じ日本語の単語であれば同じ位置になるように記憶される。つまり、圧縮データの識別子が「０」である場合に、情報処理装置は、圧縮データｄ１と伸長用ケヤキ木とを比較して、伸長用ケヤキ木に示される伸長データへのポインタを特定するが、この伸長データへのポインタが、文字コード系毎に同じ位置を指すことになる。
【００４８】
一例として、図７左図には、文字コード系がＵＴＦ−８である場合の文字コードテーブル２００が示されている。図７右図には、文字コード系がＵＴＦ−１６である場合の文字コードテーブル２００が示されている。文字コード系がＵＴＦ−８である場合、伸長文字コード列２００ａとして「Ｅ６９ＤＢ１」、長さ２００ｂとして「３」と記憶している。「Ｅ６９ＤＢ１」は、ＵＴＦ−８におけるＣＪＫ文字「東」の文字コード列である。文字コード系がＵＴＦ−１６である場合、伸長文字コード列２００ａとして「６７７１」、長さ２００ｂとして「２」と記憶している。「６７７１」は、ＵＴＦ−１６におけるＣＪＫ文字「東」の文字コード列である。ＣＪＫ文字「東」の伸長文字コード列２００ａが、ＵＴＦ−８およびＵＴＦ−１６で同じ位置に記憶されている。ＣＪＫ文字「神」も同様に、伸長文字コード列２００ａが、ＵＴＦ−８およびＵＴＦ−１６で同じ位置に記憶されている。
【００４９】
図６に戻って、情報処理装置１００は、図２、図５Ａおよび図５Ｂなどに示した記憶領域Ａ１，Ａ２，Ａ３，Ａ４、Ｂ１，Ｂ２，Ｂ３を、記憶部１００ｃに設定する。また、記憶部１００ｃは、圧縮用のケヤキ木および伸長用のケヤキ木を記憶する。
【００５０】
図８Ａおよび図８Ｂは、圧縮用のケヤキ木のデータ構造の一例を示す図である。図８Ａでは、ＣＪＫ文字に対応する圧縮用のケヤキ木のデータ構造を示す。図８Ｂでは、日本語の単語に対応する圧縮用のケヤキ木のデータ構造を示す。なお、圧縮用のケヤキ木は、文字コード系毎に存在する。
【００５１】
図８Ａには、一例として、文字コード系がＵＴＦ−８である場合の圧縮用のケヤキ木を表している。図８Ａに示すように、圧縮用のケヤキ木５０には、２グラム、ビットマップ、ポインタ、ＣＪＫ文字、文字コード列長、出現頻度、圧縮符号および共通文字コード列が含まれる。このうち、２グラム、ビットマップ、ポインタ、ＣＪＫ文字、文字コード列長は、ビットフィルタＣ１に対応する。また、ＣＪＫ文字、文字コード列長、出現頻度、圧縮符号および共通文字コード列は、静的辞書Ｃ２に対応する。
【００５２】
２グラムは、２文字の文字コード列を示す情報である。ビットマップは、２グラムの文字コード列に対応するビットマップを示す。すなわち、ビットマップは、２グラムの文字コード列に対応するビットマップを示す。例えば、「００ｈ００ｈ」に対応するビットマップは「０＿０＿０＿０＿０」となる。ポインタは、ビットマップに対応するＣＪＫ文字の位置を示すポインタである。
【００５３】
ＣＪＫ文字は、静的辞書Ｃ２に登録されたＣＪＫ文字であり、文字コード列で表わされる。ここでは、文字コード列を括弧内に示す。文字コード列長は、ＣＪＫ文字に対応する文字コード列の長さである。出現頻度は、ＣＪＫ文字の出現頻度である。圧縮符号は、ＣＪＫ文字に割り当てられた圧縮符号である。共通文字コード列は、ＣＪＫ文字に割り当てられた内部的な文字コード列であり、文字コード系が異なっても共通する文字コード列である。
【００５４】
図８Ｂには、一例として、文字コード系がＵＴＦ−８である場合の圧縮用のケヤキ木を表している。図８Ｂに示すように、圧縮用のケヤキ木５０には、２グラム、ビットマップ、ポインタ、単語、文字コード列長、出現頻度および圧縮符号が含まれる。このうち、２グラム、ビットマップ、ポインタ、単語、文字コード列長は、ビットフィルタＣ１に対応する。また、単語、文字コード列長、出現頻度および圧縮符号は、静的辞書Ｃ２に対応する。
【００５５】
２グラムは、２文字の文字コード列を示す情報である。ビットマップは、２グラムの文字コード列に対応するビットマップを示す。すなわち、ビットマップは、２グラムの文字コード列に対応するビットマップを示す。例えば、「００ｈ００ｈ」に対応するビットマップは「０＿０＿０＿０＿０」となる。ポインタは、ビットマップに対応する単語の位置を示すポインタである。
【００５６】
単語は、静的辞書Ｃ２に登録された日本語の単語であり、文字コード列で表わされる。ここでは、文字コード列を括弧内に示す。文字コード列長は、単語に対応する文字コード列の長さである。出現頻度は、単語の出現頻度である。圧縮符号は、単語に割り当てられた圧縮符号である。
【００５７】
図９は、伸長用のケヤキのデータ構造の一例を示す図である。図９に示すように、伸長用のケヤキ６０は、複数の枝６０−１〜６０−ｎと、葉６１−１〜６０−ｍとを有する。各枝６０−１〜６０−ｎには、所定のビット列が割り当てられる。情報処理装置１００は、圧縮データのビット列と、枝６０−１〜６０−ｎに割り当てられたビット列とを比較して、圧縮データのビット列にヒットする枝に接続される葉を特定する。葉には、圧縮データに対応する文字などの情報が格納される。
【００５８】
例えば、葉のデータ構造は、６１に示すものとなる。例えば、葉には、葉識別情報と、圧縮符号長と、ＣＪＫ文字または単語へのポインタとが格納される。葉識別情報は、葉を一意に識別する情報である。圧縮符号長は、各枝６０−１〜６０−ｎと比較した圧縮データのビット列の内、有効な長さを示す情報である。ＣＪＫ文字または単語へのポインタは、圧縮符号を伸長した場合の伸長データを一意に示す情報であり、伸長データへのポインタに対応する。
【００５９】
例えば、ビット列「０１０１１１１１０１１１１０１」が枝６０−４に割り当てられ、枝６０−４に接続される葉６１−４の圧縮符号長が「１１」であり、基礎単語ＣＪＫ文字または単語へのポインタで示されるＣＪＫ文字が「東」であるとする。この場合には、ビット列の先頭から１１ビット目までのビット列「０１０１１１１１０１１」が、ＣＪＫ文字「東」に対応する圧縮符号となる。
【００６０】
図１０は、本実施例に係る圧縮部の構成の一例を示す機能ブロック図である。図１１に示すように、この圧縮部１００ａは、ファイルリード部１０１、判定部１０２、第１符号化部１０３、第２符号化部１０４、更新部１０５およびファイルライト部１０６を有する。
【００６１】
ファイルリード部１０１は、ファイルＦ１内のコンテンツ部分のデータを読み出す処理部である。ファイルリード部１０１は、読み出したデータに含まれる文字コード列を先頭から抽出し、抽出した文字コード列を判定部１０２に順次出力する。例えば、ファイルリード部１０１は、英文字の場合、先頭文字から終端記号を区切りとする文字コード列を英文字の単語として抽出する。ファイルリード部１０１は、ＣＪＫ文字または日本語の単語の場合、先頭文字から文字単位の文字コード列をＣＪＫ文字または日本語の単語として抽出する。
【００６２】
判定部１０２は、文字コード列とビットフィルタＣ１とを比較して、文字コード列がビットフィルタＣ１にヒットするか否かを判定する処理部である。判定部１０２は、文字コード列がビットフィルタＣ１にヒットした場合には、文字コード列を第１符号化部１０３に出力する。文字コード列がＣＪＫ文字および日本語の単語の文字コード列の場合である。判定部１０２は、文字コード列がビットフィルタＣ１にヒットしない場合には、文字コード列を第２符号化部１０４に出力する。文字コード列が英文字の単語の文字コード列の場合である。
【００６３】
判定対象の文字コード列がＣＪＫ文字の文字コード列である場合の判定部１０２の処理を、図８Ａを用いて説明する。判定対象の文字コード列をＣＪＫ文字「東」の文字コード列「Ｅ６９ＤＢ１」とする。判定部１０２は、判定対象の文字コード列を先頭から２グラムずつビットフィルタＣ１の２グラムと比較し、ビットマップを特定する。例えば、判定部１０２は、文字コード列が「Ｅ６９ＤＢ１」である場合には、「Ｅ６９Ｄ」、「９ＤＢ１」に対応するビットマップをそれぞれ組み合わせる。判定部１０２は、一例として、ビットマップの各桁において、組み合わせたビットマップの該当する桁を「１」とし、それ以外は「０」に設定することで、ビットマップを組み合わせる。
【００６４】
例えば、「Ｅ６９Ｄ」のビットマップが「１＿０＿０＿０＿０」、「９ＤＢ１」のビットマップが「０＿１＿１＿０＿０」とする。この場合には、各ビットマップを組み合わせたビットマップは「１＿１＿１＿０＿０」となる。
【００６５】
判定部１０２は、組み合わせたビットマップと、ビットフィルタＣ１のポインタとを比較して、ビットマップに対応するポインタが示す位置のＣＪＫ文字を特定する。判定部１０２は、特定したＣＪＫ文字から順に、判定対象の文字コード列に対応するＣＪＫ文字を検索する。ここでは、静的辞書には、日本語の単語単位もしくはＣＪＫ文字単位が存在するとする。すると、判定部１０２は、判定対象の文字コード列に対応するＣＪＫ文字が存在するので、判定対象の文字コード列がビットフィルタＣ１にヒットしたと判定する。なお、判定対象の文字コード列が日本語の単語の文字コード列である場合の判定部１０２の処理は、判定対象の文字コード列がＣＪＫ文字の文字コード列である場合の判定部１０２の処理と同様であるので、その説明を省略する。
【００６６】
第１符号化部１０３は、判定部１０２から取得した文字コード列を静的辞書Ｃ２に基づいて符号化する処理部である。第１符号化部１０３は、静的辞書Ｃ２を参照し、文字コード列に対応するＣＪＫ文字または日本語の単語を、静的辞書Ｃ２から特定し、特定したＣＪＫ文字または日本語の単語に対応する圧縮符号を特定する。そして、第１符号化部１０３は、識別子に「０」と、静的辞書Ｃ２に登録されているＣＪＫ文字または日本語の単語の圧縮符号を含む圧縮データを生成し、圧縮データをファイルライト部１０６に出力する。
【００６７】
第２符号化部１０４は、判定部１０２から取得した文字コード列を動的辞書に基づいて符号化する処理部である。第２符号化部１０４は、文字コード列を符号化部となる記憶領域Ａ１に格納する。第２符号化部１０４は、記憶領域Ａ１と、参照部となる記憶領域Ａ２に格納されたデータとを比較して、最長一致文字列を検索する。
【００６８】
第２符号化部１０４は、最長一致文字列が所定の長さＬｍｉｎ以上である場合に、最長一致文字列を動的辞書部の記憶領域Ａ３に登録する。第２符号化部１０３は、動的辞書部の登録内容に基づいて圧縮符号を生成する。すなわち、第２符号化部１０３は、動的辞書部に登録した最長一致文字列の登録番号を、文字列の圧縮符号として特定する。第２符号化部１０４は、識別子「１」と、動的辞書の登録番号とを含む圧縮データを生成し、圧縮データをファイルライト部１０６に出力する。
【００６９】
例えば、第２符号化部１０４は、文字列「Kataoka△」が記憶領域Ａ３に２番目に登録された最長一致文字列である場合には、最長一致文字列「Kataoka△」に対応する登録番号として、参照テーブルＴ１の登録番号に「０００００１１１」を登録する。また、第２符号化部１０４は、最長一致文字列「Kataoka△」の先頭文字「K」が記憶領域Ａ３の「３０」に格納されているため、格納位置に「０００００００１１１１０」を登録する。第２符号化部１０４は、最長一致文字列「Kataoka△」のデータ長が「８」であるため、データ長に「１００００」を登録する。
【００７０】
第２符号化部１０４は、図３に示すように、最長一致文字列「Kataoka△」が動的辞書部に登録されたものとすると、最長一致文字列「Kataoka△」の登録番号は「０００００１１１」となる。この場合には、第２符号化部１０４は、文字列「Kataoka△」の圧縮符号を「０００００１１１」とする。このため、第２符号化部１０４は、文字列「Kataoka△」の圧縮データとして、識別子「１」、登録番号「０００００１１１」を含む圧縮データを生成し、ファイルライト部１０６に出力する。
【００７１】
ところで、第２符号化部１０４は、符号化対象の文字列と同一の文字列が記憶領域Ａ３に既に登録されている場合には、既に登録されている文字列の登録番号を、文字列の圧縮符号として特定する。例えば、第２符号化部１０４は、符号化対象となる文字列と、記憶領域Ａ３の各文字列を比較し、符号化対象の文字列と同一の文字列が記憶領域Ａ３に登録されていない場合に、上記最長一致文字列検索を行う。
【００７２】
更新部１０５は、第２符号化部１０４によって、最長一致文字列の検索が完了した後に、記憶領域Ａ１に格納された文字列を、記憶領域Ａ２に格納することで、記憶領域Ａ２を更新する処理部である。更新部１０５は、第２符号化部１０５による最長一致文字列の検索が完了するたびに、記憶領域Ａ２を更新する。
【００７３】
ファイルライト部１０６は、第１符号化部１０３および第２符号化部１０４から圧縮データを取得し、取得した圧縮データを記憶領域Ａ４に書き込む処理部である。
【００７４】
図１１は、本実施例に係る伸長部の構成の一例を示す機能ブロック図である。図１１に示すように、この伸長部１００ｂは、ファイルリード部１１０、識別子判定部１１１、第１伸長変換部１１２、第２伸長変換部１１３、更新部１１４およびファイルライト部１１５を有する。
【００７５】
ファイルリード部１１０は、圧縮ファイルＦ２内の圧縮データを記憶領域Ｂ１に読み出す処理部である。ファイルリード部１１０は、記憶領域Ｂ１に格納された圧縮データに対する処理が終了した場合に、新たな圧縮データを圧縮ファイルＦ２から読み出し、記憶領域Ｂ１に格納された圧縮データを更新する。
【００７６】
また、ファイルリード部１１０は、圧縮ファイルＦ２のトレーラ部に格納された動的辞書部の情報を読み出して、記憶領域Ｂ２に格納する。
【００７７】
識別子判定部１１１は、記憶領域Ｂ１に格納された圧縮データの識別子を読み出し、識別子が「０」であるか「１」であるかを判定する処理部である。識別子は、圧縮データの先頭ビットに対応する。識別子が「０」である場合には、圧縮データが静的辞書によって符号化されたことを示す。識別子が「１」である場合には、圧縮データが動的辞書によって符号化されたことを示す。
【００７８】
識別子判定部１１１は、圧縮データの識別子が「０」である場合には、圧縮データを第１伸長変換部１１２に出力する。識別子判定部１１１は、圧縮データの識別子が「１」である場合には、圧縮データを第２伸長変換部１１３に出力する。
【００７９】
第１伸長変換部１１２は、伸長用のケヤキ木６０を用いて圧縮データを文字コード変換が行われた状態に伸長する処理部である。伸長用のケヤキ木６０のデータ構造は、図９に示したものに対応する。第１伸長変換部１１２は、ケヤキ木６０の各枝に割り当てられたビット列と、識別子を除いた圧縮データとを比較して、圧縮データと同一のビット列となる枝に対応付けられた葉を特定する。第１伸長変換部１１２は、特定した葉を参照し、ＣＪＫ文字または日本語の単語へのポインタを特定する。第１伸長変換部１１２は、圧縮された際の文字コード系の文字コードテーブル２００を文字コード変換対象の文字コード系の文字コードテーブル２００に置換し、置換した文字コードテーブル２００および特定したポインタを基に、圧縮データの伸長データを文字コード変換が行われた伸長データに変換する。第１伸長変換部１１２は、変換した伸長データをファイルライト部１１５に出力する。
【００８０】
第１伸長変換部１１２は、図９において、例えば、ビット列「０１０１１１１１０１１１１０１」が、ケヤキ木６０の枝６０−４にヒットし、枝６０−４に接続される葉６１−４の圧縮符号長が「１１」であり、ＣＪＫ文字または単語へのポインタで示されるＣＪＫ文字が「東」であるとする。この場合には、第１伸長変換部１１２は、圧縮データのビット列のうち、先頭から１１ビット目までのビット列「０１０１１１１１０１１」に対応する伸長データとして、ＵＴＦ−８からＵＴＦ−１６に置換された文字コードテーブル２００内の伸長文字コード列「６７７１」を特定する。
【００８１】
第２伸長変換部１１３は、記憶領域Ｂ２に格納された動的辞書部の情報を用いて圧縮データを文字コード変換が行われた状態に伸長する処理部である。第２伸長変換部１１３は、圧縮データから識別子を取り除くことで、動的辞書部の登録番号を取得する。第２伸長変換部１１３は、取得した登録番号と、参照テーブルＴ１とを比較して、記憶領域Ｂ２に格納された伸長データの格納位置およびデータ長を特定する。第２伸長変換部１１３は、格納位置およびデータ長に対応する文字コード列を記憶領域Ｂ２から取得し、取得した文字コード列を伸長データとして生成する。そして、第２伸長変換部１１３は、生成した伸長データを文字コード変換し、文字コード変換が行われた伸長データに変換する。第２伸長変換部１１３は、変換した伸長データをファイルライト部１１５に出力する。
【００８２】
例えば、圧縮データから取得した登録番号を「０００００１１１」として、第２伸長変換部１１３の処理を説明する。第２伸長変換部１１３は、登録番号「０００００１１１」と参照テーブルＴ１とを比較して、格納位置「０００００００１１１１０」とデータ長「１０００」を取得する。第２伸長変換部１１３は、記憶領域Ｂ２を参照し、格納位置「０００００００１１１１０」を先頭とし、データ長「１０００」となる文字列「Kataoka△」の文字コード列を取得する。第２伸長変換部１１３は、取得した文字列「Kataoka△」の文字コード列をＵＴＦ−８からＵＴＦ−１６に文字コード変換し、文字コード変換が行われた伸長データに変換する。なお、英文字は、ＡＳＣＩＩ（American1  standard  code  for  information  interchange）などあらゆる文字コード系で同一の文字コード列となるので、生成した伸長データを、ＵＴＦ−８からＵＴＦ−１６へ文字コード変換しても、同じも文字コード列となる。
【００８３】
更新部１１４は、圧縮データが格納された記憶領域Ｂ１を更新する処理部である。更新部１１４は、圧縮データの識別子が「０」である場合には、第１伸長変換部１１２に読み出された圧縮データを記憶領域Ｂ１から削除する。更新部１１４は、圧縮データの識別子が「１」である場合には、第２伸長変換部１１３に読み出された圧縮データを記憶領域Ｂ１から削除する。
【００８４】
ファイルライト部１１５は、第１伸長変換部１１２および第２伸長変換部１１３から伸長データを取得し、取得した伸長データを記憶領域Ｂ３に書き込む処理部である。
【００８５】
次に、図１０および図１１に示した圧縮部１００ａおよび伸長部１００ｂの処理手順について説明する。
【００８６】
図１２は、本実施例に係る圧縮部の処理手順を示すフローチャートである。図１２に示すように、圧縮部１００ａは、前処理を実行する（ステップＳ１０１）。ステップＳ１０１の前処理において、圧縮部１００ａは、記憶領域Ａ１、記憶領域Ａ２、記憶領域Ａ３を記憶部１００ｃに確保する。
【００８７】
圧縮部１００ａは、圧縮対象のファイルＦ１を読み出し（ステップＳ１０２）、文字コード列を抽出する（ステップＳ１０３）。圧縮部１００ａは、文字コード列とビットフィルタＣ１とを比較し、ビットフィルタＣ１にヒットするか否かを判定する（ステップＳ１０４）。
【００８８】
圧縮部１００ａは、文字コード列がビットフィルタＣ１にヒットしない場合には（ステップＳ１０４，Ｎｏ）、動的辞書を参照し（ステップＳ１０５）。そして、圧縮部１００ａは、文字列が動的辞書に既に存在しているか否かを判定する（ステップＳ１０６）。圧縮部１００ａは、文字列が動的辞書に存在している場合には（ステップＳ１０６，Ｙｅｓ）、ステップＳ１０９に移行する。
【００８９】
一方、圧縮部１００ａは、文字列が動的辞書に存在しない場合には（ステップＳ１０６，Ｎｏ）、最長一致の文字コード列を検索する（ステップＳ１０７）。圧縮部１００ａは、動的辞書を更新し（ステップＳ１０８）、ステップＳ１０９に移行する。
【００９０】
ステップＳ１０９において、圧縮部１００ａは、識別子「１」と動的辞書の登録番号とを含む圧縮データを出力する（ステップＳ１０９）。圧縮部１００ａは、圧縮データの書き込みを行い（ステップＳ１１０）、ファイルＦ１の終点か否かを判定する（ステップＳ１１１）。圧縮部１００ａは、ファイルＦ２の終点でない場合には（ステップＳ１１１，Ｎｏ）、ステップＳ１０３に移行する。圧縮部１００ａは、ファイルＦ２の終点の場合には（ステップＳ１１１，Ｙｅｓ）、処理を終了する。
【００９１】
ところで、圧縮部１００ａは、ステップＳ１０４において、文字コード列がビットフィルタＣ１にヒットした場合には（ステップＳ１０４，Ｙｅｓ）、静的辞書Ｃ２に登録されている圧縮符号を特定する（ステップＳ１１２）。圧縮部１００ａは、識別子「０」と圧縮符号とを含む圧縮データを出力し（ステップＳ１１３）、ステップＳ１１０に移行する。
【００９２】
図１３は、本実施例に係る伸長部の処理手順を示すフローチャートである。図１３に示すように、伸長部１００ｂは、前処理を実行する（ステップＳ２０１）。ステップＳ２０１の前処理において、伸長部１００ｂは、記憶領域Ｂ１、記憶領域Ｂ２、記憶領域Ｂ３を記憶部１００ｃに確保する。
【００９３】
伸長部１００ｂは、圧縮ファイルＦ２を読み出し（ステップＳ２０２）、伸長用のケヤキ木６０および動的辞書を読み出す（ステップＳ２０３）。例えば、伸長部１００ｂは、トレーラ部に格納された静的辞書に関する情報を、記憶領域Ｂ２に格納する。
【００９４】
伸長部１００ｂは、圧縮データの識別子が「１」であるか否かを判定する（ステップＳ２０４）。伸長部１００ｂは、識別子が「０」である場合には（ステップＳ２０４，Ｎｏ）、伸長用のケヤキ木６０と圧縮データとを比較して、伸長データへのポインタを特定する（ステップＳ２０６）。
【００９５】
伸長部１００ｂは、特定したポインタを基に、圧縮データの伸長データを文字コード変換が行われた伸長データに変換する（ステップＳ２０７）。例えば、伸長部１００ｂは、圧縮された際の文字コード系の文字コードテーブル２００を文字コード変換対象の文字コード系の文字コードテーブル２００に置換する。そして、伸長部１００ｂは、置換した文字コードテーブル２００および特定したポインタを基に、圧縮データの伸長データを文字コード変換が行われた伸長データに変換する。そして、伸長部１００ｂは、ステップＳ２０８に移行する。
【００９６】
伸長部１００ｂは、圧縮データの識別子が「１」である場合には（ステップＳ２０４，Ｙｅｓ）、動的辞書の登録番号を基にして伸長データを特定する（ステップＳ２０５）。そして、伸長部１００ｂは、特定した伸長データを文字コード変換が行われた伸長データに変換する（ステップＳ２０６）。そして、伸長部１００ｂは、ステップＳ２０８に移行する。なお、英文字の場合は、ＡＳＣＩＩ（American1  standard  code  for  information  interchange）などあらゆる文字コード系で同一の文字コード列となるので、特定した伸長データを、例えばＵＴＦ−８からＵＴＦ−１６へ文字コード変換しても、同じ文字コード列となる。
【００９７】
ステップＳ２０８では、伸長部１００ｂは、記憶領域Ｂ３に伸長データの書き込みを行う（ステップＳ２０８）。
【００９８】
伸長部１００ｂは、圧縮ファイルＦ２の終点であるか否かを判定する（ステップＳ２０９）。伸長部１００ｂは、圧縮ファイルＦ２の終点でない場合には（ステップＳ２０９，Ｎｏ）、ステップＳ２０４に移行する。一方、伸長部１００ｂは、圧縮ファイルＦ２の終点である場合には（ステップＳ２０９，Ｙｅｓ）、圧縮ファイルＦ２をクローズし（ステップＳ２１０）、伸長処理を終了する。
【００９９】
次に、本実施例に係る情報処理装置１００の効果について説明する。本実施例に係る情報処理装置１００によれば、第１の文字コードによる文字データ列が、一または複数の文字を含む文字列の単位で圧縮符号化された圧縮ファイルＦ２を入力する。情報処理装置１００は、圧縮ファイルＦ２に含まれ、文字データ列の圧縮符号化の単位それぞれに関連づけられた圧縮符号それぞれを、当該圧縮符号化の単位の第１の文字コード表記に対応する情報から、当該圧縮符号化の単位の第２の文字コード表記に対応する情報にそれぞれ変換する。情報処理装置１００は、圧縮符号化された文字データ列の圧縮符号化の単位それぞれ、および、変換された文字データ列の圧縮符号化の単位それぞれに関連づけられた圧縮情報それぞれから、伸長ファイルＦ３を生成する。かかる構成によれば、情報処理装置１００は、圧縮符号化されたデータ（圧縮符号）を伸長して文字コード変換処理を行うのではなく、圧縮符号化に関する変換情報の部分のみに対して、文字コード変換処理を行うことにより、伸長した際に文字コード変換された文字データ列が出力される伸長ファイルＦ３を生成できる。したがって、情報処理装置１００は、一括伸長後に変換する場合と比べ伸長処理と文字コード変換処理に用いられる記憶領域の無駄をなくすることができる。また、情報処理装置１００は、一括伸長後に変換する場合と比べ伸長処理および文字コード変換処理の処理時間を短縮することができる。
【０１００】
また、本実施例に係る情報処理装置１００によれば、第１の文字コード系の文字のデータ列を圧縮した圧縮符号の識別子が第１識別子であるか第２識別子であるかを判定する。情報処理装置１００は、圧縮符号の識別子が第１識別子である場合には、圧縮符号から得られる伸長文字への位置を特定し、第１の文字コード系の文字のデータ列を記憶する文字コードテーブル２００を第２の文字コード系の文字のデータ列を記憶する文字コードテーブル２００に置換した文字コードテーブル２００と伸長文字へのポインタとを基にして、圧縮符号を伸長する。かかる構成によれば、情報処理装置１００は、一括伸長後に変換する場合と比べ伸長処理と文字コード変換処理に用いられる記憶領域の無駄をなくすることができる。また、情報処理装置１００は、一括伸長後に変換する場合と比べ伸長処理および文字コード変換処理の処理時間を短縮することができる。
【０１０１】
また、本実施例に係る情報処理装置１００によれば、文字のデータ列および該文字のデータ列に対応する圧縮符号を対応付けた静的辞書Ｃ２と、圧縮対象の文字のデータ列とを基にして、圧縮対象の文字のデータ列が静的辞書Ｃ２に登録されているか否かを判定する。情報処理装置１００は、圧縮対象の文字のデータ列が静的辞書Ｃ２に登録されている場合には、静的辞書Ｃ２に登録された圧縮対象の文字のデータ列に対応する圧縮符号に、圧縮対象の文字のデータ列を圧縮する。情報処理装置１００は、圧縮対象の文字のデータ列が静的辞書Ｃ２に登録されていない場合には、圧縮対象の文字のデータ列を動的辞書に登録し、登録位置に基づく情報に、圧縮対象の文字のデータ列を圧縮する。かかる構成によれば、情報処理装置１００は、圧縮対象の文字のデータ列を文字単位に圧縮するので、伸長の際伸長と文字コード変換を１パスで行うことができる。
【０１０２】
下記に、本実施形態に用いられるハードウェア及びソフトウェアについて説明する。図１５は、コンピュータ１のハードウェア構成例を示す図である。コンピュータ１は、例えば、プロセッサ３０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０２、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０３、ドライブ装置３０４、記憶媒体３０５、入力インターフェース（Ｉ／Ｆ）３０６、入力デバイス３０７、出力インターフェース（Ｉ／Ｆ）３０８、出力デバイス３０９、通信インターフェース（Ｉ／Ｆ）３１０、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）インターフェース（Ｉ／Ｆ）３１１およびバス３１２などを含む。それぞれのハードウェアはバス３１２を介して接続されている。  
【０１０３】
ＲＡＭ３０２は読み書き可能なメモリ装置であって、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）やＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）などの半導体メモリ、またはＲＡＭでなくてもフラッシュメモリなどが用いられる。ＲＯＭ３０３は、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）なども含む。ドライブ装置３０４は、記憶媒体３０５に記録された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記憶媒体３０５は、ドライブ装置３０４によって書き込まれた情報を記憶する。記憶媒体３０５は、例えば、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などのフラッシュメモリ、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ブルーレイディスクなどの記憶媒体である。また、例えば、コンピュータ１は、複数種類の記憶媒体それぞれについて、ドライブ装置３０４及び記憶媒体３０５を設ける。
【０１０４】
入力インターフェース３０６は、入力デバイス３０７と接続されており、入力デバイス３０７から受信した入力信号をプロセッサ３０１に伝達する回路である。出力インターフェース３０８は、出力デバイス３０９と接続されており、出力デバイス３０９に、プロセッサ３０１の指示に応じた出力を実行させる回路である。通信インターフェース３１０はネットワーク３を介した通信の制御を行なう回路である。通信インターフェース３１０は、例えばネットワークインターフェースカード（ＮＩＣ）などである。ＳＡＮインターフェース３１１は、ストレージエリアネットワークによりコンピュータ１と接続された記憶装置との通信の制御を行なう回路である。ＳＡＮインターフェース３１１は、例えばホストバスアダプタ（ＨＢＡ）などである。
【０１０５】
入力デバイス３０７は、操作に応じて入力信号を送信する装置である。入力信号は、例えば、キーボードやコンピュータ１の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力デバイス３０９は、コンピュータ１の制御に応じて情報を出力する装置である。出力デバイス３０９は、例えば、ディスプレイなどの画像出力装置（表示デバイス）や、スピーカーなどの音声出力装置などである。また、例えば、タッチスクリーンなどの入出力装置が、入力デバイス３０７及び出力デバイス３０９として用いられる。また、入力デバイス３０７及び出力デバイス３０９は、コンピュータ１と一体になっていてもよいし、コンピュータ１に含まれず、例えば、コンピュータ１に外部から接続する装置であってもよい。
【０１０６】
例えば、プロセッサ３０１は、ＲＯＭ３０３や記憶媒体３０５に記憶されたプログラムをＲＡＭ３０２に読み出し、読み出されたプログラムの手順に従って圧縮部１００ａの処理または伸張部１００ｂの処理を行なう。その際にＲＡＭ３０２はプロセッサ３０１のワークエリアとして用いられる。記憶部１００ｃの機能は、ＲＯＭ３０３および記憶媒体３０５がプログラムファイル（後述のアプリケーションプログラム２４、ミドルウェア２３およびＯＳ２２など）やデータファイル（圧縮対象のファイルＦ１、圧縮されたファイルＦ２など）を記憶し、ＲＡＭ３０２がプロセッサ３０１のワークエリアとして用いられることによって実現される。プロセッサ３０１が読み出すプログラムについては、図１６を用いて説明する。
【０１０７】
図１６は、コンピュータ１で動作するプログラムの構成例を示す図である。コンピュータ１において、図１５に示すハードウェア群２１（３０１〜３１２）の制御を行なうＯＳ（オペレーティング・システム）２２が動作する。ＯＳ２２に従った手順でプロセッサ３０１が動作して、ハードウェア群２１の制御・管理が行なわれることにより、アプリケーションプログラム２４やミドルウェア２３に従った処理がハードウェア群２１で実行される。さらに、コンピュータ１において、ミドルウェア２３またはアプリケーションプログラム２４が、ＲＡＭ３０２に読み出されてプロセッサ３０１により実行される。
【０１０８】
プロセッサ３０１が、圧縮機能が呼び出された場合に、ミドルウェア２３またはアプリケーションプログラム２４の少なくとも一部に基づく処理を行なうことにより、（それらの処理をＯＳ２２に基づいてハードウェア群２１を制御して）圧縮部１００ａの機能が実現される。また、プロセッサ３０１が、伸張機能が呼び出された場合に、ミドルウェア２３またはアプリケーションプログラム２４の少なくとも一部に基づく処理を行なうことにより、（それらの処理をＯＳ２２に基づいてハードウェア群２１を制御して）伸張部１００ｂの機能が実現される。圧縮機能および伸張機能は、それぞれアプリケーションプログラム２４自体に含まれてもよいし、アプリケーションプログラム２４に従って呼び出されることで実行されるミドルウェア２３の一部であってもよい。
【０１０９】
アプリケーションプログラム２４（またはミドルウェア２３）の圧縮機能により得られる圧縮ファイルＦ２は、圧縮ファイルＦ２内の圧縮辞書Ｄ１に基づいて部分的に伸張可能である。圧縮ファイルＦ２の途中を伸張する場合には、伸張対象の部分までの圧縮データの伸張処理が抑制されるため、プロセッサ３０１の負荷が抑制される。また、伸張対象の圧縮データを部分的にＲＡＭ３０２上に展開するので、ワークエリアも削減される。
【０１１０】
図１７は、実施形態のシステムにおける装置の構成例を示す。図１７のシステムは、コンピュータ１ａ、コンピュータ１ｂ、基地局２およびネットワーク３を含む。コンピュータ１ａは、無線または有線の少なくとも一方により、コンピュータ１ｂと接続されたネットワーク３に接続している。
【０１１１】
図６に示す圧縮部１００ａと伸張部１００ｂとは、図１７に示すコンピュータ１ａとコンピュータ１ｂとのいずれに含まれてもよい。コンピュータ１ｂが圧縮部１００ａを含み、コンピュータ１ａが伸張部１００ｂを含んでもよいし、コンピュータ１ｂが圧縮部１００ａを含み、コンピュータ１ａが伸張部１００ｂを含んでもよい。また、コンピュータ１ａとコンピュータ１ｂとの双方が、圧縮部１００ａおよび伸張部１００ｂを備えてもよい。
【０１１２】
以下、上述の実施形態における変形例の一部を説明する。下記の変形例のみでなく、本発明の本旨を逸脱しない範囲の設計変更は適宜行われうる。圧縮処理の対象は、ファイル内のデータ以外にも、システムから出力される監視メッセージなどでもよい。例えば、バッファに順次格納される監視メッセージを上述の圧縮処理により圧縮し、ログファイルとして格納するなどの処理が行なわれる。また、例えば、データベース内のページ単位に圧縮が行なわれてもよいし、複数のページをまとめた単位で圧縮が行なわれてもよい。
また、上述の圧縮処理の対象となるデータは、上述の通り、ＣＪＫ文字のみに限定されるものでない。ＣＪＫ文字と英数字とが混ざったデータであってもよいし、画像・音声などのデータに対して上述の圧縮処理を用いてもよい。
【０１１３】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１１４】
（付記１）コンピュータに、
第１の文字コードによる文字データ列が、一または複数の文字を含む文字列の単位で圧縮符号化された圧縮ファイルを入力し、
前記圧縮ファイルに含まれ、前記文字データ列の圧縮符号化の単位それぞれに関連づけられた圧縮情報それぞれを、当該圧縮符号化の単位の前記第１の文字コード表記に対応する情報から、当該圧縮符号化の単位の第２の文字コード表記に対応する情報にそれぞれ変換し、
前記圧縮符号化された前記文字データ列の圧縮符号化の単位それぞれ、および、前記変換された前記文字データ列の圧縮符号化の単位それぞれに関連づけられた圧縮情報それぞれから、変換圧縮ファイルを生成する、
処理を行わせることを特徴とするプログラム。
【０１１５】
（付記２）前記変換する処理は、
前記第１の文字コードによる文字データ列の圧縮符号化の単位に関連づけられた圧縮情報の識別子が第１識別子であるか第２識別子であるかを判定し、
前記圧縮情報の識別子が第１識別子である場合には、前記圧縮情報から得られる前記第１の文字コード表記に対応する文字データ列への位置を特定し、前記第１の文字コード表記の文字データ列を記憶する第１文字コード表を前記第２の文字コード表記の文字データ列を記憶する第２文字コード表に置換した文字コード表と前記特定した位置とを基にして、前記圧縮情報を前記第１の文字コード表記に対応する情報から前記第２の文字コード表記に対応する情報に変換する
処理を実行させることを特徴とする付記１に記載のプログラム。
【０１１６】
（付記３）前記圧縮情報の識別子が第２識別子である場合には、前記圧縮情報に含まれる登録位置に基づく情報に示される位置の情報を基にして、前記圧縮情報を前記第１の文字コード表記に対応する情報から前記第２の文字コード表記に対応する情報に変換することを特徴とする付記２に記載のプログラム。
【０１１７】
（付記４）第１の文字コードによる文字データ列が、一または複数の文字を含む文字列の単位で圧縮符号化された圧縮ファイルを入力する入力部と、
前記圧縮ファイルに含まれ、前記文字データ列の圧縮符号化の単位それぞれに関連づけられた圧縮情報それぞれを、当該圧縮符号化の単位の前記第１の文字コード表記に対応する情報から、当該圧縮符号化の単位の第２の文字コード表記に対応する情報にそれぞれ変換する変換部と、
前記圧縮符号化された前記文字データ列の圧縮符号化の単位それぞれ、および、前記変換された前記文字データ列の圧縮符号化の単位それぞれに関連づけられた圧縮情報それぞれから、変換圧縮ファイルを生成する生成部と、
を有することを特徴とする装置。
【０１１８】
（付記５）前記変換部は、
前記第１の文字コードによる文字データ列の圧縮符号化の単位に関連づけられた圧縮情報の識別子が第１識別子であるか第２識別子であるかを判定する判定部を含み、
前記判定部によって前記圧縮情報の識別子が第１識別子であると判定された場合には、前記圧縮情報から得られる前記第１の文字コード表記に対応する文字データ列への位置を特定し、前記第１の文字コード表記の文字データ列を記憶する第１文字コード表を前記第２の文字コード表記の文字データ列を記憶する第２文字コード表に置換した文字コード表と前記特定した位置とを基にして、前記圧縮情報を前記第１の文字コード表記に対応する情報から前記第２の文字コード表記に対応する情報に変換する
ことを特徴とする付記４に記載の装置。
【０１１９】
（付記６）コンピュータが、
第１の文字コードによる文字データ列が、一または複数の文字を含む文字列の単位で圧縮符号化された圧縮ファイルを入力し、
前記圧縮ファイルに含まれ、前記文字データ列の圧縮符号化の単位それぞれに関連づけられた圧縮情報それぞれを、当該圧縮符号化の単位の前記第１の文字コード表記に対応する情報から、当該圧縮符号化の単位の第２の文字コード表記に対応する情報にそれぞれ変換し、
前記圧縮符号化された前記文字データ列の圧縮符号化の単位それぞれ、および、前記変換された前記文字データ列の圧縮符号化の単位それぞれに関連づけられた圧縮情報それぞれから、変換圧縮ファイルを生成する、
処理を実行することを特徴とする変換方法。
【０１２０】
（付記７）前記変換する処理は、
前記第１の文字コードによる文字データ列の圧縮符号化の単位に関連づけられた圧縮情報の識別子が第１識別子であるか第２識別子であるかを判定し、
前記圧縮情報の識別子が第１識別子である場合には、前記圧縮情報から得られる前記第１の文字コード表記に対応する文字データ列への位置を特定し、前記第１の文字コード表記の文字データ列を記憶する第１文字コード表を前記第２の文字コード表記の文字データ列を記憶する第２文字コード表に置換した文字コード表と前記特定した位置とを基にして、前記圧縮情報を前記第１の文字コード表記に対応する情報から前記第２の文字コード表記に対応する情報に変換する
処理を実行することを特徴とする付記６に記載の変換方法。
【０１２１】
（付記８）コンピュータに、
文字のデータ列および該文字のデータ列に対応する圧縮符号を対応付けた第１辞書と、圧縮対象の文字のデータ列とを基にして、圧縮対象の文字のデータ列が前記第１辞書に登録されているか否かを判定し、
前記圧縮対象の文字のデータ列が前記第１辞書に登録されている場合には、前記第１辞書に登録された前記圧縮対象の文字のデータ列に対応する圧縮符号に、前記圧縮対象の文字のデータ列を圧縮し、
前記圧縮対象の文字のデータ列が前記第１辞書に登録されていない場合には、前記圧縮対象の文字のデータ列を第２辞書に登録し、登録位置に基づく情報に、前記圧縮対象の文字のデータ列を圧縮する
処理を実行させることを特徴とする圧縮プログラム。
【０１２２】
（付記９）文字のデータ列および該文字のデータ列に対応する圧縮符号を対応付けた第１辞書と、圧縮対象の文字のデータ列とを基にして、圧縮対象の文字のデータ列が前記第１辞書に登録されているか否かを判定する判定部と、
前記圧縮対象の文字のデータ列が前記第１辞書に登録されている場合には、前記第１辞書に登録された前記圧縮対象の文字のデータ列に対応する圧縮符号に、前記圧縮対象の文字のデータ列を圧縮する第１圧縮部と、
前記圧縮対象の文字のデータ列が前記第１辞書に登録されていない場合には、前記圧縮対象の文字のデータ列を第２辞書に登録し、登録位置に基づく情報に、前記圧縮対象の文字のデータ列を圧縮する第２圧縮部と、
を有することを特徴とする圧縮装置。
【符号の説明】
【０１２３】
１００  情報処理装置
１００ａ  圧縮部
１００ｂ  伸長部
１００ｃ  記憶部
２００  文字コードテーブル
【図１】
0006531398.tif 000002
【図２】
0006531398.tif 000003
【図３】
0006531398.tif 000004
【図４】
0006531398.tif 000005
【図５Ａ】
0006531398.tif 000006
【図５Ｂ】
0006531398.tif 000007
【図６】
0006531398.tif 000008
【図７】
0006531398.tif 000009
【図８Ａ】
0006531398.tif 000010
【図８Ｂ】
0006531398.tif 000011
【図９】
0006531398.tif 000012
【図１０】
0006531398.tif 000013
【図１１】
0006531398.tif 000014
【図１２】
0006531398.tif 000015
【図１３】
0006531398.tif 000016
【図１４】
0006531398.tif 000017
【図１５】
0006531398.tif 000018
【図１６】
0006531398.tif 000019