(57)【要約】【課題】組み込み機器のために動的な表現に富んだＧＵＩを短期及び低コストで開発できること。【解決手段】ユーザーインタフェース提供装置（１００）は、イベントに応じ、テンプレート（１０４）及びユーザーインタフェースのための画面の設計情報（１０５）に基づいて少なくとも一部が構造化文書ファイルで構成された静的コンテンツを動的に生成する静的コンテンツ生成手段（１０２）と、静的コンテンツを解釈し、表示部（１１１）に画面を表示させるブラウザプログラム（２００）から、画面に対して行われたユーザによる操作に関するユーザ操作情報を取得し、組み込み機器（１２１）の制御を行うネイティブプログラム（３００）に対して、ユーザ操作情報に対応する組み込み機器の制御に関する制御情報を出力する制御要求手段と、を有する。【選択図】図１
2020095308.tif 000002
【特許請求の範囲】
【請求項１】
イベントに応じ、テンプレート及びユーザーインタフェースのための画面の設計情報に基づいて少なくとも一部が構造化文書ファイルで構成された静的コンテンツを動的に生成する静的コンテンツ生成手段と、
前記静的コンテンツを解釈し、表示部に前記画面を表示させるブラウザプログラムから、前記画面に対して行われたユーザによる操作に関するユーザ操作情報を取得し、組み込み機器の制御を行うネイティブプログラムに対して、前記ユーザ操作情報に対応する前記組み込み機器の制御に関する制御情報を出力する制御要求手段と、を有することを特徴とするユーザーインタフェース提供装置。
【請求項２】
前記イベントは、前記ブラウザプログラムが検出した前記画面に対して行われたユーザによる操作であり、前記画面の構成要素のうち少なくとも一部を更新させることを特徴とする請求項１記載のユーザーインタフェース提供装置。
【請求項３】
請求項１又は請求項２に記載のユーザーインタフェース提供装置を含む組み込み機器。
【請求項４】
組み込み機器によって実行され、
イベントに応じ、テンプレート及びユーザーインタフェースのための画面の設計情報に基づいて少なくとも一部が構造化文書ファイルで構成された静的コンテンツを動的に生成するステップと、
前記静的コンテンツを解釈し、表示部に前記画面を表示させるブラウザプログラムから、前記画面に対して行われたユーザによる操作に関するユーザ操作情報を取得し、前記組み込み機器の制御を行うネイティブプログラムに対して、前記ユーザ操作情報に対応する前記組み込み機器の制御に関する制御情報を出力するステップと、
を有することを特徴とするユーザーインタフェース提供方法。
【請求項５】
組み込み機器に、
イベントに応じ、テンプレート及びユーザーインタフェースのための画面の設計情報に基づいて構造化文書ファイルで構成された静的コンテンツを動的に生成する手順と、
前記静的コンテンツを解釈し、表示部に前記画面を表示させるブラウザプログラムから、前記画面に対して行われたユーザによる操作に関するユーザ操作情報を取得し、前記組み込み機器の制御を行うネイティブプログラムに対して、前記ユーザ操作情報に対応する前記組み込み機器の制御に関する制御情報を出力する手順と、
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザーインタフェース提供装置、ユーザーインタフェース提供方法、プログラム及び組み込み機器に関する。
【背景技術】
【０００２】
従来、組み込み機器向けのＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）として、ＨＴＭＬファイルなどの構造化文書を表示するブラウザプログラムを利用する技術が知られている。このような組み込み機器では、その内部の情報を取得及び設定可能な、ネイティブコードで記述されたプログラム（以下、「ネイティブプログラム」と記載する）を用意し、ネイティブプログラムとブラウザプログラムとを連係させることで、ブラウザプログラムを利用した組み込み機器の状態表示や各種の設定を実現している（例えば、特許文献１参照）。
【０００３】
ブラウザプログラムにＧＵＩを実現させるためには、画面を構成するためにブラウザプログラムが解釈し、描画可能なコンテンツ（以下、「ブラウザ表示可能コンテンツ」と省略する）が必要である。そのため、画面設計に基づき、ＨＴＭＬ、ＣＳＳ及びＪａｖａｓｃｒｉｐｔ（登録商標）などを用いたコーディング（以下、「ＨＴＭＬコーディング」と記載する）を行う必要がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−８４９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＨＴＭＬコーディングは、Ｃ言語などのネイティブ言語を用いたコーディングに比べて、ツールが比較的安く、かつ、コーディングを行う者に求められるスキルも比較的低いという利点がある。
【０００６】
しかしながら、コーディングを行う必要があることには変わりがない。また、ＨＴＭＬコーディングにより作成されたブラウザ表示可能コンテンツが適切であるかどうかテストする必要がある。特に、ＧＵＩの表現を動的にするためには、Ｊａｖａｓｃｒｉｐｔのようなスクリプトをブラウザ表示可能コンテンツに組み込む必要がある。この場合、ブラウザプログラムは、スクリプトを解釈及び実行し、ＨＴＭＬファイルの一部を変更し、変更後のＨＴＭＬファイルを解釈及び描画し、画面の一部を更新する。このため、ブラウザ表示可能コンテンツを実際にブラウザプログラムで解釈し、スクリプトを実行し、画面が適切に更新されるか試してみる必要がある。したがって、ＨＴＭＬコーディングでも、ネイティブ言語を用いたコーディングと同様に、開発の期間が長くなり、コストがかさむおそれがある。
【０００７】
また、ユーザが望む操作を組み込み機器に実行させるためには、例えば、ブラウザ表示可能コンテンツの中にスクリプトを埋め込む。そして、ブラウザプログラムに当該スクリプトを解釈及び実行させ、ネイティブプログラムと連係させ、ネイティブプログラムに組み込み機器のハードウェアを制御させる。このような制御が適切に行われるか否かを、ブラウザ表示可能コンテンツを実際にブラウザプログラムで解釈し、スクリプトを実行させて、テストする必要がある。
【０００８】
このように、ＧＵＩが正常に動作し、ユーザによる操作を組み込み機器に適切に実行させることができるか否かは、ブラウザプログラムの性能、仕様などに依拠する部分が多い。この結果、テスト項目が多く、開発の期間が長くなり、コストがかさむおそれがある。
【０００９】
本発明は、かかる点に鑑みてなされたものであり、組み込み機器のために動的な表現に富んだＧＵＩを短期及び低コストで開発できるユーザーインタフェース提供装置、ユーザーインタフェース提供方法、プログラム及び組み込み機器を提供することを目的の１つとする。
【課題を解決するための手段】
【００１０】
本発明に係るユーザーインタフェース提供装置の一態様は、イベントに応じ、テンプレート及びユーザーインタフェースのための画面の設計情報に基づいて少なくとも一部が構造化文書ファイルで構成された静的コンテンツを動的に生成する静的コンテンツ生成手段と、前記静的コンテンツを解釈し、表示部に前記画面を表示させるブラウザプログラムから、前記画面に対して行われたユーザによる操作に関するユーザ操作情報を取得し、組み込み機器の制御を行うネイティブプログラムに対して、前記ユーザ操作情報に対応する前記組み込み機器の制御に関する制御情報を出力する制御要求手段と、を有することを特徴とする。
【００１１】
本発明に係るユーザーインタフェース提供方法の一態様は、組み込み機器によって実行され、イベントに応じ、テンプレート及びユーザーインタフェースのための画面の設計情報に基づいて少なくとも一部が構造化文書ファイルで構成された静的コンテンツを動的に生成するステップと、前記静的コンテンツを解釈し、表示部に前記画面を表示させるブラウザプログラムから、前記画面に対して行われたユーザによる操作に関するユーザ操作情報を取得し、前記組み込み機器の制御を行うネイティブプログラムに対して、前記ユーザ操作情報に対応する前記組み込み機器の制御に関する制御情報を出力するステップと、を有することを特徴とする。
【００１２】
本発明に係るプログラムの一態様は、イベントに応じ、テンプレート及びユーザーインタフェースのための画面の設計情報に基づいて構造化文書ファイルで構成された静的コンテンツを動的に生成する手順と、前記静的コンテンツを解釈し、表示部に前記画面を表示させるブラウザプログラムから、前記画面に対して行われたユーザによる操作に関するユーザ操作情報を取得し、前記組み込み機器の制御を行うネイティブプログラムに対して、前記ユーザ操作情報に対応する前記組み込み機器の制御に関する制御情報を出力する手順を実行させることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、組み込み機器のために、動的な表現に富んだＧＵＩを短期及び低コストで開発できる。
【図面の簡単な説明】
【００１４】
【図１】本実施の形態に係るユーザーインタフェース提供装置に含まれるＧＵＩ提供部の構成を示すブロック図である。
【図２】本実施の形態に係るブラウザプログラムの構成を示すブロック図である。
【図３】本実施の形態に係るネイティブプログラム３００の構成を示すブロック図である。
【図４】本実施の形態に係るユーザーインタフェース提供方法の一例を示すフローチャートである。
【図５】本実施の形態に係るユーザーインタフェース提供方法によって提供される動的なＧＵＩの一例を示す模式図である。
【図６】動的コンテンツを構成する構造化文書の一例を示す説明図である。
【図７】本実施の形態に係るユーザーインタフェース提供装置が使用するテンプレートの一例を示す説明図である。
【図８】本実施の形態に係るユーザーインタフェース提供装置により生成される静的コンテンツの一例を示す説明図である。
【図９】本実施の形態に係るユーザーインタフェース提供装置により生成される静的コンテンツの一例を示す説明図である。
【図１０】本実施の形態に係るユーザーインタフェース提供装置が適用される組み込み機器の機能構成の一例を示す図である。
【図１１】本実施の形態に係るユーザーインタフェース提供装置が適用される組み込み機器のハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１５】
［発明の概要］
家電製品などの組み込み機器に搭載されるディスプレイの大型化及び高解像度化が進んでいる。このようなディスプレイで提供されるＧＵＩには、ユーザーエクスペリエンス（以下、ＵＸと記載する）をより高めることが求められ、動的な表現がより多く取り入れられる傾向がある。
【００１６】
動的な表現を、ブラウザ表示可能コンテンツで実現するには、Ｊａｖａｓｃｒｉｐｔのようなスクリプトをブラウザプログラム上で実行させる動的コンテンツを用いることが一般的である。
【００１７】
このような動的コンテンツは、バグを多く含みやすいため、ブラウザプログラムにより適切に表示され、所望の動的な表現が実現されるかどうかを確認するには、静的コンテンツに比べて、テスト項目が多くなる。
【００１８】
また、ブラウザ表示可能コンテンツで実現されたＧＵＩからユーザが望む制御をハードウェアに行わせるには、ブラウザプログラムが、スクリプトを実行し、ネイティブプログラムと連係し、ネイティブプログラムにハードウェアを制御させることが一般的である。
【００１９】
このようなスクリプトを用いた組み込み機器のハードウェアへの制御は、ハードウェアを制御するネイティブプログラム（ドライバ等）に制御情報（命令等）を出力することで行われる。そして、スクリプトは、制御情報を出力したことを契機としてＧＵＩを動的に変更し、ネイティブプログラムからのフィードバック（ハードウェアの状態変化等を含む）を反映していない。このため、ハードウェアの動作状態の変化に応じてＧＵＩの変更が適切なタイミングに行われるかどうかを確認するため、テストの手間が増えることを回避しがたい。
【００２０】
本発明者は、ネイティブ言語ではなく構造化文書を使用したＧＵＩプラットフォームにおいて、ＵＸを低下させることなく、また、ＧＵＩを介したハードウェアの制御も実現しながらも、開発コスト及び開発期間をさらに短縮することを目的とし、鋭意検討を重ねた。
【００２１】
本発明者は、静的コンテンツをイベントに応じて動的に切り替えることで動的な表現を実現すれば、動的コンテンツを用いなくてもＵＸに優れたＧＵＩを構築できることに着目した。しかしながら、それに実現するには、静的コンテンツを画面内の構成要素の更新が行われる分だけ用意しなければならない。このため、テスト項目を削減できるが、ブラウザ表示可能コンテンツの作成のための工数が膨大になってしまう。
【００２２】
そこで、本発明者は、静的コンテンツを、イベントに応じてテンプレート及び画面の設計情報に基づいて動的に生成することにより、静的コンテンツの作成の工数を減らすことができることを見出した。
【００２３】
一方、静的コンテンツを採用したことに伴い、ブラウザプログラムでスクリプトを実行してハードウェアを制御する代わりに、ネイティブプログラムに組み込み機器のハードウェアに対する制御を行わせることとした。より具体的には、まず、ブラウザプログラムが画面に対して行われたユーザによる操作に関するユーザ操作情報を取得する。そして、ブラウザプログラムが、ユーザ操作情報に対応するハードウェア制御情報をネイティブプログラムに出力する。ネイティブプログラムは、ハードウェア制御情報に従って組み込み機器のハードウェアを制御する。
【００２４】
本発明者は、上述のような新しい知見に基づいて本発明を完成した。すなわち、本発明のユーザーインタフェース提供装置は、イベントに応じ、テンプレート及びユーザーインタフェースのための画面の設計情報に基づいて少なくとも一部が構造化文書ファイルで構成された静的コンテンツを動的に生成する静的コンテンツ生成手段と、前記静的コンテンツを解釈し、表示部に前記画面を表示させるブラウザプログラムから、前記画面に対して行われたユーザによる操作に関するユーザ操作情報を取得し、組み込み機器の制御を行うネイティブプログラムに対して、前記ユーザ操作情報に対応する前記組み込み機器の制御に関する制御情報を出力する制御要求手段と、を有することを特徴とする。
【００２５】
本発明において、イベントとは、例えば、ブラウザプログラム又はネイティブプログラムで発生する事象であって、画面の構成要素のうち少なくとも一部を更新させるアクションを発生させるものを含む。
【００２６】
より具体的には、イベントは、例えば、ブラウザプログラムが検出した、ユーザーインタフェースのための画面に対して行われたユーザによる操作を含む。
【００２７】
また、イベントは、ネイティブプログラムからの画面の構成要素のうち少なくとも一部を更新させるアクションを発生させるものを含む。
【００２８】
また、本発明において、テンプレートとは、画面を構築するためのブラウザ表示可能コンテンツを構成するデータ群であって、例えば、少なくとも一つの構造化文書を含み、外部リソース（画像ファイル、動画ファイル、音声ファイルなど）を含んでいてもよい。外部リソースは、予めテンプレートに含まれていてもよいし、記憶部に別に記憶されていてもよいし、通信部を介してネットワークから取得されてもよい。
【００２９】
テンプレートは、そのままではブラウザプログラムで適切に表示できないか、又は、そのままでもブラウザプログラムで表示できるが、一部が仮の表示内容であるコンテンツであると言える。
【００３０】
例えば、テンプレートの一例としては、構造化文書の中に、ボタンのためのイメージファイルを埋め込むタグ"img"並びに属性"width"及び属性"height"が記述されているが、属性"src"は記述されていないものが挙げられる。この場合、属性"src"が記述されていないため、テンプレートを構成する構造化文書をブラウザプログラムで解釈し、描画したとき、ボタンが表示されない。このような状態を、「適正に表示できない」という。
【００３１】
また、テンプレートの他の一例としては、構造化文書の中に、ボタンに対し、当該ボタンに対応するハードウェア制御を表わす仮の文字列が記述されているものが挙げられる。例えば、ボタンに対し、ハードウェアが備える一機能のアクティベーションを意味する仮の文字列「ＯＮ」が記述されているコンテンツが考えられる。この仮の文字列「ＯＮ」は、ハードウェアが照明機器であれば、「明かりをつける」のような他の文字列に置き換えることができる。このように仮の文字列は、他の文字列に置き換え可能なようにコンテンツに記述することができる。
【００３２】
また、本発明において、ユーザーインタフェースのための画面（Ｓｃｒｅｅｎ）とは、ＧＵＩ画面設計上の単一の画面をいう。ＧＵＩ画面設計とは、組み込み機器などのＧＵＩ開発において、ユーザが操作することになる画面のレイアウト、表示項目などの設計を行うことをいう。ＧＵＩ画面設計には、個々の画面を構成する画面要素と当該画面要素のレイアウトを決定する単一画面設計と、複数の画面間の関係を決定する画面遷移設計と、画面要素に対するユーザによる操作などのイベントと、当該イベントによって発生するアクションとの関係を定義するアクション設計と、を含む。したがって、画面設計上の単一画面とは、上述の単一画面設計で対象とする個々の画面であると言える。
【００３３】
また、本発明において、画面の設計情報とは、画面の設計に関する情報をいう。設計情報には、例えば、画面レイアウト情報、画面遷移情報及びアクション情報が含まれる。
【００３４】
画面レイアウト情報は、画面を構成する画面要素及びその配置、画面要素の属性、及び、画面要素に対するユーザの操作によって発生するイベント及びそのタイミングなどを含むが、これら以外の情報が含まれていてもよい。
【００３５】
画面要素には、テキストボックス、リストボックス、ラジオボタン、ボタン（クリック又はタッチすることによりアクションが発生する）、ラベル（文字列）、画像（静止画像及び動画を含む）などが含まれるが、これらに限定されるものではない。
【００３６】
画面遷移情報は、複数の画面の流れを表す情報である。画面遷移情報は、例えば、表示される複数の画面とそれらの画面の順序関係、及び、画面から画面への遷移を起こすきっかけとなるイベントを含むが、これら以外の情報が含まれていてもよい。
【００３７】
アクション情報は、イベントと、当該イベントによって発生するアクションとの関係を示す情報である。
【００３８】
また、本発明において、静的コンテンツとは、ブラウザプログラムにより解釈され、描画されるブラウザ表示可能コンテンツであって、当該コンテンツを変更するスクリプトを含まないものをいう。
【００３９】
また、本発明において、ユーザ操作情報とは、ユーザが画面を構成する画面要素に対して操作を行ったことを示す情報である。ユーザ操作情報は、ブラウザプログラムで発生したイベントのうち、画面に対するユーザが行った操作に基づくものに関する情報であるとも言える。
【００４０】
本発明のユーザーインタフェース提供装置は、組み込み機器のためのＧＵＩを構築するのに適している。本発明において、組み込み機器とは、広義には、ソフトウェアを用いて制御される機器の総称であるが、狭義には、パーソナルコンピュータのような汎用コンピュータを含まない、特定の用途向けに特化、限定した機能を果たすことを目的とした、ソフトウェアが組み込まれた機器の総称である。
【００４１】
また、組み込み機器とは、ファームウェアにより制御される機器であるということもできる。ファームウェアとは、ハードウェアを制御するためのソフトウェアであって、ＲＯＭなどの集積回路に予め書き込まれた状態で機器に組み込まれたものをいう。したがって、本発明の一つの態様においては、ネイティブプログラム及びブラウザプログラムは、このようなファームウェアであることができる。
【００４２】
さらに、本発明のユーザーインタフェース提供装置は、組み込み機器のうち、固有のＩＰアドレスを持ち、インターネットに接続可能な機器、すなわちＩｏＴ（Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ）機器のＧＵＩを構築するのに適している。ＩｏＴ機器は、インターネットに接続するための通信部を備えた組み込み機器であるとも言える。
【００４３】
以下、本発明の実施の形態について、図面を参照して説明する。なお、本発明は、以下に示す実施の形態に限定されるものではなく、その発明の趣旨の範囲内で種々変形して実施することができる。
【００４４】
［ＧＵＩ提供部］
図１は、本実施の形態に係るユーザーインタフェース提供装置に含まれるＧＵＩ提供部の構成を示すブロック図である。
【００４５】
ユーザーインタフェース提供装置１００において、ＧＵＩ提供部１０１は、例えば、後述の制御部１１によって実行されるネイティブプログラムによって実現される。ＧＵＩ提供部１０１は、静的コンテンツ生成部１０２及び画面制御部１０３を備えている。
【００４６】
静的コンテンツ生成部１０２は、テンプレート１０４に基づいて、本発明の画面の設計情報の一例である画面設計情報１０５を参照し、静的コンテンツを動的に生成する。静的コンテンツの生成の詳細については後述する。
【００４７】
静的コンテンツ生成部１０２は、ブラウザプログラム２００と連係可能に構成されている。静的コンテンツ生成部１０２は、ブラウザプログラム２００からイベント発生に関する情報を受信し、静的コンテンツを生成することができる。また、静的コンテンツ生成部１０２は、生成した静的コンテンツを出力し、ブラウザプログラム２００に表示部１１１に表示させることができる。
【００４８】
また、静的コンテンツ生成部１０２は、少なくとも１つのネイティブプログラム３００と連係可能に構成されている。静的コンテンツ生成部１０２は、ネイティブプログラム３００からイベント発生に関する情報を受信し、静的コンテンツを生成することができる。
【００４９】
一方、本発明の制御要求手段の一例である画面制御部１０３は、ブラウザプログラム２００で発生したイベントに応じ、ネイティブプログラム３００に対して、イベントに対応する組み込み機器の制御に関する制御情報を出力する。ここでイベントは、ブラウザプログラムが表示部１１１に表示させた画面に対して、入力部１１２を介して行われたユーザによる操作を検知したことである。
【００５０】
画面制御部１０３は、ブラウザプログラム２００と連係可能に構成されている。画面制御部１０３は、ブラウザプログラム２００からイベント発生に関する情報を受信し、画面設計情報１０５に基づいて、当該イベントに対応する制御情報を取得することができる。
【００５１】
さらに、画面制御部１０３は、ネイティブプログラム３００と連係可能に構成されている。画面制御部１０３は、取得した制御情報を出力し、ネイティブプログラム３００に制御情報に対応するハードウェア１２１の制御を実行させることができる。
【００５２】
また、画面制御部１０３は、ネイティブプログラム３００からハードウェア１２１の動作状態に関する情報（以下、「状態情報」と記載する）を受信する。
【００５３】
そして、画面制御部１０３は、画面設計情報１０５に含まれる画面遷移情報に基づいて、ハードウェア１２１の動作状態に応じた静的コンテンツを動的に生成し、ブラウザプログラム２００に静的コンテンツを画面に表示させる。
【００５４】
上述のようなＧＵＩ提供部１０１の静的コンテンツ生成部１０２及び画面制御部１０３と、ブラウザプログラム２００及びネイティブプログラム３００との連係は、特に限定されないが、例えば、ＧＵＩ提供部１０１を実現するプログラム（以下、「ＧＵＩ提供プログラム」と記載する）と、ブラウザプログラム２００及びネイティブプログラム３００とを、動的又は静的にリンクすることで実現できる。また、ＧＵＩ提供プログラムと、ブラウザプログラム２００及びネイティブプログラム３００の間にソフトウェアインタフェースを設けてデータ交換できるようにすることで実現することができる。
【００５５】
［ブラウザプログラム］
次に、図２を参照して、ブラウザプログラム２００について説明する。図２は、本実施の形態に係るブラウザプログラムの構成を示すブロック図である。ブラウザプログラム２００は、ＨＴＭＬ、ＸＭＬなどの構造化文書で記述された構造化文書ファイルを取得し、当該構造化文書ファイルを解析し、解析結果に基づいて、構造化文書ファイルに埋め込まれた、又は、参照された要素を画面に描画する機能を備えている。
【００５６】
ブラウザプログラム２００は、ユーザーインタフェース（ＵＩ）２０１、ブラウザエンジン２０２、レンダリングエンジン２０３、ネットワーキングモジュール（通信部）２０４、スクリプトエンジン２０５、データストレージ（記憶部）２０６で構成される。
【００５７】
ユーザーインタフェース２０１は、一般的なＷｅｂブラウジングのためのＵＩ要素（戻るボタン、進むボタン、アドレスバー、ブックマーク、更新ボタン、中止ボタン、ホームボタンなど）を表示部１１１（図１参照）に表示させ、入力部１１２（図１参照）を介して当該画面要素へのユーザからの入力を受け付けるように構成されている。ただし、本実施の形態のようにＧＵＩを構築するためにブラウザプログラム２００を使用するときは、ユーザーインタフェース２０１は、一般的なＷｅｂブラウジングのためのＵＩ要素を提供する必要は必ずしもない。
【００５８】
ブラウザエンジン２０２は、ユーザーインタフェース２０１からの入力をレンダリングエンジン２０３に伝え、ユーザからの入力にしたがってレンダリングエンジン２０３を操作することを実現可能に構成されている。
【００５９】
レンダリングエンジン２０３は、ブラウザ表示可能コンテンツを解釈し、描画して、表示部に表示できるように構成されている。
【００６０】
ネットワーキングモジュール２０４は、通信部の一例であり、例えばサーバへのＨＴＴＰリクエストの送信などを行うように構成されている。
【００６１】
スクリプトエンジン２０５は、例えば、ブラウザ表示可能コンテンツに含まれるスクリプトファイルを解釈し、実行するように構成されている。本実施の形態では、スクリプトは、Ｊａｖａｓｃｒｉｐｔであるが特に限定されない。ただし、本実施の形態では、ブラウザプログラム２００は、後述の静的コンテンツを解釈し、描画して、ＵＩ画面を表示部に表示させるだけであれば、スクリプトエンジン２０５は必ずしも必要ない。
【００６２】
データストレージ２０６は、Ｃｏｏｋｉｅなどのデータを保存するように構成されている。
【００６３】
さらに、ブラウザプログラム２００は、上述のようにＧＵＩ提供部１０１と連係可能に構成されている。
【００６４】
以下、レンダリングエンジン２０３での処理について説明する。レンダリングエンジン２０３は、ＨＴＭＬファイルを解析し、ＤＯＭツリーを生成する。レンダリングエンジン２０３は、ＨＴＭＬファイルに記述されたタグをツリー上のＤＯＭノードに変換し、ＤＯＭツリーを生成する。ＤＯＭツリーは、ＨＴＭＬファイルに含まれる全ての要素のツリー状の集合である。ＤＯＭノードとは、ＤＯＭツリーに含まれる一つ一つの要素である。
【００６５】
また、レンダリングエンジン２０３は、ＨＴＭＬファイルにＣＳＳ（Ｃａｓｃａｄｉｎｇ  Ｓｔｙｌｅ  Ｓｈｅｅｔ）が含まれている、又は、外部のＣＳＳファイルにリンクされている場合、当該ＣＳＳを、ｓｔｙｌｅエレメントからなるスタイルデータを解析し、描画ツリーに変換する。
【００６６】
このようなＨＴＭＬファイル及びＣＳＳファイルを解析する処理を、解析（パース）処理と呼ぶ。
【００６７】
また、レンダリングエンジン２０３は、ＤＯＭツリー及び描画ツリーを組み合わせ、レンダリングツリーを構築する。
【００６８】
また、レンダリングエンジン２０３は、レンダリングツリーに格納されたＤＯＭノードの位置を決定する。この処理はレイアウト処理と呼ばれる。より具体的には、レンダリングエンジン２０３は、レンダリングツリーに追加されたレンダラーに「位置」と「サイズ」の情報を加える。
【００６９】
また、レンダリングエンジン２０３は、レンダリングツリーに格納されたＤＯＭノードを「位置」と「サイズ」に従って、表示部１１１に表示する。この処理はペイント処理と呼ばれる。
【００７０】
このようなレンダリングツリーの構築、レイアウト処理及びペイント処理を合わせて、描画処理と呼ぶ。
【００７１】
［ネイティブプログラム］
次に、図３を参照して、ネイティブプログラム３００について説明する。図３は、本実施の形態に係るネイティブプログラム３００の構成を示すブロック図である。図３Ａに示すように、ネイティブプログラム３００は、ミドルウェア３０１及びオペレーションシステム（ＯＳ）３０２を介してハードウェア１２１を制御してもよいし、図３Ｂに示すように、ネイティブプログラム３００が、ミドルウェア及びオペレーションシステム（ＯＳ）なしで、ハードウェア１２１を直接制御してもよい。ここでは、説明の便宜上、一つのネイティブプログラム３００だけを図示しているが、ネイティブプログラム３００が複数同時に存在していても構わない。
【００７２】
［ユーザーインタフェース提供方法］
本実施の形態に係るユーザーインタフェース提供方法について、以下で説明する。図４は、本実施の形態に係るユーザーインタフェース提供方法の一例を示すフローチャートである。
【００７３】
まず、ＧＵＩ提供部１０１（図１参照）の静的コンテンツ生成部１０２は、イベントに応じ、テンプレート１０４及び画面設計情報１０５に基づいて、静的コンテンツを動的に生成する（ＳＴ１０１）。
【００７４】
次に、ブラウザプログラム２００は、静的コンテンツを解釈し、表示部１１１に画面を表示させる（ＳＴ１０２）。
【００７５】
次いで、画面制御部１０３は、ブラウザプログラム２００からイベント発生に関する情報を受信する（ＳＴ１０３）。
【００７６】
その後、画面制御部１０３は、ネイティブプログラム３００に対して、イベントに対応する組み込み機器のハードウェア１２１の制御に関する制御情報を出力する（ＳＴ１０４）。
【００７７】
図５は、本実施の形態に係るユーザーインタフェース提供方法によって提供される動的なＧＵＩの一例を示す模式図である。
【００７８】
ここで説明するＧＵＩの一例は、照明コントロール装置のための動的なＧＵＩである。図５に示すように、まず、制御対象を、２つの照明機器であるＬｉｇｈｔ  Ａ又はＢから選択するためのメニュー画面４１０を表示する。
【００７９】
メニュー画面４１０に表示された２つのメニューボタン４１１、４１２のうち1つ目のメニューボタン４１１を選択すると、Ｌｉｇｈｔ  Ａを制御するためのコントロール画面４２０が表示される。コントロール画面４２０には、ＯＮボタン４２１及びＯＦＦボタン４２２が含まれている。コントロール画面４２０が最初に表示されたときには、ＯＮボタン４２１がイネーブル（操作可能な状態）であり、かつ、ＯＦＦボタン４２２がディセイブル（操作不可能な状態）であることが一見してわかるように、ＯＦＦボタン４２２がグレーアウトされている。
【００８０】
コントロール画面４２０に対してユーザがＯＮボタン４２１をタッチし、Ｌｉｇｈｔ  Ａを点灯させると、コントロール画面４２０のＯＮボタン４２１がディセイブルに、ＯＦＦボタン４２２がイネーブルに変わり、ＯＮボタン４２１がディセイブルであることが一見してわかるように、ＯＮボタン４２１がグレーアウトされる。一方、ＯＦＦボタン４２２がイネーブルであることが一見してわかるように、ＯＦＦボタン４２２が標準の表示状態に変わる。このように、コントロール画面４２０において、ユーザの操作により、ＯＮボタン４２１がタッチされるというイベントが発生したことに応じ、コントロール画面のＯＮボタン４２１及びＯＦＦボタン４２２の表示状態が更新される。
【００８１】
以下、このような動的なＧＵＩを本実施の形態に係るユーザーインタフェース提供装置１００により実現する場合について説明する。
【００８２】
まず、従来のユーザーインタフェース提供装置において、動的コンテンツにより動的ＧＵＩを実現する場合について説明する。図６は、動的コンテンツを構成する構造化文書の一例を示す説明図である。構造化文書６００は、スタイルシートパート６０１、コンテンツパート６０２及びスクリプトパート６０３で構成される。
【００８３】
スタイルシートパート６０１は、構造化文書６００の表示形式（体裁、見た目等）を制御するスタイルシートを含む。スタイルシートは、例えば、ＣＳＳのようなスタイルシート言語を用いて記述される。
【００８４】
コンテンツパート６０２は、構造化文書６００の本体であり、ここに記述された内容が画面に表示される。本実施の形態において、コンテンツパート６０２は、例えば、少なくとも１つのブロックを含む。ここでブロックとは、例えば、ｄｉｖ要素を用いて、コンテンツパート６０２に記述された内容を複数の部分に分割したとき、その一つ一つをいう。
【００８５】
コンテンツパート６０２において、ｄｉｖ要素やタグ"button"に、例えば、属性"class"を併用して、ブロックに含まれる表示内容に表示形式を個別に指定することができる。
【００８６】
例えば、本実施の形態では、まずブロックにクラス（ｃｌａｓｓ）名を付与する。そして、スタイルシートパート６０１において、属性"class"でスタイルにクラス名を指定し、そのクラス名が付けられたブロックにのみ、当該スタイルを適用させることができる。
【００８７】
スクリプトパート６０３は、構造化文書に動的な処理を加えるスクリプトを含む。スクリプトは、例えば、Ｊａｖａｓｃｒｉｐｔのようなスクリプト言語で記述される。
【００８８】
なお、ここでの説明では、構造化文書は一つのファイルで構成されているが、複数のファイルで構成されていてもよい。例えば、スタイルシートパート６０１を別のファイル（外部スタイルシート）としてもよいし、スクリプトパート６０３を別のファイル（外部スクリプト）にしても構わない。
【００８９】
ブラウザプログラムは、上述のような動的コンテンツのための構造化文書６００を解釈し、コンテンツパート６０２に記述された内容に、スタイルシートパート６０１に記述されたスタイルシートを適用し、ＧＵＩを画面に表示させると共に、スクリプトパート６０３に記述されたスクリプトを実行し、ＧＵＩに動的な処理を加えることができる。
【００９０】
一方、本実施の形態に係るユーザーインタフェース提供装置１００においては、静的コンテンツ生成部１０２が、テンプレート及びユーザーインタフェースのための画面の設計情報に基づいて少なくとも一部が構造化文書ファイルで構成された静的コンテンツを動的に生成する。
【００９１】
図７は、本実施の形態に係るユーザーインタフェース提供装置１００が使用するテンプレートの一例を示す説明図である。図７に示すテンプレート７００は、構造化文書で構成されている。
【００９２】
テンプレート７００は、スタイルシートパート７０１及びコンテンツパート７０２で構成される。スタイルシートパート７０１及びコンテンツパート７０２は、図５を参照して説明した動的コンテンツのための構造化文書６００のスタイルシートパート６０１及びコンテンツパート６０２と同様である。この例では、テンプレート７００は、スクリプトパートを含まない。
【００９３】
テンプレート７００のスタイルシートパート７０１のセレクタ"container"において、動的コンテンツと同様にコントロール画面４２０（図５参照）の大きさ、コンテンツパート７０２に含まれる要素の配置及び背景色が定義されている。より具体的には、テンプレート７００では、例えば、背景色を指定するプロパティ"background-color"の引数（値）を変数名"bgc1"と設定し、これにより、コントロール画面４２０の背景色を変更可能な表示形式にしている。
【００９４】
また、セレクタ"btn"において、ＯＮボタン４２１及びＯＦＦボタン４２２の大きさ、フォントサイズ及び色、並びに、背景色が定義されている。より具体的には、テンプレート７００では、例えば、フォントの色を指定するプロパティ"color"の引数を変数名"fontc1"、及び、背景色を指定するプロパティ"background-color"の引数を変数名"bgc2"と定義し、これらにより、ＯＮボタン４２１及びＯＦＦボタン４２２のフォントの色及び背景色を変更可能な表示形式にしている。
【００９５】
また、セレクタ"btn-on-active"において、ＯＮボタン４２１及びＯＦＦボタン４２２がアクティブな状態における背景色が定義されている。テンプレート７００では、背景色を指定するプロパティ"background-color"の引数を変数名"bgc3"と設定し、これらにより、ＯＮボタン４２１及びＯＦＦボタン４２２がイネーブルであり、操作可能であることが認識しやすいように背景色を変更可能な表示形式にしている。
【００９６】
また、セレクタ"btn-off-active"において、ＯＮボタン４２１及びＯＦＦボタン４２２がアクティブでない状態における背景色が定義されている。テンプレート７００では、背景色を指定するプロパティ"background-color"の引数を変数名"bgc4"と設定し、ＯＮボタン４２１及びＯＦＦボタン４２２がディセイブルであり、操作可能でないことが認識しやすいように背景色を変更可能な表示形式にしている。
【００９７】
コンテンツパート７０２のクラス名"container"のブロックにおいて、２つの要素、すなわちＯＮボタン４２１及びＯＦＦボタン４２２（図５参照）をタグ"button"を用いて定義している。まず、タグ"button"において、<button>〜</button>で囲まれた部分にＯＮボタン４２１及びＯＦＦボタン４２２上に表示される文字列"ON"及び"OFF"が定義されている。
【００９８】
また、タグ"button"において、属性"class"を用いてスタイルシートパート７０１でセレクタにより指定されたクラス名が付与されるが、ここでは、ＯＮボタン４２１及びＯＦＦボタン４２２のそれぞれについて、属性"class"の変数を変数名"class1"及び"class2"とそれぞれ設定し、これにより、ＯＮボタン４２１及びＯＦＦボタン４２２が適用される表示形式を変更できるようにしている。
【００９９】
なお、ここで引数を変数名で定義したプロパティ及び属性の一例にすぎず、これらの一部を変数名で定義せずに固定としてもよいし、これら以外のプロパティ及び属性の引数を変数名で設定し、表示形式を変更可能なようにしてもよい。
【０１００】
また、タグ"button"において、<button>〜</button>で囲まれた部分を変数名で設定し、ＯＮボタン４２１及びＯＦＦボタン４２２上に表示される文字列を変更可能なようにしてもよい。
【０１０１】
本実施の形態に係るユーザーインタフェース提供装置１００において、ＧＵＩ提供部１０１の静的コンテンツ生成部１０２（図１参照）は、上述のようなテンプレート７００に基づいて、画面設計情報１０５を参照し、静的コンテンツを生成する。
【０１０２】
図８及び図９は、本実施の形態に係るユーザーインタフェース提供装置により生成される静的コンテンツの一例を示す説明図である。図８は、図５に示すコントロール画面４２０において、ＯＮボタン４２１がイネーブルであるときの静的コンテンツＡを示し、図９は、コントロール画面４２０において、ＯＦＦボタン４２２がイネーブルであるときの静的コンテンツＢを示す。
【０１０３】
まず、静的コンテンツＡ、Ｂに共通する点として、スタイルシートパート８０１、９０１において、背景色及びフォントの色を指定するプロパティ"color"及び"background-color"に設定されていた変数名"bgc1"、"bgc2"、"bgc3"、"bgc4"、"fontc1"に、カラーコードが設定される。
【０１０４】
また、図８に示すように、静的コンテンツＡのコンテンツパート８０２において、１つめのタグ"button"（ＯＮボタン４２１に対応）の属性"class"の変数名"class1"に、クラス名"btn"、"btn-on-active"が設定される。
【０１０５】
また、静的コンテンツＡのコンテンツパート８０２において、２つめのタグ"button"（ＯＦＦボタン４２２に対応）の属性"class"の変数名"class2"に、クラス名"btn"が設定されると共に、属性"disable"が設定され、ＯＦＦボタン４２２が無効化される。
【０１０６】
一方、図９に示すように、静的コンテンツＢのコンテンツパート９０２において、１つめのタグ"button"（ＯＮボタン４２１に対応）の属性"class"の変数名"class1"に、クラス名"btn"が設定されると共に、属性"disable"が設定され、ＯＮボタン４２１が無効化される。
【０１０７】
また、静的コンテンツＢのコンテンツパート９０２において、２つめのタグ"button"（ＯＦＦボタン４２２に対応）の属性"class"の変数名"class2"に、クラス名"btn"、"btn-on-active"が設定される。
【０１０８】
本実施の形態では、ＧＵＩ提供部１０１（図１参照）の画面制御部１０３が、画面設計情報１０５に含まれる画面遷移情報に基づいて、照明機器の動作状況に応じて静的コンテンツＡ、Ｂを、ブラウザブラグラム２００により処理させ、表示部１１１に表示させる。
【０１０９】
例えば、照明装置が点灯していない状態では、画面制御部１０３は、画面遷移情報に基づいて、静的コンテンツＡを、ブラウザプログラム２００に処理させ、表示部１１１にＯＮボタン４２１がイネーブルであるコントロール画面４２０を表示させる。
【０１１０】
コントロール画面４２０のＯＮボタン４２１に対し、ユーザにより入力部１１２を介した操作が行なれると、画面制御部１０３は、ブラウザプログラム２００から、ＯＮボタン４２１に対して操作イベント発生に関する情報を受信する。画面制御部１０３は、操作イベントに対応する制御情報を画面設計情報１０５に基づいて取得し、当該制御情報をネイティブプログラム３００に出力し、照明装置をＯＮにする制御を実行させる。
【０１１１】
制御が実行され成功すると、ネイティブプログラム３００から照明装置がＯＮになったことを示す状態情報を送信する。これに応じて、画面制御部１０３は、画面遷移情報に基づいて、静的コンテンツＢを、ブラウザプログラム２００に処理させ、表示部１１１にＯＮボタン４２１がディセイブルであるコントロール画面４２０を表示させる。
【０１１２】
このように、照明装置がＯＮになったことに応じて、図５に示すように、コントロール画面４２０が切り替えられるので、ネイティブプログラム３００からのフィードバックを反映している。
【０１１３】
以上説明したように、本実施の形態に係るユーザーインタフェース提供装置１００によれば、静的コンテンツを用いて動的なＧＵＩを実現できるので、動的コンテンツを用いた場合に比べてバグが少なくなり、テスト項目を少なくすることができる。
【０１１４】
また、ＧＵＩ提供部１０１の画面制御部１０３が、ネイティブプログラム３００からのフィードバックを反映して、画面の切り替えを行うため、組み込み機器の動作状態の変化に応じてＧＵＩの変更が適切なタイミングに行われるかどうかを確認するためのテストの手間を省くことができる。
【０１１５】
以上説明した本実施の形態によれば、組み込み機器のために、動的な表現に富んだＧＵＩを短期及び低コストで開発できる。
【０１１６】
［組み込み機器の構成］
図１０は、本実施の形態に係るユーザーインタフェース提供装置が適用される組み込み機器の機能構成の一例を示す図である。図１０に示すように、組み込み機器１０は、制御部１１と、記憶部１２と、通信部１３と、入力部１４と、出力部１５と、を有する。なお、図１０では、本実施の形態における特徴部分の機能ブロックを主に示しており、組み込み機器１０は、他の処理に必要な他の機能ブロックも有してもよい。また、一部の機能ブロックを含まない構成としてもよい。
【０１１７】
制御部１１は、組み込み機器１０の制御を実施する。制御部１１は、本発明に係る技術分野での共通認識に基づいて説明されるコントローラ、制御回路又は制御装置により構成することができる。
【０１１８】
例えば、制御部１１は、組み込み機器１０の特定の用途に必要な制御を実施してもよい。制御部１１は、通信部１３の通信を介してデータを受信したり、データを送信したり、行ってもよい。
【０１１９】
また、例えば、組み込み機器１０が照明機器のコントローラである場合、制御部１１は、照明機器の点灯、消灯、明暗、色調などを制御する機能を含んでもよい。
【０１２０】
また、例えば、組み込み機器１０が自動洗濯機のコントローラである場合、制御部１１は、自動洗濯機の洗浄時間、すすぎ時間、脱水時間などを制御する機能を含んでもよい。
【０１２１】
記憶部１２は、組み込み機器１０において利用する情報を記憶（保持）する。例えば、記憶部１２は、テンプレート１０４及び画面設計情報１０５（図１参照）を記憶してもよい。記憶部１２は、例えば、本発明に係る技術分野での共通認識に基づいて説明されるメモリ、ストレージ、記憶装置などにより構成することができる。
【０１２２】
通信部１３は、インターネットを介して他の通信デバイス（組み込み機器、サーバなど）と通信を行ってもよい。また、通信部１３は、受信した種々の情報を制御部１１に出力してもよい。
【０１２３】
通信部１３は、本発明に係る技術分野での共通認識に基づいて説明されるトランスミッター／レシーバー、送受信回路又は送受信装置により構成することができる。なお、通信部１３は、送信部及び受信部から構成されてもよい。
【０１２４】
入力部１４は、ユーザからの操作により入力を受け付ける。また、入力部１４は、所定の機器、記憶媒体などと接続され、データの入力を受け付けてもよい。入力部１４は、入力結果を例えば制御部１１に出力してもよい。
【０１２５】
入力部１４は、本発明に係る技術分野での共通認識に基づいて説明されるキーボード、マウス、ボタンなどの入力装置、入出力端子、入出力回路などにより構成することができる。また、入力部１４は、表示部と一体となった構成（例えば、タッチパネルディスプレイ）としてもよい。
【０１２６】
出力部１５は、コンテンツの描画を行って、出力する。例えば、出力部１５は、テキスト、画像などを表示する表示部、音声を出力する音声出力部などを含んで構成されてもよい。
【０１２７】
表示部１１１（図１参照）は、例えば、本発明に係る技術分野での共通認識に基づいて説明されるディスプレイ、モニタなどの表示装置により構成することができる。また、音声出力部は、本発明に係る技術分野での共通認識に基づいて説明されるスピーカーなどの出力装置により構成することができる。
【０１２８】
出力部１５は、例えば、本発明に係る技術分野での共通認識に基づいて説明される演算器、演算回路、演算装置、プレイヤー、画像／映像／音声処理回路、画像／映像／音声処理装置、アンプなどを含んで構成することができる。
【０１２９】
［ハードウェア構成］
なお、上記実施の形態の説明に用いたブロック図は、機能単位のブロックを示している。これらの機能ブロック（構成部）は、ハードウェア及び／又はソフトウェアの任意の組み合わせによって実現される。また、各機能ブロックの実現手段は特に限定されない。すなわち、各機能ブロックは、物理的に結合した１つの装置により実現されてもよいし、物理的に分離した２つ以上の装置を有線又は無線によって接続し、これら複数の装置により実現されてもよい。
【０１３０】
図１１は、本実施の形態に係るユーザーインタフェース提供装置が適用される組み込み機器のハードウェア構成の一例を示す図である。上述の組み込み機器１０は、物理的には、プロセッサ１００１、メモリ１００２、ストレージ１００３、通信装置１００４、入力装置１００５、出力装置１００６、バス１００８などを含むコンピュータ装置として構成されてもよい。
【０１３１】
なお、以下の説明では、「装置」という文言は、回路、デバイス、ユニットなどに読み替えることができる。組み込み機器１０のハードウェア構成は、図に示した各装置を１つ又は複数含むように構成されてもよいし、一部の装置を含まずに構成されてもよい。
【０１３２】
例えば、プロセッサ１００１は１つだけ図示されているが、複数のプロセッサがあってもよい。また、処理は、１つのプロセッサによって実行されてもよいし、処理が同時に、逐次に、又はその他の手法を用いて、１以上のプロセッサによって実行されてもよい。
【０１３３】
組み込み機器１０における各機能は、プロセッサ１００１、メモリ１００２などのハードウェア上に所定のソフトウェア（プログラム）を読み込ませることによって、プロセッサ１００１が演算を行い、通信装置１００４による通信、メモリ１００２及びストレージ１００３におけるデータの読み出し及び／又は書き込みなどを制御することによって実現される。
【０１３４】
プロセッサ１００１は、例えば、オペレーティングシステムを動作させてコンピュータ全体を制御する。プロセッサ１００１は、周辺装置とのインタフェース、制御装置、演算装置、レジスタなどを含む中央処理装置（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）によって構成されてもよい。なお、上述の制御部１１などの各部は、プロセッサ１００１によって実現されてもよい。プロセッサ１００１は、１以上のチップによって実装されてもよい。
【０１３５】
また、プロセッサ１００１は、プログラム（プログラムコード）、ソフトウェアモジュール、データなどを、ストレージ１００３及び／又は通信装置１００４からメモリ１００２に読み出し、これらに従って各種の処理を実行する。プログラムとしては、上述の実施の形態において説明した動作の少なくとも一部をコンピュータに実行させるプログラムが用いられる。例えば、制御部１１は、メモリ１００２に格納され、プロセッサ１００１において動作する制御プログラムによって実現されてもよく、他の機能ブロックについても同様に実現されてもよい。
【０１３６】
メモリ１００２は、コンピュータ読み取り可能な記録媒体であり、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  ＥＰＲＯＭ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、その他の適切な記憶媒体の少なくとも１つによって構成されてもよい。メモリ１００２は、レジスタ、キャッシュ、メインメモリ（主記憶装置）などと呼ばれてもよい。メモリ１００２は、本実施の形態に係る広告配信方法を実施するために実行可能なプログラム（プログラムコード）、ソフトウェアモジュールなどを保存することができる。
【０１３７】
ストレージ１００３は、コンピュータ読み取り可能な記録媒体であり、例えば、フレキシブルディスク、フロッピー（登録商標）ディスク、光磁気ディスク（例えば、コンパクトディスク（ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  ＲＯＭ）など）、デジタル多用途ディスク、Ｂｌｕ−ｒａｙ（登録商標）ディスク）、リムーバブルディスク、ハードディスクドライブ、スマートカード、フラッシュメモリデバイス（例えば、カード、スティック、キードライブ）、磁気ストライプ、データベース、サーバ、その他の適切な記憶媒体の少なくとも１つによって構成されてもよい。ストレージ１００３は、補助記憶装置と呼ばれてもよい。なお、上述の記憶部１２は、メモリ１００２及び／又はストレージ１００３によって実現されてもよい。
【０１３８】
通信装置１００４は、有線及び／又は無線ネットワークを介してコンピュータ間の通信を行うためのハードウェア（送受信デバイス）であり、例えばネットワークデバイス、ネットワークコントローラ、ネットワークカード、通信モジュールなどともいう。なお、上述の通信部１３は、通信装置１００４によって実現されてもよい。
【０１３９】
入力装置１００５は、外部からの入力を受け付ける入力デバイス（例えば、キーボード、マウスなど）である。出力装置１００６は、外部への出力を実施する出力デバイス（例えば、ディスプレイ、スピーカーなど）である。なお、入力装置１００５及び出力装置１００６は、一体となった構成（例えば、タッチパネル）であってもよい。なお、上述の入力部１４及び出力部１５は、それぞれ入力装置１００５及び出力装置１００６によって実現されてもよい。
【０１４０】
また、プロセッサ１００１、メモリ１００２などの各装置は、情報を通信するためのバス１００８によって接続される。バス１００８は、単一のバスによって構成されてもよいし、装置間で異なるバスで構成されてもよい。
【０１４１】
また、組み込み機器１０は、マイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ：Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などのハードウェアを含んで構成されてもよく、当該ハードウェアにより、各機能ブロックの一部又は全てが実現されてもよい。例えば、プロセッサ１００１は、これらのハードウェアの少なくとも１つで実装されてもよい。
【０１４２】
［プログラム構成］
本実施の形態に係るユーザーインタフェース提供方法を実現するプログラムは、例えば、図１を参照して説明したように、ＧＵＩ提供プログラムと、ブラウザプログラム２００と、ネイティブプログラム３００と、で構成されるが、これに限定されるものではない。例えば、ＧＵＩ提供プログラム、ブラウザプログラム２００及びネイティブプログラム３００が、一つのプログラムになっていてもよい。また、ＧＵＩ提供プログラム及びブラウザプログラム２００が一つのプログラムになっていてもよい。
【０１４３】
また、ブラウザプログラム２００は、一般的なインターネットブラウザプログラムと同様にインターネットコンテンツを解釈及び描画可能な構成であってもよいし、本発明の実現のために、ＧＵＩ提供プログラムが出力するブラウザ表示可能コンテンツのみを解釈及び描画可能な構成であってもよい。
【０１４４】
また、ＧＵＩ提供プログラムは、ライブラリの形式であってもよい。ライブラリとは、汎用性の高い複数のプログラムを再利用可能な形でひとまとまりにしたものであり、それ単体ではプログラムとして作動させることはできない、つまり実行ファイルの形式でなくてもよい。つまり、ライブラリは、他のプログラムに何らかの機能を提供するコードの集まりであってもよい。
【０１４５】
［変形例］
なお、上述の実施の形態では、例を示したが、これに限られない。上述の実施の形態では、ユーザーインタフェース提供装置が組み込み機器自体である場合を例に挙げて説明したが、組み込み機器の表示部に、外部のユーザーインタフェース提供装置が出力したＧＵＩを表示させるようにしても構わない。
【０１４６】
また、本明細書において説明した用語及び／又は本明細書の理解に必要な用語については、同一の又は類似する意味を有する用語と置き換えてもよい。
【０１４７】
本明細書において説明した情報、パラメータなどは、絶対値によって表されてもよいし、所定の値からの相対値によって表されてもよいし、対応する別の情報によって表されてもよい。また、本明細書においてパラメータなどに使用する名称は、いかなる点においても限定的なものではない。
【０１４８】
本明細書において説明した情報、信号などは、様々な異なる技術のいずれかを使用して表されてもよい。例えば、上記の説明全体に渡って言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、チップなどは、電圧、電流、電磁波、磁界若しくは磁性粒子、光場若しくは光子、又はこれらの任意の組み合わせによって表されてもよい。
【０１４９】
情報、信号などは、複数のネットワークノードを介して入出力されてもよい。入出力された情報、信号などは、特定の場所（例えば、メモリ）に保存されてもよいし、テーブルを用いて管理してもよい。入出力される情報、信号などは、上書き、更新又は追記をされ得る。出力された情報、信号などは、削除されてもよい。入力された情報、信号などは、他の装置へ送信されてもよい。
【０１５０】
また、所定の情報の通知（例えば、「Ｘであること」の通知）は、明示的に行うものに限られず、暗示的に（例えば、当該所定の情報の通知を行わないことによって）行われてもよい。
【０１５１】
ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語と呼ばれるか、他の名称で呼ばれるかを問わず、命令、命令セット、コード、コードセグメント、プログラムコード、プログラム、サブプログラム、ソフトウェアモジュール、アプリケーション、ソフトウェアアプリケーション、ソフトウェアパッケージ、ルーチン、サブルーチン、オブジェクト、実行可能ファイル、実行スレッド、手順、機能などを意味するよう広く解釈されるべきである。
【０１５２】
また、ソフトウェア、命令、情報などは、伝送媒体を介して送受信されてもよい。例えば、ソフトウェアが、有線技術（同軸ケーブル、光ファイバケーブル、ツイストペア及びデジタル加入者回線（ＤＳＬ）など）及び／又は無線技術（赤外線、マイクロ波など）を使用してウェブサイト、サーバ、又は他のリモートソースから送信される場合、これらの有線技術及び／又は無線技術は、伝送媒体の定義内に含まれる。
【０１５３】
本明細書において使用する「システム」及び「ネットワーク」という用語は、互換的に使用される。
【０１５４】
本明細書において説明した各態様／実施の形態は単独で用いてもよいし、組み合わせて用いてもよいし、実行に伴って切り替えて用いてもよい。また、本明細書で説明した各態様／実施の形態の処理手順、シーケンス、フローチャートなどは、矛盾の無い限り、順序を入れ替えてもよい。例えば、本明細書において説明した方法については、例示的な順序で様々なステップの要素を提示しており、提示した特定の順序に限定されない。
【０１５５】
本明細書において使用する「に基づいて」という記載は、別段に明記されていない限り、「のみに基づいて」を意味しない。言い換えれば、「に基づいて」という記載は、「のみに基づいて」と「に少なくとも基づいて」の両方を意味する。
【０１５６】
本明細書において使用する「第１の」、「第２の」などの呼称を使用した要素へのいかなる参照も、それらの要素の量又は順序を全般的に限定するものではない。これらの呼称は、２つ以上の要素間を区別する便利な方法として本明細書において使用され得る。したがって、第１及び第２の要素の参照は、２つの要素のみが採用され得ること、又は何らかの形で第１の要素が第２の要素に先行しなければならないことを意味しない。
【０１５７】
以上、本発明に係る発明について詳細に説明したが、当業者にとっては、本発明に係る発明が本明細書中に説明した実施の形態に限定されないということは明らかである。本発明に係る発明は、請求の範囲の記載に基づいて定まる発明の趣旨及び範囲を逸脱することなく修正及び変更態様として実施することができる。したがって、本明細書の記載は、例示説明を目的とし、本発明に係る発明に対して何ら制限的な意味をもたらさない。
【産業上の利用可能性】
【０１５８】
以上説明したように、組み込み機器のために、動的な表現に富んだＧＵＩを短期及び低コストで開発できるという効果を有し、特に、ＩｏＴ機器に有用である。
【符号の説明】
【０１５９】
１０  組み込み機器
１１  制御部
１２  記憶部
１３  通信部
１４  入力部
１５  出力部
１００  ユーザーインタフェース提供装置
１０１  ＧＵＩ提供部
１０２  静的コンテンツ生成部（静的コンテンツ生成手段）
１０３  画面制御部（制御要求手段）
１０４  テンプレート
１０５  画面設計情報（画面の設計情報）
１１１  表示部
１１２  入力部
１２１  ハードウェア
２００  ブラウザプログラム
２０１  ユーザーインタフェース
２０２  ブラウザエンジン
２０３  レンダリングエンジン
２０４  ネットワーキングモジュール
２０５  スクリプトエンジン
２０６  データストレージ
３００  ネイティブプログラム
３０１  ミドルウェア
４１０  メニュー画面
４１１  メニューボタン
４１２  メニューボタン
４２０  コントロール画面
４２１  ＯＮボタン
４２２  ＯＦＦボタン
６００  構造化文書
６０１、７０１、８０１、９０１  スタイルシートパート
６０２、７０２、８０２、９０２  コンテンツパート
６０３  スクリプトパート
７００  テンプレート
【図１】
2020095308.tif 000003
【図２】
2020095308.tif 000004
【図３】
2020095308.tif 000005
【図４】
2020095308.tif 000006
【図５】
2020095308.tif 000007
【図６】
2020095308.tif 000008
【図７】
2020095308.tif 000009
【図８】
2020095308.tif 000010
【図９】
2020095308.tif 000011
【図１０】
2020095308.tif 000012
【図１１】
2020095308.tif 000013