(57)【要約】【課題】復号処理を効率的に処理する。【解決手段】復号装置は、復号部が構造化文書へとバイナリデータを復号化した復号結果を、バイナリデータとともに保持する一次キャッシュと、一次キャッシュに保持されたバイナリデータが構造化文書の所定のイベントの単位で区切られた部分データと、当該部分データに相当する復号結果を保持する二次キャッシュと、を含む保持部と、一次キャッシュによって保持されているバイナリデータを所定のイベントの単位で区切り、部分データ、及び部分データに相当する復号結果とともに二次キャッシュに記憶させる保持判断部と、を備える。復号部は、入力されたバイナリデータのうち、二次キャッシュによって保持されている部分データと所定のイベントの単位で一致する部分がある場合、自ら復号化処理を行うことなく、二次キャッシュによって保持されている一致する部分データに対応する復号結果を出力する。【選択図】図３
2014186506.tif 000002
【特許請求の範囲】
【請求項１】
構造化文書をバイナリデータへと変換する際に使用した状態機械に従って前記バイナリデータを前記構造化文書へと復号化する復号部と、
前記復号部が前記構造化文書へと前記バイナリデータを復号化した復号結果を、前記バイナリデータとともに保持する一次キャッシュと、前記一次キャッシュに保持された前記バイナリデータが前記構造化文書の所定のイベントの単位で区切られた部分データと、当該部分データに相当する前記復号結果と、を保持する二次キャッシュと、をもつ保持部と、
前記一次キャッシュによって保持されている前記バイナリデータを所定のイベントの単位で区切ることにより前記部分データを生成し、生成した前記部分データと前記部分データに相当する前記復号結果とを前記二次キャッシュに記憶させる保持判断部と、
を備え、
前記復号部は、入力された前記バイナリデータのうち、前記二次キャッシュによって保持されている部分データと所定の前記イベントの単位で一致する部分がある場合、前記二次キャッシュによって保持されている一致する前記部分データに対応する前記復号結果を出力する
ことを特徴とする復号装置。
【請求項２】
前記保持部は、前記状態機械の遷移に相当する符号のデータ幅、又は前記構造化文書におけるコンテンツのデータ幅にしたがって区切られた前記バイナリデータの一部であるビット列と、前記ビット列に対応する前記復号結果と、前記ビット列の開始時にあたる前記状態機械の状態と、前記ビット列の終了時にあたる前記状態機械の状態と、を含む前記部分データを前記二次キャッシュに保持する
ことを特徴とする請求項１に記載の復号装置。
【請求項３】
前記保持判断部は、前記一次キャッシュに保持されている前記バイナリデータを、前記構造化文書のイベントの単位で区切って前記部分データを生成し、前記部分データを前記復号結果とともに前記二次キャッシュに保持する際に、前記ビット列の開始時にあたる前記状態機械の状態をインデックスとする
ことを特徴とする請求項１、又は２に記載の復号装置。
【請求項４】
前記保持判断部は、前記復号結果のうち、コンテンツの直後の位置に対応するビットが始点に、コンテンツの直前の位置に対応する前記ビットが終点の位置にそれぞれなるように、前記一次キャッシュに保持されている前記バイナリデータを区切って前記部分データを生成し、前記部分データを前記復号結果、及び前記始点、及び前記終点の位置情報とともに前記二次キャッシュに保持する
ことを特徴とする請求項１〜３のいずれか一項に記載の復号装置。
【請求項５】
前記復号部は、前記バイナリデータを復号化する際に、前記構造化文書のバイナリー化、及び復号に用いる状態機械の状態を遷移した回数をカウントしたカウント値を前記一次キャッシュに記憶し、
前記保持判断部は、前記カウント値が所定の閾値以上の前記状態を含む前記部分データを前記二次キャッシュに記憶させる
ことを特徴とする請求項１〜３のいずれか一項に記載の復号装置。
【請求項６】
前記保持判断部は、前記部分データのうち、前記ビット列が所定の閾値未満のものについては、前記保持部に保持させないようにする
ことを特徴とする請求項１〜３のいずれか一項に記載の復号装置。
【請求項７】
前記保持判断部は、当該装置がアイドル状態である際に、前記二次キャッシュへの前記部分データの記憶を行う
ことを特徴とする請求項１〜６のいずれか一項に記載の復号装置。
【請求項８】
前記保持判断部は、前記一次キャッシュ又は前記二次キャッシュの残り容量が所定の閾値を下回った場合に、所定のキャッシュアルゴリズムを用いて前記部分データを削除する
ことを特徴とする請求項１〜７のいずれか一項に記載の復号装置。
【請求項９】
コンピュータを、
構造化文書をバイナリデータへと変換する際に使用した状態機械に従って前記バイナリデータを前記構造化文書へと復号化する復号部と、
前記復号部が前記構造化文書へと前記バイナリデータを復号化した復号結果を、前記バイナリデータとともに保持する一次キャッシュと、前記一次キャッシュに保持された前記バイナリデータが前記構造化文書の所定のイベントの単位で区切られた部分データと、当該部分データに相当する前記復号結果と、を保持する二次キャッシュと、を持つ保持部と、
前記一次キャッシュによって保持されている前記バイナリデータを所定のイベントの単位で区切ることにより前記部分データを生成し、生成した前記部分データと前記部分データに相当する前記復号結果とを前記二次キャッシュに記憶させる保持判断部と、
として機能させ、
前記復号部は、入力された前記バイナリデータのうち、前記二次キャッシュによって保持されている部分データと所定の前記イベントの単位で一致する部分がある場合、前記二次キャッシュによって保持されている一致する前記部分データに対応する前記復号結果を出力する
することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、復号装置、およびプログラムに関する。
【背景技術】
【０００２】
従来、ＸＭＬなどの構造化文書においては、文書のデータ量が大きくなる傾向にあるため、高速なデータ処理や大量のＸＭＬ文書のデータを扱う処理には向いていなかった。そこで、効率的、かつ高速なデータ処理のための規格としてＥＸＩ（Ｅｆｆｉｃｉｅｎｔ  ＸＭＬ  Ｉｎｔａｒｃｈａｎｇｅ）が提案されている。ＥＸＩは、ＸＭＬ文書をＸＭＬスキーマにしたがってバイナリー化したＥＸＩストリームへと変換する。バイナリー化されたデータは、データ容量が劇的に低減されることから、効率的なデータの通信や処理に寄与することができる。
【０００３】
また、上記のようにバイナリー化されたデータをユーザが実際に確認する場合には、ＸＭＬ文書をバイナリー化する際に用いた状態機械と同様のロジックを有する復号装置にＥＸＩストリームを入力し、元のＸＭＬ文書が出力される。出力されたＸＭＬ文書は自然言語によって記述されているため、ユーザはその内容を確認することができるようになる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１２８８１０号公報
【非特許文献】
【０００５】
【非特許文献１】Efficient  XML  Interchange  (EXI)    Format1.0  W3C  Recommendation  John  Schneider,    Takuki  Kamiya
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述のＥＸＩストリームはビット単位で符号化または復号される。一般的に、ビット単位でのデータの読み書きの処理は負荷が大きく、処理速度は低下してしまう傾向にある。無数の機器がＥＸＩストリームを出力し、それらを一手に受信するサーバに搭載された復号装置や、処理の遅い機器に搭載された復号装置を想定した場合、ビット単位でのデータの読み書きでは処理が追いつかない可能性がある。
【０００７】
本発明の実施形態は、上記課題を鑑みてなされたものであり、復号処理を効率的に処理することのできる復号装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明の実施形態においては、構造化文書をバイナリデータへと変換する際に使用した状態機械に従って前記バイナリデータを前記構造化文書へと復号化する復号部と、前記復号部が前記構造化文書へと前記バイナリデータを復号化した復号結果を、前記バイナリデータとともに保持する一次キャッシュと、前記一次キャッシュに保持された前記バイナリデータが前記構造化文書の所定のイベントの単位で区切られた部分データと、当該部分データに相当する前記復号結果と、を保持する二次キャッシュと、をもつ保持部と、前記一次キャッシュによって保持されている前記バイナリデータを所定のイベントの単位で区切ることにより前記部分データを生成し、生成した前記部分データと前記部分データに相当する前記復号結果とを前記二次キャッシュに記憶させる保持判断部と、を備える。そして、前記復号部は、入力された前記バイナリデータのうち、前記二次キャッシュによって保持されている部分データと所定の前記イベントの単位で一致する部分がある場合、前記二次キャッシュによって保持されている一致する前記部分データに対応する前記復号結果を出力することを特徴とする。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態の全体図である。
【図２】第１の実施形態のスマートメータの機能構成の詳細を示すブロック図である。
【図３】第１の実施形態の復号部の機能構成の詳細を示すブロック図である。
【図４】第１の実施形態のＥＸＩストリーム復号部の処理の流れを示すフロー図である。
【図５】第１の実施形態の保持部に保持されるデータの一例である。
【図６】第１の実施形態の保持のデータの保持例である。
【図７】第１の実施形態の保持判断部の処理の流れを示すフロー図である。
【図８】第２の実施形態の全体図である。
【図９】第２の実施形態のホームサーバの機能構成の詳細を示すブロック図である。
【図１０】第２の実施形態の復号部の機能構成の詳細を示すブロック図である。
【図１１】第２の実施形態の保持部のデータの保持例である。
【図１２】第２の実施形態の保持判断部の処理の流れを示すフロー図である。
【発明を実施するための形態】
【００１０】
（第１の実施形態）
以下、復号装置をスマートメータとして実現した実施形態を説明する。図１は、スマートメータ１０１が使用される利用シーンを示した図である。図１に示されるように、電力会社等の供給側から、消費電力の削減要求（デマンドレスポンス）の情報であるＥＸＩストリームが、家庭などの需要側に配信される場合を想定している。ＥＸＩストリームは、スマートメータ１０１により受信される。なお、復号装置は他の用途にも使用することができ、ＥＸＩストリームが送信されて、バイナリデータから通常のＸＭＬ文書のデータへと復号化するシステムであれば適宜適用することができる。
【００１１】
図２は、スマートメータ１０１の機能構成を示すブロック図である。スマートメータ１０１は復号部２０１と、データ処理部２０２を備えている。復号部２０１、およびデータ処理部２０２は、ソフトウェアによって実現されてもよいし、ハードウェアによって実現されてもよいし、またこれらの併用で実現してもよい。復号部２０１は、入力されたＥＸＩストリームを復号し、その結果を出力する。データ処理部２０２は復号化されたデータを処理する。データ処理部２０２が行う処理内容としては、例えばスマートメータ１０１と接続する各家電への制御命令を作成、送信する処理などである。
【００１２】
図３は復号部２０１の構成図である。復号部２０１はＥＸＩストリーム復号部３０１と、保持部３０２と、保持判断部３０３を備えている。ＥＸＩストリーム復号部３０１は保持部３０２を参照してＥＸＩストリームを復号する。ＥＸＩストリーム復号部３０１は、ＥＸＩストリームをバイナリデータへと変換する際に用いたものと同様の状態機械を有している。また、ＥＸＩストリーム復号部３０１は、ＥＸＩストリーム、復号結果、及び状態機械を保持部３０２に記憶させる。保持部３０２はＥＸＩストリーム復号部が復号した結果を保持する。保持部３０２は、例えばＨＤＤや、ＲＡＭなどの不揮発性の記憶媒体により構成されている。保持判断部３０３は、スマートメータ１０１がアイドル状態、例えばＣＰＵ使用率が２０％以下の場合に保持部３０２に保持された復号結果のうち、後述する条件に合致するものの選別を行う。
【００１３】
図４はＥＸＩストリーム復号部３０１の処理の流れを示すフロー図である。ＥＸＩストリームの復号化は、先頭のバイナリデータからＥＸＩストリーム復号部３０１が有する状態機械の現在の状態を基点に行われていく。まず、ＥＸＩストリーム復号部３０１は、保持部３０２に復号しようとするＥＸＩストリームと、復号開始位置に相当する状態とが一致する部分ＥＸＩストリームがあるかを検索する（ステップＳ４０１）。
【００１４】
検索の方法としては、まず現在のＥＸＩストリーム復号部３０１の状態機械の状態と一致する状態を有する部分ＥＸＩストリームがあるか否かを検索する。一致する部分ＥＸＩストリームがあった場合、その部分ＥＸＩストリームを構成するバイナリデータと、受信したバイナリデータとを比較し、全てのビットが一致した場合に、一致する部分ＥＸＩストリームがあると判断される。部分ＥＸＩストリームとは、ＥＸＩストリームの一部分のストリームを抽出したバイナリデータである。部分ＥＸＩストリームは保持部３０２に保持されているＥＸＩストリームを所定のイベントの単位で区切ったものである。イベントの単位とは、例えば、構造化文書のバイナリー化および復号に用いる状態機械の遷移に相当する符号のデータ幅、又は前記構造化文書におけるコンテンツのデータ幅である。
【００１５】
一致する部分ＥＸＩストリームが保持部３０２の二次キャッシュにある場合（ステップＳ４０１：Ｙｅｓ）、ＥＸＩストリーム復号部３０１は、該当する部分ＥＸＩストリーム分の復号処理を省略し、保持部３０２が保持する復号結果を利用し、残りのＥＸＩストリームの復号を復号終了位置に相当する状態から再開する（ステップＳ４０２）。一致する部分ＥＸＩストリームがない場合（ステップＳ４０１：Ｎｏ）、ＥＸＩストリーム復号部３０１は、通常の復号を行う（ステップＳ４０４）。そして、ＥＸＩストリーム復号部３０１は、全てのＥＸＩストリームの復号化が完了したか否かを判定し（ステップＳ４０３）、完了した場合は処理を終了する。
【００１６】
図５は保持部３０２の二次キャッシュに保持されるデータの一例である。保持するデータは、部分ＥＸＩストリームのビット列と、復号結果と、部分ＥＸＩストリームの先頭にあたる状態機械の位置（始点）と、終了にあたる状態機械の位置（終点）と、参照回数の値とを含んでいる。部分ＥＸＩストリームはビット列、復号結果は遷移の過程とコンテンツ、状態機械は部分ＥＸＩストリームの始めと終わりに相当する状態機械の位置、ｔｙｐｅは状態機械の名前、ｓｔａｔｅは状態の名前である。また、ＥＸＩストリーム復号部３０１によって参照されたデータには参照された回数（カウント値）、頻度または時刻を記録しておく。参照された回数とは、ＥＸＩストリーム復号部３０１がバイナリデータを復号する際に、その部分ＥＸＩストリームを使用した回数である。
【００１７】
図６は保持部３０２のデータの保持例である。データは、精査前のデータを保持する一次キャッシュと、精査後のデータを保持する二次キャッシュに分けて保持される。ＥＸＩストリーム復号部３０１が参照するのは精査後の二次キャッシュに記憶されたデータである。二次キャッシュの残り容量が所定の閾値を下回った場合には使用時刻を参照してＭＲＵ（Ｍｏｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）などのキャッシュアルゴリズムを用いて最近使われたデータを削除する。なお、他のキャッシュアルゴリズムとしては、最近使われていないデータを捨てるＬｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ方式、最近使われたデータを捨てるＭＲＵ方式、確率的にほぼ最近使われていないデータを捨てるＰｓｅｕｄｏ―ＬＲＵ方式、各データが使われた頻度を保持し、使われていないデータを捨てるＬｅａｓｔ  Ｆｒｅｑｕｅｎｔｌｙ  Ｕｓｅｄ方式、ＬＲＵ方式とＬＦＵ方式の間でバランスをとり、最適な結果を得るＡｄａｐｔｉｖｅ  Ｒｅｐｌａｃｅｍｅｎｔ  Ｃａｃｈｅ方式などである。
【００１８】
図７は保持判断部３０３の処理の流れを示すフロー図である。保持判断部３０３は、保持部３０２の精査前の一次キャッシュのデータを参照し、ＥＸＩストリームが一次キャッシュにあるか否かを判定する（ステップＳ７０１）。ＥＸＩストリームが一次キャッシュにあると判定された場合（ステップＳ７０１：Ｙｅｓ）、保持判断部３０３は、復号結果を参考にコンテンツの直前、又は直後でＥＸＩストリームを区切る（ステップＳ７０２）。そして、保持判断部３０３は、区切った部分ＥＸＩストリームを、部分ＥＸＩストリームの始まりと終わりに相当する状態機械の位置情報とともに精査後のデータとして二次キャッシュに保持する（ステップＳ７０３）。保持するデータの部分ＥＸＩストリームの長さに閾値を設けて保持するか否かを決定してもよい。一方、ＥＸＩストリームが一次キャッシュにないと判定された場合（ステップＳ７０１：Ｎｏ）、そのまま処理を終了する。
【００１９】
次に、例えば、初めに「１０００  ００００  １０００  ００００  １０００  ００００」というＥＸＩストリームを、次に「１０００  ００００  １０００  ００００  １１００  ００００」というＥＸＩストリームを復号する場合について説明する。ＥＸＩストリーム復号部３０１は、１つ目のＥＸＩストリームを復号するときは保持部３０２にデータはないので、復号規則に従って最初から最後まで通常の復号を行う。
【００２０】
仮に「１０００  ００００  １０００  ００００  １０００  ００００」を復号して得られたＸＭＬ文書が、
<Ａ>
<Ｂ>０</Ｂ>
</Ａ>
であった場合、復号結果のイベントとコンテンツは、
ＳｔａｒｔＥｌｅｍｅｎｔ(Ａ)  ＳｔａｒｔＥｌｅｍｅｎｔ(Ｂ)  Ｃｈａｒａｃｔｅｒ(Ｂｏｏｌｅａｎ)  Ｖａｌｕｅ(０)  ＥｎｄＥｌｅｍｅｎｔ  ＥｎｄＥｌｅｍｅｎｔ  ＥｎｄＤｏｃｕｍｅｎｔ
となる。
【００２１】
ＥＸＩストリーム復号部３０１は、ＥＸＩストリームと、各イベントを遷移にもつ復号規則の状態機械の情報とともに復号結果を、保持部３０２に渡す。保持部３０２は一次キャッシュにこの情報を保持する。保持判断部３０３は、所定のタイミングで、保持部３０２にデータがあるかを確認する。この時点では一次キャッシュにのみデータがある。
【００２２】
保持判断部３０３は、この一次キャッシュに保持されているデータを、以下のような２つの部分ＥＸＩストリームへと区切る。
【００２３】
部分ＥＸＩストリーム：１０００００００１０００００００１
復号結果：ＳｔａｒｔＥｌｅｍｅｎｔ(Ａ)  ＳｔａｒｔＥｌｅｍｅｎｔ(Ｂ)  Ｃｈａｒａｃｔｅｒ(Ｂｏｏｌｅａｎ)
開始位置：Ｔｙｐｅ＝Ｄｏｃｕｍｅｎｔ、Ｓｔａｔｅ＝ｉｎｉｔ
終了位置：Ｔｙｐｅ＝Ｂ、Ｓｔａｔｅ＝Ｔｅｒｍ１
参照回数：０
【００２４】
部分ＥＸＩストリーム：０００００００
復号結果：Ｖａｌｕｅ(０)  ＥｎｄＥｌｅｍｅｎｔ  ＥｎｄＥｌｅｍｅｎｔ  ＥｎｄＤｏｃｕｍｅｎｔ
開始位置：Ｔｙｐｅ＝Ｂ、Ｓｔａｔｅ＝Ｔｅｒｍ１
終了位置：Ｔｙｐｅ＝Ｄｏｃｕｍｅｎｔ、Ｓｔａｔｅ＝Ｔｅｒｍ２
参照回数：０
【００２５】
そして、保持判断部３０３は、区切った２つの部分ＥＸＩストリームを保持部３０２の二次キャッシュに保持する。このとき、区切られた結果できるデータは、
ＳｔａｒｔＥｌｅｍｅｎｔ(Ａ)  ＳｔａｒｔＥｌｅｍｅｎｔ(Ｂ)  Ｃｈａｒａｃｔｅｒ(Ｂｏｏｌｅａｎ)
ＳｔａｒｔＥｌｅｍｅｎｔ(Ｂ)  Ｃｈａｒａｃｔｅｒ(Ｂｏｏｌｅａｎ)
のように重複があってもよい。
【００２６】
保持するデータ数を制限したい場合は、部分ＥＸＩストリームの長さが閾値以下の場合には保持しないなどの条件をつけてもよい。この場合、短い部分ＥＸＩストリームについては、復号化の処理もそれほど負担が大きくないため、処理の効率を維持しつつ二次キャッシュの容量を削減することができる。ここでは２つめのデータを保持しなかったとする。開始位置、終了位置のＴｙｐｅ、Ｓｔａｔｅおよび値は復号規則の状態機械の位置を示すために用いた名称であり、位置が分かるものであればこれに限る必要はない。区切る条件はコンテンツの直前とした。
【００２７】
次に、ＥＸＩストリーム復号部３０１は、２つめのＥＸＩストリームを復号する。ＥＸＩストリーム復号部３０１は、保持部３０２の二次キャッシュに、今の復号位置（ＥＸＩストリームと復号規則の状態機械）と一致するデータがあるか検索する。２つ目のＥＸＩストリーム「１０００  ００００  １０００  ００００  １１００  ００００」のうち、「１０００  ００００  １０００  ００００  １」までは一致する。
【００２８】
したがって、ＥＸＩストリーム復号部３０１は、一致するデータとして、
部分ＥＸＩストリーム：１０００００００１０００００００１
復号結果：ＳｔａｒｔＥｌｅｍｅｎｔ(Ａ)  ＳｔａｒｔＥｌｅｍｅｎｔ(Ｂ)  Ｃｈａｒａｃｔｅｒ(Ｂｏｏｌｅａｎ)
開始位置：Ｔｙｐｅ＝Ｄｏｃｕｍｅｎｔ、Ｓｔａｔｅ＝ｉｎｉｔ
終了位置：Ｔｙｐｅ＝Ｂ、Ｓｔａｔｅ＝Ｔｅｒｍ１
参照回数：０
のデータを二次キャッシュから参照し、復号結果とする。
【００２９】
次いで、ＥＸＩストリーム復号部３０１は、残りのＥＸＩストリーム「１００００００」については、該当する復号済みの部分ＥＸＩストリームが二次キャッシュにないため、終了位置から復号を行う。
【００３０】
残りのＥＸＩストリーム「１００００００」の復号結果のイベントとコンテンツが、
Ｖａｌｕｅ(１)  ＥｎｄＥｌｅｍｅｎｔ  ＥｎｄＥｌｅｍｅｎｔ  ＥｎｄＤｏｃｕｍｅｎｔ
であったとすると、全体の復号結果は、参照したデータと合わせて、
ＳｔａｒｔＥｌｅｍｅｎｔ(Ａ)  ＳｔａｒｔＥｌｅｍｅｎｔ(Ｂ)  Ｃｈａｒａｃｔｅｒ(Ｂｏｏｌｅａｎ)  Ｖａｌｕｅ(１)  ＥｎｄＥｌｅｍｅｎｔ  ＥｎｄＥｌｅｍｅｎｔ  ＥｎｄＤｏｃｕｍｅｎｔ
となる。
【００３１】
以上に示した本実施形態の復号装置にあっては、ＥＸＩストリームを復号化する際に、既に同じビットを有する部分ＥＸＩストリームが存在する場合、その部分ＥＸＩストリームの復号結果を用いるため、復号化にかかる重複する処理を省略することができる。したがって、ＥＸＩストリームをより効率的に復号化する処理を行うことができるようになる。
【００３２】
（第２の実施形態）
次に、復号装置をホームサーバ１０２として実装した場合の実施形態について説明する。図８はホームサーバ１０２の利用態様を示す全体図である。ホームサーバ１０２は、家電の状態を監視してより消費電力を抑えるよう制御するものであるが、家電の状態の情報をＥＸＩストリームとして受信する。
【００３３】
図９はホームサーバ１０２の機能構成を示すブロック図である。ホームサーバ１０２は、復号部４０１と、データ処理部４０２を備えている。復号部４０１は入力されたＥＸＩストリームを復号し、その結果を出力する。データ処理部４０２は復号されたデータを処理する。例えば、データ処理部４０２が行う処理は、ホームサーバ１０２と接続する各家電への制御命令を作成、送信するなどの処理である。
【００３４】
図１０は復号部４０１の機能構成を示すブロック図である。この構成および動作は復号部２０１と同様である。また、ＥＸＩストリーム復号部３０４の動作もＥＸＩストリーム復号部３０１と同様である。
【００３５】
図１１は保持部３０５のデータの保持態様の一例を示す図である。データは、精査前のデータを保持する一次キャッシュと、精査後のデータを保持する二次キャッシュに分けて保持されること、参照されるデータは二次キャッシュのデータであることは、保持部３０２と同様である。異なるのは、次の２点である。すなわち、ＥＸＩストリームを部分ＥＸＩストリームに分割した時点では二次キャッシュに保持しないために一次キャッシュにＥＸＩストリームの状態と部分ＥＸＩストリームの状態で保持されている。また、インデックスをつけてＥＸＩストリーム復号部３０４が参照しやすいようにされている。インデックスは、開始位置となる状態機械などを用いる。キャッシュの容量を超える場合には使用頻度を参照してＬＦＵ（Least  Frequently  Used）などのキャッシュアルゴリズムを用いて最も頻繁に使用されていないデータを削除する。
【００３６】
図１２は保持判断部３０６の処理の流れを示すフロー図である。保持判断部３０６は、まず一次キャッシュにＥＸＩストリームがあるか否かを判定する（ステップＳ１２０１）。ないと判定された場合は（ステップＳ１２０１：Ｎｏ）、そのまま処理を終了する。一方、一次キャッシュにＥＸＩストリームがあると判定された場合（ステップＳ１２０１：Ｙｅｓ）、保持判断部３０６は、区切られていないＥＸＩストリームがあるか否かを判定する（ステップＳ１２０２）。区切られていないＥＸＩストリームがないと判定された場合（ステップＳ１２０２：Ｎｏ）、処理を終了する。一方、区切られていないＥＸＩストリームがあると判定された場合（ステップＳ１２０２：Ｙｅｓ）、保持判断部３０６は、保持部３０５の精査前のデータを、イベントを境に適当な長さに区切る（ステップＳ１２０３）。また、保持判断部３０６は、区切る際に復号結果を参考に、出現したイベント数をカウントする（ステップＳ１２０４）。保持判断部３０６は、カウント値が所定の閾値を超えたか否かを判定する（ステップＳ１２０５）。カウント値が閾値以上になった場合（ステップＳ１２０５：Ｙｅｓ）、保持判断部３０６は、その状態（開始位置）を含む部分ＥＸＩストリームを二次キャッシュに保持するため保持関数をコールする（ステップＳ１２０６）。保持関数としては、まず保持判断部３０６は、部分ＥＸＩストリームの状態（開始位置）を参照する（ステップＳ１２０７）。そして、保持判断部３０６は、状態（開始位置）をインデックスとして二次キャッシュに部分ＥＸＩストリームを保持する（ステップＳ１２０８）。
【００３７】
具体的には、
１０００００００１０００００００１０００００００
１００００００１００００００００１０００００００
１０００００００１０００００００１０００００００１０００００００１１００００００
の３つのＥＸＩストリームを復号した場合、復号結果が、仮に、
ＳｔａｒｔＥｌｅｍｅｎｔ(Ａ)  ＳｔａｒｔＥｌｅｍｅｎｔ(Ｂ)  Ｃｈａｒａｃｔｅｒ(Ｂｏｏｌｅａｎ)  Ｖａｌｕｅ(０)  ＥｎｄＥｌｅｍｅｎｔ  ＥｎｄＥｌｅｍｅｎｔ  ＥｎｄＤｏｃｕｍｅｎｔ
ＳｔａｒｔＥｌｅｍｅｎｔ(Ａ)  ＳｔａｒｔＥｌｅｍｅｎｔ(Ｃ)  Ｃｈａｒａｃｔｅｒ(Ｂｏｏｌｅａｎ)  Ｖａｌｕｅ(０)  ＥｎｄＥｌｅｍｅｎｔ  ＥｎｄＥｌｅｍｅｎｔ  ＥｎｄＤｏｃｕｍｅｎｔ
ＳｔａｒｔＥｌｅｍｅｎｔ(Ａ)  ＳｔａｒｔＥｌｅｍｅｎｔ(Ｂ)  Ｃｈａｒａｃｔｅｒ(Ｂｏｏｌｅａｎ)  Ｖａｌｕｅ(０)  ＥｎｄＥｌｅｍｅｎｔ  ＳｔａｒｔＥｌｅｍｅｎｔ(Ｂ)  Ｃｈａｒａｃｔｅｒ(Ｂｏｏｌｅａｎ)  Ｖａｌｕｅ(１)  ＥｎｄＥｌｅｍｅｎｔ  ＥｎｄＥｌｅｍｅｎｔ  ＥｎｄＤｏｃｕｍｅｎｔ
であったとする。
【００３８】
このとき、ＸＭＬ文書で言えば、<Ｂ>      </Ｂ>に相当する状態が３回出現している。閾値が仮に３回であれば、区切られたＥＸＩストリームのうち、この状態を含むＥＸＩストリームの部分データを二次キャッシュに保持する。または、ＥＸＩストリームを区切る前にカウントを行い、カウント結果に従ってＥＸＩストリームを区切ってもよい。
【００３９】
本実施形態にあっては、出現頻度の高い部分ＥＸＩストリームを選択的に保持するようにしたため、キャッシュの容量を削減しつつ、効率的に復号化処理を行うことができるようになる。
【００４０】
以上の各実施形態の復号装置は、例えばＣＰＵなどの制御装置と、ＲＯＭ（Read  Only  Memory）やＲＡＭなどの記憶装置と、ＨＤＤ、ＣＤドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【００４１】
以上の各実施形態の復号装置で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【００４２】
また、以上の各実施形態のプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、以上の各実施形態の復号装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。また、以上の各実施形態のプログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【００４３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４４】
１０１  スマートメータ
１０２  ホームサーバ
２０１  復号部
２０２  データ処理部
３０１  ＥＸＩストリーム復号部
３０２  保持部
３０３  保持判断部
３０４  ＥＸＩストリーム復号部
３０５  保持部
３０６  保持判断部
４０１  復号部
４０２  データ処理部
【図１】
2014186506.tif 000003
【図２】
2014186506.tif 000004
【図３】
2014186506.tif 000005
【図４】
2014186506.tif 000006
【図５】
2014186506.tif 000007
【図６】
2014186506.tif 000008
【図７】
2014186506.tif 000009
【図８】
2014186506.tif 000010
【図９】
2014186506.tif 000011
【図１０】
2014186506.tif 000012
【図１１】
2014186506.tif 000013
【図１２】
2014186506.tif 000014