デバイスにおける方法であって、前記デバイス上に、多数の体験モジュールを含むアプリケーションをインストールするステップであって、前記アプリケーションが実行しているとき前記体験モジュールの各々が、1組の機構を実装し、前記多数の体験モジュールの各々が、前記デバイスの特定のタイプに専用のコードを含む第1コンポーネントと、デバイスの多数のタイプにわたって共通であるコードを含む第2コンポーネントとを含む、ステップと、前記アプリケーションを実行する要求に応答して、前記デバイス上で、前記アプリケーションを実行するステップと、を備えている、方法。請求項1記載の方法において、前記アプリケーションが、前記デバイス上にあるアプリケーションシェルにおいて実行され、前記第1コンポーネントが、前記特定のタイプのデバイスを含む1つ以上のタイプのデバイスに専用のプレゼンテーションロジックおよびリソースを含み、多数のタイプのデバイスにわたって共通である前記コードが、前記特定のタイプのデバイスおよび他のタイプのデバイスにわたって共通であるビジネスロジックを備えている、方法。請求項2記載の方法において、前記多数のタイプのデバイスが、コンピュータータイプのデバイスと、移動体タイプのデバイスと、テレビジョンに基づくタイプのデバイスとを含み、前記デバイスの特定のタイプが、前記多数のデバイスのタイプの内の1つである、方法。請求項1記載の方法であって、更に、前記多数の体験モジュールの各々が前記多数の体験モジュールの他のものに直接アクセスすることを防止するために、前記多数の体験モジュールを互いに分離するステップを備えている、方法。請求項1記載の方法であって、更に、前記多数の体験モジュールの内第1体験モジュールから、要求された動作を含むメッセージを受け取るステップと、前記メッセージを前記多数の体験モジュールの内第2体験モジュールに送るステップと、前記多数の体験モジュールの内第2体験モジュールから、前記要求された動作を含む前記メッセージに対する応答を含む応答メッセージを受け取るステップと、前記応答メッセージを前記多数の体験モジュールの内前記第1体験モジュールに送るステップと、を備えている、方法。請求項5記載の方法であって、更に、前記多数の体験モジュールの各々から、前記体験モジュールが実行することができる1つ以上の動作の指示を受け取るステップと、前記多数の体験モジュールの1つ以上から、前記多数の体験モジュールの内特定の動作を実行できるものを特定する要求を受けるステップと、前記多数の体験モジュールの内前記1つ以上に、前記多数の体験モジュールの内前記特定の動作を実行することができる体験モジュールの指示を返すステップと、を含む、方法。請求項1記載の方法であって、更に、前記多数の体験モジュールの内第1体験モジュールから要求を受けるステップと、前記アプリケーションがインストールされている追加のデバイスに前記要求を送るステップと、前記追加のデバイスから、前記要求に対する応答を受け取るステップと、前記応答を、前記多数の体験モジュールの内前記第1体験モジュールに送るステップと、を備えている、方法。請求項1記載の方法であって、更に、更新の有無をチェックする要求をデプロイサービスに送るステップと、前記デプロイサービスから、前記多数の体験モジュールの内1つ以上に対する1つ以上の更新パッケージの指示を受け取るステップと、前記デプロイサービスから、前記多数の体験モジュールの前記1つ以上に対する前記1つ以上の更新パッケージを受け取るステップと、前記デバイス上に、前記1つ以上の更新パッケージをインストールするステップと、を備えている、方法。請求項8記載の方法であって、更に、前記1つ以上の更新パッケージの前記指示に基づいて、前記1つ以上の更新パッケージを即座にインストールすべきか否か判断するステップと、前記1つ以上の更新パッケージを即座にインストールすべきであると判断した場合、前記アプリケーションを次に実行する前に、前記1つ以上の更新パッケージをインストールするステップと、を備えている、方法。計算デバイスであって、プロセッサーと、多数の命令が格納されている1つ以上のコンピューター読み取り可能媒体と、を備えており、前記命令を前記プロセッサーによって実行すると、前記プロセッサーに、アプリケーションの異なる体験モジュール毎に異なる更新パッケージのカタログを維持させ、前記アプリケーションが多数の体験モジュールを含み、前記アプリケーションがデバイス上で実行しているときに、各体験モジュールが1組の機構を実装し、前記多数の体験モジュールの各々が、前記デバイスの特定のタイプに専用のプレゼンテーションロジックおよびリソースを含む第1コンポーネントと、多数のデバイスのタイプにわたって共通であるビジネスロジックを含む第2コンポーネントとを含み、前記デバイス上において前記アプリケーションに適用する更新パッケージがあるか否か判断させ、前記デバイス上において前記アプリケーションに適用する更新パッケージがある場合、前記デバイスに前記更新パッケージを送らせる、計算デバイス。請求項10記載の計算デバイスにおいて、前記多数のタイプのデバイスが、コンピュータータイプのデバイスと、移動体タイプのデバイスと、テレビジョンに基づくタイプのデバイスとを含み、前記デバイスの特定のタイプが、前記多数のデバイスのタイプの内の1つである、計算デバイス。請求項10記載の計算デバイスにおいて、前記多数の体験モジュールの1つに対する前記更新パッケージが、前記多数の体験モジュールの内前記1つにおけるコンポーネントに対する変更を特定する、計算デバイス。請求項10記載の計算デバイスにおいて、前記多数の命令が、更に、前記プロセッサーに、前記アプリケーションに対する多数の異なる更新パッケージを維持させ、前記特定のタイプのデバイスに少なくとも部分的に基づいて、前記デバイス上において前記アプリケーションに適用する更新パッケージがあるか否か判断させる、計算デバイス。請求項10記載の計算デバイスにおいて、前記多数の命令が、更に、前記プロセッサーに、前記更新パッケージの指示を前記デバイスに送らせ、前記デバイスから前記更新パッケージの要求を受けさせ、前記更新の要求に応答して、前記更新パッケージを前記デバイスに返させる、計算デバイス。請求項10記載の計算デバイスにおいて、前記多数の命令が、更に、前記プロセッサーに、前記更新パッケージの指示を前記デバイスに送らせ、前記更新パッケージの指示が、前記アプリケーションのマスターバージョン番号と、前記多数の体験モジュールの内、前記更新パッケージによって変更される体験モジュールを示す体験モジュール識別子と、前記多数の体験モジュールの内前記変更された体験モジュールの体験モジュールバージョン番号と、前記更新パッケージを前記デバイスによって即座にインストールすべきか、または遅らせることができるかの指示と、を含む、計算デバイス。0013本明細書では、多数の体験モジュールを含むアプリケーションについて論ずる。多数の体験モジュールを含むアプリケーションを多数の異なるタイプのデバイスに配信し、これらのデバイスにおいて、アプリケーションをインストールし実行する。アプリケーションにおける各体験モジュールは、そのモジュールと関連付けられた体験に合わせて1つ以上で1組とした機構を実装する。各体験モジュールは、関連付けられた体験に対するビジネスロジック例えば、命令およびデーターを含む包括ビジネスロジックコンポーネントを含む。この包括ビジネスロジックコンポーネントは、全てのデバイスに共通であり、デバイスのタイプには関係なく、種々のデバイスにインストールするために供給される。また、各体験モジュールは、デバイスタイプに特定のプレゼンテーションコンポーネントも含む。このプレゼンテーションコンポーネントは、関連付けられた体験に対するプレゼンテーションロジック例えば、命令およびデーター、およびリソース画像、ユーザー体験レイアウトマークアップ等のような、体験をユーザーに表示するためのリソースを含む。異なるタイプのデバイスには異なるタイプのプレゼンテーションコンポーネントを供給することによって、個々のタイプのデバイス、およびその個々のタイプのデバイスの能力に合わせて、関連付けられた体験のプレゼンテーションを個別に作成することが可能になる。0014また、アプリケーションがインストールされている種々のデバイスに、アプリケーション更新を配信することもできる。アプリケーション配信は、体験モジュール毎であり、したがってアプリケーション全体ではなく、アプリケーションの体験モジュールを更新する。体験モジュールのビジネスロジックに対する変更は、デバイスのタイプには関係なく、アプリケーションが実行している全てのデバイスに供給することができる。しかしながら、体験モジュールのプレゼンテーションコンポーネントに対する変更は、アプリケーションが実行しており、変更されるプレゼンテーションコンポーネントに対応するタイプのデバイスのみに供給することができる。0015図1は、1つ以上の実施形態にしたがって、多数の体験モジュールを含むアプリケーションを実装することができるシステム例100を示す。システム100は、パーソナルコンピューターPC、テレビジョンデバイス、および/または移動体デバイスというような、種々のデバイス上においてアプリケーションを実行するときに、共通のユーザー体験のための環境を可能にする。サービスおよびアプリケーションは、アプリケーションを利用している間、ビデオゲームをプレーしている間、ビデオを見ている間等において、あるデバイスから次のデバイスに移り変わるときに、共通のユーザー体験に対する3つの環境全てにおいて実質的に同様である。0016デバイス102は、多数の体験モジュールで構成されているアプリケーションのインストールおよび実行をサポートするアプリケーションシェル104を含む。種々の実施態様において、デバイス102は、コンピューター106、移動体デバイス108、またはテレビジョンに基づくデバイス110というような、種々のタイプの計算デバイスとすることができる。これら異なるタイプのデバイスは、一般に異なる構造および能力を有すると考えられ、したがって、デバイス102は異なるデバイスタイプの1つ以上に応じて構成することができる。例えば、デバイス102は、パーソナルコンピューター、デスクトップコンピューター、多画面コンピューター、ラップトップコンピューター、ノートブック等というような、コンピュータイプのデバイス106として実現することもできる。0017また、デバイス102は、移動体電話機、携帯用音楽プレーヤー、携帯用ゲーミングデバイス、タブレットコンピューター、多画面コンピューター等というような、移動体タイプのデバイス108として実現することもできる。また、デバイス102は、日常的な視聴環境において通常もっと大きな画面を有するまたは接続されているデバイスのような、テレビジョンタイプのデバイス110として実現することもできる。例えば、テレビジョンタイプのデバイス110は、テレビジョン、セットトップボックス、ゲーミングコンソール等を含むことができる。0018加えて、デバイス102は、家電製品例えば、冷蔵庫、電子レンジ等、自動車用PC、衣服等というような種々の他のタイプのデバイスとして実現することもできる。本明細書において記載する技法は、種々のタイプのデバイス102によってサポートすることができ、ここに記載する具体的な例に限定されるのではない。0019システム例100では、1つ以上の異なるタイプの多数のデバイス102が、いずれの所与の時点においてもクラウド112と通信することができる。クラウド112は、1つ以上のサーバーコンピューター、および/またはネットワークおよび/または他のデーター通信リンクを通じてデバイス102に接続されている他のタイプのデバイスの集合体である。このようなネットワークは、例えば、インターネット、ローカルエリアネットワークLAN、セルラーまたは他の電話ネットワーク、イントラネット、WiFiネットワーク、他の公衆ネットワークおよび/または企業固有のネットワーク、その組み合わせ等とすることができる。このような他のデーター通信リンクは、ユニバーサルシリアルバスUSBリンク、ワイヤレスUSBリンク、無線周波RFリンク、他の公衆通信リンクおよび/または企業固有の通信リンク、その組み合わせ等というような、有線リンクおよび/またはワイヤレスリンクとすることができる。0020異なるタイプのデバイス102は、各々、異なる物理的要件および能力を有する可能性がある。本明細書において論ずる多数の体験モジュールを含むアプリケーションは、デバイス120への体験の配信を可能にする。これらの体験は、個々のタイプのデバイスに合わせて特別に用意されるのであると共に、全てのタイプのデバイスに共通である。1つ以上の実施形態では、デバイスのタイプが定義され、包括的なタイプのデバイスに合わせて体験が個別に用意される。デバイスのタイプは、物理的特徴例えば、表示画面サイズ、プロセッサーパワー、サポートされているデーター入力メカニズム等、使用形態、および/またはデバイスの他の共通な特性によって定義することができる。0021クラウド112は、1つ以上の体験サービス116およびデプロイサービス118のためのプラットフォーム114を表す。プラットフォーム114は、クラウド112のハードウェア例えば、サーバーおよびソフトウェアリソースの基礎的な機能を抽象化する。サービス116および118は、デバイス102によって利用することができるがデバイス102から離れているアプリケーションおよび/またはデーターを含むことができる。サービス116および118は、ネットワークおよび/または先に論じたような他のデーター通信リンク上における1つ以上のサービスとして提供することができる。プラットフォーム114は、デバイス102を他の計算デバイス例えば、他のデバイス102に接続するために、リソースおよび機能を抽象化することができる。また、プラットフォーム114は、プラットフォーム114を通じて実施されるサービス116に対して出されたencounter要求に合わせて、対応する程度の規模を提供するために、リソースの規模調整を抽象化するように機能することもできる。0022体験サービス116は、アプリケーション、および/またはアプリケーションに種々の機能を設けるデーターを含む。設けられる個々の機能は、アプリケーションのタイプに基づいて様々であり、買い物または電子店舗機能、歌または画像または他のデーター記憶および/または引き出し機能、検索機能等を含むことができる。デプロイサービス118は、多数の体験モジュールを含むアプリケーションのデバイス102へのデプロイを管理する。ときの経過と共に種々の変更をアプリケーションに対して行うことができ、デプロイサービス118はこれらの変更のデバイス102に対するデプロイも管理する。以下で更に詳しく論ずるように、これらの変更が適用されるデバイス102に、当該変更をデプロイする。0023各アプリケーションは、多数の体験モジュールで構成されており、各体験モジュールは、その体験モジュールと関連付けられた体験またはそれによって提供される体験に対して、1組の1つ以上の機構を実現する。異なる機構とは、アプリケーションの異なる機能を指し、アプリケーションのユーザーによってあるいは他のコンポーネントまたはモジュールによって呼び出すことができる。1つのアプリケーションにおける異なる体験モジュールは、アプリケーションの開発者によって定義され、機構または機能の論理的集合体をアプリケーションのユーザーに供給するように定義されるのが一般的である。個々の体験モジュール、および各体験モジュールにおける1組の機構または機能は、アプリケーションの開発者が決定する。0024一例として、ある特定の移動体デバイスが携帯用音楽プレーヤーおよび携帯用ゲーミングデバイスの双方として動作することができると仮定する。移動体デバイス上におけるアプリケーションは、音楽再生体験と関連付けられた第1体験モジュールを含むことができ、トランスポート制御例えば、停止、再生、巻き戻し、シャッフルなどの機構、プレーリスト選択、および作成機構等というような、音楽再生体験に関する種々の機構を実装する。また、アプリケーションは、ゲーミング体験と関連付けられた第2体験モジュールも含むことができ、ゲーム選択機構、オンラインゲーミングのための体験サービス116との通信等というような、ゲーミング体験に関する種々の機構を実装する。また、アプリケーションは、市場体験と関連付けられた第3体験モジュールも含むことができ、ユーザーが購入のために歌またはゲームを選択することを可能にする検索およびブラウズ機構、歌またはゲームの購入のためにクレジットカードまたは他の情報を提供するための体験サービス116との通信等というような、ユーザーが新たな歌またはゲームを購入することができるオンライン市場に関する種々の機構を実装する。0025各体験モジュールは、2つのコンポーネント、即ち、包括ビジネスロジックコンポーネントおよびデバイスタイプ特定のプレゼンテーションコンポーネントに分離されている。包括ビジネスロジックコンポーネントは、関連付けられた体験に対するビジネスロジック例えば、コード、即ち、命令およびデーターを含み、全てのタイプのデバイスにわたって共通である。異なるタイプのデバイス毎に異なる必要がない命令およびデーターは、包括ビジネスロジックコンポーネントに含まれる。包括ビジネスロジックコンポーネントに含まれる個々の命令およびデーターは、個々のアプリケーションに基づいて様々に変化する。例えば、包括ビジネスロジックコンポーネントは、プレーリスト上にある歌をシャッフルするための命令およびデーター、文書内で単語または句を検索するための命令およびデーター、表計算機能を実装するための命令およびデーター等を含むことができる。0026デバイスタイプ特定のプレゼンテーションコンポーネントは、関連付けられた体験に対するプレゼンテーションロジック例えば、コード、即ち、命令およびデーターおよびリソース例えば、画像、ユーザー体験レイアウトマークアップ等というような体験をユーザーに表示するまたそれ以外で提示するためのリソースを含む。異なるタイプのデバイスには異なるプレゼンテーションコンポーネントを提供することができ、アプリケーションの開発者が、個々のタイプのデバイスおよびその個々のタイプのデバイスの能力に合わせて、関連付けられた体験の提示を特別に用意することを可能にする。異なるタイプのデバイス毎に異なるプレゼンテーションコンポーネントを提供することができるが、同じプレゼンテーションコンポーネントを異なるタイプのデバイスに提供するという状況が起こる可能性もある。00271つ以上の実施形態では、プレゼンテーションロジックおよびリソースが、個々のタイプのデバイスに合わせて、このタイプのデバイスの物理的特徴例えば、表示画面サイズ、プロセッサーパワー、入力および/出力コンポーネント等に基づいて、関連付けられた体験の提示を特別に用意する。例えば、データー入力のために大型画面および大型キーボードを通例有するコンピュータータイプのデバイス106に合わせて、第1プレゼンテーションロジックおよびリソースを特別に用意することができる。この第1プレゼンテーションロジックおよびリソースは、データーを表示する大きなウィンドウおよび/またはフレーム、キーボードまたはマウスによる種々の異なるユーザー入力等をサポートするユーザーインターフェースUIを含むことができる。第2プレゼンテーションロジックおよびリソースは、データー入力のために小型画面を通例有し、任意に小さなキーボードを有する移動体タイプのデバイス108に合わせて特別に用意することができる。この第2プレゼンテーションロジックおよびリソースは、データーを表示する小さいウィンドウおよび/またはフレーム、マイクロフォン例えば、音声コマンドまたはタッチスクリーンによる種々の異なるユーザー入力等をサポートするUIを含むことができる。第3プレゼンテーションロジックおよびリソースは、通例非常に大型の画面を有するがデーター入力のためのキーボードを有していないテレビジョンタイプのデバイス110に合わせて特別に用意することができる。この第3プレゼンテーションロジックおよびリソースは、データーを表示する大きなウィンドウおよび/またはフレーム、ハンドヘルドリモコンまたはハンドヘルドゲームコントローラによる種々の異なるユーザー入力等をサポートするUIを含むことができる。0028尚、本明細書において論ずるアプリケーションは、単にデバイス102にダウンロードしウェブブラウザーにおいて実行するウェブアプリケーションだけではないことは注記してしかるべきである。逆に、本明細書において論ずるアプリケーションは、種々の環境においてクラウド112からデバイス102にデプロイおよびインストールされる。また、アプリケーションに対する種々の更新も、クラウド112からデバイス102にデプロイおよびインストールすることができる。更に、本明細書において論ずるアプリケーションは、デバイス102がクラウド112に接続されていないときに実行することができるしかし、オンライン市場にアクセスするというような一部の機能は、デバイス102がクラウド112に接続されていないときには、デバイス102には利用可能ではあり得ない。加えて、本明細書において論ずるアプリケーションにおける異なる体験の提示は、そのアプリケーションが実行するデバイスの個々のタイプに合わせて特別に用意される。0029図2は、1つ以上の実施形態にしたがって、多数の体験モジュールを含むアプリケーションを実行するデバイス例200を示す。デバイス200は、種々の異なるタイプの計算デバイスとすることができ、例えば、図1のデバイス102である。0030デバイス200は、アプリケーションシェル202およびオペレーティングシステム204を含む。オペレーティングシステム204は、ワシントン州RedmondのMicrosoftCorpマイクロソフト社から入手可能なオペレーティングシステムのWindows登録商標オペレーティングシステムファミリーのいずれか、カリフォルニア州CupertinoのAppleCorporationアップル社から入手可能なオペレーティングシステムのMacOS登録商標オペレーティングシステムソフトウェアファミリーのいずれか、Linux登録商標系オペレーティングシステム、GoogleChrome系オペレーティングシステム、電話系オペレーティングシステム、携帯用ゲーミングデバイス系オペレーティングシステム、セットトップボックス系オペレーティングシステム等というような、種々の従来からのオペレーティングシステムのいずれでも可能である。多数の体験モジュールを含むアプリケーションをサポートするために、オペレーティングシステム204によってアプリケーションシェル202を実行する。あるいは、アプリケーションシェル202をオペレーティングシステム204の一部として含めることもでき、またはオペレーティングシステム204をアプリケーションシェル202の一部として含めることもできる。また、1つ以上の追加のアプリケーションまたはシェル図示せずをオペレーティングシステム204によって実行することもできる。0031アプリケーションシェル202は、本明細書において論ずる多数の体験モジュールを含むアプリケーションをサポートする。図示した例では、アプリケーション218は、シェル202に含まれるものとして、またはシェル202において実行するものとして示されている。1つのアプリケーション218がシェル202において実行することが示されているが、多数のアプリケーションをシェル202において同時に実行できることは認められてしかるべきである。加えて、1つのアプリケーションシェル202を示すが、多数のアプリケーションシェル202各々0個以上のアプリケーションを実行するをデバイス200上において同時に実行できることも認められてしかるべきである。0032アプリケーション218は、多数のn個体験モジュール2201、、220nを含み、各体験モジュールは異なる体験と関連付けられている。1つ以上の実施形態では、多数の体験モジュール220の集合体がアプリケーション218となり、体験モジュール220以外には、他の追加のコンポーネントやモジュールはアプリケーション218には含まれない。つまり、このような実施形態では、体験モジュール220は、シェル202において実行する個別モジュールとすることができ、これらがまとまってアプリケーションとなる。0033シェル202は、デバイス/サービス通信フレームワーク212、体験ストレージ214、およびコアコンポーネントインターフェース216を含む。尚、デバイス/サービス通信フレームワーク212およびコアコンポーネントインターフェース216の機能は、1つのコンポーネントまたはモジュールとして、または別個のコンポーネントまたはモジュールとして実装できることは認められてしかるべきである。また、デバイス/サービス通信フレームワーク212およびコアコンポーネントインターフェース216の内一方または双方の機能は、多数のコンポーネントまたはモジュールとして実装できることも認められてしかるべきである。0034デバイス/サービス通信フレームワーク212は、デバイス200とクラウド例えば、図1のクラウド112との間における通信を管理する。アプリケーション218のコンポーネントは、デバイス/サービス通信フレームワーク212に要求を送ることによって、および/またはデバイス/サービス通信フレームワーク212から応答または他の情報を受信することによって、クラウドと通信することができる。デバイス/サービス通信フレームワークは、種々のしかるべき設定およびプロトコルで構成され、またそうでなければこれらにアクセスすることができ、デバイス200がクラウドと通信することを可能にする。つまり、アプリケーション218は、クラウドとの通信を管理する負担が軽減されている。代わりに、アプリケーション218のコンポーネントは、デバイス/サービス通信フレームワーク212によって露出される標準的なインターフェース例えば、アプリケーションプログラミングインターフェースAPIを呼び出すことができる。異なるタイプのデバイス上における異なるデバイス/サービス通信フレームワーク212は、異なるやり方で動作してクラウドと通信することができるが、それでもなお同じインターフェースをアプリケーションに提供することができる。アプリケーションの開発者は、これらのアプリケーションが実行するデバイスがクラウドとどのように通信するかについて具体的な知識を必要とせずに、アプリケーションを書くことができる。0035体験ストレージ214は、アプリケーション218に対するコンポーネントのストレージを管理する。アプリケーションは、クラウド例えば、図1のクラウド112からデバイス200にデプロイされる。各アプリケーションは、多数のユーザー体験モジュールを含み、各ユーザー体験モジュールは、先に論じたような、多数のコンポーネントを含む。アプリケーションをデプロイすると、これらの種々のコンポーネントがデバイス/サービス通信フレームワーク212によって受け取られ、体験ストレージ214に供給される。体験ストレージ214は、受け取ったコンポーネントを不揮発性メモリー例えば、磁気ディスク、光ディスク、フラッシュメモリー等に格納する。0036デバイス200にアプリケーション218を最初にインストールするとき、デバイス200のコンポーネント例えば、以下で論ずるコアコンポーネントインターフェース216がインストールを実行する。アプリケーション218のインストールには、個々のファイルを記憶デバイスの特定の位置に書き込む、情報を登録ストレージ例えば、オペレーティングシステムのレジストリーに追加する等というような、種々のインストール動作が含まれる。ファイルは、体験ストレージ214および/またはデバイス200の他の記憶デバイスに書き込むことができる。インストールの後、シェル202においてアプリケーション218を実行することができる。また、アプリケーション218の新たなバージョンが入手可能になったとき、アプリケーション218を後から更新することもできる。これについては、以下で更に詳しく論ずる。0037アプリケーション218は、デバイス200のユーザーから受けた要求に応答して実行することができ、あるいは他のコンポーネント、モジュール、またはデバイスからの要求に応答して実行することができる。アプリケーション218を実行する要求に応答して、シェル202は、体験ストレージ214および/またはデバイス200の他の記憶デバイスから、アプリケーション218のためにインストールされたファイルを入手して、入手したコンポーネントを実行する。例えば、体験ストレージ214によって維持されているファイルまたは他の情報において、入手および実行すべき特定のコンポーネントを識別することができる。00381つ以上の実施形態では、コンポーネント218の多数のバージョンが体験ストレージ214に含まれる。例えば、コンポーネントの更新バージョンは、更新パッケージの形態で、デバイス/サービス通信フレームワーク212によって受信することができる。これについては、以下で更に詳しく論ずる。更新パッケージをインストールすると、デバイス200上にコンポーネントの新たなバージョンが得られる。以前にデプロイされていたコンポーネントおよびいずれの更新パッケージも体験ストレージ214内に維持されるので、コンポーネントの更新バージョンおよび以前のバージョンは双方共体験ストレージ214に維持される。コンポーネントの以前のバージョンを維持することによって、例えば、アプリケーション218の以前のバージョンにロールバックする、即ち、戻ること、アプリケーション218に対する変更の記録を付けること等が可能になる。体験ストレージ214は、任意に、特定の時間量が経過した後、コンポーネントに対する特定数の更新パッケージがその後体験ストレージ214に格納された後等というような、種々の規準に基づいて、以前のバージョンのコンポーネントを削除することができる。0039アプリケーション218に含まれている異なる体験モジュールの指示、およびこれらの体験モジュールのバージョン番号も、体験ストレージ214に維持される。これらのバージョン番号は、デバイス200上にインストールされている体験モジュールの現在のバージョンを特定し、これらの体験モジュールにおいて新たなバージョンのコンポーネントがデバイス200上にインストールされると更新される。体験ストレージ214には、アプリケーションのマスターバージョン番号も維持することができる。マスターバージョン番号は、デバイス上にインストールされているアプリケーション218の現在のバージョンを特定し、アプリケーション218の体験モジュールにおけるコンポーネントの新たなバージョンがデバイス200上にインストールされる毎に更新される。0040コアコンポーネントインターフェース216は、オペレーティングシステム204および他のデバイス200との通信を管理し、シェル202内における種々の通信に関する種々のデーターを維持し、種々の通信をサポートする。1つ以上の実施形態では、コアコンポーネントインターフェース216は、デバイス/サービス通信フレームワーク212がクラウドに送った要求の結果を格納するデーターキャッシュを維持する。このデーターキャッシュは、一時的に維持することができ例えば、アプリケーション218またはシェル202が実行している間、あるいは不揮発性メモリーにもっと長い期間存続させることもできる。0041加えて、1つ以上の実施形態では、コアコンポーネントインターフェース216は、デバイス特定コマンドを抽象化するプレゼンテーションフレームワークを含む。異なるタイプのデバイス、そして同じタイプの異なるデバイスであってもデバイスの異なるモデル、異なる製造業者からのデバイス等というような、異なるやり方で特定のプレゼンテーション機能を実装することができる。インターフェース216のプレゼンテーションフレームワークは、特定のプレゼンテーション機能を実装するやり方を抽象化し、標準的なインターフェース例えば、APIをアプリケーション218のコンポーネントに提供する。このため、アプリケーションのコンポーネントは、コアコンポーネントインターフェース216によって露出される標準的なインターフェースを呼び出すことができ、アプリケーションの開発者は、特定のプレゼンテーションコマンドまたは情報が、アプリケーションが実行しているデバイスの特定のハードウェアにどのようにして伝達されるかについて具体的な知識を必要とせずに、アプリケーションを書くことが可能になる。1つ以上の実施形態では、プレゼンテーションフレームワークは、ワシントン州RedmondのMicrosoftCorpから入手可能なSilverlight登録商標プラットフォームとすることができる。0042アプリケーション218は、多数nの体験モジュール2201、、220nを含み、各々が異なる体験と関連付けられている。これらの異なる体験は、先に論じたような、異なる1組の機構を含む。加えて、各体験モジュール220は、デバイスタイプ専用プレゼンテーションコンポーネント222および包括ビジネスロジックコンポーネント224の双方を含む。包括ビジネスロジックコンポーネント224は、関連付けられた体験に対するビジネスロジック例えば、命令およびデーターを含み、先に論じたような全てのタイプのデバイスにわたって共通である。デバイスタイプ専用プレゼンテーションコンポーネント222は、関連付けられた体験に対するプレゼンテーションロジック例えば、命令およびデーターおよびリソース例えば、画像、ユーザー体験レイアウトマークアップ等というような、体験をユーザーに表示するまたそれ以外で提示するためのリソースを含み、これらは、デバイス200のタイプに専用であることができ、またはデバイス200のタイプに合わせて特別に用意することができる。00431つ以上の実施形態では、アプリケーションシェル202は、体験モジュール220が互いに分離されるように、コンポーネント222および224の実行を例えば、コアコンポーネントインターフェース216を通じて管理する。この分離によって、1つの体験モジュール220におけるコンポーネントが他の体験モジュール220のコンポーネントまたは、コンポーネントが使用する汎用メモリー空間に直接アクセスすることを防止する。また、この分離は、サンドボクシングと呼ぶこともでき、シェル202によって種々の異なる従来のやり方で実現することができる。0044体験モジュール220は互いに直接アクセスすることが禁止されているが、1つ以上の実施形態では、コアコンポーネントインターフェース216が体験間相互作用モジュール226を含み、1つの分離された体験の中では不可能な、もっと豊富な機能を可能にするように、体験間相互作用をサポートする。体験間相互作用モジュール226はインターフェースを設け、これを通じて、1つの体験モジュール220が他の体験モジュール220にメッセージを送ることができる。このようなメッセージは、例えば、動作の要求、0個以上のパラメーター、およびメッセージを送るべき先である体験の指示を含む。パラメーターは、通例、データーへのポインターまたはデーターの他の識別子特定の歌の題名へのポインター、特定のムービーデーターへのポインター等を含むが、代わりに実際のデーター例えば、歌の題名、ムービーデーター等を含むこともできる。例えば、1つの体験モジュール220が、コンテンツライブラリー体験モジュールであって、ユーザーが彼または彼女のライブラリー例えば、歌あるいは他のオーディオおよび/またはビデオコンテンツのライブラリーから特定のコンテンツを維持および選択することを可能にするコンテンツライブラリー体験を提供するのであってもよく、一方他の体験モジュールが、コンテンツ再生体験モジュールであって、特定のコンテンツの再生を可能にするコンテンツ再生体験を提供するのであってもよい。コンテンツライブラリー体験モジュールは、再生のためにユーザーが選択する特定のコンテンツのメディア項目識別子であるパラメーターを有する歌演奏メッセージをコンテンツ再生体験モジュールに送ることができる。0045加えて、1つ以上の実施形態では、体験モジュール220は、体験間相互作用モジュール226に、体験モジュール220が実行することができる動作のタイプを示すように登録することもできる。この登録は、例えば、体験モジュール220が実行することができる、潜在的に要求される可能性がある動作のリストを含む。他の体験モジュール220は、体験間相互作用モジュール226に問い合わせて、どの要求された動作をどの体験モジュール220によって実行できるか特定することができ、こうして、個々の要求された動作を実行させるためには、どの体験モジュール220に個々のメッセージを送ればよいか知ることができる。あるいは、いずれの所与の要求された動作についても、1つの体験モジュール220のみがその動作を実行できることを、体験間相互作用モジュール226に登録するのでもよい。したがって、他の体験モジュール220がその動作を実行させたい場合、その特定の動作を要求するメッセージをしかるべきパラメーターと共に体験間相互作用モジュール226に送ることができる。体験間相互作用モジュール226は、要求された動作を実行することが登録されているのはどの体験モジュール220か把握しており、メッセージをその体験モジュール220に供給する。00461つ以上の実施形態では、体験間相互作用モジュール226は、要求元の体験モジュール220に応答メッセージを返送することもサポートする特定の動作を要求するメッセージを発信した元である体験モジュール220。この応答メッセージは、例えば、要求されたデーター、動作が実行されたことの確認等を含むことができる。応答メッセージを送る応答側の体験モジュール220は、この応答メッセージを送るべき要求元の体験モジュール220を特定することができる例えば、要求元の体験モジュール220の指示が、体験間相互作用モジュール226によって当該体験モジュールに供給された場合。あるいは、体験間相互作用モジュール226が、送られたメッセージの記録を維持し、応答側の体験モジュールがどの体験モジュール220が要求元の体験モジュール220であるか知ることなく、応答メッセージを要求元の体験モジュール220に転送することもできる。0047体験モジュール220が受信したメッセージを理解できないという状況が発生することもあり得る。例えば、受信側の体験モジュール220が実行しないまたはしようとしない動作を要求することがあり、受信側の体験モジュールが、その動作をサポートしない古いバージョンであること等もあり得る。このような状況では、受信側体験モジュール220は単にそのメッセージを無視することができる。あるいは、受信側体験モジュール220は、応答メッセージ、または要求された動作が実行されなかったことの指示を返送することができる。00481つ以上の実施形態では、体験モジュール220は、互いにメッセージを送り合う際に、ユニフォームリソースロケーターURLに基づくプロトコルを採用する。メッセージを送ろうとする先の体験モジュール220、要求された動作、およびパラメーターを、URLに埋め込む。このURLの記録は、メッセージを送る体験モジュール220が保持することができ、メッセージの履歴を維持することができ、実行取り消しコマンドおよび/または再実行コマンドを含むメッセージを体験モジュール220に送ることができる等である。0049加えて、1つ以上の実施形態では、コアコンポーネントインターフェース216は、デバイス間通信をサポートし、デバイス200が1つ以上の他のデバイスと通信することが可能になる。例えば、デバイス間通信によって、図1の異なるデバイス102同士が互いに通信することが可能になる。デバイス間通信は、先に論じたクラウド例えば、図1のクラウド112との通信と同じように、種々の異なるネットワークまたは通信リンクを跨いで実行することができる。0050コアコンポーネントインターフェース216は、異なるやり方でデバイス間通信をサポートすることができる。1つ以上の実施形態では、コアコンポーネントインターフェース216は、相互作用モジュールを含む。相互作用モジュールは、デバイス/サービス通信フレームワーク212がクラウド例えば、図1のクラウド112と通信するのと同様のやり方で、他のデバイスとの通信をサポートする。コアコンポーネントインターフェース216は、先に論じたフレームワーク212によって露出されるインターフェースと同様の標準インターフェースを露出し、アプリケーション218のコンポーネントがこの標準インターフェースを呼び出すことができる。あるいは、1つのインターフェースを露出することができ例えば、フレームワーク212によって、アプリケーション218のコンポーネントからの、他のデバイスにアクセスする要求は、クラウドに導かれるのではなく、フレームワーク212によってコアコンポーネントインターフェース216に導かれる。0051つまり、他のデバイスに通信を送ることを望むアプリケーション218のコンポーネントが、フレームワーク212を通じてクラウドに通信を送るのと同様のやり方で通信を送り、その他のデバイスから、フレームワーク212を通じてクラウドから通信を受信するのと同様のやり方で応答を受信することができ、他のデバイスと通信するために用いられる種々の設定および/またはプロトコルに関与する必要はない。代わりに、コアコンポーネントインターフェース216には、他のデバイスと通信するために用いられるこのような設定および/またはプロトコルが組み込まれており、またそうでなければこれらにアクセスすることができる。また、コアコンポーネントインターフェース216は、デバイス200が通信することができる他のデバイス200を特定するように構成されている。他のデバイスは、従来のBluetooth登録商標デバイス発見技法を用いる、照合サービス例えば、図1の体験サービス116によって設けられるを用いる等というような、種々の異なるやり方で特定することができる。0052本明細書では、アプリケーション218に対する更新に関する種々の論述が含まれるが、デバイス200の他のコンポーネントまたはモジュールも更新できることは認められてしかるべきである。例えば、シェル202を更新することができる。デバイス200のこのような他のコンポーネントまたはモジュールに対する更新は、本明細書において論ずるアプリケーション218を更新する技法と同様の技法を用いる、または他の技法を用いるというような、種々のやり方で供給し、デバイス200上で行うことができる。0053図3は、1つ以上の実施形態にしたがって、多数の体験モジュールを含むアプリケーションをサポートするプラットフォーム例300を示す。プラットフォーム300は、例えば、図1のプラットフォーム114とすることができる。プラットフォーム300は、種々の異なるタイプのサービス、または種々のソフトウェアを実行する他の計算デバイスの内1つ以上を用いて実装することができる。0054プラットフォーム300は、アプリケーションインターフェース302、1つ以上の体験特定サービス304、およびデプロイサービス306を含む。アプリケーションインターフェース302は、プラットフォーム300によって露出されるインターフェース例えば、APIであり、デバイス例えば、図1のデバイス102または図2のデバイス200上で実行するアプリケーションがプラットフォーム300と通信すること可能にする。1つ以上の実施形態において、図2のデバイス200のデバイス/サービス通信フレームワーク212は、アプリケーションインターフェース302を呼び出すことによって、プラットフォーム300と通信する。デバイスは、アクセス体験特定サービス304および/またはデプロイサービス306に、アプリケーションインターフェース302を通じてアクセスする。0055体験特定サービス304は、例えば、図1の体験サービス116である。体験特定サービス116はアプリケーションおよび/またはこのアプリケーションに種々の機能を設けるデーターを含む。設けられる個々の機能は、サービス304が機能を設けるアプリケーションのタイプに基づいて様々である。例えば、体験特定サービス304によって設けられる個々の機能は、買い物または電子店舗機能、歌または画像または他のデーター記憶および/または引き出し機能、検索機能、オンラインゲーミングのための友人または仲間との対決、ソーシャルネットワーク交流機能等を含むことができる。0056デプロイサービス306は、アプリケーションのデバイス例えば、図1のデバイス102または図2のデバイス200へのデプロイを管理する。アプリケーションのデバイスへのデプロイには、アプリケーションの初期デプロイ例えば、アプリケーションを最初にデバイスにインストールするときが含まれる。また、アプリケーションのデバイスへのデプロイには、デバイスにインストールされているアプリケーションに変更をデプロイすることも含まれる。あるいは、デバイスに最初にインストールするアプリケーションは、光ディスク例えば、DVDまたはCDROMから、他のデバイスから等というように、他のやり方で入手することもできる。しかしながら、デバイス上における初期インストールのために、デプロイサービス306以外からアプリケーションを入手する場合であっても、デプロイサービス306はその後このアプリケーションに対する変更のデプロイを管理する。0057アプリケーションの開発者は、種々の理由から、種々の時点においてアプリケーションを変更することを望む可能性がある。例えば、開発者は、新たな機能をアプリケーションに追加する、アプリケーションにおいて発見された問題を解決する、特定のタイプのデバイス上においてアプリケーションによって情報を提示するやり方を変更する例えば、ユーザーフィードバックによって等を望むこともあり得る。これらの変更は、アプリケーションに対する非常に重要な変更から、アプリケーションに対する非常に些細な変更までの範囲を取り得る。0058開発者がアプリケーションを変更するとき、開発者はそのアプリケーションの1つ以上の体験モジュールの1つ以上のコンポーネントを変更し、その結果新たなバージョンの体験モジュールが得られる。開発者は、通例、アプリケーション全体を変更する必要はない。代わりに、所望の変更による影響を受ける体験モジュールのみを変更すればよい。例えば、10個の体験モジュールを含むアプリケーションの内1つの体験モジュールだけに影響を及ぼす変更を行うことを望む場合、その1つの体験モジュールの新たなバージョンだけを生成し、デバイスにデプロイすればよい。00591つ以上の実施形態では、体験モジュールにおけるコンポーネントへの変更をデプロイするには、変更する体験モジュールに対する更新パッケージを、アプリケーションをインストールしその変更を適用するデバイスに送る。更新パッケージは、体験モジュールに対する1つ以上の交換コンポーネントを含ませる、コンポーネントに対する1つ以上の変更の指示例えば、新たなバージョンのコンポーネントと以前のバージョンのコンポーネントとの間の相違のリストを含ませること等によって、異なるやり方で変更を特定することができる。また、更新パッケージは、アプリケーションに追加する新たな体験モジュールの新たなコンポーネントも含むことができる。0060開発者がアプリケーションを変更するために新たな更新パッケージを作成するとき、開発者は新たな更新パッケージをプラットフォーム300に供給する。デプロイ306は、更新パッケージが格納されている更新レポジトリー312を含む。また、更新パッケージの以前のバージョンも更新レポジトリー312に維持し、その結果、体験モジュールの多数の異なるバージョンの更新パッケージを、更新レポジトリー312に含めることができる。0061デバイス更新コンポーネント314は、更新レポジトリー312を管理し、そして適した更新パッケージを適したデバイスに供給する。デバイス更新コンポーネント314は、更新パッケージの以前の全てのバージョンを維持することができ、あるいは種々の規準に基づいて更新パッケージの以前のバージョンを削除することができる。例えば、デバイス更新コンポーネント314は、特定の時間量が経過した後、同じコンポーネントに対して特定数の更新パッケージがその後更新レポジトリー312に格納された後等に、以前の更新パッケージを削除することができる。0062また、デバイス更新コンポーネント314は、種々の更新パッケージを記述する情報をバージョンカタログ316に維持する。バージョンカタログ316は、更新レポジトリー312に格納されている更新パッケージに関する種々の情報を特定する、表またはリストのような、種々の異なるデーター構造とすることができる。バージョンカタログ316は、デバイス更新コンポーネント314が、デバイスから受信したバージョン番号の指示に基づいて、更新レポジトリー312に格納されている更新パッケージある場合の内どれをそのデバイスにデプロイすべきか決定することを可能にする。1つ以上の実施形態では、バージョンカタログ316は、アプリケーション毎に異なる表を含み、あるいは多数のアプリケーションに同じ表を用いることもでき、表におけるどの情報がどのアプリケーションに対応するかという指示を含むことができる。0063尚、体験モジュールに対する変更の中には、アプリケーションがインストールされている全てのタイプのデバイスに適用できない場合もあることは、注記してしかるべきである。例えば、デバイス特定プレゼンテーションコンポーネントに対する変更は、ある特定のタイプのデバイスには行ってもよいが、他のタイプのデバイスには行わないのでもよい。したがって、体験モジュールに対する変更は、その特定の一タイプには適用するが、他のタイプのデバイスには適用しない。00641つ以上の実施形態では、バージョンカタログ316は、デバイス上にインストールされているまたはインストールすることができるアプリケーション毎に表またはリストを含み、このような各表は1つ以上のレコードを含む。各レコードは、更新レポジトリー312に格納されている個々の更新パッケージに対応する。バージョンカタログ316内におけるレコードに対応する個々の更新パッケージは、異なるやり方で識別することができる。1つ以上の実施形態では、各レコードは、少なくとも、体験モジュール識別子、マスターバージョン番号、およびデバイスタイプを含む。また、更新レポジトリー312は、体験モジュール識別子、マスターバージョン番号、およびデバイスタイプがキーに設定されており、バージョンカタログ316および更新レポジトリー312におけるレコード間の対応を維持する。0065表1は、1つ以上の実施形態にしたがって、バージョンカタログ316のレコードに含まれている情報の一例を示す。尚、表1は一例であり、代わりに、異なる情報をバージョンカタログ316のレコードに含めることもでき、および/または表1に含まれている情報の一部がバージョンカタログ316のレコードに含まれていなくてもよいことは注記してしかるべきである。0066アプリケーションのマスターバージョン番号は、そのアプリケーションの新たなバージョンが出る毎に増大する。これは、アプリケーションに対する新たな更新パッケージが更新レポジトリー312に追加される毎にと言うこともできる。デバイス更新コンポーネント314が、デバイス上にインストールされているアプリケーションの現バージョンの指示を受信すると、デバイス更新コンポーネント314は、受信したバージョンを、バージョンカタログ316におけるアプリケーションの最新マスターバージョン番号と比較する。2つのバージョン番号が同じである場合、デバイスにデプロイする新たな更新パッケージはないことになる。しかしながら、2つのバージョン番号が同じでない場合、新たなバージョンのアプリケーションが存在するので、デバイス更新コンポーネント314は、デバイスにデプロイすべき1つ以上の更新パッケージがあるか否か判断する。0067体験識別子は、アプリケーションに含まれている多数の体験モジュールの内どれを、更新パッケージが変更するかを示す。通例、1つの異なる更新パッケージは、1つの体験モジュールに対する変更を含むが、代わりに、1つの更新パッケージが多数の体験モジュールに対する変更を含むこともできる。0068体験バージョン番号は、体験モジュールに対する変更がある毎に増大する。したがって、体験モジュールの体験バージョン番号は、その体験モジュールに新たな更新パッケージができる毎に増大する。つまり、マスターバージョン番号は、アプリケーションに含まれている体験モジュールのいずれかに変更がある毎に増大するが、体験バージョン番号は、体験識別子によって識別された体験モジュールに変更があるときにのみ増大する。新たな体験モジュールが更新パッケージによって追加された場合、体験バージョン番号は特定の値例えば、1の値を有することができる。0069即座更新欄は、対応する更新パッケージのインストールを即座に行うべきか、または遅らせることができるかを示す。アプリケーションの開発者は、対応する更新パッケージのインストールを直ちに行うべきか、または遅らせることができるか指示し、この指示が、その特定の更新パッケージに対応するレコードの即座更新欄として追加される。0070先に論じたように、全ての更新パッケージが全てのデバイスに適用されるとは限らない。したがって、バージョンカタログ316におけるアプリケーションのマスターバージョン番号が、特定のデバイスにインストールされているアプリケーションの現バージョンと異なっていても、そのアプリケーションのもっと新しいバージョンが、その特定のデバイスには適用されないこともあり得る。デバイス更新コンポーネント314は、デバイスタイプマスク、ユーザー識別子、およびロカール識別子の内1つ以上に基づいて、更新パッケージが特定のデバイスに適用されるか否か判断する。ユーザー識別子およびロカール識別子は、任意に、特定のデバイスのユーザーがオプトインに設定しているまたはオプトアウトに設定していない場合にのみ、更新パッケージがこのデバイスに適用され、彼または彼女のユーザー識別子および/またはロカール識別子がこのように用いられるのを許可するか否か判断するために用いることができる。0071デバイスタイプマスクは、更新パッケージが適用されるデバイスの1つ以上のタイプを示す。アプリケーションの開発者は、特定の更新パッケージが適用されるデバイスのタイプを示し、この指示が、その特定の更新パッケージに対応するレコードのデバイスタイプマスクとして追加される。0072同様に、ユーザー識別子は、更新パッケージが適用される1人以上のユーザーを示す。アプリケーションの開発者は、例えば、アプリケーションの異なる2つのバージョンを試験することを望むこともある。開発者は、2つの異なるバージョンで2つの更新パッケージを作成し、どのユーザーがどのバージョンを受け取るかを示し、この指示が、対応するレコードのユーザー識別子欄に追加される。ユーザーは、例えば、そのユーザーに付随するユーザー名例えば、ユーザーがログイン情報をプラットフォーム300に提供してある場合、デバイスの識別子または物理的特徴等によって識別することができる。あるいは、何人かのユーザーが、特定のアプリケーションの検査人になるためにサインアップすることもできる。デバイス更新コンポーネント314は、特定のデバイスのユーザーが検査人になるためにサインアップしたか否かの指示を受け取る例えば、デバイス自体から、プラットフォーム300の他のコンポーネントまたはモジュールから等。次いで、ユーザー識別子は、デバイスのユーザーの識別子に基づいて、対応する更新パッケージがそのデバイスに適用されるか否か示すことができる。0073ロカール識別子は、更新パッケージが適用されるデバイスの1つ以上の位置を示す。アプリケーションの開発者が、他の地理的位置または境界に基づいて、あるいは他の位置に基づく境界に基づいて、例えば、異なる国毎、異なる州毎に異なるバージョンのアプリケーションを有することを望むこともあり得る。開発者は、異なるバージョンで異なる更新パッケージを作成し、どのデバイス位置がどのバージョンを受けるべきかを示し、この指示を対応するレコードのロカール識別子欄に追加する。デバイス更新コンポーネント314は、特定のデバイスの位置の指示を受け取る例えば、デバイス自体から、プラットフォーム300の他のコンポーネントまたはモジュールから等。次いで、ロカール識別子は、デバイスの位置に基づいて、対応する更新パッケージがそのデバイスに適用されるか否か示すことができる。0074デバイス更新コンポーネント314は、種々の異なるイベントに応答して、および/または種々の異なる時点において、アプリケーションがインストールされているデバイスに、1つ以上の更新パッケージを送ることができる。1つ以上の実施形態では、デバイスのコアコンポーネントインターフェース例えば、図2のコアコンポーネントインターフェース216は、規則的な間隔または不規則な間隔で例えば、毎日、アプリケーションが実行し始めたとき、アプリケーションの実行が終了したとき、デバイスにインストールされているアプリケーションが要求をプラットフォーム300に提出したとき等に、デプロイサービス306にアクセスするために、更新チェック要求を送るように構成されている。0075デバイスによって送られる更新チェック要求は、デバイスのタイプの指示、およびそのデバイスにインストールされている現アプリケーションのマスターバージョン番号を含む。デバイス更新コンポーネント314は、バージョンカタログ316をチェックして、アプリケーションの体験モジュールのいずれかに対して、デバイスに適用される更新パッケージがあるか否か判断する。アプリケーションの体験モジュールのいずれかに対して、デバイスに適用される更新パッケージがある場合、これらの更新パッケージをデバイスにデプロイする。そうでない場合、デバイスには更新パッケージをデプロイしない。0076あるいは、デバイスは他のやり方でアプリケーションに対する更新をチェックすることもできる。例えば、デバイス上にインストールされている現アプリケーションのマスターバージョン番号を送る代わりに、更新チェック要求は、特定の体験モジュールの識別子、およびデバイス上にインストールされている現アプリケーションの体験モジュールの体験バージョン番号を含むことができる。つまり、デバイスは、体験モジュール毎に、体験モジュールに対する更新をチェックすることができる。0077他の実施形態では、デバイスに更新チェック要求をプラットフォーム300に送らせる代わりに、プラットフォーム300が更新パッケージをデバイスにプッシュすることができる。例えば、デバイス更新コンポーネント314は、種々のデバイス上にインストールされているアプリケーションのマスターバージョン番号および/または体験バージョン番号のレコードを維持することができる。デバイスに適用されるがまだそのデバイスにデプロイされていない更新パッケージが入手可能になったとき、デバイス更新コンポーネント314はその更新パッケージをこのデバイスにデプロイする。0078また、デプロイサービス306は、更新パッケージの廃止もサポートする。1つ以上の実施形態では、更新パッケージを廃止するためには、開発者が交換更新パッケージを供給する例えば、廃止される更新パッケージの前に用いられた直前の更新パッケージとすることができる。また、開発者は、交換更新パッケージのインストールを即座に行うべきことを示す。こうして、しかるべきデバイスに交換更新パッケージをデプロイして、直前の更新パッケージを効果的に廃止する。0079先に論じたように、開発者がアプリケーションを変更するとき、開発者は、更新レポジトリー312に格納する変更の更新パッケージ、およびバージョンカタログ316に含ませるための更新パッケージを記述した情報を提供する。開発者は、更新パッケージおよびこの更新パッケージを記述する情報を異なるやり方で提供することができる。例えば、更新パッケージおよびこの更新パッケージを記述する情報を、プラットフォーム300の管理者に電子通信例えば、電子メールによって、光ディスクまたは他の携帯用記憶媒体等によって提供することができる。次いで、プラットフォーム300の管理者は、更新パッケージを更新レポジトリー312に追加し、更新パッケージを記述する情報をバージョンカタログ316に追加することができる。0080あるいは、更新パッケージおよびこの更新パッケージを記述する情報を、デバイス更新コンポーネント314から自動的に入手することもできる。例えば、開発者は、サーバーまたは他の計算デバイス上に、更新パッケージおよびこの更新パッケージを記述する情報を維持することができるデプロイサービス306が更新パッケージおよびこの更新パッケージを記述する情報を維持するのと同様のやり方で。デバイス更新コンポーネント314は、開発者が維持している計算デバイスに更新要求を送り、この計算デバイスから、更新パッケージおよびこの更新パッケージを記述する情報を入手することができる。このように、デバイスが更新パッケージおよびこの更新パッケージを記述する情報をデプロイサービス306から入手するのと同様のやり方で、デプロイサービス306は、自動的に、更新パッケージおよびこの更新パッケージを記述する情報を、開発者が維持している計算デバイスから入手することができる。0081図4は、1つ以上の実施形態にしたがってアプリケーションを更新する一例を示す。図4の例では、図3のデプロイサービス306および図2のデバイス200が示されている。デバイス200上にインストールされているアプリケーション402は、マスターバージョン番号が58であり、3つの体験モジュールを有する。アプリケーション402における第1体験モジュールは、体験識別子がAであり、体験バージョン番号が3である。アプリケーション402における第2体験モジュールは、体験識別子がBであり、体験バージョン番号が7である。アプリケーション402における第3体験モジュールは、体験識別子がCであり、体験バージョン番号が5である。0082バージョンカタログ316は、データー例を含む表として示されている。このバージョンカタログの表には、多数のレコード各々は表における横方向の行になっているが示されている。バージョンカタログ316の表において、第1列はマスターバージョン番号410を示し、第2列は体験識別子412を示し、第3列は体験バージョン番号414を示し、第4列はデバイスタイプマスク416を示し、最後の列は即座更新値418を示す。また、バージョンカタログ316には、マスターバージョン番号57の前の更新パッケージに対応する行というような、追加の行として示されているが、これら種々の動作の処理を実行するために示される順序には限定されない。プロセス500は、多数の体験モジュールを含むアプリケーションを実装するプロセス例であり、多数の体験モジュールを含むアプリケーションを実装することについての、異なる図を参照した追加の論述も、本明細書に含まれる。0092プロセス500では、多数の体験モジュールを含むアプリケーションをインストールする動作502。このアプリケーションは、プロセス500を実装するデバイス上にインストールされ、先に論じたように、多数の体験モジュールを含む。0093このアプリケーションを実行する要求に応答して、このアプリケーションの現バージョンを実行する動作504。このアプリケーションの現バージョンは、プロセス500を実装するデバイス上にインストールされているアプリケーションの最新バージョンである。0094加えて、体験モジュールの内1つに対する更新パッケージが入手可能か否かについてチェックを行う動作506。このような更新パッケージがあるとすれば、プロセス500を実装するデバイスに適用される更新パッケージである。このチェックは、デプロイサービスに更新チェック要求を送ることによって行われる。0095アプリケーションの体験モジュールに対する更新パッケージが入手可能でない場合、プロセス500は動作504に戻って、現バージョンのアプリケーションを実行する。しかしながら、体験モジュールの内1つに対する更新パッケージが入手可能である場合、この更新パッケージを入手する動作508。0096入手した更新パッケージをインストールして、現バージョンのアプリケーションを更新する動作510。更新パッケージは、アプリケーションが実行し終えた後にインストールすることができ例えば、更新パッケージのインストールを遅らせることができる場合、あるいは更新パッケージをインストールすることができるように、アプリケーションは実行を終了することができ例えば、更新パッケージを即座にインストールすべきとき、そしてアプリケーションを再度実行する。次いで、プロセス500は動作504に戻り、現バージョンのアプリケーションを実行し続ける。0097尚、図5における動作の順序に拘わらず、動作506における更新パッケージの入手可能性をチェックする前に、アプリケーションを実行することができ、あるいはアプリケーションを実行する前に、更新パッケージの入手可能性をチェックすることもできることは注記してしかるべきである。0098図6は、1つ以上の実施形態にしたがって、更新をデバイスにデプロイするプロセス例600を示すフローチャートである。プロセス600は、ソフトウェア、ファームウェア、ハードウェア、またはその組み合わせで実現することができる。図6の左側に示すプロセス600の動作は、図1のデバイス102、または図2のデバイス200のようなデバイスによって実行する。図6の右側に示すプロセス600の動作は、図1のデプロイサービス118、または図3のデプロイサービス306のようなデプロイサービスによって実行する。プロセス600は、1組の動作として示されているが、これら種々の動作の処理を実行するために示される順序には限定されない。プロセス600は、更新をデバイスにデプロイするプロセス例であり、更新をデバイスにデプロイすることについての、異なる図を参照した追加の論述も本明細書に含まれる。0099プロセス600では、更新パッケージのレポジトリーおよび更新パッケージ記述のカタログを、デプロイサービスにおいて維持する動作602。更新パッケージは、先に論じたように、個々のアプリケーションの体験モジュールに対する変更を含む。00100デバイスは、更新チェック要求をデプロイサービスに送る動作604。先に論じたように、更新チェック要求は、種々の時点においておよび/または種々のイベントに応答して送ることができる。00101デプロイサービスは、更新チェック要求を受け取り動作606、デバイスに適用するあらゆる更新パッケージを特定する動作608。更新パッケージをデバイスに適用するか否かは、デバイス上における現在の体験モジュールのバージョン、デバイスのタイプ、デバイスのユーザー等というような、先に論じたような種々の異なる規準に応じて判断することができる。00102デバイスに適用するあらゆる更新パッケージの指示をデバイスに戻す動作610。この指示は、デバイスに適用する0個以上の更新パッケージを特定する。00103デバイスは、あらゆる更新パッケージの指示をデプロイサービスから受け取り動作612、この指示をチェックして、1つ以上の更新パッケージをデバイスに適用するか否か判断する動作614。00104デバイスに適用する更新パッケージがない場合、現在の更新についてのチェックは終了する動作616。しかしながら、デプロイサービスは、更新パッケージのレポジトリーおよび更新パッケージ記述のカタログを維持し続け動作602、今後デプロイサービスに送られる更新チェック要求のために、プロセス600を繰り返すことができる。00105しかしながら、1つ以上の更新パッケージをデバイスに適用する場合、更新パッケージ要求をデプロイサービスに送る動作618。この更新パッケージ要求は、デバイスに適用する1つ以上の更新パッケージをデプロイサービスから入手するための要求である。00106デプロイサービスは、更新パッケージ要求を受け取り動作620、要求された1つ以上の更新パッケージをデバイスに送ることによって応答する動作622。1つ以上の更新パッケージは、異なるやり方で更新パッケージに付随するマスターバージョン番号を用いることによってというように特定することができる。デバイスは、要求した1つ以上の更新パッケージを受け取り動作624、受け取った1つ以上の更新パッケージをデバイス上にインストールする動作626。1つ以上の更新パケットの各々のインストールは、先に論じたように、即座に行うこと、または遅らせることができる。次いで、更新についての現在のチェックは終了する動作616。しかしながら、デプロイサービスは、更新パッケージのレポジトリーおよび更新パッケージ記述のカタログ維持し続け動作602、今後デプロイサービスに送られる更新チェック要求のために、プロセス600を繰り返すことができる。00107あるいは、1つ以上の更新パッケージをデバイスに適用する場合、動作610において、これらの更新パッケージをデバイスに戻すことができる。このような状況では、動作616~620を実行する必要はない。00108図7は、1つ以上の実施形態にしたがって、多数の体験モジュールを含むアプリケーションを実行するように構成することができる計算デバイス例700を示す。計算デバイス700は、例えば、図1のデバイス102、図2のデバイス200とすることができ、図1のプラットフォーム114または図3のプラットフォーム300の少なくとも一部を実装することができる。00109計算デバイス700は、1つ以上のプロセッサーまたは演算装置702、1つ以上のメモリーおよび/または記憶コンポーネント706を含むことができる1つ以上のコンピューター読み取り可能媒体、1つ以上の入力/出力I/Oデバイス708、ならびに種々のコンポーネントおよびデバイスが互いに通信することを可能にするバス710を含む。コンピューター読み取り可能媒体704および/または1つ以上のI/Oデバイス708は、計算デバイス700の一部として含ませることができ、あるいは計算デバイス700に結合されてもよい。バス710は、数種類のバス構造の内1つ以上を表し、メモリーバスまたはメモリーコントローラー、周辺バス、加速グラフィクスポート、プロセッサーまたはローカルバス、および種々の異なるバス構造を用いるその他を含む。バス710は、有線バスおよび/またはワイヤレスバスを含むことができる。00110メモリー/記憶コンポーネント706は、1つ以上のコンピューター記憶媒体を表す。コンポーネント706は、揮発性媒体ランダムアクセスメモリーRAMのような媒体、および/または不揮発性媒体リードオンリーメモリー-ROM、フラッシュメモリー、光ディスク、磁気ディスク等のような媒体を含むことができる。コンポーネント706は、固定媒体例えば、RAM、ROM、固定ハードドライブ等、およびリムーバブル媒体例えば、フラッシュメモリードライブ、リムーバブルハードドライブ、光ディスク等を含むことができる。00111本明細書において論じた技法は、1つ以上の演算装置702によって命令を実行することによって、ソフトウェアで実現することができる。尚、演算装置702、演算装置702の種々のキャッシュメモリー、デバイス700図示せずの他のキャッシュメモリー、他のコンピューター読み取り可能媒体等というような、計算デバイス700の異なるコンポーネントに、異なる命令を格納できることは認められてしかるべきである。加えて、計算デバイス700において命令を格納する場所は、ときの経過と共に変化する可能性があることも認められてしかるべきである。001121つ以上の入力/出力デバイス708は、ユーザーがコマンドおよび情報を計算デバイス700に入力することを可能にし、更に情報をユーザーおよび/または他のコンポーネントまたはデバイスに提示するのを可能にする。入力デバイスの例には、キーボード、カーソル制御デバイス例えば、マウス、マイクロフォン、スキャナー等が含まれる。出力デバイスの例には、ディスプレイデバイス例えば、モニターまたはプロジェクター、スピーカー、プリンター、ネットワークカード等が含まれる。00113本明細書では、種々の技法をソフトウェアまたはプログラムモジュールという一般的なコンテキストで説明することができる。一般に、ソフトウェアは、ルーチン、プログラム、オブジェクト、コンポーネント、データー構造等を含み、これらは特定のタスクを実行するか、または特定の抽象データー型を実装する。これらのモジュールおよび技法の実施態様は、コンピューター読み取り可能媒体上に格納することができ、またはコンピューター読み取り可能媒体の何らかの形態を通じて伝達することができる。コンピューター読み取り可能媒体は、計算デバイスによってアクセスすることができ入手可能な1つまたは複数のいずれの媒体でも可能である。一例として、そして限定ではなく、コンピューター読み取り可能媒体は、コンピューター記憶媒体および通信媒体を含むことができる。00114コンピューター記憶媒体は、揮発性および不揮発性、リムーバブルおよび非リムーバブル媒体を含み、コンピューター読み取り可能命令、データー構造、プログラムモジュール、またはその他のデーターというような情報の格納のための方法または技術であればそのいずれでも実現できる。コンピューター記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリーまたはその他のメモリー技術、CD-ROM、ディジタルバーサタイルディスクDVDまたはその他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたはその他の磁気記憶デバイス、あるいは所望の情報を格納するために用いることができ、コンピューターによってアクセスすることができる他のあらゆる媒体を含むが、これらに限定されるのではない。00115通信媒体は、通例、コンピューター読み取り可能命令、データー構造、プログラムモジュール、またはその他のデーターを、搬送波というような変調データー信号、または他の伝達メカニズムに具体化する。また、通信媒体は、あらゆる情報配信媒体も含む。変調データー信号という用語は、その特性の1つ以上が、内部に情報をエンコードするようなやり方で設定または変化させられている信号を意味する。一例として、そして限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続のような有線媒体と、音響、RF、赤外線、およびその他のワイヤレス媒体というようなワイヤレス媒体とを含む。以上の内いずれの組み合わせも、コンピューター読み取り可能媒体の範囲に含まれる。00116一般に、本明細書において記載した機能または技法は、そのいずれもが、ソフトウェア、ファームウェア、ハードウェア例えば、固定論理回路、手作業の処理、またはこれらの実施態様の組み合わせを用いて実現することができる。モジュールおよびコンポーネントという用語は、本明細書において用いる場合、一般にソフトウェア、ファームウェア、ハードウェア、またはその組み合わせを表す。ソフトウェア実施態様の場合、モジュールまたはコンポーネントは、プロセッサー例えば、1つまたは複数のCPUにおいて実行されると、指定されたタスクを実行するプログラムコードを表す。プログラムコードは、1つ以上のコンピューター読み取り可能メモリーデバイスに格納することができる。これらの更に詳しい説明は、図7を参照すれば見つけることができる。本明細書に記載した、多数の体験モジュールを含むアプリケーションの特徴は、プラットフォームに依存しないということであり、種々のプロセッサーを有する種々の商用計算プラットフォームにおいて、本技術を実現できることを意味する。00117以上、構造的特徴および/または方法論的動作に特定的な文言で主題について説明したが、添付した特許請求の範囲において定義されている主題は、以上に記載した特定的な特徴または動作には必ずしも限定されないことは言うまでもない。逆に、以上に記載した特定的な特徴および動作は、特許請求の範囲を実現する形態例として開示したのである。