(57)【特許請求の範囲】
【請求項１】
相互に機能の一部又は全部が共通する複数のプログラムのいずれかの取得要求を受信する受信部と、
前記複数のプログラムを実行させ、それぞれのプログラムの処理時間を計測する計測部と、
計測結果に基づいて、前記取得要求に対して返信するプログラムを選択する選択部とを有し、
前記計測部は、前記プログラムが当該プログラムのインストール先の機器に実行させる外部装置との通信の回数を計数し、前記回数に、所定値を乗じた値によって、前記処理時間を補正するプログラム選択装置。
【請求項２】
前記取得要求に指定されている、前記プログラムのインストール先の機器の機種情報及び前記機器のソフトウェア構成情報に基づいて、前記機器のハードウェア環境及びソフトウェア環境を模倣する仮想環境を生成する生成部を有し、
前記計測部は、前記複数のプログラムを前記仮想環境において実行させ、それぞれのプログラムの処理時間を計測する請求項１記載のプログラム選択装置。
【請求項３】
機能を識別する機能識別情報と、当該機能を有する一以上のプログラムのそれぞれを識別するプログラム識別情報とを対応付けて記憶する記憶部を有し、
前記計測部は、前記取得要求に指定されているプログラム識別情報と同一の機能識別情報に対応付けられているプログラム識別情報に係るプログラム、又は前記取得要求に指定されている機能識別情報に対応付けられているプログラム識別情報に係るプログラムのそれぞれを実行させ、それぞれのプログラムの処理時間を計測する請求項１又は２記載のプログラム選択装置。
【請求項４】
前記所定値は、前記機器と前記外部装置との通信時間に基づく値である請求項１乃至３いずれか一項記載のプログラム選択装置。
【請求項５】
前記所定値は、前記機器と当該プログラム選択装置との通信時間と、当該プログラム選択装置と前記外部装置との通信時間とに基づく値である請求項１乃至３いずれか一項記載のプログラム選択装置。
【請求項６】
相互に機能の一部又は全部が共通する複数のプログラムのいずれかの取得要求を受信する受信手順と、
前記複数のプログラムを実行させ、それぞれのプログラムの処理時間を計測する計測手順と、
計測結果に基づいて、前記取得要求に対して返信するプログラムを選択する選択手順とをコンピュータが実行し、
前記計測手順は、前記プログラムが当該プログラムのインストール先の機器に実行させる外部装置との通信の回数を計数し、前記回数に、所定値を乗じた値によって、前記処理時間を補正するプログラム選択方法。
【請求項７】
相互に機能の一部又は全部が共通する複数のプログラムのいずれかの取得要求を受信する受信手順と、
前記複数のプログラムを実行させ、それぞれのプログラムの処理時間を計測する計測手順と、
計測結果に基づいて、前記取得要求に対して返信するプログラムを選択する選択手順とをコンピュータに実行させ、
前記計測手順は、前記プログラムが当該プログラムのインストール先の機器に実行させる外部装置との通信の回数を計数し、前記回数に、所定値を乗じた値によって、前記処理時間を補正する選択プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム選択装置、プログラム選択方法、及び選択プログラムに関する。
【背景技術】
【０００２】
従来、ＰＣ（Personal Computer）等のコンピュータ、又は固有の機能を有する各種機器（以下、「機器」として総称する。）において利用可能なアプリケーションプログラムには、大きく分けて二つの形式がある。第一の形式のアプリケーションプログラムは、機器自体にインストールされ、当該アプリケーションプログラムの機能を機器のＣＰＵに実行させるアプリケーションプログラムである。例えば、特定のハードウェア環境及びソフトウェア環境に特化したネイティブアプリケーションは、第一の形式のアプリケーションプログラムの代表例であるといえる。第一の形式のアプリケーションプログラムは、その処理が機器の内部で完結するものが多いため、処理性能に対する通信負荷による影響が小さいという利点がある。
【０００３】
第二の形式のアプリケーションプログラムは、機器とネットワークを介して通信可能なコンピュータにインストールされ、機器からの要求に応じた処理を当該コンピュータのＣＰＵに実行させるアプリケーションプログラムである。例えば、Ｗｅｂアプリケーションは、第二の形式のアプリケーションプログラムの代表例であるといえる。第二の形式のアプリケーションプログラムは、機器ごとにインストールされないため、バージョンアップが容易であるという利点がある。
【０００４】
機能面においては、従来、第一の形式のアプリケーションプログラムは、機器に固有のハードウェアを利用した機能を提供可能であるという利点を有していた。しかし、このような利点による第一のアプリケーションプログラムの優位性は、希薄になりつつある。
【０００５】
例えば、Ｗｅｂアプリケーションを利用するために機器が備えるブラウザソフトの中には、画面を表示するだけでなく、機器制御用に拡張されたスクリプト（以下、「拡張スクリプト」という。）を解釈して機器制御を実行することが可能なものも有る（例えば、特許文献１）。画像形成装置用の拡張スクリプトの一例として、スキャン命令を示すスクリプトが挙げられる。したがって、第一の形式のアプリケーションプログラムと同様の機能を第二の形式のアプリケーションプログラムでも提供可能な場合が多くなってきている。換言すれば、第一の形式及び第二の形式の双方によって、同一の機能を実現するアプリケーションプログラムを提供することができるようになっている。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
以上のような状況は、ユーザにとっては、選択肢の増加といった観点においては好ましい状況であるといえる。しかし、用途又は機能が共通するアプリケーションプログラムが複数存在する場合、ユーザは、どのアプリケーションプログラムを機器へのインストール対象として選択すべきであるのかについて、困惑したり、選択が煩わしかったりする。
【０００７】
本発明は、上記の点に鑑みてなされたものであって、インストール先に適したプログラムを自動的に選択することを目的とする。
【課題を解決するための手段】
【０００８】
そこで上記課題を解決するため、本発明は、相互に機能の一部又は全部が共通する複数のプログラムのいずれかの取得要求を受信する受信部と、前記複数のプログラムを実行させ、それぞれのプログラムの処理時間を計測する計測部と、計測結果に基づいて、前記取得要求に対して返信するプログラムを選択する選択部とを有し、前記計測部は、前記プログラムが当該プログラムのインストール先の機器に実行させる外部装置との通信の回数を計数し、前記回数に、所定値を乗じた値によって、前記処理時間を補正する。
【発明の効果】
【０００９】
インストール先に適したプログラムを自動的に選択することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態におけるプログラム提供システムの構成例を示す図である。
【図２】本発明の実施の形態におけるプログラム提供装置のハードウェア構成例を示す図である。
【図３】本発明の実施の形態におけるプログラム提供装置の機能構成例を示す図である。
【図４】プログラム提供装置が実行する処理手順の一例を説明するためのフローチャートである。
【図５】機能分類情報記憶部の構成例を示す図である。
【図６】プログラム提供装置が複数のコンピュータによって構成される例を示す図である。
【図７】統合開発環境の一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態におけるプログラム提供システムの構成例を示す図である。図１のプログラム提供システム１おいて、機器メーカ環境Ｅ２は、開発環境Ｅ３、及びユーザ環境Ｅ１のそれぞれと、インターネット等のネットワークＮ１を介して接続されている。
【００１２】
機器メーカ環境Ｅ２は、例えば、ユーザ環境Ｅ１において利用される複合機１０ａ、プリンタ１０ｂ、及びプロジェクタ１０ｃ等の機器や、会議システム１０ｄ（例えば、ビデオ会議システム１０ｄ）等を製造及び販売する機器メーカが運営するシステム環境である。本実施の形態において、機器メーカ環境Ｅ２は、プログラム提供装置２０を含む。プログラム提供装置２０は、ユーザ環境Ｅ１における機器にインストール可能なアプリケーションプログラム（以下、単に、「アプリケーション」という。）のダウンロードサービスを、ネットワークＮ１を介して提供する。
【００１３】
ユーザ環境Ｅ１は、複合機１０ａ、プリンタ１０ｂ、プロジェクタ１０ｃ、及び会議システム１０ｄ等のユーザのシステム環境である。ユーザ環境Ｅ１において、複合機１０ａ、プリンタ１０ｂ、プロジェクタ１０ｃ、及び会議システム１０ｄ等は、ＬＡＮ（Local Area Network）等のネットワークを介して接続されている。
【００１４】
開発環境Ｅ３は、機器にインストールされるアプリケーションを開発する企業（ソフトウェアベンダ）におけるシステム環境である。開発環境Ｅ３では、機器に実装されているアプリケーションプラットフォームにおいて公開されているＡＰＩ（Application Program Interface）を利用して、アプリケーションの開発が行われている。開発環境Ｅ３は、一以上の開発者端末３０等を含む。開発者端末３０は、アプリケーションの開発者が利用するＰＣ（Personal Computer）等の情報処理装置である。
【００１５】
なお、本実施の形態においては、便宜上、開発者という用語を用いるが、開発者とは、実際に開発を行っているものでなくてもよい。窓口の担当者や管理者等、機器における障害の通知先となりうる者であってもよい。また、開発者は、個人でなくてもよい。通常、一つのアプリケーションの開発又は障害対応は、複数の個人又は組織によって行われる。したがって、開発者は、開発環境Ｅ３（ソフトウェアベンダ）全体であってもよいし、開発の委託先であってもよい。また、開発者は、必ずしも開発を業務としている組織でなくてもよい。機器に関する障害を受け付けるコールセンタ等であってもよい。
【００１６】
図２は、本発明の実施の形態におけるプログラム提供装置のハードウェア構成例を示す図である。図２のプログラム提供装置２０は、それぞれバスＢで相互に接続されているドライブ装置２００、補助記憶装置２０２、メモリ装置２０３、ＣＰＵ２０４、及びインタフェース装置２０５等を有する。
【００１７】
プログラム提供装置２０での処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体２０１によって提供される。プログラムを記憶した記録媒体２０１がドライブ装置２００にセットされると、プログラムが記録媒体２０１からドライブ装置２００を介して補助記憶装置２０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体２０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置２０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００１８】
メモリ装置２０３は、プログラムの起動指示があった場合に、補助記憶装置２０２からプログラムを読み出して格納する。ＣＰＵ２０４は、メモリ装置２０３に格納されたプログラムに従ってプログラム提供装置２０に係る機能を実行する。インタフェース装置２０５は、ネットワークに接続するためのインタフェースとして用いられる。
【００１９】
図３は、本発明の実施の形態におけるプログラム提供装置の機能構成例を示す図である。
【００２０】
図３において、プログラム提供装置２０は、要求受信部２１１、返信候補判定部２１２、返信対象選択部２１３、評価環境構築部２１４、自動評価部２１５、及び応答返信部２１６等を有する。これら各部は、プログラム提供装置２０にインストールされたプログラムが、ＣＰＵ２０４に実行させる処理により実現される。但し、各部は、複数のコンピュータに分散されてもよい。
【００２１】
プログラム提供装置２０は、また、機能分類情報記憶部２２１及びモジュール記憶部２２２等を利用する。これら各記憶部は、例えば、補助記憶装置２０２、又はプログラム提供装置２０にネットワークを介して接続される記憶装置等を用いて実現可能である。
【００２２】
要求受信部２１１は、複合機１０ａからのアプリケーションのダウンロード要求を受信する。なお、本実施の形態では、アプリケーションのインストール先の複合機１０ａよりダウンロード要求が送信される例が説明されるが、例えば、アプリケーションのダウンロードは、ＰＣ（Personal Computer）等によって代行されてもよい。
【００２３】
返信候補判定部２１２は、ダウンロード要求に対して返信対象となりうるアプリケーションの候補（以下、「返信候補」という。）を、機能分類情報記憶部２２１を参照して判定する。
【００２４】
機能分類情報記憶部２２１は、機能を基準としてアプリケーションを分類（グループ分け）した情報を記憶する。換言すれば、機能分類情報記憶部２２１は、機能とアプリケーションとの対応情報を記憶する。
【００２５】
評価環境構築部２１４は、ダウンロード要求に対する返信候補となるアプリケーションが複数有る場合、各返信候補の性能（処理時間）を評価するための環境（以下、「評価環境２５０」という。）を構築（生成）する。評価環境２５０は、ダウンロード要求元の複合機１０ａと同様又はほぼ同様のハードウェア構成及びソフトウェア構成等を模倣又は有する仮想環境である。仮想環境という表現は、実際の複合機１０ａを利用して構築される環境ではなく、仮想的（ソフトウェア的）に複合機１０ａと同様のハードウェア構成及びソフトウェア構成が再現される環境であることに基づく。
【００２６】
図３に示されるように、評価環境２５０は、ハードウェア模倣部２５１及びプラットフォーム模倣部２５２等を含む。ハードウェア模倣部２５１は、複合機１０ａのハードウェアを模倣する。ハードウェア模倣部２５１は、複合機１０ａのハードウェアを表面的に模倣可能なものであってもよい。すなわち、ハードウェア模倣部２５１は、複合機１０ａのハードウェアと同様のインタフェースを提供し、当該インタフェースの呼び出しに応じた動作は、ダミーであってもよい。プラットフォーム模倣部２５２は、複合機１０ａが有するアプリケーションプラットフォームと同一のプログラム群によって実現されてもよいし、当該アプリケーションプラットフォームと同一のプログラム群が、ハードウェア模倣部２５１上での動作用に改変されたプログラム群によって実現されてもよい。すなわち、プラットフォーム模倣部２５２は、表面上の振る舞いのみならず、内部ロジックまでに関しても、実際のアプリケーションプラットフォームを模倣する。
【００２７】
なお、プログラム提供装置２０は、例えば、複合機１０ａの機種ごとに、コンピュータをハードウェア模倣部２５１として機能させるプログラム（以下、「ハードウェア模倣プログラム」という。）を有する。または、当該プログラムは一つであり、機種に応じた違いは、当該プログラムに対する設定情報とされてもよい。また、プログラム提供装置２０は、例えば、複合機１０ａが有するアプリケーションプラットフォームのバージョンごとに、コンピュータを当該バージョンに対応するプラットフォーム模倣部２５２として機能させるプログラム（以下、「プラットフォーム模倣プログラム」という。）を有する。プラットフォーム模倣部２５２は、ダウンロード要求元の複合機１０ａ機種に対応するハードウェア模倣プログラムと、当該複合機１０ａのアプリケーションプラットフォーム１２２のバージョンに対応するプラットフォーム模倣プログラムとを選択し、これらのプログラムを起動させることにより、評価環境２５０を生成する。ハードウェア模倣プログラム及びプラットフォーム模倣プログラムは、一般的に、エミュレータ又はシミュレータと呼ばれるソフトウェアによって実現されてもよい。
【００２８】
評価環境構築部２１４は、更に、ダウンロード要求元の複合機１０ａの機種に対応するハードウェア模倣部２５１、及び当該複合機１０ａが有するアプリケーションプラットフォームのバージョンに対応するプラットフォーム模倣部２５２等を組み合わせた評価環境２５０に対し、返信候補の各アプリケーションをインストールする。インストールされるアプリケーションは、モジュール記憶部２２２に記憶されている。モジュール記憶部２２２は、これまでに販売され、保守期間に有る各アプリケーションの実体（プログラムモジュール）を記憶する。
【００２９】
なお、評価環境２５０が構築される場所（ハードウェア模倣プログラム及びプラットフォーム模倣プログラムが起動される場所）は、プログラム提供装置２０でなくてもよい。プログラム提供装置２０にネットワークを介して接続されるコンピュータであってもよい。または、プログラム提供装置２０若しくは当該コンピュータにおいて仮想マシンを動作させ、そのうちの一つの仮想マシン上で、評価環境２５０が構築されてもよい。
【００３０】
自動評価部２１５は、評価環境２５０において、返信候補の各アプリケーションを実行させ、その処理性能を評価する。本実施の形態において、処理性能の評価は、処理時間の計測に相当する。
【００３１】
返信対象選択部２１３は、自動評価部２１５による各返信候補の評価結果に基づいて、ダウンロード要求元の複合機１０ａに適したアプリケーションをダウンロード対象として選択する。応答返信部２１６は、返信対象選択部２１３によって選択されたアプリケーションのモジュールを、モジュール記憶部２２２より取得し、ダウンロード要求元に返信する。
【００３２】
以下、プログラム提供装置２０が実行する処理手順について説明する。図４は、プログラム提供装置が実行する処理手順の一例を説明するためのフローチャートである。
【００３３】
ステップＳ１０１において、要求受信部２１１は、複合機１０ａより送信されたダウンロード要求を受信する。
【００３４】
ダウンロード要求は、例えば、複合機１０ａの操作パネルに表示される、ダウンロード可能なアプリケーションの一覧が表示されている画面に対する、アプリケーションの選択操作に応じて送信される。ダウンロード要求には、選択されたアプリケーションの識別情報（以下、「アプリＩＤ」という。）が含まれる。又は、アプリケーション単位ではなく、機能単位でダウンロード対象が選択されてもよい。すなわち、どのような機能を実行するアプリケーションを所望するのかをユーザに選択させてもよい。この場合、選択された機能の識別情報（以下、「機能ＩＤ」という。）が、ダウンロード要求に含まれてもよい。
【００３５】
ダウンロード要求には、更に、複合機１０ａのハードウェアの構成情報及びソフトウェアの構成情報等が含まれる。複合機１０ａのハードウェアの構成情報は、例えば、複合機１０ａの機種を示す機種情報である。複合機１０ａのソフトウェアの構成情報は、例えば、複合機１０ａが有するアプリケーションプラットフォームのバージョン情報である。
【００３６】
続いて、返信候補判定部２１２は、ダウンロード要求に指定されているアプリＩＤ又は機能ＩＤと、機能分類情報記憶部２２１とに基づいて、返信候補を判定する（Ｓ１０２）。
【００３７】
図５は、機能分類情報記憶部の構成例を示す図である。図５において、機能分類情報記憶部２２１は、機能ＩＤごとに、当該機能ＩＤが示す機能を有するアプリケーション（厳密には、当該機能を複合機１０ａに実行させることのできるアプリケーション）のアプリＩＤの一覧を記憶する。すなわち、同一の機能ＩＤに対応づけられているアプリＩＤに係るアプリケーションの集合は、相互に機能の一部又は全部が共通するアプリケーションの集合であるといえる。
【００３８】
なお、図５において、機能ＩＤは、便宜上、「スキャン」、「印刷」等、日本語によって表記されているが、数字又は符号の羅列であってもよい。また、機能の分類の粒度（細かさ）は、適宜変更されてもよい。
【００３９】
例えば、ダウンロード要求においてアプリＩＤが指定されている場合、当該アプリＩＤと同じ機能ＩＤに対応付けられている各アプリＩＤに係るアプリケーションが、返信候補として判定される。一方、ダウンロード要求において機能ＩＤが指定されている場合、当該機能ＩＤに対応付けられている各アプリＩＤに係るアプリケーションが、返信候補として判定される。
【００４０】
なお、同一の機能ＩＤに対応づけられているアプリＩＤに係るアプリケーションは、その実装形態又は実装形式が異なっていてもよい。例えば、全ての処理が複合機１０ａ上で完結するアプリケーション、一部の処理を外部サービスに委譲するアプリケーション、又は全ての処理が非図示のＷｅｂサーバ上で実行され、画面表示のみ複合機１０ａのウェブブラウザで実行されるアプリケーションが、同一の機能ＩＤに対応付けられていてもよい。
【００４１】
続いて、評価環境構築部２１４は、評価環境２５０を生成する（Ｓ１０３）。具体的には、ダウンロード要求に含まれている機種情報が示す機種（複合機１０ａの機種）に対応するハードウェア模倣部２５１と、アプリケーションプラットフォームのバージョン情報に対応するプラットフォーム模倣部２５２とを含む仮想環境が、評価環境２５０として生成される。評価環境２５０の生成先は、プログラム提供装置２０にネットワークを介して接続される非図示のコンピュータであってもよいし、当該コンピュータ又はプログラム提供装置２０において稼動する仮想マシンであってもよい。
【００４２】
続いて、評価環境構築部２１４は、返信候補の各アプリケーションのプログラムモジュールをモジュール記憶部２２２より取得し、評価環境２５０にインストールする（Ｓ１０４）。すなわち、モジュール記憶部２２２は、アプリＩＤに関連付けて、各アプリケーションのプログラムモジュールを記憶する。
【００４３】
このように、評価環境２５０は、ダウンロード要求元の複合機１０ａのハードウェア構成及びソフトウェア構成を擬似的に再現するハードウェア構成及びソフトウェア構成を有するように生成される。したがって、アプリケーションのインストール先の複合機１０ａにより近い状態で、各返信候補の処理時間を計測することができる。
【００４４】
続くステップＳ１０５〜Ｓ１０９は、返信候補ごとのループ処理である。ステップＳ１０５において、自動評価部２１５は、一つの返信候補を評価対象とする。なお、ステップＳ１０４は、ステップＳ１０５の後に実行されてもよい。この場合、ステップＳ１０４では、評価対象とされた一つの返信候補がインストールされればよい。また、評価対象が代わる度に、直前の評価対象のアプリケーションに関して、評価環境２５０からのアンインストールが実行されてもよい。
【００４５】
続いて、自動評価部２１５は、評価環境２５０において、評価対象のアプリケーションを自動実行させる（Ｓ１０６）。自動実行において、自動評価部２１５は、アプリケーションの処理時間を計測する。例えば、実行指示が入力されてから、実行結果が出力されるまでの所要時間が計測される。計測値（処理時間）は、評価対象のアプリＩＤに関連付けられて、例えば、メモリ装置２０３に記憶される。
【００４６】
なお、アプリケーションに対して入力パラメータ（設定情報等）が必要される場合、入力パラメータは、予めテストシナリオとして、アプリケーションごとに、例えば、補助記憶装置２０２等に記憶されていてもよい。バッチ的なアプリケーションであれば、テストシナリオは最初に与えられるパラメータ群であればよい。対話的なアプリケーションであれば、テストシナリオは、ユーザによって行われる操作指示を示す情報であればよい。
【００４７】
また、処理時間の計測の開始のタイミングを示す情報と、終了のタイミングを示す情報についても、アプリケーションごとに、例えば、補助記憶装置２０２等に記憶されていてもよい。処理時間の計測の開始のタイミングを示す情報とは、例えば、テストシナリオにおいて、いずれの入力が行われた後に計測を開始するのかを示す情報である。処理時間の計測の終了を示す情報とは、例えば、評価対象のアプリケーションからどのような出力が得られたら、計測を終了させるかを示す情報である。なお、自動評価部２１５は、公知の自動評価システムを用いて実現されてもよい。
【００４８】
自動評価部２１５は、また、アプリケーションの自動実行中において、アプリケーションによるネットワーク通信の回数を計数（カウント）する。すなわち、処理要求を外部サービスに送信したり、処理を外部に委譲したりするアプリケーションの場合は、ネットワーク通信が発生する。通信回数は、例えば、アプリケーションによる所定のＡＰＩの呼び出し回数等を数えることにより、計数されてもよい。
【００４９】
処理時間の計測が完了すると、自動評価部２１５は、通信回数は１以上であったか否かを判定する（Ｓ１０７）。通信回数が１以上であった場合、自動評価部２１５は、通信回数に所定値αを乗じることによって得られる値を、計測された処理時間に加算することにより、処理時間を補正する（Ｓ１０８）。すなわち、通信処理に要する時間は、評価環境２５０と、複合機１０ａとでは異なりうる。通信相手との距離や通信経路等が、評価環境２５０と複合機１０ａとでは異なるからである。したがって、アプリケーションが複合機１０ａにおいて実行された場合の処理時間により近い処理時間が得られるように、ステップＳ１０８では処理時間の補正が行われる。なお、ステップＳ１０８の詳細については後述される。
【００５０】
ステップＳ１０５〜Ｓ１０９が、全ての返信候補に関して実行されると（Ｓ１０９でＹｅｓ）、返信対象選択部２１３は、例えば、アプリＩＤに関連付けられてメモリ装置２０４に記憶されている処理時間に基づいて、返信対象を選択する（Ｓ１１０）。具体的には、処理時間が最小であるアプリＩＤが、返信対象として選択される。
【００５１】
続いて、応答返信部２１６は、返信対象選択部２１３によって選択されたアプリＩＤに係るプログラムモジュールをモジュール記憶部２２２より取得し、当該プログラムモジュールを含む応答を、複合機１０ａに返信する（Ｓ１１１）。
【００５２】
なお、ステップＳ１１１では、アプリケーションごとに処理時間の計測結果を示す画面を表示させる表示用データ（例えば、ＨＴＭＬデータ）が、複合機１０ａに返信されてもよい。複合機１０ａの操作パネルにおいて表示される当該画面を介して選択されたアプリケーションが、複合機１０ａにダウンロードされるようにしてもよい。
【００５３】
続いて、ステップＳ１０８の詳細について説明する。本実施の形態では、三つの形態について説明する。なお、いずれの形態においても、アプリケーションの自動実行中における通信は、エミュレートされずに実際に行われることとする。
【００５４】
第一の形態では、アプリケーションの通信相手となる外部サービスが実装されたコンピュータが、例えば、プログラム提供装置２０自身である場合、又はプログラム提供装置２０と同一ＬＡＮ（Local Area Network）に接続されている場合を想定する。この場合、アプリケーションの自動実行中における通信による遅延時間は、無視できる程小さいと考えられる。換言すれば、自動実行において計測された処理時間には、通信時間はほとんど含まれていないと考えられる。
【００５５】
そこで、第一の形態のステップＳ１０８では、複合機１０ａと外部サービスとの一回の通信時間の推定値が所定値αとされる。例えば、複合機１０ａと外部サービスとの１回の通信時間がｐｉｎｇコマンド等によって予め計測され、当該計測値が、複合機１０ａと外部サービとの通信時間の推定値とされてもよい。この場合、当該計測値が、ダウンロード要求に指定されてもよい。または、複合機１０ａからのダウンロード要求が、プログラム提供装置２０に到達するまでの時間が計測され、当該計測値に基づいて、上記推定値が決定されてもよい。プログラム提供装置２０と外部サービスとの通信時間が無視出来る程小さいのであれば、複合機１０ａとプログラム提供装置２０との通信時間を、複合機１０ａと外部サービスとの通信時間としてみなすことも可能であると考えるからである。
【００５６】
第二の形態では、外部サービスが実装されたコンピュータが、例えば、プログラム提供装置２０とインターネット等を介して接続されている場合を想定する。この場合、アプリケーションの自動実行において計測された処理時間には、通信による遅延時間が或る程度含まれていると考えられる。但し、プログラム提供装置２０と外部サービスとの間の通信時間と、複合機１０ａと外部サービスとの間の通信時間とは、必ずしも同じであるとは限らない。
【００５７】
そこで、第二の形態のステップＳ１０８では、第一の形態と同様に決定される、複合機１０ａと外部サービスとの一回の通信時間の推定値から、プログラム提供装置２０と外部サービスとの間の１回の通信時間を差し引いた値が、所定値αとされる。
【００５８】
例えば、複合機１０ａと外部サービスとの通信時間の推定値が１００ｍ秒であり、プログラム提供装置２０と外部サービスとの間の一回の通信時間が１０ｍ秒であった場合、１００−１０＝９０ｍ秒が、所定値αとされる。
【００５９】
第三の形態も、第二の形態と同様に、外部サービスが実装されたコンピュータが、例えば、プログラム提供装置２０とインターネット等を介して接続されている場合を想定する。第三の形態では、複合機１０ａと外部サービスとの通信時間は、複合機１０ａとプログラム提供装置２０との通信時間と、プログラム提供装置２０と外部サービスとの通信時間との和であるとみなす。
【００６０】
したがって、この場合、所定値αには、プログラム提供装置２０と複合機１０ａとの一回の通信時間が当てはめられればよい。当該通信時間は、例えば、複合機１０ａからのダウンロード要求が、プログラム提供装置２０に到達するまでの時間に基づいて決定されてもよい。
【００６１】
第三の形態は、複合機１０ａと外部サービスとの通信時間を予め計測する必要が無い点において有利である。
【００６２】
上述したように、本実施の形態によれば、アプリケーションのインストール先である複合機１０ａに適したプログラムを自動的に選択することができる。
【００６３】
なお、本実施の形態では、機器の一例として複合機１０ａを用いて説明したが、プリンタ１０ｂ等の他の画像形成装置や、プロジェクタ１０ｃ等の他の機器に関して、本実施の形態が適用されてもよい。また、デジタルカメラ等、非図示の機器に関して本実施の形態が適用されてもよい。更に、会議システム１０ｄ等、情報処理システムに関して、本実施の形態が適用されてもよい。
【００６４】
また、プログラム提供装置２０は、一台のコンピュータによって構成されてもよいし、ネットワーク上において分散された複数のコンピュータによって構成されてもよい。また、プログラム提供サービスは、クラウドサービスとして提供されてもよい。
【００６５】
例えば、図６は、プログラム提供装置が複数のコンピュータによって構成される例を示す図である。図６では、プログラム提供装置２０が、複数のコンピュータに分散されて構成されている例が示されている。なお、図６は、プログラム提供装置２０が、４台以上のコンピュータによって構成されている例が示されているが、４台未満のコンピュータによって構成されてもよい。
【００６６】
また、プログラム提供装置２０が有する機能は、統合開発環境の一部を構成してもよい。図７は、統合開発環境の一例を示す図である。図７中、図３と同一部分には同一符号を付し、その説明は省略する。また、図７において、要求受信部２１１、返信候補判定部２１２、返信対象選択部２１３、応答返信部２１６、及び機能分類情報記憶部２２１は、便宜上、省略されている。
【００６７】
図７において、統合開発環境４０は、更に、フロントエンド部２１７、認証部２１８、認証情報記憶部２２３、ソースコード記憶部２３１、ソースコード編集部２３２、ビルド部２３３、テスト部２３４、デバッグ部２３５、及び継続的インテグレーション部２３６等を含む。
【００６８】
フロントエンド部２１７は、統合開発環境４０のＧＵＩ（Graphical User Interface）を提供する。例えば、当該ＧＵＩは、ＨＴＭＬ（HyperText Markup Language）によって記述されたＨＴＭＬデータによって構成される。但し、ＨＴＭＬデータ以外のデータ形式によって、当該ＧＵＩが構成されてもよい。
【００６９】
認証部２１８は、統合開発環境４０の利用を要求するユーザの認証を実行する。具体的には、本実施の形態では、アプリケーションの開発者が、統合開発環境４０のユーザとなる。したがって、認証部２１８は、開発者端末３０において入力された認証情報（例えば、ユーザ名及びパスワード）を、認証情報記憶部２２３に記憶されている認証情報と照合することにより、開発者の認証を実行する。認証情報記憶部２２３には、統合開発環境４０の利用契約を結んでいる各ユーザ（開発者）の認証情報が記憶されている。
【００７０】
ソースコード記憶部２３１は、アプリケーションのソースコードを記憶する。ソースコード編集部２３２は、開発者端末３０に表示されるソースコード編集画面を介して入力される指示に応じ、編集対象とされているソースコードを編集する。ビルド部２３３は、ソースコード記憶部２３１に記憶されているソースコードについてビルド（コンパイル及びリンク等）を実行する。テスト部２３４は、ビルド後のアプリケーションに関するテストの実施の支援を行う。デバッグ部２３５は、ビルド後のアプリケーションに関するデバッグの支援を行う。継続的インテグレーション部２３６は、例えば、ソースコード編集部２３２によって編集された後、ビルドされていないソースコードに関して、自動的にビルド及びテスト等を実行し、ビルド後のアプリケーションのプログラムモジュールをモジュール記憶部２２２にアップロードする。
【００７１】
プログラム提供装置２０の機能が、統合開発環境４０の一部とされることにより、開発者に対してより利便性の高いサービスを提供することができる。すなわち、開発者は、同一の仮想空間内において、評価環境２５０の構築、評価環境２５０における自動評価の実行、自動評価の実行結果を受けたアプリケーションのソースコードの編集、編集後のソースコードのビルド、ビルド後のテスト及びデバッグ等を実行することができる。
【００７２】
なお、図７に示される統合開発環境４０は、プログラム提供装置２０と同じコンピュータ又はコンピュータ群によって実現されてもよいし、プログラム提供装置２０に対して更なるコンピュータ又はコンピュータ群が接続されることにより実現されてもよい。
【００７３】
なお、本実施の形態において、プログラム提供装置２０は、プログラム選択装置の一例である。要求受信部２１１は、受信部の一例である。自動評価部２１５は、計測部の一例である。返信対象選択部２１３は、選択部の一例である。
【００７４】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００７５】
１            プログラム提供システム
１０ａ        複合機
１０ｂ        プリンタ
１０ｃ        プロジェクタ
１０ｄ        会議システム
２０          プログラム提供装置
３０          開発者端末
２００        ドライブ装置
２０１        記録媒体
２０２        補助記憶装置
２０３        メモリ装置
２０４        ＣＰＵ
２０５        インタフェース装置
２１１        要求受信部
２１２        返信候補判定部
２１３        返信対象選択部
２１４        評価環境構築部
２１５        自動評価部
２１６        応答返信部
２１７        フロントエンド部
２１８        認証部
２２１        機能分類情報記憶部
２２２        モジュール記憶部
２２３        認証情報記憶部
２３１        ソースコード記憶部
２３２        ソースコード編集部
２３３        ビルド部
２３４        テスト部
２３５        デバッグ部
２３６        継続的インテグレーション部
Ｂ            バス
Ｎ１          ネットワーク
【先行技術文献】
【特許文献】
【００７６】
【特許文献１】特開２００６−３５２８４５号公報
【図１】
0005842693.tif 000002
【図２】
0005842693.tif 000003
【図３】
0005842693.tif 000004
【図４】
0005842693.tif 000005
【図５】
0005842693.tif 000006
【図６】
0005842693.tif 000007
【図７】
0005842693.tif 000008