(57)【要約】【課題】複数のデバイスが協働して動作するデバイス連携機構における各デバイスごとのプログラムを自動分散化して作成するプログラムまたはその装置を提供する。【解決手段】デバイス連携機構１２に対する一連のプログラムは、解析され、複数のデバイス３０、３２、３４のいずれかが実行可能な機能ごとに分割され、分割されたプログラムは、分割された動作を実行可能な機能を有するデバイス３０、３２、３４に割り当てられる。そして、各デバイス３０、３２、３４間にデータの送受信が必要かどうかが判定され、必要な場合はそのデバイス３０、３２、３４間の通信を実行させるための通信手順が決定される。以上の結果に基づいて、各デバイス３０、３２、３４が動作するためのデバイスプログラムが生成されので、前記一連のプログラムから、各デバイス３０、３２、３４が動作するためのデバイスプログラムを自動的に生成することができる。【選択図】図２
2007199869.tif 000002
【特許請求の範囲】
【請求項１】
複数のデバイスがネットワークで接続された環境下において、前記複数のデバイスの協働で成り立つ一連の動作を実行させるために記述された一連のプログラムを、各デバイスが持つ機能に関する情報を用いて、該デバイス間が連携できるよう、各デバイス上で実行可能なプログラムに自動的に分割可能な、デバイス連携機構の自動分散化プログラムであって、
前記一連のプログラムを解析し、データの処理や各デバイスの制御について分割可能なプログラム機能毎に、一連のプログラムを分割するプログラム分割手段と、
前記分割されたプログラムを、各デバイスが持つデバイス機能に関する情報を用いて、各デバイス毎に実行可能な分割されたプログラムを割り当てるプログラム割り当て手段と、
前記プログラム分割手段の結果に基づき、前記分割されたプログラムが実行されるデバイス間で、どのようなデータの送受信が必要かを解析し、該デバイス間の通信を実行するための通信手順を決定する通信手順決定手段と、
前記プログラム分割手段による一連のプログラムの分割、前記プログラム割り当て手段によるプログラムの各デバイス毎の割り当て、及び前記通信手順決定手段による通信手順の決定の結果に基づいて、各デバイスを連携動作させるためのデバイスプログラムを生成するデバイスプログラム生成手段
を含むことを特徴とするデバイス連携機構の自動分散化プログラム。
【請求項２】
複数のデバイスがネットワークで接続された環境下において、前記複数のデバイスの協働で成り立つ一連の動作を実行させるために記述された一連のプログラムを、各デバイスが持つ機能に関する情報を用いて、該デバイス間が連携できるよう、各デバイス上で実行可能なプログラムに自動的に分割可能な、デバイス連携機構の自動分散化装置であって、
前記一連のプログラムを解析し、データの処理や各デバイスの制御について分割可能なプログラム機能毎に、一連のプログラムを分割するプログラム分割手段と、
前記分割されたプログラムを、各デバイスが持つデバイス機能に関する情報を用いて、各デバイス毎に実行可能な分割されたプログラムを割り当てるプログラム割り当て手段と、
前記プログラム分割手段の結果に基づき、前記分割されたプログラムが実行されるデバイス間で、どのようなデータの送受信が必要かを解析し、該デバイス間の通信を実行するための通信手順を決定する通信手順決定手段と、
前記プログラム分割手段による一連のプログラムの分割、前記プログラム割り当て手段によるプログラムの各デバイス毎の割り当て、及び前記通信手順決定手段による通信手順の決定の結果に基づいて、各デバイスを連携動作させるためのデバイスプログラムを生成するデバイスプログラム生成手段
を含むことを特徴とするデバイス連携機構の自動分散化装置。
【請求項３】
請求項１に記載のデバイス連携機構の自動分散化プログラムであって、
前記デバイスが動作中においては、前記デバイスプログラム生成手段が生成したデバイスプログラムに対して前記デバイスの実行状態を反映させる実行状態反映手段を含む
ことを特徴とするデバイス連携機構の自動分散化プログラム。
【請求項４】
請求項２に記載のデバイス連携機構のプログラム自動分散化装置であって、
前記デバイスが動作中においては、前記デバイスプログラム生成手段が生成したデバイスプログラムに対して前記デバイスの実行状態を反映させる実行状態反映手段を含む
ことを特徴とするデバイス連携機構のプログラム自動分散化装置。
【請求項５】
請求項１または３に記載のデバイス連携機構の自動分散化プログラムであって、
前記プログラム分割手段は、指定された指標に応じて行う最適化の結果に基づいてプログラムを分割する
ことを特徴とするデバイス連携機構の自動分散化プログラム。
【請求項６】
請求項２または４に記載のデバイス連携機構のプログラム自動分散化装置であって、
前記プログラム分割手段は、指定された指標に応じて行う最適化の結果に基づいてプログラムを分割する
ことを特徴とするデバイス連携機構のプログラム自動分散化装置。
【請求項７】
請求項１、３または５に記載のデバイス連携機構の自動分散化プログラムであって、
前記通信手順決定手段は、デバイス間の通信におけるセキュリティを考慮して通信手段を決定する
ことを特徴とするデバイス連携機構の自動分散化プログラム。
【請求項８】
請求項２、４または６に記載のデバイス連携機構のプログラム自動分散化装置であって、
前記通信手順決定手段は、デバイス間の通信におけるセキュリティを考慮して通信手段を決定する
ことを特徴とするデバイス連携機構のプログラム自動分散化装置。
【請求項９】
請求項１、３、５または７に記載のデバイス連携機構の自動分散化プログラムであって、
前記デバイスプログラム生成手段または実行状態反映手段が生成したプログラムを、前記デバイスに対し書き込み可能とするデバイスプログラム更新手段を含む
ことを特徴とするデバイス連携機構の自動分散化プログラム。
【請求項１０】
請求項２、４、６または８に記載のデバイス連携機構のプログラム自動分散化装置であって、
前記デバイスプログラム生成手段または実行状態反映手段が生成したプログラムを前記デバイスに対し書き込み可能とするデバイスプログラム更新手段を含む
ことを特徴とするデバイス連携機構のプログラム自動分散化装置。
【請求項１１】
請求項９に記載のデバイス連携機構の自動分散化プログラムであって、
前記デバイスプログラム更新手段は、前記デバイスが動作中であっても、前記デバイスプログラム生成手段が生成したプログラムを前記デバイスに対して書き込み可能である
ことを特徴とするデバイス連携機構の自動分散化プログラム。
【請求項１２】
請求項１０に記載のデバイス連携機構のプログラム自動分散化装置であって、
前記デバイスプログラム更新手段は、前記デバイスが動作中であっても、前記デバイスプログラム生成手段が生成したプログラムを前記デバイスに対して書き込み可能である
ことを特徴とするデバイス連携機構のプログラム自動分散化装置。
【請求項１３】
請求項９または１１に記載のデバイス連携機構の自動分散化プログラムであって、
前記自動分散化プログラムは、前記デバイスプログラム更新手段により前記デバイスに前記デバイスプログラムが書き込まれた後は、新たなデバイスの連携が設定されるまで用いられない
ことを特徴とするデバイス連携機構の自動分散化プログラム。
【請求項１４】
請求項１０または１２に記載のデバイス連携機構のプログラム自動分散化装置であって、
前記プログラム自動分散化装置は、前記デバイスプログラム更新手段により前記デバイスに前記デバイスプログラムが書き込まれた後は、新たなデバイスの連携が設定されるまで用いられない
ことを特徴とするデバイス連携機構のプログラム自動分散化装置。
【請求項１５】
請求項１、３、５、７、９、１１または１３に記載のデバイス連携機構の自動分散化プログラム、または請求項２、４、６、８、１０、１２または１４に記載のプログラム自動分散化装置が用いられるデバイス連携機構。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のデバイスが通信回線を通して接続されたネットワーク環境下において、前記複数のデバイスの協働で成り立つ一連の動作を実行させるための一連のプログラムを各デバイスに連携して実行させるために分割する、コンピュータが実行可能なデバイス連携機構の自動分散化プログラムおよび装置に関するものである。更には、当該自動分散化プログラム装置を備えたり、または当該自動分散化プログラムを用いることができるデバイス連携機構に関する。
【背景技術】
【０００２】
通信機能を搭載した低コストな端末が開発されつつあり、それらを搭載したセンサ、家電機器、文房具等のさまざまな小型機器が通信回線に参加することが期待されている（たとえば特許文献１参照）。
【０００３】
このように複数の端末が通信回線を通して協働して一連の動作を行う場合、前記複数の端末が協働するために、制御ノードと呼ばれる機器がこれらの端末を制御することにより端末間の連携動作を可能とする遠隔メソッド呼び出し（ＲＰＣ）型と呼ばれる方式が提案されている。
【０００４】
この方式においては、各端末は端末固有の機能を実行し、その結果をすべて制御ノードに渡せばよく、端末間の連携動作に必要となる情報については、制御ノードが適宜各端末から受け取った情報から取捨選択を行って、当該情報を必要とする端末に渡すことで実現される。すなわち、前記遠隔メソッド呼び出し型においては、すべての端末は制御ノードによって動作が制御されており、各端末間の通信も直接端末間で行うことはできず、制御ノードを介して行わなければならなかった。したがって、各端末が動作をする間は常に制御ノードが存在していなければならないという問題が生じていた。
【０００５】
これに対し、上記の問題を解決する方法として、各端末間が直接通信を行う方式であるピアツーピア型と呼ばれる方式が提案されている。この方式においては、各端末に、その端末固有の機能に加え、予め定められた端末間の連携のための機能をもたせることにより、端末間の直接通信による連携動作が可能となる。この方式によれば、各端末が他の端末と直接通信を行うため、連携動作時には制御ノードが不要となり前述の遠隔メソッド呼び出し型における問題が解消され、また、前記通信は各端末間で必要となる内容の通信のみを行えばよいため、必要最小限の通信手順による通信で済むという利点がある。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、前記ピアツーピア方式においては、一の連携動作に関するプログラムがその連携動作を実行するすべての端末に分散して存在するため、連携機構の保守や開発は各端末ごとにプログラムを保守・開発しなければならず、手順が煩雑となる。また、一旦動作を開始した連携機構に対し、その動作中に新たな連携機構を追加・変更すること、いわゆる動的な追加・変更を行うことは困難である。
【０００７】
【特許文献１】特開２００５−２０５２２号公報
【０００８】
本発明は、以上の事情を背景として為されたものであり、その目的とするところは、複数のデバイスが通信回線を通して接続されたネットワーク環境下において、前記複数のデバイスの協働で成り立つ一連の動作を実行させるための一連のプログラムを各デバイスに連携して実行させるために分割する、コンピュータが実行可能なデバイス連携機構の自動分散化プログラムおよび装置を提供するところにある。更には、当該自動分散化プログラム装置を備えたり、または当該自動分散化プログラムを用いることができるデバイス連携機構を提供することにある。
【課題を解決するための手段】
【０００９】
かかる目的を達成するために、請求項１に係る発明の要旨とするところは、複数のデバイスがネットワークで接続された環境下において、前記複数のデバイスの協働で成り立つ一連の動作を実行させるために記述された一連のプログラムを、各デバイスが持つ機能に関する情報を用いて、該デバイス間が連携できるよう、各デバイス上で実行可能なプログラムに自動的に分割可能な、デバイス連携機構の自動分散化プログラムであって、（ａ）前記一連のプログラムを解析し、データの処理や各デバイスの制御について分割可能なプログラム機能毎に、一連のプログラムを分割するプログラム分割手段と、（ｂ）前記分割されたプログラムを、各デバイスが持つデバイス機能に関する情報を用いて、各デバイス毎に実行可能な分割されたプログラムを割り当てるプログラム割り当て手段と、（ｃ）前記プログラム分割手段の結果に基づき、前記分割されたプログラムが実行されるデバイス間で、どのようなデータの送受信が必要かを解析し、該デバイス間の通信を実行するための通信手順を決定する通信手順決定手段と、（ｄ）前記プログラム分割手段による一連のプログラムの分割、前記プログラム割り当て手段によるプログラムの各デバイス毎の割り当て、及び前記通信手順決定手段による通信手順の決定の結果に基づいて、各デバイスを連携動作させるためのデバイスプログラムを生成するデバイスプログラム生成手段を含むことを特徴とするものである。
【００１０】
また、請求項２に係る発明は、複数のデバイスがネットワークで接続された環境下において、前記複数のデバイスの協働で成り立つ一連の動作を実行させるために記述された一連のプログラムを、各デバイスが持つ機能に関する情報を用いて、該デバイス間が連携できるよう、各デバイス上で実行可能なプログラムに自動的に分割可能な、デバイス連携機構の自動分散化装置であって、（ａ）前記一連のプログラムを解析し、データの処理や各デバイスの制御について分割可能なプログラム機能毎に、一連のプログラムを分割するプログラム分割手段と、（ｂ）前記分割されたプログラムを、各デバイスが持つデバイス機能に関する情報を用いて、各デバイス毎に実行可能な分割されたプログラムを割り当てるプログラム割り当て手段と、（ｃ）前記プログラム分割手段の結果に基づき、前記分割されたプログラムが実行されるデバイス間で、どのようなデータの送受信が必要かを解析し、該デバイス間の通信を実行するための通信手順を決定する通信手順決定手段と、（ｄ）前記プログラム分割手段による一連のプログラムの分割、前記プログラム割り当て手段によるプログラムの各デバイス毎の割り当て、及び前記通信手順決定手段による通信手順の決定の結果に基づいて、各デバイスを連携動作させるためのデバイスプログラムを生成するデバイスプログラム生成手段
を含むことを特徴とするデバイス連携機構の自動分散化装置。
【００１１】
また、好適には、前記デバイス連携機構の自動分散化プログラムまたは前記デバイス連携機構のプログラム自動分散化装置は、前記デバイスが動作中においては、前記デバイスプログラム生成手段が生成したデバイスプログラムに対して前記デバイスの実行状態を反映させる実行状態反映手段を含むことを特徴とする。
【００１２】
また、好適には、前記プログラム分割手段は、指定された指標に応じて行う最適化の結果に基づいて、すなわち、該指標を最適化することを目的としつつプログラムを分割することを特徴とする。
【００１３】
また、好適には、前記通信手段決定手段は、デバイス連携機構を構成する各デバイス間における通信において、デバイスの認証やデータの暗号化によるセキュリティを考慮して通信手段を決定することを特徴とする。
【００１４】
また、好適には、前記デバイス連携機構の自動分散化プログラムまたは前記デバイス連携機構のプログラム自動分散化装置は、前記デバイスプログラム生成手段または実行状態反映手段が生成したプログラムを前記デバイスに対し書き込み可能とするデバイスプログラム更新手段を含むことを特徴とする。
【００１５】
また、好適には、前記デバイスプログラム更新手段は、前記デバイスが動作中であっても、前記デバイスプログラム生成手段が生成したプログラムを前記デバイスに対して書き込み可能であることを特徴とする。
【００１６】
また、好適には、前記デバイス連携機構の自動分散化プログラムまたは前記デバイス連携機構のプログラム自動分散化装置は、前記デバイスプログラム更新手段により前記デバイスに前記デバイスプログラムが書き込まれた後は、新たなデバイスの連携が設定されるまで用いられないことを特徴とする。
【００１７】
また、請求項１５に係る発明は、請求項１、３、５、７、９、１１または１３に記載のデバイス連携機構の自動分散化プログラム、または請求項２、４、６、８、１０、１２または１４に記載のプログラム自動分散化装置が用いられるデバイス連携機構である。
【発明の効果】
【００１８】
請求項１に係る発明のデバイス連携機構の自動分散化プログラム、あるいは請求項２に係る発明のデバイス連携機構のプログラム自動分散化装置によれば、前記一連のプログラムは、解析され、データの処理や各デバイスの制御について分割可能なプログラム機能毎に分割され、各デバイスが持つデバイス機能に関する情報を用いて、各デバイス毎に実行可能な分割され、また、前記分割されたプログラムが実行されるデバイス間で、どのようなデータの送受信が必要かを解析し、該デバイス間の通信を実行するための通信手順が決定される。そして、前記プログラムの分割、前記プログラムの各デバイス毎の割り当て、及び前記通信手順決定手段による通信手順の決定の結果に基づいて、各デバイスを連携動作させるためのデバイスプログラムが生成される。
【００１９】
請求項３に係る発明のデバイス連携機構の自動分散化プログラム、あるいは請求項４に係る発明のデバイス連携機構のプログラム自動分散化装置によれば、前記デバイスが動作中においては、前記デバイスプログラム生成手段の実行直前の前記デバイスの実行状態を反映したデバイスプログラムを生成することができるので、前記デバイスの実行中であっても、好適に、前記一連のプログラムから、各デバイスが動作するためのデバイスプログラムを生成することができ、連携構成を変更する直前のデバイスの状態を反映した連携構成の変更が可能となる。
【００２０】
請求項５に係る発明のデバイス連携機構の自動分散化プログラム、あるいは請求項６に係る発明のデバイス連携機構のプログラム自動分散化装置によれば、前記プログラム分割手段は、指定されたパラメータに応じて行う最適化の結果に基づいてプログラムを分割することから、前記一連のプログラム中、前記プログラム必須割り当て手段で割り当てられなかったプログラム部分、を前記指定されたパラメータに関して最適となるようにに分割し、各デバイスに実行させることができる。
【００２１】
請求項７に係る発明のデバイス連携機構の自動分散化プログラム、あるいは請求項８に係る発明のデバイス連携機構のプログラム自動分散化装置によれば、前記通信手順決定手段はデバイス間の認証やデータの暗号化によるセキュリティを考慮して通信手段を決定することから、各デバイス間の通信を安全に行うことができる。
【００２２】
請求項９に係る発明のデバイス連携機構の自動分散化プログラム、あるいは請求項１０に係る発明のデバイス連携機構のプログラム自動分散化装置によれば、前記デバイスプログラム生成手段が生成したデバイスプログラムを前記デバイスに対し書き込むこと、すなわちインストールができるので、生成された各デバイスが動作するためのデバイスプログラムを対応するデバイスに書き込むことができ、好適に連携構成を変更することができる。
【００２３】
請求項１１に係る発明のデバイス連携機構の自動分散化プログラム、あるいは請求項１２に係る発明のデバイス連携機構のプログラム自動分散化装置によれば、前記デバイスが動作中であっても、前記デバイスプログラム生成手段が生成したデバイスプログラムを前記デバイスに対して書き込み可能であるので、前記デバイスが動作中であっても、生成された各デバイスが動作するためのデバイスプログラムを対応するデバイスに書き込むことができ、好適に連携構成を変更することができる。
【００２４】
請求項１３に係る発明のデバイス連携機構の自動分散化プログラム、あるいは請求項１４に係る発明のデバイス連携機構のプログラム自動分散化装置によれば、前記自動分散化プログラムあるいは前記プログラムの自動分散化装置は、前記デバイスプログラム更新手段により前記デバイスに前記デバイスプログラムが書き込まれた後は、新たなデバイスの連携が設定されるまで用いられないので、前記デバイス連携機構の自動分散化プログラムが実行されるコンピュータあるいは前記デバイス連携機構のプログラム分散化装置は前記デバイスの動作中は必要とされず、各デバイスは単独で動作を行うことができる。
【００２５】
請求項１５に係る発明のデバイス連携機構によれば、前記デバイス連携機構においては、デバイス連携機構の自動分散化プログラムまたはプログラムの自動分散化装置が適用されているので、一連の動作を実行させるために記述された一連のプログラムを分散させ、各デバイスに連携して実行させることができる。
【発明を実施するための最良の形態】
【００２６】
以下、本発明の好適な実施の形態について図面を参照しつつ詳細に説明する。
【実施例】
【００２７】
図１（ａ）は、本発明の一実施例のデバイス連携機構の自動分散化プログラム（以下、「自動分散化プログラム」と称する。）５０を実行するコンピュータ１０とデバイス３０、３２、３４から成る機器の構成の一例を表す図である。なお、このコンピュータ１０はプログラムの自動分散化装置に対応する。デバイス３０、３２、及び３４は本実施例におけるデバイス連携機構１２を構成するものであり、デバイス３０は光・温度センサとして機能し、デバイス３２はスピーカとして機能し、デバイス３４は液晶表示器として機能する。また、コンピュータ１０では自動分散化プログラム５０が実行される。本図の様な、センサの情報に基づき他の機器が連動することを目的としてセンサおよび他の機器が配設されたネットワークは、センサネットワークと呼ばれる、一種のピアツーピア型のネットワークである。
【００２８】
図１（ｂ）は、デバイス３０、３２および３４の構成の例を表した図である。デバイス３０、３２、および３４は、たとえば無線通信機能を有する８ビットマイコン２４と各デバイス固有の機能を実現するための装置２２からなる。ここで、デバイス固有の機能を実現するための装置とは、デバイス３０では光センサおよび温度センサであり、デバイス３２ではスピーカであり、デバイス３４では液晶表示器である。また、これらのデバイスは電池などを用いて駆動することが可能であり、携帯性や取付が簡易であるという特徴を有する。
【００２９】
前記無線通信機能とは、たとえばマイコン２４に内蔵された無線通信部１４によって実現され、各デバイス３０、３２、および３４が連携動作を行うために必要となる各デバイス間の通信や、自動分散化プログラム５０が実行されるコンピュータ１０により各デバイス３０、３２、および３４に搭載されたマイコン２４の動作のためのデバイスプログラムが書き込まれる際の通信に用いられるものである。この無線通信は、たとえば特定小電力無線のような簡易な方法により行われる。
【００３０】
また、各デバイスに搭載されたマイコン２４は、たとえば８ビットのＣＰＵ１８及び４キロバイトのメモリ２０を使用した、いわゆる低レベルのコンピュータであり、これらのマイコンにＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｔｅｍ）は搭載されていなくてもよい。
【００３１】
また、各デバイス３０、３２および３４に搭載されたマイコン２４には、メモリ２０に、上記無線通信機能によりデバイスの外部から供給されたデータを書き加えたり、あるいはそのデータに書き換えたりする機能が含まれており、また、メモリ２０の内容を上記無線通信機能により外部に提供する機能が含まれている。
【００３２】
コンピュータ１０では、自動分散化プログラム５０が実行されており、上述のような、各デバイス３０、３２、３４に搭載されたマイコン２４の動作のためのデバイスプログラムが書き込まれる際の各デバイス３０、３２、および、３４との通信に用いられる通信を行うための無線通信装置１０ａを有している。
【００３３】
自動分散化プログラム５０を実行させるにあたり、自動分散化プログラム５０は、対象となるデバイス連携機構１２の構成、すなわち、デバイス連携機構１２がどのようなデバイスによって構成されているかや、前記デバイス連携機構１２を構成する各デバイスがどのような機能を有しているかすなわち、これら各デバイスが単独でどのような動作をなし得るかについての情報を事前情報として有している。また、前記デバイス連携機構１２を構成する各デバイスの有する機能を組み合わせて実行することによって実現できる機能や、その機能はどのデバイスとどのデバイスが連携することによって実現されるかについての情報（「デバイス連携情報」と称する。）も有している。
【００３４】
図２は、コンピュータ１０およびそれによって実行される自動分散化プログラム５０の機能を表した機能ブロック線図である。本図において、トランスレータ６２は、ユーザによって作成され自動分散化プログラム５０に入力された、デバイス連携機構１２に行わせる一連の動作を記述したソース・コードを、自動分散化プログラム５０がその内部で後述する処理を行う上で便宜上適した表現である内部表現に変換する。ここで、内部表現とは、たとえば、自動分散化プログラム５０の内部で処理される独自のプログラム言語であったり、フローチャートであったりする。
【００３５】
プログラム分割手段５２は、トランスレータによって変換されたソース・コードの内部表現によって表現されたデバイス連携機構１２に行わせる一連の動作を、複数の動作に分割する。この分割は、自動分散化プログラム５０が有する、デバイス連携機構１２を構成する各デバイス３０、３２および３４が単独でどのような動作をなし得るかについての予め記憶された情報や上記デバイス連携情報に基づいて、前記一連の動作を構成するデータの処理や各デバイス３０、３２および３４の制御について分割可能なプログラム機能ごとに行われる。また、分割の過程において、複数のデバイスの連携によりなされる動作が生じた場合には、上記デバイス連携情報により、その連携によりなされる動作を各デバイスが単独でなし得る動作となるまで分割する。この結果、上記一連の動作を、各デバイス３０、３２および３４が単独でなし得る動作ごとに分割する。
【００３６】
このとき、前記プログラム分割手段５２においては、指定された指標に応じた最適化を行うことを特徴としたプログラムの分割を行うことができる。前記指定された指標には例えば、プログラムサイズや、データ通信量、通信速度、実行速度などが該当する。これら様々な指標を最適化するような、分割手法の最適化が可能になる。
【００３７】
プログラム割り当て手段５４は、プログラム分割手段５２によって分割された各動作を、デバイス連携機構１２を構成するいずれのデバイスによって実行させるかを予め記憶された各デバイスが有するデバイス機能に関する情報に基づいて決定する。たとえば、プログラム分割手段５２は、デバイス連携機構１２を構成する各デバイスが単独でなし得る動作ごとに分割していることから、その分割された動作は、その動作をなし得る単独のデバイスに割り当てることが可能である。なお、分割された一の動作について、それを実行し得る複数のデバイスが存在する場合、それをいずれのデバイスに割り当てることも可能であるが、たとえば、直前の命令と同じ端末で行うようにすればよい。
【００３８】
通信手順決定手段５６は、プログラム分割手段５２によって分割された一連の動作がプログラム割り当て手段５４によってデバイス連携機構１２を構成する各デバイスに割り当てられた結果に基づいて、各デバイス間に通信の必要があるか否かを判断する。また、通信の必要があると判断されたデバイス間については、どのような通信手順（「プロトコル」ともいう。）により通信が行われるかを決定する。このとき、通信の必要があるか否かは、たとえば上記分割された一連の動作を順次実行するにあたり、実行するデバイスが切り替わるごとに当該切り替わる前後のデバイス間において通信の必要があると判断される。また、使用される通信手順の決定には、通信の行われるデバイス間で、どのようなデータが（すなわちデータの内容、量等）、どれくらいの頻度で通信されるのか等が検討され、通信手順が決定される。このとき、デバイス間で通信の対象となるデータは、たとえば、切り替わった後のデバイスがその後使用する可能性のある変数とすることができ、また、通信手順の決定は、たとえば、事前に準備された複数の通信方式の中から上記デバイス間で行われる通信に最も適した通信手順が選択されることによって決定される。
【００３９】
また、上記通信手順決定手段５６における通信手順の決定では、デバイス間相互の認証や、通信内容の暗号化など、セキュリティを考慮した通信手段を採用することもできる。例えば、生成されるデバイスプログラム間で共通の暗号化手法に基づく通信手順が決定されることで、低コストで高度なセキュリティを実現できる。
【００４０】
デバイスプログラム生成手段５８は、デバイス連携機構１２を構成する各デバイスについて、プログラム割り当て手段５４によって割り当てられた動作と、通信手順決定手段５６によって決定された通信内容および通信手段についての情報に基づいて、各デバイスが実行すべき動作を表すデバイスプログラムを自動分散化プログラム５０の内部表現として生成する。たとえば、プログラム割り当て手段５４によって割り当てられた動作を表わす内部表現に、通信手順決定手段５６によって決定された送信あるいは受信のための内部表現を加えることで生成される。
【００４１】
コンパイラ６６は、デバイスプログラム生成手段５８によって自動分散化プログラム５０の内部表現として生成された、各デバイスが実行すべき動作を表すデバイスプログラムを、その各デバイスに搭載されたマイコン２４が実行することのできるバイナリ・コード（「メモリ・イメージ」とも称する）に変換する。
【００４２】
メモリ読み出し手段６４は、各デバイス３０、３２および３４のマイコン２４中のメモリ２０の内容を無線通信機能を通して提供する機能により、各デバイスにそのメモリ２０の内容、すなわち各デバイスの実行状態を提供させ、各デバイス３０、３２および３４及びコンピュータ１０の有する無線通信機能によりその内容を取り込む。
【００４３】
実行状態反映手段６８は、コンパイラ６６によって変換されたバイナリ・コードに、メモリ読み出し手段６４によりコンピュータ１０に取得された各デバイス３０、３２および３４の実行状態を反映させることにより、新たなバイナリ・コードを作成する。コンパイラ６６により生成されたバイナリ・コードによれば、これを各デバイス３０、３２および３４において実行する場合、初期状態から開始することとなる一方、この実行状態反映手段８６により作成されたバイナリ・コードによれば、メモリ読み出し手段６４により読み出された各デバイスの実行状態がバイナリ・コードに反映されており、その状態から開始できる。
【００４４】
デバイスプログラム更新手段６０は、コンパイラ６６によって変換されたデバイスプログラムのバイナリ・コード又は実行状態反映手段６８により作成されたデバイスの実行状態が反映された新たなバイナリ・コードを自動分散化プログラム５０の動作するコンピュータ１０及び各デバイス３０、３２および３４の有する無線通信機能により各デバイスに送信し、各デバイスの有する、マイコン２４中のメモリ２０に上記無線通信機能を介してデバイスの外部から供給されたデータを書き加えたりあるいはそのデータに書き換えたりする機能により、各デバイスのマイコン中のメモリの内容をそのバイナリ・コードに書き換える。
【００４５】
図３は、本発明の一実施例の自動分散化プログラム５０およびそれが実行されるコンピュータ１０の動作を表すフローチャートである。本図において、トランスレータ６２に対応するステップ（以下「ステップ」を省略する。）ＳＡ１では、まず、ユーザによって作成された複数のデバイスの協働で成り立つ一連の動作を実行させるための一連のプログラムのソース・コードが、トランスレータ６２によりそのプログラムにおける内部表現に置き換えて表現される。
【００４６】
本実施例においては、たとえば、図１で表されるデバイス連携機構１２に対し、一連の動作として、「表示器に温度を表示し、センサの電源電圧が低くなっていれば表示器に「ｌｏｗ  ｂａｔｔｅｒｙ」と表示する」という動作を行わせる場合を考える。この一連の動作は図４のフローチャートで表される。まずＳＡ１においては、この動作を実行するためのプログラムのソース・コードが、トランスレータにより自動分散化プログラム５０において扱うことができる内部表現に置き換えられる。
【００４７】
続いて、プログラム分割手段５２に対応するＳＡ２においては、ＳＡ１において自動分散化プログラム５０の内部表現に置き換えて表現されたソース・コードの内容が、デバイス連携機構を構成するデバイスの有する機能および各デバイスの有する機能を組み合わせて実行可能な機能についての情報を参照しつつ解析される。
【００４８】
すなわち、上記一連の動作が、どのような動作によって構成されているかが解析され分割される。このとき、デバイス３０、３２、３４の有する機能についての情報、すなわちデバイス３０は明度および温度を計測する機能を有し、デバイス３２は音を鳴らす機能を有し、デバイス３４は文字を表示する機能を有するという予め記憶された情報に加え、これらの機能の組み合わせによって実現される機能ついての情報を参照しつつ解析を行う。このとき、たとえば、上記一連の動作が、予め記憶されたプログラムに従って、図４のフローチャートの各ステップの一つ一つに分解するようにして解析される。その結果、上記一連の動作である「表示器に温度を表示し、続いて、センサの電源電圧が低くなっていれば表示器に「ｌｏｗ  ｂａｔｔｅｒｙ」と表示する」という動作は、図４における各ステップからなると解析される。すなわち、ＳＢ１は、「温度センサより温度を取得し変数ｔｅｍｐｅｒａｔｕｒｅに代入する」という動作であり、ＳＢ２は「表示器に変数ｔｅｍｐｅｒａｔｕｒｅの値を表示する」という動作であり、ＳＢ３は「センサの電池より電池電圧を取得し変数ｂａｔｔｅｒｙＶｏｌｔａｇｅに代入する」という動作であり、ＳＢ４は「変数ｂａｔｔｅｒｙＶｏｌｔａｇｅと事前に定められたしきい値との大小を判定する」という動作であり、ＳＢ５はＳＢ４の判断が肯定された場合に「画面に「ｌｏｗ  ｂａｔｔｅｒｙ」と表示する」という動作である。
【００４９】
プログラム割り当て手段５４に対応するＳＡ３においては、ＳＡ２において分割された各動作が、いずれのデバイス３０、３２または３４によって実行されるかが決定される。すなわち、ソース・コードに含まれる各動作が、デバイス連携機構を構成する各デバイスに割り当てられる。
【００５０】
たとえば、一連の動作に含まれる各動作のうち、「温度センサより温度を取得し変数ｔｅｍｐｅｒａｔｕｒｅに代入する」という動作であるＳＢ１は光・温度センサであるデバイス３０に割り当てられ、「表示器に変数ｔｅｍｐｅｒａｔｕｒｅの値を表示する」という動作であるＳＢ２は表示器であるデバイス３４に割り当てられ、「センサの電池より電池電圧を取得し変数ｂａｔｔｅｒｙＶｏｌｔａｇｅに代入する」という動作であるＳＢ３は光・温度センサであるデバイス３０に割り当てられ、ＳＢ４の判断が肯定された場合に実行される「画面に「ｌｏｗ  ｂａｔｔｅｒｙ」と表示する」という動作であるＳＢ５は、表示器であるデバイス３４に割り当てられる。それぞれ、デバイス３０及びデバイス３４に特有の機能によって実行される動作だからである。一方、「変数ｂａｔｔｅｒｙＶｏｌｔａｇｅと事前に定められたしきい値との大小を判定する」という動作であるＳＢ４は、光・温度センサであるデバイス３０と表示器であるデバイス３４のいずれによっても実行し得るが、本実施例においては、このような複数のデバイスが実行可能な動作をどのデバイスが実行するかを決定するにあたっては、直前の動作と同じデバイスで行うことと定めることにより、この動作は、ＳＢ４に相当する動作は光・温度センサであるデバイス３０に割り当てられることとなる。そして、スピーカであるデバイス３２は使用しないことが決定される。
【００５１】
通信手順決定手段５６に対応するＳＡ４においては、ＳＡ３において各デバイスに各動作が割り当てられた結果に基づいて、各デバイス間に通信の必要があるか否かが判断される。また、通信の必要があると判断されたデバイス間については、どのような通信手順により通信が行われるのかが決定される。
【００５２】
本実施例においては、「温度センサより温度を取得し変数ｔｅｍｐｅｒａｔｕｒｅに代入する」という動作であるＳＢ１から「表示器に変数ｔｅｍｐｅｒａｔｕｒｅの値を表示する」という動作であるＳＢ２へ変数ｔｅｍｐｅｒａｔｕｒｅの値が渡される必要があり、また、ＳＢ４は「変数ｂａｔｔｅｒｙＶｏｌｔａｇｅと事前に定められたしきい値との大小を判定する」という動作の結果、当該判定が肯定された場合にはその結果が、「画面に「ｌｏｗ  ｂａｔｔｅｒｙ」と表示する」という動作であるＳＢ５に渡される必要がある。また、ＳＢ２とＳＢ３はそれぞれデバイス３４とデバイス３０の異なるデバイスによって実行されるが、ＳＢ２に続いてＳＢ３が行われるために、ＳＢ２が終了した旨がＳＢ３に渡される必要がある。このように、本実施例においては、一連の動作がデバイス３０とデバイス３４の二つのデバイスに連携して動作される場合、上記の３回の通信が行われる必要がある。また、これらの通信はいずれも１回の通信がデバイス間で行われるのみであるから、このデバイス間の通信手順として、たとえば、単純な通信手順である、単に一のメッセージを受け渡すことのみからなる通信手順を用いることが決定される。
【００５３】
デバイスプログラム作成手段５８に対応するＳＡ５においては、デバイス連携機構を構成する各デバイスについて、ＳＡ３で割り当てられた動作と、ＳＡ４で決定された通信内容および通信手段についての情報に基づいて、各デバイスが実行すべき動作が自動分散化プログラム５０の内部表現として表現される。
【００５４】
本実施例においては、光・温度センサであるデバイス３０の実行すべき動作は、ＳＢ１に相当する「センサより温度を取得し、変数ｔｅｍｐｅｒａｔｕｒｅに代入する」「その変数の内容をデバイス３４に送信する」という動作、および、ＳＢ３およびＳＢ４に相当する「デバイス３４よりＳＢ２が終了した旨を受信し、その後センサの電池電圧を取得し、変数ｂａｔｔｅｒｙＶｏｌｔａｇｅに代入する。変数ｂａｔｔｅｒｙＶｏｌｔａｇｅが予め定められたしきい値よりも小さいか判定し、小さい場合はデバイス３４にその旨を送信する」という動作となる。また、液晶表示器であるデバイス３４の実行すべき動作は、ＳＢ２に相当する、「デバイス３０より受信したデータを表示器に表示し、その後デバイス３０に対し表示が終了した旨を送信する」という動作、および、ＳＢ５に相当する「デバイス３０より変数ｂａｔｔｅｒｙＶｏｌｔａｇｅが予め定められたしきい値よりも小さい旨を受信した場合は、表示器に「ｌｏｗ  ｂａｔｔｅｒｙ」と表示する」という動作となる。これらを意味する内部表現を作成する。
【００５５】
図５は、ＳＡ５により作成される各デバイスの実行すべき動作の内部表現に相当するフローチャートである。図５左側はデバイス３０の動作を表すフローチャート、右側はデバイス３４の動作を表すフローチャートである。デバイス３０の実行すべき動作は、ＳＣ１１において、ＳＢ１に相当する「センサより温度を取得し、変数ｔｅｍｐｅｒａｔｕｒｅに代入」し、続くＳＣ１２において、「その変数の内容をデバイス３４に送信」し、一旦終了する。ここで、動作するデバイスがデバイス３０からデバイス３４に切り替わる。デバイス３４の実行すべき動作は、ＳＤ１１において、「デバイス３０より値を受信」し、続くＳＤ１２においては、「ＳＤ１１において受信した値をデバイス３４におけるプログラム中の変数ｔｅｍｐｅｒａｔｕｒｅに代入」する。ＳＤ１３においては、ＳＢ２に相当する「変数ｔｅｍｐｅｒａｔｕｒｅの値を表示器に表示」し、ＳＤ１４において「デバイス３０に対し表示が終了した旨を送信する」という動作を行って一旦終了する。再び動作するデバイスはデバイス３４からデバイス３０に切り替わる。デバイス３０は、ＳＣ２１において、「デバイス３４よりＳＢ２が終了した旨を受信」し、ＳＣ２２において、ＳＢ３に相当する「センサの電池電圧を取得し、変数ｂａｔｔｅｒｙＶｏｌｔａｇｅに代入」する。そして、ＳＣ２３において、ＳＢ４に相当する「変数ｂａｔｔｅｒｙＶｏｌｔａｇｅが予め定められたしきい値よりも小さいか判定」を行い、小さいと判定された場合は、ＳＣ２４において、「デバイス３４にその旨を送信する」という動作を行い終了する。その後さらに動作するデバイスがデバイス３０からデバイス３４に切り替わり、デバイス３４は、ＳＤ２１において、「デバイス３０からその旨を受信」し、ＳＤ２２において、「画面に「ｌｏｗ  ｂａｔｔｅｒｙ」と表示し、どの動作を終了する。なお、ＳＣ２３において、変数ｂａｔｔｅｒｙＶｏｌｔａｇｅが予め定められたしきい値よりも大きいと判定された場合には、デバイス３０の動作はそのまま終了する。従って、デバイス３４はＳＤ２１〜ＳＤ２２が実行されることがなく、ＳＤ１４が実行され一旦終了した後、そのまま終了する。
【００５６】
コンパイラ６６に対応するＳＡ６においては、ＳＡ５で作成された各デバイス毎の動作を表す内部表現を、各デバイスのマイコンが実行可能な形式であるバイナリ・コードに変換、すなわちコンパイルする。
【００５７】
メモリ読み出し手段６４及び実行状態反映手段６８に対応するＳＡ７においては、デバイス連携機構１２を構成する各デバイスのうち、使用するデバイス３０および３４のメモリ２０の内容を、無線通信機能を通してコンピュータ１０に取り込む。そして、そのメモリの内容、すなわちデバイス３０およびデバイス３４の実行状態を、コンパイラ６６によって変換されたバイナリ・コードに反映させることにより新たなバイナリ・コードを作成する。
【００５８】
デバイスプログラム更新手段６０に対応するＳＡ８においては、ＳＡ７において作成されたデバイスの実行状態が反映されたバイナリ・コードを、無線通信機能により各デバイスに送信し、メモリ２０の内容をそのバイナリ・コードに書き換える。以上でフローチャートが終了する。
【００５９】
なお、本発明のプロトタイプとして、無線通信機能を内蔵したワンチップマイコンであるNordic Semiconductor社製nRF24E1 上で、マイコン上のメモリ内容を無線経由で読み書きできるコアプロトコルが既に実現されている。これにより、マイコン上のプログラムコードを無線経由で動的に書き換えることができる。本マイコンを利用した実施例として、センサノード（光センサ、温度センサ）、スピーカノード、液晶パネルノードを製作し、前述の連携動作を実証した。
【００６０】
以上のように、本実施例の自動分散化プログラム５０、あるいはプログラムの自動分散化装置として機能するコンピュータ１０によれば、デバイス連携機構１２に実行させる一連のプログラムは、プログラム分割手段５２により解析され、各デバイス３０、３２または３４のいずれかが実行可能な機能に基づいて、データの処理や各デバイスの制御について分割可能なプログラム機能毎に分割され、前記分割されたプログラムは、プログラム割り当て手段５４によりデバイス連携機構１２を構成するデバイスのうちの分割されたプログラムに相当する動作を実行可能な機能を有するデバイスに割り当てられ、通信手順決定手段５６により分割されたプログラムが割り当てられた各デバイス間にデータの送受信が必要かどうかが判定され、必要な場合はそのデバイス間の通信を実行させるための通信手順が決定され、デバイスプログラム生成手段５８により前記プログラム分割手段によるプログラムの分割、前記プログラム割り当て手段５４によるデバイスの割り当て、及び前記通信手段決定手段５６による通信手順の決定の結果に基づいて、各デバイスが動作するためのデバイスプログラムが生成されるので、前記一連のプログラムから、各デバイスが動作するためのデバイスプログラムを生成することができる。このようにすれば、デバイス連携機構１２に一連の動作を実行させるためのプログラムをデバイス単位ではなく、複数デバイスをまたがった連携機能単位で記述することができるため、連携動作の開発・保守が容易になる。また、一連の動作を実行させるためのプログラムの分割は、全て静的に行われるため、最適化によりコンパクトなコードを生成できるため、低レベルな実行環境に適している
【００６１】
また、本実施例の自動分散化プログラム５０、あるいはプログラムの自動分散化装置として機能するコンピュータ１０によれば、各デバイスが動作中においては、前記デバイスプログラム生成手段５８の実行直前の前記デバイスの実行状態を反映したデバイスプログラムを生成することができるので、前記デバイスの実行中であっても、好適に、前記一連のプログラムから、各デバイスが動作するためのデバイスプログラムを生成することができ、連携構成を変更する直前のデバイスの状態を反映した連携構成の変更が可能となる。
【００６２】
また、本実施例のプログラム分割手段５２によれば、指定された指標に応じて行う最適化の結果に基づいて、すなわち、該指標を最適化することを目的としつつプログラムを分割することができる。例えば、前記指標をデータ通信量とすれば、該データ通信量の最適化によって、携帯電話などのデータ通信料が高価なデバイスを利用する際にも、本発明が利用できる。また、広域に分散したデバイス間で、遅延なく連携を行う場合には、データの通信速度が重要となり、該データの通信速度を最適化するようなプログラムの分割を行うことができる。高速な実行が必要な連携の場合には、実行速度による最適化を目的としたプログラムの分割を行うことができる。このように、様々な目的に応じ、指標を選択することで分割手法が最適化されることができる。
【００６３】
また、本実施例の通信手段決定手段５６によれば、デバイス連携機構を構成する各デバイス間の認証やデータの暗号化によるセキュリティを考慮して通信手段を決定することができる。このようにすれば、低コストで高度なセキュリティが実現できる。
【００６４】
また、本実施例の自動分散化プログラム５０、あるいはプログラムの自動分散化装置として機能するコンピュータ１０によれば、デバイスプログラム更新手段６０は、前記デバイスプログラム生成手段５８が生成したデバイスプログラムを前記デバイスに対し書き込むこと、すなわちインストールができるので、生成された各デバイスが動作するためのデバイスプログラムを対応するデバイスに書き込むことができ、好適に連携構成を変更することができる。
【００６５】
また、本実施例の自動分散化プログラム５０、あるいはプログラムの自動分散化装置として機能するコンピュータ１０によれば、デバイスプログラム更新手段６０は、前記デバイスが動作中であっても、前記デバイスプログラム生成手段５８が生成したデバイスプログラムを前記デバイスに対して書き込み可能であるので、前記デバイスが動作中であっても、生成された各デバイスが動作するためのデバイスプログラムを対応するデバイスに書き込むことができ、好適に連携構成を変更することができる。
【００６６】
また、本実施例の自動分散化プログラム５０、あるいはプログラムの自動分散化装置として機能するコンピュータ１０によれば、前記デバイスプログラム更新手段６０により前記デバイスに前記デバイスプログラムが書き込まれた後は、新たなデバイスの連携が設定されるまで用いられないので、前記自動分散化プログラム５０が実行されるコンピュータ１０あるいは前記デバイス連携機構のプログラム分散化装置は前記デバイスの動作中は必要とされず、各デバイスは単独で動作を行うことができる。
【００６７】
また、本実施例のデバイス連携機構１２は、本実施例の自動分散化プログラム５０、あるいはプログラムの自動分散化装置として機能するコンピュータ１０が適用されることができる。これにより、デバイス連携機構１２が、低レベル実行環境である場合であっても、ピアーツーピア型の連携を動的に構成できる。
【００６８】
以上、本発明の実施例を図面に基づいて詳細に説明したが、本発明はその他の態様においても適用される。
【００６９】
本実施例においては、各デバイス３０、３２および３４は光・温度センサ、スピーカ、液晶表示器であったが、これに限られず、さまざまな機能を持ったデバイスが用いられても良く、デバイスの数もこれに限られない。また、各デバイスは、いわゆる低レベルのＣＰＵを使用したマイコンが使用されＯＳが搭載されていなかったが、これに限られず、ＯＳが搭載されたコンピュータであってもよい。また、本実施例においては、自動分散化プログラム５０を実行するのにコンピュータ１０を用いたが、コンピュータに限られず、ＰＤＡ（携帯情報端末）や携帯電話などを用いても良い。
【００７０】
本実施例においては、自動分散化プログラム５０は、事前情報として、デバイス連携情報、すなわち、デバイス連携機構１２を構成する各デバイスの有する機能を組み合わせて実行することによって実現できる機能や、その機能はどのデバイスとどのデバイスが連携することによって実現されるかについての情報を有していたが、これは、デバイス連携機構１２を構成する各デバイスの情報から適宜作り出すことによって得ても良い。
【００７１】
なお、本実施例においては、自動分散化プログラム５０を実行するコンピュータ１０およびデバイス連携機構を構成する各デバイス３０、３２および３４は無線通信回線にて接続されていたが、必ずしも無線に限られず、有線通信回線によって接続されていても良い。
【００７２】
ＳＡ７において、ＳＡ６でコンパイルされたバイナリ・コードに対してデバイスの実行状態を反映させて新たなバイナリ・コードを作成したが、ＳＡ５において各デバイスごとの動作を表す内部表現が作成された後、ＳＡ６でコンパイルがされる前に前記内部表現にデバイスの実行状態を反映させた後にコンパイルを行っても良い。
【００７３】
ＳＡ３において、プログラム分割手段５２によって分割された各動作をデバイス連携機構１２を構成するいずれのデバイスによって実行させるかを決定する際において、分割された一の動作について、それを実行し得る複数のデバイスが存在する場合、直前の命令と同じ端末で行うようにしたが、これに限られず、たとえば、いくつかの選択肢を準備し最適な結果を選択することもできる。
【００７４】
ＳＡ４において、通信手順が決定されるのに際し、デバイス間で通信の対象となるデータを、切り替わった後のデバイスがその後使用する可能性のある変数としたが、プログラム内で使用する全ての変数を渡しても良く、現在の値がデバイス連携機構１２全体を通じてその後使用される可能性のある変数のみを渡しても良く、デバイスにおいて動作が一旦終了した後に再度動作が再開される場合において、以前の値から更新された可能性のある変数のみを渡しても良い。また、これらの方法を複数組み合わせることによっても良い。
【００７５】
また、ＳＡ４において各デバイス間で行われる通信の通信手順を決定する際、予め準備されたいくつかの通信手順から最適なものを選択することにより決定されたが、その都度適当な通信手順を作成しても良い。
【００７６】
本実施例においては、ＳＡ５において各デバイスプログラムを作成する際には、単にＳＡ１で作成された内部表現の順番どおりに各デバイスの動作を決定したが、この場合において、各デバイス、あるいはデバイス連携機構１２全体の実行の結果が改善する（たとえば実行に要する時間を短縮する）ように、例えば命令の実行順序の制約を解析し、同一の端末上での処理がまとまるように命令の順序を並び替えるなどの内部表現の最適化をしてもよい。また、命令間の依存関係を解析し、互いに依存関係のない命令を，各端末間で並行して実行させてもよい。
【００７７】
自動分散化プログラム５０がバイナリ・コードを各デバイスに書き込みを終了した後は、新たなデバイスの連携が設定されるまで、たとえば、デバイス連携機構１２に新たなデバイスが構成要素として加わるときや、デバイス連携機構１２に実行させる一連の動作を変更するときまでは自動分散化プログラム５０は用いられる必要がなく、従って自動分散化プログラム５０が動作するコンピュータと各デバイスの間の通信はその間なされる必要がない。図１（ａ）における破線は自動分散化プログラム５０が動作中のデバイス連携機構１２における通信の行われる向きを示しており、一点鎖線はデバイス連携機構１２を構成する各デバイスが動作を開始した後の通信の行われる向きを示している。したがって、自動分散化プログラム５０が動作するコンピュータ１０がバイナリ・コードを各デバイス３０、３４に書き込みを終了した後は、たとえばデバイス３２のような新しいデバイスがデバイス連携機構１２に加わったり、あるいは、デバイス３０又は３４にそれまで行っていた動作と異なる動作を行わせるまではコンピュータ１０は用いられる必要がなく、従ってコンピュータ１０と各デバイス３０、３２、３４の間の通信はその間なされる必要がない。
【００７８】
上述の実施例においては、ＳＡ２からＳＡ５までのステップを実行するにあたり、自動分散化プログラム５０が容易に取り扱うことができるため、ＳＡ１においてソース・コードを内部表現に変換し、ＳＡ６において内部表現をバイナリ・コードに変換したが、ソース・コードを内部表現として自動分散化プログラム５０に与えＳＡ１を省略することも可能であり、逆に、内部表現を用いず、自動分散化プログラム５０にソース・コードのままＳＡ２〜ＳＡ５のステップを実行させることによりＳＡ１を省略することも可能である。
【００７９】
上述の実施例においては、自動分散化プログラム５０は、デバイス連携機構１２を構成するデバイスについての情報、すなわち、どのような機能を有するデバイスがデバイス連携機構１２を構成しているかについての情報を予め有しており、これに基づいてプログラム分割手段５２およびプログラム割り当て手段５４を実行したが、これに限られず、たとえば、各デバイスおよびプログラムの自動分散化装置であるコンピュータ１０の有する無線通信機能により、デバイス連携機構１２を構成するデバイスについての情報を常時監視することにより、その情報を取得し、また随時自動的に更新してもよい。このようにすれば、デバイス連携機構１２にを構成する新たなデバイスが加わった場合において、自動分散化プログラム５０を自動的に再実行することにより、新たなデバイスが加わったデバイス連携機構１２についてのプログラムの自動分散化が実行され、新たなデバイスが加わったデバイス連携機構１２を構成する各デバイスが好適に作動することが可能となる。
【００８０】
上述の実施例において、メモリ読み出し手段６４やデバイスプログラム更新手段６０は、デバイス連携機構１２を構成する各デバイス３０、３２および３４との間で認証を行い、認証が行われたデバイスのみがメモリ読み出し手段６４やデバイスプログラム更新手段６０の対象となるようにしてもよい。すなわち、メモリ読み出し手段６４は認証が行われた、すなわち権限のあるデバイスからのみデバイスのメモリ２０の内容を読み出すことができ、また、デバイスプログラム更新手段６０は権限のあるデバイスに対してのみデバイスのプログラム書き換えをすることができるようにしてもよい。このようにすれば、安全に機器のプログラムを更新する仕組みが実現できる。
【００８１】
本発明は、例えば情報家電を相互に接続して操作するためのセンサーネットワーク技術においても、実施することができ、例えば異なるメーカ間の技術仕様の共通化等を図ることで、利用者の利便性を向上させることができる。センサーネットワーク技術は、センサーとしてのデバイスの情報に基づき、例えば表示機能その他の機能を有するデバイスを連動させる技術をいい、例えば住居内の温度調整等の他に、火災予防・盗難防止等も可能となって、快適な生活環境をもたらすことができ、本発明は極めて有用なものといえる。
【００８２】
その他、一々例示はしないが、本発明はその趣旨を逸脱しない範囲内において、種々の変更が加えられて実施されるものである。
【図面の簡単な説明】
【００８３】
【図１】本発明のデバイス連携機構の自動分散化プログラムが適用されるコンピュータとデバイス連携機構の概要を表した図、およびデバイス連携機構を構成するデバイスの概略を表した図である。
【図２】本発明のデバイス連携機構の自動分散化プログラムの機能を説明するブロック線図である。
【図３】本発明のデバイス連携機構の自動分散化プログラムの動作を表すフローチャートである。
【図４】図１（ａ）で示されるデバイス連携機構に実行させる一連の動作を示すフローチャートである。
【図５】本発明のデバイス連携機構の自動分散化プログラムにより各デバイス毎に分散された結果、各デバイス毎の動作を示すフローチャートである。
【符号の説明】
【００８４】
１０：コンピュータ
１２：デバイス連携機構
５０：自動分散化プログラム
５２：プログラム分割手段
５４：プログラム割り当て手段
５６：通信手順決定手段
５８：デバイスプログラム生成手段
６０：デバイスプログラム更新手段
６２：トランスレータ
６４：メモリ読み出し手段
６６：コンパイラ
６８：実行状態反映手段
【図１】
2007199869.tif 000003
【図２】
2007199869.tif 000004
【図３】
2007199869.tif 000005
【図４】
2007199869.tif 000006
【図５】
2007199869.tif 000007