(57)【要約】【課題】ホスト機器が自己の実行環境に応じた最適なプログラムコードをターゲット機器からアップロードして機器制御を実行できる機器制御システムを提供する。【解決手段】ターゲット機器２には、異なる実行環境で利用される複数のプログラムコード２３１〜２３ｎ及び各プログラムコードに関する情報であるヘッダオブジェクト２２１を、予め保持させておく。ホスト機器１は、ターゲット機器２からヘッダオブジェクト２２１を取得し、その情報を解析して自己の実行環境に最も適したプログラムコード２３ｘ（ｘは、１〜ｎのいずれか）を決定する。そして、ホスト機器１は、決定したプログラムコード２３ｘをターゲット機器２からアップロードし、解釈／実行することでターゲット機器２を制御する。【選択図】　　　　図１
2004005517.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上のホスト機器と１つ以上のターゲット機器とが、通信回線を介して接続された機器制御システムであって、
前記ターゲット機器は、
自己の制御に必要な複数のプログラムコードを格納する格納部と、
前記複数のプログラムコードの各内容に関するプログラムコード情報を管理する管理部とを備え、
前記格納部に格納される複数のプログラムコードは、それぞれが前記ホスト機器が取り得る様々な実行環境のいずれかに対応するものであり、少なくとも一部の実行環境においては、１つの実行環境についてデータ容量の異なる複数のプログラムコードが対応しており、
前記ホスト機器は、
前記プログラムコード情報を前記ターゲット機器から取得する取得部と、
プログラムコードを格納するための所定のメモリ領域と、
自己の実行環境及び前記メモリ領域の残量を判断し、前記プログラムコード情報の解析を行って、前記ターゲット機器に格納されている前記複数のプログラムコードの中から、当該実行環境に適合し、かつ当該メモリ領域に格納可能なプログラムコードを決定する情報解析部と、
前記情報解析部で決定されたプログラムコードを、前記ターゲット機器から読み出して前記メモリ領域に格納する読み出し部と、
前記メモリ領域に格納されたプログラムコードを用いて、前記ターゲット機器を制御する制御部とを備える、機器制御システム。
【請求項２】
前記情報解析部は、前記ターゲット機器と通信回線で接続されている他の前記ホスト機器の前記メモリ領域を確認する機能をさらに有し、
任意のターゲット機器を制御する主ホスト機器では、
前記情報解析部が、前記他のホスト機器の前記メモリ領域を確認して、前記主ホスト機器の実行環境に適合するプログラムコードを格納している副ホスト機器があるか否かをまず判断し、
前記情報解析部が、前記副ホスト機器があると判断した場合には、前記主ホスト機器の実行環境に適合し、かつ当該副ホスト機器が格納しているプログラムコードに応じて一意に定まるプログラムコードを決定することを特徴とする、請求項１に記載の機器制御システム。
【請求項３】
前記情報解析部は、前記ターゲット機器と通信回線で接続されている他の前記ホスト機器の前記メモリ領域を確認する機能をさらに有し、
前記制御部は、前記他のホスト機器に対して、格納されているプログラムコードの操作が可能なコマンド情報を取得及び当該コマンド情報に基づくコマンドを指示する機能をさらに有し、
任意のターゲット機器を制御する主ホスト機器では、
前記情報解析部が、決定すべき前記主ホスト機器の実行環境に適合し、かつ前記主ホスト機器のメモリ領域に格納可能なプログラムコードがない場合、前記他のホスト機器の前記メモリ領域を確認して、前記主ホスト機器の実行環境に適合するプログラムコードを格納している副ホスト機器があるか否かをさらに判断し、
前記情報解析部による前記副ホスト機器があるとの判断に従って、
前記制御部が、前記コマンド情報を前記副ホスト機器から取得し、当該コマンド情報に基づいて前記副ホスト機器にコマンド指示を与え、
前記副ホスト機器では、前記制御部が、前記主ホスト機器から与えられるコマンド指示に応じて、前記メモリ領域に格納されたプログラムコードを用いて前記ターゲット機器を制御することを特徴とする、請求項１に記載の機器制御システム。
【請求項４】
前記情報解析部による前記副ホスト機器がないとの判断に従って、
前記主ホスト機器では、
前記情報解析部が、前記他のホスト機器の所定のメモリ領域の残量を確認して、前記主ホスト機器の実行環境に適合するプログラムコードを格納可能なメモリ領域を有している第２の副ホスト機器があるか否かをさらに判断し、
前記情報解析部が、前記第２の副ホスト機器があるとの判断に従って、前記主ホスト機器の実行環境に適合し、かつ当該第２の副ホスト機器のメモリ領域に格納可能なプログラムコードを決定し、
前記読み出し部は、前記第２の副ホスト機器に対して、前記情報解析部で決定されたプログラムコードの読み出しを指示し、
前記第２の副ホスト機器では、前記読み出し部が、前記主ホスト機器から与えられる読み出し指示に応じて、前記ターゲット機器からプログラムコードを読み出して前記メモリ領域に格納し、
前記主ホスト機器では、前記制御部が、前記コマンド情報を前記第２の副ホスト機器から取得し、当該コマンド情報に基づいて前記第２の副ホスト機器にコマンド指示を与え、
前記第２の副ホスト機器では、前記制御部が、前記主ホスト機器から与えられるコマンド指示に応じて、前記メモリ領域に格納されたプログラムコードを用いて前記ターゲット機器を制御することを特徴とする、請求項３に記載の機器制御システム。
【請求項５】
前記実行環境は仮想マシンであり、前記プログラムコード及び前記プログラムコード情報は、前記ホスト機器に搭載される仮想マシンの種類に基づいて作成されることを特徴とする、請求項１に記載の機器制御システム。
【請求項６】
前記実行環境は機器スペックであり、前記プログラムコード及び前記プログラムコード情報は、前記ホスト機器のスペックに基づいて作成されることを特徴とする、請求項１に記載の機器制御システム。
【請求項７】
前記ホスト機器は、ユーザによる条件設定が可能な入力部をさらに備え、
前記情報解析部は、前記入力部を介してユーザにより条件が設定された場合には、前記スペックに適合し、かつ当該条件に最も一致するプログラムコードを決定することを特徴とする、請求項６に記載の機器制御システム。
【請求項８】
１つ以上のホスト機器と１つ以上のターゲット機器とが、通信回線を介して接続された機器制御システムであって、
前記ターゲット機器は、
自己の制御に必要な複数のプログラムコードを格納する格納部と、
前記複数のプログラムコードの各内容に関するプログラムコード情報を管理する管理部と、
実行環境及び所定のメモリ領域の残量を含む機器情報を、前記ホスト機器から取得する取得部と、
前記機器情報及び前記プログラムコード情報を解析し、前記複数のプログラムコードの中から、前記ホスト機器の実行環境に適合し、かつ前記ホスト機器のメモリ領域に格納可能なプログラムコードを決定する情報解析部と、
前記情報解析部で決定されたプログラムコードの情報を、前記ホスト機器へ通知する通知部とを備え、
前記格納部に格納される複数のプログラムコードは、それぞれが前記ホスト機器が取り得る様々な実行環境のいずれかに対応するものであり、少なくとも一部の実行環境においては、１つの実行環境についてデータ容量の異なる複数のプログラムコードが対応しており、
前記ホスト機器は、
前記機器情報を管理する情報管理部と、
プログラムコードを格納するための所定のメモリ領域と、
前記通知部から通知されたプログラムコードを、前記ターゲット機器から読み出して前記メモリ領域に格納する読み出し部と、
前記メモリ領域に格納されたプログラムコードを用いて、前記ターゲット機器を制御する制御部とを備える、機器制御システム。
【請求項９】
前記実行環境は仮想マシンであり、前記プログラムコード及び前記プログラムコード情報は、前記ホスト機器に搭載される仮想マシンの種類に基づいて作成されることを特徴とする、請求項８に記載の機器制御システム。
【請求項１０】
前記実行環境は機器スペックであり、前記プログラムコード及び前記プログラムコード情報は、前記ホスト機器のスペックに基づいて作成されることを特徴とする、請求項８に記載の機器制御システム。
【請求項１１】
前記ホスト機器は、前記機器情報にユーザによる条件設定を付加することが可能な入力部をさらに備え、
前記情報解析部は、前記機器情報にユーザによって設定された条件が含まれている場合には、前記ホスト機器のスペックに適合し、かつ当該条件に最も一致するプログラムコードを決定することを特徴とする、請求項１０に記載の機器制御システム。
【請求項１２】
複数の機器が通信回線を介して接続された１つ以上の機器制御システムによって構築されるネットワークであって、
前記複数の機器は、他の機器を制御するホスト機器及び他の機器によって制御されるターゲット機器の両方の機能を有し、
前記機器は、ターゲット機器として機能するために、
自己の制御に必要な複数のプログラムコードを格納する格納部と、
前記複数のプログラムコードの各内容に関するプログラムコード情報を管理する管理部とを備え、
前記格納部に格納される複数のプログラムコードは、それぞれが前記ホスト機器が取り得る様々な実行環境のいずれかに対応するものであり、少なくとも一部の実行環境においては、１つの実行環境についてデータ容量の異なる複数のプログラムコードが対応しており、
ホスト機器として機能するために、
前記プログラムコード情報を、制御を行う前記機器から取得する取得部と、
プログラムコードを格納するための所定のメモリ領域と、
自己の実行環境及び前記メモリ領域の残量を判断し、前記プログラムコード情報の解析を行って、制御を行う前記機器に格納されている前記複数のプログラムコードの中から、当該実行環境に適合し、かつ当該メモリ領域に格納可能なプログラムコードを決定する情報解析部と、
前記情報解析部で決定されたプログラムコードを、前記ターゲット機器から読み出して前記メモリ領域に格納する読み出し部と、
前記メモリ領域に格納されたプログラムコードを用いて、前記ターゲット機器を制御する制御部とを備える、ネットワーク。
【請求項１３】
複数の機器が通信回線を介して接続された１つ以上の機器制御システムによって構築されるネットワークであって、
前記複数の機器は、他の機器を制御するホスト機器及び他の機器によって制御されるターゲット機器の両方の機能を有し、
前記機器は、ターゲット機器として機能するために、
自己の制御に必要な複数のプログラムコードを格納する格納部と、
前記複数のプログラムコードの各内容に関するプログラムコード情報を管理する管理部と、
実行環境及び所定のメモリ領域の残量を含む機器情報を、前記ホスト機器から取得する取得部と、
前記機器情報及び前記プログラムコード情報を解析し、前記複数のプログラムコードの中から、前記ホスト機器の実行環境に適合し、かつ前記ホスト機器のメモリ領域に格納可能なプログラムコードを決定する情報解析部と、
前記情報解析部で決定されたプログラムコードの情報を、前記ホスト機器へ通知する通知部とを備え、
前記格納部に格納される複数のプログラムコードは、それぞれが前記ホスト機器が取り得る様々な実行環境のいずれかに対応するものであり、少なくとも一部の実行環境においては、１つの実行環境についてデータ容量の異なる複数のプログラムコードが対応しており、
ホスト機器として機能させるために、
前記機器情報を管理する情報管理部と、
プログラムコードを格納するための所定のメモリ領域と、
前記通知部から通知されたプログラムコードを、前記ターゲット機器から読み出して前記メモリ領域に格納する読み出し部と、
前記メモリ領域に格納されたプログラムコードを用いて、前記ターゲット機器を制御する制御部とを備える、ネットワーク。
【請求項１４】
それぞれがホスト機器が取り得る様々な実行環境のいずれかに対応するものであり、少なくとも一部の実行環境においては、１つの実行環境についてデータ容量の異なる複数のコードが対応した、自己の制御に必要な複数のプログラムコード、及び当該複数のプログラムコードの各内容に関するプログラムコード情報を保持するターゲット機器を、通信回線を介して制御するために主ホスト機器で実行されるプログラムであって、
前記プログラムコード情報を前記ターゲット機器から取得する第１の取得ステップと、
前記主ホスト機器の実行環境及び所定のメモリ領域の残量を判断する第１の判断ステップと、
前記プログラムコード情報を解析するステップと、
判断及び解析結果に基づいて、前記ターゲット機器に格納されている前記複数のプログラムコードの中から、前記主ホスト機器の実行環境に適合し、かつ前記主ホスト機器のメモリ領域に格納可能なプログラムコードを決定するステップと、
前記決定されたプログラムコードを、前記ターゲット機器から読み出して前記主ホスト機器のメモリ領域に格納する第１の格納ステップと、
前記格納されたプログラムコードを用いて、前記ターゲット機器を制御する第１の制御ステップとを含む、プログラム。
【請求項１５】
通信回線で接続されている他のホスト機器の所定のメモリ領域を確認して、前記主ホスト機器の実行環境に適合するプログラムコードを格納している副ホスト機器があるか否かを判断する第２の判断ステップをさらに含み、
前記第２の判断ステップにおける前記副ホスト機器があるとの判断に従って、前記決定するステップは、前記主ホスト機器の実行環境に適合し、かつ当該副ホスト機器が格納しているプログラムコードに応じて一意に定まるプログラムコードを決定することを特徴とする、請求項１４に記載のプログラム。
【請求項１６】
前記決定するステップでプログラムコードを決定できなかった場合、通信回線で接続されている他のホスト機器の所定のメモリ領域を確認して、前記主ホスト機器の実行環境に適合するプログラムコードを格納している副ホスト機器があるか否かを判断する第２の判断ステップと、
前記第２の判断ステップにおける前記副ホスト機器があるとの判断に従って、前記格納されているプログラムコードの操作が可能なコマンド情報を、当該副ホスト機器から取得する第２の取得ステップと、
前記コマンド情報に基づいて前記副ホスト機器にコマンド指示を与えることによって、前記ターゲット機器を制御する第２の制御ステップとをさらに含む、請求項１４に記載のプログラム。
【請求項１７】
前記第２の判断ステップにおける前記副ホスト機器がないとの判断に従って、前記他のホスト機器の所定のメモリ領域の残量を確認し、前記主ホスト機器の実行環境に適合するプログラムコードを格納可能なメモリ領域を有している副ホスト機器があるか否かを判断する第３の判断ステップと、
前記第３の判断ステップにおける前記副ホスト機器があるとの判断に従って、前記主ホスト機器の実行環境に適合するプログラムコードを、前記ターゲット機器から読み出させて当該副ホスト機器のメモリ領域に格納させる第２の格納ステップと、
前記コマンド情報を前記副ホスト機器から取得する第３の取得ステップと、
前記コマンド情報に基づいて前記副ホスト機器にコマンド指示を与えることによって、前記ターゲット機器を制御する第３の制御ステップとをさらに含む、請求項１６に記載のプログラム。
【請求項１８】
実行環境及び所定のメモリ領域の残量を含む機器情報を保持するホスト機器によって通信回線を介して制御されるために、それぞれがホスト機器が取り得る様々な実行環境のいずれかに対応するものであり、少なくとも一部の実行環境においては、１つの実行環境についてデータ容量の異なる複数のコードが対応した、自己の制御に必要な複数のプログラムコード、及び当該複数のプログラムコードの各内容に関するプログラムコード情報を保持するターゲット機器で実行されるプログラムであって、
前記ホスト機器から前記機器情報を取得するステップと、
前記機器情報及び前記プログラムコード情報を解析するステップと、
解析結果に基づいて、前記複数のプログラムコードの中から、前記ホスト機器の実行環境に適合し、かつ前記ホスト機器のメモリ領域に格納可能なプログラムコードを決定するステップと、
前記決定されたプログラムコードを前記ホスト機器へ送信するステップとを含む、プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、機器制御システム及びそのシステムによって構築されるネットワーク並びにそのシステムを構成する機器で実行されるプログラムに関し、より特定的には、制御主体であるホスト機器と制御対象であるターゲット機器とが接続されたシステムであって、ホスト機器が自己の実行環境に応じて、ターゲット機器の制御に必要な最適なプログラムコードをアップロードする機器制御システム、及びその機器制御システムによって構築されるネットワーク、並びにその機器制御システムを構成するホスト機器又はターゲット機器で実行されるプログラムに関する。
【０００２】
【従来の技術】
近年、多種多様のＡＶ機器及び情報端末機器等が、家庭向けに製品化されている。これに伴って、家庭内にある複数の機器を接続して互いに制御し合う、例えば、ＴＶ受像機とビデオデッキとを接続してＴＶ受像機の画面上からビデオデッキの制御を行う、という技術が確立してきた。その技術の１つとして、ＨＡＶｉ（Ｈｏｍｅ　Ａｕｄｉｏ／Ｖｉｄｅｏ　ｉｎｔｅｒｏｐｅｒａｂｉｌｉｔｙ）（Ｒ）がある（非特許文献１を参照）。また、パソコンとプリンタやスキャナ等とを接続して、自動的にネットワークを構築させる技術として、Ｊｉｎｉ（Ｒ）等がある（非特許文献２を参照）。
【０００３】
これらの技術には、共通して次の手法が用いられる。制御対象となるターゲット機器は、自己の制御に必要な情報を記述したプログラムコード（制御コード）を予め保持している。例えば、ＨＡＶｉ（Ｒ）等の仕様では、ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ　Ｐｒｏｇｒａｍ　Ｉｎｔｅｒｆａｃｅ）を使用するプログラムコードとなる。制御主体となるホスト機器は、そのプログラムコードをアップロードして解釈／実行することで、ターゲット機器の制御等を行う。
この手法をとることで、ホスト機器は、予めターゲット機器を制御する方法を知らなくてもターゲット機器の制御が可能になり、様々なメーカで製品化された機器同士を接続して互いに制御し合うことも可能になる。
【０００４】
一般に、これらの技術を用いて構築されるシステムでは、複数のホスト機器と複数のターゲット機器とがネットワーク接続されることを想定している。
ここで、各ターゲット機器が、自己の全機能を制御するためのプログラムコードをそれぞれ１つ保持している場合を考える。この場合、複数のホスト機器で全てのターゲット機器を制御するためには、各ホスト機器は、各ターゲット機器のプログラムコードを完全にサポートするための高度な実行環境を備える必要がある。このため、各ホスト機器が高価になるという課題があった。
【０００５】
そこで、複数のホスト機器が、高度な実行環境ではなく、自己の能力に応じた異なる実行環境をそれぞれ備える場合を考える。この場合、複数のホスト機器で全てのターゲット機器を制御するためには、各ターゲット機器に、複数のホスト機器の実行環境に応じた複数のプログラムコードを予め保持させておき、ホスト機器に、自己の実行環境に最適なプログラムコードをアップロードさせる必要がある。
【０００６】
機器制御に直接対応した技術ではないが、上述した最適なプログラムコードのアップロードに関連する従来の技術として、特許文献１に開示されているものが存在する。
この従来の技術は、デバイス（プリンタ等）とデバイスコントローラ（パソコン等）との間で、ドライバソフトウエアを通信するものである。この従来の技術では、デバイス側に、接続可能性のあるデバイスコントローラに搭載された異なるオペレーティングシステム（ＯＳ）に対応させて、予め複数のドライバソフトウエアを保持させておき、デバイスコントローラが、その中から自己のＯＳに最適なドライバソフトウエアをアップロードすることを行う。これにより、従来の技術では、常に最適なドライバソフトウエアを、デバイスからデバイスコントローラにアップロードさせることを可能としている。
【０００７】
【特許文献１】
特開平１０−２１４２４３号公報
【非特許文献１】
仕様書「Ｔｈｅ　ＨＡＶｉ　Ｓｐｅｃｉｆｉｃａｔｉｏｎ　Ｖｅｒｓｉｏｎ　１．０」
ＨＡＶｉ推進協会
【非特許文献２】
技術書「Ｊｉｎｉ　Ｔｅｃｈｎｏｌｏｇｙ　Ｓｐｅｃｉｆｉｃ　Ａｔｔａｃｈｍｅｎｔ　ｖ１．０」
サンマイクロシステム社
【０００８】
【発明が解決しようとする課題】
上記従来の技術では、アップロード対象がそれほど容量の大きくないドライバソフトウエアであり、またホスト機器に搭載される各ＯＳに対応するドライバソフトウエアは１つである。よって、従来の技術では、ホスト機器の実行環境として搭載されているＯＳを判断するだけで、最適なドライバソフトウエアを一意に決定することができる。
【０００９】
しかしながら、アップロード対象が容量の大きいプログラムコードである場合には、ホスト機器のＯＳ、ＣＰＵ及びキャッシュメモリ等の実行環境に加えて、プログラムコードを格納するために用意されたメモリ領域の残量も考慮する必要がある。すなわち、同じホスト機器であっても、アプリケーション等の使用状況によって使用可能なメモリ領域が変動する。従って、アップロード時点におけるホスト機器の状態をこれらを考慮して総合的に判断し、その判断に応じてアップロードするプログラムコードの内容を変更させることが望ましいのである。
このため、上記従来の技術による手法を単純に機器制御に応用させても、ホスト機器の状態変化までをも考慮した最適なプログラムコードのアップロードを実現させることは、不可能である。
【００１０】
また、アップロード対象がドライバソフトウエアの場合、各ホスト機器にドライバソフトウエアをアップロードするだけなので、ネットワーク接続された他のホスト機器との関連性はない。
しかし、アップロード対象がプログラムコードである場合には、ネットワーク接続された他のホスト機器との関連性が生じてくる。よって、他のホスト機器のネットワーク接続状態や他のホスト機器にすでにアップロードされたプログラムコードを適宜判断することによって、様々なアップロード手法及び機器制御を実現することが可能となる。
【００１１】
それ故に、本発明の目的は、ターゲット機器に異なる実行環境で利用される複数のプログラムコードを予め保有させておき、ホスト機器が、自己の実行環境やメモリ領域の残量、さらには他のホスト機器のネットワーク接続状態を判断して、最適なプログラムコードをターゲット機器からアップロードして機器制御を実行できる機器制御システム、及びそのシステムによって構築されるネットワーク、並びにそのシステムを構成する機器で実行されるプログラムを提供することである。
【００１２】
【課題を解決するための手段】
本発明は、上記目的を達成させるために、以下に示す特徴を備えている。
第１の発明は、１つ以上のホスト機器と１つ以上のターゲット機器とが、通信回線を介して接続された機器制御システムであって、
ターゲット機器は、
自己の制御に必要な複数のプログラムコードを格納する格納部と、
複数のプログラムコードの各内容に関するプログラムコード情報を管理する管理部とを備え、
格納部に格納される複数のプログラムコードは、それぞれがホスト機器が取り得る様々な実行環境のいずれかに対応するものであり、少なくとも一部の実行環境においては、１つの実行環境についてデータ容量の異なる複数のプログラムコードが対応しており、
ホスト機器は、
プログラムコード情報をターゲット機器から取得する取得部と、
プログラムコードを格納するための所定のメモリ領域と、
自己の実行環境及びメモリ領域の残量を判断し、プログラムコード情報の解析を行って、ターゲット機器に格納されている複数のプログラムコードの中から、当該実行環境に適合し、かつ当該メモリ領域に格納可能なプログラムコードを決定する情報解析部と、
情報解析部で決定されたプログラムコードを、ターゲット機器から読み出してメモリ領域に格納する読み出し部と、
メモリ領域に格納されたプログラムコードを用いて、ターゲット機器を制御する制御部とを備える。
【００１３】
第２の発明は、第１の発明に従属する機器制御システムであって、
情報解析部は、ターゲット機器と通信回線で接続されている他のホスト機器のメモリ領域を確認する機能をさらに有し、
任意のターゲット機器を制御する主ホスト機器では、
情報解析部が、他のホスト機器のメモリ領域を確認して、主ホスト機器の実行環境に適合するプログラムコードを格納している副ホスト機器があるか否かをまず判断し、
情報解析部が、副ホスト機器があると判断した場合には、主ホスト機器の実行環境に適合し、かつ当該副ホスト機器が格納しているプログラムコードに応じて一意に定まるプログラムコードを決定することを特徴とする。
【００１４】
第３の発明は、第１の発明に従属する機器制御システムであって、
情報解析部は、ターゲット機器と通信回線で接続されている他のホスト機器のメモリ領域を確認する機能をさらに有し、
制御部は、他のホスト機器に対して、格納されているプログラムコードの操作が可能なコマンド情報を取得及びコマンド情報に基づくコマンドを指示する機能をさらに有し、
任意のターゲット機器を制御する主ホスト機器では、
情報解析部が、決定すべき主ホスト機器の実行環境に適合し、かつ主ホスト機器のメモリ領域に格納可能なプログラムコードがない場合、他のホスト機器のメモリ領域を確認して、主ホスト機器の実行環境に適合するプログラムコードを格納している副ホスト機器があるか否かをさらに判断し、
情報解析部による副ホスト機器があるとの判断に従って、
制御部が、コマンド情報を副ホスト機器から取得し、当該コマンド情報に基づいて副ホスト機器にコマンド指示を与え、
副ホスト機器では、制御部が、主ホスト機器から与えられるコマンド指示に応じて、メモリ領域に格納されたプログラムコードを用いてターゲット機器を制御することを特徴とする。
【００１５】
第４の発明は、第３の発明に従属する機器制御システムであって、
情報解析部による副ホスト機器がないとの判断に従って、
主ホスト機器では、
情報解析部が、他のホスト機器の所定のメモリ領域の残量を確認して、主ホスト機器の実行環境に適合するプログラムコードを格納可能なメモリ領域を有している第２の副ホスト機器があるか否かをさらに判断し、
情報解析部が、第２の副ホスト機器があるとの判断に従って、主ホスト機器の実行環境に適合し、かつ当該第２の副ホスト機器のメモリ領域に格納可能なプログラムコードを決定し、
読み出し部は、第２の副ホスト機器に対して、情報解析部で決定されたプログラムコードの読み出しを指示し、
第２の副ホスト機器では、読み出し部が、主ホスト機器から与えられる読み出し指示に応じて、ターゲット機器からプログラムコードを読み出してメモリ領域に格納し、
主ホスト機器では、制御部が、コマンド情報を第２の副ホスト機器から取得し、当該コマンド情報に基づいて第２の副ホスト機器にコマンド指示を与え、
第２の副ホスト機器では、制御部が、主ホスト機器から与えられるコマンド指示に応じて、メモリ領域に格納されたプログラムコードを用いてターゲット機器を制御することを特徴とする。
【００１６】
第５の発明は、第１の発明に従属する機器制御システムであって、
実行環境は仮想マシンであり、プログラムコード及びプログラムコード情報は、ホスト機器に搭載される仮想マシンの種類に基づいて作成されることを特徴とする。
【００１７】
第６の発明は、第１の発明に従属する機器制御システムであって、
実行環境は機器スペックであり、プログラムコード及びプログラムコード情報は、ホスト機器のスペックに基づいて作成されることを特徴とする。
【００１８】
第７の発明は、第６の発明に従属する機器制御システムであって、
ホスト機器は、ユーザによる条件設定が可能な入力部をさらに備え、
情報解析部は、入力部を介してユーザにより条件が設定された場合には、スペックに適合し、かつ当該条件に最も一致するプログラムコードを決定することを特徴とする。
【００１９】
第８の発明は、１つ以上のホスト機器と１つ以上のターゲット機器とが、通信回線を介して接続された機器制御システムであって、
ターゲット機器は、
自己の制御に必要な複数のプログラムコードを格納する格納部と、
複数のプログラムコードの各内容に関するプログラムコード情報を管理する管理部と、
実行環境及び所定のメモリ領域の残量を含む機器情報を、ホスト機器から取得する取得部と、
機器情報及びプログラムコード情報を解析し、複数のプログラムコードの中から、ホスト機器の実行環境に適合し、かつホスト機器のメモリ領域に格納可能なプログラムコードを決定する情報解析部と、
情報解析部で決定されたプログラムコードの情報を、ホスト機器へ通知する通知部とを備え、
格納部に格納される複数のプログラムコードは、それぞれがホスト機器が取り得る様々な実行環境のいずれかに対応するものであり、少なくとも一部の実行環境においては、１つの実行環境についてデータ容量の異なる複数のプログラムコードが対応しており、
ホスト機器は、
機器情報を管理する情報管理部と、
プログラムコードを格納するための所定のメモリ領域と、
通知部から通知されたプログラムコードを、ターゲット機器から読み出してメモリ領域に格納する読み出し部と、
メモリ領域に格納されたプログラムコードを用いて、ターゲット機器を制御する制御部とを備える。
【００２０】
第９の発明は、第８の発明に従属する機器制御システムであって、
実行環境は仮想マシンであり、プログラムコード及びプログラムコード情報は、ホスト機器に搭載される仮想マシンの種類に基づいて作成されることを特徴とする。
【００２１】
第１０の発明は、第８の発明に従属する機器制御システムであって、
実行環境は機器スペックであり、プログラムコード及びプログラムコード情報は、ホスト機器のスペックに基づいて作成されることを特徴とする。
【００２２】
第１１の発明は、第１０の発明に従属する機器制御システムであって、
ホスト機器は、機器情報にユーザによる条件設定を付加することが可能な入力部をさらに備え、
情報解析部は、機器情報にユーザによって設定された条件が含まれている場合には、ホスト機器のスペックに適合し、かつ当該条件に最も一致するプログラムコードを決定することを特徴とする。
【００２３】
第１２の発明は、複数の機器が通信回線を介して接続された１つ以上の機器制御システムによって構築されるネットワークであって、
複数の機器は、他の機器を制御するホスト機器及び他の機器によって制御されるターゲット機器の両方の機能を有し、
機器は、ターゲット機器として機能するために、
自己の制御に必要な複数のプログラムコードを格納する格納部と、
複数のプログラムコードの各内容に関するプログラムコード情報を管理する管理部とを備え、
格納部に格納される複数のプログラムコードは、それぞれがホスト機器が取り得る様々な実行環境のいずれかに対応するものであり、少なくとも一部の実行環境においては、１つの実行環境についてデータ容量の異なる複数のプログラムコードが対応しており、
ホスト機器として機能するために、
プログラムコード情報を、制御を行う機器から取得する取得部と、
プログラムコードを格納するための所定のメモリ領域と、
自己の実行環境及びメモリ領域の残量を判断し、プログラムコード情報の解析を行って、制御を行う機器に格納されている複数のプログラムコードの中から、当該実行環境に適合し、かつ当該メモリ領域に格納可能なプログラムコードを決定する情報解析部と、
情報解析部で決定されたプログラムコードを、ターゲット機器から読み出してメモリ領域に格納する読み出し部と、
メモリ領域に格納されたプログラムコードを用いて、ターゲット機器を制御する制御部とを備える。
【００２４】
第１３の発明は、複数の機器が通信回線を介して接続された１つ以上の機器制御システムによって構築されるネットワークであって、
複数の機器は、他の機器を制御するホスト機器及び他の機器によって制御されるターゲット機器の両方の機能を有し、
機器は、ターゲット機器として機能するために、
自己の制御に必要な複数のプログラムコードを格納する格納部と、
複数のプログラムコードの各内容に関するプログラムコード情報を管理する管理部と、
実行環境及び所定のメモリ領域の残量を含む機器情報を、ホスト機器から取得する取得部と、
機器情報及びプログラムコード情報を解析し、複数のプログラムコードの中から、ホスト機器の実行環境に適合し、かつホスト機器のメモリ領域に格納可能なプログラムコードを決定する情報解析部と、
情報解析部で決定されたプログラムコードの情報を、ホスト機器へ通知する通知部とを備え、
格納部に格納される複数のプログラムコードは、それぞれがホスト機器が取り得る様々な実行環境のいずれかに対応するものであり、少なくとも一部の実行環境においては、１つの実行環境についてデータ容量の異なる複数のプログラムコードが対応しており、
ホスト機器として機能させるために、
機器情報を管理する情報管理部と、
プログラムコードを格納するための所定のメモリ領域と、
通知部から通知されたプログラムコードを、ターゲット機器から読み出してメモリ領域に格納する読み出し部と、
メモリ領域に格納されたプログラムコードを用いて、ターゲット機器を制御する制御部とを備える。
【００２５】
第１４の発明は、それぞれがホスト機器が取り得る様々な実行環境のいずれかに対応するものであり、少なくとも一部の実行環境においては、１つの実行環境についてデータ容量の異なる複数のコードが対応した、自己の制御に必要な複数のプログラムコード、及び当該複数のプログラムコードの各内容に関するプログラムコード情報を保持するターゲット機器を、通信回線を介して制御するために主ホスト機器で実行されるプログラムであって、
プログラムコード情報をターゲット機器から取得する第１の取得ステップと、主ホスト機器の実行環境及び所定のメモリ領域の残量を判断する第１の判断ステップと、
プログラムコード情報を解析するステップと、判断及び解析結果に基づいて、ターゲット機器に格納されている複数のプログラムコードの中から、主ホスト機器の実行環境に適合し、かつ主ホスト機器のメモリ領域に格納可能なプログラムコードを決定するステップと、
決定されたプログラムコードを、ターゲット機器から読み出して主ホスト機器のメモリ領域に格納する第１の格納ステップと、
格納されたプログラムコードを用いて、ターゲット機器を制御する第１の制御ステップとを含む。
【００２６】
第１５の発明は、第１４の発明に従属するプログラムであって、
通信回線で接続されている他のホスト機器の所定のメモリ領域を確認して、主ホスト機器の実行環境に適合するプログラムコードを格納している副ホスト機器があるか否かを判断する第２の判断ステップをさらに含み、
第２の判断ステップにおける副ホスト機器があるとの判断に従って、決定するステップは、主ホスト機器の実行環境に適合し、かつ当該副ホスト機器が格納しているプログラムコードに応じて一意に定まるプログラムコードを決定することを特徴とする。
【００２７】
第１６の発明は、第１４の発明に従属するプログラムであって、
決定するステップでプログラムコードを決定できなかった場合、通信回線で接続されている他のホスト機器の所定のメモリ領域を確認して、主ホスト機器の実行環境に適合するプログラムコードを格納している副ホスト機器があるか否かを判断する第２の判断ステップと、
第２の判断ステップにおける副ホスト機器があるとの判断に従って、格納されているプログラムコードの操作が可能なコマンド情報を、当該副ホスト機器から取得する第２の取得ステップと、
コマンド情報に基づいて副ホスト機器にコマンド指示を与えることによって、ターゲット機器を制御する第２の制御ステップとをさらに含む。
【００２８】
第１７の発明は、第１６の発明に従属するプログラムであって、
第２の判断ステップにおける副ホスト機器がないとの判断に従って、他のホスト機器の所定のメモリ領域の残量を確認し、主ホスト機器の実行環境に適合するプログラムコードを格納可能なメモリ領域を有している副ホスト機器があるか否かを判断する第３の判断ステップと、
第３の判断ステップにおける副ホスト機器があるとの判断に従って、主ホスト機器の実行環境に適合するプログラムコードを、ターゲット機器から読み出させて当該副ホスト機器のメモリ領域に格納させる第２の格納ステップと、
コマンド情報を、副ホスト機器から取得する第３の取得ステップと、
コマンド情報に基づいて副ホスト機器にコマンド指示を与えることによって、ターゲット機器を制御する第３の制御ステップとをさらに含む。
【００２９】
第１８の発明は、実行環境及び所定のメモリ領域の残量を含む機器情報を保持するホスト機器によって通信回線を介して制御されるために、それぞれがホスト機器が取り得る様々な実行環境のいずれかに対応するものであり、少なくとも一部の実行環境においては、１つの実行環境についてデータ容量の異なる複数のコードが対応した、自己の制御に必要な複数のプログラムコード、及び当該複数のプログラムコードの各内容に関するプログラムコード情報を保持するターゲット機器で実行されるプログラムであって、
ホスト機器から機器情報を取得するステップと、
機器情報及びプログラムコード情報を解析するステップと、
解析結果に基づいて、複数のプログラムコードの中から、ホスト機器の実行環境に適合し、かつホスト機器のメモリ領域に格納可能なプログラムコードを決定するステップと、
決定されたプログラムコードをホスト機器へ送信するステップとを含む。
【００３０】
【発明の実施の形態】
以下、本発明が提供するホスト機器がターゲット機器を制御する機器制御システムを、接続されるホスト機器の数及びターゲット機器からのプログラムコードのアップロード手法に応じて、複数の場合に分けて説明する。
【００３１】
（第１の実施形態）
図１は、本発明の第１の実施形態に係る機器制御システムの構成を示すブロック図である。図１において、第１の実施形態に係る機器制御システムは、１つ以上のホスト機器１と１つ以上のターゲット機器２とが、有線又は無線の通信回線３で接続される構成によって実現される。
【００３２】
ホスト機器１は、ヘッダオブジェクト解析部１１と、ヘッダオブジェクトアップロード部１２と、プログラムコードアップロード部１３と、制御部１４と、通信制御部１５と、ＲＯＭ１６と、ＲＡＭ１７と、ＣＰＵ１８とを備える。ターゲット機器２は、制御部２１と、プログラムコード管理部２２と、プログラムコード格納部２３と、通信制御部２４とを備える。
【００３３】
まず、上記構成による第１の実施形態に係る機器制御システムのターゲット機器２を説明する。
プログラムコード格納部２３には、複数のプログラムコード２３１〜２３ｎ（ｎは、２以上の整数）が格納されている。この複数のプログラムコード２３１〜２３ｎは、ターゲット機器２の開発者によって、ターゲット機器２に接続され得ると予め分かっているホスト機器１の実行環境に応じて、事前に作成される（詳細は後述する）。
プログラムコード管理部２２は、プログラムコードを管理する情報としてヘッダオブジェクト２２１を格納している。このヘッダオブジェクト２２１は、プログラムコード２３１〜２３ｎ毎に、それらがどのような実行環境に対応するプログラムコードなのかを示す情報、及びプログラムコード格納部２３内の格納先アドレスを示す情報である（詳細は後述する）。
制御部２１は、通信制御部２４を介してホスト機器１から与えられる指示に従って、ヘッダオブジェクト２２１又はプログラムコード２３１〜２３ｎの読み出し／送出の制御を行う。
【００３４】
次に、上記構成による第１の実施形態に係る機器制御システムのホスト機器１を説明する。図２は、第１の実施形態のホスト機器１で行われるプログラムコード決定処理の基本的な手順を示すフローチャートである。
ホスト機器１とターゲット機器２とが通信回線３を介して接続され相互に通信できる状態になると、ＣＰＵ１８及び制御部１４は、アップロードに関する所定の指示を行って、ヘッダオブジェクト解析部１１、ヘッダオブジェクトアップロード部１２及びプログラムコードアップロード部１３に、それぞれ次の処理を実行させる。
【００３５】
まず、ヘッダオブジェクトアップロード部１２が、通信制御部２４、通信回線３及び通信制御部１５を通じて、ターゲット機器２のプログラムコード管理部２２に格納されているヘッダオブジェクト２２１を、ＲＡＭ１７にアップロードする（ステップＳ２１）。ヘッダオブジェクト解析部１１は、ＲＡＭ１７にアップロードされたヘッダオブジェクト２２１を読み出す（ステップＳ２２）。次に、ヘッダオブジェクト解析部１１は、ホスト機器１の実行環境を確認する（ステップＳ２３）。そして、ヘッダオブジェクト解析部１１は、ヘッダオブジェクト２２１に含まれる各プログラムコードの実行環境に関する情報に基づいて、確認した実行環境に適合するプログラムコードを決定する（ステップＳ２４）。最後に、プログラムコードアップロード部１３は、ヘッダオブジェクト解析部１１によって決定されたプログラムコードを、通信制御部２４、通信回線３及び通信制御部１５を通じて、ターゲット機器２のプログラムコード格納部２３からＲＯＭ１６にアップロードする（ステップＳ２５）。
【００３６】
そして、上述した実行環境に適合したプログラムコードのアップロード処理が完了した後、ホスト機器１は、ユーザ指示に応じてＲＯＭ１６に格納されたプログラムコードを解釈／実行し、ターゲット機器２を制御する。
【００３７】
次に、図３〜図１２をさらに参照して、プログラムコード管理部２２に格納されるヘッダオブジェクト２２１及びプログラムコード格納部２３に格納されるプログラムコード２３１〜２３ｎの具体的な作成例を、ヘッダオブジェクト解析部１１で確認するホスト機器１の実行環境形態に対応させて説明する。
【００３８】
＜具体例１＞　ホスト機器１の実行環境として、ＨＡＶｉ（Ｒ）やＪｉｎｉ（Ｒ）で規定される仮想マシンを判断する場合
ＨＡＶｉ（Ｒ）やＪｉｎｉ（Ｒ）では、ターゲット機器２を制御するためのプログラムコードをＪａｖａ（Ｒ）で記述している。よって、そのプログラムコードを解釈／実行するホスト機器１は、Ｊａｖａ（Ｒ）コードを実行するための仮想マシンを備える必要がある。この仮想マシンには、搭載される機器に応じて幾つかの種類がある。例えば、セットトップボックス（ＳＴＢ）やテレビ受像機に組み込まれる仮想マシンとしてＣＶＭが、携帯型情報機器（ＰＤＡ）や携帯電話端末に組み込まれる仮想マシンとしてＫＶＭが、ＩＣカード等に組み込まれる仮想マシンとしてＣａｒｄＶＭが、一般に知られている。図３は、それぞれの仮想マシンが推奨するメモリサイズ及びＪａｖａ（Ｒ）プログラムの実行上での制限に関する一覧表の例である。
【００３９】
よって、実行環境として仮想マシンの種類を判断する場合には、各仮想マシンのメモリサイズや制限内容に基づいて、各仮想マシンに一意に対応するプログラムコードを作成して、それに関するヘッダオブジェクトと共にターゲット機器２に予め格納しておく。
【００４０】
例えば、プログラムコード格納部２３には、ＣＶＭの仮想マシンに対応するプログラムコード２３１、ＫＶＭの仮想マシンに対応するプログラムコード２３２、及びＣａｒｄＶＭの仮想マシンに対応するプログラムコード２３３をそれぞれ作成し、所定のアドレス領域に格納する（図４（ａ））。そして、プログラムコード管理部２２には、プログラムコード２３１がＣＶＭの仮想マシンに、プログラムコード２３２がＫＶＭの仮想マシンに、プログラムコード２３３がＣａｒｄＶＭの仮想マシンにそれぞれ対応することを示す対応実行環境情報と、プログラムコードの格納先アドレス情報とからなる、ヘッダオブジェクト２２１を格納する（図４（ｂ））。対応実行環境情報としては、仮想マシン名が最適である。なお、プログラムコードの数や仮想マシンの種類は、上述したものに限られず自由に設定可能である。
【００４１】
このように格納されたヘッダオブジェクト２２１及びプログラムコード２３１〜２３３を用いて、ホスト機器１による最適なプログラムコードのアップロード処理が次のように行われる。
【００４２】
図５は、ホスト機器１がＣＶＭの仮想マシン１０１を搭載しているテレビ受像機で、ターゲット機器２がビデオデッキである場合を説明する図である。
図５において、通信回線３を介してホスト機器１とターゲット機器２とが接続されると、ヘッダオブジェクトアップロード部１２によって、ターゲット機器２からヘッダオブジェクト２２１がアップロードされる。ヘッダオブジェクト２２１がアップロードされると、次に、ヘッダオブジェクト解析部１１によって、仮想マシン１０１と一致する対応実行環境、すなわちＣＶＭのプログラムコードがターゲット機器２に存在するか否かが判断される。存在する場合には、格納先アドレス「０ｘ０１」に従い、プログラムコードアップロード部１３によって、プログラムコード２３１がターゲット機器２からアップロードされる。
【００４３】
また、図６は、ホスト機器１がＫＶＭの仮想マシン１０２を搭載している携帯電話端末で、ターゲット機器２がビデオデッキである場合を説明する図である。図６において、通信回線３を介してホスト機器１とターゲット機器２とが接続されると、ヘッダオブジェクトアップロード部１２によって、ターゲット機器２からヘッダオブジェクト２２１がアップロードされる。ヘッダオブジェクト２２１がアップロードされると、次に、ヘッダオブジェクト解析部１１によって、仮想マシン１０２と一致する対応実行環境、すなわちＫＶＭのプログラムコードがターゲット機器２に存在するか否かが確認される。存在する場合には、格納先アドレス「０ｘ０２」に従い、プログラムコードアップロード部１３によって、プログラムコード２３２がターゲット機器２からアップロードされる。
【００４４】
＜具体例２＞　ホスト機器１の実行環境として、機器スペックやユーザの嗜好する制御形態を判断する場合
この場合、ホスト機器１が取り得る実行環境の内、予め所望する幾つかの機器スペックのパラメータを組み合わせて複数のケースに場合分けしておく。そして、これらの各ケースに一意に対応するプログラムコードを作成して、それに関するヘッダオブジェクトと共にターゲット機器２に予め格納しておく。機器スペックの要素としては、ＣＰＵの動作周波数、キャッシュメモリサイズ、及び同時発色数（グラフィック）等が考えられる。
【００４５】
例えば、上述した機器スペックのパラメータによって、図７のように複数のケースＡ〜Ｄを予め作成する。図７の例では、ＧＵＩ（Ｇｒａｐｈｉｃａｌ　Ｕｓｅｒ　Ｉｎｔｅｒｆａｃｅ）の言語、条件を満たさなければプログラムコードの実行が不可能になる必須条件（Ｍａｎｄａｔｏｒｙ）、及び条件を満たさなくても実行は可能であるが快適に動作させるためには必要となる推奨条件（Ｒｅｃｏｍｍｅｎｄａｂｌｅ）を有している。プログラムコード格納部２３には、ケースＡに対応するプログラムコード２３１、ケースＢに対応するプログラムコード２３２、ケースＣに対応するプログラムコード２３３、及びケースＤに対応するプログラムコード２３４をそれぞれ作成し、所定のアドレス領域に格納する（図８（ａ））。そして、プログラムコード管理部２２には、プログラムコード２３１の機器スペック、プログラムコード２３２の機器スペック、プログラムコード２３３の機器スペック、プログラムコード２３４の機器スペックをそれぞれ示すスペック情報と、プログラムコードの格納先アドレス情報とからなる、ヘッダオブジェクト２２１を格納する（図８（ｂ））。
【００４６】
このように格納されたヘッダオブジェクト２２１及びプログラムコード２３１〜２３４を用いて、ホスト機器１による最適なプログラムコードのアップロード処理が次のように行われる。
【００４７】
この＜具体例２＞の場合、ホスト機器１のヘッダオブジェクト解析部１１は、ターゲット機器２からアップロードしたヘッダオブジェクト２２１の情報を格納する領域（アップロードリスト）１１１と、ホスト機器１のスペック情報を格納する領域１１２と、ユーザプリファレンス情報を格納する領域１１３とを備えている（図９）。格納領域１１２で管理されるスペック情報は、図７に示す各項目に対応している。格納領域１１３で管理されるユーザプリファレンス情報とは、図１０に示すように、ユーザが所望する制御形態、例えばＧＵＩ上の言語、グラフィック（同時発色数）、実行可能なコマンド（再生や停止等）の個数等を決定する制御モード等、の設定に関する情報である。このユーザプリファレンス情報は、入力部（図示せず）を介してユーザによって自由に設定される。
【００４８】
上記構成によるヘッダオブジェクト解析部１１を備えるホスト機器１で行われるプログラムコード決定処理の手順を、図１１及び図１２に示すフローチャートを用いて説明する。
図１１を参照して、通信回線３を介してホスト機器１とターゲット機器２とが接続されると、ヘッダオブジェクトアップロード部１２によって、ターゲット機器２からヘッダオブジェクト２２１がアップロードされる（ステップＳ１１１）。ヘッダオブジェクト解析部１１は、アップロードされたヘッダオブジェクト２２１を読み出してアップロードリスト１１１に格納する（ステップＳ１１２）。そして、ヘッダオブジェクト解析部１１は、格納したヘッダオブジェクト２２１に含まれる複数の情報から未処理の情報（以下、処理対象情報という）を１つ選択して（ステップＳ１１３，Ｓ１１４）、図１２に示すアップロード必須条件判定処理を実行する（ステップＳ１１５）。
【００４９】
図１２を参照して、ヘッダオブジェクト解析部１１は、格納領域１１３に格納されているユーザプリファレンス情報の設定言語が、処理対象情報のプログラムコードの実行時にＧＵＩ上に表示される言語と一致するか否か（言語条件）を判断する（ステップＳ１２１）。双方の言語が一致すると判断した場合、次に、ヘッダオブジェクト解析部１１は、スペック情報のＣＰＵと処理対象情報のＣＰＵとを比較して、ＣＰＵ条件を満足するか否かを判断する（ステップＳ１２２）。ＣＰＵ条件を満足すると判断した場合、次に、ヘッダオブジェクト解析部１１は、スペック情報のメモリと処理対象情報のメモリとを比較して、メモリ条件を満足するか否かを判断する（ステップＳ１２３）。メモリ条件を満足すると判断した場合、次に、ヘッダオブジェクト解析部１１は、ユーザプリファレンス情報の設定グラフィックと、処理対象情報のグラフィックとを比較して、グラフィック条件を満足するか否かを判断する（ステップＳ１２４）。
【００５０】
そして、上記ステップＳ１２１〜Ｓ１２４の全ての条件を満足する場合には、ヘッダオブジェクト解析部１１は、この処理対象情報をアップロードリスト１１１に残す（ステップＳ１２５）。これに対して、上記ステップＳ１２１〜Ｓ１２４のいずれか１つでも条件を満足できない場合には、ヘッダオブジェクト解析部１１は、この処理対象情報をアップロードリスト１１１から削除する（ステップＳ１２６）。
このステップＳ１１４、Ｓ１１５及びＳ１２１〜Ｓ１２４の判定処理は、アップロードリスト１１１に格納されたヘッダオブジェクト２２１に含まれる全ての情報について実行される（ステップＳ１１３）。
【００５１】
再び図１１を参照して、アップロードリスト１１１に読み出されたヘッダオブジェクト２２１の全ての情報について判定処理が完了すると（ステップＳ１１３，Ｎｏ）、次に、ヘッダオブジェクト解析部１１は、アップロードリスト１１１に残ったヘッダオブジェクト２２１の各情報を用いて、以下のユーザ嗜好条件判定処理を実行する。
【００５２】
ヘッダオブジェクト解析部１１は、格納領域１１３をチェックして、言語以外にユーザプリファレンス情報が設定されているか否かを確認する（ステップＳ１１６）。確認した結果、言語以外に設定されたユーザプリファレンス情報がある場合、ヘッダオブジェクト解析部１１は、ユーザプリファレンス情報とアップロードリスト１１１に残ったヘッダオブジェクト２２１の各情報とをそれぞれ比較し、情報が最も多く一致するプログラムコードを決定する（ステップＳ１１７）。一方、言語以外に設定されたユーザプリファレンス情報がない場合、ヘッダオブジェクト解析部１１は、スペック情報とアップロードリスト１１１に残ったヘッダオブジェクト２２１の各情報の推奨条件とをそれぞれ比較し、情報が最も多く一致するプログラムコードを決定する（ステップＳ１１８）。
【００５３】
そして、プログラムコードアップロード部１３は、ヘッダオブジェクト解析部１１によって決定された最適なプログラムコードを、その格納先アドレスに従ってターゲット機器２からアップロードする（ステップＳ１１９）。
【００５４】
以上のように、本発明の第１の実施形態に係る機器制御システムによれば、ターゲット機器に予め複数のプログラムコードを持たせ、ホスト機器が、自己の実行環境に合ったプログラムコードを判断して、ターゲット機器から自動的にアップロードする。また、ターゲット機器に複数のプログラムコードを持たせるので、ホスト機器は、自己の機能や性能に応じた実行環境を備えるだけでよくなる。これにより、テレビ受像機やＳＴＢ等のハイスペックな機器以外にも、ＰＤＡや携帯電話端末等のロースペックな機器を、ホスト機器として利用することが可能となる。また、ホスト機器側で最適なプログラムコードを自動的に決定するので、ユーザは、自ら機器のＯＳやスペック等に基づいて適切なプログラムコードを決定する必要がなくなる。
【００５５】
なお、上記第１の実施形態では、ホスト機器のスペック情報及びユーザプリファレンス情報の双方に基づいて、最適なプログラムコードを決定する場合を説明したが、いずれか一方の情報だけに基づいて最適なプログラムコードを決定するようにしても構わない。
【００５６】
また、本発明の第１の実施形態に係る機器制御システムによれば、ターゲット機器の開発者は、仮想マシンや機器スペックの場合分けに基づいたプログラムコードを記述することで、様々な実行環境を有するホスト機器を最適に動作させるプログラムコードを容易に提供することができる。仮想マシンの種類で分類している場合、ホスト機器では、仮想マシン名のみの判断で、ターゲット機器に複数存在するプログラムコードの中から最適なプログラムコードを決定することが可能となり、コスト削減を実現できる。機器スペックで分類している場合、ターゲット機器の開発者は、自身の作成するプログラムコードを実行するための条件をある程度独自に定義することが可能になり、新たなバージョンのホスト機器及びターゲット機器に対しても、対応することが可能になる。
【００５７】
（第２の実施形態）
上記第１の実施形態では、ホスト機器の固定的な実行環境（仮想マシンや機器スペック等）に一意に対応するプログラムコードをそれぞれ１つだけターゲット機器に格納させている。通常、これらのプログラムコードは、対応する実行環境において制御可能な全ての機能について作成されるため、容量が大きい。このため、ホスト機器のＲＯＭ等のメモリ領域の残量によっては、プログラムコードをアップロードできない場合が生じる。
そこで、本第２の実施形態では、実行環境に加えてホスト機器のメモリ領域の残量をさらに判断した上で、最適なプログラムコードをアップロードできる機器制御システムを説明する。
【００５８】
本発明の第２の実施形態に係る機器制御システムの基本的な構成は、上記第１の実施形態に係る機器制御システムと同様であるが、ホスト機器１のヘッダオブジェクト解析部１１の処理、ターゲット機器２のプログラムコード管理部２２に格納されるヘッダオブジェクト２２１及びプログラムコード格納部２３に格納されるプログラムコード２３１〜２３ｎの内容が異なる。
以下、ホスト機器１に搭載される仮想マシンの種類に対応したプログラムコード２３１〜２３ｎが、プログラムコード格納部２３に格納される場合を一例に挙げて、第１の実施形態と異なる部分を中心に第２の実施形態を説明する。
【００５９】
まず、図１３をさらに参照して、ターゲット機器２のプログラムコード管理部２２に格納されるヘッダオブジェクト２２１及びプログラムコード格納部２３に格納されるプログラムコード２３１〜２３ｎの具体例を、それぞれ説明する。
【００６０】
上記第１の実施形態では、各仮想マシンに一意に対応するプログラムコードをそれぞれ１つだけ作成した。これに対し、本第２の実施形態では、仮想マシン毎に、容量の異なる複数のプログラムコードを作成する。例えば、図１３（ａ）のように、仮想マシン毎に、予め定めた使用可能な機能でクラス分けされた複数のプログラムコード２３１〜２３６を作成する。このクラス分けは自由に可能であり、例えば全ての機能が使用できるものをクラス１と、一部の機能が使用できないものクラス２等とすればよい。このように、一部の機能の使用が制限されたプログラムコードも作成することで、同一仮想マシン向けに容量の異なる複数のプログラムコードを提供することができる。
【００６１】
プログラムコード管理部２２には、プログラムコード格納部２３に格納されるプログラムコード２３１〜２３６毎に、どの仮想マシンに対応か示す対応実行環境、その容量及びその格納先アドレスの情報からなるヘッダオブジェクト２２１を、格納する（図１３（ｂ））。
このように格納されたヘッダオブジェクト２２１及びプログラムコード２３１〜２３６を用いて、ホスト機器１による最適なプログラムコードのアップロード処理が次のように行われる。
【００６２】
図１４は、第２の実施形態のホスト機器１で行われるプログラムコード決定処理の手順を示すフローチャートである。
ホスト機器１は、通信回線３を介してターゲット機器２と接続されて相互に通信できる状態になると、ＣＰＵ１８及び制御部１４からアップロードに関する所定の指示を行って、ヘッダオブジェクト解析部１１、ヘッダオブジェクトアップロード部１２及びプログラムコードアップロード部１３に、それぞれ次の処理を実行させる。
【００６３】
まず、ヘッダオブジェクトアップロード部１２が、通信制御部２４、通信回線３及び通信制御部１５を通じて、ターゲット機器２のプログラムコード管理部２２に格納されているヘッダオブジェクト２２１を、ＲＡＭ１７にアップロードする。ヘッダオブジェクト解析部１１は、ＲＡＭ１７にアップロードされたヘッダオブジェクト２２１を読み出す（ステップＳ１４１）。次に、ヘッダオブジェクト解析部１１は、ホスト機器１の実行環境（この例では、仮想マシンの種類）を確認する。そして、ヘッダオブジェクト解析部１１は、ヘッダオブジェクト２２１に含まれる各プログラムコードの実行環境に関する情報に基づいて、確認した実行環境に適合する複数のプログラムコードを判断する（ステップＳ１４２）。
【００６４】
次に、ヘッダオブジェクト解析部１１は、ホスト機器１のメモリ領域の残量を確認する（ステップＳ１４３）。そして、ヘッダオブジェクト解析部１１は、ステップＳ１４２で確認した適合する複数のプログラムコードのいずれかをアップロードできるメモリ領域があるか否かを、ヘッダオブジェクト２２１に含まれるプログラムコードの容量情報に基づいて判断する（ステップＳ１４４）。
【００６５】
ステップＳ１４４における判断の結果、アップロードできるメモリ領域がある場合、ヘッダオブジェクト解析部１１は、アップロード可能な最大容量のプログラムコードを最適なプログラムコードとして決定する（ステップＳ１４５）。そして、プログラムコードアップロード部１３によって、決定された最適なプログラムコードが、ターゲット機器２のプログラムコード格納部２３からＲＯＭ１６にアップロードされる（ステップＳ１４６）。
これに対して、アップロードできるメモリ領域がない場合、ヘッダオブジェクト解析部１１は、ターゲット機器２を制御不可能と判断して処理を終了する。
【００６６】
図１５及び図１６に示す具体例を挙げて、上述した処理をさらに説明する。この具体例では、ターゲット機器２は、仮想マシンＡに対応するプログラムコードＡ−１（容量：１２０ＫＢ）、Ａ−１よりも一部の機能が制限されたプログラムコードＡ−２（同９０ＫＢ）、仮想マシンＢに対応するＢ−１（同１００ＫＢ）及びＢ−１よりも一部の機能が制限されたプログラムコードＢ−２（同７０ＫＢ）を格納している。ホスト機器１は、仮想マシンＡを搭載している。
【００６７】
（１）ホスト機器１のメモリ領域の残量が、仮想マシンＡに適合するプログラムコードＡ−１及びＡ−２の容量以上である場合、ホスト機器１は、最大容量のプログラムコードＡ−１をターゲット機器２からアップロードする（図１５）。
（２）ホスト機器１のメモリ領域の残量が、仮想マシンＡに適合するプログラムコードＡ−１の容量以下かつプログラムコードＡ−２の容量以上である場合、ホスト機器１は、メモリに格納可能なプログラムコードＡ−２をターゲット機器２からアップロードする（図１６）。
【００６８】
以上のように、本発明の第２の実施形態に係る機器制御システムによれば、ホスト機器が取り得る実行環境毎に異なる容量の複数のプログラムコードを予めターゲット機器に持たせ、ホスト機器が、自己の実行環境に加えてメモリ領域の残量にも合ったプログラムコードを判断して、ターゲット機器から自動的にアップロードする。これにより、動的に変化するホスト機器のメモリ領域をも考慮した適切なプログラムコードを決定することができる。
【００６９】
なお、上記第２の実施形態では、メモリに格納できるプログラムコードが複数ある場合、ホスト機器のメモリ領域の残量に応じて、実行環境に適合するプログラムコードの中から最大容量のものが自動的にアップロードされるように記載した。しかし、ユーザが、自分が好むいずれか１つのプログラムコードを手動でアップロードできるようにしてもよい。このようにすれば、ユーザは、所望する一部の機能の制御だけ、例えばビデオ機器における再生、停止、早送り及び巻戻しの制御だけ、を選択して実行させることが可能になる。
【００７０】
（第３の実施形態）
上記第１及び第２の実施形態は、１つのホスト機器と１つのターゲット機器とが接続されれば実現される機器制御システムに関する技術である。この技術を用いて１つのターゲット機器を複数のホスト機器で制御できるようにする場合には、各ホスト機器が、それぞれ独自の判断でプログラムコードをアップロードすることになる。しかし、複数のホスト機器の間に何らかの関連性を持たせて特殊な制御を行いたい場合には、各々のホスト機器の状態を考慮してプログラムコードをアップロードすることが好ましい。
そこで、本第３の実施形態では、あるホスト機器において機器制御を実行する場合、ネットワーク接続されている他のホスト機器のプログラムコード格納状態も判断した上で、ターゲット機器からアップロードすべき最適なプログラムコードを決定できる機器制御システムを説明する。
【００７１】
図１７は、本発明の第３の実施形態に係る機器制御システムの構成を示すブロック図である。図１７において、第３の実施形態に係る機器制御システムは、複数のホスト機器１と１つ以上のターゲット機器２とが、有線又は無線の通信回線３で接続される構成によって実現される。
本発明の第３の実施形態に係る機器制御システムを構成するホスト機器１及びターゲット機器２内の基本的な構成は、上記第２の実施形態と同様であるが、制御主体となるホスト機器１（以下、主ホスト機器１と記す）のヘッダオブジェクト解析部１１の処理が異なる。
【００７２】
以下、図１３に示すように、所定のクラス分けがされたプログラムコード２３１〜２３６がプログラムコード格納部２３に格納され、このプログラムコード２３１〜２３６に関連したヘッダオブジェクト２２１がプログラムコード管理部２２に格納される場合を一例に挙げて、第１及び第２の実施形態と異なる部分を中心に第３の実施形態を説明する。
【００７３】
図１８は、第３の実施形態の主ホスト機器１で行われるプログラムコード決定処理の手順を示すフローチャートである。なお、図１８において、図１４のフローチャートと同じ処理を行う工程には、同一のステップ番号を付してその説明の一部を省略する。
【００７４】
主ホスト機器１のヘッダオブジェクト解析部１１は、搭載する仮想マシンの種類と、ターゲット機器２からアップロードしたヘッダオブジェクト２２１の情報とに基づいて、この仮想マシンに適合する複数のプログラムコードを判断する（ステップＳ１４１，Ｓ１４２）。次に、主ホスト機器１のヘッダオブジェクト解析部１１は、確認したメモリ領域の残量と、ヘッダオブジェクト２２１の情報とに基づいて、仮想マシンに適合するプログラムコードをアップロードできるメモリ領域があるか否かを判断する（ステップＳ１４３，Ｓ１４４）。そして、アップロードできるメモリ領域がある場合、主ホスト機器１のヘッダオブジェクト解析部１１は、アップロードできるプログラムコードの数をさらに判断する（ステップＳ１８１）。
【００７５】
ステップＳ１８１における判断の結果、アップロードできるプログラムコードが１つだけ存在する場合、主ホスト機器１のヘッダオブジェクト解析部１１は、そのプログラムコードを最適なプログラムコードとして決定する（ステップＳ１８２）。そして、主ホスト機器１のプログラムコードアップロード部１３は、この決定されたプログラムコードをターゲット機器２からアップロードする（ステップＳ１４６）。
【００７６】
これに対して、アップロードできるプログラムコードが複数存在する場合、主ホスト機器１のヘッダオブジェクト解析部１１は、特殊な制御を行うために関連性を持たせる他のホスト機器１が接続されているか、及び接続されている場合にはそのＲＯＭ１６に特定のプログラムコードが格納されているか否かを、ネットワークを介して調査する（ステップＳ１８３，Ｓ１８４）。調査の結果、所定の他のホスト機器１がネットワーク接続され、かつ特定のプログラムコードが格納されていると判断した場合、主ホスト機器１のヘッダオブジェクト解析部１１は、上記複数のプログラムコードの中の特殊な制御に必要な所定のプログラムコードを、最適なプログラムコードとして決定する（ステップＳ１８５）。そして、主ホスト機器１のプログラムコードアップロード部１３は、この決定されたプログラムコードをターゲット機器２からアップロードする（ステップＳ１４６）。
【００７７】
なお、所定の他のホスト機器１がネットワーク接続されていない場合、又は特定のプログラムコードが格納されていない場合には、上記第２の実施形態に基づいた最適なプログラムコードの決定（ステップＳ１４５）及びアップロード処理（ステップＳ１４６）が行われる。
【００７８】
この第３の実施形態による制御手法が有効となる、家庭内に構成された機器制御システムの具体例としては、次のようなものがある。
（１）ホスト機器として１階のテレビ及び２階のテレビが、ターゲット機器として２階のテレビと同じ部屋にあるエアコンが、ネットワーク接続されたシステムにおいて、２階のテレビにエアコンの全機能を制御できるプログラムコードがすでに格納されている場合を考える。この場合において、１階のテレビもエアコンを制御するホスト機器として使用する際には、２階のテレビにエアコンの全機能を制御できるプログラムコードが格納されていることを判断し、１階のテレビにはエアコンの機能限定（例えば、電源オン／オフのみ）がされたプログラムコードをアップロードさせる。これにより、ある人物が２階のテレビを用いてエアコンを制御している状態において、別の部屋から他の人物が勝手に設定温度変更をするようなことを防止することができる。
【００７９】
（２）ホスト機器としてテレビが、ターゲット機器としてビデオが、ネットワーク接続されたシステムにおいて、テレビにビデオの全機能を制御できるプログラムコードがすでに格納されて場合を考える。この場合において、インターネットに接続可能であるＰＤＡを、ビデオを制御するホスト機器として新たに接続する際には、テレビにビデオの全機能を制御できるプログラムコードが格納されていることを判断し、ＰＤＡにはインターネットを利用したＥＰＧ情報の取得が可能なプログラムコードをアップロードさせる。これにより、ＰＤＡは、インターネット経由でＥＰＧ情報を取得し、このＥＰＧ情報をネットワークを介してテレビに供給する処理を行うことができる。
【００８０】
以上のように、本発明の第３の実施形態に係る機器制御システムによれば、主ホスト機器において機器制御を実行する場合、ネットワーク接続されている他のホスト機器のプログラムコード格納状態も判断した上で、ターゲット機器からアップロードすべき最適なプログラムコードを決定する。これにより、複数のホスト機器の間に特定の関連性を持たせて特殊な制御を行うことが可能となる。
【００８１】
（第４の実施形態）
上記第２及び第３の実施形態では、プログラムコードをアップロードできるか否かを、制御主体となるホスト機器のメモリ領域の残量だけで判断している。このため、ホスト機器のメモリ領域の残量が、実行環境に適合する最小容量のプログラムコードよりも少ない場合には、プログラムコードをアップロードすることができない。
そこで、本第４の実施形態では、あるホスト機器において機器制御を実行する場合、ネットワーク接続されている他のホスト機器のプログラムコード格納状態及びメモリ領域の残量も判断した上で、ターゲット機器からアップロードするプログラムコード及びアップロード先のホスト機器を最適に制御することができる機器制御システムを説明する。
【００８２】
本発明の第４の実施形態に係る機器制御システムは、上記第３の実施形態（図１７）と同様に、複数のホスト機器１と１つ以上のターゲット機器２とが、有線又は無線の通信回線３で接続される構成によって実現される。第４の実施形態に係る機器制御システムを構成するホスト機器１及びターゲット機器２内の基本的な構成は、上記第３の実施形態と同様であるが、主ホスト機器１のヘッダオブジェクト解析部１１の処理が異なる。
【００８３】
以下、図１３に示すように、所定のクラス分けがされたプログラムコード２３１〜２３６がプログラムコード格納部２３に格納され、このプログラムコード２３１〜２３６に関連したヘッダオブジェクト２２１がプログラムコード管理部２２に格納される場合を一例に挙げて、第１〜第３の実施形態と異なる部分を中心に第４の実施形態を説明する。
なお、本第４の実施形態を実現するにあたり、各プログラムコード２３１〜２３６には、ターゲット機器２を実際に制御するためのプライベートコマンド、及びこのプライベートコマンドの指定をリモート制御可能なグローバルコマンドを送信するためのＧＵＩプログラムが含まれることを前提とする。
【００８４】
図１９は、第４の実施形態の主ホスト機器１で行われるプログラムコード決定処理の手順を示すフローチャートである。なお、図１９において、図１４のフローチャートと同じ処理を行う工程には、同一のステップ番号を付してその説明の一部を省略する。
【００８５】
主ホスト機器１のヘッダオブジェクト解析部１１は、搭載する仮想マシンの種類と、ターゲット機器２からアップロードしたヘッダオブジェクト２２１の情報とに基づいて、この仮想マシンに適合する複数のプログラムコードを判断する（ステップＳ１４１，Ｓ１４２）。次に、主ホスト機器１のヘッダオブジェクト解析部１１は、確認したメモリ領域の残量と、ヘッダオブジェクト２２１の情報とに基づいて、仮想マシンに適合するプログラムコードをアップロードできるメモリ領域があるか否かを判断する（ステップＳ１４３，Ｓ１４４）。
【００８６】
ステップＳ１４４における判断の結果、アップロードできるメモリ領域がある場合、主ホスト機器１のヘッダオブジェクト解析部１１は、アップロード可能な最大容量のプログラムコードを最適なプログラムコードとして決定する（ステップＳ１４５）。そして、主ホスト機器１のプログラムコードアップロード部１３は、この決定された最適なプログラムコードをターゲット機器２からアップロードする（ステップＳ１４６）。
この場合におけるターゲット機器２の制御は、上記第１及び第２の実施形態と同様に、主ホスト機器１が、ユーザ指示に応じてＲＯＭ１６に格納されたプログラムコードを解釈／実行し、生成されるプライベートコマンドをターゲット機器２へ直接送信することで実行される。
【００８７】
これに対して、アップロードできるメモリ領域がない場合、主ホスト機器１のヘッダオブジェクト解析部１１は、他のホスト機器１のＲＯＭ１６にすでに格納されているプログラムコード及び他のホスト機器１のメモリ領域の残量を、ネットワークを介して調査する（ステップＳ１９１）。そして、ヘッダオブジェクト解析部１１は、主ホスト機器１の実行環境に適合するプログラムコードを格納した他のホスト機器１が存在するか否か、及び主ホスト機器１の実行環境に適合するプログラムコードを格納できるメモリ領域の残量を有する他のホスト機器１が存在するか否かを、確認する（ステップＳ１９２，Ｓ１９３）。
【００８８】
ステップＳ１９２，Ｓ１９３における確認の結果、主ホスト機器１の実行環境に適合するプログラムコードが他のホスト機器１に格納されている場合、主ホスト機器１のヘッダオブジェクト解析部１１は、当該プログラムコードに対応するＧＵＩプログラムを当該他のホスト機器１から取得する（ステップＳ１９４）。なお、適合するプログラムコードを複数の他のホスト機器１が格納している場合には、主ホスト機器１は、最大容量のプログラムコードを格納する他のホスト機器１から、ＧＵＩプログラムを取得すれば足りる。
この場合におけるターゲット機器２の制御は、主ホスト機器１が、取得したＧＵＩプログラムを用いて、ユーザ指示に応じたグローバルコマンドを他のホスト機器１に送信し、他のホスト機器１が、受信したグローバルコマンドを対応するプライベートコマンドに変換した後、ターゲット機器２へ送信することで実行される。
【００８９】
これに対して、主ホスト機器１の実行環境に適合するプログラムコードはどこにも格納されていないが、いずれかのプログラムコードをアップロード可能なメモリ領域を有する他のホスト機器１が存在する場合、主ホスト機器１のヘッダオブジェクト解析部１１は、当該他のホスト機器１にそのプログラムコードをアップロードするように指示する。なお、プログラムコードをアップロード可能なメモリ領域を有する他のホスト機器１が複数存在する場合には、主ホスト機器１は、メモリ領域の残量が最大である他のホスト機器１だけに指示すれば足りる。この指示に従って、他のホスト機器１は、プログラムコードをＲＯＭ１６にアップロードする（ステップＳ１９５）。そして、主ホスト機器１のヘッダオブジェクト解析部１１は、他のホスト機器１がアップロードしたプログラムコードに対応するＧＵＩプログラムを、当該他のホスト機器１から取得する（ステップＳ１９４）。
この場合におけるターゲット機器２の制御も、主ホスト機器１が、取得したＧＵＩプログラムを用いて、ユーザ指示に応じたグローバルコマンドを他のホスト機器１に送信し、他のホスト機器１が、受信したグローバルコマンドを対応するプライベートコマンドに変換した後、ターゲット機器２へ送信することで実行される。
【００９０】
図２０及び図２１に示す具体例を挙げて、上述した処理をさらに説明する。この具体例では、第１のホスト機器１がターゲット機器２を制御する場合を示している。なお、ターゲット機器２は、上記第２の実施形態（図１５）で述べたプログラムコードＡ−１、Ａ−２、Ｂ−１及びＢ−２をそれぞれ格納している。また、第１〜第３のホスト機器１は、仮想マシンＡをそれぞれ搭載している。
【００９１】
（１）図２０の場合。第１のホスト機器１のメモリ領域の残量が、仮想マシンＡに適合するプログラムコードＡ−１及びＡ−２の容量以下である場合、第１のホスト機器１は、第２及び第３のホスト機器１の格納プログラムコード及びメモリ領域の残量をそれぞれ調査する。調査の結果、第２のホスト機器１がプログラムコードＡ−１を格納していると確認できたので、第１のホスト機器１は、第２のホスト機器１からプログラムコードＡ−１に対応するＧＵＩプログラムを取得する。
ターゲット機器２の制御は、第１のホスト機器１が、ＧＵＩプログラムを用いて生成したグローバルコマンドを第２のホスト機器１へ送信し、第２のホスト機器１が、第１のホスト機器１から受信したグローバルコマンドに従って変換したプライベートコマンドをターゲット機器２へ送信することで実行される。
【００９２】
（２）図２１の場合。第１のホスト機器１のメモリ領域の残量が、仮想マシンＡに適合するプログラムコードＡ−１及びＡ−２の容量以下である場合、第１のホスト機器１は、第２及び第３のホスト機器１の格納プログラムコード及びメモリ領域の残量をそれぞれ調査する。調査の結果、第３のホスト機器１がプログラムコードＡ−１を格納できるメモリ領域を有していると確認できたので、第１のホスト機器１は、第３のホスト機器１にプログラムコードＡ−１をアップロードするように指示する。第３のホスト機器１は、指示に従ってプログラムコードＡ−１をアップロードする。その後、第１のホスト機器１は、第３のホスト機器１からプログラムコードＡ−１に対応するＧＵＩプログラムを取得する。
ターゲット機器２の制御は、第１のホスト機器１が、ＧＵＩプログラムを用いて生成したグローバルコマンドを第３のホスト機器１へ送信し、第３のホスト機器１が、第１のホスト機器１から受信したグローバルコマンドに従って変換したプライベートコマンドをターゲット機器２へ送信することで実行される。
【００９３】
この第４の実施形態による制御手法が有効となる、家庭内に構成された機器制御システムの具体例としては、次のようなものがある。
ホスト機器としてテレビが、ターゲット機器としてビデオが、ネットワーク接続されたシステムにおいて、テレビにビデオの全機能を制御できるプログラムコードがすでに格納されて場合を考える。この場合において、ビデオを制御するホスト機器として新たに携帯電話を接続する際には、テレビにビデオの全機能を制御できるプログラムコードが格納されていることを判断し、携帯電話にはテレビに格納されているプログラムコードに対応するＧＵＩプログラムを取得させる。これにより、携帯電話は、小さい容量のＧＵＩプログラムを格納するだけでよいので、記憶資源を有効活用させることができる。
【００９４】
以上のように、本発明の第４の実施形態に係る機器制御システムによれば、主ホスト機器において機器制御を実行する場合、ネットワーク接続されている他のホスト機器のプログラムコード格納状態及びメモリ領域の残量も判断した上で、最適なプログラムコードをターゲット機器から直接アップロードすべきか、又は他のホスト機器にアップロードさせるべきかを決定する。これにより、主ホスト機器のメモリ領域の残量が、実行環境に適合する最小容量のプログラムコードよりも少ない場合でも、他のホスト機器を経由してターゲット機器を制御することができる。
【００９５】
（第５の実施形態）
上記第１〜第４の実施形態は、ホスト機器が、自己の実行環境やメモリ領域の残量を判断して、アップロードすべき最適なプログラムコードを決定する機器制御システムを説明した。
次に、本第５の実施形態では、ターゲット機器が、ホスト機器の実行環境やメモリ領域の残量を判断して、アップロードさせるべき最適なプログラムコードを決定する機器制御システムを説明する。
【００９６】
図２２は、本発明の第５の実施形態に係る機器制御システムの構成を示すブロック図である。図２２において、第５の実施形態に係る機器制御システムは、１つ以上のホスト機器４と１つ以上のターゲット機器５とが、有線又は無線の通信回線３で接続される構成によって実現される。
【００９７】
ホスト機器４は、ヘッダオブジェクト格納部４１と、プログラムコードアップロード部４２と、制御部１４と、通信制御部１５と、ＲＯＭ１６と、ＲＡＭ１７と、ＣＰＵ１８とを備える。ターゲット機器５は、制御部２１と、プログラムコード管理部２２と、プログラムコード格納部２３と、ヘッダオブジェクトダウンロード部５１と、ヘッダオブジェクト解析部５２と、通信制御部２４と、ＲＯＭ５３と、ＲＡＭ５４と、ＣＰＵ５５とを備える。
【００９８】
本第５の実施形態に係る機器制御システムは、上記第１の実施形態に係る機器制御システムに対して、ホスト機器４においてヘッダオブジェクト格納部４１及びプログラムコードアップロード部４２が、ターゲット機器５においてヘッダオブジェクトダウンロード部５１、ヘッダオブジェクト解析部５２、ＲＯＭ５３、ＲＡＭ５４及びＣＰＵ５５が異なる。
以下、第１の実施形態と異なる部分を中心に第５の実施形態を説明する。
【００９９】
ホスト機器４において、ヘッダオブジェクト格納部４１は、ホスト機器４の情報を与えるヘッダオブジェクト４１１を格納する。このヘッダオブジェクト４１１は、上記第１の実施形態の＜具体例１＞に対応させる場合にはホスト機器４の仮想マシンの種類に関する情報によって（図２３（ａ））、＜具体例２＞に対応させる場合にはホスト機器４の機器スペックに関する情報及びユーザプリファレンスに関する情報によって（図２３（ｂ））、構成される。
【０１００】
ホスト機器４とターゲット機器５とが通信回線３を介して接続され相互に通信できる状態になると、ターゲット機器５のＣＰＵ５５及び制御部２１は、ダウンロードに関する所定の指示を行って、ヘッダオブジェクトダウンロード部５１及びヘッダオブジェクト解析部５２に、それぞれ次の処理を実行させる。
【０１０１】
まず、ヘッダオブジェクトダウンロード部５１は、通信制御部１５、通信回線３及び通信制御部２４を通じて、ホスト機器４のヘッダオブジェクト格納部４１に格納されているヘッダオブジェクト４１１を、ＲＡＭ５４にダウンロードする。ヘッダオブジェクト解析部５２は、ヘッダオブジェクトダウンロード部５１によってダウンロードされたヘッダオブジェクト４１１を読み出す。そして、ヘッダオブジェクト解析部５２は、ヘッダオブジェクト４１１に含まれる情報、及びプログラムコード管理部２２に格納されているヘッダオブジェクト２２１を解析し、ホスト機器４がアップロードすべき最適なプログラムコードを決定する。この決定は、ダウンロードされたヘッダオブジェクト４１１に、仮想マシンの情報が含まれている場合にはヘッダオブジェクト２２１との一致判断を、機器スペック及びユーザプリファレンスの情報が含まれている場合には上述した図１１及び図１２のフローチャートに従った判断を、それぞれ行うことで可能である。そして、ヘッダオブジェクト解析部５２は、通信制御部２４、通信回線３及び通信制御部１５を通じて、決定した最適なプログラムコードをプログラムコード格納部２３からホスト機器４へ送信する。
【０１０２】
ホスト機器４において、プログラムコードアップロード部４２は、ＣＰＵ１８及び制御部１４の指示の下、通信制御部２４、通信回線３及び通信制御部１５を通じて、ターゲット機器５から送信される最適なプログラムコードをアップロードして、ＲＯＭ１６に格納させる。
【０１０３】
以上のように、本発明の第５の実施形態に係る機器制御システムによれば、ターゲット機器に予め複数のプログラムコードを持たせ、ターゲット機器が、ホスト機器の実行環境及びメモリ領域の残量に合った最適なプログラムコードを判断して、ホスト機器がその判断に応じて自動的にアップロードする。これにより、ＴＶ受像機やＳＴＢ等のハイスペックな機器以外にも、ＰＤＡや携帯電話端末等のロースペックな機器を、ホスト機器として利用することが可能となる。また、ホスト機器側にプログラムコードを決定するための構成を持つ必要がなくなり、ホスト機器のコスト削減が可能になる。
【０１０４】
なお、上記第５の実施形態では、ターゲット機器側でホスト機器の実行環境を判断して最適なプログラムコードを決定する手法を、上記第１の実施形態に対応させた例を説明した。しかし、この手法は、上記第２〜第４の実施形態に対応させることももちろん可能である。
【０１０５】
また、上記各実施形態では、通信回線で接続される各機器が、ホスト機器又はターゲット機器のいずれかに予め決められているように記載した。しかし、機器にホスト機器として機能するための構成及びターゲット機器として機能するための構成を両方備えておけば、その機器を、ホスト機器又はターゲット機器のいずれにも機能させることができる。
【０１０６】
典型的には、上記第１〜第５の実施形態に係る機器制御システムの各機能は、記憶装置（ＲＯＭ、ＲＡＭ、ハードディスク等）に格納された上述した処理手順を実行可能な所定のプログラムデータが、ＣＰＵによって実行されることで実現される。この場合、プログラムデータは、ＣＤ−ＲＯＭやフレキシブルディスク等の記録媒体を介して記憶装置内に導入されてもよいし、記録媒体上から直接実行されてもよい。
【０１０７】
【発明の効果】
請求項１及び請求項１４の発明によれば、ホスト機器が取り得る実行環境毎に異なる容量の複数のプログラムコードを予めターゲット機器に持たせ、ホスト機器が、自己の実行環境及びメモリ領域の残量に合ったプログラムコードを判断して、ターゲット機器から自動的にアップロードする。これにより、動的に変化するホスト機器のメモリ領域をも考慮した適切なプログラムコードを決定することができる。また、ターゲット機器に複数のプログラムコードを持たせるので、ホスト機器は、自己の機能や性能に応じた実行環境を備えるだけでよくなる。よって、また、テレビ受像機やＳＴＢ等のハイスペックな機器以外にも、ＰＤＡや携帯電話端末等のロースペックな機器を、ホスト機器として利用することが可能となる。また、ホスト機器側で最適なプログラムコードを自動的に決定するので、ユーザは、自ら機器のＯＳやスペック等に基づいて適切なプログラムコードを決定する必要がなくなる。
【０１０８】
請求項２及び請求項１５の発明によれば、あるホスト機器において機器制御を実行する場合、通信回線で接続されている他のホスト機器のプログラムコード格納状態も判断した上で、ターゲット機器からアップロードすべき最適なプログラムコードを決定する。これにより、複数のホスト機器の間に特定の関連性を持たせて特殊な制御を行うことが可能となる（上記第３の実施形態の具体例（１）や（２）等）。
【０１０９】
請求項３及び請求項１６の発明によれば、あるホスト機器において機器制御を実行する場合、通信回線で接続されている他のホスト機器のプログラムコード格納状態も判断した上で、最適なプログラムコードをターゲット機器から直接アップロードすべきかを決定する。これにより、ホスト機器のメモリ領域の残量が、実行環境に適合する最小容量のプログラムコードよりも少ない場合でも、他のホスト機器を経由してターゲット機器を制御することができる。
【０１１０】
請求項４及び請求項１７の発明によれば、あるホスト機器において機器制御を実行する場合、ネットワーク接続されている他のホスト機器のプログラムコード格納状態及びメモリ領域の残量も判断した上で、最適なプログラムコードをターゲット機器から直接アップロードすべきか、又は他のホスト機器にアップロードさせるべきかを決定する。これにより、ホスト機器のメモリ領域の残量が、実行環境に適合する最小容量のプログラムコードよりも少ない場合でも、他のホスト機器を経由してターゲット機器を制御することができる。
【０１１１】
請求項５及び請求項９の発明によれば、ターゲット機器の開発者は、仮想マシンに従ってプログラムコードを記述することで、様々な仮想マシンを搭載するホスト機器を最適に動作させるプログラムコードを容易に提供することができる。また、ホスト機器では、仮想マシンの種類名だけで、ターゲット機器に複数存在するプログラムコードの中から最適なプログラムコードを決定することが可能となり、コスト削減を実現できる。
【０１１２】
請求項６及び請求項１０の発明によれば、ターゲット機器の開発者は、自身の作成するプログラムコードを実行するための条件をある程度独自に定義することが可能になり、新たなバージョンのホスト機器及びターゲット機器に対しても、対応することが可能になる。
【０１１３】
請求項７及び請求項１１の発明によれば、ホスト機器及びターゲット機器を利用するユーザが、最も期待する制御形態で制御することが可能になる。
【０１１４】
請求項８及び請求項１８の発明によれば、ターゲット機器に予め複数のプログラムコードを持たせ、ターゲット機器が、ホスト機器の実行環境及びメモリ領域の残量に合った最適なプログラムコードを判断して、ホスト機器がその判断に応じて自動的にアップロードする。これにより、ＴＶ受像機やＳＴＢ等のハイスペックな機器以外にも、ＰＤＡや携帯電話端末等のロースペックな機器を、ホスト機器として利用することが可能となる。また、ホスト機器側にプログラムコードを決定するための構成を持つ必要がなくなり、ホスト機器のコスト削減が可能になる。
【０１１５】
請求項１３及び請求項１４の発明によれば、通信回線で接続される各機器が、ホスト機器として機能するための構成及びターゲット機器として機能するための構成を両方備えているので、各機器を、ホスト機器又はターゲット機器のいずれにも機能させることができる。
【図面の簡単な説明】
【図１】本発明の第１及び第２の実施形態に係る機器制御システムの構成を示すブロック図である。
【図２】第１の実施形態のホスト機器で行われるプログラムコード決定処理の基本的な手順を示すフローチャートである。
【図３】仮想マシンが推奨するメモリサイズ及びＪａｖａ（Ｒ）プログラムの実行上での制限に関する一覧表の例である。
【図４】第１の実施形態の具体例１で用いられるヘッダオブジェクト及びプログラムコードを示す図である。
【図５】ホスト機器がテレビ受像機でターゲット機器がビデオデッキである場合の第１の実施形態に基づくアップロード処理を説明する図である。
【図６】ホスト機器が携帯電話端末でターゲット機器がビデオデッキである場合の第１の実施形態に基づくアップロード処理を説明する図である。
【図７】機器スペックによる場合分けの一例を示す図である。
【図８】第１の実施形態の具体例２で用いられるヘッダオブジェクト及びプログラムコードを示す図である。
【図９】第１の実施形態の具体例２に対応するヘッダオブジェクト解析部の内部を説明する図である。
【図１０】図９のヘッダオブジェクト解析部で管理されるユーザプリファレンス情報の一例を示す図である。
【図１１】第１の実施形態の具体例２のホスト機器で行われるプログラムコード決定処理の手順を示すフローチャートである。
【図１２】図１１のステップＳ１１５で行われるアップロード必須条件判定処理の詳細な手順を示すフローチャートである。
【図１３】第２の実施形態で用いられるヘッダオブジェクト及びプログラムコードの一例を示す図である。
【図１４】第２の実施形態のホスト機器で行われるプログラムコード決定処理の手順を示すフローチャートである。
【図１５】第２の実施形態に基づくアップロード処理の一例を説明する図である。
【図１６】第２の実施形態に基づくアップロード処理の他の一例を説明する図である。
【図１７】本発明の第３及び第４の実施形態に係る機器制御システムの構成を示すブロック図である。
【図１８】第３の実施形態のホスト機器で行われるプログラムコード決定処理の手順を示すフローチャートである。
【図１９】第４の実施形態のホスト機器で行われるプログラムコード決定処理の手順を示すフローチャートである。
【図２０】第４の実施形態に基づくアップロード処理の一例を説明する図である。
【図２１】第４の実施形態に基づくアップロード処理の他の一例を説明する図である。
【図２２】本発明の第５の実施形態に係る機器制御システムの構成を示すブロック図である。
【図２３】第５の実施形態で用いられるヘッダオブジェクト一例を示す図である。
【符号の説明】
１，４…ホスト機器
２，５…ターゲット機器
３…通信回線
１１，５２…ヘッダオブジェクト解析部
１２…ヘッダオブジェクトアップロード部
１３，４２…プログラムコードアップロード部
１４，２１…制御部
１５，２４…通信制御部
１６，５３…ＲＯＭ
１７，５４…ＲＡＭ
１８，５５…ＣＰＵ
２２…プログラムコード管理部
２３…プログラムコード格納部
４１…ヘッダオブジェクト格納部
５１…ヘッダオブジェクトダウンロード部
１０１，１０２…仮想マシン（実行環境）
１１１〜１１３…格納領域
２２１，４４１…ヘッダオブジェクト
２３１〜２３ｎ…プログラムコード
【図１】
2004005517.tif 000003
【図２】
2004005517.tif 000004
【図３】
2004005517.tif 000005
【図４】
2004005517.tif 000006
【図５】
2004005517.tif 000007
【図６】
2004005517.tif 000008
【図７】
2004005517.tif 000009
【図８】
2004005517.tif 000010
【図９】
2004005517.tif 000011
【図１０】
2004005517.tif 000012
【図１１】
2004005517.tif 000013
【図１２】
2004005517.tif 000014
【図１３】
2004005517.tif 000015
【図１４】
2004005517.tif 000016
【図１５】
2004005517.tif 000017
【図１６】
2004005517.tif 000018
【図１７】
2004005517.tif 000019
【図１８】
2004005517.tif 000020
【図１９】
2004005517.tif 000021
【図２０】
2004005517.tif 000022
【図２１】
2004005517.tif 000023
【図２２】
2004005517.tif 000024
【図２３】
2004005517.tif 000025