(57)【特許請求の範囲】
【請求項１】
ウェブサーバは、
アプリケーションに含まれるファイルをパッケージ化したパッケージ型アプリを登録した後に、前記パッケージ型アプリを他のパッケージ型アプリとホストを分けて展開し、
前記展開する処理によって展開されたコンテンツを、前記パッケージ型アプリの実行基盤ごとに異なる、ウェブブラウザと前記実行基盤との機能差をなくすスクリプトに基づいてウェブブラウザ用に変換し、
前記ウェブブラウザからホスト名を含むアプリ取得要求を受け取ると、前記アプリ取得要求に含まれるホスト名が示すホストに属するコンテンツを提供する
処理を実行することを特徴とするアプリ提供方法。
【請求項２】
前記変換する処理は、
該展開されたコンテンツを、前記パッケージ型アプリの実行基盤が提供する機能を使用できるように、前記ウェブブラウザ用に変換する
処理を実行することを特徴とする請求項１に記載のアプリ提供方法。
【請求項３】
前記変換する処理は、
該展開されたコンテンツに含まれるアプリに関する情報に基づいて、前記パッケージ型アプリの実行基盤の種別を識別し、
該識別された種別に対応する前記スクリプトに応じて、該展開されたコンテンツをウェブブラウザ用に変換する
処理を実行することを特徴とする請求項１または請求項２に記載のアプリ提供方法。
【請求項４】
前記変換する処理は、
さらに、前記アプリに関する情報を該情報に対応する形式で解析し、解析した結果に基づいて、前記アプリに関する情報に含まれる機能制限情報を前記ウェブブラウザが認識可能な機能制限情報に変換する
処理を実行することを特徴とする請求項３に記載のアプリ提供方法。
【請求項５】
コンピュータに、
アプリケーションに含まれるファイルをパッケージ化したパッケージ型アプリを登録した後に、前記パッケージ型アプリを他のパッケージ型アプリとホストを分けて展開し、
前記展開する処理によって展開されたコンテンツを、前記パッケージ型アプリの実行基盤ごとに異なる、ウェブブラウザと前記実行基盤との機能差をなくすスクリプトに基づいてウェブブラウザ用に変換し、
前記ウェブブラウザからホスト名を含むアプリ取得要求を受け取ると、前記アプリ取得要求に含まれるホスト名が示すホストに属するコンテンツを提供する
各処理を実行させることを特徴とするアプリ提供プログラム。
【請求項６】
アプリケーションに含まれるファイルをパッケージ化したパッケージ型アプリを登録した後に、前記パッケージ型アプリを他のパッケージ型アプリとホストを分けて展開する展開部と、
前記展開部によって展開されたコンテンツを、前記パッケージ型アプリの実行基盤ごとに異なる、ウェブブラウザと前記実行基盤との機能差をなくすスクリプトに基づいてウェブブラウザ用に変換する変換部と、
前記ウェブブラウザからホスト名を含むアプリ取得要求を受け取ると、前記アプリ取得要求に含まれるホスト名が示すホストに属するコンテンツを提供する提供部と、
を有することを特徴とするアプリ提供サーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリ提供方法などに関する。
【背景技術】
【０００２】
近年、ＨＴＭＬ（Hyper  Text  Markup  Language）で記述されたアプリケーションやスクリプト等のリソースを全て１つのファイルに纏めたパッケージ型アプリが登場した。パッケージ型アプリの登場により、端末側では、ＨＴＭＬ５技術で構成されたウェブアプリを取得し、オフラインで実行できるようになった。すなわち、パッケージ型アプリでは、ネイティブアプリのようにアプリストアが用意され、端末側のユーザがアプリストアからパッケージ型アプリを選択し、選択したパッケージ型アプリをインストールして利用する。インストールされたアプリは、アプリを実行する基盤のソフトウェア（以降、「ランタイム」と呼ぶ）でロードされ、実行される。
【０００３】
パッケージ型アプリが、ランタイムで実行される場合、ランタイムは、パッケージ型アプリ毎に各アプリで使用するデータを分離するので、パッケージ型アプリを安全に実行できる。
【０００４】
また、ウェブサービスでは、ウェブサーバにコンテンツが用意され、端末側のユーザがウェブサーバからコンテンツを選択し、選択したコンテンツをウェブサーバから端末にロードして利用する。送信されたコンテンツは、端末上のウェブブラウザで実行される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−２３３１４６号公報
【特許文献２】特表２０１１−５０１８５４号公報
【特許文献３】特許第４７９６９６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ウェブブラウザがパッケージ型アプリを実行する場合、セキュリティ上安全に実行できないという問題がある。
【０００７】
かかる問題について説明する。図１５は、ウェブブラウザがパッケージ型アプリを実行する場合、安全に実行できないという問題を説明するための図である。図１５に示すように、アプリストアには、パッケージ型アプリが複数登録されている。そして、仮に、アプリストアに登録されている複数のパッケージ型アプリが展開され、展開されたページ（コンテンツ）がウェブサーバ上に登録されるとする。
【０００８】
ランタイム側の端末では、ユーザによって選択されたパッケージ型アプリをインストールし、インストールされたアプリをランタイムで実行する。ランタイムは、インストールされたアプリを、アプリ毎に分離するので、アプリを安全に実行できる。
【０００９】
一方、ウェブブラウザ側の端末では、ユーザによって選択されたページをロードし、ロードしたページをウェブブラウザで実行する。ウェブブラウザは、ロードしたページについて、ページの展開元であるパッケージ型アプリ毎にオリジンが分離されないので、ページを安全に実行できない。すなわち、ウェブブラウザは、パッケージ型アプリ毎にオリジンが分離されないので、パッケージ型アプリ間でのデータのアクセスを許容してしまう。つまり、ウェブブラウザがパッケージ型アプリを実行する場合、セキュリティ上安全に実行することができない。
【００１０】
１つの側面では、パッケージ型アプリをウェブブラウザで安全に実行させることを目的とする。
【課題を解決するための手段】
【００１１】
本願の開示するアプリ提供方法では、ウェブサーバは、アプリケーションに含まれるファイルをパッケージ化したパッケージ型アプリを登録した後に、前記パッケージ型アプリを他のパッケージ型アプリとホストを分けて展開し、前記展開する処理によって展開されたコンテンツを、前記パッケージ型アプリの実行基盤に応じてウェブブラウザ用に変換し、前記ウェブブラウザからホスト名を含むアプリ取得要求を受け取ると、前記アプリ取得要求に含まれるホスト名が示すホストに属するコンテンツを提供する処理を実行する。
【発明の効果】
【００１２】
本願の開示するアプリ提供方法の１つの態様によれば、ウェブサーバは、パッケージ型アプリをウェブブラウザで安全に実行させることができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施例に係るアプリ提供処理の一例を示す図である。
【図２】図２は、実施例に係るアプリ提供システムの構成を示す機能ブロック図である。
【図３】図３は、実施例に係るアプリ情報テーブルのデータ構造の一例を示す図である。
【図４】図４は、実施例に係るホスト情報テーブルのデータ構造の一例を示す図である。
【図５】図５は、実施例に係る変換テーブルのデータ構造の一例を示す図である。
【図６Ａ】図６Ａは、ランタイム種別および機能制限情報を識別する処理の一例を示す図である。
【図６Ｂ】図６Ｂは、ランタイム種別および機能制限情報を識別する処理の別の例を示す図である。
【図７】図７は、実施例に係るアプリ変換処理の一例を示す図である。
【図８】図８は、グルースクリプトの一例を示す図である。
【図９】図９は、実施例に係るホスト分離処理のフローチャートを示す図である。
【図１０】図１０は、実施例に係るアプリ展開処理のフローチャートを示す図である。
【図１１】図１１は、実施例に係るアプリ変換処理のフローチャートを示す図である。
【図１２】図１２は、実施例に係るアプリ公開処理のフローチャートを示す図である。
【図１３Ａ】図１３Ａは、実施例に係るアプリ提供処理の具体例を示す図である。
【図１３Ｂ】図１３Ｂは、実施例に係るアプリ提供処理の具体例を示す図である。
【図１４】図１４は、アプリ提供プログラムを実行するコンピュータの一例を示す図である。
【図１５】図１５は、ウェブブラウザがパッケージ型アプリを実行する場合、安全に実行できないという問題を説明するための図である。
【発明を実施するための形態】
【００１４】
以下に、本願の開示するアプリ提供方法、アプリ提供サーバおよびアプリ提供プログラムの実施例を図面に基づいて詳細に説明する。なお、実施例によりこの発明が限定されるものではない。
【実施例】
【００１５】
［アプリ提供処理の一例］
図１は、実施例に係るアプリ提供処理の一例を示す図である。図１に示すように、アプリ提供処理は、アプリストアに登録されたパッケージ型アプリをアプリ展開部に出力する。アプリ提供処理は、アプリ展開部を用いて、出力されたパッケージ型アプリを他のパッケージ型アプリとホストを分けて展開する。アプリ提供処理は、展開されたコンテンツを、アプリ変換部を用いて、該パッケージ型アプリの実行基盤に応じてウェブブラウザ用に変換する。この結果、展開されたコンテンツは、他のパッケージ型アプリと区別されたホストに属し、ウェブブラウザに公開される。そして、アプリ提供処理は、ウェブブラウザからホスト名を含むアプリ取得要求を受け取ると、アプリ取得要求に含まれるホストに属する展開されたコンテンツを提供する。
【００１６】
ここでいうアプリストアとは、パッケージ型アプリを提供するための提供チャネルである。ここでいうパッケージ型アプリは、特定のアプリケーションを実行するために必要なＨＴＭＬで記述されたページやスクリプト等のリソースを１つに纏めたファイルである。パッケージ型アプリには、例えば、アプリの情報が記述されたアプリプロファイル、ＨＴＭＬで記述されたページ、スタイルシートおよびスクリプト等が含まれる。パッケージ型アプリは、特定のランタイムに対応するＡＰＩを用いてプログラミングされている。ここでいうランタイムとは、インストールされたアプリを実行する基盤のソフトウェアのことをいう。ランタイムが提供する機能は、ランタイム毎に異なる。したがって、パッケージ型アプリは、自己の実行環境であるランタイムが提供する機能を実行できる。ランタイムが提供する機能とは、例えば、デバイス機能やセキュリティ保護機能などが含まれる。
【００１７】
これにより、ウェブブラウザ側の端末は、提供されたコンテンツについて、他のパッケージ型アプリのコンテンツとオリジンが分離されるので、提供されたコンテンツを安全に実行できる。すなわち、ウェブブラウザでは、パッケージ型アプリ毎にオリジンが分離されるので、パッケージ型アプリ間でのデータのアクセスを制限できる。
【００１８】
なお、ランタイム側の端末では、アプリストアに登録されたパッケージ型アプリのうちユーザによって選択されたパッケージ型アプリをインストールし、インストールされたアプリをランタイムで実行する。ランタイムは、インストールされたアプリを、アプリ毎に分離するので、アプリを安全に実行できる。
【００１９】
［アプリ提供システムの構成］
図２は、実施例に係るアプリ提供システムの構成を示す機能ブロック図である。図２に示すように、アプリ提供システム９は、アプリ提供サーバ１と、アプリストア２と、ドメインネームサーバ３と、通信端末４とを有する。
【００２０】
アプリストア２は、パッケージ型アプリを登録する。また、アプリストア２は、ランタイム側の端末からの要求に応じてパッケージ型アプリを提供する。
【００２１】
アプリ提供サーバ１は、アプリ提供処理を実行する。アプリ提供サーバ１は、制御部１１および記憶部１２を有する。
【００２２】
制御部１１は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部１１は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路の電子回路に対応する。または、制御部１１は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等の電子回路に対応する。そして、制御部１１は、ホスト分離部１１１、アプリ展開部１１２、アプリ変換部１１３およびアプリ公開部１１４を有する。
【００２３】
記憶部１２は、例えばフラッシュメモリ（Flash  Memory）等の不揮発性の半導体メモリ素子やＨＤＤ（Hard  Disk  Drive）等の記憶装置に対応する。記憶部１２には、アプリ情報テーブル１２１、ホスト情報テーブル１２２、展開ファイル記憶領域１２３および変換テーブル１２４が含まれる。アプリ情報テーブル１２１は、パッケージ型アプリのアプリ情報を記憶する。アプリ情報には、パッケージ型アプリについて、アプリ識別子、展開先のディレクトリおよびパッケージファイルの内容が含まれる。アプリ情報は、パッケージ型アプリ毎に存在する。ホスト情報テーブル１２２は、パッケージ型アプリのホスト情報を記憶する。ホスト情報には、アプリ識別子に対応付けてホストの名称およびホストの識別子が含まれる。ホスト情報は、アプリ識別子毎に存在する。展開ファイル記憶領域１２３は、パッケージ型アプリを展開した結果のコンテンツを記憶する領域である。パッケージ型アプリは、アプリ識別子に対応付けられたホストの展開先のディレクトリに展開される。変換テーブル１２４は、パッケージ型アプリをウェブブラウザ用に変換するために用いられる変換情報を記憶する。なお、アプリ情報テーブル１２１、ホスト情報テーブル１２２および変換テーブル１２４のデータ構造の一例は、後述する。
【００２４】
ホスト分離部１１１は、パッケージ型アプリのアプリ識別子毎に、ホストを分離する。すなわち、ホスト分離部１１１は、パッケージ型アプリのアプリ識別子毎に、アプリ提供サーバ１のオリジンを分ける。例えば、ホスト分離部１１１は、アプリストア２からパッケージ型アプリのアプリ識別子とパッケージファイルを受信すると、受信したアプリ識別子に対応するアプリ情報をアプリ情報テーブル１２１から取得する。ホスト分離部１１１は、受信したアプリ識別子に対応するアプリ情報が存在しなければ、受信したアプリ識別子に対応するアプリ情報をアプリ情報テーブル１２１に保存する。また、ホスト分離部１１１は、受信したアプリ識別子に対応するホスト情報をホスト情報テーブル１２２から取得する。ホスト分離部１１１は、受信したアプリ識別子に対応するホスト情報が存在しなければ、受信したアプリ識別子に対応するホスト名を決定し、決定したホスト名を含むホスト情報をホスト情報テーブル１２２に保存する。ホスト分離部１１１は、アプリ識別子毎にユニークなホスト名を決定する。また、ホスト分離部１１１は、ホスト名を決定した場合には、決定したホスト名をドメインネームサーバ３に通知する。
【００２５】
なお、ホスト分離部１１１は、パッケージ型アプリのアプリ識別子毎に、ホストを分離すると説明した。アプリ識別子は、パッケージ型アプリのパッケージファイルと１対１に対応する場合もあるし、複数のパッケージ型アプリのパッケージファイルと１対Ｎに対応する場合もある。アプリ識別子が、パッケージ型アプリのパッケージファイルと１対１に対応する場合には、１つのパッケージ型アプリに対してユニークなホスト名が決定される。これにより、ホスト分離部１１１は、他のパッケージ型アプリのデータへのアクセスを制限することができる。一方、アプリ識別子が複数のパッケージ型アプリのパッケージファイルと１対Ｎに対応する場合には、アプリ識別子が同一の複数のパッケージ型アプリに対してユニークなホスト名が決定される。これにより、ホスト分離部１１１は、例えばテナント毎にパッケージ型アプリのホストを分けることができ、他のテナント向けに配信されたパッケージ型アプリのデータへのアクセスを制限することができる。
【００２６】
ここで、アプリ情報テーブル１２１のデータ構造について、図３を参照して説明する。図３は、実施例に係るアプリ情報テーブルのデータ構造の一例を示す図である。図３に示すように、アプリ情報テーブル１２１は、アプリ識別子１２１ａ、アプリ用ディレクトリ１２１ｂおよびパッケージファイル１２１ｃを対応付けて記憶する。アプリ識別子１２１ａは、パッケージ型アプリと１対１に対応する場合には、パッケージ型アプリを一意に識別する識別子である。アプリ識別子１２１ａは、パッケージ型アプリと１対Ｎに対応する場合には、ホストに対応付けられる複数のパッケージ型アプリを一意に識別する識別子である。アプリ用ディレクトリ１２１ｂは、パッケージ型アプリを展開する先のディレクトリである。パッケージファイル１２１ｃは、パッケージ型アプリの内容を示す。
【００２７】
一例として、アプリ識別子１２１ａが「http://store.xyz.com/foo.zip」である場合に、アプリ用ディレクトリ１２１ｂとして「/apps/001/」、パッケージファイル１２１ｃとして「0A03F532C0…」と記憶している。
【００２８】
ホスト情報テーブル１２２のデータ構造について、図４を参照して説明する。図４は、実施例に係るホスト情報テーブルのデータ構造の一例を示す図である。図４に示すように、ホスト情報テーブル１２２は、ホスト識別子１２２ａ、ホスト名１２２ｂおよびアプリ識別子１２２ｃを対応付けて記憶する。ホスト識別子１２２ａは、ホストの識別子である。ホスト名１２２ｂは、ホストの名称である。アプリ識別子１２２ｃは、アプリ情報テーブル１２１のアプリ識別子１２１ａに対応する。すなわち、アプリ識別子１２２ｃは、パッケージ型アプリと１対１に対応する場合には、パッケージ型アプリを一意に識別する識別子である。アプリ識別子１２２ｃは、パッケージ型アプリと１対Ｎに対応する場合には、ホストに対応付けられる複数のパッケージ型アプリを一意に識別する識別子である。
【００２９】
一例として、ホスト識別子１２２ａが「host001」である場合に、ホスト名１２２ｂとして「001.app.xyz.com」、アプリ識別子１２２ｃとして「http://store.xyz.com/foo.zip」と記憶している。
【００３０】
図２に戻って、アプリ展開部１１２は、パッケージ型アプリを、アプリ識別子が異なる他のパッケージ型アプリとホストを分けて展開する。例えば、アプリ展開部１１２は、アプリ識別子に対応するアプリ情報をアプリ情報テーブル１２１から取得する。アプリ展開部１１２は、取得したアプリ情報に含まれるアプリ用ディレクトリ１２１ｂ配下に、パッケージファイル１２１ｃを展開する。アプリ展開部１１２は、アプリ用ディレクトリ１２１ｂ配下にファイルが存在する場合には、ファイルを削除してからパッケージファイル１２１ｃを展開する。なお、アプリ展開部１１２は、アプリ用ディレクトリ１２１ｂ配下にファイルが存在する場合、展開前に、アプリ用ディレクトリ１２１ｂ配下のファイルとパッケージファイル１２１ｃとを比較し、変更されているときにパッケージファイル１２１ｃを展開しても良い。
【００３１】
アプリ変換部１１３は、展開されたファイル（コンテンツ）を、パッケージ型アプリの実行基盤（ランタイム）に応じてウェブブラウザ４１用に変換する。すなわち、アプリ変換部１１３は、パッケージ型アプリをウェブブラウザ４１で実行するために、展開されたファイルに含まれるアプリプロファイルやスクリプトを変換する。例えば、アプリ変換部１１３は、展開されたファイルに含まれるアプリプロファイルのファイル名および変換テーブル１２４に基づいて、ランタイムの種別を識別する。アプリプロファイルとは、パッケージ型アプリの情報が記述されたプロファイルのことをいう。ランタイムの種別を識別するのは、パッケージ型アプリは、特定のランタイムに対応するＡＰＩを用いて生成され、ランタイムが提供する機能は、ランタイム毎に異なるからである。なお、アプリプロファイルのファイル名の代わりに、アプリパッケージファイルの拡張子名（.zipや.wgt）等でランタイムの種別を識別しても良い。
【００３２】
ここで、変換テーブル１２４のデータ構造について、図５を参照して説明する。図５は、実施例に係る変換テーブルのデータ構造の一例を示す図である。図５に示すように、変換テーブル１２４は、ランタイム種別１２４ａ、プロファイルのファイル名１２４ｂ、プロファイルの形式１２４ｃ、ＡＰＩグルースクリプト１２４ｄおよびセキュリティポリシの位置１２４ｅを対応付けて記憶する。ランタイム種別１２４ａは、ランタイムの種別を示す。プロファイルのファイル名１２４ｂは、アプリプロファイルのファイル名を示す。プロファイル形式１２４ｃは、アプリプロファイルの形式を示す。ＡＰＩグルースクリプト１２４ｄは、ランタイムとウェブブラウザ４１との機能差を平滑化するために用いられるスクリプトである。ＡＰＩグルースクリプト１２４ｄは、ランタイム種別毎に異なる。セキュリティポリシの位置１２４ｅは、アプリプロファイルの中でセキュリティポリシが記述された位置を示す。例えば、アプリ変換部１１３は、展開されたファイルに含まれるアプリプロファイルのファイル名をキーとして、変換テーブル１２４のプロファイルのファイル名１２４ｂと比較する。アプリ変換部１１３は、同一のファイル名があれば、対応するランタイム種別１２４ａをランタイムの種別として識別する。
【００３３】
一例として、ランタイム種別１２４ａが「ランタイムα」である場合に、プロファイルのファイル名１２４ｂとして「mainfest.webapp」、プロファイル形式１２４ｃとして「JSON」、ＡＰＩグルースクリプト１２４ｄとして「glue-ff.js」と記憶している。セキュリティポリシの位置１２４ｅとして「/csp」と記憶している。
【００３４】
図２に戻って、アプリ変換部１１３は、識別されたランタイムの種別および変換テーブル１２４に基づいて、識別されたランタイムの種別に対応するＡＰＩグルースクリプト１２４ｄを読み込む。アプリ変換部１１３は、展開されたファイルに対して、読み込んだＡＰＩグルースクリプト１２４ｄを埋め込む。これにより、アプリ変換部１１３は、パッケージ型アプリの実行基盤であるランタイムとウェブブラウザ４１との機能差を平滑化するようにパッケージ型アプリを変換することができる。
【００３５】
また、アプリ変換部１１３は、アプリプロファイルに記述された機能制限情報であるセキュリティポリシを識別し、識別したセキュリティポリシをウェブブラウザ４１が認識できるＣＳＰ（Content  Security  Policy）に変換する。ここでいうＣＳＰは、Ｗ３Ｃ（World  Wide  Web  Consortium）で標準化されているウェブコンテンツのセキュリティ保護方式のことである。アプリ変換部１１３は、変換した後に、ＣＳＰ違反時の通知先であるレポートＵＲＩ（Uniform  Resource  Identifier）を、ホスト分離部１１１で決定されたホストに設定する。アプリ変換部１１３は、変換したＣＳＰを、アプリ用ディレクトリ１２１ｂ配下に保存する。
【００３６】
アプリ公開部１１４は、ウェブブラウザ４１からのリクエストに対応するアプリのコンテンツを提供する。例えば、アプリ公開部１１４は、ＨＴＴＰのリクエスト部からアプリＵＲＬを取得し、取得したアプリＵＲＬからホスト名とファイルパスを抽出する。ここでいうアプリＵＲＬとは、アプリにアクセスするためのＵＲＬのことをいう。アプリ公開部１１４は、抽出したホスト名、ファイルパスをキーとして、アプリ情報テーブル１２１およびホスト情報テーブル１２２からホスト情報およびアプリ情報を取得する。アプリ公開部１１４は、取得したアプリ情報のアプリ用ディレクトリ１２１ｂ配下のファイルをレスポンスに設定する。
【００３７】
一例として、ホスト名とアプリ（パッケージファイル）とが１対１である場合、アプリＵＲＬは、「http://ホスト名/」で表わされる。アプリＵＲＬが「http://001.app.xyz.com」である場合、アプリ公開部１１４は、アプリＵＲＬからホスト名「001.app.xyz.com」を抽出する。そして、アプリ公開部１１４は、ホスト情報テーブル１２２に基づいて、抽出したホスト名に対応するアプリ識別子を取得する。アプリ公開部１１４は、アプリ情報テーブル１２１に基づいて、取得したアプリ識別子に対応するアプリ用ディレクトリ１２１ｂを取得する。アプリ公開部１１４は、ホスト名で示されるホストのアプリ用ディレクトリ１２１ｂ配下のファイルをレスポンスに設定する。
【００３８】
別の例として、ホスト名とアプリ（パッケージファイル）とが１対Ｎである場合、アプリＵＲＬは、「http://ホスト名/ファイルパス/」で表わされる。アプリＵＲＬが「http://001.app.xyz.com/apps/002/」である場合、アプリ公開部１１４は、アプリＵＲＬからホスト名「001.app.xyz.com」、ファイルパス「/apps/002/」を抽出する。そして、アプリ公開部１１４は、ホスト情報テーブル１２２に基づいて、抽出したホスト名に対応するアプリ識別子を取得する。アプリ公開部１１４は、アプリ情報テーブル１２１に基づいて、取得したアプリ識別子に対応するアプリ用ディレクトリ１２１ｂからファイルパスに一致したアプリ用ディレクトリを取得する。アプリ公開部１１４は、ホスト名で示されるホストのアプリ用ディレクトリ配下のファイルをレスポンスに設定する。
【００３９】
また、アプリ公開部１１４は、取得したアプリ情報のアプリ用ディレクトリ１２１ｂ配下にＣＳＰが存在する場合には、ＣＳＰをレスポンスヘッダに付与する。アプリ公開部１１４は、レスポンスをウェブブラウザ４１に返答する。
【００４０】
ドメインネームサーバ３は、新たに決定されたホスト名とアプリ提供サーバ１のＩＰアドレスとの対をゾーンファイル３１に設定する。ウェブブラウザ４１が、新たに決定されたホスト名でアプリ提供サーバ１にアクセスできるようにするためである。なお、アプリ提供サーバ１のＩＰアドレスは、予め決定されているものとする。かかるＩＰアドレスは、１つであっても、複数であっても良い。
【００４１】
通信端末４は、ブラウザ４１を有する。通信端末４は、例えば、スマートフォンであったり、ＰＨＳ（Personal  Handyphone  System）であったり、ＰＤＡ（Personal  Digital  Assistants）であったり、ＰＣ（Personal  Computer）であっても良く、通信可能であってウェブブラウザ４１を有する通信端末であれば良い。
【００４２】
通信端末４は、ウェブブラウザ４１からリクエストをアプリ提供サーバ１に送信し、送信したリクエストに対応するコンテンツを受信する。リクエストには、アプリＵＲＬが含まれる。
【００４３】
［ランタイム種別および機能制限情報を識別する処理の一例］
図６Ａは、ランタイム種別および機能制限情報を識別する処理の一例を示す図である。図６Ａに示すように、展開後のファイルには、パッケージ型アプリのパッケージファイル「app.zip」が展開された結果のファイルを示している。
【００４４】
まず、アプリ変換部１１３は、展開後のファイルに含まれるアプリプロファイルのファイル名および変換テーブル１２４に基づいて、ランタイムの種別を識別する。ここでは、展開後のファイルには、ファイル名が「manifest.webapp」であるアプリプロファイルが含まれる。「manifest.webapp」は、変換テーブル１２４（図５参照）のプロファイルのファイル名１２４ｂと一致する。したがって、アプリ変換部１１３は、プロファイルのファイル名１２４ｂ「manifest.webapp」に対応するランタイム種別１２４ａ「ランタイムα」をランタイムの種別として識別する。
【００４５】
この結果、アプリ変換部１１３は、識別したランタイムの種別に対応するＡＰＩグルースクリプト１２４ｄを用いて、パッケージ型アプリの実行基盤であるランタイムとウェブブラウザ４１との機能差を平滑化するようにパッケージ型アプリを変換することができる。
【００４６】
また、アプリ変換部１１３は、アプリプロファイルをランタイム種別に対応するプロファイル形式で解析する。ここでは、アプリ変換部１１３は、変換テーブル１２４（図５参照）を参照し、ランタイム種別１２４ａ「ランタイムα」に対応するプロファイル形式１２４ｃ「JSON」およびセキュリティポリシの位置１２４ｅ「/csp」を取得する。アプリ変換部１１３は、ファイル名が「manifest.webapp」であるアプリプロファイルを読み込み、読み込んだアプリプロファイルをプロファイル形式である「JSON」形式で解析する。そして、アプリ変換部１１３は、解析した結果、セキュリティポリシの位置１２４ｅ「/csp」に位置する「default-src…」を機能制限情報として識別する。
【００４７】
この結果、アプリ変換部１１３は、識別した機能制限情報をＣＳＰとして、アプリ用ディレクトリ１２１ｂ配下に保存することができる。
【００４８】
［ランタイム種別および機能制限情報を識別する処理の別の例］
図６Ｂは、ランタイム種別および機能制限情報を識別する処理の別の例を示す図である。図６Ｂに示すように、展開後のファイルには、パッケージ型アプリのパッケージファイル「app2.wgt」が展開された結果のファイルを示している。
【００４９】
まず、アプリ変換部１１３は、展開後のファイルに含まれるアプリプロファイルのファイル名および変換テーブル１２４に基づいて、ランタイムの種別を識別する。ここでは、展開後のファイルには、ファイル名が「config.xml」であるアプリプロファイルが含まれる。「config.xml」は、変換テーブル１２４（図５参照）のプロファイルのファイル名１２４ｂと一致する。したがって、アプリ変換部１１３は、プロファイルのファイル名１２４ｂ「config.xml」に対応するランタイム種別１２４ａ「ランタイムβ」をランタイムの種別として識別する。
【００５０】
この結果、アプリ変換部１１３は、識別したランタイムの種別に対応するＡＰＩグルースクリプト１２４ｄを用いて、パッケージ型アプリの実行基盤であるランタイムとウェブブラウザ４１との機能差を平滑化するようにパッケージ型アプリを変換することができる。
【００５１】
また、アプリ変換部１１３は、アプリプロファイルをランタイム種別に対応するプロファイル形式で解析する。ここでは、アプリ変換部１１３は、変換テーブル１２４（図５参照）を参照し、ランタイム種別１２４ａ「ランタイムβ」に対応するプロファイル形式１２４ｃ「XML」およびセキュリティポリシの位置１２４ｅ「/widget/content_security_policy」を取得する。アプリ変換部１１３は、ファイル名が「config.xml」であるアプリプロファイルを読み込み、読み込んだアプリプロファイルをプロファイル形式である「XML」形式で解析する。そして、アプリ変換部１１３は、解析した結果、セキュリティポリシの位置１２４ｅ「/widget/content_security_policy」に位置する「default-src…」を機能制限情報として識別する。
【００５２】
この結果、アプリ変換部１１３は、識別した機能制限情報をＣＳＰとして、アプリ用ディレクトリ１２１ｂ配下に保存することができる。
【００５３】
[アプリ変換処理の一例]
図７は、実施例に係るアプリ変換処理の一例を示す図である。図７では、ランタイムＡ用アプリのＡＰＩグルースクリプトは「glueA.js」、ランタイムＢ用アプリのＡＰＩグルースクリプトは「glueB.js」であるとする。図７に示すように、同じ機能を有するランタイムＡ用のアプリと、ランタイムＢ用のアプリとがあるとする。ランタイムＡ用のアプリと、ランタイムＢ用のアプリとでは、ランタイム毎に呼び出し方（ＡＰＩ）が異なる。ここでは、ランタイムＡ用のアプリでは、符号ａ１で示されるＡＰＩとなるのに対して、ランタイムＢ用のアプリでは、符号ｂ１で示されるＡＰＩとなる。
【００５４】
このような状況の下、アプリ変換部１１３は、展開されたファイルに対して、ＡＰＩグルースクリプト１２４ｄを追加する。
【００５５】
ここでは、アプリ変換部１１３は、ランタイムＡ用アプリに対して、ＡＰＩグルースクリプト「glueA.js」を追加する。符号ａ２がＡＰＩグルースクリプト「glueA.js」をランタイムＡ用アプリに追加した結果である。ランタイムＡ用アプリに追加されたＡＰＩグルースクリプト「glueA.js」の実体は、符号ａ３で表わされる。
【００５６】
また、アプリ変換部１１３は、ランタイムＢ用アプリに対して、ＡＰＩグルースクリプト「glueB.js」を追加する。符号ｂ２がＡＰＩグルースクリプト「glueB.js」をランタイムＢ用アプリに追加した結果である。ランタイムＢ用アプリに追加されたＡＰＩグルースクリプト「glueB.js」の実体は、符号ｂ３で表わされる。
【００５７】
このようにして、アプリ変換部１１３は、ランタイム毎の機能差をウェブブラウザ４１の機能に変換する。
【００５８】
［グルースクリプトの一例］
図８は、グルースクリプトの一例を示す図である。図８の１段目は、図７で示したランタイムＡ用アプリから符号ａ１で示すＡＰＩの部分を抜き出したものである。図８の２段目のグルースクリプトは、図７で示したランタイムＡ用のグルースクリプト「glueA.js」の実体（符号ａ３）である。図８に示すように、アプリ変換部１１３は、ランタイムＡ用アプリにランタイムＡ用のグルースクリプトを追加することで、ランタイムＡ用アプリを符号ａ４で示される変換後のアプリに変換する。
【００５９】
一例として、アプリ変換部１１３は、グルースクリプトに基づいて、ＡＰＩの名前、引数の形式、順番を、変換先のフォーマットに変換する。ここでは、例えば、ＡＰＩの名前「navigator.mozNotification.createNotification」は、「function」で示される「new  window.Notification」に変換される。
【００６０】
別の列として、アプリ変換部１１３は、グルースクリプトに基づいて、ＡＰＩを利用する際の事前処理、事後処理を変換後のアプリに追加する。ここでは、例えば、「window.Notification.requestPermission()」が、事前処理として、ＡＰＩの前に追加される。
【００６１】
［ホスト分離処理のフローチャート］
図９は、実施例に係るホスト分離処理のフローチャートを示す図である。
【００６２】
図９に示すように、ホスト分離部１１１は、アプリストア２から当該アプリストア２に登録されたパッケージ型アプリのアプリ識別子およびパッケージファイルを取得したか否かを判定する（ステップＳ１０）。ホスト分離部１１１は、アプリ識別子およびパッケージファイルを取得しなかったと判定した場合には（ステップＳ１０；Ｎｏ）、取得するまで、判定処理を繰り返す。
【００６３】
一方、ホスト分離部１１１は、アプリ識別子およびパッケージファイルを取得したと判定した場合には（ステップＳ１０；Ｙｅｓ）、アプリ情報テーブル１２１からアプリ識別子に適合するアプリ情報を取得する（ステップＳ１１）。ホスト分離部１１１は、アプリ情報テーブル１２１にアプリ識別子に適合するアプリ情報が存在するか否かを判定する（ステップＳ１２）。
【００６４】
ホスト分離部１１１は、アプリ情報が存在しないと判定した場合には（ステップＳ１２；Ｎｏ）、アプリ識別子、アプリ用ディレクトリおよびパッケージファイルを含む新規のアプリ情報をアプリ情報テーブル１２１に保存する（ステップＳ１３）。そして、ホスト分離部１１１は、ホストを分離すべく、ステップＳ１６に移行する。
【００６５】
一方、ホスト分離部１１１は、アプリ情報が存在すると判定した場合には（ステップＳ１２；Ｙｅｓ）、ホスト情報テーブル１２２からアプリ識別子に適合するホスト情報を取得する（ステップＳ１４）。ホスト分離部１１１は、ホスト情報テーブル１２２にアプリ識別子に適合するホスト情報が存在するか否かを判定する（ステップＳ１５）。
【００６６】
ホスト分離部１１１は、ホスト情報が存在すると判定した場合には（ステップＳ１５；Ｙｅｓ）、ホスト分離処理を終了する。
【００６７】
一方、ホスト分離部１１１は、ホスト情報が存在しないと判定した場合には（ステップＳ１５；Ｎｏ）、アプリ識別子に対応するホスト名を決定する。ホスト分離部１１１は、決定したホスト名を含む新規のホスト情報をホスト情報テーブル１２２に保存する（ステップＳ１６）。例えば、ホスト分離部１１１は、アプリ識別子毎にユニークなホスト名を決定する。そして、ホスト分離部１１１は、決定したホスト名、ホスト識別子、アプリ識別子を対応付けたホスト情報をホスト情報テーブル１２２に保存する。
【００６８】
ホスト分離部１１１は、決定したホスト名をドメインネームサーバ３に通知する（ステップＳ１７）。ドメインネームサーバ３では、通知を受けたホスト名とアプリ提供サーバ１のＩＰアドレスとの対をゾーンファイル３１に設定することになる。そして、ホスト分離部１１１は、ホスト分離処理を終了する。
【００６９】
これにより、ホスト分離部１１１は、特定のアプリ識別子に紐づくパッケージファイルを他のアプリ識別子に紐づくパッケージファイルと異なるホストで分離することができる。
【００７０】
［アプリ展開処理のフローチャート］
図１０は、実施例に係るアプリ展開処理のフローチャートを示す図である。なお、アプリ展開部１１２は、ホスト分離１１１からアプリ識別子およびパッケージファイルを受け取ったものとする。
【００７１】
図１０に示すように、アプリ展開部１１２は、アプリ情報テーブル１２１に基づいて、受け取ったアプリ識別子からアプリ情報を取得する（ステップＳ２１）。アプリ情報には、アプリ識別子１２１ａに対応付けられたアプリ用ディレクトリ１２１ｂ、パッケージファイル１２１ｃが含まれる。
【００７２】
アプリ展開部１１２は、アプリ情報に含まれたアプリ用ディレクトリにファイルが存在するか否かを判定する（ステップＳ２２）。例えば、アプリ展開部１１２は、ホスト情報テーブル１２２に基づいて、受け取ったアプリ識別子からホスト情報を取得する。そして、アプリ展開部１１２は、ホスト情報に含まれるホスト名１２２ｂおよびアプリ情報に含まれるアプリ用ディレクトリ１２１ｂから定められる領域に、ファイルが存在するか否かを判定する。
【００７３】
アプリ展開部１１２は、アプリ用ディレクトリにファイルが存在すると判定した場合には（ステップＳ２２；Ｙｅｓ）。アプリ用ディレクトリ配下のファイルを削除する（ステップＳ２３）。そして、アプリ展開部１１２は、ステップＳ２４に移行する。
【００７４】
一方、アプリ展開部１１２は、アプリ用ディレクトリにファイルが存在しないと判定した場合には（ステップＳ２２；Ｎｏ）、ステップＳ２４に移行する。
【００７５】
ステップＳ２４において、アプリ展開部１１２は、アプリ展開部１１２から受け取ったパッケージファイルをアプリ用ディレクトリに展開する（ステップＳ２４）。そして、アプリ展開部１１２は、アプリ展開処理を終了する。
【００７６】
［アプリ変換処理のフローチャート］
図１１は、実施例に係るアプリ変換処理のフローチャートを示す図である。なお、アプリ変換部１１３は、アプリ展開部１１２からアプリ識別子およびアプリ用ディレクトリを受け取ったものとする。
【００７７】
図１１に示すように、アプリ変換部１１３は、展開されたファイルの中からアプリプロファイルのファイル名を取得する（ステップＳ３０）。例えば、アプリ変換部１１３は、ホスト情報テーブル１２２に基づいて、受け取ったアプリ識別子からホスト情報を取得する。そして、アプリ変換部１１３は、ホスト情報に含まれるホスト名１２２ｂおよび受け取ったアプリ用ディレクトリから定められた領域に展開されたファイルの中からアプリプロファイルのファイル名を取得する。
【００７８】
そして、アプリ変換部１１３は、取得したアプリファイルのファイル名からランタイム種別を識別する（ステップＳ３１）。例えば、アプリ変換部１１３は、変換テーブル１２４から、取得したアプリプロファイルのファイル名と一致するプロファイルのファイル名１２４ｂを取得する。そして、アプリ変換部１１３は、変換テーブル１２４から、取得したプロファイルのファイル名１２４ｂに対応するランタイム種別１２４ａを取得する。
【００７９】
そして、アプリ変換部１１３は、ランタイム種別を元に、変換ロジックを読み込む（ステップＳ３２）。例えば、アプリ変換部１１３は、変換テーブル１２４から、識別したランタイム種別に対応するＡＰＩグルースクリプト１２４ｄを読み込む。
【００８０】
そして、アプリ変換部１１３は、展開されたファイルの全てのＨＴＭＬコンテンツに変換ロジックを挿入する（ステップＳ３３）。例えば、アプリ変換部１１３は、展開されたファイルのそれぞれのＨＴＭＬコンテンツに対して、ＡＰＩグルースクリプト１２４ｄを追加する。
【００８１】
そして、アプリ変換部１１３は、アプリプロファイルを読み込み（ステップＳ３４）、アプリプロファイルからセキュリティポリシ（機能制限情報）を生成する（ステップＳ３５）。例えば、アプリ変換部１１３は、変換テーブル１２４から、ランタイム種別１２４ａに対応するプロファイル形式１２４ｃおよびセキュリティポリシの位置１２４ｅを読み込む。そして、アプリ変換部１１３は、読み込んだアプリプロファイルをプロファイル形式１２４ｃで解析する。そして、アプリ変換部１１３は、解析した結果、セキュリティポリシの位置１２４ｅが示す位置のセキュリティポリシを生成する。
【００８２】
そして、アプリ変換部１１３は、生成したセキュリティポリシをＣＳＰとしてアプリ用ディレクトリに保存する（ステップＳ３６）。そして、アプリ変換部１１３は、アプリ変換処理を終了する。
【００８３】
これにより、アプリ変換部１１３は、パッケージ型アプリ毎に異なるそれぞれの実行基盤（ランタイム）の機能差を、それぞれウェブブラウザ４１で実行できるようにアプリを変換することができる。
【００８４】
［アプリ公開処理のフローチャート］
図１２は、実施例に係るアプリ公開処理のフローチャートを示す図である。
【００８５】
図１２に示すように、アプリ公開部１１４は、ウェブブラウザ４１からのリクエストを受信する（ステップＳ４１）。アプリ公開部１１４は、受信したリクエストを用いて、アプリ情報を取得する（ステップＳ４２）。例えば、アプリ公開部１１４は、受信リクエストからホスト名およびファイルパスを抽出する。そして、アプリ公開部１１４は、抽出したホスト名を用いて、ホスト情報テーブル１２２からアプリ識別子１２２ｃを取得する。そして、アプリ公開部１１４は、取得したアプリ識別子１２２ｃおよび抽出したファイルパスを用いて、アプリ情報テーブル１２１から該当するアプリ情報を取得する。
【００８６】
アプリ公開部１１４は、アプリ情報があるか否かを判定する（ステップＳ４３）。アプリ公開部１１４は、アプリ情報がないと判定した場合には（ステップＳ４３；Ｎｏ）、エラーをウェブブラウザ４１に返答する（ステップＳ４４）。そして、アプリ公開部１１４は、アプリ公開処理を終了する。
【００８７】
一方、アプリ公開部１１４は、アプリ情報があると判定した場合には（ステップＳ４３；Ｙｅｓ）、アプリ情報に含まれるアプリ用ディレクトリ１２１ｂ配下のコンテンツを取得する（ステップＳ４５）。アプリ公開部１１４は、コンテンツがあるか否かを判定する（ステップＳ４６）。アプリ公開部１１４は、コンテンツがないと判定した場合には（ステップＳ４６；Ｎｏ）、エラーを返答すべく、ステップＳ４４に移行する。
【００８８】
一方、アプリ公開部１１４は、コンテンツがあると判定した場合には（ステップＳ４６；Ｙｅｓ）、アプリ用ディレクトリ配下にＣＳＰが存在するか否かを判定する（ステップＳ４７）。アプリ公開部１１４は、アプリ用ディレクトリ配下にＣＳＰが存在すると判定した場合には（ステップＳ４７；Ｙｅｓ）、ＣＳＰをレスポンスヘッダに付与する（ステップＳ４８）。そして、アプリ公開部１１４は、ステップＳ４９に移行する。
【００８９】
一方、アプリ公開部１１４は、アプリ用ディレクトリ配下にＣＳＰが存在しないと判定した場合には（ステップＳ４７；Ｎｏ）、ステップＳ４９に移行する。
【００９０】
ステップＳ４９において、アプリ公開部１１４は、コンテンツをレスポンスに設定し、レスポンスをウェブブラウザ４１に返答する（ステップＳ４９）。そして、アプリ公開部１１４は、アプリ公開処理を終了する。
【００９１】
これにより、ウェブブラウザ４１は、所望するアプリ（コンテンツ）が別ホストで提供されるため、当該アプリで使用するデータを分離することができる。また、ウェブブラウザ４１は、パッケージ型アプリの実行基盤であるランタイムの機能をウェブブラウザ４１用に変換した所望するアプリを受け取ることで、パッケージ型アプリをウェブブラウザ４１で実行することができる。
【００９２】
［アプリ提供処理の具体例］
図１３Ａおよび図１３Ｂは、実施例に係るアプリ提供処理の具体例を示す図である。図１３Ａでは、アプリ提供処理が、ランタイムα用のアプリＸを展開し、展開したアプリをウェブブラウザ４１用に変換し、専用のホストで公開する具体例を示す。なお、アプリＸは、パッケージ型アプリである。図１３Ｂでは、アプリ提供処理が、ウェブブラウザ４１からアプリＸ用のＵＲＬを含むリクエストを受け取り、ウェブブラウザ４１用に変換されたアプリＸをウェブブラウザ４１に提供する具体例を示す。なお、図１３Ａでは、アプリＸのアプリ情報およびホスト情報が存在しないものとする。アプリＸのアプリ識別子は「http://store.xyz.com/X.zip」であるとする。決定されるホスト名は「001.app.xyz.com」であるとする。
【００９３】
図１３Ａに示すように、ランタイムα用のアプリＸが、例えば開発者によってアプリストア２に登録される（ステップＳ１００）。
【００９４】
アプリ提供サーバ１のホスト分離部１１１は、アプリストア２からアプリＸのアプリ識別子およびパッケージファイルを受信する（ステップＳ１２０）。すると、ホスト分離部１１１は、アプリＸのアプリ識別子に対応するアプリ情報が存在しないので、当該アプリ情報を新規作成する。ホスト分離部１１１は、新規作成したアプリ情報をアプリ情報テーブル１２１に保存する。ホスト分離部１１１は、アプリＸのアプリ識別子に対応するホスト情報が存在しないので、アプリＸのアプリ識別子に対応するホスト名を決定し、決定したホスト名を含むホスト情報をホスト情報テーブル１２２に保存する（ステップＳ１３０）。
【００９５】
ここでは、アプリ情報テーブル１２１に、アプリ識別子１２１ａとして「http://store.xyz.com/X.zip」、アプリ用ディレクトリ１２１ｂとして「apps/001/」、パッケージファイル１２１ｃとして「0A03F532C0…」のアプリ情報が保存される。ホスト情報テーブル１２２に、ホスト名１２２ａとして「001.app.xyz.com」、アプリ識別子１２２ｂとして「http://store.xyz.com/X.zip」のホスト情報が保存される。
【００９６】
そして、ホスト分離部１１１は、決定したホスト名をドメインネームサーバ３に通知する（ステップＳ１４０）。ここでは、決定したホスト名として「001.app.xyz.com」が通知される。
【００９７】
そして、アプリ展開部１１２は、決定されたホスト名およびアプリ情報に含まれるアプリ用ディレクトリ１２１ｂから定められる領域にアプリＸのパッケージファイルを展開する（ステップＳ１５０）。ここでは、展開ファイル記憶領域１２３におけるホスト名１２１２ａが「001.app.xyz.com」であるホストのアプリ用ディレクトリ１２１ｂ「apps/001/」配下にアプリＸのパッケージファイルが展開される。
【００９８】
そして、アプリ変換部１１３は、変換テーブル１２４を読み込む（ステップＳ１６０）。アプリ変換部１１３は、展開されたファイルに含まれるアプリプロファイルのファイル名および読み込んだ変換テーブル１２４に基づいて、ランタイム種別を識別する（ステップＳ１７０）。
【００９９】
そして、アプリ変換部１１３は、読み込んだ変換テーブル１２４に基づいて、識別されたランタイム種別に対応するＡＰＩグルースクリプトを取得する。アプリ変換部１１３は、取得したＡＰＩグルースクリプトを展開されたファイル（コンテンツ）に追加し、アプリＸを変換する。加えて、アプリ変換部１１３は、アプリプロファイルからＣＳＰに変換する（ステップＳ１８０）。この結果、アプリ提供サーバ１は、アプリＸを専用のホスト（ホスト名：「001.app.xyz.com」）で公開する。
【０１００】
図１３Ｂに示すように、ウェブブラウザ４１がアプリＸ用のＵＲＬを含むリクエストをアプリ提供サーバ１に送信する（ステップＳ２００）。ここでは、アプリＸ用のＵＲＬは、「http://001.app.xyz.com/」であるとする。
【０１０１】
すると、アプリ提供サーバ１のアプリ公開部１１４は、リクエストに含まれるＵＲＬを用いて、展開ファイル記憶領域１２３から該当するコンテンツを取得する（ステップＳ２１０）。ここでは、アプリ公開部１１４は、リクエストに含まれるＵＲＬ「http://001.app.xyz.com/」からホスト名「001.app.xyz.com」を抽出し、抽出したホスト名をキーとして、ホスト情報テーブル１２２からアプリ識別子１２２ｂ「http://store.xyz.com/X.zip」を取得する。アプリ公開部１１４は、取得したアプリ識別子１２２ｂをキーとして、アプリ情報テーブル１２１からアプリ用ディレクトリ１２１ｂ「/apps/001/」を取得する。アプリ公開部１１４は、ホスト名「001.app.xyz.com」とアプリ用ディレクトリ１２１ｂ「/apps/001/」とから定められる領域から該当するコンテンツ（/apps/001/index.html）を取得する。
【０１０２】
加えて、アプリ公開部１１４は、リクエストに含まれるＵＲＬを用いて、展開ファイル記憶領域１２３から該当するＣＳＰファイルを取得する（ステップＳ２２０）。ここでは、アプリ公開部１１４は、ホスト名「001.app.xyz.com」とアプリ用ディレクトリ１２１ｂ「/apps/001/」とから定められる領域から該当するＣＳＰファイル（/apps/001/csp.data）を取得する。
【０１０３】
そして、アプリ公開部１１４は、該当するコンテンツをレスポンスに設定するとともに、該当するＣＳＰファイルをレスポンスヘッダに付与し、レスポンスをウェブブラウザ４１に返却する（ステップＳ２３０）。この結果、ウェブブラウザ４１は、返却されたコンテンツについて、他のパッケージ型アプリのコンテンツとオリジンが分離されるので、返却されたコンテンツを安全に実行できる。すなわち、ウェブブラウザ４１は、返却されたコンテンツが利用するデータ、例えばＤＯＭ（Document  Object  Model）、クッキーやウェブストレージ等を他のアプリからアクセスされないこととなり、安全に実行できる。
【０１０４】
［実施例の効果］
上記実施例によれば、アプリ提供サーバ１は、パッケージ型アプリを登録した後に、当該パッケージ型アプリを他のパッケージ型アプリとホストを分けて展開する。アプリ提供サーバ１は、展開されたコンテンツを、パッケージ型アプリの実行基盤に応じてウェブブラウザ用に変換する。アプリ提供サーバ１は、ウェブブラウザ４１からホスト名を含むアプリ取得要求を受け取ると、当該アプリ取得要求に含まれるホスト名が示すホストに属するコンテンツを提供する。かかる構成によれば、アプリ提供サーバ１は、パッケージ型アプリ毎にホストを分けることでオリジンを分離させることができ、各パッケージ型アプリをウェブブラウザ４１で安全に実行させることができる。
【０１０５】
また、上記実施例によれば、アプリ提供サーバ１は、展開されたコンテンツを、パッケージ型アプリの実行基盤が提供する機能を使用できるように、ウェブブラウザ４１用に変換する。かかる構成によれば、アプリ提供サーバ１は、パッケージ型アプリをウェブブラウザ４１で実行させる際、当該パッケージ型アプリの実行基盤で実行するのと同等の機能を実行させることができる。
【０１０６】
また、上記実施例によれば、アプリ提供サーバ１は、パッケージ型アプリを展開した結果であるコンテンツに含まれるアプリプロファイルに基づいて、パッケージ型アプリの実行基盤の種別を識別する。アプリ提供サーバ１は、識別された種別に対応する変換ロジックに応じて、該展開されたコンテンツをウェブブラウザ４１用に変換する。かかる構成によれば、アプリ提供サーバ１は、パッケージ型アプリの実行基盤に対応する変換ロジックを用いて展開されたコンテンツをウェブブラウザ４１用に変換することで、パッケージ型アプリの実行基盤の機能差を吸収することができる。
【０１０７】
また、上記実施例によれば、アプリ提供サーバ１は、さらに、アプリプロファイルを該アプリプロファイルに対応する形式で解析する。アプリ提供サーバ１は、解析した結果に基づいて、アプリプロファイルに含まれる機能制限情報をウェブブラウザ４１が認識可能な機能制限情報に変換する。かかる構成によれば、アプリ提供サーバ１は、パッケージ型アプリの実行基盤に対応する機能制限情報をウェブブラウザ４１用に変換することで、パッケージ型アプリの実行基盤の機能制限情報の違いを吸収することができる。
【０１０８】
また、上記実施例によれば、アプリ提供サーバ１は、パッケージ型アプリを、パッケージ型アプリを管理するテナント毎にホストを分けて展開する。かかる構成によれば、アプリ提供サーバ１は、テナント毎にホストを分けることでテナント毎にオリジンを分離させることができ、各テナントの各パッケージ型アプリをウェブブラウザ４１で安全に実行させることができる。
【０１０９】
［プログラムなど］
なお、上記実施例では、ホスト分離部１１１は、パッケージ型アプリ毎に、ホストを分離したり、パッケージ型アプリを管理するテナント毎に、ホストを分離したりすると説明した。しかしながら、ホスト分離部１１１は、これに限定されず、パッケージ型アプリを使用するユーザ毎に、ホストを分離しても良い。かかる場合に、例えば、パッケージ型アプリのアプリ識別子とユーザ名とを対応付け、ホスト分離部１１１は、アプリストア２からパッケージアプリのアプリ識別子とパッケージファイルを受信すると、パッケージ型アプリのアプリ識別子毎に、ホストを分離すれば良い。これにより、ホスト分離部１１１は、他のユーザが実行したパッケージ型アプリのデータへのアクセスを制限することができる。
【０１１０】
また、上記実施例では、ホスト分離部１１１は、アプリストア２からパッケージ型アプリのアプリ識別子とパッケージファイルを受信すると、パッケージ型アプリのアプリ識別子毎に、ホストを分離すると説明した。しかしながら、ホスト分離部１１１は、これに限定されず、パッケージ型アプリのアプリ識別子がパッケージファイルに含まれている場合には、パッケージファイルを受信すると、パッケージファイルに含まれているパッケージ型アプリのアプリ識別子毎に、ホストを分離すれば良い。
【０１１１】
また、図示した装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、ホスト分離部１１１とアプリ展開部１１２とを１個の部として統合しても良い。アプリ変換部１１３を、機能差を平滑化する第１の変換部と、機能制限情報を変換する第２の変換部とに分散しても良い。また、記憶部１２をアプリ提供サーバ１の外部装置としてネットワーク経由で接続するようにしても良い。
【０１１２】
また、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図２に示したアプリ提供サーバ１と同様の機能を実現するアプリ提供プログラムを実行するコンピュータの一例を説明する。図１４は、アプリ提供プログラムを実行するコンピュータの一例を示す図である。
【０１１３】
図１４に示すように、コンピュータ２００は、各種演算処理を実行するＣＰＵ２０３と、ユーザからのデータの入力を受け付ける入力装置２１５と、表示装置２０９を制御する表示制御部２０７とを有する。また、コンピュータ２００は、記憶媒体からプログラムなどを読取るドライブ装置２１３と、ネットワークを介して他のコンピュータとの間でデータの授受を行う通信制御部２１７とを有する。また、コンピュータ２００は、各種情報を一時記憶するメモリ２０１と、ＨＤＤ２０５を有する。そして、メモリ２０１、ＣＰＵ２０３、ＨＤＤ２０５、表示制御部２０７、ドライブ装置２１３、入力装置２１５、通信制御部２１７は、バス２１９で接続されている。
【０１１４】
ドライブ装置２１３は、例えばリムーバブルディスク２１１用の装置である。ＨＤＤ２０５は、アプリ提供プログラム２０５ａおよびアプリ提供処理関連情報２０５ｂを記憶する。
【０１１５】
ＣＰＵ２０３は、アプリ提供プログラム２０５ａを読み出して、メモリ２０１に展開し、プロセスとして実行する。かかるプロセスは、アプリ提供サーバ１の各機能部に対応する。アプリ提供処理関連情報２０５ｂは、アプリ情報テーブル１２１、ホスト情報テーブル１２２、展開ファイル記憶領域１２３および変換テーブル１２４に対応する。そして、例えばリムーバブルディスク２１１が、アプリ提供プログラム２０５ａなどの各情報を記憶する。
【０１１６】
なお、アプリ提供プログラム２０５ａについては、必ずしも最初からＨＤＤ２０５に記憶させておかなくても良い。例えば、コンピュータ２００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に当該プログラムを記憶させておく。または、通信制御部２１７を介して接続された外部の記憶装置に当該プログラムを記憶させておく。そして、コンピュータ２００がこれらからアプリ提供プログラム２０５ａを読み出して実行するようにしても良い。
【０１１７】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１１８】
（付記１）ウェブサーバは、
アプリケーションに含まれるファイルをパッケージ化したパッケージ型アプリを登録した後に、前記パッケージ型アプリを他のパッケージ型アプリとホストを分けて展開し、
前記展開する処理によって展開されたコンテンツを、前記パッケージ型アプリの実行基盤に応じてウェブブラウザ用に変換し、
前記ウェブブラウザからホスト名を含むアプリ取得要求を受け取ると、前記アプリ取得要求に含まれるホスト名が示すホストに属するコンテンツを提供する
処理を実行することを特徴とするアプリ提供方法。
【０１１９】
（付記２）前記変換する処理は、
該展開されたコンテンツを、前記パッケージ型アプリの実行基盤が提供する機能を使用できるように、前記ウェブブラウザ用に変換する
処理を実行することを特徴とする付記１に記載のアプリ提供方法。
【０１２０】
（付記３）前記変換する処理は、
該展開されたコンテンツに含まれるアプリに関する情報に基づいて、前記パッケージ型アプリの実行基盤の種別を識別し、
該識別された種別に対応する変換ロジックに応じて、該展開されたコンテンツをウェブブラウザ用に変換する
処理を実行することを特徴とする付記１または付記２に記載のアプリ提供方法。
【０１２１】
（付記４）前記変換する処理は、
さらに、前記アプリに関する情報を該情報に対応する形式で解析し、解析した結果に基づいて、前記アプリに関する情報に含まれる機能制限情報を前記ウェブブラウザが認識可能な機能制限情報に変換する
処理を実行することを特徴とする付記３に記載のアプリ提供方法。
【０１２２】
（付記５）前記展開する処理は、前記パッケージ型アプリを、前記パッケージ型アプリを管理するテナント毎にホストを分けて展開する
ことを特徴とする付記１に記載のアプリ提供方法。
【０１２３】
（付記６）コンピュータに、
アプリケーションに含まれるファイルをパッケージ化したパッケージ型アプリを登録した後に、前記パッケージ型アプリを他のパッケージ型アプリとホストを分けて展開し、
前記展開する処理によって展開されたコンテンツを、前記パッケージ型アプリの実行基盤に応じてウェブブラウザ用に変換し、
前記ウェブブラウザからホスト名を含むアプリ取得要求を受け取ると、前記アプリ取得要求に含まれるホスト名が示すホストに属するコンテンツを提供する
各処理を実行させることを特徴とするアプリ提供プログラム。
【０１２４】
（付記７）アプリケーションに含まれるファイルをパッケージ化したパッケージ型アプリを登録した後に、前記パッケージ型アプリを他のパッケージ型アプリとホストを分けて展開する展開部と、
前記展開部によって展開されたコンテンツを、前記パッケージ型アプリの実行基盤に応じてウェブブラウザ用に変換する変換部と、
前記ウェブブラウザからホスト名を含むアプリ取得要求を受け取ると、前記アプリ取得要求に含まれるホスト名が示すホストに属するコンテンツを提供する提供部と、
を有することを特徴とするアプリ提供サーバ。
【符号の説明】
【０１２５】
１  アプリ提供サーバ
１１  制御部
１１１  ホスト分離部
１１２  アプリ展開部
１１３  アプリ変換部
１１４  アプリ公開部
１２  記憶部
１２１  アプリ情報テーブル
１２２  ホスト情報テーブル
１２３  展開ファイル記憶領域
１２４  変換テーブル
２  アプリストア
３  ドメインネームサーバ
３１  ゾーンファイル
４  通信端末
４１  ウェブブラウザ
【図１】
0006507643.tif 000002
【図２】
0006507643.tif 000003
【図３】
0006507643.tif 000004
【図４】
0006507643.tif 000005
【図５】
0006507643.tif 000006
【図６Ａ】
0006507643.tif 000007
【図６Ｂ】
0006507643.tif 000008
【図７】
0006507643.tif 000009
【図８】
0006507643.tif 000010
【図９】
0006507643.tif 000011
【図１０】
0006507643.tif 000012
【図１１】
0006507643.tif 000013
【図１２】
0006507643.tif 000014
【図１３Ａ】
0006507643.tif 000015
【図１３Ｂ】
0006507643.tif 000016
【図１４】
0006507643.tif 000017
【図１５】
0006507643.tif 000018