(57)【特許請求の範囲】
【請求項１】
アプリケーションプログラムに基づいて各種の機能を実現するアプリケーションプログラム実行部と、
前記アプリケーションプログラムに基づく所定の機能の実行を前記アプリケーションプログラム実行部に指示するためのユーザインタフェースを生成するユーザインタフェース生成部と、
前記ユーザインタフェース生成部により生成されるユーザインタフェースを表示する表示部と、
前記ユーザインタフェースの構成要素であるユーザインタフェースオブジェクトを定義するユーザインタフェースオブジェクト定義情報を含むユーザインタフェース定義ファイルを格納するとともに、各操作手段に関する情報を格納する記憶部と、
を備えるユーザインタフェース生成装置であって、
前記ユーザインタフェース生成部は、前記記憶部に格納された複数のアプリケーションプログラムからユーザインタフェースオブジェクト定義情報を選択し、当該選択したユーザインタフェースオブジェクト定義情報と前記各操作手段に関する情報とに基づいて、前記選択したユーザインタフェースオブジェクト定義情報に対応するユーザインタフェースオブジェクトを配置する際に確保すべきマージンを設定し、当該設定したマージンに基づいて前記選択したユーザインタフェースオブジェクトを前記表示部における所定の表示領域に配置することにより、合成ユーザインタフェースを生成することを特徴とする、ユーザインタフェース生成装置。
【請求項２】
前記ユーザインタフェース生成部は、前記ユーザインタフェースオブジェクトと該ユーザインタフェースオブジェクトに隣接して配置するユーザインタフェースオブジェクトとが異なる前記ユーザインタフェース定義ファイルに含まれる場合に、同一の前記ユーザインタフェース定義ファイルに含まれる場合よりも、当該ユーザインタフェースオブジェクトと前記隣接して配置するユーザインタフェースオブジェクトとの間のマージンを広く設定することを特徴とする、請求項１に記載のユーザインタフェース生成装置。
【請求項３】
前記各操作手段に関する情報は、前記ユーザインタフェースにおいてユーザ操作を受け付ける際の基準となる接触面積に関する情報を含み、
前記ユーザインタフェース生成部は、前記ユーザインタフェースオブジェクトと該ユーザインタフェースオブジェクトに隣接して配置するユーザインタフェースオブジェクトとの双方がユーザ操作を受け付ける種別のユーザインタフェースオブジェクトである場合、当該ユーザインタフェースオブジェクトの表示サイズと前記接触面積とに基づき、当該ユーザインタフェースオブジェクトと前記隣接して配置するユーザインタフェースオブジェクトとの間のマージンを設定することを特徴とする、請求項１に記載のユーザインタフェース生成装置。
【請求項４】
前記各操作手段に関する情報は、前記ユーザインタフェースにおいてユーザ操作を受け付ける際の基準となる接触面積に関する情報を含み、
前記ユーザインタフェース生成部は、前記ユーザインタフェースオブジェクトがユーザ操作を受け付ける種別のユーザインタフェースオブジェクトである場合、当該ユーザインタフェースオブジェクトの表示サイズと前記接触面積とに基づいて、前記表示部の端に配置される場合の当該ユーザインタフェースオブジェクトと前記表示部の端との間のマージンを設定することを特徴とする、請求項１に記載のユーザインタフェース生成装置。
【請求項５】
前記ユーザインタフェース生成部は、前記ユーザインタフェースオブジェクトがユーザ操作を受け付ける種別のユーザインタフェースオブジェクトである場合、当該ユーザインタフェースオブジェクトの表示サイズと前記各操作手段に関する情報とに基づき、当該ユーザインタフェースオブジェクトが前記表示部の端に配置される場合の当該ユーザインタフェースオブジェクトと前記表示部の端との間のマージンを設定することを特徴とする、請求項１に記載のユーザインタフェース生成装置。
【請求項６】
前記ユーザインタフェースオブジェクト定義情報は、前記ユーザインタフェースオブジェクトと他のユーザインタフェースオブジェクトとの関連性に関する情報を含み、
前記ユーザインタフェース生成部は、前記ユーザインタフェースオブジェクトと該ユーザインタフェースオブジェクトに隣接して配置するユーザインタフェースオブジェクトとの前記関連性に関する情報に基づく当該関連性が高い場合には、当該ユーザインタフェースオブジェクトと前記隣接して配置するユーザインタフェースオブジェクトとの間のマージンを、前記関連性に関する情報を有さない他のユーザインタフェースオブジェクトとの間のマージンよりも狭く設定することを特徴とする、請求項１に記載のユーザインタフェース生成装置。
【請求項７】
前記ユーザインタフェースへの操作入力手段を判別する操作入力手段判別部をさらに備え、
前記各操作手段に関する情報は、前記ユーザインタフェースに対する入力を行うための複数の操作入力手段に対応する接触面積に関する情報を含み、
前記ユーザインタフェース生成部は、前記ユーザインタフェースオブジェクトがユーザ操作を受け付ける種別のユーザインタフェースオブジェクトである場合、当該ユーザインタフェースオブジェクトの表示サイズと前記接触面積に関する情報とに基づき、前記操作入力手段判別部で判別された操作入力手段に応じて、当該ユーザインタフェースオブジェクトと該ユーザインタフェースオブジェクトに隣接して配置するユーザインタフェースオブジェクトとの間のマージンを設定することを特徴とする、請求項１に記載のユーザインタフェース生成装置。
【請求項８】
前記ユーザインタフェースを介して前記アプリケーションプログラム実行部に前記アプリケーションプログラムに基づく所定の機能の実行を指示する入力を受け付ける操作入力受付部と、
前記操作入力受付部への操作入力手段を判別する操作入力手段判別部と、をさらに備え、
前記ユーザインタフェース生成部は、前記操作入力手段判別部で判別された操作入力手段に応じて前記各操作手段に関する情報を書き換えることを特徴とする、請求項１に記載のユーザインタフェース生成装置。
【請求項９】
前記表示部において前記合成ユーザインタフェースの表示中に、前記操作入力手段判別部により前記操作入力手段の変更が検知された場合、前記ユーザインタフェース生成部は、当該変更された操作入力手段に応じて前記各操作手段に関する情報を書き換え、当該書き換えた各操作手段に関する情報に基づいて新たな合成ユーザインタフェースを生成することを特徴とする、請求項８に記載のユーザインタフェース生成装置。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
本出願は、２００８年６月２７日に出願された日本国特許出願２００８−１６８９４５号の優先権を主張するものであり、この先の出願の開示全体をここに参照のために取り込む。
【技術分野】
【０００２】
本発明は、ユーザインタフェース生成装置に関し、特に、携帯端末のユーザインタフェースを生成するユーザインタフェース生成装置に関するものである。
【背景技術】
【０００３】
携帯電話に代表される携帯端末のユーザインタフェース（以下、適宜「ＵＩ」と略記する）は、ユーザが携帯端末を操作する際の操作性を大きく左右する。そのため、携帯端末のＵＩは、ユーザが携帯端末を購入する際の決め手となる重要な要素の１つになっている。【０００４】
近年、携帯端末は著しく多機能化し、それに伴いアニメーションや３Ｄの表現などを利用した表現力豊かなＵＩを備える携帯端末も多い。また、ユーザの嗜好に合わせてＵＩをカスタマイズできる携帯端末もあり、このような携帯端末は、ユーザにとっての利便性を著しく向上させている。【０００５】
従来の携帯端末は、各メーカ間および各機種間でＵＩのデザインや操作方法が異なるのが一般的であった。すなわち、ＵＩは各端末機器に固有のものであり、端末ごとに機種依存性の高いＵＩを備えるものがほとんどであった。そのため、端末の開発を行う際に、他の端末のプログラムコードを再利用する場合、そのプログラムコードに対して必要なＵＩ部分の変更は膨大になる。したがって、ある端末のプログラムコードを他の端末に移植するのは困難であった。【０００６】
そこで、最近では、ＸＭＬ（Extensible Markup Language）をベースにしたＵＩが導入されつつある。記述方式が共通化されたＸＭＬファイルを用いてＵＩを表現することによって、プログラムコードの再利用が容易になり、他の機種へのＵＩの移植も可能になる。したがって、例えば、異なるメーカの異なる端末機種間でも同じＵＩを使用することができるなど、各端末からＵＩのみを独立させるように扱うことも可能になる。【０００７】
このような、ＸＭＬをベースにしたＵＩのうち代表的なものとして、ＴＡＴ社（http://www.tat.se/）が開発したＵＩ  Ｆｏｕｎｄａｔｉｏｎや、Ａｃｒｏｄｅａ社（http://www.acrodea.co.jp/）が開発したＶＩＶＩＤ  ＵＩや、Ｑｕａｌｃｏｍｍ社（http://www.qualcomm.co.jp/）が開発したＵＩ  Ｏｎｅなどを挙げることができる。【０００８】
また、近年の携帯端末は、端末本体の多機能化および高性能化に伴い、同時に複数のタスクを並行して実行できるマルチタスク処理に対応したＯＳ（オペレーティングシステム）を実装したものが増えている。さらに、並行して同時に処理する複数のタスクにそれぞれの表示領域（ウィンドウ）を割り当てて、出力画面の表示を多重化するマルチウィンドウ機能に対応した携帯端末も普及しつつある。【０００９】
ところで、例えば特開２００１−３６６５２号公報には、赤外線通信部を備える携帯電話端末を用いて、赤外線通信により複数の外部機器を遠隔操作（制御）できるようにした技術が開示されている。この特開２００１−３６６５２号公報に記載の携帯電話端末は、外部機器との通信を行う外部制御部を備えている。この携帯電話端末は、外部の機器を遠隔制御するための外部機器制御情報を、電話回線などを介して取得したり、または外部機器から受信するなどして記憶し、この外部機器制御情報に基づいて外部機器を遠隔制御することができる。すなわち、内蔵のアプリケーションプログラム（以下、単に「アプリケーション」という）を変更することで、通常は携帯電話として使用する端末本体を、複数の外部機器を遠隔操作するリモートコントロール（以下、単に「リモコン」という）端末として用いることができる。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上記特開２００１−３６６５２号公報に開示されている携帯電話端末によれば、各外部機器に対応するそれぞれの外部機器制御情報に基づいて、１台の携帯電話端末で複数の外部機器を遠隔操作できる。したがって、複数の外部機器のそれぞれについて個別のリモコン端末を複数使い分けるという煩雑な操作が必要なく、ユーザにとっての利便性を高めることができる。【００１１】
このような、遠隔制御する複数の外部機器を切り替えることができるリモコンの機能を、上述したマルチタスク処理が可能な携帯端末にて実現すれば、各リモコンのアプリケーションをいちいち一旦終了させて次のリモコンのアプリケーションを起動させる必要はない。すなわち、複数のアプリケーションを１つの端末で同時に起動させて、その中から、使いたい任意のリモコンのアプリケーションに適時切り替えて使用できる。【００１２】
しかしながら、複数のアプリケーションを頻繁に切り替えて使用する場合には、その切り替え操作は煩雑なものとなる。【００１３】
そこで、携帯端末に上述したマルチウィンドウの機能を組み合わせれば、複数のウィンドウに、複数のアプリケーションを操作するＵＩをそれぞれ再現することも可能になる。このようにすれば、複数のアプリケーションを切り替えて使用するのではなく、１画面上で同時に使用できる。 【００１４】
すなわち、例えば、図１８（Ａ）に示すようなテレビのリモコン端末単独であれば、図１８（Ｂ）に示すように、例えばタッチパネル２００を備える携帯端末１００上に、テレビリモコンアプリケーションのＵＩを、その操作性を維持したまま再現できる。なお、図１８（Ａ）のリモコン端末において、テンキーなどのキーやボタンは機械式のキーであるが、図１８（Ｂ）の携帯端末１００においては、テンキーなどを描画して再現したオブジェクトをタッチパネル２００に表示している。以下、このように、タッチパネルに表示されたＵＩを構成する各種キーまたはボタンおよび情報表示箇所などを、「ＵＩオブジェクト」と記す。また、図１８（Ｃ）に示すような、エアコンディショナーのリモコン端末単独の場合も同様に、図１８（Ｄ）のように、タッチパネル２００を備える携帯端末１００上に、エアコンディショナーリモコンアプリケーションのＵＩを、その操作性を維持したまま再現できる。さらに、それぞれのアプリケーションのＵＩを、ＸＭＬをベースとして記述すれば、他メーカの端末などにアプリケーションを移植しても、ＵＩを記述したＸＭＬのファイルを加工するだけでほとんど同じＵＩを容易に再現できる。【００１５】
しかしながら、上述の例において、テレビの視聴中にエアコンディショナーの操作を行う場合に、テレビもエアコンディショナーも頻繁な操作を要する状況も想定される。このような場合、両方のリモコンのアプリケーションを、マルチタスクおよびマルチウィンドウの機能を用いて、表示部の表示領域を分割して同時に表示したとする。この場合、各アプリケーションは単独で使用することを想定したＵＩしか備えていないため、各ＵＩをそのまま同時表示すると、図１９（Ａ）〜（Ｄ）に示すような状態になる。【００１６】
図１９（Ａ）〜（Ｄ）は、マルチタスクおよびマルチウィンドウの機能を実装した携帯端末１００を用いて、２つのアプリケーションのＵＩを同時表示した様子を示す図である。図に示す例においては、タッチパネル２００の表示部の表示を上下に分割した各ウィンドウ内で、それぞれのＵＩをそのまま再現したため、各ＵＩとも一部しか表示されていない。画面上に表示しきれない部分の操作を行うために、各ウィンドウの右端にはスクロールバーを備えている。【００１７】
例えば図１９（Ａ）に示す状態で、テレビの音量を調節したい場合には、ユーザは、テレビリモコンＵＩのウィンドウのスクロールバーを移動して、図１９（Ｂ）に示すようにテレビリモコンＵＩの表示範囲を移動させなくてはならない。同様に、例えば図１９（Ｃ）に示す状態で、エアコンディショナーの温度を調節したい場合、ユーザは、エアコンディショナーリモコンＵＩのウィンドウのスクロールバーを移動して、図１９（Ｄ）に示すようにエアコンディショナーリモコンＵＩの表示範囲を移動させなくてはならない。さらに、マルチウィンドウで複数のアプリケーションを起動する場合、ＵＩを重畳表示する際は、まず入力するウィンドウを選択してアクティブにしてから入力操作を開始しなくてはならない。【００１８】
このように、単独で用いることを想定した、１画面用にデザインされたＵＩをマルチウィンドウなどで表示した場合、各ＵＩオブジェクトの全てを１画面内に収めることはできなくなるため、ＵＩの操作性は悪化してしまう。【００１９】
そこで、複数のＵＩオブジェクトを１画面内に収めるために、例えば、各ＵＩオブジェクトを縮小させてから配置したり、または複数のＵＩオブジェクト同士を、間隔を詰めて配置したりすることにより、表示面積が限られているＵＩの表示領域を有効活用することも考えられる。【００２０】
しかしながら、複数のＵＩオブジェクトを近接させて配置する場合、ＵＩの表示領域を有効活用することを優先してＵＩオブジェクトの配置を行うと、ＵＩ全体としての操作性および視認性が悪化する恐れがある。例えば、１画面のＵＩ表示領域に、小さなＵＩオブジェクトを密集させて多数配置すると、各ＵＩオブジェクトは周囲の他のＵＩオブジェクトと近接し過ぎるため、ユーザは目的のＵＩオブジェクトを指などで操作するのが困難になる。【００２１】
したがって、かかる事情に鑑みてなされた本発明の目的は、複数のＵＩオブジェクトでＵＩを構成する際に、各ＵＩオブジェクトを、その特性に応じた操作性および視認性を確保してＵＩの表示領域に配置することができるユーザインタフェース生成装置を提供することにある。
【課題を解決するための手段】
【００２２】
上記目的を達成する請求項１に係る入力装置の発明は、
アプリケーションプログラムに基づいて各種の機能を実現するアプリケーションプログラム実行部と、
前記アプリケーションプログラムに基づく所定の機能の実行を前記アプリケーションプログラム実行部に指示するためのユーザインタフェースを生成するユーザインタフェース生成部と、
前記ユーザインタフェース生成部により生成されるユーザインタフェースを表示する表示部と、
前記ユーザインタフェースの構成要素であるユーザインタフェースオブジェクトを定義するユーザインタフェースオブジェクト定義情報を含むユーザインタフェース定義ファイルを格納するとともに、各操作手段に関する情報を格納する記憶部と、
を備えるユーザインタフェース生成装置であって、
前記ユーザインタフェース生成部は、前記記憶部に格納された複数のアプリケーションプログラムからユーザインタフェースオブジェクト定義情報を選択し、当該選択したユーザインタフェースオブジェクト定義情報と前記各操作手段に関する情報とに基づいて、前記選択したユーザインタフェースオブジェクト定義情報に対応するユーザインタフェースオブジェクトを配置する際に確保すべきマージンを設定し、当該設定したマージンに基づいて前記選択したユーザインタフェースオブジェクトを前記表示部における所定の表示領域に配置することにより、合成ユーザインタフェースを生成することを特徴とするものである。
【００２３】
第２の観点に係る発明は、第１の観点に係るユーザインタフェース生成装置において、
前記ユーザインタフェース生成部は、前記ユーザインタフェースオブジェクトと該ユーザインタフェースオブジェクトに隣接して配置するユーザインタフェースオブジェクトとが異なる前記ユーザインタフェース定義ファイルに含まれる場合に、同一の前記ユーザインタフェース定義ファイルに含まれる場合よりも、当該ユーザインタフェースオブジェクトと前記隣接して配置するユーザインタフェースオブジェクトとの間のマージンを広く設定することを特徴とするものである。【００２４】
第３の観点に係る発明は、第１の観点に係るユーザインタフェース生成装置において、
前記各操作手段に関する情報は、前記ユーザインタフェースにおいてユーザ操作を受け付ける際の基準となる接触面積に関する情報を含み、
前記ユーザインタフェース生成部は、前記ユーザインタフェースオブジェクトと該ユーザインタフェースオブジェクトに隣接して配置するユーザインタフェースオブジェクトとの双方がユーザ操作を受け付ける種別のユーザインタフェースオブジェクトである場合、当該ユーザインタフェースオブジェクトの表示サイズと前記接触面積とに基づき、当該ユーザインタフェースオブジェクトと前記隣接して配置するユーザインタフェースオブジェクトとの間のマージンを設定することを特徴とするものである。 
【００２５】
第４の観点に係る発明は、第１の観点に係るユーザインタフェース生成装置において、
前記各操作手段に関する情報は、前記ユーザインタフェースにおいてユーザ操作を受け付ける際の基準となる接触面積に関する情報を含み、
前記ユーザインタフェース生成部は、前記ユーザインタフェースオブジェクトがユーザ操作を受け付ける種別のユーザインタフェースオブジェクトである場合、当該ユーザインタフェースオブジェクトの表示サイズと前記接触面積とに基づいて、前記表示部の端に配置される場合の当該ユーザインタフェースオブジェクトと前記表示部の端との間のマージンを設定することを特徴とするものである。
【００２６】
第５の観点に係る発明は、第１の観点に係るユーザインタフェース生成装置において、
前記ユーザインタフェース生成部は、前記ユーザインタフェースオブジェクトがユーザ操作を受け付ける種別のユーザインタフェースオブジェクトである場合、当該ユーザインタフェースオブジェクトの表示サイズと前記各操作手段に関する情報とに基づき、当該ユーザインタフェースオブジェクトが前記表示部の端に配置される場合の当該ユーザインタフェースオブジェクトと前記表示部の端との間のマージンを設定することを特徴とするものである。
【００２７】
第６の観点に係る発明は、第１の観点に係るユーザインタフェース生成装置において、
前記ユーザインタフェースオブジェクト定義情報は、前記ユーザインタフェースオブジェクトと他のユーザインタフェースオブジェクトとの関連性に関する情報を含み、
前記ユーザインタフェース生成部は、前記ユーザインタフェースオブジェクトと該ユーザインタフェースオブジェクトに隣接して配置するユーザインタフェースオブジェクトとの前記関連性に関する情報に基づく当該関連性が高い場合には、当該ユーザインタフェースオブジェクトと前記隣接して配置するユーザインタフェースオブジェクトとの間のマージンを、前記関連性に関する情報を有さない他のユーザインタフェースオブジェクトとの間のマージンよりも狭く設定することを特徴とするものである。【００２８】
第７の観点に係る発明は、第１の観点に係るユーザインタフェース生成装置において、
前記ユーザインタフェースへの操作入力手段を判別する操作入力手段判別部をさらに備え、
前記各操作手段に関する情報は、前記ユーザインタフェースに対する入力を行うための複数の操作入力手段に対応する接触面積に関する情報を含み、
前記ユーザインタフェース生成部は、前記ユーザインタフェースオブジェクトがユーザ操作を受け付ける種別のユーザインタフェースオブジェクトである場合、当該ユーザインタフェースオブジェクトの表示サイズと前記接触面積に関する情報とに基づき、前記操作入力手段判別部で判別された操作入力手段に応じて、当該ユーザインタフェースオブジェクトと該ユーザインタフェースオブジェクトに隣接して配置するユーザインタフェースオブジェクトとの間のマージンを設定することを特徴とするものである。
【００２９】
第８の観点に係る発明は、第１の観点に係るユーザインタフェース生成装置において、
前記ユーザインタフェースを介して前記アプリケーションプログラム実行部に前記アプリケーションプログラムに基づく所定の機能の実行を指示する入力を受け付ける操作入力受付部と、
前記操作入力受付部への操作入力手段を判別する操作入力手段判別部と、をさらに備え、
前記ユーザインタフェース生成部は、前記操作入力手段判別部で判別された操作入力手段に応じて前記各操作手段に関する情報を書き換えることを特徴とするものである。
【００３０】
第９の観点に係る発明は、第８の観点に係るユーザインタフェース生成装置において、
前記表示部において前記合成ユーザインタフェースの表示中に、前記操作入力手段判別部により前記操作入力手段の変更が検知された場合、前記ユーザインタフェース生成部は、当該変更された操作入力手段に応じて前記各操作手段に関する情報を書き換え、当該書き換えた各操作手段に関する情報に基づいて新たな合成ユーザインタフェースを生成することを特徴とするものである。
【図面の簡単な説明】
【００３１】
【図１】本発明のユーザインタフェース生成装置の概略構成を示すブロック図である。
【図２】本発明のユーザインタフェース定義ファイルの構成を説明する概念図である。
【図３】本発明の合成ユーザインタフェース定義ファイルの構成を説明する概念図である。
【図４】各ユーザインタフェース定義ファイルに基づいて生成される、種々のリモコンアプリケーション用ユーザインタフェースを表示した例を示す図である。
【図５】本発明の実施の形態による自動レイアウト処理を説明するフローチャートである。
【図６】本発明の実施の形態に係る、操作手段の変更に伴うＵＩ再合成処理を行うことによりユーザインタフェースを合成した例を示す図である。
【図７】本発明の実施の形態に係る、操作手段の変更に伴うＵＩ再合成処理を説明するフローチャートである。
【図８】本発明の実施の形態に係る、マージン設定処理の詳細を説明するフローチャートである。
【図９】ユーザインタフェースオブジェクトの種別および入力手段に応じて異なるマージンを設定する例を説明する図である。
【図１０】図９で設定したマージンに基づいてユーザインタフェースオブジェクトを配置した例を説明する図である。
【図１１】ユーザインタフェースオブジェクトの表示サイズと、基準サイズとに基づいて異なるマージンを設定する例を説明する図である。
【図１２】隣接するユーザインタフェースオブジェクトの種別に応じて異なるマージンを設定して配置する例を説明する図である。
【図１３】ユーザインタフェースオブジェクトをユーザインタフェース表示領域の端に配置する場合のマージンの設定について説明する図である。
【図１４】タッチパネルを囲む部材の縁部の形状に応じて、ユーザインタフェースオブジェクトをユーザインタフェース表示領域の端に配置する場合のマージンの設定について説明する図である。
【図１５】ユーザインタフェースオブジェクトが元々属するユーザインタフェースに応じて異なるマージンを設定する例を説明する図である。
【図１６】ユーザインタフェースオブジェクト同士の関連性に応じて異なるマージンを設定する例を説明する図である。
【図１７】マージン設定処理に基づいてユーザインタフェースオブジェクトを配置した例を示す図である。
【図１８】従来のリモートコントロール端末を携帯端末のユーザインタフェースで再現した例を示す図である。
【図１９】従来の携帯端末にて２つのユーザインタフェースを合成した例を示す図である。
【発明を実施するための形態】
【００３２】
以下、本発明の実施の形態について、図面を参照して説明する。以下の実施の形態では、本発明のユーザインタフェース（以下、「ＵＩ」と記す）生成装置の一例として、各種外部機器の遠隔制御が可能なリモコン機能を実装した携帯電話を想定して説明する。しかしながら、本発明のＵＩ生成装置は携帯電話に限定されるものではなく、例えばノートパソコンやＰＤＡなどの任意の携帯端末などに適用することができる。また、本発明の実装を必要とする装置であれば、携帯端末にも限定されることはない。なお、本発明は、複数のＵＩを同時に使用できるように合成することを主目的とするものであり、各ＵＩにより指示を受けるアプリケーションはリモコン機能に限定されるものではなく、任意の各種アプリケーションに本発明を適用することができる。
【００３３】
図１は、本発明の実施の形態に係るＵＩ生成装置である携帯電話の概略構成を示すブロック図である。
【００３４】
携帯電話１は、全体を制御する制御部１０と、ユーザからの入力を受け付けると共に、各アプリケーションに応じて入力結果などの表示を行うタッチパネル２０とを備えている。タッチパネル２０は、ユーザからの入力を受け付けるマトリクススイッチなどで構成した入力部２２を、液晶ディスプレイなどで構成した表示部２４の前面に重畳させて構成する。タッチパネル２０の入力部２２は、ユーザの指先またはスタイラスのようなペン型入力デバイス等が接触するのを検知することにより、当該接触による入力に対応する信号を出力する。表示部２４は、アプリケーションプログラムに関する表示をする他、ユーザの操作入力を受け付ける各種キーやボタンなどのＵＩオブジェクトにより構成されるＵＩを所定のＵＩ表示領域に描画して表示する。
【００３５】
また、携帯電話１は、図示しない基地局と音声通話および電子メールのデータなど各種情報をインターネットや無線等を使って送受信する無線通信部３０と、図示しない各種外部機器と赤外線により通信を行う赤外線通信部４０とを備えている。無線通信部３０を用いて、携帯電話１は、インターネットや無線等を介して端末外部と各種データの送受信を行う。
【００３６】
さらに、携帯電話１は、操作キー部８０およびスタイラス収納部９０も備えている。操作キー部８０は、携帯電話１本体に配設された機械式のスイッチなどで構成される複数のキー、または表示部２４に表示されるポインタを移動させるための方向指示キーもしくは方向指示デバイスなどを含む。この操作キー部８０は、ユーザによる操作入力に応じて、対応する信号を制御部１０に送信する。操作キー部８０を構成する各種キーは、使用するアプリケーションに従って、その用途および機能が規定される。したがって、本実施の形態では、タッチパネル２０の入力部２２および操作キー部８０を含んで操作入力受付部を構成する。
【００３７】
スタイラス収納部９０は、タッチパネル２０の入力部２２に対して入力を行うペン型入力デバイスであるスタイラスを収納する。このスタイラス収納部９０にスタイラスを収納することにより、スタイラスを携帯電話１の本体内に収納できる。このスタイラス収納部９０は、スタイラスの着脱を検知する図示しないスイッチを備えている。すなわち、このスイッチは、スタイラスがスタイラス収納部９０に収納される動作と、スタイラス収納部９０から抜き出される動作とに応じて、オンまたはオフが切り換わる。したがって、スタイラス収納部９０からの信号により、制御部１０は、スタイラス収納部９０にスタイラスが収納されているか否か、すなわち携帯電話１本体にスタイラスが収納されているか否かを判別できる。
【００３８】
さらに、携帯電話１は、入力された情報および各種アプリケーション等を記憶したり、ワークメモリなどとしても機能する記憶部５０を有する。記憶部５０は、アプリケーション記憶領域５１と、ＵＩ定義ファイル記憶領域５２と、個別ＵＩリソース記憶領域５３と、共通ＵＩリソース記憶領域５４と、関連アプリケーション情報記憶領域５５と、合成ＵＩ定義ファイル記憶領域５６と、端末依存情報記憶領域５７とを含む。
【００３９】
なお、制御部１０は、アプリケーション実行部１１と、ＵＩ取得部１２と、ＵＩ生成部１３と、操作手段検出部１４と、ＵＩ処理部１５とを含んでいる。
【００４０】
制御部１０において、アプリケーション実行部１１は、記憶部５０のアプリケーション記憶領域５１に保存された各種アプリケーションを読み出して実行すると共に、当該実行に関する制御を行う。また、アプリケーション実行部１１は、アプリケーション記憶領域５１から読み出して実行している各種アプリケーションに対応するＵＩへの入力に基づいて、当該入力に対応する各種アプリケーションの機能を実行する。
【００４１】
ＵＩ取得部１２は、無線通信部３０などを介して端末の外部にあるリソース（画像データ等）およびＵＩ定義ファイル（ＸＭＬファイルなど）を取得する。ＵＩ生成部１３は、ＵＩ定義ファイルに対してパース処理（パーシング）およびＤＯＭ(Document Object Model)化処理などを行い、実際に使用するＵＩを生成する。なお、ＵＩ生成部１３は、ＸＭＬの形式で記述されたＵＩの情報をＸＭＬエンジンによって解釈し、ＵＩ定義ファイルに基づいて生成されたＵＩをタッチパネル２０の表示部２４に表示する。
【００４２】
ＵＩ生成部１３は、合成ＵＩを含む各種ＵＩの生成に関する各種処理を行う。ＵＩ生成部１３の詳細については後述する。
【００４３】
操作手段検出部１４は、ユーザが入力操作を行う手段を検知する。例えば、タッチパネル２０の入力部２２からの入力信号があれば、操作手段検出部１４は、ユーザがタッチパネルにより入力を行っていると判別する。また、操作キー部８０からの入力信号があれば、操作手段検出部１４は、ユーザが操作キーにより入力を行っていると判別する。
【００４４】
なお、タッチパネル２０の入力部２２からの入力が検知された際、入力部２２上で入力が検知された領域の面積が所定の面積以上である場合には、操作手段検出部１４は、ユーザが指による入力を行っていると判別する。一方、入力が検知された領域の面積が所定の面積以下で非常に小さな面積の入力の場合には、操作手段検出部１４は、ユーザがスタイラスのような先細の入力デバイスを用いて入力を行っていると判別する。他にも、スタイラス収納部９０からスタイラスが抜き出されたことが検知されると、操作手段検出部１４は、その後はスタイラスによる入力が行われると判別する。また、スタイラス収納部９０にスタイラスが収納されたことが検知されると、操作手段検出部１４は、その後に行われる入力はスタイラスによる入力ではないと判別する。すなわち、この場合、操作手段検出部１４は、タッチパネル２０上で指による入力が行われるか、または操作キー部８０からの入力が行われると判別する。
【００４５】
さらに、所定の操作に応じて、表示部２４に入力箇所を指定するポインタが表示された場合、操作手段検出部１４は、操作キー部８０からの入力のうち、当該ポインタを移動させるための方向指示キーまたは方向指示デバイスなどからの入力が行われると判別する。
【００４６】
ＵＩ処理部１５は、ＵＩ生成部１３が生成したＵＩに対して、ユーザ操作による入力部２２などへの入力に基づいて発生するイベントなどを処理すると共に、アプリケーション実行部１１に対して、適宜、各種機能の実行を指示する。
【００４７】
上述したＵＩ生成部１３は、その内部に、複数のＵＩ定義ファイルに基づいてＵＩの合成処理を行うＵＩ合成処理部６０を含む。また、ＵＩ合成処理部６０は、ＵＩオブジェクト定義情報解析部６１と、ＵＩオブジェクト選択処理部６２と、合成ＵＩ定義ファイル生成部６３と、ＵＩリソース整形部６４と、自動レイアウト処理部７０とを含む。
【００４８】
ＵＩオブジェクト定義情報解析部６１は、ＵＩ定義ファイルに含まれる、各種のＵＩオブジェクトを定義するＵＩオブジェクト定義情報を解析する。
【００４９】
ＵＩオブジェクト選択処理部６２は、多数のＵＩオブジェクトの中から、必要とするＵＩオブジェクトを、自動的にまたはユーザの入力により選択する処理を行う。ユーザの入力により選択を行う場合、ＵＩオブジェクト選択処理部６２は、表示部２４に描画するＵＩオブジェクトを定義するＵＩオブジェクト定義情報を解析することにより、ユーザによるＵＩオブジェクトの選択入力を受け付ける選択画面を生成する処理および制御を行う。以下、ＵＩオブジェクトの情報を表示部２４に表示して、ユーザによる選択入力を受け付ける画面を、「ＵＩオブジェクト選択画面」または単に「選択画面」と記す。
【００５０】
なお、ＵＩオブジェクト選択処理部６２は、ＵＩオブジェクト選択画面上で、選択されたＵＩオブジェクトが所定のＵＩ表示領域内に占める占有率を積算する占有率積算部（図示せず）を含む。この占有率積算部は、各ＵＩオブジェクトのＵＩオブジェクト定義情報に含まれるＵＩオブジェクト属性情報と、端末依存情報記憶領域５７に記憶された端末依存情報（装置依存情報）とに基づいて、ＵＩオブジェクトの占有率を積算する。
【００５１】
合成ＵＩ定義ファイル生成部６３は、ＵＩ合成処理部６０によって合成されたＵＩを、合成ＵＩ定義ファイルとして生成して出力する。
【００５２】
ＵＩリソース整形部６４は、各ＵＩオブジェクトの表示サイズに基づいて、選択されたＵＩオブジェクトのプレビュー処理や、ＵＩを合成する際に利用するリソースのデータの拡大または縮小処理などを行う。なお、この場合、個別ＵＩリソース記憶領域５３または共通ＵＩリソース記憶領域５４に記憶されているリソースのデータを読み出して使用する。
【００５３】
自動レイアウト処理部７０は、ＵＩを合成する際のレイアウトに関する制御および処理を行う。このため、自動レイアウト処理部７０は、配置設定部７１と、配置可否判定部７２と、縮小オブジェクト選択部７３と、サイズ下限値設定部７４と、マージン設定部７５とを含む。
【００５４】
配置設定部７１は、所定の手順に従ってＵＩオブジェクトの配置を行う。配置可否判定部７２は、配置設定部７１により配置されたＵＩオブジェクトが所定のＵＩ表示領域内に配置可能か否かを判定する。縮小オブジェクト選択部７３は、配置可否判定部７２によりＵＩオブジェクトが所定のＵＩ表示領域内に配置不可と判定された場合、所定の手順に従って、縮小するＵＩオブジェクトを選択する。サイズ下限値設定部７４は、端末依存情報やＵＩオブジェクト定義情報に従って、ＵＩオブジェクト毎にそれぞれの縮小の下限値を設定する。マージン設定部７５は、ＵＩオブジェクトを配置する際に、当該ＵＩオブジェクトが他のＵＩオブジェクトまたはＵＩ表示領域の縁部などに近接し過ぎないように、当該ＵＩオブジェクトの周囲に適度な間隔の設定を行う。このような、各ＵＩオブジェクトの周囲に設定される他のＵＩオブジェクトとの間隔を、以下「マージン」と記す。
【００５５】
記憶部５０において、アプリケーション記憶領域５１には、各種の機能を実現する為の処理手順が記載されたデータで構成される、各種のアプリケーションを記憶する。ＵＩ定義ファイル記憶領域５２には、各ＵＩがそれぞれＵＩ全体を生成する際の一連の生成ルールを定義するＵＩ定義ファイルを記憶する。また、個別ＵＩリソース記憶領域５３は、各アプリケーション固有のＵＩを生成する際に使用する画像データや文字列（テキスト）データなどの個別ＵＩリソースを記憶する。共通ＵＩリソース記憶領域５４は、各アプリケーション固有の個別ＵＩリソース以外の、端末にて用いられる、ＵＩが共有して使用する画像データやフォントのデータなどの共通ＵＩリソースを記憶する。実際にＵＩを生成する際には、個別ＵＩリソース記憶領域５３および共通ＵＩリソース記憶領域５４に記憶された画像データおよびテキストデータなどを、タッチパネル２０の表示部２４に表示する。
【００５６】
また、関連アプリケーション情報記憶領域５５には、ＵＩオブジェクトに関連するアプリケーションに対する起動情報などを含む関連アプリケーション情報を記憶する。さらに、合成ＵＩ定義ファイル記憶領域５６は、合成ＵＩ定義ファイル生成部６３が生成した合成ＵＩ定義ファイルを記憶する。端末依存情報記憶領域５７は、自端末で利用可能なフォント情報、入力デバイス情報、画面サイズ情報、基準サイズ情報、現在の入力手段に関する情報、後述する縁マージン情報など、その端末および表示部２４に依存する、当該端末固有の特性を示す情報である端末依存情報（装置依存情報）を記憶する。
【００５７】
次に、本実施の形態にてＵＩ定義ファイル記憶領域５２に記憶するＵＩ定義ファイルについて説明する。
【００５８】
記憶部５０のＵＩ定義ファイル記憶領域５２には、アプリケーション記憶領域５１に記憶された各アプリケーションが実行される際に必要なＵＩの、当該アプリケーションに対応した各仕様および動作などを定義するＵＩ定義ファイルが記憶される。異なるアプリケーションで同じＵＩを使う状況も考えられるが、ここでは説明の便宜のため、異なるアプリケーションに対してそれぞれ異なるＵＩを用いる場合を想定し、各アプリケーションに対応した各ＵＩ定義ファイルを保存する場合について説明する。
【００５９】
例えば、図示しない外部機器であるテレビ受像機を携帯電話１にて遠隔制御するテレビリモコンアプリケーションに対応して、テレビリモコンＵＩ定義ファイルをＵＩ定義ファイル記憶領域５２に記憶する。同様に、図示しない外部機器のエアコンディショナーを携帯電話１にて遠隔制御するエアコンディショナーリモコンアプリケーションに対応して、エアコンディショナーリモコンＵＩ定義ファイルをＵＩ定義ファイル記憶領域５２に記憶する。
【００６０】
本実施の形態では、ＵＩ定義ファイルを記述する言語の例として、ＸＭＬ言語をベースにしたＵＩＭＬ(User Interface Markup Language)の形式に従って説明する。各ＵＩを起動して使用可能にする際には、ＵＩ生成部１３は、このＵＩＭＬファイル形式で記述される定義に従って、携帯電話１のタッチパネル２０の表示部２４にＵＩを表示し、アプリケーション実行部１１は、ユーザによる入力部２２に対する入力に応じた処理を行う。
【００６１】
図２は、ＵＩ定義ファイルの構成を説明する概念図である。図２に示すように、携帯電話１の記憶部５０内のＵＩ定義ファイル記憶領域５２には、各ＵＩがそれぞれＵＩ全体を生成する際の一連の生成ルールを定義するＵＩ定義ファイルを格納する。図２では、ＵＩ定義ファイル（１）〜（６）の６つのＵＩ定義ファイルを格納しているが、使用するＵＩに応じて、ＵＩ定義ファイル記憶領域５２には任意の数のＵＩ定義ファイルを格納できる。
【００６２】
また、各ＵＩ定義ファイルは、図２に示すように、複数のＵＩオブジェクト定義情報を含む。図２では、ＵＩ定義ファイル（２）は６つのＵＩオブジェクト定義情報（（２）−１〜（２）−６）を含んでいるが、実際には、当該ＵＩ定義ファイル（２）に基づいて構成されるＵＩが含むＵＩオブジェクトの個数に対応する数のＵＩオブジェクト定義情報を含む。
【００６３】
ＵＩ定義ファイルに含まれるそれぞれのＵＩオブジェクト定義情報は、図示のように、当該ＵＩオブジェクト定義情報により定義されるＵＩオブジェクトに関連する各種の属性を表す情報を含む。以下、ＵＩオブジェクト定義情報に含まれる代表的な情報を例示する。
（１）部品（ＵＩオブジェクト）の種別情報：当該ＵＩオブジェクトがユーザ操作を受け付けるボタンやキーの機能を持つものか、情報表示のテキストボックス機能を持つものか、表示部２４に画像を表示するだけの機能かなど、種別を特定する情報
（２）ＵＩオブジェクトに使用するリソース情報：表示部２４に表示するＵＩを構成する要素であるキーまたはボタンなどのＵＩオブジェクトを描画するための画像およびテキストを定義する情報
（３）ＵＩオブジェクトを配置する位置情報：当該ＵＩオブジェクトを所定のＵＩ表示領域のどの位置に表示するかを特定する情報
（４）ＵＩオブジェクトの表示サイズ情報：当該ＵＩオブジェクトをＵＩ表示領域に表示する際のサイズを特定する情報
（５）ＵＩオブジェクトの動作条件情報：当該ＵＩオブジェクトに入力がされた際の（実際にはＵＩオブジェクトに対応する入力部２２の部位に入力がされた際の）、アプリケーションに対する動作を定義する情報
（６）ＵＩオブジェクトを有効または無効にする情報：当該ＵＩオブジェクトをＵＩ表示領域に表示するか否か、またはＵＩオブジェクトをアクティブ状態にするか否かを特定する情報
（７）ＵＩオブジェクトの優先度情報：当該ＵＩオブジェクトと他のＵＩオブジェクトとの関係に基づいて、複数のＵＩを合成する際に、当該ＵＩオブジェクトの優先度を示す情報
（８）当該ＵＩオブジェクトと他のＵＩオブジェクトとの関連性情報：当該ＵＩオブジェクトが他のＵＩオブジェクトと所定の関連性を有する場合に当該関連性を特定する情報
【００６４】
本実施の形態では、ユーザの選択に基づいて、１つのＵＩ表示領域内に複数のＵＩオブジェクトを表示する。この際に、１つのＵＩの中から複数のＵＩオブジェクトを選択して採用することも、複数のＵＩにまたがって複数のＵＩオブジェクトを選択して採用することもできる。各ＵＩには対応するＵＩ定義ファイルがそれぞれ存在するが、ユーザが任意に選択したＵＩオブジェクトにより構成される合成ＵＩには、対応するＵＩ定義ファイルが元々は存在しない。そのため、ユーザの選択によるＵＩオブジェクトにより構成される合成ＵＩを生成した際には、当該合成ＵＩに基づく合成ＵＩ定義ファイルを生成して保存する。
【００６５】
図３は、合成ＵＩ定義ファイルの構成を説明する概念図である。合成ＵＩ定義ファイルは、複数のＵＩ定義ファイルに含まれるＵＩオブジェクト定義情報を部分的に抜き出し、１つのＵＩ定義ファイルにまとめたものである。複数のＵＩの合成に際しては、ＵＩ合成処理部６０において、ＵＩオブジェクト選択処理部６２が、各ＵＩ定義ファイルに基づいてＵＩオブジェクト選択画面を生成し、ユーザが選択したＵＩオブジェクトのＵＩオブジェクト定義情報を抽出する。合成ＵＩ定義ファイル生成部６３は、抽出されたＵＩオブジェクト定義情報をまとめて１つの合成ＵＩ定義ファイルにする。これは、ユーザの視点から見ると、複数のＵＩからＵＩオブジェクトをいくつか選択して採用し、１つの合成ＵＩを生成したことになる。なお、ＵＩ合成処理部６０は、合成ＵＩ定義ファイルを生成する際に、必要に応じてＵＩオブジェクト定義情報を加工してから、合成ＵＩとして１つの定義ファイルにまとめることができる。図３に示す例においては、３つのＵＩ定義ファイル（２），（４），（５）から、それぞれいくつかのＵＩオブジェクト定義情報を抽出したものをまとめて、新たに合成ＵＩ定義ファイル（１）を生成した様子を概念的に表している。
【００６６】
例えば、図４は、図２および図３に示したような各ＵＩ定義ファイルに基づいて生成される、種々のリモコンアプリケーション用ＵＩを表示した例を示す図である。ＵＩ定義ファイルがＸＭＬをベースにしたＵＩＭＬのファイル形式で記述されている場合には、これらの各ＵＩＭＬのファイルを解析してＵＩを生成すると、表示部２４の所定のＵＩ表示領域内に適切に収まるような一画面用のＵＩが表示される。それぞれのＵＩのＵＩ定義ファイルでは、各ＵＩを構成するＵＩオブジェクトについて、ＵＩオブジェクト定義情報により各種の属性が定義されている。
【００６７】
このようなＵＩは、それぞれ単独で用いられることを想定して構成された（つまり合成ＵＩとして使用されることを想定していない）ＵＩであってもよい。その場合でも、ＵＩ合成処理部６０による上述した合成ＵＩ生成の処理を行うことで、ユーザが選択した任意のＵＩオブジェクトを複数選択して採用した１つの合成ＵＩを構成する合成ＵＩ定義ファイルを生成できる。
【００６８】
次に、本実施の形態による、合成ＵＩ生成の際の自動レイアウト処理について説明する。本実施の形態では、複数のＵＩのＵＩオブジェクトを合成して合成ＵＩを生成する際に、当該複数のＵＩオブジェクトを自動で選択することにより、表示部２４上で所定のＵＩ表示領域に配置する。すなわち、この自動レイアウト処理によれば、合成ＵＩを生成する際に、ＵＩ合成処理部６０が所定の条件に従ってＵＩオブジェクトを選択する処理を行うため、合成ＵＩを構成するＵＩオブジェクトをユーザが１つずつ選択する操作を行う必要はない。
【００６９】
図４は、ＵＩの自動合成を行う場合に用いる、優先度の高いＵＩオブジェクトで構成した各ＵＩを示す図である。これらの各ＵＩを構成するＵＩオブジェクトは、各ＵＩが、対応する各アプリケーションに基づく基本的かつ重要な機能の実行を指示する際に必要なものである。
【００７０】
各ＵＩに対応するＵＩ定義ファイルには、全てのＵＩオブジェクトに対するＵＩオブジェクト定義情報が含まれる。さらに、各ＵＩのＵＩ定義ファイルに含まれるＵＩオブジェクト定義情報には、各ＵＩオブジェクトが当該ＵＩにおいてどの程度優先度が高いＵＩオブジェクトであるかを示す、上述した（７）の「優先度情報」が含まれている。
【００７１】
この優先度情報は、複数のＵＩを自動的に合成する処理を行う際に、当該ＵＩを構成する各ＵＩオブジェクトについて、ＵＩオブジェクトが必須の要素として必ず選択されるべきものか、重要なＵＩオブジェクトとして選択されることが望ましいものか、または他のＵＩオブジェクトと比べると重要度が高くないため状況に応じて省略できるものか、などを示す。図４に示した各ＵＩでは、各ＵＩ定義ファイルに含まれるＵＩオブジェクト定義情報に基づいて、優先度の情報が必須のＵＩオブジェクト、および優先度が高いＵＩオブジェクトを抽出している。このように、各ＵＩを合成するに際して、選択されるべきＵＩオブジェクトを予め規定する。
【００７２】
また、ＵＩオブジェクトを自動選択して配置する際には、必ず選択されるべきＵＩオブジェクトを特定するために、優先度情報の中に、当該優先度の所定の閾値を設ける。これにより、優先度がこの閾値内にあるＵＩオブジェクトは必ず選択される。以下、必須のＵＩオブジェクトのＵＩオブジェクト定義情報に含まれる優先度情報を「必須情報」と記す。
【００７３】
以下、一例として、図４に示す全てのＵＩを自動合成する際の自動レイアウト処理について説明する。図４に示す各ＵＩは、それぞれが通常は単独で用いられるＵＩであるため、このまま全てを合成して表示部２４上で所定のＵＩ表示領域に配置することはできない。したがって、操作性を確保するために各ＵＩオブジェクトに適切なマージンを設定しつつ各ＵＩオブジェクトを縮小する処理を含めた自動レイアウト処理を行う。
【００７４】
図５は、本実施の形態による、ＵＩオブジェクトの自動レイアウト処理を説明するフローチャートである。自動レイアウト処理が開始すると、まず、サイズ下限値設定部７４は、選択された複数のＵＩに含まれる各ＵＩオブジェクトについて、ＵＩオブジェクトを縮小する際に使用する表示サイズ下限値（最小値）の設定処理を行う（ステップＳ１２）。この処理により、ＵＩオブジェクトの縮小処理を行う際に、ＵＩ合成処理部６０がＵＩオブジェクトを縮小し過ぎて操作性を害することの無いように縮小の下限値が設定される。
【００７５】
このＵＩオブジェクトの表示サイズの下限値の設定処理では、ＵＩオブジェクト定義情報解析部６１が解析した各ＵＩ定義ファイルに含まれる各ＵＩオブジェクトのＵＩオブジェクト定義情報に対して、サイズ下限値設定部７４が、各ＵＩオブジェクトの種別などに応じて適切な下限値を設定する。各ＵＩオブジェクトを縮小する際のサイズの下限値は、種々のパラメータに基づいて設定できる。
【００７６】
例えば、サイズ下限値設定部７４は、表示サイズの下限値を設定するＵＩオブジェクトがボタンまたはチェックボックス等のユーザ操作系のものであるか、または単に画像などを表示するものであるか等のＵＩオブジェクトの種別に応じて、所定の表示サイズ下限値を設定する。すなわち、単に画像を表示するためのＵＩオブジェクトは、視認性を確保できる範囲でかなり縮小することが可能であるが、ユーザ操作系のＵＩオブジェクトは、操作性を確保するため縮小し過ぎないように設定する。
【００７７】
また、サイズ下限値設定部７４は、端末依存情報記憶領域５７に記憶された端末依存情報にも基づいて、ＵＩオブジェクトの表示サイズの下限値を設定する。この端末依存情報には、ユーザが指を用いて入力する場合の入力部２２の構成および仕様に基づく情報や、スタイラスのような専用の入力デバイスを用いて入力する場合などの入力デバイス情報も含まれる。縮小対象のＵＩオブジェクトがユーザ操作系の場合、例えばスタイラスを用いて入力を行う場合、ユーザの指による入力の場合よりも小さな下限値を設定できる。これは、ユーザがスタイラスを用いて入力を行う場合、指で入力する場合よりも細かい入力操作ができるためである。
【００７８】
このようにして、サイズ下限値設定部７４は、各ＵＩオブジェクトのＵＩオブジェクト定義情報に含まれる各種の属性を表す情報、および端末依存情報記憶領域５７に記憶された各種の端末依存情報（装置依存情報）に基づいて、各ＵＩオブジェクトについて、設定した係数の初期値を更新して新たな係数値を設定する。これにより、ＵＩオブジェクトの縮小処理を行う際に、縮小し過ぎて操作性や視認性が低下してしまうことは防止される。
【００７９】
次に、マージン設定部７５は、各ＵＩオブジェクトについて、当該ＵＩオブジェクトを配置する際に隣接するＵＩオブジェクトとの間に必要となるマージンを設定するマージン設定処理を行う（ステップＳ１３）。このマージン設定処理により、ＵＩオブジェクト同士が接近し過ぎて配置されることは防止され、ユーザにとって操作性が悪化することは防止される。なお、このマージン設定処理について、その詳細は後述する。
【００８０】
次に、配置設定部７１は、ＵＩオブジェクト定義情報に含まれるデフォルトの表示サイズ情報と、ステップＳ１３のマージン設定処理により設定されたマージンとに基づいて、各ＵＩオブジェクトを仮想的に配置する配置設定処理を行う（ステップＳ１４）。この時、配置設定部７１は、同じＵＩ定義ファイルに含まれるＵＩオブジェクト同士は近傍に配置する。さらに、ＵＩオブジェクト定義情報解析部６１が解析した、上述した（８）の「当該ＵＩオブジェクトと他のオブジェクトとの関連性情報」などに基づいて、配置設定部７１は、同じＵＩ定義ファイルに含まれるＵＩオブジェクトのうち関連性の高いＵＩオブジェクト同士を、相対的な位置関係（もともとのＵＩにおける位置関係）を反映させて近傍に配置する。
【００８１】
ステップＳ１４の配置設定処理が完了したら、配置可否判定部７２は、この配置設定処理によるＵＩオブジェクトの仮想的な配置により、合成ＵＩの全てのＵＩオブジェクトが所定のＵＩ表示領域内に収まるように配置可能か否かを判定する（ステップＳ１５）。全てのＵＩオブジェクトが配置可能であると判定された場合（ステップＳ１５のＹｅｓ）、自動レイアウト処理部７０は、仮想的に配置されたＵＩオブジェクトを実際に表示部２４に表示して、自動レイアウト処理を完了する（ステップＳ１６）。
【００８２】
一方、ステップＳ１５にて、合成ＵＩの全てのＵＩオブジェクトが所定のＵＩ表示領域内に収まるように配置できないと判定された場合、縮小オブジェクト選択部７３は、ステップＳ１２の表示サイズ下限値設定処理の結果に基づいて、縮小可能なＵＩオブジェクトが存在するか否かを判定する（ステップＳ１７）。
【００８３】
ステップＳ１７にて、縮小可能なＵＩオブジェクトが無いと判定された場合、自動レイアウト処理部７０は、自動レイアウト不可と判定し（ステップＳ１８）、自動レイアウト処理を終了する。この時、自動レイアウト処理部７０は、自動レイアウト不可の旨を表示部２４に表示してもよい。また、この場合、配置したいＵＩオブジェクトの選択のやり直しや、合成するＵＩの選択のやり直しなどを行うようユーザに要求するのが望ましい。このように処理することで、操作性を犠牲にして無理にＵＩを合成することは防止される。
【００８４】
ステップＳ１７にて、縮小可能なＵＩオブジェクトがあると判定された場合、自動レイアウト処理部７０は、縮小オブジェクト選択部７３により選択された、優先的に表示サイズを縮小すべきＵＩオブジェクトを選択して縮小する（ステップＳ１９）。この場合、ステップＳ１２で設定した表示サイズの下限値に基づいて縮小処理を行う。
【００８５】
ステップＳ１９にて行う縮小すべきＵＩオブジェクトの選択処理は、例えば、ＵＩオブジェクト定義情報に含まれる、ＵＩオブジェクトごとに設定された優先度に基づいて行うことができる。すなわち、各ＵＩオブジェクトのＵＩオブジェクト定義情報に含まれる優先度情報に基づいて、優先度の低いＵＩオブジェクトは重要性が低いものと判断し、その重要性が低いＵＩオブジェクトを、優先的に縮小すべきＵＩオブジェクトとして選択することができる。
【００８６】
なお、ステップＳ１９の縮小ＵＩオブジェクト選択処理は、他にも、例えばユーザがＵＩオブジェクトを選択して採用する場合は、その選択順序に基づいて優先的に縮小すべきＵＩオブジェクトとして選択しても良い。例えば、選択順序が早いものは重要なＵＩオブジェクトと判断して、優先的に縮小すべきではないものとし、また選択順序が後になるにつれて重要度が低いＵＩオブジェクトと判断して、優先的に縮小することができる。また、縮小すべきＵＩオブジェクトを自動で選択する場合、ＵＩオブジェクト定義情報に含まれる選択ＵＩオブジェクトの種別に基づいて縮小すべきＵＩオブジェクトとして選択したり、もともと同一のＵＩ定義ファイルにて定義されていたＵＩオブジェクトをグループ化し、グループ単位で縮小すべきＵＩオブジェクトとして選択しても良い。
【００８７】
ステップＳ１９の縮小処理が行われた後は、再度のマージン設定処理（ステップＳ１３）および配置設定処理（ステップＳ１４）を経てから、配置可否判定部７２は、合成後のＵＩが所定の表示エリア内に配置可能か否かを判定する（ステップＳ１５）。以後、自動レイアウト処理が完了する（ステップＳ１６）か、または自動レイアウト不可と判定される（ステップＳ１８）まで処理を継続する。
【００８８】
以上の自動レイアウト処理により、図４に示す全てのＵＩを自動合成すると、例えば図６に示すような合成ＵＩを生成することができる。入力手段がユーザの指である場合は、図６（Ａ）に示すような、指の接触面積に応じた縮小下限値に基づく合成ＵＩが生成される。また、入力手段がスタイラスである場合には、図６（Ｂ）に示すような、スタイラスの接触面積に応じた縮小下限値に基づく合成ＵＩが生成される。図６（Ａ）と図６（Ｂ）とを見比べるとわかるように、スタイラスで入力する場合の方が、入力に関する（ユーザ操作系の）ＵＩオブジェクトの下限値を小さく設定できるため、より多くのＵＩオブジェクトを配置できる。
【００８９】
なお、以下の説明において、ユーザが携帯電話１を操作する際に、その操作を行う手段がタッチパネル２０の入力部２２に触れる標準的な接触面積の大きさを、「基準サイズ」と記す。図６（Ａ）および（Ｂ）の上部に、「指の接触面積の大きさ」に基づく基準サイズと、「スタイラスの接触面積の大きさ」に基づく基準サイズとを、それぞれ例示してある。
【００９０】
この基準サイズは、各ユーザにより、また各操作手段（指で入力するかスタイラスを用いて入力するか等）により異なることが想定されるため、所定の各基準サイズを予め設定しておく他、最初に携帯電話１を起動して初期設定を行う際などにユーザに登録を促すのが望ましい。各基準サイズを登録する際は、これらを端末依存情報（装置依存情報）として記憶部５０の端末依存情報記憶領域５７に記憶する。スタイラスなど端末付属のデバイスを操作手段とする場合の基準サイズは、端末依存情報として予め登録することもできる。
【００９１】
このようにして合成ＵＩが生成されると、合成ＵＩ定義ファイル生成部６３は、当該生成された合成ＵＩに対応する合成ＵＩ定義ファイルを生成する。ＵＩ合成処理部６０は、生成された合成ＵＩ定義ファイルを、合成ＵＩ定義ファイル記憶領域５６に記憶する。以後、合成ＵＩ定義ファイル記憶領域５６に記憶された合成ＵＩ定義ファイルを読み出すことにより、ＵＩ生成部１３は、タッチパネル２０の表示部２２上に、一度生成した合成ＵＩを再現できる。
【００９２】
次に、本実施の形態による、操作手段の変更に伴うＵＩ再合成処理について説明する。この処理は、生成した合成ＵＩを使用中に、ユーザが入力操作を行う操作手段が変更された場合に、当該変更された操作手段に応じて、使用中の合成ＵＩを再合成する。
【００９３】
以下、図７のフローチャートを参照して、本実施の形態による、操作手段の変更に伴うＵＩ再合成処理を説明する。
【００９４】
操作手段の変更を検出するモード（以下、「操作手段検出モード」と記す）を開始すると、制御部１０の操作手段検出部１４は、ユーザが入力操作に用いる操作手段の検出を行う（ステップＳ３１）。すなわち、操作手段検出部１４は、タッチパネル２０の入力部２２と、操作キー部８０と、スタイラス収納部９０とからの入力を監視し、これらの各機能部からの入力を検出する。入力を検出したら、操作手段検出部１４は、当該入力に基づいて、操作手段が変更されたか否かを判定する（ステップＳ３２）。
【００９５】
例えば、タッチパネル２０からの入力が検出され、それ以前の入力は操作キー部８０から検出されていた場合、操作手段検出部１４は、操作手段が操作キー部８０からタッチパネル２０に変更されたと判定する。
【００９６】
また、タッチパネル２０の入力部２２からの入力がなされた際の当該入力の接触面積が変化して所定値以上になった場合、操作手段検出部１４は、操作手段がスタイラスからユーザの「指」に変化したと判定する。一方、タッチパネル２０の入力部２２からの入力の際の接触面積が変化して所定値以下になった場合、操作手段検出部１４は、操作手段がユーザの指からスタイラスに変化したと判定する。
【００９７】
さらに、スタイラス収納部９０からスタイラスが抜き出されたことが検知された場合、操作手段検出部１４は、以後の操作はタッチパネル２０上でスタイラスにより行われると判定する。一方、スタイラス収納部９０にスタイラスが収納されたことが検知された場合、操作手段検出部１４は、以後の操作はタッチパネル２０上で指により行われるか、または操作キー部８０にて行われると判定する。
【００９８】
以上のように、ステップＳ３２にて操作手段が変更されたと判定された場合、ＵＩ合成処理部６０は、端末依存情報記憶領域５７に記憶されている端末依存情報である基準サイズを、検出された操作手段に応じて変更する（ステップＳ３３）。例えば、操作手段が「指」に変化した場合、基準サイズを「指」の接触面積の大きさに基づくサイズに変更する。同様に、操作手段がスタイラスに変化した場合、基準サイズをスタイラス先端の接触面積の大きさに基づくサイズに変更する。
【００９９】
次に、制御部１０は、タッチパネル２０の表示部２４に現在表示されているＵＩが合成ＵＩ定義ファイルに基づいて生成された合成ＵＩであるか否かを判定する（ステップＳ３４）。表示部２４に表示されているＵＩが合成ＵＩでない（つまり単体で使用することを想定したＵＩである）場合、操作手段が変更されて基準サイズが変更されたとしても、当該ＵＩ以外の他のＵＩを構成するＵＩオブジェクトを追加する必要性は低い。すなわち、単体で使用することを想定したＵＩを使用している場合、現在表示されているＵＩを再合成処理して当該ＵＩの構成を変化させる必要性は低い。したがって、その場合には、当該ＵＩの変更（再合成）処理は行わずにステップＳ３１に戻る。
【０１００】
一方、ステップＳ３４にて、表示部２４に表示されているＵＩが合成ＵＩである場合、ＵＩ合成処理部６０は、当該合成ＵＩの合成ＵＩ定義ファイルに含まれる各ＵＩオブジェクトについて、ステップＳ３３にて変更された基準サイズに基づいて、ＵＩ合成処理を再び実行する（ステップＳ３５）。なお、この時に、図５のステップＳ１３にて設定した各種マージンの中から、必要に応じたマージンに基づいてＵＩ合成処理を再び行う。それから、ＵＩ生成部１３は、再びＵＩ合成処理が行われた各ＵＩオブジェクトを表示部２４に表示して、ＵＩの表示を更新する（ステップＳ３６）。この後はステップＳ３１に戻り、次に操作手段が変更されるのを検出する。
【０１０１】
なお、ステップＳ３２にて、操作手段が変更されない場合、操作手段の変更の検出が終了されたか否か、すなわち操作手段検出モードが終了されたかどうかを判定する（ステップＳ３７）。操作手段検出モードが終了されていない場合にはステップＳ３１に戻り、次に操作手段が変更されるのを検出する。ステップＳ３７にて操作手段検出モードが終了された場合は、操作手段の変更に伴うＵＩ再合成処理を終了する。したがって、本実施の形態では、操作手段検出部１４は操作入力手段判別部を構成する。
【０１０２】
以上の処理により、ユーザが行う入力操作の操作手段が変更されると、携帯電話１は、変更された操作手段を判断して、各操作手段に応じた最適な合成ＵＩをユーザに提供する。例えば、図６（Ａ）に示すような合成ＵＩをタッチパネル２０の表示部２４に表示している際に、スタライスをスタイラス収納部９０から抜き出すと、合成ＵＩが再合成されて、図６（Ｂ）のような合成ＵＩの表示に切り換わる。すなわち、スタイラスによる操作に備えて、指による操作の場合よりも多数のＵＩオブジェクトが細かく表示される。その後、スタイラスをスタイラス収納部９０に収納すると、再び図６（Ａ）のような、指で操作するのに好適な合成ＵＩに更新される。
【０１０３】
また、スタライスを抜き出して図６（Ｂ）のような合成ＵＩに切り換わった後でも、入力操作の際にスタイラスを使用せずに、指でタッチパネル２０に触れると、その指の接触面積（基準サイズ）に基づいて、図６（Ａ）のような合成ＵＩに切り換えることもできる。その後、スタイラスを用いてタッチパネル２０に触れると、再び図６（Ｂ）のような合成ＵＩにすることもできる。
【０１０４】
さらに、操作キー部８０を構成する各キーを押下する動作に基づいて、表示部２４に表示する合成ＵＩを、操作キーによる操作用の（すなわちタッチパネル用ではない）合成ＵＩに切り換えることもできる。また、表示部２４に入力箇所を指定するポインタを表示させて使用する場合、表示部２４にポインタを表示した際に、当該ポインタを用いて操作を行うのに好適な合成ＵＩを表示させることもできる。ポインタの画像をカスタマイズできる端末の場合は、表示するポインタの画像の大きさに基づいて基準サイズを算出し、その基準サイズに応じた合成ＵＩを表示できる。
【０１０５】
次に、図５にて説明した自動レイアウト処理におけるマージン設定処理（ステップＳ１３）の詳細を説明する。図５にて説明した自動レイアウト処理のステップＳ１３にて言及したマージン設定処理では、各ＵＩオブジェクトを配置する際に、隣接するＵＩオブジェクトとの間に必要となるマージン（間隔）を設定する。各ＵＩオブジェクトのマージンは、それぞれ種々の条件に基づいて設定することができ、さらに、設定されるマージンも種々のものを規定することができる。
【０１０６】
本実施の形態では、ＵＩオブジェクトを配置するにあたり、最初に、各種のマージンのうち、使用する可能性のあるものを全て設定する。最初に全てのマージンを設定することにより、その後各ＵＩオブジェクトを用いてどのようなレイアウト処理を行っても、そのレイアウトに応じて各種マージンを適宜用いることができる。
【０１０７】
本実施の形態のマージン設定処理では、各ＵＩオブジェクトについて、それぞれ、マージンＡ〜Ｆの６種のマージンを設定する。このマージン設定処理においては、あるＵＩオブジェクトと、その周囲に配置され得るＵＩオブジェクトとの相互関係などに基づいて適切なマージンを設定する。
【０１０８】
以下、マージンＡ〜Ｆの各種のマージンについての説明を列記する。以下、マージンを設定する対象となるＵＩオブジェクトを「対象ＵＩオブジェクト」と記し、当該対象ＵＩオブジェクトに隣接するＵＩオブジェクトを「隣接ＵＩオブジェクト」と記す。
マージンＡ：対象ＵＩオブジェクトと、隣接ＵＩオブジェクトとが元々同じＵＩ定義ファイルに含まれており、かつ、これら両ＵＩオブジェクトについて、上述した（１）の「ＵＩオブジェクトの種別情報」が異種の場合に用いるマージン
（なお、「元々同じＵＩ定義ファイルに含まれている」とは、すなわち、ＵＩを単独で起動させた場合に同じＵＩに含まれるＵＩオブジェクトであることを意味する。また、両ＵＩオブジェクトの「ＵＩオブジェクトの種別情報が異なる」とは、例えば一方がボタンやキーなどのユーザ操作を受け付けるＵＩオブジェクトである場合に、他方がテキストボックスや画像表示などユーザ操作を受け付けないＵＩオブジェクトである場合などを想定している。）
マージンＢ：対象ＵＩオブジェクトと、隣接ＵＩオブジェクトとが元々同じＵＩ定義ファイルに含まれており、かつ、これら両ＵＩオブジェクトについて、（１）の「ＵＩオブジェクトの種別情報」が同種の場合に用いるマージン
マージンＣ：対象ＵＩオブジェクトを、タッチパネル２０の表示部２４の縁部分に配置する場合のマージン
マージンＤ：対象ＵＩオブジェクトと、隣接ＵＩオブジェクトとが元々異なるＵＩ定義ファイルに含まれており、かつ、これら両ＵＩオブジェクトについて、（１）の「ＵＩオブジェクトの種別情報」が異種の場合に用いるマージン
マージンＥ：対象ＵＩオブジェクトと、隣接ＵＩオブジェクトとが元々異なるＵＩ定義ファイルに含まれており、かつ、これら両ＵＩオブジェクトについて、（１）の「ＵＩオブジェクトの種別情報」が同種の場合に用いるマージン
マージンＦ：対象ＵＩオブジェクトと、隣接ＵＩオブジェクトとのＵＩオブジェクト定義情報にそれぞれ含まれている、上述した（８）の「ＵＩオブジェクト同士の関連性情報」が示す関連性が高い場合に設定するマージン
（なお、「関連性情報が示す関連性が高い」ＵＩオブジェクトとは、例えば、テレビリモコンＵＩの選局アップ／ダウンや、オーディオリモコンＵＩの音量アップ／ダウンなど、一般的に「対」でまたはグループで用いることが想定されるＵＩオブジェクトを意味する。）
【０１０９】
以下、図８のフローチャートおよび図９〜図１６を参照しながら、本実施の形態によるマージン設定処理の流れについて説明する。
【０１１０】
まず、マージン設定処理が開始すると、マージン設定部７５は、合成ＵＩを構成するために選択されたＵＩオブジェクトの中から、対象ＵＩオブジェクトとしてマージンが設定されていないＵＩオブジェクトを１つ選択する（ステップＳ５１）。対象ＵＩオブジェクトが選択されたら、マージン設定部７５は、当該選択された対象ＵＩオブジェクトのＵＩオブジェクト定義情報を解析して、（１）の「ＵＩオブジェクトの種別」を判定する（ステップＳ５２）。
【０１１１】
対象ＵＩオブジェクトの種別を判定することにより、各ＵＩオブジェクトの機能に応じたマージンを設定できる。図９は、このようにして各ＵＩオブジェクトの機能に応じて設定したマージンの例を示す図である。各列はＵＩオブジェクトの種別を示し、左から右に、ボタン（Button）、テキストボックス（TextBox）、チェックボックス（Checkbox）、スクロールバー（Scrollbar）の各機能を有するＵＩオブジェクトの例を示す。各ＵＩオブジェクトの周囲を破線で囲むことにより、当該ＵＩオブジェクトに設定されたマージンの領域を示す。なお、このマージンの領域は仮想的に設定されるものであり、表示部２４には表示されないようにするのが好適である。
【０１１２】
また、キーやボタンのように、ユーザが指で操作する場合とスタイラスなどにより操作する場合とが想定されるＵＩオブジェクトについては、その入力手段に応じたマージンを設定する。すなわち、図示のように、指による入力を想定したボタンのＵＩオブジェクトは、ＵＩオブジェクトの大きさが小さい場合、ユーザの指の接触面積の大きさを考慮して、ある程度余裕を持たせてマージンを設定する必要がある。一方、スタイラスやキーによる入力を想定したボタンのＵＩオブジェクトの場合は、細かく位置を指定する入力が可能なため、図示のように、ＵＩオブジェクトの大きさにあまり依存しない（ほぼ一定の）マージンを設定できる。ここで、「キーによる入力」とは、操作キー部８０の方向指示キーなどを用いて表示部２４に表示される選択候補を移動させて決定したり、もしくは操作キー部８０の方向指示デバイスを用いてポインタなどを移動させて、選択するＵＩオブジェクトを決定する動作のような入力を想定している。また、ＵＩオブジェクトの種別がテキストボックスの場合、これらはユーザの入力を受け付けないＵＩオブジェクトであるため、入力手段によらずほぼ一定の小さなマージンを設定できる。ＵＩオブジェクトの種別がチェックボックスやスクロールバーの場合は、図示のように、ある程度入力手段を考慮してマージンを設定する必要がある。
【０１１３】
このように、各ＵＩオブジェクトの種別に基づいて、入力手段も考慮したうえでマージンを設定することにより、当該マージンに基づいてレイアウトを行うことで、例えば図１０に示すような配置にできる。図１０（Ａ）および（Ｂ）は、入力手段がユーザの指である場合のマージンを設定し、当該設定にしたがって所定のレイアウトを施して合成ＵＩを生成した例を示す図である。図１０（Ａ）は仮想的なマージンを破線で示すことにより視覚的に明らかにした図であり、図１０（Ｂ）はＵＩオブジェクトを実際に表示した例を示す図である。また、図１０（Ｃ）および（Ｄ）は、入力手段がスタイラスの場合のマージンを設定して合成ＵＩを生成した例を示す図である。図１０（Ｃ）はマージンを破線で示した図であり、図１０（Ｄ）はＵＩオブジェクトを実際に表示した例を示す図である。このように、ユーザが指で入力する場合には、操作性を考慮してある程度のマージンを設定することにより、ボタン同士の間隔を広めにとることができる。一方、スタイラスを用いるなど細かい入力を行う場合は、少なめのマージンを設定することによりＵＩ表示領域が有効活用できる。この場合、さらに多くのＵＩオブジェクトを追加することも可能である。
【０１１４】
次に、ステップＳ５３にて、対象ＵＩオブジェクトの種別の判定結果が、ユーザ操作を受け付けるボタンやキー（以下、「ユーザ操作系」と記す）である場合、マージン設定部７５は、マージンＡに所定の最小マージンを設定する（ステップＳ５４）。マージンＡは対象ＵＩオブジェクトと隣接ＵＩオブジェクトとの種別が異なる場合のマージンであり、ステップＳ５４においては、ユーザ操作系の対象ＵＩオブジェクトの周囲に、ユーザ操作系でない隣接ＵＩオブジェクトを配置する場合のマージンを設定することになる。ユーザ操作系のＵＩオブジェクトに隣接するＵＩオブジェクトがユーザ操作系でない場合、当該隣接するＵＩオブジェクトを誤って押下しても、それは入力として扱われない。したがって、ユーザ操作系のＵＩオブジェクト同士が隣接しなければ、これらオブジェクト同士を近接させても操作性が悪化しないため、ここではマージンＡを最小にする。
【０１１５】
次に、マージン設定部７５は、対象ＵＩオブジェクトのＵＩオブジェクト定義情報に含まれる、上述した（４）の「ＵＩオブジェクトの表示サイズ情報」と、端末依存情報記憶領域５７に記憶されている基準サイズとを比較する（ステップＳ５５）。なお、上述したように、「基準サイズ」とは、タッチパネル２０の入力部２２に操作手段が触れる標準的な接触面積の大きさ、すなわち操作するユーザの指やスタイラスの接触面積の大きさを意味する。
【０１１６】
ステップＳ５６にて、（４）のＵＩオブジェクトの表示サイズが基準サイズよりも大きくない場合、マージン設定部７５は、（４）のＵＩオブジェクトの表示サイズと基準サイズとの差に応じてマージンＢを設定する（ステップＳ５７）。ここで、（４）のＵＩオブジェクトの表示サイズが基準サイズよりも大きくない場合とは、すなわち、図１１（Ａ）に示すように、対象ＵＩオブジェクトの表示サイズよりも、入力する指の接触面積の方が大きくなる場合である。この場合、ユーザ操作系のＵＩオブジェクト同士が隣接すると、ユーザは意図せず隣接ＵＩオブジェクトを誤って押下する恐れがある。したがって、対象ＵＩオブジェクトと隣接ＵＩオブジェクトとの種別が同種の場合のマージンであるマージンＢは、ある程度余裕を持たせて設定する必要がある。
【０１１７】
このように、隣接ＵＩオブジェクトに応じてマージンを設定することにより、当該マージンに基づいてレイアウトを行うことで、例えば図１２に示すような配置にできる。図１２（Ａ）は、ＵＩオブジェクトの種別が同種の場合のマージン、すなわちマージンＢに基づいて、ユーザ操作系のＵＩオブジェクト（ボタンＢ）を多数並べて配置した例を示す図である。このように、マージンＢを設定した各ＵＩオブジェクトのマージンの領域に、他のＵＩオブジェクトが重ならないように各ＵＩオブジェクトを配置することで、ユーザ操作系のＵＩオブジェクト同士が接近し過ぎないようにできる。したがって、ユーザが指で操作する際に、意図しない隣接ＵＩオブジェクトを誤って押下する恐れは低減される。
【０１１８】
図１２（Ｂ）は、ＵＩオブジェクトの種別が異種の場合のマージン、すなわちマージンＡに基づいて、ユーザ操作性のＵＩオブジェクトをいくつか並べて配置した例を示す図である。ユーザ操作系のＵＩオブジェクト（ボタンＢ）の隣接ＵＩオブジェクトがユーザ操作系のオブジェクトでない（例えばテキストボックス）場合、これらのＵＩオブジェクトを近接させても操作性は悪化しない。これは、ユーザが誤ってＵＩオブジェクトを押下しても、ユーザ操作系のＵＩオブジェクトしか入力を受け付けないためである。したがって、異種のＵＩオブジェクトが隣接する場合には、これらを近接させて配置することにより、ＵＩ表示領域を有効活用できる。
【０１１９】
マージンＢが設定されたら、次に、マージン設定部７５は、端末依存情報記憶領域５７に記憶されている、タッチパネル２０の表示部２４の縁部分に関する情報（以下、「縁マージン情報」と記す）に基づいて、マージンＣを設定する（ステップＳ５８）。この場合、対象ＵＩオブジェクトの表示サイズよりも、入力する指の接触面積の方が大きいため、比較的小さな対象ＵＩオブジェクトが表示部２４の縁に近接して配置されると、ユーザは当該対象ＵＩオブジェクトを押下しづらくなる。したがって、この場合には、マージンＣは、端末依存情報（装置依存情報）である縁マージン情報に基づいて、ある程度余裕を持たせて設定する必要がある。
【０１２０】
このように、縁マージン情報に基づいてマージンを設定することにより、当該マージンに基づいてレイアウトを行うことで、例えば図１３に示すような配置にできる。図１３（Ａ）に示すように、ユーザ操作系である「電源」ボタンは、表示サイズが基準サイズよりも大きい、すなわち指の接触面積よりも大きいＵＩオブジェクトであるため、ＵＩ表示領域の端（図１３（Ａ）の左端）に近接させて配置しても操作性は悪化しない。しかしながら、ユーザ操作系のボタンＢは、表示サイズが基準サイズよりも小さい、すなわち指の接触面積よりも小さいＵＩオブジェクトであるため、ＵＩ表示領域の端にあまり近接させると操作性が悪化する（押しにくくなる）。したがって、このようなＵＩオブジェクトは、ＵＩ表示領域の端に近接し過ぎないようにマージンＣを設定する。なお、図１３（Ａ）にて破線により示すＵＩオブジェクトのマージンの領域は仮想的に示したものであり、実際の表示部２４の表示は、図１３（Ｂ）のようになる。
【０１２１】
また、マージンＣの設定の際、タッチパネル２０を囲む部材の縁部の形状に基づいて設定してもよい。すなわち、例えば図１４（Ａ）に示す携帯端末のタッチパネルを囲む部材の、タッチパネルに接する縁部を面取りする等して、横から見ると図１４（Ｂ）に示すような形状の端末の場合、図示のように、ユーザの指はタッチパネルの端であっても押下できる。このような端末では、図１４（Ａ）に示すように、ＵＩ表示領域の端（図１４（Ａ）の右端）に近接させてボタンなどのＵＩオブジェクトを配置しても操作性は悪化しない。したがって、この場合、ＵＩオブジェクトをＵＩ表示領域の端に近接して配置するようにマージンＣを設定することにより、ＵＩ表示領域を有効活用できる。
【０１２２】
一方、携帯端末のタッチパネルを囲む部材の、タッチパネルに接する縁部が面取り等されていない場合、図１４（Ｃ）に示すように、ボタンなどのＵＩオブジェクトを配置する際にあまりＵＩ表示領域の端（図１４（Ｃ）の右端）に近接させないようにマージンＣを設定する。それは、このような端末では、図１４（Ｄ）に示すように、ユーザの指はタッチパネルの端の位置を押下できないからである。
【０１２３】
このような処理を行うために、携帯端末のタッチパネルを囲む部材の、タッチパネルに接する縁部の形状に関する情報、すなわち、表示部の周縁を画成する部材の形状に基づいて設定された情報を、端末依存情報として予め端末依存情報記憶領域５７に記憶する。
【０１２４】
マージンＣが設定されたら、次に、マージン設定部７５は、すでに設定されたマージンＡおよびＢに基づいて、マージンＤおよびＥを設定する（ステップＳ６１）。マージンＡおよびＤは双方とも、対象ＵＩオブジェクトと隣接ＵＩオブジェクトとの種別が異なる場合のマージンであり、マージンＢおよびＥは双方とも、対象ＵＩオブジェクトと隣接ＵＩオブジェクトとの種別が同種の場合のマージンである。この点で、これらはそれぞれ類似点を有している。しかしながら、マージンＡおよびＢは、対象ＵＩオブジェクトと、隣接ＵＩオブジェクトとが元々同じＵＩ定義ファイルに含まれている場合に設定されるマージンである。
【０１２５】
一方、マージンＤおよびＥは、対象ＵＩオブジェクトと、隣接ＵＩオブジェクトとが元々異なるＵＩ定義ファイルに含まれている場合に設定されるマージンである。合成ＵＩを生成する際に、元々同じＵＩ定義ファイルに含まれていたＵＩオブジェクト同士は、元々異なるＵＩ定義ファイルに含まれていたＵＩオブジェクト同士よりも近接させて配置した方が、まとまりのあるオブジェクト群であることを視覚的に認識し易い。したがって、マージン設定部７５は、先に設定したマージンＡおよびＢの各マージンを利用して、これらのマージンよりも若干大きくマージンを設定するなどの補正を行うことにより、マージンＤおよびＥを設定する。
【０１２６】
例えば、図１５（Ａ）に示すように、（１）の隣接ＵＩオブジェクトと所属ＵＩが異なる場合のマージン、すなわちマージンＤまたはＥの設定は、それぞれ（２）の所属ＵＩが同じ場合のマージン、すなわちすでに設定されたマージンＡまたはＢに基づいて行う。隣接ＵＩオブジェクトが元々同じＵＩに含まれる場合には小さめの（例えばデフォルトつまり単独ＵＩとしての設定のような）マージンを設定し、異なるＵＩに含まれる場合には大きめのマージンを設定する。図１５（Ｂ）に示すエアコンディショナーリモコンＵＩ（単独ＵＩ）と、図１５（Ｃ）に示すビデオリモコンＵＩ（単独ＵＩ）とから、主要なＵＩオブジェクトを自動選択して配置すると、例えば、図１５（Ｄ）に示すような合成ＵＩを生成できる。図示のように、各ＵＩオブジェクトの操作性を確保したまま、元の所属ＵＩが同じＵＩオブジェクト同士を近くに配置できる。このようにマージンＤおよびＥを設定することにより、合成ＵＩを構成する際に元の所属ＵＩが同じ各ＵＩオブジェクトは近くに配置されるため、ユーザは各ＵＩの違いを視覚的に容易に区別できる。
【０１２７】
なお、ステップＳ５６にて、（４）の「ＵＩオブジェクトの表示サイズ」が基準サイズよりも大きい場合、マージン設定部７５は、マージンＢおよびＣに所定の最小マージンを設定する（ステップＳ５９）。（４）のＵＩオブジェクトの表示サイズが基準サイズよりも大きい場合とは、すなわち、図１１（Ｂ）に示すように、入力する指の接触面積よりも、ＵＩオブジェクトの表示サイズの方が大きくなる場合である。この場合、ユーザ操作系のＵＩオブジェクト同士が隣接しても、ユーザは、比較的大きな対象ＵＩオブジェクトに隣接するＵＩオブジェクトを誤って押下してしまう恐れは少ない。また、この場合、比較的大きな対象ＵＩオブジェクトが表示部２４の縁に近接して配置されても、ユーザが当該対象ＵＩオブジェクトを押下しづらくなることはない。したがって、対象ＵＩオブジェクトと隣接ＵＩオブジェクトとの種別が同種の場合のマージンであるマージンＢ、および表示部２４の縁部分に配置する場合のマージンであるマージンＣに所定の最小マージンを設定しても問題ない。ステップＳ５９の後、マージン設定処理はステップＳ６１に移行する。
【０１２８】
また、ステップＳ５３にて、対象ＵＩオブジェクトの種別の判定結果がユーザ操作系ではない、すなわちユーザ操作を受け付けない種別の場合、マージン設定部７５は、マージンＡ、ＢおよびＣに所定の最小マージンを設定する（ステップＳ６０）。対象ＵＩオブジェクトがユーザ操作系でない場合は、隣接ＵＩオブジェクトがユーザ操作系である場合も、そうでない場合も、これらＵＩオブジェクト同士を近接させたとしても、対象ＵＩオブジェクトの操作性は悪化しない。また、対象ＵＩオブジェクトがユーザ操作系でない場合は、当該対象ＵＩオブジェクトを表示部２４の縁に近接して配置しても、ユーザの操作には影響しない。したがって、この場合はマージンＡ、ＢおよびＣに所定の最小マージンを設定しても問題ない。ステップＳ６０の後、マージン設定処理はステップＳ６１に移行する。
【０１２９】
ステップＳ６１までの処理によりマージンＡ〜Ｅが設定されたら、次に、マージン設定部７５は、対象ＵＩオブジェクトについて、（８）の「ＵＩオブジェクトの関連性情報」を確認する（ステップＳ６２）。例えば図１６（Ａ）に示すように、単独で使用するテレビリモコンＵＩを構成するＵＩオブジェクトには、「選局＋」と「選局−」、および「音量＋」と「音量−」のような、ある対象ＵＩオブジェクトと共に「対」として用いるＵＩオブジェクトが存在するものがある。このように、２つ以上のＵＩオブジェクトが通常「対」またはグループとして使用される場合、それらのＵＩオブジェクトは「関連性が高い」と記す。このような、関連性の高い「対」となるＵＩオブジェクトのＵＩオブジェクト定義情報に、予め、（８）のＵＩオブジェクトの関連性情報として、図１６（Ｂ）に示すような、ＵＩＭＬの属性情報（relate_ID）を含める。図示の例では、（選局＋、選局−）および（音量＋、音量−）は、それぞれ関連性の高いＵＩオブジェクトとして共通のＩＤを付与する。例えば、選局のＵＩオブジェクトには、図１６（Ｂ）の（２）および（３）に示すように、共通のＩＤとしてrelate_ID=”select_1”を付与し、音量のＵＩオブジェクトには、図１６（Ｂ）の（４）および（５）に示すようにrelate_ID=”volume_1”を付与する。
【０１３０】
ステップＳ６３にて、合成ＵＩを構成するＵＩオブジェクトの中に、対象ＵＩオブジェクトと関連性が高いものが含まれる場合、マージン設定部７５は、対象ＵＩオブジェクトを含む元の単独で使用されるＵＩを解析する。この解析の後、マージン設定部７５は、当該解析の結果に基づいてマージンＦを設定する（ステップＳ６４）。あるＵＩオブジェクトが対象ＵＩオブジェクトと関連性が高い場合、通常、これらのＵＩオブジェクトの双方は、元々同一の単独で使用されるＵＩに含まれる。したがって、元の単独で使用されるＵＩにおいて、これらのＵＩオブジェクトに設定されていたマージンを判定し、このマージンの大きさに基づいて、これらのＵＩオブジェクトは、関連性のない他のＵＩオブジェクトよりも近接して配置する。
【０１３１】
例えば、元のＵＩにおいて関連性の高いＵＩオブジェクトでないものを隣接して配置する場合、図１６（Ｃ）に示すように、各ＵＩオブジェクトは一定の間隔を空けて配置されるため、ユーザは、これらのＵＩオブジェクト同士の関連性は高くないことが分かる。図１６（Ｃ）においては、「音量」のＵＩオブジェクトと「選局」のＵＩオブジェクトとは関連性が高くないため、隣接して配置する際には、ある程度のマージンが確保される。一方、元のＵＩにおいて関連性の高いＵＩオブジェクトを隣接して配置する場合、図１６（Ｄ）に示すように、関連性の高いＵＩオブジェクト同士は、他の隣接ＵＩオブジェクトに比べて近接して配置される。図１６（Ｄ）においては、「音量」のＵＩオブジェクト同士、および「選局」のＵＩオブジェクト同士は、それぞれ関連性が高いため、隣接して配置する際に、ある程度近接して配置される。したがって、ユーザは、これらのＵＩオブジェクト同士の関連性が高いことが容易に視認できるだけでなく、対として使用する際の操作性も向上する。
【０１３２】
以上のように、マージンＡ〜Ｆまでの設定を行うことにより、ＵＩオブジェクト１つに対して複数のマージンが設定される。例えば、図１１（Ａ）に示すように、基準サイズよりも小さなボタンのＵＩオブジェクトには、所属ＵＩが同じで隣接ＵＩオブジェクトが異種の場合のマージンＡを（１）の大きさに、隣接ＵＩオブジェクトが同種の場合のマージンＢを（２）の大きさに設定するのが好適である。また、所属ＵＩが異なり隣接ＵＩオブジェクトが異種の場合のマージンＤを（２）の大きさに、隣接ＵＩオブジェクトが同種の場合のマージンＥを（３）の大きさに設定するのが好適である。さらに、ＵＩ表示領域の端に配置する場合のマージンＣは（２）の大きさに設定する。一方、例えば図１１（Ｂ）に示すように、基準サイズよりも大きなボタンのＵＩオブジェクトには、マージンＡを（１）の大きさに、マージンＢを（２）の大きさに設定し、マージンＤを（２）の大きさに、マージンＥを（３）の大きさに設定するのが好適である。また、ＵＩ表示領域の端に配置する場合のマージンＣは（１）の大きさに設定する。なお、この「電源」のＵＩオブジェクトには、対として用いるような関連性の高いＵＩオブジェクトは他に存在しないため、マージンＦを設定していない。
【０１３３】
ステップＳ６４までの処理が終了したら、次に、マージン設定部７５は、合成ＵＩを構成するために選択されたＵＩオブジェクトの中に、対象ＵＩオブジェクトとしてマージンが設定されていないＵＩオブジェクトがまだ存在するか否かを確認する（ステップＳ６５）。まだマージンの設定がされていないＵＩオブジェクトがある場合には、ステップＳ５１に戻ってマージン設定処理を続行する。一方、ステップＳ６５にて、全てのＵＩオブジェクトに対してマージンが設定されたと判定された場合には、マージン設定処理は終了する。
【０１３４】
以上のマージン設定処理により設定された各種のマージンは、ＵＩ合成処理部６０が、各ＵＩオブジェクトのＵＩオブジェクト定義情報に含めて、合成ＵＩ定義ファイル記憶領域５６に記憶する。したがって、これらのマージン情報は、以後行われる自動レイアウト処理において、ＵＩ合成処理部６０が合成ＵＩ定義ファイル記憶領域５６から読み出すことにより、配置状況に応じて適切に選択して使用することができる。
【０１３５】
仮に、以上のようなマージン設定処理によってマージンを設定せずに（つまり図５のステップＳ１３をスキップして）、図５のステップＳ１４以降の自動レイアウト処理に移行した場合、例えば図１７（Ａ）に示すように、マージンの全く設定されない合成ＵＩが生成される恐れがある。図１７（Ａ）は、単独で用いる（１）〜（４）の４つのＵＩから重要なＵＩオブジェクトを選択して自動レイアウト処理を行った結果である。このような合成ＵＩは、各ＵＩオブジェクトにマージンが設定されていないため、ユーザにとっては、操作しづらいだけでなく視認性も良くない。
【０１３６】
本実施の形態のマージン設定処理によりマージンを設定した後で（つまり図５のステップＳ１３を経た後に）、図５のステップＳ１４以降の自動レイアウト処理に移行すれば、例えば図１７（Ｂ）に示すように、適切なマージンが設定された合成ＵＩが生成される。このように適切なマージンが設定された合成ＵＩは、操作性を著しく向上できるだけでなく、見た目のまとまりも良い。したがって、視認性が良くないことに起因するユーザの誤操作も低減させることができる。なお、実際に合成ＵＩを生成する際には、各ＵＩオブジェクト自体またはその背景（例えばマージン部分）に適切な色を割り当てる等して元の所属ＵＩを区別することにより、各ＵＩオブジェクトの機能をさらに視認し易くすることができる。
【０１３７】
なお、本発明は、上述した実施の形態にのみ限定されるものではなく、幾多の変更または変形が可能である。例えば、本実施の形態では、マージン設定処理フローにより、使用される可能性のある各種のマージンを予め全て設定してから、その後の配置設定処理にて必要なマージンを選択して使用した。しかしながら、予め各種のマージンを設定するのではなく、配置設定処理を行いながら、必要となるマージンを、その都度設定してもよい。
【０１３８】
また、上述した実施の形態では、タッチパネルを備える携帯端末でＵＩを合成処理する場合について説明した。しかしながら、本発明のＵＩ合成処理においては、タッチパネルは必須の要素ではない。本発明は、例えば機械式のキーを多数備える入力部や、ポインタなどを移動させてＵＩオブジェクトの選択および決定を行う方向指示デバイスを備える入力部など、ＵＩを合成して使用することが想定される任意の端末に適用できる。
【０１３９】
さらに、上述した実施の形態においては、説明の便宜のため、操作手段検出モードである場合に、操作手段の変更に伴うＵＩ再合成処理を行うようにしたが、携帯電話１は、常にこのようなモードで動作するようにしてもよい。
【０１４０】
また、上述した実施の形態では、複数のＵＩを構成するＵＩオブジェクトから合成ＵＩを生成する場合について説明したが、複数のＵＩに基づく合成でなくとも、１つのＵＩから複数のＵＩオブジェクトを多数選択してＵＩを生成する場合についても本発明を適用できる。
【０１４１】
さらに、上述した実施の形態では、各アプリケーションに対応したＵＩのＵＩ定義ファイルが予めＵＩ定義ファイル記憶領域５２に記憶されている場合について説明したが、必要なＵＩ定義ファイルを適宜外部から取得するようにもできる。この場合、ＵＩを用いるアプリケーションからＵＩ定義ファイルが指定された際、必要なＵＩ定義ファイルがＵＩ定義ファイル記憶領域５２または合成ＵＩ定義ファイル記憶領域５６に存在するか否か判定する。必要なＵＩ定義ファイルがＵＩ定義ファイル記憶領域５２または合成ＵＩ定義ファイル記憶領域５６に存在しない場合、制御部１０のＵＩ取得部１２は、無線通信部３０を介して、図示しない外部機器または外部サーバなどから、必要なＵＩ定義ファイルを取得する。
【０１４２】
なお、上述した各実施の形態で用いるＵＩ定義ファイルの一例として、以下にＸＭＬをベースとしたＵＩＭＬ形式のファイルの例を一部抜粋して示す。本例において、ＵＩオブジェクトは<template>タグにより定義されており、したがって<template>〜</template>の間の記載がＵＩオブジェクト定義情報に相当する。ここでは、ＴＶリモコン用ＵＩを構成するＵＩ定義ファイル(TV1_interface.uiml)の中から、「電源」のＵＩオブジェクトおよび「選局＋」のＵＩオブジェクトのＵＩオブジェクト定義情報の例を示す。下線を付した箇所のうち、priorityの属性が示すのが優先度の情報（数値がゼロに近いほど高優先度）であり、relateの属性が示すのが他のＵＩオブジェクトとの関連を示す情報であり、sizeの属性が示すのがサイズ情報である。
0005431321.tif 000002
【産業上の利用可能性】
【０１４３】
本発明によれば、（合成ＵＩの）ＵＩオブジェクトを所定の表示領域内に収まる様にレイアウトする際、配置するＵＩオブジェクトの種別や表示サイズおよび隣接するＵＩオブジェクトの種別などと共に、携帯端末の操作部や表示部の仕様等に対応する端末依存情報（装置依存情報）に基づいて、各ＵＩオブジェクトの周囲に適度な間隔（マージン）を設定する。したがって、合成ＵＩを表示する際に、操作性を損なわないレイアウトを行うことが可能になる。
【符号の説明】
【０１４４】
１  携帯電話
１０  制御部
１１  アプリケーションプログラム実行部
１２  ユーザインタフェース取得部
１３  ユーザインタフェース生成部
１４  操作手段検出部
１５  ＵＩ処理部
２０  タッチパネル
２２  入力部
２４  表示部
３０  無線通信部
４０  赤外線通信部
５０  記憶部
５１  アプリケーションプログラム記憶領域
５２  ユーザインタフェース定義ファイル記憶領域
５３  個別ユーザインタフェースリソース記憶領域
５４  共通ユーザインタフェースリソース記憶領域
５５  関連アプリケーションプログラム情報記憶領域
５６  合成ユーザインタフェース定義ファイル記憶領域
５７  端末依存情報記憶領域
６０  ユーザインタフェース合成処理部
６１  ユーザインタフェースオブジェクト定義情報解析部
６２  ユーザインタフェースオブジェクト選択処理部
６３  合成ユーザインタフェース定義ファイル生成部
６４  ユーザインタフェースリソース整形部
７０  自動レイアウト処理部
７１  配置設定部
７２  配置可否判定部
７３  縮小オブジェクト選択部
７４  サイズ下限値設定部
７５  マージン設定部
８０  操作キー部
９０  スタイラス収納部
【図１】
0005431321.tif 000003
【図２】
0005431321.tif 000004
【図３】
0005431321.tif 000005
【図４】
0005431321.tif 000006
【図５】
0005431321.tif 000007
【図６】
0005431321.tif 000008
【図７】
0005431321.tif 000009
【図８】
0005431321.tif 000010
【図９】
0005431321.tif 000011
【図１０】
0005431321.tif 000012
【図１１】
0005431321.tif 000013
【図１２】
0005431321.tif 000014
【図１３】
0005431321.tif 000015
【図１４】
0005431321.tif 000016
【図１５】
0005431321.tif 000017
【図１６】
0005431321.tif 000018
【図１７】
0005431321.tif 000019
【図１８】
0005431321.tif 000020
【図１９】
0005431321.tif 000021