(57)【要約】【課題】  アプリケーションプログラムのインストール可否を判断するための情報を蓄積すること。【解決手段】  検索サーバは、複数のＭＦＰと通信可能であって、アプリケーションプログラムがインストールされる登録装置からアプリケーションプログラムと第１のエビデンスデータとの組からなる登録情報を受信する登録情報受信部２１１と、登録情報を記憶するアプリケーション登録部２１３と、登録情報を識別するための登録識別情報を登録装置に送信する登録識別情報送信部２１５と、登録装置から登録識別情報と第２のエビデンスデータとの組からなる追加登録情報を受信する追加登録情報受信部２１９と、追加登録情報に含まれる第２のエビデンスデータを登録識別情報で特定される登録情報に追加するエビデンスデータ追加部２２１と、を備える。【選択図】        図６
2012098867.tif 000002
【特許請求の範囲】
【請求項１】
複数の画像形成装置と通信可能な検索サーバであって、
前記複数の画像形成装置それぞれは、
処理を実行する処理実行手段と、
前記処理実行手段を動作させるために予め準備された複数の関数のうちから選択された関数を実行する関数実行手段と、を備え、
前記検索サーバは、
前記複数の画像形成装置のうち、前記複数の関数の少なくとも１つを含むアプリケーションプログラムがインストールされる登録装置から、該アプリケーションプログラムと第１のエビデンスデータとの組からなる登録情報を受信する登録情報受信手段と、
前記受信された登録情報を記憶するアプリケーション登録手段と、
前記第１のエビデンスデータは、アプリケーションプログラムを前記登録装置が実行した実行条件、実行結果および前記登録装置が備える前記処理実行手段に関する動作環境情報と、を含み、
前記受信された登録情報を識別するための登録識別情報を前記登録装置に送信する登録識別情報送信手段と、
前記登録装置から前記登録識別情報と第２のエビデンスデータとの組からなる追加登録情報を受信する追加登録情報受信手段と、
前記第２のエビデンスデータは、アプリケーションプログラムを前記登録装置が実行した実行条件および実行結果を含み、
前記受信された追加登録情報に含まれる第２のエビデンスデータを登録識別情報で特定される登録情報に追加するエビデンスデータ追加手段と、を備えた検索サーバ。
【請求項２】
処理を実行する処理実行手段と、
前記処理実行手段を動作させるために予め準備された複数の関数のうちから選択された関数を実行する関数実行手段と、
前記複数の関数の少なくとも１つを含むアプリケーションプログラムがインストールされる場合、該アプリケーションプログラムと第１のエビデンスデータとの組からなる登録情報を検索サーバに送信する登録情報送信手段と、
前記第１のエビデンスデータは、アプリケーションプログラムを実行した実行条件、実行結果および前記処理実行手段に関する第１動作環境情報と、を含み、
前記登録情報の送信に応じて前記検索サーバが送信する、登録情報を識別するための登録識別情報を受信する登録識別情報受信手段と、
前記アプリケーションプログラムを前記第１のエビデンスデータに含まれる実行条件と異なる実行条件で実行する場合、前記登録識別情報と第２のエビデンスデータとの組からなる追加登録情報を前記検索サーバに送信する追加登録情報送信手段と、を備え、
前記第２のエビデンスデータは、アプリケーションプログラムを実行した実行条件であって、前記第１のエビデンスデータに含まれる実行条件と異なる実行条件および実行結果と、を含む、画像形成装置。
【請求項３】
処理を実行する処理実行手段と、
前記処理実行手段を動作させるために予め準備された複数の関数のうちから選択された関数を実行する関数実行手段と、
前記関数実行手段が実行可能な複数の関数にそれぞれ対応する複数のスタブを実行可能であって、前記複数のスタブのいずれかを実行することにより、前記処理実行手段を動作させることなく、前記関数実行手段が前記複数の関数のうち該実行されるスタブに対応する関数を実行したのと同じ結果を出力するスタブ実行手段と、
前記複数の関数の少なくとも１つを含むアプリケーションプログラムがインストールされる場合、該アプリケーションプログラムを前記関数実行手段が実行した第１実行条件、実行結果および前記処理実行手段に関する動作環境情報と、を含む第１のエビデンスデータを生成する第１のエビデンスデータ生成手段と、
該アプリケーションプログラムを前記第１実行条件とは異なる第２実行条件で、前記スタブ実行手段に実行させ、前記第２実行条件、実行結果を含む第２のエビデンスデータを生成する第２のエビデンスデータ生成手段と、
前記アプリケーションプログラムと第１および第２のエビデンスデータとの組からなる登録情報を検索サーバに送信する登録情報送信手段と、を備えた画像形成装置。
【請求項４】
複数の画像形成装置と検索サーバとを含むアプリケーション共有システムであって、
前記複数の画像形成装置それぞれは、
処理を実行する処理実行手段と、
前記処理実行手段を動作させるために予め準備された複数の関数のうちから選択された関数を実行する関数実行手段と、を備え、
前記検索サーバは、
前記複数の画像形成装置のうち前記複数の関数の少なくとも１つを含むアプリケーションプログラムがインストールされる第１の画像形成装置から該アプリケーションプログラムと第１のエビデンスデータとの組からなる登録情報を受信する登録情報受信手段と、
前記受信された登録情報を記憶するアプリケーション登録手段と、
前記第１のエビデンスデータは、アプリケーションプログラムを前記第１の画像形成装置が実行した実行条件、実行結果および前記第１の画像形成装置が備える前記処理実行手段に関する第１動作環境情報と、を含み、
前記複数の画像形成装置のうち前記第１の画像形成装置とは異なる第２の画像形成装置から検索要求を受信する検索要求受信手段と、
前記検索要求を受信することに応じて、前記記憶された登録情報のうちから前記検索要求に含まれる検索条件に合致する登録情報を抽出する抽出手段と、
前記抽出された登録情報に含まれるアプリケーションプログラムの実行をシミュレートするシミュレートコマンドを生成するシミュレートコマンド生成手段と、
前記抽出された登録情報に含まれる第１のエビデンスデータと、前記シミュレートコマンドと、該シミュレートコマンドの実行結果を返信する返信コマンドと、前記アプリケーションプログラムのネットワークアドレスとを含む画面情報を前記検索要求を送信してきた前記第２の画像形成装置に送信する画面情報送信手段と、を備え、
前記第２の画像形成装置は、
前記関数実行手段が実行可能な複数の関数にそれぞれ対応する複数のスタブを実行可能であって、前記複数のスタブのいずれかを実行することにより、前記処理実行手段を動作させることなく、前記関数実行手段が前記複数の関数のうち該実行されるスタブに対応する関数を実行したのと同じ結果を出力するスタブ実行手段と、
前記検索サーバより受信される第１のエビデンスデータに含まれる第１動作環境情報と、自装置が備える前記処理実行手段に関する第２動作環境情報とを比較して、シミュレート実行回数を決定する回数決定手段と、
前記検索サーバより前記シミュレートコマンドが受信される場合、前記受信されたシミュレートコマンドを解釈して、前記アプリケーションプログラムを前記スタブ実行手段に前記決定された回数だけ実行させるシミュレート手段と、
前記シミュレートコマンドとともに受信される返信コマンドを実行して、前記スタブ実行手段が前記アプリケーションプログラムを実行した実行条件、実行結果および前記第２の画像形成装置が備える処理実行手段に関する第２動作環境情報とを含む第２のエビデンスデータと、前記アプリケーションプログラムの識別情報とからなるシミュレート結果を前記検索サーバに送信するシミュレート結果送信手段と、
前記シミュレートコマンドとともに受信されたネットワークアドレスに基づいて前記アプリケーションプログラムをダウンロードするためのリンク情報を生成し、生成されたリンク情報を前記スタブ実行手段が前記アプリケーションプログラムを実行した結果が正常である割合の多い順に並べた検索結果画面を生成する画面生成手段と、をさらに備え、
前記検索サーバは、さらに、前記第２の画像形成装置により送信される前記シミュレート結果を受信するシミュレート結果受信手段と、
前記受信されるシミュレート結果に含まれる前記第２のエビデンスデータが前記第１のエビデンスデータと異なることを条件に前記第２のエビデンスデータを前記登録情報に追加するエビデンスデータ追加手段と、を備えたアプリケーション共有システム。
【請求項５】
前記回数決定手段により決定されたシミュレート実行回数を、シミュレート手段が前記決定されたシミュレート実行回数以下のシミュレートを実行しているときに、それまでの実行結果が成功する割合に応じて、変更する変更手段を、さらに備えた、請求項４に記載のアプリケーション共有システム。
【請求項６】
前記シミュレートコマンド生成手段は、前記アプリケーションプログラムに含まれる関数を、該関数に対応するスタブに変更することによって、前記シミュレートコマンドを生成する関数変更手段を含む、請求項４または５に記載のアプリケーション共有システム。
【請求項７】
前記第１動作環境情報は、前記第１の画像形成装置が実行する基本プログラムのバージョン情報、前記処理実行手段が実行する処理を実行するための設定情報、および、前記第１の画像形成装置に接続されている周辺装置を特定する周辺装置情報からなる動作環境を含み、
前記第２動作環境情報は、前記第２の画像形成装置が実行する基本プログラムのバージョン情報、前記第２の画像形成装置が備える前記処理実行手段が実行する処理を特定するための処理特定情報、および、前記第２の画像形成装置に接続されている周辺装置を特定する周辺装置情報からなる動作環境を含む、請求項４〜６のいずれかに記載のアプリケーション共有システム。
【請求項８】
前記第１の画像形成装置は、アプリケーションプログラムがインストールされる前に、該アプリケーションプログラムを実行して、前記アプリケーションプログラムを実行した実行条件と、前記第１の画像形成装置が備える処理実行手段に関する第１動作環境情報と、を含むエビデンスデータを生成するエビデンスデータ生成手段と、
前記アプリケーションプログラムと前記生成されたエビデンスデータとの組を、前記検索サーバに送信する送信手段と、を備える、請求項４〜７のいずれかに記載のアプリケーション共有システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、検索サーバ、画像形成装置およびアプリケーション共有システムに関し、特に、アプリケーションプログラムがインストールされる画像形成装置を蓄積する検索サーバ、その画像形成装置、および、ある画像形成装置で開発されたアプリケーションプログラムを別の画像形成装置にインストールするのに適したアプリケーション共有システムに関する。
【背景技術】
【０００２】
ある開発者が開発したアプリケーションプログラムを、別のユーザが利用可能とするために、アプリケーションプログラムを管理するサーバに記憶しておき、ユーザによるダウンロードを可能にしたシステムが知られている。しかしながら、機器の状態によっては、ダウンロードしたアプリケーションプログラムが、必ずしも正常に動作するとは限らない。このため、サーバでシミュレーションしてからダウンロードする技術が知られている（例えば、特許文献１）。
【０００３】
近年、インターネットウェブサーバ（以下「ＩＷＳ」）として機能する複合機（以下「ＭＦＰ」という）が登場しており、ＣＧＩ（Ｃｏｍｍｏｎ  Ｇａｔｅｗａｙ  Ｉｎｔｅｒｆａｃｅ）を備えている。さらに、ＣＧＩを起動するための関数としてＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）が公開されており、ユーザは、その関数を用いてアプリケーションプログラムを開発し、ＭＦＰにインストールすることができる。公開されるＡＰＩは、ＭＦＰが備える機能を実行させる関数を含む。このため、ＭＦＰに、それが有する機能を実行させるアプリケーションプログラムを開発することができる。このようにして開発されたアプリケーションプログラムを、他のユーザが転用することを可能とするために、例えば、メーカが管理するサーバ等に、アプリケーションプログラムをアップロードしておけば、他のユーザが自由にダウンロードすることができる。
【０００４】
一方、ＭＦＰは、ソータ等の後処理部、両面読取ユニット等の複数種類の周辺装置を本体に接続可能であり、また、ＭＦＰにインストールされているアプリケーションプログラムも多種多様である。本体に接続される周辺装置の種類の違いやインストールされているアプリケーションプログラムの種類の違いなど、ＭＦＰの設定環境は多種多様である。設定環境が異なれば、ＭＦＰが実行可能な機能が異なる。このため、特開２００２−３１２５０６号公報に記載のように、サーバにおいてアプリケーションプログラムをシミュレートするためには、多種多様な設定環境のすべてに対応してアプリケーションプログラムをシミュレートできなければならない。しかしながら、ＭＦＰの多種多様な設定環境のすべてに対応してシミュレートするプログラムを開発するのは困難であるといった問題がある。
【特許文献１】特開２００２−３１２５０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
この発明は上述した問題点を解決するためになされたもので、この発明の目的の一つは、アプリケーションプログラムのインストール可否を判断するための情報を蓄積することが可能な検索サーバを提供することである。
【０００６】
この発明の他の目的は、アプリケーションプログラムのインストール可否を判断するための情報を検索サーバに蓄積させることが可能な画像形成装置を提供することである。
【０００７】
この発明のさらに他の目的は、アプリケーションプログラムのインストール可否を判断するための情報を検索サーバに蓄積するとともに、画像形成装置にインストール可能なアプリケーションプログラムを優先してダウンロードさせることが可能なアプリケーション共有システムを提供することである。
【課題を解決するための手段】
【０００８】
上述した目的を達成するためにこの発明のある局面によれば、検索サーバは、複数の画像形成装置と通信可能な検索サーバであって、複数の画像形成装置それぞれは、処理を実行する処理実行手段と、処理実行手段を動作させるために予め準備された複数の関数のうちから選択された関数を実行する関数実行手段と、を備え、検索サーバは、複数の画像形成装置のうち、複数の関数の少なくとも１つを含むアプリケーションプログラムがインストールされる登録装置から、該アプリケーションプログラムと第１のエビデンスデータとの組からなる登録情報を受信する登録情報受信手段と、受信された登録情報を記憶するアプリケーション登録手段と、第１のエビデンスデータは、アプリケーションプログラムを登録装置が実行した実行条件、実行結果および登録装置が備える処理実行手段に関する動作環境情報と、を含み、受信された登録情報を識別するための登録識別情報を登録装置に送信する登録識別情報送信手段と、登録装置から登録識別情報と第２のエビデンスデータとの組からなる追加登録情報を受信する追加登録情報受信手段と、第２のエビデンスデータは、アプリケーションプログラムを登録装置が実行した実行条件および実行結果を含み、受信された追加登録情報に含まれる第２のエビデンスデータを登録識別情報で特定される登録情報に追加するエビデンスデータ追加手段と、を備える。
【０００９】
この局面に従えば、登録装置から登録情報が受信されると、登録情報が記憶され、登録識別情報が登録装置に送信され、登録装置から追加登録情報が受信されると、追加登録情報に含まれる第２のエビデンスデータが登録情報に追加して記憶される。このため、登録装置によって登録されるアプリケーションプログラムが、登録装置の動作環境情報、第１のエビデンスデータおよび第２のエビデンスデータと組になって記憶されるので、アプリケーションプログラムを新たにインストールする画像形成装置において、その画像形成装置の動作環境情報からアプリケーションプログラムをインストール可能か否かを判断するための情報を記憶することができる。その結果、アプリケーションプログラムのインストール可否を判断するための情報を蓄積することが可能な検索サーバを提供することができる。
【００１０】
この発明の他の局面によれば、画像形成装置は、処理を実行する処理実行手段と、処理実行手段を動作させるために予め準備された複数の関数のうちから選択された関数を実行する関数実行手段と、複数の関数の少なくとも１つを含むアプリケーションプログラムがインストールされる場合、該アプリケーションプログラムと第１のエビデンスデータとの組からなる登録情報を検索サーバに送信する登録情報送信手段と、第１のエビデンスデータは、アプリケーションプログラムを実行した実行条件、実行結果および処理実行手段に関する第１動作環境情報と、を含み、登録情報の送信に応じて検索サーバが送信する、登録情報を識別するための登録識別情報を受信する登録識別情報受信手段と、アプリケーションプログラムを第１のエビデンスデータに含まれる実行条件と異なる実行条件で実行する場合、登録識別情報と第２のエビデンスデータとの組からなる追加登録情報を検索サーバに送信する追加登録情報送信手段と、を備え、第２のエビデンスデータは、アプリケーションプログラムを実行した実行条件であって、第１のエビデンスデータに含まれる実行条件と異なる実行条件および実行結果と、を含む。
【００１１】
この局面に従えば、アプリケーションプログラムがインストールされる場合、登録情報が検索サーバに送信され、登録情報の送信に応じて検索サーバが送信する登録識別情報が受信され、アプリケーションプログラムを第１のエビデンスデータに含まれる実行条件と異なる実行条件で実行する場合、追加登録情報が検索サーバに送信される。このため、検索サーバにおいて、アプリケーションプログラムが画像形成装置の動作環境情報、第１のエビデンスデータおよび第２のエビデンスデータと組になって記憶されるので、アプリケーションプログラムを新たにインストールする画像形成装置において、その画像形成装置の動作環境情報からアプリケーションプログラムをインストール可能か否かを判断するための情報を記憶することができる。その結果、アプリケーションプログラムのインストール可否を判断するための情報を検索サーバに蓄積させることが可能な画像形成装置を提供することができる。
【００１２】
この発明のさらに他の局面によれば、画像形成装置は、処理を実行する処理実行手段と、処理実行手段を動作させるために予め準備された複数の関数のうちから選択された関数を実行する関数実行手段と、関数実行手段が実行可能な複数の関数にそれぞれ対応する複数のスタブを実行可能であって、複数のスタブのいずれかを実行することにより、処理実行手段を動作させることなく、関数実行手段が複数の関数のうち該実行されるスタブに対応する関数を実行したのと同じ結果を出力するスタブ実行手段と、複数の関数の少なくとも１つを含むアプリケーションプログラムがインストールされる場合、該アプリケーションプログラムを関数実行手段が実行した第１実行条件、実行結果および処理実行手段に関する動作環境情報と、を含む第１のエビデンスデータを生成する第１のエビデンスデータ生成手段と、該アプリケーションプログラムを第１実行条件とは異なる第２実行条件で、スタブ実行手段に実行させ、第２実行条件、実行結果を含む第２のエビデンスデータを生成する第２のエビデンスデータ生成手段と、アプリケーションプログラムと第１および第２のエビデンスデータとの組からなる登録情報を検索サーバに送信する登録情報送信手段と、を備える。
【００１３】
この局面に従えば、アプリケーションプログラムがインストールされる場合、アプリケーションプログラムを実行した第１実行条件、実行結果および処理実行手段に関する動作環境情報と、を含む第１のエビデンスデータが生成されるとともに、アプリケーションプログラムを実行した第２実行条件、実行結果を含む第２のエビデンスデータが生成され、アプリケーションプログラムと第１および第２のエビデンスデータとの組からなる登録情報が検索サーバに送信される。このため、検索サーバにおいて、アプリケーションプログラムが画像形成装置の動作環境情報、第１のエビデンスデータおよび第２のエビデンスデータと組になって記憶されるので、アプリケーションプログラムを新たにインストールする画像形成装置において、その画像形成装置の動作環境情報からアプリケーションプログラムをインストール可能か否かを判断するための情報を記憶することができる。その結果、アプリケーションプログラムのインストール可否を判断するための情報を検索サーバに蓄積させることが可能な画像形成装置を提供することができる。
【００１４】
この発明のさらに他の局面によれば、アプリケーション共有システムは、複数の画像形成装置と検索サーバとを含むアプリケーション共有システムであって、複数の画像形成装置それぞれは、処理を実行する処理実行手段と、処理実行手段を動作させるために予め準備された複数の関数のうちから選択された関数を実行する関数実行手段と、を備え、検索サーバは、複数の画像形成装置のうち複数の関数の少なくとも１つを含むアプリケーションプログラムがインストールされる第１の画像形成装置から該アプリケーションプログラムと第１のエビデンスデータとの組からなる登録情報を受信する登録情報受信手段と、受信された登録情報を記憶するアプリケーション登録手段と、第１のエビデンスデータは、アプリケーションプログラムを第１の画像形成装置が実行した実行条件、実行結果および第１の画像形成装置が備える処理実行手段に関する第１動作環境情報と、を含み、複数の画像形成装置のうち第１の画像形成装置とは異なる第２の画像形成装置から検索要求を受信する検索要求受信手段と、検索要求を受信することに応じて、記憶された登録情報のうちから検索要求に含まれる検索条件に合致する登録情報を抽出する抽出手段と、抽出された登録情報に含まれるアプリケーションプログラムの実行をシミュレートするシミュレートコマンドを生成するシミュレートコマンド生成手段と、抽出された登録情報に含まれる第１のエビデンスデータと、シミュレートコマンドと、該シミュレートコマンドの実行結果を返信する返信コマンドと、アプリケーションプログラムのネットワークアドレスとを含む画面情報を検索要求を送信してきた第２の画像形成装置に送信する画面情報送信手段と、を備え、第２の画像形成装置は、関数実行手段が実行可能な複数の関数にそれぞれ対応する複数のスタブを実行可能であって、複数のスタブのいずれかを実行することにより、処理実行手段を動作させることなく、関数実行手段が複数の関数のうち該実行されるスタブに対応する関数を実行したのと同じ結果を出力するスタブ実行手段と、検索サーバより受信される第１のエビデンスデータに含まれる第１動作環境情報と、自装置が備える処理実行手段に関する第２動作環境情報とを比較して、シミュレート実行回数を決定する回数決定手段と、検索サーバよりシミュレートコマンドが受信される場合、受信されたシミュレートコマンドを解釈して、アプリケーションプログラムをスタブ実行手段に決定された回数だけ実行させるシミュレート手段と、シミュレートコマンドとともに受信される返信コマンドを実行して、スタブ実行手段がアプリケーションプログラムを実行した実行条件、実行結果および第２の画像形成装置が備える処理実行手段に関する第２動作環境情報とを含む第２のエビデンスデータと、アプリケーションプログラムの識別情報とからなるシミュレート結果を検索サーバに送信するシミュレート結果送信手段と、シミュレートコマンドとともに受信されたネットワークアドレスに基づいてアプリケーションプログラムをダウンロードするためのリンク情報を生成し、生成されたリンク情報をスタブ実行手段がアプリケーションプログラムを実行した結果が正常である割合の多い順に並べた検索結果画面を生成する画面生成手段と、をさらに備え、検索サーバは、さらに、第２の画像形成装置により送信されるシミュレート結果を受信するシミュレート結果受信手段と、受信されるシミュレート結果に含まれる第２のエビデンスデータが第１のエビデンスデータと異なることを条件に第２のエビデンスデータを登録情報に追加するエビデンスデータ追加手段と、を備える。
【００１５】
この局面に従えば、第２の画像形成装置において、第１の画像形成装置の第１動作環境情報と、自装置の第２動作環境情報とが比較され、シミュレート実行回数が決定され、アプリケーションプログラムが決定された回数だけシミュレートされ、アプリケーションプログラムをダウンロードするためのリンク情報がアプリケーションプログラムをシミュレートした結果が正常である割合の多い順に並べた検索結果画面が生成される。このため、第２の画像形成装置において、インストール可能なアプリケーションプログラムを優先して表示する検索結果画面を表示させることができる。また、検索サーバにおいて、アプリケーションプログラムが第１の画像形成装置の第１動作環境情報、第２の画像形成装置の第２動作環境、第１のエビデンスデータおよび第２のエビデンスデータと組になって記憶されるので、アプリケーションプログラムを新たにインストールする画像形成装置において、その画像形成装置の動作環境情報からアプリケーションプログラムをインストール可能か否かを判断するための情報を記憶することができる。その結果、アプリケーションプログラムのインストール可否を判断するための情報を検索サーバに蓄積するとともに、画像形成装置にインストール可能なアプリケーションプログラムを優先してダウンロードさせることが可能なアプリケーション共有システムを提供することができる。
【００１６】
好ましくは、回数決定手段により決定されたシミュレート実行回数を、シミュレート手段が決定されたシミュレート実行回数以下のシミュレートを実行しているときに、それまでの実行結果が成功する割合に応じて、変更する変更手段を、さらに備える。
【００１７】
好ましくは、シミュレートコマンド生成手段は、アプリケーションプログラムに含まれる関数を、該関数に対応するスタブに変更することによって、シミュレートコマンドを生成する関数変更手段を含む。
【００１８】
好ましくは、第１動作環境情報は、第１の画像形成装置が実行する基本プログラムのバージョン情報、処理実行手段が実行する処理を実行するための設定情報、および、第１の画像形成装置に接続されている周辺装置を特定する周辺装置情報からなる動作環境を含み、第２動作環境情報は、第２の画像形成装置が実行する基本プログラムのバージョン情報、第２の画像形成装置が備える処理実行手段が実行する処理を特定するための処理特定情報、および、第２の画像形成装置に接続されている周辺装置を特定する周辺装置情報からなる動作環境を含む。
【００１９】
好ましくは、第１の画像形成装置は、アプリケーションプログラムがインストールされる前に、該アプリケーションプログラムを実行して、アプリケーションプログラムを実行した実行条件と、第１の画像形成装置が備える処理実行手段に関する第１動作環境情報と、を含むエビデンスデータを生成するエビデンスデータ生成手段と、アプリケーションプログラムと生成されたエビデンスデータとの組を、検索サーバに送信する送信手段と、を備える。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施の形態におけるアプリケーション共有システムの全体概要を示す図である。
【図２】ＭＦＰの外観を示す斜視図である。
【図３】ＭＦＰのハードウエア構成の一例を示すブロック図である。
【図４】検索サーバのハードウエア構成の一例を示すブロック図である。
【図５】登録装置として機能するＭＦＰが備えるＣＰＵが有する機能の概要の一例を示すブロック図である。
【図６】検索サーバが備えるＣＰＵの機能の概要の一例を示すブロック図である。
【図７】エビデンスデータの一例を示す図である。
【図８】登録テーブルの一例を示す図である。
【図９】第１アプリケーション登録処理の流れの一例を示すフローチャートである。
【図１０】第２アプリケーション登録処理の流れの一例を示すフローチャートである。
【図１１】第１アプリケーション追加処理の流れの一例を示すフローチャートである。
【図１２】第２アプリケーション追加処理の流れの一例を示すフローチャートである。
【図１３】変形例における登録装置として機能するＭＦＰが備えるＣＰＵが有する機能の概要の一例を示すブロック図である。
【図１４】変形例における第１アプリケーション登録処理の流れの一例を示すフローチャートである。
【図１５】変形例における第２アプリケーション登録処理の流れの一例を示すフローチャートである。
【図１６】第２の実施の形態における検索サーバが備えるＣＰＵの機能の概要の一例を示すブロック図である。
【図１７】アプリケーションプログラムの一例を示す図である。
【図１８】画面情報を含むウェブページのソースコードの一例を示す図である。
【図１９】ダウンロード装置として機能するＭＦＰが備えるＣＰＵが有する機能の概要の一例を示すブロック図である。
【図２０】検索送信処理の流れの一例を示すフローチャートである。
【図２１】画面情報生成・送信処理の流れの一例を示すフローチャートである。
【図２２】ブラウジング処理の流れの一例を示すフローチャートである。
【図２３】検索結果画面生成処理の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【００２１】
以下、本発明の実施の形態について図面を参照して説明する。以下の説明では同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがってそれらについての詳細な説明は繰り返さない。
【００２２】
＜第１の実施の形態＞
図１は、本発明の実施の形態におけるアプリケーション共有システムの全体概要を示す図である。図１を参照して、アプリケーション共有システム１は、それぞれがネットワーク３に接続された複合機（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）（以下、「ＭＦＰ」という）１００，１００Ａ〜１００Ｄと、インターネット５に接続された検索サーバ２００と、を含む。
【００２３】
ＭＦＰ１００，１００Ａ〜１００Ｄは、画像形成装置の一例であり、スキャナ機能、プリンタ機能、コピー機能、ファクシミリ機能等の複数の機能を備える。また、ＭＦＰ１００，１００Ａ〜１００Ｄそれぞれは、ＣＧＩ（Ｃｏｍｍｏｎ  Ｇａｔｅｗａｙ  Ｉｎｔｅｒｆａｃｅ）を備えており、インターネットウェブサーバ（以下「ＩＷＳ」）として機能する。さらに、ＣＧＩを起動するための関数としてのＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）が公開されており、ユーザは、そのＡＰＩを用いてアプリケーションプログラムを開発し、ＭＦＰ１００，１００Ａ〜１００Ｄにインストールすることができる。さらに、ＭＦＰ１００，１００Ａ〜１００Ｄには、ブラウジングプログラムがインストールされており、ブラウジングプログラムを実行するタスクが、ＩＷＳとして機能するＭＦＰ１００，１００Ａ〜１００Ｄのユーザインターフェースとして機能する。
【００２４】
ネットワーク３は、ローカルエリアネットワーク（ＬＡＮ）であり、有線および無線の別を問わない。ＭＦＰ１００，１００Ａ〜１００Ｄそれぞれは、ネットワーク３を介して互いに通信可能であり、さらに、インターネット５を介して接続された検索サーバ２００と通信可能である。なお、ネットワーク３は、ＬＡＮに限らず、インターネット、ワイドエリアネットワーク（ＷＡＮ）または公衆交換電話網等であってもよい。
【００２５】
検索サーバ２００は、一般的なコンピュータである。本実施の形態においては、検索サーバ２００は、ＭＦＰ１００，１００Ａ〜１００Ｄのメーカが管理するコンピュータとしている。検索サーバ２００は、ＭＦＰ１００，１００Ａ〜１００Ｄそれぞれにおいてインストールされたアプリケーションプログラムがアップロードされ、アップロードされたアプリケーションプログラムを検索可能な状態で記憶し、要求に応じてダウンロードする。なお、検索サーバ２００は、ＭＦＰ１００，１００Ａ〜１００Ｄそれぞれにおいてインストールされたアプリケーションプログラムの他に、メーカが開発し、供給するアプリケーションプログラムを検索可能に記憶するようにしてもよい。なお、本実施の形態においては、検索サーバ２００を、ＭＦＰ１００，１００Ａ〜１００Ｄのメーカが管理するコンピュータとしたが、メーカとは関係のない者が管理するコンピュータであってもよい。
【００２６】
ＭＦＰ１００，１００Ａ〜１００Ｄは、それぞれが備える機能は同じであってもよく異なっていてもよいが、基本的には、紙などの用紙に画像を形成するための画像形成機能を少なくとも有し、付加的に、原稿を読み取って画像データを出力する画像読取機能、画像データを処理する画像処理機能、画像形成後の用紙にパンチ穴加工、ソート処理等する後処理機能、ファクシミリ送受信機能のいずれかを含んでもよい。
【００２７】
ＭＦＰ１００，１００Ａ〜１００Ｄ各々が有する機能は同じではない場合があるが、ここではＭＦＰ１００が、他のＭＦＰ１００Ａ〜１００Ｄのいずれかが有する機能を有している場合を例に説明する。
【００２８】
図２は、ＭＦＰの外観を示す斜視図である。図２を参照して、ＭＦＰ１００は、自動原稿搬送装置（ＡＤＦ）２１と、画像読取部２２と、画像処理部２３（図３参照）と、画像形成部２４と、給紙部２５と、後処理部２６とを含む。また、ＭＦＰ１００は、その上面にユーザインターフェースとして用いられる操作パネル１１を備えている。
【００２９】
図３は、ＭＦＰのハードウエア構成の一例を示すブロック図である。図３を参照して、ＭＦＰ１００は、情報処理部１０１と、ファクシミリ部２７と、通信制御部２８と、ＡＤＦ２１と、画像読取部２２と、画像処理部２３と、画像形成部２４と、給紙部２５と、後処理部２６と、を含む。情報処理部１０１は、中央演算装置（ＣＰＵ）１１１と、ＣＰＵ１１１が実行するプログラム等を記憶するＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１１２と、ＣＰＵ１１１の作業領域として使用されるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１１３と、データを不揮発的に記憶するためのハードディスクドライブ（ＨＤＤ）１１４と、表示部１１５と、操作部１１６と、ネットワークインターフェース（Ｉ／Ｆ）１１７と、外部記憶装置１１８とを含む。ＣＰＵ１１１は、ＲＯＭ１１２、ＲＡＭ１１３、ＨＤＤ１１４、表示部１１５、操作部１１６、ネットワークＩ／Ｆ１１７および外部記憶装置１１８とそれぞれ接続され、情報処理部１０１の全体を制御する。また、ＣＰＵ１１１は、ファクシミリ部２７、通信制御部２８、ＡＤＦ２１、画像読取部２２、画像処理部２３、画像形成部２４、給紙部２５および後処理部２６と接続され、ＭＦＰ１の全体を制御する。
【００３０】
ＡＤＦ２１は、原稿台に搭載された複数枚の原稿をさばいて１枚ずつ順に、画像読取部２２に搬送する。ＡＤＦ２１は、原稿の片面を画像読取部２２に読み取らせる場合、原稿を画像読取部２２に搬送して表面を読み取らせる。さらに、ＡＤＦ２１は、原稿の両面を画像読取部２２に読み取らせる場合、原稿を画像読取部２２に搬送して表面を読み取らせた後、原稿を裏返して画像読取部２２に搬送して裏面を読み取らせる。画像読取部２２は、写真、文字、絵等の画像情報を原稿から光学的に読み取って画像データを取得し、画像処理部２３に出力する。
【００３１】
画像処理部２３は、ＣＰＵ１１１により制御され、ＣＰＵ１１１からの指示に基づき画像データを画像処理する。画像データは、画像読取部２２が原稿を読み取って出力する画像データ、ネットワークＩ／Ｆ１１７により他のコンピュータから受信されるプリントジョブに含まれる画像データ、ネットワークＩ／Ｆ１１７により他のＭＦＰ１００Ａ〜１００Ｄのいずれかから受信される画像データ、ＨＤＤ１１４に記憶されている画像データを含む。画像処理は、例えば、画像を拡大する拡大処理、画像を縮小する縮小処理、複数の画像を合成して１つの画像を生成する合成処理、画像を回転させて方向を変換する回転処理等である。画像処理部２３は、処理後の画像データを画像形成部２４に出力する。
【００３２】
給紙部２５は、複数の給紙トレイを有し、指定された給紙トレイに格納した用紙を１枚ずつ画像形成部２４に供給する。複数の給紙トレイそれぞれは、複数のサイズの用紙のうちから選ばれたサイズの用紙を、複数の方向のうちから選ばれた方向に収納する。ここでは、給紙部２５が４つの第１〜第４給紙トレイを有し、第１の給紙トレイがＡ４サイズの用紙を縦方向に収納し、第２の給紙トレイがＡ４サイズの用紙を横方向に収納し、第３の給紙トレイがＡ３サイズの用紙を縦方向に収納し、第４の給紙トレイがＢ５サイズの用紙を横方向に収納する。また、給紙部２５は、両面印刷が指定されると、用紙の両面に画像を形成するために、画像形成部２４に搬送した用紙を表裏反転させて、再度画像形成部２４に搬送する。
【００３３】
画像形成部２４は、画像処理部２３から入力される画像データに基づき、給紙部２５から搬送される用紙に画像を形成する。
【００３４】
後処理部２６は、画像が形成された用紙を排紙する。後処理部２６は、複数の排紙トレイを有し、ソート部、パンチ穴加工部、ステープル加工部を備えている。ソート部は、画像が形成された複数の用紙を複数の排紙トレイにソートして出力する。パンチ穴加工部は、用紙にパンチ穴を開ける。ステープル加工部は、画像が形成された複数の用紙をまとめるためにステープル加工する。
【００３５】
表示部１１５は、液晶表示装置（ＬＣＤ）、有機ＥＬＤ（Ｅｌｅｃｔｒｏ  Ｌｕｍｉｎｅｓｃｅｎｃｅ  Ｄｉｓｐｌａｙ）等の表示装置であり、ユーザに対する指示メニューや取得した画像データに関する情報等を表示する。操作部１１６は、複数のキーを備え、キーに対応するユーザの操作による各種の指示、文字、数字などのデータの入力を受け付ける。操作部１１６は、表示部１１５上に設けられたタッチパネルをさらに含む。表示部１１５と操作部１１６とで、操作パネル１１を構成する。
【００３６】
ネットワークＩ／Ｆ１１７は、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）またはＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）等の通信プロトコルで通信するためのインターフェースであり、ネットワーク３およびインターネット５を介して検索サーバ２００と通信する。また、ネットワーク３に接続された他のＭＦＰ１００Ａ〜１００Ｄと通信する。
【００３７】
外部記憶装置１１８は、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１１９が装着される。ＣＰＵ１１１は、外部記憶装置１１８を介してＣＤ−ＲＯＭ１１９にアクセス可能であり、ＣＤ−ＲＯＭ１１９に記憶されたプログラムをＲＡＭ１１３にロードして実行可能である。なお、ＣＰＵ１１１が実行するプログラムは、ＣＤ−ＲＯＭ１１９に記憶されたプログラムに限られず、他の記憶媒体に記憶されたプログラムでもよく、ＨＤＤ１１４に記憶されたプログラムであってもよく、さらに、ネットワークＩ／Ｆ１１７を介してネットワーク３に接続された他のコンピュータによりＨＤＤ１１４に書込みされたプログラムであってもよい。
【００３８】
なお、プログラムを記憶する記憶媒体としては、ＣＤ−ＲＯＭ１１９に限られず、光ディスク（ＭＯ（Ｍａｇｎｅｔｉｃ  Ｏｐｔｉｃａｌ  Ｄｉｓｃ）／ＭＤ（Ｍｉｎｉ  Ｄｉｓｃ）／ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ））、ＩＣカード、光カード、マスクＲＯＭ、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）などの半導体メモリでもよい。
【００３９】
ファクシミリ部２７は、ＰＳＴＮ１３に接続され、ＰＳＴＮ１３にファクシミリデータを送信する、またはＰＳＴＮ１３からファクシミリデータを受信する。ファクシミリ部２７は、受信したファクシミリデータを、画像形成部２４がプリント可能なプリントデータに変換して、画像形成部２４に出力する。これにより、画像形成部２４は、ファクシミリ部２７により受信されたファクシミリデータを用紙にプリントする。また、ファクシミリ部２７は、ＨＤＤ１１４に記憶されたデータをファクシミリデータに変換して、ＰＳＴＮ１３に接続されたファクシミリ装置に送信する。
【００４０】
ＨＤＤ１１４は、ＭＦＰ１００の動作環境情報を記憶する。動作環境情報は、ＭＦＰ１００が備えるＡＤＦ２１、画像読取部２２、画像処理部２３、画像形成部２４、給紙部２５、後処理部２６に関する情報である。動作環境情報は、例えば、ＭＦＰ１００にインストールされている基本プログラムのバージョン情報、ＭＦＰ１００に接続される周辺機器の接続状態を示す周辺装置情報、ＭＦＰ１００が有する機能ごとに所定の設定項目の設定値を含む設定情報等の動作環境の組を定める情報である。基本プログラムは、ファームウェア（ＦＷ）、ブラウジングプログラムである。周辺装置情報は、ＡＤＦ２１、画像読取部２２、画像処理部２３、後処理部２６の接続有無、および接続されている場合には周辺装置を特定するための情報として、例えば、機種名を含む。
【００４１】
ＭＦＰ１００が有する機能は、例えば、両面読み取り機能、カラー印字機能、給紙機能、両面印字機能、画像処理機能、後処理機能を含む。両面読取機能における設定項目と設定値は、原稿の両面を読み取り可能であるか否かが設定される。また、カラー印字機能における設定項目と設定値は、カラー印字が可能であるか否かが設定される。給紙機能における設定項目と設定値は、Ａ４縦、Ａ４横、Ａ３縦およびＢ５横の用紙を選択可能か否かが設定される。プリント機能における設定項目と設定値は、片面または両面に画像を形成可能であるか否かが設定される。画像処理機能における設定項目と設定値は、画像のサイズを変更する変倍処理および複数ページの画像を合成して１つの用紙に画像形成するＮｉｎ１処理が可能であるか否かが設定される。後処理機能における設定項目と設定値は、ソート処理、ステープル加工処理およびパンチ穴加工処理が可能であるか否かが設定される。
【００４２】
ＭＦＰ１００，１００Ａ〜１００Ｄ各々は、画像形成部２４および給紙部２５を少なくとも備えており、付加的に、ＡＤＦ２１、画像読取部２２、画像処理部２３、後処理部２６およびファクシミリ部２７のいずれかを備えている。したがって、ＭＦＰ１００，１００Ａ〜１００ＤのうちＡＤＦ２１、画像読取部２２、画像処理部２３、画像形成部２４、給紙部２５、後処理部２６およびファクシミリ部２７のすべてを備えていないものが存在してもよく、ＡＤＦ２１、画像読取部２２、画像処理部２３、画像形成部２４、給紙部２５、後処理部２６およびファクシミリ部２７のいずれを備えているかにより、ＭＦＰ１００，１００Ａ〜１００Ｄ各々が備える機能が異なる場合がある。
【００４３】
さらに、画像処理部２３は、拡大処理、縮小処理、合成処理、および回転処理を含む例を説明したが、画像処理部２３は、拡大処理、縮小処理、合成処理、および回転処理の少なくとも１つを実行可能であればよい。したがって、ＭＦＰ１００，１００Ａ〜１００Ｄのうちで画像処理部２３を備えているものの間で、拡大処理、縮小処理、合成処理、および回転処理のいずれを実行可能かによって、機能が異なる場合がある。
【００４４】
また、後処理部２６にあっては、上述したようにソート機能、ステープル機能、パンチ機能を備えている例を説明したが、これらの機能のうち少なくとも１つを備えていればよい。このため、ＭＦＰ１００，１００Ａ〜１００Ｄのうちで後処理部２６を備えるもののうち、ソート機能、ステープル機能、パンチ機能のすべてを備えていないものが存在してもよい。したがって、ＭＦＰ１００，１００Ａ〜１００Ｄのうちで後処理部２６を備えるものの間で、ソート機能、ステープル機能、パンチ機能のいずれを備えているかによって、機能が異なる場合がある。
【００４５】
図４は、検索サーバのハードウエア構成の一例を示すブロック図である。図４を参照して、検索サーバ２００は、検索サーバ２００の全体を制御するためのＣＰＵ２０１と、ＣＰＵ２０１が実行するプログラム等を記憶するためのＲＯＭ２０２と、ＣＰＵ２０１の作業領域として用いられるＲＡＭ２０３と、検索サーバ２００をネットワークに接続するためのネットワークＩ／Ｆ２０４と、大容量記憶装置としてのＨＤＤ２０５と、表示部２０６と、ユーザの操作の入力を受け付ける操作部２０７と、ＣＤ−ＲＯＭ２０９が装着される外部記憶装置２０８と、を含む。
【００４６】
外部記憶装置２０８には、ＣＤ−ＲＯＭ２０９が装着される。ＣＤ−ＲＯＭ２０９には、ＣＰＵ２０１が実行可能なアプリケーション検索プログラムが記憶されており、ＣＰＵ２０１は、外部記憶装置２０８を制御して、ＣＤ−ＲＯＭ２０９からアプリケーション検索プログラムを読出し、読み出したアプリケーション検索プログラムをＲＡＭ２０３にロードして実行する。
【００４７】
なお、アプリケーション検索プログラムを記憶する記録媒体としては、ＣＤ−ＲＯＭ２０９に限られず、フレキシブルディスク、カセットテープ、光ディスク（ＭＯ／ＭＤ／ＤＶＤ）、ＩＣカード、光カード、マスクＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭなどの半導体メモリでもよい。さらに、ＣＰＵ２０１がインターネット５に接続された他のコンピュータからアプリケーション検索プログラムをダウンロードしてＨＤＤ２０５に記憶する、または、他のコンピュータがアプリケーション検索プログラムをＨＤＤ２０５に書込みするようにして、ＨＤＤ２０５に記憶されたアプリケーション検索プログラムをＲＡＭ２０３にロードしてＣＰＵ２０１で実行するようにしてもよい。ここでいうプログラムは、ＣＰＵ２０１により直接実行可能なプログラムだけでなく、ソースプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
【００４８】
本実施の形態におけるアプリケーション共有システム１においては、ＭＦＰ１００，１００Ａ〜１００Ｄのいずれか（第１の画像形成装置）で開発されたアプリケーションプログラムが、検索サーバ２００に登録され、ＭＦＰ１００，１００Ａ〜１００Ｄのいずれか（第２の画像形成装置）において、検索サーバ２００に登録されたアプリケーションプログラムをダウンロードしてインストールする。したがって、ＭＦＰ１００，１００Ａ〜１００Ｄそれぞれは、開発されたアプリケーションプログラムがインストールされると、検索サーバ２００に登録する登録装置（第１の画像形成装置）として機能するとともに、検索サーバ２００からアプリケーションプログラムをダウンロードするダウンロード装置（第２の画像形成装置）として機能する。ＭＦＰ１００，１００Ａ〜１００Ｄのいずれが登録装置およびダウンロード装置として機能してもよく、登録装置としての機能およびダウンロード装置としての機能はＭＦＰ１００，１００Ａ〜１００Ｄ間で同じなので、ここではＭＦＰ１００が登録装置として機能し、ＭＦＰ１００Ａがダウンロード装置として機能する場合を例に説明する。
【００４９】
図５は、登録装置として機能するＭＦＰが備えるＣＰＵが有する機能の概要の一例を示すブロック図である。図５に示す機能は、登録装置として機能するＭＦＰ１００が備えるＣＰＵ１１１が、ＲＯＭ１１２、ＨＤＤ１１４またはＣＤ−ＲＯＭ１１９に記憶されたアプリケーション共有プログラムを実行することにより、ＣＰＵ１１１に形成される。
【００５０】
図５を参照して、ＣＰＵ１１１は、アプリケーションプログラムを受け付けるアプリケーション受付部５１と、アプリケーションプログラムを実行する関数実行部５３と、第１エビデンスデータを生成する第１エビデンスデータ生成部５５と、アプリケーションプログラムと第１エビデンスデータとを含む登録情報を検索サーバに送信する登録情報送信部５７と、第２エビデンスデータを生成する第２エビデンスデータ生成部５９と、サーバから登録識別情報を受信する登録識別情報受信部６３と、登録識別情報と第２エビデンスデータとを含む追加登録情報を検索サーバに送信する追加登録情報送信部６１と、を含む。
【００５１】
関数実行部５３は、ＡＤＦ２１、画像読取部２２、画像処理部２３、画像形成部２４、給紙部２５および後処理部２６を動作させるために、予め準備された複数の関数のうちから選択された関数を実行し、ＡＤＦ２１、画像読取部２２、画像処理部２３、画像形成部２４、給紙部２５および後処理部２６を動作させる。複数の関数は、ＭＦＰ１００のメーカによってＡＰＩとして予め公開されている。ユーザは、操作部１１６を用いて、ＭＦＰ１００を動作させるための処理手順をＡＰＩの関数で記述することにより、アプリケーションプログラムを作成することができる。
【００５２】
アプリケーション受付部５１は、ユーザが操作部１１６に入力するアプリケーションプログラムを受け付ける。また、ユーザが、パーソナルコンピュータを用いて、ＡＰＩの関数で記述されたアプリケーションプログラムを作成する場合は、パーソナルコンピュータで作成されたアプリケーションプログラムを、ネットワーク３を介して、ＭＦＰ１００に送信してもよい。この場合は、アプリケーション受付部５１は、ネットワークＩ／Ｆ１１７がパーソナルコンピュータから受信するアプリケーションプログラムを受け付ける。アプリケーション受付部５１は、受け付けられたアプリケーションプログラムを、ＨＤＤ１１４に記憶するなどしてインストールするとともに、アプリケーションプログラムを関数実行部５３および登録情報送信部５７に出力する。アプリケーション受付部５１がアプリケーションプログラムをインストールする場合、アプリケーションプログラムはそれを識別するためのアプリケーション名が付与された実行プログラムとしてＨＤＤ１１４に記憶される。
【００５３】
関数実行部５３は、実行条件に従って、アプリケーション受付部５１から入力されるアプリケーションプログラムに記述された順に関数を実行する。実行条件は、動作環境情報により定められる周辺装置情報の組み合わせにより定まる。例えば、ＭＦＰ１００に後処理部２６が接続されている場合に、後処理部２６が有効に設定されている場合と、無効に設定されている場合、また、後処理部２６がパンチユニットを有する場合に、パンチ機能が有効に設定されている場合と、無効に設定されている場合とで、周辺装置の３つの組み合わせがある。この周辺装置の３つの組み合わせが、３つの実行条件となる。
【００５４】
また、関数実行部５３は、ＡＤＦ２１、画像読取部２２、画像処理部２３、画像形成部２４、給紙部２５および後処理部２６を動作させるために、動作を特定するための実行条件、例えば、コピー部数等が必要な場合がある。この場合には、アプリケーションプログラムは、ユーザから実行条件を受け付けるためのユーザインターフェースとして条件設定画面を表示部１１５に表示する関数の記述、ユーザが入力する実行条件を受け付ける関数の記述を含む。
【００５５】
関数実行部５３は、アプリケーションプログラムに記述された順に関数を実行することによって、表示部１１５に条件設定画面を表示し、ユーザが操作部１１６に入力する実行条件を受け付ける。関数実行部５３は、操作部１１６から実行条件を受け付ける場合は、受け付けられた実行条件に従って、アプリケーションプログラムに記述された順に関数を実行し、ＡＤＦ２１、画像読取部２２、画像処理部２３、画像形成部２４、給紙部２５および後処理部２６のいずれかを動作させる。関数実行部５３は、実行条件と、その実行条件に従って関数を実行した実行結果と、を第１エビデンスデータ生成部５５に出力する。すべての関数の実行結果は、アプリケーションプログラムの実行結果に相当する。
【００５６】
第１エビデンスデータ生成部５５は、関数実行部５３から入力される実行条件および実行結果と、ＨＤＤ１１４に記憶されている動作環境情報と、を含む第１エビデンスデータを生成し、生成された第１エビデンスデータを登録情報送信部５７に出力する。関数実行部５３が、複数の実行条件でアプリケーションプログラムを実行する場合、第１エビデンスデータ生成部５５は、複数の実行条件それぞれに対応する実行結果を含む第１エビデンスデータを生成する。なお、第１エビデンスデータに含まれる実行結果は、関数ごとの実行結果としてもよいし、アプリケーションプログラムの実行結果としてもよいし、関数ごとの実行結果およびアプリケーションプログラムの実行結果としてもよい。
【００５７】
登録情報送信部５７は、アプリケーション受付部５１から入力されるアプリケーションプログラムと、第１エビデンスデータ生成部５５から入力される第１エビデンスデータとを含む登録情報を、検索サーバ２００にネットワークＩ／Ｆ１１７を介して送信する。また、登録情報送信部５７は、アプリケーション受付部５１から入力されるアプリケーションプログラムのアプリケーション名を、登録識別情報受信部６３に出力する。
【００５８】
登録情報送信部５７が、登録情報を検索サーバ２００に送信することに応じて、検索サーバ２００は、検索サーバ２００において付与され、登録情報を識別するための登録識別情報を送信する。登録識別情報受信部６３は、ネットワークＩ／Ｆ１１７が検索サーバ２００から登録識別情報を受信すると、登録識別情報を取得し、取得した登録識別情報を登録情報送信部５７から入力されるアプリケーション名と関連付ける。
【００５９】
関数実行部５３は、登録情報送信部５７が登録情報を検索サーバ２００に送信した後で、換言すれば、アプリケーションプログラムがインストールされた後に、インストールされたアプリケーションプログラムを実行する場合がある。関数実行部５３は、実行条件に従って、インストール済のアプリケーションプログラムに記述された順に関数を実行する。実行条件は、動作環境情報により定められる周辺装置情報の組み合わせにより定まる。実行条件は、ユーザにより変更される場合がある。例えば、ＭＦＰ１００に後処理部２６が接続されている場合に、後処理部２６が有効に設定されている場合と、無効に設定されている場合、また、後処理部２６がパンチユニットを有する場合に、パンチ機能が有効に設定されている場合と、無効に設定されている場合とで、周辺装置の３つの組み合わせがある。この周辺装置の３つの組み合わせが、３つの実行条件となる。
【００６０】
関数実行部５３は、操作部１１６からアプリケーション名と実行条件とを受け付け、受け付けられた実行条件に従って、アプリケーション名で特定されるインストール済のアプリケーションプログラムに記述された順に関数を実行し、ＡＤＦ２１、画像読取部２２、画像処理部２３、画像形成部２４、給紙部２５および後処理部２６のいずれかを動作させる。関数実行部５３は、インストール済のアプリケーションプログラムのアプリケーション名と、アプリケーションプログラムを実行した実行条件と、その実行条件に従って関数を実行した実行結果と、を第２エビデンスデータ生成部５９に出力する。すべての関数の実行結果は、アプリケーションプログラムの実行結果に相当する。
【００６１】
第２エビデンスデータ生成部５９は、関数実行部５３から入力される実行条件および実行結果と、ＨＤＤ１１４に記憶されている動作環境情報と、を含む第２エビデンスデータを生成し、生成された第２エビデンスデータと、関数実行部５３から入力されるアプリケーション名と、を追加登録情報送信部６１に出力する。関数実行部５３が、複数の実行条件でインストール済のアプリケーションプログラムを実行する場合、第２エビデンスデータ生成部５９は、複数の実行条件それぞれに対応する実行結果を含む第２エビデンスデータを生成する。なお、第２エビデンスデータに含まれる実行結果は、関数ごとの実行結果としてもよいし、アプリケーションプログラムの実行結果としてもよいし、関数ごとの実行結果およびアプリケーションプログラムの実行結果としてもよい。
【００６２】
追加登録情報送信部６１は、第２エビデンスデータ生成部５９からアプリケーション名と、第２エビデンスデータとが入力される。追加登録情報送信部６１は、アプリケーション名に関連付けられた登録識別情報と第２エビデンスデータとを含む追加登録情報を生成し、追加登録情報を検索サーバ２００にネットワークＩ／Ｆ１１７を介して送信する。
【００６３】
ここで、検索サーバ２００について説明する。図６は、検索サーバが備えるＣＰＵの機能の概要の一例を示すブロック図である。図６に示す機能は、検索サーバ２００が備えるＣＰＵ２０１が、ＲＯＭ２０２、ＨＤＤ２０５またはＣＤ−ＲＯＭ２０９に記憶されたアプリケーション共有プログラムを実行することにより、ＣＰＵ２０１に形成される。
【００６４】
図６を参照して、ＣＰＵ２０１は、登録情報受信部２１１と、アプリケーション登録部２１３と、登録識別情報送信部２１５と、追加登録情報受信部２１９と、エビデンスデータ追加部２２１と、装置情報取得部２２３と、登録テーブル更新部２２５と、アプリ要求受信部２３１と、アプリ送信部２３３と、を含む。
【００６５】
登録情報受信部２１１は、ネットワークＩ／Ｆ２０４を制御して、ＭＦＰ１００，１００Ａ〜１００Ｄのうち登録装置として機能するＭＦＰ１００から登録情報を受信する。登録情報受信部２１１は、受信された登録情報をアプリケーション登録部２１３に出力するとともに、登録情報を識別するための登録識別情報を付与し、付与した登録識別情報と登録装置ＭＦＰ１００を識別するための装置識別情報とを装置情報取得部２２３に出力し、登録装置ＭＦＰ１００を識別するための装置識別情報を登録識別情報送信部２１５に出力する。
【００６６】
アプリケーション登録部２１３は、登録情報受信部２１１から入力される登録情報をＨＤＤ２０５に記憶する。また、アプリケーション登録部２１３は、登録情報を識別するための登録識別情報を登録識別情報送信部２１５に出力する。さらに、アプリケーション登録部２１３は、登録情報をＨＤＤ２０５に記憶する際に、登録情報に含まれるアプリケーションプログラムにキーワードを付与する。キーワードは、登録情報に含まれるアプリケーションプログラムを検索するために用いられ、例えば、アプリケーションプログラムが実行されることにより実現される機能の名称等である。具体的には、コピー、プリント、ファクシミリ送受信、電子メール送受信等である。キーワードは、検索サーバ２００の管理者が付与するようにしてもよいし、アプリケーションプログラムを送信してきた登録装置ＭＦＰ１００において、ＭＦＰ１００のユーザである開発者がアプリケーションプログラムをインストールする際にＭＦＰ１００に入力し、ＭＦＰ１００がアプリケーションプログラムとともに検索サーバ２００に送信するようにしてもよい。アプリケーション登録部２１３によって、登録情報に含まれるアプリケーションプログラムとエビデンスとがＨＤＤ２０５に記憶されると、ＨＤＤ２０５にアプリケーションプログラムと、エビデンスデータと、キーワードとを少なくとも含む登録情報２５１が記憶される。エビデンスデータは、アプリケーションプログラムを実行した実行条件、実行結果および動作環境情報を含む。
【００６７】
図７は、エビデンスデータの一例を示す図である。図７を参照して、エビデンスデータは、アプリケーションプログラムに関するプログラム関連情報３０３と、動作環境情報３０５と、アプリケーションプログラムの実行条件および実行結果３０７と、を含む。プログラム関連情報３０３は、上から順に、ＭＦＰにインストールされている基本プログラムのバージョン情報と、アプリケーションプログラムに用いられる関数の関数名およびその関数に渡されるパラメータを定義する情報と、ＭＦＰにおいて必須の設定値と、を含む。設定値は、図７においては、「ＳＳＬ＝ＯＮ」と記載されており、ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒ）の暗号化を必ず実行する設定であることが条件とされている。
【００６８】
動作環境情報３０５は、上から順に登録装置ＭＦＰ１００の機種名と、基本プログラムのバージョン情報と、言語の設定値と、を含む。なお、動作環境情報３０５に、登録装置ＭＦＰ１００に設定されている暗号化（ＳＳＬ）処理を実行するか否かの設定値、登録装置ＭＦＰ１００にインストールされているアプリケーションプログラムのアプリ識別情報、または、登録装置ＭＦＰ１００に接続されている周辺機器の情報と、を含めるようにしてもよい。
【００６９】
実行条件および実行結果３０７は、周辺装置の複数の組み合わせからなる複数の実行条件と、アプリケーションプログラムに渡す複数の変数の組み合わせからなる複数の実行条件とを含み、複数の実行条件それぞれに対応して、関数の実行が成功を示す「ＯＫ」の印と、関数の実行が失敗を示す「ＮＧ」の印とのいずれかを実行結果として含む。「ＦＳ−ｘｘ」は、周辺装置のうち給紙部２５の機種名を示し、「ＰＫ−ｘｘ」はパンチユニットの機種名を示す。図７においては、周辺装置の複数の組み合わせからなる実行条件として、給紙部２５が接続されている場合（「あり」）であって、パンチユニット「ＰＫ−ｘｘ」が有効に設定されている場合（「あり」）と、パンチユニット「ＰＫ−ｘｘ」が無効に設定されている場合（「なし」）と、給紙部２５が接続されていない場合（「なし」）との３つの実行条件を含む。また、アプリケーションプログラムに渡す複数の変数の組み合わせからなる複数の実行条件として、関数ＡＰＬ＿１にパラメータ（０，０）を与える実行条件と、パラメータ（１０，５０）を与えたる実行条件と、関数ＡＰＬ＿２にパラメータ（ｔｒｕｅ）を与える実行条件と、パラメータ（ｆａｌｓｅ）を与える実行条件とを含む。なお、図７において、関数が実行されることがあり得ない実行条件の実行結果の欄には、斜線を付している。
【００７０】
図６に戻って、アプリケーション登録部２１３は、さらに、登録情報２５１をＨＤＤ２０５に記憶する際に、登録テーブル２５３を更新する。登録テーブル２５３は、アプリケーションプログラムごとに、１以上のエビデンスデータを関連付けたテーブルであり、アプリケーションを識別するためのアプリ識別情報と１以上のエビデンスデータとの組を含む。アプリケーション登録部２１３は、ＨＤＤ２０５に新たなアプリケーションプログラムを含む登録情報２５１を記憶する際に、新たに登録されたアプリケーションプログラムのアプリ識別情報とエビデンスデータとの組を登録テーブル２５３に追加する。
【００７１】
装置情報取得部２２３は、登録情報受信部２１１から装置識別情報とアプリ識別情報とが入力され、アプリケーションプログラムがインストールされた登録装置ＭＦＰ１００の装置情報を取得する。具体的には、装置情報取得部２２３は、装置識別情報で特定される登録装置ＭＦＰ１００を製造したメーカが所有または管理するサーバを特定し、特定されたサーバからＭＦＰ１００の装置情報を取得する。装置情報は、ＭＦＰ１００が有することが可能な動作環境を含む。ＭＦＰ１００にインストール可能な基本プログラムは複数のバージョンが存在する場合があり、ＭＦＰ１００に接続可能な周辺装置は複数種類が存在する場合があり、ＭＦＰ１００が有する複数の機能ごとに設定が可能な設定値は複数が存在する場合がある。また、装置情報は、登録装置ＭＦＰ１００に適用することが可能な動作環境の組のうちで組み合わせることのできない組を定める禁則情報を含む。装置情報取得部２２３は、取得された装置情報と、アプリ識別情報とを登録テーブル更新部２２５に出力する。
【００７２】
登録テーブル更新部２２５は、装置情報取得部２２３から入力される装置情報に基づいて、ＨＤＤ２０５に記憶された登録テーブル２５３を更新する。具体的には、登録テーブル更新部２２５は、装置情報取得部２２３から入力される装置情報に基づいて、複数の動作環境の組み合わせを生成する。動作環境の組み合わせとは、ＭＦＰ１００にインストール可能な複数種類のバージョンの基本プログラム、ＭＦＰ１００に接続可能な複数種類の周辺装置、ＭＦＰ１００が有する複数の機能ごとに設定が可能な複数の設定値の組み合わせである。登録テーブル更新部２２５は、装置情報に基づいて動作環境の複数の組を決定し、決定した組のうちから禁則情報により定められる組を除いた組を、エビデンスデータに含めることが可能な組に決定する。
【００７３】
さらに、登録テーブル更新部２２５は、装置情報取得部２２３から入力されるアプリ識別情報を含むアプリ識別情報とエビデンスデータとの組を登録テーブル２５３から抽出し、抽出された組に生成された動作環境の複数の組と、抽出されたエビデンスデータに含まれる実行条件と、を追加する。登録テーブル２５３に追加される動作環境の組と実行条件とは、実行結果を含んでいない点でエビデンスデータと異なる。以下、登録テーブル２５３に追加される動作環境の組と実行条件とを、未完成エビデンスデータという。
【００７４】
図８は、登録テーブルの一例を示す図である。図８を参照して、登録テーブル２５３は、登録装置ＭＦＰ１００から受信されるエビデンスデータ３０１に加えて、未完成エビデンスデータ３１１，３２１を含む。未完成エビデンスデータ３１１は、動作環境情報３１５と、実行条件および実行結果３１７を含む。動作環境情報３１５は、エビデンスデータ３０１に含まれる動作環境情報３０５と、ファームウェアのバージョンのみが異なる。実行条件および実行結果３１７は、エビデンスデータ３０１に含まれる実行条件および実行結果３０７と、実行条件は同じであるが実行結果は異なり、空白である。未完成エビデンス３２１は、動作環境情報３２５と、実行条件および実行結果３２７を含む。動作環境情報３２５は、エビデンスデータ３０１に含まれる動作環境情報３０５と、ファームウェアのバージョンのみが異なる。実行条件および実行結果３２７は、エビデンスデータ３０１に含まれる実行条件および実行結果３０７と、実行条件は同じであるが実行結果は異なり、空白である。
【００７５】
図６に戻って、登録識別情報送信部２１５は、アプリケーション登録部２１３から登録識別情報が入力され、登録情報受信部２１１から登録装置ＭＦＰ１００を識別するための装置識別情報が入力される。登録識別情報送信部２１５は、登録識別情報を、装置識別情報で特定される登録装置ＭＦＰ１００にネットワークＩ／Ｆ２０４を介して送信する。
【００７６】
追加登録情報受信部２１９は、ネットワークＩ／Ｆ２０４を制御して、登録装置ＭＦＰ１００が送信する追加登録情報を受信する。追加登録情報は、登録識別情報と第２エビデンスデータとを含む。追加登録情報に含まれる第２エビデンスデータは、登録装置ＭＦＰ１００がアプリケーションプログラムを実行した実行条件、実行結果および登録装置ＭＦＰ１００の動作環境情報と、を含む。追加登録情報受信部２１９は、登録装置ＭＦＰ１００から受信された追加登録情報をエビデンスデータ追加部２２１に出力する。
【００７７】
エビデンスデータ追加部２２１は、ＨＤＤ２０５に記憶されている登録情報２５１のうちから、追加登録情報に含まれる登録識別情報で特定される登録情報を特定し、特定した登録情報に含まれる第１エビデンスデータと、追加登録情報に含まれる第２エビデンスデータとを比較する。エビデンスデータ追加部２２１は、第２エビデンスデータが第１エビデンスデータと異なることを条件に、第２エビデンスデータをＨＤＤ２０５に記憶されている登録情報２５１に追加する。また、エビデンスデータ追加部２２１は、登録テーブル２５３を更新する。エビデンスデータ追加部２２１は、第２エビデンスデータを登録情報２５１に追加する際に、追加登録情報に含まれる登録識別情報と関連付けられたアプリ識別情報と第１エビデンスデータとの組を登録テーブル２５３から抽出し、抽出した組に追加登録情報に含まれる第２エビデンスデータを追加する。第２エビデンスデータに含まれる動作環境情報の組と同じ組の未完成エビデンスデータの実行条件および実行結果を、第２エビデンスデータに含まれる実行条件および実行結果で書き換える。
【００７８】
アプリ要求受信部２３１は、ネットワークＩ／Ｆ２０４がＭＦＰ１００，１００Ａ〜１００Ｄのうちダウンロード装置として機能するＭＦＰ１００Ａからダウンロード要求を受信すると、ダウンロード要求に含まれるネットワークアドレスを、アプリ送信部２３３に出力する。アプリ送信部２３３は、アプリ要求受信部２３１から入力されるネットワークアドレスで特定されるアプリケーションプログラムを、ＨＤＤ２０５に記憶されている登録情報２５１のうちから読み出し、読み出したアプリケーションプログラムを、ダウンロード装置として機能するＭＦＰ１００ＡにネットワークＩ／Ｆ２０４を介して送信する。
【００７９】
図９は、第１アプリケーション登録処理の流れの一例を示すフローチャートである。第１アプリケーション登録処理は、登録装置として機能するＭＦＰ１００が備えるＣＰＵ１１１が、ＲＯＭ１１２、ＨＤＤ１１４またはＣＤ−ＲＯＭ１１９に記憶されたアプリケーション登録プログラムを実行することにより、ＣＰＵ１１１により実行される処理である。アプリケーション登録プログラムは、アプリケーション共有プログラムの一部である。
【００８０】
図９を参照して、ＣＰＵ１１１は、アプリケーションプログラムを受け付けたか否かを判断する（ステップＳ０１）。アプリケーションプログラムを受け付けるまで待機状態となり（ステップＳ０１でＮＯ）、アプリケーションプログラムを受け付けたならば処理をステップＳ０２に進める。換言すれば、アプリケーション登録処理は、ＭＦＰ１００にアプリケーションプログラムが入力されることを条件に実行される処理である。ＣＰＵ１１１は、ユーザが操作部１１６に入力するアプリケーションプログラムを受け付ける。また、ユーザが、パーソナルコンピュータを用いて、ＡＰＩの関数で記述されたアプリケーションプログラムを作成する場合は、パーソナルコンピュータで作成されたアプリケーションプログラムを、ネットワークＩ／Ｆ１１７がパーソナルコンピュータから受信することにより、アプリケーションプログラムを受け付ける。
【００８１】
ステップＳ０２においては、ステップＳ０１において受け付けられたアプリケーションプログラムを実行する。ステップＳ０１において受け付けられるアプリケーションプログラムは、ＡＤＦ２１、画像読取部２２、画像処理部２３、画像形成部２４、給紙部２５および後処理部２６を動作させる手順が記述されるが、それらの動作を特定するための条件、例えば、コピー部数等を要求する場合がある。ステップＳ０２において、実行されたアプリケーションプログラムが、条件を要求する場合には、その条件を受け付ける。
【００８２】
次のステップＳ０３においては、アプリケーションプログラムの実行結果を判断する。実行結果が正常ならば処理をステップＳ０４に進めるが、そうでなければ処理を終了する。ステップＳ０４においては、第１エビデンスデータを生成する。第１エビデンスデータは、ステップＳ０２において実行されたアプリケーションプログラムを実行する際に、受け付けられた条件と、ＨＤＤ１１４に記憶されている登録装置ＭＦＰ１００の動作環境情報とを含む。次のステップＳ０５においては、登録情報を検索サーバ２００に送信し、処理を終了する。登録情報は、ステップＳ０１において受け付けられたアプリケーションプログラムと、ステップＳ０４において生成された第１エビデンスデータとを含む。
【００８３】
次のステップＳ０６においては、登録情報を送信した検索サーバ２００から登録識別情報を受信し、受信された登録識別情報をアプリケーションプログラムを識別するためのアプリ識別情報と関連付けて記憶し、処理を終了する。
【００８４】
図１０は、第２アプリケーション登録処理の流れの一例を示すフローチャートである。第２アプリケーション登録処理は、検索サーバ２００が備えるＣＰＵ２０１が、ＲＯＭ２０２、ＨＤＤ２０５またはＣＤ−ＲＯＭ２０９に記憶されたアプリケーション登録プログラムを実行することにより、ＣＰＵ２０１により実行される処理である。アプリケーション登録プログラムは、アプリケーション共有プログラムの一部である。
【００８５】
図１０を参照して、ＣＰＵ２０１は、登録情報を受信したか否かを判断する（ステップＳ５１）。ネットワークＩ／Ｆ２０４が、登録情報を受信するまで待機状態となり（ステップＳ５１でＮＯ）、登録情報を受信すると（ステップＳ５１でＹＥＳ）、処理をステップＳ５２に進める。換言すれば、アプリケーション登録処理は、ＭＦＰ１００，１００Ａ〜１００Ｄのいずれかから登録情報を受信することを条件に実行される処理である。ここでは、登録装置ＭＦＰ１００から登録情報を受信する場合を例に説明する。
【００８６】
ステップＳ５２においては、キーワードを受け付ける。検索サーバ２００のユーザが、操作部２０７に入力するキーワードを受け付ける。ユーザが、ステップＳ５１において受信された登録情報に含まれるアプリケーションプログラムを閲覧し、キーワードを決定する。なお、アプリケーションプログラムの名称、アプリケーションプログラムに含まれる関数から自動的にキーワードを生成するようにしてもよい。さらに、登録情報を送信してきた登録装置ＭＦＰ１００において、アプリケーションプログラムをインストールする際に、開発者がＭＦＰ１００に入力し、登録装置ＭＦＰ１００が登録情報とともにキーワードを送信する場合は、登録情報とともに受信されたキーワードを受け付けるようにしてもよい。
【００８７】
次のステップＳ５３においては、ステップＳ５１において受信された登録情報を、ステップＳ５２において受け付けられたキーワードと関連付けて、それらをＨＤＤ２０５に記憶する。
【００８８】
次のステップＳ５４においては、ステップＳ５１において受信された登録情報に含まれる第１エビデンスエータを、登録情報に含まれるアプリケーションプログラムのアプリ識別情報と関連付けて、ＨＤＤ２０５に記憶されている登録テーブル２５３に追加する。
【００８９】
次のステップＳ５５においては、登録装置ＭＦＰ１００の装置情報を取得する。登録装置ＭＦＰ１００を製造したメーカのサーバを特定し、特定されたサーバから登録装置ＭＦＰ１００の装置情報を取得する。装置情報は、登録装置ＭＦＰ１００が有することが可能な動作環境と、登録装置ＭＦＰ１００に適用することが可能な動作環境の組のうちで組み合わせることのできない組を定める禁則情報とを含む。
【００９０】
次のステップＳ５６においては、ステップＳ５５において取得された装置情報に基づいて、ＨＤＤ２０５に記憶されている登録テーブル２５３を更新する。具体的には、装置情報に基づいて、複数の動作環境の組み合わせを生成し、生成された動作環境の複数の組と、登録テーブル２５３に含まれる第１エビデンスデータに含まれる実行条件とを含む未完成エビデンスデータを、登録テーブル２５３に追加する。
【００９１】
ステップＳ５７においては、ステップＳ５３においてＨＤＤ１１４に記憶された登録情報を識別するための登録識別情報を、ＭＦＰ１００，１００Ａ〜１００Ｄのうち登録情報を送信してきた登録装置ＭＦＰ１００にネットワークＩ／Ｆ２０４を介して送信し、処理を終了する。
【００９２】
図１１は、第１アプリケーション追加処理の流れの一例を示すフローチャートである。第１アプリケーション追加処理は、登録装置として機能するＭＦＰ１００が備えるＣＰＵ１１１が、ＲＯＭ１１２、ＨＤＤ１１４またはＣＤ−ＲＯＭ１１９に記憶された第１アプリケーション追加プログラムを実行することにより、ＣＰＵ１１１により実行される処理である。第１アプリケーション追加プログラムは、アプリケーション共有プログラムの一部である。
【００９３】
図１１を参照して、アプリケーションプログラムの実行が指示されたか否かを判断する（ステップＳ１１）。ここでのアプリケーションプログラムは、インストール済のアプリケーションプログラムであり、ＨＤＤ１１４に記憶されたアプリケーションプログラムの実行が指示されたか否かを判断する。アプリケーションプログラムの実行が指示されるまで待機状態となり（ステップＳ１１でＮＯ）、実行が指示されると（ステップＳ１１でＹＥＳ）、処理をステップＳ１２に進める。換言すれば、第１アプリケーション追加処理は、インストール済のアプリケーションプログラムの実行が指示されることを条件に実行される処理である。ステップＳ１１において、アプリケーションプログラムの実行が指示されると、実行が指示されたアプリケーションプログラムを実行し、処理をステップＳ１２に進める。
【００９４】
ステップＳ１２においては、ユーザが操作部１１６に入力する実行条件を取得する。実行条件は、複数の周辺装置の組み合わせを含む。次のステップＳ１３においては、ステップＳ１１において実行が指示されたアプリケーションプログラムが過去に実行された実行条件のうちに、取得された実行条件と同じ実行条件が存在するか否かを判断する。同じ実行条件で実行されたことがあるならば処理を終了するが、同じ実行条件で実行されたことがないならば処理をステップＳ１４に進める。
【００９５】
ステップＳ１４においては、第２エビデンスデータを生成する。第２エビデンスデータは、ステップＳ１１において実行されたアプリケーションプログラムを実行する際に、ステップＳ１２において取得された実行条件と、ＨＤＤ１１４に記憶されている登録装置ＭＦＰ１００の動作環境情報とを含む。次のステップＳ１５においては、追加登録情報を検索サーバ２００に送信し、処理を終了する。追加登録情報は、ステップＳ０１において実行が指示されたアプリケーションプログラムのアプリ識別情報と関連付けられた登録識別情報と、ステップＳ１４において生成された第２エビデンスデータとを含む。
【００９６】
図１２は、第２アプリケーション追加処理の流れの一例を示すフローチャートである。第２アプリケーション追加処理は、検索サーバ２００が備えるＣＰＵ２０１が、ＲＯＭ２０２、ＨＤＤ２０５またはＣＤ−ＲＯＭ２０９に記憶された第２アプリケーション追加プログラムを実行することにより、ＣＰＵ２０１により実行される処理である。第２アプリケーション追加プログラムは、アプリケーション共有プログラムの一部である。
【００９７】
図１２を参照して、ＣＰＵ２０１は、追加登録情報を受信したか否かを判断する（ステップＳ６１）。ネットワークＩ／Ｆ２０４が、ＭＦＰ１００，１００Ａ〜１００Ｄのいずれかから追加登録情報を受信するまで待機状態となり（ステップＳ６１でＮＯ）、追加登録情報を受信したならば処理をステップＳ６２に進める。換言すれば、第２アプリケーション追加処理は、ＭＦＰ１００，１００Ａ〜１００Ｄのいずれかから追加登録情報を受信することを条件に実行される処理である。ここでは、登録装置ＭＦＰ１００から追加登録情報を受信する場合を例に説明する。
【００９８】
ステップＳ６２においては、ステップＳ６１において受信された追加登録情報に含まれる第２エビデンスデータを、ＨＤＤ２０５に記憶されている登録情報２５１に追加して記憶する（ステップＳ６３）。具体的には、ＨＤＤ２０５に記憶されている登録情報２５１のうちから追加登録情報に含まれる登録識別情報で特定される登録情報に、追加登録情報に含まれる第２エビデンスデータと追加して記憶する。
【００９９】
次のステップＳ６３においては、追加登録情報に含まれる第２エビデンスデータを、ＨＤＤ２０５に記憶されている登録テーブル２５３に追加し、処理を終了する。具体的には、ＨＤＤ２０５に記憶されている登録テーブル２５３に、ステップＳ６１において受信された追加登録情報に含まれる登録識別情報と関連するアプリ識別情報と第２エビデンスデータとの組を追加する。
【０１００】
以上説明したように第１の実施の形態における登録装置ＭＦＰ１００は、アプリケーションプログラムがインストールされる場合、登録情報を検索サーバ２００に送信する。検索サーバ２００は、登録装置ＭＦＰ１００がアプリケーションプログラムをインストールする際に、登録装置ＭＦＰ１００から登録情報を受信し、ＨＤＤ２０５に登録情報２５１を記憶するとともに、登録識別情報を登録装置ＭＦＰ１００に送信する。登録装置ＭＦＰ１００は、さらに、検索サーバ２００が送信する登録識別情報を受信し、アプリケーションプログラムを第１のエビデンスデータに含まれる実行条件と異なる実行条件で実行する場合、追加登録情報を検索サーバに送信する。検索サーバ２００は、登録装置ＭＦＰ１００から追加登録情報を受信し、追加登録情報に含まれる第２のエビデンスデータを登録情報２５１に追加して記憶される。このため、登録装置ＭＦＰ１００によって登録されるアプリケーションプログラムが、登録装置ＭＦＰ１００の動作環境情報、第１のエビデンスデータおよび第２のエビデンスデータと組になって記憶されるので、アプリケーションプログラムを新たにインストールするダウンロード装置、例えばＭＦＰ１００Ａにおいて、そのダウンロード装置ＭＦＰ１００Ａの動作環境情報からアプリケーションプログラムをインストール可能か否かを判断するための情報を記憶することができる。
【０１０１】
＜変形例＞
上述した実施の形態においては、アプリケーションプログラムがインストールされる登録装置ＭＦＰ１００が、インストール時に第１エビデンスデータを検索サーバ２００に送信し、インストール済のアプリケーションプログラムの実行時に第２エビデンスデータを検索サーバ２００に送信することにより、検索サーバ２００に、アプリケーションプログラムと、第１および第２エビデンスデータを記憶するものであった。
【０１０２】
変形例におけるアプリケーション共有システム１においては、ＭＦＰ１００，１００Ａ〜１００Ｄにアプリケーションプログラムをシミュレートする機能を追加したものである。
【０１０３】
図１３は、変形例における登録装置として機能するＭＦＰが備えるＣＰＵが有する機能の概要の一例を示すブロック図である。図１３を参照して、図５に示す機能と異なる点は、登録情報送信部５７が登録情報送信部５７Ａに変更された点、シミュレート部８５、スタブ実行部８７が追加された点である。その他の機能は、図５に示したのと同じなので、ここでは図５に示した機能と異なる点を主に説明する。
【０１０４】
アプリケーション受付部５１は、操作部１１６より受け付けられたアプリケーションプログラムを、ＨＤＤ１１４に記憶するなどしてインストールするとともに、アプリケーションプログラムを関数実行部５３、登録情報送信部５７およびシミュレート部８５に出力する。
【０１０５】
関数実行部５３は、実行条件に従って、アプリケーション受付部５１から入力されるアプリケーションプログラムに記述された順に関数を実行する。関数実行部５３は、実行条件と、その実行条件に従って関数を実行した実行結果と、を第１エビデンスデータ生成部５５に出力し、実行条件をシミュレート部８５に出力する。
【０１０６】
第１エビデンスデータ生成部５５は、関数実行部５３から入力される実行条件および実行結果と、ＨＤＤ１１４に記憶されている動作環境情報と、を含む第１エビデンスデータを生成し、生成された第１エビデンスデータを登録情報送信部５７に出力する。
【０１０７】
シミュレート部８５は、アプリケーション受付部５１からアプリケーションプログラムが入力され、関数実行部５３から実行条件が入力される。シミュレート部８５は、アプリケーションプログラムに含まれる少なくとも１つの関数をスタブに変換するとともに、関数実行部５３から入力される実行条件とは異なる実行条件を生成する。そして、シミュレート部８５は、関数を変更したスタブを、生成された実行条件でスタブ実行部８７に実行させる。シミュレート部８５は、複数種類の実行条件を生成する場合、複数種類の実行条件ごとに、スタブをスタブ実行部８７に実行させる。また、シミュレート部８５は、アプリケーション受付部５１から入力されるアプリケーションプログラムのアプリケーション名を第２エビデンスデータ生成部５９に出力する。
【０１０８】
スタブ実行部８７は、関数実行部５３が実行する複数の関数にそれぞれ対応する複数のスタブを実行し、実行条件と実行結果との組を第２エビデンスデータ生成部５９に出力する。スタブ実行部８７は、シミュレート部８５から入力される１つの実行条件に対して１つの実行結果を実行条件とともに第２エビデンスデータ生成部５９に出力する。したがって、スタブ実行部８７は、シミュレート部８５から入力される実行条件の数と同じ数の組の実行条件と実行結果とを第２エビデンスデータ生成部５９に出力する。
【０１０９】
上述したように関数実行部５３は、複数の関数のいずれかを実行するとＡＤＦ２１、画像読取部２２、画像処理部２３、画像形成部２４、給紙部２５および後処理部２６を動作させるが、スタブ実行部８７は、複数のスタブのいずれかを実行することにより、ＡＤＦ２１、画像読取部２２、画像処理部２３、画像形成部２４、給紙部２５および後処理部２６を動作させることなく、関数実行部５３がスタブ実行部８７の実行するスタブに対応する関数を実行したのと同じ結果を、第２エビデンスデータ生成部５９に出力する。
【０１１０】
具体的には、スタブ実行部８７は、スタブを実行することにより、ＡＤＦ２１、画像読取部２２、画像処理部２３、画像形成部２４、給紙部２５および後処理部２６の動作をシミュレートし、そのシミュレートした実行結果を第２エビデンスデータ生成部５９に出力する。例えば、後処理部２６がステープル機能を備えていない実行条件の場合に、スタブがステープルする関数に対応するならば、後処理部２６によってステープルできないことを示すエラーコードを実行結果として実行条件と実行条件との組を第２エビデンスデータ生成部５９に出力する。エラーコードは、関数およびスタブの返り値として予め定められており、またはアプリケーションプログラムの実行結果としてアプリケーションプログラムにより予め定められている。スタブ実行部８７は、スタブを実行した結果がエラーの場合にはエラーコードを実行結果とし、スタブを実行した結果が正常の場合には正常終了信号を実行結果とし、実行結果と実行条件の組を第２エビデンスデータ生成部５９に出力する。
【０１１１】
第２エビデンスデータ生成部５９は、スタブ実行部８７から入力される実行結果と実行条件の組と、ＨＤＤ１１４に記憶されている動作環境情報と、を含む第２エビデンスデータを生成し、生成された第２エビデンスデータを登録情報送信部５７に出力する。スタブ実行部８７から実行条件と実行結果との組が複数入力される場合、第２エビデンスデータ生成部５９は、複数の組を含む第２エビデンスデータを生成する。
【０１１２】
登録情報送信部５７Ａは、アプリケーション受付部５１から入力されるアプリケーションプログラムと、第１エビデンスデータ生成部５５から入力される第１エビデンスデータと、第２エビデンスデータ生成部５９から入力される第２エビデンスデータと、を含む登録情報を、検索サーバ２００にネットワークＩ／Ｆ１１７を介して送信する。
【０１１３】
変形例における検索サーバ２００が備えるＣＰＵ２０１が有する機能は、図６に示した機能において、登録識別情報送信部２１５、追加登録情報受信部２１９およびエビデンスデータ追加部２２１を削除したものである。
【０１１４】
図１４は、変形例における第１アプリケーション登録処理の流れの一例を示すフローチャートである。図１４を参照して、図９に示した第１アプリケーション登録処理と異なる点は、ステップＳ０４とステップＳ０５との間にステップＳ２１〜ステップＳ２４が追加された点、ステップＳ０５がステップＳ０５Ａに変更された点である。その他の処理は、図９に示した処理と同じなので、ここでは説明を繰り返さない。
【０１１５】
ステップＳ２１においては、ステップＳ０２においてアプリケーションプログラムが実行された際の実行条件を変更する。そして、次のステップＳ２２においては、ステップＳ２１において変更された後の実行条件で、アプリケーションプログラムをシミュレートする。そして、ステップＳ２３においては、第２エビデンスデータを生成する。第２エビデンスデータは、ステップＳ２１において変更された後の実行条件と、シミュレートによる実行結果と、ＨＤＤ１１４に記憶されている登録装置ＭＦＰ１００の動作環境情報とを含む。次のステップＳ２４においては、他の実行条件が存在するか否かを判断する。他の実行条件が存在するならば処理をステップＳ２１に戻すが、存在しなければ処理をステップＳ０５Ａに進める。実行条件の複数の組み合わせのうちに、未だ実行されていない実行条件が存在するか否かを判断する。
【０１１６】
ステップＳ０５Ａにおいては、登録情報を検索サーバ２００に送信し、処理を終了する。登録情報は、ステップＳ０１において受け付けられたアプリケーションプログラムと、ステップＳ０４において生成された第１エビデンスデータと、ステップＳ２３において生成された第２エビデンスデータと、を含む。
【０１１７】
図１５は、変形例における第２アプリケーション登録処理の流れの一例を示すフローチャートである。図１５を参照して、図１０に示した第２アプリケーション登録処理と異なる点は、ステップＳ５３およびステップＳ５４がステップＳ５３ＡおよびステップＳ５４Ａに変更された点、ステップＳ５７が削除された点である。その他の処理は、図１０に示した処理と同じなので、ここでは説明を繰り返さない。ステップＳ５３Ａにおいては、ステップＳ５１において受信された登録情報を、ステップＳ５２において受け付けられたキーワードと関連付けて、それらをＨＤＤ２０５に記憶する。登録情報には、第１エビデンスデータと第２エビデンスデータとが含まれる。
【０１１８】
次のステップＳ５４Ａにおいては、ステップＳ５１において受信された登録情報に含まれる第１エビデンスエータおよび第２エビデンスデータを、登録情報に含まれるアプリケーションプログラムのアプリ識別情報と関連付けて、ＨＤＤ２０５に記憶されている登録テーブル２５３に追加する。
【０１１９】
変形例におけるアプリケーション共有システム１においては、登録装置ＭＦＰ１００は、アプリケーションプログラムがインストールされる場合、アプリケーションプログラムを実行した第１実行条件、実行結果および動作環境情報と、を含む第１のエビデンスデータを生成するとともに、アプリケーションプログラムをシミュレートした第２実行条件、実行結果を含む第２のエビデンスデータを生成する。そして、アプリケーションプログラムと、動作環境情報、第１および第２のエビデンスデータとの組からなる登録情報を検索サーバに送信する。このため、検索サーバ２００において、アプリケーションプログラムが登録装置ＭＦＰ１００の動作環境情報、第１のエビデンスデータおよび第２のエビデンスデータと組になって記憶されるので、アプリケーションプログラムを新たにインストールする画像形成装置、例えば、ダウンロード装置ＭＦＰ１００Ａにおいて、ＭＦＰ１００Ａの動作環境情報からアプリケーションプログラムをインストール可能か否かを判断するための情報を記憶することができる。
【０１２０】
＜第２の実施の形態＞
第２の実施の形態におけるアプリケーション共有システム１においては、第１の実施の形態におけるＭＦＰ１００，１００Ａ〜１００Ｄと同様に、ＭＦＰ１００，１００Ａ〜１００Ｄのいずれかの登録装置（第１の画像形成装置）で開発されたアプリケーションプログラムが、検索サーバ２００に登録され、ＭＦＰ１００，１００Ａ〜１００Ｄのいずれかのダウンロード装置（第２の画像形成装置）において検索サーバ２００からアプリケーションプログラムをダウンロードしてインストールする。第２の実施の形態におけるＭＦＰ１００，１００Ａ〜１００Ｄは、それらのいずれかのダウンロード装置（第２の画像形成装置）が、検索サーバ２００からアプリケーションプログラムをダウンロードする前の段階で、検索サーバ２００に検索要求を送信し、検索結果画面を検索サーバ２００から受信する点で第１の実施の形態におけるアプリケーション共有システム１と異なる。以下、第２の実施の形態におけるアプリケーション共有システム１について、第１の実施の形態におけるアプリケーション共有システム１と異なる点を主に説明する。また、以下の説明では、ＭＦＰ１００が登録装置として機能し、ＭＦＰ１００Ａがダウンロード装置として機能する場合を例に説明する。
【０１２１】
第２の実施の形態におけるアプリケーション共有システムの全体概要は図１に示したのと同じである。ＭＦＰの外観およびハードウエア構成は図２および図３に示したのと同じである。検索サーバ２００のハードウエア構成は図４に示したブロック図と同じである。第２の実施の形態において、登録装置として機能するＭＦＰ１００が備えるＣＰＵが有する機能は、図５に示したブロック図と同じである。したがって、それらについての説明は繰り返さない。
【０１２２】
図１６は、第２の実施の形態における検索サーバが備えるＣＰＵの機能の概要の一例を示すブロック図である。図１６に示す機能は、検索サーバ２００が備えるＣＰＵ２０１が、ＲＯＭ２０２、ＨＤＤ２０５またはＣＤ−ＲＯＭ２０９に記憶されたアプリケーション共有プログラムを実行することにより、ＣＰＵ２０１に形成される。
【０１２３】
図１６を参照して、ＣＰＵ２０１は、登録情報受信部２１１と、アプリケーション登録部２１３と、検索要求受信部２４１と、抽出部２４３と、画面情報送信部２４５と、シミュレート結果受信部２１９Ａと、エビデンスデータ追加部２２１Ａと、アプリ要求受信部２３１と、アプリ送信部２３３と、を含む。
【０１２４】
登録情報受信部２１１は、図６に示した機能と同じなので、ここでは説明を繰り返さない。第２の実施の形態におけるアプリケーション登録部２１３は、登録テーブル２５３にエビデンスデータとアプリ識別情報の登録する機能を有しない点で、第１の実施の形態におけるアプリケーション登録部２１３と異なるが、その他の機能は同じである。登録情報受信部２１１とアプリケーション登録部２１３によって、登録装置ＭＦＰ１００から受信される登録情報がＨＤＤ２０５に登録情報２５１として記憶される。
【０１２５】
検索要求受信部２４１は、ネットワークＩ／Ｆ２０４がＭＦＰ１００，１００Ａ〜１００Ｄのうちダウンロード装置として機能するＭＦＰ１００Ａから検索要求を受信すると、ダウンロード装置ＭＦＰ１００Ａに検索画面をネットワークＩ／Ｆ２０４を介して送信する。検索画面は、ＨＤＤ２０５に記憶された登録情報２５１を検索するための検索キーワードを入力する領域を含む。検索画面を受信するダウンロード装置ＭＦＰ１００Ａは、検索画面を表示し、ユーザが検索画面に従って検索キーワードを入力すれば、検索キーワードを検索サーバ２００に送信する。検索要求受信部２４１は、ネットワークＩ／Ｆ２０４が検索画面を送信したダウンロード装置ＭＦＰ１００Ａから検索キーワードを受信すると、受信された検索キーワードを抽出部２４３に出力する。
【０１２６】
抽出部２４３は、検索要求受信部２４１から検索キーワードが入力されることに応じて、検索キーワードを用いてＨＤＤ２０５に記憶されている登録情報２５１を検索する。具体的には、ＨＤＤ２０５に記憶されている登録情報２５１のうち、検索要求受信部２４１から入力される検索キーワードと同じキーワード、またはそれに含まれる複数のキーワードの少なくとも１つと同じキーワードで、関連付けられたアプリケーションプログラムを抽出する。ＨＤＤ２０５に、検索キーワードと同じキーワード、またはそれに含まれる複数のキーワードの少なくとも１つと同じキーワードで、関連付けられたアプリケーションプログラムが複数記憶されている場合、それら複数のアプリケーションプログラムを抽出する。抽出部２４３は、抽出された１以上のアプリケーションプログラムそれぞれを、それに関連付けられている第１エビデンスデータとともに、画面情報送信部２４５に出力する。
【０１２７】
画面情報送信部２４５は、抽出部２４３から入力される１以上のアプリケーションプログラムおよび第１エビデンスデータに基づいて画面情報を生成し、画面情報をＭＦＰ１００，１００Ａ〜１００Ｄのうち検索キーワードを送信してきたものにネットワークＩ／Ｆ２０４を介して送信する。
【０１２８】
画面情報送信部２４５は、シミュレートコマンド生成部２４７を含む。シミュレートコマンド生成部２４７は、抽出部２４３から入力される１以上のアプリケーションプログラムの実行をシミュレートするシミュレートコマンドを生成する。シミュレートコマンド生成部２４７は、アプリケーションプログラムを第１エビデンスデータに含まれる実行条件での実行をシミュレートするシミュレートコマンドを生成する。
【０１２９】
シミュレートコマンド生成部２４７は、アプリケーションプログラムに含まれる関数の名称を、関数をシミュレートするために予め定められたスタブの名称に変更する。ここでは、スタブの名称は、関数の名称の後に「ｓｔｂ」を追加した名称としている。例えば、ＡＰＩの名称が「ｃｏｐｙ．ｐｙ」とすると、スタブの名称は「ｃｏｐｙｓｔｂ．ｐｙ」である。
【０１３０】
画面情報送信部２４５は、シミュレートコマンド生成部２４７により生成されたシミュレートコマンドと、シミュレートコマンドを実行した結果を返信する返信コマンドと、アプリケーションプログラムのネットワークアドレスとを含む画面情報を生成する。画面情報送信部２４５は、抽出部２４３から複数のアプリケーションプログラムが入力される場合、複数のアプリケーションプログラムごとに、画面情報を生成する。画面情報送信部２４５は、抽出部２４３から入力されるアプリケーションプログラムの数の画面情報を生成する。画面情報は、シミュレートコマンドと、返信コマンドと、表示コマンドとを含む。
【０１３１】
シミュレートコマンドは、関数の名称をスタブの名称に変更した後のスタブを含み、スタブを実行させる記述である。シミュレートコマンドは、抽出部２４３からアプリケーションプログラムとともに入力される第１エビデンスデータに含まれる実行条件で、スタブを実行させる記述である。例えば、第１エビデンスデータに含まれる実行条件をスタブに引数として渡す記述である。返信コマンドは、アプリケーションプログラムのアプリ識別情報と、第２エビデンスデータを検索サーバ２００に返信させる記述である。第１エビデンスデータは、動作環境情報と、シミュレートコマンドの実行条件および実行結果と、を含む。表示コマンドは、アプリケーションプログラムをダウンロード可能に表示させるコマンドであり、ＨＤＤ２０５に記憶された登録情報２５１に含まれるアプリケーションプログラムへのリンク情報を含み、リンク情報は、そのアプリケーションプログラムのネットワークアドレスを含む。ネットワークアドレスは、例えば、ＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）である。
【０１３２】
ここでは、画面情報送信部２４５は、マークアップ言語で記述され、画面情報を記述したウェブページを生成し、生成されたウェブページと第１エビデンスデータとをＭＦＰ１００，１００Ａ〜１００Ｄのうちダウンロード装置として機能するＭＦＰ１００Ａに送信する。ウェブページは、シミュレートコマンドの記述と、第２エビデンスデータを返信する返信コマンドの記述と、アプリケーションプログラムをダウンロード可能に表示する表示コマンドの記述とを含む。シミュレートコマンドの記述と、返信コマンドの記述と、表示コマンドの記述とは、抽出部２４３から入力される１以上のアプリケーションプログラムの数と同じ数だけウェブページに含まれる。第１エビデンスデータは、抽出部２４３から入力される１以上のアプリケーションプログラムにそれぞれ対応する。
【０１３３】
検索結果画面を受信するダウンロード装置ＭＦＰ１００Ａの動作の詳細は後述するが、ダウンロード装置ＭＦＰ１００Ａは、検索サーバ２００から検索結果画面を受信すると、シミュレートコマンドに従ってアプリケーションプログラムをシミュレートし、シミュレート結果を検索サーバ２００に返信する。シミュレート結果は、アプリケーションプログラムを識別するためのアプリ識別情報と第２エビデンスデータとの組を含む。シミュレート結果に含まれる第２エビデンスデータは、ダウンロード装置ＭＦＰ１００Ａがアプリケーションプログラムを実行した実行条件、実行結果およびダウンロード装置ＭＦＰ１００Ａの動作環境情報と、を含む。
【０１３４】
シミュレート結果受信部２１９Ａは、ネットワークＩ／Ｆ２０４を制御して、ダウンロード装置ＭＦＰ１００Ａが送信するシミュレート結果を受信する。シミュレート結果受信部２１９Ａは、ダウンロード装置ＭＦＰ１００Ａから受信されたシミュレート結果をエビデンスデータ追加部２２１に出力する。
【０１３５】
エビデンスデータ追加部２２１Ａは、シミュレート結果受信部２１９Ａから入力されるシミュレート結果に含まれるエビデンスデータが登録装置ＭＦＰ１００から受信されたエビデンスデータと異なることを条件に、シミュレート結果に含まれるエビデンスデータを第２エビデンスデータとしてＨＤＤ２０５に記憶されている登録情報２５１に追加する。
【０１３６】
アプリ要求受信部２３１は、ネットワークＩ／Ｆ２０４がＭＦＰ１００，１００Ａ〜１００Ｄのうちダウンロード装置として機能するＭＦＰ１００Ａからダウンロード要求を受信すると、ダウンロード要求に含まれるネットワークアドレスを、アプリ送信部２３３に出力する。アプリ送信部２３３は、アプリ要求受信部２３１から入力されるネットワークアドレスで特定されるアプリケーションプログラムを、ＨＤＤ２０５に記憶されている登録情報２５１のうちから読み出し、読み出したアプリケーションプログラムを、ダウンロード装置として機能するＭＦＰ１００ＡにネットワークＩ／Ｆ２０４を介して送信する。
【０１３７】
図１７は、アプリケーションプログラムの一例を示す図である。図１７を参照して、アプリケーションプログラム３５１は、アプリケーションプログラムの名称ＣｏｐｙＡｐｐ＿Ａ．ｐｙであり、言語はＰｙｔｈｏｎで記述される。アプリケーションプログラム３５１は、関数名ｋｍｆｕｎｃ．ｃｏｐｙの関数３５３の記述を含む。関数は、ｉｍｐｏｒｔコマンドによってアプリケーションプログラムに組み入れられている。関数３５３は、引数「ｎｕｍ」および「ｓｔａｐｌｅ」が与えられる。引数「ｎｕｍ」は、コピー枚数を示し、引数「ｓｔａｐｌｅ」は、ステープル位置を示す。関数３５３は、引数「ｎｕｍ」の部数コピーし、引数「ｓｔａｐｌｅ」で指定される位置にステープルする動作をさせる関数である。
【０１３８】
図１８は、画面情報を含むウェブページのソースコードの一例を示す図である。図１８を参照して、ウェブページ３６１は、ＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）のマークアップ言語で記述され、シミュレートコマンドの記述３６３と、返信コマンドの記述３６５と、表示コマンドの記述３６７とを含む。シミュレートコマンドの記述３６３は、関数名ｋｍｆｕｎｃ．ｃｏｐｙの関数３５３に対応し、名称ｋｍｆｕｎｃ．ｃｏｐｙｓｕｂのスタブを含み、引数「ｎｕｍ」として「２」と、引数「ｓｔａｐｌｅ」として「ｕｐｐｅｒ＿ｒｉｇｈｔ」とが与えられる記述を含む。これらの引数は、エビデンスに含まれる条件に基づいて関数に与えられるものである。表示コマンドの記述３６７は、シミュレートコマンドの実行結果が成功「ｏｋ」の場合に、アプリケーションプログラムＣｏｐｙＡｐｐ＿Ａをダウンロード可能に表示する記述を含む。
【０１３９】
図１９は、ダウンロード装置として機能するＭＦＰが備えるＣＰＵが有する機能の概要の一例を示すブロック図である。図１９に示す機能は、ダウンロード装置として機能するＭＦＰ１００Ａが備えるＣＰＵ１１１が、ＲＯＭ１１２、ＨＤＤ１１４またはＣＤ−ＲＯＭ１１９に記憶されたアプリケーション共有プログラムおよびブラウジングプログラムを実行することにより、ＣＰＵ１１１に形成される。
【０１４０】
図１９を参照して、ＣＰＵ１１１は、ブラウジング部８１と、画面情報受信部８３と、シミュレート部８５と、スタブ実行部８７と、回数決定部９５と、変更部９７と、画面生成部８９と、シミュレート結果送信部９１と、ダウンロード部９３と、を含む。ブラウジング部８１およびダウンロード部９３は、ＣＰＵ１１１が、ＲＯＭ１１２、ＨＤＤ１１４またはＣＤ−ＲＯＭ１１９に記憶されたブラウジングプログラムを実行することにより、ＣＰＵ１１１に形成される機能である。画面情報受信部８３と、シミュレート部８５と、スタブ実行部８７と、回数決定部９５と、変更部９７と、画面生成部８９と、シミュレート結果送信部９１とは、ＣＰＵ１１１がアプリケーション共有プログラムを実行することによりＣＰＵ１１１に形成される機能である。
【０１４１】
ここでは、ブラウジング部８１が起動すると、ブラウジング部８１が検索サーバ２００に、それに登録されているアプリケーションプログラムを検索するための検索画面の送信を要求する場合を説明する。ブラウジング部８１は、ネットワークＩ／Ｆ１１７が検索サーバ２００から検索画面を受信すると、受信された検索画面を表示部１１５に表示する。ユーザが表示部１１５に表示された検索画面に従って、検索キーワードを入力することができる。検索キーワードは、ユーザがＭＦＰ１００にインストールすることを望むアプリケーションプログラムを抽出するための条件である。例えば、予め複数の検索キーワードを準備しておき、複数の検索キーワードのうちから１つをユーザが検索画面で選択するようにしてもよいし、ユーザが任意に検索キーワードを検索画面に入力するようにしてもよい。任意の検索キーワードを入力する場合には、例えば、コピー機能に関するアプリケーションプログラムをインストールすることを望むのであれば、検索キーワードにコピー機能に関連するワード、例えば「コピー」を設定すればよい。ブラウジング部８１は、ユーザが操作部１１６に入力する検索キーワードを検索サーバ２００に、ネットワークＩ／Ｆ１１７を介して送信する。
【０１４２】
画面情報受信部８３は、ネットワークＩ／Ｆ１１７を制御して、検索サーバ２００が検索キーワードの受信に応じて送信する画面情報と第１エビデンスデータとを受信し、受信された画面情報をシミュレート部８５、画面生成部８９およびシミュレート結果送信部９１に出力し、第１エビデンスデータを回数決定部９５に出力する。画面情報は、検索サーバ２００によって抽出された１以上のアプリケーションプログラムそれぞれについて、該アプリケーションプログラムに含まれる関数の一部をシミュレートするシミュレートコマンドと、シミュレート結果を返信する返信コマンドと、そのアプリケーションプログラムのネットワークアドレスと、を含む。ここでは、画面情報は、シミュレートコマンド、返信コマンドおよび表示コマンドとしてウェブページに記述され、画面情報が記述されたウェブページを受信する場合について説明する。
【０１４３】
回数決定部９５は、画面情報受信部８３から第１エビデンスデータが入力される。回数決定部９５は、第１エビデンスデータに含まれる登録装置の動作環境情報と、自装置の動作環境情報とを比較し、シミュレート部８５がシミュレートコマンドを実行するシミュレーション回数を、決定する。登録装置と自装置との間で動作環境情報が同じであれば、シミュレーション回数を少なくし、動作環境情報の異なる部分が増えるにつれてシミュレーション回数を多くする。回数決定部９５は、決定したシミュレーション回数をシミュレート部８５に出力する。
【０１４４】
シミュレートコマンドと並行して、バックグラウンドで印刷実行処理やＦＡＸ受信処理等が実行されている場合、ネットワークＩ／Ｆ１１７を介してデータ送受信処理を実行されている場合等、ＣＰＵ１１１の負荷によって、スタブ実行部８７がスタブを実行するタイミングが変わる場合がある。この場合はスタブ実行部８７が実行するスタブの実行結果がエラーとなる場合、特定の処理を省略する場合、処理順序を変更する場合がある。このように登録装置の動作環境と自装置の動作環境とが同じであっても、スタブ実行部８７がスタブを実行する結果が必ずしも同じ結果とはならない場合がる。一方、バックグラウンド処理やネットワークの負荷による違いは自装置の動作環境情報に表すことができない。このため、ＣＰＵ１１１の負荷によってスタブ実行部８７がスタブを実行する結果が異なる場合があるので、回数決定部９５は、シミュレーション回数を決定する。なお、ＣＰＵ１１１の負荷を変動させて、スタブ実行部８７に異なる負荷のそれぞれでスタブを実行させるようにしてもよい。
【０１４５】
シミュレート部８５は、画面情報受信部８３から入力されるウェブページに記述されたシミュレートコマンドに従って、シミュレートコマンドに含まれるスタブをスタブ実行部８７に実行させる。シミュレート部８５は、スタブ実行部８７に同じスタブを、回数決定部９５から入力される回数だけ繰り返し実行させる。ただし、後述する変更部９７により回数が変更された場合には、シミュレート部８５は、スタブ実行部８７に同じスタブを、変更後の回数だけ繰り返し実行させる。スタブ実行部８７が既にスタブを実行した回数が、変更後の回数以上の場合は、シミュレート部８５は、回数が変更された時点でスタブ実行部８７にスタブを実行させるのを中止させる。
【０１４６】
スタブ実行部８７は、関数実行部５３が実行する複数の関数にそれぞれ対応する複数のスタブを実行し、実行条件と実行結果とを画面生成部８９およびシミュレート結果送信部９１に出力する。上述したように関数実行部５３は、複数の関数のいずれかを実行するとＡＤＦ２１、画像読取部２２、画像処理部２３、画像形成部２４、給紙部２５および後処理部２６を動作させるが、スタブ実行部８７は、複数のスタブのいずれかを実行することにより、ＡＤＦ２１、画像読取部２２、画像処理部２３、画像形成部２４、給紙部２５および後処理部２６を動作させることなく、関数実行部５３がスタブ実行部８７の実行するスタブに対応する関数を実行したのと同じ結果を、変更部９７、画面生成部８９およびシミュレート結果送信部９１に出力する。
【０１４７】
具体的には、スタブ実行部８７は、スタブを実行することにより、ＡＤＦ２１、画像読取部２２、画像処理部２３、画像形成部２４、給紙部２５および後処理部２６の動作をシミュレートし、そのシミュレートした結果を、変更部９７、画面生成部８９およびシミュレート結果送信部９１に出力する。例えば、後処理部２６がステープル機能を備えていない場合に、スタブがステープルする関数に対応するならば、後処理部２６によってステープルできないことを示すエラーコードを、変更部９７、画面生成部８９およびシミュレート結果送信部９１に出力する。エラーコードは、関数およびスタブの返り値として予め定められており、またはアプリケーションプログラムの実行結果としてアプリケーションプログラムにより予め定められている。スタブ実行部８７は、スタブを実行した結果がエラーの場合にはエラーコードを、変更部９７、画面生成部８９およびシミュレート結果送信部９１に出力するが、スタブを実行した結果が正常の場合には正常終了信号を、変更部９７、画面生成部８９およびシミュレート結果送信部９１に出力する。
【０１４８】
変更部９７は、スタブ実行部８７からシミュレート結果が入力される。変更部９７は、スタブ実行部８７が同じスタブを複数回実行する間の成功率を算出し、スタブ実行部８７が所定回数Ｔ２以上実行した場合の成功率が所定のしきい値Ｒ以上ならば、回数決定部９５により決定されたシミュレーション回数を減少させる。例えば、成功率が８０％以上ならばシミュレーション回数を半減させる。成功率は、実行回数に占める正常終了信号の割合である。
【０１４９】
画面生成部８９は、画面情報受信部８３から入力されるウェブページに含まれる表示コマンドを実行し、スタブ実行部８７から入力されるシミュレート結果に基づいて検索結果画面を生成し、検索結果画面をブラウジング部８１に出力する。検索結果画面は、マークアップ言語で記述される。具体的には、画面生成部８９は、スタブ実行部８７から入力される正常終了信号の割合が高いものから順に、スタブ実行部８７により実行されたスタブに対応するアプリケーションプログラムをダウンロード可能に表示するハイパーリンクの記述を上から並べて配置した検索結果画面を生成する。アプリケーションプログラムをダウンロード可能に表示する記述は、表示コマンドに含まれるアプリケーションプログラムが記憶されているネットワークアドレスを含むリンク情報と関連付けられる。
【０１５０】
また、スタブ実行部８７から入力されるシミュレート結果に加えて、登録装置と自装置との動作環境情報の違いに基づいて、検索結果画面を生成するようにしてもよい。例えば、登録装置の動作環境と自装置の動作環境が同一で成功率が高い場合は信頼度Ａとし、登録装置の動作環境と自装置の動作環境が異なり成功率が低い場合は信頼度Ａよりも低い信頼度Ｂ、登録装置の動作環境と自装置の動作環境が同一で成功率が低い場合は信頼度Ｂよりも低い信頼度Ｃとし、信頼度の高い順にハイパーリンクの記述を上から並べて配置した検索結果画面を生成する。
【０１５１】
シミュレート結果送信部９１は、画面情報受信部８３から入力されるウェブページに記述された返信コマンドに従って、シミュレート結果をネットワークＩ／Ｆ１１７を介して検索サーバ２００に送信する。シミュレート結果は、シミュレート部８５がシミュレートコマンドを実行したアプリケーションプログラムのアプリ識別情報と、第２エビデンスデータとを含む。第２エビデンスデータは、シミュレート部８５がスタブ実行部８７に関数をシミュレートさせた実行条件と、スタブ実行部８７から入力されるシミュレート結果と、ダウンロード装置ＭＦＰ１００Ａの動作環境情報とを含む。ここでのシミュレート結果は、成功率である。
【０１５２】
画面情報受信部８３から入力されるウェブページにシミュレートコマンドと、返信コマンドと、表示コマンドとの組が複数記述されている場合、シミュレート部８５、画面生成部８９、およびシミュレート結果送信部９１は、複数の組ごとに、シミュレートコマンド、返信コマンドおよび表示コマンドを実行する。
【０１５３】
このため、検索結果画面は、検索サーバ２００において、抽出された複数のアプリケーションプログラムのうち、ダウンロード装置ＭＦＰ１００Ａで実行すると成功率の高いアプリケーションプログラムをダウンロードする記述が上側に配置される。なお、成功率がゼロまたは、所定の値以下のアプリケーションプログラムをダウンロードする記述を検索画面に含めないようにしてもよい。検索結果画面は、ＭＦＰ１００Ａで実行するとエラーとなるアプリケーションプログラムをダウンロードする記述を含まないので、不要なアプリケーションプログラムがダウンロードされないようにすることができる。
【０１５４】
ブラウジング部８１は、画面生成部８９から検索結果画面が入力されると、検索結果画面を表示部１１５に表示する。検索結果画面は、アプリケーションプログラムをダウンロード可能に表示するハイパーリンクの記述を含むので、ユーザが操作部１１６を操作して、検索結果画面のリンク元を指示すれば、ブラウジング部８１は、アプリケーションプログラムのダウンロード要求を、検索サーバ２００に送信する。検索サーバ２００は、ダウンロード要求を受信すると、アプリケーションプログラムを送信するので、ダウンロード部９３は、ネットワークＩ／Ｆ１１７がアプリケーションプログラムを受信すると、その受信されたアプリケーションプログラムを、ＨＤＤ１１４に記憶する。
【０１５５】
図２０は、検索送信処理の流れの一例を示すフローチャートである。検索送信処理は、検索サーバ２００が備えるＣＰＵ２０１が、ＲＯＭ２０２、ＨＤＤ２０５またはＣＤ−ＲＯＭ２０９に記憶された検索送信プログラムを実行することにより、ＣＰＵ２０１により実行される処理である。検索送信プログラムは、アプリケーション共有プログラムの一部である。図２０を参照して、ＣＰＵ２０１は、登録情報を受信したか否かを判断する（ステップＳ７１）。ネットワークＩ／Ｆ２０４が、ＭＦＰ１００，１００Ａ〜１００Ｄのいずれかから登録情報を受信したならば処理をステップＳ７２に進めるが、そうでなければ処理をステップＳ７４に進める。
【０１５６】
ステップＳ７２においては、キーワードを受け付ける。検索サーバ２００のユーザが、操作部２０７に入力するキーワードを受け付ける。ユーザが、ステップＳ７１において受信された登録情報に含まれるアプリケーションプログラムを閲覧し、キーワードを決定する。なお、アプリケーションプログラムの名称、アプリケーションプログラムに含まれる関数から自動的にキーワードを生成するようにしてもよい。さらに、アプリケーションプログラムを送信しきた登録装置、ここではＭＦＰ１００において、アプリケーションプログラムをインストールする際に、開発者が入力し、アプリケーションプログラムとともにキーワードを送信する場合は、登録情報とともに受信されたキーワードを受け付けるようにしてもよい。
【０１５７】
次のステップＳ７３においては、ステップＳ７１において受信された登録情報を、ステップＳ７２において受け付けられたキーワードと関連付けてＨＤＤ２０５に記憶し、処理を終了する。
【０１５８】
一方、ステップＳ７４においては、検索要求を受信したか否かを判断する。ネットワークＩ／Ｆ２０４が、ＭＦＰ１００，１００Ａ〜１００Ｄのうちダウンロード装置として機能する装置から検索要求を受信したならば処理をステップＳ７５に進めるが、検索要求を受信しなければ処理をステップＳ８１に進める。ここでは、ＭＦＰ１００Ａがダウンロード装置として機能する場合を例に説明する。
【０１５９】
ステップＳ７５においては、ＨＤＤ２０５に記憶されているアプリケーションプログラムのうちからダウンロード装置ＭＦＰ１００Ａから受信される検索キーワードを含むキーワードと関連付けられたアプリケーションプログラムを抽出する。具体的には、ダウンロード装置ＭＦＰ１００Ａに検索画面をネットワークＩ／Ｆ２０４を介して送信する。検索画面は、ＨＤＤ２０５に記憶されたアプリケーションプログラムを検索するための検索キーワードを入力する領域を含む。ダウンロード装置ＭＦＰ１００Ａは、検索画面を表示し、ユーザが検索画面に従って検索キーワードを入力すれば、検索キーワードとダウンロード装置ＭＦＰ１００Ａの動作環境情報とを検索サーバ２００に送信する。ステップＳ７５においては、ネットワークＩ／Ｆ２０４がダウンロード装置ＭＦＰ１００Ａから検索キーワードを受信すると、受信された検索キーワードを用いて、ＨＤＤ２０５に記憶されている登録情報２５１を検索する。ＨＤＤ２０５に、検索キーワードを含むキーワードと関連付けられたアプリケーションプログラムと第１エビデンスデータとを抽出する。ＨＤＤ２０５に、検索キーワードを含むキーワードと関連付けられたアプリケーションプログラムが複数記憶されている場合、それら複数のアプリケーションプログラムと第１エビデンスデータとの組すべてを抽出する。
【０１６０】
次のステップＳ７６においては、画面情報生成・送信処理を実行する。画面情報生成・送信処理の詳細は後述するが、ステップＳ７５において抽出されたアプリケーションプログラムをダウンロードするための検索結果画面を生成するための画面情報を生成し、送信する処理である。
【０１６１】
ステップＳ７７においては、ダウンロード装置ＭＦＰ１００Ａからシミュレート結果を受信するまで待機状態となり（ステップＳ７７でＮＯ）、シミュレート結果を受信すると（ステップＳ７７でＹＥＳ）、処理をステップＳ７８に進める。シミュレート結果は、アプリケーションプログラムを識別するためのアプリ識別情報と第２エビデンスデータとの組を含む。第２エビデンスデータは、ダウンロード装置ＭＦＰ１００Ａがアプリケーションプログラムを実行した実行条件、シミュレート結果およびダウンロード装置ＭＦＰ１００Ａの動作環境情報と、を含む。
【０１６２】
次のステップＳ７８においては、ダウンロード装置ＭＦＰ１００Ａから受信されたシミュレート結果に含まれる第２エビデンスデータが、ＨＤＤ２０５に記憶されている登録情報２５１と重複しているか否かを判断する。ＨＤＤ２０５に記憶されている登録情報２５１のうちからステップＳ７７において受信されたシミュレート結果に含まれるアプリ識別情報と関連付けられた登録情報を抽出し、抽出された登録情報にステップＳ７８において受信されたシミュレート結果に含まれる第２エビデンスデータと同じ第１エビデンスデータが含まれていれば、重複すると判断する。受信された第２エビデンスデータと登録情報に含まれる第１エビデンスデータとが重複しないならば処理をステップＳ７９に進めるが、重複するならば処理を終了する。ステップＳ７９においては、受信されたシミュレート結果に含まれる第２エビデンスデータを、ＨＤＤ２０５に記憶されている登録情報２５１に追加して記憶し、処理を終了する。
【０１６３】
一方、ステップＳ８０においては、ダウンロード要求を受信したか否かを判断する。ネットワークＩ／Ｆ２０４が、ダウンロード装置として機能するＭＦＰ１００Ａからダウンロード要求を受信したならば処理をステップＳ８１に進めるが、ダウンロード要求を受信しなければ処理をステップＳ７１に戻す。ダウンロード要求は、ＨＤＤ２０５に記憶されているアプリケーションプログラムのネットワークアドレスを含む。
【０１６４】
ステップＳ８１においては、ＨＤＤ２０５に記憶されているアプリケーションプログラムのうちダウンロード要求に含まれるネットワークアドレスで特定されるアプリケーションプログラムを読出し、ダウンロード装置として機能するＭＦＰ１００ＡにネットワークＩ／Ｆ２０４を介して送信し、処理を終了する。
【０１６５】
図２１は、画面情報生成・送信処理の流れの一例を示すフローチャートである。画面情報生成・送信処理は、図１６のステップＳ７６において実行される処理である。図２１を参照して、図２０のステップＳ７５において、抽出された１以上のアプリケーションプログラムのうちから１つを選択する。
【０１６６】
次のステップＳ９２においては、シミュレートコマンドを生成する。具体的には、ステップＳ９１において選択されたアプリケーションプログラムに含まれる１以上の関数の実行をシミュレートするためのシミュレートコマンドを生成する。
【０１６７】
次のステップＳ９３においては、表示コマンドを生成する。表示コマンドは、アプリケーションプログラムをダウンロード可能に表示するコマンドである。そして、マークアップ言語で記述されるウェブページに、生成されたシミュレートコマンド、返信コマンドおよび表示コマンドの記述を追加する（ステップＳ９４）。
【０１６８】
次のステップＳ９５においては、図２０のステップＳ７５において、抽出された１以上のアプリケーションプログラムのうちステップＳ９１において未だ処理対象として選択されていないアプリケーションプログラムが存在するか否かを判断する。処理対象として選択されていないアプリケーションプログラムが存在すれば処理をステップＳ９１に戻すが、存在しなければ処理をステップＳ９６に進める。ステップＳ９６においては、ＭＦＰ１００，１００Ａ〜１００Ｄのうちダウンロード装置として機能するＭＦＰ１００Ａに、第１エビデンスデータと、ステップＳ９４において生成されたウェブページと、を、ネットワークＩ／Ｆ２０４を介して送信し、処理を検索送信処理に戻す。第１エビデンスデータは、ステップＳ９１において選択されたアプリケーションプログラムに対応する第１エビデンスデータである。
【０１６９】
画面情報生成・送信処理が実行されることにより、図２０のステップＳ７５において、抽出された１以上のアプリケーションプログラムそれぞれに対してシミュレートコマンド、返信コマンドおよび表示コマンドの組が１以上のウェブページに記述される。したがって、１以上のウェブページは、図２０のステップＳ７５において抽出された１以上のアプリケーションプログラムの数と同じ数の組のシミュレートコマンド、返信コマンドおよび表示コマンドとが記述される。
【０１７０】
図２２は、ブラウジング処理の流れの一例を示すフローチャートである。ブラウジング処理は、ＭＦＰ１００，１００Ａ〜１００Ｄのうちダウンロード装置として機能するＭＦＰ１００Ａが備えるＣＰＵ１１１が、ＲＯＭ１１２、ＨＤＤ１１４またはＣＤ−ＲＯＭ１１９に記憶されたブラウジングプログラムを実行することにより、ＣＰＵ１１１により実行される処理能である。
【０１７１】
図２２を参照して、ＣＰＵ１１１は、検索画面を要求する指示を受け付けたか否かを判断する（ステップＳ３１）。ユーザが操作部１１６に、検索サーバのＵＲＬを入力すると、検索画面を要求する指示を受け付ける。検索画面を要求する指示を受け付けるまで待機状態となり、検索画面を要求する指示を受け付けたならば、ネットワークＩ／Ｆ１１７を介して検索サーバ２００に検索画面の送信要求を送信し、処理をステップＳ３２に進める。
【０１７２】
ステップＳ３２においては、ネットワークＩ／Ｆ１１７が検索サーバ２００から検索画面を受信するまで待機状態となり、検索サーバ２００から検索画面を受信すると処理をステップＳ３３に進める。ステップＳ３３においては、受信された検索画面を表示部１１５に表示する。次に、ユーザが表示部１１５に表示された検索画面に従って、操作部１１６に入力する検索キーワードを受け付けたか否かを判断する。検索キーワードを受け付けたならば処理をステップＳ３５に進めるが、そうでなければ処理をステップＳ３３に戻す。
【０１７３】
ステップＳ３５においては、ネットワークＩ／Ｆ１１７を介して検索サーバ２００に検索要求を送信し、処理をステップＳ３６に進める。検索要求は、ステップＳ３４において受け付けられた検索キーワードと、ダウンロード装置ＭＦＰ１００ＡのＨＤＤ１１４に記憶されている動作環境情報を含む。検索要求を受信する検索サーバ２００においては、上述した図２０に示した検索送信処理のステップＳ７６および図２１に示したのが面情報生成・送信処理を実行し、ダウンロード装置ＭＦＰ１００Ａに第１エビデンスデータとウェブページとを送信する（ステップＳ９６)。この場合、ＭＦＰ１００Ａは第１エビデンスデータとウェブページを受信するが、ＣＰＵ１１１に形成されるブラウジング処理を実行するタスクが、受信されたウェブページを処理するのではなく、ＣＰＵ１１１に形成される検索結果画面生成処理を実行するタスクがウェブページを処理する。ブラウジング処理を実行するタスクは、検索結果画面生成処理を実行するタスクにより生成されたウェブページ（検索結果画面）を処理する。
【０１７４】
ここで、検索結果画面生成処理について説明する。図２３は、検索結果画面生成処理の流れの一例を示すフローチャートである。検索結果画面生成処理は、ダウンロード装置として機能するＭＦＰ１００Ａが備えるＣＰＵ１１１が、ＲＯＭ１１２、ＨＤＤ１１４またはＣＤ−ＲＯＭ１１９に記憶された検索結果画面生成プログラムを実行することにより、ＣＰＵ１１１により実行される処理である。検索結果画面生成プログラムは、アプリケーション共有プログラムの一部である。
【０１７５】
図２３を参照して、ＣＰＵ１１１は、検索サーバ２００から第１エビデンスデータとウェブページとを受信したか否かを判断する。第１エビデンスデータとウェブページを受信するまで待機状態となり（ステップＳ１０１でＮＯ）、第１エビデンスデータとウェブページを受信すると（ステップＳ１０１でＹＥＳ）、処理をステップＳ１０２に進める。ウェブページは、検索サーバ２００がＭＦＰ１００Ａの送信する検索要求の受信に応じて送信するウェブページであり、画面情報を含む。換言すれば、検索結果画面生成処理は、検索サーバ２００から画面情報を含むウェブページを受信することを条件に実行される処理である。
【０１７６】
ステップＳ１０２においては、登録装置と自装置の動作環境を比較する。具体的には、検索サーバから受信された第１エビデンスデータに含まれる登録装置の動作環境情報と自装置の動作環境情報とを比較する。そして、シミュレーション回数Ｔ１を決定する（ステップＳ１０３）。例えば、登録装置と自装置との間で動作環境情報が同じであれば、小さな値のシミュレーション回数Ｔ１を決定し、動作環境情報の異なる部分が増えるにつれて大きな値のシミュレーション回数Ｔ１を決定する。
【０１７７】
ステップＳ１０４においては、ウェブページに含まれるシミュレートコマンドを選択する。ステップＳ１０２において自装置の動作環境情報と比較の対象とされた登録装置の動作環境情報を含む第１エビデンスデータに対応するアプリケーションプログラムのシミュレートコマンドを選択する。そして、選択されたシミュレートコマンドを実行する（ステップＳ１０５）。そして、シミュレートコマンドの成功率を算出する。シミュレートコマンドの実行回数に対する正常終了信号の数の割合を算出する。そして、選択されたシミュレートコマンドに対するアプリケーションプログラムのアプリ識別情報と実行回数と成功率とを一時記憶する（ステップＳ１０７）。次の成功率を算出するためである。
【０１７８】
次のステップＳ１０８においては、実行回数がしきい値Ｔ１以上か否かを判断する。実行回数がしきい値Ｔ１以上ならば処理をステップＳ１１２に進め、そうでなければ処理をステップＳ１０９に進める。ステップＳ１０９においては、実行回数がしきい値Ｔ２以上か否かを判断する。しきい値Ｔ２は、しきい値Ｔ１より小さな値であり、予め定められた値である。しきい値Ｔ１に対して所定の割合となる整数としてもよい。しきい値Ｔ１は、次のステップＳ１１０において成功率を判定する際に、シミュレートコマンドを実行する最小の回数である。実行回数がしきい値Ｔ２以上ならば処理をステップＳ１１０に進めるが、そうでなければ処理をステップＳ１０５に戻す。
【０１７９】
ステップＳ１１０においては、成功率がしきい値Ｒ以上か否かを判断する。成功率がしきい値Ｒ以上ならば処理をステップＳ１１１に進めるが、そうでなければ処理をステップＳ１０５に戻す。ステップＳ１１１においては、実行回数Ｔ１を、より小さい値に変更し、処理をステップＳ１０５に戻す。例えば、実行回数Ｔ１を、成功率に対して予め割り当てられた割合の整数に変更する。成功率が高いほど、割合は小さい。例えば、成功率が１００％に対して１０％の割合を、成功率が８０％に対して３０％の割合を、成功率が５０％に対して５０％の割合を、割り当てる。
【０１８０】
ステップＳ１１２においては、シミュレート結果を返信する。ウェブページに含まれる返信コマンドに従って、シミュレート結果をネットワークＩ／Ｆ１１７を介して検索サーバ２００に送信する。シミュレート結果は、ステップＳ１０３においてシミュレートコマンドを実行したアプリケーションプログラムのアプリ識別情報と、第２エビデンスデータとを含む。第２エビデンスデータは、アプリケーションプログラムに含まれる関数をシミュレートした実行条件および実行結果（成功率）と、ダウンロード装置ＭＦＰ１００Ａの動作環境情報とを含む。
【０１８１】
次のステップＳ１１３においては、検索サーバ２００に記憶されているアプリケーションプログラムへのハイパーリンクを検索結果画面に追加し、処理をステップＳ１１４に進める。ハイパーリンクは、ステップＳ１０４で選択されたシミュレートコマンドと組になるリンク情報を含み、リンク情報は、シミュレーショトコマンドに対応し、検索サーバ２００に記憶されているアプリケーションプログラムのネットワークアドレス（ＵＲＬ）を含む。ハイパーリンクは、リンク情報で特定されるアプリケーションプログラムをダウンロード可能に表示する記述である。
【０１８２】
ステップＳ１１４においては、ステップＳ１０１において受信されたウェブページに含まれるシミュレートコマンドのうちで、ステップＳ１０４において未だ処理対象に選択されていないものが存在するか否かを判断する。処理対象に選択されていないシミュレートコマンドが存在すれば、処理をステップＳ１０２に戻すが、存在しなければ処理をステップＳ１１５に進める。  ステップＳ１１５においては、検索結果画面に含まれるパイパーリンクを成功率の高い順に並べ替える。ステップＳ１１６においては、ステップＳ１１５において、ハイパーリンクが並べ替えられた検索結果画面をブラウジング処理を実行するタスクに出力し、処理を終了する。
【０１８３】
図２２に戻って、ステップＳ３５において検索サーバ２００に検索要求を送信した後、検索結果画面が入力されるまで待機状態となり（ステップＳ３６でＮＯ）、検索結果画面が入力されると（ステップＳ３６でＹＥＳ）、処理をステップＳ３７に進める。検索結果画面は、図２３に示した検索結果画面生成処理を実行するタスクから入力される。
【０１８４】
ステップＳ３７においては、検索結果画面を表示部１１５に表示し、処理をステップＳ３８に進める。ステップＳ３８においては、リンク情報が指示された否かを判断する。具体的には、検索結果画面に含まれるハイパーリンクが指示されると、リンク情報が指示されたと判断する。検索結果画面に含まれるハイパーリンクが指示されたならば処理をステップＳ３９に進めるが、そうでなければ処理をステップＳ４０に進める。ステップＳ３９においては、ハイパーリンクに含まれるリンク情報で特定されるアプリケーションプログラムをダウンロードし、処理をステップＳ４０に進める。ハイパーリンクに含まれるリンク情報を含むダウンロード要求を、ネットワークＩ／Ｆ１１７を介して検索サーバ２００に送信する。ダウンロード要求を受信する検索サーバ２００は、リンク情報で特定されるアプリケーションプログラムを返信するので、ネットワークＩ／Ｆ１１７が受信するアプリケーションプログラムをＨＤＤ１１４に記憶する。
【０１８５】
ステップＳ４０においては、終了指示を受け付けたか否かを判断する。ユーザが操作部１１６に予め設けられた終了キーを押下すると、終了指示を受ける。終了指示を受け付けたならば処理を終了するが、そうでなければ処理をステップＳ４１に進める。
【０１８６】
ステップＳ４１においては、次ページのウェブページに表示を切り換えるページ送り指示を受け付けたか否かを判断する。ユーザが操作部１１６に予め設けられたページ送りキーを押下すると、ページ送り指示を受ける。ページ送り指示を受け付けたならば処理をステップＳ３６に戻し、そうでなければ処理をステップＳ３８に戻す。
【０１８７】
以上説明したように第２の実施の形態におけるアプリケーション共有システム１において、ダウンロード装置ＭＦＰ１００Ａにおいて、登録装置ＭＦＰ１００の第１動作環境情報と、自装置の第２動作環境情報とを比較し、シミュレート実行回数を決定し、決定された回数だけアプリケーションプログラムをシミュレートし、アプリケーションプログラムをダウンロードするためのリンク情報がアプリケーションプログラムをシミュレートした結果が正常である割合の多い順に並べた検索結果画面を生成する。このため、ダウンロード装置ＭＦＰ１００Ａにおいて、インストール可能なアプリケーションプログラムを優先して表示する検索結果画面を表示させることができる。また、検索サーバ２００において、アプリケーションプログラムが登録装置ＭＦＰ１００の第１動作環境情報、ダウンロード装置ＭＦＰ１００Ａの第２動作環境、第１のエビデンスデータおよび第２のエビデンスデータと組になって記憶されるので、アプリケーションプログラムを新たにインストールする画像形成装置、例えば、ダウンロード装置として機能するＭＦＰ１００Ｂにおいて、そのＭＦＰ１００Ｂの動作環境情報からアプリケーションプログラムをインストール可能か否かを判断するための情報を検索サーバ２００に記憶することができる。
【０１８８】
また、回数決定部９５により決定されたシミュレート実行回数を、スタブ実行部８７が決定されたシミュレート実行回数以下のシミュレートを実行しているときに、それまでの実行結果が成功する割合に応じて、変更する変更部９７を、さらに備える。このため、動作環境が異なる場合であっても、シミュレートした実行結果が成功する場合には、シミュレート実行回数を少なくすることができるので、ダウンロード装置ＭＦＰ１００Ａの負荷を小さくすることができる。
【０１８９】
なお、上述した実施の形態においてはアプリケーション共有システム１について説明したが、図９〜図１２、図１４〜図１５、図２０〜図２３に示した処理をコンピュータに実行させるためのアプリケーション共有方法またはアプリケーション共有プログラムとして発明を捉えることができるのは言うまでもない。
【０１９０】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１９１】
１  アプリケーション共有システム、３  ネットワーク、５  インターネット、１１  操作パネル、２１  ＡＤＦ、２２  画像読取部、２３  画像処理部、２４  画像形成部、２５  給紙部、２６  後処理部、２７  ファクシミリ部、２８  通信制御部、５１  アプリケーション受付部、５３  関数実行部、５５  エビデンスデータ生成部、５７，５７Ａ  登録情報送信部、５９  エビデンスデータ生成部、６１  追加登録情報送信部、６３  登録識別情報受信部、８１  ブラウジング部、８３  画面情報受信部、８５  シミュレート部、８７  スタブ実行部、８９  画面生成部、９１  シミュレート結果送信部、９３  ダウンロード部、９５  回数決定部、９７  変更部、１００，１００Ａ〜１００Ｄ  ＭＦＰ、１０１  情報処理部、１１１  ＣＰＵ、１１２  ＲＯＭ、１１３  ＲＡＭ、１１４  ＨＤＤ、１１５  表示部、１１６  操作部、１１７  ネットワークＩ／Ｆ、１１８  外部記憶装置、１１９  ＣＤ−ＲＯＭ、２００  検索サーバ、２０１  ＣＰＵ、２０２  ＲＯＭ、２０３  ＲＡＭ、２０４  ネットワークＩ／Ｆ、２０５  ＨＤＤ、２０６  表示部、２０７  操作部、２０８  外部記憶装置、２０９  ＣＤ−ＲＯＭ、２１１  登録情報受信部、２１３  アプリケーション登録部、２１５  登録識別情報送信部、２１９  追加登録情報受信部、２１９Ａ  シミュレート結果受信部、２２１，２２１Ａ  エビデンスデータ追加部、２２３  装置情報取得部、２２５  登録テーブル更新部、２３１  アプリ要求受信部、２３３  アプリ送信部、２４１  検索要求受信部、２４３  抽出部、２４５  画面情報送信部、２４７  シミュレートコマンド生成部、２５１  登録情報、２５３  登録テーブル。
【図１】
2012098867.tif 000003
【図２】
2012098867.tif 000004
【図３】
2012098867.tif 000005
【図４】
2012098867.tif 000006
【図５】
2012098867.tif 000007
【図６】
2012098867.tif 000008
【図７】
2012098867.tif 000009
【図８】
2012098867.tif 000010
【図９】
2012098867.tif 000011
【図１０】
2012098867.tif 000012
【図１１】
2012098867.tif 000013
【図１２】
2012098867.tif 000014
【図１３】
2012098867.tif 000015
【図１４】
2012098867.tif 000016
【図１５】
2012098867.tif 000017
【図１６】
2012098867.tif 000018
【図１７】
2012098867.tif 000019
【図１８】
2012098867.tif 000020
【図１９】
2012098867.tif 000021
【図２０】
2012098867.tif 000022
【図２１】
2012098867.tif 000023
【図２２】
2012098867.tif 000024
【図２３】
2012098867.tif 000025