JP5226588B2 - 情報処理装置及びその制御方法 - Google Patents

情報処理装置及びその制御方法 Download PDF

Info

Publication number
JP5226588B2
JP5226588B2 JP2009089582A JP2009089582A JP5226588B2 JP 5226588 B2 JP5226588 B2 JP 5226588B2 JP 2009089582 A JP2009089582 A JP 2009089582A JP 2009089582 A JP2009089582 A JP 2009089582A JP 5226588 B2 JP5226588 B2 JP 5226588B2
Authority
JP
Japan
Prior art keywords
widget
component
initial focus
child
content
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2009089582A
Other languages
English (en)
Other versions
JP2009277220A5 (ja
JP2009277220A (ja
Inventor
賢一郎 中川
誠 廣田
寛基 浦島
雅次 宗國
常一 新井
茂樹 弘岡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2009089582A priority Critical patent/JP5226588B2/ja
Priority to US12/421,384 priority patent/US20090259952A1/en
Publication of JP2009277220A publication Critical patent/JP2009277220A/ja
Publication of JP2009277220A5 publication Critical patent/JP2009277220A5/ja
Application granted granted Critical
Publication of JP5226588B2 publication Critical patent/JP5226588B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Digital Computer Display Output (AREA)
  • Stored Programmes (AREA)

Description

本発明は、ユーザインタフェースをユーザに提示する技術に関する。
従来、機器やサービスのユーザインタフェース(以下「UI」ともいう。)は、CやJava(登録商標)といったプログラミング言語によって作成され、機器上に搭載されるのがほとんどであった。しかし、近年、UIをUIコンテンツとして作成し、汎用ブラウザで表示することにより、ユーザにUIを提示することが可能になった。
例えば、ピザの宅配業者は、ユーザからのピザの注文を受け付けるUIをHTMLで記述し、インターネットで公開している。ユーザがインターネットブラウザでこのHTMLを表示すると、アニメーションや音を使ったUIが表示される。ユーザは、ピザの大きさ、枚数、トッピング、ドリンクなどの注文をこのUIを介して容易に行うことが可能である。
プログラミングではなく、UIコンテンツの作成により機器やサービスのUIを提示するメリットは次の2点である。
1.UIのコンテンツ(上述の例ではHTMLファイル)を書き換えるだけで、UIの更新を行うことが可能である。プログラミングによりUIを作成した場合は、機器上のプログラムを入れ替える必要がある。これは多くの場合、UIコンテンツの書き換えよりも大変な作業である。
2.既存のブラウザを利用することで、UIを構成する画像のレンダリングや音声出力などの実装を行う必要がない。UIを作成するプログラムを習得するよりも、HTMLのような記述仕様を学習する方が簡単である。
このようなメリットから、インターネット上のサービスを中心に、UIコンテンツによるUIの記述が広く使われるようになっている。
最近では、インターネット上のサービスだけではなく、機器(PC、TV、携帯電話等)のUIも、UIコンテンツにより作成されるようになってきた。例えば、Multimodal Interaction Activity (http://www.w3.org/2002/mmi/) では、UI記述の標準仕様を検討している。また、マイクロソフト社が提案するXAML (Extensible Application Markup Language) はWindows(登録商標)Vista(登録商標)に搭載されている。
特開2002-215278号公報 特許第3186726号公報
UIにはフォーカスという概念が存在する。これは、指向性の無いユーザ操作がどのフォームに入力されるかを表現したものである。例えば、キーボード入力は一般的には指向性が無い入力である。いくつかのテキスト入力エリアを持つUIがあった場合、どのテキスト入力エリアにテキストが入力されるかは、フォーカス指定が無い場合にはユーザは知ることができない。一般的に、フォーカスは、UI部品(UIを構成するテキストエリア、ボタン、チェックボックス等のパーツ)を点線の矩形で囲むことで表現される。この情報により、ユーザは現在のキーボード入力がどのテキスト入力エリアに入力されるかを知ることが可能である。
UIが表示された時に最初にフォーカスがあたる部品を初期フォーカスUI部品と呼ぶ。どのUI部品に初期フォーカスをあてるかは、UIコンテンツの設計者が決めるものである。ユーザが最初にアクセスする可能性が高いUI部品を初期フォーカスUI部品にすることで、ユーザビリティは向上する。どこに初期フォーカスを設定するかは、UIコンテンツの中に記述されることが多い。
また、UI部品は階層化することが可能である。図5(a)はあるUI部品の例である。このUI部品の階層は、図6(a)で示すようになる。501が601、502が602、503が603、504が604、505が605、506が606、507が607、508が608、509が609にそれぞれ対応している。階層関係を持つUI部品の集合でUIを表現することにより、他のUI開発者、あるいは自分が過去に作成したUI部品を再利用することができるようになる。
このように既存のUI部品を再利用し、階層化できるUI部品において、UI開発者の意図通りに初期フォーカスUI部品を設定することは困難である。たとえば、図5(a)の501のUI部品において507のラジオボタンが初期フォーカスUI部品とされていたとする。図5(b)は、既存のUI部品を再利用したグラフィカルユーザインタフェースの例を示す図で、別のUI開発者が501のUI部品(702、703)を2つ組み合わせたUI部品である。このとき、702、703のUI部品では、それぞれ704、705のUI部品を初期フォーカスUI部品とするように記述されていることになる。このUIコンテンツを表示した場合、704、705のどちらのUI部品に初期フォーカスが設定されるかは、表示するブラウザの動作に委ねられる。このため、702、703を2つ組み合わせたUI開発者は、どちらのUI部品の初期フォーカス指定を採用するかを制御することができない。
特許文献1には、ユーザの操作履歴から、UI部品のフォーカス状態を自動で変更する技術が開示されている。また、特許文献2には、アプリケーション内の同一UI部品が同じ初期フォーカスを持つかどうかを検証するツールに関する技術が開示されている。
しかしながら、これらの技術を用いても、上記課題を解決することができない。
本発明は、初期フォーカスを指定したUI部品を持つUI部品のUI開発者と、前記UI部品を組み込んだUI部品のUI開発者双方の意図を反映した初期フォーカスの指定を行うことができる情報処理装置及びその制御方法を提供することを目的とする。
本発明の一側面によれば、ユーザインタフェース(UI)を提示する情報処理装置であって、UI部品の構成が記述された部品コンテンツを読み込む読み込み手段と、読み込んだ前記部品コンテンツを解析して複数のUI部品を構築する構築手段と、構築された複数のUI部品のうち最初に選択状態とされる初期フォーカスを持つUI部品を決定する決定手段と、前記複数のUI部品のイメージを作成するとともに、前記決定手段で決定された前記初期フォーカスを持つUI部品を選択状態であることを表すイメージに加工してユーザに提示する提示手段とを備え、前記部品コンテンツは、自UI部品の子UI部品への参照情報と、自UI部品及び子UI部品のうちのどれが初期フォーカスを持つかを指示する初期フォーカス指定の記述を含み、前記構築手段は、前記自UI部品を生成し、その後、前記参照情報に基づいて、前記自UI部品に関連付けられた子UI部品を生成することによりUI部品階層を構築し、前記決定手段は、前記UI部品階層のルートから、対応する初期フォーカス指定によって指示される子UI部品を辿り、対応する参照情報に子UI部品が指定されていないUI部品、対応する初期フォーカス指定に自UI部品が指示されているUI部品、又は、対応する初期フォーカス指定がないUI部品が検索されたとき、当該UI部品を前記初期フォーカスを持つUI部品に決定することを特徴とする情報処理装置が提供される。
本発明によれば、初期フォーカスを指定したUI部品を持つUI部品のUI開発者と、前記UI部品を組み込んだUI部品のUI開発者双方の意図を反映した初期フォーカスを指定することが可能となる。
本発明を適用可能なUI提示装置の機能構成図。 実施形態におけるUI提示装置の処理を示すフローチャート。 実施形態におけるUI部品を構築する処理、及び初期フォーカスを決定する処理のフローチャート。 本発明を適用可能なUI提示装置とUI部品コンテンツ作成装置のシステム構成を示す図。 UI部品を示すグラフィカルユーザインタフェースの例を示す図。 UI部品の階層構造の例を示す図。 実施形態5のUI部品階層の例を示す図。 実施形態におけるUI部品コンテンツの例を示す図。 初期フォーカス指定を持つUI部品階層の例を示す図。 実施形態5の初期フォーカス決定ルーチンの例を示すフローチャート。 実施形態におけるタスク階層の例を示す図。 実施形態におけるタスクコンテンツの例を示す図。 実施形態におけるUI提示装置の機能を実現する情報処理装置のハードウェア構成例を示す図。 UI部品コンテンツ作成装置の機能構成図。 UI部品コンテンツ作成アプリの動作画面例を示す図。 UI部品コンテンツ作成アプリの動作画面例を示す図。 UI部品コンテンツ作成アプリの動作画面例を示す図。 UI部品階層構築時のUI部品コンテンツの例を示す図。 UI部品コンテンツ作成アプリの動作画面例を示す図。 初期フォーカス指定を行った時のUI部品コンテンツの例を示す図。 UI部品コンテンツ作成装置の動作例を示すフローチャート。 UI部品コンテンツ作成装置における子UI部品挿入動作例、及び初期フォーカス設定動作例を示すフローチャート。 実施形態4の初期フォーカス決定ルーチンの例を示すフローチャート。 UI部品コンテンツ作成アプリの動作画面例を示す図。 UI部品コンテンツ作成アプリの動作画面例を示す図。 UI部品コンテンツ作成アプリの動作画面例を示す図。 UI部品階層構築時のUI部品コンテンツの例を示す図。 UI部品コンテンツ作成アプリの動作画面例を示す図。 初期フォーカス指定を行った時のUI部品コンテンツの例を示す図。 実施形態の機器UIの例を示す図。 実施形態のUI部品階層の例を示す図。
以下、図面を参照して本発明の好適な実施形態について詳細に説明する。なお、本発明は以下の実施形態に限定されるものではなく、本発明の実施に有利な具体例を示すにすぎない。また、以下の実施形態の中で説明されている特徴の組み合わせの全てが本発明の課題解決手段として必須のものであるとは限らない。
<実施形態1>
まず、用語の定義を行う。本文書において、UIを構成する1連続の見た目と機能をあわせた要素をUI部品と呼ぶ。例えばUI部品には、GUIでよく用いられるGUIボタンや、テキストエリア、背景のビットマップイメージなどがある。
そして、UI部品を表現する内部データをUI部品コンテンツと呼ぶ。図8(a)は図5(a)の504のラジオボタングループを表すUI部品コンテンツの例である。この例のように、UI部品コンテンツは、XML形式で表現することが可能である。また、このXML形式をバイナリ化したバイトコードもUI部品コンテンツとすることが可能である。
図8(a)のようなUI部品コンテンツは、その部品の見た目、アニメーション、何が起こった場合にどう動作するかといった振る舞いの情報を記述することが可能である。また、子UI部品への参照情報803を持つことも可能である。図8(a)のUI部品コンテンツの例では、radio1, radio2という二つの子部品を持つことを表現している。この子供を持つことができるという性質により、UI部品は木構造として表現することが可能である。
例えば図5(a)のようなUI画面があった場合、501〜509のUI部品で表現することが可能である。そして、501〜509のUI部品はそれぞれ記憶装置中のUI部品コンテンツ101で表現され、UI部品階層構築部105は、図6(a)のようなUI部品階層を構築する。なお、501〜509はそれぞれ601〜609のウィジット(Widget)に対応している。この階層での親子関係は、UI部品の親子関係を表している。例えば、図5(a)の504はラジオボタングループを表す。このラジオボタングループは、2つのラジオボタン(506、507)を含んでいる。これにより、"Widget D"(604)の子として"Widget F"(606)と"Widget G"(607)が構成される。UIを階層構造で表現することにより、UI部品の再利用性が高まるという利点がある。例えば後にこのラジオボタングループを別のUIで再利用する場合には、"Widget D"(604)を親とする部分木をUIに組み込めばよい。
本発明を適用可能なUI提示装置は、階層化されたUI部品コンテンツを解釈し、ユーザにUIを提示する装置である。しかし、本発明を適用可能なUI提示装置が動作するためには、UI部品コンテンツ作成装置によって作成されたUI部品コンテンツが揃っていなければならない。
図4はUI提示装置とUI部品コンテンツ作成装置のシステム構成を示す図である。UI部品コンテンツ作成装置1400は、マウス/キーボード1403を介したユーザの操作により、記憶装置内のUI部品コンテンツ101の作成と編集を行う。UI提示装置100は、記憶装置内のUI部品コンテンツ101を参照し、ディスプレイ102あるいはスピーカ103を介してUIをユーザに提示する。
次に、これらUI部品コンテンツ作成装置1400とUI提示装置100の説明を行う。
[UI部品コンテンツ作成装置]
次に、このようなUI部品コンテンツを編集し、UI部品階層を構築する処理について説明する。図14は、UI部品コンテンツ作成装置の機能構成図である。
UI部品コンテンツ作成装置(1400)は、UI部品コンテンツ入出力部(1404)から装置外の記憶装置にアクセスし、UI部品コンテンツ101のロードとセーブを行う。また、装置外のマウス/キーボード(1403)を介して行ったユーザの操作は、ユーザ操作取り込み部(1407)から装置内に取り込まれる。そして、装置内で編集中のUI部品コンテンツの情報は、UI部品コンテンツ提示部(1406)から装置外のディスプレイ(102)に出力される。
また、UI部品コンテンツ編集部(1405)では、ユーザの操作を解析し、その操作がUI部品階層の構築(子UI部品の挿入)である場合、その旨をUI部品コンテンツ階層構築部(1408)に通知する。また、ユーザの操作が初期フォーカスの設定である場合は、その旨を初期フォーカス設定部(1409)に通知する。これらの処理の流れについては後ほど説明する。
<UI部品の新規作成>
図15はUI部品コンテンツ作成装置1400を組み込んだUI部品コンテンツ作成アプリケーションのGUI画面例である(1500)。この例では、UI開発者Aが"Widget B" という名前のUI部品コンテンツを新規作成した時点の画面を表している。UI部品コンテンツ作成アプリ(1500)には、UI部品階層構造提示エリア(1501)とUI部品の見た目提示エリア(1502)が存在する。UI開発者Aは、これらのエリアで編集操作を行うことによりUI部品コンテンツの編集を行う。
例として、UI開発者Aが図5(a)の502,508,509で表現されたチェックボックス部品を新規作成する手順を示す。なお、502,508,509それぞれを"Widget B", "Widget H", "Widget I"という名前で呼ぶ。
まず、UI開発者Aは、図16のような"Widget B"の編集時において、UI部品の見た目提示エリアでマウス(1600)の右クリック操作を行う。するとその操作はユーザ操作取り込み部1407を介しUI部品コンテンツ編集部1405に通知される。そしてここで、コンテキストメニュー(1601)が表示され、そのメニューに"Add child widget"という項目が現れる。これを選択すると、UI部品コンテンツ階層構築部1408においてUI部品の一覧を提示する。これは、UI部品コンテンツ入出力部1404を介し、記憶装置101内に格納されたUI部品コンテンツの一覧を表示することで実現可能である。UI開発者Aは、提示されるUI部品の中から子Widgetとして設定したいUI部品を選択する。例えば、ここでは"Widget H"を選択したとする。すると、"Widget H"を"Widget B"の子として追加し、UI部品コンテンツ提示部1406において図17のような"Widget H"が持つUIの見た目(1701)が生成される。そして生成された見た目をUI部品階層構造提示エリアに提示する(1700)。同様の操作を行うことにより、"Widget I"も子UI部品として追加することが可能である。
このときの"Widget B"のUI部品コンテンツの内部データの様子を示したものが図18である。最初、子供を何も持たなかったときの状態が図18(a)である(1800)。このコンテンツには、<child-widget>という要素がなく、子供が何も設定されていないことを示している。次に図17までの操作を行い"Widget H"を子供に持つ状態が図18(b)である(1801)。"Widget H"に対する<child-widget>要素が存在している。さらに"Widget I"も子供に持った状態が図18(c)である。
さらに、UI部品コンテンツ作成アプリケーションでは、子のUI部品に初期フォーカス設定を行うことが可能である。図19はこの操作を行っている場面を表している。図19(a)のように、UI部品階層構造提示エリア(1900)に表示されたUI部品の上にマウスカーソルをあて、右クリックを行うと、その操作はユーザ操作取り込み部1407を介し、UI部品コンテンツ編集部1405に送られる。ここで、その操作に応じてコンテキストメニュー(1901)を表示させる。コンテキストメニューには"Set initial focus"という項目が現われる。UI開発者Aがこの項目を選択すると、その指示は初期フォーカス設定部1409に送られ、子のUI部品が初期フォーカスを持つという設定がなされる。そして、図19(b)のようにそれを表現した表示(1902)がUI部品コンテンツ提示部1406で生成され、ディスプレイ102を介してUI開発者Aに提示される。この例では、"Widget B"から"Widget I"に矢印が伸びた見た目となり、"Widget B"では"Widget I"に初期フォーカスが設定されたことを表現している。
最後に、UI開発者Aがデータのセーブを指示すると、その指示はユーザ操作取り込み部1407を介し、UI部品コンテンツ編集部1405に送られる。ここで、UI部品コンテンツの内部データをUI部品コンテンツ入出力部1404に送り、記憶装置101内に格納する。
図20は、これまでの操作で"Widget B"のUI部品コンテンツの内部データどのように変ったかを説明した図である。最初、子供のどれにも初期フォーカスを設定していなかったときの状態が図20(a)である(2000)。ルート要素の<widget>には"initial-focus"という属性がなく、子供のどれにも初期フォーカスを設定していないことを示している。次に図19までの操作を行い"Widget I"に初期フォーカスを設定した時点での状態が図20(b)である(2001)。<widget>に"initial-focus"という属性がつき、それが子UI部品の"Widget I"を指し示している。
図21は、UI部品コンテンツ作成装置(1400)の中枢部であるUI部品コンテンツ編集部(1405)の処理を示したフロー図である。ここでは、この図を用いて説明する。
UI部品コンテンツ作成装置が立ち上がると、このフローが開始される。フローが開始されると、まずUI部品コンテンツ入出力部1404が記憶装置101にアクセスし、編集対象のUI部品コンテンツのロードを行う(S2101)。例えば、一般的なファイル入力ダイアログを表示し、編集したいUI部品コンテンツをユーザに問い合わせる。そして、そのUI部品コンテンツをロードすることが考えられる。あるいは、UI部品を新規作成する場合は、新規作成するUI部品の名前をユーザに入力させ、UI部品コンテンツの雛形を記憶装置上に作成し、それをロードしてもよい。
編集対象のUI部品コンテンツのロードが終わると、そのUI部品コンテンツをUI部品コンテンツ提示部1406においてViewに反映する(S2102)。例えば、図15のようなViewをユーザに提示する。なお、ロードしたUI部品コンテンツが過去に編集されたものである場合、図17のように過去の編集結果を提示する。
次に、ユーザ操作取り込み部1407においてユーザの操作を取り込み(S2103)、UI部品コンテンツ編集部1405において操作に応じた処理の分岐を行う。
まず、ユーザの操作が装置の終了を指示したものである場合(S2104)、UI部品コンテンツ入出力部1404において編集中のUI部品コンテンツをセーブし(S2108)、本フローを終了する。装置の終了指示とは、たとえば、アプリケーションを終了するような処理である。
もし、ユーザ操作が子UI部品の挿入指示であった場合(S2105)、UI部品コンテンツ階層構築部1408において子UI部品の挿入処理(S2109)を行う。これはユーザが選択したUI部品コンテンツを、編集中のUI部品コンテンツの子供として設定するための処理である。子UI部品の挿入指示とは、例えば図16で示したように、UI部品の見た目提示エリアでマウスの右クリック操作を行い、コンテキストメニューから"Add child widget"という項目を選択する操作が考えられる。
図22(a)は、UI部品コンテンツ階層構築部1408において行われる子UI部品の挿入処理のフローである。この処理では、まず挿入する子UI部品を取得する(S2201)。例えば図16で示したように、コンテキストメニューから"Add child widget"という項目を選択する時に、UI部品のリストを提示し、ユーザに選択させるようにしてもよい。次に、編集中のUI部品の子として選択した部品を付け加える(S2202)。具体的には、図18で示したように、編集中のUI部品コンテンツに、<child-widget>という要素を追加し、その属性として選択したUI部品の情報を付与することが考えられる。
図21の説明に戻る。もし、ユーザ操作が初期フォーカスの設定指示であった場合(S2106)、初期フォーカス設定部1409において初期フォーカスの設定処理(S2110)を行う。これは特定の子UI部品に初期フォーカスを設定するための処理である。初期フォーカスの設定指示とは、例えば図19で示したように、UI部品階層構造提示エリアの子UI部品の上で右クリック操作を行い、コンテキストメニューから"Set initial focus"という項目を選択する操作が考えられる。
図22(b)は、初期フォーカス設定部1409において行われる初期フォーカスの設定処理のフローである。この処理では、まず初期フォーカスを持たせる子UI部品を選択する(S2301)。図19の例では、子UI部品の上で右クリック処理を行った。従って、この右クリックを行った子UI部品を、初期フォーカスを持たせる子UI部品とみなしてよい。次に、編集中のUI部品に、選択した子UI部品の初期フォーカス設定を追加する(S2302)。具体的には、図20(a),(b)で示したように編集中のUI部品コンテンツに "initial-focus"という属性を追加し、その値として選択した子UI部品の名前を記述してもよい。
再び、図21の説明に戻る。もし、ユーザの行った操作が装置の終了を指示したもの、あるいは、子UI部品の挿入を指示したもの、あるいは、初期フォーカスの設定を指示したものではなかった場合、それ以外の所定の動作を行う(S2107)。例えば、子UI部品の見た目位置を移動させる操作であった場合、ユーザの求める位置に子UI部品の見た目位置を移動する。あるいは、今までユーザが行った操作をundoする指示であった場合、undo操作を行う。これらの処理はUI部品コンテンツ編集部1405において行われる。
これらの処理を終えると、UI部品コンテンツ提示部1406において現在編集中のUI部品コンテンツをViewに反映する(S2102)。例えば、ユーザ操作が子UI部品の挿入であった場合、子UI部品の見た目をUI部品の見た目提示エリアに追加し、UI部品階層構造提示エリアに子UI部品の情報を追加する。
以上、これらの処理は、ユーザが終了指示を行うまで続ける。
<作成済みUI部品の再編集>
なお、これまでの説明は、UI部品を新規作成する場合について説明した。次に、UI開発者Cが、UI開発者AとUI開発者Bが作成したUI部品を再利用し、新たなUI部品を作成する操作について説明する。
図24は既に作成されたUI部品コンテンツをロードした場面である。例えば図6(b)のような階層を持つ"Widget A"というUI部品コンテンツをロードしたとする。なお、"Widget A"は、UI開発者Bが作成した"Widget C"という子部品しかもっていない。これから、先のUI開発者Aが作成した"Widget B"を子として追加する処理を説明する。
マウス/キーボード1403の操作により、UI開発者Cが既存のUI部品コンテンツのロードを指示すると、その操作はユーザ操作取り込み部1407を介し、UI部品コンテンツ編集部1405に送られる。すると、UI部品コンテンツ編集部1405ではUI部品コンテンツ入出力部1404を介し指定されたUI部品コンテンツを記憶装置101からロードする。
ロードが完了すると、UI部品コンテンツ作成アプリ(2400)はロードしたUI部品コンテンツの情報を、UI部品コンテンツ提示部1406から開発者Cのディスプレイ102に提示する。例えば、UI部品階層をUI部品階層構造提示エリア(2401)に提示し、UI部品の見た目をUI部品の見た目提示エリア(2402)に提示する。今回は、図6(b)で表現された階層を持つUI部品コンテンツをロードしたとする。ユーザは、マウスポインタ(2403)を用いてUI部品の見た目等を編集することが可能である。
図25は、過去に作成したUI部品を再利用し、現在のUI部品を取り込む場面である。まず、UI開発者CはUI部品の見た目提示エリア上で、子UI部品を取り込みたい場所にマウスポインタ(2500)を移動する。そしてマウスの右クリックを行うとその指示はユーザ操作取り込み部1407を介し、UI部品コンテンツ編集部1405に送られる。ここでは"Add child widget"という項目を持つコンテキストメニュー(2501)を表示する。UI開発者Cが"Add child widget"を選択すると、その指示はUI部品コンテンツ階層構築部1408に送られる。ここで、UI部品コンテンツ入出力部1404から記憶装置101内のUI部品コンテンツの情報を取り出し、その一覧を提示する。ここでは、UI開発者Cが先ほど作成した"Widget B"を選択したとする。すると、"Widget A"は既に追加されている"Widget C"に加え、"Widget B"も子UI部品として持つ。そして、図6(a)のUI階層が構築され、図26のようなViewがUI部品コンテンツ提示部1406からUI開発者Cのディスプレイ102に提示される。
図26は"Widget B"が子UI部品として追加された後のアプリケーションのViewである。"Widget B"の情報がUI部品階層構造提示エリアとUI部品の見た目提示エリアに追加される(2600,2601)。なお、"Widget B"は先ほどの処理により"Widget H"と"Widget I"を子部品として持っているため、"Widget B"を追加するだけでこれらの部品を追加することになる。
図27は、"Widget A"に"Widget B"を子UI部品として追加することで、"Widget A"のUI部品コンテンツがどのように変化したかを示した図である。図27(a)は、"Widget B"を子UI部品として追加する前の状態である(2700)。この段階で、<child-widget>要素には"Widget C"しか設定されていない。図27(b)は追加した後の状態である(2701)。新たに"Widget B"に関する<child-widget>要素(2702)が追加されている。
さらに、子UI部品に初期フォーカス設定を行うことも可能である。図28は、"Widget C"に初期フォーカス設定を行った状態を示している。まず、図28(a)のように、UI部品階層構造提示エリア(2800)の中で初期フォーカス設定を行いたい子UI部品上で右クリックすると、その指示はユーザ操作取り込み部を介してUI部品コンテンツ編集部1405に送られる。そして、ここで、コンテキストメニュー(2801)を提示する。次に、UI開発者Cが提示されたコンテキストメニュー中の"Set initial focus"を選択したとする。すると、指示は初期フォーカス設定部1409に送られ、指定した子UI部品が初期フォーカス部品として設定される。そして、図28(b)のような初期フォーカス表示(2802)がUI部品コンテンツ提示部1406からディスプレイ102に出力される。
最後に、UI開発者Cがデータのセーブを指示すると、その指示はユーザ操作取り込み部1407を介し、UI部品コンテンツ編集部1405に送られる。ここで、UI部品コンテンツの内部データをUI部品コンテンツ入出力部1404に送り、記憶装置101内に格納する。
図29は、"Widget A"において"Widget C"を初期フォーカス設定することで、"Widget A"のUI部品コンテンツがどのように変化したかを示した図である。図29(a)は、"Widget C"を初期フォーカス設定する前の状態である(2900)。<widget>要素には"initial-focus"という属性が無い。図29(b)は"Widget C"を初期フォーカス設定した後の状態である(2901)。"initial-focus"という属性が追加され、その値として"Widget C"が設定されている(2902)。
ここまでの説明により、新規にUI部品コンテンツを作成する処理を示した。また、UI部品に作成済みのUI部品を子UI部品として追加する処理を示した。また、特定の子UI部品に初期フォーカスを設定する処理について示した。これらの処理を繰り返すことで、さらに複雑なUI部品階層を構築することも可能である。
[UI提示装置]
図1は、本発明を適用可能なUI提示装置の機能構成図である。ここでは、この図を用い、本実施形態のユーザインタフェース提示装置(以下「UI提示装置」)を説明する。
本実施形態におけるUI提示装置100は、機器又はサービスのUIをユーザに提示する装置である。
UI提示装置100は、装置外部の記憶装置101に格納されたUI部品コンテンツにアクセスすることが可能である。
また、UI提示装置100にはディスプレイ102やスピーカ103といった、出力デバイスが接続されている。これらの出力デバイスを介して、画像や音声をユーザに提示することが可能である。
UI提示装置100は、UI部品コンテンツ読み込み部104を有する。UI部品コンテンツ読み込み部104は、装置外部の記憶装置101からUI部品コンテンツを読み込む。
UI部品階層構築部105は、読み込んだUI部品コンテンツを解析し、1画面のUIを構成するUI部品の階層関係を構築する。1画面のUIは、複数のUI部品で構成することが可能である。
初期フォーカス位置決定部106は、UI部品階層構築部105で構築したUI部品階層から、初期フォーカスを持つUI部品を決定する。初期フォーカスを持つUI部品は、構築された複数のUI部品のうちで最初に選択状態とされることになる。この決定処理の詳細は後述する。
UI部品階層構築部105で構築したUI部品階層と、初期フォーカス位置決定部106で決定した初期フォーカスUI部品の情報は、UI提示部107に送られる。UI提示部107は、これらの情報を用いてユーザに提示するUIを構築する。例えば、図5(a)のようなグラフィカルユーザインタフェースのイメージを作成し、ディスプレイ102を介してユーザに提示する。このとき、初期フォーカスを持つUI部品は、点線の矩形をつけるなどの手法で選択状態であることを表すイメージに加工して、ユーザに提示する。
上述のようなUI提示装置100の機能は、パーソナルコンピュータ、ワークステーション等の情報処理装置によって実現が可能である。
図13は、UI提示装置100の機能を実現する情報処理装置のハードウェア構成例を示す図である。
1は装置全体の制御を司るCPUである。2はブートプログラムや固定的なデータ等を記憶しているROMである。3は主記憶装置として機能し、CPU1のワークエリアを提供するRAMである。4はハードディスク装置(HDD)であり、ここにOS41をはじめ、UI提示プログラム42などが格納される。UI提示プログラム42には、上記したUI部品コンテンツ読み込み部104、UI部品階層構築部105、初期フォーカス位置決定部106、UI提示部107の各機能に対応するプログラムコードが含まれる。UI提示プログラム42は例えば、インターネットブラウザに組み込まれる。
また、VRAM5は表示しようとするイメージデータを展開するメモリであり、ここにイメージデータ等を展開することでディスプレイ102に表示させることができる。7及び8はそれぞれ、各種入力操作を行うためのキーボード及びマウスである。9はネットワークに接続するためのインタフェース(I/F)である。この他、上記したスピーカ103が接続されている。
図2は、UI提示装置の処理を示すフローチャートである。
まず、ユーザが機器の電源を入れると、図2で示すフローに入る。あるいは、インターネットブラウザ等で、ユーザが求めるサービスにアクセスした場合に、このフローに入るようにしてもよい。
本フローに入ると、UI部品コンテンツ読み込み部104は、ルートとなるUI部品コンテンツを表す情報を取得する(ステップS201)。取得した情報は例えばRAMに格納される。ルートとなるUI部品とは、そのUIを構成するUI部品階層のルートとなるUI部品である。
UI部品は木構造などで階層化して表現することが可能である。例えば、あるUI部品Aが別のUI部品B及びCを用いたUI部品である場合、UI部品AがUI部品BとCの親となる。このように、UI部品は階層化して表現することが可能であり、そのルートとなるUI部品コンテンツを表す情報をこの処理で取得する。一般的に、ルートとなるUI部品は、そのUIの1画面を表すUI部品して設計されることが多い。そしてルートとなるUI部品コンテンツは、機器あるいはサービスごとに決まっている。機器の場合、そのルートとなるUI部品コンテンツの情報(コンテンツIDやそのURI情報)は機器のメモリ内に格納される。また、サービスのUIの場合、そのサービスのHTML等のコンテンツにルートとなるUI部品コンテンツの情報(URI情報)が付与されることもある。
ルートとなるUI部品コンテンツを取得すると、UI部品階層構築部105は、そのコンテンツ情報を基にUI部品を構築する(ステップS202)。この処理は後ほど説明する。ルートとなるUI部品が構築されると、初期フォーカス位置決定部106は、そのUI部品を基に、初期フォーカス位置を決定する(ステップS203)。この処理も後ほど説明する。
ルートとなるUI部品が構築され、その初期フォーカス位置が決定されると、UI提示部107は、これらの情報を基に実際のUIを生成し、ユーザに提示する(ステップS204)。例えば、ピザの注文を行う入力フォーム群をグラフィカルユーザインタフェースとして作成し、ユーザのディスプレイから提示する。
図3(a)は、ステップS202の、コンテンツ情報を基にUI部品を構築する処理のフローチャートである。この処理は引数としてUI部品コンテンツを表す情報をとる。この情報は、例えば、UI部品コンテンツを表すID、あるいはそのUI部品コンテンツのURIである。
本フローに入ると、UI部品コンテンツを表す情報を基にUI部品コンテンツのロードを行う(ステップS301)。例えば、引数で与えられたUI部品コンテンツを表す情報がIDである場合には、IDとUI部品コンテンツの対応表などを参照し、UI部品コンテンツを取得する。引数で与えられたUI部品コンテンツを表す情報がURIである場合には、そのURI情報を基に、UI部品コンテンツを機器内あるいはネットワークを介して取得する。
図8(a)は、図5(a)のUIの504の部分のUI部品コンテンツの例である。UI部品コンテンツはこのようにXMLの形式で記述されてもよい。UI部品コンテンツ801は、自UI部品の子UI部品への参照情報803と、自UI部品あるいは子UI部品のうちのどれが初期フォーカスを持つかを指示する情報802の記述を含む。図8(a)の例では、自UI部品(ラジオボタングループ)は、そこに関連付けられたradio1、radio2の2つのラジオボタンを子UI部品として持ち、そのうちのradio1の子UI部品を、初期フォーカスを持つと定義している。
図8(a)のようなUI部品コンテンツを取得すると、そのUI部品コンテンツを解析し、対象となるUI部品に子のUI部品があるかを調べる(ステップS302)。図8(a)のコンテンツの場合、803にあたる情報が子のUI部品に関する情報である。この例では、子UI部品としてradio1とradio2の子UI部品を持つことを表している。ステップS302から始まるループでは、この子UI部品毎に、ステップS303とステップS304の処理を行うことを示している。
ステップS303では、子UI部品のコンテンツを示す情報から、子UI部品の構築を行う。子UI部品のコンテンツを示す情報は、子UI部品のIDあるいはそのUI部品コンテンツへのURI情報である。これらの情報を引数に、本処理フローで示す処理を行い、子UI部品の構築を行う。
そして、生成された子UI部品を、現在処理中のUI部品の子UI部品として追加する(ステップS304)。この子UI部品の生成(ステップS303)及び追加(ステップS304)を、現在処理中のUI部品の全ての子UI部品に関して行う。そして、UI部品コンテンツで定義された全ての子UI部品を処理すると、ステップS305の処理に進む。
ステップS305では、現在処理中のUI部品を本フロー呼び出し側(図2)に返す。これにより、本フローを処理することで、入力されたUI部品をルートに持つUI部品階層を構築し、呼び出し側に返す。
図3(b)は、ステップS202における、UI部品階層を基に初期フォーカスを決定する処理のフローチャートである。このフローには、図3(a)の処理で生成されたUI部品階層のルートUI部品を引数として入る。例えば、図3(a)の処理で生成されたUI部品階層が図9に示すような階層であった場合、901で示すUI部品がルートUI部品である。ルートUI部品とは、そのUI階層のルートとなるUI部品であり、例えば、1つの画面を構成するトップのUI部品(例えばスクリーンUI部品)である。
ここでは、図9で示すUI部品階層の901のUI部品を引数として本フローに入ったと仮定して説明する。まず、現在処理中のUI部品(最初はルートUI部品901)の初期フォーカス指定を参照する(ステップS401)。初期フォーカス指定とは、自UI部品あるいは子UI部品うちのどのUI部品が初期フォーカスを持つかを示す情報である。この情報は、例えば、図8(a)のUIコンテンツの場合は802のような記述("initial-focus"属性)で指定することが可能である。この情報は図3(a)の処理で生成されたUI部品階層にも残される。例えば、図9では、太線の矢印が初期フォーカスの情報を表している。例えば、図9の901のUI部品には2つの子UI部品が存在し、そのうちの"Widget C"(903)が初期フォーカスを持つことを表している。
処理中のUI部品が別のUI部品Aを初期フォーカス指定していた場合(ステップS402)、そのUI部品Aで初期フォーカスを判断する(ステップS403)。この処理は、そのUI部品Aを引数に本フローを再帰的に呼び出すことに相当する。例えば、"Widget A" のUI部品コンテンツには"Widget C"が初期フォーカスを持つと記述されていた場合、"Widget C" を引数として図3(b)のフローを呼び出す。
初期フォーカス指定が別のUI部品Aを参照していなかった場合(ステップS402)、現在処理中のUI部品が初期フォーカスを持つとして判断する(ステップS404)。例えば、処理中のUI部品が子UI部品を持たない場合や、現在処理中のUI部品コンテンツにinitial-focus="_this"のような記述があり、自らが初期フォーカスを持つと指定されていた場合がこれに相当する。また、initial-focus属性自体が指定されておらず、初期フォーカス指定がなされていないUI部品が検索された場合も、これに相当する。
この図3(b)のフローに、図9のUI部品階層のルートであるUI部品901を入力すると、初期フォーカス指定が "Widget A"、"Widget C"、"Widget D"、"Widget G" と推移する。そして、最終的に "Widget G" が初期フォーカスを持つUI部品となる。
以上説明した本実施形態におけるUI提示装置によれば、各UI開発者の意図を加味した初期フォーカスを決定することが可能である。例えば、図9での "Widget B"(902) というUI部品を作成したUI開発者Aがおり、"Widget B" の初期フォーカス指定を "Widget I"(909)にしていた。また、"Widget C"(903) というUI部品を作成したUI開発者Bがおり、"Widget G"(907)を初期フォーカス指定していた。ここで、UI開発者CがこれらのUI部品を再利用し、"Widget B" と "Widget C" を子UI部品として持つ"Widget A" を作成したとする。開発者Cは、"Widget B" と "Widget C" のどちらが初期フォーカスを持つことが望ましいかを検討し、"Widget C" に初期フォーカスを持たせたとする。すると、"Widget C" の子UI部品 "Widget G" に初期フォーカスがあたることになる。こうして、開発者Bと開発者Cの意向が初期フォーカスの決定に反映されることになる。
<実施形態2>
ここでは実施形態1のUI提示装置を、FAX機能の付いた複写機のGUI提示部に搭載した例を示す。
図30(a)は、このFAX機能の付いた複写機のGUIの例である。このGUIは、スクリーン(3000)の上にCopyに関するUI部品(3001)とFAXに関するUI部品(3007)が乗っている。
Copyに関するUI部品には、コピー枚数を入力することができるエディットボックス(3002)と、カラーモードを選択するラジオボタン(3003)、押下することでコピーを実行することができるボタン(3006)がある。なお、カラーモードを選択するラジオボタンは、二つのラジオボタン要素(3003,3004)から成り立っており、ユーザはどちらか一方を選択することが可能である。
FAXに関するUI部品には、登録されたFAX送信先が格納されたリストボックス(3008)、原稿台の原稿を読み取るためのScanボタン(3009)、読み込んだ原稿を選択された送信先に送信するFAX実行ボタン(3010)からなる。
ユーザは、方向キー、テンキー、決定キーを使ってこのUIにデータを設定し、各種の操作を実行することが可能である。例えば、方向キーを押すことで、UI部品上のフォーカス(3011)を移動することができる。そして、フォーカスを各種ボタンの上に移動し、決定キーを押すことで、そのボタンを押下することができる。また、フォーカスをエディットボックスの上に移動し、テンキーを押すことで、数字に対応した値を入力することができる。また、フォーカスをリストボックスの上に移動し、テンキーを押すことで、数字に対応したリスト要素を選択することができる。
図31(a)は図30(a)のUIをUI部品階層で表した図である。3000から3010までのUI部品は、3100から3110までの要素にそれぞれ対応している。また、図31(a)の黒線はそれぞれのUI部品の初期フォーカス指定を表している。
例えばCopyに関するUI部品(3101)は、コピー枚数を入力できるエディットボックス(3102)、カラーモードを選択するラジオボタン(3103)、押下によりコピーを実行できるボタン(3106)を子UI部品として持つ。そして、Copyに関するUI部品(3101)は、コピーボタン(3106)を初期フォーカス指定している。また、カラーモードを選択するラジオボタン(3103)は、二つのラジオボタン要素(3103,3104)を子UI部品として持つ。そして、ラジオボタン(3103)は、最初のラジオボタン要素(3103)を初期フォーカス指定している。
このようなUI部品コンテンツを記憶装置101からUI部品コンテンツ読み込み部104を介して取り込むと、本UI提示装置は、初期フォーカスを付けた状態でUIを提示する。具体的には、UI部品階層構築部105においてルートのUI部品の階層を生成する。そして、初期フォーカス位置決定部106においてルートにあるUI部品から初期フォーカス指定がされたUI部品をたどる。そしてその初期フォーカス指定がついえたUI部品を、初期フォーカスを持つUI部品として決定し、UI提示部107で初期フォーカスを設定したUIをディスプレイ102等に出力する。
例えば、図31(a)のUI部品階層を取り込むと、本UI提示装置は、ルートにあるUI部品から初期フォーカス指定がされたUI部品をたどる。ルートにあるUI部品は3100であり、この初期フォーカス指定は、3101を指している。次に3101の初期フォーカス指定をたどると次は3106のUI部品に行き着く。3106のUI部品は他のUI部品を初期フォーカス指定していないため、このUI部品を、初期フォーカスを持つUI部品とみなす。これにより、このUIを初めて提示するときに、Copyボタン(3106)にフォーカス枠を付け、ユーザに提示する。
これにより、UIの再利用を効果的に行うことができるようになる。例えば、Copyに関するUI部品を作成したUI開発者は、Copyボタン(3106)に初期フォーカスがあることが適切だと判断し、そのように設計した。なぜなら、原稿台に原稿を置き、決定キーを押すだけでコピーが行えることがCopy機としては望ましいと判断したためである。一方、FAXに関するUI部品を作成したUI開発者は、Scanボタン(3109)に初期フォーカスがあることが適切だと判断した。これは、原稿台に原稿を置き、決定キーを押すだけで原稿の読み取りが行えることがFAX機としては望ましいと判断したためである。そして、これら二つのUI部品(3101,3107)を組み込んだUI開発者は、Copyに関するUI部品(3101)の初期フォーカス設定を採用した。これは、この製品はFAX機としてよりもCopy機として使われることが多いと判断したためである。このように本発明を用いると、1階層下のどのUI部品に初期フォーカスがあるべきかを判断するだけで、最終的に適切な初期フォーカス設定がなされるようになる。
<実施形態3>
上述の実施形態1、2では、初期フォーカス指定として、各部品UIコンテンツで単一のUI部品を指定していた。しかし、これを複数指定することも可能である。
図8(b)は、初期フォーカス指定として、複数のUI部品を指定した例である。UI部品コンテンツ1001には、1002で示される第1の初期フォーカス指定1に加えて、1003で示される第2の初期フォーカス指定2が記述されている。
何らかの理由によって、初期フォーカス指定1に記述されているUI部品の構築に失敗した場合、初期フォーカス指定2に記述されているUI部品に初期フォーカスを与える。例えば、図8(b)において、"radio2"のUI部品コンテンツ("radio.xml")にアクセスできなかった場合、"_this"(自分自身)を表すUI部品を初期フォーカスとする。
このように、初期フォーカス指定を複数指定することにより、子UI部品として利用でき、かつ、初期フォーカスとして上位に指定されているものから初期フォーカスを決定することが可能となる。
<実施形態4>
ここでは実施形態3のUI提示装置を、FAX機能の付いた複写機のGUI提示部に搭載した例を示す。
図30(a)は、このFAX機能の付いた複写機のGUIの例である。このGUIは、スクリーン(3000)の上にCopyに関するUI部品(3001)とFAXに関するUI部品(3007)が乗っている。
Copyに関するUI部品には、コピー枚数を入力することができるエディットボックス(3002)と、カラーモードを選択するラジオボタン(3003)、押下することでコピーを実行することができるボタン(3006)がある。なお、カラーモードを選択するラジオボタンは、二つのラジオボタン要素(3003,3004)から成り立っており、ユーザはどちらか一方を選択することが可能である。
FAXに関するUI部品には、登録されたFAX送信先が格納されたリストボックス(3008)、原稿台の原稿を読み取るためのScanボタン(3009)、読み込んだ原稿を選択された送信先に送信するFAX実行ボタン(3010)からなる。
図31(b)は図30(a)のUIをUI部品階層で表した図である。3000から3010までのUI部品は、3200から3210までの要素にそれぞれ対応している。また、図31(b)の黒線の矢印はそれぞれのUI部品の初期フォーカス指定を表しており、点線の矢印が第2の初期フォーカス指定に対応している。
例えば、Screen(3200)はCopyに関するUI部品(3201)とFAXに関するUI部品(3207)を子UI部品として持つ。そして、第1の初期フォーカス指定としてCopyに関するUI部品(3201)を、第2の初期フォーカス指定としてFAXに関するUI部品(3201)を指定しているとする。
このようなUI部品階層を取り込むと、これまでの説明ではルートのUI部品コンテツから初期フォーカス指定を辿り、それがついえたUI部品を、初期フォーカスを持つUI部品として決定した。
しかし、何らかの理由で、特定のUI部品以下が使用不可能になったことを考える。例えば、FAX機能の付いた複写機において用紙切れが発生し、用紙を使ったCopyアプリケーションが使用できなくなったとする。その場合に、Copyに関するUIにはアクセスできないことが望ましい。当然、アクセスできないUIには初期フォーカスが設定されないことが望ましい。
例えば、FAX機能の付いた複写機において用紙切れが発生した場合は、図30(b)のようなGUIとなることが望ましい。この図では、用紙を使用するCopyに関するUI(3301,3302,3303,3304,3305,3306)はグレーアウトされ、アクセスできないことをユーザに通知している。また、この画面が表示された際の初期フォーカス(3311)は、Copyに関するUI以外のUI部品にあたることが望ましい。
図23は、この時の初期フォーカス決定ルーチンのフローである。このフローには、ルートとなるUI部品コンテンツを伴って実行する。例えば、図31(b)のようなUI部品階層であった場合、ルートのScreenに関するUI部品コンテンツを伴って実行する。
まず、現在処理中のUI部品から初期フォーカス指定を参照する(S3401)。例えば、図31(b)のScreenの場合、第一の初期フォーカス指定として Copyに関するUI(3201)を、第2の初期フォーカス指定として FAXに関するUI(3207)を取得する。
次に、第1の初期フォーカス指定が別のUI部品Aを参照しているか判断する(S3402)。今回、第1の初期フォーカス指定はCopyに関するUI(3201)である。次に、このUI部品Aが利用可能かどうかを判定する(S3403)。ここでは、用紙切れが発生しており、Copyに関するUIは利用できないため、Noとなる。
次に、第2の初期フォーカス指定が別のUI部品Bを参照しているか判断する(S3404)。今回、第2の初期フォーカス指定はFAXに関するUI(3207)である。そして、このUI部品Bが利用可能かどうかを判定する(S3405)。ここでは、利用可能と判断する。すると、UI部品Bで初期フォーカスを判断する(S3406)。つまり、UI部品BであるFAXに関するUI(3207)を伴い、図23のフローを実行する。
FAXに関するUI(3207)を伴い図23のフローを実行すると、S3407の処理により、Scan ボタン(3209)で初期フォーカスを判断することになる。更に、Scan ボタン(3209)を伴い図23のフローを実行すると、S3408の処理によりScan ボタン(3209)が初期フォーカスとして決定する。
以上により、Scan ボタン(3209)が初期フォーカスを持つと判定され、図30(b)のように、Scanボタン(3309)に初期フォーカス(3311)があたった状態でユーザに提示されることになる。
以上により、子UI部品の最大二つまでを初期フォーカス指定することができるようになった。そのため、子UI部品の一つが利用できなくなった場合に、もう一方のUI部品に初期フォーカス指定を行うことが可能となる。
<実施形態5>
実施形態3と4では、第1の初期フォーカス指定、第2の初期フォーカス指定という形で、初期フォーカス指定を行った。しかし、初期フォーカスの候補を3つ以上設定することも可能である。
例えば、図8(c)の例では、初期フォーカスの指定に、初期フォーカス確率という形で、0から1までの数値を振ったUI部品コンテンツの例である。具体的には、このUI部品(3600)は"Number"、"Color_mode"、"Copy"という3つの子UI部品を持つ。そして、それぞれの子UI部品の初期フォーカスがあたる確率として、"0.4", "0.1", "0.5"という値を設定している(3601)。この確率は<child-widget>要素の"initial-focus-probability"属性で表現されている。
なお、このような初期フォーカス確率という形で図31(b)のUI部品階層構造を表現し直した図が図7である。初期フォーカス指定を表した矢印の代わりに、0から1までの数値を、親子関係を表す線に付けている。この数値が大きいほどその子UI部品が初期フォーカスを持つ確率が高いとする。なお、ここでは一つの親が持つ子UI部品の初期フォーカス確率の総和は1となるようにしている。
図10は、この時の初期フォーカス決定ルーチンのフローである。このフローには、ルートとなるUI部品コンテンツを伴って実行する。例えば、図7のようなUI部品階層であった場合、ルートのScreen(3500)に関するUI部品コンテンツを伴って実行する。
まず、現在処理中のUI部品から初期フォーカス指定を参照する(S3701)。例えば、図31(b)のScreen(3500)の場合、Copyに関するUI(3501)とFAXに関するUI(3507)それぞれの初期フォーカス指定として"0.7"、"0.3"を取得する。次に、内部変数Nを1で初期化する(S3702)。
次に、Nが子UI部品の数より大きいかどうか判断する(S3703)。現在Nは1であり、このUI部品の子の数である2より大きくないためここではNoとなる。そして、N番目に大きい優先度を持つ子UI部品を取得する(S3704)。現在、Nは1であり、1番目に大きな優先度を持つUI部品であるCopyに関するUIであるUI部品(3501)を取得する。
次に、取得したUI部品が利用可能かどうかを判断する(S3705)。ここでは現在用紙切れが発生しており、Copyに関するUIが利用できないとする。すると、Nに1を加える処理を行う(S3706)。これにより、Nが2に変更される。そしてNが子UI部品の数より大きいかの判定処理(S3703)に戻る。
ここでも、Nの現在の数である2は子UI部品数の2よりも大きくないため、2番目に大きい優先度を持つ子UI部品であるFAXに関するUI部品(3507)を取得する(S3704)。そして、このUI部品が利用可能かを判定する(S3705)。ここでは用紙切れが発生しているが、FAX送信に関しては使用に影響がないため判定はYesとなる。そのため処理S3707に進み、本フローを今度はFAXに関するUI部品(3507)を引数として実行する。
FAXに関するUI部品(3507)を引数として本フローを実行すると、Nが1の時にUI部品であるScanボタン(3509)が選択され(S3704)、そのUI部品が利用可能であると判定される(S3705)。そして、処理S3707で、今度はScanボタンに関するUI部品(3509)を引数として本フローを実行する(S3707)。
Scanボタンに関するUI部品(3509)を引数として本フローを実行すると、このUI部品は子UI部品を持たないため、S3703の処理でYesと判定される。そして処理中のUI部品であるScanボタンに関するUI部品(3509)を、初期フォーカスを持つUI部品として決定する(S3708)。
これにより、初期フォーカスを持つUI部品が決定され、図30(b)のようにUIを提示する際に3707のUI部品にフォーカス(3311)をあてた状態で提示することが可能となる。
実施形態4では、子UI部品の最大二つまでを初期フォーカス指定することができた。そのため、子UI部品の一つが利用できなくなった場合に、もう一方のUI部品に初期フォーカスをあてることができる。しかし、初期フォーカス指定された二つのUI部品双方が利用不可能になった場合、適切な場所に初期フォーカスをあてることができなかった。
一方、実施形態5の方式では、全ての子UI部品に優先度という形で初期フォーカス指定を行うことが可能となる。これにより、子UI部品のうち複数のUI部品が利用不可能になっても、利用可能な子UI部品のうち最も優先度の高いUI部品に初期フォーカス指定を行うことが可能となる。
<実施形態6>
実施形態1から実施形態5では、UI部品階層での初期フォーカス決定方法について説明した。しかし、本発明は初期フォーカスの決定以外の処理にも応用可能である。
例えば、図11は、ピザ注文サービスが持つUIのタスク(Task)階層を示す図である。Taskとは、サービスが完了するまでにUI提示装置が達成すべき作業のことである。ルートとなる"Root Task"(1101)は、ユーザからピザとドリンクの注文を受け取るという責務がある。そして、その責務のために処理内容が具体化(break down)された"ユーザへの挨拶"(1002)、"注文の受け取り"(1103)という2つの子タスク要素へのリンク情報を持つ。このように自タスク要素は、その子タスク要素へとbreak down されていき、最終的には"「ピザの枚数は?」と表示し、一桁の数値を受け付ける"(1110)といった具体的なコマンドになる。
自タスク要素が子タスク要素を指定する際に、どの子タスク要素を最初に実行するかの情報が指定されているものとする。例えば、図12は、"Root Task"を表現したタスクコンテンツの例である。"Root Task"(1201)には"ユーザへの挨拶"(1203)と"注文の受け取り"(1204)という子Taskが宣言されており、そのうちの"ユーザへの挨拶"が初期タスクとして指定されている(1202)。
UI提示装置は、図11のようなTask階層を、ルートとして指定されたタスクコンテンツから構築する。そして構築されたタスク階層を用い、対応する初期タスク情報をルートタスクから参照していき、初期タスクとなるタスクを決定する。このときのアルゴリズムは図2から図3(b)の"UI部品"を"Task"、"初期フォーカス"を"初期Task"と置き換えることで応用可能となる。
また、実施形態2のように、タスクコンテンツに、第1の初期タスク情報に加えて、第2の初期タスク情報を記述するなど複数の初期タスクを指定し、タスク要素構築の失敗に備えてもよい。この場合、子タスクとして利用でき、かつ、初期タスクとして上位に指定されているものから初期タスクを決定することが可能となる。
以上説明したように、本発明は、階層的に表現されたUI表現において、その中で唯一のUI要素(UI部品、Task)に特別の意味(初期フォーカス、初期Task)を持たせたい場合に利用することが可能である。
<実施形態7>
上述の実施形態では、UI部品コンテンツあるいはTaskコンテンツがXML形式で記述されたファイルとして説明した。しかしこれは一例に過ぎないことを理解すべきである。各コンテンツはHTML形式のような既存の言語仕様で書かれたコンテンツであってもよい。また、XMLをbinary化したバイトコードであってもよい。また、CやJava(登録商標)といった既存のプログラミング言語のソースファイル、ヘッダファイル、インタフェースファイルであってもよい。あるいはUIを表現する独自のデータ形式であってもよい。

Claims (4)

  1. ユーザインタフェース(UI)を提示する情報処理装置であって、
    UI部品の構成が記述された部品コンテンツを読み込む読み込み手段と、
    読み込んだ前記部品コンテンツを解析して複数のUI部品を構築する構築手段と、
    構築された複数のUI部品のうち最初に選択状態とされる初期フォーカスを持つUI部品を決定する決定手段と、
    前記複数のUI部品のイメージを作成するとともに、前記決定手段で決定された前記初期フォーカスを持つUI部品を選択状態であることを表すイメージに加工してユーザに提示する提示手段と、
    を備え、
    前記部品コンテンツは、自UI部品の子UI部品への参照情報と、自UI部品及び子UI部品のうちのどれが初期フォーカスを持つかを指示する初期フォーカス指定の記述を含み、
    前記構築手段は、前記自UI部品を生成し、その後、前記参照情報に基づいて、前記自UI部品に関連付けられた子UI部品を生成することによりUI部品階層を構築し、
    前記決定手段は、前記UI部品階層のルートから、対応する初期フォーカス指定によって指示される子UI部品を辿り、対応する参照情報に子UI部品が指定されていないUI部品、対応する初期フォーカス指定に自UI部品が指示されているUI部品、又は、対応する初期フォーカス指定がないUI部品が検索されたとき、当該UI部品を、前記初期フォーカスを持つUI部品に決定する
    ことを特徴とする情報処理装置。
  2. 前記部品コンテンツは、自UI部品について、第1の初期フォーカス指定の記述と、前記第1の初期フォーカス指定とは異なる第2の初期フォーカス指定の記述とを含み、
    前記決定手段は、前記構築手段が前記第1の初期フォーカス指定によって指示されるUI部品の構築に失敗した場合、前記第2の初期フォーカス指定によって指示されるUI部品を、前記初期フォーカスを持つUI部品に決定する
    ことを特徴とする請求項1に記載の情報処理装置。
  3. ユーザインタフェース(UI)を提示するための情報処理装置の制御方法であって、
    読み込み手段が、UI部品の構成が記述された部品コンテンツを読み込む読み込みステップと、
    構築手段が、読み込んだ前記部品コンテンツを解析して複数のUI部品を構築する構築ステップと、
    決定手段が、構築された複数のUI部品のうち最初に選択状態とされる初期フォーカスを持つUI部品を決定する決定ステップと、
    提示手段が、前記複数のUI部品のイメージを作成するとともに、前記決定ステップで決定された前記初期フォーカスを持つUI部品を選択状態であることを表すイメージに加工してユーザに提示する提示ステップと、
    を有し、
    前記部品コンテンツは、自UI部品の子UI部品への参照情報と、自UI部品及び子UI部品のうちのどれが初期フォーカスを持つかを指示する初期フォーカス指定の記述を含み、
    前記構築ステップは、前記自UI部品を生成し、その後、前記参照情報に基づいて、前記自UI部品に関連付けられた子UI部品を生成することによりUI部品階層を構築し、
    前記決定ステップは、前記UI部品階層のルートから、対応する初期フォーカス指定によって指示される子UI部品を辿り、対応する参照情報に子UI部品が指定されていないUI部品、対応する初期フォーカス指定に自UI部品が指示されているUI部品、又は、対応する初期フォーカス指定がないUI部品が検索されたとき、当該UI部品を、前記初期フォーカスを持つUI部品に決定する
    ことを特徴とする情報処理装置の制御方法。
  4. コンピュータに請求項3に記載の制御方法を実行させるためのプログラム。
JP2009089582A 2008-04-14 2009-04-01 情報処理装置及びその制御方法 Active JP5226588B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009089582A JP5226588B2 (ja) 2008-04-14 2009-04-01 情報処理装置及びその制御方法
US12/421,384 US20090259952A1 (en) 2008-04-14 2009-04-09 Information processing apparatus and method of controlling same

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2008104946 2008-04-14
JP2008104946 2008-04-14
JP2009089582A JP5226588B2 (ja) 2008-04-14 2009-04-01 情報処理装置及びその制御方法

Publications (3)

Publication Number Publication Date
JP2009277220A JP2009277220A (ja) 2009-11-26
JP2009277220A5 JP2009277220A5 (ja) 2012-05-17
JP5226588B2 true JP5226588B2 (ja) 2013-07-03

Family

ID=41165013

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009089582A Active JP5226588B2 (ja) 2008-04-14 2009-04-01 情報処理装置及びその制御方法

Country Status (2)

Country Link
US (1) US20090259952A1 (ja)
JP (1) JP5226588B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101961741B1 (ko) * 2009-06-15 2019-03-25 삼성전자 주식회사 위젯 생성 및 통신 방법
US20100325565A1 (en) * 2009-06-17 2010-12-23 EchoStar Technologies, L.L.C. Apparatus and methods for generating graphical interfaces
CN102033742A (zh) * 2009-09-29 2011-04-27 鸿富锦精密工业(深圳)有限公司 具有用户界面自动生成功能的电子装置及方法
JP2012038068A (ja) * 2010-08-06 2012-02-23 Mitsubishi Heavy Ind Ltd プログラム作成装置及び画像制御システム
JP6819399B2 (ja) * 2017-03-24 2021-01-27 富士ゼロックス株式会社 操作画面生成装置及び操作画面生成プログラム
US10788972B2 (en) * 2017-10-02 2020-09-29 Fisher-Rosemount Systems, Inc. Systems and methods for automatically populating a display area with historized process parameters
KR20240018131A (ko) * 2022-08-02 2024-02-13 (주)광개토연구소 이미지 기술맵 처리 방법 및 그 시스템
CN116401178B (zh) * 2023-06-09 2023-08-11 成都融见软件科技有限公司 Ui组件问题点定位方法、电子设备和介质

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5544299A (en) * 1994-05-02 1996-08-06 Wenstrand; John S. Method for focus group control in a graphical user interface
JPH0883162A (ja) * 1994-09-14 1996-03-26 Toshiba Corp 画面表示システム
US5625763A (en) * 1995-05-05 1997-04-29 Apple Computer, Inc. Method and apparatus for automatically generating focus ordering in a dialog on a computer system
US5864819A (en) * 1996-11-08 1999-01-26 International Business Machines Corporation Internal window object tree method for representing graphical user interface applications for speech navigation
US6249284B1 (en) * 1998-04-01 2001-06-19 Microsoft Corporation Directional navigation system in layout managers
US6614457B1 (en) * 1998-10-27 2003-09-02 Matsushita Electric Industrial Co., Ltd. Focus control device that moves a focus in a GUI screen
US6549221B1 (en) * 1999-12-09 2003-04-15 International Business Machines Corp. User interface management through branch isolation
US6606106B1 (en) * 2000-06-02 2003-08-12 Sun Microsystems, Inc. Hierarchical model for expressing focus traversal
US6654038B1 (en) * 2000-06-02 2003-11-25 Sun Microsystems, Inc. Keyboard navigation of non-focusable components
US20020149623A1 (en) * 2001-01-26 2002-10-17 Alan West State and data driven dynamic menu and toolbar architecture
US7111243B1 (en) * 2001-03-02 2006-09-19 Oracle International Corporation Customization of tab-order functionality in internet applications
US20040041837A1 (en) * 2001-09-13 2004-03-04 Naoto Yamaguchi Gui part focus movement destination setter and focus moving device
US6918090B2 (en) * 2002-01-23 2005-07-12 International Business Machines Corporation Dynamic setting of navigation order in aggregated content
KR100833229B1 (ko) * 2002-03-16 2008-05-28 삼성전자주식회사 다층구조 포커싱 방법 및 그 장치
US7134089B2 (en) * 2002-11-13 2006-11-07 Microsoft Corporation Directional focus navigation
US7712051B2 (en) * 2003-09-30 2010-05-04 Sap Ag Keyboard navigation in hierarchical user interfaces
FR2877112B3 (fr) * 2004-10-22 2007-06-08 Nds Ltd Procede de gestion de fenetres d'affichage
US7631278B2 (en) * 2004-11-19 2009-12-08 Microsoft Corporation System and method for directional focus navigation
US7636897B2 (en) * 2004-11-19 2009-12-22 Microsoft Corporation System and method for property-based focus navigation in a user interface
US9785329B2 (en) * 2005-05-23 2017-10-10 Nokia Technologies Oy Pocket computer and associated methods
US10983695B2 (en) * 2005-10-24 2021-04-20 Kinoma, Inc. Focus management system
US7631272B2 (en) * 2005-11-14 2009-12-08 Microsoft Corporation Focus scope
US20070294371A1 (en) * 2006-06-15 2007-12-20 Petri John E Method for determining input focus for web pages having aggregated content

Also Published As

Publication number Publication date
JP2009277220A (ja) 2009-11-26
US20090259952A1 (en) 2009-10-15

Similar Documents

Publication Publication Date Title
JP5226588B2 (ja) 情報処理装置及びその制御方法
JP5031242B2 (ja) データバインドされたリッチなアプリケーション
US9946518B2 (en) System and method for extending a visualization platform
JP4280759B2 (ja) 情報処理装置およびユーザインタフェース制御方法
US10110728B2 (en) Theme change system, portable communication device, server apparatus, and computer program
Paterno et al. Authoring pervasive multimodal user interfaces
Luyten Dynamic user interface generation for mobile and embedded systems with model-based user interface development
JP4440716B2 (ja) 表示データ生成装置、表示装置、表示データ生成システム、表示データ生成装置の制御方法、表示データ生成プログラム、記録媒体、電子装置及び電子装置の制御方法
KR20140042537A (ko) 템플릿을 이용한 매쉬업 저작 장치 및 그 방법
Valverde et al. Facing the technological challenges of web 2.0: A RIA model-driven engineering approach
JP2010277120A (ja) 画像形成装置及びアプリケーションビュー変換プログラム
KR100331159B1 (ko) 화면작성에디터
JP4814801B2 (ja) 表示画面構成装置
KR100409224B1 (ko) 데이터 방송용 컨텐츠 제작 시스템 및 그 제작 방법
JP2018124758A (ja) 情報処理装置、情報処理方法、及びプログラム
US20040139483A1 (en) System and method for authorizing data broadcasting contents
US11379194B2 (en) Systems and methods for automatic code generation
JP2002366352A (ja) Webアプリケーション開発支援装置
KR102299746B1 (ko) 웹 기반의 이 기종 데이터베이스의 데이터 자동 처리 시스템 및 그 방법
JP5984358B2 (ja) ソフトウェア開発支援装置及びプログラム
JP2007156712A (ja) 情報処理装置及びその制御方法、プログラム
US20030097486A1 (en) Method for automatically interfacing collaborative agents to interactive applications
López-Jaquero et al. T: XML: a tool supporting user interface model transformation
Context-Aware Serenoa Framework (R2)
KR100723913B1 (ko) 구조화된 데이터 방송 어플리케이션, 그 기록 매체, 및 그동작 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120327

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120327

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130206

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130215

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130314

R151 Written notification of patent or utility model registration

Ref document number: 5226588

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160322

Year of fee payment: 3