(57)【要約】【課題】変化するデータの分布に関してあらゆる状況での通信に対しても、通信するデータ量を最小にして通信負荷を低減することができるデータ送信装置及びデータ受信装置を得る。【解決手段】データ送信装置１００の分割サイズ決定部１０２は、分割したデータ領域内での差分データの位置情報で差分データを表した場合に、データ量が最も小さくなる分割サイズを決定する。送信データ作成部１０３は、決定された分割サイズで差分データを表す送信データ５を作成する。データ受信装置２００では、差分データ復元部２０１が差分データ７を復元し、更新データ作成部２０２は、差分データ７と前回データ８とを用いて更新データ９を作成する。【選択図】図１
2007282105.tif 000002
【特許請求の範囲】
【請求項１】
更新データと前回データとを比較し、変化したデータを差分データとして抽出する差分データ作成部と、
前記更新データを複数のデータ領域に分割し、データ領域内での差分データの位置情報で当該差分データを表した場合に、送信するデータのデータ量が最も小さくなる分割サイズを決定する分割サイズ決定部と、
前記分割サイズ決定部によって決定された分割サイズに基づき前記差分データを表す送信データを作成する送信データ作成部とを備えたデータ送信装置。
【請求項２】
更新データと前回データとを比較し、変化したデータを差分データとして抽出する差分データ作成部と、
前記更新データを複数のデータ領域に分割し、データ領域内での差分データの位置情報で当該差分データを表した場合に、データ量が最も小さくなる分割サイズで前記差分データを表す送信データを作成する送信データ作成部とを備えたデータ送信装置。
【請求項３】
分割サイズと分割されたデータ領域内での差分データの位置情報が付与された圧縮データから当該差分データを復元する差分データ復元部と、
前記差分データ復元部で復元された差分データと、保持している前回データとを用いて更新データを作成する更新データ作成部とを備えたデータ受信装置。
【請求項４】
分割サイズと分割されたデータ領域内での差分データの位置情報が付与された圧縮データから当該差分データを復元すると共に、前記差分データと、保持している前回データとを用いて更新データを作成する更新データ作成部を備えたデータ受信装置。
【請求項５】
前回データと更新データとの変化分である差分データを送信するコンピュータを、請求項１または請求項２に記載のデータ送信装置として機能させるためのデータ送信プログラム。
【請求項６】
受信した差分データに基づいて更新データを作成するコンピュータを、請求項３または請求項４に記載のデータ受信装置として機能させるためのデータ受信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、特定領域のデータを繰り返し通信する場合に効率的に通信するためのデータ送信装置及びデータ受信装置、データ送信プログラム及びデータ受信プログラムに関するものである。
【背景技術】
【０００２】
大量のデータを通信する際にそのデータを圧縮することは、通信効率を上げるために有効であり、データを圧縮する方法も種々報告されている。
例えば、従来のデータファイル圧縮復元方法では、データの圧縮・復元を行う処理部を備え、類似するデータパターンを繰り返し通信する場合に、今回送信するデータ領域を前のデータ領域と比較して値が変化したデータのみに対して、通信するデータ領域全体の先頭からのオフセット（データ位置）と変化したデータの値を組にして送信データを作成して通信することによって通信データを削減するようにしていた（例えば、特許文献１参照）。
【０００３】
また、従来のデータ圧縮装置では、時系列観測データに対して直前のデータとの差分を取って差分化する差分化手段を備え、差分化データの値及び並びに応じて差分化データを分類し、特定のビットパターンで置換することにより、プロセスの監視のための時系列観測データの特徴に合ったデータ圧縮を行うようにしていた（例えば、特許文献２参照）。
【０００４】
【特許文献１】特開平８−２８６８８９号公報
【特許文献２】特開平３−５５９１９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
データ通信では、例えば、遠隔地の装置の状態のモニタリングや統合シミュレーション環境における各シミュレータ間でのデバイスの状態の相互通信のように、ある特定の領域のデータを繰り返し通信するような場合が多くある。そのような場合、時間と共に領域内のデータの値が変化するが、その変化の仕方は連続的であったり、規則的であったりすることもあるが、そうでない場合も非常に多い。また、通信するデータ領域内で値が変化するデータの分布は時間の経過と共に様々に変化する（特定箇所に集中したり、一様に分散したりすることがある）。
【０００６】
上記特許文献１に示すようなデータファイル圧縮復元方法では、対象となるデータ領域全体に対して前回と今回の差分を抽出し、データ領域全体でのオフセットで変化したデータの位置を表すことによってデータを圧縮しているが、データ領域内において値が変わるデータの位置の分布が時間の経過と共に様々に変化するような場合、変化するデータの分布に関し、あらゆる状況でも常に最適な圧縮効率が得られるとは限らないという問題点があった。
【０００７】
また、上記特許文献２に示すようなデータ圧縮装置のデータ圧縮方法では、プロセスの監視のための時系列観測データのように、連続して少しずつ変化するという特徴を持ったデータ系列に対しては圧縮効果があるが、そのような特徴を持たないデータに対しては、圧縮効果が得られないという問題点があった。
【０００８】
この発明は上記のような課題を解決するためになされたもので、変化するデータの分布に関してあらゆる状況での通信に対しても、通信するデータ量を最小にして通信負荷を低減することができるデータ送信装置及びデータ受信装置、データ送信プログラム及びデータ受信プログラムを得ることを目的とする。
【課題を解決するための手段】
【０００９】
この発明に係るデータ送信装置は、更新データを複数のデータ領域に分割し、データ領域内での差分データの位置情報で差分データを表した場合に、送信するデータのデータ量が最も小さくなる分割サイズを決定する分割サイズ決定部と、分割サイズ決定部によって決定された分割サイズに基づき差分データを表す送信データを作成する送信データ作成部とを備えたものである。
【発明の効果】
【００１０】
この発明のデータ送信装置は、データ領域内での位置情報で差分データを表す場合に、データ量が最も小さくなる分割サイズを求めて、差分データを表す送信データを作成するようにしたので、変化したデータの位置の分布に応じて、通信データ領域を分割するサイズを動的に変化させて通信データ量を最小にする送信データを作成することができるので、変化するデータの分布に関してあらゆる状況での通信に対しても、通信するデータ量を最小にして通信負荷を低減することができる。
【発明を実施するための最良の形態】
【００１１】
実施の形態１．
図１は、この発明の実施の形態１によるデータ送信装置及びデータ受信装置を示す構成図である。
図において、データ送信装置１００は、差分データ作成部１０１、分割サイズ決定部１０２、送信データ作成部１０３を備えている。また、データ受信装置２００は、差分データ復元部２０１、更新データ作成部２０２を備えている。
【００１２】
データ送信装置１００における差分データ作成部１０１は、前回の通信で通信したデータ領域の内容を前回データ２として保持し、今回の通信で通信するデータ領域の内容である更新データ１と前回データ２とを比較して、値が異なるデータを差分データ３として抽出する機能部である。分割サイズ決定部１０２は、差分データ３に基づいて、通信するデータ量が最小になるように通信するデータ領域を適切なサイズに分割して分割サイズ情報４を作成する機能部である。送信データ作成部１０３は、分割サイズ情報４に基づいて通信データ領域を分割し、差分データ３から分割したブロックごとに送信するデータを作成し、それらをまとめて送信データ５として送信する機能部である。
【００１３】
データ受信装置２００における差分データ復元部２０１は、送信側からの送信データ５、即ち、分割サイズと分割されたデータ領域内での差分データの位置情報が付与された圧縮データを受信データ６として受信し、その受信データ６から差分データ７を復元する機能部である。更新データ作成部２０２は、前回の受信データを前回データ８として保持し、復元された差分データ７と前回データ８から、受信側の通信データ領域の内容である更新データ９を作成し、受信側の通信データ領域を更新する機能を有している。
【００１４】
尚、上記のデータ送信装置１００及びデータ受信装置２００は、それぞれコンピュータを用いて実現され、データ送信装置１００の差分データ作成部１０１、分割サイズ決定部１０２、送信データ作成部１０３及びデータ受信装置２００の差分データ復元部２０１、更新データ作成部２０２は、それぞれの機能に対応したソフトウェアと、これらのソフトウェアを実行するためのＣＰＵやメモリ等のハードウェアから構成されている。
【００１５】
次に、このように構成されたデータ送信装置及びデータ受信装置の動作について説明する。
図２は、データ送信装置１００によるデータ送信処理の流れを示すフローチャートである。
先ず、差分データ作成部１０１は、更新データ１と前回データ２に基づいて差分データ３を作成する（ステップＳＴ１）。即ち、差分データ作成部１０１では、前回の通信で通信したデータ領域の内容である前回データ２と今回の通信で通信するデータ領域の内容である更新データ１とを比較して、値が異なるデータを差分データ３として抽出する。
【００１６】
図３は、前回の通信で通信したデータ領域の内容である前回データ２の例と今回の通信で通信するデータ領域の内容である更新データ１の例を示す説明図である。
図３の例では、データ領域のサイズ（デバイス数）が２０００であり、ｌｏｎｇ型の値を持つ“デバイスＷ”という名前のデバイスのデータを通信する場合を示している。即ち、図３の例では、デバイスＷ０，Ｗ１，Ｗ２，…，Ｗ１９９９のデータが含まれている例である。図３の（ａ）の例では、前回データ２のデータの値はすべて０である。図３の（ｂ）に示すように、次の通信時には、そのデータ領域内の３箇所の値が１に変化し、１箇所の値が−７に変化している例を示している（図中の網掛け部分）。
【００１７】
図４は、差分データの一例を示す説明図であり、図３に示した更新データ１と前回データ２とから作成される差分データ３を示している。
図４に示すように、差分データ３は、データの名前を表すデバイス名、データの型を表すデータタイプ、全デバイス内での通信データ領域の先頭番号、通信データ領域のサイズ（デバイス数）、差分のあるデータの個数（差分データ数）、及び、値が変化した全データ分のオフセットとデータの値から構成される。
【００１８】
このように、ステップＳＴ１では、前回データ２と更新データ１のデータの値を順次比較して、異なるデータを抽出して差分データ３を作成する。尚、最初の通信では前回データ２がないため、全てのデータを差分データ３として作成する。但し、最初の通信ではこの送信処理を用いず、通常の通信方法を用いて、全デバイスの値をまとめて送信してもよい。
【００１９】
次に、分割サイズ決定部１０２は、ステップＳＴ１で作成した差分データ３に基づき、通信量を最小にするような通信データ領域の分割サイズを求め、分割した各ブロックのサイズを表す分割サイズ情報４を作成する（ステップＳＴ２）。
図５は、分割サイズ情報４の一例を示す説明図である。
図示のように、分割サイズ情報４は、データの名前を表すデバイス名と通信データ領域を分割した各ブロックのサイズから構成される。図５の例の場合、前から１０デバイス単位で１０ブロック、１００デバイス単位で９ブロック、１０００デバイス単位で１ブロックに分割することを表している。尚、ステップＳＴ２において分割サイズ情報を作成する処理の詳細については後述する。
【００２０】
次に、送信データ作成部１０３では送信データ５を作成する（ステップＳＴ３）。即ち、送信データ作成部１０３は、差分データ３と分割サイズ情報４から実際に送信するデータとして送信データ５を作成する。図６に送信データ５の例を示す。送信データ５は、図６に示すように、データの名前を表すデバイス名、データの型を表すデータタイプ、全デバイス内での通信データ領域の先頭番号、そのデバイスに関する通信データ領域全体のサイズ、分割したブロックの数、及び、そのブロック数分の各ブロックでの差分を表すデータから構成される形式で作成する。また、各ブロックでの差分を表すデータは、ブロックの先頭のデバイス番号、ブロックのサイズ（デバイス数）、ブロック内で差分のあるデータの個数（差分データ数）、及び、ブロック内で値が変化した全データ分のブロック内でのオフセットとデータの値から構成される形式で作成する。差分データ３の各データに対してそのオフセットの値から、そのデータがどのブロックに属するかを分割サイズ情報４のブロックサイズを元にして特定し、そのブロック内でのオフセットを計算して送信データのオフセットとする（ブロック内のオフセットの最大値はブロックサイズ−１）。
次に、送信データ作成部１０３で作成された送信データは、図示しない送信手段によりデータ受信装置２００に送信される（ステップＳＴ４）。ここでは、ステップＳＴ３でデータを圧縮した形で作成された送信データ５をそのまま通信相手先に送信される。
【００２１】
次に、上記ステップＳＴ２における分割サイズ情報の作成処理について詳細に説明する。
図７は、分割サイズ情報作成処理の流れを示すフローチャートである。
分割サイズ情報作成処理では、先ず、ステップＳＴ１０１において、上述したステップＳＴ１で作成した差分データ３に基づき、通信データ領域を１０デバイスのブロックに分割した場合に、１つのブロックに対して送信データ５を作成したときの送信データ量を計算する。差分データが１つのブロック（１０デバイス単位）内に存在する場合、そのブロックに対する送信データ量は、以下の式で計算できる。
Ｄ１０＝Ｈ＋Ｓ＋Ｎ＋（Ｏ１０＋Ｖ）＊ｎ
ここで、Ｄ１０は１０デバイス単位の送信データ量であり、Ｈはブロックの先頭のデバイス番号を表すためのデータのサイズであり、Ｓはブロックサイズを表すためのデータのサイズであり、Ｎはブロック内で変化したデバイスの個数を表すためのデータのサイズであり、Ｏ１０は１０デバイス単位のブロックでのオフセットを表すためのデータのサイズであり、Ｖはデバイスの値を表すためのデータのサイズであり、ｎはそのブロック内で変化したデバイスの個数である。
【００２２】
次のステップＳＴ１０２では、ステップＳＴ１０１の処理が繰り返されて１００デバイス分の通信量の計算が完了したかどうかを判定する。ＹＥＳの場合はステップＳＴ１０３に進み、ＮＯの場合は次の１０デバイス分に対してステップＳＴ１０１を実行する。
【００２３】
ステップＳＴ１０３は、ステップＳＴ１０１と同様にして、ステップＳＴ１で作成した差分データ３に基づき、通信データ領域を１００デバイスのブロックに分割した場合に、１つのブロックに対して送信データ５を作成したときの送信データ量を計算する処理である。差分データが１つのブロック（１００デバイス単位）内に存在する場合、そのブロックに対する送信データ量は、以下の式で計算できる。
Ｄ１００＝Ｈ＋Ｓ＋Ｎ＋（Ｏ１００＋Ｖ）＊ｎ
ここで、Ｄ１００は１００デバイス単位の送信データ量であり、Ｏ１００は１００デバイス単位のブロックでのオフセットを表すためのデータのサイズである。
【００２４】
ステップＳＴ１０４では、ステップＳＴ１０１で計算した１０デバイス単位で分割する場合の送信データ量の１００デバイス分の合計と、ステップＳＴ１０３で計算した１００デバイス単位で分割する場合の送信データ量とを比較し、送信データ量が小さいのはどちらかを判定する。１０デバイス単位で１０ブロックに分割する場合の送信データ量が小さい場合はステップＳＴ１０５へ進み、そうでない場合はステップＳＴ１０６へ進む。
【００２５】
ステップＳＴ１０５では、分割サイズ情報に１０デバイス単位で分割して送信データを作成することを表す情報を設定する。即ち、ステップＳＴ１０５は、１０デバイス単位で１０個に分割して１００デバイス分の送信データを作成する方が小さいデータ通信量になる場合の処理であり、分割サイズ情報の末尾に、ブロックのサイズが１０の情報を１０個追加する。
【００２６】
一方、ステップＳＴ１０６は、分割サイズ情報に１００デバイス単位で分割して送信データを作成することを表す情報を設定する処理である。即ち、ステップＳＴ１０６は、１００デバイス単位の１ブロックで１００デバイス分の送信データを作成する方が小さいデータ通信量になる場合の処理であり、分割サイズ情報の末尾に、ブロックのサイズが１００の情報を１個追加する。
【００２７】
次に、ステップＳＴ１０７において、ステップＳＴ１０６までの処理が繰り返されて１０００デバイス分の通信量の計算が完了したかどうかを判定する。ＹＥＳの場合はステップＳＴ１０８に進み、ＮＯの場合は次の１００デバイス分に対してステップＳＴ１０１以降の処理を実行する。
【００２８】
ステップＳＴ１０８は、ステップＳＴ１０１やステップＳＴ１０３と同様にして、ステップＳＴ１で作成した差分データ３に基づき、通信データ領域を１０００デバイスのブロックに分割した場合に、１つのブロックに対して送信データ５を作成したときの送信データ量を計算する処理である。差分データが１つのブロック（１０００デバイス単位）内に存在する場合、そのブロックに対する送信データ量は、以下の式で計算できる。
Ｄ１０００＝Ｈ＋Ｓ＋Ｎ＋（Ｏ１０００＋Ｖ）＊ｎ
ここで、Ｄ１０００は１０００デバイス単位の送信データ量であり、Ｏ１０００は１０００デバイス単位のブロックでのオフセットを表すためのデータのサイズである。
【００２９】
ステップＳＴ１０９では、ステップＳＴ１０７までで計算した１０デバイス単位のブロックと１００デバイス単位のブロックに分割して送信データを作成する場合の送信データ量の１０００デバイス分の合計と、ステップＳＴ１０８で計算した１０００デバイス単位で送信データを作成する場合の送信データ量とを比較し、送信データ量が小さいのはどちらかを判定する。１０００デバイス単位のブロックで送信データを作成する場合の送信データ量が小さい場合はステップＳＴ１１０へ進み、そうでない場合はステップＳＴ１１１へ進む。
【００３０】
ステップＳＴ１１０は、分割サイズ情報に１０００デバイス単位のブロックに分割して送信データを作成することを表す情報を設定する処理である。ステップＳＴ１１０では、分割サイズ情報にある過去の１０００デバイス分の情報を末尾から削除し、新たにブロックのサイズが１０００の情報を１個追加する。
【００３１】
ステップＳＴ１１１では、ステップＳＴ１１０までの処理で通信デバイス領域の全てのデバイス分に対する処理が完了しているかどうかを判定する。通信デバイス領域の全デバイス分に対して処理が完了している場合は処理を完了してステップＳＴ３へ進み、そうでない場合は次の１０００デバイス分に対してステップＳＴ１０１以降の処理を実行する。
【００３２】
このように送信データを構成することにより、値が変化したデータの位置を特定するために、通信データ領域全体の中でのオフセットではなく、小さいサイズに分割したブロック内でのオフセットを使用することができる。ブロック内でのオフセットを表すデータのサイズは、通信データ領域全体の中でのオフセットを表すデータのサイズよりも小さいので、差分のあるデータを表すのに必要なデータのサイズを小さくすることができ、送信するデータの総量を削減することができる。特に、変化したデバイスが通信データ領域内の特定の箇所に集中している場合、削減の効果が大きくなる。
【００３３】
例えば、通信するデータ領域のサイズが１００００であり、各データのサイズが４バイトであり、今回の通信で変化したデバイスがデータ領域の先頭の２０デバイスと末尾の２０デバイスのみであった場合、データ通信量（データ圧縮方法によって差が生じないデバイス名やデバイスタイプを表す部分を除いたデータサイズ）は次のようになる。単純に全デバイスのデータを通信する場合、４＊１００００＝４００００バイト必要となる。それに対して、本発明の方法のように、変化したデータの分布に応じてデータ領域を適切に分割する方法の場合、１０デバイス分のブロックに分割し、ブロック内のオフセットとして、その数値をＡＳＣＩＩ文字列で表した場合に１桁（＝１バイト）で済ませることができるので、ブロック数（＝３バイト）、ブロック先頭番号（＝４バイト）、ブロックサイズ（＝１バイト）、差分データ数（＝１バイト）を合せても、１０デバイスずつの４ブロックで、３＋（４＋１＋１＋（１＋４）＊１０）＊４＝２２７バイトに削減される。
【００３４】
即ち、上述した１ブロック分のデータ量の式、Ｄ１０＝Ｈ＋Ｓ＋Ｎ＋（Ｏ１０＋Ｖ）＊ｎにおいて、Ｈ＝４、Ｓ＝１、Ｎ＝１、Ｏ１０＝１、Ｖ＝４、ｎ＝１０であり、かつ、合計４ブロックであるため４倍され、更に、ブロック数が３であるためこれが加算されて、合計値は２２７バイトとなる。一方、変化したデータのみ抽出し、データ領域全体でのオフセットと値の組で差分データを表して通信する従来の方法の場合でも、先頭番号（＝４バイト）、オフセットとして４桁（＝４バイト）が必要として、４＋（４＋４）＊（２０＋２０）＝３２４バイト必要となり、本発明の方法がかなり有効であることが分かる。
【００３５】
尚、本実施の形態では、１０デバイス単位、１００デバイス単位、１０００デバイス単位で通信データ領域を分割する例を取り上げているが、同様のやり方で１００００デバイス単位等の更に異なるサイズでも分割できるように拡張することもできる。
図８は、１００００デバイス単位の分割に対応した場合の分割サイズ情報作成処理を示すフローチャートである。
図中、ステップＳＴ１０１〜ステップＳＴ１１０の処理は、図７におけるステップＳＴ１０１〜ステップＳＴ１１０の処理と同様である。また、ステップＳＴ１２１〜ステップＳＴ１２４の処理は、１００００デバイス単位に関する処理である。即ち、ステップＳＴ１２１において、ステップＳＴ１１０までの処理が繰り返されて１００００デバイス分の通信量の計算が完了したかどうかを判定し、ＹＥＳの場合はステップＳＴ１２２、ＮＯの場合は次の１０００デバイス分に対してステップＳＴ１０１以降の処理を実行する。
【００３６】
ステップＳＴ１２２は、ステップＳＴ１０３やステップＳＴ１０８と同様にして、ステップＳＴ１で作成した差分データ３に基づき、通信データ領域を１００００デバイスのブロックに分割した場合に、１つのブロックに対して送信データ５を作成したときの送信データ量を計算する処理である。ステップＳＴ１２３では、ステップＳＴ１２２までで計算した１０デバイス単位のブロックと、１００デバイス単位のブロックと、１０００デバイス単位のブロックに分割して送信データを作成する場合の送信データ量の１００００デバイス分の合計と、ステップＳＴ１２２で計算した１００００デバイス単位で送信データを作成する場合の送信データ量とを比較し、送信データ量が小さいのはどちらかを判定する。１００００デバイス単位のブロックで送信データを作成する場合の送信データ量が小さい場合はステップＳＴ１２４へ進み、そうでない場合はステップＳＴ１２５へ進む。
【００３７】
ステップＳＴ１２４は、分割サイズ情報に１００００デバイス単位のブロックに分割して送信データを作成することを表す情報を設定する処理である。ステップＳＴ１２４では、分割サイズ情報にある過去の１００００デバイス分の情報を末尾から削除し、新たにブロックのサイズが１００００の情報を１個追加する。また、ステップＳＴ１２５は、図７のステップＳＴ１１１と同様に、全デバイス分の計算が完了したかを判定するステップである。
【００３８】
尚、分割単位は、１０，１００，１０００，１００００，…のように１０進単位でなくてもよく、１６，２５６，４０９６，…のように１６進単位でもよいし、他の単位でもよい。
【００３９】
また、分割サイズ決定部１０２において、通信するデータ領域を分割する方法については、必ずしも図７や図８を用いて説明した上記の処理で行う必要はなく、他の処理によってデータ領域を分割して分割サイズ情報４を作成してもよく、このような場合であっても、その分割サイズ情報４に基づいて送信データ５を作成して効率的な通信を行うことができる。また、データ領域を分割しない方が小さなデータ通信量になる場合は分割しなくてもよい。
【００４０】
次に、データ受信装置２００の動作について説明する。
図９は、データ受信装置２００の処理の流れを示すフローチャートである。
以下、図示のフローチャートに沿ってデータ受信時の処理の一例を説明する。
データ受信装置２００の図示しない受信手段はデータ送信装置１００より圧縮した形で送信された送信データ５を受信データ６として受信する（ステップＳＴ１１）。尚、受信データ６は、図６に示される形式のデータである。
【００４１】
次に、差分データ復元部２０１は、受信データ６より差分データ７を作成する（ステップＳＴ１２）。このステップＳＴ１２においては、受信データ６のデバイス名、データタイプ、先頭番号、サイズは、そのまま差分データ７のデバイス名、データタイプ、先頭番号、サイズとして作成する。作成する差分データ７の差分データ数は、受信データ６の各ブロックの差分データ数をすべて加えた値とする。差分データ７の個々の変化したデータの情報は、受信データ６の各ブロックの情報から順に作成していく。差分データ７のオフセットは、受信データ６のブロック先頭番号にブロック内でのオフセットを加えた値とし、差分データ７のデータ値は、受信データ６のデータ値をそのまま使用して差分データ７を作成する。この処理を差分データ数分だけ繰り返して差分データ７を完成させる。
【００４２】
次に、更新データ作成部２０２は、差分データ復元部２０１で復元された差分データ７と保持している前回データに基づいて更新データ９を作成する（ステップＳＴ１３）。即ち、ステップＳＴ１３では、更新データ作成部２０２が保持している前回データ８をまるごと複製して更新データ９を作成し、差分データ７にある変化したデータの情報を１つずつ取り出して、更新データ９の先頭からそのオフセットだけ後の位置にデータ値を上書きしていく。差分データ７の差分データ数分のデータを上書きしたものを最終的な更新データ９として使用する。
【００４３】
このような受信処理により、送信処理で圧縮されたデータを正しく展開することができ、結果的にデータ領域全体のデータを通信する場合と同等の通信をより小さい負荷で実現することができる。
【００４４】
また、上記実施の形態において、データ領域内の特定領域のデータの変化に規則性がある場合、あるいは、限られた特定のパターンで変化する場合は、その規則性やパターンを送信側と受信側で共にデータとして保持し、それらを特定する識別子のみを通信することにより、通信量を削減することもできる。例えば、データ領域内のある特定部分（１０デバイス分）が、“００…０”（０が１０個並ぶ）と、“１１…１”（１が１０個並ぶ）で交互に繰り返して変化するような場合、“００…０”というパターンをある識別子（例えば０）で表し、“１１…１”というパターンを別の識別子（例えば１）で表し、その１０デバイス分については、それぞれの識別子（０，１）でデータとして送信データを作成することで、データ量を削減することができる。また、このようなパターンが多くの箇所で現れる程大きな効果が得られる。従って、このような場合は、送信データとして識別子を使ってパターンを表す情報も付加し、受信側ではこのような識別子に基づいてデータを展開することになる。
【００４５】
以上のように、実施の形態１のデータ送信装置によれば、更新データと前回データとを比較し、変化したデータを差分データとして抽出する差分データ作成部と、更新データを複数のデータ領域に分割し、データ領域内での差分データの位置情報で差分データを表した場合に、送信するデータのデータ量が最も小さくなる分割サイズを決定する分割サイズ決定部と、分割サイズ決定部によって決定された分割サイズに基づき差分データを表す送信データを作成する送信データ作成部とを備えたので、変化したデータの位置の分布に応じて、通信データ領域を分割するサイズを動的に変化させて通信データ量を最小にする送信データを作成することができるので、変化するデータの分布に関してあらゆる状況での通信に対しても、通信するデータ量を最小にして通信負荷を低減することができる。
【００４６】
また、実施の形態１のデータ受信装置によれば、分割サイズと分割されたデータ領域内での差分データの位置情報が付与された圧縮データから差分データを復元する差分データ復元部と、差分データ復元部で復元された差分データと、保持している前回データとを用いて更新データを作成する更新データ作成部とを備えたので、分割サイズと分割されたデータ領域内での差分データの位置情報が付与された圧縮データから更新データを展開することができ、通信負荷の少ないデータ受信を行うことができる。
【００４７】
実施の形態２．
実施の形態２は、データ送信装置側では、送信データ作成部において送信データのデータ量が最も少なくなる分割サイズを求めながら送信データを作成し、データ受信装置側では、更新データ作成部で差分データの復元を行いながら更新データを作成するようにしたものである。
【００４８】
図１０は、実施の形態２のデータ送信装置及びデータ受信装置を示す構成図である。
図において、データ送信装置１００ａは、更新データを複数のデータ領域に分割し、データ領域内での差分データの位置情報で差分データを表した場合に、送信データのデータ量が最も小さくなる分割サイズで、差分データを表す送信データを作成する送信データ作成部１０４を備えている。この送信データ作成部１０４は、通信データ量計算部１０５を有し、送信データ作成部１０４が、直接更新データ１と前回データ２とを入力し、通信データ量計算部１０５で必要な通信データ量を計算しながら、データサイズが最小となる分割の仕方で送信データを直接作成するよう構成されている。また、データ受信装置２００ａは更新データ作成部２０３を有し、この更新データ作成部２０３が直接受信データ６を前回データ８と共に入力し、更新データ９に展開するよう構成されている。
【００４９】
このように構成された実施の形態２において、データ送信装置１００ａ側では、実施の形態１における差分データ３や分割サイズ情報４のような中間的なデータを作成せず、更新データ１と前回データ２から値の変化したデータを抽出しながら、通信データ領域をサイズの異なるブロックに分割したときのそれぞれの通信量を通信データ量計算部１０５で計算し、通信データ量が最小となる分割サイズを選択して送信データ５を作成する。また、データ受信装置２００ａ側では、実施の形態１の差分データ７のような中間的なデータを作成せず、前回データ８を複製して更新データ９を作成し、受信データ６を元にブロック毎に値が変化したデータを個別に更新データ９に上書きしていき、受信データ６の全てのブロックに対してその差分データ数分だけのデータを上書きしたものを最終的な更新データ９とする。
【００５０】
次に、実施の形態２におけるデータ送信の処理を詳細に説明する。
図１１は、実施の形態２におけるデータ送信時の処理の一例を示すフローチャートである。
図示のフローチャートにおいて、ステップＳＴ２０１からステップＳＴ２１４までは、送信データ作成部１０４で更新データ１と前回データ２から送信データ５を作成して送信する処理であり、そのうちのステップＳＴ２０３からステップＳＴ２１１までは、通信データ量計算部１０５で通信データ量を計算する処理である。
【００５１】
送信データ作成部１０４では、１０デバイス単位に分割するとき、１００デバイス単位に分割するとき、１０００デバイス単位に分割するときの現在処理中のブロックの先頭番号をそれぞれ保持しておき、それらの情報を使用してそれぞれの分割サイズでの通信データ量の計算、送信データの作成を行う。それぞれのサイズでの現在処理中のブロックの先頭番号は、それらのブロックの処理が終了した時点で、次のブロックの先頭番号に更新される。また、送信データ作成部１０４では、１０デバイス単位に分割するとき、１００デバイス単位に分割するとき、１０００デバイス単位に分割するときの送信データの現在の先頭位置もそれぞれ保持しておき、それらの情報を使用して正しい位置から送信データを上書きして更新する。それぞれのサイズでの送信データの現在の先頭位置は、それらのブロックの処理が終了した時点で、次の送信データの先頭位置に更新される。これらの処理の詳細については後述する。
【００５２】
ステップＳＴ２０１では、前回の通信で通信したデータ領域の内容である前回データ２と今回の通信で通信するデータ領域の内容である更新データ１のうちの１デバイス分のデータ（単一データ）の値が同じかどうかを比較する。次のステップＳＴ２０２では、ステップＳＴ２０１の処理の結果としてデータの値が異なっているかどうか、及び、ステップＳＴ２０１の処理が繰り返されて１０デバイス分の比較が完了したかどうかを判定する。データの値が異なっている場合、あるいは、ステップＳＴ２０１の処理が繰り返されて１０デバイス分の比較が完了した場合（ＹＥＳの場合）はステップＳＴ２０３に進み、それ以外の場合（ＮＯの場合）は次のデバイスに対してステップＳＴ２０１を実行する。
【００５３】
次に、ステップＳＴ２０３は、１０デバイス単位で分割するときの送信データを作成して、送信データ５を更新する処理である。ステップＳＴ２０３では、図２のステップＳＴ３と同様にして、値が変化した１デバイス分に対して１０デバイス単位に分割したときの形式で送信データを作成する。このとき、送信データ作成部１０４で保持している１０デバイス単位に分割するときの現在処理中のブロックの先頭番号から１０デバイス分をブロックとして送信データを作成する。尚、送信データは、送信データ作成部１０４で保持している１０デバイス単位に分割するときの送信データの現在の先頭位置から対象の１デバイス分の送信データを追加して更新する。ステップＳＴ２０２で１０デバイス分の比較が完了した場合には、１デバイス分の送信データを追加した後、１０デバイス単位に分割するときの現在処理中のブロックの先頭番号を１０だけ増加させる。１０デバイス単位に分割するときの送信データの現在の先頭位置は、送信データの末尾に移動させて更新する。
【００５４】
ステップＳＴ２０４では、ステップＳＴ２０１の処理が繰り返されて１００デバイス分の比較が完了したかどうかを判定する。ＹＥＳの場合はステップＳＴ２０５に進み、ＮＯの場合は次のデバイスに対してステップＳＴ２０１を実行する。ステップＳＴ２０５は、通信データ量計算部１０５で、１０デバイス単位での通信データ量を計算する処理である。ステップＳＴ２０５では、これまでに比較した１００デバイス分に対して、１０デバイス単位で分割して作成してきた送信データのサイズを計算する。１０デバイス単位で分割したときの通信データ量は、作成された送信データの内容から以下の式を使って１０ブロック分を合計することによって計算できる。
Ｄ１０＝Ｈ＋Ｓ＋Ｎ＋（Ｏ１０＋Ｖ）＊ｎ
【００５５】
ステップＳＴ２０６は、通信データ量計算部１０５で、１００デバイス単位での通信データ量を計算する処理である。ステップＳＴ２０６では、これまでに比較した１００デバイス分に対して、１００デバイス単位で分割したときの送信データのサイズを計算する。１００デバイス単位で分割したときの通信データ量は、ブロック内（１００デバイス中）で値が変化したデバイスの数ｎから以下の式を使って計算できる。
Ｄ１００＝Ｈ＋Ｓ＋Ｎ＋（Ｏ１００＋Ｖ）＊ｎ
【００５６】
ステップＳＴ２０７では、ステップＳＴ２０５で計算した１０デバイス単位での通信データ量と、ステップＳＴ２０６で計算した１００デバイス単位での通信データ量のどちらが小さいかを判定する。１００デバイス単位での通信データ量が小さい場合はステップＳＴ２０８に進み、１０デバイス単位での通信データ量が小さい場合はステップＳＴ２０９に進む。
【００５７】
ステップＳＴ２０８は、１００デバイス単位での通信データ量が小さい場合に、１００デバイス単位で分割するときの送信データを作成して、送信データ５を更新する処理である。ステップＳＴ２０８では、図２のステップＳＴ３と同様にして、１０デバイス単位に分割したときの形式で作成されてきている１００デバイス分の送信データ５（送信データ作成部１０４で保持している１００デバイス単位に分割するときの送信データの現在の先頭位置から末尾までの送信データ）を元に、１００デバイス単位に分割するときの現在処理中のブロックの先頭番号から１００デバイス分をブロックとして送信データを作成する。尚、送信データ５を更新する際には、１００デバイス単位に分割するときの送信データの現在の先頭位置以降の送信データを削除し、作成した１００デバイス分の送信データを１００デバイス単位に分割するときの送信データの現在の先頭位置から追加して全体としての送信データ５を更新する。更新した後、送信データ作成部１０４で保持している１００デバイス単位に分割するときの現在処理中のブロックの先頭番号を１００だけ増加させる。また、１００デバイス単位に分割するときの送信データの現在の先頭位置、及び、１０デバイス単位に分割するときの送信データの現在の先頭位置を共に送信データ５の末尾に移動させて更新する。
【００５８】
ステップＳＴ２０９では、ステップＳＴ２０１からの処理が繰り返されて１０００デバイス分の比較が完了したかどうかを判定する。ＹＥＳの場合はステップＳＴ２１０に進み、ＮＯの場合は次のデバイスに対してステップＳＴ２０１を実行する。
【００５９】
ステップＳＴ２１０は、通信データ量計算部１０５で、１０００デバイス単位での通信データ量を計算する処理である。ステップＳＴ２１０では、これまでに比較した１０００デバイス分に対して、１０００デバイス単位で分割したときの送信データのサイズを計算する。１０００デバイス単位で分割したときの通信データ量は、ブロック内（１０００デバイス中）で値が変化したデバイスの数ｎから以下の式を使って計算できる。
Ｄ１０００＝Ｈ＋Ｓ＋Ｎ＋（Ｏ１０００＋Ｖ）＊ｎ
【００６０】
ステップＳＴ２１１では、１０デバイス単位、及び、１００デバイス単位の分割の組合せによって作成された送信データのサイズ（通信データ量）と、ステップＳＴ２１０で計算した１０００デバイス単位での通信データ量のどちらが小さいかを判定する。１０００デバイス単位での通信データ量が小さい場合はステップＳＴ２１２に進み、１０デバイス単位、及び、１００デバイス単位の分割の組合せによって作成された送信データのサイズ（通信データ量）が小さい場合はステップＳＴ２１３に進む。
【００６１】
ステップＳＴ２１２は、１０００デバイス単位での通信データ量が小さい場合に、１０００デバイス単位で分割するときの送信データを作成して、送信データ５を更新する処理である。ステップＳＴ２１２では、１０デバイス単位、及び、１００デバイス単位の分割の組合せで作成されてきている１０００デバイス分の送信データ５（送信データ作成部１０４で保持している１０００デバイス単位に分割するときの送信データの現在の先頭位置から末尾までの送信データ）を元に、１０００デバイス単位に分割するときのブロックの現在の先頭番号から１０００デバイス分を１つのブロックとして送信データを作成する。尚、送信データ５を更新する際には、１０００デバイス単位に分割するときの送信データの現在の先頭位置以降の送信データを削除し、作成した１０００デバイス分の送信データを１０００デバイス単位に分割するときの送信データの現在の先頭位置から追加して全体としての送信データ５を更新する。更新した後、送信データ作成部１０４で保持している１０００デバイス単位に分割するときの現在処理中のブロックの先頭番号を１０００だけ増加させる。また、１０００デバイス単位に分割するときの送信データの現在の先頭位置、１００デバイス単位に分割するときの送信データの現在の先頭位置、及び、１０デバイス単位に分割するときの送信データの現在の先頭位置を共に送信データ５の末尾に移動させて更新する。
【００６２】
ステップＳＴ２１３では、ステップＳＴ２０１の処理が繰り返されて通信する全デバイス分の比較が完了したかどうかを判定する。ＹＥＳの場合はステップＳＴ２１４に進み、ＮＯの場合は次のデバイスに対してステップＳＴ２０１を実行する。
【００６３】
ステップＳＴ２１４は、実際に送信データ５を送信する処理である。ステップＳＴ２１４では、ステップＳＴ２０３、ＳＴ２０８、及び、ＳＴ２１２において、データを圧縮した形で作成された送信データ５をそのまま通信相手先へ送信する。
【００６４】
尚、実施の形態２においても、実施の形態１と同様に、１０デバイス単位、１００デバイス単位、１０００デバイス単位で通信データ領域を分割するだけでなく、１００００デバイス単位等の更に異なるサイズでも分割できるように拡張することもできる。分割単位も、１０，１００，１０００，１００００，…のように１０進単位でなくてよく、１６，２５６，４０９６，…のように１６進単位でもよいし、他の単位でもよい。また、データ領域を分割しない方が小さなデータ通信量になる場合は分割しなくてもよい。
【００６５】
次に、データ受信装置２００ａ側の動作について説明する。
図１２は、データ受信装置２００ａの動作を示すフローチャートである。
ステップＳＴ２１は、実際に受信データ６を受信する処理である。ステップＳＴ２１では、データ送信装置１００ａから圧縮した形で送信された送信データ５を受信データ６として受信する。尚、受信データ６は、図６に示した形式のデータである。
【００６６】
ステップＳＴ２２は、受信した受信データ６から更新データ９を作成する処理である。ステップＳＴ２２では、更新データ作成部２０３が保持している前回データ８をまるごと複製して更新データ９を作成し、受信データ６にある変化したデータの情報を１つずつ取り出して、更新データ９にそれらのデータ値を上書きしていく。この上書き処理は、ブロック単位で、受信データ６に含まれるブロック数分だけ繰り返す。ブロック単位での処理は、デバイス単位で、各ブロックに含まれる差分データ数分だけ繰り返す。デバイス単位での処理は、受信データ６の先頭番号に、そのブロックの先頭番号とその差分データ（デバイス）のオフセットを加えた値を全体でのオフセットとし、更新データ９の先頭にその全体でのオフセットを加えた位置にその差分データ（デバイス）のデータ値を上書きする。この処理を全受信データ６に対して行うことにより、最終的な更新データ９を作成して使用する。
【００６７】
また、データ領域内の特定領域のデータの変化に規則性がある場合、あるいは、限られた特定のパターンで変化する場合は、その規則性やパターンを送信側と受信側で共にデータとして保持し、それらを特定する識別子のみを通信することにより、通信量を削減することもできるのも実施の形態１の場合と同様である。
【００６８】
以上のように、実施の形態２のデータ送信装置によれば、更新データと前回データとを比較し、変化したデータを差分データとして抽出する差分データ作成部と、更新データを複数のデータ領域に分割し、データ領域内での差分データの位置情報で差分データを表した場合に、データ量が最も小さくなる分割サイズで差分データを表す送信データを作成する送信データ作成部とを備えたので、実施の形態１のデータ送信装置の効果に加えて、差分データ作成部や分割サイズ決定部が不要となり、差分データや分割サイズ情報といった中間データを作成する必要もなくなるので、送信処理での処理量が減り、より高速にデータの送信を行うことができる。
【００６９】
また、実施の形態２のデータ受信装置によれば、分割サイズと分割されたデータ領域内での差分データの位置情報が付与された圧縮データから差分データを復元すると共に、差分データと、保持している前回データとを用いて更新データを作成する更新データ作成部を備えたので、実施の形態１のデータ受信装置の効果に加えて、差分データ復元部が不要となり、差分データのような中間データを作成する必要もなくなるので、受信処理での処理量が減り、より高速にデータの受信を行うことができる。
【００７０】
また、本発明のデータ送信プログラムによれば、前回データと更新データとの変化分である差分データを送信するコンピュータを、実施の形態１または実施の形態２のデータ送信装置として機能させるようにしたので、実施の形態１または実施の形態２のデータ送信装置をコンピュータ上に実現することができる。
【００７１】
また、本発明のデータ受信プログラムによれば、受信した差分データに基づいて更新データを作成するコンピュータを、実施の形態１または実施の形態２に記載のデータ受信装置として機能させるようにしたので、実施の形態１または実施の形態２のデータ受信装置をコンピュータ上に実現することができる。
【図面の簡単な説明】
【００７２】
【図１】この発明の実施の形態１によるデータ送信装置及びデータ受信装置を示す構成図である。
【図２】この発明の実施の形態１における送信処理を示すフローチャートである。
【図３】この発明の実施の形態１における前回データと更新データの一例を示す説明図である。
【図４】この発明の実施の形態１における差分データの一例を示す説明図である。
【図５】この発明の実施の形態１における分割サイズ情報の一例を示す説明図である。
【図６】この発明の実施の形態１における送信データ（受信データ）の一例を示す説明図である。
【図７】この発明の実施の形態１における分割サイズ情報作成処理の一例を示すフローチャートである。
【図８】この発明の実施の形態１における分割サイズ情報作成処理の他の例を示すフローチャートである。
【図９】この発明の実施の形態１における受信処理を示すフローチャートである。
【図１０】この発明の実施の形態２によるデータ送信装置及びデータ受信装置を示す構成図である。
【図１１】この発明の実施の形態２における送信処理の一例を示すフローチャートである。
【図１２】この発明の実施の形態２における受信処理を示すフローチャートである。
【符号の説明】
【００７３】
１，９  更新データ、２，８  前回データ、３，７  差分データ、４  分割サイズ情報、５  送信データ、６  受信データ、１００，１００ａ  データ送信装置、１０１  差分データ作成部、１０２  分割サイズ決定部、１０３，１０４  送信データ作成部、２００，２００ａ  データ受信装置、２０１  差分データ復元部、２０２，２０３  更新データ作成部。
【図１】
2007282105.tif 000003
【図２】
2007282105.tif 000004
【図３】
2007282105.tif 000005
【図４】
2007282105.tif 000006
【図５】
2007282105.tif 000007
【図６】
2007282105.tif 000008
【図７】
2007282105.tif 000009
【図８】
2007282105.tif 000010
【図９】
2007282105.tif 000011
【図１０】
2007282105.tif 000012
【図１１】
2007282105.tif 000013
【図１２】
2007282105.tif 000014