(57)【要約】【課題】プログラムのインストールによるメモリ不足の発生の可能性を低減させること。【解決手段】インストール可否判定装置は、機器におけるメモリの消費量の履歴を記憶する記憶部と、前記機器に対してインストールされるプログラムの取得要求を受信する受信部と、前記取得要求に係るプログラムのメモリの消費量と、前記履歴とに基づいて、前記プログラムのインストールの可否を判定する判定部とを有する。【選択図】図４
2014153907.tif 000002
【特許請求の範囲】
【請求項１】
機器におけるメモリの消費量の履歴を記憶する記憶部と、
前記機器に対してインストールされるプログラムの取得要求を受信する受信部と、
前記取得要求に係るプログラムのメモリの消費量と、前記履歴とに基づいて、前記プログラムのインストールの可否を判定する判定部とを有するインストール可否判定装置。
【請求項２】
前記判定部は、前記履歴に基づいて、前記機器におけるメモリの消費量の最大値を特定し、前記最大値と前記プログラムのメモリの消費量とに基づいて、前記プログラムのインストールの可否を判定する請求項１記載のインストール可否判定装置。
【請求項３】
前記判定部は、前記最大値と前記プログラムのメモリの消費量の最大値との総和と、閾値との比較に基づいて、前記プログラムのインストールの可否を判定する請求項２記載のインストール可否判定装置。
【請求項４】
前記判定部は、前記最大値と前記機器に対してインストールされる複数のプログラムのそれぞれのメモリの消費量の最大値との総和と、閾値との比較に基づいて、前記複数のプログラムのうち、一部のプログラムを返信対象から除外する請求項３記載のインストール可否判定装置。
【請求項５】
前記判定部によってインストールは不可能であると判定される場合に、前記プログラムを返信しない請求項１乃至４いずれか一項記載のインストール可否判定装置。
【請求項６】
前記判定部によってインストールは不可能であると判定される場合に、前記プログラムと警告情報とを返信する請求項１乃至４いずれか一項記載のインストール可否判定装置。
【請求項７】
前記プログラムのインストール先の機器の機種情報及び前記機器のソフトウェア構成情報に基づいて、前記機器のハードウェア構成及びソフトウェア構成を模倣する仮想環境を生成する生成部と、
前記仮想環境において前記プログラムのメモリの消費量を計測する計測部とを有する請求項１乃至６いずれか一項記載のインストール可否判定装置。
【請求項８】
コンピュータが、
機器におけるメモリの消費量の履歴を記憶部に記憶する記憶手順と、
前記機器に対してインストールされるプログラムの取得要求を受信する受信手順と、
前記取得要求に係るプログラムのメモリの消費量と、前記履歴とに基づいて、前記プログラムのインストールの可否を判定する判定手順とを実行するインストール可否判定方法。
【請求項９】
コンピュータに、
機器におけるメモリの消費量の履歴を記憶部に記憶する記憶手順と、
前記機器に対してインストールされるプログラムの取得要求を受信する受信手順と、
前記取得要求に係るプログラムのメモリの消費量と、前記履歴とに基づいて、前記プログラムのインストールの可否を判定する判定手順とを実行させるインストール可否判定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インストール可否判定装置、インストール可否判定方法、及びインストール可否判定プログラムに関する。
【背景技術】
【０００２】
従来、画像形成装置等の機器において、アプリケーションプラットフォームを備えているものが有る。アプリケーションプラットフォームのＡＰＩ（Application Program Interface）は公開され、機器の製造者や、ソフトウェアベンダ等によって、機器用のアプリケーションプログラムの開発及び販売等が行われている。ユーザは、例えば、自らの業務に適したアプリケーションプログラムを機器にインストールすることで、業務の効率化等を図ることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかしながら、インストールされるアプリケーションプログラムの増加に応じて、機器におけるメモリの消費量は増加する。一方で、機器のメモリ容量には限りが有る。したがって、或るアプリケーションプログラムのインストールの結果、機器においてメモリ不足が発生する可能性がある。
【０００４】
本発明は、上記の点に鑑みてなされたものであって、プログラムのインストールによるメモリ不足の発生の可能性を低減させることを目的とする。
【課題を解決するための手段】
【０００５】
そこで上記課題を解決するため、インストール可否判定装置は、機器におけるメモリの消費量の履歴を記憶する記憶部と、前記機器に対してインストールされるプログラムの取得要求を受信する受信部と、前記取得要求に係るプログラムのメモリの消費量と、前記履歴とに基づいて、前記プログラムのインストールの可否を判定する判定部とを有する。
【発明の効果】
【０００６】
プログラムのインストールによるメモリ不足の発生の可能性を低減させることができる。
【図面の簡単な説明】
【０００７】
【図１】本発明の実施の形態におけるプログラム提供システムの構成例を示す図である。
【図２】本発明の実施の形態におけるプログラム提供装置のハードウェア構成例を示す図である。
【図３】本実施の形態における機器の一例である複合機のソフトウェア構成例を示す図である。
【図４】本発明の実施の形態におけるプログラム提供装置の機能構成例を示す図である。
【図５】プログラム提供装置が実行する処理手順の一例を説明するためのフローチャートである。
【図６】ログ記憶部の構成例を示す図である。
【図７】プログラム提供装置が複数のコンピュータによって構成される例を示す図である。
【図８】統合開発環境の一例を示す図である。
【発明を実施するための形態】
【０００８】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態におけるプログラム提供システムの構成例を示す図である。図１のプログラム提供システム１おいて、機器メーカ環境Ｅ２は、開発環境Ｅ３、及びユーザ環境Ｅ１のそれぞれと、インターネット等のネットワークＮ１を介して接続されている。
【０００９】
機器メーカ環境Ｅ２は、例えば、ユーザ環境Ｅ１において利用される複合機１０ａ、プリンタ１０ｂ、及びプロジェクタ１０ｃ等の機器や、会議システム１０ｄ（例えば、ビデオ会議システム１０ｄ）等を製造及び販売する機器メーカが運営するシステム環境である。本実施の形態において、機器メーカ環境Ｅ２は、プログラム提供装置２０を含む。プログラム提供装置２０は、ユーザ環境Ｅ１における機器にインストール可能なアプリケーションプログラム（以下、単に、「アプリケーション」という。）のダウンロードサービスを、ネットワークＮ１を介して提供する。
【００１０】
ユーザ環境Ｅ１は、複合機１０ａ、プリンタ１０ｂ、プロジェクタ１０ｃ、及び会議システム１０ｄ等のユーザのシステム環境である。ユーザ環境Ｅ１において、複合機１０ａ、プリンタ１０ｂ、プロジェクタ１０ｃ、及び会議システム１０ｄ等は、ＬＡＮ（Local Area Network）等のネットワークを介して接続されている。
【００１１】
開発環境Ｅ３は、機器にインストールされるアプリケーションを開発する企業（ソフトウェアベンダ）におけるシステム環境である。開発環境Ｅ３では、機器に実装されているアプリケーションプラットフォームにおいて公開されているＡＰＩ（Application Program Interface）を利用して、アプリケーションの開発が行われている。開発環境Ｅ３は、一以上の開発者端末３０等を含む。開発者端末３０は、アプリケーションの開発者が利用するＰＣ（Personal Computer）等の情報処理装置である。
【００１２】
なお、本実施の形態においては、便宜上、開発者という用語を用いるが、開発者とは、実際に開発を行っているものでなくてもよい。窓口の担当者や管理者等、機器における障害の通知先となりうる者であってもよい。また、開発者は、個人でなくてもよい。通常、一つのアプリケーションの開発又は障害対応は、複数の個人又は組織によって行われる。したがって、開発者は、開発環境Ｅ３（ソフトウェアベンダ）全体であってもよいし、開発の委託先であってもよい。また、開発者は、必ずしも開発を業務としている組織でなくてもよい。機器に関する障害を受け付けるコールセンタ等であってもよい。
【００１３】
図２は、本発明の実施の形態におけるプログラム提供装置のハードウェア構成例を示す図である。図２のプログラム提供装置２０は、それぞれバスＢで相互に接続されているドライブ装置２００、補助記憶装置２０２、メモリ装置２０３、ＣＰＵ２０４、及びインタフェース装置２０５等を有する。
【００１４】
プログラム提供装置２０での処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体２０１によって提供される。プログラムを記憶した記録媒体２０１がドライブ装置２００にセットされると、プログラムが記録媒体２０１からドライブ装置２００を介して補助記憶装置２０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体２０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置２０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００１５】
メモリ装置２０３は、プログラムの起動指示があった場合に、補助記憶装置２０２からプログラムを読み出して格納する。ＣＰＵ２０４は、メモリ装置２０３に格納されたプログラムに従ってプログラム提供装置２０に係る機能を実行する。インタフェース装置２０５は、ネットワークに接続するためのインタフェースとして用いられる。
【００１６】
図３は、本実施の形態における機器の一例である複合機のソフトウェア構成例を示す図である。図３において、複合機１０ａは、標準アプリ１２１、ＳＤＫアプリ１２２、ＳＤＫプラットフォーム１２３、ＪＶＭ１２４、コントロールサービス１２５、及びＯＳ１２６等を有する。
【００１７】
標準アプリ１２１は、複合機１０ａに標準的に（出荷時に予め）実装されているアプリケーションプログラムの集合である。同図では、スキャンアプリ１２１１、印刷アプリ１２１２、コピーアプリ１２１３、及びＦＡＸアプリ１２１４が例示されている。スキャンアプリ１２１１は、スキャナ１２等を利用したスキャンジョブを実行する。印刷アプリ１２１２は、プリンタ１３等を利用した印刷ジョブを実行する。コピーアプリ１２１３は、スキャナ１２及びプリンタ１３等を利用したコピージョブを実行する。ＦＡＸアプリ１２１４は、モデム１４等を利用したＦＡＸの送信ジョブ又は受信ジョブを実行する。なお、スキャナ１２、プリンタ１３、及びモデム１４等は、複合機１０ａに固有のハードウェアの一例である。
【００１８】
コントロールサービス１２５は、各種のハードウェアリソース等を制御するための機能を、標準アプリ１２１やＳＤＫプラットフォーム１２３等の上位のプログラムに対して提供するソフトウェアモジュール群である。コントロールサービス１２５は、例えば、ネットワーク通信に関する機能、スキャナ１２の制御機能、プリンタ１３の制御機能、メモリの管理機能等を有する。
【００１９】
ＳＤＫアプリ１２２は、複合機１０ａの出荷後において、複合機１０ａの機能拡張を図るために追加的にインストールされるアプリケーションプログラム（又はプラグインともいう。）である。同図では、ＳＤＫアプリ１２２の一例として、アプリＡ１２２１及びアプリＢ１２２２等が例示されている。アプリＡ１２２１及びアプリＢ１２２２は、単なる例示であり、本実施の形態において、その機能については特定のものに限定されない。
【００２０】
ＳＤＫプラットフォーム１２３は、ＳＤＫアプリ１２２を開発するためのＡＰＩ（Application Program Interface）を備えると共に、ＳＤＫアプリ１２２の実行環境を提供するアプリケーションプラットフォームである。ＡＰＩの形態は、例えば、関数であってもよいし、オブジェクト指向のクラス及びクラスのメソッド等であってもよい。本実施の形態では、Ｊａｖａ（登録商標）のクラス群によって、当該ＡＰＩが提供されることとする。以下、ＳＤＫプラットフォーム１２３が提供するＡＰＩを、「ＳＤＫＡＰＩ」という。例えば、ＳＤＫプラットフォーム１２３は、スキャン機能に関するＳＤＫＡＰＩ、印刷機能に関するＳＤＫＡＰＩ、コピー機能に関するＳＤＫＡＰＩ等をＳＤＫアプリ１２２に提供する。ＳＤＫＡＰＩは公開されており、サードベンダ等によってもＳＤＫアプリ１２２は開発されうる。
【００２１】
ＪＶＭ１２４は、Ｊａｖａ（登録商標）ＶＭ（Virtual Machine）である。本実施の形態において、ＳＤＫアプリ１２２は、Ｊａｖａ（登録商標）のアプリケーションとして実装される。ＳＤＫアプリ１２２やＳＤＫプラットフォーム１２３等は、ＪＶＭ１２４が備える、Ｊａｖａ（登録商標）標準のクラス群によって提供されるＡＰＩを利用することもできる。
【００２２】
ＯＳ１２６は、いわゆるＯＳ（Operating System）である。複合機１０ａ上の各ソフトウェアは、ＯＳ１２６上においてプロセス又はスレッドとして動作する。
【００２３】
図４は、本発明の実施の形態におけるプログラム提供装置の機能構成例を示す図である。図４において、プログラム提供装置２０は、ログ受信部２１１、要求受信部２１２、判定部２１３、評価環境構築部２１４、自動評価部２１５、及び応答返信部２１６等を有する。これら各部は、プログラム提供装置２０にインストールされたプログラムが、ＣＰＵ２０４に実行させる処理により実現される。但し、各部は、複数のコンピュータに分散されてもよい。
【００２４】
プログラム提供装置２０は、また、ログ記憶部２２１及びモジュール記憶部２２２等を利用する。これら各記憶部は、例えば、補助記憶装置２０２、又はプログラム提供装置２０にネットワークを介して接続される記憶装置等を用いて実現可能である。
【００２５】
ログ受信部２１１は、複合機１０ａよりログ情報を受信する。ログ情報は、例えば、定期的に複合機１０ａより送信される。ログ情報には、ログ情報の生成又は送信時における複合機１０ａの状態を示す情報が含まれる。ログ受信部２１１は、受信されたログ情報をログ記憶部２２１に追加的に記憶する。したがって、ログ記憶部２２１には、ログ情報の履歴が記憶される。なお、図４においては、一台の複合機１０ａのみが示されているが、複数の複合機や、複合機以外の機器のログ情報が受信され、ログ記憶部２２１に記憶されてもよい。また、ログ情報の送信は、例えば、ユーザ環境Ｅ１において、複数の機器を管理するコンピュータによって代行されてもよい。例えば、当該コンピュータが、定期的に複数の機器よりログ情報を収集し、当該ログ情報をプログラム提供装置２０に転送してもよい。
【００２６】
要求受信部２１２は、複合機１０ａからのＳＤＫアプリ１２２のダウンロード要求を受信する。なお、本実施の形態では、ＳＤＫアプリ１２２のインストール先の複合機１０ａよりダウンロード要求が送信されるが、例えば、ＳＤＫアプリ１２２のダウンロード要求の送信は、ＰＣ（Personal Computer）等によって代行されてもよい。
【００２７】
判定部２１３は、ダウンロード要求に係るＳＤＫアプリ１２２について、インストール先（ダウンロード要求元）の複合機１０ａへのインストールの可否又は是非（以下、「可否」で統一する。）を判定する。より詳しくは、判定部２１３は、当該複合機１０ａに関してログ記憶部２２１に記憶されたログ情報の履歴に基づいて、複合機１０ａにおけるメモリ消費量の履歴を導出する。判定部２１３は、複合機１０ａにおけるメモリの消費量の履歴と、ダウンロード対象のＳＤＫアプリ１２２のメモリの消費量とに基づいて、インストールの可否を判定する。判定部２１３は、メモリ消費量の履歴に基づいて求まる、過去のメモリの消費量の瞬間的な最大値と、ダウンロード対象のＳＤＫアプリ１２２メモリの消費量の最大値との総和が、上限値以下であれば、インストールは可能であると判定する。なお、本実施の形態において、インストールの可否の判定は、ダウンロードに応じたＳＤＫアプリ１２２の返信の可否（又は是非）の判定と等価である。
【００２８】
評価環境構築部２１４は、ダウンロード対象のＳＤＫアプリ１２２のメモリ消費量を評価するための環境（以下、「評価環境２５０」という。）を構築（生成）する。評価環境２５０は、ダウンロード要求元の複合機１０ａと同様又はほぼ同様のハードウェア構成及びソフトウェア構成等を模倣又は有する仮想環境である。仮想環境という表現は、実際の複合機１０ａを利用して構築される環境ではなく、仮想的（ソフトウェア的）に複合機１０ａと同様のハードウェア構成及びソフトウェア構成が再現される環境であることに基づく。
【００２９】
図４に示されるように、評価環境２５０は、ハードウェア模倣部２５１及びプラットフォーム模倣部２５２等を含む。ハードウェア模倣部２５１は、複合機１０ａのハードウェアを模倣する。ハードウェア模倣部２５１は、複合機１０ａのハードウェアを表面的に模倣可能なものであってもよい。すなわち、ハードウェア模倣部２５１は、複合機１０ａのハードウェアと同様のインタフェースを提供し、当該インタフェースの呼び出しに応じた動作は、ダミーであってもよい。プラットフォーム模倣部２５２は、複合機１０ａが有するアプリケーションプラットフォームであるＳＤＫプラットフォーム１２３と同一のプログラム群によって実現されてもよいし、ＳＤＫプラットフォーム１２３と同一のプログラム群が、ハードウェア模倣部２５１上での動作用に改変されたプログラム群によって実現されてもよい。すなわち、プラットフォーム模倣部２５２は、表面上の振る舞いのみならず、内部ロジックまでに関しても、実際のＳＤＫプラットフォーム１２３を模倣してもよい。
【００３０】
なお、プログラム提供装置２０は、例えば、複合機１０ａの機種ごとに、コンピュータをハードウェア模倣部２５１として機能させるプログラム（以下、「ハードウェア模倣プログラム」という。）を有する。または、当該プログラムは一つであり、機種に応じた違いは、当該プログラムに対する設定情報とされてもよい。また、プログラム提供装置２０は、例えば、ＳＤＫプラットフォーム１２３のバージョンごとに、コンピュータを当該バージョンに対応するプラットフォーム模倣部２５２として機能させるプログラム（以下、「プラットフォーム模倣プログラム」という。）を有する。プラットフォーム模倣部２５２は、ダウンロード要求元の複合機１０ａ機種に対応するハードウェア模倣プログラムと、当該複合機１０ａのＳＤＫプラットフォーム１２３のバージョンに対応するプラットフォーム模倣プログラムとを選択し、これらのプログラムを起動させることにより、評価環境２５０を生成する。ハードウェア模倣プログラム及びプラットフォーム模倣プログラムは、一般的に、エミュレータ又はシミュレータと呼ばれるソフトウェアによって実現されてもよい。
【００３１】
評価環境構築部２１４は、更に、ダウンロード要求元の複合機１０ａの機種に対応するハードウェア模倣部２５１、及び当該複合機１０ａが有するＳＤＫプラットフォーム１２３のバージョンに対応するプラットフォーム模倣部２５２等を組み合わせた評価環境２５０に対し、ＳＤＫアプリ１２２のインストールを実行する。評価環境２５０にインストールされるＳＤＫアプリ１２２は、ダウンロード要求元の複合機１０ａに既にインストールされているＳＤＫアプリ１２２と、ダウンロード要求に係るＳＤＫアプリ１２２とである。その結果、評価環境２５０におけるソフトウェア構成は、ダウンロード対象のＳＤＫアプリ１２２がインストールされた後の複合機１０ａの状態により近いものとなる。
【００３２】
なお、評価環境２５０が構築される場所（ハードウェア模倣プログラム及びプラットフォーム模倣プログラムが起動される場所）は、プログラム提供装置２０でなくてもよい。プログラム提供装置２０にネットワークを介して接続されるコンピュータであってもよい。または、プログラム提供装置２０若しくは当該コンピュータにおいて仮想マシンを動作させ、そのうちの一つの仮想マシン上で、評価環境２５０が構築されてもよい。
【００３３】
自動評価部２１５は、評価環境２５０にインストールされた各ＳＤＫアプリ１２２を実行させる。自動評価部２１５、ダウンロード対象のＳＤＫアプリ１２２のメモリ消費量の履歴を計測（又は監視）し、計測結果を、例えば、メモリ装置２０３に記憶する。判定部２１３は、当該履歴に基づいて、ダウンロード対象のＳＤＫアプリ１２２のメモリ消費量の最大値を特定する。
【００３４】
応答返信部２１６は、判定部２１３によって、ダウンロード対象のＳＤＫアプリ１２２のインストールが可能であると判定された場合に、当該ＳＤＫアプリ１２２のプログラムモジュールを、モジュール記憶部２２２より取得し、ダウンロード要求元に返信する。
【００３５】
モジュール記憶部２２２は、アプリＩＤに関連付けて、各ＳＤＫアプリ１２２のプログラムモジュールを記憶する。
【００３６】
以下、プログラム提供装置２０が実行する処理手順について説明する。図５は、プログラム提供装置が実行する処理手順の一例を説明するためのフローチャートである。
【００３７】
ステップＳ１０１において、要求受信部２１２は、複合機１０ａより送信されたダウンロード要求を受信する。なお、図５の説明において、「複合機１０ａ」というとき、ダウンロード要求元の特定の複合機１０ａを意味する。
【００３８】
ダウンロード要求は、例えば、複合機１０ａの操作パネルに表示される、ダウンロード可能なＳＤＫアプリ１２２の一覧が選択肢として表示されている画面における１以上の選択肢の選択操作に応じて送信される。すなわち、複数のＳＤＫアプリ１２２がダウンロード対象とされてもよい。ダウンロード要求には、複合機１０ａの機体（又は個体）を識別する識別情報（以下、「機器ＩＤ」という。）と、選択されたＳＤＫアプリ１２２の識別情報（以下、「アプリＩＤ」という。）及びバージョン情報とが含まれる。ダウンロード要求には、更に、複合機１０ａのハードウェアの構成情報及びソフトウェアの構成情報等が含まれる。複合機１０ａのハードウェアの構成情報は、例えば、複合機１０ａの機種を示す機種情報である。複合機１０ａのソフトウェアの構成情報は、例えば、複合機１０ａが有するＳＤＫプラットフォーム１２３のバージョン情報である。複合機１０ａにインストールされているＳＤＫアプリ１２２のアプリＩＤ及びバージョン情報が、ダウンロード要求に含まれてもよい。
【００３９】
続いて、判定部２１３は、ダウンロード要求に指定されている機器ＩＤに対応付けて記憶されているログ情報を、ログ記憶部２２１より取得する（Ｓ１０２）。
【００４０】
図６は、ログ記憶部の構成例を示す図である。図６において、ログ記憶部２２１は、複合機１０ａより、定期的等、複数のタイミングで受信されたログ情報の履歴を記憶する。ログ情報は、例えば、日時、機器ＩＤ、メモリ消費量、及び上限値等の項目を有する。
【００４１】
日時は、ログ情報が複合機１０ａにおいて生成又は送信された日時である。または、日時は、ログ受信部２１１によってログ情報が受信された日時、ログ記憶部２２１にログ情報が記憶された日時であってもよい。機器ＩＤは、ログ情報の送信元の複合機１０ａの機器ＩＤである。メモリ消費量は、機器ＩＤに係る複合機１０ａにインストールされているＳＤＫアプリ１２２ごと、及びＳＤＫプラットフォーム１２３の、ログ情報の生成時のメモリ消費量である。ここでいうメモリ消費量は、例えば、ヒープ領域の消費量である。なお、本実施の形態において、ＳＤＫアプリ１２２及びＳＤＫプラットフォーム１２３は、アプリＩＤ及びバージョン情報の組み合わせで一意に特定される。したがって、「ＳＤＫアプリ１２２ごと、及びＳＤＫプラットフォーム１２３」とは、ＳＤＫアプリ１２２のアプリＩＤ及びバージョン情報ごと、並びにプラットフォーム１２３のアプリＩＤ及びバージョン情報によって区別される単位を意味する。
【００４２】
上限値は、機器ＩＤに係る複合機１０ａにおけるＳＤＫアプリ１２２及びＳＤＫプラットフォーム１２３によるメモリ消費量の上限値（メモリ消費量の上限を示す閾値）である。当該上限値は、例えば、複合機１０ａに搭載されているメモリの容量又はヒープ領域の容量等に基づいて自動的に算出されてもよいし、当該メモリの容量等に基づいて、複合機１０ａに対して設定されてもよい。
【００４３】
なお、ログ記憶部２２１には、複数の機器のログ情報が混在した状態で受信順に記憶されてもよいし、機器ＩＤ別に分別されて記憶されてもよい。ログ情報を送信する機器の台数が膨大である場合に、ステップＳ１０２のような特定の機器のログ情報を取得処理の処理負荷を考慮すると、ログ情報は、機器ＩＤ別に分別されて記憶されているのが望ましい。
【００４４】
また、ステップＳ１０２において取得されるログ情報は、複合機１０ａの過去の全てのログ情報でもよいし、現時点から遡って所定期間分のログ情報でもよい。
【００４５】
続いて、判定部２１３は、取得されたログ情報（以下、「対象ログ情報」という。）の一覧（履歴）に基づいて、複合機１０ａにおける過去のメモリ消費量の最大値（瞬間的な最大値）を特定する（Ｓ１０３）。複合機１０ａにおけるメモリ消費量は、ログ情報に含まれている、各ＳＤＫアプリ１２２のメモリ消費量と、ＳＤＫプラットフォーム１２３のメモリ消費量との総和である。また、過去の最大値は、対象ログ情報ごとに算出されるメモリ消費量の総和の中の最大値を求めることによって特定される。以下、当該最大値を、「最大値Ａ」という。
【００４６】
続いて、評価環境構築部２１４は、評価環境２５０を生成する（Ｓ１０４）。具体的には、複合機１０ａの機種及びＳＤＫプラットフォーム１２３のバージョン情報に対応するハードウェア模倣部２５１とプラットフォーム模倣部２５２とを含む仮想環境が、評価環境２５０として生成される。複合機１０ａの機種は、ダウンロード要求に含まれている機種情報に基づいて特定される。複合機１０ａのＳＤＫプラットフォーム１２３のバージョン情報は、ダウンロード要求に含まれているバージョン情報、又は最新のログ情報に含まれているバージョン情報に基づいて特定可能である。なお、ＳＤＫプラットフォーム１２３のバージョン情報がログ情報に含まれる場合、ダウンロード要求には、当該バージョン情報は含まれなくてもよい。
【００４７】
続いて、評価環境構築部２１４は、複合機１０ａにインストールされているＳＤＫアプリ１２２及びダウンロード対象のＳＤＫアプリ１２２のそれぞれのアプリＩＤに対応付けられてモジュール記憶部２２２に記憶されているプログラムモジュールを取得し、評価環境２５０にインストールする（Ｓ１０５）。なお、複合機１０ａにインストールされているＳＤＫアプリ１２２のアプリＩＤは、最新のログ情報に基づいて特定可能である。または、当該アプリＩＤが、ダウンロード要求に含まれている場合、ダウンロード要求に基づいて、複合機１０ａにインストールされているＳＤＫアプリ１２２のアプリＩＤが特定されてもよい。ダウンロード対象のＳＤＫアプリ１２２のアプリＩＤは、ダウンロード要求に含まれている。
【００４８】
このように、評価環境２５０は、ダウンロード要求元の複合機１０ａのハードウェア構成及びソフトウェア構成を擬似的に再現するハードウェア構成及びソフトウェア構成を有するように生成される。したがって、ＳＤＫアプリ１２２のインストール先の複合機１０ａにより近い状態で、ダウンロード対象のＳＤＫアプリ１２２のメモリの消費量を計測することができる。
【００４９】
続いて、自動評価部２１５は、評価環境２５０において、ダウンロード対象のＳＤＫアプリ１２２を自動実行させる（Ｓ１０６）。この際、評価環境２５０にインストールされている他のＳＤＫアプリ１２２も並行して実行されてもよい。他のＳＤＫアプリ１２２が実行されない場合、ステップＳ１０５において、当該他のＳＤＫアプリ１２２のインストールは省略されてもよい。また、複数のＳＤＫアプリ１２２がダウンロード対象とされている場合、自動実行は、１つずつ直列的に実行されてもよいし、複数について並列的に実行されてもよい。
【００５０】
自動実行中において、自動評価部２１５は、ダウンロード対象のＳＤＫアプリ１２２のメモリ消費量を定期的に計測する。計測値の履歴は、当該ＳＤＫアプリ１２２のアプリＩＤに関連付けられて、例えば、メモリ装置２０３に記憶される。すなわち、複数のＳＤＫアプリ１２２がダウンロード対象とされている場合、メモリの消費量は、ＳＤＫアプリ１２２ごとに計測され、ＳＤＫアプリ１２２ごとに記憶される。
【００５１】
なお、自動実行されるＳＤＫアプリ１２２に対して入力パラメータ（設定情報等）が必要される場合、入力パラメータは、予めテストシナリオとして、ＳＤＫアプリ１２２ごとに、例えば、補助記憶装置２０２等に記憶されていてもよい。バッチ的に動作するＳＤＫアプリ１２２であれば、テストシナリオは最初に与えられるパラメータ群であればよい。対話的に動作するＳＤＫアプリ１２２であれば、テストシナリオは、ユーザによって行われる操作指示を示す情報であればよい。
【００５２】
自動評価部２１５による自動実行が終了すると、判定部２１３は、自動評価部２１５によってメモリ装置２０３に記憶された、ダウンロード対象のＳＤＫアプリ１２２のメモリ消費量の履歴に基づいて、メモリ消費量の最大値を特定する（Ｓ１０７）。なお、複数のＳＤＫアプリ１２２がダウンロード対象とされている場合、メモリ消費量の最大値は、ＳＤＫアプリ１２２ごとに特定される。以下、ダウンロード対象のＳＤＫアプリ１２２のメモリ消費量の最大値の総和を、「最大値Ｂ」という。
【００５３】
続いて、判定部２１３は、最大値Ａと最大値Ｂとの和と、上限値とを比較して、インストールの可否を判定する（Ｓ１０８）。上限値は、複合機１０ａの最新のログ情報に含まれている上限値である。但し、機種ごとに上限値が定まっている場合、予め、プログラム提供装置２０において、機種ごとの上限値が記憶されていてもよい。この場合、ログ情報には、上限値は含まれなくてもよい。
【００５４】
最大値Ａと最大値Ｂとの和が上限値以下である場合（Ｓ１０８でＹｅｓ）、応答返信部２１６は、ダウンロード要求に指定されているアプリＩＤに係るＳＤＫアプリ１２２のプログラムモジュールを、モジュール記憶部２２２より取得する（Ｓ１０９）。続いて、応答返信部２１６は、取得されたプログラムモジュールを含む応答を、複合機１０ａに返信する（Ｓ１１０）。
【００５５】
一方、最大値Ａと最大値Ｂとの和が上限値以下である場合（Ｓ１０８でＮｏ）、応答返信部２１６は、エラーを示す応答を、複合機１０ａに返信する（Ｓ１１１）。この場合、複合機１０ａにおけるメモリ不足の発生が予測されるからである。
【００５６】
なお、上記の例では、複数のＳＤＫアプリ１２２がインストール対象とされている場合、複数の全部が返信されるか、複数の全部が返信されないかといった結果となる。しかしながら、それぞれのＳＤＫアプリ１２２単独では、最大値Ａと最大値Ｂとの和が、上限値以下であるという条件を満たす可能性がある。そこで、例えば、ダウンロード要求において、各ＳＤＫアプリ１２２に対して優先度が指定されてもよい。判定部２１３は、最大値Ａと最大値Ｂとの和が、上限値以下であるという条件が満たされない場合、当該条件が満たされるまで、優先度の低いＳＤＫアプリ１２２を、ダウンロードの対象から除去する。当該条件が満たされた時点で、ダウンロード対象に含まれているＳＤＫアプリ１２２について、ステップＳ１０９及びＳ１１０が実行されてもよい。そうすることにより、一部のＳＤＫアプリ１２２について、ダウンロードを成功させることができる。なお、優先度は、例えば、アプリＩＤの若い順等、所定の規則に基づいて、判定部２１３が自動的に判定してもよい。
【００５７】
上述したように、本実施の形態によれば、インストール先の複合機１０ａにおけるメモリ消費量の履歴と、ダウンロード対象（インストール対象）のＳＤＫアプリ１２２のメモリ消費量とに基づいて、インストールの可否が判定される。判定の結果、ダウンロード対象のＳＤＫアプリ１２２がインストールされた場合に、メモリ不足の発生が予測される場合、ダウンロードは行われない。したがって、ＳＤＫアプリ１２２のインストールによるメモリ不足の発生の可能性を低減させることができる。
【００５８】
なお、メモリ不足の発生が予測される場合に、ダウンロードを中止するのではなく、メモリ不足の発生の可能性を示す警告情報が、ダウンロード対象のＳＤＫアプリ１２２と共に返信されるようにしてもよい。複合機１０ａは、当該ＳＤＫアプリ１２２のインストール前に当該警告情報を操作パネル等に表示し、インストールするか否かの決断は、ユーザに委ねてもよい。ユーザは、既にインストールされているＳＤＫアプリ１２２をアンインストールしたり、並行して起動するＳＤＫアプリ１２２の数を制限したりすることで対処することも可能だからである。
【００５９】
また、上記では、評価環境２５０を用いてメモリ消費量を計測する例を示したが、各ＳＤＫアプリ１２２のメモリ消費量の予測値又は実測値が、予めプログラム提供装置２０に記憶され、当該予測値又は実測値が、最大値Ｂの代わりに用いられてもよい。但し、メモリの消費量は、ＳＤＫアプリ１２２が動作するＳＤＫプラットフォーム１２３のバージョン等に応じて異なりうる。また、ＳＤＫアプリ１２２のバージョン数及びＳＤＫプラットフォーム１２３のバージョン数が増加すればするほど、全ての組み合わせに関して予めメモリ消費量を実際に計測しておくのは困難となる。本実施の形態のように、複合機１０ａのハードウェア構成及びソフトウェア構成を模倣した評価環境２５０において、ダウンロード対象のＳＤＫアプリ１２２のメモリ消費量が計測されることで、全ての組み合わせに関して予めメモリ消費量を計測しておく手間を省くことができる。
【００６０】
なお、本実施の形態では、機器の一例として複合機１０ａを用いて説明したが、プリンタ１０ｂ等の他の画像形成装置や、プロジェクタ１０ｃ等の他の機器に関して、本実施の形態が適用されてもよい。また、デジタルカメラ等、非図示の機器に関して本実施の形態が適用されてもよい。更に、会議システム１０ｄ等、情報処理システムに関して、本実施の形態が適用されてもよい。
【００６１】
また、プログラム提供装置２０は、一台のコンピュータによって構成されてもよいし、ネットワーク上において分散された複数のコンピュータによって構成されてもよい。また、プログラム提供装置２０によるサービスは、クラウドサービスとして提供されてもよい。
【００６２】
例えば、図７は、プログラム提供装置が複数のコンピュータによって構成される例を示す図である。図７では、プログラム提供装置２０が、複数のコンピュータに分散されて構成されている例が示されている。なお、図７は、プログラム提供装置２０が、４台以上のコンピュータによって構成されている例が示されているが、４台未満のコンピュータによって構成されてもよい。
【００６３】
また、プログラム提供装置２０が有する機能は、統合開発環境の一部を構成してもよい。図８は、統合開発環境の一例を示す図である。図８中、図４と同一部分には同一符号を付し、その説明は省略する。また、図８において、ログ受信部２１１、要求受信部２１２、判定部２１３、応答返信部２１６、及びログ記憶部２２１は、便宜上、省略されている。
【００６４】
図８において、統合開発環境４０は、更に、フロントエンド部２１７、認証部２１８、認証情報記憶部２２３、ソースコード記憶部２３１、ソースコード編集部２３２、ビルド部２３３、テスト部２３４、デバッグ部２３５、及び継続的インテグレーション部２３６等を含む。
【００６５】
フロントエンド部２１７は、統合開発環境４０のＧＵＩ（Graphical User Interface）を提供する。例えば、当該ＧＵＩは、ＨＴＭＬ（HyperText Markup Language）によって記述されたＨＴＭＬデータによって構成される。但し、ＨＴＭＬデータ以外のデータ形式によって、当該ＧＵＩが構成されてもよい。
【００６６】
認証部２１８は、統合開発環境４０の利用を要求するユーザの認証を実行する。具体的には、本実施の形態では、アプリケーションの開発者が、統合開発環境４０のユーザとなる。したがって、認証部２１８は、開発者端末３０において入力された認証情報（例えば、ユーザ名及びパスワード）を、認証情報記憶部２２３に記憶されている認証情報と照合することにより、開発者の認証を実行する。認証情報記憶部２２３には、統合開発環境４０の利用契約を結んでいる各ユーザ（開発者）の認証情報が記憶されている。
【００６７】
ソースコード記憶部２３１は、アプリケーションのソースコードを記憶する。ソースコード編集部２３２は、開発者端末３０に表示されるソースコード編集画面を介して入力される指示に応じ、編集対象とされているソースコードを編集する。ビルド部２３３は、ソースコード記憶部２３１に記憶されているソースコードについてビルド（コンパイル及びリンク等）を実行する。テスト部２３４は、ビルド後のアプリケーションに関するテストの実施の支援を行う。デバッグ部２３５は、ビルド後のアプリケーションに関するデバッグの支援を行う。継続的インテグレーション部２３６は、例えば、ソースコード編集部２３２によって編集された後、ビルドされていないソースコードに関して、自動的にビルド及びテスト等を実行し、ビルド後のアプリケーションのプログラムモジュールをモジュール記憶部２２２にアップロードする。
【００６８】
プログラム提供装置２０の機能が、統合開発環境４０の一部とされることにより、開発者に対してより利便性の高いサービスを提供することができる。すなわち、開発者は、同一の仮想空間内において、評価環境２５０の構築、評価環境２５０における自動評価の実行、自動評価の実行結果を受けたアプリケーションのソースコードの編集、編集後のソースコードのビルド、ビルド後のテスト及びデバッグ等を実行することができる。
【００６９】
なお、図８に示される統合開発環境４０は、プログラム提供装置２０と同じコンピュータ又はコンピュータ群によって実現されてもよいし、プログラム提供装置２０に対して更なるコンピュータ又はコンピュータ群が接続されることにより実現されてもよい。
【００７０】
なお、本実施の形態において、プログラム提供装置２０は、インストール可否判定装置の一例である。ログ記憶部２２１は、記憶部の一例である。要求受信部２１２は、受信部の一例である。評価環境構築部２１４は、生成部の一例である。自動評価部２１５は、計測部の一例である。
【００７１】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００７２】
１            プログラム提供システム
１０ａ        複合機
１０ｂ        プリンタ
１０ｃ        プロジェクタ
１０ｄ        会議システム
２０          プログラム提供装置
３０          開発者端末
４０          統合開発環境
１２１        標準アプリ
１２２        ＳＤＫアプリ
１２３        ＳＤＫプラットフォーム
１２４        ＪＶＭ
１２５        コントロールサービス
１２６        ＯＳ
２００        ドライブ装置
２０１        記録媒体
２０２        補助記憶装置
２０３        メモリ装置
２０４        ＣＰＵ
２０５        インタフェース装置
２１１        ログ受信部
２１２        要求受信部
２１３        判定部
２１４        評価環境構築部
２１５        自動評価部
２１６        応答返信部
２１７        フロントエンド部
２１８        認証部
２２１        ログ記憶部
２２２        モジュール記憶部
２２３        認証情報記憶部
２３１        ソースコード記憶部
２３２        ソースコード編集部
２３３        ビルド部
２３４        テスト部
２３５        デバッグ部
２３６        継続的インテグレーション部
２５０        評価環境
２５１        ハードウェア模倣部
２５２        プラットフォーム模倣部
１２１１      スキャンアプリ
１２１２      印刷アプリ
１２１３      コピーアプリ
１２１４      ＦＡＸアプリ
１２２１      アプリＡ
１２２２      アプリＢ
Ｂ            バス
Ｎ１          ネットワーク
【先行技術文献】
【特許文献】
【００７３】
【特許文献１】特願２００６−５４０７９４号公報
【図１】
2014153907.tif 000003
【図２】
2014153907.tif 000004
【図３】
2014153907.tif 000005
【図４】
2014153907.tif 000006
【図５】
2014153907.tif 000007
【図６】
2014153907.tif 000008
【図７】
2014153907.tif 000009
【図８】
2014153907.tif 000010