[go: up one dir, main page]

JP6476618B2 - 伸長方法、伸長プログラムおよび伸長装置 - Google Patents

伸長方法、伸長プログラムおよび伸長装置 Download PDF

Info

Publication number
JP6476618B2
JP6476618B2 JP2014140059A JP2014140059A JP6476618B2 JP 6476618 B2 JP6476618 B2 JP 6476618B2 JP 2014140059 A JP2014140059 A JP 2014140059A JP 2014140059 A JP2014140059 A JP 2014140059A JP 6476618 B2 JP6476618 B2 JP 6476618B2
Authority
JP
Japan
Prior art keywords
character
data
storage area
code
decompression
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.)
Expired - Fee Related
Application number
JP2014140059A
Other languages
English (en)
Other versions
JP2016019113A (ja
Inventor
功 宮下
功 宮下
片岡 正弘
正弘 片岡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014140059A priority Critical patent/JP6476618B2/ja
Priority to US14/751,578 priority patent/US9515677B2/en
Priority to CN201510367308.4A priority patent/CN105282554B/zh
Publication of JP2016019113A publication Critical patent/JP2016019113A/ja
Application granted granted Critical
Publication of JP6476618B2 publication Critical patent/JP6476618B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3086Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
    • H03M7/425Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory for the decoding process only
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6005Decoder aspects

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、伸長方法、伸長プログラムおよび伸長装置に関する。
圧縮データに対し、文字コード変換が必要な場合、一般的に伸長処理と文字コード変換処理の順に2パスで実施される(例えば、特許文献1参照)。したがって、伸長処理の結果を記憶する記憶領域が準備される必要がある。
圧縮伸長アルゴリズムとしては、LZ77を用いたZIPが主流である。ZIPでは、圧縮対象の文字列に対して、スライド窓を用いて最長一致の文字列を判定し、圧縮データを生成する。一方、伸長対象の圧縮データに対して、スライド窓を用いて最長一致の文字列を判定し、伸長データを生成する。スライド窓を用いた最長一致文字列の判定は、バイト単位で行われる。
特開2003−30030号公報
しかしながら、圧縮データに対し、伸長処理後に文字単位にコード変換を行う場合、圧縮データの伸長処理と、文字コード変換処理のバイト長が異なるため、別個に処理を実行する必要があるという問題がある。このため、一例として、記憶領域に無駄が生じるという問題がある。一方、別の観点では、処理時間が長くなるという問題がある。
例えば、ZIPの場合、圧縮処理および伸長処理において、最長一致の判定が、バイト単位で行われるのに対して、文字コード変換処理は、文字単位で行われる。文字の長さは、CJK文字を含むUTF−8などの文字コード系では、1〜4バイトのいずれかであることが知られている。つまり、1バイトで表現される文字(例えば、英数字など)もあれば、3バイトで表現される文字(例えば、漢字第1種の一部、第2種漢字およびかな文字など)、4バイトで表現される文字(例えば、漢字第3・第4水準の一部など)も存在する。したがって、伸長処理の最長一致により、バイト単位に生成された伸長データは、文字のバイト単位と異なる。そのため、そのまま文字を単位とする文字コード変換処理に引き渡すことができず、1パスで伸長と文字コード変換を実行することができない。この結果、伸長処理は、圧縮データ全体の伸長結果を記憶領域に記憶することが必要となり、記憶領域に無駄が生じる。また、伸長処理および文字コード変換処理の処理時間が長くなる。
圧縮データの伸長処理と、文字コード変換処理を、別個の処理として行う必要があるという問題について、図1Aおよび図1Bを参照して説明する。図1Aは、LZ77系を利用した伸長変換処理を示す図である。図1Aに示すように、伸長処理は、圧縮データを全て伸長し、全て伸長した伸長データを記憶領域に記憶する。そして、文字コード変換処理は、記憶領域に記憶された全ての伸長データの文字コードを変換し、変換データを生成する。
図1Bは、LZ77系を利用した伸長変換処理を示す図である。図1Bでは、UTF−8の文字コードにおける圧縮データを伸長する場合について説明する。図1Bに示すように、記憶領域A1、A2およびB1、B2が、例えば、それぞれメモリ内に確保される。記憶領域B1は、例えばリードバッファと呼ばれる。伸長処理は、記憶領域B1に格納された圧縮データを、スライド窓に対応した記憶領域A1とA2を用いて最長一致判定を行うことにより伸長する。記憶領域A1は、例えば符号化部と呼ばれる。記憶領域A2は、例えば参照部と呼ばれる。そして、伸長処理は、伸長された伸長データをそのまま記憶領域A2とB2に書き込む。記憶領域B2は、例えばライトバッファと呼ばれる。
例えば、伸長処理の1つ目の最長一致では、記憶領域B1に格納された圧縮データを、記憶領域A1とA2を用いて伸長する。すなわち、伸長処理は、バイト単位で行われるので、伸長された伸長データの文字の区切りを認識しない。そして、伸長処理は、伸長された伸長データをそのまま記憶領域A2とB2に書き込む。図1Bの例では、1つ目の最長一致で伸長された伸長データは、“E2BC98E386”である。この場合、記憶領域B2に書き込まれるデータも、伸長データそのままの“E2BC98E386”である。“E2BC98E386”は、「十」(0xE2BC98)と文字の区切りに満たない「□」(0xE386)からなる。つまり、文字コードの境界とずれたままの「泣き別れ」が発生している。そして、2つ目の最長一致のデータ“93”が記憶領域B2に書き込まれると、文字の区切りを満たす「二」(0xE38693)が生成される。このように、伸長処理は、バイト単位で行われるのに対して、文字コード変換処理は、文字単位で行われるので、伸長処理で得られた伸長データをそのまま文字コード変換することができない。したがって、LZ77系を利用した伸長処理は、圧縮データ全体の伸長を行なってから伸長後の伸長データに対して文字コード変換することとなり、文字コード変換結果分の記憶領域B3を必要とし、伸長処理に用いられる記憶領域A2に無駄が生じる。また、伸長処理および文字コード変換処理の処理時間が長くなる。
1つの側面では、伸長処理と文字コード変換処理に用いられる記憶領域の無駄または効率低下を抑制することを目的とする。また、1つの側面では、伸長処理および文字コード変換処理の処理時間を短縮することを目的とする。
1つの実施態様の伸長方法では、コンピュータが、第1の文字コードのデータを圧縮した符号列に含まれる符号を部分データに伸長し、該伸長された部分データに対し、前記第1の文字コードの情報に基づいて、文字区切りを検出し、該検出された文字区切りで区切られた単位で、前記第1の文字コードと第2の文字コードとを対応づけた情報に基づいて、該伸長された部分データの少なくとも一部を、前記第2の文字コードのデータに変換する処理を実行する。
1つの態様によれば、一括伸長後に変換する場合と比べ伸長処理と文字コード変換処理に用いられる記憶領域の無駄または効率低下を抑制することができる。また、一括伸長後に変換する場合と比べ伸長処理および文字コード変換処理の処理時間を短縮することができる。
図1Aは、LZ77系を利用した伸長変換処理を示す図である。 図1Bは、LZ77系を利用した伸長変換処理を示す図である。 図2Aは、LZ77系を利用した伸長処理の一例を示す図である。 図2Bは、LZ77系を利用した伸長処理の一例を示す図である。 図2Cは、LZ77系を利用した伸長処理の一例を示す図である。 図2Dは、LZ77系を利用した伸長処理の一例を示す図である。 図2Eは、LZ77系を利用した伸長処理の一例を示す図である。 図2Fは、LZ77系を利用した伸長処理の一例を示す図である。 図3Aは、実施例に係る伸長変換処理を示す図(1)である。 図3Bは、実施例に係る伸長変換処理を示す図(2)である。 図4Aは、実施例に係る伸長変換処理の一例を示す図である。 図4Bは、実施例に係る伸長変換処理の一例を示す図である。 図4Cは、実施例に係る伸長変換処理の一例を示す図である。 図4Dは、実施例に係る伸長変換処理の一例を示す図である。 図4Eは、実施例に係る伸長変換処理の一例を示す図である。 図4Fは、実施例に係る伸長変換処理の一例を示す図である。 図4Gは、実施例に係る伸長変換処理の一例を示す図である。 図4Hは、実施例に係る伸長変換処理の一例を示す図である。 図4Iは、実施例に係る伸長変換処理の一例を示す図である。 図4Jは、実施例に係る伸長変換処理の一例を示す図である。 図4Kは、実施例に係る伸長変換処理の一例を示す図である。 図4Lは、実施例に係る伸長変換処理の一例を示す図である。 図5は、伸長装置の機能構成の第1の例を示す図である。 図6は、伸長装置の機能構成の第2の例を示す図である。 図7は、文字コード変換テーブルのデータ構造の一例を示す図である。 図8は、伸長変換処理のフローチャートを示す図である。 図9は、伸長装置のハードウェア構成を示す図である。
以下に、本願の開示する伸長方法、伸長プログラムおよび伸長装置の実施例を図面に基づいて詳細に説明する。なお、実施例によりこの発明が限定されるものではない。
まず、LZ77系を利用した伸長処理について説明する。
[LZ77系を利用した参考例に係る伸長処理の一例]
図2A〜図2Fは、LZ77系を利用した伸長処理の一例を示す図である。図2Aに示すように、記憶領域A1、A2、および、B1、B2が、それぞれメモリ内に確保される。記憶領域A1とA2は、スライド窓に対応し、例えば、符号化部と参照部と呼ばれる。記憶領域B1とB2は、例えば、リードバッファとライトバッファと呼ばれる。また、ポインタPB1、PB2、PA2が、それぞれメモリ内に設定される。ファイルF1内のコンテンツ部分の圧縮データは、記憶領域B1にリードされる。リードバッファB1には、「十一才から十二才まで」という処理対象の文字列について、UTF−8における文字コードをLZ系圧縮した圧縮データが含まれる。なお、リードバッファB1に含まれる「△△△」は、「才から」という文字列の圧縮データであるとする。
ここで、図示されていない圧縮処理では、処理対象の文字列の文字コードについて、既に処理された文字コードとの間で最も長く一致するデータ(最長一致データ)が探索される。既に処理された文字コードは、記憶領域A2に格納される。最長一致データが3バイト未満であった場合、各文字が、それぞれ、1バイト毎に圧縮データとして生成される。圧縮データには、最長一致データに基づく圧縮データでない旨を示す識別子(例えば、「0」)が先頭に含まれる。ここでは、記憶領域B1の「0bE2h」、「0bBCh」、「0b98h」などが、最長一致データに基づく圧縮データでない旨を示す識別子を含む圧縮データである。また、圧縮データの一部として文字コードそのものが用いられることは、一例であり、ハフマン符号化/復号化アルゴリズムにより符号化して得られるハフマン符号が用いられても良いし、他の圧縮アルゴリズムが用いられても良い。
一方、3バイト以上の最長一致データが探索された場合には、最長一致データの記憶領域A2内での位置と、最長一致データのデータ長に基づき圧縮データが生成される。圧縮データには、最長一致データに基づく圧縮データである旨を示す識別子(例えば、「1」)が先頭に含まれる。ここでは、記憶領域A3の「1b0000h05h」が、最長一致データに基づく圧縮データである旨を示す識別子を含む圧縮データである。
このような状況の下、伸長処理は、図2Aに示すファイルF1内のコンテンツ部分のデータを、記憶領域B1にリードする。伸長処理は、記憶領域B1にリードされた圧縮データを、順次記憶領域A1に読み出す。ポインタPB1は、記憶領域B1内の次に読み出される位置を指す位置情報(リードポインタ)である。ここでは、記憶領域B1の圧縮データ「0bE2h」が、ポインタPB1を介して、記憶領域A1に読み出される。読み出された圧縮データは、圧縮データに含まれる識別子に応じた伸長処理が行われる。伸長処理は、識別子が、最長一致データに基づく圧縮データでない旨を示す識別子(図2の例では「0」)である場合、圧縮データの1文字を伸長し、伸長された1文字を記憶領域A2および記憶領域B2に格納する。ここでは、識別子が「0」であるので、文字コードそのものの「E2h」(0xE2)が記憶領域A2および記憶領域B2に格納される。そして、伸長処理は、ポインタPB1、ポインタPB2およびポインタPA2の内容を更新する。ポインタPA2は、記憶領域A2内の末尾を指す位置情報(末尾ポインタ)である。ポインタPB2は、記憶領域B2内の次に書き込まれる位置を指す位置情報(ライトポインタ)である。
次に、図2Bに示すように、伸長処理は、記憶領域B1の圧縮データ「0bBCh」を、ポインタPB1を介して、記憶領域A1に読み出す。読み出された圧縮データは、圧縮データに含まれる識別子に応じた伸長処理が行われる。ここでは、識別子が「0」であるので、文字コードそのものの「BCh」(0xBC)が記憶領域A2および記憶領域B2に格納される。そして、伸長処理は、ポインタPB1、ポインタPB2およびポインタPA2の内容を更新する。
次に、図2Cに示すように、伸長処理は、記憶領域B1の圧縮データ「0b98h」を、ポインタPB1を介して、記憶領域A1に読み出す。読み出された圧縮データは、圧縮データに含まれる識別子に応じた伸長処理が行われる。ここでは、識別子が「0」であるので、文字コードそのものの「98h」(0x98)が記憶領域A2および記憶領域B2に格納される。そして、伸長処理は、ポインタPB1、ポインタPB2およびポインタPA2の内容を更新する。
次に、図2Dに示すように、記憶領域B1の圧縮データについて、繰り返し伸長処理が行われ、「十一才から」という文字列に対応する圧縮データが、UTF−8におけるコードに伸長される。記憶領域A1および記憶領域A2には、「E2BC98hE38692h○h○h○h」が格納される。格納された文字コードは、「十一才から」という文字列に対応する文字コードである。
次に、図2Eに示すように、伸長処理は、記憶領域B1の圧縮データ「1b0000h05h」を、ポインタPB1を介して、記憶領域A1に読み出す。読み出された圧縮データは、圧縮データに含まれる識別子に応じた伸長処理が行われる。伸長処理は、識別子が、最長一致データに基づく圧縮データである旨を示す識別子(図2の例では「1」)である場合、圧縮データに基づいて最長一致文字列を伸長する。伸長処理は、伸長された文字列を記憶領域A2および記憶領域B2に格納する。ここでは、識別子が「1」であるので、圧縮データに含まれる最長一致データのデータ長および位置の情報に基づいて、記憶領域A2から文字コード列が読み出される。すなわち、最長一致データのデータ長が「05h」、位置の情報が「0000h」に基づいて、伸長された文字列「E2BC98hE386h」が読み出される。そして、伸長処理は、読み出された文字列「E2BC98hE386h」を、記憶領域A2および記憶領域B2に格納する。そして、伸長処理は、ポインタPB1、ポインタPB2およびポインタPA2の内容を更新する。この結果、記憶領域B2に格納された「E2BC98hE386h」の「E386h」は、文字の区切りに満たないので、泣き別れが発生している。
そして、図2Fに示すように、伸長処理は、記憶領域B1の圧縮データ「0b93h」を、ポインタPB1を介して、記憶領域A1に読み出す。読み出された圧縮データは、圧縮データに含まれる識別子に応じた伸長処理が行われる。ここでは、識別子が「0」であるので、文字コードそのものの「93h」(0x93)が記憶領域A2および記憶領域B2に格納される。そして、伸長処理は、ポインタPB1、ポインタPB2およびポインタPA2の内容を更新する。この結果、記憶領域B2の「E38693h」は、文字の区切りを満たすこととなり、泣き別れが解消されることになる。
その後、圧縮データが全て伸長されると、伸長処理は、記憶領域B2に記憶されたUTF−8における文字コード列から1文字に対応する文字コード列を切り出し、予め指定された文字コード系の文字コード列に変換する。そして、伸長処理は、変換した文字コード列を記憶領域B3に格納する。記憶領域B3は、例えば、変換後バッファである。ここでは、UTF−8からシフトJISに変換された結果が表されている。そして、伸長処理は、記憶領域B3の変換データに基づいて、ファイルF2を生成する。
これにより、LZ77系を利用した参考例に係る伸長処理では、圧縮データの伸長結果を文字コード変換が行われた状態にする場合、全ての伸長結果を蓄積する記憶領域B2と全ての変換結果を蓄積する記憶領域B3とを要するので、記憶領域の増大が見込まれる。すなわち、かかる伸長処理では、全ての伸長結果を蓄積する記憶領域B2を必要とし、伸長処理に用いられる記憶領域B2に無駄が生じる。また、かかる伸長処理では、伸長処理に用いられる記憶領域B2へのI/Oが発生するため、文字コード変換処理を含む伸長処理の処理時間が長くなる。
[実施例に係る伸長変換処理]
図3Aおよび図3Bは、実施例に係る伸長変換処理を示す図である。図3Aに示すように、伸長変換処理は、圧縮データ毎に、参照部を用いて圧縮データを伸長し、伸長した伸長データを中間伸長部に蓄積する。伸長変換処理は、中間伸長部に蓄積した伸長データの先頭バイトに基づいて文字長を取得する。そして、伸長変換処理は、中間伸長部の蓄積された伸長データが文字長以上となった場合に、文字変換部を用いて中間伸長部の先頭から文字長分の伸長データの文字コードを変換し、変換データを生成する。なお、圧縮データを伸長した結果の伸長データは、部分データの一例である。
図3Bに示すように、記憶領域A1〜A4,B1、B2が、例えば、それぞれメモリ内に確保される。なお、記憶領域A1(例えば、符号化部)、A2(例えば、参照部)、B1(例えば、リードバッファ)、および、B2(例えば、ライトバッファ)は、図1Bに示す伸長処理と同一の構成である。伸長変換処理は、最長一致の形式により圧縮された符号列内の符号を、記憶領域A1とA2を用いて最長一致となる特定の固まりのバイト列を示すデータ列に伸長し、伸長したデータ列(伸長データ)を記憶領域A3に記憶する。記憶領域A3は、例えば、中間伸長部と呼ばれる。そして、伸長変換処理は、記憶領域A3に蓄積されたデータ列に第1の文字コードの文字を認識すると、認識した文字のデータ列を第2の文字コードのデータ列に変換する。
例えば、伸長変換処理は、UTF−8における文字コードを伸長する場合、記憶領域B1に格納された圧縮データを、記憶領域A1とA2を用いて伸長し、伸長された伸長データを記憶領域A2に格納する。そして、伸長変換処理は、伸長された伸長データを記憶領域B2では無く、記憶領域A3に書き込む。ここでは、伸長変換処理は、バイト単位で伸長するので、伸長された伸長データのUTF−8の文字の区切りを認識しない。
そして、伸長変換処理は、記憶領域A3に記憶された伸長データの先頭バイトに基づいて、1文字に対応する文字コードの長さを文字長として取得する。一例として、先頭バイトが「E2」である場合、文字長は3バイトになる。そして、伸長変換処理は、記憶領域A3に記憶された伸長データの長さが、取得した文字長以上であるか否かを判定する。そして、伸長変換処理は、取得した文字長以上であると判定した場合、記憶領域A3に記憶された伸長データに文字の区切りを検知する。そして、伸長変換処理は、記憶領域A3に記憶された文字長分の伸長データを記憶領域A4に格納する。図3の例では、先行して伸長された伸長データは、“E2BC98E386”である。記憶領域A3に記憶された伸長データ“E2BC98E386”の長さは5であり、伸長データの先頭バイトが「E2」であるので文字長は3である。伸長データの長さ(5)は、文字長(3)以上であるので、文字長以上であると判定される。記憶領域A3に記憶された文字長(3)分の「E2BC98」が記憶領域A4に格納される。ここでは、伸長変換処理は、伸長データに文字の区切りを認識する。つまり、文字コードの境界とずれたままの「泣き別れ」の発生が抑制される。
そして、伸長変換処理は、記憶領域A4に格納された伸長データを送信先で用いられる文字コードに変換し、記憶領域B2に書き込む。記憶領域B2は、例えばライトバッファと呼ばれる。図3Bの例では、記憶領域A4に記憶されたUTF−8の「E2BC98」は、シフトJISの「8F5C」に変換され、変換データとして記憶領域B2に書き込まれる。
次に、伸長変換処理は、次に伸長された伸長データを記憶領域A2に格納する。ここでは、伸長変換処理は、バイト単位で伸長するので、伸長された伸長データのUTF−8の文字の区切りを認識しない。そして、伸長変換処理は、伸長された伸長データを記憶領域A3に書き込む。
そして、伸長変換処理は、記憶領域A3に記憶された伸長データの先頭バイトに基づいて、文字長を取得する。一例として、先頭バイトが「E3」である場合、文字長は3バイトである。そして、伸長変換処理は、記憶領域A3に記憶された伸長データの長さが、取得した文字長以上であるか否かを判定する。そして、伸長変換処理は、取得した文字長以上であると判定した場合、記憶領域A3に記憶された伸長データに文字の区切りを検知する。そして、伸長変換処理は、記憶領域A3に記憶された文字長分の伸長データを記憶領域A4に格納する。図3Bの例では、次に伸長された伸長データは、“93”である。記憶領域A4に記憶された残りの伸長データ“E386”と次に伸長された伸長データ“93”の長さはトータルで3であり、伸長データの先頭バイトが「E3」であるので文字長は3である。伸長データの長さ(3)は、文字長(3)以上であるので、文字長以上であると判定され、文字長までの「E38693」が記憶領域A4に格納される。ここでは、伸長変換処理は、伸長データに文字の区切りを認識する。つまり、文字コードの境界とずれたままの「泣き別れ」の発生が抑制される。
そして、伸長変換処理は、記憶領域A4に格納された伸長データを送信先で用いられる文字コードに変換し、記憶領域B2に書き込む。図3Bの例では、記憶領域A4に記憶されたUTF−8の「E38693」は、シフトJISの「93F1」に変換され、変換データとして記憶領域B2に書き込まれる。
これにより、伸長変換処理は、バイト単位で伸長するが、伸長データの文字の区切りを判別して文字の区切りまでの伸長データを文字コード変換し、変換データを記憶領域B2(例えば、ライトバッファ)に格納する。このため、伸長変換処理は、全ての伸長データを蓄積する記憶領域を準備しなくてもよく、伸長処理に用いられる記憶領域の無駄をなくすことができる。また、伸長変換処理は、全ての伸長データを記憶領域に蓄積したり、当該記憶領域から伸長データを読み出したりしないで、文字コード変換処理を実現できるので、処理時間が短縮できる。
[実施例に係る伸長変換処理の一例]
図4A〜図4Lは、実施例に係る伸長変換処理の一例を示す図である。図4Aに示すように、記憶領域A1〜A4、B1、B2が、それぞれメモリ内に確保される。また、ポインタPB1、PB2、PA2が、それぞれメモリ内に設定される。なお、記憶領域A1、A2、B1、B2、およびポインタPB1、PB2、PA2は、図1Bに示す伸長処理と同一の構成である。記憶領域A3は、例えば、中間伸長部と呼ばれる。記憶領域A4は、例えば、文字変換部と呼ばれる。ファイルF1内のコンテンツ部分の圧縮データは、記憶領域B1にリードされる。リードバッファB1には、「十一才から十二才まで」という処理対象の文字列について、UTF−8におけるコードをLZ系圧縮した圧縮データが含まれる。なお、リードバッファB1に含まれる「△△△」は、「才から」という文字列の圧縮データであるとする。また、圧縮データは、前述した最長一致データの探索により得られる形式のデータであるとする。
このような状況の下、伸長変換処理は、図4Aに示すファイルF1内のコンテンツ部分のデータを、記憶領域B1にリードする。そして、伸長変換処理は、記憶領域B1にリードされた圧縮データを、順次記憶領域A1に読み出す。ポインタPB1は、記憶領域B1内の圧縮データの読み出し位置を指すリードポインタである。ここでは、記憶領域A3の圧縮データ「0bE2h」が、記憶領域A1に読み出される。そして、伸長変換処理は、読み出した圧縮データについて、圧縮データに含まれる識別子に応じて伸長処理を行う。伸長変換処理は、識別子が最長一致データに基づく圧縮データでない旨を示す識別子(図2の例では「0」)である場合、圧縮データの1文字を伸長し、伸長した1文字を記憶領域A2および記憶領域A3に格納する。ここでは、識別子が「0」であるので、文字コードそのものの「E2h」(0xE2)が記憶領域A2および記憶領域A3に格納される。そして、伸長変換処理は、格納された文字コードの長さを格納長として一次領域L1に格納する。ここでは、一次領域L1には、1バイトであることを示す「1」が格納される。そして、伸長変換処理は、ポインタPB1およびポインタPA2の内容を更新する。
次に、図4Bに示すように、伸長変換処理は、記憶領域A3に記憶された伸長データの先頭バイトを用いて、1文字に対応する文字コードの長さを文字長として取得する。文字長は、一例として、先頭バイトと文字長との対応関係を記憶する対応関係テーブルに基づいて取得される。伸長変換処理は、取得した文字長を一次領域L2に格納する。ここでは、先頭バイトが「E2」であるので、文字長として3バイトであることを示す「3」が一次領域L2に格納される。そして、伸長変換処理は、記憶領域A3に記憶された伸長データの長さが、取得した文字長以上であるか否かを判定する。伸長変換処理は、取得した文字長以上であると判定した場合、取得した文字長までの伸長データを記憶領域A4に格納する。一方、伸長変換処理は、取得した文字長以上でないと判定した場合、次の伸長処理に移行する。ここでは、記憶領域A3に記憶された伸長データの長さは一時領域L1に記憶された「1」であり、文字長は一次領域L2に記憶された「3」であるので、記憶領域A3に記憶された伸長データの長さは文字長以上でないと判定される。そこで、伸長変換処理は、次の伸長処理に移行する。
次に、図4Cに示すように、伸長変換処理は、記憶領域B1の圧縮データ「0bBCh」を、ポインタPB1を介して、記憶領域A1に読み出す。そして、伸長変換処理は、読み出した圧縮データについて、圧縮データに含まれる識別子に応じて伸長処理を行う。ここでは、識別子が「0」であるので、文字コードそのものの「BCh」(0xBC)が記憶領域A2および記憶領域A3に格納される。そして、伸長変換処理は、記憶領域A3に格納されている文字コードの長さを一次領域L1に格納する。ここでは、一次領域L1には、前回の1バイトと今回の1バイトとから2バイトであることを示す「2」が格納される。そして、伸長変換処理は、ポインタPB1およびポインタPA2の内容を更新する。
次に、図4Dに示すように、伸長変換処理は、記憶領域A3に記憶された伸長データの先頭バイトを用いて、1文字に対応する文字コードの長さを文字長として取得する。伸長変換処理は、取得した文字長を一次領域L2に格納する。ここでは、先頭バイトが「E2」であるので、文字長として3バイトであることを示す「3」が一次領域L2に格納される。そして、伸長変換処理は、記憶領域A3に記憶された伸長データの長さが、取得した文字長以上であるか否かを判定する。ここでは、記憶領域A3に記憶された伸長データの長さは一時領域L1に記憶された「2」であり、文字長は一次領域L2に記憶された「3」であるので、記憶領域A3に記憶された伸長データの長さは文字長以上でないと判定される。そこで、伸長変換処理は、次の伸長処理に移行する。
次に、図4Eに示すように、伸長変換処理は、記憶領域B1の圧縮データ「0b98h」を、ポインタPB1を介して、記憶領域A1に読み出す。そして、伸長変換処理は、読み出した圧縮データについて、圧縮データに含まれる識別子に応じて伸長処理を行う。ここでは、識別子が「0」であるので、文字コードそのものの「98h」(0x98)が記憶領域A2および記憶領域A3に格納される。そして、伸長変換処理は、記憶領域A3に格納されたトータルの文字コードの長さを一次領域L1に格納する。ここでは、一次領域L1には、前回の2バイトと今回の1バイトとから3バイトであることを示す「3」が格納される。そして、伸長変換処理は、ポインタPB1およびポインタPA2の内容を更新する。
次に、図4Fに示すように、伸長変換処理は、記憶領域A3に記憶された伸長データの先頭バイトを用いて、1文字に対応する文字コードの長さを文字長として取得する。伸長変換処理は、取得した文字長を一次領域L2に格納する。ここでは、先頭バイトが「E2」であるので、文字長として3バイトであることを示す「3」が一次領域L2に格納される。そして、伸長変換処理は、記憶領域A3に記憶された伸長データの長さが、取得した文字長以上であるか否かを判定する。ここでは、記憶領域A3に記憶された伸長データの長さは一時領域L1に記憶された「3」であり、文字長は一次領域L2に記憶された「3」であるので、記憶領域A3に記憶された伸長データの長さは文字長以上であると判定される。
そして、伸長変換処理は、取得した文字長以上であると判定した場合、記憶領域A3の先頭から文字長分の伸長データを、記憶領域A4を介して変換先の文字コードに変換する。例えば、伸長変換処理は、記憶領域A3に記憶された文字コードをもとに、文字コード変換テーブルから変換先の文字コードを取得する。そして、伸長変換処理は、取得した文字コードを記憶領域A4に格納する。ここでいう文字コード変換テーブルとは、文字コードの変換に用いられるテーブルである。図4Fには、文字「十」に対する、UTF−8およびシフトJIS間の文字コード変換に用いられる文字コード変換テーブルの一例が示されている。ここでは、伸長変換処理は、文字長(3)分のUTF−8の「E2BC98」をもとに、文字コード変換テーブルから変換先のシフトJISの「8F5C」を取得し、記憶領域A4に格納する。
そして、伸長変換処理は、記憶領域A4に格納された文字コードを記憶領域B2に格納する。そして、伸長変換処理は、一次領域L1に記憶された格納長を「0」に更新するとともに、記憶領域A3内の変換対象となった伸長データを左にシフトする。この結果、記憶領域A3には、伸長データの変換対象がクリアされる。これにより、伸長変換処理は、圧縮データを順次伸長しながら文字の区切りを判別し、文字の区切りまでの伸長データを文字コード変換することができる。
続いて、伸長変換処理は、繰り返し、伸長処理および変換処理を行う。そして、図4Gに示すように、伸長変換処理は、記憶領域B1に記憶された圧縮データのうち「十一才から」に対応する圧縮データについて、UTF−8からシフトJISに変換した文字コードを記憶領域B2に格納する。
次に、図4Hに示すように、伸長変換処理は、記憶領域B1の圧縮データ「1b0000h05h」を、ポインタPB1を介して、記憶領域A1に読み出す。伸長変換処理は、読み出した圧縮データについて、圧縮データに含まれる識別子に応じて伸長処理を行う。ここでは、伸長変換処理は、識別子が「1」であるので、圧縮データに含まれる最長一致データのデータ長および位置の情報に基づいて、記憶領域A2から文字コード列を読み出し、圧縮データを伸長する。すなわち、伸長変換処理は、最長一致データのデータ長を示す「05h」、位置の情報を示す「0000h」に基づいて、文字コード列「E2BC98hE386h」を読み出し、圧縮データを伸長する。そして、伸長変換処理は、読み出した文字列「E2BC98hE386h」を、記憶領域A2および記憶領域A3に格納する。そして、ポインタPB1およびポインタPA2の内容を更新する。
次に、図4Iに示すように、伸長変換処理は、記憶領域A3に記憶された伸長データの先頭バイトを用いて、1文字に対応する文字コードの長さを文字長として取得する。伸長変換処理は、取得した文字長を一次領域L2に格納する。ここでは、先頭バイトが「E2」であるので、文字長として3バイトであることを示す「3」が一次領域L2に格納される。そして、伸長変換処理は、記憶領域A3に記憶された伸長データの長さが、取得した文字長以上であるか否かを判定する。ここでは、記憶領域A3に記憶された伸長データの長さは一時領域L1に記憶された「5」であり、文字長は一次領域L2に記憶された「3」であるので、記憶領域A3に記憶された伸長データの長さは文字長以上であると判定される。
そして、伸長変換処理は、取得した文字長以上であると判定した場合、取得した文字長までの伸長データを、記憶領域A4を介して変換先の文字コードに変換する。例えば、伸長変換処理は、記憶領域A3に記憶された文字コードをもとに、文字コード変換テーブルから変換先の文字を取得する。そして、伸長変換処理は、取得した文字を記憶領域A4に格納する。ここでは、伸長変換処理は、文字長(3)分のUTF−8の「E2BC98」をもとに、文字コード変換テーブルから変換先のシフトJISの「8F5C」を取得し、記憶領域A4に格納する。
そして、伸長変換処理は、記憶領域A4に格納された文字コードを記憶領域B2に格納する。そして、伸長変換処理は、一次領域L1に記憶された格納長を「2」に更新するとともに、記憶領域A3内の変換対象となった伸長データを左にシフトする。この結果、記憶領域A3には、「E386」が記憶される。これにより、伸長変換処理は、圧縮データを順次伸長しながら、文字の区切りまでの伸長データを文字コード変換することができる。
次に、図4Jに示すように、伸長変換処理は、記憶領域A3に記憶された伸長データの先頭バイトを用いて、1文字に対応する文字コードの長さを文字長として取得する。伸長変換処理は、取得した文字長を一次領域L2に格納する。ここでは、先頭バイトが「E3」であるので、文字長として3バイトであることを示す「3」が一次領域L2に格納される。そして、伸長変換処理は、記憶領域A3に記憶された伸長データの長さが、取得した文字長以上であるか否かを判定する。ここでは、記憶領域A3に記憶された伸長データの長さは一時領域L1に記憶された「2」であり、文字長は一次領域L2に記憶された「3」であるので、記憶領域A3に記憶された伸長データの長さは文字長以上でないと判定される。そこで、伸長変換処理は、次の伸長処理に移行する。
次に、図4Kに示すように、伸長変換処理は、記憶領域B1の圧縮データ「0b93h」を、ポインタPB1を介して、記憶領域A1に読み出す。そして、伸長変換処理は、読み出した圧縮データについて、圧縮データに含まれる識別子に応じて伸長処理を行う。ここでは、識別子が「0」であるので、文字コードそのものの「93h」(0x93)が記憶領域A2および記憶領域A3に格納される。そして、伸長変換処理は、記憶領域A3に格納されたトータルの文字コードの長さを一次領域L1に格納する。ここでは、一次領域L1には、前回の2バイトと今回の1バイトとから3バイトであることを示す「3」が格納される。そして、伸長変換処理は、ポインタPB1およびポインタPA2の内容を更新する。
次に、図4Lに示すように、伸長変換処理は、記憶領域A3に記憶された伸長データの先頭バイトを用いて、1文字に対応する文字コードの長さを文字長として取得する。伸長変換処理は、取得した文字長を一次領域L2に格納する。ここでは、先頭バイトが「E3」であるので、文字長として3バイトであることを示す「3」が一次領域L2に格納される。そして、伸長変換処理は、記憶領域A3に記憶された伸長データの長さが、取得した文字長以上であるか否かを判定する。ここでは、記憶領域A3に記憶された伸長データの長さは一時領域L1に記憶された「3」であり、文字長は一次領域L2に記憶された「3」であるので、記憶領域A3に記憶された伸長データの長さは文字長以上であると判定される。
そして、伸長変換処理は、取得した文字長以上であると判定した場合、取得した文字長までの伸長データを、記憶領域A4を介して変換先の文字コードに変換する。例えば、伸長変換処理は、記憶領域A3に記憶された文字コードをもとに、文字コード変換テーブルから変換先の文字を取得する。そして、伸長変換処理は、取得した文字を記憶領域A4に格納する。ここでは、伸長変換処理は、文字長(3)分のUTF−8の「E38693」をもとに、文字コード変換テーブルから変換先のシフトJISの「93F1」を取得し、記憶領域A4に格納する。
そして、伸長変換処理は、記憶領域A4に格納された文字コードを記憶領域B2に格納する。そして、伸長変換処理は、一次領域L1に記憶された格納長を「0」に更新するとともに、記憶領域A3内の変換対象となった伸長データを左にシフトする。この結果、記憶領域A3には、伸長データの変換対象がクリアされる。
その後、圧縮データが全て伸長されると、伸長変換処理は、記憶領域B2に記憶された変換データに基づいて、ファイルF2を生成する。これにより、伸長変換処理は、バイト単位で伸長するが、伸長データの文字の区切りを判別して文字の区切りまでの伸長データを文字コード変換し、変換データとして記憶領域B2に格納するので、全ての伸長結果を蓄積する記憶領域分を減らすことができる。また、伸長変換処理は、全ての伸長データを記憶領域に蓄積したり、当該記憶領域から伸長データを読み出したりしないで、文字コード変換処理を実現できるので、処理時間が短縮できる。
[参考例に係る伸長装置の機能構成]
次に、図5を参照して、LZ777系を利用した参考例に係る伸長変換処理を実行する伸長装置の機能構成について説明する。図5は、伸長装置の機能構成の第1の例を示す図である。図5に示すように、伸長装置100は、制御部110と記憶部120とを有する。
制御部110は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。そして、制御部110は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路の電子回路に対応する。または、制御部110は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路に対応する。また、制御部110は、ファイルリード部111、圧縮符号判定部112、1文字伸長部113、最長一致文字列伸長部114、参照部更新部115、ライトバッファ更新部116、文字切り出し変換部117およびファイルライト部118を有する。
記憶部120は、例えばフラッシュメモリ(Flash Memory)やFRAM(登録商標)(Ferroelectric Random Access Memory)などの不揮発性の半導体メモリ素子などの記憶装置に対応する。記憶部120には、圧縮処理により得られる圧縮データを記憶するファイルF1や、ファイルF1に記憶された圧縮データを伸長および変換して得られるファイルF2が格納される。また、記憶部120は、制御部110のワークエリアとして用いられる。
制御部110は、各機能部を制御して、伸長処理および変換処理を実現する。制御部110は、各機能部の処理に用いるデータを保持するため、記憶部120に記憶領域を確保する。記憶領域は、例えば、上述の記憶領域A1、A2、およびB1、B2、B3などである。なお、以降では、記憶領域A1、A2、およびB1、B2、B3を、それぞれ、符号化部、参照部、リードバッファ、ライトバッファ、変換後バッファとして説明する。
ファイルリード部111は、圧縮データを記憶するファイルF1から圧縮データを読み出し、記憶部120に確保されたリードバッファに格納する。
圧縮符号判定部112は、リードバッファ内の読み出し位置の圧縮符号を読み出し、読み出した圧縮符号に含まれる識別子を判定する。
1文字伸長部113は、識別子が最長一致データに基づく圧縮符号でない旨を示す識別子であると判定された場合、圧縮符号の1文字を伸長する。
最長一致文字列伸長部114は、識別子が最長一致データに基づく圧縮符号である旨を示す識別子であると判定された場合、圧縮符号に基づいて最長一致文字列に伸長する。例えば、最長一致文字列伸長部114は、圧縮符号に含まれる最長一致データのデータ長および位置の情報に基づいて、参照部から文字コード列を読み出す。
参照部更新部115は、1文字伸長部113によって伸長された1文字の文字コードを参照部に格納し、参照部を更新する。参照部更新部115は、最長一致文字列伸長部114によって伸長された文字コード列を参照部に格納し、参照部を更新する。
ライトバッファ更新部116は、1文字伸長部113によって伸長された1文字の文字コードをライトバッファに格納し、ライトバッファを更新する。ライトバッファ更新部116は、最長一致文字列伸長部114によって伸長された文字コード列をライトバッファに格納し、ライトバッファを更新する。例えば、ライトバッファ更新部116は、既にライトバッファに記憶されている文字コード列の後ろに、今回伸長された1文字の文字コードまたは文字コード列を格納する。
文字切り出し変換部117は、圧縮データが全て伸長されると、ライトバッファから1文字に対応する文字コード列を順次切り出す。そして、文字切り出し変換部117は、切り出した文字コード列を、送信先で用いられる文字コード系の文字コード列に変換する。そして、文字切り出し変換部117は、変換した文字コード列を変換後バッファに格納する。
ファイルライト部118は、変換後バッファに記憶された変換後の変換データをファイルF2に書き込む。これにより、伸長装置100は、圧縮データ全体を伸長した後、伸長後の伸長データに対して文字コード変換するので、ライトバッファと変換後バッファとを要することとなり、記憶領域を抑制することができない。また、伸長装置100は、伸長処理に用いられるライトバッファへのI/Oが発生するため、文字コード変換処理を含む伸長処理の処理時間が長くなる。
[実施例に係る伸長装置の機能構成]
次に、図6を参照して、実施例に係る伸長変換処理を実行する伸長装置の機能構成について説明する。図6は、伸長装置の機能構成の第2の例を示す図である。図6に示すように、伸長装置1は、制御部10と記憶部20とを有する。
制御部10は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。そして、制御部10は、例えば、ASICやFPGAなどの集積回路の電子回路に対応する。または、制御部10は、CPUやMPUなどの電子回路に対応する。また、制御部11は、ファイルリード部11、圧縮符号判定部12、1文字伸長部13、最長一致文字列伸長部14、参照部更新部15、中間伸長部更新部16、文字コード変換部17、ライトバッファ更新部18およびファイルライト部19を有する。
記憶部20は、例えばフラッシュメモリやFRAMなどの不揮発性の半導体メモリ素子などの記憶装置に対応する。記憶部20には、圧縮処理により得られる圧縮データを記憶するファイルF1や、ファイルF1に記憶された圧縮データを伸長および変換して得られるファイルF2が格納される。例えば、記憶部20は、文字コード変換テーブル21および対応関係テーブル22を記憶する。また、記憶部20は、制御部10のワークエリアとして用いられる。
文字コード変換テーブル21は、文字コードの変換に用いられる。文字コード変換テーブル21は、文字毎に変換元の文字コードのデータ列と変換先の文字コードのデータ列とを対応付けて記憶する。なお、文字コード変換テーブル21のデータ構造は、後述する。
対応関係テーブル22は、文字の先頭バイトの文字コードと文字の文字コードの長さを示す文字長との対応関係を記憶する。一例として、文字コード系がUTF−8である場合、先頭バイトの文字コードが「E3」であるとき、文字長として「3」(バイト)と記憶している。また、先頭バイトの文字コードが「E2」であるとき、文字長として「3」(バイト)と記憶している。
制御部10は、各機能部を制御して、伸長処理および変換処理を実現する。制御部10は、各機能部の処理に用いるデータを保持するため、記憶部20に記憶領域を確保する。記憶領域は、例えば、上述の記憶領域A1〜A4およびB1、B2などである。なお、以降では、記憶領域A1〜A4を、それぞれ、符号化部、参照部、中間伸長部、文字変換部として説明する。記憶領域B1、B2を、それぞれ、リードバッファ、ライトバッファとして説明する。
ファイルリード部11は、圧縮データを記憶するファイルF1から圧縮データを読み出し、記憶部20に確保されたリードバッファに格納する。例えば、ファイルリード部11は、指定されたファイルF1の伸長変換処理が呼び出されると、当該ファイルF1から圧縮データを読み出す。そして、ファイルリード部11は、読み出した圧縮データをリードバッファに格納する。なお、ファイルリード部11は、伸長変換処理の呼び出しがされる際、送信先で用いられる文字コード系を取得する。
圧縮符号判定部12は、リードバッファ内の読み出し位置の圧縮符号を読み出し、読み出した圧縮符号に含まれる識別子を判定する。例えば、圧縮符号判定部12は、読み出し位置の圧縮符号に含まれる識別子が最長一致データに基づく圧縮符号でない旨を示す識別子であるか、当該識別子が最長一致データに基づく圧縮符号である旨を示す識別子であるかを判定する。一例として、圧縮符号が「0bE2h」である場合、圧縮符号の先頭に含まれる識別子が「0」であるので、当該識別子は、最長一致データに基づく圧縮符号でない旨を示す識別子であると判定される。別の例として、圧縮符号が「1b0000h05h」である場合、圧縮符号の先頭に含まれる識別子が「1」であるので、当該識別子は、最長一致データに基づく圧縮符号である旨を示す識別子であると判定される。
1文字伸長部13は、識別子が最長一致データに基づく圧縮符号でない旨を示す識別子であると判定された場合、圧縮符号の1文字を伸長する。例えば、1文字伸長部13は、識別子が「0」であると判定された場合、圧縮符号に含まれる文字コードそのものを伸長する。一例として、圧縮符号が「0bE2h」である場合、「E2h」が伸長されたコードとして取得される。
最長一致文字列伸長部14は、識別子が最長一致データに基づく圧縮符号である旨を示す識別子であると判定された場合、圧縮符号に基づいて最長一致文字列に伸長する。例えば、最長一致文字列伸長部14は、識別子が「1」であると判定された場合、圧縮符号に含まれる最長一致データのデータ長および位置の情報に基づいて、参照部から文字コード列を読み出す。一例として、圧縮符号が「1b0000h05h」である場合、参照部の位置「0000h」からデータ長「05h」分の文字コード列が読み出される。
参照部更新部15は、1文字伸長部13によって伸長された1文字の文字コードを参照部に格納し、参照部を更新する。参照部更新部15は、最長一致文字列伸長部14によって伸長された文字コード列を参照部に格納し、参照部を更新する。
中間伸長部更新部16は、中間伸長部を更新する。例えば、中間伸長部更新部16は、1文字伸長部13によって伸長された1文字の文字コードを中間伸長部に格納し、中間伸長部を更新する。また、中間伸長部更新部16は、最長一致文字列伸長部14によって伸長された文字コード列を中間伸長部に格納し、中間伸長部を更新する。また、中間伸長部更新部16は、中間伸長部の先頭バイトをもとに、対応関係テーブル22から文字長を取得する。また、中間伸長部更新部16は、中間伸長部に記憶された伸長データの長さが文字長以上であるか否かを判定する。中間伸長部更新部16は、中間伸長部に記憶された伸長データの長さが文字長以上であると判定した場合、文字の区切りを検知し、中間伸長部の先頭から文字長分の伸長データを変換対象とする。なお、中間伸長部更新部16は、中間伸長部に記憶された伸長データの長さが文字長以上でないと判定した場合、文字の区切りを検知できず、次の圧縮符号の伸長処理に移行する。
文字コード変換部17は、伸長データの文字コードを変換する。例えば、文字コード変換部17は、中間伸長部更新部16によって変換対象とされた伸長データの文字コードをもとに、文字コード変換テーブル21から、変換先の文字コード系の文字コードを取得する。そして、文字コード変換部17は、取得した文字コードを文字変換部に格納する。
ライトバッファ更新部18は、文字コード変換部17によって変換された文字コードを変換データとしてライトバッファに格納し、ライトバッファを更新する。例えば、ライトバッファ更新部18は、既にライトバッファに記憶されている文字コードの後ろに、今回変換された文字コードを格納する。
ファイルライト部19は、ライトバッファに記憶された変換後の変換データをファイルF2に書き込む。これにより、伸長装置1は、バイト単位で伸長するが、伸長データの文字の区切りを判別して文字の区切りまでの伸長データを文字コード変換し、ライトバッファに格納するので、伸長データを蓄積する記憶領域を減らすことができる。また、伸長装置1は、全ての伸長データを記憶領域に蓄積したり、当該記憶領域から伸長データを読み出したりしないで、文字コード変換処理を実現できるので、処理時間が短縮できる。
[文字コード変換テーブルのデータ構造]
次に、図7を参照して、文字コード変換テーブルのデータ構造について説明する。図7は、文字コード変換テーブル21のデータ構造の一例を示す図である。図7に示すように、文字コード変換テーブル21は、UTF−8の文字コード21aとシフトJISの文字コード21bとを対応付けて記憶する。UTF−8の文字コード21aは、文字コード系がUTF−8である場合の1文字に対応する文字コードのデータ列である。シフトJISの文字コード21bは、文字コード系がシフトJISである場合の1文字に対応する文字コードのデータ列である。一例として、文字が「十」である場合、UTF−8の文字コード21aとして「E2BC98h」、シフトJISの文字コード21bとして「8F5Ch」と記憶している。なお、図7の例では、文字コード変換テーブル21は、UTF−8の文字コードとシフトJISの文字コードとの対応付けとしたが、これに限定されず、異なる文字コード系の対応付けであれば良い。
[伸長変換処理のフローチャート]
次に、図8を参照して、伸長変換処理の手順を説明する。図8は、伸長変換処理のフローチャートを示す図である。
まず、伸長装置1内のオペレーティング・システムやアプリケーションプログラムの動作により伸長変換処理が呼び出される。伸長変換処理が呼び出されると、制御部10は、前処理を実行する(ステップS11)。例えば、制御部10は、図4Aに示す記憶領域A1〜A4および記憶領域B1、B2を確保する。また、制御部10は、各記憶領域内の各位置情報(例えば、図4Aに示す各ポインタ)を設定する。なお、下記の説明では、記憶領域A1〜A4を、それぞれ、例えば、符号化部、参照部、中間伸長部、文字変換部とする。記憶領域B1、B2を、それぞれ、例えば、リードバッファ、ライトバッファとする。ポインタPB1、PB2、PA2を、それぞれ、例えば、ライトポインタ、リードポインタ、末尾ポインタとする。
そして、ファイルリード部11は、ファイルF1に記憶された圧縮データをリードバッファにリードする(ステップS12)。
そして、圧縮符号判定部12は、リードバッファから次の圧縮符号を読み出す(ステップS13)。例えば、圧縮符号判定部12は、リードバッファから、リードポインタが指す読み出し位置の圧縮符号を読み出す。そして、圧縮符号判定部12は、読み出した圧縮符号の識別子が最長一致データに基づく圧縮符号でない旨を示す識別子(「0」)であるか否かを判定する(ステップS14)。
識別子が「0」である場合(ステップS14;Yes)、1文字伸長部13は、読み出した圧縮符号に含まれている1文字の文字コードを読み出す。参照部更新部15は、読み出した文字コードを参照部に格納する(ステップS15)。そして、伸長変換処理は、ステップS18に移行する。
一方、識別子が「0」でない場合(ステップS14;No)、最長一致文字列伸長部14は、読み出した圧縮符号に含まれるデータ長および位置に基づき、最長一致文字列を伸長する(ステップS16)。例えば、最長一致文字列伸長部14は、参照部の位置からデータ長分の文字コード列を読み出し、最長一致文字列を伸長する。そして、参照部更新部15は、伸長した最長一致文字列の文字コードを参照部に格納する(ステップS17)。そして、伸長変換処理は、ステップS18に移行する。
ステップS18では、中間伸長部更新部16は、文字コードを中間伸長部に格納し、格納長を設定する(ステップS18)。例えば、中間伸長部更新部16は、1文字伸長部13によって伸長された1文字の文字コードを中間伸長部に格納し、中間伸長部を更新する。中間伸長部更新部16は、最長一致文字列伸長部14によって伸長された最長一致文字列の文字コードを中間伸長部に格納し、中間伸長部を更新する。そして、中間伸長部更新部16は、中間伸長部に格納されている文字コードの長さを格納長として一次領域に設定する。そして、中間伸長部更新部16は、リードバッファのリードポインタおよび参照部の末尾ポインタの内容を更新する。
続いて、中間伸長部更新部16は、中間伸長部の先頭バイトをもとに文字長を判別する(ステップS19)。例えば、中間伸長部更新部16は、中間伸長部の先頭バイトをもとに、対応関係テーブル22から文字長を取得する。一例として、文字コード系がUTF−8の場合、先頭バイトが「E3」であれば、対応関係から文字長として3バイトであることを示す「3」が取得される。
そして、中間伸長部更新部16は、格納長が文字長以上であるか否かを判定する(ステップS20)。格納長が文字長以上でない場合(ステップS20;No)、文字コード変換部17は、次の圧縮符号を処理すべく、ステップS13に移行する。
一方、格納長が文字長以上である場合(ステップS20;Yes)、文字コード変換部17は、中間伸長部の文字長分の文字列の文字コードをもとに、変換先の文字コード系の文字コードに変換する(ステップS21)。例えば、文字コード変換部17は、中間伸長部の先頭から文字長分の文字コード列をもとに、文字コード変換テーブル21から、変換先の文字コード系の文字コード列を取得する。そして、文字コード変換部17は、取得した文字コード列を文字変換部に格納する。
そして、ライトバッファ更新部18は、文字変換部に格納された文字コード列をライトバッファに格納し、ライトバッファを更新する(ステップS22)。例えば、ライトバッファ更新部18は、既にライトバッファに記憶されている文字コード列の後ろに、文字変換部に格納された文字コード列を格納する。
そして、ライトバッファ更新部18は、中間伸長部に記憶されている文字列の文字コード列を、変換が完了した文字長分だけ左にシフトする(ステップS23)。そして、ライトバッファ更新部18は、現在一次領域に設定されている格納長から文字長を引いて、新たな格納長を算出する(ステップS24)。すなわち、ライトバッファ更新部18は、中間伸長部に格納されている文字コードの長さを格納長として算出する。
続いて、圧縮符号判定部12は、全ての圧縮符号を処理したか否かを判定する(ステップS25)。全ての圧縮符号を処理していないと判定した場合(ステップS25;No)、圧縮符号判定部12は、次の圧縮符号を処理すべく、ステップS13に移行する。
一方、全ての圧縮符号を処理したと判定した場合(ステップS25;Yes)、ファイルライト部19は、ライトバッファに記憶された変換データをファイルF2へ書き込む(ステップS26)。これにより、伸長変換処理は、終了する。
[実施例の効果]
上記実施例によれば、伸長装置1は、圧縮された符号列を文字の区切りを認識しないで伸長する場合に、符号列内の符号を伸長して得られたデータ列を中間伸長部に蓄積する。そして、伸長装置1は、中間伸長部に蓄積されたデータ列に第1の文字コードの文字を認識すると、認識した文字のデータ列を第2の文字コードのデータ列に変換する。かかる構成によれば、伸長装置1は、圧縮された符号列を文字の区切りを認識しないで伸長するが、伸長して得られたデータ列のうち文字と認識されたデータ列を文字コード変換するので、伸長処理に用いられる記憶領域の無駄をなくすことができるとともに、処理時間を短縮できる。
また、上記実施例によれば、伸長装置1は、第1の符号を、スライド窓を用いて最長一致となる特定の固まりのバイト列を示すデータ列に伸長し、伸長したデータ列を中間伸長部に蓄積する。そして、伸長装置1は、第1の符号を伸長したタイミングで、中間伸長部に蓄積されたデータ列に第1の文字コードの文字を認識するか否かを判定する。そして、伸長装置1は、中間伸長部に蓄積されたデータ列に第1の文字コードの文字を認識すると判定された場合に、認識した文字のデータ列を第2の文字コードのデータ列に変換する。かかる構成によれば、伸長装置1は、伸長したタイミングで、伸長して得られたデータ列に文字を認識するか否かを判定して、文字と認識されたデータ列を文字コード変換するので、伸長処理に用いられる記憶領域の無駄をなくすことができる。
また、上記実施例によれば、伸長装置1は、文字の先頭バイトの文字コードと文字の文字コードの長さを示す文字長との対応関係に基づいて、記憶領域に蓄積された伸長データ列の先頭バイトの文字コードに対応する文字長を取得する。そして、伸長装置1は、記憶領域に記憶された伸長データ列の長さが、文字長以上であるか否かを判定する。そして、伸長装置1は、文字長以上であると判定された場合、伸長データ列の先頭から文字長分の伸長データ列を第2の文字コードのデータ列に変換する。かかる構成によれば、伸長装置1は、文字の先頭バイトの文字コードと文字の文字長との対応関係を用いるので、伸長データ列の文字の区切りを検知できる。この結果、伸長装置1は、圧縮された符号列を伸長しながら、伸長データ列の文字の区切りまでの文字コード変換を実現できる。
また、上記実施例によれば、伸長装置1は、伸長データ列の先頭から文字長分の伸長データ列を送信先で用いられる文字コードに変換するとともに、伸長データ列の先頭から文字長分の伸長データ列を処理済みのデータ列として左シフトする。かかる構成によれば、伸長装置1は、変換した部分の伸長データ列の次から変換対象とすることができ、圧縮された符号列を伸長しながら効率的に変換処理をすることができる。
また、上記実施例によれば、伸長装置1は、文字毎に変換元の文字コードと変換先の文字コードとを対応付けた変換情報であって、変換元および変換先の組毎の複数の変換情報から、変換元および変換先に応じた変換情報を選択する。そして、伸長装置1は、選択した変換情報を用いて、伸長データ列の先頭から文字長分の伸長データ列を変換先の文字コードに変換する。かかる構成によれば、伸長装置1は、変換元および変換先に応じた変換情報を用いて、変換元から変換先の文字コードに変換するので、圧縮されたデータを文字コード変換して送信先に転送する場合に、汎用的に使用することができる。
[実施例に関連する他の態様]
以下、上述の実施形態における変形例の一部を説明する。下記の変形例のみでなく、本発明の本旨を逸脱しない範囲の設計変更は適宜行われうる。
実施例において、文字コード変換テーブル21は、異なる文字コード系の対応付けであるとして説明した。すなわち、文字コード変換テーブル21は、例えば、UTF−8の文字コードのデータ列とシフトJISの文字コードのデータ列との対応付けとして説明した。しかしながら、文字コード変換テーブル21は、これに限定されず、変換元の文字コードおよび変換先の文字コードを組として複数存在しても良い。複数存在する場合、文字コード変換部17は、複数の文字コード変換テーブル21から、変換元の文字コードおよび変換先の文字コードに応じた文字コード変換テーブル21を選択する。そして、文字コード変換部17は、選択した文字コード変換テーブル21を用いて、伸長データ列の先頭から文字長分の伸長データ列を変換先の文字コードのデータ列に変換するようにすれば良い。
また、実施例において、図示した装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、1文字伸長部13と参照部更新部15、最長一致文字列伸長部14と参照部更新部15とをそれぞれ1個の部として統合しても良い。一方、中間伸長部更新部16を、中間伸長部を更新する更新部と、文字長を取得する取得部と、伸長データの長さが文字長以上であるか否かを判定する判定部とに分散しても良い。また、記憶部20を伸長装置1の外部装置に記憶するようにしても良いし、記憶部20を記憶した外部装置を伸長装置1とネットワーク経由で接続するようにしても良い。
[伸長装置のハードウェア構成]
図9は、伸長装置のハードウェア構成を示す図である。図9が示すように、コンピュータ500は、各種演算処理を実行するCPU501と、ユーザからのデータ入力を受け付ける入力装置502と、モニタ503とを有する。また、コンピュータ500は、記憶媒体からプログラムなどを読み取る媒体読取装置504と、他の装置と接続するためのインターフェース装置505と、他の装置と無線により接続するための無線通信装置506とを有する。また、コンピュータ500は、各種情報を一時記憶するRAM(Random Access Memory)507と、ハードディスク装置508とを有する。また、各装置501〜508は、バス509に接続される。
ハードディスク装置508には、図6に示した制御部10の各処理部と同様の機能を有する伸長プログラムが記憶される。もしくは、ハードディスク装置508には、図5に示した制御部110の各処理部と同様の機能を有する伸長プログラムが記憶される。また、ハードディスク装置508には、伸長プログラムを実現するための各種データが記憶される。
CPU501は、ハードディスク装置508に記憶された各プログラムを読み出して、RAM507に展開して実行することで、各種の処理を行う。これらのプログラムは、コンピュータ500を図6に示した制御部10として機能させることができる。もしくは、これらのプログラムは、コンピュータ500を図5に示した制御部110として機能させることができる。
なお、上記の伸長プログラムは、必ずしもハードディスク装置508に記憶されている必要はない。例えば、コンピュータ500が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ500が読み出して実行するようにしてもよい。コンピュータ500が読み取り可能な記憶媒体は、例えば、CD−ROMやDVDディスク、USB(Universal Serial Bus)メモリなどの可搬型記録媒体、フラッシュメモリなどの半導体メモリ、ハードディスクドライブなどが対応する。また、公衆回線、インターネット、LAN(Local Area Network)などに接続された装置にこのプログラムを記憶させておき、コンピュータ500がこれらからプログラムを読み出して実行するようにしても良い。
1,100 伸長装置
10,110 制御部
11,111 ファイルリード部
12,112 圧縮符号判定部
13,113 1文字伸長部
14,114 最長一致文字列伸長部
15,115 参照部更新部
16 中間伸長部更新部
17 文字コード変換部
18,116 ライトバッファ更新部
19,118 ファイルライト部
20,120 記憶部
117 文字切り出し変換部
21 文字コード変換テーブル
22 対応関係テーブル

Claims (6)

  1. コンピュータが、
    第1の文字コードのデータを最長一致探索により圧縮した符号列に含まれる符号を、スライド窓を用いて最長一致となる特定の固まりのバイト列を示す部分データに伸長し、伸長した部分データを記憶領域に蓄積し、
    前記符号を伸長したタイミングで、該伸長された部分データであって前記記憶領域に蓄積された部分データに対し、前記第1の文字コードの情報に基づいて、文字区切りを検出したかどうかを判定し
    前記記憶領域に蓄積された部分データに前記文字区切りを検出したと判定された場合に、該検出された文字区切りで区切られた単位で、前記第1の文字コードと第2の文字コードとを対応づけた情報に基づいて、該伸長された部分データの少なくとも一部を、前記第2の文字コードのデータに変換する
    処理を実行することを特徴とする伸長方法。
  2. 前記判定する処理は、文字の先頭バイトの文字コードと文字の文字コードの長さを示す文字長との対応関係に基づいて、前記記憶領域に蓄積された部分データの先頭バイトの文字コードに対応する文字長を取得し、前記記憶領域に蓄積された部分データの長さが、取得された文字長以上であるか否かを判定することで前記部分データに前記文字区切りを検出したかどうかを判定し、
    前記変換する処理は、前記判定する処理によって前記記憶領域に蓄積された部分データの長さが、取得された文字長以上であると判定された場合に、前記部分データに前記文字区切りを検出したと判定し、前記記憶領域に蓄積された部分データの先頭から前記文字長分のデータを前記第2の文字コードのデータに変換する
    処理を実行することを特徴とする請求項に記載の伸長方法。
  3. 前記変換する処理は、前記記憶領域に蓄積された部分データの先頭から前記文字長分のデータを前記第2の文字コードのデータに変換するとともに、前記文字長分のデータを削除する方向にシフトする
    処理を実行することを特徴とする請求項に記載の伸長方法。
  4. 前記変換する処理は、文字毎に変換元の文字コードのデータと変換先の文字コードのデータとを対応付けた変換情報であって、変換元の文字コードおよび変換先の文字コードを組とした複数の変換情報から、変換元の文字コードおよび変換先の文字コードに応じた変換情報を選択し、選択した変換情報を用いて、前記記憶領域に蓄積された部分データの先頭から前記文字長分のデータを変換先の文字コードのデータに変換する
    処理を実行することを特徴とする請求項に記載の伸長方法。
  5. 第1の文字コードのデータを最長一致探索により圧縮した符号列に含まれる符号を、スライド窓を用いて最長一致となる特定の固まりのバイト列を示す部分データに伸長し、伸長した部分データを記憶領域に蓄積する伸長部と、
    前記符号を伸長したタイミングで、前記伸長部によって伸長された部分データであって前記記憶領域に蓄積された部分データに対し、前記第1の文字コードの情報に基づいて、文字区切りを検出したかどうかを判定する検出部と、
    前記検出部によって前記記憶領域に蓄積された部分データに前記文字区切りを検出したと判定された場合に、該検出された文字区切りで区切られた単位で、前記第1の文字コードと第2の文字コードとを対応付けた情報に基づいて、前記伸長された部分データの少なくとも一部を、前記第2の文字コードのデータに変換する変換部と、
    を有することを特徴とする伸長装置。
  6. コンピュータに、
    第1の文字コードのデータを最長一致探索により圧縮した符号列に含まれる符号を、スライド窓を用いて最長一致となる特定の固まりのバイト列を示す部分データに伸長し、伸長した部分データを記憶領域に蓄積し、
    前記符号を伸長したタイミングで、該伸長された部分データであって前記記憶領域に蓄積された部分データに対し、前記第1の文字コードの情報に基づいて、文字区切りを検出したかどうかを判定し
    前記記憶領域に蓄積された部分データに前記文字区切りを検出したと判定された場合に、該検出された文字区切りで区切られた単位で、前記第1の文字コードと第2の文字コードとを対応づけた情報に基づいて、該伸長された部分データの少なくとも一部を、前記第2の文字コードのデータに変換する
    処理を実行させることを特徴とする伸長プログラム。
JP2014140059A 2014-07-07 2014-07-07 伸長方法、伸長プログラムおよび伸長装置 Expired - Fee Related JP6476618B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2014140059A JP6476618B2 (ja) 2014-07-07 2014-07-07 伸長方法、伸長プログラムおよび伸長装置
US14/751,578 US9515677B2 (en) 2014-07-07 2015-06-26 Decoding method, decoding apparatus, and computer-readable recording medium
CN201510367308.4A CN105282554B (zh) 2014-07-07 2015-06-29 解码方法及解码装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014140059A JP6476618B2 (ja) 2014-07-07 2014-07-07 伸長方法、伸長プログラムおよび伸長装置

Publications (2)

Publication Number Publication Date
JP2016019113A JP2016019113A (ja) 2016-02-01
JP6476618B2 true JP6476618B2 (ja) 2019-03-06

Family

ID=55017777

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014140059A Expired - Fee Related JP6476618B2 (ja) 2014-07-07 2014-07-07 伸長方法、伸長プログラムおよび伸長装置

Country Status (3)

Country Link
US (1) US9515677B2 (ja)
JP (1) JP6476618B2 (ja)
CN (1) CN105282554B (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110035287B (zh) 2018-01-12 2023-05-09 富士通株式会社 对统一转换单元模式进行分组标识的方法、装置和电子设备
CN114330332B (zh) * 2021-12-28 2024-07-30 中国农业银行股份有限公司 表单数据的处理方法、装置、电子设备及存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5448474A (en) * 1993-03-03 1995-09-05 International Business Machines Corporation Method for isolation of Chinese words from connected Chinese text
JPH07239772A (ja) * 1994-02-25 1995-09-12 Fuji Xerox Co Ltd 文字コード変換装置
DE69524999T2 (de) * 1994-08-01 2002-07-18 Opentv, Inc. Verfahren zum Komprimieren und Dekomprimieren von Dateien
JP3305191B2 (ja) * 1996-03-19 2002-07-22 富士通株式会社 文書管理装置及びデータ圧縮方法及びデータ復元方法
AUPQ849500A0 (en) * 2000-06-30 2000-07-27 Canon Kabushiki Kaisha Hash compact xml parser
JP3832807B2 (ja) 2001-06-28 2006-10-11 インターナショナル・ビジネス・マシーンズ・コーポレーション データ処理方法及びその手法を用いたエンコーダ、デコーダ並びにxmlパーサ
GB0213687D0 (en) * 2002-06-14 2002-07-24 Ibm Multi-byte lempel-ziv 1 (LZ1) decompression
JP4072691B2 (ja) * 2004-07-15 2008-04-09 ソニー株式会社 文字情報変換装置および文字情報変換方法
JP4446102B2 (ja) * 2006-04-12 2010-04-07 株式会社エクサ データ圧縮/復元システム、データ圧縮装置、データ復元装置、及びプログラム
FR2926378B1 (fr) * 2008-01-14 2013-07-05 Canon Kk Procede et dispositif de traitement pour l'encodage d'un document de donnees hierarchisees
US8429196B2 (en) * 2008-06-06 2013-04-23 Oracle International Corporation Fast extraction of scalar values from binary encoded XML
JP2013214832A (ja) * 2012-03-30 2013-10-17 Fujitsu Ltd 圧縮及び伸長システム、圧縮装置、伸長装置、圧縮及び伸長方法、圧縮プログラム及び伸長プログラム

Also Published As

Publication number Publication date
US20160006455A1 (en) 2016-01-07
CN105282554B (zh) 2019-01-15
JP2016019113A (ja) 2016-02-01
US9515677B2 (en) 2016-12-06
CN105282554A (zh) 2016-01-27

Similar Documents

Publication Publication Date Title
JP6550765B2 (ja) 文字データ変換プログラム、文字データ変換装置および文字データ変換方法
US9509334B2 (en) Non-transitory computer-readable recording medium, compression method, decompression method, compression device and decompression device
JP6319740B2 (ja) データ圧縮を高速化する方法、並びに、データ圧縮を高速化するためのコンピュータ、及びそのコンピュータ・プログラム
JP6531398B2 (ja) プログラム
US9496891B2 (en) Compression device, compression method, decompression device, decompression method, and computer-readable recording medium
US9509333B2 (en) Compression device, compression method, decompression device, decompression method, information processing system, and recording medium
US9479195B2 (en) Non-transitory computer-readable recording medium, compression method, decompression method, compression device, and decompression device
US20190052284A1 (en) Data compression apparatus, data decompression apparatus, data compression program, data decompression program, data compression method, and data decompression method
JP6476618B2 (ja) 伸長方法、伸長プログラムおよび伸長装置
CN106354746A (zh) 搜索方法和搜索设备
US20150248432A1 (en) Method and system
WO2014030189A1 (ja) 圧縮プログラム、圧縮方法、圧縮装置、伸張プログラム、伸張方法、伸張装置およびデータ転送システム
JP6135788B2 (ja) 圧縮プログラム、圧縮方法、圧縮装置、伸張プログラム、伸張方法、伸張装置およびデータ転送システム
JP5939259B2 (ja) 照合制御プログラム、照合制御装置および照合制御方法
JP2016134808A (ja) データ圧縮プログラム、データ復元プログラム、データ圧縮装置、及びデータ復元装置
JP4600342B2 (ja) データ圧縮プログラム
JP7006462B2 (ja) データ生成プログラム、データ生成方法および情報処理装置
US20160210304A1 (en) Computer-readable recording medium, information processing apparatus, and conversion process method
JP2011164908A (ja) ファイル名管理方法及びファイル名管理装置
KR20070054055A (ko) 데이터 처리 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170406

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180306

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180425

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20180911

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181204

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20181211

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190108

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190121

R150 Certificate of patent or registration of utility model

Ref document number: 6476618

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees