[0031] 次に、同様の要素を参照するために全体を通じて同様の参照番号が全般的に使用される図面を参照しながら、特許請求される主題を説明する。以下の説明では、説明の都合上、特許請求される主題の理解を与えるために多数の特定の詳細を説明する。しかし、特許請求される主題をこれらの特定の詳細なしに実施できることは明らかであることがある。別の例では、特許請求される主題の説明を容易にするために、構造および装置をブロック図形式で示す。
[0032] 本明細書で提供されるように、ほとんどまたは全く重複なしに、リソースパッケージ、appパッケージなどのソフトウェアコンポーネントをエンドユーザマシンに選択的に提供することができ、したがってエンドユーザマシンは、エンドユーザマシンが不必要なソフトウェアコンポーネントをダウンロード、格納、および/またはインストールする必要なしに、エンドユーザマシンによって使用されるソフトウェアコンポーネントを単に備えるだけである。たとえば、クライアント装置などのエンドユーザマシンは、多種多様なソフトウェアおよび/またはハードウェア特性を備えることがある(たとえば、タブレットは、デスクトップゲーミング装置とは異なるプロセッサ、オペレーティングシステム、グラフィックス処理装置、および/または様々な特性を備えることがある)。そのようなクライアント装置上で望ましい体験を提供するために、多くのappは、アプリケーション資産(たとえば、特定のappのテクスチャ、文字列、イメージ、ユーザインターフェース要素、および/または他のソフトウェアコンポーネント)をそれぞれのクライアント装置に対してカスタマイズすることができる。遺憾ながら、このことは、開発者および/またはユーザにとって問題となることがある。開発者は、かなりの時間および/またはリソースを費やして、そのような多種多様なクライアント装置について別々のインストールパッケージを作成することがあるからである。あるいは、開発者は、アプリケーション資産のすべてを含む単一のインストールパッケージを作成することがあり、単一のインストールパッケージは、アプリケーション資産の一部(小部分)だけがクライアント装置によって利用される場合に、多量のアプリケーション資産をダウンロードおよび/または格納するためにユーザおよび/またはクライアント装置に対して負担を課すことがある。
[0033] したがって、本明細書で提供されるように、appのそれぞれのアプリケーション資産(たとえば、リソースパッケージおよび/またはappパッケージ内の資産)について、開発者は、クライアント装置にダウンロードするためのソフトウェアコンポーネントを選択する(たとえば、リソースパッケージおよび/またはappパッケージを選択的にダウンロードする)ために使用することのできるクライアント装置の特性を識別することができる。一例では、appパッケージは、クライアント装置内のCPUのアーキテクチャ(たとえば、x86、x64など)に依存することのあるappバイナリおよび/または実行可能ファイルを含むことができる。別の例では、グラフィックスリソースパッケージは、クライアント装置内のグラフィックス処理装置のレベルまたは世代(たとえば、DX9、DX10、またはDX11)に依存することのあるテクスチャおよび/またはシェーダアプリケーション資産を含むことができる。別の例では、ユーザインターフェースリソースパッケージは、クライアント装置のディスプレイ解像度(たとえば、96*1.0、*1.4、または*1.8などのモニタDPI)に依存することのあるダイアログボックスおよび/または他のユーザインターフェース要素資産を含むことができる。別の例では、テクスチャリソースパッケージは、クライアント装置の言語に依存することのあるインストラクション資産を含むことができる。
[0034] 開発者はアプリケーション資産をサブミットすることができ、クライアント装置の特性によってアプリケーション資産をラベリングすることができる。ソフトウェア配布システムは、クライアント装置による検索のために、開発者からのそのような情報を搭載することができる。クライアント装置上へのインストールが行われるとき、クライアント装置の装置特性が識別される。インストーラは、クライアント装置の装置特性に合致する(たとえば、1つまたは複数のリソースパッケージ内に含まれる)アプリケーション資産のセットをインストールすることができ、合致しないアプリケーション資産をインストールすることを控えることができる。このようにして、開発者は、クライアント装置によるインストールのためにアプリケーション資産を1度だけ提供することができ、ユーザは、クライアント装置によって使用されるアプリケーション資産をクライアント装置上に単にダウンロードおよび/またはインストールすることができる。
[0035] アプリケーションについてのバンドルパッケージを生成する一実施形態を、図1の例示的方法100で示す。102で方法が開始する。104では、アプリケーションについてのバンドルパッケージ内に含めるための1つまたは複数のappパッケージを識別することができる。たとえば、第1のappパッケージは、第1のコンピューティング環境(たとえば、第1のプロセッサタイプ、タブレットオペレーティングシステムなど)上で実行するように構成された第1のアプリケーションコードを含むことができ、第2のappパッケージは、第2のコンピューティング環境(たとえば、第2のプロセッサタイプ、デスクトップオペレーティングシステムなど)上で実行するように構成された第2のアプリケーションコードを含むことができ、以下同様である。このようにして、アプリケーションは、1つまたは複数のappパッケージに基づいて、コンピュータアーキテクチャやオペレーティングシステムなどの様々なコンピューティング環境をサポートすることができる。一例では、appパッケージは、クライアント装置上でアプリケーションのコアバージョンを走らせるために実行することのできる実行可能バイナリファイルを含むことができる。アプリケーションはアプリケーションについての多種多様な任意選択のユーザ体験機能をサポートすることができるので、そのような機能を1つまたは複数のappパッケージから分離することができ、アプリケーションコードとは別々の選択的な、かつ/または任意選択のダウンロードのために公開することができる。このようにして、クライアント装置は、クライアント装置またはクライアント装置のユーザに関連する任意選択の機能(たとえば、ユーザの特定の言語についてのサポート、ゲーミング装置のための高解像度テクスチャ、タブレット装置のための低解像度テクスチャなど)を単にダウンロードすることができる。したがって、リソースパッケージを通じてそのような任意選択のユーザ体験機能を提供することができる。
[0036] 106では、バンドルパッケージ内に含めるための1つまたは複数のリソースパッケージを識別することができる。たとえば、第1のリソースパッケージは、アプリケーションについての第1の任意選択のユーザ体験機能を提供するために使用される第1の補助データ(たとえば、テクスチャデータ、アイコンデータ、特定の言語の文字列、マルチメディアAPI機能、特定の解像度のイメージなど)を含むことができ、第2のリソースパッケージは、アプリケーションについての第2の任意選択のユーザ体験機能を提供するために使用される第2の補助データ含むことができ、以下同様である。リソースパッケージが本明細書で提供される例に限定されないこと、およびリソースパッケージが、ユーザの体験を調整するために使用することのできる、言語、ディスプレイ機能、ハードウェア機能、ソフトウェア機能、ユーザインターフェース機能、および/または任意の他の機能に関連することがあるような多種多様な任意の1つまたは複数のリソース(たとえば、現代のリソース技術によってロードすることができる任意のデータなど)を含むことができることを理解されたい。一例では、リソースパッケージは、アプリケーションについての任意選択の言語ユーザ体験機能を含むことができる。別の例では、リソースパッケージは、ユーザに対して調整することのできる任意選択のユーザ体験機能(たとえば、好ましいユーザ入力モード、高コントラスト設定、ユーザの位置など)を含むことができる。別の例では、リソースパッケージは、アプリケーションについての任意選択のディスプレイ品質ユーザ体験機能(たとえば、解像度データ、画面スケールデータ、マルチメディアAPIデータなど)を含むことができる。別の例では、リソースパッケージは、クライアント装置のハードウェア能力に依存することのある任意選択のハードウェア認識機能(たとえば、カメラを備えるクライアント装置についてのイメージキャプチャ機能、マイクロフォンまたはヘッドセットを備えるクライアント装置についてのオーディオ機能、ワイヤレス周辺機器を備えるクライアント装置についてのワイヤレス機能など)を含むことができる。別の例では、リソースパッケージは、複数のユーザ体験機能に関連するコンテンツ(たとえば、高解像度ドイツイメージ、DX9機能セットを利用する高コントラスト対話型ユーザインターフェース要素など)を備える。
[0037] いくつかの実施形態では、アプリケーションについてのリソースパッケージを自動的に生成することができる。たとえば、appパッケージを解析して、第1のappパッケージから任意選択のデータの第1のセットを識別することができる(たとえば、アプリケーションは、英語の文字列をネイティブに提供することができるが、任意選択の言語サポートとしてフランス語の文字列をも含むことができる)。第1のappパッケージから任意選択のデータの第1のセットを抽出することができる。フランス語リソースパッケージなどの任意選択のデータの第1のセットに基づいてリソースパッケージを生成することができる。一例では、(たとえば、自動的に生成された、または生成されなかった)リソースパッケージは、一タイプの複数の例(たとえば、英語リソースパッケージ、米国英語リソースパッケージ、および/または英国英語リソースパッケージなど)を含むことができる。
[0038] 108では、1つまたは複数のappパッケージならびに/あるいは1つまたは複数のリソースパッケージを含むようにバンドルパッケージを生成することができる。一例では、バンドルパッケージ、1つまたは複数のappパッケージ、ならびに/あるいは1つまたは複数のリソースパッケージにデジタル署名証明書で(たとえば、単一のデジタル署名操作中に)デジタル署名することができ、したがって、パッケージは、シグニチャプロパティのセット(たとえば、デジタル署名証明書所有者、権限の連鎖証明、鍵使用、シグニチャ検証日、シグニチャ暗号化強度、シグニチャタイムスタンプなど)を共有することができ、シグニチャプロパティのセットは、パッケージが選択的にダウンロードされたか、かつ/または個別にダウンロードされたかの如何に関わらず、クライアント装置がパッケージを効率的に検証することを可能にすることができる。一例では、バンドルパッケージ内に含めるためのバンドルマニフェストを生成することができる。バンドルマニフェストは、1つまたは複数のappパッケージについての1つまたは複数のapp説明、ならびに/あるいは1つまたは複数のリソースパッケージについての1つまたは複数のリソース説明を含むことができる。一例では、バンドルパッケージの中のappパッケージおよび/またはリソースパッケージを追加、除去、および/または修正するようにバンドルパッケージを更新することができる。たとえば、バンドルパッケージについてのバンドル更新を受信することができる。バンドル更新は、バンドルパッケージ内に含めるための新しいリソースパッケージを含むことができる。新しいリソースパッケージを含むようにバンドルパッケージを更新することができ、新しいリソースパッケージが任意選択の検索について利用可能であることを指定するようにバンドルマニフェストを更新することができる。バンドルパッケージがappマーケットプレイス認証プロセス(たとえば、正しい機能および/またはappマーケットプレイスとのコンプライアンスを検証するための自動および/または手動テスティングプロセス)によって認証された一例では、バンドルパッケージを再認証するのではなく、単に新しいリソースパッケージを認証することができる。
[0039] appマーケットプレイスを介する選択的ダウンロードのためにバンドルパッケージを公開することができる。たとえば、1つまたは複数のリソースパッケージをアプリケーションについての任意選択のダウンロードとして公開することができる。すなわち、クライアント装置上へのアプリケーションのインストールのためにappパッケージをダウンロードすることができ、1つまたは複数のリソースパッケージを任意選択によりダウンロードまたは展開して、アプリケーションについての任意選択のユーザ体験機能(たとえば、フランス語についてのサポート)を提供することができる。したがって、クライアント装置からバンドル取得要求を受信することができる。一例では、バンドル取得要求は第1のappパッケージを指定することができる。第1のappパッケージをインストールのためにクライアント装置に選択的に提供することができる。一例では、バンドル取得要求は、バンドルパッケージ内の第2のリソースパッケージを指定することができる。第1のリソースパッケージではなく、第2のリソースパッケージを、アプリケーションのインストールのためにバンドルパッケージからクライアント装置に選択的に提供することができる。別の例では、バンドル取得要求は、バンドルパッケージ内に含まれるリソースパッケージのサブセットを指定する。リソースパッケージのサブセットは、バンドルパッケージ内の1つまたは複数のリソースパッケージのすべてではないが、少なくともいくつかを指定することができる。このようにして、リソースパッケージのサブセットを、アプリケーションのインストールのためにバンドルパッケージからクライアント装置に選択的に提供することができる。110で方法は終了する。
[0040] 図2に、バンドルパッケージ208を生成するシステム200の一例を示す。システム200はバンドル生成構成要素206を備えることができる。アプリケーションについての1つまたは複数のappパッケージ(たとえば、ドローイングアプリケーションのapp開発者によって提供されるappパッケージデータ202)を識別するようにバンドル生成構成要素206を構成することができる。アプリケーションについての1つまたは複数のリソースパッケージ(たとえば、app開発者、またはリソースパッケージ開発者などの別のソースによって提供されるリソースパッケージデータ204)を識別するようにバンドル生成構成要素206を構成することができる。一例では、バンドル生成構成要素206は、appパッケージを解析して、リソースパッケージを生成するために抽出および/または使用することのできる任意選択のデータを識別することができる。たとえば、appパッケージを解析して、ドローイングアプリケーションについての任意選択のディスプレイ機能を提供することのできるマルチメディアAPIバージョン2.2の機能セットを識別することができ、したがって機能セットについてリソースパッケージを作成することができる。
[0041] バンドル生成構成要素206は、1つまたは複数のappパッケージならびに/あるいは1つまたは複数のリソースパッケージを含むように、ドローイングアプリケーションについてのバンドルパッケージ208を生成することができる。たとえば、バンドルパッケージ208は、第1のプロセッサアーキテクチャ上で実行するように構成されたアプリケーションコードを含む第1のappパッケージ210、第2のプロセッサアーキテクチャ上で実行するように構成されたアプリケーションコードを含む第2のappパッケージ212、クラウドオペレーティングシステム上で実行するように構成されたアプリケーションコードを含む第3のappパッケージ214、ならびに/あるいはたとえば様々なコンピュータアーキテクチャおよび/またはオペレーティングシステム上で実行するように構成された他のappパッケージを含むことができる。バンドルパッケージ208は、ドイツ語文字列を含む第1のリソースパッケージ216、フランス語文字列を含む第2のリソースパッケージ218、1440×900の中間品質解像度画像(たとえば、または中間品質ピクセル密度)を含む第3のリソースパッケージ220、1920×1080の高品質解像度画像(たとえば、高品質ピクセル密度)を含む第4のリソースパッケージ222、マルチメディアAPIバージョン2.2の機能セットを含む第5のリソースパッケージ224(たとえば、appパッケージから抽出された任意選択のディスプレイ機能に基づいて第5のリソースパッケージ224を自動的に生成することができる)、および/またはドローイングアプリケーションについての任意選択のユーザ体験機能を提供するために使用される補助データを含む他のリソースパッケージを含むことができる。バンドル生成構成要素206は、バンドルパッケージ208を通じて入手可能な1つまたは複数のappパッケージならびに/あるいは1つまたは複数のリソースパッケージを記述するバンドルマニフェスト226を生成することができる。このようにして、ドローイングアプリケーション(たとえば、図4)のインストールのために、バンドルパッケージ208またはその中の部分の選択的ダウンロードのためにバンドルパッケージ208を公開することができる。
[0042] 図3に、リソースパッケージ作成トランザクションを容易にする一例300を示す。すなわち、アプリケーションのapp開発者(たとえば、ドローイングアプリケーションのドローイングアプリケーション開発者302)は、英語のドローイングアプリケーションを実行するように構成されたアプリケーションコードを含むappパッケージを作成することができる。appマーケットプレイス認証プロセスを通じてappパッケージを認証することができ、したがってappパッケージをバンドルパッケージ内にバンドルし、ダウンロードのためにappマーケットプレイスを通じて公開することができる。一例では、ドローイングアプリケーション開発者302は、スペイン語を話すユーザにとってアクセス可能なドローイングアプリケーションを有することを望むことがあるが、そのような翻訳を実施するためのリソースが欠如していることがある。したがって、リソースパッケージアウトソーシングインターフェース306をドローイングアプリケーション開発者302に対して公開することができる(たとえば、ドローイングアプリケーション開発者302は、リソースパッケージアウトソーシングインターフェース306をホストすることができるウェブサイトにアクセスすることができる)。
[0043] ドローイングアプリケーション開発者302からリソースパッケージ作成要求304(たとえば、スペイン語リソースパッケージの作成の請願)を受信することができる。リソースパッケージアウトソーシングインターフェースを通じて複数のリソースパッケージ開発者に対してリソースパッケージ作成要求304を公開することができる。たとえば、リソースパッケージ開発者(A)308、リソースパッケージ開発者(B)310、およびリソースパッケージ開発(C)312は、リソースパッケージアウトソーシングインターフェース306をホストするウェブサイトを通じてリソースパッケージ作成要求304にアクセスすることができる。リソースパッケージアウトソーシングインターフェース306を通じて1つまたは複数のリソースパッケージ作成ビッドを(たとえば、リソースパッケージ開発者(A)308からリソースパッケージ作成ビッド(A)314を、リソースパッケージ開発者(B)310からリソースパッケージ作成ビッド(B)316を)受信することができる。リソースパッケージ作成ビッドの選択(たとえば、リソースパッケージ作成ビッド(B)316の選択)に応答して、ドローイングアプリケーション開発者302とリソースパッケージ開発者(B)310との間でリソースパッケージ作成トランザクションを容易にすることができる(たとえば、支払トランザクションおよび/またはスペイン語リソースパッケージの転送を容易にすることができる)。このようにして、ドローイングアプリケーションについてのバンドルパッケージ内に含めるためにリソースパッケージ開発者(B)310からスペイン語リソースパッケージを受信することができる。
[0044] 図4に、バンドルパッケージ208の部分を選択的に配布するシステム400の一例を示す。システム400は、クライアント装置406上のドローイングアプリケーションの選択的ダウンロードおよび/または展開のために、1つまたは複数のappパッケージ(たとえば、第1のappパッケージ210、第2のappパッケージ212、第3のappパッケージ214など)ならびに/あるいは1つまたは複数のリソースパッケージ(たとえば、ドイツ語文字列のための第1のリソースパッケージ216、フランス語文字列のための第2のリソースパッケージ218、1440×900の中間解像度テクスチャのための第3のリソースパッケージ、1920×1080の高解像度テクスチャのための第4のリソースパッケージ、マルチメディアAPIバージョン2.2のための第5のリソースパッケージなど)を公開するように構成されたapp配布構成要素402を備えることができる。たとえば、app配布構成要素402は、1440×900解像度をネイティブにサポートし、ドイツ語を話すユーザによって使用されるタブレット装置などのクライアント装置に対してバンドルマニフェスト226を公開することができる。バンドルマニフェスト226は、1つまたは複数のappパッケージならびに/あるいは1つまたは複数のリソースパッケージなどのバンドルパッケージ208を記述することができる。
[0045] 一例では、バンドル取得要求がクライアント装置406から受信される。クライアント装置406は、第2のappパッケージ212を使用してドローイングアプリケーションを実行することのできる第2のプロセッサアーキテクチャを有するので、バンドル取得要求は第2のappパッケージ212を指定することができる。ユーザがドイツ語を話すので、バンドル取得要求は第1のリソースパッケージ216を指定することができる。一例では、ユーザが話さないフランス語についての第2のリソースパッケージ218をダウンロードおよび配置するために普通なら使用されることになるダウンロード帯域幅、記憶空間、および/またはコンピューティングリソースをクライアント装置406が消費しないように、バンドル取得要求は第2のリソースパッケージ218を指定しない。クライアント装置406は、1440×900解像度をネイティブにサポートするので、バンドル取得要求は、第3のリソースパッケージ220を指定することができる。一例では、クライアント装置406によってサポートされない解像度のための第4のリソースパッケージ222をダウンロードおよび配置するために普通なら使用されることになるダウンロード帯域幅、記憶空間、および/またはコンピューティングリソースをクライアント装置406が消費しないように、バンドル取得要求は第4のリソースパッケージ222を指定しない。このようにして、app配布構成要素402は、ドローイングアプリケーションのインストールのために、第2のappパッケージ212、第1のリソースパッケージ216、および/または第3のリソースパッケージ220をバンドルパッケージ208からクライアント装置406に選択的に提供する(404)。
[0046] バンドルパッケージにデジタル署名する一実施形態が、図5の例示的方法500によって示されている。502で方法が開始する。アプリケーションについてのバンドルパッケージは、1つまたは複数のappパッケージならびに/あるいは1つまたは複数のリソースパッケージを含むことができる。appパッケージは、特定のコンピューティング環境でアプリケーションを走らせるために実行することのできるアプリケーションコードを含むことができる(たとえば、第1のappパッケージは、モバイルオペレーティングシステムおよび/または第2のプロセッサアーキテクチャによって実行することのできる実行可能バイナリファイルを含むことができる)。リソースパッケージは、アプリケーションについての任意選択のユーザ体験機能を提供するように構成された補助コードを含むことができる。一例では、第1のリソースパッケージがドイツ語の文字列を含むことができる。別の例では、ディスプレイリソースパッケージが、解像度データ、画面スケールデータ、マルチメディアAPIバージョンデータ、および/またはアプリケーションについての調整された視覚的体験を提供することのできる他のデータを含むことができる。バンドルパッケージ、1つまたは複数のappパッケージ、ならびに/あるいは1つまたは複数のリソースパッケージをインストールのためにクライアント装置によって選択的および/または個別にダウンロードすることができるので(たとえば、クライアント装置は、第1のappパッケージおよびフランス語の文字列を含む第2のリソースパッケージをダウンロードすることができるが、クライアント装置のユーザはドイツ語を話さないので、第1のリソースパッケージをダウンロードすることはできない)、類似のシグニチャプロパティを有するデジタルシグニチャ(たとえば、デジタル署名証明書所有者、権限の連鎖証明、鍵使用、シグニチャ検証日、シグニチャ暗号化強度、シグニチャタイムスタンプなど)でバンドルパッケージ、1つまたは複数のappパッケージ、ならびに/あるいは1つまたは複数のリソースパッケージに署名するデジタル署名操作を実施することができる。デジタルシグニチャを使用して、アプリケーションのインストールのためにバンドルパッケージ、appパッケージ、および/またはリソースパッケージのソースおよび/またはその内のコンテンツをクライアント装置によって検証することができる。
[0047] したがって、504では、バンドルパッケージについての第1のデジタル署名操作が実施される。一例では、デジタル署名証明書を利用する単一の署名操作を通じて第1のデジタル署名操作が実施される(たとえば、単一の署名操作中に、同一のデジタル署名証明書を使用して、バンドルパッケージ、appパッケージ、および/またはリソースパッケージに署名することができ、したがって、そのようなパッケージが別々にダウンロードされたか、それとも個別にダウンロードされたかの如何に関わらず、そのようなパッケージは、クライアント装置によって効率的に検証することのできる類似のシグニチャプロパティを含む)。506では、第1のデジタル署名操作は、デジタル署名証明書を利用して第1のappパッケージシグニチャで第1のappパッケージをデジタル署名し、署名済みの第1のappパッケージを作成することを含むことができる。508では、第1のデジタル署名操作は、デジタル署名証明書を利用して第1のリソースパッケージシグニチャで第1のリソースパッケージをデジタル署名し、署名済みの第1のリソースパッケージを作成することを含むことができる。510では、署名証明書を利用してバンドルパッケージシグニチャで署名された署名済みバンドルパッケージが作成される(たとえば、appパッケージおよび/またはリソースパッケージを最初に含むバンドルパッケージに署名することができ、署名済みappパッケージおよび署名済みリソースパッケージから新しいバンドルパッケージを作成することができ、新しいバンドルパッケージに署名することができ、以下同様である)。第1のappパッケージシグニチャ、第1のリソースパッケージシグニチャ、およびバンドルパッケージシグニチャによってシグニチャプロパティのセットを共有することができる。
[0048] 第1のappパッケージおよび第1のリソースパッケージに署名するいくつかの実施形態では、バンドルパッケージから第1のappパッケージおよび第1のリソースパッケージを抽出済みの第1のappパッケージおよび抽出済みの第1のリソースパッケージとして抽出することができる。抽出済みの第1のappパッケージにデジタル署名して、署名済み抽出済みの第1のappパッケージを作成することができる。抽出済みの第1のリソースパッケージにデジタル署名して、署名済み抽出済みの第1のリソースパッケージを作成することができる。一例では、署名済み抽出済みの第1のappパッケージがバンドルされたパッケージに署名済みの第1のappパッケージとして返され、署名済み抽出済みの第1のリソースパッケージがバンドルパッケージに署名済みの第1のリソースパッケージとして返される。このようにして、バンドルパッケージに署名して、署名済みバンドルパッケージを作成することができる。別の例では、署名済み抽出済みの第1のappパッケージを署名済みの第1のappパッケージとして利用し、署名済み抽出済みの第1のリソースパッケージを署名済みの第1のリソースパッケージとして利用して、新しいバンドルパッケージが作成される。バンドルパッケージシグニチャを利用して新しいバンドルパッケージに署名し、署名済みバンドルパッケージを作成することができる。別の例では、第1のappパッケージおよび/または第1のリソースパッケージが定位置で署名され、第1のappパッケージおよび/また第1のリソースパッケージがバンドルパッケージ内に含まれる。
[0049] 1つまたは複数のappパッケージならびに/あるいは1つまたは複数のリソースパッケージに署名するいくつかの実施形態では、1つまたは複数のappパッケージならびに/あるいは1つまたは複数のリソースパッケージが、デジタル署名証明書を使用して順次署名される。1つまたは複数のappパッケージならびに/あるいは1つまたは複数のリソースパッケージに署名するいくつかの実施形態では、1つまたは複数のappパッケージならびに/あるいは1つまたは複数のリソースパッケージに並列に署名することができる。一例では、第1のappパッケージおよび第1のリソースパッケージに並列に署名することができる。別の例では、第1のappパッケージおよび第2のappパッケージに並列に署名することができる。別の例では、第1のリソースパッケージおよび第2のリソースパッケージに並列に署名することができる。
[0050] appマーケットプレイスを介するダウンロードのために署名済みバンドルパッケージを公開することができる。1つまたは複数の署名済みリソースパッケージを、アプリケーションについての任意選択のダウンロードとして公開することができる。署名済みバンドルパッケージが署名済みの第1のリソースパッケージおよび署名済みの第2のリソースパッケージを含む一例では、クライアント装置からバンドル取得要求を受信することができる。バンドル取得要求は、署名済みの第1のappパッケージおよび署名済みの第1のリソースパッケージを指定することができる。署名済みの第1のappパッケージと、署名済みの第2のリソースパッケージではなく署名済みの第1のリソースパッケージとを、シグニチャ検証およびアプリケーションのインストールのためにクライアント装置に選択的に提供することができる。512で方法は終了する。
[0051] 図6に、抽出技法を利用してバンドルパッケージに署名するシステム600の一例を示す。システム600はデジタルシグニチャ構成要素614を含む。デジタル署名証明書616を利用してデジタル署名操作(たとえば、単一の署名操作)を実施して、バンドルパッケージ(たとえば、デジタル署名される前のビデオエディタアプリケーションについてのバンドルパッケージ602a)および/またはその中のパッケージにデジタル署名するようにデジタルシグニチャ構成要素614を構成することができる。たとえば、デジタルシグニチャ構成要素614は、バンドルパッケージ602aから第1のappパッケージ604a、第2のappパッケージ606a、第1のリソースパッケージ608a、および第2のリソースパッケージ610aを抽出することができる(612)。デジタルシグニチャ構成要素614は、デジタル署名証明書616を利用して第1のappパッケージシグニチャ620で第1のappパッケージ604aにデジタル署名し、署名済み抽出済みの第1のappパッケージを作成することができる。デジタルシグニチャ構成要素614は、デジタル署名証明書616を利用して第2のappパッケージシグニチャ622で第2のappパッケージ606aにデジタル署名し、署名済み抽出済みの第2のappパッケージを作成することができる。デジタルシグニチャ構成要素614は、デジタル署名証明書616を利用して第1のリソースパッケージシグニチャ624で第1のリソースパッケージ608aにデジタル署名し、署名済み抽出済みの第1のリソースパッケージを作成することができる。デジタルシグニチャ構成要素614は、デジタル署名証明書616を利用して第2のリソースパッケージシグニチャ626で第2のリソースパッケージ610aにデジタル署名し、署名済み抽出済みの第2のリソースパッケージを作成することができる。一例では、パッケージに順次または並列に署名することができる。
[0052] 一例では、デジタルシグニチャ構成要素614は、署名済み抽出済みパッケージをバンドルパッケージ602aに返すことができ(628)、デジタル署名証明書616を利用してバンドルパッケージシグニチャでバンドルパッケージ602aに署名し、署名済みの第1のappパッケージ604b、署名済みの第2のappパッケージ606b、署名済みの第1のリソースパッケージ608b、および署名済みの第2のリソースパッケージ610bを含む署名済みバンドルパッケージ602bを作成することができる。バンドルパッケージシグニチャ、第1のappパッケージシグニチャ620、第2のappパッケージシグニチャ622、第1のリソースパッケージシグニチャ624、および/または第2のリソースパッケージシグニチャ626によってシグニチャプロパティのセット(たとえば、デジタル署名証明書所有者、権限の連鎖証明、鍵使用、シグニチャ検証日、シグニチャ暗号化強度、シグニチャタイムスタンプなど)を共有することができる。このようにして、シグニチャプロパティのセットがパッケージシグニチャによって共有されるので、クライアント装置によって効率的に署名済みバンドルパッケージ602bおよび/またはその中の署名済みパッケージを選択的および/または個別にダウンロードおよび検証することができる。
[0053] 図7に、新しいバンドルパッケージから署名済みバンドルパッケージ704を作成するシステム700の一例を示す。システム700はデジタルシグニチャ構成要素614を備える。デジタル署名証明書616を利用してデジタル署名操作(たとえば、単一の署名操作)を実施し、バンドルパッケージ(たとえば、デジタル署名される前のビデオエディタアプリケーションについてのバンドルパッケージ602a)および/またはその中のパッケージにデジタル署名するようにデジタルシグニチャ構成要素614を構成することができる。たとえば、デジタルシグニチャ構成要素614は、バンドルパッケージ602aから第1のappパッケージ604a、第2のappパッケージ606a、第1のリソースパッケージ608a、および第2のリソースパッケージ610aを抽出することができる(612)。デジタルシグニチャ構成要素614は、デジタル署名証明書616を利用して第1のappパッケージシグニチャ620で第1のappパッケージ604aにデジタル署名し、署名済み抽出済みの第1のappパッケージを作成することができる。デジタルシグニチャ構成要素614は、デジタル署名証明書616を利用して第2のappパッケージシグニチャ622で第2のappパッケージ606aにデジタル署名し、署名済み抽出済みの第2のappパッケージを作成することができる。デジタルシグニチャ構成要素614は、デジタル署名証明書616を利用して第1のリソースパッケージシグニチャ624で第1のリソースパッケージ608aにデジタル署名し、署名済み抽出済みの第1のリソースパッケージを作成することができる。デジタルシグニチャ構成要素614は、デジタル署名証明書616を利用して第2のリソースパッケージシグニチャ626で第2のリソースパッケージ610aにデジタル署名し、署名済み抽出済みの第2のリソースパッケージを作成することができる。一例では、パッケージに順次または並列に署名することができる。
[0054] 一例では、デジタルシグニチャ構成要素614は、署名済み抽出済みパッケージを利用して新しいバンドルパッケージを作成することができる(702)。デジタル署名証明書616を利用してバンドルパッケージシグニチャで新しいバンドルパッケージに署名し、署名済みバンドルパッケージ704を作成することができる。このようにして、署名済みバンドルパッケージ704は、(たとえば、第1のappパッケージシグニチャ620で署名された第1のappパッケージ604aに対応する)署名済みの第1のappパッケージ604b、(たとえば、第2のappパッケージシグニチャ622で署名された第2のappパッケージ606aに対応する)署名済みの第2のappパッケージ606b、(たとえば、第1のリソースパッケージシグニチャ624で署名された第1のリソースパッケージ608aに対応する)署名済みの第1のリソースパッケージ608b、および(たとえば、第2のリソースパッケージシグニチャ626で署名された第2のリソースパッケージ610aに対応する)署名済みの第2のリソースパッケージ610bを含むことができる。一例では、署名済みバンドルパッケージ704はバンドルパッケージ602aに取って代わることができる(たとえば、バンドルパッケージ602aを削除することができる)。バンドルパッケージシグニチャ、第1のappパッケージシグニチャ620、第2のappパッケージシグニチャ622、第1のリソースパッケージシグニチャ624、および/または第2のリソースパッケージシグニチャ626によってシグニチャプロパティのセット(たとえば、デジタル署名証明書所有者、権限の連鎖証明、鍵使用、シグニチャ検証日、シグニチャ暗号化強度、シグニチャタイムスタンプなど)を共有することができる。このようにして、シグニチャプロパティのセットがパッケージシグニチャによって共有されるので、クライアント装置によって効率的に署名済みバンドルパッケージ704および/またはその中の署名済みパッケージを選択的および/または個別にダウンロードおよび検証することができる。
[0055] 図8に、定位置で(たとえば、ビデオエディタアプリケーションについての)バンドルパッケージ802内のパッケージにデジタル署名するシステム800の一例を示す。システム800はデジタルシグニチャ構成要素814を備えることができる。デジタル署名証明書816を利用して定位置で第1のappパッケージシグニチャで第1のappパッケージ804に署名し、第2のappパッケージシグニチャで第2のappパッケージ806に署名し、第1のリソースパッケージシグニチャで第1のリソースパッケージ808に署名し、第2のリソースパッケージシグニチャで第2のリソースパッケージ810に署名するようにデジタルシグニチャ構成要素814を構成することができると共に、そのようなパッケージがバンドルパッケージ802内に含まれる。デジタルシグニチャ構成要素814は、デジタル署名証明書816を利用してバンドルパッケージシグニチャでバンドルパッケージ802に署名し、署名済みバンドルパッケージを作成することができる。デジタルシグニチャ構成要素814は、デジタル署名証明書816を使用してデジタル署名操作812中にパッケージに署名することができるので、シグニチャプロパティのセットをパッケージシグニチャによって共有することができる。
[0056] 図9に、署名済みバンドルパッケージ924および/またはその中の署名済みパッケージを配布するシステム900の一例を示す。署名済みバンドルパッケージ924は、署名済みの第1のappパッケージ902、署名済みの第2のappパッケージ904、署名済みの第1のリソースパッケージ906、および署名済みの第2のリソースパッケージ908を含むことができる。デジタル署名操作中に、バンドルパッケージシグニチャで署名済みバンドルパッケージ924に署名し、第1のappパッケージシグニチャ910で署名済みの第1のappパッケージ902に署名し、第2のappパッケージシグニチャ912で署名済みの第2のappパッケージ904に署名し、第1のリソースパッケージシグニチャ914で署名済みの第1のリソースパッケージ906に署名し、第2のリソースパッケージシグニチャ916で署名済みの第2のリソースパッケージ908に署名するためにデジタル署名証明書を使用しなければならないことがある。
[0057] システム900はapp配布構成要素918を備えることができる。クライアント装置922などのクライアント装置による選択的ダウンロードおよび/または個々のダウンロードのために、署名済みバンドルパッケージ924および/またはその中の署名済みパッケージを公開するようにapp配布構成要素918を構成することができる。たとえば、クライアント装置922からバンドル取得要求を受信することができる。バンドル取得要求は、署名済みの第1のappパッケージ902および署名済みの第2のリソースパッケージ908を指定することができる。app配布構成要素918は、署名済みバンドルパッケージ924によって表されるアプリケーションの検証および/またはインストールのために、署名済みの第1のappパッケージ902、署名済みの第2のリソースパッケージ908、およびシグニチャ926(たとえば、バンドルパッケージシグニチャ、第1のappパッケージシグニチャ910、および/または第2のリソースパッケージシグニチャ916)をクライアント装置922に送ることができる(920)。
[0058] アプリケーションに関連するバンドルパッケージの部分を選択的に取り出す一実施形態が、図10の例示的方法1000によって示されている。1002で方法が開始する。1004では、インストールのためにアプリケーションに関連するバンドルパッケージを識別することができる(たとえば、appマーケットプレイスが、選択的ダウンロードおよび/または個々のダウンロードのためにバンドルパッケージおよび/またはその中の部分を公開することができる)。バンドルパッケージは、オペレーティングシステムやコンピュータアーキテクチャなどの様々なコンピューティング環境上で実行するように構成されたアプリケーションコードを含む1つまたは複数のappパッケージ(たとえば、第1のappパッケージは、モバイルオペレーティングシステム上で実行することのできるドローイングアプリケーションについての実行可能バイナリファイルを含むことができる)、および/または任意選択のユーザ体験機能を提供するために使用される補助データを含む1つまたは複数のリソースパッケージを含むことができる。クライアント装置は様々なコンピューティング環境を含むことができるので、選択的ダウンロードのために1つまたは複数のappパッケージを公開することができる(たとえば、ゲーミングコンピューティング装置は、第1のappパッケージではなく、ゲーミングベースのオペレーティングシステムを含む第2のappパッケージをダウンロードすることができる)。1つまたは複数のリソースパッケージは、クライアント装置またはユーザに関連し、または関連しないことがある任意選択のユーザ体験機能を提供するために使用される補助データを含むことができるので、選択的ダウンロードおよび/または任意選択のダウンロードのために1つまたは複数のリソースパッケージを公開することができる(たとえば、ゲーミングコンピューティング装置は、高解像度テクスチャリソースパッケージをダウンロードすることができるが、低解像度テクスチャリソースパッケージをダウンロードすることを控えることができる)。一例では、バンドルパッケージ、1つまたは複数のappパッケージ、ならびに/あるいは1つまたは複数のリソースパッケージがデジタル署名証明書で(たとえば、単一のデジタル署名操作中に)デジタル署名されていることがあり、したがってパッケージがシグニチャプロパティのセット(たとえば、デジタル署名証明書所有者、権限の連鎖証明、鍵使用、シグニチャ検証日、シグニチャ暗号化強度、シグニチャタイムスタンプなど)を共有することができ、それにより、パッケージが選択的および/または個別にダウンロードされたかどうかの如何に関わらず、クライアント装置がパッケージを効率的に検証することを可能にすることができる。
[0059] 1006では、アプリケーションがクライアント装置上で実行するための適用性コンテキストを決定することができる。適用性コンテキストは、クライアント装置および/またはクライアント装置のユーザに関連する様々な暗黙的および/または明示的情報に対応することができる。一例では、適用性コンテキストは、クライアント装置の解像度、クライアント装置の画面スケール、クライアント装置についてのユーザ体験コンテキスト(たとえば、ユーザは、高コントラストディスプレイモードを指定することができ、ユーザはゲームパッド周辺装置をインストールすることができ、ユーザは、マイクロフォンデバイスドライバ、ユーザの位置、および/またはユーザに関連する様々な他のプリファレンスおよび/またはコンテキスト側面をインストールすることができる)、クライアント装置上で利用可能なマルチメディアAPIの機能セット(たとえば、DirectX(登録商標)機能セット)、クライアント装置のグラフィックス処理装置、クライアント装置についての視覚的品質コンテキスト、クライアント装置のユーザが使用する言語、ならびに/あるいはユーザおよび/またはクライアント装置に関連することがあるユーザ体験機能を識別するために使用することのできる多数の他の情報に対応することができる。別の例では、適用性コンテキストを暗黙的に識別するためにクライアント装置を評価することができる(たとえば、ユーザは現在フランスに位置していることがあり、したがってフランス語コンテキストが示唆されることがある)。別の例では、クライアント装置についてのユーザ指定の設定を適用性コンテキストとして決定することができる(たとえば、ユーザによって設定される高コントラストディスプレイモード)。別の例では、クライアント装置に関連する情報にファジィマッチング論理を適用して、クライアント装置またはユーザについての仮定を適用性コンテキストとして生成することができる(たとえば、ユーザによってインストールされたゲーミンググラフィックスカードおよびゲーミング周辺装置を使用して、高解像度テクスチャがユーザによって望まれると判定することができる)。複数のユーザがクライアント装置を利用することがある別の例では、複数のユーザを列挙することができ、その複数のユーザに基づいて適用性コンテキストを決定することができる(たとえば、第1のユーザについてはドイツ語、第2のユーザについてはフランス語)。
[0060] 1008では、適用性コンテキストによって指定されるコンピューティング環境コンテキスト(たとえば、オペレーティングシステム、コンピュータアーキテクチャなど)に対応するアプリケーションコードを含む第1のappパッケージに基づいて、第1のappパッケージを選択的に取り出すことができる。一例では、第1のappパッケージの第1のappパッケージシグニチャを検証することができる(たとえば、appパッケージのapp開発者の識別、および/または第1のappパッケージが修正されていないことの検証)。1010では、バンドルパッケージ内に含まれる1つまたは複数のリソースパッケージの第1のリソースパッケージに対応する適用性コンテキストに応答して、第1のソースパッケージがバンドルパッケージから選択的に取り出される。一例では、第1のリソースパッケージの第1のリソースパッケージシグニチャを検証することができる(たとえば、第1のリソースパッケージの開発者の識別、および/または第1のリソースパッケージが修正されていないことの検証)。バンドルパッケージは適用性コンテキストに対応しないリソースパッケージを含むことができるので、そのようなリソースパッケージはバンドルパッケージから取り出されない。たとえば、スマートフォンについての適用性コンテキストは、スマートフォンのための比較的低い解像度を指定することができ、したがって高解像度イメージリソースパッケージではなく、低解像度イメージリソースパッケージをスマートフォンのために取り出すことができる。
[0061] 一例では、適用性コンテキストはオーストラリア英語を指定することができる。オーストラリア英語のための言語リソースパッケージを含まないバンドルパッケージに応答して、言語類似性しきい値を超えるオーストラリア英語に対応する第2の言語についての第2の言語リソースパッケージを識別することができる(たとえば、英国英語リソースパッケージが米国英語リソースパッケージよりもオーストラリア英語に類似していると識別することができる)。英国英語リソースパッケージなどの第2の言語リソースパッケージを選択的に取り出すことができる。このようにして、類似性しきい値を超える適用性コンテキストに関連するリソースパッケージ(たとえば、「次善の」選択)を選択的に取り出すことができる(たとえば、しきい値を超える適用性コンテキストの視覚的品質コンテキストに対応する視覚的リソースパッケージ)。クライアント装置は、アプリケーションをインストールするためにバンドルパッケージから取り出された第1のappパッケージ、第1のリソースパッケージ、および/または他のパッケージを利用することができる。
[0062] 一例では、バンドルパッケージに対する更新を識別することができる。更新は、バンドルパッケージ内のリソースパッケージのセットへの新しいリソースパッケージの追加に対応することができる。新しいリソースパッケージ(たとえば、オーストラリア英語リソースパッケージ)に対応する適用性コンテキストに応答して、バンドルパッケージから新しいリソースパッケージを選択的に取り出すことができる。このようにして、クライアント装置は、クライアント装置および/またはユーザに関連するappパッケージおよび/またはリソースパッケージを単に得ることができる。1012で方法は終了する。
[0063] 図11に、アプリケーションに関連するバンドルパッケージ1110の部分を選択的に取り出すシステム1100の一例を示す。一例では、バンドルパッケージ1110がドローイングアプリケーションに関連付けられる。バンドルパッケージ1110は、1つまたは複数のappパッケージならびに/あるいは1つまたは複数のリソースパッケージを含む。たとえば、バンドルパッケージ1110は、第1のプロセッサタイプのための第1のappパッケージ1112、および第2のプロセッサタイプのための第2のappパッケージ1114を含む。バンドルパッケージは、米国英語のための第1のリソースパッケージ、英国英語のための第2のリソースパッケージ1118、高解像度アイコンのための第3のリソースパッケージ1120、および中間解像度アイコンのための第4のリソースパッケージ1122を含む。ドローイングアプリケーションについての選択的ダウンロードおよび/または任意選択のダウンロードのために1つまたは複数のリソースパッケージを公開することができる。すなわち、リソースパッケージは、アプリケーションについての任意選択のユーザ体験機能を提供するために使用される補助データを含むことができる。
[0064] 一例では、タブレット装置などのクライアント装置1102は、ドローイングアプリケーションについてのバンドルパッケージ1110を識別することができる。クライアント装置1102は、バンドルパッケージ1110内の1つまたは複数のappパッケージならびに/あるいは1つまたは複数のリソースパッケージを記述するバンドルマニフェスト1124を得ることができる。システム1100は、クライアント装置1102についての適用性コンテキスト1106を決定するように構成された適用性構成要素1104を備えることができる。たとえば、適用性コンテキスト1106は、クライアント装置1102が第2のプロセッサタイプを有し、クライアント装置1102のユーザがオーストラリア英語を話すこと、およびクライアント装置1102が中間解像度から低解像度のグラフィックスをサポートすることを指定することができる。システム1100は、適用性コンテキスト1106に対応するappパッケージならびに/あるいは1つまたは複数のリソースパッケージを取り出す(1126)ように構成された検索構成要素1108を備えることができる。検索構成要素1108は、適用性コンテキスト1106に対応しない(たとえば、上記の類似性しきい値に対応しない)appパッケージおよび/またはリソースパッケージを取り出すことを控えることができる。一例では、第2のappパッケージ1114、第2のリソースパッケージ1118(たとえば、英国英語は、類似性しきい値を超えるオーストラリア英語コンテキストに対応することができるのに対して、米国英語は対応しないので)、および第4のリソースパッケージ1122(たとえば、中間解像度アイコンは類似性しきい値を超える中間解像度から低解像度コンテキストに対応することができるのに対して、高解像度アイコンは対応しないので)が適用性コンテキスト1106に対応するので、検索構成要素1108はそのようなパッケージを取り出すことができる(1126)。このようにして、クライアント装置1102は、選択的にダウンロードされたパッケージを使用してドローイングアプリケーションをインストールすることができる。
[0065] 図12に、アプリケーションに関連するバンドルパッケージ1110の部分を選択的に取り出すシステム1200の一例を示す。一例では、バンドルパッケージ1110がドローイングアプリケーションに関連付けられる。バンドルパッケージ1110は、1つまたは複数のappパッケージならびに/あるいは1つまたは複数のリソースパッケージを含む。たとえば、バンドルパッケージ1100は、第1のプロセッサタイプのための第1のappパッケージ1112、および第2のプロセッサタイプのための第2のappパッケージ1114を含む。バンドルパッケージ1110は、米国英語のための第1のリソースパッケージ1116、英国英語のための第2のリソースパッケージ1118、高解像度アイコンのための第3のリソースパッケージ1120、および中間解像度アイコンのための第4のリソースパッケージ1122を含む。ドローイングアプリケーションについての選択的ダウンロードおよび/または任意選択のダウンロードのために1つまたは複数のリソースパッケージを公開することができる。すなわち、リソースパッケージは、アプリケーションについての任意選択のユーザ体験機能を提供するために使用される補助データを含むことができる。
[0066] 一例では、ゲーミングデスクトップなどのクライアント装置1202は、ドローイングアプリケーションについてのバンドルパッケージ1110を識別することができる。クライアント装置1202は、バンドルパッケージ1110内の1つまたは複数のappパッケージならびに/あるいは1つまたは複数のリソースパッケージを記述するバンドルマニフェスト1124を得ることができる。システム1200は、クライアント装置1102についての適用性コンテキスト1206を決定するように構成された適用性構成要素1204を備えることができる。たとえば、適用性コンテキスト1206は、クライアント装置1202が第1のプロセッサタイプを有し、クライアント装置1102のユーザが英語を話すこと、およびクライアント装置1202が高解像度グラフィックスをサポートすることを指定することができる。システム1200は、適用性コンテキスト1206に対応するappパッケージならびに/あるいは1つまたは複数のリソースパッケージを取り出す(1210)ように構成された検索構成要素1208を備えることができる。検索構成要素1208は、適用性コンテキスト1206に対応しないappパッケージおよび/またはリソースパッケージを取り出すことを控えることができる。一例では、第1のappパッケージ1112、第1のリソースパッケージ1116、および第3のリソースパッケージ1120が適用性コンテンツ1206に対応するので、検索構成要素1208は、そのようなパッケージを取り出すことができる(1210)。このようにして、クライアント装置1202は、選択的にダウンロードされたパッケージを使用してドローイングアプリケーションをインストールすることができる。
[0067] クライアント装置上のアプリケーションについてのリソースパッケージおよび/またはappパッケージなどのパッケージ内のリソースを索引付けする一実施形態が、図13の例示的方法1300によって示されている。1302で方法は開始する。一例では、クライアント装置は、アプリケーションに関連するappパッケージおよび1つまたは複数のリソースパッケージを選択的に取り出していることがある。一例では、appパッケージの第1のappパッケージシグニチャを検証することができ(たとえば、appパッケージのapp開発者の識別、および/またはappパッケージが修正されていないという検証)、かつ/または1つまたは複数のリソースパッケージのリソースシグニチャを検証することができる(たとえば、リソースパッケージの開発者の識別、および/またはリソースパッケージが修正されていないという検証)。1つまたは複数のリソースパッケージがクライアント装置上に個別にダウンロードおよび/または格納されていることがあるので、ランタイム中のアプリケーションによる利用についてそのようなリソースパッケージを追跡することが有利であることがある。したがって、1304では、たとえば第1のリソースパッケージおよび第2のリソースパッケージを、クライアント装置上で識別することができる。第1のリソースパッケージは、アプリケーションについての第1の任意選択のユーザ体験機能を提供するために使用される第1の補助データ(たとえば、高解像度アイコンリソースパッケージ内の1つまたは複数の高解像度アイコン)を含むことができる。第2のリソースパッケージは、アプリケーションについての第2の任意選択のユーザ体験機能を提供するために使用される第2の補助データ(たとえば、マルチメディアAPIバージョン11についての機能セット内の1つまたは複数のマルチメディア機能リソース)を含むことができる。第1のリソースパッケージは、第1のリソースデータを記述する第1のリソース索引(たとえば、第1のリソースパッケージが1つまたは複数の高解像度アイコンを含むという識別)および/または第1のリソース適用性データ(たとえば、高解像度アイコンデータを表示することのできるクライアント装置上で実行されたとき、高解像度アイコンデータがアプリケーションに適用されるという識別)を含むことができる。第2のリソースパッケージは、第2のリソースデータを記述する第2のリソース索引(たとえば、1つまたは複数のマルチメディア機能リソースの説明)および/または第1のリソース適用性データ(たとえば、クライアント装置がマルチメディアAPIバージョン11をインストールしたとき、機能セットを使用することができるという識別)を含むことができる。
[0068] 一例では、リソースパッケージは、アプリケーションについてのリソースのサブセットを含むことができる(たとえば、カナダ英語リソースパッケージは、ColourやFavouriteなどのいくつかのカナダテキスト文字列を含むことができ、一方中立または米国英語リソースパッケージは、他の語についての複数のテキスト文字列を含む)。一例では、単一のリソースパッケージは、個々のリソースのいくつかの異形(たとえば、ドイツイメージの高コントラストバージョン、ドイツイメージの低コントラストバージョンなど)を含むことができる。
[0069] 1306では、第1のリソースパッケージについての第1のリソース索引を第2のリソースパッケージについての第2のリソース索引とマージして、マージ済みリソース索引を作成することができる。マージ済みリソース索引は、常にまたは排他的にではないが一般にクライアント側であるのに対して、バンドルマニフェストは、常にまたは排他的にではないが一般にサーバまたは開発者側であることを理解されよう。さらに、マージ済みリソース索引は、常にではないが一般に、利用可能な(たとえば、ローカル)リソースパッケージ内の個々のどのリソースをアプリケーションの実行中に使用することができるかを決定するために使用されるのに対して、バンドルマニフェストは、常にではないが一般に、どのappパッケージおよび/またはリソースパッケージをクライアント装置にダウンロードするかを決定するために使用される。一例では、アプリケーションに関連するリソースパッケージについての複数のリソース索引をマージ済みリソース索引にマージすることができ、したがってマージ済みリソース索引は、アプリケーションを実行するときにロードすることのできるリソースパッケージ内の個々のリソースを記述することができる(たとえば、マージ済みリソース索引内の多次元ルックアップを実施して、アプリケーションの実行のための、テキスト文字列、イメージ、アイコンなどのリソースのセットを識別することができる)。たとえば、appマーケットプレイスから第3のリソースパッケージを取り出すことができる。第3のリソースパッケージは、アプリケーションについての第3の任意選択のユーザ体験機能を提供するために使用される第3の補助データ(たとえば、ドイツ語リソースパッケージ内の1つまたは複数のドイツ語文字列)を含むことができる。一例では、クライアント装置への第3のリソースパッケージの展開中に、第3のリソースパッケージについての第3のリソース索引をマージ済みリソース索引にマージすることができる。別の例では、アプリケーションの初期実行中に、第3のリソース索引をマージ済みリソース索引にマージすることができる。一例では、マージ済みリソース索引は、リソースパッケージ内のリソースへの1つまたは複数の参照を含むことができる。別の例では、アプリケーションについてのappパッケージ内にマージ済みリソース索引への参照を作成することができる。appパッケージは、アプリケーションの実行のためのアプリケーションコードを含むことができ、したがってアプリケーションの実行中に参照を使用してマージ済みリソース索引にアクセスすることができ、その結果、1つまたは複数のリソースパッケージからの個々のリソースを選択的に使用することができる。
[0070] 一例では、アプリケーションに関連するappパッケージを識別することができる。appパッケージは、アプリケーションの実行のために構成されたアプリケーションコードを含むことができる。(たとえば、appパッケージによって提供される1つまたは複数のリソースを記述する)appパッケージについてのリソース索引をマージ済み索引にマージすることができる。
[0071] 1308では、アプリケーションの実行のために、マージ済みリソース索引を利用して、リソースパッケージおよび/またはappパッケージなどの1つまたは複数のパッケージからリソースを選択的に使用することができる(たとえば、高解像度ウェルカム画面イメージリソース、ドイツ語ウェルカムテキスト文字列など)。一例では、appパッケージを利用してランタイム状態のアプリケーションを実行することに応答して、マージ済みリソース索引を評価して、アプリケーションについての任意選択のユーザ体験機能を提供するために使用されるリソースのセットを識別することができる。このようにして、アプリケーションを起動して、リソースパッケージおよび/またはその中の(たとえば、および/またはappパッケージ内の)1つまたは複数のリソースのセットを利用することができる。マージ済みリソース索引を利用する一例では、マージ済みリソース索引内で多次元ルックアップを実施して、1つまたは複数のリソースパッケージ内に含まれることがあるリソースの適切なセットを識別することができる。たとえば、マージ済みリソース索引は、言語次元、解像度次元、画面スケール次元、視覚的品質次元、マルチメディアAPI次元、補助機能次元、および/またはクライアント装置上のアプリケーションの実行に関連することのあるリソースを識別するために評価することのできる様々な他の次元を含むことができる(たとえば、フランス語テキスト文字列リソースおよびドイツ語テキスト文字列リソースが利用可能であることがあり、クライアント装置の現ユーザがフランス語を選好し、かつ/またはクライアント装置が現在フランスに位置するので、ドイツ語テキスト文字列リソースに優先して、フランス語テキスト文字列リソースを選択することができる)。一例では、リソースのセットは、アプリケーションについてのすべての、またはすべてよりも少ない利用可能なリソースパッケージに及ぶことがある(たとえば、リソースのセットが、しきい値対応を超えるクライアント装置のディスプレイ品質ユーザ体験および/またはユーザの言語に対応するリソースなどの、クライアント装置および/またはユーザに関連するリソースのセットに基づいてマージ済みリソース索引を通じて識別されるリソースパッケージのサブセット内に含まれることがある)。1310で方法は終了する。
[0072] クライアント装置上のアプリケーションについてのリソースを索引付けするいくつかの実施形態では、クライアント装置上でリソースパッケージおよびappパッケージを識別することができる。リソースパッケージは、アプリケーションについての任意選択のユーザ体験機能を提供するために使用される補助データを含むことができる。appパッケージは、アプリケーションの実行のために構成されたアプリケーションコード(たとえば、アプリケーションバイナリ)を含むことができる。(たとえば、リソースパッケージ内の個々のリソースを記述する)リソースパッケージについての第1のリソース索引を(たとえば、appパッケージ内の個々のリソースを記述する)appパッケージについての第2のリソースパッケージとマージして、マージ済みリソース索引を作成することができる。マージ済みリソース索引を利用して、アプリケーションの実行のためにリソースパッケージおよび/またはappパッケージ内の1つまたは複数のリソースを選択的に利用することができる。
[0073] 図14に、クライアント装置1402上のアプリケーションについてのリソースパッケージおよび/またはappパッケージなどのパッケージ内のリソースを索引付けするシステム1400の一例を示す。クライアント装置1402は、ドイツ語のための第1のリソースパッケージ1404(たとえば、1つまたは複数のドイツ語文字列リソース)、フランス語のための第2のリソースパッケージ1406(たとえば、1つまたは複数のフランス語文字列リソース)、および/またはリソースパッケージ(N)1408などの他のリソースパッケージを含むことができる。システム1400は索引付け構成要素1416を備えることができる。クライアント装置1402上のそのようなリソースパッケージを識別するように索引付け構成要素1416を構成することができる。リソースパッケージ内の個々のリソースを記述するリソース索引をマージ済みリソース索引1418にマージするように索引付け構成要素1416を構成することができる。たとえば、第1のリソース索引1410、第2のリソース索引1412、および/またはリソース索引(N)1414などの他のリソース索引をマージ済みリソース索引1418にマージすることができる。このようにして、マージ済みリソース索引1418は、アプリケーションによる利用のために利用可能であることがあるリソースパッケージ内の個々のリソースを記述することができる。たとえば、マージ済みリソース索引は、第1のリソースパッケージ1404内のドイツ語文字列リソースへの第1の参照1420、第2のリソースパッケージ内のフランス語文字列リソースへの第2の参照1422、および/またはリソースパッケージ内の他のリソースへの他の参照(たとえば、第3のリソースパッケージ内の中間解像度イメージリソースへの参照1424、第4のリソースパッケージ内の高解像度イメージリソースへの参照1426、第5のリソースパッケージ内の低解像度アイコンリソースへの参照1428、第6のリソースパッケージ内の高解像度アイコンAへの参照1430、第6のリソースパッケージ内の高解像度アイコンBへの参照1432、および/または第6のリソースパッケージ内の高解像度アイコンCへの参照1434)を含むことができる。一例では、索引付け構成要素1416は、アプリケーションについてのappパッケージ1416内の参照を作成することができる。このようにして、appパッケージ1416を利用するアプリケーションの実行中に、アプリケーションによる使用のための1つまたは複数のリソースを(たとえば、次元が言語やディスプレイ品質などの様々なユーザ体験機能に対応する多次元ルックアップを利用して)識別するために、参照を使用してマージ済みリソース索引1418にアクセスすることができる。
[0074] 図15に、アプリケーション1506の実行中にマージ済み索引1418を利用するシステム1500の一例を示す。システム1500はリソース利用構成要素1502を備えることができる。appパッケージを利用してランタイム状態で実行中のアプリケーション1506を検出するようにリソース利用構成要素1502を構成することができる。実行中のアプリケーション1506に応答して、リソース利用構成要素1502は、マージ済みリソース索引1418(たとえば、図14のマージ済みリソース索引1418)を評価して、アプリケーションについての任意選択のユーザ体験機能を提供するために使用することのできるリソースのセットを識別することができる。たとえば、言語次元、解像度次元、アイコン解像度次元、および/または他の次元に対応する多次元ルックアップをマージ済みリソース索引1418内で実施することができる。たとえば、リソースのセットは、(たとえば、現ユーザによって話される言語に基づいて)ドイツ語のための第1のリソースパッケージ内のドイツ語文字列リソース、(たとえば、クライアント装置1420の画面タイプに基づいて)高解像度のための第4のリソースパッケージ内の高解像度イメージリソース、および(たとえば、クライアント装置1420のグラフィックスカードに基づいて)高解像度アイコンのための第6のリソースパッケージ内の高解像度アイコンリソースを含むことができる。このようにして、アプリケーション1506による利用のためにドイツ語文字列リソース、高解像度イメージリソース、および高解像度アイコンリソースを(たとえば、要求時に)取り出すことができる(1504)。
[0075] ゲームバンドルパッケージを介してゲームを配布する一実施形態が、図16の例示的方法1600によって示されている。1602で方法は開始する。1604では、ゲームについてのゲームバンドルパッケージを生成することができる。ゲームバンドルパッケージは、1つまたは複数のコアゲームパッケージ(たとえば、ゲームのコア体験をプレイするために実行することのできる実行可能バイナリファイル)を含むことができる。一例では、ゲームバンドルパッケージは、第1のコンピューティング環境(たとえば、第1のプロセッサタイプ、特定のオペレーティングシステムなど)上で実行するように構成されたゲームコードを含む第1のコアゲームパッケージを含むことができる。別の例では、ゲームバンドルパッケージは、第2のコンピューティング環境(たとえば、第2のプロセッサタイプ、モバイルオペレーティングシステムなど)上で実行するように構成されたゲームコードを含む第2のコアゲームパッケージを含むことができる。
[0076] ゲームバンドルパッケージは、ゲームについての任意選択のユーザ体験機能を提供する1つまたは複数のリソースゲームパッケージを含むことができる。一例では、ゲームバンドルパッケージは、ゲームについての第1の任意選択のユーザ体験機能を提供するために使用される第1の補助ハードウェア認識データを含む第1のリソースゲームパッケージを含むことができる。たとえば、第1の補助ハードウェア認識データは、第1のディスプレイ品質ユーザ体験に対応することができる(たとえば、第1の補助ハードウェア認識データは、ゲーミンググラフィックス処理装置などのグラフィカルに可能なハードウェア、またはDirectX(登録商標)などのマルチメディアAPIのゲーミング機能セットによってサポートすることのできる比較的高いディスプレイ品質のテクスチャ画像、地形データ、キャラクタ幾何形状、および/またはゲーム視覚化データを含むことができる)。別の例では、ゲームバンドルパッケージは、ゲームについての第2の任意選択のユーザ体験機能を提供するために使用される第2の補助ハードウェア認識データを含む第2のリソースゲームパッケージを含むことができる。たとえば、第2の補助ハードウェア認識データは、第2のディスプレイ品質ユーザ体験に対応することができる(たとえば、第2の補助ハードウェア認識データは、タブレットグラフィックス処理装置などのモバイル装置ハードウェア、またはDirectX(登録商標)などのマルチメディアAPIのモバイル機能セットによってサポートすることのできる比較的低いディスプレイ品質のテクスチャ画像、地形データ、キャラクタ幾何形状、および/またはゲーム視覚化データを含むことができる)。一例では、ゲームバンドルパッケージ、1つまたは複数のコアゲームパッケージ、ならびに/あるいは1つまたは複数のリソースゲームパッケージにデジタル署名証明書で(たとえば、単一のデジタル署名操作中に)デジタル署名することができ、したがってパッケージはシグニチャプロパティのセット(たとえば、デジタル署名証明書所有者、権限の連鎖証明、鍵使用、シグニチャ検証日、シグニチャ暗号化強度、シグニチャタイムスタンプなど)を共有することができ、それにより、パッケージが選択的にダウンロードされたか、かつ/または個別にダウンロードされたかの如何に関わらず、クライアント装置がパッケージを効率的に検証することを可能にすることができる。
[0077] 一例では、ゲームバンドルパッケージについてのゲームバンドル更新を受信することができる(たとえば、リソースパッケージの追加、除去、または修正)。ゲームバンドル更新は、ゲームバンドルパッケージ内に含めるための新しいリソースゲームパッケージを含むことができる。新しいリソースゲームパッケージを含むようにゲームバンドルパッケージを更新することができる。ゲームバンドルパッケージがappマーケットプレイス認証プロセスによって認証された一例では、ゲームバンドルパッケージ全体を再認証しなければならないのではなく、単に新しいリソースゲームパッケージを認証することができる。
[0078] 1606では、ゲームの選択的ダウンロードのために1つまたは複数のコアゲームパッケージならびに/あるいは1つまたは複数のリソースゲームパッケージを公開することができる。一例では、クライアント装置からゲームバンドル取得要求を受信することができる。ゲームバンドル取得要求は、第1のコアゲームパッケージと、リソースゲームパッケージのサブセット(たとえば、ゲームバンドルパッケージ内のもう1つのリソースゲームパッケージのすべてよりも少ない、少なくともいくつか)とを指定することができる。このようにして、ゲームのインストールのために、第1のコアゲームパッケージと、リソースゲームパッケージのサブセットとをクライアント装置に選択的に提供することができる。1608で方法は終了する。
[0079] ゲームバンドルパッケージを介してゲームをインストールする一実施形態が、図17の例示的方法1700によって示されている。1702で方法は開始する。1704では、appマーケットプレイスを通じて提供されるゲームについてのゲームバンドルパッケージを識別することができる。ゲームバンドルパッケージは、1つまたは複数のコアゲームパッケージならびに/あるいは1つまたは複数のリソースゲームパッケージを含むことができる。1つまたは複数のリソースゲームパッケージを、ゲームについての任意選択のユーザ体験機能を提供する任意選択のダウンロードとして公開することができる(たとえば、ゲームパッドについてのサポート、マルチメディアAPIバージョンについてのサポート、高解像度テクスチャ、チャットクライアントについてのサポート、ゲーミングヘッドセットまたは他の周辺機器についてのサポートなど)。1706では、ゲームバンドルパッケージへのアクセスのためにバンドル取得要求をappマーケットプレイスに送ることができる。バンドル取得要求は、第1のコアゲームパッケージと、リソースゲームパッケージのサブセットとを指定することができる(たとえば、リソースゲームパッケージのサブセットは、ゲームバンドルパッケージ内のもう1つまたは複数のリソースゲームパッケージのすべてよりも少ない、少なくともいくつかを含むことができる)。一例では、たとえば、クライアント装置のハードウェアリソースおよび/またはマルチメディア機能に基づいて、リソースゲームパッケージのサブセットを識別することができる。1708では、クライアント装置上のゲームのインストールのために、第1のappパッケージと、リソースゲームパッケージのサブセットとを得ることができる。1710で方法は終了する。
[0080] 図18に、ゲームバンドルパッケージ1804を介してゲームを配布するシステム1800の一例を示す。一例では、ゲームバンドルパッケージ1804がドライビングゲームアプリケーションに関連付けられる。1つまたは複数のコアゲームパッケージならびに/あるいは1つまたは複数のリソースゲームパッケージを含むようにゲームバンドルパッケージを生成するようにゲームバンドリング構成要素1802を構成することができる。ゲームバンドルパッケージ1804は、第1のプロセッサタイプ上で実行するように構成されたゲームコードを含む第1のコアゲームパッケージ1806と、第2のプロセッサタイプ上で実行するように構成されたゲームコードを含む第2のコアゲームパッケージ1808とを含むことができる。ゲームバンドルパッケージ1804は、ゲームについての任意選択のユーザ体験機能を提供するために使用される補助ハードウェア認識データを含む1つまたは複数のリソースゲームパッケージ(たとえば、高テクスチャ画像のための第1のリソースゲームパッケージ1810、低解像度テクスチャ画像のための第2のリソースゲームパッケージ1812、まばらな地形データのための第3のリソースゲームパッケージ1814、密な地形データのための第4のリソースゲームパッケージ1816、複雑な幾何形状のための第5のリソースゲームパッケージ1818、および/または他のリソースゲームパッケージ)を含むことができる。ゲームの選択的ダウンロードのためにゲームバンドルパッケージを公開することができる(たとえば、1つまたは複数のリソースゲームパッケージをゲームについての任意選択のダウンロードとして公開することができる)。
[0081] システム1800は配布構成要素1820を備えることができる。タブレット装置などのクライアント装置1826からゲームバンドルパッケージ1804を求めるバンドル取得要求1822を受信するように配布構成要素1820を構成することができる。バンドル取得要求1822は、クライアント装置1826のハードウェアリソース1828(たとえば、ゲーミング周辺機器、グラフィックスカードなど)および/またはマルチメディア機能1830(たとえば、マルチメディアAPIバージョン、ディスプレイドライバなど)に基づいて、第2のコアゲームパッケージ1808、第2のリソースゲームパッケージ1812、および第3のリソースゲームパッケージ1814を指定することができる。たとえば、クライアント装置1826は、第2のプロセッサタイプ、比較的少量の記憶空間、ならびに/あるいは比較的低解像度のディスプレイ機能およびハードウェアを備えることができる。このようにして、ゲームを取得および展開することに関連するダウンロード帯域幅、記憶空間、および/またはコンピューティングリソースを削減するために、低テクスチャ画像およびまばらな地形データをクライアント装置1826によって要求することができる(たとえば、サポートされない高解像度視覚データが不必要にダウンロードされない)。このようにして、配布構成要素1820は、ゲームのインストールのために第2のコアゲームパッケージ1808、第2のリソースゲームパッケージ1812、および/または第3のリソースゲームパッケージ1814をクライアント装置1826に提供することができる(1824)。
[0082] さらに別の実施形態は、本明細書で提示される技法のうちの1つまたは複数を実装するように構成されたプロセッサ実行可能命令を含むコンピュータ可読媒体に関係する。このようにして考案されるコンピュータ可読媒体またはコンピュータ可読装置の例示的一実施形態が図19に示されており、実装1900が、コンピュータ可読データ1906がその上に符号化される、CD−R、DVD−R、フラッシュドライブ、ハードディスクドライブのプラッタなどのコンピュータ可読媒体1908を備える。0または1の少なくとも一方を含むバイナリデータなどのこのコンピュータ可読データ1906は、本明細書で説明される原理のうちの1つまたは複数に従って動作するように構成されたコンピュータ命令1904のセットを含む。いくつかの実施形態では、プロセッサ実行可能コンピュータ命令1904は、たとえば、図1の例示的方法100の少なくとも一部、図5の例示的方法500の少なくとも一部、図10の例示的方法1000の少なくとも一部、図13の例示的方法1300の少なくとも一部、図16の例示的方法1600の少なくとも一部、および/または図17の例示的方法1700の少なくとも一部などの方法1902を実施するように構成される。いくつかの実施形態では、プロセッサ実行可能命令1904は、たとえば、図2の例示的システム200の少なくとも一部、図4の例示的システム400の少なくとも一部、図6の例示的システム600の少なくとも一部、図7の例示的システム700の少なくとも一部、図8の例示的システム800の少なくとも一部、図9の例示的システム900の少なくとも一部、図11の例示的システム1100の少なくとも一部、図12の例示的システム1200の少なくとも一部、図14の例示的システム1400の少なくとも一部、図15の例示的システム1500の少なくとも一部、および/または図18の例示的システム1800の少なくとも一部などのシステムを実装するように構成される。本明細書で提示される技法に従って動作するように構成される多くのそのようなコンピュータ可読媒体が、当業者によって考案される。
[0083] 構造的特徴および/または方法的動作に特有の言語で主題を説明したが、添付の特許請求の範囲で定義される主題が前述の特定の特徴または動作に必ずしも限定されないことを理解されたい。むしろ、前述の特定の特徴および動作は、特許請求の範囲を実装する例示的形態として開示される。
[0084] 本願では、「構成要素」、「モジュール」、「システム」、および/または「インターフェース」などという用語は一般に、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかである、コンピュータ関連のエンティティを指すものとする。たとえば、構成要素は、限定はしないが、プロセッサ上で実行中のプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および/またはコンピュータでよい。例として、コントローラ上で実行中のアプリケーションとコントローラはどちらも、構成要素でよい。1つまたは複数の構成要素が、プロセスおよび/または実行のスレッド内に常駐することができ、構成要素が1つのコンピュータ上に局在化し、かつ/または2つ以上のコンピュータ間で分散することができる。
[0085] さらに、標準プログラミングおよび/またはエンジニアリング技法を使用して、特許請求される主題を方法、装置、製造品として実装し、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組合せを生成し、開示される主題を実装するようにコンピュータを制御することができる。本明細書で使用する「製造品」という用語は、任意のコンピュータ可読装置、搬送波、または媒体からアクセス可能なコンピュータプログラムを包含するものとする。もちろん、特許請求される主題の範囲または精神から逸脱することなく、この構成に対して多くの修正を行えることを当業者は理解されよう。
[0086] 図20および以下の議論は、本明細書に記載の条項のうちの1つまたは複数の実施形態を実装するための適切なコンピューティング環境の簡潔で一般的な説明を与えるものである。図20の動作環境は、適切な動作環境の一例にすぎず、動作環境の使用または機能の範囲に関してどんな限定も示唆するものではない。例示的コンピューティング装置は、限定はしないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、モバイル装置(携帯電話、携帯情報端末(PDA)、メディアプレーヤなど)、マルチプロセッサシステム、コンシューマエレクトロニクス、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたは装置のいずれかを含む分散コンピューティング環境などを含む。
[0087] 必須ではないが、実施形態は、1つまたは複数のコンピューティング装置によって実行中の「コンピュータ可読命令」の一般的文脈で説明される。コンピュータ可読媒体を介してコンピュータ可読命令を配布することができる(以下で論じる)。特定のタスクを実施し、または特定の抽象データタイプを実装する関数、オブジェクト、アプリケーションプログラミングインターフェース(API)、データ構造などのプログラムモジュールとしてコンピュータ可読命令を実装することができる。通常、様々な環境でコンピュータ可読命令の機能を望む通りに組み合わせ、または分散させることができる。
[0088] 図20に、本明細書で与えられる1つまたは複数の実施形態を実装するように構成されたコンピューティング装置2012を備えるシステム2000の一例を示す。一構成では、コンピューティング装置2012は少なくとも1つの処理装置2016およびメモリ2018を含む。コンピューティング装置の厳密な構成およびタイプに応じて、メモリ2018は、揮発性(たとえば、RAMなど)、不揮発性(たとえば、ROM、フラッシュメモリなど)、またはその2つの何らかの組合せでよい。この構成が、図20では破線2014によって示されている。
[0089] 別の実施形態では、装置2012は、追加の特徴および/または機能を含むことができる。たとえば、装置2012は、限定はしないが、磁気ストレージ、光ストレージなどを含む追加のストレージ(たとえば、取外し可能および/または取外し不能)をも含むことができる。そのような追加のストレージが、図20ではストレージ2020によって示されている。一実施形態では、本明細書で与えられる1つまたは複数の実施形態を実装するためのコンピュータ可読命令は、ストレージ2020内でよい。ストレージ2020はまた、オペレーティングシステム、アプリケーションプログラムなどを実装するための他のコンピュータ可読命令をも格納することができる。たとえば、処理装置2016による実行のために、メモリ2018内にコンピュータ可読命令をロードすることができる。
[0090] 本明細書で使用する「コンピュータ可読媒体」という用語はコンピュータ記憶媒体を含む。コンピュータ記憶媒体は、コンピュータ可読命令または他のデータなどの情報の記憶のための任意の方法または技術で実装された、揮発性および不揮発性の取外し可能および取外し不能媒体を含む。メモリ2018およびストレージ2020はコンピュータ記憶媒体の例である。コンピュータ記憶媒体は、限定はしないが、RAM、ROM、EEPROM、フラッシュメモリ、または他のメモリ技術、CD−ROM、デジタルバーサタイルディスク(DVD)、または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気記憶装置、あるいは所望の情報を格納するために使用することができ、装置2012によってアクセスすることのできる任意の他の媒体を含む。任意のそのようなコンピュータ記憶媒体は装置2012の部分でよい。
[0091] 装置2012はまた、装置2012が他の装置と通信することを可能にする通信接続2026をも含むことができる。通信接続2026は、限定はしないが、モデム、ネットワークインターフェースカード(NIC)、一体型ネットワークインターフェース、無線周波数送信機/受信機、赤外線ポート、USB接続、またはコンピューティング装置2012を他のコンピューティング装置に接続する他のインターフェースを含むことができる。通信接続2026は、ワイヤード接続またはワイヤレス接続を含むことができる。通信接続2026は通信媒体を送信および/または受信することができる。
[0092] 「コンピュータ可読媒体」という用語は通信媒体を含むことができる。通信媒体は通常、コンピュータ可読命令または他のデータを搬送波や他の移送機構などの「被変調データ信号」で実施し、任意の情報送達媒体を含む。「被変調データ信号」という用語は、信号内に情報を符号化するように設定または変更される特徴のうちの1つまたは複数を有する信号を含むことができる。
[0093] 装置2012は、キーボード、マウス、ペン、音声入力装置、タッチ入力装置、赤外線カメラ、ビデオ入力装置、および/または任意の他の入力装置などの入力装置2024を含むことができる。1つまたは複数のディスプレイ、スピーカ、プリンタ、および/または任意の他の出力装置などの出力装置2022も装置2012内に含めることができる。ワイヤード接続、ワイヤレス接続、またはそれらの任意の組合せを介して、入力装置2024および出力装置2022を装置2012に接続することができる。一実施形態では、別のコンピューティング装置からの入力装置または出力装置を、コンピューティング装置2012のための入力装置2024または出力装置2022として使用することができる。
[0094] バスなどの様々な相互接続によってコンピューティング装置2012の構成要素を接続することができる。そのような相互接続は、PCI ExpressなどのPeripheral Component Interconnect(PCI)、ユニバーサルシリアルバス(USB)、ファイアワイヤ(IEEE 1394)、光バス構造などを含むことができる。別の実施形態では、コンピューティング装置2012の構成要素をネットワークによって相互接続することができる。たとえば、メモリ2018は、ネットワークによって相互接続される異なる物理位置に位置する複数の物理メモリユニットからなることができる。
[0095] コンピュータ可読命令を格納するために利用される記憶装置を、ネットワークを介して分散させることができることを当業者は理解されよう。たとえば、ネットワーク2028を介してアクセス可能なコンピューティング装置2030が、本明細書で与えられる1つまたは複数の実施形態を実装するためにコンピュータ可読命令を格納することができる。コンピューティング装置2012は、コンピューティング装置2030にアクセスし、実行のためにコンピュータ可読命令の一部またはすべてをダウンロードすることができる。あるいは、コンピューティング装置2012は、必要に応じてコンピュータ可読命令のいくつかの部分をダウンロードすることができ、またはいくつかの命令をコンピューティング装置2012で実行し、いくつかをコンピューティング装置2030で実行することができる。
[0096] 実施形態の様々な動作が本明細書で与えられる。一実施形態では、記載の動作のうちの1つまたは複数は、1つまたは複数のコンピュータ可読媒体上に格納されたコンピュータ可読命令を構成することができ、コンピュータ可読命令は、コンピューティング装置によって実行される場合、記載の動作をコンピューティング装置に実施させる。動作のうちのいくつかまたはすべてが説明される順序を、これらの動作が必ず順序依存であることを示唆するものと解釈すべきではない。この説明の恩恵を得る当業者は代替順序を理解されよう。さらに、本明細書で与えられる各実施形態で、すべての動作が必ずしも存在するわけではないことを理解されよう。
[0097] さらに、別段に規定されていない限り、「第1の」および/または「第2の」などは、時間的側面、空間的側面、順序などを示唆するものではない。むしろ、そのような用語は、特徴、要素、項目などについての識別子、名前などとして使用されるにすぎない。たとえば、第1のオブジェクトおよび第2のオブジェクトは一般に、オブジェクトAおよびオブジェクトB、または2つの異なるもしくは同一のオブジェクト、または同じオブジェクトに対応する。
[0098] さらに、本明細書では、「例示的(exemplary)」は、必ずしも有利なものとしてではなく、例、実例、例示などの役割を果たすことを意味するために使用される。本明細書では、「または(or)」は、排他的な「または」ではなく、包含的な「または」を意味するものとする。さらに、本願で使用される「a」および「an」は、別段に規定されていない限り、または文脈から単数形を対象とすることが明らかでない限り、「1つまたは複数(one or more)」を意味するように解釈される。さらに、Aおよび/またはBなどのうちの少なくとも1つは一般に、AまたはBあるいはAとBの両方を意味する。さらに、「含む(includes)」、「有する(having、has)」、「と共に(with)」、および/またはそれらの変形が詳細な説明または特許請求の範囲で使用される範囲で、そのような用語は、「備える(comprising)」と同様に包含的なものとする。
[0099] さらに、1つまたは複数の実装に関して本開示を図示および説明したが、本明細書および添付の図面を読み、理解することに基づいて、等価な変更および修正が当業者には思い浮かぶであろう。本開示は、すべてのそのような修正および変更を含み、以下の特許請求の範囲のみによって限定される。特に、上述の構成要素(たとえば、要素、リソースなど)によって実施される様々な機能に関して、そのような構成要素を説明するために使用される用語は、別段に規定されていない限り、本明細書で示される本開示の例示的実装内の機能を実施する、開示される構造に構造的には等価ではないとしても、説明した構成要素の指定の機能を実施する(たとえば、機能的に等価である)任意の構成要素に対応するものとする。さらに、本開示の特定の特徴をいくつかの実装のうちのただ1つに関して開示したが、任意の所与または特定の応用例とって望ましく、有利となるように、そのような特徴を他の実装の1つまたは複数の他の特徴と組み合わせることができる。