説明

画像形成装置、画像形成システム、及び画像形成システムの制御方法

【課題】テストによって、アプリケーションが不正なものか否かを確認しつつ、テスト結果に異常がないとメーカが確認した状態から改ざんされたアプリケーションのパッケージングを防ぐ。
【解決手段】画像形成装置と、第1のコンピュータと、画像形成装置から出力されたハッシュ値と、パッケージングしようとする開発中アプリケーションのハッシュ値が一致する場合、パッケージングする第2のコンピュータを含む画像形成システムの画像形成装置であり、画像形成装置は、開発中アプリケーションの入力を受け付ける入力部と、開発中アプリケーションと監視ソフトを記憶する記憶部と、開発中アプリケーションと、監視ソフトを動作させ、監視ソフトによるテスト結果を把握し、開発中アプリケーションのハッシュ値を演算する制御部と、テスト結果とハッシュ値を出力する出力部と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アプリケーションを追加して記憶する複合機、複写機、プリンタ、FAX装置等の画像形成装置に関する。又、この画像形成装置を含む画像形成システム及び画像形成システムの制御方法に関する。
【背景技術】
【0002】
通常、コピーやプリンタ、ファクシミリ、スキャナといった基本的な機能に関するプログラムやアプリケーションは、画像形成装置のメーカが作成する。そして、メーカのアプリケーションが画像形成装置に搭載される。しかし、近年、画像形成装置の利便性向上のため、メーカ以外の者が独自に画像形成装置用のアプリケーションの開発を望む場合がある。この要望に応えるため、メーカは、SDK(Software Development Kit)と呼ばれる画像形成装置のアプリケーション開発用ツールを販売、提供することがある。そして、第三者は、開発者として所望の処理を実行するカスタムアプリケーションを開発する。
【0003】
第三者が作成するアプリケーションの例を挙げると、例えば、スキャナ機能にOCR技術(Optical Character Recognition、光学文字認識技術)を連携させ、スキャンした名刺をデータベース化するアプリケーションがある。又、スキャンした紙文書を電子文書化するアプリケーションがある。このように、第三者は、アプリケーションを作成することで、画像形成装置の機能を基礎として、画像形成装置の機能拡張を実現する。しかし、第三者が作成したアプリケーションが正常に動作するとは限らず、エラーが含まれる場合もある。そこで、ハードウェアやプログラムが適正な動作を行っているかを監視する機能を有する画像形成装置が特許文献1に記載されている。
【0004】
具体的に、特許文献1には、画像像形成処理で使用されるハードウェア資源と、画像形成処理にかかるユーザサービスにそれぞれ固有の処理を行うアプリケーションのプロセスと、アプリケーションと前記ハードウェア資源との間に介在し、ユーザサービスを提供する際に、アプリケーションの少なくとも2つが共通的に必要とするハードウェア資源の獲得要求、管理、実行制御並びに画像形成処理を行う複数のコントロールサービスのプロセスを含むプラットホームとを備えた画像形成装置であって、コントロールサービスまたはアプリケーションのプロセスとの間でプロセス間通信を行うことによって、コントロールサービスのソフトウェアエラーを検知する診断手段を備えた画像形成装置が記載されている。この構成により、コントロールサービスやアプリケーションなどのソフトウェアのエラーを検知し、障害が生じた場合の原因究明を正確かつ速やかに行おうとする(特許文献1:請求項1、段落[0007]等参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2003−078688号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
上記のように、メーカ以外の第三者でも、アプリケーションを開発し、画像形成装置にインストールできるように、SDKが提供される。そして、画像形成装置で問題が生ずるようなアプリケーションの開発を防ぐ等の観点から、SDKは、メーカが開発を許可した者に提供される。言い換えると、メーカが認めた開発者のみアプリケーションの開発が行える。更に、メーカは、開発者に開発されたアプリケーションに問題があるか(エラーが含まれるか)のテスト結果を確認できるようにすべきであるという問題がある。
【0007】
そして、例えば、開発者によって開発されたアプリケーションを複合機に最終的にインストールできるようにするため、SDKには、バイナリデータ、データファイル、構成ファイル等をバンドルするパッケージング用のプログラムが含まれる。そして、テストに異常がなければ、メーカから開発者にパッケージングの際に入力が求められるアプリケーションコードが与えられる場合がある。この場合、アプリケーションコードがあれば、開発者は開発したアプリケーションのパッケージングを行える。パッケージングを終えることで、開発者は開発したアプリケーションの販売、頒布等を行えるようになる。
【0008】
しかし、この従来の方法では、アプリケーションコードがあればパッケージングできるので、テストされたアプリケーションを改ざんしたアプリケーションをパッケージングすることができる。改ざんで、アプリケーションを実行した際、画像形成装置でエラーが含まれるような命令等が追加される可能性がある。従って、改ざんを加えたアプリケーションのパッケージングを防止すべきという問題がある。
【0009】
特に、SDKが、メーカが認めた開発者以外の第三者に流出する場合がある。流出があった場合、例えば、既にパッケージング用のアプリケーションコード等が発行されていれば、メーカは、第三者によって作成、販売されるアプリケーションに対する管理を全く行えなくなる。第三者に悪意があり、意図的にエラーが含まれるようなアプリケーションやアプリケーションを入手した者の情報が漏洩されるような不正なアプリケーションのパッケージングがなされることもあり得る。従って、無許可の悪意の第三者による無制限なアプリケーションの開発、販売を防ぐためにも、テスト結果に異常がないとメーカが確認した状態から改ざんされたアプリケーションのパッケージングを防ぐ必要がある。
【0010】
ここで、特許文献1によれば、画像形成装置に搭載されるアプリケーションのエラーの検知等を行うことができる。しかし、パッケージング時点での改ざんについての言及はない。従って、上記の改ざんの問題に対応できない。尚、特許文献1記載の発明では、診断を行うには、各アプリケーションに診断関数を組み込んでおく必要がある(例えば、特許文献1:請求項2、段落[0055]等参照)。しかし、特許文献1の発明では診断関数がアプリケーションに含まれていない場合の扱いについて示されておらず、又、ソフトウェアのエラーの診断関数は、具体的に何を診断するのか、どのようなエラーを検知するのか、全く記載されておらず、ソフトウェアのエラーを検知できるか不明である。
【0011】
本発明は、上記従来技術の問題点に鑑みてなされたものであり、テストによって、アプリケーションが不正なものか否かを確認しつつ、テスト結果に異常がないとメーカが確認した状態から改ざんされたアプリケーションのパッケージングを防ぐことを課題とする。
【課題を解決するための手段】
【0012】
上記課題解決のため、請求項1に係る画像形成装置は、開発中アプリケーションの画像形成装置への入力を受け付ける入力部と、入力された前記開発中アプリケーションを記憶するとともに、実行された前記開発中アプリケーションの動作を監視し、テストする監視ソフトを記憶する記憶部と、前記開発中アプリケーションと、前記監視ソフトを動作させ、前記監視ソフトによるテスト結果を把握し、前記開発中アプリケーションのハッシュ値を演算する制御部と、前記テスト結果と前記ハッシュ値を出力する出力部と、を備える画像形成装置と、前記画像形成装置から出力された開発中アプリケーションのテスト結果と前記ハッシュ値を取得する第1データ通信部を有する第1のコンピュータと、前記開発中アプリケーションを記憶するとともに前記第1のコンピュータから前記ハッシュ値を取得する第2データ通信部を有し、前記ハッシュ値と、前記開発中アプリケーションを対象として求めたハッシュ値が一致する場合、前記開発中アプリケーションを前記画像形成装置にインストールできるようにパッケージングする第2のコンピュータと、を含む画像形成システムにおける画像形成装置であることとした。
【0013】
この構成によれば、画像形成装置は、テスト結果とハッシュ値を出力する。これによりパッケージングを行う際の開発中アプリケーションのハッシュ値と、テストを実施する画像形成装置が出力したハッシュ値を比較することができる。従って、テストが行われた時点から、パッケージングを行おうとするまでの間に、開発中アプリケーションに対し改ざんが行われたかを確認することができる。又、画像形成装置の出力したテスト結果を第1のコンピュータで確認できる。従って、開発中アプリケーションに問題があるか否か(エラーを含む不正なアプリケーションか否か)も確認することができる。尚、開発中アプリケーションとは、開発中であり、最終的なパッケージングがなされず、開発完了に至っていないアプリケーションである。
【0014】
又、請求項2に係る発明は、請求項1の発明において、前記制御部は、前記テスト結果と前記ハッシュ値の暗号化を行い、暗号化された前記テスト結果と前記ハッシュ値を前記出力部から出力させることとした。
【0015】
この構成によれば、画像形成装置は、テスト結果とハッシュ値を暗号化して出力部から第1のコンピュータに出力する。これにより、悪意のある開発者にとって都合がよくなるようなテスト結果とハッシュ値自体の改ざんを防ぐことができる。従って、パッケージングを行おうとする開発中アプリケーションに改ざんがなされたか否かを、間違いなく判断することができる。又、テスト結果の信頼性が向上する。
【0016】
又、請求項3に係る発明は、請求項1又は2の発明において、前記画像形成装置は、前記入力部に接続された外部記憶装置内に記憶される前記開発中アプリケーションを取り込んで前記記憶部に記憶し、前記テスト結果と前記ハッシュ値を前記出力部に接続された前記外部記憶装置に記憶させることとした。
【0017】
この構成によれば、入力部に接続された外部記憶装置内に記憶される開発中アプリケーションが記憶部に記憶され、テスト結果とハッシュ値を出力部に接続された外部記憶装置に記憶される。これにより、例えば、USBメモリのような外部記憶装置を接続するだけで、画像形成装置への開発中アプリケーションのインストールが行われ、テスト結果とハッシュ値が外部記憶装置に格納される。従って、画像形成装置への開発中アプリケーションのインストールやテスト結果やハッシュ値の第1のコンピュータへの引き渡しを容易に行うことができる。
【0018】
又、請求項4に係る発明は、請求項1乃至3の発明において、前記記憶部は、前記監視ソフトによるテスト終了後、前記開発中アプリケーションを消去することとした。
【0019】
この構成によれば、記憶部は、監視ソフトによるテスト終了後、開発中アプリケーションを消去する。これにより、開発中アプリケーションが不十分なものであっても、画像形成装置の動作に影響を与えることを防ぐことができる。
【0020】
又、請求項5に係る発明は、請求項1乃至4の発明において、前記記憶部は、少なくともハードディスクドライブ、ランダムアクセスメモリを含み、前記制御部は、データ及びプログラムの処理を行うための演算部を含み、前記監視ソフトにより、前記開発中アプリケーションの前記ハードディスクドライブ及び前記ランダムアクセスメモリにおける占有容量、及び、前記演算部の負荷率のテストを行い、前記出力部は、前記占有容量及び前記負荷率をテスト結果として出力することとした。
【0021】
この構成によれば、出力部は、開発中アプリケーションのハードディスクドライブ及びランダムアクセスメモリにおける占有容量、及び、演算部の負荷率をテスト結果として出力する。これにより、開発中アプリケーションのハードディスクドライブやランダムアクセスメモリの占有容量が大きすぎ、データのオーバーフローや、他のアプリケーションの動作の妨げになる等の弊害の発生の可能性を確認することができる。従って、開発中アプリケーションに不正な部分がないかを確認することができる。
【0022】
又、請求項6に係る発明は、請求項1乃至5の発明において、前記記憶部は、予め用意され、動作保証された命令、関数、ルーチンを記憶し、前記制御部は、前記監視ソフトにより、前記開発中アプリケーションが予め用意され、動作保証された命令、関数、ルーチン以外の命令、関数、ルーチンを使用するか否かのテストを行い、前記出力部は、命令、関数、ルーチンのテスト結果を出力することとした。
【0023】
この構成によれば、出力部は、動作保証された命令、関数、ルーチン以外の命令、関数、ルーチンを使用するか否かのテスト結果を出力する。開発中アプリケーションが、動作保証がない命令等を使用すれば、画像形成装置のフリーズ等、画像形成装置の動作に悪影響を与える場合がある。従って、開発中アプリケーションが、動作保証がない命令等を使用するか否かを確認することにより、開発中アプリケーションに不正な部分がないかを確認することができる。
【0024】
又、請求項7に係る画像形成システムは、少なくとも画像形成装置と、第1のコンピュータと、第2のコンピュータで構成され、前記画像形成装置は、開発中アプリケーションの前記画像形成装置への入力を受け付ける入力部と、入力された前記開発中アプリケーションを記憶するとともに、実行された前記開発中アプリケーションの動作を監視し、テストする監視ソフトを記憶する記憶部と、前記開発中アプリケーションと、前記監視ソフトを動作させ、前記監視ソフトによるテスト結果を把握し、前記開発中アプリケーションのハッシュ値を演算する制御部と、前記テスト結果と前記ハッシュ値を出力する出力部と、を備え、前記第1のコンピュータは、前記画像形成装置が出力した前記テスト結果と前記ハッシュ値を取得する第1データ通信部を有し、取得した前記テスト結果に基づき、前記開発中アプリケーションにエラーが含まれるか否かを判断し、エラー部分が含まれていない場合、少なくとも、前記ハッシュ値を前記第1データ通信部から出力し、前記第2のコンピュータは、前記開発中アプリケーションを記憶するとともに前記第1のコンピュータから前記ハッシュ値を取得する第2データ通信部を有し、前記ハッシュ値と、前記開発中アプリケーションを対象として求めたハッシュ値が一致する場合、前記開発中アプリケーションを前記画像形成装置にインストールできるようにパッケージングする第2のコンピュータと、を含むこととした。
【0025】
この構成によれば、画像形成装置は、テスト結果とハッシュ値を出力する。これによりパッケージングを行う際のアプリケーションのハッシュ値と、テストを行った画像形成装置が出力したハッシュ値を比較することができる。従って、テストが行われた時点から、パッケージングを行おうとするまでの間に、開発中アプリケーションに対し改ざんが行われたかを確認することができる。又、画像形成装置の出力したテスト結果を第1のコンピュータで確認できる。従って、開発中アプリケーションに問題があるか否か(エラーが含まれる不正なアプリケーションか否か)も確認することができる。
【0026】
又、請求項8に係る発明は、請求項7記載の発明において、前記第1のコンピュータは、前記開発中アプリケーションにエラーが含まれていないと判断した場合、アプリケーションコードを生成し、前記ハッシュ値とともに、前記アプリケーションコードを前記第1データ通信部から出力し、前記第2のコンピュータは、前記第1のコンピュータが生成した前記アプリケーションコードを読み込んだことを条件として、前記開発中アプリケーションをパッケージングすることとした。
【0027】
この構成によれば、第1のコンピュータは、アプリケーションコードを生成し、ハッシュ値とともに、アプリケーションコードを第1データ通信部から出力する。これにより、アプリケーションコードを与え、パッケージングにアプリケーションコードが必要になるという要件により、誰に、どのようなアプリケーションコードを与えるかが確認されて、誰がアプリケーションを開発したかを確認するステップが設けられる。従って、SDKの流出等により、無許可の第三者が開発したアプリケーションのパッケージングを未然に防止することができる。
【0028】
又、請求項9に係るコンピュータは、請求項7又は請求項8記載の画像形成システムにおける第1のコンピュータであることとした。
【0029】
この構成によれば、第1のコンピュータは、取得したテスト結果に基づき、開発中アプリケーションにエラーが含まれるか否かを判断し、ハッシュ値を出力する。これにより、第1のコンピュータは、開発中アプリケーションに問題がないか否かを確認できる。又、第2のコンピュータへのハッシュ値の引き渡しが必要となるので、第2のコンピュータの所持者を確認できる。従って、開発中アプリケーションをパッケージングしようとする者が、許可した者かを確認することができる。尚、メーカ側の管理用PCの好適例である。
【0030】
又、請求項10に係るコンピュータは、請求項7又は請求項8記載の画像形成システムにおける第2のコンピュータであることとした。
【0031】
この構成によれば、第2のコンピュータは、画像形成装置にインストールできるようにパッケージングしようとする開発中アプリケーションのハッシュ値を求め、第1のコンピュータから取得したハッシュ値と、求めたハッシュ値の2つのハッシュ値が一致する場合にのみハッシュ値を求めた開発中アプリケーションをパッケージングする。これにより、テスト時の開発中アプリケーションから改ざんを加えていない場合のみ、パッケージングが行われる。従って、テスト時から改ざんされた開発中アプリケーションのパッケージングを防ぐことができる。尚、開発者のSDK等を含む開発用PCの好適例である。
【0032】
又、請求項11に係る画像形成システムの制御方法は、画像形成装置の入力部が開発中アプリケーションの入力を受け付けるステップと、前記画像形成装置の記憶部が入力された前記開発中アプリケーションを記憶するステップと、前記開発中アプリケーションを動作させるステップと、前記制御部が、前記開発中アプリケーションの動作を監視し、テストする監視ソフトを動作させ、前記監視ソフトによるテスト結果を把握するステップと、前記制御部が、前記開発中アプリケーションのハッシュ値を演算するステップと、前記画像形成装置の出力部が前記テスト結果と前記ハッシュ値を出力するステップと、第1のコンピュータが、第1データ通信部を用い、前記画像形成装置が出力した前記テスト結果と前記ハッシュ値を取得するステップと、前記第1のコンピュータが、取得した前記テスト結果に基づき、前記開発中アプリケーションにエラーが含まれるか否かを判断するステップと、前記第1のコンピュータが、エラーが含まれていない場合、前記ハッシュ値を前記第1データ通信部から出力するステップと、前記第2のコンピュータが、第2データ通信部を用い、前記ハッシュ値を取得するステップと、前記第2のコンピュータが記憶し、前記画像形成装置にインストールできるようにパッケージングしようとする前記開発中アプリケーションのハッシュ値を求めるステップと、前記第2のコンピュータが、取得した前記ハッシュ値と、求めたハッシュ値の2つのハッシュ値が一致する場合、ハッシュ値を求めた前記開発中アプリケーションを前記画像形成装置にインストールできるようにパッケージングするステップと、を含むこととした。
【0033】
この構成によれば、テスト時からパッケージングを行おうとするまでの間に、開発中アプリケーションを改ざんしたかを確認することができ、開発中アプリケーションのテスト結果も確認することができる。
【発明の効果】
【0034】
上述したように、本発明によれば、テストによって、アプリケーションが不正なものか否かが確認される。従って、画像形成装置の動作の安定性が保証される。また、テストしたアプリケーションから改ざんされたアプリケーションのパッケージングを防ぐことができ、エラーや異常のあるアプリケーションは、パッケージングできなくなる。
【図面の簡単な説明】
【0035】
【図1】実施形態に係る画像形成システムの一例の概要を示す説明図である。
【図2】実施形態に係る複合機の一例を示す模型的正面断面図である。
【図3】実施形態に係る画像形成システムの構成の一例を示すブロック図である。
【図4】実施形態に係る複合機のソフトウェアの階層構成の一例を示す説明図である。
【図5】実施形態に係る開発中アプリケーションの複合機へのインストールでの流れの一例を示すフローチャートである。
【図6】実施形態に係る複合機の開発中アプリケーションに対する処理の一例を示すフローチャートである。
【図7】実施形態に係る画像形成システムでの暗号化されたテスト結果とハッシュ値の管理コンピュータへの引き渡しの一例を示すフローチャートである。
【図8】実施形態に係る管理コンピュータでのテスト結果とハッシュ値の管理コンピュータでの処理の一例を示すフローチャートである。
【図9】実施形態に係る開発用コンピュータでの開発中アプリケーションのパッケージングと複合機へのインストールの一例を示すフローチャートである。
【発明を実施するための形態】
【0036】
以下、本発明の実施形態に係る画像形成装置や画像形成システム100を図1〜図8を用いて説明する。但し、本実施の形態に記載されている構成、配置等の各要素は、発明の範囲を限定するものではなく単なる説明例にすぎない。
【0037】
(画像形成システム100の概要)
まず、図1を用いて、本発明の実施形態に係る画像形成システム100の一例を説明する。図1は、本発明の実施形態に係る画像形成システム100の一例の概要を示す説明図である。
【0038】
図1のうち、右上に示すのは、複合機1(画像形成装置に相当)である。複合機1は、スキャナ機能、コピー機能、プリント機能、FAX機能等を備える(詳細は後述)。又、この複合機1には、メーカ以外の第三者が開発したアプリケーションをインストールすることができる。
【0039】
そして、図1において、複合機1の左下に示すコンピュータが、管理コンピュータ6(第1のコンピュータに相当)である。管理コンピュータ6は、開発者のアプリケーションの開発を管理するコンピュータである。管理コンピュータ6は、例えば、メーカや、複合機1のアプリケーションの開発を管轄する部門に設置される。管理コンピュータ6は、複合機1用のアプリケーションを管理するためのソフトウェアがインストールされる。
【0040】
又、図1において、管理コンピュータ6の右下に配されるのが、開発用コンピュータ7(第2のコンピュータに相当)である。例えば、開発用コンピュータ7は、例えば、アプリケーションの開発部署に設置される。開発用コンピュータ7は、アプリケーションを開発するためのSDK76がインストールされたパーソナルコンピュータである(図3参照)。開発用コンピュータ7は、開発中アプリケーション8のパッケージングを行うことができる。尚、パッケージングとは、開発中アプリケーション8のバイナリデータ、データファイル、構成ファイル等のバンドル等を行い、開発中アプリケーション8を複合機1にインストールできる状態とすることである。このパッケージング機能は、例えば、SDK76に含まれる。
【0041】
そして、複合機1、管理コンピュータ6、開発用コンピュータ7間でデータがやりとりされ、アプリケーションの開発や、開発中アプリケーション8のパッケージングや、パッケージングされたアプリケーションの複合機1へのインストールが行われる。このように、本発明の画像形成システム100は、少なくとも、複合機1、管理コンピュータ6、開発用コンピュータ7で構成される。
【0042】
(画像形成装置の概略)
次に、図2に基づき、本発明の実施形態に係る複合機1の概略を説明する。図2は本発明の実施形態に係る複合機1の一例を示す模型的正面断面図である。
【0043】
図2に示すように、本実施形態の複合機1は、最上部に原稿カバー24を有し、複合機1本体には、操作パネル2A、画像読取部2B、給紙部3A、搬送路3B、画像形成部4A、定着部4B等が設けられる。
【0044】
まず、図2に破線で示すように、操作パネル2Aは、複合機1の正面上方に設けられる。そして、操作パネル2Aは、複合機1の状態や各種メッセージを表示する液晶表示部21を備える。液晶表示部21は、機能の選択、設定や文字入力等を行うためのキーを1又は複数表示できる。又、液晶表示部21の上面に透明なタッチパネル22(例えば、抵抗膜方式)が設けられる。タッチパネル22は、液晶表示部21で押下された部分の位置、座標を検出するためのものである。又、操作パネル2Aには、コピー等の各種機能の実行開始を指示するためのスタートキー23等、各種のハードキーも設けられる。
【0045】
原稿カバー24は、図2の紙面奥行き方向に支点を有し、紙面上下方向に開閉可能である。原稿カバー24は、原稿の複写時、載置読取用コンタクトガラス25に載置された原稿を押さえる。画像読取部2Bは、原稿を読み取り、原稿の画像データを形成する。又、画像読取部2B内には露光ランプ、ミラー、レンズ、イメージセンサ(例えば、CCD)等の光学系部材(不図示)が設けられる。尚、原稿カバー24に変えて、原稿を1枚ずつ、自動的、連続的に、画像読取部2Bの読み取り位置(送り読取用コンタクトガラス26)に向けて搬送する原稿搬送装置を設けてもよい。
【0046】
そして、これらの光学系部材を用い、載置読取用コンタクトガラス25に載置される原稿に光を照射し、その原稿の反射光を受けたイメージセンサの各画素の出力値をA/D変換し、画像データが生成される。複合機1は、読み取りにより得られた画像データに基づき印刷を行うことができる(コピー機能)。
【0047】
給紙部3Aは、複数の用紙(例えば、コピー用紙、普通紙、再生紙、厚紙、OHPシート等の各種シート)を収容し、1枚ずつ搬送路3Bに送り込む。給紙部3Aは、収納用紙が載置されるカセット31を含む(図2で上方のものに31A、下方のものに31Bの符号を付す)。又、カセット31から搬送路3Bに送り出すため回転駆動する給紙ローラ32が設けられる(図2で上方のものに32A、下方のものに32Bの符号を付す)。例えば、印刷時には、給紙ローラ32が回転駆動し、印刷に要する用紙が1枚ずつ搬送路3Bに送り出される。
【0048】
搬送路3Bは、給紙部3Aから排出トレイ33まで用紙を搬送する通路である。尚、用紙搬送経路上には画像形成部4A、定着部4B等が配される。そして、搬送路3Bには、用紙の案内のためのガイド34や、用紙搬送の際に回転駆動する搬送ローラ対35や、搬送されてくる用紙を画像形成部4Aの手前で待機させ、トナー像形成のタイミングを合わせて用紙を送り出すレジストローラ対36等が設けられる。
【0049】
画像形成部4Aは、画像データに基づきトナー像を形成し、搬送される用紙にトナー像を転写する。そのため、画像形成部4Aは、図2中に示す矢印方向に回転駆動可能に支持された感光体ドラム41、及び、感光体ドラム41の周囲に配設された帯電装置42、レーザ走査ユニット43、現像装置44、転写ローラ45、清掃装置46等を備える。
【0050】
トナー像形成及び転写プロセスを説明すると、画像形成部4Aの略中心に設けられ、所定方向に回転駆動する感光体ドラム41は、図2において、感光体ドラム41の右斜め上方に設けられる帯電装置42により、所定電位に帯電される。図4において、レーザ走査ユニット43は、帯電装置42の右側方に設けられ、画像データに基づき、レーザ光Lをから出力し、感光体ドラム41表面を走査露光して画像データに応じた静電潜像を形成する。尚、画像データは、画像読取部2Bで得られた画像データや、ネットワーク等により接続される外部のコンピュータ200や相手方FAX装置300(図3参照)から送信された画像データ等が用いられる。
【0051】
そして、図2において、感光体ドラム41の右斜め下方に設けられる現像装置44は、感光体ドラム41に形成された静電潜像にトナーを供給して現像する。感光体ドラム41の左方に設けられる転写ローラ45は感光体ドラム41に圧接し、ニップが形成される。そして、トナー像にあわせタイミングを図られつつ、用紙はニップに進入する。用紙進入時、転写ローラ45には所定の電圧が印加され、用紙に感光体ドラム41上のトナー像が転写される。清掃装置46は、転写後に感光体ドラム41に残留するトナーを除去する。
【0052】
定着部4Bは、用紙に転写されたトナー像を定着させる。本実施形態における定着部4Bは、主として発熱体を内蔵する加熱ローラ47と加圧ローラ48で構成される。加熱ローラ47と加圧ローラ48は圧接しニップを形成する。そして、用紙が、このニップを通過することで、用紙表面のトナーが溶融・加熱され、トナー像が用紙に定着する。トナー定着後の用紙は、排出トレイ33が受け止める。このようにして、コピー機能、プリンタ機能の使用時、画像形成(印刷)が行われる。
【0053】
(画像形成システム100のハードウェア構成)
そこで、次に、図3に基づき、本発明の実施形態に係る画像形成システム100のハードウェア構成の一例を説明する。図3は、本発明の実施形態に係る画像形成システム100の構成の一例を示すブロック図である。
【0054】
まず、複合機1内には、制御部5が設けられ、制御部5は複合機1の動作を制御し、例えば、CPU51(演算部に相当)、画像処理部52等で構成される。尚、制御部5は、全体制御や画像処理を行うメイン制御部と、画像形成や各種回転体を回転させるモータ等のON/OFF等を制御するエンジン制御部等、機能ごとに分割して複数種設けられてもよい。
【0055】
CPU51は、中央演算処理装置であって、記憶部53に格納され、展開されるプログラムやデータに基づき複合機1の各部を制御する。画像処理部52は、印刷を行う画像データや、外部のコンピュータ200や相手方のFAX装置300に送信される画像データに対し、各種画像処理を施す。
【0056】
記憶部53は、例えば、ROM54(Read Only Memory)、RAM55(Random Access Memory)、HDD56(Hard Disk Drive)を含む。記憶部53のROM54は、例えば、フラッシュROMである。このように、記憶部53は、不揮発性と揮発性の記憶装置を組み合わせて構成される。この記憶部53には、複合機1の制御用等の各種のプログラムやデータ、設定データ、画像データ等の各種データを記憶できる。又、複合機1の機能拡張のため、第三者が作成したアプリケーションは、複合機1にインストールされると、記憶部53がアプリケーションを記憶する。
【0057】
そして、制御部5は、操作パネル2A、画像読取部2B、給紙部3A、搬送路3B、画像形成部4A、定着部4B等の各部とバスや信号線等で接続され、各部、各装置を制御して複合機1の動作を制御する。
【0058】
更に、制御部5は、各種コネクタ、ソケット、通信制御用のチップ等を備えたI/F部57(入力部、出力部に相当)と接続される。I/F部57は、ネットワークや公衆回線等により、外部の管理コンピュータ6や開発用コンピュータ7や、その他のコンピュータ200や、相手方のFAX装置300と、複合機1を通信可能に接続する。例えば、画像データを含むデータを外部のコンピュータ200や相手方FAX装置300(インターネットFAXでもよい)に送信することができる(スキャナ機能、FAX機能)。又、外部のコンピュータ200や相手方FAX装置300からの画像データに基づき印刷を行うこともできる(プリンタ機能、FAX機能)。このように、複合機1は、コピー機能、プリンタ機能、スキャン機能、FAX機能のうちの複数の機能を備える。
【0059】
又、I/F部57には、例えば、外部記憶装置9を接続するためのコネクタ、ソケット、ドライバ等も含まれる。これにより、複合機1に外部記憶装置9を取り付けることができる。例えば、外部記憶装置9は、USBメモリ、SDメモリカード、CF等の携帯型半導体メモリのほか、磁気や光学記憶媒体であってもよい。尚、図3は、外部のコンピュータとの通信用のインターフェイスと、外部記憶装置接続用のインターフェイスが、I/F部57に含まれる例を示すが、各インターフェイスが、別々に設けられ、制御部5と接続されてもよい。
【0060】
又、図3に示すように、管理コンピュータ6は、例えば、CPU61や、メモリ部62(HDDやRAMやROMで構成される)や、キーボードやマウス等の入力装置63や、表示装置としてのディスプレイ64や、外部と通信を行うためのインターフェイスである第1データ通信部65を備える。
【0061】
又、図3に示すように、開発用コンピュータ7も、例えば、CPU71や、メモリ部72も(HDDやRAMやROMで構成され、SDK76を含む。)や、キーボードやマウス等の入力装置73や、表示装置としてのディスプレイ74や、外部と通信を行うためのインターフェイスである第2データ通信部75を備える。
【0062】
例えば、図3に示すように、ケーブルやネットワーク等により、複合機1のI/F部57と、管理コンピュータ6の第1データ通信部65と、開発用コンピュータ7の第2データ通信部75を、通信可能に接続することができる。従って、複合機1、管理コンピュータ6、開発用コンピュータ7間で、通信により各種データの送受信を行うことができる。
【0063】
又、外部記憶装置9は、複合機1のI/F部57だけでなく、管理コンピュータ6の第1データ通信部65や、開発用コンピュータ7の第2データ通信部75に接続できる。そのため、管理コンピュータ6の第1データ通信部65や、開発用コンピュータ7の第2データ通信部75も、外部記憶装置9を接続するためのコネクタ、ソケット、ドライバ等を含む。従って、複合機1、管理コンピュータ6、開発用コンピュータ7間で、外部記憶装置9の抜き差しにより、各種データの引き渡しや受け渡しを行うこともできる。
【0064】
(複合機1のソフトウェアの構成)
次に、図4に基づき、本発明の実施形態に係る複合機1のソフトウェアの階層構成の一例を説明する。図4は、本発明の実施形態に係る複合機1のソフトウェアの階層構成の一例を示す説明図である。
【0065】
図4に示すように、複合機1は、例えば、記憶部53のROM54にファームウェア80を記憶する。ファームウェア80は、複合機1を制御するためのソフトウェアである。例えば、ファームウェア80には、OS(オペレーティングシステム)が含まれる。ファームウェア80やOSは、記憶部53の管理、操作パネル2Aに関する入出力制御など、アプリケーションが利用する基本的な機能を提供して画像形成装置全体を管理、制御する。
【0066】
又、コピー、プリンタ、ファクシミリ、及びスキャナの複合機1の基本機能を利用するためのアプリケーションであるコピーアプリ82、プリンタアプリ83、FAXアプリ84、及びスキャナアプリ85は、予めメーカにより作成され、ファームウェア80に含められる。
【0067】
ファームウェア80の上階層には、API81(Application Programming Interface)が存在する。例えば、API81には、複合機1のメーカが独自に作成した独自API811や、Java VM812(Java Virtual Machine)が含まれる。独自API811は、複合機1のメーカが作成したAPI81である。一方、Java VM812は、さまざまな環境でJavaのプログラムを実行するためのAPI81である。各種API81は、例えば、複合機1のアプリケーションを実行する上での命令や関数やルーチンや規約の集合である、API81は、多くのアプリケーションが共通して利用する機能を実現する。各アプリケーションは、規約に従って機能を呼び出し、API81を利用することで、各アプリケーションに、API81に含まれるプログラムを含めることなく、機能を利用できる。各種API81は、例えば、ROM54やHDD56に記憶される。
【0068】
API81は、例えば、メーカや外部開発者が作成するアプリケーション86(例えば、ユーザが個別に開発したカスタムアプリケーションや、メーカが機能拡張用に開発したアプリケーション)や、開発中アプリケーション8や、監視ソフト87に利用される。尚、アプリケーション86には、例えば、上述した、スキャンした名刺のデータペース化や、原稿をPDF等に電子文書化するプログラム等がある。
【0069】
また、複合機1には、最終的なパッケージングがなされていない開発中アプリケーション8を、テストのため、インストールすることができる。そして、開発中アプリケーション8がインストールされると、監視ソフト87が自動的に立ち上がる。若しくは、操作パネル2Aを操作することにより、監視ソフト87が手動で起動され、それから、開発中アプリケーション8が起動する。監視ソフト87は、インストールされた開発中アプリケーション8を監視し、テストを行う。テストは、開発中アプリケーション8に不正な命令等、エラーが含まれるか否かを検出するために行われる。
【0070】
以下、開発したアプリケーションを、複合機1にインストールし、販売、頒布できるようにするためのパッケージングが完了するまでの流れを説明する。概説すると、以下のような流れとなる。
1.開発中アプリケーション8の複合機1へのインストール→
2.開発中アプリケーション8に対する複合機1の処理→
3.テスト結果とハッシュ値の管理コンピュータ6への引き渡し→
4.管理コンピュータ6での処理→
5.開発用コンピュータ7でのパッケージング→
6.複合機1へのパッケージングされたアプリケーションのインストール
しかし、すべてを1つのフローとして示すと、長くなるので、区切りながら、開発したアプリケーションのパッケージングや、複合機1へのインストール完了までの流れを説明する。
【0071】
(開発中アプリケーション8の複合機1へのインストール)
まず、図5に基づき、本発明の実施形態に係る画像形成システム100での開発中アプリケーション8の複合機1へのインストールの一例を説明する。図5は、発明の実施形態に係る開発中アプリケーション8の複合機1へのインストールでの流れの一例を示すフローチャートである。
【0072】
尚、本説明では、外部記憶装置9を用い、開発中アプリケーション8を複合機1にインストールする場合を説明する。尚、上述したように、外部記憶装置9を用いず、開発用コンピュータ7から開発中アプリケーション8を送信し、ネットワークやケーブルにより、これを複合機1が受信することにより、開発中アプリケーション8のインストールが行われてもよい。
【0073】
まず、図5におけるスタートは、開発者が、開発中のアプリケーションをテストのため複合機1にインストールしようとする時点である。このとき、開発用コンピュータ7には、第2データ通信部75に、USBメモリ等の外部記憶装置9が接続された状態である。
【0074】
そして、開発者の指示により、開発用コンピュータ7は、複合機1でのテスト用の仮パッケージングを行う(ステップ♯11)。言い換えると、開発中アプリケーション8は、複合機1に仮インストールできる状態とされる。この仮パッケージングは、例えば、開発用コンピュータ7のメモリ部62に記憶されたSDK76を、CPU61が動作させる等により行われる。そして、開発用コンピュータ7は、外部記憶装置9に仮パッケージングされた開発中アプリケーション8を外部記憶装置9に記憶させる(ステップ♯12)。
【0075】
そして、外部記憶装置9は、開発者により、複合機1のI/F部57に接続される(ステップ♯13)。複合機1の制御部5は、I/F部57に外部記憶装置9が接続されたこと、及び、開発中アプリケーション8が外部記憶装置9に記憶されていることを認識する(ステップ♯14)。そして、制御部5は、外部記憶装置9からI/F部57を介し、仮パッケージングされた開発中アプリケーション8を読み出す(ステップ♯15)。そして、制御部5は、開発中アプリケーション8を、記憶部53(例えば、HDD56)にインストールする(ステップ♯16)。これにより、開発中アプリケーション8の複合機1へのインストールが完了する(エンド)
【0076】
(開発中アプリケーション8に対する複合機1の処理)
次に、図6に基づき、本発明の実施形態に係る複合機1の開発中アプリケーション8に対する処理の一例を説明する。図6は、本発明の実施形態に係る複合機1の開発中アプリケーション8に対する処理の一例を示すフローチャートである。
【0077】
図5を用いて説明したように、メーカ、使用者以外の第三者(開発者)が開発した開発中アプリケーション8は、複合機1に仮インストールすることができる。このインストールされた開発中アプリケーション8に対し、複合機1は、テスト等の各種処理を行う。
【0078】
まず、図6のスタートは、複合機1に開発中アプリケーション8が仮インストールされた状態である。そうすると、複合機1の制御部5は、監視ソフト87を起動する(立ち上げさせる。ステップ♯21)。そして、制御部5は、開発中アプリケーション8を起動させる(立ち上げさせる。ステップ♯22)。
【0079】
そして、制御部5は、監視ソフト87に、開発中アプリケーション8のテストを開始させる(ステップ♯23)。そして、監視ソフト87は、開発中アプリケーション8を動作させ、テストを行う。
【0080】
テスト中、開発中アプリケーション8がどのような動作を行うかは、例えば、予め、開発中アプリケーション8内で定義される。言い換えると、テスト中は、開発中アプリケーション8は、テスト用プログラムに基づき動作する。
【0081】
尚、このテスト中、操作パネル2Aが、開発中アプリケーション8のテストでの操作や指示を与えるための画面を表示し、操作パネル2Aになされた入力に従い、開発中アプリケーション8が動作してもよい。
【0082】
具体的にテストでは、例えば、監視ソフト87は、開発中アプリケーション8を実際に動作させた際のRAM55の占有率を監視し、記録する(ステップ♯24)。又、監視ソフト87は、インストールされ、動作中の開発中アプリケーション8のHDD56の占有率を監視し、記録する(ステップ♯25)。又、監視ソフト87は、開発中アプリケーション8を実際に動作させた際のCPU51の負荷率を監視し、記録する(ステップ♯26)。尚、RAM55、HDD56の占有率や、CPU51の負荷率は、開発中アプリケーション8の動作によって時間的に変動する場合があるので、例えば、一定時間ごとの計測値がログとして記録される。尚、監視ソフト87による記録は、例えば、RAM55やHDD56等に記録される(以下の記録も同様。)
【0083】
又、監視ソフト87は、開発中アプリケーション8が、例えば、API81として予め用意され、アプリケーション用の動作保証された命令、関数、ルーチン以外の命令を実行するか、アプリケーションに使用が認められていない命令を実行するか、RAM55やHDD56等で、使用が認められない記憶領域(例えば、CPU51専用の記憶領域)や、存在しないアドレスへのアクセスが行われるか、等、不正な命令、関数、ルーチンが含まれるかも監視し、記録する(ステップ♯27)。
【0084】
又、監視ソフト87は、開発中アプリケーション8についての他のテストを行ってもよい(ステップ♯28)。例えば、複合機1は、記憶部53にFAXや画像データの送信先といった個人情報をアドレス帳として記憶する。悪意のある者は、個人情報の漏洩や、破壊を意図する可能性もある。又、悪意のある者は、複合機1に含まれるプログラムを破壊して、複合機1の機能を損なおうとする場合もある。そのため、監視ソフト87は、例えば、開発中アプリケーション8が取得や改変を試みるデータのアクセス先や、I/F部57からの送信等を試みるか等を監視し、記録してもよい。
【0085】
もし、必要以上に、RAM55やHDD56の占有率が大きすぎる場合や、CPU51の負荷率が大きすぎると、他のアプリケーション(例えば、コピーアプリ82等)の動作の妨げや、複合機1の停止エラーが生ずる場合があるため、RAM55やHDD56の占有率や、CPU51の負荷率を監視する。悪意があるものは、RAM55やHDD56の占有率や、CPU51の負荷率を意図的に大きくし、複合機1の動作停止を意図する場合もある。又、不正な命令やルーチンや関数が含まれていると、複合機1の停止エラーが生ずる場合があるため、不正な命令等が含まれるかを監視する。悪意があるものは、不正な命令等をアプリケーションに含めておく場合もある。従って、これらのテストにより、開発者のアプリケーションに、複合機1の機能が損なわれるような問題が生ずるようなエラーが含まれるか確認することができる。
【0086】
そして、必要なテストが全て完了すると(ステップ♯29)、例えば、制御部5のCPU51が、ハッシュ関数を用い、インストールされた開発中アプリケーション8のハッシュ値を演算する(ステップ♯210)。尚、ハッシュ関数は、チェックサムのような簡易なものでもよいし、暗号学的なアルゴリズムを用いてもよい。
【0087】
そして、制御部5は、テスト結果(各種ログ)と、求めたハッシュ値に暗号化を施す(ステップ♯211)。そして、制御部5は、暗号化を施したテスト結果とハッシュ値を示すデータを外部記憶装置9に記憶させるとともに、開発中アプリケーション8を記憶部53から消去させる(ステップ♯212→エンド)。これにより、インストールされた開発中アプリケーション8に対する複合機1での処理が終了する。
【0088】
即ち、本実施形態の画像形成装置(例えば、複合機1)は、開発中アプリケーション8の画像形成装置への入力を受け付ける入力部(I/F部57)と、入力された開発中アプリケーション8を記憶するとともに、実行された開発中アプリケーション8の動作を監視し、テストする監視ソフト87を記憶する記憶部53と、開発中アプリケーション8と、監視ソフト87を動作させ、監視ソフト87によるテスト結果を把握し、開発中アプリケーション8のハッシュ値を演算する制御部5と、テスト結果とハッシュ値を出力する出力部(I/F部57)と、を備え、画像形成装置から出力された開発中アプリケーション8のテスト結果とハッシュ値を取得する第1データ通信部65を有する第1のコンピュータ(管理コンピュータ6)と、開発中アプリケーション8を記憶するとともに第1のコンピュータからハッシュ値を取得する第2データ通信部75を有し、取得したハッシュ値と、開発中アプリケーション8を対象として求めたハッシュ値が一致する場合、開発中アプリケーション8を画像形成装置にインストールできるようにパッケージングする第2のコンピュータ(開発用コンピュータ7)と、を含む画像形成システム100における画像形成装置(例えば、複合機1)である。又、制御部5は、テスト結果とハッシュ値の暗号化を行い、暗号化されたテスト結果とハッシュ値を出力部から出力させる。又、画像形成装置は、入力部に接続された外部記憶装置9内に記憶される開発中アプリケーション8を取り込んで記憶部53に記憶し、テスト結果とハッシュ値を出力部に接続された外部記憶装置9に記憶させる。又、記憶部53は、監視ソフト87によるテスト終了後、開発中アプリケーション8を消去する。
【0089】
又、開発中アプリケーション8のテストに関し、記憶部53は、少なくともハードディスクドライブ(HDD56)、ランダムアクセスメモリ(RAM55)を含み、制御部5は、データ及びプログラムの処理を行うための演算部(CPU51)を含み、監視ソフト87により、開発中アプリケーション8のハードディスクドライブ及びランダムアクセスメモリにおける占有容量、及び、演算部の負荷率のテストを行い、出力部(I/F部57)は、占有容量及び負荷率をテスト結果として出力する。又、記憶部53は、予め用意され、動作保証された命令、関数、ルーチンを記憶し、制御部5は、監視ソフト87により、開発中アプリケーション8が予め用意され、動作保証された命令、関数、ルーチン以外の命令、関数、ルーチンを使用するか否かのテストを行い、出力部は、命令、関数、ルーチンのテスト結果を出力する。
【0090】
(テスト結果とハッシュ値の管理コンピュータ6への引き渡し)
次に、図7に基づき、本発明の実施形態に係る画像形成システム100での暗号化されたテスト結果とハッシュ値の管理コンピュータ6への引き渡しの一例を説明する。図7は、本発明の実施形態に係る画像形成システム100での暗号化されたテスト結果とハッシュ値の管理コンピュータ6への引き渡しの一例を示すフローチャートである。
【0091】
自己が開発したアプリケーションを複合機1にインストールし、使用できるようにする、あるいは、販売等の目的で、開発中アプリケーション8のパッケージングを行うには、開発者は、暗号化されたテスト結果とハッシュ値のデータを管理者としてのメーカに引き渡す必要がある。尚、一般に、開発用コンピュータ7と、管理コンピュータ6は位置的に離れた場所に設置されるので、本説明では、インターネット等のネットワークを通じて送信する場合を説明する。尚、暗号化されたテスト結果とハッシュ値の引き渡しは、外部記憶装置9の郵送等で行われてもよい。
【0092】
まず、図7のスタートは、開発者が、暗号化されたテスト結果やハッシュ値をメーカに送信しようとする時点である。そして、開発用コンピュータ7は、例えば、開発者により第2データ通信部75に接続された外部記憶装置9から、暗号化されたテスト結果やハッシュ値を取得する(ステップ♯31)。尚、開発用コンピュータ7は、複合機1のI/F部57から出力された暗号化されたテスト結果やハッシュ値を、ネットワークを介して、第1データ通信部65で受信して取得してもよい。
【0093】
そして、開発用コンピュータ7のCPU71は、例えば、メモリ部72に暗号化されたテスト結果やハッシュ値を記憶させる(ステップ♯32)。そして、例えば、開発者は、SDK76を利用して、暗号化されたテスト結果やハッシュ値の送信準備を開始する(ステップ♯33)。
【0094】
例えば、開発用コンピュータ7は、入力装置73やディスプレイ74に表示を行いつつ、暗号化されたテスト結果やハッシュ値の送信用画面での開発者による入力を受け付ける(ステップ♯34)。例えば、送信用画面では、送信者、即ち、開発者の氏名やアドレスや会社名等の入力や、暗号化されたテスト結果やハッシュ値の添付指示が受け付けられる。例えば、送信用画面の画像データをSDK76が含み、SDK76が送信用画面を表示させてもよい。また、開発者が、ブラウザ等を用いて、管理コンピュータ6にネットワーク経由でアクセスし、ブラウザに送信用画面が表示されてもよい。
【0095】
そして、送信用画面での作業終了後、送信者(開発者)を特定するデータ(会社名や氏名等)が添付されつつ、暗号化されたテスト結果やハッシュ値が、開発用コンピュータ7から管理コンピュータ6に送信される(ステップ♯35)。これにより、開発用コンピュータ7から管理コンピュータ6にデータの送信が完了する(エンド)。
【0096】
(管理コンピュータ6での処理)
次に、図8に基づき、本発明の実施形態に係る管理コンピュータ6でのテスト結果とハッシュ値の管理コンピュータ6での処理の一例を説明する。図8は、本発明の実施形態に係る管理コンピュータ6でのテスト結果とハッシュ値の管理コンピュータ6での処理の一例を示すフローチャートである。
【0097】
まず、図8のスタートは、管理コンピュータ6が、暗号化されたテスト結果やハッシュ値の処理を開始する時点である。まず、例えば、管理コンピュータ6は、送信者(開発者)を特定するデータ(会社名や氏名やアドレス等)とともに、暗号化されたテスト結果やハッシュ値を取得する(ステップ♯41)。そして、例えば、管理コンピュータ6のCPU61は、暗号化されたテスト結果を復号する(ステップ♯42)。尚、暗号化用の鍵は、例えば、複合機1に予め含められ(記憶部53が予め保持する)、復号用の鍵は、管理コンピュータ6のメモリ部62や開発用コンピュータ7のメモリ部72等が保持する。
【0098】
そして、管理コンピュータ6は、テスト結果を確認し(ステップ♯43)、開発中アプリケーション8にエラーが含まれるか否かを判断する(ステップ♯44)。尚、開発中アプリケーション8に、エラーが含まれるか、言い換えると、開発中アプリケーション8に、複合機1の停止等のエラーや不要な動作等の原因となる不正な命令や異常が含まれるか否かの確認は、管理コンピュータ6が自動で判断してもよいし、管理コンピュータ6のオペレーターがテスト結果を参照して目視によって判断してもよいし、自動判断と、目視による判断のダブルチェックでおこなわれてもよい。
【0099】
もし、エラーが含まれれば(ステップ♯44のYes)、管理コンピュータ6は、開発用コンピュータ7に向け、開発中アプリケーション8にエラーが含まれる旨や、引き起こされる異常、不正の内容や、開発中アプリケーション8のパッケージングは認められない旨を示す不許可返信データを送信し(ステップ♯45)、管理コンピュータ6での処理は終了する(エンド)。
【0100】
一方、エラーが含まれなければ(ステップ♯44のNo)、管理コンピュータ6は、開発中アプリケーション8のパッケージングに必要となるアプリケーションコードを生成する(ステップ♯46)。アプリケーションコードは、開発されたアプリケーションごとに異なる(ユニークである)。そして、管理コンピュータ6は、開発用コンピュータ7に向けて、少なくとも、アプリケーションコードと、管理コンピュータ6が複合機1から取得した暗号化されたハッシュ値とを含み、開発中アプリケーション8のパッケージングを認める旨を示すファイル(許可返信データ)を送信する(ステップ♯47)。この場合も、管理コンピュータ6での処理は終了する(エンド)。
【0101】
(パッケージングとインストール)
次に、図9に基づき、本発明の実施形態に係る開発用コンピュータ7での開発中アプリケーション8のパッケージングと複合機1へのインストールを説明する。図9は、本発明の実施形態に係る開発用コンピュータ7での開発中アプリケーション8のパッケージングと複合機1へのインストールの一例を示すフローチャートである。
【0102】
まず、図9のスタートは、アプリケーションコードの送信を受けた開発者が、開発中アプリケーション8のパッケージングを行おうとする時点である。このとき、開発用コンピュータ7は、管理コンピュータ6から、アプリケーションコードと、暗号化されたハッシュ値を含むファイル(許可返信データ)を受信している。
【0103】
次に、開発用コンピュータ7のCPU71は、開発者の指示に基づき、パッケージング用のソフトウェアを起動させるとともに、複合機1が生成、出力し、暗号化されたハッシュ値の復号を行う(ステップ♯51)。例えば、パッケージング用のソフトウェアは、SDK76に含まれる。また、復号用の鍵は、開発用コンピュータ7のメモリ部72(例えば、SDK76)が保持する。
【0104】
そして、開発用コンピュータ7(のCPU71)は、アプリケーションコードが含まれたファイル(許可返信データ)の読み込みを行う(ステップ♯52)。このように、アプリケーションコードがなければ、開発中アプリケーション8のパッケージングを行うことができない。尚、アプリケーションコードの入力は、キーボード等の入力装置73を用い、手入力で行われてもよい。
【0105】
ファイルの読み込みが行われると、アプリケーションコードが正当であるかが確認される(ステップ♯53)。例えば、開発用コンピュータ7は管理コンピュータ6と通信を行い、読み込まれたアプリケーションコードの正当性を確認してもよい。また、開発用コンピュータ7は、アプリケーションコードとして与えられる可能性があるコードをメモリ部72に予め記憶しておき、アプリケーションコードが、予め記憶されたコードと一致するかを確認して、正当性を確認してもよい。
【0106】
もし、アプリケーションコードが正当でなければ(ステップ♯53のNo)、例えば、開発用コンピュータ7は、アプリケーションコードが異常である旨を表示し(ステップ♯54)、本処理を終了する(エンド)。一方、アプリケーションコードが正当であれば(ステップ♯53のYes)、開発用コンピュータ7のCPU71等は、パッケージングしようとする開発中アプリケーション8のハッシュ値を演算する(ステップ♯55)。尚、このときのハッシュ値を求めるためのハッシュ関数は、複合機1のものと同じである。言い換えると、複合機1(画像形成装置)と、開発用コンピュータ7は、同じハッシュ関数を用いてハッシュ値を求める。
【0107】
そして、開発用コンピュータ7は、ファイル(許可返信データ)に添付され、復号されたハッシュ値と、演算したハッシュ値(パッケージングしようとする開発中アプリケーション8のハッシュ値)が一致するかを確認する(ステップ♯56)。言い換えると、開発用コンピュータ7は、テストがされた開発中アプリケーション8と、パッケージングしようとする開発中アプリケーション8が同じものであるかを確認する。
【0108】
もし、ハッシュ値が一致しなければ(ステップ♯56のNo)、テストされた開発中アプリケーション8からの改ざんがなされ、不正な命令の追加等があり、複合機1へのインストールされた際の安全性を保証することができないので、開発中アプリケーション8のパッケージングを行わないまま、処理が終了される(エンド)。一方、ハッシュ値が一致すれば、開発用コンピュータ7のパッケージング用のソフトウェアは、開発中アプリケーション8のパッケージングを行う(ステップ♯57)。
【0109】
尚、パッケージングでは、例えば、exeファイル生成や、アプリケーションに使用期間、販売期間や、アプリケーションコードを示すデータの付加や、インストールされたアプリケーションを使えるようにするための設定(アクティベーション)の必要性や、会社名等の諸情報の付加が行われる。そして、例えば、パッケージングにより、1つの圧縮ファイル(例えば、zipファイル)が形成される。
【0110】
そして、開発用コンピュータ7は、パッケージングすることにより、開発中アプリケーション8を複合機1にインストール可能な状態とし、例えば、外部記憶装置9に記憶させる(ステップ♯58)。そして、例えば、外部記憶装置9が複合機1のI/F部57に接続される(ステップ♯59)。その後、I/F部57は、外部記憶装置9内のパッケージングされたアプリケーションを読み出し、制御部5は、例えば、複合機100に搭載されるインストーラーを動作させ、複合機1にアプリケーションがインストールされる(ステップ♯510)。最終的に、記憶部53(例えば、HDD56)は、インストール動作の過程で、外部記憶装置9内のパッケージングされたアプリケーションを読み込み記憶する。そして、本制御は、終了する(エンド)。
【0111】
このようにして、本実施形態の構成によれば、画像形成装置(例えば、複合機1)は、テスト結果とハッシュ値を出力する。これによりパッケージングを行う際の開発中アプリケーション8のハッシュ値と、テストを実施する画像形成装置(例えば、複合機1)が出力したハッシュ値を比較することができる。従って、テストが行われた時点から、パッケージングを行おうとするまでの間に、開発中アプリケーション8に対し改ざんが行われたかを確認することができる。又、画像形成装置(例えば、複合機1)の出力したテスト結果を第1のコンピュータ(管理コンピュータ6)で確認できる。従って、開発中アプリケーション8に問題があるか否か(エラーを含む不正なアプリケーションか否か)も確認することができる。
【0112】
又、画像形成装置(例えば、複合機1)は、テスト結果とハッシュ値を暗号化して出力部(I/F部57)から第1のコンピュータ(管理コンピュータ6)に出力する。これにより、悪意のある開発者にとって都合がよくなるようなテスト結果とハッシュ値自体の改ざんを防ぐことができる。従って、パッケージングを行おうとする開発中アプリケーション8に改ざんがなされたか否かを、間違いなく判断することができる。又、テスト結果の信頼性が向上する。
【0113】
又、入力部(I/F部57)に接続された外部記憶装置9内に記憶される開発中アプリケーション8が記憶部53に記憶され、テスト結果とハッシュ値を出力部(I/F部57)に接続された外部記憶装置9に記憶される。これにより、例えば、USBメモリのような外部記憶装置9を接続するだけで、画像形成装置(例えば、複合機1)への開発中アプリケーション8のインストールが行われ、テスト結果とハッシュ値が外部記憶装置9に格納される。従って、画像形成装置への開発中アプリケーション8のインストールやテスト結果やハッシュ値の第1のコンピュータ(管理コンピュータ6)への引き渡しを容易に行うことができる。
【0114】
又、記憶部53は、監視ソフト87によるテスト終了後、開発中アプリケーション8を消去する。これにより、開発中アプリケーション8が不十分なものであっても、画像形成装置(例えば、複合機1)の動作に影響を与えることを防ぐことができる。又、出力部(I/F部57)は、開発中アプリケーション8のハードディスクドライブ(HDD56)及びランダムアクセスメモリ(RAM55)における占有容量、及び、演算部(CPU51)の負荷率をテスト結果として出力する。これにより、開発中アプリケーション8のハードディスクドライブ(HDD56)やランダムアクセスメモリ(RAM55)の占有容量が大きすぎ、データのオーバーフローや、他のアプリケーションの動作の妨げになる等の弊害の発生の可能性を確認することができる。従って、開発中アプリケーション8に不正な部分がないかを確認することができる。
【0115】
又、出力部(I/F部57)は、動作保証された命令、関数、ルーチン以外の命令、関数、ルーチンを使用するか否かのテスト結果を出力する。開発中アプリケーション8が、動作保証がない命令等を使用すれば、画像形成装置(例えば、複合機1)のフリーズ等、画像形成装置の動作に悪影響を与える場合がある。従って、開発中アプリケーション8が、動作保証がない命令等を使用するか否かを確認することにより、開発中アプリケーション8に不正な部分がないかを確認することができる。
【0116】
又、本発明は、画像形成装置だけでなく、画像形成システム100の発明として捉えることもできる。具体的には、画像形成システム100、少なくとも画像形成装置(例えば、複合機1)と、第1のコンピュータ(管理コンピュータ6)と、第2のコンピュータ(開発用コンピュータ7)で構成され、画像形成装置は、開発中アプリケーション8の画像形成装置への入力を受け付ける入力部(I/F部57)と、入力された開発中アプリケーション8を記憶するとともに、実行された開発中アプリケーション8の動作を監視し、テストする監視ソフト87を記憶する記憶部53と、開発中アプリケーション8と、監視ソフト87を動作させ、監視ソフト87によるテスト結果を把握し、開発中アプリケーション8のハッシュ値を演算する制御部5と、テスト結果とハッシュ値を出力する出力部(I/F部57)と、を備え、第1のコンピュータは、画像形成装置が出力したテスト結果とハッシュ値を取得する第1データ通信部65を有し、取得したテスト結果に基づき、開発中アプリケーション8にエラーが含まれるか否かを判断し、エラー部分が含まれていない場合、少なくとも、ハッシュ値を第1データ通信部65から出力し、第2のコンピュータは、開発中アプリケーション8を記憶するとともに第1のコンピュータからハッシュ値を取得する第2データ通信部75を有し、取得したハッシュ値と、開発中アプリケーション8を対象として求めたハッシュ値が一致する場合、開発中アプリケーション8を画像形成装置(例えば、複合機1)にインストールできるようにパッケージングする第2のコンピュータと、を含む。
【0117】
この画像形成システム100の構成によれば、画像形成装置(例えば、複合機1)は、テスト結果とハッシュ値を出力する。これによりパッケージングを行う際のアプリケーションのハッシュ値と、テストを行った画像形成装置が出力したハッシュ値を比較することができる。従って、テストが行われた時点から、パッケージングを行おうとするまでの間に、開発中アプリケーション8に対し改ざんが行われたかを確認することができる。又、画像形成装置(例えば、複合機1)の出力したテスト結果を第1のコンピュータ(管理コンピュータ6)で確認できる。従って、開発中アプリケーション8に問題があるか否か(エラーが含まれる不正なアプリケーションか否か)も確認することができる。
【0118】
又、画像形成システム100では、第1のコンピュータ(管理コンピュータ6)は、開発中アプリケーション8にエラーが含まれていないと判断した場合、アプリケーションコードを生成し、ハッシュ値とともに、アプリケーションコードを第1データ通信部65から出力し、第2のコンピュータ(開発用コンピュータ7)は、第1のコンピュータが生成したアプリケーションコードを読み込んだことを条件として、開発中アプリケーション8をパッケージングするようにしてもよい。
【0119】
この画像形成システム100の構成によれば、第1のコンピュータ(管理コンピュータ6)は、アプリケーションコードを生成し、ハッシュ値とともに、アプリケーションコードを第1データ通信部65から出力する。これにより、アプリケーションコードを与え、パッケージングにアプリケーションコードが必要になるという要件により、誰に、どのようなアプリケーションコードを与えるかが確認されて、誰がアプリケーションを開発したかを確認するステップが設けられる。従って、SDK76の流出等により、無許可の第三者が開発したアプリケーションのパッケージングを未然に防止することができる。
【0120】
又、画像形成システム100での第1のコンピュータ(管理コンピュータ6)も、発明として捉えることもできる。第1のコンピュータは、取得したテスト結果に基づき、開発中アプリケーション8にエラーが含まれるか否かを判断し、ハッシュ値を出力する。これにより、第1のコンピュータは、開発中アプリケーション8に問題がないか否かを確認できる。又、第2のコンピュータ(開発用コンピュータ7)へのハッシュ値の引き渡しが必要となるので、第2のコンピュータの所持者を確認できる。従って、開発中アプリケーション8をパッケージングしようとする者が、許可した者かを確認することができる。
【0121】
又、画像形成システム100での第2のコンピュータ(開発用コンピュータ7)も、発明として捉えることもできる。第2のコンピュータは、画像形成装置(例えば、複合機1)にインストールできるようにパッケージングしようとする開発中アプリケーション8のハッシュ値を求め、第1のコンピュータ(管理コンピュータ6)から取得したハッシュ値と、求めたハッシュ値の2つのハッシュ値が一致する場合にのみハッシュ値を求めた開発中アプリケーション8をパッケージングする。これにより、テスト時の開発中アプリケーション8に改ざんを加えていない場合のみ、パッケージングが行われる。従って、テスト時から改ざんされた開発中アプリケーション8のパッケージングを防ぐことができる。
【0122】
又、本発明は、画像形成装置や画像形成システム100だけでなく、画像形成システム100の制御方法と捉えることもできる。具体的には、画像形成システム100の制御方法は、画像形成装置(例えば、複合機1)の入力部(I/F部57)が開発中アプリケーション8の入力を受け付けるステップと、画像形成装置の記憶部53が入力された開発中アプリケーション8を記憶するステップと、開発中アプリケーション8を動作させるステップと、制御部5が、開発中アプリケーション8の動作を監視し、テストする監視ソフト87を動作させ、監視ソフト87によるテスト結果を把握するステップと、制御部5が、開発中アプリケーション8のハッシュ値を演算するステップと、画像形成装置の出力部(I/F部57)がテスト結果とハッシュ値を出力するステップと、第1のコンピュータ(管理コンピュータ6)が、第1データ通信部65を用い、画像形成装置が出力したテスト結果とハッシュ値を取得するステップと、第1のコンピュータが、取得したテスト結果に基づき、開発中アプリケーション8にエラーが含まれるか否かを判断するステップと、第1のコンピュータが、エラーが含まれていない場合、ハッシュ値を第1データ通信部から出力するステップと、第2のコンピュータ(開発用コンピュータ7)が、第2データ通信部75を用い、ハッシュ値を取得するステップと、第2のコンピュータが記憶し、画像形成装置にインストールできるようにパッケージングしようとする開発中アプリケーション8のハッシュ値を求めるステップと、第2のコンピュータが、取得したハッシュ値と、求めたハッシュ値の2つのハッシュ値が一致する場合、ハッシュ値を求めた開発中アプリケーション8を画像形成装置にインストールできるようにパッケージングするステップと、を含む。
【0123】
この画像形成システム100の制御方法により、テスト時からパッケージングを行おうとするまでの間に、開発中アプリケーション8を改ざんしたかを確認することができ、開発中アプリケーション8のテスト結果も確認することができる。
【0124】
本発明の実施形態を説明したが、本発明の範囲はこれに限定されるものではなく、発明の主旨を逸脱しない範囲で種々の変更を加えて実施することができる。
【産業上の使用可能性】
【0125】
本発明は、画像形成装置や、画像形成装置やコンピュータを含む画像形成システムに使用可能である。
【符号の説明】
【0126】
1 複合機(画像形成装置) 5 制御部
51 CPU(演算部) 53 記憶部
55 RAM(ランダムアクセスメモリ)
56 HDD(ハードディスクドライブ) 57 I/F部(入力部、出力部)
6 管理コンピュータ(第1のコンピュータ)
65 第1データ通信部 75 第2データ通信部
7 開発用コンピュータ(第2のコンピュータ)
100 画像形成システム 8 開発中アプリケーション
87 監視ソフト 9 外部記憶装置

【特許請求の範囲】
【請求項1】
開発中アプリケーションの画像形成装置への入力を受け付ける入力部と、
入力された前記開発中アプリケーションを記憶するとともに、実行された前記開発中アプリケーションの動作を監視し、テストする監視ソフトを記憶する記憶部と、
前記開発中アプリケーションと、前記監視ソフトを動作させ、前記監視ソフトによるテスト結果を把握し、前記開発中アプリケーションのハッシュ値を演算する制御部と、
前記テスト結果と前記ハッシュ値を出力する出力部と、を備える画像形成装置と、
前記画像形成装置から出力された開発中アプリケーションのテスト結果と前記ハッシュ値を取得する第1データ通信部を有する第1のコンピュータと、
前記開発中アプリケーションを記憶するとともに前記第1のコンピュータから前記ハッシュ値を取得する第2データ通信部を有し、前記ハッシュ値と、前記開発中アプリケーションを対象として求めたハッシュ値が一致する場合、前記開発中アプリケーションを前記画像形成装置にインストールできるようにパッケージングする第2のコンピュータと、
を含む画像形成システムにおける画像形成装置。
【請求項2】
前記制御部は、前記テスト結果と前記ハッシュ値の暗号化を行い、暗号化された前記テスト結果と前記ハッシュ値を前記出力部から出力させることを特徴とする請求項1記載の画像形成装置。
【請求項3】
前記画像形成装置は、前記入力部に接続された外部記憶装置内に記憶される前記開発中アプリケーションを取り込んで前記記憶部に記憶し、前記テスト結果と前記ハッシュ値を前記出力部に接続された前記外部記憶装置に記憶させることを特徴とする請求項1又は2に記載の画像形成装置。
【請求項4】
前記記憶部は、前記監視ソフトによるテスト終了後、前記開発中アプリケーションを消去することを特徴とする請求項1乃至3のいずれか1項に記載の画像形成装置。
【請求項5】
前記記憶部は、少なくともハードディスクドライブ、ランダムアクセスメモリを含み、
前記制御部は、データ及びプログラムの処理を行うための演算部を含み、前記監視ソフトにより、前記開発中アプリケーションの前記ハードディスクドライブ及び前記ランダムアクセスメモリにおける占有容量、及び、前記演算部の負荷率のテストを行い、
前記出力部は、前記占有容量及び前記負荷率をテスト結果として出力することを特徴とする請求項1乃至4のいずれか1項に記載の画像形成装置。
【請求項6】
前記記憶部は、予め用意され、動作保証された命令、関数、ルーチンを記憶し、
前記制御部は、前記監視ソフトにより、前記開発中アプリケーションが予め用意され、動作保証された命令、関数、ルーチン以外の命令、関数、ルーチンを使用するか否かのテストを行い、
前記出力部は、命令、関数、ルーチンのテスト結果を出力することを特徴とする請求項1乃至5のいずれか1項に記載の画像形成装置。
【請求項7】
少なくとも画像形成装置と、第1のコンピュータと、第2のコンピュータで構成され、
前記画像形成装置は、
開発中アプリケーションの前記画像形成装置への入力を受け付ける入力部と、入力された前記開発中アプリケーションを記憶するとともに、実行された前記開発中アプリケーションの動作を監視し、テストする監視ソフトを記憶する記憶部と、前記開発中アプリケーションと、前記監視ソフトを動作させ、前記監視ソフトによるテスト結果を把握し、前記開発中アプリケーションのハッシュ値を演算する制御部と、前記テスト結果と前記ハッシュ値を出力する出力部と、を備え、
前記第1のコンピュータは、
前記画像形成装置が出力した前記テスト結果と前記ハッシュ値を取得する第1データ通信部を有し、取得した前記テスト結果に基づき、前記開発中アプリケーションにエラーが含まれるか否かを判断し、エラー部分が含まれていない場合、少なくとも、前記ハッシュ値を前記第1データ通信部から出力し、
前記第2のコンピュータは、
前記開発中アプリケーションを記憶するとともに前記第1のコンピュータから前記ハッシュ値を取得する第2データ通信部を有し、前記ハッシュ値と、前記開発中アプリケーションを対象として求めたハッシュ値が一致する場合、前記開発中アプリケーションを前記画像形成装置にインストールできるようにパッケージングする第2のコンピュータと、を含むことを特徴とする画像形成システム。
【請求項8】
前記第1のコンピュータは、前記開発中アプリケーションにエラーが含まれていないと判断した場合、アプリケーションコードを生成し、前記ハッシュ値とともに、前記アプリケーションコードを前記第1データ通信部から出力し、
前記第2のコンピュータは、前記第1のコンピュータが生成した前記アプリケーションコードを読み込んだことを条件として、前記開発中アプリケーションをパッケージングすることを特徴とする請求項7記載の画像形成システム。
【請求項9】
請求項7又は請求項8記載の画像形成システムにおける第1のコンピュータであることを特徴とするコンピュータ。
【請求項10】
請求項7又は請求項8記載の画像形成システムにおける第2のコンピュータであることを特徴とするコンピュータ。
【請求項11】
画像形成装置の入力部が開発中アプリケーションの入力を受け付けるステップと、
前記画像形成装置の記憶部が入力された前記開発中アプリケーションを記憶するステップと、
前記開発中アプリケーションを動作させるステップと、
前記制御部が、前記開発中アプリケーションの動作を監視し、テストする監視ソフトを動作させ、前記監視ソフトによるテスト結果を把握するステップと、
前記制御部が、前記開発中アプリケーションのハッシュ値を演算するステップと、
前記画像形成装置の出力部が前記テスト結果と前記ハッシュ値を出力するステップと、
第1のコンピュータが、第1データ通信部を用い、前記画像形成装置が出力した前記テスト結果と前記ハッシュ値を取得するステップと、
前記第1のコンピュータが、取得した前記テスト結果に基づき、前記開発中アプリケーションにエラーが含まれるか否かを判断するステップと、
前記第1のコンピュータが、エラーが含まれていない場合、前記ハッシュ値を前記第1データ通信部から出力するステップと、
前記第2のコンピュータが、第2データ通信部を用い、前記ハッシュ値を取得するステップと、
前記第2のコンピュータが記憶し、前記画像形成装置にインストールできるようにパッケージングしようとする前記開発中アプリケーションのハッシュ値を求めるステップと、
前記第2のコンピュータが、取得した前記ハッシュ値と、求めたハッシュ値の2つのハッシュ値が一致する場合、ハッシュ値を求めた前記開発中アプリケーションを前記画像形成装置にインストールできるようにパッケージングするステップと、を含む画像形成システムの制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2012−15749(P2012−15749A)
【公開日】平成24年1月19日(2012.1.19)
【国際特許分類】
【出願番号】特願2010−149821(P2010−149821)
【出願日】平成22年6月30日(2010.6.30)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
【出願人】(000006150)京セラミタ株式会社 (13,173)
【Fターム(参考)】