説明

電子機器、情報処理方法、及び情報処理プログラム

【課題】アプリケーションが利用する機能を提供するソフトウェアモジュールが複数存在する場合に、適切なソフトウェアモジュールをアプリケーションに利用させること。
【解決手段】アプリケーションを実行可能な電子機器であって、アプリケーションに対して電子機器の機能を利用させるためのインタフェースを提供する複数のインタフェース提供手段と、アプリケーションによるインタフェースの利用に関する情報に基づいて、アプリケーションによって利用されるインタフェースが、他のインタフェース提供手段の一部のインタフェースを有する第一のインタフェース提供手によって満たされると判断した場合には、第一のインタフェース提供手段を選択する選択手段とを有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、電子機器、情報処理方法、及び情報処理プログラムに関し、特にアプリケーションを実行可能な電子機器、情報処理方法、及び情報処理プログラムに関する。
【背景技術】
【0002】
近年では、主に複合機又は融合機と呼ばれる画像形成装置において、当該画像形成装置の機能を利用させるためのAPI(Application Program Interface)を備え、当該APIを用いて開発されたアプリケーションを実行可能なものが存在する(例えば、特許文献1)。
【0003】
一般的に、画像形成装置の機能はその機種に応じて異なる。斯かる機能の相違がAPIにそのまま反映されてしまっては、アプリケーションの開発ベンダーは、機種ごとにアプリケーションを開発しなければならない。そこで、APIにおいて画像形成装置の機能を抽象化して表現することにより、APIの機種に対する依存度を低下させることができ、ひいては、当該APIを用いて開発されたアプリケーションの複数の機種への展開を容易にすることができる。
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら。機能の相違がAPIによって吸収されたとしても、機種に応じてメモリリソースやCPUの性能が違ったり、また、同じ機種であってもインストールされているアプリケーションの数や増設メモリの有無の相違があったりといったように、機能とは別に実行環境に関する相違が存在する。
【0005】
そこで、APIを介して呼び出される側(以下「サービスモジュール」という。)には、組み込み系という限られたリソースの中で最大限のパフォーマンスを実現するために実際の実行環境に対応したロジックの実装が求められる。パフォーマンスを上げるために、想定されるさまざまな実行環境に対応するロジックを同一のサービスモジュール内に実装することが考えられるが以下の点が問題となる。
【0006】
第一に、サービスモジュールのプログラムサイズが肥大化し、メモリ(RAM)上へのロード時の消費メモリが増大してしまう。
【0007】
第二に、実際には利用しないワーク領域(ヒープ領域等)をメモリ上に確保してしまい、メモリの消費量を増大させてしまう可能性が高くなる。
【0008】
いずれについても、汎用的なコンピュータに比べてメモリの制限が厳しい組み込み系の画像形成装置にとっては、重大な問題である。したがって、同じAPIによって同じ機能を提供する複数のサービスモジュールが、実行環境に応じて提供されることが望ましい。但し、いずれのサービスモジュールがその画像形成装置の実行環境に適しているのかを操作者に選択させるのは、画像形成装置の操作性を劣化させ好ましくない。
【0009】
本発明は、上記の点に鑑みてなされたものであって、アプリケーションが利用する機能を提供するソフトウェアモジュールが複数存在する場合に、適切なソフトウェアモジュールをアプリケーションに利用させることができる電子機器、情報処理方法、及び情報処理プログラムの提供を目的とする。
【課題を解決するための手段】
【0010】
そこで上記課題を解決するため、本発明は、アプリケーションを実行可能な電子機器であって、前記アプリケーションに対して当該電子機器の機能を利用させるためのインタフェースを提供する複数のインタフェース提供手段と、記憶装置に記録されている、前記アプリケーションによるインタフェースの利用に関する情報に基づいて、前記アプリケーションに利用させる前記インタフェース提供手段を、同一のインタフェースを提供する前記インタフェース提供手段の中から選択する選択手段とを有し、前記複数のインタフェース提供手段のうちの第一のインタフェース提供手段は、他のインタフェース提供手段の一部のインタフェースを有し、前記選択手段は、前記情報に基づいて、前記アプリケーションによって利用されるインタフェースが、前記第一のインタフェース提供手段が有するインタフェースによって満たされると判断した場合には、前記第一のインタフェース提供手段を選択することを特徴とする。
【0011】
このような電子機器では、アプリケーションが利用する機能を提供するソフトウェアモジュールが複数存在する場合に、適切なソフトウェアモジュールをアプリケーションに利用させることができる。
【発明の効果】
【0012】
本発明によれば、アプリケーションが利用する機能を提供するソフトウェアモジュールが複数存在する場合に、適切なソフトウェアモジュールをアプリケーションに利用させることができる電子機器、情報処理方法、及び情報処理プログラムを提供することができる。
【図面の簡単な説明】
【0013】
【図1】本発明の実施の形態における画像形成装置のハードウェア構成例を示す図である。
【図2】本発明の実施の形態における画像形成装置のソフトウェア構成例を示す図である。
【図3】提供機能情報の構成例を示す図である。
【図4】実行条件情報の構成例を示す図である。
【図5】コネクションマネージャの機能を説明するための図である。
【図6】本発明の実施の形態における画像形成装置の処理手順を説明するための図である。
【図7】コネクションマネージャによるサービスモジュールの選択処理を説明するためのフローチャートである。
【図8】コネクションマネージャによるサービスモジュールの選択処理を説明するための第二のフローチャートである。
【図9】コネクションマネージャによるメモリ不足時の処理を説明するためのフローチャートである。
【図10】サービスモジュール情報の第一の例を示す図である。
【図11】サービスモジュール情報の第二の例を示す図である。
【図12】サービスモジュール情報の第三の例を示す図である。
【図13】利用機能情報の第二の例を示す図である。
【図14】外部サーバによってサービスモジュールの選択処理が実行される場合の処理手順を示すシーケンス図である。
【発明を実施するための形態】
【0014】
以下、図面に基づいて本発明の実施の形態を説明する。図1は、本発明の実施の形態における画像形成装置のハードウェア構成例を示す図である。図1において、画像形成装置10は電子機器の一例であり、コントローラ101、スキャナ106、プリンタ107、モデム108、ネットワークインタフェース109、及び操作パネル110等のハードウェアを有する。
【0015】
コントローラ101は、CPU102、RAM103、ROM104、及びHDD105等より構成される。ROM104には、各種のプログラムやプログラムによって利用されるデータ等が記録されている。RAM103は、プログラムをロードするための記憶領域や、ロードされたプログラムのワーク領域等として用いられる。CPU102は、RAM103にロードされたプログラムを処理することにより、後述される機能を実現する。HDD(Hard Disk Drive)105は、画像データ等、プログラムの実行により生成されるデータを保存するための記憶領域として用いられる。HDD105には、また、インストール及びアンインストール可能なプログラムやプログラムによって利用されるデータ等が保存される。
【0016】
スキャナ106は、原稿より画像データを読み取るためのハードウェアである。プリンタは13、画像データを印刷用紙に印刷するためのハードウェアである。モデム108は、電話回線に接続するためのハードウェアであり、FAX通信による画像データの送受信を実行するために用いられる。ネットワークインタフェース109は、LAN(Local Area Network)等のネットワーク(有線又は無線の別は問わない。)に接続するためのハードウェアである。操作パネル110は、ユーザからの入力の受け付けや、ユーザに対する情報の通知等を行うめのボタン、液晶パネル等を備えたハードウェアである。
【0017】
図2は、本発明の実施の形態における画像形成装置のソフトウェア構成例を示す図である。図2において、画像形成装置10は、OSGiプラットフォーム11、サービスモジュール12、コネクションマネージャ13、及びアプリケーションモジュール14等のソフトウェア(プログラム)を有する。これらのソフトウェアは、CPU102によって処理されることにより画像形成装置10にその機能を実行させる。
【0018】
OSGi(Open Service Gateway initiative)プラットフォーム11は、OSGiアライアンスによる標準化技術であり、Java(登録商標)言語に基づいたオープンなソフトウェア部品化技術に基づいて作成されたソフトウェア部品(ソフトウェアモジュール)の実行環境を提供するソフトウェアプラットフォームである。OSGiプラットフォーム11上において、Java(登録商標)言語のソフトウェアは「バンドル」と言うソフトウェア部品の形で実装される。一つのバンドルは、一つのJARファイルによって構成され、それぞれ独立してインストール可能である。
【0019】
サービスモジュール12は、画像形成装置10の機能を抽象化したインタフェース(API(Application Program Interface))を提供し、当該インタフェースの呼び出しに応じて、当該機能を実行するといったサービスを提供するバンドルである。サービスモジュール12のインスタンス(実体)は、提供するサービスの内容、サービスのバージョン、適した実行環境(画像形成装置10の性能等)等に応じて複数存在する。例えば、インタフェース及びサービスの内容が重複又は共通するサービスモジュール12が複数存在し得る。各サービスモジュール12には、提供機能情報ファイル121及び実行条件ファイル122が添付されている(関連づけられている)。
【0020】
提供機能情報ファイル121は、当該サービスモジュール12が提供する機能を識別するための情報(提供機能情報)が格納されたファイルである。図3は、提供機能情報の構成例を示す図である。
【0021】
図3において、機能提供情報は、大分類、中分類、及び小分類といったように階層的に構成されている。大分類には、例えば、スキャン、印刷、又はFAX等、最も大きな単位で分類された機能の中で、当該サービスモジュール12が提供する機能の名前(識別情報)が指定される。中分類には、カラー対応の有無、又は対応可能な用紙サイズ等、大分類における機能の属性として位置付けられる機能において、当該サービスモジュール12が提供する機能の名前(識別情報)が指定される。中分類に指定可能な項目(機能)は、大分類に指定された値に応じて異なり得る。小分類には、解像度、両面印刷の可否等、大分類における機能のより詳細な属性として位置付けられる機能において、当該サービスモジュール12が提供する機能の名前(識別情報)が指定される。小分類に指定可能な項目(機能)は、大分類又は中分類に指定された値に応じて異なり得る。
【0022】
実行条件ファイル122は、サービスモジュール12の実行条件を示す情報(実行条件情報)が格納されたファイルである。図4は、実行条件情報の構成例を示す図である。
【0023】
図4において、実行条件情報は、メモリ空き容量、同時に実行されることが予想されるサービス、CPUの性能、速度優先又はメモリ節約優先の別、及び置換対象のサービスモジュール等より構成される。
【0024】
メモリ空き容量には、当該サービスモジュール12を実行するために必要な又は推奨されるメモリの空き容量が指定される。同時に実行されることが予想されるサービスには、当該サービスモジュール12と同時に(並列して)実行される可能性の高いサービスモジュール12の名前又はIDが指定される。CPUの性能は、当該サービスモジュール12を実行する際に望ましい(例えば、最低限必要とされる又は推奨される)CPUの性能(クロック数等)が指定される。速度優先又はメモリ節約優先の別は、当該サービスモジュール12が、速度優先で作成されているか又はメモリ節約優先で作成されているかを識別するための情報が指定される。例えば、スキャン結果の圧縮画像の展開、編集、及び再圧縮を行うようなサービスモジュール12において、速度を優先させる場合は、ワークメモリを多量に確保し、1ページ分の画像を一括して処理する方式となる。一方、メモリ節約優先の場合は、1ページの画像を分割して処理する方式が望ましい。このように、速度を優先させるか又はメモリ節約を優先させるかによって、同じ機能を提供するサービスモジュール12であってもそのロジック(実体)は異なり得る。当該項目(速度優先又はメモリ節約優先の別)は、係る事情を考慮したものである。置換対象のサービスモジュールは、当該サービスモジュール12がインストールされた場合、強制的に当該サービスモジュール12によって置換される既存のサービスモジュール12の名前又はIDが指定される。
【0025】
ところで、提供機能情報ファイル121及び実行条件ファイル122は、サービスモジュール12のインストールに伴ってHDD105に保存される。すなわち、提供機能情報ファイル121及び実行条件ファイル122は、サービスモジュール12の作成時等に作成され、サービスモジュール12に添付される。本実施の形態において、提供機能情報ファイル121及び実行条件ファイル122のファイル名は、当該サービスモジュール12に割り当てられた固有のID(以下、「サービスID」)を含むように構成されていることとする。すなわち、ファイル名に基づいて対応するサービスモジュール12が識別可能であるとする。サービスモジュール12とサービスIDとの関連付けは、別途HDD105に記録されている。
【0026】
なお、提供機能情報や実行条件情報の記述形式は、所定の形式に限定されない。例えば、XML(eXtensible Markup Language)によって記述されてもよい。
【0027】
図2に戻る。アプリケーションモジュール14は、ユーザに直接利用されるアプリケーションを構成するバンドルである。アプリケーションモジュール14は、サービスモジュール12が提供するインタフェースを介して画像形成装置10の機能を利用することにより、ユーザからの要求を実現する。アプリケーションモジュール14のインスタンスは、アプリケーションの種類に応じて複数存在し得る。
【0028】
各アプリケーションモジュール14には、利用機能情報ファイル141が添付されている(関連づけられている)。利用機能情報ファイル141は、当該アプリケーションモジュール14が、利用する機能を識別するための情報(利用機能情報)が格納されたファイルである。利用機能情報は、上述した提供機能情報と同様の構成によって(提供機能情報と対応するように)定義される。したがって、本実施の形態において利用機能情報の構成例は、図3のようになる。但し、通常、提供機能情報は、大分類において一つの機能が指定されている(すなわち、通常、一つのサービスモジュール12は、大分類における一つの機能を提供する)のに対し、利用機能情報は、大分類において複数の機能が指定され得る(すなわち、一つのアプリケーションモジュール14は、大分類における機能を複数利用し得る)。複数の大分類が指定された場合、大分類ごとに中分類が指定され、大分類又は中分類ごとに小分類が指定される。
【0029】
コネクションマネージャ13は、アプリケーションモジュール14がサービスモジュール12を利用する際に、提供機能情報ファイル121、実行条件ファイル122、及び利用機能情報ファイル141等に基づいて当該アプリケーションモジュール14や当該画像形成装置10に係る実行環境に適したサービスモジュール12を選択し、選択されたサービスモジュール12をアプリケーションモジュール14に利用させるための処理を行う。より具体的には、アプリケーションモジュール14が利用したい機能に係るサービスモジュール12が複数存在する場合、コネクションマネージャ13によって複数のサービスモジュール12の中から適切なサービスモジュール12が選択される。
【0030】
図5は、コネクションマネージャの機能を説明するための図である。図5において、アプリケーションモジュール14aは、スキャン機能と印刷機能を利用するアプリケーションモジュール14であり、スキャン機能利用要求r1(スキャン機能を利用するためのサービスモジュール12のインタフェースの呼び出し)と印刷機能利用要求r2(印刷機能を利用するためのサービスモジュール12のインタフェースの呼び出し)を発行する。
【0031】
図中では、コネクションマネージャが、スキャン機能利用要求r1に対してスキャンサービスA12a又はスキャンサービスB12bを選択し、印刷機能利用要求r2に対して印刷サービスC12c又は印刷サービスD12dを選択する様子が示されている。なお、スキャンサービスA12a及びスキャンサービスB12bは、それぞれ同一のインタフェースによってスキャン機能を提供するサービスモジュール12である。また、印刷サービスC12c及び印刷サービスD12dは、それぞれ同一のインタフェースによって印刷機能を提供するサービスモジュール12である。
【0032】
以下、画像形成装置10の処理手順について説明する。図6は、本発明の実施の形態における画像形成装置の処理手順を説明するための図である。図6中、図5と同一部分には同一符号を付している。
【0033】
各サービスモジュール12は、予め(例えば、インストール時等)、当該サービスモジュール12の提供機能情報ファイル121に格納されている機能提供情報及び実行条件ファイル122に格納されている実行条件情報をコネクションマネージャ15に登録しておく(S11〜S14)。ここで、登録とは、コネクションマネージャ15が、提供機能情報及び実行条件情報を利用可能な状態にすることをいう。例えば、コネクションマネージャ15に、それぞれのファイル名を通知するようにしてよい。コネクションマネージャ15は、当該ファイル名に基づいて、提供機能情報及び実行条件情報を取得し、利用することができるからである。また、各サービスモジュール12の提供機能情報ファイル121及び実行条件ファイル122が保存される場所(例えば、フォルダ)をコネクションマネージャ15が予め認識している場合、当該場所に提供機能情報ファイル121及び実行条件ファイル122を保存する処理によってステップS11〜14の処理を代替させてもよい。すなわち、コネクションマネージャ15は、能動的に当該場所より提供機能情報ファイル121及び実行条件ファイル122を取得することができるからである。
【0034】
例えば、操作パネル110を介した入力により、アプリケーションモジュール14aの実行が要求されると(S15)、アプリケーションモジュール14aは、添付されている利用機能情報ファイル141の保存位置(ファイル名)又は当該利用機能情報ファイル141に格納されている利用機能情報をコネクションマネージャ13に通知する。ここで、アプリケーションモジュール14aの利用機能情報には、大分類に係る利用機能としてスキャン機能と印刷機能とが含まれているとする。したがって、当該通知は、大分類におけるスキャン機能の利用要求(S16)と、印刷サービスの利用要求(S17)とに相当する。
【0035】
コネクションマネージャ15は、アプリケーションモジュール14aの利用機能情報と、各サービスモジュール12の提供機能情報及び実行条件情報とに基づいて、スキャン機能に関してスキャンサービスA12a又はスキャンサービスB12bのいずれか一方をロード対象(利用対象)として選択し、また、印刷機能に関して印刷サービスC12c又は印刷サービスD12dのいずれか一方をロード対象として選択する。選択されたサービスモジュール12は、RAM103にロードされ、その後、アプリケーションモジュール14aからの各種のメソッド呼び出しに応じて処理を実行する。
【0036】
続いて、コネクションマネージャ15による、利用対象とするサービスモジュールの12の選択処理について詳細に説明する。図7は、コネクションマネージャによるサービスモジュールの選択処理を説明するためのフローチャートである。
【0037】
アプリケーションモジュール14より利用機能情報を受け付けると(S101)、利用機能情報における一つの大分類を処理対象とする(S102)。続いて、当該大分類に係る利用機能情報(当該大分類によって示される機能、当該大分類に属する中分類によって示される機能、及び当該大分類に属する小分類によって示される機能)と、各サービスモジュール12の提供機能情報とを比較(照合)することにより、当該大分類に係る利用機能情報を満たす提供機能情報に係るサービスモジュール12(すなわち、当該大分類に属する機能の全てを提供可能なサービスモジュール12)を検索する(S103)。なお、利用機能情報を満たす提供機能情報とは、大分類、中分類、小分類のすべての階層において、利用機能情報に指定されている機能を包含(完全一致も含む)するものをいう。
【0038】
続いて、検索されたサービスモジュール12は一つであるか否かを判定する(S104)。検索結果が一つである場合(S104でYes)、検索されたサービスモジュール12を利用対象としてRAM103上にロード(展開)させる(S105)。
【0039】
一方、検索結果が複数である場合(S104でNo)、現在の実行環境(空きメモリ容量、CPUの性能を示す情報)と、検索された各サービスモジュール12の実行条件情報(空きメモリ容量、CPUの性能)とを比較(照合)することにより、検索された中で現在の実行環境に最も適したサービスモジュール12を選択する(S106)。
【0040】
なお、他のサービスモジュール12の実行条件情報の置換対象となるサービスモジュールに関する項目においてそのサービスIDが登録されているサービスモジュール12については、選択の対象から除外される。仮に選択されたとしても、当該サービスモジュール12は、当該他のサービスモジュール12によって置き換えられるべきものだからである。したがって、古いサービスモジュール12が明示的にアンインストールされなくても、新しいサービスモジュール12が自動的に利用対象とされる。
【0041】
また、実行条件情報における速度優先又はメモリ節約優先に関する項目については、空きメモリ容量が所定値より少ない場合はメモリ節約優先のものを選択対象として優先し、当該所定値以上の場合は速度優先のものを選択対象として優先するための基準として用いられる。但し、アプリケーションモジュール14より速度優先又はメモリ節約優先がコネクションマネージャ15に対して明示的に指定されている場合、アプリケーションモジュール14による指定に基づいて、当該項目との比較が行われる。
【0042】
続いて、選択されたサービスモジュールを利用対象としてRAM103上にロードさせる(S106)。上記ステップS102からS107の処理が利用機能情報に含まれる全ての大分類について完了すると(S108でYes)処理は終了する。
【0043】
なお、図7の代わりに、図8に示される処理が実行されてもよい。図8は、コネクションマネージャによるサービスモジュールの選択処理を説明するための第二のフローチャートである。図8中、図7と同一ステップには同一符号を付し、その説明は省略する。
【0044】
図8では、図7におけるステップS106がステップS106aに置き換えられている。ステップS106aにおいて、コネクションマネージャ15は、実行条件情報においてメモリ節約優先であることが示されているサービスモジュール12を優先的に選択する。
または、検索された各サービスモジュール12の実行条件情報における空きメモリ容量を比較することにより、検索された中で最もメモリ空き容量の値が小さいもの(すなわち、実行するために必要な又は推奨されるメモリの空き容量が小さいもの)を利用対象として選択してもよい。
【0045】
図8では、また、破線によって囲まれたステップS111以降の処理がステップS108の後に追加されている。なお、図8では、図7におけるステップS107は削除されている。したがって、ステップS111の開始時点においては、いずれのサービスモジュール12もRAM103上にはロードされていない。
【0046】
ステップS111において、コネクションマネージャ15は、ステップS108までの処理において利用対象として選択された全てのサービスモジュール12の実行条件情報のメモリ空き容量の合計値を算出する。続いて、現在の実行環境におけるメモリの空き容量と、ステップS111において算出された合計値との差分(現在のメモリの空き容量−必要なメモリの空き容量の合計値)を算出する(S112)。続いて、当該差分と閾値とを比較する(S113)。当該差分が閾値より大きい場合(S113でYes)、アプリケーションモジュール14より速度優先である旨が指定されているか否かを判定する(S114)。速度優先である旨が指定されている場合(S114でYes)、速度優先のサービスモジュール12が存在する機能については、現在のメモリの空き容量の許容範囲内において、速度優先のサービスモジュール12によって利用対象を置換する。すなわち、既に選択されているサービスモジュール12を利用対象から除外し、速度優先のサービスモジュール12を利用対象として選択する。なお、現在のメモリの空き容量の許容範囲内であるかは、既に選択されているサービスモジュール12について順番に速度優先のものと置換する過程において、置換前に速度優先のサービスモジュール12の実行条件情報におけるメモリ空き容量と現在の実行環境におけるメモリ空き容量とを比較すればよい。
【0047】
置換が完了すると、この時点で利用対象として選択されている全てのサービスモジュール12をRAM103上にロードさせる。
【0048】
一方、ステップS113において、差分が閾値以下の場合(S113でNo)、コネクションマネージャ15は、メモリ不足時の処理を実行する(S117)。
【0049】
図9は、コネクションマネージャによるメモリ不足時の処理を説明するためのフローチャートである。
【0050】
ステップS201において、利用対象として選択されている各サービスモジュール12の実行条件情報における「同時に利用されることが予想されるサービスモジュール」を参照し(S201)、同時に利用されることが予想されるものごとにサービスモジュール12をグループ分けする(S202)。ここで「同時に」とは、「ほぼ同じタイミングで」又は「並列的に」ということを意味する。なお、同時に利用されることが予想されるサービスモジュールは、アプリケーションモジュール14がコネクションマネージャ15に通知するようにしてもよい(例えば、利用機能情報の一部として含まれていても良よい)。この場合、「同時に利用されることが予想されるサービスモジュール」は実行条件情報に含まれていなくてもよい。
【0051】
続いて、グループごとに、各サービスモジュール12の実行条件情報におけるメモリ空き容量の合計値を算出する(S203)。続いて、グループごとに算出された合計値を比較することにより、その中の最大値を判定する(S204)。
【0052】
続いて、現在の実行環境におけるメモリの空き容量と、ステップS204において算出された最大値との差分(現在のメモリの空き容量−最大値)を算出する(S205)。続いて、当該差分と閾値とを比較する(S206)。当該差分が閾値より大きい場合(S206でYes)、アプリケーションモジュール14の処理の進行状況に応じて、グループごとにサービスモジュール12のRAM103上へのロード及びアンロードを行う(S207)。
【0053】
具体的には、コネクションマネージャ15は、アプリケーションモジュール14より利用要求が発行されたタイミングで、当該利用要求に係る機能に対応するサービスモジュール12及び当該サービスモジュール12と同じグループに属するサービスモジュール12をRAM103にロードする。ロードされた各サービスモジュール12は自分の実行する処理が終了し、アンロードが可能なタイミングになったら終了通知をコネクションマネージャ15に通知する。コネクションマネージャ15は、同じグループに属する全てのサービスモジュール12より終了通知を受けたタイミングで、当該グループに属する全てのサービスモジュール12をアンロードする。このような処理を繰り返すことにより、一度に消費されるメモリ量を削減しつつ、アプリケーションモジュール14の実行を可能とすることができる。なお、アンロードされたサービスモジュール12は、アプリケーションモジュール14より再度利用要求が発行された際に必要に応じてロードされる。
【0054】
一方、ステップ206において、差分が閾値以下の場合(S206でNo)、コネクションマネージャ15は、当該アプリケーションモジュール14は実行不可能であると判定する。
【0055】
ところで、図8のステップS113及び図9のステップS206において使用される閾値は、サービスモジュール12のメモリの使用量に対して必要とされるマージン又は余裕値としての意味を持つ。なお、当該閾値は常に一定でなくてもよい。すなわち、実際にアプリケーションモジュール14を実行する場合は、サービスモジュール12が使用するメモリの他にアプリケーションモジュール14自身が使用するメモリがある。したがって、サービスモジュール12の選択処理においては、アプリケーションモジュール14が使用するメモリ量も考慮されることが望ましい。但し、アプリケーションモジュール14が使用するメモリ量はアプリケーションモジュール14の仕様に依存すると共に、実際の使用状況にも左右される。具体的には、同じアプリケーションモジュール14でもA3の原稿を600dpiでスキャンする場合と、A4原稿を200dpiでスキャンする場合とではメモリの消費量が異なる。したがって、一義的な閾値ではアプリケーションモジュール14のパフォーマンスが十分に発揮できない場合が発生する可能性がある。
【0056】
そこで、斯かる問題を解決するため、アプリケーションモジュール14の実行中に、コネクションマネージャ15がメモリの空き容量の計測を常時行い、当該閾値を動的に更新するようにしてもよい。また、閾値の更新は、当該閾値を用いるタイミングであってもよい。この場合、メモリの空き容量の計測を常時行わなくてもよく、当該閾値を用いるタイミングにおける空き容量に基づいて当該閾値を更新すればよい。
【0057】
当該閾値を動的に更新可能とすることで、コネクションマネージャ15によって実行可能であると判断されたにも拘わらず、万が一メモリ不足のエラーが発生した場合に当該閾値の値を大きくすることができる。そうすることで、アプリケーションモジュール14の動作用のメモリのマージンを大きくし、再度のメモリ不足のエラーの発生を抑止することができる。
【0058】
なお、既に一つ以上のアプリケーションモジュール14が実行中である状態において、他のアプリケーションモジュール14の起動が要求された場合、既に実行中のアプリケーションモジュール14(以下「実行中アプリ」という。)についても、新たに起動されるアプリケーションモジュール14(以下「新規起動アプリ」という。)によるリソース(メモリ等)の消費等を考慮して、改めて図7による処理を実行し、利用対象とするサービスモジュール12を動的に変更するようにしてもよい。具体的には、コネクションマネージャ13が、新規起動アプリに対するサービスモジュール12の検索中にいずれのサービスモジュール12によってもメモリの空き容量が不足していることが判定された場合に、よりメモリ消費量の少ない(すなわち、実行条件情報においてメモリ空き容量の値が小さい)サービスモジュール12や実行条件情報においてメモリ節約優先が指定されているサービスモジュール12であって、実行中アプリの利用機能の全てを満たすことのできるサービスモジュール12を、新たに実行中アプリの利用対象とすればよい。そうすることにより、複数のアプリケーションモジュール12を効率的に実行させることができる。
【0059】
ところで、機能提供情報及び実行条件情報、並びに利用機能情報は、上記において説明した形式(図3、図4等)に限られない。例えば、機能提供情報及び実行条件情報が一つの情報として(以下、斯かる情報を「サービスモジュール情報」という。)、以下の形式によって同じファイル内に格納されていてもよい。
【0060】
図10は、サービスモジュール情報の第一の例を示す図である。同図において、サービスモジュール情報は、サービスID、機能提供情報、及び実行条件情報を含む。機能提供情報は、種類及び属性より構成される。種類は機能の種類を示し、図3の例における大分類に対応する。属性は、図3の例における中分類又は小分類に対応し、その構成は種類に応じて異なる。図10のサービスモジュール情報は、スキャン機能に対応するため、種類には「スキャン」が指定されている。また、属性は、スキャンにおける設定情報によって構成されている。
【0061】
一方、実行条件情報は、使用メモリ及びパフォーマンスより構成される。使用メモリは、図4の例におけるメモリ空き容量に対応する。パフォーマンスは、当該機能(スキャン機能)の性能を示す指標であり、その単位は機能に応じて異なりうる。スキャン機能の場合は、1秒あたりのスキャン枚数が単位とされている。
【0062】
同じスキャン機能について、属性及び性能が異なるサービスモジュール12に対するサービスモジュール情報は、例えば、次のようになる。図11は、サービスモジュール情報の第二の例を示す図である。同図のサービスモジュール情報は、図10と同様スキャン機能に係るサービスモジュール12に対するものであるが、図10のサービス情報と比較して属性の値及び実行条件情報の値が異なる。
【0063】
また、異なる機能(例えば、印刷機能)に対するサービスモジュールは、例えば、次のようになる。図12は、サービスモジュール情報の第三の例を示す図である。同図のサービスモジュール情報は、種類が「印刷」である。また、属性は印刷機能に対応した構成となっている。
【0064】
上記のサービスモジュール情報に対応させて、アプリケーションモジュール14に関連付けられている利用機能情報は次のような構成にしてもよい。図13は、利用機能情報の第二の例を示す図である。
【0065】
同図において、利用機能情報には、利用機能の一覧、利用機能ごとに属性項目の一覧、及び属性項目ごとに利用属性値が設定されている。利用機能の一覧によって、当該アプリケーションモジュール14が利用する機能の種類が示されている。利用属性値によって、当該アプリケーションモジュール14が利用する属性値が示されている。
【0066】
機能提供情報、実行条件情報、及び利用機能情報の構成が、図10〜図13に示されるように変更された場合であっても、処理手順は特に変更しなくてもよい。すなわち、図8又は図9のステップS102において、大分類ごとのループ処理は、図13の利用機能情報における利用機能ごとのループ処理とすればよい。また、ステップS103では、図13の利用機能情報に指定されている利用機能及び利用属性値に対応可能なサービスモジュール12を、図10等に示されるサービスモジュール情報の機能情報の種類及び属性に基づいて判定すればよい。また、図4における「メモリ空き容量」を使用しているステップでは、図10等における「使用メモリ」を利用すればよい。更に、図4における「速度優先」を使用しているステップでは、図10等における「パフォーマンス」を使用すればよい。
【0067】
例えば、図10〜図13を利用して図8の処理が実行される場合、アプリケーションモジュール14が要求しているスキャン機能(図13)を満足するサービスモジュールは、ID=0x00010001(図10)とID=0x00010002(図11)のサービスモジュール12であるが(S103)、ステップS104では、メモリ使用量が少ないID=0x00010002のサービスモジュール12が選択される。但し、メモリに余裕があり、ステップS115の処理が実行される場合、パフォーマンスの良いID=0x00010001のサービスモジュール12が最終的に利用対象として選択される。
【0068】
上述したように、本実施の形態における画像形成装置10によれば、アプリケーションモジュール14に開示するインタフェースは同一であるが、想定される実行環境に特化した複数のサービスモジュール12を提供し、アプリケーションモジュール14からの要求とサービスモジュール12が提供する機能、及び実行環境の状況を判断することにより、適切なサービスモジュール12をアプリケーションモジュール14に関連付けける(利用させる)ことができる。この場合、利用されないサービスモジュール12については、メモリ(RAM103)上にロードされないため、メモリの消費量を低減させることができる。
【0069】
また、セキュリティの観点からアプリケーションモジュール14のログを取得する必要が後から生じた場合に、ログを出力するようなサービスモジュール12に置き換えることで、アプリケーションモジュール14を変更することなくログの出力が可能となる。
【0070】
なお、サービスモジュール12を選択するための判断基準として、サービスモジュール12が提供している機能の実際の利用状況を用いるようにしてもよい。具体的には、サービスモジュール12側は自分が提供する機能において実際にアプリケーションモジュール14から利用された機能(メソッド)の利用回数等を判定可能なログ(以下「利用状況ログ」という。)をHDD105等に記録しておく。利用状況ログに記録される情報としては、例えば、単純な利用回数の合計値でもよいし、時間軸を考慮した一定期間の平均値等であってもよい。
【0071】
すなわち、特定の機種やアプリケーションモジュール14で、サービスモジュール12が提供している全ての機能を利用する可能性が非常に少ない場合に、多機能のサービスモジュール12をインストールしていることは、メモリリソースを無駄に使用していることになる。特定機能のみを実装した標準版のサービスモジュール12のサブセット版に相当するサービスモジュール12を実装し、その機能提供情報等をコネクションマネージャ15に登録することで、コネクションマネージャ15が利用状況ログに基づいてサービスモジュール12のメソッドの利用状況を判断しサブセット版で十分であると判断した場合(すなわち、サブセット版の提供機能情報に係る機能が、利用状況ログに基づいて導出される利用機能を満たす場合)、サブセット版への置換を行う。置換された標準的なサービスモジュール12(フルセット版)は、RAM103上には展開されないが、ROM103上又はHDD105には存在するので、万が一アプリケーションモジュール14がサブセット版に無い機能を利用する場合は、その時点で再度置換すればよい。
【0072】
なお、利用対象とするサービスモジュール12の選択処理は、画像形成装置10とネットワークを介して接続する外部のコンピュータ(外部サーバ)によって行われてもよい。
【0073】
図14は、外部サーバによってサービスモジュールの選択処理が実行される場合の処理手順を示すシーケンス図である。同図において、外部サーバ20は、図7、又は図8及び図9の処理を実行するプログラムを有する(HDD等に記録されている)。また、各種サービスモジュール12の機能提供情報及び実行条件情報、並びに実体(プログラム)を有する(HDD等に記録されている)。
【0074】
コネクションマネージャ15は、アプリケーションモジュール14より利用機能情報を受け付けると(S301)、外部サーバ10に対して、サービスモジュール12の選択処理に必要な情報(画像形成装置10のハードウェア資源(CPU、メモリ等)に関する情報(機器情報)、現在の画像形成装置10における実行環境の情報(メモリの空き容量等)、既にロードされているサービスモジュール12のサービスID等)を外部サーバ20に転送する(S302)。また、コネクションマネージャ15は、当該利用機能情報を外部サーバ20に転送する(S303)。
【0075】
外部サーバ20は、転送された情報に基づいて、サービスモジュール12の選択処理(図7、又は図8及び図9の処理)を実行する(S304)。続いて、外部サーバ20は、利用対象とするサービスモジュール12のサービスIDをコネクションマネージャ15に返信する(S305)。なお、外部サーバ20は、既にロードされているサービスモジュール12の中で、新たに利用対象とされるサービスモジュール12のロードにより不要となるものがあれば、そのサービスモジュール12のサービスIDも返信する。続いて、外部サーバ20は、利用対象として選択されたサービスモジュール12の実体をコネクションマネージャ15に返信する(S306)。コネクションマネージャ15は、返信されたサービスモジュール12の実体を、画像形成装置10にインストールし、HDD105に保存する。
【0076】
続いて、コネクションマネージャ15は、不要なものとして通知されたサービスIDに係るサービスモジュール12をアンロードし(S307)、利用対象として選択され、ステップS306においてその実体を受信したサービスモジュール12をRAM103上にロードする(S308)。
【0077】
このような構成によれば、外部サーバ20より必要なサービスモジュール12が随時転送されるため、画像形成装置10には予め全てのサービスモジュール12がインストールされている必要はない。したがって、HDD105又はROM104の消費量を抑制することができる。また、不具合対応等で随時更新される最新のサービスモジュール12が使用可能になるという観点からも外部サーバ20と連携したサービスモジュールの選択、ロードは有効である。
【0078】
なお、コネクションマネージャ15は、アプリケーションモジュール14の終了後に、当該アプリケーションモジュール14に応じて転送を受けたサービスモジュール14の実体をHDD105より削除するようにしてもよい。
【0079】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0080】
10 画像形成装置
11 OSGiプラットフォーム
12 サービスモジュール
13 コネクションマネージャ
14 アプリケーションモジュール
20 外部サーバ
101 コントローラ
102 CPU
103 RAM
104 ROM
105 HDD
106 スキャナ
107 プリンタ
108 モデム
109 ネットワークインタフェース
110 操作パネル
121 提供機能情報ファイル
122 実行条件ファイル
141 利用機能情報ファイル
【先行技術文献】
【特許文献】
【0081】
【特許文献1】特開2005−269619号公報

