JP4334214B2 - 画像形成装置、アプリケーションプログラム及び記録媒体 - Google Patents

画像形成装置、アプリケーションプログラム及び記録媒体 Download PDF

Info

Publication number
JP4334214B2
JP4334214B2 JP2002377972A JP2002377972A JP4334214B2 JP 4334214 B2 JP4334214 B2 JP 4334214B2 JP 2002377972 A JP2002377972 A JP 2002377972A JP 2002377972 A JP2002377972 A JP 2002377972A JP 4334214 B2 JP4334214 B2 JP 4334214B2
Authority
JP
Japan
Prior art keywords
application
control service
function
image forming
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2002377972A
Other languages
English (en)
Other versions
JP2003271386A (ja
Inventor
勉 大石
克彦 中川
浩行 田中
裕子 杉浦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2002377972A priority Critical patent/JP4334214B2/ja
Priority to US10/334,828 priority patent/US20030140174A1/en
Publication of JP2003271386A publication Critical patent/JP2003271386A/ja
Application granted granted Critical
Publication of JP4334214B2 publication Critical patent/JP4334214B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
【0002】
この発明は、コピー、プリンタ、スキャナおよびファクシミリなどの画像形成処理にかかるユーザサービスを提供する画像形成装置に搭載されるアプリケーションにおいて、コントロールサービスに対する処理を隠蔽してアプリケーションを効率良く開発することを可能とする技術に関する。
【従来の技術】
【0003】
近年、プリンタ、コピー、ファクシミリ、スキャナなどの各装置の機能を1つの筐体内に収納した画像形成装置(以下、「複合機」という。)が一般的に知られている。この複合機は、1つの筐体内に表示部、印刷部および撮像部などを設けるとともに、プリンタ、コピーおよびファクシミリ装置にそれぞれ対応する3種類のソフトウェアを設け、ソフトウェアの切り替えによって、当該装置をプリンタ、コピー、スキャナまたはファクシミリ装置として動作させるものである。
【0004】
このような従来の複合機では、プリンタ、コピー、スキャナおよびファクシミリ装置に対応するソフトウェアをそれぞれ別個に設けているため、各ソフトウェアの開発に多大の時間を要する。このため、出願人は、表示部、印刷部および撮像部などの画像形成処理で使用されるハードウェア資源を有し、プリンタ、コピーまたはファクシミリなどの各ユーザサービスにそれぞれ固有の処理を行うアプリケーションを複数搭載し、これらのアプリケーションとハードウェア資源との間に介在して、ユーザサービスを提供する際に、アプリケーションの少なくとも2つが共通的に必要とするハードウェア資源の管理、実行制御並びに画像形成処理を行う各種コントロールサービスからなるプラットホームを備えた画像形成装置(複合機)を発明した。
【0005】
この複合機によれば、アプリケーションの少なくとも2つが共通的に必要とするハードウェア資源の管理、実行制御並びに画像形成処理を行うプラットホームを備えた構成とすることによって、ソフトウェア開発の効率化を図るとともに、装置全体としての生産性を向上させることが可能となる。
【特許文献1】
特開2002−342119号公報
【発明が解決しようとする課題】
【0006】
このような新規な複合機では、アプリケーションとコントロールサービスとを別個に設けているため、複合機の出荷後にユーザもしくは第三者であるサードベンダーが新規なアプリケーションを開発して複合機に搭載することが可能となっており、これにより多種多様な機能を提供することが可能となる。
【0007】
このような新規な複合機は、アプリケーションと、アプリケーションの少なくとも2つが共通的に必要とするサービスを提供するコントロールサービスとを備えた特徴的な構成となっているため、新規アプリケーションを開発する場合には、各種コントロールサービスとのプロセス間通信を実現する処理をソースコードで記述する必要がある。しかしながら、このような処理は各コントロールサービスが提供する関数やメッセージなどを正確に把握した上で、あらかじめ規定された手順で記述しなければならないため、各コントロールサービスに対する処理の記述が困難であるという問題がある。このような新規アプリケーションの開発における課題は従来の構成の複合機には問題にならなかった新規な課題である。
【0008】
また、各コントロールサービスとアプリケーションのインタフェースの全てを、新規アプリケーションを開発するサードベンダーなどの第三者に開示することは、プログラムの秘匿性の面から好ましくない。特に、複合機のシステムに大きく影響を与えるような箇所は第三者に対し隠蔽しておき、直接コントロールサービスに対してアクセスすることを回避することが、複合機のセキュリティ面および障害発生の未然防止の面から好ましい。
【0009】
この発明は上記に鑑みてなされたもので、多数のプロセスが実行される画像形成装置で動作するアプリケーションとコントロールサービス間の複雑な処理を隠蔽することにより、新規アプリケーションの開発効率を向上させ、かつ、重要なインタフェースの秘匿性を確保することを目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するため、発明は、画像形成処理で使用されるハードウェア資源とオペレーティングシステムとを備え、画像形成に関する処理を行うアプリケーションプロセスとして動作するアプリケーションプログラムを複数搭載可能に構成された画像形成装置であって、前記オペレーティングシステム上で動作し、複数の前記アプリケーションプロセスからアクセスされ、複数の前記アプリケーションプロセスで共通的に利用される機能を各アプリケーションプロセスに提供するコントロールサービスプロセスとして動作するコントロールサービスプログラムを複数備えた画像形成装置、において実行される新規アプリケーションプログラムの実行形式プログラムをコンピュータが生成するための画像形成装置用アプリケーション生成方法であって、前記コンピュータが、ラッピング関数が記述された前記新規アプリケーションプログラムのソースファイルを記憶手段から読み出してコンパイルし、オブジェクトファイルを生成するコンパイルステップと、前記コンピュータが、前記ラッピング関数の処理内容が登録されたラッピング関数ライブラリを記憶手段から読み出し、当該ラッピング関数ライブラリと、前記オブジェクトファイルとをリンクして、前記新規アプリケーションプログラムの実行形式プログラムを生成するリンクステップとを含み、前記ラッピング関数は、前記画像形成装置で実行されることにより、前記画像形成装置を、前記複数のコントロールサービスプロセスのうちの予め定めたコントロールサービスプロセスの機能を利用するための処理を実行するラッピング手段として機能させることを特徴とする。
【0011】
この発明によれば、コントロールサービスとの複雑な手順を新規アプリケーションのソースコードに記述する必要がなく、新規アプリケーションを効率的に開発することができる。
【0012】
また、この発明によれば、ラッピング関数が新規アプリケーションに代わってコントロールサービスとの処理を行うので、コントロールサービスとのインタフェースを隠蔽して、重要なインタフェースの秘匿性を確保することができる。
【0013】
また、上記画像形成装置用アプリケーション生成方法において、前記ラッピング手段は、前記予め定めたコントロールサービスプロセスの機能を利用するためのプロセス間通信処理を実行することとすることができる
【0014】
この発明においては、コントロールサービスとのインタフェースで重要な部分を隠蔽することができ、他の部分を第三者に開示することができる。従って、インタフェースの重要度に応じた秘匿性を確保することができる。
【0015】
また、前記ラッピング手段は、前記画像形成装置において、前記新規アプリケーションプログラムのプロセス内部で生成されたラッピングスレッドとして機能することとしてもよい
【0016】
この発明によれば、ラッピング関数が新規アプリケーションのプロセス内部で生成されたラッピングスレッドとして実行されるので、生成された新規アプリケーションのプロセス内部で、コントロールサービスとのプロセス間通信等の代行処理と他の処理とを並列実行した場合に、両処理の切り替え時間を短縮化することができる。
【0017】
また、前記ラッピング手段は、前記予め定めたコントロールサービスプロセスから受信したイベントに対する応答処理を実行することとすることができる
【0018】
この発明によれば、イベントに対して応答が必要な特に複雑なコントロールサービスとのプロセス間通信の手順を新規アプリケーションのソースコードに記述する必要がなく、新規アプリケーションをより効率的に開発することができる。
【0019】
また、前記ラッピング手段は、前記画像形成装置のエンジン制御を行うエンジンコントロールサービスプロセスが提供するいずれの機能においても、当該機能を利用するためのプロセス間通信処理を実行することとしてもよい
【0020】
この発明によれば、エンジンコントロールサービスとのプロセス間通信の複雑な手順を新規アプリケーションのソースコードに記述する必要がなく、新規アプリケーションをより効率的に開発することができる。
【0021】
また、この発明によれば、画像形成装置の重要なエンジン部分を制御するエンジンコントロールサービスとのインタフェースを隠蔽することができ、特に重要なインタフェースの秘匿性を確保できるとともに、新規アプリケーションのプログラムミスによるエンジン障害を未然に防止することができる。
【0022】
また、前記ラッピング手段は、前記画像形成装置のメモリ制御を行うメモリコントロールサービスプロセスが提供するいずれの機能においても、当該機能を利用するためのプロセス間通信処理を実行することとしてもよい
【0023】
この発明によれば、メモリコントロールサービスとのプロセス間通信の複雑な手順を新規アプリケーションのソースコードに記述する必要がなく、新規アプリケーションをより効率的に開発することができる。
【0024】
また、この発明によれば、画像形成装置の重要なメモリを制御するメモリコントロールサービスとのインタフェースを隠蔽することができ、特に重要なインタフェースの秘匿性を確保できるとともに、新規アプリケーションのプログラムミスによるメモリ障害を未然に防止することができる。
【0025】
また、前記ラッピング手段は、前記画像形成装置のシステム制御を行うシステムコントロールサービスプロセスが提供する機能の中で、システム状態通知および電源状態に関する機能を利用するためのプロセス間通信処理を実行するようにしてもよい
【0026】
この発明によれば、複雑なシステム状態通知および電源状態に対するプロセス間通信の手順を新規アプリケーションのソースコードに記述する必要がなく、新規アプリケーションをより効率的に開発することができる。
【0027】
また、この発明によれば、画像形成装置の動作に大きく影響を及ぼすシステム状態通知および電源状態に関するシステムコントロールサービスとのインタフェースを隠蔽することができ、特に重要なインタフェースの秘匿性を確保できるとともに、新規アプリケーションのプログラムミスによる障害を未然に防止することができる。
【0028】
また、前記ラッピング手段は、前記画像形成装置のネットワーク制御を行うネットワークコントロールサービスプロセスが提供する機能の中で、データ送信プロトコルを使用する機能を利用するためのプロセス間通信処理を実行するようにしてもよい
【0029】
この発明によれば、データ通信プロトコルを使用するプロセス間通信の複雑な手順を新規アプリケーションのソースコードに記述する必要がなく、新規アプリケーションをより効率的に開発することができる。
【0030】
また、前記ラッピング手段は、前記複数のコントロールサービスプロセスのうち、前記画像形成装置のオペレーションパネルを制御するオペパネコントロールサービスプロセス以外のコントロールサービスプロセスが提供する機能を利用するためのプロセス間通信処理を実行することとしてもよい
【0031】
この発明によれば、新規アプリケーションが頻繁に利用するオペレーションパネルとのインタフェースを第三者に開示しながら、他の複雑なインタフェースを隠蔽することができる。
【0032】
また、前記ラッピング手段は、前記新規アプリケーションプログラムのプロセスと前記コントロールサービスプロセスとの間に介在して実行される仮想アプリケーションサービスプロセスに対するプロセス間通信処理を実行することとしてもよい
【0033】
本発明によれば、仮想アプリケーションサービスとのプロセス間通信の手順を新規アプリケーションのソースコードに記述する必要がなく、新規アプリケーションをより効率的に開発することができる。
【0034】
また、本発明は、画像形成処理で使用されるハードウェア資源とオペレーティングシステムとを備え、画像形成に関する処理を行うアプリケーションプロセスとして動作するアプリケーションプログラムを複数搭載可能に構成された画像形成装置であって、前記オペレーティングシステム上で動作し、複数の前記アプリケーションプロセスからアクセスされ、複数の前記アプリケーションプロセスで共通的に利用される機能を各アプリケーションプロセスに提供するコントロールサービスプロセスとして動作するコントロールサービスプログラムを複数備えた画像形成装置、において実行される新規アプリケーションプログラムの実行形式プログラムをコンピュータに生成させるためのプログラムであって、
ラッピング関数が記述された前記新規アプリケーションプログラムのソースファイルを前記コンピュータの記憶手段から読み出してコンパイルし、オブジェクトファイルを生成するコンパイルステップと、前記ラッピング関数の処理内容が登録されたラッピング関数ライブラリを前記記憶手段から読み出し、当該ラッピング関数ライブラリと、前記オブジェクトファイルとをリンクして、前記新規アプリケーションプログラムの実行形式プログラムを生成するリンクステップとを前記コンピュータに実行させるプログラムであり、
前記ラッピング関数は、前記画像形成装置で実行されることにより、前記画像形成装置を、前記複数のコントロールサービスプロセスのうちの予め定めたコントロールサービスプロセスの機能を利用するための処理を実行するラッピング手段として機能させることを特徴とするプログラムとして構成することもできる。
【0035】
また、本発明は、上記プログラムを記録したコンピュータ読み取り可能な記録媒体としてもよく、この記録媒体に更にラッピング関数ライブラリを記録してもよい。
【0036】
また、本発明は、画像形成処理で使用されるハードウェア資源とオペレーティングシステムとを備え、画像形成に関する処理を行うアプリケーションプロセスとして動作するアプリケーションプログラムを複数搭載可能に構成された画像形成装置であって、前記オペレーティングシステム上で動作し、複数の前記アプリケーションプロセスからアクセスされ、複数の前記アプリケーションプロセスで共通的に利用される機能を各アプリケーションプロセスに提供するコントロールサービスプロセスとして動作するコントロールサービスプログラムを複数備えた画像形成装置を、前記複数のコントロールサービスプロセスとのプロセス間通信を行うプロセス間通信手段、前記複数のコントロールサービスプロセスのうちの予め定めたコントロールサービスプロセスの機能を利用するためのプロセス間通信処理を前記プロセス間通信手段を用いて実行するラッピング手段、として機能させるプログラムとして構成することもできる。
【0037】
また、本発明は、上記プログラムを記録したコンピュータ読み取り可能な記録媒体としてもよい。
【0038】
また、本発明は、画像形成処理で使用されるハードウェア資源とオペレーティングシステムとを備え、画像形成に関する処理を行うアプリケーションプロセスとして動作するアプリケーションプログラムを複数搭載可能に構成された画像形成装置であり、前記オペレーティングシステム上で動作し、複数の前記アプリケーションプロセスからアクセスされ、複数の前記アプリケーションプロセスで共通的に利用される機能を各アプリケーションプロセスに提供するコントロールサービスプロセスとして動作するコントロールサービスプログラムを複数備えた画像形成装置であって、前記複数のコントロールサービスプロセスとのプロセス間通信を行うプロセス間通信機能と、前記複数のコントロールサービスプロセスのうちの予め定めたコントロールサービスプロセスの機能を利用するためのプロセス間通信処理を前記プロセス間通信機能を用いて実行するラッピング機能を前記画像形成装置に実現させるための新規アプリケーションプログラムを備えたことを特徴とする画像形成装置として構成することもできる
【0039】
これにより、効率的に作成された高品質なアプリケーションを有する画像形成装置を提供することができる。
【0040】
また、発明は、画像形成処理で使用されるハードウェア資源とオペレーティングシステムとを備え、画像形成に関する処理を行うアプリケーションプロセスとして動作するアプリケーションプログラムが複数搭載された画像形成装置であって、前記オペレーティングシステム上で動作し、複数の前記アプリケーションプロセスからアクセスされ、複数の前記アプリケーションプロセスで共通的に利用される機能を各アプリケーションプロセスに提供するコントロールサービスプロセスとして動作するコントロールサービスプログラムを複数備えた画像形成装置、において実行される新規アプリケーションプログラムの実行形式プログラムをコンピュータが生成するための画像形成装置用アプリケーション生成方法であって、前記コンピュータが、前記新規アプリケーションプログラムとは別の、前記複数のアプリケーションプログラムのうちのあるアプリケーションプログラムを呼び出すためのアプリ関数が記述された前記新規アプリケーションプログラムのソースファイルを記憶手段から読み出してコンパイルし、オブジェクトファイルを生成するコンパイルステップと、前記コンピュータが、前記アプリ関数の処理内容が登録されたアプリ関数ライブラリを前記記憶手段から読み出し、当該アプリ関数ライブラリと、前記オブジェクトファイルとをリンクして、前記新規アプリケーションプログラムの実行形式プログラムを生成するリンクステップを含み、前記アプリ関数は、前記画像形成装置で実行されることにより、前記画像形成装置を、前記あるアプリケーションプログラムを呼び出すアプリ呼び出し手段として機能させることを特徴とする画像形成装置用アプリケーション生成方法として構成することができる
【0041】
この発明によれば、コントロールサービスとのプロセス間通信は既存のアプリケーションを利用して実現され、プロセス間通信の複雑な手順を新規アプリケーションのソースコードに記述する必要がなく、新規アプリケーションを効率的に開発することができる。
【0042】
また、前記アプリ呼び出し手段は、コピーアプリ、プリンタアプリ、ファックスアプリまたはスキャナアプリの中の一または二以上のアプリケーションプログラムを呼び出す処理を行うこととすることができる
【0043】
この発明によれば、新規アプリケーションにコピー機能、プリンタ機能、ファックス機能またはスキャナ機能を持たせる場合でも、各機能に対応したアプリケーションを介してコントロールサービスとプロセス間通信を行えるので、新規アプリケーション独自にコントロールサービスとのプロセス間通信の手順をソースコードに記述する必要がなく、新規アプリケーションを効率的に開発することができる。
【0044】
また、発明は、画像形成処理で使用されるハードウェア資源とオペレーティングシステムとを備え、画像形成に関する処理を行うアプリケーションプロセスとして動作するアプリケーションプログラムが複数搭載された画像形成装置であって、前記オペレーティングシステム上で動作し、複数の前記アプリケーションプロセスからアクセスされ、複数の前記アプリケーションプロセスで共通的に利用される機能を各アプリケーションプロセスに提供するコントロールサービスプロセスとして動作するコントロールサービスプログラムを複数備えた画像形成装置、において実行される新規アプリケーションプログラムの実行形式プログラムをコンピュータに生成させるためのプログラムであって、前記新規アプリケーションプログラムとは別の、前記複数のアプリケーションプログラムのうちのあるアプリケーションプログラムを呼び出すためのアプリ関数が記述された前記新規アプリケーションプログラムのソースファイルを前記コンピュータの記憶手段から読み出してコンパイルし、オブジェクトファイルを生成するコンパイルステップと、前記アプリ関数の処理内容が登録されたアプリ関数ライブラリを前記記憶手段から読み出し、当該アプリ関数ライブラリと、前記オブジェクトファイルとをリンクして、前記新規アプリケーションプログラムの実行形式プログラムを生成するリンクステップとを前記コンピュータに実行させるプログラムであり、前記アプリ関数は、前記画像形成装置で実行されることにより、前記画像形成装置を、前記あるアプリケーションプログラムを呼び出すアプリ呼び出し手段として機能させることを特徴とするプログラムとして構成することもできる。また、このプログラムを記録した記録媒体を構成することもでき、この記録媒体にアプリ関数の処理内容が登録されたアプリ関数ライブラリを更に記録してもよい。
【0045】
また、本発明は、画像形成処理で使用されるハードウェア資源とオペレーティングシステムとを備え、画像形成に関する処理を行うアプリケーションプロセスとして動作するアプリケーションプログラムが複数搭載された画像形成装置であって、前記オペレーティングシステム上で動作し、複数の前記アプリケーションプロセスからアクセスされ、複数の前記アプリケーションプロセスで共通的に利用される機能を各アプリケーションプロセスに提供するコントロールサービスプロセスとして動作するコントロールサービスプログラムを複数備えた画像形成装置を、前記複数のアプリケーションプログラムのうちのあるアプリケーションプログラムを呼び出すアプリ呼び出し手段として機能させるプログラムとして構成することもできる。
【0046】
また、本発明は、画像形成処理で使用されるハードウェア資源とオペレーティングシステムとを備え、画像形成に関する処理を行うアプリケーションプロセスとして動作するアプリケーションプログラムが複数搭載された画像形成装置であり、前記オペレーティングシステム上で動作し、複数の前記アプリケーションプロセスからアクセスされ、複数の前記アプリケーションプロセスで共通的に利用される機能を各アプリケーションプロセスに提供するコントロールサービスプロセスとして動作するコントロールサービスプログラムを複数備えた画像形成装置であって、前記複数のアプリケーションプログラムのうちのあるアプリケーションプログラムを呼び出すアプリ呼び出し機能を前記画像形成装置に実現させる新規アプリケーションプログラムを備えたことを特徴とする画像形成装置として構成することもできる
【発明の実施の形態】
【0047】
以下に添付図面を参照して、本発明の好適な実施の形態を詳細に説明する。
【0048】
(実施の形態1)
この発明の実施の形態1では、画像形成装置(以下、「複合機」という。)で動作させる新規アプリケーションを開発する場合、開発用PC(Personal Computer)によってアプリソースファイルを作成する。そして、アプリケーション開発のためにCD−ROMなどの記録媒体で提供されるアプリ開発キットを開発用サーバにインストールして、作成したアプリソースファイルを、開発用サーバでコンパイル、リンクして複合機で実行可能なアプリケーションの実行形式ファイルを生成している。
【0049】
図1は、実施の形態1である開発用サーバ100のソフトウェア構成を示すブロック図である。この図1では、アプリ開発キットを開発用サーバ100のハードディスク(HD)130にインストール済みの状態を示している。実施の形態1にかかる開発用サーバ100は、複合機で動作させるための新規アプリケーションの新規アプリソースファイル132をコンパイルおよびリンクして、新規アプリケーションのプログラムであるアプリ実行形式ファイル134を生成するものである。実施の形態1にかかる開発用サーバ100は、図1に示すように、デバッグ機能付きコンパイラ110と、リンカ120とから構成される。
【0050】
デバッグ機能付きコンパイラ110は、ハードディスク(HD)130に格納されたアプリケーションのソースコードが記述された新規アプリソースファイル132を、コマンドの指定に従って、オブジェクトコードからなるオブジェクトファイルを生成するものである。デバッグ機能付きコンパイラ110は、図1に示すように、さらにコマンド解析部111と、構文解析部112と、タグ付加部113と、コード生成部114とから構成される。
【0051】
HD(ハードディスク)130には、アプリケーション開発用のアプリ開発キット131がインストールされている。また、HD130にアプリケーションのC言語ソースコードが記述された新規アプリソースファイル132が格納される。この新規アプリソースファイル132は、開発用PCでエディタによって作成され、開発用サーバ100にコピーされる。
【0052】
また、HD130には、デバッグ機能付きコンパイラ110によって、オブジェクトファイル133が生成され、さらにリンカ120によってアプリ実行形式ファイル134が生成される。
【0053】
デバッグ機能付きコンパイラ110のコマンド解析部111は、ユーザからキーボードなどの入力装置によって入力されたコマンドのパラメータや構文の解析を行って、入力されたコマンドが文法的に正確か否かを判断するものである。
【0054】
構文解析部112は、HD130に格納された新規アプリソースファイル132を入力して、新規アプリソースファイル132に記述されたC言語ソースコードを、C言語文法に従って解析し、導出木や構文木などを生成するものであり、通常のコンパイラにおける構文解析と同様の処理を行う。
【0055】
タグ付加部113は、コマンドの指定によって、新規アプリソースファイル132に記述された関数の入口と出口にデバッグ用の検証コードであるタグを付加するものである。
【0056】
コード生成部114は、構文解析され、必要に応じて検証コード(タグ)が付加された新規アプリソースファイル132から、オブジェクトコードからなるオブジェクトファイル133を生成するものである。
【0057】
リンカ120は、コード生成部114によって生成されたオブジェクトファイル133と、アプリ開発キット131の中のコントロールサービス関数ライブラリ、標準関数ライブラリおよびコントロールサービスラッピング関数ライブラリとをリンク(結合)して、複合機およびコンピュータのOS上で実行可能なアプリ実行形式ファイル134を生成するものである。
【0058】
アプリ開発キット131は、CD−ROMまたはフレキシブルディスク(FD)などの記録媒体にインストール可能な形式で提供され、開発用サーバ100のHD130にインストールされる。この記録媒体のアプリ開発キット131の中には、図1に示すように、各コントロールサービスごとに提供するサービス関数を登録したコントロールサービス関数ライブラリ(たとえば、ECS関数ライブラリ、MCS関数ライブラリなど)と、strcpy,memcpyなどのC言語標準関数を登録した標準関数ライブラリと、コントロールサービスラッピング関数wrapping_thrdを登録したコントロールサービスラッピング関数ライブラリと、アプリ登録のためのAplReg関数、スレッド間通信で使用されるsendmail関数およびrcvmail関数などを登録したユーティリティライブラリと、アプリケーションとコントロールサービスに共通で使用される関数宣言やメッセージ宣言が記述されているヘッダファイルと、デバッグ機能付きコンパイラと、リンカと、汎用OSプログラムと、デバッガなどのデバッグ用ユーティリティとが含まれている。
【0059】
コントロールサービスラッピング関数ライブラリは、コントロールサービスラッピング関数wrapping_thrdを登録したものである。コントロールサービスラッピング関数wrapping_thrdは、アプリケーション330がコントロールサービスと、APIを利用した関数呼び出しまたはメッセージ送受信によるプロセス間通信を行う場合に、複雑な関数呼び出しやメッセージ送受信の手順を、アプリケーション330に代わって行うものである。コントロールサービスラッピング関数wrapping_thrdの詳細な処理については後述する。
【0060】
上記デバッグ機能付きコンパイラ110の各部およびリンカ120は、このアプリ開発キットをインストールして実行したときに、RAM203上に生成されて実行される。
【0061】
なお、実施の形態1では、アプリ開発キットを記録媒体で提供することとしているが、また、このような実行可能な形式またはインストール可能な形式のファイルを、ネットワーク経由でダウンロードすることにより提供するように構成しても良い。
【0062】
図2は、実施の形態1にかかる開発用サーバ、開発用PCのハードウェア構成および開発環境を示すブロック図である。図2に示すように、この開発用サーバ100は、CPUなどの制御装置204と、RAM(Random Access Memory)203と、HD130と、ディスプレイ装置などの表示装置202と、キーボードやマウスなどの入力装置201と、LANボードやモデムなどの通信装置206と、フラッシュカードのリード/ライトを制御するフラッシュカードインタフェースやCD−ROMのリード制御を行うCDドライブ装置などの外部記憶装置205とを備えており、PC(Personal Computer)、ワークステーションなどのコンピュータを利用した通常の構成である。
【0063】
この開発用サーバ100は、イーサネット(登録商標)220などのネットワークによって開発用PC200と複合機300に接続されており、LAN環境が構築されている。開発用PC200のハードウェア構成は、図2に示す通り、開発用サーバ100と同様の構成となっている。複合機300には、複合機の起動を制御したり、エラー表示のためのコンソールPC230がケーブルによって接続されている。
【0064】
次に、デバッグ対象である複合機300について説明する。図3は、複合機300の機能的構成を示すブロック図である。図3に示すように、複合機300は、白黒ラインプリンタ(B&W LP)301と、カラーラインプリンタ(Color LP)302と、スキャナ、ファクシミリ、ハードディスク(HD)、メモリ、ネットワークインタフェースなどのハードウェアリソース303を有するとともに、プラットホーム320とアプリケーション330とから構成されるソフトウェア群310とを備えている。
【0065】
プラットホーム320は、アプリケーション330からの処理要求を解釈してハードウェア資源の獲得要求を発生させるコントロールサービスと、一または複数のハードウェア資源の管理を行い、コントロールサービスからの獲得要求を調停するシステムリソースマネージャ(SRM)323と、汎用OS321とを備えている。
【0066】
コントロールサービスは、複数のサービスモジュールから形成され、SCS(システムコントロールサービス)322と、ECS(エンジンコントロールサービス)324と、MCS(メモリコントロールサービス)325と、OCS(オペレーションパネルコントロールサービス)326と、FCS(ファックスコントロールサービス)327と、NCS(ネットワークコントロールサービス)328とから構成される。なお、このプラットホーム320は、あらかじめ定義された関数により前記アプリケーション330から処理要求を受信可能とするアプリケーションプログラムインタフェース(API)を有する。
【0067】
汎用OS321は、UNIX(登録商標)などの汎用オペレーティングシステムであり、プラットホーム320並びにアプリケーション330の各ソフトウェアをそれぞれプロセスとして並列実行する。
【0068】
SRM323のプロセスは、SCS322とともにシステムの制御およびリソースの管理を行うものである。SRM323のプロセスは、スキャナ部やプリンタ部などのエンジン、メモリ、HDDファイル、ホストI/O(セントロI/F、ネットワークI/F、IEEE1394 I/F、RS232C I/Fなど)のハードウェア資源を利用する上位層からの要求に従って調停を行い、実行制御する。
【0069】
具体的には、このSRM323は、要求されたハードウェア資源が利用可能であるか(他の要求により利用されていないかどうか)を判断し、利用可能であれば要求されたハードウェア資源が利用可能である旨を上位層に伝える。また、SRM323は、上位層からの要求に対してハードウェア資源の利用スケジューリングを行い、要求内容(例えば、プリンタエンジンにより紙搬送と作像動作、メモリ確保、ファイル生成など)を直接実施している。
【0070】
SCS322のプロセスは、アプリ管理、操作部制御、システム画面表示、LED表示、リソース管理、割り込みアプリ制御などを行う。
【0071】
ECS324のプロセスは、白黒ラインプリンタ301、カラーラインプリンタ302、スキャナ、ファクシミリなどからなるハードウェアリソース303のエンジンの制御を行う。
【0072】
MCS325のプロセスは、画像メモリの取得および解放、ハードディスク装置(HDD)の利用、画像データの圧縮および伸張などを行う。
【0073】
FCS327のプロセスは、システムコントローラの各アプリ層からPSTN/ISDN網を利用したファクシミリ送受信、BKM(バックアップSRAM)で管理されている各種ファクシミリデータの登録/引用、ファクシミリ読みとり、ファクシミリ受信印刷、融合送受信を行うためのAPIを提供する。
【0074】
NCS328のプロセスは、ネットワークI/Oを必要とするアプリケーションに対して共通に利用できるサービスを提供するためのプロセスであり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、アプリケーションからデータをネットワーク側に送信する際の仲介を行う。具体的には、ftpd、httpd、lpd、snmpd、telnetd、smtpdなどのサーバデーモンや、同プロトコルのクライアント機能などを有している。
【0075】
OCS326は、オペレータ(ユーザ)と本体制御間の情報伝達手段となるオペレーションパネル(操作パネル)の制御を行う。OCS326は、オペレーションパネルからキー押下をキーイベントとして取得し、取得したキーに対応したキーイベント関数をSCS322に送信するOCSプロセスの部分と、アプリケーション330またはコントロールサービスからの要求によりオペレーションパネルに各種画面を描画出力する描画関数やその他オペレーションパネルに対する制御を行う関数などがあらかじめ登録されたOCSライブラリの部分とから構成される。このOCSライブラリは、アプリケーション330およびコントロールサービスの各モジュールにリンクされて実装されている。なお、OCS326の全てをプロセスとして動作させるように構成しても良く、あるいはOCS326の全てをOCSライブラリとして構成しても良い。
【0076】
アプリケーション330は、ページ記述言語(PDL)、PCLおよびポストスクリプト(PS)を有するプリンタ用のアプリケーションであるプリンタアプリ311と、コピー用アプリケーションであるコピーアプリ312と、ファクシミリ用アプリケーションであるファックスアプリ313と、スキャナ用アプリケーションであるスキャナアプリ314と、ネットワークファイル用アプリケーションであるネットファイルアプリ315と、工程検査用アプリケーションである工程検査アプリ316とを有している。これらのアプリケーション330はいずれも複合機300の起動時に初期化部(図示せず)によりプロセスとして生成され、動作する。
【0077】
アプリケーション330の各プロセス、コントロールサービスの各プロセスは、関数呼び出しとその戻り値送信およびメッセージの送受信によってプロセス間通信を行いながら、コピー、プリンタ、スキャナ、ファクシミリなどの画像形成処理にかかるユーザサービスを実現している。
【0078】
このように、実施の形態1にかかる複合機300には、複数のアプリケーション330および複数のコントロールサービスが存在し、いずれもプロセスとして動作している。そして、これらの各プロセス内部には、一または複数のスレッドが生成されて、スレッド単位の並列実行が行われる。そして、コントロールサービスがアプリケーション330に対し共通サービスを提供しており、このため、これらの多数のプロセスが並列動作、およびスレッドの並列動作を行って互いにプロセス間通信を行って協調動作をしながら、コピー、プリンタ、スキャナ、ファクシミリなどの画像形成処理にかかるユーザサービスを提供するようになっている。そして、複合機300には、サードベンダーなどの第三者がコントロールサービス層の上のアプリケーション層に新規なアプリケーション(新規アプリ317)を開発して搭載することが可能となっている。
【0079】
図4は、図3に示した実施の形態1の複合機300のハードウェア構成図である。図4に示すように、この複合機300は、CPU402、SDRAM403、SRAM408、フラッシュメモリ404、フラッシュカードインタフェース部406およびHD405などをASIC401に接続したコントローラボード400と、オペレーションパネル410と、ファックスコントロールユニット(FCU)420と、USB430と、IEEE1394 440と、プリンタ450とから構成されている。オペレーションパネル410はASIC401に直接接続され、FCU420、USB430、IEEE1394 440およびプリンタ450はPCIバスを介してASIC401に接続されている。
【0080】
フラッシュカードインタフェース部406は、フラッシュカード407を挿入して、フラッシュカード407とデータのやりとりを行うインタフェースである。このフラッシュカードインタフェース部406によって、開発用サーバ100で生成された新規アプリが記録されたフラッシュカード407を読み込むことができるようになっている。
【0081】
フラッシュメモリ(以下、「フラッシュROM」という。)404には、上述の各アプリ、プラットホーム320を構成する各コントロールサービスやSRM323の各プログラムが格納されている。
【0082】
オペレーションパネル410は、利用者のキー入力、ボタン押下などのキー操作を入力する操作部と、ボタン、ウィンドウ、各種画面などの描画データを表示する表示部とから構成されている。
【0083】
図5は、実施の形態1のアプリ開発キット131を利用して生成した新規アプリ317の実行時におけるプロセス内部と、ECS324、MCS325などのコントロールサービスのプロセスとの呼び出し関係を示す説明図である。図5に示すように、新規アプリ317のプロセス内部には、メインスレッド501と、ラッピングスレッド502と、プロセス間通信スレッド503の少なくとも3つのスレッドが生成されて動作する。
【0084】
メインスレッド501は、新規アプリ317の全体処理を担うスレッドであり、新規アプリ317の開発は、このメインスレッド501として実行されるメイン関数mainをユーザが作成することである。
【0085】
ラッピングスレッド502は、メインスレッド501により、コントロールサービスラッピング関数wrapping_thrdを発行することによって生成されるスレッドであり、各コントロールサービスに対するアクセスを、メインスレッド501に代わってAPIを利用して行い、その処理結果をメインスレッド501に送信するものである。具体的な処理としては、各コントロールサービスが提供するサービス関数をAPIを利用して呼び出したり、メッセージ送信などのプロセス間通信を行う。
【0086】
プロセス間通信スレッド503は、各コントロールサービスからのイベントを受信して、受信したイベントを、ラッピングスレッド502に送信するものである。すなわち、プロセス間通信スレッド503によって受信したイベントは、本来メインスレッド501に送信すべきところ、実施の形態1では、ラッピングスレッド502に一旦送信してから、ラッピングスレッド502によって受信したイベントをメインスレッド501に送信したり、あるいはメインスレッド501に送信せずに、受信したイベントに対する応答処理をラッピングスレッド502で代行することとしている。
【0087】
ここで、各スレッド間の通信は、メールボックスを介して行われる。あるスレッドで、メールボックスを指定して、sendmail関数を発行したとき、指定されたメールボックスにデータが格納される。このとき、別のスレッドでsendmail関数で指定されたメールボックスを指定してrcvmail関数を発行することにより、指定メールボックスに格納されたデータを取得できるようになっている。
【0088】
図6は、メインスレッド501で実行される処理のC言語ソースコードを示す説明図である。なお、図6は一例を示すものであり、これに限定されるものではなく、開発する新規アプリ317の機能によって任意に定めることができる。また、図6はC言語ソースコードで示されているが、他の言語で生成しても良い。
【0089】
メインスレッド501では、以下のような処理が実行される。言い換えると、ユーザは新規アプリ317のmainの処理を、以下の処理が行われるように記述することにより新規アプリ317の開発を行う。まず、図6に示すように、wrapping_thrdによってラッピングスレッド502を生成する。なお、このwrapping_thrdは、コントロールサービスラッピング関数ライブラリに登録されている。
【0090】
次に、実際のアプリの処理として、以下の処理を記述する。whileループの中で、rcvmail関数によりラッピングスレッド502からメールボックスWRAP_MBを介してデータを取得する。ここで、引数idは、受信データを送信したコントロールサービスの識別子(例えば、プロセスIDなど)を示している。そして、SCS322などのコントロールサービスごとに処理を記述する。図6の例では、idがSCS322の場合に、パラメータparaの解析、かかる解析に基づいてAPIを利用したOCS326に対する関数呼び出しやメッセージ送信などの処理、あるいはアプリケーション起動に関する処理を、新規アプリ317の所望の機能に基づいて記述する。そして、whileループを抜けた後に、複合機300にアプリケーションの終了を通知し、これによりリソースが解放される。
【0091】
ここで、図6の例では、whileループの中には、idがSCSの場合におけるOCS326に対する処理、アプリケーション起動に関する処理が記述されているが、他のECS324、MCS325などのコントロールサービスに対するAPIを利用した処理は記述されていない。これは、ECS324、MCS325などのコントロールサービスに対するAPI処理は複雑であるため、後述するラッピングスレッドによって行っているためである。
【0092】
図7は、プロセス間通信スレッド503で実行されるイベント受信処理の手順を示すフローチャートである。プロセス間通信スレッド503では、コントロールサービスからのイベント待ちとなっている。プロセス間通信スレッド503がイベントを受信すると(ステップS701)、イベントを発したコントロールサービスの識別子を「id」に設定し(ステップS702)、sendmail関数によって受信したイベントをメールボックスXCS_MBを介してラッピングスレッド502に送信する(ステップS703)。実際には、各コントロールサービスごとに、Res_ecs()、Res_mcs()、Resc_scs()などの関数を有し、各関数の中で、idに各発信元のコントロールサービスの識別子を設定したsendmail関数を発行している。
【0093】
図8は、ラッピングスレッド502(wrapping_thrd関数)で行われるラッピング処理の手順を示すフローチャートである。ラッピングスレッド502では、まずプロセス間通信スレッド503の生成およびスレッド間の通信に使用されるメールボックスWRAP_MB、XCS_MBの作成を行う(ステップS801)。そして、rcvmail(XCS_MB,para,id)関数を発行し(ステップS802)、プロセス間通信スレッド503からコントロールサービスのプロセスからの受信イベントがメールボックスXCS_MBに存在しているか否かをチェックする(ステップS803)。
【0094】
そして、メールボックスXCS_MBに受信イベントが存在しない場合には、処理を終了し、ラッピングスレッド502はスリープ状態となる。一方、rcvmail関数の発行の結果、メールボックスXCS_MBにコントロールサービスからの受信イベントが存在している場合には、その引数idに設定されている値からイベントの発信元のコントロールサービスを判断する(ステップS804)。
【0095】
idによりイベント発信元のコントロールサービスがSCS322またはOCS326である場合には、idにSCSまたはOCSの識別子を設定して、sendmail(WRAP_MB,para,id)関数を発行し、受信イベントをそのままメインスレッド501にメールボックスWRAP_MBを介して送信する(ステップS805)。これにより、メインスレッド501では、前述のrcvmail(WRAP_MB,para,id)によって受信イベントをそのままの形式で受信することになる。
【0096】
一方、ステップS804において、イベント発信元のコントロールサービスがSCS322またはOCS326以外のコントロールサービス、すなわち、ECS324、MCS325、FCS327またはNCS328である場合には、sendmail関数で受信イベントをメインスレッド501に送信することは行わず、引数paraに設定されたパラメタの解析を行う(ステップS806)。そして、ラッピングスレッド501内部で、受信イベントに対するコントロールサービスに対する処理(APIを利用した関数呼び出しと戻り値受信、メッセージ送受信など)を実行する(ステップS807)。このようなラッピング処理を行うことにより、コントロールサービスに対するAPIを利用した関数呼び出しやメッセージ送受信などの複雑な処理を、ユーザが作成するメインスレッド501のソースコードに記述する必要はなくなる。
【0097】
このようなラッピング処理は、コントロールサービスごとにあらかじめ定められている。図9は、コントロールサービスごとに、ラッピング処理を行う機能、ラッピング処理を行わずにユーザに開示する機能と、全くユーザに開示しない機能とを示す説明図である。
【0098】
図9に示すように、イベントの発信元コントロールサービスがSCS322の場合には、機器の状態通知や電源断通知のような電源関連に関する機能は、ユーザの誤ったコーディングより、複合機300のシステムに悪影響を与えることを防止するため、ラッピングスレッド502によるラッピング処理を行い、機器の状態通知や電源断通知に関する具体的なイベントはメインスレッド501には送信されない。
【0099】
例えば、複合機300のカバーが空いている場合には、SCS322でかかる状態を検知して、機器状態通知イベントを新規アプリ317のプロセス間通信スレッド503に送信する。プロセス間通信スレッド503では、このイベントをrcvmail関数で受信して、メインスレッド501ではなく、ラッピングスレッド502にsendmail関数によって送信する。ラッピングスレッド502では、SCS322からの危機状態通知イベントをrcvmail関数で受信すると、ラッピングスレッド502内で、カバーオープンの旨のメッセージをオペレーションパネル410に表示すべくOCS326とプロセス間通信の処理を行う。従って、ユーザが作成するメインスレッド501のソースコードには、機器状態通知イベントの受信に伴うプロセス間通信の処理を記述する必要はない。電源断通知イベントに対しても、ラッピングスレッド502において同様の処理が行われる。
【0100】
しかし、図9に示すように、アプリケーション起動に関する機能はラッピング処理を行わないため、アプリケーション起動に関するイベントはラッピングスレッド502からsendmail関数でそのままメインスレッド501に送信される。さらに、SCS322と他のコントロールサービス間のプロセス間通信については、全くユーザに開示されない。
【0101】
図9に示すように、イベントの発信元コントロールサービスがECS324、MCS325およびFCS327の場合には、全ての機能に対しラッピングスレッド502によるラッピング処理を行うため、ECS324とMCS325からのイベントはメインスレッド501に送信されることはない。例えば、受信イベントの発信元がECS324の場合には、MCS325に対するメモリ確保要求、SRM323に対する資源獲得要求などのAPI関数呼び出しやこれらに関するメッセージの送受信がラッピングスレッド502内で実行される。また、受信イベントの発信元がMCS325の場合には、例えば、SRM323に対する資源獲得要求などの関数呼び出しやこれに関するメッセージの送受信がラッピングスレッド502内で実行される。さらに、受信イベントの発信元がFCS327の場合は、例えば、ECS324に対するジョブモード設定要求、ジョブ開始要求、ジョブクローズ要求などの関数呼び出しや、ジョブエンド通知などのメッセージ受信がラッピングスレッド502内で実行される。
【0102】
図9に示すように、イベントの発信元コントロールサービスがNCS328の場合には、データ送信プロトコルに関する処理をラッピングスレッド502で行う。例えば、httpやftpの各プロトコルに関連する処理がラッピングスレッド502内で実行される。なお、発信元コントロールサービスがNCS328の場合、データ送信プロトコルに関する処理以外の処理は、全て非公開であり、メインスレッド501で行われることはない。
【0103】
図9に示すように、イベントの発信元コントロールサービスがOCS326の場合には、全ての機能をユーザに開示し、ラッピング処理は行わないため、OCS326からのイベントは全てsendmail関数によってメインスレッド501にそのまま送信される。
【0104】
このように実施の形態1にかかるアプリ開発キット131のラッピング関数では、各コントロールサービスごとにラッピング処理を行う機能が定められている。なお、上述したラッピング処理を行う機能については、これに限定されるものではなく、他の機能をラッピング処理の対象とすることも可能である。
【0105】
上記の他の機能として、例えば、仮想アプリケーションサービス(以下、VASと称する)がある。図10にVASを含む場合の実行時の構成を示す。図10に示すように、VAS340は、アプリケーション330とプラットホーム320の間に配置される。
【0106】
VAS340は、プラットホーム120の各種コントロールサービスあるいはそのAPIが仕様変更などでバージョンアップされた場合に、バージョン差の生じたアプリケーションを再コンパイルすることなくそのまま関数呼び出しが行えるよう、バージョン差を吸収して整合性を保つと共に、コントロールサービスからのメッセージを取捨選択することによってプラットホーム320を隠蔽することができる機能を備えている。更に、各アプリが登録される際に、各アプリとコントロールサービスおよびAPIのそれぞれのバージョンを検出し、その検出されたバージョン差がVAS340によってサポート可能な範囲か否かを判定して、その判定結果をアプリに通知することにより、アプリ動作前にバージョンが不整合かどうかが判明するバージョン管理機能も備えている。
【0107】
VAS340は、アプリから見るとコントロールサービス層として認識されるので、これまでに説明したようなコントロールサービスに対する処理のラッピングと同様にして、VAS340に対する処理のラッピングを行うことが可能である。
【0108】
次に、ラッピング関数を利用した新規アプリ317の生成処理について説明する。図11は、開発用サーバ100による新規アプリ生成処理の手順を示すフローチャートである。起動コマンドが入力されると、デバッグ機能付きコンパイラ110が起動し、コマンド解析部111によって入力されたコマンドの解析を行う(ステップS1001)。具体的にはパラメータや構文の解析を行って、入力されたコマンドが文法的に正確か否かを判断する。
【0109】
次に、構文解析部112によって、新規アプリソースファイル132とインストール済みのアプリ開発キット131の中のヘッダファイルを読み込み(ステップS1002)、新規アプリソースファイル132に記述されたC言語ソースコードの構文解析を行う(ステップS1003)。具体的には、構文解析部112は、C言語ソースコードをC言語文法に従って解析し、導出木や構文木などを生成する。
【0110】
そして、コマンド解析部111によって、入力された起動コマンドにデバッグオプションが指定されているか否かを調べる(ステップS1004)。そして、デバッグオプションが指定されている場合には、関数の入口と出口などにprintf文やassert文などのデバッグ用に変数や関数引数あるいは関数戻り値などを出力するための検証コードとしてのタグを付加する(ステップS1005)。一方、デバッグオプションが指定されていない場合には、タグ付加の処理は行わず、通常のコンパイル処理を行う。
【0111】
次に、コード生成部114によってコード生成処理を行って、新規アプリのオブジェクトコードを生成し、オブジェクトファイル133としてHD130に格納する(ステップS1006)。そして、生成された新規アプリ317のオブジェクトファイル133と、アプリ開発キット131のコントロールサービス関数ライブラリ、標準関数ライブラリ、ラッピング関数ライブラリ、ユーティリティライブラリとをリンクして、アプリ実行形式ファイル134を生成する(ステップS1007)。これにより、新規アプリ317が生成される。
【0112】
このように実施の形態1にかかるアプリ開発キット131を利用したアプリケーション生成方法では、ユーザが各コントロールサービスの機能の概略を把握しておけば、コントロールサービスラッピング関数ライブラリを使用することで、コントロールサービスとのプロセス間通信の複雑な手順を新規アプリ317のソースコードに記述する必要がなく、新規アプリケーションを効率的に開発することができる。
【0113】
また、実施の形態1にかかるアプリ開発キットを利用したアプリケーション生成方法では、ラッピング関数が新規アプリ317に代わってコントロールサービスとのプロセス間通信を行っているので、コントロールサービスとのインタフェースを隠蔽して、重要なインタフェースの秘匿性を確保することができる。
【0114】
なお、ラッピング関数は、コントロールサービスに対する処理を記述したものであれば、必ずしもスレッドとして実行されるものでなくてもよい。
【0115】
(実施の形態2)
実施の形態1にかかるアプリ生成方法では、アプリ開発キット131の中のコントロールサービスラッピング関数ライブラリを利用して新規アプリ317を生成することにより、生成された新規アプリ317のプロセス内部のラッピングスレッド502によってコントロールサービスに対する処理を隠蔽するラッピング処理を行っていたが、この実施の形態2にかかるアプリ生成方法では、アプリ開発キット131の中のアプリラッピング関数ライブラリを利用して新規アプリ317を生成することにより、コントロールサービスに対する処理を既存のアプリケーション330を利用して隠蔽するラッピング処理を行うものである。
【0116】
図12は、実施の形態2にかかる開発用サーバ100のHD130に格納されるファイルを示す説明図である。実施の形態2にかかる開発用サーバ100のHD130には、実施の形態1の開発用サーバ100と同様に、アプリ開発キット1101がインストールされ、新規アプリソースファイル132と、アプリのオブジェクトファイル133と、アプリ実行形式ファイル134とが生成される。
【0117】
アプリ開発キット1101は、実施の形態1のアプリ開発キット131と同様に、CD−ROMまたはフレキシブルディスク(FD)などの記録媒体にインストール可能な形式で提供され、開発用サーバ100のHD130にインストールされる。この記録媒体のアプリ開発キット1101の中には、図12に示すように、コントロールサービス関数ライブラリと、標準関数ライブラリと、アプリ関数ライブラリと、ユーティリティライブラリと、ヘッダファイルと、デバッグ機能付きコンパイラと、リンカと、汎用OSプログラムと、デバッグ用ユーティリティとが含まれている。ここで、コントロールサービス関数ライブラリ、標準関数ライブラリ、ユーティリティライブラリ、ヘッダファイル、デバッグ機能付きコンパイラ、リンカ、汎用OSプログラム、デバッグ用ユーティリティは、実施の形態1におけるアプリ開発キット131に含まれているものと同様である。すなわち、実施の形態2にかかるアプリ開発キット1101は、アプリラッピング関数ライブラリが含まれている点が実施の形態1にかかるアプリ開発キット131と異なっている。
【0118】
アプリ関数ライブラリは、プリンタアプリ311を呼び出すプリンタ関数printap()と、スキャナアプリ314を呼び出すスキャナ関数scanap()と、コピーアプリ312を呼び出すコピー関数copyap()と、ファックスアプリ313を呼び出すファックス送信関数faxap_send()およびファックス受信関数faxap_rcv()とを登録したものである。
【0119】
次に、アプリ関数ライブラリを利用した新規アプリ317の生成処理について説明する。図13は、開発用サーバ100による新規アプリ生成処理の手順を示すフローチャートである。起動コマンドの解析からオブジェクトファイル133の生成までの処理(ステップS1201〜S1206)は、実施の形態1のアプリ生成方法で説明した図11におけるステップS1001からS1006までの処理と同様である。
【0120】
新規アプリ317のオブジェクトファイル133が生成されたら、生成されたオブジェクトファイル133と、アプリ開発キット131のコントロールサービス関数ライブラリ、標準関数ライブラリ、アプリ関数ライブラリ、ユーティリティライブラリとをリンクして、アプリ実行形式ファイル134を生成する(ステップS1207)。これにより、新規アプリ317が生成される。
【0121】
図14は、アプリ関数ライブラリ1301とリンクして開発した新規アプリ317と既存のアプリケーション330、およびコントロールサービスの複合機300内での関係を示すブロック図である。図14に示すように、新規アプリ317のソースコードには、スキャナ機能を使用するためにスキャナ関数scanap、印刷機能を使用するためにプリンタ関数printap、コピー機能を使用するためにコピー関数copyap、ファックス送信機能を使用するためにファックス送信関数faxap_send、ファックス受信機能を使用するためにファックス受信関数faxap_rcvが記述されている。
【0122】
これらの関数は全てアプリ関数ライブラリ1301に登録されており、アプリ関数ライブラリ1301は新規アプリ317にリンクされているため、新規アプリ317内のscanap関数呼び出しによりスキャナアプリ314が、printap関数呼び出しによりプリンタアプリ311が、copyap関数呼び出しによりコピーアプリ312が、faxap_send関数呼び出しおよびfaxap_rcv関数呼び出しによりファックスアプリ313がそれぞれ呼び出され実行されることになる。
【0123】
これらの各アプリでは、ECS324、MCS325などのコントロールサービスのプロセスに対して複雑な手順のサービス関数呼び出しまたはメッセージ送受信によるプロセス間通信が行われる。このため、新規アプリ317のソースコードに、これらのプロセス間通信の手順を記述する必要はなく、各機能に応じたアプリ関数ライブラリ1301の関数呼び出しを行えばよい。
【0124】
すなわち、例えばスキャナ機能を使用する場合には、新規アプリ317の中でECS324に対してジョブ生成要求、ジョブモード設定要求などの処理を、MCS325に対してメモリ確保要求などの処理を記述しなければならないため、APIを用意しているとはいっても、各コントロールサービスに対するプロセス間通信処理の記述に誤りが生じる可能性がある。実施の形態2にかかるアプリ生成方法により生成された新規アプリ317では、アプリ関数ライブラリ1301に登録された各関数を呼び出すことにより、各機能に対応したアプリが呼び出され、呼び出された各アプリ内でコントロールサービスとのプロセス間通信が実現される。従って、新規アプリにおけるコントロールサービスに対する処理のラッピングが実現され、新規アプリ317の開発を効率的に行うことができる。
【0125】
なお、実施の形態2では、生成した新規アプリ317からの既存アプリの呼び出しを同一複合機300内で行うこととしているが、新規アプリ317からネットワーク経由で既存アプリの呼び出しを行うようにしても良い。例えば、ネットワーク接続された異なる複合機間で、一方の複合機の新規アプリ317から他方の複合機内の既存アプリを呼び出すように構成することができる。また、デバッグ環境として複合機300にネットワーク接続されたコンピュータのハードディスクに新規アプリ317を格納し、当該コンピュータのハードディスクをNFS(ネットワークファイルシステム)によって複合機300にマウントし、コンピュータ内の新規アプリ317からネットワーク経由で複合機300内の既存アプリを呼び出すように構成することができる。このようなネットワーク経由での既存アプリの呼び出しは、例えばRPC(Remote Procedure Call:遠隔手続呼び出し)などの機能を利用することにより実現することができる。
【0126】
なお、コピー、スキャン、プリント等のイメージに関する処理をスレッドとして実行させるように新規アプリ317を構成することも可能である。この場合、イメージに関する処理を記述した関数を登録したイメージライブラリを新規アプリ317にリンクさせる。図15に、新規アプリ317の実行時における構成を示す。
【0127】
図15に示すように、新規アプリプロセス317は、複数のスレッドが並列実行されたマルチスレッド環境となっており、メインスレッド610とイメージライブラリスレッド600が並列実行される。メインスレッド610は、新規アプリの処理(例えば文字認識処理)を実行するスレッドであり、このメインスレッド610がイメージライブラリを利用する。
【0128】
イメージライブラリスレッド600は、イメージライブラリの各機能(関数)を提供するものであり、メインスレッド610によって起動される。このとき、イメージライブラリスレッド600の内部には、イメージライブラリの中の各ライブラリに対応する複数のサブスレッドが起動される。すなわち、スキャンスレッド601、プリントスレッド602、ファイル操作スレッド603がサブスレッドとなる。また、新規アプリプロセスには、メールボックス611、メールボックス612、イベント取得ハンドラ(スレッド)613が起動される。
【0129】
メールボックス611は、メインスレッド610とイメージライブラリスレッド600およびイベント取得ハンドラ613との通信に使用される。メールボックス612は、メインスレッド610とイメージライブラリスレッド600の通信に使用される。イベント取得ハンドラ613は、ECS324,MCS325などのコントロールサービスのプロセスからのイベントメッセージを受信し、メールボックス611に書き込む機能を有している。
【0130】
メインスレッド610は、イメージライブラリスレッド600に対する関数呼び出しのコマンドを、メールボックス611に入れる。また、コントロールサービス320からのイベントメッセージも、メールボックス611に入る。イメージライブラリスレッド600は、メールボックス611に配信されるメッセージをrcv_msg()関数によって取得する。そして、メッセージの内容に基づき、サブスレッドがコントロールサービスとのプロセス間通信を行いながら必要な処理を実行する。
【0131】
なお、イメージライブラリスレッド600は、メインスレッド610に対して、エラー情報、実行結果、途中経過などの通知をメールボックス612に入れる。メインスレッド610は、メールボックス612に配信されるメッセージをrcv_msg()関数によって取得し、メッセージの内容に対応した処理を実行する。
【0132】
このように、コントロールサービスとのプロセス間通信に係る複雑な処理は、イメージライブラリスレッド600が行うので、新規アプリ開発に際しては、main関数の中にコントロールサービスとのプロセス間通信に係る複雑な処理を記述する必要がない。すなわち、ラッピングが実現される。
【0133】
なお、上記の例において、イメージライブラリの処理は必ずしもスレッド600として実行させる必要はない。ラッピングさせたい処理の内容をライブラリとして準備し、ライブラリにおける関数を利用することにより新規アプリの開発を効率的に行うことが可能である。
【0134】
本発明は、上記の実施形態に限定されることなく、特許請求の範囲内で種々変更・応用が可能である。
【発明の効果】
【0135】
以上説明したように、本発明によれば、コントロールサービスとのプロセス間通信の複雑な手順を新規アプリケーションのソースコードに記述する必要がなくなり、新規アプリケーションを効率的に開発することができるという効果を奏する。
【図面の簡単な説明】
【図1】 実施の形態1の開発用サーバのソフトウェア構成を示すブロック図である。
【図2】 実施の形態1にかかる開発用サーバ、開発用PCのハードウェア構成および開発環境を示すブロック図である。
【図3】 実施の形態1にかかる複合機の機能的構成を示すブロック図である。
【図4】 実施の形態1にかかる複合機のハードウェア構成図である。
【図5】 実施の形態1のアプリ開発キットを利用して生成した新規アプリのプロセス内部と、ECS、MCSなどのコントロールサービスのプロセスとの呼び出し関係を示す説明図である。
【図6】 実施の形態1のアプリ開発キットを使用して生成された新規アプリのメインスレッドで実行される処理のC言語ソースコードを示す説明図である。
【図7】 実施の形態1のアプリ開発キットを使用して生成された新規アプリのプロセス間通信スレッドで実行されるイベント受信処理の手順を示すフローチャートである。
【図8】 実施の形態1のアプリ開発キットを使用して生成された新規アプリのラッピングスレッドで行われるラッピング処理の手順を示すフローチャートである。
【図9】 実施の形態1にかかる複合機において、コントロールサービスごとにラッピング処理を行う機能、ラッピング処理を行わずにユーザに開示する機能と、全くユーザに開示しない機能とを示す説明図である。
【図10】 VAS340を含む場合における複合機の実行時の構成を示す図である。
【図11】 実施の形態1にかかる開発用サーバによる新規アプリ生成処理の手順を示すフローチャートである。
【図12】 実施の形態2にかかる開発用サーバのHDに格納されるファイルを示す説明図である。
【図13】 実施の形態2にかかる開発用サーバによる新規アプリ生成処理の手順を示すフローチャートである。
【図14】 実施の形態2にかかるアプリ開発キットを使用して生成された新規アプリと既存のアプリケーションおよびコントロールサービスの複合機内での関係を示すブロック図である。
【図15】 コピー、スキャン、プリント等のイメージに関する処理をスレッドとして実行させる場合における新規アプリの実行時の構成を示す図である。
【符号の説明】
100 開発用サーバ
110 デバッグ機能付きコンパイラ
111 コマンド解析部
112 構文解析部
113 タグ付加部
114 コード生成部
120 リンカ
130 ハードディスク(HD)
131,1101 アプリ開発キット
132 新規アプリソースファイル
133 オブジェクトファイル
134 アプリ実行形式ファイル
201,211 入力装置
202,212 表示装置
203,213 RAM
204,214 制御装置
205,215 外部記憶装置
206,216 通信装置
300 複合機
301 白黒ラインプリンタ
302 カラーラインプリンタ
303 ハードウェアリソース
310 ソフトウェア群
311 プリンタアプリ
312 コピーアプリ
313 ファックスアプリ
314 スキャナアプリ
315 ネットファイルアプリ
316 工程検査アプリ
320 プラットホーム
321 汎用OS
322 SCS
323 SRM
324 ECS
325 MCS
326 OCS
327 FCS
328 NCS
330 アプリケーション
340 仮想アプリケーションサービス(VAS)
400 コントローラボード
401 ASIC
402 CPU
403 SDRAM(RAM)
404 フラッシュメモリ(ROM)
405 HD
406 フラッシュカードインタフェース部
407 フラッシュカード
408 SRAM
410 オペレーションパネル
430 USB
440 IEEE1394
450 プリンタ
600 イメージライブラリスレッド
601 スキャンスレッド
602 プリントスレッド
603 ファイル操作スレッド
610 メインスレッド
611、612 メールボックス
613 イベント取得ハンドラ
1301 アプリ関数ライブラリ

Claims (10)

  1. 画像形成処理で使用されるハードウェア資源とオペレーティングシステムとを備え、画像形成に関する処理を行うアプリケーションプロセスとして動作するアプリケーションプログラムを複数搭載可能に構成された画像形成装置であって、前記オペレーティングシステム上で動作し、複数の前記アプリケーションプロセスからアクセスされ、複数の前記アプリケーションプロセスで共通的に利用される機能を各アプリケーションプロセスに提供するコントロールサービスプロセスとして動作するコントロールサービスプログラムを複数備えた画像形成装置において実行されるアプリケーションプログラムであり、前記画像形成装置を、
    前記アプリケーションプログラムのメイン関数の処理を実行するメイン処理手段、
    前記複数のコントロールサービスプロセスとのプロセス間通信を行うプロセス間通信手段、
    前記複数のコントロールサービスプロセスのうちの予め定めたコントロールサービスプロセスの機能を利用するためのプロセス間通信処理を前記プロセス間通信手段を用いて実行するラッピング手段、として機能させるアプリケーションプログラムであって、
    前記ラッピング手段は、前記予め定めたコントロールサービスプロセスから受信したイベントに対する応答処理を実行し、前記予め定めたコントロールサービスプロセス以外のコントロールサービスプロセスからイベントを受信した場合には、前記応答処理を行わずに当該イベントを前記メイン処理手段に送信する、
    ことを特徴とするアプリケーションプログラム。
  2. 前記ラッピング手段は、前記画像形成装置において、前記アプリケーションプログラムが実行されて生成されるプロセス内部でのラッピングスレッドとして機能することを特徴とする請求項1に記載のアプリケーションプログラム。
  3. 前記ラッピング手段は、前記画像形成装置のエンジン制御を行うエンジンコントロールサービスプロセスが提供するいずれの機能においても、当該機能を利用するためのプロセス間通信処理を実行することを特徴とする請求項1又は2に記載のアプリケーションプログラム。
  4. 前記ラッピング手段は、前記画像形成装置のメモリ制御を行うメモリコントロールサービスプロセスが提供するいずれの機能においても、当該機能を利用するためのプロセス間通信処理を実行することを特徴とする請求項1ないしのうちいずれか1項に記載のアプリケーションプログラム。
  5. 前記ラッピング手段は、前記画像形成装置のシステム制御を行うシステムコントロールサービスプロセスが提供する機能の中で、システム状態通知および電源状態に関する機能を利用するためのプロセス間通信処理を実行することを特徴とする請求項1ないしのうちいずれか1項に記載のアプリケーションプログラム。
  6. 前記ラッピング手段は、前記画像形成装置のネットワーク制御を行うネットワークコントロールサービスが提供する機能の中で、データ送信プロトコルを使用する機能を利用するためのプロセス間通信処理を実行することを特徴とする請求項1ないしのうちいずれか1項に記載のアプリケーションプログラム。
  7. 前記ラッピング手段は、前記複数のコントロールサービスプロセスのうち、前記画像形成装置のオペレーションパネルを制御するオペパネコントロールサービスプロセス以外のコントロールサービスプロセスが提供する機能を利用するためのプロセス間通信処理を実行することを特徴とする請求項1ないしのうちいずれか1項に記載のアプリケーションプログラム。
  8. 前記ラッピング手段は、前記アプリケーションプログラムが実行されて生成されるプロセスと前記コントロールサービスプロセスとの間に介在して実行される仮想アプリケーションサービスプロセスに対するプロセス間通信処理を実行することを特徴とする請求項1ないしのうちいずれか1項に記載のアプリケーションプログラム。
  9. 請求項1ないしのうちのいずれか1項に記載のアプリケーションプログラムを記録したコンピュータ読み取り可能な記録媒体。
  10. 画像形成処理で使用されるハードウェア資源とオペレーティングシステムとを備え、画像形成に関する処理を行うアプリケーションプロセスとして動作するアプリケーションプログラムを複数搭載可能に構成された画像形成装置であり、前記オペレーティングシステム上で動作し、複数の前記アプリケーションプロセスからアクセスされ、複数の前記アプリケーションプロセスで共通的に利用される機能を各アプリケーションプロセスに提供するコントロールサービスプロセスとして動作するコントロールサービスプログラムを複数備え、更にアプリケーションプログラムを備えた画像形成装置であって、当該アプリケーションプログラムは、前記画像形成装置を、
    前記アプリケーションプログラムのメイン関数の処理を実行するメイン処理手段、
    前記複数のコントロールサービスプロセスとのプロセス間通信を行うプロセス間通信手段
    前記複数のコントロールサービスプロセスのうちの予め定めたコントロールサービスプロセスの機能を利用するためのプロセス間通信処理を前記プロセス間通信手段を用いて実行するラッピング手段、として機能させるアプリケーションプログラムであり、
    前記ラッピング手段は、前記予め定めたコントロールサービスプロセスから受信したイベントに対する応答処理を実行し、前記予め定めたコントロールサービスプロセス以外のコントロールサービスプロセスからイベントを受信した場合には、前記応答処理を行わずに当該イベントを前記メイン処理手段に送信する、
    ことを特徴とする画像形成装置。
JP2002377972A 2002-01-08 2002-12-26 画像形成装置、アプリケーションプログラム及び記録媒体 Expired - Fee Related JP4334214B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2002377972A JP4334214B2 (ja) 2002-01-08 2002-12-26 画像形成装置、アプリケーションプログラム及び記録媒体
US10/334,828 US20030140174A1 (en) 2002-01-08 2003-01-02 Method for generating application for information processing apparatus and image forming apparatus

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2002-1562 2002-01-08
JP2002001562 2002-01-08
JP2002377972A JP4334214B2 (ja) 2002-01-08 2002-12-26 画像形成装置、アプリケーションプログラム及び記録媒体

Publications (2)

Publication Number Publication Date
JP2003271386A JP2003271386A (ja) 2003-09-26
JP4334214B2 true JP4334214B2 (ja) 2009-09-30

Family

ID=29217783

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002377972A Expired - Fee Related JP4334214B2 (ja) 2002-01-08 2002-12-26 画像形成装置、アプリケーションプログラム及び記録媒体

Country Status (1)

Country Link
JP (1) JP4334214B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5036770B2 (ja) * 2002-07-19 2012-09-26 株式会社リコー 装置及びラッピング処理方法並びにプログラム
JP2007164595A (ja) * 2005-12-15 2007-06-28 Toshiba Corp コンピュータシステムの関数呼び出し方法、コンピュータシステムおよびライブラリ
JP5420622B2 (ja) * 2011-11-05 2014-02-19 京セラドキュメントソリューションズ株式会社 プログラム
JP5420623B2 (ja) * 2011-11-05 2014-02-19 京セラドキュメントソリューションズ株式会社 プログラム

Also Published As

Publication number Publication date
JP2003271386A (ja) 2003-09-26

Similar Documents

Publication Publication Date Title
JP4365148B2 (ja) 画像形成装置及びラッピング処理方法並びにプログラム
US8094330B2 (en) Image forming apparatus that can launch external applications selectively after shipment of the apparatus
US7636172B2 (en) Image forming apparatus, information processing apparatus and version check method using an API from an application
JP2004112785A (ja) 画像処理装置、画像処理方法、及び画像処理プログラム
US20030072023A1 (en) Key operation monitoring method, drawing information obtaining method and key operation reproducing method in image forming apparatus
JP2004185595A (ja) 情報処理装置およびそのプログラム
US20030140174A1 (en) Method for generating application for information processing apparatus and image forming apparatus
JP2004118237A (ja) 画像形成装置およびアプリケーションインストール方法
US20030133136A1 (en) Method for generating and launching application for information processing apparatus and image forming apparatus
JP4334214B2 (ja) 画像形成装置、アプリケーションプログラム及び記録媒体
JP2004185593A (ja) 画像形成装置およびアプリケーション実行方法
JP4037079B2 (ja) 画像形成装置、プロセス監視方法およびこの方法をコンピュータに実行させるプログラム
JP2004185594A (ja) 画像形成装置およびプログラム実行方法
JP2009205262A (ja) アプリケーションプログラムインストール装置、アプリケーションプログラムインストール方法、プログラム、および記録媒体
JP2006311590A (ja) 画像形成装置およびアプリケーションインストール方法
JP4334213B2 (ja) 情報処理装置、アプリケーションプログラム及び記録媒体
JP5036770B2 (ja) 装置及びラッピング処理方法並びにプログラム
JP4676977B2 (ja) 画像形成装置、アプリケーション情報取得方法、及びプログラム
JP4246560B2 (ja) 情報処理装置、情報処理方法、プログラム、及び記録媒体
JP2004127253A (ja) 情報処理装置およびバージョンチェック方法
JP4133085B2 (ja) 画像形成装置およびカスタマイズプログラム試験方法
JP4080739B2 (ja) 画像形成装置用アプリケーション生成方法およびその方法をコンピュータに実行させるプログラム
JP2003263321A (ja) 画像形成装置用アプリケーション生成方法、画像形成装置用アプリケーション起動方法、画像形成装置用アプリケーション生成プログラム、画像形成装置および画像形成装置用アプリ開発記録媒体
JP3977039B2 (ja) 画像情報処理装置用通信プログラム生成方法および画像情報処理装置用通信プログラム生成装置
JP4500326B2 (ja) プロセス間通信プログラムおよび画像情報処理装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060307

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060508

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060704

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060831

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20060907

A912 Removal of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20061110

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090507

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090623

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120703

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120703

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130703

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees