(57)【要約】【課題】データの通信遅延を低減できる。【解決手段】通信手段１ａは、情報処理装置２との間で第１の種類のデータ３，４，５を所定の周期で通信するとともに、不定期に発生する第２の種類のデータ６を情報処理装置２に送信する。判定手段１ｂは、第２の種類のデータ６を取得すると、第１の種類のデータ４が発生するまでの残り時間内に第２の種類のデータ６の送信を完了できるか判定し、完了できないと判定すると第２の種類のデータ６を記憶手段１ｃに格納する。分割手段１ｄは、記憶手段１ｃに格納された第２の種類のデータ６から当該残り時間内に送信できるサイズの分割データ６ａを抽出して通信手段１ａに送信させる。分割手段１ｄは、その後、第１の種類のデータ４，５の送信が完了するたびに、記憶手段１ｃを参照して、第２の種類のデータ６のうちの未送信データにつき分割データ６ｂ，６ｃを抽出して通信手段１ａに送信させる。【選択図】図１
2012080171.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置との間で第１の種類のデータを所定の周期で通信し、
不定期に発生する第２の種類のデータを取得すると、前記第２の種類のデータのサイズに基づいて、第１の種類のデータが次に発生するまでの残り時間内に前記第２の種類のデータの送信を完了できるか否か判定し、完了できないと判定すると前記第２の種類のデータを記憶手段に格納し、
前記記憶手段に格納された前記第２の種類のデータから前記残り時間内に送信できるサイズにデータを分割した分割データを抽出して前記情報処理装置へ送信し、
第１の種類のデータの通信が完了するたびに、前記記憶手段を参照して、前記第２の種類のデータのうちの未送信データにつき前記分割データを抽出して前記情報処理装置へ送信する、
処理をコンピュータに実行させることを特徴とする通信プログラム。
【請求項２】
第１の種類のデータの通信が完了するたびに、当該通信に要した所要時間と当該第１の種類のデータのサイズとに基づいて通信速度を算出し、
前記通信速度と前記残り時間とに基づいて前記分割データのサイズを算出する、
ことを特徴とする請求項１記載の通信プログラム。
【請求項３】
前記記憶手段には、先に発生した第２の種類のデータについての未送信データと、先に発生した第２の種類のデータよりも後に発生した第２の種類のデータと、が格納されており、
先に発生した第２の種類のデータについての未送信データの送信が完了した後、前記残り時間がある場合、後に発生した第２の種類のデータにつき当該残り時間内に後に発生した第２の種類のデータの送信を完了できるか否か判定する、
ことを特徴とする請求項１または２の何れか一項に記載の通信プログラム。
【請求項４】
第１のフラグが付加された第１の種類のデータおよび第２のフラグが付加された第２の種類のデータを格納するキューに格納されたデータを順次取得し、当該データに前記第２のフラグが付加されている場合に、前記残り時間内に前記第２の種類のデータの送信を完了できるか否か判定する、
ことを特徴とする請求項１乃至３の何れか一項に記載の通信プログラム。
【請求項５】
第１の種類のデータの前記通信は、前記情報処理装置に第１の種類のデータを送信する処理であることを特徴とする請求項１乃至４の何れか一項に記載の通信プログラム。
【請求項６】
第１の種類のデータの前記通信は、前記情報処理装置から第１の種類のデータを受信する処理であることを特徴とする請求項１乃至３の何れか一項に記載の通信プログラム。
【請求項７】
情報処理装置との間で第１の種類のデータを所定の周期で通信するとともに、不定期に発生する第２の種類のデータを前記情報処理装置に送信する通信手段と、
前記第２の種類のデータを取得すると、前記第２の種類のデータのサイズに基づいて、第１の種類のデータが次に発生するまでの残り時間内に前記第２の種類のデータの送信を完了できるか否か判定し、完了できないと判定すると前記第２の種類のデータを記憶手段に格納する判定手段と、
前記記憶手段に格納された前記第２の種類のデータから前記残り時間内に送信できるサイズにデータを分割した分割データを抽出して前記通信手段に送信させ、その後、第１の種類のデータの送信が完了するたびに、前記記憶手段を参照して、前記第２の種類のデータのうちの未送信データにつき前記分割データを抽出して前記通信手段に送信させる分割手段と、
を有することを特徴とする通信装置。
【請求項８】
通信装置と情報処理装置とが接続された通信システムの通信方法であって、
前記通信装置が、前記情報処理装置との間で第１の種類のデータを所定の周期で通信し、
前記通信装置が、不定期に発生する第２の種類のデータを取得すると、前記第２の種類のデータのサイズに基づいて、第１の種類のデータが次に発生するまでの残り時間内に前記第２の種類のデータの送信を完了できるか否か判定し、完了できないと判定すると前記第２の種類のデータを記憶手段に格納し、前記記憶手段に格納された前記第２の種類のデータから前記残り時間内に送信できるサイズにデータを分割した分割データを抽出して前記情報処理装置へ送信し、
前記情報処理装置が、前記分割データを受信すると、当該分割データを分割データ記憶手段に格納し、
前記通信装置が、第１の種類のデータの通信が完了するたびに、前記記憶手段を参照して、前記第２の種類のデータのうちの未送信データにつき前記分割データを抽出して前記情報処理装置へ送信し、
前記情報処理装置が、前記第２の種類のデータを復元するための前記分割データを全て受信すると、前記分割データ記憶手段を参照して各分割データを結合し、前記第２の種類のデータを取得する、
ことを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータの通信を制御する通信プログラム、通信装置および通信方法に関する。
【背景技術】
【０００２】
情報処理システムでは、ネットワークを介して接続された情報処理装置間でデータの送受信が行われる。送受信されるデータには、相対的に重要度の高いデータおよび重要度の低いデータが含まれ得る。重要度の高いデータは、例えば緊急に通知しなければならないメッセージや複数の情報処理装置間でリアルタイムに共有されるべきデータ等である。また、重要度の低いデータは、例えば緊急性を要しないメッセージや処理を実行するまでの時間に余裕のあるデータ等である。
【０００３】
このような情報処理システムでは、重要度の高いデータを重要度の低いデータよりも優先して処理する仕組みが考えられている。
例えば、データの優先度に対応した複数のキューを設け、優先度の高いキューに格納されたデータから優先的に読み出して、送信する技術がある（例えば、特許文献１参照）。また、優先度の低いデータを通常伝送のキューに予め分割して格納しておき、当該キューから分割したデータを順次取り出して送信し、優先伝送のキューに重要度の高いデータが格納された場合には、優先伝送のキューのデータを優先して伝送する技術がある（例えば、特許文献２参照）。
【０００４】
なお、優先度の高い入力要求の処理終了時間と優先度の低い入力要求の処理終了時間とを予想して比較し、優先度の低い入力要求の処理の方が早く完了する場合には、優先度の低い入力要求の処理の実行を禁止することで、優先度の指定通りの順序で処理を行う技術もある（例えば、特許文献３参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−２６８１５号公報
【特許文献２】特開２００７−２３５６１４号公報
【特許文献３】特開２００４−１１２３６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来のように優先度に応じたキューを設けたとしても、現在送信中のデータの送信が完了しなければ優先度の高いデータの送信を開始することができない。すなわち、現在の送信処理が完了するまで、優先度の高いデータの送信開始までに遅延が生じるという問題がある。
【０００７】
本発明はこのような点に鑑みてなされたものであり、データの通信遅延を低減した通信プログラム、通信装置および通信方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、通信プログラムが提供される。この通信プログラムを実行するコンピュータは、情報処理装置との間で第１の種類のデータを所定の周期で通信する。また、不定期に発生する第２の種類のデータを取得すると、第２の種類のデータのサイズに基づいて、第１の種類のデータが次に発生するまでの残り時間内に第２の種類のデータの送信を完了できるか否か判定し、完了できないと判定すると第２の種類のデータを記憶手段に格納する。そして、記憶手段に格納された第２の種類のデータから当該残り時間内に送信できるサイズにデータを分割した分割データを抽出して情報処理装置へ送信する。更に、第１の種類のデータの通信が完了するたびに、記憶手段を参照して、第２の種類のデータのうちの未送信データにつき分割データを抽出して情報処理装置へ送信する。
【０００９】
また、上記課題を解決するために通信装置が提供される。この通信装置は、通信手段、判定手段および分割手段を有する。通信手段は、情報処理装置との間で第１の種類のデータを所定の周期で通信するとともに、不定期に発生する第２の種類のデータを情報処理装置に送信する。判定手段は、第２の種類のデータを取得すると、第２の種類のデータのサイズに基づいて、第１の種類のデータが次に発生するまでの残り時間内に第２の種類のデータの送信を完了できるか否か判定し、完了できないと判定すると第２の種類のデータを記憶手段に格納する。分割手段は、記憶手段に格納された第２の種類のデータから当該残り時間内に送信できるサイズにデータを分割した分割データを抽出して通信手段に送信させる。分割手段は、その後、第１の種類のデータの送信が完了するたびに、記憶手段を参照して、第２の種類のデータのうちの未送信データにつき分割データを抽出して通信手段に送信させる。
【００１０】
また、上記課題を解決するために通信装置と情報処理装置とが接続された通信システムの通信方法が提供される。この通信方法では、通信装置が、情報処理装置との間で第１の種類のデータを所定の周期で通信する。通信装置が、不定期に発生する第２の種類のデータを取得すると、第２の種類のデータのサイズに基づいて、第１の種類のデータが次に発生するまでの残り時間内に第２の種類のデータの送信を完了できるか否か判定し、完了できないと判定すると第２の種類のデータを記憶手段に格納し、記憶手段に格納された第２の種類のデータから残り時間内に送信できるサイズにデータを分割した分割データを抽出して情報処理装置へ送信する。情報処理装置が、分割データを受信すると、当該分割データを分割データ記憶手段に格納する。通信装置が、第１の種類のデータの通信が完了するたびに、記憶手段を参照して、第２の種類のデータのうちの未送信データにつき分割データを抽出して情報処理装置へ送信する。情報処理装置が、第２の種類のデータを復元するための分割データを全て受信すると、分割データ記憶手段を参照して各分割データを結合し、第２の種類のデータを取得する。
【発明の効果】
【００１１】
上記通信プログラム、通信装置および通信方法によれば、データの通信遅延を低減できる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態の通信装置を示す図である。
【図２】第２の実施の形態の証券取引システムの全体構成を示す図である。
【図３】第２の実施の形態の取引所サーバのハードウェア構成を示す図である。
【図４】第２の実施の形態の取引所サーバの機能を示すブロック図である。
【図５】第２の実施の形態の証券会社サーバの機能を示すブロック図である。
【図６】未送信データ管理テーブルのデータ構造例を示す図である。
【図７】送信データのフォーマット例を示す図である。
【図８】分割データ管理テーブルのデータ構造例を示す図である。
【図９】第２の実施の形態のデータ送信処理を示すフローチャートである。
【図１０】第２の実施の形態の株価データ送信処理を示すフローチャートである。
【図１１】第２の実施の形態の案内データ送信処理を示すフローチャートである。
【図１２】第２の実施の形態の分割データ送信処理を示すフローチャートである。
【図１３】データ受信処理を示すフローチャートである。
【図１４】データ送信処理の流れの第１の具体例を示す図である。
【図１５】データ通信方法の第１の具体例を示す図である。
【図１６】データ通信方法の比較例を示す図である。
【図１７】データ送信処理の流れの第２の具体例を示す図である。
【図１８】データ通信方法の第２の具体例を示す図である。
【図１９】第３の実施の形態の店舗管理システムの全体構成を示す図である。
【図２０】第３の実施の形態の本部サーバの構成を示すブロック図である。
【図２１】第３の実施の形態のデータ受信処理を示すフローチャートである。
【図２２】第３の実施の形態のデータ送信処理を示すフローチャートである。
【図２３】第３の実施の形態の分割データ送信処理を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の通信装置を示す図である。通信装置１は、情報処理装置２とデータ通信可能に接続されている。通信装置１は、通信手段１ａ、判定手段１ｂ、記憶手段１ｃおよび分割手段１ｄを有する。
【００１４】
通信手段１ａは、情報処理装置２との間で第１の種類のデータ３，４，５を所定の周期で通信する。ここで、通信手段１ａは、第１の種類のデータ３，４，５を情報処理装置２へ送信するものとする。ただし、通信手段１ａは、第１の種類のデータ３，４，５を情報処理装置２から受信するものであってもよい。通信手段１ａは、不定期に発生する第２の種類のデータ６を情報処理装置２に送信する。
【００１５】
なお、図１中、第１の種類のデータ３，４，５および分割データ６ｃ，６ｂ，６ａが重なる各矢印は、各データの送信方向（通信装置１から情報処理装置２へ向かう方向）を示している。
【００１６】
判定手段１ｂは、第１の種類のデータ３の送信後、第２の種類のデータ６を取得すると、第２の種類のデータ６のサイズに基づき、第１の種類のデータ４が次に発生するまでの残り時間内に第２の種類のデータ６の情報処理装置２への送信を完了できるか否かを判定する。判定手段１ｂは、完了できないと判定すると、取得した第２の種類のデータ６を記憶手段１ｃに格納する。判定手段１ｂは、完了できると判定すると、第２の種類のデータ６を通信手段１ａに出力する。
【００１７】
記憶手段１ｃは、第２の種類のデータ６を記憶する。記憶手段１ｃに格納される第２の種類のデータ６は、判定手段１ｂにより第１の種類のデータ４が次に発生するまでの残り時間内に情報処理装置２への送信を完了できないと判定されたデータである。
【００１８】
分割手段１ｄは、記憶手段１ｃに格納された第２の種類のデータ６から第１の種類のデータ４が次に発生するまでの残り時間内に送信できるサイズにデータを分割した分割データ６ａを抽出して通信手段１ａに出力する。すると、通信手段１ａは、分割手段１ｄから抽出した分割データ６ａを情報処理装置２に送信する。
【００１９】
その後、分割手段１ｄは、第１の種類のデータ４，５の送信が完了するたびに、記憶手段１ｃを参照して、第２の種類のデータ６のうちの未送信データから分割データ６ｂ、６ｃを抽出して通信手段１ａに出力する。
【００２０】
すると、通信手段１ａは、第１の種類のデータ４の送信完了後に分割手段１ｄから抽出した分割データ６ｂを情報処理装置２に送信する。また、通信手段１ａは、第１の種類のデータ５の送信完了後に分割手段１ｄから取得した分割データ６ｃを情報処理装置２に送信する。
【００２１】
通信装置１によれば、判定手段１ｂにより第２の種類のデータ６が取得されると、第２の種類のデータ６のサイズに基づいて、第１の種類のデータ４が次に発生するまでの残り時間内に第２の種類のデータ６の情報処理装置２への送信を完了できるか否かが判定される。判定手段１ｂにより、完了できないと判定されると第２の種類のデータ６が記憶手段１ｃに格納される。分割手段１ｄにより、記憶手段１ｃに格納された第２の種類のデータ６から第１の種類のデータ４が次に発生するまでの残り時間内に送信できるサイズにデータを分割した分割データ６ａが抽出されて出力される。更に、通信手段１ａにより分割手段１ｄが出力した分割データ６ａが情報処理装置２に送信される。その後、第１の種類のデータ４の送信が完了すると、分割手段１ｄにより、記憶手段１ｃが参照され、第２の種類のデータ６のうちの未送信データにつき分割データ６ｂが抽出されて出力される。通信手段１ａにより、分割手段１ｄが出力した分割データ６ｂが情報処理装置２に送信される。第１の種類のデータ５の送信が完了すると、分割手段１ｄにより、記憶手段１ｃが参照され、第２の種類のデータ６のうちの未送信データにつき分割データ６ｃが抽出されて出力される。通信手段１ａにより、分割手段１ｄが出力した分割データ６ｃが情報処理装置２に送信される。
【００２２】
このようにすれば、通信装置１は、定期的に発生する第１の種類のデータ３，４，５と重ならないように、第２の種類のデータ６を分割した分割データ６ａ，６ｂ，６ｃを情報処理装置２に送信できる。このため、第１の種類のデータ３，４，５が発生するタイミングにおいて、第１の種類のデータ３，４，５を確実に情報処理装置２に送信開始できる。すなわち、第１の種類のデータの送信遅延を低減できる。
【００２３】
更に、分割データ６ｂ，６ｃのサイズを第１の種類のデータ４，５の送信完了後に決定することで、たとえ第１の種類のデータ４，５で遅延が発生したとしても以後発生する第１の種類のデータの発生タイミングと重複することなく、それ以後の分割データを送信できる。これにより、第１の種類のデータの送信遅延を一層低減できる。
【００２４】
通信装置１は、情報の共有に高いリアルタイム性を要求される情報処理システムに適用する場合に特に有用である。以下に示す第２，３の実施の形態では、このように高いリアルタイム性を要求されるデータを送受信する情報処理システムに通信装置１を適用する例を説明する。
【００２５】
［第２の実施の形態］
図２は、第２の実施の形態の証券取引システムの全体構成を示す図である。この証券取引システムは、取引所サーバ１００および証券会社サーバ２００，３００，４００を有する。取引所サーバ１００はネットワーク１０を介して証券会社サーバ２００，３００，４００と接続されている。ここで、取引所サーバ１００と証券会社サーバ２００，３００，４００とは単一の回線で接続されている。
【００２６】
取引所サーバ１００は、証券取引所で管理されるサーバコンピュータである。取引所サーバ１００は、証券会社サーバ２００，３００，４００に対して、株価データやそれ以外のデータを配信する。株価データは、証券取引所が取り扱う銘柄の株価を含むデータである。株価データは、証券取引所と証券会社との間の同期に高いリアルタイム性を要求される。なぜなら、証券会社と顧客との取引上、各銘柄の価格変動は証券取引所と各証券会社とでリアルタイムに共有されることが望ましいからである。
【００２７】
株価データ以外のデータとしては、例えば、取引所の運用や各銘柄に関する各種お知らせを通知する案内データ等がある。このようなデータは、直接的に現在行われている証券取引に影響するものではない。すなわち、証券取引所および各証券会社の間での同期につき高いリアルタイム性を要しないものである。
【００２８】
このため、株価データはそれ以外のデータに比べて証券会社サーバ２００，３００，４００への送信の優先度が高い。
証券会社サーバ２００，３００，４００は、証券会社で管理されるサーバコンピュータである。証券会社サーバ２００，３００，４００は、図示しないネットワークを介してエンドユーザの端末装置と接続されている。証券会社サーバ２００，３００，４００は、取引所サーバ１００から取得した株価データに基づいて、顧客との間の有価証券の売買等の取引を行う。
【００２９】
ここで、取引所サーバ１００は、株価データを定期的に生成する。株価データの生成の周期は、例えば１分である。また、取引所サーバ１００は、株価データ以外のデータを不定期に生成する。この証券取引システムでは、優先度の高い株価データと、優先度の低いそれ以外のデータとを、単一の回線で効率的に送信する仕組みが求められる。以下では、そのような取引所サーバ１００の構成を更に詳細に説明する。
【００３０】
また、以下では優先度の高いデータの一例として株価データを、優先度の低いデータの一例として案内データを挙げて説明する。ただし、優先度の高いデータ、優先度の低いデータには、これらに限らず種々のものが考えられる。
【００３１】
図３は、第２の実施の形態の取引所サーバのハードウェア構成を示す図である。取引所サーバ１００は、ＣＰＵ（Central Processing Unit）１０１、ＲＯＭ（Read Only Memory）１０２、ＲＡＭ（Random Access Memory）１０３、ＨＤＤ（Hard Disk Drive）１０４、グラフィック処理装置１０５、入力インタフェース１０６、記録媒体読取装置１０７および通信インタフェース１０８を有する。
【００３２】
ＣＰＵ１０１は、ＯＳ（Operating System）プログラムやアプリケーションプログラムを実行して、取引所サーバ１００全体を制御する。
ＲＯＭ１０２は、取引所サーバ１００の起動時に実行されるＢＩＯＳ（Basic Input / Output System）プログラムなどの所定のプログラムを記憶する。ＲＯＭ１０２は、書き換え可能な不揮発性メモリであってもよい。
【００３３】
ＲＡＭ１０３は、ＣＰＵ１０１が実行するＯＳプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０３は、ＣＰＵ１０１の処理に用いられるデータの少なくとも一部を一時的に記憶する。
【００３４】
ＨＤＤ１０４は、ＯＳプログラムやアプリケーションプログラムを記憶する。また、ＨＤＤ１０４は、ＣＰＵ１０１の処理に用いられるデータを記憶する。なお、ＨＤＤ１０４に代えて（または、ＨＤＤ１０４と併せて）、ＳＳＤ（Solid State Drive）など他の種類の不揮発性の記憶装置を用いてもよい。
【００３５】
グラフィック処理装置１０５は、モニタ１１に接続される。グラフィック処理装置１０５は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１に表示させる。
入力インタフェース１０６は、キーボード１２やマウス１３などの入力デバイスに接続される。入力インタフェース１０６は、入力デバイスから送られる入力信号をＣＰＵ１０１に出力する。
【００３６】
記録媒体読取装置１０７は、記録媒体１４に記憶されたデータを読み取る読取装置である。記録媒体１４には、例えば、取引所サーバ１００に実行させるプログラムが記録されている。取引所サーバ１００は、例えば、記録媒体１４に記録された通信プログラムを実行することで、後述するようなデータ送信制御機能を実現することができる。すなわち、データ送信制御の処理内容を記述したプログラムは、コンピュータ読み取り可能な記録媒体１４に記録して配布することが可能である。
【００３７】
記録媒体１４としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリを使用できる。磁気記録装置には、ＨＤＤ、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＣＤ（Compact Disc）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−Ｒ／ＲＷ／ＲＡＭなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。半導体メモリには、ＵＳＢ（Universal Serial Bus）メモリなどのフラッシュメモリがある。
【００３８】
通信インタフェース１０８は、ネットワーク１０に接続される。通信インタフェース１０８は、ネットワーク１０を介して証券会社サーバ２００，３００，４００とデータ通信を行える。
【００３９】
なお、ネットワーク１０に接続された他のサーバ装置（図示せず）に通信プログラムを格納しておいてもよい。その場合、取引所サーバ１００は、当該サーバ装置からプログラムをダウンロードして実行することもできる。証券会社サーバ２００，３００，４００も取引所サーバ１００と同様のハードウェア構成により実現できる。
【００４０】
図４は、第２の実施の形態の取引所サーバの機能を示すブロック図である。取引所サーバ１００は、株価データ生成部１１０、案内データ生成部１２０、送信キュー１３０および通信制御部１４０を有する。これらのユニットの機能は、ＣＰＵ１０１が所定のプログラムを実行することにより、取引所サーバ１００上に実現される。特に、通信制御部１４０の機能はＣＰＵ１０１が通信プログラムを実行することで実現される。ただし、これらのユニットの機能の全部または一部を専用のハードウェアで実装してもよい。
【００４１】
株価データ生成部１１０は、所定の周期Ｔ（例えばＴ＝１分）で株価データを生成する。株価データ生成部１１０は、生成した株価データに優先度を示す情報を付加して送信キュー１３０に格納（ＰＵＴ）する。
【００４２】
案内データ生成部１２０は、不定期に発生する取引所の運用や銘柄についてのお知らせ等を各証券会社や各証券会社の顧客へ通知するためのメッセージを含む案内データを生成する。案内データ生成部１２０は、生成した案内データに株価データよりも低い優先度を示す情報を付加して送信キュー１３０に格納（ＰＵＴ）する。
【００４３】
送信キュー１３０は、取引所サーバ１００が証券会社サーバ２００，３００，４００に送信するデータを順次格納するための記憶部である。送信キュー１３０は、例えばリングバッファにより実現できる。
【００４４】
通信制御部１４０は、証券会社サーバ２００，３００，４００に対する送信キュー１３０に格納されたデータの送信を制御する。通信制御部１４０は、判定部１４１、送信部１４２、通信情報取得部１４３、記憶部１４４および分割処理部１４５を有する。
【００４５】
判定部１４１は、送信キュー１３０に格納されたデータをＦＩＦＯ（First In First Out）の手順により取り出す（ＧＥＴ）。判定部１４１は、取り出したデータの優先度を参照して、当該データが株価データであるか案内データであるかを判定する。判定部１４１は、判定結果に応じて以下の処理を行う。
【００４６】
（１）優先度高のデータ、すなわち株価データである場合、判定部１４１は送信部１４２に株価データを出力する。
（２）優先度低のデータ、すなわち案内データである場合、更に、案内データのサイズに基づいて、次に株価データが発生するまでの間に証券会社サーバ２００，３００，４００に対する案内データ全体の送信を完了できるか否かを判定する。判定部１４１は、完了できると判定すると、案内データ全体を送信部１４２に出力する。一方、完了できないと判定すると、記憶部１４４に案内データを格納する。判定部１４１は、当該判定処理に用いる情報を通信情報取得部１４３から取得できる。
【００４７】
送信部１４２は、判定部１４１から株価データを取得すると、株価データを証券会社サーバ２００，３００，４００に送信する。送信部１４２は、証券会社サーバ２００，３００，４００に対する株価データの送信開始時刻、送信完了時刻および送信した株価データのデータサイズを通信情報取得部１４３に通知する。
【００４８】
送信部１４２は、判定部１４１から案内データを取得すると、案内データを証券会社サーバ２００，３００，４００に送信する。送信部１４２は、分割処理部１４５から分割データを取得すると、分割データを証券会社サーバ２００，３００，４００に送信する。ここで、分割データとは、記憶部１４４に格納されたデータのうち分割処理部１４５により抽出されたデータをいう。
【００４９】
通信情報取得部１４３は、送信部１４２から取得する株価データの送信開始時刻、送信完了時刻およびデータサイズに基づいて、送信部１４２によるデータ送信の通信速度を計測する。通信情報取得部１４３は、取得した送信開始時刻および通信速度等の情報を判定部１４１に出力する。
【００５０】
記憶部１４４は、未送信データを記憶する。未送信データには、判定部１４１により記憶部１４４に格納される案内データが含まれる。また、未送信データには、送信済みの分割データを除く未送信部分の残データが含まれる。
【００５１】
分割処理部１４５は、記憶部１４４に格納された案内データから、次に株価データが発生するまでの間に送信できるサイズの分だけ分割データを抽出し、送信部１４２に出力する。分割処理部１４５は、記憶部１４４に残データが格納されている場合には、送信部１４２による株価データの送信が完了するたびに、次に株価データが発生するまでの間に送信できるサイズの分だけ分割データを抽出し、送信部１４２に出力する。
【００５２】
次に、証券会社サーバ２００の機能構成を説明する。なお、証券会社サーバ３００，４００も証券会社サーバ２００と同様の構成により実現できる。
図５は、第２の実施の形態の証券会社サーバの機能を示すブロック図である。証券会社サーバ２００は、受信部２１０、分割データ記憶部２２０、受信キュー２３０およびサービス提供部２４０を有する。これらのユニットの機能は、証券会社サーバ２００のＣＰＵが所定のプログラムを実行することにより、証券会社サーバ２００上に実現される。ただし、これらのユニットの機能の全部または一部を専用のハードウェアで実装してもよい。
【００５３】
受信部２１０は、取引所サーバ１００から株価データを受信する。受信部２１０は、受信キュー２３０に株価データを格納（ＰＵＴ）する。受信部２１０は、取引所サーバ１００から案内データを受信する。受信部２１０は、受信キュー２３０に案内データを格納する（ＰＵＴ）。受信部２１０は、取引所サーバ１００から分割データを受信する。受信部２１０は、分割データ記憶部２２０に分割データを格納する。受信部２１０は、結合部２１１を有する。
【００５４】
結合部２１１は、分割データ記憶部２２０に案内データの全体を復元するのに必要な全ての分割データが格納されている場合、全分割データを結合して案内データを復元する。受信部２１０は、結合部２１１により復元された案内データを受信キュー２３０に格納する（ＰＵＴ）。ただし、復元のタイミングは、株価データの受信タイミングと重複しないタイミングであるとする。株価データの受信遅延を低減するためである。
【００５５】
受信キュー２３０は、受信部２１０が受信したデータを順次格納するための記憶部である。受信キュー２３０は、例えばリングバッファにより実現できる。受信キュー２３０には、受信部２１０によりサービス提供部２４０が扱う株価データおよび案内データが格納される。
【００５６】
サービス提供部２４０は、証券会社の顧客に対するサービスを提供するアプリケーションである。サービス提供部２４０は、受信キュー２３０に格納されたデータをＦＩＦＯの手順により取り出す（ＧＥＴ）。
【００５７】
サービス提供部２４０は、受信キュー２３０から株価データを取得すると、株価データに基づいて、顧客に対して各銘柄の現在の株価や株価の変動等の情報を提供する。サービス提供部２４０は、顧客との間で有価証券の売買等の取引を行う。また、サービス提供部２４０は、受信キュー２３０から案内データを取得すると、案内データに基づいて、証券取引システムの利用案内や銘柄情報等のお知らせを顧客に対して通知する。
【００５８】
図６は、未送信データ管理テーブルのデータ構造例を示す図である。未送信データ管理テーブル１４４ａは、判定部１４１により記憶部１４４に格納される。未送信データ管理テーブル１４４ａには、データ名、全サイズ、残サイズおよび未送信データ本体の項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１つの未送信データの情報を示す。
【００５９】
データ名の項目には、データの名称が設定される。全サイズの項目には、当該データの全体のサイズが設定される。残サイズの項目には、未送信データのサイズである残サイズが設定される。未送信データ本体の項目には、未送信データの本体が設定される。
【００６０】
未送信データ管理テーブル１４４ａには、例えば、データ名が“案内データ．ｄａｔ”、全サイズが“３ＭＢ（Mega Bytes）”、残サイズが“２ＭＢ”、未送信データ本体が“・・・”という情報が設定される。これは、データ“案内データ．ｄａｔ”が未だ完全に送信された状態でないことを示している。また、当該データにつき全体サイズが“３ＭＢ”、未送信分のデータサイズが“２ＭＢ”であること、未送信データ本体が“・・・”であることを示している。すなわち、１ＭＢ分のデータは証券会社サーバ２００，３００，４００に送信済みであることを示している。
【００６１】
図７は、送信データのフォーマット例を示す図である。送信データフォーマット２０には、通番フィールド２１、優先度フィールド２２、全サイズフィールド２３、分割サイズフィールド２４およびデータフィールド２５が含まれる。
【００６２】
通番フィールド２１には、送信パケットの通番がシーケンシャルに設定される。優先度フィールド２２には、優先度高（“１”）であるか、優先度低（“０”）であるかを示すフラグが設定される。全サイズフィールド２３には、データ全体のサイズが設定される。データ全体とは、分割データを全て結合したサイズに等しい。分割サイズフィールド２４には、当該フォーマットで送信される送信データのサイズを示す。全サイズと分割サイズとが等しい場合、当該フォーマットで送信される送信データは分割されていないことを意味する。データフィールド２５には、送信データの本体が設定される。
【００６３】
送信部１４２は、送信データフォーマット２０に基づいて送信データ２０ａ，２０ｂを生成する。
送信データ２０ａは、株価データ生成部１１０が生成した株価データを送信するためのものである。送信データ２０ａには、例えば、通番フィールド２１ａに“１０００１”、優先度フィールド２２ａに“１”、全サイズフィールド２３ａに“１ＭＢ”、分割サイズフィールド２４ａに“１ＭＢ”、データフィールド２５ａに“株価データ．ｄａｔ”が設定される。これは、当該データが“１０００１”番目に送信するデータであること、優先度高のデータであること、全体サイズが“１ＭＢ”であり、分割されていないこと、そのデータの本体が“株価データ．ｄａｔ”であることを示している。なお、ここではデータ本体をデータの名称で示している。送信データ２０ｂについても同様である。
【００６４】
送信データ２０ｂは、案内データ生成部１２０が生成した案内データを送信するためのものである。送信データ２０ｂには、例えば、通番フィールド２１ｂに“１０００２”、優先度フィールド２２ｂに“０”、全サイズフィールド２３ｂに“３ＭＢ”、分割サイズフィールド２４ｂに“１ＭＢ”、データフィールド２５ｂに“案内データ．ｄａｔ．０００１”が設定されている。これは、当該データが“１０００２”番目に送信するデータであること、優先度低のデータであること、分割されたデータであり、全体サイズが“３ＭＢ”、今回送信する分割データのサイズが“１ＭＢ”であること、そのデータの本体が“案内データ．ｄａｔ．０００１”であることを示している。
【００６５】
ここで、分割データにつき、受信側でのデータ管理を容易とするため、分割データ名称の末尾に一連の分割データである旨を示す情報を付加してもよい。送信データ２０ｂの例では、データフィールド２５ｂ中に設定されたデータのデータ名の末尾に“０００１”を付加している。これは、分割データの最初のデータである旨を示す。２番目のデータには“０００２”を付加する。３番目のデータには“０００３”を付加する。４番目以降に関しても同様である。
【００６６】
図８は、分割データ管理テーブルのデータ構造例を示す図である。分割データ管理テーブル２２１は、受信部２１０により分割データ記憶部２２０に格納される。分割データ管理テーブル２２１には、データ名、全サイズ、分割サイズおよび分割データ本体の項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１つの分割データの情報を示す。
【００６７】
データ名の項目には、データの名称が設定される。全サイズの項目には、当該データの全体のサイズが設定される。分割サイズの項目には、分割データのサイズが設定される。分割データ本体の項目には、分割データの本体が設定される。
【００６８】
分割データ管理テーブル２２１には、例えば、データ名が“案内データ．ｄａｔ．０００１”、全サイズが“３ＭＢ”、分割サイズが“１ＭＢ”、分割データ本体が“・・・”という情報が設定される。これは、分割データとして“案内データ．ｄａｔ．０００１”を取得しており、分割データを全て結合すると全体のサイズが“３ＭＢ”になることを示している。また、当該分割データのサイズが“１ＭＢ”であり、そのデータ本体が“・・・”であることを示している。
【００６９】
なお、上述したようにデータ名に付加された“０００１”は分割データの最初のデータであることを示している。当該情報によって、結合部２１１は、この分割データが最初のデータであることを識別できる。２番目以降のデータにも順番に“０００２”，“０００３”，・・・が付加されている。このため、結合部２１１は、この番号の順に分割データを結合すれば元のデータを取得することができる。
【００７０】
次に、以上のような構成の証券取引システムのデータ送受信処理の手順を説明する。
図９は、第２の実施の形態のデータ送信処理を示すフローチャートである。以下、図９に示す処理をステップ番号に沿って説明する。
【００７１】
［ステップＳ１］株価データ生成部１１０は、定期的に株価データを生成する。その周期Ｔは、例えば１分である。案内データ生成部１２０は、不定期に案内データを生成する。案内データの生成されるタイミングは、例えば、証券会社や証券会社の顧客に通知すべきメッセージが新たに発生したタイミングである。
【００７２】
［ステップＳ２］株価データ生成部１１０は、生成した株価データを送信キュー１３０にＰＵＴする。その際、株価データ生成部１１０は、株価データに優先度が高い旨を示す情報（優先度“１”）を付加する。また、案内データ生成部１２０は、生成した案内データを送信キュー１３０にＰＵＴする。その際、案内データ生成部１２０は、案内データに優先度が低い旨を示す情報（優先度“０”）を付加する。
【００７３】
［ステップＳ３］判定部１４１は、ＦＩＦＯの手順により送信キュー１３０からデータをＧＥＴする。
［ステップＳ４］判定部１４１は、取得したデータが優先度高のデータであるか否か判定する。優先度高のデータである場合、処理をステップＳ５に進める。優先度低のデータである場合、処理をステップＳ６に進める。
【００７４】
［ステップＳ５］判定部１４１は、優先度の高い株価データの送信処理を行う。
［ステップＳ６］判定部１４１は、優先度の低い案内データの送信処理を行う。
このようにして、判定部１４１は、データに付加された優先度の情報に基づいて、各データの優先度を判定し、データの優先度に応じた送信処理を行う。
【００７５】
図１０は、第２の実施の形態の株価データ送信処理を示すフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。
［ステップＳ１１］判定部１４１は、送信部１４２に株価データを出力する。送信部１４２は、通信情報取得部１４３に送信開始時刻Ｘ１および株価データのサイズＹ１を出力する。
【００７６】
［ステップＳ１２］送信部１４２は、送信データ２０ａを生成し、証券会社サーバ２００，３００，４００に対する株価データの送信を開始する。
［ステップＳ１３］送信部１４２は、株価データの送信を完了する。
【００７７】
［ステップＳ１４］送信部１４２は、送信完了時刻Ｘ２を通信情報取得部１４３に出力する。
［ステップＳ１５］通信情報取得部１４３は、通信速度Ｖ１を算出する。具体的には、Ｖ１＝Ｙ１／（Ｘ２−Ｘ１）の演算によりＶ１を算出できる。ここで、Ｘ２−Ｘ１の演算は、時刻Ｘ１から時刻Ｘ２までの時間を求める演算である。以下、時間の差分につき当該演算は同様の意味である。Ｖ１の単位は、例えば、ｂｐｓ（bits per second）である。
【００７８】
［ステップＳ１６］通信情報取得部１４３は、送信開始時刻Ｘ１および通信速度Ｖ１を判定部１４１に出力する。判定部１４１は、通信情報取得部１４３から送信開始時刻Ｘ１および通信速度Ｖ１を取得する。
【００７９】
このように、通信情報取得部１４３は、送信部１４２による株価データの送信が行われるたびに、証券会社サーバ２００，３００，４００との間の通信速度を算出し、判定部１４１に出力する。
【００８０】
なお、通信速度の算出は、株価データを複数回送信するごとに１回算出してもよい。例えば、株価データを５回送信するごとに１回としてもよい。
図１１は、第２の実施の形態の案内データ送信処理を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。
【００８１】
［ステップＳ２１］判定部１４１は、前回株価データの送信開始時刻からの経過時間τを取得する。経過時間τは、現在時刻をτ０として、τ＝τ０−Ｘ１の演算により求めることができる。
【００８２】
［ステップＳ２２］判定部１４１は、案内データのサイズＹ２を取得する。
［ステップＳ２３］判定部１４１は、次回株価データ発生までの残り時間ΔＴを算出する。残り時間ΔＴは、ΔＴ＝Ｔ−τの演算により求めることができる。ここで、Ｔは株価データ生成部１１０が株価データを生成する周期である。
【００８３】
［ステップＳ２４］判定部１４１は、通信情報取得部１４３から取得した通信速度Ｖ１に基づいて、残り時間ΔＴで案内データ（サイズＹ２）を送信完了できるか否かを判定する。送信完了できる場合、処理をステップＳ２５に進める。送信完了できない場合、処理をステップＳ２６に進める。当該判定は、ΔＴ＞Ｙ２／Ｖ１であるか否かを判定することで行える。すなわち、本判定式を満たす場合、案内データの送信を完了できると判断する。本判定式を満たさない場合、案内データの送信を完了できないと判断する。
【００８４】
［ステップＳ２５］判定部１４１は、案内データを送信部１４２に出力する。送信部１４２は、判定部１４１から取得した案内データに基づいて送信データ２０ｂを生成し、証券会社サーバ２００，３００，４００に送信する。ここで、本送信データは分割データを送信するものではないので、送信データフォーマット２０における全サイズフィールド２３および分割サイズフィールド２４に対応する値は等しくなる。
【００８５】
［ステップＳ２６］判定部１４１は、案内データに基づいて未送信データ管理テーブル１４４ａを生成し、記憶部１４４に格納する。分割処理部１４５は、記憶部１４４に格納された未送信データ管理テーブル１４４ａを参照して、案内データから分割データを抽出して送信部１４２に出力する。送信部１４２は、分割処理部１４５から取得した分割データを証券会社サーバ２００，３００，４００に送信する。
【００８６】
このようにして、判定部１４１は残り時間ΔＴ内に案内データを送信完了できるか否かを判定し、完了できると判定する場合には、案内データを送信部１４２に出力する。一方、完了できないと判定する場合には、記憶部１４４に案内データを格納する。分割処理部１４５は、記憶部１４４に格納された案内データに基づいて、データの分割を行い送信部１４２に分割データを出力する。
【００８７】
次に、ステップＳ２６に示した分割データの送信処理を詳細に説明する。
図１２は、第２の実施の形態の分割データ送信処理を示すフローチャートである。以下、図１２に示す処理をステップ番号に沿って説明する。
【００８８】
［ステップＳ３１］分割処理部１４５は、分割データのサイズ（分割サイズ）Ｙ３を算出する。分割サイズＹ３は、Ｙ３＝Ｖ１×ΔＴの演算により求めることができる。
［ステップＳ３２］分割処理部１４５は、記憶部１４４に格納された未送信データ管理テーブル１４４ａを参照して、分割サイズＹ３の分割データを抽出する。分割処理部１４５は、例えば未送信データの先頭（案内データの先頭、または前回分割データを抽出後の残データの先頭）から順に分割データを抽出する。分割処理部１４５は、未送信データ管理テーブル１４４ａの残サイズの項目の設定値から、分割サイズＹ３を差し引いて、当該残サイズの項目の設定値を更新する。
【００８９】
［ステップＳ３３］分割処理部１４５は、抽出した分割データを送信部１４２に出力する。送信部１４２は、分割処理部１４５から取得した分割データに基づいて送信データ２０ｂを生成し、証券会社サーバ２００，３００，４００に送信する。
【００９０】
［ステップＳ３４］分割処理部１４５は、ステップＳ３３における分割データの送信後、送信部１４２による株価データの送信完了を待機する。分割処理部１４５は、送信部１４２による株価データの送信完了を検知すると、ステップＳ３５以降の処理を開始する。
【００９１】
［ステップＳ３５］分割処理部１４５は、記憶部１４４に格納された未送信データ管理テーブル１４４ａを参照して残データの残サイズＹ４を取得する。
［ステップＳ３６］分割処理部１４５は、次回株価データ発生までの残り時間ΔＴを算出する。ここで、残り時間ΔＴの算出方法は、図１１で説明したステップＳ２３のΔＴの算出方法と同様である。分割処理部１４５は、演算に必要な前回株価データを送信開始した時刻Ｘ１や通信速度Ｖ１を通信情報取得部１４３あるいは判定部１４１から取得できる。
【００９２】
［ステップＳ３７］分割処理部１４５は、残り時間ΔＴで残データ（サイズＹ４）を送信完了できるか否かを判定する。送信完了できる場合、処理をステップＳ３８に進める。送信完了できない場合、処理をステップＳ３１に進める。なお、具体的な判定の方法は、図１１のステップＳ２４で説明した方法と同様である。すなわち、ΔＴ＞Ｙ４／Ｖ１を満たすか否かを判定する。本判定式を満たす場合、残データの送信を完了できると判断する。本判定式を満たさない場合、残データの送信を完了できないと判断する。
【００９３】
［ステップＳ３８］分割処理部１４５は、記憶部１４４から残データを抽出して送信部１４２に出力する。送信部１４２は、残データ（分割データの最後のデータに相当する）に基づいて送信データ２０ｂを生成し、証券会社サーバ２００，３００，４００に送信する。これにより、証券会社サーバ２００，３００，４００で案内データを復元するために用いる全ての分割データが送信されることになる。
【００９４】
このようにして、分割処理部１４５は、記憶部１４４に未送信データが格納されている場合、送信部１４２による株価データの送信が完了するたびに、記憶部１４４から分割データを取得して送信部１４２に出力する。
【００９５】
次に、証券会社サーバ２００，３００，４００によるデータ受信処理を説明する。以下では、証券会社サーバ２００のデータ受信処理を説明するが、証券会社サーバ３００，４００に関しても証券会社サーバ２００と同様の手順である。
【００９６】
図１３は、データ受信処理を示すフローチャートである。以下、図１３に示す処理をステップ番号に沿って説明する。
［ステップＳ４１］受信部２１０は、取引所サーバ１００からデータを受信する。
【００９７】
［ステップＳ４２］受信部２１０は、受信したデータのデータフォーマットに設定された優先度の設定を参照して、当該データが優先度低（優先度の設定が“０”）のデータであるか否かを判定する。優先度低のデータである場合、処理をステップＳ４３に進める。優先度低のデータでない場合、すなわち、優先度高（優先度の設定が“１”）のデータである場合、処理をステップＳ４７に進める。
【００９８】
［ステップＳ４３］受信部２１０は、受信した案内データが分割データであるか否かを判定する。分割データである場合、処理をステップＳ４４に進める。分割データでない場合、処理をステップＳ４７に進める。ここで、本判定は、受信したデータのデータフォーマットに設定された全サイズおよび残サイズの設定値を比較することで行える。具体的には、全サイズと残サイズとの設定値が等しい場合には、分割データでないと判断する。全サイズと残サイズとの設定値が異なる場合には、分割データであると判断する。
【００９９】
［ステップＳ４４］受信部２１０は、分割データ記憶部２２０に格納された分割データ管理テーブル２２１を参照して、案内データを復元するために用いる全分割データを受信済みであるか否かを判定する。受信済みである場合、処理をステップＳ４６に進める。受信済みでない場合、処理をステップＳ４５に進める。ここで、本判定は分割データ管理テーブル２２１の各レコードに設定された分割サイズの項目の設定値の合計が、全サイズの項目の設定値に等しいか否かによって行える。等しい場合、全分割データを受信済みと判断する。等しくない場合、全分割データを受信済みでないと判断する。
【０１００】
［ステップＳ４５］受信部２１０は、分割データ記憶部２２０に受信データを格納し、分割データ管理テーブル２２１を更新する。そして、処理をステップＳ４１に進める。
［ステップＳ４６］結合部２１１は、分割データ記憶部２２０に格納された分割データを結合して案内データを復元する。
【０１０１】
［ステップＳ４７］受信部２１０は、株価データあるいは案内データを受信キュー２３０にＰＵＴする。
［ステップＳ４８］サービス提供部２４０は、受信キュー２３０に株価データが格納された場合、当該株価データをＧＥＴする。また、サービス提供部２４０は、受信キュー２３０に案内データが格納された場合、当該案内データをＧＥＴする。
【０１０２】
［ステップＳ４９］サービス提供部２４０は、取得した株価データにより顧客にサービスを提供する。また、サービス提供部２４０は、取得した案内データにより顧客にサービスを提供する。
【０１０３】
このようにして、結合部２１１は、案内データを全て復号するために用いる全ての分割データを取得すると、全分割データを結合して案内データを復号する。これにより、証券会社サーバ２００は、取引所サーバ１００から取得した分割データに基づいて、適切に案内データを復元できる。
【０１０４】
次に、以上の処理手順により実行されるデータ送信処理の具体例を説明する。
図１４は、データ送信処理の流れの第１の具体例を示す図である。以下、図１４に示す処理をステップ番号に沿って説明する。ここで、ステップＳ１０１の前から通信制御部１４０は、送信キュー１３０からデータのＧＥＴ待ち状態であるとする。
【０１０５】
［ステップＳ１０１］株価データ生成部１１０は、株価データを生成すると送信キュー１３０に株価データをＰＵＴする。
［ステップＳ１０２］通信制御部１４０は、送信キュー１３０に格納された株価データをＧＥＴする。
【０１０６】
［ステップＳ１０３］通信制御部１４０は、株価データを証券会社サーバ２００に送信する。証券会社サーバ２００は、通信制御部１４０から株価データを受信する。このとき、通信制御部１４０は、送信開始時刻Ｘ１と送信完了時刻Ｘ２とを取得する。更に、各時刻と送信した株価データのサイズＹ１とに基づいて、回線の通信速度Ｖ１を算出する。
【０１０７】
［ステップＳ１０４］通信制御部１４０は、送信キュー１３０からデータのＧＥＴ待ち状態となる。
［ステップＳ１０５］案内データ生成部１２０は案内データを生成すると送信キュー１３０に案内データをＰＵＴする。
【０１０８】
［ステップＳ１０６］通信制御部１４０は、送信キュー１３０に格納された案内データをＧＥＴする。
［ステップＳ１０７］通信制御部１４０は、ステップＳ１０３で取得した送信開始時刻Ｘ１や通信速度Ｖ１に基づいて、次の株価データが発生するまでの残り時間ΔＴ内に案内データの送信を完了できるか否か判定する。ここでは、送信を完了できないと判定したとする。すると、通信制御部１４０は、案内データからΔＴ内に送信できる分割サイズＹ３を算出する。通信制御部１４０は、分割サイズＹ３の分割データを抽出して証券会社サーバ２００に送信する。証券会社サーバ２００は、通信制御部１４０から分割データを受信する。
【０１０９】
［ステップＳ１０８］通信制御部１４０は、送信キュー１３０からデータのＧＥＴ待ち状態となる。
［ステップＳ１０９］株価データ生成部１１０は、株価データを生成すると送信キュー１３０に株価データをＰＵＴする。
【０１１０】
［ステップＳ１１０］通信制御部１４０は、送信キュー１３０に格納された株価データをＧＥＴする。
［ステップＳ１１１］通信制御部１４０は、株価データを証券会社サーバ２００に送信する。証券会社サーバ２００は、通信制御部１４０から株価データを受信する。このとき、通信制御部１４０は、送信開始時刻Ｘ１と送信完了時刻Ｘ２とを取得する。更に、各時刻と送信した株価データのサイズＹ１とに基づいて、回線の通信速度Ｖ１を算出する。
【０１１１】
［ステップＳ１１２］通信制御部１４０は、送信キュー１３０から株価データのＧＥＴ待ち状態となる。
［ステップＳ１１３］通信制御部１４０は、株価データの送信が完了すると、ステップＳ１０７で送信しきれていない案内データの残データのサイズＹ４を取得する。通信制御部１４０は、次の株価データが発生するまでの残り時間ΔＴ内に残データの送信を完了できるか否か判定する。ここでは、送信を完了できないと判定したとする。すると、通信制御部１４０は、残データからΔＴ内に送信できる分割サイズＹ３を再度算出する。通信制御部１４０は、分割サイズＹ３の分割データを抽出して証券会社サーバ２００に送信する。証券会社サーバ２００は、通信制御部１４０から分割データを受信する。
【０１１２】
このようにして、通信制御部１４０は株価データを送信する合間に不定期に発生する案内データを分割して送信できる。このとき、株価データの送信が完了する都度、残り時間ΔＴ内に送信できる分割サイズＹ３を算出する。このため、たとえ取引所サーバ１００による株価データの送信遅延が発生した場合にも、次回株価データが発生する前に、適切に分割データの送信を完了できる。
【０１１３】
図１５は、データ通信方法の第１の具体例を示す図である。通信制御部１４０は、株価データ４１０，４２０，４３０，４４０を周期Ｔで順次送信する。通信制御部１４０は、案内データを分割した分割データ５１０，５２０，５３０を株価データ４１０，４２０，４３０，４４０の送信の合間に順次送信する。
【０１１４】
図１５中、株価データ４１０，４２０，４３０，４４０および分割データ５１０，５２０，５３０が重なる各矢印は、各データの送信方向（取引所サーバ１００から証券会社サーバ２００へ向かう方向）を示している。
【０１１５】
ここで、所要時間ＴＮ１は、株価データ４１０を送信するための所要時間である。所要時間ＴＮ２は、株価データ４２０を送信するための所要時間である。所要時間ＴＮ３は、株価データ４３０を送信するための所要時間である。所要時間ＴＮ１は、株価データ４１０の送信開始時間から送信完了時間の間に経過した時間として求められる。所要時間ＴＮ２，ＴＮ３に関しても同様である。
【０１１６】
また、残り時間ΔＴ１は案内データが発生してから株価データ４２０が発生するまでの残り時間である。残り時間ΔＴ２は、株価データ４２０の送信を完了してから株価データ４３０が発生するまでの残り時間である。残り時間ΔＴ３は、株価データ４３０の送信を完了してから株価データ４４０が発生するまでの残り時間である。
【０１１７】
図１５の例では、ＴＮ１よりもＴＮ２の方が大きい。すなわち、株価データ４２０の送信に時間を要したことを示している。これは、取引所サーバ１００の処理負荷やネットワーク１０の通信負荷が大きい等の原因による。すると、通信制御部１４０は、株価データ４２０を送信したときの通信速度と、残り時間ΔＴ２によって分割データ５２０の分割サイズＹ３を決定して、残データから分割データ５２０を抽出して送信する。このように、残り時間ΔＴ２に送信できる分割データＹ３を適切に決定するので、株価データ４３０の発生タイミングの前に分割データ５２０の送信を確実に完了できる。このため、株価データの発生後、即座に送信することが可能となり、株価データの送信遅延を低減することができる。
【０１１８】
図１６は、データ通信方法の比較例を示す図である。図１６では、各分割データを固定サイズとして送信する場合を例示している。すなわち、比較例における取引サーバの送信部は、固定サイズの分割データを各証券会社サーバに送信する。
【０１１９】
また、送信部は、取引サーバ上で周期Ｔで発生する株価データ４１０ａ，４２０ａ，４３０ａ，４４０ａを各証券会社サーバに送信する。送信部は株価データ４１０ａ，４２０ａ，４３０ａ，４４０ａの送信の合間に固定サイズの分割データ５１０ａ，５２０ａ，５３０ａを各証券会社サーバに送信する。
【０１２０】
図１６中、株価データ４１０ａ，４２０ａ，４３０ａ，４４０ａおよび分割データ５１０ａ，５２０ａ，５３０ａが重なる各矢印は、各データの送信方向（取引所サーバから証券会社サーバへ向かう方向）を示している。
【０１２１】
このとき、例えば、株価データ４１０ａの送信に所要時間ＴＮ１ａを要し、株価データ４２０ａの送信に所要時間ＴＮ２ａ（ＴＮ２ａ＞ＴＮ１ａ）を要したとする。ここで、所要時間差ＴＮ２ａ−ＴＮ１ａ＝遅延時間ＤＬ１とする。
【０１２２】
すると、分割データ５２０ａの送信は株価データ４２０ａの送信完了後に可能となるため、分割データ５２０ａの周期Ｔ内における送信開始のタイミングが、分割データ５１０ａの周期Ｔ内における送信開始のタイミングよりもＤＬ１だけ遅延する。その場合、次に発生する株価データ４３０ａの送信開始のタイミングがＤＬ２（＝ＤＬ１）だけ遅延することになる。
【０１２３】
図１５に示した第２の実施の形態の取引所サーバ１００によれば、分割サイズを株価データの送信を完了する都度算出して、算出した分割サイズの分だけ分割データを抽出するので、株価データ４３０ａの送信開始に生ずる遅延時間ＤＬ２を低減できる。
【０１２４】
また、案内データや分割データの送信後に、次回株価データが送信するまでの残り時間に余裕がある場合がある。その場合、次に送信すべき案内データ等、他の優先度の低いデータがあれば、その残り時間を利用して送信開始してもよい。以下では、そのようなデータ送信処理の具体例を説明する。
【０１２５】
図１７は、データ送信処理の流れの第２の具体例を示す図である。以下、図１７に示す処理をステップ番号に沿って説明する。ここで、ステップＳ１２１の前から通信制御部１４０は、送信キュー１３０からデータのＧＥＴ待ち状態であるとする。また、案内データＤ１の残データが記憶部１４４に格納されているとする。
【０１２６】
［ステップＳ１２１］案内データ生成部１２０は、案内データＤ２を生成すると送信キュー１３０に案内データＤ２をＰＵＴする。
［ステップＳ１２２］通信制御部１４０は、送信キュー１３０から案内データＤ２をＧＥＴする。
【０１２７】
［ステップＳ１２３］通信制御部１４０は、送信キュー１３０からデータのＧＥＴ待ち状態となる。
［ステップＳ１２４］株価データ生成部１１０は、株価データを生成すると送信キュー１３０に株価データをＰＵＴする。
【０１２８】
［ステップＳ１２５］通信制御部１４０は、送信キュー１３０からデータをＧＥＴする。
［ステップＳ１２６］通信制御部１４０は、株価データを証券会社サーバ２００に送信する。証券会社サーバ２００は、通信制御部１４０から株価データを取得する。更に、各時刻と送信した株価データのサイズＹ１とに基づいて、回線の通信速度Ｖ１を算出する。
【０１２９】
［ステップＳ１２７］通信制御部１４０は、送信キュー１３０からデータのＧＥＴ待ち状態となる。
［ステップＳ１２８］通信制御部１４０は、株価データの送信が完了すると、送信しきれていない案内データＤ１の残データのサイズＹ４を取得する。通信制御部１４０は、次に株価データが発生するまでの残り時間ΔＴ内に残データの送信を完了できるか否か判定する。ここでは、送信を完了できると判定したとする。すると、通信制御部１４０は、残データを分割せずに証券会社サーバ２００に送信する。証券会社サーバ２００は、通信制御部１４０から案内データＤ１の残データを受信する。これにより、案内データＤ１を復元するために用いる全ての分割データが証券会社サーバ２００に送信されたこととなる。
【０１３０】
［ステップＳ１２９］通信制御部１４０は、案内データＤ１に係る分割データの送信が完了すると、ステップＳ１２１でＧＥＴした案内データＤ２の送信を試みる。すなわち、ステップＳ１２８と同様にして、次に株価データが発生するまでの残り時間ΔＴ内に案内データＤ２の送信を完了できるか否か判定する。ここで、ステップＳ１２９では、ステップＳ１２８の時点よりも時間が経過しているため、ステップＳ１２８よりもΔＴは小さくなっている。当該判定につき、本ステップでは完了できないと判定したとする。すると、通信制御部１４０は、案内データＤ２からΔＴ内に送信できる分割サイズＹ３を算出する。通信制御部１４０は、案内データＤ２から分割サイズＹ３の分割データを抽出して、証券会社サーバ２００に送信する。証券会社サーバ２００は、通信制御部１４０から案内データＤ２の分割データを受信する。
【０１３１】
［ステップＳ１３０］株価データ生成部１１０は、株価データを生成すると送信キュー１３０にＰＵＴする。
［ステップＳ１３１］通信制御部１４０は、送信キュー１３０から株価データをＧＥＴする。
【０１３２】
［ステップＳ１３２］通信制御部１４０は、株価データを証券会社サーバ２００に送信する。証券会社サーバ２００は、通信制御部１４０から株価データを取得する。更に、各時刻と送信した株価データのサイズＹ１とに基づいて、回線の通信速度Ｖ１を算出する。
【０１３３】
［ステップＳ１３３］通信制御部１４０は、送信キュー１３０からデータのＧＥＴ待ち状態となる。
［ステップＳ１３４］通信制御部１４０は、株価データの送信が完了すると、ステップＳ１２９で送信しきれていない案内データＤ２の残データのサイズＹ４を取得する。通信制御部１４０は、次の株価データが発生するまでの残り時間ΔＴ内に残データの送信を完了できるか否か判定する。ここでは、送信を完了できないと判定したとする。すると、通信制御部１４０は、残データからΔＴ内に送信できる分割サイズＹ３を再度算出する。通信制御部１４０は、分割サイズＹ３の分割データを抽出して証券会社サーバ２００に送信する。証券会社サーバ２００は、通信制御部１４０から案内データＤ２の分割データを受信する。
【０１３４】
このようにして、通信制御部１４０は、案内データＤ１の分割データを全部送信する前に、案内データＤ２が発生した場合にも、案内データＤ１の最後の分割データの送信に続けて、案内データＤ２の送信を開始できる。
【０１３５】
図１８は、データ通信方法の第２の具体例を示す図である。通信制御部１４０は、株価データ４１０，４２０，４３０，４４０を周期Ｔで順次送信する。通信制御部１４０は、案内データＤ１を分割した分割データ６１０，６２０、および、案内データＤ２を分割した分割データ７１０，７２０を株価データ４１０，４２０，４３０，４４０の送信の合間に順次送信する。
【０１３６】
図１８中、株価データ４１０，４２０，４３０，４４０および分割データ６１０，６２０，７１０，７２０が重なる各矢印は、各データの送信方向（取引所サーバ１００から証券会社サーバ２００へ向かう方向）を示している。
【０１３７】
ここで、案内データＤ２は、案内データＤ１の分割データ６１０，６２０を全て送信する前に案内データ生成部１２０によって生成されており、記憶部１４４に格納されているとする。
【０１３８】
また、残り時間ΔＴ４は案内データＤ１が発生してから株価データ４２０が発生するまでの残り時間である。残り時間ΔＴ５は株価データ４２０の送信を完了してから株価データ４３０が発生するまでの残り時間である。残り時間ΔＴ６は、分割データ６２０の送信を完了してから株価データ４３０が発生するまでの残り時間である。残り時間ΔＴ７は、株価データ４３０の送信を完了してから株価データ４４０が発生するまでの残り時間である。
【０１３９】
図１８の例では、分割データ６２０により案内データＤ１を復元するために用いる全ての分割データの送信が完了する。分割データ６２０の送信完了後、株価データ４３０が発生するまでに残り時間ΔＴ６がある。この場合、通信制御部１４０は、残り時間ΔＴ６内に案内データＤ２の送信を完了できるか否か判定する。通信制御部１４０は、案内データＤ２を残り時間ΔＴ６内に送信完了できないと判定する。すると、通信制御部１４０は、残り時間ΔＴ６内で送信できる分割サイズＹ３で案内データＤ２から分割データ７１０を抽出し送信する。その後、通信制御部１４０は、株価データ４３０が発生する前に分割データ７１０の送信を完了する。そして、通信制御部１４０は、株価データ４３０の送信が完了すると、案内データＤ２につき残り時間ΔＴ７内で送信完了できる分割サイズＹ３で案内データＤ２から分割データ７２０を抽出し送信する。
【０１４０】
このように、残り時間ΔＴ５内に分割データ６２０を送信後、残り時間ΔＴ６がある場合には、ΔＴ６内に送信できる分だけ次に発生した案内データＤ２から分割データを抽出して送信する。このため、優先度の高い株価データの送信遅延を低減しつつ、優先度の低い案内データＤ２の送信を効率的に行える。
【０１４１】
なお、上述の説明では、株価データ生成部１１０および案内データ生成部１２０は単一の送信キュー１３０に各部が生成したデータをＰＵＴすることとした。ただし、株価データ生成部１１０が株価データをＰＵＴするための送信キューを別個に設けてもよい。同様に、案内データ生成部１２０が案内データをＰＵＴするための送信キューを別個に設けてもよい。
【０１４２】
また、通信情報取得部１４３による通信速度の測定は、送信部１４２による株価データの送信の都度行うこととしたが、数回（例えば、５回）の送信に１回の頻度で行ってもよい。あるいは、取引所サーバ１００の負荷（例えば、ＣＰＵ利用率やメモリ利用率等）を監視して、高負荷（例えば、ＣＰＵ利用率やメモリ利用率等が所定の閾値よりも高い状態）となった場合に、通信速度を測定するようにしてもよい。
【０１４３】
以上で説明したよう取引所サーバ１００によれば、優先度の高いデータの送信周期と重ならないタイミングで優先度の低いデータの送信を行えるよう、優先度の低いデータを分割して送信する。このとき、優先度の低いデータの分割サイズを優先度の高いデータの送信を完了する都度算出して、優先度の低いデータから当該分割サイズの分割データを抽出し、送信する。
【０１４４】
このため、次に優先度の高いデータが発生するまでに分割データの送信を確実に完了できる。よって、優先度の高いデータの発生後、即座に優先度の高いデータの送信を開始できるので、優先度の高いデータの送信遅延を低減できる。このような機能は、取引所サーバ１００と証券会社サーバ２００，３００，４００との間で共有する株価データ等、高いリアルタイム性が要求されるデータを優先度の高いデータとして適用する場合に特に有効である。
【０１４５】
また、取引所サーバ１００の負荷や通信負荷によって、優先度の高いデータの送信に遅延が発生する場合にも、次に優先度の高いデータが発生するまでに送信完了できるサイズの分割データを送信する。このため、取引所サーバ１００の負荷や通信負荷に依らずに、次に発生する優先度の高いデータの送信開始タイミングの遅延を抑制できる。
【０１４６】
更に、取引所サーバ１００によれば、優先度の低いデータ（分割する場合および分割しない場合を含む）の送信後に、次回優先度の高いデータが発生するまでの残り時間がある場合、優先度の低いデータを続けて送信できる。この場合にも、残り時間内に優先度の低いデータを全て送信完了できるか否かの判定を行い、送信完了できる場合には、当該データの全部を送信する。一方、送信完了できない場合には、当該データを分割して送信する。このように、残り時間がある場合には、次に送信すべき優先度の低いデータの送信を続けて開始できるので、優先度の高いデータの送信遅延を低減しながら、優先度の低いデータの送信を効率的に行える。
【０１４７】
また、単一の回線において優先度の高いデータの送信遅延を低減できるので、複数回線を敷設、契約等するコストを抑えることができる。
［第３の実施の形態］
次に、第３の実施の形態について説明する。前述の第２の実施の形態との差異を主に説明し、共通の事項に関しては説明を省略する。
【０１４８】
第３の実施の形態では、小売店の各店舗の売上を管理する店舗管理システムに第１の実施の形態の通信装置１を適用する場合を例示する。店舗管理システムでは、各店舗に設置された店舗サーバからの売上データを定期的にリアルタイムに取得したいという要求がある。一方で、各店舗を管理する本部サーバから各店舗に値引データ等のデータを不定期に配信したいという要求がある。
【０１４９】
そこで、第３の実施の形態では、このような店舗管理システムにおいて、売上データの受信遅延を低減する機能を提供する。
図１９は、第３の実施の形態の店舗管理システムの全体構成を示す図である。この店舗管理システムは、本部サーバ１００ａおよび店舗サーバ２００ａ，３００ａ，４００ａを有する。本部サーバ１００ａはネットワーク１０を介して店舗サーバ２００ａ，３００ａ，４００ａと接続されている。ここで、本部サーバ１００ａと店舗サーバ２００ａ，３００ａ，４００ａとは単一の回線で接続されている。
【０１５０】
本部サーバ１００ａは、地域の店舗を管理する小売業者の拠点で管理されるサーバコンピュータである。本部サーバ１００ａは、店舗サーバ２００ａ，３００ａ，４００ａから売上データを受信する。売上データは、小売業者の資金運用を効率的に行うために、本部サーバ１００ａおよび店舗サーバ２００ａ，３００ａ，４００ａの間の同期に高いリアルタイム性を要求されるデータである。また、本部サーバ１００ａは、店舗サーバ２００ａ，３００ａ，４００ａに対して値引データや各種通知メッセージの配信を行う。値引データや通知メッセージは、本部および各店舗の間での同期に高いリアルタイム性を要しないものである。このため、売上データの受信は、値引データや各種通知メッセージの送信に比べて優先度が高い。
【０１５１】
店舗サーバ２００ａ，３００ａ，４００ａは、各店舗における商品の売り上げを管理するサーバコンピュータである。
ここで、店舗サーバ２００ａ，３００ａ，４００ａは、売上データを定期的に生成する。各サーバにおける売上データの生成の時間間隔は、例えば３分である。店舗サーバ２００ａ，３００ａ，４００ａは、例えば１分間の時間差で本部サーバ１００ａに売上データを送信する。このため、本部サーバ１００ａは、店舗サーバ２００ａ，３００ａ，４００ａから１分間隔で売上データを受信する。具体的には、店舗サーバ２００ａが売上データを送信した１分後に店舗サーバ３００ａが売上データを送信する。店舗サーバ３００ａが売上データを送信した１分後に店舗サーバ４００ａが売上データを送信する。店舗サーバ４００ａが売上データを送信した１分後に店舗サーバ２００ａが売上データを送信する。このように、本部サーバ１００ａが店舗サーバ２００ａ，３００ａ，４００ａから売上データを受信する周期（本例では１分間）をＴとする。
【０１５２】
また、本部サーバ１００ａは、値引データや通知メッセージを不定期に生成する。この店舗管理システムでは、本部サーバ１００ａにおける優先度の高い売上データの受信と、本部サーバ１００ａが生成し優先度の低い値引データ等の送信とを、単一の回線で効率的に送信する仕組みが求められる。以下では、そのような本部サーバ１００ａの構成を更に詳細に説明する。
【０１５３】
ここで、以下では優先度の高いデータの一例として売上データを、優先度の低いデータの一例として値引データを挙げて説明する。ただし、優先度の高いデータ、優先度の低いデータには、これらに限らず種々のものが考えられる。
【０１５４】
なお、本部サーバ１００ａおよび店舗サーバ２００ａ，３００ａ，４００ａのハードウェア構成は、図３で説明した第２の実施の形態の取引所サーバ１００のハードウェア構成と同様であるため説明を省略する。
【０１５５】
図２０は、第３の実施の形態の本部サーバの構成を示すブロック図である。本部サーバ１００ａは、送信データ生成部１１０ａ、送信キュー１３０、通信制御部１４０ａ、受信キュー１５０および受信データ処理部１６０を有する。これらのユニットの機能は、本部サーバ１００ａのＣＰＵが所定のプログラムを実行することにより、本部サーバ１００ａ上に実現される。特に、通信制御部１４０ａの機能は、本部サーバ１００ａのＣＰＵが通信プログラムを実行することにより実現される。
【０１５６】
送信データ生成部１１０ａは、店舗サーバ２００ａ，３００ａ，４００ａに送信する値引データを不定期に生成する。値引データは、各店舗の各商品の値引率や値引額を指定する情報である。送信データ生成部１１０ａは、生成した値引データを送信キュー１３０に格納する。
【０１５７】
送信キュー１３０は、図４において説明した第２の実施の形態の送信キュー１３０に対応する。
通信制御部１４０ａは、店舗サーバ２００ａ，３００ａ，４００ａとの間のデータ通信を制御する。通信制御部１４０ａは、判定部１４１ａ、送受信部１４２ａ、通信情報取得部１４３ａ、記憶部１４４および分割処理部１４５ａを有する。
【０１５８】
判定部１４１ａは、送信キュー１３０に格納された値引データをＦＩＦＯの手順により取り出す（ＧＥＴ）。判定部１４１ａは、取り出した値引データのサイズに基づいて、次に売上データを受信するまでの間に店舗サーバ２００ａ，３００ａ，４００ａに対する値引データ全体の送信を完了できるか否かを判定する。判定部１４１ａは、完了できると判定すると、値引データ全体を送受信部１４２ａに出力する。一方、完了できないと判定すると、記憶部１４４に値引データを格納する。判定部１４１ａは、当該判定処理に用いる情報を通信情報取得部１４３ａから取得できる。
【０１５９】
送受信部１４２ａは、判定部１４１ａから値引データを取得すると、値引データを店舗サーバ２００ａ，３００ａ，４００ａに送信する。送受信部１４２ａは、分割処理部１４５ａから分割データを取得すると、分割データを店舗サーバ２００ａ，３００ａ，４００ａに送信する。
【０１６０】
送受信部１４２ａは、店舗サーバ２００ａ，３００ａ，４００ａから定期的に売上データを受信する。送受信部１４２ａは、売上データを受信すると、その受信開始時刻、受信完了時刻およびデータサイズを通信情報取得部１４３ａに出力する。また、送受信部１４２ａは、受信した売上データを受信キュー１５０に格納（ＰＵＴ）する。
【０１６１】
通信情報取得部１４３ａは、送受信部１４２ａから取得する売上データの受信開始時刻、送信完了時刻およびデータサイズに基づいて、送受信部１４２ａによるデータ通信速度を計測する。通信情報取得部１４３ａは、取得した受信開始時刻および通信速度等の情報を判定部１４１ａに出力する。
【０１６２】
記憶部１４４は、図４において説明した第２の実施の形態の記憶部１４４に対応する。すなわち、記憶部１４４は、未送信データを記憶する。未送信データには、判定部１４１ａにより記憶部１４４に格納される値引データが含まれる。また、未送信データには、送信済みの分割データを除く未送信部分の残データが含まれる。
【０１６３】
分割処理部１４５ａは、記憶部１４４に格納された値引データから、次に売上データが発生するまでの間に送信できるサイズの分だけ分割データを抽出し、送受信部１４２ａに出力する。分割処理部１４５ａは、記憶部１４４に残データが格納されている場合には、送受信部１４２ａによる売上データの受信が完了するたびに、次に売上データが発生するまでの間に送信できるサイズの分だけ分割データを抽出し、送受信部１４２ａに出力する。
【０１６４】
受信キュー１５０は、送受信部１４２ａが受信したデータを順次格納するための記憶部である。受信キュー１５０には、送受信部１４２ａにより受信データ処理部１６０が扱う売上データが格納される。
【０１６５】
受信データ処理部１６０は、受信キュー１５０に格納された売上データを取得する（ＧＥＴ）。そして、受信データ処理部１６０は、取得した売上データを集計して各種運用を行う。
【０１６６】
なお、店舗サーバ２００ａ，３００ａ，４００ａにおいて、本部サーバ１００ａから値引データおよび分割データを受信する構成および分割データを受信する場合に分割データから値引データを復元する構成は、図５で説明した第２の実施の形態の証券会社サーバ２００のユニット構成と同様である。ただし、店舗サーバ２００ａ，３００ａ，４００ａは、定期的に売上データを生成して本部サーバ１００ａに送信する点が異なる。証券会社サーバ２００の構成に加えて店舗サーバ２００ａ，３００ａ，４００ａは、売上データを定期的に生成するデータ生成部および売上データを本部サーバ１００ａに送信する送信部を有している。
【０１６７】
次に以上のような構成の本部サーバ１００ａのデータ送受信処理の手順を説明する。
図２１は、第３の実施の形態のデータ受信処理を示すフローチャートである。以下、図２１に示す処理をステップ番号に沿って説明する。
【０１６８】
［ステップＳ５１］送受信部１４２ａは、売上データの受信を開始する。
［ステップＳ５２］送受信部１４２ａは、通信情報取得部１４３ａに受信開始時刻Ｘ３および売上データのサイズＹ１１を出力する。
【０１６９】
［ステップＳ５３］送受信部１４２ａは、売上データの受信を完了する。
［ステップＳ５４］送受信部１４２ａは、受信完了時刻Ｘ４を通信情報取得部１４３ａに出力する。
【０１７０】
［ステップＳ５５］通信情報取得部１４３ａは、通信速度Ｖ２を算出する。具体的には、Ｖ２＝Ｙ１１／（Ｘ４−Ｘ３）の演算によりＶ２を算出できる。Ｖ２の単位は、例えばｂｐｓである。
【０１７１】
［ステップＳ５６］通信情報取得部１４３ａは、受信開始時刻Ｘ３および通信速度Ｖ２を判定部１４１ａに出力する。判定部１４１ａは、通信情報取得部１４３ａから受信開始時刻Ｘ３および通信速度Ｖ２を取得する。
【０１７２】
［ステップＳ５７］送受信部１４２ａは、受信キュー１５０に売上データをＰＵＴする。
［ステップＳ５８］受信データ処理部１６０は、受信キュー１５０に格納された売上データをＧＥＴする。
【０１７３】
［ステップＳ５９］受信データ処理部１６０は、ＧＥＴした売上データに基づく所定の処理を行う。
このように、通信情報取得部１４３ａは、送受信部１４２ａによる売上データの受信が行われるたびに、店舗サーバ２００ａ，３００ａ，４００ａとの間の通信速度を算出し、判定部１４１ａに出力する。
【０１７４】
なお、通信速度の算出は、売上データを複数回受信するごとに１回算出してもよい。例えば、売上データを５回受信するごとに１回としてもよい。
図２２は、第３の実施の形態のデータ送信処理を示すフローチャートである。以下、図２２に示す処理をステップ番号に沿って説明する。
【０１７５】
［ステップＳ６１］判定部１４１ａは、送信キュー１３０から値引データをＧＥＴする。
［ステップＳ６２］判定部１４１ａは、前回売上データの受信開始時刻からの経過時間τを取得する。経過時間τは、現在時刻をτ０として、τ＝τ０−Ｘ３の演算により求めることができる。
【０１７６】
［ステップＳ６３］判定部１４１ａは、値引データのサイズＹ１２を取得する。
［ステップＳ６４］判定部１４１ａは、次回売上データ受信までの残り時間ΔＴを算出する。残り時間ΔＴは、ΔＴ＝Ｔ−τの演算により求めることができる。ここで、Ｔは送受信部１４２ａが店舗サーバ２００ａ，３００ａ，４００ａから売上データを受信する周期である。
【０１７７】
［ステップＳ６５］判定部１４１ａは、通信情報取得部１４３ａから取得した通信速度Ｖ２に基づいて、残り時間ΔＴで値引データ（サイズＹ１２）を送信完了できるか否かを判定する。送信完了できる場合、処理をステップＳ６６に進める。送信完了できない場合、処理をステップＳ６７に進める。当該判定は、ΔＴ＞Ｙ１２／Ｖ２であるか否かを判定することで行える。すなわち、本判定式を満たす場合、値引データの送信を完了できると判断する。本判定式を満たさない場合、値引データの送信を完了できないと判断する。
【０１７８】
［ステップＳ６６］判定部１４１ａは、値引データを送受信部１４２ａに出力する。送受信部１４２ａは、判定部１４１ａから取得した値引データに基づいて送信データ２０ｂを生成し、店舗サーバ２００ａ，３００ａ，４００ａに送信する。ここで、本送信データは分割データを送信するものではないので、送信データフォーマット２０における全サイズフィールド２３および分割サイズフィールド２４に対応する値は等しくなる。
【０１７９】
［ステップＳ６７］判定部１４１ａは、値引データに基づいて未送信データ管理テーブル１４４ａを生成し、記憶部１４４に格納する。分割処理部１４５ａは、記憶部１４４に格納された未送信データ管理テーブル１４４ａを参照して、値引データから分割データを抽出して送受信部１４２ａに出力する。送受信部１４２ａは、分割処理部１４５ａから取得した分割データを店舗サーバ２００ａ，３００ａ，４００ａに送信する。
【０１８０】
このようにして、判定部１４１ａは残り時間ΔＴ内に値引データを送信完了できるか否かを判定し、完了できると判定する場合には、値引データを送受信部１４２ａに出力する。一方、完了できないと判定する場合には、記憶部１４４に値引データを格納する。分割処理部１４５ａは、記憶部１４４に格納された値引データに基づいて、データの分割を行い送受信部１４２ａに分割データを出力する。
【０１８１】
次に、ステップＳ６７に示した分割データの送信処理を詳細に説明する。
図２３は、第３の実施の形態の分割データ送信処理を示すフローチャートである。以下、図２３に示す処理をステップ番号に沿って説明する。
【０１８２】
［ステップＳ７１］分割処理部１４５ａは、分割データのサイズ（分割サイズ）Ｙ１３を算出する。分割サイズＹ１３は、Ｙ１３＝Ｖ２×ΔＴの演算により求めることができる。
【０１８３】
［ステップＳ７２］分割処理部１４５ａは、記憶部１４４に格納された未送信データ管理テーブル１４４ａを参照して、分割サイズＹ１３の分割データを抽出する。分割処理部１４５ａは、例えば未送信データの先頭（値引データの先頭、または前回分割データを抽出後の残データの先頭）から順に分割データを抽出する。分割処理部１４５ａは、未送信データ管理テーブル１４４ａの残サイズの項目の設定値から、分割サイズＹ１３を差し引いて、当該残サイズの項目の設定値を更新する。
【０１８４】
［ステップＳ７３］分割処理部１４５ａは、抽出した分割データを送受信部１４２ａに出力する。送受信部１４２ａは、分割処理部１４５ａから取得した分割データに基づいて送信データ２０ｂを生成し、店舗サーバ２００ａ，３００ａ，４００ａに送信する。
【０１８５】
［ステップＳ７４］分割処理部１４５ａは、ステップＳ７３における分割データの送信後、送受信部１４２ａによる売上データの受信完了を待機する。分割処理部１４５ａは、送受信部１４２ａによる売上データの受信完了を検知すると、ステップＳ７５以降の処理を開始する。
【０１８６】
［ステップＳ７５］分割処理部１４５ａは、記憶部１４４に格納された未送信データ管理テーブル１４４ａを参照して残データの残サイズＹ１４を取得する。
［ステップＳ７６］分割処理部１４５ａは、次回売上データ受信までの残り時間ΔＴを算出する。ここで、残り時間ΔＴの算出方法は、図２２で説明したステップＳ６４のΔＴの算出方法と同様である。分割処理部１４５ａは、演算に必要な前回売上データを受信開始した時刻Ｘ３や通信速度Ｖ２を通信情報取得部１４３ａあるいは判定部１４１ａから取得できる。
【０１８７】
［ステップＳ７７］分割処理部１４５ａは残り時間ΔＴで残データ（サイズＹ１４）を送信完了できるか否かを判定する。送信完了できる場合、処理をステップＳ７８に進める。送信完了できない場合、処理をステップＳ７１に進める。なお、具体的な判定の方法は、図２２のステップＳ６５で説明した方法と同様である。すなわち、ΔＴ＞Ｙ１４／Ｖ２を満たすか否かを判定する。本判定式を満たす場合、残データの送信を完了できると判断する。本判定式を満たさない場合、残データの送信を完了できないと判断する。
【０１８８】
［ステップＳ７８］分割処理部１４５ａは、記憶部１４４から残データを抽出して送受信部１４２ａに出力する。送受信部１４２ａは、残データ（分割データの最後のデータに相当する）に基づいて送信データ２０ｂを生成し、店舗サーバ２００ａ，３００ａ，４００ａに送信する。これにより、店舗サーバ２００ａ，３００ａ，４００ａで値引データを復元するために用いる全ての分割データが送信されることになる。
【０１８９】
このようにして、分割処理部１４５ａは、記憶部１４４に未送信データが格納されている場合、送受信部１４２ａによる売上データの受信が完了するたびに、記憶部１４４から分割データを取得して送受信部１４２ａに出力する。
【０１９０】
店舗サーバ２００ａ，３００ａ，４００ａは、値引データを復元するために必要な全ての分割データを受信すると、所定のタイミングで各分割データを結合し、値引データを取得する。
【０１９１】
これにより、本部サーバ１００ａは第２の実施の形態と同様の効果を奏することができる。すなわち、本部サーバ１００ａによれば、優先度の高いデータの受信周期と重ならないタイミングで優先度の低いデータの送信を行えるよう、優先度の低いデータを分割して送信する。このとき、優先度の低いデータの分割サイズを優先度の高いデータの受信完了の都度算出して、優先度の低いデータから当該分割サイズの分割データを抽出し、送信する。
【０１９２】
このため、次に優先度の高いデータが発生するまでに分割データの送信を確実に完了できる。よって、優先度の高いデータの発生後、即座に優先度の高いデータの受信を開始できるので、優先度の低いデータの受信遅延を低減できる。このような機能は、本部サーバ１００ａと店舗サーバ２００ａ，３００ａ，４００ａとの間で共有する売上データ等、高いリアルタイム性が要求されるデータを優先度の高いデータとして適用する場合に特に有効である。
【０１９３】
また、本部サーバ１００ａ、店舗サーバ２００ａ，３００ａ，４００ａの負荷や通信負荷によって、優先度の高いデータの受信に遅延が発生する場合にも、次に優先度の高いデータが発生するまでに送信完了できるサイズの分割データを送信する。このため、本部サーバ１００ａ、店舗サーバ２００ａ，３００ａ，４００ａの負荷や通信負荷に依らずに、次に発生する優先度の高いデータの受信開始タイミングの遅延を抑制できる。
【０１９４】
更に、本部サーバ１００ａによれば、優先度の低いデータ（分割する場合および分割しない場合を含む）の送信後に、次回優先度の高いデータが発生するまでの残り時間がある場合、優先度の低いデータを続けて送信できる。この場合にも、残り時間内に優先度の低いデータを全て送信完了できるか否かの判定を行い、送信完了できる場合には、当該データの全部を送信する。一方、送信完了できない場合には、当該データを分割して送信する。
【０１９５】
このように、残り時間がある場合には、次に送信すべき優先度の低いデータの送信を続けて開始できるので、優先度の高いデータの受信遅延を低減しながら、優先度の低いデータの送信を効率的に行える。
【０１９６】
また、単一の回線において優先度の高いデータの受信遅延を低減できるので、複数回線を敷設、契約等に係るコストを抑えることができる。
以上、本発明の通信プログラム、通信装置および通信方法を図示の実施の形態に基づいて説明したが、これらに限定されるものではなく、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。更に、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１９７】
１  通信装置
１ａ  通信手段
１ｂ  判定手段
１ｃ  記憶手段
１ｄ  分割手段
２  情報処理装置
３，４，５  第１の種類のデータ
６  第２の種類のデータ
６ａ，６ｂ，６ｃ  分割データ
【図１】
2012080171.tif 000003
【図２】
2012080171.tif 000004
【図３】
2012080171.tif 000005
【図４】
2012080171.tif 000006
【図５】
2012080171.tif 000007
【図６】
2012080171.tif 000008
【図７】
2012080171.tif 000009
【図８】
2012080171.tif 000010
【図９】
2012080171.tif 000011
【図１０】
2012080171.tif 000012
【図１１】
2012080171.tif 000013
【図１２】
2012080171.tif 000014
【図１３】
2012080171.tif 000015
【図１４】
2012080171.tif 000016
【図１５】
2012080171.tif 000017
【図１６】
2012080171.tif 000018
【図１７】
2012080171.tif 000019
【図１８】
2012080171.tif 000020
【図１９】
2012080171.tif 000021
【図２０】
2012080171.tif 000022
【図２１】
2012080171.tif 000023
【図２２】
2012080171.tif 000024
【図２３】
2012080171.tif 000025