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