(57)【要約】  本開示の実装は、ソフトウェアアプリケーションの起動時間を短縮するための方法、システム、および物品を対象とする。コンピュータ実装方法の例にはクライエントデバイスでソフトウェアアプリケーションを開始すること、ソフトウェアアプリケーションの動作可能なバージョンを与えるように構成されたデータの初期部分をクライエントデバイスにダウンロードすること、クライエントデバイスでソフトウェアアプリケーションの動作可能なバージョンを提供すること、ソフトウェアアプリケーションのコンプリートバージョンを与えるように構成されたデータの残りの部分をクライエントデバイスにダウンロードすること、および、クライエントデバイスでソフトウェアアプリケーションのコンプリートバージョンを提供することを含むことができる。
2020514928.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータで実施される方法であって、
クライエントデバイス上でソフトウェアアプリケーションを開始すること、
前記ソフトウェアアプリケーションの動作可能なバージョンを与えるように構成されたデータの初期部分を前記クライエントデバイスにダウンロードすること、
前記クライエントデバイスで前記ソフトウェアアプリケーションの前記動作可能なバージョンを提供すること、
前記ソフトウェアアプリケーションのコンプリートバージョンを与えるように構成されたデータの残りの部分を前記クライエントデバイスにダウンロードすること、および、
前記クライエントデバイスで前記ソフトウェアアプリケーションの前記コンプリートバージョンを提供することを備える、方法。
【請求項２】
前記ソフトウェアアプリケーションを開始することは、
コンテンツ配信ネットワークからマニフェストファイルを要求することを含み、前記マニフェストファイルは、前記データの初期部分および前記データの残りの部分を特定することを含む、請求項１に記載の方法。
【請求項３】
前記データの初期部分は、前記ソフトウェアアプリケーションのための中間メタデータを含む、請求項１に記載の方法。
【請求項４】
前記中間メタデータは、ユーザインタフェースレイアウト、画像の寸法、メッシュの寸法、アニメーションの長さ、位置データ、および空間データのうちの少なくとも１つを含む、請求項３に記載の方法。
【請求項５】
前記ソフトウェアアプリケーションの前記動作可能なバージョンは、前記ソフトウェアアプリケーションの前記コンプリートバージョンから提供される、画像、グラフィカル要素、アニメーション、ビデオ、またはサウンドの少なくとも１つのプリミティブレンダリングを含む、請求項１に記載の方法。
【請求項６】
前記動作可能なバージョンおよび前記コンプリートバージョンは、同一の機能を含む、請求項１に記載の方法。
【請求項７】
前記動作可能なバージョンは、グラフィック品質および音質のうちの少なくとも１つを除いて、前記コンプリートバージョンと同一である、請求項１に記載の方法。
【請求項８】
データの前記残りの部分をダウンロードすることは、ユーザが前記動作可能なバージョンと対話することを可能にすることを含む、請求項１に記載の方法。
【請求項９】
データの前記残りの部分をダウンロードすることは、
前記ソフトウェアアプリケーションの現在の状態を決定すること、および、
現在の状態の決定に基づいて、データの前記残りの部分の第１のサブセットのダウンロードを、データの前記残りの部分の第２のサブセットのダウンロードよりも優先することを含む、請求項１に記載の方法。
【請求項１０】
データの前記残りの部分は、画像データおよび３Ｄオブジェクトデータのうちの少なくとも１つを含む、請求項１に記載の方法。
【請求項１１】
システムであって、
動作を実行するようにプログラムされた１つまたは複数のコンピュータプロセッサを含み、前記動作は、
クライエントデバイス上でソフトウェアアプリケーションを開始すること、
前記ソフトウェアアプリケーションの動作可能なバージョンを与えるように構成されたデータの初期部分を前記クライエントデバイスにダウンロードすること、
前記クライエントデバイスで前記ソフトウェアアプリケーションの前記動作可能なバージョンを提供すること、
前記ソフトウェアアプリケーションのコンプリートバージョンを与えるように構成されたデータの残りの部分を前記クライエントデバイスにダウンロードすること、および、
前記クライエントデバイスで前記ソフトウェアアプリケーションの前記コンプリートバージョンを提供することを備える、システム。
【請求項１２】
前記ソフトウェアアプリケーションを開始することは、
コンテンツ配信ネットワークからマニフェストファイルを要求することを含み、前記マニフェストファイルは、前記データの初期部分および前記データの残りの部分を特定することを含む、請求項１１に記載のシステム。
【請求項１３】
前記データの初期部分は、前記ソフトウェアアプリケーションのための中間メタデータを含む、請求項１１に記載のシステム。
【請求項１４】
前記ソフトウェアアプリケーションの前記動作可能なバージョンは、前記ソフトウェアアプリケーションの前記コンプリートバージョンから提供される、画像、グラフィカル要素、アニメーション、ビデオ、またはサウンドの少なくとも１つのプリミティブレンダリングを含む、請求項１１に記載のシステム。
【請求項１５】
前記動作可能なバージョンおよび前記コンプリートバージョンは、同一の機能を含む、請求項１１に記載のシステム。
【請求項１６】
前記動作可能なバージョンは、グラフィック品質および音質のうちの少なくとも１つを除いて、前記コンプリートバージョンと同一である、請求項１１に記載のシステム。
【請求項１７】
データの前記残りの部分をダウンロードすることは、ユーザが前記動作可能なバージョンと対話することを可能にすることを含む、請求項１１に記載のシステム。
【請求項１８】
データの前記残りの部分をダウンロードすることは、
前記ソフトウェアアプリケーションの現在の状態を決定すること、および、
現在の状態の決定に基づいて、データの前記残りの部分の第１のサブセットのダウンロードを、データの前記残りの部分の第２のサブセットのダウンロードよりも優先することを含む、請求項１１に記載のシステム。
【請求項１９】
データの前記残りの部分は、画像データおよび３Ｄオブジェクトデータのうちの少なくとも１つを含む、請求項１１に記載のシステム。
【請求項２０】
物品であって、
１つまたは複数のコンピュータプロセッサによって実行されると、前記コンピュータプロセッサに、以下の動作を実行させる命令を記憶した、非一時的なコンピュータ可読媒体を含み、前記動作は、
クライエントデバイス上でソフトウェアアプリケーションを開始すること、
前記ソフトウェアアプリケーションの動作可能なバージョンを与えるように構成されたデータの初期部分を前記クライエントデバイスにダウンロードすること、
前記クライエントデバイスで前記ソフトウェアアプリケーションの前記動作可能なバージョンを提供すること、
前記ソフトウェアアプリケーションのコンプリートバージョンを与えるように構成されたデータの残りの部分を前記クライエントデバイスにダウンロードすること、および、
前記クライエントデバイスで前記ソフトウェアアプリケーションの前記コンプリートバージョンを提供することを備える、物品。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１７年３月２３日に出願された米国仮特許出願６２／４７５，４３５号の利益を主張し、その全体の内容は参照により本明細書に組み込まれる。
【０００２】
背景
本開示は、ソフトウェアアプリケーションに関し、特定の例では、クライエントデバイス上のソフトウェアアプリケーションの初期化を改善するためのシステムおよび方法に関する。
【背景技術】
【０００３】
サーバシステムまたはコンテンツ配信ネットワーク（ＣＤＮ）からのデータに依存するソフトウェアアプリケーションは、典型的には、ファンクショナルユーザインタフェースをユーザに提示可能となる前に、長い起動時間に煩わされる。一般に、そのようなアプリケーションは、必要なすべてのメタデータ、画像データ、および他のアセットデータがダウンロードされた、あるいはまたは他の方法で収集された後にのみ使用可能となる。このようなデータをいくつかのアプリケーションのためにダウンロードするのに必要な時間は、３０秒、６０秒、あるいは、それ以上となり得る。これは、ユーザにフラストレーションを生じさせ、その結果、ソフトウェアアプリケーションプロバイダにとっての機会を消失させ得る。
【０００４】
多くのソフトウェアアプリケーションは、ＣＤＮから起動データをダウンロードする。ＣＤＮは、典型的には、コンテンツおよび他のデータをネットワーク接続（例えば、インターネット）を介してクライエントデバイスに提供する、世界中に分散されたサーバまたはノードの巨大なシステムである。一般に、ＣＤＮは、コンテンツ開発者またはプロバイダに対して新たなハードウェアまたはインフラストラクチャにおいて甚大な投資を行うことを要求することなく、コンテンツがエンドユーザに迅速かつ確実に分散されることを許容する。
【発明の概要】
【課題を解決するための手段】
【０００５】
概要
一般に、本開示の主題は、サーバシステムまたはＣＤＮからのデータに依存するクライエントデバイス上のソフトウェアアプリケーションを起動するのに必要な時間量を低減するためのシステムおよび方法に関する。ソフトウェアアプリケーションを完全に動作可能にするために必要なすべてのデータをダウンロードする前に、例えば、クライエントデバイス、および／または、ソフトウェアアプリケーションは、最初に、データの最初の部分をダウンロードすることができ、その最初の部分は、本明細書において“仮のメタデータデータベース”として称される、小さな専用のメタデータデータベースであり、またはこれを含むことができる。データの初期部分は、ソフトウェアアプリケーションの状態を初期化し、ソフトウェアアプリケーションを動作または完全に機能させるのに必要な中間メタデータ情報を含むことが好ましい。中間メタデータ情報は、例えば、画像寸法、位置／空間データ、アニメーションクリップ長、アセット依存性情報、および他の同様の情報を含み得る。一旦、中間メタデータがダウンロードされ、処理されると、ユーザは、ソフトウェアアプリケーションの初期の動作可能バージョンを実行し、使用できる。まだダウンロードされていない特定のアセット（例えば、画像、アニメーション、およびビデオ）は、プレースホルダーアセット（例えば、アクチュアルアセットの低品質または原始バージョン）に置き換えることができるが、初期バージョンは、ユーザインタフェースを含むことができ、完全に機能することができる。その後、アクチュアルアセットデータは、プレースホルダーアセットとの置換のために経時的にダウンロードされ、ソフトウェアアプリケーションの最終又はコンプリートバージョンを提供できる。
【０００６】
有利には、本明細書に記載のアプローチは、特定のソフトウェアアプリケーションの起動時間を大幅に短縮することができる。場合によっては、例えば、ソフトウェアアプリケーションの初期化と、動作可能なユーザインタフェースの提示との間の時間を、本明細書に記載されたシステムおよび方法を使用することによって、７５％、９０％、またはそれ以上低減できる。これにより、ユーザのフラストレーションを大きく低減し、また、ソフトウェアアプリケーションに対する総合的なユーザ満足度を大きく改善することができる。
【０００７】
ある局面において、本明細書に記載された主題は、コンピュータで実行される方法に関する。本方法は、クライエントデバイスでソフトウェアアプリケーションを初期化すること、クライエントデバイスでソフトウェアアプリケーションの動作可能なバージョンを与えるように構成されたデータの最初の部分をダウンロードすること、クライエントデバイスでソフトウェアアプリケーションの動作可能なバージョンを提供すること、クライエントデバイスで、ソフトウェアアプリケーションのコンプリートバージョンを与えるように構成されたデータの残りの部分をダウンロードすること、およびクライエントデバイスでソフトウェアソフトウェアアプリケーションのコンプリートバージョンを提供することを含む。
【０００８】
特定の例では、ソフトウェアアプリケーションを開始することは、コンテンツ配信ネットワークからマニフェストファイルを要求することを含むことができ、マニフェストファイルは、データの初期部分およびデータの残りの部分の特定を含むことができる。データの初期部分は、ソフトウェアアプリケーションのための中間メタデータを含むことができる。中間メタデータは、ユーザインタフェースレイアウト、画像寸法、メッシュ寸法、アニメーションの長さ、位置データ、空間データ、およびそれらの任意の組み合わせを含むことができる。ソフトウェアアプリケーションの動作可能なバージョンは、ソフトウェアアプリケーションのコンプリートバージョンの、画像、グラフィカル要素、アニメーション、ビデオ、および／またはサウンドのプリミティブレンダリングを含むことができる。
【０００９】
いくつかの例では、動作可能なバージョンおよびコンプリートバージョンは、同一の機能性を含むことができる。動作可能なバージョンは、グラフィック品質および／または音質を除いて、コンプリートバージョンと同一であり得る。データの残りの部分をダウンロードすることは、ユーザが動作可能なバージョンと対話することを可能にすることを含むことができる。データの残りの部分をダウンロードすることは、ソフトウェアアプリケーションの現在の状態を決定すること、さらに、現在の状態の決定に基づいて、データの残りの部分の第１のサブセットのダウンロードを、データの残りの部分の第２のサブセットのダウンロードよりも優先することを含むことができる。データの残りの部分は、画像データ、および／または、３Ｄオブジェクトデータを含むことができる。
【００１０】
別の態様では、本明細書に記載された主題は、次の動作を含む動作を実行するようにプログラムされた、１つまたは複数のコンピュータプロセッサを有するシステムに関する；クライエントデバイス上でソフトウェアアプリケーションを開始すること；ソフトウェアアプリケーションの動作可能なバージョンを与えるように構成されたデータの初期部分をクライエントデバイスにダウンロードすること；ソフトウェアソフトウェアアプリケーションの動作可能なバージョンをクライエントデバイスに提供すること；ソフトウェアアプリケーションのコンプリートバージョンを与えるように構成されたデータの残りの部分をクライエントデバイスにダウンロードすること；および、ソフトウェアアプリケーションのコンプリートバージョンをクライエントデバイスに提供すること。
【００１１】
特定の実施態様では、ソフトウェアアプリケーションを開始することは、コンテンツ配信ネットワークからマニフェストファイルを要求することを含むことができ、マニフェストファイルは、データの初期部分およびデータの残りの部分の特定を含むことができる。データの初期部分は、ソフトウェアアプリケーションのための中間メタデータを含むことができる。中間メタデータは、ユーザインタフェースレイアウト、画像寸法、メッシュ寸法、アニメーションの長さ、位置データ、空間データ、およびそれらの任意の組み合わせを含むことができる。ソフトウェアアプリケーションの動作可能なバージョンは、ソフトウェアアプリケーションのコンプリートバージョンの、画像、グラフィカル要素、アニメーション、ビデオ、および／またはサウンドのプリミティブレンダリングを含むことができる。
【００１２】
様々な例では、動作可能なバージョンおよびコンプリートバージョンは、同一の機能性を含むことができる。動作可能なバージョンは、グラフィック品質および／または音質を除いて、コンプリートバージョンと同一であり得る。データの残りの部分をダウンロードすることは、ユーザが動作可能なバージョンと対話することを可能にすることを含むことができる。データの残りの部分をダウンロードすることは、ソフトウェアアプリケーションの現在の状態を決定すること、さらに、現在の状態の決定に基づいて、データの残りの部分の第１のサブセットのダウンロードを、データの残りの部分の第２のサブセットのダウンロードよりも優先することを含むことができる。データの残りの部分は、画像データおよび／または３Ｄオブジェクトデータを含むことができる。
【００１３】
別の態様では、本明細書に記載される主題は、物品に関する。物品は、１つまたは複数のコンピュータプロセッサによって実行されると、前記コンピュータプロセッサに、以下の動作を実行させる命令を記憶した、非一時的なコンピュータ可読媒体を含む；クライエントデバイス上でソフトウェアアプリケーションを開始すること；ソフトウェアアプリケーションの動作可能なバージョンを与えるように構成されたデータの初期部分をクライエントデバイスにダウンロードすること；クライエントデバイスでソフトウェアアプリケーションの動作可能なバージョンを提供すること；ソフトウェアアプリケーションのコンプリートバージョンを与えるように構成されたデータの残りの部分をクライエントデバイスにダウンロードすること；および、クライエントデバイスでソフトウェアアプリケーションの完全なバージョンを提供すること。
【００１４】
本発明の所与の態様に関して記載された実施形態の要素は、本発明の別の態様の様々な実施形態で使用することができる。例えば、１つの独立請求項に従属する従属請求項の特徴は、他の独立請求項のいずれかの装置、システム、および／または方法において使用することができることが意図される。
【図面の簡単な説明】
【００１５】
【図１】クライエントデバイス上で実行されるソフトウェアアプリケーションの初期化を管理するための例示的なシステムの概略図である。
【図２】クライエントデバイス上でソフトウェアアプリケーションを起動する例示的な方法の概略図である。
【図３】クライエントデバイス上でソフトウェアアプリケーションの起動時間を短縮する例示的な方法の概略図である。
【図４】クライエントデバイス上でソフトウェアアプリケーションの起動時間を短縮する例示的な方法のフローチャートである。
【発明を実施するための形態】
【００１６】
詳細な説明
図１は、クライエントデバイス上でソフトウェアアプリケーションの初期化を改善するための例示的なシステム１００を示す。サーバシステム１１２は、ソフトウェアアプリケーションを初期化し、ソフトウェアアプリケーションを複数のユーザに提供する機能を提供する。サーバシステム１１２は、例えば、１つまたは複数の地理的位置に存在する１つ以上のデータセンタ１１４に配置可能なソフトウェアコンポーネントおよびデータベースを含む。特定の例では、サーバシステム１１２は、コンテンツ配信ネットワーク（ＣＤＮ）を含むか、または利用する。サーバシステム１１２ソフトウェアコンポーネントは、アプリケーションモジュール１１６を含むことができおよび／または、同一または異なる個々のデータ処理装置上で実行可能なサブコンポーネントを含むことができる。サーバシステム１１２データベースは、アプリケーションデータ１２０データベースを含むことができる。データベースは、１つまたは複数の物理的な記憶システム内に存在し得る。ソフトウェアコンポーネントおよびデータは、以下でさらに説明されるであろう。
【００１７】
例えば、ウェブベースのアプリケーションまたは他のソフトウェアアプリケーションなどのようなアプリケーションは、ユーザがサーバシステム１１２と対話可能にするためのエンドユーザアプリケーションとして提供され得る。ソフトウェアアプリケーションまたはそのコンポーネントは、ネットワーク１２４（例えば、インターネット）を介して、スマートフォン１２６、パーソナルコンピュータ１２８、スマートフォン１３０、タブレットコンピュータ１３２、およびラップトップコンピュータ１３４のようなクライエントデバイスのユーザによってアクセスされ得る。他のクライエントデバイスも同様にアクセス可能である。
【００１８】
システム１００内の各クライエントデバイスは、ソフトウェアアプリケーションのためのソフトウェアコンポーネントおよびデータベースを利用でき、または含むことができる。クライエントデバイス上のソフトウェアコンポーネントは、アプリケーションモジュール１４０および初期化モジュール１４２を含むことができる。アプリケーションモジュール１４０は、各クライエントデバイス上でソフトウェアアプリケーションを実行できる。初期化モジュール１４２は、ソフトウェアアプリケーションの初期化または起動段階を管理するために使用され得る。クライエントデバイス上のデータベースは、アプリケーションデータ１４４データベースを含むことができ、そのアプリケーションデータ１４４データベースは、ソフトウェアソフトウェアアプリケーションのためのデータを記憶でき、また、アプリケーションモジュール１４０、および／または、初期化モジュール１４２とデータを交換することができる。アプリケーションデータ１４４データベースに記憶されたデータは、たとえば、ユーザデータ、画像データ、ビデオデータ、およびアプリケーションモジュール１４０および／または初期化モジュール１４２によって使用または生成される任意の他のデータ、を含むことができる。アプリケーションモジュール１４０、初期化モジュール１４２、およびアプリケーションデータ１４４データベースは、スマートフォン１３０と関連して示さる一方で、他のクライエントデバイス（例えば、スマートフォン１２６、パーソナルコンピュータ１２８、タブレットコンピュータ１３２、および／またはラップトップコンピュータ１３４）は、アプリケーションモジュール１４０、初期化モジュール１４２、アプリケーションデータ１４４データベース、およびそれらの任意の部分を含むことができると理解される。
【００１９】
さらに、図１を参照すると、アプリケーションモジュール１１６は、例えば、計算を実行し、ソフトウェア更新を実行し、アプリケーションモジュール１４０および／または初期化モジュール１４２との間で情報またはデータを交換し、ソフトウェアアプリケーションの初期化を支援し、および／またはソフトウェアアプリケーションの全体状態を監視しすることによって、ソフトウェアアプリケーションをサポートするソフトウェアコンポーネントを含むことができる。アプリケーションデータ１２０データベースは、ソフトウェアアプリケーションのデータを格納および提供できる。データは、例えば、ユーザデータ、画像データ、ビデオデータ、アニメーションデータ、および／または任意の他のデータであって、サーバシステム１１２および／またはソフトウェアソフトウェアアプリケーションを実行するクライエント装置が使用することのできるデータを含むことができる。特定の例では、例えば、アプリケーションモジュール１１６は、アプリケーションデータ１２０データベースからデータ（例えば、ビデオデータまたは画像データ）を検索でき、そのデータをソフトウェアアプリケーションの初期化中にクライエントデバイスに送信することができる。
【００２０】
クライエントデバイス１２６、１２８、１３０、１３２、１３４に実装されたソフトウェアアプリケーションは、例えば、エンターテイメント（例えば、ゲーム、音楽、ビデオなど）、ビジネス（例えば、ワープロ、会計、スプレッドシートなど）、ニュース、天候、金融、スポーツなどを含む多種多様な機能および情報に関連し、および／またはこれらの機能および情報を提供することができる。特定の例では、ソフトウェアアプリケーションは、マルチプレイヤオンラインゲームを提供する。
【００２１】
図２を参照して、クライエントデバイス２０２（例えば、スマートフォン１３０）上でソフトウェアアプリケーションを初期化する例示的な方法２００は、サーバシステム１１２（たとえば、ＣＤＮ）から特定のアセットおよび他のデータを検索することを含むことができる。方法２００は、例えば、ソフトウェアアプリケーションのユーザ選択に応答して、クライエントデバイス２０２上のソフトウェアアプリケーションを初期化することによって開始することができる（ステップ２０４）。アプリケーションおよび／またはクライエントデバイス２０２は（たとえば、初期化モジュール１４２を使用して）、その後、サーバシステム１１２からマニュフェストファイルを要求およびダウンロードすることができる（ステップ２０６）。マニフェストファイルは、ソフトウェアアプリケーションが動作可能にされる前にクライエントデバイス２０２によってダウンロードされ、および／または、クライエントデバイス２０２上で更新される、全てのファイルおよび／またはデータ（例えば、アセットデータ）のリスト又は表示を含むことができる。次に、ソフトウェアアプリケーションおよび／またはクライエントデバイス２０２は、マニフェストファイルで特定されたすべてのファイルおよび／またはデータの要求およびダウンロードに進むことができる（ステップ２０８）。一旦、すべてのファイルおよび／またはデータがダウンロードされると、ソフトウェアアプリケーションの、完全に動作可能なコンプリートバージョンがクライエントデバイス上で提供され得る（ステップ２１０）。
【００２２】
しかし、特定の例では、方法２００は、全てのファイルおよび／またはデータがダウンロードされ、かつソフトウェアアプリケーション（例えば、機能的なユーザインタフェースを備える）の動作可能なバージョンをクライエント装置に提供できる（ステップ２１０）前に、長い初期化時間または起動時間に煩わされる可能性がある（ステップ２０８）。起動時間の大部分（例えば、７５％、９０％、あるいはそれ以上）は、例えば、ビデオ、画像、および／又はアニメーションデータに関連する、ある種の大きなファイルをダウンロードすることに関連付けることができる。
【００２３】
方法２００に関連する長い起動時間を回避するために、最初に、またはソフトウェアアプリケーションのための他のファイルおよび／またはデータよりも前に、本明細書で“仮メタデータデータベース”と称される専用データベースが、サーバシステム１１２からダウンロードされ得る。仮メタデータデータベースは、“中間メタデータ情報”と呼ばれるデータの初期部分を含むことができ、これは、データの残りの部分が、まだダウンロードされていないかまたはソフトウェアアプリケーションのためにまだ利用可能ではないとしても、初期化段階中にソフトウェアアプリケーションを動作可能または完全に機能的にするために使用できる。中間メタデータ情報は、例えば、ユーザインタフェースのレイアウト（例えば、要素サイズおよび位置）、画像寸法（例えば、ユーザインタフェースのための）、メッシュ寸法（例えば、３Ｄ仮想オブジェクトのための）、位置データ（例えば、表示画面上のオブジェクトの位置および／または座標）、空間データ（例えば、サイズ、寸法、および／または、オブジェクトの境界ボリューム、位置およびサイズに基づいてシーン内のパーティションオブジェクトに使用される、バイナリスペースパーティションツリーなどのようなデータ構造など）、アニメーションクリップ長（例えば、３Ｄアニメーションの長さ）、アセット依存情報（例えば、１つのアセットは、他のアセットからの情報に依存して、完全に表現される）、および他の同様の情報を含むことができる。いくつかの例では、ユーザインタフェースのレイアウトは、画像寸法、および／または、利用可能なスクリーン空間に基づいて計算できる。一般に、中間メタデータ情報は、ソフトウェアアプリケーションを初期化するため、ユーザインタフェースを提供するため、および／または、初期化段階中にソフトウェアアプリケーションを動作可能にするため、または完全に機能可能にするため、に必要な情報を含み、その一方で、アクチュアルな、または残りのアセットデータがダウンロードされる。有利には、一旦、中間メタデータ情報がクライエントデバイスによってダウンロードおよび／または処理された後に、ソフトウェアアプリケーションの初期の、動作可能または完全に機能するバージョンをロードすることができる。
【００２４】
特定の実施形態では、初期バージョンは、まだダウンロードされていないか、あるいは、ダウンロード途中のアクチュアルアセットを代表するために、特定のプレースホルダーアセットを含むことができ、または、利用することができる。プレースホルダーアセットは、例えば、未だダウンロードされていないアセットの低品質または原始バージョン（例えば、低解像度の画像、メッシュ、またはアウトライン）を含むことができ、それは、たとえば、１つまたは複数の画像、３Ｄ仮想オブジェクト、ビデオ、アニメーション、グラフィック要素、および／または類似のアセットまたはデータである。そのようなプレースホルダーアセットは、動作可能なソフトウェアアプリケーションを提供するため、および／またはより良いユーザエクスペリエンスを提供するために使用することができる。アクチャルな、またはより高品質のアセットがダウンロードされると、プレースホルダーアセットは、アクチュアルアセットに置き換えられ得る。
【００２５】
例えば、図３を参照して、方法３００は、他のアセットおよび／またはファイルがソフトウェアアプリケーションのためにダウンロードされる前に、中間メタデータ情報（例えば、仮のメタデータデータベースに存在する）をダウンロードすることによって、アプリケーション起動時間を短縮できる。方法３００は、たとえば、ソフトウェアアプリケーションのユーザ選択に応答して、クライエントデバイス２０２上でソフトウェアアプリケーションを初期化することによって開始することができる（ステップ３０２）。ソフトウェアアプリケーションおよび／またはクライエントデバイス２０２（たとえば、初期化モジュール１４２を使用する）は、その後、サーバシステム１１２からマニュフェストファイルを要求および／またはダウンロードすることができる（ステップ３０４）。マニフェストファイルは、ソフトウェアアプリケーションを提供するためにクライエントデバイス２０２によってダウンロードされ、および／またはクライエントデバイス２０２上で更新された、全てのファイルおよび／またはデータ（例えば、アセットデータ）のリスト又は指示を含むことができる。マニフェストファイルは、また、中間メタデータ情報を含む仮のメタデータデータベースを特定できる。その後、ソフトウェアアプリケーション、および／または、クライエントデバイス２０２は（例えば、初期化モジュール１４２を使用して）、サーバシステム１１２から仮のメタデータデータベースを要求またはダウンロードすることができる（ステップ３０６）。
【００２６】
一旦、ダウンロードされると、ソフトウェアアプリケーション（例えば、アプリケーションモジュール１４０）の初期の動作可能なバージョンがクライエント装置２０２に提供され得る（ステップ３０８）。初期バージョンは、ソフトウェアアプリケーションの動作可能な、または完全に機能的なバージョンを提供するために必要なユーザインタフェース、および／または他の任意の情報を含むことができる。初期バージョンは、まだダウンロードされていない任意のアセットのために、プレースホルダーアセットを含むことができ、または利用できる。その後、ソフトウェアアプリケーションおよび／またはクライエントデバイス２０２は、（例えば、初期化モジュール１４２を使用して）ソフトウェアアプリケーションのためにデータの残りの部分を要求および／またはダウンロードすることができる（ステップ３１０）。クライエント装置２０２がソフトウェアアプリケーションの初期バージョンを提供している間、データの残りの部分は、バックグラウンドに到達し、および／またはそこで処理され得る（たとえば、非同期で）。残りのデータのうちの追加のアセットが受信されると、プレースホルダーアセットは、対応するアクチュアルアセットに置き換えられ得る。一旦、ソフトウェアアプリケーションの全てのファイルおよび／またはデータ（例えば、マニフェストファイルで特定されたものとして）がダウンロードされると、ソフトウェアアプリケーションの完全かつフルに動作可能なバージョンが、クライエントデバイス上で提供され得る（ステップ３１２）。
【００２７】
好ましい実施態様では、ソフトウェアアプリケーションの初期バージョンおよびソフトウェアアプリケーションのコンプリートバージョンは、同一または実質的に類似の機能性を有することができる。例えば、ソフトウェアアプリケーションの初期バージョンとコンプリートバージョンとは、グラフィックスおよび／またはオーディオの相違以外は、同一であり得る。そのような差異は、例えば、初期バージョンにおけるプレースホルダーアセットの使用と、コンプリートバージョンにおけるアクチュアルアセットの使用とによるものであり得る。その結果、ソフトウェアアプリケーションのユーザは、ユーザがコンプリートバージョンと対話するのと同じ方法で、初期バージョンと対話できる。代替的または追加的に、初期バージョンおよびコンプリートバージョンは、ユーザ要求および／または現在情報を同じまたは実質的に同様に処理できる。
【００２８】
ソフトウェアアプリケーションの起動時間をさらに短縮するために、特定のファイル、データ、または他のアセットをソフトウェアアプリケーションと束ねることができ、そのようにすると、ソフトウェアアプリケーションが最初に初期化され、ダウンロードされる必要がない場合、アセットの一部をクライエントデバイス（例えば、アプリケーションデータ１４４データベースの中に）に常駐させることができるようになる。これにより、ソフトウェアアプリケーション（例えば、初期バージョンおよび／またはコンプリートバージョン）のためのファイルをダウンロードするために必要なトータル時間を低減できる。
【００２９】
追加的に、または代替的に、ダウンロードは、より重要なまたはクリティカルなファイルおよび／またはデータが、重要性が劣る他のファイルおよび／またはデータよりも前にダウンロードされ得るように、優先順位付けできる。例えば、ソフトウェアアプリケーションの初期バージョンを提供するために中間メタデータ情報を早期にダウンロードすることに加えて、初期バージョンを改善し、および／またはユーザエクスペリエンスを高めるために、さらなるダウンロードを優先順位付けできる。たとえば、仮想環境を有するゲームの文脈では、仮想環境内のユーザー（またはユーザーのアバター）のすぐ近くにあるアセットのダウンロードを優先することが望ましい。このようにして、仮想環境がユーザに表示された場合、プレースホルダーアセットの使用を最小限にして、ユーザの近傍のアセットをダウンロードし、より迅速かつ正確にレンダリングできる。場合によっては、システムおよび方法は、ユーザが仮想環境を移動している場所に応じて、ゲームのダウンロードを優先できる。例えば、ユーザが北の方向に移動している場合、ユーザの北方向のアセットは、他のアセットよりも優先され得る。
【００３０】
追加的または代替的に、さらなるダウンロードは、アセットの相互依存性に従って優先順位付することができる。例えば、別のアセットがダウンロードされるまで、１つのアセットが使用できず、表現できず、または表示できない場合、両方のアセットを一緒にまたはほぼ同時にダウンロードしなければならない。特定の例では、初期化モジュール１４２は、そのようなアセットの相互依存性を特定でき（例えば、中間メタデータ情報に基づいて）、依存性アセットを共にダウンロードすることができるようにダウンロードを優先順位付けすることができる。例えば、３Ｄモデルは、ジオメトリ、アニメーション、テクスチャ、および／またはシェーダを含むことができる。ジオメトリは、３Ｄモデルアセットに格納でき、３Ｄモデルのための他のデータは、３Ｄモデルアセットによって参照できる別個のファイルに格納できる。３Ｄモデルの完全な表現は、このデータの全てがダウンロードされ、処理されることを必要とするので、３Ｄモデルアセットは、テクスチャ、アニメーション、およびシェーダアセットに依存すると考えることができる。別の例では、３Ｄモデルファイルは、意図された形態でレンダリングされるために、テクスチャアセットまたは画像ファイルに依存し得る。この場合の３Ｄモデルファイルおよび画像ファイルは、相互依存であり得、および／または、好ましくは一緒に、または、ほぼ同時にダウンロードされる。
【００３１】
図４は、クライエントデバイス上でソフトウェアアプリケーションの起動時間を低減する例示的なコンピュータ実装方法４００を示す。ソフトウェアアプリケーションは、クライエントデバイス上で開始される（ステップ４０２）。ソフトウェアアプリケーションの動作可能なバージョンをレンダリングするように構成されたデータの初期部分が、クライエントデバイス上でダウンロードされる（ステップ４０４）。ソフトウェアアプリケーションの動作可能なバージョンは、クライエントデバイス上で提供される（ステップ４０６）。ソフトウェアアプリケーションのコンプリートバージョンをレンダリングするように構成されたデータの残りの部分は、クライエントデバイス上でダウンロードされる（ステップ４０８）。最後に、ソフトウェアアプリケーションのコンプリートバージョンがクライエントデバイス上で提供される（ステップ４１０）。
【００３２】
本明細書に記載された主題および動作の実装形態は、本明細書に開示された構造およびそれらの構造的均等物、またはそれらのうちの１つまたは複数の組み合わせを含む、デジタル電子回路、コンピュータソフトウェア、ファームウェア、またはハードウェアにより実現することができる。本明細書で説明される主題の実装形態は、１つまたは複数のコンピュータプログラムとして、たとえば、データ処理装置による実行のために、またはデータ処理装置の動作を制御するために、コンピュータ記憶媒体にエンコードされた、
たとえば、コンピュータプログラム命令の１つまたは複数のモジュールとして、実現することができる。代替的または追加的に、プログラム命令は、人工的に生成された伝播信号にエンコードすることができ、たとえば、それは、機械生成の電気信号、光学信号、または電磁信号であって、それらの信号は、データ処理装置による実行のために適切な受信装置に送信するための情報をエンコードするために生成された信号である。コンピュータ記憶媒体は、コンピュータ可読記憶装置、コンピュータ可読記憶基板、ランダムまたはシリアルアクセスメモリアレイまたはデバイス、またはそれらの１つまたは複数の組み合わせであってもよく、あるいは、それらを含んでいてもよい。さらに、コンピュータ記憶媒体は伝播信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝播信号にエンコードされたコンピュータプログラム命令のソースまたは宛先となり得る。コンピュータ記憶媒体は、また、１つまたは複数の別個の物理的コンポーネントまたは媒体（たとえば、複数のＣＤ、ディスク、または他の記憶装置）であるか、それに含まれてもよい。
【００３３】
本明細書に記載された動作は、１つまたは複数のコンピュータ可読記憶装置に記憶されたデータまたは他のソースから受信されたデータに対して、データ処理装置によって実行される動作として実現することができる。
【００３４】
“データ処理装置”という用語は、データを処理するためのすべての種類の装置、デバイス、およびマシンを包含し、それらは、プログラマブルプロセッサ、コンピュータ、チップ上のシステム、または前述の複数のもの、またはそれらの組み合わせを含む。この装置は、専用ロジック回路、例えばＦＰＧＡ（field programmable gate array）またはＡＳＩＣ（application-specific integrated circuit）を含むことができる。装置はまた、ハードウェアに加えて、問題となっているコンピュータプログラムの実行環境を作成するコードを含み、当該コードは、例えば、プロセッサファームウエア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、バーチャルマシン、またはそれらのうちの１つまたは複数の組合せを含むものを構成するコードである。装置と実行環境は、Ｗｅｂサービス、分散コンピューティング、グリッドコンピューティングインフラストラクチャといったような、さまざまなコンピューティングモデルインフラストラクチャを実現することができる。
【００３５】
コンピュータプログラム（プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られている）は、コンパイルされた、または解釈された言語、宣言型または手続き型言語を含む任意の形式のプログラミング言語で記述することができ、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、オブジェクト、またはコンピューティング環境における使用に適した他のユニットとして、任意の形態で展開することができる。コンピュータプログラムは、ファイルシステム内のファイルに対応してもよく、対応しなくてもよい。プログラムは、他のプログラムまたはデータ（例えば、マークアップ言語文書に格納された１つまたは複数のスクリプト）を保持するファイルの一部に格納することができ、あるいは、そのプログラムは、問題となっているプログラムに専用の単一ファイルに、または、複数の調整されたファイル（例えば、１つ以上の、モジュール、サブプログラムまたはコードの一部を記憶するファイル）に、格納できる。コンピュータプログラムは、１つのコンピュータ上で、または複数のコンピュータ上で実行されるように配置可能であり、その複数のコンピュータは、１つのサイトに、または複数のサイトに分散されて、通信ネットワークによって相互接続されている。
【００３６】
本明細書に記載されたプロセスおよび論理フローは、入力データで動作し出力を生成するための１つまたは複数のコンピュータプログラムを実行する、１つまたは複数のプログラマブルプロセッサによって実行され得る。プロセスおよび論理フローもまた、例えば、ＦＰＧＡ（field programmable gate array）やＡＳＩＣ（application-specific integrated circuit）などのような専用ロジック回路によって実現することができ、また、装置もまた、例えば、それらのような専用ロジック回路として実現することもできる。
【００３７】
コンピュータプログラムの実行に適したプロセッサは、例として、汎用および専用マイクロプロセッサの両方を含み、さらに、あらゆる種類のデジタルコンピュータの１つまたは複数のプロセッサを含む。一般に、プロセッサは、読み取り専用メモリまたはランダムアクセスメモリ、あるいはその両方から命令とデータを受け取る。コンピュータの重要な要素は、命令に従ってアクションを実行するプロセッサと、命令とデータを保存する１または複数のメモリデバイスである。一般に、コンピュータもまた、データを格納するための１つまたは複数の大容量記憶装置（たとえば、磁気ディスク、光磁気ディスク、光ディスク、またはソリッドステートドライブ）を含み、あるいはデータの受信または転送、またはその両方を含む動作が可能に大容量記憶装置に結合される。しかしながら、コンピュータはそのようなデバイスを必要としない。さらに、コンピュータは、別のデバイスに埋め込むことができ、そのような別のデバイスとして、たとえば、携帯電話、携帯情報端末（ＰＤＡ）、モバイルオーディオまたはビデオプレーヤー、ゲームコンソール、全地球測位システム（ＧＰＳ）受信機、またはポータブルストレージデバイス（たとえば、ユニバーサルシリアルバス（ＵＳＢ）フラッシュドライブ）など、ここでは、ほんの数例を挙げる。コンピュータプログラムの命令およびデータを保存するのに適したデバイスは、すべての形態の不揮発性メモリ、メディアおよびメモリデバイスが含まれ、例として、ＥＰＲＯＭ、ＥＥＰＲＯＭ、およびフラッシュメモリデバイスなどの半導体メモリデバイス；内蔵ハードディスクまたはリムーバブルディスクなどの磁気ディスク；光磁気ディスク；さらにはＣＤ−ＲＯＭおよびＤＶＤ−ＲＯＭディスクが含まれる。プロセッサおよびメモリは、専用ロジック回路で補完でき、または専用ロジック回路に組み込むことができる。
【００３８】
ユーザとの対話を提供するために、本明細書に記載された主題の実装形態は、ユーザに情報を表示する表示装置と、キーボードと、ポインティングデバイスとを備えるコンピュータ上で実現することができ、表示装置は、たとえば、ＣＲＴ（cathode ray tube）やＬＣＤ（liquid crystal display）モニターであり、ポインティングデバイスは、たとえば、ユーザがコンピュータに入力を提供することができるマウス、トラックボール、タッチパッド、またはスタイラスである。ユーザとの対話を提供するためにデバイスの他の種類も使用でき、たとえば、ユーザに提供されるフィードバックは、感覚フィードバックの任意の形態とすることができる。感覚フィードバックは、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックを含み、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形態で受信できる。さらに、コンピュータは、ユーザによって使用される装置との間でドキュメントを送信し、ドキュメントを受信することによって、ユーザと対話でき、たとえば、ウェブブラウザから受信された要求に応答して、ウェブページをユーザのクライエントデバイス上のウェブブラウザに送信することによって、コンピュータは、ユーザと対話できる。
【００３９】
本明細書に記載された主題の実装形態は、コンピューティングシステムで実現することができ、そのコンピューティングシステムは、たとえばデータサーバとしてのバックエンドコンポーネントを含み、またはたとえばアプリケーションサーバとしてのミドルウエアコンポーネントを含み、または、たとえばグラフィックユーザーインターフェースを有するクライエントコンピュータとしてのまたはユーザがこの明細書に記載された主題の実装形態と対話することができるウェブブラウザとしてのフロントエンドコンポーネントを含み、または、１つまたは複数のそのようなバックエンド、ミドルウェア、またはフロントエンドコンポーネントの任意の組み合せ、を含むことができる。システムのコンポーネントは、たとえば、通信ネットワークのようなデジタルデータ通信の任意の形態または媒体によって相互接続できる。通信ネットワークの例は、ローカルエリアネットワーク（ＬＡＮ）およびワイドエリアネットワーク（ＷＡＮ）、インターネットワーク（例えば、インターネット）、ピアツーピアネットワーク（例えば、アドホックピアツーピアネットワーク）を含む。
【００４０】
コンピューティングシステムは、クライエントおよびサーバを含むことができる。クライエントおよびサーバは、一般に互いに離れており、典型的には通信ネットワークを介して対話する。クライエントとサーバの関係は、それぞれのコンピュータで実行され、相互にクライエントとサーバの関係を持つコンピュータプログラムによって生じる。いくつかの実装形態では、サーバは、データ（例えば、ｈｔｍｌページ）をクライエントデバイス（例えば、クライエントデバイスと対話するユーザにデータを表示し、または、そのユーザからの入力を受信する目的のための）に送信する。クライエントデバイスで生成されたデータ（例えば、ユーザインタラクションの結果）は、サーバにおいてクライエントデバイスから受信され得る。
【００４１】
この明細書は、多くの特定の実装形態の詳細を含むが、これらは、いずれかの発明の範囲およびクレームの限定として解釈されるべきではなく、むしろ、特定の発明の特定の実装形態に特有の特徴の説明として解釈されるべきである。別個の実装に関連して本明細書で説明される特定の特徴は、単一の実装において組み合わせて実装することもできる。逆に、単一の実装に関連して説明された様々な特徴は、複数の実装で別々にまたは任意の適切な部分的組み合せですることもできる。さらに、特徴は上記のとおりに特定の組み合せにおいて動作するように説明され、そして最初からそのようなものとしてクレームされるが、クレームされた組み合せから導かれた１つまたは複数の特徴は、いくつかのケースでは、組み合せから削除されることができ、また、クレームされた組み合せは、部分的組み合せまたは部分的組み合せの変形例に向けることができる。
【００４２】
同様に、動作は、特定の順序で図面に示されているが、これは、そのような動作が、図示された特定の順序または連続した順序で実行されることを必要とするものとして理解されるべきではなく、所望の結果を達成するために、全ての図示された動作が実行されるようにすることを必要とするものとして理解されるべきでもない。ある状況では、マルチタスクおよび並列処理は有利である。さらに、上記した実装形態における様々なシステムコンポーネントの分離は、すべての実装形態において、そのような分離が必要とされるものであると、理解されるべきではなく、また、記載されたプログラムコンポーネントおよびシステムは、一般的に、単一のソフトウェア製品にまとめて統合することができ、または複数のソフトウェア製品にパッケージ化することができることを理解すべきである。
【００４３】
このように、主題の特定の実装形態が説明された。他の実装形態は、以下の特許請求の範囲内である。場合によっては、特許請求の範囲に記載された動作は、異なる順序で実行され、依然として所望の結果を達成する。加えて、添付の図に示されたプロセスは、所望の結果を達成するために、図示された特定の順序または連続した順序を必ずしも必要とせず、特定の実装形態では、マルチタスク処理および並列処理が有利であり得る。
【図１】
2020514928.tif 000003
【図２】
2020514928.tif 000004
【図３】
2020514928.tif 000005
【図４】
2020514928.tif 000006
【国際調査報告】
2020514928.tif 000007
2020514928.tif 000008
2020514928.tif 000009