(57)【特許請求の範囲】
【請求項１】
アプリケーションプログラムを追加可能な機器であって、
前記アプリケーションプログラムは、当該アプリケーションプログラムに関する第一の情報を有し、当該機器内で起動すると、当該機器の情報である第二の情報を取得して、前記第一の情報と前記第二の情報とを照合することにより当該アプリケーションプログラムの実行の可否を判定する判定手段と、
前記判定手段の判定結果に応じて当該アプリケーションプログラムの動作を制御する実行制御手段と、
前記アプリケーションプログラムの利用する機能を示す第三の情報と当該機器でサポートされている機能を示す第四の情報とを照合することにより当該アプリケーションプログラムの利用する機能の実行の可否を判定し、実行が不可能な機能を実行可能とするためにプログラムを取得する調整手段とを有し、
前記アプリケーションプログラムは、当該機器の機種名に対応付けて保持されている、当該機器の機種に応じて相違する機能の種類のうち当該機器が有している機能の種類を当該機器より取得して、当該機器の機種に応じて相違する機能の種類に関しては、取得された種類に係る機能のみを利用可能とし、
前記調整手段は、前記第三又は第四の情報の構造に対応していない場合は自動的に更新されることを特徴とする機器。
【請求項２】
前記第一の情報は、前記アプリケーションプログラムのバージョンであり、前記第二の情報は、前記機器のバージョンであることを特徴とする請求項１記載の機器。
【請求項３】
前記アプリケーションプログラムを逐次実行する複数の所定のプログラムの中から、当該機器の機種名に適合する前記所定のプログラムを起動させることを特徴とする請求項１又は２記載の機器。
【請求項４】
前記機器を前記調整手段として機能させるプログラムを所定のコンピュータより取得して前記調整手段を更新することを特徴とする請求項１乃至３いずれか一項記載の機器。
【請求項５】
請求項４記載の機器と、請求項４記載の所定のコンピュータとを含む情報処理システム。
【請求項６】
アプリケーションプログラムを追加可能な機器が実行する情報処理方法であって、
前記アプリケーションプログラムは、当該アプリケーションプログラムに関する第一の情報を有し、当該機器内で起動すると、当該機器の情報である第二の情報を取得して、前記第一の情報と前記第二の情報とを照合することにより当該アプリケーションプログラムの実行の可否を判定する判定手順と、
前記判定手順の判定結果に応じて当該アプリケーションプログラムの動作を制御する実行制御手順と、
前記アプリケーションプログラムの利用する機能を示す第三の情報と当該機器でサポートされている機能を示す第四の情報とを照合することにより当該アプリケーションプログラムの利用する機能の実行の可否を判定し、実行が不可能な機能を実行可能とするためにプログラムを取得する調整手順とを有し、
前記アプリケーションプログラムは、当該機器の機種名に対応付けて保持されている、当該機器の機種に応じて相違する機能の種類のうち当該機器が有している機能の種類を当該機器より取得して、当該機器の機種に応じて相違する機能の種類に関しては、取得された種類に係る機能のみを利用可能とし、
前記調整手順は、前記第三又は第四の情報の構造に対応していない場合は自動的に更新されることを特徴とする情報処理方法。
【請求項７】
アプリケーションプログラムを追加可能な機器に、
当該アプリケーションプログラムのプログラム情報を含む第一の情報を有し、当該機器内で起動すると、当該機器の情報である第二の情報を取得して、前記第一の情報と前記第二の情報とを照合することにより当該アプリケーションプログラムの実行の可否を判定する判定手順と、
前記判定手順の判定結果に応じて当該アプリケーションプログラムの動作を制御する実行制御手順と、
前記アプリケーションプログラムの利用する機能を示す第三の情報と当該機器でサポートされている機能を示す第四の情報とを照合することにより当該アプリケーションプログラムの利用する機能の実行の可否を判定し、実行が不可能な機能を実行可能とするためにプログラムを取得する調整手順とを実行させ、
前記アプリケーションプログラムは、当該機器の機種名に対応付けて保持されている、当該機器の機種に応じて相違する機能の種類のうち当該機器が有している機能の種類を当該機器より取得して、当該機器の機種に応じて相違する機能の種類に関しては、取得された種類に係る機能のみを利用可能とし、
前記調整手順は、前記第三又は第四の情報の構造に対応していない場合は自動的に更新されることを特徴とするプログラム。
【請求項８】
請求項７記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機器、情報処理システム、情報処理方法、プログラム、ＳＤメモリカード等の記録媒体に関する。
【背景技術】
【０００２】
近年、コピー機能とプリンタ機能とスキャナ機能とファクシミリ機能を備える複合機や融合機が市販されるようになった。複合機や融合機は、コピーやプリンタとして機能する場合には、画像を印刷用紙に印刷することになり、コピーやスキャナとして機能する場合には、画像を読取原稿から読み取ることになり、ファクシミリとして機能する場合には、画像を電話回線を介して他の機器と授受することになる。
【０００３】
なお、特許文献１には、コピー機能とプリンタ機能とスキャナ機能とファクシミリ機能を備える画像形成装置に関する発明が開示されている。当該画像形成装置内には当該画像形成装置用のソフトウェアとして、アプリケーションに相当するソフトウェアやプラットフォームに相当するソフトウェアが存在している。更には、アプリケーションプログラムインタフェースやエンジンインタフェースが存在している。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
画像形成装置や画像形成装置用のアプリケーションには様々な機種や様々なバージョンが存在する。よって、あるバージョンのアプリケーションが、ある機種，あるバージョンの画像形成装置では正常に動作するのに、ある機種，あるバージョンの画像形成装置では正常に動作しないという事態が発生し得る。しかし、このような事態が頻発すると商品の信用が失墜してしまうため、このような事態はなるべく回避すべきである。
【０００５】
本発明は、様々な機種や様々なバージョンが存在する機器や機器用のアプリケーションに関して、機器と機器用のアプリケーションの不適合に伴う不都合の発生を回避することを課題とする。
【課題を解決するための手段】
【０００６】
そこで上記課題を解決するため、本発明は、アプリケーションプログラムを追加可能な機器であって、前記アプリケーションプログラムは、当該アプリケーションプログラムに関する第一の情報を有し、当該機器内で起動すると、当該機器の情報である第二の情報を取得して、前記第一の情報と前記第二の情報とを照合することにより当該アプリケーションプログラムの実行の可否を判定する判定手段と、前記判断手段の判定結果に応じて当該アプリケーションプログラムの動作を制御する実行制御手段とを有し、前記アプリケーションプログラムは、当該機器の機種名に対応付けて保持されている、当該機器の機種に応じて相違する機能の種類のうち当該機器が有している機能の種類を当該機器より取得して、当該機器の機種に応じて相違する機能の種類に関しては、取得された種類に係る機能のみを利用可能とすることを特徴とする。
【０００７】
このような機器では、機器と機器用のアプリケーションの不適合に伴う不都合の発生を回避することができる。
【０００８】
また、上記課題を解決するため、本発明は、上記機器における情報処理方法、前記情報処理方法を前記機器に実行させるためのプログラム、又は前記画プログラムを記録した記録媒体としてもよい。
【発明の効果】
【０００９】
本発明は、様々な機種や様々なバージョンが存在する機器や機器用のアプリケーションに関して、機器と機器用のアプリケーションの不適合に伴う不都合の発生を回避することを可能にする。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施例に該当する融合機を表す。
【図２】図１の融合機に係るハードウェア構成図である。
【図３】図１の融合機に係る外観図である。
【図４】オペレーションパネルを表す。
【図５】図１のＪＳＤＫアプリとＪＳＤＫプラットフォームのクラス図である。
【図６】画像形成装置や画像形成装置用のアプリケーションの機種やバージョンについて解説するための解説図である。
【図７】ＪＳＤＫアプリの起動制御の第１実施例に係る説明図である。
【図８】ＪＳＤＫアプリの起動制御の第１実施例に係るフロー図である。
【図９】ＪＳＤＫアプリの起動制御の第２実施例に係る説明図である。
【図１０】ＪＳＤＫアプリの起動制御の第２実施例に係るフロー図である。
【図１１】ＪＳＤＫアプリの起動制御の第３実施例に係る説明図である。
【図１２】ＪＳＤＫアプリの起動制御の第３実施例に係るフロー図である。
【図１３】ＪＳＤＫアプリの起動制御の第４実施例に係る説明図である。
【図１４】ＪＳＤＫアプリの起動制御の第４実施例に係るフロー図である。
【図１５】機器サポート情報の例を示す図である。
【図１６】アプリ利用情報の例を示す図である。
【図１７】アクション情報の例を示す図である。
【図１８】プロセス依存情報を概念的に示す図である。
【発明を実施するための形態】
【００１１】
図１は、本発明の実施例に該当する融合機１０１を表す。図１の融合機１０１は、種々のハードウェア１１１と、種々のソフトウェア１１２と、融合機起動部１１３により構成される。
【００１２】
融合機１０１のハードウェア１１１としては、撮像部１２１と、印刷部１２２と、その他のハードウェア１２３が存在する。撮像部１２１は、読取原稿から画像（画像データ）を読み取るためのハードウェアである。印刷部１２２は、画像（画像データ）を印刷用紙に印刷するためのハードウェアである。
【００１３】
融合機１０１のソフトウェア１１２としては、種々のアプリケーション１３１と、種々のプラットフォーム１３２が存在する。これらのプログラムは、ＵＮＩＸ（登録商標）等のＯＳ（オペレーティングシステム）によりプロセス単位で並列的に実行される。
【００１４】
アプリケーション１３１としては、コピー用のアプリケーションであるコピーアプリ１４１、プリンタ用のアプリケーションであるプリンタアプリ１４２、スキャナ用のアプリケーションであるスキャナアプリ１４３、ファクシミリ用のアプリケーションであるファクシミリアプリ１４４、ネットワークファイル用のアプリケーションであるネットワークファイルアプリ１４５が存在する。そしてさらに、Ｗｅｂページの閲覧用のソフトウェアであるＷｅｂブラウザ１８１、Ｗｅｂページの配信用のソフトウェアであるＷｅｂサーバソフト１８２、ＣＳＤＫアプリ１４６やＪＳＤＫアプリ１４７の制御用のソフトウェアであるＳＤＫアプリケーションサービス（ＳＡＳ）１８３が存在する。
【００１５】
アプリケーション１３１は、専用のＳＤＫ（ソフトウェア開発キット）を使用して開発することができる。ＳＤＫを使用して開発したアプリケーション１３１をＳＤＫアプリと呼ぶ。専用のＳＤＫとしては、Ｃ言語でアプリケーション１３１を開発するための「ＣＳＤＫ」や、Ｊａｖａ（登録商標）言語でアプリケーション１３１を開発するための「ＪＳＤＫ」が提供される。ＣＳＤＫを使用して開発したアプリケーション１３１を「ＣＳＤＫアプリ」と呼び、ＪＳＤＫを使用して開発したアプリケーション１３１を「ＪＳＤＫアプリ」と呼ぶ。図１の融合機１０１にも、ＣＳＤＫアプリ１４６と、ＪＳＤＫアプリ１４７が存在する。図１の融合機１０１にはさらに、Ｊａｖａ（登録商標）言語で記述されたＪＳＤＫアプリ１４７とＣ言語で記述された他のソフトウェア１１２との仲介を行うソフトウェア１１２として、ＪＳＤＫプラットフォーム１４８が存在する。
【００１６】
プラットフォーム１３２としては、種々のコントロールサービス１５１、システムリソースマネージャ１５２、種々のハンドラ１５３が存在する。コントロールサービス１５１としては、ネットワークコントロールサービス（ＮＣＳ）１６１、ファクシミリコントロールサービス（ＦＣＳ）１６２、デリバリコントロールサービス（ＤＣＳ）１６３、エンジンコントロールサービス（ＥＣＳ）１６４、メモリコントロールサービス（ＭＣＳ）１６５、オペレーションパネルコントロールサービス（ＯＣＳ）１６６、サーティフィケーションコントロールサービス（ＣＣＳ）１６７、ユーザディレクトリコントロールサービス（ＵＣＳ）１６８、システムコントロールサービス（ＳＣＳ）１６９が存在する。ハンドラ１５３としては、ファクシミリコントロールユニットハンドラ（ＦＣＵＨ）１７１、イメージメモリハンドラ（ＩＭＨ）１７２が存在する。
【００１７】
ＮＣＳ１６１のプロセスは、ネットワーク通信の仲介を行う。ＦＣＳ１６２のプロセスは、ファクシミリのＡＰＩを提供する。ＤＣＳ１６３のプロセスは、蓄積文書の配信処理に関する制御を行う。ＥＣＳ１６４のプロセスは、撮像部１２１や印刷部１２２に関する制御を行う。ＭＣＳ１６５のプロセスは、メモリやハードディスクドライブに関する制御を行う。ＯＣＳ１６６のプロセスは、オペレーションパネルに関する制御を行う。ＣＣＳ１６７のプロセスは、認証処理や課金処理に関する制御を行う。ＵＣＳ１６８のプロセスは、ユーザ情報の管理に関する制御を行う。ＳＣＳ１６９のプロセスは、システムの管理に関する制御を行う。
【００１８】
アプリケーション１３１とプラットフォーム１３２の仲介を行うソフトウェア１１２として、仮想アプリケーションサービス（ＶＡＳ）１３５が存在する。ＶＡＳ１３５は、アプリケーション１３１をクライアントとするサーバプロセスとして動作すると共に、プラットフォーム１３２をサーバとするクライアントプロセスとして動作する。ＶＡＳ１３５は、アプリケーション１３１から見てプラットフォーム１３２を隠蔽するラッピング機能を備え、プラットフォーム１３２のバージョンアップに伴うバージョン差を吸収する役割等を担う。
【００１９】
融合機起動部１１３は、融合機１０１の電源投入時に最初に実行される。これにより、ＵＮＩＸ（登録商標）等のＯＳが起動され、アプリケーション１３１やプラットフォーム１３２が起動される。これらのプログラムは、ハードディスクドライブやメモリカードに蓄積されており、ハードディスクドライブやメモリカードから再生されて、メモリに起動されることになる。
【００２０】
図２は、図１の融合機１０１に係るハードウェア構成図である。融合機１０１のハードウェア１１１としては、コントローラ２０１と、オペレーションパネル２０２と、ファクシミリコントロールユニット（ＦＣＵ）２０３と、撮像部１２１と、印刷部１２２が存在する。
【００２１】
コントローラ２０１は、ＣＰＵ２１１、ＡＳＩＣ２１２、ＮＢ２２１、ＳＢ２２２、ＭＥＭ−Ｐ２３１、ＭＥＭ−Ｃ２３２、ＨＤＤ（ハードディスクドライブ）２３３、メモリカードスロット２３４、ＮＩＣ（ネットワークインタフェースコントローラ）２４１、ＵＳＢデバイス２４２、ＩＥＥＥ１３９４デバイス２４３、セントロニクスデバイス２４４により構成される。
【００２２】
ＣＰＵ２１１は、種々の情報処理用のＩＣである。ＡＳＩＣ２１２は、種々の画像処理用のＩＣである。ＮＢ２２１は、コントローラ２０１のノースブリッジである。ＳＢ２２２は、コントローラ２０１のサウスブリッジである。ＭＥＭ−Ｐ２３１は、融合機１０１のシステムメモリである。ＭＥＭ−Ｃ２３２は、融合機１０１のローカルメモリである。ＨＤＤ２３３は、融合機１０１のストレージである。メモリカードスロット２３４は、メモリカード２３５をセットするためのスロットである。ＮＩＣ２４１は、ＭＡＣアドレスによるネットワーク通信用のコントローラである。ＵＳＢデバイス２４２は、ＵＳＢ規格の接続端子を提供するためのデバイスである。ＩＥＥＥ１３９４デバイス２４３は、ＩＥＥＥ１３９４規格の接続端子を提供するためのデバイスである。セントロニクスデバイス２４４は、セントロニクス仕様の接続端子を提供するためのデバイスである。
【００２３】
オペレーションパネル２０２は、オペレータが融合機１０１に入力を行うためのハードウェア（操作部）であると共に、オペレータが融合機１０１から出力を得るためのハードウェア（表示部）である。
【００２４】
図３は、図１の融合機１０１に係る外観図である。図３には、撮像部１２１の位置と、印刷部１２２の位置と、オペレーションパネル２０２の位置が図示されている。図３には更に、読取原稿のセット先となる原稿セット部３０１と、印刷用紙の給紙先となる給紙部３０２と、印刷用紙の排紙先となる排紙部３０３が図示されている。
【００２５】
オペレーションパネル２０２は、図４のように、タッチパネル３１１と、テンキー３１２と、スタートボタン３１３と、リセットボタン３１４と、機能キー３１５と、初期設定ボタン３１６により構成される。タッチパネル３１１は、タッチ操作で入力を行うためのハードウェア（タッチ操作部）であると共に、画面表示で出力を得るためのハードウェア（画面表示部）である。テンキー３１２は、キー（ボタン）操作で数字入力を行うためのハードウェアである。スタートボタン３１３は、ボタン操作でスタート操作を行うためのハードウェアである。リセットボタン３１４は、ボタン操作でリセット操作を行うためのハードウェアである。機能キー３１５は、キー（ボタン）操作でＣＳＤＫアプリ１４６やＪＳＤＫアプリ１４７による操作画面を表示させるためのハードウェアである。初期設定ボタン３１６は、ボタン操作で初期設定画面を表示させるためのハードウェアである。
【００２６】
原稿セット部３０１は、ＡＤＦ（自動原稿搬送装置）３２１と、フラットベッド３２２と、フラットベッドカバー３２３により構成される。給紙部３０２は、４個の給紙トレイにより構成される。排紙部３０３は、１個の排紙トレイにより構成される。ＡＤＦ３２１には、複数枚の読取原稿を重ねてセットすることができる。フラットベッド３２２には、読取原稿を下向きにセットする。
【００２７】
（ＪＳＤＫ）
図５は、図１のＪＳＤＫアプリ１４７とＪＳＤＫプラットフォーム１４８のクラス図である。ＪＳＤＫアプリ１４７とＪＳＤＫプラットフォーム１４８は、全体で１プロセスとして、同一プロセス上で実行される。ＪＳＤＫアプリ１４７とＪＳＤＫプラットフォーム１４８中の各ブロックは、それぞれこの１プロセス上のスレッドとして、スレッド単位で並列的に実行（マルチスレッド）される。ＪＳＤＫアプリ１４７とＪＳＤＫプラットフォーム１４８は、Ｊａｖａ（登録商標）コンパイラによりソースコードからバイトコードに一括翻訳されており、Ｊａｖａ（登録商標）仮想マシンにより逐次実行される。ＪＳＤＫアプリ１４７とＪＳＤＫプラットフォーム１４８は、Ｊａｖａ（登録商標）  ２  Ｍｉｃｒｏ  ＥｄｉｔｉｏｎのＰｅｒｓｏｎａｌ  Ｂａｓｉｓ  Ｐｒｏｆｉｌｅをベースとする実装となっている。
【００２８】
ＪＳＤＫアプリ１４７としては、ユーザアプリ５０１と、ＪＳＤＫ  ＧＵＩ  Ｍａｎａｇｅｒ５１１と、Ｔａｓｋ  Ｂａｒ  Ｍａｎａｇｅｒ５１２等が存在する。
【００２９】
ユーザアプリ５０１は、融合機１０１のユーザ（例えばベンダ）がＪＳＤＫを使用して開発したＪＳＤＫアプリである。ＪＳＤＫ  ＧＵＩ  Ｍａｎａｇｅｒ５１１は、他のＪＳＤＫアプリ（ユーザアプリ５０１等）を操作対象とする操作画面の表示等を行うＪＳＤＫアプリである。Ｔａｓｋ  Ｂａｒ  Ｍａｎａｇｅｒ５１２は、他のＪＳＤＫアプリ（ユーザアプリ５０１等）を操作対象とするタスクバーの表示等を行うＪＳＤＫアプリである。
【００３０】
ユーザアプリ５０１はここでは、スタンドアロンアプリケーションやアプレットと並ぶＪａｖａ（登録商標）アプリケーションであるＸｌｅｔである。ＪＳＤＫ  ＧＵＩ  Ｍａｎａｇｅｒ５１１とＴａｓｋ  Ｂａｒ  Ｍａｎａｇｅｒ５１２はここでは、独自の拡張を施したＸｌｅｔ（ＸｌｅｔＥｘ）である。
【００３１】
ＪＳＤＫプラットフォーム１４８には、ＪＳＤＫ  Ｍａｉｎ５２１と、ＪＳＤＫ  Ｅｎｖｉｒｏｎｍｅｎｔ５２２と、Ｌｏｃａｌｅ  Ｍａｎａｇｅｒ５２３と、Ｘｌｅｔ  Ｍａｎａｇｅｒ５３１と、Ｍｕｌｔｉ  Ｘｌｅｔ  Ｍａｎａｇｅｒ５３２と、ＪＳＤＫ  Ｍａｎａｇｅｒ５３３と、Ｓｅｎｄ  Ｍａｎａｇｅｒ５４１と、Ｅｖｅｎｔ  Ｍａｎａｇｅｒ５４２と、Ｓｙｓｔｅｍ  Ｅｖｅｎｔ  Ｍａｎａｇｅｒ５４３と、Ｐａｎｅｌ  Ｍａｎａｇｅｒ５４４と、Ｉｎｓｔａｌｌ  Ｍａｎａｇｅｒ５４５と、Ｓｅｒｖｅｒ／Ｃｌｉｅｎｔ  Ｍａｎａｇｅｒ５４６等のクラスが存在する。
【００３２】
ＪＳＤＫ  Ｍａｉｎ５２１は、ＪＳＤＫシステムの起動設定を行うクラスである。ＪＳＤＫ  Ｅｎｖｉｒｏｎｍｅｎｔ５２２は、ＪＳＤＫシステムの起動環境設定を行うクラスである。Ｌｏｃａｌｅ  Ｍａｎａｇｅｒ５２３は、国際化対応（言語指定）を行うクラスである。
【００３３】
Ｘｌｅｔ  Ｍａｎａｇｅｒ５３１は、１対１でＸｌｅｔのライフサイクルを管理するクラスである。ここでは、５個のＸｌｅｔのライフサイクルが１対１で５個のＸｌｅｔ  Ｍａｎａｇｅｒ５３１によって管理される。Ｍｕｌｔｉ  Ｘｌｅｔ  Ｍａｎａｇｅｒ５３２は、全てのＸｌｅｔ  Ｍａｎａｇｅｒ５３１のライフサイクルを管理するクラスである。ここでは、５個のＸｌｅｔ  Ｍａｎａｇｅｒ５３１のライフサイクルが全て１個のＭｕｌｔｉ  Ｘｌｅｔ  Ｍａｎａｇｅｒ５３２によって管理される。ＪＳＤＫ  Ｍａｎａｇｅｒ５３３は、ＪＳＤＫシステム全体のライフサイクルを管理するクラスである。例えば、Ｍｕｌｔｉ  Ｘｌｅｔ  Ｍａｎａｇｅｒ５３２，Ｓｅｎｄ  Ｍａｎａｇｅｒ５４１，Ｅｖｅｎｔ  Ｍａｎａｇｅｒ５４２，Ｓｙｓｔｅｍ  Ｅｖｅｎｔ  Ｍａｎａｇｅｒ５４３，Ｐａｎｅｌ  Ｍａｎａｇｅｒ５４４，Ｉｎｓｔａｌｌ  Ｍａｎａｇｅｒ５４５，Ｓｅｒｖｅｒ／Ｃｌｉｅｎｔ  Ｍａｎａｇｅｒ５４６のライフサイクルが、ＪＳＤＫ  Ｍａｎａｇｅｒ５３３によって管理される。
【００３４】
Ｓｙｓｔｅｍ  Ｅｖｅｎｔ  Ｍａｎａｇｅｒ５４３は、図１のプラットフォーム１３２からのシステムイベント（電力モード等）の管理を行うクラスである。Ｐａｎｅｌ  Ｍａｎａｇｅｒ５４４は、１個のＸｌｅｔがオペレーションパネル２０２の画面を占有する際の調停等を行うクラスである。Ｉｎｓｔａｌｌ  Ｍａｎａｇｅｒ５４５は、ＳＤｃａｒｄやＷｅｂからのインストールやアンインストールの管理を行うクラスである。
【００３５】
図５のＪＳＤＫシステムでは、ＡＰＩとして、ＪＳＤＫ  ＡＰＩ５５１とＪＳＤＫ  ＡＰＩ５５２等が存在する。なお、ＸｌｅｔとＸｌｅｔＥｘの差異として、オブジェクトにアクセスするのにＪＳＤＫ  ＡＰＩ５５１の利用とＪＳＤＫプラットフォーム１４８へのアクセスが可能である点が挙げられる。図１の融合機１０１にはさらに、図５のＪＳＤＫシステムに係る要素として、Ｃ言語とＪａｖａ（登録商標）言語のインタフェースとなるＪＳＤＫ  Ｓｅｓｓｉｏｎ５５３とＮａｔｉｖｅ  ＪＳＤＫ  Ｓｅｓｓｉｏｎ５５４等が存在する。図１の融合機１０１にはさらに、図５のＪＳＤＫシステムに係る要素として、Ｊａｖａ（登録商標）コンパイラによりソースコードからバイトコードに一括翻訳されたＪａｖａ（登録商標）プログラムを逐次実行するためのＪａｖａ（登録商標）仮想マシンであるＣＶＭ（コンパクト仮想マシン）５５５等が存在する。
【００３６】
（ＪＳＤＫアプリの起動制御）
以下、画像形成装置や画像形成装置用のアプリケーションの機種やバージョンについて解説した後、ＪＳＤＫアプリ１４７の起動制御について説明する。
【００３７】
図６により、画像形成装置や画像形成装置用のアプリケーションの機種やバージョンについて解説する。画像形成装置には、オフィス向けのカラー融合機、個人向けのモノクロ融合機、オフィス向けのデジタルプリンタ、個人向けのアナログプリンタ等の様々な機種が存在する。図１の融合機１０１も、様々な機種が存在する画像形成装置の一機種に相当する。当該融合機１０１のアプリケーション１３１やプラットフォーム１３２には、図６のように、ｖｅｒ１．０、ｖｅｒ１．１、ｖｅｒ１．２、ｖｅｒ２．０、ｖｅｒ３．０等の様々なバージョンが存在する。
【００３８】
さて、当該融合機１０１のプラットフォーム１３２のバージョンをアップさせる場合、バージョンアップ前のプラットフォーム１３２とは適合していたアプリケーション１３１がバージョンアップ後のプラットフォーム１３２とは適合しなくなる事態は回避すべきである。そこで、当該融合機１０１のプラットフォーム１３２をバージョンをアップさせる場合には、当該融合機１０１のＶＡＳ１３５のバージョンもアップさせる事で、プラットフォーム１３２のバージョンアップ前後のバージョン差をＶＡＳ１３５に吸収させる事にしている。なお、当該融合機１０１では、当該融合機１０１のＶＡＳ１３５のバージョンをもって当該融合機１０１のバージョンとしている。
【００３９】
（１）第１実施例
図７は、ＪＳＤＫアプリ１４７の起動制御の第１実施例に係る説明図である。
【００４０】
第１実施例では、図７のＪＳＤＫアプリ１４７を題材として説明する。図７のＪＳＤＫアプリ１４７は、ＳＤメモリカードスロット２３４に挿入されたＳＤメモリカード２３５に記憶されている。ＳＡＳ１８３は、図７のＪＳＤＫアプリ１４７を、ＳＤメモリカードスロット２３４に挿入されたＳＤメモリカード２３５から融合機１０１内に起動させる事ができる。
【００４１】
図７のＪＳＤＫアプリ１４７は、ｖｅｒ１．０とｖｅｒ１．１とｖｅｒ１．２とｖｅｒ２．０とｖｅｒ３．０が存在するＪＳＤＫアプリのｖｅｒ２．０に相当するものとする。そして、図７のＪＳＤＫアプリ１４７のバージョンの「ｖｅｒ２．０」に対応するＶＡＳ１３５のバージョンは「ｖｅｒ３．０」であるものとする。したがって、図７のＪＳＤＫアプリ１４７は、ＶＡＳ１３５のバージョンがｖｅｒ３．０以上ならば自身のバージョンと適合するので正常に動作することになるが、ＶＡＳ１３５のバージョンがｖｅｒ３．０未満ならば自身のバージョンと適合しないので正常に動作しないことになる。
【００４２】
そこで、図７のＪＳＤＫアプリ１４７が融合機１０１内で起動した際、図７のＪＳＤＫアプリ１４７は、自身のバージョンと当該融合機１０１のバージョン（当該融合機１０１のＶＡＳ１３５のバージョン）とを照合して、自身のバージョンと当該融合機１０１のバージョンとが適合する場合は起動を継続し、自身のバージョンと当該融合機１０１のバージョンとが適合しない場合は起動を解除するものとする。
【００４３】
すなわち、図７のＪＳＤＫアプリ１４７は、当該融合機１０１のバージョンが、自身のバージョンと対応するバージョンである場合または自身のバージョンと対応するバージョンより新しいバージョンである場合は起動を継続し、当該融合機１０１のバージョンが、自身のバージョンと対応するバージョンより古いバージョンである場合は起動を解除することになる。
【００４４】
これにより、融合機１０１とＪＳＤＫアプリ１４７の不適合に伴う不都合の発生を回避する事ができる。融合機１０１とＪＳＤＫアプリ１４７とが適合するか否かを、ＪＳＤＫアプリ１４７が自身で確認し、融合機１０１とＪＳＤＫアプリ１４７とが適合しない場合には、ＪＳＤＫアプリ１４７が自身で起動を解除するからである。起動制御の実行主体を融合機側ではなくアプリ側としているため、起動制御の対策分担が融合機のメーカーからアプリのベンダーに委任されていると言える。
【００４５】
ここで、融合機１０１のＡＰＩ（アプリケーションプログラムインタフェース）１３３について補足しておく。図１の融合機１０１では、アプリケーション１３１からプラットフォーム１３２への処理要求の授受には、予め定義されている関数により処理要求を受容するＡＰＩ１３３が利用される。融合機１０１のＡＰＩ１３３は、数百種類にも至る様々な種類のＡＰＩにより構成される。図１の融合機１０１では、融合機１０１のバージョンの上位互換性を保障すべく、融合機１０１のバージョンアップに伴ってＡＰＩの「追加」は行うが「削除」は行わないものとする。これにより、図７のＪＳＤＫアプリ１４７は、自身のバージョンと対応するバージョン以上のバージョンの融合機１０１とは適合する事になると共に、自身のバージョンと対応するバージョン未満のバージョンの融合機１０１とは適合しない事になる。
【００４６】
図８は、ＪＳＤＫアプリ１４７の起動制御の第１実施例に係るフロー図である。
【００４７】
融合機１０１の電源が投入（Ｓ１１）されると、融合機起動部１１３がＳＡＳ１８３を起動（Ｓ１２）させる。続いて、ＳＡＳ１８３がＣＶＭ５５５を起動（Ｓ１３）させる。続いて、ＳＡＳ１８３がＣＶＭ５５５を利用してＪＳＤＫアプリ１４７を起動（Ｓ１４）させる。続いて、ＪＳＤＫアプリ１４７は、融合機１０１内のＶＡＳ１３５のバージョンに係る情報を、融合機１０１内のＶＡＳ１３５から取得（Ｓ１５）する。ＶＡＳ１３５は自身のバージョンに係る情報を保持しているものとする。続いて、ＪＳＤＫアプリ１４７は、自身のバージョンと融合機１０１内のＶＡＳ１３５のバージョンとを照合（Ｓ１６）する。ＪＳＤＫアプリ１４７は自身のバージョンに係る情報を保持しているものとする。そして、ＪＳＤＫアプリ１４７は、自身のバージョンと融合機１０１内のＶＡＳ１３５のバージョンとが適合する場合（Ｓ１７）には起動を継続（Ｓ１８）し、自身のバージョンと融合機１０１内のＶＡＳ１３５のバージョンとが適合しない場合（Ｓ１７）には起動を解除（Ｓ１９）する。
【００４８】
（２）第２実施例
図９は、ＪＳＤＫアプリ１４７の起動制御の第２実施例に係る説明図である。
【００４９】
第２実施例では、図９のＪＳＤＫアプリ１４７を題材として説明する。図９のＪＳＤＫアプリ１４７は、ＳＤメモリカードスロット２３４に挿入されたＳＤメモリカード２３５に記憶されている。ＳＡＳ１８３は、図９のＪＳＤＫアプリ１４７を、ＳＤメモリカードスロット２３４に挿入されたＳＤメモリカード２３５から融合機１０１内に起動させる事ができる。
【００５０】
図９Ａの融合機１０１も図９Ｂの融合機１０１も図１の融合機１０１に相当するものとするが、図９Ａの融合機１０１と図９Ｂの融合機１０１では機種が相違するものとする。図９Ａの融合機１０１はカラー融合機であり、図９Ｂの融合機１０１はモノクロ融合機である。したがって、図９Ａの融合機１０１と図９Ｂの融合機１０１ではサポートする機能の種類が相違する。大きい単位で言えば、図９Ａの融合機１０１はモノクロコピー機能，カラーコピー機能，モノクロプリント機能，カラープリント機能等をサポートし、図９Ｂの融合機１０１はモノクロコピー機能，モノクロプリント機能等をサポートする。小さい単位で言えば、図９Ａの融合機１０１はモノクロ向けのＡＰＩ，カラー向けのＡＰＩ等をサポートし、図９Ｂの融合機１０１はモノクロ向けのＡＰＩ等をサポートする。よって、図９Ａ，ＢのＪＳＤＫアプリ１４７が図９Ａ，Ｂの融合機１０１内でカラー向けの機能を利用しようとした場合、図９ＡのＪＳＤＫアプリ１４７は正常に動作することになるが、図９ＢのＪＳＤＫアプリ１４７は正常に動作しないことになる。
【００５１】
そこで、図９のＪＳＤＫアプリ１４７が融合機１０１内で起動した際、図９のＪＳＤＫアプリ１４７は、当該融合機１０１でサポートされている機能の種類を確認し、当該融合機１０１でサポートされていない機能についてはその利用を回避することで、当該融合機１０１でサポートされている機能のみを利用するものとする。
【００５２】
これにより、融合機１０１とＪＳＤＫアプリ１４７の不適合に伴う不都合の発生を回避する事ができる。融合機１０１でサポートされている機能の種類をＪＳＤＫアプリ１４７が自身で確認して、融合機１０１でサポートされていない機能についてはＪＳＤＫアプリ１４７が自身でその利用を回避するからである。ＪＳＤＫアプリ１４７は、融合機１０１とＪＳＤＫアプリ１４７の不適合部分についてはその実行を回避する事で、融合機１０１とＪＳＤＫアプリ１４７の適合部分のみを実行する事になる。起動制御（起動の際の機能利用制御）の実行主体を融合機側ではなくアプリ側としているため、起動制御の対策分担が融合機のメーカーからアプリのベンダーに委任されていると言える。
【００５３】
ただし、図９のＪＳＤＫアプリ１４７は、画像形成装置でサポートされているか否かが画像形成装置の各機種で共通する「固定機能」については、当該融合機１０１でサポートされているか否かを確認せず、画像形成装置でサポートされているか否かが画像形成装置の各機種で相違する「拡張機能」についてのみ、当該融合機１０１でサポートされているか否かを確認するものとする。
【００５４】
なお、どの機能を「固定機能」としてどの機能を「拡張機能」とするかは任意である。例えば、画像形成装置の機種としてモノクロ融合機，カラー融合機，モノクロプリンタ，カラープリンタが想定される場合、モノクロプリント機能を「固定機能」として、カラープリント機能，モノクロコピー機能，カラーコピー機能，タッチパネル機能，ストレージ機能を「拡張機能」とすることが想定される。
【００５５】
さらに、図９のＪＳＤＫアプリ１４７は、融合機１０１でサポートされていない機能についてその利用を回避する場合には、その事実をユーザインタフェースに反映させるようにしてもよい。例えば、カラーコピー機能の利用を回避する場合には、カラーコピー画面やカラーコピー開始ボタンを表示しないようにしてもよいし、カラーコピー画面やカラーコピー開始ボタンを操作するとエラーメッセージが表示されるようにしてもよい。
【００５６】
図１０は、ＪＳＤＫアプリ１４７の起動制御の第２実施例に係るフロー図である。
【００５７】
融合機１０１の電源が投入（Ｓ２１）されると、融合機起動部１１３がＳＡＳ１８３を起動（Ｓ２２）させる。続いて、ＳＡＳ１８３がＣＶＭ５５５を起動（Ｓ２３）させる。続いて、ＳＡＳ１８３がＣＶＭ５５５を利用してＪＳＤＫアプリ１４７を起動（Ｓ２４）させる。続いて、ＪＳＤＫアプリ１４７は、融合機１０１でサポートされている機能に係る情報を、融合機１０１内のＶＡＳ１３５から取得（Ｓ２５）する。ＶＡＳ１３５は画像形成装置の機種名と画像形成装置でサポートされている機能の種類との対応表を保持しているものとする。続いて、ＪＳＤＫアプリ１４７は、融合機１０１でサポートされている機能の種類を確認（Ｓ２６）する。そして、ＪＳＤＫアプリ１４７は、融合機１０１でサポートされている機能（Ｓ２７）についてはその利用を回避せず（Ｓ２８）、融合機１０１でサポートされていない機能（Ｓ２７）についてはその利用を回避する（Ｓ２９）。
【００５８】
（３）第３実施例
図１１は、ＪＳＤＫアプリ１４７の起動制御の第３実施例に係る説明図である。
【００５９】
第３実施例では、図１１のＪＳＤＫアプリ１４７，ＣＶＭ５５５Ａ，ＣＶＭ５５５Ｂを題材として説明する。図１１のＪＳＤＫアプリ１４７，ＣＶＭ５５５Ａ，ＣＶＭ５５５Ｂは、ＳＤメモリカードスロット２３４に挿入されたＳＤメモリカード２３５に記憶されている。ＳＡＳ１８３は、図１１のＪＳＤＫアプリ１４７，ＣＶＭ５５５Ａ，ＣＶＭ５５５Ｂを、ＳＤメモリカードスロット２３４に挿入されたＳＤメモリカード２３５から融合機１０１内に起動させる事ができる。
【００６０】
画像形成装置の機種はここでは、２００４年下半期機種群、２００５年上半期機種群、２００５年下半期機種群のように「機種群」として管理されているものとする。画像形成装置の開発を機種群単位で遂行するためである。よって、画像形成装置のＪａｖａ（登録商標）の実行環境の変更も機種群単位で実施する。したがって、画像形成装置用のＣＶＭのバージョンはここでは、２００４年下半期機種群用ＣＶＭ、２００５年上半期機種群用ＣＶＭ、２００５年下半期機種群用ＣＶＭのように機種群単位で存在することになる。
【００６１】
一方、本発明者は、ＪＳＤＫアプリ１４７、ＪＳＤＫプラットフォーム１４８、ＣＶＭ５５５を１枚のＳＤメモリカード２３５に格納して販売するビジネスモデルについて検討している。この場合に懸案となるのがＣＶＭ５５５の機種群依存性である。ある機種群をリリースするごとに、その機種群用のＣＶＭ５５５を搭載したその機種群用のＳＤメモリカード２３５をリリースする事にすると、Ｎ種類の機種群のリリース後にはＮ種類のＳＤメモリカード２３５を取り扱う事になり面倒だからである。
【００６２】
そこで、第３実施例では、ある機種群をリリースする場合には、その機種群がリリースされる迄にリリースされた全ての機種群のＣＶＭ５５５を１枚のＳＤメモリカード２３５に搭載したＳＤメモリカード２３５を、全ての機種群に共通のＳＤメモリカード２３５としてリリースする事にする。
【００６３】
そして、第３実施例では、ＳＡＳ１８３は、ＳＤメモリカード２３５に記憶されているＪＳＤＫアプリ１４７を融合機１０１内に起動させる際、ＳＤメモリカード２３５に記憶されている複数のバージョンのＣＶＭ５５５の内、当該融合機１０１の機種（機種群）と適合するバージョンのＣＶＭ５５５を自動選択して当該融合機１０１内に起動させるものとする。
【００６４】
これにより、第３実施例では、複数のＳＤメモリカード２３５を取り扱う面倒から開放される事になる。ある機種群のリリース後には、その機種群に伴ってリリースされたＳＤメモリカード２３５だけを取り扱う事になるからである。また、第３実施例では、融合機１０１とＪＳＤＫアプリ１４７（ＳＤメモリカード２３５）の不適合に伴う不都合の発生が回避される事になる。ＳＤメモリカード２３５が共通化されていることで、ＳＤメモリカード２３５の取り違えの問題が回避されているからである。
【００６５】
図１１を実例として詳細に説明する。図１１のＣＶＭ５５５Ａ，ＣＶＭ５５５Ｂは２００４年下半期機種群用ＣＶＭ，２００５年上半期機種群用ＣＶＭに相当する。すなわち、図１１のＳＤメモリカード２３５は、２００５年度上半期機種群に伴ってリリースされたＳＤメモリカード２３５に相当する。そして、図１１の融合機１０１は２００５年上半期機種群に属する機種の画像形成装置に相当する。したがって、図１１のＳＡＳ１８３は、ＳＤメモリカード２３５に記憶されているＪＳＤＫアプリ１４７を融合機１０１内に起動させる際、ＳＤメモリカード２３５に記憶されている複数のバージョンのＣＶＭ５５５の内、当該融合機１０１の機種群「２００５年上半期機種群」と適合するバージョン「２００５年上半期機種群用ＣＶＭ」のＣＶＭ５５５を自動選択して当該融合機１０１内に起動させるものとする。
【００６６】
図１２は、ＪＳＤＫアプリ１４７の起動制御の第３実施例に係るフロー図である。
【００６７】
融合機１０１の電源が投入（Ｓ３１）されると、融合機起動部１１３がＳＡＳ１８３を起動（Ｓ３２）させる。続いて、ＳＡＳ１８３は、融合機１０１の機種名（機種群名）に係る情報を、融合機１０１内のＶＡＳ１３５から取得（Ｓ３３）する。ＶＡＳ１３５は融合機１０１の機種名（機種群名）に係る情報を保持しているものとする。続いて、ＳＡＳ１８３は、ＳＤメモリカード２３５に記憶されている複数のバージョンのＣＶＭ５５５の内、融合機１０１の機種（機種群）と適合するバージョンのＣＶＭ５５５を自動選択（Ｓ３４）して融合機１０１内に起動（Ｓ３５）させる。続いて、ＳＡＳ１８３は、自動選択して起動させたそのＣＶＭ５５５を利用して、ＳＤメモリカード２３５に記憶されているＪＳＤＫアプリ１４７を融合機１０１内に起動（Ｓ３６）させる。
【００６８】
（４）第４実施例
図１３は、ＪＳＤＫアプリ１４７の起動制御の第４実施例に係る説明図である。
【００６９】
第４実施例は、図１３のＪＳＤＫアプリ１４７及びバージョンコントローラ１３６等を題材として説明する。図１３のＪＳＤＫアプリ１４７は、ＳＤメモリカードスロット２３４に挿入されたＳＤメモリカード２３５に記憶されている。一方、バージョンコントローラ１３６は、ＪＳＤＫアプリ１４７が利用する機能と、融合機１０１においてサポートされている機能との不整合を調整するプログラムであり、ＳＤメモリカード２３５、非図示のＵＳＢメモリ、非図示のフラッシュメモリ、ＨＤＤ２３３、又はイントラネット若しくはインターネット等のネットワークを介して接続されている他のコンピュータにおける記憶媒体上等、書き換え可能な記憶媒体に格納されており、更新可能とされている。なお、ＳＡＳ１８３は、ＳＤＫアプリ１４７やバージョンコントローラ１３６等を融合機１０１内に起動させる事ができる。
【００７０】
図１４は、ＪＳＤＫアプリ１４７の起動制御の第４実施例に係るフロー図である。
【００７１】
融合機１０１の電源が投入（Ｓ４１）されると、融合機起動部１１３がＳＡＳ１８３を起動（Ｓ４２）させる。続いて、ＳＡＳ１８３がＣＶＭ５５５とバージョンコントローラ１３６とを起動させる（Ｓ４３、Ｓ４４）。更に、ＳＡＳ１８３は、ＣＶＭ５５５を利用してＪＳＤＫアプリ１４７を起動（Ｓ４５）させる。
【００７２】
続いて、バージョンコントローラ１４７は、融合機１０１でサポートされている機能に係る情報（以下、「機器サポート情報」という。）を、融合機１０１内のＶＡＳ１３５から取得（Ｓ４６）すると共に、ＪＳＤＫアプリ１４７が利用する機能に係る情報（以下、「アプリ利用情報」という。）をＪＳＤＫアプリ１４７より取得する（Ｓ４７）。
【００７３】
図１５は、機器サポート情報の例を示す図である。図１５において、機器サポート情報６００は、ＸＭＬ形式で記述された例が示されているが、その記述形式は特定のものに限定されない。
【００７４】
機器サポート情報６００において、「ｉｎｆ＿ｖｅｒｓｉｏｎ」要素６０１は、当該機器サポート情報６００が従う文法（構造）のバージョン（「１．２」）を示す（以下「機器サポート情報バージョン」という。）。また、「ｆｕｎｃｔｉｏｎ＿ｌｉｓｔ」要素６０２は、融合機１０１がサポートしている機能のリストを示す。当該リスト内では、各機能のバージョン情報が示されている。例えば、「ｃｏｐｙ」要素６０２１には、融合機１０１に現在実装されているコピーアプリ１４１のバージョン（「１．０３」）が示されている。また「ＣＶＭ」要素６０２４には、融合機１０１に現在実装されているＣＶＭ５５５のバージョン（「１．０１」）が示されている。
【００７５】
また、図１６は、アプリ利用情報の例を示す図である。
【００７６】
図１６のアプリ利用情報７００は、図１５の機器サポート情報６００と同様の文法（構造）にしたがう。すなわち、アプリ利用情報７００において、「ｉｎｆ＿ｖｅｒｓｉｏｎ」要素７０１は、当該アプリ利用情報７００が従う文法（構造）のバージョン（「１．３」）を示す（以下「アプリ利用情報バージョン」という。）。また、「ｆｕｎｃｔｉｏｎ＿ｌｉｓｔ」要素７０２は、ＪＳＤＫアプリ１４７が利用する機能とそのバージョン情報とのリストを示す。例えば、「ＣＶＭ」要素７０２１には、ＪＳＤＫアプリ１４７が使用するＣＶＭ５５５のバージョン（「１．０２」）が示されている。
【００７７】
続いて、バージョンコントローラ１３６は、機器サポート情報バージョンとアプリ利用情報バージョンとに基づいて、自らが当該機器サポート情報６００及当該アプリ利用情報７００とを解釈可能か否かを判定する（Ｓ４８）。すなわち、機器サポート情報６００やアプリ利用情報７００の文法（構造）は、拡張等によって更新される可能性があり、バージョンコントローラ１３６には解釈できないタグ等が追加されている場合もあるからである。本実施例では、アプリ利用情報バージョンの方が新しいため、バージョンコントローラ１３６は、少なくともアプリ利用情報バージョン（「１．３」）以上のバージョンを解釈可能である必要がある。なお、バージョンコントローラ１３６には、当該バージョンコントローラ１３６が解釈可能なバージョンが組み込まれている。したがって、当該組み込まれているバージョンが、機器サポート情報バージョンとアプリ利用情報バージョンとの少なくともいずれか一方より古い場合（Ｓ４８でＹｅｓ）、バージョンコントローラ１３６は、自らは、機器サポート情報又はアプリ利用情報に対して古いものと判定し、その旨をＳＡＳ１８３に通知する。当該通知を受けたＳＡＳ１８３は、当該機器サポート情報バージョン及びアプリ利用情報バージョンに対応可能なバージョンコントローラ１３６を、例えば、ネットワークを介した所定のサーバよりダウンロードする。これによって、バージョンコントローラ１３は自動的に更新される（Ｓ４９）。但し、バージョンコントローラ１３６は、ユーザによって手動で更新されてもよい。手動による更新の場合、ユーザからの指示は、オペレーションパネル２０２やＷｅｂページ等を介して入力される。
【００７８】
ステップＳ４７又はＳ４９に続いてステップＳ５０に進み、バージョンコントローラ１３６は、機器サポート情報６００とアプリ利用情報７００とを照合することにより、ＪＳＤＫ１４７アプリが利用する機能が、融合機１０１でサポートされているか否かを判定する（Ｓ５０）。例えば、アプリ利用情報７００においてリストアップされている機能が、機器サポート情報６００においてリストアップされている機能に含まれており、かつ、機器における当該機能のバージョンがアプリが利用するバージョンと同じであるか新しい場合、当該機能は、融合機１０１でサポートされていると判定される。この場合、ＪＳＤＫアプリ１４７は、当該機能の利用を回避しない（Ｓ５１）。
【００７９】
一方、上記以外の場合、すなわち、アプリ利用情報７００においてリストアップされている機能が機器サポート情報６００においてリストアップされていないか、又は、機器サポート情報６００にリストアップされていたとしても、機器における当該機能のバージョンが、アプリが利用するバージョンより古い場合、当該機能は、融合機１０１でサポートされていないと判定される。この場合、ステップＳ５２に進み、バージョンコントローラ１３６は、アクション情報を融合機１０１内の記録媒体より取得する（Ｓ５２）。
【００８０】
図１７は、アクション情報の例を示す図である。
【００８１】
図１７のアクション情報８００は、アプリ利用情報と機器サポート情報とに不一致が生じた場合に実行すべき処理が定義されている情報である。すなわち、アクション情報８００の「ａｃｔｉｏｎ＿ｌｉｓｔ」要素８０１には、機能毎に実行すべき定義が「ａｃｔｉｏｎ」要素として定義されている。
【００８２】
例えば、「ｃｏｐｙ」要素８０１２や「ＣＶＭ」要素８０１３に含まれている「ａｃｔｉｏｎ」要素の値は、「ｕｐａｄｔｅ」とされている。これは、当該機能にかかるプログラムをダウンロード等によって更新することにより、ＪＳＤＫアプリ１４７に対応させることを意味する。なお、この場合、ダウンロード元を識別するための情報等も記述されうるが、図１７においては便宜上省略されている。また、「ｓｃａｎ」要素８０１２に含まれている「ａｃｔｉｏｎ」要素の値は、「ｉｇｎｏｒｅ」とされている。これは、当該機能については、例えば、アプリケーション側と不整合があっても融合機１０１側での更新は行わず、アプリケーションの機能を制限することを意味する。
【００８３】
したがって、ステップＳ５２に続いて実行されるステップＳ５３では、アクション情報８００に応じた処理が実行される。
【００８４】
なお、アクション情報８００に従って融合機１０１側の機能を更新する際、バージョンコントローラ１３６は、融合機１０１の例えばフラッシュメモリ等の内部に記録されている、プロセス間の依存関係を示す情報（以下「プロセス依存情報」という。）に基づいて、更新する機能が依存関係を有する情報を同時に更新するようにしてもよい。
【００８５】
図１８は、プロセス依存情報を概念的に示す図である。
【００８６】
図１８のプロセス依存情報９００では、矢印の元のプロセス（機能）が、矢印の先のプロセス（機能）に対して依存関係を有していることを示す。例えば、コピーアプリ１４１は、ＳＣＳ１６９及びＭＣＳ１６５に依存関係を有している。また、ＣＶＭ５５５は、ＶＡＳ１３５に依存関係を有している。なお、図１８において、プロセス依存情報９００は、ツリー構造によって概念的に表現されているが、例えば、ＸＭＬ形式によって当該ツリー構造を表現してもよい。また、プロセス（機能）が更新されて、依存関係が更新される場合は、当該プロセス依存情報９００も更新するようにするとよい。そうするためには、プロセス毎に、当該プロセスが依存関係を有するプロセスを特定するための情報を付加するようにすればよい。
【００８７】
ここで、ステップＳ４７においてバージョンコントローラ１３６が、ＪＳＤＫアプリ１４７よりアプリ利用情報７００を取得するための仕組みについて詳述する。一般的に、Ｊａｖａ（登録商標）のプログラムは、「．ｊａｖａ」という拡張子の付いたソースファイルがコンパイルされることにより、当該ソースファイル内に定義されたクラスごとに「．ｃｌａｓｓ」という拡張子の付いたクラスファイルが生成される。そして、一つ以上のソースファイルより生成されたクラスファイルを機能単位でアーカイブ化し、「．ｊａｒ」という拡張子の付いたｊａｒファイルが生成される。当該ｊａｒファイルには、その一部に当該ｊａｒファイルの単位でのバージョン情報を管理する仕組みがある。したがって、このｊａｒファイル単位でのバージョン情報に基づいて、アプリ利用情報が生成されてもよい。但し、ｊａｒファイル単位では、その内部に含まれているクラス単位によるバージョンまでは識別できない。したがって、クラス単位でのバージョンの識別が必要な場合は、各クラスのバージョンを示すようなクラスを別途定義し、ｊａｒファイルに含めておけばよい。そうすることにより、当該バージョンを示すクラスにｊａｒファイルの外部よりアクセスすることで各クラスのバージョンを識別することができ、より細かい単位でのアプリ利用情報を作成することができる。
【００８８】
上述したように、第４の実施例の融合機１０１によれば、アプリケーションが利用したい機能と融合機１０１がサポートしている機能との整合性の判断主体（バージョンコントローラ１３６）が、更新可能な構成とされているため、当該整合性を判断するために必要なプロトコル（アプリ利用情報や機器サポート情報等）に更新があった場合でも、当該バージョンコントローラ１３６を更新することで、柔軟に対応することができる。また、融合機１０１においてサポートされていない機能があった場合は、可能な範囲で当該機能を補充したり更新したりすることができるため、ユーザにとってより利便性の高いサービスを提供することができる。さらに、融合機１０１においてサポートされていない機能があった場合は、アクション情報９００に基づいて、その後の動作が判断される。したがって、機能毎に柔軟な対処を行うことができる。
【符号の説明】
【００８９】
１０１  融合機
１１１  ハードウェア
１１２  ソフトウェア
１１３  融合機起動部
１２１  撮像部
１２２  印刷部
１２３  その他のハードウェア
１３１  アプリケーション
１３２  プラットフォーム
１３３  アプリケーションプログラムインタフェース
１３４  エンジンインタフェース
１３５  仮想アプリケーションサービス
１３６  バージョンコントローラ
１４１  コピーアプリ
１４２  プリンタアプリ
１４３  スキャナアプリ
１４４  ファクシミリアプリ
１４５  ネットワークファイルアプリ
１４６  ＣＳＤＫアプリ
１４７  ＪＳＤＫアプリ
１４８  ＪＳＤＫプラットフォーム
１５１  コントロールサービス
１５２  システムリソースマネージャ
１５３  ハンドラ
１６１  ネットワークコントロールサービス
１６２  ファクシミリコントロールサービス
１６３  デリバリコントロールサービス
１６４  エンジンコントロールサービス
１６５  メモリコントロールサービス
１６６  オペレーションパネルコントロールサービス
１６７  サーティフィケーションコントロールサービス
１６８  ユーザディレクトリコントロールサービス
１６９  システムコントロールサービス
１７１  ファクシミリコントロールユニットハンドラ
１７２  イメージメモリハンドラ
１８１  Ｗｅｂブラウザ
１８２  Ｗｅｂサーバソフト
１８３  ＳＤＫアプリケーションサービス
２０１  コントローラ
２０２  オペレーションパネル
２０３  ファクシミリコントロールユニット
２１１  ＣＰＵ
２１２  ＡＳＩＣ
２２１  ＮＢ
２２２  ＳＢ
２３１  ＭＥＭ−Ｐ
２３２  ＭＥＭ−Ｃ
２３３  ＨＤＤ
２３４  メモリカードスロット
２３５  メモリカード
２４１  ＮＩＣ
２４２  ＵＳＢデバイス
２４３  ＩＥＥＥ１３９４デバイス
２４４  セントロニクスデバイス
３０１  原稿セット部
３０２  給紙部
３０３  排紙部
３１１  タッチパネル
３１２  テンキー
３１３  スタートボタン
３１４  リセットボタン
３１５  機能キー
３１６  初期設定ボタン
３２１  ＡＤＦ
３２２  フラットベッド
３２３  フラットベッドカバー
５０１  ユーザアプリ
５１１  ＪＳＤＫ  ＧＵＩ  Ｍａｎａｇｅｒ
５１２  Ｔａｓｋ  Ｂａｒ  Ｍａｎａｇｅｒ
５２１  ＪＳＤＫ  Ｍａｉｎ
５２２  ＪＳＤＫ  Ｅｎｖｉｒｏｎｍｅｎｔ
５２３  Ｌｏｃａｌｅ  Ｍａｎａｇｅｒ
５３１  Ｘｌｅｔ  Ｍａｎａｇｅｒ
５３２  Ｍｕｌｔｉ  Ｘｌｅｔ  Ｍａｎａｇｅｒ
５３３  ＪＳＤＫ  Ｍａｎａｇｅｒ
５４１  Ｓｅｎｄ  Ｍａｎａｇｅｒ
５４２  Ｅｖｅｎｔ  Ｍａｎａｇｅｒ
５４３  Ｓｙｓｔｅｍ  Ｅｖｅｎｔ  Ｍａｎａｇｅｒ
５４４  Ｐａｎｅｌ  Ｍａｎａｇｅｒ
５４５  Ｉｎｓｔａｌｌ  Ｍａｎａｇｅｒ
５４６  Ｓｅｒｖｅｒ／Ｃｌｉｅｎｔ  Ｍａｎａｇｅｒ
５４７  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｍａｎａｇｅｒ
５５１  ＪＳＤＫ  ＡＰＩ
５５２  ＪＳＤＫ  ＡＰＩ
５５３  ＪＳＤＫ  Ｓｅｓｓｉｏｎ
５５４  Ｎａｔｉｖｅ  ＪＳＤＫ  Ｓｅｓｓｉｏｎ
５５５  ＣＶＭ
【先行技術文献】
【特許文献】
【００９０】
【特許文献１】特開２００２−８４３８３号公報
【図１】
0005333545.tif 000002
【図２】
0005333545.tif 000003
【図３】
0005333545.tif 000004
【図４】
0005333545.tif 000005
【図５】
0005333545.tif 000006
【図６】
0005333545.tif 000007
【図７】
0005333545.tif 000008
【図８】
0005333545.tif 000009
【図９】
0005333545.tif 000010
【図１０】
0005333545.tif 000011
【図１１】
0005333545.tif 000012
【図１２】
0005333545.tif 000013
【図１３】
0005333545.tif 000014
【図１４】
0005333545.tif 000015
【図１５】
0005333545.tif 000016
【図１６】
0005333545.tif 000017
【図１７】
0005333545.tif 000018
【図１８】
0005333545.tif 000019