(57)【特許請求の範囲】
【請求項１】
シングル頁に含まれる複数の描画オブジェクトを、各描画オブジェクトのレイヤーに基づいて複数のグループに分割する分割手段と、
前記分割手段での分割により得られた各グループを、夫々異なるプロセッサーに提供する提供手段と
を有し、
前記複数のグループには、第１のグループと、第２のグループが含まれ、
前記第１のグループに含まれる複数の描画オブジェクトの複数のレイヤーは、前記第２のグループに含まれる複数の描画オブジェクトの複数のレイヤーの何れのレイヤーよりも背景に近く、
前記提供手段は、前記第１のグループに含まれる複数の描画オブジェクトを、前記第２のグループに含まれる複数の描画オブジェクトよりも早く、対応するプロセッサーに提供することを特徴とする装置。
【請求項２】
シングル頁に含まれる複数の描画オブジェクトを、複数の描画オブジェクトを含む第１のグループと、当該第１のグループに含まれる当該複数の描画オブジェクトの何れのレイヤーよりも背景から遠いレイヤーを持つ複数の描画オブジェクトを含む第２のグループとを含む複数のグループに分割する分割手段と、
前記分割手段での分割により得られた前記第１のグループを前記第２のグループよりも早くプロセッサーに提供する提供手段と
を有し、
前記第１のグループが提供されるプロセッサーと前記第２のグループが提供されるプロセッサーは異なることを特徴とする装置。
【請求項３】
シングル頁に含まれる複数の描画オブジェクトを、各描画オブジェクトのレイヤーに基づいて複数のグループに分割する分割手段と、
前記分割手段での分割により得られた各グループを、夫々異なるプロセッサーに提供する提供手段と
を有し、
前記複数のグループには、第１のグループと、第２のグループが含まれ、
前記第１のグループに含まれる複数の描画オブジェクトの複数のレイヤーは、前記第２のグループに含まれる複数の描画オブジェクトの複数のレイヤーの何れのレイヤーよりも背景に近く、
前記第１のグループに含まれる複数の描画オブジェクトの数は、前記第２のグループに含まれる複数の描画オブジェクトの数よりも少ないことを特徴とする装置。
【請求項４】
シングル頁に含まれる複数の描画オブジェクトを、複数の描画オブジェクトを含む第１のグループと、当該第１のグループに含まれる当該複数の描画オブジェクトの何れのレイヤーよりも背景から遠いレイヤーを持つ複数の描画オブジェクトを含む第２のグループとを含む複数のグループに分割する分割手段と、
前記分割手段での分割により得られた前記第１のグループと前記第２のグループを異なるプロセッサーに提供する提供手段と
を有し、
前記分割手段は、前記第１のグループに含まれる描画オブジェクトの数が前記第２のグループに含まれる描画オブジェクトの数よりも少なくなるように分割することを特徴とする装置。
【請求項５】
プロセッサーは、バーチャルプロセッサーであることを特徴とする請求項１乃至４のいずれか一項に記載の装置。
【請求項６】
各プロセッサーは、提供されたグループに含まれる複数の描画オブジェクトから、ビットマップを生成することを特徴とする請求項１乃至５のいずれか一項に記載の装置。
【請求項７】
各プロセッサーから提供された複数のビットマップを、背面に近いビットマップから順に重ねる重ね手段を更に有することを特徴とする請求項６に記載の装置。
【請求項８】
各プロセッサーによるビットマップの生成は、並列して行われることを特徴とする請求項６に記載の装置。
【請求項９】
前記描画オブジェクトは、ディスプレイリストであることを特徴とする請求項１乃至８のいずれか一項に記載の装置。
【請求項１０】
分割手段が、シングル頁に含まれる複数の描画オブジェクトを、複数の描画オブジェクトを含む第１のグループと、当該第１のグループに含まれる当該複数の描画オブジェクトの何れのレイヤーよりも背景から遠いレイヤーを持つ複数の描画オブジェクトを含む第２のグループとを含む複数のグループに分割する分割工程と、
提供手段が、前記分割工程での分割により得られた前記第１のグループを前記第２のグループよりも早くプロセッサーに提供する提供工程と
を有し、
前記第１のグループが提供されるプロセッサーと前記第２のグループが提供されるプロセッサーは異なることを特徴とする装置の制御方法。
【請求項１１】
コンピュータを、
シングル頁に含まれる複数の描画オブジェクトを、複数の描画オブジェクトを含む第１のグループと、当該第１のグループに含まれる当該複数の描画オブジェクトの何れのレイヤーよりも背景から遠いレイヤーを持つ複数の描画オブジェクトを含む第２のグループとを含む複数のグループに分割する分割手段、
前記分割手段での分割により得られた前記第１のグループを前記第２のグループよりも早くプロセッサーに提供する提供手段
として機能させ、
前記第１のグループが提供されるプロセッサーと前記第２のグループが提供されるプロセッサーは異なることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、装置およびその制御方法、並びにプログラムに関するものである。
【背景技術】
【０００２】
従来、ページ記述言語（ＰＤＬ）データの印刷処理は、ホストＰＣのプリンタドライバで生成されたＰＤＬデータが印刷処理装置に転送されて行われる。具体的には、印刷処理装置内のコントローラがディスプレイリスト（ＤＬ）を生成し、ハードウェア又はソフトウェアのレンダラーによってビットマップへの展開が行われる。
【０００３】
また、展開の際に、アプリケーションから出力された描画コマンドが複雑で、印刷処理に時間がかかるページに関しては、ＰＤＬをバンド単位に分割し並列してＤＬ生成、又はバンド単位に分割したＤＬを並列してレンダリングする技術が提案されている。例えば、特許文献１、特許文献２を参照。このように、バンド単位に分割したＰＤＬ／ＤＬデータを並列に処理することにより、処理に時間がかかるページの高速化を行っている。
【０００４】
また、近年では、サーバ側で各種処理を行う形態として、クラウドコンピューティングシステムやＳａａＳ（Software as a Service）という技術が利用され始めている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−１４１８１１号公報
【特許文献２】特開２００９−２４５４３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記従来の技術では、ＰＤＬやＤＬをバンド単位で分割し並列処理しているため、ページ内の描画命令に偏りがある場合、各バンドの処理時間が平均化されないという課題がある。そのため、結局は一番描画命令が多く含まれるバンドが処理し終わらないと１ページが生成されない。
【０００７】
更に、上記従来の技術では、ページ内のＰＤＬやＤＬを分割する際に、用紙を出力するデバイスのエンジンスピードを加味していなかったため、分割を行ったとしても必ずしもデバイスの能力をフルに発揮することができなかった。
【０００８】
本発明は、並列処理を行う上で最適な分割方法により、デバイスのエンジンスピードを考慮した分割を行える方法及びシステムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、装置であって、シングル頁に含まれる複数の描画オブジェクトを、各描画オブジェクトのレイヤーに基づいて複数のグループに分割する分割手段と、前記分割手段での分割により得られた各グループを、夫々異なるプロセッサーに提供する提供手段とを有し、前記複数のグループには、第１のグループと、第２のグループが含まれ、前記第１のグループに含まれる複数の描画オブジェクトの複数のレイヤーは、前記第２のグループに含まれる複数の描画オブジェクトの複数のレイヤーの何れのレイヤーよりも背景に近く、前記提供手段は、前記第１のグループに含まれる複数の描画オブジェクトを、前記第２のグループに含まれる複数の描画オブジェクトよりも早く、対応するプロセッサーに提供することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、分割による描画命令数の偏りを最小限にし、最適な並列処理を行うと共に、出力デバイスの能力を加味してデータの分割を行う。その結果、描画命令数が多く、従来出力デバイスの能力を発揮できなかったデータに関しても能力をフルに発揮させることが可能になる。
【図面の簡単な説明】
【００１１】
【図１】印刷システムを構成している複数の装置を示す図。
【図２】（ａ）は画像形成装置の内部構成を示すブロック図、（ｂ）は情報処理装置の内部構成例を示すブロック図。
【図３】印刷システムの各装置が持つ機能を示す図。
【図４】（ａ）は従来のＰＤＬ分割（バンド分割）を示す図、（ｂ）は本実施形態のＰＤＬ分割（レイヤー分割）を示す図。
【図５】印刷システムの全体処理シーケンスを示す図。
【図６】全体処理フローを示す図。
【図７】ＰＤＬ分割サーバ内の処理フローを示す図。
【図８】ＰＤＬ分割サーバ内のＰＤＬ分割の詳細フローを示す図。
【図９】バーチャルプロセッサ群内の処理フローを示す図。
【図１０】出力デバイスでの処理フローを示す図。
【図１１】ＰＤＬ分割の重み付けを説明するための図。
【図１２】レイヤー分割の際の処理速度見積もりを説明するための図。
【図１３】（ａ）はバーチャルプロセッサが一定時間経過してもＤＬを生成しない場合の処理、（ｂ）は課金体系に応じたバーチャルプロセッサ数を決定する処理を示すフローチャート。
【発明を実施するための形態】
【００１２】
以下、図面を参照しながら発明を実施するための形態について詳細に説明する。
【００１３】
＜印刷システムの構成＞
まず、印刷システムを構成している複数の装置を、図１を用いて説明する。図１に示すように、印刷システムを構成している各装置がネットワーク１００を介して接続されている。
【００１４】
ここで、各装置とは、バーチャルプロセッサ群１０２、ＰＤＬ分割サーバ１０３、出力デバイスとしての画像形成装置１０４、クライアントコンピュータ（クライアントＰＣ）１０５である。また、ネットワーク１００は各装置間で情報を授受するための通信回線である。インターネット１０１は、ファイアウォールを越えて各装置間で情報を授受するための通信回線である。このインターネット１０１により、バーチャルプロセッサ群１０２及びＰＤＬ分割サーバ１０３が属するネットワーク１００と、画像形成装置１０４及びクライアントＰＣ１０５が属するネットワーク１００とは、ファイアウォールを越えて通信が可能である。
【００１５】
ネットワーク１００、インターネット１０１は、例えば、ＴＣＰ／ＩＰプロトコルなどをサポートする通信回線網であり、有線又は無線は問わない。また、図１ではバーチャルプロセッサ群１０２はプロセッサ群として示されているが、複数のプロセッサがサーバとして構成され、ＰＤＬ分割サーバ１０３に含まれる構成でも良い。
【００１６】
次に、図１に示す印刷システムを構成している各装置の内部構成を詳細に説明する。始めに、画像形成装置１０４の内部構成を図２の（ａ）に示すブロック図を用いて説明する。
【００１７】
画像形成装置１０４は、画像処理ユニット１０４１及び印刷ユニット１０４２の２つのユニットで構成される。ここで、画像処理ユニット１０４１は、内部にＣＰＵ１０４３、直接記憶部１０４４、間接記憶部１０４５、ＲＩＰ１０４６、ユーザーインターフェース１０４７、外部インターフェース１０４８を含む。尚、ＲＩＰはRaster Image Processorの略である。
【００１８】
ＣＰＵ１０４３は、所定のプログラムを実行し、画像形成装置１０４の各種制御を指示するユニットである。直接記憶部１０４４は、ＣＰＵ１０４３が各種プログラムを実行する際に使用されるワークメモリであり、ＣＰＵ１０４３が実行するプログラムは直接記憶部１０４４にロードされる。また、直接記憶部１０４４は、ＲＡＭにより実現される。
【００１９】
間接記憶部１０４５には、アプリケーションプログラムやプラットフォームプログラムを含む各種プログラムが記憶されている。間接記憶部１０４５に記憶されている各種プログラムは、ＣＰＵ１０４３がプログラムを実行する際に直接記憶部１０４４へ移動される。間接記憶部１０４５は、ＳＳＤ（Solid State Drive）、ＨＤＤ（Hard Disc Drive）により実現される。尚、ＣＰＵ１０４３はマルチプロセッサでも良い。
【００２０】
ここで、プラットフォームについて詳細に説明する。プラットフォームの実現により、ユーザが独自に開発した新しいアプリケーションを画像形成装置１０４上で実行できる他、画像形成装置１０４をカスタマイズすることが可能になる。
【００２１】
次に、プラットフォームの実現方法について説明する。ＣＰＵ１０４３は、間接記憶部１０４５に記憶されたプラットフォームプログラムを直接記憶部１０４４に移動させる。そして、移動が完了すると、ＣＰＵ１０４３は、プラットフォームプログラムを実行することができる状態になる。
【００２２】
ここでは、ＣＰＵ１０４３がプラットフォームプログラムを実行することを「プラットフォームが起動する」と称す。尚、プラットフォームは、画像形成装置１０４のファームウェア上で動作することになる。また、プラットフォームプログラムはアプリケーションプログラムを実行するための環境を提供するものである。
【００２３】
次に、プラットフォーム上でアプリケーションプログラムを実行する方法を詳細に説明する。プラットフォーム上には、印刷要求を受け付ける印刷ソフトウェアが動作している。この印刷ソフトウェアは、クライアントＰＣ１０５から受信した印刷データをＲＩＰ１０４６に送信し、印刷データ（ＤＬ）の描画処理を開始させる。そして、例えばＨＴＴＰ（Hyper Text Transfer Protocol）と言った通信プロトコルによりネットワーク１００、インターネット１０１を介して接続されているデバイスへ印刷データ（ＤＬ）を送信する。このように、プラットフォームでアプリケーションプログラムを実行することにより、画像形成装置１０４の制御を実現することができる。
【００２４】
次に、アプリケーションプログラムの実行方法を説明する。起動したプラットフォームは、間接記憶部１０４５に記憶されたアプリケーションプログラムを直接記憶部１０４４に移動させる。この移動が完了すると、プラットフォームはアプリケーションプログラムを実行することができる状態になる。そして、プラットフォームはアプリケーションプログラムを実行する。このように、アプリケーションプログラムを実行することで提供できるプラットフォームの機能を、本実施形態では「プラットフォームアプリケーション」と呼ぶ。更に、プラットフォームは、本実施形態で開示するフローチャートの各処理の一部を行うことが可能である。
【００２５】
ＲＩＰ１０４６は後述するＰＤＬ（ページ記述言語）を入力とし、ビットマップを生成するユニットである。このＲＩＰは、ハードウエア、若しくはソフトウエアで構成されている。ユーザーインターフェース１０４７は、ユーザからの処理依頼を受け付けるために必要なユニットである。例えば、キーボード、マウス等を通してユーザが入力した指示に応じた信号を受け付ける。外部インターフェース１０４８は、外部装置からのデータの受信や外部装置へのデータの送信が可能となっている。例えば、外部装置としては、外付けＨＤＤや外付けＵＳＢメモリ等の外付け記憶装置、ネットワークを介して接続された別体のホストコンピュータや画像形成装置等の別体装置が含まれる。尚、画像形成装置１０４は、ネットワーク１００、及びインターネット１０１を介してクライアントＰＣ１０５、バーチャルプロセッサ群１０２等と通信可能である。  
ここで、バーチャルプロセッサ群１０２、ＰＤＬ分割サーバ１０３、クライアントＰＣ１０５として機能する情報処理装置の内部構成を図２の（ｂ）を用いて説明する。図２の（ｂ）は、情報処理装置１０６の内部構成例を示すブロック図である。図示するように、情報処理装置１０６は、ユーザーインターフェース１０６１、ＣＰＵ１０６２、直接記憶部１０６３、間接記憶部１０６４、外部インターフェース１０６５を含む。
【００２６】
ユーザーインターフェース１０６１は、ユーザからの処理依頼を受け付けるために必要なユニットである。例えば、キーボード、マウス等を通してユーザが入力した指示に応じた信号を受け付ける。ＣＰＵ１０６２は、所定のプログラムを実行し、情報処理装置１０６の各種制御を指示するユニットである。直接記憶部１０６３は、ＣＰＵ１０６２がプログラムを実行する際に使用されるワークメモリであり、ＣＰＵ１０６２が実行するプログラムは直接記憶部１０６３にロードされる。直接記憶部１０６３は、ＲＡＭで構成されている。
【００２７】
間接記憶部１０６４には、アプリケーションプログラムやＯＳ（オペレーティングシステム）を含む各種プログラムが記憶されている。間接記憶部１０６４に記憶されている各種プログラムは、ＣＰＵ１０６２がプログラムを実行する際に直接記憶部１０６３へ移動される。間接記憶部１０６４は、ＲＯＭ、ＨＤＤで構成されている。外部インターフェース１０６５は、ネットワーク１００に接続されており、ネットワーク１００に接続されている他の装置と通信が可能となる。
【００２８】
＜印刷システムにおける各装置の機能＞
次に、本実施形態における印刷システムの各装置が持つ機能を、図３を用いて詳細に説明する。図３は、印刷システムの各装置の機能ブロック図である。始めに、バーチャルプロセッサ群１０２の機能を説明する。このバーチャルプロセッサ群１０２には、要求受信部４０１１、バックエンド処理部４０２１、キューサービス４０５、ストレージ４０６の各機能がある。
【００２９】
要求受信部４０１１は、クライアントＰＣ１０５又は画像形成装置１０４から送られてきた処理依頼を受け付ける機能を有する。バックエンド処理部４０２１は、処理プログラムを用いて処理依頼に対する処理を行う機能を有する。具体的には、バックエンド処理部４０２１は、バックエンド処理部４０２１を実行しているプロセッサのメモリに処理プログラムをロードして処理を行う。要求受信部４０１１、及びバックエンド処理部４０２１は、図２の（ｂ）の間接記憶部１０６４に保存されている要求受信プログラム、やバックエンド処理プログラムが直接記憶部１０６３にロードされて、ＣＰＵ１０６２により実行されることで実現される。
【００３０】
キューサービス４０５は、要求受信部４０１１とバックエンド処理部４０２１とが非同期でデータ通信するための機能を有する。ストレージ４０６は、バックエンド処理部４０２１により処理された実行結果であるデータを始めとする各種データを保存しておく機能を有する。ストレージ４０６は、図２の（ｂ）の間接記憶部１０６４によって実現される。また、バーチャルプロセッサ群１０２はWindows（登録商標） AzureにおけるWorker Roleとして動作することを想定している。以上がバーチャルプロセッサ群１０２の機能の説明になるが、更に詳細な説明は後述する。
【００３１】
次に、ＰＤＬ分割サーバ１０３の機能を説明する。ＰＤＬ分割サーバ１０３は、ＰＤＬ分割機能３０１を有する。このＰＤＬ分割機能３０１は、図２の（ｂ）のＣＰＵ１０６２、直接記憶部１０６３、間接記憶部１０６４によって実現される。
【００３２】
ここで、ＰＤＬとは、ユーザが後述するクライアントＰＣ１０５上のプリンタドライバ３０４で作成したデータである。ＰＤＬ分割サーバ１０３は、Windows（登録商標） AzureにおけるWeb Roleとして動作することを想定している。
【００３３】
次に、画像形成装置１０４の機能を詳細に説明する。画像形成装置１０４には、ＲＩＰ３０２及びプラットフォームアプリケーション３０３の機能を有する。プラットフォームアプリケーション３０３は、ネットワーク１００を介して接続されているバーチャルプロセッサ群１０２に保存されているデータを取得することができる機能を有する。プラットフォームアプリケーション３０３は、図２の（ａ）の直接記憶部１０４４に保存されているプラットフォームアプリケーションプログラムが、間接記憶部１０４５にロードされ、ＣＰＵ１０４３により実行されることで実現される。
【００３４】
ＲＩＰ３０２は、印刷データ（ＤＬ）を解釈し、ビットマップへ変換するレンダリングサービスを提供する機能を有する。また、このサービスは、要求受信部４０１１に対して印刷データの生成が終了したか否かの確認を行う。その際に、このサービスはＰＤＬ分割サーバ１０３が作成したＩＤを基に生成確認を行う。
【００３５】
最後に、クライアントＰＣ１０５の機能を詳細に説明する。クライアントＰＣ１０５には、プリンタドライバ３０４がインストールされている。このプリンタドライバ３０４は、ネットワーク１００を介して接続されている出力デバイス（画像形成装置１０４）内に保存されている情報を元にアプリケーションデータからＰＤＬを生成する機能を有する。図２の（ｂ）の間接記憶部１０６４に保存されているプリンタドライバソフトウェアが、直接記憶部１０６３にロードされ、ＣＰＵ１０６２により実行されることで実現される。以上が、本実施形態の印刷システムにおける各装置が有する機能の説明である。
【００３６】
＜従来のページ分割と本実施形態のページ分割＞
次に、従来のＰＤＬ分割機能と本実施形態の印刷システムにおけるＰＤＬ分割機能との差異を、図４を参照して詳細に説明する。図４の（ａ）は従来のＰＤＬ分割（バンド分割）の場合を示し、ＰＤＬデータ（ページ記述言語データ）に含まれる描画命令からページ全体に背面に近い方から順に三角形、円形、四角形が重なりあうように描画する。ここで、ページを上、中、下の３つのバンドに分割し、３つのバーチャルプロセッサで並列処理する。
【００３７】
その結果、各分割ＰＤＬに含まれる描画命令は、第１の分割ＰＤＬには三角形と円形の上の部分が含まれる。第２の分割ＰＤＬには三角形の中の部分と円形の下の部分と四角形全体が重なり合うように含まれ、第３の分割ＰＤＬには三角形の下の部分が含まれる。
【００３８】
そして、ぞれぞれの描画処理の負荷を描画命令から算出すると、１つめの分割ＰＤＬの処理負荷は小となり、２つめの分割ＰＤＬの処理負荷は大となり、３つめの分割ＰＤＬの処理負荷は小となる。
【００３９】
一方、図４の（ｂ）は本実施形態のＰＤＬ分割（レイヤー分割）の場合を示し、ＰＤＬデータに含まれる描画命令から、ページ全体に背面に近い方から順に三角形、円形、四角形が重なりあうように描画する。このページを最背面のレイヤーに含まれる三角形、中間のレイヤーに含まれる円形、最上面のレイヤーに含まれる四角形のように３つのレイヤーに分割し、３つのバーチャルプロセッサで並列処理する。
【００４０】
その結果。各分割ＰＤＬに含まれる描画命令は、１つめの分割ＰＤＬには三角形全体が含まれる。２つめの分割ＰＤＬには円形全体が含まれ、３つめの分割ＰＤＬには四角形全体が含まれる。
【００４１】
そして、ぞれぞれの描画処理の負荷を描画命令から算出すると、１つめから３つめまでの分割ＰＤＬは共に処理負荷が中となる。
【００４２】
並列処理の場合、分割した処理のうち、最も処理時間がかかるものが最終的な処理時間となるため、従来のバンド分割ではページ内に描画されたコマンドの偏りに応じて処理負荷が軽い分割ＰＤＬと重い分割ＰＤＬが出てきてしまう。その結果、必ずしも最適な分割が行われないという課題があるが、本実施形態のように、レイヤー毎に分割することで、各分割ＰＤＬを意図した処理負荷になるように調整することが容易になる。
【００４３】
＜ページ分割における重み付けについて＞
次に、本実施形態の印刷システムにおけるＰＤＬ分割の重み付けを、図１１を参照して詳細に説明する。この例では、入力されたＰＤＬデータに含まれる描画命令に基づき、ページ全体に最背面から順に、１レベル目の三角形、２レベル目の円形、３レベル目の四角形と重なりあうように描画し、最上位面に１５０レベル目の四角形を描画する。
【００４４】
図１１に示すように、ＰＤＬからＤＬを生成する処理は、各ＰＤＬに含まれるレベル数が多いほど時間がかかり、レベル数が少ないほど時間がかからない特徴がある。そして、分割したＰＤＬを最終的に印刷する際に、レンダリング時に重ね合わせ処理を行わなければならないが、この処理は必ず背面に近いレイヤーから順番に行わなくてはならない。
【００４５】
よって、ＰＤＬを分割する際に、使用可能なバーチャルプロセッサ数で均等に分割するのではなく、上述の特徴を考慮し、背面に近いレイヤーの程処理時間が早く終わるように少ないレベルが含まれるべくＰＤＬを分割する必要がある。これを重み付けという。
【００４６】
図１１に示す分割ＰＤＬは、この重み付けをしてＰＤＬを分割した例である。この例では、バーチャルプロセッサが５つで入力ＰＤＬが１５０個のレベルを含む場合、最背面に近い分割ＰＤＬ１に含まれるレベル数は１０個、その上に位置する分割ＰＤＬ２に含まれるレベル数は２０個となる。更に、その上に位置する分割ＰＤＬ３に含まれるレベル数は３０個、その上に位置する分割ＰＤＬ４に含まれるレベル数は４０個、その上に位置する分割ＰＤＬ５に含まれるレベル数は５０個となる。
【００４７】
本処理の詳細は＜ＰＤＬ分割のおけるレベル数決定処理について＞で、重み付けによる効果は＜レイヤー分割における処理速度見積もり＞で後述する。
【００４８】
＜全体処理シーケンスについて＞
次に、本実施形態における印刷システムの全体処理シーケンスを、図５を参照して説明する。初めに、ユーザは、Ｓ５０１でクライアントＰＣ１０５のプリンタドライバ３０４からＰＤＬ分割サーバ１０３に対して印刷指示を行う。ＰＤＬ分割サーバ１０３は印刷指示を受け、Ｓ５０２で文章ＩＤとサーバＩＤをプリンタドライバ３０４へ返す。プリンタドライバ３０４は、Ｓ５０３で用紙を出力する出力デバイス１０４へ文章ＩＤとサーバＩＤを送る。
【００４９】
一方、出力デバイス１０４は、Ｓ５０４で文章ＩＤをＰＤＬ分割サーバ１０３へ送り、ＰＤＬの分割情報を取得するためにポーリングを行う。また、ＰＤＬ分割サーバ１０３はＳ５０１で受けた印刷指示を元にＳ５０５でＰＤＬ分割処理を行う。
【００５０】
次に、ＰＤＬ分割サーバ１０３は、Ｓ５０６で各分割ＰＤＬをバーチャルプロセッサ群１０２へ送信し、Ｓ５０７でバーチャルプロセッサ群１０２から分割ＰＤＬ ＩＤとバーチャルプロセッサＩＤとを受け取る。その後、全ページの分割とバーチャルプロセッサ群１０２への送信が終了すると、Ｓ５０８で各分割ＰＤＬのＩＤと、そのＰＤＬを処理しているバーチャルプロセッサＩＤを出力デバイス１０４へ送信する。
【００５１】
また、バーチャルプロセッサ群１０２は、Ｓ５０６で受け取った各分割ＰＤＬをＳ５０９でＰＤＬからＤＬへ変換処理を行う。出力デバイス１０４は、Ｓ５０８で受け取った分割ＰＤＬ ＩＤ、バーチャルプロセッサＩＤを元に、Ｓ５１０において背面に近いレイヤーから順番にＤＬ生成が完了したかポーリングを行い、終了していた場合、Ｓ５１１で分割ＤＬを取得する。そして、取得したＤＬをＳ５１２でレンダリングと、必要に応じて重ね合わせ処理とを行い、全ＤＬ分上述の処理を繰り返し、終了すると、Ｓ５１３で印刷終了をプリンタドライバ３０４に通知する。
【００５２】
＜全体処理フローについて＞
次に、プリンタドライバ、ＰＤＬ分割サーバ、バーチャルプロセッサ群、出力デバイスの動作を、図６〜図１０を用いて説明する。図６は本実施形態の全体処理フロー、図７はＰＤＬ分割サーバ１０３内の処理フロー、図８はＰＤＬ分割サーバ１０３内のＰＤＬ分割の詳細フロー、図９はバーチャルプロセッサ群１０２内の処理フロー、図１０は出力デバイス１０４での処理フローである。
【００５３】
まず、全体処理フローを、図６を用いて説明する。Ｓ６０１でクライアントＰＣ１０５のプリンタドライバ３０４が、Ｓ６０１で印刷アプリケーションから指示された印刷対象のデータからＰＤＬデータを生成する。次に、プリンタドライバ３０４はＳ６０２でクラウド環境が使用可能か否かを判断し、不可能だった場合、Ｓ６０３で従来のローカル環境での印刷処理を出力デバイス１０４に実行させ、この処理を終了する。
【００５４】
一方、Ｓ６０２で図１に示すように、クラウド環境が使用可能だった場合、Ｓ６０４でＰＤＬデータをクラウド上のＰＤＬ分割サーバ１０３へ転送する。これにより、ＰＤＬ分割サーバ１０３が、Ｓ６０５で受信したＰＤＬを分割処理する。ＰＤＬ分割サーバ１０３での分割処理に関する詳細は＜ＰＤＬ分割処理（Web Role）について＞で詳述する。
【００５５】
次に、ＰＤＬ分割サーバ１０３は、Ｓ６０５で分割した分割ＰＤＬをバーチャルプロセッサ群１０２へ送信し、バーチャルプロセッサ群１０２が、Ｓ６０６で分割ＰＤＬのＤＬを並列に生成する。バーチャルプロセッサ群１０２の処理に関する詳細は＜分割ＰＤＬのＤＬ生成処理（Worker Role）について＞で詳述する。
【００５６】
そして、生成された各ＤＬは出力デバイス１０４へ送信され、出力デバイス１０４が、Ｓ６０７で各ＤＬをレンダリングし、ビットマップを生成すると共に、必要に応じて重ね合わせ処理を行い、１ページ分の画像を生成する。この出力デバイス１０４の処理に関する詳細は＜デバイスにおけるレンダリング処理について＞で詳述する。
【００５７】
＜ＰＤＬ分割処理（Web Role）について＞
次に、本実施形態におけるＰＤＬ分割処理であるWeb Role処理を、図７を参照して説明する。ＰＤＬ分割サーバ１０３が、Ｓ７０１で処理対象のＰＤＬデータをインターネット１０１経由で受信する。次に、Ｓ７０２で出力デバイス１０４のエンジンスピードを確認し、Ｓ７０３で並列処理を行うバーチャルプロセッサ群１０２の個数と処理能力の確認を行う。
【００５８】
次に、ＰＤＬ分割サーバ１０３は、Ｓ７０４で受信したＰＤＬの解釈を行い、Ｓ７０５でＰＤＬの各ページ内に含まれる描画コマンドが閾値以上で分割しないとエンジンスピードが出ない重いページか否かを判定する。判定の結果、ＮＯだった場合、Ｓ７０６で分割されていないＰＤＬをバーチャルプロセッサ群１０２へ送信し、Ｓ７１０へ進む。また、判定の結果がＹＥＳだった場合、Ｓ７０７でページ内のレベル数、バーチャルプロセッサ数、重ね合わせを考慮し、分割ＰＤＬに含まれるレベル数を決定する。この処理に関する詳細は＜ＰＤＬ分割のおけるレベル数決定処理について＞で詳述する。
【００５９】
次に、ＰＤＬ分割サーバ１０３は、Ｓ７０８で決定されたレベル数を元にレイヤー毎（レイヤー単位）にＰＤＬを分割する。元々ＰＤＬ内には、背景に近いレベルから順番に描画オブジェクトが記述されているので、分割は容易である。そして、Ｓ７０９で分割された各ＰＤＬをバーチャルプロセッサ群１０２へ送信する。Ｓ７１０で、受信したＰＤＬの全ページの処理が完了したか否かを判断し、ＮＯだった場合、Ｓ７０４に戻り、次のページの処理を行う。一方、Ｓ７１０で全ページの処理が完了すれば、この処理を終了する。
【００６０】
＜分割ＰＤＬのＤＬ生成処理（Worker Role）について＞
次に、本実施形態における分割ＰＤＬのＤＬ生成処理であるWorker Role処理を、図８を参照して説明する。バーチャルプロセッサ群１０２は、Ｓ８０１で処理する分割ＰＤＬデータをＰＤＬ分割サーバ１０３から受信する。次に、Ｓ８０２で受信された分割ＰＤＬからＤＬを生成する。そして、Ｓ８０３でバーチャルプロセッサ群１０２でレンダリング処理まで行うか否かを、出力デバイス１０４とバーチャルプロセッサ群１０２と間の帯域が予め定められた帯域よりも広いか否かにより判断する。ここで、ＹＥＳと判断した場合は、Ｓ８０４でＤＬを解釈し、レンダリング処理を行い、ビットマップを生成する。
【００６１】
また、Ｓ８０３でＮＯと判断した場合は、Ｓ８０５へ進み、出力デバイス１０４からの送信リクエストがあるか否かを判定する。判定の結果、送信リクエストがなければ、出力デバイス１０４からの送信リクエストがあるまでループする。一方、出力デバイス１０４から送信リクエストがあれば、Ｓ８０６へ進み、Ｓ８０２で生成したＤＬ又はＳ８０４で生成したビットマップを出力デバイス１０４へ転送し、この処理を終了する。
【００６２】
＜デバイスにおけるレンダリング処理について＞
次に、本実施形態におけるデバイスにおけるレンダリング処理を、図９を参照しながら説明する。出力デバイス１０４は、Ｓ９０１で印刷情報をプリンタドライバ３０４やWeb roleから受信する。次に、Ｓ９０２で受信されたデータが分割されたデータか否かを判断し、ＮＯの場合は、Ｓ９０３でデータがＤＬか否かを判断する。ここで、ＮＯの場合は、Ｓ９０４でバーチャルプロセッサ群１０２からビットマップを受信し、Ｓ９１９へ進む。一方、Ｓ９０３でＹＥＳの場合は、Ｓ９０５でバーチャルプロセッサ群１０２からＤＬを受信する。そして、Ｓ９０６で受信されたＤＬをレンダリングし、ビットマップを生成してＳ９１９へ進む。
【００６３】
また、Ｓ９０２で分割されたデータの場合は、Ｓ９０７でデータがＤＬデータか否かを判断する。判断の結果、ＮＯの場合は、Ｓ９０８で受信すべきビットマップが生成されるまで待つ。ビットマップが生成されると、Ｓ９０９でバーチャルプロセッサ群１０２から生成されたビットマップを受信する。そして、Ｓ９１０で重ね合わせが必要か否かを判断する。ここで、最背面のビットマップのように重ね合わせの必要がない場合は、Ｓ９１２へ進むが、重ね合わせが必要な場合は、Ｓ９１１で背面と現在処理しているビットマップの重ね合わせ処理を行う。そして、Ｓ９１２で全データの処理が完了したか否かを判断し、完了していない場合は、Ｓ９０８へ進み、完了すると、Ｓ９１９へ進む。
【００６４】
一方、Ｓ９０７でＤＬデータの場合は、Ｓ９１３で受信するＤＬが生成されるまで待ち、ＤＬデータが生成されると、Ｓ９１４でバーチャルプロセッサ群１０２からＤＬデータを受信する。そして、Ｓ９１５で重ね合わせが必要か否かを判断し、最背面のように重ね合わせの必要ない場合はＳ９１７でＤＬデータをレンダリングし、ビットマップを生成してＳ９１８へ進む。また、重ね合わせが必要な場合は、Ｓ９１６で重ね合わせを行う処理中のＤＬより背面のビットマップと重ね合わせ処理を行いながらビットマップを生成する。そして、Ｓ９１８で全データの処理が終了したか否かを判断し、ＮＯの場合、Ｓ９１３に戻り、次のレイヤーの処理を開始する。一方、Ｓ９１８でＹＥＳの場合は、Ｓ９１９で生成したビットマップを用紙に出力し、この処理を終了する。
【００６５】
＜ＰＤＬ分割のおけるレベル数決定処理について＞
次に、本実施形態におけるＰＤＬ分割のレベル数決定処理を、図１０を参照して説明する。まず、ＰＤＬ分割サーバ１０３は、Ｓ１００１で処理するＰＤＬに含まれるレベル数ＬＳＮ、出力デバイス１０４のエンジンスピードＥＳ、バーチャルプロセッサ群１０２の処理能力ＰＳ、の３つの条件を入力する。そして、処理能力ＰＳとエンジンスピードＥＳとからバーチャルプロセッサ群１０２がそのエンジンスピードＥＳ内で処理できるレベル数ＬＮＰを算出する。
【００６６】
次に、Ｓ１００２でＰＤＬに含まれるレベル数ＬＳＮをバーチャルプロセッサ群１０２の処理能力で割ることによりＰＤＬをエンジンスピードで処理するためのバーチャルプロセッサの個数ＰＮを算出する。そして、Ｓ１００３で、算出した個数ＰＮが１より大きいか否かを判断し、ＮＯの場合は、Ｓ１００４でＰＤＬの分割は行わず、１つのバーチャルプロセッサに１ページ分のＰＤＬを割り当てる。
【００６７】
一方、Ｓ１００３で、算出した個数ＰＮが１より大きい場合は、Ｓ１００５でＰＤＬに含まれるレベル数を必要なバーチャルプロセッサの個数で割ってＰＤＬレベル数の中央値ＭＬを算出する。次に、Ｓ１００６で、レベルの中央値ＭＬを、ＰＤＬに含まれるレベル数ＬＳＮを２で割った値で割ることで各バーチャルプロセッサ間のレベル数の重みＬＷを算出する。そして、Ｓ１００７で、中央値ＭＬを中心に各バーチャルプロセッサに重み分ずつ付加又は削除したレベル数を決定する。
【００６８】
次に、Ｓ１００８で割り振ったレベル数に過不足が出たか否かを判断し、ＮＯの場合は、この処理を終了する。また、過不足が出た場合は、Ｓ１００９で最前面レイヤーの個数に過不足分を付加又は削除して調整し、この処理を終了する。
【００６９】
＜レイヤー分割の際の処理速度見積もり＞
次に、本実施形態におけるレイヤー分割の際の処理速度見積もりを、図１２を参照して説明する。図１２には、この見積もりにおいて仮定した各種条件１２０１が示されている。まず、処理するデータは現在のＰＤＬを分割しない場合はエンジンスピード５０ｐｐｍが出ない複雑な描画コマンドを持つＰＤＬデータである。レベルを均等に分けた場合の１レイヤーのＤＬ生成時間は０．３秒、デバイス上のＲＩＰ（Ｈａｒｄ）がレンダリングする時間が０．１秒、バーチャルプロセッサ上のＲＩＰ（Ｓｏｆｔ）がレンダリングする時間が０．３秒。レンダリング時に重ね合わせが必要な場合かかる時間が０．１秒、ＤＬをデバイスへ転送する時間が０．１秒、Ｂｉｔｍａｐをデバイスへ送信する時間が０．３秒かかると仮定する。また、エンジンスピードが出る個数を見積もった所、５つであることとする。
【００７０】
前提の下には、現状のクラウドを使わず、全処理をデバイス内で行う場合のタイミングチャート１２０２を示す。この場合、ＤＬ生成を１つのＣＰＵで行うので、ＲＩＰと並列に処理できるが、合計１．８秒かかり５０ｐｐｍでないことが分かる。
【００７１】
また、＜ページ分割における重み付けについて＞で述べた重み付けをせずにバーチャルプロセッサでＤＬ生成までを行う場合のタイミングチャート１２０３を示す。この場合、ＤＬ生成を並列に行うが、最背面レイヤーが終了するまでＲＩＰが開始出来ないのでＤＬ生成とＲＩＰが並列にならず、合計１．３秒かかることが分かる。
【００７２】
更に、＜ページ分割における重み付けについて＞で述べた重み付けを行い、バーチャルプロセッサでＤＬ生成までを行う場合のタイミングチャート１２０４を示す。この場合、ＤＬ生成を並列に行い、かつ重みを付けることにより、最背面レイヤーのＤＬ生成が他のレイヤーに比べて高速に終了するのでＤＬ生成とＲＩＰとが並列になり、合計１．１秒になり、５０ｐｐｍのエンジンスピードを達成していることが分かる。
【００７３】
次に、＜ページ分割における重み付けについて＞で述べた重み付けをせずにバーチャルプロセッサでビットマップ生成までを行う場合のタイミングチャート１２０５を示す。この場合、各レイヤー間では並列に処理が行われるが、ＤＬ生成とビットマップ生成は並列ではなく、更にビットマップまで展開するとＤＬに比べて情報量が多くなり、デバイスに転送する時間がかかるため、合計１．３秒かかることが分かる。
【００７４】
更に、＜ページ分割における重み付けについて＞で述べた重み付けを行い、バーチャルプロセッサでビットマップ生成までを行う場合のタイミングチャート１２０６を示す。この場合、各レイヤー間ではパラレルに処理が行われるが、ＤＬ生成とビットマップ生成が並列でなく、更にビットマップまで展開するとＤＬに比べて情報量が多くなり、デバイスに転送する時間がかかるため、合計１．２秒かかることが分かる。
【００７５】
以上のことから、ＤＬ生成をバーチャルプロセッサで分割して行うことによる高速化、またＰＤＬ分割の際に、重みを付けることにより、並列に処理出来ることによる高速化が見積もれる。
【００７６】
＜バーチャルプロセッサ群が一定時間経過してもＤＬを生成しない場合＞
次に、バーチャルプロセッサ群が一定時間経過してもＤＬを生成しない場合の処理を、図１３の（ａ）を参照して説明する。バーチャルプロセッサ群１０２は、Ｓ１３０１で、ＰＤＬ分割サーバ１０３がＤＬデータを生成したか否かを判断する。この判断はＳ９０９やＳ９１４と同じものである。そして、判断の結果がＹＥＳの場合、この処理を終了するが、ＮＯの場合、Ｓ１３０２で、Ｓ１３０１の判断をある閾値以上の時間、行っているか否かを判定する。判定の結果、ＮＯの場合は、Ｓ１３０１に戻り、再度判断する。一方、Ｓ１３０２でＹＥＳの場合、Ｓ１３０３で、ＰＤＬ分割サーバ１０３に分割単位を小さくする情報を送信し、この処理を終了する。
【００７７】
＜課金体系に応じたバーチャルプロセッサ数の決定について＞
次に、課金体系に応じたバーチャルプロセッサ数の決定を、図１３の（ｂ）を参照して説明する。ＰＤＬ分割サーバ１０３は、Ｓ１３０４でバーチャルプロセッサが使用個数に応じて課金されるか否かを判断する。判断の結果、ＹＥＳの場合は、Ｓ１３０６でＰＤＬの分割単位を大きくし、この処理を終了する。一方、ＮＯの場合は、エンジンスピードが達成できるように分割単位を小さくし、この処理を終了する。
【００７８】
尚、本実施形態では、クライアントＰＣ１０５で生成したＰＤＬをクラウドに送信しているが、クラウドでＰＤＬを生成する構成であっても良い。
【００７９】
［他の実施形態］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005641825.tif 000002
【図２】
0005641825.tif 000003
【図３】
0005641825.tif 000004
【図４】
0005641825.tif 000005
【図５】
0005641825.tif 000006
【図６】
0005641825.tif 000007
【図７】
0005641825.tif 000008
【図８】
0005641825.tif 000009
【図９】
0005641825.tif 000010
【図１０】
0005641825.tif 000011
【図１１】
0005641825.tif 000012
【図１２】
0005641825.tif 000013
【図１３】
0005641825.tif 000014