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