以下に添付図面を参照して、この発明にかかる画像情報処理装置およびアプリケーションインストール方法の好適な実施の形態を詳細に説明する。
(実施の形態1)
図1は、この発明の実施の形態1である画像形成装置(以下、「複合機」という)の主要部の構成とネットワーク構成を示すブロック図である。実施の形態1にかかる複合機100は、インターネットに接続され、当該インターネットに接続されたPC(Personal Computer)などのクライアント端末から複合機に外部アプリのインストールを行うことを可能としたものである。
図1に示すように、本実施の形態では、複合機100と、PC(personal Computer)200と複数のftpサーバ250と、コンピュータ260がインターネット220に接続されている。これらの複合機100、PC200、複数のftpサーバ250、コンピュータ260それぞれの間の通信プロトコルはTCP/IPを利用している。
複合機100は、WEBアプリ117と、VAS(Virtual Application Service:仮想アプリケーションサービス)118と、NCS(ネットワークコントロールサービス)128と、httpd(httpデーモン)106と、共有メモリ105とを主に備えた構成となっている。ここで、WEBアプリ117は、本発明におけるWEBサービス提供手段を構成する。
WEBアプリ117は、インターネット220に接続されたクライアント端末としてのPC200に対してWEBサーバ(httpサーバ)として動作し、PC200上で動作するWEBブラウザに後述するインストール画面201を表示し、表示したインストール画面201からの操作入力や要求に応じたインストールに関する処理を行い、その結果をPC200に返すものである。
ここで、インストール画面201は、本発明におけるWEBページを構成し、html形式(Hyper Text Markup Language)で記述されたファイル(install.htm)である。当該ファイルをPC200上のWEBブラウザによって表示することにより、インストール画面201がPC200で表示される。また、WEBアプリ117は、インストール画面201(install.htm)からの操作入力や要求に応じたインストールに関する処理を、CGI(Common Gateway Interface)、具体的にはinstall.cgiのスクリプトによって実行し、その処理結果をインストール画面201(install.htm)に反映して、PC200のWEBブラウザに返すようになっている。具体的には、WEBアプリ117は、インストールに関する処理の要求(ボタンのクリック操作等)があった場合には、install.cgiのスクリプトを実行する。なお、本実施の形態では、CGIスクリプトを実行することにより、WEBアプリ117による各処理を実行しているが、CGIスクリプトから呼び出される別のプログラムで実行するように構成しても良い。また、インストール画面を、XML形式(eXtensible Markup Language)で記述するように構成することも可能である。
VAS118は、コントロールサービスとアプリケーションとの間に配置され、アプリケーションからのコントロールサービスに対するアクセス、またはコントロールサービスからのアプリケーションに対するアクセスを仲介するものである。また、VAS118は、NCS128から通知されたインターネット220経由のリクエストメッセージ受信の旨をWEBアプリ117に通知することも行う。
NCS128は、ネットワークを制御するものであり、httpd106から通知されたリクエストメッセージ受信の旨をVAS118に通知することも行う。
httpd106は、OSに含まれるプロセス(デーモン)であり、ポート80番を常時監視してリクエストメッセージの受信を行うとともに、レスポンスメッセージの送信を行うものである。なお、リクエストメッセージおよびレスポンスメッセージの構造は、通常のhttpプロトコルにおける各メッセージの構造と同様であり、各メッセージには、html形式で記述されたメッセージボディが含まれている。また、httpd106は、インターネット220経由で受信したリクエストメッセージ受信の旨をVAS118に通知するとともに、リクエストメッセージを共有メモリ105に格納する。
この共有メモリ105は、httpd106とWEBアプリ117とのプロセス間通信に利用されるものであり、共有メモリ105を介してリクエストメッセージ、レスポンスメッセージなどの受け渡しを行う。
複合機100には、ICカードインタフェース部230が設けられている。ICカードインタフェース部230は、ICカード240を挿入して、ICカード240とデータのやりとりを行うインタフェースである。ICカード240は、インストール記憶媒体として使用することができ、この場合には開発された外部アプリ242をインストール可能な形式で、例えば外部アプリ242を圧縮し、かつインストールの実行処理が記述されたインストールスクリプトファイル241とともにICカード240に格納する。また、ICカード240には、ICカード240内に保存されている外部アプリ242の一覧を示すアプリケーションリスト243が格納されている。
PC200は、複合機100のWEBアプリ117をサーバとして、WEBアプリ117からのサービスの提供を受けるクライアント端末であり、PC200で実行されるWEBブラウザ上でインストール画面201やその他画面を表示し、操作入力を行うようになっている。
ftpサーバ250は、外部アプリ242と上記インストールスクリプトファイル241を格納するインターネット上の保存領域である。このftpサーバ250は、任意の数を設けることができる。
コンピュータ260には、アプリケーションリスト261が保存されている。アプリケーションリスト261は、外部アプリ242の保存場所の一覧を示すものである。なお、このアプリケーションリスト261は、複合機100のHDD103あるいはフラッシュメモリなどの記憶媒体に格納するように構成してもよい。
次に、本実施の形態にかかる複合機100の全体の機能的構成について説明する。図2は、実施の形態1の複合機100の構成を示すブロック図である。図1に示すように、複合機100は、白黒レーザプリンタ(B&W LP)101と、カラーレーザプリンタ(Color LP)102と、ハードディスク装置(HDD)103と、スキャナ、ファクシミリ、メモリ、ネットワークインタフェースなどのハードウェアリソース104を有するとともに、プラットホーム120と、アプリケーション130とから構成されるソフトウェア群110とを備えている。
プラットホーム120は、アプリケーションからの処理要求を解釈してハードウェア資源の獲得要求を発生させるコントロールサービスと、一または複数のハードウェア資源の管理を行い、コントロールサービスからの獲得要求を調停するシステムリソースマネージャ(SRM)123と、汎用OS121とを有する。
コントロールサービスは、複数のサービスモジュールから形成され、SCS(システムコントロールサービス)122と、ECS(エンジンコントロールサービス)124と、MCS(メモリコントロールサービス)125と、OCS(オペレーションパネルコントロールサービス)126と、FCS(ファックスコントロールサービス)127と、NCS(ネットワークコントロールサービス)128とから構成される。このプラットホーム120は、あらかじめ定義された関数により前記アプリケーション130から処理要求を受信可能とするアプリケーションプログラムインタフェース(API)を有する。
汎用OS121は、UNIX(登録商標)などの汎用オペレーティングシステムであり、プラットホーム120並びにアプリケーション130の各ソフトウェアをそれぞれプロセスとして並列実行する。
SRM123のプロセスは、SCS122とともにシステムの制御およびリソースの管理を行うものである。SRM123のプロセスは、スキャナ部やプリンタ部などのエンジン、メモリ、HDDファイル、ホストI/O(セントロI/F、ネットワークI/F、IEEE1394 I/F、RS232C I/Fなど)のハードウェア資源を利用する上位層からの要求にしたがって調停を行い、実行制御する。
具体的には、このSRM123は、要求されたハードウェア資源が利用可能であるか(他の要求により利用されていないかどうか)を判断し、利用可能であれば要求されたハードウェア資源が利用可能である旨を上位層に伝える。また、SRM123は、上位層からの要求に対してハードウェア資源の利用スケジューリングを行い、要求内容(例えば、プリンタエンジンにより紙搬送と作像動作、メモリ確保、ファイル生成など)を直接実施している。
SCS122のプロセスは、アプリ管理、操作部制御、システム画面表示、LED表示、リソース管理、割り込みアプリ制御などを行う。
ECS124のプロセスは、白黒レーザプリンタ(B&W LP)101、カラーレーザプリンタ(Color LP)102、スキャナ、ファクシミリなどからなるハードウェアリソース104のエンジンの制御を行う。
MCS125のプロセスは、画像メモリの取得および解放、ハードディスク装置(HDD)の利用、画像データの圧縮および伸張などを行う。
FCS127のプロセスは、システムコントローラの各アプリ層からPSTN/ISDN網を利用したファクシミリ送受信、BKM(バックアップSRAM)で管理されている各種ファクシミリデータの登録/引用、ファクシミリ読みとり、ファクシミリ受信印刷、融合送受信を行うためのAPIを提供する。
NCS128のプロセスは、ネットワークI/Oを必要とするアプリケーションに対して共通に利用できるサービスを提供するためのプロセスであり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、アプリケーションからデータをネットワーク側に送信する際の仲介を行う。
OCS126のプロセスは、オペレータ(ユーザ)と本体制御間の情報伝達手段となるオペレーションパネル(操作パネル)910の制御を行う。OCS126は、オペレーションパネルからキー押下(またはタッチ操作)をキーイベントとして取得し、取得したキーに対応したキーイベント関数をSCS122に送信するOCSプロセスの部分と、アプリケーション130またはコントロールサービスからの要求によりオペレーションパネルに各種画面を描画出力する描画関数やその他オペレーションパネルに対する制御を行う関数などがあらかじめ登録されたOCSライブラリの部分とから構成される。このOCSライブラリは、アプリケーション130およびコントロールサービスの各モジュールにリンクされて実装されている。なお、OCS126のすべてをプロセスとして動作させるように構成しても良く、あるいはOCS126のすべてをOCSライブラリとして構成しても良い。
アプリケーション130は、ページ記述言語(PDL)、PCLおよびポストスクリプト(PS)を有するプリンタ用のアプリケーションであるプリンタアプリ111と、コピー用アプリケーションであるコピーアプリ112と、ファクシミリ用アプリケーションであるファックスアプリ113と、スキャナ用アプリケーションであるスキャナアプリ114と、ネットワークファイル用アプリケーションであるネットファイルアプリ115と、工程検査用アプリケーションである工程検査アプリ116と、上述のWEBアプリ117、VAS118とを有している。
アプリケーション130の各プロセス、コントロールサービスの各プロセスは、関数呼び出しとその戻り値送信およびメッセージの送受信によってプロセス間通信を行いながら、コピー、プリンタ、スキャナ、ファクシミリなどの画像形成処理にかかるユーザサービスを実現している。
このように、実施の形態1にかかる複合機100には、複数のアプリケーション130および複数のコントロールサービスが存在し、いずれもプロセスとして動作している。そして、これらの各プロセス内部には、一または複数のスレッドが生成されて、スレッド単位の並列実行が行われる。そして、コントロールサービスがアプリケーション130に対し共通サービスを提供しており、このため、これらの多数のプロセスが並列動作、およびスレッドの並列動作を行って互いにプロセス間通信を行って協調動作をしながら、コピー、プリンタ、スキャナ、ファクシミリなどの画像形成処理にかかるユーザサービスを提供するようになっている。
また、複合機100には、複合機100の顧客、サードベンダなどの第三者がコントロールサービス層の上のアプリケーション層に外部アプリを開発して搭載することが可能となっている。
なお、実施の形態1にかかる複合機100では、複数のアプリケーション130のプロセスと複数のコントロールサービスのプロセスとが動作しているが、アプリケーション130とコントロールサービスのプロセスがそれぞれ単一の構成とすることも可能である。また、各アプリケーション130は、アプリケーションごとに追加または削除することができる。
次に、このように構成された複合機100のWEBアプリ117を利用したPC200からの外部アプリ242のインストール方法について説明する。まず、利用者は、PC200でWEBブラウザを起動し、複合機100のURLを指定して複合機100のWEBアプリ117にアクセスする。WEBブラウザからのアクセスを受けたWEBアプリ117は、インストール画面201(install.htm)をPC200のWEBブラウザに表示させる。
図3(a)は、インストール画面201の内容の一例を示す説明図である。図3(a)に示すように、インストール画面201には、アプリケーションリストの取得元を指定するWEBボタンおよびICカードボタンが表示されている。
利用者がWEBボタンをマウスなどでクリック操作すると、WEBアプリ117によって、インターネット上のコンピュータ260からアプリケーションリスト261が取得され、インストール可能な外部アプリ242の一覧として、取得されたアプリケーションリストから外部アプリ名を抽出し、アクティブアプリケーションの欄に一覧表示されるようになっている。install.htmにおいて、このアクティブアプリケーションの欄に相当するすべての行の先頭には、「application_list:」の文字列が記述されている。
利用者がICカードボタンをマウスなどでクリック操作すると、WEBアプリ117によって、ICカード240からアプリケーションリスト243が読み込まれ、インストール可能な外部アプリ242の一覧として、読み込まれたアプリケーションリスト243から外部アプリ名を抽出し、アクティブアプリケーションの欄に一覧表示されるようになっている。
利用者は、WEBボタンまたはICカードボタンのいずれかをクリック操作すると、複合機100にアプリケーションリスト取得のリクエストメッセージがinstall.htmの内容とともに送信される。
ここで、リクエストメッセージを受信した複合機100における処理について説明する。図4は、リクエストメッセージを受信した複合機100における処理の手順を示すフローチャートである。
httpd106は、ポート80番を常時監視しており、PC200からリクエストメッセージをポート80番で受信する(ステップS401)。そして、httpd106は、受信したリクエストメッセージを読み出し、リクエストメッセージを共有メモリ105に書き込む(ステップS402)。次に、httpd106は、リクエストメッセージ受信の旨をNCS128に通知する(ステップS403)。
通知を受けたNCS128は、さらにリクエストメッセージ受信の旨をVAS118に通知する(ステップS404)。通知を受けたVAS118は、さらにリクエストメッセージ受信の旨をWEBアプリ117に通知する(ステップS405)。WEBアプリ117は、リクエストメッセージ受信の旨の通知を受けたことをトリガとして、共有メモリ105を参照して、リクエストメッセージを読み出す(ステップS406)。そして、リクエストメッセージの内容を解析して(ステップS407)、リクエストメッセージのメッセージボディに記述された内容に応じた処理を実行する(ステップS408)。このとき、メッセージボディにCGIを実行する旨が記述されていれば、対応するCGIを実行する。
そして、WEBアプリ117は、処理の実行結果をレスポンスメッセージとして、httpd106経由でリクエストメッセージの送信元であるPC200に返信する(ステップS409)。
本実施の形態の複合機100におけるWEBアプリ117では、図3(a)のインストール画面201(install.htm)において、アプリケーションリストの取得元のいずれかのボタンをクリック操作したときに、WEBブラウザから複合機100にリクエストメッセージにメッセージボディとしてinstall.htmが含められて送信される。このinstall.htmには、上記ボタンをクリックしたときにinstall.cgiを呼び出す旨が記述されており、このためリクエストメッセージを受信して解析を行ったWEBアプリ117は、install.cgiを実行する。
図5は、WEBアプリ117によるinstall.cgiの処理の手順を示すフローチャートである。WEBアプリ117は、まずアプリケーションリストの取得元として、「WEB」、「ICカード」のいずれのボタンがクリック操作されたかを判断する(ステップS501)。
そして、WEBボタンが指定されている場合には、インターネット220に接続されたコンピュータ260のURLを指定して、当該コンピュータ260に格納されているアプリケーションリスト261をダウンロードする(ステップS502)。一方、ICカードボタンが指定されている場合には、ICカードインタフェース部230によってICカード240にアクセスし、ICカード240に格納されているアプリケーションリスト243を読み出す(ステップS503)。
図6は、アプリケーションリスト261の一例を示す説明図である。アプリケーションリスト261は、図6に示すように、外部アプリ名と、ftpサイトアドレスと、サイト内パス(ディレクトリ)から構成される。なお、ICカード240に格納されているアプリケーションリスト243は、外部アプリ名と、パスのみが設定されており、ftpサイトアドレスは設定されていない。
次に、アプリケーションリストを格納するためのインストールデータファイルがすでにHDD103などの記憶媒体に存在するか否かを調べ(ステップS504)、存在しない場合には、空のインストールデータファイルをHDD103などに作成する(ステップS505)。そして、インストールデータファイルに取得したアプリケーションリスト243または261の内容を追加する(ステップS506)。
次に、WEBアプリ117は、受信したリクエストメッセージの中のinstall.htmを先頭から一行づつ読み込む(ステップS507)。そして、読み込んだ行が「application_list:」の文字列を含むか否かを調べることにより、アクティブアプリケーションの欄か否かを判断する(ステップS508)。
そして、アクティブアプリケーションの欄であると判断した場合には、インストールデータファイルからアプリケーションリストの中の外部アプリ名を取得し(ステップS509)、取得した外部アプリ名の前方にチェックボックスを付したものを一行とし(ステップS510)、この一行をPC200に送信する(ステップS511)。
一方、ステップS508において、アクティブアプリケーションの欄でないと判断した場合には、ステップS507で読み込んだ一行をそのままPC200に送信する(ステップS511)。
そして、ステップS507からS511までの処理を、install.htmのすべての行について繰り返し行う(ステップS512)。これにより、PC200のWEBブラウザには、install.cgiによる処理結果のinstall.htmが順次表示されることになる。
図3(b)は、WEBアプリ117による処理結果のインストール画面201の一例を示す説明図である。図3(b)に示すように、外部アプリの一覧がアクティブアプリケーションリストの欄に表示されている。
図3(b)に示すように、インストール画面201にインストール可能な外部アプリのリストが表示されている状態で、インストールを希望する外部アプリのチェックボックスにチェックをいれ、インストールボタンをクリック操作すると、チェックボックスで指定された外部アプリのインストールがWEBアプリ117によって行われる。
図7は、図3(b)のインストール画面201でインストールボタンがクリックされた場合のPC200の処理の手順を示すフローチャートである。WEBブラウザに表示されているインストール画面201のinstall.htm中に記述されたJava(登録商標)スクリプトが実行されることによって、かかるPC200側での処理が実行される。
まず、チェックボックスにチェックマークが付されている外部アプリ名を取得する(ステップS701)。そして、取得した外部アプリ名と、インストールのリクエストメッセージをWEBアプリ117に送信する(ステップS702)。これによって、複合機100では、WEBアプリ117がリクエストメッセージを受信して解析した後、インストールが行われる。
図8は、WEBアプリ117によるインストール処理の手順を示すフローチャートである。WEBアプリ117は、リクエストメッセージを受信すると、まずインストールデータを参照し、PC200から通知された外部アプリ名の保存先を取得する(ステップS801)。ここで、保存先は、インターネット上のftpサイトアドレス、サイト内パス、あるいはICカード内のパス(ディレクトリ)である。
そして、WEBアプリ117は、取得した保存先にアクセスし、その保存先に格納されている外部アプリ242とインストールスクリプトを取得する(ステップS802)。ここで、外部アプリ242がftpサーバ250にある場合には、ftpプロトコルによって外部アプリ242を複合機100のHDD103などの記憶媒体にダウンロードする。一方、外部アプリがICカード240にある場合には、ICカード240から外部アプリ242を読み出す。
次に、WEBアプリ117は、取得したインストールスクリプトを実行し、取得した外部アプリ242をインストールする(ステップS803)。インストールスクリプトとは、インストールの手順を記述したスクリプトファイルであり、かかるスクリプトを実行することによって、実際のインストール処理が行われる。
このようなステップS801からS803までの処理を、PC200から通知されたすべての外部アプリについて繰り返し行う(ステップS804)。これによって、PC200のWEBブラウザに表示されたインストール画面201で指定されたすべての外部アプリ242のインストールが完了する。
次に、本実施の形態の複合機100のハードウェア構成について説明する。図9は、図1に示した実施の形態1の複合機100のハードウェア構成図である。図9に示すように、この複合機100は、CPU902、SDRAM903、SRAM908、フラッシュメモリ(フラッシュROM)210、ICカードインタフェース部230およびHDD103などをASIC901に接続したコントローラボード900と、オペレーションパネル910と、ファックスコントロールユニット(FCU)920と、USB930と、IEEE1394 940と、プリンタ950とから構成されている。オペレーションパネル910はASIC901に直接接続され、FCU920、USB930、IEEE1394 940およびプリンタ950はPCIバスを介してASIC901に接続されている。
ICカードインタフェース部230は、ICカード240を挿入して、ICカード240とデータのやりとりを行うインタフェースである。ICカード240は、インストール記憶媒体として使用することもでき、この場合には開発された外部アプリ242をICカード240に格納する。
このように実施の形態1にかかる複合機100では、WEBアプリ117によって、インターネット220に接続されたクライアント端末であるPC200のWEブラウザからの要求に応じて外部アプリ242をインストールしているので、PC200からの容易な操作で外部アプリ242を複合機100にインストールすることができ、外部アプリ242を利用した多種多様な機能を容易な操作で複合機100に実現させることができる。
(実施の形態2)
実施の形態1にかかる複合機100は、WEBアプリ117によって外部アプリ242のインストールをPC200から行うものであったが、この実施の形態2にかかる複合機は、WEBアプリによって複合機で動作するプログラムのカスタマイズをインターネットに接続されたPCから行うものである。
図10は、実施の形態2にかかる複合機の主要構成およびネットワーク構成を示すブロック図である。図10に示すように、本実施の形態では、複合機1000と、PC(personal Computer)200とがインターネット220に接続されている。複合機1000およびPC200の間の通信プロトコルはTCP/IPを利用している。
複合機1000は、図10に示すように、WEBアプリ1117と、VAS118と、NCS128と、httpd106と、複合機初期化部129と、プログラム起動部131と、汎用OS121内のインタプリタ(シェル)134と、共有メモリ105と、HDD103とを主に備えた構成となっている。ここで、WEBアプリ1117は、本発明におけるWEBサービス提供手段を構成し、シェル134は、本発明におけるプログラム実行手段を構成する。
WEBアプリ1117は、インターネット220に接続されたクライアント端末としてのPC200に対してWEBサーバ(httpサーバ)として動作し、PC200上で動作するWEBブラウザに後述するプログラミング画面1001を表示し、このプログラミング画面1001からオペレーションパネル910の操作表示部のカスタマイズプログラムを入力させるものである。また、WEBアプリ1117は、PC200から入力されたカスタマイズプログラムをHDD103のカスタマイズ領域として作成されたカスタマイズディレクトリに保存する。さらに、WEBアプリ1117は、複合機1000上でカスタマイズプログラムが実行されるように、後述する起動設定ファイルにカスタマイズプログラムを登録する。
ここで、プログラミング画面1001は、本発明におけるWEBページを構成し、html形式(Hyper Text Markup Language)で記述されたファイル(debug.htm)である。当該ファイルをPC200上でWEBブラウザによって表示することにより、プログラミング画面1001がPC200で表示される。また、WEBアプリ1117は、プログラミング画面(debug.htm)からの操作入力や要求に応じたカスタマイズプログラムの入力に関する処理等を、CGI(Common Gateway Interface)のスクリプトを実行し、その処理結果をプログラミング画面(debug.htm)に反映して、PC200のWEBブラウザに返すようになっている。具体的には、WEBアプリ1117は、カスタマイズプログラムの入力処理等の要求(ボタンのクリック操作等)があった場合には、debug.cgiのスクリプトを実行する。なお、本実施の形態では、CGIスクリプトを実行することにより、WEBアプリ1117による各処理を実行しているが、CGIスクリプトから呼び出される別のプログラムで実行するように構成しても良い。なお、プログラミング画面を、XML形式(eXtensible Markup
Language)で記述するように構成することも可能である。
また、プログラミング画面1001から入力するカスタマイズプログラムは、インタプリタで解釈可能な言語で記述され、具体的には、汎用OS121がUNIX(登録商標)の場合、シェルスクリプトなどである。
インタプリタ134は、カスタマイズプログラムをステップごとに解析し逐次実行するものであり、本実施の形態では、シェルスクリプトを実行するシェル(bsh,cshなど)である。このシェル134は、汎用OS121としてのUNIX(登録商標)にOSのカーネル135とは別個に存在するものである。
プログラム起動部131は、HDD103の診断結果が正常である場合に、HDD103にインストールされている外部アプリ242を起動するものである。また、プログラム起動部131は、ICカード240などの記憶媒体に保存された外部アプリ242を起動する。
複合機初期化部129は、汎用OS121の上で最初に起動されるプロセスであり、コントロールサービスやアプリケーション130(外部アプリを除く)の起動およびプログラム起動部131の起動を行うものである。
HDD103には、起動設定ファイル211とが格納され、またHDD103のカスタマイズディレクトリ212にカスタマイズプログラムが格納されるようになっている。
なお、VAS118、NCS128、httpd106および共有メモリ105の機能は、実施の形態1の複合機100と同様である。
PC200は、複合機1000のWEBアプリ1117をサーバとして、WEBアプリ1117からのサービスの提供を受けるクライアント端末であり、PC200で実行されるWEBブラウザ上でプログラミング画面1001やその他画面を表示し、操作入力を行うようになっている。
次に、本実施の形態にかかる複合機1000の全体の機能的構成について説明する。図11は、実施の形態2の複合機1000の構成を示すブロック図である。本実施の形態の複合機1000が実施の形態1の複合機100と異なる点は、複合機初期化部129と、プログラム起動部131と、インタプリタ(シェル)134を備えている点であり、その他の構成は実施の形態1の複合機100と同様である。
次に、このように構成された複合機1000のWEBアプリ1117を利用したPC200からのオペレーションパネル910の操作表示部のカスタマイズ方法について説明する。まず、利用者は、PC200でWEBブラウザを起動し、複合機1000のURLを指定して複合機1000のWEBアプリ1117にアクセスする。WEBブラウザからのアクセスを受けたWEBアプリ1117は、プログラミング画面1001(debug.htm)をPC200のWEBブラウザに表示させる。
図12は、プログラミング画面1001の内容の一例を示す説明図である。図12に示すように、プログラミング画面1001には、プログラム入力フィールドと、参照ボタンと、アップロードボタンと、保存ボタンと、消去ボタンと、テスト実行ボタンと、実行設定ボタンが表示される。
参照ボタンは、ブラウザが動作しているPC200の記憶領域に格納されたカスタマイズプログラムを参照するためのボタンであり、この参照ボタンを押下すると、PC200上のディレクトリが表示され、所望のディレクトリに存在するカスタマイズプログラムを指定すると、ファイル名フィールドに指定されたカスタマイズプログラムのファイル名が表示される。なお、参照ボタンを押下したときに、複合機1000のHDD103などの記憶媒体のディレクトリを参照するように構成しても良い。
アップロードボタンは、参照ボタンで指定したカスタマイズプログラムあるいは入力フィールドに入力したカスタマイズプログラムを、複合機1000に転送(アップロード)するためにクリック操作するものである。
プログラム入力フィールドは、カスタマイズプログラムを入力する領域である。このプログラム入力フィールドには、PC200のキーボードなどの入力装置からカスタマイズプログラムを直接入力する他、上述のように参照ボタンをクリック操作することによってPC200の所望のディレクトリに存在する既存のプログラムファイルを指定することによってカスタマイズプログラムを入力する。debug.htmにおいて、このプログラム入力フィールドに相当するすべての行の先頭には、「program_list:」の文字列が記述されている。
保存ボタンは、入力したカスタマイズプログラムを複合機1000にアップロードした後に、カスタマイズディレクトリに格納する場合にクリック操作するものである。消去ボタンは、入力フィールドに入力されたカスタマイズプログラムを消去する際にクリック操作するものである。
実行設定ボタンは、カスタマイズディレクトリに保存されたカスタマイズプログラムを複合機1000で実行できるように、カスタマイズプログラムとカスタマイズプログラムを実行させるボタンを対応づける際にクリック操作するものである。この実行設定ボタンが押下されると、WEBアプリ1117は、カスタマイズプログラム中で指定されたボタン(キー)を、カスタマイズディレクトリに存在する画面ファイル中のボタン(キー)からキーコードに基づいて検索し、カスタマイズプログラムとボタン(キー)との対応付けを行い、カスタマイズプログラムの名称とボタン(キー)のキーコードのキー対応付けテーブルを生成してHDD103またはフラッシュメモリなどに当該テーブルを格納する。
テスト実行ボタンは、入力されたカスタマイズプログラムを試験的に実行する際にクリック操作するものである。
図13は、入力するカスタマイズプログラムの内容の一例を示す説明図である。図13に示すように、本実施の形態では、UNIX(登録商標)のシェルスクリプトを入力するようになっている。入力されたシェルスクリプトは、汎用OS121(UNIX(登録商標))のコマンド・インタプリタであるシェルによってステップごとに逐次実行され、このため、入力したカスタマイズプログラムのコンパイルおよびリンクは不要となっている。
また、シェルスクリプトには、開発ライブラリで提供される複合機専用コマンドを指定できるようになっている。図13のスクリプトは、原稿をスキャナで読み込み(scanimage)、読み込み時にTIF形式に圧縮された画像データを伸長し(decomp)、伸長した画像データに対し文字認識処理を行う(ocr)。そして、文字認識処理による認識結果をテキストデータとしてメール送信(mail)する例を示している。このスクリプトの中では、scanimage,decomp,ocrの各コマンドが開発ライブラリで提供されるコマンドである。
PC200のWEBブラウザに表示されているプログラミング画面1001(debug.htm)において、参照ボタンをクリックしてPC200に格納されているカスタマイズプログラムを指定し、あるいはプログラム入力フィールドに直接カスタマイズプログラムを入力し、アップロードボタンをクリック操作した場合、WEBブラウザから複合機100のWEBアプリ1117に対しリクエストメッセージが送信される。このリクエストメッセージのメッセージボディにはdebug.htmが含められており、このdebug.htmには、アップロードボタンをクリック操作したときにdebug.cgiを呼び出す旨が記述されている。このためリクエストメッセージを受信して解析を行ったWEBアプリ1117は、debug.cgiを実行する。
図14は、WEBアプリ1117によるdebug.cgiの処理の手順を示すフローチャートである。WEBアプリ1117は、指定されたカスタマイズプログラムのプログラムファイルを複合機1000にアップロードする。あるいは受信したリクエストメッセージの中のdebug.htmのプログラム入力フィールドに直接入力されたカスタマイズプログラムをプログラムファイルにした後、このプログラムファイルを複合機1000にアップロードする(ステップS1401)。
次に、WEBアプリ1117は、debug.htmを先頭から一行づつ読み込む(ステップS1402)。そして、読み込んだ行が「program_list:」の文字列を含むか否かを調べることにより、プログラム入力フィールドか否かを判断する(ステップS1403)。
そして、プログラム入力フィールドであると判断した場合には、アップロードされたプログラムファイルを読み込んで(ステップS1404)、プログラムファイルの内容、すなわちカスタマイズプログラムをPC200に送信する(ステップS1405)。
一方、ステップS1403において、プログラム入力フィールドでないと判断した場合には、ステップS1402で読み込んだ一行をそのままPC200に送信する(ステップS1406)。
そして、ステップS1402からS1406までの処理を、debug.htmのすべての行について繰り返し行う(ステップS1407)。これにより、PC200のWEBブラウザには、debug.cgiによる処理結果のdebug.htmが順次表示されることになる。
このようにプログラミング画面1001から入力されたカスタマイズプログラムが複合機1000にアップロードされ、プログラム入力フィールドにアップロード後のカスタマイズプログラムが表示された後、保存ボタン、実行設定ボタン、テスト実行ボタンのクリック操作が可能となる。これらのいずれかのボタンをクリック操作した場合におけるWEBアプリ1117の処理について説明する。
図15は、プログラミング画面1001において、保存ボタン、実行設定ボタン、テスト実行ボタンのいずれかのクリック操作が行われた場合のWEBアプリ1117の処理の手順を示すフローチャートである。
まず、WEBアプリ1117は、クリック操作されたボタンの種類を判断する(ステップS1501)。
プログラミング画面1001で保存ボタンがクリックされた場合には、WEBアプリ1117は、ファイル名称を利用者に指定させ、カスタマイズプログラムを指定された名称で複合機1000のHDD103のカスタマイズディレクトリに格納する(ステップS1502)。
図16は、カスタマイズディレクトリに格納されたカスタマイズプログラムの名称の一例を示す説明図である。図16に示すように、複合機1000のHDD103のカスタマイズディレクトリは、hdd/xxx/opepaneとなっており、このカスタマイズディレクトリにカスタマイズプログラムであるshell1,shell2,shell3が格納されている。
一方、プログラミング画面1001で実行設定ボタンがクリックされた場合には、WEBアプリ1117は、カスタマイズプログラムとボタンとの対応付けを行う(ステップS1503)。図17は、キー対応付けテーブルの内容の一例を示す説明図である。図17に示すように、キー対応付けテーブルには、ボタンのキーコードとカスタマイズプログラム名称が対応付けられる。
また、プログラミング画面1001でテスト実行ボタンが押下された場合には、WEBアプリ1117は、入力されたカスタマイズプログラムのテスト実行を行い、オペレーションパネル910に表示される画面と同一の画面をPC200で動作しているWEBブラウザに表示する(ステップS1504)。
次に、このようにして生成されたカスタマイズプログラムの実行処理について説明する。図18は、複合機1000の電源投入が行われてから、カスタマイズプログラムの実行が可能となるまでの一連の処理の手順を示すフローチャートである。
カスタマイズプログラムのカスタマイズディレクトリへの保存および起動設定ファイル211への設定が完了したら、利用者は複合機1000の電源を再投入する。このとき複合機1000では、ROMモニタ(図示せず)によってハードウェアの診断処理を行い(ステップS1801)、その後汎用OS121を起動し(ステップS1802)、さらに複合機初期化部129を起動する(ステップS1803)。複合機初期化部129は、まずコントロールサービスの起動を行い(ステップS1804)、続いてコピーアプリ112、プリンタアプリ111などの複合機1000の出荷時に提供されている既存アプリを起動し(ステップS1805)、さらに出荷後新たに開発された外部アプリなどのプログラムを起動するためにプログラム起動部131を起動する(ステップS1806)。
プログラム起動部131は、まずHDD103の起動設定ファイル211を参照し(ステップS1807)、起動すべきプログラムの名称を取得する。
図19は、起動設定ファイル211の一例を示す説明図である。図19に示すように、起動設定ファイル211には、「プログラム名称 カスタマイズプログラム名」の形式で、プログラム起動部131によって起動されるプログラムが登録されている。図19の例では、シェルスクリプトであるシェルのプログラムが最初に登録され、その後に、外部アプリとしてXXXアプリが登録されている。
このため、プログラム起動部131は、まずシェルを起動し(ステップS1808)、次いで、外部アプリであるXXXアプリを順に起動する(ステップS1809)。
従って、オペレーションパネル910の操作表示部に表示されたボタン(キー)の中で、カスタマイズプログラムが割り付けられたボタン(キー)をクリックすると、シェルスクリプトで記述されたカスタマイズプログラムがシェルによって実行されることになる。
このように実施の形態2にかかる複合機1000では、WEBアプリ1117によって、オペレーションパネル910の操作表示部のカスタマイズプログラムを、インターネット220に接続されたPC200からWEBページであるプログラミング画面を介して入力させているので、PC200に表示されるプログラミング画面からの容易な操作で操作表示部のカスタマイズプログラムを作成することができ、カスタマイズを利用した多種多様な機能を容易な操作で複合機1000に実現させることができる。
なお、実施の形態2にかかる複合機1000では、WEBアプリ1117によって、オペレーションパネル910の操作表示部のプログラムのカスタマイズを行っているが、複合機1000に搭載されている機能を実現するプログラムであれば、いずれのプログラムのカスタマイズに本発明を適用することも可能である。
また、実施の形態2にかかる複合機1000では、カスタマイズプログラムとしてシェルスクリプトを利用しているが、この他、Visual Basic(登録商標)やJava(登録商標)言語を使用してもよい。この場合には、インタプリタは、汎用OS121に含まれず、汎用OS121の配下で動作するように構成する必要がある。
また、実施の形態1および2にかかる複合機100,1000では、本発明のWEBサービス提供手段を構成するWEBアプリ117,1117をアプリケーション層に設けているが、同様の機能を有するプロセスをコントロールサービス層に設ける構成とすることも可能である。