説明

エージェントコンピュータプログラム、端末コンピュータ、アプリケーションプログラム取得方法、アプリケーションプログラム配信方法、アプリケーション取得要求データ構造

【課題】サーバに依存せずとも、ネットワーク上の端末コンピュータが自律的にアプリケーションプログラムを取得できるようにする。
【解決手段】ネットワーク上の端末コンピュータ1a、1b、1c、1d(以下1と略記)において稼働する一又は複数のアプリケーションプログラム3を管理するとともに、前記アプリケーション3のためのネットワーク通信を行うエージェント2a、2b、2c、2d(以下2と略記)を備え、前記エージェント2は、前記エージェント2が管理対象とする一又は複数のアプリケーションプログラム3に、必要なアプリケーションプログラムが含まれているか否かの判定を行う判定手段と、必要なアプリケーションプログラムが含まれていないと判定された場合に、必要なアプリケーションプログラムを、前記ネットワーク上の他の端末コンピュータ1の前記エージェント2及び前記管理サーバ4のいずれかから取得する取得手段と、を備えている。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アプリケーションプログラムを管理するエージェントとしてコンピュータを機能させるためのコンピュータプログラム等に関するものである。
【背景技術】
【0002】
従来、端末へソフトウェアの自動インストールを行う技術は、多数存在する。例えば、特許文献1には、クライアント端末にインストールされているソフトウェア情報をサーバで管理する方法が記載されている。
【特許文献1】特開2000−305757号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
特許文献1のような自動インストール技術は、サーバ・クライアント型のネットワークシステムを前提としており、ネットワーク上に自動インストールを管理するためのサーバが存在しなければ、自動インストールを実現することができない。
【0004】
そこで、本発明は、サーバに依存せずとも、ネットワーク上の端末コンピュータが自律的にソフトウェア(アプリケーションプログラム)を取得することが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【0005】
[エージェントコンピュータプログラム]
(1)本発明は、ネットワーク上の端末コンピュータにおいて稼働する一又は複数のアプリケーションプログラムを管理するとともに、前記アプリケーションのためのネットワーク通信を行うエージェントとして、前記端末コンピュータを機能させるためのエージェントコンピュータプログラムであって、前記エージェントは、前記エージェントが管理対象とする一又は複数のアプリケーションプログラムに、必要なアプリケーションプログラムが含まれているか否かの判定を行う判定手段と、前記エージェントが管理対象とする一又は複数のアプリケーションプログラムに、必要なアプリケーションプログラムが含まれていない場合には、必要なアプリケーションプログラムを、前記ネットワーク上の他の端末の前記エージェントから取得する取得手段と、を備えていることを特徴とするエージェントコンピュータプログラムである。
【0006】
上記本発明によれば、必要なアプリケーションプログラムが存在しない場合、アプリケーションプログラムを管理するエージェントが、他の端末の前記エージェントから、必要なアプリケーションプログラムを取得するため、サーバが存在しない場合や、サーバと接続できない等の事情によってサーバから必要なアプリケーションプログラムを取得できなくても、必要なアプリケーションプログラムを取得できる。
【0007】
(2)前記エージェントは、アプリケーションプログラム宛のデータを受信する受信部を備え、前記判定手段による前記判定は、前記受信部によって受信したデータの宛先となるアプリケーションプログラムが、前記エージェントが管理対象とする一又は複数のアプリケーションプログラムに含まれているか否かの判定であるのが好ましい。この場合、データ受信時に、動的に必要なアプリケーションプログラムの取得ができ、仮に受信に必要なアプリケーションプログラムがなくても、データ受信を滞らせることなく、円滑な受信処理を行える。
【0008】
(3)前記エージェントは、前記取得手段が、必要なアプリケーションプログラムを取得すると、取得したアプリケーションプログラムを起動させて、前記受信部によって受信したデータを、起動したアプリケーションプログラムに渡すのが好ましい。この場合、エージェントが取得したアプリケーションプログラムを起動させるため、確実に、アプリケーションによるデータ受信を行える。
【0009】
(4)前記判定手段は、アプリケーションプログラムのバージョンも考慮して、前記必要なアプリケーションプログラムが含まれているか否かの前記判定を行うのが好ましい。この場合、バージョンの違いも考慮した同一性判定が行える。
【0010】
(5)前記判定手段は、前記受信部によって受信したデータを受信すべきアプリケーションプログラムのバージョンとは異なるバージョンのアプリケーションプログラムが、前記エージェントが管理対象とする一又は複数のアプリケーションプログラムに含まれている場合に、当該異なるバージョンのアプリケーションプログラムが、前記受信部によって受信したデータを受信可能であれば、前記エージェントが管理対象とする一又は複数のアプリケーションプログラムに、前記必要なアプリケーションプログラムが含まれていると判定するのが好ましい。
この場合、バージョンが異なっていても、データを受信可能な程度の整合性があれば、必要なアプリケーションが含まれていると判定することができる。
【0011】
(6)前記エージェントは、前記取得手段が必要なアプリケーションプログラムを取得する取得先となる端末コンピュータを決定する取得先決定手段を更に備えているのが好ましい。この場合、エージェントは、アプリケーションプログラムの取得先を自ら決定できる。
【0012】
(7) 前記取得先決定手段は、ネットワーク上の他の端末コンピュータの中から、取得先の候補を選択する手段と、候補として選択された端末コンピュータとの通信が可能であれば当該候補を取得先として決定する手段と、を備えているのが好ましい。この場合、通信可能な端末コンピュータを取得先として決定できる。
【0013】
(8)前記取得先決定手段は、アプリケーションプログラムを取得する際の通信コストを考慮して、必要なアプリケーションプログラムを取得する取得先を決定するのが好ましい。この場合、通信コストを考慮して、適切な取得先を決定することができる。
【0014】
(9)前記取得先決定手段は、アプリケーションプログラムを保持した管理サーバから必要なアプリケーションプログラムを取得することが可能な場合に、当該管理サーバから必要なアプリケーションプログラムを取得する通信コストと、他の端末コンピュータのエージェントから必要なプリケーションプログラムを取得する通信コストと、を比較して、前記他の端末コンピュータのエージェント及び前記管理サーバのいずれかから必要なアプリケーションプログラムを取得する取得先を決定するのが好ましい。この場合、通信コストを考慮して、取得先として、サーバと他の端末コンピュータのエージェントいずれが適切であるかを決定することができる。
【0015】
(10)他の観点からみた本発明は、ネットワーク上の端末コンピュータにおいて稼働する一又は複数のアプリケーションプログラムを管理するとともに、前記アプリケーションのためのネットワーク通信を行うエージェントとして、ネットワーク上の各端末コンピュータを機能させるためのエージェントコンピュータプログラムであって、他の端末コンピュータのエージェントから、アプリケーションプログラムの取得要求を受信する手段と、アプリケーションプログラムの取得要求を受信すると、取得要求されたアプリケーションプログラムを、前記他の端末コンピュータのエージェントへ送信する手段を備えていることを特徴とするエージェントコンピュータプログラムである。
上記本発明によれば、エージェントは、他の端末コンピュータのエージェントからのアプリケーションプログラム取得要求を受信すると、前記他の端末コンピュータのエージェントに対して、アプリケーションプログラムを送信する。したがって、前記他のアプリケーションプログラムは、アプリケーションプログラムを取得することができる。
【0016】
(11)前記(10)において、前記エージェントは、前記エージェントが管理対象とする一又は複数のアプリケーションプログラムに、取得要求されたアプリケーションプログラムが含まれているか否かの判定を行う判定手段と、前記エージェントが管理対象とする一又は複数のアプリケーションプログラムに、取得要求されたアプリケーションプログラムが含まれていないと判定された場合には、ネットワーク上の他の端末コンピュータの前記エージェントへ、取得要求されたアプリケーションプログラムの取得要求を送信する要求ホップを実行する手段を備えているのが好ましい。この場合、アプリケーションプログラムの取得要求を受けたエージェントが、取得要求されたアプリケーションプログラムを管理していない場合には、さらに他のエージェントへ、取得要求を送信する要求ホップが行える。
【0017】
(12)前記(11)において、前記エージェントは、取得要求されたアプリケーションプログラムについて過去に行われた前記要求ホップ数が、設定された最大ホップ数を超えた場合には、前記要求ホップの実行を停止する手段を備えているのが好ましい。この場合、要求ホップが無限に行われるのを防止することができる。
【0018】
(13)前記(11)又は(12)において、前記エージェントは、取得要求されたアプリケーションプログラムについて過去にアプリケーション取得要求を送信したエージェントを、その後のアプリケーション取得要求の送信先から除外する手段を備えているのが好ましい。この場合、要求ホップが、ループ状に発生することを防止できる。
【0019】
(14)更に他の観点からみた本発明は、前記(1)〜(13)のいずれか1項に記載のエージェントコンピュータプログラムが搭載された端末コンピュータである。
【0020】
(15)更に他の観点からみた本発明は、ネットワーク上の端末コンピュータにおいて稼働する一又は複数のアプリケーションプログラムを管理するとともに、前記アプリケーションのためのネットワーク通信を行うエージェントが搭載された端末コンピュータにおけるアプリケーションプログラム取得方法であって、前記エージェントが管理対象とする一又は複数のアプリケーションプログラムに、必要なアプリケーションプログラムが含まれているか否かの判定を、前記エージェントが行うステップと、前記エージェントが管理対象とする一又は複数のアプリケーションプログラムに、必要なアプリケーションプログラムが含まれていない場合には、必要なアプリケーションプログラムを、前記エージェントが前記ネットワーク上の他の端末コンピュータの前記エージェントから取得するステップと、を含むことを特徴とするアプリケーションプログラム取得方法である。
【0021】
(16)更に他の観点からみた本発明は、ネットワーク上の端末コンピュータにおいて稼働する一又は複数のアプリケーションプログラムを管理するとともに前記アプリケーションのためのネットワーク通信を行うエージェントが搭載された端末コンピュータにおけるアプリケーションプログラム配信方法であって、前記エージェントが、他の端末コンピュータのエージェントから、アプリケーションプログラムの取得要求を受信するステップと、前記取得要求を受信した前記エージェントが、取得要求されたアプリケーションプログラムを、前記他の端末コンピュータのエージェントへ送信するステップと、を含むことを特徴とするアプリケーションプログラム配信方法である。
【0022】
(17)更に他の観点からみた本発明は、ネットワーク上の各端末コンピュータにおいて稼働する一又は複数のアプリケーションプログラムを管理するとともに前記アプリケーションのためのネットワーク通信を行うために各端末コンピュータに搭載されたエージェントが、他の端末コンピュータに搭載されたエージェントに対して送信するアプリケーション取得要求のデータ構造であって、前記アプリケーション取得要求の送信先である前記他の端末コンピュータに搭載されたエージェントが、取得要求の対象であるアプリケーションプログラムの識別子情報と、前記アプリケーション取得要求がエージェントによって送信された回数を示す回数情報と、を含むことを特徴とするアプリケーション取得要求データ構造である。アプリケーション取得要求が回数情報を有することで、エージェントは、アプリケーション取得要求が行われる回数を制御することが可能となる。
【0023】
(18)更に他の観点からみた本発明は、ネットワーク上の各端末コンピュータにおいて稼働する一又は複数のアプリケーションプログラムを管理するとともに前記アプリケーションのためのネットワーク通信を行うために各端末コンピュータに搭載されたエージェントが、他の端末コンピュータに搭載されたエージェントに対して送信するアプリケーション取得要求のデータ構造であって、前記アプリケーション取得要求の送信先である前記他の端末コンピュータに搭載されたエージェントが、取得要求の対象であるアプリケーションプログラムの識別子情報と、前記アプリケーション取得要求がエージェントによって送信された経路を示す経路情報と、を含むことを特徴とするアプリケーション取得要求データ構造である。アプリケーション取得要求が、経路情報を有することで、エージェントは、当該経路情報を考慮して、アプリケーション取得要求先を決定することが可能となる。
【発明の効果】
【0024】
本発明によれば、エージェントは、サーバが存在しない場合や、サーバと接続できない等の事情によってサーバから必要なアプリケーションプログラムを取得できなくても、必要なアプリケーションプログラムを他のエージェントから取得できる。
【発明を実施するための最良の形態】
【0025】
以下、本発明の実施形態を図面に基づいて説明する。
[1.端末コンピュータの構成]
図1は、実施形態に係る端末コンピュータ1を示している。この端末コンピュータ1には、一又は複数のアプリケーション(コンピュータ)プログラム3a,3b(以下、単に又は「アプリケーション」という)がインストールされているとともに、前記アプリケーション3a,3bの管理等を行うためのエージェントコンピュータプログラム2がインストールされている。なお、以下では、端末コンピュータを、単に「端末」という。
【0026】
前記エージェントコンピュータプログラム2は、端末1によって実行されることで、当該端末1にインストールされたアプリケーション3a,3bの管理等を行うエージェントとして端末1を機能させる。なお、通常、エージェント2は、端末1に常駐しており、他の端末1に常駐する他のエージェントと協調して処理(ダウンロード処理等)を実行することができる。
【0027】
このエージェント2は、端末1に搭載された複数のアプリケーション3a,3bが共用可能な機能を提供するフレームワークとなる。例えば、エージェント2は、アプリケーション3a,3bによる通信を行うための通信機能を備えている。この通信機能には、例えば、別々の端末に搭載されたアプリケーション間の通信を実現するためのエージェント間通信機能が含まれている。本実施形態におけるアプリケーション間通信は、アプリケーション同士が直接通信を行うのではなく、エージェント2,2によるエージェント間通信を介して行われる。
【0028】
つまり、エージェント2によって管理されている複数のアプリケーション3a,3bは、それぞれ、エージェント2を介して、外部とのネットワーク通信が可能となっており、アプリケーション3a,3bが外部と通信を行う際には、エージェント2に対して、送信データを渡し、エージェント2から受信データを受け取る。
なお、アプリケーション3a,3bとしては、ネットワーク内の情報の流れを追跡する情報追跡システム、ファイル転送システムなどが挙げられる。これらのアプリケーションにおいては、一の端末に搭載されたアプリケーションが、他の端末に搭載された同種又は異種のアプリケーションと協調して動作するために、アプリケーション間通信が行われる。
【0029】
[2.ネットワークシステムの全体構成]
図2は、前記エージェント2が搭載された端末を含むネットワークシステムSを示している。このネットワークシステムSは、複数の端末1a,1b,1c,1dと、サーバ4とを、ネットワークによって接続して構成されている。
【0030】
図2に示す各端末には、それぞれ、エージェント2a,2b,2c,2dが常駐している。これらのエージェントのうち、第1エージェント2aが搭載された第1端末1a、第2エージェント2bが搭載された第2端末1b、及び第2エージェント2bが搭載された端末1cにはエージェント2a〜2cが管理するアプリケーション3が存在するが、第4エージェント2dが搭載された端末1dには、当該アプリケーション3が未搭載となっている。
なお、エージェント2a〜2cが管理するアプリケーション3としては、当該エージェント2a〜2c上で動作するものであってもよいし、エージェント2〜2cとは独立して端末1a〜1cにおいて動作するがエージェント2a〜2cによって管理されているものであってもよいし、端末1b〜1cでは動作しないが単にエージェント2a〜2cによってその存在が認識されて管理対象となっているものであってもよい。
【0031】
また、第1〜第3端末1a,1b,1cに搭載されたアプリケーション3は、バージョンを除外して考えると、説明の都合上、それぞれ同一のアプリケーションであるものとする。例えば、3つのアプリケーション3は、全て、同一のファイル管理システムであると想定されるべきものである。
これら3つのアプリケーションのうち、第1端末1a及び第2端末1bに搭載されたアプリケーション3は、そのバージョンがいずれも「Ver1.1」であり、バージョンも含めて完全に同一のアプリケーションである。以下では、「Ver1.1のアプリケーション」を「新バージョンアプリケーション」という。
一方、第3端末1cに搭載されたアプリケーション3は、バージョンが「Ver1.0」であり、新バージョンアプリケーションよりも古いバージョンのアプリケーションである。以下では、「Ver1.0のアプリケーション」を「旧バージョンアプリケーション」という。
【0032】
バージョンの違いを考慮した場合、新バージョンアプリケーションと旧バージョンアプリケーションとは、異なるアプリケーションであるということができる。ただし、本実施形態では、バージョンが異なっていても、同一アプリケーションであるとみなすことができる場合がある。この点については後述する。
【0033】
さて、各端末1a〜1cに搭載されたアプリケーション3は、協調処理(例えば、ファイル管理のためのアプリケーション間の協調処理)等のため、アプリケーション間通信を行うことになる。また、ある端末のアプリケーション3が、ネットワーク内の全端末にアプリケーション3が搭載されているものとして、マルチキャスト送信を行った場合を想定すると、アプリケーション3が搭載されていない端末1dも受信すべき場合がありえる。
【0034】
以上の場合において、各端末1a〜1dのアプリケーション間の関係を場合分けすると、以下の表の通りとなる。
【表1】

