特許第5778865号(P5778865)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アマゾン テクノロジーズ インコーポレイテッドの特許一覧

特許5778865アプリケーションに機能性を追加するためのサービス
<>
  • 特許5778865-アプリケーションに機能性を追加するためのサービス 図000002
  • 特許5778865-アプリケーションに機能性を追加するためのサービス 図000003
  • 特許5778865-アプリケーションに機能性を追加するためのサービス 図000004
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5778865
(24)【登録日】2015年7月17日
(45)【発行日】2015年9月16日
(54)【発明の名称】アプリケーションに機能性を追加するためのサービス
(51)【国際特許分類】
   G06F 9/44 20060101AFI20150827BHJP
   G06F 11/00 20060101ALI20150827BHJP
   G06Q 50/10 20120101ALI20150827BHJP
   G06F 13/00 20060101ALI20150827BHJP
【FI】
   G06F9/06 620A
   G06F9/06 630B
   G06Q50/10 140
   G06F13/00 530A
【請求項の数】14
【全頁数】26
(21)【出願番号】特願2014-518894(P2014-518894)
(86)(22)【出願日】2012年6月25日
(65)【公表番号】特表2014-528108(P2014-528108A)
(43)【公表日】2014年10月23日
(86)【国際出願番号】US2012044073
(87)【国際公開番号】WO2013003292
(87)【国際公開日】20130103
【審査請求日】2013年12月25日
(31)【優先権主張番号】13/170,074
(32)【優先日】2011年6月27日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】506329306
【氏名又は名称】アマゾン テクノロジーズ インコーポレイテッド
(74)【代理人】
【識別番号】100121728
【弁理士】
【氏名又は名称】井関 勝守
(72)【発明者】
【氏名】パレヤー,アミーシュ
(72)【発明者】
【氏名】ギル,サンバー
(72)【発明者】
【氏名】ジョンズ,マシュー,エイ.
(72)【発明者】
【氏名】ラウズ,アレクサンダー,エル.
(72)【発明者】
【氏名】オケレケ,メッカ,シー.
(72)【発明者】
【氏名】ペレッド,イェール
【審査官】 多胡 滋
(56)【参考文献】
【文献】 特表2012−528363(JP,A)
【文献】 特表2010−529527(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/44
G06F 11/00
G06F 13/00
G06Q 50/10
(57)【特許請求の範囲】
【請求項1】
開発者が提出したアプリケーションを処理するコンピュータ実装方法であって、前記処理が、
アプリケーション提出者のアカウントと関連付けて、前記アプリケーション提出者によるアプリケーションの提出をネットワーク上で受信することであって、前記アプリケーションは、エンドユーザが電子カタログからコンテンツアイテムを購入するための機能性を欠如している、ことと、
ユーザが前記アプリケーション内から、前記電子カタログからコンテンツアイテムを購入するための機能性を提供する、購入モジュールを追加することによって、前記アプリケーションを修正することであって、前記アプリケーションを修正することは、ソースコードをもたらすように、前記アプリケーションの少なくとも一部分を逆コンパイルすることと、前記購入モジュールを追加するように、前記ソースコードを修正することとを含む、ことと、
前記アプリケーションを、前記購入モジュールが追加されるように修正された際に、前記エンドユーザが電子カタログ内で利用可能にすることと、
を含み、
前記処理が、1つ以上のコンピューティングデバイスを備えるコンピューティングシステムによって実施される、
方法。
【請求項2】
前記処理は、デジタル著作権管理(DRM)モジュールを前記アプリケーションと組み合わせることをさらに含み、前記DRMモジュールは、前記アプリケーションに対する無許可の変更が行われたと判定するのに応えて、前記修正されたアプリケーションの実行を一時中断するように構成される、請求項1に記載の方法。
【請求項3】
前記処理は、ペアレンタルコントロールモジュールを前記アプリケーションと組み合わせることをさらに含む、請求項1に記載の方法。
【請求項4】
前記ペアレンタルコントロールモジュールは、アクセスキーの入力を要求する、アクセス制御インターフェースを提示するように構成される、請求項3に記載の方法。
【請求項5】
前記ペアレンタルコントロールモジュールは、前記アクセス制御インターフェース上で前記アクセスキーが提供されない限り、前記電子カタログ上での購入を防止するように構成される、請求項4に記載の方法。
【請求項6】
前記アプリケーションを修正することは、前記アプリケーションと関連付けられる1つ以上のエントリポイントを識別することをさらに含む、請求項1に記載の方法。
【請求項7】
前記アプリケーションを修正することは、前記アプリケーションに購入コードを挿入することをさらに含み、前記購入コードは、前記1つ以上のエントリポイントの実行と関連して実行されるように構成される、請求項6に記載の方法。
【請求項8】
前記1つ以上のエントリポイントは、以下の機能、前記アプリケーションの起動、前記アプリケーションの終了、前記アプリケーションの一時停止、および前記アプリケーションの一時停止状態からの再開のうちの1つ以上を実施するように構成される、1つ以上のルーチンを備える、請求項6に記載の方法。
【請求項9】
提出されるアプリケーションを処理するためのシステムであって、前記システムは、コンピュータハードウェアを備えるアプリケーション配布システムを備え、前記アプリケー
ション配布システムは、
アプリケーション提出者のアカウントと関連付けて、前記アプリケーション提出者によるアプリケーションの提出をネットワーク上で受信し、前記アプリケーションは、エンドユーザが電子カタログからコンテンツアイテムを購入することを可能にするための機能性、および前記電子カタログへのアクセスを制御するための機能性のうちの少なくとも1つの機能性を欠如しており、
(1)ユーザが前記アプリケーション内から、前記電子カタログからコンテンツアイテムを購入することを可能にする機能性を提供する、購入モジュール、および(2)前記ユーザが前記電子カタログへのアクセスを制御することを可能にする、ペアレンタルコントロールモジュールのうちの少なくとも1つを追加することによって、前記アプリケーションを修正し、前記アプリケーションを修正することは、ソースコードをもたらすように、前記アプリケーションの少なくとも一部分を逆コンパイルすることと、前記購入モジュールおよび前記ペアレンタルコントロールモジュールのうちの少なくとも1つを追加するように、前記ソースコードを修正することとを含む、
ように構成される、
システム。
【請求項10】
前記アプリケーション配布システムは、前記アプリケーションを、前記購入モジュールおよび前記ペアレンタルコントロールモジュールのうちの少なくとも1つを追加するように修正された際に、エンドユーザが前記電子カタログ内で利用可能にするようにさらに構成される、請求項9に記載のシステム。
【請求項11】
前記購入モジュールは、前記エンドユーザが使用するためのエンドユーザデバイスにダウンロードされたコンテンツアイテムを認証するように構成される、請求項9に記載のシステム。
【請求項12】
前記購入モジュールは、前記アプリケーションのコンテンツアイテムのリストへのアクセスを提供するように構成されるカタログインターフェースを含む、請求項9に記載のシステム。
【請求項13】
前記購入モジュールは、前記アプリケーションと関連付けられるコンテンツアイテムに対する支払いを処理するように構成される、購入サービスと通信するように構成される、請求項9に記載のシステム。
【請求項14】
前記購入サービスは、前記アプリケーションと関連付けられるコンテンツアイテムに対する支払いを処理するように構成される、請求項13に記載のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
本願は、その全体が本明細書に組み込まれる、2011年6月27日に出願された米国特許出願第13/170,074号の優先権を主張する。
【0002】
インターネットの発達により、コンテンツのデジタル配布がより望ましいものとなった。物理媒体を使用した配布と比較して、コンピュータネットワーク上でのデジタル配布がより低費用であることから、デジタル配布流通機構の発達がさらに推進されることが当然予想され得る。今日では、無線デバイス用のモバイルアプリケーション(「アプリ(app)」と呼ばれる場合がある)、ならびにブラウザおよびオペレーティングシステムデスクトップ用のアプリケーションを含む、アプリケーション、ゲーム、音楽、書籍、および映画等のますます多くのコンテンツタイプが、デジタルダウンロードを通して入手可能になっている。
【0003】
デジタルコンテンツの発達により、コンテンツ開発者は、アプリケーションおよび他のコンテンツアイテムを比較的低費用で配布することができる。これは、デジタルコンテンツアイテムの市場の成長をもたらした。デジタルコンテンツアイテムの増加は、そのようなコンテンツアイテムを管理し、追跡し、それらに対する著作権を譲渡するためのシステムの必要性を生み出した。いくつかの能力の中でも特に、これらのシステムは、アプリケーションおよびコンテンツアイテムを収益化することを可能にする。
【0004】
図面を通して、参照番号は、参照される要素間の対応を示すために、再使用される場合がある。図面は、本明細書に記載される実施形態例を図示するために提供され、本発明の範囲を限定することは意図されない。
【図面の簡単な説明】
【0005】
図1】開発者によって提出されるアプリケーションに機能性を追加する、アプリケーション管理システムの実施例を概略的に図示する、ネットワーク図である。
図2図1のアプリケーション配布システムに関与するアプリケーション処理シナリオ例の論理フロー図を概略的に図示する。
図3】アプリケーションと追加モジュールとを組み合わせるためのプロセスの一実施形態のフロー図を図示する。
【発明を実施するための形態】
【0006】
I.はじめに
ゲーム等の多くのアプリケーションでは、ユーザは、ゲームマップ、ゲームアイテム、キャラクタ、UIテーマ、音楽、レベル、追加の機能性等のコンテンツアイテムまたはアプリケーションの他の追加物を購入することができる。これらのコンテンツアイテムは、デジタルコンテンツストアまたはコンテンツ市場で購入することができ、次いでアプリケーション内で利用することができる。いくつかのアプリケーションは、アプリケーション内から購入することを可能にする(「アプリ内購入」)。一般的に、アプリケーション開発者は、アプリケーション内に特定のコードを含めることによって、アプリ内購入のための支援を含める。しかしながら、そのようなアプリ内購入コードの追加は、アプリケーションの複雑性および開発時間を増加させ、アプリケーションに潜在的なバグまたはエラーをもたらす、ないしは開発費を増加させる可能性がある。場合によっては、開発者は、そのようなコードを開発するのに必要な経験を有さず、したがってアプリ内購入を提供できない場合がある。
【0007】
本開示は、上記の問題の解決策を提供するシステムおよび関連プロセスを記載する。特定の実施形態では、これらのシステムおよびプロセスは、有利に、購入モジュールおよび/またはデジタル著作権管理(DRM)モジュール等の追加の機能性を提供するためのモジュールを、アプリケーションに挿入することができる。本明細書で使用することができるDRMモジュールの例は、開示全体が参照することによって本明細書に組み込まれる、2011年3月9日に出願された、名称が「Digital Rights Management for Applications」の米国特許出願第13/044,478号に記載されている。そのような挿入されるコードモジュールは、開発者が特徴的機能のためのアプリケーションコードのすべてまたは大部分を開発することなく、ユーザに特徴的機能およびサービスを提供することができる。さらに、アプリケーションが既に開発された後にモジュールを追加することができるため、追加の特徴的機能は、開発者の既存の開発プロセスに対する最小限の変更で、またはそれを変更することなく、アプリケーションに追加され得る。
【0008】
一実施例では、購入および/もしくはユーザデバイスへのダウンロード用のアプリケーションを配布するアプリケーションストアまたはアプリケーション管理システムの文脈において、これらのシステムおよびプロセスを実現することができる。開発者は、エンドユーザに配布するためのアプリケーションを、アプリケーション管理システムに提出することができる。アプリケーション管理システムは、開発者からアプリケーションを受信するのに応えて、エンドユーザがアプリケーションに関連するコンテンツアイテムを購入および/またはダウンロードすることを可能にする購入モジュール等のコードモジュールを、アプリケーションに挿入することができる。また、追加の機能性を提供する他のコードモジュールも挿入することができる。例えば、ユーザが特定のコンテンツアイテムにアクセスする権利を有するかを照合するためのDRMモジュールを追加することができる。また、DRMモジュールは、アプリケーションおよび/もしくはコンテンツアイテムの複製または修正も防止ないしは低減し得る。
【0009】
ここで、本開示を例示することは意図されるが、限定することは意図されない、特定の実施例および実施形態に関して、本開示の様々な態様が記載される。本開示のいかなる内容も、開示される実施形態のいずれかの特定の特徴的機能または特徴が必要不可欠であることを示唆することは意図されない。保護範囲は、特許請求の範囲によって定義される。
【0010】
II.アプリケーション管理システムの概要
図1は、開発者によって提出されるアプリケーションに追加の機能性を提供する、アプリケーション管理システム100の実施例を概略的に図示する、ネットワーク図である。アプリケーション管理システム100は、ネットワーク110を使用して、ユーザコンピューティングデバイス105および開発者システム107と通信することができる。アプリケーション管理システム100は、開発者システム107からアプリケーションを受信し、アプリケーションを修正し、これらのアプリケーションをユーザコンピューティングデバイス105に提供することができる。アプリケーション管理システム100は、アプリケーション管理システム100によって(または他の実体によって)提供される1つ以上のサービスへのアクセスを可能にするコードモジュールを挿入することによって、開発者が提出したアプリケーションを修正することができる。これらのサービスには、例えば、アプリケーションおよびコンテンツアイテムのダウンロードならびに/または購入を管理するためのサービス、ならびにコンテンツアイテムの権利付与を照合するためのサービスが挙げられる。いくつかの実施形態では、コードモジュールは、アプリケーションをソースコードに逆コンパイルし、コードモジュールを参照するコードスニペットを挿入し、次いでアプリケーションを再コンパイルすることによって挿入される。コードスニペットは、ソースコード内の自動選択される挿入点に挿入されてもよい。また、アプリケーション管理システム100は、特定のアプリケーションと関連付けられるコンテンツアイテムを提供または販売するためのカタログサービス140も提供してもよい。システム100は、コンテンツ管理サービス提供者によって運営されてもよい。
【0011】
本開示のシステムおよびプロセスは、主として開発者による提出との関連で記載されるが、アプリは、代わりに、アプリケーション発行者、コンテンツ作成者、またはアプリケーションを提出する他の実体等の別の実体によって提出されてもよい。「購入」という用語および同様の変形は、一般的に、ユーザがアプリケーションもしくはコンテンツアイテムを取得または使用するために支払う取引を指すが、また、ユーザがアプリケーションコンテンツアイテムを無料で利用可能になる(例えば、販売促進期間中またはお試しとして)取引も指し得る。「権利付与」という用語は、本明細書において、(1)授与される、もしくは授与することができる法律上の権利または許可、および(2)法律上の権利または許可のコンピュータ表現をいくらか交換可能に指すために使用される。使用される文脈によって、該用語は、これらの2つの事項のうちの1つをより具体的に指す場合がある。
【0012】
アプリケーション管理システム100は、開発者からアプリケーションおよびアプリケーションコンテンツアイテムを受信し、アプリケーションおよびアプリケーションコンテンツアイテムをユーザに提供することができる、任意のコンピュータベースのシステムを含むことができる。アプリケーションおよびアプリケーションコンテンツアイテムを、ダウンロード、ストリーミング、アプリケーション仮想化等を介して利用可能にすることができる。これは、例えば、1回限りの費用で、サブスクリプションで、または無料で、アプリケーションを利用可能にすることを含むことができる。さらにこれは、例えば、任意の数のユーザに、所定の数のユーザに、所定のユーザ群に、限られた期間、限られた使用回数、または無制限にアプリケーションを利用可能にすることを含むことができる。
【0013】
アプリケーション管理システム100は、ユーザシステム105および/または開発者システム107、カタログサービス140および関連検索エンジン、購入サービス145、ならびにアプリケーション配布サービス150からネットワーク要求を受信し、応答するための1つ以上のサーバ120を含むことができる。サービスは、1つ以上のサーバ120上または別個のサーバ上のコードモジュールの実行によって実現されてもよい。また、アプリケーション管理システム100は、アプリケーション関連データおよびコンテンツアイテムを記憶するためのアプリケーションデータストア160と、アカウント情報等のユーザ関連データを記憶するためのユーザデータストア170とも含むことができる。他のサービスもまた、アプリケーション管理システム100によって提供されてもよい。
【0014】
開発者は、開発者のコンピューティングシステム107を使用して、アプリケーションおよびコンテンツアイテムを開発し、それらのアプリケーションおよびコンテンツアイテムを、ユーザが購入すること、および/またはいくつかの例を挙げると、無線モバイルデバイス(スマートフォン、PDA、タブレット、電子書籍リーダ等)、デスクトップ、ラップトップ、ビデオゲーム機、テレビのセットトップボックス、テレビ(例えば、インターネットTV)、コンピュータ化された電化製品等である、ユーザのユーザコンピューティングデバイス105にダウンロードすることを可能にするために、それらをアプリケーション管理システム100に提出することができる。ユーザコンピューティングデバイス105は、任意のタイプのコンピューティングデバイスであってもよい。さらに、ユーザデバイス105は、異なるアプリケーションを含むように、ないしは異なるように構成されるように、異なるタイプのデバイスであることが可能である。加えて、デバイス105は、任意のタイプのオペレーティングシステム(「OS」)を含むことができる。例えば、コンピューティングデバイス105は、Android(登録商標)OS、Windows(登録商標)OS、Mac(登録商標)OS、iOS(iPhoneまたはiPad OS)、Linux(登録商標)またはUnix(登録商標)ベースのOS等を実装することができる。
【0015】
アプリケーション管理システム100は、アプリケーションおよびアプリケーションコンテンツアイテムの配布を管理または調整するためのサービス等の追加の機能性を追加するためのサービスを提供することができる。多くのアプリケーションは、それらのアプリケーションのユーザが、アプリケーション自体とは異なる、追加の、または「アドオン」アプリケーションコンテンツアイテムを取得することができる、アプリ内購入を可能にするための組み込まれた機能性を有さない。アプリ内購入の1つの代替えは、ウェブサービス(例えば、ウェブサイト)またはデバイスにインストールされているアプリケーションストアを通して等、アプリケーションの外部のインターフェースを通したコンテンツアイテムの購入またはダウンロードを可能にすることである。しかしながら、これらのアプリケーションにアプリ内購入機能性を追加することによって、アプリケーションコンテンツアイテムは、これらのアプリケーション内から購入または取得され得、アプリケーションユーザの購入プロセスを簡素化する。例えば、アプリ内購入は、コンテンツアイテムの購入アプリケーションとの統合を簡単化する、またはユーザのアプリケーション使用経験の妨害を低減もしくは排除することができる。
【0016】
アプリケーションコンテンツアイテムには、ゲームマップ、ゲームレベル、ゲーム保存、ゲームアイテム、ゲームキャラクタ、ゲームデータ、ビデオ、画像、音楽、デザイン、アバター、キャラクタ、説明書、ガイド、ヒント、ニュース、電子書籍、他の書かれたメッセージまたはコンテンツ等を含むことができる。これらのコンテンツアイテムは、コンテンツアイテムと関連付けられるアプリケーション内で利用することができる。一実施例では、電子書籍リーダデバイスまたは電子書籍リーダアプリケーションを有する他のコンピューティングデバイスを使用するユーザは、デバイス上で読むための電子書籍を、電子書籍リーダアプリケーション内で購入することができる。
【0017】
開発者からコンテンツ提出を受信した後、アプリケーション管理システム100は、DRMモジュールまたは購入モジュール等の追加の機能性のためのモジュールを追加することによって、アプリケーションを修正することができる。アプリケーションを修正した後、アプリケーション管理システム100は、カタログサービス140を用いて(または第三者のカタログサービスを用いて)、アプリケーションおよび/またはアプリケーションコンテンツアイテムをリストに載せることができる。例えば、アプリケーション管理システム100は、アプリケーションまたはコンテンツアイテムを購入することができる閲覧可能な電子カタログに、アイテムを追加することができる。
【0018】
一実施形態では、アプリケーション修正は、アプリケーション管理システム100によって、プログラム的に達成される。いくつかの実施形態では、アプリケーション管理システム100は、アプリケーションをソースコードに逆コンパイルする。アプリケーション管理システム100は次いで、追加の機能性のための挿入点を判定するために、ソースコードを解析する。例えば、ソースコードは、システム100が特定の機能性を所定の位置、関数、またはクラスに発見することができるように、コーディング標準に準拠してもよい。別の実施例では、アプリケーション管理システム100は、アプリケーションのメニューまたは選択インターフェースを示す、ソースコード内のパターンを検索することができる。アプリケーション管理システム100は次いで、挿入されたモジュールを呼び出す、新しいメニューアイテムまたはコードスニペットを挿入することができる。一実施例では、新しいメニューアイテムは、カタログサービス140と通信するためのカタログインターフェースを提供する、購入モジュールを呼び出す。カタログインターフェースは、アプリケーション内で、カタログサービス140のカタログアイテムへのアクセスを提供することができる。
【0019】
III.アプリケーション管理システムの詳細
図1の実施形態では、アプリケーション管理システム100は、1つ以上のサーバ120、カタログサービス140、購入サービス145、アプリケーション配布サービス150、アプリケーションデータストア160、およびユーザデータ170のためのデータストアを含む。1つ以上のサーバ120は、ネットワーク110上で受信される、ユーザコンピューティングデバイス105および/または開発者システム107からのネットワーク要求を受信し、それに応答することができる。
【0020】
検索エンジンを含むことができるカタログサービス140は、ユーザが、カタログサービス140によって提供される電子カタログを閲覧すること、またはアプリケーションデータストア160に記憶されている電子カタログコンテンツに関する情報を取得するために、検索エンジンにクエリを行うことを可能にする。電子カタログコンテンツは、製品および/またはサービスに関する情報を含むことができる。また、カタログサービス140は、それぞれの開発者のアプリケーションと関連付けられる、販売用または無料のアプリケーションコンテンツアイテムも提供することができる。カタログサービス140は、ネットワークアプリケーションインターフェース(例えば、ウェブサーバ)、アプリケーションプログラミングインターフェース(API)、または他のタイプのインターフェース等のカタログインターフェースによってアクセスされてもよい。一実施形態では、ユーザコンピューティングデバイス105上で動作している、購入モジュールを有するアプリケーションは、アプリケーションと関連付けられるコンテンツアイテムへのアクセスをアプリケーションに提供するために、カタログサービス140と通信している。
【0021】
カタログサービス140は、アプリケーションおよびそれぞれのアプリケーションと関連付けられるコンテンツアイテム等の、購入もしくはダウンロードすることができるアイテムのカタログまたはリストを提供することができる。また、カタログは、コンテンツアイテムを記述する、コンテンツアイテムメタデータも含んでもよい。カタログページは、ポップアップウィンドウまたはメニュー画面として、アクセスしているアプリケーション内に表示されてもよい。
【0022】
一実施形態では、電子カタログコンテンツは、階層構造で編成される、1つ以上のカテゴリまたは階層内の閲覧ノードと関連付けられるアイテムを有する。カタログサービス140は、ユーザが、カタログを検索することに加えて、アイテム階層を閲覧するための機能性を提供することができる。ユーザは、アイテムについてより詳細に見るために、階層で表されるアイテム、または検索結果のリスト内のアイテムを選択することができる。ユーザのアイテム選択に応えて、サーバ120は、ユーザシステム105に、選択されたアイテムに関する詳細を含むカタログページ(アイテム詳細ページと称される場合がある)を提供することができる。
【0023】
所与のアプリケーションのカタログページまたは詳細ページは、例えば、アイテムの作成者によって提供される説明、価格情報、アイテムの作成者に関する情報、顧客の批評、デバイス互換性情報、画面ショット、および顧客に有用であり得る他のタイプの情報を含んでもよい。いくつかの実施形態では、詳細ページは、所与のアプリケーションと関連付けられる、利用可能なアプリケーションコンテンツアイテムのリストを含むことができる。いくつかの実施形態では、リストは、設定もしくはユーザアカウントと関連付けられる情報に基づき、フィルタリングまたは生成されてもよい。また、コンテンツリストは、評点、価格、人気度、または利用可能性等の種々の基準を使用してフィルタリングされてもよい。
【0024】
購入サービス145は、ユーザ購入を管理するためのサービスと、パーソナライズされた情報をユーザに提供するためのパーソナライズサービスとを含むことができる。購入サービス145は、顧客注文を受信すること、注文に対する請求書を発行すること、もしくはユーザから注文に対する支払いを受領すること、販売者もしくは開発者に購入に対するクレジットを与えること、異なる当事者間で支払いを分割すること、購入に対して支払われる税金を徴収し、徴収された税金を適切な統制実体の税金に分配すること、異なる通貨間(例えば、ドル対ユーロまたは円)での価格を計算または変換すること、および/またはコンテンツアイテムの配布を調整することができる。購入サービス145は、注文処理に関連する他の機能を実施してもよい。いくつかの実施形態では、購入サービス145は、エンドユーザから受領される料金(例えば、購入料金またはコンテンツ配布料金)を、開発者および/またはアプリケーション管理システム100の運営者のアカウントで分割してもよい。また、購入サービスは、以下にさらに記載されるように、追加の機能性も提供することができる。
【0025】
アプリケーション配布サービス150は、追加の機能性を提供するように、モジュールをアプリケーションと組み合わせる、ないしは別の方法でアプリケーションを修正することができる。例えば、アプリケーション配布サービスは、購入モジュールをアプリケーションに挿入することができる。修正されたアプリケーションは次いで、ユーザインターフェースを提供することができ、ユーザは、これを通して、購入を行い、他の取引を実施するために、ユーザコンピューティングデバイス105を介して、ネットワーク上でアプリストアまたは電子カタログにアクセスすることができる。購入モジュールは、アプリケーションデータストア160に記憶されてもよい、アプリケーションのカタログを閲覧および/または検索するためのコンポーネントを含むことができる。購入モジュールは、必ずしもそうである必要はないが、この閲覧および/または検索機能性を、カタログサービス140の機能性に依存することができる。さらに、いくつかの実施形態では、購入モジュールは、場合によっては他の推奨基準と共に、アプリケーション選択もしくは使用挙動に基づくユーザへの推奨を生成および/または取得するために、購入サービス145と対話することができる。また、アプリケーション配布サービス150は、アプリケーションを複製または修正から保護することを可能にするDRM機能性を、アプリケーションと組み合わせることもできる。
【0026】
アプリケーション管理システム100がユーザからコンテンツ提出を受信した後、アプリケーション管理システム100は、アプリケーション(単数または複数)、アプリケーションコンテンツアイテム(単数または複数)、またはコンテンツメタデータ等のコンテンツ提出データを、アプリケーション管理システム100のアプリケーションデータストア160(例えば、ファイルサーバ、ハードドライブ、光学ドライブ等のストレージデバイス上のデータベース、フラットファイル、またはデータ構造)上に記憶する。別のデータストア170は、ユーザアカウントに関連するユーザ証明情報等のユーザデータを記憶することができる。例えば、アプリケーション管理システム100は、コンテンツを提出するユーザが、アプリケーション管理システム100によって維持されるアカウントに対するアクセス権を有するか否かを判定するために、コンテンツ提出と共に受信されるアクセス証明情報を確認してもよい。アクセス権が照合される場合、アプリケーション管理システム100は次いで、コンテンツ提出およびアカウントと関連付けられる他のデータを更新することができる。異なる実施形態では、アプリケーションデータストア160およびユーザデータ170のためのデータストアは、同一のデータストアであってもよく、または別個のデータストアであってもよい。
【0027】
図2は、図1のアプリケーション配布システム100に関するアプリケーション処理シナリオ例の論理フロー図を概略的に図示する。シナリオ中、開発者207は、アプリケーション配布システム100に提出するためのアプリケーション210を作成し、次いでアプリケーション配布システム100は、アプリケーション210を修正し、修正されたアプリケーション210を1人以上のユーザ205に提供する。アプリケーション210は、例えば、ゲーム、ナビゲーションアプリ、ソーシャルネットワーキングアプリ、ビジネスアプリ、生産性アプリ、ユーティリティアプリ、メディアアプリ、電子読書アプリ、娯楽アプリ等であってもよい。
【0028】
一シナリオでは、開発者207は、開発者システム107を使用して、アプリケーション210を作成する。開発者207は、アプリケーション210を開発するために、IDE215等の統合開発環境(「IDE」)、およびコンパイラ220を使用することができる。IDE215は、コード開発を促進するための任意のシステムを含むことができる。例えば、Java(登録商標)開発では、IDE215は、The Eclipse Foundation(登録商標)から入手可能なEclipse IDEを含むことができる。さらに、IDEは、アプリケーション210と関連付けられるソースコードをアプリケーション210にコンパイルすることができる任意のコンパイラを含むことができる、コンパイラ220を含むことができる。いくつかの実施形態では、購入モジュール235および/またはDRMモジュール240をアプリケーション210と組み合わせるために、アプリケーションリパッキングモジュール230を使用してそうする代わりに、IDE215を使用することができる。
【0029】
図2の事象1で、アプリケーション配布サービス150は、アプリケーション210および/またはアプリケーション210のコンテンツアイテムを受信する。一実施形態では、アプリケーション配布サービス150は次いで、関連コードスニペットを含むことができるモジュールを追加することによって、アプリケーションに追加の機能性を提供するように、アプリケーション210を処理する。
【0030】
図2の事象2で、アプリケーション配布サービス150は、購入モジュール235および/またはDRMモジュール240をアプリケーション210と組み合わせる。購入モジュール235は、ユーザコンピューティングデバイス105がカタログサービス140および/または購入サービス145と通信することを可能にして、アプリケーションにアプリ内購入機能性を提供することができる。例えば、購入モジュール235は、ユーザコンピューティングデバイス105上で実行される際、カタログアイテムのリストをユーザ205に提供するために、カタログサービス140と通信することができる。一実施形態では、アプリケーション配布サービス150は、電子カタログへのアクセスを提供する、リンク(例えば、静的または動的)またはポップアップ画面もしくはウィンドウ等のカタログインターフェースを開くメニューアイテムを提供するように、アプリケーション内のメニュー画面を修正する。別の実施例では、購入モジュール235は、アプリケーション210のコンテンツアイテムの購入を取り扱うため、またはダウンロードされたコンテンツアイテムの権利付与を照合するために、ユーザコンピューティングデバイス105と購入サービス145との間の通信を可能にする。
【0031】
一実施形態では、DRMモジュール240は、コンピューティングデバイス105が、アプリケーション210が許可なく修正されていないかを照合することを可能にし、これは、無許可のユーザがアプリケーション210にアクセスする、および/またはそれを実行することを防止し得る。一実施形態では、DRMモジュール240は、例えば、いくつかの例を挙げると、1つのユーザデバイス105から別のユーザデバイスへの、またはユーザデバイス105からSDカード、CD、もしくはUSBキー等の記録可能媒体への、あるいはユーザデバイス105からネットワークデバイスもしくはサービス(例えば、クラウドストレージ)への、アプリケーションの無許可の複製および/あるいは移動を防止することができる。有利に、いくつかの実施形態では、アプリケーション210がユーザデバイス105から第2のユーザデバイスに複製される場合、DRMモジュール240は、アプリケーション210が第2のユーザシステム上で実行されることを防止することができる。代替えとして、いくつかの実施形態では、DRMモジュール240は、例えば、同一のユーザがアプリケーション210を使用している限り、アプリケーション210の第2のユーザシステム上への複製またはその上での実行を防止しない。
【0032】
追加モジュールをアプリケーション210と組み合わせることを容易にするために、アプリケーション配布サービス150は、アプリケーションリパッケージングモジュール230を含むことができる。アプリケーションリパッケージングモジュール230は、アプリケーション210を逆コンパイルし、DRMモジュール240を逆コンパイルされたアプリケーションと組み合わせ、DRMモジュール240を伴うアプリケーション210を再コンパイルすることができる、任意のシステムを含むことができる。
【0033】
図2の事象3では、アプリケーション配布サービス150は、カタログサービス140に、アプリケーション210および/またはアプリケーション210と関連付けられるデジタルコンテンツアイテムをリストするよう指示する。いったんカタログサービス140と関連付けられるカタログ上にリストされると、ユーザ205は次いで、アプリケーション210を購入することができる。
【0034】
図2の事象4では、カタログサービス140は、ユーザデバイス105からアプリケーション210の購入要求を受信する。カタログサービス140は、購入を処理するために、購入サービス145と通信することができる。例えば、購入サービス145は、ユーザ205に購入の請求書を発行することができる。一実施形態では、購入サービス145は、アプリケーション210またはアプリケーション210と関連付けられるコンテンツアイテムに対するコンピューティングデバイス105のアクセス権を判定するために、DRMモジュール240と協働するための権利付与モジュール250を含む。
【0035】
図2の事象5では、カタログサービス140(または購入サービス145)は、アプリケーション配布サービス150に、修正されたアプリケーション210を購入ユーザデバイス105に提供するよう指示する。アプリケーションサービス210は、購入モジュール235およびDRMモジュール240が追加された、修正されたアプリケーション210をユーザデバイス105に伝送する。
【0036】
図2の事象6では、ユーザ205は、ユーザデバイス105上でアプリケーション210を操作する。購入モジュール235を利用するユーザ205は、アプリケーション210内からカタログサービス140にアクセスすることができる。これは、ユーザにアプリ内購入機能性を提供し、アプリケーション210内からコンテンツアイテムを購入することを可能にする。例えば、購入モジュール235によって提供されるメニューインターフェースを利用することによって、ユーザ205は、カタログサービス140にコンテンツアイテム購入要求を送信することができる。カタログサービス140は次いで、コンテンツアイテム購入を処理するように、購入サービス145と協働することができる。
【0037】
図2の事象7では、カタログサービス140(または購入サービス145)は、アプリケーション配布サービス150に、要求されたコンテンツアイテムをユーザデバイス105に提供するよう指示する。購入モジュール235は、コンテンツアイテムを受信し、コンテンツアイテムをアプリケーション210内で利用可能にすることができる。いくつかの実施形態では、DRMモジュール240が、アプリケーション210および/またはユーザ205がコンテンツアイテムにアクセスすることを許可されているかを照合する。
【0038】
明らかであるように、追加の機能性を提供するために、他のタイプのモジュールをアプリケーション210に入れ込むことができる。アプリケーション210のプログラム的修正を可能にすることによって、アプリケーション210の開発時間を削減することができる、追加の機能性を追加することができる、および/または開発プロセスを簡単化することができる。
【0039】
IV.モジュールリパッケージングプロセス例
図3は、アプリケーション210と、図2の購入モジュール235もしくはDRMモジュール240、ペアレンタルコントロールモジュール、または追加の機能性を提供するための他のモジュール等の追加の機能性モジュールとを組み合わせるためのプロセス300の一実施形態のフロー図を図示する。プロセス300は、アプリケーション配布サービス150のアプリケーションリパッケージングモジュール230、アプリケーション提出モジュール225、またはIDE215によって実現することができる。考察を簡単化するために、アプリケーション210を図2の購入モジュール235と組み合わせるプロセス300は、アプリケーション配布サービス150によって実施されるように記載される。しかしながら、他の機能性を提供するように異なるモジュールを追加する等、他の代替えの実施形態が可能である。
【0040】
プロセス300は、アプリケーション210を作成した、またはアプリケーション210を例えばアプリケーション管理システム100に提供した開発者207から、例えばアプリケーション配布サービス150によってアプリケーション210が受信される際に、ブロック302で開始する。アプリケーション配布サービス150は、アプリケーション210の逆コンパイルされた複製を取得するために、ブロック304で、アプリケーション210を逆コンパイルする。ブロック306で、アプリケーション配布サービス150は、アプリケーション210の逆コンパイルされた複製を購入モジュール235と組み合わせる。
【0041】
一実施形態では、購入モジュール235は、開発者207と関連付けられる開発者証明書、アプリケーション管理システム100と関連付けられるアプリケーション提供者証明書のうちの1つ以上を含む。
【0042】
いくつかの実施形態では、アプリケーション210の逆コンパイルされた複製を購入モジュール235と組み合わせることは、アプリケーション210と関連付けられるエントリポイントを識別することを含む。エントリポイントは、任意のルーチン、コンポーネント、関数、メソッド、クラス、あるいはユーザもしくはシステムがアプリケーションを開始する、インスタンス化する、一時停止する、再開する、起動する、または初期化することを可能にする、アプリケーションへのアクセス点を含むことができる。いくつかの実施形態では、アプリケーション210の逆コンパイルされた複製を購入モジュールと組み合わせることは、購入モジュールと関連付けられるコードを、エントリポイントと関連付けられる1つ以上のルーチン、コンポーネント、関数、メソッド、もしくはクラスに挿入すること、および/または入れ込むことを含む。
【0043】
いくつかの実施形態では、アプリケーション210の逆コンパイルされた複製を購入モジュールと組み合わせることは、アプリケーション210の1つ以上の部分と関連付けられる、1つ以上のベースクラスを判定することを含む。そのように限定はされないが、アプリケーション210のこれらの部分を、エントリポイントと関連付けることができる。いくつかの実施形態では、購入モジュールは、ベースクラスの1つ以上が呼び出される際に実行されるように構成される。
【0044】
一実施形態では、購入モジュールは、既存のライフサイクルルーチンの代わりに呼び出される、もしくはそれより前に呼び出される、置換または補助ライフサイクルルーチン、クラス、あるいはメソッドを含むことができる。例えば、購入モジュールは、アプリケーション210によって使用されるベースクラスのサブクラスを含むことができる。アプリケーション210のいずれかのサブクラスが呼び出される、および/または実行される前に、購入モジュールのサブクラスを呼び出す、および/または実行することができる。実施例として、Google(登録商標)から入手可能なモバイルデバイス用のAndroid(登録商標)オペレーティングシステムでは、onCreate()、onStart()、onPause()、onResume()、およびonDestroy()等のライフサイクルエントリポイントまたはルーチンが、それぞれアプリケーションの起動、開始、一時停止、再開、および終了事象を取り扱うために、アプリケーションによって使用される。購入モジュールは、一部またはすべてのAndroidアプリケーションによって使用されるアクティビティベースクラスのサブクラスであるクラス内のこれらのライフサイクルメソッドのうちの1つ以上のバージョンを含むことができる。ライフサイクルルーチンのうちの1つが呼び出される際、アプリケーション210の対応するルーチンが呼び出される前(またはいくつかの実施形態では、後)に、ルーチンの購入モジュールバージョンを呼び出し、購入モジュールが、DRM解析を実施すること、および/またはアプリケーション210に関するデータを収集することを可能にすることができる。いくつかの実施形態では、購入モジュールは、エントリポイントと関連付けられるベースクラスを呼び出す前に実行を完了する。
【0045】
いくつかの実施形態では、購入モジュール235は、別の実行スレッド内で等、アプリケーション210と並列に、および/または非同期的に実行される。したがって、購入モジュールは、有利に、アプリケーション210を読み込むことを可能にする一方で、バックグラウンドで走ることができ、それによって、アプリケーション210の読み込み時間への影響を低減する。
【0046】
DRMモジュール240が挿入される実施形態では、DRMモジュールが、アプリケーション210(またはそのユーザ)が実行を許可されているか否かを確認する間、アプリケーション210は、起動し、少なくとも一時的に走ることを可能にされる。アプリケーション210またはユーザが許可されていない場合、DRMモジュールは、例えば、アプリケーション210を終了させる、またはアプリケーションの特徴的機能もしくは一式の特徴的機能を無効化することによって、走っているアプリケーション210の実行を切り替えることができる。
【0047】
多くのアプリケーションは、アプリケーションの実行を開始する、単一のエントリポイントを有するが、いくつかのアプリケーションは、2つ以上のエントリポイントを有する。エントリポイントを識別することは、自動化されてもよく、または手動プロセスであってもよい。一実施形態では、エントリポイントは、プログラム的に識別される。いくつかの実施形態では、エントリポイントは、例えば、開発者207または開発者システム107が、挿入されたモジュールが呼び出され得るエントリタグもしくはマーカをコード内に置くことによって、アプリケーション210内で識別される。他の実施形態では、アプリケーション配布サービス150は、エントリポイントを識別するために、アプリケーション210を解析する。いくつかの実施形態では、アプリケーション配布サービス150は、アプリケーション210と関連付けられるエントリポイントがアクセスされる、または実行される度に、購入モジュールが実行されるようにするコードを挿入することができる。いくつかのデバイスおよびシステムでは、リパッケージング時にエントリポイントを識別することは、任意選択であることができる。代わりに、購入モジュールを、任意の利用可能なエントリポイントで、アプリケーションによるエントリを聞くように設計することができる。
【0048】
エントリポイントのいくつかの例には、アプリケーションの起動、アプリケーションの終了、アプリケーションの一時停止、およびアプリケーションの待機状態からの再開が挙げられる。また、テキスト、電子メール、またはIM等のメッセージング特徴的機能を使用するアプリケーションは、読む、書く等の通信関連エントリポイントを有する場合もある。オペレーティングシステムによって、またはアプリケーション自体によって、エントリポイントをトリガすることができる。例えば、オペレーティングシステムは、プロセスとしてアプリケーションを起動するシステム呼び出しを実施してもよい。購入モジュールは、そのようなシステム呼び出しを聞くことができる。一方、アプリケーションは、自体を終了する呼び出しを行ってもよく、DRMモジュールもまた、そのような呼び出しを聞くことができる。
【0049】
一実施形態では、アプリケーション210の逆コンパイルされた複製を購入モジュールと組み合わせることは、コードのライブラリをアプリケーション210に追加することを含む。コードのライブラリは、共有ライブラリ、静的リンクライブラリ、動的リンクライブラリ(「DLL」)、その組み合わせ等を含むことができる。一実施形態では、コードのライブラリを追加することは、コードのライブラリをアプリケーション210に組み込むことを含むことができる。一実施形態では、コードのライブラリを追加することは、アプリケーション210と関連付けられるコードを修正することを含むことができる。
【0050】
ブロック308で、アプリケーション配布サービス150は、購入モジュール235と組み合わせられたアプリケーション210の逆コンパイルされた複製を再コンパイルする。一実施形態では、購入モジュール235を伴うアプリケーション210は、アプリケーションデータストア160上に記憶される。アプリケーション管理システム100は、ユーザ205がアプリケーション210を購入する(ある価格で、または無料で)か、またはアプリケーション210の複製を要求する度に、購入モジュール235を伴うアプリケーション210をアプリケーションデータストア160から取り出すことができる。他の実施形態では、アプリケーション210は、購入モジュール235なしでアプリケーションデータストア160に記憶される。これらの実施形態では、アプリケーション配布サービス150は、ユーザがアプリケーション管理システム100からアプリケーション210の複製を取得することを試みる度に、またはアプリケーション管理システム100上のアプリケーション210にアクセスすることを試みる度に、プロセス300を実施することができる。
【0051】
一実施形態では、再コンパイルされたアプリケーション210に、アプリケーション管理システム100と関連付けられるアプリケーション提供者証明書で署名することができる。
【0052】
一実施形態では、アプリケーション管理システム100は、開発者207と関連付けられる開発者証明書で署名されるように、再コンパイルされたアプリケーション210を開発者207に提供することができる。
【0053】
一実施形態では、アプリケーション配布サービス150は、購入モジュールに加えて、または購入モジュールの代わりに、任意の他のタイプのモジュールをアプリケーション210に挿入するため、またはそれと組み合わせるために、プロセス300を使用することができる。例えば、アプリケーション配布サービス150は、アプリケーション210の健康状態またはアプリケーション210と関連付けられる使用統計データを監視することができるモジュールを挿入するために、プロセス300を使用することができる。ユーザ205またはユーザコンピューティングデバイス105と同一のタイプのデバイスを所有する他のユーザに推奨を行うことを促進するために、この情報を、アプリケーション管理システム100に提供することができる。一実施形態では、アプリケーション配布サービス150は、同一のゲームアプリケーションの複数のユーザが相互と対抗して、または共に遊ぶことができるように、1人参加型ゲームアプリケーションに多人数参加用モジュールを追加することができる。
【0054】
別の実施例では、アプリケーション配布サービス150は、アプリケーション210上のコンテンツアイテムへのアクセスを制御するため、またはアプリケーション210上の利用可能なコンテンツアイテムを制御するために、ペアレンタルコントロールモジュールをアプリケーションに挿入することができる。一実施形態では、ペアレンタルコントロールモジュールは、アプリケーションが開始する際、またはアプリケーションの特定の機能(例えば、「ゲーム開始」、「ゲーム読み込み」、または「コンテンツの購入」)が選択される際にユーザ205に提供されるように構成される、アクセス制御インターフェースを含む。アクセス制御インターフェースは、アプリケーションもしくは機能へのアクセスが解除される前に、パスワード、パターンベースの入力、または他のアクセスキーが提供されることを要求することができる。例えば、子供が電子カタログからコンテンツアイテムを購入することを試みる場合、ペアレンタルコントロールモジュールは、アクセス制御インターフェースを提示し、購入を進めることを可能にする前に、正しい入力を要求することができる。
【0055】
一実施例では、グローバルポジショニングシステム(GPS)アクセス、3D加速、または加速度計アクセス等のデバイス固有のハードウェア特徴的機能を活用するために、コードモジュールを挿入することができる。アプリケーションは、同一のハードウェア特徴的機能を支援しない異なるデバイスタイプ(例えば、スマートフォンまたはタブレット)上で走らせることができるため、何人かの開発者は、特定のデバイス固有の特徴的機能を活用するためのコードを実装することを差し控える場合がある。開発者は、すべてのデバイスタイプのそのような特徴的機能を実装することは複雑すぎる、またはいずれの特定のデバイスタイプも、特徴的機能の開発を行う価値がある程に十分に大きいユーザ基盤を有さないと考える場合がある。そのような状況では、アプリケーション管理システム100が、デバイス固有のハードウェア特徴的機能の支援を追加するためのコードモジュールを挿入してもよい。
【0056】
上述されるように、追加することができる1つのタイプのモジュールは、DRMモジュール240である。一実施形態では、DRMモジュールが、アプリケーション210が許可なく修正されたと判定する場合、および/またはDRMモジュールが、無許可のユーザ(またはデバイス)がアプリケーション210にアクセスしていると判定する場合、DRMモジュールは、ユーザにメッセージを提示すること、および/またはアプリケーション210に実行を中止させることができる。より広くは、DRMモジュールは、アプリケーション210の実行の範囲が、アプリケーションによって提供される特徴的機能の特定のサブセット(例えば、無料版特徴的機能対プレミアム版特徴的機能)に限定されているか否かを判定することができる。実行の範囲が限定されている場合、DRMモジュールは、アプリケーション210の実行を、例えば、アプリケーションの完全プレミアム版の代わりにアプリケーション210のシェアウェア部分に等、その範囲に限定すること、または切り替えることができる。DRMモジュールは、アプリケーション210の実行を、実行を許可された特徴的機能(シェアウェアまたは未登録の特徴的機能等)に限定するように切り替える、ないしは別の方法で修正することができる。また、DRMモジュールは、ユーザにアプリケーション210に登録するよう気付かせる、ユーザに提示するためのメッセージを出力し、ユーザがアプリケーション210にアクセスすることを拒否する等を行うことができる。いくつかの実施形態では、DRMモジュール240の機能性のいくつかまたはすべては、アプリケーション管理システム100との協働で提供される。例えば、DRMモジュール240は、購入サービス145の権利付与モジュール250と通信し、協働してもよい。
【0057】
一実施形態では、開発者207が、アプリケーション管理システム100への伝送のために、アプリケーション提出モジュール225にアプリケーション210を提供するのに応えて、アプリケーション提出モジュール225によって、プロセス300を実施することができる。
【0058】
一実施形態では、開発者207がIDE215と関連付けられる特徴的機能またはプラグインを有効化するのに応えて、プロセス300を実施することができる。一実施形態では、IDE215は、アプリケーション210と関連付けられるソースコードの複製を作成することができ、ソースコードの複製を購入モジュール235と組み合わせることができる。一実施形態では、IDE215は、ソースコードと購入モジュール235との組み合わせをコンパイルすることができる。一実施形態では、IDE215またはアプリケーション提出モジュール144は、コンパイルされた組み合わせをアプリケーション管理システム100に提供することができる。一実施形態では、IDE215またはアプリケーション提出モジュール144は、アプリケーション210またはアプリケーション210と購入モジュール235とのコンパイルされた組み合わせに、開発者207と関連付けられる開発者証明書で署名することができる。
【0059】
いくつかの代替えの実現形態では、開発者システム107は、コンパイルされたアプリケーションの代わりに、アプリケーションのソースコードをアプリケーション管理システム100に提出する。アプリケーション管理システム100は次いで、アプリケーション210を作成するために、購入モジュール235をソースコードと組み合わせ、購入モジュール235およびソースコードをコンパイルすることができる。
【0060】
さらに、プロセス300は、アプリケーションを購入モジュール235とリパッケージングするアプリケーション管理システム100に関して記載されてきたが、他の方法で、購入モジュール235をアプリケーションに追加することができる。例えば、アプリケーション管理システム100は、購入モジュール235を開発者システム107に提供することができる。開発者システム140は次いで、アプリ内購入が使用可能なアプリケーションを作成するために、購入モジュール235をアプリケーションと組み合わせることができる。
【0061】
いくつかの実施形態では、CPUと、I/Oコンポーネントと、ストレージと、メモリとを含むコンポーネントを有するサーバコンピューティングシステムが、アプリケーション管理システム100またはアプリケーション管理システム100の特定のコンポーネントを実行するために使用されてもよい。アプリケーション管理システム100の実行可能なコードモジュールを、サーバのメモリ内および/または他のタイプの持続性コンピュータ可読ストレージ媒体上に記憶することができる。いくつかの実施形態では、アプリケーション管理システム100は、上述されるものとは異なるように構成されてもよい。
【0062】
V.さらなるシステムの詳細
明らかであるように、アプリケーション管理システム100の多くの変形および実現形態が可能である。例えば、図1を参照すると、1つ以上のサーバ120は、ウェブサーバ、アプリケーションサーバ、データベースサーバ、その組み合わせ等を含むことができる。いくつかの実施形態では、ネットワーク110は、インターネット等、場合によっては様々な異なる団体によって運営される、リンクされたネットワークの公的にアクセス可能なネットワークである。他の実施形態では、ネットワーク110は、例えば、特権を有さないユーザが完全に、もしくは部分的にアクセスすることができない、企業または大学のネットワーク等の私的ネットワークであってもよい。さらに他の実施形態では、ネットワーク110は、インターネットへのアクセス、および/またはインターネットからのアクセスを有する、1つ以上の私的ネットワークを含んでもよい。
【0063】
いくつかの実施形態では、購入サービス145は、顧客のプライバシー権に従って、コンテンツアイテム購入、コンテンツアイテムの転送、コンテンツライセンスの使用、支払われる価格、購入の頻度、他の購入データ等を監視する。いくつかの実施形態では、そのようなデータは、顧客のプライバシーを保護するために匿名化されてもよい。購入サービス145は、1つ以上の報告を生成するため、購入の動向を特定するため、人気のアイテムを判定するため、ユーザ嗜好を判定するため、他の製品の推奨を生成するため、クロスマーケティングの機会を特定するため、抱き合わせ販売もしくは関連製品を特定するため、コンテンツアイテムの再販価格に基づくコンテンツアイテムの価格情報(例えば、市場価格、コンテンツアイテムまたはコンテンツアイテムのタイプの価格帯、特定の価格点での需要等)を判定するため、またはデータの他の解析を実施するために、収集されたデータをデータマイニングしてもよい。
【0064】
購入サービス145は、エンドユーザ、開発者、またはアプリケーション管理システム100の人材(例えば、管理者)に、情報および統計データを報告することができる。例えば、購入サービス145は、コンテンツ提出履歴、コンテンツ販売、提出されたコンテンツの改版データ、購入データ等を追跡してもよい。いくつかのそのような実施形態では、購入サービス145は、例えば、購入の現在の状態、ダウンロードの完了までの時間等を含む、対話式のフィードバックをユーザに提供してもよい。いくつかの実施形態では、購入サービス145は、購入データの詳細を示す、またはそれを要約する報告を生成し、電子メールを介して、報告をユーザに通信することができる、またはウェブサービスを介して、報告、使用統計データ、もしくは対話式のフィードバックへのアクセスを提供することができる。
【0065】
いくつかの実施形態では、購入サービス145は、コンテンツアイテムの権利付与を照合することができる。購入サービス145は、アプリケーションに組み込まれるDRMモジュールと通信し、特定のコンテンツアイテムがそのアプリケーション上での使用を許可されているかを照合してもよい。そのような機能性は、コンテンツアイテムをアプリケーションの複製間で共有することを可能にするのに有利であり得る。例えば、ユーザは、以前に購入したコンテンツアイテムを異なるユーザコンピューティングデバイス105上のアプリケーションの別の複製にダウンロードすることができ、その第2のアプリケーションの複製上のDRMモジュールは、ユーザがコンテンツアイテムを既に購入しているかを照合することができる。
【0066】
一実施形態では、購入サービス145は、アプリケーションおよび/またはコンテンツアイテムへのアクセスを安全なものにするため、または検証するために、セキュリティトークン(または他の認証データ)を利用する。セキュリティトークンは、コンテンツアイテムの使用を制御するため、またはコンテンツアイテムの転送を管理するために使用することができる。例えば、セキュリティトークンは、ユーザコンピューティングデバイス105を一意に識別する、コンピューティングデバイス識別子または他のパラメータを含むことができる。セキュリティトークンを、特定のコンテンツアイテムと関連付けることができる。セキュリティトークンを、コンテンツアイテムのチェックサムおよびコンテンツアイテムを購入するユーザに関する情報を含むように作成することができる。例えば、セキュリティトークンは、いくつかの例を挙げると、ユーザ識別子と、デバイス識別子とを含むことができる。コンテンツアイテムの別のユーザコンピューティングデバイス105への転送等のいくつかの事象は、購入サービス145にセキュリティトークンを更新させることができる。同様にまた、セキュリティトークンを、アプリケーションの使用を制御するため、またはその転送を管理するために使用することもできる。
【0067】
また、セキュリティトークンは、トークンと関連付けられるコンテンツアイテムが使用され得る状況を指定するパラメータも含んでもよい。いくつかの実施形態では、セキュリティトークンは、セキュリティトークンがどれくらいの長さ有効であるかを指定する制限時間を含み、そのような実施形態では、購入サービス145は、制限時間が経過していない場合にのみ、またはセキュリティトークンのタイムスタンプが制限時間内もしくは閾値時間範囲内(例えば、購入の30分以内、1時間以内、1日以内等)である場合にのみ、トークンを認証する。例えば、認証中、購入サービス145は、トークンを復号し、その制限時間または他の値を確認してもよい。制限時間が経過している場合、アプリケーション管理システム100は、新しいセキュリティトークンが発行されるべきであるか否か(例えば、ユーザが新しいサブスクリプションを購入するか否か)、またはコンテンツアイテムへのアクセスがブロックされるべきか否かを判定してもよい。いくつかの実施形態では、セキュリティトークンは、1回使用トークンであり、購入サービス145は、トークンが依然として使用されていない場合にのみ、トークンを認証する。
【0068】
セキュリティトークンのチェックサムの作成において、アプリケーション開発者および/またはアプリケーション管理システム100と関連付けられるデジタル証明書(単数または複数)を、チェックサムと共に含めることができる、またはチェックサムに適用することができる。さらに、セキュリティトークンの作成において、セキュリティトークンに署名するために、証明書を使用することができ、これは、セキュリティトークンが、セキュリティトークンを作成した実体以外の実体によって修正されていないことの保証レベルを提供する。一般的に、デジタル証明書は、ユーザまたは組織を識別し、ユーザまたは組織が誰/何であるという主張の保証レベルを提供する。この保証レベルは、証明書を発行する証明機関に対して置かれる信頼と関連付けられる。証明書は典型的に、場合によっては他の物と共に、証明書の所有者の秘密鍵と関連付けられる公開鍵と、証明書の所有者を認証した実体(例えば、証明機関)を識別する発行者とを含む。証明書提供システムまたは証明機関の非制限的な例には、VeriSign(登録商標)、GoDaddy(登録商標)、およびComodo(登録商標)が挙げられる。一般的に、これらの証明書提供システムは、デジタル証明書で識別される証明書発行者である。証明書は、データストレージ170または証明書を記憶することができる他のシステムに記憶されてもよい。
【0069】
ユーザがデジタルコンテンツアイテムを購入するのに応えて、アプリケーション管理システム100は、セキュリティトークンと共に、デジタルコンテンツアイテムを、ユーザコンピューティングデバイス105上で動作する関連アプリケーションに提供することができる。関連アプリケーション上のDRMモジュールは、ユーザコンピューティングデバイス105上のコンテンツアイテムへのアクセスを提供するか否かを判定するために、セキュリティトークンを使用することができる。コンテンツアイテムの権利喪失の事象では、またはアクセスが取り消されるべきであると判定された後、購入サービス145は、コンテンツアイテムへのさらなるアクセスを防止するために、セキュリティトークンを期限切れにすることができる、または例えば、DRMモジュールと通信し、コンテンツアイテムを削除するコマンドを発行することによって、コンテンツアイテムを無効化もしくは消去することができる。
【0070】
上述されるように、購入サービス145はまた、パーソナライズサービスも提供することができる。パーソナライズサービスの例には、推奨サービス、パーソナライズ検索サービス、およびタグベースのサービスが挙げられる。推奨サービスは、推奨を生成するために、挙動ベースのアルゴリズムを含む種々のアルゴリズムのうちの任意のアルゴリズムを使用することができる。いくつかの実施形態では、そのような挙動ベースのアルゴリズムは、アイテム対アイテムマッピングを生成するために、ユーザの挙動を分析することができ、これらのマッピングを、ユーザのアイテム選択アクティビティに関連する推奨アイテムに使用することができる。いくつかの実現形態では、パーソナライズ検索サービスは、検索クエリをユーザに推奨することができる。タグベースのサービスは、ユーザがカタログ内のアイテムにテキストタグを適用し、それによってアイテムを分類するための機能性を提供することができる。他のパーソナライズサービスには、ユーザがアイテムのリストを作成するリストサービス、ブログサービス、パーソナライズソーシャルネットワーキングサービス等を含むことができる。
【0071】
アプリケーションデータストア160は、アプリケーションおよびそれぞれのアプリケーションと関連付けられるコンテンツアイテム等のアプリケーションデータを記憶することができる。アプリケーションデータは、画像、バイナリ、ビデオ、および/または他の電子データを含んでもよく、単一のコンテンツファイルもしくはストリーム、圧縮ファイル(例えば、ZIP、RAR、もしくは他の圧縮ファイル形式)、または複数のファイルを構成するコンテンツバンドルとしてグループ化されてもよい。アプリケーションデータはまた、1つ以上のデータストリームとしても伝送されてもよいが、アプリケーションデータは典型的に、電子ファイルとして記憶および/または伝送される。アプリケーションデータストア160はまた、コンテンツデータを記述するコンテンツメタデータも記憶してもよい。いくつかの実施形態では、コンテンツメタデータは、コンテンツファイルタイトル、説明、キーワード、コンテンツ価格、改版情報等を備える。コンテンツメタデータは、カタログサービス140によって、そのカタログ上に提供され、それぞれのコンテンツデータと関連付けられてもよい。
【0072】
いくつかの実施形態では、アプリケーション管理システム100は、そのユーザのアカウントを、ユーザデータのためのデータストア170内に維持する。アプリケーション管理システムは、異なるタイプのユーザの異なるタイプのアカウント(例えば、開発者および顧客)を維持してもよい、またはアカウントは、同一のタイプであってもよい。一実施形態では、開発者のアカウントは、コンテンツの価格、コンテンツの説明、コンテンツの最新版等の開発者のアプリケーションおよびコンテンツアイテムに関する情報、または他のアカウント情報を含むことができる。開発者によって送信されるコンテンツ提出に少なくとも部分的に基づき、このデータを更新することができる。例えば、開発者が、コンテンツアイテムの新版を発行することを希望する場合、開発者は、新しいコンテンツアイテムを登録することができる。アプリケーション管理システムは次いで、そのコンテンツアイテムと関連付けられる情報を更新することができる。顧客アカウントは、コンテンツ購入、クレジットカードまたは支払い情報、勘定残高、発送選択肢、住所、ユーザコンピューティングデバイス情報(例えば、一意のデバイス識別子、デバイスモデル、デバイス仕様、オペレーションシステム、IPアドレス、ポートアドレス、ネットワークアドレス)等に関する情報を含んでもよい。
【0073】
アプリケーションによって、例えば、追加の機能性を提供するためのコードモジュールが挿入されているアプリケーションによって、アプリケーション管理システム100によって提供されるサービスにアクセスすることができる。ネットワークを介して相互接続される何台かのコンピューティングマシン等、1台以上の物理サーバまたはコンピューティングマシンを用いて、アプリケーション管理システム100を実装することができる。したがって、アプリケーション管理システム100内に描写されるコンポーネントのそれぞれは、様々な特徴的機能を実施するためのハードウェアおよび/またはソフトウェアを含むことができる。一実施形態では、アプリケーション管理システム100は、ウェブサイトもしくはウェブサイト群を含む、または提供する。アプリケーション管理システム100と同様に、開発者システム107は、ハードウェアに実装することができ、任意のタイプのコンピューティングデバイスを含むことができる。必ずしもそうである必要はないが、開発者システム107は、相互とは異なる実体、およびアプリケーション管理システム100の運営者とは異なる実体によって運営されてもよい。
【0074】
アプリケーション管理システム100の様々なコンポーネントの処理を、複数のマシン、ネットワーク、および他のコンピューティング資源の間で分散することができる。アプリケーション管理システム100の様々なコンポーネントもまた、1台以上の専用サーバというよりはむしろ仮想マシンに実装することができる。同様に、示されるデータリポジトリは、例えば、ストレージエリアネットワークもしくは他の分散ストレージシステムを含む、物理および/または論理データストレージを表すことができる。さらに、いくつかの実施形態では、示されるコンポーネント間の接続は、ハードウェア間の実際の接続というよりはむしろ、データフローの可能な経路を表す。可能な接続のいくつかの実施例が示されているが、様々な実現形態において、示されるコンポーネントのサブセットのいずれかは、コンポーネントの任意の他のサブセットと通信することができる。
【0075】
いくつかの実施形態では、アプリケーション管理システム100は、図1に図示されるものとは異なるように構成されてもよい。例えば、図示されるモジュールによって提供される様々な機能性を、組み合わせる、再編成する、追加する、または消去することができる。いくつかの実施形態では、追加の、もしくは異なるプロセッサまたはモジュールが、図1に図示される実施形態例を参照して記載される機能性のうちのいくつかあるいはすべてを実施してもよい。多くの実現形態の変形が可能である。
【0076】
上述されるものに加えて、アプリケーション管理システム100と、ユーザコンピューティングデバイス105と、開発者システム107との間で、他のタイプのプログラム的指示(加えて、または代替えとして)が可能である。例えば、サービス要求を、ユーザから(例えば、対話型コンソールまたはアプリケーション管理システム100によって提供される他のGUIを介して)、またはユーザコンピューティングデバイス105上の実行プログラムから、直接受信することができる。いくつかの実施形態では、ユーザは、他のタイプのインターフェースを使用して、および他の方法で、アプリケーション管理システム100と対話してもよい。例えば、アプリケーション管理システム100は、ユーザがウェブブラウザを使用して要求を提出することを可能にする、ウェブサービスインターフェース(例えば、ウェブページまたはウェブページのセット)を提供してもよい。また、他のタイプのインターフェースも使用されてもよい。
【0077】
前述のセクションに記載されるプロセス、方法、およびアルゴリズムのそれぞれは、1台以上のコンピュータまたはコンピュータプロセッサによって実行されるコードモジュールで具現化され、それらによって、完全に、または部分的に自動化されてもよい。コードモジュールは、ハードドライブ、固体メモリ、光学ディスク等の任意のタイプの持続性コンピュータ可読媒体またはコンピュータストレージデバイス上に記憶されてもよい。プロセスおよびアルゴリズムは、部分的に、または完全に、回路で実現されてもよい。開示されるプロセスおよびプロセスステップの結果は、永続的に、そうでなければ、例えば、揮発性または不揮発性ストレージ等の任意のタイプの持続性コンピュータストレージに記憶されてもよい。
【0078】
上述される様々な特徴的機能およびプロセスは、相互から独立して使用されてもよく、または様々な方法で組み合わせられてもよい。すべての可能な組み合わせおよび副組み合わせは、本開示の範囲内であることが意図される。加えて、特定の事象、方法、またはプロセスブロックは、いくつかの実現形態で省略されてもよい。また、本明細書に記載される方法およびプロセスは、いずれの特定のシーケンスにも限定されず、事象、ブロック、またはそれに関連する状態を、適切な他のシーケンスで実施することができる。例えば、記載されるタスクまたは事象は、具体的に開示されるもの以外の順序で実施されてもよい、または複数のブロックは、単一のブロックもしくは状態に組み合わせられてもよい。ブロック例、タスク例、または事象例は、順次実施されてもよく、並列に実施されてもよく、またはいつかの他の様式で実施されてもよい。ブロック、タスク、もしくは事象が、開示される実施形態例に追加されてもよく、またはそれから削除されてもよい。本明細書に記載されるシステム例およびコンポーネント例は、記載されるものとは異なるように構成されてもよい。例えば、要素が、開示される実施形態例に追加されてもよく、それから削除されてもよく、またはそれと比較して再編成されてもよい。
【0079】
とりわけ、「〜できる(can)」、「〜できる(could)」、「〜であってもよい(might)」、「〜であってもよい(may)」、「例えば(e.g.)」等の本明細書で使用される条件付き言語は、明確にそうではないと記載されているか、ないしは使用される文脈において理解されない限り、一般的に、他の実施形態が含まない一方で、特定の実施形態が、特定の特徴的機能、要素および/またはステップを含むことを伝えることが意図される。したがって、そのような条件付き言語は、一般的に、特徴的機能、要素、および/またはステップが、これらの特徴的機能、要素、および/もしくはステップが含まれるか、または任意の特定の実施形態で実施されるかに関わらず、1つ以上の実施形態に何らかの形で要求されること、あるいは1つ以上の実施形態が、著者の入力もしくは指示によって、またはそれらなしに、決定するための論理を必然的に含むことを示唆することは意図されない。「備える(comprising)」、「含む(including)」、「有する(having)」、等の用語は、同義語であり、包含的に非限定的に使用され、追加の要素、特徴的機能、行為、動作等を除外しない。また、「または(or)」という用語は、包括的意味(排他的意味ではなく)で使用され、そのため、「または(or)」という用語は、例えば、要素のリストを接続するために使用される場合、リスト内の要素のうちの1つ、いくつか、またはすべてを意味する。
【0080】
付記
1.開発者が提出したアプリケーションを処理するコンピュータ実装方法であって、該処理が、
アプリケーション提出者のアカウントと関連付けて、該アプリケーション提出者によるアプリケーションの提出をネットワーク上で受信することであって、該アプリケーションは、エンドユーザが電子カタログからコンテンツアイテムを購入するための機能性を欠如している、ことと、
ユーザが該アプリケーション内から、該電子カタログからコンテンツアイテムを購入するための機能性を提供する、購入モジュールを追加することによって、該アプリケーションを修正することであって、該アプリケーションを修正することは、ソースコードをもたらすように、該アプリケーションの少なくとも一部分を逆コンパイルすることと、該購入モジュールを追加するように、該ソースコードを修正することとを含む、ことと、
該アプリケーションを、該購入モジュールを追加するように修正された際に、エンドユーザが該電子カタログ内で利用可能にすることと、
を含み、該処理が、1つ以上のコンピューティングデバイスを備えるコンピューティングシステムによって実施される、
方法。
2.該処理は、デジタル著作権管理(DRM)モジュールを該アプリケーションと組み合わせることをさらに含む、付記1に記載の方法。
3.該DRMモジュールは、該アプリケーションに対する無許可の変更が行われたと判定するのに応えて、該修正されたアプリケーションの実行を一時中断するように構成される、付記2に記載の方法。
4.該処理は、ペアレンタルコントロールモジュールを該アプリケーションと組み合わせることをさらに含む、付記1に記載の方法。
5.該ペアレンタルコントロールモジュールは、アクセスキーの入力を要求する、アクセス制御インターフェースを提示するように構成される、付記4に記載の方法。
6.該ペアレンタルコントロールモジュールは、該アクセス制御インターフェース上で該アクセスキーが提供されない限り、該電子カタログ上での購入を防止するように構成される、付記5に記載の方法。
7.該アプリケーションを修正することは、該アプリケーションと関連付けられる1つ以上のエントリポイントを識別することをさらに含む、付記1に記載の方法。
8.該アプリケーションを修正することは、該アプリケーションに購入コードを挿入することをさらに含み、該購入コードは、該1つ以上のエントリポイントの実行と関連して実行されるように構成される、付記7に記載の方法。
9.該1つ以上のエントリポイントは、以下の機能、該アプリケーションの起動、該アプリケーションの終了、該アプリケーションの一時停止、および該アプリケーションの一時停止状態からの再開のうちの1つ以上を実施するように構成される、1つ以上のルーチンを備える、付記7に記載の方法。
10.該電子カタログは、モバイルデバイスがネットワーク上でアクセス可能なアプリケーションストアを構成する、付記1に記載の方法。
11.提出されるアプリケーションを処理するためのシステムであって、該システムは、コンピュータハードウェアを備えるアプリケーション配布システムを備え、該アプリケーション配布システムは、
アプリケーション提出者のアカウントと関連付けて、該アプリケーション提出者によるアプリケーションの提出をネットワーク上で受信し、該アプリケーションは、エンドユーザが電子カタログからコンテンツアイテムを購入すること可能にするための機能性、および該電子カタログへのアクセスを制御するための機能性のうちの少なくとも1つの機能性を欠如しており、
(1)ユーザが該アプリケーション内から、該電子カタログからコンテンツアイテムを購入することを可能にする機能性を提供する、購入モジュール、および(2)該ユーザが該電子カタログへのアクセスを制御することを可能にする、ペアレンタルコントロールモジュールのうちの少なくとも1つを追加することによって、該アプリケーションを修正し、該アプリケーションを修正することは、ソースコードをもたらすように、該アプリケーションの少なくとも一部分を逆コンパイルすることと、該購入モジュールおよび該ペアレンタルコントロールモジュールのうちの少なくとも1つを追加するように、該ソースコードを修正することとを含む、
ように構成される、
システム。
12.該アプリケーション配布システムは、該アプリケーションを、該購入モジュールおよび該ペアレンタルコントロールモジュールのうちの少なくとも1つを追加するように修正された際に、エンドユーザが該電子カタログ内で利用可能にするようにさらに構成される、付記11に記載のシステム。
13.該購入モジュールは、該エンドユーザデバイスにダウンロードされたコンテンツアイテムを認証するように構成される、付記11に記載のシステム。
14.該購入モジュールは、該アプリケーションのコンテンツアイテムのリストへのアクセスを提供するように構成されるカタログインターフェースを含む、付記11に記載のシステム。
15.該購入モジュールは、コンテンツアイテムの該リストを提供するカタログサービスと通信する、付記14に記載のシステム。
16.該購入モジュールは、該アプリケーションと関連付けられるコンテンツアイテムに対する支払いを処理するように構成される、購入サービスと通信するように構成される、付記11に記載のシステム。
17.該購入サービスは、該購入に対する税金を徴収し、分配するように構成される、付記16に記載のシステム。
18.該購入サービスは、該アプリケーションと関連付けられるコンテンツアイテムに対する支払いを処理するように構成される、付記16に記載のシステム。
19.持続性物理コンピュータストレージであって、
アプリケーション提出者アカウントと関連付けて、アプリケーション提出者からアプリケーションの提出をネットワーク上で受信することであって、該アプリケーションは、該アプリケーション内で追加のコンテンツアイテムにアクセスするための機能性を欠如している、ことと、
追加の機能性を提供する機能性モジュールを該アプリケーションと組み合わせることによって、該受信したアプリケーションを修正することであって、該機能性モジュールは、該アプリケーション内から該追加のコンテンツアイテムにアクセスするための機能性を追加する、ことと、
を含むプロセスに従って生成される実行可能なアプリケーションが記憶されている、持続性物理コンピュータストレージ。
20.該プロセスは、該アプリケーションを、該機能性モジュールを追加するように修正された際に、エンドユーザが該電子カタログ内で利用可能にすることをさらに含む、付記19に記載の持続性物理コンピュータストレージ。
21.該機能性モジュールによって提供される、該コンテンツアイテムにアクセスするための該追加される機能性は、該コンテンツアイテムへの無許可のアクセスを制御することを含む、付記19に記載の持続性物理コンピュータストレージ。
22.該機能性モジュールによって提供される、該コンテンツアイテムにアクセスするための該追加される機能性は、該アプリケーションの複数のコンテンツアイテムの電子カタログリストへのアクセスの制御を可能にすることを含む、付記19に記載の持続性物理コンピュータストレージ。
23.該機能性モジュールによって提供される、該コンテンツアイテムにアクセスするための該追加される機能性は、電子カタログからの該コンテンツアイテムの購入を可能にすることを含む、付記19に記載の持続性物理コンピュータストレージ。
【0081】
特定の実施形態例が記載されてきたが、これらの実施形態は、一例としてのみ提示されており、本明細書に開示される本発明の範囲を限定することは意図されない。したがって、前述の記載のいずれも、いずれかの特定の特徴的機能、特徴、ステップ、モジュール、もしくはブロックが必要であること、または不可欠であることを示唆することは意図されない。実際、本明細書に記載される新規の方法およびシステムは、種々の他の形態で具現化されてもよく、さらに、本明細書に開示される本発明の趣旨から逸脱することなく、本明細書に記載される方法およびシステムの形態における、様々な省略、置換、および変更が行われてもよい。
図1
図2
図3