(57)【特許請求の範囲】
【請求項１】
複数の端末間を接続する通信手段と、前記通信手段によって接続されるものであって、通信されるデータとなる書き込み用タプル又は読み出し用タプルの少なくとも一方を送信端末又は受信端末として所定の記憶手段に登録する１又は複数の通信端末とを備え、前記所定の記憶手段に登録される各タプルにマッチング対象又はマッチング条件を表す情報を含み、それらをマッチングすることで間接通信を行うシステムであって、
送信端末となる通信端末が登録した書き込み用タプルにマッチング対象、受信端末となる通信端末が登録した読み出し用タプルにマッチング条件を含むとともに、
マッチング条件を含む読み出し用タプルにマッチするマッチング対象を含む書き込み用タプルを登録した送信端末となる通信端末へ受信端末となる通信端末が当該読み出し用タプルを通知するか、
又は、送信端末となる通信端末が登録した書き込み用タプルにマッチング条件、受信端末となる通信端末が登録した読み出し用タプルにマッチング対象を含むとともに、マッチング条件を含む書き込み用タプルにマッチするマッチング対象を含む読み出し用タプルを当該書き込み用タプルを登録した送信端末となる通信端末へ受信端末となる通信端末が通知し、
前記読み出し用タプル又は前記書き込み用タプルは、
前記マッチした全て若しくは一つの書き込み用タプルを、読み出し用タプルを登録した受信端末としての前記通信端末へ送信端末となる通信端末が通知するか、又は、前記マッチした読み出し用タプルを登録した受信端末としての前記通信端末の全て若しくは一つへ、送信端末となる通信端末が書き込み用タプルを通知するかを指定するフラグと、
それらの通知後に、マッチした書き込み用タプル又はマッチした読み出し用タプルを削除するか又は削除しないかを指定するフラグと
を含むことを特徴とする間接通信システム。
【請求項２】
前記読み出し用タプル又は前記書き込み用タプルは、
前記送信端末としての通信端末又は前記受信端末としての通信端末への前記読み出し用タプル又は前記書き込み用タプルの通知の有無を指定するフラグをさらに含むことを特徴とする請求項１に記載の間接通信システム。
【請求項３】
複数の端末間を接続する通信手段と、前記通信手段によって接続されるものであって、通信されるデータとなる書き込み用タプル又は読み出し用タプルの少なくとも一方を送信端末又は受信端末として所定の記憶手段に登録する１又は複数の通信端末とを備え、前記所定の記憶手段に登録される各タプルにマッチング対象又はマッチング条件を表す情報を含み、それらをマッチングすることで間接通信を行うシステムであって、
送信端末となる通信端末が登録した書き込み用タプルにマッチング対象、受信端末となる通信端末が登録した読み出し用タプルにマッチング条件を含むとともに、
マッチング条件を含む読み出し用タプルにマッチするマッチング対象を含む書き込み用タプルを登録した送信端末となる通信端末へ受信端末となる通信端末が当該読み出し用タプルを通知するか、
又は、送信端末となる通信端末が登録した書き込み用タプルにマッチング条件、受信端末となる通信端末が登録した読み出し用タプルにマッチング対象を含むとともに、マッチング条件を含む書き込み用タプルにマッチするマッチング対象を含む読み出し用タプルを当該書き込み用タプルを登録した送信端末となる通信端末へ受信端末となる通信端末が通知し、
前記読み出し用タプル又は前記書き込み用タプルは、
前記送信端末としての通信端末又は前記受信端末としての通信端末への前記読み出し用タプル又は前記書き込み用タプルの通知の有無を指定するフラグを含むことを特徴とする間接通信システム。
【請求項４】
複数の端末間を接続する通信手段と、前記通信手段によって接続されるものであって、通信されるデータとなる書き込み用タプル又は読み出し用タプルの少なくとも一方を送信端末又は受信端末として所定の記憶手段に登録する１又は複数の通信端末とを備え、前記所定の記憶手段に登録される各タプルにマッチング対象又はマッチング条件を表す情報を含み、それらをマッチングすることで間接通信を行う間接通信システムにおける間接通信方法であって、
送信端末となる通信端末が登録した書き込み用タプルにマッチング対象、受信端末となる通信端末が登録した読み出し用タプルにマッチング条件を含むとともに、
マッチング条件を含む読み出し用タプルにマッチするマッチング対象を含む書き込み用タプルを登録した送信端末となる通信端末へ受信端末となる通信端末が当該読み出し用タプルを通知するか、
又は、送信端末となる通信端末が登録した書き込み用タプルにマッチング条件、受信端末となる通信端末が登録した読み出し用タプルにマッチング対象を含むとともに、マッチング条件を含む書き込み用タプルにマッチするマッチング対象を含む読み出し用タプルを当該書き込み用タプルを登録した送信端末となる通信端末へ受信端末となる通信端末が通知し、
前記読み出し用タプル又は前記書き込み用タプルは、
前記マッチした全て若しくは一つの書き込み用タプルを、読み出し用タプルを登録した受信端末としての前記通信端末へ送信端末となる通信端末が通知するか、又は、前記マッチした読み出し用タプルを登録した受信端末としての前記通信端末の全て若しくは一つへ、送信端末となる通信端末が書き込み用タプルを通知するかを指定するフラグと、
それらの通知後に、マッチした書き込み用タプル又はマッチした読み出し用タプルを削除するか又は削除しないかを指定するフラグとを含むことを特徴とする間接通信方法。
【請求項５】
前記読み出し用タプル又は前記書き込み用タプルは、
前記送信端末としての通信端末又は前記受信端末としての通信端末への前記読み出し用タプル又は前記書き込み用タプルの通知の有無を指定するフラグをさらに含むことを特徴とする請求項４に記載に間接通信方法。
【請求項６】
複数の端末間を接続する通信手段と、前記通信手段によって接続されるものであって、通信されるデータとなる書き込み用タプル又は読み出し用タプルの少なくとも一方を送信端末又は受信端末として所定の記憶手段に登録する１又は複数の通信端末とを備え、前記所定の記憶手段に登録される各タプルにマッチング対象又はマッチング条件を表す情報を含み、それらをマッチングすることで間接通信を行う間接通信システムにおける間接通信方法であって、
送信端末となる通信端末が登録した書き込み用タプルにマッチング対象、受信端末となる通信端末が登録した読み出し用タプルにマッチング条件を含むとともに、
マッチング条件を含む読み出し用タプルにマッチするマッチング対象を含む書き込み用タプルを登録した送信端末となる通信端末へ受信端末となる通信端末が当該読み出し用タプルを通知するか、
又は、送信端末となる通信端末が登録した書き込み用タプルにマッチング条件、受信端末となる通信端末が登録した読み出し用タプルにマッチング対象を含むとともに、マッチング条件を含む書き込み用タプルにマッチするマッチング対象を含む読み出し用タプルを当該書き込み用タプルを登録した送信端末となる通信端末へ受信端末となる通信端末が通知し、
前記送信端末としての通信端末又は前記受信端末としての通信端末への前記読み出し用タプル又は前記書き込み用タプルの通知の有無を指定するフラグを前記読み出し用タプル又は前記書き込み用タプルに含むことを特徴とする間接通信方法。
【請求項７】
複数の端末間を接続する通信手段と、前記通信手段によって接続されるものであって、通信されるデータとなる書き込み用タプル又は読み出し用タプルの少なくとも一方を送信端末又は受信端末として所定の記憶手段に登録する１又は複数の通信端末とを備え、前記所定の記憶手段に登録される各タプルにマッチング対象又はマッチング条件を表す情報を含み、それらをマッチングすることで間接通信を行う間接通信システム上のコンピュータに間接通信処理を行わせる間接通信プログラムであって、
送信端末となる通信端末が登録した書き込み用タプルにマッチング対象、受信端末となる通信端末が登録した読み出し用タプルにマッチング条件を含むとともに、
マッチング条件を含む読み出し用タプルにマッチするマッチング対象を含む書き込み用タプルを登録した送信端末となる通信端末へ受信端末となる通信端末が当該読み出し用タプルを通知するか、
又は、送信端末となる通信端末が登録した書き込み用タプルにマッチング条件、受信端末となる通信端末が登録した読み出し用タプルにマッチング対象を含むとともに、マッチング条件を含む書き込み用タプルにマッチするマッチング対象を含む読み出し用タプルを当該書き込み用タプルを登録した送信端末となる通信端末へ受信端末となる通信端末が通知する処理を行わせ、
前記読み出し用タプル又は前記書き込み用タプルは、
前記マッチした全て若しくは一つの書き込み用タプルを、読み出し用タプルを登録した受信端末としての前記通信端末へ送信端末となる通信端末が通知するか、又は、前記マッチした読み出し用タプルを登録した受信端末としての前記通信端末の全て若しくは一つへ、送信端末となる通信端末が書き込み用タプルを通知するかを指定するフラグと、
それらの通知後に、マッチした書き込み用タプル又はマッチした読み出し用タプルを削除するか又は削除しないかを指定するフラグとを含む
ことを特徴とする間接通信プログラム。
【請求項８】
前記読み出し用タプル又は前記書き込み用タプルは、
前記送信端末としての通信端末又は前記受信端末としての通信端末への前記読み出し用タプル又は前記書き込み用タプルの通知の有無を指定するフラグをさらに含むことを特徴とする請求項７に記載に間接通信プログラム。
【請求項９】
複数の端末間を接続する通信手段と、前記通信手段によって接続されるものであって、通信されるデータとなる書き込み用タプル又は読み出し用タプルの少なくとも一方を送信端末又は受信端末として所定の記憶手段に登録する１又は複数の通信端末とを備え、前記所定の記憶手段に登録される各タプルにマッチング対象又はマッチング条件を表す情報を含み、それらをマッチングすることで間接通信を行う間接通信システム上のコンピュータに間接通信処理を行わせる間接通信プログラムであって、
送信端末となる通信端末が登録した書き込み用タプルにマッチング対象、受信端末となる通信端末が登録した読み出し用タプルにマッチング条件を含むとともに、
マッチング条件を含む読み出し用タプルにマッチするマッチング対象を含む書き込み用タプルを登録した送信端末となる通信端末へ受信端末となる通信端末が当該読み出し用タプルを通知するか、
又は、送信端末となる通信端末が登録した書き込み用タプルにマッチング条件、受信端末となる通信端末が登録した読み出し用タプルにマッチング対象を含むとともに、マッチング条件を含む書き込み用タプルにマッチするマッチング対象を含む読み出し用タプルを当該書き込み用タプルを登録した送信端末となる通信端末へ受信端末となる通信端末が通知する処理を行わせ、
前記読み出し用タプル又は前記書き込み用タプルは、
前記送信端末としての通信端末又は前記受信端末としての通信端末への前記読み出し用タプル又は前記書き込み用タプルの通知の有無を指定するフラグを含むことを特徴とする間接通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、たとえばユビキタスネットワークなどの各種ネットワークにおいてセンサ・アクチュエータ端末とサーバ端末の上で動作する複数のプログラムがお互いに連携してユビキタスサービスなどの各種サービスを実現するための通信プラットフォームを構成する際に用いて好適な間接通信システム、通信方法および通信プログラムに関するものである。
【背景技術】
【０００２】
ユビキタスサービスなど複数の端末を用いたネットワークで提供されるサービスの開発・運用を効率化するためには、サービスを構成するプログラム／端末の追加・変更・削除に対して柔軟に対応できる通信プラットフォームが必要である。この通信プラットフォームの要求条件を満足する通信モデルの候補としてTupleSpace（タプル空間）（非特許文献１参照）がある。TupleSpaceは掲示板に似た通信モデルであり、プログラム間で論理的に一つの空間を共有し、プログラム同士はその共有空間に対してデータを読み書きすることで間接的に通信する。
【０００３】
TupleSpaceを用いた通信では、各端末あるいはサーバ上で動作するTupleSpace用のプログラム同士がTupleSpace（あるいはTupleStorage；タプルストレージ）に対してTuple（タプル；Key-Value Pair＝キーと値の組）を読み書きすることで間接的に通信する。具体的には送信者の書き込み用Tuple（Actual;アクチュアル）と受信者の読み出し用Tuple（Forma1；フォーマル）のマッチング処理により通信が発生する。送信者の書き込み用Tuple（Actua1）にマッチング対象、受信者の読み出し用Tuple（Formal）にマッチング条件が含まれ、読み出し用Tuple（Formal）にマッチする書き込み用Tuple（Actual）が当該の読み出し用Tuple（Formal）を登録した受信者へ通知される。すなわち、読み出し用Tuple（Forma1）を書き込む受信端末が、書き込み用Tuple（Actual）を書き込む送信端末を条件指定することになる。
【０００４】
図１にTupleSpaceの通信モデルの具体的な一例を示す。図１に示す通信モデルでは、サーバ端末１と、センサ端末２と、アクチュエータ端末３とが、ユビキタスネットーク４に接続されていて、各端末１〜３上で実行されているプログラム１１、２１、３１および各端末１〜３あるいは図示していない他の端末内のメモリなどの記憶手段と、通信手段としてのユビキタスネットーク４とによって、各端末１〜３のプログラム１１、２１、３１などの間で論理的に共有される一つの空間（メモリ空間）であるTupleSpace５が構成されている。プログラム同士がこの共有空間であるTupleSpace５に対してデータを読み書きすることで間接的に通信が行われる。
【０００５】
この図に示す例では、例えばセンサ端末２のプログラム２１がTupleSpace５に登録した書き込み用Tuple（Actual；アクチュアル）６１とサーバ端末１のプログラム１１がTupleSpace５に登録した読み出し用Tuple（Formal；フォーマル）６２とがマッチングした場合に、書き込み用Tuple（Actual）６１がサーバ端末１のプログラム１１によって読み出される。あるいは、アクチュエータ端末３のプログラム３１がTupleSpace５に登録した読み出し用Tuple（Formal）６３とサーバ端末１のプログラム１１がTupleSpace５に登録した書き込み用Tuple（Actual）６４とがマッチングした場合に、書き込み用Tuple（Actual）６４がアクチュエータ端末３０のプログラム３１によって読み出されることになる。なお、Tupleの凡例を参照符号６０で示した。
【０００６】
TulpleSpaceの通信モデルでは、TulpleSpaceを介して任意の二つの端末のプログラム問での通信が可能であり、それらの通信はすべて独立している。例えば、センサ端末とアクチュエータ端末のプログラム同士もTulpleSpaceを介して通信可能であるし、同一端末のプログラム同士もTulpleSpaceを介して通信可能である。また、センサ端末とサーバ端末のプログラム間の通信とサーバ端末とアクチュエータ端末のプログラム間の通信は独立して行われる。なお、TulpleSpaceの通信モデルは、図１に示すように、センサ、アクチュエータ、サーバ等の各端末間のプログラム同士が、独立して通信を行う形態のほか、たとえば、サーバ端末を管理サーバとして用いてその管理サーバ上で実行されているプログラムを介して各端末が通信を行う形態をとることも可能である。この場合、たとえば、サーバ端末のプログラムがセンサ端末のプログラムとアクチュエータ端末のプログラムとの間の通信を仲介することで通信が行われる。どのような形態とるかは、各プログラムの内容で決定することができる。
【０００７】
なお、TulpleSpaceの通信モデルを用いた通信システムには、下記の二つの特徴がある。
【０００８】
（特徴１）永続的な空間（TupleSpace）を介してデータ（Tuple）送受が行なわれるため、通信相手のプログラムが同時に動作している必要がない。
【０００９】
（特徴２）データ（Tuple）内容のマッチングにより宛先が決定されるため、通信相手のアドレスを事前に把握している必要がない。
【非特許文献１】D. Gelemter, "Generative communication in linda," ACM Trans. Prog. Lang. Syst., vol. 7, no. 1, pp. 80-112, Jan. l985.
【発明の開示】
【発明が解決しようとする課題】
【００１０】
TupleSpaceの通信モデルは、プログラム間の時間面（特徴１）と関係面（特徴２）での結びつきを弱めるものであり、サービスを構成するプログラム／端末の追加・変更・削除に対して柔軟に対応できる通信プラットフォームとしての素地を備えている。しかし、原型の通信モデルには、以下の二つの解決すべき課題がある。
【００１１】
（課題１）送信端末が受信端末を選別できない。このため、センサイベントの送受のように送信端末が受信端末を条件指定する必要がない（すなわち受信端末が送信端末を条件指定する必要がある）通信においては特に問題はないが、アクチュエータコマンドの送受のように送信端末が受信端末を条件指定する必要がある（すなわち受信端末が送信端末を条件指定する必要がない）通信においては必ずしも送信端末が意図する受信端末へデータが送信されるとは限らないという問題がある。
【００１２】
（課題２）送信端末が受信端末を把握できない。このため、実際に受信する受信端末が存在しないにも関わらず無駄にデータを送信することを回避できないという問題がある。また、送信したデータが実際にどの受信端末によって受信されたかを追跡できないという問題がある。
【００１３】
本発明は、上記の事情に鑑みてなれたものであり、間接通信における利便性の向上を目的としたものであって、送信端末が受信端末を選別でき、また、送信端末が受信端末を把握できるようにする間接通信システム、通信方法および通信プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記課題を解決するため、本発明は、複数の端末間を接続する通信手段と、前記通信手段によって接続されるものであって、通信されるデータとなる書き込み用タプル又は読み出し用タプルの少なくとも一方を送信端末又は受信端末として所定の記憶手段に登録する１又は複数の通信端末とを備え、前記所定の記憶手段に登録される各タプルにマッチング対象又はマッチング条件を表す情報を含み、それらをマッチングすることで間接通信を行うシステムであって、送信端末となる通信端末が登録した書き込み用タプルにマッチング対象、受信端末となる通信端末が登録した読み出し用タプルにマッチング条件を含むとともに、マッチング条件を含む読み出し用タプルにマッチするマッチング対象を含む書き込み用タプルを登録した送信端末となる通信端末へ受信端末となる通信端末が当該読み出し用タプルを通知するか、又は、送信端末となる通信端末が登録した書き込み用タプルにマッチング条件、受信端末となる通信端末が登録した読み出し用タプルにマッチング対象を含むとともに、マッチング条件を含む書き込み用タプルにマッチするマッチング対象を含む読み出し用タプルを当該書き込み用タプルを登録した送信端末となる通信端末へ受信端末となる通信端末が通知し、前記読み出し用タプル又は前記書き込み用タプルは、前記マッチした全て若しくは一つの書き込み用タプルを、読み出し用タプルを登録した受信端末としての前記通信端末へ送信端末となる通信端末が通知するか、又は、前記マッチした読み出し用タプルを登録した受信端末としての前記通信端末の全て若しくは一つへ、送信端末となる通信端末が書き込み用タプルを通知するかを指定するフラグと、それらの通知後に、マッチした書き込み用タプル又はマッチした読み出し用タプルを削除するか又は削除しないかを指定するフラグとを含むことを特徴とする。
【００１６】
本発明は、前記読み出し用タプル又は前記書き込み用タプルは、前記送信端末としての通信端末又は前記受信端末としての通信端末への前記読み出し用タプル又は前記書き込み用タプルの通知の有無を指定するフラグをさらに含むことを特徴とする。
【００１７】
本発明は、複数の端末間を接続する通信手段と、前記通信手段によって接続されるものであって、通信されるデータとなる書き込み用タプル又は読み出し用タプルの少なくとも一方を送信端末又は受信端末として所定の記憶手段に登録する１又は複数の通信端末とを備え、前記所定の記憶手段に登録される各タプルにマッチング対象又はマッチング条件を表す情報を含み、それらをマッチングすることで間接通信を行うシステムであって、送信端末となる通信端末が登録した書き込み用タプルにマッチング対象、受信端末となる通信端末が登録した読み出し用タプルにマッチング条件を含むとともに、マッチング条件を含む読み出し用タプルにマッチするマッチング対象を含む書き込み用タプルを登録した送信端末となる通信端末へ受信端末となる通信端末が当該読み出し用タプルを通知するか、又は、送信端末となる通信端末が登録した書き込み用タプルにマッチング条件、受信端末となる通信端末が登録した読み出し用タプルにマッチング対象を含むとともに、マッチング条件を含む書き込み用タプルにマッチするマッチング対象を含む読み出し用タプルを当該書き込み用タプルを登録した送信端末となる通信端末へ受信端末となる通信端末が通知し、前記読み出し用タプル又は前記書き込み用タプルは、前記送信端末としての通信端末又は前記受信端末としての通信端末への前記読み出し用タプル又は前記書き込み用タプルの通知の有無を指定するフラグを含むことを特徴とする。
【００１９】
本発明は、複数の端末間を接続する通信手段と、前記通信手段によって接続されるものであって、通信されるデータとなる書き込み用タプル又は読み出し用タプルの少なくとも一方を送信端末又は受信端末として所定の記憶手段に登録する１又は複数の通信端末とを備え、前記所定の記憶手段に登録される各タプルにマッチング対象又はマッチング条件を表す情報を含み、それらをマッチングすることで間接通信を行う間接通信システムにおける間接通信方法であって、送信端末となる通信端末が登録した書き込み用タプルにマッチング対象、受信端末となる通信端末が登録した読み出し用タプルにマッチング条件を含むとともに、マッチング条件を含む読み出し用タプルにマッチするマッチング対象を含む書き込み用タプルを登録した送信端末となる通信端末へ受信端末となる通信端末が当該読み出し用タプルを通知するか、又は、送信端末となる通信端末が登録した書き込み用タプルにマッチング条件、受信端末となる通信端末が登録した読み出し用タプルにマッチング対象を含むとともに、マッチング条件を含む書き込み用タプルにマッチするマッチング対象を含む読み出し用タプルを当該書き込み用タプルを登録した送信端末となる通信端末へ受信端末となる通信端末が通知し、前記読み出し用タプル又は前記書き込み用タプルは、前記マッチした全て若しくは一つの書き込み用タプルを、読み出し用タプルを登録した受信端末としての前記通信端末へ送信端末となる通信端末が通知するか、又は、前記マッチした読み出し用タプルを登録した受信端末としての前記通信端末の全て若しくは一つへ、送信端末となる通信端末が書き込み用タプルを通知するかを指定するフラグと、それらの通知後に、マッチした書き込み用タプル又はマッチした読み出し用タプルを削除するか又は削除しないかを指定するフラグとを含むことを特徴とする。
【００２０】
本発明は、前記読み出し用タプル又は前記書き込み用タプルは、前記送信端末としての通信端末又は前記受信端末としての通信端末への前記読み出し用タプル又は前記書き込み用タプルの通知の有無を指定するフラグをさらに含むことを特徴とする。
【００２１】
本発明は、複数の端末間を接続する通信手段と、前記通信手段によって接続されるものであって、通信されるデータとなる書き込み用タプル又は読み出し用タプルの少なくとも一方を送信端末又は受信端末として所定の記憶手段に登録する１又は複数の通信端末とを備え、前記所定の記憶手段に登録される各タプルにマッチング対象又はマッチング条件を表す情報を含み、それらをマッチングすることで間接通信を行う間接通信システムにおける間接通信方法であって、送信端末となる通信端末が登録した書き込み用タプルにマッチング対象、受信端末となる通信端末が登録した読み出し用タプルにマッチング条件を含むとともに、マッチング条件を含む読み出し用タプルにマッチするマッチング対象を含む書き込み用タプルを登録した送信端末となる通信端末へ受信端末となる通信端末が当該読み出し用タプルを通知するか、又は、送信端末となる通信端末が登録した書き込み用タプルにマッチング条件、受信端末となる通信端末が登録した読み出し用タプルにマッチング対象を含むとともに、マッチング条件を含む書き込み用タプルにマッチするマッチング対象を含む読み出し用タプルを当該書き込み用タプルを登録した送信端末となる通信端末へ受信端末となる通信端末が通知し、前記送信端末としての通信端末又は前記受信端末としての通信端末への前記読み出し用タプル又は前記書き込み用タプルの通知の有無を指定するフラグを前記読み出し用タプル又は前記書き込み用タプルに含むことを特徴とする。
【００２３】
本発明は、複数の端末間を接続する通信手段と、前記通信手段によって接続されるものであって、通信されるデータとなる書き込み用タプル又は読み出し用タプルの少なくとも一方を送信端末又は受信端末として所定の記憶手段に登録する１又は複数の通信端末とを備え、前記所定の記憶手段に登録される各タプルにマッチング対象又はマッチング条件を表す情報を含み、それらをマッチングすることで間接通信を行う間接通信システム上のコンピュータに間接通信処理を行わせる間接通信プログラムであって、送信端末となる通信端末が登録した書き込み用タプルにマッチング対象、受信端末となる通信端末が登録した読み出し用タプルにマッチング条件を含むとともに、マッチング条件を含む読み出し用タプルにマッチするマッチング対象を含む書き込み用タプルを登録した送信端末となる通信端末へ受信端末となる通信端末が当該読み出し用タプルを通知するか、又は、送信端末となる通信端末が登録した書き込み用タプルにマッチング条件、受信端末となる通信端末が登録した読み出し用タプルにマッチング対象を含むとともに、マッチング条件を含む書き込み用タプルにマッチするマッチング対象を含む読み出し用タプルを当該書き込み用タプルを登録した送信端末となる通信端末へ受信端末となる通信端末が通知する処理を行わせ、前記読み出し用タプル又は前記書き込み用タプルは、前記マッチした全て若しくは一つの書き込み用タプルを、読み出し用タプルを登録した受信端末としての前記通信端末へ送信端末となる通信端末が通知するか、又は、前記マッチした読み出し用タプルを登録した受信端末としての前記通信端末の全て若しくは一つへ、送信端末となる通信端末が書き込み用タプルを通知するかを指定するフラグと、それらの通知後に、マッチした書き込み用タプル又はマッチした読み出し用タプルを削除するか又は削除しないかを指定するフラグとを含むことを特徴とする。
【００２４】
本発明は、前記読み出し用タプル又は前記書き込み用タプルは、前記送信端末としての通信端末又は前記受信端末としての通信端末への前記読み出し用タプル又は前記書き込み用タプルの通知の有無を指定するフラグをさらに含むことを特徴とする。
【００２５】
本発明は、複数の端末間を接続する通信手段と、前記通信手段によって接続されるものであって、通信されるデータとなる書き込み用タプル又は読み出し用タプルの少なくとも一方を送信端末又は受信端末として所定の記憶手段に登録する１又は複数の通信端末とを備え、前記所定の記憶手段に登録される各タプルにマッチング対象又はマッチング条件を表す情報を含み、それらをマッチングすることで間接通信を行う間接通信システム上のコンピュータに間接通信処理を行わせる間接通信プログラムであって、送信端末となる通信端末が登録した書き込み用タプルにマッチング対象、受信端末となる通信端末が登録した読み出し用タプルにマッチング条件を含むとともに、マッチング条件を含む読み出し用タプルにマッチするマッチング対象を含む書き込み用タプルを登録した送信端末となる通信端末へ受信端末となる通信端末が当該読み出し用タプルを通知するか、又は、送信端末となる通信端末が登録した書き込み用タプルにマッチング条件、受信端末となる通信端末が登録した読み出し用タプルにマッチング対象を含むとともに、マッチング条件を含む書き込み用タプルにマッチするマッチング対象を含む読み出し用タプルを当該書き込み用タプルを登録した送信端末となる通信端末へ受信端末となる通信端末が通知する処理を行わせ、前記読み出し用タプル又は前記書き込み用タプルは、前記送信端末としての通信端末又は前記受信端末としての通信端末への前記読み出し用タプル又は前記書き込み用タプルの通知の有無を指定するフラグを含むことを特徴とする。
【発明の効果】
【００２６】
本発明においては、送信端末となる通信端末が登録した書き込み用タプルにマッチング条件、受信端末となる通信端末が登録した読み出し用タプルにマッチング対象を含ませて、書き込み用タプルにマッチする読み出し用タプルを登録した受信端末となる通信端末へ当該書き込み用タプルを通知する。すなわち、たとえば送信端末の書き込み用タプル（CommandActual）にマッチング条件、受信端末の読み出し用タプル（CommandFormal）にマッチング対象を含ませ、書き込み用タプル（CommandActual）にマッチする読み出し用タプル（CommandFormal）を登録した受信端末へ当該の書き込み用タプル（CommandActual）を通知するようにした。したがって、送信端末が受信端末を選別できるようになる。これにより、アクチュエータコマンドの送受のように送信端末が受信端末を条件指定する必要がある（すなわち受信端末が送信端末を条件指定する必要がない）通信において確実に送信端末が意図する受信端末へデータを送信できるようになる。
【００２７】
また、本発明においては、送信端末となる通信端末が登録した書き込み用タプルにマッチング対象、受信端末となる通信端末が登録した読み出し用タプルにマッチング条件を含ませるとともに、マッチング条件を含む読み出し用タプルにマッチするマッチング対象を含む書き込み用タプルを登録した送信端末となる通信端末へ当該読み出し用タプルを通知するか、又は、送信端末となる通信端末が登録した書き込み用タプルにマッチング条件、受信端末となる通信端末が登録した読み出し用タプルにマッチング対象を含ませるとともに、マッチング条件を含む書き込み用タプルにマッチするマッチング対象を含む読み出し用タプルを当該書き込み用タプルを登録した送信端末となる通信端末へ通知するようにした。すなわち、たとえば、読み出し用タプル（EventFormal）にマッチする書き込み用タプル（EventActual）を登録した送信端末へ当該の読み出し用タプル（EventFormal）を通知するようにしたり、あるいは書き込み用タプル（CommandActual）にマッチする読み出し用タプル（CommandFormal）を当該の書き込み用タプル（CommandActual）を登録した送信端末へ通知するようにした。これにより、送信端末が受信端末を把握できるようになる。これにより、実際に受信する受信端末が存在しないにも関わらず無駄にデータを送信することを回避できる。また、送信したデータが実際にどの受信端末によって受信されたかを追跡できる。
【発明を実施するための最良の形態】
【００２８】
本発明におけるタプル空間（「uTupleSpace」とする）は、図１を参照して説明したタプル空間TupleSpaceの通信モデルを独自に拡張したものであり、既存の受信端末が送信端末を選別する受信端末主導の通信（Event型通信；イベント型通信）に加え、送信端末が受信端末を選別する送信端末主導の通信（Command型通信；コマンド型通信）を新規に実現する。また、本実施の形態では、Event型通信とCommand型通信において、受信端末が送信端末を把握する順方向の通信（Actual-to-Formal通信；アクチュアル・トウ・フォーマル通信）に加え、送信端末が受信端末を把握する逆方向の通信（Formal-to-Actual通信；フォーマル・トウ・アクチュアル通信）を新規に実現する。
【００２９】
なお、本実施の形態では、uTupleSpaceに読み書きされるTupleを「uTuple」として表すこととする。このuTupleは、アプリケーションプログラムがデータとしてuTupleSpaceに書込むuTupleであるActualと、uTupleSpaceからそこに書き込まれたuTuple（Actual）をデータとして読み出すためのuTupleであるFormalの２種類に分けることができる。上述したように、本実施の形態では、既存の受信端末主導の通信（Event型通信）に加え、新規に送信端末主導の通信（Command型通信）を実現するものである。本実施の形態では、Event型通信における２種類のuTupleを「EventActual」（Event型書き込み用uTuple；マッチング対象を含むuTuple）と「EventdFormal」（Event型読み出し用uTuple；マッチング条件を含むuTuple）として表し、Command型通信における２種類のuTupleを「CommandActual」（Command型書き込み用uTuple；マッチング条件を含むuTuple）と「CommandFormal」（Command型読み出し用uTuple；マッチング対象を含むuTuple）として表すこととする。
【００３０】
なお、タプル空間（uTupleSpace）は、概念上の共有メモリ（すなわち記憶手段）であり、この共有メモリはたとえば複数の端末に分散して配置され、このuTupleSpaceにマッチング対象又はマッチング条件を表す情報を含んでいるuTupleとしてのデータ（EventActualまたはCommandActual）を書込み（または登録もしくは送信し）、また、このuTupleSpaceからuTupleとしてのマッチング条件又はマッチング対象を表す情報を含んでいるデータ（EventdFormalまたはCommandFormal）にマッチングするデータ（EventActualまたはCommandActual）を読出す（あるいは受信するあるいは通知される）ことで、uTupleSpace通信用のアプリケーションプログラム（以下、プログラムとする）同士で通信が行われる。
【００３１】
図２に本発明の実施の形態によるuTupleSpaceの通信モデルを示す。上述したようにプログラム同士はuTupleSpace（あるいはuTupleStorage）に対してuTuple（Key-Value Pair）を読み書きすることで間接的に通信する。なお、図２は本実施の形態の通信モデルを模式的に示したものであり、この通信モデルを実現する通信システムには通常各端末１０〜３０が複数台接続されている。また、uTupleSpace内に存在するuTupleも、図示するもののほかに複数存在している。なお、uTupleの凡例を参照符号７０で示した。
【００３２】
図２に示す通信モデルでは、サーバ端末１０と、センサ端末２０と、アクチュエータ端末３０とが、ユビキタスネットーク４０に接続されていて、各端末１０〜３０上で実行されているプログラム１０１、２０１、３０１および各端末１０〜３０あるいは図示していない他の端末内のメモリなどの記憶手段と、通信手段としてのユビキタスネットーク４０とによって、各端末１０〜３０のプログラム１０１、２０１、３０１などの間で論理的に共有される一つの空間（メモリ空間）であるuTupleSpace５０が構成されている。プログラム同士がこの共有空間であるuTupleSpace５０に対してデータを読み書きすることで間接的に通信が行われる。
【００３３】
この図に示す例では、例えばセンサ端末２０のプログラム２０１がuTupleSpace５０に登録したマッチング対象となる書き込み用uTuple（EventActual）７１とサーバ端末１０のプログラム１０１がuTupleSpace５０に登録したマッチング条件となる読み出し用uTuple（EventFormal）７２とがマッチングした場合に、書き込み用uTuple（EventActual）７１がサーバ端末１０のプログラム１０１によって読み出される（つまり書き込み用uTuple（EventActual）７１がサーバ端末１０へ通知される）とともに、読み出し用uTuple（EventFormal）７２がセンサ端末２０のプログラム２０１によって読み出される（つまり読み出し用uTuple（EventFormal）７２がセンサ端末２０へ通知される）。
【００３４】
また、アクチュエータ端末３０のプログラム３０１がuTupleSpace５０に登録したマッチング対象となる読み出し用uTuple（CommandFormal）７３とサーバ端末１０のプログラム１０１がuTupleSpace５０に登録したマッチング条件となる書き込み用uTuple（CommnadActual）７４とがマッチングした場合に、書き込み用uTuple（CommandActual）７４がアクチュエータ端末３０のプログラム３０１によって読み出される（つまり書き込み用uTuple（CommandActual）７４がアクチュエータ端末３０へ通知される）とともに、読み出し用uTuple（CommandFormal）７３がサーバ端末１０のプログラム１０１によって読み出される（つまり読み出し用uTuple（CommandFormal）７３がサーバ端末１０へ通知される）。
【００３５】
なおuTulpleSpaceの通信モデルでは、uTulpleSpace５０を介して任意の二つの端末のプログラム問での通信が可能であり、それらの通信はすべて独立している。例えば、センサ端末２０とアクチュエータ端末３０のプログラム同士２０１・３０１もuTulpleSpace５０を介して通信可能であるし、同一端末のプログラム同士もuTulpleSpace５０を介して通信可能である。また、センサ端末２０とサーバ端末１０のプログラム間の通信とサーバ端末１０とアクチュエータ端末２０のプログラム間の通信は独立して行われる。なお、TulpleSpace５０の通信モデルは、図２に示すように、センサ、アクチュエータ、サーバ等の各端末間のプログラム同士が、独立して通信を行う形態のほか、たとえば、サーバ端末を管理サーバとして用いてその管理サーバ上で実行されているプログラムを介して各端末が通信を行う形態をとることも可能である。この場合、たとえば、サーバ端末のプログラムがセンサ端末のプログラムとアクチュエータ端末のプログラムとの間の通信を仲介することで通信が行われる。どのような形態とるかは、各プログラムの内容で決定することができる。
【００３６】
図３に図２に示す各uTupleが本実施の形態において特徴とする部分の書式を示す。本実施の形態のuTupleには、Event型通信における送信端末の書き込み用uTuple（EventActual）７１と受信端末の読み出し用uTuple（EventFormal）７２、Command型通信における送信端末の書き込み用uTuple（CommandActual）７４と受信端末の読み出し用uTuple（CommandFormal）７３、の計４種類がある。Event型通信でもCommand型通信でも、送信端末の書き込み用uTuple（Actual）７１または７４と受信端末の読み出し用uTuple（Formal）７２または７３のマッチング処理により通信が発生する。
【００３７】
しかし、Event型通信では、送信端末（たとえばセンサ端末２０）の書き込み用uTuple（EventActual）７１にマッチング対象、受信端末（たとえばサーバ端末１０）の読み出し用uTuple（EventFormal）７２にマッチング条件が含まれ、読み出し用uTuple（EventFormal）７２にマッチする書き込み用uTuple（EventActual）７１が当該の読み出し用uTuple（EventFormal）７２を登録した受信端末（たとえばセンサ端末２０）へ通知される（Actual-to-Formal通信）。これに対し、Command型通信では、送信端末（たとえばサーバ端末１０）の書き込み用uTuple（CommandActual）７４にマッチング条件、受信端末（たとえばアクチュエータ端末３０）の読み出し用uTuple（CommandFormal）７３にマッチング対象が含まれ、書き込み用uTuple（CommandActual）７３にマッチする読み出し用uTuple（CommandFormal）７４を登録した受信端末（たとえばアクチュエータ端末３０）へ当該の書き込み用uTuple（CommandActual）７４が通知される（Actual-to-Formal通信）。
【００３８】
また、これと同時に、Event型通信では、読み出し用uTuple（EventFormal）７２にマッチする書き込み用uTuple（EventActual）７１を登録した送信端末（たとえばセンサ端末２０）へ当該の読み出し用uTuple（EventFormal）７２が通知される（Formal-to-Actual通信）。また、Command型通信では、書き込み用uTuple（CommandActual）７４にマッチする読み出し用uTuple（CommandFormal）７３が当該の書き込み用uTuple（CommandActual）７４を登録した送信端末（たとえばサーバ端末１０）へ通知される（Formal-to-Actual通信）。
【００３９】
なお、図３に示す各uTuple７１〜７４は、キーとそれに対応する値（文字列）との対からなる１または複数のフィールドから構成されている。Event型通信における送信端末の書き込み用uTuple（EventActual）７１に含まれるキーは、「date」、「position」、「address」、「subject」、「type」および「body」である。「date」は、「タイムスタンプ情報」を表すキーであり、時刻情報を表す値が対応づけられている。「position」は、位置情報を表すキーであり、送信端末の位置に関する情報を表す値が対応づけられている。「address」は、アドレス情報を表すキーであり、送信端末のアドレスを表す値が対応づけられている。「subject」は、センサ／アクチュエータの種別情報を表すキーであり、送信端末の端末の種別を示す値が対応づけられている。「type」は、アクチュエータへのどのようなコマンドなのかあるいはセンサからのどのようなイベントなのかを表すキーであり、それらを表す値が対応づけられている。「body」は、センサ出力などの「パラメータ」（あるいはデータ）を表すキーであり、アプリケーション間で規定された任意のフィールドの集合が対応づけられている。この「body」に設定される値が送信されるデータとなる。
【００４０】
Event型通信における受信端末の読み出し用uTuple（EventFormal）７２に含まれるキーは、「date_range」、「position_range」、「address_range」、「subject」および「type」である。「date_range」は、読み出し条件を表す「タイムスタンプ情報」を表すキーであり、時刻の範囲を示す情報を表す値が対応づけられている。「position_range」は、読み出し条件を表す位置情報を表すキーであり、送信端末の位置の範囲に関する情報を表す値が対応づけられている。「address_range」は、読み出し条件を表すアドレス情報を表すキーであり、送信端末のアドレスの範囲を表す値が対応づけられている。「subject」は、センサ／アクチュエータの種別情報を表すキーであり、送信端末の種別を示す値が対応づけられている。「type」は、アクチュエータへのどのようなコマンドなのかあるいはセンサからのどのようなイベントなのかを表すキーであり、それらを表す値が対応づけられている。
【００４１】
Command型通信における送信端末の書き込み用uTuple（CommandActual）７４に含まれるキーは、「date_range」、「position_range」、「address_range」、「subject」、「type」および「body」である。また、Command型通信における受信端末の読み出し用uTuple（CommandFormal）７３に含まれるキーは、「date」、「position」、「address」、「subject」および「type」である。各キーの内容と対応づけられる値については、Event型通信では送信端末（すなわちEventActualを登録した端末）の情報であるのに対してCommand型通信では受信端末（すなわちCommandForrmalを登録した端末）の情報であるが、上述したEvent型通信のものに対応する内容となっている。
【００４２】
また、本実施の形態においては、Event型通信／Command型通信における主導側となる端末（受信端末／送信端末）は従属側となる端末（送信端末／受信端末）に対して所定の処理を要求するAllフラグ（オールフラグ）とRemoveフラグ（リムーブフラグ）をオプションで指定できる。このAllフラグは、Event型通信において条件がマッチした全て若しくは一つの書き込み用uTupleを、読み出し用uTupleを登録した受信端末としての通信端末へ通知するかを指定するフラグであり、また、Command型通信において条件がマッチした読み出し用uTupleを登録した受信端末としての通信端末の全て若しくは一つへ、書き込み用uTupleを通知するかを指定するフラグである。また、Removeフラグは、それらの通知後に、マッチした書き込み用uTuple又はマッチした読み出し用uTupleを削除するか又は削除しないかを指定するフラグである。これらのAllフラグとRemoveフラグは、たとえば、Event型通信における受信端末の読み出し用uTuple（EventFormal）７２／Command型通信における送信端末の書き込み用uTuple（CommandActual）７４に追加のキーおよびその値として設定することができる。
【００４３】
次に図４〜図１１を参照して、図２の通信モデルを実現する通信システムにおける本発明が特徴とする各動作について説明する。なお、各図における各処理（すなわち各図のフローの全体又は一部（つまり各ステップ））は、各端末などにおいて共有されている共有メモリとしてのタプル空間uTupleSpace５０を用いて各端末などで実行されているプログラム１０１〜３０１などによって実現されるものである。
【００４４】
図４と図５に、Allフラグ（オールフラグ）とRemoveフラグ（リムーブフラグ）を考慮したEvent型通信における、書き込み用uTuple（EventActual）７１の登録時（図４）と、読み出し用uTuple（EventFormal）７２の登録時（図５）の処理フローを示す。「Allフラグ＝True／False」と「Removeフラグ＝True／False」はそれぞれ独立に指定することができ、以下の処理内容となる（すなわち計４通りの組合せが考えられる）。
【００４５】
・Event型通信における「Allフラグ＝True／False」指定：
読み出し用uTuple（EventFormal）７２にマッチする「全ての（All＝Trueの場合）／一つの（All＝Falseの場合）」書き込み用uTuple（EventActual）７１が当該の読み出し用uTuple（EventFormal）７２を登録した受信端末へ通知される。ここでAll＝Falseの場合に受信端末へ通知される一つの書き込み用uTuple（EventActual）７１は、例えば最後に登録されたものすなわち最新のものとしたり、あるいは他の所定の条件を満足する一つあるいは一つに限らず複数のものとしたりするとしたりすることができる。
【００４６】
・Event型通信における「Removeフラグ＝True／False」指定：
読み出し用uTuple（EventFormal）７２にマッチする書き込み用uTuple（EventActual）７１が当該の読み出し用uTuple（EventFormal）７２を登録した受信端末へ通知された後に当該の書き込み用uTuple（EventActual）７１が「削除される（Remove＝Trueの場合）／削除されない（Remove＝Falseの場合）」。
【００４７】
ここで、図４の処理フローについて説明する。図４は、Event型通信における書き込み用uTuple（EventActual）７１の登録時の処理フローである。なお、以下の図４および以下の各図の処理フローの説明では、各uTuple７１、７２、７３および７４をその種類を特定する「EventActual」、「EventFormal」、「CommandFormal」および「CommandActual」の各用語で表すこととする。
【００４８】
図４の処理フローでは、まず、EventActualの登録時には、EventActualとマッチし、かつRemove＝TrueであるEventFormalのうち、最後に登録されたものを検索する（ステップＳ１０１）。EventFormalが見つからなかった場合（ステップＳ１０２で「NO」の場合）、EventActualとマッチする全EventFormalを検索する（ステップＳ１０３）。次に、見つけたＮ個のEventFormalについてステップＳ１０４〜Ｓ１０８内の処理を繰り返し行い、EventFormalを登録したプログラムにEventActualを通知するとともに（ステップＳ１０５）、EventFormalのAll＝Trueでない場合には（ステップＳ１０６で「NO」の場合には）EventFormalを削除する（ステップＳ１０７）。そして、EventActualを登録して（ステップＳ１０９）、処理を終了する。
【００４９】
一方、ステップＳ１０２で、EventFormalが見つかった場合（ステップＳ１０２で「YES」の場合）、EventFormalを登録したプログラムにEventActualを通知するとともに（ステップＳ１１０）、EventFormalのAll＝Trueでない場合には（ステップＳ１１１で「NO」の場合には）EventFormalを削除して（ステップＳ１１２）、処理を終了する。
【００５０】
次に、図５の処理フローについて説明する。図５は、Event型通信における読み出し用uTuple（EventFormal）７２の登録時の処理フローである。
【００５１】
図５の処理フローでは、まず、登録するEventFormalのAll＝Trueであるか否かを判定し、All＝Trueの場合（ステップＳ２０１で「YES」の場合）、EventFormalとマッチする全EventActualを検索する（ステップＳ２０２）。次に、見つけたEventActualをEventFormalを登録しようとするプログラムに通知するとともに（ステップＳ２０３）、登録するEventFormalのRemove＝Trueの場合（ステップＳ２０４で「YES」の場合）には見つけたEventActualを削除して（ステップＳ２０５）、EventFormalを登録し（ステップＳ２０６）、そして、処理を終了する。
【００５２】
一方、ステップＳ２０１で、All＝Falseの場合（ステップＳ２０１で「NO」の場合）、EventFormalとマッチするEventActualのうち、最後に登録されたものを検索する（ステップＳ２０７）。そして、見つけたEventActualをEventFormalを登録しようとするプログラムに通知するとともに（ステップＳ２０８）、Remove＝Trueの場合には（ステップＳ２０９で「YES」の場合には）見つけたEventActualを削除し（ステップＳ２１０）、そして、処理を終了する。
【００５３】
次に、図６と図７にAllフラグとRemoveフラグを考慮したCommand型通信における、書き込み用uTuple（CommandActual）７４の登録時（図６）と、読み出し用uTuple（CommandFormal）７３の登録時（図７）の処理フローを示す。「Allフラグ＝True／False」と「Removeフラグ＝True／False」はそれぞれ独立に指定することができ、以下の処理内容となる（すなわち、計４通りの組合せが考えられる）。
【００５４】
・Command型通信における「Allフラグ＝True／False」指定：
書き込み用uTuple（CommandActual）７４にマッチする「全ての（Allフラグ＝Trueの場合）／一つの（（Allフラグ＝Falseの場合）」読み出し用uTuple（CommandFormal）７３を登録した受信端末へ当該の書き込み用uTuple（CommandActual）７４が通知される。ここでAll＝Falseの場合に選ばれる読み出し用uTuple（CommandFormal）７３は、例えば最後に登録されたものすなわち最新のものとしたり、あるいは他の所定の条件を満足する一つあるいは一つに限らず複数のものとしたりすることができる。
【００５５】
・Command型通信における「Removeフラグ＝True／False」指定：
書き込み用uTuple（CommandActual）７４にマッチする読み出し用uTuple（CommandFormal）７３を登録した受信端末へ当該の書き込み用uTuple（CommandActual）７４が通知された後に当該の読み出し用uTuple（CommandFormal）７３が「削除される（Removeフラグ＝Trueの場合）／削除されない（Removeフラグ＝Falseの場合）」。
【００５６】
ここで、図６の処理フローについて説明する。図６は、Command型通信における書き込み用uTuple（CommandActual）７４の登録時の処理フローである。
【００５７】
図６の処理フローでは、まず、登録するCommandActualのAll＝Trueであるか否かを判定し、All＝Trueの場合（ステップＳ３０１で「YES」の場合）、CommandActualとマッチする全CommandFormalを検索する（ステップＳ３０２）。次に、見つけたCommandFormalを登録したプログラムにCommandActualを通知するとともに（ステップＳ３０３）、登録するCommandActualのRemove＝Trueの場合（ステップＳ３０４で「YES」の場合）には見つけたCommandFormalを削除し（ステップＳ３０５）、CommandActualを登録してから（ステップＳ３０６）、処理を終了する。
【００５８】
一方、ステップＳ３０１で、All＝Falseの場合（ステップＳ３０１で「NO」の場合）、CommandActualとマッチするCommandFormalのうち、最後に登録されたものを検索する（ステップＳ３０７）。そして、見つけたCommandFormalを登録したプログラムにCommandActualを通知するとともに（ステップＳ３０８）、Remove＝Trueの場合には（ステップＳ３０９で「YES」の場合には）見つけたCommandFormalを削除して（ステップＳ３１０）、処理を終了する。
【００５９】
次に、図７の処理フローについて説明する。図７は、Command型通信における読み出し用uTuple（CommandFormal）７３の登録時の処理フローである。
【００６０】
図７の処理フローでは、まず、登録するCommandFormalとマッチし、かつRemove=TrueであるCommandActualのうち、最後に登録されたものを検索する（ステップＳ４０１）。次に、CommandActualが見つからなかった場合には（ステップＳ４０２で「NO」の場合には）、CommandFormalとマッチする全CommandActualを検索する（ステップＳ４０３）。次に、見つけたN個のCommandActualについて、ステップＳ４０４〜Ｓ４０８の処理を繰り返し行い、CommandFormalを登録するプログラムに見つけたCommandActualを通知するとともに（ステップＳ４０５）、CommandActualのAllフラグ＝Falseの場合には（ステップＳ４０６で「NO」の場合には）CommandActualを削除して（ステップＳ４０７）、CommandFormalを登録する（ステップＳ４０９）。そして、処理を終了する。
【００６１】
一方、ステップＳ４０２でCommandActualが見つかった場合には（ステップＳ４０２で「YES」の場合には）、CommandFormalを登録するプログラムに見つけたCommandActualを通知するとともに（ステップＳ４１０）、CommandActualのAllフラグ＝Falseの場合には（ステップＳ４１１で「NO」の場合には）CommandActualを削除して（ステップＳ４１２）、処理を終了する。
【００６２】
また、本実施の形態では、Event型／Command型通信における送信端末は受信端末に対して所定の処理を要求するActual-to-FormalフラグとFormal-to-Actualフラグをオプションで指定できる。Actual-to-Formalフラグは、EventFormal７２にマッチするEventActual７１が当該のEventFormal７２を登録した受信端末へ通知される否か、あるいは、CommandActual７４にマッチするCommandFormal７３を登録した受信端末へ当該CommandActual７４が通知されるか否かを指定する情報である。他方、Formal-to-Actualフラグは、EventFormal７２にマッチするEventActual７１を登録した送信端末へ当該EventFormal７２が通知されるか否か、あるいは、CommandActual７４にマッチするCommandFormal７３が当該CommandActual７４を登録した送信端末へ通知されるか否かを指定する情報である。これらのActual-to-FormalフラグとFormal-to-Actualフラグは、たとえば、Event型通信における送信端末の書き込み用uTuple（EventActual）７１／Command型通信における送信端末の書き込み用uTuple（CommandActual）７４に追加のキーおよびその値として設定することができる。
【００６３】
図８と図９にActual-to-FormalフラグとFormal-to-Actualフラグを考慮したEvent型通信における書き込み用uTuple（EventActual）７１の登録時（図８）と、読み出し用uTuple（EventFormal）７２の登録時（図９）の処理フローを示す。「Actual-to-Formalフラグ＝True／False」と「Formal-to-Actualフラグ＝True／False」はそれぞれ独立に指定することができ、以下の処理内容となる（すなわち計４通りの組合せが考えられるが、前者False／後者Falseの組合せは意味がない。それ以外の組合せについては、前者True／後者Falseは送信端末による受信端末の把握なし（既存）、前者False／後者Trueは送信端末による受信端末の事前把握（新規）、前者True／後者Trueは送信端末による受信端末の事後把握（新規）、を意味する）。
【００６４】
・Event型通信における「Actual-to-Formal＝True／False」指定：
読み出し用uTuple（EventFormal）７２にマッチする書き込み用uTuple（EventActual）７１が当該の読み出し用uTuple（EventFormal）７２を登録した受信端末へ「通知される（Actual-to-Formal＝Trueの場合）／通知されない（Actual-to-Formal＝Falseの場合）」。
【００６５】
・Event型通信における「Formal-to-Actual＝True／False」指定：
読み出し用uTuple（EventFormal）７２にマッチする書き込み用uTuple（EventActual）７１を登録した送信端末へ当該の読み出し用uTuple（EventFormal）７２が「通知される（Formal-to-Actual＝Trueの場合）／通知されない（Formal-to-Actual＝Falseの場合）」。
【００６６】
ここで、図８を参照して、Event型通信における書き込み用uTuple（EventActual）７１の登録時の処理フローについて説明する。図８の処理フローでは、まず、登録するEventActualとマッチするEventFormalを検索する（ステップＳ５０１）。そして、見つけたＮ個のEventFormalについてステップＳ５０２〜Ｓ５０７の処理を繰り返し実行する。ステップＳ５０３では、見つけたEventFormalのFormal-to-Actualフラグ＝Trueか否かを判定し、Trueの場合には（ステップＳ５０３で「YES」の場合には）EventActualを登録しようとするプログラムにEventFormalを通知する（ステップＳ５０４）。次に、見つけたEventFormalのActual-to-Formalフラグ＝Trueか否かを判定し、Trueの場合には（ステップＳ５０５で「YES」の場合には）EventFormalを登録したプログラムにEventActualを通知する（ステップＳ５０６）。そして、Ｎ個のEventFormalについて処理を行った後、EventActualを登録する（ステップＳ５０８）。
【００６７】
次に、図９を参照して、Event型通信における読み出し用uTuple（EventFormal）７２の登録時の処理フローについて説明する。図９の処理フローでは、まず、登録するEventFormalとマッチするEventActualを検索する（ステップＳ６０１）。そして、見つけたＮ個のEventActualについてステップＳ６０２〜Ｓ６０７の処理を繰り返し実行する。ステップＳ６０３では、見つけたEventActualのFormal-to-Actualフラグ＝Trueか否かを判定し、Trueの場合には（ステップＳ６０３で「YES」の場合には）見つかったEventActualを登録したプログラムにEventFormalを通知する（ステップＳ６０４）。次に、見つけたEventActualのActual-to-Formalフラグ＝Trueか否かを判定し、Trueの場合には（ステップＳ６０５で「YES」の場合には）EventFormalを登録するプログラムにEventActualを通知する（ステップＳ６０６）。そして、Ｎ個のEventActualについて処理を行った後、EventFormalを登録する（ステップＳ６０８）。
【００６８】
図１０と図１１にActual-to-FormalフラグとFormal-to-Actualフラグを考慮したCommand型通信における書き込み用uTuple（CommandActual）７４の登録時（図１０）と、読み出し用uTuple（CommandFormal）７３の登録時の処理フローを示す。「Actual-to-Formalフラグ＝True／False」と「Formal-to-Actualフラグ＝True／False」はそれぞれ独立に指定することができ、以下の処理内容となる（すなわち計４通りの組合せが考えられるが、前者False／後者Falseの組合せは意味がない。それ以外の組合せについては、前者True／後者Falseは送信端末による受信端末の把握なし（既存）、前者False／後者Trueは送信端末による受信端末の事前把握（新規）、前者True／後者Trueは送信端末による受信端末の事後把握（新規）、を意味する）。
【００６９】
・Command型通信における「Actual-to-Formal＝True／False」指定：
書き込み用uTuple（CommandActual）７４にマッチする読み出し用uTuple（CommandFormal）７３を登録した受信端末へ当該の書き込み用uTuple（CommandActual）７４が「通知される（Actual-to-Formal＝Trueの場合）／通知されない（Actual-to-Formal＝Falseの場合）」。
【００７０】
・Command型通信における「Formal-to-Actual＝True／False」指定：
書き込み用uTuple（CommandActual）７４にマッチする読み出し用uTuple（CommandFormal）７３が当該の書き込み用uTuple（CommandActual）７４を登録した送信端末へ「通知される（Formal-to-Actual＝Trueの場合）／通知されない（Formal-to-Actual＝Falseの場合）」。
【００７１】
ここで、図１０を参照して、Command型通信における書き込み用uTuple（CommandActual）７４の登録時の処理フローについて説明する。図１０の処理フローでは、まず、登録するCommandActualとマッチするCommandFormalを検索する（ステップＳ７０１）。そして、見つけたＮ個のCommandFormalについてステップＳ７０２〜Ｓ７０７の処理を繰返し実行する。ステップＳ７０３では、見つけたCommandFormalのFormal-to-Actualフラグ＝Trueか否かを判定し、Trueの場合には（ステップＳ７０３で「YES」の場合には）CommandActualを登録しようとするプログラムにCommandFormalを通知する（ステップＳ７０４）。次に、見つけたCommandFormalのActual-to-Formalフラグ＝Trueか否かを判定し、Trueの場合には（ステップＳ７０５で「YES」の場合には）CommandFormalを登録したプログラムにCommandActualを通知する（ステップＳ７０６）。そして、Ｎ個のCommandFormalについて処理を行った後、CommandActualを登録する（ステップＳ７０８）。
【００７２】
次に、図１１を参照して、Command型通信における読み出し用uTuple（CommandFormal）７３の登録時の処理フローについて説明する。図１１の処理フローでは、まず、登録するCommandFormalとマッチするCommandActualを検索する（ステップＳ８０１）。そして、見つけたＮ個のCommandActualについてステップＳ８０２〜Ｓ８０７の処理を繰り返し実行する。ステップＳ８０３では、見つけたCommandActualのFormal-to-Actualフラグ＝Trueか否かを判定し、Trueの場合には（ステップＳ８０３で「YES」の場合には）見つかったCommandActualを登録したプログラムにCommandFormalを通知する（ステップＳ８０４）。次に、見つけたCommandActualのActual-to-Formalフラグ＝Trueか否かを判定し、Trueの場合には（ステップＳ８０５で「YES」の場合には）CommandFormalを登録するプログラムにCommandActualを通知する（ステップＳ８０６）。そして、Ｎ個のCommandActualについて処理を行った後、CommandFormalを登録する（ステップＳ８０８）。
【００７３】
なお、以上では、「AllフラグとRemoveフラグ」と「Actual-to-FormalフラグとFormal-to-Actualフラグ」をそれぞれ独立に記述したが、それらの組合せ（計１６通り）も当然考えられる。
【００７４】
以上説明したように本実施の形態は、以下の２つの特徴を有することで、次のような効果を奏する。
【００７５】
（特徴１）送信端末の書き込み用uTuple（CommandActual）にマッチング条件、受信端末の読み出し用uTuple（CommandFormal）にマッチング対象を含ませ、書き込み用uTuple（CommandActual）にマッチする読み出し用uTuple（CommandFormal）を登録した受信端末へ当該の書き込み用uTuple（CommandActual）を通知するようにした。
【００７６】
（特徴２）読み出し用uTuple（EventFormal）にマッチする書き込み用uTuple（EventActual）を登録した送信端末へ当該の読み出し用uTuple（EventFormal）を通知するようにした。また、書き込み用uTuple（CommandActual）にマッチする読み出し用uTuple（CommandFormal）を当該の書き込み用uTuple（CommandActual）を登録した送信端末へ通知するようにした。
【００７７】
これらの特徴により、送信端末が受信端末を選別できる（効果１）。これにより、アクチュエータコマンドの送受のように送信端末が受信端末を条件指定する必要がある（すなわち受信端末が送信端末を条件指定する必要がない）通信において確実に送信端末が意図する受信端末へデータを送信できるようになる。
【００７８】
また、本実施の形態によれば、送信端末が受信端末を把握できる（効果２）。これにより、実際に受信する受信端末が存在しないにも関わらず無駄にデータを送信することを回避できる。また、送信したデータが実際にどの受信端末によって受信されたかを追跡できる。
【００７９】
なお、図２のuTupleSpace５０は（あるいはその共有メモリ）は、ハードディスク装置や光磁気ディスク装置、フラッシュメモリ等の不揮発性のメモリや、ＣＤ-ＲＯＭ等の読み出しのみが可能な記憶媒体、ＲＡＭ（Random Access Memory）のような揮発性のメモリ、有線あるいは無線の通信手段、あるいはこれらの組み合わせにより構成されるものとする
【００８０】
また、図２における各プログラム１０１、２０１および３０１は、専用のハードウェアにより実現されるものであってもよく、また、メモリおよびマイクロプロセッサにより実現させるものであってもよい。また、図２の各端末１０、２０および３０は、メモリおよびＣＰＵ（中央演算装置）を有して構成され、本実施形態における各処理をプログラムをメモリにロードして実行することによりその機能を実現させるものであってもよい。
【００８１】
また、図１のプログラム１０１、２０１および３０１をコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各処理を実行するようにしてもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
【００８２】
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ-ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【００８３】
以上、この発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【図面の簡単な説明】
【００８４】
【図１】TupleSpaceの通信モデル（背景技術）を説明するための模式図である。
【図２】本発明によるTupleSpace（uTupleSpace）の通信モデルを説明するための模式図である。
【図３】図２の通信モデルを実現する本発明の通信システムの実施の形態におけるuTupleの書式を示す図である。
【図４】図２の通信モデルを実現する本発明の通信システムの実施の形態におけるEventActual登録時のAllフラグ及びRemoveフラグを考慮した処理フローである。
【図５】図２の通信モデルを実現する本発明の通信システムの実施の形態におけるEventFormal登録時のAllフラグ及びRemoveフラグを考慮した処理フローである。
【図６】図２の通信モデルを実現する本発明の通信システムの実施の形態におけるCommandActual登録時のAllフラグ及びRemoveフラグを考慮した処理フローである。
【図７】図２の通信モデルを実現する本発明の通信システムの実施の形態におけるCommandFormal登録時のAllフラグ及びRemoveフラグを考慮した処理フローである。
【図８】図２の通信モデルを実現する本発明の通信システムの実施の形態におけるEventActual登録時のActual-to-Formalフラグ及びFormal-to-Actualフラグを考慮した処理フローである。
【図９】図２の通信モデルを実現する本発明の通信システムの実施の形態におけるEventFormal登録時のActual-to-Formalフラグ及びFormal-to-Actualフラグを考慮した処理フローである。
【図１０】図２の通信モデルを実現する本発明の通信システムの実施の形態におけるCommandActual登録時のActual-to-Formalフラグ及びFormal-to-Actualフラグを考慮した処理フローである。
【図１１】図２の通信モデルを実現する本発明の通信システムの実施の形態におけるCommandFormal登録時のActual-to-Formalフラグ及びFormal-to-Actualフラグを考慮した処理フローである。
【符号の説明】
【００８５】
１０…サーバ端末、２０…センサ端末、３０…アクチュエータ端末、１０１、２０１、３０１…プログラム、４０…ユビキタスネットワーク（通信回線あるいは通信網）、５０…uTupleSpace、７１…書き込み用uTuple（EventActual）、７２…読み出し用uTuple（EventFormal）、７３…読み出し用uTuple（CommandFormal）、７４…書き込み用uTuple（CommandActual）
【図１】
0004820833.tif 000002
【図２】
0004820833.tif 000003
【図３】
0004820833.tif 000004
【図４】
0004820833.tif 000005
【図５】
0004820833.tif 000006
【図６】
0004820833.tif 000007
【図７】
0004820833.tif 000008
【図８】
0004820833.tif 000009
【図９】
0004820833.tif 000010
【図１０】
0004820833.tif 000011
【図１１】
0004820833.tif 000012