(57)【要約】【課題】出現頻度が高いデータに対応付けられたコード等の２バイト以上のコードを１バイトコードに割り当てること。【解決手段】符号化プログラムは、第２コード割当表を基にして、入力されたデータをコード化する。第２コード割当表は、第１コード割当表の１バイト領域に割り当てられたデータの一部が、２バイト領域に割り当てられ、かつ、２バイト領域に割り当てられたデータの少なくとも一部に対して、２バイト以上のコードを割り当てられた、入力されたデータをコード化する変換規則を定義したものである。【選択図】図１
2020061641.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
記憶装置に格納された、第１コード割当表の１バイト領域に割り当てられたデータの一部が、２バイト領域に割り当てられ、かつ、前記２バイト領域に割り当てられた前記データの少なくとも一部に対して、２バイト以上のコードを割り当てられた、入力されたデータをコード化する変換規則を定義した第２コード割当表を参照し、
前記第２コード割当表を基にして、入力されたデータをコード化する
処理を実行させることを特徴とする符号化プログラム。
【請求項２】
前記第２コード割当表は、前記第２コード割当表の１バイト領域に、前記第１コード割当表の２バイト領域または３バイト領域のデータが設定されたコード割当表、または、前記第２コード割当表の２バイト領域に、前記第１コード割当表の１バイト領域のデータが設定されたコード割当表であることを特徴とする請求項１に記載の符号化プログラム。
【請求項３】
コンピュータに、
記憶装置に格納された、第１コード割当表の１バイト領域に割り当てられたデータの一部が、２バイト領域に割り当てられ、かつ、前記２バイト領域に割り当てられた前記データの少なくとも一部に対して、２バイト以上のコードを割り当てられた、入力されたデータをコード化する変換規則を定義した第２コード割当表を参照し、
前記第２コード割当表を基にして、コード化されたデータをデータに復号化する
処理を実行させることを特徴とする復号化プログラム。
【請求項４】
コンピュータに、
記憶装置に格納された、第１コード割当表の１バイト領域に割り当てられたデータの一部が、２バイト領域に割り当てられ、かつ、前記２バイト領域に割り当てられた前記データの少なくとも一部に対して、２バイト以上のコードを割り当てられた、入力されたデータをコード化する変換規則であって、前記コード化された符号データの先頭４ビットの値は当該符号データのコード長に応じて異なる変換規則を定義した第２コード割当表を参照し、
前記第２コード割当表を基にして生成された複数のオートマトンを利用し、コード化されたデータを前記複数のオートマトンのうち、当該データの先頭４ビットの値に応じて選択されるオートマトンによりデータに復号化する
処理を実行させることを特徴とする復号化プログラム。
【請求項５】
コンピュータが実行する符号化方法であって、
記憶装置に格納された、第１コード割当表の１バイト領域に割り当てられたデータの一部が、２バイト領域に割り当てられ、かつ、前記２バイト領域に割り当てられた前記データの少なくとも一部に対して、２バイト以上のコードを割り当てられた、入力されたデータをコード化する変換規則を定義した第２コード割当表を参照し、
前記第２コード割当表を基にして、入力されたデータをコード化する
処理を実行させることを特徴とする符号化方法。
【請求項６】
コンピュータが実行する復号化方法であって、
記憶装置に格納された、第１コード割当表の１バイト領域に割り当てられたデータの一部が、２バイト領域に割り当てられ、かつ、前記２バイト領域に割り当てられた前記データの少なくとも一部に対して、２バイト以上のコードを割り当てられた、入力されたデータをコード化する変換規則を定義した第２コード割当表を参照し、
前記第２コード割当表を基にして、コード化されたデータをデータに復号化する
処理を実行させることを特徴とする復号化方法。
【請求項７】
コンピュータが実行する復号化方法であって、
記憶装置に格納された、第１コード割当表の１バイト領域に割り当てられたデータの一部が、２バイト領域に割り当てられ、かつ、前記２バイト領域に割り当てられた前記データの少なくとも一部に対して、２バイト以上のコードを割り当てられた、入力されたデータをコード化する変換規則であって、前記コード化された符号データの先頭４ビットの値は当該符号データのコード長に応じて異なる変換規則を定義した第２コード割当表を参照し、
前記第２コード割当表を基にして生成された複数のオートマトンを利用し、コード化されたデータを前記複数のオートマトンのうち、当該データの先頭４ビットの値に応じて選択されるオートマトンによりデータに復号化する
処理を実行させることを特徴とする復号化方法。
【請求項８】
第１コード割当表の１バイト領域に割り当てられたデータの一部が、２バイト領域に割り当てられ、かつ、前記２バイト領域に割り当てられた前記データの少なくとも一部に対して、２バイト以上のコードを割り当てられた、入力されたデータをコード化する変換規則を定義した第２コード割当表を記憶する記憶部と、
前記第２コード割当表を基にして、入力されたデータをコード化するコード変換部と
を有することを特徴とする符号化装置。
【請求項９】
第１コード割当表の１バイト領域に割り当てられたデータの一部が、２バイト領域に割り当てられ、かつ、前記２バイト領域に割り当てられた前記データの少なくとも一部に対して、２バイト以上のコードを割り当てられた、入力されたデータをコード化する変換規則を定義した第２コード割当表を記憶する記憶部と、
前記第２コード割当表を基にして、コード化されたデータをデータに復号化するコード変換部と
を有することを特徴とする復号化装置。
【請求項１０】
記憶装置に格納された、第１コード割当表の１バイト領域に割り当てられたデータの一部が、２バイト領域に割り当てられ、かつ、前記２バイト領域に割り当てられた前記データの少なくとも一部に対して、２バイト以上のコードを割り当てられた、入力されたデータをコード化する変換規則であって、前記コード化された符号データの先頭４ビットの値は当該符号データのコード長に応じて異なる変換規則を定義した第２コード割当表を記憶する記憶部と、
前記第２コード割当表を基にして生成された複数のオートマトンを利用し、コード化されたデータを前記複数のオートマトンのうち、当該データの先頭４ビットの値に応じて選択されるオートマトンによりデータに復号化するコード変換部と
を有することを特徴とする復号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化プログラムおよび復号化プログラム等に関する。
【背景技術】
【０００２】
従来のデータは、ASCIIコードおよびユニコード（Unicode）のコード割当表に基づいて所定のコードに置き換えられる。図１９は、従来のASCIIコードおよびユニコードに基づくコード割当表を説明するための図である。図１９に示すように、コード割当表５０の００ｈ〜１Ｆｈには、所定の制御記号が設定され、各制御記号には、１バイトのコードが割り当てられる。コード割当表の２０ｈ〜５Ｆｈには、超高頻度単語（英語、日本語）が設定され、超高頻度単語には、１バイトのコードが割り当てられる。コード割当表の６０ｈ〜ＦＦｈには、ＣＪＫ文字、数値等が設定され、各ＣＪＫ文字、数値等には、３バイトのコードが割り当てられる。
【０００３】
ここで、従来技術１には、コード割当表の制御記号を割り当てる００ｈ〜１Ｆｈに空き領域が存在する場合に、係る空き領域に単語等を登録し、かかるコード割当表を用いてコード化を実行する技術がある。また、従来技術２には、コード割当表の英大文字の領域において、英大文字の代わりに他の文字を設定し、かかるコード割当表を用いて、コード化を実行する技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平７−２８７７１６号公報
【特許文献２】特開平１１−１４３８７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来技術では、出現頻度が高いデータに対して、短いバイトコードを割り当てることができないという問題がある。
【０００６】
例えば、データを送受信する者同士が、使用しない制御記号や英大文字とそのコード割当表を共有する場合に限り、従来技術１、２のように、制御記号の空き領域等に単語を割り当てることで、出現頻度が高い文字や単語に短いバイトコードに割り当てることができる。
【０００７】
一方、一般のデータを構成する単語や一般記号の出現頻度に応じて可変長符号を割り当てると、約４０種の符号長が５〜８ビット、約８千種の符号長が９〜１６ビットである。そこで、単語や一般記号に対し、その出現頻度に応じて、３２種以上に１バイトコード、８１９２種以上に２バイトコードを割り当てることで、高い圧縮率を達成する圧縮処理を行うことができる。しかし、かかる技術では、多量な単語や一般記号にコード割当てすることができない。
【０００８】
１つの側面では、本発明は、出現頻度が高いデータに対応付けられたコード等の２バイト以上のコードを１バイトコードに割り当てることができる符号化プログラムおよび復号化プログラムを提供することを目的とする。また、同様に、符号化方法、符号化装置、復号化方法、復号化装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
第１の案では、コンピュータが次の処理を実行する。コンピュータは、第２コード割当表を参照し、第２コード割当表を基にして、入力されたデータをコード化する。第２コード割当表は、第１コード割当表の１バイト領域に割り当てられたデータの一部を、２バイト領域に割り当てられ、かつ、２バイト領域に割り当てられたデータの少なくとも一部に対して、２バイト以上のコードを割り当てられた、入力されたデータをコード化する変換規則を定義した情報である。
【発明の効果】
【００１０】
１つの側面では、出現頻度が高いデータに対応付けられたコード等の２バイト以上のコードを１バイトコードに割り当てることができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、本実施例１に係る符号化装置の処理の一例を示す図である。
【図２】図２は、本実施例１に係る復号化装置の処理の一例を示す図である。
【図３】図３は、本実施例１に係る符号化装置の構成を示す機能ブロック図である。
【図４】図４は、本実施例１に係るコード割当表の一例を示す図である。
【図５】図５は、本実施例１に係る２バイトコード割当表の一例を示す図である。
【図６】図６は、本実施例１に係る３バイトコード割当表の一例を示す図である。
【図７】図７は、本実施例１に係る復号化装置の構成を示す機能ブロック図である。
【図８】図８は、本実施例１に係る符号化装置の処理手順を示すフローチャートである。
【図９】図９は、本実施例１に係る復号化装置の処理手順を示すフローチャートである。
【図１０】図１０は、本実施例２に係る復号装置の処理の一例を示す図である。
【図１１】図１１は、第１オートマトンの一例を示す図である。
【図１２】図１２は、第２オートマトンの一例を示す図である。
【図１３】図１３は、第３オートマトンの一例を示す図である。
【図１４】図１４は、本実施例２に係る復号化装置の構成を示す機能ブロック図である。
【図１５】図１５は、本実施例２に係る復号化装置の処理手順を示すフローチャートである。
【図１６】図１６は、コンピュータのハードウェア構成例を示す図である。
【図１７】図１７は、コンピュータで動作するプログラムの構成例を示す図である。
【図１８】図１８は、実施形態のシステムにおける装置の構成例を示す図である。
【図１９】図１９は、従来のASCIIコードおよびユニコードに基づくコード割当表を説明するための図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示する符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１３】
図１は、本実施例１に係る符号化装置の処理の一例を示す図である。本実施例１に係る符号化装置は、従来技術で用いていたコード割当表５０の代わりに、コード割当表１１０を用いて、対象データ１０ａをコード変換することで、コード変換された対象データ１０ｂを生成する。
【００１４】
たとえば、従来技術のコード割当表５０の００ｈ〜１Ｆｈには、制御記号が設定され、各制御記号には、１バイトのコードが割り当てられる。「ｈ」は１６進数を示す記号である。コード割当表５０の２０ｈ〜５Ｆｈには、超高頻度単語（英語、日本語）が設定され、各超高頻度単語には、１バイトのコードが割り当てられる。コード割当表５０の６０ｈ〜ＦＦｈには、ＣＪＫ文字、数値等が設定され、各ＣＪＫ文字、数値等には、２バイトまたは３バイトのコードが割り当てられる。
【００１５】
たとえば、プロジェクト・グーテンベルグ、青空文庫、オックスフォード英英辞典、広辞苑、その他の一般的な書籍を基にして、出現頻度が高い上位３２個の英語および上位３２個の日本語が、超高頻度単語となる。
【００１６】
これに対して、本実施例１に係るコード割当表１１０の２０ｈ〜５Ｆｈには、後述する所定のデータ（単語、数値等）が設定され、１バイトのコードが割り当てられる。コード割当表１１０の２０ｈ〜５Ｆｈには、コード割当表５０において、２バイトまたは３バイトの領域に割り当てられていた数値が割り当てられる。
【００１７】
すなわち、コード割当表５０の６０ｈ〜ＦＦｈに設定され、それまで２バイトまたは３バイトのコードが割り当てられていた数値は、コード割当表１１０の２０ｈ〜５Ｆｈの一部に割り当てられ、１バイトのコードが割り当てられる。
【００１８】
コード割当表１１０の６０ｈ〜ＦＦｈには、ＣＪＫ文字等が設定される。また、コード割当表１１０の６０ｈ〜ＦＦｈには、コード割当表５０の２０ｈ〜５Ｆｈに設定されていた超高頻度単語の一部が設定される。たとえば、超高頻度単語の一部を、超高頻度の日本語とする。
【００１９】
本実施例１について、以下の説明では、適宜、コード割当表１１０の００ｈ〜２Ｆｈ、２０ｈ〜５Ｆｈの領域を「１バイト領域」と表記する。コード割当表１１０の６０ｈ〜ＦＦｈの領域を「２、３バイト領域」と表記する。
【００２０】
コード変換部１５０は、コード割当表１１０に基づいて、対象データ１０ａを対象データ１０ｂに変換する。ここでは、対象データ１０ｂを「・・・This△is△a△pen・・・10000△points・・・」とする。対象データ１０ａの「△」は、スペースを示すものである。
【００２１】
コード変換部１５０は、スペース「△」で区切られるデータと、コード割当表１１０とを比較して、データをコードに変換する。対象データ１０ａに含まれるデータ「This△」は、コード割当表１１０の１バイト領域に設定されたデータであり、コード変換部１５０は、データ「This△」を１バイトのコード「３５ｈ」に変換する。
【００２２】
対象データ１０ａに含まれるデータ「is△」は、コード割当表１１０の１バイト領域に設定されたデータであり、コード変換部１５０は、データ「is△」を１バイトのコード「２Ｅｈ」に変換する。
【００２３】
対象データ１０ａに含まれるデータ「a△」は、コード割当表１１０の２、３バイト領域に設定されたデータであり、コード変換部１５０は、データ「a△」を２バイトのコード「６４６６ｈ」に変換する。
【００２４】
対象データ１０ａに含まれるデータ「pen」は、コード割当表１１０の２、３バイト領域に設定されたデータであり、コード変換部１５０は、データ「pen」を２バイトのコード「５５３３ｈ」に変換する。
【００２５】
対象データ１０ａに含まれるデータ「10000△」は、コード割当表１１０の１バイト領域に設定されたデータであり、コード変換部１５０は、データ「10000△」を１バイトのコード「４８ｈ」に変換する。
【００２６】
対象データ１０ａに含まれるデータ「points」は、コード割当表１１０の２、３バイト領域に設定されたデータであり、コード変換部１５０は、データ「points」を２バイトのコード「４３４４ｈ」に変換する。
【００２７】
コード変換部１５０は、対象データ１０ａに含まれる各データに対して、上記処理を実行することで、対象データ１０ａを対象データ１０ｂにコード化する。
【００２８】
図２は、本実施例１に係る復号化装置の処理の一例を示す図である。本実施例１に係る復号化装置は、従来技術で用いていたコード割当表５０の代わりに、コード割当表１１０を用いて、コード変換された対象データ１０ｂを、復号化することで、対象データ１０ａを生成する。コード割当表１１０に関する説明は、上記の説明と同様である。
【００２９】
コード変換部２５０は、コード割当表１１０に基づいて、対象データ１０ｂを、対象データ１０ａに変換する。ここでは、対象データ１０ｂを「・・・３５ｈ  ２Ｅｈ  ６４６６ｈ  ５５３３ｈ・・・４８ｈ  ４３４４ｈ・・・」とする。
【００３０】
コード変換部２５０は、コードと、コード割当表１１０とを比較して、コードをデータに変換する。たとえば、コード変換部２５０は、１バイトのコード「３５ｈ」をデータ「This△」に変換する。コード変換部２５０は、１バイトのコード「２Ｅｈ」をデータ「is△」に変換する。コード変換部２５０は、２バイトのコード「６４６６」をデータ「a△」に変換する。コード変換部２５０は、２バイトのコード「５５３３ｈ」をデータ「pen」に変換する。コード変換部２５０は、１バイトのコード「４８ｈ」をデータ「10000△」に変換する。コード変換部２５０は、２バイトのコード「４３４４ｈ」をデータ「points」に変換する。
【００３１】
コード変換部２５０は、対象データ１０ｂに含まれる各コードに対して、上記処理を実行することで、対象データ１０ｂを対象データ１０ａに変換する。
【００３２】
図３は、本実施例１に係る符号化装置の構成を示す機能ブロック図である。図３に示すように、この符号化装置１００は、入力部１０１、出力部１０２、レジスタ１０５ａ，１０５ｂ、記憶部１０６、コード変換部１５０を有する。
【００３３】
入力部１０１は、コード変換を行う対象データを受け付ける処理部である。入力部１０１は、受け付けた対象データを、レジスタ１０５ａに格納する。
【００３４】
出力部１０２は、レジスタ１０５ｂに格納されるコード変換後の対象データを出力する処理部である。
【００３５】
レジスタ１０５ａは、コード変換を行う前の対象データを格納するものである。レジスタ１０５ｂは、コード変換後の対象データを格納するものである。
【００３６】
記憶部１０６は、コード割当表１１０と、２バイトコード割当表１１５ａと、３バイトコード割当表１１５ｂとを有する。記憶部１０６は、例えば、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリ（Flash  Memory）などの半導体メモリ素子などの記憶装置に対応する。
【００３７】
図４は、本実施例１に係るコード割当表の一例を示す図である。図４に示すように、このコード割当表１１０は、１バイト領域１１０Ａと、２バイト領域１１０Ｂと、３バイト領域１１０Ｃとを有する。なお、本実施例１では一例として、コード割当表のＤ０ｈ〜ＥＦｈを２バイト領域としたが、かかる領域を３バイト領域としてもよい。
【００３８】
１バイト領域１１０Ａは、コード割当表１１０の００ｈ〜５Ｆｈの領域である。コード割当表１１０の００ｈ〜１Ｆｈには、所定の制御コードが設定される。コード割当表１１０の２０ｈ〜３Ｆｈには、プロジェクト・グーテンベルグ、青空文庫、オックスフォード英英辞典、広辞苑、その他の一般的な書籍を基にして、出現頻度の高い上位３２個の超高頻度単語（英語）が設定される。
【００３９】
コード割当表１１０の４０ｈ〜５Ｆｈには、プロジェクト・グーテンベルグ、青空文庫、オックスフォード英英辞典、広辞苑、その他の一般的な書籍を基にして、出現頻度の高い上位３２個の超高頻度単語（数値）が設定される。ここで、従来のコード割当表５０の４０ｈ〜５Ｆｈには、プロジェクト・グーテンベルグ、青空文庫、オックスフォード英英辞典、広辞苑、その他の一般的な書籍を基にして、出現頻度の高い上位３２個の超高頻度単語（日本語）が設定されていた領域である。かかる超高頻度単語（日本語）は、４０ｈ〜５Ｆｈの代わりに、６０ｈ〜６Ｆｈの一部に登録（退避）される。たとえば、コード割当表１１０の４０ｈ〜５Ｆｈには、数値「０、１、２、３、５、１０、２０、５０、１００、５００、１０００、１００００」等が設定される。
【００４０】
コード割当表１１０の６０ｈ〜６Ｆｈには、超高頻度単語（日本語）と、高頻度単語（英語）が設定される。また、コード割当表の７０ｈ〜８Ｆｈには、高頻度単語（英語）が設定される。たとえば、コード割当表１１０の７０ｈ〜８Ｆｈの高頻度単語（英語）は、プロジェクト・グーテンベルグ、青空文庫、オックスフォード英英辞典、広辞苑、その他の一般的な書籍を基にして、出現頻度の高い上位８０００の単語である。
【００４１】
コード割当表１１０の９０ｈ〜９３ｈには、高頻度単語（数値）が設定される。コード割当表１１０の９４ｈ〜９Ｆｈには、高頻度単語（第３国語）が設定される。たとえば、第３国語は、韓国、中国等に対応する。コード割当表１１０のＡ０ｈ〜ＦＦｈには、低頻度単語が設定される。
【００４２】
コード割当表１１０の２バイト領域１１０Ｂで定義されたコード７０ｈ〜ＥＦｈは、２バイトのコードのうち、先頭の１バイトのコードのみを示している。２バイト全てのコードは、２バイトコード割当表１１５ａにより定義されている。
【００４３】
図５は、本実施例１に係る２バイトコード割当表の一例を示す図である。図５に示すように、２バイトコード割当表１１５ａには、超高頻度単語（日本語）、超頻度英単語（英語）、高頻度単語（数値）、高頻度単語（第３国語）、低頻度単語と、２バイトのコードとが対応付けられる。
【００４４】
たとえば、６０００ｈ〜６０２０ｈには、従来技術のコード割当表５０の４０ｈ〜５Ｆｈに設定されていた、超高頻度単語（日本語）が設定され、設定位置に応じた２バイトコードが割り当てられる。
【００４５】
６０２１ｈ〜７ＦＦＦｈには、高頻度単語（英語）が設定され、設定位置に応じた２バイトコードが割り当てられる。８０００ｈ〜８ＦＦＦｈには、高頻度単語（日本語）が設定され、設定位置に応じた２バイトコードが割り当てられる。
【００４６】
９０００ｈ〜９３ＦＦｈには、高頻度単語（数値）が設定され、設定位置に応じた２バイトコードが割り当てられる。９４００ｈ〜９ＦＦＦｈには、高頻度単語（第３国語）が設定され、設定位置に応じた２バイトコードが割り当てられる。Ａ０００ｈ〜ＥＦＦＦｈには、低頻度単語が設定され、設定位置に応じた２バイトコードが割り当てられる。
【００４７】
コード割当表１１０の３バイト領域１１０Ｃで定義されたコードＦ０ｈ〜ＦＦｈは、３バイトのコードのうち、先頭の１バイトのコードのみを示している。３バイト全てのコードは、３バイトコード割当表１１５ｂにより定義されている。
【００４８】
図６は、本実施例１に係る３バイトコード割当表の一例を示す図である。図６に示すように、３バイトコード割当表１１５ｂでは、低頻度単語と、３バイトのコードとが対応付けられる。たとえば、Ｆ０００００ｈ〜ＦＦＦＦＦＦｈには、低頻度単語が設定され、設定位置に応じた３バイトコードが割り当てられる。
【００４９】
図４〜図６の説明では図示を省略したが、各単語、数値の後ろには、スペース「△」が設定されているものとする。
【００５０】
図３の説明に戻る。コード変換部１５０は、コード割当表１１０、２バイトコード割当表１１５ａ、３バイトコード割当表１１５ｂを基にして、レジスタ１０５ａに格納された対象データをコード化する処理部である。コード変換部１５０は、コード化した対象データを、レジスタ１０５ｂに格納する。
【００５１】
以下において、コード変換部１５０の処理の一例について説明する。コード変換部１５０は、対象データから、スペース「△」で区切られるデータを取得し、取得したデータが、１バイト領域１１０Ａに設定されたデータか、２バイト領域１１０Ｂに設定されたデータか、３バイト領域１１０Ｃに設定されたデータかを判定する。
【００５２】
コード変換部１５０の取得したデータが１バイト領域１１０Ａに設定されたデータである場合について説明する。コード変換部１５０は、取得したデータと、１バイト領域１１０Ａの各データとを比較して、該当する設定位置の１バイトのコードを特定し、コード化する。たとえば、コード変換部１５０は、取得したデータが「This△」である場合には、かかるデータ「This△」を「３５ｈ」にコード化する。コード変換部１５０は、取得したデータが「10000△」である場合には、かかるデータ「10000△」を「４８ｈ」にコード化する。
【００５３】
コード変換部１５０の取得したデータが２バイト領域１１０Ｂに設定された単語である場合について説明する。コード変換部１５０は、取得したデータと、２バイトコード割当表１１５ａとを比較して、該当する設定位置の２バイトのコードを特定し、コード化する。例えば、コード変換部１５０は、取得したデータが、２バイトコード割当表１１５ａの「４０００ｈ」に設定されたある高頻度単語である場合には、かかる高頻度単語を２バイトのコード「４０００ｈ」にコード化する。
【００５４】
コード変換部１５０の取得した単語が３バイト領域１１０Ｃに設定された単語である場合について説明する。コード変換部１５０は、取得したデータと、３バイトコード割当表１１５ｂとを比較して、該当する設定位置の３バイトのコードを特定し、コード化する。例えば、コード変換部１５０は、取得したデータが、３バイトコード割当表１１５ｂの「Ｆ０００００ｈ」に設定されたある低頻度単語である場合には、かかる英単語を３バイトのコード「７０００００ｈ」にコード化する。
【００５５】
コード変換部１５０は、レジスタ１０５ａに格納された対象データに対して、上記処理を繰り返し実行することで、対象データをコード化する。コード変換部１５０は、コード化した対象データを、レジスタ１０５ｂに格納する。
【００５６】
図７は、本実施例１に係る復号化装置の構成を示す機能ブロック図である。図７に示すように、この復号化装置２００は、入力部２０１、出力部２０２、レジスタ２０５ａ，２０５ｂ、記憶部２０６、コード変換部２５０を有する。
【００５７】
入力部２０１は、コード変換された対象データを受け付ける処理部である。入力部２０１は、受け付けた対象データを、レジスタ２０５ａに格納する。
【００５８】
出力部２０２は、レジスタ２０５ｂに格納された対象データを出力する処理部である。
【００５９】
レジスタ２０５ａは、コード変換された対象データを格納するものである。レジスタ２０５ｂは、コード変換後の対象データを格納するものである。
【００６０】
記憶部２０６は、コード割当表１１０と、２バイトコード割当表１１５ａと、３バイトコード割当表１１５ｂとを有する。記憶部５０６は、例えば、ＲＡＭ、ＲＯＭ、フラッシュメモリなどの半導体メモリ素子などの記憶装置に対応する。
【００６１】
コード割当表１１０に関する説明は、図４で説明したコード割当表１１０に関する説明と同様である。２バイトコード割当表１１５ｂに関する説明は、図５で説明した２バイトコード割当表１１５ａに関する説明と同様である。３バイトコード割当表１１５ｂに関する説明は、図６で説明した３バイトコード割当表１１５ｂに関する説明と同様である。
【００６２】
以下において、コード変換部２５０の処理の一例について説明する。例えば、コード変換部２５０は、対象データからコードを取得し、取得したコードが１バイト領域１１０Ａに設定された単語に対応するものか、２バイト領域１１０Ｂに設定された単語に対応するものか、３バイト領域１１０Ｃに設定された単語に対応するものかを判定する。
【００６３】
コード変換部２５０が取得したコードが１バイト領域１１０Ａに設定されたデータに対応するものである場合について説明する。１バイト領域１１０Ａに設定されたデータに対応するコードの１バイト目は「００ｈ〜５Ｆｈ」に含まれる。コード変換部２５０は、コードに対応するデータを、１バイト領域１１０Ａに設定されたデータから選択し、選択したデータによって復号化する。たとえば、コード変換部２５０は、取得したコードが「３５ｈ」である場合には、「３５ｈ」を「This△」に復号化する。たとえば、コード変換部２５０は、取得したコードが「４８ｈ」である場合には、「４８ｈ」を「10000△」に復号化する。
【００６４】
コード変換部２５０が取得したコードが２バイト領域１１０Ｂに設定されたデータに対応するものである場合について説明する。２バイト領域１１０Ｂに設定されたデータに対応するコードの１バイト目は「６０ｈ〜ＥＦｈ」に含まれる。コード変換部２５０は、コードの１バイト目と続く２バイト目とを合わせたコードと、２バイトコード割当表１１５ａとを比較して、データを復号化する。例えば、コード変換部２５０は、２バイトのコードが「６４６６ｈ」である場合には、２バイトコード割当表１１５ａに設定された「６４６６ｈ」に対応するデータに復号化する。
【００６５】
コード変換部２５０が取得したコードが３バイト領域１１０Ｃに設定されたデータに対応するものである場合について説明する。３バイト領域１１０Ｃに設定された単語に対応するコードの１バイト目は「Ｆ０ｈ〜ＦＦｈ」に含まれる。コード変換部２５０は、コードの１バイト目と続く２、３バイト目とを合わせたコードと、３バイトコード割当表１１５ｂとを比較して、データを復号化する。例えば、コード変換部２５０は、３バイトのコードが「７０００００ｈ」である場合には、３バイトコード割当表１１５ｂに設定された「７０００００ｈ」に対応するデータに復号化する。
【００６６】
図８は、本実施例１に係る符号化装置の処理手順を示すフローチャートである。図８に示すように、符号化装置１００の入力部１０１は、対象データをレジスタ１０５ａに格納する（ステップＳ１０１）。符号化装置１００のコード変換部１５０は、レジスタ１０５ａに格納された対象データからデータを取得する（ステップＳ１０２）。ステップＳ１０２では、説明の便宜上、データと表記するが、コード変換部１５０が取得するものは、単語、数値の他に、日本単語、第３国の単語、時刻、タグ、構文意味解析の結果等の場合もある。
【００６７】
コード変換部１５０は、データとコード割当表１１０とを比較する（ステップＳ１０３）。コード変換部１５０は、データがコード割当表１１０の１バイト領域１１０Ａの単語に対応するデータである場合には（ステップＳ１０４，Ｙｅｓ）、ステップＳ１０５に移行する。コード変換部１５０は、コード割当表１１０に基づいて、データを１バイトのコードに変換し（ステップＳ１０５）、ステップＳ１０９に移行する。
【００６８】
一方、コード変換部１５０は、データがコード割当表１１０の１バイト領域１１０Ａのデータに対応するものでない場合には（ステップＳ１０４，Ｎｏ）、ステップＳ１０６に移行する。コード変換部１５０は、データがコード割当表１１０の２バイト領域１１０Ｂのデータに対応するものである場合には（ステップＳ１０６，Ｙｅｓ）、ステップＳ１０７に移行する。コード変換部１５０は、２バイトコード割当表１１５ａに基づいて、データを２バイトのコードに変換し（ステップＳ１０７）、ステップＳ１０９に移行する。
【００６９】
一方、コード変換部１５０は、単語がコード割当表１１０の２バイト領域１１０Ｂの単語に対応する単語でない場合には（ステップＳ１０６，Ｎｏ）、ステップＳ１０８に移行する。コード変換部１５０は、３バイトコード変換表１１５ｂに基づいて、データを３バイトのコードに変換し（ステップＳ１０８）、ステップＳ１０９に移行する。
【００７０】
コード変換部１５０は、対象データのコード化が終了したか否かを判定する（ステップＳ１０９）。コード変換部１５０は、対象データのコード化が終了していない場合には（ステップＳ１０９，Ｎｏ）、ステップＳ１０２に移行する。
【００７１】
一方、コード変換部１５０は、対象データのコード化が終了した場合には（ステップＳ１０９，Ｙｅｓ）、コード化した対象データを、レジスタ１０５ｂに格納する（ステップＳ１１０）。
【００７２】
図９は、本実施例１に係る復号化装置の処理手順を示すフローチャートである。図９に示すように、復号化装置２００の入力部２０１は、対象データをレジスタ２０５ａに格納する（ステップＳ２０１）。復号化装置２００のコード変換部２５０は、レジスタ２０５ａに格納された対象データからコードを取得する（ステップＳ２０２）。
【００７３】
コード変換部２５０は、コードとコード割当表１１０とを比較する（ステップＳ２０３）。コード変換部２５０は、コードがコード割当表１１０の１バイト領域１１０Ａのデータに対応するコードである場合には（ステップＳ２０４，Ｙｅｓ）、ステップＳ２０５に移行する。コード変換部２５０は、コード割当表１１０に基づいて、１バイトのコードをデータに変換し（ステップＳ２０５）、ステップＳ２０９に移行する。
【００７４】
一方、コード変換部２５０は、コードがコード割当表１１０の１バイト領域１１０Ａのデータに対応するコードでない場合には（ステップＳ２０４，Ｎｏ）、ステップＳ２０６に移行する。コード変換部５５０は、コードがコード割当表１１０の２バイト領域１１０Ｂのデータに対応するコードである場合には（ステップＳ２０６，Ｙｅｓ）、ステップＳ２０７に移行する。コード変換部２５０は、２バイトコード割当表１１５ａに基づいて、コードをデータに変換し（ステップＳ２０７）、ステップＳ２０９に移行する。
【００７５】
一方、コード変換部２５０は、コードがコード割当表１１０の２バイト領域１１０Ｂのデータに対応するコードでない場合には（ステップＳ２０６，Ｎｏ）、ステップＳ２０８に移行する。コード変換部２５０は、３バイトコード変換表１１５ｂに基づいて、コードをデータに変換し（ステップＳ２０８）、ステップＳ２０９に移行する。
【００７６】
コード変換部２５０は、対象データの復号化が終了したか否かを判定する（ステップＳ２０９）。コード変換部２５０は、対象データの復号化が終了していない場合には（ステップＳ２０９，Ｎｏ）、ステップＳ２０２に移行する。
【００７７】
一方、コード変換部２５０は、対象データの復号化が終了した場合には（ステップＳ２０９，Ｙｅｓ）、復号化した対象データを、レジスタ２０５ｂに格納する（ステップＳ２１０）。
【００７８】
次に、本実施例１に係る符号化装置１００の効果について説明する。符号化装置１００は、従来のコード割当表５０の１バイト領域に割り当てられていたデータをコード割当表１１０の２バイト領域に退避させ、コード割当表１１０の１バイト領域には厳選したデータを割り当てた割当表を用いたコード変換を行う。係る処理を実行することで、出現頻度が高いデータに対して、短いバイトコードを割り当てることができる。
【００７９】
また、復号化装置２００は、上記のコード割当表１１０を用いて、コード化された対象データを復号化するため、出現頻度が高いデータに対して、短いバイトコードを割り当てた場合でも、係るバイトコードをもとのデータに変換することができる。
【実施例２】
【００８０】
図１０は、本実施例２に係る復号装置の処理の一例を示す図である。図２に係る復号装置は、第１オートマトン３０６ａ、第２オートマトン３０６ｂ、第３オートマトン３０６ｃを用いて、コード変換された対象データ１０ｂを、コード変換することで、対象データ１０ａを生成する。対象データ１０ｂは、例えば、実施例１で説明した符号化装置１００によりコード変換されたものである。
【００８１】
第１オートマトン３０６ａは、１バイトのコードと、１バイトのコードに対応するデータとが対応付けられる。図１１は、第１オートマトンの一例を示す図である。図１１に示すように、第１オートマトン３０６ａは、「００ｈ〜５Ｆｈ」と各データとが対応付けられる。例えば、「００ｈ〜５Ｆｈ」に対応付けられた各データは、図４で説明した１バイト領域１１０Ａの各データに対応する。
【００８２】
第２オートマトン３０６ｂは、２バイトのコードと、所定のデータとを対応付ける。所定のデータは、超高頻度単語（日本語）、高頻度単語（英語、日本語、数値、第３国語）、低頻度単語を含む。図１２は、第２オートマトンの一例を示す図である。図１２に示すように、第２オートマトン３０６ｂは、「６０００ｈ〜ＥＦＦＦｈ」とデータとが対応付けられる。たとえば、「６０００ｈ〜ＥＦＦＦｈ」に対応付けられるデータは、図５で説明した２バイトコード割当表１１５ａにおいて、「６０００ｈ〜ＥＦＦＦｈ」に対応付けられるデータに対応する。
【００８３】
第３オートマトン３０６ｃは、３バイトのコードと、所定のデータとを対応付ける。所定のデータは、低頻度単語を含む。図１３は、第３オートマトンの一例を示す図である。図１３に示すように、第３オートマトン３０６ｃは、「Ｆ０００ｈ〜ＦＦＦＦｈ」とデータとが対応付けられる。たとえば、「Ｆ０００ｈ〜ＦＦＦＦｈ」に対応付けられるデータは、図６で説明した３バイトコード割当表１１５ｂにおいて、「Ｆ０００ｈ〜ＦＦＦＦｈ」に対応付けられるデータに対応する。
【００８４】
図１０の説明に戻る。コード変換部３５０は、コード変換された対象データ１０ｂからコードを読み出し、コードの先頭４ビットの値に基づいて、第１オートマトン３０６ａ、第２オートマトン３０６ｂ、第３オートマトン３０６ｃのいずれかのオートマトンを選択する。そして、コード変換部３５０は、選択したオートマトンを基にして、コードを変換する。
【００８５】
例えば、コード変換部３５０は、コードの先頭４ビットが「００ｈ〜５Ｆｈ」に含まれる場合には、第１オートマトン３０６ａを選択し、第１オートマトン３０６ａに基づいて、コードを変換する。
【００８６】
コード変換部３５０は、コードの先頭４ビットが「６０ｈ〜ＥＦｈ」に含まれる場合には、第２オートマトン３０６ｂを選択し、第２オートマトン３０６ｂに基づいて、コードを変換する。
【００８７】
コード変換部３５０は、コードの先頭４ビットが「Ｆ０ｈ〜ＦＦｈ」に含まれる場合には、第３オートマトン３０６ｃを選択し、第３オートマトン３０６ｃに基づいて、コードを変換する。
【００８８】
図１０の対象データ１０ｂに含まれる各コード「３５ｈ、２Ｅｈ、４８ｈ」の先頭４ビットは、「００ｈ〜５Ｆｈ」に含まれるため、コード変換部３５０は、第１オートマトン３０６ａを選択し、コードを変換する。例えば、コード変換部３５０は、「３５ｈ、２Ｅｈ、４８ｈ」を第１オートマトン３０６ａに基づき「This△、is△、10000△」にそれぞれ変換する。
【００８９】
図１０の対象データ１０ｂに含まれる各コード「６４６６ｈ、５５３３ｈ、４３４４ｈ」の先頭４ビットは、「６０ｈ〜ＥＦｈ」に含まれるため、コード変換部３５０は、第２オートマトン３０６ｂを選択し、コードを変換する。たとえば、コード変換部３５０は、「６４６６ｈ、５５３３ｈ、４３４４ｈ」を第２オートマトン３０６ｂに基づき「a△、pen△、points」にそれぞれ変換する。
【００９０】
図１０では説明を省略するが、対象データ１０ｂに先頭４ビットが「Ｆ０ｈ〜ＦＦｈ」に含まれるコードが存在する場合には、第３オートマトン３０６ｃを選択し、コードを変換する。
【００９１】
図１４は、本実施例２に係る復号化装置の構成を示す機能ブロック図である。図１４に示すように、この復号化装置３００は、入力部３０１、出力部３０２、レジスタ３０５ａ，３０５ｂ、記憶部３０６、コード変換部３５０を有する。
【００９２】
入力部３０１は、コード変換された対象データを受け付ける処理部である。入力部３０１は、受け付けた対象データを、レジスタ３０５ａに格納する。
【００９３】
出力部３０２は、レジスタ３０５ｂに格納された対象データを出力する処理部である。
【００９４】
記憶部３０６は、第１オートマトン３０６ａと、第２オートマトン３０６ｂと、第３オートマトン３０６ｃとを有する。記憶部３０６は、例えば、ＲＡＭ、ＲＯＭ、フラッシュメモリなどの半導体メモリ素子などの記憶装置に対応する。
【００９５】
第１オートマトン３０６ａ、第２オートマトン３０６ｂ、第３オートマトン３０６ｃに関する説明は、図１０で説明した第１オートマトン３０６ａ、第２オートマトン３０６ｂ、第３オートマトン３０６ｃに関する説明と同様である。
【００９６】
コード変換部３５０は、コード変換された対象データ１０ｂからコードを読み出し、コードの先頭４ビットの値に基づいて、第１オートマトン３０６ａ、第２オートマトン３０６ｂ、第３オートマトン３０６ｃのいずれかのオートマトンを選択する。そして、コード変換部３５０は、選択したオートマトンを基にして、コードを変換する。コード変換部３５０の具体的な処理は、図１０で説明したコード変換部３５０の処理と同様である。
【００９７】
図１５は、本実施例２に係る復号化装置の処理手順を示すフローチャートである。図１５に示すように、復号化装置３００の入力部３０１は、対象データをレジスタ３０５ａに格納する（ステップＳ３０１）。復号化装置３００のコード変換部３５０は、レジスタ３０５ａに格納された対象データからコードを取得する（ステップＳ３０２）。
【００９８】
コード変換部３５０は、コードの先頭の４ビットの値と各オートマトンとを比較する（ステップＳ３０３）。コード変換部３５０は、コードの先頭の４ビットの値が第１オートマトン３０６ａにヒットしたか否かを判定する（ステップＳ３０４）。コード変換部３５０は、コードの先頭の４ビットの値が第１オートマトン３０６ａにヒットした場合には（ステップＳ３０４，Ｙｅｓ）、第１オートマトン３０６ａを選択する（ステップＳ３０５）。コード変換部３５０は、第１オートマトン３０６ａに基づいてコードをデータに変換し（ステップＳ３０６）、ステップＳ３１２に移行する。
【００９９】
一方、コード変換部３５０は、コードの先頭の４ビットの値が第１オートマトン３０６ａにヒットしていない場合には（ステップＳ３０４，Ｎｏ）、コードの先頭の４ビットの値が第２オートマトン３０６ｂにヒットしたか否かを判定する（ステップＳ３０７）。コード変換部３５０は、コードの先頭の４ビットの値が第２オートマトン３０６ｂにヒットした場合には（ステップＳ３０７，Ｙｅｓ）、第２オートマトン３０６ｂを選択する（ステップＳ３０８）。コード変換部３５０は、第２オートマトン３０６ｂに基づいてコードをデータに変換し（ステップＳ３０９）、ステップＳ３１２に移行する。
【０１００】
一方、コード変換部３５０は、コードの先頭の４ビットの値が第２オートマトン３０６ｂにヒットしない場合には（ステップＳ３０７，Ｎｏ）、第３オートマトン３０６ｃを選択する（ステップＳ３１０）。コード変換部３５０は、第３オートマトン３０６ｃに基づいてコードをデータに変換する（ステップＳ３１１）。
【０１０１】
コード変換部３５０は、対象データの復号化が終了したか否かを判定する（ステップＳ３１２）。コード変換部３５０は、対象データの復号化が終了していない場合には（ステップＳ３１２，Ｎｏ）、ステップＳ３０２に移行する。
【０１０２】
一方、コード変換部３５０は、対象データの復号化が終了した場合には（ステップＳ３１２，Ｙｅｓ）、復号化した対象データを、レジスタ３０５ｂに格納する（ステップＳ３１３）。
【０１０３】
次に、復号化装置３００の効果について説明する。復号化装置３００は、コード変換された対象データ１０ｂからコードを読み出し、コードの先頭４ビットの値に基づいて、第１オートマトン３０６ａ、第２オートマトン３０６ｂ、第３オートマトン３０６ｃのいずれかのオートマトンを選択する。そして、復号化装置３００は、選択したオートマトンを基にして、コードを変換する。これにより、符号化装置１００等により、短いコードに割り当てるべき、出現頻度が高いデータに対応付けられたコード等の２バイト以上のコードを１バイトコードに割り当てた場合でも、復号化装置３００を用いて、適切に復号化できる。すなわち、復号化装置３００により、短いコードに割り当てるべき、出現頻度が高いデータに対応付けられたコード等の２バイト以上のコードを１バイトコードに割り当てることができる。
【０１０４】
下記に、本実施形態に用いられるハードウェア及びソフトウェアについて説明する。図１６は、コンピュータ１のハードウェア構成例を示す。コンピュータ１は、例えば、プロセッサ４０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４０２、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）４０３、ドライブ装置４０４、記憶媒体４０５、入力インターフェース（Ｉ／Ｆ）４０６、入力デバイス４０７、出力インターフェース（Ｉ／Ｆ）４０８、出力デバイス４０９、通信インターフェース（Ｉ／Ｆ）４１０、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）インターフェース（Ｉ／Ｆ）４１１およびバス４１２などを含む。それぞれのハードウェアはバス４１２を介して接続されている。
【０１０５】
ＲＡＭ４０２は読み書き可能なメモリ装置であって、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）やＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）などの半導体メモリ、またはＲＡＭでなくてもフラッシュメモリなどが用いられる。ＲＯＭ４０３は、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）なども含む。ドライブ装置４０４は、記憶媒体４０５に記録された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記憶媒体４０５は、ドライブ装置４０４によって書き込まれた情報を記憶する。記憶媒体４０５は、例えば、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などのフラッシュメモリ、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ブルーレイディスクなどの記憶媒体である。また、例えば、コンピュータ１は、複数種類の記憶媒体それぞれについて、ドライブ装置４０４及び記憶媒体４０５を設ける。
【０１０６】
入力インターフェース４０６は、入力デバイス４０７と接続されており、入力デバイス４０７から受信した入力信号をプロセッサ４０１に伝達する回路である。出力インターフェース４０８は、出力デバイス４０９と接続されており、出力デバイス４０９に、プロセッサ４０１の指示に応じた出力を実行させる回路である。通信インターフェース４１０はネットワーク３を介した通信の制御を行なう回路である。通信インターフェース４１０は、例えばネットワークインターフェースカード（ＮＩＣ）などである。ＳＡＮインターフェース４１１は、ストレージエリアネットワークによりコンピュータ１と接続された記憶装置との通信の制御を行なう回路である。ＳＡＮインターフェース４１１は、例えばホストバスアダプタ（ＨＢＡ）などである。
【０１０７】
入力デバイス４０７は、操作に応じて入力信号を送信する装置である。入力信号は、例えば、キーボードやコンピュータ１の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力デバイス４０９は、コンピュータ１の制御に応じて情報を出力する装置である。出力デバイス４０９は、例えば、ディスプレイなどの画像出力装置（表示デバイス）や、スピーカーなどの音声出力装置などである。また、例えば、タッチスクリーンなどの入出力装置が、入力デバイス４０７及び出力デバイス４０９として用いられる。また、入力デバイス４０７及び出力デバイス４０９は、コンピュータ１と一体になっていてもよいし、コンピュータ１に含まれず、例えば、コンピュータ１に外部から接続する装置であってもよい。
【０１０８】
例えば、プロセッサ４０１は、ＲＯＭ４０３や記憶媒体４０５に記憶されたプログラムをＲＡＭ４０２に読み出し、読み出されたプログラムの手順に従って、入力部１０１，２０１，３０１、コード変換部１５０，２５０，３５０、出力部１０２，２０２，３０２の処理を行なう。その際にＲＡＭ４０２はプロセッサ４０１のワークエリアとして用いられる。記憶部の機能は、ＲＯＭ４０３および記憶媒体４０５がプログラムファイル（後述のアプリケーションプログラム２４、ミドルウェア２３およびＯＳ２２など）やデータファイル（データ、照合対象となる文字列、数値等）を記憶し、ＲＡＭ４０２がプロセッサ４０１のワークエリアとして用いられることによって実現される。プロセッサ４０１が読み出すプログラムについては、図１７を用いて説明する。
【０１０９】
図１７は、コンピュータで動作するプログラムの構成例を示す。コンピュータ１において、図１７に示すハードウェア群２１（４０１〜４１２）の制御を行なうＯＳ（オペレーティング・システム）２２が動作する。ＯＳ２２に従った手順でプロセッサ４０１が動作して、ハードウェア群２１の制御・管理が行なわれることにより、アプリケーションプログラム２４やミドルウェア２３に従った処理がハードウェア群２１で実行される。さらに、コンピュータ１において、ミドルウェア２３またはアプリケーションプログラム２４が、ＲＡＭ４０２に読み出されてプロセッサ４０１により実行される。
【０１１０】
プロセッサ４０１が、照合機能が呼び出された場合に、ミドルウェア２３またはアプリケーションプログラム２４の少なくとも一部に基づく処理を行なうことにより、（それらの処理をＯＳ２２に基づいてハードウェア群２１を制御して）コード変換部１５０，２５０，３５０の機能が実現される。照合機能は、それぞれアプリケーションプログラム２４自体に含まれてもよいし、アプリケーションプログラム２４に従って呼び出されることで実行されるミドルウェア２３の一部であってもよい。
【０１１１】
図１８は、実施形態のシステムにおける装置の構成例を示す。図１８のシステムは、コンピュータ１ａ、コンピュータ１ｂ、基地局２およびネットワーク３を含む。コンピュータ１ａは、無線または有線の少なくとも一方により、コンピュータ１ｂと接続されたネットワーク３に接続している。図３に示す符号化装置１００の機能は、図１８に示すコンピュータ１ａとコンピュータ１ｂとのいずれに含まれてもよい。また、図７、図１０に示す復号化装置２００，３００の機能は、図１８に示すコンピュータ１ａとコンピュータ１ｂとのいずれに含まれてもよい。
【０１１２】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１１３】
（付記１）コンピュータに、
記憶装置に格納された、第１コード割当表の１バイト領域に割り当てられたデータの一部が、２バイト領域に割り当てられ、かつ、前記２バイト領域に割り当てられた前記データの少なくとも一部に対して、２バイト以上のコードを割り当てられた、入力されたデータをコード化する変換規則を定義した第２コード割当表を参照し、
前記第２コード割当表を基にして、入力されたデータをコード化する
処理を実行させることを特徴とする符号化プログラム。
【０１１４】
（付記２）前記第２コード割当表は、前記第２コード割当表の１バイト領域に、前記第１コード割当表の２バイト領域または３バイト領域のデータが設定されたコード割当表、または、前記第２コード割当表の２バイト領域に、前記第１コード割当表の１バイト領域のデータが設定されたコード割当表であることを特徴とする付記１に記載の符号化プログラム。
【０１１５】
（付記３）コンピュータに、
記憶装置に格納された、第１コード割当表の１バイト領域に割り当てられたデータの一部が、２バイト領域に割り当てられ、かつ、前記２バイト領域に割り当てられた前記データの少なくとも一部に対して、２バイト以上のコードを割り当てられた、入力されたデータをコード化する変換規則を定義した第２コード割当表を参照し、
前記第２コード割当表を基にして、コード化されたデータをデータに復号化する
処理を実行させることを特徴とする復号化プログラム。
【０１１６】
（付記４）コンピュータに、
記憶装置に格納された、第１コード割当表の１バイト領域に割り当てられたデータの一部が、２バイト領域に割り当てられ、かつ、前記２バイト領域に割り当てられた前記データの少なくとも一部に対して、２バイト以上のコードを割り当てられた、入力されたデータをコード化する変換規則であって、前記コード化された符号データの先頭４ビットの値は当該符号データのコード長に応じて異なる変換規則を定義した第２コード割当表を参照し、
前記第２コード割当表を基にして生成された複数のオートマトンを利用し、コード化されたデータを前記複数のオートマトンのうち、当該データの先頭４ビットの値に応じて選択されるオートマトンによりデータに復号化する
処理を実行させることを特徴とする復号化プログラム。
【０１１７】
（付記５）コンピュータが実行する符号化方法であって、
記憶装置に格納された、第１コード割当表の１バイト領域に割り当てられたデータの一部が、２バイト領域に割り当てられ、かつ、前記２バイト領域に割り当てられた前記データの少なくとも一部に対して、２バイト以上のコードを割り当てられた、入力されたデータをコード化する変換規則を定義した第２コード割当表を参照し、
前記第２コード割当表を基にして、入力されたデータをコード化する
処理を実行させることを特徴とする符号化方法。
【０１１８】
（付記６）前記第２コード割当表は、前記第２コード割当表の１バイト領域に、前記第１コード割当表の２バイト領域または３バイト領域のデータが設定されたコード割当表、または、前記第２コード割当表の２バイト領域に、前記第１コード割当表の１バイト領域のデータが設定されたコード割当表であることを特徴とする付記５に記載の符号化方法。
【０１１９】
（付記７）コンピュータが実行する復号化方法であって、
記憶装置に格納された、第１コード割当表の１バイト領域に割り当てられたデータの一部が、２バイト領域に割り当てられ、かつ、前記２バイト領域に割り当てられた前記データの少なくとも一部に対して、２バイト以上のコードを割り当てられた、入力されたデータをコード化する変換規則を定義した第２コード割当表を参照し、
前記第２コード割当表を基にして、コード化されたデータをデータに復号化する
処理を実行させることを特徴とする復号化方法。
【０１２０】
（付記８）コンピュータが実行する復号化方法であって、
記憶装置に格納された、第１コード割当表の１バイト領域に割り当てられたデータの一部が、２バイト領域に割り当てられ、かつ、前記２バイト領域に割り当てられた前記データの少なくとも一部に対して、２バイト以上のコードを割り当てられた、入力されたデータをコード化する変換規則であって、前記コード化された符号データの先頭４ビットの値は当該符号データのコード長に応じて異なる変換規則を定義した第２コード割当表を参照し、
前記第２コード割当表を基にして生成された複数のオートマトンを利用し、コード化されたデータを前記複数のオートマトンのうち、当該データの先頭４ビットの値に応じて選択されるオートマトンによりデータに復号化する
処理を実行させることを特徴とする復号化方法。
【０１２１】
（付記９）第１コード割当表の１バイト領域に割り当てられたデータの一部が、２バイト領域に割り当てられ、かつ、前記２バイト領域に割り当てられた前記データの少なくとも一部に対して、２バイト以上のコードを割り当てられた、入力されたデータをコード化する変換規則を定義した第２コード割当表を記憶する記憶部と、
前記第２コード割当表を基にして、入力されたデータをコード化するコード変換部と
を有することを特徴とする符号化装置。
【０１２２】
（付記１０）前記第２コード割当表は、前記第２コード割当表の１バイト領域に、前記第１コード割当表の２バイト領域または３バイト領域のデータが設定されたコード割当表、または、前記第２コード割当表の２バイト領域に、前記第１コード割当表の１バイト領域のデータが設定されたコード割当表であることを特徴とする付記９に記載の符号化装置。
【０１２３】
（付記１１）第１コード割当表の１バイト領域に割り当てられたデータの一部が、２バイト領域に割り当てられ、かつ、前記２バイト領域に割り当てられた前記データの少なくとも一部に対して、２バイト以上のコードを割り当てられた、入力されたデータをコード化する変換規則を定義した第２コード割当表を記憶する記憶部と、
前記第２コード割当表を基にして、コード化されたデータをデータに復号化するコード変換部と
を有することを特徴とする復号化装置。
【０１２４】
（付記１２）記憶装置に格納された、第１コード割当表の１バイト領域に割り当てられたデータの一部が、２バイト領域に割り当てられ、かつ、前記２バイト領域に割り当てられた前記データの少なくとも一部に対して、２バイト以上のコードを割り当てられた、入力されたデータをコード化する変換規則であって、前記コード化された符号データの先頭４ビットの値は当該符号データのコード長に応じて異なる変換規則を定義した第２コード割当表を記憶する記憶部と、
前記第２コード割当表を基にして生成された複数のオートマトンを利用し、コード化されたデータを前記複数のオートマトンのうち、当該データの先頭４ビットの値に応じて選択されるオートマトンによりデータに復号化するコード変換部と
を有することを特徴とする復号化装置。
【符号の説明】
【０１２５】
１００    符号化装置
１０１，２０１，３０１    入力部
１０２，２０２，３０２    出力部
１０５ａ，１０５ｂ，２０５ａ，２０５ｂ，３０５ａ，３０５ｂ  レジスタ
１０６，２０６，３０６    記憶部
１５０，２５０，３５０    コード変換部
２００，３００    復号化装置
【図１】
2020061641.tif 000003
【図２】
2020061641.tif 000004
【図３】
2020061641.tif 000005
【図４】
2020061641.tif 000006
【図５】
2020061641.tif 000007
【図６】
2020061641.tif 000008
【図７】
2020061641.tif 000009
【図８】
2020061641.tif 000010
【図９】
2020061641.tif 000011
【図１０】
2020061641.tif 000012
【図１１】
2020061641.tif 000013
【図１２】
2020061641.tif 000014
【図１３】
2020061641.tif 000015
【図１４】
2020061641.tif 000016
【図１５】
2020061641.tif 000017
【図１６】
2020061641.tif 000018
【図１７】
2020061641.tif 000019
【図１８】
2020061641.tif 000020
【図１９】
2020061641.tif 000021