(57)【要約】【課題】プラグイン・プラットフォームを利用し、動的にプラグイン・プラグアウトを行い、メモリ上に常駐するプログラムを削減することによって、必要とするメモリサイズを抑えることができる情報処理端末装置及びプログラムを提供する。【解決手段】所定のアプリケーションプログラムの実行中に別のプログラムの追加が可能であり、追加プログラムを所定のメモリ上で実行する情報処理端末装置であって、アプリケーションプログラムの中にあるプラグインポイントと、追加プログラムとを関連付けて管理する手段と、アプリケーションプログラムがプラグインポイントまで実行されると、プラグポイントに関連付けられた追加プログラムを所定の記憶手段から取得する手段と、取得した追加プログラムをメモリ上で実行する手段と、追加プログラムの実行が終了すると、追加プログラムをメモリ上から削除する手段と、を有する。【選択図】図２
2009037353.tif 000002
【特許請求の範囲】
【請求項１】
所定のアプリケーションプログラムの実行中に別のプログラムの追加が可能であり、該追加プログラムを所定のメモリ上で実行する情報処理端末装置であって、
前記アプリケーションプログラムの中にあるプラグインポイントと、前記追加プログラムとを関連付けて管理する手段と、
前記アプリケーションプログラムが前記プラグインポイントまで実行されると、該プラグポイントに関連付けられた追加プログラムを所定の記憶手段から取得する手段と、
前記取得した追加プログラムを前記メモリ上で実行する手段と、
前記追加プログラムの実行が終了すると、該追加プログラムを前記メモリ上から削除する手段と、
を有することを特徴とする情報処理端末装置。
【請求項２】
前記追加プログラムの使用回数を計数する手段と、
前記計数した使用回数に基づいて、前記追加プログラムを前記メモリ上に常駐させるか否かを決定する手段と、
を有することを特徴とする請求項１記載の情報処理端末装置。
【請求項３】
前記計数する手段は、ユーザ毎の前記追加プログラムの使用回数、又は、ユーザ全体の前記追加プログラムの使用回数を計数することを特徴とする請求項２記載の情報処理端末装置。
【請求項４】
ユーザ毎の前記情報処理端末装置の使用回数を計数する手段を有し、
前記ユーザ毎の前記追加プログラムの使用回数と、前記ユーザ毎の前記情報処理端末装置の使用回数とに基づいて、前記追加プログラムを前記メモリ上に常駐させるか否かを決定することを特徴とする請求項３記載の情報処理端末装置。
【請求項５】
複数のユーザが前記アプリケーションプログラムを同時に使用し、前記追加プログラムを実行する場合、前記メモリ上に先にロードした前記追加プログラムを前記複数のユーザ間で共有する手段を有することを特徴とする請求項１から４のいずれか１項に記載の情報処理端末装置。
【請求項６】
前記追加プログラムの実行開始条件に基づいて、前記追加プログラムの取得を待ち合わせる手段を有することを特徴とする請求項１から５のいずれか１項に記載の情報処理端末装置。
【請求項７】
前記追加プログラムの実行開始条件は、前記追加プログラムの実行を開始する時間、及び、前記追加プログラムを実行可能な前記メモリ上の領域のうち少なくとも１つであることを特徴とする請求項６記載の情報処理端末装置。
【請求項８】
前記情報処理端末装置の電源が落とされる前の前記メモリ上の状態を保持する手段と、
前記電源が再投入された場合、前記保持しておいたメモリ上の状態に復帰する手段と、
を有することを特徴とする請求項１から７のいずれか１項に記載の情報処理端末装置。
【請求項９】
所定のアプリケーションプログラムの実行中に別のプログラムの追加が可能であり、該追加プログラムを所定のメモリ上で実行するためのプログラムであって、
前記アプリケーションプログラムの中にあるプラグインポイントと、前記追加プログラムとを関連付けて管理する処理と、
前記アプリケーションプログラムが前記プラグインポイントまで実行されると、該プラグポイントに関連付けられた追加プログラムを所定の記憶処理から取得する処理と、
前記取得した追加プログラムを前記メモリ上で実行する処理と、
前記追加プログラムの実行が終了すると、該追加プログラムを前記メモリ上から削除する処理と、
をコンピュータに実行させることを特徴とするプログラム。
【請求項１０】
前記追加プログラムの使用回数を計数する処理と、
前記計数した使用回数に基づいて、前記追加プログラムを前記メモリ上に常駐させるか否かを決定する処理と、
をコンピュータに実行させることを特徴とする請求項９記載のプログラム。
【請求項１１】
前記計数する処理は、ユーザ毎の前記追加プログラムの使用回数、又は、ユーザ全体の前記追加プログラムの使用回数を計数する処理であることを特徴とする請求項１０記載のプログラム。
【請求項１２】
ユーザ毎の前記コンピュータの使用回数を計数する処理をコンピュータに実行させ、
前記決定する処理は、前記ユーザ毎の前記追加プログラムの使用回数と、前記ユーザ毎の前記コンピュータの使用回数とに基づいて、前記追加プログラムを前記メモリ上に常駐させるか否かを決定する処理であることを特徴とする請求項１１記載のプログラム。
【請求項１３】
複数のユーザが前記アプリケーションプログラムを同時に使用し、前記追加プログラムを実行する場合、前記メモリ上に先にロードした前記追加プログラムを前記複数のユーザ間で共有する処理をコンピュータに実行させることを特徴とする請求項９から１２のいずれか１項に記載のプログラム。
【請求項１４】
前記追加プログラムの実行開始条件に基づいて、前記追加プログラムの取得を待ち合わせる処理をコンピュータに実行させることを特徴とする請求項９から１３のいずれか１項に記載のプログラム。
【請求項１５】
前記追加プログラムの実行開始条件は、前記追加プログラムの実行を開始する時間、及び、前記追加プログラムを実行可能な前記メモリ上の領域のうち少なくとも１つであることを特徴とする請求項１４記載のプログラム。
【請求項１６】
前記コンピュータの電源が落とされる前の前記メモリ上の状態を保持する処理と、
前記電源が再投入された場合、前記保持しておいたメモリ上の状態に復帰する処理と、
をコンピュータに実行させることを特徴とする請求項９から１５のいずれか１項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、所定のプログラムの実行中に、サーバ又はローカルのメモリに保存されている別のプログラムをプラグインとして追加でき、追加したプログラムを実行する情報処理端末装置及びプログラムに関する。
【背景技術】
【０００２】
情報処理端末装置の一例である複合機は、ハードウェアを制御するプログラムがあるため、リアルタイム性を求められる。また、ユーザインタフェース等にも、リアルタイム性を求められる。そのため、メモリ（例えばＲＡＭ：Random Access Memory）上にプログラムを常駐させて実行させている。
【０００３】
しかし、複合機の機能が複雑になり、多岐にわたるようになると、ＲＡＭ上に常駐させるプログラムが肥大化し、それにともなってＲＡＭのプログラム容量が肥大化する。よって、ＲＡＭサイズが大きくなり、製品のコスト高につながる。
【０００４】
その解決手段として、共通な処理を共有ライブラリ・ダイナミックリンクライブラリなどの技術によって行い、ＲＡＭ容量の節約を行ってきた。
また、リアルタイム性を必要としないプログラムを、別プロセスとしてＨＤＤ（Hard Disk Drive）に保存し、ＯＳ（Operating System）のＳＷＡＰ（Shared Wireless Access Protocol）、ページングを利用することによって、必要なときにＲＡＭ上にプログラムをロードする一方で、リアルタイム性を必要とするプログラムは、ＯＳのＳＷＡＰ、ページングを行わないようにしていた。
しかしながら、これは並行処理を効果的に行うための仕組みであるため、不要なプログラムをメモリにロードしないという根本的な解決方法ではない。
【０００５】
昨今の動向としては、複合機に対する市場のニーズも、カスタマイズが求められている。Ｊａｖａ（登録商標）技術の普及により、ＯＳ、ＣＰＵ（Central Processing Unit）に依存しないで、各種プログラムを部品として扱えるようになった。ＪＶＭ（Java Virtual Machine）は１つのプロセスとして実行さるため、リアルタイム性の必要な部分は、カスタマイズの非対象として、Ｎａｔｉｖｅのプロセスとして実現している。しかしながら、プログラムの規模としては、リアルタイム性を求められない部分が大半であるため、Ｊａｖａプログラムとして実装される。ここでＪａｖａ技術においては、プラグインを行えるプラットフォームも用意されている。
【０００６】
プラグインを利用した装置に関する従来技術例として、以下のものが開示されている。
特許文献１には、複合機のハードウェアが差し替えられた場合、複合機が、差し替えられたハードウェアの情報を取得し、現時点で複合機に存在しているプラグイン情報のリストを取得した後、ハードウェア情報とプラグイン情報とをサーバに送信し、サーバが、現時点で複合機に存在している各プラグインが新しいハードウェアに適しているか否かを判断し、プラグイン適用可否の情報を複合機へ通知し、複合機が、その通知を受けて、プラグイン情報のリストを更新する画像形成システムが開示されている。
特許文献２には、機能拡張可能な箇所を表す拡張ポイントを含むアプリケーションプログラムと、拡張ポイントに対応付けられたプラグインモジュールとを有し、アプリケーション制御部により、アプリケーションプログラムが拡張ポイントまで実行された場合に、プラグイン制御部によりその拡張ポイントに対応付けられたプラグインモジュールが実行される画像処理装置が開示されている。
特許文献３には、アプリケーションプログラムが起動されると、制御装置が、記憶装置に記憶されている複数のプログラムモジュールのそれぞれについて、プログラムモジュールの処理順序に関する処理順序情報を読み出し、制御装置が、その処理順序情報に従って、複数のプログラムモジュールの処理順序を決定する情報処理装置が開示されている。
【０００７】
しかし、これら特許文献１〜３はいずれも、プラグインを利用した装置（複合機）に関するものであるが、拡張できること、拡張するときの認証・互換性の問題だけに言及されており、上述した問題を解決するものではない。
【特許文献１】特開２００６−２６１９７０号公報
【特許文献２】特開２００６−８５２９１号公報
【特許文献３】特開２００６−８５５２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、上記事情に鑑みてなされたものであり、プラグイン・プラットフォームを利用し、動的にプラグイン・プラグアウトを行い、メモリ上に常駐するプログラムを削減することによって、必要とするメモリサイズを抑えることができる情報処理端末装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
かかる目的を達成するために、本発明の第１の情報処理端末装置は、所定のアプリケーションプログラムの実行中に別のプログラムの追加が可能であり、追加プログラムを所定のメモリ上で実行する情報処理端末装置であって、アプリケーションプログラムの中にあるプラグインポイントと、追加プログラムとを関連付けて管理する手段と、アプリケーションプログラムがプラグインポイントまで実行されると、プラグポイントに関連付けられた追加プログラムを所定の記憶手段から取得する手段と、取得した追加プログラムをメモリ上で実行する手段と、追加プログラムの実行が終了すると、追加プログラムをメモリ上から削除する手段と、を有することを特徴とする。
【００１０】
本発明の第２の情報処理端末装置は、本発明の第１の情報処理端末装置において、追加プログラムの使用回数を計数する手段と、計数した使用回数に基づいて、追加プログラムをメモリ上に常駐させるか否かを決定する手段と、を有することを特徴とする。
【００１１】
本発明の第３の情報処理端末装置は、本発明の第２の情報処理端末装置において、計数する手段は、ユーザ毎の追加プログラムの使用回数、又は、ユーザ全体の追加プログラムの使用回数を計数することを特徴とする。
【００１２】
本発明の第４の情報処理端末装置は、本発明の第３の情報処理端末装置において、ユーザ毎の情報処理端末装置の使用回数を計数する手段を有し、ユーザ毎の追加プログラムの使用回数と、ユーザ毎の情報処理端末装置の使用回数とに基づいて、追加プログラムをメモリ上に常駐させるか否かを決定することを特徴とする。
【００１３】
本発明の第５の情報処理端末装置は、本発明の第１から第４のいずれか１つの情報処理端末装置において、複数のユーザがアプリケーションプログラムを同時に使用し、追加プログラムを実行する場合、メモリ上に先にロードした追加プログラムを複数のユーザ間で共有する手段を有することを特徴とする。
【００１４】
本発明の第６の情報処理端末装置は、本発明の第１から第５のいずれか１つの情報処理端末装置において、追加プログラムの実行開始条件に基づいて、追加プログラムの取得を待ち合わせる手段を有することを特徴とする。
【００１５】
本発明の第７の情報処理端末装置は、本発明の第６の情報処理端末装置において、追加プログラムの実行開始条件は、追加プログラムの実行を開始する時間、及び、追加プログラムを実行可能なメモリ上の領域のうち少なくとも１つであることを特徴とする。
【００１６】
本発明の第８の情報処理端末装置は、本発明の第１から第７のいずれか１つの情報処理端末装置において、情報処理端末装置の電源が落とされる前のメモリ上の状態を保持する手段と、電源が再投入された場合、保持しておいたメモリ上の状態に復帰する手段と、を有することを特徴とする。
【００１７】
本発明の第１のプログラムは、所定のアプリケーションプログラムの実行中に別のプログラムの追加が可能であり、追加プログラムを所定のメモリ上で実行するためのプログラムであって、アプリケーションプログラムの中にあるプラグインポイントと、追加プログラムとを関連付けて管理する処理と、アプリケーションプログラムがプラグインポイントまで実行されると、プラグポイントに関連付けられた追加プログラムを所定の記憶処理から取得する処理と、取得した追加プログラムをメモリ上で実行する処理と、追加プログラムの実行が終了すると、追加プログラムをメモリ上から削除する処理と、をコンピュータに実行させることを特徴とする。
【００１８】
本発明の第２のプログラムは、本発明の第１のプログラムにおいて、追加プログラムの使用回数を計数する処理と、計数した使用回数に基づいて、追加プログラムをメモリ上に常駐させるか否かを決定する処理と、をコンピュータに実行させることを特徴とする。
【００１９】
本発明の第３のプログラムは、本発明の第２のプログラムにおいて、計数する処理は、ユーザ毎の追加プログラムの使用回数、又は、ユーザ全体の追加プログラムの使用回数を計数する処理であることを特徴とする。
【００２０】
本発明の第４のプログラムは、本発明の第３のプログラムにおいて、ユーザ毎のコンピュータの使用回数を計数する処理をコンピュータに実行させ、決定する処理は、ユーザ毎の追加プログラムの使用回数と、ユーザ毎のコンピュータの使用回数とに基づいて、追加プログラムをメモリ上に常駐させるか否かを決定する処理であることを特徴とする。
【００２１】
本発明の第５のプログラムは、本発明の第１から第４のいずれか１つのプログラムにおいて、複数のユーザがアプリケーションプログラムを同時に使用し、追加プログラムを実行する場合、メモリ上に先にロードした追加プログラムを複数のユーザ間で共有する処理をコンピュータに実行させることを特徴とする。
【００２２】
本発明の第６のプログラムは、本発明の第１から第５のいずれか１つのプログラムにおいて、追加プログラムの実行開始条件に基づいて、追加プログラムの取得を待ち合わせる処理をコンピュータに実行させることを特徴とする。
【００２３】
本発明の第７のプログラムは、本発明の第６のプログラムにおいて、追加プログラムの実行開始条件は、追加プログラムの実行を開始する時間、及び、追加プログラムを実行可能なメモリ上の領域のうち少なくとも１つであることを特徴とする。
【００２４】
本発明の第８のプログラムは、本発明の第１から第７のいずれか１つのプログラムにおいて、コンピュータの電源が落とされる前のメモリ上の状態を保持する処理と、電源が再投入された場合、保持しておいたメモリ上の状態に復帰する処理と、をコンピュータに実行させることを特徴とする。
【発明の効果】
【００２５】
本発明によれば、プラグイン・プラットフォームを利用し、動的にプラグイン・プラグアウトを行い、メモリ上に常駐するプログラムを削減することによって、必要とするメモリサイズを小さくできるので、低コストな製品開発を実現でき、市場でのコストパフォーマンスを向上させることができる。
【発明を実施するための最良の形態】
【００２６】
以下、本発明を実施するための最良の形態について添付図面を参照して詳細に説明する。
【００２７】
図１は、本発明の一実施例であるプラグイン複合機（以下、複合機という）の概念図である。図１において、プラグインするプログラム（追加プログラムのこと。以下、プラグインプログラムという）は、ネットワーク上にあるサーバに保存されており、このサーバは、プラグインを要求する複合機とは、ネットワークにより結ばれている。複合機は、サーバに対し、プラグインプログラムの呼び出しを要求し、要求を受けたサーバは、複合機に対し、プラグインプログラムをロードする。
【００２８】
なお、図１では、プラグインプログラムをサーバに保存する構成としたが、別の構成として、複合機の内部に備えられる大容量メモリ（例えばＨＤＤ）にプラグインプログラムを保存するようにしてもよい。いずれの構成の場合も、ＯＳのＭＯＵＮＴを利用して、プラグインを要求するプログラム側からはその違いはわからない。また、ここでの説明では、プラグインを要求する側として複合機を例に説明するが、パーソナルコンピュータ等の情報処理端末装置でもよい。
【００２９】
図２は、図１に示す複合機の要部構成を示すブロック図である。図２を参照して、複合機の各部について説明する。
【００３０】
プラグイン・プラットフォーム１は、ＯＳＧｉ等のプラグインを可能にするプラットフォームである。
【００３１】
アプリケーションプログラム２は、複合機の各機能（コピー、プリンタ、スキャナ、ファクス）を実現するためのメインプログラムである。プラグイン・プラットフォーム１を継承して作成される。このアプリケーションプログラム２は、アプリケーションプログラム２中にある追加可能な部分（プラグインポイント）まで実行すると（プラグインポイントを検出すると）、プラグイン・プラットフォーム１を経由して、下記プラグインプログラム（追加プログラム）を呼び出す要求をプラグイン管理プログラム４に行う。
【００３２】
プラグインプログラム３は、アプリケーションの主機能となるプログラム群である。ここでは、例として、プラグインプログラムＡ、Ｂ、Ｃ、Ｄとする。
【００３３】
プラグイン管理プログラム４は、プラグインポイントと、プラグインプログラムとを関連付けて管理しており、プラグイン・プラットフォーム１を継承して作成される。このプラグイン管理プログラム４は、アプリケーションプログラム２からプラグインプログラム３の呼び出し要求を受けると、呼び出しＩ／Ｆにマッピングされているプラグインプログラム名称を元に、プラグインデータベース１１にダウンロードを要求する。また、プラグインプログラム３のダウンロード後には、ダウンロードしたプラグインプログラム３を実行する役目を担う。さらに、プラグインプログラム３の実行が終了すると、プラグアウトする役目も担う。
【００３４】
すなわち、上記プラグイン管理プログラム４は、所定のアプリケーションプログラムの中にあるプラグインポイントと、プラグインプログラムとを関連付けて管理しておき、所定のアプリケーションプログラムがプラグインポイントまで実行されると、そのプラグポイントに関連付けられたプラグインプログラムを所定の記憶手段（ＨＤＤもしくはネットワーク１５。例えば、複合機のＨＤＤや図１に示すサーバ）から取得し、取得したプラグインプログラムをメモリ（ＲＡＭ７）上で実行し、プラグインプログラムの実行が終了すると、この追加プログラムをメモリ上から削除（プラグアウト）する。
【００３５】
また、上記プラグイン管理プログラム４は、複数のユーザが一のアプリケーションプログラム２を同時に使用し、そのアプリケーションプログラム２からプラグインプログラムの追加要求を受けた場合、先にＲＡＭ７上にロードしたプラグインプログラムを複数のユーザ間で共有するようにする。つまり、複数のユーザが同じ機能（アプリケーションプログラム２）を同時に利用する場合（既にプラグインされているプログラムと同じものをプラグインしようとする場合）には、後のプラグイン動作を実行せずに、既にプラグインされているプログラムを複数のユーザ間で共有するようにする。
【００３６】
また、上記プラグイン管理プログラム４は、プラグインプログラムの実行開始条件に基づいて、そのプラグインプログラムの取得を待ち合わせる（保留する）ように制御する。ここで、プラグインプログラムの実行開始条件とは、例えば、プラグインプログラムの実行を開始する時間（時刻）、及び、プラグインプログラムを実行可能なＲＡＭ上の領域などが挙げられる（時間及び領域のうち少なくとも１つであればよい）。例えば、要求されたプラグインプログラムが即時実行ではない場合（実行開始時間が指定されている場合）や、非常駐プログラムを実行するためのＲＡＭ容量不足から、要求されたプラグインプログラムをＲＡＭ上にロードできない場合には、プラグインプログラムの追加を待ち合わせる。この時、プラグイン管理プログラム４は、プラグインスケジュールプログラム１０に対して、実行開始条件の登録を行う（プラグインスケジュールプログラム１０は、登録された実行開始条件が満たされたことを検出したら、プラグイン管理プログラム４に対して、取得を待ち合わせたプラグインプログラムの実行開始を要求する。この要求を受けて、プラグイン管理プログラム４は、要求されたプラグインプログラムの取得を行う）。
【００３７】
ユーザ情報プログラム５は、複合機を利用可能なユーザに関する情報（ユーザ情報）を管理する。ここでは、ユーザ毎に、複合機の利用頻度を集計する。
【００３８】
すなわち、上記ユーザ情報プログラム５は、ユーザ毎の複合機の使用回数を計数する。
【００３９】
プラグイン利用統計管理プログラム６は、ユーザ情報プラグラム５を継承して作成される。ユーザ毎に、プラグイン管理プログラム４がダウンロード要求したプラグインプログラム名と呼び出し回数（使用回数）を関連付けて利用統計を取る責務を担う。この利用統計情報は、システムプラグイン管理プログラム９が、ＲＡＭ７に常駐させるプラグインプログラムを決定する際に使用される。
【００４０】
すなわち、上記プラグイン利用統計管理プログラム６は、プラグインプログラムの使用回数を計数する。ここで、計数するプラグインプログラムの使用回数は、ユーザ毎の使用回数、又は、ユーザ全体（複合機全体（システム全体））の使用回数である。
【００４１】
ＲＡＭ７は、利用目的に応じて、以下の３つ領域に分かれている。
プラグイン非常駐領域７１：非常駐のプラグインプログラム実行領域
プラグイン常駐領域７２：常駐のプラグインプログラム実行領域
常駐領域７３：デバイス・ネットワークの制御等、どんな場合でも常駐させる必要があるプログラムの実行領域
【００４２】
ＲＡＭ領域管理プログラム８は、上記ＲＡＭ７の３つの領域（プラグイン非常駐領域７１、プラグイン常駐領域７２、常駐領域７３）を管理し、実装されているＲＡＭサイズとプラグインに利用可能なＲＡＭ容量を把握する。
【００４３】
システムプラグイン管理プログラム９は、常駐させるシステム共通のプラグインプログラムを管理する。
【００４４】
上記システムプラグイン管理プログラム９は、上記プラグイン利用統計管理プログラム６により計数されたプラグインプログラムの使用回数、すなわち、ユーザ毎の使用回数、又は、ユーザ全体（複合機全体（システム全体））の使用回数に基づいて、プラグインプログラムをＲＡＭ７上に常駐させるか否かを決定する。また、ユーザ情報プログラム５により計数されたユーザ毎の複合機の使用回数と、プラグイン利用統計管理プログラム６により計数されたユーザ毎の追加プログラムの使用回数とに基づいて、プラグインプログラムをＲＡＭ７上に常駐させるか否かを決定するようにしてもよい。
【００４５】
また、上記システムプラグイン管理プログラム９は、複合機の電源が落とされる（ＯＦＦにされる）前のＲＡＭ７上の状態（プラグインプログラムの常駐状態）を保持しておき、複合機の電源が再投入（再ＯＮ）された場合、保持しておいたＲＡＭ７上の状態に復帰させる。
【００４６】
プラグインスケジュールプログラム１０は、ＲＡＭ７の空き容量に問題があり、すぐにプラグインができない場合に、順番待ちを行う。また、アプリケーションプログラム２からプラグイン管理プログラム４を呼び出す場合に、Ｉ／Ｆ上に時刻を指定することも可能である。この場合にも、時間待ちを行う。さらには、プラグインプログラム３の実行中にエラーが発生した場合に、一定の時間後にリトライする場合にも、プラグインプログラム３がプラグイン管理プログラム４にリトライを報告することによって、このプラグインスケジュールプログラム１０のスケジュール配下におかれる。また、プラグインプログラム３の実行優先度、実行時刻を管理している。
【００４７】
プラグインデータベース１１は、プラグインプログラム３のデータベースである。
【００４８】
ハードウェア制御プログラム１２は、ＲＡＭ７のサイズを検出したり、ＨＤＤもしくはネットワークデバイス１３を制御したりする。
【００４９】
不揮発性メモリ１３は、ユーザ情報・プラグインプログラムの利用量統計値を記憶する。また、常駐しているプラグインプログラム名を保持する。
【００５０】
ユーザインタフェースプログラム１４は、ユーザからの入力操作（指示）を受け付ける。
【００５１】
図３は、プラグインプログラム本体に付加されている管理情報を示す図である。
図３において、「プラグインプログラム名称」は、プログラムの識別子となる。また、「実行優先度」は、例えば１から１０の番号が付加され、１が最高優先度、１０が最低優先度になっている。
【００５２】
次に、上述した構成を備えた複合機の動作の実施例について説明する。
以下の説明では、複合機を利用可能なユーザのログインが許可され、時刻指定のファクス送信機能が選択された場合を例とする。
また、利用するユーザが１名という一番基本的な例とし、同時並行で動作する他の機能はないものとする。
また、ファクス機能の実現には、読取制御のプラグインプログラムと送信制御のプラグインプログラムとが必要であるが、これら２つのプラグインプログラムは、複合機に常駐されていないものとする。
また、読取制御と送信制御を比較すると、実行優先度は読取制御の方が高いものとする。送信は、ユーザが複合機から離れてから実行してよいものであるからである。
【００５３】
図４のシーケンスチャートを参照して説明する。図４は、読取制御のプラグインプログラムのプラグインについての説明である。
【００５４】
所定のユーザインタフェースを介してユーザからファクスの実行指示を受け付けたユーザインタフェースプログラム１４は、アプリケーションプログラム２に対して、ファクス機能の実行要求を行う（ステップＳ１）。この時、ファクス送信を実行する時刻を示すパラメータ情報として、ユーザにより指定された送信時刻が送信される。
【００５５】
ファクス機能の実行要求を受けたアプリケーションプログラム２は、アプリケーションプログラム２中にある追加可能な部分（プラグインポイント）を検出する（ステップＳ２）。
【００５６】
アプリケーションプログラム２は、プラグイン管理プログラム４に対して、プラグインプログラムを呼び出す要求を行う（ステップＳ３）。この時、ファクス機能（プラグインプログラム）を実行する時刻が指示される。読取制御のプラグインプログラムに対しては即時、送信制御のプラグインプログラムに対しては上記送信時刻がそれぞれ指定される。
【００５７】
プラグインプログラムの呼び出し要求を受けたプラグイン管理プログラム４は、まずプラグインプログラムの存在場所を確認し（ステップＳ４）、そのプラグインプログラム名をシステムプラグイン管理プログラム９に通知する（ステップＳ５）。
【００５８】
その後、プラグイン管理プログラム４は、プラグインデータベース１１に対して、読取制御のプラグインプログラムのダウンロード要求を行う（ステップＳ６）。
【００５９】
また、プラグイン管理プログラム４は、プラグインスケジュールプログラム１０に対して、送信制御のプラグインプログラムのスケジューリング要求（送信時刻の登録要求）を行う（ステップＳ７）。なお、この後のシーケンスについては、図５を用いて後述する。
【００６０】
ダウンロード要求を受けたプラグインデータベース１１は、例えば、複合機内のＨＤＤやネットワーク上のサーバを参照し、参照結果を受け取った後（ステップＳ８）、プラグイン管理プログラム４に対して、ダウンロード要求結果（例えば、要求されたプラグインプログラムのダウンロードが可能であることを示す情報）を送る（ステップＳ９）。
【００６１】
ダウンロード要求結果を受けたプラグイン管理プログラム４は、読取制御のプラグインプログラムのダウンロードを開始し、プログラムが保存されているデータベースをリードし、ダウンロードが終了したら、プラグインデータベース１１に対して、ダウンロード終了を通知する（ステップＳ１０）。
【００６２】
そして、プラグイン管理プログラム４は、ダウンロードした読取制御のプラグインプログラムを直ちにＲＡＭ７上にロードし、読取制御を実施する（ステップＳ１１）。
【００６３】
読取制御が終了したら、プラグイン管理プログラム４は、システムプラグイン管理プログラム９に対して、この読取制御のプラグインプログラムをＲＡＭ７上に常駐するか否かを問い合せ、システムプラグイン管理プログラム９で判断された結果（問い合せに対する応答）を受け取る（ステップＳ１２）。
【００６４】
上記問い合せに対する応答を受けたプラグイン管理プログラム４は、システムプラグイン管理プログラム９で判断された結果に基づいて、ＲＡＭ７上から読取制御のプラグインプログラムをプラグアウトしたり、ＲＡＭ７上に読取制御のプラグインプログラムを常駐したりする（ステップＳ１３）。
【００６５】
次に、図５のシーケンスチャートを参照して説明する。図５は、送信制御のプラグインプログラムのプラグインについての説明である。
【００６６】
図４のステップＳ７でスケジューリング要求（送信時刻の登録）を受けたプラグインスケジュールプログラム１０は、その送信時刻を検出すると（ステップＳ２１）、プラグイン管理プログラム４に対して、送信制御のプラグインプログラムを即時に実行するように要求する（ステップＳ２２）。
【００６７】
送信制御のプラグインプログラムの即時実行要求を受けたプラグイン管理プログラム４は、まずプラグインプログラムの存在場所を確認し（ステップＳ２３）、プラグインデータベース１１に対して、送信制御のプラグインプログラムのダウンロード要求を行う（ステップＳ２４）。
【００６８】
ダウンロード要求を受けたプラグインデータベース１１は、例えば、複合機内のＨＤＤやネットワーク上のサーバを参照し、参照結果を受け取った後（ステップＳ２５）、プラグイン管理プログラム４に対して、ダウンロード要求結果（例えば、要求されたプラグインプログラムのダウンロードが可能であることを示す情報）を送る（ステップＳ２６）。
【００６９】
ダウンロード要求結果を受けたプラグイン管理プログラム４は、送信制御のプラグインプログラムのダウンロードを開始し、プログラムが保存されているデータベースをリードし、ダウンロードが終了したら、プラグインデータベース１１に対して、ダウンロード終了を通知する（ステップＳ２７）。
【００７０】
そして、プラグイン管理プログラム４は、ダウンロードした送信制御のプラグインプログラムを直ちにＲＡＭ７上にロードし、送信制御を実施する（ステップＳ２８）。
【００７１】
送信制御が終了し、ファクス送信にエラーが発生した場合には、プラグイン管理プログラム４は、システムプラグイン管理プログラム９に対して、この送信制御のプラグインプログラムをＲＡＭ７上に常駐するか否かを問い合せ、システムプラグイン管理プログラム９で判断された結果（問い合せに対する応答）を受け取る（ステップＳ２９）。
【００７２】
上記問い合せに対する応答を受けたプラグイン管理プログラム４は、システムプラグイン管理プログラム９で判断された結果に基づいて、ＲＡＭ７上から送信制御のプラグインプログラムをプラグアウトしたり、ＲＡＭ７上に送信制御のプラグインプログラムを常駐したりする（ステップＳ３０）。なお、プラグアウトの場合には、プラグイン管理プログラム４は、リトライに備えて、プラグインスケジュールプログラム１０にリトライ時刻を登録する（図示せず）。
【００７３】
ここで、本発明のポイントとなる、プラグイン管理プログラム４やシステムプラグイン管理プログラム９が、通常どのように動作するかについて説明する。
【００７４】
図６は、プラグイン管理プログラム４のプラグインプログラムロード意思決定の制御フローである。ここでは、複数のユーザが同時に複合機を利用し、同じ機能（アプリケーションプログラム）を利用する場合の動作を例として説明する。
【００７５】
プラグイン管理プログラム４は、システムプラグイン管理プログラム９に対して、プラグインプログラムとログインユーザ名を通知する（ステップ３１）。この通知を受けたシステムプラグイン管理プログラム９は、プラグイン統計管理プログラム６にプラグインプログラムとログインユーザ名を登録する。それ以降の処理は、図７を用いて後述する。
【００７６】
要求されているプラグインプログラムがＲＡＭ上に存在するか否かを判断する（ステップＳ３２）。既にＲＡＭ上に存在する場合（ステップＳ３２／ＮＯ）は、ステップＳ３２へ進む。
【００７７】
ＲＡＭ上に存在しない場合（ステップＳ３２／ＹＥＳ）は、その要求されているプラグインプログラムが即時実行か否かを判断する（ステップＳ３３）。即時実行ではない場合（ステップＳ３３／ＮＯ）、プラグインスケジュールプログラム１０にスケジュール（実行時刻）を登録し（ステップＳ３５）、一連の処理を終了する。
【００７８】
即時実行である場合（ステップＳ３３／ＹＥＳ）、ＲＡＭ上に、実行に必要な領域を確保できるか否かを判断する（ステップＳ３４）。領域を確保できない場合（ステップＳ３４／ＮＯ）、プラグインスケジュールプログラム１０にスケジュール（実行時刻）を登録し（ステップＳ３５）、一連の処理を終了する。
【００７９】
領域を確保できる場合（ステップＳ３４／ＹＥＳ）、要求されているプラグインプログラムのダウンロードを実行する（ステップＳ３６）。
【００８０】
ダウンロードしたプラグインプログラムの実行カウンタをインクリメントする（ステップＳ３７）。この実行カウンタは、不揮発性メモリ１３に記憶されており、プラグインプログラム名（プラグインモジュール名）とそれに対応して記憶されている。初めてプラグインされた場合には、実行カウンタが０から１にインクリメントされる。別のユーザが、同じ機能を同時に利用する場合、つまり、既にプラグインされているプログラムと同じものをプラグインしようとする場合には、この実行カウンタが１から２にインクリメントされるだけで、後のプラグイン動作を実行せずに、既にプラグインされているプログラムを共有し実行する。
【００８１】
ダウンロードしたプラグインプログラムを実行する（ステップＳ３８）。
【００８２】
プラグインプログラムの実行が終了すると、実行カウンタをディクリメントする（ステップＳ３９）。
【００８３】
実行カウンタが０になったかどうかを判断する（ステップＳ４０）。実行カウンタが０ではない場合（ステップＳ４０／ＮＯ）、一連の処理を終了する。
【００８４】
実行カウンタが０である場合（ステップＳ４０／ＹＥＳ）、システムプラグイン管理プログラム９に対して、プラグインプログラムを常駐とするか、又は、プラグアウトするかを問い合せる（ステップＳ４２）。
【００８５】
システムプラグイン管理プログラム９での判断結果を受け取り、その判断結果が、常駐とする旨の応答か、又は、常駐としない旨の応答かを判断する（ステップＳ４２）。常駐とする場合（ステップＳ４２／ＹＥＳ）、一連の処理を終了する。
【００８６】
常駐としない場合（ステップＳ４２／ＮＯ）、プラグインプログラムのプラグアウト処理を行い（ステップＳ４３）、一連の処理を終了する。このように、プラグアウト処理は、実行カウンタが０になったときだけ行われる。
【００８７】
図７は、システムプラグイン管理プログラム９の常駐意思決定の制御フローである。
【００８８】
図６のステップＳ３１で説明したように、システムプラグイン管理プログラム９は、プラグイン管理プログラム４からプラグインプログラムとログインユーザ名の通知を受け、プラグイン統計管理プログラム６にプラグインプログラムとログインユーザ名を登録する（ステップＳ５１）。上述したように、プラグイン利用統計管理プログラム６は、ユーザ毎に、プラグイン管理プログラム４がダウンロード要求したプラグインプログラム名と呼び出し回数とを関連付けて利用統計を取っており、この利用統計情報は、ＲＡＭ７に常駐させるプラグインプログラムを決定する際に使用される。
【００８９】
次に、システムプラグイン管理プログラム９は、通知されたプラグインプログラムを常駐プログラムとして、ＲＡＭ上に追加するか否かを判断する（ステップＳ５２）。この判断は、プラグイン利用統計管理プログラム６の利用統計情報（通知されたプラグインプログラムのユーザ別の利用回数、又は、通知されたプラグインプログラムのシステム全体（全ユーザ）の利用回数）に基づいて行われる。
【００９０】
ＲＡＭ上に追加する場合（ステップＳ５２／ＹＥＳ）、不揮発性メモリ１３に記憶されている常駐プログラム情報（プログラム名）を更新し（ステップＳ５３）、プラグイン管理プログラム４に対して、プラグアウトの有無の結果の応答を行い（ステップＳ５４）、一連の処理を終了する。
【００９１】
ＲＡＭ上に追加しない場合（ステップＳ５２／ＮＯ）、プラグイン利用統計管理プログラム６の利用統計情報（ユーザ別・システム全体）から、常駐プログラムを変更するか否かを判断する（ステップＳ５５）。変更しない場合（ステップＳ５５／ＮＯ）、プラグイン管理プログラム４に対して、プラグアウトの有無の結果の応答を行い（ステップＳ５４）、一連の処理を終了する。
【００９２】
変更する場合（ステップＳ５５／ＹＥＳ）、不揮発性メモリ１３に記憶されている常駐プログラム情報（プログラム名）を更新し（ステップＳ５６）、プラグイン管理プログラム４に対して、プラグアウトの有無の結果の応答を行い（ステップＳ５４）、一連の処理を終了する。
【００９３】
以上説明したように、システムプラグイン管理プログラム９は、プラグイン利用統計管理プログラム６と連携し、ユーザ別あるいはシステム全体の利用状況を把握し、常駐するプログラムを決定する。例えば、ユーザ別の場合、ログイン回数が多い５名のユーザの中で、利用回数の多いプラグインプログラム（プラグインモジュール）を１０個常駐するということを可能にする。よって、上記実現のためには、プラグイン利用統計管理プログラム６における、ユーザの管理・利用統計の管理が必須となる。
【００９４】
なお、図７では、プラグイン利用統計管理プログラム６における利用統計情報を用いて常駐するか否かの判断を行ったが、ユーザ情報プログラム５で集計される、ユーザ毎の複合機の使用回数（使用頻度）も合わせて判断するようにしてもよい。すなわち、ユーザ毎の、複合機の使用回数と、プラグインプログラムの利用回数とに基づいて、上記判断が行われる。よって、複合機の使用頻度の高いユーザが利用するプラグインプログラムを常駐させることができる。
【００９５】
また、システムプラグイン管理プログラム９は、複合機の電源を落とす（電源ＯＦＦ）前におけるＲＡＭ上の状態（プラグインプログラムの常駐状態）を所定の記憶手段（例えば不揮発性メモリ１３）に保存しておき、電源の再投入（電源ＯＮ）時には、不揮発性メモリ１３に記憶されている常駐プログラム情報（常駐プラグインプログラム名）を読み出して、ＲＡＭ上におけるプラグインプログラムの常駐状態を復帰させるようにしてもよい。
【００９６】
以上説明したように、本発明によれば、プラグイン・プラットフォームを利用し、必要なプログラムのプラグイン・プラグアウトを自動的に実行できるので、ＲＡＭ上に常駐させるプログラムサイズを削減できる。これにより、複合機に実装するＲＡＭサイズを削減し、コストダウンが可能となる。また、実行しているプログラムがＲＡＭを十分使うことができ、印刷性能・配信・転送性能の向上が期待できるため、コストパフォーマンスを向上できる。
【００９７】
必要なときにＲＡＭ上にプログラムをロードするようにすると、機能の操作性向上につながらないが、本発明では、複合機の機能で頻繁に使用するプログラムをＲＡＭ上に常駐させることができるので、ＨＤＤあるいはネットワークからメモリにロードする時間（プログラムの起動時間）を節約できる。これにより、印刷性能・配信・転送性能を向上させることが期待でき、ユーザの操作性を向上することができる。
【００９８】
複合機は複数のユーザで使用することがあり、使用頻度の高いユーザがストレスを感じることがあるが、本発明では、複合機の使用頻度の高いユーザが利用するプログラムを常駐させることが可能である。これにより、印刷性能・配信・転送性能を向上させることができ、使用頻度の高いユーザがストレスを感じることがなく、ユーザの操作性を向上することができる。
【００９９】
偶然にも、複数のユーザ間で同時に同じ機能を使用する場合もあるが、本発明では、このような場合に、追加プログラムを共有化することによってＲＡＭの削減が可能である。これにより、印刷性能・配信・転送性能を向上させることができ、ユーザの操作性を向上することができる。
【０１００】
プログラムの種別によっては、直ちにプログラムを実行する必要がないものがあるが、本発明では、必要なときにＲＡＭ上に追加プログラムをロードすることによって、不要なＲＡＭ利用を防ぐことができる。これにより、印刷性能・配信・転送性能を向上させることができ、ユーザの操作性を向上することができる。
【０１０１】
ＲＡＭは有限であるため、常駐させる追加プログラムの増加によって、ＲＡＭ上に追加プログラムをロードできない場合があるが、本発明では、このような場合にも確実に機能をユーザに提供することが可能である。これにより、ユーザの操作性を向上することができる。
【０１０２】
複合機の電源ＯＦＦ後の復旧時に、操作性を保つことも必要である。本発明では、電源をＯＦＦにしても前の状態に復帰することが可能であり、電源をＯＦＦにした後でも常にユーザが期待する操作性を発揮できる。これにより、ユーザの操作性を向上することができる。
【０１０３】
以上、本発明の実施例について説明したが、上記実施例に限定されるものではなく、その要旨を逸脱しない範囲において種々の変形が可能である。
【０１０４】
例えば、上述した実施例における制御動作は、ハードウェア、または、ソフトウェア、あるいは、両者の複合構成によって実行することも可能である。
【０１０５】
なお、ソフトウェアによる処理を実行する場合には、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれているコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
【０１０６】
例えば、プログラムは、記録媒体としてのハードディスクやＲＯＭ（Read Only Memory）に予め記録しておくことが可能である。
【０１０７】
あるいは、プログラムは、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ(Compact Disc Read Only Memory)，ＭＯ(Magneto optical)ディスク，ＤＶＤ(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的、あるいは、永続的に格納（記録）しておくことが可能である。
【０１０８】
このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することが可能である。
【０１０９】
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、ＬＡＮ(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送したりし、コンピュータでは、転送されてきたプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることが可能である。
【０１１０】
また、上記実施例で説明した処理動作に従って時系列的に実行されるのみならず、処理を実行する装置の処理能力、あるいは、必要に応じて並列的にあるいは個別に実行するように構築することも可能である。
【産業上の利用可能性】
【０１１１】
本発明は、所定のプログラムの実行中に、別のプログラムをプラグインし、プラグインしたプログラムを実行する装置・機器、システム、方法、プログラムに適用できる。
【図面の簡単な説明】
【０１１２】
【図１】本発明の一実施例であるプラグイン複合機とサーバの関係を示す概念図である。
【図２】図１に示す複合機の要部構成を示すブロック図である。
【図３】プラグインプログラム本体に付加されている管理情報を示す図である。
【図４】読取制御のプラグインプログラムのプラグイン時の動作を示すシーケンスチャートである。
【図５】送信制御のプラグインプログラムのプラグイン時の動作を示すシーケンスチャートである。
【図６】プラグイン管理プログラムのプラグインプログラムロード意思決定の制御フローを示すフローチャートである。
【図７】システムプラグイン管理プログラムの常駐意思決定の制御フローを示すフローチャートである。
【符号の説明】
【０１１３】
１    プラグイン・プラットフォーム
２    アプリケーションプログラム
３    プラグインプログラム
４    プラグイン管理プログラム
５    ユーザ情報プログラム
６    プラグイン利用統計管理プログラム
７    ＲＡＭ（メモリの一例）
８    ＲＡＭ領域管理プログラム
９    システムプラグイン管理プログラム
１０    プラグインスケジュールプログラム
１１    プラグインデータベース
１２    ハードウェア制御プログラム
１３    不揮発性メモリ
１４    ユーザインタフェースプログラム
１５    ＨＤＤもしくはネットワーク
１６    ＲＯＭ（Read Only Memory）
１７    ＯＳ
【図１】
2009037353.tif 000003
【図２】
2009037353.tif 000004
【図３】
2009037353.tif 000005
【図４】
2009037353.tif 000006
【図５】
2009037353.tif 000007
【図６】
2009037353.tif 000008
【図７】
2009037353.tif 000009