【0035】
上記表において、「A」は、両端末ともに同一種類のアプリケーション3が存在し、バージョンも整合性がとれていることを示している(アプリケーションの完全一致)。この場合、アプリケーション間通信は、問題なく行うことができる。
【0036】
上記表において「B」は、両端末に同種類のアプリケーション3が存在するが、バージョンの整合がとれていないことを示す。バージョンの不整合により、通信に不具合が発生する場合、受信側の端末1は、他の端末1又はサーバ4から、必要なバージョンのアプリケーション3をダウンロードし、それをインストールして通信を継続する。この点についての詳細は後述する。
【0037】
上記表において「C」は、送信側にはアプリケーション3が存在するが、受信側にはアプリケーション3が存在しない場合を示している。この場合、受信側の端末1は、他の端末1又はサーバ4から、必要なアプリケーション3をダウンロードし、それをインストールして通信を継続する。この点についての詳細も後述する。
【0038】
上記表において「D」は、送信側となるべき端末にアプリケーション3が存在しないため、アプリケーション間通信が発生しないことを示している。
【0039】
[3.アプリケーション間通信の処理方法]
図3は、アプリケーション間通信の際にアプリケーションをダウンロード(取得)する場合に必要なエージェント2の機能ブロックを示し、図4〜6は、アプリケーション間通信及びアプリケーションダウンロードに関連した処理フローを示している。
【0040】
図3に示すように、エージェント2は、受信部21、アプリケーション判定部22、アプリケーション妥当性判断部23、バージョン判定部24、ダウンロード先決定部(取得先決定手段)25、ダウンロード部(取得手段)26、端末検索部27、問い合わせ範囲管理部28、及びアプリケーション転送部29を備えている。これらの各機能部21〜29により、図4〜図6の処理が行われる。
【0041】
なお、アプリケーション間通信のためのデータ送信は、前述のように、送信側端末のエージェント2を介して行われる。このため、送信側のエージェント2は、自ら管理するアプリケーションから送信用のデータ本体を受け取り、必要な情報を付加して、受信側のエージェント2へ送信する送信機能を有している。
エージェント2によって行われるアプリケーション間通信のデータDのフォーマットは、図7に示す通りであり、端末識別子D1、アプリケーション識別子D2、アプリケーションバージョン情報D3、ペイロード(データ本体)D4を備えている。
【0042】
ここで、端末識別子D1は、各端末1に搭載されたエージェントをユニークに識別するための識別子である。端末識別子(エージェント識別子)D1は、エージェント2が端末1にインストールされた後の初回動作時に、エージェント2自身が割り振る。なお、データDにおける端末識別子D1としては、受信側となる端末1のエージェントの端末識別子(エージェント識別子)がセットされる。
なお、1つの端末1に複数のエージェントが搭載される場合、それらのエージェントには異なる識別子が与えられる。
【0043】
アプリケーション識別子D2は、アプリケーションをユニークに識別するための識別子である。例えば、情報追跡システムを構成する各端末のアプリケーションは、共通アプリケーション識別子を有し、ファイル転送システムを構成する各端末のアプリケーションは、別の共通アプリケーション識別子を有する。このアプリケーション識別子は、例えば、当該アプリケーションのシステム開発者によって割り振られるものであり、バージョンの違いは区別しない。
なお、データDにおけるアプリケーション識別子D2には、受信側アプリケーションの識別子がセットされる。同種アプリケーション間で連携する場合、セットされる受信側アプリケーションの識別子は送信側アプリケーションの識別子と共通となる。そして、データDのアプリケーション識別子D2が示すアプリケーションが、データDを受信すべきアプリケーションとなる。
【0044】
前記端末識別子(エージェント識別子)及びアプリケーション識別子の組み合わせによって、ネットワークシステムS内の個々のアプリケーションをユニークに特定することができる。すなわち、端末識別子によって、どの端末に搭載されたアプリケーションであるかを特定できる。また、一つの端末に複数種類のアプリケーションが搭載されていても、アプリケーション識別子によって、当該端末1のアプリケーションのうちのどのアプリケーションであるかを特定することができる。
【0045】
さらに、データDには、データを送信した側のアプリケーションのバージョン情報D3が格納されている。このバージョン情報D3は、受信側エージェント2において、アプリケーションのバージョン整合の判断に用いられる。
なお、データDのペイロードD4は、受信側のアプリケーション又はエージェントに渡されるべきデータ本体である。
【0046】
さて、図4は、アプリケーション間通信の際に、受信側端末1のエージェント2が行う受信時処理フローを示している。
まず、受信側端末1のエージェント2の受信部21が、前記データDを受信する(ステップS01)。なお、受信部21は、ネットワークを流れるデータDのうち、端末識別子D1が、自己端末となっているものを受信する。
【0047】
すると、当該エージェント2は、受信データDを受信することができるアプリケーションと同一のアプリケーション(例えばデータDの送信元アプリケーション)が、その受信側端末1に存在するか否かの判定を行う(ステップS02〜S05)。このステップS02〜S05の処理を実行するエージェントの機能(アプリケーション判定部22及びアプリケーション妥当性判断部23)は、同一アプリケーションを判定する判定手段を構成している。
【0048】
具体的には、まず、エージェント2のアプリケーション判定部22が、受信データD中のアプリケーション識別子D2を参照し、エージェント2が管理するアプリケーションの中に、受信データD中のアプリケーション識別子D2と同一のアプリケーション識別子を有するアプリケーションが存在するか否かを判定する(ステップS02)。
なお、エージェント2は、自身が管理するアプリケーションのアプリケーション識別子の一覧テーブルを有しており、エージェント2は、その一覧テーブルを参照することで、ステップS02の判定を行う。
【0049】
ステップS02において、同一識別子のアプリケーションが存在しないと判定された場合、ステップS06へ進むが、同一識別子のアプリケーションが存在すると判定された場合、ステップS04に進む(ステップS03)。
【0050】
ステップS04では、アプリケーション妥当性判断部23が、バージョンの整合性を確認する。すなわち、受信データD中のアプリケーションバージョン情報D3と、ステップS02において存在することが確認されたアプリケーションのバージョンとを、対比する。
対比の結果、バージョンが一致していれば、アプリケーション妥当性判断部23は、バージョンの整合性がある(通信可能アプリケーションである)と判断する。また、バージョンが一致していなくても、通信に問題がない程度のバージョンの違いであれば、整合性があると判断する(ステップS05)。
バージョンが一致しない場合に整合性を判断するには、例えば、エージェント2が、互いに通信が問題なく行えるバージョン群を規定した設定情報を有しておき、アプリケーション妥当性判断部23が、その設定情報を参照することで行える。なお、そのような設定情報は、エージェント2に予め設定されていてもよいし、エージェント2がサーバ4から随時取得してもよい。
【0051】
ステップS05において、バージョンの整合性があると判断された場合、受信側端末1のアプリケーション3は、受信データを処理可能であるから、受信部21は、受信データDのアプリケーション識別子D2が示すアプリケーションを呼び出し、受信データD(主に、ペイロードD4)を、そのアプリケーションに渡す(ステップS12)。これにより、アプリケーションは、正常に受信データを取得することができる。
【0052】
一方、ステップS03において同一識別子のアプリケーションが存在しないと判定された場合や、ステップS05において、バージョンの整合性がないと判断された場合、エージェント2は、受信データを正常に受信/処理することができるアプリケーションのダウンロード(取得)を行う(ステップS06〜S08)。
本実施形態において、ダウンロードすべきアプリケーションは、受信データDのアプリケーション識別子D2が示すアプリケーションであって、バージョン情報D3が示すバージョンのアプリケーションである。
【0053】
必要なアプリケーションのダウンロードのため、まず、バージョン判定部24が、ダウンロードすべきアプリケーションのバージョンを決定する(ステップS06)。ダウンロードすべきアプリケーションのバージョンは、受信データDのアプリケーションバージョン情報D3が示すバージョンである。
【0054】
続いて、ダウンロード先決定部25が、ダウンロード先の端末(又はサーバ)を決定する(ステップS07)。そして、ダウンロード部26が、決定されたダウンロード先から、アプリケーションのダウンロードを実施する(ステップS08)。なお、ステップS07及びステップS08の詳細は、後述する。
【0055】
エージェント2が、必要なアプリケーションのダウンロードに成功した場合(ステップS09)、当該エージェント2は、ダウンロードしたアプリケーションを起動させて、呼び出す(ステップS10)。アプリケーションが起動すると、受信部24は、受信した受信データD(主に、ペイロードD4)を、そのアプリケーションに渡す(ステップS12)。これにより、アプリケーションは、正常に受信データを取得することができる。
【0056】
一方、エージェント2が、必要なアプリケーションのダウンロードに失敗した場合には、受信部21は、受信データDを破棄する(ステップS11)。
【0057】
[4.アプリケーションダウンロード先決定処理]
図5は、図4のステップS07(ダウンロード先決定処理)の詳細を示している。まず、ダウンロード先決定部25は、ダウンロード先の候補となる装置(他の端末1又はサーバ4)を選択する(ステップS11)。
ここで、ダウンロード先の候補となる装置(候補装置)には、ネットワーク内の他の端末1(エージェント2)又はサーバ4がなり得る。候補装置となり得る他の端末1としては、過去においてダウンロード先となった実績のある端末1や、候補装置になり得る端末として設定された端末1などが挙げられる。
【0058】
以下では、過去においてダウンロード先となった実績のある端末1又はサーバ4を候補装置として選択するための方法について説明する。まず、ダウンロード先決定部25は、過去においてダウンロード先となった実績のある他の端末1(エージェント2)との通信コストと、サーバ4との通信コストを比較し、通信コストが低い方を、候補装置として決定する。
【0059】
ここで、通信コストは、例えば、自身が存在するサブネットからの距離とすることができる。図8に示すように、ルータで接続された複数のサブネットA〜Bからなるネットワークの場合、サブネットを超える度に、通信コストが「1」増加するものとする。なお、ここでは、サブネットは、ルータで区切られた個々の領域をいう。
図8の場合、端末aからサーバ4への通信コストは、サーバ4の位置(サブネットC)が、端末aの属するサブネットAから数えて2つ目であるため、「端末a−サーバ」の通信コストは「2」となる。
また、以前に、端末aが、端末dから別アプリケーションをダウンロードした実績がある場合、端末dが候補端末となり得る。そして、「端末a−端末d」の通信コストは、「1」である。
【0060】
上記の場合、端末aのダウンロード先決定部25は、端末dとの通信コスト=1と、サーバ4との通信コスト=2とを比較し、通信コストが低い端末dを、候補装置として決定する。
なお、ダウンロード先となった実績に関しては、アプリケーションの種別は問わない。また、過去、ダウンロード先となった実績のある他の端末1が複数存在する場合には、最近のダウンロード先の端末を、候補装置を決定するための通信コストの比較対象とすることができる。
また、ダウンロード先となった実績のある他の端末1が存在しない場合には、サーバ4を候補装置とする。
【0061】
以上のようにして決定される候補装置が存在する場合には、端末検索部27は、候補装置の識別子(端末識別子又はサーバ識別子)を、ダウンロード先決定部25から受け取り、候補装置の検索を行う(ステップS13)。この検索は、端末検索部27が候補装置(他の端末1又はサーバ4)との接続を試みることによって行われる。
【0062】
候補装置と接続可能である場合には、その候補装置がダウンロード先として決定される。つまり、候補装置と接続可能である場合(ステップS14)、端末検索部27は、接続できた候補装置の識別子(端末識別子又はサーバ識別子)を、ダウンロード先決定部25に返却する(ステップS17)。ダウンロード先決定部25は、返却された候補装置の識別子を、ダウンロード先として取り扱い、当該識別子をダウンロード部26に渡す。これにより、ダウンロード部26は、候補装置をダウンロード先として、アプリケーションのダウンロード処理を行うことができる(図4のステップS08;詳細は後述)。
【0063】
一方、候補装置と接続できない場合(ステップS14)、端末検索部27は、周辺の他のエージェント2を検索する(ステップS15)。
ここで、エージェント2が、サーバ4ではなく、他の端末1(エージェント2)からアプリケーションをダウンロードするには、エージェント間通信を行う必要がある。したがって、エージェント2は、ダウンロード先を決定するため、まず、自身と同じエージェントを搭載した他の端末を発見する必要がある。
【0064】
端末検索部27は、他のエージェントを発見するため、自身と同じエージェント(本実施形態に係るエージェント)だけが応答する問い合わせパケットをマルチキャスト送信し、アプリケーションをダウンロード可能な周辺端末リストを取得する(ステップS15)。
例えば、図9に示すように、端末1cのエージェント2cが、周辺端末(周辺エージェント)を探索するため、問い合わせパケットを送信(マルチキャスト送信)する。
図10に示すように、この問い合わせに対して、他の端末1a,1b,1dのエージェント2a,2b,2dは、返答パケットを、端末1cのエージェント2cに返す。ただし、エージェントが搭載されていない(又は何らかの理由によりエージェントが未起動の)端末1eからは、返答パケットは返ってこない。
エージェント2cは、他のエージェント2a,2b,2dからの返答により、自身の周辺に、アプリケーションダウンロード可能な端末1a,1b,1d(エージェントが搭載された端末)が存在することを把握することができる。端末検索部27は、アプリケーションダウンロード可能な端末1a,1b,1dが複数ある場合には、適宜、一の端末(例えば、端末1a)を決定する。
【0065】
続いて、端末検索部27は、決定された一の端末1aとの接続を試みる。
決定された一の端末1aと接続可能である場合には(ステップS16)、その端末1aがダウンロード先として決定される。この場合、端末検索部27は、接続できた端末装置の識別子を、ダウンロード先決定部25に返却する(ステップS17)。
また、決定された一の端末1aと接続可能である場合、アプリケーションダウンロード可能な端末1a,1b,1dのうち、他の端末1bとの接続を試み、接続できれば、接続できた端末装置の識別子を、ダウンロード先決定部25に返却するが、どの端末1a,1b,1dとも接続できなければ(ステップS16)、ダウンロード先決定処理は失敗として終了する。
【0066】
[5.アプリケーション配信処理]
図4のステップS08において、エージェント2が、ステップS07において決定されたダウンロード先に対して、アプリケーションダウンロード要求(アプリケーションプログラムの取得要求)を送信すると、ダウンロード先端末のエージェント2は、図6に示す配信処理を行う。なお、ダウンロード先がサーバ4であった場合には、サーバ4は、単に、ダウンロード要求元にアプリケーションを転送すればよい。
【0067】
ここで、エージェント2が、ダウンロード先端末のエージェントに送信するダウンロード要求のデータフォーマットDDは、図11に示す通りであり、ダウンロード要求DDは、要求アプリケーション識別子DD1、要求アプリケーションバージョン情報DD2、現在の問い合わせホップ数(回数情報)DD3、及びホップ経路(経路情報)DD4の各データを有している。このダウンロード要求DDは、図7に示すアプリケーション間通信データDのペイロードD4領域に格納されて、当該アプリケーション間通信データDがダウンロード先端末のエージェントに送信される。
【0068】
前記要求アプリケーション識別子DD1は、ダウンロードの対象となっているアプリケーションを示す情報である。また、前記要求アプリケーションバージョン情報DD2は、ダウンロードの対象となっているアプリケーションのバージョンを示す情報である。
前記ホップ数DD3は、アプリケーションダウンロードために、ダウンロード要求がホップされた回数を示す。つまり、ホップ数DD3は、ダウンロード要求がエージェントによって送信された回数を示す回数情報である。最初になされたダウンロード要求においては、ホップ数DD3が「1」に設定されているが、ダウンロード先において更に要求ホップ(ダウンロード要求)される度に、ホップ数DD3はインクリメント(+1)される。
【0069】
前記ホップ経路DD4は、ダウンロード要求がホップされた経路を示す。最初になされたダウンロード要求においては、ダウンロード要求を送信したエージェント2が搭載された端末の識別子が格納される。ダウンロード先において更に要求ホップ(ダウンロード要求)されると、当該ダウンロード先は、自身の識別子を、ホップ経路DD4に追加する。
【0070】
図6において、まず、ダウンロード先のエージェント2が、図11に示すダウンロード要求を受信すると(ステップS21)、当該エージェント2のアプリケーション判定部22は、ダウンロード要求DDの要求アプリケーション識別子DD1及び要求アプリケーションバージョン情報DD2によって指定されたバージョンのアプリケーションを、自身の端末が保持しているか否かを判定する(ステップS22)。
【0071】
指定されたアプリケーションを、ダウンロード先の端末が保持している場合、すなわち、指定されたアプリケーションが、当該エージェント2自身が管理するアプリケーションに含まれている場合(ステップS23)、ダウンロード先のエージェント2のアプリケーション転送部29は、指定されたアプリケーションを、ダウンロード要求元に転送し(ステップS24)、処理を終了する。
【0072】
一方、指定されたアプリケーションを、ダウンロード先の端末が保持していない場合、当該ダウンロード先のエージェント2は、更に他の端末のエージェント2に対して、ダウンロード要求を送信する「要求ホップ」を行う(ステップS25〜S29)。
この要求ホップ処理の際には、まず、ダウンロード先エージェント2の問い合わせ範囲管理部28が、ダウンロード要求DDのホップ数DD3をインクリメント(+1)する(ステップS25)。
さらに、前記問い合わせ範囲管理部28は、前記ホップ数DD3が、設定された最大ホップ数を超えていないかどうか確認する(ステップS26)。
ホップ数DD3が、最大ホップ数を超えている場合(ステップS27)、他の端末のエージェント2への要求ホップは実行せずに、処理を終了する。これにより、要求ホップ処理は、設定された最大ホップ数で停止し、要求ホップ処理が無限に行われることを防止できる。
【0073】
ホップ数DD3が、最大ホップ数を超えていない場合(ステップS27)、ダウンロード先決定部25が、更なるダウンロード先(要求ホップ先)を決定する。このダウンロード先決定処理は、図5に示すフローに従って行われる。
【0074】
ここで、図5のステップS15における周辺エージェント検索処理について、要求ホップを考慮した、追加説明をする。
図5のステップS15では、前述のように、エージェント2cが、他のエージェント2a,2b,2dからの応答により、自身の周辺に、アプリケーションダウンロード可能な端末1a,1b,1d(エージェントが搭載された端末)が存在することを把握し、アプリケーションダウンロード可能な端末1a,1b,1dが複数ある場合には、適宜、一の端末1aを決定する。
このとき決定される一の端末1aとしては、ダウンロード要求DDのホップ経路DD4に含まれる端末が除外される。これにより、同一のダウンロード要求について、過去に要求ホップした端末に対して、再度、要求ホップを実行することを防止できる。
【0075】
さて、ステップS28において、ダウンロード先(要求ホップ先)が決定されると、エージェント2のダウンロード部26は、図11に示すダウンロード要求を、決定されたダウンロード先に送信する。このとき送信されるダウンロード要求は、前述のようにホップ数DD3がインクリメントされているとともに、ホップ経路DD4に、ダウンロード要求送信元のエージェント2の端末識別子が追加される。
【0076】
本実施形態では、エージェント2が上記の要求ホップ機能を有しているため、ダウンロード要求を受け取ったエージェント2が、必要なアプリケーションを保持していなくても、他の端末1のエージェント2へ、次々とダウンロード要求をホップさせることができる。
このような要求ホップによって、必要なアプリケーションが見つかると、そのアプリケーションを保持(管理)しているエージェント2は、ダウンロード要求元に、アプリケーションを転送する(ステップS30)。このアプリケーション転送は、ホップ経路の逆経路に沿って、順次行われるため、最終的に、最初のダウンロード要求元が、必要なアプリケーションを取得することができる。
【0077】
上記のように、本実施形態のネットワークシステムでは、エージェント2が搭載されている端末1は、サーバ4だけでなく、他の端末1からも必要なアプリケーションをダウンロード(取得)することができる。したがって、ネットワーク上にサーバ4が存在しなかったり、サーバ4との通信が不能であったりしても、必要なアプリケーションを他の端末1から取得することが可能である。
【0078】
また、本実施形態のエージェント2は、アプリケーション宛の受信データを受信した場合に、当該アプリケーションが存在しなかったり、バージョンが不整合であったりすると、適切なバージョンのアプリケーションのダウンロードを行って、アプリケーションを自己の端末にインストール/起動させてから、当該アプリケーションに受信データを渡す。したがって、アプリケーションが存在しなかったり、バージョンが不整合であったりしても、当該アプリケーション宛の受信データの受信処理を正常に完了することができる。
【0079】
さらに、本実施形態のエージェント2は、ダウンロード先のエージェントが必要なアプリケーションを実際に保有・管理しているか否かにかかわらず、決定されたダウンロード先に対してダウンロード要求を行い、アプリケーションを実際に保有するエージェント(端末)まで、ダウンロード要求のホップを繰り返す。したがって、ダウンロードの最初の要求元のエージェントが、アプリケーションを実際に保有するエージェントを見つける必要がない。
【0080】
また、図5のステップS15における周辺エージェントの検索の際には、問い合わせパケットのマルチキャスト送信によって、周辺のエージェント(端末)を発見するが、図8のようにネットワークが、ルータによって区分けされている場合、マルチキャストのパケットは、ルータを通過できないように、当該ルータが設定されている場合がある。この場合、図5のステップS15における周辺エージェントの検索では、同一サブネット内のエージェント(端末)しか発見できない。
しかし、本実施形態のエージェント2では、図5のステップS15に先だって、候補装置への接続を試みるように構成されており、この候補装置として、他のサブネットに属する端末1も選択可能としておけば、サブネットを跨いだダウンロード要求が可能である。このためには、例えば、各サブネットに属する特定の端末1については、候補装置になり得る端末として予め設定しておけばよい。
【0081】
また、本実施形態では、ダウンロードの要求元のエージェントが、アプリケーションを実際に保有するエージェントを見つけることなく、ダウンロード要求を送信するよう構成されているが、エージェント間通信によって、必要なアプリケーションを保有するエージェントを見つけて、そのエージェントからアプリケーションのダウンロードを行うようにしてもよい。
【0082】
本実施の形態における端末(コンピュータ)は、PCや個人情報端末の他、携帯電話や車載器、家電機器、オフィス機器などの各種組込み機器であってもよい。それら端末にエージェントプログラムを導入したり、端末上でエージェントプログラムを利用したりするために、エージェントプログラムは、RAMやフラッシュメモリなどの半導体メモリ、HDDや各種の光学メディアなど、コンピュータ読取可能な記録媒体に格納することができる。
【0083】
なお、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味、及び範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【0084】
【図1】端末コンピュータの構成図である。
【図2】ネットワークシステムの全体図である。
【図3】エージェントの機能ブロック図である。
【図4】アプリケーション間通信の際のエージェントによるデータ受信処理を示すフローチャートである。
【図5】ダウンロード先決定処理を示すフローチャートである。
【図6】ダウンロード先のエージェントにおける、アプリケーション配信処理を示すフローチャートである。
【図7】エージェントによって送受信されるアプリケーション間通信用のデータフォーマットである。
【図8】サブネットワークからなるネットワークを示す構成図である。
【図9】周辺エージェントを発見するための説明図である。
【図10】周辺エージェントを発見するための説明図である。
【図11】ダウンロード要求のデータフォーマットである。
【符号の説明】
【0085】
S ネットワークシステム
1 端末コンピュータ
2 エージェント
3 アプリケーションプログラム
4 サーバ
21 受信部
22 アプリケーション判定部
23 アプリケーション妥当性判定部
24 バージョン判定部
25 ダウンロード先決定部
26 ダウンロード部
27 端末検索部
28 問い合わせ範囲管理部
29 アプリケーション転送部

