(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024059068
(43)【公開日】2024-04-30
(54)【発明の名称】プログラム、サーバ装置、及びデータストリームの伝送方法
(51)【国際特許分類】
H04L 67/561 20220101AFI20240422BHJP
H04L 67/12 20220101ALI20240422BHJP
H04L 67/06 20220101ALI20240422BHJP
H04L 67/565 20220101ALI20240422BHJP
H04L 67/61 20220101ALI20240422BHJP
H04M 11/00 20060101ALI20240422BHJP
【FI】
H04L67/561
H04L67/12
H04L67/06
H04L67/565
H04L67/61
H04M11/00 301
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2023098485
(22)【出願日】2023-06-15
(62)【分割の表示】P 2023519393の分割
【原出願日】2022-10-17
(71)【出願人】
【識別番号】514143714
【氏名又は名称】株式会社 アプトポッド
(74)【代理人】
【識別番号】110000752
【氏名又は名称】弁理士法人朝日特許事務所
(72)【発明者】
【氏名】岩田 亮介
【テーマコード(参考)】
5K201
【Fターム(参考)】
5K201AA02
5K201BA02
5K201DA02
5K201EC06
5K201ED09
(57)【要約】
【課題】ストリーミング形式による通信中にデータが損失し又はデータの順序が変わっても、データ構造を維持できるようにする。
【解決手段】サーバ装置(30)は、クライアント装置(20A又は20B)とストリーミング形式による通信を行う。ストリーミング形式による通信は、複数のデータグループを含むデータブロックを用いて行われる。複数のデータグループの各々は、データ種別情報と、データ種別情報に対応付けられたデータポイントであってクライアント装置(20A又は20B)において取得されたデータポイントを少なくとも1つ含む。
【選択図】
図2
【特許請求の範囲】
【請求項1】
コンピュータに、
クライアント装置とストリーミング形式による通信を行う通信ステップを実行させるためのプログラムであって、
前記ストリーミング形式による通信は、複数のデータグループを含むデータブロックを用いて行われ、
前記複数のデータグループの各々は、データ種別情報と、前記データ種別情報に対応付けられたデータポイントであって前記クライアント装置において取得されたデータポイントを少なくとも1つ含み、
前記通信ステップは、第1クライアント装置から複数のデータストリームを受信する受信ステップを含み、
前記複数のデータストリームは、異なる送信条件を有し、
前記複数のデータストリームの各々は、当該データストリームの前記送信条件に応じたデータポイントを含む
プログラム。
【請求項2】
前記通信ステップは、第1クライアント装置から複数のデータストリームを受信する受信ステップを含み、
前記複数のデータストリームによって各データストリームに含まれる前記データブロックのデータ量は異なる
請求項1に記載のプログラム。
【請求項3】
前記通信ステップは、第1クライアント装置からデータストリームを受信する受信ステップを含み、
前記データストリームは、送信条件を有し、
前記データストリームに含まれる第1データブロックの受信が確認されない場合には、前記データストリームの前記送信条件によって異なるタイミングで前記第1クライアント装置から前記第1データブロックが再送される
請求項1に記載のプログラム。
【請求項4】
前記通信ステップは、第1クライアント装置からデータストリームを受信する受信ステップと、第2クライアント装置に前記データストリームを送信する送信ステップとを含み、
前記データブロックは、前記第1クライアント装置からの送信順に連続するシーケンス番号を含み、
前記コンピュータと前記第1クライアント装置又は前記第2クライアント装置との間の第1通信経路上におけるデータの欠損は、前記データブロックの受信に応じて返信される確認応答の有無に基づいて判定され、
前記第1クライアント装置から前記コンピュータを介して前記第2クライアント装置に至る第2通信経路上におけるデータの欠損は、前記シーケンス番号を用いて判定される
請求項1に記載のプログラム。
【請求項5】
前記クライアント装置は、前記コンピュータにデータストリームを送信する第1クライアント装置と、前記コンピュータから転送された前記データストリームを受信する第2クライアント装置とを含み、
前記通信ステップは、
前記第1クライアント装置と前記コンピュータとの間の前記通信において、前記データ種別情報と第1エイリアス値との変換に用いられる第1辞書を前記第1クライアント装置に送信する送信ステップと、
前記コンピュータと前記第2クライアント装置との間の前記通信において、前記データ種別情報と第2エイリアス値との変換に用いられる第2辞書を前記第2クライアント装置から受信する受信ステップとを含む
請求項1に記載のプログラム。
【請求項6】
前記通信ステップは、第1クライアント装置から複数のデータストリームを受信する受信ステップを含み、
前記複数のデータストリームは、データ伝送のリアルタイム性を優先する第1送信条件を有する第1データストリームと、データ伝送の完全性を優先する第2送信条件を有する第2データストリームとを含み、
前記コンピュータと前記第1クライアント装置との間の通信経路の帯域幅に応じて前記第1クライアント装置から前記第1データストリームの送信が停止された後、前記送信が再開されると、前記第1データストリームは、前記送信が再開された時点に応じた部位から送信され、
前記帯域幅に応じて前記第1クライアント装置から前記第2データストリームの送信が停止された後、前記送信が再開されると、前記第2データストリームは、前記送信が停止された時点に応じた部位から送信される
請求項1に記載のプログラム。
【請求項7】
前記通信ステップは、第1クライアント装置からデータストリームを受信する受信ステップを含み、
前記コンピュータに、
前記受信ステップにおいて受信された前記データストリームに含まれる前記データブロックに、前記コンピュータと前記第1クライアント装置との間の通信に関する情報を付加する付加ステップ
をさらに実行させるための請求項1に記載のプログラム。
【請求項8】
クライアント装置とストリーミング形式による通信を行う通信手段を備え、
前記ストリーミング形式による通信は、複数のデータグループを含むデータブロックを用いて行われ、
前記複数のデータグループの各々は、データ種別情報と、前記データ種別情報に対応付けられたデータポイントであって前記クライアント装置において取得されたデータポイントを少なくとも1つ含み、
前記通信は、第1クライアント装置からの複数のデータストリームの受信を含み、
前記複数のデータストリームは、異なる送信条件を有し、
前記複数のデータストリームの各々は、当該データストリームの前記送信条件に応じたデータポイントを含む
サーバ装置。
【請求項9】
クライアント装置とストリーミング形式による通信を行う通信ステップを含み、
前記ストリーミング形式による通信は、複数のデータグループを含むデータブロックを用いて行われ、
前記複数のデータグループの各々は、データ種別情報と、前記データ種別情報に対応付けられたデータポイントであって前記クライアント装置において取得されたデータポイントを少なくとも1つ含み、
前記通信ステップは、第1クライアント装置から複数のデータストリームを受信する受信ステップを含み、
前記複数のデータストリームは、異なる送信条件を有し、
前記複数のデータストリームの各々は、当該データストリームの前記送信条件に応じたデータポイントを含む
データストリームの伝送方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、データを伝送する技術に関する。
【背景技術】
【0002】
サーバ装置とクライアント装置間のデータ伝送において、クライアント装置で取得したデータと、セクションの区切りを示すSOS(Start of Section)及びEOS(End of Section)とを含むセクションを作成し、送信する技術が知られている(例えば特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、特許文献1に記載の技術では、セクションが他のセクションとの区切りを示すマーカを用いたデータ構造を有しているため、伝送中にマーカが欠損したり、マーカの順序が変わったりすると、セクション構造が壊れてしまう。セクション構造を維持するには、下位プロトコルでデータの到達保証と順序保証を行う必要があり、データ伝送に制約があった。
【0005】
本開示は、ストリーミング形式による通信中にデータが損失し又はデータの順序が変わっても、データ構造を維持できるようにすることを目的とする。
【課題を解決するための手段】
【0006】
本開示の一態様は、コンピュータに、クライアント装置とストリーミング形式による通信を行う通信ステップを実行させるためのプログラムであって、前記ストリーミング形式による通信は、複数のデータグループを含むデータブロックを用いて行われ、前記複数のデータグループの各々は、データ種別情報と、前記データ種別情報に対応付けられたデータポイントであって前記クライアント装置において取得されたデータポイントを少なくとも1つ含む、プログラムを提供する。
【0007】
前記通信ステップは、第1クライアント装置から複数のデータストリームを受信する受信ステップを含み、前記複数のデータストリームによって各データストリームに含まれる前記データブロックのデータ量は異なってもよい。
【0008】
前記通信ステップは、第1クライアント装置から複数のデータストリームを受信する受信ステップを含み、前記複数のデータストリームは、異なる送信条件を有し、前記複数のデータストリームの各々は、当該データストリームの前記送信条件に応じたデータポイントを含んでもよい。
【0009】
前記通信ステップは、第1クライアント装置からデータストリームを受信する受信ステップを含み、前記データストリームは、送信条件を有し、前記データストリームに含まれる第1データブロックの受信が確認されない場合には、前記データストリームの前記送信条件によって異なるタイミングで前記第1クライアント装置から前記第1データブロックが再送されてもよい。
【0010】
前記通信ステップは、第1クライアント装置からデータストリームを受信する受信ステップと、第2クライアント装置に前記データストリームを送信する送信ステップとを含み、前記データブロックは、前記第1クライアント装置からの送信順に連続するシーケンス番号を含み、前記コンピュータと前記第1クライアント装置又は前記第2クライアント装置との間の第1通信経路上におけるデータの欠損は、前記データブロックの受信に応じて返信される確認応答の有無に基づいて判定され、前記第1クライアント装置から前記コンピュータを介して前記第2クライアント装置に至る第2通信経路上におけるデータの欠損は、前記シーケンス番号を用いて判定されてもよい。
【0011】
前記クライアント装置は、前記コンピュータにデータストリームを送信する第1クライアント装置と、前記コンピュータから転送された前記データストリームを受信する第2クライアント装置とを含み、前記通信ステップは、前記第1クライアント装置と前記コンピュータとの間の前記通信において、前記データ種別情報と第1エイリアス値との変換に用いられる第1辞書を前記第1クライアント装置に送信する送信ステップと、前記コンピュータと前記第2クライアント装置との間の前記通信において、前記データ種別情報と第2エイリアス値との変換に用いられる第2辞書を前記第2クライアント装置から受信する受信ステップとを含んでもよい。
【0012】
前記通信ステップは、第1クライアント装置から複数のデータストリームを受信する受信ステップを含み、前記複数のデータストリームは、データ伝送のリアルタイム性を優先する第1送信条件を有する第1データストリームと、データ伝送の完全性を優先する第2送信条件を有する第2データストリームとを含み、前記コンピュータと前記第1クライアント装置との間の通信経路の帯域幅に応じて前記第1クライアント装置から前記第1データストリームの送信が停止された後、前記送信が再開されると、前記第1データストリームは、前記送信が再開された時点に応じた部位から送信され、前記帯域幅に応じて前記第1クライアント装置から前記第2データストリームの送信が停止された後、前記送信が再開されると、前記第2データストリームは、前記送信が停止された時点に応じた部位から送信されてもよい。
【0013】
前記通信ステップは、第1クライアント装置からデータストリームを受信する受信ステップを含み、前記プログラムは、前記コンピュータに、前記受信ステップにおいて受信された前記データストリームに含まれる前記データブロックに、前記コンピュータと前記第1クライアント装置との間の通信に関する情報を付加する付加ステップをさらに実行させてもよい。
【0014】
本開示の別の態様は、クライアント装置とストリーミング形式による通信を行う通信手段を備え、前記ストリーミング形式による通信は、複数のデータグループを含むデータブロックを用いて行われ、前記複数のデータグループの各々は、データ種別情報と、前記データ種別情報に対応付けられたデータポイントであって前記クライアント装置において取得されたデータポイントを少なくとも1つ含む、サーバ装置を提供する。
【0015】
本開示のさらに別の態様は、クライアント装置とストリーミング形式による通信を行う通信ステップを含み、前記ストリーミング形式による通信は、複数のデータグループを含むデータブロックを用いて行われ、前記複数のデータグループの各々は、データ種別情報と、前記データ種別情報に対応付けられたデータポイントであって前記クライアント装置において取得されたデータポイントを少なくとも1つ含む、データストリームの伝送方法を提供する。
【発明の効果】
【0016】
本開示によれば、ストリーミング形式による通信中にデータが損失し又はデータの順序が変わっても、データ構造を維持することができる。
【図面の簡単な説明】
【0017】
【
図1】一実施形態に係るデータ通信システムの一例を示す図。
【
図2】データ通信システムの機能構成の一例を示す図。
【
図4】クライアント装置のハードウェア構成の一例を示す図。
【
図5】サーバ装置のハードウェア構成の一例を示す図。
【
図6】ストリームの開始処理の一例を示すシーケンスチャート。
【
図9】データストリームを送信する処理の一例を示すシーケンスチャート。
【
図10】データポイントの振り分けの一例を説明する図。
【
図12】チャンクを再送する処理の一例を示すフローチャート。
【
図13】折返し通信経路上のデータの欠損を判断する処理の一例を説明する図。
【
図14】帯域幅に応じてデータの送信量を制限する処理の一例を示すフローチャート。
【発明を実施するための形態】
【0018】
1.構成
図1は、一実施形態に係るデータ通信システム1の一例を示す図である。データ通信システム1は、複数のクライアント装置20と、サーバ装置30とを備える。複数のクライアント装置20は、送信側として機能するクライアント装置20Aと、受信側として機能するクライアント装置20Bとを含む。クライアント装置20Aには、複数のセンサ10が接続されている。複数のクライアント装置20とサーバ装置30とは、ネットワーク40を介して接続されている。ネットワーク40は、例えば移動体通信ネットワーク及びインターネットを含む。
【0019】
センサ10は、一定または任意の不均一な時間間隔で対象を観測し、観測により得られたデータを出力する。例えば観測対象が自動車である場合、センサ10は、アクセルセンサ、ブレーキセンサ、ステアリングセンサ、速度計、エンジンの回転計、燃料噴射量計、温度計、GPS(Global Positioning System)、及びカメラのうち少なくとも一つを含んでもよい。
【0020】
クライアント装置20Aは、センサ10から出力されたデータをストリーミング形式による通信によりリアルタイムにサーバ装置30に送信する。サーバ装置30は、クライアント装置20Aから受信したデータをストリーミング形式による通信によりリアルタイムにクライアント装置20Bに転送する。ここでいう「ストリーミング形式による通信」とは、データストリームを用いて、クライアント装置20と送信と受信との少なくとも一方を行うことである。すなわち、データストリームを用いてストリーミング形式による通信を行う。ここでいう「データストリーム」とは、データが連なる流れをいう。サーバ装置30は、クライアント装置20Bにデータを転送するとともに、このデータを蓄積する。サーバ装置30に蓄積されたデータは、例えば後から観測対象の分析に使用されるため、データの完全性が要求される。クライアント装置20Bは、サーバ装置30から受信したデータをリアルタイムに出力する。このように、サーバ装置30からクライアント装置20Bに転送されたデータは、例えば遠隔監視や遠隔診断、遠隔操作等に用いられ、遠隔地から観測対象の現在の状況を把握し、又は制御するために用いられる。このデータの転送については、欠損を許容しつつ低遅延に伝送する要求(完全性よりもリアルタイム性を優先)や、遅延を許容しつつ欠損無く伝送する要求(リアルタイム性よりも完全性を優先)のように、用途に応じて要求が異なる場合がある。なお、以下の説明では、クライアント装置20Aからサーバ装置30に送信されるデータの流れを「アップストリーム」といい、サーバ装置30からクライアント装置20Bに送信されるデータの流れを「ダウンストリーム」という。
【0021】
図2は、データ通信システム1の機能構成の一例を示す図である。クライアント装置20Aは、開始要求手段201と、取得手段202と、振り分け手段203と、変換手段204と、生成手段205と、送信手段206と、再送手段207と、送信制限手段208として機能する。クライアント装置20Aは、本開示に係る第1クライアント装置の一例である。
【0022】
開始要求手段201は、アップストリーム開始の際に、アップストリームの開始要求をサーバ装置30に送信する。アップストリームにおいて送信されるデータのデータIDにエイリアスの作成を要求する場合、アップストリームの開始要求はエイリアス要求を兼ねる。アップストリームの開始要求がエイリアス要求を兼ねる場合、アップストリームの開始要求には、データIDリストが含まれる。このデータIDリストには、エイリアスの作成対象となるデータIDが含まれる。エイリアスの作成対象となるデータIDが複数ある場合、データIDリストには複数のデータIDが含まれる。各データIDは、データ名とデータタイプとにより構成される。データIDは、データを一意に識別する識別子である。データ名は、データに付与された名称である。データタイプは、データの内容やフォーマットを示す型情報である。データ名及びデータタイプには、任意の文字列が使用される。
【0023】
取得手段202は、複数のセンサ10から出力された複数のデータ列を取得する。データ列は、例えば時系列に沿って並べられたデータ本体の系列である。データ本体は、ペイロードやデータバイナリとも呼ばれ、付加的情報を除いたデータの本体である。例えばアクセルセンサから出力されたデータ列には、データ本体としてアクセルの操作量が含まれる。一つのデータ本体には一つのアクセルの操作量が含まれる。例えば加速度センサから3軸分の加速度が同時に出力される場合のように、一つのセンサ10が複数の値を出力する場合に、一つのデータ本体に複数の値が含まれてもよい。データ列に時刻情報が含まれない場合、取得手段202はデータ列に含まれる各データ本体に時刻情報を付加する。時刻情報は、例えばタイムスタンプであり、データ本体に関連付けられた時刻点を示す。時刻情報は、例えば取得手段202によりデータが取得された時刻を示す。この場合、時刻情報は、観測を開始した日時を基準とした、データが取得された日時までの経過時間で表現されてもよい。また、時刻情報は、データが取得された時刻に限らず、データが生成された時刻やデータが発生した時刻を示すものであってもよい。データ本体と時刻情報とのセットによりデータポイントが構成される。ここでいう「データポイント」とは、ある時刻点に関連付けられたデータをいう。なお、時刻情報はセンサ10側で付加されてもよい。この場合、センサ10から出力されたデータ列は、データ本体と時刻情報とのセットの系列となる。
【0024】
また、取得手段202は、各データポイントにデータIDを付与する。データIDは、データの種別を示す情報であり、本開示に係るデータ種別情報の一例である。なお、データ種別情報は、データIDに限定されず、データの種別を示す情報であれば、センサID等の他の情報であってもよい。データポイントは、厳密には、データ種別情報と、データ本体と、時刻情報とを有する概念であるが、後述するように、効率化のためにデータポイントがデータポイントグループにまとめられるときに個々のデータポイントのデータ種別情報はデータポイントグループのデータ種別情報に集約される。なお、取得手段202は、複数のセンサ10から出力されたデータポイントの全てにデータIDと時刻情報とを付与する必要はなく、一部を破棄してもよい。
【0025】
振り分け手段203は、取得手段202により取得されたデータポイントを設定情報に基づいて複数のデータストリームに振り分ける。複数のデータストリームは、予め定められた異なる送信条件を有する。この実施形態では、送信条件には、そのデータストリームで送信されたデータのサーバ装置30への格納有無や、データブロックの送信頻度や最大データ量、そのデータストリーム上のサービスの特性や性能を表すQoS(Quality of Service)等が含まれる。なお、送信条件はこれらに限らず他の条件が含まれてもよい。QoSには、アンリライアブルと、リライアブルとが含まれる。アンリライアブルは、データが欠損してもよいが遅延なく伝送する条件である。アンリライアブルは、データ伝送の完全性よりもリアルタイム性を優先する送信条件であり、本開示に係る第1送信条件の一例である。リライアブルは、遅延してもよいが欠損なくデータを伝送する条件である。リライアブルは、データ伝送のリアルタイム性よりも完全性を優先する送信条件であり、本開示に係る第2送信条件の一例である。なお、QoSにはアンリライアブルと、リライアブル以外の種別があってもよい。各データストリームには、アンリライアブルとリライアブルを含むいずれかのQoSが定められる。設定情報には、データストリームの送信条件に基づいて、各データポイントの振り分け先が設定されている。この設定情報は、例えばサーバ装置30の管理者により作成され、予めクライアント装置20Aのメモリ22に記憶される。例えば設定情報では、データ伝送にリアルタイム性が要求される制御情報やアナログ信号等、欠損が発生しても前後の値から補完しやすい連続値データの振り分け先は、QoSがアンリライアブルであるデータストリームに設定される。一方、設定情報では、データ伝送に完全性が要求される順序性のある時系列データや、文字列メッセージ等の補完の困難な非連続値データの振り分け先は、QoSがリライアブルであるデータストリームに設定される。なお、振り分けられる複数のデータポイントには、どのデータストリームにも振り分けられないものがあってもよい。
【0026】
変換手段204は、データポイントに含まれるデータIDをエイリアス値に変換する。エイリアス値は、データ送信時にデータIDの代わりに使用される数値である。アップストリームにおいて、エイリアス値は、クライアント装置20Aからのエイリアス要求に応じてサーバ装置30において割り当てられる。上述したように、データ名及びデータタイプには任意の文字列が使用されるため、これらに代えて数値のエイリアス値を使用することで、データ量が減り、伝送効率を高めることができる。なお、エイリアス値として使用される情報のデータ型は数値に限らず、例えば任意の短い文字列等であってもよい。
【0027】
生成手段205は、データストリームを構成するチャンクを生成する。各データストリームは、複数のチャンクを含む。データストリームは、チャンク単位で送受信、再送等の処理が行われる。チャンクは、本開示に係るデータブロックの一例である。
【0028】
図3は、チャンクのデータ構造の一例を示す図である。各チャンクには、シーケンス番号と、複数のデータポイントグループとが含まれる。シーケンス番号は、クライアント装置20Aからの同一のデータストリームにおける送信順を示す非負整数である。同一のデータストリームに含まれる複数のチャンクには、その送信順に連続するシーケンス番号が付与される。データポイントグループとは、同じデータ種別情報をもつ複数のデータポイントのまとまりをいう。この例では、データポイントグループは、同じデータIDを有するデータポイントのグループである。取得手段202により取得されたデータポイントは、そのデータIDに応じたデータポイントグループに属する。データポイントグループは、本開示に係るデータグループの一例である。各データポイントグループには、データIDと、少なくとも一つのデータポイントとが含まれる。データIDは、対応するデータポイントグループに属するデータポイントを一意に識別する識別子である。上述したように、データIDは、データ名とデータタイプとにより構成される。データポイントは、対応するデータポイントグループに属するデータ本体と時刻情報とのセットである。
【0029】
図2に戻り、送信手段206は、ストリーミング形式による通信により、生成手段205により生成されたチャンクを用いてサーバ装置30にデータストリームを送信する。例えばデータストリームは、連続的な測定値等の継続的に発生するデータであって、タイムスタンプ等の時刻情報を含むデータである。送信手段206は、複数のデータストリームを送信してもよい。送信手段206は、データの到達保証はないがリアルタイム伝送に適したUDP(User Datagram Protocol)や、データの到達保証のあるTCP(Transmission Control Protocol)、WebSocket、到達保証の有無を切り替えられるQUIC等のプロトコルを下位の通信プロトコルとして使用することができる。
【0030】
再送手段207は、送信手段206により送信されたデータストリームに含まれる複数のチャンクのうちサーバ装置30において受信が確認されないチャンクをサーバ装置30に再送する。ただし、再送手段207は、対象のチャンクが属するデータストリームのQoSによって再送のタイミングを異ならせる。再送手段207は、対象のチャンクが属するデータストリームのQoSがアンリライアブルである場合には、後続のチャンクの送信を妨げない所定のタイミング、例えば通信帯域に余裕ができた時やユーザの指示があった時に対象のチャンクを再送する。これは、QoSがアンリライアブルであるデータストリームは、データ伝送にリアルタイム性が要求されるため、チャンクが受信されなかった場合には、そのチャンクを再送することよりも後続のチャンクを遅延なく送信することを優先するのが好ましいためである。一方、再送手段207は、対象のチャンクが属するデータストリームのQoSがリライアブルである場合には、チャンクが受信されなかったことが分かるとすぐに対象のチャンクを再送する。これは、QoSがリライアブルであるデータストリームは、データ伝送に完全性が要求されるため、チャンクが受信されなかった場合には、後続のチャンクと帯域を共有することで後続のチャンクの送信が多少遅延したとしても、全てのチャンクを確実に送信するのが好ましいためである。
【0031】
送信制限手段208は、クライアント装置20Aとサーバ装置30との間の通信経路の帯域幅に応じて、データストリームの送信を停止又は再開させる。送信制限手段208は、クライアント装置20Aとサーバ装置30との間の通信経路の帯域幅が不足する場合には、データストリームの送信を停止させる。その後、クライアント装置20Aとサーバ装置30との間の通信経路の帯域幅の不足が解消された場合には、送信制限手段208は、データストリームの送信を再開させる。ただし、データストリームのQoSによって送信の再開後に送信されるデータの内容は異なる。送信制限手段208は、データストリームのQoSがアンリライアブルである場合、データストリームの送信が再開されると、このデータストリームを送信が再開された時点の最新のチャンクから送信させる。QoSがアンリライアブルであるデータストリームについては、送信が停止されている間に生成されたチャンクはリアルタイムに送信されない。一方、送信制限手段208は、データストリームのQoSがリライアブルである場合、データストリームの送信が再開されると、このデータストリームを送信が停止された時点のチャンクから送信させる。QoSがリライアブルであるデータストリームについては、送信が停止されている間に生成されたチャンクも送信される。
【0032】
サーバ装置30は、エイリアス手段301と、開始応答手段302と、受信手段303と、変換手段304と、付加手段305と、送信手段306と、確認応答手段307として機能する。
【0033】
エイリアス手段301は、クライアント装置20Aからのエイリアス要求に応じて、データIDのエイリアスを作成する。具体的には、エイリアス手段301は、クライアント装置20Aからのエイリアス要求を受けたデータIDに対してエイリアス値を割り当て、データIDと構成するデータ名及びデータタイプとそのエイリアス値とを関連付けてアップストリーム用の辞書322に追加する。アップストリーム用の辞書322は、クライアント装置20Aとサーバ装置30との間の通信において、データIDとエイリアス値との変換に用いられる。また、エイリアス手段301は、後述するように、クライアント装置20Bから送信されたダウンストリーム用の辞書222をメモリ32に記憶させる。ダウンストリーム用の辞書222は、サーバ装置30とクライアント装置20Bとの間の通信において、データIDとエイリアス値との変換に用いられる。
【0034】
開始応答手段302は、アップストリーム開始の際に、クライアント装置20Aから送信されるアップストリームの開始要求に対する応答をクライアント装置20Aに送信する。エイリアス手段301によりデータIDにエイリアスが作成された場合、この応答にはデータIDに対して割り当てられたエイリアス値を含むアップストリーム用の辞書322が含まれる。複数のデータIDのエイリアスが作成された場合、アップストリーム用の辞書322には複数のエイリアス値が含まれる。また、開始応答手段302は、後述するように、クライアント装置20Bからダウンストリームの開始要求が送信されると、このダウンストリームの開始要求を受信し、このダウンストリームの開始要求に対する応答をクライアント装置20Bに送信する。ダウンストリームの開始前にクライアント装置20BによりデータIDのエイリアスが作成された場合、この開始要求にはデータIDに対して割り当てられたエイリアス値を含むダウンストリーム用の辞書222が含まれる。複数のデータIDのエイリアスが作成された場合、ダウンストリーム用の辞書222には複数のエイリアス値が含まれる。
【0035】
受信手段303は、ストリーミング形式による通信により、チャンクを用いてクライアント装置20Aから送信されたデータストリームを受信する。受信手段303は、クライアント装置20Aから送信された複数のデータストリームを受信してもよい。
【0036】
変換手段304は、アップストリーム用の辞書322に基づいて、受信手段303により受信されたデータストリームのチャンクに含まれるエイリアス値をデータIDに変換する。また、変換手段304は、ダウンストリーム用の辞書222に基づいて、クライアント装置20Bに転送するデータストリームのチャンクに含まれるデータIDをエイリアス値に変換する。
【0037】
付加手段305は、受信手段303により受信された複数のデータストリームのうちクライアント装置20Bに転送するデータストリームの各チャンクにアップストリーム情報を付加する。アップストリーム情報は、クライアント装置20Aとサーバ装置30との間のアップストリームの通信に関する情報である。アップストリーム情報は、ダウンストリームによってクライアント装置20Bに転送されるチャンクがアップストリームにおいてどのデータストリームから送信されたかを判別するために用いられる。アップストリーム情報には、セッションIDと、ストリームIDと、送信元のクライアント装置IDとが含まれる。セッションIDは、データストリームが属するセッションを一意に識別する識別子である。ここでいう「セッション」とは、所定のルールでまとめられたデータポイントの集まりをいう。例えば所定のルールの一例として、一つのクライアント装置20によって取得された、時刻情報の基準として共通の日時を有するデータポイントの集まりをセッションとすることができる。ストリームIDは、アップストリームのデータストリームを一意に識別する識別子である。送信元のクライアント装置IDは、データストリームを送信したクライアント装置20を一意に識別する識別子である。
【0038】
送信手段306は、ストリーミング形式による通信により、チャンクを用いてデータストリームをクライアント装置20Bに送信する。送信手段306は、データの到達保証はないがリアルタイム伝送に適したUDPやデータの到達保証のあるTCP(Transmission Control Protocol)、WebSocket、到達保証の有無を切り替えられるQUIC等のプロトコルを下位の通信プロトコルとして使用することができる。
【0039】
確認応答手段307は、チャンクの受信に応じてチャンクの確認応答をクライアント装置20に返信する。確認応答は、チャンクを正常に受信したことを示す情報である。この確認応答には、例えばACK(ACKnowledgement)が用いられる。確認応答手段307は、複数のチャンクの受信の確認応答をまとめて返信してもよい。例えば確認応答手段307は、所定数のチャンクの受信の確認応答をまとめて返信し、又は所定時間毎に少なくとも一のチャンクの受信の確認応答をまとめて返信する。
【0040】
クライアント装置20Bは、エイリアス手段211と、開始要求手段212と、受信手段213と、変換手段214と、出力制御手段215と、欠損判定手段216として機能する。クライアント装置20Bは、本開示に係る第2クライアント装置の一例である。
【0041】
エイリアス手段211は、ダウンストリームにおいて送信されるデータのデータIDのエイリアスを作成する。具体的には、エイリアス手段211は、エイリアスの作成対象となるデータIDに対してエイリアス値を割り当て、そのデータIDを構成するデータ名及びデータタイプとそのエイリアス値とを関連付けてダウンストリーム用の辞書222に追加する。ダウンストリーム用の辞書222は、上述したように、サーバ装置30とクライアント装置20Bとの間の通信において、データIDとエイリアス値との変換に用いられる。
【0042】
開始要求手段212は、ダウンストリーム開始の際に、ダウンストリームの開始要求をサーバ装置30に送信する。エイリアス手段211がデータIDのエイリアスを作成した場合、ダウンストリームの開始要求にはデータIDに割り当てられたエイリアス値を含むダウンストリーム用の辞書322が含まれる。複数のデータIDのエイリアスが作成された場合、ダウンストリーム用の辞書322には複数のエイリアス値が含まれる。また、ダウンストリームの開始要求では、クライアント装置20Bが取得したいデータの種類がサーバ装置30に要求される。サーバ装置30からは、クライアント装置20Aから受信された全てのデータストリームが転送されるわけではなく、クライアント装置20Bからのダウンストリームの開始要求において取得を要求されたデータストリーム以外がサーバ装置30においてフィルタリングされ、クライアント装置20Bから取得を要求されたデータストリームがクライアント装置20Bに転送されることになる。このフィルタリングに用いられるフィルタ要求には、複数のフィルタ定義が含まれる。フィルタ定義には、取得対象のデータの送信元であるクライアント装置20のクライアント装置IDと、取得対象のデータのデータIDとが含まれる。また、フィルタ要求に使用されるデータIDでは、データ名やデータタイプの指定方法として複数のデータ名・データタイプにマッチするワイルドカードが用いられてもよい。
【0043】
受信手段213は、ストリーミング形式による通信により、チャンクを用いてサーバ装置30から送信されたデータストリームを受信する。なお、上述したようにサーバ装置30においてダウンストリームの開始要求に応じたフィルタリングが行われることにより、クライアント装置20Bから要求されていないデータしか含まないチャンクについては、チャンクに含まれる全てのデータポイントグループやデータポイントがフィルタリングされ空となる。このような場合においても、サーバ装置30は空になったチャンクをクライアント装置20Bに送信する。したがって、ダウンストリームにおいて受信手段213により受信されるチャンクは空になる場合がある。このように、空のチャンクを送信するのは、空のチャンクを送信しなかった場合に通信経路上での欠損と見分けがつかなくなるためである。
【0044】
変換手段214は、ダウンストリーム用の辞書222に基づいて、受信手段213により受信されたデータストリームのチャンクに含まれるエイリアス値をデータIDに変換する。
【0045】
出力制御手段215は、受信手段213により受信されたデータストリームをリアルタイムに出力装置25に出力させる。
【0046】
欠損判定手段216は、チャンクに含まれるシーケンス番号を用いて、アップストリームとダウンストリームにより構成されるエンドツーエンドの折返し通信経路上におけるデータの欠損を判定する。この折返し通信経路は、クライアント装置20Aからサーバ装置30を介してクライアント装置20Bに至る通信経路であり、本開示に係る第2通信経路の一例である。上述したように、クライアント装置20Aから送信される際に、同一のデータストリームに含まれる複数のチャンクには、その送信順に連続するシーケンス番号が付与されている。クライアント装置20Bの受信時において、同一のデータストリームに含まれるチャンクのシーケンス番号に欠番がある場合には、折返し通信経路上のいずれかにおいてそのデータストリームのチャンクが欠損したことを示す。したがって、欠損判定手段216は、同一のデータストリームに含まれるチャンクのシーケンス番号に欠番がある場合には、折返し通信経路上においてそのデータストリームに含まれるチャンクが欠損したと判定する。
【0047】
なお、
図2では、クライアント装置20Aがアップストリームの送信側の機能を有し、クライアント装置20Bがダウンストリームの受信側の機能を有する例が示されているが、一つのクライアント装置20がアップストリームの送信側の機能とダウンストリームの受信側の機能とを両方とも有してもよい。
【0048】
図4は、クライアント装置20のハードウェア構成の一例を示す図である。クライアント装置20は、プロセッサ21と、メモリ22と、通信インターフェース23と、入力装置24と、出力装置25とを備える。クライアント装置20の各部はバスを介して接続されている。プロセッサ21は、プログラムを実行することにより各種の演算を行い、クライアント装置20の各部を制御する。プロセッサ21は、例えば一又は複数のCPU(Central Processing Unit)を含む。メモリ22は、クライアントプログラム221を含む各種のプログラム及び各種のデータを記憶する。クライアントプログラム221は、クライアント装置20に上述した機能を実現させるためのプログラムである。メモリ22は、例えばROM(Read Only Memory)、RAM(Random Access Memory)、HDD(Hard Disk Drive)、及びSSD(Solid State Drive)のうち少なくとも一つを含む。通信インターフェース23は、ネットワーク40を介してサーバ装置30とデータ通信を行う。また、通信インターフェース23は、センサ10とデータ通信を行う。入力装置24は、ユーザや外部システムからの入力を受け付ける。入力装置24は、例えばマウス、キーボード、及び操作ボタンのうち少なくとも一つを含む。出力装置25は、各種の情報をユーザや外部システムへ出力する。この出力には、ユーザへの提示、制御に利用するための外部システムへの出力、他のプログラムに連携するための変換処理を含む。出力装置25は、例えば液晶ディスプレイ及び有機EL(Electro luminescence)ディスプレイのうち少なくとも一つを含む。
【0049】
図2に示される振り分け手段203、変換手段204、生成手段205、及び送信制限手段208は、クライアント装置20Aのプロセッサ21がメモリ22に記憶されたクライアントプログラム221を実行することにより実現される。
図2に示される開始要求手段201、取得手段202、送信手段206、及び再送手段207は、クライアント装置20Aのメモリ22に記憶されたクライアントプログラム221を実行するプロセッサ21の制御の下、クライアント装置20Aの通信インターフェース23により実現される。
図2に示されるエイリアス手段211、変換手段214、出力制御手段215、及び欠損判定手段216は、クライアント装置20Bのプロセッサ21がメモリ22に記憶されたクライアントプログラム221を実行することにより実現される。
図2に示される開始要求手段212及び受信手段213は、クライアント装置20Bのメモリ22に記憶されたクライアントプログラム221を実行するプロセッサ21の制御の下、クライアント装置20Bの通信インターフェース23により実現される。
【0050】
図5は、サーバ装置30のハードウェア構成の一例を示す図である。サーバ装置30は、プロセッサ31と、メモリ32と、通信インターフェース33とを備える。サーバ装置30の各部はバスを介して接続されている。サーバ装置30は、本開示に係るコンピュータの一例である。プロセッサ31は、プログラムを実行することにより各種の演算を行い、サーバ装置30の各部を制御する。プロセッサ31は、例えば一又は複数のCPUを含む。メモリ32は、サーバプログラム321を含む各種のプログラム及び各種のデータを記憶する。サーバプログラム321は、サーバ装置30に上述した機能を実現させるためのプログラムである。メモリ32は、例えばROM、RAM、HDD、及びSSDのうち少なくとも一つを含む。通信インターフェース33は、ネットワーク40を介してクライアント装置20とデータ通信を行う。通信インターフェース33は、本開示に係る通信手段の一例である。
【0051】
図2に示されるエイリアス手段301、変換手段304、及び付加手段305は、プロセッサ31がメモリ32に記憶されたサーバプログラム321を実行することにより実現される。
図2に示される開始応答手段302、受信手段303、送信手段306、及び確認応答手段307は、サーバ装置30のメモリ32に記憶されたサーバプログラム321を実行するプロセッサ31の制御の下、通信インターフェース33により実現される。
【0052】
2.動作
2.1 ストリームの開始処理
図6は、ストリームの開始処理の一例を示すシーケンスチャートである。この処理は、アップストリーム又はダウンストリームを開始する際に行われる。ここでは、クライアント装置20Aからサーバ装置30に送信されたデータストリームが、サーバ装置30からクライアント装置20Bに転送されるものとする。まず、アップストリームの開始処理について説明する。
【0053】
ステップS101において、クライアント装置20Aの開始要求手段201は、アップストリームの開始要求をサーバ装置30に送信する。アップストリームにおいて送信されるデータのデータIDについてエイリアスの作成を要求する場合、アップストリームの開始要求には、データIDリストが含まれる。例えばデータIDリストには、データ名「Data001」とデータタイプ「Type001」とにより構成されるデータIDが含まれる。
【0054】
ステップS102において、サーバ装置30のエイリアス手段301は、アップストリームの開始要求がエイリアス要求を兼ねる場合には、このエイリアス要求に応じてアップストリーム用の辞書322を作成し、メモリ32に記憶させる。このように、アップストリームでは、受信側であるサーバ装置30においてアップストリーム用の辞書322の作成が行われる。
【0055】
図7は、アップストリーム用の辞書322の一例を示す図である。辞書322には、データIDのエイリアス値と、そのデータIDを構成するデータ名及びデータタイプとが関連付けて格納される。ここでは、データIDリストには、データ名「Data001」とデータタイプ「Type001」とにより構成されるデータIDが含まれる場合を想定する。まずエイリアス手段301は、このデータIDに対してエイリアス値「001」を割り当てる。続いてエイリアス手段301は、このエイリアス値「001」と、データ名「Data001」と、データタイプ「Type001」とを関連付けて辞書322に追加する。
【0056】
図6に戻り、ステップS103において、サーバ装置30の開始応答手段302は、アップストリームの開始要求に対する応答をクライアント装置20Aに送信する。エイリアス要求に応じてアップストリーム用の辞書322が作成された場合、この応答には作成されたアップストリーム用の辞書322が含まれる。
【0057】
ステップS104において、クライアント装置20Aの開始要求手段201は、サーバ装置30から応答を受信する。これにより、クライアント装置20Aとサーバ装置30との間でアップストリームが開始される。また、応答にアップストリーム用の辞書322が含まれる場合、このアップストリーム用の辞書322はクライアント装置20Aのメモリ22に記憶される。これにより、サーバ装置30とクライアント装置20Aとの双方において、同一のアップストリーム用の辞書322が記憶される。
【0058】
次に、ダウンストリームの開始処理について説明する。なお、
図6に示される例では、アップストリームの開始処理が行われた後にダウンストリームの開始処理が行われているが、これらの処理はどちらが先に行われてもよいし、並行して行われてもよい。
【0059】
ステップS105において、ダウンストリームにおいて送信されるデータのデータIDについてエイリアスを作成する場合、クライアント装置20Bのエイリアス手段211は、ダウンストリーム用の辞書222を作成し、メモリ22に記憶させる。このように、ダウンストリームでは、受信側であるクライアント装置20Bにおいてダウンストリーム用の辞書222の作成が行われる。
【0060】
図8は、ダウンストリーム用の辞書222の一例を示す図である。辞書222には、データIDのエイリアス値と、そのデータIDを構成するデータ名及びデータタイプとが関連付けて格納される。ここでは、データ名「Data001」とデータタイプ「Type001」とにより構成されるデータIDがエイリアスの対象となる場合を想定する。まずエイリアス手段211は、このデータIDに対してエイリアス値「011」を割り当てる。続いてエイリアス手段211は、このエイリアス値「011」と、データ名「Data001」と、データタイプ「Type001」とを関連付けて辞書222に追加する。
【0061】
図6に戻り、ステップS106において、クライアント装置20Bの開始要求手段212は、ダウンストリームの開始要求をサーバ装置30に送信する。クライアント装置20Bによってダウンストリームの開始前にダウンストリーム用の辞書222が作成されていた場合、ダウンストリームの開始要求には作成されたダウンストリーム用の辞書222が含まれる。
【0062】
ステップS107において、サーバ装置30の開始応答手段302は、クライアント装置20Bからダウンストリームの開始要求を受信する。また、ダウンストリームの開始要求にダウンストリーム用の辞書222が含まれる場合、このダウンストリーム用の辞書222はメモリ32に記憶される。これにより、サーバ装置30とクライアント装置20Bとの双方において、同一のダウンストリーム用の辞書222が記憶される。
【0063】
ステップS108において、サーバ装置30の開始応答手段302は、ダウンストリームの開始要求に対する応答をクライアント装置20Bに送信する。サーバ装置30から送信された応答はクライアント装置20Bの開始要求手段212により受信される。これにより、サーバ装置30とクライアント装置20Bとの間でダウンストリームが開始される。
【0064】
2.2 データストリームの送信
図9は、データストリームを送信する処理の一例を示すシーケンスチャートである。
図9に示される処理は、上述したストリームの開始処理が完了した後に行われる。
【0065】
ステップS111において、クライアント装置20Aの取得手段202は、複数のセンサ10から出力された複数のデータ列を取得する。取得手段202は、このデータ列に時刻情報が含まれない場合には、このデータ列に含まれる各データ本体に時刻情報を付加する。この処理の結果、データ列には、データ本体と時刻情報とのセットからなる複数のデータポイントが含まれる。また、取得手段202は、各データポイントにデータIDを付加する。
【0066】
ステップS112において、クライアント装置20Aの振り分け手段203は、メモリ22に記憶された設定情報に基づいて、複数のデータポイントを複数のデータストリームに振り分ける。
【0067】
図10は、データポイントの振り分けの一例を説明する図である。この例では、3つのデータ源51からクライアント装置20Aに3つのデータ列が出力される。これらのデータ源51は、例えばそれぞれ異なるセンサ10である。或いは、データ源51は、複数のセンサ10が接続されたバスであってもよい。続いて3つのデータ源51から出力された3つのデータ列に含まれる各データポイントが設定情報に基づいて4つのデータストリームに振り分けられる。各データストリームには、リライアブルとアンリライアブルを含むいずれかのQoSを含む送信条件が予め定められている。設定情報には、データストリームの送信条件に基づいて、各データポイントの振り分け先が設定されている。
【0068】
一つの例として、アクセルセンサから出力されたデータ及びブレーキセンサから出力されたデータについてはなるべく低遅延でリアルタイムに確認したいが、速度計から出力されたデータはサーバ装置30に格納するだけで足り、GPSから出力されたデータは欠損のない状態で取得し何らかの順次処理を行いたいというユーザの要求がある場合を想定する。この場合、設定情報では、アクセルセンサから出力されたデータ列のデータポイント及びブレーキセンサから出力されたデータ列のデータポイントの振り分け先は、QoSがアンリライアブルであるデータストリームに設定される。一方、設定情報では、GPSから出力されたデータ列のデータポイントの振り分け先は、QoSがリライアブルであるデータストリームに設定される。また、速度計から出力されたデータ列のデータポイントの振り分け先は、いずれのQoSが設定されてもよい。なお、ここでは、説明を簡便にするために、QoSだけに基づいてデータの振り分けが設定されているが、実際には、送信条件にはQoSの他にもサーバ装置30への格納有無等のいくつかの条件があるため、QoSだけでなく他の条件も加味して、データポイントの振り分け先が設定されることになる。
【0069】
他の例において、カメラから動画データが出力される場合を想定する。H.264などの圧縮コーデック形式の動画データには、メタ情報と、キーフレームと、サブフレームとが含まれる。このうち、メタ情報及びキーフレームは、欠損した場合に画質に大きな影響を与えたり、最悪の場合動画のデコードが不可能になったりするがデータの発生頻度は少ないため、欠損なく伝送することを優先するリライアブルでの伝送に適する。一方、サブフレームは、欠損した場合の画質に与える影響は小さいが、データの発生頻度が多く帯域を圧迫しやすいため、欠損を許容してリアルタイム性を優先するアンリライアブルでの伝送に適する。この場合、設定情報では、カメラから出力された動画データのうち、メタ情報及びキーフレームの振り分け先は、QoSがリライアブルであるデータストリームに設定される。一方、設定情報では、カメラから出力された動画データのうち、サブフレームの振り分け先は、QoSがアンリライアブルであるデータストリームに設定される。
【0070】
より具体的には、クライアント装置20Aの振り分け手段203は、データ源51からデータ列が取得されると、このデータ列からデータポイントを取得する。続いて、振り分け手段203は、設定情報において、このデータポイントのデータIDの振り分け先として設定されたデータストリームを選択する。続いて、振り分け手段203は、選択されたデータストリームのバッファに、このデータポイントが属するデータポイントグループのバッファが存在するか否かを判定する。このデータポイントが属するデータポイントグループのバッファが存在する場合、振り分け手段203は、そのバッファにデータポイントを記憶させる。一方、このデータポイントが属するデータポイントグループのバッファが存在しない場合、振り分け手段203は、選択されたデータストリームについて新たなデータポイントグループのバッファを作成し、そのバッファにデータポイントを記憶させる。データポイントがデータポイントグループにまとめられる際に、個々のデータポイントのデータIDは効率化のためにデータポイントグループのデータIDに集約される。すなわち、データIDは、個々のデータポイントからは削除され、データポイントグループに一括して付与される。
【0071】
図9に戻り、ステップS113において、クライアント装置20Aの変換手段204は、メモリ22に記憶されたアップストリーム用の辞書322に基づいて、データポイントグループのデータIDをエイリアス値に変換する。例えばアップストリーム用の辞書322に
図7に示される辞書322のエイリアス値及びデータIDが含まれる場合、変換手段204は、データ名「Data001」とデータタイプ「Type001」とから構成されるデータIDをエイリアス値「001」に変換する。
【0072】
ステップS114において、クライアント装置20Aの生成手段205は、データストリームのチャンクを生成する。
図3に示されるように、チャンクは、シーケンス番号と、複数のデータポイントグループとが含まれる。同一のデータストリームに含まれる複数のチャンクには、その送信順に連続するシーケンス番号が付与される。例えばあるデータストリームにおいて最初に生成されるチャンクにはシーケンス番号「1」が付与される。続いて、同一データストリームにおいて新たなチャンクが生成されるごとに、チャンクに含まれるシーケンス番号は1ずつインクリメントされる。なお、シーケンス番号は所定のルールでインクリメントされる連番であればよく、そのインクリメントの幅は必ずしも1でなくともよい。各データポイントグループには、データIDと、少なくとも一つのデータポイントとが含まれる。生成手段205は、各データストリームのバッファの内容量が所定量を超えた場合、又は前回のチャンクの送信から所定時間が経過した場合、バッファに記憶されたデータポイントグループをチャンクに格納する。なお、チャンクへのデータポイントの格納タイミングは、上述のタイミングに限定されず、例えば前回のチャンク送信からの経過時間が不均一な任意の間隔であったり、ユーザからの指示によってタイミングを任意に決定したりしてもよい。
【0073】
複数のデータストリームには、送信条件によって、異なるチャンクの生成条件が定められている。チャンクの生成条件には、例えばチャンクのサイズが所定量に達した場合や、前回のチャンク生成から所定時間経過した場合等が含まれる。データストリームごとにチャンクの生成条件は異なるため、
図10に示されるように、データストリームによってチャンクに含まれるデータポイントの数、すなわちデータ量は異なる。例えばQoSがリライアブルであるデータストリームの所定量及び所定時間は、QoSがアンリライアブルであるデータストリームの所定量及び所定時間より大きい。これにより、QoSがリライアブルであるデータストリームにおいては、データポイント数が多いチャンクが比較的長い時間間隔で送信される。つまり、QoSがリライアブルであるデータストリームのチャンクは、QoSがアンリライアブルであるデータストリームのチャンクに比べて、データ量が大きく送信間隔が長い。一方、QoSがアンリライアブルであるデータストリームにおいては、データポイント数が少ないチャンクが比較的短い時間間隔で送信される。つまり、QoSがアンリライアブルであるデータストリームのチャンクは、QoSがリライアブルであるデータストリームのチャンクに比べて、データ量が小さく送信間隔が短い。
【0074】
なお、チャンクのサイズがQoSに応じて異なるのは全体としての傾向であり、必ずしもその傾向通りでなくてもよい。例えばリアルタイム性よりも完全性を優先する要求のあるデータを伝送する際にはQoSがリライアブルであるデータストリームが適しており、また、本要求のあるデータの伝送ではチャンクのデータ量を大きく送信間隔を長く設定するのが適している。このため、QoSがリライアブルであるデータストリームでは、チャンクのデータ量が大きく送信間隔が長く設定される傾向が生じるだけであり、QoSがリライアブルであるデータストリームにデータ量が小さく送信間隔が短い送信条件が設定されても構わない。また、
図10に示されるように、同一のストリーム内においてチャンクサイズが異なってもよい。
【0075】
図9に戻り、ステップS115において、クライアント装置20Aの送信手段206は、複数のデータストリームをチャンク毎にサーバ装置30に送信する。送信手段206は、データ列全体の取得を完了する前に、データストリームの送信を開始する。クライアント装置20Aから送信された複数のデータストリームは、サーバ装置30の受信手段303により受信される。
【0076】
図11は、データストリームの送信の一例を示す図である。なお、
図11には、二つのデータストリームだけが示されているが、データストリームは三つ以上あってもよい。送信手段206は、例えばデータの到達保証はないがリアルタイム伝送に適したUDPやデータの到達保証のあるTCP(Transmission Control Protocol)、WebSocket、到達保証の有無を切り替えられるQUIC等のプロトコルを下位の通信プロトコルとして使用することができる。送信手段206は、複数のデータストリームにおいて生成された複数のチャンクを下位の通信プロトコルに従って順番に送信する。このとき、各チャンクに含まれるデータの構成要素は、同一のデータストリームにおいてまとめて送信される。
図3に示されるように、チャンクには、他のチャンクとの区切りを示すマーカは含まれていない。そのため、仮にデータの順序が入れ替わったり、データの一部が欠損したりしても、チャンクの構造は維持される。
【0077】
図9に戻り、ステップS116において、サーバ装置30の変換手段304は、メモリ32に記憶されたアップストリーム用の辞書322に基づいて、受信されたデータストリームのチャンクに含まれるエイリアス値をデータIDに変換する。例えば変換手段304は、
図7に示されるアップストリーム用の辞書322に基づいて、チャンクに含まれるエイリアス値「001」をデータ名「Data001」とデータタイプ「Type001」とから構成されるデータIDに変換する。
【0078】
ここで、各データポイントグループには、データストリームの送信条件によってサーバ装置30が行う処理が予め定められている。サーバ装置30に格納するという処理が定められたデータストリームについては、メモリ32に記憶される。一方、クライアント装置20Bからのダウンストリームの開始要求において取得を要求されたデータストリームについては、クライアント装置20Bに転送されるべく、ステップS117以降の処理が行われる。なお、サーバ装置30が行う処理の内容は、保存やダウンストリームへの転送のみに限定されない。
【0079】
ステップS117において、サーバ装置30の付加手段305は、クライアント装置20Bに転送するデータストリームのチャンクを取得し、取得された各チャンクにアップストリーム情報を付加する。アップストリーム情報には、セッションIDと、ストリームIDと、送信元のクライアント装置IDとが含まれる。
【0080】
ステップS118において、サーバ装置30の変換手段304は、メモリ32に記憶されたダウンストリーム用の辞書222に基づいて、チャンクに含まれるデータIDをエイリアス値に変換する。例えばダウンストリーム用の辞書222に
図8に示されるエイリアス値及びデータIDが含まれる場合、変換手段304は、チャンクに含まれるデータ名「Data001」とデータタイプ「Type001」とから構成されるデータIDをエイリアス値「011」に変換する。
【0081】
図9に戻り、ステップS119において、サーバ装置30の送信手段306は、データストリームをチャンク毎にクライアント装置20Bに送信する。送信手段306は、データストリーム全体の受信を完了する前に、データストリームの送信を開始する。サーバ装置30から送信されたデータストリームは、クライアント装置20Bの受信手段213により受信される。
【0082】
ステップS120において、クライアント装置20Bの変換手段214は、メモリ22に記憶されたダウンストリーム用の辞書222に基づいて、受信されたデータストリームのチャンクに含まれるエイリアス値をデータIDに変換する。例えば変換手段214は、
図8に示されるダウンストリーム用の辞書222に基づいて、チャンクに含まれるエイリアス値「011」をデータ名「Data001」とデータタイプ「Type001」とから構成されるデータIDに変換する。
【0083】
ステップS121において、クライアント装置20Bの出力制御手段215は、データストリームをリアルタイムに出力装置25に出力させる。出力制御手段215は、データストリーム全体の受信を完了する前に、データストリームを出力装置25に出力させ、新たなチャンクが受信されると、そのチャンクに応じて出力装置25の出力内容を更新させる。例えば出力装置25としてディスプレイを用いた場合、アクセルセンサにより計測されたアクセルの操作量、ブレーキセンサにより計測されたブレーキの操作量、GPSにより測位された位置情報等の各センサ10により観測された情報が可視化された映像やグラフが表示される。
【0084】
ステップS122において、サーバ装置30の確認応答手段307は、確認応答を送信する条件を満たすか否かを判定する。確認応答を送信する条件は、例えばチャンクの処理結果が記憶されたバッファの内容量が所定量を超える、又は前回のチャンクの送信から所定時間が経過するという条件である。確認応答手段307は、チャンクの処理結果をバッファに記憶し、このバッファの内容量が所定量を超えた場合、又は前回のチャンクの送信から所定時間が経過した場合、確認応答を送信する条件を満たすと判定する(ステップS122の判定がYES)。この場合、ステップS123において、確認応答手段307は、バッファに記憶された処理結果を含む確認応答をクライアント装置20Aに送信する。これにより、複数のチャンクの受信を示す確認応答がまとめて行われる。一方、確認応答を送信する条件を満たさない場合(ステップS122の判定がNO)、ステップS123の処理はスキップされる。なお、確認応答はチャンクを受信するたびに送信してもよい。また、クライアント装置20Bも、サーバ装置30と同様に、チャンクの受信に対する確認応答をサーバ装置30に送信してもよい。ステップS124において、クライアント装置20Aの再送手段207は、サーバ装置30からの確認応答の有無に基づいて、アップストリームの通信経路上におけるデータの欠損を確認する(詳細は後述)。
【0085】
ステップS125において、クライアント装置20Bの欠損判定手段216は、サーバ装置30から受信されたデータストリームのチャンクに含まれるシーケンス番号及びアップストリーム情報を確認する。ステップS126において、クライアント装置20Bの欠損判定手段216は、このシーケンス番号及びアップストリーム情報に基づいて、折返し通信経路上におけるデータの欠損を確認する(詳細は後述)。
【0086】
ステップS111からS126の処理は、センサ10により対象の観測が行われている間、繰り返される。
【0087】
2.3 再送処理
図12は、クライアント装置20Aがチャンクを再送する処理の一例を示すフローチャートである。この処理は、クライアント装置20Aからサーバ装置30にチャンクが送信される度に開始される。
【0088】
ステップS201において、クライアント装置20Aの再送手段207は、チャンクを送信してから所定時間内にサーバ装置30からそのチャンクの受信を示す確認応答を受信したか否かを判定する。所定時間内にチャンクの受信を示す確認応答が受信された場合(ステップS201の判定がYES)、この処理は終了する。一方、所定時間内にチャンクの受信を示す確認応答が受信されない場合(ステップS201の判定がNO)、再送手段207は、そのチャンクが属するデータストリームのQoSを判定する(ステップS202)。
【0089】
このデータストリームのQoSがリライアブルである場合(ステップS202の判定が「リライアブル」)、ステップS203において、再送手段207は、次のチャンクが送信される前に、確認応答が受信されなかったチャンクを再送する。一方、データストリームのQoSがアンリライアブルである場合(ステップS202の判定が「アンリライアブル」)、ステップS204において、再送手段207は、確認応答が受信されなかったチャンクを所定のタイミングで再送する。この所定のタイミングは、例えば通信帯域に余裕ができた時やユーザの指示があった時等、ステップS203においてチャンクが再送されるタイミングよりも後のタイミングである。データストリームのQoSがアンリライアブルである場合、そのデータストリームのチャンクの再送は、サーバ装置30におけるデータの格納が目的であって、データの転送が目的ではない。したがって、QoSがアンリライアブルであるデータストリームのチャンクの再送には、必ずしも、ストリーミング形式による通信に用いられる通信プロトコルが用いられなくてもよく、異なる通信プロトコルが用いられてもよい。
【0090】
2.4 データの欠損判定
図13は、折返し通信経路上におけるデータの欠損を判断する処理の一例を説明する図である。この例では、クライアント装置20Aから送信されたデータストリーム55及び56及びクライアント装置20Cから送信されたデータストリーム57に含まれていた複数のチャンクがデータストリーム58としてサーバ装置30からクライアント装置20Bに転送され、クライアント装置20Bにおいて受信されるものとする。
【0091】
上述したように、サーバ装置30からクライアント装置20Bに送信されるデータストリーム58の各チャンクにはアップストリーム情報が含まれる。この例では、ダウンストリームにおいてデータストリーム55に含まれていたチャンクのアップストリーム情報には、クライアント装置20Aのクライアント装置IDと、データストリーム55のストリームIDとが含まれる。アップストリームにおいてデータストリーム56に含まれていたチャンクのアップストリーム情報には、クライアント装置20Aのクライアント装置IDと、データストリーム56のストリームIDとが含まれる。アップストリームにおいてデータストリーム57に含まれていたチャンクのアップストリーム情報には、クライアント装置20Cのクライアント装置IDと、データストリーム57のストリームIDとが含まれる。
【0092】
また、
図13に示されるように、各チャンクには、シーケンス番号が含まれる。この例では、データストリーム55に含まれる複数のチャンクには、「1」、「2」、「3」という連続するシーケンス番号が含まれる。同様に、データストリーム56に含まれる複数のチャンクには、「1」、「2」、「3」という連続するシーケンス番号が含まれる。データストリーム57に含まれる複数のチャンクには、「1」、「2」、「3」という連続するシーケンス番号が含まれる。
【0093】
クライアント装置20Bの欠損判定手段216は、サーバ装置30から受信したデータストリーム58のチャンクに含まれるシーケンス番号及びアップストリーム情報に基づいて、折返し通信経路上におけるデータの欠損を判定する。
図13に示される例では、データストリーム55のストリームID及びシーケンス番号「1」を含むチャンクが受信された後、データストリーム55のストリームID及びシーケンス番号「2」を含むチャンクが受信されず、データストリーム55のストリームID及びシーケンス番号「3」を含むチャンクが受信される。このように、データストリーム55に含まれるチャンクのシーケンス番号のうち「2」が欠番になっている場合には、折返し通信経路上において、データストリーム55に含まれるシーケンス番号が「2」のチャンクが欠損したことを示す。この場合、欠損判定手段216は、折返し通信経路上において、クライアント装置20Aから送信されたデータストリーム55に含まれていたシーケンス番号が「2」のチャンクが欠損したと判定する。なお、欠損の判定方法は、あるシーケンス番号が受信されないまま、より大きいシーケンス番号が受信され、欠番となった場合に欠損したと判定する上述の方法に限定されない。例えば、ある所定の時間シーケンス番号の受信を待機し、所定時間内に受信されなかったシーケンス番号を欠損したと判定する方法を用いることもできる。
【0094】
チャンクの欠損が判定されると、例えばクライアント装置20Bは通信品質が低下しているとみなし、フェイルセーフ動作に移行してもよい。或いは、クライアント装置20Bは判定結果をサーバ装置30に通知したり、出力装置25によりユーザに提示したり、前後のチャンクから欠損した値を補完したりしてもよい。
【0095】
上述したように、サーバ装置30は確認応答を行っているため、クライアント装置20Aは、サーバ装置30から返信される確認応答の有無に基づいて、アップストリームの通信経路上におけるデータの欠損を判定することができる。例えばあるチャンクについてサーバ装置30から確認応答の返信がない場合、クライアント装置20Aは、アップストリームの通信経路上においてこのチャンクが欠損したと判定する。また、サーバ装置30も、クライアント装置20Aと同様に、クライアント装置20Bから返信される確認応答の有無に基づいて、ダウンストリームの通信経路上におけるデータの欠損を判定することができる。このアップストリームの通信経路及びダウンストリームの通信経路はいずれも、サーバ装置30とクライアント装置20A又は20Bとの間の通信経路であり、本開示に係る第1通信経路の一例である。
【0096】
しかし、例えばアップストリームの通信経路上においてデータの欠損が発生し、ダウンストリームの通信経路上ではデータの欠損が発生していない場合、上述したダウンストリームの通信経路上におけるデータの欠損を判定する方法では、データの欠損が判定されない。そのため、クライアント装置20Bは、アップストリームの通信経路上においてデータが欠損したことを認識することができない。そこで、クライアント装置20Bは、上述したようにアップストリーム又はダウンストリームの通信経路上におけるデータの欠損を判定する方法とは異なる方法、すなわちシーケンス番号を用いた方法により、折返し通信経路上におけるデータの欠損を判定する。これにより、クライアント装置20Bは、アップストリームの通信経路上においてデータの欠損が発生した場合にも、データの欠損を認識することができる。折返し通信経路は、本開示に係る第2通信経路の一例である。
【0097】
折返し通信経路上におけるデータの欠損をシーケンス番号を用いて判定する方法として、サーバ装置30から所定時間内にあるチャンクの受信を示す確認応答が受信されない場合、クライアント装置20Aがサーバ装置30にこのチャンクの欠損を通知し、サーバ装置30がこのチャンクの欠損をクライアント装置20Bに通知するという方法を用いてもよい。より具体的には、サーバ装置30は、クライアント装置20Aからの通知に応じて、欠損したチャンクが属するストリームのストリームIDとシーケンス番号をクライアント装置20Bに通知する。クライアント装置20Bの欠損判定手段216は、この通知を受信すると、ストリームIDにより示されるデータストリーム内のシーケンス番号に対応するチャンクが欠損したと判定する。このような方法であっても、折返し通信経路上におけるデータの欠損をシーケンス番号を用いて判定することができる。
【0098】
2.5 ストリーム中の辞書の更新
アップストリーム用の辞書322又はダウンストリーム用の辞書222は、それぞれ、アップストリームの通信中又はダウンストリームの通信中に更新されてもよい。まず、アップストリームの通信中にアップストリーム用の辞書322を更新する方法について説明する。この更新を行う場合、クライアント装置20Aから送信されるチャンクがエイリアス要求を兼ねる。チャンクがエイリアス要求を兼ねる場合、チャンクには、データIDリストが付加される。このデータIDリストには、新たにエイリアスの作成対象となるデータIDが含まれる。サーバ装置30のエイリアス手段301は、チャンクがエイリアス要求を兼ねる場合には、このエイリアス要求に応じてデータIDリストに含まれるデータIDに対してエイリアス値を割り当て、このデータIDを構成するデータ名及びデータタイプとそのエイリアス値とを関連付けて辞書322に追加する。また、サーバ装置30からクライアント装置20Aに送信される確認応答に、更新されたアップストリーム用の辞書322が新たに含まれる。確認応答にアップストリーム用の辞書322が含まれる場合には、このアップストリーム用の辞書322がクライアント装置20Aのメモリ22に記憶される。これにより、アップストリームの通信中にアップストリーム用の辞書322を更新することができる。なお、確認応答によりサーバ装置30からクライアント装置20Aに送信されるアップストリーム用の辞書322について、辞書全体を送信する代わりに更新された部分のみを送信してもよい。
【0099】
次に、ダウンストリームの通信中にダウンストリーム用の辞書222を更新する方法について説明する。この更新を行う場合、クライアント装置20Bのエイリアス手段211は、ダウンストリームの通信中に新たにエイリアスの作成対象となるデータIDにエイリアス値を割り当て、このデータIDを構成するデータ名及びデータタイプとそのエイリアス値とを関連付けてダウンストリーム用の辞書222に追加する。また、クライアント装置20Bからサーバ装置30に送信される確認応答に、更新されたダウンストリーム用の辞書222が新たに含まれる。確認応答にダウンストリーム用の辞書222が含まれる場合には、このダウンストリーム用の辞書222がメモリ32に記憶される。これにより、ダウンストリームの通信中にダウンストリーム用の辞書222を更新することができる。なお、アップストリームと同様、確認応答によりクライアント装置20Bからサーバ装置30に送信されるダウンストリーム用の辞書222について、辞書全体を送信する代わりに更新された部分のみを送信してもよい。
【0100】
2.6 帯域幅に応じたデータ送信量の制限
図14は、帯域幅に応じてデータの送信量を制限する処理の一例を示すフローチャートである。この処理は、データストリームの送信中に所定の時間間隔で開始される。また、各データストリームには、予め優先度が付与される。この優先度は、例えばクライアント装置20Aの設定ファイルに記載される。
【0101】
ステップS301において、クライアント装置20Aの送信制限手段208は、クライアント装置20Aの送信要求レートに対するサーバ装置30の受信レートの比(受信レート/送信要求レート)が閾値以下であるか否かを判定する。送信要求レートは、クライアント装置20Aが送信を要求したレートである。受信レートは、サーバ装置30が実際に受信したレートである。受信レートは、所定の時間間隔でサーバ装置30により測定され、クライアント装置20Aに送信される。送信要求レートに対する受信レートの比が閾値以下である場合には、クライアント装置20Aとサーバ装置30との間の通信経路の帯域幅が不足していることを示す。帯域幅の不足の判定には、送信要求レートと受信レートとの比以外に、差(送信要求レート-受信レート)を用いてもよい。
【0102】
送信要求レートに対する受信レートの比が閾値以下である場合(ステップS301の判定がYES)、ステップS302において、クライアント装置20Aの送信制限手段208は、送信中のデータストリームのうち、最も優先度が低いデータストリームの送信を停止させる。ここで、データストリームのQoSがアンリライアブルである場合、データストリームの送信が停止されている間に生成されたチャンクは破棄される。一方、データストリームのQoSがリライアブルである場合、データストリームの送信が停止されている間に生成されたチャンクはクライアント装置20Aのメモリ22上に一時的に記憶される。
【0103】
ステップS302の処理の後、処理はステップS301に戻る。そして、送信要求レートに対する受信レートの比が閾値を超えるまで、ステップS302の処理が繰り返される。これにより、優先度が低いデータストリームから順番に送信が停止される。
【0104】
一方、帯域幅の不足が解消すると、上述したステップS301の判定がNOになる。この場合、ステップS303において、クライアント装置20Aの送信制限手段208は、送信が停止されているデータストリームのうち、最も優先度が高いデータストリームの送信を再開させる。ここで、データストリームのQoSがアンリライアブルである場合、データストリームの送信が再開されると、データストリームは、送信が再開された後に生成されたチャンクから送信される。送信が停止されている間に生成されたチャンクは送信されない。一方、データストリームのQoSがリライアブルである場合、データストリームの送信が再開されると、データストリームは、まずクライアント装置20Aのメモリ22上に記憶された、送信が停止されている間に生成されたチャンクが送信され、続いて再開後に生成されたチャンクが送信される。このように、QoSがリライアブルであるデータストリームについては、送信が停止されている間に生成されたチャンクも送信されるため、送信が遅延されているともいえる。
【0105】
ステップS303の処理の後、処理はステップS301に戻る。そして、送信要求レートに対する受信レートの比が閾値に達するまで、ステップS303の処理が繰り返される。これにより、優先度が高いデータストリームから順番に送信が再開される。
【0106】
なお、QoSがアンリライアブルであるデータストリームについても、送信が停止されている間に生成されたチャンクをクライアント装置20Aのメモリ22上に記憶し、通信帯域に十分な余裕ができた時やユーザの指示があった時等、データストリームの送信の再開よりも後の所定のタイミングで送信されてもよい。
【0107】
なお、帯域幅に応じてデータ送信量を制限する処理は、クライアント装置20Aだけでなく、サーバ装置30で行われてもよい。この場合、サーバ装置30は、クライアント装置20Aと同様に、ダウンストリームの帯域幅に応じてダウンストリームのデータの送信を停止し又は再開することにより、データの送信量を制限する。
【0108】
以上説明した実施形態によれば、データストリームを送信する単位となるチャンクが他のチャンクとの区切りを示すマーカを使用しないデータ構造を有しているため、データの伝送中にチャンクの一部が損失又はチャンク内のデータの順序が変わっても、データ構造を維持することができる。このデータ構造によれば、データの送信順序保証及び到着保証が不要になるため、例えばリアルタイム伝送に適しているが到達保証や再送制御のない通信プロトコルを下位プロトコルとして採用することができる。また、チャンクは、同じデータIDを有するデータポイントを一つのデータポイントグループにまとめ、データポイントグループには一つのデータIDだけを格納するというデータ構造を有するため、各データポイントがデータIDを有するデータ構造に比べて、データ量を減らすことができる。
【0109】
さらに、チャンクのデータ量をデータストリームによって異ならせることができるため、要件に適した様々なストリームを用意できる。例えばチャンク生成条件に含まれる所定時間(以下、「バッファ時間」という。)を短くすることにより、チャンクのデータ量が少ないデータストリームが実現される。このデータストリームはバッファ時間による遅延が小さいためデータ伝送のリアルタイム性に寄与する。また、バッファ時間を長くすることにより、チャンクのデータ量が多いデータストリームが実現される。チャンクのデータ量が多くなると、データID等の重複するデータの削減の効果が高くなるため、このデータストリームによれば、データの削減効果及びデータの伝送効率を高めることができる。
【0110】
さらに、データポイントがデータストリームの送信条件に基づいて複数のデータストリームに振り分けられて送信されることにより、データポイントを様々な要件で送信することができる。
【0111】
さらに、QoSがリライアブルであるデータストリームのチャンクは、チャンクの受信が確認されない場合にはすぐに再送される一方、QoSがアンリライアブルであるデータストリームのチャンクは、チャンクの受信が確認されない場合にはその後の所定のタイミングで再送されるため、データストリームのQoSに適したタイミングでデータを再送することができる。
【0112】
さらに、チャンクの受信を示す確認応答の返信の有無に基づいて、アップストリーム又はダウンストリームの通信経路上におけるデータストリームの欠損を判定するため、アップストリーム又はダウンストリームの通信経路上におけるデータストリームの欠損を認識することができる。また、チャンクに含まれるシーケンス番号を用いて、折返し通信経路上におけるデータストリームの欠損を判定するため、クライアント装置20Bが折返し通信経路上におけるデータストリームの欠損を認識することができる。
【0113】
さらに、任意の文字列が使用されるデータ名とデータタイプとにより構成されるデータIDに代えてデータ量を削減したエイリアス値が使用されるため、データストリームのデータ量を減らし、伝送効率を高めることができる。
【0114】
さらに、通信経路の帯域幅が不足する場合には、優先度が低いデータストリームから順番に送信が停止されるため、通信経路の帯域幅に応じて優先度の低いデータの送信を抑制することにより、優先度の高いデータの遅延や欠損を回避することができる。また、通信経路の帯域幅の不足が解消された場合には、優先度が高いデータストリームから順番に送信が再開される。データストリームの送信が再開される際、QoSがアンリライアブルであるデータストリームについては、送信が停止されている間に生成されたチャンクは送信されずに、送信が再開された後に生成されたチャンクがリアルタイムに送信される。一方、QoSがリライアブルであるデータストリームについては、送信が停止されている間に生成されたチャンクと送信が再開された後に生成されたチャンクが両方とも送信される。このように、データストリームのQoSに応じた方法でデータストリームの送信を再開することができる。
【0115】
さらに、ダウンストリームのチャンクにはアップストリーム情報が含まれるため、クライアント装置20Bがクライアント装置20Aとサーバ装置30との間のアップストリームの通信に関する情報を認識し、ダウンストリームにおいて送信されるチャンクがアップストリームにおいてどのデータストリームから送信されたかを判別することができる。
【0116】
3.変形例
本開示は上述した実施形態に限定されない。上述した実施形態は以下の変形例のように変形されてもよい。また、以下の2以上の変形例が組み合わせて実施されてもよい。
【0117】
上述した実施形態において、データストリームのデータ構造は、
図3に示されるデータ構造に限定されない。データストリームのデータ構造は、ストリーミング形式によりデータを送信し得る構造であればどのようなデータ構造であってもよい。
【0118】
上述した実施形態において、データ通信システム1のハードウェア構成は、上述した実施形態で説明した例に限定されない。クライアント装置20及びサーバ装置30は、上述したハードウェア構成を1つ又は複数含むように構成されてもよいし、一部のハードウェア構成を含まずに構成されてもよい。
【0119】
上述した実施形態において、データ通信システム1の機能を実現する手段は、上述した実施形態で説明した例に限定されない。サーバ装置30の機能の一部がクライアント装置20により実現されてもよい。クライアント装置20の機能の一部がサーバ装置30により実現されてもよい。各機能構成は、1つの装置により実現されてもよいし、互いに接続された2つ以上の装置により実現されてもよい。クライアント装置20及びサーバ装置30のプロセッサ21及び31は、マイクロプロセッサ、デジタル信号プロセッサ(DSP:Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)、FPGA(Field Programmable Gate Array)などのハードウェアの少なくとも1つで実装されてもよく、当該ハードウェアにより、各機能構成の一部又は全てが実現されてもよい。
【0120】
データ通信システム1において行われる処理のステップは、上述した実施形態で説明した例に限定されない。この処理のステップは、矛盾のない限り、入れ替えられてもよい。本開示の別の態様は、データ通信システム1において行われる処理のステップを備える方法として提供されてもよい。
【0121】
本開示は、クライアント装置20又はサーバ装置30において実行されるプログラムとして提供されてもよい。このプログラムは、インターネットなどの通信回線を介してダウンロードされてもよい。また、これらのプログラムは、磁気記録媒体(磁気テープ、磁気ディスクなど)、光記録媒体(光ディスクなど)、光磁気記録媒体、半導体メモリなどの、コンピュータが読取可能な記録媒体に記録した状態で提供されてもよい。
【0122】
付記1
コンピュータに、クライアント装置とストリーミング形式による通信を行う通信ステップを実行させるためのプログラムであって、前記通信ステップは、第1クライアント装置から複数のデータストリームを受信する受信ステップを含み、前記複数のデータストリームは、異なる送信条件を有し、前記複数のデータストリームの各々は、当該データストリームの前記送信条件に応じたデータポイントを含むプログラム。
【0123】
付記2
コンピュータに、クライアント装置とストリーミング形式による通信を行う通信ステップを実行させるためのプログラムであって、前記通信ステップは、第1クライアント装置からデータストリームを受信する受信ステップを含み、前記データストリームは、送信条件を有し、前記データストリームに含まれる第1データブロックの受信が確認されない場合には、前記データストリームの前記送信条件によって異なるタイミングで前記第1クライアント装置から前記第1データブロックが再送されるプログラム。
【0124】
付記3
コンピュータに、クライアント装置とストリーミング形式による通信を行う通信ステップを実行させるためのプログラムであって、前記ストリーミング形式による通信は、データブロックを用いて行われ、前記通信ステップは、第1クライアント装置からデータストリームを受信する受信ステップと、第2クライアント装置に前記データストリームを送信する送信ステップとを含み、前記データブロックは、前記第1クライアント装置からの送信順に連続するシーケンス番号を含み、前記コンピュータと前記第1クライアント装置又は前記第2クライアント装置との間の第1通信経路上におけるデータの欠損は、前記データブロックの受信に応じて返信される確認応答の有無に基づいて判定され、前記第1クライアント装置から前記コンピュータを介して前記第2クライアント装置に至る第2通信経路上におけるデータの欠損は、前記シーケンス番号を用いて判定されるプログラム。
【0125】
付記4
コンピュータに、クライアント装置とストリーミング形式による通信を行う通信ステップを実行させるためのプログラムであって、前記ストリーミング形式による通信は、データグループを含むデータブロックを用いて行われ、前記データグループは、データ種別情報を含み、前記クライアント装置は、前記コンピュータにデータストリームを送信する第1クライアント装置と、前記コンピュータから転送された前記データストリームを受信する第2クライアント装置とを含み、前記通信ステップは、前記第1クライアント装置と前記コンピュータとの間の前記通信において、前記データ種別情報と第1エイリアス値との変換に用いられる第1辞書を前記第1クライアント装置に送信する送信ステップと、前記コンピュータと前記第2クライアント装置との間の前記通信において、前記データ種別情報と第2エイリアス値との変換に用いられる第2辞書を前記第2クライアント装置から受信する受信ステップとを含むプログラム。
【0126】
付記5
コンピュータに、クライアント装置とストリーミング形式による通信を行う通信ステップを実行させるためのプログラムであって、前記通信ステップは、第1クライアント装置から複数のデータストリームを受信する受信ステップを含み、前記複数のデータストリームは、データ伝送のリアルタイム性を優先する第1送信条件を有する第1データストリームと、データ伝送の完全性を優先する第2送信条件を有する第2データストリームとを含み、前記コンピュータと前記第1クライアント装置との間の通信経路の帯域幅に応じて前記第1クライアント装置から前記第1データストリームの送信が停止された後、前記送信が再開されると、前記第1データストリームは、前記送信が再開された時点に応じた部位から送信され、前記帯域幅に応じて前記第1クライアント装置から前記第2データストリームの送信が停止された後、前記送信が再開されると、前記第2データストリームは、前記送信が停止された時点に応じた部位から送信されるプログラム。
【0127】
付記6
コンピュータに、クライアント装置とストリーミング形式による通信を行う通信ステップを実行させるためのプログラムであって、前記通信ステップは、第1クライアント装置からデータストリームを受信する受信ステップと第2クライアント装置に前記データストリームを送信する送信ステップとを含み、前記コンピュータに、前記受信ステップにおいて受信された前記データストリームに含まれるデータブロックに、前記コンピュータと前記第1クライアント装置との間の通信に関する情報を付加する付加ステップをさらに実行させるためのプログラム。
【符号の説明】
【0128】
1:データ通信システム、10:センサ、20:クライアント装置、21:プロセッサ、22:メモリ、23:通信インターフェース、24:入力装置、25:出力装置、30:サーバ装置、31:プロセッサ、32:メモリ、33:通信インターフェース、201:開始要求手段、202:取得手段、203:振り分け手段、204:変換手段、205:生成手段、206:送信手段、207:再送手段、208:送信制限手段、211:エイリアス手段、212:開始要求手段、213:受信手段、214:変換手段、215:出力制御手段、216:欠損判定手段、221:クライアントプログラム、222:辞書、301:エイリアス手段、302:開始応答手段、303:受信手段、304:変換手段、305:付加手段、306:送信手段、307:確認応答手段、321:サーバプログラム