(57)【要約】【課題】オブジェクト間の連携処理を動的かつ柔軟に行うことができるオブジェクト連携装置、オブジェクト連携方法、プログラム、および記録媒体を提供する。【解決手段】オブジェクト同士が連携処理を行う際に、各オブジェクトの内部処理に用いた設定情報の条件等を確認し、条件が満たされず不整合が発生した場合には、当該条件を満たすように条件を変更して不整合を解消させることができるので、従来のコンピュータネットワーク通信のように予めオブジェクト同士が連携処理を行う他のオブジェクトの内部関数を関知している必要がなく、オブジェクト間の連携処理の自由度が増すことができる。【選択図】        図５
2010072880.tif 000002
【特許請求の範囲】
【請求項１】
設定情報を用いて固有の内部処理を実行する他装置と連携して自装置の内部処理を実行するオブジェクト連携装置であって、
他装置が内部処理に用いた前記設定情報であって、自装置の内部処理を実行するために要求される当該設定情報の条件を示す実行判断情報を記憶する実行判断情報記憶手段と、
自装置の内部処理の実行を要求するものであって、他装置が内部処理に用いた前記設定情報を含むメッセージを受信する受信手段と、
受信した前記メッセージが含む前記設定情報が、記憶する前記実行判断情報が示す前記設定情報の条件に該当するか否かを判断する判断手段と、
受信した前記メッセージが含む前記設定情報が、記憶する前記実行判断情報が示す前記設定情報の条件に該当しないと判断した場合、自装置の内部処理が実行できない原因を通知する不整合通知メッセージを生成する生成手段と、
生成した前記不整合通知メッセージを、受信した前記メッセージの送信元である他装置に送信する送信手段と、
を備えたことを特徴とするオブジェクト連携装置。
【請求項２】
自装置の内部処理に用いる前記設定情報を記憶する設定情報記憶手段と、
受信した前記メッセージが含む前記設定情報が、記憶する前記実行判断情報が示す前記設定情報の条件に該当した場合、記憶する前記設定情報を用いて内部処理を実行する実行手段と、をさらに備え、
前記送信手段は、内部処理に用いた前記設定情報を含む前記メッセージを、自装置と連携処理を行う他装置に送信し、
前記受信手段は、さらに、前記不整合通知メッセージを受信し、
前記実行手段は、さらに、前記不整合通知メッセージに含まれる原因に応じて前記設定情報記憶手段から前記設定情報を抽出し、抽出した前記設定情報を用いて、再度、内部処理を実行することを特徴とする請求項１に記載のオブジェクト連携装置。
【請求項３】
記憶する前記設定情報を用いて内部処理を仮実行する仮実行手段をさらに備え、
前記送信手段は、さらに、仮実行に用いた前記設定情報を含むメッセージを内部処理に用いた前記設定情報を含む前記メッセージとして送信することを特徴とする請求項２に記載のオブジェクト連携装置。
【請求項４】
前記送信手段は、さらに、内部処理が実行されたことを示す処理結果メッセージを、受信した前記メッセージの送信元である他装置に送信することを特徴とする請求項２または３に記載のオブジェクト連携装置。
【請求項５】
設定情報を用いて固有の内部処理を実行する他装置と連携して自装置の内部処理を実行するオブジェクト連携装置のオブジェクト連携方法であって、
実行判断情報記憶手段が、他装置が内部処理に用いた前記設定情報であって、自装置の内部処理を実行するために要求される当該設定情報の条件を示す実行判断情報を記憶する実行判断情報記憶工程と、
受信手段が、自装置の内部処理の実行を要求するものであって、他装置が内部処理に用いた前記設定情報を含むメッセージを受信する受信工程と、
判断手段が、受信した前記メッセージが含む前記設定情報が、記憶する前記実行判断情報が示す前記設定情報の条件に該当するか否かを判断する判断工程と、
生成手段が、受信した前記メッセージが含む前記設定情報が、記憶する前記実行判断情報が示す前記設定情報の条件に該当しないと判断した場合、自装置の内部処理が実行できない原因を通知する不整合通知メッセージを生成する生成工程と、
送信手段が、生成した前記不整合通知メッセージを、受信した前記メッセージの送信元である他装置に送信する送信工程と、
を有することを特徴とするオブジェクト連携方法。
【請求項６】
設定情報記憶手段が、自装置の内部処理に用いる前記設定情報を記憶する設定情報記憶工程と、
実行手段が、受信した前記メッセージが含む前記設定情報が、記憶する前記実行判断情報が示す前記設定情報の条件に該当した場合、記憶する前記設定情報を用いて内部処理を実行する実行工程と、をさらに有し、
前記送信工程は、内部処理に用いた前記設定情報を含む前記メッセージを、自装置と連携処理を行う他装置に送信し、
前記受信工程は、さらに、前記不整合通知メッセージを受信し、
前記実行工程は、さらに、前記不整合通知メッセージに含まれる原因に応じて前記記憶手段から前記設定情報を抽出し、抽出した前記設定情報を用いて、再度、内部処理を実行することを特徴とする請求項５に記載のオブジェクト連携方法。
【請求項７】
仮実行手段が、記憶する前記設定情報を用いて内部処理を仮実行する仮実行工程をさらに有し、
前記送信工程は、さらに、仮実行に用いた前記設定情報を含むメッセージを内部処理に用いた前記設定情報を含む前記メッセージとして送信することを特徴とする請求項６に記載のオブジェクト連携方法。
【請求項８】
前記送信工程は、さらに、内部処理が実行されたことを示す処理結果メッセージを、受信した前記メッセージの送信元である他装置に送信することを特徴とする請求項６または７に記載のオブジェクト連携方法。
【請求項９】
請求項５から８のいずれか一に記載のオブジェクト連携方法の各工程をコンピュータに実行させるためのプログラム。
【請求項１０】
請求項５から８のいずれか一に記載のオブジェクト連携方法の各工程をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オブジェクト連携装置、オブジェクト連携方法、プログラム、および記録媒体に関するものである。
【背景技術】
【０００２】
近年、ネットワーク化の進展に伴い、ネットワーク上に分散した複数のオブジェクトが互いに連携して処理を行うシステムが増えている。このような複数のオブジェクトが互いに連携して処理を行うための技術として、オブジェクト指向型プログラミングやコンポーネント技術などがある。
【０００３】
例えば、特許文献１は、ネットワークに接続されたオブジェクトとオブジェクトまたはコンピュータとコンピュータを連携させてシステムを構築するオブジェクト連携装置が提案されている。具体的には、特許文献１に記載のオブジェクト連携装置は、連携関係にないオブジェクト間に連携関係を構築したり、構築された連携関係の間に新しいオブジェクトを加えて新たな連携関係を構築するものである。これにより、オブジェクトの連携関係におけるオブジェクトの参加や離脱に柔軟に対応することができるので、オブジェクトが互いに連携するシステムを柔軟に構築することができる。
【０００４】
【特許文献１】特許第３７２７２４３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、実際にオブジェクトが他のオブジェクトと連携して処理を実行する場合、オブジェクトは、他のオブジェクトが固有に実行する内部処理に用いるパラメータ等の設定情報を把握しておく必要がある。
【０００６】
例えば、設定情報が誤って設定された場合やオブジェクトが連携するために必要な事前条件を他のオブジェクトが満たしていなかった場合、オブジェクト同士が連携して処理を行えない不整合と呼ばれる事態が発生することがある。このため、オブジェクト同士が連携して処理を行えない場合には、連携して処理を行う段階において、オブジェクト内で設定情報を再設定したり、他のオブジェクトに事前条件を満たさせることで不整合の発生を防止することが望ましい。
【０００７】
しかしながら、上記特許文献１に記載のオブジェクト連携装置では、オブジェクトと連携できるか否かの判断は行われているものの、オブジェクトが連携して処理を行えない不整合が発生した場合に、当該不整合を解消させる方法が考慮されていないため、実際にオブジェクトが連携して処理を行う段階において柔軟にオブジェクトを連携させることができない、という問題がある。
【０００８】
本発明は、上記に鑑みてなされたものであって、オブジェクト間の連携処理を動的かつ柔軟に行うことができるオブジェクト連携装置、オブジェクト連携方法、プログラム、および記録媒体を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、請求項１にかかる発明は、設定情報を用いて固有の内部処理を実行する他装置と連携して自装置の内部処理を実行するオブジェクト連携装置であって、他装置が内部処理に用いた前記設定情報であって、自装置の内部処理を実行するために要求される当該設定情報の条件を示す実行判断情報を記憶する実行判断情報記憶手段と、自装置の内部処理の実行を要求するものであって、他装置が内部処理に用いた前記設定情報を含むメッセージを受信する受信手段と、受信した前記メッセージが含む前記設定情報が、記憶する前記実行判断情報が示す前記設定情報の条件に該当するか否かを判断する判断手段と、受信した前記メッセージが含む前記設定情報が、記憶する前記実行判断情報が示す前記設定情報の条件に該当しないと判断した場合、自装置の内部処理が実行できない原因を通知する不整合通知メッセージを生成する生成手段と、生成した前記不整合通知メッセージを、受信した前記メッセージの送信元である他装置に送信する送信手段と、を備えたことを特徴とする。
【００１０】
また、請求項２にかかる発明は、請求項１にかかる発明において、自装置の内部処理に用いる前記設定情報を記憶する設定情報記憶手段と、受信した前記メッセージが含む前記設定情報が、記憶する前記実行判断情報が示す前記設定情報の条件に該当した場合、記憶する前記設定情報を用いて内部処理を実行する実行手段と、をさらに備え、前記送信手段は、内部処理に用いた前記設定情報を含む前記メッセージを、自装置と連携処理を行う他装置に送信し、前記受信手段は、さらに、前記不整合通知メッセージを受信し、前記実行手段は、さらに、前記不整合通知メッセージに含まれる原因に応じて前記設定情報記憶手段から前記設定情報を抽出し、抽出した前記設定情報を用いて、再度、内部処理を実行することを特徴とする。
【００１１】
また、請求項３にかかる発明は、請求項２にかかる発明において、記憶する前記設定情報を用いて内部処理を仮実行する仮実行手段をさらに備え、前記送信手段は、さらに、仮実行に用いた前記設定情報を含むメッセージを内部処理に用いた前記設定情報を含む前記メッセージとして送信することを特徴とする。
【００１２】
また、請求項４にかかる発明は、請求項２または３にかかる発明において、前記送信手段は、さらに、内部処理が実行されたことを示す処理結果メッセージを、受信した前記メッセージの送信元である他装置に送信することを特徴とする。
【００１３】
また、請求項５にかかる発明は、設定情報を用いて固有の内部処理を実行する他装置と連携して自装置の内部処理を実行するオブジェクト連携装置のオブジェクト連携方法であって、実行判断情報記憶手段が、他装置が内部処理に用いた前記設定情報であって、自装置の内部処理を実行するために要求される当該設定情報の条件を示す実行判断情報を記憶する実行判断情報記憶工程と、受信手段が、自装置の内部処理の実行を要求するものであって、他装置が内部処理に用いた前記設定情報を含むメッセージを受信する受信工程と、判断手段が、受信した前記メッセージが含む前記設定情報が、記憶する前記実行判断情報が示す前記設定情報の条件に該当するか否かを判断する判断工程と、生成手段が、受信した前記メッセージが含む前記設定情報が、記憶する前記実行判断情報が示す前記設定情報の条件に該当しないと判断した場合、自装置の内部処理が実行できない原因を通知する不整合通知メッセージを生成する生成工程と、送信手段が、生成した前記不整合通知メッセージを、受信した前記メッセージの送信元である他装置に送信する送信工程と、を有することを特徴とする。
【００１４】
また、請求項６にかかる発明は、請求項５にかかる発明において、設定情報記憶手段が、自装置の内部処理に用いる前記設定情報を記憶する設定情報記憶工程と、実行手段が、受信した前記メッセージが含む前記設定情報が、記憶する前記実行判断情報が示す前記設定情報の条件に該当した場合、記憶する前記設定情報を用いて内部処理を実行する実行工程と、をさらに有し、前記送信工程は、内部処理に用いた前記設定情報を含む前記メッセージを、自装置と連携処理を行う他装置に送信し、前記受信工程は、さらに、前記不整合通知メッセージを受信し、前記実行工程は、さらに、前記不整合通知メッセージに含まれる原因に応じて前記記憶手段から前記設定情報を抽出し、抽出した前記設定情報を用いて、再度、内部処理を実行することを特徴とする。
【００１５】
また、請求項７にかかる発明は、請求項６にかかる発明において、仮実行手段が、記憶する前記設定情報を用いて内部処理を仮実行する仮実行工程をさらに有し、前記送信工程は、さらに、仮実行に用いた前記設定情報を含むメッセージを内部処理に用いた前記設定情報を含む前記メッセージとして送信することを特徴とする。
【００１６】
また、請求項８にかかる発明は、請求項６または７にかかる発明において、前記送信工程は、さらに、内部処理が実行されたことを示す処理結果メッセージを、受信した前記メッセージの送信元である他装置に送信することを特徴とする。
【００１７】
また、請求項９にかかる発明は、請求項５から８のいずれか一に記載のオブジェクト連携方法の各工程をコンピュータに実行させるためのものである。
【００１８】
また、請求項１０にかかる発明は、請求項５から８のいずれか一に記載のオブジェクト連携方法の各工程をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能なものである。
【発明の効果】
【００１９】
本発明によれば、オブジェクトが連携処理を行う際に必要な条件等を確認し、条件が満たされない場合には条件を満たすようにオブジェクトが内部処理に用いる設定情報を変更して不整合を解消させるようにできるので、オブジェクト間の連携処理を動的かつ柔軟に行うことができる、という効果を奏する。
【発明を実施するための最良の形態】
【００２０】
以下に添付図面を参照して、この発明にかかるオブジェクト連携装置、オブジェクト連携方法、プログラム、および記録媒体の最良な実施の形態を詳細に説明する。なお、本実施の形態では、パーソナルコンピュータ（ＰＣ）に本発明のオブジェクト連携装置、オブジェクト連携方法、プログラム、および記録媒体を適用した例ついて説明する。但し、ＰＣ機に限られず、複合機（ＭＦＰ：Multi  Function  Peripheral）、プリンタ、ファクシミリ、コピー機等の画像形成装置などにも本発明を適用することができる。
【００２１】
（第１実施の形態）
図１は、本実施の形態にかかるＰＣのハードウェアおよびソフトウェアの構成を説明するための説明図である。図１に示すように、本実施の形態にかかるＰＣ１００は、各種機器からなるハードウェアリソース１０７を有する。このハードウェアリソース１０７に含まれる機器には、ＨＤＤ（Hard  Disk  Drive）、ネットワークインターフェース、表示部やキーボード等の操作表示部などがある。
【００２２】
このハードウェアリソース１０７を制御するソフトウェアシステムは、ウェブブラウザ（Web  Browser）１０１、エンジン（Engine）１０２、ウェブサーバ（Web  Server）１０３、ＣＧＩ（Common  Gateway  Interface）１０４、オブジェクト１０５、およびオペレーティングシステム１０６を有している。
【００２３】
オペレーティングシステム１０６は、その他のソフトウェアが動作するための基盤を提供する。ウェブブラウザ１０１は、操作表示部に画像データ等を表示するソフトウェアである。
【００２４】
エンジン１０２は、ウェブブラウザ１０１を通じて、利用者にビジュアルプログラミングシステムを提供するソフトウェアである。ここで、ビジュアルプログラミングシステムとは、プログラムのモジュール等、固有の内部処理を実行するオブジェクト１０５を視覚的に表現した視覚情報であるアイコン等のラベルを表示し、ラベルが表示されたオブジェクト１０５の中から選択したオブジェクト１０５が連携して内部処理を実行するプログラムを作成・実行させるシステムである。
【００２５】
ＣＧＩ１０４は、エンジン１０２により選択されたオブジェクト１０５を起動するためのソフトウェアである。
【００２６】
オブジェクト１０５は、分散したオブジェクト間での通信、対話、協調といった連携処理を行うものである。また、オブジェクト１０５は、オブジェクト間を流れるメッセージに対して各オブジェクトが反応して内部処理を実行する。また、オブジェクト１０５は、ソフトウェアシステムへの参加、離脱により、ソフトウェアシステム全体の動作を柔軟に変更させることができる。
【００２７】
なお、本実施の形態では、ＰＣ１００のソフトウェアシステム内を流れるメッセージに対してオブジェクト１０５が反応して内部処理を実行する例について説明するが、これに限定するものではない。例えば、共通の通信路を流れるメッセージに対して、他のＰＣ、デバイス、当該他のＰＣやデバイス内で動作する個々のアプリケーションプログラム、または当該アプリケーションプログラム内で動作する個々のプログラムコンポーネント内で実現されたオブジェクトが反応する形で内部処理を実行することも可能である。
【００２８】
ここで、共通の通信路は、単にＬＡＮなどの物理的ネットワークに限定されるものではなく、無線、音声、光などメッセージを流すことができる媒体を介在するものであればよい。また、共通の通信路は、各オブジェクトが共通に呼び出し可能なメモリ等の記憶媒体、さらには通信路上のポートアドレス等など仮想的な存在であってもよい。
【００２９】
ウェブサーバ１０３は、ＣＧＩ１０４とエンジン１０２との間での情報送信を行うソフトウェアである。
【００３０】
図２は、本実施の形態にかかるＰＣのハードウェア構成を示すブロック図である。図２に示すように、本実施の形態にかかるＰＣ１００は、コントローラ２００と、ＵＳＢ（Universal  Serial  Bus）インターフェース２０１と、ＩＥＥＥ１３９４（the  Institute  of  Electrical  and  Electronics  Engineers  1394）インターフェース２０２と、をＰＣＩ（Peripheral  Component  Interconnect）バス２０３で接続した構成となる。
【００３１】
コントローラ２００は、ＰＣ１００の全体制御を行う制御装置であり、ＣＰＵ（Central  Processing  Unit）２０４と、システムメモリ（ＭＥＭ−Ｐ）２０５と、ノースブリッジ（ＮＢ）２０６と、サウスブリッジ（ＳＢ）２０７と、ＡＳＩＣ（Application  Specific  Integrated  Circuit）２０８と、ローカルメモリ（ＭＥＭ−Ｃ）２０９と、ハードディスクドライブ（ＨＤＤ：Hard  Disk  Drive）２１０と、を有し、ノースブリッジ（ＮＢ）２０６とＡＳＩＣ２０８との間をＡＧＰ（Accelerated  Graphics  Port）１５で接続した構成となる。
【００３２】
ＣＰＵ２０４は、各種ソフトウェアを実行するための演算装置である。本実施の形態に係るオブジェクト１０５を含む、ＰＣ１００の各種機能を実現するためのソフトウェアシステム（図１に示す）は、ＭＥＭ−Ｃ２０９もしくはＨＤＤ２１０に記憶保持され、必要に応じてＭＥＭ−Ｐ２０５にロードされてこのＣＰＵ２０４により実行される。
【００３３】
ＭＥＭ−Ｐ２０５は、プログラムやデータの格納用メモリ、プログラムやデータの展開用メモリ、プリンタに出力する画像データの描画用メモリなどとして用いるシステムメモリであり、ＲＯＭ（Read  Only  Memory）２０５ａとＲＡＭ(Random  Access  Memory)２０５ｂとからなる。ＲＯＭ２０５ａは、プログラムやデータの格納用メモリとして用いる読み出し専用のメモリであり、ＲＡＭ２０５ｂは、プログラムやデータの展開用メモリ、プリンタに出力する画像データの描画用メモリなどとして用いる書き込みおよび読み出し可能なメモリである。
【００３４】
ＮＢ２０６およびＳＢ２０７は、ＭＥＭ−Ｐ２０５やＡＧＰ１５を制御する制御装置であり、ＮＢ２０６を介してＣＰＵ２０４とＭＥＭ−Ｐ２０５とＳＢ２０７とＡＧＰ１５とが接続される形をとる。ＮＢ２０６は、ＡＧＰ１５を介してＡＳＩＣ２０８とも接続され、その先にＰＣＩバス２０３が接続される。
【００３５】
ＡＳＩＣ２０８は、画像処理のための制御装置である。このＡＳＩＣ２０８は、ＭＥＭ−Ｃ２０９やＨＤＤ２１０や操作表示部２１１のような周辺機器と接続され、これらの制御もおこなう。ＭＥＭ−Ｃ２０９は、ＡＳＩＣ２０８が画像処理をおこなう画像データ等を一時記憶する記憶部であり、ＨＤＤ２１０は、各種ソフトウェア、フォントデータ、蓄積するよう指示された画像データ等を記憶する記憶部である。操作表示部２１１は、利用者の操作を受け付ける入力装置である。
【００３６】
ＵＳＢインターフェース２０１およびＩＥＥＥ１３９４インターフェース２０２は、外部機器を接続するためのインターフェースである。ＰＣＩバス２０３には、これら以外にネットワーク接続のためのインターフェース装置等も接続される。
【００３７】
次に、オブジェクト１０５のオブジェクトモデルについて説明する。図３は、オブジェクトのＵＭＬクラス図である。ＵＭＬ（Unified  Modeling  Language）とは、ＯＭＧ（Object  Management  Group）が使用を策定しているシステムモデリング言語であり、モデリングの成果を記述する記法を定義したものである。このＵＭＬは、オブジェクト指向によるソフトウェアの設計において広く用いられている。
【００３８】
クラスとは、オブジェクトの設計図に相当する概念であり、オブジェクト内部に有する属性や操作や、他のオブジェクトとの関係を定義するものである。クラスは、ＵＭＬクラス図においては、３段の区画を有する矩形として記述される。それぞれの区画は、上から名前区画、属性区画、および操作区画と呼ばれる。名前区画には、当該クラスの名称が記述され、属性区画には、当該クラスが有するデータ（属性）が記述され、操作区画には、当該クラスが有する手続（操作）が記述される。
【００３９】
このように、クラスは、データ（属性）を所持するための属性区画と、かかる属性の書込みおよび読み出しを行う手続き（操作）を所持するための操作区画とを有している。これらのクラスは、ソフトウェアの一部として含まれるので、予めＭＥＭ−Ｃ２０９に格納されたソフトウェアが実行されると、各クラスはＲＡＭ２０５ｂの所定領域に実体化され、属性区画に含まれる各データ（属性）がＲＡＭ２０５ｂ上に展開される。したがって、クラスが実体化したオブジェクト１０５は、ＲＡＭ２０５ｂ上の各データ（属性）の書き込みおよび読み出しを行うことが可能となる。
【００４０】
なお、クラス図において、属性や操作の左側に「-」記号を付した場合は、当該属性や操作が外部のクラスに非公開であることを示し、「+」記号を付した場合は、当該属性や操作が外部のクラスに公開されていることを示す。また、操作については「メッセージ受信（）」のように「（）」記号を付すことが通例であり、「（引数１，引数２）」のように、かかる操作に引き渡す引数を記述する場合もある。
【００４１】
オブジェクト１０５のクラスは、操作として、メッセージ受信（）、不整合受信（）、および処理（）を有する。
【００４２】
メッセージ受信（）は、オブジェクトの内部処理の実行を要求するメッセージを外部機器または他のオブジェクトから受信する処理である。また、不整合受信（）は、連携処理を行えない原因を通知する不整合通知メッセージを他のオブジェクトから受信する処理である。処理（）は、オブジェクトの内部処理（内部状態や内部関数）である。
【００４３】
また、オブジェクト１０５のクラスは、属性として、オブジェクトＩＤ、オブジェクトの名前、オブジェクトのＵＲＬ、オブジェクトの種類、設定情報名、設定情報値、およびテンプレートを有する。これらの属性と操作のうち、処理（）、設定情報名、設定情報値、およびテンプレートは、クラスの外部に公開されない。
【００４４】
オブジェクトＩＤは、オブジェクトを特定するための情報である。オブジェクトの名前は、オブジェクトの名称である。オブジェクトのＵＲＬは、オブジェクトを指定する情報である。オブジェクトの種類は、オブジェクトが実行する内部処理の種類である。設定情報名は、オブジェクトが内部処理に用いるパラメータ等の設定情報の名称である。設定情報値は、オブジェクトが内部処理に用いるパラメータの値である。テンプレートは、オブジェクト間で送受信するメッセージの書式である。
【００４５】
次に、図３に示すオブジェクトモデルにより印刷処理を行う場合のオブジェクトの詳細な機能構成および印刷処理を行うオブジェクトの操作の実行手順について説明する。より具体的には、ＨＤＤ２１０に記憶されているテキストファイルを読み込んで所定の文字コードに変換した後、変換後のテキストファイルをプリンタに出力して印刷処理を行う例について説明する。
【００４６】
まず、図４を用いて、印刷処理を行うオブジェクトの関係について説明する。図４は、印刷処理を行うオブジェクトの関係を示す図である。
【００４７】
図４に示すように、印刷処理は、ＨＤＤ２１０に記憶されているテキストファイルを読み込むテキストファイル読込オブジェクト４０１、およびテキストファイル読込オブジェクト４０１により読み込んだテキストファイルをＵＳＢインターフェース２０１やＩＥＥＥ１３９４インターフェース２０２を介して接続されたプリンタに出力するテキスト印刷オブジェクト４０２の連携処理により行われるものとする。テキストファイル読込オブジェクト４０１およびテキスト印刷オブジェクト４０２は、互いにメッセージ４０３およびメッセージ４０４を送出し、送出されたメッセージに反応して内部処理を実行する。
【００４８】
次に、テキストファイル読込オブジェクト４０１およびテキスト印刷オブジェクト４０２の詳細な機能構成およびテキストファイル読込オブジェクト４０１およびテキスト印刷オブジェクト４０２の操作の実行手順について説明する。図５は、テキスト読込オブジェクトおよびテキスト印刷オブジェクトの機能構成を示すブロック図である。図５に示すように、テキストファイル読込オブジェクト４０１およびテキスト印刷オブジェクト４０２は、設定情報記憶部５０１、実行部５０２、送信部５０３、通信部５０４、受信部５０５、実行判断情報記憶部５０６、判断部５０７、生成部５０８、および不整合判断部５０９を備えて構成される。なお、テキストファイル読込オブジェクト４０１およびテキスト印刷オブジェクト４０２は、それぞれ共通の通信路５１０で接続されているものとする。
【００４９】
図６は、テキスト読込オブジェクトからテキスト印刷オブジェクトにメッセージを送信する処理手順を示すフローチャートである。まず、実行部５０２は、設定情報記憶部５０１から設定情報を取得する（ステップＳ６０１）。さらに、実行部５０２は、ＨＤＤ２１０に記憶されているテキストファイルを読み込む（ステップＳ６０２）。
【００５０】
ここで、設定情報記憶部５０１は、テキストファイル読込オブジェクト４０１が内部処理に用いる設定情報であるパラメータ等のメタデータを記憶するものである。図７Ａは、設定情報記憶部に記憶されている設定情報の一例を示す図である。設定情報記憶部５０１には、設定情報名と、設定情報値と、設定優先度と、選択カーソルと、が対応付けて記憶されている。設定優先度は、テキストファイル読込オブジェクト４０１が複数の設定情報値に基づいてテキストファイルを変換可能な場合に、その優先度を示すものである。本実施の形態では、設定優先度は、数字が小さい順に設定優先度が高いことを示している。また、選択カーソルは、実行部５０２の内部処理に用いた設定情報値にチェックを入れるカーソルである。つまり、チェックが入っている選択カーソルと対応付けて記憶されている設定情報名および設定情報値が、テキストファイル読込オブジェクト４０１の属性としてＲＡＭ２０５ｂ上に展開されている設定情報名および設定情報値（データ）である。
【００５１】
次に、実行部５０２は、設定情報記憶部５０１から取得した設定情報に含まれる設定情報値のうち、設定優先度が最も高い設定情報値（文字コード）に従って、テキストファイル読込オブジェクト４０１の操作である処理（）である文字変換処理を読み込んだテキストファイルに対して実行する（ステップＳ６０３）。なお、取得した設定情報に含まれる設定情報値と対応付けられた選択カーソルにチェックが入っている場合、実行部５０２は、選択カーソルにチェックが入っている設定情報値の次に設定優先度が高い設定情報値に従って文字変換処理を実行するものとする。また、実行部５０２は、文字変換処理に用いた設定情報値と対応付けられた選択カーソルにチェックを入れた設定情報を設定情報記憶部５０１に記憶する（ステップＳ６０４）。
【００５２】
図７Ｂは、選択カーソルにチェックが入っている設定情報値に従って文字変換処理を実行する例の説明図である。取得した設定情報に含まれる設定情報値（現在選択されている設定情報）：UTF-8と対応付けられた選択カーソルにチェックが入っている場合（図７Ｂ（ａ）に示す）、実行部５０２は、設定情報値：UTF-8の次に設定優先度が高い設定情報値（次に優先して選択される設定情報）：Shift＿JISに従って文字変換処理を実行する（図７Ｂ（ｂ）に示す）。そして、実行部５０２は、設定情報値：Shift＿JISと対応付けられた選択カーソルにチェックを入れた設定情報を設定情報記憶部５０１に記憶する。
【００５３】
さらに、実行部５０２は、テキストファイル読込オブジェクト４０１が連携処理を行うテキスト印刷オブジェクト４０２の内部処理の実行を要求するものであって、文字変換処理を施したテキストファイルの内容および当該文字変換処理に用いた設定情報を含むメッセージを生成する（ステップＳ６０５）。そして、実行部５０２は、生成したメッセージを送信部５０３に送出する（ステップＳ６０６）。
【００５４】
図８は、実行部により生成されるメッセージの一例を示す図である。本実施の形態では、実行部５０２は、ＸＭＬ形式のメッセージ８００を生成するものとする。メッセージ８００は、符号８０１で示すように、送信元のオブジェクト（テキストファイル読込オブジェクト４０１）の場所（ＵＲＬ）および送信先のオブジェクト（テキスト印刷オブジェクト４０２）の場所を示す情報（ＵＲＬ）を含んでいる。
【００５５】
また、メッセージ８００は、符号８０２で示すように、オブジェクトが内部処理に用いた設定情報を示すメタデータであるinfo要素を含んでいる。具体的には、メッセージ８００は、送信元のオブジェクトが内部処理に用いたパラメータのメタデータを含んでいる。例えば、メッセージ８００は、送信元のオブジェクトであるテキストファイル読込オブジェクト４０１が文字変換処理に用いた設定情報名：文字コードや設定情報値：UTF-8のメタデータを含んでいる。
【００５６】
また、メッセージ８００は、符号８０３で示すように、送信先のオブジェクトに送るテキストや画像などのデータの内容やタイトル（名前）などを示すメタデータであるentry要素を含んでいる。符号８０３で示すentry要素を含むメッセージ８００を受信したオブジェクトは、entry要素が示すデータに対して当該オブジェクトの内部処理を実行する。
【００５７】
送信部５０３は、通信部５０４を介して、実行部５０２により生成されたメッセージを、連携処理を行うテキスト印刷オブジェクト４０２に送信する（ステップＳ６０７）。ここで、通信部５０４は、ネットワークなど、連携処理を行うオブジェクト間において共通の通信路５１０上の他のオブジェクトと通信するためのものである。
【００５８】
本実施の形態では、通信部５０４は、テキストファイル読込オブジェクト４０１の識別情報、およびテキストファイル読込オブジェクト４０１が連携処理を行うオブジェクトであるテキスト印刷オブジェクト４０２の識別情報を記憶しているものとする。そして、通信部５０４は、メッセージを送信する際、記憶しているオブジェクトの識別情報を用いて当該メッセージを他のオブジェクトに送信するものとする。ここで、識別情報は、共通の通信路５１０（例えば、インターネット）上でオブジェクトを判別可能な情報である。
【００５９】
図９は、メッセージを受信したテキスト印刷オブジェクト４０２が内部処理（印刷処理）を行う際の処理手順を示すフローチャートである。まず、受信部５０５は、通信部５０４を介して、テキストファイル読込オブジェクト４０１から送信されたメッセージを、テキスト印刷オブジェクト４０２の操作であるメッセージ受信（）により受信する（ステップＳ９０１）。
【００６０】
判断部５０７は、実行判断情報記憶部５０６から実行判断情報を取得する（ステップＳ９０２）。ここで、実行判断情報は、連携処理を行うテキストファイル読込オブジェクト４０１が内部処理に用いた設定情報であって、テキスト印刷オブジェクト４０２の内部処理を実行するために要求される当該設定情報の条件を示すものである。
【００６１】
図１０は、実行判断情報記憶部に記憶されている実行判断情報の一例を示す図である。実行判断情報記憶部５０６は、上述したように、テキストファイル読込オブジェクト４０１が文字変換処理に用いた設定情報であって、テキスト印刷オブジェクト４０２の内部処理である印刷処理を実行するために要求される設定情報の条件を示す実行判断情報１０００を記憶するものである。具体的には、実行判断情報記憶部５０６は、設定情報（例えば、設定情報名：文字コード，フォント等、および設定情報値：Shift＿JIS，EUC-JP等）の条件を示す実行判断情報１０００を記憶している。
【００６２】
なお、実行判断情報が示す設定情報の条件にはワイルドカード（＊で示す）を用いることができる。例えば、設定情報名の条件にワイルドカードが示されている場合、テキスト印刷オブジェクト４０２は、テキストファイル読込オブジェクト４０１が内部処理に用いた設定情報名にかかわらず印刷処理が実行可能であることを示している。また、設定情報値の条件にワイルドカードが示されている場合、テキスト印刷オブジェクト４０２は、テキストファイル読込オブジェクト４０１が内部処理に用いた設定情報値にかかわらず印刷処理が実行可能であることを示している。
【００６３】
判断部５０７は、受信部５０５により受信したメッセージが含む設定情報が、実行判断情報記憶部５０６に記憶する実行判断情報が示す設定情報の条件に該当するか否かを判断する。
【００６４】
本実施の形態では、判断部５０７は、まず、実行判断情報が示す設定情報名の条件にワイルドカードが用いられているか否かを判断する（ステップＳ９０３）。実行判断情報が示す設定情報名の条件にワイルドカードが用いられている場合（ステップＳ９０３：Ｎｏ）、判断部５０７は、受信したメッセージが含む設定情報が、実行判断情報が示す設定情報の条件に該当すると判断して、当該受信したメッセージを実行部５０２に送出して処理を終了する（ステップＳ９０８）。
【００６５】
一方、実行判断情報が示す設定情報名の条件にワイルドカードが用いられていない場合（ステップＳ９０３：Ｙｅｓ）、判断部５０７は、取得した実行判断情報が示す設定情報の条件を順に読み出し（ステップＳ９０４）、受信したメッセージが含む設定情報名が読み出した設定情報の条件に含まれる設定情報名に該当するか否かを判断する（ステップＳ９０５）。受信したメッセージが含む設定情報名が読み出した設定情報の条件に含まれる設定情報名に該当すると判断した場合（ステップＳ９０５：Ｙｅｓ）、判断部５０７は、受信したメッセージが含む設定情報値が読み出した設定情報の条件に含まれる設定情報値に該当するか否かを判断する（ステップＳ９０６）。
【００６６】
そして、受信したメッセージが含む設定情報値が読み出した設定情報の条件に含まれる設定情報値に該当すると判断した場合（ステップＳ９０６：Ｙｅｓ）、判断部５０７は、取得した実行判断情報から全ての設定情報の条件を読み出したか否かを判断する（ステップＳ９０７）。そして、取得した実行判断情報から全ての設定情報の条件を読み出したと判断した場合（ステップＳ９０７：Ｙｅｓ）、判断部５０７は、受信したメッセージが含む設定情報が、実行判断情報が示す設定情報の条件に該当すると判断して、当該受信したメッセージを実行部５０２に送出して処理を終了する（ステップＳ９０８）。一方、取得した実行判断情報から全ての設定情報の条件を読み出していないと判断した場合（ステップＳ９０７：Ｎｏ）、ステップＳ９０４に戻る。
【００６７】
また、受信したメッセージが含む設定情報名が読み出した設定情報の条件に含まれる設定情報名に該当しないと判断した場合（ステップＳ９０５：Ｎｏ）、判断部５０７は、受信したメッセージ、および読み出した設定情報の条件に含まれる設定情報名に該当しないと判断した当該受信したメッセージが含む設定情報名を生成部５０８に送出する（ステップＳ９０９）。また、受信したメッセージが含む設定情報値が読み出した設定情報の条件に含まれる設定情報値に該当しないと判断した場合（ステップＳ９０６：Ｎｏ）、判断部５０７は、受信したメッセージ、および読み出した設定情報の条件に含まれる設定情報値に該当しないと判断した当該受信したメッセージが含む設定情報値を生成部５０８に送出する（ステップＳ９０９）。
【００６８】
図１１は、内部処理を実行することができないと判断された場合の処理手順を示すフローチャートである。具体的には、図９に示すステップＳ９０９において、受信したメッセージおよび読み出した設定情報の条件に該当しないと判断した設定情報が生成部５０８に送出された場合の処理手順である。
【００６９】
まず、生成部５０８は、判断部５０７から送出されたメッセージおよび設定情報を受け取る（ステップＳ１１０１）。次いで、生成部５０８は、受け取ったメッセージおよび設定情報を用いて、テキスト印刷オブジェクト４０２の内部処理が実行できない原因を通知する不整合通知メッセージを生成する（ステップＳ１１０２）。本実施の形態では、生成部５０８は、判断部５０７から送出されたメッセージに、テキスト印刷オブジェクト４０２の内部処理が実行できない原因である判断部５０７から送出された設定情報を追加した不整合通知メッセージを生成する。
【００７０】
図１２は、生成部により生成される不整合通知メッセージの一例を示す図である。本実施の形態では、生成部５０８は、図８に示すメッセージと同様、ＸＭＬ形式の不整合通知メッセージ１２００を生成するものとする。不整合通知メッセージ１２００は、符号１２０１で示すように、送信元のオブジェクト（テキストファイル読込オブジェクト４０１）の実行部５０２で生成されたメッセージ８００に、テキスト印刷オブジェクト４０２の内部処理が実行できない原因である設定情報を示すメタデータであるerror要素を含んでいる。具体的には、不整合通知メッセージ１２００は、図９に示すステップＳ９０５またはステップＳ９０６において読み出した設定情報の条件に該当しないと判断した設定情報名および設定情報値の少なくとも１つを含むものである。
【００７１】
次に、生成部５０８は、生成した不整合通知メッセージを送信部５０３に送出する（ステップＳ１１０３）。送信部５０３は、通信部５０４を介して、生成部５０８により生成された不整合通知メッセージを、メッセージの送信元であるテキストファイル読込オブジェクト４０１に送信する（ステップＳ１１０４）。
【００７２】
図１３は、内部処理を実行することができると判断された場合の処理手順を示すフローチャートである。具体的には、図９に示すステップＳ９０８において、受信したメッセージが実行部５０２に送出された場合の処理手順である。
【００７３】
まず、実行部５０２は、判断部５０７から送出されたメッセージを受け取る（ステップＳ１３０１）。次いで、実行部５０２は、受け取ったメッセージを用いて、テキスト印刷オブジェクト４０２の内部処理である印刷処理を実行する（ステップＳ１３０２）。本実施の形態では、実行部５０２は、メッセージのinfo要素を参照してテキストファイル読込オブジェクト４０１により文字変換処理を施されたテキストファイルを取得し、取得したテキストファイルをＵＳＢインターフェース２０１やＩＥＥＥ１３９４インターフェース２０２を介して接続されたプリンタに出力する。
【００７４】
次に、実行部５０２は、他のオブジェクトにメッセージを送信するか否かを判断する（ステップＳ１３０３）。具体的には、実行部５０２は、テキスト印刷オブジェクト４０２の内部処理が行われたことを示す処理結果メッセージを送信元のオブジェクトであるテキストファイル読込オブジェクト４０１に送信するか否かを判断する。なお、処理結果メッセージを送信しないと判断した場合（ステップＳ１３０３：Ｎｏ）、そのまま処理が終了する。なお、処理結果メッセージを送信するか否かは予め設定されているものとする。
【００７５】
処理結果メッセージを送信すると判断した場合（ステップＳ１３０３：Ｙｅｓ）、実行部５０２は、内部処理が正常に行われたことを示す処理結果メッセージを生成する（ステップＳ１３０４）。
【００７６】
そして、実行部５０２は、生成した処理結果メッセージを送信部５０３に送出する（ステップＳ１３０５）。送信部５０３は、通信部５０４を介して、実行部５０２により生成された処理結果メッセージを、受信したメッセージの送信元のオブジェクトであるテキストファイル読込オブジェクト４０１に送信する（ステップＳ１３０６）。
【００７７】
図１４は、不整合通知メッセージを受信した場合の処理手順を示すフローチャートである。まず、受信部５０５は、通信部５０４を介して、テキスト印刷オブジェクト４０２から送信されたメッセージを、テキストファイル読込オブジェクト４０１の操作である不整合受信（）により受信する（ステップＳ１４０１）。
【００７８】
不整合判断部５０９は、受信部５０５により受信したメッセージが不整合通知メッセージであるか否かを判断する（ステップＳ１４０２）。具体的には、不整合判断部５０９は、受信したメッセージにerror要素が含まれているか否かにより不整合通知メッセージであるか否かを判断する。なお、受信したメッセージが不整合通知メッセージでないと判断した場合（ステップＳ１４０２：Ｎｏ）、そのまま処理を終了する。
【００７９】
受信したメッセージが不整合通知メッセージであると判断した場合（ステップＳ１４０２：Ｙｅｓ）、不整合判断部５０９は、受信した不整合通知メッセージから、テキスト印刷オブジェクト４０２が内部処理を実行できない原因であるerror要素が示す設定情報を抽出する（ステップＳ１４０３）。さらに、不整合判断部５０９は、受信した不整合通知メッセージおよび抽出した設定情報を実行部５０２に送出する（ステップＳ１４０４）。
【００８０】
実行部５０２は、不整合判断部５０９から送出された設定情報に応じて、設定情報記憶部５０１から設定情報を抽出し、抽出した設定情報を用いて再度内部処理（図６に示す処理）を実行し、さらにテキスト印刷オブジェクト４０２に再度メッセージを送信する（ステップＳ１４０５）。
【００８１】
具体的には、実行部５０２は、設定情報記憶部５０１から取得した設定情報に含まれる設定情報値のうち、不整合判断部５０９から送出された設定情報に含まれる設定情報値（選択カーソルにチェックが入っている設定情報値）の次に設定優先度が高い設定情報値に従って文字変換処理を実行するものとする。
【００８２】
ここで、図１５を用いて、上述したオブジェクトの連携処理により得られる効果について説明する。図１５は、連携処理を行うオブジェクトを模式的に示すブロック図である。図１５に示す例は、オブジェクトＡ（１５０１）、オブジェクトＢ（１５０２）、およびオブジェクトＣ（１５０３）がメッセージを送受信する主体となるオブジェクトであるものとする。また、メッセージＭ１（１５０４）、メッセージＭ２（１５０５）、メッセージＭ３（１５０６）、およびメッセージＭ４（１５０７）は、オブジェクト間を流れるメッセージであり、メッセージを示す矢印の起点がメッセージの送信を表し、終点がメッセージの受信を表している。さらに、処理Ａ１（１５０１ａ）、処理Ａ２（１５０２ａ）、および処理Ａ３（１５０３ａ）は、各オブジェクトの内部関数による処理であり、各オブジェクトが固有に実行する内部処理に相当するものである。
【００８３】
図１５に示すように、オブジェクトＡ（１５０１）とオブジェクトＢ（１５０２）との連携処理は、メッセージＭ１（１５０４）を介して行われる。オブジェクトＡ（１５０１）は、基本的には、オブジェクトＢ（１５０２）の持つ内部関数について関知せずにメッセージを送信する。なお、各オブジェクトは、連携処理を行う他のオブジェクトの内部関数（操作）には関知しないが、共通の操作であるメッセージ受信と不整合受信を持つことは、全てのオブジェクトについて共通であるものとする。そして、オブジェクト間のメッセージのやりとりは、各オブジェクトが操作区画に有するメッセージ受信の呼び出しにより行われるものとする。また、不整合通知メッセージのやりとりは、各オブジェクトが操作区画に有する不整合受信の呼び出しにより行われるものとする。
【００８４】
オブジェクトＢ（１５０２）は、メッセージＭ１（１５０４）を受信し、メッセージＭ１（１５０４）に基づいてオブジェクトＢ（１５０２）の内部処理が実行可能であると判断した場合、メッセージＭ１（１５０４）の受信に反応して処理Ａ２を起動する。
【００８５】
また、オブジェクトＢ（１５０２）の内部処理が実行できないと判断した場合、オブジェクトＢ（１５０２）は、オブジェクトＡ（１５０１）に不整合通知メッセージであるメッセージＭ４（１５０７）を送信して、オブジェクトＡ（１５０１）の処理Ａ１（１５０１ａ）に用いた設定情報の不備（メッセージＭ１（１５０４）が含む不備）を通知する。これにより、オブジェクトＡ（１５０１）は、不整合（処理Ａ１（１５０１ａ）に用いた設定情報の不備）を解消するように、再度処理Ａ１（１５０１ａ）を実行して新たにメッセージＭ１（１５０４）を生成してオブジェクトＢ（１５０２）に送信することができるので、仮に連携処理の途中で何か不具合が生じた場合にも回復して連携処理を継続することが可能となる。
【００８６】
なお、受信したメッセージＭ１（１５０４）がオブジェクトＢ（１５０２）にとって関連のないものである場合、つまり、メッセージＭ１（１５０４）に含まれる送信先のオブジェクトの場所を示す情報（ＵＲＬ）がオブジェクトＢ１（１５０２）を示すものでない場合、オブジェクトＢ（１５０２）は何の反応もしない。
【００８７】
つまり、オブジェクトＡ（１５０１）とオブジェクトＢ（１５０２）とは、有為な連携を取り得るが、それはオブジェクトＡ（１５０１）とオブジェクトＢ（１５０２）との間で送受信されるメッセージＭ１（１５０４）およびメッセージＭ４（１５０７）による結び付きによるものといえる。
【００８８】
なお、オブジェクトＢ（１５０２）とオブジェクトＣ（１５０３）との連携処理についても、上述したオブジェクトＡ（１５０１）とオブジェクトＢ（１５０２）との連携処理と同様にして行われるものとする。また、連携処理を行うオブジェクトは、２つだけに限らず、例えば、オブジェクトＡ（１５０１）からオブジェクトＢ（１５０２）にメッセージＭ１（１５０４）を送信し、さらにオブジェクトＢ（１５０２）からオブジェクトＣ（１５０３）にメッセージＭ２（１５０５）を送信することにより、３つ以上のオブジェクトによる連携処理を行うことも可能である。
【００８９】
このように、本実施の形態にかかるＰＣ１００によれば、オブジェクトが内部処理を実行することができないと判断した場合、連携処理を行う他のオブジェクトに当該内部処理を実行できない原因を通知することにより、オブジェクトが連携処理を行う際に必要な条件等を確認し、条件が満たされない場合には条件を満たすようにオブジェクトが内部処理に用いる設定情報を変更して不整合を解消することができるので、オブジェクト間の連携処理を動的かつ柔軟に行うことができる。
【００９０】
（第２実施の形態）
本実施の形態にかかるＰＣは、オブジェクトの内部処理の実行により物理的な状態が変化する場合、実際に内部処理の仮実行を行わず、あたかも内部処理を実行したかのような処理結果を得ることができる内部処理の仮実行を行うものである。なお、ＰＣ１００の構成については、第１実施の形態とほぼ同様であるため、第１実施の形態と異なる部分の処理のみを説明する。
【００９１】
以下の説明では、ＵＳＢインターフェース２０１やＩＥＥＥ１３９４インターフェース２０２を介して接続されたスキャナを用いてスキャン処理を行い、スキャン処理により得られたデータに含まれるＱＲコードの解析処理を行う例について説明する。
【００９２】
まず、図１６を用いて、スキャン処理およびＱＲコードの解析処理を行うオブジェクトの関係について説明する。図１６は、スキャン処理およびＱＲコードの解析処理を行うオブジェクトの関係を示す図ある。
【００９３】
図１６に示すより、スキャン処理およびＱＲコードの解析処理は、ＵＳＢインターフェース２０１やＩＥＥＥ１３９４インターフェース２０２を介して接続されたスキャナを用いてスキャン処理を行うスキャンオブジェクト１６０１、およびスキャンオブジェクト１６０１によるスキャン処理により得られたデータに含まれるＱＲコードの解析処理を行うＱＲコード解析オブジェクト１６０２の連携処理により行われるものとする。スキャンオブジェクト１６０１およびＱＲコード解析オブジェクト１６０２は、互いにメッセージ１６０３およびメッセージ１６０４を送出し、送出されたメッセージに反応して内部処理を実行する。
【００９４】
次に、図１７および図１８を用いて、スキャンオブジェクト１６０１およびＱＲコード解析オブジェクト１６０２のオブジェクトモデルについて説明する。図１７は、スキャンオブジェクトのＵＭＬクラス図である。図１８は、ＱＲコード解析オブジェクトのＵＭＬクラス図である。
【００９５】
スキャンオブジェクト１６０１のクラスは、操作として、メッセージ受信（）、不整合受信（）、およびスキャン処理（）を有する。
【００９６】
スキャン処理（）は、スキャンオブジェクト１６０１の内部処理であり、ＵＳＢインターフェース２０１やＩＥＥＥ１３９４インターフェース２０２を介して接続されたスキャナを制御する処理である。スキャン処理（）は、スキャンオブジェクト１６０１の操作であるスキャン処理を仮実行することができる。なお、メッセージ受信（）および不整合受信（）について第１実施の形態と同様であるため、ここでは説明を省略する。
【００９７】
また、スキャンオブジェクト１６０１のクラスは、属性として、オブジェクトＩＤ、オブジェクトの名前、オブジェクトのＵＲＬ、オブジェクトの種類、設定情報名、設定情報値、および仮実行結果の生成用テンプレートを有する。これらの属性と操作のうち、スキャン処理（）、設定情報名、設定情報値、および仮実行結果の生成用テンプレートは、クラスの外部に公開されない。
【００９８】
オブジェクトＩＤは、オブジェクトを特定するための情報であり、例えば、“ScanObject”である。オブジェクトの名前は、オブジェクトの名称であり、例えば、“スキャンオブジェクト”である。オブジェクトのＵＲＬは、オブジェクトを指定する情報であり、例えば、“http://example.com/scanObject”である。オブジェクトの種類は、オブジェクトが実行する内部処理の種類であり、例えば、“入力”である。設定情報名は、オブジェクトが内部処理に用いるパラメータ等の設定情報の名称であり、例えば、“解像度”である。設定情報値は、オブジェクトが内部処理に用いるパラメータの値であり、例えば、“300dpi”である。テンプレートは、オブジェクト間で送受信するメッセージの書式である。仮実行結果の生成用テンプレートは、メッセージに含めるダミーのデータであり、例えば、“ダミーのＪＰＥＧデータ”である。
【００９９】
ＱＲコード解析オブジェクト１６０２のクラスは、操作として、メッセージ受信（）、不整合受信（）、およびＱＲコード解析処理（）を有する。
【０１００】
メッセージ受信（）は、ＱＲコード解析オブジェクト１６０２の内部処理の実行または仮実行を要求するメッセージをスキャンオブジェクト１６０１から受信する処理である。また、不整合受信（）は、連携処理を行えない原因を通知する不整合通知メッセージを他のオブジェクトから受信する処理である。ＱＲコード解析処理（）は、ＱＲコード解析オブジェクト１６０２の内部処理であり、スキャンオブジェクト１６０１のスキャン処理により得られたデータに含まれるＱＲコードを解析する処理である。なお、ＱＲコード解析処理（）は、内部処理の仮実行を行わないものとする。
【０１０１】
また、ＱＲコード解析オブジェクト１６０２のクラスは、属性として、オブジェクトＩＤ、オブジェクトの名前、オブジェクトのＵＲＬ、オブジェクトの種類、設定情報名、設定情報値、および仮実行結果の生成用テンプレートを有する。これらの属性と操作のうち、ＱＲコード解析処理（）、設定情報名、設定情報値、および仮実行結果の生成用テンプレートは、クラスの外部に公開されない。
【０１０２】
オブジェクトＩＤは、オブジェクトを特定するための情報であり、例えば、“QR  Code  Object”である。オブジェクトの名前は、オブジェクトの名称であり、例えば、“ＱＲコード解析オブジェクト”である。オブジェクトのＵＲＬは、オブジェクトを指定する情報であり、例えば、“http://example.com/qrCodeObject”である。オブジェクトの種類は、オブジェクトが実行する内部処理の種類であり、例えば、“加工”である。設定情報名は、オブジェクトが内部処理に用いるパラメータ等の設定情報の名称であり、例えば、“解像度”である。設定情報値は、オブジェクトが内部処理に用いるパラメータの値であり、例えば、“600dpi”である。テンプレートは、オブジェクト間で送受信するメッセージの書式である。仮実行結果の生成用テンプレートは、メッセージに含めるダミーのデータであり、ＱＲコード解析オブジェクト１６０２は内部処理の仮実行を行わないため、“なし”である。
【０１０３】
次に、スキャンオブジェクト１６０１およびＱＲコード解析オブジェクト１６０２の詳細な機能構成およびスキャンオブジェクト１６０１およびＱＲコード解析オブジェクト１６０２の操作の実行手順について説明する。図１９は、スキャンオブジェクトおよびＱＲコード解析オブジェクトの機能構成を示すブロック図である。図１９に示すように、スキャンオブジェクト１６０１およびＱＲコード解析オブジェクト１６０２は、設定情報記憶部５０１、実行部５０２、通信部５０４、受信部５０５、実行判断情報記憶部５０６、判断部５０７、生成部５０８、不整合判断部５０９、仮実行部１９０１、および送信部１９０２を備えて構成される。なお、スキャンオブジェクト１６０１およびＱＲコード解析オブジェクト１６０２は、それぞれ共通の通信路５１０で接続されているものとする。
【０１０４】
図２０は、スキャンオブジェクトからＱＲコードオブジェクトにメッセージを送信する処理手順を示すフローチャートである。まず、仮実行部１９０１は、設定情報記憶部５０１から設定情報を取得する（ステップＳ２００１）。次に、仮実行部１９０１は、設定情報記憶部５０１から取得した設定情報に含まれる設定情報値のうち、設定優先度が最も高い設定情報値（解像度）をスキャナに設定して、スキャンオブジェクト１６０１の操作であるスキャン処理を仮実行する（ステップＳ２００２）。
【０１０５】
図２１は、選択カーソルにチェックが入っている設定情報値に従って仮実行を行う例の説明図である。取得した設定情報に含まれる設定情報値（現在選択されている設定情報）：300dpiと対応付けられた選択カーソルにチェックが入っている場合（図２１（ａ）に示す）、仮実行部１９０１は、設定情報値：300dpiの次に設定優先度が高い設定情報値（次に優先して選択される設定情報）：600dpiに従ってスキャン処理を仮実行する（図２１（ｂ）に示す）。そして、仮実行部１９０１は、設定情報値：600dpiと対応付けられた選択カーソルにチェックを入れた設定情報を設定情報記憶部５０１に記憶する。
【０１０６】
ここで、仮実行とは、上述したように、実際にスキャンオブジェクト１６０１の内部処理であるスキャン処理を行わず、仮実行結果の生成用テンプレートを用いて、あたかもスキャン処理を行ったかのようなデータ（例えば、ダミーのＪＰＥＧデータ）を生成する処理である。例えば、ＡＤＦの原稿台にセットされた原稿の読み取りを行わず、原稿がセットされていないコンタクトガラスをスキャンする処理である。
【０１０７】
具体的には、スキャン処理のような処理前と処理後とでスキャナの物理的な状態が変化してしまう処理においては、実行部５０２によるスキャン処理の実行後に不整合通知メッセージを受信した場合、当該不整合通知メッセージに従って設定情報を再設定したとしても、再度スキャン処理を行うためには物理的な状態を元に戻さなければならない。例えば、ＡＤＦを用いて原稿のスキャン処理を実行して不整合通知メッセージを受信した場合には、再度スキャン処理を行う必要が生じ、そのためには排出部に排出された原稿を再度ＡＤＦの原稿台にセットしなおさなければならない。そこで、本実施の形態では、実行部５０２による内部処理を行わずに、仮実行部１９０１によって内部処理を仮実行することを実現し、前述の不都合を解消している。
【０１０８】
次に、仮実行部１９０１は、スキャンオブジェクト１６０１と連携処理を行うＱＲコード解析オブジェクト１６０２の内部処理の仮実行を要求するものであって、内部処理の仮実行により得られたデータおよび当該内部処理の仮実行に用いた設定情報を含むメッセージを生成する（ステップＳ２００３）。そして、仮実行部１９０１は、生成したメッセージを送信部１９０２に送出する（ステップＳ２００４）。
【０１０９】
図２２は、仮実行部により生成されるメッセージの一例を示す図である。本実施の形態では、仮実行部１９０１は、ＸＭＬ形式のメッセージ２２００を生成するものとする。メッセージ２２００は、符号２２０１で示すように、送信元のオブジェクト（スキャンオブジェクト１６０１）の場所を示す情報（ＵＲＬ）および送信先のオブジェクト（ＱＲコード解析オブジェクト１６０２）の場所を示す情報（ＵＲＬ）を含んでいる。
【０１１０】
また、メッセージ２２００は、符号２２０２で示すように、仮実行部１９０１が内部処理の仮実行に用いた設定情報を示すメタデータであるinfo要素を含んでいる。具体的には、メッセージ２２００は、仮実行部１９０１が内部処理の仮実行に用いたパラメータのメタデータを含んでいる。例えば、メッセージ２２００は、仮実行部１９０１が内部処理の仮実行に用いた設定情報名：解像度や設定情報値：300dpiのメタデータを含んでいる。
【０１１１】
また、メッセージ２２００は、符号２２０３で示すように、内部処理の仮実行により得られたデータのタイトルおよびデータの場所を示すメタデータであるentry要素を含んでいる。符号２２０３で示すentry要素を含むメッセージ２２００を受信したＱＲコード解析オブジェクト１６０２は、内部処理の仮実行を行わないため、entry要素が示すデータに対して内部処理を実行する。
【０１１２】
送信部１９０２は、通信部５０４を介して、仮実行部１９０１により生成されたメッセージを、実行部５０２（スキャンオブジェクト１６０１）の内部処理の実行により得られたメッセージとして、連携処理を行うＱＲコード解析オブジェクト１６０２に送信する（ステップＳ２００５）。なお、メッセージを受信したＱＲコード解析オブジェクトが内部処理を行う際の処理手順（図９に示す）、および内部処理を実行することができないと判断された場合の処理手順（図１１に示す）は、第１実施の形態とほぼ同様であるため、ここでは説明を省略する。
【０１１３】
図２３は、内部処理を実行することができると判断された場合の処理手順を示すフローチャートである。具体的には、図９に示すステップＳ９０８において、受信したメッセージがＱＲコード解析オブジェクト１６０２の実行部５０２に送出された場合の処理手順である。
【０１１４】
まず、実行部５０２は、判断部５０７から送出されたメッセージを受け取る（ステップＳ２３０１）。次いで、実行部５０２は、受け取ったメッセージを用いて、ＱＲコード解析オブジェクト１６０２の操作であるＱＲコード解析処理を実行する（ステップＳ２３０２）。本実施の形態では、実行部５０２は、メッセージのinfo要素を参照してスキャンオブジェクト１６０１によりスキャンしたデータを取得し、取得したデータに含まれるＱＲコードの解析処理を実行する。
【０１１５】
次に、実行部５０２は、他のオブジェクトにメッセージを送信するか否かを判断する（ステップＳ２３０３）。具体的には、実行部５０２は、ＱＲコード解析オブジェクト１６０２のＱＲコード解析処理が行われたことを示す処理結果メッセージを送信元のオブジェクトであるスキャンオブジェクト１６０１に送信するか否かを判断する。なお、処理結果メッセージを送信しないと判断した場合（ステップＳ２３０３：Ｎｏ）、そのまま処理が終了する。
【０１１６】
処理結果メッセージを送信すると判断した場合（ステップＳ２３０３：Ｙｅｓ）、実行部５０２は、内部処理が正常に行われたことを示す処理結果メッセージを生成する（ステップＳ２３０４）。
【０１１７】
そして、実行部５０２は、生成した処理結果メッセージを送信部１９０２５０３に送出する（ステップＳ２３０５）。送信部１９０２は、通信部５０４を介して、実行部５０２により生成された処理結果メッセージを、受信したメッセージの送信元であるスキャンオブジェクト１６０１に送信する（ステップＳ２３０６）。
【０１１８】
図２４は、不整合通知メッセージを受信した場合の処理手順を示すフローチャートである。まず、受信部５０５は、通信部５０４を介して、ＱＲコード解析オブジェクト１６０２から送信されたメッセージを、スキャンオブジェクト１６０１の操作である不整合受信（）により受信する（ステップＳ２４０１）。
【０１１９】
不整合判断部５０９は、受信部５０５により受信したメッセージが不整合通知メッセージであるか否かを判断する（ステップＳ２４０２）。具体的には、不整合判断部５０９は、受信したメッセージにerror要素が含まれているか否かにより不整合通知メッセージであるか否かを判断する。なお、受信したメッセージが不整合通知メッセージでないと判断した場合（ステップＳ２４０２：Ｎｏ）、そのまま処理を終了する。
【０１２０】
図２５は、不整合通知メッセージの一例を示す図である。本実施の形態にかかる不整合通知メッセージ２５００も、第１実施の形態と同様、ＸＭＬ形式のメッセージである。不整合通知メッセージ２５００は、符号２５０１で示すように、送信元のオブジェクト（スキャンオブジェクト１６０１）の実行部５０２で生成されたメッセージ２２００に、スキャンオブジェクト１６０１との連携処理が可能な設定情報を示すメタデータであるerror要素を含んでいる。本実施の形態では、生成部５０８は、実行部５０２によりＱＲコード解析処理が可能な設定情報名および設定情報値を含む不整合通知メッセージ２５００を生成するものとする。
【０１２１】
例えば、スキャンオブジェクト１６０１から解像度：300dpiでスキャン処理を行ったデータに対するＱＲコード解析処理の実行要求を受けた場合、生成部５０８は、ＱＲコード解析処理が可能な解像度：600dpiを含む不整合通知メッセージ２５００を生成する。
【０１２２】
受信したメッセージが不整合通知メッセージであると判断した場合（ステップＳ２４０２：Ｙｅｓ）、不整合判断部５０９は、受信した不整合通知メッセージからスキャンオブジェクト１６０１との連携処理が可能な設定情報であるerror要素を抽出する（ステップＳ２４０３）。さらに、不整合判断部５０９は、受信した不整合通知メッセージおよび抽出した設定情報を仮実行部１９０１に送出する（ステップＳ２４０４）。
【０１２３】
仮実行部１９０１は、不整合判断部５０９から送出された設定情報を用いて、再度、内部処理を仮実行し、さらにＱＲコード解析オブジェクト１６０２に再度メッセージを送信する（ステップＳ２４０５）。その際、仮実行部１９０１は、不整合判断部５０９から送出された設定情報に含まれる設定情報値と対応付けられた選択カーソルにチェックを入れた設定情報を設定情報記憶部５０１に記憶するものとする。
【０１２４】
なお、本実施の形態では、不整合判断部５０９から送出された設定情報を用いて仮実行部１９０１によって内部処理の仮実行を再度行っているが、これに限定するものではない。例えば、不整合通知メッセージがスキャンオブジェクト１６０１との連携処理が可能な設定情報を含む場合、不整合判断部５０９から送出されたメッセージおよび抽出した設定情報を実行部５０２に送出し、実行部５０２によるスキャン処理を実行してもよい。
【０１２５】
ここで、図２６を用いて、上述したオブジェクトの連携処理により得られる効果について説明する。図２６は、連携処理を行うオブジェクトを模式的に示すブロック図である。図２６に示すように、本実施の形態では、スキャンオブジェクト１６０１は、まず、スキャン処理を仮実行し（ステップＳ２６０１）、その結果を含むメッセージをＱＲコード解析オブジェクト１６０２に送信する（ステップＳ２６０２）。次いで、ＱＲコード解析オブジェクト１６０２は、内部処理が実行できないと判断した場合、不整合通知メッセージをスキャンオブジェクト１６０１に送信する（ステップＳ２６０３）。そして、スキャンオブジェクト１６０２は、不整合通知メッセージからerror要素が示す設定情報を抽出し、抽出した設定情報を用いて再度内部処理を仮実行し（ステップＳ２６０４）、その結果を含むメッセージをＱＲコード解析オブジェクト１６０２に再度送信する（ステップＳ２６０５）。
【０１２６】
これにより、スキャンオブジェクト１６０１のように紙文書をスキャンしてＱＲコード解析処理を行うためのデータを生成する場合等、スキャンオブジェクト１６０１の内部処理の処理前と処理後とで物理的な状態が変化する場合であっても、不整合通知メッセージの通知に従って再度内部処理の仮実行（または内部処理）を実行することにより、不整合を解消することができる。
【０１２７】
（第３実施の形態）
本実施の形態では、オブジェクトに連携処理を行わせるソフトウェアを開発するソフトウェア開発環境について説明する。
【０１２８】
なお、本実施の形態では、アイコン手段を用いて操作表示部２１１の画面上でグラフィカルにソフトウェアの開発を行うソフトウェア開発環境を主要な例として説明するが、これに限定されるものではない。例えば、テキストエディタなどによる文字入力手段を用いて画面上で文字入力によりソフトウェア開発を行うソフトウェア開発環境、あるいはアイコン手段より一連の処理を行うソフトウェアを開発することができるＣＡＳＥツールにも同様に用いることができる。
【０１２９】
図２７は、ソフトウェア開発システムの構成を示す説明図である。ソフトウェア開発システム２７００は、ソフトウェア開発環境（エンジン１０２）を実現するＰＣ１００、およびオブジェクトが実体化されたデバイス２７０１を備えて構成されている。
【０１３０】
ＰＣ１００は、Ｗｅｂ等の様々なネットワーク上のサービスが稼働しているインターネット２７０２に接続されているものとする。また、ＰＣ１００は、操作表示部２１１の画面であるビットマップスクリーンと、マウスなどのポインティングデバイスと、キーボードなどの文字入力部と、を備えているものとする。
【０１３１】
図２８は、ＰＣ上に実現されるソフトウェア開発環境の機能構成を示すブロック図である。図２８に示すように、ソフトウェア開発環境であるエンジン１０２は、入力部２８０１、編集部２８０２、表示部２８０３、オブジェクト仮実行部２８０４、オブジェクト実行部２８０５、オブジェクト監視部２８０６、およびオブジェクト通信部２８０７を備えて構成されている。
【０１３２】
入力部２８０１は、ポインティングデバイスや文字入力部を介して、文字列の入力やビットマップスクリーンに表示されたアイコンの選択や操作を受け付けるものである。ここで、ビットマップスクリーンに表示されたアイコンは、デバイス２７０１上に実現されたオブジェクトを視覚的に表現したものである。
【０１３３】
編集部２８０２は、入力部２８０１により入力を受け付けた文字列、入力部２８０１により選択や操作が可能なアイコンを保持するものである。
【０１３４】
表示部２８０３は、オブジェクト間の連携処理の様子をビットマップスクリーンに表示するものである。具体的には、表示部２８０３は、入力部２８０１により受け付けた文字列の入力やアイコンの選択や操作に応じて、編集部２８０２から文字列やアイコンを取得し、ビットマップスクリーンに表示する。
【０１３５】
図２９は、表示部の詳細な機能構成を示すブロック図である。表示部２８０３は、オブジェクト一覧表示部２８０３ａおよびオブジェクトレイアウト表示部２８０３ｂを備えて構成されている。オブジェクト一覧表示部２８０３ａは、インターネット２７０２を介して接続されたデバイス２７０１上に実現されたオブジェクトの一覧をビットマップスクリーンに表示するものである。オブジェクトレイアウト表示部２８０３ｂは、オブジェクト一覧表示部２８０３ａによりビットマップスクリーンに表示されたオブジェクトのうち、入力部２８０１により受け付けたアイコンの選択に従って連携処理を行うオブジェクトをビットマップスクリーンに表示するものである。
【０１３６】
本実施の形態では、ビットマップスクリーンには、オブジェクトの一覧であって、各オブジェクトを視覚的に表すアイコンを表示するオブジェクト一覧表示領域と、連携処理を行うオブジェクトであって、入力部２８０１を介して受け付けたアイコンの選択に従ってアイコンを適切な位置に表示するオブジェクトレイアウト表示領域と、がある。ユーザは、マウス等を操作してオブジェクト一覧表示領域に表示されているオブジェクトのアイコンをドラッグし、オブジェクトレイアウト表示領域にドロップすることにより、ソフトウェアの開発をグラフィカルに行うことができる。
【０１３７】
なお、本実施の形態では、アイコンは、当該アイコンがどのオブジェクトを示しているかのインターネット２７０２上で判別するため識別情報と、オブジェクトを視覚的に表す絵と、がセットになったものである。また、識別情報は、例えば、インターネット２７０２上でユニークとなる整数や文字列により構成されるものとする。
【０１３８】
図３０は、ビットマップスクリーンの画面構成の一例を示す図である。図３０に示すように、表示部２８０３は、ビットマップスクリーン３０００上に、オブジェクト一覧表示領域３００１およびオブジェクトレイアウト表示領域３００２を設ける。そして、ユーザは、マウス等を操作してオブジェクト一覧表示領域３００１に表示されているアイコンをドラッグし、オブジェクトレイアウト表示領域３００２にドロップすることにより、ソフトウェアの開発を行うことができる。
【０１３９】
図３１は、テキストエディタなどによる文字入力手段を用いてソフトウェア開発を行う場合におけるビットマップスクリーンの画面構成を示す図である。図３１に示すように、表示部２８０３は、ビットマップスクリーン３１００上に、文字列表示領域３１０１を設ける。表示部２８０３は、入力部２８０１により受け付けた文字列であって、編集部２８０２に保持されている文字列を文字列表示領域３１０１に表示する。これにより、ユーザは、文字列表示領域３１０１に表示された文字列を見ながらソフトウェアの開発を行うことができる。
【０１４０】
図３２は、ＣＡＳＥツールを用いてソフトウェア開発を行う場合におけるビットマップスクリーンの画面構成を示す図である。図３２に示すように、表示部２８０３は、ビットマップスクリーン上３２００上に、オブジェクト一覧表領域３２０１およびオブジェクトレイアウト表示領域３２０２を設ける。そして、ユーザは、マウス等を操作してオブジェクト一覧表示領域３２０１に表示されているアイコンをドラッグし、オブジェクトレイアウト表示領域３２０２にドロップすることにより、ソフトウェアの開発を行うことができる。
【０１４１】
ここで、ＣＡＳＥツールを用いてソフトウェア開発が行われる場合、オブジェクトレイアウト表示部２８０３ｂは、各デバイス２７０２のオブジェクトの通信部５０４に記憶されているオブジェクトの識別情報を参照して、オブジェクトレイアウト表示領域３２０２に表示されたアイコンを実線等で結ぶことができ、この線によって動作フローを視覚的に表すことができる。
【０１４２】
以下、オブジェクト仮実行部２８０４、オブジェクト実行部２８０５、オブジェクト監視部２８０６、およびオブジェクト通信部２８０７により実行される処理について説明する。
【０１４３】
まず、図３３を用いて、デバイス２７０１上に実体化されたオブジェクトの仮実行部１９０１に仮実行を行わせる処理手順について説明する。図３３は、オブジェクトの仮実行部に仮実行を行わせる処理のフローチャートである。
【０１４４】
オブジェクト仮実行部２８０４は、オブジェクトレイアウト表示領域３００２にドロップされたアイコン群からオブジェクトの識別情報群を抽出する（ステップＳ３３０１）。その際、オブジェクト仮実行部２８０４は、連携処理を行う順番に合わせて各オブジェクトの識別情報を抽出するものとする。さらに、オブジェクト仮実行部２８０４は、抽出したオブジェクトの識別情報群をオブジェクト通信部２８０７に送出する（ステップＳ３３０２）。
【０１４５】
次に、オブジェクト通信部２８０７は、ウェブサーバ１０３を介して、オブジェクト仮実行部２８０４から受け取ったオブジェクトの識別情報群のうち、連携処理を開始する開始部分となるオブジェクトの識別情報に基づいて、内部処理の仮実行を要求するメッセージを送信する（ステップＳ３３０３）。オブジェクトにメッセージが送信された後は、上述の実施の形態で説明したオブジェクト間における連携処理が行われる。
【０１４６】
さらに、オブジェクト仮実行部２８０４は、オブジェクト監視部２８０６を監視状態に設定して処理を終了する（ステップＳ３３０４）。オブジェクト監視部２８０６は、ウェブサーバ１０３を介して、オブジェクト間で送受信されるメッセージを監視するものであり、メッセージの送受信が行われる毎にエンジン１０２により実現されるソフトウェア開発環境にフィードバックする。
【０１４７】
このように、オブジェクト仮実行部２８０４と、上述の実施の形態にかかるオブジェクトが備える仮実行部１９０１と、を連携させることにより、連携処理を行うオブジェクトを組み合わせたソフトウェアを作成することができる。
【０１４８】
ここで、図３４および図３５を用いて、オブジェクト間で送受信されるメッセージを監視する処理について説明する。図３４は、オブジェクト間で不整合通知メッセージが送受信された場合の処理の説明図である。図３５は、オブジェクト間で処理結果メッセージが送受信された場合の処理の説明図である。
【０１４９】
まず、図３４を用いて、オブジェクト間において不整合通知メッセージが送受信された場合の処理について説明する。まず、オブジェクト監視部２８０６は、オブジェクト仮実行部２８０４により監視状態に設定されると、共通の通信路５１０上を流れるメッセージを監視する状態に移る。
【０１５０】
そして、オブジェクト監視部２８０６は、不整合通知メッセージを検知すると（ステップＳ３４０１）、編集部２８０２を介して表示部２８０３に対して、当該不整合通知メッセージの送信先のオブジェクトに設定する設定情報を入力させるためのダイアログ等（３４０６）の表示を要求する（ステップＳ３４０２）。
【０１５１】
入力部２８０１により設定情報が受け付けられると、オブジェクト監視部２８０６は、当該入力部２８０１により受け付けた設定情報を取得し（ステップＳ３４０３）、取得した設定情報をオブジェクト仮実行部２８０４に通知する（ステップＳ３４０４）。
【０１５２】
なお、オブジェクト仮実行部２８０４は、オブジェクト監視部２８０６から設定情報が通知されると、当該設定情報を含むメッセージを生成し、オブジェクト通信部２８０７を介して生成したメッセージを、不整合通知メッセージの送信先のオブジェクトに送信するものとする（ステップＳ３４０５）。
【０１５３】
また、上述の実施の形態では、設定情報記憶部５０１に記憶されている設定情報に含まれる設定情報値のうち、設定優先度が高い設定情報値に従って、オブジェクトの内部処理または内部処理の仮実行を行ったが、これに限定するものではない。例えば、エンジン１０２（オブジェクト仮実行部２８０４）から設定情報を含むメッセージを受信した場合、オブジェクトの実行部５０２または仮実行部１９０１は受信したメッセージに含まれる設定情報を用いて内部処理または内部処理の仮実行を行ってもよい。
【０１５４】
次に、図３５を用いて、オブジェクト間において処理結果メッセージが送受信された場合の処理について説明する。まず、オブジェクト監視部２８０６は、オブジェクト仮実行部２８０４により監視状態に設定されると、共通の通信路５１０上を流れるメッセージを監視する状態に移る。
【０１５５】
そして、オブジェクト監視部２８０６は、処理結果メッセージを検知すると（ステップＳ３５０１）、編集部２８０２を介して表示部２８０３に対して、オブジェクトレイアウト表示領域３５０３に内部処理が正常に行われた旨のアイコン等の表示３５０３ａを行うことを要求する（ステップＳ３５０２）。これにより、オブジェクトの内部処理が成功した旨を視覚的に表現することができる。
【０１５６】
次に、図３６を用いて、デバイス２７０１上に実体化されたオブジェクトの実行部５０２に内部処理を行わせる処理手順について説明する。図３６は、オブジェクトの実行部に内部処理を行わせる処理のフローチャートである。
【０１５７】
オブジェクト実行部２８０５は、オブジェクトレイアウト表示領域３００２にドロップされたアイコン群からオブジェクトの識別情報群を抽出する（ステップＳ３６０１）。その際、オブジェクト実行部２８０５は、連携処理を行う順番に合わせて各オブジェクトの識別情報を抽出するものとする。さらに、オブジェクト実行部２８０５は、例えば、図３０のオブジェクトレイアウト表示領域３００２に表示された実行アイコンがクリックされた際に、抽出したオブジェクトの識別情報群をオブジェクト通信部２８０７に送出する（ステップＳ３６０２）。
【０１５８】
次に、オブジェクト通信部２８０７は、オブジェクト実行部２８０５から受け取ったオブジェクトの識別情報群のうち、連携処理を開始する開始部分となるオブジェクトの識別情報に基づいて、内部処理の実行を要求するメッセージを送信する（ステップＳ３６０３）。オブジェクトにメッセージが送出された後は、上述の実施の形態で説明したオブジェクト間における連携処理が行われる。
【０１５９】
このように、オブジェクト実行部２８０５と、上述の実施の形態にかかるオブジェクトが備える実行部５０２と、を連携させることにより、連携処理を行うオブジェクトを組み合わせたソフトウェアを作成することができる。
【０１６０】
以上、本実施の形態にかかるＰＣ１００によれば、オブジェクトに連携処理を行わせるソフトウェアの開発が可能なソフトウェア開発環境を提供することができる。
【０１６１】
（第４実施の形態）
第１実施の形態および第２実施の形態では、ＭＥＭ−Ｃ２０９に格納されているソフトウェアを起動して、ＲＡＭ２０５ｂ上にオブジェクト１０５を実体化する例について説明したが、これに限定するものではない。プログラムをＰＣ１００にインストールし、当該プログラムを起動することによりオブジェクト１０５を実体化できる媒体であればよい。
【０１６２】
図３７は、オブジェクトを実体化できるプログラムを格納する記憶媒体の一例を示す図である。
【０１６３】
図３７（ａ）は、ＰＣ１００が備えるＨＤＤ２１０にインストールされているプログラムを起動することによりオブジェクト１０５をＲＡＭ２０５ｂ上に実体化する例を示す図である。この場合、ＨＤＤ２１０が記憶媒体に相当する。
【０１６４】
図３７（ｂ）は、ＰＣ１００が記憶媒体３７０１を着脱可能なインターフェースを備える場合、またはＰＣ１００に記憶媒体を組み込むことが可能な場合に、当該記憶媒体に一時的または永続的に格納されているプログラムを起動することにより、オブジェクト１０５をＲＡＭ２０５ｂ上に実体化する例を示す図である。なお、記憶媒体は、図３７（ｃ）に示すように、フレキシブルディスク３７０２、ＣＤ−ＲＯＭ（Compact  Disc  Read  Only  Memory）３７０３、ＭＯ（Magneto  Optical）ディスク３７０４、ＤＶＤ（Digital  Versatile  Disc）３７０６、磁気ディスク３７０５、半導体メモリ３７０７などが利用できる。
【０１６５】
図３７（ｄ）は、ＰＣ１００がＬＡＮ（Local  Area  Network）インターネット等のネットワークに接続され、ネットワーク上のダウンロードサイト３７０８から有線または無線でプログラムをＰＣ１００のＨＤＤ２１０にダウンロードし、ダウンロードしたプログラムを起動することにより、オブジェクト１０５をＲＡＭ２０５ｂ上に実体化する例を示す図である。この場合、ダウンロードサイト３７０８が記憶媒体に相当する。
【図面の簡単な説明】
【０１６６】
【図１】第１実施の形態にかかるＰＣのハードウェアおよびソフトウェアの構成を説明するための説明図である。
【図２】第１実施の形態にかかるＰＣのハードウェア構成を示すブロック図である。
【図３】オブジェクトのＵＭＬクラス図である。
【図４】印刷処理を行うオブジェクトの関係を示す図である。
【図５】テキスト読込オブジェクトおよびテキスト印刷オブジェクトの機能構成を示すブロック図である。
【図６】テキスト読込オブジェクトからテキスト印刷オブジェクトにメッセージを送信する処理手順を示すフローチャートである。
【図７Ａ】設定情報記憶部に記憶されている設定情報の一例を示す図である。
【図７Ｂ】選択カーソルにチェックが入っている設定情報値に従って文字変換処理を実行する例の説明図である。
【図８】実行部により生成されるメッセージの一例を示す図である。
【図９】メッセージを受信したテキスト印刷オブジェクトが内部処理（印刷処理）を行う際の処理手順を示すフローチャートである。
【図１０】実行判断情報記憶部に記憶されている実行判断情報の一例を示す図である。
【図１１】内部処理を実行することができないと判断された場合の処理手順を示すフローチャートである。
【図１２】生成部により生成される不整合通知メッセージの一例を示す図である。
【図１３】内部処理を実行することができると判断された場合の処理手順を示すフローチャートである。
【図１４】不整合通知メッセージを受信した場合の処理手順を示すフローチャートである。
【図１５】連携処理を行うオブジェクトを模式的に示すブロック図である。
【図１６】スキャン処理およびＱＲコードの解析処理を行うオブジェクトの関係を示す図ある。
【図１７】スキャンオブジェクトのＵＭＬクラス図である。
【図１８】ＱＲコード解析オブジェクトのＵＭＬクラス図である。
【図１９】スキャンオブジェクトおよびＱＲコード解析オブジェクトの機能構成を示すブロック図である。
【図２０】スキャンオブジェクトからＱＲコードオブジェクトにメッセージを送信する処理手順を示すフローチャートである。
【図２１】選択カーソルにチェックが入っている設定情報値に従って仮実行を行う例の説明図である。
【図２２】仮実行部により生成されるメッセージの一例を示す図である。
【図２３】内部処理を実行することができると判断された場合の処理手順を示すフローチャートである。
【図２４】不整合通知メッセージを受信した場合の処理手順を示すフローチャートである。
【図２５】不整合通知メッセージの一例を示す図である。
【図２６】連携処理を行うオブジェクトを模式的に示すブロック図である。
【図２７】ソフトウェア開発システムの構成を示す説明図である。
【図２８】ＰＣ上に実現されるソフトウェア開発環境の機能構成を示すブロック図である。
【図２９】表示部の詳細な機能構成を示すブロック図である。
【図３０】ビットマップスクリーンの画面構成の一例を示す図である。
【図３１】テキストエディタなどによる文字入力手段を用いてソフトウェア開発を行う場合におけるビットマップスクリーンの画面構成を示す図である。
【図３２】ＣＡＳＥツールを用いてソフトウェア開発を行う場合におけるビットマップスクリーンの画面構成を示す図である。
【図３３】オブジェクトの仮実行部に仮実行を行わせる処理のフローチャートである。
【図３４】オブジェクト間で不整合通知メッセージが送受信された場合の処理の説明図である。
【図３５】オブジェクト間で処理結果メッセージが送受信された場合の処理の説明図である。
【図３６】オブジェクトの実行部に内部処理を行わせる処理のフローチャートである。
【図３７】オブジェクトを実体化できるプログラムを格納する記憶媒体の一例を示す図である。
【符号の説明】
【０１６７】
１００，２７０１  ＰＣ
１０１  ウェブブラウザ
１０２  エンジン
１０３  ウェブサーバ
１０４  ＣＧＩ
１０５  オブジェクト
１０６  オペレーティングシステム
１０７  ハードウェアリソース
２００  コントローラ
２０１  ＵＳＢインターフェース
２０２  ＩＥＥＥ１３９４インターフェース
２０３  ＰＣＩバス
２０４  ＣＰＵ
２０５  ＭＥＭ−Ｐ
２０５ａ  ＲＯＭ
２０５ｂ  ＲＡＭ
２０６  ＮＢ
２０７  ＳＢ
２０８  ＡＳＩＣ
２０９  ＭＥＭ−Ｃ
２１０  ＨＤＤ
２１１  操作表示部
４０１  テキストファイル読込オブジェクト
４０２  テキスト印刷オブジェクト
５０１  設定情報記憶部
５０２  実行部
５０３，１９０２  送信部
５０４  通信部
５０５  受信部
５０６  実行判断情報記憶部
５０７  判断部
５０８  生成部
５０９  不整合判断部
５１０  共通の通信路
１５０１  オブジェクトＡ
１５０２  オブジェクトＢ
１５０３  オブジェクトＣ
１６０１  スキャンオブジェクト
１６０２  ＱＲコード解析オブジェクト
１９０１  仮実行部
２７００  ソフトウェア開発システム
２７０２  デバイス
２７０３  インターネット
２８００  ソフトウェア開発環境
２８０１  入力部
２８０２  編集部
２８０３  表示部
２８０３ａ  オブジェクト一覧表示部
２８０３ｂ  オブジェクトレイアウト表示部
２８０４  オブジェクト仮実行部
２８０５  オブジェクト実行部
２８０６  オブジェクト監視部
２８０７  オブジェクト通信部
３０００，３１００，３２００  ビットマップスクリーン
３００１，３２０１  オブジェクト一覧表示領域
３００２，３２０２，３５０３  オブジェクトレイアウト表示領域
３１０１  文字列表示領域
３７０１  記憶媒体
３７０２  フレキシブルディスク
３７０３  ＣＤ−ＲＯＭ
３７０４  ＭＯディスク
３７０５  磁気ディスク
３７０６  ＤＶＤ
３７０７  半導体メモリ
３７０８  ダウンロードサイト
【図１】
2010072880.tif 000003
【図２】
2010072880.tif 000004
【図３】
2010072880.tif 000005
【図４】
2010072880.tif 000006
【図５】
2010072880.tif 000007
【図６】
2010072880.tif 000008
【図７Ａ】
2010072880.tif 000009
【図７Ｂ】
2010072880.tif 000010
【図８】
2010072880.tif 000011
【図９】
2010072880.tif 000012
【図１０】
2010072880.tif 000013
【図１１】
2010072880.tif 000014
【図１２】
2010072880.tif 000015
【図１３】
2010072880.tif 000016
【図１４】
2010072880.tif 000017
【図１５】
2010072880.tif 000018
【図１６】
2010072880.tif 000019
【図１７】
2010072880.tif 000020
【図１８】
2010072880.tif 000021
【図１９】
2010072880.tif 000022
【図２０】
2010072880.tif 000023
【図２１】
2010072880.tif 000024
【図２２】
2010072880.tif 000025
【図２３】
2010072880.tif 000026
【図２４】
2010072880.tif 000027
【図２５】
2010072880.tif 000028
【図２６】
2010072880.tif 000029
【図２７】
2010072880.tif 000030
【図２８】
2010072880.tif 000031
【図２９】
2010072880.tif 000032
【図３０】
2010072880.tif 000033
【図３１】
2010072880.tif 000034
【図３２】
2010072880.tif 000035
【図３３】
2010072880.tif 000036
【図３４】
2010072880.tif 000037
【図３５】
2010072880.tif 000038
【図３６】
2010072880.tif 000039
【図３７】
2010072880.tif 000040