(57)【要約】【課題】ユーザからＰａａＳシステムで起動していないアプリ宛の要求メッセージを受信すると、そのアプリ宛の要求メッセージを取りこぼす場合がある。【解決手段】ユーザから第１ソフトウェア宛の要求メッセージを受信したとき、第２メモリに前記第１ソフトウェア宛の要求メッセージを記憶し、該第１ソフトウェアの運用状況が停止中の場合、前記第１ソフトウェアに対応づけられた第１契約者のソフトウェアのうち運用状況が起動中のソフトウェアのリソースと前記第１ソフトウェアのリソースとを加算した合計量が、前記第１契約者のリソース上限量を超えない場合、前記第１ソフトウェアの起動を前記システムに要求し、該第１ソフトウェアの起動後、前記第２メモリに記憶された要求メッセージを前記システムに転送するとともに前記第１ソフトウェアの運用状況を起動中に変更する、処理をコンピュータで実行させるソフトウェア制御プログラムである。【選択図】図１
2018133046.tif 000002
【特許請求の範囲】
【請求項１】
システムで起動するソフトウェア及び該ソフトウェアの前記システムでの運用状況を契約者ごとに第１メモリに記憶し、
最後の要求メッセージを処理した時刻から所定時間経過したソフトウェアの停止を前記システムに要求するとともに前記所定時間経過したソフトウェアの運用状況を停止中に変更し、
ユーザから第１ソフトウェア宛の要求メッセージを受信したとき、第２メモリに前記第１ソフトウェア宛の要求メッセージを記憶する第１処理を行い、
該第１ソフトウェアの運用状況が起動中の場合、前記第２メモリに記憶された要求メッセージを前記システムに転送する第２処理を行い、
該第１ソフトウェアの運用状況が停止中の場合、前記第１ソフトウェアに対応づけられた第１契約者のソフトウェアのうち運用状況が起動中のソフトウェアのリソースと前記第１ソフトウェアのリソースとを加算した合計量が、前記第１契約者のリソース上限量を超えない場合、前記第１ソフトウェアの起動を前記システムに要求し、該第１ソフトウェアの起動後、前記第２メモリに記憶された要求メッセージを前記システムに転送するとともに前記第１ソフトウェアの運用状況を起動中に変更する第３処理を行う、
処理をコンピュータで実行させるソフトウェア制御プログラム。
【請求項２】
システムで起動するソフトウェア及び該ソフトウェアの前記システムでの運用状況を契約者ごとに第１メモリに記憶し、
運用状況が正規ソフトウェアとして起動中のソフトウェアのうち最後の要求メッセージを処理した時刻から所定時間経過したソフトウェアのダミーソフトウェアとしての起動を前記システムに要求するとともに前記所定時間経過したソフトウェアの運用状況をダミーソフトウェアとして起動中に変更し、
ユーザから第１ソフトウェア宛の要求メッセージを受信したとき、第２メモリに前記第１ソフトウェア宛の要求メッセージを記憶する第１処理を行い、
該第１ソフトウェアの運用状況が正規ソフトウェアとして起動中の場合、前記第２メモリに記憶された要求メッセージを前記システムに転送する第２処理を行い、
該第１ソフトウェアの運用状況がダミーソフトウェアとして起動中の場合、第２メモリに前記第１ソフトウェア宛の要求メッセージを記憶し、前記第１ソフトウェアに対応づけられた第１契約者のソフトウェアのうち運用状況が起動中のソフトウェアのリソースと前記第１ソフトウェアのリソースとを加算した合計量が、前記第１契約者のリソース上限量を超えない場合、前記第１ソフトウェアの正規ソフトウェアとしての起動を前記システムに要求し、該第１ソフトウェアが正規ソフトウェアとして起動後、前記第２メモリに記憶された要求メッセージを前記システムに転送するとともに前記第１ソフトウェアの運用状況を正規ソフトウェアとして起動中に変更する第３処理を行う、
処理をコンピュータで実行させるソフトウェア制御プログラム。
【請求項３】
ユーザから第１ソフトウェア宛の要求メッセージを受信したとき、該第１ソフトウェアが前記第１メモリに記憶されていない場合、前記第１処理、前記第２処理、前記第３処理を行うことなく、前記システムへ該第１ソフトウェア宛の要求メッセージを転送し、該第１ソフトウェアが前記第１メモリに記憶されている場合、前記第１処理、前記第２処理、前記第３処理を行う請求項１又は２に記載のソフトウェア制御プログラム。
【請求項４】
前記第２メモリは、前記第１ソフトウェア専用のメモリである請求項１から３のいずれか１項に記載のソフトウェア制御プログラム。
【請求項５】
前記最後の要求メッセージを処理した時刻は、該最後の要求メッセージをユーザから受信した時刻又は前記第２メモリに記憶された該最後の要求メッセージを前記システムに転送した時刻である請求項１から４のいずれか１項に記載のソフトウェア制御プログラム。
【請求項６】
メモリと、
前記メモリにアクセス可能なプロセッサと、を備え、
前記プロセッサは、
システムで起動するソフトウェア及び該ソフトウェアの前記システムでの運用状況を契約者ごとに第１メモリに記憶し、
最後の要求メッセージを処理した時刻から所定時間経過したソフトウェアの停止を前記システムに要求するとともに前記所定時間経過したソフトウェアの運用状況を停止中に変更し、
ユーザから第１ソフトウェア宛の要求メッセージを受信したとき、第２メモリに前記第１ソフトウェア宛の要求メッセージを記憶する第１処理を行い、
該第１ソフトウェアの運用状況が起動中の場合、前記第２メモリに記憶された要求メッセージを前記システムに転送する第２処理を行い、
該第１ソフトウェアの運用状況が停止中の場合、前記第１ソフトウェアに対応づけられた第１契約者のソフトウェアのうち運用状況が起動中のソフトウェアのリソースと前記第１ソフトウェアのリソースとを加算した合計量が、前記第１契約者のリソース上限量を超えない場合、前記第１ソフトウェアの起動を前記システムに要求し、該第１ソフトウェアの起動後、前記第２メモリに記憶された要求メッセージを前記システムに転送するとともに前記第１ソフトウェアの運用状況を起動中に変更する第３処理を行う、
処理を実行するソフトウェア制御装置。
【請求項７】
メモリと、
前記メモリにアクセス可能なプロセッサと、を備え、
前記プロセッサは、
システムで起動するソフトウェア及び該ソフトウェアの前記システムでの運用状況を契約者ごとに第１メモリに記憶し、
運用状況が正規ソフトウェアとして起動中のソフトウェアのうち最後の要求メッセージを処理した時刻から所定時間経過したソフトウェアのダミーソフトウェアとしての起動を前記システムに要求するとともに前記所定時間経過したソフトウェアの運用状況をダミーソフトウェアとして起動中に変更し、
ユーザから第１ソフトウェア宛の要求メッセージを受信したとき、第２メモリに前記第１ソフトウェア宛の要求メッセージを記憶する第１処理を行い、
該第１ソフトウェアの運用状況が正規ソフトウェアとして起動中の場合、前記第２メモリに記憶された要求メッセージを前記システムに転送する第２処理を行い、
該第１ソフトウェアの運用状況がダミーソフトウェアとして起動中の場合、第２メモリに前記第１ソフトウェア宛の要求メッセージを記憶し、前記第１ソフトウェアに対応づけられた第１契約者のソフトウェアのうち運用状況が起動中のソフトウェアのリソースと前記第１ソフトウェアのリソースとを加算した合計量が、前記第１契約者のリソース上限量を超えない場合、前記第１ソフトウェアの正規ソフトウェアとしての起動を前記システムに要求し、該第１ソフトウェアが正規ソフトウェアとして起動後、前記第２メモリに記憶された要求メッセージを前記システムに転送するとともに前記第１ソフトウェアの運用状況を正規ソフトウェアとして起動中に変更する第３処理を行う、処理を実行するソフトウェア制御装置。
【請求項８】
システムで起動するソフトウェア及び該ソフトウェアの前記システムでの運用状況を契約者ごとに第１メモリに記憶し、
最後の要求メッセージを処理した時刻から所定時間経過したソフトウェアの停止を前記システムに要求するとともに前記所定時間経過したソフトウェアの運用状況を停止中に変更し、
ユーザから第１ソフトウェア宛の要求メッセージを受信したとき、第２メモリに前記第１ソフトウェア宛の要求メッセージを記憶する第１処理を行い、
該第１ソフトウェアの運用状況が起動中の場合、前記第２メモリに記憶された要求メッセージを前記システムに転送する第２処理を行い、
該第１ソフトウェアの運用状況が停止中の場合、前記第１ソフトウェアに対応づけられた第１契約者のソフトウェアのうち運用状況が起動中のソフトウェアのリソースと前記第１ソフトウェアのリソースとを加算した合計量が、前記第１契約者のリソース上限量を超えない場合、前記第１ソフトウェアの起動を前記システムに要求し、該第１ソフトウェアの起動後、前記第２メモリに記憶された要求メッセージを前記システムに転送するとともに前記第１ソフトウェアの運用状況を起動中に変更する第３処理を行う、
処理をコンピュータで実行させるソフトウェア制御方法。
【請求項９】
システムで起動するソフトウェア及び該ソフトウェアの前記システムでの運用状況を契約者ごとに第１メモリに記憶し、
運用状況が正規ソフトウェアとして起動中のソフトウェアのうち最後の要求メッセージを処理した時刻から所定時間経過したソフトウェアのダミーソフトウェアとしての起動を前記システムに要求するとともに前記所定時間経過したソフトウェアの運用状況をダミーソフトウェアとして起動中に変更し、
ユーザから第１ソフトウェア宛の要求メッセージを受信したとき、第２メモリに前記第１ソフトウェア宛の要求メッセージを記憶する第１処理を行い、
該第１ソフトウェアの運用状況が正規ソフトウェアとして起動中の場合、前記第２メモリに記憶された要求メッセージを前記システムに転送する第２処理を行い、
該第１ソフトウェアの運用状況がダミーソフトウェアとして起動中の場合、第２メモリに前記第１ソフトウェア宛の要求メッセージを記憶し、前記第１ソフトウェアに対応づけられた第１契約者のソフトウェアのうち運用状況が起動中のソフトウェアのリソースと前記第１ソフトウェアのリソースとを加算した合計量が、前記第１契約者のリソース上限量を超えない場合、前記第１ソフトウェアの正規ソフトウェアとしての起動を前記システムに要求し、該第１ソフトウェアが正規ソフトウェアとして起動後、前記第２メモリに記憶された要求メッセージを前記システムに転送するとともに前記第１ソフトウェアの運用状況を正規ソフトウェアとして起動中に変更する第３処理を行う、処理をコンピュータで実行させるソフトウェア制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア制御プログラム、ソフトウェア制御装置及びソフトウェア制御方法に関する。
【背景技術】
【０００２】
従来、ＰａａＳ（Platform as a Service）システムを開発者（以下、契約者ともいう）が利用する場合、予めリソース量を契約し、そのリソース量に収まるようにアプリケーションプログラム（以下、アプリともいう）の登録・削除が行われる。利用する全てのアプリを登録可能なリソース量を契約すれば、アプリの登録・削除は不要であるが、そのようにすると、利用料金が高額になるため、一般的に、アプリの登録・削除が必要となる。
【０００３】
以下の特許文献は、プログラム処理について関連する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平５−２２４９４１号公報
【特許文献２】特開平８−１８５２９７号公報
【特許文献３】特開２０１０−２３７９７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、ユーザからＰａａＳシステムで起動していないアプリ宛の要求メッセージを受信すると、そのアプリ宛の要求メッセージを取りこぼす場合があるという課題がある。
【０００６】
そこで、本開示の第１の側面の目的は、ユーザから受信したＰａａＳシステムで起動していないソフトウェア宛(例えば、アプリ宛）の要求メッセージの取りこぼしを抑制することができるソフトウェア（例えば、アプリ）制御プログラムを提供することにある。
【課題を解決するための手段】
【０００７】
本開示の第１の側面は、システムで起動するソフトウェア及び該ソフトウェアの前記システムでの運用状況を契約者ごとに第１メモリに記憶し、最後の要求メッセージを処理した時刻から所定時間経過したソフトウェアの停止を前記システムに要求するとともに前記所定時間経過したソフトウェアの運用状況を停止中に変更し、ユーザから第１ソフトウェア宛の要求メッセージを受信したとき、第２メモリに前記第１ソフトウェア宛の要求メッセージを記憶する第１処理を行い、該第１ソフトウェアの運用状況が起動中の場合、前記第２メモリに記憶された要求メッセージを前記システムに転送する第２処理を行い、該第１ソフトウェアの運用状況が停止中の場合、前記第１ソフトウェアに対応づけられた第１契約者のソフトウェアのうち運用状況が起動中のソフトウェアのリソースと前記第１ソフトウェアのリソースとを加算した合計量が、前記第１契約者のリソース上限量を超えない場合、前記第１ソフトウェアの起動を前記システムに要求し、該第１ソフトウェアの起動後、前記第２メモリに記憶された要求メッセージを前記システムに転送するとともに前記第１ソフトウェアの運用状況を起動中に変更する第３処理を行う、処理をコンピュータで実行させるソフトウェア制御プログラムである。
【０００８】
本開示の第２の側面は、システムで起動するソフトウェア及び該ソフトウェアの前記システムでの運用状況を契約者ごとに第１メモリに記憶し、運用状況が正規ソフトウェアとして起動中のソフトウェアのうち最後の要求メッセージを処理した時刻から所定時間経過したソフトウェアのダミーソフトウェアとしての起動を前記システムに要求するとともに前記所定時間経過したソフトウェアの運用状況をダミーソフトウェアとして起動中に変更し、ユーザから第１ソフトウェア宛の要求メッセージを受信したとき、第２メモリに前記第１ソフトウェア宛の要求メッセージを記憶する第１処理を行い、該第１ソフトウェアの運用状況が正規ソフトウェアとして起動中の場合、前記第２メモリに記憶された要求メッセージを前記システムに転送する第２処理を行い、該第１ソフトウェアの運用状況がダミーソフトウェアとして起動中の場合、第２メモリに前記第１ソフトウェア宛の要求メッセージを記憶し、前記第１ソフトウェアに対応づけられた第１契約者のソフトウェアのうち運用状況が起動中のソフトウェアのリソースと前記第１ソフトウェアのリソースとを加算した合計量が、前記第１契約者のリソース上限量を超えない場合、前記第１ソフトウェアの正規ソフトウェアとしての起動を前記システムに要求し、該第１ソフトウェアが正規ソフトウェアとして起動後、前記第２メモリに記憶された要求メッセージを前記システムに転送するとともに前記第１ソフトウェアの運用状況を正規ソフトウェアとして起動中に変更する第３処理を行う、処理をコンピュータで実行させるソフトウェア制御プログラムである。
【発明の効果】
【０００９】
第１の側面及び第２の側面によれば、ユーザから受信したＰａａＳシステムで起動していないソフトウェア宛(例えば、アプリ宛）の要求メッセージの取りこぼしを抑制することができる。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態の情報処理システム１０の概略構成図である。
【図２】ホストコンピュータ２１のハードウェア構成の一例を示す図である。
【図３】ホストコンピュータ２１におけるアプリケーションプログラム実行環境を説明する図である。
【図４】ＰａａＳシステム２０の主要機能及びＰａａＳシステム２０が持つテーブルを説明するための図である。
【図５】アプリ情報テーブル２１ｎの一例である。
【図６】開発者リソース制限テーブル２１ｐの一例である。
【図７】ホストコンピュータ３１のハードウェア構成の一例を示す図である。
【図８】アプリ起動制御システム３０の主要機能及びアプリ起動制御システム３０が持つテーブルを説明するための図である。
【図９】登録済みアプリ管理テーブル３１ｓの一例である。
【図１０】要求キュー３１ｔの一例である。
【図１１】アプリ変更時間テーブル３１ｕの一例である。
【図１２】ダミーアプリ＆正規アプリ記憶部３１ｖの一例である
【図１３】アプリ起動制御システム３０におけるアプリ登録処理の一例を説明するためのフローチャートである。
【図１４】登録済みアプリ管理テーブル３１ｓ（apr04登録後）の一例である。
【図１５】アプリ情報テーブル２１ｎ（apr04登録後）の一例である。
【図１６】アプリ情報テーブル２１ｎ（apr04登録後）の一例である。
【図１７】（ａ）アプリ変更時間テーブル３１ｕ(apr04登録前)の一例、（ｂ）アプリ変更時間テーブル３１ｕ(apr04登録後)の一例である。
【図１８】アプリ起動制御システム３０におけるダミーアプリ起動処理の一例を説明するためのフローチャートである。
【図１９】アプリ起動制御システム３０における要求メッセージ受信処理を説明するためのフローチャートである。
【図２０】アプリ起動制御システム３０における要求メッセージ受信処理を説明するためのフローチャートである。
【図２１】要求キュー３１ｔの一例である。
【図２２】アプリ起動制御システム３０の主要機能及びアプリ起動制御システム３０が持つテーブルを説明するための図である。
【図２３】アプリ停止時間テーブル３１ｕ２の一例である。
【図２４】登録済みアプリ管理テーブル３１ｓ２の一例である。
【図２５】第２実施形態のアプリ起動制御システム３０におけるアプリ停止処理の一例を説明するためのフローチャートである。
【図２６】アプリ起動制御システム３０における要求メッセージ受信処理を説明するためのフローチャートである。
【図２７】アプリ起動制御システム３０における要求メッセージ受信処理を説明するためのフローチャートである。
【発明を実施するための形態】
【００１１】
［第１実施形態］
まず、第１実施形態の情報処理システム１０の概要について説明する。
【００１２】
図１は、第１実施形態の情報処理システム１０の概略構成図である。
【００１３】
図１に示すように、本実施形態の情報処理システム１０は、ＰａａＳシステム２０、アプリ起動制御システム３０、開発者端末４０、アプリ利用者端末５０等を備える。開発者が本発明の契約者に相当し、アプリ利用者が本発明のユーザに相当する。
【００１４】
開発者端末４０は、インターネット等のネットワークＮＷを介してＰａａＳシステム２０、アプリ起動制御システム３０に接続する。アプリ利用者端末５０は、ネットワークＮＷを介してアプリ起動制御システム３０に接続する。
【００１５】
開発者は、開発者端末４０を介して正規アプリの登録要求をアプリ起動制御システム３０に送信する。アプリ起動制御システム３０は、開発者から正規アプリの登録要求を受信したとき、該アプリ及び該アプリのＰａａＳシステム２０での運用状況を開発者ごとに登録済みアプリ管理テーブル３１ｓに記憶する。正規アプリとは、通常アプリと比べ、アプリ利用者の利用頻度が低い（１日に１回、１週間に１回、又は、月に１回等）アプリのことである。正規アプリが本発明の正規ソフトウェアに相当する。
【００１６】
また、開発者は、開発者端末４０を介して通常アプリをＰａａＳシステム２０に登録する。通常アプリとは、正規アプリと比べ、アプリ利用者の利用頻度が高いアプリのことである。ＰａａＳシステム２０は、その登録された通常アプリがコピーされたコンテナを作成し、そのコンテナ（及び通常アプリ）を起動させる。なお、通常アプリのＰａａＳシステム２０での運用状況は、アプリ起動制御システム３０（登録済みアプリ管理テーブル３１ｓ）に記憶されない。
【００１７】
アプリ利用者は、アプリ利用者端末５０を介して第１アプリ宛の要求メッセージをアプリ起動制御システム３０に送信する。
【００１８】
アプリ起動制御システム３０は、アプリ変更時間テーブル３１ｕを参照して、運用状況が正規アプリとして起動中のアプリのうち最後の要求メッセージを処理（例えば、受信）した時刻（例えば、要求メッセージ受信時刻）から所定時間経過したアプリのダミーアプリとしての起動をＰａａＳシステム２０に要求するとともに所定時間経過したアプリ変更時間テーブル３１ｕ中のアプリの運用状況をダミーアプリとして起動中に変更する。
【００１９】
なお、最後の要求メッセージを処理した時刻は、要求メッセージ受信時刻に限らず、要求キュー３１ｔに記憶された該最後の要求メッセージをＰａａＳシステム２０に転送した時刻であってもよい。
【００２０】
ダミーアプリとは、正規アプリと比べ、リソース（メモリやディスク）の使用量が小さいアプリのことである。ダミーアプリが本発明のダミーソフトウェアに相当する。ＰａａＳシステム２０は、ダミーアプリがコピーされたコンテナを作成し、そのコンテナ（及びダミーアプリ）を起動させる。
【００２１】
また、アプリ起動制御システム３０は、アプリ利用者から第１アプリ宛の要求メッセージを受信したとき、次の処理を行う。
【００２２】
アプリ起動制御システム３０は、登録済みアプリ管理テーブル３１ｓを参照して第１アプリの運用状況がダミーアプリとして起動中の場合、要求キュー３１ｔに第１アプリ宛の要求メッセージを記憶する。要求キュー３１ｔが本発明の第２メモリに相当する。
【００２３】
次に、第１アプリに対応づけられた第１契約者のアプリのうち運用状況が起動中（正規アプリとして起動中及びダミーアプリとして起動中の両方を含む）のアプリの予約済みメモリ量と第１アプリの予約済みメモリ量とを加算した合計量が、第１契約者のメモリ上限量を超えない場合、第１アプリの正規アプリとしての起動をＰａａＳシステム２０に要求する。ＰａａＳシステム２０は、正規アプリがコピー（ダミーアプリに上書き）されたコンテナ（及び正規アプリ）を起動させる。
【００２４】
そして、第１アプリがＰａａＳシステム２０で正規アプリとして起動後、要求キュー３１ｔに記憶された第１アプリ宛の要求メッセージをＰａａＳシステム２０に転送するとともに登録済みアプリ管理テーブル３１ｓ中の第１アプリの運用状況を正規アプリとして起動中に変更する。ＰａａＳシステム２０は、第１アプリ宛の要求メッセージを正規アプリとして起動中の第１アプリに転送する。
【００２５】
次に、ＰａａＳシステム２０について詳細に説明する。
【００２６】
図１に示すように、ＰａａＳシステム２０は、例えば、ホストコンピュータ２１（サーバ装置）及びストレージ２２を含む。ホストコンピュータ２１及びストレージ２２は、それぞれ、１つであってもよいし、複数であってもよい。
【００２７】
ホストコンピュータ２１は、例えば、ハイパーバイザ型仮想化、コンテナ型仮想化、又はこれらを組み合わせたハイブリッド型仮想化を行って、仮想化されたアプリケーション実行環境を提供する。
【００２８】
ストレージ２２には、ホストコンピュータ２１が実行するＯＳやアプリケーションプログラム、アプリケーションプログラムが用いるデータ等が記憶される。具体的には、ホストコンピュータ２１で実行される仮想化環境２１ｈ、２１ｊを生成するプログラム、ＶＭやコンテナ上で実行されるアプリケーションの業務処理を行うためのプログラムやデータ等が記憶される。
【００２９】
図２は、ホストコンピュータ２１のハードウェア構成の一例を示す図である。
【００３０】
ホストコンピュータ２１は、ＣＰＵ２１ａと、入出力装置インタフェース回路２１ｂと、メモリ２１ｃと、ネットワークインタフェース回路２１ｄと、ストレージインタフェース回路２１ｅと、ローカルバスインタフェース回路２１ｆと、を備える。
【００３１】
ＣＰＵ２１ａは、内部バス２１ｇを介して、メモリ２１ｃや入出力装置インタフェース回路２１ｂ等の各インタフェース回路（２１ｄ〜２１ｆ）にアクセスする。
【００３２】
ＣＰＵ２１ａは、Central Processing Unit（ＣＰＵ）、Micro-Processing Unit（ＭＰＵ）等のプロセッサの電子部品である。ＣＰＵ２１ａは、１つであってもよいし、複数であってもよい。
【００３３】
ＣＰＵ２１ａは、ストレージ２２に格納されたプログラムやデータをメモリ２１ｃに読み出して、仮想化環境２１ｈ、２１ｊに関連するプログラム処理、及び、ＶＭやコンテナ上で実行されるアプリケーションの業務処理に関するプログラムを実行する。
【００３４】
入出力装置インタフェース回路２１ｂは、不図示のマウスやキーボード等のデバイスを含む周辺デバイスへの入出力を制御するための回路である。
【００３５】
メモリ２１ｃは、ＲＡＭ（Random Access Memory）等の記憶デバイスである。
【００３６】
ネットワークインタフェース回路２１ｄは、ネットワークＮＷを介して他の装置（例えば、開発者端末４０）と通信を行うためのインタフェース回路である。
【００３７】
ストレージインタフェース回路２１ｅは、ストレージ２２へのアクセスを行うためのインタフェース回路である。
【００３８】
ローカルバスインタフェース回路２１ｆは、ローカルバス２１ｇを介して情報処理システム１０内のアプリ起動制御システム３０等と通信を行うためのインタフェース回路である。
【００３９】
図３は、ホストコンピュータ２１におけるアプリケーションプログラム実行環境を説明する図である。
【００４０】
ホストコンピュータ２１においては、ＣＰＵ２１ａやメモリ２１ｃ等を用いて、ハイパーバイザ型仮想化環境２１ｈと、仮想マシン２１ｈ２上で稼働するコンテナ型仮想化環境２１ｊとが動作するハイブリッド型仮想化環境が提供される。
【００４１】
ハイパーバイザ型仮想化環境２１ｈは、ハイパーバイザ２１ｈ１と、ハイパーバイザ２１ｈ１によって生成された仮想マシン２１ｈ２とを含む。ハイパーバイザ２１ｈ１は、仮想マシン２１ｈ２の起動や削除、仮想マシン２１ｈ２上で実行されるプログラムからのハードウェア資源へのアクセス要求の制御等を行う。
【００４２】
仮想マシン２１ｈ２は、ホストコンピュータ２１のハードウェア資源を仮想化したものであり、仮想マシン２１ｈ２毎に独立したソフトウェア実行環境が提供される。図３において、２つの仮想マシン２１ｈ２が起動した例を示しているが、これに限らず、１又は複数（３以上）の仮想マシン２１ｈ２が起動する場合もある。
【００４３】
図３の例では、仮想マシン２１ｈ２において、コンテナ型仮想化環境２１ｊが提供される。コンテナ型仮想化環境２１ｊでは、仮想マシン２１ｈ２上でＯＳ２１ｊ１が起動され、そのＯＳ２１ｊ１上でコンテナ仮想化ソフトウェアがインストールされる。図３において、ＯＳ２１ｊ１上で２つのコンテナ２１ｊ２が起動した例を示しているが、これに限らず、ＯＳ２１ｊ１上で１又は複数（３以上）のコンテナ２１ｊ２が起動する場合もある。
【００４４】
コンテナ型仮想化環境２１ｊでは、ＯＳ２１ｊ１によって、独立したアプリケーション実行環境であるコンテナ２１ｊ２が提供される。コンテナ型仮想化では過去に作成したアプリケーション実行環境を共通ファイルのイメージとして保存する。そして、保存したイメージをコピーし、アプリケーション実行環境ごとの設定を追加することで、新たなコンテナを容易に作成できる。そのため、コンテナ型仮想化環境は、ＰａａＳ（Platform as a Service）等の構築に適している。
【００４５】
コンテナ２１ｊ２は、ＡＰＩ（ＯＳ  ＡＰＩ）、その上にインストールされたＪＡＶＡ(登録商標）等の実行環境（ビルドパック）、ＪＡＶＡ等の実行環境の上にコピーされたアプリケーションプログラム（通常アプリ、正規アプリ、又は、ダミーアプリ）等を含む。
【００４６】
ＰａａＳシステム２０にアプリが登録されると、ＰａａＳシステム２０は、その登録されたアプリがコピーされたコンテナ２１ｊ２を作成し、そのコンテナ（及びアプリ）を起動させる。なお、ＰａａＳシステム２０にアプリを登録する際には、例えば、プッシュコマンドが用いられる（開発者端末４０を介して通常アプリをＰａａＳシステム２０に登録する場合）。
【００４７】
また、アプリ（旧アプリという）が既に登録されているＰａａＳシステム２０に対して同じアプリ名のアプリ（新アプリという）のアプリ登録要求があった場合、ＰａａＳシステム２０は、旧アプリの開発者（例えば、ユーザ名）と新アプリの開発者（例えば、ユーザ名）とが同じであれば、登録を許可する。一方、ＰａａＳシステム２０は、旧アプリの開発者（例えば、ユーザ名）と新アプリの開発者（例えば、ユーザ名）とが異なっていれば、登録を許可しない。
【００４８】
図４は、ＰａａＳシステム２０の主要機能及びＰａａＳシステム２０が持つテーブルを説明するための図である。
【００４９】
図４に示す各機能は、ＣＰＵ２１ａがストレージ２２からメモリ２１ｃに読み出された所定プログラムを実行することで実現される。図４に示す各機能の詳細については、後述する（図１３、図１８〜図２０等参照）。
【００５０】
図５は、アプリ情報テーブル２１ｎの一例である。アプリ情報テーブル２１ｎは、例えば、ストレージ２２に記憶されており、必要に応じてストレージ２２からメモリ２１ｃに読み出される。
【００５１】
アプリ情報テーブル２１ｎは、アプリ及びそのアプリのＰａａＳシステム２０での運用状況等を記憶する。アプリ情報テーブル２１ｎは、開発者ごとに用意される。図５は例えば、開発者Ａ用のアプリ情報テーブル２１ｎの一例である。
【００５２】
図５に示すように、アプリ情報テーブル２１ｎは、「アプリ名」、及び、その「アプリ名」の「ＵＲＬ名」、「使用ＣＰＵ」、「使用メモリ」、「使用ディスク」、「予約済みメモリ量」、「予約済みディスク量」、「運用状況」等の項目を含む。
【００５３】
「アプリ名」には、ＰａａＳシステム２０に登録されたアプリのアプリ名が記憶される。
【００５４】
「ＵＲＬ名」には、「アプリ名」に記憶されたアプリ名のアプリにアクセスするためのＵＲＬが記憶される。
【００５５】
「使用ＣＰＵ」には、「アプリ名」に記憶されたアプリ名のアプリが実際に使用しているＣＰＵ使用率が記憶される。
【００５６】
「使用メモリ」には、「アプリ名」に記憶されたアプリ名のアプリが実際に使用しているメモリ量が記憶される。
【００５７】
「使用ディスク」には、「アプリ名」に記憶されたアプリ名のアプリが実際に使用しているディスク量が記憶される。
【００５８】
「予約済みメモリ量」には、「アプリ名」に記憶されたアプリ名のアプリが使用可能なメモリの上限量が記憶される。
【００５９】
「予約済みディスク量」には、「アプリ名」に記憶されたアプリ名のアプリが使用可能なディスクの上限量が記憶される。
【００６０】
「運用状況」には、「アプリ名」に記憶されたアプリ名のアプリのＰａａＳシステム２０での運用状況（起動状態ともいう）が記憶される。
【００６１】
図６は、開発者リソース制限テーブル２１ｐの一例である。開発者リソース制限テーブル２１ｐは、例えば、ストレージ２２に記憶されており、必要に応じてストレージ２２からメモリ２１ｃに読み出される。なお、アプリ起動制御システム３０も、開発者リソース制限テーブル２１ｐを備えている（図８参照）。
【００６２】
図６に示すように、開発者リソース制限テーブル２１ｐは、「開発者名」、及び、その「開発者名」の「メモリ上限量（メモリ制限ともいう）」、「ディスク上限量（ディスク制限ともいう）」等の項目を含む。
【００６３】
「開発者名」には、ＰａａＳシステム２０を利用する旨の契約をした開発者名が記憶される。
【００６４】
「メモリ上限量」には、「開発者名」に記憶された開発者が使用可能なメモリの上限量が記憶される。メモリ上限量が本発明のリソース上限量（又はリソース契約量ともいえる）に相当する。
【００６５】
「ディスク上限量」には、「開発者名」に記憶された開発者が使用可能なディスクの上限量が記憶される。
【００６６】
次に、アプリ起動制御システム３０について詳細に説明する。
【００６７】
図１に示すように、アプリ起動制御システム３０は、例えば、ホストコンピュータ３１（サーバ装置）及びストレージ３２を含む。ホストコンピュータ３１及びストレージ３２は、それぞれ、１つであってもよいし、複数であってもよい。
【００６８】
図７は、ホストコンピュータ３１のハードウェア構成の一例を示す図である。
【００６９】
ホストコンピュータ３１は、ＣＰＵ３１ａと、入出力装置インタフェース回路３１ｂと、メモリ３１ｃと、ネットワークインタフェース回路３１ｄと、ストレージインタフェース回路３１ｅと、ローカルバスインタフェース回路３１ｆと、を備える。
【００７０】
ＣＰＵ３１ａは、内部バス３１ｇを介して、メモリ３１ｃや入出力装置インタフェース回路３１ｂ等の各インタフェース回路（３１ｄ〜３１ｆ）にアクセスする。
【００７１】
ＣＰＵ３１ａは、Central Processing Unit（ＣＰＵ）、Micro-Processing Unit（ＭＰＵ）等のプロセッサの電子部品である。ＣＰＵ３１ａは、１つであってもよいし、複数であってもよい。
【００７２】
入出力装置インタフェース回路３１ｂは、不図示のマウスやキーボード等のデバイスを含む周辺デバイスへの入出力を制御するための回路である。
【００７３】
メモリ３１ｃは、ＲＡＭ（Random Access Memory）等の記憶デバイスである。
【００７４】
ネットワークインタフェース回路３１ｄは、ネットワークＮＷを介して他の装置（例えば、開発者端末４０やアプリ利用者端末５０）と通信を行うためのインタフェース回路である。
【００７５】
ストレージインタフェース回路３１ｅは、ストレージ３２へのアクセスを行うためのインタフェース回路である。
【００７６】
ローカルバスインタフェース回路３１ｆは、ローカルバス３１ｇを介して情報処理システム１０内のＰａａＳシステム２０等と通信を行うためのインタフェース回路である。
【００７７】
図８は、アプリ起動制御システム３０の主要機能及びアプリ起動制御システム３０が持つテーブルを説明するための図である。
【００７８】
図８に示す各機能は、ＣＰＵ３１ａがストレージ３２からメモリ３１ｃに読み出された所定プログラムを実行することで実現される。図８に示す各機能の詳細については、後述する（図１３、図１８〜図２０等参照）。
【００７９】
図９は、登録済みアプリ管理テーブル３１ｓの一例である。登録済みアプリ管理テーブル３１ｓは、例えば、ストレージ３２に記憶されており、必要に応じてストレージ３２からメモリ３１ｃに読み出される。登録済みアプリ管理テーブル３１ｓが本発明の第１メモリに相当する。
【００８０】
登録済みアプリ管理テーブル３１ｓは、アプリ及びそのアプリのＰａａＳシステム２０での運用状況を開発者ごとに記憶する。
【００８１】
図９に示すように、登録済みアプリ管理テーブル３１ｓは、「アプリ名」、及び、その「アプリ名」の「開発者名」、「ＵＲＬ」、「ダミーフラグ」、「ファイル名」、「予約済みメモリ量」、「予約済みディスク量」、「運用状況」等の項目を含む。
【００８２】
「アプリ名」には、アプリ起動制御システム３０が起動を制御するアプリのアプリ名が記憶される。
【００８３】
「開発者名」には、「アプリ名」に記憶されたアプリ名のアプリの開発者名、典型的には、「アプリ名」に記憶されたアプリ名のアプリを開発した開発者名が記憶される。
【００８４】
「ＵＲＬ」には、「アプリ名」に記憶されたアプリにアクセスするためのＵＲＬが記憶される。
【００８５】
「ダミーフラグ」には、「アプリ名」に記憶されたアプリ名のアプリのＰａａＳシステム２０（コンテナ）での運用状況の識別情報が記憶される。図９中、「Ｙｅｓ」は「アプリ名」に記憶されたアプリ名のアプリのＰａａＳシステム２０（コンテナ）での運用状況がダミーアプリとして起動中を表す。「Ｎｏ」は「アプリ名」に記憶されたアプリ名のアプリのＰａａＳシステム２０（コンテナ）での運用状況が正規アプリとして起動中を表す。
【００８６】
「ファイル名」には、「アプリ名」に記憶されたアプリ名のアプリ（ソースファイル）のファイル名が記憶される。
【００８７】
「予約済みメモリ量」には、「アプリ名」に記憶されたアプリ名のアプリが使用可能なメモリの上限量が記憶される。
【００８８】
「予約済みディスク量」には、「アプリ名」に記憶されたアプリ名のアプリが使用可能なディスクの上限量が記憶される。
【００８９】
「運用状況」には、「アプリ名」に記憶されたアプリのＰａａＳシステム２０での運用状況（起動状態ともいう）が記憶される。
【００９０】
図１０は、要求キュー３１ｔの一例である。要求キューが本発明の第２メモリに相当する。要求キュー３１ｔは、例えば、メモリ３１ｃに生成（記憶）される。
【００９１】
要求キュー３１ｔは、アプリ（アプリ名）ごとに用意されるアプリ専用のキューである。図１０（ａ）はアプリ名apr01のアプリ専用の要求キュー３１ｔの例であり、図１０（ｂ）はアプリ名apr02のアプリ専用の要求キュー３１ｔの例である。
【００９２】
要求キュー３１ｔは、「アプリ名」及び「要求メッセージ」等の項目を含む。
【００９３】
「アプリ名」には、要求キュー３１ｔが担当するアプリ名が記憶される。
【００９４】
「要求メッセージ」には、「アプリ名」に記憶されたアプリ名のアプリ宛の要求メッセージが記憶される。図１０（ａ）は、アプリ名apr01のアプリ宛ての２つの要求メッセージ（受信要求メッセージ）が、アプリ名apr01のアプリ専用の要求キュー３１ｔに記憶されている状態を表す。同様に、図１０（ｂ）は、アプリ名apr02のアプリ宛ての２つの要求メッセージ（受信要求メッセージ）が、アプリ名apr02のアプリ専用の要求キュー３１ｔに記憶されている状態を表す。
【００９５】
図１１は、アプリ変更時間テーブル３１ｕの一例である。アプリ変更時間テーブル３１ｕは、例えば、ストレージ３２に記憶されており、必要に応じてストレージ３２からメモリ３１ｃに読み出される。
【００９６】
図１１に示すように、アプリ変更時間テーブル３１ｕは、「アプリ名」、及び、その「アプリ名」の「アプリ変更時間」、「要求メッセージ受信時刻」等の項目を含む。
【００９７】
「アプリ名」には、ＰａａＳシステム２０での運用状況が正規アプリとして起動中のアプリのアプリ名が記憶される。
【００９８】
「アプリ変更時間」には、「アプリ名」に記憶されたアプリ名のアプリのダミーアプリとしての起動をＰａａＳシステム２０に要求するまでの時間が記憶される。
【００９９】
「要求メッセージ受信時刻」には、「アプリ名」に記憶されたアプリ名のアプリ宛の要求メッセージを受信した時刻が記憶される。
【０１００】
図１２は、ダミーアプリ＆正規アプリ記憶部３１ｖの一例である。
【０１０１】
ダミーアプリ＆正規アプリ記憶部３１ｖは、例えば、ストレージ３２に設けられる。
【０１０２】
ダミーアプリ＆正規アプリ記憶部３１ｖには、ダミーアプリ（JAVA等のソースファイル）が記憶される。典型的には、予め用意された一つのダミーアプリ（JAVA等のソースファイル）が記憶される。また、ダミーアプリ＆正規アプリ記憶部３１ｖには、正規アプリ（JAVA等のソースファイル）が記憶される。一つの正規アプリが記憶される場合もあるし、複数の正規アプリが記憶される場合もある。
【０１０３】
なお、アプリ起動制御システム３０は、ＰａａＳシステム２０と同様、開発者リソース制限テーブル２１ｐ（図６参照）を備えている。
【０１０４】
図１３は、アプリ起動制御システム３０におけるアプリ登録処理の一例を説明するためのフローチャートである。
【０１０５】
まず、アプリ管理部３１ｑが、開発者から開発者端末４０を介して送信された正規アプリの登録要求を受信するまで待機する（ステップＳ１０：ＮＯ）。
【０１０６】
以下、アプリ管理部３１ｑが、開発者Ａ（開発者名Usr01）からアプリ名（apr04）の正規アプリの登録要求（以下、アプリ登録要求ともいう）を受信した場合の処理の一例について説明する。
【０１０７】
このアプリ登録要求は、登録対象アプリに関する情報、具体的には、アプリ名（ここでは、apr04）、正規アプリ（JAVA等のソースファイル）、予約済みメモリ量（ここでは、1GB）、予約済みディスク量（ここでは、1GB）、アプリ変更時間（ここでは、20min）を含む。
【０１０８】
アプリ管理部３１ｑは、アプリ登録要求を受信した場合（ステップＳ１０：ＹＥＳ）、ステップＳ１０で受信したアプリ名（ここでは、apr04）等を、図１４に示すように、登録済みアプリ管理テーブル３１ｓに記憶する（ステップＳ１１）。
【０１０９】
例えば、図９に示すように、登録済みアプリ管理テーブル３１ｓに、ステップＳ１０で受信したアプリ名（ここでは、apr04）等が記憶されていない場合、アプリ管理部３１ｑは、図１４の最終行に示すように、登録済みアプリ管理テーブル３１ｓに、ステップＳ１０で受信したアプリ名（ここでは、apr04）等を記憶する。
【０１１０】
具体的には、「開発者名」には、開発者Ａが開発者端末４０を介してアプリ起動制御システム３０にログインする際に入力した開発者名（ここでは、Usr01）が記憶される。
【０１１１】
「アプリ名」には、ステップＳ１０で受信したアプリ名（ここでは、apr04）が記憶される。
【０１１２】
「ＵＲＬ」には、ステップＳ１０で受信したアプリ名とアプリ起動制御システム３０が自動的に付与するドメイン名とを組み合わせて生成されたＵＲＬ（ここでは、apr04.paas01.dc01.net）が記憶される。
【０１１３】
「ダミーフラグ」には、ステップＳ１０で受信したアプリ（アプリ名）のＰａａＳシステム２０での運用状況に応じてＹｅｓ又はＮｏが記憶される。
【０１１４】
「ファイル名」には、ステップＳ１０で受信した正規アプリ（JAVA等のソースファイル）のファイル名（ここでは、test01.java）が記憶される。
【０１１５】
「予約済みメモリ量」には、ステップＳ１０で受信した予約済みメモリ量（ここでは、1GB）が記憶される。「予約済みメモリ量」が本発明のリソースに相当する。なお、ステップＳ１０で予約済みメモリ量を受信しなかった場合、「予約済みメモリ量」には、アプリ起動制御システム３０によってデフォルトの予約済みメモリ量が記憶される。
【０１１６】
「予約済みディスク量」には、ステップＳ１０で受信した予約済みディスク量（ここでは、1GB）が記憶される。なお、ステップＳ１０で予約済みディスク量を受信しなかった場合、「予約済みディスク量」には、アプリ起動制御システム３０によってデフォルトの予約済みディスク量が記憶される。
【０１１７】
「運用状況」には、ステップＳ１０で受信したアプリ（アプリ名）のＰａａＳシステム２０での運用状況に応じて起動中又は停止中が記憶される。
【０１１８】
また、ステップＳ１０で受信した正規アプリ（JAVA等のソースファイル）がダミーアプリ＆正規アプリ記憶部３１ｖに記憶される。
【０１１９】
次に、要求アプリ起動停止部３１ｎが、ステップＳ１０で受信した正規アプリ（JAVA等のソースファイル）に対応付けられた第１契約者（ここでは、Usr01。図１４参照）のアプリ（アプリ名）のうち「運用状況」が起動中のアプリの「予約済みメモリ量」（ここでは1GB）とステップＳ１０で受信した正規アプリの「予約済みメモリ量」（ここでは1GB）とを加算した合計量（ここでは2GB）が、第１契約者（ここでは、Usr01）のメモリ上限量（ここでは、3GB。図６参照）を超えるか否かを判定（確認）する（ステップＳ１２）。
【０１２０】
この判定の結果、合計量がメモリ上限量を超えない場合（ステップＳ１３：ＮＯ）、要求アプリ起動停止部３１ｎが、ステップＳ１０で受信した正規アプリの起動を、ＰａａＳシステム２０に対して要求する（ステップＳ１４）。
【０１２１】
この正規アプリ起動要求は、登録対象アプリに関する情報、具体的には、アプリ名（ここでは、apr04）、正規アプリ（JAVA等のソースファイル）、予約済みメモリ量（ここでは、1GB）、予約済みディスク量（ここでは、1GB）を含む。
【０１２２】
ＰａａＳシステム２０は、アプリ起動制御システム３０（要求アプリ起動停止部３１ｎ）から正規アプリ起動要求（ステップＳ１４）を受信した場合、図１５中の最終行に示すように、その受信したアプリ名（ここでは、apr04）等を、開発者（ここでは、開発者Ａ）のアプリ情報テーブル２１ｎに記憶する。
【０１２３】
具体的には、「アプリ名」には、アプリ起動制御システム３０（要求アプリ起動停止部３１ｎ）から受信したアプリ名（ここでは、apr04）が記憶される。
【０１２４】
「ＵＲＬ」には、アプリ起動制御システム３０（要求アプリ起動停止部３１ｎ）から受信したアプリ名（ここでは、apr04）とＰａａＳシステム２０が自動的に付与するドメイン名とを組み合わせて生成されたＵＲＬが記憶される。
【０１２５】
「使用ＣＰＵ」、「使用メモリ」、「使用ディスク」には、それぞれ、「アプリ名」に記憶されたアプリ名のアプリが実際に使用しているＣＰＵ使用率、メモリ量、ディスク量が記憶される。これらは、ＰａａＳシステム２０によって定期的に更新される。
【０１２６】
「予約済みメモリ量」には、アプリ起動制御システム３０（要求アプリ起動停止部３１ｎ）から受信した予約済みメモリ量（ここでは、1GB）が記憶される。
【０１２７】
「予約済みディスク量」には、アプリ起動制御システム３０（要求アプリ起動停止部３１ｎ）から受信した予約済みディスク量（ここでは、1GB）が記憶される。
【０１２８】
また、ＰａａＳシステム２０は、アプリ起動制御システム３０（要求アプリ起動停止部３１ｎ）から受信した正規アプリ（JAVA等のソースファイル）がコピーされたコンテナ２１ｊ２を作成し、そのコンテナ（及び正規アプリ）を起動させる。
【０１２９】
さらに、ＰａａＳシステム２０は、アプリ起動制御システム３０に対して正規アプリの起動状態を通知（送信）する。例えば、ＰａａＳシステム２０は、コンテナ（及び正規アプリ）が正常に起動した場合、起動状態として起動中を通知し、何らかの理由で正常に起動しなかった場合、起動状態として停止中を通知する。
【０１３０】
また、ＰａａＳシステム２０は、正規アプリの起動状態に応じて、アプリ情報テーブル２１ｎ中の「アプリ名」（ここでは、apr04）の「運用状況」に起動中又は停止中を記憶する。
【０１３１】
一方、ステップＳ１２の判定の結果、合計量がメモリ上限量を超える場合（ステップＳ１３：ＹＥＳ）、要求アプリ起動停止部３１ｎが、ダミーアプリの起動を、ＰａａＳシステム２０に対して要求する（ステップＳ１５）。
【０１３２】
このダミーアプリ起動要求は、登録対象アプリに関する情報として、アプリ名（ここでは、apr04）、ダミーアプリ（JAVA等のソースファイル）、ダミーアプリ用の予約済みメモリ量（ここでは、10MB）、ダミーアプリ用の予約済みディスク量（ここでは、10MB）を含む。なお、ダミーアプリ、ダミーアプリ用の予約済みメモリ量、ダミーアプリ用の予約済みディスク量は、例えば、ダミーアプリ＆正規アプリ記憶部３１ｖに予め記憶されている。
【０１３３】
ＰａａＳシステム２０は、アプリ起動制御システム３０（要求アプリ起動停止部３１ｎ）からダミーアプリ起動要求（ステップＳ１５）を受信した場合、図１６中の最終行に示すように、その受信したアプリ名（ここでは、apr04）等を、開発者（ここでは、開発者Ａ）のアプリ情報テーブル２１ｎに記憶する。
【０１３４】
具体的には、「アプリ名」には、アプリ起動制御システム３０（要求アプリ起動停止部３１ｎ）から受信したアプリ名（ここでは、apr04）が記憶される。
【０１３５】
「ＵＲＬ」には、アプリ起動制御システム３０（要求アプリ起動停止部３１ｎ）から受信したアプリ名（ここでは、apr04）とＰａａＳシステム２０が自動的に付与するドメイン名とを組み合わせて生成されたＵＲＬが記憶される。
【０１３６】
「使用ＣＰＵ」、「使用メモリ」、「使用ディスク」には、それぞれ、「アプリ名」に記憶されたアプリ名のアプリが実際に使用しているＣＰＵ使用率、メモリ量、ディスク量が記憶される。これらは、ＰａａＳシステム２０によって定期的に更新される。
【０１３７】
「予約済みメモリ量」には、アプリ起動制御システム３０（要求アプリ起動停止部３１ｎ）から受信したダミーアプリ用の予約済みメモリ量（ここでは、10MB）が記憶される。
【０１３８】
「予約済みディスク量」には、アプリ起動制御システム３０（要求アプリ起動停止部３１ｎ）から受信したダミーアプリ用の予約済みディスク量（ここでは、10MB）が記憶される。
【０１３９】
また、ＰａａＳシステム２０は、アプリ起動制御システム３０（要求アプリ起動停止部３１ｎ）から受信したダミーアプリ（JAVA等のソースファイル）がコピーされたコンテナ２１ｊ２を作成し、そのコンテナ（及びダミーアプリ）を起動させる。
【０１４０】
さらに、ＰａａＳシステム２０は、アプリ起動制御システム３０に対してダミーアプリの起動状態を通知（送信）する。例えば、ＰａａＳシステム２０は、コンテナ（及びダミーアプリ）が正常に起動した場合、起動状態として起動中を通知し、何らかの理由で正常に起動しなかった場合、起動状態として停止中を通知する。
【０１４１】
また、ＰａａＳシステム２０は、ダミーアプリの起動状態に応じて、アプリ情報テーブル２１ｎ中の「アプリ名」（ここでは、apr04）の「運用状況」に起動中又は停止中を記憶する。
【０１４２】
次に、アプリ管理部３１ｑが、アプリ監視制御部３１ｒに対してアプリ変更時間テーブル３１ｕへの登録を要求する（ステップＳ１６）。
【０１４３】
次に、アプリ監視制御部３１ｒが、アプリ変更時間テーブル３１ｕに、ステップＳ１０で受信したアプリ名（ここでは、apr04）等が登録されているか否かを判定（確認）する（ステップＳ１７）。
【０１４４】
この判定の結果、アプリ変更時間テーブル３１ｕに、ステップＳ１０で受信したアプリ名等が登録されていない場合（ステップＳ１８：ＮＯ）、アプリ監視制御部３１ｒが、アプリ変更時間テーブル３１ｕに、ステップＳ１０で受信したアプリ名（ここでは、apr04）等を記憶する（ステップＳ１９）。
【０１４５】
例えば、図１７（ａ）に示すように、アプリ変更時間テーブル３１ｕに、ステップＳ１０で受信したアプリ名（ここでは、apr04）等が記憶されていない場合（ステップＳ１８：ＮＯ）、アプリ監視制御部３１ｒは、図１７（ｂ）の最終行に示すように、アプリ変更時間テーブル３１ｕに、ステップＳ１０で受信したアプリ名（ここでは、apr04）等を記憶する（ステップＳ１９）。
【０１４６】
具体的には、「アプリ名」には、ステップＳ１０で受信したアプリ名（ここでは、apr04）が記憶される。
【０１４７】
「アプリ変更時間」には、ステップＳ１０で受信したアプリ変更時間（ここでは、20min）が記憶される。なお、ステップＳ１０でアプリ変更時間を受信しなかった場合、「アプリ変更時間」には、アプリ起動制御システム３０によってデフォルトの時間が記憶される。
【０１４８】
「要求メッセージ受信時刻」には、この時点ではまだ要求メッセージ未受信であるため、ステップＳ１０で受信したアプリ名等を登録済みアプリ管理テーブル３１ｓに登録した時刻（ここでは、2016/06/30 15:20）が記憶される。
【０１４９】
一方、ステップＳ１７の判定の結果、アプリ変更時間テーブル３１ｕに、ステップＳ１０で受信したアプリ名等が登録されている場合（ステップＳ１８：ＹＥＳ）、アプリ監視制御部３１ｒが、ステップＳ１０で受信したアプリ名（ここでは、apr04）の「アプリ変更時間」を更新する（ステップＳ２０）。例えば、アプリ変更時間テーブル３１ｕ中のアプリ名（ここでは、apr04）の「アプリ変更時間」に、ステップＳ１０で受信したアプリ変更時間を上書きする。
【０１５０】
次に、アプリ起動制御システム３０（例えば、アプリ管理部３１ｑ）は、ステップＳ１４又はＳ１５で起動要求したアプリの起動状態を、ＰａａＳシステム２０から受信した場合（ステップＳ２１：ＹＥＳ）、登録済みアプリ管理テーブル３１ｓを更新する（ステップＳ２２）。
【０１５１】
例えば、アプリ起動制御システム３０（例えば、アプリ管理部３１ｑ）は、ＰａａＳシステム２０から正規アプリの起動状態を受信した場合（ステップＳ２１：ＹＥＳ）、その受信した正規アプリの起動状態に応じて、登録済みアプリ管理テーブル３１ｓ中の「アプリ名」（ここでは、apr04）の「運用状況」に起動中又は停止中を記憶する。また、アプリ起動制御システム３０（例えば、アプリ管理部３１ｑ）は、登録済みアプリ管理テーブル３１ｓの「アプリ名」（ここでは、apr04）の「ダミーフラグ」にＮｏを記憶する。
【０１５２】
一方、アプリ起動制御システム３０（例えば、アプリ管理部３１ｑ）は、ＰａａＳシステム２０からダミーアプリの起動状態を受信した場合（ステップＳ２１：ＹＥＳ）、その受信したダミーアプリの起動状態に応じて、登録済みアプリ管理テーブル３１ｓ中の「アプリ名」（ここでは、apr04）の「運用状況」に起動中又は停止中を記憶する。また、アプリ起動制御システム３０（例えば、アプリ管理部３１ｑ）は、登録済みアプリ管理テーブル３１ｓの「アプリ名」（ここでは、apr04）の「ダミーフラグ」にＹｅｓを記憶する。
【０１５３】
図１８は、アプリ起動制御システム３０におけるダミーアプリ起動処理の一例を説明するためのフローチャートである。
【０１５４】
まず、アプリ監視制御部３１ｒが、アプリ変更時間テーブル３１ｕからアプリ毎に要求メッセージ受信時刻、アプリ変更時間を取得する（ステップＳ３０）。
【０１５５】
次に、アプリ監視制御部３１ｒが、アプリ変更予定時刻（＝要求メッセージ受信時刻＋アプリ変更時間）を計算する（ステップＳ３１）。
【０１５６】
次に、アプリ変更予定時刻を超えるアプリ名がある場合（ステップＳ３２：ＹＥＳ）、アプリ監視制御部３１ｒが、要求アプリ起動停止部３１ｎに対して該当アプリのダミーアプリとしての起動を要求する（ステップＳ３３）。
【０１５７】
次に、要求アプリ起動停止部３１ｎが、該当アプリのダミーアプリとしての起動を、ＰａａＳシステム２０に対して要求する（ステップＳ３４）。
【０１５８】
このダミーアプリ起動要求は、アプリ名（例えば、図１７（ｂ）中のapr04）、ダミーアプリ（JAVA等のソースファイル）、ダミーアプリ用の予約済みメモリ量、ダミーアプリ用の予約済みディスク量を含む。
【０１５９】
ＰａａＳシステム２０は、アプリ起動制御システム３０（要求アプリ起動停止部３１ｎ）からダミーアプリ起動要求（ステップＳ３４）を受信した場合、アプリ情報テーブル２１ｎ中の受信したアプリ名（ここでは、apr04）の「予約済みメモリ量」、「予約済みディスク量」に、それぞれ、受信したダミーアプリ用の予約済みメモリ量、ダミーアプリ用の予約済みディスク量を記憶（例えば、上書き）する。これにより、例えば、アプリ情報テーブル２１ｎは、図１５に示す内容から図１６に示す内容に変わる。
【０１６０】
また、ＰａａＳシステム２０は、アプリ起動制御システム３０（要求アプリ起動停止部３１ｎ）から受信したダミーアプリ（JAVA等のソースファイル）がコピー（正規アプリに上書き）されたコンテナ２１ｊ２（及びダミーアプリ）を起動させる。
【０１６１】
さらに、ＰａａＳシステム２０は、アプリ起動制御システム３０に対してダミーアプリの起動状態を通知（送信）する。例えば、ＰａａＳシステム２０は、コンテナ（及びダミーアプリ）が正常に起動した場合、起動状態として起動中を通知し、何らかの理由で正常に起動しなかった場合、起動状態として停止中を通知する。
【０１６２】
また、ＰａａＳシステム２０は、ダミーアプリの起動状態に応じて、アプリ情報テーブル２１ｎ中の「アプリ名」（ここでは、apr04）の「運用状況」に起動中又は停止中を記憶する。
【０１６３】
次に、アプリ起動制御システム３０（例えば、アプリ管理部３１ｑ）は、ステップＳ３４で起動要求したアプリの起動状態を、ＰａａＳシステム２０から受信した場合（ステップＳ３５：ＹＥＳ）、登録済みアプリ管理テーブル３１ｓを更新する（ステップＳ３６）。
【０１６４】
例えば、アプリ起動制御システム３０（例えば、アプリ管理部３１ｑ）は、ＰａａＳシステム２０からダミーアプリの起動状態を受信した場合（ステップＳ３５：ＹＥＳ）、その受信したダミーアプリの起動状態に応じて、登録済みアプリ管理テーブル３１ｓ中の「アプリ名」（ここでは、apr04）の「運用状況」に起動中又は停止中を記憶する。また、アプリ起動制御システム３０（例えば、アプリ管理部３１ｑ）は、登録済みアプリ管理テーブル３１ｓの「アプリ名」（ここでは、apr04）の「ダミーフラグ」にＹｅｓを記憶する。
【０１６５】
上記ステップＳ３０〜Ｓ３６の処理は、指定間隔ごとに実行される。
【０１６６】
図１９、図２０は、アプリ起動制御システム３０における要求メッセージ受信処理を説明するためのフローチャートである。
【０１６７】
まず、要求メッセージ受信部３１ｈが、アプリ利用者からアプリ利用者端末５０を介して送信された第１アプリ宛の要求メッセージを受信するまで待機する（ステップＳ４０：ＮＯ）。
【０１６８】
以下、要求メッセージ受信部３１ｈが、アプリ利用者から第１アプリ宛（ここでは、アプリ名apr04、開発者名Usr01）の要求メッセージを受信した場合の処理の一例について説明する。
【０１６９】
要求メッセージ受信部３１ｈは、第１アプリ宛の要求メッセージを受信した場合（ステップＳ４０：ＹＥＳ）、要求メッセージ登録確認部３１ｊに対して第１アプリ（アプリ名）が登録済みアプリ管理テーブル３１ｓに登録（記憶）されているか否の確認を要求（アプリ確認要求）する（ステップＳ４１）。
【０１７０】
次に、要求メッセージ登録確認部３１ｊは、第１アプリ（アプリ名）が登録済みアプリ管理テーブル３１ｓに登録されているか否かを判定（確認）する（ステップＳ４２）。
【０１７１】
この判定の結果、第１アプリ（アプリ名）が登録済みアプリ管理テーブル３１ｓに登録されている場合（ステップＳ４３：ＹＥＳ）、次の第１〜第３の処理が実行される。
【０１７２】
第１の処理は、アプリ変更時間テーブル３１ｕ中の要求メッセージ受信時刻を更新する処理である。
【０１７３】
具体的には、まず、要求メッセージ登録確認部３１ｊが、アプリ監視制御部３１ｒに対して要求メッセージ受信時刻を通知する（ステップＳ４４）。
【０１７４】
次に、アプリ監視制御部３１ｒが、アプリ変更時間テーブル３１ｕ中の「アプリ名」が第１アプリの「要求メッセージ受信時刻」を、要求メッセージ登録確認部３１ｊから通知された要求メッセージ受信時刻で更新（例えば、上書き）する（ステップＳ４５）。
【０１７５】
第２の処理は、ステップＳ４０で受信した要求メッセージを要求キュー３１ｔに保存する処理である。
【０１７６】
具体的には、まず、要求メッセージ登録確認部３１ｊが、要求メッセージ保存部３１ｋに対してステップＳ４０で受信した要求メッセージの保存を要求する（ステップＳ４６）。
【０１７７】
次に、要求メッセージ保存部３１ｋが、ステップＳ４０で受信した要求メッセージを第１アプリ専用の要求キュー３１ｔ（図２１参照）に保存する（ステップＳ４７）。
【０１７８】
第３の処理は、第１アプリのＰａａＳシステム２０での運用状況がダミーアプリとして起動中である場合、第１アプリの正規アプリとしての起動を、ＰａａＳシステム２０に対して要求する処理である。
【０１７９】
具体的には、まず、要求メッセージ登録確認部３１ｊが、ダミーアプリ確認部３１ｍに対して第１アプリのＰａａＳシステム２０での運用状況がダミーアプリとして起動中か否かの確認を要求（ダミーアプリ確認要求）する（ステップＳ４８）。
【０１８０】
次に、ダミーアプリ確認部３１ｍが、登録済みアプリ管理テーブル３１ｓ（「ダミーフラグ」、「運用状況」）を参照して、第１アプリのＰａａＳシステム２０での運用状況がダミーアプリとして起動中か否かを判定（確認）する（ステップＳ４９）。
【０１８１】
この判定の結果、第１アプリのＰａａＳシステム２０での運用状況がダミーアプリとして起動中である場合（ステップＳ４９：ＹＥＳ）、ダミーアプリ確認部３１ｍが、第１アプリの正規アプリとしての起動を、要求アプリ起動停止部３１ｎに対して要求する（ステップＳ５０）。
【０１８２】
次に、要求アプリ起動停止部３１ｎが、第１アプリ（ここでは、アプリ名apr04）に対応付けられた第１契約者（ここでは、Usr01）のアプリ（アプリ名）のうち「運用状況」が起動中のアプリの「予約済みメモリ量」とステップＳ１０で受信した第１アプリの「予約済みメモリ量」とを加算した合計量が、第１契約者（ここでは、Usr01）のメモリ上限量を超えるか否かを判定（確認）する（ステップＳ５１）。
【０１８３】
この判定の結果、合計量がメモリ上限量を超えない場合（ステップＳ５２：ＮＯ）、要求アプリ起動停止部３１ｎが、第１アプリの正規アプリとしての起動を、ＰａａＳシステム２０に対して要求する（ステップＳ５３）。
【０１８４】
この第１アプリ起動要求は、具体的には、アプリ名（ここでは、apr04）、正規アプリ（JAVA等のソースファイル）、予約済みメモリ量（ここでは、1GB）、予約済みディスク量（ここでは、1GB）を含む。
【０１８５】
なお、正規アプリ（JAVA等のソースファイル）は、次のようにして取得することができる。例えば、まず、第１アプリ（ここでは、アプリ名apr04）をキーとして図１４に示す登録済みアプリ管理テーブル３１ｓ（「ファイル名」）から第１アプリが対応付けられたファイル名（ここでは、test01.java）を検索する。次に、その検索したファイル名（ここでは、test01.java）をキーとしてダミーアプリ＆正規アプリ記憶部３１ｖからその検索したファイル名の正規アプリ（JAVA等のソースファイル）を抽出する。
【０１８６】
以上のようにして、正規アプリ（JAVA等のソースファイル）を取得することができる。
【０１８７】
なお、予約済みメモリ量、予約済みディスク量は、第１アプリ（ここでは、アプリ名apr04）をキーとして図１４に示す登録済みアプリ管理テーブル３１ｓ（「予約済みメモリ量」、「予約済みディスク量」）から第１アプリが対応付けられた予約済みメモリ量、予約済みディスク量を検索することで取得することができる。
【０１８８】
ＰａａＳシステム２０は、アプリ起動制御システム３０（要求アプリ起動停止部３１ｎ）から第１アプリ起動要求（ステップＳ５３）を受信した場合、その受信したアプリ名（ここでは、apr04）等を、アプリ情報テーブル２１ｎに記憶（例えば、上書き）する。
【０１８９】
また、ＰａａＳシステム２０は、アプリ起動制御システム３０（要求アプリ起動停止部３１ｎ）から受信した正規アプリ（JAVA等のソースファイル）がコピー（ダミーアプリに上書き）されたコンテナ２１ｊ２（及び正規アプリ）を起動させる。
【０１９０】
さらに、ＰａａＳシステム２０は、アプリ起動制御システム３０に対して正規アプリの起動状態を通知（送信）する。例えば、ＰａａＳシステム２０は、コンテナ（及び正規アプリ）が正常に起動した場合、起動状態として起動中を通知し、何らかの理由で正常に起動しなかった場合、起動状態として停止中を通知する。
【０１９１】
また、ＰａａＳシステム２０は、正規アプリの起動状態に応じて、アプリ情報テーブル２１ｎ中の「アプリ名」（ここでは、apr04）の「運用状況」に起動中（正規アプリとして起動中）又は停止中を記憶する。
【０１９２】
なお、ステップＳ５１の判定の結果、合計量がメモリ上限量を超える場合（ステップＳ５２：ＹＥＳ）、ステップＳ５１の処理が繰り返し実行される。なお、このようにしても、ステップＳ５１の処理が無限に繰り返されることはない。これは、ダミーアプリ起動処理（図１８参照）が実行されるため、やがて、アプリ変更予定時刻を経過した正規アプリ（相対的に予約メモリ量が大きい）がダミーアプリ（相対的に予約メモリ量が小さい）で上書きされ、ステップＳ５２：ＮＯとなり、ステップＳ５３以下の処理が実行されることによるものである。
【０１９３】
次に、アプリ起動制御システム３０（例えば、アプリ管理部３１ｑ）は、ステップＳ５０で起動要求したアプリの起動状態を、ＰａａＳシステム２０から受信した場合（ステップＳ５４：ＹＥＳ）、登録済みアプリ管理テーブル３１ｓを更新する（ステップＳ５５）。
【０１９４】
例えば、アプリ起動制御システム３０（例えば、アプリ管理部３１ｑ）は、ＰａａＳシステム２０から正規アプリの起動状態を受信した場合（ステップＳ５４：ＹＥＳ）、その受信した正規アプリの起動状態に応じて、登録済みアプリ管理テーブル３１ｓ中の「アプリ名」（ここでは、apr04）の「運用状況」に起動中（正規アプリとして起動中）又は停止中を記憶する。また、アプリ起動制御システム３０（例えば、アプリ管理部３１ｑ）は、登録済みアプリ管理テーブル３１ｓの「アプリ名」（ここでは、apr04）の「ダミーフラグ」にＮｏを記憶する。
【０１９５】
次に、要求アプリ起動停止部３１ｎが、要求メッセージ転送部３１ｐに対して要求メッセージの転送を要求する（ステップＳ５６）。
【０１９６】
次に、要求メッセージ転送部３１ｐが、第１アプリ（ここでは、アプリ名apr04）専用の要求キュー３１ｔから要求メッセージを一つ取得し、その要求メッセージをＰａａＳシステム２０へ転送する（ステップＳ５７）。
【０１９７】
ステップＳ５７の処理は、第１アプリ専用の要求キュー３１ｔが空になるまで実行され（ステップＳ５８：ＮＯ）、第１アプリ専用の要求キュー３１ｔが空になった場合（ステップＳ５８：ＹＥＳ）、要求メッセージ受信処理が終了する。
【０１９８】
一方、ステップＳ４９での判定の結果、第１アプリのＰａａＳシステム２０での運用状況がダミーアプリとして起動中でない場合（ステップＳ４９：ＮＯ）、すなわち、第１アプリのＰａａＳシステム２０での運用状況が正規アプリとして起動中である場合、ステップＳ５６〜Ｓ５８の処理が実行される。
【０１９９】
なお、ステップＳ４２の判定の結果、第１アプリ（アプリ名）が登録済みアプリ管理テーブル３１ｓに登録されていない場合（ステップＳ４３：ＮＯ）、要求メッセージ登録確認部３１ｊが、要求メッセージ転送部３１ｐに対して要求メッセージ転送を要求する（ステップＳ５９）。
【０２００】
次に、要求メッセージ転送部３１ｐが、ステップＳ４０で受信した要求メッセージをＰａａＳシステム２０に転送する（ステップＳ６０）。
【０２０１】
以上のとおり、本実施形態によれば、アプリ利用者から受信した第１アプリ宛の要求メッセージの宛先である第１アプリがＰａａＳシステム２０で起動（イベントドリブン）するまでの間、アプリ利用者から受信した第１アプリ宛の要求メッセージの取りこぼしを防止することができる。
【０２０２】
これは、アプリ利用者から受信した第１アプリ宛の要求メッセージをＰａａＳシステム２０が第１アプリ（正規アプリ）起動前に保存する第１アプリ専用の要求キュー３１ｔを設け、ＰａａＳシステム２０が第１アプリ（正規アプリ）起動後、第１アプリ専用の要求キュー３１ｔに保存された第１アプリ宛の要求メッセージをＰａａＳシステム２０へ転送することによるものである。
【０２０３】
また、上記のとおり、従来、アプリの登録・削除が行われていたが、ＰａａＳシステム２０においては、アプリを削除すると、アプリ名を管理している情報が消えるため、他の開発者が同じアプリ名で登録可能となり、希望するアプリ名が使用できない場合があるという課題がある。
【０２０４】
これに対して、本実施形態によれば、アプリを削除するのではなく、あるアプリ名に関し、ダミーアプリ又は正規アプリのいずれかが常にＰａａＳシステム２０に登録されるため、他の開発者が同じアプリ名で登録するのを防止することができる。
【０２０５】
また、本実施形態によれば、アプリ変更予定時刻を経過した正規アプリ（相対的に予約メモリ量が大きい）を同じアプリ名を持つダミーアプリ（相対的に予約メモリ量が小さい）に置き換えるため、予約メモリを削減することができる。
【０２０６】
また、本実施形態によれば、アプリ利用者から第１アプリ宛の要求メッセージを受信した場合にのみダミーアプリから同じアプリ名を持つ正規アプリに置き換えるため、ＰａａＳシステム２０上のアプリの利用時のみリソースが消費されるようなイベントドリブンサービスを実現することができる。
【０２０７】
［第２実施形態］
次に、第２実施形態の情報処理システム１０Ａの概要について説明する。
【０２０８】
図１は、第２実施形態の情報処理システム１０Ａの概略構成図である。
【０２０９】
以下、第１実施形態との相違点を中心に説明し、第１実施形態と同様の構成については同一の符号を付し、適宜説明を省略する。
【０２１０】
図１に示すように、本実施形態の情報処理システム１０Ａは、第１実施形態と同様、ＰａａＳシステム２０、アプリ起動制御システム３０Ａ、開発者端末４０、アプリ利用者端末５０等を備える。開発者が本発明の契約者に相当し、アプリ利用者が本発明のユーザに相当する。
【０２１１】
開発者は、開発者端末４０を介して正規アプリの登録要求をアプリ起動制御システム３０Ａに送信する。アプリ起動制御システム３０Ａは、開発者から正規アプリの登録要求を受信したとき、該アプリ及び該アプリのＰａａＳシステム２０での運用状況を開発者ごとに登録済みアプリ管理テーブル３１ｓ２に記憶する。これは、図１３と同様の処理であるため、説明を省略する。
【０２１２】
アプリ起動制御システム３０Ａは、アプリ停止時間テーブル３１ｕ２を参照して、運用状況が起動中のアプリ（正規アプリ）のうち最後の要求メッセージを処理（例えば、受信）した時刻（例えば、要求メッセージ受信時刻）から所定時間経過したアプリの停止をＰａａＳシステム２０に要求するとともに所定時間経過したアプリ停止時間テーブル３１ｕ２中のアプリの運用状況を停止中に変更する。ＰａａＳシステム２０は、正規アプリがコピーされたコンテナ（及び正規アプリ）を停止させる。
【０２１３】
なお、最後の要求メッセージを処理した時刻は、要求メッセージ受信時刻に限らず、要求キュー３１ｔに記憶された該最後の要求メッセージをＰａａＳシステム２０に転送した時刻であってもよい。
【０２１４】
また、アプリ起動制御システム３０Ａは、ユーザから第１アプリ宛の要求メッセージを受信したとき、次の処理を行う。
【０２１５】
アプリ起動制御システム３０Ａは、登録済みアプリ管理テーブル３１ｓ２を参照して第１アプリの運用状況が停止中の場合、要求キュー３１ｔに第１アプリ宛の要求メッセージを記憶する。要求キュー３１ｔが本発明の第２メモリに相当する。
【０２１６】
次に、第１アプリに対応づけられた第１契約者のアプリのうち運用状況が起動中のアプリの予約済みメモリ量と第１アプリの予約済みメモリ量とを加算した合計量が、第１契約者のメモリ上限量を超えない場合、第１アプリの起動をＰａａＳシステム２０に要求する。ＰａａＳシステム２０は、正規アプリがコピーされたコンテナ（及び正規アプリ）を起動させる。
【０２１７】
そして、第１アプリがＰａａＳシステム２０で起動後、要求キュー３１ｔに記憶された第１アプリ宛の要求メッセージをＰａａＳシステム２０に転送するとともに登録済みアプリ管理テーブル３１ｓ２中の第１アプリの運用状況を起動中に変更する。ＰａａＳシステム２０は、第１アプリ宛の要求メッセージを起動中の第１アプリに転送する。
【０２１８】
図２２は、アプリ起動制御システム３０Ａの主要機能及びアプリ起動制御システム３０Ａが持つテーブルを説明するための図である。
【０２１９】
図２２に示すように、本実施形態では、第１実施形態（図８参照）と比べ、さらに、アプリ確認部３１ｗが追加されている。
【０２２０】
また、本実施形態では、アプリ変更時間テーブル３１ｕ（図１１参照）に代えて、アプリ停止時間テーブル３１ｕ２（図２３参照）が用いられる。
【０２２１】
また、本実施形態では、登録済みアプリ管理テーブル３１ｓ（図９参照）に代えて、登録済みアプリ管理テーブル３１ｓ２（図２４参照）が用いられる。
【０２２２】
図２５は、第２実施形態のアプリ起動制御システム３０におけるアプリ停止処理の一例を説明するためのフローチャートである。
【０２２３】
まず、アプリ監視制御部３１ｒが、アプリ停止時間テーブル３１ｕ２からアプリ毎に要求メッセージ受信時刻、アプリ停止時間を取得する（ステップＳ６０）。
【０２２４】
次に、アプリ監視制御部３１ｒが、アプリ停止予定時間（＝要求メッセージ受信時刻＋アプリ停止時間）を計算する（ステップＳ６１）。
【０２２５】
次に、アプリ停止予定時刻を超えるアプリ名がある場合（ステップＳ６２：ＹＥＳ）、アプリ監視制御部３１ｒが、要求アプリ起動停止部３１ｎに対して該当アプリの停止を要求する（ステップＳ６３）。
【０２２６】
次に、要求アプリ起動停止部３１ｎが、該当アプリの停止を、ＰａａＳシステム２０に対して要求する（ステップＳ６４）。
【０２２７】
このアプリ停止要求は、該当アプリのアプリ名（例えば、図２３中のapr01）を含む。
【０２２８】
ＰａａＳシステム２０は、アプリ起動制御システム３０（要求アプリ起動停止部３１ｎ）からアプリ停止要求（ステップＳ６４）を受信した場合、その受信したアプリ名（ここでは、apr01）のアプリ（正規アプリ）がコピーされたコンテナ２１ｊ２を（及び正規アプリ）を停止させる。なお、停止とは、アプリ（正規アプリ）がメモリ２１ｃ（又はディスク等のストレージ２２）上に存在するが、リソースを消費しない状態（例えば、使用ＣＰＵ等が０の状態）をいう。
【０２２９】
さらに、ＰａａＳシステム２０は、アプリ起動制御システム３０に対してアプリ（正規アプリ）の起動状態を通知（送信）する。例えば、ＰａａＳシステム２０は、コンテナ（及びダミーアプリ）が正常に停止した場合、起動状態として停止中を通知する。
【０２３０】
また、ＰａａＳシステム２０は、コンテナ（及びダミーアプリ）が正常に停止した場合、アプリ情報テーブル２１ｎ中の「アプリ名」（ここでは、apr04）の「運用状況」に停止中を記憶する。
【０２３１】
次に、アプリ起動制御システム３０（例えば、アプリ管理部３１ｑ）は、ステップＳ６４で起動要求したアプリの起動状態を、ＰａａＳシステム２０から受信した場合（ステップＳ６５：ＹＥＳ）、登録済みアプリ管理テーブル３１ｓ２を更新する（ステップＳ６６）。
【０２３２】
例えば、アプリ起動制御システム３０（例えば、アプリ管理部３１ｑ）は、ＰａａＳシステム２０からアプリの起動状態を受信した場合（ステップＳ６５：ＹＥＳ）、その受信したアプリの起動状態に応じて、登録済みアプリ管理テーブル３１ｓ２中の「アプリ名」（ここでは、apr01）の「運用状況」に起動中又は停止中を記憶する。
【０２３３】
上記ステップＳ６０〜Ｓ６６の処理は、指定間隔ごとに実行される。
【０２３４】
図２６、図２７は、アプリ起動制御システム３０Ａにおける要求メッセージ受信処理を説明するためのフローチャートである。
【０２３５】
以下、第１実施形態（図１９、図２０）との相違点を中心に説明し、第１実施形態（図１９、図２０）と同様の処理については同一の符号を付し、適宜説明を省略する。
【０２３６】
まず、要求メッセージ受信部３１ｈが、アプリ利用者からアプリ利用者端末５０を介して送信された第１アプリ宛の要求メッセージを受信するまで待機する（ステップＳ４０：ＮＯ）。
【０２３７】
以下、要求メッセージ受信部３１ｈが、アプリ利用者から第１アプリ宛（ここでは、アプリ名apr04、開発者名Usr01）の要求メッセージを受信した場合の処理の一例について説明する。
【０２３８】
要求メッセージ受信部３１ｈは、第１アプリ宛の要求メッセージを受信した場合（ステップＳ４０：ＹＥＳ）、要求メッセージ登録確認部３１ｊに対して第１アプリ（アプリ名）が登録済みアプリ管理テーブル３１ｓ２に登録（記憶）されているか否の確認を要求（アプリ確認要求）する（ステップＳ４１）。
【０２３９】
次に、要求メッセージ登録確認部３１ｊは、第１アプリ（アプリ名）が登録済みアプリ管理テーブル３１ｓ２に登録されているか否かを判定（確認）する（ステップＳ４２）。
【０２４０】
この判定の結果、第１アプリ（アプリ名）が登録済みアプリ管理テーブル３１ｓ２に登録されている場合（ステップＳ４３：ＹＥＳ）、次の第１〜第３の処理が実行される。
【０２４１】
第１の処理は、アプリ停止時間テーブル３１ｕ２中の要求メッセージ受信時刻を更新する処理である。
【０２４２】
具体的には、まず、要求メッセージ登録確認部３１ｊが、アプリ監視制御部３１ｒに対して要求メッセージ受信時刻を通知する（ステップＳ４４）。
【０２４３】
次に、アプリ監視制御部３１ｒが、アプリ停止時間テーブル３１ｕ２中の「アプリ名」が第１アプリの「要求メッセージ受信時刻」を、要求メッセージ登録確認部３１ｊから通知された要求メッセージ受信時刻で更新（例えば、上書き）する（ステップＳ４５）。
【０２４４】
第２の処理は、ステップＳ４０で受信した要求メッセージを要求キュー３１ｔに保存する処理である。
【０２４５】
具体的には、まず、要求メッセージ登録確認部３１ｊが、要求メッセージ保存部３１ｋに対してステップＳ４０で受信した要求メッセージの保存を要求する（ステップＳ４６）。
【０２４６】
次に、要求メッセージ保存部３１ｋが、ステップＳ４０で受信した要求メッセージを第１アプリ専用の要求キュー３１ｔに保存する（ステップＳ４７）。
【０２４７】
第３の処理は、第１アプリのＰａａＳシステム２０での運用状況が停止中である場合、第１アプリの起動を、ＰａａＳシステム２０に対して要求する処理である。
【０２４８】
具体的には、まず、要求メッセージ登録確認部３１ｊが、アプリ確認部３１ｗに対して第１アプリの動作確認を要求する（ステップＳ７０）。
【０２４９】
次に、アプリ確認部３１ｗが、登録済みアプリ管理テーブル３１ｓ２（「運用状況」）を参照して、第１アプリのＰａａＳシステム２０での運用状況が起動中か否かを判定（確認）する（ステップＳ７１）。
【０２５０】
この判定の結果、第１アプリのＰａａＳシステム２０での運用状況が起動中である場合（ステップＳ４９Ａ:ＹＥＳ）、アプリ確認部３１ｗが、第１アプリの起動を、要求アプリ起動停止部３１ｎに対して要求する（ステップＳ５０Ａ）。
【０２５１】
次に、要求アプリ起動停止部３１ｎが、第１アプリ（ここでは、アプリ名apr04）に対応付けられた第１契約者（ここでは、Usr01）のアプリ（アプリ名）のうち「運用状況」が起動中のアプリの「予約済みメモリ量」とステップＳ４０で受信した第１アプリの「予約済みメモリ量」とを加算した合計量が、第１契約者（ここでは、Usr01）のメモリ上限量を超えるか否かを判定（確認）する（ステップＳ５１）。
【０２５２】
この判定の結果、合計量がメモリ上限量を超えない場合（ステップＳ５２：ＮＯ）、要求アプリ起動停止部３１ｎが、第１アプリの起動を、ＰａａＳシステム２０に対して要求する（ステップＳ５３Ａ）。
【０２５３】
この第１アプリ起動要求は、第１アプリのアプリ名（ここでは、apr04）を含む。
【０２５４】
ＰａａＳシステム２０は、アプリ起動制御システム３０（要求アプリ起動停止部３１ｎ）から第１アプリ起動要求（ステップＳ５３Ａ）を受信した場合、その受信したアプリ名のアプリ（正規アプリ）がコピーされたコンテナ２１ｊ２（及び正規アプリ）を起動させる。
【０２５５】
さらに、ＰａａＳシステム２０は、アプリ起動制御システム３０に対して正規アプリの起動状態を通知（送信）する。例えば、ＰａａＳシステム２０は、コンテナ（及び正規アプリ）が正常に起動した場合、起動状態として起動中を通知し、何らかの理由で正常に起動しなかった場合、起動状態として停止中を通知する。
【０２５６】
また、ＰａａＳシステム２０は、正規アプリの起動状態に応じて、アプリ情報テーブル２１ｎ中の「アプリ名」（ここでは、apr04）の「運用状況」に起動中（正規アプリとして起動中）又は停止中を記憶する。
【０２５７】
次に、アプリ起動制御システム３０（例えば、アプリ管理部３１ｑ）は、ステップＳ５０Ａで起動要求したアプリの起動状態を、ＰａａＳシステム２０から受信した場合（ステップＳ５４：ＹＥＳ）、登録済みアプリ管理テーブル３１ｓを更新する（ステップＳ５５）。
【０２５８】
例えば、アプリ起動制御システム３０（例えば、アプリ管理部３１ｑ）は、ＰａａＳシステム２０からアプリの起動状態を受信した場合（ステップＳ５４：ＹＥＳ）、その受信したアプリの起動状態に応じて、登録済みアプリ管理テーブル３１ｓ中の「アプリ名」（ここでは、apr04）の「運用状況」に起動中又は停止中を記憶する。
【０２５９】
次に、要求アプリ起動停止部３１ｎが、要求メッセージ転送部３１ｐに対して要求メッセージの転送を要求する（ステップＳ５６）。
【０２６０】
次に、要求メッセージ転送部３１ｐが、第１アプリ（ここでは、アプリ名apr04）専用の要求キュー３１ｔから要求メッセージを一つ取得し、その要求メッセージをＰａａＳシステム２０へ転送する（ステップＳ５７）。
【０２６１】
ステップＳ５７の処理は、第１アプリ専用の要求キュー３１ｔが空になるまで実行され（ステップＳ５８：ＮＯ）、第１アプリ専用の要求キュー３１ｔが空になった場合（ステップＳ５８：ＹＥＳ）、要求メッセージ受信処理が終了する。
【０２６２】
一方、ステップＳ４９での判定の結果、第１アプリのＰａａＳシステム２０での運用状況が起動中でない場合（ステップＳ４９：ＮＯ）、すなわち、第１アプリのＰａａＳシステム２０での運用状況が停止中である場合、ステップＳ５６〜Ｓ５８の処理が実行される。
【０２６３】
なお、ステップＳ４３の判定の結果、第１アプリ（アプリ名）が登録済みアプリ管理テーブル３１ｓに登録されていない場合（ステップＳ４３：ＮＯ）、要求メッセージ登録確認部３１ｊが、要求メッセージ転送部３１ｐに対して要求メッセージ転送を要求する（ステップＳ５９）。
【０２６４】
次に、要求メッセージ転送部３１ｐが、ステップＳ４０で受信した要求メッセージをＰａａＳシステム２０に転送する（ステップＳ６０）。
【０２６５】
以上のとおり、本実施形態によれば、アプリ利用者から受信した第１アプリ宛の要求メッセージの宛先である第１アプリがＰａａＳシステム２０で起動（イベントドリブン）するまでの間、アプリ利用者から受信した第１アプリ宛の要求メッセージの取りこぼしを防止することができる。
【０２６６】
これは、アプリ利用者から受信した第１アプリ宛の要求メッセージをＰａａＳシステム２０が第１アプリ（正規アプリ）起動前に保存する第１アプリ専用の要求キュー３１ｔを設け、ＰａａＳシステム２０が第１アプリ（正規アプリ）起動後、第１アプリ専用の要求キュー３１ｔに保存された第１アプリ宛の要求メッセージをＰａａＳシステム２０へ転送することによるものである。
【０２６７】
また、上記のとおり、従来、アプリの登録・削除が行われていたが、ＰａａＳシステム２０においては、アプリを削除すると、アプリ名を管理している情報が消えるため、他の開発者が同じアプリ名で登録可能となり、希望するアプリ名が使用できない場合があるという課題がある。
【０２６８】
これに対して、本実施形態によれば、アプリを削除するのではなく、あるアプリ名に関し、起動中又は停止中の正規アプリが常にＰａａＳシステム２０に登録されるため、他の開発者が同じアプリ名で登録するのを防止することができる。
【０２６９】
また、本実施形態によれば、アプリ利用者から第１アプリ宛の要求メッセージを受信した場合にのみＰａａＳシステムでの運用状況が停止中から起動中となるため、ＰａａＳシステム２０上のアプリの利用時のみリソースが消費されるようなイベントドリブンサービスを実現することができる。
【０２７０】
以上の実施形態をまとめると、次の付記のとおりである。
【０２７１】
（付記１）
システムで起動するソフトウェア及び該ソフトウェアの前記システムでの運用状況を契約者ごとに第１メモリに記憶し、
最後の要求メッセージを処理した時刻から所定時間経過したソフトウェアの停止を前記システムに要求するとともに前記所定時間経過したソフトウェアの運用状況を停止中に変更し、
ユーザから第１ソフトウェア宛の要求メッセージを受信したとき、第２メモリに前記第１ソフトウェア宛の要求メッセージを記憶する第１処理を行い、
該第１ソフトウェアの運用状況が起動中の場合、前記第２メモリに記憶された要求メッセージを前記システムに転送する第２処理を行い、
該第１ソフトウェアの運用状況が停止中の場合、前記第１ソフトウェアに対応づけられた第１契約者のソフトウェアのうち運用状況が起動中のソフトウェアのリソースと前記第１ソフトウェアのリソースとを加算した合計量が、前記第１契約者のリソース上限量を超えない場合、前記第１ソフトウェアの起動を前記システムに要求し、該第１ソフトウェアの起動後、前記第２メモリに記憶された要求メッセージを前記システムに転送するとともに前記第１ソフトウェアの運用状況を起動中に変更する第３処理を行う、
処理をコンピュータで実行させるソフトウェア制御プログラム。
【０２７２】
（付記２）
システムで起動するソフトウェア及び該ソフトウェアの前記システムでの運用状況を契約者ごとに第１メモリに記憶し、
運用状況が正規ソフトウェアとして起動中のソフトウェアのうち最後の要求メッセージを処理した時刻から所定時間経過したソフトウェアのダミーソフトウェアとしての起動を前記システムに要求するとともに前記所定時間経過したソフトウェアの運用状況をダミーソフトウェアとして起動中に変更し、
ユーザから第１ソフトウェア宛の要求メッセージを受信したとき、第２メモリに前記第１ソフトウェア宛の要求メッセージを記憶する第１処理を行い、
該第１ソフトウェアの運用状況が正規ソフトウェアとして起動中の場合、前記第２メモリに記憶された要求メッセージを前記システムに転送する第２処理を行い、
該第１ソフトウェアの運用状況がダミーソフトウェアとして起動中の場合、第２メモリに前記第１ソフトウェア宛の要求メッセージを記憶し、前記第１ソフトウェアに対応づけられた第１契約者のソフトウェアのうち運用状況が起動中のソフトウェアのリソースと前記第１ソフトウェアのリソースとを加算した合計量が、前記第１契約者のリソース上限量を超えない場合、前記第１ソフトウェアの正規ソフトウェアとしての起動を前記システムに要求し、該第１ソフトウェアが正規ソフトウェアとして起動後、前記第２メモリに記憶された要求メッセージを前記システムに転送するとともに前記第１ソフトウェアの運用状況を正規ソフトウェアとして起動中に変更する第３処理を行う、
処理をコンピュータで実行させるソフトウェア制御プログラム。
【０２７３】
（付記３）
付記１又は２において、
ユーザから第１ソフトウェア宛の要求メッセージを受信したとき、該第１ソフトウェアが前記第１メモリに記憶されていない場合、前記第１処理、前記第２処理、前記第３処理を行うことなく、前記システムへ該第１ソフトウェア宛の要求メッセージを転送し、該第１ソフトウェアが前記第１メモリに記憶されている場合、前記第１処理、前記第２処理、前記第３処理を行うソフトウェア制御プログラム。
【０２７４】
（付記４）
付記１から３のいずれかの付記において、
契約者からソフトウェアの登録要求を受信したとき、該ソフトウェア及び該ソフトウェアの運用状況を契約者ごとに前記第１メモリに記憶するソフトウェア制御プログラム。
【０２７５】
（付記５）
付記１から４のいずれかの付記において、前記第２メモリは、前記第１ソフトウェア専用のメモリであるソフトウェア制御プログラム。
【０２７６】
（付記６）
付記１から５のいずれかの付記において、
前記第２メモリは、キューであり、
前記第２メモリに記憶された要求メッセージを前記システムに転送する場合、該要求メッセージを順に前記システムに転送するソフトウェア制御プログラム。
【０２７７】
（付記７）
付記１から６のいずれかの付記において、
前記最後の要求メッセージを処理した時刻は、該最後の要求メッセージをユーザから受信した時刻又は前記第２メモリに記憶された該最後の要求メッセージを前記システムに転送した時刻であるソフトウェア制御プログラム。
【０２７８】
（付記８）
メモリと、
前記メモリにアクセス可能なプロセッサと、を備え、
前記プロセッサは、
システムで起動するソフトウェア及び該ソフトウェアの前記システムでの運用状況を契約者ごとに第１メモリに記憶し、
最後の要求メッセージを処理した時刻から所定時間経過したソフトウェアの停止を前記システムに要求するとともに前記所定時間経過したソフトウェアの運用状況を停止中に変更し、
ユーザから第１ソフトウェア宛の要求メッセージを受信したとき、第２メモリに前記第１ソフトウェア宛の要求メッセージを記憶する第１処理を行い、
該第１ソフトウェアの運用状況が起動中の場合、前記第２メモリに記憶された要求メッセージを前記システムに転送する第２処理を行い、
該第１ソフトウェアの運用状況が停止中の場合、前記第１ソフトウェアに対応づけられた第１契約者のソフトウェアのうち運用状況が起動中のソフトウェアのリソースと前記第１ソフトウェアのリソースとを加算した合計量が、前記第１契約者のリソース上限量を超えない場合、前記第１ソフトウェアの起動を前記システムに要求し、該第１ソフトウェアの起動後、前記第２メモリに記憶された要求メッセージを前記システムに転送するとともに前記第１ソフトウェアの運用状況を起動中に変更する第３処理を行う、
処理を実行するソフトウェア制御装置。
【０２７９】
（付記９）
メモリと、
前記メモリにアクセス可能なプロセッサと、を備え、
前記プロセッサは、
システムで起動するソフトウェア及び該ソフトウェアの前記システムでの運用状況を契約者ごとに第１メモリに記憶し、
運用状況が正規ソフトウェアとして起動中のソフトウェアのうち最後の要求メッセージを処理した時刻から所定時間経過したソフトウェアのダミーソフトウェアとしての起動を前記システムに要求するとともに前記所定時間経過したソフトウェアの運用状況をダミーソフトウェアとして起動中に変更し、
ユーザから第１ソフトウェア宛の要求メッセージを受信したとき、第２メモリに前記第１ソフトウェア宛の要求メッセージを記憶する第１処理を行い、
該第１ソフトウェアの運用状況が正規ソフトウェアとして起動中の場合、前記第２メモリに記憶された要求メッセージを前記システムに転送する第２処理を行い、
該第１ソフトウェアの運用状況がダミーソフトウェアとして起動中の場合、第２メモリに前記第１ソフトウェア宛の要求メッセージを記憶し、前記第１ソフトウェアに対応づけられた第１契約者のソフトウェアのうち運用状況が起動中のソフトウェアのリソースと前記第１ソフトウェアのリソースとを加算した合計量が、前記第１契約者のリソース上限量を超えない場合、前記第１ソフトウェアの正規ソフトウェアとしての起動を前記システムに要求し、該第１ソフトウェアが正規ソフトウェアとして起動後、前記第２メモリに記憶された要求メッセージを前記システムに転送するとともに前記第１ソフトウェアの運用状況を正規ソフトウェアとして起動中に変更する第３処理を行う、処理を実行するソフトウェア制御装置。
【０２８０】
（付記１０）
システムで起動するソフトウェア及び該ソフトウェアの前記システムでの運用状況を契約者ごとに第１メモリに記憶し、
最後の要求メッセージを処理した時刻から所定時間経過したソフトウェアの停止を前記システムに要求するとともに前記所定時間経過したソフトウェアの運用状況を停止中に変更し、
ユーザから第１ソフトウェア宛の要求メッセージを受信したとき、第２メモリに前記第１ソフトウェア宛の要求メッセージを記憶する第１処理を行い、
該第１ソフトウェアの運用状況が起動中の場合、前記第２メモリに記憶された要求メッセージを前記システムに転送する第２処理を行い、
該第１ソフトウェアの運用状況が停止中の場合、前記第１ソフトウェアに対応づけられた第１契約者のソフトウェアのうち運用状況が起動中のソフトウェアのリソースと前記第１ソフトウェアのリソースとを加算した合計量が、前記第１契約者のリソース上限量を超えない場合、前記第１ソフトウェアの起動を前記システムに要求し、該第１ソフトウェアの起動後、前記第２メモリに記憶された要求メッセージを前記システムに転送するとともに前記第１ソフトウェアの運用状況を起動中に変更する第３処理を行う、
処理をコンピュータで実行させるソフトウェア制御方法。
【０２８１】
（付記１１）
システムで起動するソフトウェア及び該ソフトウェアの前記システムでの運用状況を契約者ごとに第１メモリに記憶し、
運用状況が正規ソフトウェアとして起動中のソフトウェアのうち最後の要求メッセージを処理した時刻から所定時間経過したソフトウェアのダミーソフトウェアとしての起動を前記システムに要求するとともに前記所定時間経過したソフトウェアの運用状況をダミーソフトウェアとして起動中に変更し、
ユーザから第１ソフトウェア宛の要求メッセージを受信したとき、第２メモリに前記第１ソフトウェア宛の要求メッセージを記憶する第１処理を行い、
該第１ソフトウェアの運用状況が正規ソフトウェアとして起動中の場合、前記第２メモリに記憶された要求メッセージを前記システムに転送する第２処理を行い、
該第１ソフトウェアの運用状況がダミーソフトウェアとして起動中の場合、第２メモリに前記第１ソフトウェア宛の要求メッセージを記憶し、前記第１ソフトウェアに対応づけられた第１契約者のソフトウェアのうち運用状況が起動中のソフトウェアのリソースと前記第１ソフトウェアのリソースとを加算した合計量が、前記第１契約者のリソース上限量を超えない場合、前記第１ソフトウェアの正規ソフトウェアとしての起動を前記システムに要求し、該第１ソフトウェアが正規ソフトウェアとして起動後、前記第２メモリに記憶された要求メッセージを前記システムに転送するとともに前記第１ソフトウェアの運用状況を正規ソフトウェアとして起動中に変更する第３処理を行う、処理をコンピュータで実行させるソフトウェア制御方法。
【符号の説明】
【０２８２】
１０、１０Ａ：情報処理システム
２０：ＰａａＳシステム
【図１】
2018133046.tif 000003
【図２】
2018133046.tif 000004
【図３】
2018133046.tif 000005
【図４】
2018133046.tif 000006
【図５】
2018133046.tif 000007
【図６】
2018133046.tif 000008
【図７】
2018133046.tif 000009
【図８】
2018133046.tif 000010
【図９】
2018133046.tif 000011
【図１０】
2018133046.tif 000012
【図１１】
2018133046.tif 000013
【図１２】
2018133046.tif 000014
【図１３】
2018133046.tif 000015
【図１４】
2018133046.tif 000016
【図１５】
2018133046.tif 000017
【図１６】
2018133046.tif 000018
【図１７】
2018133046.tif 000019
【図１８】
2018133046.tif 000020
【図１９】
2018133046.tif 000021
【図２０】
2018133046.tif 000022
【図２１】
2018133046.tif 000023
【図２２】
2018133046.tif 000024
【図２３】
2018133046.tif 000025
【図２４】
2018133046.tif 000026
【図２５】
2018133046.tif 000027
【図２６】
2018133046.tif 000028
【図２７】
2018133046.tif 000029