【特許請求の範囲】
【請求項1】
アプリケーションを実行可能な電子機器であって、
前記アプリケーションに対して当該電子機器の機能を利用させるためのインタフェースを提供する複数のインタフェース提供手段と、
記憶装置に記録されている、前記アプリケーションによるインタフェースの利用に関する情報に基づいて、前記アプリケーションに利用させる前記インタフェース提供手段を、同一のインタフェースを提供する前記インタフェース提供手段の中から選択する選択手段とを有し、
前記複数のインタフェース提供手段のうちの第一のインタフェース提供手段は、他のインタフェース提供手段の一部のインタフェースを有し、
前記選択手段は、前記情報に基づいて、前記アプリケーションによって利用されるインタフェースが、前記第一のインタフェース提供手段が有するインタフェースによって満たされると判断した場合には、前記第一のインタフェース提供手段を選択することを特徴とする電子機器。
【請求項2】
前記各インタフェース提供手段は、前記アプリケーションによるインタフェースの利用に関する情報を前記記憶装置に記録することを特徴とする請求項1記載の電子機器。
【請求項3】
前記選択手段は、記憶装置に記録されている前記アプリケーションが利用する機能を示す利用機能情報と、記憶装置に記録されている複数の前記インタフェース提供手段が提供する機能を示す提供機能情報との比較結果に応じて前記アプリケーションに利用させる前記インタフェース提供手段を選択することを特徴とする請求項1又は2記載の電子機器。
【請求項4】
前記選択手段は、前記利用機能情報と前記提供機能情報との比較に応じて前記インタフェース提供手段が複数選択されるときに前記インタフェース提供手段の実行環境を示す情報と当該電子機器における前記実行環境に関する情報との比較結果に応じて前記インタフェース提供手段を選択することを特徴とする請求項3記載の電子機器。
【請求項5】
それぞれの前記インタフェース提供手段がメモリの消費量と処理性能とのいずれを優先させるかを示す優先情報が記憶装置に記録されており、
前記選択手段は、前記優先情報に基づいて前記インタフェース提供手段を選択することを特徴とする請求項1乃至4いずれか一項記載の電子機器。
【請求項6】
アプリケーションを実行可能な電子機器による情報処理方法であって、
前記アプリケーションに対して当該電子機器の機能を利用させるためのインタフェースを提供する複数のインタフェース提供手順と、
記憶装置に記録されている、前記アプリケーションによるインタフェースの利用に関する情報に基づいて、前記アプリケーションに利用させる前記インタフェース提供手順を、同一のインタフェースを提供する前記インタフェース提供手順の中から選択する選択手順とを有し、
前記複数のインタフェース提供手順のうちの第一のインタフェース提供手順は、他のインタフェース提供手順の一部のインタフェースを有し、
前記選択手順は、前記情報に基づいて、前記アプリケーションによって利用されるインタフェースが、前記第一のインタフェース提供手順が有するインタフェースによって満たされると判断した場合には、前記第一のインタフェース提供手順を選択することを特徴とする情報処理方法。
【請求項7】
前記各インタフェース提供手順は、前記アプリケーションによるインタフェースの利用に関する情報を前記記憶装置に記録することを特徴とする請求項6記載の電子機器。
【請求項8】
前記選択手順は、記憶装置に記録されている前記アプリケーションが利用する機能を示す利用機能情報と、記憶装置に記録されている複数の前記インタフェース提供手順が提供する機能を示す提供機能情報との比較結果に応じて前記アプリケーションに利用させる前記インタフェース提供手順を選択することを特徴とする請求項6又は7記載の情報処理方法。
【請求項9】
前記選択手順は、前記利用機能情報と前記提供機能情報との比較に応じて前記インタフェース提供手順が複数選択されるときに前記インタフェース提供手順の実行環境を示す情報と当該電子機器における前記実行環境に関する情報との比較結果に応じて前記インタフェース提供手順を選択することを特徴とする請求項8記載の情報処理方法。
【請求項10】
それぞれの前記インタフェース提供手順がメモリの消費量と処理性能とのいずれを優先させるかを示す優先情報が記憶装置に記録されており、
前記選択手順は、前記優先情報に基づいて前記インタフェース提供手順を選択することを特徴とする請求項6乃至9いずれか一項記載の情報処理方法。
【請求項11】
アプリケーションを実行可能な電子機器に、
前記アプリケーションに対して当該電子機器の機能を利用させるためのインタフェースを提供する複数のインタフェース提供手順と、
記憶装置に記録されている、前記アプリケーションによるインタフェースの利用に関する情報に基づいて、前記アプリケーションに利用させる前記インタフェース提供手順を、同一のインタフェースを提供する前記インタフェース提供手順の中から選択する選択手順とを実行させ、
前記複数のインタフェース提供手順のうちの第一のインタフェース提供手順は、他のインタフェース提供手順の一部のインタフェースを有し、
前記選択手順は、前記情報に基づいて、前記アプリケーションによって利用されるインタフェースが、前記第一のインタフェース提供手順が有するインタフェースによって満たされると判断した場合には、前記第一のインタフェース提供手順を選択する情報処理プログラム。
【請求項12】
前記各インタフェース提供手順は、前記アプリケーションによるインタフェースの利用に関する情報を前記記憶装置に記録することを特徴とする請求項11記載の情報処理プログラム。
【請求項13】
前記選択手順は、記憶装置に記録されている前記アプリケーションが利用する機能を示す利用機能情報と、記憶装置に記録されている複数の前記インタフェース提供手順が提供する機能を示す提供機能情報との比較結果に応じて前記アプリケーションに利用させる前記インタフェース提供手順を選択することを特徴とする請求項11又は12記載の情報処理プログラム。
【請求項14】
前記選択手順は、前記利用機能情報と前記提供機能情報との比較に応じて前記インタフェース提供手順が複数選択されるときに前記インタフェース提供手順の実行環境を示す情報と当該電子機器における前記実行環境に関する情報との比較結果に応じて前記インタフェース提供手順を選択することを特徴とする請求項13記載の情報処理プログラム。
【請求項15】
それぞれの前記インタフェース提供手順がメモリの消費量と処理性能とのいずれを優先させるかを示す優先情報が記憶装置に記録されており、
前記選択手順は、前記優先情報に基づいて前記インタフェース提供手順を選択することを特徴とする請求項11乃至14いずれか一項記載の情報処理プログラム。

【図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

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2013−42545(P2013−42545A)
【公開日】平成25年2月28日(2013.2.28)
【国際特許分類】
【出願番号】特願2012−241423(P2012−241423)
【出願日】平成24年11月1日(2012.11.1)
【分割の表示】特願2008−78312(P2008−78312)の分割
【原出願日】平成20年3月25日(2008.3.25)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】