(57)【特許請求の範囲】
【請求項１】
アプリケーションを実行可能な電子機器であって、
前記アプリケーションに対して当該電子機器の機能を利用させるためのインタフェースを提供する複数のインタフェース提供手段と、
記憶装置に記録されている、前記アプリケーションによるインタフェースの利用に関する情報に基づいて、前記アプリケーションに利用させる前記インタフェース提供手段を、同一のインタフェースを提供する前記インタフェース提供手段の中から選択する選択手段とを有し、
前記複数のインタフェース提供手段のうちの第一のインタフェース提供手段は、他のインタフェース提供手段の一部のインタフェースを有し、
前記選択手段は、前記情報に基づいて、前記アプリケーションによって利用されるインタフェースが、前記第一のインタフェース提供手段が有するインタフェースによって満たされると判断した場合には、前記第一のインタフェース提供手段を選択することを特徴とする電子機器。
【請求項２】
前記各インタフェース提供手段は、前記アプリケーションによるインタフェースの利用に関する情報を前記記憶装置に記録することを特徴とする請求項１記載の電子機器。
【請求項３】
前記選択手段は、記憶装置に記録されている前記アプリケーションが利用する機能を示す利用機能情報と、記憶装置に記録されている複数の前記インタフェース提供手段が提供する機能を示す提供機能情報との比較結果に応じて前記アプリケーションに利用させる前記インタフェース提供手段を選択することを特徴とする請求項１又は２記載の電子機器。
【請求項４】
前記選択手段は、前記利用機能情報と前記提供機能情報との比較に応じて前記インタフェース提供手段が複数選択されるときに前記インタフェース提供手段の実行環境を示す情報と当該電子機器における前記実行環境に関する情報との比較結果に応じて前記インタフェース提供手段を選択することを特徴とする請求項３記載の電子機器。
【請求項５】
それぞれの前記インタフェース提供手段がメモリの消費量と処理性能とのいずれを優先させるかを示す優先情報が記憶装置に記録されており、
前記選択手段は、前記優先情報に基づいて前記インタフェース提供手段を選択することを特徴とする請求項１乃至４いずれか一項記載の電子機器。
【請求項６】
アプリケーションを実行可能な電子機器による情報処理方法であって、
前記アプリケーションに対して当該電子機器の機能を利用させるためのインタフェースを提供する複数のインタフェース提供手順と、
記憶装置に記録されている、前記アプリケーションによるインタフェースの利用に関する情報に基づいて、前記アプリケーションに利用させる前記インタフェース提供手順を、同一のインタフェースを提供する前記インタフェース提供手順の中から選択する選択手順とを有し、
前記複数のインタフェース提供手順のうちの第一のインタフェース提供手順は、他のインタフェース提供手順の一部のインタフェースを有し、
前記選択手順は、前記情報に基づいて、前記アプリケーションによって利用されるインタフェースが、前記第一のインタフェース提供手順が有するインタフェースによって満たされると判断した場合には、前記第一のインタフェース提供手順を選択することを特徴とする情報処理方法。
【請求項７】
前記各インタフェース提供手順は、前記アプリケーションによるインタフェースの利用に関する情報を前記記憶装置に記録することを特徴とする請求項６記載の情報処理方法。
【請求項８】
前記選択手順は、記憶装置に記録されている前記アプリケーションが利用する機能を示す利用機能情報と、記憶装置に記録されている複数の前記インタフェース提供手順が提供する機能を示す提供機能情報との比較結果に応じて前記アプリケーションに利用させる前記インタフェース提供手順を選択することを特徴とする請求項６又は７記載の情報処理方法。
【請求項９】
前記選択手順は、前記利用機能情報と前記提供機能情報との比較に応じて前記インタフェース提供手順が複数選択されるときに前記インタフェース提供手順の実行環境を示す情報と当該電子機器における前記実行環境に関する情報との比較結果に応じて前記インタフェース提供手順を選択することを特徴とする請求項８記載の情報処理方法。
【請求項１０】
それぞれの前記インタフェース提供手順がメモリの消費量と処理性能とのいずれを優先させるかを示す優先情報が記憶装置に記録されており、
前記選択手順は、前記優先情報に基づいて前記インタフェース提供手順を選択することを特徴とする請求項６乃至９いずれか一項記載の情報処理方法。
【請求項１１】
アプリケーションを実行可能な電子機器に、
前記アプリケーションに対して当該電子機器の機能を利用させるためのインタフェースを提供する複数のインタフェース提供手順と、
記憶装置に記録されている、前記アプリケーションによるインタフェースの利用に関する情報に基づいて、前記アプリケーションに利用させる前記インタフェース提供手順を、同一のインタフェースを提供する前記インタフェース提供手順の中から選択する選択手順とを実行させ、
前記複数のインタフェース提供手順のうちの第一のインタフェース提供手順は、他のインタフェース提供手順の一部のインタフェースを有し、
前記選択手順は、前記情報に基づいて、前記アプリケーションによって利用されるインタフェースが、前記第一のインタフェース提供手順が有するインタフェースによって満たされると判断した場合には、前記第一のインタフェース提供手順を選択する情報処理プログラム。
【請求項１２】
前記各インタフェース提供手順は、前記アプリケーションによるインタフェースの利用に関する情報を前記記憶装置に記録することを特徴とする請求項１１記載の情報処理プログラム。
【請求項１３】
前記選択手順は、記憶装置に記録されている前記アプリケーションが利用する機能を示す利用機能情報と、記憶装置に記録されている複数の前記インタフェース提供手順が提供する機能を示す提供機能情報との比較結果に応じて前記アプリケーションに利用させる前記インタフェース提供手順を選択することを特徴とする請求項１１又は１２記載の情報処理プログラム。
【請求項１４】
前記選択手順は、前記利用機能情報と前記提供機能情報との比較に応じて前記インタフェース提供手順が複数選択されるときに前記インタフェース提供手順の実行環境を示す情報と当該電子機器における前記実行環境に関する情報との比較結果に応じて前記インタフェース提供手順を選択することを特徴とする請求項１３記載の情報処理プログラム。
【請求項１５】
それぞれの前記インタフェース提供手順がメモリの消費量と処理性能とのいずれを優先させるかを示す優先情報が記憶装置に記録されており、
前記選択手順は、前記優先情報に基づいて前記インタフェース提供手順を選択することを特徴とする請求項１１乃至１４いずれか一項記載の情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子機器、情報処理方法、及び情報処理プログラムに関し、特にアプリケーションを実行可能な電子機器、情報処理方法、及び情報処理プログラムに関する。
【背景技術】
【０００２】
近年では、主に複合機又は融合機と呼ばれる画像形成装置において、当該画像形成装置の機能を利用させるためのＡＰＩ（Application Program Interface）を備え、当該ＡＰＩを用いて開発されたアプリケーションを実行可能なものが存在する（例えば、特許文献１）。
【０００３】
一般的に、画像形成装置の機能はその機種に応じて異なる。斯かる機能の相違がＡＰＩにそのまま反映されてしまっては、アプリケーションの開発ベンダーは、機種ごとにアプリケーションを開発しなければならない。そこで、ＡＰＩにおいて画像形成装置の機能を抽象化して表現することにより、ＡＰＩの機種に対する依存度を低下させることができ、ひいては、当該ＡＰＩを用いて開発されたアプリケーションの複数の機種への展開を容易にすることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら。機能の相違がＡＰＩによって吸収されたとしても、機種に応じてメモリリソースやＣＰＵの性能が違ったり、また、同じ機種であってもインストールされているアプリケーションの数や増設メモリの有無の相違があったりといったように、機能とは別に実行環境に関する相違が存在する。
【０００５】
そこで、ＡＰＩを介して呼び出される側（以下「サービスモジュール」という。）には、組み込み系という限られたリソースの中で最大限のパフォーマンスを実現するために実際の実行環境に対応したロジックの実装が求められる。パフォーマンスを上げるために、想定されるさまざまな実行環境に対応するロジックを同一のサービスモジュール内に実装することが考えられるが以下の点が問題となる。
【０００６】
第一に、サービスモジュールのプログラムサイズが肥大化し、メモリ（ＲＡＭ）上へのロード時の消費メモリが増大してしまう。
【０００７】
第二に、実際には利用しないワーク領域（ヒープ領域等）をメモリ上に確保してしまい、メモリの消費量を増大させてしまう可能性が高くなる。
【０００８】
いずれについても、汎用的なコンピュータに比べてメモリの制限が厳しい組み込み系の画像形成装置にとっては、重大な問題である。したがって、同じＡＰＩによって同じ機能を提供する複数のサービスモジュールが、実行環境に応じて提供されることが望ましい。但し、いずれのサービスモジュールがその画像形成装置の実行環境に適しているのかを操作者に選択させるのは、画像形成装置の操作性を劣化させ好ましくない。
【０００９】
本発明は、上記の点に鑑みてなされたものであって、アプリケーションが利用する機能を提供するソフトウェアモジュールが複数存在する場合に、適切なソフトウェアモジュールをアプリケーションに利用させることができる電子機器、情報処理方法、及び情報処理プログラムの提供を目的とする。
【課題を解決するための手段】
【００１０】
そこで上記課題を解決するため、本発明は、アプリケーションを実行可能な電子機器であって、前記アプリケーションに対して当該電子機器の機能を利用させるためのインタフェースを提供する複数のインタフェース提供手段と、記憶装置に記録されている、前記アプリケーションによるインタフェースの利用に関する情報に基づいて、前記アプリケーションに利用させる前記インタフェース提供手段を、同一のインタフェースを提供する前記インタフェース提供手段の中から選択する選択手段とを有し、前記複数のインタフェース提供手段のうちの第一のインタフェース提供手段は、他のインタフェース提供手段の一部のインタフェースを有し、前記選択手段は、前記情報に基づいて、前記アプリケーションによって利用されるインタフェースが、前記第一のインタフェース提供手段が有するインタフェースによって満たされると判断した場合には、前記第一のインタフェース提供手段を選択することを特徴とする。
【００１１】
このような電子機器では、アプリケーションが利用する機能を提供するソフトウェアモジュールが複数存在する場合に、適切なソフトウェアモジュールをアプリケーションに利用させることができる。
【発明の効果】
【００１２】
本発明によれば、アプリケーションが利用する機能を提供するソフトウェアモジュールが複数存在する場合に、適切なソフトウェアモジュールをアプリケーションに利用させることができる電子機器、情報処理方法、及び情報処理プログラムを提供することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態における画像形成装置のハードウェア構成例を示す図である。
【図２】本発明の実施の形態における画像形成装置のソフトウェア構成例を示す図である。
【図３】提供機能情報の構成例を示す図である。
【図４】実行条件情報の構成例を示す図である。
【図５】コネクションマネージャの機能を説明するための図である。
【図６】本発明の実施の形態における画像形成装置の処理手順を説明するための図である。
【図７】コネクションマネージャによるサービスモジュールの選択処理を説明するためのフローチャートである。
【図８】コネクションマネージャによるサービスモジュールの選択処理を説明するための第二のフローチャートである。
【図９】コネクションマネージャによるメモリ不足時の処理を説明するためのフローチャートである。
【図１０】サービスモジュール情報の第一の例を示す図である。
【図１１】サービスモジュール情報の第二の例を示す図である。
【図１２】サービスモジュール情報の第三の例を示す図である。
【図１３】利用機能情報の第二の例を示す図である。
【図１４】外部サーバによってサービスモジュールの選択処理が実行される場合の処理手順を示すシーケンス図である。
【発明を実施するための形態】
【００１４】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態における画像形成装置のハードウェア構成例を示す図である。図１において、画像形成装置１０は電子機器の一例であり、コントローラ１０１、スキャナ１０６、プリンタ１０７、モデム１０８、ネットワークインタフェース１０９、及び操作パネル１１０等のハードウェアを有する。
【００１５】
コントローラ１０１は、ＣＰＵ１０２、ＲＡＭ１０３、ＲＯＭ１０４、及びＨＤＤ１０５等より構成される。ＲＯＭ１０４には、各種のプログラムやプログラムによって利用されるデータ等が記録されている。ＲＡＭ１０３は、プログラムをロードするための記憶領域や、ロードされたプログラムのワーク領域等として用いられる。ＣＰＵ１０２は、ＲＡＭ１０３にロードされたプログラムを処理することにより、後述される機能を実現する。ＨＤＤ（Hard Disk Drive）１０５は、画像データ等、プログラムの実行により生成されるデータを保存するための記憶領域として用いられる。ＨＤＤ１０５には、また、インストール及びアンインストール可能なプログラムやプログラムによって利用されるデータ等が保存される。
【００１６】
スキャナ１０６は、原稿より画像データを読み取るためのハードウェアである。プリンタは１３、画像データを印刷用紙に印刷するためのハードウェアである。モデム１０８は、電話回線に接続するためのハードウェアであり、ＦＡＸ通信による画像データの送受信を実行するために用いられる。ネットワークインタフェース１０９は、ＬＡＮ（Local Area Network）等のネットワーク（有線又は無線の別は問わない。）に接続するためのハードウェアである。操作パネル１１０は、ユーザからの入力の受け付けや、ユーザに対する情報の通知等を行うめのボタン、液晶パネル等を備えたハードウェアである。
【００１７】
図２は、本発明の実施の形態における画像形成装置のソフトウェア構成例を示す図である。図２において、画像形成装置１０は、ＯＳＧｉプラットフォーム１１、サービスモジュール１２、コネクションマネージャ１３、及びアプリケーションモジュール１４等のソフトウェア（プログラム）を有する。これらのソフトウェアは、ＣＰＵ１０２によって処理されることにより画像形成装置１０にその機能を実行させる。
【００１８】
ＯＳＧｉ（Open Service Gateway initiative）プラットフォーム１１は、ＯＳＧｉアライアンスによる標準化技術であり、Ｊａｖａ（登録商標）言語に基づいたオープンなソフトウェア部品化技術に基づいて作成されたソフトウェア部品（ソフトウェアモジュール）の実行環境を提供するソフトウェアプラットフォームである。ＯＳＧｉプラットフォーム１１上において、Ｊａｖａ（登録商標）言語のソフトウェアは「バンドル」と言うソフトウェア部品の形で実装される。一つのバンドルは、一つのＪＡＲファイルによって構成され、それぞれ独立してインストール可能である。
【００１９】
サービスモジュール１２は、画像形成装置１０の機能を抽象化したインタフェース(ＡＰＩ（Application Program Interface）)を提供し、当該インタフェースの呼び出しに応じて、当該機能を実行するといったサービスを提供するバンドルである。サービスモジュール１２のインスタンス（実体）は、提供するサービスの内容、サービスのバージョン、適した実行環境（画像形成装置１０の性能等）等に応じて複数存在する。例えば、インタフェース及びサービスの内容が重複又は共通するサービスモジュール１２が複数存在し得る。各サービスモジュール１２には、提供機能情報ファイル１２１及び実行条件ファイル１２２が添付されている（関連づけられている）。
【００２０】
提供機能情報ファイル１２１は、当該サービスモジュール１２が提供する機能を識別するための情報（提供機能情報）が格納されたファイルである。図３は、提供機能情報の構成例を示す図である。
【００２１】
図３において、機能提供情報は、大分類、中分類、及び小分類といったように階層的に構成されている。大分類には、例えば、スキャン、印刷、又はＦＡＸ等、最も大きな単位で分類された機能の中で、当該サービスモジュール１２が提供する機能の名前（識別情報）が指定される。中分類には、カラー対応の有無、又は対応可能な用紙サイズ等、大分類における機能の属性として位置付けられる機能において、当該サービスモジュール１２が提供する機能の名前（識別情報）が指定される。中分類に指定可能な項目（機能）は、大分類に指定された値に応じて異なり得る。小分類には、解像度、両面印刷の可否等、大分類における機能のより詳細な属性として位置付けられる機能において、当該サービスモジュール１２が提供する機能の名前（識別情報）が指定される。小分類に指定可能な項目（機能）は、大分類又は中分類に指定された値に応じて異なり得る。
【００２２】
実行条件ファイル１２２は、サービスモジュール１２の実行条件を示す情報（実行条件情報）が格納されたファイルである。図４は、実行条件情報の構成例を示す図である。
【００２３】
図４において、実行条件情報は、メモリ空き容量、同時に実行されることが予想されるサービス、ＣＰＵの性能、速度優先又はメモリ節約優先の別、及び置換対象のサービスモジュール等より構成される。
【００２４】
メモリ空き容量には、当該サービスモジュール１２を実行するために必要な又は推奨されるメモリの空き容量が指定される。同時に実行されることが予想されるサービスには、当該サービスモジュール１２と同時に（並列して）実行される可能性の高いサービスモジュール１２の名前又はＩＤが指定される。ＣＰＵの性能は、当該サービスモジュール１２を実行する際に望ましい（例えば、最低限必要とされる又は推奨される）ＣＰＵの性能（クロック数等）が指定される。速度優先又はメモリ節約優先の別は、当該サービスモジュール１２が、速度優先で作成されているか又はメモリ節約優先で作成されているかを識別するための情報が指定される。例えば、スキャン結果の圧縮画像の展開、編集、及び再圧縮を行うようなサービスモジュール１２において、速度を優先させる場合は、ワークメモリを多量に確保し、1ページ分の画像を一括して処理する方式となる。一方、メモリ節約優先の場合は、1ページの画像を分割して処理する方式が望ましい。このように、速度を優先させるか又はメモリ節約を優先させるかによって、同じ機能を提供するサービスモジュール１２であってもそのロジック（実体）は異なり得る。当該項目（速度優先又はメモリ節約優先の別）は、係る事情を考慮したものである。置換対象のサービスモジュールは、当該サービスモジュール１２がインストールされた場合、強制的に当該サービスモジュール１２によって置換される既存のサービスモジュール１２の名前又はＩＤが指定される。
【００２５】
ところで、提供機能情報ファイル１２１及び実行条件ファイル１２２は、サービスモジュール１２のインストールに伴ってＨＤＤ１０５に保存される。すなわち、提供機能情報ファイル１２１及び実行条件ファイル１２２は、サービスモジュール１２の作成時等に作成され、サービスモジュール１２に添付される。本実施の形態において、提供機能情報ファイル１２１及び実行条件ファイル１２２のファイル名は、当該サービスモジュール１２に割り当てられた固有のＩＤ（以下、「サービスＩＤ」）を含むように構成されていることとする。すなわち、ファイル名に基づいて対応するサービスモジュール１２が識別可能であるとする。サービスモジュール１２とサービスＩＤとの関連付けは、別途ＨＤＤ１０５に記録されている。
【００２６】
なお、提供機能情報や実行条件情報の記述形式は、所定の形式に限定されない。例えば、ＸＭＬ（eXtensible Markup Language）によって記述されてもよい。
【００２７】
図２に戻る。アプリケーションモジュール１４は、ユーザに直接利用されるアプリケーションを構成するバンドルである。アプリケーションモジュール１４は、サービスモジュール１２が提供するインタフェースを介して画像形成装置１０の機能を利用することにより、ユーザからの要求を実現する。アプリケーションモジュール１４のインスタンスは、アプリケーションの種類に応じて複数存在し得る。
【００２８】
各アプリケーションモジュール１４には、利用機能情報ファイル１４１が添付されている（関連づけられている）。利用機能情報ファイル１４１は、当該アプリケーションモジュール１４が、利用する機能を識別するための情報（利用機能情報）が格納されたファイルである。利用機能情報は、上述した提供機能情報と同様の構成によって（提供機能情報と対応するように）定義される。したがって、本実施の形態において利用機能情報の構成例は、図３のようになる。但し、通常、提供機能情報は、大分類において一つの機能が指定されている（すなわち、通常、一つのサービスモジュール１２は、大分類における一つの機能を提供する）のに対し、利用機能情報は、大分類において複数の機能が指定され得る（すなわち、一つのアプリケーションモジュール１４は、大分類における機能を複数利用し得る）。複数の大分類が指定された場合、大分類ごとに中分類が指定され、大分類又は中分類ごとに小分類が指定される。
【００２９】
コネクションマネージャ１３は、アプリケーションモジュール１４がサービスモジュール１２を利用する際に、提供機能情報ファイル１２１、実行条件ファイル１２２、及び利用機能情報ファイル１４１等に基づいて当該アプリケーションモジュール１４や当該画像形成装置１０に係る実行環境に適したサービスモジュール１２を選択し、選択されたサービスモジュール１２をアプリケーションモジュール１４に利用させるための処理を行う。より具体的には、アプリケーションモジュール１４が利用したい機能に係るサービスモジュール１２が複数存在する場合、コネクションマネージャ１３によって複数のサービスモジュール１２の中から適切なサービスモジュール１２が選択される。
【００３０】
図５は、コネクションマネージャの機能を説明するための図である。図５において、アプリケーションモジュール１４ａは、スキャン機能と印刷機能を利用するアプリケーションモジュール１４であり、スキャン機能利用要求ｒ１（スキャン機能を利用するためのサービスモジュール１２のインタフェースの呼び出し）と印刷機能利用要求ｒ２（印刷機能を利用するためのサービスモジュール１２のインタフェースの呼び出し）を発行する。
【００３１】
図中では、コネクションマネージャが、スキャン機能利用要求ｒ１に対してスキャンサービスＡ１２ａ又はスキャンサービスＢ１２ｂを選択し、印刷機能利用要求ｒ２に対して印刷サービスＣ１２ｃ又は印刷サービスＤ１２ｄを選択する様子が示されている。なお、スキャンサービスＡ１２ａ及びスキャンサービスＢ１２ｂは、それぞれ同一のインタフェースによってスキャン機能を提供するサービスモジュール１２である。また、印刷サービスＣ１２ｃ及び印刷サービスＤ１２ｄは、それぞれ同一のインタフェースによって印刷機能を提供するサービスモジュール１２である。
【００３２】
以下、画像形成装置１０の処理手順について説明する。図６は、本発明の実施の形態における画像形成装置の処理手順を説明するための図である。図６中、図５と同一部分には同一符号を付している。
【００３３】
各サービスモジュール１２は、予め（例えば、インストール時等）、当該サービスモジュール１２の提供機能情報ファイル１２１に格納されている機能提供情報及び実行条件ファイル１２２に格納されている実行条件情報をコネクションマネージャ１５に登録しておく（Ｓ１１〜Ｓ１４）。ここで、登録とは、コネクションマネージャ１５が、提供機能情報及び実行条件情報を利用可能な状態にすることをいう。例えば、コネクションマネージャ１５に、それぞれのファイル名を通知するようにしてよい。コネクションマネージャ１５は、当該ファイル名に基づいて、提供機能情報及び実行条件情報を取得し、利用することができるからである。また、各サービスモジュール１２の提供機能情報ファイル１２１及び実行条件ファイル１２２が保存される場所（例えば、フォルダ）をコネクションマネージャ１５が予め認識している場合、当該場所に提供機能情報ファイル１２１及び実行条件ファイル１２２を保存する処理によってステップＳ１１〜１４の処理を代替させてもよい。すなわち、コネクションマネージャ１５は、能動的に当該場所より提供機能情報ファイル１２１及び実行条件ファイル１２２を取得することができるからである。
【００３４】
例えば、操作パネル１１０を介した入力により、アプリケーションモジュール１４ａの実行が要求されると（Ｓ１５）、アプリケーションモジュール１４ａは、添付されている利用機能情報ファイル１４１の保存位置（ファイル名）又は当該利用機能情報ファイル１４１に格納されている利用機能情報をコネクションマネージャ１３に通知する。ここで、アプリケーションモジュール１４ａの利用機能情報には、大分類に係る利用機能としてスキャン機能と印刷機能とが含まれているとする。したがって、当該通知は、大分類におけるスキャン機能の利用要求（Ｓ１６）と、印刷サービスの利用要求（Ｓ１７）とに相当する。
【００３５】
コネクションマネージャ１５は、アプリケーションモジュール１４ａの利用機能情報と、各サービスモジュール１２の提供機能情報及び実行条件情報とに基づいて、スキャン機能に関してスキャンサービスＡ１２ａ又はスキャンサービスＢ１２ｂのいずれか一方をロード対象（利用対象）として選択し、また、印刷機能に関して印刷サービスＣ１２ｃ又は印刷サービスＤ１２ｄのいずれか一方をロード対象として選択する。選択されたサービスモジュール１２は、ＲＡＭ１０３にロードされ、その後、アプリケーションモジュール１４ａからの各種のメソッド呼び出しに応じて処理を実行する。
【００３６】
続いて、コネクションマネージャ１５による、利用対象とするサービスモジュールの１２の選択処理について詳細に説明する。図７は、コネクションマネージャによるサービスモジュールの選択処理を説明するためのフローチャートである。
【００３７】
アプリケーションモジュール１４より利用機能情報を受け付けると（Ｓ１０１）、利用機能情報における一つの大分類を処理対象とする（Ｓ１０２）。続いて、当該大分類に係る利用機能情報（当該大分類によって示される機能、当該大分類に属する中分類によって示される機能、及び当該大分類に属する小分類によって示される機能）と、各サービスモジュール１２の提供機能情報とを比較（照合）することにより、当該大分類に係る利用機能情報を満たす提供機能情報に係るサービスモジュール１２（すなわち、当該大分類に属する機能の全てを提供可能なサービスモジュール１２）を検索する（Ｓ１０３）。なお、利用機能情報を満たす提供機能情報とは、大分類、中分類、小分類のすべての階層において、利用機能情報に指定されている機能を包含（完全一致も含む）するものをいう。
【００３８】
続いて、検索されたサービスモジュール１２は一つであるか否かを判定する（Ｓ１０４）。検索結果が一つである場合（Ｓ１０４でＹｅｓ）、検索されたサービスモジュール１２を利用対象としてＲＡＭ１０３上にロード（展開）させる（Ｓ１０５）。
【００３９】
一方、検索結果が複数である場合（Ｓ１０４でＮｏ）、現在の実行環境（空きメモリ容量、ＣＰＵの性能を示す情報）と、検索された各サービスモジュール１２の実行条件情報（空きメモリ容量、ＣＰＵの性能）とを比較（照合）することにより、検索された中で現在の実行環境に最も適したサービスモジュール１２を選択する（Ｓ１０６）。
【００４０】
なお、他のサービスモジュール１２の実行条件情報の置換対象となるサービスモジュールに関する項目においてそのサービスＩＤが登録されているサービスモジュール１２については、選択の対象から除外される。仮に選択されたとしても、当該サービスモジュール１２は、当該他のサービスモジュール１２によって置き換えられるべきものだからである。したがって、古いサービスモジュール１２が明示的にアンインストールされなくても、新しいサービスモジュール１２が自動的に利用対象とされる。
【００４１】
また、実行条件情報における速度優先又はメモリ節約優先に関する項目については、空きメモリ容量が所定値より少ない場合はメモリ節約優先のものを選択対象として優先し、当該所定値以上の場合は速度優先のものを選択対象として優先するための基準として用いられる。但し、アプリケーションモジュール１４より速度優先又はメモリ節約優先がコネクションマネージャ１５に対して明示的に指定されている場合、アプリケーションモジュール１４による指定に基づいて、当該項目との比較が行われる。
【００４２】
続いて、選択されたサービスモジュールを利用対象としてＲＡＭ１０３上にロードさせる（Ｓ１０６）。上記ステップＳ１０２からＳ１０７の処理が利用機能情報に含まれる全ての大分類について完了すると（Ｓ１０８でＹｅｓ）処理は終了する。
【００４３】
なお、図７の代わりに、図８に示される処理が実行されてもよい。図８は、コネクションマネージャによるサービスモジュールの選択処理を説明するための第二のフローチャートである。図８中、図７と同一ステップには同一符号を付し、その説明は省略する。
【００４４】
図８では、図７におけるステップＳ１０６がステップＳ１０６ａに置き換えられている。ステップＳ１０６ａにおいて、コネクションマネージャ１５は、実行条件情報においてメモリ節約優先であることが示されているサービスモジュール１２を優先的に選択する。
または、検索された各サービスモジュール１２の実行条件情報における空きメモリ容量を比較することにより、検索された中で最もメモリ空き容量の値が小さいもの（すなわち、実行するために必要な又は推奨されるメモリの空き容量が小さいもの）を利用対象として選択してもよい。
【００４５】
図８では、また、破線によって囲まれたステップＳ１１１以降の処理がステップＳ１０８の後に追加されている。なお、図８では、図７におけるステップＳ１０７は削除されている。したがって、ステップＳ１１１の開始時点においては、いずれのサービスモジュール１２もＲＡＭ１０３上にはロードされていない。
【００４６】
ステップＳ１１１において、コネクションマネージャ１５は、ステップＳ１０８までの処理において利用対象として選択された全てのサービスモジュール１２の実行条件情報のメモリ空き容量の合計値を算出する。続いて、現在の実行環境におけるメモリの空き容量と、ステップＳ１１１において算出された合計値との差分（現在のメモリの空き容量−必要なメモリの空き容量の合計値）を算出する（Ｓ１１２）。続いて、当該差分と閾値とを比較する（Ｓ１１３）。当該差分が閾値より大きい場合（Ｓ１１３でＹｅｓ）、アプリケーションモジュール１４より速度優先である旨が指定されているか否かを判定する（Ｓ１１４）。速度優先である旨が指定されている場合（Ｓ１１４でＹｅｓ）、速度優先のサービスモジュール１２が存在する機能については、現在のメモリの空き容量の許容範囲内において、速度優先のサービスモジュール１２によって利用対象を置換する。すなわち、既に選択されているサービスモジュール１２を利用対象から除外し、速度優先のサービスモジュール１２を利用対象として選択する。なお、現在のメモリの空き容量の許容範囲内であるかは、既に選択されているサービスモジュール１２について順番に速度優先のものと置換する過程において、置換前に速度優先のサービスモジュール１２の実行条件情報におけるメモリ空き容量と現在の実行環境におけるメモリ空き容量とを比較すればよい。
【００４７】
置換が完了すると、この時点で利用対象として選択されている全てのサービスモジュール１２をＲＡＭ１０３上にロードさせる。
【００４８】
一方、ステップＳ１１３において、差分が閾値以下の場合（Ｓ１１３でＮｏ）、コネクションマネージャ１５は、メモリ不足時の処理を実行する（Ｓ１１７）。
【００４９】
図９は、コネクションマネージャによるメモリ不足時の処理を説明するためのフローチャートである。
【００５０】
ステップＳ２０１において、利用対象として選択されている各サービスモジュール１２の実行条件情報における「同時に利用されることが予想されるサービスモジュール」を参照し（Ｓ２０１）、同時に利用されることが予想されるものごとにサービスモジュール１２をグループ分けする（Ｓ２０２）。ここで「同時に」とは、「ほぼ同じタイミングで」又は「並列的に」ということを意味する。なお、同時に利用されることが予想されるサービスモジュールは、アプリケーションモジュール１４がコネクションマネージャ１５に通知するようにしてもよい（例えば、利用機能情報の一部として含まれていても良よい）。この場合、「同時に利用されることが予想されるサービスモジュール」は実行条件情報に含まれていなくてもよい。
【００５１】
続いて、グループごとに、各サービスモジュール１２の実行条件情報におけるメモリ空き容量の合計値を算出する（Ｓ２０３）。続いて、グループごとに算出された合計値を比較することにより、その中の最大値を判定する（Ｓ２０４）。
【００５２】
続いて、現在の実行環境におけるメモリの空き容量と、ステップＳ２０４において算出された最大値との差分（現在のメモリの空き容量−最大値）を算出する（Ｓ２０５）。続いて、当該差分と閾値とを比較する（Ｓ２０６）。当該差分が閾値より大きい場合（Ｓ２０６でＹｅｓ）、アプリケーションモジュール１４の処理の進行状況に応じて、グループごとにサービスモジュール１２のＲＡＭ１０３上へのロード及びアンロードを行う（Ｓ２０７）。
【００５３】
具体的には、コネクションマネージャ１５は、アプリケーションモジュール１４より利用要求が発行されたタイミングで、当該利用要求に係る機能に対応するサービスモジュール１２及び当該サービスモジュール１２と同じグループに属するサービスモジュール１２をＲＡＭ１０３にロードする。ロードされた各サービスモジュール１２は自分の実行する処理が終了し、アンロードが可能なタイミングになったら終了通知をコネクションマネージャ１５に通知する。コネクションマネージャ１５は、同じグループに属する全てのサービスモジュール１２より終了通知を受けたタイミングで、当該グループに属する全てのサービスモジュール１２をアンロードする。このような処理を繰り返すことにより、一度に消費されるメモリ量を削減しつつ、アプリケーションモジュール１４の実行を可能とすることができる。なお、アンロードされたサービスモジュール１２は、アプリケーションモジュール１４より再度利用要求が発行された際に必要に応じてロードされる。
【００５４】
一方、ステップ２０６において、差分が閾値以下の場合（Ｓ２０６でＮｏ）、コネクションマネージャ１５は、当該アプリケーションモジュール１４は実行不可能であると判定する。
【００５５】
ところで、図８のステップＳ１１３及び図９のステップＳ２０６において使用される閾値は、サービスモジュール１２のメモリの使用量に対して必要とされるマージン又は余裕値としての意味を持つ。なお、当該閾値は常に一定でなくてもよい。すなわち、実際にアプリケーションモジュール１４を実行する場合は、サービスモジュール１２が使用するメモリの他にアプリケーションモジュール１４自身が使用するメモリがある。したがって、サービスモジュール１２の選択処理においては、アプリケーションモジュール１４が使用するメモリ量も考慮されることが望ましい。但し、アプリケーションモジュール１４が使用するメモリ量はアプリケーションモジュール１４の仕様に依存すると共に、実際の使用状況にも左右される。具体的には、同じアプリケーションモジュール１４でもＡ３の原稿を６００ｄｐｉでスキャンする場合と、Ａ４原稿を２００ｄｐｉでスキャンする場合とではメモリの消費量が異なる。したがって、一義的な閾値ではアプリケーションモジュール１４のパフォーマンスが十分に発揮できない場合が発生する可能性がある。
【００５６】
そこで、斯かる問題を解決するため、アプリケーションモジュール１４の実行中に、コネクションマネージャ１５がメモリの空き容量の計測を常時行い、当該閾値を動的に更新するようにしてもよい。また、閾値の更新は、当該閾値を用いるタイミングであってもよい。この場合、メモリの空き容量の計測を常時行わなくてもよく、当該閾値を用いるタイミングにおける空き容量に基づいて当該閾値を更新すればよい。
【００５７】
当該閾値を動的に更新可能とすることで、コネクションマネージャ１５によって実行可能であると判断されたにも拘わらず、万が一メモリ不足のエラーが発生した場合に当該閾値の値を大きくすることができる。そうすることで、アプリケーションモジュール１４の動作用のメモリのマージンを大きくし、再度のメモリ不足のエラーの発生を抑止することができる。
【００５８】
なお、既に一つ以上のアプリケーションモジュール１４が実行中である状態において、他のアプリケーションモジュール１４の起動が要求された場合、既に実行中のアプリケーションモジュール１４（以下「実行中アプリ」という。）についても、新たに起動されるアプリケーションモジュール１４（以下「新規起動アプリ」という。）によるリソース（メモリ等）の消費等を考慮して、改めて図７による処理を実行し、利用対象とするサービスモジュール１２を動的に変更するようにしてもよい。具体的には、コネクションマネージャ１３が、新規起動アプリに対するサービスモジュール１２の検索中にいずれのサービスモジュール１２によってもメモリの空き容量が不足していることが判定された場合に、よりメモリ消費量の少ない（すなわち、実行条件情報においてメモリ空き容量の値が小さい）サービスモジュール１２や実行条件情報においてメモリ節約優先が指定されているサービスモジュール１２であって、実行中アプリの利用機能の全てを満たすことのできるサービスモジュール１２を、新たに実行中アプリの利用対象とすればよい。そうすることにより、複数のアプリケーションモジュール１２を効率的に実行させることができる。
【００５９】
ところで、機能提供情報及び実行条件情報、並びに利用機能情報は、上記において説明した形式（図３、図４等）に限られない。例えば、機能提供情報及び実行条件情報が一つの情報として（以下、斯かる情報を「サービスモジュール情報」という。）、以下の形式によって同じファイル内に格納されていてもよい。
【００６０】
図１０は、サービスモジュール情報の第一の例を示す図である。同図において、サービスモジュール情報は、サービスＩＤ、機能提供情報、及び実行条件情報を含む。機能提供情報は、種類及び属性より構成される。種類は機能の種類を示し、図３の例における大分類に対応する。属性は、図３の例における中分類又は小分類に対応し、その構成は種類に応じて異なる。図１０のサービスモジュール情報は、スキャン機能に対応するため、種類には「スキャン」が指定されている。また、属性は、スキャンにおける設定情報によって構成されている。
【００６１】
一方、実行条件情報は、使用メモリ及びパフォーマンスより構成される。使用メモリは、図４の例におけるメモリ空き容量に対応する。パフォーマンスは、当該機能（スキャン機能）の性能を示す指標であり、その単位は機能に応じて異なりうる。スキャン機能の場合は、１秒あたりのスキャン枚数が単位とされている。
【００６２】
同じスキャン機能について、属性及び性能が異なるサービスモジュール１２に対するサービスモジュール情報は、例えば、次のようになる。図１１は、サービスモジュール情報の第二の例を示す図である。同図のサービスモジュール情報は、図１０と同様スキャン機能に係るサービスモジュール１２に対するものであるが、図１０のサービス情報と比較して属性の値及び実行条件情報の値が異なる。
【００６３】
また、異なる機能（例えば、印刷機能）に対するサービスモジュールは、例えば、次のようになる。図１２は、サービスモジュール情報の第三の例を示す図である。同図のサービスモジュール情報は、種類が「印刷」である。また、属性は印刷機能に対応した構成となっている。
【００６４】
上記のサービスモジュール情報に対応させて、アプリケーションモジュール１４に関連付けられている利用機能情報は次のような構成にしてもよい。図１３は、利用機能情報の第二の例を示す図である。
【００６５】
同図において、利用機能情報には、利用機能の一覧、利用機能ごとに属性項目の一覧、及び属性項目ごとに利用属性値が設定されている。利用機能の一覧によって、当該アプリケーションモジュール１４が利用する機能の種類が示されている。利用属性値によって、当該アプリケーションモジュール１４が利用する属性値が示されている。
【００６６】
機能提供情報、実行条件情報、及び利用機能情報の構成が、図１０〜図１３に示されるように変更された場合であっても、処理手順は特に変更しなくてもよい。すなわち、図８又は図９のステップＳ１０２において、大分類ごとのループ処理は、図１３の利用機能情報における利用機能ごとのループ処理とすればよい。また、ステップＳ１０３では、図１３の利用機能情報に指定されている利用機能及び利用属性値に対応可能なサービスモジュール１２を、図１０等に示されるサービスモジュール情報の機能情報の種類及び属性に基づいて判定すればよい。また、図４における「メモリ空き容量」を使用しているステップでは、図１０等における「使用メモリ」を利用すればよい。更に、図４における「速度優先」を使用しているステップでは、図１０等における「パフォーマンス」を使用すればよい。
【００６７】
例えば、図１０〜図１３を利用して図８の処理が実行される場合、アプリケーションモジュール１４が要求しているスキャン機能（図１３）を満足するサービスモジュールは、ＩＤ＝０ｘ０００１０００１（図１０）とＩＤ＝０ｘ０００１０００２（図１１）のサービスモジュール１２であるが（Ｓ１０３）、ステップＳ１０４では、メモリ使用量が少ないＩＤ＝０ｘ０００１０００２のサービスモジュール１２が選択される。但し、メモリに余裕があり、ステップＳ１１５の処理が実行される場合、パフォーマンスの良いＩＤ＝０ｘ０００１０００１のサービスモジュール１２が最終的に利用対象として選択される。
【００６８】
上述したように、本実施の形態における画像形成装置１０によれば、アプリケーションモジュール１４に開示するインタフェースは同一であるが、想定される実行環境に特化した複数のサービスモジュール１２を提供し、アプリケーションモジュール１４からの要求とサービスモジュール１２が提供する機能、及び実行環境の状況を判断することにより、適切なサービスモジュール１２をアプリケーションモジュール１４に関連付けける（利用させる）ことができる。この場合、利用されないサービスモジュール１２については、メモリ（ＲＡＭ１０３）上にロードされないため、メモリの消費量を低減させることができる。
【００６９】
また、セキュリティの観点からアプリケーションモジュール１４のログを取得する必要が後から生じた場合に、ログを出力するようなサービスモジュール１２に置き換えることで、アプリケーションモジュール１４を変更することなくログの出力が可能となる。
【００７０】
なお、サービスモジュール１２を選択するための判断基準として、サービスモジュール１２が提供している機能の実際の利用状況を用いるようにしてもよい。具体的には、サービスモジュール１２側は自分が提供する機能において実際にアプリケーションモジュール１４から利用された機能（メソッド）の利用回数等を判定可能なログ（以下「利用状況ログ」という。）をＨＤＤ１０５等に記録しておく。利用状況ログに記録される情報としては、例えば、単純な利用回数の合計値でもよいし、時間軸を考慮した一定期間の平均値等であってもよい。
【００７１】
すなわち、特定の機種やアプリケーションモジュール１４で、サービスモジュール１２が提供している全ての機能を利用する可能性が非常に少ない場合に、多機能のサービスモジュール１２をインストールしていることは、メモリリソースを無駄に使用していることになる。特定機能のみを実装した標準版のサービスモジュール１２のサブセット版に相当するサービスモジュール１２を実装し、その機能提供情報等をコネクションマネージャ１５に登録することで、コネクションマネージャ１５が利用状況ログに基づいてサービスモジュール１２のメソッドの利用状況を判断しサブセット版で十分であると判断した場合（すなわち、サブセット版の提供機能情報に係る機能が、利用状況ログに基づいて導出される利用機能を満たす場合）、サブセット版への置換を行う。置換された標準的なサービスモジュール１２（フルセット版）は、ＲＡＭ１０３上には展開されないが、ＲＯＭ１０３上又はＨＤＤ１０５には存在するので、万が一アプリケーションモジュール１４がサブセット版に無い機能を利用する場合は、その時点で再度置換すればよい。
【００７２】
なお、利用対象とするサービスモジュール１２の選択処理は、画像形成装置１０とネットワークを介して接続する外部のコンピュータ（外部サーバ）によって行われてもよい。
【００７３】
図１４は、外部サーバによってサービスモジュールの選択処理が実行される場合の処理手順を示すシーケンス図である。同図において、外部サーバ２０は、図７、又は図８及び図９の処理を実行するプログラムを有する（ＨＤＤ等に記録されている）。また、各種サービスモジュール１２の機能提供情報及び実行条件情報、並びに実体（プログラム）を有する（ＨＤＤ等に記録されている）。
【００７４】
コネクションマネージャ１５は、アプリケーションモジュール１４より利用機能情報を受け付けると（Ｓ３０１）、外部サーバ１０に対して、サービスモジュール１２の選択処理に必要な情報（画像形成装置１０のハードウェア資源（ＣＰＵ、メモリ等）に関する情報（機器情報）、現在の画像形成装置１０における実行環境の情報（メモリの空き容量等）、既にロードされているサービスモジュール１２のサービスＩＤ等）を外部サーバ２０に転送する（Ｓ３０２）。また、コネクションマネージャ１５は、当該利用機能情報を外部サーバ２０に転送する（Ｓ３０３）。
【００７５】
外部サーバ２０は、転送された情報に基づいて、サービスモジュール１２の選択処理（図７、又は図８及び図９の処理）を実行する（Ｓ３０４）。続いて、外部サーバ２０は、利用対象とするサービスモジュール１２のサービスＩＤをコネクションマネージャ１５に返信する（Ｓ３０５）。なお、外部サーバ２０は、既にロードされているサービスモジュール１２の中で、新たに利用対象とされるサービスモジュール１２のロードにより不要となるものがあれば、そのサービスモジュール１２のサービスＩＤも返信する。続いて、外部サーバ２０は、利用対象として選択されたサービスモジュール１２の実体をコネクションマネージャ１５に返信する（Ｓ３０６）。コネクションマネージャ１５は、返信されたサービスモジュール１２の実体を、画像形成装置１０にインストールし、ＨＤＤ１０５に保存する。
【００７６】
続いて、コネクションマネージャ１５は、不要なものとして通知されたサービスＩＤに係るサービスモジュール１２をアンロードし（Ｓ３０７）、利用対象として選択され、ステップＳ３０６においてその実体を受信したサービスモジュール１２をＲＡＭ１０３上にロードする（Ｓ３０８）。
【００７７】
このような構成によれば、外部サーバ２０より必要なサービスモジュール１２が随時転送されるため、画像形成装置１０には予め全てのサービスモジュール１２がインストールされている必要はない。したがって、ＨＤＤ１０５又はＲＯＭ１０４の消費量を抑制することができる。また、不具合対応等で随時更新される最新のサービスモジュール１２が使用可能になるという観点からも外部サーバ２０と連携したサービスモジュールの選択、ロードは有効である。
【００７８】
なお、コネクションマネージャ１５は、アプリケーションモジュール１４の終了後に、当該アプリケーションモジュール１４に応じて転送を受けたサービスモジュール１４の実体をＨＤＤ１０５より削除するようにしてもよい。
【００７９】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００８０】
１０        画像形成装置
１１        ＯＳＧｉプラットフォーム
１２        サービスモジュール
１３        コネクションマネージャ
１４        アプリケーションモジュール
２０        外部サーバ
１０１      コントローラ
１０２      ＣＰＵ
１０３      ＲＡＭ
１０４      ＲＯＭ
１０５      ＨＤＤ
１０６      スキャナ
１０７      プリンタ
１０８      モデム
１０９      ネットワークインタフェース
１１０      操作パネル
１２１      提供機能情報ファイル
１２２      実行条件ファイル
１４１      利用機能情報ファイル
【先行技術文献】
【特許文献】
【００８１】
【特許文献１】特開２００５−２６９６１９号公報
【図１】
0005459380.tif 000002
【図２】
0005459380.tif 000003
【図３】
0005459380.tif 000004
【図４】
0005459380.tif 000005
【図５】
0005459380.tif 000006
【図６】
0005459380.tif 000007
【図７】
0005459380.tif 000008
【図８】
0005459380.tif 000009
【図９】
0005459380.tif 000010
【図１０】
0005459380.tif 000011
【図１１】
0005459380.tif 000012
【図１２】
0005459380.tif 000013
【図１３】
0005459380.tif 000014
【図１４】
0005459380.tif 000015