以下、図面に基づいて本発明の実施の形態を説明する。図1は、本発明の実施の形態における情報処理システムの構成例を示す図である。同図の情報処理システム1において、一台以上の画像形成装置10と、一台以上のユーザPC20と、ネットアプリ管理サーバ30とは、LAN(Local Area Network)等のネットワーク40(有線又は無線の別は問わない。)によって接続されている。
ユーザPC20は、ユーザごとに割り当てられたPC(Personal Computer)であり、画像形成装置10との連携により所定のサービスを提供するアプリケーション(以下、「ネットアプリ」という。)を有する。同図では、ネットアプリの一例として印刷ネットアプリ21及びスキャンネットアプリ22が示されている。印刷ネットアプリ21は、ネットワーク40を介して通信可能な画像形成装置10に印刷ジョブを実行させるネットアプリである。スキャンネットアプリ22は、画像形成装置10においてスキャンされた画像データに対して所定の処理(例えば、配信又は保存等)を実行するネットアプリである。
なお、同図では、一つのユーザPC20のみが示されているが、複数のユーザPC20がネットワーク40に接続されていてもよい。また、各ユーザPC20が有するネットアプリはそれぞれ異なっていてもよい。
ネットアプリ管理サーバ30は、ネットアプリ管理部310を有するコンピュータである。ネットアプリ管理部310は、各ユーザPC20において起動されているネットアプリに関する情報の管理や、ネットアプリと画像形成装置10との通信の仲介等を行う。
画像形成装置10は、印刷、スキャン、コピー、及びFAX送受信等の機能を一台の筐体によって実現する複合機である。但し、いずれか一つの機能を実現する装置(プリンタ、スキャナ、コピー機、ファクシミリ等)を画像形成装置10として用いてもよい。本実施の形態においては、印刷機能を実現するためのハードウェアを備えていればよい。
同図において、画像形成装置10は、標準アプリ1210、SDKアプリ1220、SDKプラットフォーム1230、及びサービス層1240等を有する。
標準アプリ1210は、画像形成装置10に標準的に(出荷時に予め)実装されているアプリケーションの集合である。同図では、スキャンアプリ1211、プリンタアプリ1212、コピーアプリ1213、及びFAXアプリ1214が例示されている。スキャンアプリ1211は、スキャンジョブを実行する。プリンタアプリ1212はネットワークを介して印刷データを受信し、受信された印刷データに基づいて印刷ジョブを実行する。すなわち、画像形成装置10の印刷ポート宛に送信される印刷データは、プリンタアプリ1212によって処理される。コピーアプリ1213は、コピージョブを実行する。FAXアプリ1214は、FAXの送信ジョブ又は受信ジョブを実行する。
サービス層1240は、各種のハードウェアリソースの制御機能や管理情報等の管理機能等を上位アプリケーション等に対して提供するソフトウェアモジュール群である。同図では、当該ソフトウェアモジュールとして、通信制御部1241、プリンタ制御部1242、及びMIB管理部1243等が例示されている。通信制御部1241は、ネットワーク通信の制御を行う。例えば、プリンタアプリ1212による印刷データの受信もネットワーク制御部1241を介して行われる。プリンタ制御部1242は、画像形成装置10のプリンタの制御を行う。例えば、プリンタアプリ1212は、プリンタ制御部1242を介してプリンタに印刷データの印刷を実行させる。MIB管理部1243は、画像形成装置10の記憶装置に記憶されたMIB(Management Information Base)情報を管理する。本実施の形態において、MIB情報には、印刷ジョブの状態を示すパラメータ(オブジェクト)が含まれている。
SDKアプリ1220は、画像形成装置10の出荷後において、画像形成装置10の機能拡張を図るためのプラグインとして追加的にインストールされるアプリケーションである。同図では、SDKアプリ1220として、プロバイダアプリ1221が例示されている。
プロバイダアプリ1221は、ネットアプリからの要求に応じ、画像形成装置10による機能の実行を制御する。本実施の形態では、特に、印刷ネットアプリ21からの要求に応じ、印刷ジョブをプリンタアプリ1212に実行させる。
SDKプラットフォーム1230は、SDKアプリ1220の実行環境を提供する。換言すれば、SDKプラットフォーム1230上で動作するアプリケーションがSDKアプリ1220である。各SDKアプリ1220は、SDKプラットフォーム1230が提供するAPI(Application Program Interface)を介して画像形成装置10の各種の機能を利用する(実行させる)ことができる。例えば、当該API(以下、「SDKAPI」という。)は、スキャン機能を利用させるためのインタフェース、印刷機能を利用させるためのインタフェース、コピー機能を利用させるためのインタフェース等を含む。同図に示される印刷サービス部1231は、印刷機能を利用させるためのインタフェースを介して呼び出される。本実施の形態において、印刷サービス部1231は、印刷ネットアプリ21から印刷要求を受けたプロバイダアプリ1221によって呼び出される。
SDKAPIは、画像形成装置10に機種に非依存な平滑化されたもの(共通化されたもの)となっている。すなわち、SDKプラットフォーム1230によって機種間の相違が吸収され、機種間の互換性が確保されている。したがって、一つの機種上のSDKプラットフォーム1230上において動作が保証されるSDKアプリ1220は、他の機種におけるSDKプラットフォーム1230上でも動作が保証される。但し、その代償として、SDKAPIを介して或る機種に固有の機能を利用することはできない。例えば、特定の機種に固有の印刷設定を利用することはできない。
なお、SDKAPIの平滑化には、SDKプラットフォーム1230がJava(登録商標)仮想マシンを利用していることも寄与している。すなわち、SDKアプリ1220は、Java(登録商標)アプリケーションとして実装される。したがって、SDKプラットフォーム1230は、Java(登録商標)が有する機種非依存性をそのまま引き継いでいる。但し、機種非依存性を確保するために、必ずしもJava(登録商標)を利用しなくてもよい。
ところで、図1には、印刷機能に関するソフトウェアが複数示されている。ここで、当該ソフトウェアの関係について整理する。
図2は、本実施の形態において印刷機能に関するソフトウェアの関係を示す図である。
通信制御部1241は、プリンタアプリ1212が印刷データを受信するための印刷ポートを開いて印刷データの受信を待機している。例えば、ユーザPC20のポートモニタ23より送信される印刷データ(すなわち、通常のワープロソフト等より印刷指示が行われ、プリンタドライバを経由して送信される印刷データ)は、印刷ポート1241pを介して受信され(S10)、プリンタアプリ1212に入力される(S11)。プリンタアプリ1212は、受信された印刷データに基づいて印刷ジョブを実行する。印刷ジョブの過程において、プリンタアプリ1212は、プリンタ制御部1242を利用して画像形成装置10のハードウェア(後述するプリンタ13)を制御する(S12)。また、プリンタアプリ1212は、印刷ジョブの進捗に応じて、印刷ジョブの状態に関するMIB情報を更新する(S13)。
一方、印刷ネットアプリ21から送信される印刷データは、ネットアプリ管理部310を経由してプロバイダアプリ1221によって受信される(S21、S22)。プロバイダアプリ1221は、当該印刷データに関する印刷要求を印刷サービス部1231に入力する(S23)。当該印刷要求の入力は、印刷サービス部1231はが提供する機種非依存のインタフェース(SDKAPI)を介して行われる。当該インタフェースでは、改めて印刷設定情報を指定することができる。「改めて」というのは、印刷設定情報は、印刷データ内に既に格納されているからである。改めて印刷設定情報を指定できることの便益の一例については後述する。なお、当該インタフェースは機種非依存であるため、指定可能な印刷設定情報も機種間で共通なものに限られている。
印刷サービス部1231は、プロバイダアプリ1221から入力された印刷要求に係る印刷データに対し、プロバイダアプリ1221より指定された印刷設定情報を設定し(具体的には、印刷データのヘッダ部分の書き換え又は追記を行い)、当該印刷データを印刷ポート1241p宛に送信する(S24)。
印刷サービス部1231より印刷ポート1241p宛に送信された印刷データは、通常の印刷データ(ポートモニタ23より送信された印刷データ)と同様に、プリンタアプリ1212によって処理される(S11〜S13)。
なお、ステップS23以降の流れは、プロバイダアプリ1221に限らず、印刷サービス部1231を利用するSDKアプリ1220に共通のものとなる。
ところで、印刷サービス部1231は、プロバイダアプリ1221からの印刷要求に係る印刷ジョブについて、その状態情報を定期的に監視(ポーリング)している(S31)。印刷サービス部1231は、印刷ジョブの状態が変化すると、当該状態の変化をSDKアプリ1220に通知する。当該通知に基づいてSDKアプリ1220は、印刷ジョブの状態の追跡が可能となる。
一方、印刷ポート1241pのみをインタフェースとするプリンタアプリ1212では印刷ジョブの状態の変化をフィードバックすることはできない。また、MIB管理部1243におけるMIB情報の管理体系又は管理形態は、機種互換が保証されていない。したがって、SDKアプリ1220が直接MIB管理部1243にアクセスするのは、SDKアプリ1220の機種非依存性を損なってしまう可能性がある。
したがって、印刷ジョブの状態を追跡したい場合、プロバイダアプリ1221はSDKアプリ1220として実装される必要がある。
続いて、印刷ネットアプリ21、ネットアプリ管理部310、及びプロバイダアプリ1221の詳細について説明する。
図3は、ネットアプリ、ネットアプリ管理部、及びプロバイダアプリの機能構成例を示す図である。
同図において、印刷ネットアプリ21は、UI制御部211、アプリ情報送信部212、連携部213、印刷データ生成部214、及び属性情報管理ファイル215等を有する。
UI制御部211は、印刷ネットアプリ21に関する各種の表示画面をユーザPCの表示装置に表示させる。アプリ情報送信部212は、印刷指示の入力に応じ印刷ネットアプリ21のアプリ情報の登録要求をネットアプリ管理サーバ30に送信する。アプリ情報には、印刷ネットアプリ21の実行に必要な情報が含まれる。連携部213は、画像形成装置10との連携のためのコミュニケーション(情報のやりとり等)を制御する。印刷データ生成部214は、画像形成装置10に印刷させる文書ファイル(電子データ)の印刷データ(PDL(Page Description Language)データ)を、PC20にインストールされているプリンタドライバを利用して生成する。属性情報管理ファイル215は、印刷ネットアプリ21の属性情報を格納するファイルである。属性情報には、例えば、印刷ネットアプリ21の識別子(アプリID)や、印刷ネットアプリ21の所有者であるユーザのユーザIDや、印刷設定情報(印刷条件を示す情報)の初期値等が含まれる。
印刷ネットアプリ21の属性情報管理ファイル215において各ネットアプリの所有者のユーザIDが記録されていることからも分かるように、各ネットアプリはユーザに属する。したがって、同一のネットアプリであっても、各ネットアプリが属するユーザが異なる場合、各ネットアプリは異なるものとして区別される。例えば、ユーザAに属するネットアプリは、基本的にユーザAに対してのみ利用が許可される。ユーザBに属するネットアプリは、基本的にユーザBに対してのみ利用が許可される。但し、例えば、アクセス制御機能によって他のユーザに対して利用権限を与えることにより、他人が所有者であるネットアプリの利用を可能としてもよい。
なお、スキャンネットアプリ22も、UI制御部211、アプリ情報送信部212、連携部213、及び属性情報管理ファイル215等と同様の機能又は情報を有する。但し、スキャンネットアプリ22は、印刷データ生成部214の代わりに、画像形成装置10においてスキャン画像を処理するための機能を有する。
ネットアプリ管理部310は、アプリ情報登録部31、広告部32、アプリ情報提供部32、及び仲介部34等を有する。アプリ情報登録部31は、ネットアプリより送信されるアプリ情報の登録要求を受信し、当該アプリ情報をアプリ情報管理テーブル35に保存する。アプリ情報管理テーブル35は、ユーザごとにネットアプリ管理サーバ30の記憶装置に生成される。すなわち、各アプリ情報管理テーブル35は、対応するユーザに属するネットアプリのアプリ情報を管理する。広告部32は、アプリ情報登録部31によって受信されたアプリ情報に含まれるユーザIDをネットワーク40上に広告(ブロードキャスト又はマルチキャスト等)する。広告は、ユーザ単位(ユーザID単位)で行われる。具体的には、ユーザAに関して広告された後、ユーザAに属する新たなアプリ情報が受信されたとしても当該アプリ情報に応じた広告は行われない。すなわち、広告部32による広告は、何らかのネットアプリを利用可能になったユーザが新たに発生したことをプロバイダアプリ1221に通知するための情報である。但し、アプリ情報単位で広告が行われてもよい。この場合、同一ユーザについて重複して広告が発行されることになるが、重複の排除はプロバイダアプリ1221側で行えばよい。アプリ情報提供部33は、プロバイダアプリ1221からの要求に応じ、アプリ情報管理テーブル35に登録されているアプリ情報をプロバイダアプリ1221に提供(送信)する。仲介部34は、ネットアプリとプロバイダアプリ1221とのコミュニケーションを仲介する。
なお、いずれかのユーザPC20が、ネットアプリ管理サーバ30を兼ねてもよい。すなわち、いずれかのユーザPC20に、ネットアプリ管理部310が実装されていてもよい。
プロバイダアプリ1221は、ユーザ検知部121、UI制御部122、アプリ情報取得部123、ネットアプリ連携部124、機能制御部125、及びユーザ管理テーブル126等を有する。
ユーザ検知部121は、ネットアプリ管理部310より発行される広告に基づいて、ネットアプリを利用可能なユーザの存在を検知し、広告に含まれているユーザID等をユーザ管理テーブル126に登録する。ユーザ管理テーブル126は、利用可能なネットアプリがネットワーク40上に存在するユーザの一覧を管理するテーブルである。UI制御部122は、ユーザよりネットアプリの操作指示等の入力を受け付ける。すなわち、ネットアプリは、ユーザPC20に配置されているが、画像形成装置10の操作パネルからも操作されうる。アプリ情報取得部123は、ユーザ管理テーブル126に登録されているユーザの中から選択されたユーザに属するネットアプリのアプリ情報をネットアプリ管理部310より取得する。ネットアプリ連携部124は、ネットアプリとのコミュニケーションを制御する。機能制御部125は、ネットアプリから要求された機能の実行を制御する。例えば、機能制御部125の制御により印刷又はスキャン等が実行される。
続いて、各装置のハードウェア構成について説明する。図4は、本発明の実施の形態における画像形成装置のハードウェア構成例を示す図である。図4において、画像形成装置10は、コントローラ11、スキャナ12、プリンタ13、モデム14、操作パネル15、ネットワークインタフェース16、及びSDカードスロット17等のハードウェアを有する。
コントローラ11は、CPU111、RAM112、ROM113、及びHDD114等を有する。ROM113には、各種のプログラムやプログラムによって利用されるデータ等が記録されている。RAM112は、プログラムをロードするための記憶領域や、ロードされたプログラムのワーク領域等として用いられる。CPU111は、RAM112にロードされたプログラムを処理することにより、各種の機能を実現する。HDD114には、プログラムやプログラムが利用する各種のデータ等が記録される。
スキャナ12は、原稿より画像データを読み取るためのハードウェアである。プリンタは13、印刷画像を印刷用紙に印刷するためのハードウェアである。モデム14は、電話回線に接続するためのハードウェアであり、FAX通信による画像データの送受信を実行するために用いられる。操作パネル15は、ユーザからの入力の受け付けを行うめのボタン等の入力手段や、液晶パネル等の表示手段を備えたハードウェアである。ネットワークインタフェース16は、LAN等のネットワーク(有線又は無線の別は問わない。)に接続するためのハードウェアである。SDカードスロット17は、SDカード80に記録されたプログラムを読み取るために利用される。すなわち、画像形成装置10では、ROM113に記録されたプログラムだけでなく、SDカード80に記録されたプログラムもRAM112にロードされ、実行されうる。
図5は、本発明の実施の形態におけるユーザPCのハードウェア構成例を示す図である。図5のユーザPC20は、それぞれバスBで相互に接続されているドライブ装置200と、補助記憶装置202と、メモリ装置203と、CPU204と、インタフェース装置205と、表示装置206と、入力装置207とを有する。
ユーザPC20での処理を実現するプログラムは、CD−ROM等の記録媒体201によって提供される。プログラムを記録した記録媒体201がドライブ装置200にセットされると、プログラムが記録媒体201からドライブ装置200を介して補助記憶装置202にインストールされる。但し、プログラムのインストールは必ずしも記録媒体201より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置202は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
メモリ装置203は、プログラムの起動指示があった場合に、補助記憶装置202からプログラムを読み出して格納する。CPU204は、メモリ装置203に格納されたプログラムに従ってユーザPC20に係る機能を実現する。インタフェース装置205は、ネットワークに接続するためのインタフェースとして用いられる。表示装置206はプログラムによるGUI(Graphical User Interface)等を表示する。入力装置207はキーボード及びマウス等で構成され、様々な操作指示を入力させるために用いられる。
以下、情報処理システム1の処理手順について説明する。図6は、ユーザPCにおける印刷ネットアプリの処理手順を説明するためのフローチャートである。
ユーザPC20においてユーザによって入力される印刷ネットアプリ21の起動指示に応じ、UI制御部211は、印刷ネットアプリ21のメイン画面を表示装置206に表示させる(S101)。続いて、UI制御部211は、印刷対象とする文書ファイルの選択をユーザより受け付ける(S102)。文書ファイルの選択は、例えば、文書ファイルアイコンを印刷ネットアプリ21のメイン画面にドラッグ&ドロップすることにより行われる。
図7は、文書ファイルがメイン画面にドラッグ&ドロップされる様子を示す図である。同図では、表示装置206に表示されたメイン画面510に、ファイルAのアイコンがドラッグ&ドロップされる様子が示されている。なお、メイン画面510は単なる矩形によって示されているが、ツールバーやプルダウンメニュー等の表示部品を備えていてもよい。また、文書ファイルの選択は、ツールボタンやメニュー項目の選択によって表示されるファイルダイアログ(ファイルシステム上に存在するファイルを選択させるためのダイアログ)を介して行われてもよい。
文書ファイルの選択に応じ、UI制御部211は、選択された文書ファイルのファイル名とファイルの種類(ファイル形式)とをメモリ装置203に記録しておく。ファイルの種類は、ファイルの拡張子に基づいて判定される。
続いて、UI制御部211は、選択された文書ファイルのアイコンをメイン画面510内に表示させると共に、印刷設定画面を表示装置206に表示させる(S103)。
図8は、印刷設定画面の表示例を示す図である。同図において、印刷設定画面520は、メイン画面510の右隣に表示されている。印刷設定画面520の詳細な表示例は図中右側に示されている。同図の例では、印刷設定画面520において、印刷部数、印刷方向、カラーモード、両面印刷、集約印刷等の設定が可能とされている。但し、これらの設定項目はあくまでも例示であり、設定項目の種類は所定のものに限定されない。
印刷設定画面510において各設定項目の値が設定されると、UI制御部211は、設定された情報(以下、「印刷設定情報」という。)をメモリ装置203に記録しておく(S105)。続いて、アプリ情報送信部211は、ユーザPC20にインストールされているプリンタドライバが対応しているプリンタ記述言語(PDL)の種類の一覧を取得する(S106)。プリンタ記述言語の一覧の取得は、次のようにすればよい。まず、ユーザPC20にインストールされているプリンタドライバの一覧を取得する。続いて、取得された各プリンタドライバが対応しているプリンタ記述言語を各プリンタドライバより取得する。
続いて、アプリ情報送信部211は、上記のステップにおいて取得された情報に基づいて印刷ネットアプリ21のアプリ情報を生成し、当該アプリ情報の登録要求をネットアプリ管理サーバ30に送信する(S107)。なお、各ユーザPC20には、予めネットアプリ管理サーバ30と通信するための情報(例えば、IPアドレス又はホスト名等)が登録されている。
図9は、印刷ネットアプリのアプリ情報の例を示す図である。同図において、アプリ情報は、アプリID、ユーザID、連携機能識別子、ネットアプリアドレス、表示名、印刷設定情報、ファイル名、ファイル形式、及びPDL一覧等を含む。
アプリIDは、各ネットアプリを一意に識別する識別情報である。ユーザIDは、印刷ネットアプリ21の所有者であるユーザの識別情報である。連携機能識別子は、ネットアプリと連携する画像形成装置10が有している必要のある機能(換言すれば、ネットアプリが利用する機能)を識別するための情報である。連携機能識別子の一例として「print」、「scan」等が挙げられる。「print」は、印刷機能を示す。「scan」は、スキャン機能を示す。印刷ネットアプリ21は、画像形成装置10の印刷機能を利用する。したがって、図9の例では、「print」が連携機能識別子とされている。ネットアプリアドレスは、ネットワーク通信において各ネットアプリを一意に識別するための識別情報(例えば、URL等)である。表示名は、ネットアプリの名前の表示用の文字列である。なお、アプリID、ユーザID、連携機能識別子、ネットアプリアドレス、及び表示名は、例えば、属性情報管理ファイル215より取得される。
印刷設定情報は、印刷設定画面510において設定された印刷設定情報である。但し、属性情報管理ファイル215に格納されている値が含まれてもよい。ファイル名、ファイル形式は、印刷対象とされた文書ファイルより取得され、メモリ装置203に記録されているファイル名及びファイル形式である。PDL一覧は、アプリ情報送信部211によって取得された、ユーザPC20が有するプリンタドライバが対応可能な(出力可能な)プリンタ記述言語の一覧である。
続いて、ステップS107のアプリ情報の送信によって実行される処理手順について説明する。図10は、アプリ情報の送信時の処理手順を説明するためのシーケンス図である。
ステップS111において、アプリ情報送信部212より送信されたアプリ情報は、ネットアプリ管理サーバ30のアプリ情報登録部31によって受信される。アプリ情報登録部31は、受信されたアプリ情報に含まれているユーザIDに対応するアプリ情報管理テーブル35に当該アプリ情報を登録する。当該ユーザIDに対応するアプリ情報管理テーブル35が存在しない場合、アプリ情報登録部31は、当該ユーザIDに対応するアプリ情報管理テーブル35を生成し、生成されたアプリ情報管理テーブル35にアプリ情報を登録する(S112)。
アプリ情報管理テーブル35が新たに生成された場合(すなわち、受信されたアプリ情報に含まれているユーザIDに係るユーザについて、初めてアプリ情報が登録された場合)、広告部32は、受信されたアプリ情報に含まれているユーザIDと、アプリ情報取得用URL(Uniform Resource Locator)とを含む広告をネットワーク40上に発行する(S113)。アプリ情報取得用URLとは、アプリ情報管理テーブル35ごとに一意なURLである。例えば、アプリ情報登録部31は、アプリ情報管理テーブル35を生成した際に、当該アプリ情報管理テーブル35に対するアプリ情報取得用URLを生成する。ここで、アプリ情報管理テーブル35は、ユーザごとに生成される。したがって、アプリ情報取得用URLはユーザごとに一意となる。
続いて、画像形成装置10のユーザ検知部121は、広告を受信すると、当該広告に含まれているユーザID及びアプリ情報取得用URLをユーザ管理テーブル126に登録する(S114)。
図11は、ユーザ管理テーブルの構成例を示す図である。同図に示されるように、ユーザ管理テーブル126は、ユーザIDとアプリ情報取得用URLとの組(ペア)を管理する。同図では、ユーザA及びユーザBについてレコードが登録されている例が示されている。なお、ユーザ管理テーブル126は、例えば、HDD114に記憶されている。
その後、ユーザPC20において印刷ネットアプリ21を介して印刷を指示したユーザは、任意のタイミングで画像形成装置10へと移動し、画像形成装置10より印刷ネットアプリ21を操作する。なお、複数の画像形成装置10がネットワーク40に接続されている場合、同一の広告が各画像形成装置10のユーザ検知部121によって受信され、それぞれの画像形成装置10のユーザ管理テーブル126にユーザID及びアプリ情報取得用URLが登録される。したがって、ユーザは、複数の画像形成装置10のいずれからも図12に示される処理を実行させることができる。
図12は、画像形成装置より印刷ネットアプリが操作される際の処理手順を説明するためのシーケンス図である。
ユーザによって操作パネル15を介してプロバイダアプリ1221の利用指示が入力されると(S201)、プロバイダアプリ1221のUI制御部122は、ユーザ管理テーブル126に登録されている情報に基づいてユーザ選択画面を操作パネル15に表示させる(S202)。なお、ステップS202において、UI制御部122は、ネットアプリ管理部310よりユーザ情報を取得し、取得されたユーザ情報に基づいてユーザ選択画面を表示させるようにしてもよい。この場合、図10のステップS113は必ずしも行われなくてもよい。但し、例えば、ネットアプリ管理サーバ30とサブネットが異なる特定の(予め、ネットアプリ管理サーバ30にIPアドレスが登録されている)画像形成装置10に対してユニキャストによってステップS113が実行されてもよい。
図13は、ユーザ選択画面の表示例を示す図である。同図に示されるユーザ選択画面610には、ユーザIDごとにボタンが表示されている。同図では、ユーザAに対応するボタン611とユーザBに対応するボタン612とが表示されている。
続いて、ユーザは、ユーザ選択画面610において自らのユーザIDに対応するボタンを押下する(S203)。ボタンの押下に応じ、アプリ情報取得部123は、選択されたボタンに対応するユーザIDに関連付けられているアプリ情報取得用URLをユーザ管理テーブル126より取得する。なお、ユーザIDに対応するボタンの押下に応じ、ユーザの認証を行い、ユーザが認証された場合にのみ、以降の処理が実行されるようにしてもよい。
続いて、アプリ情報取得部123は、アプリ情報の取得要求をアプリ情報取得用URL宛に送信する(S204)。アプリ情報の取得要求は、ネットアプリ管理部310のアプリ情報提供部33によって受信される。アプリ情報提供部33は、アプリ情報取得用URLに対応するアプリ情報管理テーブル35(すなわち、画像形成装置10を操作中のユーザに対応するアプリ情報管理テーブル35)に登録されている全てのネットアプリのアプリ情報を取得し、取得されたアプリ情報の一覧をプロバイダアプリ1221に送信する(S205)。アプリ情報の一覧の送信に際し、アプリ情報提供部33は、プロバイダアプリ1221と各ネットアプリとの通信を中継するためのURL(以下、「ネットアプリ中継用URL」という。)をネットアプリごとに生成する。アプリ情報提供部33は、ネットアプリごとに生成されたネットアプリ中継用URLを、各ネットアプリに対応するアプリ情報に付加し、ネットアプリ中継用URLが付加されたアプリ情報の一覧をプロバイダアプリ1221に送信する。したがって、ステップS205において送信されるアプリ情報は、例えば、図14に示されるような構成を有する。
図14は、ネットアプリ管理部からプロバイダアプリに送信されるアプリ情報の構成例を示す図である。
同図に示されるアプリ情報は、図11のアプリ情報に対してネットアプリ中継用URLが付加されたものである。ステップS205では、同図に示されるようなアプリ情報の一覧が送信される。ここでは、アプリ情報が一つしか含まれないものもアプリ情報の一覧という。
なお、ネットアプリ中継用URLは、アプリ情報登録部31が、アプリ情報をアプリ情報管理テーブル35に登録する際に生成し、アプリ情報に付加しておいてもよい。
続いて、プロバイダアプリ1221のUI制御部122は、受信されたアプリ情報の一覧をRAM112に記録しておき、当該アプリ情報の一覧に基づいて、ネットアプリ選択画面を表示させる(S206)。
図15は、ネットアプリ選択画面の表示例を示す図である。同図においてネットアプリ選択画面620には、ネットアプリごとにボタンが表示されている。同図では、スキャンネットアプリ22に対応するボタン621と、ファイルAの印刷指示に係る印刷ネットアプリ21に対応するボタン622と、ファイルBの印刷指示に係る印刷ネットアプリ22に対応するボタン623とが表示されている。
ネットアプリ選択画面620において、いずれかの印刷ジョブに係る印刷ネットアプリ21に対応するボタンが選択されると(S207)、UI制御部122は、印刷設定画面を操作パネル15に表示させる(S208)。当該印刷設定画面では、改めて印刷設定情報を設定することができる。したがって、ユーザは、ユーザPC20において印刷ネットアプリ21を用いて印刷指示を行った後、画像形成装置10において印刷の開始指示を入力するまでの間に所望する印刷設定が変化した場合に印刷設定を変更することができる。斯かる仕組みは、印刷ネットアプリ21を利用した場合の印刷ジョブは、通常の印刷ジョブと異なり直ちに実行されないという特性に鑑みて利便性が認められる。すなわち、印刷指示を行ってから出力されるまでの時間が長くなればなるほど、ユーザの気が変わる(所望の印刷設定が変化する)可能性が高まるからである。
UI制御部122は、操作パネル15に表示された印刷設定画面を介して入力された印刷設定情報をRAM112に記録しておく。なお、当該印刷設定画面では、機種に固有の設定項目に関する値も設定可能である。したがって、RAM112に記録される印刷設定情報には、機種に固有の設定項目に関する値も含まれる。
続いて、操作パネル15のスタートキーが押下される(印刷開始指示が入力される)と(S209)、ネットアプリ連携部124は、押下されたボタンに対応するアプリ情報(以下、「カレントアプリ情報」という。)に含まれている連携機能識別子(「print」)に基づいて、印刷を実行すべきことを認識する。印刷を実行するためには印刷データを入手する必要がある。そこで、ネットアプリ連携部124は、印刷データの送信要求をカレントアプリ情報に含まれているネットアプリ中継用URL宛に送信する(S210)。当該送信要求には、カレントアプリ情報に含まれているファイル名が指定される。また、カレントアプリ情報に含まれているPDL一覧の中で画像形成装置10が(厳密には、プリンタアプリ1212が)解釈可能なプリンタ記述言語の種別も指定される。
ネットアプリ中継用URL宛の印刷データの送信要求は、ネットアプリ管理部310の仲介部34によって受信される。仲介部34は、当該ネットアプリ中継用URLが対応するアプリ情報をアプリ管理テーブル35より取得し、当該アプリ情報に含まれているネットアプリアドレス宛に印刷データの送信要求を転送する(S211)。
当該ネットアプリアドレス宛の印刷データの送信要求は、印刷ネットアプリ21の連携部213によって受信される。連携部213は、印刷データ生成部214に印刷データの生成を要求する。印刷データ生成部214は、印刷データの送信要求において指定されたファイル名の文書ファイルを補助記憶装置202より取得し、当該文書ファイルの印刷データを生成する(S212)。この際、印刷データ生成部214は、印刷データの送信要求において指定されたプリンタ記述言語を生成可能なプリンタドライバを利用して当該文書ファイルの印刷データを生成する。また、印刷設定画面520を介して設定された値、又は属性情報管理ファイル215に含まれている値を含む印刷設定情報が印刷データに設定される(書き込まれる)。
続いて、連携部213は、生成された印刷データを管理部310の仲介部34に返信する(S213)。続いて、仲介部34は、当該印刷データをプロバイダアプリ1221のネットアプリ連携部124に転送する(S214)。
ネットアプリ連携部124は、受信された印刷データを機能制御部125に入力する。機能制御部125は、当該印刷データに係る印刷要求をSDKプラットフォーム1230の印刷サービス部1231に入力する。その結果、当該印刷データに基づく印刷ジョブが実行される(S215)。
なお、図12の処理の実行中において、図10の処理も並列的に実行されうる。具体的には、画像形成装置10を現在操作中のユーザとは異なるユーザに係るユーザPC20が有するネットアプリからのアプリ情報の登録要求に基づいて、画像形成装置10のユーザ管理テーブル126には、当該アプリ情報に含まれているユーザID等が登録されうる。
続いて、ステップS215の詳細について説明する。図16は、印刷ネットアプリからの要求に応じて実行される印刷処理の処理手順を説明するためのシーケンス図である。
ステップS301においてプロバイダアプリ1221の機能制御部125は、SDKAPIを介して印刷要求を印刷サービス部1231に入力する。当該印刷要求に印刷データ及び印刷設定情報が含まれている(又は指定されている)。当該印刷設定情報は、図12のステップS208において操作パネル15に表示された印刷設定画面を介して設定され、RAM112に記録されていたものの一部である。
図17は、印刷サービス部に入力される印刷設定情報の構成例を示す図である。同図の印刷設定情報には、設定項目の一部として部数及びステープルが例示されている。もちろん、一般的に使用される他の設定項目も印刷設定情報に含まれうる。但し、印刷サービス部1231に入力される印刷設定情報の構成はSDKAPIに従ったものである。したがって、当該印刷設定情報には、機種に固有の設定項目は含めることはできない。一方、RAM112に記録されている印刷設定情報には、機種に固有の設定項目も含まれている。したがって、ステップS301の印刷要求において指定可能な印刷設定情報は、RAM112に記録されていたものの一部(SDKAPIが対応可能なもの)なのである。
ところで、図17の印刷設定情報には、コールバック情報が含まれている。コールバック情報とは、印刷サービス部1231が、プロバイダアプリ1221を呼び出すための情報(プロバイダアプリ1221への印刷データの入力要求)である。コールバック情報の具体的な実装形例としては、例えば、プロバイダアプリ1221のコールバック関数やプロバイダアプリ1221のオブジェクト等の識別情報があげられる。本実施の形態では、コールバック関数の識別情報であるとする。なお、コールバック情報は、印刷サービス部1231に印刷要求を入力するSDKアプリ1220(プロバイダアプリ1221以外のSDKアプリ1220も含む)のうち、コールバック関数を有するSDKアプリ1220によって設定される。
印刷要求の入力に応じ、印刷サービス部1231は、印刷要求と共に入力された印刷設定情報を印刷データに設定する(S302)。具体的には、印刷データのヘッダ部に、印刷設定情報のコールバック情報以外の情報が書き込まれる。
続いて、印刷サービス部1231は、入力された印刷設定情報にコールバック情報が含まれている場合は、当該コールバック情報に基づいてプロバイダアプリ1221のコールバック関数を呼び出す(S303)。当該コールバック関数では、ステップS302において加工された印刷データが入力情報として指定される。なお、入力された印刷設定情報にコールバック情報が含まれていない場合、印刷サービス部1231の処理は、ステップS306に進む。
続いて、プロバイダアプリ1221は、コールバック関数内に実装されている処理を実行する(S304)。具体的には、メモリ214に記録されている印刷設定情報の中で、機種固有の設定項目に関する情報を印刷データのヘッダ部分に書き込む(追加する)。なお、例えば、ステップS302において、元々印刷データに含まれている印刷設定情報のうち機種に固有の設定項目に関する情報が印刷データから除去されるように印刷サービス部1231が実装されている場合、当該除去されてしまう印刷設定情報をもコールバック関数内において追加可能としてもよい。すなわち、印刷データは、ユーザPC20のプリンタドライバによって生成されるため、ステップS302の実行前においては、機種に固有の設定項目に関する情報が含まれている可能性がある。
印刷データの加工が完了すると、プロバイダアプリ1221は、コールバック関数の実装にしたがって、加工された印刷データを印刷サービス部1231に出力(リターン)する(S305)。
続いて、印刷サービス部1231は、当該印刷データを通信制御部1241における印刷ポート1241pを介してプリンタアプリ1212に送信する(S306、S307)。印刷データの受信に応じ、プリンタアプリ1212は、当該印刷データに係る印刷ジョブのジョブIDを印刷サービス部1231に返信する。
続いて、プリンタアプリ1212は、当該印刷ジョブ用のオブジェクトをMIB管理部1243に登録(生成)する(S308)。当該オブジェクトは、ジョブIDに基づいて参照可能とされる。続いて、プリンタアプリ1212は、プリンタ制御部1242に印刷データを入力する(S309)。プリンタ制御部1242は、印刷データに基づいて生成される画像の印刷をプリンタ12に実行させる。
印刷が完了すると、プリンタアプリ1212は、MIB管理部1243における当該印刷ジョブ用のオブジェクトに対し印刷の完了を示す情報を書き込む(S311)。なお、印刷が中断された場合、又は印刷に失敗した場合、プリンタアプリ1212は、それぞれの状態に応じた情報当該オブジェクトに書き込む。
一方、印刷サービス部1231は、プリンタアプリ1212に印刷データを送信した後、通信制御部1241を利用したSNMP(Simple Network Management Protocol)通信により、MIB管理部1243において、当該印刷ジョブのジョブIDによって識別されるオブジェクトを定期的に参照(ポーリング)している(S312、S313)。印刷サービス部1231は、当該オブジェクトに印刷の完了、中断、又は失敗等を示す情報が書き込まれたこと検知すると(すなわち、印刷ジョブの状態の変化を検知すると)、印刷ジョブの状態情報を含むイベントをプロバイダアプリ1221に通知する(S314)。プロバイダアプリ1221のUI制御部122は、イベントに含まれている状態情報を操作パネル15に表示させる。また、プロバイダアプリ1221は、当該イベントをネットアプリ管理部310を介して印刷ネットアプリ21に送信してもよい。印刷ネットアプリ21は、当該イベントに含まれている状態情報を表示装置206に表示させてもよい。
なお、印刷サービス部1231からプロバイダアプリ1221(SDKアプリ1220)へのイベントの通知を可能とするため、プロバイダアプリ1221は、印刷サービス部1231に印刷要求を入力する際に、イベント受信用のリスナー(関数又はオブジェクト等)を印刷サービス部1231に通知しておけばよい。印刷サービス部1231は、当該リスナーとジョブIDとを関連付けて保持しておき、状態が変化した印刷ジョブのジョブIDに対応したリスナーに対して当該状態情報を含むイベントを通知すればよい。
上述したように、本実施の形態によれば、SDKプラットフォーム1230は、機種に非依存な既存のインタフェースを踏襲したまま、機種に固有の印刷設定情報を印刷データに書き込むための仕組みをSDKアプリ1220に提供することができる。したがって、SDKアプリ1220は、機種に非依存なインタフェースを利用しつつ、機種に固有の実装を行うこともできる。また、SDKアプリ1220は、印刷サービス部1231によって提供される印刷ジョブの状態の追跡機能によって、印刷ジョブの状態の変化をユーザに通知することができる。したがって、機種ごとの開発は避けたいという開発者側の希望と、機種固有の機能を利用しつつ印刷ジョブの状態を確認したいというユーザ側の希望とを整合させることができる。
ところで、ネットアプリの実装形態の自由度高い。例えば、印刷ネットアプリ21は、図12のステップS213及びS214において、ネットアプリ管理部310を介してプロバイダアプリ1221へ印刷データを送信するのではなく、印刷ポート1241pへ(すなわち、プリンタアプリ1212へ)直接印刷データを送信するように実装されてもよい。この場合、図12のステップS210及びS211において、プロバイダアプリ1221より、ユーザによって操作の対象とされた画像形成装置10のIPアドレスと印刷ポート1241pのポート番号とを送信してもらえばよい。
但し、この場合、印刷ジョブの状態の追跡を行うことはできない。図2において説明したように、プリンタアプリ1212は、印刷ジョブの状態のフィードバックを行えないからである。したがって、印刷ネットアプリ21は、プロバイダアプリ1221を介して印刷データを送信することにより、より高いサービスをユーザに提供することができる。
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。