(57)【要約】【課題】クライアントコンピュータにおいて、新たに発生する要求に対応するソフトウェアがキャッシュされている可能性を高めて、クライアントコンピュータが効率的にソフトウェアを更新することができるソフトウェアキャッシュ装置を提供する。【解決手段】依存関係解析手段１１が、ソフトウェア提供サーバ３０から得たソフトウェアパッケージに含まれるメタデータを解析して、当該ソフトウェアパッケージに含まれるソフトウェアと他のソフトウェアとの依存関係を示す依存関係情報を抽出する。受信手段１２は、依存関係解析手段１１が抽出した依存関係情報にもとづいて、他のソフトウェアのソフトウェアパッケージをソフトウェア提供サーバ３０から受信して記憶手段１３に格納する。【選択図】図１０
2012008961.tif 000002
【特許請求の範囲】
【請求項１】
クライアントコンピュータが要求するソフトウェアパッケージが記憶手段に存在する場合には前記記憶手段に存在するソフトウェアパッケージをクライアントコンピュータに送信し、クライアントコンピュータが要求するソフトウェアパッケージが前記記憶手段に存在しない場合にはソフトウェア提供サーバから当該ソフトウェアパッケージを受信して前記記憶手段に格納するとともにクライアントコンピュータに送信するソフトウェアキャッシュ装置であって、
前記ソフトウェア提供サーバから得たソフトウェアパッケージに含まれるメタデータを解析して、当該ソフトウェアパッケージに含まれるソフトウェアと他のソフトウェアとの依存関係を示す依存関係情報を抽出する依存関係解析手段と、
前記依存関係解析手段が抽出した依存関係情報にもとづいて、他のソフトウェアのソフトウェアパッケージを前記ソフトウェア提供サーバから受信して前記記憶手段に格納する受信手段とを備えた
ことを特徴とするソフトウェアキャッシュ装置。
【請求項２】
クライアントコンピュータに送信されたソフトウェアパッケージを特定可能なデータを含むパッケージリストを保存するパッケージリスト保存手段を備え、
依存関係解析手段は、パッケージリスト保存手段からパッケージリストを入力し、入力されたパッケージリストに含まれるデータで特定されるソフトウェアパッケージを対象として依存関係情報を抽出する
請求項１記載のソフトウェアキャッシュ装置。
【請求項３】
依存関係解析手段は、一定時間間隔でパッケージリスト保存手段からパッケージリストを入力する
請求項２記載のソフトウェアキャッシュ装置。
【請求項４】
パッケージリスト保存手段は、複数のクライアントコンピュータの各々に対応したパッケージリストを保存する
請求項２または請求項３記載のソフトウェアキャッシュ装置。
【請求項５】
記憶手段に格納されるソフトウェアパッケージが更新された場合に、更新されたソフトウェアパッケージをクライアントコンピュータに送信するプッシュ手段を備えた
請求項１から請求項４のうちのいずれか１項に記載のソフトウェアキャッシュ装置。
【請求項６】
クライアントコンピュータが要求するソフトウェアパッケージが記憶手段に存在する場合には前記記憶手段に存在するソフトウェアパッケージをクライアントコンピュータに送信し、クライアントコンピュータが要求するソフトウェアパッケージが前記記憶手段に存在しない場合にはソフトウェア提供サーバから当該ソフトウェアパッケージを受信して前記記憶手段に格納するとともにクライアントコンピュータに送信するソフトウェアキャッシュ方法であって、
前記ソフトウェア提供サーバから得たソフトウェアパッケージに含まれるメタデータを解析して、当該ソフトウェアパッケージに含まれるソフトウェアと他のソフトウェアとの依存関係を示す依存関係情報を抽出し、
抽出した依存関係情報にもとづいて、他のソフトウェアのソフトウェアパッケージを前記ソフトウェア提供サーバから受信して前記記憶手段に格納する
ことを特徴とするソフトウェアキャッシュ方法。
【請求項７】
クライアントコンピュータに送信されたソフトウェアパッケージを特定可能なデータを含むパッケージリストをパッケージリスト保存手段に保存し、
パッケージリスト保存手段からパッケージリストを入力し、入力されたパッケージリストに含まれるデータで特定されるソフトウェアパッケージを対象として依存関係情報を抽出する
請求項６記載のソフトウェアキャッシュ方法。
【請求項８】
クライアントコンピュータが要求するソフトウェアパッケージが記憶手段に存在する場合には前記記憶手段に存在するソフトウェアパッケージをクライアントコンピュータに送信し、クライアントコンピュータが要求するソフトウェアパッケージが前記記憶手段に存在しない場合にはソフトウェア提供サーバから当該ソフトウェアパッケージを受信して前記記憶手段に格納するとともにクライアントコンピュータに送信するコンピュータに、
前記ソフトウェア提供サーバから受信したソフトウェアパッケージに含まれるメタデータを解析して、当該ソフトウェアパッケージに含まれるソフトウェアと他のソフトウェアとの依存関係を示す依存関係情報を抽出する依存関係解析処理と、
前記依存関係解析処理で抽出した依存関係情報にもとづいて、他のソフトウェアのソフトウェアパッケージを前記ソフトウェア提供サーバに要求する処理と
を実行させるためのソフトウェアキャッシュプログラム。
【請求項９】
コンピュータに、
クライアントコンピュータに送信されたソフトウェアパッケージを特定可能なデータを含むパッケージリストをパッケージリスト保存手段に保存する処理を実行させ、
依存関係解析処理で、パッケージリスト保存手段からパッケージリストを入力し、入力されたパッケージリストに含まれるデータで特定されるソフトウェアパッケージを対象として依存関係情報を抽出させる
請求項８記載のソフトウェアキャッシュプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアントコンピュータがダウンロードする可能性が高いソフトウェアをキャッシュするソフトウェアキャッシュ装置、ソフトウェアキャッシュ方法およびソフトウェアキャッシュプログラムに関する。
【背景技術】
【０００２】
クライアントコンピュータが必要とするソフトウェアを迅速に入手するために、ソフトウェアを保存している装置とクライアントコンピュータとの間にキャッシュ装置が設けられているシステムがある。
【０００３】
特許文献１には、クライアントコンピュータにおけるウェブブラウザで表示手段に表示されるべきポートレットの表示がユーザによって要求される前に、ポートレットのリンク構造とウェブブラウザによって表示手段に現在表示されている内容を示すビュー情報とにもとづいて、クライアントコンピュータがサーバから予めデータをダウンロードし、ユーザによって表示を要求されたタイミングで当該データにもとづく画面を表示手段に表示させる方法が記載されている。
【０００４】
特許文献２には、クライアントコンピュータによって既にダウンロードされているデータにもとづく文書と類似度の高い文書のデータをウェブサーバから予めダウンロードして蓄積し、クライアントコンピュータの要求に応じて、蓄積したデータを提供する装置が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２００７−５３６６５号公報（段落００１３〜００５４、図１）
【特許文献２】特開２００１−１０１０６１号公報（段落００１３〜００３９、図１）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に記載されている方法では、ユーザによる表示要求前のデータのダウンロードに要する通信容量を削減するために、ウェブブラウザによって表示手段に現在表示されているウェブページにおいて、ハイパーリンクで対応付けられているデータのみを事前にダウンロードする。従って、特許文献１に記載されている方法では、表示手段に現在表示されているウェブページに関連しているのでユーザによって表示を指示される可能性が高いデータであっても、ハイパーリンクで対応付けられていないデータは予めダウンロードされない。従って、ユーザによって表示を指示されたデータが予めダウンロードされていない可能性がある。
【０００７】
特許文献２に記載されている装置は、クライアントコンピュータによって既にダウンロードされているデータ自体のみにもとづいて選択したデータを蓄積しているので、蓄積するデータの選択の精度が低く、ユーザによってダウンロードを指示されたデータが蓄積されていない可能性がある。
【０００８】
つまり、特許文献１に記載されている方法および特許文献２に記載されている装置は、クライアントコンピュータにおいて新たに発生する要求に対応するソフトウェアがキャッシュされていない可能性がある。
【０００９】
そこで、本発明は、クライアントコンピュータにおいて、新たに発生する要求に対応するソフトウェアがキャッシュされている可能性を高めて、クライアントコンピュータが効率的にソフトウェアを更新することができるソフトウェアキャッシュ装置、ソフトウェアキャッシュ方法およびソフトウェアキャッシュプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明によるソフトウェアキャッシュ装置は、クライアントコンピュータが要求するソフトウェアパッケージが記憶手段に存在する場合には記憶手段に存在するソフトウェアパッケージをクライアントコンピュータに送信し、クライアントコンピュータが要求するソフトウェアパッケージが記憶手段に存在しない場合にはソフトウェア提供サーバから当該ソフトウェアパッケージを受信して記憶手段に格納するとともにクライアントコンピュータに送信するソフトウェアキャッシュ装置であって、ソフトウェア提供サーバから得たソフトウェアパッケージに含まれるメタデータを解析して、当該ソフトウェアパッケージに含まれるソフトウェアと他のソフトウェアとの依存関係を示す依存関係情報を抽出する依存関係解析手段と、依存関係解析手段が抽出した依存関係情報にもとづいて、他のソフトウェアのソフトウェアパッケージをソフトウェア提供サーバから受信して記憶手段に格納する受信手段とを備えたことを特徴とする。
【００１１】
本発明によるソフトウェアキャッシュ方法は、クライアントコンピュータが要求するソフトウェアパッケージが記憶手段に存在する場合には記憶手段に存在するソフトウェアパッケージをクライアントコンピュータに送信し、クライアントコンピュータが要求するソフトウェアパッケージが記憶手段に存在しない場合にはソフトウェア提供サーバから当該ソフトウェアパッケージを受信して記憶手段に格納するとともにクライアントコンピュータに送信するソフトウェアキャッシュ方法であって、ソフトウェア提供サーバから得たソフトウェアパッケージに含まれるメタデータを解析して、当該ソフトウェアパッケージに含まれるソフトウェアと他のソフトウェアとの依存関係を示す依存関係情報を抽出し、抽出した依存関係情報にもとづいて、他のソフトウェアのソフトウェアパッケージをソフトウェア提供サーバから受信して記憶手段に格納することを特徴とする。
【００１２】
本発明によるソフトウェアキャッシュプログラムは、クライアントコンピュータが要求するソフトウェアパッケージが記憶手段に存在する場合には記憶手段に存在するソフトウェアパッケージをクライアントコンピュータに送信し、クライアントコンピュータが要求するソフトウェアパッケージが記憶手段に存在しない場合にはソフトウェア提供サーバから当該ソフトウェアパッケージを受信して記憶手段に格納するとともにクライアントコンピュータに送信するコンピュータに、ソフトウェア提供サーバから受信したソフトウェアパッケージに含まれるメタデータを解析して、当該ソフトウェアパッケージに含まれるソフトウェアと他のソフトウェアとの依存関係を示す依存関係情報を抽出する依存関係解析処理と、依存関係解析処理で抽出した依存関係情報にもとづいて、他のソフトウェアのソフトウェアパッケージをソフトウェア提供サーバに要求する処理とを実行させることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、クライアントコンピュータにおいて、新たに発生する要求に対応するソフトウェアがキャッシュされている可能性を高めて、クライアントコンピュータが効率的にソフトウェアを更新することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明によるソフトウェアキャッシュ装置の実施形態の構成例を示すブロック図である。
【図２】パッケージリスト保存部に保存されているパッケージリストの例を示す説明図である。
【図３】ソフトウェアパッケージに含まれるメタデータの例を示す説明図である。
【図４】ソフトウェアキャッシュ装置の動作を示すフローチャートである。
【図５】ダウンロードされる可能性のあるすべてのソフトウェアパッケージをデータ蓄積部に蓄積する動作を示すフローチャートである。
【図６】依存関係解析部による解析結果にもとづいてクライアント部がソフトウェアパッケージをダウンロードする処理を示すフローチャートである。
【図７】プロキシサーバとしての機能を有するソフトウェアキャッシュ装置の接続例を示すブロック図である。
【図８】プッシュ部を備えたソフトウェアキャッシュ装置の構成例を示すブロック図である。
【図９】プッシュ部を備えたソフトウェアキャッシュ装置の動作を示すフローチャートである。
【図１０】本発明の概要を示すブロック図である。
【発明を実施するための形態】
【００１５】
本発明によるソフトウェアキャッシュ装置１００の実施形態について、図面を参照して説明する。図１は、本発明によるソフトウェアキャッシュ装置１００の実施形態の構成例を示すブロック図である。
【００１６】
図１に示すように、本発明によるソフトウェアキャッシュ装置１００は、プロキシサーバとしての機能を有し、パッケージサーバ３００にＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等の外部通信ネットワークを介して接続され、クライアントコンピュータ２００にＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等の内部通信ネットワークを介して接続されている。そして、ソフトウェアキャッシュ装置１００は、データ蓄積部１０１、クライアント部１０２、サーバ部１０３、定期更新部１０４、パッケージリスト保存部１０５および依存関係解析部１０６を含む。
【００１７】
サーバ部１０３はクライアントコンピュータ２００から、送信を要求するソフトウェアパッケージの名称と自クライアントコンピュータを特定可能な情報とを含むソフトウェアパッケージ要求を受信する。なお、ソフトウェアパッケージは、予め決められた処理をコンピュータに行わせるために構成されたソフトウェアと当該ソフトウェアのメタデータとを含む。サーバ部１０３は、受信したソフトウェアパッケージ要求をクライアント部１０２に転送し、クライアント部１０２から出力された応答をクライアントコンピュータ２００に転送する。
【００１８】
クライアント部１０２は、サーバ部１０３によって転送されたソフトウェアパッケージ要求を解析し、送信を要求されたソフトウェアパッケージが既にデータ蓄積部１０１に蓄積されているか否かを調べる。クライアント部１０２は、送信を要求されたソフトウェアパッケージがデータ蓄積部１０１に蓄積されている場合、当該ソフトウェアパッケージを応答としてサーバ部１０３に送る。クライアント部１０２は、クライアントコンピュータ２００から送信を要求されたソフトウェアパッケージがデータ蓄積部１０１に蓄積されていない場合、パッケージサーバ３００に当該ソフトウェアパッケージの送信を要求して当該パッケージサーバ３００から当該ソフトウェアパッケージをダウンロードし、データ蓄積部１０１に蓄積するとともに、パッケージリスト保存部１０５にダウンロードした当該ソフトウェアパッケージの名称であるパッケージ名を保存する。また、クライアント部１０２は、当該ソフトウェアパッケージを応答としてサーバ部１０３に送る。当該ソフトウェアパッケージはサーバ部１０３によってクライアントコンピュータ２００に送信される。
【００１９】
パッケージリスト保存部１０５は、送信先のクライアントコンピュータごとに、送信したソフトウェアパッケージのパッケージ名を示すパッケージリストを保存する。図２は、パッケージリスト保存部１０５に保存されているパッケージリストの例を示す説明図である。図２には、クライアントコンピュータ「ｎｏｄｅ００１」、クライアントコンピュータ「ｎｏｄｅ００２」およびクライアントコンピュータ「ｎｏｄｅ００３」に、ａｃｌ、ａｃｐｉ、ａｄｄｕｓｅｒ、ａｌｉｅｎ、ａｌｓａ−ｂａｓｅ、ａｌｓａ−ｕｔｉｌｓ、およびａｎａｃｒｏｎ等というパッケージ名のソフトウェアパッケージが送信されたことが示されている。
【００２０】
定期更新部１０４は、一定時間間隔で、パッケージリスト保存部１０５に保存されたパッケージリストにもとづいて、データ蓄積部１０１に蓄積されているソフトウェアパッケージを更新するための処理を開始する。具体的には、定期更新部１０４は、パッケージリスト保存部１０５に保存されているパッケージリストを読み出し、読み出したパッケージリストを依存関係解析部１０６に渡す。
【００２１】
そして、依存関係解析部１０６は、パッケージリストに含まれているソフトウェアパッケージのメタデータを解析し、解析結果にもとづいて、データ蓄積部１０１に蓄積されているそれぞれのソフトウェアパッケージとそれらのソフトウェアパッケージが依存するすべてのソフトウェアパッケージのダウンロード要求をクライアント部１０２に送る。クライアント部１０２は要求に応じて、データ蓄積部１０１に蓄積されていないソフトウェアパッケージをパッケージサーバ３００から再帰的にダウンロードし、データ蓄積部１０１の蓄積内容とパッケージリスト保存部１０５に保存されているパッケージリストとを更新する。
【００２２】
図３は、ソフトウェアパッケージに含まれるメタデータの例を示す説明図である。図３に示す例では、メタデータによって、ソフトウェアパッケージ毎に、バージョン、ソフトウェアパッケージの分類、ソフトウェアパッケージの説明、および依存するソフトウェアパッケージが示されている。そして、図３に示すメタデータの例では、「Ｄｅｐｅｎｄｓ」の欄に示されているように、ソフトウェアパッケージ「ａｌｉｅｎ」は、ｄｅｂｈｅｌｐｅｒ、ｐｅｒｌ、ｒｐｍ、ｄｐｋｇ−ｄｅｖ、ｍａｋｅ、ｃｐｉｏというソフトウェアパッケージに依存していることが示されている。
【００２３】
なお、一のソフトウェアパッケージが他のソフトウェアパッケージに依存するとは、コンピュータに他のソフトウェアパッケージに含まれるソフトウェアが搭載されていない場合に、当該コンピュータは一のソフトウェアパッケージに含まれるソフトウェアに従う処理を行うことができないことをいう。図３に示す例では、ｄｅｂｈｅｌｐｅｒ、ｐｅｒｌ、ｒｐｍ、ｄｐｋｇ−ｄｅｖ、ｍａｋｅ、ｃｐｉｏというソフトウェアパッケージが搭載されていないコンピュータでは、ソフトウェアパッケージ「ａｌｉｅｎ」に従う処理を行えない。従って、クライアントコンピュータ２００にソフトウェアパッケージ「ａｌｉｅｎ」に従う処理を行わせるためには、クライアントコンピュータ２００にｄｅｂｈｅｌｐｅｒ、ｐｅｒｌ、ｒｐｍ、ｄｐｋｇ−ｄｅｖ、ｍａｋｅ、ｃｐｉｏというソフトウェアパッケージを送信し、各ソフトウェアパッケージがクライアントコンピュータ２００に搭載されなければならない。よって、メタデータにもとづいて、ソフトウェアパッケージ「ａｌｉｅｎ」の送信を要求したクライアントコンピュータ２００は、ｄｅｂｈｅｌｐｅｒ、ｐｅｒｌ、ｒｐｍ、ｄｐｋｇ−ｄｅｖ、ｍａｋｅ、ｃｐｉｏというソフトウェアパッケージの送信を要求することが予想される。
【００２４】
依存関係解析部１０６は、定期更新部１０４によってパッケージリスト、および当該パッケージリストによって示される各ソフトウェアパッケージのメタデータが入力された場合に、入力されたメタデータを再帰的に解析して、パッケージリストに含まれる各ソフトウェアパッケージがそれぞれ直接的に、または間接的に依存するソフトウェアパッケージのパッケージ名を示す情報である依存パッケージ集合を生成し、生成した依存パッケージ集合を定期更新部１０４に出力する。
【００２５】
依存関係解析部１０６が依存パッケージ集合を生成する処理について説明する。依存パッケージ集合を生成する処理とは、パッケージリストに含まれるパッケージ名のソフトウェアパッケージが直接的に、または間接的に依存するソフトウェアパッケージのパッケージ名を含む集合である依存パッケージ集合を生成する処理である。具体的には、依存関係解析部１０６は、図３に例示したメタデータが定期更新部１０４によって入力された場合に、まず、ａｌｉｅｎ、ｄｅｂｈｅｌｐｅｒ、ｐｅｒｌ、ｒｐｍ、ｄｐｋｇ−ｄｅｖ、ｍａｋｅ、およびｃｐｉｏを示す依存パッケージ集合を生成する。そして、依存関係解析部１０６は、定期更新部１０４によって入力されたパッケージリストにｄｅｂｈｅｌｐｅｒ、ｐｅｒｌ、ｒｐｍ、ｄｐｋｇ−ｄｅｖ、ｍａｋｅ、またはｃｐｉｏが含まれている場合に、パッケージリストに含まれているパッケージ名のソフトウェアパッケージのメタデータを定期更新部１０４およびクライアント部１０２を介してデータ蓄積部１０１から取得する。そして、生成した依存パッケージ集合に、取得したメタデータによって示されている依存するソフトウェアパッケージのパッケージ名を追加する。
【００２６】
依存関係解析部１０６は、依存パッケージ集合を生成する処理として、パッケージリストに含まれているソフトウェアパッケージのメタデータを取得する動作、およびメタデータによって示されている依存するソフトウェアパッケージのパッケージ名を依存パッケージ集合に追加する動作を、パッケージリストに含まれるパッケージ名のソフトウェアパッケージが直接的に、または間接的に依存するソフトウェアパッケージのパッケージ名を全てパッケージ集合に追加するまで繰り返す。
【００２７】
一例として、ソフトウェアパッケージＡがソフトウェアパッケージＢ１およびソフトウェアパッケージＢ２に依存することがソフトウェアパッケージＡのメタデータによって示され、ソフトウェアパッケージＢ１がソフトウェアパッケージＣ１に依存することがソフトウェアパッケージＢ１のメタデータによって示され、ソフトウェアパッケージＢ２がソフトウェアパッケージＣ２およびソフトウェアパッケージＣ３に依存することがソフトウェアパッケージＢ２のメタデータによって示されている場合に、依存関係解析部１０６は、パッケージ集合を生成する処理として、まず、ソフトウェアパッケージＡ、ソフトウェアパッケージＢ１、およびソフトウェアパッケージＢ２のパッケージ名を含む依存パッケージ集合を生成し、そして、ソフトウェアパッケージＣ１、ソフトウェアパッケージＣ２およびソフトウェアパッケージＣ３のパッケージ名を生成した依存パッケージ集合に追加する。
【００２８】
次に、図１に示すソフトウェアキャッシュ装置１００の動作について、図面を参照して説明する。図４は、図１に示すソフトウェアキャッシュ装置１００の動作を示すフローチャートである。
【００２９】
まず、ソフトウェアキャッシュ装置１００における通常のプロキシサーバとしての動作について説明する。サーバ部１０３は、クライアントコンピュータ２００からソフトウェアパッケージ要求を受信する（ステップＳ１０１）。サーバ部１０３は、受信したソフトウェアパッケージ要求にもとづいて、送信を要求されたソフトウェアパッケージが既にデータ蓄積部１０１に蓄積されているか否かを調べる（ステップＳ１０２）。サーバ部１０３は、受信したソフトウェアパッケージ要求にもとづいて、送信を要求されたソフトウェアパッケージが既にデータ蓄積部１０１に蓄積されている場合に（ステップＳ１０２のＹ）、当該ソフトウェアパッケージをデータ蓄積部１０１から読み出して、クライアントコンピュータ２００に送信する（ステップＳ１０３）。
【００３０】
サーバ部１０３は、送信を要求されたソフトウェアパッケージがデータ蓄積部１０１に蓄積されていない場合に（ステップＳ１０２のＮ）、クライアント部１０２に、ソフトウェアパッケージ要求を出力する。クライアント部１０２は、パッケージサーバ３００からソフトウェアパッケージ要求によって示されるソフトウェアパッケージをダウンロードする（ステップＳ１０４）。
【００３１】
クライアント部１０２は、ステップＳ１０３の処理でダウンロードしたソフトウェアパッケージをデータ蓄積部１０１に蓄積する（ステップＳ１０５）。また、クライアント部１０２は、ステップＳ１０４の処理でダウンロードしたソフトウェアパッケージのパッケージ名と、ソフトウェアパッケージ要求によって示されるクライアントコンピュータ名との組をパッケージリスト保存部１０５に保存し、パッケージリストを更新する（ステップＳ１０６）。なお、クライアント部１０２は、サーバ部１０３がソフトウェアパッケージをクライアントコンピュータ２００に送信した後に、パッケージリストを更新してもよい。そして、サーバ部１０３は、クライアント部１０２がステップＳ１０５の処理でデータ蓄積部１０１に蓄積したソフトウェアパッケージを読み出して、クライアントコンピュータ２００に送信する（ステップＳ１０３）。
【００３２】
次に、ソフトウェアキャッシュ装置１００において、ソフトウェアパッケージのメタデータから抽出した依存関係情報とダウンロード履歴とを用いて、ダウンロードされる可能性のあるすべてのソフトウェアパッケージを再帰的にダウンロードしてデータ蓄積部１０１に蓄積する動作について説明する。図５は、ダウンロードされる可能性のあるすべてのソフトウェアパッケージを再帰的にダウンロードしてデータ蓄積部１０１に蓄積する動作を示すフローチャートである。なお、依存関係情報は、ソフトウェアパッケージのメタデータにおける「Ｄｅｐｅｎｄｓ」の欄で示される情報である。また、ダウンロード履歴は、パッケージリスト保存部１０５に保存されているパッケージリストによって示される。ダウンロードされる可能性のある全てのソフトウェアパッケージを再帰的にダウンロードするとは、例えば、パッケージリストに含まれているパッケージ名のソフトウェアパッケージに含まれるソフトウェアが、直接的にまたは間接的に依存するソフトウェアを含むソフトウェアパッケージをダウンロードすることをいう。
【００３３】
定期更新部１０４は、一定時間間隔で、パッケージリスト保存部１０５に保存されているパッケージリストを読み出し、読み出したパッケージリストを依存関係解析部１０６に渡す（ステップＳ２０１）。
【００３４】
依存関係解析部１０６は、定期更新部１０４によって渡されたパッケージリストに登録されているデータが示すソフトウェアパッケージに含まれるメタデータとを解析して依存関係情報を抽出し、抽出した依存関係情報にもとづいてパッケージリストに含まれるソフトウェアパッケージが依存するソフトウェアパッケージのダウンロードをクライアント部１０２に指示する（ステップＳ２０２）。クライアント部１０２は、指示に応じてパッケージリストに含まれるソフトウェアパッケージが依存するソフトウェアパッケージの送信をパッケージサーバ３００に要求する。そして、クライアント部１０２は、当該要求に応じてパッケージサーバ３００によって送信されたソフトウェアパッケージを受信する。つまり、クライアント部１０２は、ソフトウェアパッケージをダウンロードする。
【００３５】
クライアント部１０２は、ステップＳ２０２の処理で新たなソフトウェアパッケージをダウンロードした場合に（ステップＳ２０３のＹ）、ステップＳ２０２の処理でダウンロードしたソフトウェアパッケージをデータ蓄積部１０１に蓄積する（ステップＳ２０４）。また、クライアント部１０２は、ステップＳ２０２の処理でダウンロードしたソフトウェアパッケージのパッケージ名をパッケージリスト保存部１０５に保存し、パッケージリストを更新する（ステップＳ２０５）。
【００３６】
依存関係解析部１０６による解析結果にもとづいてクライアント部１０２がソフトウェアパッケージをダウンロードするステップＳ２０２の処理について説明する。図６は、依存関係解析部１０６による解析結果にもとづいてクライアント部１０２がソフトウェアパッケージをダウンロードする処理を示すフローチャートである。
【００３７】
依存関係解析部１０６は、パッケージリストとメタデータとの解析時に、解析対象のソフトウェアパッケージのパッケージ名を含む解析対象パッケージ集合と、解析対象のソフトウェアパッケージが依存するソフトウェアパッケージのパッケージ名を含む依存パッケージ集合とを用意する。なお、初期状態の解析対象パッケージ集合および依存パッケージ集合には、パッケージリストに含まれるパッケージ名がそれぞれ含まれているとする。
【００３８】
依存関係解析部１０６は、解析対象パッケージ集合が空集合であるか否かを確認する（ステップＳ３０１）。依存関係解析部１０６は、解析対象パッケージ集合が空集合である場合に（ステップＳ３０１のＹ）、処理を終了する。
【００３９】
依存関係解析部１０６によって解析対象パッケージ集合が空集合でないことが確認された場合に（ステップＳ３０１のＮ）、クライアント部１０２は、解析対象パッケージ集合に含まれるパッケージ名のソフトウェアパッケージをパッケージサーバ３００からダウンロードする（ステップＳ３０２）。
【００４０】
依存関係解析部１０６は、ステップＳ３０２の処理でクライアント部１０２がダウンロードしたソフトウェアパッケージに含まれるメタデータを取得する（ステップＳ３０３）。そして、取得したメタデータを解析して、ステップＳ３０２の処理でクライアント部１０２がダウンロードしたソフトウェアパッケージに依存するソフトウェアパッケージのパッケージ名を抽出し、抽出したパッケージ名を依存パッケージ集合に追加する（ステップＳ３０４）。
【００４１】
依存関係解析部１０６は、ステップＳ３０４の処理で抽出したパッケージ名を解析対象パッケージ集合に追加し（ステップＳ３０５）、ステップＳ３０４の処理で解析の対象となったメタデータに対応するソフトウェアパッケージのパッケージ名を解析対象パッケージ集合から消去して、ステップＳ３０１の処理に移行する。ステップＳ３０１で、解析対象パッケージ集合が空集合である場合に処理を終了するように構成されているので、パッケージリストに含まれているパッケージ名のソフトウェアパッケージが直接的に、または間接的に依存する全てのソフトウェアパッケージのパッケージ名が依存パッケージ集合に追加されたときに、解析対象パッケージ集合が空集合となり、処理が終了する。
【００４２】
本実施形態によれば、ソフトウェアパッケージのダウンロード履歴と、当該ダウンロード履歴によって示されるダウンロード済みのソフトウェアパッケージのメタデータから抽出した依存関係とにもとづいて、クライアントコンピュータ２００によってダウンロードされる可能性があるソフトウェアパッケージを事前に外部通信ネットワークを介してパッケージサーバ３００からダウンロードしてデータ蓄積部１０１に蓄積するので、クライアントコンピュータ２００において、新たに発生する要求に対応するソフトウェアがデータ蓄積部１０１に蓄積されている可能性が高まり、クライアントコンピュータ２００がパッケージサーバ３００からソフトウェアをダウンロードする場合に比べて、ダウンロード時間を短縮することができる。従って、クライアントコンピュータ２００が効率的にソフトウェアを更新することができる。
【００４３】
図７は、プロキシサーバとしての機能を有するソフトウェアキャッシュ装置１００の接続例を示すブロック図である。図７に示す例では、ソフトウェアキャッシュ装置１００は、ＷＡＮを介して複数のパッケージサーバ３００にそれぞれ接続されている。また、ソフトウェアキャッシュ装置１００は、ＬＡＮを介して複数のコンピュータによって構成される複数のクラスタノード２０１にそれぞれ接続されている。なお、各クラスタノード２０１には、複数のソフトウェアパッケージが既にそれぞれインストールされているとする。
【００４４】
ソフトウェアキャッシュ装置１００は、各クラスタノード２０１にインストールされているソフトウェアパッケージ、および当該ソフトウェアパッケージが依存するソフトウェアパッケージがパッケージサーバ３００によって更新されて提供されているか否かを確認する。ソフトウェアキャッシュ装置１００は、パッケージサーバ３００によってソフトウェアパッケージが更新されて提供されている場合に、更新されたソフトウェアパッケージをダウンロードして蓄積する。
【００４５】
クラスタノード２０１が、更新されたソフトウェアパッケージの送信を要求した場合に、ソフトウェアキャッシュ装置１００は、要求に応じて蓄積しているソフトウェアパッケージをクラスタノード２０１にそれぞれ提供する。
【００４６】
クラスタノード２０１には、ＷＡＮを介さずにソフトウェアキャッシュ装置１００から更新されたソフトウェアパッケージが送信されるので、クラスタノード２０１が、更新されたソフトウェアパッケージをダウンロードするための時間を短縮することができる。
【００４７】
なお、ソフトウェアキャッシュ装置１００が、データ蓄積部１０１に蓄積されているソフトウェアパッケージをクライアントコンピュータ２００に送信するプッシュ部１０７を備えるように構成されていてもよい。図８は、プッシュ部１０７を備えたソフトウェアキャッシュ装置１００の構成例を示すブロック図である。図８に示す例では、ソフトウェアキャッシュ装置１００は、図１に示す構成要素に加えて、プッシュ部１０７を含む。
【００４８】
図９は、図８に示すソフトウェアキャッシュ装置１００の動作を示すフローチャートである。図９に示すように、プッシュ部１０７を含むソフトウェアキャッシュ装置１００は、図５のフローチャートに示す各処理に加えて、プッシュ部１０７がステップＳ２０６の処理を行う。
【００４９】
プッシュ部１０７は、ステップＳ２０６の処理で、データ蓄積部１０１に蓄積されているソフトウェアパッケージが更新された場合に、更新後のソフトウェアパッケージをクライアントコンピュータ２００に送信する。
【００５０】
ソフトウェアキャッシュ装置１００がプッシュ部１０７を含むように構成された場合には、クライアントコンピュータ２００がソフトウェアキャッシュ装置１００にソフトウェアパッケージの送信を要求することなく、クライアントコンピュータ２００にソフトウェアパッケージを提供することができる。従って、クライアントコンピュータ２００の処理負担を軽減することができる。また、サーバ部１０３の処理負担を軽減することができる。
【００５１】
次に、本発明の概要について説明する。図１０は、本発明の概要を示すブロック図である。図１０に示すように、本発明によるソフトウェアキャッシュ装置１０は、依存関係解析手段１１（図１に示す依存関係解析部１０６に相当）と、受信手段１２（図１に示すクライアント部１０２に相当）とを含む。
【００５２】
依存関係解析手段１１は、ソフトウェア提供サーバ３０（図１に示すパッケージサーバ３００に相当）から得たソフトウェアパッケージに含まれるメタデータを解析して、当該ソフトウェアパッケージに含まれるソフトウェアと他のソフトウェアとの依存関係を示す依存関係情報を抽出する。受信手段１２は、依存関係解析手段１１が抽出した依存関係情報にもとづいて、他のソフトウェアのソフトウェアパッケージをソフトウェア提供サーバ３０から受信して記憶手段１３（図１に示すデータ蓄積部１０１に相当）に格納する。
【００５３】
そのような構成によれば、クライアントコンピュータ２０において、新たに発生する要求に対応するソフトウェアパッケージがキャッシュされている可能性を高めて、クライアントコンピュータ２０が効率的にソフトウェアを更新することができる。
【００５４】
また、上記の実施形態では、以下の（１）〜（４）に示すようなソフトウェアキャッシュ装置も開示されている。
【００５５】
（１）クライアントコンピュータ２０に送信されたソフトウェアパッケージを特定可能なデータを含むパッケージリストを保存するパッケージリスト保存手段（図１に示すパッケージリスト保存部１０５に相当）を備え、依存関係解析手段１１は、パッケージリスト保存手段からパッケージリストを入力し、入力されたパッケージリストに含まれるデータで特定されるソフトウェアパッケージを対象として依存関係情報を抽出するソフトウェアキャッシュ装置。
【００５６】
（２）依存関係解析手段１１は、一定時間間隔でパッケージリスト保存手段からパッケージリストを入力するソフトウェアキャッシュ装置。
【００５７】
（３）パッケージリスト保存手段は、複数のクライアントコンピュータ２０の各々に対応したパッケージリストを保存するソフトウェアキャッシュ装置。
【００５８】
（４）記憶手段１３に格納されるソフトウェアパッケージが更新された場合に、更新されたソフトウェアパッケージをクライアントコンピュータに送信するプッシュ手段（図８に示すプッシュ部１０７に相当）を備えたソフトウェアキャッシュ装置。
【産業上の利用可能性】
【００５９】
本発明を、他のソフトウェアに依存するソフトウェアが搭載されたコンピュータに適用可能である。
【符号の説明】
【００６０】
１０、１００  ソフトウェアキャッシュ装置
１１  依存関係解析手段
１２  受信手段
１３  記憶手段
２０、２００  クライアントコンピュータ
３０  ソフトウェア提供サーバ
１０１  データ蓄積部
１０２  クライアント部
１０３  サーバ部
１０４  定期更新部
１０５  パッケージリスト保存部
１０６  依存関係解析部
１０７  プッシュ部
２０１  クラスタノード
【図１】
2012008961.tif 000003
【図２】
2012008961.tif 000004
【図３】
2012008961.tif 000005
【図４】
2012008961.tif 000006
【図５】
2012008961.tif 000007
【図６】
2012008961.tif 000008
【図７】
2012008961.tif 000009
【図８】
2012008961.tif 000010
【図９】
2012008961.tif 000011
【図１０】
2012008961.tif 000012