(57)【要約】【課題】エミュレータを用いて行うアプリケーションについて、より動作検証時間の短縮化を図る。【解決手段】アプリ開発装置１に対して複数のＭＦＰ２を接続する。アプリ開発装置１は、開発アプリケーション４から呼び出されたＩ／Ｆ処理を、内部のプラットフォームエミュレータ３で処理可能か否かを判別すると共に、接続されている複数のＭＦＰ２の現在の稼働状態を検出する。そして、開発アプリケーション４から呼び出されたＩ／Ｆ処理が、内部のプラットフォームエミュレータ３で処理できない場合に、稼働していない複数のＭＦＰ２に分散させてＩ／Ｆ処理の実行要求を行う。これにより、一連のＩ／Ｆ処理を各ＭＦＰ２で分散処理できるため、Ｉ／Ｆ処理の呼び出しにかかる時間を短縮化でき、エミュレータを用いた開発アプリケーションについて、より動作検証時間の短縮化を図ることができる。【選択図】図１
2015230556.tif 000002
【特許請求の範囲】
【請求項１】
複数の実機と接続される情報処理装置であって、
アプリケーションの処理を実行することで、前記実機の機能を擬似的に実現するエミュレータ部と、
前記エミュレータ部で可能となる処理の情報、および前記実機で可能な処理の情報を参照し、前記アプリケーションの処理を、前記エミュレータ部で実行可能か否かを判定する判定部と、
複数の前記実機の稼働状態を取得する状態取得部と、
前記判定部で、前記アプリケーションの処理が、前記エミュレータ部で実行可能と判定された場合に、該実行可能な第一の処理を実行させるために、前記エミュレータ部を選択し、前記エミュレータ部で実行できないと判定された場合に、前記状態取得部で取得された稼働状態から未稼働の前記実機を複数検出し、検出した未稼働の複数の前記実機に対して、前記エミュレータ部で実行できない第二の処理を分散させて割り当てる実機として選択する選択部と、
前記選択部で選択された各前記実機に対して、前記第二の処理を分散させて実行要求すると共に、各前記実機から前記第二の処理の処理結果を取得して、前記アプリケーションに返信する外部呼出し部と
を有することを特徴とする情報処理装置。
【請求項２】
前記実機は、稼働中であっても実行要求の受け付けを行い、
前記選択部は、前記エミュレータ部で実行できないと判定された場合に、早く次の稼働を開始できる前記実機を優先して、複数の前記実機を選択すること
を特徴とする請求項１に記載の情報処理装置。
【請求項３】
各前記実機の処理経過情報を取得する情報取得部を、さらに備え、
前記選択部は、前記エミュレータ部で実行できないと判定された場合に、前記処理経過情報から、残りの処理が少ない前記実機を優先して、複数の前記実機を選択すること
を特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記選択部は、前記エミュレータ部で実行できないと判定された場合において、複数の前記実機を検出できないときには、一定時間経過後に、再度、複数の前記実機の検出を試みること
を特徴とする請求項１〜請求項３のうち、いずれか一項に記載の情報処理装置。
【請求項５】
複数の実機を備えた情報処理システムであって、
アプリケーションの処理を実行することで、前記実機の機能を擬似的に実現するエミュレータ部と、
前記エミュレータ部で可能となる処理の情報、および前記実機で可能な処理の情報を参照し、前記アプリケーションの処理を、前記エミュレータ部で実行可能か否かを判定する判定部と、
複数の前記実機の稼働状態を取得する状態取得部と、
前記判定部で、前記アプリケーションの処理が、前記エミュレータ部で実行可能と判定された場合に、該実行可能な第一の処理を実行させるために、前記エミュレータ部を選択し、前記エミュレータ部で実行できないと判定された場合に、前記状態取得部で取得された稼働状態から未稼働の前記実機を複数検出し、検出した未稼働の複数の前記実機に対して、前記エミュレータ部で実行できない第二の処理を分散させて割り当てる実機として選択する選択部と、
前記選択部で選択された各前記実機に対して、前記第二の処理を分散させて実行要求すると共に、各前記実機から前記第二の処理の処理結果を取得して、前記アプリケーションに返信する外部呼出し部と
を有することを特徴とする情報処理システム。
【請求項６】
前記実機は、稼働中であっても実行要求の受け付けを行い、
前記選択部は、前記エミュレータ部で実行できないと判定された場合に、早く次の稼働を開始できる前記実機を優先して、複数の前記実機を選択すること
を特徴とする請求項５に記載の情報処理システム。
【請求項７】
各前記実機の処理経過情報を取得する情報取得部を、さらに備え、
前記選択部は、前記エミュレータ部で実行できないと判定された場合に、前記処理経過情報から、残りの処理が少ない前記実機を優先して、複数の前記実機を選択すること
を特徴とする請求項５に記載の情報処理システム。
【請求項８】
前記選択部は、前記エミュレータ部で実行できないと判定された場合において、複数の前記実機を検出できないときには、一定時間経過後に、再度、複数の前記実機の検出を試みること
を特徴とする請求項５〜請求項７のうち、いずれか一項に記載の情報処理システム。
【請求項９】
コンピュータを、
アプリケーションの処理を実行することで、実機の機能を擬似的に実現するエミュレータ部で可能となる処理の情報、および前記実機で可能な処理の情報を参照し、前記アプリケーションの処理を、前記エミュレータ部で実行可能か否かを判定する判定部と、
外部接続された複数の実機の稼働状態を取得する状態取得部と、
前記判定部で、前記アプリケーションの処理が、前記エミュレータ部で実行可能と判定された場合に、該実行可能な第一の処理を実行させるために、前記エミュレータ部を選択し、前記エミュレータ部で実行できないと判定された場合に、前記状態取得部で取得された稼働状態から未稼働の前記実機を複数検出し、検出した未稼働の複数の前記実機に対して、前記エミュレータ部で実行できない第二の処理を分散させて割り当てる実機として選択する選択部と、
前記選択部で選択された各前記実機に対して、前記第二の処理を分散させて実行要求すると共に、各前記実機から前記第二の処理の処理結果を取得して、前記アプリケーションに返信する外部呼出し部として機能させること
を特徴とする情報処理プログラム。
【請求項１０】
前記実機は、稼働中であっても実行要求の受け付けを行い、
前記選択部は、前記エミュレータ部で実行できないと判定された場合に、早く次の稼働を開始できる前記実機を優先して、複数の前記実機を選択すること
を特徴とする請求項９に記載の情報処理プログラム。
【請求項１１】
前記コンピュータを、各前記実機の処理経過情報を取得する情報取得部として、さらに機能させ、
前記選択部は、前記エミュレータ部で実行できないと判定された場合に、前記処理経過情報から、残りの処理が少ない前記実機を優先して、複数の前記実機を選択すること
を特徴とする請求項９に記載の情報処理プログラム。
【請求項１２】
前記選択部は、前記エミュレータ部で実行できないと判定された場合において、複数の前記実機を検出できないときには、一定時間経過後に、再度、複数の前記実機の検出を試みること
を特徴とする請求項９〜請求項１１のうち、いずれか一項に記載の情報処理プログラム。
【請求項１３】
判定部が、アプリケーションの処理を実行することで、実機の機能を擬似的に実現するエミュレータ部で可能となる処理の情報、および前記実機で可能な処理の情報を参照し、前記アプリケーションの処理を、前記エミュレータ部で実行可能か否かを判定する判定ステップと、
状態取得部が、外部接続された複数の実機の稼働状態を取得する状態取得ステップと、
選択部が、前記判定ステップで、前記アプリケーションの処理が、前記エミュレータ部で実行可能と判定された場合に、該実行可能な第一の処理を実行させるために、前記エミュレータ部を選択し、前記エミュレータ部で実行できないと判定された場合に、前記状態取得ステップで取得された稼働状態から未稼働の前記実機を複数検出し、検出した未稼働の複数の前記実機に対して、前記エミュレータ部で実行できない第二の処理を分散させて割り当てる実機として選択する選択ステップと、
外部呼出し部が、前記選択ステップで選択された各前記実機に対して、前記第二の処理を分散させて実行要求すると共に、各前記実機から前記第二の処理の処理結果を取得して、前記アプリケーションに返信する外部呼出しステップと
を有する情報処理方法。
【請求項１４】
前記実機は、稼働中であっても実行要求の受け付けを行い、
前記選択ステップでは、前記選択部が、前記エミュレータ部で実行できないと判定された場合に、早く次の稼働を開始できる前記実機を優先して、複数の前記実機を選択すること
を特徴とする請求項１３に記載の情報処理方法。
【請求項１５】
情報取得部が、各前記実機の処理経過情報を取得する情報取得ステップを、さらに備え、
前記選択ステップでは、前記選択部が、前記エミュレータ部で実行できないと判定された場合に、前記処理経過情報から、残りの処理が少ない前記実機を優先して、複数の前記実機を選択すること
を特徴とする請求項１３に記載の情報処理方法。
【請求項１６】
前記選択ステップでは、前記選択部が、前記エミュレータ部で実行できないと判定された場合において、複数の前記実機を検出できないときには、一定時間経過後に、再度、複数の前記実機の検出を試みること
を特徴とする請求項１３〜請求項１５のうち、いずれか一項に記載の情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システム、情報処理プログラム、および情報処理方法に関する。
【背景技術】
【０００２】
今日において、プリンタ機能、コピー機能、スキャナ機能、およびファクシミリ機能等の各種機能のうち、２つ以上の機能を備える複合機（ＭＦＰ：Multifunction  Peripheral）が知られている。また、ＡＰＩ（Application  Program  Interface）がサードベンダ等の外部に公開されたアプリケーションプラットフォームを備えたＭＦＰも知られている。ＡＰＩを外部に公開することで、サードベンダ等は、ＡＰＩが公開されたアプリケーションプラットフォーム用のアプリケーションプログラム（以下、単に「アプリケーション」という）を開発して提供することが可能となる。ユーザは、所望のアプリケーションを取得し、ＭＦＰにインストールする。これにより、サードベンダ等によって開発されたアプリケーションによる新たな機能を、ＭＦＰに追加することができる。
【０００３】
一方、ＡＰＩが公開されているアプリケーションプラットフォームにおいても、機能強化等のためにバージョンアップが行われる。また、ソフトウェアアーキテクチャの見直し等が行われる場合もある（以下、いずれについても「新バージョンプラットフォーム」という）。このような新バージョンプラットフォームに対応するアプリケーションは、新バージョンプラットフォームのリリースと同時に、ユーザ等に対して提供可能であることが好ましい。このためには、サードベンダ等は、ＭＦＰのメーカー側で行われる新バージョンプラットフォームの開発と並行して、新バージョンプラットフォームに対する既存のアプリケーションの動作検証を行う必要がある。また、サードベンダ等は、ＭＦＰのメーカー側で行われる新バージョンプラットフォームの開発と並行して、新バージョンプラットフォームに対応する新たなアプリケーションの開発等を行う必要がある。
【０００４】
ここで、ＭＦＰのメーカー側から、開発中の新バージョンプラットフォームが提供されれば、サードベンダ等は、新バージョンプラットフォームを用いて、対応するアプリケーションの開発等を行うことが可能となる。
【０００５】
しかし、新バージョンプラットフォームをサードベンダ等の第三者に提供した場合、ＭＦＰのメーカーのソフトウェア資産の流出が懸念される。このため、通常、メーカー側からサードベンダ等に対しては、新バージョンプラットフォームがインストールされたＭＦＰの擬似的な動作を、パーソナルコンピュータ装置上で実現するエミュレータが提供される。サードベンダ等は、開発したアプリケーションを、メーカー側から提供されたエミュレータ上で動作させながら、開発および動作検証等を行っていた。
【０００６】
また、メーカー側から提供されたエミュレータに、サードベンダ側で開発したアプリケーションの動作検証の対象となる新機能が設けられていない場合がある。この場合、サードベンダは、開発したアプリケーションを、動作検証の対象となる新機能が設けられているＭＦＰ（実機）に転送して動作検証を行っていた。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、エミュレータに設けられていない新機能に対する動作検証を実機で行う場合において、新機能が実機の印刷処理またはスキャン処理等のデバイス制御を伴うと、以下の問題を生ずる。すなわち、実機のデバイス制御は、用紙の搬送動作等の物理的な動作による処理時間が発生する。このため、物理的な動作を架空に行うエミュレータに比べて、動作検証（評価）に長時間を要する問題があった。
【０００８】
換言すると、エミュレータの場合、物理的な動作が行われたものと仮定して情報処理を進行できるため、用紙の搬送動作等の物理的な動作による処理時間を極力短縮化できる。しかし、実機でアプリケーションの動作検証を行う場合は、用紙の搬送動作等の物理的な動作の省略は困難である。このため、物理的な動作による処理時間が発生し、エミュレータに比べて、動作検証（評価）に長時間を要する問題があった。
【０００９】
本発明は、上述の課題に鑑みてなされたものであり、エミュレータを用いて行うアプリケーションについて、より動作検証時間の短縮化を可能とした情報処理装置、情報処理システム、情報処理プログラム、および情報処理方法の提供を目的とする。
【課題を解決するための手段】
【００１０】
本発明は、複数の実機と接続される情報処理装置であって、上述した課題を解決し、目的を達成するために、アプリケーションの処理を実行することで、実機の機能を擬似的に実現するエミュレータ部と、エミュレータ部で可能となる処理の情報、および実機で可能な処理の情報を参照し、アプリケーションの処理を、エミュレータ部で実行可能か否かを判定する判定部と、複数の実機の稼働状態を取得する状態取得部と、判定部で、アプリケーションの処理が、エミュレータ部で実行可能と判定された場合に、実行可能な第一の処理を実行させるために、エミュレータ部を選択し、エミュレータ部で実行できないと判定された場合に、状態取得部で取得された稼働状態から未稼働の実機を複数検出し、検出した未稼働の複数の実機に対して、エミュレータ部で実行できない第二の処理を分散させて割り当てる実機として選択する選択部と、選択部で選択された各実機に対して、第二の処理を分散させて実行要求すると共に、各実機から第二の処理の処理結果を取得して、アプリケーションに返信する外部呼出し部とを有する。
【発明の効果】
【００１１】
本発明によれば、エミュレータを用いて行うアプリケーションについて、より動作検証時間の短縮化を図ることができるという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施の形態となるアプリ開発システムのシステム構成図である。
【図２】図２は、実施の形態となるアプリ開発システムに設けられているアプリ開発装置のハードウェア構成図である。
【図３】図３は、実施の形態となるアプリ開発システムに設けられているアプリ開発装置における、Ｉ／Ｆ処理の分散処理の流れを示す図である。
【図４】図４は、実施の形態となるアプリ開発システムに設けられているアプリ開発装置がＭＦＰから取得する実装情報（外部Ｉ／Ｆ情報表）の一例を示す図である。
【図５】図５は、実施の形態となるアプリ開発システムに設けられているアプリ開発装置の実装情報（内部Ｉ／Ｆ情報表）の一例を示す図である。
【図６】図６は、外部のＭＦＰで実行される各Ｉ／Ｆ処理、同期処理情報、および各Ｉ／Ｆ処理に要する処理時間を示す図である。
【図７】図７は、アプリ開発装置のプラットフォームエミュレータで実行される各Ｉ／Ｆ処理、および各Ｉ／Ｆ処理に要する処理時間を示す図である。
【図８】図８は、アプリ開発装置のプラットフォームエミュレータ、および１台のＭＦＰでＩ／Ｆ処理を実行した場合の合計処理時間、およびアプリ開発装置のプラットフォームエミュレータ、および２台のＭＦＰでＩ／Ｆ処理を実行した場合の合計処理時間を示す図である。
【発明を実施するための形態】
【００１３】
以下、添付図面を参照して、本発明に係る情報処理装置、情報処理システム、情報処理プログラム、および情報処理方法を適用した実施の形態のアプリケーション開発システム（アプリ開発システム）を詳細に説明する。
【００１４】
（概要）
実施の形態のアプリ開発システムは、アプリケーションの動作検証を行うエミュレータがインストールされたパーソナルコンピュータ装置、およびエミュレータに対応する複数の実機を有している。パーソナルコンピュータ装置のエミュレータは、アプリケーションの動作検証をエミュレータで行う際に、呼び出されたインタフェース処理（Ｉ／Ｆ処理）をエミュレータが現在備えている機能で処理（内部処理）可能か否かを判別する。そして、内部処理困難（内部処理できない）と判別した場合、エミュレータは、複数の実機の状態を確認し、デバイス処理を行っていない実機に対して、エミュレータが内部処理できないＩ／Ｆ処理を割り振る。これにより、Ｉ／Ｆ処理を複数の実機に分散でき、エミュレータが内部処理できないＩ／Ｆ処理を外部の実機に委ねた場合でも、アプリケーションについて、動作検証等に要する時間をより短縮化できる。
【００１５】
（実施の形態）
図１に、実施の形態となるアプリ開発システムのシステム構成図を示す。この図１に示すように、アプリ開発システムは、アプリ開発装置１および複数の複合機（ＭＦＰ：Multifunction  Peripheral）２を有している。なお、ＭＦＰ２は実機の一例であり、プリンタ機能、コピー機能、スキャナ機能、およびファクシミリ機能等の各種画像形成機能のうち、２つ以上の画像形成機能を備える機器である。アプリ開発装置１および複数のＭＦＰ２は、ネットワークを介して相互に接続されている。なお、アプリ開発装置１および複数のＭＦＰ２は、通信ケーブルを介して相互に接続してもよい。また、アプリ開発装置１および複数のＭＦＰ２は、相互に無線通信可能に接続してもよい。
【００１６】
また、ＭＦＰ２として、プリンタ機能、コピー機能、スキャナ機能、およびファクシミリ機能等の各種画像形成機能のうち、いずれか一つの機能を有する機器を、ＭＦＰ２として用いてもよい。また、プロジェクタ装置、テレビ会議システム、またはデジタルカメラなどの機器を、ＭＦＰ２の代わりに用いてもよい。
【００１７】
ＭＦＰ２は、各種アプリケーションを動作させるプラットフォーム（アプリケーションの開発および実行環境を実現するプログラム）を備えている。ＭＦＰ２のプラットフォームは、メーカー側で開発中のプラットフォームとなっている。または、ＭＦＰ２のプラットフォームは、メーカー側で、一旦、開発が終了し、次回のバージョンアップを待つプラットフォームとなっている。また、図１中、第１のＭＦＰおよび第２のＭＦＰの、計２つのＭＦＰ２が図示されているが、３つ以上のＭＦＰ２を設けてもよい。
【００１８】
アプリ開発装置１は、ＭＦＰ２で動作するアプリケーションを開発しているサードベンダ等の機器となっている。アプリ開発装置１としては、アプリケーション開発専用の機器でもよいし、通常のパーソナルコンピュータ装置でもよい。アプリ開発装置１には、プラットフォームエミュレータ３、開発アプリケーション４、およびテスト実行部５が記憶されている。プラットフォームエミュレータ３は、メーカー側から公開されており、アプリ開発装置１を、ＭＦＰ２として擬似的に動作させるためのプログラムとなっている。開発アプリケーション４は、ＭＦＰ２に対して新たな機能を追加するために、サードベンダが開発しているアプリケーションプログラムである。図１の例は、サードベンダが、第１のアプリケーション４ａおよび第２のアプリケーション４ｂを開発している例である。テスト実行部５は、プラットフォームエミュレータ３上で開発アプリケーション４の動作検証を行うプログラムである。
【００１９】
プラットフォームエミュレータ３は、エミュレータの一例として、スキャンエミュレータ６、プリントエミュレータ７、ファクシミリエミュレータ８、コピーエミュレータ９、およびパネルエミュレータ１０を有している。スキャンエミュレータ６は、ＭＦＰ２のスキャナ機能に対応するプログラムである。アプリ開発装置１は、スキャンエミュレータ６に従って、ＭＦＰ２のスキャナ装置として擬似的に動作する。プリントエミュレータ７は、ＭＦＰ２のプリンタ機能に対応するプログラムである。アプリ開発装置１は、プリントエミュレータ７に従って、ＭＦＰ２のプリンタ装置として擬似的に動作する。
【００２０】
ファクシミリエミュレータ８は、ＭＦＰ２のファクシミリ機能に対応するプログラムである。アプリ開発装置１は、ファクシミリエミュレータ７に従って、ＭＦＰ２のファクシミリ装置として擬似的に動作する。コピーエミュレータ９は、ＭＦＰ２のコピー機能に対応するプログラムである。アプリ開発装置１は、コピーエミュレータ９に従って、ＭＦＰ２のコピー装置として擬似的に動作する。パネルエミュレータ１０は、ＭＦＰ２の操作パネルに対応するプログラムである。アプリ開発装置１は、パネルエミュレータ１０に従って、ＭＦＰ２の操作パネルとして擬似的に動作する。
【００２１】
次に、アプリ開発装置１は、各エミュレータ６〜１０と共に、実装情報取得部１１、状態取得部１２、外部呼出し部１３、判定部１４、選択部１５、および記憶制御部１６を有している。
【００２２】
実装情報取得部１１は、ＭＦＰ２のプラットフォームに実装済みのＡＰＩの一覧情報（実装情報）を、ＭＦＰ２から取得する。ＡＰＩは、「Application  Program  Interface」の略記である。ＭＦＰ２のプラットフォームが開発中である場合、プラットフォームに実装されるＡＰＩも順次更新される。そして、ＭＦＰ２内において、更新されたＡＰＩの一覧を示す実装情報が生成される。実装情報取得部１１は、このような実装情報をＭＦＰ２から取得する。記憶制御部１６は、取得された実装情報を、図２に示すＨＤＤ２６またはＲＡＭ２７等の記憶部に記憶する。
【００２３】
状態取得部１２は、各ＭＦＰ２から、現在の状態を示す状態情報を取得する。具体的には、ＭＦＰ２は、例えばスキャン処理、または、プリント処理などのデバイス処理毎に実行中であるか否かを示す状態情報を生成している。後述するが、アプリ開発装置１は、プラットフォームエミュレータ３で開発中のアプリケーションのＩ／Ｆ処理を行うことができない場合、各ＭＦＰ２にＩ／Ｆ処理を分散させて委ねる。状態取得部１２は、プラットフォームエミュレータ３で開発中のアプリケーションのＩ／Ｆ処理を行うことはできないと判別された際に、各ＭＦＰ２と通信を行い、状態情報を取得する。
【００２４】
外部呼出し部１３は、開発中のアプリケーションのＩ／Ｆ処理を委ねるＭＦＰ２に対して、Ｉ／Ｆ処理の実行要求を行う。後述するが、外部呼出し部１３は、Ｉ／Ｆ処理が完了するまで待機する「同期処理」、または、Ｉ／Ｆ処理後にイベントを発生させて処理結果を取得する「非同期処理」のうち、いずれの処理を行うかを、実行要求するＩ／Ｆ処理に応じて判断する。
【００２５】
判定部１４は、プラットフォームエミュレータ３に実装されているＡＰＩの一覧を示す実装情報、および外部のＭＦＰ２から取得したＡＰＩの一覧を示す実装情報を比較する。そして、判定部１４は、比較結果から、開発中のアプリケーションのＩ／Ｆ処理を、アプリ開発装置１で実行可能か、または、外部のＭＦＰ２に委ねるか、の判断を行う。判定部１４から、アプリ開発装置１内で実行可能であることを示す判定結果が得られた場合、プラットフォームエミュレータ３内の各エミュレータ６〜１０でＩ／Ｆ処理が実行される。また、判定部１４から、アプリ開発装置１内で実行できないことを示す判定結果が得られた場合、各ＭＦＰ２に分散されて、Ｉ／Ｆ処理が実行される。
【００２６】
選択部１５は、判定部１４から、アプリ開発装置１内で実行できないことを示す判定結果が得られた場合に、デバイス処理を実行していないＭＦＰ２を選択する。外部呼出し部１３は、選択部１５で選択された各ＭＦＰ２に分散させて、Ｉ／Ｆ処理の実行要求を行う。
【００２７】
このようなアプリ開発装置１の各機能は、後述する情報処理プログラムをＣＰＵ２１が実行することでソフトウェア的に実現してもよい。また、各機能の一部、または全部をハードウェアで実現してもよい。また、情報処理プログラムは、インストール可能な形式または実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）等のコンピュータ装置で読み取り可能な記録媒体に記録して提供してもよい。
【００２８】
また、情報処理プログラムは、ＣＤ−Ｒ、ＤＶＤ、ブルーレイディスク（登録商標）、半導体メモリ等のコンピュータ装置で読み取り可能な記録媒体に記録して提供してもよい。ＤＶＤは、「Digital  Versatile  Disk」の略記である。また、情報処理プログラムは、インターネット等のネットワーク経由で提供してもよい。また、情報処理プログラムを記憶したＲＯＭ等をパーソナルコンピュータ装置等の機器に予め組み込むかたちで、情報処理プログラムの提供を行ってもよい。
【００２９】
次に、図２に、アプリ開発装置１のハードウェア構成図を示す。図２に示すように、アプリ開発装置１は、ＣＰＵ２１、インタフェース２２、表示部２３、入力部２４、ドライブ装置２５、ＨＤＤ２６、およびＲＡＭ２７を有している。ＣＰＵ２１〜ＲＡＭ２７は、バスライン２８を介して相互に接続されている。ＣＰＵは、「Central  Processing  Unit」の略記である。ＨＤＤは、「Hard  disk  drive」の略記である。ＲＡＭは、「Random  Access  Memory」の略記である。
【００３０】
アプリ開発装置１の上述の各機能を実現する情報処理プログラムは、ＣＤ−ＲＯＭ、半導体メモリ等の記録媒体２９に記憶され提供される。ＣＰＵ２１は、装着された記録媒体２９から情報処理プログラムを読み出すように、ドライブ装置２５を制御する。また、ＣＰＵ２１は、記録媒体２９から読み出された情報処理プログラムで提供されているプラットフォームエミュレータ３等をＨＤＤ２６等に展開し、アプリ開発装置１で利用可能な状態とする（情報処理プログラムのインストール）。また、ＣＰＵ２１は、情報処理プログラムのインストール時において、実行ファイルおよび関連ファイルのコピー、レジストリ値の書き換え、およびＤＬＬ（Dynamic  Link  Library）ファイルの更新などの設定変更処理を行う。これにより、情報処理プログラムで提供されているプラットフォームエミュレータ３等が、アプリ開発装置１で利用可能となる。
【００３１】
なお、この例では、ＣＤ−ＲＯＭ、半導体メモリ等の記録媒体２９から情報処理プログラムを読み出して、アプリ開発装置１にインストールした。しかし、インターネット等のネットワークを介して情報処理プログラムをダウンロードし、アプリ開発装置１にインストールしてもよい。
【００３２】
ユーザにより、入力部２４を介してプラットフォームエミュレータ３の起動指示がされると、ＣＰＵ２１は、インストール済みのプラットフォームエミュレータ３をＨＤＤ２６から読み出し、ＲＡＭ２７に展開する。ＣＰＵ２１は、ＲＡＭ２７に展開されたプラットフォームエミュレータ３に従って、開発アプリケーション４のＩ／Ｆ処理等を実行制御する。
【００３３】
インタフェース２２は、ネットワークに接続するためのインタフェースとして用いられる。表示部２３は、プラットフォームエミュレータ３のＧＵＩ（Graphical  User  Interface）等を表示する。入力部２４は、ユーザの操作に対応した入力信号を供給するキーボードおよびマウス等の入力機器となっている。
【００３４】
次に、実施の形態のアプリ開発システムの動作説明をする。実施の形態のアプリ開発システムは、開発アプリケーション４のＩ／Ｆ処理が、アプリ開発装置１内に実装されている各エミュレータ６〜１０で処理できないと判断された場合に、外部のＭＦＰ２にＩ／Ｆ処理を分散して委ねるようになっている（分散処理）。図３のフローチャートに、アプリ開発装置１における分散処理の流れを示す。このフローチャートは、ユーザにより、入力部２４を介してプラットフォームエミュレータ３の起動が指示され、ＣＰＵ２１が、プラットフォームエミュレータ３をＲＡＭ２７に展開することで処理がスタートとなる。そして、ステップＳ１から処理が開始される。
【００３５】
まず、ステップＳ１では、実装情報取得部１１が、アプリ開発装置１に接続されている各ＭＦＰ２のＡＰＩの一覧を示す実装情報を取得する。取得された実装情報は、ステップＳ２において、記憶制御部１６により、図２に示すＨＤＤ２６またはＲＡＭ２７等の記憶部（実装情報保持部）に記憶される。
【００３６】
図４は、ＭＦＰ２から取得される実装情報（外部Ｉ／Ｆ情報表）の一例を示す図である。図４に示すように、ＭＦＰ２から取得される実装情報は、ＭＦＰ２に実装済みで処理可能なＩ／Ｆ名、Ｉ／Ｆ毎に定義された同期処理の有無（ＹｅｓまたはＮｏ）を示す同期処理情報、および稼働されるデバイスを示す稼働デバイス情報が含まれている。なお、同期処理情報は、ＭＦＰ２に委ねたＩ／Ｆ処理が完了するまで待機して処理結果を取得する場合、そのＩ／Ｆ処理の同期処理情報は「Ｙｅｓ（同期処理）」に定義される。これに対して、ＭＦＰ２に委ねたＩ／Ｆ処理後に、所望のタイミングでイベントを発生させて処理結果を取得する場合、そのＩ／Ｆ処理の同期処理情報は「Ｎｏ（非同期処理）」に定義される。
【００３７】
図４に示す例において、例えば「ｓｔａｒｔＳｃａｎ（）」のＩ／Ｆ名のＩ／Ｆ処理は、同期処理を行わないＩ／Ｆ処理として「Ｎｏ」が定義されており、また、このＩ／Ｆ処理により稼働されるデバイスは、スキャナエンジンであることが定義されている。同様に、「ｓｔａｒｔＰｒｉｎｔＥｘ（）」のＩ／Ｆ名のＩ／Ｆ処理は、同期処理を行わないＩ／Ｆ処理として「Ｎｏ」が定義されており、また、このＩ／Ｆ処理により稼働されるデバイスは、プリンタエンジンであることが定義されている。
【００３８】
一方、図５は、アプリ開発装置１の実装情報（内部Ｉ／Ｆ情報表）の一例を示す図である。実装情報取得部１１は、プラットフォームエミュレータ３の例えば起動時において、各エミュレータ６〜１０で処理可能なＩ／Ｆ処理に対応するＩ／Ｆ名を取得する。そして、実装情報取得部１１は、取得したＩ／Ｆの一覧をＨＤＤ２６またはＲＡＭ２７に記憶する。なお、この例においては、実装情報取得部１１は、各エミュレータ６〜１０で処理可能なＩ／Ｆ処理に対応するＩ／Ｆ名を取得することとした。しかし、実装情報取得部１１は、図４に示した外部Ｉ／Ｆ情報表のように、Ｉ／Ｆ名と共に、同期処理情報、および稼働デバイス情報等を取得してもよい。
【００３９】
次に、ステップＳ３において、判定部１４が、呼び出されたＩ／Ｆ処理が、プラットフォームエミュレータ３内で定義されているか否かを判別する。すなわち、判定部１４は、ユーザにより実行が指定されたＩ／Ｆ処理が、プラットフォームエミュレータ３内に実装されているか否かを判別する。具体的には、判定部１４は、ＨＤＤ２６またはＲＡＭ２７に記憶されている内部Ｉ／Ｆ情報表（図５参照）に、動作検証等を行っている開発アプリケーション４から呼び出されたＩ／Ｆ処理のＩ／Ｆ名が存在するか否かを判別する。内部Ｉ／Ｆ情報表に、開発アプリケーション４から呼び出されたＩ／Ｆ処理のＩ／Ｆ名が存在するものと判別した場合（ステップＳ３：Ｙｅｓ）、ステップＳ４に処理が進む。また、内部Ｉ／Ｆ情報表に、開発アプリケーション４から呼び出されたＩ／Ｆ処理のＩ／Ｆ名が存在しないものと判別した場合（ステップＳ３：Ｎｏ）、ステップＳ７に処理が進む。
【００４０】
内部Ｉ／Ｆ情報表に、開発アプリケーション４から呼び出されたＩ／Ｆ処理のＩ／Ｆ名が存在するということは、アプリ開発装置１内で、開発アプリケーション４から呼び出されたＩ／Ｆ処理を実行可能であることを意味する。このため、ステップＳ４において、開発アプリケーション４から呼び出されたＩ／Ｆ処理に対応するいずれかのエミュレータ６〜１０が動作し、Ｉ／Ｆ処理を実行して、処理をステップＳ５に進める。
【００４１】
ステップＳ５では、Ｉ／Ｆ処理を行ったいずれかのエミュレータ６〜１０が、開発アプリケーション４に対して処理結果を返答する。これにより、処理がステップＳ６に進む。ステップＳ６では、判定部１４が、開発アプリケーション４からＩ／Ｆ処理の終了命令を受信したか否かを判別する。判定部１４が、開発アプリケーション４からＩ／Ｆ処理の終了命令を受信した場合は、そのまま図３のフローチャートの処理が終了となる。これに対して、判定部１４が、開発アプリケーション４からＩ／Ｆ処理の終了命令を受信しない場合、処理がステップＳ３に戻り、再度、ステップＳ３からの処理が繰り返し行われる。
【００４２】
次に、ステップＳ３において、判定部１４が、開発アプリケーション４から呼び出されたＩ／Ｆ処理がプラットフォームエミュレータ３内で定義されていないものと判別することで処理がステップＳ７に進む。ステップＳ７では、状態取得部１２が、アプリ開発装置１に接続されている各ＭＦＰ２から、現在の状態を示す状態情報を取得する。具体的には、ＭＦＰ２は、例えばスキャン処理、または、プリント処理などのデバイス処理毎に実行中であるか否かを示す状態情報を生成している。状態取得部１２は、各ＭＦＰ２で生成されている状態情報を各ＭＦＰ２から取得する。これにより、処理がステップＳ８に進む。
【００４３】
ステップＳ８では、選択部１５が、状態取得部１２により取得された状態情報を参照して、デバイス処理を行っていない複数のＭＦＰ２を検出する。具体的には、開発アプリケーション４から呼び出されたＩ／Ｆ処理が例えばスキャナエンジンを使用するＩ／Ｆ処理である場合、選択部１５は、状態取得部１２により取得された状態情報を参照する。そして、選択部１５は、各ＭＦＰ２のスキャナエンジンの稼働状態を確認し、スキャナエンジンが稼働していない複数のＭＦＰ２の有無を判別する。
【００４４】
選択部１５は、デバイス処理を行っていない複数のＭＦＰ２が存在しないものと判別した場合（ステップＳ８：Ｎｏ）、処理をステップＳ１２に進める。ステップＳ１２では、選択部１５が、一定時間経過後に、処理をステップＳ８に戻す。そして、選択部１５は、ステップＳ８において、再度、デバイス処理を行っていない複数のＭＦＰ２の有無を判別する。
【００４５】
これに対して、選択部１５により、デバイス処理を行っていない複数のＭＦＰ２が存在するものと判別された場合（ステップＳ８：Ｙｅｓ）、処理がステップＳ９に進む。ステップＳ９では、選択部１５が、デバイス処理を行っていない複数のＭＦＰ２のうち、開発アプリケーション４から呼び出されたＩ／Ｆ処理を分散して委ねるＭＦＰ２を決定し、外部呼出し部１３に通知する。
【００４６】
ここで、この例は、選択部１５が、デバイス処理を行っていない複数のＭＦＰ２を選択する例であるが、以下のように変更してもよい。すなわち、各ＭＦＰ２を、稼働中であっても要求のみを受け付ける構成とする。そして、選択部１５は、他のＭＦＰ２より早く次の稼働を開始できるＭＦＰ２を優先して複数のＭＦＰ２を選択し、外部呼出し部１３に通知する。一例として、選択部１５は、最も早く次の稼働を開始できるＭＦＰ２から順に複数のＭＦＰ２を選択し、外部呼出し部１３に通知する。なお、選択部１５は、最も早く次の稼働を開始できるＭＦＰ２を検出できない場合、上述のステップＳ１２で説明したように、一定時間経過後に、最も早く次の稼働を開始できるＭＦＰ２の検出を、再度試みる。
【００４７】
または、実装情報取得部１１で取得される実装情報は、デバイスの利用情報（処理経過情報）を含む構成とする。選択部１５は、実装情報の稼働デバイス情報で示される各ＭＦＰ２で稼働中のデバイスがプリンタエンジンの場合、利用情報（処理経過情報）から、印刷残り枚数が少ないＭＦＰ２を優先して複数のＭＦＰ２を選択し、外部呼出し部１３に通知する。一例として、選択部１５は、印刷残り枚数が最も少ないＭＦＰ２から順に複数のＭＦＰ２を選択し、外部呼出し部１３に通知する。同様に一例として、選択部１５は、コピー残り枚数、スキャナ残り枚数、またはファクシミリ送信残り枚数が最も少ないＭＦＰ２から順に複数のＭＦＰ２を選択し、外部呼出し部１３に通知してもよい。なお、選択部１５は、残り枚数が最も少ないＭＦＰ２を検出できない場合、上述のステップＳ１２で説明したように、一定時間経過後に、残り枚数が少ないＭＦＰ２の優先的検出を、再度試みる。
【００４８】
次に、外部呼出し部１３は、開発アプリケーション４から呼び出されたＩ／Ｆ処理の実行要求を、選択部１５により選択された各ＭＦＰ２に分散させて行う。これにより、開発アプリケーション４から呼び出されたＩ／Ｆ処理が、選択部１５により選択された各ＭＦＰ２で並列処理される。実機であるＭＦＰ２を、開発したアプリケーションの動作検証に用いる場合、用紙の搬送動作等の物理的な動作による処理時間が発生し、エミュレータに比べて、動作検証（評価）に長時間を要する。しかし、実施の形態のアプリ開発システムの場合、開発アプリケーション４から呼び出されたＩ／Ｆ処理を、選択部１５により選択された各ＭＦＰ２で並列処理できる。このため、実機を用いた動作検証時間を、より短縮化することができる。
【００４９】
次に、ステップＳ１０において、外部呼出し部１３は、実装情報取得部１１で取得された実装情報のＩ／Ｆ名および同期処理情報を参照することで、現在、各ＭＦＰ２で分散処理されているＩ／Ｆ処理は、同期処理が必要なＩ／Ｆ処理であるか否かを判別する。すなわち、同期処理とは、Ｉ／Ｆ処理が完了するまでの間、プラットフォームエミュレータ３が待機状態となる処理をいう。これに対して、非同期処理とは、プラットフォームエミュレータ３が、Ｉ／Ｆ処理後にイベントを発生させて処理結果を取得する処理をいう。
【００５０】
例えば、図４に示すＩ／Ｆ名が「ｇｅｔＳｃａｎｉｎｎｇＣｏｎｄｉｔｉｏｎ（）」のＩ／Ｆ処理の場合、同期処理情報は、同期処理が必要であることを示す「Ｙｅｓ」となっている。これに対して、図４に示すＩ／Ｆ名が「ｓｔａｒｔＳｃａｎＥｘ（）」のＩ／Ｆ処理の場合、同期処理情報は、同期処理が不要であることを示す「Ｎｏ」となっている。外部呼出し部１３が同期処理情報を参照することで、現在、各ＭＦＰ２で分散処理されているＩ／Ｆ処理は、同期処理が必要なＩ／Ｆ処理であると判別された場合（ステップＳ１０：Ｙｅｓ）、処理はステップＳ１１に進む。また、外部呼出し部１３が同期処理情報を参照することで、現在、各ＭＦＰ２で分散処理されているＩ／Ｆ処理は、同期処理が不要なＩ／Ｆ処理であると判別された場合（ステップＳ１０：Ｎｏ）、処理はステップＳ６に進む。
【００５１】
ステップＳ１１では、外部呼出し部１３が、各ＭＦＰ２で分散処理されたＩ／Ｆ処理の処理結果をそれぞれ受信するまで待機する。外部呼出し部１３は、各ＭＦＰ２で分散処理されたＩ／Ｆ処理の処理結果をそれぞれ受信すると、分散処理されたＩ／Ｆ処理の呼出しを行った開発アプリケーション（＝Ｉ／Ｆ呼び出し元）に処理結果を返信し、処理をステップＳ６に進める。
【００５２】
これに対して、外部呼出し部１３が、現在、各ＭＦＰ２で分散処理されているＩ／Ｆ処理は、同期処理が不要なＩ／Ｆ処理であると判別することで、処理がステップＳ６に進むと、判定部１４が、開発アプリケーション４からＩ／Ｆ処理の終了命令を受信したか否かを判別する。すなわち、現在、各ＭＦＰ２で分散処理されているＩ／Ｆ処理が非同期処理である場合、判定部１４は、すぐに開発アプリケーションからの、次のＩ／Ｆ処理の呼出しを受け付ける。
【００５３】
判定部１４が、開発アプリケーション４からＩ／Ｆ処理の終了命令を受信した場合は（ステップＳ６：Ｙｅｓ）、そのまま図３のフローチャートの処理が終了となる。これに対して、判定部１４が、開発アプリケーション４からＩ／Ｆ処理の終了命令を受信しない場合（ステップＳ６：Ｎｏ）、処理がステップＳ３に戻り、再度、ステップＳ３からの処理が繰り返し行われる。
【００５４】
なお、現在、各ＭＦＰ２で分散処理されているＩ／Ｆ処理が、同期処理不要なＩ／Ｆ処理である場合、外部呼出し部１３は、Ｉ／Ｆ処理が完了した際に各ＭＦＰ２から送信される処理完了通知の受信を待つ。外部呼出し部１３は、各ＭＦＰ２から処理完了通知を受信すると、例えばＩ／Ｆ処理と次のＩ／Ｆ処理との間等の所定のタイミングで、各ＭＦＰ２から処理結果を取得する。そして、外部呼出し部１３は、取得した処理結果に対応するＩ／Ｆ処理の呼出しを行った開発アプリケーション（＝Ｉ／Ｆ呼び出し元）に処理結果を返信する。
【００５５】
次に、アプリ開発装置１に現在、実装されているプラットフォームエミュレータ３で処理できないＩ／Ｆ処理を、外部の１台のＭＦＰ２で処理した場合に要する処理時間と、外部の複数（例えば２台）のＭＦＰ２に分散させて処理した場合に要する処理時間との差を説明する。なお、以下に説明する処理時間の差は、図３のフローチャートに従って、一例として、「ｇｅｔＳｃａｎｎｉｎｇＣｏｎｄｉｔｉｏｎ（）」→「ｓｔａｒｔＳｃａｎ（）」→「ｇｅｔＳｃａｎｉｎｎｇＣｏｎｄｉｔｉｏｎ（）」→「ｓｔａｒｔＳｃａｎＥｘ（）」→「ｓｔａｒｔＳｃａｎＥｘ（）」→「ｇｅｔＰｒｉｎｔｉｎｇＣｏｎｄｉｔｉｏｎ（）」→「ｓｔａｒｔＰｒｉｎｔ（）」→「ｇｅｔＰｒｉｎｔｉｎｇＣｏｎｄｉｔｉｏｎＥｘ（）」→「ｓｔａｒｔＰｒｉｎｔ（）」→「ｓｔａｒｔＰｒｉｎｔＥｘ（）」の各Ｉ／Ｆ処理の呼び出し順でＩ／Ｆ処理を実行した場合の処理時間の差である。
【００５６】
図６は、外部のＭＦＰ２で実行される各Ｉ／Ｆ処理、同期処理情報、および各Ｉ／Ｆ処理に要する処理時間を示す図である。また、図７は、アプリ開発装置１のプラットフォームエミュレータ３で実行される各Ｉ／Ｆ処理、および各Ｉ／Ｆ処理に要する処理時間を示す図である。また、図８は、アプリ開発装置１のプラットフォームエミュレータ、および１台のＭＦＰ２でＩ／Ｆ処理を実行した場合の合計処理時間、およびアプリ開発装置１のプラットフォームエミュレータ３、および２台のＭＦＰ２でＩ／Ｆ処理を実行した場合の合計処理時間を示す図である。
【００５７】
外部のＭＦＰに委ねるＩ／Ｆ処理を、２台のＭＦＰ２に分散することで、２度目のｓｔａｒｔＳｃａｎＥｘ（）の呼び出しをＭＦＰ２で処理でき、また、その後のｓｔａｒｔＰｒｉｎｔＥｘ（）の２度目の呼び出しもＭＦＰ２で処理できる。このため、上述の一連のＩ／Ｆ処理の合計の処理時間がＭＦＰ１台の場合は「１９２秒」であるのに対して、ＭＦＰ２台の場合は「１０２秒」と大幅に短縮できる。
【００５８】
詳述すると、図８中、（ｈ）、（ｉ）、（ｇ）等の符号は、図６および図７に示す各Ｉ／Ｆ処理に対応している。すなわち、図６および図７に示す（ａ）〜（ｋ）の符号を付した各Ｉ／Ｆ処理の処理時間が、図８の（ｈ）、（ｉ）、（ｇ）等の符号で示される処理時間となっている。そして、図８は、１台のＭＦＰ２を用いて、上述の呼び出し順でＩ／Ｆ処理を実行した場合の処理時間の合計が、３秒（ｈ）＋１５秒（ｉ）＋３秒（ｈ）＋４０秒（ｃ）＋３秒（ｊ）＋２０秒（ｋ）＋８秒（ｅ）＋５０秒（ｇ）＋５０秒（ｇ）＝１９２秒であることを示している。また、図８は、２台のＭＦＰ２を用いて、上述の呼び出し順でＩ／Ｆ処理を分散して実行した場合の処理時間の合計が、３秒（ｈ）＋１５秒（ｉ）＋３秒（ｈ）＋３秒（ｊ）＋２０秒（ｋ）＋８秒（ｅ）＋５０秒（ｇ）＝１０２秒であることを示している。
【００５９】
１台のＭＦＰ２にＩ／Ｆ処理を委ねた場合、時間を要するｓｔａｒｔＳｃａｎＥｘ（）の呼び出しは、２回目の呼び出し時に機器が利用状態であることから、そのまま利用可能になるまで待つ必要がある。このため、１回目の呼び出しが終わる４０秒間は待機する必要がある。これに対して、２台のＭＦＰ２にＩ／Ｆ処理を分散させて委ねた場合、１回目の呼び出しを第１のＭＦＰ２で処理し、２回目の呼び出しを第２のＭＦＰ２で並行して処理できるため、４０秒分の処理時間の短縮化を図ることができる。同様に、１台のＭＦＰ２にＩ／Ｆ処理を委ねた場合、最後のｓｔａｒｔＰｒｉｎｔＥｘ（）は、この１台のＭＦＰ２で順番に処理されることから、５０秒×２＝１００秒かかる。これに対して、２台のＭＦＰ２にＩ／Ｆ処理を分散させて委ねた場合、ｓｔａｒｔＰｒｉｎｔＥｘ（）を第１のＭＦＰ２、および第２のＭＦＰ２で分散処理できるため、５０秒分の処理時間の短縮化を図ることができる。従って、１台のＭＦＰ２にＩ／Ｆ処理を委ねるよりも、２台のＭＦＰ２にＩ／Ｆ処理を分散させて委ねることで、９０秒の処理時間の短縮化を図ることができる。
【００６０】
以上の説明から明らかなように、実施の形態のアプリ開発システムは、アプリ開発装置１に対して複数のＭＦＰ２を接続する。アプリ開発装置１は、開発アプリケーション４から呼び出されたＩ／Ｆ処理を、内部のプラットフォームエミュレータ３で処理可能か否かを判別する。また、アプリ開発装置１は、接続されている複数のＭＦＰ２の現在の稼働状態を検出する。そして、アプリ開発装置１は、開発アプリケーション４から呼び出されたＩ／Ｆ処理が、内部のプラットフォームエミュレータ３で処理できない場合に、稼働していない複数のＭＦＰ２に分散させてＩ／Ｆ処理の実行要求を行う。
【００６１】
これにより、一連のＩ／Ｆ処理を各ＭＦＰ２で分散処理できるため、Ｉ／Ｆ処理の呼び出しにかかる時間を短縮化でき、エミュレータを用いた開発アプリケーションについて、より動作検証時間の短縮化を図ることができる。
【００６２】
上述の実施の形態は、例として提示したものであり、本発明の範囲を限定することは意図していない。この新規な実施の形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことも可能である。例えば、上述の実施の形態の説明において、「エミュレータ」という用語を用いた。しかし、エミュレータと同様の処理を実行する機器または機能に対して、「シミュレータ」等の他の用語が用いられる場合がある。本発明は、このような用語（称呼）にかかわらず、アプリケーションなどのプログラムの動作検証を行う全ての機器、または、機能等に適用可能である。そして、いずれに適用した場合でも、上述と同じ効果を得ることができる。実施の形態および実施の形態の変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６３】
１  アプリ開発装置
２  複合機（ＭＦＰ）
３  プラットフォームエミュレータ
４  開発アプリケーション
４ａ  第１のアプリケーション
４ｂ  第２のアプリケーション
５  テスト実行部
６  スキャンエミュレータ
７  プリントエミュレータ
８  ファクシミリエミュレータ
９  コピーエミュレータ
１０  パネルエミュレータ
１１  実装情報取得部
１２  状態取得部
１３  外部呼出し部
１４  判定部
１５  選択部
１６  記憶制御部
２１  ＣＰＵ
２２  インタフェース
２３  表示部
２４  入力部
２５  ドライブ装置
２６  ＨＤＤ
２７  ＲＡＭ
２８  バスライン
２９  記録媒体
【先行技術文献】
【特許文献】
【００６４】
【特許文献１】特開２０１１−４４１２７号公報
【図１】
2015230556.tif 000003
【図２】
2015230556.tif 000004
【図３】
2015230556.tif 000005
【図４】
2015230556.tif 000006
【図５】
2015230556.tif 000007
【図６】
2015230556.tif 000008
【図７】
2015230556.tif 000009
【図８】
2015230556.tif 000010