(57)【要約】  様々な実施形態では、ローカルクライアントマシン上で使うインストール可能アプリケーションが、ウェブ上にリモートにあるアプリケーションキャッシュマニフェストファイルを利用して、更新し、インストール可能アプリケーションがローカルクライアントマシン上に展開されてからオフラインで利用できるようにすべき様々なリソースを画定できる。ウェブ上でマニフェストファイルのコンテンツが更新されるたびに、インストールされたアプリケーションは、自分のローカルアプリケーションキャッシュリソースを自動的に更新し、インストールされたアプリケーションにこれらのリソースをオフラインで使わせる。これは、アプリケーションの新しい更新版をインストールせずに、更新されるコンテンツを取得するロケーションへユーザがナビゲーションする負担なく、行われる。
2015513726.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータにより実施される方法であって、
ローカルコンピューティングデバイスにおける、ウェブブラウザ以外のアプリケーションのインストールを開始するステップと、
前記アプリケーションのインストールが開始されたインストール済みアプリケーションに関連するアプリケーションマニフェストに関連するリソースをダウンロードするステップと、
リモートの更新されたアプリケーションキャッシュマニフェストの存在を確認するステップと、
前記インストール済みアプリケーションに対して、更新されたリソースをダウンロードするステップと、
ダウンロードされたリソースを用いて前記インストール済みアプリケーションを実行するステップとを有する、方法。
【請求項２】
リソースをダウンロードするステップは、Ｗ３Ｃ  ＨＴＭＬ５アプリケーションキャッシュ実装を用いるステップを含む、請求項１に記載の方法。
【請求項３】
ダウンロードするステップは、アプリケーションマニフェスト中のＵＲＩにより指示されるアプリケーションキャッシュマニフェストファイルを用いるステップを含む、請求項１に記載の方法。
【請求項４】
前記リソースは、オンライン及びオフラインのシナリオで用いられるよう構成された、
請求項１に記載の方法。
【請求項５】
リソースをダウンロードするステップは、一または複数のマークアップ文書をダウンロードするステップを含む、
請求項１に記載の方法。
【請求項６】
リソースをダウンロードするステップは、個々のマークアップ文書をレンダリングするのに利用されるリソースをダウンロードするステップを含む、請求項１に記載の方法。
【請求項７】
前記インストール済みアプリケーションに関連するリソースをダウンロードするステップと、更新されたリソースをダウンロードするステップは、関連ユーザに前記リソースを取得しに一ロケーションにナビゲーションせずに、実行される、請求項１に記載の方法。
【請求項８】
一又は複数のコンピュータ読み取り可能媒体であって、実行されると：
アプリケーション展開プロセスであって：
関連するインストール可能アプリケーションにより利用されるリソースをダウンロードするのに利用されるアプリケーションマニフェストを含むインストール可能アプリケーションパッケージまたは関連リソースのセットを取得し、読み出し、
オンライン及びオフラインのシナリオで使用するためアプリケーションキャッシュにダウンロードされたリソースを格納するように構成されたアプリケーション展開プロセスと、
アプリケーション実行プロセスであって：
前記アプリケーションキャッシュを利用して、前記インストール済みアプリケーションにより利用されるリソースを読み出し、
リモートにある更新されたアプリケーションマニフェストをチェックし、
前記更新されたアプリケーションマニフェストを用いて関連リソースをダウンロードし、
前記アプリケーションキャッシュを前記ダウンロードされた関連リソースで更新し、
前記インストール済みアプリケーションの実行のために前記ダウンロードされた関連リソースを使用できるようにするように構成されたアプリケーション実行プロセスとを有する、
を有するシステムを実装するコンピュータ読み取り可能命令を化体した媒体。
【請求項９】
前記インストール済みアプリケーションは、ウェブブラウザ以外のアプリケーションを含む、
請求項８に記載の一または複数のコンピュータ読み取り可能記憶媒体。
【請求項１０】
前記アプリケーション展開プロセスとアプリケーション実行プロセスは、Ｗ３Ｃ  ＨＴＭＬ５アプリケーションキャッシュを利用するように構成された、
請求項８に記載の一または複数のコンピュータ読み取り可能記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
既存のコンピューティング環境では、一般的に、新しいコンテンツをオフラインで利用できるようになる前に、ユーザは自分のアプリケーションを更新しなければならない。すなわち、アプリケーションに更新版があれば、ユーザは、一般的に、その更新版について知り、リモートのアプリケーションストアに物理的にナビゲーションして、新しいコンテンツを使う前に、更新版を取得してインストールしなければならない。
【発明の概要】
【０００２】
本欄では、発明の詳細な説明で詳しく説明するコンセプトの一部を選んで、簡単に説明する。この要約は、請求項に記載した主題の主要な特徴や本質的な特徴を特定することを意図したものではない。
【０００３】
様々な実施形態では、ローカルクライアントマシン上で使うインストール可能アプリケーションが、ウェブ上にリモートにあるアプリケーションキャッシュマニフェストファイルを利用して、更新し、インストールされたアプリケーションがローカルクライアントマシン上に展開されてからオフラインで利用できるようにすべき様々なリソースを画定できる。インストールされたアプリケーションは、自分の環境で実行でき、ウェブブラウザに依存し、またはウェブブラウザにおいて実行されない、自己完結したアプリケーションであると考えることができる。ウェブ上でマニフェストファイルのコンテンツが更新されるたびに、インストールされたアプリケーションは、自分のローカルアプリケーションキャッシュリソースを自動的に更新し、インストールされたアプリケーションにこれらのリソースをオフラインで使わせる。これは、アプリケーションの新しい更新版をインストールせずに、更新されるコンテンツを取得するロケーションへユーザがナビゲーションする負担なく、行われる。
【図面の簡単な説明】
【０００４】
詳細な説明は添付した図面を参照して説明する。図中、参照数字の最も左の桁は、その参照数字が最初に現れる図面を指す。説明と図面の異なる箇所で同じ参照番号を用いるが、それは同様の又は同一のアイテムを示す。
【図１】ここに説明する様々な実施形態を実行するよう動作可能な、一実装例における環境を示す図である。
【図２】一または複数の実施形態による、インストールされたアプリケーションを利用できる一実装例を示す図である。
【図３】一または複数の実施形態によるプロセスの一例を示す図である。
【図４】一または複数の実施形態による方法のステップを説明するフロー図である。
【図５】図１を参照して説明するコンピューティングデバイスを含むシステムの一例を示す図である。
【図６】ここに説明する任意のタイプのコンピューティングデバイスとして実装できるデバイスの一例の様々なコンポーネントを示す図である。
【発明を実施するための形態】
【０００５】
概要
様々な実施形態では、ローカルクライアントマシン上で使うインストール可能アプリケーションが、ウェブ上にリモートにあるアプリケーションキャッシュマニフェストファイルを利用して、更新し、インストールされたアプリケーションがローカルクライアントマシン上に展開されてからオフラインで利用できるようにすべき様々なリソース、例えば画像、メディア、スクリプト、CSSスタイルシート、ＨＴＭＬなどを画定できる。インストールされたアプリケーションは、自分の環境で実行でき、ウェブブラウザに依存し、またはウェブブラウザにおいて実行されない、自己完結したアプリケーションであると考えることができる。この目的を達成するため、インストールされるアプリケーションは、本文書のコンテキストでは、ウェブブラウザではない。むしろ、インストールされるアプリケーションは、ＳｃａｌｅＦｏｒｍ，ＸＵＩ（Ｘｂｏｘ  ＵＩ），ＨＴＭＬ，ＸＡＭＬなどのマークアップベースのコンテンツを利用及びレバレッジできる。インストールされるアプリケーションは、一般的には、ＨＴＭＬその他のウェブ技術を利用するアプリケーション体験を対象として、ユーザが、自分がインストールしたアプリケーションとインターラクトするのに利用されるユーザインタフェースを含むユーザ体験を提供する。ウェブ上でマニフェストファイルのコンテンツが更新されるたびに、インストールされたアプリケーションは、自分のローカルアプリケーションキャッシュリソースを自動的に更新し、インストールされたアプリケーションにこれらのリソースをオフラインで使わせる。更新されるコンテンツのチェックは、展開時に、展開後同時に、または最初の実行時、または実行ごとに行うことができる。これは、アプリケーションの新しい更新版をインストールせずに、更新されるコンテンツを取得するロケーション（例えば、アプリケーションストア）へユーザがナビゲーションする負担なく、行われる。
【０００６】
以下の説明では、ここに説明する手法を利用できる環境の例をまず説明する。次に、上記の環境例やその他の環境で実行できる手順例を説明する。そのため、これら手順例の実行は上記環境例に限定されず、環境例は手順例の実行に限定されない。
【０００７】
環境例
図１は、一又は複数の実施形態による動作環境１００を示す。環境１００はコンピューティングデバイス１０２（「ローカルクライアントマシン」とも呼ぶ）を含む。コンピューティングデバイス１０２は、一または複数のプロセッサ１０４と、一または複数のコンピュータ読み取り可能記憶媒体１０６と、一または複数のアプリケーション１０８と、コンピュータ読み取り可能媒体上にあってプロセッサ１０４により実行可能なインストールされた一または複数のアプリケーション１１０とを有する。コンピューティングデバイス１０２は、限定ではなく例として、デスクトップコンピュータ、ポータブルコンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）等のハンドヘルドコンピュータ、携帯電話、テレビジョン、タブレットコンピュータなどの、任意の好適な計算装置として実施できる。コンピューティングデバイス１０２の一例を図５と図６に示して説明する。
【０００８】
アプリケーション１０８は、例えばウェブブラウザを含む任意の好適なタイプのアプリケーションを含む。ウェブブラウザはネットワーク１１２を介してナビゲートするように構成されている。ネットワーク１１２はインターネットとして例示するが、いろいろな構成を想定できる。例えば、ネットワーク１１２は、ワイドエリアネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、無線ネットワーク、公衆電話ネットワーク、イントラネットなどを含み得る。さらに、単一のネットワーク１１２を示したが、ネットワーク１１２は複数のネットワークを含むように構成することもできる。
【０００９】
例えば、ブラウザは、ネットワーク１１２を介してナビゲーションして、一または複数のウェブサーバ１１４から得られるコンテンツとインターラクトし、一または複数のウェブサーバ１１４にデータを送り、例えばダウンロードとアップロードを実行するように構成されている。ウェブサーバ１１４は、ネットワーク１１２を介してアクセス可能な一または複数のサービスを提供するように構成されていてもよい。かかるサービスの例には、電子メール、ウェブページ、写真共有サイト、ソーシャルネットワーク、コンテンツ共有サービス、メディアストリーミングサービスなどを含む。
【００１０】
また、一または複数のアプリケーション１０８は、例えば、直接及び／またはブラウザ１１０を通じて、ネットワーク１１２にアクセスするように構成されていてもよい。例えば、一または複数のアプリケーション１０８は、電子メールやインスタントメッセージなどのメッセージを送受信するように構成されていてもよい。その他の例では、アプリケーション１０８は、例えば、ソーシャルネットワークにアクセスし、天気情報を取得し、一または複数のウェブサービス１１４により実装されたブックストアサービスとインターラクトし、ワードプロセッシングをサポートし、スプレッドシート機能を提供し、創作をサポートし、プレゼンテーションを出力するように構成されていてもよい。
【００１１】
このように、アプリケーション１０８は、直接的または間接的なネットワーク１１２へのアクセスを含む、様々な機能を実行するように構成されていてもよい。例えば、アプリケーション１０８は、アプリケーション１０８によりローカルでレバレッジされ、他のコンピューティングデバイス上で実行されるアプリケーションと同期され得る構成設定（configuration  setting）その他のデータを含む。このようにして、これらの設定は複数のデバイスにより共有され得る。他の様々な場合も想定される。このように、コンピューティングデバイス１０２は、異なる様々なコンテンツ源からのコンテンツと、様々な方法でインターラクトできる。
【００１２】
インストールされたアプリケーション１１０は、ウェブブラウザとは別でもので独立しているが、ウェブに周期的にアクセスするアプリケーション機能を表し、オンラインシナリオとオフラインシナリオで利用できる。インストールされたアプリケーションは、一般的には、ローカルクライアントマシンがウェブアプリケーションのサイト・オブ・オリジン（site  of  origin；ＳＯＯ）として機能するとき、ローカルクライアントマシンから逃げる（run  off）。インストールされたアプリケーションは、ローカルクライアントマシンがウェブに接続された時に、更新可能である。本明細書のコンテキストでは、インストールされたアプリケーションは、自分の環境で実行でき、ウェブブラウザに依存し、またはウェブブラウザにおいて実行されない、自己完結したアプリケーションであると考えることができる。少なくとも幾つかの状況では、インストールされたアプリケーションは、コンピューティングデバイス１０２にアプリケーションとしてインストールされ、実行可能プログラムコードまたはソフトウェアをホストしている専用アプリケーション中でレンダリングされるウェブページであるとみなせる。あるタイプのインストールされたアプリケーションはメトロ（Ｍｅｔｒｏ）スタイルのアプリケーションまたはａｐｐである。かかるアプリケーションは、ＪａｖａＳｃｒｉｐｔ（登録商標）を用い、ＨＴＭＬ、ＣＳＳ、ＪａｖａＳｃｒｉｐｔその他を含むウェブの技術で構成できる。ウェブサイトとは異なり、ＪａｖａＳｃｒｉｐｔを用いるＭｅｔｒｏスタイルのａｐｐは、ウェブサーバからページごとに展開されるのではなく、実行前に、ソフトウェアパッケージとして、ユーザによりそのユーザのマシン上にローカルにインストールされる。
【００１３】
また、コンピューティングデバイス１０２は、インストール済みアプリケーションストレージ１１８を含む。インストール済みアプリケーションストレージ１１８は、ローカルアプリケーションキャッシュ１２０と更新モジュール１１６とを含む。これらを、リモートアプリケーションコンテンツに関して用いて、コンピューティングデバイス１０２がオンラインである時、ローカルアプリケーションキャッシュ１２０を自動的に更新することができる。アプリケーションキャッシュ１２０は、データを記憶するのに用いられ得る一または複数のキャッシュを表す。データとは、例えば、オーディオ、ビデオ、スタイルシート、スクリプト、画像、ハイパーティストマークアップ言語（ＨＴＭＬ）データなどの、ウェブサイトから取得されるリソースであり、インストール済みアプリケーション１１０に関して用いられるリソースの生成と表示に関わるものである。一または複数の実装では、対応するデータのソースが利用できない時、例えばデータを提供するウェブサーバ１１４がオフラインの時、ネットワーク接続が切れている時でも、アプリケーションキャッシュ１２０にアクセスしてもよい。このようにして、インストール済みアプリケーション１１０は、コンピューティングデバイス１０２にローカルに記憶されているコンテンツとリソースを、それがネットワーク接続を介して取得されたものであるかのように、利用でき、これによりシームレスなユーザ体験を提供できる。
【００１４】
一般的に、ここに説明する機能はどれも、ソフトウェア、ファームウェア、ハードウェア（例えば、固定的な論理回路）、またはこれらの組合せで実装できる。ここで用いる「モジュール」、「機能」及び「ロジック」との用語は、一般的に、ハードウェア、ソフトウェア、ファームウェア、ハードウェアまたはこれらの組み合わせを表す。ソフトウェア実装の場合、モジュール、機能、またはロジックは、プロセッサ（例えば、ＣＰＵ）により実行された時、タスクを実行するプログラムコードを表す。プログラムコードは、一または複数のコンピュータ読み取り可能メモリデバイスに格納できる。下記の手法の特徴は、プラットフォームに依存しない。すなわち、これらの手法は様々なプロセッサを有する様々な商業的コンピューティングプラットフォームで実装し得る。
【００１５】
例えば、コンピューティングデバイス１０２は、例えば、プロセッサ、機能ブロックなどのそのコンピューティングデバイス１０２のハードウェアまたは仮想マシンに動作を実行させるエンティティ（例えば、ソフトウェア）を含んでいてもよい。例えば、コンピューティングデバイス１０２は、コンピューティングデバイスに、より具体的にはコンピューティングデバイス１０２のオペレーティングシステム及び関連ハードウェアに動作を実行させる命令を保持するように構成されたコンピュータ読み取り可能媒体を含んでもよい。このように、命令は、動作を実行するようにオペレーティングシステム及び関連ハードウェアを設定するように機能し、このようにオペレーティングシステム及び関連ハードウェアが機能を実行するように変換する。命令は、異なる様々な構成により、コンピュータ読み取り可能媒体によりコンピューティングデバイス１０２に提供される。
【００１６】
コンピュータ読み取り可能媒体のかかる一構成は、信号搬送媒体であり、ネットワークなどを介してコンピューティングデバイスに命令を（例えば、搬送波のように）伝送するように構成される。また、コンピュータ読み取り可能媒体は、コンピュータ読み取り可能記憶媒体として構成でき、信号搬送媒体ではない。コンピュータ読み取り可能記憶媒体の例には、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、光ディスク、フラッシュメモリ、ハードディスクメモリ、及びその他のメモリデバイスであって磁気、光、その他の技術を用いて命令その他のデータを記憶するものが含まれる。
【００１７】
ここに説明する手法が動作し得る環境例を説明したので、ここに説明する原理を利用できる幾つかの実施形態を説明する。
【００１８】
実施形態
図２は、以下の説明に関連して、図１の幾つかのコンポーネントを参照番号２００で示す。
【００１９】
一または複数の実施形態では、インストール済みアプリケーション１１０は、アプリケーションキャッシュ１１５を利用し、より具体的には、ウェブ上にあり、ネットワーク１１２を介してアクセス可能であるアプリケーションキャッシュマニフェストファイル１１５ａを利用して、インストール済みアプリケーションがオンラインで、及びオフラインでコンテンツを表示するのに用いる一セットのリソースを画定する。一または複数の実施形態では、これらのリソースは、アプリケーションが用いられる時に、またはアプリケーションマニフェストがサーバ上で更新されるときに最初にダウンロードされ、後で使用するため、アプリケーションキャッシュ１２０にローカルにキャッシュされる。ある実装では、アプリケーションキャッシュ１１５は、Ｗ３Ｃ  ＨＴＭＬ５  Ａｐｐｌｉｃａｔｉｏｎ  Ｃａｃｈｅに準拠して実装される。しかし、言うまでもなく、本発明の主題の精神と範囲から逸脱することなく、他のキャッシュ実装を利用できる。
【００２０】
この例では、インストール可能アプリケーション１１０がインストールされ、リソースがダウンロードされキャッシュされると、次にインストールされたアプリケーションが使われ、リソースを使いたいと思うと、マニフェストファイル中の指定されたリソースが、コンピューティングデバイス１０２上のアプリケーションキャッシュ１２０からサービスされ、オンライン接続されていれば、更新モジュール１１６が、新しいリソースにアクセスして読み出すためにマニフェストファイル１１５ａが更新されたかチェックする。
【００２１】
例えば、後で、インストール済みアプリケーション１１０とマニフェストファイル１１５ａにより使用されるリソースを開発者が更新した時、インストール済みアプリケーション１１０は、更新モジュール１１６により、インストール後の最初の実行時にすぐ使う、または次に、アプリケーションが起動または再ロードされた時に、これらのリソースをダウンロードする。その後、エンドユーザがインストール済みアプリケーションにアクセスした時、アプリケーションキャッシュ１２０からの新しいリソースが使われる。これにより、インストール済みアプリケーション１１０は、アプリケーションを更新しなくても、オフラインで、新しいリソース（例えば、画像、サウンド、ビデオなど）を表示し操作できる。さらに、ユーザは、インストール済みアプリケーションを更新しなければならないことから開放され、幾つかの場合には、そのプロセスに関わらなくてすむ。
【００２２】
また、少なくとも幾つかの実施形態では、インストール可能アプリケーションのインストール中に、アプリケーションキャッシュマニフェストファイル１１５ａは、最初のアプリケーション実行時に処理される、ウェブからのコンテンツのダウンロードを可能にするメカニズムとして機能できる。これにより、開発者は、アプリケーションキャッシュマニフェストファイル１１５ａを、自分のインストール可能アプリケーションのあるタイプの設定ツールとして使える。
【００２３】
ここで図３を参照して実装例を考える。図３は、参照番号３００で、一または複数の実施形態によるプロセス例を示す。
【００２４】
この例では、２つの別々のしかし関連したプロセスがある。アプリケーション展開プロセス３０２とアプリケーション実行プロセス３０４である。これらのプロセスは、コンピュータ読み取り可能記憶媒体などの、幾つかのタイプのコンピュータ読み取り可能媒体上にあるソフトウェアで実装できる。図示し説明する例では、各インストール可能アプリケーションは、対応するアプリケーションパッケージ３０６を有する。アプリケーションパッケージ３０６は、アプリケーションマニフェスト３０８と、インストール可能アプリケーションを含むウェブページ３１０などのマークラップ文書への参照とを含む。ウェブアプリケーションマニフェスト３０８は、例えば、リモートアプリケーションキャッシュマニフェストファイル１１５ａ（図１）のロケーションを指すＵＲＬなどの、リソース識別子を含むがこれに限定されない。ウェブページ３１０への参照は、インストール可能アプリケーションを含む対応ウェブページ（例えば、リソース）のそれぞれのロケーションを含む。
【００２５】
アプリケーションマニフェスト３０８中のリソース識別子により参照されるアプリケーションキャッシュマニフェストファイルは、アプリケーション展開プロセス３０２中に、初めてインストールされるすべてのリソースを読み出すのに利用される。したがって、「１」で示したように、展開プロセスにおいて、コンピューティングデバイスは、アプリケーションパッケージ３０６を取得し読み込む。「２」で示したように、アプリケーションマニフェスト３０８が読み込まれ、インストール可能アプリケーションにより利用されるすべてのリソースまたはウェブページをプリフェッチまたはダウンロードするために利用される。「３」で示したように、これらのリソースは、アプリケーションキャッシュ１２０に記憶される。次に説明するように、一旦アプリケーションキャッシュ１２０に記憶されると、アプリケーション実行プロセス３０４において、インストール可能またはインストール済みアプリケーションを、オンライン及びオフラインのシナリオで利用できる。
【００２６】
「４」で示すように、アプリケーション実行プロセス３０４において、インストール済みアプリケーションは、アプリケーションキャッシュ１２０を利用して、インストール済みアプリケーションにより利用されるローカルにキャッシュされたすべてのリソースを読み出す。また、「６」で示すように、ネットワーク接続がある場合、アプリケーション実行プロセス３０４は、更新済みアプリケーションマニフェスト３０８があるかチェックする。これは、例えば、ローカルアプリケーションキャッシュマニフェストファイルに関連するタイムスタンプ、またはアプリケーションキャッシュの内容の変化をチェックして、リモートに保持されたリモートアプリケーションキャッシュマニフェストファイル１１５ａ（図１）の値と同じか確認することにより行える。リモートアプリケーションキャッシュマニフェストファイルの更新バージョンがあれば、「６」で示したように、アプリケーション実行プロセス３０４は、更新バージョンをダウンロードして、関連リソースをダウンロードして、「４」で示したように、アプリケーションキャッシュ１２０に新しいバージョンを生成するために用いることができる。これらの新たに取得されたリソースは、インストール済みアプリケーションをさらに実行するのに用いることができる。
【００２７】
言うまでもなく、更新されたコンテンツのダウンロードは、個別リソースの粒度で行い得る。個別リソースは、例えば少し例を挙げれば、個別のウェブページ内のウェブページまたはリソース全体を含む。このように、更新されたコンテンツのダウンロードは、完全に新しいアプリケーションパッケージをダウンロードしなくてもよくなるように、行い得る。これにより、ネットワーク帯域幅の節約に役立ち、コンテンツのローカルな受信者にとって、例えば携帯電話キャリアにより課金される帯域幅使用量の節約となり、サーバ運営者にとって、出力コストの節約となる。
【００２８】
少なくとも幾つかの実施形態において、アプリケーション実行プロセス３０４により、インストール済みアプリケーションに対して、更新プロセスがいつ完了するか知らせるメッセージが送られる。少なくとも幾つかの実施形態において、アプリケーションは、ユーザに、この新しい情報を通知し、新たに更新されたキャッシュ中の新しいコード及びユーザインタフェース要素に切り替えることができる。切り替えが完了すると、インストール済みアプリケーションは、ダウンロードされた新しいリソースを自動的に用いることができる。これにより、少なくとも幾つかの実施形態において、ユーザは、リモートロケーションに物理的にナビゲーションしてアプリケーションストアなどを介して対応アプリケーションを更新しなくても、インストール済みアプリケーションとそのリソースの最新バージョンとインターラクトできる。すなわち、ユーザは、更新プロセスにまったく関与する必要がない。むしろ、更新プロセスは裏で自動的に行われ、多くの場合、新しくダウンロードされた、更新されたリソース、またはユーザインタフェースやユーザ機能の知覚可能要素が変わったことを通知されるまで、ユーザに気づかれない。これにより、インストール済みアプリケーションは、最新のコンテンツにアクセスでき、かかるコンテンツをオフラインシナリオで利用できるようにすることにより、ウェブサイトにより近い振る舞いをできる。
【００２９】
上記の通り、ダウンロードできるタイプのリソースに関して、それには、限定ではなく例示として、好適なタイプの媒体（例えば、オーディオビジュアルファイル）その他のリソースであってインストール済みアプリケーションにより利用されるものを含む。少なくとも幾つかの実施形態では、ダウンロードされるこれらのタイプのリソースは、限定ではなく例示として、セキュリティなどの様々な理由により、限定され得る。例えば、ＪａｖａＳｃｒｉｐｔなどの実行可能スクリプトを含むリソースは、必ずしもダウンロードされなくてもよい。
【００３０】
上記の通り実施形態の例を検討したので、ここで、一または複数の実施形態による方法の例を検討する。
【００３１】
方法例
図４は、一または複数の実施形態による方法のステップを説明するフロー図である。本方法は、任意の好適なハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせに関連して実施できる。少なくとも幾つかの実施形態では、本方法は、コンピュータ読み取り可能記憶媒体に幾つかの形式で記憶されたソフトウェアで実装される。
【００３２】
ステップ４００において、アプリケーションのインストールを開始する。このステップは任意の好適な方法で実行してもよい。例えば、ユーザは、アプリケーションに関連するウェブサイトにナビゲーションし、「インストール」リンクをクリックすることにより、アプリケーションインストールプロセスを開始する。代替的にまたは追加的に、アプリケーションはアプリケーションストアからインストールすることができる。図示し説明する実施形態では、アプリケーションがインストールされる時、リモートアプリケーションキャッシュ、例えばアプリケーションキャッシュ１１５（図１）がアクセスされ、アプリケーションキャッシュマニフェストが利用され、ダウンロードされる関連リソースが確認され、リソースがオンラインとオフラインの両方のシナリオで利用できるようにする。したがって、アプリケーションキャッシュマニフェストにアクセスし、ステップ４０２において、インストール済みアプリケーションに関連するリソースをダウンロードする。リソースをダウンロードすることにより、インストール済みアプリケーションは、インストール手順後、すぐにオフラインで利用可能になる。少なくとも幾つかの実施形態において、このステップは、標準のＷ３Ｃ  ＨＴＭＬ５  Ａｐｐｌｉｃａｔｉｏｎ  Ｃａｃｈｅ実装を用いることにより、実行できる。具体的に、アプリケーションキャッシュマニフェスト内に、ＨＴＭＬ５アプリケーションキャッシュマニフェストのＵＲＩを含むセクションがある。これは、図３において、一番上のＨＴＭＬ文に示した。開発において、インストールメカニズムは、このセクションを探し、ＨＴＭＬ５アプリケーションキャッシュマニフェストの内容を用いてすべてのリソースにプリフェッチする。インストールメカニズムは、上記の通り、ローカルアプリケーションキャッシュストレージを生成し、これらのリソースをこのストレージに格納する。あるいは、幾つかの実施形態では、展開メカニズムに、インストールしたアプリケーションの開始ページからＨＴＭＬ５アプリケーションキャッシュＵＲＩを読み出して、図３の一番下のＨＴＭＬ文に示したように、同じプロセスを行う。
【００３３】
ステップ４０４において、インストール済みアプリケーションを実行する。インストール済みアプリケーションは、実行されると、ローカルアプリケーションキャッシュをレバレッジして、インストール済みアプリケーションにより利用されるリソースをすべて読み出す。また、ネットワーク接続がある場合、ステップ４０６において、更新されたアプリケーションキャッシュマニフェストがあることを確認する。ステップ４０８において、更新されたマニフェストがなければ、ステップ４１０において、前にダウンロードしたローカルリソースを用いて、インストール済みアプリケーションを実行する。一方、更新されたマニフェストがあれば、ステップ４１２において、アプリケーションを実行中に、更新されたリソースをダウンロードする。少なくとも幾つかの実施形態では、このステップは、ＨＴＭＬ５アプリケーションキャッシュ機能を用いて、ＨＴＭＬタグ属性中のＵＲＩにより指示されたマニフェストコンテンツが修正されているかチェックする。ＨＴＭＬタグ属性の例は前述した。
【００３４】
ステップ４１４において、ダウンロードしたリソースを用いて、インストール済みアプリケーションをする。一または複数の実施形態では、これは、限定ではなく例示として、アプリケーションキャッシュの新しいバージョンの生成と、インストール済みアプリケーションにいつプロセスが完了するか通知するメッセージの送信とを含み得る。その後、少なくとも幾つかの実施形態では、アプリケーションはユーザにこの新しい情報を通知し、リソースに切り替える。切り替えが完了すると、ユーザは、インストール済みアプリケーション中の新しいリソースを自動的に用いることができる。これにより、ユーザは、上記の通り、その体験を少しも失わずに、インストール済みアプリケーションをオンラインまたはオフラインで実行できる。さらに、上記の通り、このプロセスは、ユーザに、アプリケーションストアから更新版をインストールするよう頼まなくても、実行できる。これにより、インストール済みアプリケーションが、オンラインまたはオフラインのシナリオで使える最新コンテンツにアクセスできるようにして、よりウェブサイトのように振る舞うことができる。
【００３５】
一または複数の実施形態による方法の例を検討したので、ここで、上記の実施形態を実装するのに利用できるシステム及びデバイスの例を検討する。
【００３６】
システム及び装置の例
図５は、図１を参照して説明するコンピューティングデバイス１０２を含むシステム５００の一例を示す図である。例示のシステム５００により、パーソナルコンピュータ（ＰＣ）、テレビジョン装置、及び／またはモバイル装置上でアプリケーションを実行した時に、シームレスなユーザ体験をできるユビキタス環境が可能となる。サービスとアプリケーションは、アプリケーションの利用、ビデオゲームのプレイ、ビデオの視聴などの際、一装置から次の装置に移行する時、共通のユーザ体験のために３つの環境すべてでほぼ同様に実行される。
【００３７】
システム例５００において、複数の装置は中央コンピューティングデバイスにより相互接続されている。中央コンピューティング装置は複数の装置に対してローカルであっても、複数の装置からリモートに配置されていてもよい。一実施形態では、中央コンピューティング装置は、ネットワーク、インターネット、またはその他のデータ通信リンクにより複数の装置に接続された一または複数のサーバコンピュータのクラウドであり得る。一実施形態では、この相互接続アーキテクチャにより複数装置にまたがる機能は、その複数装置のユーザに共通かつシームレスの体験を提供できる。複数のデバイスのそれぞれは、異なる物理的要求と能力を有し、中央コンピューティングデバイスは、そのデバイスに、そのデバイスに合わせてあり、かつすべての装置に共通の体験を配信できる。一実施形態では、ターゲット装置のクラスが生成され、体験は一般的な装置のクラスに合わせられる。装置のクラスはその装置の物理的特徴、使用のタイプ、その他の共通の特徴により確定できる。
【００３８】
様々な実施形態において、コンピューティング装置１０２は、コンピュータ５０２、モバイル５０４及びテレビジョン５０６などの様々な異なる構成を使うものと仮定してもよい。これらの構成はそれぞれ、概して異なる構成と機能を有し、そのためコンピューティング装置１０２は、一または複数の異なる装置クラスにより構成され得る。例えば、コンピューティング装置１０２は、パーソナルコンピュータ、デスクトップコンピュータ、マルチスクリーンコンピュータ、ラップトップコンピュータ、ネットブックなどを含むコンピュータの装置クラス５０２として実施できる。これらの異なる構成のそれぞれは、上記のように、アプリケーション１０８、インストール済みアプリケーション１１０、ＨＴＭＬレンダラ１１１、更新モジュール１１６及びアプリケーションキャッシュ１２０を含めて説明したように、ここに説明した手法を利用できる。図示して説明した実施形態では、アプリケーション１０８とインストール済みアプリケーション１１０は、ＨＴＭＬレンダラ１１１の独立したホストである。
【００３９】
コンピューティング装置１０２は、携帯電話、携帯音楽プレーヤ、携帯ゲーム装置、タブレットコンピュータ、マルチスクリーンコンピュータなどのモバイル装置を含むモバイル装置クラス５０４として実施することもできる。コンピューティング装置１０２は、気軽な視聴環境で一般的には大きなスクリーンを有しまたは接続された装置を含むテレビジョン装置クラス５０６として実施してもよい。これらの装置は、テレビジョン、セットトップボックス、ゲームコンソールなどを含む。ここに説明した手法は、コンピューティング装置１０２のこれらの様々な構成によりサポートされ得るが、手法で説明する具体的な例には限定されない。
【００４０】
クラウド５０８は、コンテンツサービス５１２のプラットフォーム５１０を含む及び／または表す。プラットフォーム５１０は、基礎となるハードウェアの機能（例えば、サーバ）とクラウド５０８のソフトウェアリソースを抽象したものである。コンテンツサービス５１２は、コンピュータ処理がコンピューティング装置１０２とは離れたところにあるサーバ上で実行されている間に利用できるアプリケーション及び／またはデータを含み得る。コンテンツサービス５１２は、インターネット及び／または加入者ネットワーク、例えばセルらネットワークやＷｉＦｉネットワークを介してサービスとして提供できる。
【００４１】
プラットフォーム５１０は、コンピューティング装置１０２を他のコンピューティング装置と接続するリソースと機能を抽象化している。また、プラットフォーム５１０は、リソースのスケーリングを抽象するよう機能し、プラットフォーム５１０を介して実現されるコンテンツサービス５１２へのデマンドに対応するスケールのレベルを提供する。したがって、相互接続されたデバイスの実施形態では、ここに説明した機能の実装は、システム５００を通して配信できる。例えば、これらの機能は、部分的にはコンピューティング装置１０２に実装され、またクラウド５１０の機能を抽象したプラットフォーム５０８を介して実装され得る。
【００４２】
図６は、ここに説明する手法の実施形態を実装する、図１、２及び５を参照して説明した任意のタイプのコンピュータデバイスとして実装できるデバイス例６００の様々なコンポーネントを示す。デバイス６００は、デバイスデータ６０２（例えば、受信データ、受信されるデータ、ブロードキャストされる予定のデータ、データのデータパケットなど）の有線及び／または無線通信を可能にする通信デバイス６０４を含む。デバイスデータ６０４その他のデバイスコンテンツは、デバイスの設定、デバイスに格納されたメディアコンテンツ、及び／またはデバイスのユーザに関連する情報を含み得る。デバイス６００に格納されたメディアコンテンツは、任意のタイプのオーディオ、ビデオ、及び／または画像データを含み得る。デバイス６００は、ユーザ選択可能入力、メッセージ、音楽、テレビジョンメディアコンテンツ、録画されたビデオコンテンツ、及び他の任意のタイプのオーディオ、ビデオ、及び／または任意のコンテンツ源及び／またはデータ源から受信した画像データなどの任意のタイプのデータ、メディアコンテンツ、及び／または入力を受信できる一または複数のデータ入力６０６を含む。
【００４３】
また、デバイス６００は、シリアル及び／またはパラレルインタフェース、無線インタフェース、任意のタイプのネットワークインタフェース、モデム、及び他の任意のタイプの通信インタフェースのうちの一または複数として実装できる通信インタフェース６０８を含む。通信インタフェース６０８は、他のエレクトロニクス、コンピューティング、及び通信デバイスがデバイス６００とデータを通信する、デバイス６００と通信ネットワークとの間の接続及び／または通信リンクを提供する。
【００４４】
デバイス６００は、様々なコンピュータ実行可能または読み取り可能命令を処理し、デバイス６００の動作を制御し、上記の手法の実施形態を実施する（例えば、マイクロプロセッサ、コントローラなどの）一または複数のプロセッサ６１０を含む。代替的にまたは追加的に、デバイス６００は、６１２で総称的に示した処理及び制御回路と共に実装できるハードウェア、ファームウェア、または固定ロジック回路のうちの一つまたは組み合わせで実装できる。図示していないが、デバイス６００は、デバイス内の様々なコンポーネントを結合するシステムバスまたはデータ転送システムを含み得る。システムバスは、任意のバスアーキテクチャを利用するメモリバス、メモリコントローラ、ペリフェラルバス、ユニバーサルシリアルバス、及び／またはプロセッサまたはローカルバスなど、異なるバス構造のうちの一つまたはその組み合わせを含み得る。
【００４５】
また、デバイス６００は、一または複数のメモリコンポーネントなどのコンピュータ読み取り可能媒体６１４を含む。その例には、ランダムアクセスメモリ（ＲＡＭ）、不揮発性メモリ（例えば、一又は複数のリードオンリメモリ（ＲＯＭ）、フラッシュメモリ、ＥＰＲＯＭ、ＥＥＰＲＯＭなど）が含まれる。ディスクストレージデバイスは、ハードディスクドライブ、記録可能及び／またはリライタブルコンパクトディスク（ＣＤ）、任意のタイプのデジタルバーサタイルディスク（ＤＶＤ）などの任意のタイプの磁気または光記憶デバイスとして実施できる。また、デバイス６００は、大規模記憶媒体デバイス６１６を含み得る。
【００４６】
コンピュータ読み取り可能媒体６１４は、デバイスデータ６０４及び様々なデバイスアプリケーション６１８及びデバイス６００の動作態様に関連する他のタイプの情報及び／またはデータを記憶するデータ記憶メカニズムを提供する。例えば、オペレーティングシステム６２０は、コンピュータ読み取り可能媒体６１４でコンピュータアプリケーションとして維持でき、プロセッサ６１０上で実行できる。デバイスアプリケーション６１８は、デバイスマネージャ（例えば、制御アプリケーション、ソフトウェアアプリケーション、信号処理及び制御モジュール、あるデバイスに対してネイティブなコード、あるデバイスのハードウェア抽象化レイヤなど）を含み得る。また、デバイスアプリケーション６１８は、ここに説明する手法の実施形態を実装する任意のシステムコンポーネントまたはモジュールを含む。この例では、デバイスアプリケーション６１８は、ソフトウェアモジュール及び／またはコンピュータアプリケーションとして示されたインタフェースアプリケーション６２２と入出力モジュール６２４を含む。入出力モジュール６２４は、タッチスクリーン、トラックパッド、カメラ、マイクロホンなど、入力をキャプチャするように構成されたデバイスで、インタフェースを提供するのに用いられるソフトウェアを表す。代替的にまたは追加的に、インタフェースアプリケーション６２２と入出力モジュール６２４は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組み合わせとして実装できる。また、入出力モジュール６２４は、それぞれビジュアル入力とオーディオ入力をキャプチャするように構成されたデバイスなど、複数の入力デバイスをサポートしてもよい。
【００４７】
また、デバイス６００は、オーディオシステム６２６にオーディオデータを提供する、及び／またはディスプレイシステム６２８にビデオデータを提供するオーディオ及び／またはビデオ入出力システム６３０を含む。オーディオシステム６２８及び／またはディスプレイシステム６３０は、オーディオ、ビデオ及び画像データを処理、表示、及び／またはレンダリングする任意のデバイスを含み得る。ビデオ信号とオーディオ信号は、デバイス６００からオーディオデバイス及び／またはディスプレイデバイスに、ＲＦ（無線周波数）リンク、Ｓビデオリンク、コンポジットビデオリンク、コンポーネントビデオリンク、ＤＶＩ（デジタルビデオインタフェース）、アナログオーディオ接続、またはその他の同様な通信リンクを介して通信できる。一実施形態では、オーディオシステム６２８及び／またはディスプレイシステム６３０は、デバイス６００の外部コンポーネントとして実装される。あるいは、オーディオシステム６２８及び／またはディスプレイシステム６３０は、デバイス６００と一体のコンポーネントとして実装される。
【００４８】
結論
様々な実施形態では、ローカルクライアントマシン上で使うインストール済みアプリケーションが、ウェブ上にリモートにあるアプリケーションキャッシュマニフェストファイルを利用して、更新し、インストールされたアプリケーションがローカルクライアントマシン上に展開されてからオフラインで利用できるようにすべき様々なリソースを画定できる。ウェブ上でマニフェストファイルのコンテンツが更新されるたびに、インストールされたアプリケーションは、自分のローカルアプリケーションキャッシュリソースを自動的に更新し、インストールされたアプリケーションにこれらのリソースをオフラインで使わせる。これは、アプリケーションの新しい更新版をインストールせずに、更新されるコンテンツを取得するロケーションへユーザがナビゲーションする負担なく、行われる。
【００４９】
本発明を個別の構造的特徴及び／又は方法動作を用いて説明したが、言うまでもなく、添付した特許請求の範囲に規定する発明は、上記の特定の特徴や動作には必ずしも限定されない。むしろ、具体的な特徴や動作は、請求した発明を実施する形式例として開示したものである。
【図１】
2015513726.tif 000003
【図２】
2015513726.tif 000004
【図３】
2015513726.tif 000005
【図４】
2015513726.tif 000006
【図５】
2015513726.tif 000007
【図６】
2015513726.tif 000008
【国際調査報告】
2015513726.tif 000009
2015513726.tif 000010