(57)【特許請求の範囲】
【請求項１】
ＯＳＧｉフレームワーク仕様に準拠した処理を演算装置に実行させるＯＳＧｉプログラムであって、
ＯＳＧｉフレームワークを実装したソフトウェアモジュールと、
前記ＯＳＧｉフレームワークの配下で動作する処理を記述したＯＳＧｉバンドルと、
を備え、
前記ＯＳＧｉバンドルは、前記演算装置に、
前記演算装置を搭載している電子機器に接続された外部デバイスを検出するデバイス検出ステップ、
前記外部デバイスを識別するデバイス識別情報を取得するステップ、
前記デバイス識別情報に対応するＯＳＧｉバンドルを配信するように配信サーバへ要求するステップ、
前記デバイス識別情報に対応するＯＳＧｉバンドルを前記配信サーバから受信して前記ＯＳＧｉフレームワーク上にインストールするステップ、
を実行させ、
前記ＯＳＧｉバンドルはさらに、前記演算装置に、
前記演算装置を搭載している電子機器に対してユーザが指示した命令を検出する命令検出ステップ、
前記命令に対応するＯＳＧｉバンドルを配信するように配信サーバへ要求するステップ、
前記命令に対応するＯＳＧｉバンドルを前記配信サーバから受信して前記ＯＳＧｉフレームワーク上にインストールするステップ、
を実行させる
ことを特徴とするＯＳＧｉプログラム。
【請求項２】
ＯＳＧｉフレームワーク仕様に準拠した処理を演算装置に実行させるＯＳＧｉプログラムであって、
ＯＳＧｉフレームワークを実装したソフトウェアモジュールと、
前記ＯＳＧｉフレームワークの配下で動作する処理を記述したＯＳＧｉバンドルと、
を備え、
前記ＯＳＧｉバンドルは、前記演算装置に、
前記演算装置を搭載している電子機器に接続された外部デバイスを検出するデバイス検出ステップ、
前記外部デバイスを識別するデバイス識別情報を取得するステップ、
前記デバイス識別情報に対応するＯＳＧｉバンドルを配信するように配信サーバへ要求するステップ、
前記デバイス識別情報に対応するＯＳＧｉバンドルを前記配信サーバから受信して前記ＯＳＧｉフレームワーク上にインストールするステップ、
を実行させ、
前記ＯＳＧｉバンドルはさらに、前記演算装置に、
前記演算装置を搭載している電子機器が格納しているデータの種類を検出するデータ検出ステップ、
前記種類に対応するＯＳＧｉバンドルを配信するように配信サーバへ要求するステップ、
前記種類に対応するＯＳＧｉバンドルを前記配信サーバから受信して前記ＯＳＧｉフレームワーク上にインストールするステップ、
を実行させる
ことを特徴とするＯＳＧｉプログラム。
【請求項３】
前記ＯＳＧｉバンドルは、前記デバイス検出ステップにおいて、前記演算装置に、
前記電子機器が備えるＵＳＢポートに接続されたＵＳＢデバイスを前記外部デバイスとして検出するステップ、または前記電子機器が属しているネットワーク内に存在するＵＰｎＰデバイスを前記外部デバイスとして検出するステップの少なくともいずれかを実行させる
ことを特徴とする請求項１または２記載のＯＳＧｉプログラム。
【請求項４】
請求項１または２記載のＯＳＧｉプログラムと、
前記ＯＳＧｉプログラムを実行する演算装置と、
を備えることを特徴とする電子機器。
【請求項５】
請求項４記載の電子機器と、
前記電子機器にＯＳＧｉバンドルを配信する配信サーバと、
を有し、
前記配信サーバは、
前記デバイス識別情報と前記電子機器に配信すべきＯＳＧｉバンドルとの対応関係を記述したバンドルテーブルを備え、
前記デバイス識別情報に対応するＯＳＧｉバンドルを配信すべき旨の要求を前記電子機器から受け取ると、前記バンドルテーブルを参照してそのデバイス識別情報に対応するＯＳＧｉバンドルを特定し、特定したＯＳＧｉバンドルを前記電子機器に配信する
ことを特徴とするＯＳＧｉシステム。
【請求項６】
前記配信サーバは、
前記電子機器から前記デバイス識別情報を受け取ると、前記バンドルテーブルを参照してそのデバイス識別情報に対応するＯＳＧｉバンドルを特定し、特定したＯＳＧｉバンドルを識別するバンドル識別情報を前記電子機器に配信し、
前記電子機器は、
前記バンドル識別情報を前記配信サーバから受け取ると、そのバンドル識別情報に対応するＯＳＧｉバンドルが前記ＯＳＧｉフレームワーク上にインストールされているか否かを確認し、
インストールされていない場合はそのＯＳＧｉバンドルを配信するように前記配信サーバへ要求する
ことを特徴とする請求項５記載のＯＳＧｉシステム。
【請求項７】
前記ＯＳＧｉフレームワーク上にインストールされているＯＳＧｉバンドルの一覧を公開するポータルサーバを有し、
前記電子機器は、
前記ＯＳＧｉフレームワーク上にインストールされているＯＳＧｉバンドルを識別するインストール済バンドル情報と、当該電子機器を識別するユーザ識別情報とを前記ポータルサーバに対して送信し、
前記ポータルサーバは、
前記電子機器から受け取った前記インストール済バンドル情報と前記ユーザ識別情報に基づき、前記ＳＧｉフレームワーク上にインストールされているＯＳＧｉバンドルの一覧を前記電子機器に対して公開する
ことを特徴とする請求項５記載のＯＳＧｉシステム。
【請求項８】
電子機器と、
前記電子機器にＯＳＧｉバンドルを配信する配信サーバと、
を有するＯＳＧｉシステムであって、
前記電子機器は、
ＯＳＧｉフレームワーク仕様に準拠した処理を演算装置に実行させるＯＳＧｉプログラム、
前記ＯＳＧｉプログラムを実行する前記演算装置、
を備え、
前記ＯＳＧｉプログラムは、
ＯＳＧｉフレームワークを実装したソフトウェアモジュールと、
前記ＯＳＧｉフレームワークの配下で動作する処理を記述したＯＳＧｉバンドルと、
を備え、
前記ＯＳＧｉバンドルは、前記演算装置に、
前記演算装置を搭載している電子機器に接続された外部デバイスを検出するデバイス検出ステップ、
前記外部デバイスを識別するデバイス識別情報を取得するステップ、
前記デバイス識別情報に対応するＯＳＧｉバンドルを配信するように配信サーバへ要求するステップ、
前記デバイス識別情報に対応するＯＳＧｉバンドルを前記配信サーバから受信して前記ＯＳＧｉフレームワーク上にインストールするステップ、
を実行させ、
前記配信サーバは、
前記デバイス識別情報と前記電子機器に配信すべきＯＳＧｉバンドルとの対応関係を記述したバンドルテーブルを備え、
前記デバイス識別情報に対応するＯＳＧｉバンドルを配信すべき旨の要求を前記電子機器から受け取ると、前記バンドルテーブルを参照してそのデバイス識別情報に対応するＯＳＧｉバンドルを特定し、特定したＯＳＧｉバンドルを前記電子機器に配信し、
前記ＯＳＧｉシステムはさらに、
前記ＯＳＧｉフレームワーク上にインストールされているＯＳＧｉバンドルの一覧を公開するポータルサーバを有し、
前記電子機器は、
前記ＯＳＧｉフレームワーク上にインストールされているＯＳＧｉバンドルを識別するインストール済バンドル情報と、当該電子機器を識別するユーザ識別情報とを前記ポータルサーバに対して送信し、
前記ポータルサーバは、
前記電子機器から受け取った前記インストール済バンドル情報と前記ユーザ識別情報に基づき、前記ＯＳＧｉフレームワーク上にインストールされているＯＳＧｉバンドルの一覧を前記電子機器に対して公開する
ことを特徴とするＯＳＧｉシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＯＳＧｉフレームワーク仕様に対応したＯＳＧｉバンドルを配信する技術に関する。
【背景技術】
【０００２】
ＯＳＧｉフレームワークとは、Ｊａｖａ（登録商標）Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ上で動作し、ＪａｖａプログラムをＰｌｕｇｉｎモジュールとして取り扱い、動的にアプリケーションへ追加できるようにする、サービスプラットフォームである。ＯＳＧｉフレームワークは、ＯＳＧｉ  Ａｌｌｉａｎｃｅによって開発・定義されている（非特許文献１）。Ｐｌｕｇｉｎモジュールとして扱われるＯＳＧｉフレームワーク上のＪａｖａプログラムのことを、ＯＳＧｉバンドルと呼ぶ。
【０００３】
通信キャリアなどのサービスプロバイダが各家庭に設置しているゲートウェイデバイスなどの端末（ブロードバンドルータ等）のなかには、ＯＳＧｉフレームワークを搭載しているものがある。ＯＳＧｉフレームワークは、ゲートウェイデバイスにアプリケーションを配信し、実行する基盤としての役割を担う。端末がＯＳＧｉフレームワークを搭載し、配信サーバからＯＳＧｉバンドルを配信することにより、遠隔からモジュール単位で機能の追加やアップデートをすることができる。
【０００４】
家庭内のゲートウェイデバイスは、新たなＯＳＧｉバンドルを配信サーバから取得する必要が生じる場合がある。例えば、ユーザがＺｉｇＢｅｅ（登録商標）通信機能を持ったＵＳＢドングルを購入した場合について考える。
【０００５】
ＺｉｇＢｅｅドングルをゲートウェイデバイスのＵＳＢポートに挿せば、ゲートウェイデバイス１０はハードウェア能力としてはＺｉｇＢｅｅ通信機能を備えることができる。しかし、ゲートウェイデバイスがＺｉｇＢｅｅ通信を実施するために必要な通信ソフトウェアを備えていなければ、ユーザはＺｉｇＢｅｅ機能を使用することはできない。
【０００６】
このような場合、ユーザはサービスプロバイダのＷｅｂページ等からＺｉｇＢｅｅ通信を実施するために必要なＯＳＧｉバンドルを探し、自宅のゲートウェイデバイスにダウンロードしインストールする。これにより、配信サーバから自宅ゲートウェイデバイスへＺｉｇＢｅｅ通信のためのＯＳＧｉバンドルが送り込まれ、ゲートウェイデバイスはそのＯＳＧｉバンドルの機能を使用してＺｉｇＢｅｅ機器を操作することができるようになる。
【０００７】
このときユーザがＯＳＧｉバンドルを探すために用いるユーザインターフェースとして、Ｗｅｂブラウザが考えられる。Ｗｅｂブラウザのアクセス先は、例えばサービスプロバイダが提供するＷｅｂページである。ユーザは、Ｗｅｂブラウザを用いて必要なＯＳＧｉバンドルを探し、ゲートウェイデバイス上にダウンロードしてインストールする。
【０００８】
上述のように、ゲートウェイデバイス上にインストールするＯＳＧｉバンドルをユーザが手動で探してインストールする他、配信サーバとゲートウェイデバイスの間の通信セッションを常時または定期的に確立し、ゲートウェイデバイスが必要とするＯＳＧｉバンドルを配信サーバ側からプッシュ配信することも考えられる。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】ＯＳＧｉ  Ｓｅｒｖｉｃｅ  Ｐｌａｔｆｏｒｍ  Ｒｅｌｅａｓｅ４、ＵＲＬ：http://www.osgi.org/Release4/HomePage（２０１１年８月２２日取得）
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ユーザがゲートウェイデバイス上に導入しようとしているアプリケーション（ＯＳＧｉバンドル）が、上記例のように特定種類の外部デバイスと連動するものである場合、ユーザはその外部デバイスに対応するＯＳＧｉバンドルを探してゲートウェイデバイス上にインストールする必要がある。そのため、ユーザにとって作業負担が大きい。
【００１１】
また、配信サーバからプッシュ型でＯＳＧｉバンドルを配信する場合、多数のクライアント端末（ゲートウェイデバイス）を常に配信サーバ側で監視する必要があり、配信システム全体として大規模かつ複雑にならざるを得ない。新たなＯＳＧｉバンドルを配信する必要が常時発生するようなクライアント端末でない場合、このようなプッシュ型の配信システムはオーバースペックであると考えられる。
【００１２】
本発明は、上記のような課題を解決するためになされたものであり、ＯＳＧｉフレームワークを搭載した電子機器に接続する外部デバイスを利用するために必要となるＯＳＧｉバンドルを、配信システムに負担をかけず電子機器へ自動的にインストールすることを目的とする。
【課題を解決するための手段】
【００１３】
本発明に係るＯＳＧｉプログラムは、ＯＳＧｉフレームワークを搭載する電子機器に接続された外部デバイスを検出し、その外部デバイスに対応するＯＳＧｉバンドルを配信サーバからダウンロードし、電子機器にインストールする。
【発明の効果】
【００１４】
本発明に係るＯＳＧｉプログラムによれば、ＯＳＧｉフレームワークを搭載する電子機器に外部デバイスを接続するだけで、その外部デバイスに対応するＯＳＧｉバンドルを電子機器にインストールすることができる。これにより、ユーザに作業負担をかけることなく、電子機器上で新たな外部デバイスを利用することができる。また、必要なＯＳＧｉバンドルを配信するように電子機器の側から要求するので、配信システムは電子機器を常時監視する必要はなく、配信システムにかかる負担を抑えることができる。
【図面の簡単な説明】
【００１５】
【図１】実施形態１に係るＯＳＧｉシステム１００の構成図である。
【図２】バンドル取得バンドル１４の機能ブロック図である。
【図３】デバイス情報取得部１４１の機能ブロック図である。
【図４】ＯＳＧｉバンドルプール２３の構成例を示す図である。
【図５】バンドル取得バンドル１４の動作フローを示す図である。
【図６】図５のステップＳ５０２における配信サーバ２０の動作フローを示す図である。
【図７】図５のステップＳ５０６における配信サーバ２０の動作フローを示す図である。
【図８】図５のステップＳ５０２でバンドル取得部１４３が配信サーバ２０に送信するＨＴＴＰリクエストの内容を例示する図である。
【図９】図５のステップＳ５０２で配信サーバ２０がバンドル取得部１４３に送信するＨＴＴＰレスポンスの内容を例示する図である。
【図１０】図５のステップＳ５０８でバンドル取得部１４３がポータルサーバ３０に送信するＨＴＴＰメッセージの内容を例示する図である。
【図１１】ポータルサーバ３０がユーザに提供するＷｅｂページの画面推移を例示する図である。
【発明を実施するための形態】
【００１６】
＜実施の形態１＞
図１は、本発明の実施形態１に係るＯＳＧｉシステム１００の構成図である。ＯＳＧｉシステム１００は、ＯＳＧｉフレームワークに準拠した機能を提供するシステムであり、ゲートウェイデバイス１０、配信サーバ２０、ポータルサーバ３０を有する。
【００１７】
ゲートウェイデバイス１０は、ユーザ宅に配置され、ＯＳＧｉフレームワークが搭載された電子機器である。ゲートウェイデバイス１０は、ＯＳ（オペレーティングシステム）１１、ＪａｖａＶＭ１２、ＯＳＧｉフレームワーク１３、バンドル取得バンドル１４を備える。その他、各プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ネットワークインターフェースなどを適宜備える。ここでは、ＯＳＧｉフレームワークを搭載した電子機器としてゲートウェイデバイスを例に説明するが、その他の電子機器も同様の構成を備えることができる。以下では記載の便宜上、各プログラムを動作主体として説明する場合があるが、実際にこれらプログラムを実行するのはＣＰＵなどの演算装置である。
【００１８】
ＯＳ１１は、ゲートウェイデバイス１０のＯＳであり、例えばＬｉｎｕｘ（登録商標）などのＯＳを用いることができる。ＪａｖａＶＭ１２は、ＯＳ１１上で動作し、ＯＳＧｉフレームワーク１３を実行する。ＯＳＧｉフレームワーク１３は、ＯＳＧｉフレームワーク仕様を実装したソフトウェアである。
【００１９】
バンドル取得バンドル１４は、ＯＳＧｉフレームワーク１３上で動作するＯＳＧｉバンドルである。バンドル取得バンドル１４は、ＺｉｇＢｅｅドングル４０のようなＵＳＢデバイスがゲートウェイデバイス１０のＵＳＢポートに接続されたことを検知し、そのデバイスに対応するＯＳＧｉバンドル（この例ではＺｉｇＢｅｅバンドル１５）を配信サーバ２０よりダウンロードしてＯＳＧｉフレームワーク１３上にインストールし実行する。その他、ゲートウェイデバイス１０が属するネットワーク上に接続されたＵＰｎＰ（Ｕｎｉｖｅｒｓａｌ  Ｐｌｕｇ  ａｎｄ  Ｐｌａｙ）デバイスを検出し、同様の処理を実施することもできる。
【００２０】
また、バンドル取得バンドル１４は、新しくインストールされたＯＳＧｉバンドルの識別情報をユーザＩＤとともにポータルサーバ３０に通知する。ここでいうユーザＩＤは、サービスプロバイダが各ユーザおよびユーザ宅のＯＳＧｉフレームワークに割り振ったユニークＩＤである。ポータルサーバ３０は、このユーザＩＤを用いて、個々のゲートウェイデバイス１０を識別することができる。
【００２１】
配信サーバ２０は、各ユーザ宅のゲートウェイデバイス１０にＯＳＧｉバンドルを配信するサーバである。配信サーバ２０は、ＨＴＴＰサーバ部２１、デバイスマッチング部２２、ＯＳＧｉバンドルプール２３を備える。ＨＴＴＰサーバ部２１とデバイスマッチング部２２は、これらの機能を実現する回路デバイスなどのハードウェアを用いて構成することもできるし、同様の機能を実装したソフトウェアとＣＰＵなどの演算装置を用いて構成することもできる。ＯＳＧｉバンドルプール２３は、データを格納する記憶装置を用いて構成することができる。
【００２２】
ＨＴＴＰサーバ部２１は、バンドル取得バンドル１４から後述するデバイス識別情報やバンドル識別情報を受け取り、これらに対応するバンドル識別情報やＯＳＧｉバンドルを配信する。ＨＴＴＰサーバ部２１は、ＨＴＴＰサーバとして実装することができる。
【００２３】
デバイスマッチング部２２は、バンドル取得バンドル１４から受け取ったデバイス識別情報に合致するバンドル識別情報またはＯＳＧｉバンドルをＯＳＧｉバンドルプール２３から検索し、ＨＴＴＰサーバ部２１を介してバンドル取得バンドル１４に送信する。
【００２４】
ＯＳＧｉバンドルプール２３は、ＯＳＧｉバンドルおよび各ＯＳＧｉバンドルを識別するバンドル識別情報を保持するデータベースである。ＯＳＧｉバンドルプール２３は、データベース内に保持するデータを例えばテーブル形式で記述することができる。
【００２５】
ポータルサーバ３０は、Ｗｅｂページを通じてユーザに各種サービスを提供するサーバである。例えば、ゲートウェイデバイス１０自身がユーザインターフェースを備えていない場合、ユーザはゲートウェイデバイス１０内にどのようなＯＳＧｉバンドルがインストールされているかを知ることができない。そこでバンドル取得バンドル１４は、ＯＳＧｉフレームワーク１３上にインストール済みのＯＳＧｉバンドルのバンドル識別情報をポータルサーバ３０へ通知し、ポータルサーバ３０はこれをＷｅｂページ形式に整形してユーザに公開する。その他、ユーザ情報の管理などの各種サービスを提供することもできるがここでは説明しない。
【００２６】
図２は、バンドル取得バンドル１４の機能ブロック図である。バンドル取得バンドル１４は、デバイス情報取得部１４１、バンドル配置・実行部１４２、バンドル取得部１４３を備える。これら機能部は、バンドル取得バンドル１４が備えるＪａｖａメソッドとして実装することができる。
【００２７】
デバイス情報取得部１４１は、ＵＳＢデバイスがゲートウェイデバイス１０のＵＳＢポートに接続されたこと、またはゲートウェイデバイス１０が属するネットワークにＵＰｎＰデバイスが接続されたことを検知し、そのデバイスを識別するためのデバイス識別情報を取得する。バンドル配置・実行部１４２は、ＯＳＧｉバンドルをＯＳＧｉフレームワーク１３にインストールし実行する。バンドル取得部１４３は、配信サーバ２０にデバイス識別情報を送信し、そのデバイスにマッチするＯＳＧｉバンドルまたはそのバンドル識別情報を取得する。
【００２８】
図３は、デバイス情報取得部１４１の機能ブロック図である。デバイス情報取得部１４１は、ＵＳＢデバイス情報取得部１４１１とＵＰｎＰデバイス情報取得部１４１３を備える。
【００２９】
ＵＳＢデバイス情報取得部１４１１は、ゲートウェイデバイス１０にＵＳＢデバイスが接続されたことを検知し、そのデバイスの識別情報（例えば製造者、製品名など、以下同じ）を取得する。ＵＰｎＰデバイス情報取得部１４１３は、ＵＰｎＰデバイスがゲートウェイデバイス１０の属するネットワーク（ＬＡＮ）に接続されたことを検知し、そのデバイスの識別情報を取得する。
【００３０】
ＵＳＢデバイス情報取得部１４１１は、例えばオープンソースのＪａｖａライブラリであるＪＳＲ８０モジュール１４１２を使用して、ＵＳＢデバイスの識別情報を取得する。ＪＳＲ８０は、ＵＳＢデバイスが接続されたことを検知する機能、ＵＳＢデバイスの製造者名や製品名といったプロパティを取得する機能を提供する。ＪＳＲ８０モジュール１４１２がＵＳＢデバイスを検知する前提として、そのＵＳＢデバイスに適合するデバイスドライバがＯＳ１１に組み込まれているものとする。主要なデバイスドライバは一般的なＯＳ１１に組み込まれているため、ＪＳＲ８０モジュール１４１２は大多数のＵＳＢデバイスからデバイス識別情報を取得することができると考えられる。
【００３１】
ＵＰｎＰデバイス情報取得部１４１３は、ＵＰｎＰサービス１７を使用してＵＰｎＰデバイスを検知し、同デバイスのデバイス識別情報を取得する。ＵＰｎＰサービス１７は、ＯＳＧｉフレームワーク１３が動作しているデバイスと同じネットワーク内に存在するＵＰｎＰデバイスの検知、製造者や製品名といったデバイス識別情報の取得、およびそのＵＰｎＰデバイスが持つ機能を使用するためのインターフェースを提供する。ＵＰｎＰサービス１７は、ＯＳＧｉフレームワーク１３上で動作するＯＳＧｉバンドルである。ＵＰｎＰサービス１７は、ＯＳＧｉＡｌｌｉａｎｃｅによって仕様化され、多くのＯＳＧｉフレームワーク上で提供されている。
【００３２】
図４は、ＯＳＧｉバンドルプール２３の構成例を示す図である。ＯＳＧｉバンドルプール２３は、ゲートウェイデバイス１０に接続される外部デバイスのデバイス識別情報と、そのデバイスに対応するＯＳＧｉバンドルのバンドル識別情報との対応関係を記述するテーブルを有する。
【００３３】
デバイス識別情報は、例えば当該デバイスの製造者名と製品名のような、当該デバイスから取得することができる情報を用いて構成することができる。バンドル識別情報は、各ＯＳＧｉバンドルに固有のバンドルシンボル名とバンドルバージョン番号を用いて構成することができる。ＯＳＧｉ規格では全てのバンドルがバンドルシンボル名を持つよう規定されているので、バンドルシンボル名によって個々のＯＳＧｉバンドルを特定することができる。なお、実際にＯＳＧｉバンドルを配信するときに備えて、ＯＳＧｉバンドルの実体ファイル（ｊａｒファイル）のファイル名をバンドル識別情報に含めてもよい。
【００３４】
デバイスマッチング部２２は、ゲートウェイデバイス１０に接続された外部デバイスのデバイス識別情報をバンドル取得バンドル１４から取得し、ＯＳＧｉバンドルプール２３が格納しているデータと比較することにより、そのデバイスに対応するＯＳＧｉバンドルを特定する。ここでいう「対応するＯＳＧｉバンドル」とは、ゲートウェイデバイス１０上でそのデバイスを利用するために必要となるＯＳＧｉバンドル、インストールすることが望ましいＯＳＧｉバンドルなど、ゲートウェイデバイス１０上でそのデバイスを使用する際に何らかの形態で用いられるＯＳＧｉバンドルのことである、
【００３５】
図５は、バンドル取得バンドル１４の動作フローを示す図である。以下、図５の各ステップについて説明する。
【００３６】
（図５：ステップＳ５００）
ＯＳＧｉフレームワーク１３は常時実行型のフレームワークであるため、バンドル取得バンドル１４は新たなデバイスを検出するように常時待機している。ゲートウェイデバイス１０のＵＳＢポートにＵＳＢデバイスが接続されるか、またはゲートウェイデバイス１０が属するネットワーク内に新たなＵＰｎＰデバイスが接続され、デバイス情報取得部１４１がその旨を検出すると、デバイス情報取得部１４１は本処理フローを開始する。
（図５：ステップＳ５０１）
デバイス情報取得部１４１は、新たに検出した外部デバイスのデバイス識別情報を取得し、そのデバイス識別情報をバンドル取得バンドル１４に通知する。
【００３７】
（図５：ステップＳ５０２）
バンドル取得部１４３は、デバイス情報取得部１４１より受け取ったデバイス識別情報を、ＨＴＴＰリクエストに載せて配信サーバ２０に送信する。バンドル取得部１４３は、配信サーバ２０からのレスポンスを待ち受ける。
（図５：ステップＳ５０３）
バンドル取得部１４３は、配信サーバ２０からのＨＴＴＰレスポンスがＮｕｌｌ（ボディ部分が空）であった場合、本処理を終了する。これは送信したデバイス識別情報にマッチするＯＳＧｉバンドルが見つからなかったことを意味する。ＨＴＴＰレスポンス内にバンドル識別情報が含まれている場合は、ステップＳ５０４に進む。
（図５：ステップＳ５０３：補足）
本ステップにおいて、デバイスマッチング部２２は、バンドル取得部１４３から受け取ったデバイス識別情報に合致するＯＳＧｉバンドルのバンドル識別情報をＯＳＧｉバンドルプール２３から検索し、バンドル取得部１４３に返信する。バンドル識別情報とは、図４で説明したバンドルシンボル名とバージョン番号である。
【００３８】
（図５：ステップＳ５０４）
バンドル取得部１４３は、ステップＳ５０３で受け取ったバンドルシンボル名とバージョン番号に一致するＯＳＧｉバンドルが既にＯＳＧｉフレームワーク１３上にインストールされているか否かをチェックする。
（図５：ステップＳ５０４：補足）
バージョン番号をチェックするのは、ＯＳＧｉフレームワーク１３上に同じバンドルシンボルでバージョンが古いＯＳＧｉバンドルがインストールされていた場合に、それを更新するためである。この仕組みにより、ゲートウェイデバイス１０をネットワークに接続する毎に、ＯＳＧｉバンドルを新しいバージョンに更新することができる。
【００３９】
（図５：ステップＳ５０５）
ステップＳ５０４でチェックしたＯＳＧｉバンドルがＯＳＧｉフレームワーク１３上に既にインストールされている場合は本処理フローを終了し、インストールされていない場合はステップＳ５０６へ進む。
（図５：ステップＳ５０６）
バンドル取得部１４３は、ステップＳ５０３で取得したバンドルシンボル名を載せて配信サーバ２０にＨＴＴＰリクエストを送り、そのバンドルシンボル名に該当するＯＳＧｉバンドルを配信サーバ２０から取得する。
（図５：ステップＳ５０６：補足）
本処理フローでは、ステップＳ５０３〜Ｓ５０４でいったんバンドル識別情報を取得してそのＯＳＧｉバンドルがインストール済みであるか否かをチェックし、インストールされていない場合のみ本ステップでそのＯＳＧｉバンドルを取得することとした。これは、毎回ＯＳＧｉバンドルを取得すると、ゲートウェイデバイス１０や配信サーバ２０の処理負荷が大きくなるからである。
【００４０】
（図５：ステップＳ５０７）
バンドル配置・実行部１４２は、ステップＳ５０６で取得したＯＳＧｉバンドルをインストール・実行する。同じバンドルシンボル名でバージョン番号が古いＯＳＧｉバンドルが既にインストールされている場合は、そのＯＳＧｉバンドルを上書インストールする。インストールに成功すればステップＳ５０８に進み、失敗した場合は本処理を終了する。
（図５：ステップＳ５０８）
バンドル配置・実行部１４２は、インストールしたＯＳＧｉバンドルのバンドルシンボル名とバージョン番号、およびＯＳＧｉフレームワーク１３に設定されているユーザＩＤをポータルサーバ３０に送信する。ここでのユーザＩＤは、先に説明したように、サービスプロバイダが各ユーザを識別するために各ユーザのＯＳＧｉフレームワーク１３に割り当てたＩＤであり、ＯＳＧｉフレームワークの仕様で定められたものではない。
【００４１】
図６は、図５のステップＳ５０２における配信サーバ２０の動作フローを示す図である。以下、図６の各ステップについて説明する。
（図６：ステップＳ５０２１）
ＨＴＴＰサーバ部２１は、ゲートウェイデバイス１０からデバイス識別情報を付加したＨＴＴＰリクエストを受け取ると、そのデバイス識別情報をデバイスマッチング部２２に渡す。デバイス識別情報を受け取ったデバイスマッチング部２２は、そのデバイス識別情報に対応するＯＳＧｉバンドルをＯＳＧｉバンドルプール２３から検索する。
（図６：ステップＳ５０２２）
ステップＳ５０２１でデバイス識別情報に対応するＯＳＧｉバンドルを発見できた場合はステップＳ５０２３に進み、発見できなかった場合はステップＳ５０２４に進む。
【００４２】
（図６：ステップＳ５０２３）
デバイスマッチング部２２は、ステップＳ５０２１で発見したＯＳＧｉバンドルのバンドル識別情報（バンドルシンボル名とバージョン）をＯＳＧｉバンドルプール２３から取り出してＨＴＴＰサーバ部２１に渡す。ＨＴＴＰサーバ部２１は、ゲートウェイデバイス１０にそのバンドル識別情報を返信する。
（図６：ステップＳ５０２４）
ＨＴＴＰサーバ部２１は、ゲートウェイデバイス１０にＮｕｌｌ（ボディ部が空白のＨＴＴＰレスポンス）を返信する。
【００４３】
図７は、図５のステップＳ５０６における配信サーバ２０の動作フローを示す図である。以下、図７の各ステップについて説明する。
（図７：ステップＳ５０６１）
ＨＴＴＰサーバ部２１は、ゲートウェイデバイス１０からバンドル識別情報（バンドルシンボル名とバージョン）を付加したＨＴＴＰリクエストを受け取ると、そのバンドル識別情報に該当するＯＳＧｉバンドルをＯＳＧｉバンドルプール２３から取得し、ゲートウェイデバイス１０に返送する。
【００４４】
図８は、図５のステップＳ５０２でバンドル取得部１４３が配信サーバ２０に送信するＨＴＴＰリクエストの内容を例示する図である。バンドル取得部１４３は、ゲートウェイデバイス１０に接続されているＵＳＢデバイスまたはＵＰｎＰデバイスのデバイス識別情報（ここでは製造者名と製品名）を配信サーバ２０に送信し、これに対応するＯＳＧｉバンドルの識別情報（バンドルシンボル名とバージョン）を取得する。
【００４５】
図９は、図５のステップＳ５０２で配信サーバ２０がバンドル取得部１４３に送信するＨＴＴＰレスポンスの内容を例示する図である。デバイスマッチング部２２は、ＨＴＴＰサーバ部２１を介して、バンドル取得部１４３から受け取ったデバイス識別情報に合致するバンドル識別情報（ここではバンドルシンボル名とバージョン番号）を返信する。
【００４６】
図１０は、図５のステップＳ５０８でバンドル取得部１４３がポータルサーバ３０に送信するＨＴＴＰメッセージの内容を例示する図である。インストール・実行されたＯＳＧｉバンドルのバンドル識別情報をユーザＩＤと結び付けてポータルサーバ３０に送信することにより、ポータルサーバ３０はどのユーザのゲートウェイデバイス１０にどのＯＳＧｉバンドルがインストールされたかを知ることができる。
【００４７】
図１１は、ポータルサーバ３０がユーザに提供するＷｅｂページの画面推移を例示する図である。説明の便宜上、ステップ番号を付与した。以下、図１１の各ステップに示す画面遷移について説明する。
【００４８】
（図１１：ステップＳ１１０１）
ポータルサーバ３０は、図５のステップＳ５０８において、ゲートウェイデバイス１０に新たなＯＳＧｉバンドルがインストールされたことを知る。ポータルサーバ３０は、そのユーザに対して当該ＯＳＧｉバンドルに対応する機能が利用できるようになった旨を通知する。
（図１１：ステップＳ１１０１：補足その１）
ゲートウェイデバイス１０にインストールしたＯＳＧｉバンドルの一覧をポータルサーバ３０から通知するのは、ＯＳＧｉフレームワーク１３が基本的にＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を持たないため、ＯＳＧｉフレームワーク１３にインストールされたＯＳＧｉバンドルの利用方法をユーザに知らせる必要があるからである。ＯＳＧｉフレームワークが内部的にＷｅｂサーバを備えており、Ｗｅｂページ形式の画面を提供できる可能性もあるが、その場合でもユーザがそのページに頻繁にアクセスしているか否かは不明である。そのため、何らかのプッシュ型手段によってユーザに通知することが望ましいと考えられる。
（図１１：ステップＳ１１０１：補足その２）
本ステップにおける通知の内容は、単純にそのＯＳＧｉサービスが提供するサービスの利用方法が記載されている場合、図１１に示すようにサービス利用のためのＷｅｂページへのリンクが貼られている場合、などが考えられる。前者はそのＯＳＧｉバンドルがユーザ宅のＬＡＮ内で完結しているサービスを提供している場合に適している。後者はサービスプロバイダが提供するサーバを経由して利用する形態のサービスに適している。
（図１１：ステップＳ１１０１：補足その３）
本ステップにおける通知は、例えばユーザが所持する所定の電子メールアドレス宛に送信してもよいし、ゲートウェイデバイス１０が備えているＷｅｂページを介して操作を実施している場合は、そのＷｅｂページ上で通知してもよい。
【００４９】
（図１１：ステップＳ１１０２）
ユーザは、Ｗｅｂブラウザを操作し、サービスプロバイダから割り当てられたＩＤとパスワードなどを用いて、ステップＳ１１０１で受け取った通知に記載されているＷｅｂサイトなどへログインする。このＷｅｂサイトは、ポータルサーバ３０が提供するものでもよいし、ポータルサーバ３０上のものでなくともよい。
（図１１：ステップＳ１１０３）
ユーザがＷｅｂサイトにログインすると、当該ユーザが所持するゲートウェイデバイス１０にインストールされ実行されているＯＳＧｉバンドルに対応するサービスの一覧が現れる。ここでは、ユーザはＸＸＸ社のＺｉｇＢｅｅドングル４０をゲートウェイデバイス１０に挿し、そのＺｉｇＢｅｅドングル４０を操作するためのＯＳＧｉバンドルがゲートウェイデバイス１０にインストールされている例を示した。このページ内のリンクより、ユーザ宅のＺｉｇＢｅｅデバイスを操作するためのページに進むことができる。
【００５０】
（図１１：ステップＳ１１０４）
本ステップで例示している画面は、ＺｉｇＢｅｅドングル４０が提供するＺｉｇＢｅｅネットワークにＺｉｇＢｅｅデバイスを追加するための機能ボタンを備える。本Ｗｅｂ画面上でこのボタンを押し、一方でユーザ宅内のＺｉｇＢｅｅデバイスがネットワークに参加手続き（多くの場合はこれもデバイス上のボタンを押すこと）を実施すると、ＺｉｇＢｅｅデバイスがネットワークに追加され、このＷｅｂ画面を通じて操作することができるようになる。
（図１１：ステップＳ１１０５）
ステップＳ１１０４で新たなＺｉｇＢｅｅデバイスをＺｉｇＢｅｅネットワーク上に追加した後は、そのＺｉｇＢｅｅデバイスを本画面上で操作することができるようになる。例えば家庭内の電気機器をＺｉｇＢｅｅデバイスとして遠隔操作することができる。
【００５１】
＜実施の形態１：まとめ＞
以上のように、本実施形態１によれば、ユーザがゲートウェイデバイス１０に新たな外部デバイスを接続すると、その外部デバイスを利用するために必要なＯＳＧｉバンドルがゲートウェイデバイス１０に自動的にインストールされる。これにより、ユーザは必要なＯＳＧｉバンドルを探したりインストールしたりする作業から解放され、ユーザの負担を軽減することができる。また、新たな外部デバイスを検出した時点で配信サーバ２０に対してＯＳＧｉバンドルを配信するよう要求するので、配信サーバ２０にかける負担を軽減することができる。
【００５２】
また、本実施形態１によれば、バンドル取得部１４３は、新たな外部デバイスに対応するＯＳＧｉバンドルがＯＳＧｉフレームワーク１３上にインストールされていない場合のみ、配信サーバ２０からＯＳＧｉバンドルを取得する。これにより、ゲートウェイデバイス１０と配信サーバ２０双方の負担を軽減することができる。
【００５３】
＜実施の形態２＞
実施形態１では、ゲートウェイデバイス１０に新たな外部デバイスが接続されたとき、これに対応するＯＳＧｉバンドルを取得する例を説明した。新たなＯＳＧｉバンドルが必要になるその他の場合として、例えば以下のような例が考えられる。
【００５４】
＜実施の形態２：ユーザ操作に対応するＯＳＧｉバンドル＞
ゲートウェイデバイス１０のユーザが、ゲートウェイデバイス１０上である特定の操作を実施してゲートウェイデバイス１０に命令を発したとき、その命令に対応するＯＳＧｉバンドルを配信サーバ１０から取得することが考えられる。例えば、ユーザがゲートウェイデバイス１０上でＺｉｇＢｅｅデバイスを操作しようとした時点で、ＺｉｇＢｅｅ機能を実装したＯＳＧｉバンドルを配信サーバ２０から取得することが考えられる。
【００５５】
この場合、配信サーバ２０のＯＳＧｉバンドルプール２３は、ユーザがゲートウェイデバイス１０に対して発する命令と、その命令に対応するＯＳＧｉバンドルとの対応関係を記述したテーブルを備える必要がある。また、バンドル取得バンドル１４は、ゲートウェイデバイス１０に接続された外部デバイスを検出することに加えて、ユーザがゲートウェイデバイス１０に対して発する命令を検出する必要がある。
【００５６】
＜実施の形態２：データ種別に対応するＯＳＧｉバンドル＞
ゲートウェイデバイス１０に新たな外部デバイスが接続されたとき、その外部デバイスは特定種類のデータを格納している場合がある。バンドル取得部１４３は、そのデータ種類に対応するＯＳＧｉバンドルを配信サーバ１０から取得することが考えられる。例えば外部デバイスが動画データを格納している場合、その動画データを再生するためのＤＬＮＡ（Ｄｉｇｉｔａｌ  Ｌｉｖｉｎｇ  Ｎｅｔｗｏｒｋ  Ａｌｌｉａｎｃｅ）プレイヤー機能を実装したＯＳＧｉバンドルを配信サーバ２０から取得することが考えられる。
【００５７】
この場合、配信サーバ２０のＯＳＧｉバンドルプール２３は、外部デバイスが格納するデータ種類と、そのデータ種類に対応するＯＳＧｉバンドルとの対応関係を記述したテーブルを備える必要がある。また、バンドル取得バンドル１４は、ゲートウェイデバイス１０に接続された外部デバイスを検出することに加えて、その外部デバイスに格納されているデータ種類を検出する必要がある。
【００５８】
＜実施の形態３＞
実施形態１では、ゲートウェイデバイス１０に接続される外部デバイスの例として、ＵＳＢデバイスとＵＰｎＰデバイスを例示したが、その他種類の外部デバイスを検出するようにしてもよい。例えば、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）カード、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）デバイスなどを検出してもよい。ただし、どのようなデバイスを検出してもよいものではなく、少なくともユーザがゲートウェイデバイス１０を介して利用することができるデバイスである必要がある。
【符号の説明】
【００５９】
１０：ゲートウェイデバイス、１１：ＯＳ、１２：ＪａｖａＶＭ、１３：ＯＳＧｉフレームワーク、１４：バンドル取得バンドル、１４１：デバイス情報取得部、１４１１：ＵＳＢデバイス情報取得部、１４１２：ＪＳＲ８０モジュール、１４１３：ＵＰｎＰデバイス情報取得部、１４２：バンドル配置・実行部、１４３：バンドル取得部、１５：ＺｉｇＢｅｅバンドル、１７：ＵＰｎＰサービス、２０：配信サーバ、２１：ＨＴＴＰサーバ部、２２：デバイスマッチング部、２３：ＯＳＧｉバンドルプール、３０：ポータルサーバ、４０：ＺｉｇＢｅｅドングル、１００：ＯＳＧｉシステム。
【図１】
0005740257.tif 000002
【図２】
0005740257.tif 000003
【図３】
0005740257.tif 000004
【図４】
0005740257.tif 000005
【図５】
0005740257.tif 000006
【図６】
0005740257.tif 000007
【図７】
0005740257.tif 000008
【図８】
0005740257.tif 000009
【図９】
0005740257.tif 000010
【図１０】
0005740257.tif 000011
【図１１】
0005740257.tif 000012