(57)【要約】【課題】外部より提供されたアプリケーションプログラムの登録及び実行が可能な環境において、登録されたアプリケーションプログラム間において利用する通信ポートが重複することを防止する。【解決手段】外部装置よりアプリケーションプログラムの提供を受け、提供されたアプリケーションプログラムを実行可能な環境において、ポート番号記憶部1512は使用中のポートを示す使用中情報を保持する。管理アプリケーション1504のインストーラは、新たに提供されるアプリケーションプログラムが使用を要求するポートを示す要求情報を取得し、使用中情報と要求情報とに基づいて新たに提供されるアプリケーションプログラムが使用すべきポートを決定する。そして、決定されたポートを使用中情報としてポート番号記憶部1512に登録する。また、使用すべきポートが決定された場合は、新たに提供されるアプリケーションプログラムを、該決定されたポート用いて実行可能に登録される。【選択図】  図２
2006338268.tif 000002
【特許請求の範囲】
【請求項１】
外部装置よりアプリケーションプログラムの提供を受け、提供されたアプリケーションプログラムを実行可能なデータ処理装置であって、
ネットワーク通信で使用される少なくとも１つの通信ポートのうち前記データ処理装置内のアプリケーションプログラムで使用中の通信ポートを示す使用中情報を保持する保持手段と、
新たに提供されるアプリケーションプログラムが使用を要求する通信ポートを示す要求情報を取得する取得手段と、
前記使用中情報と前記要求情報とに基づいて前記新たに提供されるアプリケーションプログラムが使用する通信ポートを決定する決定手段と、
前記決定手段で決定された通信ポートを前記使用中情報に登録する第１登録手段とを備えることを特徴とするデータ処理装置。
【請求項２】
前記要求情報は、アプリケーションプログラムが使用する複数の通信ポートと優先順位の記述を含み、
前記決定手段は、前記使用中情報によって未使用と判定された通信ポートのうち、前記要求情報で最も優先順位の高い通信ポートを前記アプリケーションプログラムが使用する通信ポートに決定することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記決定手段で通信ポートが決定された場合、前記新たに提供されるアプリケーションプログラムを、該決定された通信ポート用いて実行可能に登録する第２登録手段を有し、
前記決定手段によって使用すべきポートを決定できなかった場合は、前記第２登録手段による当該アプリケーションプログラムの登録を禁止する禁止手段をさらに備えることを特徴とする請求項１に記載のデータ処理装置。
【請求項４】
前記保持手段に保持される使用中情報は、登録されたアプリケーションを示すアプリケーション識別情報と、該アプリケーションによって使用されるポートを示すポート識別情報とを対応付けた情報であることを特徴とする請求項１に記載のデータ処理装置。
【請求項５】
外部装置よりアプリケーション識別情報を含むポート通知要求を受信し、該ポート通知要求に含まれるアプリケーション識別情報に対応するポート識別情報を前記使用中情報から取得し、取得したポート識別情報を該外部装置へ通知する通知手段をさらに備えることを特徴とする請求項４に記載のデータ処理装置。
【請求項６】
前記使用中情報はＭＩＢに登録されており、
前記通知手段は、ＳＮＭＰプロトコルを用いてポート識別情報を通知することを特徴とする請求項５に記載のデータ処理装置。
【請求項７】
前記新たに提供されるアプリケーションプログラムに関する情報を記述したマニフェストファイルを取得し、該マニフェストファイルから前記要求情報を抽出する抽出手段をさらに備えることを特徴とする請求項１に記載のデータ処理装置。
【請求項８】
外部装置よりアプリケーションプログラムの提供を受け、提供されたアプリケーションプログラムを実行可能であり、データ処理装置に着脱可能なネットワーク基板であって、
ネットワーク通信で使用される少なくとも１つの通信ポートのうち前記ネットワーク基板内のアプリケーションプログラムで使用中の通信ポートを示す使用中情報を保持する保持手段と、
新たに提供されるアプリケーションプログラムが使用を要求する通信ポートを示す要求情報を取得する取得手段と、
前記使用中情報と前記要求情報とに基づいて前記新たに提供されるアプリケーションプログラムが使用する通信ポートを決定する決定手段と、
前記決定手段で決定された通信ポートを前記使用中情報に登録する第１登録手段とを備えることを特徴とするネットワーク基板。
【請求項９】
外部装置よりアプリケーションプログラムの提供を受け、提供されたアプリケーションプログラムを実行可能に登録する、データ処理装置へのアプリケーションプログラム登録方法であって、
ネットワーク通信で使用される少なくとも１つの通信ポートのうち前記データ処理装置内のアプリケーションプログラムにおいて使用中の通信ポートを示す使用中情報をメモリに保持する保持工程と、
新たに提供されるアプリケーションプログラムが使用を要求する通信ポートを示す要求情報を取得する取得工程と、
前記使用中情報と前記要求情報とに基づいて前記新たに提供されるアプリケーションプログラムが使用する通信ポートを決定する決定工程と、
前記決定工程で決定された通信ポートを前記使用中情報に登録する第１登録工程とを備えることを特徴とするアプリケーションプログラム登録方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷装置やスキャナ装置等のデータ処理装置、及びこれに装着されるネットワークインターフェース基板に関し、特にデータ処理装置やネットワークインターフェース基板によるアプリケーションプログラム登録方法に関する。
【背景技術】
【０００２】
近年、インターネットの普及により、印刷装置もネットワークで使われる形態が一般化してきた。特に、高速機やカラー機などの高価格機ではネットワークインターフェイスは内蔵される傾向にある。しかしながら、低価格なモノクロ機の場合には、ネットワークインターフェイスは本体には同梱されず、ネットワークカードモジュールとして別に供給される形態が一般的である。
【０００３】
この場合、印刷装置本体とネットワークカードモジュールは個々にＣＰＵを持ったインテリジェントな形態を有し、通常、ネットワークカードモジュール側にネットワーク経由での各種プリントサービスの統括制御を行なうプリントサーバ機能が備えられている。そして、印刷装置とネットワークカードモジュールは、接続インターフェイスを介して通信を行なうことにより、所望のサービスを実現している。このことは逆に負荷の重いネットワークサービスをネットワークカードモジュールに追い出すことが可能となり、相対的に印刷装置本体のＣＰＵや周辺パフォーマンスを下げることが可能となり、印刷装置本体のコスト削減をもたらしている。
【０００４】
従来のネットワークインターフェイスは例えばＬＰＲ（RFC1179）に代表されるように、印刷データの送信だけできれば十分であった。しかしながら、昨今では印刷装置による情報管理というニーズが高くなり、付加技術として各種の手段が提供されている。最も単純な例が、印刷データを送信するポートに情報管理データ（ジョブ制御言語＝JobLanguage）を付加する形態である。ジョブ制御言語は印刷データを送るポートを共有する形態であるため、サービスポートを増加せずに済み、比較的実装が簡単である。しかしながら、印刷データ受信中に印刷データが大量に送信されるとポートが占有されるため、情報管理データのやりとりが止まってしまうという問題がある。また、ネットワークにおけるＬＰＲプロトコルのような片方向型コネクションの場合、そもそも情報取得ができないという課題がある。
【０００５】
別の手法としては、ＳＮＭＰ／ＭＩＢ（RFC1157）を使って情報管理データを通信する方式がある。この方式では、データ送受信用の専用ポートが使用され、標準規格であるＳＮＭＰ(SimpleNetwork Management Protocol）が用いられる。しかしこの方式は、ＳＮＭＰを受信してユーザインターフェース（ＵＩ）を提供する専用クライアントプログラムの独自開発が必要となる。また、この方式は、そもそも単純な情報のやり取りを行うプロトコルであるため、数字、文字列などの単純なデータベースしか提供できない。その結果、機器の構成を示すビットマップ画像などのＵＩを構成するための情報は、上記クライアントプログラムが所有せねばならず、それに伴いクライアントプログラムを機種毎に対応させなければならないという課題がある。
【０００６】
さらに最近では、情報管理データの通信にＨＴＴＰプロトコル（RFC1945,RFC2616）を用いた方式が主流となりつつある。この方式では、ネットワークカードモジュールの中にＨＴＴＰサービスと、機器情報に関するＨＴＭＬデータやビットマップ画像といったＷＥＢコンテンツが提供される。クライアント装置は、一般的なＷＥＢブラウザを使用して上記ＷＥＢコンテンツをＧＵＩ上に表示し、操作を可能とすることができる。従ってこのような方式を用いれば、ＳＮＭＰを用いた上記手法と同様のＵＩを提供するために、機種毎にクライアントプログラムを用意する必要がなくなる。すなわち、ＳＮＭＰを用いた方式ではクライアントプログラムが多種多様な機器に固有の情報（メッセージ文字列、ビットマップ画像）を管理する必要があったのに対して、ＨＴＭＬを用いた方式では機器が自分の機種情報だけ持てばよい。そのため、上記ＨＴＭＬを用いた方式は短期間で製品を提供するのにもっとも適する方法である。
【０００７】
しかしならが、上記述べたいずれの方法も、ネットワークカードモジュールに予め組み込まれた静的な機能を提供するものである。すなわち、後から機能そのものを追加する、或いは、組み込まれた機能による制御方法を変更するといった動的なサービスの追加はできなかった。そこで最近になってＪａｖａ（登録商標）（米国Sun Microsystems, Inc.の商標）言語を用いて作成されたアプリケーションプログラムを組み込み、機器上に実装されたＪａｖａ（登録商標）仮想マシン上で動作可能とするプラットフォーム技術が提案されている。この技術を用いることで、印刷装置等における組み込み機器に後から新たな機能を追加することが可能となってきている（特許文献１，２，３を参照）。
【０００８】
上記述べたＪａｖａ（登録商標）仮想マシンにはネットワーク通信機能を始め、組み込み機器を制御するために必要な各種機能を提供するためにアプリケーションプログラムインタフェース（ＡＰＩ）が備わっている。上記Ｊａｖａ（登録商標）言語で作成されたアプリケーションプログラムはこれらのＡＰＩを呼び出して組み込み機器に対する制御やネットワークで接続されたホストコンピュータからの要求を処理する。
【特許文献１】特開２００３−３３０６７１号公報
【特許文献２】特開２０００−２９８５６１号公報
【特許文献３】特開２００１−０９２７７９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上記Ｊａｖａ（登録商標）仮想マシン上で提供されるＡＰＩは、ネットワーク通信に必要な機能を含んでおり、ネットワーク通信プロトコルの処理を行なう基本モジュールを共有するため、通常ネットワークカードモジュール上に実装される。しかしながら印刷装置本体と別個にＣＰＵを備えるインテリジェント型ネットワークカードモジュールの場合、共通化による開発コスト低減と量産効果による生産コスト削減のために、通常複数のモデルの印刷装置に接続可能な設計が求められる。そのため、特定の機種でしか機能しないもしくは必要のないアプリケーションプログラムが追加されたネットワークカードモジュールが他の印刷装置に装着される可能性がある。そのような場合、その印刷装置では機能しないアプリケーションプログラムが起動される可能性が生じてしまう。
【００１０】
また、前述のＪａｖａ（登録商標）仮想マシンを備えた印刷装置に後から新たな機能を機器に追加した場合、後から追加されたアプリケーションプログラムが起動する場合に何ら起動を制限するものではなかった。
【００１１】
更に、新たな機能を機器に追加することを目的として作成されるアプリケーションプログラム（以下、追加アプリケーションプログラムと呼ぶ）は、サードパーティによって作成され提供されることもある。そのため、追加アプリケーションプログラム同士、或いは予め機器に組み込まれているシステムモジュールと追加アプリケーションプログラムとの間で、ネットワーク通信に利用される通信ポートが競合する可能性がある。この場合、それらのプロセスが同時に動作している時には正常な通信ができなくなったり、どちらかのプロセスが強制終了されてしまうなどの問題が発生することがあった。
【００１２】
本発明は上記の課題に鑑みてなされたものであり、外部より提供されたアプリケーションプログラムの登録及び実行が可能な環境において、登録されたアプリケーションプログラム間において利用する通信ポートが重複することを防止し、登録されたアプリケーションプログラムが確実に動作可能とすることを目的とする。
【課題を解決するための手段】
【００１３】
上記の目的を達成するための本発明の一態様によるデータ処理装置は以下の構成を備える。すなわち、
外部装置よりアプリケーションプログラムの提供を受け、提供されたアプリケーションプログラムを実行可能なデータ処理装置であって、
ネットワーク通信で使用される少なくとも１つの通信ポートのうち前記データ処理装置内のアプリケーションプログラムで使用中の通信ポートを示す使用中情報を保持する保持手段と、
新たに提供されるアプリケーションプログラムが使用を要求する通信ポートを示す要求情報を取得する取得手段と、
前記使用中情報と前記要求情報とに基づいて前記新たに提供されるアプリケーションプログラムが使用する通信ポートを決定する決定手段と、
前記決定手段で決定された通信ポートを前記使用中情報に登録する第１登録手段とを備える。
【００１４】
また、上記の目的を達成するための本発明の一態様によるネットワーク基板は以下の構成を備える。すなわち、
外部装置よりアプリケーションプログラムの提供を受け、提供されたアプリケーションプログラムを実行可能であり、データ処理装置に着脱可能なネットワーク基板であって、
ネットワーク通信で使用される少なくとも１つの通信ポートのうち前記ネットワーク基板内のアプリケーションプログラムで使用中の通信ポートを示す使用中情報を保持する保持手段と、
新たに提供されるアプリケーションプログラムが使用を要求する通信ポートを示す要求情報を取得する取得手段と、
前記使用中情報と前記要求情報とに基づいて前記新たに提供されるアプリケーションプログラムが使用する通信ポートを決定する決定手段と、
前記決定手段で決定された通信ポートを前記使用中情報に登録する第１登録手段とを備える。
【００１５】
さらに、上記の目的を達成するための本発明の一態様によるアプリケーションプログラム登録方法は、
外部装置よりアプリケーションプログラムの提供を受け、提供されたアプリケーションプログラムを実行可能に登録する、データ処理装置へのアプリケーションプログラム登録方法であって、
ネットワーク通信で使用される少なくとも１つの通信ポートのうち前記データ処理装置内のアプリケーションプログラムにおいて使用中の通信ポートを示す使用中情報をメモリに保持する保持工程と、
新たに提供されるアプリケーションプログラムが使用を要求する通信ポートを示す要求情報を取得する取得工程と、
前記使用中情報と前記要求情報とに基づいて前記新たに提供されるアプリケーションプログラムが使用する通信ポートを決定する決定工程と、
前記決定工程で決定された通信ポートを前記使用中情報に登録する第１登録工程とを備える。
【発明の効果】
【００１６】
本発明によれば、外部より提供されたアプリケーションプログラムの登録及び実行が可能な環境において、登録されたアプリケーションプログラム間において利用する通信ポートが重複することを防止できるので、登録されたアプリケーションプログラムが確実に動作可能となる。
【発明を実施するための最良の形態】
【００１７】
以下、添付の図面を参照して本発明の好適な実施形態を説明する。
【００１８】
＜第１実施形態＞
図１は、本発明の実施形態に関わる印刷システムのハードウェア構成を説明するブロック図である。図１に示されるように、プリンタ１０００の制御系は、大きく分けて、ネットワークプリンタサーバ１５００とプリンタコントローラ１６００の２つの制御系で構成される。ネットワークプリントサーバ１５００において、ネットワークプリントサーバ用ＣＰＵ１は、書き換え可能なFlashROM３に記憶された制御プログラムに基づいて各種制御を実行する。例えば、ＣＰＵ１は、システムバス４に接続されるネットワークコントローラ（ＬＡＮＣ５）を介してローカルエリアネットワーク（ＬＡＮ２０００）に接続された外部装置（不図示）との間で、所定のネットワーク通信プロトコルを用いた通信を行う。そして、ＣＰＵ１は、外部装置から送られる印刷データやプリンタ制御命令等の各種データ送受信要求を統括的に処理し、拡張インタフェースコントローラ（ＥＸＰＣ７）を介して接続されるプリンタコントローラ１６００に対して適切なデータ転送を行なう。なお、FlashROM３には、図１０、図１４、図４、図５、図６のフローチャートで示されるようなＣＰＵ１の制御プログラムが記憶されている。
【００１９】
ＲＡＭ２はＣＰＵ１の主メモリ、ワークエリア等の一時記憶領域として用いられる。ＬＥＤ６はネットワークプリントサーバ１５００の動作状態を示す表示部として用いられる。例えばネットワークコントローラ（ＬＡＮＣ５）とローカルエリアネットワーク（ＬＡＮ２０００）の電気的な接続状態（ＬＩＮＫ）やネットワーク通信モード（10Baseや100Base、全二重、半二重）等の各種動作状態をＬＥＤの点滅パターンや色で示す。また、拡張インタフェース１７は、ネットワークプリントサーバ１５００とプリンタコントローラ１６００を繋ぐためのコネクタ（不図示）を含んで構成されている。このコネクタにより、ネットワークプリントサーバ１５００はプリンタ１０００に着脱可能であり、同じ構成を持つ別のプリンタにネットワークプリントサーバ１５００を装着することも可能となっている。
【００２０】
プリンタコントローラ１６００において、プリンタコントローラ用ＣＰＵ８は、ＲＯＭ９に記憶された制御プログラム、或いは外部メモリ１０に記憶されている制御プログラムやリソースデータ（資源情報）等に基づいて各種制御を実行する。例えば、ＣＰＵ８は、システムバス１１に接続された各種デバイスとのアクセスを統括的に制御する。なお、外部メモリ１０はディスクコントローラ（ＤＫＣ１５）を介してシステムバス１１に接続されている。また、ＣＰＵ８の制御下で、プリンタコントローラ１６００は拡張インタフェースコントローラ（ＥＸＰＣ１３）を介して接続されたネットワークプリントサーバ１５００から印刷データを受信する。ラスタコントローラ１２は、受信した印刷データを基に出力画像情報を生成し、プリントエンジン１６に対して画像信号を出力する。
【００２１】
ＲＡＭ１４はＣＰＵ８の主メモリ、ワークエリア等として機能する。なお、ＲＡＭ１４のメモリ容量は、不図示の増設ポートに接続されるオプションＲＡＭにより拡張することができるように構成されている。操作パネル（操作部）１８には、プリンタ１０００の動作モード等の設定や印刷データの取り消し等の操作を行なうためのボタンおよびプリンタ１０００の動作状態を示す液晶パネルやＬＥＤ等の表示部が配されている。
【００２２】
なお、図１で示したプリンタエンジン１６は既知の印刷技術を利用するものである。好適な実施形態としては、例えば電子写真方式（レーザービーム方式）やインクジェット方式、昇華方方式（熱転写方式）等が挙げられる。
【００２３】
図２は、本実施形態の印刷システムにおけるプリンタ１０００内の２つの制御系（ネットワークプリントサーバ１５００およびプリンタコントローラ１６００）の各記憶デバイスに記憶された制御プログラム内のソフトウェア構成を説明するブロック図である。なお上記各制御プログラムは各制御系のＣＰＵ１，８によってプログラムが解析され処理される。
【００２４】
オペレーティングシステム１５０１は、ネットワークプリントサーバ１５００の基本的なデータの入出力制御を統括する。また、オペレーティングシステム１５０１内にはプログラム／データ記憶部１５０９との入出力制御を行なうファイルシステム１５０５、プリンタコントローラ１６００と拡張インタフェース１７を介して通信制御を行なう拡張インタフェースドライバ１５０６、ローカルエリアネットワーク（ＬＡＮ２０００）の通信媒体を介して不図示のホストコンピュータ等の外部装置と通信を行なうネットワークインタフェースドライバ１５０７を内包している。
【００２５】
ユーザアプリケーション１５０３や管理アプリケーション１５０４等のアプリケーションプログラムはオペレーティングシステム１５０１により実行が管理される。管理アプリケーション１５０４は、プリンタ１０００やユーザアプリケーションプログラムの登録・管理を行う。アプリケーションプログラムインタフェース（ＡＰＩ）１５０２は、これらネットワークプリントサーバ１５００で動作するアプリケーションプログラムに対して、オペレーティングシステム１５０１が備える各種機能を提供する。なお、アプリケーションプログラムインタフェース１５０２で提供される機能としては、
・印刷データの送受信機能を提供するデータ転送ＡＰＩ、
・ビットマップ画像や表示メッセージ等のリソースデータの入出力制御を行なうリソース制御ＡＰＩ、
・プリンタ１０００の再起動や設定値の初期化や設定等の制御を行なうプリンタ制御ＡＰＩ、
・印刷ジョブの取り消しや再印刷指示などを制御するジョブ制御ＡＰＩ、
・ネットワークプリントサーバ１５００の再起動や設定値の初期化や設定、およびアプリケーションプログラムの起動、登録、削除を行なうプリントサーバ制御ＡＰＩが含まれる。
【００２６】
オペレーティングシステム１６０１はプリンタコントローラ１６００の各種処理制御を統括する。オペレーティングシステム１６０１は、内部にプリントエンジン制御部１６０３とファイルシステム１６０４を内包する。プリントエンジン制御部１６０３は、プリントエンジンとの通信制御を行なう。また、ファイルシステム１６０４は、機種依存リソース／プログラム記憶部１６１０との入出力制御を行なう。機種依存リソース／プログラム記憶部１６１０には、ネットワークプリントサーバ１５００から参照されるＵＩ用のビットマップ画像やエラーメッセージ等の機種依存リソースや、ネットワークプリントサーバ１５００上で動作する機種依存アプリケーションプログラム等が記憶されている。
【００２７】
拡張インタフェース制御部１６０２は、拡張インタフェース１７を介してネットワークプリントサーバ１５００との通信制御を行なうもので、
・制御種別毎に印刷データの入出力を制御するデータ転送論理インタフェース、
・機種依存リソース／プログラム記憶部１６１０に記憶された各種データの入出力を制御するリソース制御論理インタフェース、
・プリンタ１０００の再起動や設定値の初期化や設定等の制御を行なうプリンタ制御論理インタフェース、
・印刷ジョブの取り消しや再印刷指示などを制御するジョブ制御論理インタフェースを備えている。各論理インタフェースは、ネットワークプリントサーバ１５００から要求された命令をオペレーティングシステム１６０１に対して転送し、その処理結果をネットワークプリントサーバ１５００に対して返信する。
【００２８】
図３は、ネットワークプリントサーバ１５００で動作するアプリケーションプログラムの記述例を示す図である。本実施形態では、一例としてＪａｖａ（登録商標）言語による記述例を示している。参照番号３０１で示される行は、図２で説明したデータ転送ＡＰＩを呼び出す例であり、“printer.outdata(“Test”)”がデータ転送ＡＰＩである。ここでは“Test”というテキストデータを印字データとしてプリンタコントローラを介してプリントエンジンから印刷せよという命令であり、処理結果が“result”に数値型として格納される。また、参照番号３０２で示される行は、参照番号３０１で示される行において指示された処理結果を標準出力先（例えばプリンタ１０００の操作パネル１７のＬＣＤ表示部やアプリケーションプログラムを呼び出し元であるホストコンピュータのブラウザ表示部）にテキストメッセージ変換して表示する命令の記述例である。
【００２９】
次に、本実施形態のネットワークプリントサーバ１５００へのアプリケーションプログラムのインストールについて説明する。
【００３０】
図１０は、ネットワークプリントサーバ１５００上で動作するアプリケーションプログラムのためのインストール処理例を示すフローチャートである。図１０に示される処理の軌道に先立って、ホストコンピュータ等のクライアント上でアプリケーションプログラムインストーラが起動されると、アプリケーションプログラムインストーラはホストコンピュータ等のクライアント上に図１１に示すユーザインターフェースを表示する。ユーザはこのインターフェースによりインストールすべきアプリケーションプログラムを指定するとともに、ライセンスコードを入力する。必要な入力がなされ、ＯＫボタンがクリックされると、アプリケーションインストーラは、アプリケーションプログラムを指定する情報とライセンスコードを含むインストール要求をネットワークプリントサーバ１５００に送信する。ネットワークプリントサーバ１５００はインストール要求を受信することにより図１０に示される処理を開始する。
【００３１】
まず、ステップＳ１００１において、ネットワークプリントサーバ１５００上で動作する管理アプリケーション１５０４はアプリケーションプログラムインストーラをホストコンピュータに起動させる。アプリケーションプログラムインストーラは、所定のアプリケーションプログラムインストール手順によって、図１１のＵＩで指定されたアプリケーションプログラムのインストールを行う。そして、ステップＳ１００２において、管理アプリケーション１５０４はインストールの対象となったアプリケーションプログラム（以下、追加アプリケーションプログラムと呼ぶ）をホストコンピュータより受信し、それをプリンタコントローラ１６００の機種依存リソース／プログラム記憶部１６１０またはネットワークプリントサーバ１５００のプログラム／データ記憶部１５０９に格納する。なお、本実施形態では、指定されたアプリケーションプログラム名が“/dev”で始まる場合には、機種依存のアプリケーションプログラムであると判定されて機種依存リソース／プログラム記憶部１６１０へアプリケーションプログラムを格納するものとする。また、それ以外の場合はプログラム／データ記憶部１５０９に追加アプリケーションプログラムが格納されるものとする。但し、インストール対象のアプリケーションプログラムが機種依存か否かの識別はこれに限られるものではない。次にステップＳ１００３において、管理アプリケーション１５０４は、図１１のＵＩによって入力されたライセンスコードをネットワークプリントサーバ１５００のライセンス記憶部１５１１に、追加アプリケーションプログラムと対応付けて格納する。例えば、図９に示すような形式で格納する。
【００３２】
次に、ステップＳ１００４において、管理アプリケーション１５０４は、ネットワークプリントサーバ１５５のライセンス記憶部１５１１に格納した図９に示した書式と同様なデータをプリントコントローラ１６００のライセンス記憶部１６１２に格納する。続いてステップＳ１００５において、管理アプリケーション１５０４は、インストールされたアプリケーションプログラムが使用する通信ポート番号を、ポート番号記憶部１５１２に格納する。ここで、ステップＳ１００５の動作（通信ポート番号の登録）を図１４のフローチャートを用いて、さらに詳細に説明する。
【００３３】
まず、ステップＳ１４０１において、管理アプリケーション１５０４は、アプリケーションプログラムのインストール時に提供される、当該アプリケーションプログラムに関する情報を取得し、取得した情報から当該アプリケーションプログラムが要求する通信ポートを識別する識別情報（本例では通信ポート番号）を取得する。本実施形態では、Ｊａｖａ（登録商標）アプリケーションプログラムのインストールを行うものとし、インストール時に提供されるマニフェストファイルの読み込みが行われる。マニフェストファイルはＪａｖａ（登録商標）アプリケーションプログラム毎に１つずつ提供され、そのアプリケーションプログラムに関する情報を提供するためのファイルである。図１２はマニフェストファイルの書式例を示す。詳細な説明はここでは割愛するが、このファイルにはアプリケーションプログラムのＩＤ番号や、使用する最大メモリ量、このアプリケーションプログラムと通信可能な最大接続数などのアプリケーションプログラム情報が記載されている。図１２において、１２０１はアプリケーションプログラムが使用をリクエストする第一優先のポート番号が列挙された記述例であり、１２０２はアプリケーションプログラムが使用をリクエストする第二優先のポート番号が列挙された記述例である。インストール時に提供されるこのようなマニフェストファイルによって、管理アプリケーション１５０４は追加アプリケーションプログラムが使用を希望する通信ポート番号を認識することができる。
【００３４】
続いてステップＳ１４０２では、管理アプリケーション１５０４は、追加アプリケーションプログラムが使用を希望する第一優先の通信ポート番号（記述１２０１）が、既にポート番号記憶部１５１２に登録済であるか否かの調査を行う。ステップＳ１４０２で既に登録済と判断された場合は、ステップＳ１４０３へ進み、第二優先の通信ポート番号（記述１２０２）が既にポート番号記憶部１５１２に登録済であるか否かの調査を行う。こうして、アプリケーションプログラムが使用を希望するポート番号で未登録のものが見つかるまでこのような調査が行われる。マニフェストファイルの中に第Ｎ優先まで通信ポート番号が記載されていれば、第Ｎ優先までの全ての通信ポート番号に対して同様の調査が行われる。第Ｎ優先まで調査しても登録済と判定された場合は、ステップＳ１４０４からステップＳ１４０６へ進み、アプリケーションプログラムが使用を希望する通信ポートは使用不可と判断して処理を終了する。このとき、ステップＳ１００２で格納されたアプリケーションプログラムを削除する。すなわち、使用可能ポートを決定できない場合は管理アプリケーション１５０４はアプリケーションプログラムのインストールを禁止する。このとき、管理アプリケーション１５０４は、指定されたアプリケーションプログラムのインストールができなかった旨を表示してもよいし、クライアントへ通知してもよい。
【００３５】
一方、ステップＳ１４０２からＳ１４０４までの調査において、追加アプリケーションプログラムが使用をリクエストする通信ポートがポート番号記憶部１５１２に登録されていないと判断された場合はステップＳ１４０５へ進む。ステップＳ１４０５では、管理アプリケーション１５０４は、ポート番号記憶部１５１２に、アプリケーションＩＤ番号と、使用するポート番号の登録を行う。図１３はポート番号記憶部１５１２のデータ構成例を示す図である。図１３において、領域１３０１にはシステムモジュールが使用している全ての通信ポート番号が記憶されている。領域１３０２には追加アプリケーションプログラム１のアプリケーションＩＤ（１３０２ａ）と、追加アプリケーションプログラム１が使用する全ての通信ポート番号（１３０２ｂ）が対応付けて記憶されている。一つのアプリケーションプログラムに複数のポートが設定されてもよい。同様に、領域１３０３には、追加アプリケーションプログラム２のアプリケーションＩＤと、追加アプリケーションプログラム２が使用する全ての通信ポート番号が記憶されている。なお、上述したインストール要求の受信、アプリケーションプログラムの受信に用いられるポートは、インストーラに予め割り当てられたポートである。また、ステップＳ１４０５において、指定されたアプリケーションプログラムのインストールができた旨を表示してもよいし、その旨をクライアントへ通知してもよい。なお、マニフェストにおいて何れのポート番号でもよい旨が記述されている場合（例えば“RequestingPort1: any”のように指示されている場合）には、未使用のポート番号を割り当てるように構成してもよい。
【００３６】
次に、以上のようにしてインストールされたアプリケーションプログラムの起動処理について説明する。図４は、本実施形態によるネットワークプリントサーバ１５００上で動作するアプリケーションプログラムの起動処理方法を示すフローチャートである。なお、本処理は、ネットワークプリントサーバ１５００がローカルエリアネットワーク（ＬＡＮ２０００）に接続されたホストコンピュータ等の外部装置からアプリケーションプログラムの起動要求を受信した場合の処理である。図４に示される処理に対応する制御手順はネットワークプリントサーバ１５００のFlashROM３に記憶されている。
【００３７】
ネットワークプリントサーバ１５００は、ステップＳ４０１において、ＬＡＮ２０００を介して外部装置からアプリケーションプログラム起動要求命令を受信すると、ステップＳ４０２において、受信したアプリケーションプログラム起動要求命令からアプリケーションプログラムの格納先情報を含むＵＲＬ（Uniform Resource Locator）を取得する。そして、ネットワークプリントサーバ１５００は、ステップＳ４０３において、取得したＵＲＬからプリンタ１０００内の格納先情報を抽出する。例えば取得したＵＲＬが、
http://192.168.0.215/abc/xyz.java
であったとする。この場合、“http://”はスキームであり、“192.168.0.215” は本プリンタ装置自身のネットワークアドレスを示すものである。従って、アプリケーションプログラムの格納先情報として抽出される情報は、“/abc/xyx.java” となる。
【００３８】
ネットワークプリントサーバ１５００は、ステップＳ４０４で格納先情報の文字列が“/dev/”で始まっているかの判定を行なう。“/dev/”で始まっている場合には、起動要求されたアプリケーションプログラムの格納先がプリンタコントローラ１６００であると判断し、処理をステップＳ４０５へ進める。
【００３９】
ステップＳ４０５では、ネットワークプリントサーバ１５００は、プリンタコントローラ１６００に対して図２で説明したＡＰＩを用いてアプリケーションプログラムの取得要求を発行する。ステップＳ４０６では、ネットワークプリントサーバ１５００は、プリンタコントローラ１６００からの応答結果から要求したアプリケーションプログラムが取得できた可を判断する。アプリケーションプログラムを取得できた場合には、ステップＳ４１３に進む。ステップＳ４１３では、ネットワークプリントサーバ１５００は、プリンタコントローラ１６００のライセンス記憶部１６１２に格納されている該当するアプリケーションプログラムのライセンスコードを読み出し、このライセンスコードに基づいて適正なアプリケーションプログラムかどうかを判断する。すなわち、ネットワークプリントサーバ１５００は、ラインセンス記憶部１６１２から読み出したライセンスコードと、ネットワークプリントサーバ１５００のライセンス記憶部１５１１に記憶されたライセンスコードとを比較し、両者が一致しているかどうかを判断する。
【００４０】
一致していなければ、ネットワークプリントサーバ１５００は当該アプリケーションプログラムは適正でないと判断し、ステップＳ４１１において、アプリケーションプログラム起動要求命令の送信元であるホストコンピュータに対してエラーを通知し、本処理を終了する。ステップＳ４１３で両ライセンスコードが一致していた場合は、ネットワークプリントサーバ１５００は、適正なアプリケーションプログラムであると判断し、ステップＳ４０７へ進む。ステップＳ４０７では、ネットワークプリントサーバ１５００は、当該アプリケーションプログラムをネットワークプリントサーバ１５００のＲＡＭ２にロードする。その後、ステップＳ４１０において、当該アプリケーションプログラムを起動して本処理を終了する。
【００４１】
一方、ステップＳ４０６において、プリンタコントローラ１６００から要求したアプリケーションプログラムが取得できなかったと判断された場合には、ステップＳ４１１へ進む。ステップＳ４１１では、ネットワークプリントサーバ１５００は、アプリケーションプログラム起動要求命令の送信元であるホストコンピュータに対してエラーを通知し、本処理を終了する。
【００４２】
ステップＳ４０４において、格納先情報の文字列が“/dev/”で始まっていないと判断された場合には、ステップＳ４０８へ進む。ステップＳ４０８では、ネットワークプリントサーバ１５００は、ネットワークプリントサーバ１５００内のプログラム／データ記憶部１５０９に該当するアプリケーションプログラムが存在するか判定する。該当するアプリケーションプログラムが存在する場合には、ステップＳ４１２に進み、ネットワークプリントサーバ１５００は、プリンタコントローラ１６００のライセンス記憶部１６１２に格納されている該当アプリケーションプログラムのライセンスコードを取得する。そして、ネットワークプリントサーバ１５００は、取得されたライセンスコードと、ネットワークプリントサーバ１５００のライセンス記憶部１５１１に記憶されている該当アプリケーションプログラムのライセンスコードと比較し、両者が一致しているかどうかを判断する。両ライセンスコードが一致していなければ、ネットワークプリントサーバ１５００は適正なアプリケーションプログラムでないと判断し、ステップＳ４１１へ進み、アプリケーションプログラム起動要求命令の送信元であるホストコンピュータに対してエラーを通知した後処理を終了する。一致していた場合は、ネットワークプリントサーバ１５００は適正アプリケーションプログラムであると判断し、ステップＳ４０９へ進む。ステップＳ４０９では、ネットワークプリントサーバ１５００は、当該アプリケーションプログラムをネットワークプリントサーバ１５００のＲＡＭ２にロードする。そして、ネットワークプリントサーバ１５００は、ステップＳ４１０へ進み、当該アプリケーションプログラムを起動して処理を終了する。
【００４３】
一方、ステップＳ４０８で要求されたアプリケーションプログラムが存在しないと判定された場合には、ステップＳ４１１へ進み、ネットワークプリントサーバ１５００は、アプリケーションプログラム起動要求命令の送信元であるホストコンピュータに対してエラーを通知し、処理を終了する。
【００４４】
次に、追加アプリケーションプログラムに割り当てられたポート番号を介して、ホストコンピュータが追加アプリケーションプログラムと通信を行うことが可能となる方法について説明する。この方法については様々な手法が考えられるが、簡単な方法の１つとしては、予め定められた固定の通信ポート番号を介して、専用のプロトコルを用いて、ホストコンピュータが印刷装置から任意のアプリケーションプログラムが使用している通信ポート番号を取得する方法が考えられる。この場合、ネットワークプリントサーバ１５００は、ホストコンピュータからの問い合わせパケットに対し、当該パケットに含まれるアプリケーションＩＤに対応したアプリケーションプログラムが使用している通信ポート番号を、ポート番号記憶部１５１２（図１３）から読み出して応答すれば良い。また、ホストコンピュータは、こうして取得した通信ポート番号を、ホストコンピュータ内の記憶部に保存しておけば、以降の通信はこのプロセスを省略することが可能である。
【００４５】
また、追加アプリケーションプログラムが使用する通信ポート番号をホストコンピュータが知るための別の方法としては、ＳＮＭＰプロトコルを用いて、ＭＩＢ情報として取得する方法が考えられる。この方法の場合、アプリケーションプログラム毎に使用しているポート番号を印刷装置がＭＩＢとして定義しておく。そして、ホストコンピュータ上に実装されたSNMP Managerが、印刷装置に実装されたSNMP Agentに対して情報取得を要求することによって容易に実現可能である。
【００４６】
＜第２実施形態＞
図５は、第２実施形態による、ネットワークプリントサーバ１５００上で動作するアプリケーションプログラムの起動処理方法を示すフローチャートである。第２実施形態では、プリンタ１０００の起動時に、ネットワークプリントサーバ１５００が、ネットワークプリントサーバ１５００の所定の記憶領域に予め自動起動アプリケーションプログラムとして指定されたアプリケーションプログラムを起動する場合の処理を説明する。なお、図５に示される制御手順をＣＰＵ１に実行させるための制御プログラムはネットワークプリントサーバ１５００のFlashROM３に記憶されている。
【００４７】
プリンタ１０００が電源がＯＮにより起動された場合、或いはリセットによる再起動がなされた場合に図５の処理が起動される。まず、ネットワークプリントサーバ１５００は、ステップＳ５０１においてネットワークプリントサーバ１５００の所定の記録領域（例えばFlashROM３）に自動起動するアプリケーションプログラムの格納先情報が存在するか否かを判定する。ステップＳ５０１で自動起動するアプリケーションプログラムの格納情報が存在しないと判断した場合には、ネットワークプリントサーバ１５００はただちに処理を終了する。
【００４８】
ステップＳ５０１において自動起動するアプリケーションプログラムの格納先情報が存在すると判断された場合は、ステップＳ５０２へ進み、ネットワークプリントサーバ１５００は格納先情報を取得する。そして、ネットワークプリントサーバ１５００は、ステップＳ５０３において、アプリケーション格納先情報の文字列が“/dev/”で始まっているかの判定を行なう。“/dev/”で始まっている場合には、ネットワークプリントサーバ１５００は、起動要求されたアプリケーションプログラムの格納先がプリンタコントローラ１６００であると判断し、ステップＳ５０４へ進む。
【００４９】
ステップＳ５０４，Ｓ５０５，Ｓ５１２，Ｓ５０６，Ｓ５０９では、ネットワークプリントサーバ１５００は、起動要求されたアプリケーションプログラムをプリンタコントローラ１６００より取得して起動する処理を行なう。これらのステップは図４のステップＳ４０５、Ｓ４０６，Ｓ４１３，Ｓ４０７，Ｓ４１０と同様であるので説明を省略する。
【００５０】
一方、ステップＳ５０３で格納先情報の文字列が“/dev/”で始まっていないと判断された場合には、ネットワークプリントサーバ１５００はステップＳ５０７へ進む。ステップＳ５０７，Ｓ５１１，Ｓ５０８，Ｓ５０９では、ネットワークプリントサーバ１５００は、ネットワークプリントサーバ１５００内の記憶部より該当するアプリケーションプログラムを取得し、取得したアプリケーションプログラムを実行する。これらのステップは、図４のステップＳ４０８，Ｓ４１２，Ｓ４０９，Ｓ４１０と同様であるので説明を省略する。
【００５１】
なお、ステップＳ５０５，Ｓ５０７で要求されたアプリケーションプログラムが存在しないと判定した場合、及び、ステップＳ５１１，Ｓ５１２においてライセンスコードが一致しなかった場合には、ただちに本処理を終了する。
【００５２】
＜第３実施形態＞
図６は、本実施形態に係るネットワークプリントサーバ１５００上で動作するアプリケーションプログラム内に記述された命令の処理方法を示すフローチャートである。図６に示される処理は、ネットワークプリントサーバ１５００がアプリケーションプログラムを起動した後の、当該アプリケーションプログラムに含まれる各命令の処理である。なお、図６に示される処理をＣＰＵ１に実行させるための制御プログラムはネットワークプリントサーバ１５００のFlashROM３に記憶されている。
【００５３】
図４もしくは図５に従ってアプリケーションプログラムが起動すると、ネットワークプリントサーバ１５００は、ステップＳ６０１において、アプリケーションプログラム内に含まれる命令を順次取り出し、解析処理を行なう。この解析処理は、命令種別がプリンタコントローラ１６００に依存する命令であるかどうかの判別を含む。プリンタコントローラに依存する命令でない場合は、ステップＳ６０２からステップＳ６０３へ進み、ネットワークプリントサーバ１５００は当該プログラム命令を処理し、ステップＳ６０９で、ネットワークプリントサーバ１５００はその処理結果をネットワークプリントサーバ１５００の所定のメモリ空間に格納する。そして、ステップＳ６１０へ進む。
【００５４】
プリンタコントローラ１６００に依存する命令であると判定された場合は、処理はステップＳ６０２からステップＳ６０３へ進む。ステップＳ６０３では、ネットワークプリントサーバ１５００は、図７に示すようなプリンタコントローラ１６００の命令書式に従って命令コードを変換する。そして、ネットワークプリントサーバ１５００は、ステップＳ６０４において、変換した命令コードを拡張インタフェース１７介してプリンタコントローラ１６００送信する。次に、ステップＳ６０５では、ネットワークプリントサーバ１５００は、プリンタコントローラ１６００からの命令コード送信の応答を判断する。応答があった場合にはステップＳ６０６へ進み、ネットワークプリントサーバ１５００はプリンタコントローラ１６００から返信された処理結果を受信する。プリンタコントローラ１６００から返信された処理結果は図８に示されるような書式で返信される。ステップＳ６０７では、受信した処理結果を元のプログラム命令の処理結果の書式に変換する。そして、ステップＳ６０９へ進み、ネットワークプリントサーバ１５００は、プログラム命令の処理結果をネットワークプリントサーバ１５００の所定のメモリ空間に格納する。
【００５５】
ステップＳ６１０では、ネットワークプリントサーバ１５００は、後続のプログラム命令の有無を確認し、次の命令が存在する場合にはステップＳ６０１へ処理を戻し、次の命令に対して上記の処理を繰り返す。一方、次の命令が存在しない場合には処理を終了する。また、ネットワークプリントサーバ１５００は、ステップＳ６０５において、送信した命令コードに対する応答を一定期間内にプリンタコントローラ１６００から受信できなかった場合には、ただちにプログラム処理を終了する。
【００５６】
＜その他の実施形態＞
第１、第２実施形態では、アプリケーションプログラムの格納先の判定方法として、ＵＲＬから抽出した文字列に“/dev/”が存在するか否かによって格納先を特定していた。しかしながら、この方式ではＵＲＬ自身が格納先情報を文字列として記す結果となるため、格納先を内部情報として隠蔽化したい場合には適当ではない。
【００５７】
そこでこの対処方法として、予めアプリケーションプログラムの名称毎に格納先を識別できるテーブルを保持して、このテーブル情報に基づいて格納先を特定するという手法が挙げられる。これ手法によればＵＲＬに格納先を示す文字列を含む必要がなくなり、格納先情報を隠蔽化することが可能である。
【００５８】
以上詳述したように上記各実施形態によれば、機種依存するアプリケーションプログラムは機種依存リソース／プログラム記憶部１６１０に、機種依存しないアプリケーションプログラムはプログラム／データ記憶部１５０９に記憶される。すなわち、アプリケーションプログラムの機種依存性の有無によって、アプリケーションプログラムの保存先を分散化することが可能となる。このため、共通モジュールであるネットワークカードに不必要なデータを保持する必要がなくなり、ネットワークカードモジュール側の記憶容量を削減できる。また別の観点からみた場合、機種依存のあるアプリケーションプログラムをネットワークカードモジュール側に保持しないことでユーザが誤って他の機種でしか動作しないアプリケーションプログラムを起動させてしまうといったミスを防止できるという効果も期待できる。
【００５９】
さらに、ライセンスコードの導入により、印刷装置とネットワークカードモジュールの組み合わせにおいて、正しくアプリケーションプログラムがインストールされていなければ起動しないように制御される。このため、ネットワークカードモジュールだけを正常なアプリケーションプログラムのインストール無しに他の印刷装置に装着した場合に、当該印刷装置では動作しないアプリケーションプログラムを起動させてしまうという事態を防止できる。
【００６０】
更に、上記各実施形態によれば、アプリケーションプログラムを新たに追加した場合でも、システムモジュールや、他の追加アプリケーションプログラムとの通信ポートの競合を防ぐことが可能である。このため、アプリケーションプログラムの動作が不安定になったり、通信が正常に行えなくなるなどの問題を防ぐことが可能となる。更には、ポートの競合が発生した際に、新たにアプリケーションプログラムを作成しなおすなどの手間が不要となり、アプリケーションプログラムの開発効率が改善される効果がある。
【００６１】
なお、上記実施形態では、ネットワークプリントサーバ１５００（プリンタ１０００に着脱可能なネットワークインターフェースボード）を例示して説明したが、本発明の適用はこれに限られるものではない。例えば、ネットワークプリントサーバが組み込まれたデータ処理装置（プリンタやスキャナ等の周辺装置）にも適用できることは明らかである。また、ネットワークインターフェースボードとしては、プリンタ以外の周辺装置（スキャナ等）に装着されるものであってもよい。
【図面の簡単な説明】
【００６２】
【図１】実施形態に関わるプリンタのハードウェア構成例を示すブロック図である。
【図２】実施形態にプリンタのソフトウェア構成例を示すブロック図である。
【図３】実施形態におけるアプリケーションプログラムのソースコード記述例を示す図である。
【図４】第１実施形態に係るアプリケーションプログラムの起動処理方法を示すフローチャートである。
【図５】第２実施形態に係るアプリケーションプログラムの起動処理方法を示すフローチャートである。
【図６】第３実施形態による、アプリケーションプログラム内に記述された命令の処理方法を示すフローチャートである。
【図７】実施形態のプリンタコントローラに対する命令コードの書式例を示す図である。
【図８】実施形態のプリンタコントローラから返信される命令処理結果の書式例を示す図である。
【図９】実施形態によるライセンスコードの記憶形態を示す図である。
【図１０】実施形態によるアプリケーションプログラムのインストール処理を説明するフローチャートである。
【図１１】アプリケーションプログラムのインストール処理時においてホストコンピュータに表示させるＧＵＩの一例を示す図である。
【図１２】マニフェストファイルの記述例を示す図である。
【図１３】ポート番号記憶部のデータ構成例を示す図である。
【図１４】図１０のステップＳ１００５の処理を詳細に示すフローチャートである。
【図１】
2006338268.tif 000003
【図２】
2006338268.tif 000004
【図３】
2006338268.tif 000005
【図４】
2006338268.tif 000006
【図５】
2006338268.tif 000007
【図６】
2006338268.tif 000008
【図７】
2006338268.tif 000009
【図８】
2006338268.tif 000010
【図９】
2006338268.tif 000011
【図１０】
2006338268.tif 000012
【図１１】
2006338268.tif 000013
【図１２】
2006338268.tif 000014
【図１３】
2006338268.tif 000015
【図１４】
2006338268.tif 000016