(57)【要約】【課題】ダウンロード可能コンテンツの転送を最適化するためのシステム及び方法を提供する。【解決手段】テンツが全てダウンロードされないうちにダウンロード可能コンテンツの実行を開始する。これにより、ユーザはコンテンツに高速にアクセスすることができる。更に、本文に開示された各実施形態は、帯域幅の使用を減らし、消費者のインターネット速度に対する影響を受けにくく、エンドユーザ製品の記憶容量に限定されない。各実施形態は動的であるため、静的コンテンツ及びインタラクティブコンテンツの双方にその用途を拡張している。開示された各実施形態は、ユーザデバイスのＯＳ上にパッチやドライバで実装することができるために、コンテンツのソースコードを大きく修正する必要はない。開示された各実施形態は、実行中のコンテンツからは独立して、及び／又は、実行中のコンテンツに対して不可視の状態で実行することもできる。【選択図】図７
2018010654.tif 000002
【特許請求の範囲】
【請求項１】
ダウンロード可能コンテンツの転送を最適化する方法であって、
複数の前記ダウンロード可能コンテンツ部分の第１部分に対する第１ローカル要求を受信するステップと、
前記第１ローカル要求を、前記ダウンロード可能コンテンツの前記第１部分に対する第１リモート要求に変換するステップと、
前記第１リモート要求を送信するステップと、
前記ダウンロード可能コンテンツの前記第１部分を受信するステップと、
前記ダウンロード可能コンテンツの前記第１部分を記憶するステップと、
前記ダウンロード可能コンテンツの前記第１部分を実行するステップと、を含む方法。
【請求項２】
前記複数の前記ダウンロード可能コンテンツ部分の第２部分に対する第２ローカル要求を受信するステップと、
前記ダウンロード可能コンテンツの前記第２部分がローカルに記憶されているかどうかを判断するステップと、
前記ダウンロード可能コンテンツの前記第２部分がローカルに記憶されていれば、前記ダウンロード可能コンテンツの前記第２部分を実行するステップと、を更に含む請求項１記載の方法。
【請求項３】
前記複数の前記ダウンロード可能コンテンツ部分の第２部分に対する第２ローカル要求を受信するステップと、
前記ダウンロード可能コンテンツの前記第２部分がローカルに記憶されているかどうかを判断するステップと、
前記ダウンロード可能コンテンツの前記第２部分がローカルに記憶されていなければ、
前記第２ローカル要求を、前記ダウンロード可能コンテンツの前記第２部分に対する第２リモート要求に変換するステップと、
前記第２リモート要求を送信するステップと、
前記ダウンロード可能コンテンツの前記第２部分を受信するステップと、
前記ダウンロード可能コンテンツの前記第２部分をローカルに記憶するステップと、
前記ダウンロード可能コンテンツの前記第１部分の実行後に、前記ダウンロード可能コンテンツの前記第２部分を実行するステップと、を更に含む請求項１記載の方法。
【請求項４】
前記ダウンロード可能コンテンツの前記第２部分は、前記ダウンロード可能コンテンツの前記第１部分を実行する前又は実行する間に受信される、請求項３記載の方法。
【請求項５】
前記ダウンロード可能コンテンツの前記第１部分を実行する前又は実行する間に、前記ダウンロード可能コンテンツの前記第２部分が受信されていなければエラーメッセージを生成するステップを更に含む、請求項３記載の方法。
【請求項６】
前記第１ローカル要求及び前記第２のローカル要求をダウンロード可能コンテンツ要求メタデータとして順次記憶するステップを更に含む、請求項３記載の方法。
【請求項７】
前記複数の前記ダウンロード可能コンテンツ部分の第２部分を受信するステップと、
前記ダウンロード可能コンテンツの前記第２部分をローカルに記憶するステップと、
前記ダウンロード可能コンテンツの前記第１部分の実行後に、前記ダウンロード可能コンテンツの前記第２部分を実行するステップと、を更に含む請求項１記載の方法。
【請求項８】
前記複数の前記ダウンロード可能コンテンツ部分の第２部分に対する第２ローカル要求を予測するステップと、
前記ダウンロード可能コンテンツの前記第２部分がローカルに記憶されているかどうかを判断するステップと、
前記ダウンロード可能コンテンツの前記第２部分がローカルに記憶されていれば、前記ダウンロード可能コンテンツの前記第２部分を実行するステップと、
前記ダウンロード可能コンテンツの前記第２部分がローカルに記憶されていなければ、
前記第２ローカル要求を、前記ダウンロード可能コンテンツの前記第２部分に対する第２リモート要求に変換するステップと、
前記第２リモート要求を送信するステップと、
前記ダウンロード可能コンテンツの前記第２部分を受信するステップと、
前記ダウンロード可能コンテンツの前記第２部分をローカルに記憶するステップと、
前記ダウンロード可能コンテンツの前記第１部分を実行後に、前記ダウンロード可能コンテンツの前記第２部分を実行するステップと、を更に含む請求項１記載の方法。
【請求項９】
前記第１ローカル要求、前記ダウンロード可能コンテンツの前記第１部分、ダウンロード可能コンテンツメタデータ、及びダウンロード可能コンテンツ要求メタデータのうちの少なくとも１つを用いて前記第２ローカル要求を予測する、請求項８記載の方法。
【請求項１０】
前記複数の前記ダウンロード可能コンテンツ部分の第２部分に対する第２リモート要求を予測するステップと、
前記ダウンロード可能コンテンツの前記第２部分を受信するステップと、
前記ダウンロード可能コンテンツの前記第２部分をローカルに記憶するステップと、
前記ダウンロード可能コンテンツの前記第１部分の実行後に、前記ダウンロード可能コンテンツのうち、前記第２部分を実行するステップと、を更に含む請求項１記載の方法。
【請求項１１】
前記第１ローカル要求、前記ダウンロード可能コンテンツの前記第１部分、ダウンロード可能コンテンツメタデータ、及びダウンロード可能コンテンツ要求メタデータのうちの少なくとも１つを用いて前記第２ローカル要求を予測する、請求項１０記載の方法。
【請求項１２】
ダウンロード可能コンテンツの転送を最適化するシステムであって、
複数の前記ダウンロード可能コンテンツ部分の第１部分に対する第１ローカル要求を受信し、
前記第１ローカル要求を、前記ダウンロード可能コンテンツの前記第１部分に対する第１リモート要求に変換し、
前記第１リモート要求をネットワークを介して送信し、
前記ダウンロード可能コンテンツの前記第１部分をネットワークを介して受信し、
前記ダウンロード可能コンテンツの前記第１部分を実行するように動作可能なプロセッサと、
前記複数の前記ダウンロード可能コンテンツ部分の少なくとも一部分を記憶するように動作可能なメモリと、を含むシステム。
【請求項１３】
前記プロセッサは、更に、
前記複数の前記ダウンロード可能コンテンツ部分の第２部分に対する第２ローカル要求を受信し、
前記ダウンロード可能コンテンツの前記第２部分が前記メモリに記憶されているかどうかを判断し、
前記ダウンロード可能コンテンツの前記第２部分が前記メモリに記憶されていれば、前記ダウンロード可能コンテンツの前記第２部分を実行するように動作可能である、請求項１２記載のシステム。
【請求項１４】
前記プロセッサは更に、
前記複数の前記ダウンロード可能コンテンツ部分の第２部分に対する第２ローカル要求を受信し、
前記ダウンロード可能コンテンツの前記第２部分が前記メモリに記憶されているかどうかを判断し、
前記ダウンロード可能コンテンツの前記第２部分が前記メモリに記憶されていなければ、
前記第２ローカル要求を、前記ダウンロード可能コンテンツの前記第２部分に対する第２リモート要求に変換し、
前記第２リモート要求をネットワークを介して送信し、
前記ダウンロード可能コンテンツの前記第２部分をネットワークを介して受信し、
前記ダウンロード可能コンテンツの前記第１部分の実行後に、前記ダウンロード可能コンテンツの前記第２部分を実行するように動作可能である、請求項１２記載のシステム。
【請求項１５】
前記プロセッサは、前記ダウンロード可能コンテンツの前記第１部分を実行する前又は実行する間に、前記ダウンロード可能コンテンツの前記第２部分を受信するように動作可能である、請求項１４記載のシステム。
【請求項１６】
前記プロセッサは更に、前記ダウンロード可能コンテンツの前記第１部分を実行する前又は実行する間に、前記ダウンロード可能コンテンツの前記第２部分が受信されていなければエラーメッセージを生成するように動作可能である、請求項１４記載のシステム。
【請求項１７】
前記メモリは更に、複数のローカル要求をダウンロード可能コンテンツ要求メタデータとして順次記憶するように動作可能である、請求項１４記載のシステム。
【請求項１８】
前記プロセッサは更に、前記複数の前記ダウンロード可能コンテンツ部分の第２部分に対する第２ローカル要求を予測するように動作可能である、請求項１２記載のシステム。
【請求項１９】
前記プロセッサは、
（Ａ）前記メモリに記憶された前記複数の前記ダウンロード可能コンテンツ部分の少なくとも１つ、
（Ｂ）メモリに記憶された前記複数のローカル要求の少なくとも１つ、
（Ｃ）ダウンロード可能コンテンツメタデータ、
（Ｄ）ダウンロード可能コンテンツ要求メタデータ、
からなるグループより選択される１以上を用いて、前記第２ローカル要求を予測するように動作可能である、請求項１８記載のシステム。
【請求項２０】
前記複数のダウンロード可能コンテンツ部分の少なくとも一部分を表示するように動作可能なプロセッサに接続されたディスプレイを更に含む、請求項１２記載のシステム。
【請求項２１】
複数の前記ダウンロード可能コンテンツ部分の第１部分に対する第１ローカル要求を受信するステップと、
前記第１ローカル要求を、前記ダウンロード可能コンテンツの前記第１部分に対する第１リモート要求に変換するステップと、
前記第１リモート要求を送信するステップと、
前記ダウンロード可能コンテンツの前記第１部分を受信するステップと、
前記ダウンロード可能コンテンツの前記第１部分を記憶するステップと、
前記ダウンロード可能コンテンツの前記第１部分を実行するステップと、を実行するために、コンピュータにより実行可能な命令が埋め込まれたコンピュータ可読記録媒体。
【請求項２２】
前記複数の前記ダウンロード可能コンテンツ部分の第２部分に対する第２ローカル要求を受信するステップと、
前記ダウンロード可能コンテンツの前記第２部分がローカルに記憶されているかどうかを判断するステップと、
前記ダウンロード可能コンテンツの前記第２部分がローカルに記憶されていれば、前記ダウンロード可能コンテンツの前記第２部分を実行するステップと、を更に実行するために、コンピュータにより実行可能な命令が埋め込まれた請求項２１記載のコンピュータ可読記録媒体。
【請求項２３】
前記複数の前記ダウンロード可能コンテンツ部分の第２部分に対する第２ローカル要求を受信するステップと、
前記ダウンロード可能コンテンツの前記第２部分がローカルに記憶されているかどうかを判断するステップと、
前記ダウンロード可能コンテンツの前記第２部分がローカルに記憶されていなければ、
前記第２ローカル要求を、前記ダウンロード可能コンテンツの前記第２部分に対する第２リモート要求に変換するステップと、
前記第２リモート要求を送信するステップと、
前記ダウンロード可能コンテンツの前記第２部分を受信するステップと、
前記ダウンロード可能コンテンツの前記第２部分をローカルに記憶するステップと、
前記ダウンロード可能コンテンツの前記第１部分の実行後に、前記ダウンロード可能コンテンツの前記第２部分を実行するステップと、を更に実行するために、コンピュータにより実行可能な命令が埋め込まれた請求項２１記載のコンピュータ可読記録媒体。
【請求項２４】
前記ダウンロード可能コンテンツの前記第２部分は、前記ダウンロード可能コンテンツの前記第１部分を実行する前又は実行する間に受信される、請求項２３記載のコンピュータ可読記録媒体。
【請求項２５】
前記ダウンロード可能コンテンツの前記第１部分を実行する前又は実行する間に、前記ダウンロード可能コンテンツの前記第２部分が受信されていなければエラーメッセージを生成するステップを更に実行するために、コンピュータにより実行可能な命令が埋め込まれた請求項２３記載のコンピュータ可読記録媒体。
【請求項２６】
ダウンロード可能コンテンツ要求メタデータとしてとして前記第１ローカル要求及び前記第２ローカル要求を経時的に記憶するステップを実行するために、コンピュータにより実行可能な命令が埋め込まれた請求項２３記載のコンピュータ可読記録媒体。
【請求項２７】
前記複数の前記ダウンロード可能コンテンツ部分の第２部分に対する第２ローカル要求を予測するステップを更に実行するために、コンピュータにより実行可能な命令が埋め込まれた請求項２１記載のコンピュータ可読記録媒体。
【請求項２８】
前記第１ローカル要求、前記ダウンロード可能コンテンツのうち、前記第１部分、ダウンロード可能コンテンツメタデータ、及びダウンロード可能コンテンツ要求メタデータの少なくとも１つを用いて前記第２ローカル要求を予測する、請求項２７記載のコンピュータ可読記録媒体。
【請求項２９】
ダウンロード可能コンテンツの転送を最適化するシステムであって、
複数の前記ダウンロード可能コンテンツ部分の第１部分に対する第１ローカル要求を、前記ダウンロード可能コンテンツの前記第１部分に対する第１リモート要求に変換するように動作可能な変換モジュールと、
前記第１ローカル要求を受信し、前記第１リモート要求を送信し、前記ダウンロード可能コンテンツの前記第１部分を受信するように動作可能な通信モジュールと、
前記ダウンロード可能コンテンツの前記第１部分を実行するように動作可能な実行モジュールと、
前記複数の前記ダウンロード可能コンテンツ部分の少なくとも一部分を記憶するように動作可能な記憶モジュールと、を含むダウンロード可能コンテンツの転送を最適化するシステム。
【請求項３０】
前記複数の前記ダウンロード可能コンテンツの第２部分がローカルに記憶されているかどうかを判断するように動作可能なクエリモジュールを更に含み、前記通信モジュールは更に、前記ダウンロード可能コンテンツの前記第２部分に対する第２ローカル要求を受信するように動作可能である、請求項２９記載のシステム。
【請求項３１】
前記実行モジュールは更に、前記ダウンロード可能コンテンツの前記第２部分がローカルに記憶されていれば、前記ダウンロード可能コンテンツの前記第２部分を実行するように動作可能である、請求項３０記載のシステム。
【請求項３２】
前記ダウンロード可能コンテンツの前記第２部分がローカルに記憶されていなければ、
前記変換モジュールは更に、前記第２ローカル要求を、前記ダウンロード可能コンテンツの前記第２部分に対する第２リモート要求に変換するように動作可能であり、
前記通信モジュールは更に、第２リモート要求を送信し、前記ダウンロード可能コンテンツの前記第２部分を受信するように動作可能であり、
前記実行モジュールは更に、前記ダウンロード可能コンテンツの前記第１部分の実行後に、前記ダウンロード可能コンテンツの前記第２部分を実行するように動作可能である、請求項３０記載のシステム。
【請求項３３】
前記通信モジュールは、前記実行モジュールが前記ダウンロード可能コンテンツの前記第１部分を実行する前又は実行する間に、前記ダウンロード可能コンテンツの前記第２部分を受信するように動作可能である、請求項３２記載のシステム。
【請求項３４】
前記実行モジュールが前記ダウンロード可能コンテンツの前記第１部分を実行する前又は実行する間に、前記通信モジュールが前記ダウンロード可能コンテンツの前記第２部分を受信していなければエラーメッセージを生成するように動作可能なエラーモジュールを更に含む、請求項３２記載のシステム。
【請求項３５】
前記記憶モジュールは更に、複数のローカル要求をダウンロード可能コンテンツ要求メタデータとして経時的に記憶するように動作可能である、請求項３２記載のシステム。
【請求項３６】
前記複数の前記ダウンロード可能コンテンツ部分の第２部分に対する第２ローカル要求を予測するように動作可能な予測モジュールを更に含む、請求項２９記載のシステム。
【請求項３７】
前記予測モジュールは、
（Ａ）前記メモリに記憶された前記複数の前記ダウンロード可能コンテンツ部分の少なくとも１つ、
（Ｂ）メモリに記憶された前記複数のローカル要求の少なくとも１つ、
（Ｃ）ダウンロード可能コンテンツメタデータ、
（Ｄ）ダウンロード可能コンテンツ要求メタデータ、
からなるグループより選択される１以上を用いて、前記第２ローカル要求を予測するように動作可能である、請求項３６記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
概して、本発明はダウンロード可能コンテンツの配信に関し、より詳細には、ダウンロード可能コンテンツの転送を最適化するシステム及び方法に関する。
【背景技術】
【０００２】
近年、コンピューティング装置は、情報や娯楽、通信の主要な情報源として普遍的魅力を持つようになってきている。消費者があらゆるサイズや種類のデジタルコンテンツへアクセスしやすくするために、テレビやＤＶＤプレーヤ、ゲーム機、コンピュータなどのデバイスを一体化したエンドユーザ製品が作り出され、変更や改良がなされている。そのようなデジタルコンテンツは多くの場合、ＣＤ、ＤＶＤ、ブルーレイディスク（登録商標：ＢＤ）などの物理媒体に配信されるが、配信されるのは、物理媒体が収容することのできる記憶容量に制限されてしまう。
更に、物理媒体の場合、消費者は、実店舗に行ってコンテンツを取得するか、媒体が物理的に消費者に配信されるようにする必要がある。いずれの場合においても、媒体を実際に物理的に所持する必要がある。そのためにデジタルコンテンツへのアクセスが遅れてしまい、すぐにデジタルコンテンツを楽しむことができない。更に、物理媒体は、引っ掻き（スクラッチング）や破壊、一般的な消耗といった損傷を受けやすく、更に、製造上のばらつきや欠陥などもある。このような問題により、ローディングが遅延し、エラーが発生してしまうおそれがある。あるいは、デジタルコンテンツへのアクセスまでもできなくなるおそれがある。
従って、コンテンツの開発者や製造者は、インターネットを介してデジタルコンテンツの配信を開始している。これにより、上述した、物理媒体に関連する多くの問題が解消している。例えば、消費者は、店舗やその他のソースから物理媒体の所有権を取得する必要がない。これに代えて消費者は自宅で快適にコンテンツをダウンロードすることができる。これにより、消費者は、画像や音楽、ゲーム、テレビ番組、映画、アプリケーション、アップグレード、付加機能といった各種のデジタルコンテンツをボタンのシングルクリックにより取得することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかし、ダウンロード可能コンテンツのサイズは利用可能な帯域幅、消費者のインターネット速度、およびコンテンツを実行するエンドユーザ製品の記憶容量により制限されてしまうおそれがある。更に、様々な種類のコンテンツを実行するには、実行前に全てがダウンロードされていなければならない。よってこの場合も同様に、消費者が所望するコンテンツへのアクセスが遅れてしまい、すぐにコンテンツを楽しむことができない。
従って、帯域幅の使用を減らし、消費者のインターネット速度に対する影響を受けにくく、エンドユーザ製品の記憶容量に制限されずにコンテンツへの迅速なアクセスが可能な、インターネットを介してデジタルコンテンツを転送できる新規の改良されたシステムおよび方法が常に求められている。
【課題を解決するための手段】
【０００４】
本発明の各実施形態は、コンテンツが完全にダウンロードされないうちにコンテンツを実行することができる、ダウンロード可能コンテンツの転送を最適化するシステム及び方法を提供することにより、これらの要求等を満たす。本文に記載の各実施形態は動的であるため、静的コンテンツ及びインタラクティブコンテンツの双方にその用途を拡張している。更に、開示された１以上の実施形態は、ユーザデバイスのオペレーティングシステム（ＯＳ）上にパッチやドライバで実装することができるために、コンテンツのソースコードを大きく修正する必要はない。開示された各実施形態は、実行中のコンテンツからは独立して、及び／又は、実行中のコンテンツに対して不可視の状態で実行することもできる。これにより、コンテンツが表示される際にユーザにより検知されるエラーを最小に抑えることができる。
【０００５】
本発明の一実施形態によれば、ダウンロード可能コンテンツの転送を最適化する方法が記載されている。該方法は、複数のダウンロード可能コンテンツ部分の第１部分に対する第１ローカル要求を受信するステップ、第１ローカル要求を、ダウンロード可能コンテンツの第１部分に対する第１リモート要求に変換するステップ、第１リモート要求を送信するステップ、ダウンロード可能コンテンツの第１部分を記憶するステップ、及び、ダウンロード可能コンテンツの第１部分を実行するステップ、を含む。別の実施形態では、本方法の各行為を実行するために、コンピュータが実行可能な命令が組み込まれたコンピュータ可読記録媒体が記載される。
【０００６】
更に、本発明の一実施形態に従い本方法を実行するシステムが記載される。例えば、ダウンロード可能コンテンツの転送を最適化するシステムが記載される。システムは、プロセッサおよびメモリを含む。プロセッサは、複数のダウンロード可能コンテンツ部分の第１部分に対する第１ローカル要求を受信し、第１ローカル要求を、ダウンロード可能コンテンツの第１部分に対する第１リモート要求に変換し、第１リモート要求をネットワークを介して送信し、ネットワークを介してダウンロード可能コンテンツの第１部分を受信し、ダウンロード可能コンテンツの第１部分を実行するように動作可能である。メモリは、複数のダウンロード可能コンテンツ部分の少なくとも一部分を記憶するように動作可能である。
【０００７】
更に、一実施形態において、モジュールを使用してダウンロード可能コンテンツの転送を最適化するシステム及び方法が記載される。該システムは、複数のダウンロード可能コンテンツ部分の第１部分に対する第１ローカル要求を、ダウンロード可能コンテンツの第１部分に対する第１リモート要求に変換するように動作可能な変換モジュール、第１ローカル要求を受信し、第１リモート要求を送信し、ダウンロード可能コンテンツの第１部分を受信するように動作可能な通信モジュール、ダウンロード可能コンテンツの第１部分を実行するように動作可能な実行モジュール、及び、複数のダウンロード可能コンテンツ部分の少なくとも一部分を記憶するように動作可能な記憶モジュール、を含む。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施形態に係るダウンロード可能コンテンツの転送を最適化する方法を例示したフローチャート。
【図２】本発明の別の実施形態に係るダウンロード可能コンテンツの転送を最適化する方法を例示したフローチャート。
【図３】本発明の実施形態に係るダウンロード可能コンテンツを実行するための方法を例示したフローチャート。
【図４】本発明の実施形態に係るダウンロード可能コンテンツ要求メタデータを構築するための方法を例示したフローチャート。
【図５】本発明の更なる実施形態に係るダウンロード可能コンテンツの転送を最適化するための方法を例示したフローチャート。
【図６】本文に記載した方法を実行するために、一実施形態のシステムを例示した概略図。
【図７】一連の命令を有し、該命令を用いて本文に記載した１以上の方法のいずれかを実行させるようにした機械の模式図。
【発明を実施するための形態】
【０００９】
ダウンロード可能コンテンツの転送を最適化するシステム及び方法が記載される。以下の説明では、説明のために、例示した各実施形態を完全に理解するために、特定の、多くの詳細が記載される。しかし、このような特定の詳細が記載されていなくても、あるいは等価の配置により、当業者が本発明の各実施形態を実施できることは明らかである。各実施形態を不必要に曖昧にしないように、場合によっては、周知の構造や装置をブロック図で示している。
図面を通じて、同一の参照番号は、同一の、又は対応する部分を示す。図面を参照すると、図１は本発明の実施形態に係るダウンロード可能コンテンツの転送を最適化する方法を示すフローチャートである。本実施形態では、コンテンツのダウンロードが完了しないうちにコンテンツの実行が開始され、コンテンツの後続部分は、必要に応じて「オンデマンド」で要求される。従って、ユーザは、大容量の可能性もあるコンテンツ全体がダウンロードされるのを待たずにコンテンツの実行を開始でき、すぐにコンテンツを楽しむことができる。更に、関係のない可能性のあるデータの記憶が削除される。
【００１０】
処理ブロック１１０では、ダウンロード可能コンテンツの一部分に対するローカル要求が受信される。このローカル要求は、ダウンロード可能コンテンツの所望の部分に関連づけられる一連のデータに対して、標準のファイル操作の形式でなされてもよい。更に、このローカル要求は、アプリケーションから、本文において検討しているようなオペレーションシステムに送信されてもよい。ダウンロード可能コンテンツとしては、例えば、ビデオコンテンツ、オーディオコンテンツ、ゲームコンテンツ、及び／又は、ゲームや映画、ソフトウェア、テレビ番組、ニュース、音楽ビデオ、トークショー、映画の予告、広告、音楽、本、オーディオブック、雑誌、新聞、カタログ、壁紙、テーマなどの静的ビジュアルコンテンツ、「アドオン」コンテンツ、あるいは、実行可能コンテンツをより小さな部分に分割できるその他のいずれの種類のコンテンツ、を挙げることができる。そのようなコンテンツは、ユーザ又は開発者が作成したもの、無料のもの又は有料のもの、完全版あるいは体験版、及び／又は販売用又はレンタル用であると考えられる。更に、本文中で使用される「部分」との用語は、シングルビットデータやシングルバイトデータ、又はマルチビットデータやマルチバイトデータからなる関連のグループ又は任意のグループに分割可能な、ダウンロード可能コンテンツのいずれの部分にも相当しうる。例えば、コンテンツの「部分」は、レベル、章（チャプター）場面、行為、キャラクタ、背景、テクスチャ、アクション、歌、テーマ、存続期間、サイズ、ファイル、これらの一部や組み合わせ、に相当するものであってよい。しかし、別の実施形態では、コンテンツの「部分」は、転送の効率化のためにグループ化された、その他の分かりやすい共通性を含まないデータを指すこともある。
【００１１】
決定ブロック１１５では、ダウンロード可能コンテンツの要求部分がローカルに記憶されているかどうかが判断される。例えば、プロセッサは、ダウンロード可能コンテンツの要求部分に対する問い合わせをローカルメモリに行うことができる。ダウンロード可能コンテンツの要求部分がローカルに実際に記憶されている場合、該部分は処理ブロック１４０で実行される。ダウンロード可能コンテンツの要求部分がローカルに記憶されていない場合、処理ブロック１２０において、例えばプロセッサにより、ローカル要求がリモート要求に変換される。処理ブロック１２５においてリモート要求が送信される。リモート要求は例えば、ローカルデバイスのプロセッサからサーバへ送信され得る。その後、サーバは、例えば、図５に関して本文において詳述している処理を実行しうる。
【００１２】
図１に戻ると、ダウンロード可能コンテンツの要求部分が処理ブロック１３０において受信される。処理ブロック１３０において、ダウンロード可能コンテンツの要求部分がローカルに記憶される。ダウンロード可能コンテンツの要求部分をローカルに記憶することにより、該部分が再要求された場合であっても、再ダウンロードする必要はない。例えば、あるゲームにおいて、同じ背景やキャラクタが複数レベルにわたって使用される場合、コンテンツの一部分が複数回要求される場合がある。
処理ブロック１４０において、ダウンロード可能コンテンツの要求部分が実行される。その一方で、ダウンロード可能コンテンツのうち、先に要求された部分が実行されている間に、ダウンロード可能コンテンツの一部分に対して受信した別のローカル要求に対して、処理ブロック１１０において該方法を繰り返すことができる。換言すれば、該方法における各行為は非同期的に実行されてもよい。つまり、前の処理が完了しないうちに別の処理を進行することができる。
【００１３】
図１に示すように、ダウンロード可能コンテンツの一部分に対する別のローカル要求は、処理ブロック１３５において、ダウンロード可能コンテンツの第１部分の記憶後に受信されうる。図面においては、ダウンロード可能コンテンツの各部分に対する後続のローカル要求はこの位置（処理ブロック１３５）で発生するものとして例示されているが、該要求は、最初のローカル要求を受信後、処理におけるいずれの時点においても発生しうる。しかし、直前に要求された部分の実行完了後に、後続の要求部分が実行できない場合は、エラーメッセージが生成され、後続の要求部分のダウンロードを終了できるように実施が遅延される。これについては、図３に関して本文において詳述している。本文中で使用されているように、「後続」との用語は、要求が受信される、送信される、及び／又は予測される順序について言及しているに過ぎない。また、該用語は、コンテンツの特定部分が必ずしも、時間や実行順序、コードの位置などに対して、前に要求されたコンテンツ部分の「後」であることを示すものではない。更に、コンテンツの同一部分が複数回要求されてもよい。従って、要求は、２以上の、先に要求されたコンテンツ、現在要求されているコンテンツ、及び／又はその次に要求されるコンテンツ部分から構成されると考えられる。
【００１４】
該方法は、要求デバイスとダウンロード可能コンテンツのホストとの間の接続が切断されるまで、ダウンロード可能コンテンツが全て実行されるまで、あるいは、ダウンロード可能コンテンツの全ての部分が記憶されるまで、継続されうる。例えば、ユーザがゲームを止めるまで、ゲーム機の電源を切るまで、あるいは、ゲームの全レベルを終了するまで、あるいは、ゲームが全てダウンロードされるまで、ゲームの各部分は常に要求され、実行され得る。従って、ユーザが短時間しかゲームをプレイせず、かつ、そのユーザがそのゲームを好きでないと判断する場合、ゲーム機にはゲームのうち小さな部分だけだダウンロードされている。これにより、ユーザは、好みでないゲームのダウンロードを待つことにより損失する時間、帯域幅量及び／又は、好みでないゲームに対して損失するデータ許容量、及び、好みでないゲームに占有されるゲーム機におけるメモリ量、を最小に抑えることができる。
同様に、ユーザが全レベルのゲームを終了してしまい、そのゲームのプレイを望むことはない場合、ゲームのなかでゲームプレイの間にユーザが必要とした部分だけがゲーム機にダウンロードされている。これにより、不要なファイルや機能のダウンロードを待つことにより損失する時間、不要なファイルや機能をダウンロードするにあたり損失するデータ許容量及び／又は帯域幅量、及び、不要なファイルや機能に占有されるメモリ量、を最小に抑えることができる。
【００１５】
図２は、本発明の別の実施形態に係るダウンロード可能コンテンツの転送を最適化する方法を示すフローチャートである。本実施形態によれば、ダウンロード可能コンテンツの各部分は、実行にあたり必要に応じて「オンデマンド」要求されるか、実行にあたり必要とされる部分の予測に基づいて要求されるか、この両方に基づいて要求される。ダウンロード可能コンテンツの各部分に対する要求はローカルに予測され、ダウンロード可能コンテンツの予測部分は、これらの部分に対するローカル要求を受信する前に取得される（あるいは、これらの部分に対するローカル要求を受信せずに全体が取得される）。
【００１６】
処理ブロック２１０において、ダウンロード可能コンテンツの最初の部分に対する最初のローカル要求が受信される。決定ブロック２１５において、ダウンロード可能コンテンツのうち、この最初の部分がローカルに記憶されているかどうかが判断される。ダウンロード可能コンテンツのうち、最初の部分が実際にローカルに記憶されている場合、最初のローカル要求が処理ブロック２３７において記憶され、ダウンロード可能コンテンツのうち、最初の部分が処理ブロック２４０で実行される。しかし、ダウンロード可能コンテンツのうち、最初の部分がローカルに記憶されていない場合、処理ブロック２２０において、最初のローカル要求は、ダウンロード可能コンテンツの最初の部分に対するリモート要求に変換される。処理ブロック２２５において、リモート要求が送信され、処理ブロック２３０において、ダウンロード可能コンテンツの最初の部分が受信される。処理ブロック２３５において、ダウンロード可能コンテンツの最初の部分が記憶され、処理ブロック２３７において、最初のローカル要求が記憶される。ダウンロード可能コンテンツの最初の部分は処理ブロック２４０において実行される。
【００１７】
使用されている「最初の」との用語は、コンテンツの特定の実行における第１要求に対応するコンテンツ部分であり、この部分は必ずしも、時間や実行順序、コードの位置に対するコンテンツの第１部分を示すものではない。従って、例えば、あるゲームの「最初の」部分はレベル７であってもよいし、あるビデオの「最初の」部分は、ビデオの中間部分であってもよいし、ある本の「最初の」部分は第８章、であってもよい。しかし、別の実施形態では、コンテンツの「最初の」部分はダウンロード可能コンテンツに対する最小の作業データセットに対応するものであってもよいし、あるいは、コンテンツ全体に対してまず初めに実行されるダウンロード可能コンテンツ部分に実際に対応するものであってもよい。後者に関しては、例えば、最初の部分は、ゲームのレベル１であってもよいし、ビデオの最初の１０秒であってもよいし、あるいは、本の第１章であってもよい。いずれの場合も、ダウンロード可能コンテンツの少なくとも最初の部分は、本実施形態によりダウンロード可能コンテンツの実行が開始される前にローカルに記憶されることが要求されうる。実行開始前にコンテンツの最初の部分のダウンロードを要求することにより、実行の遅れや中断を最小にすることでユーザ体験を高めることができる。従って、例えば、初めてゲームを開始するユーザは、プレイする前にゲームのレベル１をダウンロードするように要求されうる。あるいは、レベル４で止めた後にゲームに戻るユーザは、プレイする前にゲームのレベル５をダウンロードするように要求されうる。
【００１８】
図２に示すように、処理ブロック２５０において、ダウンロード可能コンテンツの一部分に対する後続要求が予測されうる。本実施形態では、この後続要求は、例えばダウンロード可能コンテンツを実行中のデバイスによりローカルに予測される。そのような予測は、例えば、ダウンロード可能コンテンツのうち、前に要求された部分（例えば、ダウンロード可能コンテンツのうち、最初の部分）、前のローカル要求（例えば、記憶済みの最初のローカル要求）、ダウンロード可能コンテンツメタデータ（例えば、タイトル、サイズ、種類、パブリッシャ、要求デバイスメタデータ（例えば、種類、ＯＳ、記憶領域、接続のタイプ）、現ユーザ及び他のユーザ双方のユーザメタデータ（例えば、統計情報、コンテンツへのアクセス履歴）、および、ダウンロード可能コンテンツ要求メタデータ（例えば、ローカル要求の連続ログ）などによりなされ得る。任意に、予測要求は、予測要求メタデータとして記憶されうる。
【００１９】
ダウンロード可能コンテンツ要求メタデータは、実行中の特定のコンテンツにおいてなされた要求のログに限定されるものではなく、前に実行された他のコンテンツにおいてなされた要求のログも同様に含みうる。例えば、アクションゲームは同様の順序で同様の機能を実行するとの想定に基づき、特定のアクションゲームによりなされる後続要求は、別のアクションゲームの要求メタデータを使用して予測されうる。そのような想定は、要求されたコンテンツのジャンルだけではなく、プラットフォーム、パブリッシャ、著者、リリース日、あるいはその他利用可能コンテンツメタデータに基づいてなされてよい。
【００２０】
決定ブロック２５３において、ダウンロード可能コンテンツの予測部分がローカルに記憶されているかどうかが判断される。ダウンロード可能コンテンツの予測部分が実際にローカルに記憶されている場合、後述するように、該方法は処理ブロック２６５に進む。しかし、ダウンロード可能コンテンツの予測部分がローカルに記憶されていない場合、ダウンロード可能コンテンツの予測部分に対するリモート要求が処理ブロック２５５において生成される。処理ブロック２５７においてリモート要求が送信される。処理ブロック２６０において、ダウンロード可能コンテンツの予測部分が受信される。処理ブロック２６３において、ダウンロード可能コンテンツの予測部分が記憶される。該方法は処理ブロック２６５において継続する。ダウンロード可能コンテンツの予測部分をローカルに記憶することにより、該部分が要求された場合（例えば、予測が正しい場合）や該部分が再予測された場合でもこれらの部分の再ダウンロードする必要はなくなる。ブロック２５０から２６３は、ローカル要求を形成しているモジュールやアプリケーションから独立して完了され得る。
【００２１】
処理ブロック２６５において、ダウンロード可能コンテンツの一部分に対する後続のローカル要求が受信される。決定ブロック２７０において、予測要求メタデータにアクセスするなどにより、後続のローカル要求が予測要求に一致するかどうか、つまり、要求がダウンロード可能コンテンツの同一部分に対するものであるかどうかが判断される。予測要求メタデータは予測が正しかったかどうかを反映するようにアップデートすることもでき、かつ、後続の予測の精度を向上するために使用可能である。
後続のローカル要求が予測要求と一致する場合は、後続のローカル要求は処理ブロック２７３において記憶される。処理ブロック２７５においてダウンロード可能コンテンツの予測部分が実行される。後続のローカル要求が予測要求と一致しない場合、ダウンロード可能コンテンツの要求部分が決定ブロック２８０においてローカルに記憶される。ダウンロード可能コンテンツの要求部分が実際にローカルに記憶されている場合、処理ブロック２９３において後続のローカル要求が記憶され、かつ、処理ブロック２９５において、ダウンロード可能コンテンツの要求部分が実行される。ダウンロード可能コンテンツの要求部分がローカルに記憶されていない場合、処理ブロック２８３において後続のローカル要求がリモート要求に変換され、処理ブロック２８５において該リモート要求が送信される。処理ブロック２８７においてダウンロード可能コンテンツの要求部分が受信される。処理ブロック２９０において該部分が記憶される。後続のローカル要求は処理ブロック２９３において記憶され、処理ブロック２９５において、ダウンロード可能コンテンツの要求部分が実行される。
【００２２】
ダウンロード可能コンテンツの必要な部分に対してブロック２５０から２９５を繰り返すことができる。後続の予測を（要求されたコンテンツ及び将来要求されるコンテンツの双方に対して）より正確に行うために、例えば、ブロック２３７、２７３、及び２９３において記憶されるローカル要求を使用して、ダウンロード可能コンテンツ要求メタデータを確立及び拡張するようにしてもよい。この方法は、要求デバイスとダウンロード可能コンテンツのホストとの間での接続が切断されるまで、ダウンロード可能コンテンツが全て実行されるまで、あるいは、ダウンロード可能コンテンツの全ての部分が記憶されるまで、 継続されうる。
【００２３】
図面においては、後続要求は、後続のローカル要求を受信し、コンテンツの要求部分が実行された後に再び発生するものとして例示されている。しかし、先に行った予測に関連するローカル要求が受信される前に、後続要求が予測され、そしてコンテンツの予測部分がダウンロードされることも考えられる。例えば、ブロック２１０において第１ローカル要求を受信して２４０においてコンテンツのうち第１部分を実行した後に、２５０において第２のローカル要求はどのようなものでありうるかといった第１予測がなされてもよく、かつ、コンテンツのうち予測部分が２６０においてダウンロードされ、２６３において記憶されうる。ブロック２４０においてコンテンツのうち、第１部分を実行中であり、２６５において第２ローカル要求が受信される前に、第３ローカル要求はどのようなものであり得るかといった第２予測がなされてもよく、コンテンツのうち、予測部分がダウンロードされ、記憶されうる。
【００２４】
該方法が実行されている間は、予測や関連のダウンロードを永続的に継続することができ、あるいは、該方法におけるいずれの時点においても中断、中止が可能である。例えば、次のローカル要求が受信された場合は予測を中断することができ、この時点で、過去の予測や未来の予測のリファインや見直しがなされうる。予測要求メタデータは予測が正しかったかどうかを反映するようにアップデートすることもでき、かつ、後続の予測の制度を向上するために使用可能である。更に、現在実行中の要求やコンテンツ部分を超える、一定回数の予測要求がなされた場合に（あるいは、コンテンツのうち、一定量の予測部分がダウンロードされた場合に）、予測を中断することができる。例えば、第１ローカル要求に従いゲームのレベル１が現在実行中であり、後続のローカル要求がまだ受信されていない場合に、次の２つの要求に予測を限定することができる。従って、レベル２に対する第２要求と、レベル３に対する第３要求が予測され、ゲームの各々の部分がそれぞれダウンロードされ得る。しかし、現実の第２のローカル要求が受信されるまで、第４要求は予測されることはない。ダウンロード可能コンテンツ要求メタデータは、第２ローカル要求を受信後にアップデートされうる。そのため、このような実施形態により、将来の予測をより正確なものに向上することができ、その間にコンテンツの予測部分のうち、限定部分だけがダウンロードされることになる。更に、（実行が実際に求められるかどうかを問わず）コンテンツのうち、予測部分専用のメモリ量は制限される。従って、第２ローカル要求を受信する前にユーザがゲームを止め、再びゲームをプレイすることがない場合は、不要データで占有されているのは極少量のメモリだけである。
【００２５】
処理ブロック２６５において第２ローカル要求を受信後に、該方法は、第１予測に対して決定ブロック２７０に進むことができる。換言すれば、２７０において、第２ローカル要求が第１ローカル要求と比較され、図示しているように方法が進行する。更に、処理ブロック２７３又は２９３において第２ローカル要求を記憶後に、ダウンロード可能コンテンツ要求メタデータをアップデート可能であり、後続の予測の精度の向上が可能である。例えば、第２予測（及び、第２ローカル要求の受信前になされたいずれの他の予測）は第２ローカル要求のコンテンツとアップデートされた要求メタデータとに基づいて再定義されてよく、新たな予測が絶えず確立されうる。
【００２６】
図３は、例えば図１又は図２により説明したように、受信したダウンロード可能コンテンツを実行する方法を例示したフローチャートである。コンテンツの実行は、例えば、コンテンツの表示などによるコンテンツの出力である。これは、１以上のユーザ入力による影響を受け得る。図３に示す実施形態によれば、ダウンロード可能コンテンツの第１部分が実行され、該第１部分の実行完了後に、第２部分が実行される、等のことが行われる。しかし、直前に要求された部分の実行完了後に、後続の要求部分が実行できない場合は、エラーメッセージが生成され、後続の要求部分のダウンロードを終了できるように実施が遅延される。図３の処理ブロック３１０において、ダウンロード可能コンテンツの最初の部分が実行される。説明のために、ダウンロード可能コンテンツのこの部分には、ｎの値として１が割り当てられる。ダウンロード可能コンテンツの最初の部分の実行を開始すると、ｎは、ｎ＝ｎ＋１、又はｎ＝２と設定される。本文で使用されているように、各種のｎの値は単にコンテンツの特定部分が要求、送信、及び／又は予測される順序を示すに過ぎず、必ずしもコンテンツのうち、ある特定の部分が、時間、実行順序、コードのロケーションなどに対して、コンテンツのうち、前に要求された部分の「後」であることを示すものではない。更に、ｎの値が２以上であれば、同一のダウンロード可能コンテンツ部分を示し得ると考えられ得、例えば、２回以上要求されるダウンロード可能コンテンツの一部分などの場合である。
【００２７】
決定ブロック３２０において、ダウンロード可能コンテンツのｎ番目の部分が実行可能であるかどうかが判断される。この決定は、コンテンツの前の部分（例えば、ｎ−１の部分）を実行後のいずれの時点においてなされ得る。例えば、第２部分が利用できるかどうかについては、コンテンツの最初の部分の実行直後、最初の部分を実行する間の特定の間隔で、最初の部分を実行する間、不定期に、あるいは、最初の部分の実行が完了する前に、問い合わせされ得る。実行をサポートするためにダウンロード可能コンテンツのデータの少なくとも最小量が記憶されている場合、ダウンロード可能コンテンツの一部分を実行することができる。例えば、該部分が全てダウンロードされ記憶されていれば、あるいは、該部分のうち、実行を開始させることができる少なくとも最小作業量のデータがあれば、該部分の実行が可能となる。
【００２８】
ダウンロード可能コンテンツのｎ番目の部分の実行が可能な場合、処理ブロック３３０で実行され、ｎは、ｎ＝ｎ＋１と設定され、該方法は決定ブロック３２０に戻る。例えば、ダウンロード可能コンテンツの第２部分の実行が可能な場合、処理ブロック３３０で実行され、ｎは、ｎ＝ｎ＋１と、あるいはｎ＝３と設定される。次いで、決定ブロック３２０において、ダウンロード可能コンテンツの第３部分が実行可能であると判断され、ダウンロード可能コンテンツのｎ番目の部分ごとに、実行可能であるかどうかが判断される。
【００２９】
ダウンロード可能コンテンツのｎ番目の部分が実行できない場合は、ダウンロード可能コンテンツの実行は処理ブロック３４０において中断され、処理ブロック３５０において遅延メッセージが生成される。これにより、異常タイムアウトやその他の正常でない状況の発生を防ぐことができる。更に、ｎの値に変更はない。従って、該方法において、決定ブロック３２０において、ダウンロード可能コンテンツのｎ番目の部分が実行可能であるかどうかについて絶えず判断される。ダウンロード可能コンテンツのｎ番目の部分が実行可能である場合、該部分は処理ブロック３３０において実行され、ｎは、ｎ＝ｎ＋１と設定される。方法は、決定ブロック３２０に戻る。該方法は、要求デバイスとダウンロード可能コンテンツのホスト間の接続が切断されるまで、あるいは、 ダウンロード可能コンテンツが全て実行されるまで、ダウンロード可能コンテンツのｎ番目の部分ごとに繰り返され得る。
【００３０】
このｎ番目の部分のダウンロードを進めるか完了することができるように、ダウンロード可能コンテンツのいずれの部分の実行をいずれの時点においても中断することができる。しかし、本実施形態では、コンテンツの前の部分（つまり、ｎ−１の部分）の実行完了後にダウンロード可能コンテンツのｎ番目の部分を実行できない場合、ダウンロード可能コンテンツの実行は中断される。例えば、ダウンロード可能コンテンツの第２部分が実行できない場合、処理ブロック３４０においてダウンロード可能コンテンツ全体の実行が中断され、（つまり、最初の部分の実行が完了し、第２部分の実行が開始する前の間に遅延が実施される）、処理ブロック３５０において遅延メッセージが生成される。ｎの値は、ｎ＝２のままである。従って、該方法は引き続き決定ブロック３２０に戻り、ダウンロード可能コンテンツの第２部分が実行可能であるかどうかを判断する。ダウンロード可能コンテンツの第２部分が実行可能になると、該部分は処理ブロック３３０で実行され、ｎは本例においては、ｎ＝ｎ＋１、又は、ｎ＝３と設定される。次いで、決定ブロック３２０において、ダウンロード可能コンテンツの第３部分が実行可能であるかどうかの決定等がなされる。該方法は、ダウンロード可能コンテンツのうち、ローカルに要求された部分ごとに繰り返されるか、要求デバイスとダウンロード可能コンテンツのホストとの接続が切断されるまで繰り返される。
【００３１】
図４は、本発明の実施形態に係るダウンロード可能コンテンツ要求メタデータを確立し拡張するための方法を例示したフローチャートである。本実施形態では、ダウンロード可能コンテンツ要求メタデータは、ダウンロード可能コンテンツをホストするサーバ、つまり、第３者より遠隔に構築される。処理ブロック４１０において、ダウンロード可能コンテンツの一部分に対するリモート要求が受信される。処理ブロック４２０において、ダウンロード可能コンテンツの要求部分が送信される。処理ブロック４３０において、リモート要求がダウンロード可能コンテンツ要求メタデータファイルに記憶される。該方法は、ダウンロード可能コンテンツの一部分に対して受信したリモート要求ごとに繰り返される。このリモート要求は受信した順序に従い順次記憶されたものである。ダウンロード可能コンテンツ要求メタデータは、ダウンロード可能コンテンツメタデータ（例えば、タイトル、サイズ、種類、パブリッシャ）、要求デバイスメタデータ（例えば、種類、ＯＳ、記憶領域、接続の種類）、及び現ユーザとその他のユーザ双方のユーザメタデータ（例えば、統計情報、コンテンツへのアクセス履歴）など、その他の各種情報に関連づけられて記憶され得る。
【００３２】
ダウンロード可能コンテンツメタデータがまだ記憶されていない場合、要求デバイスメタデータ、ユーザメタデータ及び／又はダウンロード可能コンテンツ要求メタデータは、要求デバイス、パブリッシャ、製造者及び／又はデータベース配信者、第３者のウェブサイト、及び／又は第３者のユーザデバイスなどの各種ソースからの情報を使って要求され、取得され、拡張されうる。
該方法は、要求デバイスとダウンロード可能コンテンツのホスト間の接続が切断されるまで、あるいは、ダウンロード可能コンテンツの全ての部分が要求されるまで、及び／又は送信されるまで継続されうる。
【００３３】
図５は、本発明の一実施形態に係る予測を用いてダウンロード可能コンテンツの転送を最適化するための方法を例示したフローチャートである。本実施形態では、該方法は、ダウンロード可能コンテンツのホスティングサーバに関して例示している。しかし、図５に関して説明するリモート予測は、同期又は非同期の形態で、図２に関して説明したローカル予測と組み合わせることもでき、また、図2のローカル予測に代えて、あるいはこれと同時になされてもよいと考えられる。更に、図５の実施形態は、同期又は非同期の形態で、図４に関して説明した実施形態と組み合わせることもできるし、これに代えてもよいし、あるいは、これと同時に、あるいは共に実施されてもよいと考えられる。図４及び図５により例示された方法は、非同期に実施される場合には、一方では将来の要求を予測しながら、要求を受信し、実行し、更にダウンロード可能コンテンツ要求メタデータを構築することができる。
【００３４】
図５の処理ブロック５１０において、ダウンロード可能コンテンツの最初の部分の最初のリモート要求が受信される。説明のために、ダウンロード可能コンテンツのこの部分には、ｎの値として１が割り当てられる。処理ブロック５２０において、最初のリモート要求に応答するダウンロード可能コンテンツの最初の部分が送信される。ダウンロード可能コンテンツの最初の部分の送信を開始すると、ｎは、ｎ＝ｎ＋１、又はｎ＝２と設定される。処理ブロック５３０において、ダウンロード可能コンテンツの一部分に対するｎ番目のリモート要求が予測される。そのような予測は、例えば、ダウンロード可能コンテンツのうち、先に要求された部分(例えば、ダウンロード可能コンテンツの最初の部分)、先のリモート要求(例えば、図４の４３０において記憶されたリモート要求)、ダウンロード可能コンテンツメタデータ(例えば、タイトル、サイズ、種類、パブリッシャ)、要求デバイスメタデータ(例えば、種類、ＯＳ、記憶領域、接続のタイプ)、現ユーザ及び他のユーザ双方のユーザメタデータ(例えば、統計情報、コンテンツへのアクセス履歴)、および、ダウンロード可能コンテンツ要求メタデータ(例えば、図４に示したように確立され構築されたもの）、及び予測要求メタデータ等を用いてなされてよい。
【００３５】
予測を定式化するために、該データを要求ユーザ、要求デバイスおよび／又は特定の要求されたダウンロード可能コンテンツに関して分析するようにしてもよい。これに代えて、あるいはこれに追加して、該データを複数の要求ユーザ、要求デバイスおよび／又は要求されたダウンロード可能コンテンツにわたって集計され分析されてもよい。後者の実施形態では、同じダウンロード可能コンテンツのマルチ実行からダウンロード可能コンテンツ要求メタデータを分析し、ダウンロード可能コンテンツを実行する間に任意のブランチを特定するようにしてもよい。更に、各種分析をブランチダウンロード可能コンテンツ要求メタデータファイル（ＢＤＣＲＭＦ：branching downloadable content request metadata file）に統合してもよい。
例えば、ダウンロード可能コンテンツ要求メタデータファイルは、形状モデルデータが要求される場合は関連のテクスチャも要求されるであろうと予測するブランチを有することができる。従って、レベル１の形状モデルデータに対するローカル要求が受信されると、レベル１のテクスチャが要求されることが予測されうる。同様に、レベル２の形状モデルデータに対するローカル要求が受信されると、レベル２のテクスチャが要求されることが予測されうる、等である。
【００３６】
別の実施形態では、ユーザデバイスＡによるゲームＸにおける後続要求は、ゲームＸにおいて複数のユーザデバイスに関連づけられた複数の要求メタデータファイルにおいて確立されたファイルアクセスパターンを分析することにより予測され得る。そのような予測は、ゲームＸを実行中の複数のユーザデバイスが、同じ順序でゲームＸのデータを要求する（つまり、同じゲームのユーザは同様の順序で似たような行動をとる）との想定に基づくものである。別の例では、ユーザデバイスＢによるパズルゲームＹにおける後続要求は、パズルゲームＹにおいて確立されたユーザデバイスＣのファイルアクセスパターンを分析することにより予測されうる。この場合、ユーザデバイスＢ及びユーザデバイスＣは、同様のパズルゲームＺにおいて、似たようなゲームプレイ挙動をとること（つまり、ファイルアクセスパターンが似ていること）が認められる。この予測は、ユーザデバイスＢとユーザデバイスＣとが同様の順序でゲームＺを要求していることから、各ユーザデバイスが同様の順序で同様のゲームＹを要求するであろう（つまり、１つのパズルゲームで似たようなゲームプレイ挙動をとる二人のユーザは、同様のパズルゲームにおいてもゲームプレイ挙動は似ているであろう）との想定に基づくものである。
【００３７】
このような要求やメタデータ、予測は動的であるので、本文に記載の各方法は、例えばユーザ入力に従い実行するインタラクティブコンテンツなど、実行ごとに同一の、又は同様の順序で同一の、又は同様のオペレーションを実行しないダウンロード可能コンテンツとの併用に適している。従って、例えば、本文に記載のシステム及び方法は、ハイレベルで高度なビデオゲームおよび仮想現実環境とともに実装され得る。
【００３８】
任意の決定ブロック５４０において、ダウンロード可能コンテンツの予測部分が要求デバイスに記憶済みであるかどうかが判断される。この判断は、要求された特定のダウンロード可能コンテンツ及び特定の要求デバイスに関連付けられるダウンロード可能コンテンツ要求メタデータを分析することによりなされ、予測部分が前に要求され送信済であるかどうかが判断される。これに代えて、要求デバイスにクエリを送信し、予測部分に関してローカルメモリをチェックするようにしてもよく、応答が受信されうる。ダウンロード可能コンテンツの予測部分が要求デバイスに記憶済みである場合、ｎはｎ＝ｎ＋１と設定され、処理ブロック５３０において別の予測がなされる。ダウンロード可能コンテンツの予測部分が要求デバイスに記憶されていない場合、処理ブロック５５０において該部分が送信され、ｎは、ｎ＝ｎ＋１と設定され、処理ブロック５３０において別の予測がなされる。該方法は、例えば、要求デバイス又はサーバが接続を切断するまで、あるいは、ダウンロード可能コンテンツの全ての部分が送信されるまで継続され得る。
【００３９】
任意の決定ブロック５４０が省略される実施形態においては、方法は、処理ブロック５３０から直接進められる。ここではダウンロード可能コンテンツの一部分に対するｎ番目のリモート要求が予測され、処理ブロック５５０に進む。ここではダウンロード可能コンテンツの予測部分が送信される。つまり、要求デバイスに「プッシュ」される。次いで、要求デバイスは、コンテンツの予測部分に対して、所望するいずれのアクションをとることができる。例えば、予測部分が要求デバイスに記憶済みである場合、要求デバイスはその送信を終了するように要求することができるし、あるいは、前に記憶された部分を上書きするように要求することができる。予測部分が要求デバイスに記憶されていない場合、要求デバイスは予測部分を単に記憶し、コンテンツのその部分に対するローカル要求を待つようにしてもよい。
【００４０】
図６は、本文に記載の方法のうちの１以上の行為を実行するためのシステムを例示している。サーバ６１０はネットワーク６４０を介してユーザデバイス６５０に接続される。サーバ６１０は、プロセッサ６２０とメモリ６３０とを含み、これらは相互に通信状態にある。典型的には、サーバ６１０はコンピューティングシステムであり、ＡｐａｃｈｅサーバなどのＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）サーバとすることができる。しかし、サーバ６１０は、ダウンロード可能コンテンツやその一部をホストする、単一あるいは複数モジュール又はデバイスであってもよい。更に、サーバ６１０は、専用サーバ、共有サーバ、あるいはこれらの組み合わせであってよい。例えば、サーバ６１０は、ダウンロード可能コンテンツあるいはその一部の開発者、パブリッシャ、あるいは配信者、又は、ピアツーピア（Ｐ２Ｐ）ネットワークにおけるピアデバイスなどの第３者サーバであってもよい。更に、サーバ６１０は、ダウンロード可能コンテンツを提供する仮想マーケットやオンラインショッピングに基づくサービスを含み得る。本実施形態では、サーバ６１０（単独で、又は他のデバイスとの組み合わせで）、本文に記載した行為に加えて、料金請求など、各種の商業取引を進行し、実行することができる。
【００４１】
ユーザデバイス６５０は、アプリケーション６６０、ＯＳ６７０、プロセッサ６８０、メモリ６９０を含み、これらは相互に通信状態にある。ユーザデバイス６５０は、メインフレーム、ミニコンピュータ、パソコン、ノートパソコン、携帯情報端末（ＰＤＡ：Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、携帯電話、テレビ、ＣＤプレーヤ、ＤＶＤプレーヤ、ＢＤプレーヤ、ゲーム機、タブレット、電子書籍端末などであってよい。サーバ６１０及びユーザデバイス６５０は、ネットワーク６４０に接続可能であることを特徴とする。ネットワーク６４０は無線又は有線であってよく、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、電話ネットワーク（例えば、公衆電話網（ＰＳＴＮ：Ｐｕｂｌｉｃ  Ｓｗｉｔｃｈｅｄ  Ｔｅｌｅｐｈｏｎｅ  Ｎｅｔｗｏｒｋ）、無線ネットワーク、携帯電話ネットワーク（例えば、ＧＳＭ（登録商標）、ＧＰＲＳ、ＣＤＭＡ、ＥＶ−ＣＯ、ＥＤＧＥ、３ＧＳＭ（登録商標）、ＤＥＣＴ、ＩＳ−１３６／ＴＤＡ、ｉＤＥＮなど）、イントラネット、インターネット、あるいはこれらの組み合わせ、などであってよい。メモリ６３０及びメモリ６９０は、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス、Ｚｉｐドライブ、およびこれらの組み合わせ等の、揮発性又は不揮発性のいずれの種類の記憶媒体であってよい。メモリ６３０及びメモリ６９０は、永続記憶又は一時記憶可能であるか、あるいは永続記憶も一時記憶も可能であり、更に、内蔵型、外付け型、あるいは両方のタイプであってよい。
【００４２】
ピアツーピアネットワークが用いられる実施形態では、サーバ６１０は第３者ユーザデバイスであってよく、ユーザデバイス６５０は、ダウンロード可能コンテンツの要求部分又は予測部分をサーバ６１０から取得する。そのようなピアツーピアネットワークが用いられる場合、パブリッシャサーバなど、コンテンツの他のホストサーバからの帯域幅の使用が減り、関連する費用が抑えられる。例えば、コンテンツのうち、全ての要求部分および予測部分はユーザデバイス６５０により、第３者ユーザデバイスから取得されうる。これにより、全体として、ユーザデバイス６５０による他のサーバからの帯域幅の使用をなくすことができる。別の例では、第３者ユーザデバイスをアプリケーションパブリッシャサーバと共に使用し、コンテンツを提供するようにしてもよい。これにより、ユーザデバイス６５０による他のサーバからの帯域幅の使用を減らすことができる。更に、ユーザデバイス６５０は、幾つもの第３者ユーザデバイスと協働して、夫々がダウンロード可能コンテンツのうち、異なる部分を要求することができ、必要に応じて、ユーザデバイス間で該部分を共有することができる。本実施形態では、ユーザデバイス６５０及び第３者ユーザデバイスの双方はホストとしての役割を果たし、サーバとクライアントプログラムの両方を動作させ、コンテンツの要求部分を相互に提供する。
【００４３】
使用においては、アプリケーション６６０は、標準ファイルオペレーションによりＯＳ６７０を呼び出し、メモリ６９０に記憶されたデータをロードし、これにアクセスする。アプリケーション６６０は、ユーザデバイス６５０のユーザとダウンロード可能コンテンツ間にインターフェースを提供できるものであればどのようなソフトウェアおよび／又はハードウェアであってもよい。この標準ファイルオペレーションとしては、例えば、「オープン：開く」（つまり、アクセスされるファイルを特定する）、「シーク：探す」（つまり、データを読み込むためにファイルのどの位置に行けばいいかを特定する）、「リード：読み込む」（つまり、データがファイルから読み込まれ、アプリケーション６６０にコピーされるように要求する）、及び「クローズ：閉じる」（つまり、現時点でファイルが閉じられるように要求する）等が挙げられる。ＯＳ６７０は、既存のコードをパッチする、あるいはドライバを入れ替えることにより、標準ファイルオペレーションを本文に記載した付加的オペレーションを実行する新たなバージョンに変換し、「オンデマンド」のデータを最適にダウンロードするようにする。従って、アプリケーション６６０は、ダウンロード可能コンテンツが完全にダウンロードされないうちに、ダウンロード可能コンテンツの実行を開始することができる。更に、標準ファイルオペレーションを新たなオペレーションに置き換えることで、本文に記載の方法は、多種多様な新たなアプリケーションや既存のアプリケーションとともに実装され得る。例えば、開示した各実施形態を、昔に発売されたゲームや模倣されたゲームに実装することができる。その理由は、ゲームコードを大きく修正しなくても（あるいは、全く修正しなくても）ゲームコンテンツをストリーミングできるからである。
【００４４】
一実施形態では、アプリケーション６６０内の各ファイルは、生成されたアドレス領域においてユニークロケーション、つまり一意な位置にマッピングされる。例えば、アプリケーション６６０は、
（１）１０ｋＢのＦＩＬＥ１．ＤＡＴ、及び
（２）２０ｋＢのＦＩＬＥ２．ＤＡＴ
の２つのファイルを含みそのデータは、例えば、（１）のデータは０−９，９９９のユニークロケーションに、（２）のデータは１０，０００−２９，９９９のユニークロケーションにリマッピングされ得る。
本例では、アプリケーション６６０は、ＯＳ６７０に以下のローカル要求、即ち、
（Ａ）ＦＩＬＥ２．ＤＡＴに対する「オープン」要求、
（Ｂ）ロケーション２０に行くように要求する「シーク」要求、及び
（Ｃ）４０バイトの「リード」要求、
を伝える。
【００４５】
一実施形態では、ＯＳ６７０は、プロセッサ６８０に、アプリケーション６６０から受信したローカル要求を使用して、コンテンツの要求部分がメモリ６９０に記憶されているかどうかを判断するように指示する。コンテンツの要求部分がメモリ６９０に記憶されている場合、該部分がアプリケーション６６０に読み込まれてコピーされる。コンテンツの要求部分がメモリ６９０に記憶されていない場合、ＯＳ６７０は、アプリケーション６６０からのローカル要求を、サーバ６１０に読み込み可能なフォーマットで、コンテンツの所望部分に対するリモート要求に変換する。本例では、ＯＳ６７０は、ロケーション２０における４０バイトのＦＩＬＥ２．ＤＡＴからのデータに対するローカル要求を、ロケーション１０，０２０〜１０，０３９に対応する、ダウンロード可能コンテンツの部分のリモート要求に変換する。ユーザデバイス６５０はこのリモート要求をサーバ６１０に送信する。サーバ６１０のプロセッサ６２０は、メモリ６３０よりダウンロード可能コンテンツの要求部分を取得し、該部分をユーザデバイス６５０に返す。ユーザデバイス６５０は、ダウンロード可能コンテンツの要求部分をメモリ６９０に記憶し、そのローカル要求に対する応答として、該部分をアプリケーション６６０にコピーする。その後、ダウンロード可能コンテンツの要求部分がアプリケーション６６０により実行できるようになる。
【００４６】
ローカル要求のフォーマットと、プロセッサ６８０及び／又はメモリ６９０により使用されるフォーマットとに一貫性がない別の実施形態では、ＯＳ６７０はアプリケーション６６０からのローカル要求を、プロセッサ６８０及び／又はメモリ６９０が読み込み可能なフォーマットで、コンテンツの所望部分に対する要求に直ちに変換する。従って、上記実施形態では、ＯＳ６７０は、ロケーション２０における４０バイトのＦＩＬＥ２．ＤＡＴからのデータに対するローカル要求を、ロケーション１０，０２０〜１０，０３９に対応するコンテンツ部分に対するローカル要求に変換する。その後、ＯＳ６７０は、プロセッサ６８０に、アプリケーション６６０から受信したローカル要求を使用して、コンテンツの要求部分がメモリ６９０に記憶されているかどうかを判断するように指示する。
【００４７】
コンテンツの要求部分がメモリ６９０に記憶されている場合、該部分がアプリケーションに読み込まれ、コピーされる。コンテンツの要求部分がメモリ６９０に記憶されていない場合、ＯＳ６７０は、ロケーション１０，０２０〜１０，０３９に対応する部分に対するローカル要求を、ロケーション１０，０２０〜１０，０３９に対応するコンテンツの部分に対するリモート要求に変換し、ユーザデバイス６５０はこのリモート要求をサーバ６１０に送信する。サーバ６１０のプロセッサ６２０は、ダウンロード可能コンテンツの要求部分をメモリ６３０から取得し、該部分をユーザデバイス６５０に返す。ユーザデバイス６５０はダウンロード可能コンテンツの要求部分を、メモリ６９０に記憶し、そのローカル要求に対する応答として、この部分をアプリケーション６６０にコピーする。その後、ダウンロード可能コンテンツの要求部分がアプリケーション６６０により実行できるようになる。
【００４８】
本文に記載された特定の方法、具体的には、図１に関して記載した方法の実施に戻る。ユーザデバイス６５０のユーザは、アプリケーション６６０を使用して、サーバ６１０上で利用可能なダウンロード可能コンテンツを選択する。一実施形態では、アプリケーション６６０のオリジナルコードは、ダウンロード可能コンテンツ全体に対するユーザ要求に応答して、ダウンロード可能コンテンツの最初の部分（例えば、その最小作業ファイル）だけを要求するように修正されている。本実施形態では、アプリケーション６６０は選択されたコンテンツの最初の部分に対応するローカル要求をＯＳ６７０に送信する。ＯＳ６７０は、プロセッサ６８０に要求を伝える。プロセッサ６８０はメモリ６９０に対して、コンテンツの最初の部分に関する問い合わせを行う。
【００４９】
アプリケーション６６０のオリジナルコードが上記のように修正されていない別の実施形態では、アプリケーション６６０は、ダウンロード可能コンテンツ全体に対するユーザ要求に応答して、ダウンロード可能コンテンツ全体（つまり、ダウンロード可能コンテンツの全ての部分）を要求する。本実施形態では、アプリケーション６６０は、ダウンロード可能コンテンツ全体に対応するローカル要求をＯＳ６７０に送信する。ＯＳ６７０は、ダウンロード可能コンテンツ全体に対する要求を、ダウンロード可能コンテンツの最初の部分だけに対する要求（例えば、その最小作業ファイル）に変換し、この要求をプロセッサ６８０に伝える。
【００５０】
これらの実施形態のいずれにおいても、選択されたコンテンツの最初の部分がメモリ６９０にある場合、該部分はアプリケーション６６０によって、ＯＳ６７０とプロセッサ６８０と共に実行される。選択されたコンテンツの最初の部分がメモリ６９０にない場合、ＯＳ６７０は、ローカル要求をコンテンツの最初の部分に対するリモート要求に変換し、これをネットワーク６４０を介してサーバ６１０に送信する。例えば、宛先アドレス（例えば、サーバ６１０を表すアドレス）、要求（例えば、コンテンツの最初の部分に対する要求）、及び戻りアドレス（例えば、リモート要求を開始したユーザデバイス６５０を表すアドレス）を有する信号がユーザデバイス６５０から送信される。プロセッサ６２０は、メモリ６３０に対して、コンテンツの最初の部分に関しての問い合わせを行い、これをユーザデバイス６５０に送信する。ユーザデバイス６５０は、コンテンツの最初の部分をメモリ６９０に記憶する。該部分はアプリケーション６６０によって、ＯＳ６７０とプロセッサ６８０と共に実行される。アプリケーション６６０により生成されるダウンロード可能コンテンツの各部分に対する後続のローカル要求も同様に処理される。
【００５１】
ダウンロード可能コンテンツ全体に対するユーザ要求に応答して、ダウンロード可能コンテンツの最初の部分だけを要求するために、アプリケーション６６０あるいはＯＳ６７０のオリジナルコードのいずれも修正されていない更に別の実施形態では、アプリケーション６６０及びＯＳ６７０はダウンロード可能コンテンツ全体をそれぞれローカルおよびリモートに要求し、サーバ６１０はこの要求を変換する。具体的には、アプリケーション６６０はダウンロード可能コンテンツ全体に対応するローカル要求をＯＳ６７０に送信する。ＯＳ６７０は、プロセッサ６８０にこの要求を伝える。プロセッサ６８０はメモリ６９０に対して、ダウンロード可能コンテンツ全体についての問い合わせを行う。
【００５２】
ダウンロード可能コンテンツ全体がメモリ６９０にある場合は、該部分は、アプリケーション６６０によって、ＯＳ６７０とプロセッサ６８０と共に実行される。コンテンツ全体がメモリ６９０にない場合は、ＯＳ６７０は、ローカル要求をコンテンツ全体に対するリモート要求に変換し、該要求をネットワーク６４０を介してサーバ６１０に送信する。サーバ６１０は、コンテンツ全体に対する要求を、コンテンツの最初の部分に対する要求（例えば、その最小作業ファイル）に変換し、このコンテンツの最初の部分をユーザデバイス６５０に送信する。ユーザデバイス６５０は、このコンテンツの最初の部分をメモリ６９０に記憶する。該部分は、アプリケーション６６０によって、ＯＳ６７０とプロセッサ６８０と共に実行される。アプリケーション６６０により生成されるダウンロード可能コンテンツの各部分に対する後続のローカル要求は、上述した各実施形態に従い、ＯＳ６７０によりローカルに変換される。
【００５３】
図１の方法の実施において、ダウンロード可能コンテンツのうち、前に要求された部分が実行されている間に後続要求が受信され、ダウンロード可能コンテンツのうち、この後続要求に関連する部分が取得され得る。換言すれば、本文に記載した各方法の行為は、非同期に実施され得る。つまり、前の処理が完了しないうちに他の処理を進行することができる。これにより、ユーザは、例えばゲーム全体のダウンロードが完了しないうちにゲームプレイを開始することができる。
図２の方法の実施において、例えば、サーバ６１０、ネットワーク６４０、及びユーザデバイス６５０は、図１の実施に関して上述した同様の機能を実行することができる。更に、アプリケーション６６０から受信したローカル要求は、それらがダウンロード可能コンテンツ要求メタデータとして受信された順序で順次メモリ６９０に記憶される。プロセッサ６８０はこのダウンロード可能コンテンツ要求メタデータにアクセスし、要求されたメタデータ内のファイルアクセスパターンを分析することにより、ダウンロード可能コンテンツの各部分に対する後続要求を予測する。プロセッサ６８０は更に、ダウンロード可能コンテンツのうち、前に要求された各部分（例えば、ダウンロード可能コンテンツの最初の部分）、前のローカル要求（例えば、記憶済みの最初のローカル要求)、ダウンロード可能コンテンツメタデータ（例えば、タイトル、サイズ、種類、パブリッシャ）、要求デバイスメタデータ（例えば、種類、ＯＳ、記憶領域、接続のタイプ）、現ユーザ及び他のユーザ双方のユーザメタデータ（例えば、統計情報、コンテンツへのアクセス履歴）などを用いて予測を行う。
【００５４】
プロセッサ６８０は、コンテンツの予測部分がローカルに記憶されているかどうかを判断するために、メモリ６９０に問い合わせを行う。コンテンツの予測部分がメモリ６９０に記憶されている場合、プロセッサ６８０は、ダウンロード可能コンテンツのうち、別の部分に対する別の後続要求を予測する。ダウンロード可能コンテンツの予測部分がメモリ６９０に記憶されていない場合、ＯＳ６７０はこのコンテンツの予測部分に対するリモート要求を生成し、該要求をネットワーク６４０を介してサーバ６１０に送信する。サーバ６１０は図１の実施に関して上述したリモート要求を実施し、これをメモリ６９０に記憶する。
一実施形態では、予測要求は、予測要求メタデータとしてメモリ６９０に記憶される。従って、ＯＳ６７０において、後続のローカル要求がアプリケーション６６０から実際に受信される場合、プロセッサ６８０は、これに対応する後続の予測要求をメモリ６９０から要求し、この予測を後続のローカル要求と比較する。後続のローカル要求が、ダウンロード可能コンテンツの予測部分と同じ部分を要求するものである場合、メモリ６９０に記憶されているコンテンツの予測部分は、アプリケーション６６０によって、ＯＳ６７０及びプロセッサ６８０と共にアプリケーション６６０により実行される。後続のローカル要求が、ダウンロード可能コンテンツの予測とは異なる部分を要求するものである場合、プロセッサ６８０は、コンテンツの要求部分がローカルに記憶されているかどうかを判断するために、メモリ６９０に問い合わせを行う。いずれの場合も、予測要求メタデータをアップデートして、予想が正しかったかどうかを示すようにしてもよく、また、予測要求メタデータを使用して、将来の予測をリファインあるいは精度を向上するようにしてもよい。次いで、図１の実施に関して上述したように、図２の実施が継続される。
【００５５】
別の実施形態では、予測要求はメモリ６９０に記憶されなくてもよい。従って、ＯＳ６７０において、後続のローカル要求がアプリケーション６６０から実際に受信される場合、プロセッサ６８０は、単にコンテンツの要求部分がローカルに記憶されているかどうかを判断するためにメモリ６９０に問い合わせを行う。換言すれば、プロセッサ６８０は、コンテンツの要求部分がどのようにしてメモリ６９０において利用できるようになったかについては関心がない。次いで、図１の実施に関して上述したように、図２の実施が継続される。
図３に示す方法の実施において、アプリケーション６６０は、ＯＳ６７０とプロセッサ６８０とともに、ダウンロード可能コンテンツの最初の部分を実行する。プロセッサ６８０は、ダウンロード可能コンテンツの次の部分が実行可能であるかどうか（つまり、次の部分に対する少なくとも最小作業量のデータがメモリ６９０に記憶されているかどうか）を判断するために、メモリ６９０に問い合わせを行う。コンテンツの次の部分が実行可能である場合、最初の部分の実行完了後に、この次の部分がアプリケーション６６０に提供され、該アプリケーションによって実行される。
【００５６】
最初の部分の実行完了後に、コンテンツの次の部分を実行できない場合、ＯＳ６７０はアプリケーション６６０によるダウンロード可能コンテンツの実行を延期する。換言すれば、コンテンツの最初の部分と後続部分との間で遅延が実施される。プロセッサ６８０は、保存された遅延メッセージをメモリ６９０から取得する。この遅延メッセージは、コンテンツの次の部分が実行できるようになるまで実行され、アプリケーション６６０に返されるものである。コンテンツの各部分のダウンロードは、ダウンロード可能コンテンツの実行とは別の処理で実行される（また、アプリケーション６６０によるダウンロード可能コンテンツの実行は、そのローカル要求に応答するコンテンツの次の部分が利用できるようになるまで中断される）ことから、異常タイムアウトやその他の異常事態の発生を防ぐことができる。換言すれば、アプリケーション６６０は、コンテンツの次の部分が利用できないこと、および、この次の部分が利用できるようになるまでその処理が延期されたことについて気づかないままである。アプリケーション６６０が延期される時間を最小限にするために、アプリケーション６６０により要求されそうなコンテンツの各部分を、要求されるであろう順序で要求するように、予測が定式化される。これについては、図２及び図５に関して詳述する。
【００５７】
図４に例示した方法の実施において、従って、ダウンロード可能コンテンツ要求メタデータの確立及び維持において、サーバ６１０はネットワーク６４０を介して、ユーザデバイス６５０からダウンロード可能コンテンツの一部分に対する要求を受信する。プロセッサ６２０は、メモリ６３０からコンテンツの要求部分を取得し、これをネットワーク６４０を介してユーザデバイス６５０に送信する。プロセッサ６２０は、ダウンロード可能コンテンツの各部分に対する要求を、受信した順序で順次メモリ６３０に記憶する。このファイル要求の順次リストは、サーバ６１０により使用されるダウンロード可能コンテンツ要求メタデータを構成するものであり、コンテンツの各部分に対する後続要求を予測するものである。図５に、本方法の実施に関して詳述している。
【００５８】
本文中の予測のために使用される各種データ（例えば、ダウンロード可能コンテンツメタデータ、ダウンロード可能コンテンツ要求データ、要求デバイスメタデータ、ユーザメタデータ）は、サーバ６１０とユーザデバイス６５０双方の予測の精度を向上するために、サーバ６１０とユーザデバイス６５０との間で共有され得る。例えば、ユーザデバイス６５０は、特定のコンテンツの実行において作成される要求の順次リストをより正確なものとするために、サーバ６１０とは別に、ダウンロード可能コンテンツ要求メタデータを確立し、維持し、共有することができる。従って、サーバ６１０が利用できるダウンロード可能コンテンツ要求メタデータは、リモートに要求されるものに限定されず、ローカルに利用可能なコンテンツの各部分に対してローカルに要求される要求を更に含み得る。
【００５９】
図５に例示の方法の実施において、サーバ６１０は、上述したように、コンテンツの一部分に対する最初の要求を受信し、該部分をユーザデバイス６５０に送信する。本実施形態では、プロセッサ６２０はメモリ６３０のダウンロード可能コンテンツ要求メタデータにアクセスし、図５に関して詳述したように、ダウンロード可能コンテンツの各部分に対する後続要求を予測する。任意に、プロセッサ６２０は、コンテンツの予測部分がユーザデバイス６５０に記憶されているかどうかを判断する。一実施形態では、プロセッサ６２０は、メモリ６３０内のファイル要求レコードを検索し、コンテンツの予測部分がユーザデバイス６５０によって前に要求されたものか、及び／又はユーザデバイス６５０に送信されたものであるかどうかを示す情報を求めることで、このような判断を行う。コンテンツの予測部分がユーザデバイス６５０によって前に要求されたものでなく、及び／又はユーザデバイス６５０に送信されたものでない場合、コンテンツの予測部分はサーバ６１０からメモリ６９０に送信される、あるいは「プッシュ」される。コンテンツの予測部分が実際にユーザデバイス６５０によって前に要求されたものであり、及び／又は、ユーザデバイス６５０に送信されたものである場合、プロセッサ６２０は、ダウンロード可能コンテンツの一部分に対する後続要求を予測する。
【００６０】
別の実施形態では、プロセッサ６２０は、コンテンツの予測部分がメモリ６９０に記憶されているかどうかに関して、ネットワーク６４０を介してユーザデバイス６５０にクエリを送信する。プロセッサ６８０は、コンテンツの予測部分がローカルに記憶されているかどうかを判断するために、メモリ６９０に問い合わせを行う。次いで、プロセッサ６８０は、ネットワーク６４０を介して、肯定応答又は否定応答をサーバ６１０に送信する。コンテンツの予測部分がユーザデバイス６５０に記憶されていない場合、コンテンツの予測部分はサーバ６１０からメモリに送信される、つまり、「プッシュ」される。コンテンツのうち、予測部分が実際にユーザデバイス６５０に記憶されている場合、プロセッサ６２０はダウンロード可能コンテンツの一部分に対する後続要求を予測する。
【００６１】
コンテンツの予測部分がユーザデバイス６５０に記憶されているかどうかをプロセッサ６２０が判断しない実施形態では、サーバ６１０は、ユーザデバイス６５０のメモリ６９０に、コンテンツの予測部分を送信する、つまり、「プッシュ」する。ユーザデバイス６５０のプロセッサ６８０は、コンテンツのうち、プッシュされた部分がメモリ６９０に記憶済みであるかどうかを判断しうる。この場合、プロセッサ６８０は、該部分の送信を終了するようにサーバ６１０に要求を出すことができる。これに代えて、プロセッサ６８０は単にコンテンツのうち、プッシュされた部分が前にメモリ６９０に記憶された部分を上書きするように許容するだけでもよい。コンテンツのうち、プッシュされた部分がまだメモリ６９０に記憶されていない場合、該部分は、コンテンツのうち、該部分に対するローカル要求に応答するものとしてメモリ６９０に記憶されてよい。
【００６２】
上述のいずれの実施形態においても、サーバ６１０及び／又はユーザデバイス６５０は、メモリ６９０内のダウンロード可能コンテンツのうち、各部分の消去を開始することができる。従って、メモリ６９０が一杯で、ダウンロード可能コンテンツのうち、更なる部分の実行の継続が要求される場合、キャッシュアルゴリズムを用いて破棄する部分を決定し、新たな部分に対するスペースを作るようにしてもよい。例えば、ユーザが、２４ＧＢのゲームにおいて、全部で３０あるレベルのうちのレベル１５にいる場合であって、ゲーム機の容量が１２ＧＢしかない場合には、ゲームのうち、アクセス頻度の最も低い部分（例えば、レベル１に対応する部分）が消去され、ゲームの実行を継続する必要のあるコンテンツの要求部分又は予測部分のためにスペースが空けられる。
【００６３】
従って、記載した各実施形態と共にキャッシュアルゴリズムを開始することにより、ユーザデバイス６５０の記憶領域を超えるサイズのダウンロード可能コンテンツが実行され得るだけでなく、ユーザにとっては最小の遅延で該コンテンツが実行され得る。例えば、ローカルストレージの制限、過剰なダウンロード時間、及び多くの帯域幅の使用により、前は物理媒体による配信に限定されていたコンテンツ（例えば、従来はブルーレイディスクに配信されていたコンテンツ）は、開示のシステム及び方法により、サーバ６１０により送信され、ユーザデバイス６５０により実行されうる。
【００６４】
上述した各システム及び各方法は、ユーザデバイス６５０が、セルラーネットワーク６４０を介してサーバ６１０からダウンロード可能コンテンツを要求するモバイルデバイスである場合の実施形態においても有益である。従来、そのようなモバイルデバイスは、セルラーネットワークの送信速度が遅いこと、セルラーネットワークに関連するデータ送信コストが高額であること、及び、モバイルデバイスのサイズが好適に小さくされていることにより、モバイルデバイスで利用できる記憶領域が非常に制限されていること、によりダウンロード可能コンテンツへのアクセスを制限してきた。しかし、そのような状況で開示の各システムを実装して各方法を実行することより、送信速度が遅いために生じる遅延が低減する。その理由は、コンテンツは全てのデータが揃わなくても実行を開始でき、更に、特定の時間において、コンテンツの一部分だけが実行の継続に必要であるからである。また、コンテンツの必要な部分だけがダウンロードされるので、データ送信において発生するコストも制限される。これにより不要部分に関連する送信コストをなくすことができる。更に、上述のキャッシュアルゴリズムとともに実施される場合、ダウンロード可能コンテンツはモバイルデバイスの記憶容量に制限されない。
【００６５】
本文に記載した各システム及び各方法は更に、「体験版」や「デモンストレーション（デモ版）」のコンテンツを最適化するように実施されてもよい。これらの「デモ版」は、ユーザが、フルコンテンツを購入する前又はダウンロードする前に、一定期間又は無期限でコンテンツの少なくとも一部を無料で試すことができるようにしたものである。伝統的に、そのようなデモ版は、ユーザがコンテンツ全体をダウンロードできるようにすることで提供されるが、実行できるのはコンテンツのある一定部分に限定される。コンテンツ全体にアクセスでき、コンテンツ全体を実行できるようになるのは、例えば、アクティベーションキーの購入後である。このアクティベーションキーは、コンテンツのうち、前もってブロックされた部分を解除するものである。このようなシステムでは、コンテンツ全体をダウンロードしてからでなければ、限定部分へアクセスすることができない、といった各種の難点がある。従って、体験版で使用されることになるデータ以上のデータがダウンロードされ、記憶されるので、ユーザは、体験版を楽しむのが必要以上に遅くなってしまう。更に、デモ版を試し、コンテンツ全体には興味がないと判断したユーザにとって、付加的にダウンロードされたコンテンツは不要となってしまう。加えて、ブロックされたコンテンツの各部分は、一度ダウンロードされると、アクティベーションキーを購入せずともハッキングされるおそれがある。
【００６６】
その他のデモ版としては、ダウンロード可能コンテンツををトランケートした、あるいは一部をカットした短縮版が挙げられる。これは、体験版に関連するデータだけを含むようにしたものである。これらの短縮版を用いることでハッカー達がフルコンテンツへアクセスする可能性はなくなるが、短縮版を作成するには、開発者がフルコンテンツとは別に短縮したコンテンツを作成しなければならない。更に、これらのタイプのデモ版は依然として、この特定部分を実行するために必要な特定のデモファイルだけではなく、体験版に関連する全てのファイルを完全にダウンロードしなければならない。ユーザがフルコンテンツの購入を決定した場合、ユーザは、前にダウンロードしていたとしても、体験版コンテンツの各部分を再ダウンロードする必要があり、体験版コンテンツに関連してセーブした進捗状況やデータを失うおそれがある。更に、ユーザは、依然として、購入してから実行するまでにコンテンツ全体をダウンロードしなければならない。
【００６７】
しかし、本文に記載した各実施形態を適用することにより、コンテンツを別にした短縮版を必要とせずに、ユーザにコンテンツのデモ版を提供することができる。例えば、サーバ６１０は、メモリ６３０に単一バージョンのコンテンツを記憶させ、この単一バージョンにアクセスすることで、コンテンツのうち、体験版の部分と完全版の部分の両方を要求デバイスに提供することができる。更に、デモコンテンツ又はフルコンテンツが完全にダウンロードされるのを待つことなく、デモ版の実行を開始することができる。
【００６８】
一実施形態では、サーバ６１０は、ユーザデバイス６５０に送信されるコンテンツの各部分（リモート要求又は予測されたコンテンツの各部分）を、トライアルコンテンツとして識別されたコンテンツの部分だけに限定する。上述の例に加えて、ＦＩＬＥ１．ＤＡＴがトライアルコンテンツとフルコンテンツの両方に関連づけられた専用ファイルの場合、サーバ６１０は、ロケーション０〜９，９９９に対応するコンテンツの各部分に対するリモート要求だけに応答することができる。ロケーション０〜９，９９９の範囲を超えるコンテンツ部分が要求される場合、サーバ６１０は更にユーザデバイス６５０に（例えば、要求コンテンツはトライアルの範囲を超えるものである、あるいは、トライアルは終わりである、ことを示す）エラーメッセージを送信し得る。サーバ６１０は、メモリ６３０に含まれるダウンロード可能コンテンツメタデータ及び／又はダウンロード可能コンテンツ要求メタデータを使用して、ユーザデバイス６５０に体験版へのアクセスを与えるべきか、完全版へのアクセスを与えるべきかを決定することができる。
【００６９】
別の実施形態では、ユーザデバイス６５０自体が、サーバ６１０からリモート要求される（ローカルに要求又は予測された）コンテンツの各部分を制限する。ＦＩＬＥ１．ＤＡＴがトライアルコンテンツ及びフルコンテンツの両方に関連づけられた専用ファイルの場合、プロセッサ６８０は、ロケーション０〜９，９９９に対応するコンテンツの各部分に対してのみ、アプリケーション６６０からのローカル要求に応答することができる。ロケーション０〜９，９９９の範囲を超えてコンテンツの各部分が要求される場合、プロセッサ６８０は（例えば、要求コンテンツはトライアルの範囲を超えるものである、あるいは、トライアルは終わりである、ことを示す）  エラーメッセージを生成し、これをアプリケーション６６０に送信し得る。プロセッサ６８０は、メモリ６９０に含まれるダウンロード可能コンテンツメタデータ及び／又はダウンロード可能コンテンツ要求メタデータを使用して、アプリケーション６６０に体験版へのアクセスを与えるべきか、完全版へのアクセスを与えるべきかを決定することができる。そのようなメタデータは、ユーザがコンテンツのＩＤを体験版又は完全版として改ざんしないように、デジタル著作権管理（ＤＲＭ）保護などと共に提供され得る。本実施形態は不正コンテンツのハッキングや盗用に対して、双方向からの保護を行うために、上述の実施形態と組み合わせることができると考えられる。
【００７０】
上述の各実施形態のいずれか（あるいは、別の実施形態）との組み合わせにより、サーバ６１０及び／又はユーザデバイス６５０を使用して、デモ版の実行時間を制限するようにしてもよい。例えば、サーバ６１０及び／又はユーザデバイス６５０は、コンテンツに対する最初の要求が受信されてから、設定時間以上の時間が経過したかどうかを判断することができる。サーバ６１０及び／又はユーザデバイス６５０が、設定時間を超える要求を受信すると、体験版が終了したことを示すエラーメッセージが生成されうる。従って、これらの実施形態によれば、メモリ６９０にダウンロードされるのは、体験版を実行ためにユーザデバイス６５０が必要とするデータ（あるいは、その一部）だけである。
図１〜図５に例示した各方法に関連して記載したが、本文に記載のいずれの方法も同様に実行されうることが理解される。更に、特定のデバイスについて記載したが、本文に記載の処理を実行するために、各種の同様のデバイスやモジュールを用いてもよいことが理解される。これらの実施形態や他の実施形態の機能は、有形媒体に記録されるコンピュータが実行可能な命令のモジュールとして記載されうる。モジュールは各種のデバイスにわたって、様々な方法で分離されうる。
【００７１】
図７は、コンピュータシステム７００の例示的な形態における機械の模式図であり、該システムにおいて、本文に記載した１以上のいずれの方法を機械に実行させる一連の命令が実行されてよい。他の実施形態では、機械は、スタンドアローン型デバイスとして動作する。あるいは、他の機械と接続（例えば、ネットワーク接続）されてもよい。ネットワーク接続された配置においては、機械は、ホストマシンとして、あるいは、ピアツーピア（又は分散型）ネットワーク環境においてピアマシンとして、サーバ‐クライアントネットワーク環境において、サーバ又はクライアントマシンの容量で動作しうる。機械は、パソコン（ＰＣ）、タブレット、セットトップボックス（ＳＴＢ）、携帯端末（ＰＤＡ）、携帯電話、ウェブで使用される機器、ネットワークルータ、スイッチ又はブリッジ、ゲーム機、テレビ、ＣＤプレーヤ、ＤＶＤプレーヤ、ＢＤプレーヤ、電子書籍端末、又は該機械により行われる行為を特定する一連の命令（順次的なもの、あるいはそれ以外のもの）を実行することができるいずれの機械であってよい。更に、１つの機械だけを例示したが、「機械」との用語は、本文に記載した１以上の方法を実行するための一連の（又は複数セットの）命令を個々に、あるいは一緒に実行することができる機械の集合体を含むものとする。
【００７２】
ある実施形態によれば、コンピュータシステム７００は、プロセッサ７５０（例えば、中央処理装置（ＣＰＵ）、グラフィック処理ユニット（ＧＰＵ）、又はその両方）、主メモリ７６０（例えば、リードオンリーメモリ（ＲＯＭ）、フラッシュメモリ、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）やラムバスＤＲＡＭ（ＲＤＲＡＭ）などのダイナミックランダムアクセスメモリ（ＤＲＡＭ）、及び／又は静的メモリ７７０（例えば、フラッシュメモリ、スタティックランダムアクセスメモリ（ＳＲＡＭ）など）を含む。これらはバス７９５を介して相互に通信を行うものである。
【００７３】
ある実施形態によれば、コンピュータシステム７００は更に、ビデオ表示ユニット７１０（例えば、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、発光ダイオードディスプレイ（ＬＥＤ：Light-emitting Diode）、エレクトロルミネセントディスプレイ（ＥＬＤ：Electroluminescent Display）、プラズマディスプレイパネル（ＰＤＰ：Plasma Display Panel）、有機発光ダイオードディスプレイ（ＯＬＥＤ：Organic Light-Emitting Diode Display）、表面伝導型電子放出ディスプレイ（ＳＥＤ：Surface-Conduction Electron-Emitted Display）、ナノクリスタルディスプレイ、３Ｄディスプレイ、あるいはブラウン管（ＣＲＴ：Cathode Ray Tube）を更に含んでもよい。ある実施形態によれば、コンピュータシステム７００は更に、英数字入力デバイス７１５（例えば、キーボード）、カーソルコントロールデバイス７２０（例えば、マウスやコントローラ）、ディスクドライブユニット７３０、信号生成デバイス７４０（例えば、スピーカ）、及び／又はネットワークインターフェースデバイス７８０を含んでもよい。
【００７４】
ディスクドライブユニット７３０は、本文に記載の１以上の方法又は機能を具現化する１以上の一連の命令が記憶された（例えば、ソフトウェア７３６）、コンピュータ可読記録媒体７３４を含む。更に、ソフトウェア７３６は、コンピュータシステム７００や主メモリ７６０、プロセッサ７５０により実行する間、完全に、又は少なくとも一部が主メモリ７６０内に、及び／又はプロセッサ７５０内に存在していてもよい。また、プロセッサ７５０及び主メモリ７６０は、命令７４５と７６４とをそれぞれ有するコンピュータ可読記録媒体を構成しうる。更に、ソフトウェア７３６は、ネットワークインターフェース７８０を介してネットワーク７９０を介して送信又は受信されてよい。
【００７５】
コンピュータ可読記録媒体７３４は、一例の実施形態では単一の媒体として示すが、「コンピュータ可読記録媒体」との用語は、１以上の命令セットを記憶する単一媒体又は複数媒体（例えば、集中型データベース又は分散型データベース、及び／又は関連づけられたキャッシュ及びサーバ）を含むものとする。「コンピュータ可読記録媒体」との用語は更に、機械により実行されるための一連の命令を記憶し、コード化し、運ぶことのできる媒体であって、開示の各実施形態の１以上のいずれの方法を機械に実行させることのできる媒体を含むものとする。従って「コンピュータ可読記録媒体」との用語は、固体メモリや光学的媒体及び磁気的媒体を含むものとするが、これらに限定されない。
【００７６】
本文に記載の各処理および各技術は、いずれの特定の装置に本質的に関連するものではなく、適切な構成要素の組み合わせにより実装されてよいことが理解される。更に、各種の汎用デバイスは、本文に記載の教示に従い用いられてよい。また、本文に記載の各方法を実行するために専用装置を構築することが有利とされることもある。当業者であれば、開示の各実施形態を実行するために、ハードウェア、ソフトウェア、及びファームウェアの様々な組み合わせが適切であることはわかるであろう。本発明の各実施形態を特定の例に関連して記載してきたが、これらは、あらゆる点で限定的であるというよりはむしろ例示的であることを意図している。更に、各実施形態を多くの例と実装品とともに記載してきたが、各例に対して、本発明の実施形態の範囲を維持しつつ、各種の修正や等価の配置をすることができることが理解される。
【００７７】
本発明の他の実施形態は、明細書を考慮して、及び、本文に開示された各実施形態を実施により、当業者には明らかであろう。記載した各実施形態の各種態様及び／又は構成要素は、単一で用いることもできるし、いずれの組み合わせで用いることができる。明細書及び各例は単なる例示を目的としており、本開示の本来の範囲や真意は以下の請求の範囲により示される。
【図１】
2018010654.tif 000003
【図２】
2018010654.tif 000004
【図３】
2018010654.tif 000005
【図４】
2018010654.tif 000006
【図５】
2018010654.tif 000007
【図６】
2018010654.tif 000008
【図７】
2018010654.tif 000009
【手続補正書】
【提出日】平成29年9月4日(2017.9.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンテンツプロバイダからプロセッサへのダウンロード可能コンテンツの転送を最適化する方法であって、
前記プロセッサにより実行されるべき複数の前記ダウンロード可能コンテンツ部分の第１部分に対する第１ローカル要求を受信するステップと、
前記第１ローカル要求を、前記ダウンロード可能コンテンツの前記第１部分に対する第１リモート要求に変換するステップと、
前記第１リモート要求を送信するステップと、
前記ダウンロード可能コンテンツの前記第１部分を受信するステップと、
前記ダウンロード可能コンテンツの前記第１部分を記憶するステップと、
前記ダウンロード可能コンテンツの他の部分が前記プロセッサにより実行可能になる前に、前記プロセッサを用いて前記ダウンロード可能コンテンツの前記第１部分を実行するステップと、
前記複数の前記ダウンロード可能コンテンツ部分の第２部分を予測するステップと、
前記予測された第２部分がローカルに記憶されていないと判断した場合には、前記第２部分に対する第２リモート要求を生成し、および前記第２部分を取得するステップと、
前記第２部分に対する第２ローカル要求を受信するステップと、
前記第２ローカル要求が前記予測された第２部分に合致するかどうかを判断するステップ、および
前記第２ローカル要求が前記予測された第２部分に合致すると判断された場合には、前記プロセッサを用いて前記取得した第２部分を実行するステップと、
を含む方法。
【請求項２】
前記第２ローカル要求が前記予測された第２部分に合致しないと判断された場合には、前記第２部分がローカルに記憶されているかどうかを判断するステップをさらに含む請求項１記載の方法。
【請求項３】
前記第２ローカル要求が前記予測された第２部分に合致しないと判断された場合には、前記第２部分がローカルに記憶されているかどうかを判断するステップと、
前記第２部分がローカルに記憶されていなければ、
前記第２ローカル要求を、前記ダウンロード可能コンテンツの前記第２部分に対する第２リモート要求に変換するステップと、
前記第２リモート要求を送信するステップと、
前記ダウンロード可能コンテンツの前記第２部分を受信するステップと、
前記ダウンロード可能コンテンツの前記第２部分をローカルに記憶するステップと、
をさらに含む請求項１記載の方法。
【請求項４】
前記ダウンロード可能コンテンツの前記第２部分は、前記ダウンロード可能コンテンツの前記第１部分を実行する前又は実行する間に受信される、請求項３記載の方法。
【請求項５】
前記ダウンロード可能コンテンツの前記第１部分を実行する前又は実行する間に、前記ダウンロード可能コンテンツの前記第２部分が受信されていなければエラーメッセージを生成するステップを更に含む、請求項３記載の方法。
【請求項６】
前記第１ローカル要求及び前記第２ローカル要求をダウンロード可能コンテンツ要求メタデータとして順次記憶するステップを更に含む、請求項３記載の方法。
【請求項７】
前記ダウンロード可能コンテンツの前記第２部分をローカルに記憶するステップと、
前記ダウンロード可能コンテンツの前記第１部分の実行後に、前記ダウンロード可能コンテンツの前記第２部分を実行するステップと、を更に含む請求項１記載の方法。
【請求項８】
ダウンロード可能コンテンツの転送を最適化するシステムであって、
プロセッサであって、
複数の前記ダウンロード可能コンテンツ部分の第１部分に対する第１ローカル要求を受信し、
前記第１ローカル要求を、前記ダウンロード可能コンテンツの前記第１部分に対する第１リモート要求に変換し、
前記第１リモート要求をネットワークを介して送信し、
前記ダウンロード可能コンテンツの前記第１部分をネットワークを介して受信し、
前記ダウンロード可能コンテンツの他の部分が前記プロセッサにより実行可能になる前に前記ダウンロード可能コンテンツの前記第１部分を実行し、
前記複数の前記ダウンロード可能コンテンツ部分の第２部分を予測し、
前記予測された第２部分がローカルに記憶されていないと判断した場合には、前記第２部分に対する第２リモート要求を生成し、および前記第２部分を取得し、
前記第２部分に対する第２ローカル要求を受信し、
前記第２ローカル要求が前記予測された第２部分に合致するかどうかを判断し、および
前記第２ローカル要求が前記予測された第２部分に合致すると判断された場合には、前記取得した第２部分を実行するように動作可能なプロセッサと、
前記複数の前記ダウンロード可能コンテンツ部分の少なくとも一部分を記憶するように動作可能なメモリと、を含むシステム。
【請求項９】
前記プロセッサは、さらに
前記第２ローカル要求が前記予測された第２部分に合致しないと判断された場合には、
前記ダウンロード可能コンテンツの前記第２部分が前記メモリに記憶されているかどうかを判断するように動作可能である請求項８記載のシステム。
【請求項１０】
前記プロセッサは、さらに
前記第２ローカル要求が前記予測された第２部分に合致しないと判断された場合には、
前記ダウンロード可能コンテンツの前記第２部分が前記メモリに記憶されているかどうかを判断し、
前記ダウンロード可能コンテンツの前記第２部分が前記メモリに記憶されていなければ、
前記第２ローカル要求を、前記ダウンロード可能コンテンツの前記第２部分に対する第２リモート要求に変換し、
前記第２リモート要求をネットワークを介して送信し、
前記ダウンロード可能コンテンツの前記第２部分をネットワークを介して受信するように動作可能である請求項８記載のシステム。
【請求項１１】
前記プロセッサは、前記ダウンロード可能コンテンツの前記第１部分を実行する前又は実行する間に、前記ダウンロード可能コンテンツの前記第２部分を受信するように動作可能である、請求項１０記載のシステム。
【請求項１２】
前記プロセッサは更に、前記ダウンロード可能コンテンツの前記第１部分を実行する前又は実行する間に、前記ダウンロード可能コンテンツの前記第２部分が受信されていなければエラーメッセージを生成するように動作可能である、請求項１０記載のシステム。
【請求項１３】
前記メモリは更に、複数のローカル要求をダウンロード可能コンテンツ要求メタデータとして順次記憶するように動作可能である、請求項１０記載のシステム。
【請求項１４】
前記複数の前記ダウンロード可能コンテンツ部分の少なくとも一部分を表示するように動作可能なプロセッサに接続されたディスプレイを更に含む、請求項８記載のシステム。
【請求項１５】
複数のダウンロード可能コンテンツ部分の第１部分に対する第１ローカル要求を受信するステップと、
前記第１ローカル要求を、前記ダウンロード可能コンテンツの前記第１部分に対する第１リモート要求に変換するステップと、
前記第１リモート要求を送信するステップと、
前記ダウンロード可能コンテンツの前記第１部分を受信するステップと、
前記ダウンロード可能コンテンツの前記第１部分を記憶するステップと、
前記ダウンロード可能コンテンツの他の部分が実行可能になる前に、前記ダウンロード可能コンテンツの前記第１部分を実行するステップと、
前記複数の前記ダウンロード可能コンテンツ部分の第２部分を予測するステップと、
前記予測された第２部分がローカルに記憶されていないと判断した場合には、前記第２部分に対する第２リモート要求を生成し、および前記第２部分を取得するステップと、
前記第２部分に対する第２ローカル要求を受信するステップと、
前記第２ローカル要求が前記予測された第２部分に合致するかどうかを判断するステップ、および
前記第２ローカル要求が前記予測された第２部分に合致すると判断された場合には、前記取得した第２部分を実行するステップと、
を実行するために、コンピュータにより実行可能な命令が埋め込まれたコンピュータ可読記録媒体。
【請求項１６】
前記第２ローカル要求が前記予測された第２部分に合致しないと判断された場合には、前記第２部分がローカルに記憶されているかどうかを判断するステップをさらに含む、コンピュータにより実行可能な命令が埋め込まれた請求項１５記載のコンピュータ可読記録媒体。
【請求項１７】
前記第２ローカル要求が前記予測された第２部分に合致しないと判断された場合には、前記第２部分がローカルに記憶されているかどうかを判断するステップと、
前記第２部分がローカルに記憶されていなければ、
前記第２ローカル要求を、前記ダウンロード可能コンテンツの前記第２部分に対する第２リモート要求に変換するステップと、
前記第２リモート要求を送信するステップと、
前記ダウンロード可能コンテンツの前記第２部分を受信するステップと、
前記ダウンロード可能コンテンツの前記第２部分をローカルに記憶するステップと、
をさらに含む、コンピュータにより実行可能な命令が埋め込まれた請求項１５記載のコンピュータ可読記録媒体。
【請求項１８】
前記ダウンロード可能コンテンツの前記第２部分は、前記ダウンロード可能コンテンツの前記第１部分を実行する前又は実行する間に受信される、請求項１７記載のコンピュータ可読記録媒体。
【請求項１９】
前記ダウンロード可能コンテンツの前記第１部分を実行する前又は実行する間に、前記ダウンロード可能コンテンツの前記第２部分が受信されていなければエラーメッセージを生成するステップを更に実行するために、コンピュータにより実行可能な命令が埋め込まれた請求項１７記載のコンピュータ可読記録媒体。
【請求項２０】
ダウンロード可能コンテンツ要求メタデータとして前記第１ローカル要求及び前記第２ローカル要求を経時的に記憶するステップを更に実行するために、コンピュータにより実行可能な命令が埋め込まれた請求項１７記載のコンピュータ可読記録媒体。
【請求項２１】
コンテンツプロバイダから実行モジュールへのダウンロード可能コンテンツの転送を最適化するシステムであって、
複数の前記ダウンロード可能コンテンツ部分の第１部分に対する第１ローカル要求を、前記ダウンロード可能コンテンツの前記第１部分に対する第１リモート要求に変換するように動作可能な変換モジュールと、
前記第１ローカル要求を受信し、前記第１リモート要求を送信し、前記ダウンロード可能コンテンツの前記第１部分を受信するように動作可能な通信モジュールと、
実行モジュールであって、前記ダウンロード可能コンテンツの他の部分が前記実行モジュールにより実行可能になる前に、前記ダウンロード可能コンテンツの前記第１部分を実行するように動作可能な実行モジュールと、
前記複数の前記ダウンロード可能コンテンツ部分の少なくとも一部分を記憶するように動作可能な記憶モジュールと、
前記複数の前記ダウンロード可能コンテンツ部分の第２部分を予測するように動作可能な予測モジュールと、を含み、
前記予測された第２部分がローカルに記憶されていないと判断した場合には、前記通信モジュールは第２リモート要求を送信し、前記ダウンロード可能コンテンツの前記第２部分を受信するように更に動作可能であり、
前記通信モジュールは更に、前記ダウンロード可能コンテンツの前記第２部分に対する第２ローカル要求を受信するように動作可能であり、
前記第２ローカル要求が前記予測された第２部分に合致するかどうかを判断するクエリモジュールを含み、
前記第２ローカル要求が前記予測された第２部分に合致すると判断された場合には、前記実行モジュールは前記取得した第２部分を実行するように更に動作可能である、ダウンロード可能コンテンツの転送を最適化するシステム。
【請求項２２】
前記実行モジュールは更に、前記ダウンロード可能コンテンツの前記第１部分の実行後に、前記ダウンロード可能コンテンツの前記第２部分を実行するように動作可能である、請求項２１記載のシステム。
【請求項２３】
前記実行モジュールが前記ダウンロード可能コンテンツの前記第１部分を実行する前又は実行する間に、前記通信モジュールが前記ダウンロード可能コンテンツの前記第２部分を受信していなければエラーメッセージを生成するように動作可能なエラーモジュールを更に含む、請求項２２記載のシステム。
【請求項２４】
前記記憶モジュールは更に、複数のローカル要求をダウンロード可能コンテンツ要求メタデータとして経時的に記憶するように動作可能である、請求項２２記載のシステム。