まず、本実施例に係るデータ中継装置200を含む通信システムについて説明する。図1は、本実施例に係るデータ中継装置200を含む通信システムの一例を示す図である。図1に示すように、データ中継装置200は、LAN(Local Area Network)やインターネット等のネットワーク1を介してデータ送信装置100と接続される。また、データ中継装置200は、LANやインターネット等のネットワーク2を介してデータ受信装置300とも接続される。
データ送信装置100は、データ受信装置300へ向けて送信データを送信する情報処理装置であり、例えば、サーバ装置、パソコン、もしくは、携帯端末に相当する。データ受信装置300は、データ送信装置100から送信された送信データを受信する情報処理装置であり、例えば、サーバ装置、パソコン、もしくは、携帯端末に相当する。
データ中継装置200は、データ送信装置100から送信された送信データに対して加工を加えてデータ受信装置300へ転送する情報処理装置である。データ中継装置200が送信データに加える加工は、送信データに含まれるデータの種類や送信データの送信先等によって異なる。例えば、データ中継装置200は、送信データに含まれるデータのうち、テキストデータを圧縮してデータ受信装置300へ転送する。
なお、図1ではデータ送信装置100とデータ受信装置300が1台ずつ存在する例を示したが、データ中継装置200は、データ送信装置100とデータ受信装置300が複数台存在する場合でも送信データの中継を行うことができる。また、データ送信装置100とデータ受信装置300の役割は固定されている必要はない。すなわち、ある場合には、データ受信装置300が送信データを送信し、データ中継装置200によって中継された送信データをデータ送信装置100が受信することとしてもよい。
次に、データ中継装置200の機能概要について説明する。図2は、データ中継装置200の機能概要を示す図である。図2に示すように、データ中継装置200は、受信処理部210と、加工処理部220と、送信処理部230とを有し、これらが並列に動作するように構成されている。
受信処理部210は、データ送信装置100から送信された送信データを受信しながら、これをデータの種別毎に所定の長さ以下のデータブロックに分割して、データ中継装置200が有する記憶部240に格納する。受信処理部210は、データブロックを記憶部240に格納するにあたって、送信データにおけるデータブロックの位置を示す位置情報やデータブロックがどの種別のデータを含んでいるかを示すデータタイプ等を設定したラベルを生成する。そして、受信処理部210は、生成したラベルをデータブロックと関連付けて記憶部240に格納する。
加工処理部220は、記憶部240を監視し、内容を確認していないラベルが格納されていれば、そのラベルのデータタイプを参照して、そのラベルに対応するデータブロックに対してどのような加工が必要かを判定する。そして、加工処理部220は、判定結果を加工方法としてラベルに設定する。さらに、加工処理部220は、必要と判定した加工を、データブロックに対して実行し、加工完了後に、加工が完了した旨をステータスとしてラベルに設定する。なお、加工処理部220は、データブロックの加工が不要と判定した場合は、対応するラベルにその旨を設定し、データブロックの加工は行わない。
送信処理部230は、記憶部240を監視し、データブロックの加工が完了した旨が設定されたラベルがあれば、そのラベルに設定されている位置情報等が設定されたブロックヘッダを生成する。そして、送信処理部230は、そのラベルに対応するデータブロックにブロックヘッダを付加して送信先へ送信する。また、送信処理部230は、記憶部240を監視し、データブロックの加工が不要である旨が設定されたラベルがあれば、そのラベルに設定されている位置情報等が設定されたブロックヘッダを生成する。そして、送信処理部230は、そのラベルに対応するデータブロックにブロックヘッダを付加して送信先へ送信する。
例えば、送信元アドレスや送信先アドレス等が設定されたヘッダ11aと、テキストデータであるデータ11bと、jpeg形式の画像データであるデータ11cとを含む送信データ11が受信されると、データ中継装置200は、以下のように動作する。
受信処理部210は、送信データ11を受信ながらデータブロックに分割していき、ヘッダ11aをデータブロック31aとして分割して記憶部240に格納し、データブロック31aに対応するラベル21aを生成してこれを記憶部240に格納する。ラベル21aには、位置情報として「1−1」が設定され、データタイプとして「ヘッダ」が設定される。
なお、位置情報である「1−1」の「−」よりも前の部分に示された数字は、対応するデータブロックに含まれるデータが送信データに含まれる何番目のデータであるかを示す。また、「−」よりも後の部分に示された数字は、対応するデータブロックがそのデータを分割して得られた何番目のブロックであるかを示す。すなわち、「1−1」は、対応するデータブロックが、送信データにおける1番目のデータを分割して得られた1番目のブロックであることを示す。
続いて、受信処理部210は、データ11bをデータブロック31bとして分割して記憶部240に格納し、データブロック31bに対応するラベル21bを生成してこれを記憶部240に格納する。ラベル21bには、位置情報として「2−1」が設定され、データタイプとして「テキスト」が設定される。
続いて、受信処理部210は、データ11cをデータブロックに分割する。図2に示した例では、受信処理部210は、データ11cをデータブロック31cとデータブロック31dに分割している。このように、受信処理部210は、送信データに含まれるデータの1つを受信中に、タイミングや既に受信した部分の長さに応じてそのデータを分割する。データを複数のデータブロックに分割して記憶部240に格納することにより、各データブロックを記憶部240に格納するために必要な時間を短縮し、それらのデータブロックに対して処理を開始するタイミングを早めることができる。
そして、受信処理部210は、データブロック31cに対応するラベル21cを生成してこれを記憶部240に格納し、データブロック31dに対応するラベル21dを生成してこれを記憶部240に格納する。ラベル21cには、位置情報として「3−1」が設定され、データタイプとして「jpeg画像」が設定される。ラベル21dには、位置情報として「3−2」が設定され、データタイプとして「jpeg画像」が設定される。
なお、受信処理部210によって記憶部240に格納された時点では、各ラベルの加工方法には「未判定」が設定され、ステータスには「未処理」が設定される。「未判定」は、加工方法がまだ判定されていないことを示す値であり、「未処理」は、加工がまだ実行されていないことを示す値である。
上記の受信処理部210の動作と並行して、加工処理部220は、記憶部240に格納された各ラベルのデータタイプを参照して、対応するデータブロックの加工方法を判定し、加工が必要であればデータブロックに加工を加える。
図2に示した例では、加工処理部220は、ラベル21aのデータタイプを参照して、データブロック31aに加工が不要であると判定し、ラベル21aに加工方法として「無加工」を設定している。
また、加工処理部220は、ラベル21bのデータタイプを参照して、データブロック31bに圧縮処理が必要であると判定し、ラベル21bに加工方法として「ZIP圧縮」を設定している。そして、加工処理部220は、データブロック31bに対して圧縮処理を実行し、実行後に、ラベル21bにステータスとして「処理済」を設定している。「処理済」は、加工が完了したことを示す値である。
なお、この時点では、加工処理部220は、データブロック31cおよび31dの加工方法を判定していないため、ラベル21cおよび21dは、加工方法として「未判定」が設定され、ステータスとして「未処理」が設定されたままとなっている。
上記の受信処理部210および加工処理部220の動作と並行して、送信処理部230は、記憶部240に格納された各ラベルを参照して、データブロックの送信処理を実行する。具体的には、送信処理部230は、加工方法として「無加工」が設定されているラベルに対応するデータブロックと、ステータスとして「処理済」が設定されているラベルに対応するデータブロックを送信対象とする。そして、送信処理部230は、送信対象のデータブロックに対応するラベルからブロックヘッダを生成し、生成したブロックヘッダをデータブロックに付加してデータ受信装置300へ送信する。
ブロックヘッダには、ラベルに設定されている情報のうちデータ受信装置300において送信データ11を再構成するために必要な情報が設定される。図2に示した例では、加工方法として「無加工」が設定されているラベル21aに対応するデータブロック31aが送信対象となっている。そして、ラベル21aに設定されている情報のうち、送信データ11の再構成に不要な情報であるステータス以外の情報がブロックヘッダ41に設定され、データブロック31aとともにデータ受信装置300へ送信されている。
図2に示した場面の後、ステータスとして「処理済」が設定されているラベル21bに対応するデータブロック31bが送信対象となる。そして、加工処理部220による処理が完了した後、ラベル21cに対応するデータブロック31cとラベル21dに対応するデータブロック31dも送信対象となる。
こうして、送信データ11を分割して得られた全てのデータブロックがブロックヘッダとともにデータ受信装置300へ送信される。そして、データ受信装置300は、ブロックヘッダに設定されている位置情報に基づいて、送信データ11におけるデータブロックの位置を判定する。また、データ受信装置300は、ブロックヘッダに設定されているデータタイプと加工方法に基づいて、データブロックに含まれるデータが当所どのようなデータであり、どのような加工をされたのかを判定する。そして、データ受信装置300は、これらの判定結果に基づいて送信データ11を再構成する。
なお、本願においては、再構成は、データ送信装置100から送信された送信データ11を完全に再現することを必ずしも意味しない。例えば、データ中継装置200が、送信データ11に含まれる画像データをデータ受信装置300の表示部の解像度に合わせて縮小した場合には、データ受信装置300は、縮小された画像データを用いて送信データ11を再構成する。
このように、データ中継装置200は、受信処理部210が送信データをデータブロックに分割し、それと並行して、加工処理部220が加工処理を実行し、送信処理部230が送信処理を実行するように構成されている。このため、データ中継装置200においては、送信データの中継に要する時間が従来と比較して大きく短縮されている。
図3は、送信データの中継に要する時間の相違を示す図である。図3に示すように、従来のデータ中継装置においては、送信データの全体を受信し終えた後にデータの加工を実行し、全てのデータの加工処理が完了した後に送信処理が実行されていた。このため、従来のデータ中継装置においては、送信データの中継に要する時間は、受信処理、加工処理および送信処理の各処理に要する時間の合計よりも短くなることはなかった。
一方、データ中継装置200においては、受信処理、加工処理および送信処理がデータブロック単位で並列に進行するため、送信データの中継に要する時間は、受信処理、加工処理および送信処理の各処理に要する時間の合計よりも大幅に短くなっている。また、データ中継装置200においては、送信が完了したデータブロックを記憶部240から削除することができるため、送信データ全体を記憶する必要がなく、記憶部240の容量が少なくて済む。
次に、データ中継装置200のより詳細な構成について説明する。図4は、データ中継装置200の構成を示すブロック図である。図4に示すように、データ中継装置200は、受信処理部210と、加工処理部220と、送信処理部230と、記憶部240と、ネットワークインターフェース部250とを有する。ネットワークインターフェース部250は、ネットワークを介して他の情報処理装置と通信を行うためのインターフェース装置である。
受信処理部210は、受信部211と、分割部212と、格納部213とを有する。受信部211は、データ送信装置100から送信された送信データを所定サイズずつ受信し、受信した送信データの断片を分割部212に順次引き渡す。
分割部212は、受信部211から引き渡された断片の内容を解析することによって送信データの形式を分析し、分析結果を記憶部240の分割管理情報記憶部241に格納する。そして、分割部212は、分割管理情報記憶部241に格納した情報に基づいて、受信部211から引き渡された断片をデータの種別毎にデータブロックに分解し、各データブロックに対応するラベルを生成する。
格納部213は、分割部212によって分割された各データブロックを、対応するラベルと関連付けて記憶部240のデータブロック記憶部242に格納する。
ここで、受信処理部210の各部の動作について、具体例を示して説明する。図5−1は、データ送信装置100から送信される送信データの一例を示す図である。図5−1に示す送信データ12は、ヘッダと、データAと、データBとを有する。ヘッダは、送信元と送信先のアドレスの他に、送信データ12の形式に関する情報を含んでいる。
具体的には、ヘッダには、ヘッダのサイズが256byteであり、送信データ12には、ヘッダ以外に2つのデータが含まれる旨が設定されている。また、ヘッダには、1番目のデータ、すなわち、データAのサイズが650byteであり、データAのデータタイプが「テキスト」である旨が設定されている。また、ヘッダには、2番目のデータ、すなわち、データBのサイズが1050byteであり、データBのデータタイプが「jpeg画像」である旨が設定されている。
受信部211は、前述のように、所定のサイズずつ送信データ12を受信する。ここでは、受信部211が、1024byteずつ送信データ12を受信するものとする。この場合、受信部211は、まず、送信データ12の先頭から1024byteの部分、すなわち、ヘッダと、データAと、データBの先頭部分を受信し、この部分を最初の断片として分割部212へ引き渡す。
分割部212は、受信部211から最初の断片を受け取ると、断片に含まれるヘッダから分割処理に必要な情報を抽出して分割管理情報51を生成して、分割管理情報記憶部241に格納する。ヘッダに基づいて生成された分割管理情報51の一例を図5−2に示す。なお、図5−2に示した例では、分割管理情報51がXML(Extensible Markup Language)形式で作成されているが、分割管理情報51は、XML以外の形式であってもよい。
図5−2に示すように、分割管理情報51には、送信データID、送信元、送信先、形式、データ定義、データ番号、ブロック番号といった項目が存在する。送信データIDは、送信データを識別する番号であり、送信データ毎に異なる値が設定される。送信元は、送信データの送信元のアドレスであり、送信先は、送信データの送信先のアドレスである。形式は、送信データの形式であり、ここでは「形式01」が設定されている。
データ定義は、送信データに含まれるデータ毎に設けられる項目であり、オフセット、サイズ、データタイプといった項目を含む。オフセットは、送信データの先頭からみた場合のデータの出現位置であり、当該のデータよりも前に位置するデータのサイズの合計値が設定される。サイズは、当該のデータのサイズであり、データタイプは、当該のデータの種別である。
データ番号は、これから切り出すデータブロックが何番目のデータに属するかを示す番号である。ブロック番号は、これから切り出すデータブロックがデータ中の何番目のブロックであるかを示す番号である。データ番号は、初期値として1を設定され、分割部212は、異なるデータの処理を開始するたびにデータ番号に1を加算する。ブロック番号は、初期値として1を設定され、分割部212は、異なるデータの処理を開始するたびにブロック番号を1に初期化し、データブロックを切り出すたびにブロック番号に1を加算する。
分割部212は、分割管理情報51に設定された各データ定義のオフセットとサイズの値に基づいて、ヘッダ、データA、データBの先頭部分を、それぞれ、データブロック12a、データブロック12b、データブロック12cとして切り出す。そして、分割部212は、各ブロックを切り出しながら、分割管理情報51のデータ番号とブロック番号を更新し、切り出されたデータブロック毎にラベルを生成する。そして、切り出された各データブロックは、格納部213によって、対応するラベルと関連付けてデータブロック記憶部242に格納される。
続いて、受信部211は、送信データ12の後続部分、すなわち、データBの残り部分を受信し、この部分を次の断片として分割部212へ引き渡す。分割部212は、分割管理情報51に設定された各データ定義のオフセットとサイズの値に基づいて、引き渡された断片全体をデータブロック12dとして切り出す。そして、分割部212は、分割管理情報51のブロック番号を更新し、データブロック12dに対応するラベルを生成する。そして、データブロック12dは、格納部213によって、対応するラベルと関連付けてデータブロック記憶部242に格納される。
以上の処理の結果、データブロック記憶部242には、図5−3に示すようなデータブロックとラベルの組合せが格納される。図5−3に示した例では、データブロック12a〜12dと関連付けて、ラベル22a〜22dが格納されている。各ラベルには、共通の項目として、送信データID、ブロック番号、加工方法、ステータス、送信元、送信先、形式といった項目が含まれる。なお、図5−3に示した例では、ラベル22a〜22dがXML形式で作成されているが、ラベル22a〜22dは、XML以外の形式であってもよい。
送信データIDは、送信データを識別する番号であり、分割管理情報51の送信データIDの値がそのまま設定される。ブロック番号は、送信データにおけるデータブロックの位置を示す位置情報である。例えば、「3−2」というブロック番号は、当該のラベルに対応するデータブロックが、送信データにおける3番目のデータを分割して得られた2番目のデータブロックであることを意味する。ブロック番号は、データブロックが切り出された時点における分割管理情報51のデータ番号とブロック番号の値に基づいて設定される。
加工方法は、当該のラベルに対応するデータブロックに対して実行すべき加工方法が設定される項目であり、初期値として「未判定」が設定される。ステータスは、当該のラベルに対応するデータブロックに対して実行すべき加工の進捗状況が設定される項目であり、初期値として「未処理」が設定される。送信元、送信先および形式は、それぞれ、送信データの送信元アドレス、送信先アドレスおよび形式が設定される項目であり、分割管理情報51の送信元、送信先および形式の値がそのまま設定される。
ラベルには、上記の共通項目に加えて、データ終了フラグもしくは送信データ終了フラグが設定されることがある。データ終了フラグは、当該のラベルに対応するデータブロックが、あるデータから切り出された最後のデータブロックである場合に設定される。また、送信データ終了フラグは、当該のラベルに対応するデータブロックが、送信データから切り出された最後のデータブロックである場合に設定される。これらのフラグは、データブロックとともに送信されるブロックヘッダに設定され、データ受信装置300がデータブロックの欠落の有無を確認するために用いられる。
図5−3に示した例では、データブロック12aは、ヘッダから切り出された最後のデータブロックであるため、データブロック12aに対応するラベル22aに、データ終了フラグとして<データ終了 />が設定されている。また、データブロック12bは、データAから切り出された最後のデータブロックであるため、データブロック12bに対応するラベル22bに、データ終了フラグとして<データ終了 />が設定されている。また、データブロック12dは、送信データ12から切り出された最後のデータブロックであるため、データブロック12dに対応するラベル22dに、送信データ終了フラグとして<送信データ終了 />が設定されている。
なお、上記の説明では、各データのサイズがヘッダに設定されている送信データをデータブロックに分割する例を示したが、受信処理部210は、各データのサイズがヘッダに設定されていない送信データもデータブロックに分割することができる。そこで、図6−1〜6−3を用いて、各データのサイズがヘッダに設定されていない送信データを分割する場合の受信処理部210の動作について説明する。
図6−1は、各データのサイズがヘッダに設定されていない送信データの一例を示す図である。図6−1に示す送信データ13は、ヘッダと、サブヘッダAとデータAの組合せと、サブヘッダBとデータBの組合せとがデリミタ文字で区切られた形式となっている。ヘッダは、送信元と送信先のアドレスの他に、デリミタ文字が「−−DLMT−−」である旨の定義を含んでいる。サブヘッダAは、データAの種別に関する情報を含み、サブヘッダBは、データBの種別に関する情報を含んでいる。
ここでは、受信部211が、1024byteずつ送信データ13を受信するものとする。この場合、受信部211は、まず、送信データ13の先頭から1024byteの部分、すなわち、ヘッダと、最初のデリミタ文字と、サブヘッダAと、データAと、2番目のデリミタ文字と、サブヘッダBと、データBの先頭部分を受信し、この部分を最初の断片として分割部212へ引き渡す。
分割部212は、受信部211から最初の断片を受け取ると、断片に含まれるヘッダから分割処理に必要な情報を抽出して分割管理情報52を生成して、分割管理情報記憶部241に格納する。ヘッダに基づいて生成された分割管理情報52の一例を図6−2に示す。なお、図6−2に示した例では、分割管理情報52がXML形式で作成されているが、分割管理情報52は、XML以外の形式であってもよい。
図6−2に示すように、分割管理情報52には、送信データID、送信元、送信先、形式、データ番号、ブロック番号、データタイプといった項目が存在する。送信データIDは、送信データを識別する番号であり、送信データ毎に異なる値が設定される。送信元は、送信データの送信元のアドレスであり、送信先は、送信データの送信先のアドレスである。形式は、送信データの形式であり、ここでは「形式02」が設定されている。
デリミタは、デリミタ文字であり、ヘッダにデリミタ文字として定義されている文字列が設定される。データ番号は、これから切り出すデータブロックが何番目のデータに属するかを示す番号である。ブロック番号は、これから切り出すデータブロックがデータ中の何番目のブロックであるかを示す番号である。データタイプは、これから切り出すデータブロックが属するデータの種別である。データタイプは、初期値として「ヘッダ」が設定され、新たなサブヘッダが検出されるたびに、そのサブヘッダに設定されているデータタイプの値が設定される。
分割部212は、分割管理情報52に設定されたデリミタの値に基づいて、2つのデリミタ文字を検出し、最初のデリミタ文字よりも前の部分をデータブロック13aとして切り出す。そして、分割部212は、切り出されたデータブロックに対応するラベルを生成する。切り出されたデータブロック13aは、格納部213によって、対応するラベルと関連付けてデータブロック記憶部242に格納される。
続いて、受信部211は、2つのデリミタ文字に挟まれた部分を取得し、データAをデータブロック13bとして切り出す。そして、分割部212は、サブヘッダAに設定されているデータタイプの値を分割管理情報52に設定し、データ番号とブロック番号を更新して、データブロック13bに対応するラベルを生成する。切り出されたデータブロック13bは、格納部213によって、対応するラベルと関連付けてデータブロック記憶部242に格納される。
続いて、受信部211は、2つ目のデリミタ文字よりも後の部分を取得し、データBの先頭部分をデータブロック13cとして切り出す。そして、分割部212は、サブヘッダBに設定されているデータタイプの値を分割管理情報52に設定し、データ番号とブロック番号を更新して、データブロック13cに対応するラベルを生成する。切り出されたデータブロック13cは、格納部213によって、対応するラベルと関連付けてデータブロック記憶部242に格納される。
続いて、受信部211は、送信データ13の後続部分、すなわち、データBの残り部分を受信し、この部分を次の断片として分割部212へ引き渡す。分割部212は、分割管理情報52に設定されたデリミタの値に基づいて、デリミタ文字の検出を試みるが、この場合デリミタ文字は検出されない。そこで、分割部212は、受け取った断片全体をデータブロック13dとして切り出す。そして、分割部212は、分割管理情報52のブロック番号を更新し、データブロック13dに対応するラベルを生成する。データブロック13dは、格納部213によって、対応するラベルと関連付けてデータブロック記憶部242に格納される。
以上の処理の結果、データブロック記憶部242には、図6−3に示すようなデータブロックとラベルの組合せが格納される。図6−3に示した例では、データブロック13a〜13dに対応付けて、ラベル23a〜23dが格納されている。ラベル23a〜23dの設定項目は、形式の項目を除いてラベル22a〜22dと同様であるので、ここでは説明を省略する。
ここで、データブロック記憶部242におけるラベルの管理手法について説明しておく。図7は、ラベルが属する3つのリストを示す図である。図7に示すように、データブロック記憶部242には、ラベル61a〜61c等が属する判定待ちリスト61と、ラベル62a〜62c等が属する加工待ちリスト62と、ラベル63a〜63c等が属する送信待ちリスト63とが存在する。そして、データブロック記憶部242においては、各ラベルが、これらのリストのいずれかに属するように管理される。
判定待ちリスト61は、格納部213によって新たにデータブロック記憶部242に格納されたラベルが末尾に追加されるリストである。判定待ちリスト61に追加されたラベルは、先頭から順に加工処理部220によってデータブロックの加工方法が判定される。そして、データブロックの加工が必要と判定されたラベルは、加工待ちリスト62の末尾に移動され、データブロックの加工が不要と判定されたラベルは、送信待ちリスト63の末尾に移動される。加工待ちリスト62に追加されたラベルは、加工処理部220によるデータブロックの加工が完了したものから順に、送信待ちリスト63の末尾に移動される。そして、送信待ちリスト63の末尾に追加されたラベルは、先頭から順に送信処理部230による送信処理の対象となる。
このように、ラベルを3つのリストで管理することにより、受信処理部210、加工処理部220および送信処理部230は、処理対象のラベルを明確にすることができ、それぞれが独立して並列に処理を実行することが容易になる。
図4の説明に戻って、加工処理部220は、加工判定部221と、加工部222とを有する。加工判定部221は、データブロック記憶部242に格納されている各データブロックに対してどのような加工が必要かを判定し、判定結果を対応するラベルの加工方法の項目に設定する。
加工判定部221は、判定待ちリスト61の先頭のラベルから順に判定を行い、加工が必要と判定したデータブロックに対応するラベルを加工待ちリスト62の末尾に移動させる。また、加工判定部221は、加工が不要と判定したデータブロックに対応するラベルを送信待ちリスト63の末尾に移動させる。
加工判定部221は、データブロックにどのような加工が必要かを、対応するラベルに設定されているデータタイプと送信先の値を記憶部240の加工定義情報記憶部243に記憶されている加工定義情報71と照合することにより判定する。加工定義情報71の一例を図8に示す。図8に示すように、加工定義情報71は、データタイプ、送信先、加工方法といった項目を有し、データタイプ毎に送信先と加工方法の組合せを複数登録できるように構成されている。
加工定義情報71におけるデータタイプは、データの種別を示し、ラベルのデータタイプの値と対応する。送信先は、送信データの送信先アドレスを示し、ラベルの送信先の値と対応する。加工方法は、データブロックに対して実行すべき加工方法を示す。なお、加工定義情報71の送信先には、「*」が含まれることがあり、「*」は、任意の値とマッチするワイルドカードとして機能する。また、加工方法として、「無加工」という値が設定されている場合、データブロックに加工が不要であることを示す。
図8に示した例では、「テキスト」というデータタイプに対して、「*」という送信先と「ZIP圧縮」という加工方法の組合せが登録されている。これは、ラベルのデータタイプに設定されている値が「テキスト」であれば、ラベルの送信先に設定されている値にかかわらず、データブロックに「ZIP圧縮」という加工が必要であることを示している。
また、図8に示した例では、「jpeg画像」というデータタイプに対して、「192.168.10.*」という送信先と「縮小(320x240)」という加工方法の組合せと、「*」という送信先と「無加工」という加工方法の組合せとが登録されている。
これは、ラベルのデータタイプに設定されている値が「jpeg画像」であり、かつ、ラベルの送信先に設定されている値が「192.168.10.」で始まっている場合には、データブロックに「縮小(320x240)」という加工が必要であることを示している。また、これは、ラベルのデータタイプに設定されている値が「jpeg画像」であり、かつ、ラベルの送信先に設定されている値が「192.168.10.」で始まっていない場合には、データブロックの加工が不要であることを示している。
このように、送信先のアドレスも考慮して加工方法を判定することにより、送信データに含まれるデータを送信先の要件に応じて加工することが可能になる。例えば、画像データが含まれる送信データを携帯電話事業者のアドレス宛てに送る場合は、携帯電話の表示部の解像度に合わせて画像データを縮小し、それ以外のアドレスに送る場合は、画像データをそのまま送るといった運用が可能になる。
また、加工定義情報71には、上記の加工方法以外にも、文字コード変換、暗号化、電子署名の付与、ウイルスのチェック、不適切なデータの削除等の様々な加工方法を登録することができる。
加工部222は、加工判定部221の判定結果に従ってデータブロックに対して加工を行う。具体的には、加工部222は、加工待ちリスト62の先頭から順にラベルの加工方法等の値を参照していき、加工を実施可能なものがあれば、加工方法の値に従って、対応するデータブロックを加工し、ラベルを送信待ちリスト63の末尾に移動させる。
加工部222によって実行される加工には、データブロック単位で実行可能なものと、同一のデータから切り出された全てのデータブロックが揃っていなければ実行できないものとがある。例えば、テキストを圧縮するという加工は、データブロック単位で実行可能である。このように、データブロック単位で実行可能な加工方法がラベルに設定されていた場合、加工部222は、そのラベルに対応するデータブロックに加工を実施可能であると判定し、即座に加工を実行する。
一方、例えば、画像データを縮小して画素数を少なくするという加工は、画像データ全体が揃っていることが必要である。このように、同一のデータから切り出された全てのデータブロックが揃っていなければ実行できない加工方法がラベルに設定されていた場合、加工部222は、同一のデータから切り出された全てのデータブロックが揃うまでそれらのデータブロックの加工の実行を留保する。
なお、同一のデータから切り出された全てのデータブロックが揃ったかどうかは、ラベルにデータ終了フラグもしくは送信データ終了フラグが設定されているか否かによって判断することができる。送信データからのデータブロックの切り出しは先頭から行われ、加工待ちリスト62には、データブロックが切り出された順にラベルが追加されていく。このため、データ終了フラグもしくは送信データ終了フラグが設定されているラベルが加工方法の判定済みであれば、同一のデータから切り出されたそれ以前の全てのデータブロックについても加工方法の判定が既に完了しているとみなすことができる。
同一のデータから切り出された全てのデータブロックが揃ったならば、加工部222は、それらのデータブロックを連結して送信データに含まれていたデータを再現し、再現したデータに対して加工を実行する。複数のデータブロックを連結して加工を行う場合における加工部222の動作について図9を用いて説明する。
図9に示す例では、データブロック14aとラベル24aの組合せと、データブロック14bとラベル24bの組合せとがデータブロック記憶部242に格納されている。ラベル24aには、加工方法として「縮小(320x240)」が設定されており、加工部222は、ラベル24aに対応するデータブロック14aを加工するには、同一のデータから切り出された全てのデータブロックが揃っている必要があると判定する。
そして、加工部222は、ラベル24aにデータ終了フラグもしくは送信データ終了フラグが設定されているかを確認する。この例の場合、ラベル24aにはこれらのフラグが設定されていないため、加工部222は、同一のデータから切り出された全てのデータブロックが既に揃っていないと判定し、この段階では、加工の実行を留保する。
続いて、加工部222は、ラベル24bを確認する。ラベル24bには、加工方法として「縮小(320x240)」が設定されており、加工部222は、ラベル24bに対応するデータブロック14bを加工するには、同一のデータから切り出された全てのデータブロックが揃っている必要があると判定する。
そして、加工部222は、ラベル24bにデータ終了フラグもしくは送信データ終了フラグが設定されているかを確認する。この例の場合、ラベル24bに送信データ終了フラグが設定されていることから、加工部222は、同一のデータから切り出された全てのデータブロックが既に揃っていると判定する。
続いて、加工部222は、同一のデータから切り出された他のデータブロックに対応するラベルを検索する。具体的には、加工部222は、ラベル24bから送信データIDとブロック番号の値を取得し、送信データIDの値が一致するとともに、ブロック番号の値の「−」より前の部分が一致するラベルを取得する。
上記の検索の結果、ラベル24aが検索され、加工部222は、ラベル24aに対応するデータブロック14aと、ラベル24bに対応するデータブロック14bとが同一のデータから切り出されたものであると判定する。そして、加工部222は、データブロック14aとデータブロック14bを連結して得られたデータに対して、「縮小(320x240)」という加工方法に対応する加工を実行する。
そして、加工部222は、加工によって得られたデータをデータブロック14cとしてデータブロック記憶部242へ格納し、加工前のデータブロックに対応するラベルのうち最もブロック番号が小さいラベル24aと関連付ける。そして、加工部222は、不要になったラベル24b、データブロック14aおよびデータブロック14bを削除し、ラベル24bに設定されていた送信データ終了フラグをラベル24aに設定し直す。
図4の説明に戻って、送信処理部230は、ブロックヘッダ付加部231と、送信部232とを有する。ブロックヘッダ付加部231は、加工が完了したデータブロックや加工が不要と判定されたデータブロックに対応するラベルからブロックヘッダを生成し、データブロックに付加する。送信部232は、データブロックが付加されたデータブロックを送信先へ送信する。
上述したように、加工が完了したデータブロックや加工が不要と判定されたデータブロックに対応するラベルは送信待ちリスト63に追加されており、ブロックヘッダ付加部231は、送信待ちリスト63の先頭からラベルを取得してブロックヘッダを生成する。生成されるブロックヘッダには、ラベルに設定されていた情報のうち、送信先の装置において送信データを再構成するために必要な情報が設定される。
図10は、ブロックヘッダが付与されたデータブロックの一例を示す図である。図10においてデータブロック14cに付加されているブロックヘッダ42は、図9に示したラベル24aから生成されたものであり、送信元、送信先、形式、データタイプ、ブロック番号、加工方法、データ終了フラグ、送信データ終了フラグといった項目を有している。
次に、図4に示したデータ中継装置200の処理手順について説明する。図11は、受信処理部210による送信データ受信処理の処理手順を示すフローチャートである。送信データ受信処理は、送信データが受信されるたびに実行される。
図11に示すように、まず、受信部211が、送信データを先頭から所定サイズだけ受信する(ステップS101)。続いて、分割部212が、受信された断片に含まれるヘッダを解析し(ステップS102)、分割管理情報を生成して分割管理情報記憶部241に格納する(ステップS103)。
そして、分割部212が、分割管理情報に基づいて、受信された断片をデータブロックに分割し(ステップS104)、分割した各データブロックに対応するラベルを生成する(ステップS105)。そして、格納部213が、データブロックとラベルを関連付けてデータブロック記憶部242に格納し(ステップS106)、さらに、ラベルを判定待ちリスト61の末尾に追加する(ステップS107)。
続いて、受信部211が、送信データを所定サイズだけ受信し、次の断片を取得する(ステップS108)。ここで、次の断片を取得できた場合は(ステップS109否定)、分割部212が、取得された断片に基づいて分割管理情報を更新し(ステップS110)、その後、ステップS104以降が再実行される。
一方、ステップS108において次の断片を取得できなかった場合、すなわち、送信データの受信を完了した場合は(ステップS109肯定)、分割部212が、分割管理情報を削除して送信データ受信処理が終了する(ステップS111)。
図12は、加工判定部221による加工方法判定処理の処理手順を示すフローチャートである。加工方法判定処理は、データ中継装置200の動作中は、加工判定部221によって継続的に実行される。
図12に示すように、まず、加工判定部221は、判定待ちリスト61の先頭のラベルを取得する。ここで、判定待ちリスト61が空の場合は、加工判定部221は、判定待ちリスト61にラベルが追加されるのを待ってそれを取得する(ステップS201)。そして、加工判定部221は、取得したラベルのデータタイプと送信先を加工定義情報記憶部243に予め格納されている加工定義情報と照合して加工方法を判定する(ステップS202)。
ここで、判定された加工方法が「無加工」以外だった場合、すなわち、データブロックの加工が必要な場合には(ステップS203肯定)、加工判定部221は、判定した加工方法をラベルに設定する(ステップS204)。そして、加工判定部221は、ラベルを加工待ちリスト62へ移動させた後(ステップS205)、ステップS201以降を再実行する。
一方、判定された加工方法が「無加工」だった場合、すなわち、データブロックの加工が必要ない場合には(ステップS203否定)、加工判定部221は、ラベルに「無加工」を設定する(ステップS206)。そして、加工判定部221は、ラベルを送信待ちリスト63へ移動させた後(ステップS207)、ステップS201以降を再実行する。
図13は、加工部222による加工実行処理の処理手順を示すフローチャートである。加工実行処理は、データ中継装置200の動作中は、加工部222によって継続的に実行される。
図13に示すように、まず、加工部222は、加工待ちリスト62の先頭のラベルを取得する。ここで、加工待ちリスト62が空の場合は、加工部222は、加工待ちリスト62にラベルが追加されるのを待ってそれを取得する(ステップS301)。そして、加工部222は、取得したラベルに対応するデータブロックを加工するために、同一のデータから切り出された全てのデータブロックが必要か否かを判定する(ステップS302)。
ここで、全てのデータブロックが必要ではないと判定した場合には(ステップS303否定)、加工部222は、ラベルに対応するデータブロックを加工し(ステップS304)、加工により新たに生成されたデータブロックをラベルと対応付ける(ステップS305)。そして、加工部222は、ラベルのステータスを「処理済」に更新し(ステップS306)、ラベルを送信待ちリスト63の末尾に移動させる(ステップS307)。
そして、加工部222は、加工前のデータブロックを削除した後(ステップS308)、加工待ちリスト62の次のラベルを取得し(ステップS315)、ステップS302以降を再実行する。なお、ステップS315において加工待ちリスト62に次のラベルがなかった場合は、加工部222は、加工待ちリスト62にラベルが追加されるのを待ってそれを取得する。
一方、ステップS302において全てのデータブロックが必要であると判定した場合には(ステップS303肯定)、加工部222は、ラベルにデータ終了フラグか送信データ終了フラグが設定されているかを確認することにより、そのラベルに対応するデータブロックが同一のデータから切り出された最後のデータブロックであるか否かを判定する。そして、ラベルに対応するデータブロックが最後のデータブロックであった場合は(ステップS309肯定)、加工部222は、同一のデータから切り出された全てのデータブロックを連結して加工する(ステップS310)。
そして、加工部222は、加工により新たに生成されたデータブロックを、結合したデータブロックに対応するラベルのうちブロック番号が最も小さいラベルである先頭ラベルと対応付ける(ステップS311)。そして、加工部222は、先頭ラベルのステータスを「処理済」に更新し(ステップS312)、先頭ラベルを送信待ちリスト63の末尾に移動させる(ステップS313)。
そして、加工部222は、結合したデータブロックに対応するラベルのうち先頭ラベル以外のラベルと、加工前のデータブロックを削除した後(ステップS314)、加工待ちリスト62の次のラベルを取得し(ステップS315)、ステップS302以降を再実行する。
また、取得したラベルに対応するデータブロックが最後のデータブロックでなかった場合は(ステップS309否定)、加工部222は、データブロックの加工を行うことなく、加工待ちリスト62の次のラベルを取得し(ステップS315)、ステップS302以降を再実行する。
図14は、送信処理部230によるデータブロック送信処理の処理手順を示すフローチャートである。データブロック送信処理は、データ中継装置200の動作中は、送信処理部230によって継続的に実行される。
図14に示すように、まず、ブロックヘッダ付加部231は、送信待ちリスト63の先頭のラベルを取得する。ここで、送信待ちリスト63が空の場合は、ブロックヘッダ付加部231は、送信待ちリスト63にラベルが追加されるのを待ってそれを取得する(ステップS401)。そして、ブロックヘッダ付加部231は、取得したラベルからブロックヘッダを生成する(ステップS402)。
続いて、ブロックヘッダ付加部231は、ラベルに対応するデータブロックを取得し(ステップS403)、取得したデータブロックにブロックヘッダを付加する(ステップS404)。そして、送信部232が、ブロックヘッダの付加されたデータブロックを送信先へ送信し(ステップS405)、ブロックヘッダ付加部231が、送信されたデータブロックとそれに対応するラベルをデータブロック記憶部242から削除する(ステップS406)。その後、送信処理部230は、ステップS401以降を再実行する。
次に、図1に示したデータ受信装置300の構成について説明する。図15は、データ受信装置300の構成を示すブロック図である。図15に示すように、データ受信装置300は、受信処理部310と、加工処理部320と、再構成処理部330と、記憶部340と、ネットワークインターフェース部350とを有する。ネットワークインターフェース部350は、ネットワークを介して他の情報処理装置と通信を行うためのインターフェース装置である。
受信処理部310は、受信部311と、格納部312とを有する。受信部311は、データ中継装置200から送信されたデータブロックとブロックヘッダの組合せを受信する。格納部312は、受信されたブロックヘッダからラベルを生成し、データブロックとラベルを関連付けて記憶部340のデータブロック記憶部341に格納する。
図16は、データブロック記憶部341に格納されたラベルとデータブロックの一例を示す図である。図16に示した例では、データブロック15aに対応付けて、ラベル25aが格納されている。ラベル25aは、データ中継装置200のデータブロック記憶部242に格納されるラベル22a等が有する項目に加えて、中継時加工方法という項目を有する。この項目は、ブロックヘッダに設定されている加工方法の値が転記される項目であり、データ中継装置200において、対応するデータブロックに対してどのような加工が実行されたかを示す。
ここで、データブロック記憶部341におけるラベルの管理手法について説明しておく。図17は、ラベルが属する3つのリストを示す図である。図17に示すように、データブロック記憶部341には、ラベル64a〜64c等が属する判定待ちリスト64と、ラベル65a〜65c等が属する加工待ちリスト65と、ラベル66a〜66c等が属する再構成待ちリスト66とが存在する。そして、データブロック記憶部341においては、各ラベルが、これらのリストのいずれかに属するように管理される。
判定待ちリスト64は、格納部312によって新たにデータブロック記憶部341に格納されたラベルが末尾に追加されるリストである。判定待ちリスト64に追加されたラベルは、先頭から順に加工処理部320によってデータブロックの加工方法が判定される。そして、データブロックの加工が必要と判定されたラベルは、加工待ちリスト65の末尾に移動され、データブロックの加工が不要と判定されたラベルは、再構成待ちリスト66の末尾に移動される。加工待ちリスト65に追加されたラベルは、加工処理部320によるデータブロックの加工が完了したものから順に、再構成待ちリスト66の末尾に移動される。そして、再構成待ちリスト66に追加された各ラベルは、同一の送信データから得られたデータブロックに対応するラベルが全て揃った段階で、再構成処理部330による再構成処理の対象となる。
図15の説明に戻って、加工処理部320は、加工判定部321と、加工部322とを有する。加工判定部321は、データブロック記憶部341に格納されている各データブロックに対してどのような加工が必要かを判定し、判定結果を対応するラベルの加工方法の項目に設定する。
加工判定部321は、判定待ちリスト64の先頭のラベルから順に判定を行い、加工が必要と判定したデータブロックに対応するラベルを加工待ちリスト65の末尾に移動させる。また、加工判定部321は、加工が不要と判定したデータブロックに対応するラベルを再構成待ちリスト66の末尾に移動させる。
加工判定部321は、データブロックにどのような加工が必要かを、対応するラベルに設定されているデータタイプと中継時加工方法の値を記憶部340の加工定義情報記憶部343に記憶されている加工定義情報72と照合することにより判定する。加工定義情報72の一例を図18に示す。図18に示すように、加工定義情報72は、データタイプ、中継時加工方法、加工方法といった項目を有し、データタイプ毎に中継時加工方法と加工方法の組合せを複数登録できるように構成されている。
加工定義情報72におけるデータタイプは、データの種別を示し、ラベルのデータタイプの値と対応する。中継時加工方法は、データ中継装置200において実行された加工方法を示し、ラベルの中継時加工方法の値と対応する。加工方法は、データブロックに対して実行すべき加工方法を示す。なお、加工方法の項目に設定される加工方法は、データをデータ中継装置200における加工前の状態に戻すためのものであってもよいし、それ以外のものであってもよい。また、加工方法として、「無加工」という値が設定されている場合、データブロックに加工が不要であることを示す。
図18に示した例では、「テキスト」というデータタイプに対して、「ZIP圧縮」という送信先と「ZIP解凍」という加工方法の組合せが登録されている。これは、ラベルのデータタイプに設定されている値が「テキスト」であり、中継時加工方法に設定されている値が「ZIP圧縮」であれば、データブロックに「ZIP解凍」という加工が必要であることを示している。
加工部322は、加工判定部321の判定結果に従ってデータブロックに対して加工を行う。具体的には、加工部322は、加工待ちリスト65の先頭から順にラベルを取得し、ラベルの加工方法の値に従って、ラベルに対応するデータブロックを加工し、ラベルを再構成待ちリスト66の末尾に移動させる。
再構成処理部330は、再構成部331を有する。再構成部331は、加工が完了したデータブロックや加工が不要と判定されたデータブロックと、それらに対応するラベルとに基づいて送信データを再構成し、再構成した送信データを記憶部340の送信データ記憶部342に格納する。
上述したように、加工が完了したデータブロックや加工が不要と判定されたデータブロックに対応するラベルは、再構成待ちリスト66に追加される。そして、再構成部331は、送信データを再構成するのに必要な全てのラベルが再構成待ちリスト66に揃った時点で再構成を実行する。送信データを再構成するのに必要な全てのラベルが全て揃ったことは、同一の送信データIDを有するラベルをブロック番号順に並べた場合に、番号の抜けが無く、データ終了フラグが設定されたラベルと送信データ終了フラグが設定されたラベルが適切な位置にあることを基準に判定できる。
次に、図15に示したデータ受信装置300の処理手順について説明する。図19は、受信処理部310による受信処理の処理手順を示すフローチャートである。受信処理は、データ受信装置300の動作中は、受信処理部310によって継続的に実行される。
図19に示すように、受信部311が、データ中継装置200からブロックヘッダとデータブロックを受信する(ステップS501)。続いて、格納部312が、受信されたブロックヘッダからラベルを生成し(ステップS502)、データブロックとラベルを対応付けてデータブロック記憶部341に格納する(ステップS503)。そして、格納部312が、ラベルを判定待ちリスト64の末尾に追加する(ステップS504)。その後、ステップS501以降が再実行される。
図20は、加工判定部321による加工方法判定処理の処理手順を示すフローチャートである。加工方法判定処理は、データ受信装置300の動作中は、加工判定部321によって継続的に実行される。
図20に示すように、まず、加工判定部321は、判定待ちリスト64の先頭のラベルを取得する。ここで、判定待ちリスト64が空の場合は、加工判定部321は、判定待ちリスト64にラベルが追加されるのを待ってそれを取得する(ステップS601)。そして、加工判定部321は、取得したラベルのデータタイプと中継時加工方法を加工定義情報記憶部343に予め格納されている加工定義情報と照合して加工方法を判定する(ステップS602)。
ここで、判定された加工方法が「無加工」以外だった場合、すなわち、データブロックの加工が必要な場合には(ステップS603肯定)、加工判定部321は、判定した加工方法をラベルに設定する(ステップS604)。そして、加工判定部321は、ラベルを加工待ちリスト65へ移動させた後(ステップS605)、ステップS601以降を再実行する。
一方、判定された加工方法が「無加工」だった場合、すなわち、データブロックの加工が必要ない場合には(ステップS603否定)、加工判定部321は、ラベルに「無加工」を設定する(ステップS606)。そして、加工判定部321は、ラベルを再構成待ちリスト66へ移動させた後(ステップS607)、ステップS601以降を再実行する。
図21は、加工部322による加工実行処理の処理手順を示すフローチャートである。加工実行処理は、データ受信装置300の動作中は、加工部322によって継続的に実行される。
図21に示すように、まず、加工部322は、加工待ちリスト65の先頭のラベルを取得する。ここで、加工待ちリスト65が空の場合は、加工部322は、加工待ちリスト65にラベルが追加されるのを待ってそれを取得する(ステップS701)。そして、加工部322は、ラベルに対応するデータブロックを加工し(ステップS702)、加工により新たに生成されたデータブロックをラベルと対応付ける(ステップS703)。
そして、加工部322は、ラベルのステータスを「処理済」に更新し(ステップS704)、ラベルを再構成待ちリスト66の末尾に移動させる(ステップS705)。そして、加工部322は、加工前のデータブロックを削除した後(ステップS706)、ステップS701以降を再実行する。
図22は、再構成処理部330による再構成処理の処理手順を示すフローチャートである。再構成処理は、データ受信装置300の動作中は、再構成処理部330によって継続的に実行される。
図22に示すように、まず、再構成処理部330は、再構成待ちリスト66の先頭のラベルを取得する。ここで、再構成待ちリスト66が空の場合は、再構成処理部330は、再構成待ちリスト66にラベルが追加されるのを待ってそれを取得する(ステップS801)。そして、再構成処理部330は、取得したラベルと送信データIDが同一のラベルを再構成待ちリスト66から取得し(ステップS802)、送信データを再構成するために必要なデータブロックが全て揃っているか確認する(ステップS803)。
ここで、全てのデータブロックが揃っていた場合は(ステップS804肯定)、再構成処理部330は、各ラベルに対応するデータブロックをデータブロック記憶部341から取得する(ステップS805)。そして、再構成処理部330は、取得したデータブロックとそれらに対応するラベルから送信データを再構成し(ステップS806)、再構成した送信データを送信データ記憶部342に格納する(ステップS807)。
そして、再構成処理部330は、取得したデータブロックとラベルを削除し(ステップS808)、再構成待ちリスト66から次のラベルを取得して(ステップS809)、ステップS802以降を再実行する。なお、ステップS809において再構成待ちリスト66に次のラベルがなかった場合は、再構成処理部330は、再構成待ちリスト66にラベルが追加されるのを待ってそれを取得する。
一方、ステップS803において、全てのデータブロックが揃ってなかった場合は(ステップS804否定)、再構成処理部330は、送信データの再構成を行うことなく、再構成待ちリスト66から次のラベルを取得して(ステップS809)、ステップS802以降を再実行する。
なお、図4に示したデータ中継装置200の構成と図15に示したデータ受信装置300の構成の構成は、要旨を逸脱しない範囲で種々に変更することができる。例えば、データ中継装置200の受信処理部210、加工処理部220および送信処理部230の機能をソフトウェアとして実装し、これをコンピュータで実行することにより、データ中継装置200と同等の機能を実現することもできる。同様に、データ受信装置300の受信処理部310、加工処理部320および再構成処理部330の機能をソフトウェアとして実装し、これをコンピュータで実行することにより、データ受信装置300と同等の機能を実現することもできる。
以下に、データ中継装置200の受信処理部210、加工処理部220および送信処理部230の機能をソフトウェアとして実装したデータ中継プログラム1071を実行するコンピュータの一例を示す。
図23は、データ中継プログラム1071を実行するコンピュータ1000を示す機能ブロック図である。このコンピュータ1000は、各種演算処理を実行するCPU(Central Processing Unit)1010と、ユーザからのデータの入力を受け付ける入力装置1020と、各種情報を表示するモニタ1030と、記録媒体からプログラム等を読み取る媒体読取り装置1040と、ネットワークを介して他のコンピュータとの間でデータの授受をおこなうネットワークインターフェース装置1050と、各種情報を一時記憶するRAM(Random Access Memory)1060と、ハードディスク装置1070とをバス1080で接続して構成される。
そして、ハードディスク装置1070には、図4に示した受信処理部210、加工処理部220および送信処理部230と同様の機能を有するデータ中継プログラム1071と、図4に示した記憶部240に記憶される各種データに対応するデータ中継用データ1072とが記憶される。なお、データ中継用データ1072を、適宜分散させ、ネットワークを介して接続された他のコンピュータに記憶させておくこともできる。
そして、CPU1010がデータ中継プログラム1071をハードディスク装置1070から読み出してRAM1060に展開することにより、データ中継プログラム1071は、データ中継プロセス1061として機能するようになる。そして、データ中継プロセス1061は、データ中継用データ1072から読み出した情報等を適宜RAM1060上の自身に割り当てられた領域に展開し、この展開したデータ等に基づいて各種データ処理を実行する。
なお、上記のデータ中継プログラム1071は、必ずしもハードディスク装置1070に格納されている必要はなく、CD−ROM等の記憶媒体に記憶されたこのプログラムを、コンピュータ1000が読み出して実行するようにしてもよい。また、公衆回線、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)等を介してコンピュータ1000に接続される他のコンピュータ(またはサーバ)等にこのプログラムを記憶させておき、コンピュータ1000がこれらからプログラムを読み出して実行するようにしてもよい。