OSGiフレームワーク仕様に準拠した処理を演算装置に実行させるOSGiプログラムであって、OSGiフレームワークを実装したソフトウェアモジュールと、前記OSGiフレームワークの配下で動作する処理を記述したOSGiバンドルと、を備え、前記OSGiバンドルは、前記演算装置に、前記演算装置を搭載している電子機器に接続された外部デバイスを検出するデバイス検出ステップ、前記外部デバイスを識別するデバイス識別情報を取得するステップ、前記デバイス識別情報に対応するOSGiバンドルを配信するように配信サーバへ要求するステップ、前記デバイス識別情報に対応するOSGiバンドルを前記配信サーバから受信して前記OSGiフレームワーク上にインストールするステップ、を実行させることを特徴とするOSGiプログラム。前記OSGiバンドルは、前記デバイス検出ステップにおいて、前記演算装置に、前記電子機器が備えるUSBポートに接続されたUSBデバイスを前記外部デバイスとして検出するステップ、または前記電子機器が属しているネットワーク内に存在するUPnPデバイスを前記外部デバイスとして検出するステップの少なくともいずれかを実行させることを特徴とする請求項1記載のOSGiプログラム。前記OSGiバンドルは、前記演算装置に、前記演算装置を搭載している電子機器に対してユーザが指示した命令を検出する命令検出ステップ、前記命令に対応するOSGiバンドルを配信するように配信サーバへ要求するステップ、前記命令に対応するOSGiバンドルを前記配信サーバから受信して前記OSGiフレームワーク上にインストールするステップ、を実行させることを特徴とする請求項1記載のOSGiプログラム。前記OSGiバンドルは、前記演算装置に、前記演算装置を搭載している電子機器が格納しているデータの種類を検出するデータ検出ステップ、前記種類に対応するOSGiバンドルを配信するように配信サーバへ要求するステップ、前記種類に対応するOSGiバンドルを前記配信サーバから受信して前記OSGiフレームワーク上にインストールするステップ、を実行させることを特徴とする請求項1記載のOSGiプログラム。請求項1記載のOSGiプログラムと、前記OSGiプログラムを実行する演算装置と、を備えることを特徴とする電子機器。請求項5記載の電子機器と、前記電子機器にOSGiバンドルを配信する配信サーバと、を有し、前記配信サーバは、前記デバイス識別情報と前記電子機器に配信すべきOSGiバンドルとの対応関係を記述したバンドルテーブルを備え、前記デバイス識別情報に対応するOSGiバンドルを配信すべき旨の要求を前記電子機器から受け取ると、前記バンドルテーブルを参照してそのデバイス識別情報に対応するOSGiバンドルを特定し、特定したOSGiバンドルを前記電子機器に配信することを特徴とするOSGiシステム。前記配信サーバは、前記電子機器から前記デバイス識別情報を受け取ると、前記バンドルテーブルを参照してそのデバイス識別情報に対応するOSGiバンドルを特定し、特定したOSGiバンドルを識別するバンドル識別情報を前記電子機器に配信し、前記電子機器は、前記バンドル識別情報を前記配信サーバから受け取ると、そのバンドル識別情報に対応するOSGiバンドルが前記OSGiフレームワーク上にインストールされているか否かを確認し、インストールされていない場合はそのOSGiバンドルを配信するように前記配信サーバへ要求することを特徴とする請求項6記載のOSGiシステム。前記OSGiバンドルは、前記演算装置に、前記演算装置を搭載している電子機器に対してユーザが指示した命令を検出する命令検出ステップ、前記命令に対応するOSGiバンドルを配信するように配信サーバへ要求するステップ、前記命令に対応するOSGiバンドルを前記配信サーバから受信して前記OSGiフレームワーク上にインストールするステップ、を実行させ、前記バンドルテーブルは、前記命令と前記電子機器に配信すべきOSGiバンドルとの対応関係を記述しており、前記配信サーバは、前記命令に対応するOSGiバンドルを配信すべき旨の要求を前記電子機器から受け取ると、前記バンドルテーブルを参照してその命令に対応するOSGiバンドルを特定し、特定したOSGiバンドルを前記電子機器に配信することを特徴とする請求項6記載のOSGiシステム。前記OSGiバンドルは、前記演算装置に、前記演算装置を搭載している電子機器が格納しているデータの種類を検出するデータ検出ステップ、前記種類に対応するOSGiバンドルを配信するように配信サーバへ要求するステップ、前記種類に対応するOSGiバンドルを前記配信サーバから受信して前記OSGiフレームワーク上にインストールするステップ、を実行させ、前記バンドルテーブルは、前記種類と前記電子機器に配信すべきOSGiバンドルとの対応関係を記述しており、前記配信サーバは、前記種類に対応するOSGiバンドルを配信すべき旨の要求を前記電子機器から受け取ると、前記バンドルテーブルを参照してその種類に対応するOSGiバンドルを特定し、特定したOSGiバンドルを前記電子機器に配信することを特徴とする請求項6記載のOSGiシステム。前記OSGiフレームワーク上にインストールされているOSGiバンドルの一覧を公開するポータルサーバを有し、前記電子機器は、前記OSGiフレームワーク上にインストールされているOSGiバンドルを識別するインストール済バンドル情報と、当該電子機器を識別するユーザ識別情報とを前記ポータルサーバに対して送信し、前記ポータルサーバは、前記電子機器から受け取った前記インストール済バンドル情報と前記ユーザ識別情報に基づき、前記SGiフレームワーク上にインストールされているOSGiバンドルの一覧を前記電子機器に対して公開することを特徴とする請求項6記載のOSGiシステム。ユーザがゲートウェイデバイス上に導入しようとしているアプリケーションOSGiバンドルが、上記例のように特定種類の外部デバイスと連動するものである場合、ユーザはその外部デバイスに対応するOSGiバンドルを探してゲートウェイデバイス上にインストールする必要がある。そのため、ユーザにとって作業負担が大きい。また、配信サーバからプッシュ型でOSGiバンドルを配信する場合、多数のクライアント端末ゲートウェイデバイスを常に配信サーバ側で監視する必要があり、配信システム全体として大規模かつ複雑にならざるを得ない。新たなOSGiバンドルを配信する必要が常時発生するようなクライアント端末でない場合、このようなプッシュ型の配信システムはオーバースペックであると考えられる。本発明は、上記のような課題を解決するためになされたものであり、OSGiフレームワークを搭載した電子機器に接続する外部デバイスを利用するために必要となるOSGiバンドルを、配信システムに負担をかけず電子機器へ自動的にインストールすることを目的とする。本発明に係るOSGiプログラムは、OSGiフレームワークを搭載する電子機器に接続された外部デバイスを検出し、その外部デバイスに対応するOSGiバンドルを配信サーバからダウンロードし、電子機器にインストールする。本発明に係るOSGiプログラムによれば、OSGiフレームワークを搭載する電子機器に外部デバイスを接続するだけで、その外部デバイスに対応するOSGiバンドルを電子機器にインストールすることができる。これにより、ユーザに作業負担をかけることなく、電子機器上で新たな外部デバイスを利用することができる。また、必要なOSGiバンドルを配信するように電子機器の側から要求するので、配信システムは電子機器を常時監視する必要はなく、配信システムにかかる負担を抑えることができる。<実施の形態1>図1は、本発明の実施形態1に係るOSGiシステム100の構成図である。OSGiシステム100は、OSGiフレームワークに準拠した機能を提供するシステムであり、ゲートウェイデバイス10、配信サーバ20、ポータルサーバ30を有する。ゲートウェイデバイス10は、ユーザ宅に配置され、OSGiフレームワークが搭載された電子機器である。ゲートウェイデバイス10は、OSオペレーティングシステム11、JavaVM12、OSGiフレームワーク13、バンドル取得バンドル14を備える。その他、各プログラムを実行するCPUCentralProcessingUnit、ネットワークインターフェースなどを適宜備える。ここでは、OSGiフレームワークを搭載した電子機器としてゲートウェイデバイスを例に説明するが、その他の電子機器も同様の構成を備えることができる。以下では記載の便宜上、各プログラムを動作主体として説明する場合があるが、実際にこれらプログラムを実行するのはCPUなどの演算装置である。OS11は、ゲートウェイデバイス10のOSであり、例えばLinux登録商標などのOSを用いることができる。JavaVM12は、OS11上で動作し、OSGiフレームワーク13を実行する。OSGiフレームワーク13は、OSGiフレームワーク仕様を実装したソフトウェアである。バンドル取得バンドル14は、OSGiフレームワーク13上で動作するOSGiバンドルである。バンドル取得バンドル14は、ZigBeeドングル40のようなUSBデバイスがゲートウェイデバイス10のUSBポートに接続されたことを検知し、そのデバイスに対応するOSGiバンドルこの例ではZigBeeバンドル15を配信サーバ20よりダウンロードしてOSGiフレームワーク13上にインストールし実行する。その他、ゲートウェイデバイス10が属するネットワーク上に接続されたUPnPUniversalPlugandPlayデバイスを検出し、同様の処理を実施することもできる。また、バンドル取得バンドル14は、新しくインストールされたOSGiバンドルの識別情報をユーザIDとともにポータルサーバ30に通知する。ここでいうユーザIDは、サービスプロバイダが各ユーザおよびユーザ宅のOSGiフレームワークに割り振ったユニークIDである。ポータルサーバ30は、このユーザIDを用いて、個々のゲートウェイデバイス10を識別することができる。配信サーバ20は、各ユーザ宅のゲートウェイデバイス10にOSGiバンドルを配信するサーバである。配信サーバ20は、HTTPサーバ部21、デバイスマッチング部22、OSGiバンドルプール23を備える。HTTPサーバ部21とデバイスマッチング部22は、これらの機能を実現する回路デバイスなどのハードウェアを用いて構成することもできるし、同様の機能を実装したソフトウェアとCPUなどの演算装置を用いて構成することもできる。OSGiバンドルプール23は、データを格納する記憶装置を用いて構成することができる。HTTPサーバ部21は、バンドル取得バンドル14から後述するデバイス識別情報やバンドル識別情報を受け取り、これらに対応するバンドル識別情報やOSGiバンドルを配信する。HTTPサーバ部21は、HTTPサーバとして実装することができる。デバイスマッチング部22は、バンドル取得バンドル14から受け取ったデバイス識別情報に合致するバンドル識別情報またはOSGiバンドルをOSGiバンドルプール23から検索し、HTTPサーバ部21を介してバンドル取得バンドル14に送信する。OSGiバンドルプール23は、OSGiバンドルおよび各OSGiバンドルを識別するバンドル識別情報を保持するデータベースである。OSGiバンドルプール23は、データベース内に保持するデータを例えばテーブル形式で記述することができる。ポータルサーバ30は、Webページを通じてユーザに各種サービスを提供するサーバである。例えば、ゲートウェイデバイス10自身がユーザインターフェースを備えていない場合、ユーザはゲートウェイデバイス10内にどのようなOSGiバンドルがインストールされているかを知ることができない。そこでバンドル取得バンドル14は、OSGiフレームワーク13上にインストール済みのOSGiバンドルのバンドル識別情報をポータルサーバ30へ通知し、ポータルサーバ30はこれをWebページ形式に整形してユーザに公開する。その他、ユーザ情報の管理などの各種サービスを提供することもできるがここでは説明しない。図2は、バンドル取得バンドル14の機能ブロック図である。バンドル取得バンドル14は、デバイス情報取得部141、バンドル配置実行部142、バンドル取得部143を備える。これら機能部は、バンドル取得バンドル14が備えるJavaメソッドとして実装することができる。デバイス情報取得部141は、USBデバイスがゲートウェイデバイス10のUSBポートに接続されたこと、またはゲートウェイデバイス10が属するネットワークにUPnPデバイスが接続されたことを検知し、そのデバイスを識別するためのデバイス識別情報を取得する。バンドル配置実行部142は、OSGiバンドルをOSGiフレームワーク13にインストールし実行する。バンドル取得部143は、配信サーバ20にデバイス識別情報を送信し、そのデバイスにマッチするOSGiバンドルまたはそのバンドル識別情報を取得する。図3は、デバイス情報取得部141の機能ブロック図である。デバイス情報取得部141は、USBデバイス情報取得部1411とUPnPデバイス情報取得部1413を備える。USBデバイス情報取得部1411は、ゲートウェイデバイス10にUSBデバイスが接続されたことを検知し、そのデバイスの識別情報例えば製造者、製品名など、以下同じを取得する。UPnPデバイス情報取得部1413は、UPnPデバイスがゲートウェイデバイス10の属するネットワークLANに接続されたことを検知し、そのデバイスの識別情報を取得する。USBデバイス情報取得部1411は、例えばオープンソースのJavaライブラリであるJSR80モジュール1412を使用して、USBデバイスの識別情報を取得する。JSR80は、USBデバイスが接続されたことを検知する機能、USBデバイスの製造者名や製品名といったプロパティを取得する機能を提供する。JSR80モジュール1412がUSBデバイスを検知する前提として、そのUSBデバイスに適合するデバイスドライバがOS11に組み込まれているものとする。主要なデバイスドライバは一般的なOS11に組み込まれているため、JSR80モジュール1412は大多数のUSBデバイスからデバイス識別情報を取得することができると考えられる。UPnPデバイス情報取得部1413は、UPnPサービス17を使用してUPnPデバイスを検知し、同デバイスのデバイス識別情報を取得する。UPnPサービス17は、OSGiフレームワーク13が動作しているデバイスと同じネットワーク内に存在するUPnPデバイスの検知、製造者や製品名といったデバイス識別情報の取得、およびそのUPnPデバイスが持つ機能を使用するためのインターフェースを提供する。UPnPサービス17は、OSGiフレームワーク13上で動作するOSGiバンドルである。UPnPサービス17は、OSGiAllianceによって仕様化され、多くのOSGiフレームワーク上で提供されている。図4は、OSGiバンドルプール23の構成例を示す図である。OSGiバンドルプール23は、ゲートウェイデバイス10に接続される外部デバイスのデバイス識別情報と、そのデバイスに対応するOSGiバンドルのバンドル識別情報との対応関係を記述するテーブルを有する。デバイス識別情報は、例えば当該デバイスの製造者名と製品名のような、当該デバイスから取得することができる情報を用いて構成することができる。バンドル識別情報は、各OSGiバンドルに固有のバンドルシンボル名とバンドルバージョン番号を用いて構成することができる。OSGi規格では全てのバンドルがバンドルシンボル名を持つよう規定されているので、バンドルシンボル名によって個々のOSGiバンドルを特定することができる。なお、実際にOSGiバンドルを配信するときに備えて、OSGiバンドルの実体ファイルjarファイルのファイル名をバンドル識別情報に含めてもよい。デバイスマッチング部22は、ゲートウェイデバイス10に接続された外部デバイスのデバイス識別情報をバンドル取得バンドル14から取得し、OSGiバンドルプール23が格納しているデータと比較することにより、そのデバイスに対応するOSGiバンドルを特定する。ここでいう対応するOSGiバンドルとは、ゲートウェイデバイス10上でそのデバイスを利用するために必要となるOSGiバンドル、インストールすることが望ましいOSGiバンドルなど、ゲートウェイデバイス10上でそのデバイスを使用する際に何らかの形態で用いられるOSGiバンドルのことである、図5は、バンドル取得バンドル14の動作フローを示す図である。以下、図5の各ステップについて説明する。図5:ステップS500OSGiフレームワーク13は常時実行型のフレームワークであるため、バンドル取得バンドル14は新たなデバイスを検出するように常時待機している。ゲートウェイデバイス10のUSBポートにUSBデバイスが接続されるか、またはゲートウェイデバイス10が属するネットワーク内に新たなUPnPデバイスが接続され、デバイス情報取得部141がその旨を検出すると、デバイス情報取得部141は本処理フローを開始する。図5:ステップS501デバイス情報取得部141は、新たに検出した外部デバイスのデバイス識別情報を取得し、そのデバイス識別情報をバンドル取得バンドル14に通知する。図5:ステップS502バンドル取得部143は、デバイス情報取得部141より受け取ったデバイス識別情報を、HTTPリクエストに載せて配信サーバ20に送信する。バンドル取得部143は、配信サーバ20からのレスポンスを待ち受ける。図5:ステップS503バンドル取得部143は、配信サーバ20からのHTTPレスポンスがNullボディ部分が空であった場合、本処理を終了する。これは送信したデバイス識別情報にマッチするOSGiバンドルが見つからなかったことを意味する。HTTPレスポンス内にバンドル識別情報が含まれている場合は、ステップS504に進む。図5:ステップS503:補足本ステップにおいて、デバイスマッチング部22は、バンドル取得部143から受け取ったデバイス識別情報に合致するOSGiバンドルのバンドル識別情報をOSGiバンドルプール23から検索し、バンドル取得部143に返信する。バンドル識別情報とは、図4で説明したバンドルシンボル名とバージョン番号である。図5:ステップS504バンドル取得部143は、ステップS503で受け取ったバンドルシンボル名とバージョン番号に一致するOSGiバンドルが既にOSGiフレームワーク13上にインストールされているか否かをチェックする。図5:ステップS504:補足バージョン番号をチェックするのは、OSGiフレームワーク13上に同じバンドルシンボルでバージョンが古いOSGiバンドルがインストールされていた場合に、それを更新するためである。この仕組みにより、ゲートウェイデバイス10をネットワークに接続する毎に、OSGiバンドルを新しいバージョンに更新することができる。図5:ステップS505ステップS504でチェックしたOSGiバンドルがOSGiフレームワーク13上に既にインストールされている場合は本処理フローを終了し、インストールされていない場合はステップS506へ進む。図5:ステップS506バンドル取得部143は、ステップS503で取得したバンドルシンボル名を載せて配信サーバ20にHTTPリクエストを送り、そのバンドルシンボル名に該当するOSGiバンドルを配信サーバ20から取得する。図5:ステップS506:補足本処理フローでは、ステップS503~S504でいったんバンドル識別情報を取得してそのOSGiバンドルがインストール済みであるか否かをチェックし、インストールされていない場合のみ本ステップでそのOSGiバンドルを取得することとした。これは、毎回OSGiバンドルを取得すると、ゲートウェイデバイス10や配信サーバ20の処理負荷が大きくなるからである。図5:ステップS507バンドル配置実行部142は、ステップS506で取得したOSGiバンドルをインストール実行する。同じバンドルシンボル名でバージョン番号が古いOSGiバンドルが既にインストールされている場合は、そのOSGiバンドルを上書インストールする。インストールに成功すればステップS508に進み、失敗した場合は本処理を終了する。図5:ステップS508バンドル配置実行部142は、インストールしたOSGiバンドルのバンドルシンボル名とバージョン番号、およびOSGiフレームワーク13に設定されているユーザIDをポータルサーバ30に送信する。ここでのユーザIDは、先に説明したように、サービスプロバイダが各ユーザを識別するために各ユーザのOSGiフレームワーク13に割り当てたIDであり、OSGiフレームワークの仕様で定められたものではない。図6は、図5のステップS502における配信サーバ20の動作フローを示す図である。以下、図6の各ステップについて説明する。図6:ステップS5021HTTPサーバ部21は、ゲートウェイデバイス10からデバイス識別情報を付加したHTTPリクエストを受け取ると、そのデバイス識別情報をデバイスマッチング部22に渡す。デバイス識別情報を受け取ったデバイスマッチング部22は、そのデバイス識別情報に対応するOSGiバンドルをOSGiバンドルプール23から検索する。図6:ステップS5022ステップS5021でデバイス識別情報に対応するOSGiバンドルを発見できた場合はステップS5023に進み、発見できなかった場合はステップS5024に進む。図6:ステップS5023デバイスマッチング部22は、ステップS5021で発見したOSGiバンドルのバンドル識別情報バンドルシンボル名とバージョンをOSGiバンドルプール23から取り出してHTTPサーバ部21に渡す。HTTPサーバ部21は、ゲートウェイデバイス10にそのバンドル識別情報を返信する。図6:ステップS5024HTTPサーバ部21は、ゲートウェイデバイス10にNullボディ部が空白のHTTPレスポンスを返信する。図7は、図5のステップS506における配信サーバ20の動作フローを示す図である。以下、図7の各ステップについて説明する。図7:ステップS5061HTTPサーバ部21は、ゲートウェイデバイス10からバンドル識別情報バンドルシンボル名とバージョンを付加したHTTPリクエストを受け取ると、そのバンドル識別情報に該当するOSGiバンドルをOSGiバンドルプール23から取得し、ゲートウェイデバイス10に返送する。図8は、図5のステップS502でバンドル取得部143が配信サーバ20に送信するHTTPリクエストの内容を例示する図である。バンドル取得部143は、ゲートウェイデバイス10に接続されているUSBデバイスまたはUPnPデバイスのデバイス識別情報ここでは製造者名と製品名を配信サーバ20に送信し、これに対応するOSGiバンドルの識別情報バンドルシンボル名とバージョンを取得する。図9は、図5のステップS502で配信サーバ20がバンドル取得部143に送信するHTTPレスポンスの内容を例示する図である。デバイスマッチング部22は、HTTPサーバ部21を介して、バンドル取得部143から受け取ったデバイス識別情報に合致するバンドル識別情報ここではバンドルシンボル名とバージョン番号を返信する。図10は、図5のステップS508でバンドル取得部143がポータルサーバ30に送信するHTTPメッセージの内容を例示する図である。インストール実行されたOSGiバンドルのバンドル識別情報をユーザIDと結び付けてポータルサーバ30に送信することにより、ポータルサーバ30はどのユーザのゲートウェイデバイス10にどのOSGiバンドルがインストールされたかを知ることができる。図11は、ポータルサーバ30がユーザに提供するWebページの画面推移を例示する図である。説明の便宜上、ステップ番号を付与した。以下、図11の各ステップに示す画面遷移について説明する。図11:ステップS1101ポータルサーバ30は、図5のステップS508において、ゲートウェイデバイス10に新たなOSGiバンドルがインストールされたことを知る。ポータルサーバ30は、そのユーザに対して当該OSGiバンドルに対応する機能が利用できるようになった旨を通知する。図11:ステップS1101:補足その1ゲートウェイデバイス10にインストールしたOSGiバンドルの一覧をポータルサーバ30から通知するのは、OSGiフレームワーク13が基本的にGUIGraphicalUserInterfaceを持たないため、OSGiフレームワーク13にインストールされたOSGiバンドルの利用方法をユーザに知らせる必要があるからである。OSGiフレームワークが内部的にWebサーバを備えており、Webページ形式の画面を提供できる可能性もあるが、その場合でもユーザがそのページに頻繁にアクセスしているか否かは不明である。そのため、何らかのプッシュ型手段によってユーザに通知することが望ましいと考えられる。図11:ステップS1101:補足その2本ステップにおける通知の内容は、単純にそのOSGiサービスが提供するサービスの利用方法が記載されている場合、図11に示すようにサービス利用のためのWebページへのリンクが貼られている場合、などが考えられる。前者はそのOSGiバンドルがユーザ宅のLAN内で完結しているサービスを提供している場合に適している。後者はサービスプロバイダが提供するサーバを経由して利用する形態のサービスに適している。図11:ステップS1101:補足その3本ステップにおける通知は、例えばユーザが所持する所定の電子メールアドレス宛に送信してもよいし、ゲートウェイデバイス10が備えているWebページを介して操作を実施している場合は、そのWebページ上で通知してもよい。図11:ステップS1102ユーザは、Webブラウザを操作し、サービスプロバイダから割り当てられたIDとパスワードなどを用いて、ステップS1101で受け取った通知に記載されているWebサイトなどへログインする。このWebサイトは、ポータルサーバ30が提供するものでもよいし、ポータルサーバ30上のものでなくともよい。図11:ステップS1103ユーザがWebサイトにログインすると、当該ユーザが所持するゲートウェイデバイス10にインストールされ実行されているOSGiバンドルに対応するサービスの一覧が現れる。ここでは、ユーザはXXX社のZigBeeドングル40をゲートウェイデバイス10に挿し、そのZigBeeドングル40を操作するためのOSGiバンドルがゲートウェイデバイス10にインストールされている例を示した。このページ内のリンクより、ユーザ宅のZigBeeデバイスを操作するためのページに進むことができる。図11:ステップS1104本ステップで例示している画面は、ZigBeeドングル40が提供するZigBeeネットワークにZigBeeデバイスを追加するための機能ボタンを備える。本Web画面上でこのボタンを押し、一方でユーザ宅内のZigBeeデバイスがネットワークに参加手続き多くの場合はこれもデバイス上のボタンを押すことを実施すると、ZigBeeデバイスがネットワークに追加され、このWeb画面を通じて操作することができるようになる。図11:ステップS1105ステップS1104で新たなZigBeeデバイスをZigBeeネットワーク上に追加した後は、そのZigBeeデバイスを本画面上で操作することができるようになる。例えば家庭内の電気機器をZigBeeデバイスとして遠隔操作することができる。<実施の形態1:まとめ>以上のように、本実施形態1によれば、ユーザがゲートウェイデバイス10に新たな外部デバイスを接続すると、その外部デバイスを利用するために必要なOSGiバンドルがゲートウェイデバイス10に自動的にインストールされる。これにより、ユーザは必要なOSGiバンドルを探したりインストールしたりする作業から解放され、ユーザの負担を軽減することができる。また、新たな外部デバイスを検出した時点で配信サーバ20に対してOSGiバンドルを配信するよう要求するので、配信サーバ20にかける負担を軽減することができる。また、本実施形態1によれば、バンドル取得部143は、新たな外部デバイスに対応するOSGiバンドルがOSGiフレームワーク13上にインストールされていない場合のみ、配信サーバ20からOSGiバンドルを取得する。これにより、ゲートウェイデバイス10と配信サーバ20双方の負担を軽減することができる。<実施の形態2>実施形態1では、ゲートウェイデバイス10に新たな外部デバイスが接続されたとき、これに対応するOSGiバンドルを取得する例を説明した。新たなOSGiバンドルが必要になるその他の場合として、例えば以下のような例が考えられる。<実施の形態2:ユーザ操作に対応するOSGiバンドル>ゲートウェイデバイス10のユーザが、ゲートウェイデバイス10上である特定の操作を実施してゲートウェイデバイス10に命令を発したとき、その命令に対応するOSGiバンドルを配信サーバ10から取得することが考えられる。例えば、ユーザがゲートウェイデバイス10上でZigBeeデバイスを操作しようとした時点で、ZigBee機能を実装したOSGiバンドルを配信サーバ20から取得することが考えられる。この場合、配信サーバ20のOSGiバンドルプール23は、ユーザがゲートウェイデバイス10に対して発する命令と、その命令に対応するOSGiバンドルとの対応関係を記述したテーブルを備える必要がある。また、バンドル取得バンドル14は、ゲートウェイデバイス10に接続された外部デバイスを検出することに加えて、ユーザがゲートウェイデバイス10に対して発する命令を検出する必要がある。<実施の形態2:データ種別に対応するOSGiバンドル>ゲートウェイデバイス10に新たな外部デバイスが接続されたとき、その外部デバイスは特定種類のデータを格納している場合がある。バンドル取得部143は、そのデータ種類に対応するOSGiバンドルを配信サーバ10から取得することが考えられる。例えば外部デバイスが動画データを格納している場合、その動画データを再生するためのDLNADigitalLivingNetworkAllianceプレイヤー機能を実装したOSGiバンドルを配信サーバ20から取得することが考えられる。この場合、配信サーバ20のOSGiバンドルプール23は、外部デバイスが格納するデータ種類と、そのデータ種類に対応するOSGiバンドルとの対応関係を記述したテーブルを備える必要がある。また、バンドル取得バンドル14は、ゲートウェイデバイス10に接続された外部デバイスを検出することに加えて、その外部デバイスに格納されているデータ種類を検出する必要がある。<実施の形態3>実施形態1では、ゲートウェイデバイス10に接続される外部デバイスの例として、USBデバイスとUPnPデバイスを例示したが、その他種類の外部デバイスを検出するようにしてもよい。例えば、PCIPeripheralComponentInterconnectカード、IPInternetProtocolデバイスなどを検出してもよい。ただし、どのようなデバイスを検出してもよいものではなく、少なくともユーザがゲートウェイデバイス10を介して利用することができるデバイスである必要がある。