[発明の概要]
家電製品などの組み込み機器に搭載されるディスプレイの大型化及び高解像度化が進んでいる。このようなディスプレイで提供されるGUIには、ユーザーエクスペリエンス(以下、UXと記載する)をより高めることが求められ、動的な表現がより多く取り入れられる傾向がある。
動的な表現を、ブラウザ表示可能コンテンツで実現するには、Javascriptのようなスクリプトをブラウザプログラム上で実行させる動的コンテンツを用いることが一般的である。
このような動的コンテンツは、バグを多く含みやすいため、ブラウザプログラムにより適切に表示され、所望の動的な表現が実現されるかどうかを確認するには、静的コンテンツに比べて、テスト項目が多くなる。
また、ブラウザ表示可能コンテンツで実現されたGUIからユーザが望む制御をハードウェアに行わせるには、ブラウザプログラムが、スクリプトを実行し、ネイティブプログラムと連係し、ネイティブプログラムにハードウェアを制御させることが一般的である。
このようなスクリプトを用いた組み込み機器のハードウェアへの制御は、ハードウェアを制御するネイティブプログラム(ドライバ等)に制御情報(命令等)を出力することで行われる。そして、スクリプトは、制御情報を出力したことを契機としてGUIを動的に変更し、ネイティブプログラムからのフィードバック(ハードウェアの状態変化等を含む)を反映していない。このため、ハードウェアの動作状態の変化に応じてGUIの変更が適切なタイミングに行われるかどうかを確認するため、テストの手間が増えることを回避しがたい。
本発明者は、ネイティブ言語ではなく構造化文書を使用したGUIプラットフォームにおいて、UXを低下させることなく、また、GUIを介したハードウェアの制御も実現しながらも、開発コスト及び開発期間をさらに短縮することを目的とし、鋭意検討を重ねた。
本発明者は、静的コンテンツをイベントに応じて動的に切り替えることで動的な表現を実現すれば、動的コンテンツを用いなくてもUXに優れたGUIを構築できることに着目した。しかしながら、それに実現するには、静的コンテンツを画面内の構成要素の更新が行われる分だけ用意しなければならない。このため、テスト項目を削減できるが、ブラウザ表示可能コンテンツの作成のための工数が膨大になってしまう。
そこで、本発明者は、静的コンテンツを、イベントに応じてテンプレート及び画面の設計情報に基づいて動的に生成することにより、静的コンテンツの作成の工数を減らすことができることを見出した。
一方、静的コンテンツを採用したことに伴い、ブラウザプログラムでスクリプトを実行してハードウェアを制御する代わりに、ネイティブプログラムに組み込み機器のハードウェアに対する制御を行わせることとした。より具体的には、まず、ブラウザプログラムが画面に対して行われたユーザによる操作に関するユーザ操作情報を取得する。そして、ブラウザプログラムが、ユーザ操作情報に対応するハードウェア制御情報をネイティブプログラムに出力する。ネイティブプログラムは、ハードウェア制御情報に従って組み込み機器のハードウェアを制御する。
本発明者は、上述のような新しい知見に基づいて本発明を完成した。すなわち、本発明のユーザーインタフェース提供装置は、イベントに応じ、テンプレート及びユーザーインタフェースのための画面の設計情報に基づいて少なくとも一部が構造化文書ファイルで構成された静的コンテンツを動的に生成する静的コンテンツ生成手段と、前記静的コンテンツを解釈し、表示部に前記画面を表示させるブラウザプログラムから、前記画面に対して行われたユーザによる操作に関するユーザ操作情報を取得し、組み込み機器の制御を行うネイティブプログラムに対して、前記ユーザ操作情報に対応する前記組み込み機器の制御に関する制御情報を出力する制御要求手段と、を有することを特徴とする。
本発明において、イベントとは、例えば、ブラウザプログラム又はネイティブプログラムで発生する事象であって、画面の構成要素のうち少なくとも一部を更新させるアクションを発生させるものを含む。
より具体的には、イベントは、例えば、ブラウザプログラムが検出した、ユーザーインタフェースのための画面に対して行われたユーザによる操作を含む。
また、イベントは、ネイティブプログラムからの画面の構成要素のうち少なくとも一部を更新させるアクションを発生させるものを含む。
また、本発明において、テンプレートとは、画面を構築するためのブラウザ表示可能コンテンツを構成するデータ群であって、例えば、少なくとも一つの構造化文書を含み、外部リソース(画像ファイル、動画ファイル、音声ファイルなど)を含んでいてもよい。外部リソースは、予めテンプレートに含まれていてもよいし、記憶部に別に記憶されていてもよいし、通信部を介してネットワークから取得されてもよい。
テンプレートは、そのままではブラウザプログラムで適切に表示できないか、又は、そのままでもブラウザプログラムで表示できるが、一部が仮の表示内容であるコンテンツであると言える。
例えば、テンプレートの一例としては、構造化文書の中に、ボタンのためのイメージファイルを埋め込むタグ"img"並びに属性"width"及び属性"height"が記述されているが、属性"src"は記述されていないものが挙げられる。この場合、属性"src"が記述されていないため、テンプレートを構成する構造化文書をブラウザプログラムで解釈し、描画したとき、ボタンが表示されない。このような状態を、「適正に表示できない」という。
また、テンプレートの他の一例としては、構造化文書の中に、ボタンに対し、当該ボタンに対応するハードウェア制御を表わす仮の文字列が記述されているものが挙げられる。例えば、ボタンに対し、ハードウェアが備える一機能のアクティベーションを意味する仮の文字列「ON」が記述されているコンテンツが考えられる。この仮の文字列「ON」は、ハードウェアが照明機器であれば、「明かりをつける」のような他の文字列に置き換えることができる。このように仮の文字列は、他の文字列に置き換え可能なようにコンテンツに記述することができる。
また、本発明において、ユーザーインタフェースのための画面(Screen)とは、GUI画面設計上の単一の画面をいう。GUI画面設計とは、組み込み機器などのGUI開発において、ユーザが操作することになる画面のレイアウト、表示項目などの設計を行うことをいう。GUI画面設計には、個々の画面を構成する画面要素と当該画面要素のレイアウトを決定する単一画面設計と、複数の画面間の関係を決定する画面遷移設計と、画面要素に対するユーザによる操作などのイベントと、当該イベントによって発生するアクションとの関係を定義するアクション設計と、を含む。したがって、画面設計上の単一画面とは、上述の単一画面設計で対象とする個々の画面であると言える。
また、本発明において、画面の設計情報とは、画面の設計に関する情報をいう。設計情報には、例えば、画面レイアウト情報、画面遷移情報及びアクション情報が含まれる。
画面レイアウト情報は、画面を構成する画面要素及びその配置、画面要素の属性、及び、画面要素に対するユーザの操作によって発生するイベント及びそのタイミングなどを含むが、これら以外の情報が含まれていてもよい。
画面要素には、テキストボックス、リストボックス、ラジオボタン、ボタン(クリック又はタッチすることによりアクションが発生する)、ラベル(文字列)、画像(静止画像及び動画を含む)などが含まれるが、これらに限定されるものではない。
画面遷移情報は、複数の画面の流れを表す情報である。画面遷移情報は、例えば、表示される複数の画面とそれらの画面の順序関係、及び、画面から画面への遷移を起こすきっかけとなるイベントを含むが、これら以外の情報が含まれていてもよい。
アクション情報は、イベントと、当該イベントによって発生するアクションとの関係を示す情報である。
また、本発明において、静的コンテンツとは、ブラウザプログラムにより解釈され、描画されるブラウザ表示可能コンテンツであって、当該コンテンツを変更するスクリプトを含まないものをいう。
また、本発明において、ユーザ操作情報とは、ユーザが画面を構成する画面要素に対して操作を行ったことを示す情報である。ユーザ操作情報は、ブラウザプログラムで発生したイベントのうち、画面に対するユーザが行った操作に基づくものに関する情報であるとも言える。
本発明のユーザーインタフェース提供装置は、組み込み機器のためのGUIを構築するのに適している。本発明において、組み込み機器とは、広義には、ソフトウェアを用いて制御される機器の総称であるが、狭義には、パーソナルコンピュータのような汎用コンピュータを含まない、特定の用途向けに特化、限定した機能を果たすことを目的とした、ソフトウェアが組み込まれた機器の総称である。
また、組み込み機器とは、ファームウェアにより制御される機器であるということもできる。ファームウェアとは、ハードウェアを制御するためのソフトウェアであって、ROMなどの集積回路に予め書き込まれた状態で機器に組み込まれたものをいう。したがって、本発明の一つの態様においては、ネイティブプログラム及びブラウザプログラムは、このようなファームウェアであることができる。
さらに、本発明のユーザーインタフェース提供装置は、組み込み機器のうち、固有のIPアドレスを持ち、インターネットに接続可能な機器、すなわちIoT(Internet of Things)機器のGUIを構築するのに適している。IoT機器は、インターネットに接続するための通信部を備えた組み込み機器であるとも言える。
以下、本発明の実施の形態について、図面を参照して説明する。なお、本発明は、以下に示す実施の形態に限定されるものではなく、その発明の趣旨の範囲内で種々変形して実施することができる。
[GUI提供部]
図1は、本実施の形態に係るユーザーインタフェース提供装置に含まれるGUI提供部の構成を示すブロック図である。
ユーザーインタフェース提供装置100において、GUI提供部101は、例えば、後述の制御部11によって実行されるネイティブプログラムによって実現される。GUI提供部101は、静的コンテンツ生成部102及び画面制御部103を備えている。
静的コンテンツ生成部102は、テンプレート104に基づいて、本発明の画面の設計情報の一例である画面設計情報105を参照し、静的コンテンツを動的に生成する。静的コンテンツの生成の詳細については後述する。
静的コンテンツ生成部102は、ブラウザプログラム200と連係可能に構成されている。静的コンテンツ生成部102は、ブラウザプログラム200からイベント発生に関する情報を受信し、静的コンテンツを生成することができる。また、静的コンテンツ生成部102は、生成した静的コンテンツを出力し、ブラウザプログラム200に表示部111に表示させることができる。
また、静的コンテンツ生成部102は、少なくとも1つのネイティブプログラム300と連係可能に構成されている。静的コンテンツ生成部102は、ネイティブプログラム300からイベント発生に関する情報を受信し、静的コンテンツを生成することができる。
一方、本発明の制御要求手段の一例である画面制御部103は、ブラウザプログラム200で発生したイベントに応じ、ネイティブプログラム300に対して、イベントに対応する組み込み機器の制御に関する制御情報を出力する。ここでイベントは、ブラウザプログラムが表示部111に表示させた画面に対して、入力部112を介して行われたユーザによる操作を検知したことである。
画面制御部103は、ブラウザプログラム200と連係可能に構成されている。画面制御部103は、ブラウザプログラム200からイベント発生に関する情報を受信し、画面設計情報105に基づいて、当該イベントに対応する制御情報を取得することができる。
さらに、画面制御部103は、ネイティブプログラム300と連係可能に構成されている。画面制御部103は、取得した制御情報を出力し、ネイティブプログラム300に制御情報に対応するハードウェア121の制御を実行させることができる。
また、画面制御部103は、ネイティブプログラム300からハードウェア121の動作状態に関する情報(以下、「状態情報」と記載する)を受信する。
そして、画面制御部103は、画面設計情報105に含まれる画面遷移情報に基づいて、ハードウェア121の動作状態に応じた静的コンテンツを動的に生成し、ブラウザプログラム200に静的コンテンツを画面に表示させる。
上述のようなGUI提供部101の静的コンテンツ生成部102及び画面制御部103と、ブラウザプログラム200及びネイティブプログラム300との連係は、特に限定されないが、例えば、GUI提供部101を実現するプログラム(以下、「GUI提供プログラム」と記載する)と、ブラウザプログラム200及びネイティブプログラム300とを、動的又は静的にリンクすることで実現できる。また、GUI提供プログラムと、ブラウザプログラム200及びネイティブプログラム300の間にソフトウェアインタフェースを設けてデータ交換できるようにすることで実現することができる。
[ブラウザプログラム]
次に、図2を参照して、ブラウザプログラム200について説明する。図2は、本実施の形態に係るブラウザプログラムの構成を示すブロック図である。ブラウザプログラム200は、HTML、XMLなどの構造化文書で記述された構造化文書ファイルを取得し、当該構造化文書ファイルを解析し、解析結果に基づいて、構造化文書ファイルに埋め込まれた、又は、参照された要素を画面に描画する機能を備えている。
ブラウザプログラム200は、ユーザーインタフェース(UI)201、ブラウザエンジン202、レンダリングエンジン203、ネットワーキングモジュール(通信部)204、スクリプトエンジン205、データストレージ(記憶部)206で構成される。
ユーザーインタフェース201は、一般的なWebブラウジングのためのUI要素(戻るボタン、進むボタン、アドレスバー、ブックマーク、更新ボタン、中止ボタン、ホームボタンなど)を表示部111(図1参照)に表示させ、入力部112(図1参照)を介して当該画面要素へのユーザからの入力を受け付けるように構成されている。ただし、本実施の形態のようにGUIを構築するためにブラウザプログラム200を使用するときは、ユーザーインタフェース201は、一般的なWebブラウジングのためのUI要素を提供する必要は必ずしもない。
ブラウザエンジン202は、ユーザーインタフェース201からの入力をレンダリングエンジン203に伝え、ユーザからの入力にしたがってレンダリングエンジン203を操作することを実現可能に構成されている。
レンダリングエンジン203は、ブラウザ表示可能コンテンツを解釈し、描画して、表示部に表示できるように構成されている。
ネットワーキングモジュール204は、通信部の一例であり、例えばサーバへのHTTPリクエストの送信などを行うように構成されている。
スクリプトエンジン205は、例えば、ブラウザ表示可能コンテンツに含まれるスクリプトファイルを解釈し、実行するように構成されている。本実施の形態では、スクリプトは、Javascriptであるが特に限定されない。ただし、本実施の形態では、ブラウザプログラム200は、後述の静的コンテンツを解釈し、描画して、UI画面を表示部に表示させるだけであれば、スクリプトエンジン205は必ずしも必要ない。
データストレージ206は、Cookieなどのデータを保存するように構成されている。
さらに、ブラウザプログラム200は、上述のようにGUI提供部101と連係可能に構成されている。
以下、レンダリングエンジン203での処理について説明する。レンダリングエンジン203は、HTMLファイルを解析し、DOMツリーを生成する。レンダリングエンジン203は、HTMLファイルに記述されたタグをツリー上のDOMノードに変換し、DOMツリーを生成する。DOMツリーは、HTMLファイルに含まれる全ての要素のツリー状の集合である。DOMノードとは、DOMツリーに含まれる一つ一つの要素である。
また、レンダリングエンジン203は、HTMLファイルにCSS(Cascading Style Sheet)が含まれている、又は、外部のCSSファイルにリンクされている場合、当該CSSを、styleエレメントからなるスタイルデータを解析し、描画ツリーに変換する。
このようなHTMLファイル及びCSSファイルを解析する処理を、解析(パース)処理と呼ぶ。
また、レンダリングエンジン203は、DOMツリー及び描画ツリーを組み合わせ、レンダリングツリーを構築する。
また、レンダリングエンジン203は、レンダリングツリーに格納されたDOMノードの位置を決定する。この処理はレイアウト処理と呼ばれる。より具体的には、レンダリングエンジン203は、レンダリングツリーに追加されたレンダラーに「位置」と「サイズ」の情報を加える。
また、レンダリングエンジン203は、レンダリングツリーに格納されたDOMノードを「位置」と「サイズ」に従って、表示部111に表示する。この処理はペイント処理と呼ばれる。
このようなレンダリングツリーの構築、レイアウト処理及びペイント処理を合わせて、描画処理と呼ぶ。
[ネイティブプログラム]
次に、図3を参照して、ネイティブプログラム300について説明する。図3は、本実施の形態に係るネイティブプログラム300の構成を示すブロック図である。図3Aに示すように、ネイティブプログラム300は、ミドルウェア301及びオペレーションシステム(OS)302を介してハードウェア121を制御してもよいし、図3Bに示すように、ネイティブプログラム300が、ミドルウェア及びオペレーションシステム(OS)なしで、ハードウェア121を直接制御してもよい。ここでは、説明の便宜上、一つのネイティブプログラム300だけを図示しているが、ネイティブプログラム300が複数同時に存在していても構わない。
[ユーザーインタフェース提供方法]
本実施の形態に係るユーザーインタフェース提供方法について、以下で説明する。図4は、本実施の形態に係るユーザーインタフェース提供方法の一例を示すフローチャートである。
まず、GUI提供部101(図1参照)の静的コンテンツ生成部102は、イベントに応じ、テンプレート104及び画面設計情報105に基づいて、静的コンテンツを動的に生成する(ST101)。
次に、ブラウザプログラム200は、静的コンテンツを解釈し、表示部111に画面を表示させる(ST102)。
次いで、画面制御部103は、ブラウザプログラム200からイベント発生に関する情報を受信する(ST103)。
その後、画面制御部103は、ネイティブプログラム300に対して、イベントに対応する組み込み機器のハードウェア121の制御に関する制御情報を出力する(ST104)。
図5は、本実施の形態に係るユーザーインタフェース提供方法によって提供される動的なGUIの一例を示す模式図である。
ここで説明するGUIの一例は、照明コントロール装置のための動的なGUIである。図5に示すように、まず、制御対象を、2つの照明機器であるLight A又はBから選択するためのメニュー画面410を表示する。
メニュー画面410に表示された2つのメニューボタン411、412のうち1つ目のメニューボタン411を選択すると、Light Aを制御するためのコントロール画面420が表示される。コントロール画面420には、ONボタン421及びOFFボタン422が含まれている。コントロール画面420が最初に表示されたときには、ONボタン421がイネーブル(操作可能な状態)であり、かつ、OFFボタン422がディセイブル(操作不可能な状態)であることが一見してわかるように、OFFボタン422がグレーアウトされている。
コントロール画面420に対してユーザがONボタン421をタッチし、Light Aを点灯させると、コントロール画面420のONボタン421がディセイブルに、OFFボタン422がイネーブルに変わり、ONボタン421がディセイブルであることが一見してわかるように、ONボタン421がグレーアウトされる。一方、OFFボタン422がイネーブルであることが一見してわかるように、OFFボタン422が標準の表示状態に変わる。このように、コントロール画面420において、ユーザの操作により、ONボタン421がタッチされるというイベントが発生したことに応じ、コントロール画面のONボタン421及びOFFボタン422の表示状態が更新される。
以下、このような動的なGUIを本実施の形態に係るユーザーインタフェース提供装置100により実現する場合について説明する。
まず、従来のユーザーインタフェース提供装置において、動的コンテンツにより動的GUIを実現する場合について説明する。図6は、動的コンテンツを構成する構造化文書の一例を示す説明図である。構造化文書600は、スタイルシートパート601、コンテンツパート602及びスクリプトパート603で構成される。
スタイルシートパート601は、構造化文書600の表示形式(体裁、見た目等)を制御するスタイルシートを含む。スタイルシートは、例えば、CSSのようなスタイルシート言語を用いて記述される。
コンテンツパート602は、構造化文書600の本体であり、ここに記述された内容が画面に表示される。本実施の形態において、コンテンツパート602は、例えば、少なくとも1つのブロックを含む。ここでブロックとは、例えば、div要素を用いて、コンテンツパート602に記述された内容を複数の部分に分割したとき、その一つ一つをいう。
コンテンツパート602において、div要素やタグ"button"に、例えば、属性"class"を併用して、ブロックに含まれる表示内容に表示形式を個別に指定することができる。
例えば、本実施の形態では、まずブロックにクラス(class)名を付与する。そして、スタイルシートパート601において、属性"class"でスタイルにクラス名を指定し、そのクラス名が付けられたブロックにのみ、当該スタイルを適用させることができる。
スクリプトパート603は、構造化文書に動的な処理を加えるスクリプトを含む。スクリプトは、例えば、Javascriptのようなスクリプト言語で記述される。
なお、ここでの説明では、構造化文書は一つのファイルで構成されているが、複数のファイルで構成されていてもよい。例えば、スタイルシートパート601を別のファイル(外部スタイルシート)としてもよいし、スクリプトパート603を別のファイル(外部スクリプト)にしても構わない。
ブラウザプログラムは、上述のような動的コンテンツのための構造化文書600を解釈し、コンテンツパート602に記述された内容に、スタイルシートパート601に記述されたスタイルシートを適用し、GUIを画面に表示させると共に、スクリプトパート603に記述されたスクリプトを実行し、GUIに動的な処理を加えることができる。
一方、本実施の形態に係るユーザーインタフェース提供装置100においては、静的コンテンツ生成部102が、テンプレート及びユーザーインタフェースのための画面の設計情報に基づいて少なくとも一部が構造化文書ファイルで構成された静的コンテンツを動的に生成する。
図7は、本実施の形態に係るユーザーインタフェース提供装置100が使用するテンプレートの一例を示す説明図である。図7に示すテンプレート700は、構造化文書で構成されている。
テンプレート700は、スタイルシートパート701及びコンテンツパート702で構成される。スタイルシートパート701及びコンテンツパート702は、図5を参照して説明した動的コンテンツのための構造化文書600のスタイルシートパート601及びコンテンツパート602と同様である。この例では、テンプレート700は、スクリプトパートを含まない。
テンプレート700のスタイルシートパート701のセレクタ"container"において、動的コンテンツと同様にコントロール画面420(図5参照)の大きさ、コンテンツパート702に含まれる要素の配置及び背景色が定義されている。より具体的には、テンプレート700では、例えば、背景色を指定するプロパティ"background-color"の引数(値)を変数名"bgc1"と設定し、これにより、コントロール画面420の背景色を変更可能な表示形式にしている。
また、セレクタ"btn"において、ONボタン421及びOFFボタン422の大きさ、フォントサイズ及び色、並びに、背景色が定義されている。より具体的には、テンプレート700では、例えば、フォントの色を指定するプロパティ"color"の引数を変数名"fontc1"、及び、背景色を指定するプロパティ"background-color"の引数を変数名"bgc2"と定義し、これらにより、ONボタン421及びOFFボタン422のフォントの色及び背景色を変更可能な表示形式にしている。
また、セレクタ"btn-on-active"において、ONボタン421及びOFFボタン422がアクティブな状態における背景色が定義されている。テンプレート700では、背景色を指定するプロパティ"background-color"の引数を変数名"bgc3"と設定し、これらにより、ONボタン421及びOFFボタン422がイネーブルであり、操作可能であることが認識しやすいように背景色を変更可能な表示形式にしている。
また、セレクタ"btn-off-active"において、ONボタン421及びOFFボタン422がアクティブでない状態における背景色が定義されている。テンプレート700では、背景色を指定するプロパティ"background-color"の引数を変数名"bgc4"と設定し、ONボタン421及びOFFボタン422がディセイブルであり、操作可能でないことが認識しやすいように背景色を変更可能な表示形式にしている。
コンテンツパート702のクラス名"container"のブロックにおいて、2つの要素、すなわちONボタン421及びOFFボタン422(図5参照)をタグ"button"を用いて定義している。まず、タグ"button"において、<button>〜</button>で囲まれた部分にONボタン421及びOFFボタン422上に表示される文字列"ON"及び"OFF"が定義されている。
また、タグ"button"において、属性"class"を用いてスタイルシートパート701でセレクタにより指定されたクラス名が付与されるが、ここでは、ONボタン421及びOFFボタン422のそれぞれについて、属性"class"の変数を変数名"class1"及び"class2"とそれぞれ設定し、これにより、ONボタン421及びOFFボタン422が適用される表示形式を変更できるようにしている。
なお、ここで引数を変数名で定義したプロパティ及び属性の一例にすぎず、これらの一部を変数名で定義せずに固定としてもよいし、これら以外のプロパティ及び属性の引数を変数名で設定し、表示形式を変更可能なようにしてもよい。
また、タグ"button"において、<button>〜</button>で囲まれた部分を変数名で設定し、ONボタン421及びOFFボタン422上に表示される文字列を変更可能なようにしてもよい。
本実施の形態に係るユーザーインタフェース提供装置100において、GUI提供部101の静的コンテンツ生成部102(図1参照)は、上述のようなテンプレート700に基づいて、画面設計情報105を参照し、静的コンテンツを生成する。
図8及び図9は、本実施の形態に係るユーザーインタフェース提供装置により生成される静的コンテンツの一例を示す説明図である。図8は、図5に示すコントロール画面420において、ONボタン421がイネーブルであるときの静的コンテンツAを示し、図9は、コントロール画面420において、OFFボタン422がイネーブルであるときの静的コンテンツBを示す。
まず、静的コンテンツA、Bに共通する点として、スタイルシートパート801、901において、背景色及びフォントの色を指定するプロパティ"color"及び"background-color"に設定されていた変数名"bgc1"、"bgc2"、"bgc3"、"bgc4"、"fontc1"に、カラーコードが設定される。
また、図8に示すように、静的コンテンツAのコンテンツパート802において、1つめのタグ"button"(ONボタン421に対応)の属性"class"の変数名"class1"に、クラス名"btn"、"btn-on-active"が設定される。
また、静的コンテンツAのコンテンツパート802において、2つめのタグ"button"(OFFボタン422に対応)の属性"class"の変数名"class2"に、クラス名"btn"が設定されると共に、属性"disable"が設定され、OFFボタン422が無効化される。
一方、図9に示すように、静的コンテンツBのコンテンツパート902において、1つめのタグ"button"(ONボタン421に対応)の属性"class"の変数名"class1"に、クラス名"btn"が設定されると共に、属性"disable"が設定され、ONボタン421が無効化される。
また、静的コンテンツBのコンテンツパート902において、2つめのタグ"button"(OFFボタン422に対応)の属性"class"の変数名"class2"に、クラス名"btn"、"btn-on-active"が設定される。
本実施の形態では、GUI提供部101(図1参照)の画面制御部103が、画面設計情報105に含まれる画面遷移情報に基づいて、照明機器の動作状況に応じて静的コンテンツA、Bを、ブラウザブラグラム200により処理させ、表示部111に表示させる。
例えば、照明装置が点灯していない状態では、画面制御部103は、画面遷移情報に基づいて、静的コンテンツAを、ブラウザプログラム200に処理させ、表示部111にONボタン421がイネーブルであるコントロール画面420を表示させる。
コントロール画面420のONボタン421に対し、ユーザにより入力部112を介した操作が行なれると、画面制御部103は、ブラウザプログラム200から、ONボタン421に対して操作イベント発生に関する情報を受信する。画面制御部103は、操作イベントに対応する制御情報を画面設計情報105に基づいて取得し、当該制御情報をネイティブプログラム300に出力し、照明装置をONにする制御を実行させる。
制御が実行され成功すると、ネイティブプログラム300から照明装置がONになったことを示す状態情報を送信する。これに応じて、画面制御部103は、画面遷移情報に基づいて、静的コンテンツBを、ブラウザプログラム200に処理させ、表示部111にONボタン421がディセイブルであるコントロール画面420を表示させる。
このように、照明装置がONになったことに応じて、図5に示すように、コントロール画面420が切り替えられるので、ネイティブプログラム300からのフィードバックを反映している。
以上説明したように、本実施の形態に係るユーザーインタフェース提供装置100によれば、静的コンテンツを用いて動的なGUIを実現できるので、動的コンテンツを用いた場合に比べてバグが少なくなり、テスト項目を少なくすることができる。
また、GUI提供部101の画面制御部103が、ネイティブプログラム300からのフィードバックを反映して、画面の切り替えを行うため、組み込み機器の動作状態の変化に応じてGUIの変更が適切なタイミングに行われるかどうかを確認するためのテストの手間を省くことができる。
以上説明した本実施の形態によれば、組み込み機器のために、動的な表現に富んだGUIを短期及び低コストで開発できる。
[組み込み機器の構成]
図10は、本実施の形態に係るユーザーインタフェース提供装置が適用される組み込み機器の機能構成の一例を示す図である。図10に示すように、組み込み機器10は、制御部11と、記憶部12と、通信部13と、入力部14と、出力部15と、を有する。なお、図10では、本実施の形態における特徴部分の機能ブロックを主に示しており、組み込み機器10は、他の処理に必要な他の機能ブロックも有してもよい。また、一部の機能ブロックを含まない構成としてもよい。
制御部11は、組み込み機器10の制御を実施する。制御部11は、本発明に係る技術分野での共通認識に基づいて説明されるコントローラ、制御回路又は制御装置により構成することができる。
例えば、制御部11は、組み込み機器10の特定の用途に必要な制御を実施してもよい。制御部11は、通信部13の通信を介してデータを受信したり、データを送信したり、行ってもよい。
また、例えば、組み込み機器10が照明機器のコントローラである場合、制御部11は、照明機器の点灯、消灯、明暗、色調などを制御する機能を含んでもよい。
また、例えば、組み込み機器10が自動洗濯機のコントローラである場合、制御部11は、自動洗濯機の洗浄時間、すすぎ時間、脱水時間などを制御する機能を含んでもよい。
記憶部12は、組み込み機器10において利用する情報を記憶(保持)する。例えば、記憶部12は、テンプレート104及び画面設計情報105(図1参照)を記憶してもよい。記憶部12は、例えば、本発明に係る技術分野での共通認識に基づいて説明されるメモリ、ストレージ、記憶装置などにより構成することができる。
通信部13は、インターネットを介して他の通信デバイス(組み込み機器、サーバなど)と通信を行ってもよい。また、通信部13は、受信した種々の情報を制御部11に出力してもよい。
通信部13は、本発明に係る技術分野での共通認識に基づいて説明されるトランスミッター/レシーバー、送受信回路又は送受信装置により構成することができる。なお、通信部13は、送信部及び受信部から構成されてもよい。
入力部14は、ユーザからの操作により入力を受け付ける。また、入力部14は、所定の機器、記憶媒体などと接続され、データの入力を受け付けてもよい。入力部14は、入力結果を例えば制御部11に出力してもよい。
入力部14は、本発明に係る技術分野での共通認識に基づいて説明されるキーボード、マウス、ボタンなどの入力装置、入出力端子、入出力回路などにより構成することができる。また、入力部14は、表示部と一体となった構成(例えば、タッチパネルディスプレイ)としてもよい。
出力部15は、コンテンツの描画を行って、出力する。例えば、出力部15は、テキスト、画像などを表示する表示部、音声を出力する音声出力部などを含んで構成されてもよい。
表示部111(図1参照)は、例えば、本発明に係る技術分野での共通認識に基づいて説明されるディスプレイ、モニタなどの表示装置により構成することができる。また、音声出力部は、本発明に係る技術分野での共通認識に基づいて説明されるスピーカーなどの出力装置により構成することができる。
出力部15は、例えば、本発明に係る技術分野での共通認識に基づいて説明される演算器、演算回路、演算装置、プレイヤー、画像/映像/音声処理回路、画像/映像/音声処理装置、アンプなどを含んで構成することができる。
[ハードウェア構成]
なお、上記実施の形態の説明に用いたブロック図は、機能単位のブロックを示している。これらの機能ブロック(構成部)は、ハードウェア及び/又はソフトウェアの任意の組み合わせによって実現される。また、各機能ブロックの実現手段は特に限定されない。すなわち、各機能ブロックは、物理的に結合した1つの装置により実現されてもよいし、物理的に分離した2つ以上の装置を有線又は無線によって接続し、これら複数の装置により実現されてもよい。
図11は、本実施の形態に係るユーザーインタフェース提供装置が適用される組み込み機器のハードウェア構成の一例を示す図である。上述の組み込み機器10は、物理的には、プロセッサ1001、メモリ1002、ストレージ1003、通信装置1004、入力装置1005、出力装置1006、バス1008などを含むコンピュータ装置として構成されてもよい。
なお、以下の説明では、「装置」という文言は、回路、デバイス、ユニットなどに読み替えることができる。組み込み機器10のハードウェア構成は、図に示した各装置を1つ又は複数含むように構成されてもよいし、一部の装置を含まずに構成されてもよい。
例えば、プロセッサ1001は1つだけ図示されているが、複数のプロセッサがあってもよい。また、処理は、1つのプロセッサによって実行されてもよいし、処理が同時に、逐次に、又はその他の手法を用いて、1以上のプロセッサによって実行されてもよい。
組み込み機器10における各機能は、プロセッサ1001、メモリ1002などのハードウェア上に所定のソフトウェア(プログラム)を読み込ませることによって、プロセッサ1001が演算を行い、通信装置1004による通信、メモリ1002及びストレージ1003におけるデータの読み出し及び/又は書き込みなどを制御することによって実現される。
プロセッサ1001は、例えば、オペレーティングシステムを動作させてコンピュータ全体を制御する。プロセッサ1001は、周辺装置とのインタフェース、制御装置、演算装置、レジスタなどを含む中央処理装置(CPU:Central Processing Unit)によって構成されてもよい。なお、上述の制御部11などの各部は、プロセッサ1001によって実現されてもよい。プロセッサ1001は、1以上のチップによって実装されてもよい。
また、プロセッサ1001は、プログラム(プログラムコード)、ソフトウェアモジュール、データなどを、ストレージ1003及び/又は通信装置1004からメモリ1002に読み出し、これらに従って各種の処理を実行する。プログラムとしては、上述の実施の形態において説明した動作の少なくとも一部をコンピュータに実行させるプログラムが用いられる。例えば、制御部11は、メモリ1002に格納され、プロセッサ1001において動作する制御プログラムによって実現されてもよく、他の機能ブロックについても同様に実現されてもよい。
メモリ1002は、コンピュータ読み取り可能な記録媒体であり、例えば、ROM(Read Only Memory)、EPROM(Erasable Programmable ROM)、EEPROM(Electrically EPROM)、RAM(Random Access Memory)、その他の適切な記憶媒体の少なくとも1つによって構成されてもよい。メモリ1002は、レジスタ、キャッシュ、メインメモリ(主記憶装置)などと呼ばれてもよい。メモリ1002は、本実施の形態に係る広告配信方法を実施するために実行可能なプログラム(プログラムコード)、ソフトウェアモジュールなどを保存することができる。
ストレージ1003は、コンピュータ読み取り可能な記録媒体であり、例えば、フレキシブルディスク、フロッピー(登録商標)ディスク、光磁気ディスク(例えば、コンパクトディスク(CD−ROM(Compact Disc ROM)など)、デジタル多用途ディスク、Blu−ray(登録商標)ディスク)、リムーバブルディスク、ハードディスクドライブ、スマートカード、フラッシュメモリデバイス(例えば、カード、スティック、キードライブ)、磁気ストライプ、データベース、サーバ、その他の適切な記憶媒体の少なくとも1つによって構成されてもよい。ストレージ1003は、補助記憶装置と呼ばれてもよい。なお、上述の記憶部12は、メモリ1002及び/又はストレージ1003によって実現されてもよい。
通信装置1004は、有線及び/又は無線ネットワークを介してコンピュータ間の通信を行うためのハードウェア(送受信デバイス)であり、例えばネットワークデバイス、ネットワークコントローラ、ネットワークカード、通信モジュールなどともいう。なお、上述の通信部13は、通信装置1004によって実現されてもよい。
入力装置1005は、外部からの入力を受け付ける入力デバイス(例えば、キーボード、マウスなど)である。出力装置1006は、外部への出力を実施する出力デバイス(例えば、ディスプレイ、スピーカーなど)である。なお、入力装置1005及び出力装置1006は、一体となった構成(例えば、タッチパネル)であってもよい。なお、上述の入力部14及び出力部15は、それぞれ入力装置1005及び出力装置1006によって実現されてもよい。
また、プロセッサ1001、メモリ1002などの各装置は、情報を通信するためのバス1008によって接続される。バス1008は、単一のバスによって構成されてもよいし、装置間で異なるバスで構成されてもよい。
また、組み込み機器10は、マイクロプロセッサ、デジタル信号プロセッサ(DSP:Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)、FPGA(Field Programmable Gate Array)などのハードウェアを含んで構成されてもよく、当該ハードウェアにより、各機能ブロックの一部又は全てが実現されてもよい。例えば、プロセッサ1001は、これらのハードウェアの少なくとも1つで実装されてもよい。
[プログラム構成]
本実施の形態に係るユーザーインタフェース提供方法を実現するプログラムは、例えば、図1を参照して説明したように、GUI提供プログラムと、ブラウザプログラム200と、ネイティブプログラム300と、で構成されるが、これに限定されるものではない。例えば、GUI提供プログラム、ブラウザプログラム200及びネイティブプログラム300が、一つのプログラムになっていてもよい。また、GUI提供プログラム及びブラウザプログラム200が一つのプログラムになっていてもよい。
また、ブラウザプログラム200は、一般的なインターネットブラウザプログラムと同様にインターネットコンテンツを解釈及び描画可能な構成であってもよいし、本発明の実現のために、GUI提供プログラムが出力するブラウザ表示可能コンテンツのみを解釈及び描画可能な構成であってもよい。
また、GUI提供プログラムは、ライブラリの形式であってもよい。ライブラリとは、汎用性の高い複数のプログラムを再利用可能な形でひとまとまりにしたものであり、それ単体ではプログラムとして作動させることはできない、つまり実行ファイルの形式でなくてもよい。つまり、ライブラリは、他のプログラムに何らかの機能を提供するコードの集まりであってもよい。
[変形例]
なお、上述の実施の形態では、例を示したが、これに限られない。上述の実施の形態では、ユーザーインタフェース提供装置が組み込み機器自体である場合を例に挙げて説明したが、組み込み機器の表示部に、外部のユーザーインタフェース提供装置が出力したGUIを表示させるようにしても構わない。
また、本明細書において説明した用語及び/又は本明細書の理解に必要な用語については、同一の又は類似する意味を有する用語と置き換えてもよい。
本明細書において説明した情報、パラメータなどは、絶対値によって表されてもよいし、所定の値からの相対値によって表されてもよいし、対応する別の情報によって表されてもよい。また、本明細書においてパラメータなどに使用する名称は、いかなる点においても限定的なものではない。
本明細書において説明した情報、信号などは、様々な異なる技術のいずれかを使用して表されてもよい。例えば、上記の説明全体に渡って言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、チップなどは、電圧、電流、電磁波、磁界若しくは磁性粒子、光場若しくは光子、又はこれらの任意の組み合わせによって表されてもよい。
情報、信号などは、複数のネットワークノードを介して入出力されてもよい。入出力された情報、信号などは、特定の場所(例えば、メモリ)に保存されてもよいし、テーブルを用いて管理してもよい。入出力される情報、信号などは、上書き、更新又は追記をされ得る。出力された情報、信号などは、削除されてもよい。入力された情報、信号などは、他の装置へ送信されてもよい。
また、所定の情報の通知(例えば、「Xであること」の通知)は、明示的に行うものに限られず、暗示的に(例えば、当該所定の情報の通知を行わないことによって)行われてもよい。
ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語と呼ばれるか、他の名称で呼ばれるかを問わず、命令、命令セット、コード、コードセグメント、プログラムコード、プログラム、サブプログラム、ソフトウェアモジュール、アプリケーション、ソフトウェアアプリケーション、ソフトウェアパッケージ、ルーチン、サブルーチン、オブジェクト、実行可能ファイル、実行スレッド、手順、機能などを意味するよう広く解釈されるべきである。
また、ソフトウェア、命令、情報などは、伝送媒体を介して送受信されてもよい。例えば、ソフトウェアが、有線技術(同軸ケーブル、光ファイバケーブル、ツイストペア及びデジタル加入者回線(DSL)など)及び/又は無線技術(赤外線、マイクロ波など)を使用してウェブサイト、サーバ、又は他のリモートソースから送信される場合、これらの有線技術及び/又は無線技術は、伝送媒体の定義内に含まれる。
本明細書において使用する「システム」及び「ネットワーク」という用語は、互換的に使用される。
本明細書において説明した各態様/実施の形態は単独で用いてもよいし、組み合わせて用いてもよいし、実行に伴って切り替えて用いてもよい。また、本明細書で説明した各態様/実施の形態の処理手順、シーケンス、フローチャートなどは、矛盾の無い限り、順序を入れ替えてもよい。例えば、本明細書において説明した方法については、例示的な順序で様々なステップの要素を提示しており、提示した特定の順序に限定されない。
本明細書において使用する「に基づいて」という記載は、別段に明記されていない限り、「のみに基づいて」を意味しない。言い換えれば、「に基づいて」という記載は、「のみに基づいて」と「に少なくとも基づいて」の両方を意味する。
本明細書において使用する「第1の」、「第2の」などの呼称を使用した要素へのいかなる参照も、それらの要素の量又は順序を全般的に限定するものではない。これらの呼称は、2つ以上の要素間を区別する便利な方法として本明細書において使用され得る。したがって、第1及び第2の要素の参照は、2つの要素のみが採用され得ること、又は何らかの形で第1の要素が第2の要素に先行しなければならないことを意味しない。
以上、本発明に係る発明について詳細に説明したが、当業者にとっては、本発明に係る発明が本明細書中に説明した実施の形態に限定されないということは明らかである。本発明に係る発明は、請求の範囲の記載に基づいて定まる発明の趣旨及び範囲を逸脱することなく修正及び変更態様として実施することができる。したがって、本明細書の記載は、例示説明を目的とし、本発明に係る発明に対して何ら制限的な意味をもたらさない。