【特許請求の範囲】
【請求項1】
ネットワーク上の端末コンピュータにおいて稼働する一又は複数のアプリケーションプログラムを管理するとともに、前記アプリケーションのためのネットワーク通信を行うエージェントとして、前記端末コンピュータを機能させるためのエージェントコンピュータプログラムであって、
前記エージェントは、
前記エージェントが管理対象とする一又は複数のアプリケーションプログラムに、必要なアプリケーションプログラムが含まれているか否かの判定を行う判定手段と、
前記エージェントが管理対象とする一又は複数のアプリケーションプログラムに、必要なアプリケーションプログラムが含まれていない場合には、必要なアプリケーションプログラムを、前記ネットワーク上の他の端末コンピュータの前記エージェントから取得する取得手段と、
を備えていることを特徴とするエージェントコンピュータプログラム。
【請求項2】
前記エージェントは、アプリケーションプログラム宛のデータを受信する受信部を備え、
前記判定手段による前記判定は、前記受信部によって受信したデータの宛先となるアプリケーションプログラムが、前記エージェントが管理対象とする一又は複数のアプリケーションプログラムに含まれているか否かの判定である
請求項1記載のエージェントコンピュータプログラム。
【請求項3】
前記エージェントは、前記取得手段が、必要なアプリケーションプログラムを取得すると、取得したアプリケーションプログラムを起動させて、前記受信部によって受信したデータを、起動したアプリケーションプログラムに渡す
請求項2記載のエージェントコンピュータプログラム。
【請求項4】
前記判定手段は、アプリケーションプログラムのバージョンも考慮して、前記必要なアプリケーションプログラムが含まれているか否かの前記判定を行う
請求項1〜3のいずれか1項に記載のエージェントコンピュータプログラム。
【請求項5】
前記判定手段は、前記受信部によって受信したデータを受信すべきアプリケーションプログラムのバージョンとは異なるバージョンのアプリケーションプログラムが、前記エージェントが管理対象とする一又は複数のアプリケーションプログラムに含まれている場合に、当該異なるバージョンのアプリケーションプログラムが、前記受信部によって受信したデータを受信可能であれば、前記エージェントが管理対象とする一又は複数のアプリケーションプログラムに、前記必要なアプリケーションプログラムが含まれていると判定する
請求項2又は3記載のエージェントコンピュータプログラム。
【請求項6】
前記エージェントは、前記取得手段が必要なアプリケーションプログラムを取得する取得先となる端末コンピュータを決定する取得先決定手段を更に備えている
請求項1〜5のいずれか1項に記載のエージェントコンピュータプログラム。
【請求項7】
前記取得先決定手段は、ネットワーク上の他の端末コンピュータの中から、取得先の候補を選択する手段と、候補として選択された端末コンピュータとの通信が可能であれば当該候補を取得先として決定する手段と、を備えている
請求項6記載のエージェントコンピュータプログラム。
【請求項8】
前記取得先決定手段は、アプリケーションプログラムを取得する際の通信コストを考慮して、必要なアプリケーションプログラムを取得する取得先を決定する
請求項6又は7記載のエージェントコンピュータプログラム。
【請求項9】
前記取得先決定手段は、アプリケーションプログラムを保持した管理サーバから必要なアプリケーションプログラムを取得することが可能な場合に、当該管理サーバから必要なアプリケーションプログラムを取得する通信コストと、他の端末コンピュータのエージェントから必要なプリケーションプログラムを取得する通信コストと、を比較して、前記他の端末コンピュータのエージェント及び前記管理サーバのいずれかから必要なアプリケーションプログラムを取得する取得先を決定する
請求項8記載のエージェントコンピュータプログラム。
【請求項10】
ネットワーク上の端末コンピュータにおいて稼働する一又は複数のアプリケーションプログラムを管理するとともに、前記アプリケーションのためのネットワーク通信を行うエージェントとして、ネットワーク上の各端末コンピュータを機能させるためのエージェントコンピュータプログラムであって、
前記エージェントは、
他の端末コンピュータのエージェントから、アプリケーションプログラムの取得要求を受信する手段と、
アプリケーションプログラムの取得要求を受信すると、取得要求されたアプリケーションプログラムを、前記他の端末コンピュータのエージェントへ送信する手段を備えている
ことを特徴とするエージェントコンピュータプログラム。
【請求項11】
前記エージェントは、
前記エージェントが管理対象とする一又は複数のアプリケーションプログラムに、取得要求されたアプリケーションプログラムが含まれているか否かの判定を行う判定手段と、
前記エージェントが管理対象とする一又は複数のアプリケーションプログラムに、取得要求されたアプリケーションプログラムが含まれていないと判定された場合には、ネットワーク上の他の端末コンピュータの前記エージェントへ、取得要求されたアプリケーションプログラムの取得要求を送信する要求ホップを実行する手段を備えている
請求項10記載のエージェントコンピュータプログラム。
【請求項12】
前記エージェントは、
取得要求されたアプリケーションプログラムについて過去に行われた前記要求ホップ数が、設定された最大ホップ数を超えた場合には、前記要求ホップの実行を停止する手段を備えている
請求項11記載のエージェントコンピュータプログラム。
【請求項13】
前記エージェントは、
取得要求されたアプリケーションプログラムについて過去にアプリケーション取得要求を送信したエージェントを、その後のアプリケーション取得要求の送信先から除外する手段を備えている
請求項11又は12記載のエージェントコンピュータプログラム。
【請求項14】
請求項1〜13のいずれか1項に記載のエージェントコンピュータプログラムが搭載された端末コンピュータ。
【請求項15】
ネットワーク上の端末コンピュータにおいて稼働する一又は複数のアプリケーションプログラムを管理するとともに、前記アプリケーションのためのネットワーク通信を行うエージェントが搭載された端末コンピュータにおけるアプリケーションプログラム取得方法であって、
前記エージェントが管理対象とする一又は複数のアプリケーションプログラムに、必要なアプリケーションプログラムが含まれているか否かの判定を、前記エージェントが行うステップと、
前記エージェントが管理対象とする一又は複数のアプリケーションプログラムに、必要なアプリケーションプログラムが含まれていない場合には、必要なアプリケーションプログラムを、前記エージェントが前記ネットワーク上の他の端末コンピュータの前記エージェントから取得するステップと、
を含むことを特徴とするアプリケーションプログラム取得方法。
【請求項16】
ネットワーク上の端末コンピュータにおいて稼働する一又は複数のアプリケーションプログラムを管理するとともに前記アプリケーションのためのネットワーク通信を行うエージェントが搭載された端末コンピュータにおけるアプリケーションプログラム配信方法であって、
前記エージェントが、他の端末コンピュータのエージェントから、アプリケーションプログラムの取得要求を受信するステップと、
前記取得要求を受信した前記エージェントが、取得要求されたアプリケーションプログラムを、前記他の端末コンピュータのエージェントへ送信するステップと、
を含むことを特徴とするアプリケーションプログラム配信方法。
【請求項17】
ネットワーク上の各端末コンピュータにおいて稼働する一又は複数のアプリケーションプログラムを管理するとともに前記アプリケーションのためのネットワーク通信を行うために各端末コンピュータに搭載されたエージェントが、他の端末コンピュータに搭載されたエージェントに対して送信するアプリケーション取得要求のデータ構造であって、
前記アプリケーション取得要求の送信先である前記他の端末コンピュータに搭載されたエージェントが、取得要求の対象であるアプリケーションプログラムを識別するための識別子情報と、
前記アプリケーション取得要求がエージェントによって送信された回数を示す回数情報と、
を含むことを特徴とするアプリケーション取得要求データ構造。
【請求項18】
ネットワーク上の各端末コンピュータにおいて稼働する一又は複数のアプリケーションプログラムを管理するとともに前記アプリケーションのためのネットワーク通信を行うために各端末コンピュータに搭載されたエージェントが、他の端末コンピュータに搭載されたエージェントに対して送信するアプリケーション取得要求のデータ構造であって、
前記アプリケーション取得要求の送信先である前記他の端末コンピュータに搭載されたエージェントが、取得要求の対象であるアプリケーションプログラムの識別子情報と、
前記アプリケーション取得要求がエージェントによって送信された経路を示す経路情報と、
を含むことを特徴とするアプリケーション取得要求データ構造。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate