(57)【要約】【課題】プログラム開発効率を向上させることを目的とする。【解決手段】画像形成装置で実行されるプログラムを開発するために使用される情報処理装置に、プログラムを解釈し、実行する実行手段と、当該プログラムの命令に対する画像形成装置の動作に相当する動作を前記情報処理装置に実行させるエミュレータとを備える。【選択図】  図２７
2004185595.tif 000002
【特許請求の範囲】
【請求項１】
画像形成装置で実行されるプログラムを開発するために使用される情報処理装置であって、
プログラムを解釈し、実行する実行手段と、
当該プログラムの命令に対する画像形成装置の動作に相当する動作を前記情報処理装置に実行させるエミュレータと
を備えたことを特徴とする情報処理装置。
【請求項２】
前記実行手段は仮想マシンである請求項１に記載の情報処理装置。
【請求項３】
ソースコードを、前記仮想マシンが実行可能なコードに変換するコンパイラを更に備えた請求項２に記載の情報処理装置。
【請求項４】
前記プログラムはＪａｖａ（登録商標）プログラムであり、当該Ｊａｖａ（登録商標）プログラムが参照するクラスライブラリを更に備えた請求項３に記載の情報処理装置。
【請求項５】
前記エミュレータは、前記情報処理装置に、前記画像形成装置の操作部に相当する画面を表示させる請求項１に記載の情報処理装置。
【請求項６】
前記エミュレータは、前記情報処理装置に、プログラムのリストを表示させ、ユーザにより選択されたプログラムを実行する請求項１に記載の情報処理装置。
【請求項７】
前記エミュレータは、印刷命令に対して、前記情報処理装置に、当該印刷命令で要求されたデータを当該情報処理装置に接続されたプリンタに印刷させる請求項１に記載の情報処理装置。
【請求項８】
前記情報処理装置は、作成されたプログラムを送信する送信手段を更に備える請求項１ないし７のうちいずれか１項に記載の情報処理装置。
【請求項９】
前記送信手段は、プログラムを格納するサーバに前記作成されたプログラムを送信する請求項８に記載の情報処理装置。
【請求項１０】
前記送信手段は、前記画像形成装置からプログラム入力画面データを受信し、当該プログラム入力画面データを用いて前記プログラムを画像形成装置に送信する請求項８に記載の情報処理装置。
【請求項１１】
画像形成装置で実行されるアプリケーションプログラムを開発するために使用される情報処理装置を、
アプリケーションプログラムの命令に対する画像形成装置の動作に相当する動作を前記情報処理装置に実行させるエミュレータとして機能させるプログラム。
【請求項１２】
前記エミュレータは、前記アプリケーションプログラムを解釈し、実行する実行手段を含む請求項１１に記載のプログラム。
【請求項１３】
前記実行手段は仮想マシンである請求項１２に記載のプログラム。
【請求項１４】
ソースコードを前記仮想マシンが実行可能なコードに変換するコンパイラを含む請求項１３に記載のプログラム。
【請求項１５】
前記アプリケーションプログラムはＪａｖａ（登録商標）プログラムであり、当該Ｊａｖａ（登録商標）プログラムが参照するクラスライブラリを更に備えた請求項１４に記載のプログラム。
【請求項１６】
前記エミュレータは、前記情報処理装置に、前記画像形成装置の操作部に相当する画面を表示させる請求項１１に記載のプログラム。
【請求項１７】
前記エミュレータは、前記情報処理装置に、アプリケーションプログラムのリストを表示させ、ユーザにより選択されたアプリケーションプログラムを実行する請求項１１に記載のプログラム。
【請求項１８】
前記エミュレータは、印刷命令に対して、前記情報処理装置に、当該印刷命令で要求されたデータを当該情報処理装置に接続されたプリンタに印刷させる請求項１１に記載のプログラム。
【請求項１９】
前記情報処理装置を、作成されたプログラムを送信する送信手段として更に機能させる請求項１１ないし１８のうちいずれか１項に記載のプログラム。
【請求項２０】
前記送信手段は、プログラムを格納するサーバに前記作成されたプログラムを送信する請求項１９に記載のプログラム。
【請求項２１】
前記送信手段は、前記画像形成装置からプログラム入力画面データを受信し、当該プログラム入力画面データを用いて前記プログラムを画像形成装置に送信する請求項１９に記載のプログラム。
【請求項２２】
請求項１ないし１０のうちいずれか１項に記載の情報処理装置を用いて開発されたプログラム。
【請求項２３】
請求項１１ないし２２のうちいずれか１項に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、アプリケーションプログラムを開発するための情報処理装置とそのためのプログラムに関するものである。
【従来の技術】
近年では、プリンタ、コピー、ファクシミリ、スキャナなどの各装置の機能を１つの筐体内に収納した画像形成装置（以下、「複合機」という。）が知られている。この複合機は、１つの筐体内に表示部、印刷部および撮像部などを設けるとともに、プリンタ、コピーおよびファクシミリ装置にそれぞれ対応した３種類のソフトウェアを設け、これらのソフトウェアを切り替えることによって、当該装置をプリンタ、コピー、スキャナ又はファクシミリ装置として動作させるものである。
【０００２】
このような従来の複合機では、利用者に対し複合機の各種操作を行わせるためのオペレーションパネルが設けられ、このオペレーションパネルに操作画面の表示およびタッチ操作入力を行わせるための操作表示部を表示している。従来の複合機では、予め提供される機能が定められていたため、利用者が複合機に対して行う操作も大きな変更はなく、操作表示部の画面表示やタッチ操作による動作をカスタマイズする必要性はない。このため、従来の複合機には操作表示部のカスタマイズ機能は搭載されていなかった。
【０００３】
【特許文献１】
特開２００２−１５２４４６号公報
【０００４】
【発明が解決しようとする課題】
ところで、このような従来の複合機では、プリンタ、コピー、スキャナおよびファクシミリ装置に対応するソフトウェアをそれぞれ別個に設けているため、各ソフトウェアの開発に多大の時間を要する。このため、出願人は、表示部、印刷部および撮像部などの画像形成処理で使用されるハードウェア資源を有し、プリンタ、コピー又はファクシミリなどの各ユーザサービスにそれぞれ固有の処理を行うアプリケーションを複数搭載し、これらのアプリケーションとハードウェア資源との間に介在して、ユーザサービスを提供する際に、アプリケーションの少なくとも２つが共通に必要とするハードウェア資源の管理、実行制御並びに画像形成処理を行う各種コントロールサービスからなるプラットホームを備えた画像形成装置（複合機）を発明した。なお、各種コントロールサービスが行う処理をシステム側の処理と呼ぶ。
【０００５】
このような新規な複合機では、アプリケーションと、ハードウェア資源にアクセスするような開発が難しい処理を行うコントロールサービスとを別個に設けているため、複合機の出荷後にユーザもしくは第三者であるサードベンダが画像形成処理などにかかるアプリケーションとして新規な外部アプリケーションを開発して複合機に搭載可能な構成となっている。
【０００６】
このため、新たに開発された外部アプリケーションの起動や実行中に操作表示部における画面表示やタッチ操作によって、予め提供されている機能とは異なる実行処理を行わせたい場合がある。このように、新規な複合機では、操作表示部のカスタマイズという、出荷後に外部アプリケーションを搭載することを想定していない従来の複合機では問題にならなかった新規な課題が生じてくる。
【０００７】
このような操作表示部のカスタマイズを、外部アプリケーションの開発段階でソースコードを記述し、ソースコードをコンパイルおよびリンクすることによって行うことが考えられる。すなわち、外部アプリケーションの開発段階で、外部アプリケーション自体の処理の中に操作表示部のタッチ操作に伴う実行処理を開発する場合が多くなる。この場合、操作表示部のタッチ操作に伴う実行処理の検証を逐次行いながら外部アプリケーション自体の開発を進めていくことがプログラム開発効率上好ましい。しかしながら、タッチ操作に伴う実行処理に障害を検出するたびに、ソースコードの修正、再コンパイル、再リンクを行って、開発対象の複合機に再インストールし、動作検証を行わなければならないとすると、プログラム開発の効率が悪くなるという問題がある。
【０００８】
また、操作表示部のカスタマイズに限らず、複合機とは別のＰＣ等の環境でのプログラムの作成と、複合機での動作検証とによる従来のプログラム開発は効率が悪いという問題がある。
【０００９】
この発明は上記に鑑みてなされたもので、アプリケーションプログラム開発効率を向上させることができる情報処理装置およびプログラムを得ることを目的とする。
【課題を解決するための手段】
上記の課題は以下の発明によって解決できる。
【００１０】
請求項１に記載の発明は、画像形成装置で実行されるプログラムを開発するために使用される情報処理装置であって、プログラムを解釈し、実行する実行手段と、当該プログラムの命令に対する画像形成装置の動作に相当する動作を前記情報処理装置に実行させるエミュレータとを備える。
【００１１】
本発明によれば、実行手段により実行されたプログラムによりなされる画像形成装置に対する命令に対する動作に相当する動作を、エミュレータが情報処理装置に対して実行するので、情報処理装置上で、プログラムの動作確認を行うことができ、プログラムの開発効率が向上する。
【００１２】
請求項２に記載の発明は、請求項１の記載において、前記実行手段は仮想マシンであるとするものである。仮想マシンを搭載することにより、Ｊａｖａ（登録商標）プログラムを実行できる。
【００１３】
請求項３に記載の発明は、請求項２に記載の情報処理装置が、ソースコードを前記仮想マシンが実行可能なコードに変換するコンパイラを更に備えるものである。コンパイラにより、ソースコードをバイトコードに変換できる。
【００１４】
請求項４に記載の発明は、請求項３の記載において、前記プログラムはＪａｖａ（登録商標）プログラムであり、情報処理装置が当該Ｊａｖａ（登録商標）プログラムが参照するクラスライブラリを更に備えるものである。クラスライブラリを備えることにより、種々の機能を提供するＪａｖａ（登録商標）プログラムを開発できる。
【００１５】
請求項５に記載の発明は、請求項１の記載において、前記エミュレータは、前記情報処理装置に、前記画像形成装置の操作部に相当する画面を表示させる。
【００１６】
本発明により、情報処理装置上で画像形成装置の表示部における操作と同様の操作を行うことができる。
【００１７】
請求項６に記載の発明は、請求項１の記載において、前記エミュレータは、前記情報処理装置に、プログラムのリストを表示させ、ユーザにより選択されたプログラムを実行するものである。
【００１８】
本発明によれば、ユーザは所望のプログラムを実行させてプログラムのテストを行うことができる。
【００１９】
請求項７に記載の発明は、請求項１の記載において、前記エミュレータは、印刷命令に対して、前記情報処理装置に、当該印刷命令で要求されたデータを当該情報処理装置に接続されたプリンタに印刷させるものである。
【００２０】
本発明によれば印刷命令の確認を行うことができる。
【００２１】
請求項８に記載の発明は、請求項１ないし７のうちいずれか１項に記載の情報処理装置が、作成されたプログラムを送信する送信手段を更に備えるというものである。
【００２２】
本発明によれば、作成されたプログラムを例えば画像形成装置に送信できる。
【００２３】
また、請求項９に記載の発明は、請求項８の記載において、前記送信手段は、プログラムを格納するサーバに前記作成されたプログラムを送信するというものである。
【００２４】
上記の発明によれば、上記のサーバにプログラムを格納できるので、画像形成装置がサーバからプログラムをダウンロードできる。
【００２５】
請求項１０に記載の発明は、請求項８の記載において、前記送信手段は、前記画像形成装置からプログラム入力画面データを受信し、当該プログラム入力画面データを用いて前記プログラムを画像形成装置に送信するものである。
【００２６】
本発明によれば、画像形成装置から受信したプログラム入力画面データを用いるので、容易にプログラムを送信することができる。
【００２７】
請求項１１〜２１に記載の発明は、画像形成装置のエミュレータを含むプログラムの発明である。また、請求項２１に記載の発明は、上記の情報処理装置を用いて開発されたプログラムの発明である。請求項２３に記載の発明はプログラムを記録した記録媒体の発明である。
【００２８】
【発明の実施の形態】
以下に添付図面を参照して、この発明にかかる画像形成装置および操作表示部プログラム生成方法の好適な実施の形態を詳細に説明する。
【００２９】
（実施の形態１）
図１は、この発明の実施の形態１である画像形成装置（以下、「複合機」という）の主要部の構成とネットワーク構成を示すブロック図である。実施の形態１にかかる複合機１００は、インターネットに接続され、当該インターネットに接続されたＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  ）などのクライアント端末から複合機の操作を行うオペレーションパネルの操作表示部のカスタマイズプログラムの入力およびデバッグ作業を行うことを可能としたものである。
【００３０】
図１に示すように、複合機１００とＰＣ２００は、インターネット２２０で接続されており、通信プロトコルとしてＴＣＰ／ＩＰを利用している。複合機１００は、複合機初期化部１２９と、プログラム起動部１３１と、プログラミングサービス１３２と、インタプリタ１３４と、ＮＣＳ（ネットワークコントロールサービス）１２８と、ｈｔｔｐｄ（ｈｔｔｐデーモン）１０６と、共有メモリ１０５と、ＨＤＤ１０３とを備えた構成となっている。
【００３１】
プログラミングサービス１３２は、ネットワークに接続されたクライアント端末としてのＰＣ２００のＷＥＢブラウザに後述するｈｔｔｐファイルで構成されたＷＥＢページであるプログラミング画面２０１を表示し、このプログラミング画面２０１からオペレーションパネル２１０の操作表示部のカスタマイズプログラムを入力させるものである。また、プログラミングサービス１３２は、ＰＣから入力されたカスタマイズプログラムをＨＤＤ１０３のカスタマイズ領域として作成されたカスタマイズディレクトリ２１２に保存する。さらに、プログラミングサービス１３２は、複合機１００上でカスタマイズプログラムが実行されるように、後述する起動設定ファイル２１１に入力されたカスタマイズプログラムを登録する。
【００３２】
ここで、プログラミングサービス１３２とＰＣ２００のＷＥＢブラウザの間のプログラミング画面などのｈｔｔｐファイルの転送は、ｈｔｔｐプロトコルに従って行われる。このため、プログラミングサービス１３２は、Ｗｅｂサーバ（ｈｔｔｐ  サーバ）としての役割も担っている。
【００３３】
カスタマイズプログラムは、インタプリタで解釈可能な言語で記述され、具体的には、汎用ＯＳがＵＮＩＸ（登録商標）の場合、シェルスクリプトである。
【００３４】
インタプリタ１３４は、カスタマイズプログラムをステップごとに解析し逐次実行するものであり、本実施の形態では、シェルスクリプトを実行するシェル（ｂｓｈ，ｃｓｈなど）である。このシェル１３４は、汎用ＯＳ１２１としてのＵＮＩＸ  （登録商標）にＯＳのカーネル１３５とは別個に存在するものである。
【００３５】
プログラム起動部１３１は、ＨＤＤ１０３の診断結果が正常である場合に、ＨＤＤ１０３にインストールされている外部アプリ１１７を起動するものである。また、プログラム起動部１３１は、ＩＣカードなどの記憶媒体に保存された外部アプリ１１７を起動する。
【００３６】
複合機初期化部１２９は、汎用ＯＳ１２１の上で最初に起動されるプロセスであり、コントロールサービスやアプリケーション１３０（外部アプリ１１７を除く）の起動およびプログラム起動部１３１の起動を行うものである。
【００３７】
ＮＣＳ１２８は、ネットワークを制御するものであり、ｈｔｔｐｄ１０６から通知されたリクエストメッセージ受信の旨をプログラミングサービス１３２に通知する。
【００３８】
ｈｔｔｐｄ１０６は、ＯＳに含まれるプロセス（デーモン）であり、ポート８０番を常時監視してリクエストメッセージの受信を行うとともに、レスポンスメッセージの送信を行うものである。なお、リクエストメッセージおよびレスポンスメッセージの構造は、通常のｈｔｔｐプロトコルにおける各メッセージの構造と同様であり、各メッセージには、ｈｔｍｌ形式で記述されたメッセージボディが含まれている。また、ｈｔｔｐｄ１０６は、インターネット２２０経由で受信したリクエストメッセージ受信の旨をＮＣＳ１２８に通知するとともに、リクエストメッセージを共有メモリ１０５  に格納する。
【００３９】
この共有メモリ１０５は、ｈｔｔｐｄ１０６とプログラミングサービス１３２とのプロセス間通信に利用されるものであり、共有メモリ１０５を介してリクエストメッセージ、レスポンスメッセージなどの受け渡しを行う。
【００４０】
ＨＤＤ１０３には、起動設定ファイル２１１が格納され、またＨＤＤ１０３のカスタマイズディレクトリ２１２にカスタマイズプログラムが格納される。
【００４１】
ＰＣ２００は、複合機１００のプログラミングサービス１３２をサーバとしたクライアント端末であり、ＰＣ２００で実行されるＷＥＢブラウザにプログラミングサービス１３２からｈｔｔｐプロトコルで送信されたプログラミング画面２０１やその他画面を表示し、操作入力を行えるように構成されている。
【００４２】
次に、本実施の形態にかかる複合機１００の全体の機能的構成について説明する。図２は、実施の形態１の複合機１００の構成を示すブロック図である。図２に示すように、複合機１００は、白黒ラインプリンタ（Ｂ＆Ｗ  ＬＰ）１０１と、カラーラインプリンタ（Ｃｏｌｏｒ  ＬＰ）１０２と、ハードディスク装置（ＨＤＤ）１０３と、スキャナ、ファクシミリ、メモリ、ネットワークインタフェースなどのハードウェアリソース１０４を有するとともに、プラットホーム１２０と、アプリケーション１３０と、複合機初期化部１２９と、プログラム起動部１３１と、プログラミングサービス１３２とから構成されるソフトウェア群１１０とを備えている。
【００４３】
プラットホーム１２０は、アプリケーションからの処理要求を解釈してハードウェア資源の獲得要求を発生させるコントロールサービスと、一又は複数のハードウェア資源の管理を行い、コントロールサービスからの獲得要求を調停するシステムリソースマネージャ（ＳＲＭ）１２３と、汎用ＯＳ１２１とを有する。
【００４４】
コントロールサービスは、複数のサービスモジュールから形成され、ＳＣＳ（システムコントロールサービス）１２２と、ＥＣＳ（エンジンコントロールサービス）１２４と、ＭＣＳ（メモリコントロールサービス）１２５と、ＯＣＳ（オペレーションパネルコントロールサービス）１２６と、ＦＣＳ（ファックスコントロールサービス）１２７と、ＮＣＳ（ネットワークコントロールサービス）１２８とから構成される。また、プログラミングサービス１３２も、コントロールサービス層に含まれている。なお、このプラットホーム１２０は、あらかじめ定義された関数により前記アプリケーション１３０から処理要求を受信可能とするアプリケーションプログラムインタフェース（ＡＰＩ）を有する。
【００４５】
汎用ＯＳ１２１は、ＵＮＩＸ（登録商標）などの汎用オペレーティングシステムであり、プラットホーム１２０並びにアプリケーション１３０の各ソフトウェアをそれぞれプロセスとして並列実行する。
【００４６】
ＳＲＭ１２３のプロセスは、ＳＣＳ１２２とともにシステムの制御およびリソースの管理を行うものである。ＳＲＭ１２３のプロセスは、スキャナ部やプリンタ部などのエンジン、メモリ、ＨＤＤファイル、ホストＩ／Ｏ（セントロＩ／Ｆ、ネットワークＩ／Ｆ  、ＩＥＥＥ１３９４  Ｉ  ／Ｆ、ＲＳ２３２Ｃ  Ｉ／Ｆなど）のハードウェア資源を利用する上位層からの要求にしたがって調停を行い、実行制御する。
【００４７】
具体的には、このＳＲＭ１２３は、要求されたハードウェア資源が利用可能であるか（他の要求により利用されていないかどうか）を判断し、利用可能であれば要求されたハードウェア資源が利用可能である旨を上位層に伝える。また、ＳＲＭ１２３は、上位層からの要求に対してハードウェア資源の利用スケジューリングを行い、要求内容（例えば、プリンタエンジンにより紙搬送と作像動作、メモリ確保、ファイル生成など）を直接実施している。
【００４８】
ＳＣＳ１２２のプロセスは、アプリ管理、操作部制御、システム画面表示、ＬＥＤ表示、リソース管理、割り込みアプリ制御などを行う。
【００４９】
ＥＣＳ１２４のプロセスは、白黒ラインプリンタ（Ｂ＆Ｗ  ＬＰ）１０１、カラーラインプリンタ（Ｃｏｌｏｒ  ＬＰ）１０２、スキャナ、ファクシミリなどからなるハードウェアリソース１０３のエンジンの制御を行う。
【００５０】
ＭＣＳ１２５のプロセスは、画像メモリの取得および解放、ハードディスク装置（ＨＤＤ）の利用、画像データの圧縮および伸張などを行う。
【００５１】
ＦＣＳ１２７のプロセスは、システムコントローラの各アプリ層からＰＳＴＮ／ＩＳＤＮ  網を利用したファクシミリ送受信、ＢＫＭ  （バックアップＳＲＡＭ）で管理されている各種ファクシミリデータの登録／引用、ファクシミリ読みとり、ファクシミリ受信印刷、融合送受信を行うためのＡＰＩを提供する。
【００５２】
ＮＣＳ１２８のプロセスは、ネットワークＩ／Ｏ  を必要とするアプリケーションに対して共通に利用できるサービスを提供するためのプロセスであり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、アプリケーションからデータをネットワーク側に送信する際の仲介を行う。具体的には、ｆｔｐｄ、ｌｐｄ、ｓｎｍｐｄ、ｔｅｌｎｅｔｄ、ｓｍｔｐｄなどのサーバデーモンや、同プロトコルのクライアント機能などを有している。
【００５３】
ＯＣＳ１２６のプロセスは、オペレータ（ユーザ）と本体制御間の情報伝達手段となるオペレーションパネル（操作パネル）２１０の制御を行う。ＯＣＳ１２６は、オペレーションパネルからキー押下（又はタッチ操作）をキーイベントとして取得し、取得したキーに対応したキーイベント関数をＳＣＳ１２２に送信するＯＣＳプロセスの部分と、アプリケーション１３０又はコントロールサービスからの要求によりオペレーションパネルに各種画面を描画出力する描画関数やその他オペレーションパネルに対する制御を行う関数などがあらかじめ登録されたＯＣＳライブラリの部分とから構成される。このＯＣＳライブラリは、アプリケーション１３０およびコントロールサービスの各モジュールにリンクされて実装されている。なお、ＯＣＳ１２６のすべてをプロセスとして動作させるように構成しても良く、あるいはＯＣＳ１２６のすべてをＯＣＳライブラリとして構成しても良い。
【００５４】
アプリケーション１３０は、ページ記述言語（ＰＤＬ）、ＰＣＬおよびポストスクリプト（ＰＳ）を有するプリンタ用のアプリケーションであるプリンタアプリ１１１と、コピー用アプリケーションであるコピーアプリ１１２と、ファクシミリ用アプリケーションであるファックスアプリ１１３と、スキャナ用アプリケーションであるスキャナアプリ１１４と、ネットワークファイル用アプリケーションであるネットファイルアプリ１１５と、工程検査用アプリケーションである工程検査アプリ１１６  とを有している。
【００５５】
アプリケーション１３０の各プロセス、コントロールサービスの各プロセスは、関数呼び出しとその戻り値送信およびメッセージの送受信によってプロセス間通信を行いながら、コピー、プリンタ、スキャナ、ファクシミリなどの画像形成処理にかかるユーザサービスを実現している。
【００５６】
このように、実施の形態１にかかる複合機１００には、複数のアプリケーション１３０および複数のコントロールサービスが存在し、いずれもプロセスとして動作している。そして、これらの各プロセス内部には、一又は複数のスレッドが生成されて、スレッド単位の並列実行が行われる。そして、コントロールサービスがアプリケーション１３０に対し共通サービスを提供しており、このため、これらの多数のプロセスが並列動作、およびスレッドの並列動作を行って互いにプロセス間通信を行って協調動作をしながら、コピー、プリンタ、スキャナ、ファクシミリなどの画像形成処理にかかるユーザサービスを提供するようになっている。
【００５７】
また、複合機１００には、複合機１００の顧客、サードベンダなどの第三者がコントロールサービス層の上のアプリケーション層に外部アプリを開発して搭載することが可能となっている。
【００５８】
なお、実施の形態１にかかる複合機１００では、複数のアプリケーション１３０のプロセスと複数のコントロールサービスのプロセスとが動作しているが、アプリケーション１３０とコントロールサービスのプロセスがそれぞれ単一の構成とすることも可能である。また、各アプリケーション１３０は、アプリケーションごとに追加又は削除することができる。
【００５９】
また、複合機１００はインストーラを含む。インストーラは、第三者が開発した外部アプリ１１７を、ＨＤＤ１０３にインストールするものである。本実施の形態にかかる複合機１００では、フラッシュカードなどのＩＣカードの記憶媒体に外部アプリ１１７を格納し、インストーラによって外部アプリ１１７をＨＤＤ１０３にインストールし、プログラム起動部１３１によって、ＨＤＤ１０３から外部アプリ１１７を起動してアプリケーション層で動作させるようになっている。一方、プリンタアプリ１１１、コピーアプリ１１２、ファックスアプリ１１３、スキャナアプリ１１４、ネットファイルアプリ１１５、工程検査アプリ１１６などの複合機１００の出荷時に提供されるアプリケーション１３０、各コントロールサービス、ＨＤＤ診断部１３２およびプログラム起動部１３１は、フラッシュメモリに出荷時に組み込まれており、複合機１００の起動時（電源投入時）に複合機初期化部１２９によって起動されるようになっている。
【００６０】
図３に複合機１００のハードウェア構成例を示す。
【００６１】
複合機１００は、コントローラ１６０と、オペレーションパネル１７５と、ファックスコントロールユニット（ＦＣＵ）１７６と、プリンタ等の画像形成処理に特有のハードウェア資源であるエンジン部１７７とを含む。コントローラ１６０は、ＣＰＵ１６１と、システムメモリ１６２と、ノースブリッジ（ＮＢ）１６３と、サウスブリッジ（ＳＢ）１６４と、ＡＳＩＣ１６６と、ローカルメモリ１６７と、ＨＤＤ１６８と、ネットワークインターフェースカード（ＮＩＣ）１６９と、ＳＤカード用スロット１７０と、ＵＳＢデバイス１７１と、ＩＥＥＥ１３９４デバイス１７２と、セントロニクス１７３とを含む。なお、メモリ１６２、１６７はＲＡＭ、ＲＯＭ等を含む。ＦＣＵ１７６およびエンジン部１７７は、コントローラ１６０のＡＳＩＣ１６６にＰＣＩバス１７８で接続されている。
【００６２】
ＣＰＵ１６１が、複合機１００にインストールされるアプリケーション、コントロールサービス等のプログラムを、メモリから読み出して実行する。
【００６３】
次に、以上のように構成された本実施の形態にかかる複合機１００によるプログラム作成方法について説明する。まず、利用者は、ＰＣ２００でＷＥＢブラウザを起動し、複合機１００上にあるプログラミング画面のＷＥＢページのＵＲＬ（例えば、ｈｔｔｐ：／／ｗｗｗ．ｘｘｘ．ｙｙｙ／ｚｚｚ／ｄｅｂｕｇ．ｈｔｍ）を指定して複合機１００のプログラミングサービス１３２にアクセスする。ＷＥＢブラウザからのアクセスを受けたプログラミングサービス１３２は、プログラミング画面２０１（ｄｅｂｕｇ．ｈｔｍ  ）をＰＣ２００のＷＥＢブラウザに表示させる。
【００６４】
図７は、プログラミング画面２０１の内容の一例を示す説明図である。図７に示すように、プログラミング画面２０１には、プログラム入力フィールドと、参照ボタンと、アップロードボタンと、保存ボタンと、消去ボタンと、テスト実行ボタンと、実行設定ボタンが表示される。
【００６５】
ここで、プログラミング画面２０１は、ｈｔｍｌ形式（Ｈｙｐｅｒ  ＴｅｘｔＭａｒｋｕｐ  Ｌａｎｇｕａｇｅ）で記述されたファイル（ｄｅｂｕｇ．ｈｔｍ）がブラウザによって表示されたものである。また、プログラミングサービス１３２は、プログラミング画面（ｄｅｂｕｇ．ｈｔｍ）からの操作入力や要求に応じたカスタマイズプログラムの入力に関する処理等を、ＣＧＩ（Ｃｏｍｍｏｎ  Ｇａｔｅｗａｙ  Ｉｎｔｅｒｆａｃｅ）のスクリプトを実行することによって行い、その処理結果をプログラミング画面（ｄｅｂｕｇ．ｈｔｍ）に反映して、ＰＣ２００のＷＥＢブラウザに返す。
【００６６】
具体的には、プログラミングサービス１３２は、カスタマイズプログラムの入力処理等の要求（ボタンのクリック操作等）があった場合には、ｄｅｂｕｇ．ｃｇｉのスクリプトを実行する。なお、本実施の形態では、ＣＧＩスクリプトを実行することにより、ＷＥＢアプリ１１１７による各処理を実行しているが、ＣＧＩスクリプトから呼び出される別のプログラムで実行するように構成しても良い。なお、プログラミング画面を、ＸＭＬ形式（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ  ）で記述するように構成することも可能である。
【００６７】
参照ボタンは、ブラウザが動作しているＰＣ２００の記憶領域に格納されたカスタマイズプログラムを参照するためのボタンであり、この参照ボタンを押下すると、ＰＣ２００の記憶領域内のディレクトリが表示され、所望のディレクトリに存在するカスタマイズプログラムを指定すると、ファイル名フィールドに指定されたカスタマイズプログラムのファイル名が表示される。なお、参照ボタンを押下したときに、複合機１００のＨＤＤ１０３などの記憶媒体のディレクトリを参照するように構成しても良い。
【００６８】
アップロードボタンは、参照ボタンで指定したカスタマイズプログラムあるいは入力フィールドに入力したカスタマイズプログラムを、複合機１００に転送（アップロード）するためにクリック操作するものである。
【００６９】
プログラム入力フィールドは、カスタマイズプログラムを入力する領域である。このプログラム入力フィールドには、ＰＣ２００のキーボードなどの入力装置からカスタマイズプログラムを直接入力する他、上述のように参照ボタンをクリック操作することによってＰＣ２００の所望のディレクトリに存在する既存のプログラムファイルを指定することによってカスタマイズプログラムを入力する。ｄｅｂｕｇ．ｈｔｍにおいて、このプログラム入力フィールドに相当するすべての行の先頭には、「ｐｒｏｇｒａｍ  ＿ｌｉｓｔ：」の文字列が記述されている。
【００７０】
保存ボタンは、入力したカスタマイズプログラムを複合機１００にアップロードした後に、カスタマイズディレクトリに格納する場合にクリック操作するものである。消去ボタンは、入力フィールドに入力されたカスタマイズプログラムを消去する際にクリック操作するものである。
【００７１】
実行設定ボタンは、カスタマイズディレクトリに保存されたカスタマイズプログラムを複合機１００で実行できるように、カスタマイズプログラムとカスタマイズプログラムを実行させるボタンを対応づける際にクリック操作するものである。この実行設定ボタンが押下されると、プログラミングサービス１３２は、カスタマイズプログラム中で指定されたボタン（キー）を、カスタマイズディレクトリに存在する画面ファイル中のボタン（キー）からキーコードに基づいて検索し、カスタマイズプログラムとボタン（キー）との対応付けを行い、カスタマイズプログラムの名称とボタン（キー）のキーコードのキー対応付けテーブルを生成してＨＤＤ１０３又はフラッシュメモリなどに当該テーブルを格納する。
【００７２】
テスト実行ボタンは、入力されたカスタマイズプログラムを試験的に実行する際にクリック操作するものである。
【００７３】
図８は、入力するカスタマイズプログラムの内容の一例を示す説明図である。図８に示すように、本実施の形態では、カスタマイズプログラムはＵＮＩＸ（登録商標）のシェルスクリプトである。入力されたシェルスクリプトは、汎用ＯＳ１２１（ＵＮＩＸ（登録商標））のコマンド・インタプリタであるシェル１３４によってステップごとに逐次実行される。このため、入力したカスタマイズプログラムのコンパイルおよびリンクは不要である。
【００７４】
また、シェルスクリプトには、開発ライブラリで提供される複合機専用コマンドを指定できるようになっている。図８のスクリプトは、原稿をスキャナで読み込み（ｓｃａｎｉｍａｇｅ）、読み込み時にＴＩＦ形式に圧縮された画像データを伸長し（ｄｅｃｏｍｐ）、伸長した画像データに対し文字認識処理を行う（ｏｃｒ）。そして、文字認識処理による認識結果をテキストデータとしてメール送信（ｍａｉｌ）する例を示している。このスクリプトの中で、ｓｃａｎｉｍａｇｅ，ｄｅｃｏｍｐ，ｏｃｒの各コマンドが開発ライブラリで提供されるコマンドである。また、カスタマイズプログラムには、このシェルスクリプトを実行するためのボタン（キー）の指定が可能となっている。
【００７５】
ＰＣ２００のＷＥＢブラウザに表示されているプログラミング画面２０１（ｄｅｂｕｇ．ｈｔｍ）において、参照ボタンをクリックしてＰＣ２００に格納されているカスタマイズプログラムを指定し、あるいはプログラム入力フィールドに直接カスタマイズプログラムを入力し、アップロードボタンをクリック操作した場合、ＷＥＢブラウザから複合機１００のプログラミングサービス１３２に対しリクエストメッセージが送信される。このリクエストメッセージのメッセージボディにはｄｅｂｕｇ．ｈｔｍが含められており、このｄｅｂｕｇ．ｈｔｍには、アップロードボタンをクリック操作したときにｄｅｂｕｇ．ｃｇｉを呼び出す旨が記述されている。このためリクエストメッセージを受信して解析を行ったプログラミングサービス１３２は、ｄｅｂｕｇ．ｃｇｉを実行する。
【００７６】
ここで、リクエストメッセージを受信した複合機１００における処理について説明する。図４は、リクエストメッセージを受信した複合機１００における処理の手順を示すフローチャートである。
【００７７】
ｈｔｔｐｄ１０６は、ポート８０番を常時監視しており、ＰＣ２００からリクエストメッセージをポート８０番で受信する（ステップＳ３０１）。そして、ｈｔｔｐｄ１０６は、受信したリクエストメッセージを読み出し、リクエストメッセージを共有メモリ１０５に書き込む（ステップＳ３０２）。次に、ｈｔｔｐｄ１０６は、リクエストメッセージ受信の旨をＮＣＳ１２８に通知する（ステップＳ３０３  ）。
【００７８】
通知を受けたＮＣＳ１２８は、さらにリクエストメッセージ受信の旨をプログラミングサービス１３２に通知する（ステップＳ３０４）。プログラミングサービス１３２は、リクエストメッセージ受信の旨の通知を受けたことをトリガとして、共有メモリ１０５を参照して、リクエストメッセージを読み出す（ステップＳ３０５）。そして、リクエストメッセージの内容を解析して（ステップＳ３０６）、リクエストメッセージのメッセージボディに記述された内容に応じた処理を実行する（ステップＳ３０７）。このとき、メッセージボディのｈｔｍｌ記述にＣＧＩを実行する旨が記述されていれば、対応するＣＧＩを実行する。
【００７９】
そして、プログラミングサービス１３２は、処理の実行結果をレスポンスメッセージとして、ｈｔｔｐｄ１０６経由でリクエストメッセージの送信元であるＰＣ２００  に返信する（ステップＳ３０８）。
【００８０】
次に、プログラミングサービス１３２によるｄｅｂｕｇ．ｃｇｉの処理について説明する。図５は、ｄｅｂｕｇ．ｃｇｉの処理の手順を示すフローチャートである。なお、プログラミングサービス１３２がｄｅｂｕｇ．ｃｇｉのプログラムを含んでいてもよいし、ｄｅｂｕｇ．ｃｇｉがプログラミングサービス１３２の外部に存在してもよい。以下、プログラミングサービス１３２がｄｅｂｕｇ．ｃｇｉのプログラムを含む場合について説明する。
【００８１】
プログラミングサービス１３２は、受信したリクエストメッセージの中のｄｅｂｕｇ．ｈｔｍを先頭から一行づつ読み込む（ステップＳ４０１）。そして、読み込んだ行が「ｐｒｏｇｒａｍ＿ｌｉｓｔ：」の文字列を含むか否かを調べることにより、その行がプログラム入力フィールドか否かを判断する（ステップＳ４０２）。
【００８２】
そして、プログラム入力フィールドであると判断した場合には、プログラムファイルに書き出し（ステップＳ４０３）、読み込んだ一行をそのままＰＣ２００に送信する（ステップＳ４０４）。
【００８３】
そして、読み込んだ行が最終行か否かを判断し（ステップ４０５）、最終行であれば処理を終了し、最終行でなければ上記の処理を次の行に対して行う。これにより、複合機１００において、プログラムファイルが作成され、ＰＣ２００のＷＥＢブラウザには、複合機１００にアップロードされたプログラムの内容が順次表示されることになる。
【００８４】
上記の方法の他、ＰＣ２００で入力したプログラムを複合機に送信するには種々の方法がある。例えば、アップロードボタンを押すことにより、ＰＣ２００で入力したプログラムをＰＣ２００でプログラムファイルとし、それを複合機に送信する。複合機では、そのプログラムファイルの内容を格納し、必要に応じて格納したプログラムファイルの内容をＰＣ２００に送信する。
【００８５】
このようにプログラミング画面２０１から入力されたカスタマイズプログラムが複合機１００にアップロードされ、プログラム入力フィールドにアップロード後のカスタマイズプログラムが表示された後、保存ボタン、実行設定ボタン、テスト実行ボタンのクリック操作が可能となる。これらのいずれかのボタンをクリック操作した場合におけるプログラミングサービス１３２の処理について説明する。
【００８６】
図６は、プログラミング画面２０１において、保存ボタン、実行設定ボタン、テスト実行ボタンのいずれかのクリック操作が行われた場合のプログラミングサービス１３２の処理の手順を示すフローチャートである。以下の処理は、プログラミングサービス１３２におけるＣＧＩスクリプトとしてのＪａｖａ（登録商標）Ｓｃｒｉｐｔが実行する。すなわち、プログラミング画面２０１におけるボタン操作をＰＣ２００が検出してそのイベントをプログラミングサービスに送信し、プログラミングサービス１３２はそのイベントに応じたＪａｖａ（登録商標）Ｓｃｒｉｐｔを実行する。以下、Ｊａｖａ（登録商標）Ｓｃｒｉｐｔがプログラミングサービス１３２に含まれているものとして説明する。
【００８７】
まず、プログラミングサービス１３２は、クリック操作されたボタンの種類を判断する（ステップＳ５０１）。プログラミング画面２０１で保存ボタンがクリックされた場合には、プログラミングサービス１３２は、ファイル名称を利用者に指定させ、カスタマイズプログラムを指定された名称で複合機１００のＨＤＤ１０３のカスタマイズディレクトリに格納する（ステップＳ５０２  ）。
【００８８】
図９は、カスタマイズディレクトリに格納されたカスタマイズプログラムの名称の一例を示す説明図である。図９に示すように、複合機１００のＨＤＤ１０３のカスタマイズディレクトリは、ｈｄｄ／ｘｘｘ／ｏｐｅｐａｎｅとなっており、このカスタマイズディレクトリにカスタマイズプログラムであるｓｈｅｌｌ１，ｓｈｅｌｌ２  ，ｓｈｅｌｌ３  が格納されている。
【００８９】
一方、プログラミング画面２０１で実行設定ボタンが押下された場合には、プログラミングサービス１３２は、上述のようにカスタマイズプログラムとボタンとの対応付けを行う（ステップＳ５０３）。
【００９０】
図１０は、キー対応付けテーブルの内容の一例を示す説明図である。図１０に示すように、キー対応付けテーブルには、ボタンのキーコードとカスタマイズプログラム名称が対応付けられている。
【００９１】
また、プログラミング画面２０１でテスト実行ボタンが押下された場合には、プログラミングサービス１３２は、格納されたカスタマイズプログラムの実行を行う（ステップＳ５０４）。これは、例えば、プログラミングサービス１３２がカスタマイズプログラをシェルで実行するためのコマンドを実行することによっておこなわれる。
【００９２】
このとき、テスト実行によって、オペレーションパネル２１０に表示される画面と同一の画面をＰＣ２００で動作しているブラウザに表示する。これは、例えば、プログラミングサービス１３２が、プログラムのテスト実行により発生するオペレーションパネル画面への描画命令等を取得し、その描画命令に対応して表示される画面内容と同じ内容をＰＣ２００の画面に表示するような命令をＰＣ２００に対して送信することにより実現できる。
【００９３】
テスト実行によってエラーが出た場合には、ＰＣ２００でプログラムの修正を行い、修正したプログラムをアップロードし、再びテスト実行をする。
【００９４】
次に、このようにして生成されたカスタマイズプログラムの実行処理について説明する。図１１は、複合機１００の電源投入が行われてから、カスタマイズプログラムの実行が可能となるまでの一連の処理の手順を示すフローチャートである。
【００９５】
カスタマイズプログラムのカスタマイズディレクトリへの保存および起動設定ファイル２１１への設定が完了したら、利用者は複合機１００の電源を再投入する。このとき複合機１００では、ＲＯＭモニタ（図示せず）によってハードウェアの診断処理を行い（ステップＳ１００１）、その後汎用ＯＳ１２１を起動し（ステップＳ１００２）、さらに複合機初期化部１２９を起動する（ステップＳ１００３  ）。複合機初期化部１２９は、まずコントロールサービスの起動を行い（ステップＳ１００４）、続いてコピーアプリ１１２、プリンタアプリ１１１などの複合機１００の出荷時に提供されている既存アプリを起動し（ステップＳ１００５  ）、さらに出荷後新たに開発された外部アプリなどのプログラムを起動するためにプログラム起動部１３１を起動する（ステップＳ１００６  ）。
【００９６】
プログラム起動部１３１は、まずＨＤＤ１０３の起動設定ファイル２１１を参照し（ステップＳ１００７）、起動すべきプログラムの名称を取得する。
【００９７】
図１２は、起動設定ファイル２１１の一例を示す説明図である。図１２に示すように、起動設定ファイル２１１には、「プログラム名称  カスタマイズプログラム名」の形式で、プログラム起動部１３１によって起動されるプログラムが登録されている。図１２の例では、シェルスクリプトであるシェルのプログラムが最初に登録され、その後に、外部アプリとしてｘｘｘアプリが登録されている。
【００９８】
このため、図１２の例では、プログラム起動部１３１は、まずシェルを起動し、次いで、外部アプリであるＸＸＸアプリを順に起動するように設定されている。このため、プログラム起動部１３１は、まずインタプリタ１３４（シェル）を起動し（ステップＳ１００８）、次いで、外部アプリであるＸＸＸアプリを順に起動する（ステップＳ１００９）。
【００９９】
オペレーションパネル２１０の操作表示部に表示されたボタン（キー）の中で、カスタマイズプログラムが割り付けられたボタン（キー）を押下（タッチ操作）すると、シェルスクリプトで記述されたカスタマイズプログラムがシェルによって実行される。これは例えば次のようにして実行される。
【０１００】
すなわち、カスタマイズプログラムが割り付けられたボタン（キー）の押下情報をプログラミングサービス１３２が取得し、キー対応付けテーブルを参照することによりそのボタンに対応するカスタマイズプログラムファイル名を取得する。そして、そのカスタマイズプログラムをシェルで実行するための命令を実行する。なお、上記の起動設定ファイルにカスタマイズプログラムを設定することにより、カスタマイズプログラムを実行してもよい。
【０１０１】
このように実施の形態１にかかる複合機１００では、プログラミングサービス１３２によって、ネットワーク上のＰＣ２００に、カスタマイズプログラムのプログラミング画面を表示し、この画面からカスタマイズプログラムを入力させ、複合機１００のシェル１３４によって、カスタマイズプログラムを実行する。これにより、カスタマイズプログラムの開発において、プログラミング画面から追加、修正ができ、また追加修正による再コンパイル、再リンクなしに複合機１００で実行でき、プログラムの作成を容易に行うことができる。
【０１０２】
また、実施の形態１にかかる複合機１００では、プログラミングサービス１３２によって、インターネットに接続されたＰＣ２００に対しプログラミング画面を表示し、この画面からカスタマイズプログラムを入力させているので、カスタマイズプログラムの入力を入力が容易なＰＣ２００で行うことができ、複合機１００上でカスタマイズプログラムの作成編集を行う場合に比べて、カスタマイズプログラムの作成をより効率的に行うことができる。
【０１０３】
なお、実施の形態１にかかる複合機１００では、インターネット２２０に接続されたクライアント端末としてのＰＣ２００の要求により、カスタマイズプログラムの入力処理を行っているが、インターネット以外のネットワーク、例えばＬＡＮなどに接続されたクライアント端末からカスタマイズプログラムの入力を行うように構成することも可能である。また、通信プロトコルとしては、ＴＣＰ／ＩＰ以外のプロトコルを利用しても良い。
【０１０４】
また、上記の実施の形態では、複合機からＰＣ２００に対してプログラム入力画面を送信しているが、ＰＣ２００が本実施の形態におけるプログラムの入力、送信などを行うプログラムを備えていてもよい。
【０１０５】
（実施の形態２）
実施の形態１にかかる複合機１００は、ネットワーク接続されたクライアント端末であるＰＣ２００でカスタマイズプログラムを作成して複合機１００に保存するものであったが、この実施の形態２にかかる複合機は、カスタマイズプログラムの入力を複合機１００のオペレーションパネルから行うものである。
【０１０６】
図１３は、実施の形態２にかかる複合機１１００における主要構成を示すブロック図である。なお、複合機１１００の他の構成については、図２に示した実施の形態１の複合機１００の構成と同様である。図１３に示すように、本実施の形態にかかる複合機１１００は、複合機初期化部１２９と、プログラム起動部１３１と、プログラミングサービス１１３２と、インタプリタ（シェル）１３４と、ＨＤＤ１０３とを備えた構成となっている。
【０１０７】
プログラミングサービス１１３２は、オペレーションパネル２１０の操作表示部にプログラミング画面を表示し、表示されたプログラミング画面からカスタマイズプログラムを入力させるものである。また、プログラミングサービス１１３２は、入力されたカスタマイズプログラムをＨＤＤ１０３のカスタマイズ領域として作成されたカスタマイズディレクトリ２１２に保存する。さらに、プログラミングサービス１１３２は、複合機１１００上でカスタマイズプログラムが実行されるように、起動設定ファイルに入力されたカスタマイズプログラムを登録することもできる。
【０１０８】
なお、複合機初期化部１２９、プログラム起動部１３１、シェル１３４の機能およびＨＤＤ１０３の起動設定ファイル２１１およびカスタマイズ領域としてのカスタマイズディレクトリについては、実施の形態１にかかる複合機１００と同様である。
【０１０９】
図１４は、プログラミング画面１１０１の一例を示す説明図である。本実施の形態にかかる複合機１１００において、カスタマイズプログラムを作成するためには、例えば、システム初期設定画面からプログラミングのタグを選択してプログラミング画面を表示させる。
【０１１０】
このプログラミング画面１１０１は、実施の形態１における同画面とほぼ同様に、入力フィールドと、参照ボタンと、保存ボタンと、実行設定ボタンと、テスト実行ボタンとが表示されている。かかるプログラミング画面１１０１では、タッチ操作でキー入力を行うソフトウェアキーボードを操作表示部に表示させて、入力フィールドにカスタマイズプログラムを入力することできる。
【０１１１】
しかしながら、操作表示部の領域サイズや入力の困難さから直接カスタマイズプログラムを入力することは困難である。このため、予めＨＤＤ１０３などの記憶媒体の所望の領域に、ＰＣなどで作成したカスタマイズプログラムをネットワーク経由で格納し、プログラミング画面１１０１上の参照ボタンを押下して、カスタマイズプログラムを選択することにより、入力フィールドにカスタマイズプログラムを表示し、ソフトウェアキーボードを表示させ、プログラムの簡単な修正などだけを入力フィールドで行うことが好ましい。
【０１１２】
そして、カスタマイズプログラムが完成したら、保存ボタンを押下する。これによって、実施の形態１と同様に、プログラミングサービス１１３２によって、カスタマイズプログラムをＨＤＤ１０３のカスタマイズディレクトリに保存する。また、実行設定ボタンを押下すると、実施の形態１と同様に、プログラミングサービス１１３２によって、カスタマイズプログラムとカスタマイズプログラムで指定されたボタン（キー）のキーコードが対応付けられてテーブルとして保存される。なお、作成したカスタマイズプログラムの実行処理については、実施の形態１の複合機１００  と同様である。
【０１１３】
このように実施の形態２にかかる複合機１１００では、プログラミングサービス１１３２によって、オペレーションパネル２１０の操作表示部にプログラミング画面１１０１を表示し、この画面からカスタマイズプログラムを入力させているので、ネットワークに接続されていないスタンドアローンの複合機１１００においてもカスタマイズプログラムを作成することができる。
（実施の形態３）
実施の形態１および２の複合機１００，１１００は、カスタマイズプログラムと操作表示部のボタン（キー）との対応付けをカスタマイズプログラムの記述により行うものであったが、この実施の形態３にかかる複合機は、複合機の電源投入時にカスタマイズプログラムと操作表示部のボタン（キー）との対応付けを動的に行うものである。
【０１１４】
図１５は、実施の形態３にかかる複合機１３００の機能的構成を示すブロック図である。本実施の形態の複合機１３００では、実施の形態１と同様に、ネットワーク上のＰＣ２００でカスタマイズプログラムの作成を行って、複合機１３００のＨＤ１０３に作成されたカスタマイズプログラムを保存して実行する。
【０１１５】
図１５に示すように、本実施の形態の複合機１３００は、オペパネ登録部１３３を備えている点が図２に示す実施の形態１の複合機１００と異なっており、他の構成は実施の形態１の複合機１００と同様である。
【０１１６】
オペパネ登録部１３３は、カスタマイズプログラムを実行させるためのボタン（キー）の割り付けを行うものである。すなわち、オペパネ登録部１３３によって割り付けたボタン（キー）をオペレーションパネル上で押下（タッチ操作）することによって、カスタマイズプログラムが実行される。
【０１１７】
ＰＣ２００上からのカスタマイズプログラムの作成および保存の処理は、実施の形態１のプログラミングサービス１３１と同様に行われる。
【０１１８】
以下、カスタマイズプログラムと操作表示部に表示されるボタン（キー）の割付処理について説明する。カスタマイズプログラムのカスタマイズディレクトリへの保存が完了すると、作成したカスタマイズプログラムをオペレーションパネル２１０のボタン（キー）に割り付けるために、利用者は複合機１００の電源を再投入する。
【０１１９】
図１６は、複合機１３００の電源投入が行われてから、カスタマイズプログラムとボタン（キー）との割り付けが完了するまでの一連の処理の手順を示すフローチャートである。
【０１２０】
複合機１３００の電源投入からプログラム起動部１３１までの処理（ステップＳ１５０１〜Ｓ１５０６）については、実施の形態１の複合機１００による処理（ステップＳ１００１〜Ｓ１００６）と同様である。
【０１２１】
起動されたプログラム起動部１３１は、まずＨＤＤ１０３の起動設定ファイル２１１を参照し（ステップＳ１５０７）、起動すべきプログラムの名称を取得する。図１７は、本実施の形態で使用される起動設定ファイル２１１の内容の一例を示す説明図である。この例では、オペパネ登録部のプログラム、シェルおよび外部アプリであるＸＸＸ  アプリを順に起動するように設定されている。
【０１２２】
このため、プログラム起動部１３１は、まずオペパネ登録部１３３のプログラムを起動する（ステップＳ１５０８）。なお、このオペパネ登録部１３３のプログラムは、予めカスタマイズディレクトリに格納されている。次いで、インタプリタ（シェル）１３４を起動し（ステップＳ１５０９）、最後に、登録されている外部アプリを起動する（ステップＳ１５１０）。
【０１２３】
起動されたオペパネ登録部１３３は、キー割り付け設定画面をオペレーションパネルに表示する（ステップＳ１５１１）。図１８は、キー割り付け設定画面の一例を示す説明図である。図１８に示すように、キー割り付け設定画面には、各カスタマイズプログラムごとに割り付け可能なボタン（キー）が表示され、かかる画面で所望のボタン（キー）を押下（タッチ操作）すると、オペパネ登録部１３３は、該当するカスタマイズプログラムの名称と押下されたボタン（キー）のキーコードとを対応付けて、ＨＤＤ１０３又はフラッシュメモリなどの記憶媒体にテーブル情報として格納する（ステップＳ１５１２）。これによって、オペレーションパネルに表示されるボタン（キー）にカスタマイズプログラムが割り付けられることになる。
【０１２４】
このように実施の形態３にかかる複合機１３００では、プログラミングサービス１３２によって、プログラミング画面２０１を表示してカスタマイズプログラムを入力させ、オペパネ登録部１３３によって、カスタマイズプログラムを操作表示部に表示および入力を行うボタン（キー）に割り付ける。このオペパネ登録部１３３を複合機１３００の電源投入時に起動することにより、カスタマイズプログラムが実行される場合のボタン操作を複合機１３００の起動時に動的に定めることができる。
【０１２５】
なお、本実施の形態では、オペパネ登録部１３３によってボタン（キー）への割り付け処理を行っているが、例えば、ＳＣＳ１２２などのコントロールサービスでボタン（キー）割り付け処理を行うようにしてもよい。これにより、割り付け処理のために別途プログラムを起動する必要が無くなり、効率的な処理が行える。
【０１２６】
（実施の形態４）
実施の形態１〜３の複合機１００，１１００，１３００は、シェルスクリプトとしてカスタマイズプログラムを複合機１００，１３００の汎用ＯＳ１２１で用意されたコマンドインタプリタであるシェル１３４によって実行するものであったが、この実施の形態４にかかる複合機は、シェル１３４以外のインタプリタを使用してカスタマイズプログラムを実行するものである。
【０１２７】
図１９は、実施の形態４にかかる複合機１７００を備えたネットワーク構成図であり、図２０は、実施の形態４にかかる複合機１７００の機能的構成を示すブロック図である。実施の形態４にかかる複合機１７００は、実施の形態１と同様に、ＴＣＰ／ＩＰを利用したインターネットに接続され、当該ネットワークに接続されたクライアント端末であるＰＣ２００からカスタマイズプログラムの入力およびデバッグ作業を行うことを可能としたものである。なお、カスタマイズプログラムとしては、例えば、オペレーションパネル２１０の操作表示部にボタンを表示し、あるボタンを押したときにそのボタンに対応した処理を行うためのプログラムがある。
【０１２８】
本実施の形態の複合機１７００では、カスタマイズプログラムを、Ｖｉｓｕａｌ  Ｂａｓｉｃ（登録商標）言語で記述する。そして、作成されたカスタマイズプログラムを、汎用ＯＳ１２１の配下で動作するＶｉｓｕａｌ  Ｂａｓｉｃインタプリタで実行させている。
【０１２９】
図１９に示すように、複合機１７００は、複合機初期化部１２９と、プログラム起動部１３１と、プログラミングサービス１３２と、Ｖｉｓｕａｌ  Ｂａｓｉｃインタプリタ１７３４（以下、「ＶＢインタプリタ１７３４」という。）と、ＮＣＳ１２８と、ｈｔｔｐｄ１０６と、共有メモリ１０５と、ＨＤＤ１０３とを備えた構成となっている。なお、プログラミングサービス１３２、複合機初期化部１２９、プログラム起動部１３１、ＮＣＳ１２８、ｈｔｔｐｄ１０６の構成および機能、ＨＤＤ１０３に格納される起動設定ファイル２１１の内容およびカスタマイズディレクトリについては、実施の形態１の複合機１００と同様である。
【０１３０】
ＶＢインタプリタ１７３４は、カスタマイズプログラムをステップごとに解析し逐次実行するものである。本実施の形態において、カスタマイズプログラムの作成および保存は、実施の形態１のプログラミングサービス１３２と同様に行われる。
【０１３１】
また、本実施の形態の複合機１７００では、ＶＢインタプリタ１７３４によってカスタマイズプログラムを実行させるため、複合機１７００の起動時にＶＢインタプリタ１７３４も起動させておく必要がある。このため、実施の形態１と同様の起動設定ファイル２１１にＶＢインタプリタ１７３４のプログラム名称を予め設定しておく。
【０１３２】
図２１は、起動設定ファイルの内容の一例を示す説明図である。図２１に示すように、本実施の形態の複合機１７００で使用する起動設定ファイル２１１には、先頭の行に「ＶＢインタプリタプログラム」が設定されている。このため、プログラム起動部１３１は、起動設定ファイル２１１を参照した後、まずＶＢインタプリタ１７３４を起動することになり、これによってカスタマイズプログラムの実行が可能となる。
【０１３３】
このように実施の形態４にかかる複合機１７００では、汎用ＯＳ１２１の配下で動作するＶＢインタプリタによってカスタマイズプログラムを実行するので、汎用ＯＳで提供されるインタプリタよりも高度な処理を行えるインタプリタを利用することができる。従って、ＵＮＩＸ（登録商標）のシェルを用いるよりも高度なプログラムを容易に作成することが可能となる。
【０１３４】
なお、実施の形態４では、ＰＣ２００上ではＶＢインタプリタはインストールされていないが、ＰＣ２００にＶｉｓｕａｌ  Ｂａｓｉｃ開発環境をインストールし、操作表示部の画面設計を含むプログラム作成をＰＣ２００上で行って、生成されたプログラムをファイル転送などを利用して、複合機１７００のカスタマイズディレクトリに格納するように構成しても良い。
【０１３５】
また、実施の形態４の複合機１７００では、インタプリタとしてＶＢインタプリタ１７３４を使用し、開発するカスタマイズプログラムをＶｉｓｕａｌ  Ｂａｓｉｃ言語で記述していたが、この他、インタプリタ用の言語を用いても良い。例えば、複合機１７００にＪａｖａ（登録商標）ＶＭ（仮想マシン）を搭載し、カスタマイズプログラムをＪａｖａ（登録商標）言語で記述するように構成することもできる。
【０１３６】
実施の形態１〜４にかかる複合機では、プログラミングサービス１３２をコントロールサービス層に搭載した構成としているが、アプリケーション層に搭載した構成とすることもできる。
【０１３７】
（実施の形態５）
実施の形態４にかかる複合機は、汎用ＯＳ１２１の配下で動作するインタプリタを使用してカスタマイズプログラムを実行するものであったが、この実施の形態５にかかる複合機１８００は、ＶＢインタプリタ１８０１とＶＢアプリ１８０２をアプリケーション層に搭載した構成としたものである。
【０１３８】
図２２に、実施の形態５に係る複合機の機能構成のブロック図を示す。実施の形態５にかかる複合機は、実施の形態４と同様に、ＴＣＰ／ＩＰを利用したインターネットに接続され、当該ネットワークに接続されたクライアント端末であるＰＣ２００から、カスタマイズプログラムの入力およびデバッグ作業を行うことを可能としたものである。ただし、実施の形態５では、作成されたカスタマイズプログラム（以下、ＶＢアプリと称する）を、アプリケーション層に搭載されたＶｉｓｕａｌ  Ｂａｓｉｃインタプリタ（以下、ＶＢインタプリタと称する）で実行させている。なお、図中、プログラミングサービス１３２をアプリケーション層に搭載した構成としてもよい。
【０１３９】
Ｖｉｓｕａｌ  Ｂａｓｉｃ開発環境をインストールしたＰＣ２００上でＶＢアプリの作成を行い、その作成したＶＢアプリを複合機に転送し、複合機でそのＶＢアプリを格納しておき、オペレーションパネルにおけるアプリ選択等に応じてＶＢアプリを起動してＶＢインタプリタ１８０１により実行するようにする。
【０１４０】
以下、より具体的に説明する。
【０１４１】
図２３は、ＰＣ２００上でＶｉｓｕａｌ  Ｂａｓｉｃ開発環境を用いてＶＢアプリを作成している場面の例を示す図である。
【０１４２】
同図中の画面内にはＰｒｏｊｅｃｔ２−Ｆｏｒｍ２（Ｆｏｒｍ）の表題がついたウィンドウと、Ｐｒｏｊｅｃｔ２−Ｆｏｒｍ２（コード）の表題がついたウィンドウが示されている。
【０１４３】
Ｐｒｏｊｅｃｔ２−Ｆｏｒｍ２（Ｆｏｒｍ）の表題がついたウィンドウは、複合機のオペレーションパネルで表示されるメニュー画面を作成するためのものであり、表示されている状態では、３つのボタンが設定されており、一つは”ＳＣＡＮ”、一つは”ＦＡＸ”あと一つは”ＳＴＡＲＴ”のボタンである。これらのボタンが押された場合に、複合機のスキャニングやファックス送信などの動作が行われるように設計される。
【０１４４】
Ｐｒｏｊｅｃｔ２−Ｆｏｒｍ２（コード）の表題がついたウィンドウは、上記のパネルの画面中にあるボタンが押されたときの動作を記述するプログラミングを行うためのものである。
【０１４５】
図２３に示す状態でプログラムの保存を行うと、Ｐｒｏｊｅｃｔ２．ｖｂｐとＦｏｒｍ２．ｆｒｍという二つのファイルが生成される。Ｐｒｏｊｅｃｔ２．ｖｂｐにはプロジェクトを管理するための情報や、プログラムを実行する際の条件となるものが、変数への値の設定として保存されている。
【０１４６】
Ｆｏｒｍ２．ｆｒｍは、ＶＢインタプリタ１８０１によりインタプリトされるプログラムそのものであり、このＶＢアプリをＰＣ２００から複合機上のプログラミングサービス１３２を介してアップロードする。
【０１４７】
そして、プログラミング画面２０１でテスト実行ボタンが押下された場合には、複合機上のＶＢインタプリタ１８０１が起動され、入力されたＶＢアプリの実行が行われる。このとき、テスト実行によって、オペレーションパネル２１０に表示される画面と同一の画面をＰＣ２００で動作しているブラウザに表示する。
【０１４８】
図２４、２５に、ＶＢインタプリタ１８０１により実行されるＶＢアプリの例を示す。
【０１４９】
図２４に示すＶＢプログラムが複合機において実行されると、まず、ＮＥＸＴＷＩＮボタンを含むウィンドウが表示される。そして、ＮＥＸＴＷＩＮボタンが押されると、ｃａｌｌ（”ｃｈａｎｇｅ＿ｄｉｓｐｌａｙ”，  ”Ｆｏｒｍ２”）により、関数ｃｈａｎｇｅ＿ｄｉｓｐｌａｙ（”Ｆｏｒｍ２”）が実行され、次の画面（Ｆｏｒｍ２ウィンドウ）に切り替わる。
【０１５０】
図２５に、そのＦｏｒｍ２ウィンドウを表示するＶＢプログラムを示す。なお、Ｆｏｒｍ２のＶＢプログラムは、図２３に示した画面に対応する。
【０１５１】
Ｆｏｒｍ２ウィンドウでは、ＳＣＡＮボタンが押されたときに、
2004185595.tif 000003
が実行される。
【０１５２】
最初のＳｃａｎＳｔａｒｔ関数は、Ａ４サイズの原稿をＡＤＦから読み込んで、２値画像としてＴＩＦＦフォーマットでＨＤＤ上のファイル”／ｗｏｒｋ／ｔｅｍｐｆｉｌｅ”で保管することを意味している。この関数をＶＢインタプリタ１８０１が解釈して、複合機に動作を行わせることとなる。
次の行のｇｗＯｐＩｔｅｍＣｒｅａｔｅ（）は複合機におけるＯＣＳ１２６によりその機能が提供されている関数であり、現在表示されている画面に文字列を表示する機能を実行するものである。ｇｗＯｐＩｔｅｍＣｒｅａｔｅ（）は、ＶＢインタプリタ１８０１により、ＯＣＳ１２６への関数コールとして実行される。
【０１５３】
このようにして作成されたＶＢアプリを複合機で実行させるには、図１１に示した起動設定ファイルにＶＢインタプリタとＶＢアプリを設定し、例えば図１０に示した手順と同様にして、ＶＢインタプリタとＶＢアプリを起動する。
【０１５４】
複合機でのＶＢアプリ実行時、オペレーションパネルに表示操作を行うためには次のような処理を行う。まず、ＶＢインタプリタ１８０１は、ＳＣＳ１２２からの画面描画準備完了イベントを待ち、上記のイベントを受け取ったら、初期表示するウィンドウイメージを作成する（ルートウィンドウ生成）。次に、ＶＢアプリが、ルートウィンドウ内の子ウィンドウの生成や文字列表示の関数を実行することにより初期画面を準備する。そして、画面準備完了を示す関数を実行することにより、画面の準備ができたことをＳＣＳ１２２に通知する。次に、オペレーションパネル上でアプリ選択ボタンが選択されると、ＳＣＳ１２２から操作部オーナー移行要求のイベントが発行される。このイベントをＶＢアプリが受け取ると、操作部オーナー移行可能であることを示す関数を実行し、この時点で上記の初期画面が表示される。この後、ＶＢアプリの実質的な処理がＶＢインタプリタ１８０１により実行される。
【０１５５】
上記のように、本実施の形態によれば、ＶＢインタプリタを用いることにより効率良くアプリを開発することが可能となる。
（実施の形態６）
実施の形態５にかかる複合機は、ＶＢインタプリタをアプリケーション層に搭載した構成としたものであったが、実施の形態６にかかる複合機は、Ｊａｖａ（登録商標）実行環境をアプリケーション層に搭載した構成としたものである。
【０１５６】
図２６に、実施の形態６に係る複合機１９００の機能構成のブロック図を示す。同図に示すように、実施の形態６に係る複合機１９００は、アプリケーション層にＪａｖａ（登録商標）実行環境１９０１とＪａｖａ（登録商標）アプリ１９０２を搭載した構成を有している。Ｊａｖａ（登録商標）アプリケーションをＰＣ（パーソナルコンピュータ）などで開発し、それを複合機にダウンロードしてＪａｖａ（登録商標）実行環境１９０１を用いて実行する。なお、このＰＣは、ＣＰＵ、メモリ、ハードディスクなどを有する一般的なコンピュータである。
【０１５７】
図２７は、ＰＣにおけるＪａｖａ（登録商標）開発環境と複合機１９００におけるＪａｖａ（登録商標）実行環境の構成を示す図である。
【０１５８】
同図に示すように、複合機１９００におけるＪａｖａ（登録商標）実行環境は、クラスライブラリ１９１１、仮想マシン１９１２、アプリケーション管理部１９１４を有している。
【０１５９】
クラスライブラリ１９１１は、Ｊａｖａ（登録商標）アプリが容易に複合機を操作するためのサービスを提供するために用いられるクラスライブラリである。本実施の形態におけるクラスライブラリは、例えば、操作パネルクラス、イベントクラス、複合機制御クラス、ネットワークトランザクションクラス、基本的なＪａｖａ（登録商標）クラスライブラリ等から構成される。なお、Ｊａｖａ（登録商標）アプリ自身もクラスの集合であり、そのクラスがクラスライブラリのクラスを呼び出すことにより、アプリの処理が実行される。Ｊａｖａ（登録商標）アプリに、それが使用するクラスライブラリのクラスの機能を全て含めることにより、クラスライブラリ１９１１を搭載しない構成もあり得る。
【０１６０】
Ｊａｖａ（登録商標）のソースコードプログラムはコンパイルして中間コード形式のバイトコードされ、複合機にロードされる。仮想マシン１９１２はそのバイトコードを解釈・実行する。
【０１６１】
アプリケーション管理部１９１４は、Ｊａｖａ（登録商標）アプリを管理する機能を有しており、例えば、Ｊａｖａ（登録商標）アプリのリスト表示、起動や強制終了などのＪａｖａ（登録商標）アプリ実行管理、Ｊａｖａ（登録商標）アプリのロードやバージョンアップ、インストール済みのＪａｖａ（登録商標）アプリの削除、アプリケーション登録のためのパスワード設定等を行う機能を有している。
【０１６２】
より詳細には、図２８に示すように、Ｊａｖａ（登録商標）の実行環境は更にネイティブプログラムインタフェース１９１３を有している。ネイティブプログラムインタフェース１９１３は、仮想マシン１９１２で実行されるＪａｖａ（登録商標）コードが、Ｃ言語などの他のプログラミング言語で書かれたアプリケーションやライブラリと相互運用するための機能を有している。このネイティブプログラムインタフェース１９１３の機構を用いて、アプリはコントロールサービスのＡＰＩにアクセスできる。
【０１６３】
図２７に示すＪａｖａ（登録商標）開発環境は、Ｊａｖａ（登録商標）の実行環境と同様のクラスライブラリ１９２１、仮想マシン１９２２、アプリケーション管理部１９２４を有している。また、更に、バイトコードを生成するためのＪａｖａ（登録商標）コンパイラ１９２５と、アプリによる複合機の操作をエミュレートするエミュレータ１９２３を有している。このＪａｖａ（登録商標）開発環境で開発されたＪａｖａ（登録商標）アプリは、ＩＣカード等の記録媒体を介して複合機のＪａｖａ（登録商標）実行環境にロードできる。また、ネットワークを介してロードすることもできる。
【０１６４】
例えば、図２９に示すように、ＷｅｂサーバにＪａｖａ（登録商標）開発環境で開発したＪａｖａ（登録商標）アプリを格納しておき、Ｊａｖａ（登録商標）実行環境からＷｅｂサーバにアクセスしてＪａｖａ（登録商標）アプリをロードするように構成できる。また、Ｗｅｂサーバの代わりにＦＴＰサーバを使用することもできる。
【０１６５】
（Ｊａｖａ（登録商標）アプリケーションの開発）
次に、Ｊａｖａ（登録商標）開発環境でのＪａｖａ（登録商標）アプリの開発について詳細に説明する。
【０１６６】
図３０は、Ｊａｖａ（登録商標）アプリ開発の流れを示す図である。このように、まず、Ｊａｖａ（登録商標）のソースコードをＪａｖａ（登録商標）ファイルとして作成し、これをＪａｖａ（登録商標）コンパイラでコンパイルし、クラスファイルとする。そして、複数のクラスをまとめてＪａｒファイルとする。なお、Ｊａｒファイルにはｍａｉｎルーチンを持つクラスを示すファイルを含めておくことが好ましい。
【０１６７】
このようにして作成したＪａｖａ（登録商標）アプリを、これまでに説明した実施の形態と同様にして複合機上でテスト実行することにより、デバッグを行うことが可能であるが、本実施の形態では、図２７に示すエミュレータ１９２３を用いることにより、ターゲットである複合機を用いずにＪａｖａ（登録商標）アプリのデバッグをすることが可能である。これは、Ｊａｖａ（登録商標）では、仮想マシンを使用する構成となっているため、実行環境をエミュレートすることが比較的容易であることによる。エミュレータを用いた開発が完了したら、Ｊａｖａ（登録商標）アプリ（バイトコード）をネットワーク又はＩＣカードを介して複合機にロードすることにより、複合機を用いた評価を行うことが可能である。
【０１６８】
エミュレータは、Ｊａｖａ（登録商標）アプリ側からの命令を受信し、それに応じた動作を行うように記述したプログラムとして構成することができる。例えば、複合機のオペレーションパネルの表示部への表示命令に対しては、複合機上に表示する画面と同様の画面をＰＣのディスプレイ上に表示する。ただし、開発環境であるＰＣには複合機におけるエンジン（スキャナ、プリンタなど）がないので、例えば、Ｊａｖａ（登録商標）アプリからのプリント命令に対しては、ＰＣの画面上にプリントを行う画像を表示したり、ＰＣ自身に接続されているデフォルトのプリンタに印刷を行う。また、ユーザがコピー操作をＰＣのエミュレータ画面上でした場合には、例えば、ユーザにコピー対象となるファイルをローカルファイルシステムから選ぶように通知し、コピーのあて先を尋ねるダイアログボックスを表示し、選択されたファイルをその指定された宛先にコピーする。
【０１６９】
なお、エミュレータは、図２７に示すように仮想マシンとクラスライブラリとは別のプラグラムとして実装することもできるし、図３１に示すように、クラスライブラリの中のクラスとして実装することもできる。
【０１７０】
図３２に、エミュレータによりＰＣに表示されるオペレーションパネル画面を示す。この画面に表示されるボタンなどの要素は、実際の複合機のものと同等である。また、エミュレータは、格納したＪａｖａ（登録商標）アプリを選択して実行するローダーの機能も有している。ローダーとして動作する場合には、例えば、図３３に示す画面を表示する。そして、ユーザはＪａｖａ（登録商標）アプリを選択し、実行ボタンを押すことによりＪａｖａ（登録商標）アプリが実行される。なお、ここで表示されるＪａｖａ（登録商標）アプリは、ｍａｉｎルーチンを持つクラス名、もしくはＪａｒファイル名である。
【０１７１】
エミュレータは、エミュレータ上で動作するアプリケーションの状態状態情報を自動的にログファイルに収集する機能も有しており、どのようなメッセージをログとして残すかの設定もできる。例えば、アプリを異常終了させるような深刻なエラーのみをログとして収集するように設定したり、アプリケーションのデバッグに有益な詳細情報をログとして収集するように設定することができる。
【０１７２】
エミュレータを用いて開発環境側でプログラムのデバッグを行うことは、他の実施の形態においても適用可能である。すなわち、例えば実施の形態１において、ＰＣ２００にインタプリタと、本実施の形態と同様のエミュレータを搭載する。プログラムのデバッグが進んだところで、評価のために複合機にアクセスしてプログラムを送信する。
【０１７３】
（Ｊａｖａ（登録商標）アプリケーションの例）
次に、Ｊａｖａ（登録商標）アプリケーションの例について説明する。ここでは、操作パネルクラスを使用したサンプルプログラムを使用したＪａｖａ（登録商標）アプリの例について説明する。図３４に、操作パネルクラスの階層構成を示す。
【０１７４】
図３４中、＊＊＊Ｗｉｎｄｏｗのクラスはウィンドウ作成のためのクラスであり、＊＊＊＊Ｉｔｅｍのクラスは、ボタンなどのウィンドウ中におけるエレメントを作成するためのクラスである。例えば、以下に示すコードを含むプログラムにより、図３５に示すようなメインウィンドウとその中のエレメントが作成される。
【０１７５】
ｍａｉｎｗｉｎｄｏｗ  ＝  ｎｅｗ  ＰａｎｅｌＷｉｎｄｏｗ  （ｐａｎｅｌ．ｒｏｏｔ（），  ６４０，  ２４０）；    （ａ）
ＭｅｓｓａｇｅＩｔｅｍ  ｍｓｇ  ＝  ｎｅｗ  ＭｅｓｓａｇｅＩｔｅｍ  （２０，  ２０，  ６００，  ４０）；        （ｂ）
ＢｕｔｔｏｎＩｔｅｍ  Ｂｕｔｔｏｎ  ＝  ｎｅｗ  ＢｕｔｔｏｎＩｔｅｍ  （１０，  ６０，  ８０，  ３０）；        （ｃ）
上記の（ａ）は、幅６４０ドット、高さ２４０ドットのメインウィンドウを作成するためのコードである。（ｂ）は、メインウィンドウの位置（２０、２０）に幅６００、高さ４０のメッセージアイテムを作成するためのコードである。（ｃ）は、（１０、６０）の位置に、サイズ８０×３０のボタンを作成するためのコードである。
【０１７６】
図３６に示すプログラムは、複合機のオペレーションパネルにユーザーインタフェースを実装するプログラムである。図３７に示すように、このプログラムは起動直後に”Ｈｅｌｌｏ  Ｗｏｒｌｄ”及び”Ｙｏｕｒ  Ｉｎｐｕｔ  Ｗａｓ…”のメッセージと”Ｇｅｔ  Ｉｎｐｕｔ…”のボタンを表示する。ユーザーが”Ｇｅｔ  Ｉｎｐｕｔ…”のボタンに触れると、パネル上にソフトキーボードを表示し、ソフトキーボードには、”Ａｄｄ  ｙｏｕｒ  Ｉｎｐｕｔ”のタイトルが表示され、ユーザーに任意のコード入力を促す。ユーザーが、ソフトキーボードから任意の文字列、例えば、“ＡＢＣＤ！”を入力した場合、パネル上の”Ｙｏｕｒ  Ｉｎｐｕｔ  Ｗａｓ…”のメッセージの下にユーザーが入力した文字列を表示、すなわち、“ＡＢＣＤ！”を表示する。
【０１７７】
以下、図３６に示すサンプルプログラムの内容について、プログラム中に記述した注釈の番号に沿って説明する。
【０１７８】
▲１▼は、操作パネルクラスライブラリを使用するための命令である。▲２▼は、ＧＷＡｐｐを継承することを示し、これにより複合機のアプリケーション雛型（抽象）を使用することが可能となる。また、複雑な初期設定や終了処理をユーザーが記述せずに済み、メッセージ受信などの処理もユーザーに対して隠蔽することができる。また、▲３▼  により“Ｈｅｌｌｏ  Ｗｏｒｌｄ”のメッセージを表示するオブジェクトを生成し、▲４▼  により“Ｇｅｔ  Ｉｎｐｕｔ．．．”のボタンオブジェクトを生成する。そして、▲５▼  により“Ｙｏｕｒ  Ｉｎｐｕｔ  Ｗａｓ．．．”  のメッセージを表示するオブジェクトを生成し、▲６▼  によりソフトキーボードから入力した文字を表示するメッセージオブジェクトを生成する。
【０１７９】
（Ｊａｖａ（登録商標）実行環境におけるＪａｖａ（登録商標）アプリの実行について）
図２７に示す構成において、アプリケーション管理部１９１４の機能を用いることにより、以下のような手順でダウンロードから起動までの処理を行うことが可能である。
【０１８０】
アプリケーション管理部１９１４は、他のアプリケーションと同様にして複合機の起動時に起動され、アプリケーション起動キー等を押すことにより、オペレーションパネルにユーザーインタフェースを表示する。このとき、Ｊａｖａ（登録商標）アプリがロードされていない場合は、アプリケーションロード画面を表示する。ユーザーは、このアプリケーションロード画面から所定のＷｅｂサイト又は、ＩＣカードにアクセスし、Ｊａｖａ（登録商標）アプリをロードする。
【０１８１】
ロードの処理においては、Ｊａｖａ（登録商標）アプリをロードする前に、当該Ｗｅｂサーバ等に対してＪａｖａ（登録商標）アプリに関する情報の問い合わせを行い、インストール可能であるＪａｖａ（登録商標）アプリであるか否かを確認する。確認項目は、例えば、プログラムサイズ、バージョン確認、プログラム最終更新情報、使用するメモリワークサイズ、使用するストレージサイズ、あらかじめ使用するネットワークアドレスの確認、利用可能期間（利用回数）、アプリケーションプログラム名等である。
【０１８２】
上記の事項を確認し、インストール可能であると判断した場合は、アプリケーション管理部１９１４がＪａｖａ（登録商標）アプリケーションファイルを複合機にダウンロードする。
【０１８３】
そして、Ｊａｖａ（登録商標）アプリケーションプログラムのダウンロードが終了すると、アプリケーション管理部１９１４は、アプリケーション名を取得し、アプリケーションリストに追加し、同時にＪａｖａ（登録商標）アプリケーションプログラムを複合機のハードディスクに格納する。
【０１８４】
以上の処理が完了することにより、ダウンロードしたＪａｖａ（登録商標）アプリを利用できる状態になり、ユーザーは、アプリケーション管理部１９１４が提供するＪａｖａ（登録商標）アプリケーション起動画面から起動するＪａｖａ（登録商標）アプリを選択することにより、仮想マシンを起動し、Ｊａｖａ（登録商標）アプリを実行することができる。
【０１８５】
次のようにしてＪａｖａ（登録商標）アプリを実行することも可能である。次に説明する方法は、図２９に示した構成において、Ｊａｖａ（登録商標）アプリをＷｅｂサーバからロードして実行する例である。以下の処理は、アプリケーション管理部１９１４に含まれるローダー（プログラム）により実行される。なお、ローダー自身はＪａｖａ（登録商標）アプリとして実装してもよいし、例えばＣ言語で実装してもよい。
【０１８６】
図３８に、図２９に示した構成におけるＪａｖａ（登録商標）アプリのアップロードからダウンロードまでの概念図を示す。このように、Ｊａｖａ（登録商標）開発環境において、開発、テストされたＪａｖａ（登録商標）アプリをＷｅｂサーバにアップロードする（ステップ１）。複合機のローダーは、Ｗｅｂサーバにアクセスし（ステップ２）、ユーザ所望のＪａｖａ（登録商標）アプリをダウンロードし（ステップ３）、実行する。
【０１８７】
次に、図３９のフローチャートを参照してローダーの処理手順について説明する。
【０１８８】
ユーザが複合機におけるアプリ切り替えのための所定のボタンを押すことにより、ローダーはＪａｖａ（登録商標）アプリが既にロードされているか否かをチェックし（ステップ１１）、ロードされていればＪａｖａ（登録商標）アプリを実行する（ステップ１２）。そして、Ｊａｖａ（登録商標）アプリユーザーインタフェースが表示される。ロードされていなければローダーの画面が表示される（ステップ１３）。なお、Ｊａｖａ（登録商標）アプリの実行が終了した場合にはローダーの画面が表示される。また、Ｊａｖａ（登録商標）アプリのユーザーインタフェースが表示されているときに、所定のコードを入力して所定のボタンを押すことにより、ローダーの画面を表示することができる。
【０１８９】
図４０に、複合機に表示されるローダーの画面を示す。ローダーには、現在ロードされているＪａｖａ（登録商標）アプリがあればそのＪａｖａ（登録商標）アプリと、ローダーがＪａｖａ（登録商標）アプリの更新をＷｅｂサーバに対してチェックする頻度が表示される。
【０１９０】
ローダーの画面において、アプリのロードのボタンに触れると、図４１に示すアプリロードウィンドウが表示される（ステップ１４）。ここでＪａｖａ（登録商標）アプリのＵＲＬを入力する。ＵＲＬを入力するには、ＵＲＬボタンに触れ、ソフトキーボードを表示させ、ソフトキーボードからタイプすることによりＵＲＬを入力する。また、ＵＲＬボタンに触れることにより、図４２に示すようなＪａｖａ（登録商標）アプリのＵＲＬのリストを表示し、そのリストの中から所望のＪａｖａ（登録商標）アプリを選択するようにしてもよい。また、必要に応じて、図４１に示すクラス名の欄に、選択したＪａｖａ（登録商標）アプリ（Ｊａｒファイル）の中のｍａｉｎルーチンを持つクラス名を入力する。
【０１９１】
その後、図４１に示す画面のＯＫボタンに触れることにより、Ｊａｖａ（登録商標）アプリがＷｅｂサーバからダウンロードされ（ステップ１５）、複合機で実行される。
【０１９２】
ローダーは自動的に、指定された間隔でＷｅｂサーバをチェックし、新たなバージョンのＪａｖａ（登録商標）アプリがＷｅｂサーバに格納されているか否かを確認する。これは、現在動作しているＪａｖａ（登録商標）アプリの日付とタイムスタンプを、Ｗｅｂサーバ上のものと比較することにより行う。新たなバージョンのＪａｖａ（登録商標）アプリが発見された場合には、現在作動しているＪａｖａ（登録商標）アプリは削除され、新しいバージョンのＪａｖａ（登録商標）アプリがダウンロードされる。
【０１９３】
上記の更新間隔を変更するには、図４０に示す画面上の更新間隔ボタンに触れることにより、図４３に示す画面が表示される（ステップ１６）。この画面の中で矢印キーを用いて時間か分かを選択し、オペレーションパネルの数字キーを用いて新たな時間間隔を入力する。
【０１９４】
複合機からＪａｖａ（登録商標）アプリを削除する場合には図４０に示す画面のアンロードのボタンに触れることにより、図４４に示す画面を表示する（ステップ１７）。ここで“ＯＫ”ボタンに触れることによりＪａｖａ（登録商標）アプリが削除される。
【０１９５】
図４０の画面におけるＥｘｉｔボタンに触れることによりローダーが終了する。
【０１９６】
さて、本実施の形態では、Ｊａｖａ（登録商標）アプリを連結することにより、カスタマイズプログラムを作成することが可能である。この処理の流れについて図４５を参照して説明する。なお、カスタマイズプログラムを作成するプログラム自体もＪａｖａ（登録商標）アプリであり、以下これをカスタマイズアプリと呼ぶ。なお、カスタマイズアプリは予め画像形成装置内に備えられていてもよい。
【０１９７】
まず、操作表示部の画面を図４０のローダ画面に切り替え、カスタマイズアプリをロードし、実行する。
【０１９８】
カスタマイズアプリは図４５の画面１を表示する。画面１には、紙（ｐａｐｅｒ）のオブジェクトだけが表示される。なお、紙のオブジェクト以外のオブジェクトを入れることもできる。オブジェクトは“入れる”ボタン、“取り出す”ボタンにより出し入れをすることができる。また、画面１において、紙のオブジェクトには読み書き許可属性などの属性を“読書許可”ボタンにより設定することができる。
【０１９９】
画面１においてｐａｐｅｒに触れると、画面２に示すように、ｐａｐｅｒオブジェクトに接続されるオブジェクトのリストが表示される。ここでｓｃａｎを選択すると、画面３に遷移し、さらにｓｃａｎに触れることにより、ｓｃａｎオブジェクトに接続されるオブジェクトのリストが画面４のように表示される。画面４においてｍａｉｌを選択すると画面５に遷移する。
【０２００】
その後、“設定”ボタンに触れることにより、スキャンして、その画像ファイルをメールにて送信するという処理を行うカスタマイズプログラムが生成される。また、画面６に示すようにキーがアサインされる。複合機でこのキーを操作することにより、上記のカスタマイズプログラムが実行される。このカスタマイズプログラムは、連結されたオブジェクトのクラスを順次実行するように記述されたプログラムである。
【０２０１】
なお、本実施の形態のようにＷｅｂサーバにアプリを格納しておき、Ｗｅｂサーバから複合機に所望のアプリをダウンロードすることや、アプリを連結してカスタマイズすることは、他の実施の形態にも適用可能である。例えば、ＶＢインタープリタを用いた前述した構成において、本実施の形態と同様の機能のローダーを備えることにより、本実施の形態と同様にサーバからアプリをダウンロードできる。
【０２０２】
なお、これまでに説明した各サービスプログラム、アプリケーションプログラムは、ＩＣカード等の記録媒体に格納し、そこから画像形成装置に格納することができる。また、ネットワークを介して外部のサーバから画像形成装置に格納することもできる。
【０２０３】
上記のように、本実施の形態によれば、Ｊａｖａ（登録商標）環境を用いることにより効率良くアプリを開発することが可能となる。
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内で種々変更・応用が可能である。
【発明の効果】
上記のように本発明によればアプリケーションプログラム開発効率を向上させることができる情報処理装置を提供することができる。
【図面の簡単な説明】
【図１】実施の形態１にかかる複合機の主要構成およびネットワーク構成を示すブロック図である。
【図２】実施の形態１の複合機の機能的構成を示すブロック図である。
【図３】実施の形態１にかかる複合機のハードウェア構成を示すブロック図である。
【図４】リクエストメッセージを受信した複合機における処理の手順を示すフローチャートである。
【図５】ｄｅｂｕｇ．ｃｇｉの処理の手順を示すフローチャートである。
【図６】プログラミング画面において、保存ボタン、実行設定ボタン、テスト実行ボタンのいずれかのクリック操作が行われた場合のＷＥＢアプリの処理の手順を示すフローチャートである。
【図７】プログラミング画面の内容の一例を示す説明図である。
【図８】プログラム入力フィールドに入力されるカスタマイズプログラムの一例を示す説明図である。
【図９】カスタマイズディレクトリに格納されたカスタマイズプログラムの名称の一例を示す説明図である。
【図１０】キー対応付けテーブルの内容の一例を示す説明図である。
【図１１】複合機の電源投入が行われてから、カスタマイズプログラムの実行が可能となるまでの一連の処理の手順を示すフローチャートである。
【図１２】起動設定ファイルの一例を示す説明図である。
【図１３】実施の形態２にかかる複合機における主要構成を示すブロック図である。
【図１４】プログラミング画面の一例を示す説明図である。
【図１５】実施の形態３にかかる複合機の機能的構成を示すブロック図である。
【図１６】複合機の電源投入が行われてから、カスタマイズプログラムとボタン（キー）との割り付けが完了するまでの一連の処理の手順を示すフローチャートである。
【図１７】起動設定ファイルの内容の一例を示す説明図である。
【図１８】キー割り付け設定画面の一例を示す説明図である。
【図１９】実施の形態４にかかる複合機の主要構成およびネットワーク構成を示すブロック図である。
【図２０】実施の形態４にかかる複合機の機能的構成を示すブロック図である。
【図２１】起動設定ファイルの内容の一例を示す説明図である。
【図２２】実施の形態５にかかる複合機の機能的構成を示すブロック図である。
【図２３】ＰＣ２００上でＶｉｓｕａｌ  Ｂａｓｉｃ開発環境を用いてＶＢアプリを作成している場面を示す図である。
【図２４】ＶＢインタプリタにより実行されるＶＢアプリの例を示す図である。
【図２５】ＶＢインタプリタにより実行されるＶＢアプリの例を示す図である。
【図２６】実施の形態６にかかる複合機の機能的構成を示すブロック図である。
【図２７】Ｊａｖａ（登録商標）開発環境とＪａｖａ（登録商標）実行環境を示す図である。
【図２８】Ｊａｖａ（登録商標）実行環境の構成の例を示す図である。
【図２９】ＷｅｂサーバからＪａｖａ（登録商標）アプリをダウンロードする構成を示す図である。
【図３０】Ｊａｖａ（登録商標）アプリ作成の手順を示す図である。
【図３１】エミュレータの他の実装例を示す図である。
【図３２】エミュレータによりＰＣに表示されるオペレーションパネルの画面を示す図である。
【図３３】エミュレータがローダーとして動作する場合に表示される画面を示す図である。
【図３４】操作パネルクラスの階層構成を示す図である。
【図３５】ウィンドウの作成を説明するための図である。
【図３６】サンプルプログラムを示す図である。
【図３７】サンプルプログラムの実行結果を示す図である。
【図３８】図２９に示した構成におけるＪａｖａ（登録商標）アプリのアップロードからダウンロードまでの概念図である。
【図３９】ローダーの処理手順を示すフローチャートである。
【図４０】複合機に表示されるローダーの画面を示す図である。
【図４１】アプリをロードするための画面である。
【図４２】Ｊａｖａ（登録商標）アプリのＵＲＬのリストである。
【図４３】更新間隔を変更するための画面である。
【図４４】アプリをアンロードするための画面である。
【図４５】Ｊａｖａ（登録商標）アプリを連結することにより、カスタマイズプログラムを作成する手順を説明するための図である。
【符号の説明】
１００，１１００，１３００，  １７００，１８００，１９００  複合機
１０１  白黒ラインプリンタ
１０２  カラーラインプリンタ
１０３  ハードディスク装置（ＨＤＤ）
１０４  ハードウェアリソース
１０５  共有メモリ
１０６  ｈｔｔｐｄ
１１０  ソフトウェア群
１１１  プリンタアプリ
１１２  コピーアプリ
１１３  ファックスアプリ
１１４  スキャナアプリ
１１５  ネットファイルアプリ
１１６  工程検査アプリ
１１７  外部アプリ
１２０  プラットホーム
１２１  汎用ＯＳ
１２２  ＳＣＳ
１２３  ＳＲＭ
１２４  ＥＣＳ
１２５  ＭＣＳ
１２６  ＯＣＳ
１２７  ＦＣＳ
１２８  ＮＣＳ
１２９  複合機初期化部
１３０  アプリケーション
１３１  プログラム起動部
１３２  ，１１３２  プログラミングサービス
１３３  オペパネ登録部
１３４  インタプリタ（シェル）
１３５  カーネル
２００  ＰＣ２０１，１１０１プログラミング画面
２１１  起動設定ファイル
２１２  カスタマイズディレクトリ
２２０  インターネット
１７３４，  １８０１  ＶＢインタプリタ
１９０１  Ｊａｖａ（登録商標）実行環境
１９１１、１９２１  クラスライブラリ
１９１２、１９２２  仮想マシン
１９１４、１９２４  アプリケーション管理部
１９２３  エミュレータ
１９２５  Ｊａｖａ（登録商標）コンパイラ
【図１】
2004185595.tif 000004
【図２】
2004185595.tif 000005
【図３】
2004185595.tif 000006
【図４】
2004185595.tif 000007
【図５】
2004185595.tif 000008
【図６】
2004185595.tif 000009
【図７】
2004185595.tif 000010
【図８】
2004185595.tif 000011
【図９】
2004185595.tif 000012
【図１０】
2004185595.tif 000013
【図１１】
2004185595.tif 000014
【図１２】
2004185595.tif 000015
【図１３】
2004185595.tif 000016
【図１４】
2004185595.tif 000017
【図１５】
2004185595.tif 000018
【図１６】
2004185595.tif 000019
【図１７】
2004185595.tif 000020
【図１８】
2004185595.tif 000021
【図１９】
2004185595.tif 000022
【図２０】
2004185595.tif 000023
【図２１】
2004185595.tif 000024
【図２２】
2004185595.tif 000025
【図２３】
2004185595.tif 000026
【図２４】
2004185595.tif 000027
【図２５】
2004185595.tif 000028
【図２６】
2004185595.tif 000029
【図２７】
2004185595.tif 000030
【図２８】
2004185595.tif 000031
【図２９】
2004185595.tif 000032
【図３０】
2004185595.tif 000033
【図３１】
2004185595.tif 000034
【図３２】
2004185595.tif 000035
【図３３】
2004185595.tif 000036
【図３４】
2004185595.tif 000037
【図３５】
2004185595.tif 000038
【図３６】
2004185595.tif 000039
【図３７】
2004185595.tif 000040
【図３８】
2004185595.tif 000041
【図３９】
2004185595.tif 000042
【図４０】
2004185595.tif 000043
【図４１】
2004185595.tif 000044
【図４２】
2004185595.tif 000045
【図４３】
2004185595.tif 000046
【図４４】
2004185595.tif 000047
【図４５】
2004185595.tif 000048