以下、本発明の実施の形態について図面を参照して説明する。以下の説明では同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
図1は、本実施の形態の一つにおける画像形成システムの全体概要の一例を示す図である。図1を参照して、画像形成システムは、画像形成装置として機能するMFP(Multi Function Peripheral)100と、サーバー200と、を含む。MFP100と、サーバー200とは、ネットワーク5に接続され、互いに通信可能である。
ネットワーク5は、インターネットであり、接続形態は有線または無線を問わない。また、ネットワーク5は、インターネットに限らず、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、公衆交換電話網(PSTN)等であってもよい。
サーバー200は、一般的なコンピューターである。そのハードウェア構成および機能は周知なので、ここでは説明を繰り返さない。サーバー200は、MFP100を製造するメーカー等により管理され、MFP100で実行されるアプリケーションインターフェースコマンドを記憶している。アプリケーションインターフェースコマンドは、APIコマンド(Application Program Interface)コマンドとして、公開されたコマンドである。以下、アプリケーションインターフェースコマンドを単に「APIコマンド」という。公開とは、MFP100を製造するメーカー以外の第三者が使用可能な状態をいう。このため、第三者は、APIコマンドを用いてMFP100にインストール可能なアプリケーションプログラムを開発することができる。
図2は、MFPの外観を示す斜視図である。図3は、操作パネルの一例を示す平面図である。図2および図3を参照して、MFP100は、原稿を読み取るための原稿読取部130と、原稿を原稿読取部130に搬送するための自動原稿搬送装置120と、原稿読取部130が原稿を読み取って出力する画像データに基づいて用紙等に画像を形成するための画像形成部140と、画像形成部140に用紙を供給するための給紙部150と、ユーザーインターフェースとしての操作パネル160とを含む。
操作パネル160は、MFP100の上面に設けられる。操作パネル160は、表示部161と、タッチパネル165と、ハードキー部167とを含む。表示部161は、例えば、液晶表示装置(LCD)であり、ユーザーに対する指示メニューや取得した画像データに関する情報等を表示する。ユーザーがMFP100を操作する場合は直立した姿勢となるので、表示部161の表示面およびタッチパネル165の操作面は、上方を向いて配置される。ユーザーが表示部161の表示面を容易に視認することができ、ユーザーが指でタッチパネルを指示する動作を容易にするためである。
ハードキー部167は、「BOX」、「FAX」、「COPY」、「ECO」の文字がそれぞれ表された4つのハードキー167A〜167Dを含む。タッチパネル165は、表示部161の上面または下面に表示部161に重畳して設けられたマルチタッチ対応のタッチパネルであり、表示部161の表示面中でユーザーにより指示された位置を検出する。ユーザーがタッチパネル165を指示する操作は、タッチパネル165を、同時に複数個所を指で指示するマルチタッチ操作と、一度に1つの個所を指で指示するシングルタッチ操作と、を含む。
自動原稿搬送装置120は、原稿給紙トレイ上にセットされた複数枚の原稿を1枚ずつ自動的に原稿読取部130のプラテンガラス上に設定された所定の原稿読み取り位置まで搬送し、原稿読取部130により原稿画像が読み取られた原稿を原稿排紙トレイ上に排出する。原稿読取部130は、原稿読取位置に搬送されてきた原稿に光を照射する光源と、原稿で反射した光を受光する光電変換素子とを含み、原稿のサイズに応じた原稿画像を走査する。光電変換素子は、受光した光を電気信号である画像データに変換して、画像形成部140に出力する。給紙部150は、給紙トレイに収納された用紙を画像形成部140に搬送する。
画像形成部140は、周知の電子写真方式により画像を形成するものであって、原稿読取部130から入力される画像データにシェーディング補正などの各種のデータ処理を施した、データ処理後の画像データまたは、外部から受信された画像データに基づいて、給紙部150により搬送される用紙に画像を形成する。
図4は、MFPのハードウェア構成の概要の一例を示すブロック図である。図4を参照して、MFP100は、メイン回路110を含む。メイン回路110は、CPU111と、通信インターフェース(I/F)部112と、ROM(Read Only Memory)113と、RAM(Random Access Memory)114と、大容量記憶装置としてのハードディスクドライブ(HDD)115と、ファクシミリ部116と、外部記憶装置117と、を含む。CPU111は、自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150および操作パネル160と接続され、MFP100の全体を制御する。
ROM113は、CPU111が実行するプログラム、またはそのプログラムを実行するために必要なデータを記憶する。RAM114は、CPU111がプログラムを実行する際の作業領域として用いられる。また、RAM114は、原稿読取部130から連続的に送られてくる読取画像を一時的に記憶する。
ファクシミリ部116は、公衆交換電話網(PSTN)に接続され、PSTNにファクシミリデータを送信する、またはPSTNからファクシミリデータを受信する。ファクシミリ部116は、受信したファクシミリデータを、HDD115に記憶するか、または、画像形成部140でプリント可能なプリントデータに変換して、画像形成部140に出力する。これにより、画像形成部140は、ファクシミリ部116により受信されたファクシミリデータを用紙に画像を形成する。また、ファクシミリ部116は、原稿読取部130によって読み取られたデータ、またはHDD115に記憶されたデータをファクシミリデータに変換して、PSTNに接続されたファクシミリ装置に送信する。
通信I/F部112は、ネットワーク5にMFP100を接続するためのインターフェースである。通信I/F部112は、TCP(Transmission Control Protocol)またはFTP(File Transfer Protocol)等の通信プロトコルで、ネットワークに接続された他のコンピューターと通信する。なお、通信のためのプロトコルは、特に限定されることはなく、任意のプロトコルを用いることができる。
外部記憶装置117は、CPU111により制御され、CD−ROM(Compact Disk Read Only Memory)118、または半導体メモリーが装着される。CPU111は、外部記憶装置117を介してCD−ROM118または半導体メモリーにアクセス可能である。CPU111は、外部記憶装置117に装表されたCD−ROM118に記録されたプログラムをRAM114にロードして実行する。なお、CPU111が実行するプログラムは、CD−ROM118に記録されたプログラムに限られず、HDD115に記憶されたプログラムをRAM114にロードして実行するようにしてもよい。この場合、通信I/F部112に接続されるネットワークを介して、ネットワークに接続された他のコンピューターが、MFP100のHDD115に記憶されたプログラムを書換える、または、新たなプログラムを追加して書き込むようにしてもよい。さらに、MFP100が、ネットワークに接続された他のコンピューターからプログラムをダウンロードして、そのプログラムをHDD115に記憶するようにしてもよい。ここでいうプログラムは、CPU111が直接実行可能なプログラムだけでなく、ソースプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
なお、CPU111が実行するプログラムを記憶する媒体としては、CD−ROM118に限られず、光ディスク(MO(Magnetic Optical Disc)/MD(Mini Disc)/DVD(Digital Versatile Disc))、ICカード、光カード、マスクROM、EPROM(Erasable Programable ROM)、EEPROM(Electrically EPROM)などの半導体メモリーであってもよい。
操作パネル160は、表示部161と操作部163とを含む。表示部161は、液晶表示装置(LCD)、有機ELD(Electro−Luminescence Display)等のディスプレイであり、ユーザーに対する指示メニューや取得した画像データに関する情報等を表示する。操作部163は、タッチパネル165と、複数のキーからなるハードキー部167と、を含む。ハードキー部167が含む複数のキーそれぞれは、接点スイッチを含み、CPU111に接続される。ハードキーは、操作ユーザーにより押下されると接点を閉じて、CPU111に接続される回路を閉じる。ハードキーは、MFP100を操作する操作ユーザーにより押下されている間は回路を閉じ、操作ユーザーにより押下されていない間は回路を開く。
操作部163は、ハードキー部167が有する複数のキーが押下されると、押下されたキーに対応する指示、文字、数字などのデータの入力を受け付ける。タッチパネル165は、表示部161の上面または下面に設けられ、操作ユーザーにより指示された位置の座標をCPU111に出力する。タッチパネル165は、操作ユーザーが指またはスタイラスペンで指示した位置を検出し、検出した位置の座標をCPU111に出力する。タッチパネル165は、マルチタッチ対応のタッチパネルであり、ユーザーがマルチタッチ操作を入力する場合、ユーザーにより同時に指示された複数の位置にそれぞれ対応する複数の座標をCPU111に出力する。また、タッチパネル165は、ユーザーがシングルタッチ操作を入力する場合に、ユーザーにより指示された単一の位置に対応する座標をCPU111に出力する。
タッチパネル165は、表示部161の表示面と同じまたはそれ以上のサイズであるのが好ましい。タッチパネル165は、表示部161に重畳して設けられるので、タッチパネル165は、操作ユーザーが表示部161の表示面を指示すれば、表示部161の表示面中で操作ユーザーが指示した位置の座標をCPU111に出力する。タッチパネル165は、例えば、抵抗膜方式、表面弾性波方式、赤外線方式、電磁誘導方式、静電容量方式を用いることができ、その方式は限定されない。操作部163が受け付け可能な操作は、ハードキー部167が有する複数のキーを押下する操作、タッチパネル165を指示するシングルタッチ操作およびマルチタッチ操作を含む。
図5は、MFPが備えるCPUのソフトウェアアーキテクチャの一例を示す図である。図5を参照して、CPU111には、オペレーティングシステム(OS)層が形成され、その上の階層に、MFPプロセス層が形成される。MFPプロセス層の上層に、アプリケーションプラットフォーム(PF)層、アプリケーション層の順に形成される。
OS層は、CPU111がOSプログラムを実行するタスクが属する。OS層に属するタスクは、MFP100のハードウェア資源を制御する処理を実行する。ハードウェア資源は、ここでは、通信I/F部112、ROM113、RAM114、HDD115、ファクシミリ部116、外部記憶装置117、自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150、操作パネル160を含む。OS層に属するタスクは、MFPプロセス層から入力されるオペレーティングコマンドに従って、ハードウェア資源を制御する。また、OS層は、MFPプロセス層との間で、ハードウェア資源の1つである操作部163が受け付け可能な複数種類の操作それぞれを識別するための操作識別情報を共有しており、OS層に属するタスクは、操作部163によって操作ユーザーによる操作が検出されることに応じて、検出された操作を示す操作識別情報をMFPプロセス層に出力する。
アプリケーション層は、CPU111がアプリケーションプログラムを実行するタスクが属する。複数種類のアプリケーションプログラムがMFP100にインストールされる場合、アプリケーション層に、複数種類のアプリケーションプログラムをそれぞれ実行する複数のタスクが属する場合がある。
アプリケーションプログラムを実行するタスクは、アプリケーションプログラムによって定められた複数種類の処理を実行する。複数種類の処理は、MFPプロセス層において実行される処理をMFPプロセス層に属するタスクに実行させる処理を含む。アプリケーションプログラムを実行するタスクは、MFPプロセス層に属するタスクに処理を実行させる場合、APIコマンドを出力する。
さらに、アプリケーションプログラムを実行するタスクは、MFP100を操作する操作ユーザーが入力する操作に基づいて、アプリケーションプログラムによって定められた複数種類の処理のうちから実行する処理を特定し、処理を実行する。MFP100を操作する操作ユーザーが入力する操作は、操作ユーザーが操作部163を操作して入力することにより、OS層において受け付けられる。
アプリケーションPF層は、アプリケーション層とMFPプロセス層との間に配置され、CPU111がMFPプロセスプログラムを実行するタスクが属する。アプリケーションPF層は、アプリケーション層に属する複数のタスクを調停するとともに、アプリケーション層に属する複数のタスクが出力するAPIコマンドを制御するタスクが属する。具体的には、アプリケーションPF層は、アプリケーション層に属する複数のタスクそれぞれが出力するAPIコマンドを受け付け、受け付けられたAPIコマンドを、予め定められた規則に従って内部コマンドに変換することにより標準化し、内部コマンドをMFPプロセス層に出力する。このため、複数のアプリケーションプログラム間で、バージョンが異なる場合等に対応することができる。また、アプリケーションPF層は、アプリケーション層に属する複数のタスクのいずれか1つをカレント状態に決定する。そして、OS層において受け付けられ、MFPプロセス層に属するタスクから入力される操作を、アプリケーション層に属する複数のタスクのうちカレント状態に決定したカレントタスクに出力する。
APIコマンドと内部コマンドとは予め対応付けられている。例えば、APIコマンドと内部コマンドとを対応付けたコマンド対応テーブルを記憶しておくようにすればよい。APIコマンドと内部コマンドとは、1対1に対応してもよいし、1つのAPIコマンドに2以上の内部コマンドの組が対応していてもよい。さらに、バージョンの異なる複数のAPIコマンドに対して、1つの内部コマンド、または複数の内部コマンドからなる1組が対応していてもよい。このため、複数のアプリケーションプログラム間で、バージョンが異なる場合等に対応することができる。内部コマンドは、MFP100のハードウェア資源に依存するコマンドである。内部コマンドは、通常は、公開されていないが、公開されていてもよい。
MFPプロセス層は、アプリケーションPF層とOS層との間に配置され、CPU111が、アプリケーションPF層と同様にMFP制御プログラムを実行するタスクが属する。MFPプロセス層は、アプリケーションPF層に属するタスクが出力する内部コマンドを、OS層に属するタスクが解釈可能なオペレーティングコマンドに変換し、ハードウェア資源を制御するためにオペレーティングコマンドをOS層に属するタスクに出力する。なお、実際には、内部コマンドを、OS層に属するタスクが実行可能な1以上のオペレーティングコマンドに変換する場合があるが、ここでは説明のために、内部コマンドとOS層に属するタスクが実行可能な1以上のオペレーティングコマンドとの関係は1対1として、説明する。
上述したように、アプリケーションプログラムは、MFP100に、Webページ、画像データ等のコンテンツを表示するコンテンツ表示処理、コピー処理、スキャン処理、プリント処理、ファクシミリ送受信処理、データ送信処理、データを記憶する処理、データを読み出しする処理、画像データを加工する画像処理等を実行させるためのアプリケーションプログラムである。
図6は、MFPが備えるCPUが有する機能の一例を示すブロック図である。図6に示す機能は、MFP100が備えるCPU111が、ROM113、HDD115またはCD−ROM118に記憶されたプログラムを実行することにより、CPU111により実現される機能である。具体的には、CPU111が、OSプログラム、MFP制御プログラム、およびアプリケーションプログラムを実行することにより、CPU111により実現される。
図6を参照して、CPU111は、アプリケーションプログラムを生成する生成部51と、アプリケーションプログラムを実行するアプリケーション実行部53と、処理実行部55と、を含む。生成部51およびアプリケーション実行部53は、図5に示したソフトウェアアーキテクチャにおいてアプリケーション層に属する。処理実行部55は、図5に示したソフトウェアアーキテクチャにおいて、アプリケーションPF層、MFPプロセス層およびOS層に属する。
生成部51は、APIコマンドを取得する取得部61と、複数のAPIコマンドのうちから2以上を選択するコマンド選択部63と、画面テンプレートを決定する画面テンプレート決定部65と、表示領域設定部67と、入出力データ設定部69と、タイミング決定部71と、を含む。
取得部61は、APIコマンドをサーバー200から取得する。取得部61は、通信I/F部112を制御して、サーバー200にAPIコマンドの取得要求を送信する。HDD115に、サーバー200のネットワークアドレスを予め記憶しており、そのネットワークアドレス宛にAPIコマンドの取得要求を送信する。APIコマンドの取得要求は、MFP100を識別するための装置識別情報を含む。この装置識別情報は、具体的には、MFP制御プログラムのバージョン番号を含むと好ましい。APIコマンドの取得要求を受信するサーバー200は、取得要求に含まれる装置識別情報で特定される装置に対応をするAPIコマンドを返信する。例えば、MFP制御プログラムのバージョン番号に対応するAPIコマンドを返信する。取得部61は、通信I/F部112がサーバー200からAPIコマンドを受信すると、受信されたAPIコマンドを取得する。取得部61は、取得されたAPIコマンドをコマンド選択部63に出力する。
コマンド選択部63は、取得部61から複数のAPIコマンドが入力され、複数のAPIコマンドのうちからユーザーにより指示された2以上のAPIコマンドを選択する。具体的には、表示部161に、複数のAPIコマンドの一覧を表示し、ユーザーが操作部163に入力する指示により特定されるAPIコマンドを選択する。コマンド選択部63は、ユーザーにより選択された2つ以上のAPIコマンドを表示領域設定部67に出力する。
画面テンプレート決定部65は、画面テンプレート取得部73と、選択指示受付部75とを含む。画面テンプレート取得部73は複数の画面テンプレートをサーバー200から取得する。画面テンプレートは、複数の表示領域を含み、1つの画面に複数の表示領域それぞれを配置する位置を定める。画面テンプレート取得部73は、通信I/F部112を制御して、サーバー200に画面テンプレートの取得要求を送信する。画面テンプレートの取得要求を受信するサーバー200は、それが備えるHDDに予め記憶された複数の画面テンプレートを返信する。画面テンプレート取得部73は、通信I/F部112がサーバー200から複数の画面テンプレートを受信すると、受信された複数の画面テンプレートを取得する。画面テンプレート取得部73は、取得された複数の画面テンプレートを選択指示受付部75に出力する。なお、複数の画面テンプレートをHDD115に記憶しておき、画面テンプレート取得部73がHDD115から複数の画面テンプレートを読み出すようにしてもよい。
選択指示受付部75は、画面テンプレート取得部73から複数の画面テンプレートが入力され、複数の画面テンプレートのうちから1つの画面テンプレートを選択する指示を受け付ける。具体的には、表示部161に、複数の画面テンプレートの一覧を表示し、ユーザーが操作部163に複数の画面テンプレートのうちから1つを選択する選択指示を受け付ける。選択指示受付部75は、ユーザーによる選択指示を受け付けると、複数の画面テンプレートのうちから選択指示により特定される画面テンプレートを表示領域設定部67に出力する。
表示領域設定部67は、コマンド選択部63から2以上のAPIコマンドが入力され、選択指示受付部75から1つの画面テンプレートが入力される。表示領域設定部67は、コマンド選択部63から入力される2以上のAPIコマンドそれぞれに対して、そのAPIコマンドがアプリケーション実行部53により実行されて処理実行部55が出力する表示データを表示するための領域に、選択指示受付部75から入力される画面テンプレートに含まれる複数の表示領域のいずれかを、設定する。
具体的には、表示部161に、設定画面を表示部161に表示する。設定画面は、選択指示受付部75から入力される画面テンプレートと、コマンド選択部63から入力される2以上のAPIコマンドを選択可能なコマンド識別情報の一覧とを含む。ユーザーが操作部163に、設定画面に中の選択可能に表示された2以上のAPIコマンドのコマンド識別情報のいずれかをドラッグする操作と、ドラッグされたコマンド識別情報を画面テンプレートに含まれる複数の領域のいずれかにドロップする操作と、を入力すれば、表示領域設定部67は、ドラッグする操作によりコマンド識別情報を特定し、ドロップする操作により表示領域を特定する。表示領域設定部67は、特定されたコマンド識別情報で識別されるAPIコマンドに対して、表示データを特定された表示領域に表示する設定をする。表示領域設定部67は、2以上のAPIコマンドそれぞれに対して、APIコマンドと表示領域との組と、画面テンプレートとを入出力データ設定部69に出力する。
図7は、設定画面の一例を示す図である。図7を参照して、設定画面300は、画面テンプレート310と、コマンド識別情報の一覧を表示する領域320と、を含む。画面テンプレート310は、第1表示領域311と、第2表示領域312と、第3表示領域313と、を含む。コマンド識別情報の一覧を表示する領域320に、リスト表示APIコマンドのコマンド識別情報321、サムネイル表示APIコマンドのコマンド識別情報322、画像処理APIコマンドのコマンド識別情報323と、を含む。
ユーザーが、リスト表示APIコマンドのコマンド識別情報321をドラッグし、第1表示領域311にドロップすれば、リスト表示APIコマンドの表示データを表示するための表示領域に第1表示領域311を設定する。ユーザーが、サムネイル表示APIコマンドのコマンド識別情報322をドラッグし、第2表示領域312にドロップすれば、サムネイル表示APIコマンドの表示データを表示するための表示領域に第2表示領域312を設定する。さらに、ユーザーが、画像処理APIコマンドのコマンド識別情報323をドラッグし、第3表示領域313にドロップすれば、画像処理APIコマンドの表示データを表示するための表示領域に第3表示領域313を設定する。
以下の説明では、リスト表示APIコマンドの表示領域に第1表示領域311が設定され、サムネイル表示APIコマンドの表示領域に第2表示領域312が設定され、画像処理APIコマンドの表示領域に第3表示領域313が設定される場合を例に説明する。
図6に戻って、表示領域設定部67は、リスト表示APIコマンドの表示領域に第1表示領域311が設定され、サムネイル表示APIコマンドの表示領域に第2表示領域312が設定され、画像処理APIコマンドの表示領域に第3表示領域313が設定される場合、リスト表示APIコマンドと第1表示領域311の組、サムネイル表示APIコマンドと第2表示領域312の組、および画像処理APIコマンドと第3表示領域313の組、および画面テンプレート310とを入出力データ設定部69に出力する。
リスト表示APIコマンドは、HDD115が有するフォルダまたは、そのフォルダに記憶されたファイルの一覧を表示する処理を実行する。フォルダは、HDD115が有する複数の記憶領域の1つである。HDD115に記憶されるデータは、複数のフォルダのいずれかに分類され、ファイルとして記憶される。リスト表示APIコマンドの入力データは、フォルダを識別するためのフォルダ識別情報またはデータである。例えば、リスト表示APIコマンドを、フォルダ識別情報「フォルダA」を入力データとして実行させると、フォルダ識別情報「フォルダA」に分類されたフォルダのフォルダ識別情報および/またはファイルを識別するためのファイル識別情報を一覧表示する一覧画面を、第1表示領域311に表示する。
また、リスト表示APIコマンドを、ファイル識別情報「ファイルC」で特定されるデータを入力データとして実行させると、データにファイル識別情報「ファイルC」を付与して、カレント状態のフォルダに分類してHDD115に記憶するとともに、カレント状態のフォルダに分類されたフォルダのフォルダ識別情報および/またはファイルのファイル識別情報を一覧表示する一覧画面を、第1表示領域311に表示する。
さらに、リスト表示APIコマンドは、第1表示領域311に表示された一覧画面に含まれるフォルダ識別情報がユーザーにより指示されると、指示されたフォルダ識別情報に分類された1以上のファイルをそれぞれ識別するためのファイル識別情報を、出力データとして出力する。また、リスト表示APIコマンドは、第1表示領域311に表示された一覧画面に含まれるファイル識別情報がユーザーにより指示されると、指示されたファイル識別情報を、出力データとして出力する。ファイル識別情報は、フォルダ識別情報を含み、HDD115に記憶されたデータを、特定可能である。
また、サムネイル表示APIコマンドは、画像データを縮小した縮小画像であるサムネイルを表示する処理を実行する。サムネイル表示APIコマンドの入力データは、フォルダ識別情報またはファイル識別情報である。例えば、サムネイル表示APIコマンドを、フォルダ識別情報「フォルダB」を入力データとして実行させると、フォルダ識別情報「フォルダB」に記憶された1以上のデータのサムネイルを、第2表示領域312に表示する。また、サムネイル表示APIコマンドを、ファイル識別情報「ファイルA」を入力データとして実行させると、ファイル識別情報「ファイルA」で特定されるデータのサムネイルを、第2表示領域312に表示する。さらに、サムネイル表示APIコマンドは、第2表示領域312に表示された1以上のサムネイルのいずれかがユーザーにより指示されると、指示されたサムネイルに対応するデータのファイル識別情報を、出力データとして出力する。
また、画像処理APIコマンドは、画像データを画像処理する。画像処理APIコマンドにより実行される画像処理は、特に限定するものではないが、例えば、先鋭化処理、エッジ強調処理、等である。画像処理APIコマンドの入力データは、ファイル識別情報である。例えば、画像処理APIコマンドを、ファイル識別情報「ファイルA」を入力データとして実行させると、ファイル識別情報「ファイルA」で特定される画像データに画像処理を実行し、画像処理を実行した後の画像データを、第3表示領域313に表示する。さらに、画像処理APIコマンドは、ユーザーにより所定の操作が受け付けられると、第3表示領域313に表示された画像処理後の画像データを、出力データとして出力する。ユーザーによる所定の操作は、特に限定するものではないが、例えば、第3表示領域313に表示された画像処理後の画像データの画像を指示する操作である。
入出力データ設定部69は、コマンド関連付部77と、コマンド生成部79と、を含む。コマンド関連付部77は、表示領域設定部67からAPIコマンドと表示領域との組が2以上と、画面テンプレートとが入力される。コマンド関連付部77は、2以上の組にそれぞれ含まれる2以上のAPIコマンドそれぞれに対して、当該第1のAPIコマンドの出力データを、第1のAPIコマンドとは別の第2のAPIコマンドの入力データに設定することによって、第1のAPIコマンドと第2のAPIコマンドとを関連付ける。コマンド関連付部77は、領域指定部81を含む。領域指定部81は、表示部161に表示された画面テンプレートに含まれる複数の表示領域のうち2つの指定を受け付ける。
具体的には、コマンド関連付部77は、領域指定部81により受け付けられた2つの表示領域を、出力用表示領域と入力用表示領域とのいずれかに特定する。出力用表示領域と入力用表示領域とは、領域指定部81によって表示領域が指定された順番により決定するようにしても良いし、ユーザーが指定するようにしてもよい。コマンド関連付部77は、出力用表示領域と組になるAPIコマンドの出力データを、入力用表示領域と組になるAPIコマンドの入力データに設定する。
ここで、コマンド関連付部77に、表示領域設定部67から、リスト表示APIコマンドと第1表示領域の組、サムネイル表示APIコマンドと第2表示領域の組、および画像処理APIコマンドと第3表示領域の組、が入力される場合を例に、具体的に説明する。コマンド関連付部77は、第1表示領域が出力用表示領域に指定されて第2表示領域が入力用表示領域に指定される場合、第1表示領域と組になるリスト表示APIコマンドの出力データを、第2表示領域と組になるサムネイル表示APIコマンドの入力データに設定する。コマンド関連付部77は、第2表示領域が出力用表示領域に指定されて第3表示領域が入力用表示領域に指定される場合、第2表示領域と組になるサムネイル表示APIコマンドの出力データを、第3表示領域と組になる画像処理APIコマンドの入力データに設定する。コマンド関連付部77は、第3表示領域が出力用表示領域に指定されて第1表示領域が入力用表示領域に指定される場合、第3表示領域と組になる画像処理APIコマンドの出力データを、第1表示領域と組になるリスト表示APIコマンドの入力データに設定する。
コマンド生成部79は、コマンド関連付部77により関連付けられた第1のAPIコマンドと第2のAPIコマンドとにおいて、第1のAPIコマンドの出力データのうちから第2のAPIコマンドの入力データの属性と同じ属性の出力データを抽出する処理を定めた第3のAPIコマンドを生成する。
コマンド生成部79は、コマンド関連付部77が、リスト表示APIコマンドの出力データをサムネイル表示APIコマンドの入力データに設定する場合、リスト表示APIコマンドの出力データのうちからサムネイル表示APIコマンドの入力データの属性と同じ属性の出力データを抽出する処理を定めた第1データ抽出APIコマンドを生成する。サムネイル表示APIコマンドの入力データの属性は、画像に変換可能なデータの属性であり、例えば、画像データ、テキストデータ、アプリケーションプログラムによって生成された文書データ等である。例えば、データに対応するアプリケーションプログラムがインストールされていない場合、そのデータの画像を生成することができないので、そのようなデータはサムネイル表示APIコマンドの入力データの属性とは異なる。
コマンド生成部79は、コマンド関連付部77が、サムネイル表示APIコマンドの出力データを画像処理APIコマンドの入力データに設定する場合、サムネイル表示APIコマンドの出力データのうちから画像処理APIコマンドの入力データの属性と同じ属性の出力データを抽出する処理を定めた第2データ抽出APIコマンドを生成する。画像処理APIコマンドの入力データの属性は、画像データの属性である。
コマンド生成部79は、コマンド関連付部77が、画像処理APIコマンドの出力データをリスト表示APIコマンドの入力データに設定する場合、画像処理APIコマンドの出力データのうちからリスト表示APIコマンドの入力データの属性と同じ属性の出力データを抽出する処理を定めた第3データ抽出APIコマンドを生成する。リスト表示APIコマンドの入力データの属性は、特に定めがないので、コマンド生成部79は、第3データ抽出APIコマンドを生成しない。
入出力データ設定部69は、コマンド関連付部77によって関連付けられた2つのAPIコマンドと、コマンド生成部79によってデータ抽出APIコマンドが生成されている場合にはそのデータ抽出APIコマンドとを含む組の1以上をタイミング決定部71に出力する。
タイミング決定部71は、入出力データ設定部69からの入力される1以上の組に基づいて、1以上の組に含まれる第1のAPIコマンドと、第2のAPIコマンドと、その組が第3のAPIコマンドを含む場合にはその第3のAPIコマンドを実行する順番を決定する。具体的には、タイミング決定部71は、第1のAPIコマンド、第3のAPIコマンド、第2のAPIコマンドの順に決定する。
より具体的には、出力用APIコマンドであるリスト表示APIコマンドと入力用APIコマンドであるサムネイル表示APIコマンドと第1データ抽出APIコマンドとを含む第1の組、出力用APIコマンドであるサムネイル表示APIコマンドと入力用APIコマンドである画像処理APIコマンドと第2データ抽出APIコマンドを含む第2の組、および出力用APIコマンドである画像処理APIコマンドと入力用APIコマンドであるリスト表示APIコマンドとを含む第3の組が入力される場合を例に説明する。タイミング決定部71は、第1の組に対して、リスト表示APIコマンド、第1データ抽出APIコマンド、サムネイル表示APIコマンドの順に決定し、第2の組に対して、サムネイル表示APIコマンド、第2データ抽出APIコマンド、画像処理APIコマンドの順に決定し、第3の組に対して、画像処理APIコマンド、リスト表示APIコマンドの順に決定する。
タイミング決定部71は、決定された順にAPIコマンドを記述したアプリケーションプログラムを生成し、生成したアプリケーションプログラムをアプリケーション実行部53に出力する。
アプリケーション実行部53は、図5に示したソフトウェアアーキテクチャにおいて、アプリケーション層に属する。アプリケーション実行部53は、CPU111が生成部51から入力されるアプリケーションプログラムを実行することによってCPU111に形成される機能である。アプリケーション実行部53は、アプリケーションプログラムに記述されたAPIコマンドを、処理実行部55に出力する。
処理実行部55は、図5に示したソフトウェアアーキテクチャにおいて、アプリケーション層とMFPプロセス層とに属する。処理実行部55は、アプリケーション実行部53が出力するAPIコマンドを受け付け、受け付けられたAPIコマンドを、予め定められた規則に従って内部コマンドに変換し、内部コマンドをオペレーティングコマンドに変換し、オペレーティングコマンドをOS層に属するタスクに出力する。
図8は、アプリケーションプログラム生成処理の流れの一例を示すフローチャートである。アプリケーションプログラム生成処理は、MFP100が備えるCPU111が、ROM113、HDD115またはCD−ROM118に記憶されたアプリケーションプログラム生成プログラムを実行することにより、CPU111により実行される処理である。
図8を参照して、CPU111は、APIコマンドを取得する。通信I/F部112を制御して、サーバー200にAPIコマンドの取得要求を送信し、処理をステップS02に進める。APIコマンドの取得要求は、MFP100を識別するための装置識別情報を含む。APIコマンドの取得要求を受信するサーバー200は、取得要求に含まれる装置識別情報で特定される装置に対応するAPIコマンドを返信するので、通信I/F部112がサーバー200からAPIコマンドを受信すると、受信されたAPIコマンドを取得する。
ステップS02においては、画面テンプレートを取得し、処理をステップS03に進める。通信I/F部112を制御して、サーバー200に画面テンプレートの取得要求を送信する。画面テンプレートの取得要求を受信するサーバー200は、それが備えるHDDに予め記憶された複数の画面テンプレートを返信するので、通信I/F部112がサーバー200から複数の画面テンプレートを受信すると、受信された複数の画面テンプレートを取得する。画面テンプレートは、複数の表示領域を含み、1つの画面に複数の表示領域それぞれを配置する位置を定める。
ステップS03においては、画面テンプレートを決定し、処理をステップS04に進める。表示部161に、ステップS02において取得された複数の画面テンプレートの一覧を表示し、ユーザーが操作部163に複数の画面テンプレートのうちから1つを選択する指示を受け付け、指示により特定される画面テンプレートを決定する。
ステップS04においては、設定画面を表示部161に表示し、処理をステップS05に進める。設定画面は、ステップS03において決定された画面テンプレートと、ステップS01において取得されたAPIコマンドを選択可能なコマンド識別情報の一覧とを含む。
ステップS05においては、APIコマンドがユーザーにより選択されたか否かを判断する。APIコマンドが選択されたならば処理をステップS06に進めるが、そうでなければ処理をステップS08に進める。ユーザーが操作部163に、表示部161に表示された設定画面中のAPIコマンドのコマンド識別情報のいずれかを指示する操作を入力すれば、指示されたAPIコマンドを選択する。ここでは、設定画面中のAPIコマンドのコマンド識別情報を指示する操作を、設定画面中のコマンド識別情報を所定時間指示するドラッグ操作としている。
ステップS06において、表示領域が決定されたか否かを判断する。表示領域が決定されたならば処理をステップS07に進めるが、そうでなければ処理をステップS08に進める。ユーザーが操作部163に、表示部161に表示された設定画面中の画面テンプレートに含まれる複数の表示領域のいずれかを指示する操作を入力すれば、指示された表示領域を決定する。ここでは、画面テンプレートに含まれる複数の表示領域のいずれかを指示する操作を、ステップS05においてドラッグされたコマンド識別情報を、画面テンプレートに含まれる複数の表示領域のいずれかにドロップする操作としている。画面テンプレートに含まれる複数の表示領域のうち、コマンド識別情報がドロップされた表示領域を決定する。より具体的には、ユーザーが表示部161の表示面に指を触れた段階で、指を触れた位置に表示されているコマンド識別情報をドラッグする操作を受け付け、ユーザーが表示部161の表示面に指を触れながら画面テンプレートの複数の表示領域のいずれかが表示されている位置まで指を移動させて表示面から指を離すと、指で最後に触れていた位置に表示されている表示領域を選択するドロップ操作を受け付ける。
ステップS07においては、ステップS05において選択されたAPIコマンドと、ステップS06において決定された表示領域とを関連付ける。ステップS05において選択されたAPIコマンドに対して、APIコマンドがCPU111により実行されて出力される表示データを、ステップS06において決定された表示領域に表示する設定をする。
ステップS08においては、領域関連付操作が終了したか否かを判断する。ユーザーが、領域関連付操作を終了する指示を操作部161に入力すれば、領域関連付操作が終了したと判断する。領域関連付操作が終了したならば処理をステップS09に進めるが、そうでなければ処理をステップS05に戻す。
ステップS09においては、出力用表示領域の指定を受け付けたか否かを判断する。出力用表示領域の指定を受け付けたならば処理をステップS10に進めるが、そうでなければ処理をステップS15に進める。設定画面300の画面テンプレート310に含まれる第1表示領域311、第2表示領域312および第3表示領域313のいずれかがユーザーにより指示されると、出力用表示領域の指定を受け付ける。出力用表示領域の指定を受け付けたならば、ユーザーにより指示された表示領域を出力用表示領域に決定し、処理をステップS10に進める。ステップS10においては、出力用表示領域に関連付けられたAPIコマンドを出力用APIコマンドに設定し、処理をステップS11に進める。
ステップS11においては、入力用表示領域の指定を受け付けたか否かを判断する。入力用表示領域の指定を受け付けたならば処理をステップS12に進めるが、そうでなければ処理をステップS15に進める。設定画面300の画面テンプレート310に含まれる第1表示領域311、第2表示領域312および第3表示領域313のいずれかがユーザーにより指示されると、入力用表示領域の指定を受け付ける。入力用表示領域の指定を受け付けたならば、ユーザーにより指示された表示領域を入力用表示領域に決定し、処理をステップS12に進める。ステップS12においては、入力用表示領域に関連付けられたAPIコマンドを入力用APIコマンドに設定し、処理をステップS13に進める。
ステップS13においては、ステップS10において出力用APIコマンドに設定されたAPIコマンドと、ステップS12において入力用APIコマンドに設定されたAPIコマンドとを関連付ける。出力用APIコマンドの出力データを、入力用APIコマンドの入力データに設定する。
具体的には、第1表示領域311が出力用表示領域に指定されて第2表示領域312が入力用表示領域に指定される場合、第1表示領域311と関連付けられたリスト表示APIコマンドの出力データを、第2表示領域と関連付けられたサムネイル表示APIコマンドの入力データに設定する。第2表示領域312が出力用表示領域に指定されて第3表示領域313が入力用表示領域に指定される場合、第2表示領域312と関連付けられたサムネイル表示APIコマンドの出力データを、第3表示領域313と関連付けられた画像処理APIコマンドの入力データに設定する。第3表示領域313が出力用表示領域に指定されて第1表示領域311が入力用表示領域に指定される場合、第3表示領域313と関連付けられた画像処理APIコマンドの出力データを、第1表示領域311と関連付けられたリスト表示APIコマンドの入力データに設定する。
次のステップS14においては、データ抽出APIコマンドを生成し、処理をステップS15に進める。ステップS13において関連付けられた2つのAPIコマンドにおいて、出力用APIコマンドの出力データのうちから入力用APIコマンドの入力データの属性と同じ属性の出力データを抽出する処理を定めたデータ抽出APIコマンドを生成する。
リスト表示APIコマンドを出力用APIコマンドとし、サムネイル表示APIコマンドを入力用APIコマンドとして2つのAPIコマンドが関連付けられる場合、リスト表示APIコマンドの出力データのうちからサムネイル表示APIコマンドの入力データの属性と同じ属性の出力データを抽出する処理を定めた第1データ抽出APIコマンドを生成する。
サムネイル表示APIコマンドを出力用APIコマンドとし、画像処理APIコマンドを入力用APIコマンドとして2つのAPIコマンドが関連付けられる場合、サムネイル表示APIコマンドの出力データのうちから画像処理APIコマンドの入力データの属性と同じ属性の出力データを抽出する処理を定めた第2データ抽出APIコマンドを生成する。画像処理APIコマンドの入力データの属性は、画像データの属性である。
画像処理APIコマンドを出力用APIコマンドとし、リスト表示APIコマンドを入力用APIコマンドとして2つのAPIコマンドが関連付けられる場合、画像処理APIコマンドの出力データのうちからリスト表示APIコマンドの入力データの属性と同じ属性の出力データを抽出する処理を定めた第3データ抽出APIコマンドを生成する。リスト表示APIコマンドの入力データの属性は特に定めがないので、この場合には、第3データ抽出APIコマンドを生成しない。
ステップS15においては、コマンド関連付操作が終了したか否かを判断する。ユーザーが、コマンド関連付操作を終了する指示を操作部161に入力すれば、コマンド関連付操作が終了したと判断する。コマンド関連付操作が終了したならば処理をステップS16に進めるが、そうでなければ処理をステップS09に戻す。
ステップS16においては、ステップS09〜ステップS15において関連付けられた2つのAPIコマンドと、それら2つのAPIコマンドに対してデータ抽出APIコマンドが生成されている場合にはそのデータ抽出APIコマンドと、を実行する順番を決定する。具体的には、出力用APIコマンド、データ抽出APIコマンド、入力用APIコマンドの順に決定する。
具体的には、出力用APIコマンドであるリスト表示APIコマンドと入力用APIコマンドであるサムネイル表示APIコマンドと第1データ抽出APIコマンドとを含む第1の組、出力用APIコマンドであるサムネイル表示APIコマンドと入力用APIコマンドである画像処理APIコマンドと第2データ抽出APIコマンドを含む第2の組、および出力用APIコマンドである画像処理APIコマンドと入力用APIコマンドであるリスト表示APIコマンドとを含む第3の組が入力される場合を例に説明する。第1の組に対して、リスト表示APIコマンド、第1データ抽出APIコマンド、サムネイル表示APIコマンドの順に決定し、第2の組に対して、サムネイル表示APIコマンド、第2データ抽出APIコマンド、画像処理APIコマンドの順に決定し、第3の組に対して、画像処理APIコマンド、リスト表示APIコマンドの順に決定する。
なお、ステップS09〜ステップS15において関連付けられた2つのAPIコマンドの組が複数存在する場合には、複数の組の順番を決定するようにしても良い。例えば、組の順番は、第1の組に含まれる出力用APIコマンドと同じAPIコマンドを入力用APIコマンドとして含む第2の組が存在する場合には、第1の組を第2の組よりも先にする。 次のステップS17においては、ステップS16に置いて決定された順にAPIコマンドを記述したアプリケーションプログラムを生成し、処理をステップS18に進める。ステップS18においては、生成されたアプリケーションプログラムを出力し、処理を終了する。例えば、生成されたアプリケーションプログラムをHDD115に記憶する。
以上説明したように、本実施の形態におけるMFP100が備えるCPU111は、複数種類のハードウェア資源を制御する処理と、予め定められたデータ処理と、を実行可能な処理実行部55と、アプリケーションインターフェースコマンドで記述されたアプリケーションプログラムを実行することにより、アプリケーションインターフェースコマンドにより特定される処理を処理実行部55に実行させるアプリケーション実行部53と、アプリケーションプログラムを生成する生成部51と、を備え、生成部51は、処理実行部55との間で予め定められた複数のアプリケーションインターフェースコマンドを取得する取得部61と、複数の表示領域を含む画面テンプレートを決定する画面テンプレート決定部65と、取得された複数のアプリケーションインターフェースコマンドのうちから2以上を選択するコマンド選択部63と、選択された2以上のアプリケーションインターフェースコマンドそれぞれに対して、当該アプリケーションインターフェースコマンドが処理実行部55により実行されて処理実行部55が出力する表示データを表示するための領域に選択された画面テンプレートの複数の表示領域のいずれかを、設定する表示領域設定部67と、選択された2以上のアプリケーションインターフェースコマンドそれぞれに対して、当該アプリケーションインターフェースコマンドが処理実行部55により実行される場合に、外部から入力される入力データと、外部に出力する出力データと、をそれぞれ設定する入出力データ設定部69と、を備え、入出力データ設定部69は、選択された2以上のアプリケーションインターフェースコマンドそれぞれに対して、当該第1のアプリケーションインターフェースコマンドの出力データを、第2のアプリケーションインターフェースコマンドの入力データに設定するコマンド関連付部77を含む。このため、画面テンプレートを用いて2以上のアプリケーションインターフェースコマンドを互いに関連付けることによって、複数のアプリケーションインターフェースコマンドを含むアプリケーションプログラムを生成することができる。
また、コマンド関連付部77により関連付けられた第1のアプリケーションインターフェースコマンドと第2のアプリケーションインターフェースコマンドとにおいて、第1のアプリケーションインターフェースコマンドの出力データのうちから第2のアプリケーションインターフェースコマンドの入力データの属性と同じ属性の出力データを抽出する処理を定めた第3のアプリケーションインターフェースコマンドを生成するコマンド生成部79を、さらに含む。このため、第2のアプリケーションインターフェースコマンドを確実に実行させることができる。
さらに、取得部61は、複数のアプリケーションインターフェースコマンドを、サーバー200から取得する。このため、アプリケーションインターフェースコマンドをサーバーで管理することができるので、アプリケーションインターフェースコマンドの変更が容易である。
さらに、サーバー200から複数の画面テンプレートを取得する画面テンプレート取得部73と、複数の画面テンプレートのうちから1つを選択する指示を受け付ける選択指示受付部75と、を含む。このため、画面テンプレートをサーバー200に記憶するので、画面テンプレートの追加、変更、削除が容易となる。
さらに、画面テンプレートの複数の表示領域の第1の表示領域と、第1の表示領域とは異なる第2の表示領域との指定を受け付ける領域指定部81を含み、領域指定部81により第1の表示領域および第2の表示領域が受け付けられることに応じて、第1の表示領域が設定された第1のアプリケーションインターフェースコマンドの出力データを、第2の表示領域が設定された第2のアプリケーションインターフェースコマンドの入力データに設定する。このため、2つのアプリケーションプログラムを関連付けるための操作を容易にすることができる。
さらに、生成部51は、第1のアプリケーションインターフェースコマンドが処理実行部55により実行された後に、第2のアプリケーションインターフェースコマンドを処理実行部55に実行させるタイミング決定部71を、さらに含む。このため、2つのアプリケーションインターフェースコマンドを実行するタイミングを決定するので、確実に実行されるアプリケーションプログラムを生成することができる。
なお、上述した実施の形態においては、画像形成装置の一例としてMFP100について説明したが、図8に示したアプリケーションプログラム生成処理を、MFP100に実行させるアプリケーションプログラム生成方法、また、そのアプリケーションプログラム生成方法をMFP100が備えるCPU111に実行させるためのアプリケーションプログラム生成プログラムとして、発明を捉えることができるのは言うまでもない。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。