(57)【要約】【課題】  一定時間内にバックグラウンドタスクによる処理を完遂できないことに伴って印刷が中止されることを抑制する。【解決手段】  クライアントには、印刷指示を受け付けた場合に、ＵＩを提供するアプリケーションであり、バックグラウンドタスクのコンポーネントと、フォアグラウンドタスクのコンポーネントを含むプログラムがインストールされている。ＯＳによってバックグラウンドタスクのコンポーネントが起動されたことに応じて、バックグラウンドタスクは、フォアグラウンドタスクの起動をＯＳに要求する。起動したフォアグラウンドタスクは、処理の実行中を示すＵＩを表示する。また、フォアグラウンドタスクは、取得したプリントチケットに基づいてユーザ操作を受け付けるＵＩを表示しないと判断したことに従って、処理の完了を示す情報を前記ＯＳに通知する。【選択図】  図７
2019197277.tif 000002
【特許請求の範囲】
【請求項１】
印刷指示を受け付けた場合に、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を提供することが可能であり、バックグラウンドタスクを実行するためのコンポーネントと、フォアグラウンドタスクを実行するためのコンポーネントを少なくとも含むアプリケーションのプログラムであって、
ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）によって前記バックグラウンドタスクのコンポーネントが起動されたことに応じて、前記バックグラウンドタスクは、前記フォアグラウンドタスクのコンポーネントの起動を前記ＯＳに要求する要求ステップを、コンピュータに実行させ、
前記要求に基づき前記フォアグラウンドタスクが起動されたことに従って、前記フォアグラウンドタスクは、
前記印刷指示を受け付けたことに従って、印刷に関するデータを取得する取得ステップと、
処理を実行中であることを示すＧＵＩを表示する第１の表示制御ステップと、
前記取得ステップで取得したデータに基づいてユーザ操作を受け付けるＧＵＩを表示するか否かを判断する判断ステップと、
前記判断ステップで前記ユーザ操作を受け付けるＧＵＩを表示しないと判断したことに従って、処理の完了を示す情報を前記ＯＳに通知する通知ステップと、
を前記コンピュータに実行させることを特徴とするプログラム。
【請求項２】
前記フォアグラウンドタスクは、前記判断ステップで前記ユーザ操作を受け付けるＧＵＩを表示すると判断したことに従って、ユーザ操作を受け付けるためのＧＵＩを表示する第２の表示制御ステップを前記コンピュータに更に実行させ、
前記通知ステップでは、更に、前記ユーザ操作を受け付けるためのＧＵＩを介してユーザ操作を受け付けたことに従って、前記処理の完了を示す情報を前記ＯＳに通知することを特徴とする請求項１に記載のプログラム。
【請求項３】
前記バックグラウンドタスクは、
前記バックグラウンドタスクの実行時間を計測する計測ステップと、
前記印刷に関するデータを取得する第２の取得ステップと、
前記第２の取得ステップで取得したデータに基づいて前記フォアグラウンドタスクを起動するか否かを判断する第２の判断ステップと、を前記コンピュータに更に実行させ、
前記要求ステップでは、前記第２の判断ステップによって、前記フォアグラウンドタスクを起動すると判断した場合、又は、前記実行時間に基づき所定時間が経過したと判断した場合に、前記フォアグラウンドタスクの起動を前記ＯＳに要求することを特徴とする請求項１又は２に記載のプログラム。
【請求項４】
前記バックグラウンドタスクは、
前記印刷に関するデータを取得する第２の取得ステップと、
前記第２の取得ステップで取得したデータに基づいて前記フォアグラウンドタスクを起動するか否かを判断する第２の判断ステップと、
前記ＯＳによって発行される例外を受信する受信ステップと、
前記発行された例外が、タイムアウトを示す例外であることに従って前記フォアグラウンドタスクの起動を前記ＯＳに要求する例外処理ステップと、
を前記コンピュータに更に実行させることを特徴とする請求項１又は２に記載のプログラム。
【請求項５】
前記印刷に関するデータは、印刷設定を示すプリントチケットであることを特徴とする請求項１乃至４のいずれか１項に記載のプログラム。
【請求項６】
前記通知ステップによる通知が行われた後に、プリンタドライバと前記ＯＳによって印刷データが生成されることを特徴とする請求項１乃至５のいずれか１項に記載のプログラム。
【請求項７】
印刷指示を受け付けた場合に、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を提供することが可能であり、バックグラウンドタスクを実行するためのコンポーネントと、フォアグラウンドタスクを実行するためのコンポーネントを少なくとも含むアプリケーションのプログラムであって、
ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）によって前記バックグラウンドタスクのコンポーネントが起動された場合において、前記バックグラウンドタスクは、起動されたことに応じて、前記フォアグラウンドタスクのコンポーネントの起動を要求する要求ステップをコンピュータに実行させ、
前記要求に基づき前記フォアグラウンドタスクが起動されたことに従って、前記フォアグラウンドタスクは、ＧＵＩ表示に関する処理を実行することを特徴とするプログラム。
【請求項８】
前記アプリケーションのプログラムは、前記アプリケーションに関連するＶ４プリンタドライバのインストールに応じて、前記コンピュータにインストールされるＵＷＰ（Ｕｎｉｖｅｒｓａｌ  Ｗｉｎｄｏｗｓ  Ｐｌａｔｆｏｒｍ）アプリケーションのプログラムであることを特徴とする請求項１乃至７のいずれか１項に記載のプログラム。
【請求項９】
前記印刷に関するデータは、印刷設定を示すプリントチケットであり、
前記判断ステップでは、前記取得ステップで取得したプリントチケットに認証プリントの設定がなされていることに従って、前記ユーザ操作を受け付けるＧＵＩを表示すると判断し、
前記第２の表示制御ステップでは、前記認証プリントで使用する認証情報の入力を受け付けるＧＵＩを表示することを特徴とする請求項２に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷に関わるＧＵＩを提供するアプリケーションのプログラムに関するものである。
【背景技術】
【０００２】
プリンタドライバを利用し、印刷装置に対して印刷データを送信する構成が一般に知られる。ホストコンピュータには、基本ソフトウェアであるオペレーティングシステム（ＯＳ）がインストールされており、プリンタドライバはそのＯＳの規定する仕様に従って構成され、ＯＳから呼び出されて動作する。印刷装置を提供するベンダは、ＯＳの仕様に適合するプリンタドライバを提供することにより、そのＯＳを用いてプリンタに印刷を指示する手段を提供することができる。ＯＳとしてＭｉｃｒｏｓｏｆｔ（登録商標）のＷｉｎｄｏｗｓ（登録商標）８より前のバージョンを利用する場合、プリンタドライバは、Ｖ３プリンタドライバと呼ばれるアーキテクチャで構成される。Ｖ３プリンタドライバは、ユーザからの印刷要求が発生したタイミングでＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を表示し、何らかの操作をユーザに促すような機能を提供することができる。例えば、印刷要求が発生すると、Ｖ３プリンタドライバの構成物であるコンフィグレーションモジュールの規定のイベントが呼び出されるため、コンフィグレーションモジュールは、そのイベント処理の中でユーザインタフェースを表示することが可能である。例えば、特許文献１には、利用できない項目をユーザが設定しようとする場合に、利用できない理由をデバイスに問い合わせて、メッセージとして利用できない理由を表示する印刷制御方法を開示している。
【０００３】
また、近年、Ｗｉｎｄｏｗｓ（登録商標）において、Ｖ４プリンタドライバと呼ばれる新しいアーキテクチャが登場している。Ｖ４プリンタドライバは、セキュリティ性が重視されているため、プリンタドライバそのもののカスタマイズ性がＶ３プリンタドライバと比較して低下している。例えば、前述のコンフィグレーションモジュールはＯＳにより提供され、ベンダは、その動作をカスタマイズする設定ファイルやスクリプトファイルのみを提供可能である。このようなカスタマイズ性の低下を補うため、印刷装置を提供するベンダは、プリンタドライバの機能を補助するための専用のアプリケーションを提供することができる。このアプリケーションはＵＷＰ  Ｄｅｖｉｃｅ  Ａｐｐｓ（Ｕｎｉｖｅｒｓａｌ  Ｗｉｎｄｏｗｓ  Ｐｌａｔｆｏｒｍ  Ｄｅｖｉｃｅ  Ａｐｐｓ）と呼ばれる。ＵＷＰ  Ｄｅｖｉｃｅ  Ａｐｐｓは、所定のユーザ操作などを契機としてプリントに関する処理を実行させるＷｏｒｋｆｌｏｗ（ＷＦ）と呼ばれる機能を備えることが可能である。
【０００４】
ＷＦ機能では、まず、バックグラウンドタスクと呼ばれるＵＩを持たないスレッドがＯＳによって起動される。バックグラウンドタスクは、印刷設定や印刷対象のドキュメントを取得し、印刷のカスタマイズなどの処理を行う。また、バックグラウンドタスクは、印刷のカスタマイズ等の処理を行うためにユーザ入力を必要とすると判断すると、ＵＩの呼び出し処理を行い、ＵＩを表示する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−９９０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ここで、バックグラウンドタスクには実行に関わる制約があり、ＵＩを表示していない状態でＯＳに定められた一定時間内に処理を完遂しないとＯＳによって処理が中断されるという特性を持つ。この実行に関わる制約は、ユーザの認知していないところでコンピュータのバッテリーやネットワークなどのリソースを多く消費する重い処理が実行され続けることを抑制するために設けられている。従って、ＷＦ機能のためのバックグラウンドタスクは、ＵＩを起動するかどうかを一定時間内に判断しなければならない。
【０００７】
ところで、ＷＦ機能を活用することで、印刷開始指示が行われたことを契機として処理を行わせることが考えられる。例えば、印刷開始指示が行われたことを契機として、印刷設定や印刷対象のドキュメントを解析して、必要に応じてユーザ操作を行うためのＵＩを呼び出して、ユーザに確認処理を行わせるといったことが考えられる。
【０００８】
しかしながら、印刷設定や印刷対象のドキュメントのサイズが大きい場合や、ＵＷＰ  Ｄｅｖｉｃｅ  Ａｐｐｓが動作するコンピュータのスペックが低い場合など、ＷＦのバックグラウンドタスクによる処理に時間がかかる恐れがある。また、コンピュータが高負荷状態の場合などの条件を満たす場合などにも、ＷＦのバックグラウンドタスクによる処理に時間がかかる恐れがある。
【０００９】
例えば、バックグラウンドタスクにより印刷データを解釈してＵＩを起動するか否かの判断処理を行っている間に、ＯＳが定めた一定時間が経過してしまう恐れがある。この場合、ＯＳのタスク制御により当該バックグラウンドタスクの実行が強制的に中止されてしまい、印刷ジョブが破棄されてしまうといった課題がある。
【００１０】
本発明は、上述の課題の少なくとも１つを鑑みなされたものである。本発明の目的の１つは、ＯＳが定めた一定時間内にバックグラウンドタスクによる処理を完遂できないことに伴って印刷処理が中止されることを抑制できる仕組みを提供することである。また、本発明の別の目的は、一定時間内に判断処理を完遂できないと判断したことに従って、ＵＩを表示するフォアグラウンドタスクを起動し、当該フォアグラウンドタスクでユーザ入力が必要か否かを判断する仕組みを提供することである。
【課題を解決するための手段】
【００１１】
上記の少なくとも１つの目的を達成するために本発明のプログラムは、印刷指示を受け付けた場合に、ＵＩを提供することが可能なアプリケーションのプログラムであり、バックグラウンドタスクを実行するためのコンポーネントと、フォアグラウンドタスクを実行するためのコンポーネントを少なくとも含むアプリケーションのプログラムであって、ＯＳに対して前記印刷指示が入力され、前記ＯＳによって前記バックグラウンドタスクのコンポーネントが起動されたことに応じて、前記バックグラウンドタスクは、前記フォアグラウンドタスクのコンポーネントの起動を前記ＯＳに要求する要求ステップを、コンピュータに実行させ、前記要求に基づき前記フォアグラウンドタスクが起動されたことに従って、前記フォアグラウンドタスクは、前記印刷指示を受け付けたことに従って生成されたプリントチケットを取得する取得ステップと、処理を実行中であることを示すＵＩを表示する第１の表示制御ステップと、前記取得ステップで取得したプリントチケットに基づいてユーザ操作を受け付けるＵＩを表示するか否かを判断する判断ステップと、前記判断ステップで前記ユーザ操作を受け付けるＵＩを表示しないと判断したことに従って、処理の完了を示す情報を前記ＯＳに通知する通知ステップと、を前記コンピュータに実行させることを特徴とする。
【発明の効果】
【００１２】
本発明の１つの側面によれば、ＯＳが定めた一定時間内にバックグラウンドタスクによる処理を完遂できないことに伴って印刷処理が中止されることを抑制できるようになる。
【図面の簡単な説明】
【００１３】
【図１】印刷システムの一例を示す図である。
【図２】クライアントコンピュータのハードウェア構成の一例を示す図である。
【図３】クライアントコンピュータのソフトウェア構成の一例を示す図である。
【図４】Ｍｅｔａｄａｔａの一例を説明する図である。
【図５】ドライバ、拡張アプリ、プリンタの関係を説明する模式図である。
【図６】クライアントコンピュータの制御の一例を説明するフローチャートである。
【図７】クライアントコンピュータの制御の一例を説明するフローチャートである。
【図８】クライアントコンピュータに表示される画面の一例を示す図である。
【図９】クライアントコンピュータに表示される画面の一例を示す図である。
【図１０】印刷データに付与される印刷設定を説明するための図である。
【図１１】プリンタの能力情報を説明するための図である。
【図１２】クライアントコンピュータの制御の一例を説明するフローチャートである。
【図１３】クライアントコンピュータの制御の一例を説明するフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明を実施するための実施形態について図面を用いて説明する。なお、以下の実施の形態は特許請求の範囲に係る発明を限定するものでなく、また実施の形態で説明されている特徴の組み合わせのすべてが発明の解決手段に必須のものとは限らない。
【００１５】
＜第１の実施形態＞
まず図１を用いて、本発明に係る印刷システムの構成を説明する。図１は、本発明に係る印刷システムの一例を示す図である。本実施形態の印刷システムは、情報処理装置の一例であるクライアントコンピュータ１０１、クライアントコンピュータ１０１へ対してデータを配信するサーバ１０４と、ページ記述言語（ＰＤＬ）形式の印刷データを受信し印刷を行うプリンタ１０２を備える。各装置は、Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＷＡＮ）を含むネットワーク１０３を通じて相互に通信可能である。
【００１６】
なお、プリンタ１０２は、印刷機能のみを備えるシングルファンクションプリンタでも、印刷機能、スキャン機能、複写機能を備えるマルチファンクションプリンタでも構わない。また、クライアントコンピュータ１０１は、ネットワーク１０３に対し一台に限らず、複数台接続されていてもよい。クライアントコンピュータ１０１は、プリンタ１０２などに印刷データを送信することができる。
【００１７】
図２は、図１のクライアントコンピュータ１０１のハードウェア構成を示すブロック図である。クライアントコンピュータ１０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０２、外部メモリ２０９、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０３を有する。
【００１８】
ＣＰＵ２０１を含む制御部２００は、クライアントコンピュータ１０１全体の動作を制御する。ＣＰＵ２０１は、ＲＯＭ２０３又は外部メモリ２０９に記憶されたプログラムをＲＡＭ２０２に展開し、それを実行してＵＩ画面の制御や印刷データの生成、印刷データの転送などの各種制御を行う。ＲＯＭ２０３は、ＣＰＵ２０１で実行可能な制御プログラムやブートプログラム等を格納する。ＲＡＭ２０２は、ＣＰＵ２０１の主記憶メモリであり、ワークエリア又は各種プログラムを展開するための一時記憶領域として用いられる。外部メモリＩ／Ｆ２０８を介して制御部２００に接続される外部メモリ２０９は、ＯＳ２１０、アプリケーション２１２、アプリケーション実行環境２１３、プリンタドライバ２１１などを記憶する。
【００１９】
本実施形態では外部メモリ２０９としてＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等の補助記憶装置を想定しているが、ＨＤＤの代わりにＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などの不揮発性メモリを用いるようにしても良い。このように、ＣＰＵ２０１、ＲＯＭ２０３、ＲＡＭ２０２、外部メモリ２０９等のハードウェアは、いわゆるコンピュータを構成している。
【００２０】
操作入力装置Ｉ／Ｆ２０４は、キーボードやポインティングデバイス（マウス）、タッチ入力デバイスなどの操作入力装置２０５を制御するインタフェースである。操作入力装置２０５は、ユーザからの操作を受け付ける受付部として機能する。ディスプレイＩ／Ｆ２０６はディスプレイ２０７への画面の表示を制御する。ディスプレイ２０７は、ユーザに対して情報を表示する表示部として機能する。
【００２１】
制御部２００は、ネットワークＩ／Ｆ２１４を介してネットワーク１０３に接続される。ネットワークＩ／Ｆ２１４は、ネットワーク１０３上のプリンタに印刷データを送信したり、ネットワーク１０３上のサーバからストアアプリケーションやプリンタドライバなどを受信したりする。なお、ネットワーク１０３上の外部端末とのデータ通信は例えばＩＥＥＥ８０２．１１シリーズに準拠する無線通信やＬＴＥや５Ｇなどの移動通信システムや、ＬＡＮケーブルなどの有線ケーブルを介した通信である。
【００２２】
続けて、図３を用いて、クライアントコンピュータ１０１のソフトウェア構成の一例について説明する。まず、クライアントコンピュータ１０１内の動作ソフトウェアについて説明する。クライアントコンピュータ１０１内のソフトウェアは、ＯＳ２１０、アプリケーション実行環境２１３とアプリケーション２１２の３つの層から構成される。
【００２３】
まず、ＯＳ２１０を構成する個々の要素について説明する。ＯＳ２１０は、大きくプリンティングシステム３３７、プリンタドライバ２１１、外部設定ファイル群３５２とスレッドプール３５５から構成される。
【００２４】
まず、外部設定ファイル群３５２について説明する。外部設定ファイル群３５２に含まれるＭｅｔａｄａｔａ３２０は、プリント拡張アプリ３００とプリントキュー３０８の双方の識別子を持つ定義情報であり各々を関連付ける役割を持つ。Ｍｅｔａｄａｔａ３２０については、図４を用いて後述する。
【００２５】
レジストリ３５３は、ＯＳ２１０の設定群が記述された領域である。レジストリ３５３には、印刷時起動アプリランチャ３５０によるバックグラウンドタスクの起動を有効とするか無効とするかを示す設定が登録されている。なお、当該レジストリ３５３に登録されている設定は、ＯＳ２１０の設定画面を介して変更可能である。
【００２６】
続いてプリンティングシステム３３７を構成する要素について説明する。プリントキュー３０８は、ネットワーク１０３内に存在するプリンタを使用して印刷を行う際に、印刷ジョブを一時的に保存する領域である。本実施形態では、プリンタ１０２に対応するプリントキュー３０８が作成されているものとする。
【００２７】
スプーラ３２５は、アプリケーション２１２のいずれかから印刷された印刷対象データであるＸＰＳ（ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）ファイルを一時的に保存及び管理するモジュールである。スプーラ３２５に保存されたＸＰＳファイルは、フィルタパイプラインマネージャ３３５を通して、ＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）に変換された後に、スプーラ３２５を通じてプリンタ１０２へと送信される。
【００２８】
フィルタパイプラインマネージャ３３５は、１以上のフィルタ３３０をロードして、ＸＰＳファイルをＰＤＬファイルへと変換するモジュールである。フィルタパイプラインマネージャ３３５は、ＯＳ２１０が提供する印刷アーキテクチャ（印刷システムとも呼ぶ）の一部として構成されている。ＯＳ２１０は、フィルタコンフィグ３３６の定義に基づき、プリンタドライバ２１１を構成する要素の一つである１以上のフィルタ３３０を読み込み、当該１以上のフィルタを使用してＰＤＬを生成する。ＰＤＬは、例えば、ＰＣＬやＬＩＰＳなどを採用することができる。
【００２９】
コンフィグレーションモジュール３３１は、ＰｒｉｎｔＴｉｃｋｅｔ（プリントチケットとも呼ぶ）の生成、変更を行うモジュールである。また、モジュール３３１は、組み合わせることができない設定が行われないよう制限する禁則機能を有する。また、コンフィグレーションモジュールはプリンタの能力情報であるＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを管理する。
【００３０】
プリント拡張アプリ３００の詳細印刷設定ＵＩ部３０４、印刷時起動バックグラウンドタスク部３０５と印刷時起動ＵＩ部３０３は、コンフィグレーションモジュール３３１が提供するＡＰＩを呼び出すことができる。各部は、当該ＡＰＩを呼び出すことで、ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）形式のＰｒｉｎｔＴｉｃｋｅｔやＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを取得することができる。
【００３１】
Ｖ４プリンタドライバを提供するプリンタベンダは、プリンタドライバ２１１として、禁則ルールやデバイスの機能が記述されたデバイス機能テキストファイル３３２や、スクリプトファイル３３３をＯＳ２１１に提供する。ファイル３３２、３３３に基づき、コンフィグレーションモジュール３３１の動作はカスタマイズされる。
【００３２】
印刷時起動アプリランチャ３５０は、印刷時起動バックグラウンドタスク部３０５などが提供するバックグラウンドタスクの実行を制御するモジュールである。ランチャ３５０は、ユーザにより印刷開始指示が入力されたことをＯＳ２１０が検知し、印刷を行う場合に、印刷時起動バックグラウンドタスク部３０５を起動する。なお、レジストリ３５３にバックグラウンドタスクの起動を無効とする設定が記憶されている場合、ＯＳ２１０はバックグラウンドタスクの実行を抑制する。
【００３３】
プリンタドライバ２１１は、フィルタ３３０、フィルタコンフィグ３３６、スクリプトファイル３３３とデバイス機能テキストファイル３３２、で構成される。フィルタ３３０は、フィルタパイプラインマネージャ３３５によって呼び出されるフィルタであり、入力されたＸＰＳファイルをＰＤＬへと変換して出力する機能を有している。フィルタコンフィグ３３６は、フィルタパイプラインマネージャ３３５が参照する定義ファイルであり、１以上のフィルタ３３０を呼び出す順序が記述されている。スクリプトファイル３３３とデバイス機能テキストファイル３３２は、コンフィグレーションモジュール３３１によって呼び出されるファイルであり、コンフィグレーションモジュール３３１の動作をカスタマイズできる。
【００３４】
スレッドプール３５５は、各種アプリケーション２１２やＯＳ２１０内のモジュール群が実行される際に利用されるスレッドを格納するモジュールである。
【００３５】
アプリケーション実行環境２１３は、デスクトップアプリ実行環境３２３、タッチアプリ実行環境３０１から構成される。
【００３６】
タッチアプリ実行環境３０１は、後述するアプリケーション２１２の一種であるＯＳ２１０上で動作するタッチアプリ３２１やプリント拡張アプリ３００を実行するための実行環境である。実行環境３０１は、サーバ１０４から配布されたＵＷＰ（Ｕｎｉｖｅｒｓａｌ  Ｗｉｎｄｏｗｓ  Ｐｌａｔｆｏｒｍ）アプリケーションを動作させるための実行環境であり、ＵＷＰアプリケーションの実行を制御する。
【００３７】
デスクトップアプリ実行環境３２３は、後述するアプリケーション２１２の一種であるデスクトップアプリ３２２を実行するための実行環境である。デスクトップアプリ実行環境３２３は、「Ｗｉｎ３２／６４アプリケーション」や「．ＮＥＴアプリケーション」などの実行を制御する。
【００３８】
アプリケーション２１２は、タッチアプリ３２１、プリント拡張アプリ３００とデスクトップアプリ３２２の三種類のアプリケーションで構成される。タッチアプリ３２１は、タッチアプリ実行環境３０１で動作するアプリケーションである。タッチアプリ３２１は、インターネット上で公開されるアプリケーション配布システムを通じて、ダウンロードされ、クライアントコンピュータ１０１にインストールされる。タッチアプリ３２１は、必要なモジュール群がパッケージ化して署名されており、ＯＳ２１０内のＡＰＩの呼び出しが制限されている。
【００３９】
プリント拡張アプリ３００は、タッチアプリ３２１の一種であり、タッチアプリ３２１と同様にタッチアプリ実行環境３０１の上で動作する。プリント拡張アプリ３００は、ＯＳ２１０がアプリケーション配布システムからインターネットを経由して取得する。また、本実施形態のプリント拡張アプリ３００は、印刷時に独自にカスタマイズしたＵＩを表示させるＷｏｒｋｆｌｏｗ（ＷＦ）と呼ばれる機能を持つ。
【００４０】
プリント拡張アプリ３００は、タイルアプリ部３０２、詳細印刷設定ＵＩ部３０４、印刷時起動バックグラウンドタスク部３０５、印刷時起動ＵＩ部３０３で構成される。
【００４１】
タイルアプリ部３０２部は、拡張アプリ３００を起動するユーザ操作を受け付けたことに従って実行されるＵＩ部であり、登録されたプリンタのステータス表示などの機能を提供する。
【００４２】
詳細印刷設定ＵＩ部３０４は、ＯＳ２１０によって発行された詳細印刷設定イベントを受信したことに従って実行されるＵＩ部である。詳細印刷設定ＵＩ部３０４は、コンフィグレーションモジュール３３１からＡＰＩを通じて取得したＰｒｉｎｔＴｉｃｋｅｔとＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓに基づき印刷設定用のＵＩを生成して表示する。ＵＩ部３０４は、ユーザ操作に従って、適宜、ＰｒｉｎｔＴｉｃｋｅｔの設定を変更し、コンフィグレーションモジュール３３１に返却する。
【００４３】
印刷時起動バックグラウンドタスク部３０５は、印刷イベントが発行された際に実行すべきバックグラウンドタスクに対応するコンポーネントである。タスク部３０５が提供するタスクは、生存時間に限りがあり、一定時間が経過するとＯＳ２１０によって強制的に終了させられる。
【００４４】
印刷時起動バックグラウンドタスク部３０５は、コンフィグレーションモジュール３３１のＡＰＩを通じてＰｒｉｎｔＴｉｃｋｅｔの取得や読み書きをすることができる。また、ＷＦ機能を利用する場合、バックグラウンドタスクにより、印刷時起動ＵＩ部３０３を起動するか否かを判断し、必要に応じてフォアグラウンドタスクのコンポーネントであるＵＩ部３０３の起動をＯＳ２１０に要求することが既定されている。また、アプリストア３３４に変更した値を読み書きすることで、印刷時起動ＵＩ部３０３と値の受け渡しをすることができる。印刷時起動ＵＩ部３０３を起動しないと判断すると場合は、ランチャ３５０は、プリント拡張アプリ３００を起動することなく印刷データの生成を行う。
【００４５】
更に、バックグラウンドタスクにより起動された印刷時起動ＵＩ部３０３は、印刷対象のデータとなるＸＰＳやＰｒｉｎｔＴｉｃｋｅｔを編集して、ＯＳ２１０に返すことができる。
【００４６】
バックグラウンドタスクによってＯＳ２１０に対して起動要求が行われると、ＯＳ２１０は、印刷時起動ＵＩ部３０３を起動する。印刷時起動ＵＩ部３０３は、ＰｒｉｎｔＴｉｃｋｅｔやＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの取得と設定の変更ができる他に、印刷対象のデータのＸＰＳファイルを取得することができる。ＸＰＳファイルの変更を行う場合には、一度、アプリストア３３４を通じて編集後のＸＰＳファイルを印刷時起動バックグラウンドタスク部３０５に渡し、タスク部３０５が編集したＸＰＳファイルをＯＳ２１０に返す必要がある。本実施形態において、印刷時起動ＵＩ部３０３は、印刷に関する確認を行うためのＵＩや、未入力の設定をユーザに入力させるためのＵＩなどを表示するものとする。
【００４７】
続けて、プリンタとプリント拡張アプリ３００の関係について図４を用いて説明する。図４は、デバイスであるプリンタ１０２と、プリント拡張アプリ３００と、を関連付けるＭｅｔａｄａｔａ３２０を示す記述の一例である。
【００４８】
図４（Ａ）は、プリンタとプリント拡張アプリ３００を関連付けるＭｅｔａｄａｔａ３２０において、対応デバイス情報を示す記述の一例である。Ｍｅｔａｄａｔａ３２０には、Ｍｅｔａｄａｔａ３２０を利用するプリンタの一覧を示すＨａｒｄｗａｒｅＩＤＬｉｓｔタグ４０２が記述されている。項目４０３は、ＭＦＰ１＿ａｂｃｄというＨａｒｄｗａｒｅ  ＩＤを持つプリンタがこのＭｅｔａｄａｔａ３２０を利用することを示している。同様に、項目４０４は、ＭＦＰ２＿ｉｊｋｌというＨａｒｄｗａｒｅ  ＩＤを持つプリンタがＭｅｔａｄａｔａ３２０を利用することを示している。このように、１つのＭｅｔａｄａｔａ３２０に、そのＭｅｔａｄａｔａ３２０を利用するプリンタを複数列挙することができる。本実施形態では、一例としてＭｅｔａｄａｔａ３２０に、２つのプリンタのＨａｒｄｗａｒｅ  ＩＤが指定されている場合を例示しているがこれに限定されるものではない。１つであっても、３つ以上であっても構わない。なお、Ｈａｒｄｗａｒｅ  ＩＤとは、プリンタから返却される、プリンタを一意に特定するための識別情報である。
【００４９】
図４（Ｂ）には、プリント拡張アプリ３００を示すＤｅｖｉｃｅＣｏｍｐａｎｉｏｎＡｐｐｌｉｃａｔｉｏｎｓタグ４１１が記述されている。項目４１２は、プリンタベンダを識別する識別情報と、当該ベンダのプリンタに対して「１２３４ａｂｃｄ．ＭＦＰＵｔｉｌｉｔｙ」というプリント拡張アプリ３００が提供可能であることを示している。
【００５０】
クライアントコンピュータ１０１にプリンタ１０２が接続されると、ＯＳ２１０は、プリンタから取得したＨａｒｄｗａｒｅ  ＩＤに基づきＭｉｃｒｏｓｏｆｔ（登録商標）が管理するＭｅｔａｄａｔａ用サーバに問い合わせを行う。Ｍｅｔａｄａｔａ用サーバは、登録されているＭｅｔａｄａｔａを検索し、該当するＭｅｔａｄａｔａを応答する。ＯＳ２１０は、応答に基づきＭｅｔａｄａｔａ３２０を保存する。更に、ＯＳ２１０は、保存したＭｅｔａｄａｔａ３２０のＤｅｖｉｃｅＣｏｍｐａｎｉｏｎＡｐｐｌｉｃａｔｉｏｎｓタグ４１１に記述されたプリント拡張アプリをアプリケーション配布サーバから取得する。そして、外部メモリ２０９にプリント拡張アプリをインストールし、プリンタ１０２と関連付ける。これにより、プリンタ１０２に対してプリンタドライバ２１１を経由して印刷要求が発生した際に、プリント拡張アプリ３００を起動できるようになる。このＭｅｔａｄａｔａ３２０はプリンタベンダにより提供されるものである。プリンタベンダは、このＭｅｔａｄａｔａ３２０を事前にＭｉｃｒｏｓｏｆｔ（登録商標）が管理するＭｅｔａｄａｔａ用サーバに提供する。クライアントコンピュータは、Ｖ４プリンタドライバ２１１のインストール時にＭｅｔａｄａｔａ用サーバにアクセスし、インストールすべきドライバに最適なプリント拡張アプリ３００を自動的にインストールする。
【００５１】
図５は、印刷環境の一例を示す図である。プリンタであるＭＦＰ５０１は、ＭＦＰ１＿ａｂｃｄというＨａｒｄｗａｒｅ  ＩＤを有する。ＭＦＰ５０１をクライアントコンピュータ１０１に接続し、ＭＦＰ５０１に対応するプリンタドライバをインストールする場合、ＯＳ２１０は、接続されたプリンタに対応するＭｅｔａｄａｔａ３２０を取得する。また、当該Ｍｅｔａｄａｔａに基づき、ＭＦＰＵｔｉｌｉｔｙ５０６というプリント拡張アプリを取得し、ＭＦＰ５０１と関連付ける。なお、単一のプリンタ（例えばＭＦＰ５０１）に印刷データを送信するプリンタドライバは複数種類存在し得る。つまり、１つのデバイスであるＭＦＰ５０１に対応するプリンタドライバとして、複数のプリンタドライバがインストールされていてもよい。機種別プリンタドライバ５０８は、プリンタベンダにより提供されるＭＦＰ５０１の専用プリンタドライバである。共通プリンタドライバ５０９は、プリンタベンダにより提供される、該プリンタベンダの複数種類のプリンタ１０２を処理可能な、共通プリンタドライバである。そして、複数ベンダにより提供される印刷装置に共通して利用可能なクラスドライバである標準プリンタドライバ５１０は、ＯＳ２１０によって提供されるプリンタドライバである。標準プリンタドライバ５１０は、標準化された印刷方法を利用することで、幅広いプリンタを処理可能なプリンタドライバである。
【００５２】
なお、ＯＳ２１０は、利用可能なプリンタドライバのうち、もっとも機能が高く新しいプリンタドライバを自動的に選定しインストールするものとする。なお、プリンタドライバには、Ｈａｒｄｗａｒｅ  ＩＤや、Ｃｏｍｐａｔｉｂｌｅ  ＩＤと呼ばれる装置を特定するための情報が含まれている。クライアントコンピュータ１０１にプリンタが接続されると、ＯＳ２１０はプリンタからこれらのＩＤ情報を取得し、該当するＩＤを有するプリンタドライバを探索し、インストールする。
【００５３】
プリンタを提供するプリンタベンダは、図４で説明したＭｅｔａｄａｔａ３２０を提供することで、それぞれのプリンタに対してどのプリント拡張アプリ３００を提供するかを制御することができる。例えば、プリンタベンダは、複数のプリンタで共通して一つのプリント拡張アプリ３００を提供することもできるし、プリンタの種別に応じて、異なる種類のプリント拡張アプリを提供することもできる。
【００５４】
例えば、本実施形態では、ＭＦＰＵｔｉｌｉｔｙ５０６を使用する他のプリンタとして、ＭＦＰ５０２が登録されているものとする。また、本実施形態では、ＭＦＰ５０３に対して印刷を行う場合に使用するプリント拡張アプリとしてＭＦＰＵｔｉｌｉｔｙ５０７が対応付けられているものとする。
【００５５】
以降、本実施形態では、説明のため、ＭＦＰ５０１がプリンタ１０２に対応するプリンタであり、ＭＦＰＵｔｉｌｉｔｙ５０６がプリンタ１０２に対応付けられたプリント拡張アプリ３００（ＵＷＰ  Ｄｅｖｉｃｅ  Ａｐｐｓ）である場合を想定して説明する。また、機種別ドライバ５０８が印刷に使用するＶ４プリンタドライバであるものとして説明する。
【００５６】
ここで、本実施形態のプリンタ１０２は、認証プリント機能（セキュアプリント機能とも呼ぶ）を有している。本実施形態において、ＰＩＮプリント機能などの認証プリント機能を使用する場合、プリンタドライバは、ＰｒｉｎｔＴｉｃｋｅｔにユーザにより設定された認証情報（ＰＩＮコードや、パスワードなど）を付与した印刷ジョブをプリンタ１０２に対して送信する。認証情報を含む印刷ジョブを受信したプリンタ１０２は、認証情報が印刷装置の操作部に入力されるまで印刷を行わないよう制御する。
【００５７】
認証プリントなどに代表するプリンタ１０２が保有する機能は、プリンタドライバ２１１のデバイス機能テキストファイル３３２に記載されている。プリント拡張アプリ３００は、デバイス機能テキストファイル３３２に基づいてコンフィグレーションモジュール３３１が生成したＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓを受け取ることで、プリンタ１０２が保有する機能を把握する。ユーザは、プリンタドライバ５０８がＯＳ２１０と協働して表示する印刷設定画面を介して認証情報を入力することができる。
【００５８】
また、プリント拡張アプリ３００は、ＷＦを活用する機能として、印刷開始指示が入力されたことを契機として、認証情報の確認や入力をユーザに行わせる機能を有している。
【００５９】
ところで、前述したようにＷＦの起動時には、バックグランドタスクを起動することが既定されている。しかしながら、バックグラウンドタスクの実行には制約があり、ＵＩを表示していない状態でＯＳに定められた一定時間内に処理を完遂しないとＯＳによって処理が中断されるという特性を持つ。この実行に関わる制約は、ユーザの認知していないところでコンピュータのバッテリーやネットワークなどのリソースを多く消費する重い処理が実行され続けることを抑制するために設けられている。従って、ＷＦ機能のためのバックグラウンドタスクは、ＵＩを起動するかどうかを一定時間内に判断しなければならない。
【００６０】
ここで、印刷設定や印刷対象のドキュメントのサイズが大きい場合や、ＵＷＰ  Ｄｅｖｉｃｅ  Ａｐｐｓが動作するコンピュータのスペックが低い場合、ＷＦのバックグラウンドタスクによる処理に時間がかかる恐れがある。また、コンピュータが高負荷状態の場合などの条件を満たす場合などにも、ＷＦのバックグラウンドタスクによる処理に時間がかかる恐れがある。例えば、バックグラウンドタスクにより印刷データを解釈してＵＩを起動するか否かの判断処理を行っている間に、ＯＳが定めた一定時間が経過してしまう恐れがある。この場合、ＯＳのタスク制御により当該バックグラウンドタスクの実行が強制的に中止されてしまい、印刷ジョブが破棄されてしまうといった課題がある。
【００６１】
本実施形態は、上述の問題点を鑑み、ＯＳが定めた一定時間内にバックグラウンドタスクによる処理を完遂できないことに伴って印刷処理が中止されることを抑制する仕組みについて説明する。具体的には、バックグラウンドタスクを実行するためのコンポーネントであるタスク部３０５が、ＯＳから呼び出しされたことに応じて、常にフォアグラウンドタスクであるＵＩ部３０３を呼び出すＵＩ表示の制御を行う仕組みについて説明する。
【００６２】
まず、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓとＰｒｉｎｔＴｉｃｋｅｔについて説明する。図１１は、印刷に使用するプリンタドライバ２１１が記憶するデバイス機能テキストファイル３３２に基づいて生成されたＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓの一例である。
【００６３】
ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓは、１つのＦｅａｔｕｒｅの中に、複数のＯｐｔｉｏｎを持つ。Ｆｅａｔｕｒｅは、設定可能な機能を表す。Ｆｅａｔｕｒｅ内のＯｐｔｉｏｎは選択肢を表している。図１１の情報１１０１は、認証プリントのＦｅａｔｕｒｅとＯｐｔｉｏｎを例示する図である。ＪｏｂＳｅｃｕｒｅＰｒｉｎｔのＦｅａｔｕｒｅの選択肢として、ｎｓ００００：ＳｅｃｕｒｅＰｒｉｎｔとｎｓ００００：Ｎｏｎｅの２つが選択可能であることが定義されている。
【００６４】
また、図１０を用いて、認証プリントの設定がなされたＰｒｉｎｔＴｉｃｋｅｔについて説明する。ＰｒｉｎｔＴｉｃｋｅｔには、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓで定義された設定値のいずれかが、現在の印刷設定として格納される。
【００６５】
情報１００１は、印刷時に暗証番号の入力を求める認証プリント機能が設定されていることを示している。ＪｏｂＳｅｃｕｒｅＰｒｉｎｔのＦｅａｔｕｒｅで内包するＯｐｔｉｏｎがｎｓ００００：ＳｅｃｕｒｅＰｒｉｎｔになっているので、認証プリントがオンに設定されていることを示している。なお、認証プリントがオンに設定されていない場合、Ｏｐｔｉｏｎにｎｓ００００：Ｎｏｎｅが設定される。
【００６６】
また、情報１００２に示すｐｓｆ：ＰａｒａｍｅｔｅｒＩｎｉｔの要素は、テキスト入力の値を示している。図１０では、印刷設定画面を介して認証プリントのためにパスワード「ＸＸＸＸＸＸ」が設定されている場合を例示している。なお、印刷設定画面を介してパスワードが設定されていない場合、コンフィグレーションモジュール３３１によってｐｓｆ：ＰａｒａｍｅｔｅｒＩｎｉｔの要素を含まないＰｒｉｎｔＴｉｃｋｅｔが生成されるものとする。
【００６７】
続けて、プリンタ１０２を使用する印刷について図９を用いて説明する。なお、本実施形態では、ＵＷＰアプリであるタッチアプリ３２１から印刷を行う場合を例示しているがこれに限定されるものではない。デスクトップアプリ３２２から印刷を行うことも可能である。
【００６８】
図９（Ａ）は、タッチアプリ３２１がディスプレイ２０７に表示する画面の一例である。タッチアプリ３２１にはコンテンツを表示する領域を有している。また、メニューキー９００は、メニューを表示するためのキーである。図９（Ａ）では、メニューが表示されている場合を例示している。メニューには複数の選択肢が表示されており、ユーザはメニューから印刷キー９０１を選択することができる。
【００６９】
印刷キー９０１が選択されたことを検知すると、タッチアプリ３２１は、ＯＳ２１０に印刷ダイアログ表示の要求を依頼する。
【００７０】
図９（Ｂ）は、ＯＳ２１０が表示する印刷ダイアログの一例を示している。印刷ダイアログは、ＯＳ２１０によって表示される簡易的な印刷設定を行うダイアログである。印刷ダイアログは、印刷設定のための項目９２０と印刷指示に関する項目９３０を有している。ユーザは、項目９２０を選択して、簡易的な印刷設定を行うことができる。
【００７１】
ＯＳ２１０は、通常使うプリンタとして設定されているプリンタドライバに対応するプリントキュー３０８に対して設定されているＰｒｉｎｔＴｉｃｋｅｔをコンフィグレーションモジュール３３１から取得し、印刷ダイアログ上に表示する。
【００７２】
項目９２１は、選択されているプリンタドライバの名称が表示される。ユーザは項目８９２１を選択して、使用するプリンタドライバを切り替えることができる。また、項目９２２は、設定されている印刷設定の例である。
【００７３】
また、項目９３１は、プリント拡張アプリ３００が提供する詳細印刷設定ＵＩ部３０４を呼び出す場合に使用する表示アイテムである。項目９３２は、タッチアプリ３２１が提供するコンテンツに基づく印刷を開始する場合に使用する表示アイテムである。
【００７４】
ＯＳ２１０は、印刷ダイアログとして表示している項目９３２が押下されたことを検知すると、印刷イベントを発生させる。印刷イベント発生後に、タッチアプリ３２１はＯＳ２１０と協働して印刷対象となるコンテンツ（印刷コンテンツとも呼ぶ）に基づいてＸＰＳファイルを生成し、図６のフローチャートにて説明する印刷処理に進む。
【００７５】
印刷処理における具体的な制御方法について図６及び図７に示すフローチャートを用いて説明する。
【００７６】
図６及び図７のフローチャートに示す各動作（ステップ）は、ＣＰＵ２０１が外部メモリ２０９に記憶された各モジュール、コンポーネント、アプリケーションを実現するためのプログラムをＲＡＭ２０２に読み出し、実行することにより実現される。各制御モジュール、コンポーネント、アプリケーションによって提供される制御を説明する場合、ＣＰＵ２０１によって実現される各部を主語として説明する。また、表示、ユーザ操作の受け付け、及びデータ送受信処理などの一部処理は、ＣＰＵ２０１、各Ｉ／Ｆ及び、Ｉ／Ｆに接続された入出力デバイスが協働して実現するものとする。
【００７７】
図５のフローチャートは、印刷イベントが発生したことに応じて実行される。なお、印刷イベントを引き起こすアプリケーションは、タッチアプリ３２１であっても、デスクトップアプリ３２２であっても良い。
【００７８】
Ｓ６０１において、ＯＳ２１０は、印刷イベントを発生させたアプリケーション２１２と協働して生成したＸＰＳファイルをスプーラ３２５に転送する。ＸＰＳファイルの転送が完了すると処理をＳ６０２に進める。
【００７９】
Ｓ６０２において、ＯＳ２１０は、ＷＦ機能の起動処理を実行する。本処理の詳細については、図７を用いて後述する。ＷＦ機能の起動処理に関する一連の処理が完了すると、ＯＳ２１０は、処理をＳ６０３に進める。
【００８０】
Ｓ６０３において、ＯＳ２１０のフィルタパイプラインマネージャ３３５は、スプーラ３２５からＰｒｉｎｔＴｉｃｋｅｔとＸＰＳファイルを取得する。
【００８１】
Ｓ６０４において、フィルタパイプラインマネージャ３３５は、フィルタコンフィグ３３６の定義に基づき、印刷に使用するプリンタドライバに対応するフィルタ３３０を外部メモリ２０９から読み出し、ＲＡＭ２０２に展開する。
【００８２】
続けて、Ｓ６０５において、フィルタパイプラインマネージャ３３５は、ＸＰＳファイルを展開したフィルタに入力し、フィルタによる変換処理を実行させる。当該変換処理は複数のフィルタを使用して行われても良い。また、フィルタパイプラインマネージャ３３５は、変換の結果得られたＰＤＬをスプーラ３２５に転送する。
【００８３】
Ｓ６０６において、スプーラ３２５は、ネットワークＩ／Ｆ２１４と協働して、変換したＰＤＬとＰｒｉｎｔＴｉｃｋｅｔを含む印刷ジョブをプリンタ１０２に送信する。一覧の処理により送信された印刷ジョブを受信したプリンタ１０２は、当該印刷ジョブに基づいて印刷処理を実行する。
【００８４】
続けて図７を用いて、Ｓ６０２において実行されるＷＦ機能の起動処理を具体的に説明する。
【００８５】
Ｓ７０１において、ＯＳ２１０は、レジストリ３５３の設定を読み込む。Ｓ７０２において、ＯＳ２１０は、レジストリ３５３にバックグラウンドタスクの起動を有効とする設定が記憶されていない場合（起動を無効とする設定が記憶されている場合）、一連のＷＦ機能の起動処理をスキップし、処理をＳ６０３以降に進める。一方、ＯＳ２１０は、レジストリ３５３にレジストリ３５３にバックグラウンドタスクの起動を有効とする設定が記憶されている場合は、処理をＳ７０３に進める。
【００８６】
Ｓ７０３において、ＯＳ２１０は、印刷時起動アプリランチャ３５０を起動する。Ｓ７０４において、印刷時起動アプリランチャ３５０は、ＯＳ２１０に対してプリント拡張アプリ３００のコンポーネントである印刷時起動バックグラウンドタスク部３０５の起動要求を行う。具体的には、印刷時起動アプリランチャ３５０は、印刷に使用されるプリンタドライバに基づき、プリントキューを特定する。続けてタッチアプリ実行環境３０１と協働して、特定されたプリントキューに関連付けられたＵＷＰ  Ｄｅｖｉｃｅ  Ａｐｐｓのバックグラウンドタスクを実行するコンポーネントを起動するよう制御する。本実施形態では、プリント拡張アプリ３００のタスク部３０５のコンポーネントが起動されるものとする。
【００８７】
Ｓ７０５において、バックグラウンドタスク部３０５は、ＯＳ２１０に対してフォアグラウンドタスクである印刷時起動ＵＩ部３０３のコンポーネントを起動するよう要求する。要求を受け付けたＯＳ２１０は、スレッドプール３５５内のスレッドとしてプリント拡張アプリ３００が提供する印刷時起動ＵＩ部３０３を割り当て、ＵＩ部３０３によってディスプレイ２０７上に画面の表示を行える状態に遷移させる。また、ＵＩ部３０３は、ユーザとのやり取りを継続するために遅延オブジェクトを取得する。
【００８８】
Ｓ７０６において、印刷時起動ＵＩ部３０３は、プログレス画面をディスプレイ２０７上に表示する。図８は、印刷時起動ＵＩ部３０３によってディスプレイ２０７上に表示される画面の一例であり、図８（Ａ）はプログレス画面の一例を示している。プログレス画面には、８０１に示すプログレスリングが表示される。ＵＩ部３０３は、プログレスリングを回し続けるなどの動きを表示することで、処理の実行中であることをユーザに示す。また、８０２に示す「印刷中…」などの文字列を表示し、印刷に関する処理の実行中であることをユーザに示す。
【００８９】
図７の説明に戻り、Ｓ７０７において、ＵＩ部３０３は、ＯＳ２１０に、ＵＩスレッドとは非同期に実行される解析スレッドの起動を要求する。ＯＳ２１０は、スレッドプール３５５内に当該解析スレッドを割り当てる。当該解析スレッドは、ＰｒｉｎｔＴｉｃｋｅｔをコンフィグレーションモジュール３３１から取得し、取得したＰｒｉｎｔＴｉｃｋｅｔの解析を試みる。なお、本実施形態では、解析処理とＵＩ制御処理を別スレッドで制御する場合を例示しているがこれに限定されるものではない。
【００９０】
Ｓ７０８において、印刷時起動ＵＩ部３０３は、Ｓ７０７のＰｒｉｎｔＴｉｃｋｅｔの解析処理を試みた結果に基づいて、ＰｒｉｎｔＴｉｃｋｅｔに認証プリントが設定されているかどうかを判断する。解析処理の結果、認証プリントが設定されていないと判断した場合には、処理をＳ７１１に進める。一方、解析処理の結果、認証プリントが設定されていると判断した場合には、処理をＳ７０９に進める。
【００９１】
Ｓ７０９において、印刷時起動ＵＩ部３０３のＵＩスレッドは、ディスプレイ２０７上に表示する画面を入力画面に切り替える。図８（Ｂ）は入力画面の一例である。領域８１０は、認証情報を入力するためのテキストボックスを示している。ユーザは、領域８１０にパスワードやＰＩＮコードなどを入力する。ボタン８１１は、ＯＫボタンであり、クリックなどの操作イベントを受け付けた際に、８１０に入力された認証情報を確定させるキーである。このＯＫボタン８１１は、８１９に認証情報が入力されるまでグレーアウトで表示してもよい。キャンセルボタン８１２は、印刷をキャンセルする場合に使用するキーである。キャンセルキーが押下された場合、印刷ジョブの実行が中止される。
【００９２】
図７の説明に戻り、Ｓ７１０において、印刷時起動ＵＩ部３０３のＵＩスレッドは、ユーザ操作を受け付け、当該ユーザ操作に基づき、ＰｒｉｎｔＴｉｃｋｅｔの設定を変更する。具体的には、入力された認証情報に基づき、図１０で例示した情報１００２を書き換える。また、情報１００２に相当する属性が無ければ、ＰｒｉｎｔＴｉｃｋｅｔに当該属性を追加する。
【００９３】
また、ＵＩ部３０３は、ユーザとのやり取りが完了したことをＯＳ２１０に通知するため、遅延オブジェクトを解放するメソッドを呼び出す。遅延オブジェクトが解放し、フォアグラウンドタスクの終了処理が完了すると、処理の主体がバックグラウンドタスクに遷移する。
【００９４】
続けて、Ｓ７１１において、バックグラウンドタスク部３０５は、ＵＩ部３０３によって設定が変更されたＰｒｉｎｔＴｉｃｋｅｔとＸＰＳファイルを取得する。
【００９５】
Ｓ７１２において、バックグラウンドタスク部３０５は、ＰｒｉｎｔＴｉｃｋｅｔとＸＰＳファイルをフィルタパイプラインマネージャ３３５に送信し、一連のＷＦ機能に関する処理を完了する。
【００９６】
なお、Ｓ７０２において、バックグラウンドタスクを起動しないと判断した場合、モジュール３３１から取得したＰｒｉｎｔＴｉｃｋｅｔと、印刷指示に応じて生成されたＸＰＳファイルがフィルタパイプラインマネージャ３３５に送信されるものとする。
【００９７】
以上説明した実施形態により、バックグラウンドタスクを構成するコンポーネントであるタスク部３０５が、ＯＳにより呼び出されたことに応じて、フォアグラウンドタスクであるＵＩ部３０３を呼び出し、ＵＩを表示することができる。従って、フォアグラウンドタスクであるＵＩ部３０３が遅延オブジェクトを取得した後に、当該ＵＩ部３０３でＰｒｉｎｔＴｉｃｋｅｔを解析できるようになる。従って、バックグラウンドタスクによる処理を完遂できないことに伴って印刷処理が中止されることを抑制できるようになる。また、ＵＩ部が呼び出された後に、プログレスリングなどの処理中であることを示すＵＩが表示される。従って、ユーザに対して処理の実行中であることを分かりやすく通知することができる。
【００９８】
＜第２の実施形態＞
第１の実施形態では、ＰｒｉｎｔＴｉｃｋｅｔの解析をフォアグラウンドタスクに委ねることで、ＷＦ機能の実行に起因して印刷ジョブが破棄されることを抑制する仕組みについて説明した。第２の実施形態では、バックグラウンドタスク部３０５でＵＩを起動するかどうかの判断を行えるケースもあることに着目する。このようなケースにおいて、バックグラウンドタスク部３０５で判断が行えるケースにおいては、ＵＩを起動しないようにすることで、印刷時のパフォーマンスをより高める仕組みについて説明する。
【００９９】
具体的には第２の実施形態では、バックグラウンドタスク部３０５でＰｒｉｎｔＴｉｃｋｅｔを解析し、ＵＩの起動が必要となるかどうかチェックする。また、バックグラウンドタスク部３０５で、実行時間を計測し、処理が完遂できないと判断したことに従って、フォアグラウンドタスクを起動するよう制御する仕組みについて説明する。
【０１００】
なお、第２の実施形態におけるハードウェア構成やソフトウェア構成は、第１の実施形態と同様のため省略する。
【０１０１】
具体的な制御方法について図１２のフローチャートを用いて説明する。図１２のフローチャートは、第１の実施形態で説明した図７のフローチャートに代えて実行される処理を説明するフローチャートである。図７のフローチャートとの差異は、バックグラウンドタスクの起動処理の後に、Ｓ１２２０〜Ｓ１２２４の処理が追加されている点である。
【０１０２】
Ｓ１２０１〜Ｓ１２０４の処理は、第１の実施形態のＳ７０１〜Ｓ７０４と同様であるため省略する。Ｓ１２０４でバックグラウンドタスクが起動すると、Ｓ１２２０の処理に進む。
【０１０３】
Ｓ１２２０において、タスク部３０５は、タイマーを起動し経過時間のカウントを開始する。Ｓ１２２１において、タスク部３０５は、ＰｒｉｎｔＴｉｃｋｅｔをコンフィグレーションモジュール３３１から取得し、解析する。なお、Ｓ１２２１の解析処理はタイマーのカウントとは非同期で実行されるものとする。
【０１０４】
Ｓ１２２２において、タスク部３０５は、Ｓ１２２１で実行した解析の結果が得られたか否かを判断する。Ｓ１２２１で実行した解析の結果が得られた場合、処理をＳ１２２３に進め、Ｓ１２２１で実行した解析の結果が得られていない場合、処理をＳ１２２４に進める。Ｓ１２２３では、Ｓ１２２１の解析の結果に基づき、ＰｒｉｎｔＴｉｃｋｅｔに認証プリントが設定されているか否かを判断する。認証プリントが設定されていると判断すると、処理をＳ１２０５に進め、認証プリントが設定されていない場合には、一連の処理を終了し、処理をＳ６０３以降のデータ変換、送信処理に進める。Ｓ１２０５の処理は第１の実施形態におけるＳ７０５の処理と同様のため省略する。またＳ１２０５の処理が完了すると第１の実施形態のＳ７０６以降で説明したフォアグラウンドタスクによる処理に進む。
【０１０５】
一方、Ｓ１２２４において、タスク部３０５は、タイマーのカウント時間が、内部的に保持する所定の閾値を超過したかどうかを判断する。タイマーのカウント時間が、内部的に保持する所定の閾値を超過した場合には、処理をＳ１２０５へ進める。一方、タイマーのカウント時間が、内部的に保持する所定の閾値を超過していない場合には、Ｓ１２２２に戻り、解析の結果を待つ。所定の閾値は、バックグラウンドタスクにおける実行に関わる制約に達してしまう前に、フォアグラウンドタスクを起動できるよう、適宜適切な閾値が設定されるものとする。
【０１０６】
以上により、バックグラウンドタスクの制約内で判断が完了できる場合においては、バックグラウンドタスクにより判断を行うようにすることができる。従って、印刷に係るパフォーマンスを高めることができる。
【０１０７】
＜第３の実施形態＞
第３の実施形態では、第２の実施形態においてバックグラウンドタスク内で実行させたタイマーのカウントに相当する機能をＯＳ２１０に実行させるケースについて説明する。本実施形態では、ＯＳ２１０がバックグラウンドタスクを強制終了する前に、タイムアウト例外を発行するよう構成する。また、バックグラウンドタスク部３０５は、当該タイムアウト例外のスローを検知したことに従って、例外処理としてＵＩ部を起動するよう構成する。
【０１０８】
なお、第３の実施形態におけるハードウェア構成やソフトウェア構成は、第１の実施形態と同様のため省略する。
【０１０９】
まず、ＯＳ２１０による例外の発行について説明する。ＯＳ２１０は、印刷のイベントが発生すると、プリント拡張アプリ３００のプロセスを生成し、印刷時起動バックグラウンドタスク部３０５のスレッドを生成する。生成後、バックグラウンドタスクに処理を実行させる。ＯＳ２１０は生成したスレッドの実行時間を管理する。ＯＳ２１０は、当該スレッドを生成してから一定時間以上経過した場合、当該スレッドに対して、タイムアウト例外をスローする。本実施形態では、バックグラウンドタスク部３０５が、当該例外のスローを検知したことに応じて、フォアグラウンドタスクを起動するよう制御する。
【０１１０】
具体的な制御方法について図１３のフローチャートを用いて説明する。図１３のフローチャートは、第１の実施形態で説明した図７のフローチャートに代えて実行される処理を説明するフローチャートである。図７のフローチャートとの差異は、バックグラウンドタスクの起動処理の後に、Ｓ１３２１〜Ｓ１３２４の処理が追加されている点である。
【０１１１】
Ｓ１３０１〜Ｓ１３０４の処理は、第１の実施形態のＳ７０１〜Ｓ７０４と同様であるため省略する。Ｓ１３０４でバックグラウンドタスクが起動すると、Ｓ１３２１の処理に進む。
【０１１２】
Ｓ１３２１において、タスク部３０５は、ＰｒｉｎｔＴｉｃｋｅｔをコンフィグレーションモジュール３３１から取得し解析する。
【０１１３】
Ｓ１３２２において、タスク部３０５は、Ｓ１３２１で実行した解析の結果が得られたか否かを判断する。Ｓ１３２１で実行した解析の結果が得られた場合、処理をＳ１３２３に進め、Ｓ１３２１で実行した解析の結果が得られていない場合、処理をＳ１３２４に進める。Ｓ１３２３では、Ｓ１３２１の解析の結果に基づき、ＰｒｉｎｔＴｉｃｋｅｔに認証プリントが設定されているか否かを判断する。認証プリントが設定されていると判断すると、処理をＳ１３０５に進め、認証プリントが設定されていない場合には、一連の処理を終了し、処理をＳ６０３以降のデータ変換、送信処理に進める。Ｓ１３０５の処理は第１の実施形態におけるＳ７０５の処理と同様のため省略する。またＳ１３０５の処理が完了すると第１の実施形態のＳ７０６以降で説明したフォアグラウンドタスクによる処理に進む。
【０１１４】
一方、Ｓ１３２４において、タスク部３０５は、ＯＳ２１０からタイムアウト例外を受け取ったか否かを判断する。タスク部３０５は、タイムアウト例外を受け取った場合、処理をＳ１３０５に進める。タイムアウト例外を受け取っていない場合は、Ｓ１３２１の処理に戻り、バックグラウンドタスクによる解析及び判断処理を継続する。
【０１１５】
以上説明したように、本実施形態では、ＯＳ２１０がバックグラウンドタスクのスレッドを強制終了する前にバックグラウンドタスクに対してタイムアウト例外を発行する。また、バックグラウンドタスクは当該タイムアウト例外を受け取ったことに応じてフォアグラウンドタスクを起動し、遅延オブジェクトを取得する。この処理により、バックグラウンドタスクのために割り当てられたスレッドでは、ＰｒｉｎｔＴｉｃｋｅｔの解析及びＵＩを起動するかどうかの判断のみに演算リソースを割くことができる。従って、演算のパフォーマンスを高めることができる。
【０１１６】
＜その他の実施形態＞
なお、本実施形態では、ＷＦ機能で表示するＵＩの一例として認証プリントの認証情報の入力画面を説明したがこれに限定されるものではない。例えば、印刷指示を受け付けた後に表示するＵＩとして印刷プレビューを表示するようにしてもよい。また、本実施形態では、Ｖ４ドライバがプリンタドライバの場合を例示したが、Ｖ４ＦＡＸドライバに適用することもできる。例えば、Ｖ４ＦＡＸドライバに適用する場合、ＷＦ機能を使用して宛先の入力や確認を行う画面を表示するようにしてもよい。
【０１１７】
本発明は、上述の各実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣやＦＰＧＡ）によっても実現可能である。
【符号の説明】
【０１１８】
１０１  クライアントコンピュータ
１０２  プリンタ
２０１  ＣＰＵ
【図１】
2019197277.tif 000003
【図２】
2019197277.tif 000004
【図３】
2019197277.tif 000005
【図４】
2019197277.tif 000006
【図５】
2019197277.tif 000007
【図６】
2019197277.tif 000008
【図７】
2019197277.tif 000009
【図８】
2019197277.tif 000010
【図９】
2019197277.tif 000011
【図１０】
2019197277.tif 000012
【図１１】
2019197277.tif 000013
【図１２】
2019197277.tif 000014
【図１３】
2019197277.tif 000015