(57)【特許請求の範囲】
【請求項１】
ネットワークを介して互いに接続された第１の通信装置と第２の通信装置とを備え、作業手順を表す１つ以上のプログラムコードと、該作業手順の進行状態を表す状態変数とからなる移動エージェントが該第１の通信装置から該第２の通信装置に向けて送信される通信システムにおいて、
前記第２の通信装置が、移動エージェントを構成するプログラムコードを保存する保存手段を備えたものであり、
前記第１の通信装置が、該第１の通信装置が前記第２の通信装置に所定の移動エージェントを送信するにあたり、該所定の移動エージェントを構成する各プログラムコードを前記第２の通信装置に通知し、該第２の通信装置から、該所定の移動エージェントを構成する各プログラムコードと同一のプログラムコードが該第２の通信装置に保存されているか否かを示す、各プログラムコードごとの保存情報を取得する保存情報取得手段と、
該所定の移動エージェントを構成する状態変数を前記第２の通信装置に向けて送信するとともに、前記保存情報取得手段によって取得された保存情報のうちのいずれかの保存情報が、該第２の通信装置にプログラムコードが保存されていないことを示している場合に、該所定の移動エージェントを構成するプログラムコードのうち該第２の通信装置にプログラムコードが保存されていないことを示す保存情報に対応するプログラムコードを該第２の通信装置に向けて送信する送信手段とを備えたものであり、
前記第２の通信装置が、前記第１の通信装置から送られてきた状態変数と、前記第１の通信装置からプログラムコードが送られてきた場合の該プログラムコードと、前記保存手段によって保存されたプログラムコードとに基づいて前記所定の移動エージェントを組み立てる組立手段を備えたものであることを特徴とする通信システム。
【請求項２】
作業手順を表す１つ以上のプログラムコードと、該作業手順の進行状態を表す状態変数とからなる移動エージェントを構成するプログラムコードを保存する保存手段を備えた他の通信装置とネットワークを介して接続され、移動エージェントを該他の通信装置に向けて送信する通信装置であって、
前記他の通信装置に所定の移動エージェントを送信するにあたり、該所定の移動エージェントを構成する各プログラムコードと同一のプログラムコードが該他の通信装置に保存されているか否かを示す、各プログラムコードごとの保存情報を取得する保存情報取得手段と、
前記所定の移動エージェントを構成する状態変数を前記他の通信装置に向けて送信するとともに、前記保存情報取得手段によって取得された保存情報のうちのいずれかの保存情報が、該他の通信装置にプログラムコードが保存されていないことを示している場合に、該所定の移動エージェントを構成するプログラムコードのうち該他の通信装置にプログラムコードが保存されていないことを示す保存情報に対応するプログラムコードを該他の通信装置に向けて送信する送信手段とを備えたことを特徴とする通信装置。
【請求項３】
前記保存情報取得手段が、前記所定の移動エージェントを構成する各プログラムコードがバージョンアップされてなるプログラムコード、および該所定の移動エージェントを構成する各プログラムコードと同一のプログラムコードのうちのいずれかのプログラムコードが前記他の通信装置に保存されている場合に該プログラムコードが保存されていることを示し、これら双方のプログラムコードのいずれもが保存されていない場合に該プログラムコードが保存されていないことを示す、各プログラムコードごとの保存情報を得るものであることを特徴とする請求項２記載の通信装置。
【請求項４】
作業手順を表す１つ以上のプログラムコードと、該作業手順の進行状態を表す状態変数とからなる移動エージェントを構成するプログラムコードを保存する保存手段を備えた他の通信装置とネットワークを介して接続されてなるコンピュータシステムに組み込まれて、該コンピュータシステムを、移動エージェントを該他の通信装置に向けて送信する通信装置として動作させる通信プログラムが記憶されてなる通信プログラム記憶媒体であって、
前記他の通信装置に所定の移動エージェントを送信するにあたり、該所定の移動エージェントを構成する各プログラムコードを前記第２の通信装置に通知し、該第２の通信装置から、該所定の移動エージェントを構成する各プログラムコードと同一のプログラムコードが前記他の通信装置に保存されているか否かを示す、各プログラムコードごとの保存情報を取得する保存情報取得手段と、
前記所定の移動エージェントを構成する状態変数を前記他の通信装置に向けて送信するとともに、前記保存情報取得手段によって取得された保存情報のうちのいずれかの保存情報が、該他の通信装置にプログラムコードが保存されていないことを示している場合に、該所定の移動エージェントを構成するプログラムコードのうち該他の通信装置にプログラムコードが保存されていないことを示す保存情報に対応するプログラムコードを該他の通信装置に向けて送信する送信手段とを備えた通信プログラムが記憶されてなることを特徴とする通信プログラム記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、作業手順を表す１つ以上のプログラムコードと、その作業手順の進行状態を表す状態変数とからなる移動エージェントを送受信する通信システム、そのような通信システムを構成する通信装置、およびコンピュータシステムをそのような通信装置として動作させる通信プログラムが記憶されてなる通信プログラム記憶媒体に関する。
【０００２】
【従来の技術】
近年、ネットワークの発達に伴って、サーバに蓄積されている情報の検索等を、ネットワークを介して行うことが多くなっており、今後ますます増大することが予想される。
【０００３】
しかし、検索等を行うために必要な複数の処理ステップを、ユーザがネットワークを介していちいちサーバ等に指示すると通信量が多量になる。また、インターネット等といった大きなネットワークでは、通信経路が途切れやすく、処理ステップをサーバ等に連続的に指示することが困難である。
【０００４】
このような問題を解決する手段として、ネットワーク上を移動し、移動先のサーバ等に対して複数の処理ステップをユーザの代わりに自律的に指示する移動エージェントが提案されている。移動エージェントは、移動先のサーバ等に複数の処理ステップを指示するための、移動エージェント自身の作業手順を表すプログラムコードと、その作業手順の進行状態を示す状態変数からなっており、状態変数には、例えば、作業を開始する前におけるその移動エージェントの内部状態を表す変数や、その移動エージェントによる作業の結果等が含まれる。また、移動エージェントは、自分自身を構成するプログラムコードおよび状態変数を移動先に向けて送信することによってネットワーク上を移動する。
【０００５】
このような移動エージェントによれば、連続的な指示をサーバ等に与えることができるとともに、検索等のように、単純な処理ステップを繰り返しサーバ等に指示する必要がある場合には通信量を低減することができる。
【０００６】
【発明が解決しようとする課題】
ところで、上述したように、ネットワークを介した検索等の必要性は今後ますます増大することが予想され、それらの検索等を移動エージェントを利用して行うこととすると、移動エージェントが多数同時にネットワーク上を移動するようになることが予想される。また、上述したように移動エージェントには作業手順を表すプログラムコードが含まれているため、一般に移動エージェント自身のデータ量は大きい。
【０００７】
このため、上述したように、通信量を低減する効果を移動エージェントが有するにもかかわらず、ネットワーク上を同時に移動している移動エージェントの数が増大するにつれて通信量が急速に増大する事が予想され、この通信量の低減を図ることが望まれている。
【０００８】
本発明は、上記事情に鑑み、移動エージェントがネットワーク上を移動する際の通信量を低減することができる通信システム、そのような通信システムを構成する通信装置、およびコンピュータシステムをそのような通信装置として動作させる通信プログラムが記憶されてなる通信プログラム記憶媒体を提供することを目的とする。
【０００９】
【課題を解決するための手段】
上記目的を達成する本発明の通信システムは、ネットワークを介して互いに接続された第１の通信装置と第２の通信装置とを備え、作業手順を表す１つ以上のプログラムコードと、その作業手順の進行状態を表す状態変数とからなる移動エージェントが第１の通信装置から第２の通信装置に向けて送信される通信システムにおいて、
第２の通信装置が、移動エージェントを構成するプログラムコードを保存する保存手段を備えたものであり、
第１の通信装置が、第１の通信装置が第２の通信装置に所定の移動エージェントを送信するにあたり、その所定の移動エージェントを構成する各プログラムコードと同一のプログラムコードが第２の通信装置に保存されているか否かを示す、各プログラムコードごとの保存情報を取得する保存情報取得手段と、
上記所定の移動エージェントを構成する状態変数を第２の通信装置に向けて送信するとともに、保存情報取得手段によって取得された保存情報のうちのいずれかの保存情報が、第２の通信装置にプログラムコードが保存されていないことを示している場合に、その所定の移動エージェントを構成するプログラムコードのうち第２の通信装置にプログラムコードが保存されていないことを示す保存情報に対応するプログラムコードを第２の通信装置に向けて送信する送信手段とを備えたものであり、
第２の通信装置が、第１の通信装置から送られてきた状態変数と、第１の通信装置からプログラムコードが送られてきた場合のそのプログラムコードと、保存手段によって保存されたプログラムコードとに基づいて上記所定の移動エージェントを組み立てる組立手段を備えたものであることを特徴とする。
【００１０】
本発明の通信システムによれば、移動エージェントを構成するプログラムコードのうち第２の通信装置に保存されているプログラムコードの送信が省略されるので、その分だけ通信量が低減されることとなる。
【００１１】
上記目的を達成する本発明の通信装置は、作業手順を表す１つ以上のプログラムコードと、その作業手順の進行状態を表す状態変数とからなる移動エージェントを構成するプログラムコードを保存する保存手段を備えた他の通信装置とネットワークを介して接続され、移動エージェントを他の通信装置に向けて送信する通信装置であって、
上記他の通信装置に所定の移動エージェントを送信するにあたり、その所定の移動エージェントを構成する各プログラムコードと同一のプログラムコードが他の通信装置に保存されているか否かを示す、各プログラムコードごとの保存情報を取得する保存情報取得手段と、
上記所定の移動エージェントを構成する状態変数を他の通信装置に向けて送信するとともに、保存情報取得手段によって取得された保存情報のうちのいずれかの保存情報が、他の通信装置にプログラムコードが保存されていないことを示している場合に、その所定の移動エージェントを構成するプログラムコードのうち他の通信装置にプログラムコードが保存されていないことを示す保存情報に対応するプログラムコードを他の通信装置に向けて送信する送信手段とを備えたことを特徴とする。
【００１２】
本発明の通信装置は、上記保存情報取得手段が、上記所定の移動エージェントを構成する各プログラムコードがバージョンアップされてなるプログラムコード、およびその所定の移動エージェントを構成する各プログラムコードと同一のプログラムコードのうちのいずれかのプログラムコードが上記他の通信装置に保存されている場合にそのプログラムコードが保存されていることを示し、これら双方のプログラムコードのいずれもが保存されていない場合にそのプログラムコードが保存されていないことを示す、各プログラムコードごとの保存情報を得るものであることが望ましい。
【００１３】
このように構成されると、保存されたプログラムコードのバージョン以下のバージョンのプログラムコードについて送信が省略されるので、通信量がいっそう低減されることとなる。
【００１４】
上記目的を達成する本発明の通信プログラム記憶媒体は、作業手順を表す１つ以上のプログラムコードと、その作業手順の進行状態を表す状態変数とからなる移動エージェントを構成するプログラムコードを保存する保存手段を備えた他の通信装置とネットワークを介して接続されてなるコンピュータシステムに組み込まれて、そのコンピュータシステムを、移動エージェントを他の通信装置に向けて送信する通信装置として動作させる通信プログラムが記憶されてなる通信プログラム記憶媒体であって、
上記他の通信装置に所定の移動エージェントを送信するにあたり、その所定の移動エージェントを構成する各プログラムコードと同一のプログラムコードが他の通信装置に保存されているか否かを示す、各プログラムコードごとの保存情報を取得する保存情報取得手段と、
上記所定の移動エージェントを構成する状態変数を他の通信装置に向けて送信するとともに、保存情報取得手段によって取得された保存情報のうちのいずれかの保存情報が、他の通信装置にプログラムコードが保存されていないことを示している場合に、その所定の移動エージェントを構成するプログラムコードのうち他の通信装置にプログラムコードが保存されていないことを示す保存情報に対応するプログラムコードを他の通信装置に向けて送信する送信手段とを備えた通信プログラムが記憶されてなることを特徴とする。
【００１５】
なお、上記本発明の通信システムおよび通信装置と、上記通信プログラムとでは、それらを構成する構成要素名として、保存手段や送信手段等といった互いに同一の名称を付しているが、通信システムおよび通信装置の場合は、そのような作用をなすソフトウェアとハードウェアとの結合を指し、通信プログラムの場合は、そのような作用をなすソフトウェアの部分のみを指している。
【００１６】
【発明の実施の形態】
以下、本発明の通信システムにいう第１の通信装置および第２の通信装置の一例に相当する、本発明の通信装置の一実施形態について説明する。
【００１７】
図１は、本発明の通信装置の一実施形態を示す外観図である。
【００１８】
この通信装置１０は、コンピュータシステムで構成されており、ＣＰＵ、ＲＡＭメモリ、ハードディスク、モデム等を内蔵した本体部１１、本体部１１からの指示により蛍光面１２ａに画面表示を行うＣＲＴディスプレイ１２、このコンピュータシステム内にオペレータの指示や文字情報を入力するためのキーボード１３、蛍光面１２ａ上の任意の位置を指定することによりその位置に表示されていたアイコン等に応じた指示を入力するマウス１４を備えている。
【００１９】
本体部１１は、さらに、外観上、フロッピィディスク２２（図１には図示せず；図２参照）やＣＤＲＯＭ２０が装填されるフロッピィディスク装填口１１ａおよびＣＤＲＯＭ装填口１１ｂを有しており、その内部には、装填されたフロッピィディスクやＣＤＲＯＭ２０をドライブする、フロッピィディスクドライバ１１４、ＣＤＲＯＭドライバ１１５（図２参照）も内蔵されている。
【００２０】
ここでは、ＣＤＲＯＭ２０に、本発明にいう通信プログラムの一例が記憶されており、この記憶された通信プログラムは、移動エージェントの実行と移動エージェントの送受信を行うプラットフォームの動作を表すプラットフォームプログラムである。このＣＤＲＯＭ２０がＣＤＲＯＭ装填口１１ｂから本体部１１内に装填され、ＣＤＲＯＭドライバ１１５によりそのＣＤＲＯＭ２０に記憶されたプラットフォームプログラムがこのコンピュータシステムのハードディスク内にインストールされる。このコンピュータシステムのハードディスク内にインストールされたプラットフォームプログラムが起動されると、このコンピュータシステムは、本発明の通信装置の一実施形態として動作する。
【００２１】
従って、プラットフォームプログラムが記憶されたＣＤＲＯＭ２０は、本発明の通信プログラム記憶媒体の一実施形態に相当する。
【００２２】
また、このＣＤＲＯＭ２０に記憶されたプラットフォームプログラムは、上記のようにしてそのコンピュータシステムのハードディスク内にインストールされるが、そのプラットフォームプログラムがインストールされた状態のハードディスクも、本発明の通信プログラム記憶媒体の一形態に相当する。
【００２３】
さらに、そのプラットフォームプログラムがフロッピィディスク等にダウンロードされるときは、そのダウンロードされたプラットフォームプログラムを記憶した状態にあるフロッピィディスク等も、本発明の通信プログラム記憶媒体の一実施形態に相当する。
【００２４】
この通信装置１０複数が、ネットワークを介して互いに接続され、本発明の通信システムの一実施形態が構成されている。
【００２５】
図２は、図１に示す外観を有する通信装置（コンピュータシステム）のハードウェア構成図である。
【００２６】
ここには、中央演算処理装置（ＣＰＵ）１１１、ＲＡＭ１１２、ハードディスクコントローラ１１３、フロッピィディスクドライバ１１４、ＣＤＲＯＭドライバ１１５、マウスコントローラ１１６、キーボードコントローラ１１７、ディスプレイコントローラ１１８、およびモデム１１９が示されており、それらはバス１１０で相互に接続されている。
【００２７】
フロッピィディスクドライバ１１４、ＣＤＲＯＭドライバ１１５は、図１を参照して説明したように、フロッピィディスク２２、ＣＤＲＯＭ２０が装填され、装填されたフロッピィディスク２２、ＣＤＲＯＭ２０をアクセスするものである。
【００２８】
モデム１１９は、電話回線網等といったネットワークに接続され、モデム１１９を介して、他の通信装置へ向けた信号の送信、および他の通信装置から送られてきた信号の受信が行われる。
【００２９】
また、ここには、ハードディスクコントローラ１１３によりアクセスされるハードディスク２１、マウスコントローラ１１６により制御されるマウス１４、キーボードコントローラ１１７により制御されるキーボード１３、およびディスプレイコントローラ１１８により制御されるＣＲＴディスプレイ１２も示されている。
【００３０】
前述したように、ＣＤＲＯＭ２０にはプラットフォームプログラムが記憶されており、ＣＤＲＯＭドライバ１１５により、そのＣＤＲＯＭ２０からプラットフォームプログラムが読み込まれ、バス１１０を経由し、ハードディスクコントローラ１１３によりハードディスク２１内に格納される。実際の実行にあたっては、そのハードディスク２１内のプラットフォームプログラムはＲＡＭ１１２上にロードされ、ＣＰＵ１１１により実行される。
【００３１】
図３は、図１および図２に示すコンピュータシステム内に実現されたプラットフォームの概念構成図である。
【００３２】
このプラットフォーム３０は、実行部３１と、送受信部３２と、保存部３３を備えている。実行部３１によって移動エージェントが起動されて実行される。また、送受信部３２によって、実行部３１で実行されている移動エージェントを構成するプログラムコードおよび状態変数が他のプラットフォームに向けて送信されるとともに、他のプラットフォームから送られてきたプログラムコードや状態変数が受信される。また、図２に示すハードディスク２１内にキャッシュが設けられており、送受信部３２により受信されたプログラムコードが保存部３３によってそのキャッシュに保存される。
【００３３】
この図３には、実行部３１で実行されている移動エージェントの一例として、２つのプログラムコード４１，４２と状態変数４３からなる移動エージェント４０が示されており、送受信部３２によって送受信されるプログラムコードおよび状態変数の一例として、移動エージェント４０を構成するプログラムコード４１および状態変数４３が示されている。また、保存部３３によってキャッシュに保存されたプログラムコードの一例として、移動エージェント４０を構成するプログラムコード４２が示されている。
【００３４】
実行部３１で実行されている移動エージェント４０が移動する際には、移動エージェント４０によって、移動エージェント４０の移動先や、移動エージェント４０を構成する状態変数が送受信部３２へと通知される。移動エージェント４０による通知を受けた送受信部３２は、実行部３１から、移動エージェント４０を構成する各プログラムコードを取得し、各プログラムコードを送信すべきか否かを判定し、判定結果に従って、移動エージェント４０の移動先に向けて送信する。判定方法については後述する。また、送受信部３２は、移動エージェント４０により通知された状態変数については、そのまま、移動エージェント４０の移動先に向けて送信する。
【００３５】
また、後述するように、実行部３１は、送受信部３２によって受信されたプログラムコードおよび状態変数と、保存部３３によって保存されたプログラムコードに基づいて移動エージェントを組み立てて起動する。従って、実行部３１は、本発明にいう組立手段に相当する。
【００３６】
以下図４〜図８を参照しながら、本発明の通信システムにいう第１の通信装置に相当する送信側のプラットフォームから、本発明の通信システムにいう第２の通信装置に相当する受信側のプラットフォームへと移動エージェントが移動する各移動態様について説明する。各図の上方に示すプラットフォームが送信側のプラットフォームであり、各図の下方に示すプラットフォームが受信側のプラットフォームである。本実施形態では、送信時に保存部が使用されないので、送信側の保存部については説明を省略する。また、各図では、移動エージェントを「エージェント」、プログラムコードを「コード」、状態変数を「変数」と略記する。
【００３７】
図４は、移動エージェントの第１移動態様を示す図である。
【００３８】
この移動態様は、第１のプログラムコード、第２のプログラムコード、および第１の状態変数からなる第１の移動エージェントが移動する態様である。第１の移動エージェントが移動する前の状態は、送信側のプラットフォーム３０ａの実行部３１ａにおいて第１の移動エージェントが起動され実行されている状態である。また、この移動態様では、第１の移動エージェントが移動する前の時点で受信側の通信装置のキャッシュは空である。
【００３９】
第１の移動エージェントの移動が開始されると、第１の移動エージェントによって移動先が送信側の送受信部３２ａに通知され、送信側の実行部３１ａによって第１のプログラムコードおよび第２のプログラムコードが送信側の送受信部３２ａに通知される。移動先等が通知されたことを受けて、送信側の送受信部３２ａから受信側の送受信部３２ｂへ、第１のプログラムコードおよび第２のプログラムコードそれぞれのプログラムコード名が通知される。
【００４０】
上述したように、受信側のキャッシュは空であるので、送信側の送受信部３２ａからプログラムコード名が通知された受信側の送受信部３２ｂは、送信側の送受信部３２ａに、各プログラムコードの送信を要求するメッセージを送る。
【００４１】
送信側の送受信部３２ａは、受信側の送受信部３２ｂから送られてきた、送信を要求するメッセージを受けて、第１のプログラムコードおよび第２のプログラムコードを受信側の送受信部３２ｂに向けて送信する。従って、受信側の送受信部３２ｂから送られてきた、送信を要求するメッセージは、本発明にいう保存情報が全プログラムコードについてまとめられたものに相当し、送受信部は、本発明にいう送信手段と保存情報取得手段を兼ねている。また、送信側の送受信部３２ａは、第１の状態変数を第１の移動エージェントから受け取って受信側の送受信部３２ｂに向けて送信する。
【００４２】
第１のプログラムコードおよび第２のプログラムコードが受信側の送受信部３２ｂによって受信されると、受信側の保存部３３ｂによって、第１のプログラムコードおよび第２のプログラムコードが保存される。また、第１の状態変数が受信されると、受信側の実行部３１ｂによって第１の移動エージェントが起動される。
【００４３】
受信側の実行部３１ｂによって、第１の移動エージェントが起動されると、送信側の実行部３１ａにおいて実行されている第１の移動エージェントが終了し、移動エージェントの移動が完了する。
【００４４】
第１の移動エージェントが移動した後の状態は、受信側の実行部３１ｂにおいて第１の移動エージェントが起動され実行されているとともに、受信側のキャッシュに第１のプログラムコードおよび第２のプログラムコードが保存されている状態となる。
【００４５】
図５は、移動エージェントの第２移動態様を示す図である。
【００４６】
この移動態様は、第１のプログラムコード、第３のプログラムコード、および第２の状態変数からなる第２の移動エージェントが移動する態様である。第２の移動エージェントが移動する前の状態は、送信側の実行部３１ａにおいて第２の移動エージェントが起動され実行されているとともに、受信側のキャッシュに第１のプログラムコードおよび第２のプログラムコードが保存されている状態である。
【００４７】
第２の移動エージェントの移動が開始されると、第２の移動エージェントによって移動先が送信側の送受信部３２ａに通知され、送信側の実行部３１ａによって第１のプログラムコードおよび第３のプログラムコードが送信側の送受信部３２ａに通知される。移動先等が通知されたことを受けて、第１移動態様と同様に、送信側の送受信部３２ａから受信側の送受信部３２ｂへ、第１のプログラムコードおよび第３のプログラムコードそれぞれのプログラムコード名が通知される。
【００４８】
この第２移動態様では、受信側の保存部３３ｂによって第１のプログラムコードがキャッシュに保存されており、第３のプログラムコードは保存されていないので、送信側の送受信部３２ａからプログラムコード名が通知された受信側の送受信部３２ｂは、送信側の送受信部３２ａに、第３のプログラムコードの送信を要求するメッセージを送る。
【００４９】
送信側の送受信部３２ａは、受信側の送受信部３２ｂから送られてきた、送信を要求するメッセージを受けて、第３のプログラムコードを受信側の送受信部３２ｂに向けて送信する。この結果、第１のプログラムコードの送信が省略されるので、従来に比べて通信量が減る。また、第１移動態様と同様に、送信側の送受信部３２ａは、第２の状態変数を第２の移動エージェントから受け取って受信側の送受信部３２ｂに向けて送信する。
【００５０】
第３のプログラムコードが受信側の送受信部３２ｂによって受信されると、受信側の保存部３３ｂによって第３のプログラムコードがキャッシュに追加保存される。また、第２の状態変数が受信されると、受信側の実行部３１ｂによって、受信側の送受信部３２ｂにより受信された第３のプログラムコードおよび第２の状態変数と、受信側の保存部３３ｂにより保存された第１のプログラムコードが用いられて第２の移動エージェントが組み立てられて起動される。
【００５１】
受信側の実行部３１ｂによって、第２の移動エージェントが組み立てられて起動されると、送信側の実行部３１ａにおいて実行されている第２の移動エージェントが終了し、移動エージェントの移動が完了する。
【００５２】
第２の移動エージェントが移動した後の状態は、受信側の実行部３１ｂにおいて第２の移動エージェントが起動され実行されているとともに、受信側のキャッシュに第１のプログラムコード、第２のプログラムコードおよび第３のプログラムコードが保存されている状態となる。
【００５３】
図６は、移動エージェントの第３移動態様を示す図である。
【００５４】
この移動態様は、第１のプログラムコード、古い第２のプログラムコードがバージョンアップされてなる新たな第２のプログラムコード、および第３の状態変数からなる第３の移動エージェントが移動する移動態様である。第３の移動エージェントが移動する前の状態は、送信側の実行部３１ａにおいて第３の移動エージェントが起動され実行されているとともに、受信側のキャッシュに第１のプログラムコードおよび古い第２のプログラムコードが保存されている状態である。
【００５５】
第３の移動エージェントの移動が開始されると、第３の移動エージェントによって移動先が送信側の送受信部３２ａに通知され、送信側の実行部３１ａによって第１のプログラムコードおよび新たな第２のプログラムコードが送信側の送受信部３２ａに通知される。移動先等が通知されたことを受けて、第１移動態様と同様に、送信側の送受信部３２ａから受信側の送受信部３２ｂへ、第１のプログラムコードおよび新たな第２のプログラムコードそれぞれのプログラムコード名が通知される。
【００５６】
この第３移動態様では、受信側の保存部３３ｂによって第１のプログラムコードがキャッシュに保存されており、新たな第２のプログラムコードは保存されていないので、送信側の送受信部３２ａからプログラムコード名が通知された受信側の送受信部３２ｂは、送信側の送受信部３２ａに、新たな第２のプログラムコードの送信を要求するメッセージを送る。
【００５７】
送信側の送受信部３２ａは、受信側の送受信部３２ｂから送られてきた、送信を要求するメッセージを受けて、新たな第２のプログラムコードを受信側の送受信部３２ｂに向けて送信する。また、第１移動態様と同様に、送信側の送受信部３２ａは、第３の状態変数を第３の移動エージェントから受け取って受信側の送受信部３２ｂに向けて送信する。
【００５８】
新たな第２のプログラムコードが受信側の送受信部３２ｂによって受信されると、受信側の保存部３３ｂによって、新たな第２のプログラムコードが、既に保存されている古い第２のプログラムコードに対して上書保存される。また、第３の状態変数が受信されると、受信側の実行部３１ｂによって、受信側の送受信部３２ｂにより受信された新たな第２のプログラムコードおよび第３の状態変数と、受信側の保存部３３ｂにより保存された第１のプログラムコードが用いられて第３の移動エージェントが組み立てられて起動される。
【００５９】
受信側の実行部３１ｂによって、第３の移動エージェントが組み立てられて起動されると、送信側の実行部３１ａにおいて実行されている第３の移動エージェントが終了し、移動エージェントの移動が完了する。
【００６０】
第３の移動エージェントが移動した後の状態は、受信側の実行部３１ｂにおいて第３の移動エージェントが起動され実行されているとともに、受信側のキャッシュに第１のプログラムコードおよび新たな第２のプログラムコードが保存されている状態となる。
【００６１】
図７は、移動エージェントの第４移動態様を示す図である。
【００６２】
この移動態様は、第１のプログラムコード、古い第２のプログラムコードおよび第４の状態変数からなる第４の移動エージェントが移動する移動態様である。第４の移動エージェントが移動する前の状態は、送信側の実行部３１ａにおいて第４の移動エージェントが起動され実行されているとともに、受信側のキャッシュに第１のプログラムコード、および古い第２のプログラムコードがバージョンアップされてなる新たな第２のプログラムコードが保存されている状態である。
【００６３】
第４の移動エージェントの移動が開始されると、第４の移動エージェントによって移動先が送信側の送受信部３２ａに通知され、送信側の実行部３１ａによって第１のプログラムコードおよび古い第２のプログラムコードが送信側の送受信部３２ａに通知される。移動先等が通知されたことを受けて、第１移動態様と同様に、送信側の送受信部３２ａから受信側の送受信部３２ｂへ、第１のプログラムコードおよび古い第２のプログラムコードそれぞれのプログラムコード名が通知される。但し、このプログラムコード名は、プログラムコードの名称およびバージョンを示しているものとする。
【００６４】
この第４移動態様では、受信側の保存部３３ｂによって第１のプログラムコードおよび新たな第２のプログラムコードがキャッシュに保存されており、送信側の送受信部３２ａからプログラムコード名が通知された受信側の送受信部３２ｂは、送信側の送受信部３２ａに、プログラムコードの送信が不要であることを示すメッセージを送る。このメッセージも、本発明にいう保存情報が全プログラムコードについてまとめられたものに相当する。
【００６５】
送信側の送受信部３２ａは、受信側の送受信部３２ｂから送られてきた通知を受けて、第４の状態変数を第４の移動エージェントから受け取って受信側の送受信部３２ｂに向けて送信する。
【００６６】
第４の状態変数が受信側の送受信部３２ｂによって受信されると、受信側の実行部３１ｂによって、受信側の送受信部３２ｂにより受信された第４の状態変数と、受信側の保存部３３ｂにより保存された第１のプログラムコードおよび新たな第２のプログラムコードが用いられて第４の移動エージェントが組み立てられて起動される。但し、送信側の実行部３１ａにおいて実行されている第４の移動エージェントには古い第２のプログラムコードが含まれているのに対し、受信側の実行部３１ｂによって組み立てられた第４の移動エージェントには新たな第２のプログラムコードが含まれており、第４の移動エージェントがバージョンアップされた状態になっている。
【００６７】
受信側の実行部３１ｂによって、第４の移動エージェントが組み立てられて起動されると、送信側の実行部３１ａにおいて実行されている第４の移動エージェントが終了し、移動エージェントの移動が完了する。
【００６８】
第４の移動エージェントが移動した後の状態は、受信側の実行部３１ｂにおいて、バージョンアップされた第４の移動エージェントが起動され実行されているとともに、受信側のキャッシュに第１のプログラムコードおよび新たな第２のプログラムコードが保存されている状態となる。
【００６９】
図６示す第３移動態様と、図７に示す第４移動態様が繰り返されることによって、ネットワーク上に、バージョンアップされたプログラムコードが自動的に配布される。その結果、古いバージョンのプログラムコードからなる移動エージェントを有し、新しいバージョンのプログラムコードからなる移動エージェントを有さないユーザであっても、その有している移動エージェントに作業を行わせるために、その移動エージェントをネットワーク上で移動させると、プログラムコードがバージョンアップされた移動エージェントを自動的に得ることができる。
【００７０】
図８は、移動エージェントの第５移動態様を示す図である。
【００７１】
この移動態様は、上述した各移動態様とは異なり、受信側の保存部３３ｂによるプログラムコードの保存と、受信側の実行部３１ｂによる、キャッシュに保存されているプログラムコードの利用が禁止される移動態様であり、従来技術における移動態様と同様な移動態様である。
【００７２】
また、この移動態様は、第１のプログラムコード、試作段階のプログラムコードおよび第５の状態変数からなり、従来同様の移動態様での移動をプラットフォームに行わせる第５の移動エージェントが移動する態様である。第５の移動エージェントが移動する前の状態は、送信側の実行部３１ａにおいて第５の移動エージェントが起動され実行されている状態であり、受信側のキャッシュには、一例として、第１のプログラムコードおよび第２のプログラムコードが保存されている。
【００７３】
第５の移動エージェントの移動が開始されると、第５の移動エージェントは、従来同様の移動態様で移動することを送信側の送受信部３２ａに通知し、第１のプログラムコード、試作段階のプログラムコード、および第５の状態変数を送信側の送受信部３２ａに通知する。送信側の送受信部３２ａは、従来同様の移動態様で移動する旨の通知を受けて、その通知を受信側の送受信部３２ｂへ送るとともに、第１のプログラムコード、試作段階のプログラムコード、および第５の状態変数を受信側の送受信部３２ｂへ送信する。
【００７４】
受信側の送受信部３２ｂは、送信側の送受信部３２ａから送られてきた、従来同様の移動態様で移動する旨の通知を受けて、第１のプログラムコード、試作段階のプログラムコード、および第５の状態変数を受信するとともに、受信側の保存部３３ｂによるプログラムコードの保存を禁止する。
【００７５】
第１のプログラムコード、試作段階のプログラムコード、および第５の状態変数が受信側の送受信部３２ｂによって受信されると、受信側の実行部３１ｂによって第５の移動エージェントが起動される。
【００７６】
受信側の実行部３１ｂによって、第５の移動エージェントが起動されると、送信側の実行部３１ａにおいて実行されている第５の移動エージェントが終了し、移動エージェントの移動が完了する。
【００７７】
第５の移動エージェントが移動した後の状態は、受信側の実行部３１ｂにおいて第５の移動エージェントが起動され実行されているとともに、受信側のキャッシュに第１のプログラムコードおよび第２のプログラムコードが保存されている状態となる。つまり、移動エージェントの移動後に受信側のキャッシュに保存されているプログラムコードは、移動前に保存されていたプログラムコードのままである。このような移動態様は、試作段階のプログラムコードのような、ネットワーク上に自動的に配布されると不都合なプログラムコードを含む移動エージェントを用いる場合に有用である。
【００７８】
以上で、移動態様の説明を終了し、以下では、上記移動態様を実現するための、移動エージェントおよびプラットフォームそれぞれの動作を、フローチャートを参照しながら説明する。
【００７９】
図９は、図４〜図７に示す各移動エージェントが自分自身を移動させる際における各移動エージェントの動作を示すフローチャートである。
【００８０】
この動作は、移動エージェントによって自分自身の移動開始が決定された場合に開始される。
【００８１】
この動作が開始されると、先ず、ステップＳ１０１において、自分（移動エージェント）が実行されている移動元のプラットフォームの送受信部に移動先を通知する。
【００８２】
次に、ステップＳ１０２に進み、状態変数を移動先に送信して移動先で自分自身（移動エージェント）を実行することができる状態になったことを意味する「移動可能通知」を、移動元のプラットフォームの送受信部から受け取る。
【００８３】
その後、ステップＳ１０３に進み、状態変数を移動元のプラットフォームの送受信部に通知することによって、その状態変数を移動先のプラットフォームに向けて送信させる。
【００８４】
その後、ステップＳ１０４に進み、移動先のプラットフォームにおいて移動エージェントが起動されたことを示すメッセージを受け取り、ステップＳ１０５に進み、自分自身（移動エージェント）の実行を終了する。
【００８５】
図１０は、図４〜図７に示す各移動エージェントを送信する際におけるプラットフォームの動作を示すフローチャートである。
【００８６】
この動作が開始されると、先ず、ステップＳ２０１において、実行部で実行されている移動エージェントから移動先を受け取り、ステップＳ２０２に進み、実行部で実行されている移動エージェントを構成する各プログラムコードを実行部から取得して、それらの各プログラムコードの各プログラムコード名を移動先のプラットフォームに送信する。但し、上述したように、このプログラムコード名は、プログラムコードの名称およびバージョンを示している。
【００８７】
その後、ステップＳ２０３に進み、移動先のプラットフォームから、上述したように、本発明にいう保存情報が全プログラムコードについてまとめられたものに相当するメッセージを受信して、ステップＳ２０４に進み、そのメッセージが、プログラムコードの送信要求を示しているか否かを判定する。
【００８８】
ステップＳ２０４において、プログラムコードの送信要求を示していると判定されると、ステップＳ２０５に進み、要求されたプログラムコードを移動先のプラットフォームに向けて送信し、ステップＳ２０６に進み、実行部で実行されている移動エージェントに「移動可能通知」を通知して終了する。
【００８９】
ステップＳ２０４において、プログラムコードの送信が不要であることを示していると判定された場合には、そのままステップＳ２０６に進み、実行部で実行されている移動エージェントに「移動可能通知」を通知して終了する。
【００９０】
図１１は、図４〜図７に示す各移動エージェントを受信する際におけるプラットフォームの動作を示すフローチャートである。
【００９１】
この動作が開始されると、先ず、ステップＳ３０１において、移動元のプラットフォームから送られてきたプログラムコード名を受信する。
【００９２】
次に、ステップＳ３０２およびステップＳ３０３において、移動元のプラットフォームから送られてきた各プログラムコード名が示す名称と同一の名称を有するプログラムコードであって、かつ、それらの送られてきた各プログラムコード名が示すバージョンと同等以上のバージョンのプログラムコードがキャッシュに保存されているか否かが判定され、保存されていないと判定されると、ステップＳ３０４に進み、プログラムコードの送信を要求するメッセージを移動元のプラットフォームに向けて送信する。
【００９３】
その後、ステップＳ３０５に進み、移動元のプラットフォームから送られてきたプログラムコードを受信し、ステップＳ３０６に進み、受信したプログラムコードをキャッシュに保存する。
【００９４】
その後、ステップＳ３０７に進み、移動元のプラットフォームで実行されている移動エージェントから送受信部を介して送られてきた状態変数を受信し、ステップＳ３０８に進み、受信されたプログラムコード、受信された状態変数、およびキャッシュに保存されているプログラムコードに基づいて、移動元のプラットフォームの実行部で実行されている移動エージェントと同等な移動エージェントを組み立てて起動する。
【００９５】
その後、ステップＳ３０９に進み、移動元のプラットフォームに向けて、移動エージェントが起動されて移動エージェントの移動が成功したことを示すメッセージを送信して終了する。
【００９６】
ステップＳ３０２およびステップＳ３０３において、移動元のプラットフォームから送られてきた各プログラムコード名と同一の名称を有するプログラムコードであって、かつ、各プログラムコード名が示すプログラムコードのバージョンと同等以上のバージョンのプログラムコードがキャッシュに保存されていると判定された場合は、ステップＳ３１０に進み、移動元のプラットフォームに向けて、プログラムコードの送信が不要であることを示すメッセージを送信し、ステップＳ３０７に進む。以下の動作は、上記動作と同様であるので説明を省略する。図１２は、図８に示す移動エージェントが自分自身を移動させる際の、移動エージェントの動作を示すフローチャートである。
【００９７】
この動作が開始されると、先ず、ステップＳ４０１において、従来同様の移動態様で移動する移動エージェントであることを示すメッセージを、移動元のプラットフォームおよび移動先のプラットフォームに通知する。
【００９８】
次に、ステップＳ４０２に進み、自分自身（移動エージェント）を構成するプログラムコードおよび状態変数を、移動元のプラットフォームの送受信部を介して移動先のプラットフォームに送信する。
【００９９】
その後、ステップＳ４０３に進み、移動先のプラットフォームにおいて移動エージェントが起動されて移動エージェントの移動が成功したことを示すメッセージを受信し、ステップＳ４０４に進み、自分自身（移動エージェント）の実行を終了する。
【０１００】
図１３は、図８に示す移動エージェントを受信する際におけるプラットフォームの動作を示すフローチャートである。
【０１０１】
この動作は、従来同様の移動態様で移動する移動エージェントであることを示すメッセージが受信されると開始される。
【０１０２】
この動作が開始されると、先ず、ステップＳ５０１において、移動元のプラットフォームの送受信部を介して、移動元のプラットフォームの実行部で実行されている移動エージェントから送られてきたプログラムコードおよび状態変数を受信する。
【０１０３】
次に、ステップＳ５０２に進み、受信されたプログラムコードと受信された状態変数に基づいて、移動元のプラットフォームの実行部で実行されている移動エージェントと同じ移動エージェントを起動する。
【０１０４】
その後、ステップＳ５０３に進み、移動エージェントが起動されて移動エージェントの移動が成功したことを示すメッセージを、移動元のプラットフォームで実行されている移動エージェントに送信し終了する。
【０１０５】
なお、本実施形態では、プログラムコードは、そのプログラムコードが受信された際に保存されるが、本発明にいう保存手段は、プログラムコードを、そのプログラムコードが送信される際に保存するものであっても良く、移動エージェントが起動される際や、移動エージェントが終了される際に保存するものであってもよい。
【０１０６】
また、本実施形態では、他のプラットフォームに対し、プログラムコードを送信すべきか否かを問い合わせるが、本発明の保存情報取得手段は、他の通信装置に保存されているプログラムコードの一覧表を取得し、その一覧表を用いて、他の通信装置に向けて送信する移動エージェントを構成するプログラムコードと同一のプログラムコードが保存されているか否かを判定するものであってもよい。
【０１０７】
【発明の効果】
以上説明したように、本発明によれば、移動エージェントがネットワーク上を移動する際の通信量を低減することができる。
【図面の簡単な説明】
【図１】本発明の通信装置の一実施形態を示す外観図である。
【図２】通信装置（コンピュータシステム）のハードウェア構成図である。
【図３】コンピュータシステム内に実現されたプラットフォームの概念構成図である。
【図４】移動エージェントの第１移動態様を示す図である。
【図５】移動エージェントの第２移動態様を示す図である。
【図６】移動エージェントの第３移動態様を示す図である。
【図７】移動エージェントの第４移動態様を示す図である。
【図８】移動エージェントの第５移動態様を示す図である。
【図９】図４〜図７に示す各移動エージェントが自分自身を移動させる際における各移動エージェントの動作を示すフローチャートである。
【図１０】図４〜図７に示す各移動エージェントを送信する際におけるプラットフォームの動作を示すフローチャートである。
【図１１】図４〜図７に示す各移動エージェントを受信する際におけるプラットフォームの動作を示すフローチャートである。
【図１２】図８に示す移動エージェントが自分自身を移動させる際の、移動エージェントの動作を示すフローチャートである。
【図１３】図８に示す移動エージェントを受信する際におけるプラットフォームの動作を示すフローチャートである。
【符号の説明】
１０    通信装置
１１    本体部
１１ａ    フロッピィディスク装填口
１１ｂ    ＣＤＲＯＭ装填口
１２    ＣＲＴディスプレイ
１２ａ    蛍光面
１３    キーボード
１４    マウス
２０    ＣＤＲＯＭ
２１    ハードディスク
２２    フロッピィディスク
３０，３０ａ，３０ｂ    プラットフォーム
３１，３１ａ，３１ｂ    実行部
３２，３２ａ，３２ｂ    送受信部
３３，３３ａ，３３ｂ    保存部
４０    移動エージェント
４１，４２    プログラムコード
４３    状態変数
１１１    中央演算処理装置（ＣＰＵ）
１１２    ＲＡＭ
１１３    ハードディスクコントローラ
１１４    フロッピィディスクドライバ
１１５    ＣＤＲＯＭドライバ
１１６    マウスコントローラ
１１７    キーボードコントローラ
１１８    ディスプレイコントローラ
１１９    モデム
【図１】
0003691967.tif 000002
【図２】
0003691967.tif 000003
【図３】
0003691967.tif 000004
【図４】
0003691967.tif 000005
【図５】
0003691967.tif 000006
【図６】
0003691967.tif 000007
【図７】
0003691967.tif 000008
【図８】
0003691967.tif 000009
【図９】
0003691967.tif 000010
【図１０】
0003691967.tif 000011
【図１１】
0003691967.tif 000012
【図１２】
0003691967.tif 000013
【図１３】
0003691967.tif 000014