(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-22
(45)【発行日】2022-12-01
(54)【発明の名称】ウェブ・アプリケーション実行のためのクライアント・アプリケーション
(51)【国際特許分類】
G06F 9/44 20180101AFI20221124BHJP
H04L 67/00 20220101ALI20221124BHJP
【FI】
G06F9/44
H04L67/00
(21)【出願番号】P 2021505386
(86)(22)【出願日】2020-06-30
(86)【国際出願番号】 US2020040265
(87)【国際公開番号】W WO2021021365
(87)【国際公開日】2021-02-04
【審査請求日】2021-01-29
(32)【優先日】2019-07-31
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】506332063
【氏名又は名称】セールスフォース ドット コム インコーポレイティッド
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ピーター,ウェスリー
【審査官】久保 光宏
(56)【参考文献】
【文献】特表2015-535376(JP,A)
【文献】特開2015-176308(JP,A)
【文献】谷中 志織,「実践テクニック HTML5 スマートフォンWebアプリ制作」,第1版,日本,株式会社 秀和システム,2011年12月29日,第356~380頁,ISBN: 978-4-7980-3189-7.
【文献】岡本 隆史(外2名),「Android/iPhone/Windows Phone対応 jQuery Mobileスマートフォンアプリ開発」,初版,日本,ソフトバンククリエイティブ株式会社,2012年06月26日,第297~327頁,ISBN: 978-4-7973-6873-4.
【文献】Peter Gasston 著,牧野 聡 訳,「モダンWeb - 新しいWebプラットフォームの基盤技術」,初版,日本,株式会社オライリー・ジャパン,2014年09月09日,第191~194頁,ISBN: 978-4-87311-692-1.
【文献】永井 勝則 著,アシアル株式会社 監修,「クラウドでできるHTML5ハイブリッドアプリ開発」,初版,日本,株式会社 翔泳社,2015年02月17日,第1~10,29~38頁,ISBN: 978-4-7981-4028-5.
【文献】羽田野 太巳,「SE、PM、ユーザーも必読! こんなに変わったWeb開発 [第4回] モバイルアプリ開発」,日経SYSTEMS,日本,日経BP社,2015年06月26日,2015年7月号(第267号),第80~85頁,ISSN: 1881-1620.
【文献】小笠原 種高 著,大澤 文孝 監修,「図解入門 よくわかる最新スマートフォン技術の基本と仕組み」,第1版,日本,株式会社秀和システム,2016年10月01日,第120~124頁,ISBN: 978-4-7980-4762-1.
(58)【調査した分野】(Int.Cl.,DB名)
G06F9/44
G06F9/448
H04L67/00
CSDB(日本国特許庁)
IEEEXplore(IEEE)
(57)【特許請求の範囲】
【請求項1】
ウェブ
・ブラウザ内及びクライアント・プラットフォームにネイティブなクライアント・アプリケーション内で実行可能なウェブ・アプリケーションを提供する方法であって、前記ウェブ・ブラウザと前記クライアント・プラットフォームとは異なるフィーチャーセットをサポートし、
前記クライアント・アプリケーションのインスタンスに配信するために前記ウェブ・アプリケーションをホスティングすることであって、前記クライアント・アプリケーションは、前記ウェブ・アプリケーションが前記クライアント・プラットフォームによってサポートされている前記フィーチャーセットを起動することを可能にするモジュールセットを実装し、前記ウェブ・アプリケーションは、前記クライアント・アプリケーションのインスタンス内で実行されると、前記ウェブ
・ブラウザによってサポートされていない少なくとも1つのフィーチャーを起動することができる、ホスティングすることと、
前記クライアント・プラットフォームを実装する
第1のクライアント・デバイス上で実行されている前記クライアント・アプリケーションの
第1のインスタンスから、前記ウェブ・アプリケーションに対するリクエストを受信することと、
前記ウェブ・アプリケーションを前記クライアント・アプリケーションの
前記第1のインスタンスに送信して、前記ウェブ・アプリケーションを前記インスタンス内で実行させることであって、前記
第1のインスタンス内で前記ウェブ・アプリケーションを実行することにより、前記ウェブ・アプリケーションが、前記ウェブ
・ブラウザによってサポートされていない前記少なくとも1つのフィーチャーを起動することができる、実行することと
を含む方法。
【請求項2】
前記ウェブ
・ブラウザは第2のクライアント・デバイス上で実行され、前記方法はさらに、
第2のクライアント・デバイス上で実行されている前記ウェブ
・ブラウザから、前記ウェブ・アプリケーションに対する第2のリクエストを受信することと、
前記ウェブ・アプリケーションを前記ウェブ
・ブラウザに送信し、前記ウェブ・アプリケーションを前記ウェブ
・ブラウザ内で実行させる、送信することであって、前記ウェブ・アプリケーションは、前記ウェブ
・ブラウザ内で実行されると、前記少なくとも1つのフィーチャーを起動することができ
ない、送信することと
を含む、請求項1に記載の方法。
【請求項3】
第2のクライアント・プラットフォームを実装する第2のクライアント・デバイス上で実行される第2のクライアント・アプリケーションの第2
のインスタンスから、前記ウェブ・アプリケーションに対する第2のリクエストを受信することであって、前記第2のクライアント・プラットフォームは、前記ウェブ・ブラウザおよび前記クライアント・プラットフォームとは異なるフィーチャーセットをサポートする、受信することと、
前記ウェブ・アプリケーションを前記第2のクライアント・アプリケーションの第2のインスタンスに送信し、前記ウェブ・アプリケーションを前記第2のインスタンス内で実行させる、送信することであって、
前記ウェブ・アプリケーションを前記第2のインスタンス内で実行することにより、前記ウェブ・アプリケーションが、前記ウェブ
・ブラウザおよび前記クライアント・プラットフォームによってサポートされていない少なくとも1つのフィーチャーを起動することを可能にする、送信することと
を含む、請求項1
または2に記載の方法。
【請求項4】
前記第2のクライアント・プラットフォームは、前記クライアント・プラットフォームとは異なるオペレーティング・システムに対応する、請求項
3に記載の方法。
【請求項5】
サーバ・コンピュータ・システムが、前記クライアント・アプリケーションによって実装されたモジュールセットを特定するフィーチャー情報にアクセスすることと、
前記フィーチャー情報に対するリクエストに応答して、前記フィーチャー情報を、前記フィーチャー情報に対する前記リクエストに関連付けられたユーザに提示することと
をさらに含む、請求項1ないし
4いずれか一項に記載の方法。
【請求項6】
前記ウェブ・アプリケーションのアップデートを受信することであって、前記ウェブ・アプリケーションが、前記ウェブ
・ブラウザではなく、前記クライアント・プラットフォームがサポートする追加のフィーチャーを起動することができるように、前記ウェブ・アプリケーションが更新される、
受信すること
をさらに含む、請求項1ないし
5いずれか一項に記載の方法。
【請求項7】
前記クライアント・アプリケーションのインスタンスに配信するため第2のウェブ・アプリケーションをホスティングすることであって、前記第2のウェブ・アプリケーションは、前記ウェブ・アプリケーションとは異なるフィーチャーセットを起動することができる、ホスティングすることと、
前記第2のウェブ・アプリケーションに対する前記
第1のインスタンスからのリクエストに応答して
、前記第1のインスタンスに前記第2のウェブ・アプリケーションを送信して、前記第2のウェブ・アプリケーションを前記
第1のインスタンス内で実行させる、送信することであって、前記第2のウェブ・アプリケーションを前記
第1のインスタンス内で実行することにより、前記第2のウェブ・アプリケーションが、前記ウェブ・アプリケーションによってサポートされていない1つ以上のフィーチャーを起動できるようにする、送信すること
と
をさらに含む、請求項1ないし
6いずれか一項に記載の方法。
【請求項8】
前記ウェブ・アプリケーションは、前記ウェブ
・ブラウザ及び前記クライアント・プラットフォームによってサポートされるフィーチャーを含む複数のフィーチャーを起動することができ、前記ウェブ・アプリケーションは、前記ウェブ
・ブラウザ内又は前記クライアント・アプリケーション内で実行されると、前記ウェブ・アプリケーションによって起動することができる前記複数のフィーチャーのうちのフィーチャーを特定することができる、請求項1ないし
7いずれか一項に記載の方法。
【請求項9】
前記クライアント・プラットフォームは、前記フィーチャーの複数のバージョンをサポートし、前記ウェブ・アプリケーションは、
前記ウェブ・アプリケーションが起動可能なバージョンと一致するバージョンに基づいて、前記複数のバージョンのうちのバージョンを識別することと、
前記バージョンのフィーチャーを起動すること
ができる、
請求項1ないし
8いずれか一項に記載の方法。
【請求項10】
少なくとも1つのプロセッサと、
請求項1ないし
9いずれか一項に記載の方法を実行するように実行可能なプログラム命令を記憶したメモリと
を有するコンピュータ・システム。
【請求項11】
コンピュータ・システムにより実行されると、前記コンピュータ・システムに、
(i)ウェブ
・ブラウザ及び
(ii)クライアント・プラットフォームにネイティブなクライアント・アプリケーション
において実行可能なウェブ・アプリケーションをホストすることであって、前記クライアント・アプリケーションは、前記ウェブ
・ブラウザによって実装されている第2のフィーチャーセットとは異なる第1のフィーチャーセットを実装する、ホストすることと、
前記クライアント・プラットフォームを実装する第1のクライアント・デバイス上で実行される前記クライアント・アプリケーションの
第1のインスタンスから、前記ウェブ・アプリケーションに対する第1のリクエストを受信することと、
前記クライアント・アプリケーションの
前記第1のインスタンスに前記ウェブ・アプリケーションを送信して、前記ウェブ・アプリケーションを前記
第1のインスタンス内で実行させる、送信することであって、前記
第1のインスタンス内でウェブ・アプリケーションを実行することで、前記ウェブ・アプリケーションが第1のフィーチャーセットを起動することができるようにする、送信することと
を含む動作を実行させるプログラム命令を記憶した非一時的コンピュータ読取可能媒体。
【請求項12】
前記動作はさらに、
第2のクライアント・コンピュータ・システム上で実行されているウェブ
・ブラウザの前記
第1のインスタンスから、前記ウェブ・アプリケーションに対する第2のリクエストを受信することと、
前記ウェブ・アプリケーションを前記
第1のインスタンスに送信して、前記ウェブ・アプリケーションを前記ウェブ
・ブラウザの
前記第1のインスタンス内で実行させる、送信することであって、前記ウェブ
・ブラウザの
前記第1のインスタンス内で前記ウェブ・アプリケーションを実行することにより、前記ウェブ・アプリケーションは、第2のフィーチャーセットを起動することができる、送信すること
と
をさらに含む、請求項
11に記載の媒体。
【請求項13】
前記動作はさらに、
第2のクライアント・プラットフォームを実装する第3のクライアント・デバイス上で実行中の第2のクライアント・アプリケーションの第2のインスタンスから、前記ウェブ・アプリケーションに対する第3のリクエストを受信することであって、前記第2のクライアント・アプリケーションは、前記第1および第2のフィーチャーセットとは異なる第3のフィーチャーセットを実装する、受信することと、
前記第2のクライアント・アプリケーションの第2のインスタンスに前記ウェブ・アプリケーションを送信して、前記ウェブ・アプリケーションを前記第2のインスタンス内で実行させる、送信することであって、前記第2のインスタンス内で前記ウェブ・アプリケーションを実行することにより、前記ウェブ・アプリケーションが前記第3のフィーチャーセットを起動することができるようにする、送信することと
を含む、請求項
11または
12に記載の媒体。
【請求項14】
前記動作はさらに、
クライアント・アプリケーションが実装するフィーチャーセットを特定するフィーチャー情報にアクセスすることと、
フィーチャ情報に対する第3のリクエストに応答して、前記フィーチャ情報をユーザに提示することと
を含む、請求項
11ないし
13いずれか一項に記載の媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概して、クライアント・アプリケーションにおけるウェブ・アプリケーションの実行に関する。
【背景技術】
【0002】
コンピュータ・システムは、インターネットのような広域ネットワークを含むネットワークを介して、他のコンピュータ・システムと日常的に情報を通信する。通信の1つの形態は、サーバ・コンピュータ・システムからクライアント・コンピュータ・システムにウェブ・ページ(一般的にはHTMLで書かれ、ワールド・ワイド・ウェブを介してアクセス可能な文書)を送信することであり、クライアント・コンピュータ・システムはそれらをユーザに提示し、ユーザはそれらを閲覧し、それらと対話することができる。特に、ユーザは、ウェブ・ブラウザを使用して一連のウェブ・ページへのアクセスを要求し、次いでそのウェブ・ブラウザを使用してそれらを閲覧し、対話することができる。このような対話には、ユーザが、ウェブ・ページを求めてウェブブラウザに入力を与え、ウェブ・ページからコンテンツをコピーし、ウェブリンクを用いてウェブ・ページをナビゲートすることなどが含まれる。
【図面の簡単な説明】
【0003】
【
図1】いくつかの実施形態による、ウェブ・アプリケーションをウェブブラウザ及びクライアント・アプリケーションに配信可能なサーバ・システムを有するシステムの例示的な構成要素を示すブロック図である。
【
図2】いくつかの実施形態による、ウェブ・アプリケーションを配信可能なサーバ・システムの例示的な構成要素を示すブロック図である。
【
図3】いくつかの実施形態による、ウェブ・アプリケーションを実行することができるウェブブラウザの例示的な構成要素を示すブロック図である。
【
図4】いくつかの実施形態に係る、ウェブ・アプリケーションを実行可能なクライアント・アプリケーションの例示的な構成要素を示すブロック図である。
【
図5】いくつかの実施態様による、ウェブ・アプリケーションの提供に関する例示的な方法を示すフロー図である。
【
図6】いくつかの実施態様による、ウェブ・アプリケーションの提供に関する例示的な方法を示すフロー図である。
【
図7】いくつかの実施態様による、ウェブ・アプリケーションの実行に関する例示的な方法を示すフロー図である。
【
図8】いくつかの実施形態による、例示的なコンピュータ・システムを示すブロック図である。
【発明を実施するための形態】
【0004】
本開示は、「一実施形態」または「実施形態」への言及を含む。「一実施形態において」または「実施形態において」という語句の使用は、必ずしも同じ実施形態を意味するものではない。フィーチャー、構造、またはフィーチャーは、本開示と矛盾しない任意の適切な方法で組み合わせることができる。
【0005】
本開示の範囲内では、異なるエンティティ(「ユニット」、「回路」、その他のコンポーネントなどと様々に呼び方をする)が、1つ以上のタスクまたは動作を実行する「構成」として説明または特許請求され得る。この定式化-[1つ以上のタスクを実行]するように「構成」された[エンティティ]-は、本明細書では、構造(すなわち、電子回路のような物理的なもの)を参照するために使用される。より具体的には、この定式化を用いて、この構造が、動作中に1つ以上のタスクを実行するように構成されていることを示す。構造は、現在動作中でなくても、あるタスクを実行するように「構成されている」と言うことができる。「ネットワークを介して通信するように構成されたネットワークインターフェース」は、例えば、集積回路であって、当該集積回路が現在使用されていなくても(例えば、電源が接続されていなくても)、動作中にこのフィーチャーを実行する回路を有するものをカバーするように意図されている。このように、あるタスクを実行するように「構成された」と記載されたエンティティは、デバイス、回路、そのタスクを実行するために実行可能なプログラム命令を格納したメモリなどの何か物理的なものを指す。このフレーズは、本明細書では、何か無形のものを指すためには用いない。それゆえ、「構成された」は、本明細書では、アプリケーション・プログラミング・インターフェース(API)などのソフトウェア・エンティティを指すためには使用されない。
【0006】
「ように構成された」という用語は、「ように構成できる」という意味ではない。例えば、プログラムされていないFPGAは、あるフィーチャーを実行する「ように構成でき」、プログラミング後にはそのフィーチャーを実行する「ように構成され」得るが、そのフィーチャーを実行する「ように構成された」ものとは考えられない。
【0007】
本明細書で使用される場合、「第1」、「第2」などの用語は、それらが修飾する名詞のラベルとして使用され、特段のことわりがなければ、いかなる種類の順序付け(例えば、空間的、時間的、論理的など)を示唆するものではない。例えば、8つの処理コアを有するプロセッサでは、「第1」および「第2」の処理コアとの用語は、その8つの処理コアのうちの任意の2つを参照するために使用される。換言すれば、第1および第2の処理コアは、例えば、処理コア0および1には限定されない。
【0008】
本明細書において、「に基づく」との用語は、決定に影響を及ぼす1つ以上の要因を記述するために使用される。この用語は、別の要因が決定に影響を及ぼす可能性を除外するものではない。すなわち、決定は、特定された要因のみに基づいてもよいし、特定された要因のみならず特定されていない他の要因に基づいてもよい。「Bに基づいてAを決定する」という文を考える。この文はBが、Aを決定するために使用される要因であること、またはAの決定に影響を及ぼす要因であることを示す。この文は、Aの決定が、Cのような他の要因にも基づいてもよいことを除外するものではない。この文は、AがBのみに基づいて決定される実施形態を包含することも意図している。このように、本明細書において、「に基づく」という用語は、「少なくとも部分的に基づいて」という用語と同義である。
【0009】
ユーザがウェブ・ページを閲覧(view)し、対話(interact)する際の体験の種類は、しばしば、使用されるウェブブラウザの実装に依存する。例えば、ウェブブラウザが位置ベースのフィーチャー(feature)を実装する場合、ユーザは、ウェブ・ページが位置関連の情報をユーザに提示する改善された体験のため、自分の位置を提供することができる。しかし、現在のウェブブラウザでは実装されていないジオフェンシング(geofencing)のような多くのフィーチャーがある(ジオフェンシングとは、ユーザが、あらかじめ画定された地理的領域内に位置することに基づいてアクションを実行する機能である)。結果として、場合によってウェブブラウザは、フィーチャーリッチな体験をユーザに提供できない。さらに、ウェブブラウザが実装するフィーチャーは、ウェブブラウザが実行できるクライアント・プラットフォーム(例えば、iOS(登録商標))が提供するフィーチャーほど用途が広くなく、機能も十分ではない。ウェブ・アプリケーション(例えば、ウェブ・ページ)を実行できる環境を実装し、クライアント・プラットフォームによって提供されるフィーチャーを含む、より多くのフィーチャーへのアクセスを提供することが望ましい。
【0010】
本開示は、ウェブ・アプリケーションを実行することができ、クライアント・プラットフォームによって提供されるネイティブフィーチャーへのアクセスを提供することができるクライアント・アプリケーションを実装するための技術を記載している。ウェブ・アプリケーションの一例はウェブ・ページであり、クライアント・アプリケーションの一例は、iOS(登録商標)用に特に開発されたアプリケーションである。以下に説明する様々な実施形態では、クライアント・プラットフォームにネイティブなクライアント・アプリケーションは、ウェブ・アプリケーションを実行することができる実行環境と、ウェブ・アプリケーションがクライアント・プラットフォームのフィーチャーを起動することができるフィーチャ・APIとを含む。いくつかの実施形態では、フィーチャーAPIは、ウェブ・アプリケーションがそれを介してクライアント・アプリケーションを実行するクライアント・プラットフォームの対応するフィーチャーセットを起動することができるモジュールセットを含む。
【0011】
サーバ・コンピュータ・システムは、様々な実施形態では、要求に応じてウェブブラウザおよびクライアント・アプリケーションに配信することができるウェブ・アプリケーションをホストする。従って、サーバ・コンピュータ・システムは、クライアント・アプリケーションに対応するクライアント・プラットフォームを実装するクライアント・デバイス上で実行中のクライアント・アプリケーションのインスタンスに、ウェブ・アプリケーションを送信することができる。クライアント・アプリケーションのインスタンスは、受信したウェブ・アプリケーションを実行環境内で実行するように動作可能である。様々な場合において、そのウェブ・アプリケーションがインスタンス内で実行されるとき、ウェブ・アプリケーションは、ウェブブラウザによってサポートされていない、ジオフェンシングなどの少なくとも1つのフィーチャーを起動することができる。
【0012】
これらの技術は、従来の手法よりも有利であると考えられるのは、開発者が、ブラウザまたはプラットフォームに対してネイティブなネイティブ・アプリケーションにサービスすることができる1つのコード・ベース(例えば、ウェブ・アプリケーション)を書けるからである。つまり、開発者は、各プラットフォームに固有のアプリケーションを開発しなくても、(異なるプラットフォームで実行可能な)1つのアプリケーションのみを開発すればよくなる可能性がある。例えば、ウェブブラウザ用アプリケーション、Android(商標)用アプリケーション、iOS(登録商標)用アプリケーションを開発するのではなく、ウェブブラウザ、Android(商標)、iOS(登録商標)で実行できる1つのアプリケーションを開発することができる。従って、サーバ・コンピュータ・システムは、リクエストに応じて、同じウェブ・アプリケーションをウェブブラウザおよびネイティブ・アプリケーションに提供すればよい。ランタイムでは、ウェブ・アプリケーションは、そのランタイムコンテナ(すなわち、ウェブブラウザまたはネイティブ・アプリケーション)でどのフィーチャーが利用可能かチェックし、必要に応じて起動することができます。
【0013】
さらに、これらの手法により、ウェブ・アプリケーションがクライアント・プラットフォームのネイティブフィーチャーを起動することができ、ネイティブフィーチャーは、ウェブブラウザによって提供されるものよりも用途が広く、高性能である。従って、ユーザは、ウェブ・アプリケーションを閲覧し、ウェブ・アプリケーションと対話する際に、改善された体験を提供される。つまり、ウェブ・アプリケーションは、(コードを変更しなくても)、ネイティブ・アプリケーションで実行するときに、ネイティブフィーチャー(ウェブブラウザには無いフィーチャー)を使用できます。以下、これらの技術を実装するシステムを、まず
図1を参照して説明する。
【0014】
ここで
図1を参照するに、システム100のブロック図を示す。システム100は、ハードウェアまたはハードウェアとソフトウェア・ルーチンとの組み合わせによって実装されるコンポーネントを含む。図示した実施形態では、システム100はサーバ・システム110およびクライアント・デバイス120を含む。さらに図示するように、サーバ・システム110はウェブ・アプリケーション115を含み、クライアント・デバイス120は、プラットフォームフィーチャー135、ウェブブラウザ140(ブラウザフィーチャー145を有する)、およびクライアント・アプリケーション150を有するクライアント・プラットフォーム130を含む。いくつかの実施形態において、システム100は、図示されているものとは異なるように実装されてもよい。一例として、クライアント・プラットフォーム130は、ウェブ・ブラウザ140を含まなくてもよく、ウェブ・ブラウザ140は、同じまたは異なるクライアント・プラットフォーム130を実装する第2の異なるクライアント・デバイス120上で実行されてもよい。
【0015】
サーバ・システム110は、様々な実施形態では、クライアント・デバイス120を含む他のシステムに配信するためにウェブ・アプリケーション115をホストするシステムである。サーバ・システム110は、例えば、テナント、アプリケーション(例えば、ウェブ・アプリケーション115など)、および、データを記憶し、分析し、サービスを提供するためにデータベースと対話することができるデータベース管理システムを実装することができる。従って、いくつかの実施形態では、サーバ・システム110は、テナントからデータを受信して管理するマルチテナントシステムであってもよく、かかるデータは、ウェブ・アプリケーション115を含んでもよい。様々な場合において、サーバ・システム110のテナントは、ウェブブラウザ140およびクライアント・アプリケーション150に配信するために、ウェブ・アプリケーション115を開発し、サーバ・システム110にアップロードすることができる。従って、様々な実施形態では、サーバ・システム110は、1つ以上のテナントから受信した複数のウェブ・アプリケーション115をホストすることができ、リクエストに応じて、かかるウェブ・アプリケーション115をウェブブラウザ140およびクライアント・アプリケーション150に送信することができる。ある場合には、サーバ・システム110は、ウェブ・アプリケーション115に対する更新を受け取ることができ、そのような更新は、ウェブ・アプリケーション115が追加のプラットフォームフィーチャー135および/またはブラウザフィーチャー135を起動することを可能にする。
【0016】
ウェブ・アプリケーション115は、様々な実施例では、実行時にウェブベースの体験を提供する一組のソフトウェア・ルーチンを含む。ウェブ・アプリケーション115は、例えば、ウェブブラウザ140またはクライアント・アプリケーション150によってレンダリングされたときにユーザが閲覧して対話することができる一組の動的ウェブ・ページであってもよい。様々な実施形態では、ウェブ・アプリケーション115は、ブラウザフィーチャー145および/またはプラットフォームフィーチャー135を起動するために実行可能なソフトウェア・ルーチンを含む。ウェブブラウザ140内で実行されると、ウェブ・アプリケーション115はブラウザフィーチャー145を起動し、クライアント・アプリケーション150内で実行されると、ウェブ・アプリケーション115はクライアント・プラットフォームフィーチャー135を起動することができる。様々な例において、異なるウェブ・アプリケーション115は、互いに異なるフィーチャー135および/または145を起動することができ、それらは、フィーチャーの重複するまたは重複しない異なるフィーチャーセットを起動することができる。例えば、1つのウェブ・アプリケーション115はジオフェンシングフィーチャーを起動することができ、他のウェブ・アプリケーション115は(設計されていないため)できない。
【0017】
クライアント・デバイス120は、様々な実施形態では、クライアント-サーバ関係においてサーバ・システム110と対話することができるコンピュータ・システムである。クライアント・デバイス120は、例えば、デスクトップ・コンピュータ、ラップトップ・コンピュータ、スマートフォン、スマートウォッチ等であってもよい。様々な実施形態では、クライアント・デバイス120は、ウェブブラウザ140およびクライアント・アプリケーション150のようなソフトウェア・ルーチンを実行することができるクライアント・プラットフォーム130を実行する。クライアント・プラットフォーム130は、様々な実施形態において、他のソフトウェア・ルーチンの実行を開始し、その実行のその後の管理をすることができる環境を提供する一組のソフトウェア・ルーチンである。クライアント・プラットフォーム130は、例えば、iOS(登録商標)またはAndroid(商標)のようなオペレーティング・システムであり得る。様々な場合において、サーバ・システム110と対話する複数のクライアント・デバイス120が存在し、それらの各々が異なるクライアント・プラットフォーム130を実行してもよい。
【0018】
クライアント・プラットフォーム130は、クライアント・アプリケーション150のようなアプリケーションが開発されるフレームワークを提供し得る。様々な例において、一つのクライアント・プラットフォーム130のために開発されたクライアント・アプリケーション150は、別のクライアント・プラットフォーム130のために開発されたクライアント・アプリケーション150と同じまたは類似の機能を実装することができるが、両方のクライアント・アプリケーション150は、異なるソフトウェア・ルーチンを含むことができる。例えば、Android(商標)オペレーティング・システムに特有のクライアント・アプリケーション150と、iOS(登録商標)オペレーティング・システムに特有のクライアント・アプリケーション150とがある。いくつかの実施形態では、クライアント・プラットフォーム130は、クライアント・アプリケーション150のような様々なクライアント・アプリケーションをダウンロードし、クライアント・プラットフォーム130にインストールすることを可能にするアプリケーション・ストアまたはエクスチェンジを提供することができる。ある場合には、サーバ・システム110は、クライアント・デバイス120からのリクエストに応答して、クライアント・プラットフォーム130のための適切なクライアント・アプリケーション150を提供することができる。
【0019】
図示したように、クライアント・プラットフォーム130は、クライアント・アプリケーション150を介してウェブ・アプリケーション115によって起動され得るプラットフォームフィーチャー135を含む。プラットフォームフィーチャー135の例としては、ジオフェンシング、人工知能統合(例えば、Siri(登録商標)にコマンドを発行する能力)、プッシュ通知、マイクロフォンアクセス、カメラアクセス、Bluetooth(登録商標)アクセス、および写真アクセスが挙げられるが、これらに限定されない。ある場合には、異なるクライアント・プラットフォーム130は、異なるプラットフォームフィーチャー135を含むことができる。一例として、あるクライアント・プラットフォーム130はプッシュ通知を実装してもよいが、別のクライアント・プラットフォーム130はそのプラットフォームフィーチャーを実装していない。従って、クライアント・プラットフォーム130は、他のクライアント・プラットフォームまたはウェブ・ブラウザ140によっては含まれないプラットフォームフィーチャー135を含むことができる。場合によっては、異なるクライアント・プラットフォーム130は、同じ高レベルフィーチャーを含んでもよいが、そのフィーチャーを異なるように実装することができる。例えば、2つのクライアント・プラットフォーム130は、人工知能エージェント(例えば、Google Assistant(商標)対Siri(登録商標))の異なる実装を有し得る。これらの2つのクライアント・プラットフォーム130は、異なる実装ではあるが、同じフィーチャーをサポートする。
【0020】
ウェブブラウザ140は、ここで使用されるように、HTML又はXMLのような標準化されたフォーマットでウェブ・ページ及び他のコンテンツにアクセスするために実行可能なプログラムである。これらのウェブ・ページは、一般的にワールド・ワイド・ウェブのようにネットワーク上に配置されている。ウェブブラウザ140の例としては、Chrome(商標)、Safari(登録商標)、Firefox(登録商標)、およびEdge(登録商標)が挙げられるが、これらに限定されない。図示のように、ウェブブラウザ140は、ウェブ・アプリケーション115によって起動され得るブラウザフィーチャー145を含む。ウェブブラウザフィーチャー145の例としては、オフライン作業モード(例えば、サービス作業者が定期的にウェブ・アプリケーション115のデータをキャッシュし、ユーザが一時的にインターネット接続を失った時でもそのデータをロードできる)、プッシュ通知、ハイパーテキスト転送プロトコルセキュア(HTTPS)サポートが挙げられるが、これらに限定されない。様々な実施形態では、ウェブブラウザ140は、ウェブ・アプリケーション115がウェブブラウザ140内で実行されるときにブラウザフィーチャー145を起動することを可能にするAPIを実装する。
【0021】
様々な場合において、プラットフォームフィーチャー135およびブラウザフィーチャー145は、異なるフィーチャーセットを含んでもよい。例として、プラットフォームフィーチャー135は、ブラウザフィーチャー部145に含まれないジオフェンシングフィーチャーを含んでもよい。その結果、ウェブ・アプリケーション115がクライアント・アプリケーション150内で実行されると、ウェブ・アプリケーション115はそのジオフェンシングフィーチャーを起動することができる。しかし、ウェブ・アプリケーション115がウェブブラウザ140内で実行されると、ジオフェンシングフィーチャーを使用することができない。従って、クライアント・アプリケーション150は、ウェブブラウザ140ではなくクライアント・アプリケーション150によって実行されたときに、ウェブ・アプリケーション115が改善されたユーザ体験を提供することを可能にする。ある場合には、プラットフォームフィーチャー135およびブラウザフィーチャー145は、同じ高レベルフィーチャーを含んでもよいが、異なる実装、すなわちプラットフォームフィーチャー135は、ブラウザフィーチャー145よりも汎用性が高い。一例として、プラットフォームフィーチャー135およびブラウザフィーチャー145は、プッシュ通知フィーチャーを含んでもよい。ウェブ・ブラウザ140のプッシュ通知フィーチャー145は、ウェブ・ブラウザ140がクライアント・プラットフォーム130上で実行されている間のみ、ウェブ・アプリケーション115に対して通知を提供することができる。しかし、クライアント・プラットフォーム130のプッシュ通知フィーチャー135は、クライアント・アプリケーション150がクライアント・プラットフォーム130上で実行されていない場合でも、ウェブ・アプリケーション115に対する通知を提供することができる。
【0022】
クライアント・アプリケーション150は、本明細書で使用されているように、ウェブ・アプリケーション115を実行できる環境を実現するために実行可能な一組のソフトウェア・ルーチンである。クライアント・アプリケーション150は、様々な実施形態において、ウェブ・アプリケーション115がクライアント・プラットフォーム130のプラットフォームフィーチャー135を起動することを可能にするAPIを実装する。クライアント・アプリケーション150は、クライアント・プラットフォーム130のネイティブ・アプリケーションであってもよい。本明細書において、「ネイティブ・アプリケーション」という用語は、当該技術分野における通常の慣用的な意味で使用され、クライアント・プラットフォームによってサポートされるフレームワークのために書かれたアプリケーションを含む。例えば、クライアント・アプリケーション150は、iOS(登録商標)オペレーティング・システムに対して書かれ、最適化され、従って、そのプラットフォームに対して「ネイティブ」である。クライアント・アプリケーション150は、ユーザがクライアント・アプリケーション150を開くこと、またはユーザがクライアント・アプリケーション150内のタブを選択することなどの、異なる条件が満たされたことに応じて、サーバ・システム110からウェブ・アプリケーション115を要求することができる。一旦ウェブ・アプリケーション115が受信されると、クライアント・アプリケーション150は、クライアント・アプリケーション150によって実装された環境内でウェブ・アプリケーション115を実行することができる。その実行の一部として、ウェブ・アプリケーション115は、クライアント・アプリケーション150によって提供されるAPIを使用してプラットフォームフィーチャー135を起動することができる。
【0023】
このようにしてシステム100を実装することは、ウェブ・アプリケーションがクライアント・プラットフォームによって提供されるフィーチャーにアクセスすることを可能にするので、従来のアプローチよりも有利であると考えられる。このようなフィーチャーには、ウェブブラウザがサポートしていないフィーチャーと、ウェブブラウザのフィーチャーよりも汎用性の高いフィーチャーが含まれ得る。従って、システム100は、ウェブ・アプリケーションが、ユーザがより多くのより良いフィーチャーにアクセスできるように改善されたユーザエクスペリエンスを提供することを可能にする。
【0024】
ここで
図2を参照するに、例示的なサーバ・システム110のブロック図が示される。図示の実施形態では、サーバ・システム110は、ウェブ・アプリケーション115と、フィーチャー利用可否情報200とを含む。図示のように、ウェブ・アプリケーション115は、実装されたフィーチャー210およびチェック・エンジン220を含む。いくつかの実施形態において、サーバ・システム110は、図示とは異なるように実装されてもよい。一例として、サーバ・システム110は、サーバ・システム110の1つ以上の異なるユーザに関連するシステムから受信することができる複数の異なるウェブ・アプリケーション115を含むことができる。
【0025】
フィーチャー利用可否情報200は、様々な実施形態では、クライアント・アプリケーション150によってサポートされるプラットフォームフィーチャー135を示す情報である。場合によっては、フィーチャー利用可否情報200は、開発者がウェブ・アプリケーション115のコードを書く際に参照するAPI文書ページであってもよい。クライアント・プラットフォーム130がジオフェンシングのためのプラットフォームフィーチャー135を提供し、クライアント・アプリケーション150がそのプラットフォームフィーチャーをサポートする例を考える。従って、フィーチャー利用可否情報200は、ジオフェンシングプラットフォームフィーチャー135が、クライアント・アプリケーション150を介してウェブ・アプリケーション115によって呼び出されるために利用可能であることを示す。このような知見により、開発者は、クライアント・アプリケーション150を介してジオフェンシング・プラットフォームフィーチャー135を起動することができるように、自分のウェブ・アプリケーション115をコーディングすることができる。様々な実施形態では、複数のクライアント・アプリケーション150が存在し、その各々は、あるクライアント・プラットフォーム130のために開発され得る。フィーチャー利用可否情報200は、各クライアント・アプリケーション150について、そのクライアント・アプリケーション150を介してウェブ・アプリケーション115による起動に利用可能なプラットフォームフィーチャー135を示すことができる。一例として、フィーチャー利用可否情報200は、ジオフェンシング・プラットフォームフィーチャー135が1つのクライアント・プラットフォーム130で(対応するクライアント・アプリケーション150を介して)利用可能であり、プッシュ通知プラットフォームフィーチャー135が別のクライアント・プラットフォーム130で(対応するクライアント・アプリケーション150を介して)利用可能であることを示すことができる。
【0026】
様々な実施形態では、サーバ・システム110は、情報200に対するリクエストに応答して、(例えば、情報200をそのユーザに提示するクライアント・デバイスに送ることによって)フィーチャー利用可否情報200をユーザに提示する。一例として、ウェブ・アプリケーション115を開発するとき、開発者は、どのプラットフォームフィーチャー135がクライアント・アプリケーション150を介して利用可能であるかを知りたいと望むかも知れない。従って、開発者は、サーバ・システム110から(クライアント・デバイスを使用して)フィーチャー利用可否情報200を要求することができる。場合によっては、フィーチャー利用可否情報200は、要求に応じてそれを提供する外部システムに記憶されてもよい。
【0027】
実装されたフィーチャー210は、様々な実施形態では、ウェブ・アプリケーション115が実行されたときに起動することができるフィーチャーである。場合によっては、実装されたフィーチャー210は、ウェブブラウザ140のブラウザフィーチャー145とクライアント・プラットフォーム130のプラットフォームフィーチャー135の両方のフィーチャーを含んでもよい。従って、ウェブブラウザ140内で実行されると、ウェブ・アプリケーション115は、実装されたフィーチャー210によって特定されるブラウザフィーチャー145を起動することができる。クライアント・アプリケーション150内で実行されると、ウェブ・アプリケーション115は、実装されたフィーチャー210によって特定されるプラットフォームフィーチャー135を起動することができる。したがって、ウェブ・アプリケーション115は、それが実行される環境に基づいて適切なフィーチャーを起動することができる。いくつかの実施形態では、実装されたフィーチャー210は、複数のウェブブラウザ140および/またはクライアント・プラットフォーム130に対応するフィーチャーを含んでもよい。
【0028】
チェック・エンジン220は、様々な実施形態では、実行時にウェブ・アプリケーション115によって起動するために利用可能な実装されたフィーチャー210をチェックする。場合によっては、ウェブ・アプリケーション115がクライアント・アプリケーション150で実行される場合のように、チェック・エンジン220は、起動に利用可能なこれらのフィーチャーを(APIを介して)登録することができる。フィーチャを登録した後、ウェブ・アプリケーション115は、(例えば、ウェブブラウザ140またはクライアント・アプリケーション150へのAPIコールを行うことによって)これらのフィーチャを起動することができる。いくつかの実施態様において、チェック・エンジン220は、ブラウザフィーチャー145をチェックする前に、利用可能なプラットフォームフィーチャー135をチェックする(場合によってはその逆でもよい)段階的チェックを実行する。
【0029】
図示のように、サーバ・システム110は、ウェブ・アプリケーション115のためにクライアント・デバイス120からウェブ・アプリケーション・リクエスト205を受信する。様々な場合において、サーバ・システム110が異なるウェブ・アプリケーション115をホストする場合のように、ウェブ・アプリケーション・リクエスト205は、返されるべきウェブ・アプリケーション115を特定することができる。一例として、ウェブ・アプリケーション・リクエスト205は、ウェブ・アプリケーション115のためのURL(uniform resource locator)を特定することができる。ウェブ・アプリケーション・リクエスト205の受信に応答して、サーバ・システム110は、実行のために、適切なウェブ・アプリケーション115を要求側 (例えば、クライアント・デバイス120のウェブブラウザ140またはクライアント・アプリケーション150)に返すことができる。ウェブ・アプリケーション115が実行されると、チェック・エンジン220は、利用可能な任意のフィーチャーをチェックし、それらのフィーチャーを登録して、それらのフィーチャーのその後の起動を可能にする。
【0030】
ここで
図3を参照するに、例示的なウェブブラウザ140のブロック図が示されている。図示の実施形態では、ウェブブラウザ140は、ブラウザフィーチャー145および実行環境300を含む。図示のように、ウェブ・アプリケーション115は、実行環境300内で実行することができる。いくつかの実施形態では、ウェブブラウザ140は、図示とは異なるように実装されてもよい。例えば、ウェブブラウザ140は、複数のウェブ・アプリケーション115を同時に実行することができる複数の実行環境300を含んでもよい。
【0031】
先に説明したように、ウェブブラウザ140は、ウェブ・アプリケーション・リクエスト205をサーバ・システム110に発行することに応答してウェブ・アプリケーション115を受信することができる。ウェブ・ブラウザ140は、ウェブ・ブラウザ140をサーバ・システム110にダイレクト(direct)するURLをユーザが送信するのに応答して、ウェブ・アプリケーション・リクエスト205を発行することができる。ウェブ・アプリケーション115を受信した後、ウェブブラウザ140は、実行環境300内でウェブ・アプリケーション115を実行することができる。
【0032】
実行環境300は、様々な実施形態において、ウェブ・アプリケーション115を実行可能なソフトウェア環境である。実行環境300内で実行するとき、ウェブ・アプリケーション115は、ウェブブラウザ140によって提供されるAPIを使用してブラウザフィーチャー145を起動することができる。場合によっては、ウェブブラウザ140は、複数の実行環境300を含んでもよく、各実行環境300は、それぞれのウェブ・アプリケーション115を実行することができる。各実行環境300は、ウェブブラウザ140によって維持される複数のタブのうちの1つに関連付けることができる。
【0033】
ここで
図4を参照するに、例示的なクライアント・アプリケーション150のブロック図が示されている。図示の実施形態では、クライアント・アプリケーション150は、実行環境400と、フィーチャーアプリケーションプログラミングインターフェース410とを含む。図示のように、クライアント・アプリケーション150は、プラットフォームフィーチャー135を含むクライアント・プラットフォーム130上で動作する。さらに図示のように、フィーチャーAPI 410はプラグイン415を含み、ウェブ・アプリケーション115は実行環境400内で実行することができる。クライアント・アプリケーション150は、図示されたものとは異なる実装をされてもよい。一例として、クライアント・アプリケーション150は、複数のウェブ・アプリケーション115を同時に実行することができる複数の実行環境400を含んでもよい。
【0034】
前述のように、クライアント・アプリケーション150は、サーバ・システム110へのウェブ・アプリケーション・リクエスト205の発行に応答してウェブ・アプリケーション115を受信することができる。クライアント・アプリケーション150は、ユーザがクライアント・アプリケーション150をナビゲートするのに応答して、ウェブ・アプリケーション・リクエスト205を発行することができ、例えば、ユーザは、クライアント・アプリケーション150のタブを選択して、クライアント・アプリケーション150にウェブ・アプリケーション・リクエスト205を発行させることができる。ウェブ・アプリケーション115を受信した後、クライアント・アプリケーション150は実行環境400内でウェブ・アプリケーション115を実行することができる。
【0035】
実行環境400は、様々な実施形態において、ウェブ・アプリケーション115を実行可能なソフトウェア環境である。いくつかの実施態様において、環境400は、ウェブ・アプリケーション115のようなウェブ・コンテンツがクライアント・プラットフォーム130に対してネイティブなアプリケーション内で実行されることを可能にするコンテナ・オブジェクトを含む。例えば、Android(商標)オペレーティング・システム用に開発されたクライアント・アプリケーション150は、ウェブ・アプリケーション115のレンダリングを可能にするウェブビュー(webview)オブジェクトを含んでもよい。実行環境400内で実行するとき、ウェブ・アプリケーション115は、プラットフォームフィーチャー135を起動するためにフィーチャーAPI 410を使用することができる。
【0036】
フィーチャーAPI 410は、様々な実施形態において、プラグイン415を使用してウェブ・アプリケーション115がプラットフォームフィーチャー135を起動することを可能にするAPIである。プラグイン415は、様々な実施形態において、対応するプラットフォームフィーチャー135とインターフェースするために実行可能な一組のソフトウェア・ルーチンである。様々な例において、プラグイン415は、対応するプラットフォームフィーチャー135の周囲を包囲するソフトウェアラッパー(software wrapper)であってもよい。プラグイン415は、プラットフォームフィーチャー135の複雑さ(underlying complexity)を隠し、そのプラットフォームフィーチャーを起動するための一貫した呼び出しメカニズムを提示することができる。これにより、ウェブ・アプリケーション115が、異なるクライアント・プラットフォーム130上で同じ呼び出し(call)を発行して、同じプラットフォームフィーチャー135を起動することができ、これには、そのプラットフォームフィーチャー135の実装(underlying implementation)が異なる場合も含まれる。すなわち、プラグイン415は、プラットフォームフィーチャー135を起動するための抽象化のレベルを提供することができる。
【0037】
クライアント・アプリケーション150内で実行されると、ウェブ・アプリケーション115は、その実装されたフィーチャー210に含まれるフィーチャーを登録することができる。次に、ウェブ・アプリケーション115は、フィーチャーAPI 410の呼び出し(calls)を発行することによって、これらのプラットフォームフィーチャー135のうちのプラットフォームフィーチャーを起動することができる。このような呼び出しは、プラグイン415に、対応するプラットフォームフィーチャー135を起動させ、結果を返してもよい。その結果は、ウェブ・アプリケーション115に戻すことができる。様々な場合において、クライアント・プラットフォーム130は、同じプラットフォームフィーチャー135の異なるバージョンを実装することができる。従って、フィーチャーAPI 410は、そのプラットフォームフィーチャー135の1つ以上の異なるバージョンのサポートを含んでもよい。実行環境400内で実行するとき、ウェブ・アプリケーション115は、ウェブ・アプリケーション115が起動するように書かれたバージョンに基づいて、バージョンを特定し、登録することができる。次いで、ウェブ・アプリケーション115は、そのバージョンを起動することができる。
【0038】
ここで
図5を参照すると、方法500のフロー図が示されている。方法500は、ウェブブラウザ(例えば、ウェブブラウザ140)内またはクライアント・プラットフォーム(例えば、クライアント・プラットフォーム130)にネイティブ(native)なクライアント・アプリケーション(例えば、クライアント・アプリケーション150)内で実行可能なウェブ・アプリケーション(例えば、ウェブ・アプリケーション115)を提供するために、サーバ・システム110などのコンピュータ・システムによって実行される方法の一実施形態である。様々な場合において、ウェブブラウザおよびクライアント・プラットフォームは、異なる一連のフィーチャー(例えば、ブラウザフィーチャー145対プラットフォームフィーチャー135)をサポートすることができる。いくつかの実施形態において、方法500は、図示のステップ以外の追加ステップを含んでもよく、例えば、コンピュータ・システムは、ウェブ・アプリケーションの更新を受け取ることができる。
【0039】
方法500は、ステップ510において、コンピュータ・システムがクライアント・アプリケーションのインスタンスに配信するウェブ・アプリケーションをホストすることで始まる。クライアント・アプリケーションは、ウェブ・アプリケーションがクライアント・プラットフォームによってサポートされるフィーチャーのセットを起動することを可能にする一組のモジュール(例えば、プラグイン415)を実装することができる。その結果、ウェブ・アプリケーションは、クライアント・アプリケーションのインスタンス内で実行されるとき、ウェブブラウザによってサポートされていない少なくとも1つのフィーチャーを起動することができる。コンピュータ・システムは、様々な実施形態では、クライアント・アプリケーションによって実装されたモジュールのセットを特定するフィーチャー情報(例えば、フィーチャー利用可否情報200)にアクセスする。従って、フィーチャー情報に対する第2のリクエストに応答して、コンピュータ・システムは、フィーチャー情報を(例えば、グラフィカル・インターフェースを介して)第2のリクエストに関連するユーザに提示することができる。
【0040】
ステップ520において、コンピュータ・システムは、クライアント・プラットフォームを実装するクライアント・デバイス(例えば、クライアント・デバイス120)上で実行するクライアント・アプリケーションのインスタンスから、ウェブ・アプリケーションに対するリクエスト(例えば、ウェブ・アプリケーション・リクエスト205)を受信する。
【0041】
ステップ530において、コンピュータ・システムは、ウェブ・アプリケーションをインスタンス内で実行させるために、クライアント・アプリケーションのインスタンスにウェブ・アプリケーションを送信する。インスタンス内でのウェブ・アプリケーションの実行は、ウェブ・アプリケーションがウェブブラウザによってサポートされていない少なくとも1つのフィーチャーを起動することを可能にする。いくつかの実施形態では、ウェブ・アプリケーションは、ウェブブラウザおよびクライアント・プラットフォームによってサポートされるフィーチャーを含む複数のフィーチャーを起動することができる。ウェブ・アプリケーションは、ウェブブラウザ内またはクライアント・アプリケーション内で実行されると、そのウェブ・アプリケーションによって起動することができる複数のフィーチャーのうちのフィーチャーを特定することができる。いくつかの実施形態では、クライアント・プラットフォームは、フィーチャーの複数のバージョンをサポートする。このように、ウェブ・アプリケーションは、ウェブ・アプリケーションによって起動され得るバージョンと一致するバージョンに基づいて、複数のバージョンのうちの一バージョンを特定することができる。ウェブ・アプリケーションは、そのバージョンのフィーチャーを起動することができる。
【0042】
ウェブブラウザは、インスタンスを実行するクライアント・デバイスであってもよい第2のクライアント・デバイス上で実行することができる。コンピュータ・システムは、ウェブ・ブラウザから、ウェブ・アプリケーションに対する第2の要求(例えば、ウェブ・アプリケーション・リクエスト205)を受信することができる。このように、コンピュータ・システムは、ウェブ・ブラウザにウェブ・アプリケーションを送信して、ウェブ・アプリケーションをウェブ・ブラウザ内で実行させることができる。ウェブ・アプリケーションは、ウェブブラウザ内で実行すると、少なくとも1つのフィーチャーを起動することができない場合がある。
【0043】
コンピュータ・システムは、第2のクライアント・プラットフォームを実装する第2のクライアント・デバイス上で実行される第2のクライアント・アプリケーションの第2のインスタンスから、ウェブ・アプリケーションに対する第2のリクエスト(例えば、ウェブ・アプリケーション・リクエスト205)を受信してもよい。第2のクライアント・プラットフォームは、ウェブブラウザおよびクライアント・プラットフォームとは異なるフィーチャーのセットをサポートすることができる。コンピュータ・システムは、ウェブ・アプリケーションを第2のクライアント・アプリケーションの第2のインスタンスに送信して、ウェブ・アプリケーションを第2のインスタンス内で実行させることができる。第2のインスタンス内でのウェブ・アプリケーションの実行により、ウェブ・アプリケーションは、ウェブブラウザおよびクライアント・プラットフォームによってサポートされていない少なくとも1つのフィーチャーを起動することができる。いくつかの実施形態では、第2のクライアント・プラットフォームは、クライアント・プラットフォームとは異なるオペレーティング・システムに対応する。
【0044】
様々な実施形態では、コンピュータ・システムは、クライアント・アプリケーションのインスタンスに配信するため第2のウェブ・アプリケーションをホストする。第2のウェブ・アプリケーションは、ウェブ・アプリケーションとは異なる一組のフィーチャーを起動することができる。第2のウェブ・アプリケーションに対するインスタンスからの第2の要求に応答して、コンピュータ・システムは、第2のウェブ・アプリケーションをインスタンスに送信して、第2のウェブ・アプリケーションをそのインスタンス内で実行させることができる。インスタンス内で第2のウェブ・アプリケーションを実行すると、第2のウェブ・アプリケーションが、ウェブ・アプリケーションでサポートされていない1つ以上のフィーチャーを起動することができる。
【0045】
ここで
図6を参照するに、方法600のフロー図が示されている。方法600は、ウェブブラウザ(例えば、ウェブブラウザ140)内またはクライアント・プラットフォーム(例えば、クライアント・プラットフォーム130)にネイティブ(native)なクライアント・アプリケーション(例えば、クライアント・アプリケーション150)内で実行可能なウェブ・アプリケーション(例えば、ウェブ・アプリケーション115)を提供するために、サーバ・システム110のようなコンピュータ・システムによって実行される方法の一実施形態である。様々な場合において、ウェブブラウザおよびクライアント・プラットフォームは、異なるフィーチャーセット(例えば、ブラウザフィーチャー145とプラットフォームフィーチャー135)をサポートすることができる。方法600は、一時的でないコンピュータ読取り可能媒体上に記憶された一組のプログラム命令を実行することによって実行することができる。いくつかの実施形態において、方法600は、図示されていない追加のステップを含んでもよい。例えば、コンピュータ・システムは、ウェブ・アプリケーションの更新を受け取ることができる。
【0046】
方法600は、ステップ610で始まり、コンピュータ・システムが、ウェブブラウザおよびクライアント・プラットフォームにネイティブなクライアント・アプリケーションを含む複数の環境内で実行可能なウェブ・アプリケーションをホストする。
【0047】
ステップ620において、コンピュータ・システムは、第1のクライアント・コンピュータ・システム(例えば、クライアント・デバイス120)上で実行されているウェブ・ブラウザから、ウェブ・アプリケーションに対するリクエスト(例えば、ウェブ・アプリケーション・リクエスト205)を受信する。ウェブブラウザは、クライアント・アプリケーションによって実装される第2のフィーチャーセット(例えば、プラットフォームフィーチャー135)とは異なる第1のフィーチャーセット(例えば、ブラウザフィーチャー145)を実装することができる。第1および第2の異なるフィーチャーセットは、1つ以上のフィーチャーを共有することができる。すなわち、2つのセットに含まれる少なくとも1つのフィーチャーが存在し得る。様々な実施形態では、コンピュータ・システムは、クライアント・アプリケーションによって実装される第2のフィーチャーセットを特定するフィーチャー情報(例えば、フィーチャー利用可否情報200)にアクセスする。コンピュータ・システムは、フィーチャー情報に対する第3のリクエストに応答して、フィーチャー情報をユーザに提示することができる。
【0048】
ステップ630において、コンピュータ・システムは、ウェブ・ブラウザにウェブ・アプリケーションを送信して、そのウェブ・アプリケーションをそのウェブ・ブラウザ内で実行させる。ウェブブラウザ内でウェブ・アプリケーションを実行することにより、ウェブ・アプリケーションは、第1のフィーチャーセット(the first set of features)を起動することができる。
【0049】
ステップ640において、コンピュータ・システムは、クライアント・プラットフォームを実装する第2のクライアント・デバイス上で実行されているクライアント・アプリケーションのインスタンスから、ウェブ・アプリケーションに対する第2のリクエスト(例えば、ウェブ・アプリケーション・リクエスト205)を受信する。場合によっては、ウェブ・アプリケーションの第2のリクエストを受信する前に、コンピュータ・システムは、第2のクライアント・デバイス上で実行するために、クライアント・アプリケーションを第2のクライアント・デバイスに送信することができる。
【0050】
ステップ650において、コンピュータ・システムは、クライアント・アプリケーションのインスタンスにウェブ・アプリケーションを送信して、そのインスタンス内でそのウェブ・アプリケーションを実行させる。インスタンス内でウェブ・アプリケーションを実行すると、ウェブ・アプリケーションが第2のフィーチャーセットを起動することができる。
【0051】
様々な実施形態では、コンピュータ・システムは、ウェブ・ブラウザ内またはクライアント・アプリケーション内で実行可能な第2のウェブ・アプリケーションをホストする。コンピュータ・システムは、第2のウェブ・アプリケーションのインスタンスから第3のリクエスト(例えばウェブ・アプリケーション・リクエスト205)を受信してもよい。従って、コンピュータ・システムは、第2のウェブ・アプリケーションをインスタンスに送信して、第2のウェブ・アプリケーションをそのインスタンス内で実行させることができる。インスタンス内で第2のウェブ・アプリケーションを実行すると、第2のウェブ・アプリケーションは、ウェブ・アプリケーションが起動することのできない少なくとも1つのフィーチャーを起動することができる。
【0052】
様々な実施形態では、コンピュータ・システムは、第2のクライアント・プラットフォームを実装する第3のクライアント・デバイス上で実行される第2のクライアント・アプリケーションの第2のインスタンスから、ウェブ・アプリケーションに対する第3のリクエストを受信する。第2のクライアント・アプリケーションは、第1および第2のフィーチャーセットとは異なる第3のフィーチャーセットを実装することができる。コンピュータ・システムは、ウェブ・アプリケーションを第2のクライアント・アプリケーションの第2のインスタンスに送信して、ウェブ・アプリケーションを第2のインスタンス内で実行させることができる。第2のインスタンス内でウェブ・アプリケーションを実行すると、ウェブ・アプリケーションが第3のフィーチャーセットを起動することができる。
【0053】
ここで
図7を参照するに、方法700のフロー図が示されている。方法700は、ウェブブラウザ(例えば、ウェブブラウザ140)またはクライアント・プラットフォーム(例えば、クライアント・プラットフォーム130)にネイティブなクライアント・アプリケーションで実行可能なウェブ・アプリケーション(例えば、ウェブ・アプリケーション115)を実行するために、クライアント・アプリケーション(例えば、クライアント・アプリケーション150)のインスタンスによって実行される方法の一実施形態である。ウェブブラウザおよびクライアント・プラットフォームは、異なるフィーチャーセット(例えば、ブラウザフィーチャー145とプラットフォームフィーチャー135)をサポートすることができる。いくつかの実施形態において、方法700は、図示のステップ以外の追加ステップを含んでもよく、例えば、インスタンスは、クライアント・プラットフォームの追加のフィーチャーをサポートすることを可能にする更新を受け取ってもよい。
【0054】
方法700は、ステップ710で始まり、インスタンスが、サーバ・コンピュータ・システム(例えば、サーバ・システム110)に対して、ウェブ・アプリケーションに対するリクエスト(例えば、ウェブ・アプリケーション・リクエスト205)を送信する。クライアント・アプリケーションは、ウェブ・アプリケーションがクライアント・プラットフォームによってサポートされるフィーチャーセットを起動することを可能にするモジュールセット(例えば、プラグイン415)を実装することができる。ウェブ・アプリケーションは、サーバ・コンピュータ・システムによってホストされるウェブ・ページであってもよい。
【0055】
ステップ720において、サーバ・コンピュータ・システムからのウェブ・アプリケーションの受信に応答して、インスタンスがウェブ・アプリケーションを実行する。様々な実施形態では、このような実行は、ステップ730-750を実行することを含む。
【0056】
ステップ730において、インスタンスは、ウェブ・アプリケーションから、クライアント・プラットフォームによってサポートされているフィーチャーセットのうちのフィーチャーを起動するリクエストを受信する。場合によっては、ウェブ・アプリケーションから、フィーチャーを登録する少なくとも1つのリクエストを受け取ったことに応答して、インスタンスは、フィーチャーを登録して、ウェブ・アプリケーションがインスタンスをウェブ・アプリケーションに代わってそのフィーチャーを起動することを許可するようにできる。
【0057】
ステップ740において、インスタンスは、ウェブ・アプリケーションに代わって、フィーチャーを起動する。ステップ750において、インスタンスは、起動の結果をウェブ・アプリケーションに返す。
【0058】
様々な実施形態では、インスタンスは、第2のウェブ・アプリケーションのリクエストを送信する。第2のウェブ・アプリケーションの受信に応答して、インスタンスは第2のウェブ・アプリケーションを実行することができる。このような実行は、インスタンスが、第2のウェブ・アプリケーションから、クライアント・プラットフォームによってサポートされるフィーチャーセットの第2のフィーチャーを起動するリクエストを受信することを含み得る。第2のフィーチャーは、フィーチャーに含まれない少なくとも1つのフィーチャーを含んでもよい。実行は、さらに、インスタンスが、第2のウェブ・アプリケーションに代わって、第2のフィーチャーを起動し、第2のフィーチャーの起動の第2の結果を、第2のウェブ・アプリケーションに返すことを含んでもよい。
【0059】
コンピュータ・システムの例
ここで
図8を参照すると、サーバ・システム110および/またはクライアント・デバイス120を実装することができる例示的なコンピュータ・システム800のブロック図が示されている。コンピュータ・システム800は、相互接続860(例えば、システム・バス)を介してシステム・メモリ820および入出力インターフェース840に結合されるプロセッサ・サブシステム880を含む。入出力インターフェース840は、1つ以上のI/Oデバイス850に結合される。コンピュータ・システム800は、サーバ・システム、パーソナル・コンピュータ・システム、デスクトップ・コンピュータ、ラップトップ・コンピュータまたはノートブック・コンピュータ、メインフレーム・コンピュータ・システム、タブレット・コンピュータ、ハンドヘルド・コンピュータ、ワークステーション、ネットワーク・コンピュータ、携帯電話、音楽プレーヤ、またはパーソナル・データ・アシスタントなどの消費者デバイスを含むが、これらに限定されない、種々のタイプのデバイスのいずれであってもよい。
図8には、便宜上単一のコンピュータ・システム800が示されているが、システム800は、共に動作する2つ以上のコンピュータ・システムとして実装されてもよい。
【0060】
プロセッサ・サブシステム880は、1つ以上のプロセッサまたは処理ユニットを含んでもよい。コンピュータ・システム800の様々な実施形態において、プロセッサ・サブシステム880の複数のインスタンスを相互接続860に結合することができる。様々な実施形態では、プロセッサ・サブシステム880は(または880内の各プロセッサ・ユニットは)、キャッシュまたはオンボード・メモリの他の形態を含んでもよい。
【0061】
システム・メモリ820は、プロセッサ・サブシステム880によって実行可能なプログラム命令を格納することに使用可能であり、システム800に本明細書に記載される種々の動作を行わせる。システム・メモリ820は、ハード・ディスク・ストレージ、フロッピー・ディスク・ストレージ、リムーバブル・ディスク・ストレージ、フラッシュ・メモリ、ランダム・アクセス・メモリ(RAM-SRAM、EDO RAM、SDRAM、DDR SDRAM、RAMBUS RAMなど)、リード・オンリー・メモリ(PROM、EEPROMなど)などのような異なる物理メモリ・メディアを使用して実装されてもよい。コンピュータ・システム800内のメモリは、メモリ820のような一次記憶デバイスに限定されない。むしろ、コンピュータ・システム800は、プロセッサ・サブシステム880内のキャッシュ・メモリおよびI/Oデバイス850上の第2記憶デバイス(例えば、ハード・ドライブ、記憶アレイなど)のような他の形態の記憶デバイスを含んでもよい。いくつかの実施形態において、これらの他の形態の記憶デバイスはまた、プロセッサ・サブシステム880によって実行可能なプログラム命令を記憶してもよい。いくつかの実施形態では、実行時にウェブ・アプリケーション115、クライアント・プラットフォーム130、ウェブブラウザ140、および/またはクライアント・アプリケーション150を実装するプログラム命令は、システム・メモリ820内に含まれ/記憶されてもよい。
【0062】
I/Oインターフェース840は、様々な実施形態に従って、他のデバイスに結合し、他のデバイスと通信するように構成された様々なタイプのインターフェースのいずれであってもよい。一実施形態では、I/Oインターフェース840は、フロントサイドから1つ以上のバックサイドバスへのブリッジチップ(例えば、サウスブリッジ)である。I/Oインターフェース840は、1つ以上の対応するバスまたは他のインターフェースを介して1つ以上のI/Oデバイス850に結合されてもよい。I/Oデバイス850の例としては、記憶デバイス(ハード・ドライブ、光学ドライブ、リムーバブル・フラッシュ・ドライブ、記憶アレイ、SAN、またはそれらの関連コントローラ)、(例えば、ローカルまたはワイド・エリア・ネットワークへの)ネットワーク・インターフェースデバイス、または他のデバイス(例えば、グラフィックス、ユーザー・インターフェースデバイスなど)が挙げられる。一実施形態では、コンピュータ・システム800は、(例えば、Wi-Fi、Bluetooth、Ethernetなどを介して通信するように構成される)ネットワーク・インターフェースデバイス850を介してネットワークに結合される。
【0063】
出願の主題の実現は、以下の実施例1-20を含むが、これらに限定されない。
1. ウェブブラウザ内またはクライアント・プラットフォームにネイティブなクライアント・アプリケーション内で実行可能なウェブ・アプリケーションを提供する方法であって、前記ウェブ・ブラウザと前記クライアント・プラットフォームとは異なるフィーチャーセットをサポートし、
サーバ・コンピュータ・システムが、前記クライアント・アプリケーションのインスタンスに配信するために前記ウェブ・アプリケーションをホスティングすることであって、前記クライアント・アプリケーションは、前記ウェブ・アプリケーションが前記クライアント・プラットフォームによってサポートされている前記フィーチャーセットを起動することを可能にするモジュールセットを実装し、前記ウェブ・アプリケーションは、前記クライアント・アプリケーションのインスタンス内で実行されると、前記ウェブブラウザによってサポートされていない少なくとも1つのフィーチャーを起動することができる、ホスティングすることと、
前記サーバ・コンピュータ・システムが、前記クライアント・プラットフォームを実装するクライアント・デバイス上で実行されている前記クライアント・アプリケーションのインスタンスから、前記ウェブ・アプリケーションに対するリクエストを受信することと、
サーバ・コンピュータ・システムが、前記ウェブ・アプリケーションを前記クライアント・アプリケーションのインスタンスに送信して、前記ウェブ・アプリケーションを前記インスタンス内で実行させることであって、前記インスタンス内で前記ウェブ・アプリケーションを実行することにより、前記ウェブ・アプリケーションが、前記ウェブブラウザによってサポートされていない前記少なくとも1つのフィーチャーを起動することができる、実行することとを含む方法。
2. 前記ウェブブラウザは第2のクライアント・デバイス上で実行され、前記方法はさらに、
サーバ・コンピュータ・システムが、第2のクライアント・デバイス上で実行されている前記ウェブブラウザから、前記ウェブ・アプリケーションに対する第2のリクエストを受信することと、
サーバ・コンピュータ・システムが、前記ウェブ・アプリケーションを前記ウェブブラウザに送信し、前記ウェブ・アプリケーションを前記ウェブブラウザ内で実行させる、送信することであって、前記ウェブ・アプリケーションは、前記ウェブブラウザ内で実行されると、前記少なくとも1つのフィーチャーを起動することができ、送信することとを含む、
実施例1に記載の方法。
3. 前記第2のクライアント・デバイスは前記クライアント・デバイスである、実施例2に記載の方法。
4. 前記サーバ・コンピュータ・システムが、第2のクライアント・プラットフォームを実装する第2のクライアント・デバイス上で実行される第2のクライアント・アプリケーションの第2の特定インスタンスから、前記ウェブ・アプリケーションに対する第2のリクエストを受信することであって、前記第2のクライアント・プラットフォームは、前記ウェブ・ブラウザおよび前記クライアント・プラットフォームとは異なるフィーチャーセットをサポートする、受信することと、
サーバ・コンピュータ・システムが、前記ウェブ・アプリケーションを前記第2のクライアント・アプリケーションの第2のインスタンスに送信し、前記ウェブ・アプリケーションを前記第2のインスタンス内で実行させる、送信することであって、前記第2のインスタンス内で実行することにより、前記ウェブ・アプリケーションが、前記ウェブブラウザおよび前記クライアント・プラットフォームによってサポートされていない少なくとも1つのフィーチャーを起動することを可能にする、送信することとを含む、実施例1に記載の方法:
5. 前記第2のクライアント・プラットフォームは、前記クライアント・プラットフォームとは異なるオペレーティング・システムに対応する、実施例4に記載の方法。
6. サーバ・コンピュータ・システムが、前記クライアント・アプリケーションによって実装されたモジュールセットを特定するフィーチャー情報にアクセスすることと、
前記フィーチャー情報に対する第2のリクエストに応答して、サーバ・コンピュータ・システムが、前記フィーチャー情報を前記第2のリクエストに関連付けられたユーザに提示することとをさらに含む、実施例1に記載の方法。
7. サーバ・コンピュータ・システムが、前記ウェブ・アプリケーションのアップデートを受信することであって、前記ウェブ・アプリケーションが、前記ウェブブラウザではなく、前記クライアント・プラットフォームがサポートする追加のフィーチャーを起動することができるように、前記ウェブ・アプリケーションが更新される、実施例1に記載の方法。
8 サーバ・コンピュータ・システムが、前記クライアント・アプリケーションのインスタンスに配信するため第2のウェブ・アプリケーションをホスティングすることであって、前記第2のウェブ・アプリケーションは、前記ウェブ・アプリケーションとは異なるフィーチャーセットを起動することができる、ホスティングすることと、
前記第2のウェブ・アプリケーションに対する前記インスタンスからの第2のリクエストに応答して、前記サーバ・コンピュータが、前記インスタンスに前記第2のウェブ・アプリケーションを送信して、前記第2のウェブ・アプリケーションを前記インスタンス内で実行させる、送信することであって、前記第2のウェブ・アプリケーションを前記インスタンス内で実行することにより、前記第2のウェブ・アプリケーションが、前記ウェブ・アプリケーションによってサポートされていない1つ以上のフィーチャーを起動できるようにする、送信することをさらに含む、実施例1に記載の方法。
9. 前記ウェブ・アプリケーションは、前記ウェブブラウザ及び前記クライアント・プラットフォームによってサポートされるフィーチャーを含む複数のフィーチャーを起動することができ、前記ウェブ・アプリケーションは、前記ウェブブラウザ内又は前記クライアント・アプリケーション内で実行されると、前記ウェブ・アプリケーションによって起動することができる前記複数のフィーチャーのうちのフィーチャーを特定することができる、実施例1に記載の方法。
10. 前記クライアント・プラットフォームは、前記フィーチャーの複数のバージョンをサポートし、前記ウェブ・アプリケーションは、
前記ウェブ・アプリケーションが起動可能なバージョンと一致するバージョンに基づいて、前記複数のバージョンのうちのバージョンを識別することと、
前記バージョンのフィーチャーを起動することとを含む、実施例1に記載の方法。
11. コンピュータ・システムにより実行されると、前記コンピュータ・システムに、
ウェブブラウザまたはクライアント・プラットフォームにネイティブなクライアント・アプリケーションを含む複数の環境内で実行可能なウェブ・アプリケーションをホスティングすることと、
第1のクライアント・コンピュータ・システム上で実行されているウェブブラウザから、前記ウェブ・アプリケーションに対するリクエストを受信することであって、前記ウェブブラウザは、前記クライアント・アプリケーションによって実装されている第2のフィーチャーセットとは異なる第1のフィーチャーセットを実装する、受信することと、
前記ウェブ・アプリケーションを前記ウェブブラウザに送信して、前記ウェブ・アプリケーションを前記ウェブブラウザ内で実行させる、送信することであって、前記ウェブブラウザ内でのウェブ・アプリケーションの実行によって、前記ウェブ・アプリケーションが第1のフィーチャーセットを起動することができるようにする、送信することと、
前記クライアント・プラットフォームを実装する第2のクライアント・デバイス上で実行される前記クライアント・アプリケーションのインスタンスから、前記ウェブ・アプリケーションに対する第2のリクエストを受信することと、
前記クライアント・アプリケーションのインスタンスに前記ウェブ・アプリケーションを送信して、前記ウェブ・アプリケーションを前記インスタンス内で実行させる、送信することであって、前記インスタンス内でウェブ・アプリケーションを実行することで、前記ウェブ・アプリケーションが第2のフィーチャーセットを起動することができるようにする、送信することとを含む動作を実行させるプログラム命令を記憶した非一時的コンピュータ読取可能媒体。
12. 前記動作はさらに、
前記ウェブブラウザ内または前記クライアント・アプリケーション内で実行可能な第2のウェブ・アプリケーションのホストすることと、
前記インスタンスから前記第2のウェブ・アプリケーションに対する第3のリクエストを受信することと、
前記第2のウェブ・アプリケーションを前記インスタンスに送信して、前記第2のウェブ・アプリケーションを前記インスタンス内で実行させる、送信することであって、前記インスタンス内で前記第2のウェブ・アプリケーションを実行することにより、前記第2のウェブ・アプリケーションは、前記ウェブ・アプリケーションが起動できない少なくとも1つのフィーチャーを起動することができる、送信することをさらに含む、実施例11に記載の媒体。
13. 前記動作はさらに、
第2のクライアント・プラットフォームを実装する第3のクライアント・デバイス上で実行中の第2のクライアント・アプリケーションの第2のインスタンスから、前記ウェブ・アプリケーションに対する第3のリクエストを受信することであって、前記第2のクライアント・アプリケーションは、前記第1および第2のフィーチャーセットとは異なる第3のフィーチャーセットを実装する、受信することと、
前記第2のクライアント・アプリケーションの第2のインスタンスに前記ウェブ・アプリケーションを送信して、前記ウェブ・アプリケーションを前記第2のインスタンス内で実行させる、送信することであって、前記第2のインスタンス内で前記ウェブ・アプリケーションを実行することにより、前記ウェブ・アプリケーションが前記第3のフィーチャーセットを起動することができるようにする、送信することとを含む、実施例11に記載の媒体。
14. 前記動作はさらに、
クライアント・アプリケーションが実装する第2のフィーチャーセットを特定するフィーチャー情報にアクセスすることと、
フィーチャ情報に対する第3のリクエストに応答して、前記フィーチャ情報をユーザに提示することとを含む、実施例11に記載の媒体。
15. 前記動作はさらに、
前記ウェブ・アプリケーションに対する前記第2のリクエストを受信する前に、前記クライアント・アプリケーションを前記第2のクライアント・デバイスで実行するため前記第2のクライアント・デバイスに送信することを含む、実施例11に記載の媒体。
16. ウェブブラウザおよびクライアント・プラットフォームにネイティブなクライアント・アプリケーションで実行可能なウェブ・アプリケーションを実行する方法であって、前記ウェブ・ブラウザおよび前記クライアント・プラットフォームは異なるフィーチャーセットをサポートし、
前記クライアント・プラットフォームを実装するクライアント・デバイス上で実行中のクライアント・アプリケーションのインスタンスが、サーバ・コンピュータ・システムに、前記ウェブ・アプリケーションに対するリクエストを送信することであって、前記クライアント・アプリケーションは前記クライアント・プラットフォームによってサポートされているフィーチャーセットを前記ウェブ・アプリケーションが起動できるようにするモジュールセットを実装する、送信することと、
前記サーバ・コンピュータ・システムからの前記ウェブ・アプリケーションの受信に応答して、前記クライアント・アプリケーションのインスタンスが前記ウェブ・アプリケーションを実行することであって、
前記ウェブ・アプリケーションから、前記クライアント・プラットフォームによりサポートされているフィーチャーセットのうちのフィーチャーを起動するリクエストを受信することと、
前記ウェブ・アプリケーションに代わって、前記フィーチャーを起動することと、
起動結果を前記ウェブ・アプリケーションに返すこととを含む、実施例11に記載の媒体。
17. 前記フィーチャーを登録する少なくとも1つの要求を前記ウェブ・アプリケーションから受信することに応答して、前記クライアント・アプリケーションのインスタンスが前記インスタンスを登録することであって、前記ウェブ・アプリケーションが、前記ウェブ・アプリケーションに代わって前記フィーチャーを起動できるようにする、登録することを含む、実施例16に記載の方法。
18. 前記クライアント・アプリケーションのインスタンスが、第2のウェブ・アプリケーションに対するリクエストを送信することと、
前記第2のウェブ・アプリケーションの受信に応答して、前記クライアント・アプリケーションのインスタンスが前記第2のウェブ・アプリケーションを実行することであって、
前記第2のウェブ・アプリケーションから、前記クライアント・プラットフォームがサポートするフィーチャーセットのうちの第2のフィーチャーを起動するリクエストを受信することであって、前記第2のフィーチャーは、前記フィーチャーに含まれない少なくとも1つのフィーチャーを含む、受信することと、
前記第2のウェブ・アプリケーションに代わって、前記第2のフィーチャーを起動することと、
前記第2のウェブ・アプリケーションに、前記第2のフィーチャーの第2の起動結果を返すこととを含む、実行することを含む、実施例16に記載の方法。
19. 前記クライアント・アプリケーションは、前記フィーチャーセットのうちのフィーチャーの少なくとも2つの異なるバージョンをサポートする、実施例16に記載の方法。
20. 前記ウェブ・アプリケーションは、前記サーバ・コンピュータ・システムによってホストされるウェブ・ページである、実施例16に記載の方法。
【0064】
実施形態を上述したが、これらの実施形態は、フィーチャーに関してたとえ単一の実施形態が記載されている場合でも、本開示の範囲を制限することを意図するものではない。本開示において提供されるフィーチャーの実施例は、特に断らない限り、限定的ではなく例示的であることが意図されている。上記の説明は、本開示の利益を有する当業者に明らかなような代替、修正、および等価物をカバーすることを意図している。
【0065】
本開示の範囲は、本明細書に記載されている問題の一部または全部を緩和するか否かにかかわらず、本明細書に開示されている任意のフィーチャーまたはフィーチャーの組み合わせ、またはその任意の一般化を(明示的または黙示的のいずれであっても)含む。従って、本出願(又はその優先権を主張する出願)の審査において、このようなフィーチャーの組合せの手続中に、かかるフィーチャーの組み合わせにより新たなクレームを作成することができる。特に、添付の特許請求の範囲を参照すると、従属クレームのフィーチャーは、独立クレームのフィーチャーと組み合わせることができ、各独立クレームのフィーチャーは、添付の特許請求の範囲に列挙された組み合わせのみでなく、任意の適切な方法で組み合わせることができる。