(57)【要約】【課題】  XMLなどの記述言語で実現するユーザインタフェースで、部品の再利用を可能にする。【解決手段】  ユーザインタフェース記述文書に、ユーザインタフェースの部品の定義が記述された部品記述文書を参照することで当該部品を配置するコマンドが記述可能である。情報処理装置は、ユーザインタフェース記述文書に前記コマンドが記述されている場合、前記部品記述文書を参照し、前記ユーザインタフェース記述文書および前記部品記述文書が統合された内容を表現する構造化データを生成する(S605,S603)。そして、生成された前記構造化データに基づいてユーザインタフェースを表示し(S606)、ユーザからの入力イベントに応じた動作を実行する(S607)。【選択図】  図６
2008033560.tif 000002
【特許請求の範囲】
【請求項１】
入力情報、出力情報、制御情報を含む第１および第２ユーザインタフェース記述文書を記憶する記憶部と、
前記第１および第２ユーザインタフェース記述文書を解析する解析部と、
前記解析によって得られたユーザインタフェース情報を管理する管理部と、
前記入力情報に従って入力を制御する入力部と、
前記出力情報に従って出力を行う出力部と、
前記制御情報に従ってユーザインタフェースの動作を制御する制御部と、
を有する情報処理装置であって、
前記第１ユーザインタフェース記述文書は、前記第２ユーザインタフェース記述文書を参照する指示を含み、
前記解析部は、前記第１ユーザインタフェースおよびその参照先である前記第２ユーザインタフェース記述文書を解析し、
前記管理部は、解析された前記第１および第２ユーザインタフェース記述文書のユーザインタフェース情報を統合して管理し、
前記制御部は、前記第１ユーザインタフェース記述文書の制御情報と前記第２ユーザインタフェース記述文書の制御情報の両方に従った動作を実現し、
前記第１ユーザインタフェース記述文書はさらに、参照先である前記第２ユーザインタフェース記述文書における属性およびその属性値を指定する記述を含むとともに、該指定の記述に従って、前記第２ユーザインタフェース記述文書の前記入力情報、出力情報、制御情報の属性値を書き換える書き換え部を有し、
前記入力部、出力部、制御部はそれぞれ、前記書き換え部によって書き換えられた内容に応じて、入力、出力、制御を行う
ことを特徴とする情報処理装置。
【請求項２】
入力情報、出力情報、制御情報を含む第１および第２ユーザインタフェース記述文書を記憶する記憶部と、
前記第１および第２ユーザインタフェース記述文書を解析する解析部と、
前記解析によって得られたユーザインタフェース情報を管理する管理部と、
前記入力情報に従って入力を制御する入力部と、
前記出力情報に従って出力を行う出力部と、
前記制御情報に従ってユーザインタフェースの動作を制御する制御部と、
を有する情報処理装置であって、
前記第１ユーザインタフェース記述文書は、前記第２ユーザインタフェース記述文書を参照する指示を含み、
前記解析部は、前記第１ユーザインタフェースおよびその参照先である前記第２ユーザインタフェース記述文書を解析し、
前記管理部は、解析された前記第１および第２ユーザインタフェース記述文書のユーザインタフェース情報を統合して管理し、
前記制御部は、前記第２ユーザインタフェース記述文書の制御情報に従った動作を実現し、
前記第１ユーザインタフェース記述文書はさらに、参照先である前記第２ユーザインタフェース記述文書で記述されたユーザインタフェースを部品とみなし、その部品の操作に関する記述を含み、
前記第２ユーザインタフェース記述文書は、前記操作に関する記述に対応したイベントおよび該イベントに対応するアクションの記述を前記制御情報の中に含むとともに、前記部品の操作の実行を、前記第２ユーザインタフェース記述文書のイベントに変換する変換部を有し、
前記制御部は、前記第２ユーザインタフェース記述文書の中の前記制御情報に従って、前記変換部で変換されたイベントに対するアクションを実行する
ことを特徴とする情報処理装置。
【請求項３】
前記出力情報は表示情報であり、前記出力部は表示を行うことを特徴とする、請求項１または２に記載の情報処理装置。
【請求項４】
前記出力情報は音声出力情報であり、前記出力部は音声出力を行うことを特徴とする、請求項１または２に記載の情報処理装置。
【請求項５】
前記入力情報はグラフィカルユーザインタフェースの入力情報であり、前記入力部は、グラフィカルユーザインタフェースの入力を行うことを特徴とする、請求項１または２に記載の情報処理装置。
【請求項６】
前記入力情報は音声入力情報であり、前記入力部は音声入力を行うことを特徴とする、請求項１または２に記載の情報処理装置。
【請求項７】
前記第１ユーザインタフェース記述文書と前記第２ユーザインタフェース記述文書とは相異なる機器上に存在し、前記第１および第２ユーザインタフェース記述文書をネットワークを経由して取得する受信部をさらに備えることを特徴とする請求項１から６までのいずれかに記載の情報処理装置。
【請求項８】
前記第１および第２ユーザインタフェース記述文書は、ＸＨＴＭＬに準拠することを特徴とする請求項１から７までのいずれかに記載の情報処理装置。
【請求項９】
前記第１および第２ユーザインタフェース記述文書は、ＳＶＧに準拠することを特徴とする請求項１から７までのいずれかに記載の情報処理装置。
【請求項１０】
前記第１および第２ユーザインタフェース記述文書は、ＶｏｉｃｅＸＭＬに準拠することを特徴とする請求項４または６に記載の情報処理装置。
【請求項１１】
入力情報、出力情報、制御情報を含む第１ユーザインタフェース記述文書および第２ユーザインタフェース記述文書を記憶する記憶部と、
前記第１および第２ユーザインタフェース記述文書を解析する解析部と、
前記解析によって得られたユーザインタフェース情報を管理する管理部と、
前記入力情報に従って入力を制御する入力部と、
前記出力情報に従って出力を行う出力部と、
前記制御情報に従ってユーザインタフェースの動作を制御する制御部と、
を有し、
前記第１ユーザインタフェース記述文書は、前記第２ユーザインタフェース記述文書を参照する指示を含み、
前記第１ユーザインタフェース記述文書はさらに、参照先である前記第２ユーザインタフェース記述文書における属性およびその属性値を指定する記述を含むとともに、該指定の記述に従って、前記第２ユーザインタフェース記述文書の前記入力情報、出力情報、制御情報の属性値を書き換える書き換え部を有する、情報処理装置によって実行されるユーザインタフェース制御方法であって、
前記解析部は、前記第１ユーザインタフェースおよびその参照先である前記第２ユーザインタフェース記述文書を解析し、
前記管理部は、解析された前記第１および第２ユーザインタフェース記述文書のユーザインタフェース情報を統合して管理し、
前記制御部は、前記第１ユーザインタフェース記述文書の制御情報と前記第２ユーザインタフェース記述文書の制御情報の両方に従った動作を実現し、
前記入力部、出力部、制御部はそれぞれ、前記書き換え部によって書き換えられた内容に応じて、入力、出力、制御を行う
ことを特徴とするユーザインタフェース制御方法。
【請求項１２】
入力情報、出力情報、制御情報を含む第１および第２ユーザインタフェース記述文書を記憶する記憶部と、
前記第１および第２ユーザインタフェース記述文書を解析する解析部と、
前記解析によって得られたユーザインタフェース情報を管理する管理部と、
前記入力情報に従って入力を制御する入力部と、
前記出力情報に従って出力を行う出力部と、
前記制御情報に従ってユーザインタフェースの動作を制御する制御部と、
を有し、
前記第１ユーザインタフェース記述文書は、前記第２ユーザインタフェース記述文書を参照する指示を含み、
前記第１ユーザインタフェース記述文書はさらに、参照先である前記第２ユーザインタフェース記述文書で記述されたユーザインタフェースを部品とみなし、その部品の操作に関する記述を含み、
前記第２ユーザインタフェース記述文書は、前記操作に関する記述に対応したイベントおよび該イベントに対応するアクションの記述を制御情報の中に含むとともに、前記部品の操作の実行を、前記第２ユーザインタフェース記述文書のイベントに変換する変換部を有する、情報処理装置によって実行されるユーザインタフェース制御方法であって、
前記解析部は、前記第１ユーザインタフェースおよびその参照先である前記第２ユーザインタフェース記述文書を解析し、
前記管理部は、解析された前記第１および第２ユーザインタフェース記述文書のユーザインタフェース情報を統合して管理し、
前記制御部は、前記第２ユーザインタフェース記述文書の制御情報に従った動作を実現し、
前記制御部は、前記第２ユーザインタフェース記述文書の中の制御情報に従って、前記変換部で変換されたイベントに対するアクションを実行する
ことを特徴とするユーザインタフェース制御方法。
【請求項１３】
請求項１１または１２に記載のユーザインタフェース制御方法を情報処理装置によって実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザインタフェース記述言語に基づいてユーザインタフェースを実現する情報処理装置およびユーザインタフェース制御方法に関する。
【背景技術】
【０００２】
ユーザインタフェースをXMLなどの記述言語で記述し、ブラウザで記述言語を実行することでユーザインタフェースを実現する技術が知られている。現在広く普及しているHTMLとウェブブラウザはその一例である。例えば特許文献１に記載されている、W3C(http://www.w3c.org)が策定しているSVG(Scalable Vector Graphics)も、XMLベースの記述言語であり、ユーザインタフェースを記述する言語としての応用も進んでいる。同じくW3Cが策定しているVoiceXMLという記述言語は、音声によるインタラクションを記述する言語である。
【０００３】
【特許文献１】特開２００４−１６４２０８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ユーザインタフェースは、ボタンやスライダー、プルダウンメニューといった「部品」によって構成されるのが一般的である。「ボタンを押したらへこんで見える」など、同じ種類の部品は同じ性質を持つ。部品を作成し、これをユーザインタフェースに配置することで、ユーザインタフェースの開発者は、「押したらへこんで見える」といった振る舞いを何度もプログラムする必要がなくなる。
【０００５】
一方、部品は、ただ配置するだけでなく、使い方によって、色を変えたり、文字列を変えたりする。例えば、「ＯＫ」を表すボタンと、「キャンセル」を表すボタンは、「押したらへこんで見える」といった振る舞いは共通である。しかし、その上に表示される文字列は異なり、ユーザインタフェースのデザインによっては、違うビットマップファイルを使ってボタンを表現することもある。
【０００６】
HTMLの場合、＜input type="button"＞で表現されるボタンや、＜select＞で表現されるプルダウンメニューなど、いくつかのGUI部品が定義されている。しかし、こうしたあらかじめ用意された部品は、その見た目はブラウザに規定され、見た目を自由にカスタマイズすることは難しい、という問題がある。
【０００７】
これに対し、SVGを用いれば、視覚効果の高いGUIが構築可能である。SVGは、直線、矩形、パスなどのベクトル表現の組み合わせでGUIを記述する。ボタンのような抽象度の高い部品は用意されておらず、ベクトル表現の組み合わせで実現することになり、その記述は複雑になる。＜image＞要素で別のSVGファイルを参照することによって参照先のSVG文書を再利用することは可能であるが、これは表示を再利用できるだけであり、「ボタンを押したらへこんで見える」といった振る舞いまで部品化して再利用できるわけではない。
【０００８】
W3Cが策定を進めているsXBL(http://www.w3.org/TR/sXBL/)は、SVGの部品化の問題を解決するための一つの方法として注目されている。sXBLを用いれば、ボタンなどをSVGで記述し、「押したらへこんで見える」といった振る舞いも含めて部品として定義することが可能になる。こうして記述された部品を、別のSVG文書で取り込んで再利用することができる。しかし、sXBLはSVGとは別の言語であり、すでに存在するSVG文書を別のSVG文書でユーザインタフェースの部品として再利用したいような場合には、sXBLは介入できない。
【０００９】
HTMLの＜frame＞や＜iframe＞は、ページの中のフレーム内に、別のページを表示する仕組みであり、これは、すでに存在するHTMLを、別のHTMLで再利用する仕組みと言える。しかし、親のHTMLとフレーム内のHTMLとの間で可能な相互作用は限られている。例えば、ユーザインタフェースでは、同じボタンを２つ配置しても、それぞれ別の色にしたり、ビットマップを貼り替えたりすることが多い。しかし、＜frame＞や＜iframe＞では、親のHTMLの記述によって、フレーム内のHTMLの属性(色、ビットマップなど)を変更することはできない。
【００１０】
本発明は、ユーザインタフェースを構成する部品をユーザインタフェース記述言語で記述することができ、もって部品の再利用を容易にすることを目的とする。
【課題を解決するための手段】
【００１１】
本発明の一側面は、ユーザインタフェースの動作を制御する情報処理装置に関する。この情報処理装置は、入力情報、出力情報、制御情報を含む第１および第２ユーザインタフェース記述文書を記憶する記憶部と、前記第１および第２ユーザインタフェース記述文書を解析する解析部とを有する。これによりこの情報処理装置は、前記解析によって得られたユーザインタフェース情報を管理する。また、この情報処理装置は、前記入力情報に従って入力を制御する入力部と、前記出力情報に従って出力を行う出力部と、前記制御情報に従ってユーザインタフェースの動作を制御する制御部とを有する。前記第１ユーザインタフェース記述文書は、前記第２ユーザインタフェース記述文書を参照する指示を含む。前記解析部は、前記第１ユーザインタフェースおよびその参照先である前記第２ユーザインタフェース記述文書を解析する。前記管理部は、解析された前記第１および第２ユーザインタフェース記述文書のユーザインタフェース情報を統合して管理する。前記制御部は、前記第１ユーザインタフェース記述文書の制御情報と前記第２ユーザインタフェース記述文書の制御情報の両方に従った動作を実現する。前記第１ユーザインタフェース記述文書はさらに、参照先である前記第２ユーザインタフェース記述文書における属性およびその属性値を指定する記述を含む。さらにこの第１ユーザインタフェース記述文書は、該指定の記述に従って、前記第２ユーザインタフェース記述文書の入力情報、出力情報、制御情報の属性値を書き換える書き換え部を有する。そして、前記入力部、出力部、制御部はそれぞれ、前記書き換え部によって書き換えられた内容に応じて、入力、出力、制御を行う。
【発明の効果】
【００１２】
本発明によれば、ユーザインタフェースを構成する部品をユーザインタフェース記述言語で記述することができ、部品の再利用が容易になる、という効果が生まれる。
【発明を実施するための最良の形態】
【００１３】
以下、図面を参照して本発明の好適な実施形態について詳細に説明する。なお、本発明は以下の実施形態に限定されるものではなく、本発明の実施に有利な具体例を示すにすぎない。また、以下の実施形態の中で説明されている特徴の組み合わせの全てが本発明の課題解決手段として必須のものであるとは限らない。
【００１４】
（実施形態１）
本実施形態では、ＧＵＩ（グラフィカルユーザインタフェース）の代表的な部品の一つである「ボタン」を、ＸＭＬベースのユーザインタフェース記述文書で作成するケースを説明する。以下では、「ユーザインタフェース」のことを「ＵＩ」という。ＵＩ記述文書は、図３の３０１のように、ＸＭＬで書かれた文書であり、パーソナルコンピュータ（ＰＣ）上で動作するブラウザ３０２がこれを解釈して実行することによって、本実施形態のＵＩが実現される。
【００１５】
図１は、本実施形態に係るブラウザ３０２の機能構成を示すブロック図である。
【００１６】
同図において、１０１は文書解析部であり、ＵＩ記述文書３０１を解析する。１０２は、ＵＩ情報管理部であり、文書解析部１０１が解析した結果得られるＵＩ情報を管理する。１０３は、入力部であり、ユーザからの入力を受け付ける。１０４は、対話制御部であり、ＵＩ記述文書３０１に含まれるＵＩの振る舞いの情報に基づいて、ＵＩを制御する。１０５は、表示部であり、ＵＩ記述文書３０１に含まれる表示情報に基づいて、ＵＩの表示を行う。
【００１７】
図２は、本実施形態に係るＰＣのハードウェア構成を示すブロック図である。
【００１８】
同図において、２０１はＣＰＵであり、このＰＣの動作をつかさどる。２０２はＲＡＭであり、ＣＰＵ２０１のワークエリアを提供する。２０３はＲＯＭであり、固定的なデータやプログラムを記憶している。２０４は表示装置である。２０５はハードディスクであり、ここにＵＩ記述文書３０１やブラウザ３０２などが記憶される。２０６はバスである。
【００１９】
つぎに、ボタンを実現するＵＩ記述文書について説明する。図１３に示される文書例１のbutton.htmlは、ボタンの記述例である。本実施形態では、W3C(World Wide Web Consortium)が策定した標準言語仕様であるXHTML(http://www.w3.org/TR/xhtml1/)に基づいて記述している。button.htmlにおいて、(7)(8)の＜img＞要素は、「出力情報」としての、XHTMLで定義された画像を表現する要素である。"src"属性は表示する画像ファイルを指定する。"style"要素は、その画像の表示位置、サイズなどの表示属性を指定する。ここで用いられている表示属性は以下のとおりである。
【００２０】
top : 表示位置y座標。画面上から何ポイント下かを意味する。
left : 表示位置x座標。画面左から何ポイント右かを意味する。
width : 部品の横サイズ。
height : 部品の縦サイズ。
visibility : 初期状態でその画像が表示されるか非表示か。
【００２１】
(7)に示される＜img＞要素は、画面左上にビットマップファイル“images/up1.bmp”を表示する。これは、通常状態のボタンを表現するビットマップである。一方の(8)は、“images/down1.bmp”を同じ位置に表示するものであるが、"visibility”属性の値が“hidden”なので、最初は非表示とされる。このビットマップは、押し込まれた状態のボタンを表現するものである。button.htmlをブラウザ３０２で表示すると、図４の（ａ）のようになる。
【００２２】
さて、図１３において、(1)の＜cmm:interaction＞要素とその子孫要素は、XHTMLの仕様にはない、独自の仕様である。ここには、「制御情報」としてのボタンの振る舞いが記述されている。(2)の＜cmm:state＞要素は状態を表現し、(3)の＜ev:listener＞要素は、その状態で起こったイベントを、そして、(4)(5)など、その子要素は、そのイベントが起こったときにとるべきアクションを表現している。
【００２３】
(3)のイベントの表現には、W3Cの仕様であるXML Events(http://www.w3.org/TR/xml-events/)を用いている。(3)は、“ImageUp”というターゲットに、“mousedown”というイベントが起こったことを意味している。“ev:observer”はIDの参照であり、“ImageUp”をIDに持つ要素、すなわち、(7)の＜img＞要素を指す。従って、(3)は、「(7)のビットマップの上でマウスが押下された」というイベントを意味する。
【００２４】
(4)の＜cmm:operate＞要素は、オブジェクトの操作を意味する。“name”属性は操作名であり、“Hide”は「非表示にする」という操作である。“component”属性は、操作対象のオブジェクトのID参照であり、“ImageUp”は(7)の＜img＞要素を指す。つまり、(4)は、「(7)のビットマップを非表示にする」というアクションを表している。
【００２５】
同様に、(5)は、「(8)のビットマップを表示する」という意味である。
【００２６】
総合すると、通常状態のボタンを表す(7)のビットマップの上でマウス押下すると、(8)のビットマップ、すなわち、押し込まれたボタンのビットマップに表示が切り替わる、という振る舞いが記述されていることになる。実際に、ブラウザ３０２がここで記述された動作を実行した場合、(7)のビットマップの上でマウス押下されたときのブラウザ３０２の表示は、図４の（ｂ）のようになる。
【００２７】
同様に、(6)の＜ev:listener＞要素で囲まれた範囲は、(8)のビットマップの上でマウスを離すと通常状態のボタン表現である(7)に切り替わることを表現している。こうして、「クリックすると押されたように見える」ボタンが表現できることになる。
【００２８】
ここまでは、従来の技術を用いても実現可能である。例えば、HTMLの中で、Java（登録商標）Scriptを用いて、イベントなどに基づく振る舞いを記述することができ、これをウェブブラウザで実行すれば、上述のようなボタンを実現できる。しかし、一般に、ＵＩにおいて、ボタンは、一つだけでなく、同一画面に複数配置されることが多い。しかも、配置した各ボタンの色、絵柄、文字列などはそれぞれ異なるのが普通である。そこで、button.htmlを一つの部品として、別のＵＩ記述言語の中で再利用する方法を以下で説明する。
【００２９】
図１４に示される文書例２のUISample1.htmlは、図１３の文書例１のbutton.htmlと同じ言語仕様で書かれたＵＩ記述言語の例である。
【００３０】
図１４において、(1)の＜cmm:CustomControl＞要素は、部品を意味する。ただし、このタグ自体は、ボタンやスライダーなどの具体的な部品を意味するものではない。部品の具体的な内容は、“definition”属性で指定する。(1)の“definition”属性の値は、“button.html”となっている。つまり、(1)は、前述のbutton.htmlで記述した「ボタン」を、このＵＩの画面上に配置することを意味している。“style”属性は、文書例１の“style”属性と同じ意味であり、(1)は、button.htmlで記述されたボタンを、画面上から６２ポイント、画面左から４０ポイントの位置に配置すると表す。
【００３１】
(2)の＜cmm:CustomControl＞要素も同様である。“definition”要素は、(1)と同じ“button.html”であるので、同じボタンを配置することを表す。ただし、(2)は、まず、“style”属性から、配置位置が(1)とは異なる。従って、(1), (2)合わせて２つのボタンを異なる位置に配置することになる。
【００３２】
(2)の＜cmm:CustomControl＞要素は、さらに、(3), (4)の＜cmm:property＞要素を持つ。これらは、“definition”属性で指定された部品記述文書、ここでは、button.htmlの中の特定の属性値を置き換える指示を意味するものである。“targetID”属性は、部品記述文書内のオブジェクトのIDを指定するものである。属性値“ImageUp”は、button.htmlの中で、“ImageUp”をIDに持つオブジェクト、すなわち、文書例１の(7)の＜img＞要素となる。“targetattribute”属性は、その指定されたオブジェクトのどの属性の値を置き換えるかを指定するものである。属性値は“src”なので、文書例１の(7)の＜img＞要素の“src”属性の値を置き換える指示であることを意味する。最後の“value”属性は、置き換える値である。属性値は“images/up2.bmp”なので、結局、(3)は、文書例１の(7)の＜img＞要素の“src”属性の値を、“images/up2.bmp”、すなわち別のビットマップに置き換える指示を表すことになる。同様に、(4)は、文書例１の(8)の＜img＞要素の“src”属性の値を、“images/down2.bmp”に置き換える指示を表す。
【００３３】
このように、図１４の(2)の＜cmm:CustomControl＞要素は、図１３のbutton.htmlに記述されたものとは異なるビットマップを用いたボタンとして表現されることになる。一方の図１４の(1)の＜cmm:CustomControl＞要素は、＜cmm:property＞要素を子要素に持たないので、図１３のbutton.htmlに記述されたビットマップなどをそのまま用いたボタンとして表現されることになる。
【００３４】
文書例２のUISample1.htmlを、ブラウザ３０２で実行すると、図５のように、絵柄の異なる２つのボタンを別の位置に配置した表示になる。各ボタンは、button.htmlで記述されたとおりに動作するので、いずれも、その上でマウス押下されたら押された表示に切り替わり、マウスが放されたら元の表示に戻る。
【００３５】
次に、図６のフローチャートを用いて、ブラウザ３０２が図１４のＵＩ記述文書UISample1.htmlを実行したときの処理の流れを説明する。
【００３６】
まず、ＵＩ記述文書UISample1.htmlを解析する(Ｓ６０１)。その後、記述の中に、部品配置の記述、すなわち、＜cmm:CustomControl＞要素があるかどうかを判断する（Ｓ６０２）。ここでそのような部品配置の記述がなければ、そのＵＩ記述の内容を木構造表現したデータを生成し、これをＲＡＭ２０２に保持する(Ｓ６０３)。
【００３７】
一方、そのような部品配置の記述がある場合には、“definition”属性からその記述文書のURIを取得し、その記述文書を取得して、解析する(Ｓ６０４)。UISample1.htmlの場合、“definition”属性で指定されたURIは、“button.html”なので、button.htmlを解析することになる。解析の結果、その部品記述の内容を木構造表現したデータを生成し、これをＲＡＭ２０２に保持する(Ｓ６０５)。その後、上記Ｓ６０３を実行し、前記ＵＩの木構造データとＳ６０５で得られた部品の木構造データとを接続する。
【００３８】
こうしてできたＵＩの木構造データに基づいて、ＵＩの表示を行う(Ｓ６０６)。表示の後は、ユーザからの入力イベントなどに応じ、文書例1の＜cmm:interaction＞要素による振る舞いの記述に沿った動作を実行する(S6０7)。
【００３９】
Ｓ６０３で生成される木構造データは、図７のようになる。７０１が、ＵＩ記述文書UISample1.htmlを解析した結果を表現する木構造データである。７０１１、７０１２はそれぞれ、文書例2の(1),(2)の＜cmm:CustomControl＞要素に対応するメモリ上のオブジェクトである。７０２、７０３はいずれも、button.htmlを解析した結果を表現する木構造データである。７０２は、文書例2の(1)の＜cmm:CustomControl＞要素から指定されたbutton.htmlに対応し、７０３は、文書例2の(2)の＜cmm:CustomControl＞要素から指定されたbutton.htmlに対応する。
【００４０】
７０２２、７０２３はそれぞれ、文書例1の(7),(8)の＜img＞要素に対応するメモリ上のオブジェクトである。それぞれ、“src”属性値で指定されるビットマップファイルのパス文字列、“images/up1.bmp”、“images/down1.bmp”を保持する。
【００４１】
７０３２、７０３３はそれぞれ、文書例1の(7),(8)の＜img＞要素に対応するメモリ上のオブジェクトである。文書例2の(3),(4)の記述によって、“src”属性値の置き換えが指示されているので、それぞれ、置き換え後の文字列である、“images/up2.bmp”、“images/down2.bmp”を保持する。
【００４２】
Ｓ６０６の表示は以下のように行う。図７の木構造データに属するオブジェクトの中で、表示の対象になるのは、７０２２、７０２３、７０３２、７０３３である。それぞれが表示するビットマップファイルは決まっているので、あとは表示位置である。
【００４３】
７０２２のビットマップを表示する位置を計算する方法を説明する。文書例１の(7)のstyle属性値から、部品button.htmlの中でのビットマップの表示位置は、(top1、left1)=(0、0)である。しかし、この部品自体は、文書例2の(1)のstyle属性値から、(top0、left0)=(62、40)なので、７０２２のビットマップの最終的な表示位置は、
(top,left) = (top0+top1, left0+left1) = (62+0, 40+0) = (62,40)
となる。
【００４４】
同様に、７０２３、７０３２、７０３３の表示位置は、
7023:(top, left) = (62+0, 40+0) = (62,40)、
7032:(top, left) = (62+0, 220+0) = (62,220)、
7033:(top, left) = (62+0, 220+0) = (62,220)
となる。
【００４５】
以上のようにすることで、一度作成したボタンという部品の記述文書を、別のＵＩ記述文書で何度も再利用できる。さらに、プロパティ設定の記述（文書例2の(3),(4)）によって、ボタンの基本的な性質はそのまま再利用しつつ、ビットマップファイルを置き換えるなど、必要に応じて、配置した個々の部品の属性を変えることができる。
【００４６】
（実施形態２）
上述の実施形態１では、文書例1（button.html）のように、ボタンという部品そのものの振る舞い（押したら押した状態の見た目に変わる）の記述はされていた。しかしながら、部品を配置するＵＩの記述は、文書例２(UISample1.html)のように、振る舞いの記述は含まれていなかった。しかし、一般には、ＵＩの振る舞いとして、配置した部品を操作する動作を含むことが多い。例えば、あるボタンが押されたら、別の部品を操作不可の状態(disable)にするといった振る舞いは、ＵＩとしてよく現れる振る舞いである。そこで本実施形態２では、部品の操作を実現するＵＩ記述文書の記述方法とブラウザによるその処理方法を説明する。
【００４７】
部品としては、スライダーを例にとる。図１５Ａ〜１５Ｃに示される文書例3のslider.htmlは、ＵＩ記述言語でスライダーを記述したものである。この中の(9)〜(12)の＜img＞要素は、「出力情報」としての、スライダーを表現する画像である。これは、図８の８０１のような４つのビットマップファイルを配置することを意味する。４つのビットマップファイルは、スライダーのつまみ位置が互いに異なるものを表現している。いずれも、(top、left)=(0、0)の位置に重ねて配置している。(9)以外は、“visibility”属性の値が“hidden”なので、初期状態では非表示となる。従って、slider.htmlをブラウザ３０２で実行すると、図８の８０２のようになる。
【００４８】
この部品の振る舞いは、実施形態１の文書例１(button.html)と同様、＜cmm:interaction＞要素とその子孫要素で記述する。文書例３では、４つの＜cmm:state＞要素があるので、このスライダーは４つの状態を持つことを表している。つまみ位置が４つあるので、それぞれのつまみ位置に対応して、状態を定義しているわけである。
【００４９】
(1)の＜cmm:state＞要素は、つまみが一番左にある状態を意味する。この状態では、(2),(3),(4)の３つのイベントとそれに対するアクションが記述されている。
【００５０】
(2)は、「この状態に入った」というイベントであり、対応するアクションは、“imgSlider0”をIDに持つオブジェクト、すなわち、(9)の＜img＞要素を表示する、である。
【００５１】
(3)は、「この状態から抜けた」というイベントであり、対応するアクションは、(9)の＜img＞要素を非表示にする、である。
【００５２】
(4)の“operation.MoveRight”というイベントは、「この部品に対して、“MoveRight”という操作が指示された」というイベントである。
【００５３】
このように、部品に対する操作は、部品から見た場合、イベントとして表現する。このイベントに対するアクションは、(5)の＜cmm:goto＞要素で記述されている。これは、“href”属性で指定された状態(この場合“state1”)へ遷移する、というアクションである。他の３つの状態でも同様の記述がされているので、詳細説明は省略する。
【００５４】
この振る舞い全体をまとめると、「ある状態では、対応するビットマップを表示し、“MoveRight”や“MoveLeft”などの操作指示があったら、別の状態に遷移する」ということになる。“MoveRight”、“MoveLeft”の意味は、後述するように、「つまみを右/左に動かす」という操作であるので、こうした操作に応じて、つまみ位置の異なる画像を切り替えて表示する、という振る舞いになる。
【００５５】
続いて、このスライダーという部品を配置するＵＩ記述言語の例について説明する。
【００５６】
図１６に示される文書例４(UISample2.html)で記述されたＵＩは、(3),(4),(5)の３つの部品を配置している。このうち、(3),(4)は、XHTMLで定義されているボタンである。(3),(4)の＜input＞が「入力情報」の例を示している。このタグはXHTMLでボタンを意味する。ボタンであるから、クリックにより入力することができる。このタグはボタンの表示も意味するので、「出力情報」でもある。一方、(5)は、文書例３で定義されたスライダーである。一方、振る舞いは、一つの状態が定義され、２つのイベントとそれぞれに対するアクション(1),(2)が記述されている。
【００５７】
まず、(1)は、“Left”というIDを持つオブジェクト、すなわち、(3)のボタンがクリックされた、というイベントに対するアクションである。アクションは、＜cmm:operate＞なので、オブジェクトに対する操作を表す。操作名は、“name”属性の“MoveLeft”であり、操作対象オブジェクトは、(5)のスライダーである。
【００５８】
(2)は同様に、(4)のボタンがクリックされた、というイベントに対するアクションであり、(5)のスライダーに対し、“MoveRight”という操作を指示する、という意味である。
【００５９】
このように、ＵＩの記述として、配置した部品に対する操作が記述できる。
【００６０】
次に、ブラウザ３０２が、ＵＩ記述文書UISample2.htmlを実行したときの処理について説明する。
【００６１】
基本的な処理フローは、図６に基づいて実施形態1で説明したものと同じである。S606で表示したときのブラウザの表示画面は、図９のようになる。901は、文書例4の(5)の部品であり、902、903は、それぞれ、(4),(3)で記述されたボタンである。以降は、部品に対する操作を実現する処理の説明として、S607の「記述に応じた実行」の中身を詳細に説明する。
【００６２】
図１０は、Ｓ６０３の処理で生成された木構造データの一例を示す図である。１００１が、UISample2.htmlの内容を表現した木構造データであり、１００２が、slider.htmlの内容を表現した木構造データである。文書例４の＜cmm:interaction＞とその子孫要素で記述された振る舞いに関する情報は、１００１１のオブジェクトが保持している。ボタン９０３が押されると、オブジェクト１００１１は、記述内容に沿って、文書例４(2)のアクションを実行しようとする。前述のとおり、これは、文書例４の部品(5)に対する“MoveRight”という操作である。
【００６３】
文書例4の(5)に対応するオブジェクトは１００１２である。オブジェクト１００１２は、これを、“operate.MoveRight”というイベントに変換し、このイベントを、スライダーの振る舞いを管理するオブジェクト１００２１に通知する。オブジェクト１００２１は、“operate.MoveRight”イベントをキャッチすると、文書例3の(4)の記述に従って、文書例3の(5)のアクションを実行し、文書例3の(6)の状態に遷移する。遷移する際、文書例3の(3)の「この状態を抜けた」というイベントが発生するので、その中のアクションが実行され、文書例3の(9)のビットマップが非表示にされる(“Hide”操作)。
【００６４】
一方、文書例3の(6)の状態に遷移した際、文書例3の(7)に記述により、「この状態に入った」というイベントに対応する文書例3の(8)のアクションが実行され、文書例3の(10)のビットマップが表示される(“Show”操作)。
【００６５】
このようにして、スライダーのつまみが一つ右に移動するように見える。
【００６６】
以上のようにすることで、一度作成したスライダーという部品の記述文書を、別のＵＩ記述文書で再利用でき、その部品に対する操作を実現することができる。
【００６７】
（実施形態３）
上述の実施形態１，２では、ＵＩ記述文書で定義される部品は画像(ビットマップ)のみから構成されていたが、テキストや音声が含まれていても良い。ここでは、音声を含む例として、押すと所定の音が鳴るボタンの例を示す。
【００６８】
図１１は、本実施形態に係るブラウザの機能構成を示すブロック図である。基本的には図１に示した構成と同様であるが、図１１では音声出力部１１０１が追加されている。
【００６９】
図１７に示される文書例5（SoundButton.html）は、図１３の文書例1に、音声出力に関する記述を加えたものである。(2)は、“src”属性値の“sound/chime1.wav”で指定された音声ファイルを再生するための音声出力部品である。(1)は、(2)の部品に対し、音声を再生する(“Play”)操作である。つまり、ビットマップ上でマウス押下されると、押された状態のビットマップに切り替わると同時に、“sound/chime1.wav”で指定された音が鳴る、という振る舞いになる。
【００７０】
図１８に示される文書例６（UISample3.html）は、図１７の文書例5のSoundButton.htmlを利用したＵＩ記述文書の例である。これは、文書例2のUISample1.htmlに、(1)のプロパティ設定を加え、部品定義の属性“definition”に、“SoundButton.html”を指定したものである。文書例２のUISample1.htmlと同様、2つのボタンを配置して、プロパティ設定によって一方のビットマップを別のものに置き換える。ここではこれに加え、(1)のプロパティ設定によって、マウス押下したときに再生する音声ファイルを“sound/chime2.wav”に置き換えている。こうすることにより、2つのボタンの見た目が変わるのに加え、マウス押下時の音も違う音にすることができる。
【００７１】
（実施形態４）
上述の実施形態１〜３では、部品記述文書の中の、表示や音声出力など、出力に関する属性値を置き換えるケースについて説明したが、ユーザからの入力イベントにも適用可能である。例えば、部品記述文書がVoiceXMLで記述されており、これが、次のような音声入力要素＜field＞を含む場合を考える。
【００７２】
＜field name=“input”＞
＜grammar src=“grammar1.srgs”/＞
＜/field＞
【００７３】
この場合、その音声入力要素に対応する音声認識文法ファイルを指定する要素＜grammar＞の“src”属性の値を書き換えることで、部品ごとに別の音声認識文法で音声認識を行うことが可能になる。
【００７４】
（実施形態５）
上述の実施形態１〜４では、一台のＰＣ上に、ブラウザ、部品記述文書、それを利用するＵＩ記述文書が一緒に存在するケースについて説明した。しかし、部品記述文書、ＵＩ記述文書は、ブラウザが動作するＰＣとは異なるコンピュータ上に存在してもよい。
【００７５】
図１２に本実施形態に係るシステム構成例を示す。同図におけるシステムは、ブラウザ１２０５が動作するクライアントＰＣ１２０１、ＵＩサーバ１２０２、部品サーバ１２０３がそれぞれ、インターネット１２０４を介して接続される構成である。
【００７６】
ＵＩサーバ1202は、図１９に示される文書例７（UISample4.html）を保持している。部品サーバ1203は、文書例１のbutton.htmlを保持している。ブラウザ1205は、インターネット1204を経由して、UISample4.htmlをダウンロードする。ここからは、図６のフローチャートに沿った処理となる。Ｓ６０２の部品配置記述の有無判定において、文書例7の(1),(2)によって「有る」と判定することになる。この場合、“definition”属性値は、“http://widgets/button.html”という記述である。このため、http://widgets/で指定されるサーバ1203にHTTPでアクセスし、button.htmlをインターネット経由で取得する。
【００７７】
このようにして、ネットワークを介した部品の再利用が可能になる。
【００７８】
（実施形態６）
上述の実施形態１〜５では、XHTMLをベースにしたＵＩ記述言語を用いたが、SVGやVoiceXMLなど、別のＵＩ記述言語を用いてもよい。
【００７９】
（他の実施形態）
以上、本発明の実施形態を詳述した。上述のとおり、本発明は、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
【００８０】
なお、本発明は、前述した実施形態の各機能を実現するプログラムを、システムまたは装置に直接または遠隔から供給し、そのシステムまたは装置に含まれるコンピュータがその供給されたプログラムコードを読み出して実行することによっても達成される。
【００８１】
従って、本発明の機能・処理をコンピュータで実現するために、そのコンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、上記機能・処理を実現するためのコンピュータプログラム自体も本発明の一つである。
【００８２】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【００８３】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷなどがある。また、記録媒体としては、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などもある。
【００８４】
また、プログラムは、クライアントコンピュータのブラウザを用いてインターネットのホームページからダウンロードしてもよい。すなわち、ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードしてもよい。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードする形態も考えられる。つまり、本発明の機能・処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明の構成要件となる場合がある。
【００８５】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布してもよい。この場合、所定条件をクリアしたユーザにのみ、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報で暗号化されたプログラムを復号して実行し、プログラムをコンピュータにインストールしてもよい。
【００８６】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現されてもよい。なお、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行ってもよい。もちろん、この場合も、前述した実施形態の機能が実現され得る。
【００８７】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれてもよい。そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行ってもよい。このようにして、前述した実施形態の機能が実現されることもある。
【図面の簡単な説明】
【００８８】
【図１】ブラウザの機能構成を示すブロック図である。
【図２】ＰＣのハードウェア構成図である。
【図３】ユーザインタフェース記述言語とそれを処理するブラウザの例を示す図である。
【図４】ボタンのユーザインタフェース記述文書をブラウザで実行したときの表示例を示す図である。
【図５】ボタンを２つ配置したユーザインタフェース記述文書をブラウザで実行したときの表示例を示す図である。
【図６】ブラウザの動作を説明するフローチャートである。
【図７】木構造データの一例を示す図である。
【図８】スライダーを構成するビットマップファイルと、スライダーを記述するユーザインタフェース記述文書をブラウザで実行したときの表示例を示す図である。
【図９】ユーザインタフェース記述文書をブラウザで実行したときの表示例を示す図である。
【図１０】木構造データの一例を示す図である。
【図１１】ブラウザの機能構成を示すブロック図である。
【図１２】実施形態５に係るシステム構成例を示す図である。
【図１３】実施形態１に係るボタン部品を記述するユーザインタフェース記述文書の一例を示す図である。
【図１４】図１３で定義されたボタン部品を利用したユーザインタフェース記述文書の別の例を示す図である。
【図１５Ａ】、
【図１５Ｂ】、
【図１５Ｃ】実施形態２に係るスライダー部品を記述するユーザインタフェース記述文書の一例を示す図である。
【図１６】図１５Ａ−Ｃで定義されたスライダー部品を利用したユーザインタフェース記述文書の一例を示す図である。
【図１７】実施形態３に係る音声出力に関する記述を含んだユーザインタフェース記述文書の一例を示す図である。
【図１８】図１７で定義された部品を利用したユーザインタフェース記述文書の一例を示す図である。
【図１９】実施形態５に係るＵＩサーバが保持するユーザインタフェース記述文書の一例を示す図である。
【図１】
2008033560.tif 000003
【図２】
2008033560.tif 000004
【図３】
2008033560.tif 000005
【図４】
2008033560.tif 000006
【図５】
2008033560.tif 000007
【図６】
2008033560.tif 000008
【図７】
2008033560.tif 000009
【図８】
2008033560.tif 000010
【図９】
2008033560.tif 000011
【図１０】
2008033560.tif 000012
【図１１】
2008033560.tif 000013
【図１２】
2008033560.tif 000014
【図１３】
2008033560.tif 000015
【図１４】
2008033560.tif 000016
【図１５Ａ】
2008033560.tif 000017
【図１５Ｂ】
2008033560.tif 000018
【図１５Ｃ】
2008033560.tif 000019
【図１６】
2008033560.tif 000020
【図１７】
2008033560.tif 000021
【図１８】
2008033560.tif 000022
【図１９】
2008033560.tif 000023