以下、本発明の実施の形態について図面を参照して説明する。以下の説明では同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがってそれらについての詳細な説明は繰り返さない。
<第1の実施の形態>
図1は、本発明の実施の形態におけるアプリケーション共有システムの全体概要を示す図である。図1を参照して、アプリケーション共有システム1は、それぞれがネットワーク3に接続された複合機(Multi Function Peripheral)(以下、「MFP」という)100,100A〜100Dと、インターネット5に接続された検索サーバ200と、を含む。
MFP100,100A〜100Dは、画像形成装置の一例であり、スキャナ機能、プリンタ機能、コピー機能、ファクシミリ機能等の複数の機能を備える。また、MFP100,100A〜100Dそれぞれは、CGI(Common Gateway Interface)を備えており、インターネットウェブサーバ(以下「IWS」)として機能する。さらに、CGIを起動するための関数としてのAPI(Application Program Interface)が公開されており、ユーザは、そのAPIを用いてアプリケーションプログラムを開発し、MFP100,100A〜100Dにインストールすることができる。さらに、MFP100,100A〜100Dには、ブラウジングプログラムがインストールされており、ブラウジングプログラムを実行するタスクが、IWSとして機能するMFP100,100A〜100Dのユーザインターフェースとして機能する。
ネットワーク3は、ローカルエリアネットワーク(LAN)であり、有線および無線の別を問わない。MFP100,100A〜100Dそれぞれは、ネットワーク3を介して互いに通信可能であり、さらに、インターネット5を介して接続された検索サーバ200と通信可能である。なお、ネットワーク3は、LANに限らず、インターネット、ワイドエリアネットワーク(WAN)または公衆交換電話網等であってもよい。
検索サーバ200は、一般的なコンピュータである。本実施の形態においては、検索サーバ200は、MFP100,100A〜100Dのメーカが管理するコンピュータとしている。検索サーバ200は、MFP100,100A〜100Dそれぞれにおいてインストールされたアプリケーションプログラムがアップロードされ、アップロードされたアプリケーションプログラムを検索可能な状態で記憶し、要求に応じてダウンロードする。なお、検索サーバ200は、MFP100,100A〜100Dそれぞれにおいてインストールされたアプリケーションプログラムの他に、メーカが開発し、供給するアプリケーションプログラムを検索可能に記憶するようにしてもよい。なお、本実施の形態においては、検索サーバ200を、MFP100,100A〜100Dのメーカが管理するコンピュータとしたが、メーカとは関係のない者が管理するコンピュータであってもよい。
MFP100,100A〜100Dは、それぞれが備える機能は同じであってもよく異なっていてもよいが、基本的には、紙などの用紙に画像を形成するための画像形成機能を少なくとも有し、付加的に、原稿を読み取って画像データを出力する画像読取機能、画像データを処理する画像処理機能、画像形成後の用紙にパンチ穴加工、ソート処理等する後処理機能、ファクシミリ送受信機能のいずれかを含んでもよい。
MFP100,100A〜100D各々が有する機能は同じではない場合があるが、ここではMFP100が、他のMFP100A〜100Dのいずれかが有する機能を有している場合を例に説明する。
図2は、MFPの外観を示す斜視図である。図2を参照して、MFP100は、自動原稿搬送装置(ADF)21と、画像読取部22と、画像処理部23(図3参照)と、画像形成部24と、給紙部25と、後処理部26とを含む。また、MFP100は、その上面にユーザインターフェースとして用いられる操作パネル11を備えている。
図3は、MFPのハードウエア構成の一例を示すブロック図である。図3を参照して、MFP100は、情報処理部101と、ファクシミリ部27と、通信制御部28と、ADF21と、画像読取部22と、画像処理部23と、画像形成部24と、給紙部25と、後処理部26と、を含む。情報処理部101は、中央演算装置(CPU)111と、CPU111が実行するプログラム等を記憶するROM(Read Only Memory)112と、CPU111の作業領域として使用されるRAM(Random Access Memory)113と、データを不揮発的に記憶するためのハードディスクドライブ(HDD)114と、表示部115と、操作部116と、ネットワークインターフェース(I/F)117と、外部記憶装置118とを含む。CPU111は、ROM112、RAM113、HDD114、表示部115、操作部116、ネットワークI/F117および外部記憶装置118とそれぞれ接続され、情報処理部101の全体を制御する。また、CPU111は、ファクシミリ部27、通信制御部28、ADF21、画像読取部22、画像処理部23、画像形成部24、給紙部25および後処理部26と接続され、MFP1の全体を制御する。
ADF21は、原稿台に搭載された複数枚の原稿をさばいて1枚ずつ順に、画像読取部22に搬送する。ADF21は、原稿の片面を画像読取部22に読み取らせる場合、原稿を画像読取部22に搬送して表面を読み取らせる。さらに、ADF21は、原稿の両面を画像読取部22に読み取らせる場合、原稿を画像読取部22に搬送して表面を読み取らせた後、原稿を裏返して画像読取部22に搬送して裏面を読み取らせる。画像読取部22は、写真、文字、絵等の画像情報を原稿から光学的に読み取って画像データを取得し、画像処理部23に出力する。
画像処理部23は、CPU111により制御され、CPU111からの指示に基づき画像データを画像処理する。画像データは、画像読取部22が原稿を読み取って出力する画像データ、ネットワークI/F117により他のコンピュータから受信されるプリントジョブに含まれる画像データ、ネットワークI/F117により他のMFP100A〜100Dのいずれかから受信される画像データ、HDD114に記憶されている画像データを含む。画像処理は、例えば、画像を拡大する拡大処理、画像を縮小する縮小処理、複数の画像を合成して1つの画像を生成する合成処理、画像を回転させて方向を変換する回転処理等である。画像処理部23は、処理後の画像データを画像形成部24に出力する。
給紙部25は、複数の給紙トレイを有し、指定された給紙トレイに格納した用紙を1枚ずつ画像形成部24に供給する。複数の給紙トレイそれぞれは、複数のサイズの用紙のうちから選ばれたサイズの用紙を、複数の方向のうちから選ばれた方向に収納する。ここでは、給紙部25が4つの第1〜第4給紙トレイを有し、第1の給紙トレイがA4サイズの用紙を縦方向に収納し、第2の給紙トレイがA4サイズの用紙を横方向に収納し、第3の給紙トレイがA3サイズの用紙を縦方向に収納し、第4の給紙トレイがB5サイズの用紙を横方向に収納する。また、給紙部25は、両面印刷が指定されると、用紙の両面に画像を形成するために、画像形成部24に搬送した用紙を表裏反転させて、再度画像形成部24に搬送する。
画像形成部24は、画像処理部23から入力される画像データに基づき、給紙部25から搬送される用紙に画像を形成する。
後処理部26は、画像が形成された用紙を排紙する。後処理部26は、複数の排紙トレイを有し、ソート部、パンチ穴加工部、ステープル加工部を備えている。ソート部は、画像が形成された複数の用紙を複数の排紙トレイにソートして出力する。パンチ穴加工部は、用紙にパンチ穴を開ける。ステープル加工部は、画像が形成された複数の用紙をまとめるためにステープル加工する。
表示部115は、液晶表示装置(LCD)、有機ELD(Electro Luminescence Display)等の表示装置であり、ユーザに対する指示メニューや取得した画像データに関する情報等を表示する。操作部116は、複数のキーを備え、キーに対応するユーザの操作による各種の指示、文字、数字などのデータの入力を受け付ける。操作部116は、表示部115上に設けられたタッチパネルをさらに含む。表示部115と操作部116とで、操作パネル11を構成する。
ネットワークI/F117は、TCP(Transmission Control Protocol)またはUDP(User Datagram Protocol)等の通信プロトコルで通信するためのインターフェースであり、ネットワーク3およびインターネット5を介して検索サーバ200と通信する。また、ネットワーク3に接続された他のMFP100A〜100Dと通信する。
外部記憶装置118は、CD−ROM(Compact Disk Read Only Memory)119が装着される。CPU111は、外部記憶装置118を介してCD−ROM119にアクセス可能であり、CD−ROM119に記憶されたプログラムをRAM113にロードして実行可能である。なお、CPU111が実行するプログラムは、CD−ROM119に記憶されたプログラムに限られず、他の記憶媒体に記憶されたプログラムでもよく、HDD116に記憶されたプログラムであってもよく、さらに、ネットワークI/F117を介してネットワーク3に接続された他のコンピュータによりHDD114に書込みされたプログラムであってもよい。
なお、プログラムを記憶する記憶媒体としては、CD−ROM119に限られず、光ディスク(MO(Magnetic Optical Disc)/MD(Mini Disc)/DVD(Digital Versatile Disc))、ICカード、光カード、マスクROM、EPROM(Erasable Programmable ROM)、EEPROM(Electrically Erasable and Programmable ROM)などの半導体メモリでもよい。
ファクシミリ部27は、PSTN13に接続され、PSTN13にファクシミリデータを送信する、またはPSTN13からファクシミリデータを受信する。ファクシミリ部27は、受信したファクシミリデータを、画像形成部24がプリント可能なプリントデータに変換して、画像形成部24に出力する。これにより、画像形成部24は、ファクシミリ部27により受信されたファクシミリデータを用紙にプリントする。また、ファクシミリ部27は、HDD114に記憶されたデータをファクシミリデータに変換して、PSTN13に接続されたファクシミリ装置に送信する。
HDD114は、MFP100の環境情報を記憶する。環境情報は、MFP100に接続される周辺機器の接続状態を示す接続情報、MFP100が有する機能ごとに所定の設定項目の設定値を含む設定情報と、を含む。接続状態は、ADF21、画像読取部22、画像処理部23、後処理部26の接続有無を示す。MFP100が有する機能は、両面読み取り機能、カラー印字機能、給紙機能、両面印字機能、画像処理機能、後処理機能を含む。両面読取機能における設定項目と設定値は、原稿の両面を読み取り可能であるか否かが設定される。また、カラー印字機能における設定項目と設定値は、カラー印字が可能であるか否かを設定される。給紙機能における設定項目と設定値は、A4縦、A4横、A3縦およびB5横の用紙を選択可能か否かが設定される。プリント機能における設定項目と設定値は、片面または両面に画像を形成可能であるか否かが設定される。画像処理機能における設定項目と設定値は、画像のサイズを変更する変倍処理および複数ページの画像を合成して1つの用紙に画像形成するNin1処理が可能であるか否かが設定される。後処理機能における設定項目と設定値は、ソート処理、ステープル加工処理およびパンチ穴加工処理が可能であるか否かが設定される。通信機能における設定項目と設定値は、SNMP(Simple Network Management Protocol)のバージョン情報が設定される。
MFP100,100A〜100D各々は、画像形成部24および給紙部25を少なくとも備えており、付加的に、ADF21、画像読取部22、画像処理部23、後処理部26およびファクシミリ部27のいずれかを備えている。したがって、MFP100,100A〜100DのうちADF21、画像読取部22、画像処理部23、画像形成部24、給紙部25、後処理部26およびファクシミリ部27の全てを備えていないものが存在してもよく、ADF21、画像読取部22、画像処理部23、画像形成部24、給紙部25、後処理部26およびファクシミリ部27のいずれを備えているかにより、MFP100,100A〜100D各々が備える機能が異なる場合がある。
さらに、画像処理部23は、拡大処理、縮小処理、合成処理、および回転処理を含む例を説明したが、画像処理部23は、拡大処理、縮小処理、合成処理、および回転処理の少なくとも1つを実行可能であればよい。したがって、MFP100,100A〜100Dのうちで画像処理部23を備えているものの間で、拡大処理、縮小処理、合成処理、および回転処理のいずれを実行可能かによって、機能が異なる場合がある。
また、後処理部26にあっては、上述したようにソート機能、ステープル機能、パンチ機能を備えている例を説明したが、これらの機能のうち少なくとも1つを備えていればよい。このため、MFP100,100A〜100Dのうちで後処理部26を備えるもののうち、ソート機能、ステープル機能、パンチ機能の全てを備えていないものが存在してもよい。したがって、MFP100,100A〜100Dのうちで後処理部26を備えるものの間で、ソート機能、ステープル機能、パンチ機能のいずれを備えているかによって、機能が異なる場合がある。
図4は、検索サーバのハードウエア構成の一例を示すブロック図である。図4を参照して、検索サーバ200は、検索サーバ200の全体を制御するためのCPU201と、CPU201が実行するプログラム等を記憶するためのROM202と、CPU201の作業領域として用いられるRAM203と、検索サーバ200をネットワークに接続するためのネットワークI/F204と、大容量記憶装置としてのHDD205と、表示部206と、ユーザの操作の入力を受け付ける操作部207と、CD−ROM209が装着される外部記憶装置208と、を含む。
外部記憶装置208には、CD−ROM209が装着される。CD−ROM209には、CPU201が実行可能なアプリケーション検索プログラムが記憶されており、CPU201は、外部記憶装置208を制御して、CD−ROM209からアプリケーション検索プログラムを読出し、読み出したアプリケーション検索プログラムをRAM203にロードして実行する。
なお、アプリケーション検索プログラムを記憶する記録媒体としては、CD−ROM209に限られず、フレキシブルディスク、カセットテープ、光ディスク(MO(Magnetic Optical Disc)/MD(Mini Disc)/DVD(Digital Versatile Disc))、ICカード、光カード、マスクROM、EPROM(Erasable Programmable ROM)、EEPROM(Electrically EPROM)などの半導体メモリでもよい。さらに、CPU201がインターネット5に接続された他のコンピュータからアプリケーション検索プログラムをダウンロードしてHDD205に記憶する、または、他のコンピュータがアプリケーション検索プログラムをHDD205に書込みするようにして、HDD205に記憶されたアプリケーション検索プログラムをRAM203にロードしてCPU201で実行するようにしてもよい。ここでいうプログラムは、CPU201により直接実行可能なプログラムだけでなく、ソースプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
本実施の形態におけるアプリケーション共有システム1においては、MFP100,100A〜100Dのいずれかで開発されたアプリケーションプログラムが、検索サーバ200に登録され、MFP100,100A〜100Dのいずれかにおいて、検索サーバ200に登録されたアプリケーションプログラムをダウンロードしてインストールする。したがって、MFP100,100A〜100Dそれぞれは、開発されたアプリケーションプログラムがインストールされると検索サーバ200に登録する登録装置として機能するとともに、検索サーバ200からアプリケーションプログラムをダウンロードするダウンロード装置として機能する。登録装置およびダウンロード装置として機能するMFP100,100A〜100Dは同じなので、ここではMFP100を例に説明する。
図5は、登録装置として機能するMFPが備えるCPUが有する機能の概要の一例を示すブロック図である。図5に示す機能は、MFP100が備えるCPU111が、ROM112、HDD114またはCD−ROM119に記憶されたアプリケーション共有プログラムを実行することにより、CPU111に形成される。
図5を参照して、CPU111は、アプリケーションプログラムを受け付けるアプリケーション受付部51と、アプリケーションプログラムを実行する関数実行部53と、エビデンスデータを生成するエビデンスデータ生成部55と、アプリケーションプログラムとエビデンスデータとを含むアプリデータを検索サーバに送信する登録情報送信部57と、を含む。
関数実行部53は、ADF21、画像読取部22、画像処理部23、画像形成部24、給紙部25および後処理部26を動作させるために予め準備された複数の関数のうちから選択された関数を実行し、ADF21、画像読取部22、画像処理部23、画像形成部24、給紙部25および後処理部26を動作させる。複数の関数は、MFP100のメーカによってAPIとして予め公開されている。ユーザは、操作部116を用いて、MFP100を動作させるための処理手順をAPIの関数で記述することにより、アプリケーションプログラムを作成することができる。
アプリケーション受付部51は、ユーザが操作部116に入力するアプリケーションプログラムを受け付ける。また、ユーザが、パーソナルコンピュータを用いて、APIの関数で記述されたアプリケーションプログラムを作成する場合は、パーソナルコンピュータで作成されたアプリケーションプログラムを、ネットワーク3を介して、MFP100に送信してもよい。この場合は、アプリケーション受付部51は、ネットワークI/F117がパーソナルコンピュータから受信するアプリケーションプログラムを受け付ける。アプリケーション受付部51は、受け付けられたアプリケーションプログラムを、関数実行部53および登録情報送信部57に出力する。
関数実行部53は、アプリケーション受付部51から入力されるアプリケーションプログラムに記述された順に関数を実行する。ADF21、画像読取部22、画像処理部23、画像形成部24、給紙部25および後処理部26を動作させるために、動作を特定するための条件、例えば、コピー部数等が必要な場合がある。この場合には、アプリケーションプログラムは、ユーザから条件を受け付けるためのユーザインターフェースとして条件設定画面を表示部115に表示する関数の記述、ユーザが入力する条件を受け付ける関数の記述を含む。関数実行部53は、アプリケーションプログラムに記述された順に関数を実行することによって、表示部115に条件設定画面を表示し、ユーザが操作部116に入力する条件を受け付ける。関数実行部53は、操作部116から条件を受け付ける場合は、受け付けられた条件に従って、アプリケーションプログラムに記述された順に関数を実行し、ADF21、画像読取部22、画像処理部23、画像形成部24、給紙部25および後処理部26のいずれかを動作させる。
関数実行部53は、操作部116から条件を受け付ける場合は、受け付けられた条件をエビデンスデータ生成部55に出力する。エビデンスデータ生成部55は、条件が入力される場合は、条件を含むエビデンスデータを生成し、生成されたエビデンスデータを登録情報送信部57に出力する。
登録情報送信部57は、アプリケーション受付部51から入力されるアプリケーションプログラムと、エビデンスデータ生成部55からエビデンスデータが入力される場合は、エビデンスデータとを、検索サーバ200に、ネットワークI/F117を介して送信する。
ここで、検索サーバ200について説明する。図6は、検索サーバが備えるCPUの機能の概要の一例を示すブロック図である。図6に示す機能は、検索サーバ200が備えるCPU201が、ROM202、HDD205またはCD−ROM209に記憶されたアプリケーション共有プログラムを実行することにより、CPU201に形成される。
図6を参照して、CPU201は、アプリケーション登録部211と、検索要求受信部213と、抽出部215と、画面情報送信部217と、アプリ要求受信部231と、アプリ送信部233と、を含む。
アプリケーション登録部211は、ネットワークI/F204がMFP100,100A〜100Dのいずれかからアプリケーションプログラムを受信すると、受信されたアプリケーションプログラムをHDD205に記憶する。アプリケーション登録部211は、アプリケーションプログラムととともにエビデンスデータが受信される場合には、そのエビデンスデータをアプリケーションプログラムと関連付けて記憶する。また、アプリケーション登録部211は、アプリケーションプログラムをHDD205に記憶する際に、アプリケーションプログラムに検索に用いるためのキーワードを付与する。キーワードは、検索サーバ200の管理者が付与するようにしてもよいし、アプリケーションプログラムを送信してきた装置、例えばMFP100において、アプリケーションプログラムをインストールする際に、MFP100のユーザである開発者が入力し、アプリケーションプログラムとともに検索サーバ200に送信するようにしてもよい。アプリケーション登録部211によって、アプリケーションプログラムがHDD205に記憶されると、HDD205にアプリケーションプログラムとキーワードとを少なくとも含む登録情報251が記憶される。
検索要求受信部213は、ネットワークI/F204がMFP100,100A〜100Dのいずれかから検索要求を受信すると、MFP100,100A〜100Dのうち検索要求を送信してきたものに検索画面をネットワークI/F204を介して送信する。検索画面は、HDD205に記憶された登録情報251を検索するための検索キーワードを入力する領域を含む。MFP100,100A〜100Dのうち検索画面を受信する装置、例えば、MFP100は、検索画面を表示し、ユーザが検索画面に従って検索キーワードを入力すれば、検索キーワードを検索サーバ200に送信する。検索要求受信部213は、ネットワークI/F204が検索画面を送信したMFP100から検索キーワードを受信すると、受信された検索キーワードを抽出部215に出力する。
抽出部215は、検索要求受信部213から検索キーワードが入力されることに応じて、検索キーワードを用いてHDD205に記憶されている登録情報251を検索する。具体的には、HDD205に記憶されている登録情報251のうち、検索要求受信部213から入力される検索キーワードと同じキーワード、またはそれに含まれる複数のキーワードの少なくとも1つと同じキーワードで、関連付けられたアプリケーションプログラムを抽出する。HDD205に、検索キーワードと同じキーワード、またはそれに含まれる複数のキーワードの少なくとも1つと同じキーワードで、関連付けられたアプリケーションプログラムが複数記憶されている場合、それら複数のアプリケーションプログラムを抽出する。抽出部215は、抽出された1以上のアプリケーションプログラムを、画面情報送信部217に出力する。抽出部215は、抽出されたアプリケーションプログラムがエビデンスデータと関連付けられている場合には、アプリケーションプログラムとともに、それに関連付けられているエビデンスデータを、画面情報送信部217に出力する。
画面情報送信部217は、抽出部215から入力される1以上のアプリケーションプログラムに基づいて画面情報を生成し、画面情報をMFP100,100A〜100Dのうち検索キーワードを送信してきたものにネットワークI/F204を介して送信する。画面情報送信部217は、アプリケーションプログラムの実行をシミュレートするシミュレートコマンドを生成し、生成されたシミュレートコマンドとアプリケーションプログラムのネットワークアドレスとを含む画面情報を生成する。画面情報送信部217は、抽出部215からアプリケーションプログラムとともにエビデンスデータが入力される場合、アプリケーションプログラムをエビデンスデータに含まれる条件での実行をシミュレートするシミュレートコマンドを生成する。画面情報送信部217は、抽出部215から複数のアプリケーションプログラムが入力される場合、複数のアプリケーションプログラムごとに、画面情報を生成する。画面情報送信部217は、抽出部215から入力されるアプリケーションプログラムの数の画面情報を生成する。画面情報は、シミュレートコマンドと表示コマンドとを含む。
画面情報送信部217は、関数変換部219を含む。関数変換部219は、アプリケーションプログラムに記述されている関数の名称を、関数をシミュレートするために予め定められたスタブの名称に変更する。ここでは、スタブの名称は、関数の名称の後に「stb」を追加した名称としている。例えば、APIの名称が「copy.py」とすると、スタブの名称は「copystb.py」である。
シミュレートコマンドは、関数変換部219がアプリケーションプログラムに記述されている関数の名称をスタブの名称に変更した後のシミュレーション用のアプリケーションプログラムを含み、シミュレーション用のアプリケーションプログラムを実行させる記述である。シミュレートコマンドは、抽出部215からアプリケーションプログラムとともにエビデンスデータが入力される場合、シミュレーション用のアプリケーションプログラムをエビデンスデータに含まれる条件で実行させる記述である。例えば、エビデンスデータに含まれる条件をアプリケーションプログラムに引数として渡す記述である。表示コマンドは、シミュレートコマンドの実行結果が正常であることを条件にアプリケーションプログラムをダウンロード可能に表示させるコマンドであり、HDD205に記憶された登録情報251に含まれるアプリケーションプログラムへのリンク情報を含み、リンク情報は、そのアプリケーションプログラムのネットワークアドレスを含む。ネットワークアドレスは、例えば、URL(Uniform Resource Locator)である。
ここでは、画面情報送信部217は、マークアップ言語で記述され、画面情報を記述したウェブページを生成し、生成されたウェブページをMFP100,100A〜100Dのうち検索キーワードを送信してきたものに送信する。ウェブページは、アプリケーションプログラムの実行をシミュレートするシミュレートコマンドの記述と、該アプリケーションプログラムの実行をシミュレートした結果が正常であることを条件にアプリケーションプログラムをダウンロード可能に表示する表示コマンドの記述とを含む。シミュレートコマンドの記述と、表示コマンドの記述とは、抽出部215から入力される1以上のアプリケーションプログラムデータの数と同じ数だけ含まれる。
画面情報送信部217は、抽出部215から入力される1以上のアプリケーションプログラムの数が所定の数を超える場合、シミュレートコマンドの記述と、表示コマンドの記述との組を所定数含む複数のウェブページを生成し、複数のウェブページを生成された順に1ページのウェブページを選択する。画面情報送信部217は、選択されたウェブページをMFP100,100A〜100Dのうち検索キーワードを送信してきたものにネットワークI/F204を介して送信する。画面情報送信部217は、複数のウェブページを送信する場合、後述するMFP100から次ページの送信要求をネットワークI/F204が受信するまで待って、次ページのウェブページを送信する。
後述するように、複数ページのウェブページを生成してから送信するよりも速くウェブページを送信することができる。また、MFP100においては、受信されたウェブページに記述されたシミュレートコマンドおよび表示コマンドを実行するが、所定数の組のシミュレートコマンドおよび表示コマンドを実行すれば検索結果画面を表示することができるので、検索結果画面をできるだけ速く表示することができる。さらに、シミュレートコマンドおよび表示コマンドを実行している最中に、次のウェブページを受信することができる。
アプリ要求受信部231は、ネットワークI/F204がMFP100,100A〜100Dのいずれかからダウンロード要求を受信すると、ダウンロード要求に含まれるネットワークアドレスを、アプリ送信部233に出力する。アプリ送信部233は、アプリ要求受信部231から入力されるネットワークアドレスで特定されるアプリケーションプログラムを、HDD205に記憶されている登録情報251のうちから読み出し、読み出したアプリケーションプログラムを、MFP100,100A〜100Dのうちダウンロード要求を送信してきたものにネットワークI/F204を介して送信する。
図7は、アプリケーションプログラムの一例を示す図である。図7を参照して、アプリケーションプログラム301は、アプリケーションプログラムの名称CopyApp_A.pyであり、言語はPythonで記述される。アプリケーションプログラム301は、関数名kmfunc.copyの関数303の記述を含む。関数は、importコマンドによってアプリケーションプログラムに組み入れられている。関数303は、引数「num」および「staple」が与えられる。引数「num」は、コピー枚数を示し、引数「staple」は、ステープル位置を示す。関数303は、引数「num」の部数コピーし、引数「staple」で指定される位置にステープルする動作をさせる関数である。
図8は、画面情報を含むウェブページのソースコードの一例を示す図である。図8を参照して、ウェブページ311は、HTML(HyperText Markup Language)のマークアップ言語で記述され、シミュレートコマンドの記述313と、表示コマンドの記述315とを含む。シミュレートコマンドの記述313は、関数名kmfunc.copyの関数303に対応し、名称kmfunc.copysubのスタブを含み、引数「num」として「2」と、引数「staple」として「upper_right」とが与えられる記述を含む。これらの引数は、エビデンスに基づいて関数に与えられる。
表示コマンドの記述315は、シミュレートコマンドの実行結果が成功「ok」の場合に、アプリケーションプログラムCopyApp_Aをダウンロード可能に表示する記述を含む。
図9は、ダウンロード装置として機能するMFPが備えるCPUが有する機能の概要の一例を示すブロック図である。図9に示す機能は、MFP100が備えるCPU111が、ROM112、HDD114またはCD−ROM119に記憶されたアプリケーション共有プログラムおよびブラウジングプログラムを実行することにより、CPU111に形成される。
図9を参照して、CPU111は、ブラウジング部81と、画面情報受信部83と、シミュレート部85と、スタブ実行部87と、画面生成部89と、ダウンロード部91と、を含む。ブラウジング部81およびダウンロード部91は、CPU111が、ROM112、HDD114またはCD−ROM119に記憶されたブラウジングプログラムを実行することにより、CPU111に形成される機能である。画面情報受信部83と、シミュレート部85と、スタブ実行部87と、画面生成部89とは、CPU111がアプリケーション共有プログラムを実行することによりCPU111に形成される機能である。
ここでは、ブラウジング部81が起動すると、ブラウジング部81が検索サーバ200に、それに登録されているアプリケーションプログラムを検索するための検索画面の送信を要求する場合を説明する。ブラウジング部81は、ネットワークI/F117が検索サーバ200から検索画面を受信すると、受信された検索画面を表示部115に表示する。ユーザが表示部115に表示された検索画面に従って、検索キーワードを入力することができる。検索キーワードは、ユーザがMFP100にインストールすることを望むアプリケーションプログラムを抽出するための条件である。例えば、検索画面に、予め複数の検索キーワードを準備しておき、複数の検索キーワードのうちから1つをユーザが選択するようにしてもよいし、ユーザが任意に検索キーワードを入力するようにしてもよい。任意の検索キーワードを入力する場合には、例えば、コピー機能に関するアプリケーションプログラムをインストールすることを望むのであれば、検索キーワードにコピー機能に関連するワード、例えば「コピー」を設定すればよい。
ブラウジング部81は、ユーザが操作部116に入力する検索キーワードを検索サーバ200に、ネットワークI/F117を介して送信する。
画面情報受信部83は、ネットワークI/F117を制御して、検索サーバ200が検索キーワードの受信に応じて送信する画面情報を受信し、受信された画面情報をシミュレート部85および画面生成部89に出力する。画面情報は、検索サーバ200によって抽出された1以上のアプリケーションプログラムそれぞれについて、該アプリケーションプログラムの実行をシミュレートするシミュレートコマンドと、そのアプリケーションプログラムのネットワークアドレスと、を含む。ここでは、画面情報は、シミュレートコマンドおよび表示コマンドとしてウェブページに記述され、画面情報が記述されたウェブページを受信する場合について説明する。
シミュレート部85は、画面情報受信部83から入力されるウェブページに記述されたシミュレートコマンドに従って、シミュレートコマンドに含まれるシミュレート用のアプリケーションプログラムに含まれるスタブをスタブ実行部87に実行させる。
スタブ実行部87は、関数実行部53が実行する複数の関数にそれぞれ対応する複数のスタブを実行し、実行結果を画面生成部89に出力する。上述したように関数実行部53は、複数の関数のいずれかを実行するとADF21、画像読取部22、画像処理部23、画像形成部24、給紙部25および後処理部26を動作させるが、スタブ実行部87は、複数のスタブのいずれかを実行することにより、ADF21、画像読取部22、画像処理部23、画像形成部24、給紙部25および後処理部26を動作させることなく、関数実行部53がスタブ実行部87の実行するスタブに対応する関数を実行したのと同じ結果を、画面生成部89に出力する。
具体的には、スタブ実行部87は、スタブを実行することにより、ADF21、画像読取部22、画像処理部23、画像形成部24、給紙部25および後処理部26の動作をシミュレートし、そのシミュレートした結果を画面生成部89に出力する。例えば、後処理部26がステープル機能を備えていない場合に、スタブがステープルする関数に対応するならば、後処理部26によってステープルできないことを示すエラーコードを画面生成部89に出力する。エラーコードは、関数およびスタブの返り値として予め定められており、またはアプリケーションプログラムの実行結果としてアプリケーションプログラムにより予め定められている。スタブ実行部87は、シミュレート用のアプリケーションプログラムを実行した結果がエラーの場合にはエラーコードを画面生成部89に出力するが、シミュレート用のアプリケーションプログラムを実行した結果が正常の場合には正常終了信号を画面生成部89に出力する。
画面生成部89は、画面情報受信部83から入力されるウェブページに含まれる表示コマンドを実行し、スタブ実行部87から入力される実行結果に基づいて検索結果画面を生成し、検索結果画面をブラウジング部81に出力する。検索結果画面は、マークアップ言語で記述される。具体的には、画面生成部89は、スタブ実行部87から正常終了信号が入力される場合は、スタブ実行部87により実行されたシミュレーション用のアプリケーションプログラムに対応するアプリケーションプログラムをダウンロード可能に表示するハイパーリンクの記述を検索結果画面に追加する。アプリケーションプログラムをダウンロード可能に表示する記述は、表示コマンドに含まれるアプリケーションプログラムが記憶されているネットワークアドレスを含むリンク情報と関連付けられる。画面生成部89は、スタブ実行部87からエラーコードが入力される場合は、スタブ実行部87により実行されたシミュレーション用のアプリケーションプログラムに対応するアプリケーションプログラムをダウンロード可能に表示するハイパーリンクの記述を検索結果画面に追加しない。
画面情報受信部83から入力されるウェブページにシミュレートコマンドと表示コマンドとの組が複数記述されている場合、シミュレート部85および画面生成部89は、複数の組ごとに、シミュレートコマンドおよび表示コマンドを実行する。このため、スタブ実行部87は、シミュレート部85がシミュレートコマンドを実行するごとに、エラーコードまたは制御終了信号のいずれかを出力し、画面生成部89は、スタブ実行部87からエラーコードまたは正常終了信号のいずれかが入力されるごとに、アプリケーションプログラムをダウンロード可能に表示するか否かを判断し、正常終了信号が入力される場合に、アプリケーションプログラムをダウンロード可能に表示する記述を検索結果画面に追加する。
このため、検索結果画面は、検索サーバ200において、抽出された複数のアプリケーションプログラムのうち、MFP100で実行してもエラーとならないアプリケーションプログラムのみをダウンロードする記述を含む。検索結果画面は、MFP100で実行するとエラーとなるアプリケーションプログラムをダウンロードする記述を含まないので、不要なアプリケーションプログラムがダウンロードされないようにすることができる。
ブラウジング部81は、画面生成部89から検索結果画面が入力されると、検索結果画面を表示部115に表示する。検索結果画面は、アプリケーションプログラムをダウンロード可能に表示するハイパーリンクの記述を含むので、ユーザが操作部116を操作して、検索結果画面のリンク元を指示すれば、ブラウジング部81は、アプリケーションプログラムのダウンロード要求を、検索サーバ200に送信する。検索サーバ200は、ダウンロード要求を受信すると、アプリケーションプログラムを送信するので、ダウンロード部91は、ネットワークI/F117がアプリケーションプログラムを受信すると、その受信されたアプリケーションプログラムを、HDD114に記憶する。
図10は、アプリケーション登録処理の流れの一例を示すフローチャートである。アプリケーション登録処理は、MFP100が備えるCPU111が、ROM112、HDD114またはCD−ROM119に記憶されたアプリケーション登録プログラムを実行することにより、CPU111により実行される処理である。アプリケーション登録プログラムは、アプリケーション共有プログラムの一部である。
図10を参照して、CPU111は、アプリケーションプログラムを受け付けたか否かを判断する(ステップS01)。アプリケーションプログラムを受け付けるまで待機状態となり(ステップS01でNO)、アプリケーションプログラムを受け付けたならば処理をステップS02に進める。換言すれば、アプリケーション登録処理は、MFP100にアプリケーションプログラムが入力されることを条件に実行される処理である。CPU111は、ユーザが操作部116に入力するアプリケーションプログラムを受け付ける。また、ユーザが、パーソナルコンピュータを用いて、APIの関数で記述されたアプリケーションプログラムを作成する場合は、パーソナルコンピュータで作成されたアプリケーションプログラムを、ネットワークI/F117がパーソナルコンピュータから受信することにより、アプリケーションプログラムを受け付ける。
ステップS02においては、ステップS01において受け付けられたアプリケーションプログラムを実行する。ステップS01において受け付けられるアプリケーションプログラムは、ADF21、画像読取部22、画像処理部23、画像形成部24、給紙部25および後処理部26を動作させる手順が記述されるが、それらの動作を特定するための条件、例えば、コピー部数等を要求する場合がある。ステップS02において、実行されたアプリケーションプログラムが、条件を要求する場合には、その条件を受け付ける。
次のステップS03においては、アプリケーションプログラムの実行結果を判断する。実行結果が正常ならば処理をステップS04に進めるが、そうでなければ処理を終了する。ステップS04においては、エビデンスデータを生成する。エビデンスデータは、ステップS02において実行されたアプリケーションプログラムを実行する際に、受け付けられた条件を含む。次のステップS05においては、登録情報を検索サーバ200に送信し、処理を終了する。登録情報は、ステップS01において受け付けられたアプリケーションプログラムと、ステップS04において生成されたエビデンスデータとを含む。
図11は、検索送信処理の流れの一例を示すフローチャートである。検索送信処理は、検索サーバ200が備えるCPU201が、ROM202、HDD205またはCD−ROM209に記憶された検索送信プログラムを実行することにより、CPU201により実行される処理である。検索送信プログラムは、アプリケーション共有プログラムの一部である。図11を参照して、CPU201は、アプリケーションプログラムを受信したか否かを判断する(ステップS51)。ネットワークI/F204が、MFP100,100A〜100Dのいずれかからアプリケーションプログラムを受信したならば処理をステップS52に進めるが、そうでなければ処理をステップS54に進める。ネットワークI/F204が、アプリケーションプログラムととともにエビデンスデータを受信する場合は、そのエビデンスデータをアプリケーションプログラムとともに受信する。
ステップS52においては、キーワードを受け付ける。検索サーバ200のユーザが、操作部207に入力するキーワードを受け付ける。ユーザが、ステップS51において受信されたアプリケーションプログラムを閲覧し、キーワードを決定する。なお、アプリケーションプログラムの名称、アプリケーションプログラムに含まれる関数から自動的にキーワードを生成するようにしてもよい。さらに、アプリケーションプログラムを送信しきた装置、例えばMFP100において、アプリケーションプログラムをインストールする際に、開発者が入力し、アプリケーションプログラムとともに送信し、アプリケーションプログラムがキーワードとともに受信される場合は、アプリケーションプログラムとともに受信されたキーワードを受け付けるようにしてもよい。
次のステップS53においては、ステップS51において受信されたアプリケーションプログラムを、ステップS52において受け付けられたキーワードと関連付け、それらをHDD205に記憶し、処理を終了する。アプリケーションプログラムととともにエビデンスデータが受信される場合には、そのエビデンスデータをアプリケーションプログラムと関連付けて記憶し、処理を終了する。
ステップS54においては、検索要求を受信したか否かを判断する。ネットワークI/F204が、MFP100,100A〜100Dのいずれかから検索要求を受信したならば処理をステップS55に進めるが、検索要求を受信しなければ処理をステップS57に進める。
ステップS55においては、MFP100,100A〜100Dのうち検索要求を送信してきたものから受信される検索キーワードを含むキーワードと関連付けられたアプリケーションプログラムを、HDD205に記憶されているアプリケーションプログラムのうちから抽出する。具体的には、MFP100,100A〜100Dのうち検索要求を送信してきたものに検索画面をネットワークI/F204を介して送信する。検索画面は、HDD205に記憶されたアプリケーションプログラムを検索するための検索キーワードを入力する領域を含む。MFP100,100A〜100Dのうち検索画面を受信する装置、例えば、MFP100は、検索画面を表示し、ユーザが検索画面に従って検索キーワードを入力すれば、検索キーワードを検索サーバ200に送信する。ステップS55においては、ネットワークI/F204が検索画面を送信したMFP100から検索キーワードを受信すると、受信された検索キーワードを用いて、HDD205に記憶されているアプリケーションプログラムを検索する。HDD205に、検索キーワードを含むキーワードと関連付けられたアプリケーションプログラムが複数記憶されている場合、それら複数のアプリケーションプログラムを抽出する。抽出されたアプリケーションプログラムがエビデンスデータと関連付けられている場合には、アプリケーションプログラムとともに、それに関連付けられているエビデンスデータを抽出する。
次のステップS56においては、画面情報生成・送信処理を実行し、処理を終了する。画面情報生成・送信処理の詳細は後述するが、ステップS55において抽出されたアプリケーションプログラムをダウンロードするための検索結果画面を生成するための画面情報を生成し、送信する処理である。
ステップS57においては、ダウンロード要求を受信したか否かを判断する。ネットワークI/F204が、MFP100,100A〜100Dのいずれかからダウンロード要求を受信したならば処理をステップS58に進めるが、ダウンロード要求を受信しなければ処理をステップS51に戻す。ダウンロード要求は、HDD205に記憶されているアプリケーションプログラムのネットワークアドレスを含む。
ステップS58においては、HDD205に記憶されているアプリケーションプログラムのうちダウンロード要求に含まれるネットワークアドレスで特定されるアプリケーションプログラムを読出し、MFP100,100A〜100Dのうちダウンロード要求を送信してきた装置にネットワークI/F204を介して送信し、処理を終了する。
図12は、画面情報生成・送信処理の流れの一例を示すフローチャートである。画面情報生成・送信処理は、図11のステップS56において実行される処理である。図12を参照して、変数iを初期値「0」に設定する(ステップS71)。変数iは、ウェブページに記述されるコマンドの組の数をカウントするための変数である。次のステップS72においては、図11のステップS55において、抽出された1以上のアプリケーションプログラムのうちから1つを選択する。そして、変数iをそれに「1」を加算した値に更新する(ステップS73)。
次のステップS74においては、選択されたアプリケーションプログラムに含まれる関数を、スタブに変換する。これによりシミュレート用のアプリケーションプログラムが生成される。
次のステップS75においては、ステップS72において選択されたアプリケーションプログラムの実行をシミュレートするシミュレートコマンドを生成する。ステップS72において選択されたアプリケーションプログラムがエビデンスデータと関連付けられている場合、アプリケーションプログラムをエビデンスデータに含まれる条件での実行をシミュレートするシミュレートコマンドを生成する。シミュレートコマンドは、ステップS74において関数をスタブに変換することにより生成されたシミュレート用のアプリケーションプログラムを実行させるためのコマンドである。
次のステップS76においては、表示コマンドを生成する。表示コマンドは、ステップS75において生成されたシミュレートコマンドを実行した結果が正常であることを条件にアプリケーションプログラムをダウンロード可能に表示するコマンドである。そして、マークアップ言語で記述されるウェブページに、生成されたシミュレートコマンドおよび表示コマンドの記述を追加する(ステップS77)。ウェブページは、ステップS74において、生成されたシミュレート用のアプリケーションプログラムそのものを記述するようにしてもよいし、シミュレート用のアプリケーションプログラムのネットワークアドレスを含み、ネットワークアドレスに基づいてシミュレート用のアプリケーションプログラムを取り込む記述をウェブページに記述してもよい。
次のステップS78においては、図11のステップS55において、抽出された1以上のアプリケーションプログラムのうちステップS72において未だ処理対象として選択されていないアプリケーションプログラムが存在するか否かを判断する。処理対象として選択されていないアプリケーションプログラムが存在すれば処理をステップS79に進めるが、存在しなければ処理をステップS82に進める。ステップS82においては、MFP100,100A〜100Dのうち検索要求を送信してきた装置に、ステップS77において生成されたウェブページを、ネットワークI/F204を介して送信し、処理を検索送信処理に戻す。
ステップS79においては、変数iが予め定められたしきい値T以上か否かを判断する。しきい値Tは、ウェブページに記述されるシミュレートコマンドおよび表示コマンドの組の数の上限値として、予め定められた値である。変数iがしきい値T以上ならば処理をステップS80に進めるが、そうでなければ処理をステップS72に戻す。
ステップS80においては、画面要求を受信したか否かを判断する。ネットワークI/F204が、MFP100,100A〜100Dのうち検索要求を送信してきた装置からウェブページ要求を受信したか否かを判断する。ウェブページ要求を受信するまで待機状態となり(ステップS80でNO)、ウェブページ要求を受信したならば(ステップS80でYES)、処理をステップS81に進める。
ステップS81においては、ステップS77において生成されたウェブページを、MFP100,100A〜100Dのうち検索要求を送信してきた装置にネットワークI/F204を介して送信し、処理をステップS71に戻す。
ウェブページに含まれるシミュレートコマンドおよび表示コマンドの組の数をしきい値T以下に制限することにより、次のウェブページの生成を開始してから送信するまでの期間に、先に送信したウェブページを受信した装置がシミュレートコマンドおよび表示コマンドを実行することができる。このため、2つの異なる処理を2つの装置それぞれで並列して実行することにより、ウェブページを受信した装置において、ウェブページを受信してから検索結果画面を表示するまでの時間をできるだけ速くすることができる。
画面情報生成・送信処理が実行されることにより、図11のステップS55において、抽出された1以上のアプリケーションプログラムそれぞれに対してシミュレートコマンドと表示コマンドとの組が1以上のウェブページに記述される。したがって、1以上のウェブページは、図11のステップS55において、抽出された1以上のアプリケーションプログラムの数と同じ数の組のシミュレートコマンドと表示コマンドとが記述される。
図13は、ブラウジング処理の流れの一例を示すフローチャートである。ブラウジング処理は、MFP100が備えるCPU111が、ROM112、HDD114またはCD−ROM119に記憶されたブラウジングプログラムを実行することにより、CPU111により実行される処理能である。
図13を参照して、CPU111は、検索画面を要求する指示を受け付けたか否かを判断する(ステップS11)。ユーザが操作部116に、検索サーバのURLを入力すると、検索画面を要求する指示を受け付ける。検索画面を要求する指示を受け付けるまで待機状態となり、検索画面を要求する指示を受け付けたならば、ネットワークI/F117を介して検索サーバ200に検索画面の送信要求を送信し、処理をステップS12に進める。
ステップS12においては、ネットワークI/F117が検索サーバ200から検索画面を受信するまで待機状態となり、検索サーバ200から検索画面を受信すると処理をステップS13に進める。ステップS13においては、受信された検索画面を表示部115に表示する。次に、ユーザが表示部115に表示された検索画面に従って、操作部116に入力する検索キーワードを受け付けたか否かを判断する。検索キーワードを受け付けたならば処理をステップS15に進めるが、そうでなければ処理をステップS13に戻す。
ステップS15においては、ネットワークI/F117を介して検索サーバ200に検索要求を送信し、処理をステップS16に進める。検索要求は、ステップS14において受け付けられた検索キーワードを含む。検索要求を受信する検索サーバ200においては、上述した検索送信処理のステップS55およびステップS56を実行し、MFP100にウェブページを送信する。この場合、MFP100はウェブページを受信するが、CPU111に形成されるブラウジング処理を実行するタスクが、受信されたウェブページを処理するのではなく、CPU111に形成される検索結果画面生成処理を実行するタスクがウェブページを処理して生成する。ブラウジング処理を実行するタスクは、検索結果画面生成処理を実行するタスクにより生成された検索結果画面を処理する。
ここで、検索結果画面生成処理について説明する。図14は、検索結果画面生成処理の流れの一例を示すフローチャートである。検索結果画面生成処理は、MFP100が備えるCPU111が、ROM112、HDD114またはCD−ROM119に記憶された検索結果画面生成プログラムを実行することにより、CPU111により実行される処理である。検索結果画面生成プログラムは、アプリケーション共有プログラムの一部である。
図14を参照して、CPU111は、検索サーバ200からウェブページを受信したか否かを判断する。ウェブページを受信するまで待機状態となり(ステップS31でNO)、ウェブページを受信すると(ステップS31でYES)、処理をステップS32に進める。ウェブページは、検索サーバ200がMFP100の送信する検索要求の受信に応じて送信するウェブページであり、画面情報を含む。換言すれば、検索結果画面生成処理は、検索サーバ200から画面情報を含むウェブページを受信することを条件に実行される処理である。
ステップS32においては、ウェブページに含まれるシミュレート用のアプリケーションプログラムを選択する。そして、選択されたシミュレート用のアプリケーションプログラムを実行する(ステップS33)。ステップS33において、シミュレート用のアプリケーションプログラムを実行した結果が正常に終了したか否かを判断する。実行したシミュレート用のアプリケーションプログラムが正常に終了したならば処理をステップS35に進めるが、そうでなければステップS35をスキップして、処理をステップS36に進める。
ステップS35においては、検索サーバ200に記憶されているアプリケーションプログラムへのハイパーリンクを検索結果画面に追加し、処理をステップS36に進める。ハイパーリンクは、ステップS32で選択されたシミュレーション用のアプリケーションプログラムと組になるリンク情報を含み、リンク情報は、シミュレーション用のアプリケーションプログラムに対応し、検索サーバ200に記憶されているアプリケーションプログラムのネットワークアドレス(URL)を含む。ハイパーリンクは、リンク情報で特定されるアプリケーションプログラムをダウンロード可能に表示する記述である。
ステップS36においては、ステップS31において受信されたウェブページに含まれるシミュレート用のアプリケーションプログラムのうちで、ステップS32において未だ処理対象に選択されていないものが存在するか否かを判断する。処理対象に選択されていないシミュレート用のアプリケーションプログラムが存在すれば、処理をステップS32に戻すが、存在しなければ処理をステップS37に進める。
ステップS37においては、ステップS35において、ハイパーリンクが追加された検索結果画面をブラウジング処理を実行するタスクに出力する。次のステップS38においては、次のウェブページの送信を要求するウェブページ要求を、ネットワークI/F117を介して、検索サーバ200に送信し、処理を終了する。
図13に戻って、ステップS15において検索サーバ200に検索要求を送信した後、検索結果画面が入力されるまで待機状態となり(ステップS16でNO)、検索結果画面が入力されると(ステップS16でYES)、処理をステップS17に進める。検索結果画面は、図14に示した検索結果画面生成処理を実行するタスクから入力される。
ステップS17においては、検索結果画面を表示部115に表示し、処理をステップS18に進める。ステップS18においては、リンク情報が指示された否かを判断する。具体的には、検索結果画面に含まれるハイパーリンクが指示されると、リンク情報が指示されたと判断する。検索結果画面に含まれるハイパーリンクが指示されたならば処理をステップS19に進めるが、そうでなければ処理をステップS20に進める。ステップS19においては、ハイパーリンクに含まれるリンク情報で特定されるアプリケーションプログラムをダウンロードし、処理をステップS20に進める。ハイパーリンクに含まれるリンク情報を含むダウンロード要求を、ネットワークI/F117を介して検索サーバ200に送信する。ダウンロード要求を受信する検索サーバ200は、リンク情報で特定されるアプリケーションプログラムを返信するので、ネットワークI/F117が受信するアプリケーションプログラムをHDD114に記憶する。
ステップS20においては、終了指示を受け付けたか否かを判断する。ユーザが操作部116に予め設けられた終了キーを押下すると、終了指示を受ける。終了指示を受け付けたならば処理を終了するが、そうでなければ処理をステップS21に進める。
ステップS21においては、次ページのウェブページに表示を切り換えるページ送り指示を受け付けたか否かを判断する。ユーザが操作部116に予め設けられたページ送りキーを押下すると、ページ送り指示を受ける。ページ送り指示を受け付けたならば処理をステップS16に戻し、そうでなければ処理をステップS18に戻す。
以上説明したように第1の実施の形態におけるアプリケーション共有システム1において、MFP100は、検索サーバよりシミュレートコマンドを受信することに応じて、アプリケーションプログラムをシミュレートし、シミュレートした実行結果が正常であることを条件に、検索サーバより受信されるネットワークアドレスに基づいてアプリケーションプログラムをダウンロードするためのリンク情報を含む検索結果画面を生成する。このため、検索結果画面に、実行することのできないアプリケーションプログラムをダウンロードするためのリンク情報を含まないようにすることができる。
また、検索サーバは、所定数のコマンドを含むページ単位でウェブページを生成し、1ページのウェブページを生成するごとにウェブページを送信するので、すべてのコマンドを含むウェブページを生成するより速くウェブページを送信する。このため、MFP100でウェブページを早期に表示することができる。また、MFP100においては、ページ単位でウェブページに含まれるコマンドを実行し、表示することができるので、MFP100の負荷を時間的に分散させることができる。
また、MFP100は、複数の関数を用いて記述されたアプリケーションプログラムを実行することにより、ADF21、画像読取部22、画像処理部23、画像形成部24、給紙部25および後処理部26を動作させることなく、実際にそれらを動作させたのと同じ結果を得ることができるので、アプリケーションプログラムを実行する動作をシミュレートすることができる。
<第2の実施の形態>
第1の実施の形態におけるアプリケーション共有システムは、ダウンロード装置として機能するMFP100において、シミュレートした結果が正常でない場合は、アプリケーションプログラムをダウンロード可能に表示しないようにしたものであった。第2の実施の形態におけるアプリケーション共有システムにおいては、ダウンロード装置として機能するMFP100において、シミュレートした結果が正常でない場合であっても、アプリケーションプログラムをダウンロード可能に表示するようにするとともに、エラーとなった原因を併せて表示する。第2の実施の形態におけるアプリケーション共有システムのシステム構成および検索サーバ200およびMFP100,100A〜100Dのハードウエア構成は、第1の実施の形態におけるアプリケーション共有システムと同じなので、ここでは説明を繰り返さない。
図15は、第2の実施の形態において登録装置として機能するMFPが備えるCPUが有する機能の概要の一例を示すブロック図である。図15を参照して、図5に示した機能と異なる点は、エラーテーブル受付部61が追加された点、および登録情報送信部57が
登録情報送信部57Aに変更された点である。その他の機能は図5に示した機能と同じなので、ここでは説明を繰り返さない。
エラーテーブル受付部61は、ユーザが操作部116に入力するエラーテーブルを受け付ける。また、ユーザが、パーソナルコンピュータを用いて、APIとして公開された関数で記述されたアプリケーションプログラムを作成する場合は、ユーザは、アプリケーションプログラムとともにエラーテーブルを生成する。この場合には、パーソナルコンピュータからネットワーク3を介して、MFP100にアプリケーションプログラムとエラーテーブルとを送信してもよい。この場合は、アプリケーション受付部51は、ネットワークI/F117がパーソナルコンピュータから受信するアプリケーションプログラムを受け付け、エラーテーブル受付部61は、ネットワークI/F117がパーソナルコンピュータから受信するエラーテーブルを受け付ける。アプリケーション受付部51は、受け付けられたアプリケーションプログラムを、関数実行部53および登録情報送信部57Aに出力し、エラーテーブル受付部61は、受け付けられたエラーテーブルを登録情報送信部57Aに出力する。
登録情報送信部57Aは、アプリケーション受付部51から入力されるアプリケーションプログラムと、エビデンスデータ生成部55からエビデンスデータが入力される場合は、エビデンスデータと、エラーテーブル受付部61から入力されるエラーテーブルとを、検索サーバ200に、ネットワークI/F117を介して送信する。
図16は、エラーテーブルの一例を示す図である。図16を参照して、エラーテーブルは、エラーコードとエラーの発生する原因とを関連付けたエラーレコードを含む。エラーレコードは、エラーコードの項目と、原因の項目とを含む。エラーコードの項目は、アプリケーションプログラムを実行してエラーが発生した場合にアプリケーションプログラムが返す値として定められたコードが設定される。原因の項目は、エラーコードに対応するエラーが発生した原因が設定される。例えば、エラーコード「1」に対応する原因「本体設定と禁則組み合わせのパラメータ」が設定され、パラメータの設定にエラーの原因があることが示される。
図17は、第2の実施の形態における検索サーバが備えるCPUの機能の概要の一例を示すブロック図である。図17を参照して、図6に示した機能と異なる点は、エラー原因通知部241が追加された点、アプリケーション登録部211および画面情報送信部217がそれぞれアプリケーション登録部211Aおよび画面情報送信部217Aに変更された点である。その他の機能は図6に示した機能と同じなので、ここでは説明を繰り返さない。
アプリケーション登録部211Aは、ネットワークI/F204がMFP100,100A〜100Dのいずれかからアプリケーションプログラムおよびエラーテーブルを受信すると、受信されたアプリケーションプログラムおよびエラーテーブルをHDD205に記憶する。アプリケーション登録部211は、アプリケーションプログラムととともにエビデンスデータが受信される場合には、そのエビデンスデータをアプリケーションプログラムおよびエラーテーブルと関連付けて記憶する。また、アプリケーション登録部211は、アプリケーションプログラムをHDD205に記憶する際に、アプリケーションプログラムに検索に用いるためのキーワードを付与する。キーワードは、検索サーバ200の管理者が付与するようにしてもよいし、アプリケーションプログラムを送信してきた装置、例えばMFP100において、アプリケーションプログラムをインストールする際に、開発者が入力し、アプリケーションプログラムとともに検索サーバ200に送信するようにしてもよい。アプリケーション登録部211によって、アプリケーションプログラムがHDD205に記憶されると、HDD205にアプリケーションプログラムと、エラーテーブルと、キーワードと、を少なくとも含む登録情報251Aが記憶される。
画面情報送信部217Aは、抽出部215から入力される1以上のアプリケーションプログラムに基づいて画面情報を生成し、画面情報をMFP100,100A〜100Dのうち検索キーワードを送信してきたものにネットワークI/F204を介して送信するとともに、MFP100,100A〜100Dのうち検索キーワードを送信してきたものを識別するための装置識別情報をエラー原因通知部241に出力する。具体的には、画面情報送信部217Aは、アプリケーションプログラムの実行をシミュレートするシミュレートコマンドを生成し、生成されたシミュレートコマンドとアプリケーションプログラムのネットワークアドレスとを含む画面情報を生成する。画面情報送信部217Aは、抽出部215からアプリケーションプログラムとともにエビデンスデータが入力される場合、アプリケーションプログラムをエビデンスデータに含まれる条件での実行をシミュレートするシミュレートコマンドを生成する。画面情報は、抽出部215から入力されるアプリケーションプログラムの数と同じ数である。
ここでは、画面情報送信部217Aは、マークアップ言語で記述され、画面情報を記述したウェブページを生成し、生成されたウェブページをMFP100,100A〜100Dのうち検索キーワードを送信してきたものに送信する。ウェブページは、アプリケーションプログラムの実行をシミュレートするシミュレートコマンドの記述と、該アプリケーションプログラムをダウンロード可能に表示する表示コマンドの記述と、該アプリケーションプログラムの実行をシミュレートした結果が正常でない場合にエラー原因を取得し、表示する警告コマンドの記述とを含む。
具体的には、
シミュレートコマンドは、関数変換部219がアプリケーションプログラムに記述されている関数の名称をスタブの名称に変更した後のシミュレーション用のアプリケーションプログラムを含み、シミュレーション用のアプリケーションプログラムを実行させる記述である。シミュレートコマンドは、抽出部215からアプリケーションプログラムとともにエビデンスデータが入力される場合、シミュレーション用のアプリケーションプログラムをエビデンスデータに含まれる条件で実行させる記述である。具体的には、エビデンスデータに含まれる条件をアプリケーションプログラムに引数として渡す記述である。
表示コマンドは、アプリケーションプログラムをダウンロード可能に表示させるコマンドであり、HDD205に記憶された登録情報251に含まれるアプリケーションプログラムへのリンク情報を含み、リンク情報は、そのアプリケーションプログラムのネットワークアドレスを含む。
警告コマンドは、シミュレートコマンドの実行結果が正常か否かは判断するコマンドと、シミュレートコマンドの実行結果が正常でない場合にアプリケーションプログラムのプログラム名とエラーコードとを検索サーバ200に送信するコマンドと、検索サーバ200からエラー原因を受信するコマンドと、受信されたエラー原因を表示するコマンドと、を含む。
画面情報送信部217Aは、抽出部215から入力される1以上のアプリケーションプログラムの数が所定の数を超える場合、シミュレートコマンドの記述と、表示コマンドの記述と、警告コマンドの記述との組を所定数含む複数のウェブページを生成し、複数のウェブページを生成された順に1ページのウェブページを選択する。画面情報送信部217Aは、選択されたウェブページをMFP100,100A〜100Dのうち検索キーワードを送信してきたものにネットワークI/F204を介して送信する。画面情報送信部217Aは、複数のウェブページを送信する場合、MFP100から次ページの送信要求をネットワークI/F204が受信するまで待って、次ページのウェブページを送信する。
エラー原因通知部241は、画面情報送信部217AからMFP100,100A〜100Dのうち検索キーワードを送信してきたものの装置識別情報が入力される。ここでは、MFP100から検索キーワードが送信されてきた場合を例に説明する。エラー原因通知部241は、画面情報送信部217AからMFP100の装置識別情報が入力された後、ネットワークI/F204がMFP100からアプリケーション名とエラーコードを受信すると、HDD205に記憶されている登録情報251Aを検索して、受信されたアプリケーション名とエラーコードに基づいてエラー原因を特定する。受信されたアプリケーション名のアプリケーションプログラムに関連付けられているエラーテーブルを特定し、特定されたエラーテーブルから受信されたエラーコードを含むエラーレコードを抽出する。そして、抽出されたエラーレコードの原因の項目に設定されているエラー原因を取得する。エラー原因通知部241は、取得されたエラー原因を、ネットワークI/F204を介して、アプリケーション名とエラーコードとを送信してきたMFP100に送信する。
図18は、第2の実施の形態においてダウンロード装置として機能するMFPが備えるCPUが有する機能の概要の一例を示すブロック図である。図18を参照して、図9に示した機能と異なる点は、画面生成部89が画面生成部89Aに変更された点である。その他の機能は図9に示した機能と同じなので、ここでは説明を繰り返さない。
画面生成部89Aは、画面情報受信部83から入力されるウェブページに含まれる表示コマンドおよび警告コマンドを実行し、スタブ実行部87から入力される実行結果に基づいて検索結果画面を生成し、検索結果画面をブラウジング部81に出力する。検索結果画面は、マークアップ言語で記述される。
具体的には、画面生成部89Aは、表示コマンドを実行することにより、アプリケーションプログラムをダウンロード可能に表示するハイパーリンクの記述を検索結果画面に追加する。アプリケーションプログラムをダウンロード可能に表示する記述は、表示コマンドに含まれるアプリケーションプログラムが記憶されているネットワークアドレスを含むリンク情報と関連付けられる。
画面生成部89Aは、エラー原因取得部95と、警告追加部97と、を含む。エラー原因取得部95は、警告コマンドに含まれる複数のコマンドのうち、シミュレートコマンドの実行結果が正常か否かを判断するコマンドと、シミュレートコマンドの実行結果が正常でない場合にアプリケーションプログラムのプログラム名とエラーコードとを検索サーバ200に送信するコマンドと、検索サーバ200からエラー原因を受信するコマンドと、を実行する。エラー原因取得部95は、スタブ実行部87からエラーコードが入力される場合に正常でないと判断し、スタブ実行部87から正常終了信号が入力される場合に正常と判断する。
エラー原因取得部95は、スタブ実行部87からエラーコードが入力される場合にアプリケーションプログラムのプログラム名とエラーコードとを、ネットワークI/F117を介して検索サーバ200に送信する。そして、エラー原因取得部95は、ネットワークI/F117が、検索サーバ200からエラー原因を受信すると、受信されたエラー原因を警告追加部97に出力する。
警告追加部97は、警告コマンドに含まれる複数のコマンドのうち、エラー原因を表示するコマンドを実行する。警告追加部97は、エラー原因取得部95から入力されるエラー原因の記述を検索結果画面に追加する。警告追加部97は、エラー原因の記述を、アプリケーションプログラムをダウンロード可能に表示するハイパーリンクの記述の近傍に記述する。
画面生成部89Aは、スタブ実行部87により実行されたシミュレーション用のアプリケーションプログラムに対応するアプリケーションプログラムをダウンロード可能に表示するハイパーリンクの記述を検索結果画面に追加し、スタブ実行部87からエラーコードが入力されるアプリケーションプログラムについては、エラーコードにエラーテーブルによって関連付けられたエラー原因の記述を、ハイパーリンクの記述の近傍に追加する。
このため、ブラウジング部81が検索結果画面を表示部115に表示すると、MFP100において正常に実行することが可能なアプリケーションプログラムと、正常に実行することが不可能なアプリケーションプログラムとを区別して、ダウンロード可能に表示される。さらに、正常に実行することが不可能なアプリケーションプログラムについては、エラー原因が表示されるので、ユーザは、現在のMFP100の設定状態、オプション装置の接続状態を変更する等してエラー原因を排除すれば、アプリケーションプログラムを正常に実行することができることを知ることができる。
図19は、第2の実施の形態におけるアプリケーション登録処理の流れの一例を示すフローチャートである。図19を参照して、図10に示したアプリケーション登録処理と異なる点は、ステップS04の後にステップS04Aが追加された点、ステップS05がステップS05Aに変更された点である。その他の処理は図10に示した処理と同じなのでここでは説明を繰り返さない。
ステップS04においてエビデンスデータが生成されると、次のステップS04Aにおいては、エラーテーブルを受け付ける。CPU111は、ユーザが操作部116に入力するエラーテーブルを受け付ける。また、ユーザが、パーソナルコンピュータを用いて、エラーテーブルを生成する場合は、パーソナルコンピュータで作成されたエラーテーブルを、ネットワークI/F117がパーソナルコンピュータから受信することにより受け付ける。
次のステップS05Aにおいては、登録情報を検索サーバ200に送信し、処理を終了する。登録情報は、ステップS01において受け付けられたアプリケーションプログラムと、ステップS04において生成されたエビデンスデータと、ステップS04Aにおいて受け付けられたエラーテーブルと、を含む。
図20は、第2の実施の形態における画面情報生成・送信処理の流れの一例を示すフローチャートである。第2の実施の形態における画面情報生成・送信処理は、図11のステップS56において実行される処理である。図20を参照して、図12に示した画面生成・送信処理と異なる点は、ステップS76およびステップS77がそれぞれステップS76AおよびステップS77Aに変更された点、ステップS76AとステップS77Aとの間にステップS76Bが追加された点、である。その他の処理は図12に示した処理と同じなのでここでは説明を繰り返さない。
ステップS75において、シミュレートコマンドが生成すると、次のステップS76Aにおいて、表示コマンドを生成する。表示コマンドは、ステップS72において選択されたアプリケーションプログラムをダウンロード可能に表示するコマンドである。
次のステップS76Bにおいては、警告コマンドを生成する。警告コマンドは、シミュレートコマンドの実行結果が正常か否かは判断するコマンドと、シミュレートコマンドの実行結果が正常でない場合にアプリケーションプログラムのプログラム名とエラーコードとを検索サーバ200に送信するコマンドと、検索サーバ200からエラー原因を受信するコマンドと、受信されたエラー原因を表示するコマンドと、を含む。
次のステップS77Aにおいては、マークアップ言語で記述されるウェブページに、生成されたシミュレートコマンド、表示コマンドおよび警告コマンドの記述を追加し、処理をステップS78に進める。
図21は、第2の実施の形態における検索結果画面生成処理の流れの一例を示すフローチャートである。図21を参照して、図14に示した検索結果画面生成処理と異なる点は、ステップS32の後にステップS32Aが追加された点、ステップS35に代えてステップS41〜ステップS43が追加された点である。その他の処理は図14に示した処理と同じなのでここでは説明を繰り返さない。
ステップS32において、ウェブページに含まれるシミュレート用のアプリケーションプログラムが選択されると、次のステップS32Aにおいて、検索サーバ200に記憶されているアプリケーションプログラムへのハイパーリンクを検索結果画面に追加する。ハイパーリンクは、ステップS32で選択されたシミュレーション用のアプリケーションプログラムと組になるリンク情報を含み、リンク情報は、シミュレーション用のアプリケーションプログラムに対応し、検索サーバ200に記憶されているアプリケーションプログラムのネットワークアドレス(URL)を含む。ハイパーリンクは、リンク情報で特定されるアプリケーションプログラムをダウンロード可能に表示する記述である。
次のステップS33において、ステップS32において選択されたシミュレート用のアプリケーションプログラムを実行する。次のステップS34においては、ステップS33において、シミュレート用のアプリケーションプログラムを実行した結果が正常に終了したか否かを判断する。実行したシミュレート用のアプリケーションプログラムが正常に終了したならば処理をステップS41に進めるが、そうでなければ処理をステップS36に進める。
ステップS41においては、エラーコードを検索サーバ200に送信する。ステップS33においてシミュレート用のアプリケーションプログラムを実行した結果、エラーコードが得られるので、得られたエラーコードを、ネットワークI/F117を介して検索サーバ200に送信する。
次のステップS42においては、エラー原因を受信したか否かを判断する。ネットワークI/F117が検索サーバ200からエラー原因を受信したか否かを判断する。エラー原因が受信されるまで待機状態となり(ステップS42でNO)、エラー原因が受信されると(ステップS42でYES)、処理をステップS43に進める。
ステップS43においては、受信されたエラー原因を検索結果画面に追加する。ステップS32Aにおいて検索結果画面に追加されたハイパーリンクの近傍に追加する。
第2の実施の形態におけるアプリケーション共有システム1において、MFP100は、検索サーバ200よりシミュレートコマンドを受信することに応じて、アプリケーションプログラムをシミュレートし、検索サーバ200より受信されるネットワークアドレスに基づいてアプリケーションプログラムをダウンロードするためのリンク情報と、シミュレートした実行結果が正常でない場合は警告メッセージとを含む、検索結果画面を生成する。このため、表示される検索結果画面を見るユーザに、アプリケーションプログラムの実行可否を通知することができる。
また、シミュレートした実行結果が正常でない場合は警告メッセージは、発生原因を含むので、アプリケーションプログラムを実行するための条件をユーザに知らせることができる。
なお、上述した実施の形態においては、アプリケーションプログラムに含まれる関数をスタブに変更することによりシミュレート用のアプリケーションプログラムを生成する例を示したが、アプリケーションプログラムの名称を、予め定められた名称を付加することで、アプリケーションプログラムがシミュレート用か否かを区別するようにしてもよい。
なお、上述した実施の形態においてはアプリケーション共有システム1について説明したが、図10〜図14、図19〜図21に示した処理をコンピュータに実行させるためのアプリケーション共有方法またはアプリケーション共有プログラムとして発明を捉えることができるのは言うまでもない。
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。