(57)【特許請求の範囲】
【請求項１】
開発者が提出したアプリケーションを処理するコンピュータ実装方法であって、前記処理が、
アプリケーション提出者のアカウントと関連付けて、前記アプリケーション提出者によるアプリケーションの提出をネットワーク上で受信することであって、前記アプリケーションは、エンドユーザが電子カタログからコンテンツアイテムを購入するための機能性を欠如している、ことと、
ユーザが前記アプリケーション内から、前記電子カタログからコンテンツアイテムを購入するための機能性を提供する、購入モジュールを追加することによって、前記アプリケーションを修正することであって、前記アプリケーションを修正することは、ソースコードをもたらすように、前記アプリケーションの少なくとも一部分を逆コンパイルすることと、前記購入モジュールを追加するように、前記ソースコードを修正することとを含む、ことと、
前記アプリケーションを、前記購入モジュールが追加されるように修正された際に、前記エンドユーザが電子カタログ内で利用可能にすることと、
を含み、
前記処理が、１つ以上のコンピューティングデバイスを備えるコンピューティングシステムによって実施される、
方法。
【請求項２】
前記処理は、デジタル著作権管理（ＤＲＭ）モジュールを前記アプリケーションと組み合わせることをさらに含み、前記ＤＲＭモジュールは、前記アプリケーションに対する無許可の変更が行われたと判定するのに応えて、前記修正されたアプリケーションの実行を一時中断するように構成される、請求項１に記載の方法。
【請求項３】
前記処理は、ペアレンタルコントロールモジュールを前記アプリケーションと組み合わせることをさらに含む、請求項１に記載の方法。
【請求項４】
前記ペアレンタルコントロールモジュールは、アクセスキーの入力を要求する、アクセス制御インターフェースを提示するように構成される、請求項３に記載の方法。
【請求項５】
前記ペアレンタルコントロールモジュールは、前記アクセス制御インターフェース上で前記アクセスキーが提供されない限り、前記電子カタログ上での購入を防止するように構成される、請求項４に記載の方法。
【請求項６】
前記アプリケーションを修正することは、前記アプリケーションと関連付けられる１つ以上のエントリポイントを識別することをさらに含む、請求項１に記載の方法。
【請求項７】
前記アプリケーションを修正することは、前記アプリケーションに購入コードを挿入することをさらに含み、前記購入コードは、前記１つ以上のエントリポイントの実行と関連して実行されるように構成される、請求項６に記載の方法。
【請求項８】
前記１つ以上のエントリポイントは、以下の機能、前記アプリケーションの起動、前記アプリケーションの終了、前記アプリケーションの一時停止、および前記アプリケーションの一時停止状態からの再開のうちの１つ以上を実施するように構成される、１つ以上のルーチンを備える、請求項６に記載の方法。
【請求項９】
提出されるアプリケーションを処理するためのシステムであって、前記システムは、コンピュータハードウェアを備えるアプリケーション配布システムを備え、前記アプリケー
ション配布システムは、
アプリケーション提出者のアカウントと関連付けて、前記アプリケーション提出者によるアプリケーションの提出をネットワーク上で受信し、前記アプリケーションは、エンドユーザが電子カタログからコンテンツアイテムを購入することを可能にするための機能性、および前記電子カタログへのアクセスを制御するための機能性のうちの少なくとも１つの機能性を欠如しており、
（１）ユーザが前記アプリケーション内から、前記電子カタログからコンテンツアイテムを購入することを可能にする機能性を提供する、購入モジュール、および（２）前記ユーザが前記電子カタログへのアクセスを制御することを可能にする、ペアレンタルコントロールモジュールのうちの少なくとも１つを追加することによって、前記アプリケーションを修正し、前記アプリケーションを修正することは、ソースコードをもたらすように、前記アプリケーションの少なくとも一部分を逆コンパイルすることと、前記購入モジュールおよび前記ペアレンタルコントロールモジュールのうちの少なくとも１つを追加するように、前記ソースコードを修正することとを含む、
ように構成される、
システム。
【請求項１０】
前記アプリケーション配布システムは、前記アプリケーションを、前記購入モジュールおよび前記ペアレンタルコントロールモジュールのうちの少なくとも１つを追加するように修正された際に、エンドユーザが前記電子カタログ内で利用可能にするようにさらに構成される、請求項９に記載のシステム。
【請求項１１】
前記購入モジュールは、前記エンドユーザが使用するためのエンドユーザデバイスにダウンロードされたコンテンツアイテムを認証するように構成される、請求項９に記載のシステム。
【請求項１２】
前記購入モジュールは、前記アプリケーションのコンテンツアイテムのリストへのアクセスを提供するように構成されるカタログインターフェースを含む、請求項９に記載のシステム。
【請求項１３】
前記購入モジュールは、前記アプリケーションと関連付けられるコンテンツアイテムに対する支払いを処理するように構成される、購入サービスと通信するように構成される、請求項９に記載のシステム。
【請求項１４】
前記購入サービスは、前記アプリケーションと関連付けられるコンテンツアイテムに対する支払いを処理するように構成される、請求項１３に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
本願は、その全体が本明細書に組み込まれる、２０１１年６月２７日に出願された米国特許出願第１３／１７０，０７４号の優先権を主張する。
【０００２】
インターネットの発達により、コンテンツのデジタル配布がより望ましいものとなった。物理媒体を使用した配布と比較して、コンピュータネットワーク上でのデジタル配布がより低費用であることから、デジタル配布流通機構の発達がさらに推進されることが当然予想され得る。今日では、無線デバイス用のモバイルアプリケーション（「アプリ（ａｐｐ）」と呼ばれる場合がある）、ならびにブラウザおよびオペレーティングシステムデスクトップ用のアプリケーションを含む、アプリケーション、ゲーム、音楽、書籍、および映画等のますます多くのコンテンツタイプが、デジタルダウンロードを通して入手可能になっている。
【０００３】
デジタルコンテンツの発達により、コンテンツ開発者は、アプリケーションおよび他のコンテンツアイテムを比較的低費用で配布することができる。これは、デジタルコンテンツアイテムの市場の成長をもたらした。デジタルコンテンツアイテムの増加は、そのようなコンテンツアイテムを管理し、追跡し、それらに対する著作権を譲渡するためのシステムの必要性を生み出した。いくつかの能力の中でも特に、これらのシステムは、アプリケーションおよびコンテンツアイテムを収益化することを可能にする。
【０００４】
図面を通して、参照番号は、参照される要素間の対応を示すために、再使用される場合がある。図面は、本明細書に記載される実施形態例を図示するために提供され、本発明の範囲を限定することは意図されない。  
【図面の簡単な説明】
【０００５】
【図１】開発者によって提出されるアプリケーションに機能性を追加する、アプリケーション管理システムの実施例を概略的に図示する、ネットワーク図である。
【図２】図１のアプリケーション配布システムに関与するアプリケーション処理シナリオ例の論理フロー図を概略的に図示する。
【図３】アプリケーションと追加モジュールとを組み合わせるためのプロセスの一実施形態のフロー図を図示する。
【発明を実施するための形態】
【０００６】
Ｉ．はじめに
ゲーム等の多くのアプリケーションでは、ユーザは、ゲームマップ、ゲームアイテム、キャラクタ、ＵＩテーマ、音楽、レベル、追加の機能性等のコンテンツアイテムまたはアプリケーションの他の追加物を購入することができる。これらのコンテンツアイテムは、デジタルコンテンツストアまたはコンテンツ市場で購入することができ、次いでアプリケーション内で利用することができる。いくつかのアプリケーションは、アプリケーション内から購入することを可能にする（「アプリ内購入」）。一般的に、アプリケーション開発者は、アプリケーション内に特定のコードを含めることによって、アプリ内購入のための支援を含める。しかしながら、そのようなアプリ内購入コードの追加は、アプリケーションの複雑性および開発時間を増加させ、アプリケーションに潜在的なバグまたはエラーをもたらす、ないしは開発費を増加させる可能性がある。場合によっては、開発者は、そのようなコードを開発するのに必要な経験を有さず、したがってアプリ内購入を提供できない場合がある。
【０００７】
本開示は、上記の問題の解決策を提供するシステムおよび関連プロセスを記載する。特定の実施形態では、これらのシステムおよびプロセスは、有利に、購入モジュールおよび／またはデジタル著作権管理（ＤＲＭ）モジュール等の追加の機能性を提供するためのモジュールを、アプリケーションに挿入することができる。本明細書で使用することができるＤＲＭモジュールの例は、開示全体が参照することによって本明細書に組み込まれる、２０１１年３月９日に出願された、名称が「Ｄｉｇｉｔａｌ  Ｒｉｇｈｔｓ  Ｍａｎａｇｅｍｅｎｔ  ｆｏｒ  Ａｐｐｌｉｃａｔｉｏｎｓ」の米国特許出願第１３／０４４，４７８号に記載されている。そのような挿入されるコードモジュールは、開発者が特徴的機能のためのアプリケーションコードのすべてまたは大部分を開発することなく、ユーザに特徴的機能およびサービスを提供することができる。さらに、アプリケーションが既に開発された後にモジュールを追加することができるため、追加の特徴的機能は、開発者の既存の開発プロセスに対する最小限の変更で、またはそれを変更することなく、アプリケーションに追加され得る。
【０００８】
一実施例では、購入および／もしくはユーザデバイスへのダウンロード用のアプリケーションを配布するアプリケーションストアまたはアプリケーション管理システムの文脈において、これらのシステムおよびプロセスを実現することができる。開発者は、エンドユーザに配布するためのアプリケーションを、アプリケーション管理システムに提出することができる。アプリケーション管理システムは、開発者からアプリケーションを受信するのに応えて、エンドユーザがアプリケーションに関連するコンテンツアイテムを購入および／またはダウンロードすることを可能にする購入モジュール等のコードモジュールを、アプリケーションに挿入することができる。また、追加の機能性を提供する他のコードモジュールも挿入することができる。例えば、ユーザが特定のコンテンツアイテムにアクセスする権利を有するかを照合するためのＤＲＭモジュールを追加することができる。また、ＤＲＭモジュールは、アプリケーションおよび／もしくはコンテンツアイテムの複製または修正も防止ないしは低減し得る。
【０００９】
ここで、本開示を例示することは意図されるが、限定することは意図されない、特定の実施例および実施形態に関して、本開示の様々な態様が記載される。本開示のいかなる内容も、開示される実施形態のいずれかの特定の特徴的機能または特徴が必要不可欠であることを示唆することは意図されない。保護範囲は、特許請求の範囲によって定義される。
【００１０】
ＩＩ．アプリケーション管理システムの概要
図１は、開発者によって提出されるアプリケーションに追加の機能性を提供する、アプリケーション管理システム１００の実施例を概略的に図示する、ネットワーク図である。アプリケーション管理システム１００は、ネットワーク１１０を使用して、ユーザコンピューティングデバイス１０５および開発者システム１０７と通信することができる。アプリケーション管理システム１００は、開発者システム１０７からアプリケーションを受信し、アプリケーションを修正し、これらのアプリケーションをユーザコンピューティングデバイス１０５に提供することができる。アプリケーション管理システム１００は、アプリケーション管理システム１００によって（または他の実体によって）提供される１つ以上のサービスへのアクセスを可能にするコードモジュールを挿入することによって、開発者が提出したアプリケーションを修正することができる。これらのサービスには、例えば、アプリケーションおよびコンテンツアイテムのダウンロードならびに／または購入を管理するためのサービス、ならびにコンテンツアイテムの権利付与を照合するためのサービスが挙げられる。いくつかの実施形態では、コードモジュールは、アプリケーションをソースコードに逆コンパイルし、コードモジュールを参照するコードスニペットを挿入し、次いでアプリケーションを再コンパイルすることによって挿入される。コードスニペットは、ソースコード内の自動選択される挿入点に挿入されてもよい。また、アプリケーション管理システム１００は、特定のアプリケーションと関連付けられるコンテンツアイテムを提供または販売するためのカタログサービス１４０も提供してもよい。システム１００は、コンテンツ管理サービス提供者によって運営されてもよい。
【００１１】
本開示のシステムおよびプロセスは、主として開発者による提出との関連で記載されるが、アプリは、代わりに、アプリケーション発行者、コンテンツ作成者、またはアプリケーションを提出する他の実体等の別の実体によって提出されてもよい。「購入」という用語および同様の変形は、一般的に、ユーザがアプリケーションもしくはコンテンツアイテムを取得または使用するために支払う取引を指すが、また、ユーザがアプリケーションコンテンツアイテムを無料で利用可能になる（例えば、販売促進期間中またはお試しとして）取引も指し得る。「権利付与」という用語は、本明細書において、（１）授与される、もしくは授与することができる法律上の権利または許可、および（２）法律上の権利または許可のコンピュータ表現をいくらか交換可能に指すために使用される。使用される文脈によって、該用語は、これらの２つの事項のうちの１つをより具体的に指す場合がある。
【００１２】
アプリケーション管理システム１００は、開発者からアプリケーションおよびアプリケーションコンテンツアイテムを受信し、アプリケーションおよびアプリケーションコンテンツアイテムをユーザに提供することができる、任意のコンピュータベースのシステムを含むことができる。アプリケーションおよびアプリケーションコンテンツアイテムを、ダウンロード、ストリーミング、アプリケーション仮想化等を介して利用可能にすることができる。これは、例えば、１回限りの費用で、サブスクリプションで、または無料で、アプリケーションを利用可能にすることを含むことができる。さらにこれは、例えば、任意の数のユーザに、所定の数のユーザに、所定のユーザ群に、限られた期間、限られた使用回数、または無制限にアプリケーションを利用可能にすることを含むことができる。
【００１３】
アプリケーション管理システム１００は、ユーザシステム１０５および／または開発者システム１０７、カタログサービス１４０および関連検索エンジン、購入サービス１４５、ならびにアプリケーション配布サービス１５０からネットワーク要求を受信し、応答するための１つ以上のサーバ１２０を含むことができる。サービスは、１つ以上のサーバ１２０上または別個のサーバ上のコードモジュールの実行によって実現されてもよい。また、アプリケーション管理システム１００は、アプリケーション関連データおよびコンテンツアイテムを記憶するためのアプリケーションデータストア１６０と、アカウント情報等のユーザ関連データを記憶するためのユーザデータストア１７０とも含むことができる。他のサービスもまた、アプリケーション管理システム１００によって提供されてもよい。
【００１４】
開発者は、開発者のコンピューティングシステム１０７を使用して、アプリケーションおよびコンテンツアイテムを開発し、それらのアプリケーションおよびコンテンツアイテムを、ユーザが購入すること、および／またはいくつかの例を挙げると、無線モバイルデバイス（スマートフォン、ＰＤＡ、タブレット、電子書籍リーダ等）、デスクトップ、ラップトップ、ビデオゲーム機、テレビのセットトップボックス、テレビ（例えば、インターネットＴＶ）、コンピュータ化された電化製品等である、ユーザのユーザコンピューティングデバイス１０５にダウンロードすることを可能にするために、それらをアプリケーション管理システム１００に提出することができる。ユーザコンピューティングデバイス１０５は、任意のタイプのコンピューティングデバイスであってもよい。さらに、ユーザデバイス１０５は、異なるアプリケーションを含むように、ないしは異なるように構成されるように、異なるタイプのデバイスであることが可能である。加えて、デバイス１０５は、任意のタイプのオペレーティングシステム（「ＯＳ」）を含むことができる。例えば、コンピューティングデバイス１０５は、Ａｎｄｒｏｉｄ（登録商標）ＯＳ、Ｗｉｎｄｏｗｓ（登録商標）ＯＳ、Ｍａｃ（登録商標）ＯＳ、ｉＯＳ（ｉＰｈｏｎｅまたはｉＰａｄ  ＯＳ）、Ｌｉｎｕｘ（登録商標）またはＵｎｉｘ（登録商標）ベースのＯＳ等を実装することができる。
【００１５】
アプリケーション管理システム１００は、アプリケーションおよびアプリケーションコンテンツアイテムの配布を管理または調整するためのサービス等の追加の機能性を追加するためのサービスを提供することができる。多くのアプリケーションは、それらのアプリケーションのユーザが、アプリケーション自体とは異なる、追加の、または「アドオン」アプリケーションコンテンツアイテムを取得することができる、アプリ内購入を可能にするための組み込まれた機能性を有さない。アプリ内購入の１つの代替えは、ウェブサービス（例えば、ウェブサイト）またはデバイスにインストールされているアプリケーションストアを通して等、アプリケーションの外部のインターフェースを通したコンテンツアイテムの購入またはダウンロードを可能にすることである。しかしながら、これらのアプリケーションにアプリ内購入機能性を追加することによって、アプリケーションコンテンツアイテムは、これらのアプリケーション内から購入または取得され得、アプリケーションユーザの購入プロセスを簡素化する。例えば、アプリ内購入は、コンテンツアイテムの購入アプリケーションとの統合を簡単化する、またはユーザのアプリケーション使用経験の妨害を低減もしくは排除することができる。
【００１６】
アプリケーションコンテンツアイテムには、ゲームマップ、ゲームレベル、ゲーム保存、ゲームアイテム、ゲームキャラクタ、ゲームデータ、ビデオ、画像、音楽、デザイン、アバター、キャラクタ、説明書、ガイド、ヒント、ニュース、電子書籍、他の書かれたメッセージまたはコンテンツ等を含むことができる。これらのコンテンツアイテムは、コンテンツアイテムと関連付けられるアプリケーション内で利用することができる。一実施例では、電子書籍リーダデバイスまたは電子書籍リーダアプリケーションを有する他のコンピューティングデバイスを使用するユーザは、デバイス上で読むための電子書籍を、電子書籍リーダアプリケーション内で購入することができる。
【００１７】
開発者からコンテンツ提出を受信した後、アプリケーション管理システム１００は、ＤＲＭモジュールまたは購入モジュール等の追加の機能性のためのモジュールを追加することによって、アプリケーションを修正することができる。アプリケーションを修正した後、アプリケーション管理システム１００は、カタログサービス１４０を用いて（または第三者のカタログサービスを用いて）、アプリケーションおよび／またはアプリケーションコンテンツアイテムをリストに載せることができる。例えば、アプリケーション管理システム１００は、アプリケーションまたはコンテンツアイテムを購入することができる閲覧可能な電子カタログに、アイテムを追加することができる。
【００１８】
一実施形態では、アプリケーション修正は、アプリケーション管理システム１００によって、プログラム的に達成される。いくつかの実施形態では、アプリケーション管理システム１００は、アプリケーションをソースコードに逆コンパイルする。アプリケーション管理システム１００は次いで、追加の機能性のための挿入点を判定するために、ソースコードを解析する。例えば、ソースコードは、システム１００が特定の機能性を所定の位置、関数、またはクラスに発見することができるように、コーディング標準に準拠してもよい。別の実施例では、アプリケーション管理システム１００は、アプリケーションのメニューまたは選択インターフェースを示す、ソースコード内のパターンを検索することができる。アプリケーション管理システム１００は次いで、挿入されたモジュールを呼び出す、新しいメニューアイテムまたはコードスニペットを挿入することができる。一実施例では、新しいメニューアイテムは、カタログサービス１４０と通信するためのカタログインターフェースを提供する、購入モジュールを呼び出す。カタログインターフェースは、アプリケーション内で、カタログサービス１４０のカタログアイテムへのアクセスを提供することができる。
【００１９】
ＩＩＩ．アプリケーション管理システムの詳細
図１の実施形態では、アプリケーション管理システム１００は、１つ以上のサーバ１２０、カタログサービス１４０、購入サービス１４５、アプリケーション配布サービス１５０、アプリケーションデータストア１６０、およびユーザデータ１７０のためのデータストアを含む。１つ以上のサーバ１２０は、ネットワーク１１０上で受信される、ユーザコンピューティングデバイス１０５および／または開発者システム１０７からのネットワーク要求を受信し、それに応答することができる。
【００２０】
検索エンジンを含むことができるカタログサービス１４０は、ユーザが、カタログサービス１４０によって提供される電子カタログを閲覧すること、またはアプリケーションデータストア１６０に記憶されている電子カタログコンテンツに関する情報を取得するために、検索エンジンにクエリを行うことを可能にする。電子カタログコンテンツは、製品および／またはサービスに関する情報を含むことができる。また、カタログサービス１４０は、それぞれの開発者のアプリケーションと関連付けられる、販売用または無料のアプリケーションコンテンツアイテムも提供することができる。カタログサービス１４０は、ネットワークアプリケーションインターフェース（例えば、ウェブサーバ）、アプリケーションプログラミングインターフェース（ＡＰＩ）、または他のタイプのインターフェース等のカタログインターフェースによってアクセスされてもよい。一実施形態では、ユーザコンピューティングデバイス１０５上で動作している、購入モジュールを有するアプリケーションは、アプリケーションと関連付けられるコンテンツアイテムへのアクセスをアプリケーションに提供するために、カタログサービス１４０と通信している。
【００２１】
カタログサービス１４０は、アプリケーションおよびそれぞれのアプリケーションと関連付けられるコンテンツアイテム等の、購入もしくはダウンロードすることができるアイテムのカタログまたはリストを提供することができる。また、カタログは、コンテンツアイテムを記述する、コンテンツアイテムメタデータも含んでもよい。カタログページは、ポップアップウィンドウまたはメニュー画面として、アクセスしているアプリケーション内に表示されてもよい。
【００２２】
一実施形態では、電子カタログコンテンツは、階層構造で編成される、１つ以上のカテゴリまたは階層内の閲覧ノードと関連付けられるアイテムを有する。カタログサービス１４０は、ユーザが、カタログを検索することに加えて、アイテム階層を閲覧するための機能性を提供することができる。ユーザは、アイテムについてより詳細に見るために、階層で表されるアイテム、または検索結果のリスト内のアイテムを選択することができる。ユーザのアイテム選択に応えて、サーバ１２０は、ユーザシステム１０５に、選択されたアイテムに関する詳細を含むカタログページ（アイテム詳細ページと称される場合がある）を提供することができる。
【００２３】
所与のアプリケーションのカタログページまたは詳細ページは、例えば、アイテムの作成者によって提供される説明、価格情報、アイテムの作成者に関する情報、顧客の批評、デバイス互換性情報、画面ショット、および顧客に有用であり得る他のタイプの情報を含んでもよい。いくつかの実施形態では、詳細ページは、所与のアプリケーションと関連付けられる、利用可能なアプリケーションコンテンツアイテムのリストを含むことができる。いくつかの実施形態では、リストは、設定もしくはユーザアカウントと関連付けられる情報に基づき、フィルタリングまたは生成されてもよい。また、コンテンツリストは、評点、価格、人気度、または利用可能性等の種々の基準を使用してフィルタリングされてもよい。
【００２４】
購入サービス１４５は、ユーザ購入を管理するためのサービスと、パーソナライズされた情報をユーザに提供するためのパーソナライズサービスとを含むことができる。購入サービス１４５は、顧客注文を受信すること、注文に対する請求書を発行すること、もしくはユーザから注文に対する支払いを受領すること、販売者もしくは開発者に購入に対するクレジットを与えること、異なる当事者間で支払いを分割すること、購入に対して支払われる税金を徴収し、徴収された税金を適切な統制実体の税金に分配すること、異なる通貨間（例えば、ドル対ユーロまたは円）での価格を計算または変換すること、および／またはコンテンツアイテムの配布を調整することができる。購入サービス１４５は、注文処理に関連する他の機能を実施してもよい。いくつかの実施形態では、購入サービス１４５は、エンドユーザから受領される料金（例えば、購入料金またはコンテンツ配布料金）を、開発者および／またはアプリケーション管理システム１００の運営者のアカウントで分割してもよい。また、購入サービスは、以下にさらに記載されるように、追加の機能性も提供することができる。
【００２５】
アプリケーション配布サービス１５０は、追加の機能性を提供するように、モジュールをアプリケーションと組み合わせる、ないしは別の方法でアプリケーションを修正することができる。例えば、アプリケーション配布サービスは、購入モジュールをアプリケーションに挿入することができる。修正されたアプリケーションは次いで、ユーザインターフェースを提供することができ、ユーザは、これを通して、購入を行い、他の取引を実施するために、ユーザコンピューティングデバイス１０５を介して、ネットワーク上でアプリストアまたは電子カタログにアクセスすることができる。購入モジュールは、アプリケーションデータストア１６０に記憶されてもよい、アプリケーションのカタログを閲覧および／または検索するためのコンポーネントを含むことができる。購入モジュールは、必ずしもそうである必要はないが、この閲覧および／または検索機能性を、カタログサービス１４０の機能性に依存することができる。さらに、いくつかの実施形態では、購入モジュールは、場合によっては他の推奨基準と共に、アプリケーション選択もしくは使用挙動に基づくユーザへの推奨を生成および／または取得するために、購入サービス１４５と対話することができる。また、アプリケーション配布サービス１５０は、アプリケーションを複製または修正から保護することを可能にするＤＲＭ機能性を、アプリケーションと組み合わせることもできる。
【００２６】
アプリケーション管理システム１００がユーザからコンテンツ提出を受信した後、アプリケーション管理システム１００は、アプリケーション（単数または複数）、アプリケーションコンテンツアイテム（単数または複数）、またはコンテンツメタデータ等のコンテンツ提出データを、アプリケーション管理システム１００のアプリケーションデータストア１６０（例えば、ファイルサーバ、ハードドライブ、光学ドライブ等のストレージデバイス上のデータベース、フラットファイル、またはデータ構造）上に記憶する。別のデータストア１７０は、ユーザアカウントに関連するユーザ証明情報等のユーザデータを記憶することができる。例えば、アプリケーション管理システム１００は、コンテンツを提出するユーザが、アプリケーション管理システム１００によって維持されるアカウントに対するアクセス権を有するか否かを判定するために、コンテンツ提出と共に受信されるアクセス証明情報を確認してもよい。アクセス権が照合される場合、アプリケーション管理システム１００は次いで、コンテンツ提出およびアカウントと関連付けられる他のデータを更新することができる。異なる実施形態では、アプリケーションデータストア１６０およびユーザデータ１７０のためのデータストアは、同一のデータストアであってもよく、または別個のデータストアであってもよい。
【００２７】
図２は、図１のアプリケーション配布システム１００に関するアプリケーション処理シナリオ例の論理フロー図を概略的に図示する。シナリオ中、開発者２０７は、アプリケーション配布システム１００に提出するためのアプリケーション２１０を作成し、次いでアプリケーション配布システム１００は、アプリケーション２１０を修正し、修正されたアプリケーション２１０を１人以上のユーザ２０５に提供する。アプリケーション２１０は、例えば、ゲーム、ナビゲーションアプリ、ソーシャルネットワーキングアプリ、ビジネスアプリ、生産性アプリ、ユーティリティアプリ、メディアアプリ、電子読書アプリ、娯楽アプリ等であってもよい。
【００２８】
一シナリオでは、開発者２０７は、開発者システム１０７を使用して、アプリケーション２１０を作成する。開発者２０７は、アプリケーション２１０を開発するために、ＩＤＥ２１５等の統合開発環境（「ＩＤＥ」）、およびコンパイラ２２０を使用することができる。ＩＤＥ２１５は、コード開発を促進するための任意のシステムを含むことができる。例えば、Ｊａｖａ（登録商標）開発では、ＩＤＥ２１５は、Ｔｈｅ  Ｅｃｌｉｐｓｅ  Ｆｏｕｎｄａｔｉｏｎ（登録商標）から入手可能なＥｃｌｉｐｓｅ  ＩＤＥを含むことができる。さらに、ＩＤＥは、アプリケーション２１０と関連付けられるソースコードをアプリケーション２１０にコンパイルすることができる任意のコンパイラを含むことができる、コンパイラ２２０を含むことができる。いくつかの実施形態では、購入モジュール２３５および／またはＤＲＭモジュール２４０をアプリケーション２１０と組み合わせるために、アプリケーションリパッキングモジュール２３０を使用してそうする代わりに、ＩＤＥ２１５を使用することができる。
【００２９】
図２の事象１で、アプリケーション配布サービス１５０は、アプリケーション２１０および／またはアプリケーション２１０のコンテンツアイテムを受信する。一実施形態では、アプリケーション配布サービス１５０は次いで、関連コードスニペットを含むことができるモジュールを追加することによって、アプリケーションに追加の機能性を提供するように、アプリケーション２１０を処理する。
【００３０】
図２の事象２で、アプリケーション配布サービス１５０は、購入モジュール２３５および／またはＤＲＭモジュール２４０をアプリケーション２１０と組み合わせる。購入モジュール２３５は、ユーザコンピューティングデバイス１０５がカタログサービス１４０および／または購入サービス１４５と通信することを可能にして、アプリケーションにアプリ内購入機能性を提供することができる。例えば、購入モジュール２３５は、ユーザコンピューティングデバイス１０５上で実行される際、カタログアイテムのリストをユーザ２０５に提供するために、カタログサービス１４０と通信することができる。一実施形態では、アプリケーション配布サービス１５０は、電子カタログへのアクセスを提供する、リンク（例えば、静的または動的）またはポップアップ画面もしくはウィンドウ等のカタログインターフェースを開くメニューアイテムを提供するように、アプリケーション内のメニュー画面を修正する。別の実施例では、購入モジュール２３５は、アプリケーション２１０のコンテンツアイテムの購入を取り扱うため、またはダウンロードされたコンテンツアイテムの権利付与を照合するために、ユーザコンピューティングデバイス１０５と購入サービス１４５との間の通信を可能にする。
【００３１】
一実施形態では、ＤＲＭモジュール２４０は、コンピューティングデバイス１０５が、アプリケーション２１０が許可なく修正されていないかを照合することを可能にし、これは、無許可のユーザがアプリケーション２１０にアクセスする、および／またはそれを実行することを防止し得る。一実施形態では、ＤＲＭモジュール２４０は、例えば、いくつかの例を挙げると、１つのユーザデバイス１０５から別のユーザデバイスへの、またはユーザデバイス１０５からＳＤカード、ＣＤ、もしくはＵＳＢキー等の記録可能媒体への、あるいはユーザデバイス１０５からネットワークデバイスもしくはサービス（例えば、クラウドストレージ）への、アプリケーションの無許可の複製および／あるいは移動を防止することができる。有利に、いくつかの実施形態では、アプリケーション２１０がユーザデバイス１０５から第２のユーザデバイスに複製される場合、ＤＲＭモジュール２４０は、アプリケーション２１０が第２のユーザシステム上で実行されることを防止することができる。代替えとして、いくつかの実施形態では、ＤＲＭモジュール２４０は、例えば、同一のユーザがアプリケーション２１０を使用している限り、アプリケーション２１０の第２のユーザシステム上への複製またはその上での実行を防止しない。  
【００３２】
追加モジュールをアプリケーション２１０と組み合わせることを容易にするために、アプリケーション配布サービス１５０は、アプリケーションリパッケージングモジュール２３０を含むことができる。アプリケーションリパッケージングモジュール２３０は、アプリケーション２１０を逆コンパイルし、ＤＲＭモジュール２４０を逆コンパイルされたアプリケーションと組み合わせ、ＤＲＭモジュール２４０を伴うアプリケーション２１０を再コンパイルすることができる、任意のシステムを含むことができる。
【００３３】
図２の事象３では、アプリケーション配布サービス１５０は、カタログサービス１４０に、アプリケーション２１０および／またはアプリケーション２１０と関連付けられるデジタルコンテンツアイテムをリストするよう指示する。いったんカタログサービス１４０と関連付けられるカタログ上にリストされると、ユーザ２０５は次いで、アプリケーション２１０を購入することができる。
【００３４】
図２の事象４では、カタログサービス１４０は、ユーザデバイス１０５からアプリケーション２１０の購入要求を受信する。カタログサービス１４０は、購入を処理するために、購入サービス１４５と通信することができる。例えば、購入サービス１４５は、ユーザ２０５に購入の請求書を発行することができる。一実施形態では、購入サービス１４５は、アプリケーション２１０またはアプリケーション２１０と関連付けられるコンテンツアイテムに対するコンピューティングデバイス１０５のアクセス権を判定するために、ＤＲＭモジュール２４０と協働するための権利付与モジュール２５０を含む。
【００３５】
図２の事象５では、カタログサービス１４０（または購入サービス１４５）は、アプリケーション配布サービス１５０に、修正されたアプリケーション２１０を購入ユーザデバイス１０５に提供するよう指示する。アプリケーションサービス２１０は、購入モジュール２３５およびＤＲＭモジュール２４０が追加された、修正されたアプリケーション２１０をユーザデバイス１０５に伝送する。
【００３６】
図２の事象６では、ユーザ２０５は、ユーザデバイス１０５上でアプリケーション２１０を操作する。購入モジュール２３５を利用するユーザ２０５は、アプリケーション２１０内からカタログサービス１４０にアクセスすることができる。これは、ユーザにアプリ内購入機能性を提供し、アプリケーション２１０内からコンテンツアイテムを購入することを可能にする。例えば、購入モジュール２３５によって提供されるメニューインターフェースを利用することによって、ユーザ２０５は、カタログサービス１４０にコンテンツアイテム購入要求を送信することができる。カタログサービス１４０は次いで、コンテンツアイテム購入を処理するように、購入サービス１４５と協働することができる。
【００３７】
図２の事象７では、カタログサービス１４０（または購入サービス１４５）は、アプリケーション配布サービス１５０に、要求されたコンテンツアイテムをユーザデバイス１０５に提供するよう指示する。購入モジュール２３５は、コンテンツアイテムを受信し、コンテンツアイテムをアプリケーション２１０内で利用可能にすることができる。いくつかの実施形態では、ＤＲＭモジュール２４０が、アプリケーション２１０および／またはユーザ２０５がコンテンツアイテムにアクセスすることを許可されているかを照合する。
【００３８】
明らかであるように、追加の機能性を提供するために、他のタイプのモジュールをアプリケーション２１０に入れ込むことができる。アプリケーション２１０のプログラム的修正を可能にすることによって、アプリケーション２１０の開発時間を削減することができる、追加の機能性を追加することができる、および／または開発プロセスを簡単化することができる。
【００３９】
ＩＶ．モジュールリパッケージングプロセス例
図３は、アプリケーション２１０と、図２の購入モジュール２３５もしくはＤＲＭモジュール２４０、ペアレンタルコントロールモジュール、または追加の機能性を提供するための他のモジュール等の追加の機能性モジュールとを組み合わせるためのプロセス３００の一実施形態のフロー図を図示する。プロセス３００は、アプリケーション配布サービス１５０のアプリケーションリパッケージングモジュール２３０、アプリケーション提出モジュール２２５、またはＩＤＥ２１５によって実現することができる。考察を簡単化するために、アプリケーション２１０を図２の購入モジュール２３５と組み合わせるプロセス３００は、アプリケーション配布サービス１５０によって実施されるように記載される。しかしながら、他の機能性を提供するように異なるモジュールを追加する等、他の代替えの実施形態が可能である。
【００４０】
プロセス３００は、アプリケーション２１０を作成した、またはアプリケーション２１０を例えばアプリケーション管理システム１００に提供した開発者２０７から、例えばアプリケーション配布サービス１５０によってアプリケーション２１０が受信される際に、ブロック３０２で開始する。アプリケーション配布サービス１５０は、アプリケーション２１０の逆コンパイルされた複製を取得するために、ブロック３０４で、アプリケーション２１０を逆コンパイルする。ブロック３０６で、アプリケーション配布サービス１５０は、アプリケーション２１０の逆コンパイルされた複製を購入モジュール２３５と組み合わせる。
【００４１】
一実施形態では、購入モジュール２３５は、開発者２０７と関連付けられる開発者証明書、アプリケーション管理システム１００と関連付けられるアプリケーション提供者証明書のうちの１つ以上を含む。
【００４２】
いくつかの実施形態では、アプリケーション２１０の逆コンパイルされた複製を購入モジュール２３５と組み合わせることは、アプリケーション２１０と関連付けられるエントリポイントを識別することを含む。エントリポイントは、任意のルーチン、コンポーネント、関数、メソッド、クラス、あるいはユーザもしくはシステムがアプリケーションを開始する、インスタンス化する、一時停止する、再開する、起動する、または初期化することを可能にする、アプリケーションへのアクセス点を含むことができる。いくつかの実施形態では、アプリケーション２１０の逆コンパイルされた複製を購入モジュールと組み合わせることは、購入モジュールと関連付けられるコードを、エントリポイントと関連付けられる１つ以上のルーチン、コンポーネント、関数、メソッド、もしくはクラスに挿入すること、および／または入れ込むことを含む。
【００４３】
いくつかの実施形態では、アプリケーション２１０の逆コンパイルされた複製を購入モジュールと組み合わせることは、アプリケーション２１０の１つ以上の部分と関連付けられる、１つ以上のベースクラスを判定することを含む。そのように限定はされないが、アプリケーション２１０のこれらの部分を、エントリポイントと関連付けることができる。いくつかの実施形態では、購入モジュールは、ベースクラスの１つ以上が呼び出される際に実行されるように構成される。
【００４４】
一実施形態では、購入モジュールは、既存のライフサイクルルーチンの代わりに呼び出される、もしくはそれより前に呼び出される、置換または補助ライフサイクルルーチン、クラス、あるいはメソッドを含むことができる。例えば、購入モジュールは、アプリケーション２１０によって使用されるベースクラスのサブクラスを含むことができる。アプリケーション２１０のいずれかのサブクラスが呼び出される、および／または実行される前に、購入モジュールのサブクラスを呼び出す、および／または実行することができる。実施例として、Ｇｏｏｇｌｅ（登録商標）から入手可能なモバイルデバイス用のＡｎｄｒｏｉｄ（登録商標）オペレーティングシステムでは、ｏｎＣｒｅａｔｅ（）、ｏｎＳｔａｒｔ（）、ｏｎＰａｕｓｅ（）、ｏｎＲｅｓｕｍｅ（）、およびｏｎＤｅｓｔｒｏｙ（）等のライフサイクルエントリポイントまたはルーチンが、それぞれアプリケーションの起動、開始、一時停止、再開、および終了事象を取り扱うために、アプリケーションによって使用される。購入モジュールは、一部またはすべてのＡｎｄｒｏｉｄアプリケーションによって使用されるアクティビティベースクラスのサブクラスであるクラス内のこれらのライフサイクルメソッドのうちの１つ以上のバージョンを含むことができる。ライフサイクルルーチンのうちの１つが呼び出される際、アプリケーション２１０の対応するルーチンが呼び出される前（またはいくつかの実施形態では、後）に、ルーチンの購入モジュールバージョンを呼び出し、購入モジュールが、ＤＲＭ解析を実施すること、および／またはアプリケーション２１０に関するデータを収集することを可能にすることができる。いくつかの実施形態では、購入モジュールは、エントリポイントと関連付けられるベースクラスを呼び出す前に実行を完了する。
【００４５】
いくつかの実施形態では、購入モジュール２３５は、別の実行スレッド内で等、アプリケーション２１０と並列に、および／または非同期的に実行される。したがって、購入モジュールは、有利に、アプリケーション２１０を読み込むことを可能にする一方で、バックグラウンドで走ることができ、それによって、アプリケーション２１０の読み込み時間への影響を低減する。
【００４６】
ＤＲＭモジュール２４０が挿入される実施形態では、ＤＲＭモジュールが、アプリケーション２１０（またはそのユーザ）が実行を許可されているか否かを確認する間、アプリケーション２１０は、起動し、少なくとも一時的に走ることを可能にされる。アプリケーション２１０またはユーザが許可されていない場合、ＤＲＭモジュールは、例えば、アプリケーション２１０を終了させる、またはアプリケーションの特徴的機能もしくは一式の特徴的機能を無効化することによって、走っているアプリケーション２１０の実行を切り替えることができる。
【００４７】
多くのアプリケーションは、アプリケーションの実行を開始する、単一のエントリポイントを有するが、いくつかのアプリケーションは、２つ以上のエントリポイントを有する。エントリポイントを識別することは、自動化されてもよく、または手動プロセスであってもよい。一実施形態では、エントリポイントは、プログラム的に識別される。いくつかの実施形態では、エントリポイントは、例えば、開発者２０７または開発者システム１０７が、挿入されたモジュールが呼び出され得るエントリタグもしくはマーカをコード内に置くことによって、アプリケーション２１０内で識別される。他の実施形態では、アプリケーション配布サービス１５０は、エントリポイントを識別するために、アプリケーション２１０を解析する。いくつかの実施形態では、アプリケーション配布サービス１５０は、アプリケーション２１０と関連付けられるエントリポイントがアクセスされる、または実行される度に、購入モジュールが実行されるようにするコードを挿入することができる。いくつかのデバイスおよびシステムでは、リパッケージング時にエントリポイントを識別することは、任意選択であることができる。代わりに、購入モジュールを、任意の利用可能なエントリポイントで、アプリケーションによるエントリを聞くように設計することができる。
【００４８】
エントリポイントのいくつかの例には、アプリケーションの起動、アプリケーションの終了、アプリケーションの一時停止、およびアプリケーションの待機状態からの再開が挙げられる。また、テキスト、電子メール、またはＩＭ等のメッセージング特徴的機能を使用するアプリケーションは、読む、書く等の通信関連エントリポイントを有する場合もある。オペレーティングシステムによって、またはアプリケーション自体によって、エントリポイントをトリガすることができる。例えば、オペレーティングシステムは、プロセスとしてアプリケーションを起動するシステム呼び出しを実施してもよい。購入モジュールは、そのようなシステム呼び出しを聞くことができる。一方、アプリケーションは、自体を終了する呼び出しを行ってもよく、ＤＲＭモジュールもまた、そのような呼び出しを聞くことができる。
【００４９】
一実施形態では、アプリケーション２１０の逆コンパイルされた複製を購入モジュールと組み合わせることは、コードのライブラリをアプリケーション２１０に追加することを含む。コードのライブラリは、共有ライブラリ、静的リンクライブラリ、動的リンクライブラリ（「ＤＬＬ」）、その組み合わせ等を含むことができる。一実施形態では、コードのライブラリを追加することは、コードのライブラリをアプリケーション２１０に組み込むことを含むことができる。一実施形態では、コードのライブラリを追加することは、アプリケーション２１０と関連付けられるコードを修正することを含むことができる。
【００５０】
ブロック３０８で、アプリケーション配布サービス１５０は、購入モジュール２３５と組み合わせられたアプリケーション２１０の逆コンパイルされた複製を再コンパイルする。一実施形態では、購入モジュール２３５を伴うアプリケーション２１０は、アプリケーションデータストア１６０上に記憶される。アプリケーション管理システム１００は、ユーザ２０５がアプリケーション２１０を購入する（ある価格で、または無料で）か、またはアプリケーション２１０の複製を要求する度に、購入モジュール２３５を伴うアプリケーション２１０をアプリケーションデータストア１６０から取り出すことができる。他の実施形態では、アプリケーション２１０は、購入モジュール２３５なしでアプリケーションデータストア１６０に記憶される。これらの実施形態では、アプリケーション配布サービス１５０は、ユーザがアプリケーション管理システム１００からアプリケーション２１０の複製を取得することを試みる度に、またはアプリケーション管理システム１００上のアプリケーション２１０にアクセスすることを試みる度に、プロセス３００を実施することができる。
【００５１】
一実施形態では、再コンパイルされたアプリケーション２１０に、アプリケーション管理システム１００と関連付けられるアプリケーション提供者証明書で署名することができる。
【００５２】
一実施形態では、アプリケーション管理システム１００は、開発者２０７と関連付けられる開発者証明書で署名されるように、再コンパイルされたアプリケーション２１０を開発者２０７に提供することができる。
【００５３】
一実施形態では、アプリケーション配布サービス１５０は、購入モジュールに加えて、または購入モジュールの代わりに、任意の他のタイプのモジュールをアプリケーション２１０に挿入するため、またはそれと組み合わせるために、プロセス３００を使用することができる。例えば、アプリケーション配布サービス１５０は、アプリケーション２１０の健康状態またはアプリケーション２１０と関連付けられる使用統計データを監視することができるモジュールを挿入するために、プロセス３００を使用することができる。ユーザ２０５またはユーザコンピューティングデバイス１０５と同一のタイプのデバイスを所有する他のユーザに推奨を行うことを促進するために、この情報を、アプリケーション管理システム１００に提供することができる。一実施形態では、アプリケーション配布サービス１５０は、同一のゲームアプリケーションの複数のユーザが相互と対抗して、または共に遊ぶことができるように、１人参加型ゲームアプリケーションに多人数参加用モジュールを追加することができる。
【００５４】
別の実施例では、アプリケーション配布サービス１５０は、アプリケーション２１０上のコンテンツアイテムへのアクセスを制御するため、またはアプリケーション２１０上の利用可能なコンテンツアイテムを制御するために、ペアレンタルコントロールモジュールをアプリケーションに挿入することができる。一実施形態では、ペアレンタルコントロールモジュールは、アプリケーションが開始する際、またはアプリケーションの特定の機能（例えば、「ゲーム開始」、「ゲーム読み込み」、または「コンテンツの購入」）が選択される際にユーザ２０５に提供されるように構成される、アクセス制御インターフェースを含む。アクセス制御インターフェースは、アプリケーションもしくは機能へのアクセスが解除される前に、パスワード、パターンベースの入力、または他のアクセスキーが提供されることを要求することができる。例えば、子供が電子カタログからコンテンツアイテムを購入することを試みる場合、ペアレンタルコントロールモジュールは、アクセス制御インターフェースを提示し、購入を進めることを可能にする前に、正しい入力を要求することができる。
【００５５】
一実施例では、グローバルポジショニングシステム（ＧＰＳ）アクセス、３Ｄ加速、または加速度計アクセス等のデバイス固有のハードウェア特徴的機能を活用するために、コードモジュールを挿入することができる。アプリケーションは、同一のハードウェア特徴的機能を支援しない異なるデバイスタイプ（例えば、スマートフォンまたはタブレット）上で走らせることができるため、何人かの開発者は、特定のデバイス固有の特徴的機能を活用するためのコードを実装することを差し控える場合がある。開発者は、すべてのデバイスタイプのそのような特徴的機能を実装することは複雑すぎる、またはいずれの特定のデバイスタイプも、特徴的機能の開発を行う価値がある程に十分に大きいユーザ基盤を有さないと考える場合がある。そのような状況では、アプリケーション管理システム１００が、デバイス固有のハードウェア特徴的機能の支援を追加するためのコードモジュールを挿入してもよい。
【００５６】
上述されるように、追加することができる１つのタイプのモジュールは、ＤＲＭモジュール２４０である。一実施形態では、ＤＲＭモジュールが、アプリケーション２１０が許可なく修正されたと判定する場合、および／またはＤＲＭモジュールが、無許可のユーザ（またはデバイス）がアプリケーション２１０にアクセスしていると判定する場合、ＤＲＭモジュールは、ユーザにメッセージを提示すること、および／またはアプリケーション２１０に実行を中止させることができる。より広くは、ＤＲＭモジュールは、アプリケーション２１０の実行の範囲が、アプリケーションによって提供される特徴的機能の特定のサブセット（例えば、無料版特徴的機能対プレミアム版特徴的機能）に限定されているか否かを判定することができる。実行の範囲が限定されている場合、ＤＲＭモジュールは、アプリケーション２１０の実行を、例えば、アプリケーションの完全プレミアム版の代わりにアプリケーション２１０のシェアウェア部分に等、その範囲に限定すること、または切り替えることができる。ＤＲＭモジュールは、アプリケーション２１０の実行を、実行を許可された特徴的機能（シェアウェアまたは未登録の特徴的機能等）に限定するように切り替える、ないしは別の方法で修正することができる。また、ＤＲＭモジュールは、ユーザにアプリケーション２１０に登録するよう気付かせる、ユーザに提示するためのメッセージを出力し、ユーザがアプリケーション２１０にアクセスすることを拒否する等を行うことができる。いくつかの実施形態では、ＤＲＭモジュール２４０の機能性のいくつかまたはすべては、アプリケーション管理システム１００との協働で提供される。例えば、ＤＲＭモジュール２４０は、購入サービス１４５の権利付与モジュール２５０と通信し、協働してもよい。
【００５７】
一実施形態では、開発者２０７が、アプリケーション管理システム１００への伝送のために、アプリケーション提出モジュール２２５にアプリケーション２１０を提供するのに応えて、アプリケーション提出モジュール２２５によって、プロセス３００を実施することができる。
【００５８】
一実施形態では、開発者２０７がＩＤＥ２１５と関連付けられる特徴的機能またはプラグインを有効化するのに応えて、プロセス３００を実施することができる。一実施形態では、ＩＤＥ２１５は、アプリケーション２１０と関連付けられるソースコードの複製を作成することができ、ソースコードの複製を購入モジュール２３５と組み合わせることができる。一実施形態では、ＩＤＥ２１５は、ソースコードと購入モジュール２３５との組み合わせをコンパイルすることができる。一実施形態では、ＩＤＥ２１５またはアプリケーション提出モジュール１４４は、コンパイルされた組み合わせをアプリケーション管理システム１００に提供することができる。一実施形態では、ＩＤＥ２１５またはアプリケーション提出モジュール１４４は、アプリケーション２１０またはアプリケーション２１０と購入モジュール２３５とのコンパイルされた組み合わせに、開発者２０７と関連付けられる開発者証明書で署名することができる。
【００５９】
いくつかの代替えの実現形態では、開発者システム１０７は、コンパイルされたアプリケーションの代わりに、アプリケーションのソースコードをアプリケーション管理システム１００に提出する。アプリケーション管理システム１００は次いで、アプリケーション２１０を作成するために、購入モジュール２３５をソースコードと組み合わせ、購入モジュール２３５およびソースコードをコンパイルすることができる。
【００６０】
さらに、プロセス３００は、アプリケーションを購入モジュール２３５とリパッケージングするアプリケーション管理システム１００に関して記載されてきたが、他の方法で、購入モジュール２３５をアプリケーションに追加することができる。例えば、アプリケーション管理システム１００は、購入モジュール２３５を開発者システム１０７に提供することができる。開発者システム１４０は次いで、アプリ内購入が使用可能なアプリケーションを作成するために、購入モジュール２３５をアプリケーションと組み合わせることができる。
【００６１】
いくつかの実施形態では、ＣＰＵと、Ｉ／Ｏコンポーネントと、ストレージと、メモリとを含むコンポーネントを有するサーバコンピューティングシステムが、アプリケーション管理システム１００またはアプリケーション管理システム１００の特定のコンポーネントを実行するために使用されてもよい。アプリケーション管理システム１００の実行可能なコードモジュールを、サーバのメモリ内および／または他のタイプの持続性コンピュータ可読ストレージ媒体上に記憶することができる。いくつかの実施形態では、アプリケーション管理システム１００は、上述されるものとは異なるように構成されてもよい。
【００６２】
Ｖ．さらなるシステムの詳細
明らかであるように、アプリケーション管理システム１００の多くの変形および実現形態が可能である。例えば、図１を参照すると、１つ以上のサーバ１２０は、ウェブサーバ、アプリケーションサーバ、データベースサーバ、その組み合わせ等を含むことができる。いくつかの実施形態では、ネットワーク１１０は、インターネット等、場合によっては様々な異なる団体によって運営される、リンクされたネットワークの公的にアクセス可能なネットワークである。他の実施形態では、ネットワーク１１０は、例えば、特権を有さないユーザが完全に、もしくは部分的にアクセスすることができない、企業または大学のネットワーク等の私的ネットワークであってもよい。さらに他の実施形態では、ネットワーク１１０は、インターネットへのアクセス、および／またはインターネットからのアクセスを有する、１つ以上の私的ネットワークを含んでもよい。
【００６３】
いくつかの実施形態では、購入サービス１４５は、顧客のプライバシー権に従って、コンテンツアイテム購入、コンテンツアイテムの転送、コンテンツライセンスの使用、支払われる価格、購入の頻度、他の購入データ等を監視する。いくつかの実施形態では、そのようなデータは、顧客のプライバシーを保護するために匿名化されてもよい。購入サービス１４５は、１つ以上の報告を生成するため、購入の動向を特定するため、人気のアイテムを判定するため、ユーザ嗜好を判定するため、他の製品の推奨を生成するため、クロスマーケティングの機会を特定するため、抱き合わせ販売もしくは関連製品を特定するため、コンテンツアイテムの再販価格に基づくコンテンツアイテムの価格情報（例えば、市場価格、コンテンツアイテムまたはコンテンツアイテムのタイプの価格帯、特定の価格点での需要等）を判定するため、またはデータの他の解析を実施するために、収集されたデータをデータマイニングしてもよい。
【００６４】
購入サービス１４５は、エンドユーザ、開発者、またはアプリケーション管理システム１００の人材（例えば、管理者）に、情報および統計データを報告することができる。例えば、購入サービス１４５は、コンテンツ提出履歴、コンテンツ販売、提出されたコンテンツの改版データ、購入データ等を追跡してもよい。いくつかのそのような実施形態では、購入サービス１４５は、例えば、購入の現在の状態、ダウンロードの完了までの時間等を含む、対話式のフィードバックをユーザに提供してもよい。いくつかの実施形態では、購入サービス１４５は、購入データの詳細を示す、またはそれを要約する報告を生成し、電子メールを介して、報告をユーザに通信することができる、またはウェブサービスを介して、報告、使用統計データ、もしくは対話式のフィードバックへのアクセスを提供することができる。
【００６５】
いくつかの実施形態では、購入サービス１４５は、コンテンツアイテムの権利付与を照合することができる。購入サービス１４５は、アプリケーションに組み込まれるＤＲＭモジュールと通信し、特定のコンテンツアイテムがそのアプリケーション上での使用を許可されているかを照合してもよい。そのような機能性は、コンテンツアイテムをアプリケーションの複製間で共有することを可能にするのに有利であり得る。例えば、ユーザは、以前に購入したコンテンツアイテムを異なるユーザコンピューティングデバイス１０５上のアプリケーションの別の複製にダウンロードすることができ、その第２のアプリケーションの複製上のＤＲＭモジュールは、ユーザがコンテンツアイテムを既に購入しているかを照合することができる。
【００６６】
一実施形態では、購入サービス１４５は、アプリケーションおよび／またはコンテンツアイテムへのアクセスを安全なものにするため、または検証するために、セキュリティトークン（または他の認証データ）を利用する。セキュリティトークンは、コンテンツアイテムの使用を制御するため、またはコンテンツアイテムの転送を管理するために使用することができる。例えば、セキュリティトークンは、ユーザコンピューティングデバイス１０５を一意に識別する、コンピューティングデバイス識別子または他のパラメータを含むことができる。セキュリティトークンを、特定のコンテンツアイテムと関連付けることができる。セキュリティトークンを、コンテンツアイテムのチェックサムおよびコンテンツアイテムを購入するユーザに関する情報を含むように作成することができる。例えば、セキュリティトークンは、いくつかの例を挙げると、ユーザ識別子と、デバイス識別子とを含むことができる。コンテンツアイテムの別のユーザコンピューティングデバイス１０５への転送等のいくつかの事象は、購入サービス１４５にセキュリティトークンを更新させることができる。同様にまた、セキュリティトークンを、アプリケーションの使用を制御するため、またはその転送を管理するために使用することもできる。
【００６７】
また、セキュリティトークンは、トークンと関連付けられるコンテンツアイテムが使用され得る状況を指定するパラメータも含んでもよい。いくつかの実施形態では、セキュリティトークンは、セキュリティトークンがどれくらいの長さ有効であるかを指定する制限時間を含み、そのような実施形態では、購入サービス１４５は、制限時間が経過していない場合にのみ、またはセキュリティトークンのタイムスタンプが制限時間内もしくは閾値時間範囲内（例えば、購入の３０分以内、１時間以内、１日以内等）である場合にのみ、トークンを認証する。例えば、認証中、購入サービス１４５は、トークンを復号し、その制限時間または他の値を確認してもよい。制限時間が経過している場合、アプリケーション管理システム１００は、新しいセキュリティトークンが発行されるべきであるか否か（例えば、ユーザが新しいサブスクリプションを購入するか否か）、またはコンテンツアイテムへのアクセスがブロックされるべきか否かを判定してもよい。いくつかの実施形態では、セキュリティトークンは、１回使用トークンであり、購入サービス１４５は、トークンが依然として使用されていない場合にのみ、トークンを認証する。
【００６８】
セキュリティトークンのチェックサムの作成において、アプリケーション開発者および／またはアプリケーション管理システム１００と関連付けられるデジタル証明書（単数または複数）を、チェックサムと共に含めることができる、またはチェックサムに適用することができる。さらに、セキュリティトークンの作成において、セキュリティトークンに署名するために、証明書を使用することができ、これは、セキュリティトークンが、セキュリティトークンを作成した実体以外の実体によって修正されていないことの保証レベルを提供する。一般的に、デジタル証明書は、ユーザまたは組織を識別し、ユーザまたは組織が誰／何であるという主張の保証レベルを提供する。この保証レベルは、証明書を発行する証明機関に対して置かれる信頼と関連付けられる。証明書は典型的に、場合によっては他の物と共に、証明書の所有者の秘密鍵と関連付けられる公開鍵と、証明書の所有者を認証した実体（例えば、証明機関）を識別する発行者とを含む。証明書提供システムまたは証明機関の非制限的な例には、ＶｅｒｉＳｉｇｎ（登録商標）、ＧｏＤａｄｄｙ（登録商標）、およびＣｏｍｏｄｏ（登録商標）が挙げられる。一般的に、これらの証明書提供システムは、デジタル証明書で識別される証明書発行者である。証明書は、データストレージ１７０または証明書を記憶することができる他のシステムに記憶されてもよい。
【００６９】
ユーザがデジタルコンテンツアイテムを購入するのに応えて、アプリケーション管理システム１００は、セキュリティトークンと共に、デジタルコンテンツアイテムを、ユーザコンピューティングデバイス１０５上で動作する関連アプリケーションに提供することができる。関連アプリケーション上のＤＲＭモジュールは、ユーザコンピューティングデバイス１０５上のコンテンツアイテムへのアクセスを提供するか否かを判定するために、セキュリティトークンを使用することができる。コンテンツアイテムの権利喪失の事象では、またはアクセスが取り消されるべきであると判定された後、購入サービス１４５は、コンテンツアイテムへのさらなるアクセスを防止するために、セキュリティトークンを期限切れにすることができる、または例えば、ＤＲＭモジュールと通信し、コンテンツアイテムを削除するコマンドを発行することによって、コンテンツアイテムを無効化もしくは消去することができる。
【００７０】
上述されるように、購入サービス１４５はまた、パーソナライズサービスも提供することができる。パーソナライズサービスの例には、推奨サービス、パーソナライズ検索サービス、およびタグベースのサービスが挙げられる。推奨サービスは、推奨を生成するために、挙動ベースのアルゴリズムを含む種々のアルゴリズムのうちの任意のアルゴリズムを使用することができる。いくつかの実施形態では、そのような挙動ベースのアルゴリズムは、アイテム対アイテムマッピングを生成するために、ユーザの挙動を分析することができ、これらのマッピングを、ユーザのアイテム選択アクティビティに関連する推奨アイテムに使用することができる。いくつかの実現形態では、パーソナライズ検索サービスは、検索クエリをユーザに推奨することができる。タグベースのサービスは、ユーザがカタログ内のアイテムにテキストタグを適用し、それによってアイテムを分類するための機能性を提供することができる。他のパーソナライズサービスには、ユーザがアイテムのリストを作成するリストサービス、ブログサービス、パーソナライズソーシャルネットワーキングサービス等を含むことができる。
【００７１】
アプリケーションデータストア１６０は、アプリケーションおよびそれぞれのアプリケーションと関連付けられるコンテンツアイテム等のアプリケーションデータを記憶することができる。アプリケーションデータは、画像、バイナリ、ビデオ、および／または他の電子データを含んでもよく、単一のコンテンツファイルもしくはストリーム、圧縮ファイル（例えば、ＺＩＰ、ＲＡＲ、もしくは他の圧縮ファイル形式）、または複数のファイルを構成するコンテンツバンドルとしてグループ化されてもよい。アプリケーションデータはまた、１つ以上のデータストリームとしても伝送されてもよいが、アプリケーションデータは典型的に、電子ファイルとして記憶および／または伝送される。アプリケーションデータストア１６０はまた、コンテンツデータを記述するコンテンツメタデータも記憶してもよい。いくつかの実施形態では、コンテンツメタデータは、コンテンツファイルタイトル、説明、キーワード、コンテンツ価格、改版情報等を備える。コンテンツメタデータは、カタログサービス１４０によって、そのカタログ上に提供され、それぞれのコンテンツデータと関連付けられてもよい。
【００７２】
いくつかの実施形態では、アプリケーション管理システム１００は、そのユーザのアカウントを、ユーザデータのためのデータストア１７０内に維持する。アプリケーション管理システムは、異なるタイプのユーザの異なるタイプのアカウント（例えば、開発者および顧客）を維持してもよい、またはアカウントは、同一のタイプであってもよい。一実施形態では、開発者のアカウントは、コンテンツの価格、コンテンツの説明、コンテンツの最新版等の開発者のアプリケーションおよびコンテンツアイテムに関する情報、または他のアカウント情報を含むことができる。開発者によって送信されるコンテンツ提出に少なくとも部分的に基づき、このデータを更新することができる。例えば、開発者が、コンテンツアイテムの新版を発行することを希望する場合、開発者は、新しいコンテンツアイテムを登録することができる。アプリケーション管理システムは次いで、そのコンテンツアイテムと関連付けられる情報を更新することができる。顧客アカウントは、コンテンツ購入、クレジットカードまたは支払い情報、勘定残高、発送選択肢、住所、ユーザコンピューティングデバイス情報（例えば、一意のデバイス識別子、デバイスモデル、デバイス仕様、オペレーションシステム、ＩＰアドレス、ポートアドレス、ネットワークアドレス）等に関する情報を含んでもよい。
【００７３】
アプリケーションによって、例えば、追加の機能性を提供するためのコードモジュールが挿入されているアプリケーションによって、アプリケーション管理システム１００によって提供されるサービスにアクセスすることができる。ネットワークを介して相互接続される何台かのコンピューティングマシン等、１台以上の物理サーバまたはコンピューティングマシンを用いて、アプリケーション管理システム１００を実装することができる。したがって、アプリケーション管理システム１００内に描写されるコンポーネントのそれぞれは、様々な特徴的機能を実施するためのハードウェアおよび／またはソフトウェアを含むことができる。一実施形態では、アプリケーション管理システム１００は、ウェブサイトもしくはウェブサイト群を含む、または提供する。アプリケーション管理システム１００と同様に、開発者システム１０７は、ハードウェアに実装することができ、任意のタイプのコンピューティングデバイスを含むことができる。必ずしもそうである必要はないが、開発者システム１０７は、相互とは異なる実体、およびアプリケーション管理システム１００の運営者とは異なる実体によって運営されてもよい。
【００７４】
アプリケーション管理システム１００の様々なコンポーネントの処理を、複数のマシン、ネットワーク、および他のコンピューティング資源の間で分散することができる。アプリケーション管理システム１００の様々なコンポーネントもまた、１台以上の専用サーバというよりはむしろ仮想マシンに実装することができる。同様に、示されるデータリポジトリは、例えば、ストレージエリアネットワークもしくは他の分散ストレージシステムを含む、物理および／または論理データストレージを表すことができる。さらに、いくつかの実施形態では、示されるコンポーネント間の接続は、ハードウェア間の実際の接続というよりはむしろ、データフローの可能な経路を表す。可能な接続のいくつかの実施例が示されているが、様々な実現形態において、示されるコンポーネントのサブセットのいずれかは、コンポーネントの任意の他のサブセットと通信することができる。
【００７５】
いくつかの実施形態では、アプリケーション管理システム１００は、図１に図示されるものとは異なるように構成されてもよい。例えば、図示されるモジュールによって提供される様々な機能性を、組み合わせる、再編成する、追加する、または消去することができる。いくつかの実施形態では、追加の、もしくは異なるプロセッサまたはモジュールが、図１に図示される実施形態例を参照して記載される機能性のうちのいくつかあるいはすべてを実施してもよい。多くの実現形態の変形が可能である。
【００７６】
上述されるものに加えて、アプリケーション管理システム１００と、ユーザコンピューティングデバイス１０５と、開発者システム１０７との間で、他のタイプのプログラム的指示（加えて、または代替えとして）が可能である。例えば、サービス要求を、ユーザから（例えば、対話型コンソールまたはアプリケーション管理システム１００によって提供される他のＧＵＩを介して）、またはユーザコンピューティングデバイス１０５上の実行プログラムから、直接受信することができる。いくつかの実施形態では、ユーザは、他のタイプのインターフェースを使用して、および他の方法で、アプリケーション管理システム１００と対話してもよい。例えば、アプリケーション管理システム１００は、ユーザがウェブブラウザを使用して要求を提出することを可能にする、ウェブサービスインターフェース（例えば、ウェブページまたはウェブページのセット）を提供してもよい。また、他のタイプのインターフェースも使用されてもよい。
【００７７】
前述のセクションに記載されるプロセス、方法、およびアルゴリズムのそれぞれは、１台以上のコンピュータまたはコンピュータプロセッサによって実行されるコードモジュールで具現化され、それらによって、完全に、または部分的に自動化されてもよい。コードモジュールは、ハードドライブ、固体メモリ、光学ディスク等の任意のタイプの持続性コンピュータ可読媒体またはコンピュータストレージデバイス上に記憶されてもよい。プロセスおよびアルゴリズムは、部分的に、または完全に、回路で実現されてもよい。開示されるプロセスおよびプロセスステップの結果は、永続的に、そうでなければ、例えば、揮発性または不揮発性ストレージ等の任意のタイプの持続性コンピュータストレージに記憶されてもよい。
【００７８】
上述される様々な特徴的機能およびプロセスは、相互から独立して使用されてもよく、または様々な方法で組み合わせられてもよい。すべての可能な組み合わせおよび副組み合わせは、本開示の範囲内であることが意図される。加えて、特定の事象、方法、またはプロセスブロックは、いくつかの実現形態で省略されてもよい。また、本明細書に記載される方法およびプロセスは、いずれの特定のシーケンスにも限定されず、事象、ブロック、またはそれに関連する状態を、適切な他のシーケンスで実施することができる。例えば、記載されるタスクまたは事象は、具体的に開示されるもの以外の順序で実施されてもよい、または複数のブロックは、単一のブロックもしくは状態に組み合わせられてもよい。ブロック例、タスク例、または事象例は、順次実施されてもよく、並列に実施されてもよく、またはいつかの他の様式で実施されてもよい。ブロック、タスク、もしくは事象が、開示される実施形態例に追加されてもよく、またはそれから削除されてもよい。本明細書に記載されるシステム例およびコンポーネント例は、記載されるものとは異なるように構成されてもよい。例えば、要素が、開示される実施形態例に追加されてもよく、それから削除されてもよく、またはそれと比較して再編成されてもよい。
【００７９】
とりわけ、「〜できる（ｃａｎ）」、「〜できる（ｃｏｕｌｄ）」、「〜であってもよい（ｍｉｇｈｔ）」、「〜であってもよい（ｍａｙ）」、「例えば（ｅ．ｇ．）」等の本明細書で使用される条件付き言語は、明確にそうではないと記載されているか、ないしは使用される文脈において理解されない限り、一般的に、他の実施形態が含まない一方で、特定の実施形態が、特定の特徴的機能、要素および／またはステップを含むことを伝えることが意図される。したがって、そのような条件付き言語は、一般的に、特徴的機能、要素、および／またはステップが、これらの特徴的機能、要素、および／もしくはステップが含まれるか、または任意の特定の実施形態で実施されるかに関わらず、１つ以上の実施形態に何らかの形で要求されること、あるいは１つ以上の実施形態が、著者の入力もしくは指示によって、またはそれらなしに、決定するための論理を必然的に含むことを示唆することは意図されない。「備える（ｃｏｍｐｒｉｓｉｎｇ）」、「含む（ｉｎｃｌｕｄｉｎｇ）」、「有する（ｈａｖｉｎｇ）」、等の用語は、同義語であり、包含的に非限定的に使用され、追加の要素、特徴的機能、行為、動作等を除外しない。また、「または（ｏｒ）」という用語は、包括的意味（排他的意味ではなく）で使用され、そのため、「または（ｏｒ）」という用語は、例えば、要素のリストを接続するために使用される場合、リスト内の要素のうちの１つ、いくつか、またはすべてを意味する。
【００８０】
付記
１．開発者が提出したアプリケーションを処理するコンピュータ実装方法であって、該処理が、
アプリケーション提出者のアカウントと関連付けて、該アプリケーション提出者によるアプリケーションの提出をネットワーク上で受信することであって、該アプリケーションは、エンドユーザが電子カタログからコンテンツアイテムを購入するための機能性を欠如している、ことと、
ユーザが該アプリケーション内から、該電子カタログからコンテンツアイテムを購入するための機能性を提供する、購入モジュールを追加することによって、該アプリケーションを修正することであって、該アプリケーションを修正することは、ソースコードをもたらすように、該アプリケーションの少なくとも一部分を逆コンパイルすることと、該購入モジュールを追加するように、該ソースコードを修正することとを含む、ことと、
該アプリケーションを、該購入モジュールを追加するように修正された際に、エンドユーザが該電子カタログ内で利用可能にすることと、
を含み、該処理が、１つ以上のコンピューティングデバイスを備えるコンピューティングシステムによって実施される、
方法。
２．該処理は、デジタル著作権管理（ＤＲＭ）モジュールを該アプリケーションと組み合わせることをさらに含む、付記１に記載の方法。
３．該ＤＲＭモジュールは、該アプリケーションに対する無許可の変更が行われたと判定するのに応えて、該修正されたアプリケーションの実行を一時中断するように構成される、付記２に記載の方法。
４．該処理は、ペアレンタルコントロールモジュールを該アプリケーションと組み合わせることをさらに含む、付記１に記載の方法。
５．該ペアレンタルコントロールモジュールは、アクセスキーの入力を要求する、アクセス制御インターフェースを提示するように構成される、付記４に記載の方法。
６．該ペアレンタルコントロールモジュールは、該アクセス制御インターフェース上で該アクセスキーが提供されない限り、該電子カタログ上での購入を防止するように構成される、付記５に記載の方法。
７．該アプリケーションを修正することは、該アプリケーションと関連付けられる１つ以上のエントリポイントを識別することをさらに含む、付記１に記載の方法。
８．該アプリケーションを修正することは、該アプリケーションに購入コードを挿入することをさらに含み、該購入コードは、該１つ以上のエントリポイントの実行と関連して実行されるように構成される、付記７に記載の方法。
９．該１つ以上のエントリポイントは、以下の機能、該アプリケーションの起動、該アプリケーションの終了、該アプリケーションの一時停止、および該アプリケーションの一時停止状態からの再開のうちの１つ以上を実施するように構成される、１つ以上のルーチンを備える、付記７に記載の方法。
１０．該電子カタログは、モバイルデバイスがネットワーク上でアクセス可能なアプリケーションストアを構成する、付記１に記載の方法。
１１．提出されるアプリケーションを処理するためのシステムであって、該システムは、コンピュータハードウェアを備えるアプリケーション配布システムを備え、該アプリケーション配布システムは、
アプリケーション提出者のアカウントと関連付けて、該アプリケーション提出者によるアプリケーションの提出をネットワーク上で受信し、該アプリケーションは、エンドユーザが電子カタログからコンテンツアイテムを購入すること可能にするための機能性、および該電子カタログへのアクセスを制御するための機能性のうちの少なくとも１つの機能性を欠如しており、
（１）ユーザが該アプリケーション内から、該電子カタログからコンテンツアイテムを購入することを可能にする機能性を提供する、購入モジュール、および（２）該ユーザが該電子カタログへのアクセスを制御することを可能にする、ペアレンタルコントロールモジュールのうちの少なくとも１つを追加することによって、該アプリケーションを修正し、該アプリケーションを修正することは、ソースコードをもたらすように、該アプリケーションの少なくとも一部分を逆コンパイルすることと、該購入モジュールおよび該ペアレンタルコントロールモジュールのうちの少なくとも１つを追加するように、該ソースコードを修正することとを含む、
ように構成される、
システム。
１２．該アプリケーション配布システムは、該アプリケーションを、該購入モジュールおよび該ペアレンタルコントロールモジュールのうちの少なくとも１つを追加するように修正された際に、エンドユーザが該電子カタログ内で利用可能にするようにさらに構成される、付記１１に記載のシステム。
１３．該購入モジュールは、該エンドユーザデバイスにダウンロードされたコンテンツアイテムを認証するように構成される、付記１１に記載のシステム。
１４．該購入モジュールは、該アプリケーションのコンテンツアイテムのリストへのアクセスを提供するように構成されるカタログインターフェースを含む、付記１１に記載のシステム。
１５．該購入モジュールは、コンテンツアイテムの該リストを提供するカタログサービスと通信する、付記１４に記載のシステム。
１６．該購入モジュールは、該アプリケーションと関連付けられるコンテンツアイテムに対する支払いを処理するように構成される、購入サービスと通信するように構成される、付記１１に記載のシステム。
１７．該購入サービスは、該購入に対する税金を徴収し、分配するように構成される、付記１６に記載のシステム。
１８．該購入サービスは、該アプリケーションと関連付けられるコンテンツアイテムに対する支払いを処理するように構成される、付記１６に記載のシステム。
１９．持続性物理コンピュータストレージであって、
アプリケーション提出者アカウントと関連付けて、アプリケーション提出者からアプリケーションの提出をネットワーク上で受信することであって、該アプリケーションは、該アプリケーション内で追加のコンテンツアイテムにアクセスするための機能性を欠如している、ことと、
追加の機能性を提供する機能性モジュールを該アプリケーションと組み合わせることによって、該受信したアプリケーションを修正することであって、該機能性モジュールは、該アプリケーション内から該追加のコンテンツアイテムにアクセスするための機能性を追加する、ことと、
を含むプロセスに従って生成される実行可能なアプリケーションが記憶されている、持続性物理コンピュータストレージ。
２０．該プロセスは、該アプリケーションを、該機能性モジュールを追加するように修正された際に、エンドユーザが該電子カタログ内で利用可能にすることをさらに含む、付記１９に記載の持続性物理コンピュータストレージ。
２１．該機能性モジュールによって提供される、該コンテンツアイテムにアクセスするための該追加される機能性は、該コンテンツアイテムへの無許可のアクセスを制御することを含む、付記１９に記載の持続性物理コンピュータストレージ。
２２．該機能性モジュールによって提供される、該コンテンツアイテムにアクセスするための該追加される機能性は、該アプリケーションの複数のコンテンツアイテムの電子カタログリストへのアクセスの制御を可能にすることを含む、付記１９に記載の持続性物理コンピュータストレージ。
２３．該機能性モジュールによって提供される、該コンテンツアイテムにアクセスするための該追加される機能性は、電子カタログからの該コンテンツアイテムの購入を可能にすることを含む、付記１９に記載の持続性物理コンピュータストレージ。
【００８１】
特定の実施形態例が記載されてきたが、これらの実施形態は、一例としてのみ提示されており、本明細書に開示される本発明の範囲を限定することは意図されない。したがって、前述の記載のいずれも、いずれかの特定の特徴的機能、特徴、ステップ、モジュール、もしくはブロックが必要であること、または不可欠であることを示唆することは意図されない。実際、本明細書に記載される新規の方法およびシステムは、種々の他の形態で具現化されてもよく、さらに、本明細書に開示される本発明の趣旨から逸脱することなく、本明細書に記載される方法およびシステムの形態における、様々な省略、置換、および変更が行われてもよい。
【図１】
0005778865.tif 000002
【図２】
0005778865.tif 000003
【図３】
0005778865.tif 000004