以下、図面に基づいて本発明の実施の形態を説明する。図1は、本発明の実施の形態における画像形成装置のハードウェア構成の一例を示す図である。図1では、画像形成装置の具体例として、プリンタ、コピー、スキャナ、又は、ファクス等の複数の機能を一台の筐体において実現する複合機1のハードウェア構成が示されている。
複合機1のハードウェアとしては、コントローラ601と、オペレーションパネル602と、ファクシミリコントロールユニット(FCU)603と、撮像部604と、印刷部605が存在する。
コントローラ601は、CPU611、ASIC612、NB621、SB622、MEM−P631、MEM−C632、HDD(ハードディスクドライブ)633、メモリカードスロット634、NIC(ネットワークインタフェースコントローラ)641、USBデバイス642、IEEE1394デバイス643、セントロニクスデバイス644により構成される。
CPU611は、種々の情報処理用のICである。ASIC612は、種々の画像処理用のICである。NB621は、コントローラ601のノースブリッジである。SB622は、コントローラ601のサウスブリッジである。MEM−P631は、複合機1のシステムメモリである。MEM−C632は、複合機1のローカルメモリである。HDD633は、複合機1のストレージである。メモリカードスロット634は、メモリカード235をセットするためのスロットである。NIC641は、MACアドレスによるネットワーク通信用のコントローラである。USBデバイス642は、USB規格の接続端子を提供するためのデバイスである。IEEE1394デバイス643は、IEEE1394規格の接続端子を提供するためのデバイスである。セントロニクスデバイス644は、セントロニクス仕様の接続端子を提供するためのデバイスである。オペレーションパネル602は、オペレータが複合機1に入力を行うためのハードウェア(操作部)であると共に、オペレータが複合機1から出力を得るためのハードウェア(表示部)である。
図2は、本発明の実施の形態の画像形成装置におけるソフトウェア構成例を示す図である。図2に示されるように、複合機1におけるソフトウェアは、ユーザインタフェース層10、コントロール層20、機能実現層30、デバイスサービス層40、及びデバイス制御層50等より構成される。なお、図2における各層の上下関係は、各層間の呼び出し関係に基づいている。すなわち、基本的に図中において上にある層が下の層を呼び出す。
ユーザインタフェース層10は、ジョブ(例えば、コピー、印刷、スキャン、ファクス送信等)の実行要求を受け付けるための機能が実装されている部分である。ユーザインタフェース層10において受け付けられたジョブの実行要求は、コントロール層20に伝えられる。ユーザインタフェース層10に含まれる各ソフトウェア部品又はプログラムモジュール(以下、単に「コンポーネント」という。)については後述する。
コントロール層20は、要求されたジョブを実行するための処理を制御するための機能が実装されている部分である。コントロール層20は、例えば、プラグイン管理部210、リクエスト管理部220、及び認証管理部230等が含まれる。プラグイン管理部210は、複合機1に対するコンポーネントのインストール及びアンインストールや、インストールされたコンポーネントの名前とその実体の物理的なアドレス(保存位置情報)との対応情報等を管理する。
リクエスト管理部220は、要求されたジョブの実行を機能実現層30が有する各アプリケーションに要求する。また、複数のジョブが実行される場合は、それらの実行順のスケジューリングを行う。
なお、本実施の形態において「ジョブ」とは、複合機1がユーザに対して提供する一つのまとまった単位(要求が入力されて最終的な出力が得られるまで)のサービスをいう。一つのジョブは、基本的に一つのアプリケーションによって実行されるが、複数のアプリケーションの連携によって実行されてもよい。
認証管理部230は、利用者の認証要求を受け付け、アカウント名とパスワード等の利用者を特定する情報(認証情報)に基づいて認証を行う。
機能実現層30は、それぞれが複合機1において提供されるジョブの一部を実行するコンポーネント群が実装されている部分である。すなわち、機能実現層30におけるコンポーネントを組み合わせることにより一つのジョブを実行するためのアプリケーションが構築される。本実施の形態では、機能実現層30における一部のコンポーネントを「フィルタ」と呼ぶ。これは、複合機1のジョブを実行する手アプリケーションが、「パイプ&フィルタ」と呼ばれるソフトウェアアーキテクチャを採用していることに基づく。
図3は、パイプ&フィルタアーキテクチャの概念を説明するための図である。図3において、「F」はフィルタを示し、「P」はパイプを示す。図中に示されるように、各フィルタはパイプによって接続される。フィルタは、入力されたデータに対して変換を施し、その結果を出力する。パイプは、フィルタから出力されたデータを次のフィルタに伝達する。
すなわち、本実施の形態における複合機1では、ジョブをドキュメント(データ)に対する「変換」の連続として捉える。複合機1のジョブは、ドキュメントの入力、加工、及び、出力によって構成されるものとして一般化することができる。そこで「入力」、「加工」、及び、「出力」を、それぞれ「変換」として捉え、一つの「変換」を実現するソフトウェア部品がフィルタとして構成される。入力を実現するフィルタを特に「入力フィルタ」という。また、加工を実現するフィルタを特に「加工フィルタ」という。更に、出力を実現するフィルタを特に「出力フィルタ」という。なお、各フィルタは独立しており、フィルタ間における依存関係(呼び出し関係)は基本的に存在しない。従って、フィルタ単位で追加(インストール)又は削除(アンインストール)が可能である。
図2において、機能実現層30には、入力フィルタとして、読取フィルタ311、保管文書読出フィルタ312、メール受信フィルタ313、及びファクス受信フィルタ314等が示されている。
読取フィルタ311は、スキャナによる画像データの読み取りを制御し、読み取られた画像データを出力する。保管文書読出フィルタ312は、複合機1の記憶装置に保管されている文書データ(画像データ)を読み出し、読み出されたデータを出力する。メール受信フィルタ313は、電子メールを受信し、当該電子メールに含まれているデータを出力する。ファクス受信フィルタ314は、ファクス受信を制御し、受信されたデータを出力する。
また、加工フィルタとしては、文書編集フィルタ321及び文書変換フィルタ322等が示されている。文書編集フィルタ321は、入力されたデータに所定の画像変換処理(集約、拡大、又は、縮小等)を施し、出力する。文書変換フィルタ322は、画像データのデータ形式を変換する。文書変換フィルタ322は、例えば、レンダリング処理、すなわち、入力されたPostScriptデータをビットマップデータに変換して出力する。
また、出力フィルタとしては、印刷フィルタ331、保管文書登録フィルタ332、メール送信フィルタ333、及びファクス送信フィルタ334等が示されている。
印刷フィルタ331は、入力されたデータをプロッタに出力(印刷)させる。保管文書登録フィルタ332は、入力されたデータを複合機1内の記憶装置、例えば、HDD633に保存する。メール送信フィルタ333は、入力されたデータを電子メールに添付して送信する。ファクス送信フィルタ334は、入力されたデータをファクス送信する。
機能実現層30には、また、複数のフィルタをどの順番で接続するかを管理し、その順番でフィルタを実行させることによりジョブを実行するコンポーネント(このようなコンポーネントを本実施の形態では「アプリケーション」という。)として、コピーアプリケーション301、送信アプリケーション302、及びファクスアプリケーション303等が含まれる。例えば、コピーアプリケーション301は、読取フィルタ311と、文書編集フィルタ321と、印刷フィルタ331との組み合わせにより、コピー機能(コピーアプリケーション)を実現するアプリケーションである。
なお、機能実現層30におけるアプリケーションも独立してインストール及びアンインストール可能である。
機能実現層30には、ユーザ情報管理部341、表示管理部350、及びUIカスタマイズ部360が含まれる。
ユーザ情報管理部341は、複合機1にログインするためのユーザの名やパスワード等の認証情報を、後述するデータ管理部410に登録(永続化)し、参照、更新、削除、検索を行う。表示管理部350は、各フィルタ及び各アプリケーションに対する操作画面の表示に関する情報を管理する。UIカスタマイズ部360は、各アプリケーションの操作画面のカスタマイズ処理を制御する。
デバイスサービス層40は、機能実現層30における各フィルタから共通に利用される下位機能が実装されている部分であり、データ管理部410を有する。データ管理部410は、各種のデータベースである。
デバイス制御層50は、複合機1が有するデバイス毎に設けられたデバイスを制御する手段を有する。
ところで、図2において、ユーザインタフェース層10は、コピーアプリUI111、送信アプリUI112、読取UI121、文書編集UI122、印刷UI123、及びメール送信UI124等のUIコンポーネントを含む。ここで、UIコンポーネントとは、機能実現層30におけるアプリケーション又はフィルタの表示に関する処理を行うコンポーネントであり、それぞれアプリケーション又はフィルタと対をなす。
アプリケーションに対応するUIコンポーネントを特に「アプリUIコンポーネント」という。同図では、コピーアプリUI111及び送信アプリUI112がアプリUIコンポーネントとして例示されている。すなわち、コピーアプリUI111は、コピーアプリケーション301のUIコンポーネントである。送信アプリUI112は、送信アプリケーション302のUIコンポーネントである。
一方、フィルタに対応するUIコンポーネントを特に「フィルタUIコンポーネント」という。同図では、読取UI121、文書編集UI122、印刷UI123、及びメール送信UI124がフィルタUIコンポーネントとして例示されている。すなわち、読取UI121、文書編集UI122、印刷UI123、メール送信UI124は、それぞれ読取フィルタ311、文書編集フィルタ321、印刷フィルタ331、メール送信フィルタ323のUIコンポーネントである。
なお、同図では、一部のアプリケーション又はフィルタに対するUIコンポーネントについては便宜上省略されている。
以下、複合機1の処理手順について説明する。図4は、UIコンポーネントのインストール処理の処理手順を説明するためのシーケンス図である。同図では、読取UI121、文書編集UI122、印刷UI123、及びコピーアプリUI111のインストール処理について説明する。なお、UIコンポーネントのインストールは、対応するアプリケーション又はフィルタのインストールに伴って実行されるが、同図ではアプリケーション及びフィルタのインストール手順については省略している。
読取UI121は、プラグイン管理部210によってインストールされると(S101)、自らが有する又は自らに関連付けられている(例えば、共にパッケージ化されている)表示可能情報及び表示対象情報を表示管理部350に対して登録する(S102)。表示可能情報とは、フィルタに対する設定項目として操作画面上に表示させることができる全ての設定項目(換言すれば、フィルタに設定可能な全ての設定項目)の構成が定義された情報である。表示対象情報とは、表示可能情報のうち、初期状態(操作画面がカスタマイズされていない状態)において実際に表示対象とする設定項目の構成が定義された情報である。
図5は、読取UIの表示可能情報の例を示す図である。同図ではXML(eXtensible Markup Language)形式で記述された例が示されている。
同図において、表示可能情報は、function要素をルート要素とする。function要素のname属性の値は、当該表示可能情報が対応するUIコンポーネントの識別子(コンポーネント名)を示す。すなわち、「scanui」は、読取UI121のコンポーネント名を示す。
function要素は、一つ以上のitem要素を子要素として含む。一つのitem要素は一つの設定項目に対応する。item要素の値は、対応する設定項目の識別子を示す。また、item要素のstring属性の値は、対応する設定項目の表示文字列を示す。同図では、3つのitem要素(「原稿サイズ」、「原稿面」、「解像度」)が定義されている。したがって、読取UI131としては(読取フィルタ311の設定項目としては)、3つの設定項目が表示可能であることが分かる。
また、図6は、読取UIの表示対象情報の例を示す図である。表示対象情報の書式は表示可能情報の書式とほぼ同様である。但し、表示対象情報は、function要素の子要素としてname要素を含む。name要素の値(「読取設定」)は、表示対象情報において表示対象とされた設定項目の集合に対する名前である。
なお、同図の表示対象情報では、表示可能情報における3つのitem要素のうち2つのitem要素のみがfunction要素の子要素とされている。すなわち、当該表示対象情報では、2つの設定項目(「原稿サイズ」、「原稿面」)のみを初期状態において表示対象とすることが定義されている。
なお、続いて実行される他のフィルタUIコンポーネントのインストール処理においても読取UI121と同様に、それぞれの表示可能情報及び表示対象情報が表示管理部350に登録される(S104〜109)。ここで、文書編集UI122の表示可能情報には「変倍率」及び「画質」が、表示対象情報には「画質」が設定項目として含まれていることとする。また、印刷UI123の表示可能情報には濃度、トレイ選択、及び印刷方向が、表示対象情報には「濃度」が設定項目として含まれていることとする。表示管理部350は、登録された表示可能情報及び表示対象情報を、例えば、HDD633に保存して管理する。
続いて、プラグイン管理部210によってコピーアプリUI111のインストールが実行されると(S110)、コピーアプリUI111は、自らが有する又は自らに関連付けられている(例えば、共にパッケージ化されている)利用情報を表示管理部350に登録する(S111)。ここで、利用情報とは、アプリUIコンポーネントとフィルタUIコンポーネントとの利用関係が定義された情報である。すなわち、複合機1におけるアプリケーションは、複数のフィルタを組み合わせることによって構成される。したがって、アプリケーションとフィルタとの間には利用関係が存在する(例えば、コピーアプリケーション301は、読取フィルタ311、文書編集フィルタ321、及び印刷フィルタ331を利用する)。斯かる利用関係はユーザインタフェースに対しても影響し、アプリUIコンポーネントとフィルタUIコンポーネントとの利用関係となって現れる。
図7は、コピーアプリUIの利用情報の例を示す図である。同図ではXML形式で記述された例が示されている。
同図において、利用情報は、component要素をルート要素とする。component要素のname属性の値は、当該利用情報が対応するアプリUIコンポーネントの識別子(コンポーネント名)を示す。すなわち、「copyaplui」は、コピーアプリUI111のコンポーネント名を示す。
component要素は、一つ以上のsubcomponent要素を子要素として含む。subcomponent要素の値は、当該アプリUIコンポーネント(コピーアプリUI111)によって利用されるフィルタUIコンポーネントのコンポーネント名を示す。同図では、3つのsubcomponent要素(scanui、editui、printui)が定義されている。これらは、読取UI121、文書編集UI122、印刷UI123に対応する。
なお、表示管理部350は、登録された利用情報を、例えば、HDD633に保存して管理する。以上の処理において表示管理部350に登録された情報の構成に示すと次のようになる。
図8は、表示管理部に登録された情報の構成を示す図である。同図に示されるように、コピーアプリUI111の利用情報において、コピーアプリUI111は読取UI121、文書編集UI122、及び印刷UI123を利用することが定義されている。また、読取UI121の表示可能情報において、原稿サイズ、原稿面、及び解像度の設定項目が表示可能であることが定義されている。更に、読取UI121の表示対象情報において、原稿サイズ及び原稿面の設定項目が表示対象であることが定義されている。なお、文書編集UI122及び印刷UI123の表示可能情報及び表示対象情報の図示については便宜上省略されている。
ステップS111に続いて、コピーアプリUI111は、利用情報において1番目に利用対象として定義されているフィルタUIコンポーネント(読取UI121)の表示対象情報を読取UI121のコンポーネント名に基づいて表示管理部350より取得する(S112)。続いて、コピーアプリUI111は、取得された表示対象情報に含まれている設定項目をコピーアプリUI111の「カテゴリ1」に登録する(対応付ける)ことを表示管理部350に要求する(S113)。また、この際、コピーアプリUI111は、当該表示対象情報のname要素の値(図6によれば、「読取設定」)をカテゴリ1の名前(カテゴリ名)とすることを表示管理部350に登録する。
ここで、「カテゴリ」とは、アプリケーションの操作画面を構成する複数のシートの中の一つのシートにする対応する概念(単位)である。すなわち、ステップS113における要求は、コピーアプリケーション301の操作画面の1番目のシートに読取UI121の表示対象情報に含まれている設定項目を割り当てることを意味する。
同様に、コピーアプリUI111は、利用する他のフィルタUIコンポーネントの表示対象情報に含まれている設定項目及びname要素の値をそれぞれ異なるカテゴリに登録する(それぞれ異なるシートに割り当てる)。すなわち、ステップS114において、コピーアプリUI111は、利用情報において2番目に利用対象として定義されているフィルタUIコンポーネント(文書編集UI122)の表示対象情報を文書編集UI122のコンポーネント名に基づいて表示管理部350より取得する(S114)。続いて、コピーアプリUI111は、取得された表示対象情報に含まれている設定項目及びname要素の値をコピーアプリUI111の「カテゴリ2」に登録することを表示管理部350に要求する(S115)。また、コピーアプリUI111は、利用情報において3番目に利用対象として定義されているフィルタUIコンポーネント(印刷UI123)の表示対象情報を印刷UI123のコンポーネント名に基づいて表示管理部350より取得する(S116)。続いて、コピーアプリUI111は、取得された表示対象情報に含まれている設定項目及びname要素の値をコピーアプリUI111の「カテゴリ3」に登録することを表示管理部350に要求する(S117)。
なお、表示管理部350は、登録が要求された情報(設定項目とカテゴリとの対応付け情報)をカテゴリごとにHDD633に保存する。
続いて、コピーアプリUIは、自らが利用するフィルタUIコンポーネント(読取UI121、文書編集UI122、印刷UI123)ごとに未分類のカテゴリ(読取未分類、文書編集未分類、印刷未分類)を表示管理部350に登録する(S118〜S120)。なお、未分類のカテゴリの存在意義については後述する。
ステップS112〜S120の処理によって、コピーアプリUIに対して以下のようなカテゴリ情報が表示管理部350に登録されたことになる。
図9は、コピーアプリUIに対して登録されたカテゴリ情報を示す図である。同図に示されるように、コピーアプリUI111には、カテゴリ1、カテゴリ2、カテゴリ3、読取未分類、文書編集未分類、及び印刷未分類のカテゴリが登録されている。このうち、カテゴリ1にはカテゴリ名として「読取設定」が、設定項目として「原稿サイズ」及び「原稿面」が登録されている。また、カテゴリ2にはカテゴリ名として「文書編集設定」が、設定項目として「変倍率」が登録されている。また、カテゴリ3にはカテゴリ名として「印刷設定」が、設定項目として「濃度」が登録されている。一方、この段階において各未分類のカテゴリには何も登録されていない。
なお、図4においてコピーアプリUI111に係る処理は、各アプリUIコンポーネントがインストールされる際に同様に実行される。したがって、例えば、送信アプリUI12がインストールされる際は、送信アプリUI112に対するカテゴリ1、カテゴリ2、カテゴリ3が登録される。また、送信アプリUI112が利用するフィルタUIコンポーネントごとの未分類のカテゴリ(読取未分類、文書編集未分類、及びメール送信未分類)も登録される。
また、表示管理部350は、各カテゴリの登録に応じて、設定項目ごとにいずれのカテゴリに属しているかを示す情報(以下、「逆引き情報」)という。)を生成し、HDD633に保存する。
図10は、逆引き情報を示す図である。同図は、図9に対応する逆引き情報である。同図に示されるように、逆引き情報によれば、表示対象とされている各設定項目がいずれのカテゴリに属しているかを効率的に特定することができる。
続いて、アプリケーションの操作画面の生成処理の処理手順について説明する。図11は、コピーアプリケーションの操作画面の生成処理の処理手順を説明するためのシーケンス図である。
例えば、利用者によってオペレーションパネル602介してコピーアプリケーション301の操作画面(コピー画面)の表示要求が入力されると、コピーアプリUI111は、コピーアプリUI111に対して登録されているカテゴリの一覧情報を表示管理部350より取得する(S201)。ここでは、図9に示されるように、カテゴリ1、カテゴリ2、カテゴリ3、読取未分類、文書編集未分類、印刷未分類を含む一覧が取得される。
続いて、コピーアプリUI111は、取得された一覧情報に含まれているカテゴリごとに(カテゴリ別に)、当該カテゴリに対応する画面(シート)の生成を行う。まず、コピーアプリUI111は、カテゴリ1に登録されたカテゴリ情報を表示管理部350より取得する(S202)。続いて、コピーアプリUI111は、取得されたカテゴリ情報に含まれている設定項目を表示対象としてカテゴリ1に対応するシートの生成を行う(S203)。この際、コピーアプリUI111は、当該シートの見出し(タブ)の表示文字列を、当該カテゴリのカテゴリ名とする。カテゴリ2及びカテゴリ3についても同様に、コピーアプリUI111は、それぞれに登録されたカテゴリ情報に基づいてシート及びそのタブを生成する(S204〜S207)。
続いて、コピーアプリUI111は、各未分類のカテゴリ(ここでは、読取UI未分類、文書編集UI未分類、及び印刷UI未分類)に登録されている情報を表示管理部350より取得する(S208〜S210)。続いて、コピーアプリUI111は、各未分類のカテゴリより取得された情報を集約し、集約した情報(設定項目)を表示させる一つの未分類のシートを生成する(S211)。この際、コピーアプリUI111は、当該シートのタブの表示文字列を「未分類」とする。すなわち、未分類のカテゴリについては、それぞれについてシートが生成されるのではなく、複数の未分類に対して一つのシートが生成される。なお、この段階では、図9に示されるように、各未分類のカテゴリには何も登録されていない。したがって、空のシートが生成される。
続いて、コピーアプリUI111は、生成された各シートを含むコピー画面をオペレーションパネル602に表示させる(S212)。
図12は、コピー画面の表示例を示す図である。同図のコピー画面500において、破線510で囲まれる領域が、カスタマイズ可能な領域(以下、「カスタマイズ領域510」という。)であり、図11においてその生成手順を説明した領域である。
カスタマイズ領域510は、カテゴリ一覧表示領域520とカテゴリ表示領域530とを含む。カテゴリ一覧表示領域520には、各カテゴリに対して生成されたシートのタブが配列されている。同図では、「読取設定」、「文書編集設定」、「印刷設定」、及び「未分類」の4つタブが表示されている。これらは、それぞれ、図11のステップ203、S205、S207、S211において生成されたシートに対するタブである。
カテゴリ表示領域530には、タブの操作によって現在選択されているシートが表示される領域である。同図では、読取設定タブが選択された状態が示されている。したがって、カテゴリ1に登録されている設定項目に対応する表示部品(ボタン531及び532)が表示されている。
続いて、カスタマイズ領域510のカスタマイズ(すなわち、カテゴリと設定項目との対応関係の編集)について説明する。当該カスタマイズは、オペレーションパネル602に表示されるカスタマイズ画面を介して行われる。
図13は、コピーアプリケーションのカスタマイズ画面の表示例を示す図である。同図のカスタマイズ画面710において、711は、カテゴリ1(読取設定カテゴリ)に対するカスタマイズ領域である。712は、カテゴリ2(文書編集設定カテゴリ)に対するカスタマイズ領域である。713は、カテゴリ3(印刷設定カテゴリ)に対するカスタマイズ領域である。各カスタマイズ領域には、表示対象として選択可能な設定項目ごとに行が表示される。また、各行は、設定項目名表示領域714とチェック領域715とを含む。チェック領域715は、当該設定項目を表示対象とするか否かを選択させるための領域である。例えば、カテゴリ1(読取設定カテゴリ)では、原稿サイズ、原稿面、及び解像度を表示対象とすることが可能であり、そのうち、原稿サイズ及び原稿面が表示対象として選択されている。
一方、設定項目表示領域714は、設定項目名を表示させると共に、当該設定項目が属するカテゴリを変更させるための領域である。具体的には、いずれかの行の設定項目表示領域714が選択されると、次のような画面がオペレーションパネル602に表示される。
図14は、カテゴリ選択画面の表示例を示す図である。同図において、カテゴリ選択画面720は、コピーアプリUI111に対するカテゴリごとにチェック領域を有する。いずれかのチェック領域が選択(チェック)されると、カスタマイズ画面710において選択されている行に係る設定項目は選択されたカテゴリに移動する。例えば、図13のカスタマイズ画面710において解像度が選択され、カテゴリ選択画面720において印刷設定カテゴリが選択されると、カスタマイズ画面710の表示状態は次のように更新される。
図15は、設定項目のカテゴリの変更後のカスタマイズ画面の表示例を示す図である。同図では、解像度が印刷設定カテゴリのカスタマイズ領域713内に移動している。
なお、カスタマイズ画面710において、カテゴリの行(「読取設定」、「編集設定」、「印刷設定」が表示されている行)が選択されると、当該カテゴリのカテゴリ名を変更させる画面を表示させ、当該画面に入力された名前によって、カテゴリ名を更新可能としてもよい。
このように、カスタマイズ画面710では、設定項目ごとにボタンの表示又は非表示の設定が可能であるばかりでなく、各設定項目のボタンの表示場所をカテゴリを跨いで(すなわち、シート(画面)を跨いで)変更することができる。すなわち、コピーアプリUI111のインストール直後においては、コピーアプリUI111が利用するフィルタUIコンポーネントに対応させてカテゴリが登録された。しかし、カスタマイズ画面710等によって可能なカスタマイズ方法より明らかなように、カテゴリは、必ずしも各フィルタUIコンポーネントに対応するものではなく、別の単位(ユーザの任意の単位)によって分類されるものである。したがって、各設定項目は、いずれのフィルタUIコンポーネントに対するものであるに関係せず、自由にカテゴリを変更することができる。このように、本実施の形態における複合機1では、自由度の高いカスタマイズが可能とされている。
以下、上記において説明したカスタマイズを実現するために複合機1が実行する処理手順について説明する。図16は、カスタマイズ画面の表示処理及びカスタマイズ処理の処理手順を説明するためのシーケンス図である。
オペレーションパネル602を介してユーザによってコピー画面のカスタマイズ要求が入力されると、UIカスタマイズ部360は、表示管理部350よりコピーアプリUI111に対して登録されている利用情報(図7参照)を取得する(S301)。続いて、UIカスタマイズ部360は、利用情報において利用対象として定義されている各フィルタUIコンポーネントに対して登録されている表示可能情報(図5参照)を取得する(S302〜S304)。ここでは、読取UI121、文書編集UI122、印刷UI123のそれぞれの表示可能情報が取得される。
続いて、UIカスタマイズ部360は、コピーアプリUI111に対して登録されているカテゴリの一覧情報を表示管理部350より取得する(S305)。続いて、UIカスタマイズ部360は、取得された一覧情報に含まれているカテゴリごとにカテゴリ情報(カテゴリ名、カテゴリに属する設定項目に関する情報)を取得する(S306〜S311)。ここでは、図9に示される情報(すなわち、カテゴリ1、カテゴリ2、カテゴリ3、読取未分類、文書編集未分類、印刷未分類のカテゴリ情報)が取得される。
続いて、UIカスタマイズ部360は、複数の未分類のカテゴリ情報を一つのカテゴリ(未分類)にマージする(S312)。続いて、UIカスタマイズ部360は、カスタマイズ画面710(図13参照)を生成し、オペレーションパネル602に表示させる(S313)。カスタマイズ画面710は、次のように生成される。まず、UIカスタマイズ部710は、ステップS302〜S304において取得された表示可能情報に含まれている設定項目を、コピーアプリUI111に属する未分類以外のカテゴリ1〜3のそれぞれにおいて選択可能な設定項目(選択肢)とする。この際、UIカスタマイズ部360は、ステップS302〜S304における取得順(すなわち、利用情報におけるフィルタUIコンポーネントの定義順)に表示可能情報をカテゴリ1〜3に割り当てる。したがって、カテゴリ1には読取UI121の表示可能情報の設定項目が、カテゴリ2には文書編集UI122の表示可能情報の設定項目が、カテゴリ3には印刷UI123の表示可能情報の設定項目が選択肢として割り当てられる。
続いて、UIカスタマイズ部360は、各カテゴリについて、選択肢とした割り当てられた設定項目のうち、ステップS306〜S308において取得されたカテゴリ情報に含まれている設定項目を選択状態とする。この際、カテゴリ情報に含まれている設定項目が対応するカテゴリの選択肢として含まれていない可能性がある。既に行われたカスタマイズによって、設定項目はカテゴリを跨いで移動されている可能性があるからである。このような場合、UIカスタマイズ部360は、各カテゴリの選択肢をカテゴリ情報によって修正する。具体的には、例えば、読取UI121の表示可能情報に設定項目として含まれている解像度がカテゴリ3に移動されている場合。UIカスタマイズ部360は、解像度をカテゴリ1の選択肢から除去し、カテゴリ3の選択肢として追加するとともに選択状態とする。
また、未分類については、一つの未分類にマージされた設定項目を選択肢とする。但し、この時点では、未分類には何も登録されていないため、未分類の表示は省略される。
以上の処理の後、UIカスタマイズ部360は、図13に示されるように、カスタマイズ画面710を表示させる。
続いて、カスタマイズ画面710を介して、チェック領域715の操作により表示対象とする設定項目が更新されると(S314)、UIカスタマイズ部360は、当該更新を表示管理部350によって管理されているカテゴリ情報に反映させる(S315)。例えば、或る設定項目がチェックされた場合、UIカスタマイズ部360は、当該設定項目が属するカテゴリ情報に対して当該設定項目を表示対象として追加する。一方、或る設定項目のチェックが解除された場合、UIカスタマイズ部360は、当該設定項目が属するカテゴリ情報より当該設定項目を削除する。
また、カテゴリ画面710において或る設定項目が選択され、カテゴリ変更画面720(図14参照)等を介して当該設定項目のカテゴリが変更された場合(S316)、UIカスタマイズ360は、当該設定項目についてカテゴリ情報を更新する(S317)。すなわち、当該設定項目を移動元のカテゴリより削除し、移動先のカテゴリに追加登録する。また、UIカスタマイズ部360は、当該設定項目の逆引き情報を更新する(S318)。すなわち、移動元のカテゴリを逆引き情報より削除し、移動先のカテゴリを逆引き情報に追加する。
続いて、或るフィルタに対して、機能拡張が行われた場合について説明する。各フィルタは、予め動的に(ソースコードを変更することなく)機能拡張が可能なように拡張点を有している。当該拡張点は、具体的には、所定のフォルダ内に所定の機能拡張用コンポーネント(例えば、動的にリンク可能なライブラリ)が存在する場合、当該所定のコンポーネントに含まれている所定の関数を呼び出すといった実装である。すなわち、フィルタ側が備えているインタフェースに従った関数を有する当該所定の機能拡張用コンポーネントを生成することにより、各フィルタの機能拡張を行うことができる。
このような機能拡張が行われた場合、当該機能拡張に関する設定も操作画面上で可能とする必要がある。以下では、斯かる機能を可能とした例について説明する。なお、本実施の形態では、印刷フィルタ331に対してマーキング埋め込みの機能拡張を行うコンポーネント(以下、「マーキングコンポーネント」という。)がインストールされた場合を例とする。この場合、マーキングコンポーネントと共に、マーキングコンポーネントの設定項目に対応するUIコンポーネントであるマーキングUIもインストールされる。なお、マーキング埋め込みとは、印刷媒体に対して所定の目的(印刷媒体の識別、コピー抑止)に対応したマーキングを行う(バーコード、地紋等を印字する)する機能をいう。
図17は、マーキングUIのインストール処理を説明するためのシーケンス図である。
プラグイン管理部210によってマーキングUI125がインストールされると(S401)、マーキングUI125は、印刷UI123の表示可能情報に対するマーキングUI125の設定項目(「埋め込み方式」)の追加登録を表示管理部350に要求する(S402)。当該要求に応じ、表示管理部350は、保存されている印刷UI123の表示可能情報に「埋め込み方式」を設定項目として追加する。
続いて、マーキングUI125は、印刷未分類のカテゴリ情報に対する当該設定項目(「埋め込み方式」)の追加を表示管理部350に要求する(S403)。当該要求に応じ、表示管理部350は、保存されている印刷未分類に係るカテゴリ情報に対して当該設定項目を追加する。なお、印刷未分類のカテゴリは、印刷UI123を利用するアプリケーションごとに生成される。したがって、複数の印刷未分類が表示管理部350に登録されている場合がある。この場合、全ての印刷未分類に対して当該設定項目が追加される。
また、表示管理部350は、マーキングUI125の設定項目について逆引き情報を生成する(S404)。当該逆引き情報では、当該設定項目に対して、一つ以上の印刷未分類のカテゴリが関連付けられる。
ところで、拡張機能として新たに追加された機能に対する設定項目を未分類のカテゴリに追加するのは、以下の理由による。
本実施の形態では、各カテゴリについて表示対象とする設定項目を自由に設定することができる。したがって、各カテゴリには、表示対象とする設定項目がユーザの明確な意志によって設定されている可能性がある。また、各カテゴリと各フィルタUIコンポーネントとの対応関係は必ずしも明確ではない。更に、各フィルタは、複数のアプリケーションから利用されることがあり、フィルタに対する機能拡張による設定項目の追加は、当該フィルタを利用する全てのアプリケーションに対して等しく行われることが望ましい。
このような状況において、マーキングUI125に対する設定項目をいずれのカテゴリに登録するのが最もユーザの意図に沿うのかを自動的に判定するのは非常に困難である。しかしながら、当該設定項目はいずれかのカテゴリに登録されない限り操作画面に表示されない。
そこで、本実施の形態では、「未分類」というカテゴリを予め用意(アプリケーションのインストール時に生成)し、機能拡張等が行われることにより設定項目を追加する必要がある場合は、当該設定項目をとりあえず未分類のカテゴリに追加するようにしているのである。
したがって、図17の処理の終了後、改めてコピー画面500を表示させ、未分類のシートを表示させると「埋め込み方式」の設定項目に対応したボタンが表示させる。なお、ステップS403において説明したように、当該設定項目は、全ての印刷未分類に対して追加されため、コピーアプリケーション301以外で印刷フィルタ331を利用するアプリケーションが有れば、斯かるアプリケーションの操作画面の未分類のシートにも、「埋め込み方式」の設定項目は表示される。
このように、新たに追加された機能を未分類に登録することで、ユーザによって設定されている各カテゴリの表示対象を変更することなく、新たに追加された機能に対する設定項目を表示対象とすることができる。
なお、マーキングUI125のインストール後、コピー画面500のカスタマイズを行う場合、カスタマイズ画面710は、図16の処理の結果、次のように表示される。
図18は、マーキングUIのインストール後のカスタマイズ画面の表示例を示す図である。図18中、図13と同一部分には同一符号を付している。
同図のカスタマイズ画面710には、未分類のカスタマイズ領域716が追加されている。また、カスタマイズ領域716には、「埋め込み方式」が設定項目として含まれている。カスタマイズ領域716は、印刷未分類のカテゴリ情報に基づいて表示されたものである。
ここで、「埋め込み方式」を選択し、カテゴリ変更画面720において印刷設定カテゴリを選択すると、カスタマイズ画面710は次のように変化する。
図19は、マーキングUIの設定項目のカテゴリの変更後のカスタマイズ画面の表示例を示す図である。同図に示されるように、「埋め込み方式」は、印刷設定カテゴリのカスタマイズ領域713に移動している。
続いて、UIコンポーネントのアンインストール時の処理手順について説明する。図20は、マーキングUIのアンインストール時の処理手順を説明するためのシーケンス図である。
マーキングUI125は、プラグイン管理部210よりアンインストールが通知されると(S501)、マーキングUI125の設定項目(「埋め込み方式」)が属するカテゴリを表示管理部350に問い合わせる(S502)。表示管理部350は、当該設定項目に対して保存されている逆引き情報に基づいて当該設定項目が属するカテゴリ名の一覧を返却する。
続いて、マーキングUI125は、取得されたカテゴリ名に対応するカテゴリ情報を表示管理部350より取得し(S503)、当該カテゴリ情報よりマーキングUI125の設定項目を削除する(S504)。続いて、マーキングUI125は、更新されたカテゴリ情報を表示管理部350に登録し直す(S505)。なお、ステップS503〜S505は、マーキングUI125の設定項目が属する全てのカテゴリに関して行われる。
続いて、マーキングUI125は、印刷UI123の表示可能情報を表示管理部350より取得する(S506)。続いて、マーキング部125は、取得された表示可能情報よりマーキングUI125の設定項目を削除する(S507)。続いて、マーキング部125は、更新された表示可能情報を表示管理部350に登録し直す(S508)。
以上の処理によって、マーキングUI125の設定項目は、各カテゴリより削除される。したがって、マーキングUI125のアンインストール後に、その設定項目が表示されるという不整合の発生が防止される。
上述したように、本実施の形態における複合機1によれば、各設定項目に対応する表示部品(ボタン等)について、単なる表示又は非表示の変更のみならず、画面を跨いで表示場所を変更させることができる。したがって、画面のカスタマイズの自由度を向上させることができる。
但し、斯かるカスタマイズの柔軟性の向上により、各画面の位置付け(意味)が曖昧になってしまう可能性がある。そこで、本実施の形態では、「未分類」という、いわば固定的なカテゴリを用意し、新たな機能(コンポーネント)の追加時には当該未分類にその設定項目を追加するようにしている。したがって、ユーザによるカスタマイズ結果がユーザの意図に反して自動的に更新されることが回避される。
なお、本実施の形態では、表示可能情報と表示対象情報とを明確に区別しているが、フィルタ等のインストール当初から全ての設定項目を表示させてもよいのであれば、表示対象情報は必ずしも必要ではない。表示対象情報が無い場合、表示可能情報を表示対象情報の代わりに用いればよい。
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。