(57)【要約】【課題】  サーバを必要とせずに簡易な構成で効率よくジョブを実行することができる情報処理装置、方法、及びプログラムを提供する。【解決手段】  複合機１２Ａにジョブの実行が指示されると、複合機１２Ａは、そのジョブを実行可能であるか否かを処理負荷の状態等に基づいて判断する。ジョブを実行可能でないと判断した場合には、ジョブを処理内容等に基づいて分割し、複合機１２Ｂ、１２ＣやＰＣ１２Ｄに対して分割ジョブの実行を依頼する。複合機１２Ｂ、１２ＣやＰＣ１２Ｄでは、依頼された分割ジョブを実行可能か否かを判断し、実行可能であれば分割ジョブを実行し、処理結果を複合機１２Ａに送信する。このような処理をＰ２Ｐネットワーク内の各ピアが実行することにより、ジョブサーバー等を設けずにジョブを効率よく処理する。【選択図】        図１２
2006268166.tif 000002
【特許請求の範囲】
【請求項１】
複数の情報処理装置が接続されたネットワークに接続され、所定のジョブを実行するジョブ処理手段を備えた情報処理装置であって、
実行を指示されたジョブを実行可能か否かを判断する判断手段と、
ジョブを実行不可であると判断した場合に、前記ジョブを所定の分割単位で複数の分割ジョブに分割するジョブ分割手段と、
前記分割ジョブの実行を他の情報処理装置へ依頼する依頼手段と、
前記他の情報処理装置からの分割ジョブの処理結果を受信する受信手段と、
を備えたことを特徴とする情報処理装置。
【請求項２】
前記判断手段は、処理負荷の状態に基づいて前記ジョブを実行可能か否かを判断することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記判断手段は、前記複数の分割ジョブのうち実行可能な分割ジョブがあるか否かを判断し、実行可能な分割ジョブがある場合には、その分割ジョブを前記ジョブ処理手段に実行させることを特徴とする請求項１又は請求項２記載の情報処理装置。
【請求項４】
前記分割ジョブの処理内容に基づいて、前記分割ジョブの各々に優先順位を付与し、前記依頼手段は、付与した優先順位に従って、前記分割ジョブの実行を他の情報処理装置へ依頼することを特徴とする請求項１乃至請求項３の何れか１項に記載の情報処理装置。
【請求項５】
前記他の情報処理装置毎に、前記分割ジョブの処理実行率を前記処理結果に基づいて求め、前記依頼手段は、前記分割ジョブの実行を前記処理実行率が高い他の情報処理装置から順に依頼することを特徴とする請求項１乃至請求項４の何れか１項に記載の情報処理装置。
【請求項６】
前記ネットワークは、複数の情報処理装置の少なくとも一部が特定のサーバを介さずに通信するピアツーピアネットワークであることを特徴とする請求項１乃至請求項５の何れか１項に記載の情報処理装置。
【請求項７】
前記分割ジョブを実行中の他の情報処理装置において障害が発生した場合、前記依頼手段は、障害が発生した他の情報処理装置以外の他の情報処理装置に、前記分割ジョブの実行を依頼することを特徴とする請求項１乃至請求項６の何れか１項に記載の情報処理装置。
【請求項８】
複数の情報処理装置が接続されたネットワークに接続され、所定のジョブを実行するジョブ処理手段を備えた情報処理装置により実行される情報処理方法であって、
実行を指示されたジョブを実行可能か否かを判断し、
ジョブを実行不可であると判断した場合に、前記ジョブを所定の分割単位で複数の分割ジョブに分割し、
前記分割ジョブの実行を他の情報処理装置へ依頼し、
前記他の情報処理装置からの分割ジョブの処理結果を受信する、
ことを特徴とする情報処理方法。
【請求項９】
複数の情報処理装置が接続されたネットワークに接続され、所定のジョブを実行するジョブ処理手段を備えた情報処理装置により実行される情報処理プログラムであって、
実行を指示されたジョブを実行可能か否かを判断するステップと、
ジョブを実行不可であると判断した場合に、前記ジョブを所定の分割単位で複数の分割ジョブに分割するステップと、
前記分割ジョブの実行を他の情報処理装置へ依頼するステップと、
前記他の情報処理装置からの分割ジョブの処理結果を受信するステップと、
を含むことを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、方法、及びプログラムに係り、より詳しくは、ネットワークを介して互いに接続された複数の装置の少なくとも一部が、専用のサーバを介することなく直接通信するピアツーピアシステムに接続可能な情報処理装置、方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、コンピュータ等の装置をネットワークを介して互いに接続するネットワークシステムの形態として、クライアント・サーバシステムと、ピアツーピア（以下、Ｐ２Ｐという）システムとがある。
【０００３】
クライアント・サーバシステムは、サーバが各種情報資源を管理したり各種アプリケーションを提供するサービスを実行し、これをクライアントが利用するシステムであり、主従関係が固定的なシステムある。
【０００４】
これに対し、Ｐ２Ｐシステムでは、基本的には専用のサーバを設けず、ネットワークに接続されたピア（例えばパーソナルコンピュータ等）の各々が、あるときは他のピアに対して所定のサービスを提供してサーバのように動作し、あるときは他のピアが提供するサービスを利用してクライアントのように動作するシステムであり、各ピアが対等なシステムである。このようなＰ２Ｐシステムに関して、従来から様々な技術が提案されている（例えば特許文献１及び特許文献２参照）。このようなＰ２Ｐシステムでは、各ピアでファイルを共有したりすることができる。
【０００５】
ところで、従来、ネットワークに接続された複数のコンピュータや複合機（コピー機能、プリンタ機能、ファクシミリ機能等を備えた機器）は、各機器に付与されたネットワークアドレス及び所定の通信方法を用いることにより接続して利用することができるが、ジョブを依頼された機器は、基本的にはその機器だけでジョブを実行するのが通常である。
【０００６】
この場合、例えば複数の複合機がネットワークに接続されている場合において、ユーザのジョブ処理依頼が特定の複合機に集中するような場合、たとえ他の複合機が空いていても使用されないため、リソースを有効に活用することができない。
【０００７】
このような問題を解決するため、例えばプリント処理等のジョブを管理するジョブサーバ（またはマスタとなる装置）をネットワーク上に設置し、クライアント（またはスレーブとなる装置）は、サーバにジョブを依頼することでネットワーク上のリソースにジョブの処理を分担する発明が提案されている（例えば特許文献３〜５参照）。
【０００８】
このような発明では、ジョブの割り振りをサーバ上で行うため、サーバに対して使用可能なリソースを管理者が登録する等の設定作業が煩雑であったり、物理的に遠距離のプリンタで出力が行われる等、望まないリソースが割り当てられる場合があり、ユーザの使い勝手としては不十分である場合があった。
【０００９】
さらに、この問題を解決するため、特許文献６記載の発明のように、特定の機能を持つコンピュータを自動的に管理サーバに登録するとこで、分散処理設定を軽減する技術が提案されている。
【特許文献１】特開２００２−３３５２６９号公報
【特許文献２】特開２００３−２５６３６３号公報
【特許文献３】特開２００２−３３３９６６号公報
【特許文献４】特開２００３−２２１７０号公報
【特許文献５】特開２００３−２５６１５６号公報
【特許文献６】特開２００２−１６３２４０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、上記従来技術においても、ジョブ処理の割り当てはサーバが行うため、ネットワーク上の管理サーバを設置する必要があり、複合機などのデバイスのみが存在するようなネットワーク構成では利用することができない。
【００１１】
本発明は、上記問題を解決すべく成されたものであり、サーバを必要とせずに簡易な構成で効率よくジョブを実行することができる情報処理装置、方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、請求項１記載の発明は、複数の情報処理装置が接続されたネットワークに接続され、所定のジョブを実行するジョブ処理手段を備えた情報処理装置であって、実行を指示されたジョブを実行可能か否かを判断する判断手段と、ジョブを実行不可であると判断した場合に、前記ジョブを所定の分割単位で複数の分割ジョブに分割するジョブ分割手段と、前記分割ジョブの実行を他の情報処理装置へ依頼する依頼手段と、前記他の情報処理装置からの分割ジョブの処理結果を受信する受信手段と、を備えたことを特徴とする。
【００１３】
この発明によれば、情報処理装置はネットワークに接続され、所定のジョブを実行するジョブ処理手段を備えている。例えば請求項６に記載したように、前記ネットワークは、複数の情報処理装置の少なくとも一部が特定のサーバを介さずに通信するピアツーピアネットワークとすることができる。
【００１４】
判断手段は、実行を指示されたジョブを実行可能か否かを判断し、ジョブを実行不可であると判断した場合には、ジョブ分割手段によって、実行を指示されたジョブが所定の分割単位で複数の分割ジョブに分割される。分割単位としては、処理内容の種類やページ数等がある。
【００１５】
依頼手段は、分割ジョブの実行を他の情報処理装置へ依頼し、他の情報処理装置からの分割ジョブの処理結果を受信手段によって受信する。
【００１６】
このように、ジョブの実行が不可能であると判断した場合には、ジョブを分割してネットワークに接続された他の情報処理装置へ処理を依頼するので、効率良くジョブを実行することができる。また、このような処理をネットワークに接続された情報処理装置が各々実行することにより、ジョブサーバー等を設ける必要がなく簡易な構成でジョブを効率よく処理することができる。
【００１７】
なお、請求項２に記載したように、前記判断手段は、処理負荷の状態に基づいて前記ジョブを実行可能か否かを判断することができる。すなわち、例えば実行中のジョブの数や待機中のジョブの数等から処理負荷が重いと判断した場合には、ジョブが実行不可であると判断し、分割ジョブの実行を他の情報処理装置へ依頼する。これにより、ジョブを効率よく実行することができる。
【００１８】
また、請求項３に記載したように、前記判断手段は、前記複数の分割ジョブのうち実行可能な分割ジョブがあるか否かを判断し、実行可能な分割ジョブがある場合には、その分割ジョブを前記ジョブ処理手段に実行させる構成とすることができる。すなわち、ジョブ全てを実行できない場合でも、処理負荷の状態から分割ジョブであれば実行できる場合もあるので、そのような場合には分割ジョブを実行する。
【００１９】
また、請求項４に記載したように、前記分割ジョブの処理内容に基づいて、前記分割ジョブの各々に優先順位を付与し、前記依頼手段は、付与した優先順位に従って、前記分割ジョブの実行を他の情報処理装置へ依頼する構成とすることができる。すなわち、ジョブを分割しても、処理内容によっては、特定の処理を実行した後でないと実行できない処理もあるので、そのような場合には、分割ジョブに優先順位を付与し、この優先順位に従って、分割ジョブの実行を依頼する。これにより、適切にジョブを実行することができる。
【００２０】
また、請求項５に記載したように、前記他の情報処理装置毎に、前記分割ジョブの処理実行率を前記処理結果に基づいて求め、前記依頼手段は、前記分割ジョブの実行を前記処理実行率が高い他の情報処理装置から順に依頼するようにしてもよい。これにより、ジョブをさらに効率よく実行することができる。
【００２１】
また、請求項７に記載したように、前記分割ジョブを実行中の他の情報処理装置において障害が発生した場合、前記依頼手段は、障害が発生した他の情報処理装置以外の他の情報処理装置に、前記分割ジョブの実行を依頼するようにしてもよい。これにより、耐障害性を高めることができる。
【００２２】
請求項８記載の発明は、複数の情報処理装置が接続されたネットワークに接続され、所定のジョブを実行するジョブ処理手段を備えた情報処理装置により実行される情報処理方法であって、実行を指示されたジョブを実行可能か否かを判断し、ジョブを実行不可であると判断した場合に、前記ジョブを所定の分割単位で複数の分割ジョブに分割し、前記分割ジョブの実行を他の情報処理装置へ依頼し、前記他の情報処理装置からの分割ジョブの処理結果を受信する、ことを特徴とする。
【００２３】
この発明によれば、ジョブの実行が不可能であると判断した場合には、ジョブを分割してネットワークに接続された他の情報処理装置へ処理を依頼するので、効率良くジョブを実行することができる。
【００２４】
請求項９記載の発明は、複数の情報処理装置が接続されたネットワークに接続され、所定のジョブを実行するジョブ処理手段を備えた情報処理装置により実行される情報処理プログラムであって、実行を指示されたジョブを実行可能か否かを判断するステップと、ジョブを実行不可であると判断した場合に、前記ジョブを所定の分割単位で複数の分割ジョブに分割するステップと、前記分割ジョブの実行を他の情報処理装置へ依頼するステップと、前記他の情報処理装置からの分割ジョブの処理結果を受信するステップと、を含むことを特徴とする。
【００２５】
この発明によれば、ジョブの実行が不可能であると判断した場合には、ジョブを分割してネットワークに接続された他の情報処理装置へ処理を依頼するので、効率良くジョブを実行することができる。
【発明の効果】
【００２６】
以上説明したように、本発明によれば、サーバを必要とせずに簡易な構成で効率よくジョブを実行することができる、という効果を有する。
【発明を実施するための最良の形態】
【００２７】
以下、本発明の実施形態について説明する。
【００２８】
図１には、Ｐ２Ｐネットワーク１０のネットワーク構成について概念的に示した。図１に示すように、Ｐ２Ｐネットワーク１０は、仮想的には各ピア１２Ａ〜１２Ｇが相互に接続された構成であり、実際には、例えばピア１２Ａ〜１２Ｃはファイアウォール１４によるアクセス制限下にあるピアであったり、ピア１２Ｃ〜１２Ｅはインターネットに接続されたピアであったり、ピア１２Ｅ〜１２ＧはＮＡＴ（Network Address Translation）によってアドレス変換されるピアであったりする。
【００２９】
また、各ピア同士の接続方法は様々であり、ＩＰｖ４（Internet Protocol version 4）やＩＰｖ６（Internet Protocol version 6）の機能を用いるＴＣＰ（Transmission Control Protocol）接続を用いたり、ＨＴＴＰ（HyperText Transfer Protocol）を用いたり、ＳＭＴＰ（Simple Mail Transfer Protocol）を用いたりすることができる。
【００３０】
ここで、ピアとは、例えばパーソナルコンピュータ等のコンピュータの他、ＰＤＡ（Personal Digital Assistance）、携帯電話、プリンタ、コピー機、これらの機能を複数備えた複合機等のハードウェア又はこれらの機能を実現するソフトウェアをいう。また、各ピアは、同じ種類のものであるか異なる種類のものであるかにかかわらずＰ２Ｐネットワークに参加することができる。
【００３１】
Ｐ２Ｐネットワークの形態としては、図２に示すように、各ピア１４Ａ〜１４Ｋの全てが対等な関係にあるピュアＰ２Ｐと、図３に示すように、サーバ１４Ｓを設け、一部のサービスの提供をサーバ１４Ｓに委ね、その他のサービスについては各ピア１４Ａ〜１４Ｈが対等な関係において実現されるハイブリッドＰ２Ｐの形態があり、何れの形態でも本発明を適用可能である。
【００３２】
また、Ｐ２Ｐネットワークに参加する各ピアにログオンするユーザ又はピアは、図４に示すように、目的に応じたグループを構成することができる。図４では、ピア１２Ａ〜１２Ｇ全てがグループ１に属し、さらに、ピア１２Ａ、１２Ｃ、１２Ｅ、１２Ｆはグループ２に属しており、ピア１２Ｂ、１２Ｅ、１２Ｆ、１２Ｇはグループ３に属している。なお、各ユーザ又はピアは、単一のグループに属してもよいし、複数のグループに属していてもよい。また、ユーザ又はピアは必ずしもグループに属する必要はない。
【００３３】
図５には、Ｐ２Ｐネットワーク１０に参加する各ピアの基本構成を示した。図５に示すように、ピア１２は、Ｐ２Ｐ基盤構成部１６、Ｐ２Ｐ基盤管理データ記憶部１８、アプリケーション実行部２０、及びアプリケーションメモリ２２を含んで構成される。
【００３４】
Ｐ２Ｐ基盤構成部１６は、メッセージ制御部２４、データ管理部２６、送信部２８、及び受信部３０を含んで構成される。
【００３５】
送信部２８は、メッセージ制御部２４から受け取ったメッセージをネットワーク３２へ向けて送信する。
【００３６】
受信部３０は、Ｐ２Ｐネットワーク１０内で送受信されるデータのうち、自ピアにとって必要なデータを受信する。常に受信待機状態となっており、Ｐ２Ｐネットワーク１０の他ピアからの各種要求やデータを受信し、メッセージ制御部２４に受け渡す。なお、送信部２８とは独立かつ並列に動作する。
【００３７】
図６には、メッセージ制御部２４の概略構成を示した。メッセージ制御部２４は、図６に示すように、サービス実行部３４及びメッセージディスパッチ部３６を含んで構成されている。
【００３８】
サービス実行部３４は、ピア探索サービス部３８、告知情報公開サービス部４０、告知情報取得サービス部４２、グループ管理サービス部４４、ユーザ管理サービス部４６、及びピア管理サービス部４８を含んで構成されており、各サービス部は相互に情報を授受しながら各サービスを実行する。
【００３９】
ピア探索サービス部３８は、Ｐ２Ｐネットワークに参加しているピアを探索する機能及び自ピアが必要とするサービス（機能）を提供可能なピアを探索する機能を有する。なお、探索の範囲は、必要とするサービスの名称や属性、ホップ数の閾値等を指定することにより制御することができる。ここで、ホップ数とは、メッセージを送信する際に経由するピアの数である。
【００４０】
告知情報公開サービス部４０は、自ピアが提供可能なサービス等の情報を告知情報としてＰ２Ｐネットワーク上に公開する機能を有する。ここで、提供可能なサービスには、例えばアプリケーション実行部２０により実行されるアプリケーションの他、後述するグループ管理サービスやユーザ管理サービス等も含まれる。なお、告知情報の公開は、例えば他ピアから問い合わせがあった場合や自ピアの起動時に実行してもよいし、定期的に実行するようにしてもよい。
【００４１】
このように各ピアの告知情報公開サービス部４０によって告知情報がＰ２Ｐネットワーク上に公開されることにより、Ｐ２Ｐネットワークに参加している各ピアは、Ｐ２Ｐネットワーク上でどのようなサービスを利用できるかを把握することができる。
【００４２】
告知情報取得サービス部４２は、ピア探索サービス部３８によって探索されたピアから送信された告知情報又は他ピアから自発的に送信された告知情報を取得し、データ管理部２６へ受け渡す。データ管理部２６では、取得した告知情報をピア情報としてＰ２Ｐ基盤管理データ記憶部１８に記憶させる。これにより、ピアは、Ｐ２Ｐネットワークに参加している他ピアがどのようなサービスを提供しているのかを把握することができる。
【００４３】
グループ管理サービス部４４は、同じ目的を有するピア同士で構成されたグループへの参加や脱退、新たなグループの作成等をグループ情報に基づいて管理する機能を有する。グループ情報は、例えば少なくともグループＩＤとユーザＩＤとの対応関係を表す情報であり、Ｐ２Ｐ基盤管理データ記憶部１８に記憶される。このグループ情報を参照することにより、どのグループにどのユーザが属しているかを把握することができる。
【００４４】
ユーザ管理サービス部４６は、ユーザ情報を管理する機能を有する。ユーザ情報は、例えばピアＩＤとそのピアにログオンしているユーザＩＤとの対応関係を表すログオン情報や、ユーザの名前、メールアドレス等のユーザ自身に関する情報、そのユーザが属するグループのグループＩＤ等の情報を含み、Ｐ２Ｐ基盤管理データ記憶部１８に記憶される。
【００４５】
ピア管理サービス部４８は、Ｐ２Ｐネットワークに参加しているピアのピア情報を管理する機能を有する。
【００４６】
メッセージディスパッチ部３６は、アプリケーション実行部２０からのメッセージや他ピアとの間で送受信されるメッセージを解析し、サービス実行部３４のうち解析したメッセージに関する処理を行うべきサービス部へ制御を渡す。
【００４７】
Ｐ２Ｐ基盤管理データ記憶部１８は、経路情報１８Ａ、グループ情報１８Ｂ、隣接情報１８Ｃ、ピア情報１８Ｄ、及びユーザ情報１８Ｅを記憶する。
【００４８】
経路情報１８Ａは、Ｐ２Ｐネットワークにおける経路の情報、例えば後述するスパニングツリーに関する情報を含む。
【００４９】
グループ情報１８Ｂは、前述したように例えば少なくともグループＩＤとユーザＩＤとの対応関係を表す情報である。
【００５０】
隣接情報１８Ｃは、自ピアに隣接するピアに関する情報、例えばピアＩＤ等の情報を含む。ここで、隣接するピアとは、例えば自ピアから送信したパケットに対する応答時間が予め定めた所定時間内のピアとすることができる。隣接情報は、例えば他ピアと通信する課程において得られる応答時間に基づいて生成することができるが、オペレータの操作等により手動的に設定するようにしてもよい。
【００５１】
ピア情報１８Ｄは、ピア探索サービス部３８によって探索されたピアに関する情報、例えばピアＩＤ等の情報や、告知情報取得サービス部４２によって取得したＰ２Ｐネットワーク上の各ピアが提供しているサービスに関する情報等を含む。ここで、ピアＩＤには、例えばＩＰアドレスやＵＲＩ（Uniform Resource Identifier）等を用いることができる。
【００５２】
ユーザ情報１８Ｅは、前述したようにユーザのログオン情報やユーザ自身に関する情報等を含む。
【００５３】
アプリケーション実行部２０は、各種アプリケーションを実行するものであり、メッセージ制御部２４を介して他ピアとメッセージの送受信を行う。また、アプリケーションメモリ２２は、アプリケーション実行部２０の実行に関連する各種の情報を記憶するためのメモリである。
【００５４】
次に、Ｐ２Ｐネットワークにおいて、目的のサービスを検索し実行する場合の具体例について説明する。
【００５５】
まず、他ピアへメッセージを転送する機能を有する転送機能付きピアと、転送機能を備えず、転送機能付きピアを介して他ピアとメッセージの送受信を行うエンドピアと、からなるＰ２Ｐネットワークにおいて、転送機能付きピア及びエンドピアのＰ２Ｐ基盤構成部１６で実行される処理について説明する。なお、転送機能付きピアは、図示しない転送機能サービス部をサービス実行部３４に備えた構成である。
【００５６】
図７にはエンドピアで実行される処理のフローチャートを、図８には転送機能付きピアで実行される処理のフローチャートを示した。
【００５７】
図７に示すように、エンドピアは、ステップ１００において、転送機能付きピアの探索要求を、例えば自ピアに予め記憶された設定情報に設定された他の転送機能付きピアに対して、又はマルチキャストやブロードキャストにより他の転送機能付きピアに対してＰ２Ｐネットワークに送信する。これは、ピア探索サービス部３８により実行される。
【００５８】
そして、ステップ１０２において、転送機能付きピアが存在するか否かを判断し、転送付きピアが存在する場合には、ステップ１０４へ移行し、転送機能付きピアが存在しない場合には、ステップ１０２へ戻り、例えば所定時間経過後に再度転送機能付きピアを探索する。
【００５９】
ステップ１０４では、自ピアにログオンしているユーザ又は自ピアが属するグループに属している他ユーザがログオンしている他ピアの告知情報を取得するよう転送機能付きピアに要求する。これは、告知情報取得サービス部４２により実行される。
【００６０】
ステップ１０６では、転送機能付きピアから告知情報を受信したか否かを判断し、受信していない場合には、ステップ１１０へ移行し、受信した場合には、ステップ１０８において、受信した告知情報をＰ２Ｐ基盤管理データ記憶部１８にピア情報１８Ｄとして記憶させる。
【００６１】
ステップ１１０では、サービス要求が発生したか否かを判断する。例えば自ピアにログオンしているユーザの操作等によってアプリケーション実行部２０によりアプリケーションが実行され、サービス要求が発生した場合には、アプリケーション実行部２０からメッセージ制御部２４へサービス要求が通知される。この場合、ステップ１１２へ移行し、サービス要求が発生していない場合には、ステップ１１６へ移行する。
【００６２】
ステップ１１２では、発生したサービス要求に対応したメッセージを作成して転送機能付きピアに送信する。例えば、アプリケーション実行部２０からのサービス要求が、所望のファイルを取得する要求だった場合には、アプリケーション実行部２０から通知されたファイル名等の所望のファイルを特定するための情報を含むファイル探索要求メッセージを転送機能付きピアに送信する。
【００６３】
ステップ１１４では、送信したメッセージに対する応答処理を行う。すなわち、送信したメッセージに対する応答メッセージを受信し、受信した応答メッセージの内容に応じた処理を行う。例えば、サービス要求が所定のファイルを取得する要求であった場合には、そのファイルを所有しているピアがあれば、そのピア情報が応答メッセージとして受信されるので、これをアプリケーション実行部２０に通知する。この場合、アプリケーション実行部２０では、受信したピア情報に基づいて、所望のファイルを所有しているピアにファイル送信要求を送信するようメッセージ制御部２４に依頼する。これにより、所望のファイルを取得することができる。
【００６４】
そして、ステップ１１６では、転送機能付きピアから、他ピアから何らかのサービス提供又は情報提供を要求する要求メッセージを受信したか否かを判断し、要求メッセージを受信していた場合には、ステップ１１８へ移行し、要求メッセージを受信していない場合には、ステップ１０６へ戻って上記と同様の処理を繰り返す。
【００６５】
ステップ１１８では、要求に対する処理を実行する。そして、ステップ１２０において、処理結果に対応したメッセージを転送機能付きピアに送信する。例えば、他ピアからファイル探索の要求メッセージを受信した場合には、その要求メッセージをファイル検索を実行するアプリケーション実行部２０へ渡す。これによりアプリケーション実行部２０においてファイル検索が実行され、検索結果がメッセージ制御部２４に通知される。メッセージ制御部２４では、アプリケーション実行部２０から通知された検索結果に基づいて応答メッセージを作成し、ファイル探索要求メッセージの送信元のピアに送信する。例えばファイルが検索できた場合には、自ピアのピアＩＤ等の情報を含めた応答メッセージを作成して、ファイル探索要求メッセージの送信元のピアに送信する。これにより、送信元のピアでは、所望のファイルが検索できたか否かを確認することができる。
【００６６】
次に、転送機能付きピアで実行される処理について説明する。
【００６７】
転送機能付きピアは、まず図８に示すステップ２００において、例えば自ピアに予め記憶された設定情報に設定された他の転送機能付きピアに対して、又はマルチキャストやブロードキャストにより他の転送機能付きピアに対して、グループ情報やユーザ情報等の各種情報を送信するよう要求し、これらの情報を取得する。取得した情報は、Ｐ２Ｐ基盤管理データ記憶部１８に記憶される。これにより、Ｐ２Ｐネットワークを構成しているピアの情報やログオンしているユーザの情報を得ることができる。
【００６８】
ステップ２０２では、Ｐ２Ｐ基盤管理データ記憶部１８に記憶された隣接情報１８Ｃを、自ピアの隣の転送機能付きピア全てに告知する。隣接情報１８Ｃには、自ピアの隣の転送機能付きピアの情報が少なくとも含まれ、さらに、他のピアが有している隣接情報を既に取得している場合には、その隣接情報も含まれる。
【００６９】
ステップ２０４では、隣の転送機能付きピアに隣接情報を送信するよう要求し、取得する。このように、自ピアの隣の転送機能付きピアと隣接情報を交換する。
【００７０】
そして、ステップ２０６では、交換した隣接情報に基づき、スパニングツリーの構成情報を生成し、Ｐ２Ｐ基盤管理データ記憶部１８に経路情報として記憶する。ここで、スパニングツリーとは、メッセージの転送経路が、ループのない木構造となるような経路を表す。例えばＰ２Ｐネットワークが、図９（Ａ）に示すように、グループ１にのみ属する転送機能付きピア５０1、グループ２にのみ属する転送機能付きピア５０2、グループ１、２の何れにも属する転送機能付きピア５０12、何れのグループにも属さない転送機能付きピア５０n、これらの各転送機能付きピアの背後に存在するエンドピア（図９では図示省略）で構成されていたとする。この場合、スパニングツリーは、図９（Ｂ）に示すようなループのない木構造の経路となる。
【００７１】
次のステップ２０８では、エンドピアからのメッセージ送信要求を受信したか否かを判断し、受信している場合にはステップ２１０へ移行し、受信していない場合には、ステップ２１２へ移行する。
【００７２】
ステップ２１０では、スパニングツリーの構成情報としての経路情報に基づいて、メッセージを転送する。例えば、図９（Ａ）に示すようなネットワークが構築されている場合において、エンドピアが例えばグループ１に属しており、グループ１向けの要求メッセージを転送機能付きピアに送信した場合について説明する。この場合、転送機能付きピアは、グループ１に属しているエンドピアに対してのメッセージ転送を担う転送機能付きピアを全て含み、この転送機能付きピア全てにメッセージが転送されるようなスパニングツリー、例えば図９（Ｃ）に示すようなスパニングツリーを経路情報に基づいて計算する。そして、転送機能付きピアは、計算されたスパニングツリーに基づいて、隣の転送機能付きピア全てにエンドピアからの要求メッセージを転送する。これにより、図９（Ｃ）に示すスパニングツリー上の転送機能付きピアにメッセージが転送され、グループ１のエンドピア全てにメッセージが転送される。なお、グループ２向けのメッセージ送信要求を転送機能付きピアに送信した場合は、図９（Ｄ）に示すようなスパニングツリーが計算される。
【００７３】
次のステップ２１２では、隣の転送機能付きピアからメッセージを受信したか否かを判断し、受信した場合にはステップ２１４へ移行し、受信していない場合には、ステップ２０８へ戻って上記と同様の処理を繰り返す。なお、定期的にステップ２００へ戻ってスパニングツリーを定期的に計算するようにしてもよい。
【００７４】
ステップ２１４では、計算したスパニングツリーに基づき、メッセージを転送する必要がある場合、すなわちスパニングツリー上における隣の転送機能付きピアのうちメッセージを転送していない転送機能付きピアが存在する場合には、その転送機能付きピアにメッセージを転送する。また、受信したメッセージが、自ピアがメッセージの転送を担うエンドピアと同一のグループ宛であった場合には、そのメッセージをエンドピアへ転送する。
【００７５】
このように、スパニングツリーを各転送機能付きピアが計算し、このスパニングツリー計算に従ってメッセージを転送することにより、同じグループ内のエンドピア間においてメッセージの送受信が可能となる。
【００７６】
上記のような転送機能付きピアによってメッセージを転送する構成は、主にＬＡＮ（Local Area Network）等の比較的小規模のネットワークでＰ２Ｐネットワークを構築する場合に適しているが、大規模のネットワークでＰ２Ｐネットワークを構成する場合には、ファイアウォールやゲートウェイ等を介して、異なるネットワークに接続されたピア間でメッセージの送受信が行われる。以下では、このような比較的大規模なネットワークでＰ２Ｐネットワークを構築する場合に適した形態について説明する。
【００７７】
図１０に示すＰ２Ｐネットワーク１１は、複数のネットワーク５２〜５８を含み、ネットワーク５２は、ルータ６０、６２を介してネットワーク５４と接続されると共に、ルータ６４を介してネットワーク５８と接続される。また、ネットワーク５６は、ルータ６６を介してネットワーク５８と接続される。
【００７８】
ネットワーク５２は、エンドピア５２Ａ、５２Ｂ、及び待ち合わせ機能付きピア５２Ｃを含んで構成され、ネットワーク５４はエンドピア５４Ａを含んで構成され、ネットワーク５６はエンドピア５６Ａを含んで構成され、ネットワーク５８は中継機能付きピア５８Ａを含んで構成されている。なお、待ち合わせ機能付きピアは、図示しない待ち合わせ機能サービス部をサービス実行部３４に備えた構成であり、中継機能付きピア５８Ａは、図示しない中継機能サービス部をサービス実行部３４に備えた構成である。
【００７９】
このように構成されたＰ２Ｐネットワーク１１において、エンドピアは、図７のフローチャートの示す処理とほぼ同様の処理を実行する。すなわち、Ｐ２Ｐネットワーク１１におけるエンドピアで実行される処理は、図７のフローチャートの説明において、転送機能付きピアを待ち合わせ機能付きピアに言い換えた処理を実行すると考えることができる。
【００８０】
また、中継機能付きピアは、基本的には所謂ゲートウェイとしての動作をするピアである。中継機能付きピアは、まず、例えば自ピアに記憶された設定情報に予め設定された他のピアに対して、又はマルチキャストやブロードキャストにより他のピアに対して、グループ情報やユーザ情報等の各種情報を送信するよう要求し、これらの情報を取得しておく。そして、他ピアからメッセージを受信した場合には、送信先として指定されたピアにメッセージを転送する。
【００８１】
次に、待ち合わせ機能付きピアで実行される処理について、図１１に示すフローチャートを参照して説明する。
【００８２】
まず、ステップ３００において、例えば自ピアに記憶された設定情報に予め設定された他の転送機能付きピアに対して、又はマルチキャストやブロードキャストによって、他のピアに対してグループ情報やユーザ情報等の各種情報を送信するよう要求する。
【００８３】
ステップ３０２では、他ピアから何らかの情報、例えばステップ３００で要求したグループやユーザ情報等の情報や、他ピアからの告知情報等を受信したか否かを判断し、受信した場合には、ステップ３０４へ移行し、受信していない場合には、ステップ３０６へ移行する。
【００８４】
ステップ３０４では、他ピアから受信した情報をＰ２Ｐ基盤管理データ記憶部１８に記憶させる。例えば受信した情報がグループ情報であればグループ情報１８ＢとしてＰ２Ｐ基盤管理データ記憶部１８に記憶させ、受信した情報がユーザ情報であればユーザ情報１８ＥとしてＰ２Ｐ基盤管理データ記憶部１８に記憶させる。
【００８５】
ステップ３０６では、エンドピアから何らかのサービス提供又は情報提供を要求する要求メッセージを受信したか否かを判断し、受信している場合には、ステップ３０８へ移行し、受信していない場合には、ステップ３０２へ戻って上記と同様の処理を繰り返す。
【００８６】
ステップ３０８では、要求メッセージに対応した情報が自ピアのＰ２Ｐ基盤管理データ記憶部１８に記憶されているか否かを判断し、記憶されている場合には、ステップ３１０へ移行し、記憶されていない場合には、ステップ３１２へ移行する。
【００８７】
ステップ３１０では、要求メッセージに対応した情報をＰ２Ｐ基盤管理データ記憶部１８から読み出して要求元のピアに送信する。
【００８８】
一方、ステップ３１２では、要求メッセージを隣接のピアに転送する。これにより、要求メッセージが他ピアに伝搬される。これにより、要求メッセージに対応した処理を実行可能なピアから応答メッセージが送信される。
【００８９】
ステップ３１４では、要求メッセージに対応した処理を実行可能なピアから送信された応答メッセージを受信し、これを要求元のエンドピアに送信する。
【００９０】
ここで、ネットワーク５４のピア５４Ａが告知情報の探索要求を行う場合について説明する。この場合、ピア５４Ａは、待ち合わせ機能付きピアを検索し、検索された待ち合わせ機能付きピア５２Ｃに告知情報の探索要求メッセージを送信する。これにより待ち合わせ機能付きピア５２Ｃは、自ピアに他ピアの告知情報が蓄積されていれば、これをピア５４Ａに送信し、蓄積されていない場合には、例えば隣のピア５２Ａ、５２Ｂ等に告知情報を送信するよう要求する。このとき、ピア５２Ａは、自ピアの告知情報と、自ピアに記憶されている他ピアの告知情報、例えばピア５６Ａの告知情報がすでに記憶されている場合には、その告知情報とを待ち合わせ機能付きピア５２Ｃに送信する。ピア５２Ｃについても同様である。待ち合わせ機能付きピア５４Ｃは、他ピアから送信された告知情報を蓄積すると共に、ピア５４Ａに送信する。
【００９１】
以上のように、待ち合わせ機能付きピアは、他ピアから送信された告知情報等の各種情報を自ピアに蓄積しておき、エンドピアからの要求に対応した情報が自ピアに記憶されている場合には、その情報をエンドピアに送信する。従って、Ｐ２Ｐネットワーク１１のように大規模なネットワークにおけるメッセージの送受信の効率を向上させることができる。
【００９２】
次に、アプリケーション実行の具体例として、アプリケーションがファイル共有サービスの場合におけるアプリケーション実行部２０の処理について説明する。
【００９３】
この場合、アプリケーション実行部２０は、ファイル名等の所望のファイルを特定するための情報を少なくとも含んだファイル探索要求をメッセージ制御部２４のメッセージディスパッチ部３６に通知する。メッセージディスパッチ部３６では、このファイルを所有するピアを探索するようピア探索サービス部３８に対して要求する。これにより、ピア探索サービス部３８によって所望のファイルを所有するピアが探索され、アプリケーション実行部２０に通知される。そして、アプリケーション実行部２０では、探索されたピアに対してファイルを送信するよう要求し、取得する。なお、所望のファイルを所有しているピアの情報を既に取得しており、自ピアに記憶されていた場合には、ピア探索を実行せずに、直接そのピアにファイル送信要求を送信してファイルを取得すればよい。
【００９４】
このように、アプリケーション実行部２０は、メッセージ制御部２４を介して他ピアとメッセージの送受信を行い、サービスを提供する。
【００９５】
なお、Ｐ２Ｐネットワークの構築について上記は一例であり、例えば上記特許文献１に記載されたプロトコルや、ＪＸＴＡプロトコルのＰＤＰ（Peer Discovery Protocol：ピア発見プロトコル）、ＰＲＰ（Peer Resolver Protocol：ピア解決プロトコル）、ＰＩＰ（Peer Information Protocol：ピア情報プロトコル）、ＰＭＰ（Peer Membership Protocol：ピアメンバーシッププロトコル）、ＰＢＰ（Peer Binding Protocol：ピアバインディングプロトコル）、ＰＥＰ（Peer Endpoint Protocol：ピアエンドポイントプロトコル）等の公知のプロトコルを用いてＰ２Ｐネットワークを構築してもよい。
【００９６】
次に、本実施形態に係るＰ２Ｐネットワークの具体的な形態として、図１２に示すように、ピアとしての複合機１２Ａ〜１２Ｃ、パーソナルコンピュータ（以下、ＰＣ）１２Ｄを含むＰ２Ｐネットワークが構築されている場合を例に説明する。
【００９７】
複合機１２Ａ〜１２Ｃは、基本的に上記で説明した図５、６に示したピア１２の機能を有しており、その他は、例えばプリンタ機能、スキャナ機能、コピー機能等を含んで構成された汎用的な複合機と同様の構成である。また、ＰＣ１２Ｄも基本的に上記で説明した図５、６に示したピア１２の機能を有しており、その他は、汎用的なパーソナルコンピュータと同様の構成である。
【００９８】
各ピアのアプリケーション実行部２０は、図１３に示すように、ジョブ処理部７０、ジョブ分割部７２、を含んで構成されている。なお、ここでは、説明の簡単のため、ジョブの分割処理等に必要な機能部のみを示している。後述のアプリケーションメモリ２２についても同様である。
【００９９】
ジョブ処理部７０は、ピアが複合機の場合には、例えばプリント処理、スキャン処理、ファックス送受信等の各種処理を実行する機能を有し、ピアがＰＣの場合には、例えば画像処理等の各種処理を実行する機能を有する。
【０１００】
ジョブ分割部７２は、詳細は後述するが、自ピアでジョブが発生した場合に、そのジョブを分割した分割ジョブを生成し、他ピアへ処理を依頼する等の処理を実行する機能を有する。
【０１０１】
また、各ピアのアプリケーションメモリ２２には、詳細は後述するが、ジョブテーブル７４、ジョブ処理記述データ７６、分割ジョブデータ７８、機能一覧データ８０等が記憶される。
【０１０２】
次に、複合機１２Ａでジョブが発生した場合における複合機１２Ａが実行する処理と、他のピア、すなわち複合機１２Ｂ、１２ＣやＰＣ１２Ｄで実行される処理について、図１４及び図１５に示すフローチャートを参照して説明する。
【０１０３】
なお、Ｐ２Ｐネットワーク上の各ピアは、実際には図１４及び図１５に示す処理を両方行うが、ここでは説明を簡単にするため、ジョブが発生したピアの処理と、そのジョブを分割した分割ジョブを実行するピアの処理とを分けて説明する。
【０１０４】
まず、複合機１２Ａのアプリケーション実行部２０で実行されるジョブ実行処理について、図１４に示すフローチャートを参照して説明する。この処理は、複合機１２Ａにおいて、ユーザの操作により又はネットワークに接続された他ピアからの指示により、例えばコピー処理、プリント処理、ファクス送信等、何らかのジョブの実行を指示された場合に実行される。
【０１０５】
なお、ジョブの実行は、ジョブデータに基づいて行われ、例えばジョブデータは、そのジョブの処理内容やその処理に関する各種パラメータが記述されたジョブ処理記述データ７６と、処理内容記述データ７６に従って処理される処理対象のデータ（例えば画像データ、文書データ等）と、を含んで構成される。
【０１０６】
ステップ４００では、指示されたジョブが実行不可であるか否かを、例えば自ピアの処理負荷の状態等に基づいて判断する。例えば、処理負荷の状態は、実行中のジョブや待機中のジョブの数等に基づいて判断することができる。この場合、実行中及び待機中のジョブ数が所定値以上の場合に指示されたジョブが実行不可であると判断することができる。また、ジョブ数だけでなく、そのジョブの内容を考慮して処理負荷の状態を判断してもよい。例えば印刷枚数や印刷用紙のサイズ、印刷内容（カラー印刷か白黒印刷か、各種画像処理の実行の有無、パンチング、ステープラ等のフィニッシャ処理の有無等）等に基づいて判断してもよい。
【０１０７】
そして、指示されたジョブを実行不可であると判断した場合には、ステップ４０２へ移行し、ジョブを実行できると判断した場合には、ステップ４２２へ移行する。
【０１０８】
ステップ４０２では、ジョブの分割処理をジョブ分割部７０により実行する。すなわち、ジョブデータを所定の分割単位に従って分割した分割ジョブデータ７８を生成してアプリケーションメモリ２２に記憶する。
【０１０９】
ジョブの分割単位としては、例えば処理内容、ページ数等がある。処理内容で分割する場合には、例えばジョブがある画像データを印刷する処理であって、その処理内容がデコンポーズ処理、ラスタデータのスムージング処理、黒点除去処理、印刷処理であった場合、これらの各処理にジョブを分割した分割ジョブデータ７８を生成する。また、ページ数で分割する場合、所定ページ数毎にジョブを分割した分割ジョブデータ７８を生成する。なお、各分割ジョブデータには、各ジョブに固有のジョブ番号を付与する。例えば、このジョブ番号を、分割ジョブの処理の優先順位を示す番号としてもよい。上記の例のように、画像データを印刷するような処理の場合、デコンポーズ処理を実行した後でなければ、その後の処理を実行できない。このような場合には、処理順序（優先順位）に従ってジョブ番号を付与し、このジョブ番号の順に処理を実行させるようにしてもよい。
【０１１０】
そして、ステップ４０４では、他ピアへ分割ジョブの実行を依頼する。具体的には、ジョブ処理記述データをネットワークに接続された他ピア、すなわち複合機１２Ｂ、１２Ｃ、ＰＣ１２Ｄへ送信する。他ピアでは、受信したジョブ処理記述データ７６を参照して、実行可能な処理があるか否かを判断し、実行可能な処理があれば実行可能な処理を記述した実行可能メッセージを送信し、実行不可能であれば実行不可能を示す実行不可メッセージを送信する。
【０１１１】
ステップ４０６では、分割ジョブの実行の依頼に対する対応処理を実行する。具体的には、他ピアからの応答メッセージを受信し、受信した応答メッセージが実行可能メッセージである場合には、そのピアが実行可能な処理に対応した分割ジョブデータ７８をそのピアに対して送信する。なお、ジョブ番号が処理の優先順位を示す番号である場合には、最初に実行すべき分割ジョブの分割ジョブデータ７８を該当するピアに送信する。
【０１１２】
ステップ４０８では、ジョブテーブル７４を作成してアプリケーションメモリ２２に記憶する。具体的には、他ピアから送信された各応答メッセージのうち、実行可能メッセージを含む場合には、そのピアが実行する分割ジョブのジョブ番号と、そのピアを特定するための情報、例えばピアＩＤと、の対応関係を記述したジョブテーブル７４を作成してアプリケーションメモリ２２に記憶する。また、自ピアで実行可能な分割ジョブがある場合には、自ピアについてもジョブテーブル７４に登録する。
【０１１３】
ステップ４１０では、他ピアから処理結果を受信したか否かを判断し、処理結果を受信した場合にはステップ４１２へ移行し、受信していない場合にはステップ４１４へ移行する。処理結果には、正常に分割ジョブを終了したか否かを示すメッセージや処理後の分割ジョブデータが含まれる。
【０１１４】
ステップ４１２では、受信した処理結果に対する対応処理を実行する。例えば、正常に分割ジョブを終了した場合には、ジョブテーブル７４から、その分割ジョブのレコードを削除すると共に、その分割ジョブデータ７８を削除する。一方、正常に分割ジョブを終了していない場合には、ステップ４０４と同様に他ピアに分割ジョブの実行を依頼し、ステップ４０６と同様に対応処理を行う。
【０１１５】
ステップ４１４では、自ピアで実行すべき分割ジョブがあるか否かを判断する。これはステップ４０８で作成したジョブテーブル７４を参照することにより判断することができる。そして、自ピアで実行可能な分割ジョブがある場合には、ステップ４１６へ移行して分割ジョブを実行し、自ピアで実行可能な分割ジョブがない場合には、ステップ４１０へ戻って上記と同様の処理を繰り返す。なお、ジョブテーブル７４に自ピアが実行すべき分割ジョブが登録されていない場合であっても、自ピアの処理負荷の状態を再度判断し、自ピアで実行できる状態であれば、その時点でジョブテーブル７４に登録し、自ピアで分割ジョブを実行するようにしてもよい。
【０１１６】
ステップ４１６で分割ジョブを実行した後は、ステップ４１８において、ジョブテーブルを書き換える。すなわち、ジョブテーブル７４から、実行した分割ジョブのレコードを削除する。
【０１１７】
ステップ４２０では、全ての分割ジョブの実行が終了したか否かを判断する。これは、ジョブテーブル７４に登録された分割ジョブが全て削除されたか否かを判断すればよい。そして、全ての分割ジョブの実行が終了した場合には本ルーチンを終了し、終了していない場合には、ステップ４１０へ戻って上記と同様の処理を行う。
【０１１８】
次に、複合機１２Ｂ、１２Ｃ、ＰＣ１２Ｄのアプリケーション実行部２０で実行されるジョブ実行処理について、図１５に示すフローチャートを参照して説明する。この処理は、複合機１２Ａから分割ジョブの実行を依頼された場合、すなわちジョブ処理記述データ７６を受信した場合に実行される。
【０１１９】
ステップ５００では、分割ジョブを実行可能であるか否かを判断する。具体的には、受信したジョブ処理記述データ７６に記述された処理内容と、アプリケーションメモリ２２に予め記憶された機能一覧データ８０に記述された自ピアで処理可能な機能とを比較し、一致するものが存在する場合には、その処理を実行可能であると判断し、一致するものが存在しない場合には、実行不可であると判断する。また、実行中のジョブや待機中のジョブの数等に基づいて自ピアの負荷状態を判断し、処理内容としては実行可能であっても、負荷状態が一定レベル以上の場合には実行不可であると判断するようにしてもよい。
【０１２０】
そして、分割ジョブを実行可能であると判断した場合には、ステップ５０２へ移行し、実行可能であることを示す実行可能メッセージを依頼元のピア、すなわち複合機１２Ａに送信し、分割ジョブを実行不可であると判断した場合には、ステップ５１０へ移行して実行不可であることを示す実行不可メッセージを依頼元のピアに送信する。
【０１２１】
ステップ５０４では、依頼元のピアから処理対象である分割ジョブデータを受信したか否かを判断し、受信していない場合には受信するまで待機し、受信した場合には、ステップ５０６へ移行する。
【０１２２】
ステップ５０６では、分割ジョブをジョブ処理部７０により実行し、ステップ５０８において、処理結果を依頼元のピアに送信する。例えば分割ジョブを正常に実行できなかった場合には、例えばその旨を示すメッセージを依頼元のピアに送信し、分割ジョブを正常に実行できた場合には、その旨を示すメッセージと共に、処理後の分割ジョブデータを依頼元のピアに送信する。
【０１２３】
このように、処理負荷が重く自ピアでジョブを実行できない場合には、ジョブを分割して他のピアに依頼して実行を代行させるため、性能の低いピアにジョブの実行が依頼された場合でも性能の高い他のピアがジョブを分担して実行することが可能となり、システム全体としての処理効率を向上させることができる。例えば、複合機１２Ａがポストスクリプト等のページ記述言語対応の複合機の場合、ポストスクリプトデータからラスタイメージデータへの変換処理のような処理負荷の高いジョブを性能の高いＰＣ１２Ｄに分担させることが可能となり、処理効率を向上させることができる。
【０１２４】
また、上記の処理を各ピアが実行することにより、従来のようなジョブサーバー等の管理用のピアを設ける必要がなく、管理者による作業も不要となり、利便性を向上させることができる。
【０１２５】
なお、本実施形態の変形例として、他ピアに分割ジョブの実行を依頼した際に、そのピアの処理実行率、例えば依頼先のピアから実行可能メッセージを受信した回数に対する、そのピアで処理を正常終了した旨を示すメッセージを受信した回数の割合を求めておき、この処理実行率が高いピアに対して優先的に分割ジョブの実行を依頼するようにしてもよい。これにより、さらに処理効率を高めることが可能となる。
【０１２６】
また、機能一覧データ８０に機能だけでなく処理能力等の情報も含めておくと共に、これを予め他のピアと交換、すなわち共有しておき、機能一覧データ８０に基づいて、処理能力の高いピアに優先的に分割ジョブの実行を依頼するようにしてもよい。
【０１２７】
また、分割ジョブを他ピアに依頼する際に、ジョブ処理記述データ７６に分割ジョブを実行するためのプログラム自体を記述して他ピアに送信するようにしてもよい。これにより、本来その分割ジョブを実行できないピアであっても、ジョブ処理記述データ７６に記述されたプログラムを実行することにより分割ジョブを実行することが可能となる。
【０１２８】
また、分割ジョブを他ピアに依頼する際に、依頼先のピアが正当な依頼先であるか否かを確認するようにしてもよい。例えば、Ｐ２Ｐグループ内で、予め定めた第１の識別符号と第２の識別符号との組み合わせを少なくとも一つ含む識別符号対応表を共有しておき、分割ジョブを他ピアに依頼する際に、第１の識別符号を送信する。そして、他ピアからこの第１の識別符号に対応した第２の識別符号を送信してもらい、これが正しいか否かを識別符号対応表に基づいて判断することにより、相手先が正当な宛先であるかを確認することができる。これにより、正当でないピアに分割ジョブを依頼するのを防ぐことができ、システムの信頼性を向上させることができる。
【０１２９】
また、本実施形態では、ピアが複合機及びＰＣの場合について説明したが、これに限らず、他の装置にも本発明を適用可能であることはいうまでもない。
【０１３０】
また、本実施形態では、複合機１２Ｂ等において分割ジョブが実行され（図１５のステップ５０６）、正常に実行できなかった場合に、これが複合機１２Ａに通知され（同図のステップ５０８）、複合機１２Ａにおいて他ピアに処理が依頼される（図１４のステップ４１２）ようにしているが、以下、応用例として、プリントジョブを実行中にプリンタに障害が発生した場合における各ピアの処理について説明する。なお、以下ではプリントジョブを例に説明するが、ジョブの種類はプリントジョブに限られるものではない。
【０１３１】
ここでは、図１６に示すように、プリント指示ピア１２Ｅ、プリントジョブを処理するプリントジョブ処理ピア１２Ｆ、プリント処理を行うプリントピア１２Ｇを各々複数含んでＰ２Ｐネットワークが構築されている場合を例に説明する。
【０１３２】
プリント指示ピア１２Ｅ、プリントジョブ処理ピア１２Ｆ、プリントピア１２Ｇは、基本的に上記で説明した図５、６に示したピア１２の機能を有する他、プリント指示ピア１２Ｅはプリントを指示する機能等を、プリントジョブ処理ピア１２Ｆはプリントジョブを処理してＰＤＬ（Page Description Language）データを作成する機能等を、プリントピア１２Ｇはプリント処理を行う機能等を有している。なお、以下では、説明の簡略化のために、各ピアは、それぞれの処理を専用で行うピアとして説明する。
【０１３３】
プリント指示ピア１２Ｅのアプリケーション実行部２０は、図１７に示すように、ユーザインタフェース部８２Ａ及びプリントジョブ作成部８２Ｂを含んで構成されている。なお、ここでは、説明の簡単のため、プリントの指示に関して必要な機能部のみを示している。後述のアプリケーションメモリ２２についても同様であり、また、他のピアについても同様である。
【０１３４】
ユーザインタフェース部８２Ａは、ユーザによる図示しない操作部の操作を受け付ける機能を有する。ユーザは、操作部を操作して例えばそのピアのアプリケーションメモリ２２に記憶されたアプリケーションデータ８４Ａを指定してプリントの実行を指示する。なお、他ピアに記憶されているデータを指定できるようにしてもよい。
【０１３５】
プリントジョブ作成部８４Ｂは、ユーザにより指示された指示内容をもとにプリントジョブデータ８４Ｂを作成する。作成されたプリントジョブデータ８４Ｂは、アプリケーションメモリ２２に記憶される。
【０１３６】
プリントジョブデータ８４Ｂには、プリント対象のアプリケーションデータ及びプリントジョブ属性情報が含まれる。プリントジョブ属性情報には、例えば印刷用紙のサイズ、印刷部数、ページ数、カラー印刷等の印刷の種類を指定する情報、両面印刷等の印刷面を指定する情報、各種画像処理の実行の有無を指定する情報、パンチング、ステープラ等のフィニッシャ処理の有無を指定する情報等が含まれる。
【０１３７】
アプリケーションメモリ２２には、アプリケーションデータ８４Ａ、プリントジョブデータ８４Ｂ、プリンタ情報８４Ｃ等が記憶される。
【０１３８】
プリンタ情報８４Ｃは、プリンタ（プリントピア）の能力や機能に関する能力情報、プリンタの現在のステータスに関するステータス情報、プリンタで処理するジョブの動作状況に関する動作情報等がＰ２Ｐネットワークに接続されたプリンタの数分含まれて構成される。能力情報には、ＰＰＭ（１分間当たりの印刷可能枚数）、カラー印刷、両面印刷、各種画像処理、パンチング、ステープラ等の機能の有無に関する情報、対応可能なＰＤＬの種類の情報等が含まれる。ステータス情報には、紙詰まり、紙切れ、トナー切れの有無、ドアの開閉状況等の情報が含まれる。動作情報には、受け付けたプリントジョブの数や各プリントジョブの情報等（ページ数等）が含まれる。
【０１３９】
このプリンタ情報８４Ｃは、Ｐ２Ｐネットワーク内で共有され、各ピアには最新のプリンタ情報が記憶される。すなわち、例えばプリンタに紙詰まり等の障害が発生した場合、これがＰ２Ｐネットワーク内の各ピアに通知され、共有される。
【０１４０】
プリントジョブ処理ピア１２Ｆのアプリケーション実行部２０は、図１８に示すように、プリントジョブ処理部８６Ａ、プリントジョブ分割部８６Ｂを含んで構成されている。
【０１４１】
プリントジョブ処理部８６Ａは、プリントジョブデータに基づいて、アプリケーションデータからＰＤＬデータを作成する。
【０１４２】
プリントジョブ分割部８６Ｂは、プリントジョブを分割する必要が生じた場合に、プリントジョブデータを複数のプリントジョブデータに分割する。
【０１４３】
プリントジョブ処理ピア１２Ｆのアプリケーションメモリ２２には、プリントジョブデータ８８Ａ、プリンタ情報８８Ｂ等が記憶される。
【０１４４】
プリントピア１２Ｇのアプリケーション実行部２０は、図１９に示すように、プリント実行部９０を含んで構成されている。
【０１４５】
プリント実行部９０は、プリントジョブ処理ピア１２Ｆで作成されたＰＤＬデータに基づいてプリント処理を実行する。
【０１４６】
プリントジョブ処理ピア１２Ｇのアプリケーションメモリ２２には、プリントジョブデータ９２Ａ、プリンタ情報９２Ｂ等が記憶される。
【０１４７】
次に、各ピアで実行される処理について、図２０乃至図２２に示すフローチャートを参照して説明する。なお、各ピアで共有されるプリンタ情報は、常に最新の情報に更新されているものとする。
【０１４８】
まず、プリント指示ピア１２Ｅのアプリケーション実行部２０で実行される処理について、図２０に示すフローチャートを参照して説明する。
【０１４９】
ステップ６００において、ユーザによりプリント対象のアプリケーションデータの指定やプリンタの指定等を含むプリントを指示する操作が有ったか否かを判断し、プリントの指示が有った場合には、ステップ６０２へ移行し、プリントの指示が無い場合には、プリントの指示があるまで待機する。
【０１５０】
ステップ６０２では、指示内容に従ってプリントジョブデータを作成し、アプリケーションメモリ２２に記憶する。
【０１５１】
ステップ６０４では、作成したプリントジョブデータ８４ＢをＰ２Ｐネットワークの他のピアへ送信する。これにより、プリントジョブデータ８４ＢはＰ２Ｐネットワークで共有される。
【０１５２】
次に、プリントジョブ処理ピア１２Ｆのアプリケーション実行部２０で実行される処理について、図２１に示すフローチャートを参照して説明する。
【０１５３】
まず、ステップ７００で、他ピア、すなわちプリント指示ピア１２Ｅから送信されたプリントジョブデータ８４Ｂを受信したか否かを判断し、受信していない場合には受信するまで待機し、受信した場合にはステップ７０２へ移行する。
【０１５４】
ステップ７０２では、そのプリントジョブを実行可能か否かを自ピアの機能や処理負荷の状態等に基づいて判断し、実行可能でない場合はステップ７００へ移行し、実行可能な場合には、ステップ７０４へ移行する。
【０１５５】
ステップ７０４では、プリントジョブをロックし、これを他ピアへ通知する。すなわち、他ピアで同じ処理が行われないように、他ピアに対してこのプリントジョブの実行を不可とする情報を他ピアへ通知する。これにより、他ピアでは、そのプリントジョブの実行が禁止される。
【０１５６】
ステップ７０６では、受信したプリントジョブデータに基づいて、ＰＤＬデータを作成し、これをプリントジョブデータ８８Ａとしてアプリケーションメモリ２２に記憶する。
【０１５７】
ステップ７０８では、プリントジョブデータ８８Ａを分割する必要があるか否かを判断し、分割する必要がある場合にはステップ７１０へ移行し、分割する必要がない場合には、ステップ７１２へ移行する。
【０１５８】
分割する必要があるか否かは、例えばプリンタ情報８８Ｂの動作情報を参照し、各プリントピアの処理負荷を判断することにより行う。そして、各プリントピアの処理負荷からジョブを分割した方が処理時間が速いと判断した場合には、ステップ７１０でプリントジョブデータ８８Ａを分割し、分割プリントジョブデータを作成する。分割は、例えば所定ページ数毎に行うことができる。
【０１５９】
ステップ７１２では、プリンタ情報８８Ｂのステータス情報や動作情報を参照し、プリントジョブ又は分割プリントジョブを実行させるプリンタの割り当てを行い、これらのジョブデータに割り当てたプリンタを特定するための情報を含める。
【０１６０】
ステップ７１４では、プリントジョブデータ又は分割プリントジョブデータを送信すると共に、これらのプリントジョブのロックを解除することを他ピアへ通知する。これにより、指定されたプリントピアにおいてプリントジョブが実行される。
【０１６１】
ステップ７１６では、プリンタ情報８８Ａのステータス情報を参照し、プリントジョブの実行を指示したプリントピアにおいて紙詰まり等の障害が発生したか否かを判断し、障害が発生している場合にはステップ７１８へ移行し、障害が発生していない場合には、ステップ７００へ戻って上記と同様の処理を繰り返す。
【０１６２】
ステップ７１８では、障害が発生したプリントピアで実行されているプリントジョブをロックする旨を他ピアへ通知し、ステップ７０８へ戻って上記と同様の処理を繰り返す。これにより、障害が発生していない他のプリントピアにおいてプリントジョブが実行される。
【０１６３】
次に、プリントピア１２Ｇのアプリケーション実行部２０で実行される処理について、図２２に示すフローチャートを参照して説明する。
【０１６４】
まず、ステップ８００で、他ピア、すなわちプリントジョブ処理ピア１２Ｆから送信されたプリントジョブデータ又は分割プリントジョブデータを受信したか否かを判断し、受信していない場合には受信するまで待機し、受信した場合には、ステップ８０２へ移行する。
【０１６５】
ステップ８０２では、受信したプリントジョブデータ又は分割プリントジョブデータが自ピア宛であるか否かを判断し、自ピア宛である場合にはステップ８０４へ移行し、自ピア宛でない場合にはステップ８００へ戻る。
【０１６６】
ステップ８０４では、受信したプリントジョブデータ又は分割プリントジョブデータの内容に従ってプリントを実行し、ステップ８０６では、プリント実行に際して紙詰まり等の障害が発生し、正常終了しなかったか否かを判断する。そして、正常終了しなかった場合にはステップ８０８へ移行し、正常終了した場合にはステップ８１０へ移行する。
【０１６７】
ステップ８０８では、発生した障害の内容を他ピアへ通知して、ステップ８００へ戻る。ステップ８１０では正常終了処理、例えば処理したプリントジョブが正常終了した旨を他ピアへ通知すると共に、そのプリントジョブデータ又は分割プリントジョブデータを自ピアから削除する。また、プリントジョブデータ又は分割プリントジョブデータを削除せず、プリントジョブ属性情報に属性情報として正常終了した旨を登録するようにしてもよい。この場合、再プリントの指示があった場合に即座にプリントを実行することができる。
【０１６８】
このように、障害が発生した場合には、状況に応じてプリントジョブを分割して分散処理させることができるので、耐障害性を高めることができる。
【０１６９】
なお、上記では、アプリケーションデータが含まれたプリントジョブデータがＰ２Ｐネットワーク上の各ピアでコピーされて共有されるリアルタイムモードの場合について説明したが、これに限らず、プリントジョブ属性情報のみ共有し、必要になった時点でアプリケーションデータをダウンロードするダウンロードモードでプリントジョブを実行するようにしてもよい。
【図面の簡単な説明】
【０１７０】
【図１】Ｐ２Ｐネットワークのネットワーク構成図である。
【図２】ピュアＰ２Ｐのネットワーク構成図である。
【図３】ハイブリッドＰ２Ｐのネットワーク構成図である。
【図４】Ｐ２Ｐネットワークのグループについて説明するための概念図である。
【図５】ピアの基本的構成のブロック図である。
【図６】メッセージ制御部のブロック図である。
【図７】エンドピアで実行される処理のフローチャートである。
【図８】転送機能付きピアで実行される処理のフローチャートである。
【図９】スパニングツリーのイメージ図である。
【図１０】Ｐ２Ｐネットワークの他の形態のネットワーク構成図である。
【図１１】待ち合わせ機能付きピアで実行される処理のフローチャートである。
【図１２】Ｐ２Ｐネットワークの具体例を示すネットワーク構成図である。
【図１３】アプリケーション実行部及びアプリケーションメモリの概略構成を示す機能ブロック図である。
【図１４】ジョブが発生したピアにおいて実行される処理のフローチャートである。
【図１５】分割ジョブの実行を依頼されたピアにおいて実行される処理のフローチャートである。
【図１６】Ｐ２Ｐネットワークの具体例を示すネットワーク構成図である。
【図１７】プリント指示ピアのアプリケーション実行部及びアプリケーションメモリの概略構成を示す機能ブロック図である。
【図１８】プリントジョブ処理ピアのアプリケーション実行部及びアプリケーションメモリの概略構成を示す機能ブロック図である。
【図１９】プリントピアのアプリケーション実行部及びアプリケーションメモリの概略構成を示す機能ブロック図である。
【図２０】プリント指示ピアのアプリケーション実行部で実行される処理のフローチャートである。
【図２１】プリントジョブ処理ピアのアプリケーション実行部で実行される処理のフローチャートである。
【図２２】プリントピアのアプリケーション実行部で実行される処理のフローチャートである。
【符号の説明】
【０１７１】
１０、１１      Ｐ２Ｐネットワーク
１２      ピア
１６      Ｐ２Ｐ基盤構成部
１８      Ｐ２Ｐ基盤管理データ記憶部
２０      アプリケーション実行部
２２      アプリケーションメモリ
２４      メッセージ制御部
２６      データ管理部
２８      送信部
３０      受信部
３２      ネットワーク
３４      サービス実行部
３６      メッセージディスパッチ部
３８      ピア探索サービス部
４０      告知情報公開サービス部
４２      告知情報取得サービス部
４４      グループ管理サービス部
４６      ユーザ管理サービス部
４８      ピア管理サービス部
【図１】
2006268166.tif 000003
【図２】
2006268166.tif 000004
【図３】
2006268166.tif 000005
【図４】
2006268166.tif 000006
【図５】
2006268166.tif 000007
【図６】
2006268166.tif 000008
【図７】
2006268166.tif 000009
【図８】
2006268166.tif 000010
【図９】
2006268166.tif 000011
【図１０】
2006268166.tif 000012
【図１１】
2006268166.tif 000013
【図１２】
2006268166.tif 000014
【図１３】
2006268166.tif 000015
【図１４】
2006268166.tif 000016
【図１５】
2006268166.tif 000017
【図１６】
2006268166.tif 000018
【図１７】
2006268166.tif 000019
【図１８】
2006268166.tif 000020
【図１９】
2006268166.tif 000021
【図２０】
2006268166.tif 000022
【図２１】
2006268166.tif 000023
【図２２】
2006268166.tif 000024