(57)【要約】スクリプト・ファイルの依存性およびロード時間を管理するための概念および技術について記載する。本明細書において開示する概念および技術によれば、サーバー・コンピューターは、ページを格納し、クライアント・デバイスにこのページを供給する。ページは、実行および／またはレンダリング中１つ以上のスクリプト・ファイルを参照するおよび／または拠り所とすることができる。サーバー・コンピューターは、スクリプト・ファイルに関連するスクリプト・ファイル依存性およびロード・レベルを判定することができる。サーバー・コンピューターは、スクリプト・ファイル依存性およびスクリプト・ファイル・ロード・レベルを示すことができる、有向グラフおよび／または表というようなデーターを生成することができる。このデーターは、ページのロード、レンダリング、および／または実行中に、クライアント・デバイスまたは他のエンティティに供給することができる。【選択図】図２
2015508190.tif 000002
【特許請求の範囲】
【請求項１】
スクリプト・ファイル依存性を示すデーターを出力するためのコンピューター実装方法であって、
コンピューターにおいて、クライアント側スクリプト・ファイルに対する参照を含むリソースに対応する実行可能コードを受信し、
前記参照に関連する前記クライアント側スクリプト・ファイルを登録し、
前記クライアント側スクリプト・ファイルに関連するスクリプト・ファイル依存性を解明し、
前記解明したスクリプト・ファイル依存性を示す前記データーを出力する、
コンピューター実施動作を実行することを含む、コンピューター実装方法。
【請求項２】
請求項１記載の方法において、前記データーが、
前記クライアント側スクリプト・ファイルに対応する第１ノードと、
前記クライアント側スクリプト・ファイルによって依存される第２クライアント側スクリプト・ファイルに対応する第２ノードと、
前記クライアント側スクリプト・ファイルと前記第２クライアント側スクリプト・ファイルとの間におけるエッジであって、前記クライアント側スクリプト・ファイルと前記第２クライアント側スクリプト・ファイルとの間のスクリプト・ファイル依存性を示す、エッジと、
を含むデーター構造を含む、方法。
【請求項３】
請求項１記載の方法であって、更に、前記実行可能コードおよびデーターを、前記コンピューターと通信可能なクライアント・デバイスに供給する動作を含み、前記クライアント・デバイスが、前記クライアント側スクリプト・ファイルを格納する、方法。
【請求項４】
請求項３記載の方法において、前記データーが、前記クライアント側スクリプト・ファイルに対する参照と、前記クライアント・デバイスにおける前記リソースのレンダリングの間に前記クライアント側スクリプト・ファイルがロードされるロード・レベルとを含むデーター構造を含む、方法。
【請求項５】
請求項１記載の方法において、前記クライアント側スクリプト・ファイルと関連する前記スクリプト・ファイル依存性を解明する動作が、
分析のために前記クライアント側スクリプト・ファイルを選択し、
前記クライアント側スクリプト・ファイルが以前に分析されたことがあるか否か判定し、
前記クライアント側スクリプト・ファイルが以前に分析されたことがないと判定したことに応答して、
前記クライアント側スクリプト・ファイルに、行ったことがあるという印を付け、
前記クライアント側スクリプト・ファイルに依存する他のクライアント側スクリプト・ファイルを識別する、
動作を含む、方法。
【請求項６】
請求項１記載の方法において、前記クライアント側スクリプト・ファイルを登録する動作が、
データー構造を作り、
ノードを前記データー構造に追加し、前記ノードが前記クライアント側スクリプト・ファイルに対応する、
動作を含む、方法。
【請求項７】
請求項１記載の方法において、前記クライアント側スクリプト・ファイルを登録する動作が、
ロード・レベル表を作り、
前記ロード・レベル表に参照を追加し、前記参照が、前記クライアント側スクリプト・ファイルに対する参照と、前記クライアント側スクリプト・ファイルに関連するロード・レベルの指示とを含む、
動作を含む、方法。
【請求項８】
請求項１記載の方法において、前記リソースが、前記クライアント側スクリプト・ファイルに対する参照を含むウェブ・ページを含む、方法。
【請求項９】
請求項１記載の方法において、前記リソースが、前記クライアント側スクリプト・ファイルに対する参照を含むウェブ・アプリケーションを含む、方法。
【請求項１０】
コンピューター読み取り可能命令が格納されたコンピューター記憶媒体であって、前記命令がコンピューターによって実行されると、前記コンピューターに、
リソースに対応するコードを受信させ、前記コードがクライアント側スクリプト・ファイルに対する参照を含み、
前記コードに基づいて、前記コードのレンダリングの間にクライアント側スクリプト・ファイルがロードされる時刻を示す少なくとも２つのロード・レベルを定めさせ、
前記コードによって参照される前記クライアント側スクリプト・ファイルを登録させ、
前記クライアント側スクリプト・ファイルの少なくとも１つによって依存される他のクライアント側スクリプト・ファイルを識別するために、前記登録されたクライアント側スクリプト・ファイルを分析させ、
前記他のクライアント側スクリプト・ファイルに関連するスクリプト・ファイル依存性を解明させ、
前記コンピューターと通信可能なクライアント・デバイスに、前記解明したスクリプト・ファイル依存性を示すデーターを出力させる、コンピューター記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  ウェブ・アプリケーションおよびサイトは、時として、クライアント側スクリプト・ファイルおよび／または他のクライアント側実行可能コードを使用して、これらのアプリケーションおよび／またはサイトに関連するロジックを提供することがある。したがって、特定のページまたはアプリケーションに関連するスクリプト・ファイルのリストを、クライアントによって格納されるファイルまたはアクセス可能なファイルにおいて示すことができる。これらのファイルおよび／またはリストは、サイト運営者または他のエンティティによって手作業でコンパイルおよび／または変更することができる。
【０００２】
[0002]  一部のウェブ・アプリケーションおよび／またはウェブ・サイトは、大多数のクライアント側スクリプト・ファイルを拠り所とすることがある。性能の問題および／または計算や他のリソースの限界のために、ウェブ・アプリケーションまたはウェブ・サイトに関連する全ての機能を含む１つのスクリプト・ファイルを格納および／またはロードすることは望ましくないおよび／または実用的ではない場合がある。したがって、クライアント側機能が複数のファイルに分解されることがあり、その一部または全部が他のスクリプト・ファイルに依存して、ウェブ・アプリケーションまたはサイトに関連する機能を提供する場合があり、あるいは依存しない場合もある。つまり、アプリケーションおよび／またはページは、サイトまたはアプリケーションに関連する特定のページのレンダリングの間に使用するかもしれない１つ以上のスクリプト・ファイルへの参照を含む場合がある。
【発明の概要】
【０００３】
[0003]  １つよりも多いスクリプト・ファイルが、サイトまたはアプリケーションに関連する特定のページにおいて参照される場合、スクリプト・ファイルがロードされる順序も重要になる可能性がある。具体的には、第２スクリプト・ファイルに依存性を有する第１スクリプト・ファイルを実行するために、第２スクリプト・ファイルを、第１スクリプト・ファイルの実行よりも前に、ロードする必要がある場合がある。つまり、スクリプト・ファイルに関連するロード順序が、ウェブ・ページまたはアプリケーションに関連する機能に影響を及ぼす可能性がある。
【０００４】
[0004]  加えて、スクリプト・ファイル参照がレンダリング中に実行される時点において、ページのレンダリング中にスクリプト・ファイルがロードされる場合がある。スクリプト・ファイル参照は、ウェブ・ページの参照に存在すること、またはページ本体のどこか等に存在することがある。したがって、スクリプト・ファイルの依存性を管理するには、時間がかかる手作業のプロセスが必要になる可能性がある。
【０００５】
[0005]  本明細書における開示が紹介されるのは、これらおよびその他の考慮事項に関してである。
[0006]  本明細書では、スクリプト・ファイルの依存性およびロード時間（load time)を管理するための概念および技術について記載する。本明細書において開示する概念および技術によれば、サーバー・コンピューターは、アプリケーション、ファイル、ウェブ・サイト、または他のリソース（「ページ」）を格納することができ、ネットワークを介してサーバー・コンピューターと通信可能なクライアント・デバイスにページを供給する。ページは、実行および／またはレンダリング中１つ以上のクライアント側スクリプト・ファイル（「スクリプト・ファイル」）を拠り所としてページに関連する機能を提供することができる。ページは、このページのロード、レンダリング、および／または相互作用の間種々の時点でスクリプト・ファイルをロードできるように、スクリプト・ファイルに対する参照を含むことができる。
【０００６】
[0007]  種々の実施形態によれば、サーバー・コンピューターは、サーバー・アプリケーションを実行して、ページをホストし、ページおよびスクリプト・ファイルを分析してスクリプト・ファイルの依存性およびスクリプト・ファイルに関連するロード・レベルを判定することができる。本明細書において使用する場合、「ロード・レベル」は、スクリプト・ファイルを参照するページをレンダリング、ロード、および／または実行する前、最中、または後にスクリプト・ファイルをロードする時点または段階を含むことができる。したがって、ロード・レベルは、スクリプト・ファイルに関連するロード時間を示すことができる。更に、複数のスクリプト・ファイルに対する複数のロード・レベルがグループと見なされるとき、ロード・レベルは、スクリプト・ファイルのロード順序を示すように解釈することができる。サーバー・アプリケーションは、ページおよび／またはスクリプト・ファイルを分析して、ページによって参照されたスクリプト・ファイルおよび／または他のスクリプト・ファイル内部のスクリプト・ファイルを識別し、ページと関連付けて使用されるスクリプト・ファイルのリストを編集することができる。また、サーバー・アプリケーションは、スクリプト・ファイルがロードされるページのロード、レンダリング、および／または相互作用の間の時間に関するロード・レベルを判定するように構成することができる。
【０００７】
[0008]  サーバー・アプリケーションは、スクリプト・ファイル有向グラフおよび／または表を生成することができ、これらは互いに組みあわせておよび／または独立して分析され、スクリプト・ファイルの依存性およびスクリプト・ファイル・ロード・レベルを判定することができる。データーは、ページをレンダリングするときに使用するために、クライアント・デバイスに供給することができる。実施形態では、データーをサーバー・コンピューターおよび／または他のデーター記憶デバイスに格納し、ページにアクセスするエンティティに供給することができる。
【０００８】
[0009]  一形態によれば、サーバー・コンピューターは、クライアント側スクリプト・ファイルへの参照を有するページを格納することができる。サーバー・コンピューターは、ページを分析する命令または要求を受けることができ、このコマンドまたは要求に応答して、依存性および／またはロード・レベルの判定を開始する。サーバー・コンピューターは、ページにおいて参照されたクライアント側スクリプト・ファイルを格納することができ、登録されたクライアント側スクリプト・ファイルの各々を分析して、クライアント側スクリプト・ファイル間の依存性を解明することができ、クライアント側スクリプト・ファイルの依存性および／またはクライアント側スクリプト・ファイルのロード・レベルを示すデーターを、他のエンティティによる格納または使用のために出力することができる。
【０００９】
[0010]  実施形態によれば、サーバー・コンピューターは、クライアント側スクリプト・ファイルを選択し、ノードを有向グラフに追加し、クライアント側スクリプト・ファイルに対する参照をロード・レベル表に追加し、追加のクライアント側スクリプト・ファイルがページにおいて参照されるか否か判定することによって、クライアント側スクリプト・ファイルを登録することができる。つまり、「ノード」は、有向ファイルにおけるクライアント側スクリプト・ファイルの表現に対応することができ、ノードの分析はそれぞれのクライアント側スクリプト・ファイルの分析に対応することができる。分析プロセスは、分析のための追加のクライアント側スクリプト・ファイルが残らなくなるまで繰り返すことができる。登録されたクライアント側スクリプト・ファイルを分析して、ファイル間の依存性を解明することができる。
【００１０】
[0011]  実施形態では、サーバー・コンピューターは、ノード・カラーリング(node coloring)を採用して、各クライアント側スクリプト・ファイルが１回だけ分析されることを確認するアルゴリズムを適用する。本明細書において使用する場合、「ノード・カラーリング」は、クライアント側スクリプト・ファイルが複数回ページによっておよび／またはそのページにおける他のクライアント側スクリプト・ファイルによって参照されても、特定のクライアント側スクリプト・ファイルが１回だけ登録され、このクライアント側スクリプト・ファイルについての依存性が１回だけ解明されることを確保するためにサーバー・コンピューターによって採用されるプロセスを含むことができる。つまり、ノード・カラーリングは、登録および／または分析されたクライアント側スクリプト・ファイルを、登録、訪問、および／または分析されたものとして印を付け、クライアント側スクリプト・ファイルを分析および／または登録するときに拡大するリソースを縮小することができる。クライアント側スクリプト・ファイルは、依存性を識別し、その依存性を、サーバー・コンピューターによって出力されるデーター構造において反映するために分析することができる。
【００１１】
[0012]  他の形態によれば、サーバー・コンピューターによって出力されるデーターは、有向グラフを含むことができる。有向グラフは、ページによって参照される各クライアント側スクリプト・ファイルに対応するノードを含むことができる。ノード間のエッジは、クライアント側スクリプト・ファイル間の依存性を示すことができる。また、サーバー・コンピューターによって出力されるデーターは、ロード・レベル表を含むことができる。このロード・レベル表は、クライアント側スクリプト・ファイルが、ページのレンダリング、ロード、またはページとの相互作用の間にロードされるロード・レベルを示す。ロード・レベルは、実現例に特定であることができ、したがって、任意の数のロード・レベルを含むことができる。
【００１２】
[0013]  尚、以上で説明した主題は、コンピューター制御装置、コンピューター・プロセス、計算システム、またはコンピューター読み取り可能記憶媒体のような製品として実現できることは認められてしかるべきである。これらおよび種々の他の特徴は、以下の詳細な説明を読み添付図面を検討することによって明白になろう。
【００１３】
[0014]  この摘要は、詳細な説明において以下で更に説明する概念から選択したものを、簡略化した形態で紹介するために設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を識別することを意図するのではなく、特許請求する主題の範囲を限定するために使用されることを意図するのでもない。更に、特許請求する主題は、本開示の任意の部分に記される、任意の欠点を解決する実現例にも全ての欠点を解決する実現例にも限定されない。
【図面の簡単な説明】
【００１４】
【図１】図１は、本明細書において開示する種々の実施形態のための例示的動作環境を示すシステム図である。
【図２】図２は、例示的実施形態にしたがって、スクリプト・ファイルの依存性およびロード時間を管理する方法の形態を示す流れ図である。
【図３】図３は、例示的実施形態にしたがって、ページに関連するスクリプト・ファイルを登録する方法の形態を示す流れ図である。
【図４】図４は、例示的実施形態にしたがって、スクリプト・ファイルの依存性を解明する方法の形態を示す流れ図である。
【図５】図５は、例示的実施形態によるスクリプト・ファイル有向グラフを示すブロック図である。
【図６】図６は、例示的実施形態によるスクリプト・ファイル・ロード・レベル表を示す線図である。
【図７】図７は、本明細書において紹介する実施形態の形態を実現することができる計算システムの例示的なコンピューター・ハードウェアおよびソフトウェア・アーキテクチャーを示すコンピューター・アーキテクチャー図である。
【発明を実施するための形態】
【００１５】
[0022]  以下の詳細な説明は、スクリプト・ファイルの依存性およびロード時間を管理するための概念および技術を目的とする。本明細書において説明する概念および技術によれば、サーバー・コンピューターが、スクリプト・ファイルに対する参照を有するページまたは他のリソースを格納する。サーバー・コンピューターは、このページを分析して、スクリプト・ファイル依存性の判定および／またはスクリプト・ファイル・ロード・レベルの判定を開始する。サーバー・コンピューターは、そのページにおいて参照されたスクリプト・ファイルを登録し、登録されたスクリプト・ファイルの各々を分析して、スクリプト・ファイル間の依存性を解明し、スクリプト・ファイル依存性および／またはスクリプト・ファイル・ロード・レベルを出力することができる。サーバー・コンピューターによって出力されるデーターは、有向グラフおよび／または表を含むことができる。有向グラフは、ページによって参照されたスクリプト・ファイルまたはページによって参照された他のスクリプト・ファイルの各々に対応するノード含むことができる。ノード間のエッジは、スクリプト・ファイル間の依存性を示すことができる。また、サーバー・コンピューターによって出力されるデーターは、ロード・レベル表も含むことができ、このロード・レベル表は、ページのレンダリング、ロード、または相互作用の間にスクリプト・ファイルがロードされるべきロード・レベルを示す。ロード・レベルは、実現例に特定であることができ、したがって任意の数のロード・レベルを含むことができる。
【００１６】
[0023]  実施形態によれば、サーバー・コンピューターは、スクリプト・ファイルを選択し、ノードを有向グラフに追加し、スクリプト・ファイルに対する参照をロード・レベル表に追加し、ページにおいて追加のスクリプト・ファイルが参照されるか否か判定することによって、スクリプト・ファイルを登録する。本プロセスは、分析のための追加のクライアント側スクリプト・ファイルが残らなくなるまで繰り返すことができる。登録されたスクリプト・ファイルを分析して、ファイル間の依存性を解明することができる。サーバー・コンピューターは、各スクリプト・ファイルが１回だけ分析されることを確保するためにノード・カラーリングを採用するアルゴリズムを適用し、分析中におけるレイテンシおよび／またはリソース使用を低減することができる。スクリプト・ファイルを分析して依存性を識別し、サーバー・コンピューターによって出力されるデーターにおける依存性を反映することができる。
【００１７】
[0024]  本明細書において説明する主題は、オペレーティング・システムおよびアプリケーション・プログラムのコンピューター・システムにおける実行と合わせて実行するプログラム・モジュールという一般的なコンテキストで紹介するが、他の実現例も他のタイプのプログラム・モジュールと組みあわせて実行できることは当業者には認められよう。一般に、プログラム・モジュールは、ルーチン、プログラム、コンポーネント、データー構造、および他のタイプの構造を含み、特定のタスクを実行するかまたは特定の抽象データー型を実装する。更に、本明細書において説明する主題は、ハンドヘルド・デバイス、マルチプロセッサー・システム、マイクロプロセッサー・ベースまたはプログラマブル消費者用電子機器、ミニコンピューター、メインフレーム・コンピューター等を含む他のコンピューター・システム構成とでも実施できることは、当業者には認められよう。
【００１８】
[0025]  以下の詳細な説明では、その一部をなす添付図面を参照する。図面には、一例として具体的な実施形態または例が示される。これより図面を参照すると、同様の参照番号は、様々な図にわたって同様のエレメントを表し、スクリプト・ファイルの依存性およびロード時間を管理するための計算システム、コンピューター読み取り可能記憶媒体、およびコンピューター実装方法の形態を紹介する。
【００１９】
[0026]  これより図１を参照し、本明細書において紹介する種々の実施形態に対する一動作環境１００の形態について説明する。図１に示す動作環境１００は、通信ネットワーク（「ネットワーク」）１０４の一部として、またはこれと通信可能に動作するサーバー・コンピューター１０２を含む。サーバー・コンピューター１０２は、オペレーティング・システム（図１には示されない）と、例えば、サーバー・アプリケーション１０６および／または他のアプリケーション・プログラムというような１つ以上のアプリケーション・プログラムを実行するように構成される。
【００２０】
[0027]  オペレーティング・システムは、サーバー・コンピューター１０２の動作を制御するためのコンピューター・プログラムである。サーバー・アプリケーション１０６は、オペレーティング・システムの上で実行して、スクリプト・ファイルの依存性および／またはスクリプト・ファイルのロード時間を管理するための、本明細書において説明する機能を設けるように構成された実行可能プログラムである。種々の実施形態によれば、サーバー・コンピューター１０２は、ウェブ・サーバーに関連する機能を設けるように構成され、１つ以上のページ、サイト、アプリケーション、および／または他のリソースを１つ以上のページ（「ページ」）１０８を介してホストするように構成することができる。したがって、ページ１０８は、１つ以上のアプリケーション、ウェブ・サイト、ウェブ・ページ、および／または他のリソースに関係することができる。
【００２１】
[0028]  ページ１０８は、クライアント・デバイス１１０のような、サーバー・コンピューター１０２と通信可能な１つ以上のデバイスまたは他のエンティティに供給することができる。種々の実施形態によれば、クライアント・デバイス１１０の機能は、デスクトップ、タブレット、またはラップトップ・コンピューター・システムのような、パーソナル・コンピューター（「ＰＣ」）によって設けられる。また、クライアント・デバイス１１０の機能も、限定ではないが、サーバー・コンピューター、ハンドヘルド・コンピューター、ネットブック・コンピューター、埋め込み型コンピューター・システム、パーソナル・ディジタル・アシスタント、移動体電話機、スマート・フォン、または他の計算デバイスを含む、他のタイプの計算システムによって設けることができる。本明細書において開示する概念および技術をについて説明する目的に限って、クライアント・デバイス１１０をＰＣと記述する。尚、この実施形態は例示であり、限定であると解釈しては決してならないことは理解されてしかるべきである。
【００２２】
[0029]  種々の実施形態によれば、クライアント・デバイス１１０はオペレーティング・システム１１２および１つ以上のアプリケーション・プログラム１１４を実行する。アプリケーション・プログラムは、例えば、文書処理プログラム、ウェブ・ブラウザー等のような種々の機能を設けることができる。本明細書において開示する概念および技術について説明する目的に限って、アプリケーション・プログラム１１４は、本明細書では、以上で説明したページ１０８にアクセスし、および／またはページ１０８を使用するために使用されるウェブ・ブラウザーと記述する。したがって、クライアント・デバイス１１０は、ページ１０８のアクセスによって、１つ以上のウェブ・アプリケーションおよび／またはウェブ・サイトに関連する機能を、クライアント・デバイス１１０のユーザに提供することができる。
【００２３】
[0030]  種々の実施形態によれば、クライアント・デバイス１１０は、１つ以上のクライアント側スクリプト・ファイル（「スクリプト・ファイル」）１１６を格納するように構成される。スクリプト・ファイル１１６は、種々のアプリケーション・コンポーネント、アプリケーション・モジュール、拡張、ウェブ・アドイン、他のファイル、および／または他のタイプの実行可能コードを含むことができる。実施形態では、例えば、スクリプト・ファイル１１６が、例えば、JAVASCRIPT（登録商標）、VBSCRIPT、XMLユーザ・インターフェース・マークアップ言語（「ＸＵＬ」）、拡張可能スタイルシート言語変換（「ＸＳＬＴ」）、他の言語等のような、種々のスクリプト言語でフォーマットされた実行可能コードを含む。クライアント・デバイス１１０は、スクリプト・ファイル１１６をページ１０８と併せて使用して、クライアント・デバイス１１０のユーザに、サーバー・コンピューター１０２に関連する機能を提供することができる。具体的には、クライアント・デバイス１１０に供給されるページ１０８は、スクリプト・ファイル１１６の１つ以上に対する１つ以上の参照を含むことができる。つまり、クライアント・デバイス１１０によるページ１０８のレンダリングおよび／または他の実行の間、クライアント・デバイス１１０によってスクリプト・ファイル１１６を引き出し、ロードし、および／または実行して、サーバー・コンピューター１０２に関連する機能を設けることができる。
【００２４】
[0031]  種々の実施形態によれば、ページ１０８は、ページ１０８内部の種々の位置におけるスクリプト・ファイルを参照することができる。例えば、ページ１０８が、ウェブ・ページのヘッダ部分におけるスクリプト・ファイル１１６、ウェブ・ページ本体内部の種々の位置におけるスクリプト・ファイル１１６、および／またはページ１０８内部のどこかにおけるスクリプト・ファイル１１６の内１つを参照することもできる。つまり、クライアント・デバイス１１０は、ページ１０８のレンダリングまたは目視の間種々の時点においてスクリプト・ファイル１１６を引き出し、ロードし、および／または実行することができる。種々の実施形態によれば、クライアント・デバイス１１０は、スクリプト・ファイル１１６の１つ以上に対する１つ以上の参照を含むページ１０８の１つを受信する。更に、ページ１０８は、スクリプト・ファイル１１６の１つ以上に対する複数の参照を含むことができる。場合によっては、ページ１０８の１つにおいて参照された特定のスクリプト・ファイル１１６が、他のスクリプト・ファイル１１６に依存することもある。したがって、クライアント・デバイス１１０は、ページ１０８内において参照されるスクリプト・ファイル１１６を引き出し、ロードし、および／または実行することができる。場合によっては、特定のロード順序でスクリプト・ファイル１１６をロードすることによって、ページ１０８のレンダリングおよび／またはページ１０８との相互作用の間、クライアント・デバイス１１０の性能を向上させることもできる。
【００２５】
[0032]  具体的には、特定のページ１０８における第１スクリプト・ファイル１１６が第２スクリプト・ファイル１１６によって依存される場合、これらのスクリプト・ファイル１１６のロード順序は、ページ１０８のレンダリングの間信頼性が高いユーザ体験を提供するためには重要な考慮事項となり得る。例えば、第２スクリプト・ファイル１１６が第１スクリプト・ファイル１１６のロード前に実行される場合、クライアント・デバイス１１０は、第２スクリプト・ファイル１１６の実行中に第１スクリプト・ファイル１１６をロードすればよい。第１スクリプト・ファイル１１６のロード中に生ずるレイテンシは、望ましくない可能性がある。加えて、または代わりに、参照されるスクリプト・ファイル１１６が第２スクリプト・ファイル１１６の実行の前にロードされない場合、第２スクリプト・ファイル１１６の実行が失敗するまたは中断されることもあり得る。
【００２６】
[0033]  したがって、本明細書において開示する概念および技術は、スクリプト・ファイル１１６または他のクライアント側実行可能コードの依存性を識別し、スクリプト・ファイル１１６のロード順序を決定することを含む。種々の実施形態によれば、サーバー・アプリケーション１０６は、ページ１０８を分析し、ページ１０８によって参照されるスクリプト・ファイル１１６を識別し、ページ１０８内部で参照されるスクリプト・ファイル１１６に関連する依存性および／またはロード順序を指定するためのデーター１１８を生成するように構成される。
【００２７】
[0034]  種々の実施形態によれば、サーバー・コンピューター１０２は、サーバー・アプリケーション１０６の実行によって、有向グラフ（「グラフ」）１２０および／または、決定された依存性および／またはロード・レベル、ロード時間、および／またはロード順序（「ロード・レベル」）を指定する表またはリスト（「表」）１２２を生成する。データー１１８のこれらおよび他の形態を、ページ１０８と共に、またはページ１０８に加えて、クライアント・デバイス１１０に供給することができる。したがって、クライアント・デバイス１１０は、データー１１８の分析によって、ページ１０８のレンダリングおよび／または他の実行中にスクリプト・ファイル１１６がロードされる順序を決定することができる。データー１１８によって指定された順序でスクリプト・ファイル１１６をロードすることによって、クライアント・デバイス１１０は、ページ１０８によって参照されるときに単にスクリプト・ファイル１１６にアクセスし、ロードし、および／または実行する場合に対して、信頼性および／またはレイテンシを向上させて、ページ１０８に関連する相互作用を提供することができる。
【００２８】
[0035]  他の実施形態では、サーバー・コンピューター１０２は、ページ１０８への入力のためにスクリプト・タグおよび／または他の参照を生成する。例えば、スクリプト・コンピューター１０２は、種々のスクリプト・ファイルの依存性およびロード・レベル等を解明することに基づいて、特定のスクリプト・ファイル１１６をページ・ヘッダにロードすべきことを決定することができる。したがって、サーバー・コンピューター１０２は、この決定を示す出力を生成するように構成することができる。この例では、サーバー・コンピューター１０２は、例えば、<script>タグまたは他の参照を生成し、この<script>タグをページ１０８の<head>に埋め込むことができる。尚、この実施形態は例示であり、限定するように解釈しては決してならないことは理解されてしかるべきである。実施形態では、サーバー・コンピューター１０２が、ページ１０８に出力される参照以外には、クライアント・デバイス１１０に出力を供給する必要がない場合もある。したがって、クライアント・デバイス１１０は、本明細書において説明するスクリプト・ファイル依存性の決定を知ってもまたは知らなくてもよく、代わりに従前のやり方でページ１０８を単に実行することができる。しかしながら、実施形態では、スクリプト・ファイル１１６のロード・レベルおよび依存性が、本明細書において開示するように、サーバー・コンピューター１０２による最適性能のために、解明されているとよい場合もある。
【００２９】
[0036]  本明細書において更に詳しく説明するが、サーバー・コンピューター１０２は、ページ１０８を分析し、および／または１つ以上のアルゴリズムをページ１０８に関連するコードに適用することによって、データー１１８を生成するように構成される。この分析によって、サーバー・コンピューター１０２は、分析されたページ１０８によって参照されるスクリプト・ファイル１１６を識別し、ある場合には、スクリプト・ファイル１１６間の依存性を判定し、これらおよび／または他の要因に基づいて、ページ１０８に含まれるスクリプト・ファイル１１６のロード順序を決定することができる。サーバー・コンピューター１０２のこれらおよび他の機能は、１つ以上のスケジュールにしたがって、ページ１０８に対する変更が行われたまたは検出されたときに、および／または他の時点において、要求に応じて、実行またはアクセスすることができる。サーバー・コンピューター１０２は、データー１１８をサーバー・コンピューター１０２に関連するデーター記憶デバイスに、および／またはサーバー・コンピューター１０２によってアクセス可能なデーター記憶デバイス（図１には示されない）に格納することができる。
【００３０】
[0037]  種々の実施形態によれば、サーバー・コンピューター１０２は依存性判定を開始し、ページ１０８の分析を始める。第１動作の間、サーバー・コンピューター１０２は、ページ１０８に対応するコード内部で、ノードまたはスクリプト・ファイル１１６を識別する。ノードの登録の間、サーバー・コンピューター１０２は、コードをサーチしてスクリプト・ファイル１１６に対する参照を求めることができ、スクリプト・ファイル１１６に対応するノードを、ページ１０８に関連するグラフ１２０に追加することができる。また、サーバー・コンピューター１０２は、スクリプト・ファイル１１６に対する参照を、ページ１０８に関連する表１２２に追加することができる。このように、サーバー・コンピューター１０２は、特定のページ１０８によって参照されるスクリプト・ファイル１１６毎に、グラフ１２０と、ノードまたは他の表現を含む表１２２とを生成することができる。
【００３１】
[0038]  また、サーバー・コンピューター１０２は、スクリプト・ファイル１１６間の依存性を解明するように構成することもできる。具体的には、サーバー・コンピューター１０２は、ＸＭＬマニフェスト、リスト、あるいはランタイム中または他の時点に参照することができるスクリプト・ファイルの依存性を示す他のデーターを得て、スクリプト・ファイルの依存性を判定することができる。実施形態では、サーバー・コンピューター１０２がランタイムまたは他の時点においてスクリプト・ファイル依存性の手作業の記述を可能にする場合もある。実施形態では、サーバー・コンピューター１０２がページ１０８内部における各スクリプト・ファイル１１６の参照を分析し、特定のスクリプト・ファイル１１６が他のスクリプト・ファイル１１６に依存するか否か判定することもできる。
【００３２】
[0039]  実施形態では、サーバー・コンピューター１０２が、ページ１０８において識別された各ノードまたはスクリプト・ファイル１１６を再帰呼び出しして(recurse)、依存性を解明し、ページ１０８によって参照されるスクリプト・ファイル１１６のロード順序を決定し、および／またはＸＭＬマニフェスト、リスト、または先に説明したような他のファイルに基づいて同様のステップを完了する場合もある。ページ１０８に対応するサーバー側実行可能コードを処理する間および／またはそうでなければ特定のページ１０８に対してスクリプト・ファイル１１６を登録する間、サーバー・コンピューター１０２は、スクリプト・ファイル１１６に対応するノードを、例えば、前述した表１２２および／またはグラフ１２０のような、１つ以上の種々のデーター構造に追加することができる。登録後、サーバー・コンピューター１０２は、判定されたスクリプト・ファイル１１６の依存性および／またはロード・レベルを実現するために出力を生成することができる。
【００３３】
[0040]  出力の間、以下で更に詳しく説明するが、サーバー・コンピューター１０２は、データー構造を処理するように構成することができる。例えば、サーバー・コンピューター１０２は、グラフ１２０を処理することができる。実施形態では、サーバー・コンピューター１０２が、ノード・カラーリングを使用してグラフ１２０を処理する場合がある。実施形態では、サーバー・コンピューター１０２が、参照を表１２２に追加することによってスクリプト・ファイル１１６を登録し、次いでスクリプト・ファイル１１６に対する参照をグラフ１２０に追加する場合もある。サーバー・コンピューター１０２は、グラフ１２０に追加されたノードに着色し、その依存性を解明し、ノードに関連する子ノードの各々に行く(visit)ことができる。所与のノードの子ノードに行った後、サーバー・コンピューター１０２はスクリプト・ファイル１１６に対するしかるべきスクリプト参照をページ出力に出力することができる。
【００３４】
[0041]  実施形態では、サーバー・コンピューター１０２がノード・カラーリングを採用して、ノードの依存性を解明することに関連する分析が、各ノードに関して１回だけ行われることを確保する場合がある。本明細書において使用する場合、「ノード・カラーリング」は、本明細書において説明する分析の間に費やされる時間およびリソースを低減するために、サーバー・コンピューター１０２によって使用されるプロセスを含むことができる。「ノード・カラーリング」を使用することによって、サーバー・コンピューター１０２は、特定のスクリプト・ファイル１１６がページ１０８、グラフ１２０、表１２２、他のデーター構造、および／またはページ１０８内部で参照される他のスクリプト・ファイル１１６内部でまたはこれらによって複数回参照されても、特定のスクリプト・ファイル１１６またはそれに関連するノードは、１回だけ登録することができ、スクリプト・ファイル１１６に対する依存性を１回だけ解明することができることを確保することができる。
【００３５】
[0042]  実現例の中には、例えば、サーバー・コンピューター１０２が、ページ１０８内で参照されるスクリプト・ファイル１１６に関連するグラフ１２０においてノードを選択し、このノードに以前に行ったことがあるか否か判定する場合がある。このノードに以前に行ったことがある場合、サーバー・コンピューター１０２はこのノードの分析を終了することができる。このノードに以前に行ったことがない場合、サーバー・コンピューター１０２はこのノードを行ったものとして「着色」し、このノードに関連する依存性を解明することができる。ページ１０８内部で識別された各ノード間の依存性を解明した後、サーバー・コンピューター１０２はデーター１１８を出力し、および／またはデーター１１８をデーター記憶デバイスに格納することができる。
【００３６】
[0043]  サーバー・コンピューター１０２は、データー１１８をクライアント・デバイス１１０に供給することができる。データー１１８は、ユーザの好み、設定、および／または他の考慮事項にしたがって、ページ１０８と共に供給すること、および／または別々に種々の時点に供給することができる。クライアント・デバイス１１０は、データー１１８を使用して、ページ１０８に関連するスクリプト・ファイル１１６のロード順序を決定することができる。したがって、クライアント・デバイス１１０は、実施形態にしたがって、理論的に最良の順序でスクリプト・ファイル１１６をロードすることによって、ページ１０８に関連する機能を最適な性能および／または信頼性で提供することができる順序で、スクリプト・ファイル１１６をロードすることができる。スクリプト・ファイル１１６の依存性およびロード時間を管理するこれらおよび他の形態について、特に図２から図６を参照して、以下で更に詳しく説明する。
【００３７】
[0044]  図１は、１つのサーバー・コンピューター１０２、１つのネットワーク１０４，および１つのクライアント・デバイス１１０を示す。しかしながら、動作環境１００の実現例には、複数のサーバー・コンピューター１０２、複数のネットワーク１０４、および／または複数のクライアント・デバイス１１０を含む場合もあることは、理解されてしかるべきである。つまり、図示する実施形態は、例示であるとして理解されてしかるべきであり、限定であると解釈しては決してならない。
【００３８】
[0045]  これより図２に移り、スクリプト・ファイルの依存性およびロード時間を管理する方法２００の形態について詳しく説明する。尚、本明細書において開示する方法の動作は、必ずしも任意の特定の順序では提示されないこと、そして動作の一部または全部の代わりの順序（１つまたは複数）での実行も可能であり考えられることは、理解されてしかるべきである。これらの動作は、説明および例示を容易にするために、その実際に示す順序(demonstrated order)で提示されたのである。添付した請求項の範囲から逸脱することなく、動作を追加すること、省略すること、および／または同時に実行することもできる。
【００３９】
[0046]  また、図示の方法は、任意の時点で終了させることができ、その全体を実行する必要がないことも理解されてしかるべきである。これらの方法の一部または全部の動作、および／または実質的に同等の動作は、以下で定められるような、コンピューター記憶媒体上に含まれるコンピューター読み取り可能命令の実行によって遂行することができる。「コンピューター読み取り可能命令」という用語およびその異形は、本明細書および特許請求の範囲において使用される場合、ルーチン、アプリケーション、アプリケーション・モジュール、プログラム・モジュール、プログラム、コンポーネント、データー構造、アルゴリズム等を含むように、ここでは広く使用される。コンピューター読み取り可能命令は、単一プロセッサーまたはマルチプロセッサー・システム、ミニコンピューター、メインフレーム・コンピューター、パーソナル・コンピューター、ハンドヘルド計算デバイス、マイクロプロセッサー・ベースのプログラマブル消費者用電子機器、その組み合わせ等を含む、種々のシステム構成において実現することができる。
【００４０】
[0047]  つまり、本明細書において説明する論理動作は、（１）計算システム上で実行するコンピューター実装アクト(computer-implemented act)またはプログラム・モジュールのシーケンスとして、および／または（２）計算システム内部において相互接続された機械論理回路または回路モジュールとして実現される。実施態様は、計算システムの性能およびその他の要件に依存する選択事項である。したがって、本明細書において説明する論理動作は、状態、動作、構造的デバイス、アクト、またはモジュールといように、様々に呼ばれる。これらの動作、構造的デバイス、アクト、およびモジュールは、ソフトウェア、ファームウェア、特殊目的ディジタル・ロジック、およびその任意の組みあわせで実現することができる。
【００４１】
[0048]  本開示の概念を例示し説明する目的に限って、本明細書において開示する方法は、サーバー・コンピューター１０２によって実行されるものとして説明する。尚、これらの実施形態は例示であり、限定するように解釈しては決してならないことは理解されてしかるべきである。方法２００は、動作２０２において開始し、ここでサーバー・コンピューター１０２は、特定のページ１０８または他のリソースに関連する、スクリプト・ファイル依存性の判定および／またはスクリプト・ファイル・ロード時間決定を開始する。実施形態では、サーバー・コンピューター１０２が、クライアント・デバイス１１０のようなサーバー・コンピューター１０２のクライアント、アドミニストレーター、サイト運営者、または他のエンティティから、あるいは他の場所から、スクリプト・ファイル１１６についてスクリプト・ファイル依存性を判定するおよび／またはロード時間を決定する命令を受ける場合もある。
【００４２】
[0049]  また、サーバー・コンピューター１０２は、ページ１０８のようなリソースに対する要求に基づいて、依存性および／またはロード時間の決定を開始することもできる。この要求は、アプリケーション・コール、スケジューリングされたイベントの到達または実行、および／またはサーバー・コンピューター１０２に本明細書において説明した機能を実行するように促すための種々の他の要求またはコマンドに応答して受けることができる。本明細書において説明した機能は、種々の時点において、種々のコマンドに応答して、および／または種々の他の考慮事項に基づいて提供することができるので、これらの実施形態は例示であり、限定であるように解釈しては決してならないことは理解されてしかるべきである。
【００４３】
[0050]  動作２０２から、方法２００は動作２０４に進み、ここで、サーバー・コンピューター１０２は、ページ１０８に関連するスクリプト・ファイル１１６を登録する。種々の実施形態によれば、サーバー・コンピューター１０２は、様々な関数をコールして、および／または１つ以上のアルゴリズムを実行して、ページ１０８に対応するコードを分析するように構成される。ページ１０８に対応するコードの分析中に、サーバー・コンピューター１０２はページ１０８内部のスクリプト・ファイル１１６に対する参照を識別することができる。識別された各スクリプト・ファイル１１６を、グラフ１２０のような有向グラフ、およびリスト、マニフェスト、または表１２のような表に追加することができる。スクリプト・ファイル１１６の登録については、図３を参照して以下で更に詳しく説明する。
【００４４】
[0051]  動作２０４から、方法２００は動作２０６に進み、ここで、サーバー・コンピューター１０２は動作２０４において登録された各スクリプト・ファイル１１６の再帰呼び出しを行う。「再帰呼び出しを行う」という用語は、本明細書において使用する場合、動作２０４において識別されたスクリプト・ファイル１１６の各々を分析し、スクリプト・ファイル１１６の各々に関連する依存性を解明することを意味する。更に、各スクリプト・ファイル１１６の再帰呼び出しを行う間、再帰呼び出しが行われるスクリプト・ファイル１１６によって参照される任意のスクリプト・ファイル１１６も分析され、これらのスクリプト・ファイル１１６の依存性も解明することができる。したがって、各スクリプト・ファイル１１６の再帰呼び出しの間、そのスクリプト・ファイルの参照がページ１０８内部で行われるか、および／またはページ１０８によって参照されるスクリプト・ファイル１１６によって参照されるかには関係なく、任意のスクリプト・ファイル１１６の依存性を解明することができる。つまり、スクリプト・ファイル１１６の再帰呼び出しの間、複数のスクリプト・ファイル１１６をサーバー・コンピューター１０２によって分析することができる。
【００４５】
[0052]  種々の実施形態によれば、サーバー・コンピューター１０２は、再帰呼び出し動作の間にノード・カラーリングを使用して１回各ノードまたはスクリプト・ファイル１１６に行くように、そしてある実施形態では１回だけ行くように構成される。したがって、本明細書において開示する概念および技術の実施形態は、各スクリプト・ファイル１１６の分析を１回の動作に限定することによって、特定および依存性解明を効率的で完全なやり方で可能にする。スクリプト・ファイル１１６の再帰呼び出しについては、図４を参照しながら以下で更に詳しく説明する。
【００４６】
[0053]  動作２０６から、方法２００は動作２０８に進み、ここで、サーバー・コンピューター１０２は出力を生成する。実施形態では、サーバー・コンピューター１０２によって生成される出力は、ページ１０８に関連するページ出力においてスクリプト参照を出力することを含む場合がある。例えば、出力は、決定された通りに、ページ出力の<head>またはページ１０８内の他の場所に<script>タグを含むことができる。他の実施形態では、動作２１０において生成される出力は、図１を参照して先に説明したデーター１１８を含むことができるが、これに限定されるのではない。したがって、動作２１０において生成される出力は、前述のグラフ１２０および／または表１２２を含むことができる。グラフ１２０および／または表１２２については、図５および図６を参照しながら以下で更に詳しく説明する。端的に言うと、グラフ１２０および表１２２は、サーバー・コンピューター１０２によって出力されクライアント・デバイス１１０に送信することができるデーター構造を含むことができる。
【００４７】
[0054]  クライアント・デバイス１１０は、グラフ１２０および／または表１２２を使用して、スクリプト・ファイル１１６に対するロード順序を決定することができる。したがって、動作２０８において出力されたデーター１１８は、スクリプト・ファイル依存性および／または他の考慮事項に基づいてサーバー・コンピューター１０２によって決定された順序で、スクリプト・ファイル１１６をロードするために使用することができる。データー１１８は、サーバー・コンピューター１０２、サーバー・コンピューター１０２によってアクセス可能なデーター記憶デバイス、および／またはサーバー・コンピューター１０２による格納を伴ってまたは伴わずに、クライアント・デバイス１１０に送信することができる。動作２０８から、方法２００は動作２１０に進む。方法２００は、動作２１０において終了する。
【００４８】
[0055]  これより図３に移り、ページに関連するスクリプト・ファイルを登録する方法３００の形態について詳細に説明する。図２を参照して先に注記したように、図３を参照してここで説明する動作は、方法２００の動作２０４において実行することができるが、必ずしもそうしなくてもよい。したがって、ここで説明する図３の実施形態は例示であり、限定するように解釈しては決してならないことは理解されてしかるべきである。
【００４９】
[0056]  方法３００は、動作３０２において開始し、ここで、サーバー・コンピューター１０２は特定のページ１０８内部においてスクリプト・ファイル１１６を識別する。サーバー・コンピューター１０２は、ページ１０８に関連するコード内部の種々の位置においてページ１０８の分析を開始して、スクリプト・ファイル１１６をサーチし識別することができる。実施形態では、サーバー・コンピューター１０２が、ページ１０８に関連するコードの開始時に動作３０２の分析を開始する場合もある。他の実施形態では、サーバー・コンピューター１０２は、ページ１０８に関連するソース・コードのヘッダ、本体、または他の部分から分析を開始し、更に他の実施形態では、分析がランダムな進入ポイントにおいて開始する場合もある。ページ１０８の分析をどこから開始するかについての決定は、ユーザの設定または他の選択肢、あるいは他の考慮事項にしたがって行うことができる。分析がどのようにおよび／またはどこから開始するかには関係なく、サーバー・コンピューター１０２はページ１０８を分析し、スクリプト・ファイル１１６を識別することができる。
【００５０】
[0057]  サーバー・コンピューター１０２は、ファイル・フォーマット、拡張子等に基づいて、ページ１０８内部のスクリプト・ファイル１１６に対する参照を認識するように構成することができる。他の実施形態では、サーバー・コンピューター１０２は、ページ１０８に関連するサーバー側実行可能コードにおいてレジスターへのコールを生成し、スクリプト・ファイル１１６を識別するためにスクリプト・ファイル１１６をサーチすることおよび／またはページ１０８を分析することなく、スクリプト・ファイル１１６を識別する。実施形態では、前述のように、スクリプト・ファイル１１６がJAVASCRIPT（登録商標）ファイルであることもあり、したがって.js拡張子を有することができる。つまり、サーバー・コンピューター１０２は、例えば、ページ１０８をサーチして、JAVASCRIPT（登録商標）拡張子に対応するテキスト「.js」を求めることによって、スクリプト・ファイルに対する参照を認識することができる。スクリプト・ファイル１１６の他のフォーマットおよび／またはタイプも可能であり考えられるので、この実施形態は例示であり、限定するように解釈しては決してならないことは理解されてしかるべきである。
【００５１】
[0058]  動作３０２から、方法３００は動作３０４に進み、ここで、サーバー・コンピューター１０２は、動作３０２において識別されたスクリプト・ファイル１１６に対応するノードを、グラフ１２０のような有向グラフに追加する。ノードについては、図５を参照して、以下で更に詳しく示し説明する。端的に言うと、サーバー・コンピューター１０２は、動作３０２において識別されたスクリプト・ファイル１１６の表現を有向グラフに追加することができる。スクリプト・ファイル１１６に関連する依存性は、図４を参照して以下で説明する方法４００のような依存性解明プロセスの間に判定することができる。したがって、ノードおよびノード間の依存性を有向グラフに含ませることができる。有向グラフについては、図４および図５を参照しながら以下で更に詳しく示し説明する。
【００５２】
[0059]  動作３０４から、方法２００は動作３０６に進み、ここで、サーバー・コンピューター１０２は、動作３０２において識別されたスクリプト・ファイル１１６に対する参照を、リスト、マニフェスト、表、または表１２２のような他のデーター構造に追加する。実施形態では、スクリプト・ファイル１１６に対する参照が、スクリプト・ファイル１１６の識別を名称で含む場合がある。スクリプト・ファイル１１６に対する参照は、そのスクリプト・ファイル１１６に関連するロード・レベルで、表１２２に追加することができる。実施形態では、スクリプト・ファイル１１６に関連するロード・レベルは、スクリプト・ファイル１１６の再帰呼び出しの間に判定することができる。これについては、図４を参照しながら以下で更に詳しく示し説明する。したがって、動作３０６において表１２２に追加される参照は、ロード・レベルの指示を含んでも含まなくてもよく、したがって、以下で更に詳しく説明するように、ノードおよび／またはスクリプト・ファイル１１６の再帰呼び出しの間にリファインされてもされなくてもよい。
【００５３】
[0060]  動作３０６から、方法３００は動作３０８に進み、サーバー・コンピューター１０２は、ページ１０８が追加のスクリプト・ファイル１１６を含むか否か判定する。実施形態によれば、サーバー・コンピューター１０２はページ１０８を分析して、ページ１０８に含まれるスクリプト・ファイル１１６の数を判定することができ、および／またはページ１０８におけるスクリプト・ファイル１１６を識別し、ページ１０８をサーチして追加のスクリプト・ファイル１１６を求め続けることができる。したがって、動作３０８は、ページ１０８を分析して追加のスクリプト・ファイル１１６をサーチすること、および／またはページ１０８において識別された各スクリプト・ファイル１１６が登録されたか否か判定することを含むことができる。サーバー・コンポーネント１０２が、動作３０８において、追加のスクリプト・ファイル１１６がページ１０８に含まれると判定した場合、方法３００は動作３０２に戻ることができ、ここで、サーバー・コンピューター１０２は他のスクリプト・ファイル１１６を識別することができる。動作３０２〜３０８は、サーバー・コンピューター１０２が、動作３０８の任意の繰り返しにおいて、他のスクリプト・ファイル１１６がページ１０８に含まれないと判定するまで繰り返すことができる。
【００５４】
[0061]  サーバー・コンピューター１０２が、動作３０８の任意の繰り返しにおいて、他のスクリプト・ファイル１１６がページ１０８に含まれないと判定した場合、方法３００は動作３１０に進む。方法３００は動作３１０において終了する。
【００５５】
[0062]  考えられる１つの実施形態によれば、サーバー・コンピューター１０２は、コンピューター実行可能コードの実行によって、方法３００を参照して以上で説明した機能の一部または全部を設け、あるいはこの機能を設けない。コンピューター実行可能コードの一実施形態を、以下の表１に紹介する。表１に紹介するコンピューター実行可能コードは、表２に示すような、想定されるグローバル関数および定義関数に基づくことができるが、必ずしもそうとは限らない。コード例ならびにグローバル関数および定義関数の例は、１つの考えられる例の例示に過ぎないので、これらの例を限定するように解釈しては決してならない。
【００５６】
【表１】
2015508190.tif 000003
【００５７】
【表２】
2015508190.tif 000004
【００５８】
[0063]  これより図４に移り、スクリプト・ファイル依存性を解明する方法４００について詳しく説明する。図２を参照して先に注記したように、図４を参照しながらここで説明する動作は、方法２００の動作２０６において実行することができるが、必ずしもそうとは限らない。したがって、図４に示す実施形態は例示であり、限定するように解釈しては決してならないことは理解されてしかるべきである。
【００５９】
[0064]  方法４００は、動作４０２において開始し、ここで、サーバー・コンピューター１０２はページ１０８からスクリプト・ファイル１１６を選択する。図３を参照して先に説明したように、サーバー・コンピューター１０２は、ページ１０８を分析してページ１０８内におけるスクリプト・ファイル１１６を識別することができ、および／またはページ１０８を分析し始め、ページ１０８における第１スクリプト・ファイル１１６を識別することができる。スクリプト・ファイル１１６がどのようにサーバー・コンピューター１０２によって識別されるかには関係なく、ページ１０８における１つ以上のスクリプト・ファイル１１６の内１つを、動作４０２においてサーバー・コンピューター１０２によって選択することができる。
【００６０】
[0065]  動作４０２から、方法４００は動作４０４に進み、ここで、サーバー・コンピューター１０２は、動作４０２において選択されたスクリプト・ファイル１１６が既にサーバー・コンピューター１０２によって分析されたか否か判定する。前述のように、サーバー・コンピューター１０２は、ノード・カラーリングをページ１０８におけるスクリプト・ファイル１１６に適用して、識別のスクリプト・ファイル１１６の分析を、分析の１回の繰り返しまたはインスタンスに限定するように構成することができる。したがって、サーバー・コンピューター１０２の実施形態では、特定のノードまたはスクリプト・ファイル１１６の１回よりも多い分析を防止する効率的なやり方で、ページ１０８を分析するように構成される。
【００６１】
[0066]  動作４０４において、サーバー・コンピューター１０２が、動作４０２において選択されたスクリプト・ファイル１１６が以前に分析されたことがあると判定した場合、サーバー・コンピューター１０２は、以下で説明するように、スクリプト・ファイル１１６のそれ以上の分析を飛ばすことができる。サーバー・コンピューター１０２が、動作４０４において、動作４０２において選択されたスクリプト・ファイルが以前に分析されたことがないと判定した場合、方法４００は動作４０６に進む。
【００６２】
[0067]  動作４０６において、サーバー・コンピューター１０２は、スクリプト・ファイル１１６に、行ったまたは分析したという印を付ける。ノードまたはスクリプト・ファイルに行ったおよび／または分析したことがあるという印を付けるサーバー・コンピューター１０２の機能を、ここでは、「ノード・カラーリング」と呼ぶ。本明細書において説明するノード・カラーリング機能は、サーバー・コンピューター１０２によって、特定のノードおよび／またはスクリプト・ファイル１１６が方法４００において１回だけ分析されることを確保するために実施することができる。したがって、ノード・カラーリングは、サーバー・コンピューター１０２によって、本明細書において説明するスクリプト・ファイル依存性およびロード・レベルの決定の間に行われるロード・レベルの更新回数を制限するために実施することができる。したがって、本明細書において説明するノード・カラーリングは、サーバー・コンピューター１０２によるスクリプト・ファイル依存性および／またはロード・レベルの決定の効率および／または信頼性を高めることができる。
【００６３】
[0068]  動作４０６から、方法４００は動作４０８に進み、ここで、サーバー・コンピューター１０２はスクリプト・ファイル１１６に関連する依存性を解明する。具体的には、サーバー・コンピューター１０２は各スクリプト・ファイル１１６を分析し、スクリプト・ファイル１１６が任意の他のスクリプト・ファイル１１６に依存するか、または依存されるか判定する。実施形態では、サーバー・コンピューター１０２がＸＭＬマニフェスト、リスト、またはスクリプト・ファイル依存性を示す他のデーターを受信し、および／またはページ１０８を分析することによって依存性を判定する場合がある。また、スクリプト・ファイル１１６に対する参照が、ページ１０８内部および／またはスクリプト・ファイル１１６自体の内部に存在する可能性もある。したがって、サーバー・コンピューター１０２は、ページ１０８および／またはスクリプト・ファイル１１６の分析によって、１つ以上のスクリプト・ファイル１１６の依存性を判定することができる。依存性を解明しようとしているスクリプト・ファイル１１６によって他のスクリプト・ファイル１１６が参照される場合、依存性解明の間における再帰呼び出しに関して先に説明したように、参照されるスクリプト・ファイル１１６も動作４０８において分析することができる。つまり、図には示されないが、サーバー・コンピューター１０２は、望ましければ、ここで説明する分析および／または他の目的のために、スクリプト・ファイル１１６のコピーを格納することができ、動作４０８の間に複数のスクリプト・ファイル１１６を分析することも可能であることは理解されてしかるべきである。
【００６４】
[0069]  動作４０８から、またはサーバー・コンピューター１０２が、動作４０４において、スクリプト・ファイル１１６が以前に行ったことがあるまたは分析されたことがあると判定した場合、方法４００は動作４１０に進む。動作４１０において、サーバー・コンピューター１０２は、依存性解明のために他にスクリプト・ファイル１１６またはノードが残っているか否か判定することができる。図３を参照して先に説明したように、サーバー・コンピューター１０２はページ１０８を分析して、ページ１０８に含まれるスクリプト・ファイル１１６および／またはノードの数を判定することができ、および／またはページ１０８におけるスクリプト・ファイル１１６またはノードを識別し、ページ１０８をサーチして追加のスクリプト・ファイル１１６またはノードを求め続けることができる。したがって、動作４１０は、サーバー・コンピューター１０２がページ１０８を分析して、追加のスクリプト・ファイル１１６またはノードをサーチすること、および／またはページ１０８において識別された各スクリプト・ファイル１１６またはノードが、分析されたことがあるかまたは行ったことがあるか否か判定することを含むことができる。動作４１０において、サーバー・コンピューター１０２が、他のスクリプト・ファイル１１６またはノードを分析すべきであると判定した場合、方法４００は動作４０２に戻ることができ、ここで、サーバー・コンピューター１０２は他のスクリプト・ファイル１１６を選択することができる。動作４０２〜４１０は、サーバー・コンピューター１０２が、動作３０８の任意の繰り返しにおいて、他に分析するスクリプト・ファイル１１６がないと判定するまで、サーバー・コンピューター１０２によって繰り返すことができる。
【００６５】
[0070]  動作４１０の任意の繰り返しにおいて、サーバー・コンピューター１０２が、他には分析するスクリプト・ファイル１１６がないと判定した場合、方法４００は動作４１２に進む。方法４００は、動作４１２において終了する。
【００６６】
[0071]  考えられる一実施形態では、サーバー・コンピューター１０２が、コンピューター実行可能コードの実行によって、方法４００を参照して以上で説明した機能の一部または全部を設け、あるいはこの機能を設けない。コンピューター実行可能コードの一実施形態を、以下の表３に紹介する。以下のコード例は、１つの考えられる例の例示に過ぎないので、表３に示す実施形態を限定するように解釈しては決してならない。加えて、以下で示す例は、メソッド「Output」が存在するという想定に基づく。Outputメソッドは、ロード・レベルに依存して、種々のアクションを行うように個別に作ることができる。したがって、ここで示すOutputメソッドは単にこのようなメソッドの存在を例示するために示されるのであり、限定するように解釈しては決してならないことは理解されてしかるべきである。
【００６７】
【表３】
2015508190.tif 000005
【００６８】
[0072]  これより図５に移り、スクリプト・ファイル依存性および／またはロード時間を管理するために本明細書において開示される概念および技術の追加の形態について詳しく説明する。具体的には、図５は、例示的な実施形態によるスクリプト・ファイル有向グラフ５００を模式的に示すブロック図である。スクリプト・グラフ有向グラフ５００は、スクリプト・グラフ有向グラフ５００内に表されるスクリプト・ファイル１１６間の依存性を示すデーター構造に対応することができる。尚、図５に示すスクリプト・ファイル有向グラフ５００は、以上で詳細に説明したグラフ１２０の一例であることは、認められてしかるべきである。したがって、図示する実施形態は例示であると理解されてしかるべきであり、限定するように解釈しては決してならない。
【００６９】
[0073]  図５に示すように、スクリプト・グラフ有向グラフ５００は、複数のノード５０２Ａ〜５０２Ｆを含む（以下、集合的および／または総合的に「ノード５０２」と呼ぶ）。先に説明したように、図５に示すノード５０２は、特定のページ１０８に関連するスクリプト・ファイル１１６に対応することができる。図５のスクリプト・グラフ有向グラフの例５００は、６つのスクリプト・ファイル１１６を参照するページ１０８についてのグラフ１２０に対応する。先に説明したように、この実施形態は例示であり、限定するように解釈しては決してならない。
【００７０】
[0074]  本明細書において開示される概念および技術を説明する目的に限って、図５に示すスクリプト・グラフ有向グラフ５００は、スクリプト・ファイル１１６に対して少なくとも６つの参照を含むページ例１０８に対応するものとして記述される。尚、本明細書における説明から、ノードは、ノード５０２に対する参照を含むページ１０８に加えて、またはその代わりに、他のノードに対する参照を含むことができることは理解されてしかるべきである。例えば、ノード５０２Ｄは、ノード５０２Ｃに依存するように示され、したがって、ノード５０２Ｄはノード５０２Ｃに対する参照を含むことができる。実施形態では、サーバー・コンピューター１０２が、図２〜図４に示した方法２００、３００、４００の実行によって、スクリプト・グラフ有向グラフ５００を生成する場合がある。具体的には、サーバー・コンピューター１０２は、図３を参照して先に説明した方法３００の実行によって、ノード５０２をスクリプト・グラフ有向グラフ５００に追加することができる。更に、スクリプト・グラフ有向グラフ５００は、ノード・エッジ５０４Ａ〜５０４Ｆ（以後纏めておよび／または全体的に「エッジ５０４」と呼ぶ）の表示によって、ノード５０２間の依存性を示す。エッジ５０４は、スクリプト・ファイル１１６間の依存性に対応することができ、依存性は、２つのノード５０２間のエッジ５０４によって示される。
【００７１】
[0075]  実施形態では、エッジ５０４の矢印が、依存するノードに向かって指し示す。具体的には、エッジ５０４の矢印は、被依存ノード(depended upon node)５０２即ちスクリプト・ファイル１１６から離れるように、および／または他のノード５０２から依存するノード５０２即ちスクリプト・ファイル１１６に向かって指し示すことができる。例えば、スクリプト・ファイル１１６に対応するノード５０２Ｄは、図５において「d.js」という名称が付けられ、「c.js」という名称が付けられたスクリプト・ファイル１１６に対応するノード５０２Cから、そして「e.js」という名称が付けられたスクリプト・ファイル１１６に対応するノード５０２Ｅから依存するように示される。尚、この実施形態は例示であり、限定するように解釈しては決してならないことは理解されてしかるべきである。
【００７２】
[0076]  先に説明したように、サーバー・コンピューター１０２は、表、リスト、マニフェスト、および／または表１２２のような他のデーター構造だけでなく、スクリプト・ファイル有向グラフ５００および／または他のグラフ１２０も生成することができる。表１２２は、ページ１０８に関連するスクリプト・ファイル１１６および／またはノード５０２毎にロード・レベルを指定することができる。ロード・レベルを示す表１２２の一例を図６を参照して、以下で示し説明する。
【００７３】
[0077]  考えられる一実施形態によれば、サーバー・コンピューター１０２は、以下の図４に示す動作の実行によって、スクリプト・グラフ有向グラフ５００を生成する。図４に示すコード例および図５に示すスクリプト・グラフ有向グラフ５００は、考えられる一例を単に例示するに過ぎないので、表４に示す実施形態は限定するように解釈しては決してならない。
【００７４】
【表４】
2015508190.tif 000006
【００７５】
[0078]  これより図６を参照すると、例示的実施形態によるスクリプト・ファイル・ロード・レベル表６００を示す線図が示されている。種々の実施形態によれば、サーバー・コンピューター１０２は、図２〜図４を参照して先に説明した方法２００、３００、４００の実行によって、および／または他のプロセスによって、スクリプト・ファイル・ロード・レベル表６００を生成することができる。図示する実施形態では、スクリプト・ファイル・ロード・レベル表６００は、スクリプト・ファイル１１６および／またはスクリプト・ファイル１１６に関連するノードを、指定されたロード・レベルと共に登録した後に生成される。指定されたロード・レベルは、ページ１０８の分析に基づいて、および／またはサーバー・コンピューター１０２に供給されるリストまたはマニフェストによって決定することができる。
【００７６】
[0079]  図６に示すように、スクリプト・ファイル・ロード・レベル表６００は、ロード・レベルを示す列６０２と、スクリプト・ファイル１１６を示す列６０４とを含む。つまり、スクリプト・ファイル・ロード・レベル表６００は、複数の行６０６Ａ〜６０６Ｈを含むことができる（以後、纏めておよび／または全体的に「行６０６」と呼ぶ）を含むことができる。行６０６は、ロード・レベルに対応することができ、行６０６に対応するロード・レベルにおいてロードされるスクリプト・ファイル１１６を示すことができる。つまり、例えば、行６０６Ｃは第３ロード・レベルに対応することができ、「e.js」という名称が付けられたスクリプト・ファイル１１６が第３ロード・レベルにおいてロードされることを示すことができる。スクリプト・ファイル・ロード・レベル表６００は、８つよりも少ないまたは多いロード・レベルを含むことができ、および／または６つよりも少ないまたは多いスクリプト・ファイル１１６に対する参照を含むことができるので、図示する実施形態は例示であり、限定するように解釈しては決してならないことは理解されてしかるべきである。
【００７７】
[0080]  尚、任意の数のロード・レベルを含むことができ、そしてロード・レベルの数および／またはロード・レベルの指定は実現例に特定とすることができることは理解されてしかるべきである。考えられる一例では、ロード・レベルの４つの総合カテゴリーが、特定の機能にアクセスされたときまたは要求されたときに実行されるスクリプト・ファイル１１６に対応するオンデマンド・ロード・レベル、ユーザ・インターフェースがレンダリングされた後にロードまたは実行されるスクリプト・ファイル１１６に対応するＵＩ後ロード・レベル、延期属性があるスクリプト・タグにおいて参照されるスクリプト・ファイル１１６に対応する延期ロード・レベル、および／またはページ１０８コードの本体内部で参照されるスクリプト・ファイル１１６のような、ロード・インライン・ロード・レベルを含む。
【００７８】
[0081]  考えられる他の実施形態では、８つのロード・レベルが特定のページ１０８に関連付けられる。これらのレベルは、限定ではなく、ソース（「src」）属性があるスクリプト・タグとしてページ・ヘッダ内において参照されるスクリプト・ファイル１１６に対応する第１レベル、第１レベル・スクリプトの後にページ・ヘッドにおいて参照されるスクリプト・ファイル１１６に対応する第２レベル、レベル２スクリプトの後に、src属性および延期属性があるスクリプト・タグとしてページ・ヘッダ内に位置するスクリプト・ファイル１１６に対応する第３レベル、および、src属性および延期属性があり、レベル３スクリプトの後に、スクリプト・タグとしてページ・ヘッドに含まれるスクリプト・ファイル１１６に対応する第４レベルを含む。また、ロード・レベルは、src属性があるスクリプト・タグとしてページ１０８の本体の終端付近にあるスクリプト・ファイル１１６に対応する第５ロード・レベル、レベル５スクリプトの後に、ページ１０８の本体の終端付近においてスクリプト・タグとして含まれるスクリプト・ファイル１１６の参照に対応する第６レベル、オンデマンド登録によって登録され必要に応じてロードされるスクリプト・ファイル１１６に対応する第７レベル、および／またはレベル７スクリプト・ファイル参照後に、オンデマンド登録システムによって登録され、必要に応じてロードされるスクリプト・ファイル１１６に対応する第８レベルも含む。この場合も、以上で説明したロード・レベルの実施形態は例示であり、限定するように解釈しては決してならないことは理解されてしかるべきである。
【００７９】
[0082]  スクリプト・ファイル・ロード・レベル表６００は、特定のページ１０８に関連するロード・レベルと、識別された各ロード・レベルにおいてどのスクリプト・ファイル１１６がロードされるかについての指示を示すことができる。したがって、スクリプト・ファイル・ロード・レベル表６００は、ページ１０８をレンダリングするときの使用のために、クライアント・デバイス１１０のような他のエンティティにも供給することができる。したがって、ページ１０８によって参照されるスクリプト・ファイル１１６は、サーバー・コンピューター１０２によって、スクリプト・ファイル・ロード・レベル表６００によって識別された順序でアクセスし、ロードし、および／または実行することができる。尚、この実施形態は例示であり、限定するように解釈しては決してならないことは理解されてしかるべきである。
【００８０】
[0083]  考えられる一実施形態によれば、サーバー・コンピューター１０２は、以下の表５に示す動作の実行によって、スクリプト・ファイル・ロード・レベル表６００を生成する。図５に示すコード例および図６に示すスクリプト・ファイル・ロード・レベル表６００は、考えられる一例を例示するに過ぎないので、表５に示す実施形態は、限定するように解釈しては決してならない。
【００８１】
【表５】
2015508190.tif 000007
【００８２】
[0084]  図７は、スクリプト・ファイル依存性およびロード時間を管理するための、本明細書において説明したソフトウェア・コンポーネントを実行することができるデバイスの例示的コンピューター・アーキテクチャー７００を示す。つまり、図７に示すコンピューター・アーキテクチャー７００は、サーバー・コンピューター、移動体電話機、ＰＤＡ、スマート・フォン、デスクトップ・コンピューター、ネットブック・コンピューター、タブレット・コンピューター、および／またはラップトップ・コンピューターのアーキテクチャーを示す。コンピューター・アーキテクチャー７００は、本明細書において提示されたソフトウェア・コンポーネントの任意の形態を実行するために利用することができる。
【００８３】
[0085]  図７に示すコンピューター・アーキテクチャー７００は、中央処理ユニット７０２（「ＣＰＵ」）、ランダム・アクセス・メモリ７０６（「ＲＡＭ」）およびリード・オンリー・メモリ（「ＲＯＭ」）７０８を含むシステム・メモリ７０４、ならびにメモリー７０４からＣＰＵ７０２までを結合するシステム・バス７１０を含む。起動中におけるように、コンピューター・アーキテクチャー７００内部のエレメント間で情報を移すのに役立つ基本ルーチンを含む基本入力／出力システムが、ＲＯＭ７０８に格納される。コンピューター・アーキテクチャー７００は、更に、オペレーティング・システム７１４、サーバー・アプリケーション１０６、および／または他のアプリケーション・プログラムを格納する大容量記憶デバイス７１２も含む。また、大容量記憶デバイス７１２は、ページ１０８、データー１１８、および／または他のデーター（図７には示されない）も格納するように構成することができる。
【００８４】
[0086]  大容量記憶デバイス７１２は、バス７１０に接続された大容量記憶コントローラー（図示せず）を介してＣＰＵ７０２に接続される。大容量記憶デバイス７１２およびそれに付随するコンピューター読み取り可能媒体は、コンピューター・アーキテクチャー７００に不揮発性ストレージを設ける。本明細書に含まれるコンピューター読み取り可能媒体の説明は、ハード・ディスクまたはＣＤ−ＲＯＭのような大容量記憶デバイスに言及するが、コンピューター読み取り可能媒体は、コンピューター・アーキテクチャー７００によってアクセスすることができる任意の入手可能なコンピューター記憶媒体または通信媒体とすることができることは当業者には認められてしかるべきである。
【００８５】
[0087]  通信媒体は、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターを、搬送波のような変調データー信号または他の伝送メカニズムにおいて含み、任意の配信媒体を含む。「変調データー信号」という用語は、信号内に情報をエンコードするようなやり方で、その特性の内１つ以上が変更または設定された信号を意味する。一例として、そして限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続のような有線媒体と、音響、ＲＦ、赤外線、またはその他のワイヤレス媒体のようなワイヤレス媒体とを含む。以上の内の任意の組み合わせも、コンピューター読み取り可能媒体の範囲内に含まれてしかるべきである。
【００８６】
[0088]  一例として、そして限定ではなく、コンピューター記憶媒体は、揮発性および不揮発性媒体、リムーバブルおよび非リムーバブル媒体を含み、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターというような任意の情報の記憶のための任意の方法または技術で実現される。例えば、コンピューター媒体には、限定ではなく、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリーまたは他のソリッド・ステート・メモリー技術、ＣＤ−ＲＯＭ、ディジタル・バーサタイル・ディスク（ＤＶＤ）、ＨＤ−ＤＶＤ、ＢＬＵ−ＲＡＹ（登録商標）、または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク記憶デバイスまたはその他の磁気記憶デバイス、あるいは所望の情報を格納するために使用することができ、コンピューター・アーキテクチャー７００によってアクセスすることができる任意の他の媒体が含まれる。特許請求の範囲に限って言えば、「コンピューター記憶媒体」という句およびその異形は、波、信号、および／または他の一時的および／または無形通信媒体をそれ自体含まない。
【００８７】
[0089]  種々の実施形態によれば、コンピューター・アーキテクチャー７００は、ネットワーク１０４のようなネットワークを介して、リモート・コンピューターへの論理接続を使用して、ネットワーク接続環境において動作することもできる。コンピューター・アーキテクチャー７００は、バス７１０に接続されたネットワーク・インターフェース・ユニット７１６を介して、ネットワーク１０４に接続することができる。尚、ネットワーク・インターフェース・ユニット７１６は、他のタイプのネットワークおよびリモート・コンピューター・システム、例えば、クライアント・デバイス１１０に接続するために利用されてもよいことは認められてしかるべきである。また、コンピューター・アーキテクチャー７００は、キーボード、マウス、または電子スタイラス（図７には示されない）を含む複数の他のデバイスからの入力を受けて処理する入力／出力コントローラー７１８も含むことができる。同様に、入力／出力コントローラー７１８は、出力を表示画面、プリンタ、または他のタイプの出力デバイス（図７には示されない）に供給することができる。
【００８８】
[0090]  尚、本明細書において説明したソフトウェア・コンポーネントは、ＣＰＵ７０２にロードされ実行されると、ＣＰＵ７０２およびコンピューター・アーキテクチャー７００全体を汎用計算システムから、本明細書において紹介した機能を容易に実行するようにカスタム化された特殊目的計算システムに変形できることは認められてしかるべきである。ＣＰＵ７０２は、任意の数のトランジスターまたは他のディスクリート回路エレメントから組み立てることができ、これらのエレメントは、個別にまたは集合的に任意の数の状態になる(assume)。更に具体的には、ＣＰＵ７０２は、本明細書において開示したソフトウェア・モジュール内に収容された実行可能命令に応答して、有限状態機械として動作することもできる。これらのコンピューター実行可能命令は、ＣＰＵ７０２が状態間でどのように遷移するか指定することによって、ＣＰＵ７０２を変化させ、これによって、ＣＰＵ７０２を構成するトランジスターまたは他のディスクリート回路エレメントを変化させることができる。
【００８９】
[0091]  本明細書において紹介したソフトウェア・モジュールをエンコードすることによっても、本明細書において紹介したコンピューター読み取り可能媒体の物理的構造を変化させることができる。物理的構造の具体的な変化は、本明細書の異なる実施態様における種々の要因に依存する場合もある。このような要因の例には、コンピューター読み取り可能媒体を実現するために使用された技術、コンピューター読み取り可能媒体が主ストレージまたは副ストレージのどちらとして特徴付けられるか等を含むことができるが、これらに限定されるのではない。例えば、コンピューター読み取り可能媒体が半導体ベース・メモリとして実現される場合、本明細書において開示したソフトウェアは、半導体メモリーの物理的状態を変化させることによって、コンピューター読み取り可能媒体にエンコードすることができる。例えば、ソフトウェアは、半導体メモリーを構成するトランジスター、キャパシター、または他のディスクリート回路エレメントの状態を変化させることもできる。また、ソフトウェアは、データーを格納するためにこのようなコンポーネントの物理的状態を変化させることもできる。
【００９０】
[0092]  他の例として、本明細書において開示したコンピューター読み取り可能媒体は、磁気または光技術を使用して実現することもできる。このような実施態様では、本明細書において紹介したソフトウェアは、このソフトウェアがエンコードされるときに、磁気または光媒体の物理的状態を変化させることができる。これらの変形は、所与の磁気媒体内の特定の位置の磁気特性を変化させることを含むことができる。また、これらの変形は、所与の光媒体内における特定の位置の物理的特徴または特性を変化させ、これらの位置の光学特性を変化させることも含むことができる。本明細書の範囲および主旨から逸脱することなく、物理媒体の他の変形も可能であり、以上の例は、この論述を容易にするために与えられるに過ぎない。
【００９１】
[0093]  以上のことを考慮して、本明細書において説明したソフトウェア・コンポーネントを格納および実行するために、コンピューター・アーキテクチャー７００内において多くのタイプの物理的変形が行われることは認められてしかるべきである。また、コンピューター・アーキテクチャー７００は、ハンドヘルド・コンピューター、埋め込み型コンピューター・システム、パーソナル・ディジタル・アシスタント、および当業者には知られている他のタイプの計算デバイスを含む、他のタイプの計算デバイスも含むことができることも認められてしかるべきである。また、コンピューター・アーキテクチャー７００が図７に示すコンポーネントの全てを含まなくてもよいこと、図７には明示的に示されない他のコンポーネントを含んでもよいこと、または図７に示すものとは完全に異なるアーキテクチャーを利用してもよいことも考えられる。
【００９２】
[0094]  以上の説明に基づいて、本明細書では、スクリプト・ファイル依存性およびロード時間を管理するための技術が開示されたことは認められてしかるべきである。本明細書において提示した主題について、コンピューターの構造的特徴、方法論的または変形アクト(transformative act)、具体的な計算機械、およびコンピューター読み取り可能媒体に特定的な文言で説明したが、添付した特許請求の範囲において定められる本発明は、必ずしも本明細書において説明したこれらの具体的な特徴、アクト、または媒体には限定されないことは、理解されてしかるべきである。逆に、これらの具体的な特徴、アクト、および媒体は、特許請求の範囲を実現する形態例として開示されたまでである。
【００９３】
[0095]  以上で説明した主題は、例示として提示されたに過ぎず、限定と解釈してはならない。図示および説明した実施形態例やアプリケーションに従うことなく、そして以下の特許請求の範囲において記載される、本発明の真の主旨および範囲から逸脱することなく、種々の変更および変化(modifications and changes)を本主題に対して行うことができる。
【図１】
2015508190.tif 000008
【図２】
2015508190.tif 000009
【図３】
2015508190.tif 000010
【図４】
2015508190.tif 000011
【図５】
2015508190.tif 000012
【図６】
2015508190.tif 000013
【図７】
2015508190.tif 000014
【国際調査報告】
2015508190.tif 000015
2015508190.tif 000016