(57)【特許請求の範囲】
【請求項１】
第１サーバ装置と第２サーバ装置とを有する情報処理システムであって、
前記第１サーバ装置は、
端末装置で使用されるアプリケーションのプログラムである第１プログラムおよび当該アプリケーションが利用するサービスのプログラムである第２プログラムを記憶する記憶部と、
前記第２サーバ装置から通知された状況に応じた前記第１プログラムおよび前記第２プログラムを配信する配信部とを有し、
前記第２サーバ装置は、
前記端末装置からアクセス要求を受け付ける受付部と、
前記受付部により受け付けたアクセス要求に応じて、前記端末装置の状況を前記第１サーバ装置に通知して前記第１プログラムおよび前記第２プログラムを取得する取得部と、
前記取得部により取得された前記第１プログラムを前記端末装置に送信する送信部と、
前記取得部により取得された前記第２プログラムによるサービスを提供する提供部とを有する
ことを特徴とする情報処理システム。 
【請求項２】
前記取得部は、前記端末装置からアクセス要求を受け付けた場合、前記第１プログラムおよび当該第１プログラムのアプリケーションが利用するサービスを呼び出す定義情報を取得し、
前記取得部は、取得した前記定義情報に定義されたサービスが呼び出された場合、当該定義情報に定義されたサービスのプログラムである前記第２プログラムを取得する
ことを特徴とする請求項１に記載の情報処理システム。 
【請求項３】
前記取得部は、前記端末装置からアクセス要求を受け付けた場合、前記第１プログラムおよび当該第１プログラムのアプリケーションが利用するサービスを呼び出す定義情報を取得し、続けて、取得した前記定義情報に定義されたサービスのプログラムである前記第２プログラムを取得する
ことを特徴とする請求項１に記載の情報処理システム。 
【請求項４】
前記配信部は、前記定義情報と共にサービスの動作条件をさらに配信し、
前記取得部は、前記定義情報と共に取得される前記動作条件を前記第２サーバ装置が満たす場合、前記定義情報に定義されたサービスのプログラムである前記第２プログラムを取得する
ことを特徴とする請求項２または３に記載の情報処理システム。 
【請求項５】
前記第２サーバ装置は、前記動作条件を前記第２サーバ装置が満たさない場合、前記端末装置からのサービスの呼び出しを前記第１サーバ装置に転送する転送部をさらに有し、
前記第１サーバ装置は、前記第２サーバ装置から転送して呼び出されたサービスのプログラムによるサービスを提供する第２提供部をさらに有する
ことを特徴とする請求項４に記載の情報処理システム。 
【請求項６】
前記配信部は、異なるサーバに分散可能とされたサービスの機能ごとに動作条件を配信し、
前記取得部は、前記第２サーバ装置が前記動作条件を満たすサービスの機能を構成するサービスのプログラムである前記第２プログラムを取得する
ことを特徴とする請求項４に記載の情報処理システム。 
【請求項７】
端末装置からアクセス要求を受け付ける受付部と、
前記アクセス要求に応じて前記端末装置の状況をサーバ装置に通知し、前記端末装置で使用されるアプリケーションのプログラムである第１プログラムおよび当該アプリケーションが利用するサービスのプログラムである第２プログラムを前記サーバ装置から取得する取得部と、
前記サーバ装置から配信された前記第１プログラムを前記端末装置に送信する送信部と、
前記サーバ装置から配信された前記第２プログラムによる前記サービスを提供する提供部と、
を有することを特徴とする情報処理装置。 
【請求項８】
端末装置で使用されるアプリケーションのプログラムである第１プログラムおよび当該アプリケーションが利用するサービスのプログラムである第２プログラムを記憶する第１サーバ装置と、前記サービスを提供する第２サーバ装置とにより前記サービスを配備するサービス配備方法であって、
前記第２サーバ装置は、前記端末装置からアクセス要求を受け付けると、アクセス要求に応じて前記端末装置の状況を前記第１サーバ装置に通知し、
前記第１サーバ装置は、前記第２サーバ装置から通知された状況に応じた前記第１プログラムおよび前記第２プログラムを配信し、
前記第２サーバ装置は、前記第１サーバ装置から配信された前記第１プログラムを前記端末装置に送信し、前記第１サーバ装置から配信された前記第２プログラムによるサービスを提供する
ことを特徴とするサービス配備方法。 
【請求項９】
端末装置からアクセス要求を受け付けると、アクセス要求に応じて前記端末装置の状況を、前記端末装置で使用されるアプリケーションのプログラムである第１プログラムおよび当該アプリケーションが利用するサービスのプログラムである第２プログラムを記憶する第１サーバ装置に通知し、
前記第１サーバ装置から配信された前記第１プログラムを前記端末装置に送信し、
前記第１サーバ装置から配信された前記第２プログラムによる前記サービスを提供する
処理を第２サーバ装置に実行させることを特徴とするサービス配備プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置、サービス配備方法およびサービス配備プログラムに関する。
【背景技術】
【０００２】
近年、Ｗｅｂ（World  Wide  Web）技術を活用したアプリケーションが数多く登場している。例えば、端末装置で動作するアプリケーションには、サーバが提供するサービスを利用して機能を実現するものがある。
【０００３】
また、サーバが端末装置の状況に応じてコンテンツを配信する技術がある。例えば、端末装置は、起動しているアプリケーションの種別情報をコンテンツの取得要求に書き込んでサーバに送信する。サーバは、取得要求に書き込まれたアプリケーションの種別情報に基づいて、端末装置に対してコンテンツを送信する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２０１２／０３３１１０号
【特許文献２】特開２００６−１６３７８０号公報
【特許文献３】特開２０１３−３５９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、端末装置では、使用される場所などの状況によって、使用されるアプリケーションやサービスが異なる場合がある。例えば、学校の教室では、教室に配置されたプロジェクタを制御するアプリケーションやサービスが使用される場合がある。また、会議室では、資料のデータを共有するアプリケーションやサービスが使用される場合がある。
【０００６】
そこで、例えば、それぞれのアプリケーションが使用される現場にサーバを配置し、サーバが、配置場所に応じたアプリケーションを端末装置に配信することが考えられる。このサーバとしては、例えば、無線ＬＡＮ（Local  Area  Network）のアクセスポイントの機能を有する小型のＰＣ（パーソナルコンピュータ）が想定される。
【０００７】
このように、それぞれのアプリケーションが使用される場所にサーバを配置する場合、管理者は、それぞれのサーバに対して、サーバの配置場所に応じたアプリケーションやサービスのプログラムをセットアップすることになる。しかし、サーバごとにセットアップするアプリケーションやサービスが異なるため、サーバのセットアップ作業が煩雑となる。
【０００８】
一方、サーバに全てのサービスのプログラムをセットアップする方法が考えられる。しかしながら、サーバに全てのサービスのプログラムをセットアップする方法では、サーバのストレージやメモリなどのリソースが圧迫され、不足する場合がある。
【０００９】
一つの側面では、状況に応じてサービスを適切に配備できる情報処理システム、情報処理装置、サービス配備方法およびサービス配備プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
第１の案では、情報処理システムは、第１サーバ装置と第２サーバ装置とを有する。第１サーバ装置は、記憶部と、配信部とを有する。記憶部は、端末装置で使用されるアプリケーションのプログラムである第１プログラムおよび当該アプリケーションが利用するサービスのプログラムである第２プログラムを記憶する。配信部は、第２サーバ装置から通知された状況に応じた第１プログラムおよび第２プログラムを配信する。第２サーバ装置は、受付部と、取得部と、送信部と、提供部とを有する。受付部は、端末装置からアクセス要求を受け付ける。取得部は、受付部により受け付けたアクセス要求に応じて、端末装置の状況を第１サーバ装置に通知して第１プログラムおよび第２プログラムを取得する。送信部は、取得部により取得された第１プログラムを端末装置に送信する。提供部は、取得部により取得された第２プログラムによるサービスを提供する。
【発明の効果】
【００１１】
本発明の一の実施態様によれば、状況に応じてサービスを適切に配備できるという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例１に係るシステムの概略的な構成の一例を示す図である。
【図２】図２は、実施例１に係る管理サーバの概略的な構成を示す図である。
【図３】図３は、配信定義情報のデータ構成の一例を示す図である。
【図４】図４は、実施例１に係るプレイスサーバの概略的な構成を示す図である。
【図５】図５は、配信情報のデータ構成の一例を示す図である。
【図６】図６は、実施例１に係るシステムによりサービスを配備する処理の流れの一例を概略的に示した図である。
【図７】図７は、配信情報に格納されるデータの変化の一例を示す図である。
【図８】図８は、プレイスサーバが実行する制御処理の手順の一例を示すフローチャートである。
【図９】図９は、管理サーバが実行する制御処理の手順の一例を示すフローチャートである。
【図１０】図１０は、実施例２に係るシステムによりサービスを配備する処理の流れの一例を概略的に示した図である。
【図１１】図１１は、プレイスサーバが実行する制御処理の手順の一例を示すフローチャートである。
【図１２】図１２は、実施例３に係る管理サーバの概略的な構成を示す図である。
【図１３】図１３は、実施例３に係る配信定義情報のデータ構成の一例を示す図である。
【図１４】図１４は、状況種別情報のデータ構成の一例を示す図である。
【図１５】図１５は、実施例３に係るプレイスサーバの概略的な構成を示す図である。
【図１６】図１６は、実施例３に係る配信情報のデータ構成の一例を示す図である。
【図１７】図１７は、実施例３に係るシステムによりサービスを配備する処理の流れの一例を概略的に示した図である。
【図１８】図１８は、プレイスサーバが実行する制御処理の手順の一例を示すフローチャートである。
【図１９】図１９は、プレイスサーバが実行する利用条件判定処理の手順の一例を示すフローチャートである。
【図２０】図２０は、プレイスサーバが実行する動作条件判定処理の手順の一例を示すフローチャートである。
【図２１】図２１は、サービス配備プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１３】
以下に、本発明にかかる情報処理システム、情報処理装置、サービス配備方法およびサービス配備プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１４】
［システム構成］
最初に、実施例１に係るシステム１０の一例を説明する。図１は、実施例１に係るシステムの概略的な構成の一例を示す図である。システム１０は、状況に応じてサービスの配備するシステムである。システム１０は、情報処理システムに相当する。なお、以下では、学校などの教育現場にシステム１０を適用した場合を例に説明する。
【００１５】
図１に示すように、システム１０は、管理サーバ１１と、プレイスサーバ１２と、端末装置１３とを有する。管理サーバ１１とプレイスサーバ１２は、ネットワークＮに通信可能に接続されている。かかるネットワークＮの一態様としては、有線または無線を問わず、ＬＡＮやＶＰＮ（Virtual  Private  Network）などの任意の種類の通信網を採用できる。なお、図１の例では、プレイスサーバ１２を３台設けた場合を例示したが、これに限定されず、プレイスサーバ１２を任意の数とすることができる。また、図１の例では、端末装置１３を２台設けた場合を例示したが、これに限定されず、端末装置１３を任意の数とすることができる。
【００１６】
管理サーバ１１は、端末装置１３で使用されるアプリケーションを管理する装置である。管理サーバ１１は、例えば、パーソナルコンピュータやサーバコンピュータなどのコンピュータである。管理サーバ１１は、第１サーバ装置に相当する。管理サーバ１１は、１台のコンピュータとして実装してもよく、また、複数台のコンピュータにより実装してもよい。なお、本実施例では、管理サーバ１１を１台のコンピュータとした場合を例として説明する。
【００１７】
管理サーバ１１は、端末装置１３で使用されるアプリケーションのプログラムおよびアプリケーションが利用するサービスのプログラムを記憶する。端末装置１３で使用されるアプリケーションのプログラムは第１プログラムに相当する。アプリケーションが利用するサービスのプログラムは第２プログラムに相当する。ここで、使用される場所などの状況によって、端末装置１３が使用するアプリケーションやサービスが異なる場合がある。例えば、学校の教室では、教室に配置されたプロジェクタを制御するアプリケーションやサービスが使用される場合がある。また、会議室では、資料のデータを共有するアプリケーションやサービスが使用される場合がある。本実施例では、アプリケーションやサービスが使用される場所などの状況に、状況を表す名称を付けており、状況の名称を仮想プレイスと呼ぶ。管理サーバ１１は、プレイスサーバ１２から通知された状況に応じたアプリケーションのプログラムおよびサービスのプログラムをプレイスサーバ１２に配信する。
【００１８】
プレイスサーバ１２は、管理サーバ１１より配信されたプログラムを実行し、アプリケーションが利用するサービスを提供する。プレイスサーバ１２は、第２サーバ装置に相当する。プレイスサーバ１２は、管理サーバ１１に記憶されたアプリケーションが使用される場所に配置される。本実施例では、プレイスサーバ１２Ａが教室Ａに配置され、プレイスサーバ１２Ｂが教室Ｂに配置され、プレイスサーバ１２Ｃが会議室に配置されている。プレイスサーバ１２は、例えば、無線ＬＡＮなどの無線通信のアクセスポイントの機能を有する小型のＰＣなどの情報処理装置である。なお、プレイスサーバ１２は、無線ＬＡＮのアクセスポイントと小型のＰＣに分かれて構成されていてもよい。また、プレイスサーバ１２は、無線通信機能を有するタブレット端末など携帯型の情報処理装置であってもよい。
【００１９】
プレイスサーバ１２は、無線通信により端末装置１３と通信可能とされ、端末装置１３からアクセス要求を受け付ける。プレイスサーバ１２は、端末装置１３からアクセス要求を受け付けると、アクセス要求を受け付けた端末装置１３またはプレイスサーバ１２の状況を管理サーバ１１に通知する。例えば、プレイスサーバ１２は、端末装置１３から当該端末装置１３の状況を含むアクセス要求を受け付ける。プレイスサーバ１２は、アクセス要求に含まれる状況を管理サーバ１１に通知する。これにより、管理サーバ１１は、通知された状況に応じたアプリケーションのプログラムおよびサービスのプログラムをプレイスサーバ１２に配信する。
【００２０】
プレイスサーバ１２は、プレイスサーバ１２から配信されたアプリケーションのプログラムを端末装置１３に送信する。また、プレイスサーバ１２は、プレイスサーバ１２から配信されたサービスのプログラムを実行してサービスを提供する。
【００２１】
端末装置１３は、学校の教員や生徒など、アプリケーションを使用するユーザが使用する装置である。例えば、端末装置１３は、ユーザが使用するスマートフォンやタブレット端末などの携帯型の情報処理装置などである。端末装置１３は、プレイスサーバ１２にアクセス要求を送信する。例えば、端末装置１３は、サービス配備を制御する端末用の制御アプリケーションがインストールされ、動作している。制御アプリケーションは、プレイスサーバ１２と無線通信が可能となると、端末装置１３の現在の場所などの端末装置１３の状況を含んだチェックインの要求を送信する。また、制御アプリケーションは、プレイスサーバ１２と無線通信ができなくなると、チェックアウトの要求を送信する。例えば、制御アプリケーションは、プレイスサーバ１２からの無線通信の信号レベルが所定値を超えた最初のタイミングでチェックインの要求を送信する。また、制御アプリケーションは、プレイスサーバ１２からの無線通信の信号レベルが所定値以下となった最初のタイミングでチェックアウトの要求を送信する。
【００２２】
端末装置１３は、状況に関する情報を内部処理により生成してもよい。また、端末装置１３は、状況に関する情報を他の装置から受信してもよい。また、端末装置１３は、状況に関する情報をユーザに入力させてもよく。また、端末装置１３は、状況に関する情報が予め設定されていてもよい。例えば、端末装置１３は、それぞれの場所に配置され、無線通信により状況を配信する状況通知装置から状況を取得してもよい。例えば、教室Ａに配置された状況通知装置は、場所が教室Ａであることを示す情報を状況として無線通信により配信する。教室Ａに入った端末装置１３は、教室Ａに配置された状況通知装置から場所を示す情報を取得してもよい。また、端末装置１３は、場所を選択する選択画面を表示させ、ユーザの選択により場所に関する状況を取得してもよい。また、例えば、教室Ａに配置された状況通知装置が、教室Ａで実施される授業の時間割に応じて、それぞれの授業の時間に、実施中の授業を示す情報を状況として無線通信により配信する。教室Ａに入った端末装置１３は、教室Ａに配置された状況通知装置から実施中の授業を示す情報を受信することにより、授業に関する状況を取得してもよい。また、端末装置１３は、授業を選択する選択画面を表示させ、ユーザの選択により授業に関する状況を取得してもよい。また、例えば、ユーザが生徒であるか教員であるかなど、ユーザの種別を端末装置１３の状況として設定する場合、端末装置１３は、ユーザの種別を選択する選択画面を表示させ、ユーザの選択によりユーザに関する状況を取得してもよい。また、制御アプリケーションを生徒用、教員用など、ユーザの種別ごとに分け、制御アプリケーションに予めユーザの種別を設定してもよい。
【００２３】
プレイスサーバ１２は、端末装置１３から状況を含むアクセス要求を受け付けると、状況に応じたアプリケーションのプログラムおよびサービスのプログラムを管理サーバ１１から取得する。プレイスサーバ１２は、取得したアプリケーションのプログラムをアクセス要求元の端末装置１３に送信する。
【００２４】
これにより、システム１０は、端末装置１３の状況に応じて、使用可能なアプリケーションを端末装置１３に配信できる。また、システム１０は、端末装置１３のアプリケーションから利用されるサービスをプレイスサーバ１２に適切に配備できる。
【００２５】
なお、以下では、プレイスサーバ１２は、端末装置１３から通知された端末装置１３の状況を管理サーバ１１へ通知する場合を例に説明するが、これに限定されない。例えば、プレイスサーバ１２は、プレイスサーバ１２の状況を管理サーバ１１へ通知してもよい。プレイスサーバ１２は、状況に関する情報を内部処理により生成してもよい。また、プレイスサーバ１２は、状況に関する情報を端末装置１３以外の他の装置から受信してもよい。また、プレイスサーバ１２は、状況に関する情報をユーザに入力させてもよく。また、プレイスサーバ１２は、状況に関する情報が予め設定されていてもよい。例えば、プレイスサーバ１２は、それぞれの場所に配置され、無線通信により状況を配信する状況通知装置から配置場所などの状況を取得してもよい。
【００２６】
［管理サーバの構成］
次に、実施例１に係る管理サーバ１１の構成について説明する。図２は、実施例１に係る管理サーバの概略的な構成を示す図である。管理サーバ１１は、通信Ｉ／Ｆ（インタフェース）部２０、記憶部２１と、制御部２２とを有する。
【００２７】
通信Ｉ／Ｆ部２０は、他の装置との間で通信制御を行うインタフェースである。通信Ｉ／Ｆ部２０は、ネットワークＮを介して他の装置と各種情報を送受信する。例えば、通信Ｉ／Ｆ部２０は、ネットワークＮを介して各プレイスサーバ１２との間で各種情報を送受信する。通信Ｉ／Ｆ部２０としては、ＬＡＮカードなどのネットワークインタフェースカードを採用できる。
【００２８】
記憶部２１は、ハードディスク、ＳＳＤ（Solid  State  Drive）、光ディスクなどの記憶装置である。なお、記憶部２１は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ、ＮＶＳＲＡＭ（Non  Volatile  Static  Random  Access  Memory）などのデータを書き換え可能な半導体メモリであってもよい。
【００２９】
記憶部２１は、制御部２２で実行されるＯＳ（Operating  System）や各種プログラムを記憶する。さらに、記憶部２１は、制御部２２で実行されるプログラムで用いられる各種データを記憶する。例えば、記憶部２１は、配信定義情報３０と、第１プログラムデータ３１と、第２プログラムデータ３２とを記憶する。
【００３０】
配信定義情報３０は、状況に応じて配信するアプリケーションやサービスに関する情報を記憶したデータである。図３は、配信定義情報のデータ構成の一例を示す図である。図３に示すように、配信定義情報３０は、「状況」、「使用アプリケーション」、「使用サービス」、「サービスＡＰＩ」、「サービス記憶先」などの項目を有する。なお、図３に示した配信定義情報３０の各項目は、一例であり、その他の項目を有してもよい。また、配信定義情報３０のデータ構成も一例であり、これに限定されるものではない。
【００３１】
状況の項目は、アプリケーションおよびサービスが使用される状況を記憶する領域である。本実施例では、アプリケーションおよびサービスが使用される場所に関する状況を識別しやすくするため、状況の仮想プレイスを、状況を表す名称としているがコード等を用いてもよい。使用アプリケーションの項目は、状況の項目の状況で使用されるアプリケーションの名称を記憶する領域である。使用サービスの項目は、状況の項目の状況で使用されるサービスの名称を記憶する領域である。サービスＡＰＩの項目は、サービスを呼び出す定義情報を記憶する領域である。本実施例では、サービスを呼び出す定義情報として、サービスを呼び出すＡＰＩ（Application  Programming  Interface）を用いる。サービスＡＰＩの項目には、サービスを呼び出すＡＰＩの定義情報が記憶される。サービス記憶先の項目は、サービスのプログラムの格納先を記憶する領域である。
【００３２】
図３の例では、「教室Ａ」は、「白板アプリケーション」および「白板サービス」が使用可能であることを示している。また、「白板サービス」は、サービスを呼び出すＡＰＩが「http://WhiteBoard」であり、サービスのプログラムの格納先が「http://sstore.example.com/WhiteBoard」であることを示す。また、「教室Ｂ」は、「プロジェクタアプリケーション」および「プロジェクタサービス」が使用可能であることを示している。また、「プロジェクタサービス」は、サービスを呼び出すＡＰＩが「http://Projector」であり、サービスのプログラムの格納先が「http://sstore.example.com/Projector」であることを示す。また、「会議室」は、「資料共有アプリケーション」および「資料共有サービス」が使用可能であることを示している。また、「資料共有サービス」は、サービスを呼び出すＡＰＩが「http://DocumentShare」であり、サービスのプログラムの格納先が「http://sstore.example.com/DocumentShare」であることを示す。
【００３３】
図２に戻り、第１プログラムデータ３１は、アプリケーションのプログラムを記憶したデータである。第２プログラムデータ３２は、サービスのプログラムを記憶したデータである。
【００３４】
制御部２２は、管理サーバ１１を制御するデバイスである。制御部２２としては、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）等の電子回路や、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路を採用できる。制御部２２は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部２２は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部２２は、配信部４０を有する。
【００３５】
配信部４０は、各種のデータの配信を行う。例えば、配信部４０は、プレイスサーバ１２から状況が通知されると、通知された状況に応じたアプリケーションのプログラムおよび当該アプリケーションが利用するサービスのプログラムを配信する。ここで、本実施例では、配信部４０は、アプリケーションのプログラムと、当該アプリケーションが利用するサービスのプログラムを別なタイミングで分けて配信する。例えば、配信部４０は、プレイスサーバ１２から状況が通知されると、通知された状況に応じたアプリケーションのプログラムおよび当該アプリケーションが利用するサービスを呼び出す定義情報を配信する。例えば、配信部４０は、通知された状況に応じたレコードを配信定義情報３０から読み出し、通知された状況に応じたアプリケーション、アプリケーションが利用するサービスを呼び出すＡＰＩの定義情報およびサービスのプログラムの格納先を特定する。配信部４０は、特定したアプリケーションのプログラムを第１プログラムデータ３１から読み出す。配信部４０は、読み出したアプリケーションのプログラム、サービスを呼び出すＡＰＩの定義情報およびサービスのプログラムの格納先を通知元のプレイスサーバ１２に配信する。また、配信部４０は、プレイスサーバ１２からサービスのプログラムが要求されると、要求に応じたサービスのプログラムを配信する。配信部４０は、要求されたサービスのプログラムを第２プログラムデータ３２から読み出す。配信部４０は、読み出したサービスのプログラムを要求元のプレイスサーバ１２に配信する。すなわち、本実施例では、配信部４０は、アプリケーションのプログラムとサービスを呼び出すＡＰＩの定義情報を先に配信し、当該アプリケーションが利用するサービスのプログラムを後から配信する。
【００３６】
［プレイスサーバの構成］
次に、実施例１に係るプレイスサーバ１２の構成について説明する。図４は、実施例１に係るプレイスサーバの概略的な構成を示す図である。プレイスサーバ１２は、有線通信Ｉ／Ｆ部５０、無線通信Ｉ／Ｆ部５１、記憶部５２と、制御部５３とを有する。
【００３７】
有線通信Ｉ／Ｆ部５０は、有線通信の通信制御を行うインタフェースである。有線通信Ｉ／Ｆ部５０は、ネットワークＮを介して他の装置と各種情報を送受信する。例えば、有線通信Ｉ／Ｆ部５０は、ネットワークＮを介して管理サーバ１１との間で各種情報を送受信する。有線通信Ｉ／Ｆ部５０としては、ＬＡＮカードなどのネットワークインタフェースカードを採用できる。
【００３８】
無線通信Ｉ／Ｆ部５１は、無線通信の通信制御を行うインタフェースである。無線通信Ｉ／Ｆ部５１は、無線通信により他の装置と各種情報を送受信する。例えば、無線通信Ｉ／Ｆ部５１は、無線通信により端末装置１３との間で各種情報を送受信する。無線通信Ｉ／Ｆ部５１としては、無線ＬＡＮモジュールなどのネットワークインタフェースカードを採用できる。なお、本実施例では、プレイスサーバ１２は、管理サーバ１１と有線通信を行い、端末装置１３と無線通信を行うものとするが、管理サーバ１１と無線通信を行ってもよい。
【００３９】
記憶部５２は、ハードディスク、ＳＳＤ、光ディスクなどの記憶装置である。なお、記憶部５２は、ＲＡＭ、フラッシュメモリ、ＮＶＳＲＡＭなどのデータを書き換え可能な半導体メモリであってもよい。
【００４０】
記憶部５２は、制御部５３で実行されるＯＳや各種プログラムを記憶する。さらに、記憶部５２は、制御部５３で実行されるプログラムで用いられる各種データを記憶する。例えば、記憶部５２は、配信情報６０と、第１プログラムデータ６１と、第２プログラムデータ６２とを記憶する。
【００４１】
配信情報６０は、管理サーバ１１から配信されたサービスに関する情報を記憶したデータである。図５は、配信情報のデータ構成の一例を示す図である。図５に示すように、配信情報６０は、「サービスＡＰＩ」、「サービス記憶先」、「配備後ＵＲＬ」などの項目を有する。なお、図５に示した配信情報６０の各項目は、一例であり、その他の項目を有してもよい。また、配信情報６０のデータ構成も一例であり、これに限定されるものではない。
【００４２】
サービスＡＰＩの項目は、サービスを呼び出す定義情報を記憶する領域である。サービスＡＰＩの項目には、定義情報として、サービスを呼び出すＡＰＩの情報が記憶される。サービス記憶先の項目は、サービスのプログラムの管理サーバ１１側での格納先を記憶する領域である。配備後ＵＲＬの項目は、サービスのプログラムが配信された場合の格納先を記憶する領域である。配備後ＵＲＬの項目は、サービスのプログラムが管理サーバ１１から配信されておらず未配備の場合、「−」とされ、サービスのプログラムが管理サーバ１１から配信されて配備済みの場合、サービスのプログラムの格納先が記憶される。
【００４３】
図５の例では、サービスを呼び出すＡＰＩが「http://WhiteBoard」であることを示す。また、サービスのプログラムの管理サーバ１１側の格納先が「http://sstore.example.com/WhiteBoard」であり、配信されたサービスのプログラムの格納先が「http://localhost:52003/WhiteBoard」であることを示す。
【００４４】
図４に戻り、第１プログラムデータ６１は、管理サーバ１１から配信されたアプリケーションのプログラムを記憶したデータである。第２プログラムデータ６２は、管理サーバ１１から配信されたサービスのプログラムを記憶したデータである。
【００４５】
制御部５３は、プレイスサーバ１２を制御するデバイスである。制御部５３としては、ＣＰＵ、ＭＰＵ等の電子回路や、ＡＳＩＣ、ＦＰＧＡ等の集積回路を採用できる。制御部５３は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部５３は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部５３は、受付部７０と、取得部７１と、送信部７２と、サービス提供部７３と、削除部７４とを有する。
【００４６】
受付部７０は、各種の受け付を行う。例えば、受付部７０は、端末装置１３からアクセス要求を受け付ける。ここで、本実施例では、受付部７０は、端末装置１３から２段階で要求を受け付ける。例えば、受付部７０は、端末装置１３から、アクセス要求として、チェックインの要求を受け付ける。また、受付部７０は、管理サーバ１１からサービスの定義情報が配信されると、配信された定義情報に定義されたサービスの呼び出しをさらに受け付ける。例えば、受付部７０は、端末装置１３からサービスのＡＰＩの呼び出しを受け付ける。
【００４７】
取得部７１は、各種の取得を行う。例えば、取得部７１は、受付部７０によりアクセス要求を受け付けると、アクセス要求を受け付けた端末装置１３またはプレイスサーバ１２の状況を管理サーバ１１に通知し、状況に応じたアプリケーションのプログラムおよびサービスのプログラムを取得する。ここで、実施例１では、取得部７１は、アプリケーションのプログラムと、当該アプリケーションが利用するサービスのプログラムを別なタイミングで取得する。例えば、取得部７１は、アクセス要求を受け付けた場合、アプリケーションのプログラムおよび当該アプリケーションが利用するサービスを呼び出す定義情報を取得する。取得部７１は、取得した定義情報に定義されたサービスが呼び出された場合、定義情報に定義されたサービスのプログラムを取得する。
【００４８】
例えば、取得部７１は、アクセス要求として、チェックインの要求を受け付けると、チェックインの要求に含まれる端末装置１３の状況を管理サーバ１１に通知する。これにより、管理サーバ１１は、プレイスサーバ１２から通知された状況に応じたアプリケーションのプログラム、サービスを呼び出すＡＰＩの定義情報およびサービスのプログラムの格納先を配信する。
【００４９】
取得部７１は、管理サーバ１１から配信されたアプリケーションのプログラム、サービスを呼び出すＡＰＩの定義情報およびサービスのプログラムの格納先を取得する。取得部７１は、取得したアプリケーションのプログラムを第１プログラムデータ６１に格納する。また、取得部７１は、取得したサービスを呼び出すＡＰＩの定義情報およびサービスのプログラムの格納先を配信情報６０に格納する。また、取得部７１は、取得したサービスを呼び出すＡＰＩの定義情報に基づき、ＡＰＩをＯＳに登録する。これにより、サービスのＡＰＩは、端末装置１３から呼び出し可能となる。
【００５０】
また、取得部７１は、受付部７０によりサービスのＡＰＩの呼び出しを受けると、配信情報６０を参照して、呼び出されたＡＰＩのサービスのプログラムが配備済みであるか否かを判定する。サービスのプログラムが未配信である場合、取得部７１は、サービスのプログラムの管理サーバ１１側の格納先を指定して、管理サーバ１１にサービスのプログラムを要求する。これにより、管理サーバ１１は、要求に応じたサービスのプログラムを配信する。
【００５１】
取得部７１は、管理サーバ１１から配信されたサービスのプログラムを取得する。取得部７１は、取得したサービスのプログラムを第２プログラムデータ６２に格納する。また、取得部７１は、配信されたサービスのプログラムの格納先を配信情報６０に登録する。
【００５２】
送信部７２は、各種の送信を行う。例えば、送信部７２は、取得部７１により取得されたアプリケーションのプログラムをアクセス要求元の端末装置１３に送信する。これにより、端末装置１３では、アプリケーションが使用可能となる。
【００５３】
サービス提供部７３は、各種のサービスの提供を行う。例えば、サービス提供部７３は、取得部７１により取得されたサービスのプログラムを実行してサービスを起動する。そして、サービス提供部７３は、端末装置１３のアプリケーションからのＡＰＩの呼び出しに応じてサービスの処理を実行する。
【００５４】
削除部７４は、各種のデータの削除を行う。例えば、削除部７４は、所定の削除条件を満たすサービスを停止し、第２プログラムデータ６２から当該サービスのプログラムを削除する。また、削除部７４は、削除したサービスのＡＰＩをＯＳから削除する。また、削除部７４は、削除したサービスに関するレコードを配信情報６０から削除する。削除条件は、端末装置１３からの最終アクセス後、一定時間以上経過した場合としてもよく、直近のアクセス頻度が所定のしきい値以下となった場合としてもよい。また、削除条件は、サービスを呼び出すアプリケーションを送信した全ての端末装置１３からチェックアウトの要求を受信した場合としてもよい。
【００５５】
次に、実施例１に係るシステム１０によりサービスを配備する処理の流れを説明する。図６は、実施例１に係るシステムによりサービスを配備する処理の流れの一例を概略的に示した図である。図６の例は、教室Ａに配置されたプレイスサーバ１２Ａにサービスを配備する処理の流れを示している。
【００５６】
例えば、ユーザが教室Ａに移動すると、ユーザが所持する端末装置１３は、教室Ａに配置された状況通知装置から場所が教室Ａである旨の情報を受信する。端末装置１３は、プレイスサーバ１２Ａと無線通信が可能となると、場所が教室Ａであることを示す情報を状況として含んだチェックインの要求を送信する（Ｓ１）。
【００５７】
プレイスサーバ１２Ａは、チェックインの要求を受け付けると、チェックインの要求に含まれる場所が教室Ａであることを示す情報を状況として、管理サーバ１１に通知する（Ｓ２）。
【００５８】
管理サーバ１１は、プレイスサーバ１２Ａから状況が通知されると、配信情報６０を参照して、通知された状況に応じたアプリケーション、アプリケーションが利用するサービスを呼び出すＡＰＩの定義情報およびサービスのプログラムの格納先を特定する（Ｓ３）。例えば、配信情報６０が図３に示す状態の場合、場所が教室Ａであることを示す情報が状況として通知されると、アプリケーションは、「白板アプリケーション」と特定される。また、サービスを呼び出すＡＰＩは、「http://WhiteBoard」と特定される。また、サービスのプログラムの格納先は、「http://sstore.example.com/WhiteBoard」と特定される。管理サーバ１１は、特定したアプリケーションのプログラム、サービスを呼び出すＡＰＩの定義情報およびサービスのプログラムの格納先をプレイスサーバ１２Ａに配信する（Ｓ４）。例えば、配信情報６０が図３に示す状態の場合、管理サーバ１１は、白板アプリケーションのプログラム、白板サービスを呼び出すＡＰＩおよびサービスのプログラムの格納先をプレイスサーバ１２Ａに配信する。
【００５９】
プレイスサーバ１２Ａは、管理サーバ１１から配信されたサービスを呼び出すＡＰＩの定義情報およびサービスのプログラムの格納先を配信情報６０に格納する（Ｓ５）。
【００６０】
図７は、配信情報に格納されるデータの変化の一例を示す図である。図７の（Ａ）は、初期状態の配信情報６０を示しており、データが未格納とされている。図７の（Ｂ）は、Ｓ５の処理を行った結果を示している。図７の（Ｂ）に示すように、サービスＡＰＩの項目には、「http://WhiteBoard」が格納される。また、サービス記憶先の項目には、「http://sstore.example.com/WhiteBoard」が格納される。ここで、サービスのプログラムは未配信であるため、配備後ＵＲＬの項目は、未配信を示す「−」とされている。
【００６１】
プレイスサーバ１２Ａは、白板サービスを呼び出すＡＰＩをＯＳに登録する（Ｓ６）。また、プレイスサーバ１２Ａは、白板アプリケーションのプログラムをチェックインの要求元の端末装置１３に送信する（Ｓ７）。
【００６２】
端末装置１３は、白板アプリケーションのプログラムを実行し、白板アプリケーションを起動する（Ｓ８）。白板アプリケーションは、起動すると、プレイスサーバ１２Ａの白板サービスを呼び出すＡＰＩを呼び出す（Ｓ９）。
【００６３】
プレイスサーバ１２Ａは、白板サービスのＡＰＩの呼び出しを受けると、配信情報６０を参照して、呼び出されたＡＰＩのサービスのプログラムが配備済みであるか否かを判定する（Ｓ１０）。サービスのプログラムが未配備である場合、プレイスサーバ１２Ａは、管理サーバ１１に白板サービスのプログラムを要求する（Ｓ１１）。
【００６４】
管理サーバ１１は、要求に応じて白板サービスのプログラムを配信する（Ｓ１２）。
【００６５】
プレイスサーバ１２Ａは、管理サーバ１１から配信された白板サービスのプログラムを第２プログラムデータ６２に格納し、白板サービスのプログラムの格納先を配信情報６０に登録する（Ｓ１３）。図７の（Ｃ）は、Ｓ１３の処理を行った結果を示している。図７の（Ｃ）に示すように、配備後ＵＲＬの項目には、白板サービスのプログラムの格納先が格納されている。
【００６６】
プレイスサーバ１２Ａは、管理サーバ１１から配信された白板サービスのプログラムを実行して白板サービスを起動する（Ｓ１４）。白板サービスは、端末装置１３から呼び出されたＡＰＩの処理を実行し（Ｓ１５）、処理結果を端末装置１３にレスポンスする（Ｓ１６）。
【００６７】
［処理の流れ］
次に、実施例１に係るシステム１０の各装置が実行する処理の流れを説明する。最初に、実施例１に係るプレイスサーバ１２がサービスの配備を制御する制御処理の流れを説明する。図８は、プレイスサーバが実行する制御処理の手順の一例を示すフローチャートである。この制御処理は、繰り返し実行される。例えば、制御処理は、処理が終了するごとに、繰り返し実行される。
【００６８】
図８に示すように、受付部７０は、端末装置１３からアクセス要求を受け付けたか否かを判定する（Ｓ１００）。アクセス要求を受け付けていない場合（Ｓ１００否定）、再度Ｓ１００へ移行する。
【００６９】
一方、アクセス要求を受け付けた場合（Ｓ１００肯定）、取得部７１は、アクセス要求を受け付けた端末装置１３の状況を管理サーバ１１に通知する（Ｓ１０１）。取得部７１は、管理サーバ１１から、アプリケーションのプログラム、サービスを呼び出すＡＰＩの定義情報およびサービスのプログラムが配信されたか否かを判定する（Ｓ１０２）。配信されていない場合（Ｓ１０２否定）、再度Ｓ１０２へ移行する。
【００７０】
配信された場合（Ｓ１０２肯定）、取得部７１は、配信されたサービスを呼び出すＡＰＩの定義情報およびサービスのプログラムの格納先を配信情報６０に格納し、サービスを呼び出すＡＰＩの定義情報に基づき、サービスのＡＰＩをＯＳに登録する（Ｓ１０３）。送信部７２は、配信されたアプリケーションのプログラムをアクセス要求元の端末装置１３に送信する（Ｓ１０４）。
【００７１】
受付部７０は、登録したサービスのＡＰＩが呼び出されたか否かを判定する（Ｓ１０５）。ＡＰＩが呼び出されていない場合（Ｓ１０５否定）、再度Ｓ１０５へ移行する。
【００７２】
一方、ＡＰＩが呼び出された場合（Ｓ１０５肯定）、取得部７１は、呼び出されたＡＰＩのサービスのプログラムが配備済みであるか否かを判定する（Ｓ１０６）。配備済みである場合（Ｓ１０６肯定）、処理を終了する。
【００７３】
一方、配備済みではない場合（Ｓ１０６否定）、取得部７１は、サービスのプログラムの管理サーバ１１側の格納先を指定して、管理サーバ１１にサービスのプログラムを要求する（Ｓ１０７）。取得部７１は、サービスのプログラムが配信されたか否かを判定する（Ｓ１０８）。サービスのプログラムが配信されていない場合（Ｓ１０８否定）、再度Ｓ１０８へ移行する。
【００７４】
一方、サービスのプログラムが配信された場合（Ｓ１０８肯定）、送信部７２は、取得部７１により取得されたサービスのプログラムを実行してサービスを起動し（Ｓ１０９）、処理を終了する。
【００７５】
次に、実施例１に係る管理サーバ１１がサービスの配備を制御する制御処理の流れを説明する。図９は、管理サーバが実行する制御処理の手順の一例を示すフローチャートである。この制御処理は、繰り返し実行される。例えば、制御処理は、処理が終了するごとに、繰り返し実行される。
【００７６】
図９に示すように、配信部４０は、プレイスサーバ１２から状況が通知されたか否かを判定する（Ｓ１５０）。状況が通知されていない場合（Ｓ１５０否定）、再度Ｓ１５０へ移行する。
【００７７】
一方、状況が通知された場合（Ｓ１５０肯定）、配信部４０は、配信定義情報３０を参照する。配信部４０は、通知された状況に応じたアプリケーション、アプリケーションが利用するサービスを呼び出すＡＰＩの定義情報およびサービスのプログラムの格納先を特定する（Ｓ１５１）。配信部４０は、特定したアプリケーションのプログラム、サービスを呼び出すＡＰＩの定義情報およびサービスのプログラムの格納先を通知元のプレイスサーバ１２に配信する（Ｓ１５２）。
【００７８】
配信部４０は、プレイスサーバ１２からサービスのプログラムが要求されたか否かを判定する（Ｓ１５３）。要求されていない場合（Ｓ１５３否定）、再度Ｓ１５３へ移行する。
【００７９】
一方、要求された場合（Ｓ１５３肯定）、配信部４０は、要求に応じたサービスのプログラムを配信し（Ｓ１５４）、処理を終了する。
【００８０】
［効果］
本実施例に係るシステム１０は、管理サーバ１１とプレイスサーバ１２とを有する。管理サーバ１１は、端末装置１３で使用されるアプリケーションのプログラムおよび当該アプリケーションが利用するサービスのプログラムを記憶する。管理サーバ１１は、プレイスサーバ１２から通知された状況に応じたアプリケーションのプログラムおよびサービスのプログラムを配信する。プレイスサーバ１２は、端末装置１３からアクセス要求を受け付ける。プレイスサーバ１２は、アクセス要求を受け付けた端末装置１３またはプレイスサーバ１２の状況を管理サーバ１１に通知してアプリケーションのプログラムおよびサービスのプログラムを取得する。プレイスサーバ１２は、取得されたアプリケーションのプログラムを端末装置１３に送信する。プレイスサーバ１２は、取得されたサービスのプログラムによるサービスを提供する。これにより、システム１０は、状況に応じてサービスを適切にプレイスサーバ１２に配備できる。例えば、仮想的なホワイトボードを共有する白板アプリケーションや白板サービスが教室Ａで使用される場合、図６に示すように、教室Ａに配置されたプレイスサーバ１２Ａには、白板アプリケーション、白板サービスのプログラムを配信できる。また、プレイスサーバ１２Ａには、他の場所で使用されるアプリケーション、サービスのプログラムが配信されない。すなわち、プレイスサーバ１２には、使用されないアプリケーション、サービスのプログラムが配信されない。これにより、プレイスサーバ１２は、記憶容量などのリソースが小さい装置であってもサービスを提供できる。また、管理サーバ１１がアプリケーションのプログラムおよびサービスのプログラムを記憶することにより、それぞれの場所で使用されるアプリケーションのプログラムおよびサービスのプログラムを一元的に管理できる。また、プレイスサーバ１２には、端末装置１３からアクセス要求があったタイミングでアプリケーション、サービスのプログラムが配信される。これにより、プレイスサーバ１２および端末装置１３には、アクセス要求があった際の最新のアプリケーション、サービスのプログラムが配信できる。さらに、プレイスサーバ１２が他の場所に移動された場合でも、場所に応じたアプリケーション、サービスのプログラムをプレイスサーバ１２に配信できる。すなわち、システム１０では、プレイスサーバ１２を移動させることで複数の場所で共用して使用することもできる。
【００８１】
また、本実施例に係るプレイスサーバ１２は、端末装置１３からアクセス要求を受け付けた場合、アプリケーションのプログラムおよび当該アプリケーションが利用するサービスを呼び出す定義情報を取得する。プレイスサーバ１２は、取得した定義情報に定義されたサービスが呼び出された場合、当該定義情報に定義されたサービスのプログラムを取得する。これにより、プレイスサーバ１２には、端末装置１３からサービスを呼び出され、実際に使用されるサービスのみを配備できる。例えば、仮想的なホワイトボードを共有する白板アプリケーションや白板サービスが教室Ａで使用される場合、図６に示すように、プレイスサーバ１２Ａには、白板アプリケーションが実際に使用されるタイミングで白板サービスのプログラムを配信できる。また、システム１０では、サービスを呼び出す定義情報を先にプレイスサーバ１２に配信するので、サービスのプログラムを転送する場合に比べて、転送時間を短くできる。これにより、プレイスサーバ１２は、アプリケーションを早いタイミングで端末装置１３へ送信できる。この結果、端末装置１３のユーザがアプリを早いタイミングでアプリケーションを使用できる。
【実施例２】
【００８２】
次に、実施例２について説明する。実施例２では、プレイスサーバ１２が、サービスのＡＰＩの呼び出しを待たずに、サービスのプログラムをバックグラウンドで取得する場合について説明する。
【００８３】
実施例２に係るシステム１０、管理サーバ１１、プレイスサーバ１２および端末装置１３の構成は、図１〜図５に示した実施例１と略同一であるため、主に異なる部分について説明する。
【００８４】
実施例２でも、取得部７１は、アプリケーションのプログラムと、当該アプリケーションが利用するサービスのプログラムを別なタイミングで取得する。例えば、受付部７０は、アクセス要求を受け付けた場合、アプリケーションのプログラムおよび当該アプリケーションが利用するサービスを呼び出す定義情報を取得する。続けて、受付部７０は、取得した定義情報に定義されたサービスのプログラムを取得する。すなわち、受付部７０は、サービスのＡＰＩの呼び出しを待たずに、サービスのプログラムをバックグラウンドで取得する。
【００８５】
例えば、取得部７１は、アクセス要求として、チェックインの要求を受け付けると、チェックインの要求に含まれる端末装置１３の状況を管理サーバ１１に通知する。これにより、管理サーバ１１は、プレイスサーバ１２から通知された状況に応じたアプリケーションのプログラム、サービスを呼び出すＡＰＩの定義情報およびサービスのプログラムの格納先を配信する。
【００８６】
取得部７１は、管理サーバ１１から配信されたアプリケーションのプログラム、サービスを呼び出すＡＰＩの定義情報およびサービスのプログラムの格納先を取得する。取得部７１は、定義情報を取得すると、定義情報に記憶されたサービスのプログラムの管理サーバ１１側の格納先を指定して、管理サーバ１１にサービスのプログラムを要求する。これにより、管理サーバ１１は、要求に応じたサービスのプログラムを配信する。
【００８７】
次に、実施例２に係るシステム１０によりサービスを配備する処理の流れを説明する。図１０は、実施例２に係るシステムによりサービスを配備する処理の流れの一例を概略的に示した図である。図１０に示す処理の流れは、図６と一部が同一であるため、同一の部分については同一の符号を付し、主に異なる部分について説明する。
【００８８】
プレイスサーバ１２Ａは、白板サービスを呼び出すＡＰＩをＯＳに登録する（Ｓ６）。また、プレイスサーバ１２Ａは、白板アプリケーションのプログラムをチェックインの要求元の端末装置１３に送信する（Ｓ７）。
【００８９】
プレイスサーバ１２Ａは、配信情報６０を参照して、登録したＡＰＩのサービスのプログラムが配備済みであるか否かを判定する（Ｓ２０）。サービスのプログラムが未配備である場合、プレイスサーバ１２Ａは、管理サーバ１１に白板サービスのプログラムを要求する（Ｓ２１）。
【００９０】
管理サーバ１１は、要求に応じて白板サービスのプログラムを配信する（Ｓ２２）。
【００９１】
プレイスサーバ１２Ａは、管理サーバ１１から配信された白板サービスのプログラムを第２プログラムデータ６２に格納する（Ｓ２３）。プレイスサーバ１２Ａは、白板サービスのプログラムを実行して白板サービスを起動する（Ｓ２４）。
【００９２】
端末装置１３は、白板アプリケーションのプログラムを実行し、白板アプリケーションを起動する（Ｓ２５）。白板アプリケーションは、起動すると、プレイスサーバ１２Ａの白板サービスを呼び出すＡＰＩを呼び出す（Ｓ２６）。
【００９３】
白板サービスは、端末装置１３から呼び出されたＡＰＩの処理を実行し（Ｓ２７）、処理結果を端末装置１３にレスポンスする（Ｓ２８）。
【００９４】
［処理の流れ］
次に、実施例２に係るプレイスサーバ１２がサービスの配備を制御する制御処理の流れを説明する。図１１は、プレイスサーバが実行する制御処理の手順の一例を示すフローチャートである。図１１に示す処理の流れは、図８と一部が同一であるため、同一の部分については同一の符号を付し、主に異なる部分について説明する。
【００９５】
送信部７２は、配信されたアプリケーションのプログラムをアクセス要求元の端末装置１３に送信する（Ｓ１０４）。
【００９６】
取得部７１は、Ｓ１０３で登録されたＡＰＩのサービスのプログラムが配備済みであるか否かを判定する（Ｓ１１０）。配備済みである場合（Ｓ１１０肯定）、処理を終了する。
【００９７】
一方、配備済みではない場合（Ｓ１１０否定）、取得部７１は、サービスのプログラムの管理サーバ１１側の格納先を指定して、管理サーバ１１にサービスのプログラムを要求する（Ｓ１１１）。取得部７１は、サービスのプログラムが配信されたか否かを判定する（Ｓ１１２）。サービスのプログラムが配信されていない場合（Ｓ１１２否定）、再度Ｓ１１２へ移行する。
【００９８】
一方、サービスのプログラムが配信された場合（Ｓ１１２肯定）、送信部７２は、取得部７１により取得されたサービスのプログラムを実行してサービスを起動し（Ｓ１１３）、処理を終了する。
【００９９】
［効果］
本実施例に係るプレイスサーバ１２は、端末装置１３からアクセス要求を受け付けた場合、アプリケーションのプログラムおよび当該アプリケーションが利用するサービスを呼び出す定義情報を取得する。プレイスサーバ１２は、続けて、取得した定義情報に定義されたサービスのプログラムを取得する。これにより、システム１０では、サービスを呼び出す定義情報を先にプレイスサーバ１２に配信するので、サービスのプログラムを転送する場合に比べて、転送時間を短くできる。また、プレイスサーバ１２は、アプリケーションを早いタイミングで端末装置１３へ送信できる。これにより、端末装置１３のユーザがアプリを早いタイミングでアプリケーションを使用できる。また、プレイスサーバ１２は、定義情報を取得に続けて、定義情報に定義されたサービスのプログラムを取得するので、サービスが呼び出されてからサービスのプログラムを転送する場合に比べて、サービスのプログラムを早く取得でき、サービスを早く起動できる。これにより、プレイスサーバ１２は、端末装置１３でアプリケーションが起動されて最初にサービスを呼び出した際の待ち時間を短くできる。
【実施例３】
【０１００】
次に、実施例３について説明する。実施例３では、条件を満たすサービスを配備する場合について説明する。
【０１０１】
実施例３に係るシステム１０の構成は、図１に示した実施例１と略同一であるため、説明を省略する。図１２は、実施例３に係る管理サーバの概略的な構成を示す図である。実施例３に係る管理サーバ１１の構成は、図２に示した実施例１に係る管理サーバ１１と一部が同一であるため、同一の部分については同一の符号を付し、主に異なる部分について説明する。
【０１０２】
配信定義情報３０は、アプリケーションやサービスを配備する条件に関する情報をさらに記憶する。図１３は、実施例３に係る配信定義情報のデータ構成の一例を示す図である。実施例３に係る配信定義情報３０のデータ構成は、図３に示した実施例１に係る配信定義情報３０のデータ構成と一部が同一であるため、主に異なる部分について説明する。
【０１０３】
図１３に示すように、配信定義情報３０は、「利用条件」、「動作条件」の項目をさらに有する。なお、図１３に示した配信定義情報３０の各項目は、一例であり、その他の項目を有してもよい。また、配信定義情報３０のデータ構成も一例であり、これに限定されるものではない。
【０１０４】
利用条件の項目は、アプリケーションおよびサービスを使用可能とする条件を記憶する領域である。利用条件の項目は、利用条件が無い場合、「−」とされ、利用条件がある場合、利用可能とする状況が記憶される。動作条件の項目は、サービスをプレイスサーバ１２で動作させる場合のリソースの条件を記憶する領域である。動作条件の項目も、動作条件が無い場合、「−」とされ、動作条件がある場合、動作可能とするリソースの状況が記憶される。また、サービスが機能ごとに異なるサーバに分散可能である場合、動作条件は、サービスの機能ごとに定めることが可能とされている。例えば、サービスが、ＡＰ（application）サーバとＤＢ（database）サーバに分けて分散可能である場合、動作条件は、ＡＰサーバとＤＢサーバでそれぞれ定めることが可能とされている。
【０１０５】
図１３の例では、状況「教室Ａ」は、「国語教材アプリケーション」および「国語教材サービス」と、「算数教材アプリケーション」および「算数教材サービス」が使用可能であることを示している。また、「国語教材アプリケーション」および「国語教材サービス」は、国語の授業である授業１の時間帯に使用可能であることを示している。「算数教材アプリケーション」および「算数教材サービス」は、算数の授業である授業２の時間帯に使用可能であることを示している。また、「国語教材サービス」は、サービスを呼び出すＡＰＩが「http://drillXXX」であり、サービスのプログラムの格納先が「http://sstore.example.com/drillKokugo」であり、動作条件が無いことを示す。「算数教材サービス」は、サービスを呼び出すＡＰＩが「http://drillXXX」であり、サービスのプログラムの格納先が「http://sstore.example.com/drillSansu」であり、動作条件が無いことを示す。
【０１０６】
状況「教室Ｂ」は、「プロジェクタアプリケーション」および「プロジェクタサービス」が使用可能であることを示している。また、「プロジェクタアプリケーション」および「プロジェクタサービス」は、教員の端末装置１３が接続している場合に使用可能であることを示している。また、「プロジェクタサービス」は、サービスを呼び出すＡＰＩが「http://Projector」であり、サービスのプログラムの格納先が「http://sstore.example.com/Projector」であり、動作条件が無いことを示す。
【０１０７】
状況「会議室」は、「資料共有アプリケーション」および「資料共有サービス」が使用可能であることを示している。また、「資料共有アプリケーション」および「資料共有サービス」は、利用条件が無いことを示している。また、「資料共有サービス」は、サービスを呼び出すＡＰＩが「http://DocumentShare」であり、サービスのプログラムの格納先が「http://sstore.example.com/DocumentShare」であることを示している。また、「資料共有サービス」は、プレイスサーバ１２で動作させる場合、「メモリ≧２５６［ＭＢ］、ストレージ≧２５６［ＧＢ］、ＩＯ使用量≧２５６［ＭＢ／ｓ］」が動作条件であることを示している。
【０１０８】
状況「視聴覚室」は、「画像編集アプリケーション」および「画像編集サービス」が使用可能であることを示している。また、「画像編集アプリケーション」および「画像編集サービス」は、利用条件が無いことを示している。また、「画像編集サービス」は、サービスを呼び出すＡＰＩが「http://immageEdit0」であり、サービスのプログラムの格納先が「http://sstore.example.com/immageEdit0」であることを示している。また、「画像編集サービス」は、ＡＰサーバとＤＢサーバに分けて分散可能であることを示している。動作条件は、ＡＰサーバが「メモリ≧５１２［ＭＢ］、ＣＰＵ使用量≧１００［req/s］」であり、ＤＢサーバが「メモリ≧２５６［ＭＢ］、ストレージ≧１［ＧＢ］、ＩＯ使用量≧５１２［MB/s］」であることを示している。［req/s］は、１秒当たりの平均処理リクエスト数を表す。
【０１０９】
図１２に戻り、管理サーバ１１の記憶部２１は、状況種別情報３３をさらに記憶する。
【０１１０】
状況種別情報３３は、利用条件とされた状況の種別に関する情報を記憶したデータである。図１４は、状況種別情報のデータ構成の一例を示す図である。図１４に示すように、状況種別情報３３は、「利用条件」、「状況種別」の項目を有する。なお、図１４に示した状況種別情報３３の各項目は、一例であり、その他の項目を有してもよい。また、状況種別情報３３のデータ構成も一例であり、これに限定されるものではない。
【０１１１】
利用条件の項目は、利用条件とされた条件を記憶する領域である。状況種別の項目は、利用条件の判定に用いる状況の種別を記憶する領域である。本実施例では、状況の種別として、利用条件の判定に、端末装置１３の状況とプレイスサーバ１２の状況の何れを用いるか否かを記憶する。
【０１１２】
図１４の例では、教員の端末装置１３が接続されているかの判定には、プレイスサーバ１２の状況を用いることを示している。また、教室Ａであるかの判定には、端末装置１３の状況を用いることを示している。また、授業１であるかの判定には、端末装置１３の状況を用いることを示している。授業２であるかの判定には、端末装置１３の状況を用いることを示している。
【０１１３】
図１２に戻り、配信部４０は、サービスを呼び出す定義情報と共に、当該サービスの利用条件および動作条件と状況種別情報３３とを配信する。なお、配信部４０は、状況種別情報３３のうち、配信する利用条件に対応するレコードのデータを読み出して配信してもよい。
【０１１４】
また、制御部２２は、サービス提供部４１をさらに有する。サービス提供部４１は、各種のサービスの提供を行う。例えば、サービス提供部４１は、サービスのＡＰＩが呼び出された場合、呼び出されたＡＰＩのサービスのプログラムを実行してサービスを起動する。そして、サービス提供部４１は、呼び出しに応じて処理を実行する。
【０１１５】
次に、実施例３に係るプレイスサーバ１２の構成について説明する。図１５は、実施例３に係るプレイスサーバの概略的な構成を示す図である。実施例３に係るプレイスサーバ１２の構成は、図４に示した実施例１に係るプレイスサーバ１２と一部が同一であるため、同一の部分については同一の符号を付し、主に異なる部分について説明する。
【０１１６】
配信情報６０は、管理サーバ１１から配信されたアプリケーションやサービスを配備する条件に関する情報をさらに記憶する。図１６は、実施例３に係る配信情報のデータ構成の一例を示す図である。実施例３に係る配信情報６０のデータ構成は、図５に示した実施例１に係る配信情報６０のデータ構成と一部が同一であるため、主に異なる部分について説明する。
【０１１７】
図１６に示すように、配信情報６０は、「利用条件」、「動作条件」の項目をさらに有する。なお、図１６に示した配信情報６０の各項目は、一例であり、その他の項目を有してもよい。また、配信情報６０のデータ構成も一例であり、これに限定されるものではない。
【０１１８】
利用条件の項目は、管理サーバ１１から配信された利用条件を記憶する領域である。利用条件の項目は、利用条件が無い場合、「−」とされ、利用条件がある場合、利用可能とする状況が記憶される。動作条件の項目は、管理サーバ１１から配信された動作条件を記憶する領域である。動作条件の項目も、動作条件が無い場合、「−」とされ、動作条件がある場合、動作可能とするリソースの状況が記憶される。
【０１１９】
図１６の例では、サービスを呼び出すＡＰＩ「http://drillXXX」が２つ登録されている。１つ目は、利用条件が授業１であり、サービスのプログラムの管理サーバ１１側の格納先が「http://sstore.example.com/drillKokugo」であり、動作条件が無く、サービスのプログラムが未配備であることを示す。２つ目は、利用条件が授業２であり、サービスのプログラムの管理サーバ１１側の格納先が「http://sstore.example.com/drillSansu」であり、動作条件が無く、サービスのプログラムが未配備であることを示す。
【０１２０】
図１５に戻り、プレイスサーバ１２の記憶部５２は、状況種別情報３３をさらに記憶する。状況種別情報３３は、管理サーバ１１から配信された状況種別情報３３を記憶したデータである。
【０１２１】
取得部７１は、管理サーバ１１から配信されたサービスの利用条件および動作条件と状況種別情報３３を取得する。取得部７１は、取得したサービスの利用条件および動作条件を配信情報６０に格納する。また、取得部７１は、取得した状況種別情報３３を記憶部５２に格納する。
【０１２２】
また、取得部７１は、受付部７０によりサービスのＡＰＩの呼び出しを受けると、呼び出されたＡＰＩのサービスが、当該サービスの利用条件を満たすか否かを判定する。例えば、取得部７１は、状況種別情報３３に基づき、サービスの利用条件の判定に、端末装置１３の状況とプレイスサーバ１２の状況の何れを用いるかを特定する。取得部７１は、特定した状況を用いて、サービスの利用条件を満たすか否かを判定し、サービスの利用条件を満たす配備対象のサービスを特定する。
【０１２３】
取得部７１は、特定した配備対象のサービスについて、プレイスサーバ１２が当該サービスの動作条件を満たすかを判定する。例えば、取得部７１は、プレイスサーバ１２の使用可能なリソース量を特定する。例えば、取得部７１は、ＣＰＵ使用量やメモリ、ストレージ、ＩＯ使用量などのリソースの現在の使用量を求め、リソースの使用できる最大値との差分を求めることにより、使用可能なリソース量を特定する。例えば、ＣＰＵのＣＰＵ使用量の最大値が１０００［req/s］であり、現在のＣＰＵの使用量が１００［req/s］である場合、ＣＰＵの使用可能なリソース量は、９００［req/s］と特定される。プレイスサーバ１２の使用可能なリソース量がサービスの動作条件を満たす場合、取得部７１は、プレイスサーバ１２が動作条件を満たすと判定する。取得部７１は、プレイスサーバ１２が動作条件を満たす場合、配備対象のサービスのプログラムを管理サーバ１１に要求し、配備対象のサービスのプログラムを取得する。なお、配備対象のサービスが、サーバに分散可能なサービスの機能ごとに動作条件が定められている場合、取得部７１は、分散可能なサービスの機能ごとに動作条件を満たすか否かを判定する。取得部７１は、動作条件を満たすサービスの機能を構成するサービスのプログラムを管理サーバ１１に要求し、動作条件を満たすサービスの機能を構成するプログラムを取得する。例えば、配備対象のサービスが、ＡＰサーバとＤＢサーバに分けて動作条件が定められている場合、取得部７１は、プレイスサーバ１２の使用可能なリソース量が、ＡＰサーバとＤＢサーバの動作条件を満たすか否かをそれぞれ判定する。取得部７１は、例えば、プレイスサーバ１２の使用可能なリソース量が、ＡＰサーバの動作条件を満たす場合、ＡＰサーバを構成するサービスのプログラムを管理サーバ１１から取得する。
【０１２４】
サービス提供部７３は、取得部７１により取得されたサービスのプログラムを実行してサービスを起動する。これにより、配備対象のサービスは、プレイスサーバ１２が動作条件を満たす場合、プレイスサーバ１２に配備される。また、配備対象のサービスが機能ごとに異なるサーバに分散可能とされている場合、配備対象のサービスの各機能のうち、プレイスサーバ１２が動作条件を満たす機能部分がプレイスサーバ１２に配備される。サービス提供部７３は、端末装置１３のアプリケーションからのＡＰＩの呼び出しに応じてサービスの処理を実行する。
【０１２５】
制御部５３は、転送部７５をさらに有する。転送部７５は、各種の転送を行う。例えば、転送部７５は、プレイスサーバ１２が配備対象のサービスの動作条件を満たさない場合、端末装置１３からの当該サービスのＡＰＩの呼び出しを管理サーバ１１に転送する。すなわち、配備対象のサービスは、プレイスサーバ１２が動作条件を満たさない場合に、当該サービスのＡＰＩの呼び出しは、管理サーバ１１に転送される。また、転送部７５は、
配備対象のサービスの各機能のうち、プレイスサーバ１２が動作条件を満たさない機能部分のＡＰＩの呼び出しを管理サーバ１１に転送する。管理サーバ１１に転送されたＡＰＩの呼び出しは、管理サーバ１１に配備されたサービスで処理される。
【０１２６】
次に、実施例３に係るシステム１０によりサービスを配備する処理の流れを説明する。図１７は、実施例３に係るシステムによりサービスを配備する処理の流れの一例を概略的に示した図である。図１７の例は、教室Ａに配置されたプレイスサーバ１２Ａにサービスを配備する処理の流れを示している。図１７に示す処理の流れは、図６と一部が同一であるため、同一の部分については同一の符号を付し、主に異なる部分について説明する。
【０１２７】
管理サーバ１１は、プレイスサーバ１２Ａから教室Ａとの状況が通知されると、配信情報６０を参照する。そして、管理サーバ１１は、通知された状況に応じたアプリケーション、アプリケーションが利用するサービスを呼び出すＡＰＩの定義情報、サービスのプログラムの格納先、サービスの利用条件および動作条件を特定する（Ｓ５０）。管理サーバ１１は、特定したアプリケーションのプログラム、サービスを呼び出すＡＰＩの定義情報およびサービスのプログラムの格納先をプレイスサーバ１２Ａに配信する（Ｓ５１）。例えば、配信情報６０が図１３に示す状態の場合、管理サーバ１１は、国語教材アプリケーションのプログラム、国語教材サービスを呼び出すＡＰＩ、サービスのプログラムの格納先、サービスの利用条件および動作条件をプレイスサーバ１２Ａに配信する。また、管理サーバ１１は、算数教材アプリケーションのプログラム、算数教材サービスを呼び出すＡＰＩ、サービスのプログラムの格納先、サービスの利用条件および動作条件をプレイスサーバ１２Ａに配信する。
【０１２８】
プレイスサーバ１２Ａは、国語教材サービスおよび算数教材サービスについて、呼び出すＡＰＩの定義情報、サービスのプログラムの格納先、サービスの利用条件および動作条件を配信情報６０に格納する（Ｓ５２）。これにより、配信情報６０が図１３に示す状態の場合、配信情報６０には、図１６に示すデータが格納される。
【０１２９】
プレイスサーバ１２Ａは、国語教材サービスおよび算数教材サービスを呼び出すＡＰＩをＯＳに登録する（Ｓ５３）。ここで、国語教材サービスおよび算数教材サービスは、ＡＰＩの定義が同じため、何れかのＡＰＩを登録する。また、プレイスサーバ１２Ａは、国語教材アプリケーションおよび算数教材アプリケーションのプログラムをチェックインの要求元の端末装置１３に送信する（Ｓ５４）。
【０１３０】
端末装置１３では、実施される授業に応じて、国語教材アプリケーションまたは算数教材アプリケーションが実行され、国語教材アプリケーションまたは算数教材アプリケーションを起動する（Ｓ５５）。本実施例では、国語教材アプリケーションが起動されているものとする。国語教材アプリケーションは、起動すると、国語教材サービスを呼び出すＡＰＩを呼び出す（Ｓ５６）。国語教材アプリケーションと算数教材アプリケーションは、呼び出すＡＰＩが同じであるため、ＡＰＩの呼び出しに、場所や授業などの端末状況を付加する。図１７の例では、国語教材アプリケーションは、端末状況として、教室Ａ、授業１を付加する。
【０１３１】
プレイスサーバ１２Ａは、ＡＰＩの呼び出しを受けると、配信情報６０を参照して、呼び出されたＡＰＩのサービスの利用条件を満たすか否かを判定し、利用条件を満たす配備対象のサービスを特定する（Ｓ５７）。例えば、国語教材サービスは、利用条件が「授業１」とされている。このため、国語教材サービスは、配備対象のサービスと特定される。プレイスサーバ１２Ａは、配備対象のサービスについて、プレイスサーバ１２が当該サービスの動作条件を満たすか否かを判定する（Ｓ５８）。国語教材サービスは、動作条件が無いため、動作条件を満たすと判定される。
【０１３２】
プレイスサーバ１２Ａは、配信情報６０を参照して、国語教材サービスのプログラムが配備済みであるか否かを判定する（Ｓ５９）。国語教材サービスのプログラムが未配備である場合、プレイスサーバ１２Ａは、管理サーバ１１に国語教材サービスのプログラムを要求する（Ｓ６０）。
【０１３３】
管理サーバ１１は、要求に応じて国語教材サービスのプログラムのプログラムを配信する（Ｓ６１）。
【０１３４】
プレイスサーバ１２Ａは、管理サーバ１１から配信された国語教材サービスのプログラムを第２プログラムデータ６２に格納し、国語教材サービスのプログラムの格納先を配信情報６０に登録する（Ｓ６２）。
【０１３５】
プレイスサーバ１２Ａは、管理サーバ１１から配信された国語教材サービスのプログラムを実行して国語教材サービスを起動する（Ｓ６３）。国語教材サービスは、端末装置１３から呼び出されたＡＰＩの処理を実行し（Ｓ６４）、処理結果を端末装置１３にレスポンスする（Ｓ６５）。
【０１３６】
次に、実施例３に係るプレイスサーバ１２がサービスの配備を制御する制御処理の流れを説明する。図１８は、プレイスサーバが実行する制御処理の手順の一例を示すフローチャートである。図１８に示す処理の流れは、図８と一部が同一であるため、同一の部分については同一の符号を付し、主に異なる部分について説明する。
【０１３７】
図１８に示すように、ＡＰＩが呼び出された場合（Ｓ１０５肯定）、取得部７１は、呼び出されたＡＰＩのサービスが、当該サービスの利用条件を満たすか否かを判定する利用条件判定処理を実行する（Ｓ１２０）。利用条件判定処理の詳細は、後述する。
【０１３８】
取得部７１は、利用条件判定処理により特定された配備対象のサービスについて、プレイスサーバ１２が当該サービスの動作条件を満たすか否かを判定する動作条件判定処理を実行する（Ｓ１２１）。動作条件判定処理の詳細は、後述する。
【０１３９】
取得部７１は、動作条件判定処理により、動作条件を満たし、配備先がプレイスサーバ１２とされた配備対象のサービスのプログラムが配備済みであるか否かを判定する（Ｓ１２２）。配備済みである場合（Ｓ１２２肯定）、処理を終了する。
【０１４０】
一方、配備済みではない場合（Ｓ１２２否定）、取得部７１は、配備対象のサービスのプログラムの管理サーバ１１側の格納先を指定して、管理サーバ１１にサービスのプログラムを要求する（Ｓ１２３）。
【０１４１】
次に、利用条件判定処理の流れを説明する。図１９は、プレイスサーバが実行する利用条件判定処理の手順の一例を示すフローチャートである。この利用条件判定処理は、プレイスサーバ１２が実行する利用条件判定処理のＳ１２０から実行される。
【０１４２】
図１９に示すように、取得部７１は、配信情報６０を用いて、呼び出されたＡＰＩのサービスを特定する（Ｓ２００）。例えば、配信情報６０が図１６に示す状態であり、ＡＰＩ「http://drillXXX」が呼び出された場合、取得部７１は、ＡＰＩ「http://drillXXX」に対応する２つのサービスを特定する。取得部７１は、特定したサービスのうち、未選択のサービスを１つ選択する（Ｓ２０１）。取得部７１は、選択したサービスの利用条件を全て選択したか否かを判定する（Ｓ２０２）。なお、選択したサービスに利用条件が無い場合、取得部７１は、利用条件を全て選択したと判定する。
【０１４３】
利用条件を全て選択していない場合（Ｓ２０２否定）、取得部７１は、選択したサービスの利用条件のうち、未選択の利用条件を１つ選択する（Ｓ２０３）。取得部７１は、状況種別情報３３に基づき、選択した利用条件の状況種別を特定する（Ｓ２０４）。取得部７１は、特定した状況種別が端末状況であるか否かを判定する（Ｓ２０５）。状況種別が端末状況である場合（Ｓ２０５肯定）、取得部７１は、ＡＰＩを呼び出した端末装置１３から通知された状況がサービスの利用条件を満たすか否かを判定する（Ｓ２０６）。例えば、図１３の例では、国語教材サービスは、利用条件が「授業１」とされている。国語教材サービスのＡＰＩを呼び出した端末装置１３から状況として「授業１」が通知された場合、取得部７１は、利用条件を満たすと判定する。
【０１４４】
利用条件を満たす場合（Ｓ２０６肯定）、取得部７１は、選択したサービスを配備対象のサービスと特定し（Ｓ２０７）、呼び出し元の処理へ移行する。
【０１４５】
一方、利用条件を満たさない場合（Ｓ２０６否定）、上述のＳ２０２へ移行する。
【０１４６】
一方、状況種別が端末状況ではない場合（Ｓ２０５否定）、状況種別は、プレイスサーバ状況である。取得部７１は、プレイスサーバ１２の状況がサービスの利用条件を満たすか否かを判定する（Ｓ２０８）。利用条件を満たす場合（Ｓ２０８肯定）、上述のＳ２０７へ移行して、選択したサービスを配備対象のサービスと特定する。例えば、図１３の例では、プロジェクタサービスは、利用条件が「教員端末接続」とされている。プレイスサーバ１２は、教員が使用する端末装置１３からユーザの種別が教員との状況を含んだアクセス要求が通知される場合、教員の端末装置１３が接続中である状況を把握できる。プロジェクタサービスのＡＰＩが呼び出されたプレイスサーバ１２に教員の端末装置１３が接続中である場合、取得部７１は、利用条件を満たすと判定する。
【０１４７】
一方、利用条件を満たさない場合（Ｓ２０８否定）、上述のＳ２０２へ移行する。
【０１４８】
一方、利用条件を全て選択した場合（Ｓ２０２肯定）、取得部７１は、特定したサービスを全て選択したか否かを判定する（Ｓ２０９）。特定したサービスを全て選択していない場合（Ｓ２０９否定）、上述のＳ２０１へ移行する。
【０１４９】
一方、特定したサービスを全て選択した場合（Ｓ２０９肯定）、取得部７１は、特定したサービスに利用条件が無いサービスがあるか否かを判定する（Ｓ２１０）。利用条件が無いサービスがある場合（Ｓ２１０肯定）、取得部７１は、利用条件が無いサービスを配備対象のサービスと特定し（Ｓ２１１）、呼び出し元の処理へ移行する。
【０１５０】
一方、利用条件が無いサービスがない場合（Ｓ２１０否定）、呼び出し元の処理へ移行する。
【０１５１】
次に、動作条件判定処理の流れを説明する。図２０は、プレイスサーバが実行する動作条件判定処理の手順の一例を示すフローチャートである。この動作条件判定処理は、プレイスサーバ１２が実行する動作条件判定処理のＳ１２１から実行される。
【０１５２】
図２０に示すように、取得部７１は、配備対象のサービスの動作条件を配信情報６０から読み出す（Ｓ２５０）。取得部７１は、プレイスサーバ１２で使用可能なリソース量を特定する（Ｓ２５１）。取得部７１は、配備対象のサービスが機能ごとに異なるサーバに分散可能である場合、配備対象のサービスの機能のうち、未選択の機能を１つ選択する（Ｓ２５２）。なお、配備対象のサービスが異なるサーバに分散できない場合、取得部７１は、配備対象のサービス全体を１つの機能と見なして配備対象のサービスを選択する。
【０１５３】
取得部７１は、プレイスサーバ１２の使用可能なリソース量が配備対象のサービスの選択した機能の動作条件を満たすか否かを判定する（Ｓ２５３）。動作条件を満たす場合（Ｓ２５３肯定）、取得部７１は、配備対象のサービスの選択した機能のプログラムの配備先をプレイスサーバ１２と決定する（Ｓ２５４）。
【０１５４】
一方、動作条件を満たさない場合（Ｓ２５３否定）、取得部７１は、配備対象のサービスの選択した機能のプログラムの配備先を管理サーバ１１と決定する（Ｓ２５５）。
【０１５５】
取得部７１は、配備対象のサービスの機能を全て選択したか否かを判定する（Ｓ２５６）。全て選択していない場合（Ｓ２５６否定）、上述のＳ２５２へ移行する。
【０１５６】
一方、全て選択した場合（Ｓ２５６肯定）、呼び出し元の処理へ移行する。
【０１５７】
ここで、例えば、プレイスサーバ１２は、使用可能なリソース量が、メモリ１［ＧＢ］、ＣＰＵ使用量１０００［req/s］、ストレージ≧５１２［ＧＢ］、ＩＯ使用量２５６［ＭＢ／ｓ］であるものとする。この場合、例えば、図１３に示す、資料共有サービスは、プレイスサーバ１２が配備先と特定される。また、画像編集サービスのＡＰサーバは、プレイスサーバ１２が配備先と特定される。また、画像編集サービスのＤＢサーバは、管理サーバ１１が配備先と特定される。
【０１５８】
［効果］
本実施例に係る管理サーバ１１は、定義情報と共にサービスの動作条件をさらに配信する。プレイスサーバ１２は、定義情報と共に取得される動作条件をプレイスサーバ１２が満たす場合、定義情報に定義されたサービスのプログラムを取得する。これにより、プレイスサーバ１２がサービスの動作条件を満たす場合にサービスを配備できる。また、例えば、プレイスサーバ１２の負荷が高く、十分な性能得られない場合、プレイスサーバ１２にサービスが配備されることを抑制できる。
【０１５９】
また、本実施例に係るプレイスサーバ１２は、動作条件をプレイスサーバ１２が満たさない場合、端末装置１３からのサービスの呼び出しを管理サーバ１１に転送する。管理サーバ１１は、プレイスサーバ１２から転送して呼び出されたサービスのプログラムによるサービスを提供する。これにより、例えば、プレイスサーバ１２の負荷が高く、十分な性能が得られない場合、管理サーバ１１でサービスを実行させることができる。
【０１６０】
また、本実施例に係る管理サーバ１１は、異なるサーバに分散可能とされたサービスの機能ごとに動作条件を配信する。プレイスサーバ１２は、プレイスサーバ１２が動作条件を満たすサービスの機能を構成するサービスのプログラムを取得する。これにより、サービスの機能ごとに動作条件を満たす機能をプレイスサーバ１２で実行できる。また、例えば、プレイスサーバ１２の負荷が高く、十分な性能が得られないサービスの機能が、プレイスサーバ１２に配備されることを抑制できる。
【実施例４】
【０１６１】
さて、これまで開示の装置に関する実施例について説明したが、開示の技術は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【０１６２】
例えば、上記の実施例３は、プレイスサーバ１２が端末装置１３からサービスのＡＰＩの呼び出しを受けたタイミングでプレイスサーバ１２がサービスの動作条件や利用条件を満たすか否かを判定する場合を例に説明したが、開示の装置はこれに限定されない。例えば、実施例２に適用し、プレイスサーバ１２が、管理サーバ１１からサービスのＡＰＩが配信されると、配信されたサービスの動作条件や利用条件を満たすか否かを判定する。そして、プレイスサーバ１２は、動作条件や利用条件を満たす場合にサービスのＡＰＩの呼び出しを待たずに、サービスのプログラムをバックグラウンドで取得してもよい。
【０１６３】
また、上記の実施例１〜３では、プレイスサーバ１２からの要求に応じて管理サーバ１１がサービスのプログラムを配信する場合を例に説明したが、開示の装置はこれに限定されない。例えば、管理サーバ１１は、プレイスサーバ１２から状況が通知されると、状況に応じてアプリケーションのプログラムと、当該アプリケーションが利用するサービスのプログラムを共にプレイスサーバ１２へ配信してもよい。
【０１６４】
また、上記の実施例では、端末装置１３の現在の場所や端末装置１３の使用者を状況として含んだチェックインの要求を送信する場合を例に説明したが、開示の装置はこれに限定されない。例えば、端末装置１３が現在時間や、就業時間と休み時間の区分、タイムテーブルの時間区分を状況としてプレイスサーバ１２へ通知する。プレイスサーバ１２は、通知された時間の状況に応じたアプリケーションとサービスを管理サーバ１１から取得してもよい。これにより、例えば、プレイスサーバ１２および端末装置１３は、就業時間と休み時間や、タイムテーブルの時間区分よって使用可能アプリケーションとサービスを変えることができる。
【０１６５】
また、上記の実施例では、プレイスサーバ１２はサービスが配備済みの場合、サービスのプログラムを管理サーバ１１から取得しない場合を例に説明したが、開示の装置はこれに限定されない。例えば、プレイスサーバ１２は、端末装置１３からサービスのＡＰＩが呼び出された場合、ＡＰＩのサービスが配備済の場合でも、管理サーバ１１から最新版のサービスのプログラムを取得してもよい。また、プレイスサーバ１２は、サービスのプログラムの更新の有無を管理サーバ１１に問い合わせし、配備済のサービスプログラムから更新がある場合、管理サーバ１１から最新版のサービスのプログラムを取得してもよい。また、プレイスサーバ１２は、サービスが配備済みでも、一定期間ごとや所定のタイミングで管理サーバ１１から最新版のサービスのプログラムを取得してもよい。
【０１６６】
また、上記の実施例では、プレイスサーバ１２が、所定の削除条件を満たすサービスのプログラム、当該サービスのＡＰＩを削除する場合を例に説明したが、開示の装置はこれに限定されない。例えば、プレイスサーバ１２は、サービスのＡＰＩを削除せずに残し、サービスのＡＰＩが呼び出された際にサービスのプログラムを取得してもよい。サービスのＡＰＩを残すことにより、プレイスサーバ１２は、端末装置１３からサービスのＡＰＩが呼び出された際にＡＰＩでエラーとなることを抑制できる。
【０１６７】
また、上記の実施例では、動作条件や利用条件をハードウェアのリソース量とした場合を例に説明したが、開示の装置はこれに限定されない。例えば、動作条件や利用条件として、プレイスサーバ１２と端末装置１３の間の通信速度の条件を定め、通信速度が条件に満たない場合にサービスを管理サーバ１１に配備してもよい。
【０１６８】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、管理サーバ１１の配信部４０およびサービス提供部４１の各処理部が適宜統合または分割されてもよい。また、プレイスサーバ１２の受付部７０、取得部７１、送信部７２、サービス提供部７３、削除部７４および転送部７５の各処理部が適宜統合または分割されてもよい。また、管理サーバ１１およびプレイスサーバ１２の各処理部にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵ及び当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１６９】
［サービス配備プログラム］
また、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータシステムの一例を説明する。図２１は、サービス配備プログラムを実行するコンピュータを示す図である。
【０１７０】
図２１に示すように、コンピュータ３００は、ＣＰＵ３１０、ＨＤＤ（Hard  Disk  Drive）３２０、ＲＡＭ（Random  Access  Memory）３４０を有する。これら３１０〜３４０の各部は、バス４００を介して接続される。
【０１７１】
ＨＤＤ３２０には上記実施例の各処理部と同様の機能を発揮するサービス配備プログラム３２０ａが予め記憶される。例えば、上記実施例のプレイスサーバ１２の受付部７０、取得部７１、送信部７２、サービス提供部７３、削除部７４および転送部７５と同様の機能を発揮するサービス配備プログラム３２０ａを記憶させる。なお、サービス配備プログラム３２０ａについては、適宜分離しても良い。
【０１７２】
また、ＨＤＤ３２０は、各種データを記憶する。例えば、ＨＤＤ３２０は、ＯＳや各種データを記憶する。
【０１７３】
そして、ＣＰＵ３１０が、サービス配備プログラム３２０ａをＨＤＤ３２０から読み出して実行することで、実施例の各処理部と同様の動作を実行する。すなわち、サービス配備プログラム３２０ａは、実施例の受付部７０、取得部７１、送信部７２、サービス提供部７３、削除部７４および転送部７５と同様の動作を実行する。
【０１７４】
なお、上記したサービス配備プログラム３２０ａについては、必ずしも最初からＨＤＤ３２０に記憶させることを要しない。例えば、コンピュータ３００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）、ＤＶＤ（Digital  Versatile  Disk）、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。
【０１７５】
さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ３００に接続される「他のコンピュータ（またはサーバ）」などにプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。
【０１７６】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１７７】
（付記１）第１サーバ装置と第２サーバ装置とを有する情報処理システムであって、
前記第１サーバ装置は、
端末装置で使用されるアプリケーションのプログラムである第１プログラムおよび当該アプリケーションが利用するサービスのプログラムである第２プログラムを記憶する記憶部と、
前記第２サーバ装置から通知された状況に応じた前記第１プログラムおよび前記第２プログラムを配信する配信部とを有し、
前記第２サーバ装置は、
前記端末装置からアクセス要求を受け付ける受付部と、
前記受付部により受け付けたアクセス要求に応じて、前記端末装置の状況を前記第１サーバ装置に通知して前記第１プログラムおよび前記第２プログラムを取得する取得部と、
前記取得部により取得された前記第１プログラムを前記端末装置に送信する送信部と、
前記取得部により取得された前記第２プログラムによるサービスを提供する提供部とを有する
ことを特徴とする情報処理システム。
【０１７８】
（付記２）前記取得部は、前記端末装置からアクセス要求を受け付けた場合、前記第１プログラムおよび当該第１プログラムのアプリケーションが利用するサービスを呼び出す定義情報を取得し、
前記取得部は、取得した前記定義情報に定義されたサービスが呼び出された場合、当該定義情報に定義されたサービスのプログラムである前記第２プログラムを取得する
ことを特徴とする付記１に記載の情報処理システム。
【０１７９】
（付記３）前記取得部は、前記端末装置からアクセス要求を受け付けた場合、前記第１プログラムおよび当該第１プログラムのアプリケーションが利用するサービスを呼び出す定義情報を取得し、続けて、取得した前記定義情報に定義されたサービスのプログラムである前記第２プログラムを取得する
ことを特徴とする付記１に記載の情報処理システム。
【０１８０】
（付記４）前記配信部は、前記定義情報と共にサービスの動作条件をさらに配信し、
前記取得部は、前記定義情報と共に取得される前記動作条件を前記第２サーバ装置が満たす場合、前記定義情報に定義されたサービスのプログラムである前記第２プログラムを取得する
ことを特徴とする付記２または３に記載の情報処理システム。
【０１８１】
（付記５）前記第２サーバ装置は、前記動作条件を前記第２サーバ装置が満たさない場合、前記端末装置からのサービスの呼び出しを前記第１サーバ装置に転送する転送部をさらに有し、
前記第１サーバ装置は、前記第２サーバ装置から転送して呼び出されたサービスのプログラムによるサービスを提供する第２提供部をさらに有する
ことを特徴とする付記４に記載の情報処理システム。
【０１８２】
（付記６）前記配信部は、異なるサーバに分散可能とされたサービスの機能ごとに動作条件を配信し、
前記取得部は、前記第２サーバ装置が前記動作条件を満たすサービスの機能を構成するサービスのプログラムである前記第２プログラムを取得する
ことを特徴とする付記４に記載の情報処理システム。
【０１８３】
（付記７）端末装置からアクセス要求を受け付ける受付部と、
前記アクセス要求に応じて前記端末装置の状況をサーバ装置に通知し、前記端末装置で使用されるアプリケーションのプログラムである第１プログラムおよび当該アプリケーションが利用するサービスのプログラムである第２プログラムを前記サーバ装置から取得する取得部と、
前記サーバ装置から配信された前記第１プログラムを前記端末装置に送信する送信部と、
前記サーバ装置から配信された前記第２プログラムによる前記サービスを提供する提供部と、
を有することを特徴とする情報処理装置。
【０１８４】
（付記８）端末装置で使用されるアプリケーションのプログラムである第１プログラムおよび当該アプリケーションが利用するサービスのプログラムである第２プログラムを記憶する第１サーバ装置と、前記サービスを提供する第２サーバ装置とにより前記サービスを配備するサービス配備方法であって、
前記第２サーバ装置は、前記端末装置からアクセス要求を受け付けると、アクセス要求に応じて前記端末装置の状況を前記第１サーバ装置に通知し、
前記第１サーバ装置は、前記第２サーバ装置から通知された状況に応じた前記第１プログラムおよび前記第２プログラムを配信し、
前記第２サーバ装置は、前記第１サーバ装置から配信された前記第１プログラムを前記端末装置に送信し、前記第１サーバ装置から配信された前記第２プログラムによるサービスを提供する
ことを特徴とするサービス配備方法。
【０１８５】
（付記９）端末装置からアクセス要求を受け付けると、アクセス要求に応じて前記端末装置の状況を、前記端末装置で使用されるアプリケーションのプログラムである第１プログラムおよび当該アプリケーションが利用するサービスのプログラムである第２プログラムを記憶するサーバ装置に通知し、
前記サーバ装置から配信された前記第１プログラムを前記端末装置に送信し、
前記サーバ装置から配信された前記第２プログラムによる前記サービスを提供する
処理をコンピュータに実行させることを特徴とするサービス配備プログラム。
【符号の説明】
【０１８６】
１０  システム
１１  管理サーバ
１２  プレイスサーバ
１３  端末装置
２１  記憶部
２２  制御部
３０  配信定義情報
３１  第１プログラムデータ
３２  第２プログラムデータ
３３  状況種別情報
４０  配信部
４１  サービス提供部
５２  記憶部
５３  制御部
６０  配信情報
６１  第１プログラムデータ
６２  第２プログラムデータ
７０  受付部
７１  取得部
７２  送信部
７３  サービス提供部
７４  削除部
７５  転送部
【図１】
0006631285.tif 000002
【図２】
0006631285.tif 000003
【図３】
0006631285.tif 000004
【図４】
0006631285.tif 000005
【図５】
0006631285.tif 000006
【図６】
0006631285.tif 000007
【図７】
0006631285.tif 000008
【図８】
0006631285.tif 000009
【図９】
0006631285.tif 000010
【図１０】
0006631285.tif 000011
【図１１】
0006631285.tif 000012
【図１２】
0006631285.tif 000013
【図１３】
0006631285.tif 000014
【図１４】
0006631285.tif 000015
【図１５】
0006631285.tif 000016
【図１６】
0006631285.tif 000017
【図１７】
0006631285.tif 000018
【図１８】
0006631285.tif 000019
【図１９】
0006631285.tif 000020
【図２０】
0006631285.tif 000021
【図２１】
0006631285.tif 000022