(57)【特許請求の範囲】
【請求項１】
ある動作主体とユーザとの間のユーザインタフェースを構成すべきユーザインタフェース要素を、ユーザとの間のインタラクションにおけるユーザインタフェース要素の機能をテキストベースで記述した論理ユーザインタフェース要素を用いて記述したユーザインタフェース記述文書を読込み分析する手段と、
読込まれた前記ユーザインタフェース記述文書を参照し、記述された論理ユーザインタフェース要素に対応する具象ユーザインタフェース要素を、前記論理ユーザインタフェース要素と前記具象ユーザインタフェース要素との対応関係が定義されたユーザインタフェース要素対応表を参照して決定し、決定された具象ユーザインタフェース要素を用いて動作主体とユーザとの間のユーザインタフェースを構成する手段と、
前記ユーザインタフェースに含まれる具象ユーザインタフェース要素に対するユーザの操作に応答して、予め定められた第１の様式の第１のメッセージを生成し前記動作主体に送信するための処理を行なう手段とを含み、
前記論理ユーザインタフェース要素は、それぞれが持つ機能の抽象度に従って階層化された分類階層ツリーを形成するように定義され、ある論理ユーザインタフェース要素に対応する具象ユーザインタフェース要素が存在しない場合は、前記分類階層ツリーにおいて、分類階層に応じて、前記ある論理ユーザインタフェース要素の上位の論理ユーザインタフェース要素、またはその上位の論理ユーザインタフェース要素から派生した下位の論理ユーザインタフェース要素であって、対応する具象ユーザインタフェース要素の存在する論理ユーザインタフェース要素を代替として用いる手段を含む、
ユーザに対してユーザインタフェースを提供する装置。
【請求項２】
前記論理ユーザインタフェース要素の機能に関して第１の属性が定義され、前記第１の属性は、前記分類階層ツリーにおいて前記ある論理ユーザインタフェース要素から派生する、より下位の論理ユーザインタフェース要素に継承される、請求項１に記載のユーザに対してユーザインタフェースを提供する装置。
【請求項３】
前記論理ユーザインタフェース要素が、前記論理ユーザインタフェース要素の機能とは独立な第２の属性を有する、請求項１または請求項２に記載のユーザに対してユーザインタフェースを提供する装置。
【請求項４】
各前記論理ユーザインタフェース要素に対しては、ユーザインタフェース記述文書において、前記第１のメッセージを所定の送信先に送信する権利であるメッセージ送信権を有するか他に委譲されているかが規定されており、
前記動作主体に送信するための処理を行なう前記手段は、
前記ユーザインタフェースに含まれる、前記論理ユーザインタフェース要素に対応する具象ユーザインタフェース要素に対するユーザの操作に応答して、前記第１のメッセージを生成する手段と、
前記論理ユーザインタフェース要素がメッセージ送信権を有するか否かを判定する手段と、
論理ユーザインタフェース要素がメッセージ送信権を有すると判定されたか否かにしたがって、前記第１のメッセージを前記所定の送信先に送信するか否かを決定する手段とを含む、請求項１に記載のユーザに対してユーザインタフェースを提供する装置。
【請求項５】
前記ユーザインタフェース記述文書において、ある論理ユーザインタフェース要素に関する属性が定義可能であり、前記属性は、当該論理ユーザインタフェース要素が有する値を、他の、値参照元の論理ユーザインタフェース要素に対して提供する値提供機能を有すること、および、他の、値参照先の論理ユーザインタフェース要素から提供される値に対して所定の値参照モデルを適用して自己の値を更新する値参照処理機能を有することの双方を含む、請求項１に記載のユーザに対してユーザインタフェースを提供する装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、コンピュータシステムにおいてユーザがアプリケーションプログラムを操作したり、または１つ以上の機器をユーザが制御したりする際のユーザインターフェイスの実現方法および実現システムに関する。特にこの発明は、アプリケーションプログラムまたは、機器のように実際の処理を行なう処理部分（動作主体）とユーザインターフェイスとを分離することが可能なユーザインターフェイスの実現方法およびそのシステムに関する。
【０００２】
【従来の技術】
近年のネットワーク技術の進歩により、ネットワーク接続された他のコンピュータ端末に保存されているデータを他の端末から参照したり操作したりすることは、当然の如く行なわれている。最近では、IEEE１３９４というバス接続インターフェイスなどを用いることにより、コンピュータだけでなく家庭用電化機器をネットワーク接続することも可能となっている。これにより、ユーザがリモートコントロールのような任意の操作機器を用いて、複数個の機器を自由に操作することが可能となる枠組が構築されつつある。
【０００３】
このようなネットワーク環境においては、どの機器においても、その機器の制御プログラムまたはアプリケーションプログラムが、ユーザインターフェイス（以下「ＵＩ」と呼ぶ。）を提供することが可能な任意の機器を用いて操作することができるようにしておく必要がある。このような課題は、コンピュータシステムの分野では、プログラム本体とＵＩとを分離することによって達成される。
【０００４】
従来から提案されている方法のうちの代表的なものとして、すべてのプログラムを同一のプログラミングパラダイムを用いて統一して作成する方法が挙げられる。たとえばUNIXシステムにおけるX Windowシステムのようなクライアント／サーバモデルは、プログラム本体の実行プロセスと、ＵＩを提供するウィンドウマネージャのプロセスとを分離して管理することができる枠組である。この枠組により、プログラム本体が動作している機器と、ＵＩを提供する機器とが互いに異なっていてもそのプログラムは適正に動作する。
【０００５】
プログラミング言語Javaを用いる場合、すべての機器がJavaの実行環境を搭載していさえすれば、任意の機器が別の機器のプログラムまたはその一部をダウンロードして実行することができる。Java言語ではさらに、ＧＵＩ（Graphical User Interface）プログラミングに関して、MVCパラダイムを採用している。MVCパラダイムとは、プログラミング言語Smalltalk-８０で最初に採用されたパラダイムであり、プログラムを、データとその処理手続とからなるモデル（Ｍ）、データをユーザに提示するビュー（Ｖ）、およびデータを操作するユーザ入力を受付けるコントローラ（Ｃ）の３つを用いて構成する。MVCパラダイムにより、ユーザが直接接するビューおよびコントローラからなる狭義のＵＩと、プログラムに固有のモデルとを分離して表現することができる。
【０００６】
一方で、特開平５−２７９５９号公報は、複数のプログラムが異なるＧＵＩツールキットを使用していてもその違いを吸収することができる方法を提案している。この公報に開示された技術では、複数のＧＵＩツールキットで定義されているＧＵＩ部品に関して共通部品という概念を適用し、個々のＧＵＩ部品と共通部品との対応表を作成する。この対応表により、ＵＩを提供すべき機器が特定のＧＵＩツールキットでしかＵＩを提供できなかったとしても、対応表を用いてＧＵＩ部品（ツールキット）を変換すれば、任意のプログラムで使用されるＵＩをユーザに提供することができる。
【０００７】
また、HTML（Hyper Text Markup Language）とCGI（Common Gatewey Interface）とを用いてプログラム本体とＵＩとを分離して記述する方法もある。この方法は、WWW（World-Wide Web）で一般的に行なわれる方法であって、CGIプログラムと呼ばれるプログラム本体と、HTMLで記述されたＵＩとをサーバ機器に格納しておく。ユーザは、任意のインターネットブラウザを用いてそのHTMLファイルをダウンロードすればＵＩを得ることができる。そしてそのＵＩを通じてCGIプログラムを制御することができる。
【０００８】
この方法の最大のメリットは、HTMLで定義されている汎用的で論理的なＧＵＩ部品を利用することにより、あらゆるインターネットブラウザでＵＩを提供することができる点にある。
【０００９】
【発明が解決しようとする課題】
すべてのプログラムを同一のプログラミングパラダイムで統一して作成する方法によれば、そのプログラミングパラダイムによって閉じた世界のうちでは、プログラム本体とＵＩとを分離することが可能である。しかし、今後の家庭内ネットワークが１つのプログラミングパラダイムのみによって開発される保証はない。また、コンピュータシステムの発展の歴史から見ても、あるプログラミングパラダイムが永久的に使用される可能性は非常に低いことがわかる。
【００１０】
特開平５−２７９５９号公報に記載された技術では、異なるプログラミングパラダイムでの横断的な適用が可能であるとされている。しかしプログラミングパラダイムが異なると、プログラム本体とＵＩとの通信インターフェイスも異なるため、この技術の実現にはかなりの困難が予想される。したがってこの公報に記載された技術を容易に適用できる場合としては、あるそのシステムがある特定のプログラミングパラダイム、特にX Windowシステムに閉じている場合のみであると考えられる。
【００１１】
HTMLとCGIとを用いる技術では、ある程度汎用的で論理的なＧＵＩ部品を定義しているということができる。しかしHTMLの本質は文書のレイアウトを行なうために文書をマークアップすることであり、そこに提供されたＧＵＩ部品は付加的なものにしかすぎない。したがって個別のＧＵＩ部品の機能、および役割については系統的に定義されているわけではない。また任意のブラウザによって同じレイアウトで文書が見えるようにするというHTMLの性質上、この方法で使用されるＧＵＩ部品は記述者が任意に拡張することのできない静的なものにしかすぎない。
【００１２】
したがって本発明の目的は、アプリケーションプログラムまたは制御プログラムなどの動作主体がどのようなプログラミング言語で実現されているかにかかわらず、共通のユーザインタフェースを提供することができるようなユーザインタフェース実現方法を提供することである。
【００１３】
【課題を解決するための手段】
請求項１に記載の発明にかかるはユーザに対してユーザインタフェースを提供する装置は、ある動作主体とユーザとの間のユーザインタフェースを構成すべきユーザインタフェース要素を、ユーザとの間のインタラクションにおけるユーザインタフェース要素の機能をテキストベースで記述した論理ユーザインタフェース要素を用いて記述したユーザインタフェース記述文書を読込み分析する手段と、読込まれたユーザインタフェース記述文書を参照し、記述された論理ユーザインタフェース要素に対応する具象ユーザインタフェース要素を、論理ユーザインタフェース要素と具象ユーザインタフェース要素との対応関係が定義されたユーザインタフェース要素対応表を参照して決定し、決定された具象ユーザインタフェース要素を用いて動作主体とユーザとの間のユーザインタフェースを構成する手段と、ユーザインタフェースに含まれる具象ユーザインタフェース要素に対するユーザの操作に応答して、予め定められた第１の様式の第１のメッセージを生成し動作主体に送信するための処理を行なう手段とを含み、論理ユーザインタフェース要素は、それぞれが持つ機能の抽象度に従って階層化された分類階層ツリーを形成するように定義され、ある論理ユーザインタフェース要素に対応する具象ユーザインタフェース要素が存在しない場合は、分類階層ツリーにおいて、分類階層に応じて、ある論理ユーザインタフェース要素の上位の論理ユーザインタフェース要素、またはその上位の論理ユーザインタフェース要素から派生した下位の論理ユーザインタフェース要素であって、対応する具象ユーザインタフェース要素の存在する論理ユーザインタフェース要素を代替として用いる手段とを含む。
【００１４】
ユーザインタフェース記述文書に論理ユーザインタフェース要素を記述しておき、それを読込むことにより、その記述にしたがってユーザインタフェースを構成でき、ユーザの指示を動作主体に送信することができる。動作主体とユーザインタフェース記述文書とが別々であり、かつユーザインタフェース要素が、ユーザとの間のインタラクションにおけるユーザインタフェース要素の機能を抽象化した論理ユーザインタフェース要素を用いて記述されているので、ユーザインタフェースが実現される機器が相違していても、また動作主体がプログラムである場合に使用されるプログラミング言語が相違していても使用できる、汎用的なユーザインタフェースを提供することができる。
それぞれが持つ機能の抽象度に従って分類階層ツリーを形成するように論理ユーザインタフェース要素が定義されるので、ある論理ユーザインタフェース要素の上位の論理ユーザインタフェース要素、またはその上位の論理ユーザインタフェース要素から派生した下位の論理ユーザインタフェース要素は、ともに類似した機能を実現することができると考えられる。そのため、ある論理ユーザインタフェース要素に対応する具象ユーザインタフェース要素が存在しない場合は、分類階層ツリーにおいて、分類階層に応じて、ある論理ユーザインタフェース要素の上位の論理ユーザインタフェース要素、またはその上位の論理ユーザインタフェース要素から派生した下位の論理ユーザインタフェース要素であって、対応する具象ユーザインタフェース要素の存在する論理ユーザインタフェース要素を代替として利用することにより、ほぼ同様の機能を持つユーザインタフェースをユーザに対し提供することができる。
【００２８】
請求項２に記載の発明にかかるユーザに対してユーザインタフェースを提供する装置は、請求項１に記載の発明の構成に加え、ある論理ユーザインタフェース要素の機能に関して第１の属性が定義され、第１の属性は、分類階層ツリーにおいてある論理ユーザインタフェース要素から派生する、より下位の論理ユーザインタフェース要素に継承される。
【００２９】
第１の属性が、それより下位の論理ユーザインタフェース要素にも継承されるので、分類階層ツリー上での各論理ユーザインタフェース要素の類似関係が保たれるとともに、ユーザインタフェース記述文書の記述も容易となる。
【００３１】
請求項３に記載の発明にかかるユーザに対してユーザインタフェースを提供する装置は、請求項１または請求項２に記載の発明の構成に加え、論理ユーザインタフェース要素が、論理ユーザインタフェース要素の機能とは独立な第２の属性を有する。
【００３２】
論理ユーザインタフェース要素の機能とは独立な第２の属性を各論理ユーザインタフェース要素に与えることができるので、各論理ユーザインタフェース要素に対応する具象ユーザインタフェース要素の形状、色など、その機能とは直接関係のない性質をユーザインタフェース記述文書における記述によって制御できる。
【００６１】
請求項４に記載の発明にかかるユーザに対してユーザインタフェースを提供する装置は、請求項１に記載の発明の構成に加え、各論理ユーザインタフェース要素に対しては、ユーザインタフェース記述文書において、第１のメッセージを所定の送信先に送信する権利であるメッセージ送信権を有するか他に委譲されているかが規定されており、動作主体に送信するための処理を行なう手段は、ユーザインタフェースに含まれる、論理ユーザインタフェース要素に対応する具象ユーザインタフェース要素に対するユーザの操作に応答して、第１のメッセージを生成する手段と、論理ユーザインタフェース要素がメッセージ送信権を有するか否かを判定する手段と、論理ユーザインタフェース要素がメッセージ送信権を有すると判定されたか否かにしたがって、第１のメッセージを所定の送信先に送信するか否かを決定する手段とを含む。
【００６２】
ある論理ユーザインタフェース要素に対応する具象ユーザインタフェース要素に対してユーザが操作をし、その結果論理ユーザインタフェース要素の値が変化したりした場合であっても、その都度動作主体にその変化を示すメッセージを送信する必要のないこともある。たとえば、他の論理ユーザインタフェース要素の値が変化したりしたときに、同時に送信すればよい。そのようなときに、上記したメッセージ送信権を他の論理ユーザインタフェース要素に予め委譲しておくことにより、その他の論理ユーザインタフェース要素がメッセージを送信するときにあわせて自己の値の変化などについての情報も送信されるようにできる。その結果、メッセージ交信のトラフィックが削減できる。
【００７４】
請求項５に記載の発明にかかるユーザに対してユーザインタフェースを提供する装置は、ユーザインタフェース記述文書において、ある論理ユーザインタフェース要素に関する属性が定義可能であり、属性は、当該論理ユーザインタフェース要素が有する値を、他の、値参照元の論理ユーザインタフェース要素に対して提供する値提供機能を有すること、および、他の、値参照先の論理ユーザインタフェース要素から提供される値に対して所定の値参照モデルを適用して自己の値を更新する値参照処理機能を有することの双方を含む。
【００７５】
値参照機能により、動作主体で実現する機能に直接関係しないユーザの操作をユーザインタフェースを提供する機器の内部のみで処理することができる。動作主体に対してメッセージを送信する必要がないので、メッセージ交信のトラフィックを削減できる。また、複数個の論理ユーザインタフェース要素での値の変更を一つの論理ユーザインタフェース要素の値に集中させることができる。
【００９８】
【発明の実施の形態】
［基本的概念］
この発明は、アプリケーションプログラムからＵＩを分離することにより、アプリケーションプログラムのＵＩを任意の機器で実現しユーザに提供することができる方法およびシステムに関する。そこでまず、本発明の実施の形態１におけるアプリケーションプログラムからのＵＩの分離について述べ、さらに本実施の形態で使用されるＵＩの構成要素とそれを用いたＵＩの記述とについて述べる。
【００９９】
図１を参照して、この発明の実施の形態１に係るシステムは、アプリケーション１１００とＵＩを実現するＵＩ装置１２００とを含む。アプリケーション１１００とＵＩ装置１２００とは別の装置の中に存在することが一般的である。
【０１００】
さらに第１図を参照して、アプリケーション１１００はアプリケーションプログラム１１０１とアプリケーションプログラム本体１１０１が使用するＵＩを記述したＵＩ記述文書１１０２とを含む。すなわちアプリケーション１１００はアプリケーションプログラム本体１１０１とそのＵＩを記述したＵＩ記述文書１１０２とに分離されている。
【０１０１】
一方ＵＩ装置１２００はＵＩ実現プログラム１２０１を含む。このＵＩ実現プログラム１２００は、アプリケーション１１００中のＵＩ記述文書１１０２を読込み、そこに提示されたＵＩを後述する方法により実現しユーザに提供する。そしてＵＩ実現プログラム１２０１は、このＵＩを用い、さらにアプリケーションプログラム本体１１０１との間でメッセージ交信をすることによって、ユーザの指示をアプリケーションプログラム本体１１０１に伝えたり、アプリケーションプログラム本体１１０１の状態、それからの指示などをＵＩ実現プログラム１２０１によるＵＩに反映したりすることができる。
【０１０２】
図３にＵＩ記述文書１１０２の一例を示す。図３を参照してＵＩ記述文書１１０２には、ＵＩを構成する構成要素に関する情報がこの実施の形態１ではテキストベースで記述されている。テキストベースで記述することにより、人間にとっての可読性が高まり、作成、保守などが容易となる効果がある。ただしこのＵＩ記述文書１１０２は必ずしもテキストベースでなくともよく、機械可読で解析可能な形式であればよい。
【０１０３】
ＵＩ記述文書１１０２に記述される構成要素は、特定のＵＩ装置１２００またはＵＩ実現プログラム１２０１によってユーザに提供される具体的な構成要素ではなく、ユーザとの間のインタラクションにおける各ＵＩ要素の機能を抽象化することにより汎用的で論理的な体系によって定義された構成要素である。本発明では、このような構成要素を論理ＵＩ要素と呼ぶ。一方、個別の具体的なＵＩ装置１２００またはＵＩ実現プログラム１２０１が持つ具体的なＵＩの構成要素を具象ＵＩ要素と呼ぶこととする。
【０１０４】
図３に示すＵＩ記述文書の記載内容については後述する。
再び図１を参照して、ＵＩ実現プログラム１２０１は、読込んだＵＩ記述文書１１０２に記述された論理ＵＩ要素の情報をもとに、個々の論理ＵＩ要素のイメージを生成する。そしてＵＩ実現プログラム１２０１は、個々の論理ＵＩ要素のイメージに対して適切な具象ＵＩ要素を割当てることによりＵＩを実現する。ここでイメージとは、個々の論理ＵＩ要素に関するＵＩ実現プログラム１２０１内での管理単位であり、オブジェクト指向プログラミングでプログラムする場合は、１つのオブジェクトとして実現されることが望ましい。
【０１０５】
上述したように論理ＵＩ要素は、考えられるすべてのＵＩ要素を抽象化することで、汎用的に定義した論理的なＵＩ要素である。本実施の形態では、ユーザがＵＩ要素に対して行なうインタラクション、すなわちＵＩ要素が提供するインタラクション機能に注目し、そのインタラクション機能に基づいた分類階層ツリーを生成し各分類階層ツリーの各ノードに対応させて論理ＵＩ要素を定義した。図２に、論理ＵＩ要素の分類階層ツリーの一例を示す。図２に示す分類階層ツリーでは上位の階層にある論理ＵＩ要素ほどその抽象度は高く、階層が低くなるほどその抽象度は低くなる。もっとも上位のノードをここではルートと呼ぶこととする。
【０１０６】
以下、代表的な論理ＵＩ要素であるentry、valuator、choice、outputCompおよびcontainerCompについて述べる。
【０１０７】
（entry）
entryは任意の文字列を入力するためのＵＩ要素である。entryから派生した抽象度のより低い論理ＵＩ要素は図２に示すようにtextFieldおよびtextAriaを含む。textFieldはＧＵＩにおいてファイル名などの登録など、比較的短い文字列の入力に用いられるＵＩ要素を総称する論理ＵＩ要素である。textAreaは、数行以上にわたる文字列を入力するためのＵＩ要素を総称する論理ＵＩ要素である。
【０１０８】
（valuator）
valuatorは任意の連続量を設定するためのＵＩ要素である。valuatorから派生する、valuatorより抽象度の低い論理ＵＩ要素はslider、dialを含む。sliderはＧＵＩにおいて用いられるスライダ、AV（Audio Visual）機器に用いられるスライド型可変抵抗器などを総称する論理ＵＩ要素である。dialはダイヤル型可変抵抗器などを総称する論理ＵＩ要素である。
【０１０９】
（choice）
choiceは選択操作のためのＵＩ要素である。choiceから派生する論理ＵＩ要素は、その選択操作の種類により分類されるunaryChoice、multiChoice、exChoiceに分類される。unaryChoiceはある項目が選択された事実だけをアプリケーションプログラムに伝えるもの、multiChoiceは複数の選択肢の中から任意の複数項目を選択することができるもの、そしてexChoiceは複数の選択肢の中から１つの項目だけを選択することができるものである。上述したchoice系の３つの論理ＵＩ要素はさらに図２に示されるように、それぞれさらにいくつかの論理ＵＩ要素に細分化される。
【０１１０】
(outputComp)
outputCompは、情報の出力専用に用いられるＵＩ要素であり、連続量を出力するMeter、任意の文字列を出力するtextなどをその下位要素として含む。図2には示していないが、任意のグラフィックス、映像、または音声を提示するＵＩ要素もoutputCompの下位要素として定義される。
【０１１１】
（containerComp）
containercompは、ＵＩ記述文書内で他の論理ＵＩ要素を１つのグループとしてまとめるための論理ＵＩ要素である。このような論理ＵＩ要素を以下コンテナ型論理ＵＩ要素と呼ぶ。論理ＵＩ要素を機能単位でまとめて扱いたい場合にこのコンテナ型論理ＵＩ要素を使用すると便利である。コンテナ型論理ＵＩ要素はコンテナ型論理ＵＩ要素をもその要素として含むことができる。すなわちコンテナ型論理ＵＩ要素は入れ子型のＵＩを構成することができる。
【０１１２】
以上説明したように、図２に示すような論理ＵＩ要素を用いて図１に示すＵＩ記述文書１１０２が記述される。ＵＩ実現プログラム１２０１は、読込まれたＵＩ記述文書１１０２内に記述された論理ＵＩ要素の各々に対し具象ＵＩ要素を対応付けることにより、ユーザに対して提供するＵＩを実現する。たとえば図２に示すsliderは、ＧＵＩにおいて一般的に使用されるスライダ、およびAV機器などに用いられるスライド式の可変抵抗器に対応付けられる。またexChoiceから派生したradioButtonは、ＧＵＩのラジオボタン、およびカーラジオで用いられているようなハードウェアのラジオボタンに対応付けられる。
【０１１３】
また、図２に示される分類階層のうち、中間ノードの論理ＵＩ要素に対しても任意の具象ＵＩ要素を対応付けることが可能である。分類階層ツリーの各階層は論理ＵＩ要素のインタラクション機能に関する抽象度を表わしているので、任意の中間ノードの論理ＵＩ要素は、分類階層においてより下位の、その中間ノードの論理ＵＩから派生した論理ＵＩ要素のうちのいずれかに対応付けられている具象ＵＩ要素によって具象化することができる。
【０１１４】
以上のような分類階層を体系的に定義しておき、上記したルールに従ってＵＩを実現することにより、アプリケーションが提供するＵＩの実現可能性を保証する。すなわち、図１に示されるＵＩ装置１２００またはＵＩ実現プログラム１２０１において、何らかの理由によりＵＩ記述文書１１０２により指定された論理ＵＩ要素を実現することができない場合であっても、分類階層に応じてさらにその上位の論理ＵＩ要素であって実現可能なもの、またはその上位論理ＵＩ要素から派生したより下位の別の論理ＵＩ要素であって実現可能なものを代替論理ＵＩ要素として用いればよい。こうして定められた代替論理ＵＩ要素は、ＵＩ記述文書１１０２に記述されていた本来の論理ＵＩ要素と多少の機能的な相違を有するもののそれほど大きな機能上の違いはない。その結果、代替論理ＵＩ要素を使用すれば、ＵＩ装置１２００において使用できるＵＩ要素の制約の下で、アプリケーション１１００の作成者の意図を最大限に反映したＵＩを提供することができる。
【０１１５】
また上記したような分類階層の性質は、図２に示されるような分類階層によって表現される論理ＵＩ要素体系の拡張性を高める。上述したように、論理ＵＩ要素は、分類階層ツリー内で定義されている限りその実現可能性が限定付きではあるが保証されるので、新規の論理ＵＩ要素を分類階層内でそのインタラクション機能に基づいて定義することにより論理ＵＩ要素体系を容易に拡張することができる。
【０１１６】
［値と値候補］
論理ＵＩ要素は、その論理ＵＩ要素の状態を表わす１以上の「値」を持つことができる。論理ＵＩ要素がインタラクション機能に基づいて定義されるため、その値は、対応する具象ＵＩ要素を通じて行なわれたユーザとのインタラクションに基づいて決定される。したがって値の更新方法は論理ＵＩ要素の種類（定義）に依存する。たとえば、論理ＵＩ要素が出力専用の論理ＵＩ要素であれば、その値は現在その論理ＵＩ要素がユーザに提示している情報を表わす。論理ＵＩ要素がユーザ入力を受付けるものであればその値はユーザが入力した内容に関する情報を表わす。
【０１１７】
また、論理ＵＩ要素はその論理ＵＩ要素の初期値としての値を持つことができる。さらに論理ＵＩ要素は、選択肢としても用いられる値候補を持つことができる。値の更新方法が論理ＵＩ要素の種類によって異なるため、値候補の使用方法の詳細も論理ＵＩ要素の種類によって異なる。たとえば、図２において示される出力専用の論理ＵＩ要素であるoutputComp以下の論理ＵＩ要素においては、その値または値候補はこの論理ＵＩ要素が出力しユーザに提示するデータを表わす。また図２に示されるテキスト入力用論理ＵＩ要素であるentry以下の論理ＵＩ要素では、その値は初期値として使用される。また選択操作用論理ＵＩ要素choice以下の論理ＵＩ要素では、その値はその選択項目として使用される。すなわち、値候補は論理ＵＩ要素の内部で任意のタイミングで選択的に用いられる値である。
【０１１８】
値候補または値が、「値そのもの」のほかに、他の「名前」を持っていることが望ましい。たとえば、値そのものが長い文字列である場合、その値を端的に表わすシンボルとして名前を取扱うと便利である。さらに、異なる論理ＵＩ要素に含まれる異なる値に同じ名前を付けた場合に、それら同じ名前を有する値の相互の間にある関係を定義することもできる。
【０１１９】
［機能に関する属性］
論理ＵＩ要素は、そのインタラクション機能に関する機能属性を持っている。機能属性はＵＩ記述文書の記述者がオプショナルに指定することができる属性である。ある論理ＵＩ要素において定義された機能属性は、分類階層においてその論理ＵＩ要素から派生する下位の論理ＵＩ要素にも継承される。たとえば、図２に示される連続値入力用論理ＵＩ要素valuatorは、設定できる値に関して上限値と下限値という機能属性とともに定義される。そしてこれらの機能属性はこのvaluatorから派生するより下位の論理ＵＩ要素であるsliderおよびdialにも継承される。
【０１２０】
また、分類階層と機能属性とはともにインタラクション機能に基づいて定義されたものである。したがって、ある論理ＵＩ要素の定義において、より上位の論理ＵＩ要素から継承した機能属性が任意の属性値に固定されることもあり得る。その場合には、ＵＩ記述文書の作成者はその機能属性の変更をすることができない。
【０１２１】
［付加属性］
本実施の形態では、論理ＵＩ要素には直接的に関係のない付加的な属性も用意している。この付加的な属性は、主に論理ＵＩ要素と対応付けられる具象ＵＩ要素に直接与える属性を定義するためのものである。ＧＵＩを用いた具象ＵＩ要素であれば、属性によって具象ＵＩ要素の色、形などのレンダリングに関する情報を与えることができる。以下、このような属性を付加属性と呼ぶこととする。
【０１２２】
［ＵＩ記述文書とＵＩ記述文書定義情報］
ＵＩ記述文書１１０２（図１および図３参照）は、上述したような性質を持つ論理ＵＩ要素に関する情報を記述した文書である。ＵＩ記述文書内に記述される情報は、各論理ＵＩ要素ごとに、その種類を表わす名義と、そのＵＩ記述文書内で固有の識別子とを含む。さらにこの記述情報は、論理ＵＩ要素の種類により必要な値候補および機能属性に関する情報についての記述を含む。さらに、必要に応じて論理ＵＩ要素の付加属性が記述される。
【０１２３】
ＵＩ記述文書のための記述様式はどのようなものでもよい。しかし、本実施の形態では、図３に示されるように汎用のマークアップ言語であるＸＭＬ（Xtensible Markup Language）を用いる。ＸＭＬはタグ付き文書の文法を定めた規格である。ＸＭＬにより規定される文書は、以下に示す要素の集合（入れ子構造）により構成される。
【０１２４】
要素記述１：＜要素名  属性指定＞内容＜／要素名＞
要素記述２：＜要素名  属性指定／＞
要素記述１は一般的な記述である。この要素記述１のうち最初の＜＞で囲まれた内容が開始タグであり、２番目の＜＞で囲まれた部分が終了タグである。この開始タグと終了タグとで囲まれた内容に対して、開始タグおよび終了タグ中に記載された要素名と属性指定とによって意味を付加する。なお要素記述１において、内容の中に別の要素記述が含まれていてもよい。これにより複数要素の入れ子構造を作ることができる。
【０１２５】
要素記述２は要素記述１と比較すると内容に関する指定のない記述方式である。
【０１２６】
本実施の形態では、論理ＵＩ要素の名義を要素名とし、論理ＵＩ要素の識別子と機能属性とを属性指定で指定することとする。また本実施の形態では、値候補と付加属性とのためにそれぞれvalueとpropertyという要素を定義する。そしてそれらの名前を属性指定により記述し、値または属性値を内容として記述する。ＵＩ記述文書の中でvalueとpropertyとは、論理ＵＩ要素の内容として記述される。さらに、コンテナ型論理ＵＩ要素に関しては、panelという要素名で、任意の１以上の論理ＵＩ要素をpanelの内容に記述することによって、コンテナ型論理ＵＩ要素の特徴である論理ＵＩ要素の入れ子構造を表現できるようにして定義する。
【０１２７】
本実施の形態では、以上のような記述様式の定義情報をＵＩ記述文書１１０２に関する文書定義情報に記述しておく。ＸＭＬの場合、文書の記述様式に関する定義情報はＤＴＤ（Document Type Definition）と呼ばれる記述部分に記述されるので、本実施の形態においてもＸＭＬのＤＴＤにＵＩ記述文書の定義情報を記述することとする。
【０１２８】
図１を参照して、ＵＩ実現プログラム１２０１は、ＵＩ記述文書１１０２を読取り、ＵＩ記述文書１１０２に含まれるＵＩ記述文書定義情報を参照して、読取ったＵＩ記述文書１１０２がこの定義情報に照らして正しく記述されているか否かを検証する。正しく記述されている場合にはＵＩ実現プログラム１２０１は各論理ＵＩ要素のイメージを生成する。論理ＵＩ要素のイメージは、上述した論理ＵＩ要素に関する情報のほか、その論理ＵＩ要素の値をも含んでいる。
【０１２９】
図３を参照して、図１に示すＵＩ記述文書１１０２の一例を示す。このＵＩ記述文書１１０２を図１に示すＵＩ実現プログラム１２０１で読取って実現したＵＩの一例を図２０に示す。
【０１３０】
図３を参照して、ＵＩ記述文書１１０２は、ＤＶＤ（Digital Video Disc）プレーヤーを使ってＤＶＤソフトウェアをテレビジョン受像機で見るときのものである。ＵＩ記述文書１１０２は、全体パネル記述３０００というコンテナ型論理ＵＩ要素を採用した論理ＵＩ要素の入れ子構造によって表現されている。全体パネル記述３０００は、ＤＶＤプレーヤーまたはテレビの状態を表示するstateパネル記述３１００と、ＤＶＤプレーヤー制御パネル記述３２００と、テレビジョン制御パネル記述３３００とを含む。これらはそれぞれ図２０に示すstateパネル２０１００、ＤＶＤ制御パネル２０２００、テレビ制御パネル２０３００に対応している。
【０１３１】
図３に示すＤＶＤプレーヤー制御パネル記述３２００は、ＤＶＤのコンテンツを選択するコンテンツ選択パネル記述３２１０と、ＤＶＤの再生等を制御するコントローラパネル記述３２２０という２つのコンテナ型論理ＵＩ要素を含む。これらはそれぞれ図２０に示すコンテンツ選択パネル２０２１０、およびコントローラパネル２０２２０に対応する。
【０１３２】
図３に示すテレビ制御パネル記述３３００はテレビの音量を操作する音量制御パネル記述３３１０を含む。この記述は図２０に示す音量制御パネル２０３１０に対応する。
【０１３３】
図３を参照して、各ＵＩ要素のname属性はその論理ＵＩ要素の識別子である。要素が付加属性の場合には、そのname属性は付加属性の属性名である。そして要素が値候補の場合には、name属性はその値に付与される名前である。要素が値候補の場合にはname属性は必ずしも必要ではない。論理ＵＩ要素の機能属性は、必要に応じて、各要素の属性指定に応じて、機能属性による属性値を与える様式で記述される。
【０１３４】
図３に示されるＵＩ記述文書１１０２で使用されている論理ＵＩ要素、値候補および付加属性について以下に説明する。
【０１３５】
図３で使用されている論理ＵＩ要素は、任意の文字列を出力するだけの文字出力要素label、リストの中から任意の複数項目を選択することができるリスト選択要素list、１行のテキストを入力するためのテキスト入力要素textField、ボタン型の選択入力を可能とするボタン要素button、および連続量の入力をするためのスライダ要素sliderの５種類である。以下それぞれについて説明する。
【０１３６】
（文字出力要素label）
文字出力要素labelは、自らの値候補を出力する要素である。この部分は図３の記述３１００の３行目、６行目および９行目に存在する。これに対応する図２０の表示画面を生成するＵＩ装置１２００では、各要素の識別子（“ＤＶＤState”，“Contents”，“TVVolume”）を出力するようにしている。
【０１３７】
（リスト選択要素list）
リスト選択要素listは、ユーザに自らの値候補を選択肢として与え、その中から複数選択を許す要素である。図３に示すコンテンツ選択パネル記述３２１０は、６つの値候補を持つリスト選択要素listを記述している。このコンテンツ選択パネル記述３２１０の３行目に、要素の属性指定に関しdispLineという機能属性に関する記述が存在する。この機能属性は、一度にユーザに提示される値候補の数を指定するための属性である。記述３２１０ではこれに４という値が定義されている。この数以上の値候補がある場合には、図２０の表示２００１０に“contentsList”という識別子で表わされているように、スクロールバー等を用いてそのリストを提示するようにする。
【０１３８】
（テキスト入力要素textField）
textFieldは１行のテキスト入力のための要素である。図３に示すコンテンツ選択パネル３２１０は、値候補を持たないテキスト入力要素textFieldを記述している。textFieldが値候補を持つ場合には、その値候補が初期値としてユーザに提示される。図２０に示すコンテンツ選択パネル２０２１０に含まれるtextFieldは、既にユーザ入力が行なわれているときの表示例を示す。
【０１３９】
図３に示すコンテンツ選択パネル記述３２１０は、３つの機能属性に関する情報を記述している。そのうち、columns属性は、textField内に入力できる文字数を指定する。
【０１４０】
（ボタン要素button）
ボタン要素buttonは、ユーザによる所定の操作があったときに、その事実だけを外部に伝えるための要素である。したがってボタン要素buttonは値候補を持たなくても構わない。図３に示されるすべてのボタンは値候補を有していない。図２０に示す各ボタンは、ボタン要素buttonの識別子とともに表示されている。しかしボタン要素が値候補を持つ場合には、ボタン要素buttonの識別子ではなく値候補の値そのものとともにボタンを表示するようにしてもよい。
【０１４１】
（スライダ要素slider）
スライダ要素sliderは連続量入力のための要素である。この場合スライダ要素sliderの値候補は、その初期値として用いられる。図３に示す音量制御パネル３３１０に含まれるスライダ要素sliderは、upper属性およびlower属性という２つの機能属性に関する情報を記述する。これらの機能属性は、指定できる連続量の上限と下限とを指定するものである。これらの機能属性はまた、図２に示される分類階層中においてスライダ要素sliderの上位要素である論理ＵＩ要素valuatorから継承したものである。また図３に示す音量制御パネル３３１０に含まれるスライダ要素sliderの値候補はそれぞれ名前を持っている。スライダ要素sliderに限らず、すべての論理ＵＩ要素の値候補に対し、それに付される名前は付加的な情報である。これらの名前は、アプリケーションプログラム本体が値候補を変更するような場合に、変更対象の値候補を特定するために使用される。値候補の更新については後述する。
【０１４２】
図３において使用されている付加属性は、color属性、flowOrientation属性およびvisible属性の３種類である。
【０１４３】
color属性は、論理ＵＩ要素と対応付けられた具象ＵＩ要素の値を指定するものである。color属性の属性値は、「♯」の後に、RBGのそれぞれの値についてのそれぞれ２桁の１６進数（計６桁）を列挙することにより表現される。
【０１４４】
flowOrientation属性は、論理ＵＩ要素に対応付けられた具象ＵＩ要素の表示上の配列方法に関する付加属性である。flowOrientation属性はコンテナ型論理ＵＩ要素の付加属性として指定される。あるコンテナ型論理ＵＩ要素でこのflowOrientation属性を指定すると、そのコンテナ型論理ＵＩ要素に含まれる論理ＵＩ要素はflowOrientation属性の指定に従って配列される。図３においては記述３０００、３２００、３２１０、３３００および３３１０においてflowOrientation属性としてvertical（縦方向）が指定されている。他の記述３１００、３２２０および３３１１においてはhorizontal（横方向）が指定されている。
【０１４５】
visible属性は、論理ＵＩ要素に対応付けられた具象ＵＩ要素をユーザに提示するか否か（表示するか否か）に関する情報を与える。visible属性の属性値が「true」であればその具象ＵＩ要素は提示され、「false」である場合には提示されない。
【０１４６】
（メッセージ交信）
図１に示すように、ＵＩ実現プログラム１２０１はアプリケーションプログラム本体１１０１とメッセージの交換を行なう。以下、ＵＩ実現プログラム１２０１からアプリケーションプログラム１１０１に送信されるメッセージを「上方メッセージ」と呼び、アプリケーションプログラム本体１１０１からＵＩ実現プログラム１２０１に送信されるメッセージを「下方メッセージ」と呼ぶ。
【０１４７】
上方メッセージは、具象ＵＩ要素を通じてユーザの行なった操作、すなわち論理ＵＩ要素の状態をアプリケーションプログラム本体１１０１に通知するためのメッセージである。アプリケーションプログラム本体１１０１は、この上方メッセージを受信すると、その上方メッセージに対応する処理を実行する。ＵＩ実現プログラム内で論理ＵＩ要素はその状態を表わす値を持つ。上方メッセージは、任意の論理ＵＩ要素の識別子と、その論理ＵＩ要素の状態を表わす値とからなる。上方メッセージは任意のタイミングで生成され、アプリケーションプログラム本体１１０１に送信される。ただし、上方メッセージは、対応の論理ＵＩ要素の値が更新されたタイミング、すなわち対応する具象ＵＩ要素に対してユーザが入力操作を行なったタイミングで生成され送信されることが望ましい。
【０１４８】
下方メッセージは、ＵＩ実現プログラム１２０１が、任意の論理ＵＩ要素に関する情報または状態を更新するために使用するメッセージである。下方メッセージは、更新しようとする論理ＵＩ要素の値、値候補、機能属性、または付加属性を更新するものである。したがって下方メッセージは、その変更のタイプにより異なる構成を有する。以下それぞれのタイプに必要な情報について説明する。
【０１４９】
（値の更新）
対象となる論理ＵＩ要素の識別子と、その論理ＵＩ要素が持つべき値、またはその論理ＵＩ要素が持つ任意の値候補の名前とからなる。前者の場合、このＵＩ実現プログラム１２０１は、該当する論理ＵＩ要素の値をメッセージで指定された値に変更する。後者の場合にはＵＩ実現プログラム１２０１は、メッセージで指定された名前を持つ値候補をその論理ＵＩ要素の値とする。
【０１５０】
（値候補の更新）
論理ＵＩ要素の値候補の更新に関するメッセージには３種類がある。第１のタイプ（値候補更新１）は、任意の論理ＵＩ要素に関する任意の値候補の値そのものを変更するタイプである。第２のタイプ（値候補更新２）は、任意の論理ＵＩ要素に関して任意の値候補を削除するタイプである。第３のタイプ（値候補更新３）は、任意の論理ＵＩ要素に対して新たな値候補を追加するタイプである。これらのメッセージ内に含まれる種別で区別される。
【０１５１】
値候補更新１は、対象となる論理ＵＩ要素の識別子と、変更の対象となる値候補の名前と、変更後の値とを含む。ＵＩ実現プログラム１２０１は、このメッセージを受取ると、指定された論理ＵＩ要素の、メッセージにより指定された値候補を、メッセージに含まれる値に変更する。
【０１５２】
値候補更新２に関するメッセージは、対象となる論理ＵＩ要素の識別子と、削除の対象となる値候補の名前とを含む。ＵＩ実現プログラム１２０１は、値候補更新２に属するメッセージを受取ると、そのメッセージにより指定された論理ＵＩ要素の、そのメッセージにより指定された値候補を削除する。
【０１５３】
値候補更新３に属するメッセージは、値候補を追加する対象となる論理ＵＩ要素の識別と、新たに追加されるべき論理ＵＩ要素の名前と、その名前に対応する値そのものとを含む。ＵＩ実現プログラム１２０１は、値候補更新３に属するメッセージを受取ると、このメッセージにより指定された論理ＵＩ要素に、そのメッセージに含まれる名前およびそのメッセージに含まれる値そのものを持つ値候補を追加する。
【０１５４】
（機能属性の更新）
機能属性の更新を行なうためのメッセージは、対象となる論理ＵＩ要素の識別子と、更新の対象となる機能属性の名前と、その機能属性に新たに設定される属性値とを含む。ＵＩ実現プログラム１２０１は、このメッセージを受取ると、このメッセージによって指定された論理ＵＩ要素の、このメッセージにより指定された機能属性の属性値を、このメッセージに含まれる属性値に変更する。
【０１５５】
（付加属性の更新）
付加属性の更新のためのメッセージは、更新の対象となる論理ＵＩ要素の識別子と、更新の対象となる付加属性の名前と、この付加属性に新たに設定される属性値とを含む。ＵＩ実現プログラム１２０１は、このメッセージを受取ると、このメッセージにより指定された論理ＵＩ要素の、このメッセージにより指定された付加属性の属性値を、このメッセージに含まれる属性値に変更する。
【０１５６】
上述したように、ＵＩ記述文書はコンテナ型論理ＵＩ要素による入れ子構造を含む様式で記述することができる。ＵＩ記述文書に記述された論理ＵＩ要素が、その機能に基づいた入れ子構造を有している場合、上方メッセージと下方メッセージとに含まれる識別子に関する情報に、この入れ子を形成するコンテナ型論理ＵＩ要素の識別子が含まれていると便利である。たとえば図３のコンテンツ選択パネル記述３２１０に含まれるテキスト入力要素textFileldに関して、上方メッセージと下方メッセージとに含まれる識別子情報を「ＤＶＤ:contents:selectedContents」のようなリスト表現とすることができる。この表現は、入れ子を形成しているコンテナ型論理ＵＩ要素の識別子を含んでいる。
【０１５７】
コンテナ型論理ＵＩ要素に含まれる論理ＵＩ要素の識別子情報をこのように表現することにより、アプリケーションプログラム本体１１０１が上方メッセージを分析する際に、ＵＩの機能に基づいた場合分けをすることが容易になる。また、ＵＩ実現プログラム１２０１が下方メッセージを分析する際には、下方メッセージにより指定されている対応する論理ＵＩ要素の探索を高速に行なうことができる。
【０１５８】
次に、本発明のユーザインターフェイス実現システムおよびユーザインターフェイス実現方法について本発明の一実施の形態に基づいてより具体的に説明する。
【０１５９】
図４を参照して、この実施の形態のシステムは、複数個の機器を制御するためのＵＩをユーザに対して提供するためのＵＩ装置（機器０）４１００と、複数個の機器４１１０〜４１６０と、これらＵＩ装置４１００と複数個の機器４１１０〜４１６０とをバス接続する、IEEE１３９４のようなネットワーク４０００とを含む。
【０１６０】
図５に各機器をより具体的に示す。このシステムは、ＵＩ装置４１００に相当するコントローラ５１００と、機器４１１０〜４１６０の具体例であるテレビジョン受像機５１１０と、ＶＣＲ（ビデオカセットレコーダ）５１２０と、ＣＤ−ＭＤコンポーネントステレオ５１３０と、パーソナルコンピュータ５１４０と、ＣＳ（衛星放送）チューナ５１５０と、これらをネットワーク接続するネットワーク５０００とを含む。
【０１６１】
コントローラ５１００は、赤外線等の無線通信によってＵＩ装置４１００とネットワーク５０００とを接続する様式で実現される。コントローラ５１００は、ＵＩ装置本体５１０１と、ネットワーク５０００に接続され、ＵＩ装置本体５１０１との間で通信を行なうための送受信ポート５１０２とを含む。
【０１６２】
図６を参照して、ＵＩ装置５１０１は、筐体６０００と、筐体６０００上に設けられた表示装置６０１０と、筐体６０００上に設けられた入力装置である十字ボタン６０２０およびボタン６０３１〜６０３４と、送受信ポート５１０２との間の双方向通信を実現するための送受信ポート６０５０とを含む。
【０１６３】
表示装置６０１０には、任意の機器を制御するためのコントローラパネルがグラフィカルに表示される。表示装置６０１０としてはタッチパネル式の表示装置を用いることが望ましい。この場合利用者は表示装置６０１０内に表示されたＧＵＩ（Graphical User Interface）部品を自らの手またはペン等で直接的に操作することが可能となる。また、表示装置６０１０がタッチパネル式でない場合には、利用者はカーソルボタン６０２０とボタン６０３１〜６０３４とを用いて表示に対する操作を行なうことができる。表示装置６０１０がタッチパネル式であっても、何らかの理由でタッチパネルが使用されない場合もあり得るがその場合にも同様にＵＩ装置５１０１を操作することができる。
【０１６４】
図７を参照して、図６に示すＵＩ装置本体５１０１に代えて表示装置を持たないＵＩ装置７０００を用いることもできる。このタイプのＵＩ装置７０００は、テレビ７１００等の表示装置式の機器とともに利用され、コントローラ本体（ＵＩ装置７０００）を用いた操作方法に関する情報が、DV等の機器の表示装置に表示される。以下、表示装置式の機器がテレビジョン受像機であるものとし、ネットワーク側の送受信ポート５１０２がこのテレビジョン受像機に内蔵されているものとして図７の説明を行なう。
【０１６５】
図７を参照して、この例のＵＩ装置本体７０００は、入力装置である十字ボタン７０２０、ボタン７０３１〜７０３４およびダイヤル７０４０と、ユーザによるこれら入力装置に対する操作内容を無線で送受信ポート５１０２に送信するための送信ポート７０５０とを含む。一方テレビジョン受像機７１００は、表示画面７２００と、ＵＩ装置本体７０００から無線で送信された情報を受信するための受信ポート７１５０（送受信ポート５１０２の一例）とを含む。表示画面７２００内のＵＩ情報領域７２１０には、ＵＩ装置本体７０００を制御するために必要な情報が表示される。
【０１６６】
たとえばＵＩ情報領域７２１０には、図６に示す表示装置６０１０に表示されるのと同様のＧＵＩ部品群を表示してもよい。またはＵＩ情報領域７２１０には、ネットワークで利用可能な機器と、ＵＩ装置本体７０００が装備している入力装置（ボタン７０２０、７０３１〜７０３４およびダイヤル７０４０）との対応づけに関する情報を表示してもよい。
【０１６７】
前者の場合、ＵＩ装置本体７０００の十字ボタン７０２０によってＵＩ情報領域７２１０に表示されているカーソル７２１１を移動させることができる。そうしてカーソル７２１１を、「決定」「取消」等の操作が割当てられたボタン７０３１〜７０３４を用いて操作、入力を行なう。後者の場合には、ＵＩ装置本体７０００が装備している各入力装置には、任意の機器を定義するための機能が予め割当てられている。ユーザがＵＩ装置本体７０００に装備されている任意の入力装置を操作すると、対応する機能を制御することができる。たとえば、ダイヤル７０４０にテレビ７１００の音量制御が割当てられている場合には、ユーザがダイヤル７０４０を任意角度だけ回転することにより、テレビ７１００の音量が変化するような制御が行なわれる。この場合にはＵＩ装置本体７０００の各ボタンのみでは各ボタンに割当てられた機能は不明であるが、ＵＩ情報領域７２１０に表示された情報を参照することにより、各入力装置に割当てられた機能を知ることができる。
【０１６８】
以下の説明では、図６に示されるＵＩ装置本体５１０１を用いる場合について説明する。なお以下の説明では、図４に示される機器のうちある機器が、このネットワーク４０００に接続されている機器を管理するサーバ機器として動作することを想定して説明する。ＵＩ装置が任意の機器だけを１対１で制御するのであればこうしたサーバ機器は不要である。しかし本実施の形態のように、複数機器に関するＵＩを動的に生成して１つのＵＩ装置で操作することができる場合にはネットワークにサーバ機器を設けた方がよい。図４でいえば、パーソナルコンピュータ４１４０（図５のパーソナルコンピュータ５１４０）またはＵＩ装置本体４１００（５１００）がこうしたサーバ機器の機能を担当することが好ましい。
【０１６９】
（ＵＩ装置）
図８を参照して、ＵＩ装置５１００は、ＵＩ装置８１００と、制御対象８２００とを含む。ＵＩ装置８１００と制御対象８２００とが通信を行なうことにより、目的とする機器制御を実現する。制御対象８２００は任意の機器である。しかしネットワークがサーバ機器によって管理されているのであれば、ＵＩ装置８１００の通信相手は直接的にはサーバ機器となり、サーバ機器が制御対象機器と通信を行なって機器の制御を行なう。
【０１７０】
図８を参照してＵＩ装置８１００は、任意のＵＩ記述文書および下方メッセージを制御対象８２００から受信する受信部８１０７と、上方メッセージを制御対象８２００に送信するための送信部８１００と、メッセージ送受信の管理およびＵＩ装置８１００の全体の挙動を管理するためのＵＩ管理部８１０１と、ＵＩ装置８１００において論理ＵＩ要素のイメージを生成し管理するための論理ＵＩ要素管理部８１０２と、ＵＩ装置８１００がユーザに直接提供する具象ＵＩ要素を管理するための具象ＵＩ要素管理部８１０３と、ユーザにＵＩを提供するための出力装置８１０５と、ＵＩを用いたユーザの入力操作を受付けるための入力装置８１０６と、出力装置８１０５および入力装置８１０６における入出力を管理するための入出力管理部８１０４とを含む。
【０１７１】
図１０と図１１とを参照して、このＵＩ装置８１００において本発明の一実施の形態に係るユーザインターフェイスを実現する方法を説明する。本実施の形態のユーザインターフェイス実現方法では、まず、図１０のステップＳ１０１において、任意のＵＩ記述文書を読込み分析する。これは図８に示すＵＩ管理部８１０１が実行する。ＵＩ記述文書は制御対象８２００から受信部８１０７を通じて受信される。ＵＩ管理部８１０１は、ＵＩ記述文書定義情報８１０９を参照して、受信されたＵＩ記述文書が所定の記述様式で記述されたものであることを確認する。ＵＩ記述文書にエラーが発見された場合には、その旨を伝えるＵＩ記述文書を生成して以下同様の処理を行なう。
【０１７２】
エラーが発生しなかった場合、続いてＳ１０２において、ＵＩ記述文書に記述された論理ＵＩ要素に対して、具象ＵＩ要素を対応づけることによりＵＩをユーザに提供する。ステップＳ１０２の詳細を図１１に示す。
【０１７３】
図１１を参照して、まずステップＳ２０１において論理ＵＩ要素と具象ＵＩ要素との対応づけが行なわれる。Ｓ２０１は図８のＵＩ管理部８１０１がＵＩ要素対応表８１１０を参照しながら行なう。ＵＩ要素対応表の一例を図９に示す。
【０１７４】
図９のＵＩ要素対応表において、論理ＵＩ要素に関する情報は、論理ＵＩ要素の種類を表わす名義と、必要に応じて機能属性に関する属性値を記載した属性情報とを含む。具象ＵＩ要素に関する情報は、ＵＩ装置で実現可能な具象ＵＩ要素と、それに必要なパラメータ（属性）とを含む。
【０１７５】
再び図１１を参照して、Ｓ２０１では、ＵＩ記述文書に記述されたすべての論理ＵＩ要素に関して、図９のＵＩ要素対応表に記述されている対応関係のうちの適切な対応関係を探索する。
【０１７６】
この探索は以下のように行なわれる。まず両者が完全にマッチしており、かつ実現可能な対応具象ＵＩ要素を有している対応関係を探索する。この探索に成功した場合にはその対応関係を探索結果とする。探索に失敗した場合には、論理ＵＩ要素の名義のみでマッチしており、かつ実現可能な対応具象ＵＩ要素を有している対応関係を探索する。この探索でも失敗した場合には、図２に示す論理ＵＩ要素の分類階層を参照して、かつ実現可能な対応具象ＵＩ要素を有して代替論理ＵＩ要素を決定して、対応する対応関係を検索結果とする。代替論理ＵＩ要素は、対象としている論理ＵＩ要素よりも上位の論理ＵＩ要素のうち、ＵＩ要素対応表に記述されており、かつ分類階層において限定された論理ＵＩ要素に最も近い論理がＵＩ要素である。
【０１７７】
図１１を参照して、Ｓ２０１は、以上のようにして対応関係を探索し、ＵＩ記述文書に記述された論理ＵＩ要素または代替論理ＵＩ要素に具象ＵＩ要素を対応づける処理を行なう。
【０１７８】
続いてＳ２０２において、Ｓ２０１において行なわれた探索結果に基づいて、対応する論理ＵＩ要素のイメージを生成し初期化する。論理ＵＩ要素の初期化は、主として論理ＵＩ要素が有する値を初期化するための処理である。Ｓ２０２は、論理ＵＩ要素管理部８１０２が、論理ＵＩ要素ライブラリ８１１１を参照して行なう。以後、論理ＵＩ要素の管理は論理ＵＩ要素管理部８１０２で行なわれる。
【０１７９】
図１１を参照して、Ｓ２０３では、Ｓ２０１の探索結果に基づいて、対応する具象ＵＩ要素を初期化する。この初期化は、Ｓ２０１における探索結果に基づいて、図９に記載された具象ＵＩ要素に関する属性情報と、対応する論理ＵＩ要素に関する情報、すなわち上述した値と、値候補、機能属性および負荷属性とにより行なわれる。
【０１８０】
図１１を参照して、Ｓ２０３では、具象ＵＩ要素管理部８１０３または論理ＵＩ要素管理部８１０２で行なわれる。この処理が両者のうちいずれで行なわれるかは、論理ＵＩ要素ライブラリ８１１１と具象ＵＩ要素ライブラリ８１１２との内容によって決まる。論理ＵＩ要素ライブラリ８１１１が具象ＵＩ要素のパラメータに関する知識を持ち合わせている場合にはこの処理は論理ＵＩ要素管理部８１０２において行なわれる。具象ＵＩ要素ライブラリ８１１２が論理ＵＩ要素の値候補、機能属性、および負荷属性に関する情報を持っていればこの処理は具象ＵＩ要素管理部８１０３において行なわれる。いずれにしても、初期化された具象ＵＩ要素は、以降、具象ＵＩ要素管理部８１０３において管理される。
【０１８１】
図１１を参照して、Ｓ２０４においては、Ｓ２０３において初期化された具象ＵＩ要素を用いてユーザにＵＩを提示する。Ｓ２０４が終了することによりステップＳ１０２を終了する。図８を参照して、このＵＩは入出力管理部８１０４を介して出力装置８１０５によってユーザに提供される。
【０１８２】
再び図１０を参照して、Ｓ１０２の後Ｓ１０３で、入出力管理部８１０４によって、入力装置８０６に対するユーザの操作入力があったか否かが判定される。ユーザの操作入力があると判定された場合には制御は図１０のＳ１０５に進む。そうでない場合には制御はＳ１０４に進む。
【０１８３】
Ｓ１０４では、ＵＩ管理部８１０１において、制御対象８２００から受信部８１０７を介して下方メッセージを受信したか否かが判定される。下方メッセージ受信があると判断された場合には制御はＳ１０９に進み、そうでない場合には制御はＳ１０３に戻る。上述したＳ１０３とＳ１０４とは、マルチスレッドプログラミングを用いて個別に実行させてもよい。
【０１８４】
Ｓ１０５では、具象ＵＩ要素管理部８１０３において、ユーザの操作対象となった具象ＵＩ要素が探索される。対応する具象論理ＵＩ要素がない場合には制御はＳ１０３に戻り、対応する具象論理ＵＩ要素が存在した場合には制御はＳ１０６に進む。
【０１８５】
Ｓ１０６では、Ｓ１０５において探索された具象ＵＩ要素に対応づけられている論理ＵＩ要素に関して、その値を更新するタイミングか否かを判定する。更新のタイミングでなければ制御はＳ１０３に戻り、さもなければ制御はＳ１０７に進む。論理ＵＩ要素の値を更新するタイミングは論理ＵＩ要素の種類によって異なる。たとえば、図２に示したentry系の論理ＵＩ要素の値を更新するタイミングは、基本的には文字列入力があったときである。またchoice系の論理ＵＩ要素では、更新のタイミングは選択肢がユーザにより選択された場合である。
【０１８６】
論理ＵＩ要素の更新タイミングであるとＳ１０６によって判定された場合には、値の更新対象である論理ＵＩ要素の値を変更し、その論理ＵＩ要素の識別子と更新された値とを用いて上方メッセージを生成する。Ｓ１０６とＳ１０７との両ステップは図８の論理ＵＩ要素管理部８１０２によって行なわれる。
【０１８７】
さらにＳ１０８において、Ｓ１０７において生成された上方メッセージが、ＵＩ管理部８１０１により送信部８１０８を通して制御対象８２００に対して送信される。この上方メッセージを送信した後制御はＳ１０３に戻る。
【０１８８】
上述したＳ１０４で下方メッセージの受信があると判断された場合には制御はＳ１０９に進む。Ｓ１０９では、図８に示す論理ＵＩ管理部８１０２において、下方メッセージの対象となっている論理ＵＩ要素を探索する。ここで対象となる論理ＵＩ要素が存在しない場合には制御はＳ１０３に戻り、存在する場合には制御はＳ１１０に進む。
【０１８９】
Ｓ１１０では、論理ＵＩ要素管理部８１０２において、下方メッセージの対象となっている論理ＵＩ要素に関して、下方メッセージの種類ごとの更新方法に従って論理ＵＩ要素を更新する。そしてその論理ＵＩ要素に対応づけられている具象ＵＩ要素を論理ＵＩ要素の更新内容に合わせて更新する。
【０１９０】
（任意の機器）
図１２を参照して、各機器は、機器本体１２００４と、機器本体１２００４を制御するための制御プログラム１２００１と、制御プログラムから分離されたＵＩを記述したＵＩ記述文書１２００３と、制御プログラムおよび外部との通信を管理するための管理部１２００５と、外部との通信を行なう送信部１２００６および受信部１２００７とを含む。図１２に示されるように本実施の形態の機器では、ＵＩ記述文書１２００３を、機器本体１２００４を制御するためのアプリケーションプログラムである制御プログラム１２００１から分離している点に特徴がある。なお各機器は、ＵＩ記述文書１２００３で使用されている記述形式を定義したＵＩ記述文書定義情報１２００２をさらに含んでいる。このＵＩ記述文書定義情報１２００２は必ずしも存在しなくてもよいが、制御プログラム１２００１が自らのＵＩ記述文書１２００３を動的に生成したり変更したりする場合にはＵＩ記述文書定義情報１２００２が必要である。
【０１９１】
管理部１２００５は、任意のタイミングでＵＩ記述文書１２００３を読込み、読込んだＵＩ記述文書１２００３を送信部１２００６を通してサーバ機器またはＵＩ機器に送信する。ここでこの送信のタイミングは任意ではあるが、ネットワーク上でその機器が使用可能となったとき、または他の機器からのＵＩ記述文書送信要求があったときなどであることが好ましい。また管理部１２００５は、受信部１２００７が受信したＵＩ機器またはサーバ機器からの上方メッセージを制御プログラム１２００１に送る。また管理部１２００５はさらに、制御プログラム１２００１から送られてきた下方メッセージを、送信部１２００６を通じてＵＩ機器またはサーバ機器に送信する機能を有する。
【０１９２】
制御プログラム１２００１は、管理部１２００５から送られてきた上方メッセージに基づいて、機器本体１２００４を制御する。制御プログラム１２００１はさらに、ＵＩ機器によってユーザに提供されているＵＩを変更するため、下方メッセージを生成して管理部１２００５に送る。上方メッセージと下方メッセージとは既に述べたとおりである。
【０１９３】
（サーバ機器）
サーバ機器は、ネットワークに接続されている各機器を、それぞれのＵＩ記述文書とともに管理するためのものである。サーバ機器はまた、ＵＩ装置に対して任意の機器のＵＩ記述文書を提供したり、機器とＵＩ装置との間のメッセージ交信を中継したりする。
【０１９４】
ＵＩ装置に提供するＵＩ記述文書は、任意の単一機器のＵＩ記述文書だけでなく、複数の機器および／またはアプリケーションのＵＩ記述文書を合成して生成したＵＩ記述文書であってもよい。
【０１９５】
図１３を参照して、サーバ機器は、ネットワークに接続されている機器やそのＵＩ記述文書を管理するとともにＵＩ装置と任意の機器との間のメッセージ交信の橋渡し役をするためのＵＩ管理部１３００１と、他の機器と通信を行なうための送信部１３００６および受信部１３００７と、ＵＩ記述文書定義情報１３００２を参照して、サーバ機器がＵＩ装置に提供するＵＩ記述文書１３００３を生成したり修正したりするＵＩ記述文書生成／修正部１３００５と、ネットワークに接続されている機器とそのＵＩ記述文書とを管理するための接続機器情報１３００４を含む。
【０１９６】
ＵＩ管理部１３００１は、ネットワーク接続されている他の機器のＵＩ記述文書を、受信部１３００７を通じて任意のタイミングで取得する。ＵＩ管理部１３００１は、こうして取得したＵＩ記述文書を、ネットワーク上での各機器のアドレスなどのネットワーク情報とともに接続機器情報１３００４に保管する。ＵＩ管理部１３００１はさらに、任意のタイミングで、ＵＩ装置に提供するＵＩ記述文書を生成したり修正したりするようにＵＩ記述文書生成／修正部１３００５に依頼し、修正／生成されたＵＩ記述文書を送信部１３００６を通じてＵＩ装置に送信する。
【０１９７】
ＵＩ管理部１３００１はまた、ＵＩ装置からの上方メッセージを受信部１３００７を通じて受信すると、ＵＩ記述文書生成／修正部１３００５でのＵＩ記述文書の生成／修正を反映して上方メッセージを修正し、送信部１３００６を通じて制御対象の機器に、修正した上方メッセージを送信する。また任意の機器から下方メッセージを受信部１３００７を通じて受信すると、ＵＩ記述文書生成／修正部１３００５におけるＵＩ記述文書の生成／修正を反映して下方メッセージを修正し、送信部１３００６を通じてＵＩ装置に対し修正した下方メッセージを送信する。
【０１９８】
（論理ＵＩ要素のイメージ）
図８を参照して、論理ＵＩ要素管理部８１００によって管理される論理ＵＩ要素のイメージについて述べた。以下では、論理ＵＩ要素をオブジェクト指向プログラミングにおけるオブジェクトとして扱った場合の、オブジェクトの構成と任意の処理手順とについて述べる。またこれまで説明されていない論理ＵＩ要素の機能およびその性質について説明する。以下ではまずいくつかの機能／性質について新たに述べ、その後論理ＵＩ要素の動作について説明する。
【０１９９】
上方メッセージと下方メッセージとに関して、それらに含まれる識別情報を、コンテナ型論理ＵＩ要素の入れ子構造を反映した識別子リストとして表現する方法については既に説明した。本実施の形態のシステムでは、このように識別子リストとして表現された識別子情報を持つ上方メッセージおよび／または下方メッセージを、対応する論理ＵＩ要素またはコンテナ型論理ＵＩ要素のオブジェクト間で伝播して処理する。したがってメッセージ伝播処理を行なうために、コンテナ型論理ＵＩ要素は、上方メッセージ伝播機能と下方メッセージ伝播機能とを備えている。
【０２００】
まずコンテナ型論理ＵＩ要素の上方メッセージ伝播機能と下方メッセージ伝播機能との生成表現について説明する。なお以下の説明では、本実施の形態において任意の論理ＵＩ要素（コンテナ型を含む）が入れ子構造の親要素への参照先を保持しており、また、コンテナ型論理ＵＩ要素がそのコンテナ型論理ＵＩ要素が形成する入れ子構造の子要素への参照先を保持していることが前提となっている。
【０２０１】
まず上方メッセージ伝播機能について説明する。コンテナ型論理ＵＩ要素は、入れ子構造における子要素から上方メッセージを受取ると、その上方メッセージに含まれる識別子情報に自らの識別子を追加して上方メッセージを更新する。そしてこのコンテナ型論理ＵＩ要素は、こうして更新した上方メッセージをその親要素に対して伝播する。ここで、このコンテナ型論理ＵＩ要素が親要素を持たないものである場合、すなわちこのコンテナ型論理ＵＩ要素が入れ子構造の最上位の論理ＵＩ要素であれば、このコンテナ型論理ＵＩ要素は上記したように更新した上方メッセージを操作対象８２００に対して送信する（図８参照）。この場合この伝播されたメッセージ自体が上方メッセージである。入れ子構造を形成していない論理ＵＩ要素は、この入れ子の最上位である論理ＵＩ要素と同様のメッセージ伝播を行なう。
【０２０２】
下方メッセージ伝播機能は以下のようになっている。コンテナ型論理ＵＩ要素は、入れ子構造における親要素から下方メッセージを受取ると、その下方メッセージに含まれる識別情報に自らの識別子が含まれているか否かを判定する。受信された下方メッセージに含まれる識別情報に自らの識別子が含まれていない場合には、その下方メッセージは自己および自己に含まれる論理ＵＩ要素にとって無関係であるのでそれ以上何の処理も行なわない。一方受信した下方メッセージに含まれる識別情報に自らの識別子が含まれている場合には、コンテナ型論理ＵＩ要素は識別子情報から自らの識別子を削除することによって下方メッセージを修正する。そしてこのように更新した下方メッセージを、自分のすべての子要素に対して伝播する。こうして下方メッセージは、順に子要素に伝播されて子要素では受取った下方メッセージに含まれる識別子情報に自らの識別子が含まれている場合にはそれが自分宛の下方メッセージであると判断する。
【０２０３】
上記のように子要素に下方メッセージを伝播するときに、すべての子要素に伝播する必要はない。下方メッセージの識別子リストに含まれている識別子を検査することにより、下方メッセージを伝播すべき子要素を探索することができる。したがってそのように探索された子要素に対してのみ下方メッセージを伝播してもよい。
【０２０４】
以上のようにメッセージは入れ子構造の中を伝播する。以下では上方メッセージの伝播を上方伝播と呼び、下方メッセージの伝播を下方伝播と呼ぶこととする。
【０２０５】
（メッセージ送信権）
今まで、このユーザインターフェイス実現方法では、ＵＩ装置８１００に対してユーザが入力操作を行なうと、その内容がすべて上方メッセージとして制御対象８１００に送信されるものとして説明してきた。しかし実際には、論理ＵＩ要素の中には、その上方メッセージを発生すべきタイミングとして即時性が要求されなかったり、他の論理ＵＩ要素の上方メッセージとともに送信すると好都合なものがあったりする。そのような場合には、複数の論理ＵＩ要素で個別に上方メッセージを送信するより、いくつかの論理ＵＩ要素の上方メッセージをまとめて送信した方が好ましい。
【０２０６】
したがって本実施の形態では実際には、上方メッセージの送信に関してメッセージ送信権という概念を導入することにより上記したような問題に対処する。メッセージ送信権とは、自己から上方メッセージを送信する権利とでも言うべきものである。基本的にすべての論理ＵＩ要素がメッセージ送信権を持ち、通常はこのメッセージ送信権を行使して上方メッセージを自ら外部に送信する。ここでいう外部とは、上述したメッセージ伝播を採用しているのであればその論理ＵＩ要素を包含しているコンテナ型論理ＵＩ要素のことを指す。一方このメッセージ送信権は他の論理ＵＩ要素に対して委譲することが可能である。自己のメッセージ送信権を他の論理ＵＩ要素に委譲した論理ＵＩ要素は、上方メッセージを外部に送信することはできない。これに対してこのメッセージ送信権の委譲を受けた論理ＵＩ要素（委譲先の論理ＵＩ要素）は、自己の論理ＵＩ要素と、委譲元の論理ＵＩ要素との双方の上方メッセージを、自己の論理ＵＩ要素の送信タイミングで外部にまとめて送信する。
【０２０７】
論理ＵＩ要素のメッセージ送信権を他の論理ＵＩ要素に委譲するか否かを指定するために、論理ＵＩ要素の機能属性の１つとして委譲先属性を定義する。ＵＩ記述文書に記述される論理ＵＩ要素に関する情報としてこのように委譲先属性が定義されていれば、その定義によって指定された論理ＵＩ要素にこの論理ＵＩ要素のメッセージ送信権が委譲される。委譲先属性が指定されていないときには、その論理ＵＩ要素はメッセージ送信権を保持していることを意味する。
【０２０８】
（値参照）
今までの説明によれば、図８の操作対象８２００において直接使用されないメッセージも上方メッセージとして送信しなければならないこともあり得る。たとえば、任意の論理ＵＩ要素における値更新が、他の論理ＵＩ要素を更新するためだけに使用される場合などである。たとえばユーザの操作に従ってＵＩを動的に変更させるような場合がこれに相当する。この場合にはアプリケーションプログラム本体にこの上方メッセージを送る必要は全くない。このような場合に逐一制御対象８２００とアプリケーションプログラム本体との間でメッセージ交信していては、ネットワークのトラフィックを不要に増加させることになる。また操作対象８２００に対しても不要な負荷がかかることになる。
【０２０９】
こうした問題に対処するために本実施の形態のシステムでは、任意の論理ＵＩ要素間に値参照関係という関係を導入する。値参照とは、任意の論理ＵＩ要素が、他の論理ＵＩ要素の値を参照して自らの値を更新することができるような論理ＵＩ要素間の関係のことをいう。任意の論理ＵＩ要素が値参照先の論理ＵＩ要素を指定しているときには、値参照先の論理ＵＩ要素は、任意のタイミングで参照元の論理ＵＩ要素に対して値を提供する。ただし任意のタイミングとしてはたとえば、値参照先の論理ＵＩ要素の値が更新されたタイミングであることが好ましい。
【０２１０】
参照元の論理ＵＩ要素はこの値を参照先の論理ＵＩ要素から受けると、予め指定された値参照処理モデルに、提供された値を適用することによって自らの値を更新する。値参照処理モデルとしては、提供された値を自らの値とするモデル、または任意の関数を定義してその関数により自らの値を求めるモデルなどが考えられる。
【０２１１】
値参照先の論理ＵＩ要素を指定するために、論理ＵＩ要素の機能属性の１つとして値参照先属性を定義し、値参照モデルの名義および／またはパラメータを指定する属性を設ける。これら属性は、ＵＩ記述文書に記述された論理ＵＩ要素に関する情報として与えられる。なお、値参照先属性が指定されていないときにはその論理ＵＩ要素は値参照を行なわないことを意味する。
【０２１２】
なお、値参照処理モデルは、任意のスクリプト言語などを用いて記述してもよい。ＵＩ記述文書をＸＭＬで記述する場合には、ＸＭＬがスクリプト言語にも対応しているので、任意のモデルを容易に実現することができる。
【０２１３】
（論理ＵＩ要素オブジェクトの動作）
以上に説明したメッセージ送信権および値参照という枠組みを持つ論理ＵＩ要素オブジェクトについて、以下図を参照して詳細に説明する。図１４に、論理ＵＩ要素管理部８１０２によって管理される論理ＵＩ要素オブジェクトの構成を示す。図１４を参照して論理ＵＩ要素オブジェクトは、オブジェクト機能群１４１００と、オブジェクトデータ１４２００とを含む。オブジェクト機能群１４１００は１または複数の機能を含み、各機能がオブジェクトデータ１４２００内の対応のデータを更新する構成となっている。またこのオブジェクトデータ１４２００内のいずれのデータも、オブジェクト機能群１４１００に含まれる機能を用いないと更新することができない。こうすることにより、論理ＵＩ要素オブジェクトの外部に対する独立性を高めることができ、種々のアプリケーションで共通に使用することが可能となる。
【０２１４】
オブジェクト機能群１４１００は、論理ＵＩ要素オブジェクト自身を生成し初期化する論理ＵＩ要素生成機能１４１０１と、この論理ＵＩ要素に対応づけられた具象ＵＩ要素を初期化または更新するための具象ＵＩ要素更新機能１４１０５と、その具象ＵＩ要素に対するユーザの操作に基づいてオブジェクトデータ１４２００内の値を更新するための値更新機能１４１０２と、図８に示す制御対象８２００に送信される上方メッセージを生成し、外部に伝播するためのメッセージ生成機能１４１０３と、図８に示す制御対象８２００から送信され所定の経路を経て伝播されてきた下方メッセージに基づいて、オブジェクトデータ１４２００内のデータを更新するための論理ＵＩ要素更新部１４１０４と、他の論理ＵＩ要素の値を参照してオブジェクトデータ１４２００内の値を更新するための値参照機能１４１０６とを含む。
【０２１５】
図１５〜図１９を参照して、図１４に示す論理ＵＩ要素オブジェクトの動作を説明する。なおこの図１５に示すフローチャートは、たとえば図１０に示したＳ１０７に相当する処理を示す。
【０２１６】
この処理に入る前に、図８に示す具象ＵＩ要素管理部８１０３は、図１０に示すＳ１０５においてユーザによって操作された具象ＵＩ要素を判定し、判定した具象ＵＩ要素の処理内容を対応する論理ＵＩ要素に送信することが想定されている。図１４を参照して、値更新機能１４１０２はこの処理内容を受取り、図１０に示されるＳ１０６において、論理ＵＩ要素の値を更新するタイミングか否かを判定する。論理ＵＩ要素の値を更新するタイミングであると判定されれば値更新機能１４１０２は図１０に示したＳ１０７の処理、すなわち図１５に示される処理を実行する。
【０２１７】
図１５を参照して、Ｓ３０１ではオブジェクトデータ１４２００に含まれる値が更新される。続いてＳ３０２において上方メッセージが生成され上方伝播される。続いてＳ３０３において、この論理ＵＩ要素の値を参照しようとしている参照元の論理ＵＩ要素が存在するか否かが判定され、存在するならばＳ３０４で参照元論理ＵＩ要素に対してこの論理ＵＩ要素の値を提供する処理が行なわれる。
【０２１８】
値参照の参照先論理ＵＩ要素は、値を参照する参照元の論理ＵＩ要素に参照先論理ＵＩ要素として登録されている。本実施の形態のシステムでは、図８に示す論理ＵＩ要素管理部８１０２において論理ＵＩ要素オブジェクトが初期化されるときに、すべての論理ＵＩ要素の値参照先論理ＵＩ要素を確認する。そして値参照先となる各論理ＵＩ要素に対して、図１４に示すオブジェクトデータ１４２００として、参照元の論理ＵＩ要素を登録しておく。Ｓ３０３およびＳ３０４の処理は、この情報を参照することにより行なわれる。
【０２１９】
図１６を参照して、図１５のＳ３０１の処理について説明する。まずＳ４０１では、具象ＵＩ要素に対して行なわれた操作内容を基にして、図１４に示すオブジェクトデータ１４２００の値を更新する。Ｓ４０２では、具象ＵＩ要素を更新する必要があるか否かを判定する。更新する必要があると判定されればＳ４０３で具象ＵＩ要素を更新する。この場合の具象ＵＩ要素の更新とは、たとえば特にＧＵＩを用いているときに、論理ＵＩ要素の値がＧＵＩの外形に反映されるような場合に必要である。
【０２２０】
続いて図１７を参照して、図１５に示すＳ３０２の処理の詳細について説明する。まずＳ５０１において、この論理ＵＩ要素に対して上方メッセージの送信権を委譲している送信権委譲元の論理ＵＩ要素が存在するか否かを判定する。送信権委譲元の論理ＵＩ要素が存在している場合には、Ｓ５０２においてその委譲元の論理ＵＩ要素の上方メッセージを取得する。既に述べたように上方メッセージの送信権が委譲される場合には、委譲元の論理ＵＩ要素において、委譲先の論理ＵＩ要素が登録されている。本実施の形態では図８に示す論理ＵＩ要素管理部８１０２において論理ＵＩ要素オブジェクトが初期化されるときに、このように登録された委譲先論理ＵＩ要素をスキャンすることによって、すべての論理ＵＩ要素の送信権委譲先論理ＵＩ要素を確認する。そして送信権の委譲先となる論理ＵＩ要素の各々の、図１４に示すオブジェクトデータ１４２００に、委譲元の論理ＵＩ要素を特定する情報を登録しておく。Ｓ５０１およびＳ５０２の処理は、この情報を参照することにより行なわれる。
【０２２１】
次にＳ５０３で、この論理ＵＩ要素から送信する上方メッセージを生成する。ここで生成される上方メッセージは、論理ＵＩ要素の識別子と値とからなるメッセージである。またＳ５０２において他の論理ＵＩ要素（委譲元論理ＵＩ要素）の上方メッセージを取得している場合には、その上方メッセージを連結したものとなる。
【０２２２】
さらにＳ５０４で、自らが上方メッセージの送信権を持っているか否かを判定する。送信権を持っていればＳ５０５で上方メッセージを上方伝播する。Ｓ５０４において自らが送信権を持っていないと判定された場合には、Ｓ５０３で生成された上方メッセージを図１４に示すオブジェクトデータ１４２００内に格納する。このようにオブジェクトデータ１４２００内に上方メッセージを格納しておくことにより、送信権委譲先の論理ＵＩ要素が必要なときにこの上方メッセージを取得することができる。
【０２２３】
以上説明した図１５〜図１７の処理は、図１４に示す値変更機能１４１０２、メッセージ生成機能１４１０３、および値参照機能１４１０６の値提供１４１０７という機能によって行なわれる。
【０２２４】
次に図１８を参照して、図１０に示したＳ１１０の詳細について説明する。なおこの処理に入る前に、図８に示す具象ＵＩ要素管理部８１０３では、図１０に示すＳ１０９によって下方メッセージの対象となる論理ＵＩ要素を探索する。既に述べたように本実施の形態では下方メッセージの下方伝播を行なう。したがってこの下方伝播が図１０に示すＳ１０９となる。さらにその後論理ＵＩ要素の入れ子構造における最下層の論理ＵＩ要素において、図１０のＳ１１０の処理、すなわち図１８にその詳細を示す処理が実行される。
【０２２５】
図１８を参照して、Ｓ６０１では既に述べた下方メッセージの処理方法に従って図１４に示すオブジェクトデータ１４２００内の適切なデータを更新する。続いてＳ６０２において、Ｓ６０１において行なわれたデータの更新により、対応する具象ＵＩ要素を更新する必要があるか否かが判定される。更新の必要があればＳ６０３でその具象ＵＩ要素を更新する。
【０２２６】
いずれの場合も制御はＳ６０４に進む。Ｓ６０４では、値の変更があったか否かを判定する。値の変更がなかった場合には処理を終了する。値の変更があった場合にはＳ６０５に進む。
【０２２７】
Ｓ６０５では、更新された値に基づいて、図１４に示すオブジェクトデータ１４２００内の送信メッセージを更新する。Ｓ６０５で行なわれる処理は、図１７に示すＳ５０３で行なわれるのと同じ処理である。
【０２２８】
図１５に示すＳ３０３およびＳ３０４と同様に、Ｓ６０６においてこの論理ＵＩ要素の値を参照する参照元の論理ＵＩ要素が存在するか否かを判定する。値参照元が存在する場合にはＳ６０７で参照元の論理ＵＩ要素に対してこの値を提供する。以上でこの処理は終了する。
【０２２９】
図１８に示される処理は、図１４に示す論理ＵＩ要素更新機能１４１０４と、具象ＵＩ要素更新機能１４１０５とによって行なわれるものである。
【０２３０】
次に、図１９を参照して、図１４に示す値参照機能１４１０６のうちの値参照処理１４１０８の動作を説明する。値参照の処理は、値参照先の論理ＵＩ要素オブジェクトから値参照元の論理ＵＩ要素オブジェクトに対して値の提供があった場合に参照元の論理ＵＩ要素オブジェクトにおいて実行される。値参照先の論理ＵＩ要素オブジェクトからの値提供は、図１５に示すＳ３０４および図１８に示すＳ６０７において行なわれる。
【０２３１】
まずＳ７０１において、値参照先からの値提供があったことを確認する。続いてＳ７０２で所定の値参照処理モデルによってこの論理ＵＩ要素オブジェクトの値を計算し、Ｓ７０３でオブジェクトデータ１４２００（図１４参照）内の適切な値を更新する。
【０２３２】
次にＳ７０４では、図１４に示すメッセージ生成機能１４１０３を用いて、図１７のフローチャートに従って上方メッセージを生成し伝播する。ただし、図１８に示すＳ６０７によって値参照先の論理ＵＩ要素から値提供があった場合、すなわち、値参照先の論理ＵＩ要素の値が下方メッセージに従って更新され、その結果に従って値提供があった場合には、図１７に示される処理のうちＳ５０３による上方メッセージの生成のみを行ない、メッセージの伝播は行なわないことが望ましい。
続いてＳ７０５で、図１４に示す具象ＵＩ要素更新機能１４１０５により具象ＵＩ要素を更新する必要があるか否かを判定する。更新する必要があると判定された場合にはＳ７０６において具象ＵＩ要素を更新し処理を終了する。
【０２３３】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【図１】  本発明の一実施の形態の基本的概念を示す図である。
【図２】  論理ユーザインタフェース要素の分類階層ツリーを示す図である。
【図３】  ユーザインタフェース記述文書の一例を示す図である。
【図４】  本発明の一実施の形態のネットワークシステムを模式的に示す図である。
【図５】  本発明の一実施の形態のネットワークシステムをより具体的に示す図である。
【図６】  本発明の一実施の形態のシステムで使用されるユーザインタフェース装置の一例の外観図である。
【図７】  本発明の一実施の形態のシステムで使用されるユーザインタフェース装置の他の一例の外観図である。
【図８】  ユーザインタフェース装置のブロック図である。
【図９】  ＵＩ要素対応表の一例を示す図である。
【図１０】  本発明の一実施の形態に係るユーザインターフェイスを実現する方法を説明するためのフローチャートである。
【図１１】  本発明の一実施の形態に係るユーザインターフェイスを実現する方法を説明するためのフローチャートである。
【図１２】  各機器のブロック図である。
【図１３】  サーバ機器のブロック図である。
【図１４】  論理ＵＩ要素管理部８１０２によって管理される論理ＵＩ要素オブジェクトの構成を示す図である。
【図１５】  論理ＵＩ要素オブジェクトの動作を説明するためのフローチャートである。
【図１６】  論理ＵＩ要素オブジェクトの動作を説明するためのフローチャートである。
【図１７】  論理ＵＩ要素オブジェクトの動作を説明するためのフローチャートである。
【図１８】  論理ＵＩ要素オブジェクトの動作を説明するためのフローチャートである。
【図１９】  論理ＵＩ要素オブジェクトの動作を説明するためのフローチャートである。
【図２０】  ユーザインタフェースの一例を示す図である。
【符号の説明】
１１００  アプリケーション、１１０１  アプリケーションプログラム本体、１１０２  ユーザインタフェース記述文書、１２００，５１０１，７０００  ユーザインタフェース装置、１２０１  ユーザインタフェース実現プログラム。
【図１】
0003763718.tif 000002
【図２】
0003763718.tif 000003
【図３】
0003763718.tif 000004
【図４】
0003763718.tif 000005
【図５】
0003763718.tif 000006
【図６】
0003763718.tif 000007
【図７】
0003763718.tif 000008
【図８】
0003763718.tif 000009
【図９】
0003763718.tif 000010
【図１０】
0003763718.tif 000011
【図１１】
0003763718.tif 000012
【図１２】
0003763718.tif 000013
【図１３】
0003763718.tif 000014
【図１４】
0003763718.tif 000015
【図１５】
0003763718.tif 000016
【図１６】
0003763718.tif 000017
【図１７】
0003763718.tif 000018
【図１８】
0003763718.tif 000019
【図１９】
0003763718.tif 000020
【図２０】
0003763718.tif 000021