(57)【要約】  バンドルパッケージを生成し、バンドルパッケージにデジタル署名し、バンドルパッケージを選択的に乱し、かつ／またはバンドルパッケージから取り出された１つまたは複数のリソースパッケージを索引付けする１つまたは複数の技法および／またはシステムが提供される。すなわち、バンドルパッケージ（たとえば、アプリケーションまたはゲームバンドルパッケージ）が、様々なコンピューティング環境（たとえば、オペレーティングシステム、プロセッサなど）上で実行するように構成されたアプリケーションコードを含む１つまたは複数のａｐｐパッケージを含む。バンドルパッケージは、アプリケーションについての任意選択のユーザ体験機能（たとえば、フランス語サポート、高解像度テクスチャ、ゲーミングパッドサポートなど）を提供するために使用される補助データを含む１つまたは複数のリソースパッケージを含むことができる。このようにして、クライアント装置は、関連する可能性があるバンドルパッケージの部分を選択的にダウンロードすることができ、それによってバンドルパッケージの不要な部分を得るために普通なら使用されるダウンロード帯域幅、記憶空間、またはリソースを軽減することができる（たとえば、タブレット装置は単に低解像度テクスチャをダウンロードすることができる）。
2016522649.tif 000002
【特許請求の範囲】
【請求項１】
バンドルパッケージにデジタル署名する方法であって、
アプリケーションに関連するバンドルパッケージについて第１のデジタルシグニチャ操作を実施することを含み、前記バンドルパッケージが、第１のａｐｐパッケージおよび第１のリソースパッケージを含み、前記第１のデジタル署名操作が、
デジタル署名証明書を利用して第１のａｐｐパッケージシグニチャで前記第１のａｐｐパッケージにデジタル署名し、署名済みの第１のａｐｐパッケージを作成すること、
前記デジタル署名証明書を利用して第１のリソースパッケージシグニチャで前記第１のリソースパッケージにデジタル署名し、署名済みの第１のリソースパッケージを作成すること、ならびに
前記デジタル署名証明書を利用して、バンドルパッケージシグニチャで署名された署名済みバンドルパッケージを作成することであって、シグニチャプロパティのセットが、前記第１のａｐｐパッケージシグニチャ、前記第１のリソースパッケージシグニチャ、および前記バンドルパッケージシグニチャによって共有されること
を含む方法。
【請求項２】
前記第１のデジタル署名操作が、前記デジタル署名証明書を利用する単一の署名操作に対応する請求項１に記載の方法。
【請求項３】
第１のデジタル署名操作を前記実施することが、
前記バンドルパッケージから前記第１のａｐｐパッケージおよび前記第１のリソースパッケージを抽出済みの第１のａｐｐパッケージおよび抽出済みの第１のリソースパッケージとして抽出すること、
前記抽出済みの第１のａｐｐパッケージに署名済み抽出済みの第１のａｐｐパッケージとしてデジタル署名すること、および
前記抽出済みの第１のリソースパッケージに署名済み抽出済みの第１のリソースパッケージとしてデジタル署名すること
を含む請求項１に記載の方法。
【請求項４】
前記署名済み抽出済みの第１のａｐｐパッケージを前記バンドルパッケージに前記署名済みの第１のａｐｐパッケージとして返すこと、
前記署名済み抽出済みの第１のリソースパッケージを前記バンドルパッケージに前記署名済みの第１のリソースパッケージとして返すこと、および
前記バンドルパッケージに署名して、前記署名済みバンドルパッケージを作成すること
を含む請求項３に記載の方法。
【請求項５】
前記署名済み抽出済みの第１のａｐｐパッケージを前記署名済みの第１のａｐｐパッケージとして利用し、前記署名済み抽出済みの第１のリソースパッケージを前記署名済みの第１のリソースパッケージとして利用して、新しいバンドルパッケージを作成すること、および
前記バンドルパッケージシグニチャを利用して前記新しいバンドルパッケージに署名し、前記署名済みバンドルパッケージを作成すること
を含む請求項３に記載の方法。
【請求項６】
前記第１のａｐｐパッケージに前記デジタル署名することが、
定位置で前記第１のａｐｐパッケージに署名すると共に、前記第１のａｐｐパッケージが前記バンドルパッケージ内に含まれること
を含む請求項１に記載の方法。
【請求項７】
バンドルパッケージにデジタル署名するシステムであって、
アプリケーションに関連するバンドルパッケージについて第１のデジタルシグニチャ操作を実施するように構成されたデジタルシグニチャ構成要素を備え、前記バンドルパッケージが、第１のａｐｐパッケージおよび第１のリソースパッケージを含み、前記第１のデジタル署名操作が、
デジタル署名証明書を利用して第１のａｐｐパッケージシグニチャで前記第１のａｐｐパッケージにデジタル署名し、署名済みの第１のａｐｐパッケージを作成すること、
前記デジタル署名証明書を利用して第１のリソースパッケージシグニチャで前記第１のリソースパッケージにデジタル署名し、署名済みの第１のリソースパッケージを作成すること、ならびに
前記デジタル署名証明書を利用して、バンドルパッケージシグニチャで署名された署名済みバンドルパッケージを作成することであって、シグニチャプロパティのセットが、前記第１のａｐｐパッケージシグニチャ、前記第１のリソースパッケージシグニチャ、および前記バンドルパッケージシグニチャによって共有されること
を含むシステム。
【請求項８】
前記デジタルシグニチャ構成要素が、
定位置で前記第１のａｐｐパッケージに署名すると共に、前記第１のａｐｐパッケージが前記バンドルパッケージ内に含まれ、
定位置で前記第１のリソースパッケージに署名すると共に、前記第１のリソースパッケージが前記バンドルパッケージ内に含まれる
ように構成される請求項７に記載のシステム。
【請求項９】
前記デジタルシグニチャ構成要素が、
前記第１のａｐｐパッケージおよび前記第１のリソースパッケージを前記バンドルパッケージから抽出済みの第１のａｐｐパッケージおよび抽出済みの第１のリソースパッケージとして抽出し、
前記抽出済みの第１のａｐｐパッケージに署名済み抽出済みの第１のａｐｐパッケージとしてデジタル署名し、
前記抽出済みの第１のリソースパッケージに署名済み抽出済みの第１のリソースパッケージとしてデジタル署名し、
前記署名済み抽出済みの第１のａｐｐパッケージを前記バンドルパッケージに前記署名済みの第１のａｐｐパッケージとして返し、
前記署名済み抽出済みの第１のリソースパッケージを前記バンドルパッケージに前記署名済みの第１のリソースパッケージとして返し、
前記バンドルパッケージに署名して、前記署名済みバンドルパッケージを作成する
ように構成される請求項７に記載のシステム。
【請求項１０】
前記署名済みバンドルパッケージが署名済みの第２のリソースパッケージを含み、システムが、
クライアント装置からバンドル取得要求を受信することであって、前記バンドル取得要求が、前記署名済みの第１のａｐｐパッケージおよび署名済みの第１のリソースパッケージを指定すること、および
シグニチャ検証およびアプリケーションのインストールのために、前記署名済みの第１のａｐｐパッケージと、前記署名済みの第２のリソースパッケージではなく、前記署名済みの第１のリソースパッケージとを前記クライアント装置に選択的に提供すること
を行うように構成されたａｐｐ配布構成要素
を備える請求項７に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  多くのユーザは、アプリケーションを利用して、ｅメールをチェックすること、ビデオゲームをプレイすること、写真を共有すること、ソーシャルネットワークを通じて対話すること、バンキング、および／または極めて多数の他の活動などの様々な活動を実施する。ユーザは、様々な装置および／またはコンピューティング環境を通じてそのようなアプリケーションを実行することがあるので、アプリケーション開発者は、複数のプロセッサ、オペレーティングシステム、言語、ディスプレイスケール、解像度、グラフィックスカードなどをサポートするアプリケーション展開パッケージを作成することがある。したがって、アプリケーション展開パッケージは、そのすべてが特定の装置またはコンピューティング環境によって使用されないことのある比較的大量のデータを含むことがある。たとえば、ユーザは、ａｐｐマーケットプレイスからタブレット装置上にドローイングアプリケーションをダウンロードすることがある。ドローイングアプリケーションは、タブレット装置で良好に機能する中間解像度テクスチャを含むことがあるが、より小型のスマートフォンのための低解像度テクスチャと、パーソナルコンピュータのための高解像度テクスチャをも含むことがある。ドローイングアプリケーションは、１０個の言語のためのサポートを含むことがある。タブレット装置は、中間解像度テクスチャと、ユーザによって使用される言語とを利用することがあるが、低解像度テクスチャ、高解像度テクスチャ、および他の９つの言語を利用しないことがある。ドローイングアプリケーションのそのような未使用の機能は、ドローイングアプリケーションのタブレット装置上へのダウンロード、展開、および実行中に、ダウンロード帯域幅、記憶空間、およびコンピューティングリソースを不必要に消費することがある。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
[0002]  この概要は、以下の詳細な説明でさらに説明される概念の抜粋を簡略化した形で紹介するために与えられる。この概要は、特許請求される主題の主要な要素または不可欠の特徴を特定するためのものではなく、特許請求される主題の範囲を限定するために用いられるものでもない。
【０００３】
[0003]  とりわけ、アプリケーションのためのバンドルパッケージを生成し、バンドルパッケージにデジタル署名し、バンドルパッケージの部分を選択的に取り出し、アプリケーションに関連するリソースパッケージを索引付けし、ゲームのためのゲームバンドルパッケージを配布およびインストールする１つまたは複数のシステムおよび／または技法が本明細書で提供される。
【課題を解決するための手段】
【０００４】
[0004]  アプリケーションのためのバンドルパッケージを生成するいくつかの実施形態では、アプリケーションのためのバンドルパッケージ内に含めるために、１つまたは複数のａｐｐパッケージを識別することができる。第１のａｐｐパッケージは、特定のコンピュータアーキテクチャ（たとえば、第１のプロセッサアーキテクチャ、第２の異なるプロセッサアーキテクチャなど）および／または特定のオペレーティングシステム（たとえば、タブレットオペレーティングシステム、デスクトップオペレーティングシステム、クラウドベースのオペレーティングシステムなど）などの第１のコンピューティング環境上で実行するように構成された第１のアプリケーションコード（たとえば、実行可能バイナリファイル）を含むことができる。バンドルパッケージ内に含めるために、１つまたは複数のリソースパッケージを識別することができる。リソースパッケージは、アプリケーションについての任意選択のユーザ体験機能（たとえば、解像度テクスチャデータ、言語データ、ＤｉｒｅｃｔＸ（登録商標）などのマルチメディアアプリケーションプログラムインターフェース（API）バージョンデータ、現代リソース技術（MRT）によってロードすることのできる領域関連データ、および／またはユーザの体験などを調整することを容易にするために使用することのできる任意の他の任意の他のリソース、データなど）を含むことができる。たとえば、第１のリソースパッケージは、アプリケーションについての第１のユーザ体験機能を提供するために使用される第１の補助データを含むことができる。１つまたは複数のａｐｐパッケージおよび１つまたは複数のリソースパッケージを含むようにバンドルパッケージを生成することができる。このようにして、アプリケーションのインストールのためにａｐｐパッケージならびに／あるいは１つまたは複数のリソースパッケージを選択的にダウンロードすることができる（たとえば、タブレット装置は第１のプロセッサアーキテクチャａｐｐパッケージおよび中間解像度テクスチャリソースパッケージをダウンロードすることができる）。
【０００５】
[0005]  バンドルパッケージにデジタル署名するいくつかの実施形態では、アプリケーションに関連するバンドルパッケージについて第１のデジタルシグニチャ操作が実施される。バンドルパッケージは、第１のａｐｐパッケージおよび第１のリソースパッケージを含む。一例では、バンドルパッケージは、１つまたは複数のａｐｐパッケージならびに／あるいは１つまたは複数のリソースパッケージを含む。デジタル署名操作を実施して（たとえば、単一のデジタル署名証明書を使用する単一の署名操作として実施して）、第１のａｐｐパッケージ、第１のリソースパッケージ、およびバンドルパッケージにデジタル署名することができる。たとえば、第１のａｐｐパッケージが、デジタル署名証明書を利用して第１のａｐｐパッケージシグニチャで署名され、第１のリソースパッケージが、デジタル署名証明書を利用して第１のリソースパッケージシグニチャで署名され、バンドルパッケージが、デジタル署名証明書を利用してバンドルパッケージシグニチャで署名される。デジタル署名操作が同一のデジタル署名証明書を使用して（たとえば、かつ／または単一の署名操作を通じて）第１のａｐｐパッケージ、第１のリソースパッケージ、およびバンドルパッケージに署名するので、第１のａｐｐパッケージシグニチャ、第１のリソースパッケージシグニチャ、および／またはバンドルパッケージシグニチャでシグニチャプロパティのセットを共有することができる（たとえば、デジタル署名証明書所有者、権限の連鎖証明、鍵使用、シグニチャ検証日、暗号化強度、および／またはタイムスタンプ）。このようにして、バンドルパッケージおよび／またはその部分をクライアント装置によって選択的に、かつ／または別々にダウンロードし、共有シグニチャプロパティに基づいて効率的にクライアント装置によって認証することができる。
【０００６】
[0006]  アプリケーションに関連するバンドルパッケージの部分を選択的に取り出すいくつかの実施形態では、インストールのためのアプリケーションに関連するバンドルパッケージを識別することができる。たとえば、バンドルパッケージを、ａｐｐマーケットプレイスを介するダウンロードのために利用可能な、適用可能な写真共有に関連付けることができる。アプリケーションがクライアント装置上で実行するための適用性コンテキストを決定することできる。たとえば、適用性コンテキストは、解像度、画面スケール、当該の言語のセット、マルチメディアＡＰＩ機能セット、グラフィックス処理装置（GPU）、またはクライアント装置についての他のユーザ体験コンテキストを指定することができる（たとえば、ドイツ語を話すユーザのスマートフォンについての適用性コンテキストは、言語、ハードウェア能力、ディスプレイ能力などに基づいて、英語を話すユーザのデスクトップについての適用性コンテキストとは異なることがある）。適用性コンテキストによって指定されるコンピューティング環境コンテキスト（たとえば、プロセッサアーキテクチャ、オペレーティングシステムタイプなど）に対応するアプリケーションコードを含む第１のａｐｐパッケージに基づいて、バンドルパッケージから第１のａｐｐパッケージを選択的に取り出すことができる。バンドルパッケージのリソースパッケージのセット内の第１のリソースパッケージに対応する適用性コンテキストに応答して、バンドルパッケージから第１のリソースパッケージを選択的に取り出すことができる（たとえば、スマートフォンについてドイツ語リソースパッケージを取り出すことができる）。このようにして、適用性コンテキストに対応する１つまたは複数のリソースパッケージを選択的に取り出すことができると共に、適用性コンテキストに対応しないリソースパッケージは取り出されない（たとえば、取り出された場合、ダウンロード帯域幅を不必要に消費し、かつ／またはスマートフォンによって使用可能ではないアプリケーションの部分／機能の格納を必要とすることがある高解像度ゲーミングテクスチャは、スマートフォンについて取り出されないことがある）。
【０００７】
[0007]  クライアント装置上のアプリケーションについてのリソースパッケージを索引付けするいくつかの実施形態では、第１のリソースパッケージおよび第２のリソースパッケージが、クライアント装置上で識別される。一例では、第１のリソースパッケージおよび第２のリソースパッケージがアプリケーションについて選択的および／または個別にダウンロードされた可能性があり、したがって、当初は、どのように第１のリソースパッケージおよび第２のリソースパッケージを使用してアプリケーションについての調整されたユーザ体験を提供することができるかを指定する論理関係なしに、第１のリソースパッケージおよび第２のリソースパッケージをクライアント装置上に格納することができる。第１のリソースパッケージは、アプリケーションについての第１の任意選択のユーザ体験機能を提供するために使用される第１の補助データを含む（たとえば、ソーシャルネットワークａｐｐについてのドイツ語ユーザインターフェース体験を提供するために使用される１つまたは複数のドイツ語テキスト文字列）。第２のリソースパッケージは、アプリケーションについての第２の任意選択のユーザ体験機能を提供するために使用される第２の補助データを含む（たとえば、ソーシャルネットワークａｐｐについてのフランス語ユーザインターフェース体験を提供するために使用される１つまたは複数のフランス語テキスト文字列）。
【０００８】
[0008]  第１のリソースパッケージについての第１のリソース索引が、第１のリソースパッケージについての第１のリソースデータ（たとえば、１つまたは複数のドイツ語文字列）および／または第１のリソース適用性データ（たとえば、ドイツ語データを使用して、ドイツ語を話すユーザのためのテキストを表示する）を記述することができる。第２のリソースパッケージについての第２のリソース索引が、第２のリソースパッケージについての第２のリソースデータ（たとえば、１つまたは複数のフランス語文字列）および／または第２のリソース適用性データ（たとえば、フランス語データを使用して、フランス語を話すユーザのためのテキストを表示する）を記述することができる。第１のリソース索引と第２のリソース索引をマージ済みリソース索引としてマージすることができる。マージ済みリソース索引は、ドイツ語テキスト文字列および／またはフランス語テキスト文字列などの、第１のリソースパッケージおよび／または第２のリソースパッケージ内の個々のリソースを記述することができる。マージ済みリソース索引を評価して、アプリケーションの実行のために１つまたは複数のリソースを選択的に利用することができる。一例では、ソーシャルネットワークａｐｐについてのａｐｐパッケージ内でマージ済み索引への参照を作成することができる。ａｐｐパッケージを使用するソーシャルネットワークａｐｐの実行時に、参照を使用してマージ済み索引に照会し、ソーシャルネットワークａｐｐを実行するためにどのリソースが利用可能か、かつ／または関連するかを識別することができる（たとえば、第１のリソースパッケージ内のドイツ語のウェルカムメッセージテキスト文字列が、ドイツを話す現ユーザに対するウェルカムメッセージウィンドウに関連することがあり、高コントラストディスプレイリソースパッケージ内の高コントラストユーザインターフェース要素が、現ディスプレイ設定が高コントラストモードに設定されるときに関連することがあり、以下同様である）。
【０００９】
[0009]  ゲームバンドルパッケージを介してゲームを配布するいくつかの実施形態では、ゲームについてのゲームバンドルパッケージを生成することができる。ゲームバンドルパッケージは１つまたは複数のコアゲームパッケージを含むことができる。第１のコアゲームパッケージは、第１のコンピューティング環境（たとえば、ｘ８６プロセッサ）上で実行されるように構成されたゲームコード（たとえば、実行可能バイナリファイル）を含む。ゲームバンドルパッケージは１つまたは複数のリソースゲームパッケージを含むことができる。第１のリソースゲームパッケージは、ゲームについての第１の任意選択のユーザ体験機能を提供するために使用される第１の補助ハードウェア認識データ（たとえば、特定のディスプレイ品質でのテクスチャ画像、地形データ、キャラクタ幾何形状、および／または他のゲーム視覚化データ）を含むことができる。ゲームの選択的ダウンロードおよび／またはインストールのために、１つまたは複数のコアゲームパッケージならびに／あるいは１つまたは複数のリソースゲームパッケージを公開することができる。このようにして、クライアント装置は、クライアント装置上で望ましいゲーミング体験を提供することのできるいくつかのリソースゲームパッケージを選択的にダウンロードすることができる（たとえば、タブレット装置は、ダウンロード帯域幅および／または記憶空間を保持するために中間品質テクスチャをダウンロードすることができるのに対して、ＰＣは高品質テクスチャをダウンロードすることができる）。
【００１０】
[0010]  上記および関連する目的の達成に対して、以下の説明および添付の図面が、いくつかの例示的態様および実装を説明する。これらは、１つまたは複数の態様を利用することのできる様々な方式のうちのいくつかを示すだけである。本開示の他の態様、利点、および新規な特徴は、添付の図面と共に考慮するときに以下の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【００１１】
【図１】[0011]アプリケーションについてのバンドルパッケージを生成する例示的方法を示す流れ図である。
【図２】[0012]バンドルパッケージを生成する例示的システムを示す構成要素ブロック図である。
【図３】[0013]リソースパッケージ作成トランザクションを容易にする一例の図である。
【図４】[0014]バンドルパッケージの部分を選択的に配布する例示的システムを示す構成要素ブロック図である。
【図５】[0015]バンドルパッケージにデジタル署名する例示的方法を示す流れ図である。
【図６】[0016]抽出技法を利用してバンドルパッケージに署名する例示的システムを示す構成要素ブロック図である。
【図７】[0017]新しいバンドルパッケージから署名済みバンドルパッケージを作成する例示的システムを示す構成要素ブロック図である。
【図８】[0018]定位置でバンドルパッケージ内のパッケージにデジタル署名する例示的システムを示す構成要素ブロック図である。
【図９】[0019]署名済みバンドルパッケージおよび／またはその中の署名済みパッケージを配布する例示的システムを示す構成要素ブロック図である。
【図１０】[0020]アプリケーションに関連するバンドルパッケージの部分を選択的に取り出す例示的方法を示す流れ図である。
【図１１】[0021]アプリケーションに関連するバンドルパッケージの部分を選択的に取り出すための例示的システムを示す構成要素ブロック図である。
【図１２】[0022]アプリケーションに関連するバンドルパッケージの部分を選択的に取り出すための例示的システムを示す構成要素ブロック図である。
【図１３】[0023]クライアント装置上のアプリケーションについてのリソースパッケージを索引付けする例示的方法を示す流れ図である。
【図１４】[0024]クライアント装置上のアプリケーションについてのリソースパッケージを索引付けする例示的システムを示す構成要素ブロック図である。
【図１５】[0025]アプリケーションの実行中にマージ済み索引を利用する例示的システムを示す構成要素ブロック図である。
【図１６】[0026]ゲームバンドルパッケージを介してゲームを配布する例示的方法を示す流れ図である。
【図１７】[0027]ゲームバンドルパッケージを介してゲームをインストールする例示的方法を示す流れ図である。
【図１８】[0028]ゲームバンドルパッケージを介してゲームを配布する例示的システムを示す構成要素ブロック図である。
【図１９】[0029]本明細書に記載の条項のうちの１つまたは複数を実施するように構成されたプロセッサ実行可能命令を含めることのできる例示的コンピュータ可読媒体の図である。
【図２０】[0030]本明細書に記載の条項のうちの１つまたは複数を実装することのできる例示的コンピューティング環境を示す図である。
【発明を実施するための形態】
【００１２】
[0031]  次に、同様の要素を参照するために全体を通じて同様の参照番号が全般的に使用される図面を参照しながら、特許請求される主題を説明する。以下の説明では、説明の都合上、特許請求される主題の理解を与えるために多数の特定の詳細を説明する。しかし、特許請求される主題をこれらの特定の詳細なしに実施できることは明らかであることがある。別の例では、特許請求される主題の説明を容易にするために、構造および装置をブロック図形式で示す。
【００１３】
[0032]  本明細書で提供されるように、ほとんどまたは全く重複なしに、リソースパッケージ、ａｐｐパッケージなどのソフトウェアコンポーネントをエンドユーザマシンに選択的に提供することができ、したがってエンドユーザマシンは、エンドユーザマシンが不必要なソフトウェアコンポーネントをダウンロード、格納、および／またはインストールする必要なしに、エンドユーザマシンによって使用されるソフトウェアコンポーネントを単に備えるだけである。たとえば、クライアント装置などのエンドユーザマシンは、多種多様なソフトウェアおよび／またはハードウェア特性を備えることがある（たとえば、タブレットは、デスクトップゲーミング装置とは異なるプロセッサ、オペレーティングシステム、グラフィックス処理装置、および／または様々な特性を備えることがある）。そのようなクライアント装置上で望ましい体験を提供するために、多くのａｐｐは、アプリケーション資産（たとえば、特定のａｐｐのテクスチャ、文字列、イメージ、ユーザインターフェース要素、および／または他のソフトウェアコンポーネント）をそれぞれのクライアント装置に対してカスタマイズすることができる。遺憾ながら、このことは、開発者および／またはユーザにとって問題となることがある。開発者は、かなりの時間および／またはリソースを費やして、そのような多種多様なクライアント装置について別々のインストールパッケージを作成することがあるからである。あるいは、開発者は、アプリケーション資産のすべてを含む単一のインストールパッケージを作成することがあり、単一のインストールパッケージは、アプリケーション資産の一部（小部分）だけがクライアント装置によって利用される場合に、多量のアプリケーション資産をダウンロードおよび／または格納するためにユーザおよび／またはクライアント装置に対して負担を課すことがある。
【００１４】
[0033]  したがって、本明細書で提供されるように、ａｐｐのそれぞれのアプリケーション資産（たとえば、リソースパッケージおよび／またはａｐｐパッケージ内の資産）について、開発者は、クライアント装置にダウンロードするためのソフトウェアコンポーネントを選択する（たとえば、リソースパッケージおよび／またはａｐｐパッケージを選択的にダウンロードする）ために使用することのできるクライアント装置の特性を識別することができる。一例では、ａｐｐパッケージは、クライアント装置内のＣＰＵのアーキテクチャ（たとえば、ｘ８６、ｘ６４など）に依存することのあるａｐｐバイナリおよび／または実行可能ファイルを含むことができる。別の例では、グラフィックスリソースパッケージは、クライアント装置内のグラフィックス処理装置のレベルまたは世代（たとえば、ＤＸ９、ＤＸ１０、またはＤＸ１１）に依存することのあるテクスチャおよび／またはシェーダアプリケーション資産を含むことができる。別の例では、ユーザインターフェースリソースパッケージは、クライアント装置のディスプレイ解像度（たとえば、９６＊１．０、＊１．４、または＊１．８などのモニタＤＰＩ）に依存することのあるダイアログボックスおよび／または他のユーザインターフェース要素資産を含むことができる。別の例では、テクスチャリソースパッケージは、クライアント装置の言語に依存することのあるインストラクション資産を含むことができる。
【００１５】
[0034]  開発者はアプリケーション資産をサブミットすることができ、クライアント装置の特性によってアプリケーション資産をラベリングすることができる。ソフトウェア配布システムは、クライアント装置による検索のために、開発者からのそのような情報を搭載することができる。クライアント装置上へのインストールが行われるとき、クライアント装置の装置特性が識別される。インストーラは、クライアント装置の装置特性に合致する（たとえば、１つまたは複数のリソースパッケージ内に含まれる）アプリケーション資産のセットをインストールすることができ、合致しないアプリケーション資産をインストールすることを控えることができる。このようにして、開発者は、クライアント装置によるインストールのためにアプリケーション資産を１度だけ提供することができ、ユーザは、クライアント装置によって使用されるアプリケーション資産をクライアント装置上に単にダウンロードおよび／またはインストールすることができる。
【００１６】
[0035]  アプリケーションについてのバンドルパッケージを生成する一実施形態を、図１の例示的方法１００で示す。１０２で方法が開始する。１０４では、アプリケーションについてのバンドルパッケージ内に含めるための１つまたは複数のａｐｐパッケージを識別することができる。たとえば、第１のａｐｐパッケージは、第１のコンピューティング環境（たとえば、第１のプロセッサタイプ、タブレットオペレーティングシステムなど）上で実行するように構成された第１のアプリケーションコードを含むことができ、第２のａｐｐパッケージは、第２のコンピューティング環境（たとえば、第２のプロセッサタイプ、デスクトップオペレーティングシステムなど）上で実行するように構成された第２のアプリケーションコードを含むことができ、以下同様である。このようにして、アプリケーションは、１つまたは複数のａｐｐパッケージに基づいて、コンピュータアーキテクチャやオペレーティングシステムなどの様々なコンピューティング環境をサポートすることができる。一例では、ａｐｐパッケージは、クライアント装置上でアプリケーションのコアバージョンを走らせるために実行することのできる実行可能バイナリファイルを含むことができる。アプリケーションはアプリケーションについての多種多様な任意選択のユーザ体験機能をサポートすることができるので、そのような機能を１つまたは複数のａｐｐパッケージから分離することができ、アプリケーションコードとは別々の選択的な、かつ／または任意選択のダウンロードのために公開することができる。このようにして、クライアント装置は、クライアント装置またはクライアント装置のユーザに関連する任意選択の機能（たとえば、ユーザの特定の言語についてのサポート、ゲーミング装置のための高解像度テクスチャ、タブレット装置のための低解像度テクスチャなど）を単にダウンロードすることができる。したがって、リソースパッケージを通じてそのような任意選択のユーザ体験機能を提供することができる。
【００１７】
[0036]  １０６では、バンドルパッケージ内に含めるための１つまたは複数のリソースパッケージを識別することができる。たとえば、第１のリソースパッケージは、アプリケーションについての第１の任意選択のユーザ体験機能を提供するために使用される第１の補助データ（たとえば、テクスチャデータ、アイコンデータ、特定の言語の文字列、マルチメディアＡＰＩ機能、特定の解像度のイメージなど）を含むことができ、第２のリソースパッケージは、アプリケーションについての第２の任意選択のユーザ体験機能を提供するために使用される第２の補助データ含むことができ、以下同様である。リソースパッケージが本明細書で提供される例に限定されないこと、およびリソースパッケージが、ユーザの体験を調整するために使用することのできる、言語、ディスプレイ機能、ハードウェア機能、ソフトウェア機能、ユーザインターフェース機能、および／または任意の他の機能に関連することがあるような多種多様な任意の１つまたは複数のリソース（たとえば、現代のリソース技術によってロードすることができる任意のデータなど）を含むことができることを理解されたい。一例では、リソースパッケージは、アプリケーションについての任意選択の言語ユーザ体験機能を含むことができる。別の例では、リソースパッケージは、ユーザに対して調整することのできる任意選択のユーザ体験機能（たとえば、好ましいユーザ入力モード、高コントラスト設定、ユーザの位置など）を含むことができる。別の例では、リソースパッケージは、アプリケーションについての任意選択のディスプレイ品質ユーザ体験機能（たとえば、解像度データ、画面スケールデータ、マルチメディアＡＰＩデータなど）を含むことができる。別の例では、リソースパッケージは、クライアント装置のハードウェア能力に依存することのある任意選択のハードウェア認識機能（たとえば、カメラを備えるクライアント装置についてのイメージキャプチャ機能、マイクロフォンまたはヘッドセットを備えるクライアント装置についてのオーディオ機能、ワイヤレス周辺機器を備えるクライアント装置についてのワイヤレス機能など）を含むことができる。別の例では、リソースパッケージは、複数のユーザ体験機能に関連するコンテンツ（たとえば、高解像度ドイツイメージ、ＤＸ９機能セットを利用する高コントラスト対話型ユーザインターフェース要素など）を備える。
【００１８】
[0037]  いくつかの実施形態では、アプリケーションについてのリソースパッケージを自動的に生成することができる。たとえば、ａｐｐパッケージを解析して、第１のａｐｐパッケージから任意選択のデータの第１のセットを識別することができる（たとえば、アプリケーションは、英語の文字列をネイティブに提供することができるが、任意選択の言語サポートとしてフランス語の文字列をも含むことができる）。第１のａｐｐパッケージから任意選択のデータの第１のセットを抽出することができる。フランス語リソースパッケージなどの任意選択のデータの第１のセットに基づいてリソースパッケージを生成することができる。一例では、（たとえば、自動的に生成された、または生成されなかった）リソースパッケージは、一タイプの複数の例（たとえば、英語リソースパッケージ、米国英語リソースパッケージ、および／または英国英語リソースパッケージなど）を含むことができる。
【００１９】
[0038]  １０８では、１つまたは複数のａｐｐパッケージならびに／あるいは１つまたは複数のリソースパッケージを含むようにバンドルパッケージを生成することができる。一例では、バンドルパッケージ、１つまたは複数のａｐｐパッケージ、ならびに／あるいは１つまたは複数のリソースパッケージにデジタル署名証明書で（たとえば、単一のデジタル署名操作中に）デジタル署名することができ、したがって、パッケージは、シグニチャプロパティのセット（たとえば、デジタル署名証明書所有者、権限の連鎖証明、鍵使用、シグニチャ検証日、シグニチャ暗号化強度、シグニチャタイムスタンプなど）を共有することができ、シグニチャプロパティのセットは、パッケージが選択的にダウンロードされたか、かつ／または個別にダウンロードされたかの如何に関わらず、クライアント装置がパッケージを効率的に検証することを可能にすることができる。一例では、バンドルパッケージ内に含めるためのバンドルマニフェストを生成することができる。バンドルマニフェストは、１つまたは複数のａｐｐパッケージについての１つまたは複数のａｐｐ説明、ならびに／あるいは１つまたは複数のリソースパッケージについての１つまたは複数のリソース説明を含むことができる。一例では、バンドルパッケージの中のａｐｐパッケージおよび／またはリソースパッケージを追加、除去、および／または修正するようにバンドルパッケージを更新することができる。たとえば、バンドルパッケージについてのバンドル更新を受信することができる。バンドル更新は、バンドルパッケージ内に含めるための新しいリソースパッケージを含むことができる。新しいリソースパッケージを含むようにバンドルパッケージを更新することができ、新しいリソースパッケージが任意選択の検索について利用可能であることを指定するようにバンドルマニフェストを更新することができる。バンドルパッケージがａｐｐマーケットプレイス認証プロセス（たとえば、正しい機能および／またはａｐｐマーケットプレイスとのコンプライアンスを検証するための自動および／または手動テスティングプロセス）によって認証された一例では、バンドルパッケージを再認証するのではなく、単に新しいリソースパッケージを認証することができる。
【００２０】
[0039]  ａｐｐマーケットプレイスを介する選択的ダウンロードのためにバンドルパッケージを公開することができる。たとえば、１つまたは複数のリソースパッケージをアプリケーションについての任意選択のダウンロードとして公開することができる。すなわち、クライアント装置上へのアプリケーションのインストールのためにａｐｐパッケージをダウンロードすることができ、１つまたは複数のリソースパッケージを任意選択によりダウンロードまたは展開して、アプリケーションについての任意選択のユーザ体験機能（たとえば、フランス語についてのサポート）を提供することができる。したがって、クライアント装置からバンドル取得要求を受信することができる。一例では、バンドル取得要求は第１のａｐｐパッケージを指定することができる。第１のａｐｐパッケージをインストールのためにクライアント装置に選択的に提供することができる。一例では、バンドル取得要求は、バンドルパッケージ内の第２のリソースパッケージを指定することができる。第１のリソースパッケージではなく、第２のリソースパッケージを、アプリケーションのインストールのためにバンドルパッケージからクライアント装置に選択的に提供することができる。別の例では、バンドル取得要求は、バンドルパッケージ内に含まれるリソースパッケージのサブセットを指定する。リソースパッケージのサブセットは、バンドルパッケージ内の１つまたは複数のリソースパッケージのすべてではないが、少なくともいくつかを指定することができる。このようにして、リソースパッケージのサブセットを、アプリケーションのインストールのためにバンドルパッケージからクライアント装置に選択的に提供することができる。１１０で方法は終了する。
【００２１】
[0040]  図２に、バンドルパッケージ２０８を生成するシステム２００の一例を示す。システム２００はバンドル生成構成要素２０６を備えることができる。アプリケーションについての１つまたは複数のａｐｐパッケージ（たとえば、ドローイングアプリケーションのａｐｐ開発者によって提供されるａｐｐパッケージデータ２０２）を識別するようにバンドル生成構成要素２０６を構成することができる。アプリケーションについての１つまたは複数のリソースパッケージ（たとえば、ａｐｐ開発者、またはリソースパッケージ開発者などの別のソースによって提供されるリソースパッケージデータ２０４）を識別するようにバンドル生成構成要素２０６を構成することができる。一例では、バンドル生成構成要素２０６は、ａｐｐパッケージを解析して、リソースパッケージを生成するために抽出および／または使用することのできる任意選択のデータを識別することができる。たとえば、ａｐｐパッケージを解析して、ドローイングアプリケーションについての任意選択のディスプレイ機能を提供することのできるマルチメディアＡＰＩバージョン２．２の機能セットを識別することができ、したがって機能セットについてリソースパッケージを作成することができる。
【００２２】
[0041]  バンドル生成構成要素２０６は、１つまたは複数のａｐｐパッケージならびに／あるいは１つまたは複数のリソースパッケージを含むように、ドローイングアプリケーションについてのバンドルパッケージ２０８を生成することができる。たとえば、バンドルパッケージ２０８は、第１のプロセッサアーキテクチャ上で実行するように構成されたアプリケーションコードを含む第１のａｐｐパッケージ２１０、第２のプロセッサアーキテクチャ上で実行するように構成されたアプリケーションコードを含む第２のａｐｐパッケージ２１２、クラウドオペレーティングシステム上で実行するように構成されたアプリケーションコードを含む第３のａｐｐパッケージ２１４、ならびに／あるいはたとえば様々なコンピュータアーキテクチャおよび／またはオペレーティングシステム上で実行するように構成された他のａｐｐパッケージを含むことができる。バンドルパッケージ２０８は、ドイツ語文字列を含む第１のリソースパッケージ２１６、フランス語文字列を含む第２のリソースパッケージ２１８、１４４０×９００の中間品質解像度画像（たとえば、または中間品質ピクセル密度）を含む第３のリソースパッケージ２２０、１９２０×１０８０の高品質解像度画像（たとえば、高品質ピクセル密度）を含む第４のリソースパッケージ２２２、マルチメディアＡＰＩバージョン２．２の機能セットを含む第５のリソースパッケージ２２４（たとえば、ａｐｐパッケージから抽出された任意選択のディスプレイ機能に基づいて第５のリソースパッケージ２２４を自動的に生成することができる）、および／またはドローイングアプリケーションについての任意選択のユーザ体験機能を提供するために使用される補助データを含む他のリソースパッケージを含むことができる。バンドル生成構成要素２０６は、バンドルパッケージ２０８を通じて入手可能な１つまたは複数のａｐｐパッケージならびに／あるいは１つまたは複数のリソースパッケージを記述するバンドルマニフェスト２２６を生成することができる。このようにして、ドローイングアプリケーション（たとえば、図４）のインストールのために、バンドルパッケージ２０８またはその中の部分の選択的ダウンロードのためにバンドルパッケージ２０８を公開することができる。
【００２３】
[0042]  図３に、リソースパッケージ作成トランザクションを容易にする一例３００を示す。すなわち、アプリケーションのａｐｐ開発者（たとえば、ドローイングアプリケーションのドローイングアプリケーション開発者３０２）は、英語のドローイングアプリケーションを実行するように構成されたアプリケーションコードを含むａｐｐパッケージを作成することができる。ａｐｐマーケットプレイス認証プロセスを通じてａｐｐパッケージを認証することができ、したがってａｐｐパッケージをバンドルパッケージ内にバンドルし、ダウンロードのためにａｐｐマーケットプレイスを通じて公開することができる。一例では、ドローイングアプリケーション開発者３０２は、スペイン語を話すユーザにとってアクセス可能なドローイングアプリケーションを有することを望むことがあるが、そのような翻訳を実施するためのリソースが欠如していることがある。したがって、リソースパッケージアウトソーシングインターフェース３０６をドローイングアプリケーション開発者３０２に対して公開することができる（たとえば、ドローイングアプリケーション開発者３０２は、リソースパッケージアウトソーシングインターフェース３０６をホストすることができるウェブサイトにアクセスすることができる）。
【００２４】
[0043]  ドローイングアプリケーション開発者３０２からリソースパッケージ作成要求３０４（たとえば、スペイン語リソースパッケージの作成の請願）を受信することができる。リソースパッケージアウトソーシングインターフェースを通じて複数のリソースパッケージ開発者に対してリソースパッケージ作成要求３０４を公開することができる。たとえば、リソースパッケージ開発者（A）３０８、リソースパッケージ開発者（B）３１０、およびリソースパッケージ開発（C）３１２は、リソースパッケージアウトソーシングインターフェース３０６をホストするウェブサイトを通じてリソースパッケージ作成要求３０４にアクセスすることができる。リソースパッケージアウトソーシングインターフェース３０６を通じて１つまたは複数のリソースパッケージ作成ビッドを（たとえば、リソースパッケージ開発者（A）３０８からリソースパッケージ作成ビッド（A）３１４を、リソースパッケージ開発者（B）３１０からリソースパッケージ作成ビッド（B）３１６を）受信することができる。リソースパッケージ作成ビッドの選択（たとえば、リソースパッケージ作成ビッド（B）３１６の選択）に応答して、ドローイングアプリケーション開発者３０２とリソースパッケージ開発者（B）３１０との間でリソースパッケージ作成トランザクションを容易にすることができる（たとえば、支払トランザクションおよび／またはスペイン語リソースパッケージの転送を容易にすることができる）。このようにして、ドローイングアプリケーションについてのバンドルパッケージ内に含めるためにリソースパッケージ開発者（B）３１０からスペイン語リソースパッケージを受信することができる。
【００２５】
[0044]  図４に、バンドルパッケージ２０８の部分を選択的に配布するシステム４００の一例を示す。システム４００は、クライアント装置４０６上のドローイングアプリケーションの選択的ダウンロードおよび／または展開のために、１つまたは複数のａｐｐパッケージ（たとえば、第１のａｐｐパッケージ２１０、第２のａｐｐパッケージ２１２、第３のａｐｐパッケージ２１４など）ならびに／あるいは１つまたは複数のリソースパッケージ（たとえば、ドイツ語文字列のための第１のリソースパッケージ２１６、フランス語文字列のための第２のリソースパッケージ２１８、１４４０×９００の中間解像度テクスチャのための第３のリソースパッケージ、１９２０×１０８０の高解像度テクスチャのための第４のリソースパッケージ、マルチメディアＡＰＩバージョン２．２のための第５のリソースパッケージなど）を公開するように構成されたａｐｐ配布構成要素４０２を備えることができる。たとえば、ａｐｐ配布構成要素４０２は、１４４０×９００解像度をネイティブにサポートし、ドイツ語を話すユーザによって使用されるタブレット装置などのクライアント装置に対してバンドルマニフェスト２２６を公開することができる。バンドルマニフェスト２２６は、１つまたは複数のａｐｐパッケージならびに／あるいは１つまたは複数のリソースパッケージなどのバンドルパッケージ２０８を記述することができる。
【００２６】
[0045]  一例では、バンドル取得要求がクライアント装置４０６から受信される。クライアント装置４０６は、第２のａｐｐパッケージ２１２を使用してドローイングアプリケーションを実行することのできる第２のプロセッサアーキテクチャを有するので、バンドル取得要求は第２のａｐｐパッケージ２１２を指定することができる。ユーザがドイツ語を話すので、バンドル取得要求は第１のリソースパッケージ２１６を指定することができる。一例では、ユーザが話さないフランス語についての第２のリソースパッケージ２１８をダウンロードおよび配置するために普通なら使用されることになるダウンロード帯域幅、記憶空間、および／またはコンピューティングリソースをクライアント装置４０６が消費しないように、バンドル取得要求は第２のリソースパッケージ２１８を指定しない。クライアント装置４０６は、１４４０×９００解像度をネイティブにサポートするので、バンドル取得要求は、第３のリソースパッケージ２２０を指定することができる。一例では、クライアント装置４０６によってサポートされない解像度のための第４のリソースパッケージ２２２をダウンロードおよび配置するために普通なら使用されることになるダウンロード帯域幅、記憶空間、および／またはコンピューティングリソースをクライアント装置４０６が消費しないように、バンドル取得要求は第４のリソースパッケージ２２２を指定しない。このようにして、ａｐｐ配布構成要素４０２は、ドローイングアプリケーションのインストールのために、第２のａｐｐパッケージ２１２、第１のリソースパッケージ２１６、および／または第３のリソースパッケージ２２０をバンドルパッケージ２０８からクライアント装置４０６に選択的に提供する（４０４）。
【００２７】
[0046]  バンドルパッケージにデジタル署名する一実施形態が、図５の例示的方法５００によって示されている。５０２で方法が開始する。アプリケーションについてのバンドルパッケージは、１つまたは複数のａｐｐパッケージならびに／あるいは１つまたは複数のリソースパッケージを含むことができる。ａｐｐパッケージは、特定のコンピューティング環境でアプリケーションを走らせるために実行することのできるアプリケーションコードを含むことができる（たとえば、第１のａｐｐパッケージは、モバイルオペレーティングシステムおよび／または第２のプロセッサアーキテクチャによって実行することのできる実行可能バイナリファイルを含むことができる）。リソースパッケージは、アプリケーションについての任意選択のユーザ体験機能を提供するように構成された補助コードを含むことができる。一例では、第１のリソースパッケージがドイツ語の文字列を含むことができる。別の例では、ディスプレイリソースパッケージが、解像度データ、画面スケールデータ、マルチメディアＡＰＩバージョンデータ、および／またはアプリケーションについての調整された視覚的体験を提供することのできる他のデータを含むことができる。バンドルパッケージ、１つまたは複数のａｐｐパッケージ、ならびに／あるいは１つまたは複数のリソースパッケージをインストールのためにクライアント装置によって選択的および／または個別にダウンロードすることができるので（たとえば、クライアント装置は、第１のａｐｐパッケージおよびフランス語の文字列を含む第２のリソースパッケージをダウンロードすることができるが、クライアント装置のユーザはドイツ語を話さないので、第１のリソースパッケージをダウンロードすることはできない）、類似のシグニチャプロパティを有するデジタルシグニチャ（たとえば、デジタル署名証明書所有者、権限の連鎖証明、鍵使用、シグニチャ検証日、シグニチャ暗号化強度、シグニチャタイムスタンプなど）でバンドルパッケージ、１つまたは複数のａｐｐパッケージ、ならびに／あるいは１つまたは複数のリソースパッケージに署名するデジタル署名操作を実施することができる。デジタルシグニチャを使用して、アプリケーションのインストールのためにバンドルパッケージ、ａｐｐパッケージ、および／またはリソースパッケージのソースおよび／またはその内のコンテンツをクライアント装置によって検証することができる。
【００２８】
[0047]  したがって、５０４では、バンドルパッケージについての第１のデジタル署名操作が実施される。一例では、デジタル署名証明書を利用する単一の署名操作を通じて第１のデジタル署名操作が実施される（たとえば、単一の署名操作中に、同一のデジタル署名証明書を使用して、バンドルパッケージ、ａｐｐパッケージ、および／またはリソースパッケージに署名することができ、したがって、そのようなパッケージが別々にダウンロードされたか、それとも個別にダウンロードされたかの如何に関わらず、そのようなパッケージは、クライアント装置によって効率的に検証することのできる類似のシグニチャプロパティを含む）。５０６では、第１のデジタル署名操作は、デジタル署名証明書を利用して第１のａｐｐパッケージシグニチャで第１のａｐｐパッケージをデジタル署名し、署名済みの第１のａｐｐパッケージを作成することを含むことができる。５０８では、第１のデジタル署名操作は、デジタル署名証明書を利用して第１のリソースパッケージシグニチャで第１のリソースパッケージをデジタル署名し、署名済みの第１のリソースパッケージを作成することを含むことができる。５１０では、署名証明書を利用してバンドルパッケージシグニチャで署名された署名済みバンドルパッケージが作成される（たとえば、ａｐｐパッケージおよび／またはリソースパッケージを最初に含むバンドルパッケージに署名することができ、署名済みａｐｐパッケージおよび署名済みリソースパッケージから新しいバンドルパッケージを作成することができ、新しいバンドルパッケージに署名することができ、以下同様である）。第１のａｐｐパッケージシグニチャ、第１のリソースパッケージシグニチャ、およびバンドルパッケージシグニチャによってシグニチャプロパティのセットを共有することができる。
【００２９】
[0048]  第１のａｐｐパッケージおよび第１のリソースパッケージに署名するいくつかの実施形態では、バンドルパッケージから第１のａｐｐパッケージおよび第１のリソースパッケージを抽出済みの第１のａｐｐパッケージおよび抽出済みの第１のリソースパッケージとして抽出することができる。抽出済みの第１のａｐｐパッケージにデジタル署名して、署名済み抽出済みの第１のａｐｐパッケージを作成することができる。抽出済みの第１のリソースパッケージにデジタル署名して、署名済み抽出済みの第１のリソースパッケージを作成することができる。一例では、署名済み抽出済みの第１のａｐｐパッケージがバンドルされたパッケージに署名済みの第１のａｐｐパッケージとして返され、署名済み抽出済みの第１のリソースパッケージがバンドルパッケージに署名済みの第１のリソースパッケージとして返される。このようにして、バンドルパッケージに署名して、署名済みバンドルパッケージを作成することができる。別の例では、署名済み抽出済みの第１のａｐｐパッケージを署名済みの第１のａｐｐパッケージとして利用し、署名済み抽出済みの第１のリソースパッケージを署名済みの第１のリソースパッケージとして利用して、新しいバンドルパッケージが作成される。バンドルパッケージシグニチャを利用して新しいバンドルパッケージに署名し、署名済みバンドルパッケージを作成することができる。別の例では、第１のａｐｐパッケージおよび／または第１のリソースパッケージが定位置で署名され、第１のａｐｐパッケージおよび／また第１のリソースパッケージがバンドルパッケージ内に含まれる。
【００３０】
[0049]  １つまたは複数のａｐｐパッケージならびに／あるいは１つまたは複数のリソースパッケージに署名するいくつかの実施形態では、１つまたは複数のａｐｐパッケージならびに／あるいは１つまたは複数のリソースパッケージが、デジタル署名証明書を使用して順次署名される。１つまたは複数のａｐｐパッケージならびに／あるいは１つまたは複数のリソースパッケージに署名するいくつかの実施形態では、１つまたは複数のａｐｐパッケージならびに／あるいは１つまたは複数のリソースパッケージに並列に署名することができる。一例では、第１のａｐｐパッケージおよび第１のリソースパッケージに並列に署名することができる。別の例では、第１のａｐｐパッケージおよび第２のａｐｐパッケージに並列に署名することができる。別の例では、第１のリソースパッケージおよび第２のリソースパッケージに並列に署名することができる。
【００３１】
[0050]  ａｐｐマーケットプレイスを介するダウンロードのために署名済みバンドルパッケージを公開することができる。１つまたは複数の署名済みリソースパッケージを、アプリケーションについての任意選択のダウンロードとして公開することができる。署名済みバンドルパッケージが署名済みの第１のリソースパッケージおよび署名済みの第２のリソースパッケージを含む一例では、クライアント装置からバンドル取得要求を受信することができる。バンドル取得要求は、署名済みの第１のａｐｐパッケージおよび署名済みの第１のリソースパッケージを指定することができる。署名済みの第１のａｐｐパッケージと、署名済みの第２のリソースパッケージではなく署名済みの第１のリソースパッケージとを、シグニチャ検証およびアプリケーションのインストールのためにクライアント装置に選択的に提供することができる。５１２で方法は終了する。
【００３２】
[0051]  図６に、抽出技法を利用してバンドルパッケージに署名するシステム６００の一例を示す。システム６００はデジタルシグニチャ構成要素６１４を含む。デジタル署名証明書６１６を利用してデジタル署名操作（たとえば、単一の署名操作）を実施して、バンドルパッケージ（たとえば、デジタル署名される前のビデオエディタアプリケーションについてのバンドルパッケージ６０２ａ）および／またはその中のパッケージにデジタル署名するようにデジタルシグニチャ構成要素６１４を構成することができる。たとえば、デジタルシグニチャ構成要素６１４は、バンドルパッケージ６０２ａから第１のａｐｐパッケージ６０４ａ、第２のａｐｐパッケージ６０６ａ、第１のリソースパッケージ６０８ａ、および第２のリソースパッケージ６１０ａを抽出することができる（６１２）。デジタルシグニチャ構成要素６１４は、デジタル署名証明書６１６を利用して第１のａｐｐパッケージシグニチャ６２０で第１のａｐｐパッケージ６０４ａにデジタル署名し、署名済み抽出済みの第１のａｐｐパッケージを作成することができる。デジタルシグニチャ構成要素６１４は、デジタル署名証明書６１６を利用して第２のａｐｐパッケージシグニチャ６２２で第２のａｐｐパッケージ６０６ａにデジタル署名し、署名済み抽出済みの第２のａｐｐパッケージを作成することができる。デジタルシグニチャ構成要素６１４は、デジタル署名証明書６１６を利用して第１のリソースパッケージシグニチャ６２４で第１のリソースパッケージ６０８ａにデジタル署名し、署名済み抽出済みの第１のリソースパッケージを作成することができる。デジタルシグニチャ構成要素６１４は、デジタル署名証明書６１６を利用して第２のリソースパッケージシグニチャ６２６で第２のリソースパッケージ６１０ａにデジタル署名し、署名済み抽出済みの第２のリソースパッケージを作成することができる。一例では、パッケージに順次または並列に署名することができる。
【００３３】
[0052]  一例では、デジタルシグニチャ構成要素６１４は、署名済み抽出済みパッケージをバンドルパッケージ６０２ａに返すことができ（６２８）、デジタル署名証明書６１６を利用してバンドルパッケージシグニチャでバンドルパッケージ６０２ａに署名し、署名済みの第１のａｐｐパッケージ６０４ｂ、署名済みの第２のａｐｐパッケージ６０６ｂ、署名済みの第１のリソースパッケージ６０８ｂ、および署名済みの第２のリソースパッケージ６１０ｂを含む署名済みバンドルパッケージ６０２ｂを作成することができる。バンドルパッケージシグニチャ、第１のａｐｐパッケージシグニチャ６２０、第２のａｐｐパッケージシグニチャ６２２、第１のリソースパッケージシグニチャ６２４、および／または第２のリソースパッケージシグニチャ６２６によってシグニチャプロパティのセット（たとえば、デジタル署名証明書所有者、権限の連鎖証明、鍵使用、シグニチャ検証日、シグニチャ暗号化強度、シグニチャタイムスタンプなど）を共有することができる。このようにして、シグニチャプロパティのセットがパッケージシグニチャによって共有されるので、クライアント装置によって効率的に署名済みバンドルパッケージ６０２ｂおよび／またはその中の署名済みパッケージを選択的および／または個別にダウンロードおよび検証することができる。
【００３４】
[0053]  図７に、新しいバンドルパッケージから署名済みバンドルパッケージ７０４を作成するシステム７００の一例を示す。システム７００はデジタルシグニチャ構成要素６１４を備える。デジタル署名証明書６１６を利用してデジタル署名操作（たとえば、単一の署名操作）を実施し、バンドルパッケージ（たとえば、デジタル署名される前のビデオエディタアプリケーションについてのバンドルパッケージ６０２ａ）および／またはその中のパッケージにデジタル署名するようにデジタルシグニチャ構成要素６１４を構成することができる。たとえば、デジタルシグニチャ構成要素６１４は、バンドルパッケージ６０２ａから第１のａｐｐパッケージ６０４ａ、第２のａｐｐパッケージ６０６ａ、第１のリソースパッケージ６０８ａ、および第２のリソースパッケージ６１０ａを抽出することができる（６１２）。デジタルシグニチャ構成要素６１４は、デジタル署名証明書６１６を利用して第１のａｐｐパッケージシグニチャ６２０で第１のａｐｐパッケージ６０４ａにデジタル署名し、署名済み抽出済みの第１のａｐｐパッケージを作成することができる。デジタルシグニチャ構成要素６１４は、デジタル署名証明書６１６を利用して第２のａｐｐパッケージシグニチャ６２２で第２のａｐｐパッケージ６０６ａにデジタル署名し、署名済み抽出済みの第２のａｐｐパッケージを作成することができる。デジタルシグニチャ構成要素６１４は、デジタル署名証明書６１６を利用して第１のリソースパッケージシグニチャ６２４で第１のリソースパッケージ６０８ａにデジタル署名し、署名済み抽出済みの第１のリソースパッケージを作成することができる。デジタルシグニチャ構成要素６１４は、デジタル署名証明書６１６を利用して第２のリソースパッケージシグニチャ６２６で第２のリソースパッケージ６１０ａにデジタル署名し、署名済み抽出済みの第２のリソースパッケージを作成することができる。一例では、パッケージに順次または並列に署名することができる。
【００３５】
[0054]  一例では、デジタルシグニチャ構成要素６１４は、署名済み抽出済みパッケージを利用して新しいバンドルパッケージを作成することができる（７０２）。デジタル署名証明書６１６を利用してバンドルパッケージシグニチャで新しいバンドルパッケージに署名し、署名済みバンドルパッケージ７０４を作成することができる。このようにして、署名済みバンドルパッケージ７０４は、（たとえば、第１のａｐｐパッケージシグニチャ６２０で署名された第１のａｐｐパッケージ６０４ａに対応する）署名済みの第１のａｐｐパッケージ６０４ｂ、（たとえば、第２のａｐｐパッケージシグニチャ６２２で署名された第２のａｐｐパッケージ６０６ａに対応する）署名済みの第２のａｐｐパッケージ６０６ｂ、（たとえば、第１のリソースパッケージシグニチャ６２４で署名された第１のリソースパッケージ６０８ａに対応する）署名済みの第１のリソースパッケージ６０８ｂ、および（たとえば、第２のリソースパッケージシグニチャ６２６で署名された第２のリソースパッケージ６１０ａに対応する）署名済みの第２のリソースパッケージ６１０ｂを含むことができる。一例では、署名済みバンドルパッケージ７０４はバンドルパッケージ６０２ａに取って代わることができる（たとえば、バンドルパッケージ６０２ａを削除することができる）。バンドルパッケージシグニチャ、第１のａｐｐパッケージシグニチャ６２０、第２のａｐｐパッケージシグニチャ６２２、第１のリソースパッケージシグニチャ６２４、および／または第２のリソースパッケージシグニチャ６２６によってシグニチャプロパティのセット（たとえば、デジタル署名証明書所有者、権限の連鎖証明、鍵使用、シグニチャ検証日、シグニチャ暗号化強度、シグニチャタイムスタンプなど）を共有することができる。このようにして、シグニチャプロパティのセットがパッケージシグニチャによって共有されるので、クライアント装置によって効率的に署名済みバンドルパッケージ７０４および／またはその中の署名済みパッケージを選択的および／または個別にダウンロードおよび検証することができる。
【００３６】
[0055]  図８に、定位置で（たとえば、ビデオエディタアプリケーションについての）バンドルパッケージ８０２内のパッケージにデジタル署名するシステム８００の一例を示す。システム８００はデジタルシグニチャ構成要素８１４を備えることができる。デジタル署名証明書８１６を利用して定位置で第１のａｐｐパッケージシグニチャで第１のａｐｐパッケージ８０４に署名し、第２のａｐｐパッケージシグニチャで第２のａｐｐパッケージ８０６に署名し、第１のリソースパッケージシグニチャで第１のリソースパッケージ８０８に署名し、第２のリソースパッケージシグニチャで第２のリソースパッケージ８１０に署名するようにデジタルシグニチャ構成要素８１４を構成することができると共に、そのようなパッケージがバンドルパッケージ８０２内に含まれる。デジタルシグニチャ構成要素８１４は、デジタル署名証明書８１６を利用してバンドルパッケージシグニチャでバンドルパッケージ８０２に署名し、署名済みバンドルパッケージを作成することができる。デジタルシグニチャ構成要素８１４は、デジタル署名証明書８１６を使用してデジタル署名操作８１２中にパッケージに署名することができるので、シグニチャプロパティのセットをパッケージシグニチャによって共有することができる。
【００３７】
[0056]  図９に、署名済みバンドルパッケージ９２４および／またはその中の署名済みパッケージを配布するシステム９００の一例を示す。署名済みバンドルパッケージ９２４は、署名済みの第１のａｐｐパッケージ９０２、署名済みの第２のａｐｐパッケージ９０４、署名済みの第１のリソースパッケージ９０６、および署名済みの第２のリソースパッケージ９０８を含むことができる。デジタル署名操作中に、バンドルパッケージシグニチャで署名済みバンドルパッケージ９２４に署名し、第１のａｐｐパッケージシグニチャ９１０で署名済みの第１のａｐｐパッケージ９０２に署名し、第２のａｐｐパッケージシグニチャ９１２で署名済みの第２のａｐｐパッケージ９０４に署名し、第１のリソースパッケージシグニチャ９１４で署名済みの第１のリソースパッケージ９０６に署名し、第２のリソースパッケージシグニチャ９１６で署名済みの第２のリソースパッケージ９０８に署名するためにデジタル署名証明書を使用しなければならないことがある。
【００３８】
[0057]  システム９００はａｐｐ配布構成要素９１８を備えることができる。クライアント装置９２２などのクライアント装置による選択的ダウンロードおよび／または個々のダウンロードのために、署名済みバンドルパッケージ９２４および／またはその中の署名済みパッケージを公開するようにａｐｐ配布構成要素９１８を構成することができる。たとえば、クライアント装置９２２からバンドル取得要求を受信することができる。バンドル取得要求は、署名済みの第１のａｐｐパッケージ９０２および署名済みの第２のリソースパッケージ９０８を指定することができる。ａｐｐ配布構成要素９１８は、署名済みバンドルパッケージ９２４によって表されるアプリケーションの検証および／またはインストールのために、署名済みの第１のａｐｐパッケージ９０２、署名済みの第２のリソースパッケージ９０８、およびシグニチャ９２６（たとえば、バンドルパッケージシグニチャ、第１のａｐｐパッケージシグニチャ９１０、および／または第２のリソースパッケージシグニチャ９１６）をクライアント装置９２２に送ることができる（９２０）。
【００３９】
[0058]  アプリケーションに関連するバンドルパッケージの部分を選択的に取り出す一実施形態が、図１０の例示的方法１０００によって示されている。１００２で方法が開始する。１００４では、インストールのためにアプリケーションに関連するバンドルパッケージを識別することができる（たとえば、ａｐｐマーケットプレイスが、選択的ダウンロードおよび／または個々のダウンロードのためにバンドルパッケージおよび／またはその中の部分を公開することができる）。バンドルパッケージは、オペレーティングシステムやコンピュータアーキテクチャなどの様々なコンピューティング環境上で実行するように構成されたアプリケーションコードを含む１つまたは複数のａｐｐパッケージ（たとえば、第１のａｐｐパッケージは、モバイルオペレーティングシステム上で実行することのできるドローイングアプリケーションについての実行可能バイナリファイルを含むことができる）、および／または任意選択のユーザ体験機能を提供するために使用される補助データを含む１つまたは複数のリソースパッケージを含むことができる。クライアント装置は様々なコンピューティング環境を含むことができるので、選択的ダウンロードのために１つまたは複数のａｐｐパッケージを公開することができる（たとえば、ゲーミングコンピューティング装置は、第１のａｐｐパッケージではなく、ゲーミングベースのオペレーティングシステムを含む第２のａｐｐパッケージをダウンロードすることができる）。１つまたは複数のリソースパッケージは、クライアント装置またはユーザに関連し、または関連しないことがある任意選択のユーザ体験機能を提供するために使用される補助データを含むことができるので、選択的ダウンロードおよび／または任意選択のダウンロードのために１つまたは複数のリソースパッケージを公開することができる（たとえば、ゲーミングコンピューティング装置は、高解像度テクスチャリソースパッケージをダウンロードすることができるが、低解像度テクスチャリソースパッケージをダウンロードすることを控えることができる）。一例では、バンドルパッケージ、１つまたは複数のａｐｐパッケージ、ならびに／あるいは１つまたは複数のリソースパッケージがデジタル署名証明書で（たとえば、単一のデジタル署名操作中に）デジタル署名されていることがあり、したがってパッケージがシグニチャプロパティのセット（たとえば、デジタル署名証明書所有者、権限の連鎖証明、鍵使用、シグニチャ検証日、シグニチャ暗号化強度、シグニチャタイムスタンプなど）を共有することができ、それにより、パッケージが選択的および／または個別にダウンロードされたかどうかの如何に関わらず、クライアント装置がパッケージを効率的に検証することを可能にすることができる。
【００４０】
[0059]  １００６では、アプリケーションがクライアント装置上で実行するための適用性コンテキストを決定することができる。適用性コンテキストは、クライアント装置および／またはクライアント装置のユーザに関連する様々な暗黙的および／または明示的情報に対応することができる。一例では、適用性コンテキストは、クライアント装置の解像度、クライアント装置の画面スケール、クライアント装置についてのユーザ体験コンテキスト（たとえば、ユーザは、高コントラストディスプレイモードを指定することができ、ユーザはゲームパッド周辺装置をインストールすることができ、ユーザは、マイクロフォンデバイスドライバ、ユーザの位置、および／またはユーザに関連する様々な他のプリファレンスおよび／またはコンテキスト側面をインストールすることができる）、クライアント装置上で利用可能なマルチメディアＡＰＩの機能セット（たとえば、ＤｉｒｅｃｔＸ（登録商標）機能セット）、クライアント装置のグラフィックス処理装置、クライアント装置についての視覚的品質コンテキスト、クライアント装置のユーザが使用する言語、ならびに／あるいはユーザおよび／またはクライアント装置に関連することがあるユーザ体験機能を識別するために使用することのできる多数の他の情報に対応することができる。別の例では、適用性コンテキストを暗黙的に識別するためにクライアント装置を評価することができる（たとえば、ユーザは現在フランスに位置していることがあり、したがってフランス語コンテキストが示唆されることがある）。別の例では、クライアント装置についてのユーザ指定の設定を適用性コンテキストとして決定することができる（たとえば、ユーザによって設定される高コントラストディスプレイモード）。別の例では、クライアント装置に関連する情報にファジィマッチング論理を適用して、クライアント装置またはユーザについての仮定を適用性コンテキストとして生成することができる（たとえば、ユーザによってインストールされたゲーミンググラフィックスカードおよびゲーミング周辺装置を使用して、高解像度テクスチャがユーザによって望まれると判定することができる）。複数のユーザがクライアント装置を利用することがある別の例では、複数のユーザを列挙することができ、その複数のユーザに基づいて適用性コンテキストを決定することができる（たとえば、第１のユーザについてはドイツ語、第２のユーザについてはフランス語）。
【００４１】
[0060]  １００８では、適用性コンテキストによって指定されるコンピューティング環境コンテキスト（たとえば、オペレーティングシステム、コンピュータアーキテクチャなど）に対応するアプリケーションコードを含む第１のａｐｐパッケージに基づいて、第１のａｐｐパッケージを選択的に取り出すことができる。一例では、第１のａｐｐパッケージの第１のａｐｐパッケージシグニチャを検証することができる（たとえば、ａｐｐパッケージのａｐｐ開発者の識別、および／または第１のａｐｐパッケージが修正されていないことの検証）。１０１０では、バンドルパッケージ内に含まれる１つまたは複数のリソースパッケージの第１のリソースパッケージに対応する適用性コンテキストに応答して、第１のソースパッケージがバンドルパッケージから選択的に取り出される。一例では、第１のリソースパッケージの第１のリソースパッケージシグニチャを検証することができる（たとえば、第１のリソースパッケージの開発者の識別、および／または第１のリソースパッケージが修正されていないことの検証）。バンドルパッケージは適用性コンテキストに対応しないリソースパッケージを含むことができるので、そのようなリソースパッケージはバンドルパッケージから取り出されない。たとえば、スマートフォンについての適用性コンテキストは、スマートフォンのための比較的低い解像度を指定することができ、したがって高解像度イメージリソースパッケージではなく、低解像度イメージリソースパッケージをスマートフォンのために取り出すことができる。
【００４２】
[0061]  一例では、適用性コンテキストはオーストラリア英語を指定することができる。オーストラリア英語のための言語リソースパッケージを含まないバンドルパッケージに応答して、言語類似性しきい値を超えるオーストラリア英語に対応する第２の言語についての第２の言語リソースパッケージを識別することができる（たとえば、英国英語リソースパッケージが米国英語リソースパッケージよりもオーストラリア英語に類似していると識別することができる）。英国英語リソースパッケージなどの第２の言語リソースパッケージを選択的に取り出すことができる。このようにして、類似性しきい値を超える適用性コンテキストに関連するリソースパッケージ（たとえば、「次善の」選択）を選択的に取り出すことができる（たとえば、しきい値を超える適用性コンテキストの視覚的品質コンテキストに対応する視覚的リソースパッケージ）。クライアント装置は、アプリケーションをインストールするためにバンドルパッケージから取り出された第１のａｐｐパッケージ、第１のリソースパッケージ、および／または他のパッケージを利用することができる。
【００４３】
[0062]  一例では、バンドルパッケージに対する更新を識別することができる。更新は、バンドルパッケージ内のリソースパッケージのセットへの新しいリソースパッケージの追加に対応することができる。新しいリソースパッケージ（たとえば、オーストラリア英語リソースパッケージ）に対応する適用性コンテキストに応答して、バンドルパッケージから新しいリソースパッケージを選択的に取り出すことができる。このようにして、クライアント装置は、クライアント装置および／またはユーザに関連するａｐｐパッケージおよび／またはリソースパッケージを単に得ることができる。１０１２で方法は終了する。
【００４４】
[0063]  図１１に、アプリケーションに関連するバンドルパッケージ１１１０の部分を選択的に取り出すシステム１１００の一例を示す。一例では、バンドルパッケージ１１１０がドローイングアプリケーションに関連付けられる。バンドルパッケージ１１１０は、１つまたは複数のａｐｐパッケージならびに／あるいは１つまたは複数のリソースパッケージを含む。たとえば、バンドルパッケージ１１１０は、第１のプロセッサタイプのための第１のａｐｐパッケージ１１１２、および第２のプロセッサタイプのための第２のａｐｐパッケージ１１１４を含む。バンドルパッケージは、米国英語のための第１のリソースパッケージ、英国英語のための第２のリソースパッケージ１１１８、高解像度アイコンのための第３のリソースパッケージ１１２０、および中間解像度アイコンのための第４のリソースパッケージ１１２２を含む。ドローイングアプリケーションについての選択的ダウンロードおよび／または任意選択のダウンロードのために１つまたは複数のリソースパッケージを公開することができる。すなわち、リソースパッケージは、アプリケーションについての任意選択のユーザ体験機能を提供するために使用される補助データを含むことができる。
【００４５】
[0064]  一例では、タブレット装置などのクライアント装置１１０２は、ドローイングアプリケーションについてのバンドルパッケージ１１１０を識別することができる。クライアント装置１１０２は、バンドルパッケージ１１１０内の１つまたは複数のａｐｐパッケージならびに／あるいは１つまたは複数のリソースパッケージを記述するバンドルマニフェスト１１２４を得ることができる。システム１１００は、クライアント装置１１０２についての適用性コンテキスト１１０６を決定するように構成された適用性構成要素１１０４を備えることができる。たとえば、適用性コンテキスト１１０６は、クライアント装置１１０２が第２のプロセッサタイプを有し、クライアント装置１１０２のユーザがオーストラリア英語を話すこと、およびクライアント装置１１０２が中間解像度から低解像度のグラフィックスをサポートすることを指定することができる。システム１１００は、適用性コンテキスト１１０６に対応するａｐｐパッケージならびに／あるいは１つまたは複数のリソースパッケージを取り出す（１１２６）ように構成された検索構成要素１１０８を備えることができる。検索構成要素１１０８は、適用性コンテキスト１１０６に対応しない（たとえば、上記の類似性しきい値に対応しない）ａｐｐパッケージおよび／またはリソースパッケージを取り出すことを控えることができる。一例では、第２のａｐｐパッケージ１１１４、第２のリソースパッケージ１１１８（たとえば、英国英語は、類似性しきい値を超えるオーストラリア英語コンテキストに対応することができるのに対して、米国英語は対応しないので）、および第４のリソースパッケージ１１２２（たとえば、中間解像度アイコンは類似性しきい値を超える中間解像度から低解像度コンテキストに対応することができるのに対して、高解像度アイコンは対応しないので）が適用性コンテキスト１１０６に対応するので、検索構成要素１１０８はそのようなパッケージを取り出すことができる（１１２６）。このようにして、クライアント装置１１０２は、選択的にダウンロードされたパッケージを使用してドローイングアプリケーションをインストールすることができる。
【００４６】
[0065]  図１２に、アプリケーションに関連するバンドルパッケージ１１１０の部分を選択的に取り出すシステム１２００の一例を示す。一例では、バンドルパッケージ１１１０がドローイングアプリケーションに関連付けられる。バンドルパッケージ１１１０は、１つまたは複数のａｐｐパッケージならびに／あるいは１つまたは複数のリソースパッケージを含む。たとえば、バンドルパッケージ１１００は、第１のプロセッサタイプのための第１のａｐｐパッケージ１１１２、および第２のプロセッサタイプのための第２のａｐｐパッケージ１１１４を含む。バンドルパッケージ１１１０は、米国英語のための第１のリソースパッケージ１１１６、英国英語のための第２のリソースパッケージ１１１８、高解像度アイコンのための第３のリソースパッケージ１１２０、および中間解像度アイコンのための第４のリソースパッケージ１１２２を含む。ドローイングアプリケーションについての選択的ダウンロードおよび／または任意選択のダウンロードのために１つまたは複数のリソースパッケージを公開することができる。すなわち、リソースパッケージは、アプリケーションについての任意選択のユーザ体験機能を提供するために使用される補助データを含むことができる。
【００４７】
[0066]  一例では、ゲーミングデスクトップなどのクライアント装置１２０２は、ドローイングアプリケーションについてのバンドルパッケージ１１１０を識別することができる。クライアント装置１２０２は、バンドルパッケージ１１１０内の１つまたは複数のａｐｐパッケージならびに／あるいは１つまたは複数のリソースパッケージを記述するバンドルマニフェスト１１２４を得ることができる。システム１２００は、クライアント装置１１０２についての適用性コンテキスト１２０６を決定するように構成された適用性構成要素１２０４を備えることができる。たとえば、適用性コンテキスト１２０６は、クライアント装置１２０２が第１のプロセッサタイプを有し、クライアント装置１１０２のユーザが英語を話すこと、およびクライアント装置１２０２が高解像度グラフィックスをサポートすることを指定することができる。システム１２００は、適用性コンテキスト１２０６に対応するａｐｐパッケージならびに／あるいは１つまたは複数のリソースパッケージを取り出す（１２１０）ように構成された検索構成要素１２０８を備えることができる。検索構成要素１２０８は、適用性コンテキスト１２０６に対応しないａｐｐパッケージおよび／またはリソースパッケージを取り出すことを控えることができる。一例では、第１のａｐｐパッケージ１１１２、第１のリソースパッケージ１１１６、および第３のリソースパッケージ１１２０が適用性コンテンツ１２０６に対応するので、検索構成要素１２０８は、そのようなパッケージを取り出すことができる（１２１０）。このようにして、クライアント装置１２０２は、選択的にダウンロードされたパッケージを使用してドローイングアプリケーションをインストールすることができる。
【００４８】
[0067]  クライアント装置上のアプリケーションについてのリソースパッケージおよび／またはａｐｐパッケージなどのパッケージ内のリソースを索引付けする一実施形態が、図１３の例示的方法１３００によって示されている。１３０２で方法は開始する。一例では、クライアント装置は、アプリケーションに関連するａｐｐパッケージおよび１つまたは複数のリソースパッケージを選択的に取り出していることがある。一例では、ａｐｐパッケージの第１のａｐｐパッケージシグニチャを検証することができ（たとえば、ａｐｐパッケージのａｐｐ開発者の識別、および／またはａｐｐパッケージが修正されていないという検証）、かつ／または１つまたは複数のリソースパッケージのリソースシグニチャを検証することができる（たとえば、リソースパッケージの開発者の識別、および／またはリソースパッケージが修正されていないという検証）。１つまたは複数のリソースパッケージがクライアント装置上に個別にダウンロードおよび／または格納されていることがあるので、ランタイム中のアプリケーションによる利用についてそのようなリソースパッケージを追跡することが有利であることがある。したがって、１３０４では、たとえば第１のリソースパッケージおよび第２のリソースパッケージを、クライアント装置上で識別することができる。第１のリソースパッケージは、アプリケーションについての第１の任意選択のユーザ体験機能を提供するために使用される第１の補助データ（たとえば、高解像度アイコンリソースパッケージ内の１つまたは複数の高解像度アイコン）を含むことができる。第２のリソースパッケージは、アプリケーションについての第２の任意選択のユーザ体験機能を提供するために使用される第２の補助データ（たとえば、マルチメディアＡＰＩバージョン１１についての機能セット内の１つまたは複数のマルチメディア機能リソース）を含むことができる。第１のリソースパッケージは、第１のリソースデータを記述する第１のリソース索引（たとえば、第１のリソースパッケージが１つまたは複数の高解像度アイコンを含むという識別）および／または第１のリソース適用性データ（たとえば、高解像度アイコンデータを表示することのできるクライアント装置上で実行されたとき、高解像度アイコンデータがアプリケーションに適用されるという識別）を含むことができる。第２のリソースパッケージは、第２のリソースデータを記述する第２のリソース索引（たとえば、１つまたは複数のマルチメディア機能リソースの説明）および／または第１のリソース適用性データ（たとえば、クライアント装置がマルチメディアＡＰＩバージョン１１をインストールしたとき、機能セットを使用することができるという識別）を含むことができる。
【００４９】
[0068]  一例では、リソースパッケージは、アプリケーションについてのリソースのサブセットを含むことができる（たとえば、カナダ英語リソースパッケージは、ＣｏｌｏｕｒやＦａｖｏｕｒｉｔｅなどのいくつかのカナダテキスト文字列を含むことができ、一方中立または米国英語リソースパッケージは、他の語についての複数のテキスト文字列を含む）。一例では、単一のリソースパッケージは、個々のリソースのいくつかの異形（たとえば、ドイツイメージの高コントラストバージョン、ドイツイメージの低コントラストバージョンなど）を含むことができる。
【００５０】
[0069]  １３０６では、第１のリソースパッケージについての第１のリソース索引を第２のリソースパッケージについての第２のリソース索引とマージして、マージ済みリソース索引を作成することができる。マージ済みリソース索引は、常にまたは排他的にではないが一般にクライアント側であるのに対して、バンドルマニフェストは、常にまたは排他的にではないが一般にサーバまたは開発者側であることを理解されよう。さらに、マージ済みリソース索引は、常にではないが一般に、利用可能な（たとえば、ローカル）リソースパッケージ内の個々のどのリソースをアプリケーションの実行中に使用することができるかを決定するために使用されるのに対して、バンドルマニフェストは、常にではないが一般に、どのａｐｐパッケージおよび／またはリソースパッケージをクライアント装置にダウンロードするかを決定するために使用される。一例では、アプリケーションに関連するリソースパッケージについての複数のリソース索引をマージ済みリソース索引にマージすることができ、したがってマージ済みリソース索引は、アプリケーションを実行するときにロードすることのできるリソースパッケージ内の個々のリソースを記述することができる（たとえば、マージ済みリソース索引内の多次元ルックアップを実施して、アプリケーションの実行のための、テキスト文字列、イメージ、アイコンなどのリソースのセットを識別することができる）。たとえば、ａｐｐマーケットプレイスから第３のリソースパッケージを取り出すことができる。第３のリソースパッケージは、アプリケーションについての第３の任意選択のユーザ体験機能を提供するために使用される第３の補助データ（たとえば、ドイツ語リソースパッケージ内の１つまたは複数のドイツ語文字列）を含むことができる。一例では、クライアント装置への第３のリソースパッケージの展開中に、第３のリソースパッケージについての第３のリソース索引をマージ済みリソース索引にマージすることができる。別の例では、アプリケーションの初期実行中に、第３のリソース索引をマージ済みリソース索引にマージすることができる。一例では、マージ済みリソース索引は、リソースパッケージ内のリソースへの１つまたは複数の参照を含むことができる。別の例では、アプリケーションについてのａｐｐパッケージ内にマージ済みリソース索引への参照を作成することができる。ａｐｐパッケージは、アプリケーションの実行のためのアプリケーションコードを含むことができ、したがってアプリケーションの実行中に参照を使用してマージ済みリソース索引にアクセスすることができ、その結果、１つまたは複数のリソースパッケージからの個々のリソースを選択的に使用することができる。
【００５１】
[0070]  一例では、アプリケーションに関連するａｐｐパッケージを識別することができる。ａｐｐパッケージは、アプリケーションの実行のために構成されたアプリケーションコードを含むことができる。（たとえば、ａｐｐパッケージによって提供される１つまたは複数のリソースを記述する）ａｐｐパッケージについてのリソース索引をマージ済み索引にマージすることができる。
【００５２】
[0071]  １３０８では、アプリケーションの実行のために、マージ済みリソース索引を利用して、リソースパッケージおよび／またはａｐｐパッケージなどの１つまたは複数のパッケージからリソースを選択的に使用することができる（たとえば、高解像度ウェルカム画面イメージリソース、ドイツ語ウェルカムテキスト文字列など）。一例では、ａｐｐパッケージを利用してランタイム状態のアプリケーションを実行することに応答して、マージ済みリソース索引を評価して、アプリケーションについての任意選択のユーザ体験機能を提供するために使用されるリソースのセットを識別することができる。このようにして、アプリケーションを起動して、リソースパッケージおよび／またはその中の（たとえば、および／またはａｐｐパッケージ内の）１つまたは複数のリソースのセットを利用することができる。マージ済みリソース索引を利用する一例では、マージ済みリソース索引内で多次元ルックアップを実施して、１つまたは複数のリソースパッケージ内に含まれることがあるリソースの適切なセットを識別することができる。たとえば、マージ済みリソース索引は、言語次元、解像度次元、画面スケール次元、視覚的品質次元、マルチメディアＡＰＩ次元、補助機能次元、および／またはクライアント装置上のアプリケーションの実行に関連することのあるリソースを識別するために評価することのできる様々な他の次元を含むことができる（たとえば、フランス語テキスト文字列リソースおよびドイツ語テキスト文字列リソースが利用可能であることがあり、クライアント装置の現ユーザがフランス語を選好し、かつ／またはクライアント装置が現在フランスに位置するので、ドイツ語テキスト文字列リソースに優先して、フランス語テキスト文字列リソースを選択することができる）。一例では、リソースのセットは、アプリケーションについてのすべての、またはすべてよりも少ない利用可能なリソースパッケージに及ぶことがある（たとえば、リソースのセットが、しきい値対応を超えるクライアント装置のディスプレイ品質ユーザ体験および／またはユーザの言語に対応するリソースなどの、クライアント装置および／またはユーザに関連するリソースのセットに基づいてマージ済みリソース索引を通じて識別されるリソースパッケージのサブセット内に含まれることがある）。１３１０で方法は終了する。
【００５３】
[0072]  クライアント装置上のアプリケーションについてのリソースを索引付けするいくつかの実施形態では、クライアント装置上でリソースパッケージおよびａｐｐパッケージを識別することができる。リソースパッケージは、アプリケーションについての任意選択のユーザ体験機能を提供するために使用される補助データを含むことができる。ａｐｐパッケージは、アプリケーションの実行のために構成されたアプリケーションコード（たとえば、アプリケーションバイナリ）を含むことができる。（たとえば、リソースパッケージ内の個々のリソースを記述する）リソースパッケージについての第１のリソース索引を（たとえば、ａｐｐパッケージ内の個々のリソースを記述する）ａｐｐパッケージについての第２のリソースパッケージとマージして、マージ済みリソース索引を作成することができる。マージ済みリソース索引を利用して、アプリケーションの実行のためにリソースパッケージおよび／またはａｐｐパッケージ内の１つまたは複数のリソースを選択的に利用することができる。
【００５４】
[0073]  図１４に、クライアント装置１４０２上のアプリケーションについてのリソースパッケージおよび／またはａｐｐパッケージなどのパッケージ内のリソースを索引付けするシステム１４００の一例を示す。クライアント装置１４０２は、ドイツ語のための第１のリソースパッケージ１４０４（たとえば、１つまたは複数のドイツ語文字列リソース）、フランス語のための第２のリソースパッケージ１４０６（たとえば、１つまたは複数のフランス語文字列リソース）、および／またはリソースパッケージ（N）１４０８などの他のリソースパッケージを含むことができる。システム１４００は索引付け構成要素１４１６を備えることができる。クライアント装置１４０２上のそのようなリソースパッケージを識別するように索引付け構成要素１４１６を構成することができる。リソースパッケージ内の個々のリソースを記述するリソース索引をマージ済みリソース索引１４１８にマージするように索引付け構成要素１４１６を構成することができる。たとえば、第１のリソース索引１４１０、第２のリソース索引１４１２、および／またはリソース索引（N）１４１４などの他のリソース索引をマージ済みリソース索引１４１８にマージすることができる。このようにして、マージ済みリソース索引１４１８は、アプリケーションによる利用のために利用可能であることがあるリソースパッケージ内の個々のリソースを記述することができる。たとえば、マージ済みリソース索引は、第１のリソースパッケージ１４０４内のドイツ語文字列リソースへの第１の参照１４２０、第２のリソースパッケージ内のフランス語文字列リソースへの第２の参照１４２２、および／またはリソースパッケージ内の他のリソースへの他の参照（たとえば、第３のリソースパッケージ内の中間解像度イメージリソースへの参照１４２４、第４のリソースパッケージ内の高解像度イメージリソースへの参照１４２６、第５のリソースパッケージ内の低解像度アイコンリソースへの参照１４２８、第６のリソースパッケージ内の高解像度アイコンＡへの参照１４３０、第６のリソースパッケージ内の高解像度アイコンＢへの参照１４３２、および／または第６のリソースパッケージ内の高解像度アイコンＣへの参照１４３４）を含むことができる。一例では、索引付け構成要素１４１６は、アプリケーションについてのａｐｐパッケージ１４１６内の参照を作成することができる。このようにして、ａｐｐパッケージ１４１６を利用するアプリケーションの実行中に、アプリケーションによる使用のための１つまたは複数のリソースを（たとえば、次元が言語やディスプレイ品質などの様々なユーザ体験機能に対応する多次元ルックアップを利用して）識別するために、参照を使用してマージ済みリソース索引１４１８にアクセスすることができる。
【００５５】
[0074]  図１５に、アプリケーション１５０６の実行中にマージ済み索引１４１８を利用するシステム１５００の一例を示す。システム１５００はリソース利用構成要素１５０２を備えることができる。ａｐｐパッケージを利用してランタイム状態で実行中のアプリケーション１５０６を検出するようにリソース利用構成要素１５０２を構成することができる。実行中のアプリケーション１５０６に応答して、リソース利用構成要素１５０２は、マージ済みリソース索引１４１８（たとえば、図１４のマージ済みリソース索引１４１８）を評価して、アプリケーションについての任意選択のユーザ体験機能を提供するために使用することのできるリソースのセットを識別することができる。たとえば、言語次元、解像度次元、アイコン解像度次元、および／または他の次元に対応する多次元ルックアップをマージ済みリソース索引１４１８内で実施することができる。たとえば、リソースのセットは、（たとえば、現ユーザによって話される言語に基づいて）ドイツ語のための第１のリソースパッケージ内のドイツ語文字列リソース、（たとえば、クライアント装置１４２０の画面タイプに基づいて）高解像度のための第４のリソースパッケージ内の高解像度イメージリソース、および（たとえば、クライアント装置１４２０のグラフィックスカードに基づいて）高解像度アイコンのための第６のリソースパッケージ内の高解像度アイコンリソースを含むことができる。このようにして、アプリケーション１５０６による利用のためにドイツ語文字列リソース、高解像度イメージリソース、および高解像度アイコンリソースを（たとえば、要求時に）取り出すことができる（１５０４）。
【００５６】
[0075]  ゲームバンドルパッケージを介してゲームを配布する一実施形態が、図１６の例示的方法１６００によって示されている。１６０２で方法は開始する。１６０４では、ゲームについてのゲームバンドルパッケージを生成することができる。ゲームバンドルパッケージは、１つまたは複数のコアゲームパッケージ（たとえば、ゲームのコア体験をプレイするために実行することのできる実行可能バイナリファイル）を含むことができる。一例では、ゲームバンドルパッケージは、第１のコンピューティング環境（たとえば、第１のプロセッサタイプ、特定のオペレーティングシステムなど）上で実行するように構成されたゲームコードを含む第１のコアゲームパッケージを含むことができる。別の例では、ゲームバンドルパッケージは、第２のコンピューティング環境（たとえば、第２のプロセッサタイプ、モバイルオペレーティングシステムなど）上で実行するように構成されたゲームコードを含む第２のコアゲームパッケージを含むことができる。
【００５７】
[0076]  ゲームバンドルパッケージは、ゲームについての任意選択のユーザ体験機能を提供する１つまたは複数のリソースゲームパッケージを含むことができる。一例では、ゲームバンドルパッケージは、ゲームについての第１の任意選択のユーザ体験機能を提供するために使用される第１の補助ハードウェア認識データを含む第１のリソースゲームパッケージを含むことができる。たとえば、第１の補助ハードウェア認識データは、第１のディスプレイ品質ユーザ体験に対応することができる（たとえば、第１の補助ハードウェア認識データは、ゲーミンググラフィックス処理装置などのグラフィカルに可能なハードウェア、またはＤｉｒｅｃｔＸ（登録商標）などのマルチメディアＡＰＩのゲーミング機能セットによってサポートすることのできる比較的高いディスプレイ品質のテクスチャ画像、地形データ、キャラクタ幾何形状、および／またはゲーム視覚化データを含むことができる）。別の例では、ゲームバンドルパッケージは、ゲームについての第２の任意選択のユーザ体験機能を提供するために使用される第２の補助ハードウェア認識データを含む第２のリソースゲームパッケージを含むことができる。たとえば、第２の補助ハードウェア認識データは、第２のディスプレイ品質ユーザ体験に対応することができる（たとえば、第２の補助ハードウェア認識データは、タブレットグラフィックス処理装置などのモバイル装置ハードウェア、またはＤｉｒｅｃｔＸ（登録商標）などのマルチメディアＡＰＩのモバイル機能セットによってサポートすることのできる比較的低いディスプレイ品質のテクスチャ画像、地形データ、キャラクタ幾何形状、および／またはゲーム視覚化データを含むことができる）。一例では、ゲームバンドルパッケージ、１つまたは複数のコアゲームパッケージ、ならびに／あるいは１つまたは複数のリソースゲームパッケージにデジタル署名証明書で（たとえば、単一のデジタル署名操作中に）デジタル署名することができ、したがってパッケージはシグニチャプロパティのセット（たとえば、デジタル署名証明書所有者、権限の連鎖証明、鍵使用、シグニチャ検証日、シグニチャ暗号化強度、シグニチャタイムスタンプなど）を共有することができ、それにより、パッケージが選択的にダウンロードされたか、かつ／または個別にダウンロードされたかの如何に関わらず、クライアント装置がパッケージを効率的に検証することを可能にすることができる。
【００５８】
[0077]  一例では、ゲームバンドルパッケージについてのゲームバンドル更新を受信することができる（たとえば、リソースパッケージの追加、除去、または修正）。ゲームバンドル更新は、ゲームバンドルパッケージ内に含めるための新しいリソースゲームパッケージを含むことができる。新しいリソースゲームパッケージを含むようにゲームバンドルパッケージを更新することができる。ゲームバンドルパッケージがａｐｐマーケットプレイス認証プロセスによって認証された一例では、ゲームバンドルパッケージ全体を再認証しなければならないのではなく、単に新しいリソースゲームパッケージを認証することができる。
【００５９】
[0078]  １６０６では、ゲームの選択的ダウンロードのために１つまたは複数のコアゲームパッケージならびに／あるいは１つまたは複数のリソースゲームパッケージを公開することができる。一例では、クライアント装置からゲームバンドル取得要求を受信することができる。ゲームバンドル取得要求は、第１のコアゲームパッケージと、リソースゲームパッケージのサブセット（たとえば、ゲームバンドルパッケージ内のもう１つのリソースゲームパッケージのすべてよりも少ない、少なくともいくつか）とを指定することができる。このようにして、ゲームのインストールのために、第１のコアゲームパッケージと、リソースゲームパッケージのサブセットとをクライアント装置に選択的に提供することができる。１６０８で方法は終了する。
【００６０】
[0079]  ゲームバンドルパッケージを介してゲームをインストールする一実施形態が、図１７の例示的方法１７００によって示されている。１７０２で方法は開始する。１７０４では、ａｐｐマーケットプレイスを通じて提供されるゲームについてのゲームバンドルパッケージを識別することができる。ゲームバンドルパッケージは、１つまたは複数のコアゲームパッケージならびに／あるいは１つまたは複数のリソースゲームパッケージを含むことができる。１つまたは複数のリソースゲームパッケージを、ゲームについての任意選択のユーザ体験機能を提供する任意選択のダウンロードとして公開することができる（たとえば、ゲームパッドについてのサポート、マルチメディアＡＰＩバージョンについてのサポート、高解像度テクスチャ、チャットクライアントについてのサポート、ゲーミングヘッドセットまたは他の周辺機器についてのサポートなど）。１７０６では、ゲームバンドルパッケージへのアクセスのためにバンドル取得要求をａｐｐマーケットプレイスに送ることができる。バンドル取得要求は、第１のコアゲームパッケージと、リソースゲームパッケージのサブセットとを指定することができる（たとえば、リソースゲームパッケージのサブセットは、ゲームバンドルパッケージ内のもう１つまたは複数のリソースゲームパッケージのすべてよりも少ない、少なくともいくつかを含むことができる）。一例では、たとえば、クライアント装置のハードウェアリソースおよび／またはマルチメディア機能に基づいて、リソースゲームパッケージのサブセットを識別することができる。１７０８では、クライアント装置上のゲームのインストールのために、第１のａｐｐパッケージと、リソースゲームパッケージのサブセットとを得ることができる。１７１０で方法は終了する。
【００６１】
[0080]  図１８に、ゲームバンドルパッケージ１８０４を介してゲームを配布するシステム１８００の一例を示す。一例では、ゲームバンドルパッケージ１８０４がドライビングゲームアプリケーションに関連付けられる。１つまたは複数のコアゲームパッケージならびに／あるいは１つまたは複数のリソースゲームパッケージを含むようにゲームバンドルパッケージを生成するようにゲームバンドリング構成要素１８０２を構成することができる。ゲームバンドルパッケージ１８０４は、第１のプロセッサタイプ上で実行するように構成されたゲームコードを含む第１のコアゲームパッケージ１８０６と、第２のプロセッサタイプ上で実行するように構成されたゲームコードを含む第２のコアゲームパッケージ１８０８とを含むことができる。ゲームバンドルパッケージ１８０４は、ゲームについての任意選択のユーザ体験機能を提供するために使用される補助ハードウェア認識データを含む１つまたは複数のリソースゲームパッケージ（たとえば、高テクスチャ画像のための第１のリソースゲームパッケージ１８１０、低解像度テクスチャ画像のための第２のリソースゲームパッケージ１８１２、まばらな地形データのための第３のリソースゲームパッケージ１８１４、密な地形データのための第４のリソースゲームパッケージ１８１６、複雑な幾何形状のための第５のリソースゲームパッケージ１８１８、および／または他のリソースゲームパッケージ）を含むことができる。ゲームの選択的ダウンロードのためにゲームバンドルパッケージを公開することができる（たとえば、１つまたは複数のリソースゲームパッケージをゲームについての任意選択のダウンロードとして公開することができる）。
【００６２】
[0081]  システム１８００は配布構成要素１８２０を備えることができる。タブレット装置などのクライアント装置１８２６からゲームバンドルパッケージ１８０４を求めるバンドル取得要求１８２２を受信するように配布構成要素１８２０を構成することができる。バンドル取得要求１８２２は、クライアント装置１８２６のハードウェアリソース１８２８（たとえば、ゲーミング周辺機器、グラフィックスカードなど）および／またはマルチメディア機能１８３０（たとえば、マルチメディアＡＰＩバージョン、ディスプレイドライバなど）に基づいて、第２のコアゲームパッケージ１８０８、第２のリソースゲームパッケージ１８１２、および第３のリソースゲームパッケージ１８１４を指定することができる。たとえば、クライアント装置１８２６は、第２のプロセッサタイプ、比較的少量の記憶空間、ならびに／あるいは比較的低解像度のディスプレイ機能およびハードウェアを備えることができる。このようにして、ゲームを取得および展開することに関連するダウンロード帯域幅、記憶空間、および／またはコンピューティングリソースを削減するために、低テクスチャ画像およびまばらな地形データをクライアント装置１８２６によって要求することができる（たとえば、サポートされない高解像度視覚データが不必要にダウンロードされない）。このようにして、配布構成要素１８２０は、ゲームのインストールのために第２のコアゲームパッケージ１８０８、第２のリソースゲームパッケージ１８１２、および／または第３のリソースゲームパッケージ１８１４をクライアント装置１８２６に提供することができる（１８２４）。
【００６３】
[0082]  さらに別の実施形態は、本明細書で提示される技法のうちの１つまたは複数を実装するように構成されたプロセッサ実行可能命令を含むコンピュータ可読媒体に関係する。このようにして考案されるコンピュータ可読媒体またはコンピュータ可読装置の例示的一実施形態が図１９に示されており、実装１９００が、コンピュータ可読データ１９０６がその上に符号化される、ＣＤ−Ｒ、ＤＶＤ−Ｒ、フラッシュドライブ、ハードディスクドライブのプラッタなどのコンピュータ可読媒体１９０８を備える。０または１の少なくとも一方を含むバイナリデータなどのこのコンピュータ可読データ１９０６は、本明細書で説明される原理のうちの１つまたは複数に従って動作するように構成されたコンピュータ命令１９０４のセットを含む。いくつかの実施形態では、プロセッサ実行可能コンピュータ命令１９０４は、たとえば、図１の例示的方法１００の少なくとも一部、図５の例示的方法５００の少なくとも一部、図１０の例示的方法１０００の少なくとも一部、図１３の例示的方法１３００の少なくとも一部、図１６の例示的方法１６００の少なくとも一部、および／または図１７の例示的方法１７００の少なくとも一部などの方法１９０２を実施するように構成される。いくつかの実施形態では、プロセッサ実行可能命令１９０４は、たとえば、図２の例示的システム２００の少なくとも一部、図４の例示的システム４００の少なくとも一部、図６の例示的システム６００の少なくとも一部、図７の例示的システム７００の少なくとも一部、図８の例示的システム８００の少なくとも一部、図９の例示的システム９００の少なくとも一部、図１１の例示的システム１１００の少なくとも一部、図１２の例示的システム１２００の少なくとも一部、図１４の例示的システム１４００の少なくとも一部、図１５の例示的システム１５００の少なくとも一部、および／または図１８の例示的システム１８００の少なくとも一部などのシステムを実装するように構成される。本明細書で提示される技法に従って動作するように構成される多くのそのようなコンピュータ可読媒体が、当業者によって考案される。
【００６４】
[0083]  構造的特徴および／または方法的動作に特有の言語で主題を説明したが、添付の特許請求の範囲で定義される主題が前述の特定の特徴または動作に必ずしも限定されないことを理解されたい。むしろ、前述の特定の特徴および動作は、特許請求の範囲を実装する例示的形態として開示される。
【００６５】
[0084]  本願では、「構成要素」、「モジュール」、「システム」、および／または「インターフェース」などという用語は一般に、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかである、コンピュータ関連のエンティティを指すものとする。たとえば、構成要素は、限定はしないが、プロセッサ上で実行中のプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および／またはコンピュータでよい。例として、コントローラ上で実行中のアプリケーションとコントローラはどちらも、構成要素でよい。１つまたは複数の構成要素が、プロセスおよび／または実行のスレッド内に常駐することができ、構成要素が１つのコンピュータ上に局在化し、かつ／または２つ以上のコンピュータ間で分散することができる。
【００６６】
[0085]  さらに、標準プログラミングおよび／またはエンジニアリング技法を使用して、特許請求される主題を方法、装置、製造品として実装し、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組合せを生成し、開示される主題を実装するようにコンピュータを制御することができる。本明細書で使用する「製造品」という用語は、任意のコンピュータ可読装置、搬送波、または媒体からアクセス可能なコンピュータプログラムを包含するものとする。もちろん、特許請求される主題の範囲または精神から逸脱することなく、この構成に対して多くの修正を行えることを当業者は理解されよう。
【００６７】
[0086]  図２０および以下の議論は、本明細書に記載の条項のうちの１つまたは複数の実施形態を実装するための適切なコンピューティング環境の簡潔で一般的な説明を与えるものである。図２０の動作環境は、適切な動作環境の一例にすぎず、動作環境の使用または機能の範囲に関してどんな限定も示唆するものではない。例示的コンピューティング装置は、限定はしないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、モバイル装置（携帯電話、携帯情報端末（PDA）、メディアプレーヤなど）、マルチプロセッサシステム、コンシューマエレクトロニクス、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたは装置のいずれかを含む分散コンピューティング環境などを含む。
【００６８】
[0087]  必須ではないが、実施形態は、１つまたは複数のコンピューティング装置によって実行中の「コンピュータ可読命令」の一般的文脈で説明される。コンピュータ可読媒体を介してコンピュータ可読命令を配布することができる（以下で論じる）。特定のタスクを実施し、または特定の抽象データタイプを実装する関数、オブジェクト、アプリケーションプログラミングインターフェース（API）、データ構造などのプログラムモジュールとしてコンピュータ可読命令を実装することができる。通常、様々な環境でコンピュータ可読命令の機能を望む通りに組み合わせ、または分散させることができる。
【００６９】
[0088]  図２０に、本明細書で与えられる１つまたは複数の実施形態を実装するように構成されたコンピューティング装置２０１２を備えるシステム２０００の一例を示す。一構成では、コンピューティング装置２０１２は少なくとも１つの処理装置２０１６およびメモリ２０１８を含む。コンピューティング装置の厳密な構成およびタイプに応じて、メモリ２０１８は、揮発性（たとえば、ＲＡＭなど）、不揮発性（たとえば、ＲＯＭ、フラッシュメモリなど）、またはその２つの何らかの組合せでよい。この構成が、図２０では破線２０１４によって示されている。
【００７０】
[0089]  別の実施形態では、装置２０１２は、追加の特徴および／または機能を含むことができる。たとえば、装置２０１２は、限定はしないが、磁気ストレージ、光ストレージなどを含む追加のストレージ（たとえば、取外し可能および／または取外し不能）をも含むことができる。そのような追加のストレージが、図２０ではストレージ２０２０によって示されている。一実施形態では、本明細書で与えられる１つまたは複数の実施形態を実装するためのコンピュータ可読命令は、ストレージ２０２０内でよい。ストレージ２０２０はまた、オペレーティングシステム、アプリケーションプログラムなどを実装するための他のコンピュータ可読命令をも格納することができる。たとえば、処理装置２０１６による実行のために、メモリ２０１８内にコンピュータ可読命令をロードすることができる。
【００７１】
[0090]  本明細書で使用する「コンピュータ可読媒体」という用語はコンピュータ記憶媒体を含む。コンピュータ記憶媒体は、コンピュータ可読命令または他のデータなどの情報の記憶のための任意の方法または技術で実装された、揮発性および不揮発性の取外し可能および取外し不能媒体を含む。メモリ２０１８およびストレージ２０２０はコンピュータ記憶媒体の例である。コンピュータ記憶媒体は、限定はしないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または他のメモリ技術、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（DVD）、または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気記憶装置、あるいは所望の情報を格納するために使用することができ、装置２０１２によってアクセスすることのできる任意の他の媒体を含む。任意のそのようなコンピュータ記憶媒体は装置２０１２の部分でよい。
【００７２】
[0091]  装置２０１２はまた、装置２０１２が他の装置と通信することを可能にする通信接続２０２６をも含むことができる。通信接続２０２６は、限定はしないが、モデム、ネットワークインターフェースカード（NIC）、一体型ネットワークインターフェース、無線周波数送信機／受信機、赤外線ポート、ＵＳＢ接続、またはコンピューティング装置２０１２を他のコンピューティング装置に接続する他のインターフェースを含むことができる。通信接続２０２６は、ワイヤード接続またはワイヤレス接続を含むことができる。通信接続２０２６は通信媒体を送信および／または受信することができる。
【００７３】
[0092]  「コンピュータ可読媒体」という用語は通信媒体を含むことができる。通信媒体は通常、コンピュータ可読命令または他のデータを搬送波や他の移送機構などの「被変調データ信号」で実施し、任意の情報送達媒体を含む。「被変調データ信号」という用語は、信号内に情報を符号化するように設定または変更される特徴のうちの１つまたは複数を有する信号を含むことができる。
【００７４】
[0093]  装置２０１２は、キーボード、マウス、ペン、音声入力装置、タッチ入力装置、赤外線カメラ、ビデオ入力装置、および／または任意の他の入力装置などの入力装置２０２４を含むことができる。１つまたは複数のディスプレイ、スピーカ、プリンタ、および／または任意の他の出力装置などの出力装置２０２２も装置２０１２内に含めることができる。ワイヤード接続、ワイヤレス接続、またはそれらの任意の組合せを介して、入力装置２０２４および出力装置２０２２を装置２０１２に接続することができる。一実施形態では、別のコンピューティング装置からの入力装置または出力装置を、コンピューティング装置２０１２のための入力装置２０２４または出力装置２０２２として使用することができる。
【００７５】
[0094]  バスなどの様々な相互接続によってコンピューティング装置２０１２の構成要素を接続することができる。そのような相互接続は、ＰＣＩ  ＥｘｐｒｅｓｓなどのＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（PCI）、ユニバーサルシリアルバス（USB）、ファイアワイヤ（IEEE 1394）、光バス構造などを含むことができる。別の実施形態では、コンピューティング装置２０１２の構成要素をネットワークによって相互接続することができる。たとえば、メモリ２０１８は、ネットワークによって相互接続される異なる物理位置に位置する複数の物理メモリユニットからなることができる。
【００７６】
[0095]  コンピュータ可読命令を格納するために利用される記憶装置を、ネットワークを介して分散させることができることを当業者は理解されよう。たとえば、ネットワーク２０２８を介してアクセス可能なコンピューティング装置２０３０が、本明細書で与えられる１つまたは複数の実施形態を実装するためにコンピュータ可読命令を格納することができる。コンピューティング装置２０１２は、コンピューティング装置２０３０にアクセスし、実行のためにコンピュータ可読命令の一部またはすべてをダウンロードすることができる。あるいは、コンピューティング装置２０１２は、必要に応じてコンピュータ可読命令のいくつかの部分をダウンロードすることができ、またはいくつかの命令をコンピューティング装置２０１２で実行し、いくつかをコンピューティング装置２０３０で実行することができる。
【００７７】
[0096]  実施形態の様々な動作が本明細書で与えられる。一実施形態では、記載の動作のうちの１つまたは複数は、１つまたは複数のコンピュータ可読媒体上に格納されたコンピュータ可読命令を構成することができ、コンピュータ可読命令は、コンピューティング装置によって実行される場合、記載の動作をコンピューティング装置に実施させる。動作のうちのいくつかまたはすべてが説明される順序を、これらの動作が必ず順序依存であることを示唆するものと解釈すべきではない。この説明の恩恵を得る当業者は代替順序を理解されよう。さらに、本明細書で与えられる各実施形態で、すべての動作が必ずしも存在するわけではないことを理解されよう。
【００７８】
[0097]   さらに、別段に規定されていない限り、「第１の」および／または「第２の」などは、時間的側面、空間的側面、順序などを示唆するものではない。むしろ、そのような用語は、特徴、要素、項目などについての識別子、名前などとして使用されるにすぎない。たとえば、第１のオブジェクトおよび第２のオブジェクトは一般に、オブジェクトＡおよびオブジェクトＢ、または２つの異なるもしくは同一のオブジェクト、または同じオブジェクトに対応する。
【００７９】
[0098]  さらに、本明細書では、「例示的（exemplary）」は、必ずしも有利なものとしてではなく、例、実例、例示などの役割を果たすことを意味するために使用される。本明細書では、「または（or）」は、排他的な「または」ではなく、包含的な「または」を意味するものとする。さらに、本願で使用される「ａ」および「ａｎ」は、別段に規定されていない限り、または文脈から単数形を対象とすることが明らかでない限り、「１つまたは複数（one or more）」を意味するように解釈される。さらに、Ａおよび／またはＢなどのうちの少なくとも１つは一般に、ＡまたはＢあるいはＡとＢの両方を意味する。さらに、「含む（includes）」、「有する（having、has）」、「と共に（with）」、および／またはそれらの変形が詳細な説明または特許請求の範囲で使用される範囲で、そのような用語は、「備える（comprising）」と同様に包含的なものとする。
【００８０】
[0099]  さらに、１つまたは複数の実装に関して本開示を図示および説明したが、本明細書および添付の図面を読み、理解することに基づいて、等価な変更および修正が当業者には思い浮かぶであろう。本開示は、すべてのそのような修正および変更を含み、以下の特許請求の範囲のみによって限定される。特に、上述の構成要素（たとえば、要素、リソースなど）によって実施される様々な機能に関して、そのような構成要素を説明するために使用される用語は、別段に規定されていない限り、本明細書で示される本開示の例示的実装内の機能を実施する、開示される構造に構造的には等価ではないとしても、説明した構成要素の指定の機能を実施する（たとえば、機能的に等価である）任意の構成要素に対応するものとする。さらに、本開示の特定の特徴をいくつかの実装のうちのただ１つに関して開示したが、任意の所与または特定の応用例とって望ましく、有利となるように、そのような特徴を他の実装の１つまたは複数の他の特徴と組み合わせることができる。
【図１】
2016522649.tif 000003
【図２】
2016522649.tif 000004
【図３】
2016522649.tif 000005
【図４】
2016522649.tif 000006
【図５】
2016522649.tif 000007
【図６】
2016522649.tif 000008
【図７】
2016522649.tif 000009
【図８】
2016522649.tif 000010
【図９】
2016522649.tif 000011
【図１０】
2016522649.tif 000012
【図１１】
2016522649.tif 000013
【図１２】
2016522649.tif 000014
【図１３】
2016522649.tif 000015
【図１４】
2016522649.tif 000016
【図１５】
2016522649.tif 000017
【図１６】
2016522649.tif 000018
【図１７】
2016522649.tif 000019
【図１８】
2016522649.tif 000020
【図１９】
2016522649.tif 000021
【図２０】
2016522649.tif 000022
【国際調査報告】
2016522649.tif 000023
2016522649.tif 000024
2016522649.tif 000025
2016522649.tif 000026
2016522649.tif 000027