(57)【要約】  開示の技術は、ウェブブラウザ内またはクライアント・プラットフォームにネイティブなクライアント・アプリケーション内で実行可能なウェブ・アプリケーションの提供に関する。ウェブブラウザとクライアント・プラットフォームは異なるフィーチャーセットをサポートする。サーバ・コンピュータ・システムは、クライアント・アプリケーションのインスタンスに配信するために、ウェブ・アプリケーションをホストする。サーバ・コンピュータ・システムは、クライアント・プラットフォームを実装するクライアント・デバイス上で実行中のクライアント・アプリケーションのインスタンスから、ウェブ・アプリケーションに対するリクエストを受信する。サーバ・コンピュータ・システムは、ウェブ・アプリケーションをインスタンスに送信して、ウェブ・アプリケーションをインスタンス内で実行させる。このようなウェブ・アプリケーションの実行により、ウェブ・アプリケーションがウェブブラウザによってサポートされていない少なくとも１つのフィーチャーを使用することが可能になる。
2021535461.tif 000002
【特許請求の範囲】
【請求項１】
ウェブブラウザ内及びクライアント・プラットフォームにネイティブなクライアント・アプリケーション内で実行可能なウェブ・アプリケーションを提供する方法であって、前記ウェブ・ブラウザと前記クライアント・プラットフォームとは異なるフィーチャーセットをサポートし、
前記クライアント・アプリケーションのインスタンスに配信するために前記ウェブ・アプリケーションをホスティングすることであって、前記クライアント・アプリケーションは、前記ウェブ・アプリケーションが前記クライアント・プラットフォームによってサポートされている前記フィーチャーセットを起動することを可能にするモジュールセットを実装し、前記ウェブ・アプリケーションは、前記クライアント・アプリケーションのインスタンス内で実行されると、前記ウェブブラウザによってサポートされていない少なくとも１つのフィーチャーを起動することができる、ホスティングすることと、
前記クライアント・プラットフォームを実装するクライアント・デバイス上で実行されている前記クライアント・アプリケーションのインスタンスから、前記ウェブ・アプリケーションに対するリクエストを受信することと、
前記ウェブ・アプリケーションを前記クライアント・アプリケーションのインスタンスに送信して、前記ウェブ・アプリケーションを前記インスタンス内で実行させることであって、前記インスタンス内で前記ウェブ・アプリケーションを実行することにより、前記ウェブ・アプリケーションが、前記ウェブブラウザによってサポートされていない前記少なくとも１つのフィーチャーを起動することができる、実行することとを含む方法。
【請求項２】
前記ウェブブラウザは第２のクライアント・デバイス上で実行され、前記方法はさらに、
第２のクライアント・デバイス上で実行されている前記ウェブブラウザから、前記ウェブ・アプリケーションに対する第２のリクエストを受信することと、
前記ウェブ・アプリケーションを前記ウェブブラウザに送信し、前記ウェブ・アプリケーションを前記ウェブブラウザ内で実行させる、送信することであって、前記ウェブ・アプリケーションは、前記ウェブブラウザ内で実行されると、前記少なくとも１つのフィーチャーを起動することができ、送信することとを含む、
請求項１に記載の方法。
【請求項３】
前記第２のクライアント・デバイスは前記クライアント・デバイスである、請求項２に記載の方法。
【請求項４】
第２のクライアント・プラットフォームを実装する第２のクライアント・デバイス上で実行される第２のクライアント・アプリケーションの第２の特定インスタンスから、前記ウェブ・アプリケーションに対する第２のリクエストを受信することであって、前記第２のクライアント・プラットフォームは、前記ウェブ・ブラウザおよび前記クライアント・プラットフォームとは異なるフィーチャーセットをサポートする、受信することと、
サーバ・コンピュータ・システムが、前記ウェブ・アプリケーションを前記第２のクライアント・アプリケーションの第２のインスタンスに送信し、前記ウェブ・アプリケーションを前記第２のインスタンス内で実行させる、送信することであって、前記第２のインスタンス内で実行することにより、前記ウェブ・アプリケーションが、前記ウェブブラウザおよび前記クライアント・プラットフォームによってサポートされていない少なくとも１つのフィーチャーを起動することを可能にする、送信することとを含む、請求項１ないし３いずれか一項に記載の方法。
【請求項５】
前記第２のクライアント・プラットフォームは、前記クライアント・プラットフォームとは異なるオペレーティング・システムに対応する、請求項４に記載の方法。
【請求項６】
サーバ・コンピュータ・システムが、前記クライアント・アプリケーションによって実装されたモジュールセットを特定するフィーチャー情報にアクセスすることと、
前記フィーチャー情報に対するリクエストに応答して、前記フィーチャー情報を、前記フィーチャー情報に対する前記リクエストに関連付けられたユーザに提示することとをさらに含む、請求項１ないし５いずれか一項に記載の方法。
【請求項７】
前記ウェブ・アプリケーションのアップデートを受信することであって、前記ウェブ・アプリケーションが、前記ウェブブラウザではなく、前記クライアント・プラットフォームがサポートする追加のフィーチャーを起動することができるように、前記ウェブ・アプリケーションが更新される、請求項１ないし６いずれか一項に記載の方法。
【請求項８】
サーバ・コンピュータ・システムが、前記クライアント・アプリケーションのインスタンスに配信するため第２のウェブ・アプリケーションをホスティングすることであって、前記第２のウェブ・アプリケーションは、前記ウェブ・アプリケーションとは異なるフィーチャーセットを起動することができる、ホスティングすることと、
前記第２のウェブ・アプリケーションに対する前記インスタンスからのリクエストに応答して、前記サーバ・コンピュータが、前記インスタンスに前記第２のウェブ・アプリケーションを送信して、前記第２のウェブ・アプリケーションを前記インスタンス内で実行させる、送信することであって、前記第２のウェブ・アプリケーションを前記インスタンス内で実行することにより、前記第２のウェブ・アプリケーションが、前記ウェブ・アプリケーションによってサポートされていない１つ以上のフィーチャーを起動できるようにする、送信することをさらに含む、請求項１ないし７いずれか一項に記載の方法。
【請求項９】
前記ウェブ・アプリケーションは、前記ウェブブラウザ及び前記クライアント・プラットフォームによってサポートされるフィーチャーを含む複数のフィーチャーを起動することができ、前記ウェブ・アプリケーションは、前記ウェブブラウザ内又は前記クライアント・アプリケーション内で実行されると、前記ウェブ・アプリケーションによって起動することができる前記複数のフィーチャーのうちのフィーチャーを特定することができる、請求項１ないし８いずれか一項に記載の方法。
【請求項１０】
前記クライアント・プラットフォームは、前記フィーチャーの複数のバージョンをサポートし、前記ウェブ・アプリケーションは、
前記ウェブ・アプリケーションが起動可能なバージョンと一致するバージョンに基づいて、前記複数のバージョンのうちのバージョンを識別することと、
前記バージョンのフィーチャーを起動することとを含む、請求項１ないし９いずれか一項に記載の方法。
【請求項１１】
少なくとも１つのプロセッサと、
請求項１ないし１０いずれか一項に記載の方法を実行するように実行可能なプログラム命令を記憶したメモリとを有するコンピュータ・システム。
【請求項１２】
コンピュータ・システムにより実行されると、前記コンピュータ・システムに、
ウェブブラウザ及びクライアント・プラットフォームにネイティブなクライアント・アプリケーションを含む複数の環境内で実行可能なウェブ・アプリケーションをホストすることであって、前記クライアント・アプリケーションは、前記ウェブブラウザによって実装されている第２のフィーチャーセットとは異なる第１のフィーチャーセットを実装する、ホストすることと、
前記クライアント・プラットフォームを実装する第１のクライアント・デバイス上で実行される前記クライアント・アプリケーションのインスタンスから、前記ウェブ・アプリケーションに対する第１のリクエストを受信することと、
前記クライアント・アプリケーションのインスタンスに前記ウェブ・アプリケーションを送信して、前記ウェブ・アプリケーションを前記インスタンス内で実行させる、送信することであって、前記インスタンス内でウェブ・アプリケーションを実行することで、前記ウェブ・アプリケーションが第１のフィーチャーセットを起動することができるようにする、送信することとを含む動作を実行させるプログラム命令を記憶した非一時的コンピュータ読取可能媒体。
【請求項１３】
前記動作はさらに、
第２のクライアント・コンピュータ・システム上で実行されているウェブブラウザのインスタンスから、前記ウェブ・アプリケーションに対する第２のリクエストを受信することと、
前記ウェブ・アプリケーションを前記インスタンスに送信して、前記ウェブ・アプリケーションを前記ウェブブラウザのインスタンス内で実行させる、送信することであって、前記ウェブブラウザのインスタンス内で前記ウェブ・アプリケーションを実行することにより、前記ウェブ・アプリケーションは、第２のフィーチャーセットを起動することができる、送信することをさらに含む、請求項１２に記載の媒体。
【請求項１４】
前記動作はさらに、
第２のクライアント・プラットフォームを実装する第３のクライアント・デバイス上で実行中の第２のクライアント・アプリケーションの第２のインスタンスから、前記ウェブ・アプリケーションに対する第３のリクエストを受信することであって、前記第２のクライアント・アプリケーションは、前記第１および第２のフィーチャーセットとは異なる第３のフィーチャーセットを実装する、受信することと、
前記第２のクライアント・アプリケーションの第２のインスタンスに前記ウェブ・アプリケーションを送信して、前記ウェブ・アプリケーションを前記第２のインスタンス内で実行させる、送信することであって、前記第２のインスタンス内で前記ウェブ・アプリケーションを実行することにより、前記ウェブ・アプリケーションが前記第３のフィーチャーセットを起動することができるようにする、送信することとを含む、請求項１２または１３に記載の媒体。
【請求項１５】
前記動作はさらに、
クライアント・アプリケーションが実装するフィーチャーセットを特定するフィーチャー情報にアクセスすることと、
フィーチャ情報に対する第３のリクエストに応答して、前記フィーチャ情報をユーザに提示することとを含む、請求項１２ないし１４いずれか一項に記載の媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、クライアント・アプリケーションにおけるウェブ・アプリケーションの実行に関する。
【背景技術】
【０００２】
コンピュータ・システムは、インターネットのような広域ネットワークを含むネットワークを介して、他のコンピュータ・システムと日常的に情報を通信する。通信の１つの形態は、サーバ・コンピュータ・システムからクライアント・コンピュータ・システムにウェブ・ページ（一般的にはＨＴＭＬで書かれ、ワールド・ワイド・ウェブを介してアクセス可能な文書）を送信することであり、クライアント・コンピュータ・システムはそれらをユーザに提示し、ユーザはそれらを閲覧し、それらと対話することができる。特に、ユーザは、ウェブ・ブラウザを使用して一連のウェブ・ページへのアクセスを要求し、次いでそのウェブ・ブラウザを使用してそれらを閲覧し、対話することができる。このような対話には、ユーザが、ウェブ・ページを求めてウェブブラウザに入力を与え、ウェブ・ページからコンテンツをコピーし、ウェブリンクを用いてウェブ・ページをナビゲートすることなどが含まれる。
【図面の簡単な説明】
【０００３】
【図１】いくつかの実施形態による、ウェブ・アプリケーションをウェブブラウザ及びクライアント・アプリケーションに配信可能なサーバ・システムを有するシステムの例示的な構成要素を示すブロック図である。
【図２】いくつかの実施形態による、ウェブ・アプリケーションを配信可能なサーバ・システムの例示的な構成要素を示すブロック図である。
【図３】いくつかの実施形態による、ウェブ・アプリケーションを実行することができるウェブブラウザの例示的な構成要素を示すブロック図である。
【図４】いくつかの実施形態に係る、ウェブ・アプリケーションを実行可能なクライアント・アプリケーションの例示的な構成要素を示すブロック図である。
【図５】いくつかの実施態様による、ウェブ・アプリケーションの提供に関する例示的な方法を示すフロー図である。
【図６】いくつかの実施態様による、ウェブ・アプリケーションの提供に関する例示的な方法を示すフロー図である。
【図７】いくつかの実施態様による、ウェブ・アプリケーションの実行に関する例示的な方法を示すフロー図である。
【図８】いくつかの実施形態による、例示的なコンピュータ・システムを示すブロック図である。
【発明を実施するための形態】
【０００４】
本開示は、「一実施形態」または「実施形態」への言及を含む。「一実施形態において」または「実施形態において」という語句の使用は、必ずしも同じ実施形態を意味するものではない。フィーチャー、構造、またはフィーチャーは、本開示と矛盾しない任意の適切な方法で組み合わせることができる。
【０００５】
本開示の範囲内では、異なるエンティティ（「ユニット」、「回路」、その他のコンポーネントなどと様々に呼び方をする）が、１つ以上のタスクまたは動作を実行する「構成」として説明または特許請求され得る。この定式化−［１つ以上のタスクを実行］するように「構成」された［エンティティ］−は、本明細書では、構造（すなわち、電子回路のような物理的なもの）を参照するために使用される。より具体的には、この定式化を用いて、この構造が、動作中に１つ以上のタスクを実行するように構成されていることを示す。構造は、現在動作中でなくても、あるタスクを実行するように「構成されている」と言うことができる。「ネットワークを介して通信するように構成されたネットワークインターフェース」は、例えば、集積回路であって、当該集積回路が現在使用されていなくても（例えば、電源が接続されていなくても）、動作中にこのフィーチャーを実行する回路を有するものをカバーするように意図されている。このように、あるタスクを実行するように「構成された」と記載されたエンティティは、デバイス、回路、そのタスクを実行するために実行可能なプログラム命令を格納したメモリなどの何か物理的なものを指す。このフレーズは、本明細書では、何か無形のものを指すためには用いない。それゆえ、「構成された」は、本明細書では、アプリケーション・プログラミング・インターフェース（ＡＰＩ）などのソフトウェア・エンティティを指すためには使用されない。
【０００６】
「ように構成された」という用語は、「ように構成できる」という意味ではない。例えば、プログラムされていないＦＰＧＡは、あるフィーチャーを実行する「ように構成でき」、プログラミング後にはそのフィーチャーを実行する「ように構成され」得るが、そのフィーチャーを実行する「ように構成された」ものとは考えられない。
【０００７】
本明細書で使用される場合、「第１」、「第２」などの用語は、それらが修飾する名詞のラベルとして使用され、特段のことわりがなければ、いかなる種類の順序付け（例えば、空間的、時間的、論理的など）を示唆するものではない。例えば、８つの処理コアを有するプロセッサでは、「第１」および「第２」の処理コアとの用語は、その８つの処理コアのうちの任意の２つを参照するために使用される。換言すれば、第１および第２の処理コアは、例えば、処理コア０および１には限定されない。
【０００８】
本明細書において、「に基づく」との用語は、決定に影響を及ぼす１つ以上の要因を記述するために使用される。この用語は、別の要因が決定に影響を及ぼす可能性を除外するものではない。すなわち、決定は、特定された要因のみに基づいてもよいし、特定された要因のみならず特定されていない他の要因に基づいてもよい。「Ｂに基づいてＡを決定する」という文を考える。この文はＢが、Ａを決定するために使用される要因であること、またはＡの決定に影響を及ぼす要因であることを示す。この文は、Ａの決定が、Ｃのような他の要因にも基づいてもよいことを除外するものではない。この文は、ＡがＢのみに基づいて決定される実施形態を包含することも意図している。このように、本明細書において、「に基づく」という用語は、「少なくとも部分的に基づいて」という用語と同義である。
【０００９】
ユーザがウェブ・ページを閲覧（ｖｉｅｗ）し、対話（ｉｎｔｅｒａｃｔ）する際の体験の種類は、しばしば、使用されるウェブブラウザの実装に依存する。例えば、ウェブブラウザが位置ベースのフィーチャー（ｆｅａｔｕｒｅ）を実装する場合、ユーザは、ウェブ・ページが位置関連の情報をユーザに提示する改善された体験のため、自分の位置を提供することができる。しかし、現在のウェブブラウザでは実装されていないジオフェンシング（ｇｅｏｆｅｎｃｉｎｇ）のような多くのフィーチャーがある（ジオフェンシングとは、ユーザが、あらかじめ画定された地理的領域内に位置することに基づいてアクションを実行する機能である）。結果として、場合によってウェブブラウザは、フィーチャーリッチな体験をユーザに提供できない。さらに、ウェブブラウザが実装するフィーチャーは、ウェブブラウザが実行できるクライアント・プラットフォーム（例えば、ｉＯＳ（登録商標））が提供するフィーチャーほど用途が広くなく、機能も十分ではない。ウェブ・アプリケーション（例えば、ウェブ・ページ）を実行できる環境を実装し、クライアント・プラットフォームによって提供されるフィーチャーを含む、より多くのフィーチャーへのアクセスを提供することが望ましい。
【００１０】
本開示は、ウェブ・アプリケーションを実行することができ、クライアント・プラットフォームによって提供されるネイティブフィーチャーへのアクセスを提供することができるクライアント・アプリケーションを実装するための技術を記載している。ウェブ・アプリケーションの一例はウェブ・ページであり、クライアント・アプリケーションの一例は、ｉＯＳ（登録商標）用に特に開発されたアプリケーションである。以下に説明する様々な実施形態では、クライアント・プラットフォームにネイティブなクライアント・アプリケーションは、ウェブ・アプリケーションを実行することができる実行環境と、ウェブ・アプリケーションがクライアント・プラットフォームのフィーチャーを起動することができるフィーチャ・ＡＰＩとを含む。いくつかの実施形態では、フィーチャーＡＰＩは、ウェブ・アプリケーションがそれを介してクライアント・アプリケーションを実行するクライアント・プラットフォームの対応するフィーチャーセットを起動することができるモジュールセットを含む。
【００１１】
サーバ・コンピュータ・システムは、様々な実施形態では、要求に応じてウェブブラウザおよびクライアント・アプリケーションに配信することができるウェブ・アプリケーションをホストする。従って、サーバ・コンピュータ・システムは、クライアント・アプリケーションに対応するクライアント・プラットフォームを実装するクライアント・デバイス上で実行中のクライアント・アプリケーションのインスタンスに、ウェブ・アプリケーションを送信することができる。クライアント・アプリケーションのインスタンスは、受信したウェブ・アプリケーションを実行環境内で実行するように動作可能である。様々な場合において、そのウェブ・アプリケーションがインスタンス内で実行されるとき、ウェブ・アプリケーションは、ウェブブラウザによってサポートされていない、ジオフェンシングなどの少なくとも１つのフィーチャーを起動することができる。
【００１２】
これらの技術は、従来の手法よりも有利であると考えられるのは、開発者が、ブラウザまたはプラットフォームに対してネイティブなネイティブ・アプリケーションにサービスすることができる１つのコード・ベース（例えば、ウェブ・アプリケーション）を書けるからである。つまり、開発者は、各プラットフォームに固有のアプリケーションを開発しなくても、（異なるプラットフォームで実行可能な）１つのアプリケーションのみを開発すればよくなる可能性がある。例えば、ウェブブラウザ用アプリケーション、Ａｎｄｒｏｉｄ（商標）用アプリケーション、ｉＯＳ（登録商標）用アプリケーションを開発するのではなく、ウェブブラウザ、Ａｎｄｒｏｉｄ（商標）、ｉＯＳ（登録商標）で実行できる１つのアプリケーションを開発することができる。従って、サーバ・コンピュータ・システムは、リクエストに応じて、同じウェブ・アプリケーションをウェブブラウザおよびネイティブ・アプリケーションに提供すればよい。ランタイムでは、ウェブ・アプリケーションは、そのランタイムコンテナ（すなわち、ウェブブラウザまたはネイティブ・アプリケーション）でどのフィーチャーが利用可能かチェックし、必要に応じて起動することができます。
【００１３】
さらに、これらの手法により、ウェブ・アプリケーションがクライアント・プラットフォームのネイティブフィーチャーを起動することができ、ネイティブフィーチャーは、ウェブブラウザによって提供されるものよりも用途が広く、高性能である。従って、ユーザは、ウェブ・アプリケーションを閲覧し、ウェブ・アプリケーションと対話する際に、改善された体験を提供される。つまり、ウェブ・アプリケーションは、（コードを変更しなくても）、ネイティブ・アプリケーションで実行するときに、ネイティブフィーチャー（ウェブブラウザには無いフィーチャー）を使用できます。以下、これらの技術を実装するシステムを、まず図１を参照して説明する。
【００１４】
ここで図１を参照するに、システム１００のブロック図を示す。システム１００は、ハードウェアまたはハードウェアとソフトウェア・ルーチンとの組み合わせによって実装されるコンポーネントを含む。図示した実施形態では、システム１００はサーバ・システム１１０およびクライアント・デバイス１２０を含む。さらに図示するように、サーバ・システム１１０はウェブ・アプリケーション１１５を含み、クライアント・デバイス１２０は、プラットフォームフィーチャー１３５、ウェブブラウザ１４０（ブラウザフィーチャー１４５を有する）、およびクライアント・アプリケーション１５０を有するクライアント・プラットフォーム１３０を含む。いくつかの実施形態において、システム１００は、図示されているものとは異なるように実装されてもよい。一例として、クライアント・プラットフォーム１３０は、ウェブ・ブラウザ１４０を含まなくてもよく、ウェブ・ブラウザ１４０は、同じまたは異なるクライアント・プラットフォーム１３０を実装する第２の異なるクライアント・デバイス１２０上で実行されてもよい。
【００１５】
サーバ・システム１１０は、様々な実施形態では、クライアント・デバイス１２０を含む他のシステムに配信するためにウェブ・アプリケーション１１５をホストするシステムである。サーバ・システム１１０は、例えば、テナント、アプリケーション（例えば、ウェブ・アプリケーション１１５など）、および、データを記憶し、分析し、サービスを提供するためにデータベースと対話することができるデータベース管理システムを実装することができる。従って、いくつかの実施形態では、サーバ・システム１１０は、テナントからデータを受信して管理するマルチテナントシステムであってもよく、かかるデータは、ウェブ・アプリケーション１１５を含んでもよい。様々な場合において、サーバ・システム１１０のテナントは、ウェブブラウザ１４０およびクライアント・アプリケーション１５０に配信するために、ウェブ・アプリケーション１１５を開発し、サーバ・システム１１０にアップロードすることができる。従って、様々な実施形態では、サーバ・システム１１０は、１つ以上のテナントから受信した複数のウェブ・アプリケーション１１５をホストすることができ、リクエストに応じて、かかるウェブ・アプリケーション１１５をウェブブラウザ１４０およびクライアント・アプリケーション１５０に送信することができる。ある場合には、サーバ・システム１１０は、ウェブ・アプリケーション１１５に対する更新を受け取ることができ、そのような更新は、ウェブ・アプリケーション１１５が追加のプラットフォームフィーチャー１３５および／またはブラウザフィーチャー１３５を起動することを可能にする。
【００１６】
ウェブ・アプリケーション１１５は、様々な実施例では、実行時にウェブベースの体験を提供する一組のソフトウェア・ルーチンを含む。ウェブ・アプリケーション１１５は、例えば、ウェブブラウザ１４０またはクライアント・アプリケーション１５０によってレンダリングされたときにユーザが閲覧して対話することができる一組の動的ウェブ・ページであってもよい。様々な実施形態では、ウェブ・アプリケーション１１５は、ブラウザフィーチャー１４５および／またはプラットフォームフィーチャー１３５を起動するために実行可能なソフトウェア・ルーチンを含む。ウェブブラウザ１４０内で実行されると、ウェブ・アプリケーション１１５はブラウザフィーチャー１４５を起動し、クライアント・アプリケーション１５０内で実行されると、ウェブ・アプリケーション１１５はクライアント・プラットフォームフィーチャー１３５を起動することができる。様々な例において、異なるウェブ・アプリケーション１１５は、互いに異なるフィーチャー１３５および／または１４５を起動することができ、それらは、フィーチャーの重複するまたは重複しない異なるフィーチャーセットを起動することができる。例えば、１つのウェブ・アプリケーション１１５はジオフェンシングフィーチャーを起動することができ、他のウェブ・アプリケーション１１５は（設計されていないため）できない。
【００１７】
クライアント・デバイス１２０は、様々な実施形態では、クライアント−サーバ関係においてサーバ・システム１１０と対話することができるコンピュータ・システムである。クライアント・デバイス１２０は、例えば、デスクトップ・コンピュータ、ラップトップ・コンピュータ、スマートフォン、スマートウォッチ等であってもよい。様々な実施形態では、クライアント・デバイス１２０は、ウェブブラウザ１４０およびクライアント・アプリケーション１５０のようなソフトウェア・ルーチンを実行することができるクライアント・プラットフォーム１３０を実行する。クライアント・プラットフォーム１３０は、様々な実施形態において、他のソフトウェア・ルーチンの実行を開始し、その実行のその後の管理をすることができる環境を提供する一組のソフトウェア・ルーチンである。クライアント・プラットフォーム１３０は、例えば、ｉＯＳ（登録商標）またはＡｎｄｒｏｉｄ（商標）のようなオペレーティング・システムであり得る。様々な場合において、サーバ・システム１１０と対話する複数のクライアント・デバイス１２０が存在し、それらの各々が異なるクライアント・プラットフォーム１３０を実行してもよい。
【００１８】
クライアント・プラットフォーム１３０は、クライアント・アプリケーション１５０のようなアプリケーションが開発されるフレームワークを提供し得る。様々な例において、一つのクライアント・プラットフォーム１３０のために開発されたクライアント・アプリケーション１５０は、別のクライアント・プラットフォーム１３０のために開発されたクライアント・アプリケーション１５０と同じまたは類似の機能を実装することができるが、両方のクライアント・アプリケーション１５０は、異なるソフトウェア・ルーチンを含むことができる。例えば、Ａｎｄｒｏｉｄ（商標）オペレーティング・システムに特有のクライアント・アプリケーション１５０と、ｉＯＳ（登録商標）オペレーティング・システムに特有のクライアント・アプリケーション１５０とがある。いくつかの実施形態では、クライアント・プラットフォーム１３０は、クライアント・アプリケーション１５０のような様々なクライアント・アプリケーションをダウンロードし、クライアント・プラットフォーム１３０にインストールすることを可能にするアプリケーション・ストアまたはエクスチェンジを提供することができる。ある場合には、サーバ・システム１１０は、クライアント・デバイス１２０からのリクエストに応答して、クライアント・プラットフォーム１３０のための適切なクライアント・アプリケーション１５０を提供することができる。
【００１９】
図示したように、クライアント・プラットフォーム１３０は、クライアント・アプリケーション１５０を介してウェブ・アプリケーション１１５によって起動され得るプラットフォームフィーチャー１３５を含む。プラットフォームフィーチャー１３５の例としては、ジオフェンシング、人工知能統合（例えば、Ｓｉｒｉ（登録商標）にコマンドを発行する能力）、プッシュ通知、マイクロフォンアクセス、カメラアクセス、Ｂｌｕｅｔｏｏｔｈ（登録商標）アクセス、および写真アクセスが挙げられるが、これらに限定されない。ある場合には、異なるクライアント・プラットフォーム１３０は、異なるプラットフォームフィーチャー１３５を含むことができる。一例として、あるクライアント・プラットフォーム１３０はプッシュ通知を実装してもよいが、別のクライアント・プラットフォーム１３０はそのプラットフォームフィーチャーを実装していない。従って、クライアント・プラットフォーム１３０は、他のクライアント・プラットフォームまたはウェブ・ブラウザ１４０によっては含まれないプラットフォームフィーチャー１３５を含むことができる。場合によっては、異なるクライアント・プラットフォーム１３０は、同じ高レベルフィーチャーを含んでもよいが、そのフィーチャーを異なるように実装することができる。例えば、２つのクライアント・プラットフォーム１３０は、人工知能エージェント（例えば、Ｇｏｏｇｌｅ  Ａｓｓｉｓｔａｎｔ（商標）対Ｓｉｒｉ（登録商標））の異なる実装を有し得る。これらの２つのクライアント・プラットフォーム１３０は、異なる実装ではあるが、同じフィーチャーをサポートする。
【００２０】
ウェブブラウザ１４０は、ここで使用されるように、ＨＴＭＬ又はＸＭＬのような標準化されたフォーマットでウェブ・ページ及び他のコンテンツにアクセスするために実行可能なプログラムである。これらのウェブ・ページは、一般的にワールド・ワイド・ウェブのようにネットワーク上に配置されている。ウェブブラウザ１４０の例としては、Ｃｈｒｏｍｅ（商標）、Ｓａｆａｒｉ（登録商標）、Ｆｉｒｅｆｏｘ（登録商標）、およびＥｄｇｅ（登録商標）が挙げられるが、これらに限定されない。図示のように、ウェブブラウザ１４０は、ウェブ・アプリケーション１１５によって起動され得るブラウザフィーチャー１４５を含む。ウェブブラウザフィーチャー１４５の例としては、オフライン作業モード（例えば、サービス作業者が定期的にウェブ・アプリケーション１１５のデータをキャッシュし、ユーザが一時的にインターネット接続を失った時でもそのデータをロードできる）、プッシュ通知、ハイパーテキスト転送プロトコルセキュア（ＨＴＴＰＳ）サポートが挙げられるが、これらに限定されない。様々な実施形態では、ウェブブラウザ１４０は、ウェブ・アプリケーション１１５がウェブブラウザ１４０内で実行されるときにブラウザフィーチャー１４５を起動することを可能にするＡＰＩを実装する。
【００２１】
様々な場合において、プラットフォームフィーチャー１３５およびブラウザフィーチャー１４５は、異なるフィーチャーセットを含んでもよい。例として、プラットフォームフィーチャー１３５は、ブラウザフィーチャー部１４５に含まれないジオフェンシングフィーチャーを含んでもよい。その結果、ウェブ・アプリケーション１１５がクライアント・アプリケーション１５０内で実行されると、ウェブ・アプリケーション１１５はそのジオフェンシングフィーチャーを起動することができる。しかし、ウェブ・アプリケーション１１５がウェブブラウザ１４０内で実行されると、ジオフェンシングフィーチャーを使用することができない。従って、クライアント・アプリケーション１５０は、ウェブブラウザ１４０ではなくクライアント・アプリケーション１５０によって実行されたときに、ウェブ・アプリケーション１１５が改善されたユーザ体験を提供することを可能にする。ある場合には、プラットフォームフィーチャー１３５およびブラウザフィーチャー１４５は、同じ高レベルフィーチャーを含んでもよいが、異なる実装、すなわちプラットフォームフィーチャー１３５は、ブラウザフィーチャー１４５よりも汎用性が高い。一例として、プラットフォームフィーチャー１３５およびブラウザフィーチャー１４５は、プッシュ通知フィーチャーを含んでもよい。ウェブ・ブラウザ１４０のプッシュ通知フィーチャー１４５は、ウェブ・ブラウザ１４０がクライアント・プラットフォーム１３０上で実行されている間のみ、ウェブ・アプリケーション１１５に対して通知を提供することができる。しかし、クライアント・プラットフォーム１３０のプッシュ通知フィーチャー１３５は、クライアント・アプリケーション１５０がクライアント・プラットフォーム１３０上で実行されていない場合でも、ウェブ・アプリケーション１１５に対する通知を提供することができる。
【００２２】
クライアント・アプリケーション１５０は、本明細書で使用されているように、ウェブ・アプリケーション１１５を実行できる環境を実現するために実行可能な一組のソフトウェア・ルーチンである。クライアント・アプリケーション１５０は、様々な実施形態において、ウェブ・アプリケーション１１５がクライアント・プラットフォーム１３０のプラットフォームフィーチャー１３５を起動することを可能にするＡＰＩを実装する。クライアント・アプリケーション１５０は、クライアント・プラットフォーム１３０のネイティブ・アプリケーションであってもよい。本明細書において、「ネイティブ・アプリケーション」という用語は、当該技術分野における通常の慣用的な意味で使用され、クライアント・プラットフォームによってサポートされるフレームワークのために書かれたアプリケーションを含む。例えば、クライアント・アプリケーション１５０は、ｉＯＳ（登録商標）オペレーティング・システムに対して書かれ、最適化され、従って、そのプラットフォームに対して「ネイティブ」である。クライアント・アプリケーション１５０は、ユーザがクライアント・アプリケーション１５０を開くこと、またはユーザがクライアント・アプリケーション１５０内のタブを選択することなどの、異なる条件が満たされたことに応じて、サーバ・システム１１０からウェブ・アプリケーション１１５を要求することができる。一旦ウェブ・アプリケーション１１５が受信されると、クライアント・アプリケーション１５０は、クライアント・アプリケーション１５０によって実装された環境内でウェブ・アプリケーション１１５を実行することができる。その実行の一部として、ウェブ・アプリケーション１１５は、クライアント・アプリケーション１５０によって提供されるＡＰＩを使用してプラットフォームフィーチャー１３５を起動することができる。
【００２３】
このようにしてシステム１００を実装することは、ウェブ・アプリケーションがクライアント・プラットフォームによって提供されるフィーチャーにアクセスすることを可能にするので、従来のアプローチよりも有利であると考えられる。このようなフィーチャーには、ウェブブラウザがサポートしていないフィーチャーと、ウェブブラウザのフィーチャーよりも汎用性の高いフィーチャーが含まれ得る。従って、システム１００は、ウェブ・アプリケーションが、ユーザがより多くのより良いフィーチャーにアクセスできるように改善されたユーザエクスペリエンスを提供することを可能にする。
【００２４】
ここで図２を参照するに、例示的なサーバ・システム１１０のブロック図が示される。図示の実施形態では、サーバ・システム１１０は、ウェブ・アプリケーション１１５と、フィーチャー利用可否情報２００とを含む。図示のように、ウェブ・アプリケーション１１５は、実装されたフィーチャー２１０およびチェック・エンジン２２０を含む。いくつかの実施形態において、サーバ・システム１１０は、図示とは異なるように実装されてもよい。一例として、サーバ・システム１１０は、サーバ・システム１１０の１つ以上の異なるユーザに関連するシステムから受信することができる複数の異なるウェブ・アプリケーション１１５を含むことができる。
【００２５】
フィーチャー利用可否情報２００は、様々な実施形態では、クライアント・アプリケーション１５０によってサポートされるプラットフォームフィーチャー１３５を示す情報である。場合によっては、フィーチャー利用可否情報２００は、開発者がウェブ・アプリケーション１１５のコードを書く際に参照するＡＰＩ文書ページであってもよい。クライアント・プラットフォーム１３０がジオフェンシングのためのプラットフォームフィーチャー１３５を提供し、クライアント・アプリケーション１５０がそのプラットフォームフィーチャーをサポートする例を考える。従って、フィーチャー利用可否情報２００は、ジオフェンシングプラットフォームフィーチャー１３５が、クライアント・アプリケーション１５０を介してウェブ・アプリケーション１１５によって呼び出されるために利用可能であることを示す。このような知見により、開発者は、クライアント・アプリケーション１５０を介してジオフェンシング・プラットフォームフィーチャー１３５を起動することができるように、自分のウェブ・アプリケーション１１５をコーディングすることができる。様々な実施形態では、複数のクライアント・アプリケーション１５０が存在し、その各々は、あるクライアント・プラットフォーム１３０のために開発され得る。フィーチャー利用可否情報２００は、各クライアント・アプリケーション１５０について、そのクライアント・アプリケーション１５０を介してウェブ・アプリケーション１１５による起動に利用可能なプラットフォームフィーチャー１３５を示すことができる。一例として、フィーチャー利用可否情報２００は、ジオフェンシング・プラットフォームフィーチャー１３５が１つのクライアント・プラットフォーム１３０で（対応するクライアント・アプリケーション１５０を介して）利用可能であり、プッシュ通知プラットフォームフィーチャー１３５が別のクライアント・プラットフォーム１３０で（対応するクライアント・アプリケーション１５０を介して）利用可能であることを示すことができる。
【００２６】
様々な実施形態では、サーバ・システム１１０は、情報２００に対するリクエストに応答して、（例えば、情報２００をそのユーザに提示するクライアント・デバイスに送ることによって）フィーチャー利用可否情報２００をユーザに提示する。一例として、ウェブ・アプリケーション１１５を開発するとき、開発者は、どのプラットフォームフィーチャー１３５がクライアント・アプリケーション１５０を介して利用可能であるかを知りたいと望むかも知れない。従って、開発者は、サーバ・システム１１０から（クライアント・デバイスを使用して）フィーチャー利用可否情報２００を要求することができる。場合によっては、フィーチャー利用可否情報２００は、要求に応じてそれを提供する外部システムに記憶されてもよい。
【００２７】
実装されたフィーチャー２１０は、様々な実施形態では、ウェブ・アプリケーション１１５が実行されたときに起動することができるフィーチャーである。場合によっては、実装されたフィーチャー２１０は、ウェブブラウザ１４０のブラウザフィーチャー１４５とクライアント・プラットフォーム１３０のプラットフォームフィーチャー１３５の両方のフィーチャーを含んでもよい。従って、ウェブブラウザ１４０内で実行されると、ウェブ・アプリケーション１１５は、実装されたフィーチャー２１０によって特定されるブラウザフィーチャー１４５を起動することができる。クライアント・アプリケーション１５０内で実行されると、ウェブ・アプリケーション１１５は、実装されたフィーチャー２１０によって特定されるプラットフォームフィーチャー１３５を起動することができる。したがって、ウェブ・アプリケーション１１５は、それが実行される環境に基づいて適切なフィーチャーを起動することができる。いくつかの実施形態では、実装されたフィーチャー２１０は、複数のウェブブラウザ１４０および／またはクライアント・プラットフォーム１３０に対応するフィーチャーを含んでもよい。
【００２８】
チェック・エンジン２２０は、様々な実施形態では、実行時にウェブ・アプリケーション１１５によって起動するために利用可能な実装されたフィーチャー２１０をチェックする。場合によっては、ウェブ・アプリケーション１１５がクライアント・アプリケーション１５０で実行される場合のように、チェック・エンジン２２０は、起動に利用可能なこれらのフィーチャーを（ＡＰＩを介して）登録することができる。フィーチャを登録した後、ウェブ・アプリケーション１１５は、（例えば、ウェブブラウザ１４０またはクライアント・アプリケーション１５０へのＡＰＩコールを行うことによって）これらのフィーチャを起動することができる。いくつかの実施態様において、チェック・エンジン２２０は、ブラウザフィーチャー１４５をチェックする前に、利用可能なプラットフォームフィーチャー１３５をチェックする（場合によってはその逆でもよい）段階的チェックを実行する。
【００２９】
図示のように、サーバ・システム１１０は、ウェブ・アプリケーション１１５のためにクライアント・デバイス１２０からウェブ・アプリケーション・リクエスト２０５を受信する。様々な場合において、サーバ・システム１１０が異なるウェブ・アプリケーション１１５をホストする場合のように、ウェブ・アプリケーション・リクエスト２０５は、返されるべきウェブ・アプリケーション１１５を特定することができる。一例として、ウェブ・アプリケーション・リクエスト２０５は、ウェブ・アプリケーション１１５のためのＵＲＬ（ｕｎｉｆｏｒｍ  ｒｅｓｏｕｒｃｅ  ｌｏｃａｔｏｒ）を特定することができる。ウェブ・アプリケーション・リクエスト２０５の受信に応答して、サーバ・システム１１０は、実行のために、適切なウェブ・アプリケーション１１５を要求側  （例えば、クライアント・デバイス１２０のウェブブラウザ１４０またはクライアント・アプリケーション１５０）に返すことができる。ウェブ・アプリケーション１１５が実行されると、チェック・エンジン２２０は、利用可能な任意のフィーチャーをチェックし、それらのフィーチャーを登録して、それらのフィーチャーのその後の起動を可能にする。
【００３０】
ここで図３を参照するに、例示的なウェブブラウザ１４０のブロック図が示されている。図示の実施形態では、ウェブブラウザ１４０は、ブラウザフィーチャー１４５および実行環境３００を含む。図示のように、ウェブ・アプリケーション１１５は、実行環境３００内で実行することができる。いくつかの実施形態では、ウェブブラウザ１４０は、図示とは異なるように実装されてもよい。例えば、ウェブブラウザ１４０は、複数のウェブ・アプリケーション１１５を同時に実行することができる複数の実行環境３００を含んでもよい。
【００３１】
先に説明したように、ウェブブラウザ１４０は、ウェブ・アプリケーション・リクエスト２０５をサーバ・システム１１０に発行することに応答してウェブ・アプリケーション１１５を受信することができる。ウェブ・ブラウザ１４０は、ウェブ・ブラウザ１４０をサーバ・システム１１０にダイレクト（ｄｉｒｅｃｔ）するＵＲＬをユーザが送信するのに応答して、ウェブ・アプリケーション・リクエスト２０５を発行することができる。ウェブ・アプリケーション１１５を受信した後、ウェブブラウザ１４０は、実行環境３００内でウェブ・アプリケーション１１５を実行することができる。
【００３２】
実行環境３００は、様々な実施形態において、ウェブ・アプリケーション１１５を実行可能なソフトウェア環境である。実行環境３００内で実行するとき、ウェブ・アプリケーション１１５は、ウェブブラウザ１４０によって提供されるＡＰＩを使用してブラウザフィーチャー１４５を起動することができる。場合によっては、ウェブブラウザ１４０は、複数の実行環境３００を含んでもよく、各実行環境３００は、それぞれのウェブ・アプリケーション１１５を実行することができる。各実行環境３００は、ウェブブラウザ１４０によって維持される複数のタブのうちの１つに関連付けることができる。
【００３３】
ここで図４を参照するに、例示的なクライアント・アプリケーション１５０のブロック図が示されている。図示の実施形態では、クライアント・アプリケーション１５０は、実行環境４００と、フィーチャーアプリケーションプログラミングインターフェース４１０とを含む。図示のように、クライアント・アプリケーション１５０は、プラットフォームフィーチャー１３５を含むクライアント・プラットフォーム１３０上で動作する。さらに図示のように、フィーチャーＡＰＩ  ４１０はプラグイン４１５を含み、ウェブ・アプリケーション１１５は実行環境４００内で実行することができる。クライアント・アプリケーション１５０は、図示されたものとは異なる実装をされてもよい。一例として、クライアント・アプリケーション１５０は、複数のウェブ・アプリケーション１１５を同時に実行することができる複数の実行環境４００を含んでもよい。
【００３４】
前述のように、クライアント・アプリケーション１５０は、サーバ・システム１１０へのウェブ・アプリケーション・リクエスト２０５の発行に応答してウェブ・アプリケーション１１５を受信することができる。クライアント・アプリケーション１５０は、ユーザがクライアント・アプリケーション１５０をナビゲートするのに応答して、ウェブ・アプリケーション・リクエスト２０５を発行することができ、例えば、ユーザは、クライアント・アプリケーション１５０のタブを選択して、クライアント・アプリケーション１５０にウェブ・アプリケーション・リクエスト２０５を発行させることができる。ウェブ・アプリケーション１１５を受信した後、クライアント・アプリケーション１５０は実行環境４００内でウェブ・アプリケーション１１５を実行することができる。
【００３５】
実行環境４００は、様々な実施形態において、ウェブ・アプリケーション１１５を実行可能なソフトウェア環境である。いくつかの実施態様において、環境４００は、ウェブ・アプリケーション１１５のようなウェブ・コンテンツがクライアント・プラットフォーム１３０に対してネイティブなアプリケーション内で実行されることを可能にするコンテナ・オブジェクトを含む。例えば、Ａｎｄｒｏｉｄ（商標）オペレーティング・システム用に開発されたクライアント・アプリケーション１５０は、ウェブ・アプリケーション１１５のレンダリングを可能にするウェブビュー（ｗｅｂｖｉｅｗ）オブジェクトを含んでもよい。実行環境４００内で実行するとき、ウェブ・アプリケーション１１５は、プラットフォームフィーチャー１３５を起動するためにフィーチャーＡＰＩ  ４１０を使用することができる。
【００３６】
フィーチャーＡＰＩ  ４１０は、様々な実施形態において、プラグイン４１５を使用してウェブ・アプリケーション１１５がプラットフォームフィーチャー１３５を起動することを可能にするＡＰＩである。プラグイン４１５は、様々な実施形態において、対応するプラットフォームフィーチャー１３５とインターフェースするために実行可能な一組のソフトウェア・ルーチンである。様々な例において、プラグイン４１５は、対応するプラットフォームフィーチャー１３５の周囲を包囲するソフトウェアラッパー（ｓｏｆｔｗａｒｅ  ｗｒａｐｐｅｒ）であってもよい。プラグイン４１５は、プラットフォームフィーチャー１３５の複雑さ（ｕｎｄｅｒｌｙｉｎｇ  ｃｏｍｐｌｅｘｉｔｙ）を隠し、そのプラットフォームフィーチャーを起動するための一貫した呼び出しメカニズムを提示することができる。これにより、ウェブ・アプリケーション１１５が、異なるクライアント・プラットフォーム１３０上で同じ呼び出し（ｃａｌｌ）を発行して、同じプラットフォームフィーチャー１３５を起動することができ、これには、そのプラットフォームフィーチャー１３５の実装（ｕｎｄｅｒｌｙｉｎｇ  ｉｍｐｌｅｍｅｎｔａｔｉｏｎ）が異なる場合も含まれる。すなわち、プラグイン４１５は、プラットフォームフィーチャー１３５を起動するための抽象化のレベルを提供することができる。
【００３７】
クライアント・アプリケーション１５０内で実行されると、ウェブ・アプリケーション１１５は、その実装されたフィーチャー２１０に含まれるフィーチャーを登録することができる。次に、ウェブ・アプリケーション１１５は、フィーチャーＡＰＩ  ４１０の呼び出し（ｃａｌｌｓ）を発行することによって、これらのプラットフォームフィーチャー１３５のうちのプラットフォームフィーチャーを起動することができる。このような呼び出しは、プラグイン４１５に、対応するプラットフォームフィーチャー１３５を起動させ、結果を返してもよい。その結果は、ウェブ・アプリケーション１１５に戻すことができる。様々な場合において、クライアント・プラットフォーム１３０は、同じプラットフォームフィーチャー１３５の異なるバージョンを実装することができる。従って、フィーチャーＡＰＩ  ４１０は、そのプラットフォームフィーチャー１３５の１つ以上の異なるバージョンのサポートを含んでもよい。実行環境４００内で実行するとき、ウェブ・アプリケーション１１５は、ウェブ・アプリケーション１１５が起動するように書かれたバージョンに基づいて、バージョンを特定し、登録することができる。次いで、ウェブ・アプリケーション１１５は、そのバージョンを起動することができる。
【００３８】
ここで図５を参照すると、方法５００のフロー図が示されている。方法５００は、ウェブブラウザ（例えば、ウェブブラウザ１４０）内またはクライアント・プラットフォーム（例えば、クライアント・プラットフォーム１３０）にネイティブ（ｎａｔｉｖｅ）なクライアント・アプリケーション（例えば、クライアント・アプリケーション１５０）内で実行可能なウェブ・アプリケーション（例えば、ウェブ・アプリケーション１１５）を提供するために、サーバ・システム１１０などのコンピュータ・システムによって実行される方法の一実施形態である。様々な場合において、ウェブブラウザおよびクライアント・プラットフォームは、異なる一連のフィーチャー（例えば、ブラウザフィーチャー１４５対プラットフォームフィーチャー１３５）をサポートすることができる。いくつかの実施形態において、方法５００は、図示のステップ以外の追加ステップを含んでもよく、例えば、コンピュータ・システムは、ウェブ・アプリケーションの更新を受け取ることができる。
【００３９】
方法５００は、ステップ５１０において、コンピュータ・システムがクライアント・アプリケーションのインスタンスに配信するウェブ・アプリケーションをホストすることで始まる。クライアント・アプリケーションは、ウェブ・アプリケーションがクライアント・プラットフォームによってサポートされるフィーチャーのセットを起動することを可能にする一組のモジュール（例えば、プラグイン４１５）を実装することができる。その結果、ウェブ・アプリケーションは、クライアント・アプリケーションのインスタンス内で実行されるとき、ウェブブラウザによってサポートされていない少なくとも１つのフィーチャーを起動することができる。コンピュータ・システムは、様々な実施形態では、クライアント・アプリケーションによって実装されたモジュールのセットを特定するフィーチャー情報（例えば、フィーチャー利用可否情報２００）にアクセスする。従って、フィーチャー情報に対する第２のリクエストに応答して、コンピュータ・システムは、フィーチャー情報を（例えば、グラフィカル・インターフェースを介して）第２のリクエストに関連するユーザに提示することができる。
【００４０】
ステップ５２０において、コンピュータ・システムは、クライアント・プラットフォームを実装するクライアント・デバイス（例えば、クライアント・デバイス１２０）上で実行するクライアント・アプリケーションのインスタンスから、ウェブ・アプリケーションに対するリクエスト（例えば、ウェブ・アプリケーション・リクエスト２０５）を受信する。
【００４１】
ステップ５３０において、コンピュータ・システムは、ウェブ・アプリケーションをインスタンス内で実行させるために、クライアント・アプリケーションのインスタンスにウェブ・アプリケーションを送信する。インスタンス内でのウェブ・アプリケーションの実行は、ウェブ・アプリケーションがウェブブラウザによってサポートされていない少なくとも１つのフィーチャーを起動することを可能にする。いくつかの実施形態では、ウェブ・アプリケーションは、ウェブブラウザおよびクライアント・プラットフォームによってサポートされるフィーチャーを含む複数のフィーチャーを起動することができる。ウェブ・アプリケーションは、ウェブブラウザ内またはクライアント・アプリケーション内で実行されると、そのウェブ・アプリケーションによって起動することができる複数のフィーチャーのうちのフィーチャーを特定することができる。いくつかの実施形態では、クライアント・プラットフォームは、フィーチャーの複数のバージョンをサポートする。このように、ウェブ・アプリケーションは、ウェブ・アプリケーションによって起動され得るバージョンと一致するバージョンに基づいて、複数のバージョンのうちの一バージョンを特定することができる。ウェブ・アプリケーションは、そのバージョンのフィーチャーを起動することができる。
【００４２】
ウェブブラウザは、インスタンスを実行するクライアント・デバイスであってもよい第２のクライアント・デバイス上で実行することができる。コンピュータ・システムは、ウェブ・ブラウザから、ウェブ・アプリケーションに対する第２の要求（例えば、ウェブ・アプリケーション・リクエスト２０５）を受信することができる。このように、コンピュータ・システムは、ウェブ・ブラウザにウェブ・アプリケーションを送信して、ウェブ・アプリケーションをウェブ・ブラウザ内で実行させることができる。ウェブ・アプリケーションは、ウェブブラウザ内で実行すると、少なくとも１つのフィーチャーを起動することができない場合がある。
【００４３】
コンピュータ・システムは、第２のクライアント・プラットフォームを実装する第２のクライアント・デバイス上で実行される第２のクライアント・アプリケーションの第２のインスタンスから、ウェブ・アプリケーションに対する第２のリクエスト（例えば、ウェブ・アプリケーション・リクエスト２０５）を受信してもよい。第２のクライアント・プラットフォームは、ウェブブラウザおよびクライアント・プラットフォームとは異なるフィーチャーのセットをサポートすることができる。コンピュータ・システムは、ウェブ・アプリケーションを第２のクライアント・アプリケーションの第２のインスタンスに送信して、ウェブ・アプリケーションを第２のインスタンス内で実行させることができる。第２のインスタンス内でのウェブ・アプリケーションの実行により、ウェブ・アプリケーションは、ウェブブラウザおよびクライアント・プラットフォームによってサポートされていない少なくとも１つのフィーチャーを起動することができる。いくつかの実施形態では、第２のクライアント・プラットフォームは、クライアント・プラットフォームとは異なるオペレーティング・システムに対応する。
【００４４】
様々な実施形態では、コンピュータ・システムは、クライアント・アプリケーションのインスタンスに配信するため第２のウェブ・アプリケーションをホストする。第２のウェブ・アプリケーションは、ウェブ・アプリケーションとは異なる一組のフィーチャーを起動することができる。第２のウェブ・アプリケーションに対するインスタンスからの第２の要求に応答して、コンピュータ・システムは、第２のウェブ・アプリケーションをインスタンスに送信して、第２のウェブ・アプリケーションをそのインスタンス内で実行させることができる。インスタンス内で第２のウェブ・アプリケーションを実行すると、第２のウェブ・アプリケーションが、ウェブ・アプリケーションでサポートされていない１つ以上のフィーチャーを起動することができる。
【００４５】
ここで図６を参照するに、方法６００のフロー図が示されている。方法６００は、ウェブブラウザ（例えば、ウェブブラウザ１４０）内またはクライアント・プラットフォーム（例えば、クライアント・プラットフォーム１３０）にネイティブ（ｎａｔｉｖｅ）なクライアント・アプリケーション（例えば、クライアント・アプリケーション１５０）内で実行可能なウェブ・アプリケーション（例えば、ウェブ・アプリケーション１１５）を提供するために、サーバ・システム１１０のようなコンピュータ・システムによって実行される方法の一実施形態である。様々な場合において、ウェブブラウザおよびクライアント・プラットフォームは、異なるフィーチャーセット（例えば、ブラウザフィーチャー１４５とプラットフォームフィーチャー１３５）をサポートすることができる。方法６００は、一時的でないコンピュータ読取り可能媒体上に記憶された一組のプログラム命令を実行することによって実行することができる。いくつかの実施形態において、方法６００は、図示されていない追加のステップを含んでもよい。例えば、コンピュータ・システムは、ウェブ・アプリケーションの更新を受け取ることができる。
【００４６】
方法６００は、ステップ６１０で始まり、コンピュータ・システムが、ウェブブラウザおよびクライアント・プラットフォームにネイティブなクライアント・アプリケーションを含む複数の環境内で実行可能なウェブ・アプリケーションをホストする。
【００４７】
ステップ６２０において、コンピュータ・システムは、第１のクライアント・コンピュータ・システム（例えば、クライアント・デバイス１２０）上で実行されているウェブ・ブラウザから、ウェブ・アプリケーションに対するリクエスト（例えば、ウェブ・アプリケーション・リクエスト２０５）を受信する。ウェブブラウザは、クライアント・アプリケーションによって実装される第２のフィーチャーセット（例えば、プラットフォームフィーチャー１３５）とは異なる第１のフィーチャーセット（例えば、ブラウザフィーチャー１４５）を実装することができる。第１および第２の異なるフィーチャーセットは、１つ以上のフィーチャーを共有することができる。すなわち、２つのセットに含まれる少なくとも１つのフィーチャーが存在し得る。様々な実施形態では、コンピュータ・システムは、クライアント・アプリケーションによって実装される第２のフィーチャーセットを特定するフィーチャー情報（例えば、フィーチャー利用可否情報２００）にアクセスする。コンピュータ・システムは、フィーチャー情報に対する第３のリクエストに応答して、フィーチャー情報をユーザに提示することができる。
【００４８】
ステップ６３０において、コンピュータ・システムは、ウェブ・ブラウザにウェブ・アプリケーションを送信して、そのウェブ・アプリケーションをそのウェブ・ブラウザ内で実行させる。ウェブブラウザ内でウェブ・アプリケーションを実行することにより、ウェブ・アプリケーションは、第１のフィーチャーセット（ｔｈｅ  ｆｉｒｓｔ  ｓｅｔ  ｏｆ  ｆｅａｔｕｒｅｓ）を起動することができる。
【００４９】
ステップ６４０において、コンピュータ・システムは、クライアント・プラットフォームを実装する第２のクライアント・デバイス上で実行されているクライアント・アプリケーションのインスタンスから、ウェブ・アプリケーションに対する第２のリクエスト（例えば、ウェブ・アプリケーション・リクエスト２０５）を受信する。場合によっては、ウェブ・アプリケーションの第２のリクエストを受信する前に、コンピュータ・システムは、第２のクライアント・デバイス上で実行するために、クライアント・アプリケーションを第２のクライアント・デバイスに送信することができる。
【００５０】
ステップ６５０において、コンピュータ・システムは、クライアント・アプリケーションのインスタンスにウェブ・アプリケーションを送信して、そのインスタンス内でそのウェブ・アプリケーションを実行させる。インスタンス内でウェブ・アプリケーションを実行すると、ウェブ・アプリケーションが第２のフィーチャーセットを起動することができる。
【００５１】
様々な実施形態では、コンピュータ・システムは、ウェブ・ブラウザ内またはクライアント・アプリケーション内で実行可能な第２のウェブ・アプリケーションをホストする。コンピュータ・システムは、第２のウェブ・アプリケーションのインスタンスから第３のリクエスト（例えばウェブ・アプリケーション・リクエスト２０５）を受信してもよい。従って、コンピュータ・システムは、第２のウェブ・アプリケーションをインスタンスに送信して、第２のウェブ・アプリケーションをそのインスタンス内で実行させることができる。インスタンス内で第２のウェブ・アプリケーションを実行すると、第２のウェブ・アプリケーションは、ウェブ・アプリケーションが起動することのできない少なくとも１つのフィーチャーを起動することができる。
【００５２】
様々な実施形態では、コンピュータ・システムは、第２のクライアント・プラットフォームを実装する第３のクライアント・デバイス上で実行される第２のクライアント・アプリケーションの第２のインスタンスから、ウェブ・アプリケーションに対する第３のリクエストを受信する。第２のクライアント・アプリケーションは、第１および第２のフィーチャーセットとは異なる第３のフィーチャーセットを実装することができる。コンピュータ・システムは、ウェブ・アプリケーションを第２のクライアント・アプリケーションの第２のインスタンスに送信して、ウェブ・アプリケーションを第２のインスタンス内で実行させることができる。第２のインスタンス内でウェブ・アプリケーションを実行すると、ウェブ・アプリケーションが第３のフィーチャーセットを起動することができる。
【００５３】
ここで図７を参照するに、方法７００のフロー図が示されている。方法７００は、ウェブブラウザ（例えば、ウェブブラウザ１４０）またはクライアント・プラットフォーム（例えば、クライアント・プラットフォーム１３０）にネイティブなクライアント・アプリケーションで実行可能なウェブ・アプリケーション（例えば、ウェブ・アプリケーション１１５）を実行するために、クライアント・アプリケーション（例えば、クライアント・アプリケーション１５０）のインスタンスによって実行される方法の一実施形態である。ウェブブラウザおよびクライアント・プラットフォームは、異なるフィーチャーセット（例えば、ブラウザフィーチャー１４５とプラットフォームフィーチャー１３５）をサポートすることができる。いくつかの実施形態において、方法７００は、図示のステップ以外の追加ステップを含んでもよく、例えば、インスタンスは、クライアント・プラットフォームの追加のフィーチャーをサポートすることを可能にする更新を受け取ってもよい。
【００５４】
方法７００は、ステップ７１０で始まり、インスタンスが、サーバ・コンピュータ・システム（例えば、サーバ・システム１１０）に対して、ウェブ・アプリケーションに対するリクエスト（例えば、ウェブ・アプリケーション・リクエスト２０５）を送信する。クライアント・アプリケーションは、ウェブ・アプリケーションがクライアント・プラットフォームによってサポートされるフィーチャーセットを起動することを可能にするモジュールセット（例えば、プラグイン４１５）を実装することができる。ウェブ・アプリケーションは、サーバ・コンピュータ・システムによってホストされるウェブ・ページであってもよい。
【００５５】
ステップ７２０において、サーバ・コンピュータ・システムからのウェブ・アプリケーションの受信に応答して、インスタンスがウェブ・アプリケーションを実行する。様々な実施形態では、このような実行は、ステップ７３０−７５０を実行することを含む。
【００５６】
ステップ７３０において、インスタンスは、ウェブ・アプリケーションから、クライアント・プラットフォームによってサポートされているフィーチャーセットのうちのフィーチャーを起動するリクエストを受信する。場合によっては、ウェブ・アプリケーションから、フィーチャーを登録する少なくとも１つのリクエストを受け取ったことに応答して、インスタンスは、フィーチャーを登録して、ウェブ・アプリケーションがインスタンスをウェブ・アプリケーションに代わってそのフィーチャーを起動することを許可するようにできる。
【００５７】
ステップ７４０において、インスタンスは、ウェブ・アプリケーションに代わって、フィーチャーを起動する。ステップ７５０において、インスタンスは、起動の結果をウェブ・アプリケーションに返す。
【００５８】
様々な実施形態では、インスタンスは、第２のウェブ・アプリケーションのリクエストを送信する。第２のウェブ・アプリケーションの受信に応答して、インスタンスは第２のウェブ・アプリケーションを実行することができる。このような実行は、インスタンスが、第２のウェブ・アプリケーションから、クライアント・プラットフォームによってサポートされるフィーチャーセットの第２のフィーチャーを起動するリクエストを受信することを含み得る。第２のフィーチャーは、フィーチャーに含まれない少なくとも１つのフィーチャーを含んでもよい。実行は、さらに、インスタンスが、第２のウェブ・アプリケーションに代わって、第２のフィーチャーを起動し、第２のフィーチャーの起動の第２の結果を、第２のウェブ・アプリケーションに返すことを含んでもよい。
【００５９】
コンピュータ・システムの例
ここで図８を参照すると、サーバ・システム１１０および／またはクライアント・デバイス１２０を実装することができる例示的なコンピュータ・システム８００のブロック図が示されている。コンピュータ・システム８００は、相互接続８６０（例えば、システム・バス）を介してシステム・メモリ８２０および入出力インターフェース８４０に結合されるプロセッサ・サブシステム８８０を含む。入出力インターフェース８４０は、１つ以上のＩ／Ｏデバイス８５０に結合される。コンピュータ・システム８００は、サーバ・システム、パーソナル・コンピュータ・システム、デスクトップ・コンピュータ、ラップトップ・コンピュータまたはノートブック・コンピュータ、メインフレーム・コンピュータ・システム、タブレット・コンピュータ、ハンドヘルド・コンピュータ、ワークステーション、ネットワーク・コンピュータ、携帯電話、音楽プレーヤ、またはパーソナル・データ・アシスタントなどの消費者デバイスを含むが、これらに限定されない、種々のタイプのデバイスのいずれであってもよい。図８には、便宜上単一のコンピュータ・システム８００が示されているが、システム８００は、共に動作する２つ以上のコンピュータ・システムとして実装されてもよい。
【００６０】
プロセッサ・サブシステム８８０は、１つ以上のプロセッサまたは処理ユニットを含んでもよい。コンピュータ・システム８００の様々な実施形態において、プロセッサ・サブシステム８８０の複数のインスタンスを相互接続８６０に結合することができる。様々な実施形態では、プロセッサ・サブシステム８８０は（または８８０内の各プロセッサ・ユニットは）、キャッシュまたはオンボード・メモリの他の形態を含んでもよい。
【００６１】
システム・メモリ８２０は、プロセッサ・サブシステム８８０によって実行可能なプログラム命令を格納することに使用可能であり、システム８００に本明細書に記載される種々の動作を行わせる。システム・メモリ８２０は、ハード・ディスク・ストレージ、フロッピー・ディスク・ストレージ、リムーバブル・ディスク・ストレージ、フラッシュ・メモリ、ランダム・アクセス・メモリ（ＲＡＭ−ＳＲＡＭ、ＥＤＯ  ＲＡＭ、ＳＤＲＡＭ、ＤＤＲ  ＳＤＲＡＭ、ＲＡＭＢＵＳ  ＲＡＭなど）、リード・オンリー・メモリ（ＰＲＯＭ、ＥＥＰＲＯＭなど）などのような異なる物理メモリ・メディアを使用して実装されてもよい。コンピュータ・システム８００内のメモリは、メモリ８２０のような一次記憶デバイスに限定されない。むしろ、コンピュータ・システム８００は、プロセッサ・サブシステム８８０内のキャッシュ・メモリおよびＩ／Ｏデバイス８５０上の第２記憶デバイス（例えば、ハード・ドライブ、記憶アレイなど）のような他の形態の記憶デバイスを含んでもよい。いくつかの実施形態において、これらの他の形態の記憶デバイスはまた、プロセッサ・サブシステム８８０によって実行可能なプログラム命令を記憶してもよい。いくつかの実施形態では、実行時にウェブ・アプリケーション１１５、クライアント・プラットフォーム１３０、ウェブブラウザ１４０、および／またはクライアント・アプリケーション１５０を実装するプログラム命令は、システム・メモリ８２０内に含まれ／記憶されてもよい。
【００６２】
Ｉ／Ｏインターフェース８４０は、様々な実施形態に従って、他のデバイスに結合し、他のデバイスと通信するように構成された様々なタイプのインターフェースのいずれであってもよい。一実施形態では、Ｉ／Ｏインターフェース８４０は、フロントサイドから１つ以上のバックサイドバスへのブリッジチップ（例えば、サウスブリッジ）である。Ｉ／Ｏインターフェース８４０は、１つ以上の対応するバスまたは他のインターフェースを介して１つ以上のＩ／Ｏデバイス８５０に結合されてもよい。Ｉ／Ｏデバイス８５０の例としては、記憶デバイス（ハード・ドライブ、光学ドライブ、リムーバブル・フラッシュ・ドライブ、記憶アレイ、ＳＡＮ、またはそれらの関連コントローラ）、（例えば、ローカルまたはワイド・エリア・ネットワークへの）ネットワーク・インターフェースデバイス、または他のデバイス（例えば、グラフィックス、ユーザー・インターフェースデバイスなど）が挙げられる。一実施形態では、コンピュータ・システム８００は、（例えば、Ｗｉ−Ｆｉ、Ｂｌｕｅｔｏｏｔｈ、Ｅｔｈｅｒｎｅｔなどを介して通信するように構成される）ネットワーク・インターフェースデバイス８５０を介してネットワークに結合される。
【００６３】
出願の主題の実現は、以下の実施例１−２０を含むが、これらに限定されない。
１．  ウェブブラウザ内またはクライアント・プラットフォームにネイティブなクライアント・アプリケーション内で実行可能なウェブ・アプリケーションを提供する方法であって、前記ウェブ・ブラウザと前記クライアント・プラットフォームとは異なるフィーチャーセットをサポートし、
サーバ・コンピュータ・システムが、前記クライアント・アプリケーションのインスタンスに配信するために前記ウェブ・アプリケーションをホスティングすることであって、前記クライアント・アプリケーションは、前記ウェブ・アプリケーションが前記クライアント・プラットフォームによってサポートされている前記フィーチャーセットを起動することを可能にするモジュールセットを実装し、前記ウェブ・アプリケーションは、前記クライアント・アプリケーションのインスタンス内で実行されると、前記ウェブブラウザによってサポートされていない少なくとも１つのフィーチャーを起動することができる、ホスティングすることと、
前記サーバ・コンピュータ・システムが、前記クライアント・プラットフォームを実装するクライアント・デバイス上で実行されている前記クライアント・アプリケーションのインスタンスから、前記ウェブ・アプリケーションに対するリクエストを受信することと、
サーバ・コンピュータ・システムが、前記ウェブ・アプリケーションを前記クライアント・アプリケーションのインスタンスに送信して、前記ウェブ・アプリケーションを前記インスタンス内で実行させることであって、前記インスタンス内で前記ウェブ・アプリケーションを実行することにより、前記ウェブ・アプリケーションが、前記ウェブブラウザによってサポートされていない前記少なくとも１つのフィーチャーを起動することができる、実行することとを含む方法。
２．  前記ウェブブラウザは第２のクライアント・デバイス上で実行され、前記方法はさらに、
サーバ・コンピュータ・システムが、第２のクライアント・デバイス上で実行されている前記ウェブブラウザから、前記ウェブ・アプリケーションに対する第２のリクエストを受信することと、
サーバ・コンピュータ・システムが、前記ウェブ・アプリケーションを前記ウェブブラウザに送信し、前記ウェブ・アプリケーションを前記ウェブブラウザ内で実行させる、送信することであって、前記ウェブ・アプリケーションは、前記ウェブブラウザ内で実行されると、前記少なくとも１つのフィーチャーを起動することができ、送信することとを含む、
実施例１に記載の方法。
３．  前記第２のクライアント・デバイスは前記クライアント・デバイスである、実施例２に記載の方法。
４．  前記サーバ・コンピュータ・システムが、第２のクライアント・プラットフォームを実装する第２のクライアント・デバイス上で実行される第２のクライアント・アプリケーションの第２の特定インスタンスから、前記ウェブ・アプリケーションに対する第２のリクエストを受信することであって、前記第２のクライアント・プラットフォームは、前記ウェブ・ブラウザおよび前記クライアント・プラットフォームとは異なるフィーチャーセットをサポートする、受信することと、
サーバ・コンピュータ・システムが、前記ウェブ・アプリケーションを前記第２のクライアント・アプリケーションの第２のインスタンスに送信し、前記ウェブ・アプリケーションを前記第２のインスタンス内で実行させる、送信することであって、前記第２のインスタンス内で実行することにより、前記ウェブ・アプリケーションが、前記ウェブブラウザおよび前記クライアント・プラットフォームによってサポートされていない少なくとも１つのフィーチャーを起動することを可能にする、送信することとを含む、実施例１に記載の方法：
５．  前記第２のクライアント・プラットフォームは、前記クライアント・プラットフォームとは異なるオペレーティング・システムに対応する、実施例４に記載の方法。
６．  サーバ・コンピュータ・システムが、前記クライアント・アプリケーションによって実装されたモジュールセットを特定するフィーチャー情報にアクセスすることと、
前記フィーチャー情報に対する第２のリクエストに応答して、サーバ・コンピュータ・システムが、前記フィーチャー情報を前記第２のリクエストに関連付けられたユーザに提示することとをさらに含む、実施例１に記載の方法。
７．  サーバ・コンピュータ・システムが、前記ウェブ・アプリケーションのアップデートを受信することであって、前記ウェブ・アプリケーションが、前記ウェブブラウザではなく、前記クライアント・プラットフォームがサポートする追加のフィーチャーを起動することができるように、前記ウェブ・アプリケーションが更新される、実施例１に記載の方法。
８  サーバ・コンピュータ・システムが、前記クライアント・アプリケーションのインスタンスに配信するため第２のウェブ・アプリケーションをホスティングすることであって、前記第２のウェブ・アプリケーションは、前記ウェブ・アプリケーションとは異なるフィーチャーセットを起動することができる、ホスティングすることと、
前記第２のウェブ・アプリケーションに対する前記インスタンスからの第２のリクエストに応答して、前記サーバ・コンピュータが、前記インスタンスに前記第２のウェブ・アプリケーションを送信して、前記第２のウェブ・アプリケーションを前記インスタンス内で実行させる、送信することであって、前記第２のウェブ・アプリケーションを前記インスタンス内で実行することにより、前記第２のウェブ・アプリケーションが、前記ウェブ・アプリケーションによってサポートされていない１つ以上のフィーチャーを起動できるようにする、送信することをさらに含む、実施例１に記載の方法。
９．  前記ウェブ・アプリケーションは、前記ウェブブラウザ及び前記クライアント・プラットフォームによってサポートされるフィーチャーを含む複数のフィーチャーを起動することができ、前記ウェブ・アプリケーションは、前記ウェブブラウザ内又は前記クライアント・アプリケーション内で実行されると、前記ウェブ・アプリケーションによって起動することができる前記複数のフィーチャーのうちのフィーチャーを特定することができる、実施例１に記載の方法。
１０．  前記クライアント・プラットフォームは、前記フィーチャーの複数のバージョンをサポートし、前記ウェブ・アプリケーションは、
前記ウェブ・アプリケーションが起動可能なバージョンと一致するバージョンに基づいて、前記複数のバージョンのうちのバージョンを識別することと、
前記バージョンのフィーチャーを起動することとを含む、実施例１に記載の方法。
１１．  コンピュータ・システムにより実行されると、前記コンピュータ・システムに、
ウェブブラウザまたはクライアント・プラットフォームにネイティブなクライアント・アプリケーションを含む複数の環境内で実行可能なウェブ・アプリケーションをホスティングすることと、
第１のクライアント・コンピュータ・システム上で実行されているウェブブラウザから、前記ウェブ・アプリケーションに対するリクエストを受信することであって、前記ウェブブラウザは、前記クライアント・アプリケーションによって実装されている第２のフィーチャーセットとは異なる第１のフィーチャーセットを実装する、受信することと、
前記ウェブ・アプリケーションを前記ウェブブラウザに送信して、前記ウェブ・アプリケーションを前記ウェブブラウザ内で実行させる、送信することであって、前記ウェブブラウザ内でのウェブ・アプリケーションの実行によって、前記ウェブ・アプリケーションが第１のフィーチャーセットを起動することができるようにする、送信することと、
前記クライアント・プラットフォームを実装する第２のクライアント・デバイス上で実行される前記クライアント・アプリケーションのインスタンスから、前記ウェブ・アプリケーションに対する第２のリクエストを受信することと、
前記クライアント・アプリケーションのインスタンスに前記ウェブ・アプリケーションを送信して、前記ウェブ・アプリケーションを前記インスタンス内で実行させる、送信することであって、前記インスタンス内でウェブ・アプリケーションを実行することで、前記ウェブ・アプリケーションが第２のフィーチャーセットを起動することができるようにする、送信することとを含む動作を実行させるプログラム命令を記憶した非一時的コンピュータ読取可能媒体。
１２．  前記動作はさらに、
前記ウェブブラウザ内または前記クライアント・アプリケーション内で実行可能な第２のウェブ・アプリケーションのホストすることと、
前記インスタンスから前記第２のウェブ・アプリケーションに対する第３のリクエストを受信することと、
前記第２のウェブ・アプリケーションを前記インスタンスに送信して、前記第２のウェブ・アプリケーションを前記インスタンス内で実行させる、送信することであって、前記インスタンス内で前記第２のウェブ・アプリケーションを実行することにより、前記第２のウェブ・アプリケーションは、前記ウェブ・アプリケーションが起動できない少なくとも１つのフィーチャーを起動することができる、送信することをさらに含む、実施例１１に記載の媒体。
１３．  前記動作はさらに、
第２のクライアント・プラットフォームを実装する第３のクライアント・デバイス上で実行中の第２のクライアント・アプリケーションの第２のインスタンスから、前記ウェブ・アプリケーションに対する第３のリクエストを受信することであって、前記第２のクライアント・アプリケーションは、前記第１および第２のフィーチャーセットとは異なる第３のフィーチャーセットを実装する、受信することと、
前記第２のクライアント・アプリケーションの第２のインスタンスに前記ウェブ・アプリケーションを送信して、前記ウェブ・アプリケーションを前記第２のインスタンス内で実行させる、送信することであって、前記第２のインスタンス内で前記ウェブ・アプリケーションを実行することにより、前記ウェブ・アプリケーションが前記第３のフィーチャーセットを起動することができるようにする、送信することとを含む、実施例１１に記載の媒体。
１４．  前記動作はさらに、
クライアント・アプリケーションが実装する第２のフィーチャーセットを特定するフィーチャー情報にアクセスすることと、
フィーチャ情報に対する第３のリクエストに応答して、前記フィーチャ情報をユーザに提示することとを含む、実施例１１に記載の媒体。
１５．  前記動作はさらに、
前記ウェブ・アプリケーションに対する前記第２のリクエストを受信する前に、前記クライアント・アプリケーションを前記第２のクライアント・デバイスで実行するため前記第２のクライアント・デバイスに送信することを含む、実施例１１に記載の媒体。
１６．  ウェブブラウザおよびクライアント・プラットフォームにネイティブなクライアント・アプリケーションで実行可能なウェブ・アプリケーションを実行する方法であって、前記ウェブ・ブラウザおよび前記クライアント・プラットフォームは異なるフィーチャーセットをサポートし、
前記クライアント・プラットフォームを実装するクライアント・デバイス上で実行中のクライアント・アプリケーションのインスタンスが、サーバ・コンピュータ・システムに、前記ウェブ・アプリケーションに対するリクエストを送信することであって、前記クライアント・アプリケーションは前記クライアント・プラットフォームによってサポートされているフィーチャーセットを前記ウェブ・アプリケーションが起動できるようにするモジュールセットを実装する、送信することと、
前記サーバ・コンピュータ・システムからの前記ウェブ・アプリケーションの受信に応答して、前記クライアント・アプリケーションのインスタンスが前記ウェブ・アプリケーションを実行することであって、
前記ウェブ・アプリケーションから、前記クライアント・プラットフォームによりサポートされているフィーチャーセットのうちのフィーチャーを起動するリクエストを受信することと、
前記ウェブ・アプリケーションに代わって、前記フィーチャーを起動することと、
起動結果を前記ウェブ・アプリケーションに返すこととを含む、実施例１１に記載の媒体。
１７．  前記フィーチャーを登録する少なくとも１つの要求を前記ウェブ・アプリケーションから受信することに応答して、前記クライアント・アプリケーションのインスタンスが前記インスタンスを登録することであって、前記ウェブ・アプリケーションが、前記ウェブ・アプリケーションに代わって前記フィーチャーを起動できるようにする、登録することを含む、実施例１６に記載の方法。
１８．  前記クライアント・アプリケーションのインスタンスが、第２のウェブ・アプリケーションに対するリクエストを送信することと、
前記第２のウェブ・アプリケーションの受信に応答して、前記クライアント・アプリケーションのインスタンスが前記第２のウェブ・アプリケーションを実行することであって、
前記第２のウェブ・アプリケーションから、前記クライアント・プラットフォームがサポートするフィーチャーセットのうちの第２のフィーチャーを起動するリクエストを受信することであって、前記第２のフィーチャーは、前記フィーチャーに含まれない少なくとも１つのフィーチャーを含む、受信することと、
前記第２のウェブ・アプリケーションに代わって、前記第２のフィーチャーを起動することと、
前記第２のウェブ・アプリケーションに、前記第２のフィーチャーの第２の起動結果を返すこととを含む、実行することを含む、実施例１６に記載の方法。
１９．  前記クライアント・アプリケーションは、前記フィーチャーセットのうちのフィーチャーの少なくとも２つの異なるバージョンをサポートする、実施例１６に記載の方法。
２０．  前記ウェブ・アプリケーションは、前記サーバ・コンピュータ・システムによってホストされるウェブ・ページである、実施例１６に記載の方法。
【００６４】
実施形態を上述したが、これらの実施形態は、フィーチャーに関してたとえ単一の実施形態が記載されている場合でも、本開示の範囲を制限することを意図するものではない。本開示において提供されるフィーチャーの実施例は、特に断らない限り、限定的ではなく例示的であることが意図されている。上記の説明は、本開示の利益を有する当業者に明らかなような代替、修正、および等価物をカバーすることを意図している。
【００６５】
本開示の範囲は、本明細書に記載されている問題の一部または全部を緩和するか否かにかかわらず、本明細書に開示されている任意のフィーチャーまたはフィーチャーの組み合わせ、またはその任意の一般化を（明示的または黙示的のいずれであっても）含む。従って、本出願（又はその優先権を主張する出願）の審査において、このようなフィーチャーの組合せの手続中に、かかるフィーチャーの組み合わせにより新たなクレームを作成することができる。特に、添付の特許請求の範囲を参照すると、従属クレームのフィーチャーは、独立クレームのフィーチャーと組み合わせることができ、各独立クレームのフィーチャーは、添付の特許請求の範囲に列挙された組み合わせのみでなく、任意の適切な方法で組み合わせることができる。
【図１】
2021535461.tif 000003
【図２】
2021535461.tif 000004
【図３】
2021535461.tif 000005
【図４】
2021535461.tif 000006
【図５】
2021535461.tif 000007
【図６】
2021535461.tif 000008
【図７】
2021535461.tif 000009
【図８】
2021535461.tif 000010
【国際調査報告】
2021535461.tif 000011
2021535461.tif 000012
2021535461.tif 000013