(57)【要約】【課題】書き込み用Tuple（Actual）との不必要なマッチング処理を削減しマッチング処理の効率を向上させること。【解決手段】第２のタプルを書き込む際に、第１のタプルの属性情報を当該第２のタプルの属性条件で検索して読み出し、第３のタプルの属性条件を当該第２のタプルの属性条件で検索して読み出し、この第３のタプルの登録端末に当該第２のタプルを通知し、第３のタプルを書き込む際に、第２のタプルの属性条件を当該第３のタプルの属性条件で検索して読み出し、この第２のタプルの登録端末に当該第３のタプルを通知し、第４のタプルの属性条件を当該第３のタプルの属性条件で検索して読み出し、第４のタプルの登録端末に当該第３のタプルを通知し、第４のタプルを書き込む際に、第３のタプルの属性条件を当該第４のタプルの属性条件で検索して読み出し、この第３のタプルの登録端末に当該第４のタプルを通知する。【選択図】図４
2010072718.tif 000002
【特許請求の範囲】
【請求項１】
複数の端末が共通の通信網に接続され、前記通信網上に存在する記憶空間に対して属性名と属性値のペアであるタプルを読み書きすることで通信を行う間接通信システムであって、
第１のデータと当該第１のデータの属性情報とを有する第１のタプルを管理する装置と、
所望するデータの属性条件を有する第２のタプルを管理する装置と、
所望する前記第２のタプルの属性条件、又は、任意の前記第２のタプルを管理する装置に読み出される第２のデータと当該第２のデータの属性情報を有する第３のタプルを管理する装置と、
第３のデータと前記第３のタプルを指定するための属性条件を有する第４のタプルを管理する装置と、
を備え、
前記第１のタプルを管理する装置は、前記第１のタプルを前記記憶空間に書き込み、
前記第２のタプルを管理する装置は、前記第２のタプルを前記記憶空間に書き込む場合に、前記記憶空間に書き込まれた前記第１のタプルの属性情報を当該第２のタプルの属性条件で検索し、検索された前記第１のタプルを読み出し、前記記憶空間に書き込まれた前記第３のタプルのうち属性条件が当該第２のタプルの属性条件と一致するものを検索し、検索された前記第３のタプルを読み出し、検索された前記第３のタプルを前記記憶空間に書き込んだ装置に当該第２のタプルを送信し、
前記第３のタプルを管理する装置は、前記第３のタプルを前記記憶空間に書き込む場合に、前記記憶空間に書き込まれた前記第２のタプルのうち属性条件が当該第３のタプルの属性条件と一致するものを検索し、検索された前記第２のタプルを読み出し、検索された前記第２のタプルを前記記憶空間に書き込んだ装置に当該第３のタプルを送信し、前記記憶空間に書き込まれた前記第４のタプルのうち属性条件が当該第３のタプルの属性条件と一致するものを検索し、検索された前記第４のタプルを読み出し、検索された前記第４のタプルを前記記憶空間に書き込んだ装置に当該第３のタプルを送信し、
前記第４のタプルを管理する装置は、前記第４のタプルを前記記憶空間に書き込む場合に、前記記憶空間に書き込まれた前記第３のタプルのうち属性条件が当該第４のタプルの属性条件と一致するものを検索し、検索された前記第３のタプルを読み出し、検索された前記第３のタプルを前記記憶空間に書き込んだ装置に当該第４のタプルを送信する、
間接通信システム。
【請求項２】
前記第１のタプルを管理する装置は、前記第１のタプルを前記記憶空間に書き込む場合に、前記記憶空間に書き込まれた前記第２のタプルのうち属性条件が当該第１のタプルの属性情報を包含するものを検索し、検索された前記第２のタプルを前記記憶空間に書き込んだ装置に当該第１のタプルを送信することを特徴とする、請求項１に記載の間接通信システム。
【請求項３】
複数の端末が共通の通信網に接続され、前記通信網上に存在する記憶空間に対して属性名と属性値のペアであるタプルを読み書きすることで通信を行う間接通信システムにおいて、
第１のデータと当該第１のデータの属性情報とを有する第１のタプルを管理する装置が、前記第１のタプルを前記記憶空間に書き込むステップと、
所望するデータの属性条件を有する第２のタプルを管理する装置が、前記第２のタプルを前記記憶空間に書き込む場合に、前記記憶空間に書き込まれた前記第１のタプルの属性情報を当該第２のタプルの属性条件で検索し、検索された前記第１のタプルを読み出し、前記記憶空間に書き込まれた前記第３のタプルのうち属性条件が当該第２のタプルの属性条件と一致するものを検索し、検索された前記第３のタプルを読み出し、検索された前記第３のタプルを前記記憶空間に書き込んだ装置に当該第２のタプルを送信するステップと、
所望する前記第２のタプルの属性条件、又は、任意の前記第２のタプルを管理する装置に読み出される第２のデータと当該第２のデータの属性情報を有する第３のタプルを管理する装置が、前記第３のタプルを前記記憶空間に書き込む場合に、前記記憶空間に書き込まれた前記第２のタプルのうち属性条件が当該第３のタプルの属性条件と一致するものを検索し、検索された前記第２のタプルを読み出し、検索された前記第２のタプルを前記記憶空間に書き込んだ装置に当該第３のタプルを送信し、前記記憶空間に書き込まれた前記第４のタプルのうち属性条件が当該第３のタプルの属性条件と一致するものを検索し、検索された前記第４のタプルを読み出し、検索された前記第４のタプルを前記記憶空間に書き込んだ装置に当該第３のタプルを送信するステップと、
第３のデータと前記第３のタプルを指定するための属性条件を有する第４のタプルを管理する装置が、前記第４のタプルを前記記憶空間に書き込む場合に、前記記憶空間に書き込まれた前記第３のタプルのうち属性条件が当該第４のタプルの属性条件と一致するものを検索し、検索された前記第３のタプルを読み出し、検索された前記第３のタプルを前記記憶空間に書き込んだ装置に当該第４のタプルを送信するステップと、
を含む間接通信方法。
【請求項４】
前記第１のタプルを管理する装置が、前記第１のタプルを前記記憶空間に書き込む場合に、前記記憶空間に書き込まれた前記第２のタプルのうち属性条件が当該第１のタプルの属性情報を包含するものを検索し、検索された前記第２のタプルを前記記憶空間に書き込んだ装置に当該第１のタプルを送信するステップをさらに含むことを特徴とする、請求項３に記載の間接通信方法。
【請求項５】
複数の端末が共通の通信網に接続され、前記通信網上に存在する記憶空間に対して属性名と属性値のペアであるタプルを読み書きすることで通信を行う間接通信システムにおいて、
第１のデータと当該第１のデータの属性情報とを有する第１のタプルを前記記憶空間に書き込むステップと、
所望するデータの属性条件を有する第２のタプルを前記記憶空間に書き込む場合に、前記記憶空間に書き込まれた前記第１のタプルの属性情報を当該第２のタプルの属性条件で検索し、検索された前記第１のタプルを読み出し、前記記憶空間に書き込まれた前記第３のタプルのうち属性条件が当該第２のタプルの属性条件と一致するものを検索し、検索された前記第３のタプルを読み出し、検索された前記第３のタプルを前記記憶空間に書き込んだ装置に当該第２のタプルを送信するステップと、
所望する前記第２のタプルの属性条件、又は、任意の前記第２のタプルを管理する装置に読み出される第２のデータと当該第２のデータの属性情報を有する第３のタプルを前記記憶空間に書き込む場合に、前記記憶空間に書き込まれた前記第２のタプルのうち属性条件が当該第３のタプルの属性条件と一致するものを検索し、検索された前記第２のタプルを読み出し、検索された前記第２のタプルを前記記憶空間に書き込んだ装置に当該第３のタプルを送信し、前記記憶空間に書き込まれた前記第４のタプルのうち属性条件が当該第３のタプルの属性条件と一致するものを検索し、検索された前記第４のタプルを読み出し、検索された前記第４のタプルを前記記憶空間に書き込んだ装置に当該第３のタプルを送信するステップと、
第３のデータと前記第３のタプルを指定するための属性条件を有する第４のタプルを前記記憶空間に書き込む場合に、前記記憶空間に書き込まれた前記第３のタプルのうち属性条件が当該第４のタプルの属性条件と一致するものを検索し、検索された前記第３のタプルを読み出し、検索された前記第３のタプルを前記記憶空間に書き込んだ装置に当該第４のタプルを送信するステップと、
をコンピュータに実行させるためのプログラム。
【請求項６】
前記第１のタプルを前記記憶空間に書き込む場合に、前記記憶空間に書き込まれた前記第２のタプルのうち属性条件が当該第１のタプルの属性情報を包含するものを検索し、検索された前記第２のタプルを前記記憶空間に書き込んだ装置に当該第１のタプルを送信するステップをさらにコンピュータに実行させることを特徴とする、請求項５に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タプル空間を利用した間接通信を行う間接通信システム、間接通信方法、及びプログラムに関する。
【背景技術】
【０００２】
ユビキタスサービスなど複数の端末を用いたネットワークで提供されるサービスの開発・運用を効率化するためには、サービスを構成するプログラム／端末の追加・変更・削除に対して柔軟に対応できる通信プラットフォーム（通信網）が必要である。この通信プラットフォームの要求条件を満足する通信モデルの候補としてTupleSpace（タプル空間）（非特許文献１参照）がある。TupleSpaceでは複数のプログラム間で論理的に一つの空間を共有し、各プログラム同士は、その共有空間に対してデータを読み書きすることによって間接的に通信する。
【０００３】
TupleSpaceを用いた通信では、各端末あるいはサーバ上で動作するTupleSpace用のプログラム同士がTupleSpace（あるいはTupleStorage；タプルストレージ）に対してTuple（タプル；Key-Value Pair＝キーと値の組）を読み書きすることで間接的に通信する。
【０００４】
具体的には送信端末の書き込み用Tuple（Actual;アクチュアル）と受信端末の読み出し用Tuple（Forma1；フォーマル）とのマッチング処理により通信が発生する。書き込み用Tuple（Actual）は、データと、そのデータの属性情報を有する。読み出し用Tuple（Formal）は、読み出されるデータの属性条件を有する。そして、読み出し用Tuple（Formal）の属性条件に該当する属性情報を有する書き込み用Tuple（Actual）がTupleSpaceに存在する場合には、読み出し用Tuple（Formal）を登録した受信端末へその旨が通知される。なお、以下の説明では、ある属性条件に該当する属性情報を有するTupleを検索する処理を「マッチング処理」という。また、以下の説明では、マッチング処理において属性条件に属性情報が適合することを「マッチングする」という。
【０００５】
図１に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）内容のマッチングにより宛先が決定されるため、通信相手のアドレスを事前に把握している必要がない。
【００１０】
しかしながら、このような従来のTupleSpaceの通信モデルを用いた通信システムでは、読み出し用Tuple（Formal）を登録する端末（受信端末）主導の通信となっており、書き込み用Tuple（Actual）を登録する端末（送信端末）が受信端末の存否を認識することや、送信端末が読み出し用Tuple（Formal）を読み出すことは実現されていなかった。
【００１１】
このような問題に対し、TeenyLIME（非特許文献２参照）は、探索用Tuple（Capability Tuple）を用いることによってこのような問題の解決を図っている。探索用Tuple（Capability Tuple）は、書き込み用Tuple（Actual）を登録する送信端末が生成し得るデータの属性情報を有する。探索用Tuple（Capability Tuple）の属性情報に読み出し用Tuple（Formal）の属性条件がマッチングした場合、探索用Tuple（Capability Tuple）を登録した送信端末によって、この読み出し用Tuple（Formal）が読み出される。このような探索用Tuple（Capability Tuple）を用いることによって、書き込み用Tuple（Actual）を登録しようとする端末（送信端末）は、この書き込み用Tuple（Actual）のデータを読み出す可能性のある読み出し用Tuple（Formal）を読み出すことや、このような読み出し用Tuple（Formal）を登録した受信端末の存否を確認することが可能となる。
【００１２】
TeenyLIMEによれば、送信端末が受信端末の存否を確認することができるため、受信端末が現れるまでデータを生成・送信する必要が無く、データの生成・送信の処理回数を低減させることによって、バッテリで駆動している端末の寿命（動作可能時間）を延伸することが可能となる。また、TeenyLIMEによれば、受信端末によって登録された読み出し用Tuple（Formal）を送信端末が読み出すことが可能であるため、受信端末は送信端末へのデータの要求とデータのFormalとを、単一の読み出し用Tuple（Formal）を登録することのみによって実現することが可能となる。
【非特許文献１】D. Gelernter, "Generative communication in linda," ACM Trans.Prog.Lang.Syst., vol.7, no.1, pp.80-112, Jan.l985.
【非特許文献２】Paolo Costa, Luca Mottola, Amy L.Murphy, and Gian Pietro Picco, "Teeny LIME: Transiently Shared Tuple Space Middleware for Wireless Sensor Networks," In Proceedings of the International Workshop on Middleware for Sensor Networks, co-located with the 7th International Middleware Conference (Middleware), Melbourne, Australia, November, 2006.
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかしながら、TeenyLIMEでは、受信端末が読み出し用Tuple（Formal）を登録する度に、探索用Tuple（Capability Tuple）と新たに登録された読み出し用Tuple（Formal）とのマッチング処理のみならず、読み出す必要のない書き込み用Tuple（Actual）と新たに登録された読み出し用Tuple（Formal）とのマッチング処理までもが実行されてしまう。このような、読み出す必要のない書き込み用Tuple（Actual）とのマッチング処理は無駄となってしまう。
【００１４】
さらに、受信端末が、読み出し用Tuple（Formal）の登録によって書き込み用Tuple（Actual）の読出を意図していない場合（例えば、センサ端末２の設定変更の場合や、アクチュエータ端末３の制御命令の送信の場合）には、上述したように登録した際に行われるマッチング処理のみならず、その後に行われるマッチング処理（その後に新たに登録された書き込み用Tuple（Actual）とのマッチング処理）も無駄となってしまう。
【００１５】
TupleSpaceにおけるマッチング処理の効率は、検索対象となるTupleの総数、及びマッチング処理の発生頻度に依存する。また、TupleSpaceに存在するTupleの総数に占める各Tuple種別（TeenyLIMEにおいては、Actual、Formal、Capability Tuple、の三つのTuple種別がある）の割合は、書き込み用Tuple（Actual）の割合が多数を占める。これは、読み出し用Tuple（Formal）及び探索用Tuple（Capability Tuple）がプログラム毎に登録されるのに対し、書き込み用Tuple（Actual）はデータが生成される度に登録されるためである。このように、書き込み用Tuple（Actual）の数は大変多いため、上述したような書き込み用Tuple（Actual）との不必要なマッチング処理の発生により、TupleSpaceにおけるマッチング処理の効率が低下してしまうという問題があった。
【００１６】
上記事情に鑑み、本発明は、書き込み用Tuple（Actual）との不必要なマッチング処理を削減しマッチング処理の効率を向上させることを可能とする間接通信システム、間接通信方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１７】
［１］上記の課題を解決するため、本発明の一態様は、複数の端末が共通の通信網に接続され、前記通信網上に存在する記憶空間に対して属性名と属性値のペアであるタプルを読み書きすることで通信を行う間接通信システムであって、第１のデータと当該第１のデータの属性情報とを有する第１のタプルを管理する装置と、所望するデータの属性条件を有する第２のタプルを管理する装置と、所望する前記第２のタプルの属性条件、又は、任意の前記第２のタプルを管理する装置に読み出される第２のデータと当該第２のデータの属性情報を有する第３のタプルを管理する装置と、第３のデータと前記第３のタプルを指定するための属性条件を有する第４のタプルを管理する装置と、を備え、前記第１のタプルを管理する装置は、前記第１のタプルを前記記憶空間に書き込み、前記第２のタプルを管理する装置は、前記第２のタプルを前記記憶空間に書き込む場合に、前記記憶空間に書き込まれた前記第１のタプルの属性情報を当該第２のタプルの属性条件で検索し、検索された前記第１のタプルを読み出し、前記記憶空間に書き込まれた前記第３のタプルのうち属性条件が当該第２のタプルの属性条件と一致するものを検索し、検索された前記第３のタプルを読み出し、検索された前記第３のタプルを前記記憶空間に書き込んだ装置に当該第２のタプルを送信し、前記第３のタプルを管理する装置は、前記第３のタプルを前記記憶空間に書き込む場合に、前記記憶空間に書き込まれた前記第２のタプルのうち属性条件が当該第３のタプルの属性条件と一致するものを検索し、検索された前記第２のタプルを読み出し、検索された前記第２のタプルを前記記憶空間に書き込んだ装置に当該第３のタプルを送信し、前記記憶空間に書き込まれた前記第４のタプルのうち属性条件が当該第３のタプルの属性条件と一致するものを検索し、検索された前記第４のタプルを読み出し、検索された前記第４のタプルを前記記憶空間に書き込んだ装置に当該第３のタプルを送信し、前記第４のタプルを管理する装置は、前記第４のタプルを前記記憶空間に書き込む場合に、前記記憶空間に書き込まれた前記第３のタプルのうち属性条件が当該第４のタプルの属性条件と一致するものを検索し、検索された前記第３のタプルを読み出し、検索された前記第３のタプルを前記記憶空間に書き込んだ装置に当該第４のタプルを送信する。
【００１８】
［２］本発明の一態様は、上述した間接通信システムであって、前記第１のタプルを管理する装置は、前記第１のタプルを前記記憶空間に書き込む場合に、前記記憶空間に書き込まれた前記第２のタプルのうち属性条件が当該第１のタプルの属性情報を包含するものを検索し、検索された前記第２のタプルを前記記憶空間に書き込んだ装置に当該第１のタプルを送信することを特徴とする。
【００１９】
［３］本発明の一態様は、複数の端末が共通の通信網に接続され、前記通信網上に存在する記憶空間に対して属性名と属性値のペアであるタプルを読み書きすることで通信を行う間接通信システムにおいて、第１のデータと当該第１のデータの属性情報とを有する第１のタプルを管理する装置が、前記第１のタプルを前記記憶空間に書き込むステップと、所望するデータの属性条件を有する第２のタプルを管理する装置が、前記第２のタプルを前記記憶空間に書き込む場合に、前記記憶空間に書き込まれた前記第１のタプルの属性情報を当該第２のタプルの属性条件で検索し、検索された前記第１のタプルを読み出し、前記記憶空間に書き込まれた前記第３のタプルのうち属性条件が当該第２のタプルの属性条件と一致するものを検索し、検索された前記第３のタプルを読み出し、検索された前記第３のタプルを前記記憶空間に書き込んだ装置に当該第２のタプルを送信するステップと、所望する前記第２のタプルの属性条件、又は、任意の前記第２のタプルを管理する装置に読み出される第２のデータと当該第２のデータの属性情報を有する第３のタプルを管理する装置が、前記第３のタプルを前記記憶空間に書き込む場合に、前記記憶空間に書き込まれた前記第２のタプルのうち属性条件が当該第３のタプルの属性条件と一致するものを検索し、検索された前記第２のタプルを読み出し、検索された前記第２のタプルを前記記憶空間に書き込んだ装置に当該第３のタプルを送信し、前記記憶空間に書き込まれた前記第４のタプルのうち属性条件が当該第３のタプルの属性条件と一致するものを検索し、検索された前記第４のタプルを読み出し、検索された前記第４のタプルを前記記憶空間に書き込んだ装置に当該第３のタプルを送信するステップと、第３のデータと前記第３のタプルを指定するための属性条件を有する第４のタプルを管理する装置が、前記第４のタプルを前記記憶空間に書き込む場合に、前記記憶空間に書き込まれた前記第３のタプルのうち属性条件が当該第４のタプルの属性条件と一致するものを検索し、検索された前記第３のタプルを読み出し、検索された前記第３のタプルを前記記憶空間に書き込んだ装置に当該第４のタプルを送信するステップと、を含む間接通信方法である。
【００２０】
［４］本発明の一態様は、上述した間接通信方法であって、前記第１のタプルを管理する装置が、前記第１のタプルを前記記憶空間に書き込む場合に、前記記憶空間に書き込まれた前記第２のタプルのうち属性条件が当該第１のタプルの属性情報を包含するものを検索し、検索された前記第２のタプルを前記記憶空間に書き込んだ装置に当該第１のタプルを送信するステップをさらに含むことを特徴とする。
【００２１】
［５］本発明の一態様は、複数の端末が共通の通信網に接続され、前記通信網上に存在する記憶空間に対して属性名と属性値のペアであるタプルを読み書きすることで通信を行う間接通信システムにおいて、第１のデータと当該第１のデータの属性情報とを有する第１のタプルを前記記憶空間に書き込むステップと、所望するデータの属性条件を有する第２のタプルを前記記憶空間に書き込む場合に、前記記憶空間に書き込まれた前記第１のタプルの属性情報を当該第２のタプルの属性条件で検索し、検索された前記第１のタプルを読み出し、前記記憶空間に書き込まれた前記第３のタプルのうち属性条件が当該第２のタプルの属性条件と一致するものを検索し、検索された前記第３のタプルを読み出し、検索された前記第３のタプルを前記記憶空間に書き込んだ装置に当該第２のタプルを送信するステップと、所望する前記第２のタプルの属性条件、又は、任意の前記第２のタプルを管理する装置に読み出される第２のデータと当該第２のデータの属性情報を有する第３のタプルを前記記憶空間に書き込む場合に、前記記憶空間に書き込まれた前記第２のタプルのうち属性条件が当該第３のタプルの属性条件と一致するものを検索し、検索された前記第２のタプルを読み出し、検索された前記第２のタプルを前記記憶空間に書き込んだ装置に当該第３のタプルを送信し、前記記憶空間に書き込まれた前記第４のタプルのうち属性条件が当該第３のタプルの属性条件と一致するものを検索し、検索された前記第４のタプルを読み出し、検索された前記第４のタプルを前記記憶空間に書き込んだ装置に当該第３のタプルを送信するステップと、第３のデータと前記第３のタプルを指定するための属性条件を有する第４のタプルを前記記憶空間に書き込む場合に、前記記憶空間に書き込まれた前記第３のタプルのうち属性条件が当該第４のタプルの属性条件と一致するものを検索し、検索された前記第３のタプルを読み出し、検索された前記第３のタプルを前記記憶空間に書き込んだ装置に当該第４のタプルを送信するステップと、をコンピュータに実行させるためのプログラムである。
【００２２】
［６］本発明の一態様は、上述したプログラムであって、前記第１のタプルを前記記憶空間に書き込む場合に、前記記憶空間に書き込まれた前記第２のタプルのうち属性条件が当該第１のタプルの属性情報を包含するものを検索し、検索された前記第２のタプルを前記記憶空間に書き込んだ装置に当該第１のタプルを送信するステップをさらにコンピュータに実行させることを特徴とする。
【発明の効果】
【００２３】
本発明により、書き込み用Tuple（Actual）との不必要なマッチング処理を削減し、マッチング処理の効率を向上させることが可能となる。
【発明を実施するための最良の形態】
【００２４】
本発明におけるTupleSpaceは、図１を参照して説明したタプル空間TupleSpaceの通信モデルを独自に拡張したものであり、タプル種別としてはactual及びformalに加えて、capable及びreachableが用いられる。
【００２５】
actual（第１のタプル）は、送信端末がTupleSpaceにデータを書き込む際に用いられ、データと当該データの属性情報（データ属性情報）とを有する。formal（第２のタプル）は、受信端末がTupleSpaceからactualを読み出すために用いられ、読み出されるactualが有するデータの属性条件を有する。capable（第３のタプル）は、TupleSpaceからformalを読み出すために用いられ、読み出されるformalが有する属性条件か、任意のformalによって読み出されうるデータと当該データのデータ属性情報を有する。reachable（第４のタプル）は、TupleSpaceからcapableを読み出すために用いられ、データと当該データを読み出すcapableを指定するための属性条件とを有する。
【００２６】
図２に本発明の実施の形態によるTupleSpaceの通信モデルを示す。上述したように、各端末上で動作するプログラム同士（１１０，２１０，３１０）はTupleSpace（あるいはTupleStorage）５０に対してTuple（Key-Value Pair）を読み書きすることで間接的に通信する。なお、図２は本実施の形態の通信モデルを模式的に示したものであり、この通信モデルを実現する通信システムには各端末１０〜３０がそれぞれ複数台接続されても良い。
【００２７】
図２に示す通信モデルでは、サーバ端末１０と、センサ端末２０と、アクチュエータ端末３０とが、ユビキタスネットーク４０に接続されている。各端末１０〜３０上で実行されているプログラム１１０、２１０、３１０および各端末１０〜３０あるいは図示していない他の端末内のメモリなどの記憶手段と、通信手段としてのユビキタスネットーク４０とによって、各端末１０〜３０のプログラム１１０、２１０、３１０などの間で論理的に共有される一つの空間（メモリ空間）であるTupleSpace５０が構成されている。プログラム同士がこの共有空間であるTupleSpace５０に対してデータを読み書きすることで、各端末間の通信が間接的に行われる。このようなTupleSpace５０は、ユビキタスネットワーク４０に接続された各端末の記憶領域のうち他の端末にアクセス可能（読み書き可能）に解放された記憶領域や、ユビキタスネットワーク４０に接続され各端末１０〜３０によってアクセス可能（読み書き可能）に構成された記憶装置の記憶領域によって構成される。
【００２８】
なお、TulpleSpaceの通信モデルでは、TulpleSpace５０を介して任意の二つの端末のプログラム問での通信が可能であり、それらの通信はすべて独立している。例えば、センサ端末２０とアクチュエータ端末３０のプログラム同士２１０と３１０は、TulpleSpace５０を介して通信可能である。また、同一端末の異なるプログラム同士もTulpleSpace５０を介して通信可能である。また、センサ端末２０とサーバ端末１０とのプログラム間の通信と、サーバ端末１０とアクチュエータ端末３０とのプログラム間の通信は独立して行われる。
【００２９】
また、TulpleSpace５０の通信モデルは、図２に示すように、サーバ端末１０、センサ端末２０、アクチュエータ端末３０等の各端末間のプログラム同士が独立して通信を行う形態のほか、他の通信形態によって実現されることも可能である。例えば、サーバ端末１０が管理サーバとして動作することによってその管理サーバ上で実行されているプログラムを介して他の各端末が通信を行う形態をとることも可能である。この場合、サーバ端末１０のプログラム１１０がセンサ端末２０のプログラム２１０とアクチュエータ端末３０のプログラム３１０との間の通信を仲介することによって、センサ端末２０とアクチュエータ端末３０との間の通信が実現される。TupleSpace５０においてどのような形態が採用されるかは、設計者が適宜選択することができる。
【００３０】
図３は、各タプル種別の書式の具体例を表す図である。actualは、「date」、「position」、「address」、「subject」、「type」、「body」の項目を有する。「date」は、タイムスタンプ情報を表す項目であり、時刻情報を示す値が対応付けられる。「position」は、位置情報を表す項目であり、このactualをTupleSpace５０に登録した端末（以下、「送信端末」という）の位置に関する情報を示す値が対応付けられる。「address」は、アドレス情報を表す項目であり、送信端末のアドレスを示す値が対応付けられる。ここで、アドレス情報とは、例えばネットワークにおける論理的なアドレス情報であっても良く、例えばＩＰアドレスやＭＡＣアドレスやネットワーク名などであっても良い。また、アドレス情報とは、例えば端末が設置された物理的な場所を表す情報であっても良く、例えば住所や建物名などであっても良い。「subject」は、端末の種別情報を表す項目であり、送信端末の端末種別を示す値が対応付けられる。「type」は、端末へのコマンドやイベントの種別を表すキーであり、それらを表す値が対応づけられている。「body」は、センサ出力などの「パラメータ」（あるいはデータ）を表すキーであり、プログラム間で規定された任意のフィールドの集合が対応づけられている。この「body」に設定される値が送信されるデータとなる。
【００３１】
formal、capable、reachableは、「date_range」、「position_range」、「address_range」、「subject(N-gram)」、「type(N-gram)」、「body」の項目を有する。「date_range」は、読み出し条件（読み出されるデータの属性条件）のタイムスタンプ情報を表す項目であり、時刻の範囲を示す情報を示す値が対応付けられる。「position_range」は、読み出し条件の位置情報を表す項目であり、読み出そうとするデータを有するactualをTupleSpace５０に登録した端末（即ち送信端末）の位置の範囲に関する情報を示す値が対応付けられる。「address_range」は、読み出し条件のアドレス情報を表す項目であり、送信端末のアドレスの範囲を示す値が対応付けられる。「subject(N-gram)」は、読み出し条件の端末の種別情報を表す項目であり、送信端末の端末種別を示す値（部分一致を含む）が対応付けられる。「type(N-gram)」は、読み出し条件のコマンドやイベントの種別を表すキーであり、それらを表す値が対応づけられている。また、formal、capable、reachableは、それぞれ自身をTupleSpace５０へ登録した端末（以下、「登録端末」という）に対してデータを送信するためのアドレスの情報も有する。他の端末は、formal、capable、reachableが有するこのアドレスの情報を参照することによって、このTupleをTupleSpace５０に登録した端末に対してデータを送信すること（例えば、Tupleを通知することなど）が可能となる。また、formal、capable、reachableは、それぞれ自身がTupleSpace５０へ登録された時刻に関する情報も有する。他の端末は、formal、capable、reachableそれぞれについて、いずれが最新のものであるかを判断する際に、この登録された時刻に関する情報を参照することによって判断を行う。
【００３２】
図４は、本発明のTupleSpaceにおける各タプル種別の関係を表す図である。図４において、publisher６０、subscriber７０、listener８０、caster９０は、それぞれ通信プラットフォームに対応するタプル種別を登録する主体、即ち図２におけるプログラムを表す。従って、図２におけるサーバ端末１０、センサ端末２０、アクチュエータ端末３０は、それぞれpublisher６０、subscriber７０、listener８０、caster９０いずれか一つ又は複数のプログラムを備えることにより、TupleSpace５０を介して間接的に通信を行う。なお、publisher６０が搭載された端末が本発明における第１のタプルを管理する装置に相当し、subscriber７０が搭載された端末が本発明における第２のタプルを管理する装置に相当し、listener８０が搭載された端末が本発明における第３のタプルを管理する装置に相当し、caster９０が搭載された端末が本発明における第４のタプルを管理する装置に相当する。
【００３３】
publisher６０は、actualをTupleSpace５０に登録するプログラムである。subscriber７０は、formalをTupleSpace５０に登録するプログラムである。listener８０は、capableをTupleSpace５０に登録するプログラムである。caster９０は、reachableをTupleSpace５０に登録するプログラムである。なお、複数のプログラムがまとまった一つのプログラムとして構成されても良い。
【００３４】
図４において、Data、Formality、Capable、Reachabilityは、それぞれプログラムが取り扱うデータ種別を表す。各データ種別の内容は、プログラムによってTupleSpace５０に登録される際にそれぞれ対応するタプル種別に書式が変更される。
【００３５】
図４において、writeは、TupleSpace５０へのTupleの登録（書き込み）処理を表す。readは、TupleSpace５０からの能動的なTupleの読み出し処理を表す。takeは、TupleSpace５０からの能動的なTupleの読み出し処理の亜種である移動処理を表す。soundは、TupleSpace５０からの受動的なTupleの読み出し処理を表す。移動処理とは、TupleSpace５０からTupleを読み出すのと同時に、TupleSpace５０から当該Tupleを消去する処理である。各プログラム６０〜９０は、TupleSpace５０からの通知の種別に基づいて、能動的処理（read及びtake）と、受動的処理（sound）とを区別して行う。また、readとtakeのいずれを行うべきかについては、formalを登録する際にsubscriber７０が決定する。
【００３６】
図４において、matchingの矢印は、その矢印によって連結された二つのTupleの間でマッチング処理が行われることを表す。ここで、マッチング処理とは、属性条件に属性情報が適合するか否か、又は属性条件と属性条件とが適合するか否か、を判定する処理を表す。また、属性条件に属性情報が適合すること、又は属性条件と属性条件とが適合することをマッチングするという。矢印の向きは、マッチング処理の方向を表し、矢印の先のTupleにおける属性情報又は属性条件が、矢印の元のTupleにおける属性条件に包含されるか否か（適合するか否か）がマッチング処理によって判断される。
【００３７】
writeは、その主体に応じて、publish、subscribe、listen、castに分類される。publishは、publisher６０がTupleSpace５０にDataをactualとしてwriteする処理を表す。subscribeは、subscriber７０がTupleSpace５０にFormalityをformalとしてwriteする処理を表す。listenは、listener８０がTupleSpace５０にCapabilityをcapableとしてwriteする処理を表す。castは、caster９０がTupleSpace５０にReachabilityをreachableとしてwriteする処理を表す。
【００３８】
次に、各プログラム６０〜９０の動作について説明する。
publisher６０は、publishの際に、actualの内容とその生存期間（limit）を設定する。生存期間は、そのactualの有効期間を表わす。生存期間が満了するまでの間、actualはformalのマッチング処理の対象となる。また、publisher６０は、publishの際に、actualの属性情報に基づいてformalを逆検索する。
【００３９】
図５は、publisher６０の動作例を表すフローチャートである。まず、publisher６０は、登録しようとするactualをread又はtakeするformalを逆検索する（ステップＳ５０１）。具体的には、publisher６０は、自身が登録しようとするactualの属性情報に適合する属性条件を有するformalを検索する。このようなformalが存在しない場合（ステップＳ５０２−ＮＯ）、publisher６０は、actualをTupleSpace５０に登録し（ステップＳ５０３）、処理を終了する。
【００４０】
一方、このようなformalが存在する場合（ステップＳ５０２−ＹＥＳ）、publisher６０は、このformalをTupleSpace５０に登録したsubscriber７０に対し、自身が登録しようとしているTupleの通知を行う（ステップＳ５０４）。通知とは、Tupleの内容を送信することであり、Tupleがactualである場合は、actualのデータ、このデータの属性情報、actualの各設定内容（生存期間など）を送信することである。
【００４１】
次に、publisher６０は、このformalの設定が、readであるかtakeであるかについて判定する。readである場合（ステップＳ５０５−ＮＯ）、publisher６０は、actualをTupleSpace５０に登録する（ステップＳ５０６）。一方、takeである場合（ステップＳ５０５−ＹＥＳ）、publisher６０はactualをTupleSpace５０に登録せずに処理を終了する。なお、takeについては後述する。
【００４２】
subscriber７０は、subscribeの際に、formalの内容とその生存期間との設定、actual／capableのread／takeの設定、one／allの設定を行う。one／allの設定とは、通知されるTupleを、マッチングしたTupleの全てとするか（all）、マッチングしたTupleの内の一つ（本実施形態の場合は、最後にTupleSpace５０に登録されたTuple（即ち最新のTuple））とするか（one）を設定することである。
【００４３】
図６は、subscriber７０の動作例を表すフローチャートである。まず、subscriber７０は、登録しようとするformalをreadする最新のcapableを逆検索する（ステップＳ６０１）。具体的には、subscriber７０は、自身が登録しようとするformalの属性条件に適合する属性条件を有するcapableのうち最新のものを検索する。このようなcapableが存在する場合（ステップＳ６０２−ＹＥＳ）、subscriber７０はこのcapableを登録したlistener８０に対し、自身が登録しようとしているformalについて通知する（ステップＳ６０３）。
【００４４】
このようなcapableが存在しない場合（ステップＳ６０２−ＮＯ）、又はステップＳ６０３の処理の後、subscriber７０は、自身が登録しようとしているformalの設定がallであるか否か判断する。設定がallである場合（ステップＳ６０４−ＹＥＳ）、subscriber７０は、登録しようとするformalの属性条件にマッチングする全てのactual及びcapableを検索する（ステップＳ６０５）。
【００４５】
次に、subscriber７０は、マッチングしたcapableのうち、quietの設定がされているものを除外し（ステップＳ６０６）、残った全てのactual及びcapableをTupleSpace５０から読み出す（ステップＳ６０７）。そして、subscriber７０は、読み出したactual及びcapableそれぞれについてtake設定がなされているか否かを判断し、takeの設定がされているactual及びcapableをTupleSpace５０から削除する（ステップＳ６０８−ＹＥＳ，ステップＳ６０９）。このとき、subscriber７０は、takeの設定がされていないactual及びcapableについては削除を行わない（ステップＳ６０８−ＮＯ）。そして、subscriber７０は、formalをTupleSpace５０に登録して処理を終了する（ステップＳ６１０）。
【００４６】
ステップＳ６０４の処理において、設定がallでない場合（ステップＳ６０４−ＮＯ）、subscriber７０は、自身が登録しようとしているformalとマッチングするactualか、又はnoise設定のcapableのうち最後に登録されたものを検索する（ステップＳ６１１）。このようなTupleが存在しなかった場合（ステップＳ６１２−ＮＯ）、subscriber７０はformalをTupleSpace５０に登録して処理を終了する（ステップＳ６１０）。
【００４７】
ステップＳ６１２においてTupleが存在した場合（ステップＳ６１２−ＹＥＳ）、subscriber７０は、この検索されたTupleを読み出す（ステップＳ６１３）。そして、subscriber７０は、読み出したactual及びcapableそれぞれについてtake設定か否かを判断し、takeの設定がされているactual及びcapableをTupleSpace５０から削除し処理を終了する（ステップＳ６１４−ＹＥＳ，ステップＳ６１５）。このとき、subscriber７０は、takeの設定がされていないactual及びcapableについては削除を行わずに処理を終了する（ステップＳ６１４−ＮＯ）。
【００４８】
listener８０は、listenの際に、capableの内容とその生存期間との設定、one／allの設定、capableの受動的な読み出しを許可するか否か（noise／quiet）の設定を行う。capableがquietに設定されると、subscriber７０とcaster９０がTupleSpace５０におけるcapableを検索・読み出しする際に、このcapableは検索されたとしても読み出されない。
【００４９】
図７は、listener８０の動作例を表すフローチャートである。まず、listener８０は、自身が登録しようとするcapableの設定がnoiseであるか否か判断する（ステップＳ７０１）。設定がnoiseである場合（ステップＳ７０１−ＹＥＳ）、listener８０は、登録しようとするcapableをread又はtakeする最新のformalを逆検索する（ステップＳ７０２）。具体的には、listener８０は、自身が登録しようとするcapableの属性条件に適合する属性条件を有する最新のformalを検索する。このようなformalが見つかった場合（ステップＳ７０３−ＹＥＳ）、listener８０は、このformalをTupleSpace５０に登録したsubscriber７０に対し、登録しようとするcapableを通知する（ステップＳ７０４）。そして、listener８０は、登録しようとするcapableがtake設定である場合には（ステップＳ７０５）、このcapableをTupleSpace５０に登録することなく処理を終える。
【００５０】
ステップＳ７０１においてnoise設定でない場合（ステップＳ７０１−ＮＯ）、又はステップＳ７０３において逆検索の対象となるformalが存在しない場合（ステップＳ７０３−ＮＯ）、又はステップＳ７０５においてtake設定でない場合（ステップＳ７０５−ＮＯ）、listener８０は、登録しようとするcapableがall設定であるか否か判断する（ステップＳ７０６）。all設定である場合（ステップＳ７０６−ＹＥＳ）、listener８０は、登録しようとするcapableとマッチングする全てのformal及びreachableを検索する（ステップＳ７０７）。listener８０は、マッチングした全てのformal及びreachableを読み出す（ステップＳ７０８）。そして、listener８０は、capableをTupleSpace５０に登録し（ステップＳ７０９）、処理を終了する。
【００５１】
ステップＳ７０６において、登録しようとするcapableがall設定でない場合（ステップＳ７０６−ＮＯ）、listener８０は、登録しようとするcapableとマッチングするformal及びreachableのうち、最後に登録されたものを検索する（ステップＳ７１０）。このようなTupleが存在しない場合（ステップＳ７１１−ＮＯ）、listener８０は、capableをTupleSpace５０に登録し（ステップＳ７０９）、処理を終了する。一方、このようなTupleが存在する場合（ステップＳ７１１−ＹＥＳ）、listener８０は、このTupleを読み出し（ステップＳ７１２）、capableをTupleSpace５０に登録することなく処理を終了する。
【００５２】
caster９０は、castの際に、reachableの内容とその生存期間と通知されるcapable数の設定を行う。通知されるcapable数は、データを受信するlistener８０の数を表し、reachableの属性条件に基づくanycast／multicastを行うことができる。
【００５３】
図８は、caster９０の動作例を表すフローチャートである。まず、caster９０は、自身が登録しようとするreachableをreadする最新のcapableを逆検索する（ステップＳ８０１）。具体的には、caster９０は、自身が登録しようとするreachableの属性条件に適合する属性条件を有するcapableを検索する。このようなcapableが存在する場合（ステップＳ８０２−ＹＥＳ）、caster９０は、このcapableを登録したlistener８０に対し、自身が登録しようとするreachableを通知する（ステップＳ８０３）。
【００５４】
このようなcapableが存在しない場合（ステップＳ８０２−ＮＯ）、又はステップＳ８０３の処理の後、caster９０は、自身が登録しようとしているreachableの設定がallであるか否か判断する。設定がallである場合（ステップＳ８０４−ＹＥＳ）、caster９０は、登録しようとするreachableの属性条件にマッチングする全てのcapableを検索する（ステップＳ８０５）。
【００５５】
次に、caster９０は、マッチングしたcapableのうち、quietの設定がされているものを除外し（ステップＳ８０６）、残った全てのcapableをTupleSpace５０から読み出す（ステップＳ８０７）。そして、caster９０は、読み出したcapableそれぞれについてtake設定か否かを判断し、takeの設定がされているcapableをTupleSpace５０から削除する（ステップＳ８０８−ＹＥＳ，ステップＳ８０９）。このとき、caster９０は、takeの設定がされていないcapableについては削除を行わない（ステップＳ８０８−ＮＯ）。そして、caster９０は、reachableをTupleSpace５０に登録して処理を終了する（ステップＳ８１０）。
【００５６】
ステップＳ８０４の処理において、設定がallでない場合（ステップＳ８０４−ＮＯ）、caster９０は、自身が登録しようとしているreachableとマッチングし且つnoise設定のcapableのうち最後に登録されたものを検索する（ステップＳ８１１）。このようなTupleが存在しなかった場合（ステップＳ８１２−ＮＯ）、caster９０はreachableをTupleSpace５０に登録して処理を終了する（ステップＳ８１０）。
【００５７】
ステップＳ８１２においてTupleが存在した場合（ステップＳ８１２−ＹＥＳ）、caster９０は、この検索されたTupleを読み出す（ステップＳ８１３）。そして、caster９０は、読み出したcapableそれぞれについてtake設定か否かを判断し、takeの設定がされているcapableをTupleSpace５０から削除し処理を終了する（ステップＳ８１４−ＹＥＳ，ステップＳ８１５）。このとき、caster９０は、takeの設定がされていないcapableについては削除を行わずに処理を終了する（ステップＳ８１４−ＮＯ）。
【００５８】
従来のTeenyLIMEでは、本発明におけるactual、formal、capableに類似するTupleである、actual、formal、ctが用いられていたが、本発明におけるreachableに類似するTupleは用いられていなかった。そのため、送信端末主導の通信を効率的に実現できていなかった。即ち、本発明によれば、GET処理をformalを登録することのみによって実現することが可能となり、それに伴いTupleSpace５０に登録されるTupleの総数を削減させ、マッチング処理の発生頻度を抑えることが可能となった。また、reachableのマッチング処理の対象からactualを除くことにより、即ちreachableのマッチング処理の対象からTupleSpace５０に占める割合が支配的なTupleを除くことにより、送信端末主導の通信を効率的に実現することが可能となった。さらに、reachableとformalとを同じデータ種別（Formality）として扱うことによって、プログラムを配備する端末の実装規模を縮小させることが可能となった。
【００５９】
また、本発明により、TeenyLIMEにおけるメリットをそのまま享受することが可能であり、さらには、送信端末主導のデータ通信と受信端末主導のデータ通信とをそれぞれ独立に実現させることが可能となる。また、サーバ端末からセンサ／アクチュエータ端末へデータを送信する際に、当該データをどのセンサ／アクチュエータ端末が受信すべきか、各センサ／アクチュエータ端末がどのデータを受信すべきかの指定をサーバ端末で行うことが可能となる。また、受信端末の存否確認、送信端末へのデータ要求、通常のデータの読み出しにおけるマッチング処理をそれぞれ独立させることによって検索効率の向上を図ることが可能となる。さらに、送信端末へ受信端末のTupleを通知することによって、データがどの受信端末に読み出されたかを判断することが可能となる。
【００６０】
＜変形例＞
図４においては、listener８０がreachableとformalとを同じデータ種別（Formality）としてreadしているが、listener８０はreachableをReachabilityとして読み出しても良い。また、図４においては、listener９０がcapableとformalとの二つのTuple種別だけを処理すれば良く、caster９０としての役割を必要としないプログラムを配備する端末の実装規模を縮小することが可能となる。
【００６１】
また、図６のステップＳ６０１の処理において、subscriber７０は、noise設定されたcapableのみを検索の対象とし、このようなcapableを登録したlistener８０に対してステップＳ６０３の処理においてformalを通知しても良い。
【００６２】
また、subscriber７０は、subscribeの際に、formalの受動的な読み出しを許可するか否か（noise／quiet）の設定を行っても良い。formalがquietに設定されると、listener８０が図７のステップＳ７０７の処理においてTupleSpace５０におけるformalを検索しステップＳ７０８の処理において読み出しする際に、このformalは検索されたとしてもlistener８０によって読み出されない。即ち、この場合、listener８０は、図７のステップＳ７０８の処理において、noise設定されたformalを読み出し、quiet設定されたformalは読み出さない。
【００６３】
また、図７のステップＳ７０８の処理において、listener８０は、noise設定されたcapableのみを検索の対象とし、このようなcapableを登録したlistener８０に対してステップＳ６０３の処理においてformalを通知しても良い。
【００６４】
上述した実施形態における各端末の機能をコンピュータで実現するようにしても良い。その場合、これらの各機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【図面の簡単な説明】
【００６５】
【図１】TupleSpaceの通信モデルの具体的な一例を表す図である。
【図２】本発明の実施の形態によるTupleSpaceの通信モデルを表す図である。
【図３】各タプル種別の書式の具体例を表す図である。
【図４】本発明のTupleSpaceにおける各タプル種別の関係を表す図である。
【図５】publisherの動作例を表すフローチャートである。
【図６】subscriberの動作例を表すフローチャートである。
【図７】listenerの動作例を表すフローチャートである。
【図８】casterの動作例を表すフローチャートである。
【符号の説明】
【００６６】
１０…サーバ端末，  ２０…センサ端末，  ３０…アクチュエータ端末，  １１０，２１０，３１０…プログラム，  ４０…ユビキタスネットワーク，  ５０…TupleSpace，  ６０…publisher，  ７０…subscriber，  ８０…listener，  ９０…caster
【図１】
2010072718.tif 000003
【図２】
2010072718.tif 000004
【図３】
2010072718.tif 000005
【図４】
2010072718.tif 000006
【図５】
2010072718.tif 000007
【図６】
2010072718.tif 000008
【図７】
2010072718.tif 000009
【図８】
2010072718.tif 000010