(57)【特許請求の範囲】
【請求項１】
少なくとも１つのコンピューティング装置と、
前記少なくとも１つのコンピューティング装置内で実行可能な少なくとも１つのアプリケーションと、
を含み、
前記少なくとも１つのアプリケーションによって前記少なくとも１つのコンピューティング装置が、少なくとも：
アプリケーションのセットを判断し、
特定のクライアントに対する機能セットを判断し、
前記機能セットは前記特定のクライアントに関連する特性のセットを含み、
アプリケーションの前記セットのうちの各１つに対して対応する互換性式を取得し、
評価要求のバッチを互換性評価サービスにネットワークを経由して送信し、
前記評価要求の各々が、アプリケーションの前記セットのそれぞれ１つに対する対応する識別子および前記機能セットに対する識別子を指定し、
前記互換性評価サービスが、
アプリケーションの前記セットの各１つが前記特定のクライアントと互換性があるかを判断するために前記機能セットを使用して前記対応する互換性式の評価を実行する、
ように構成されており、
アプリケーションの前記セットをフィルタ処理して、前記特定のクライアントと互換性のないアプリケーションを除外し、
フィルタ処理されているアプリケーションの前記セットを返す、
システム。
【請求項２】
前記少なくとも１つのアプリケーションによって、前記少なくとも１つのコンピューティング装置が、
フィルタ処理されているアプリケーションの前記セットのいずれかの購入をユーザが要求することができる少なくとも１つのグラフィカルな構成要素を含むユーザーインタフェースを生成する、
ことをさらに含み、
前記特定のクライアントと互換性のない前記アプリケーションが、前記ユーザーインタフェースを通じて選択から除外されている、
請求項１に記載のシステム。
【請求項３】
アプリケーションの前記セットが、モバイルアプリケーションのセットに対応し、かつ、前記クライアントがモバイル機器に対応する、請求項１に記載のシステム。
【請求項４】
前記少なくとも１つのアプリケーションによって前記少なくとも１つのコンピューティング装置が、
前記互換性評価サービスから前記ネットワークを経由して取得された評価要求の前記バッチに対する複数の応答をキャッシュし、
要求を前記互換性評価サービスに送信する代わりに、別の評価に対してキャッシュされている前記複数の応答のうちの少なくとも１つを利用する、
ことをさらに含む、
請求項１に記載のシステム。
【請求項５】
前記少なくとも１つのアプリケーションによって前記少なくとも１つのコンピューティング装置が、
前記特定のクライアントから前記機能セットを取得し、
前記機能セットが、データストア内に格納された機能セットのいずれかと一致するかを判断し、
前記機能セットが前記データストア内に格納されたいずれの機能セットとも一致しないという判断に応答して、前記機能セットを前記データストア内に格納し、
前記機能セットの識別子を前記特定のクライアントと関連付ける、
ことをさらに含む、
請求項１に記載のシステム。
【請求項６】
前記少なくとも１つのアプリケーションによって前記少なくとも１つのコンピューティング装置が、
検索クエリーをユーザから取得する、
ことをさらに含み、
前記検索クエリーの実行に少なくとも一部基づき、アプリケーションの前記セットを判断する、
請求項１に記載のシステム。
【請求項７】
前記評価が、各対応する互換性式内の複数のオペランド変数の各々に対して前記機能セットからそれぞれの定数を置換することを含む、請求項１に記載のシステム。
【請求項８】
前記対応する互換性式が、複数の項を含む後置式であり、
前記互換性評価サービスが、スタックを使用して前記後置式を評価するようにさらに構成されている、
請求項１に記載のシステム。
【請求項９】
前記対応する互換性式の前記評価が、
前記後置式内の前記項の各１つに対して：
前記項の前記１つが演算子かオペランドかを判断すること、
前記項の前記１つがオペランドであるという判断に応答して、前記オペランドを前記スタック上にプッシュすること、
前記項の前記１つが演算子であるという判断に応答して、いくつかのオペランドを前記スタックからポップすること、
前記演算子を前記いくつかのオペランドに適用することにより結果を生成すること、
前記結果を前記スタック上にプッシュすること、
を含む、
請求項８に記載のシステム。
【請求項１０】
クライアントコンピューティング装置が、アプリケーションのリストに対する要求をアプリケーション市場システムに送信し、
前記要求がクライアント識別子を含み、
前記クライアント識別子が前記アプリケーション市場システムで登録されたクライアント機能のセットに関連付けられ、
前記クライアントコンピューティング装置が、アプリケーションのリストを前記アプリケーション市場システムから取得し、
アプリケーションの前記リストがクライアント機能の前記セットと互換性のないアプリケーションを除外するためにフィルタ処理され、
前記クライアントコンピューティング装置が、フィルタ処理されているアプリケーションの前記リストを提示するように構成されたユーザーインタフェースをレンダリングし、
前記クライアントコンピューティング装置が、前記クライアントコンピューティング装置に対するクライアント機能の前記セットを定期的に発見し、
前記クライアントコンピューティング装置が、前記アプリケーション市場システムで発見されているクライアント機能の前記セットを登録する、
方法。
【請求項１１】
前記要求が、前記クライアントコンピューティング装置の少なくとも１つの可変機能特性をさらに含む、請求項１０に記載の方法。
【請求項１２】
互換性評価サービスが、前記クライアント識別子と関連付けられた機能の前記セットを使用して、アプリケーションの前記リストのうちの各１つに対する対応する互換性式の評価を実行するように構成されている、
請求項１０に記載の方法。
【請求項１３】
前記クライアントコンピューティング装置が、フィルタ処理されているアプリケーションの前記リストをキャッシュし、
前記クライアントコンピューティング装置が、キャッシュされているアプリケーションの前記リストから少なくとも１つのアプリケーションを提示するように構成された別のユーザーインタフェースをレンダリングする、
ことをさらに含む、請求項１０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の技術は、アプリケーション互換性の評価に関する。
【背景技術】
【０００２】
小型のディスプレイ画面および制限された機能セットを有するスマートフォンから、大型ディスプレイ画面および広範囲に及ぶ機能セットを備えたタブレットコンピュータまで、多数の異なるタイプのモバイル機器が利用可能である。１つのタイプのモバイル機器に対して書かれたアプリケーションは、別のタイプのモバイル機器と互換性がない可能性がある。一例として、写真を撮るアプリケーションは、カメラのないモバイル機器と互換性がない可能性がある。別の例として、アプリケーションは、ある最低限のディスプレイ解像度に対して設計されたユーザーインタフェースを有し得、その最低限を下回るディスプレイ解像度を有するモバイル機器と互換性がない可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
開示の技術は、互換性のないアプリケーションを顧客に提示するのを回避することを目的とする。
【課題を解決するための手段】
【０００４】
開示の技術の一態様のシステムは、少なくとも１つのコンピューティング装置と、前記少なくとも１つのコンピューティング装置内で実行可能な少なくとも１つのアプリケーションであって、前記少なくとも１つのアプリケーションが：アプリケーションのセットを判断する論理と、特定のクライアントと互換性のないアプリケーションを除外するためにアプリケーションの前記セットをフィルタ処理する論理であって、フィルタ処理する前記論理が、前記特定のクライアントに対する機能セットを判断することと、アプリケーションの前記セットのうちの各１つに対して対応する互換性式を取得することと、アプリケーションの前記セットの各１つが前記特定のクライアントと互換性があるかを判断するために前記機能セットを使用して前記対応する互換性式の評価を実行することと、を行うように構成されている、アプリケーションの前記セットをフィルタ処理する論理と、フィルタ処理されているアプリケーションの前記セットを返す論理と、を含む、少なくとも１つのアプリケーションと、を備える。
【発明の効果】
【０００５】
開示の技術は、互換性のないアプリケーションを顧客に提示するのを回避することを可能とする。
【図面の簡単な説明】
【０００６】
【図１】本開示の様々な実施形態によるネットワーク化された環境の図である。
【図２】本開示の様々な実施形態に従い、図１のネットワーク化された環境内のクライアントによってレンダリングされるユーザーインタフェースの一例の図である。
【図３】本開示の様々な実施形態に従い、図１のコンピューティング環境内で実行されるアプリケーションインジェスチョンサービス（ａｐｐｌｉｃａｔｉｏｎ  ｉｎｇｅｓｔｉｏｎ  ｓｅｒｖｉｃｅ）の部分として実装された機能の一例を図示する流れ図である。
【図４】本開示の様々な実施形態に従い、図１のコンピューティング環境内で実行されるアプリケーション市場システム（ａｐｐｌｉｃａｔｉｏｎ  ｍａｒｋｅｔｐｌａｃｅ  ｓｙｓｔｅｍ）の部分として実装された機能の一例を図示する流れ図である。
【図５】本開示の様々な実施形態に従い、図１のコンピューティング環境内で実行される互換性評価サービスの部分として実装された機能の例を図示する流れ図である。
【図６】本開示の様々な実施形態に従い、図１のコンピューティング環境内で実行される互換性評価サービスの部分として実装された機能の例を図示する流れ図である。
【図７】本開示の様々な実施形態に従い、図１のネットワーク化された環境内で採用されたコンピューティング環境の一図示例を提供する概略ブロック図である。
【発明を実施するための形態】
【０００７】
本開示は、アプリケーション互換性の評価に関する。アプリケーション市場は、通常、任意の所与の装置と互換性があるかどうか分からない多数のアプリケーションを含む。顧客がアプリケーション市場で閲覧するか、または検索を実行するときに、互換性のないアプリケーションを顧客に提示するのを回避することが望ましい。例えば、アプリケーション市場に対するユーザーインタフェースから互換性のないアプリケーションを除外すると混乱が減少する。加えて、互換性のないアプリケーションを除外すると、互換性のないアプリケーションの間違ったインストールまたは実行から生じる悪い顧客経験を防ぐ。
【０００８】
本開示の様々な実施形態は１つまたは複数のアプリケーションのクライアントとの互換性評価のためのアプローチを提供し、それは、アプリケーション市場に対するユーザーインタフェースから互換性のないアプリケーションをフィルタ処理または除外するために使用され得る。この目的のため、アプリケーション市場に追加されているアプリケーションに応答して、互換性式が、アプリケーションに対して自動的に構築され得る。クライアントに対するクライアント機能データが取得され得る。顧客が、クライアント上にインストールするアプリケーションに対して、アプリケーション市場を閲覧または検索するとき、そのクライアントと互換性がないアプリケーションを除外するために結果がフィルタ処理される。フィルタ処理は、そのクライアントに対するクライアント機能データに関して、アプリケーションに対する互換性式の評価に少なくとも一部、基づき実行される。互換性のないアプリケーションは、次いで、顧客による選択から除外され得るか、または顧客に対して表示されるのさえ除外され得る。以下の議論では、システムおよびその構成要素の概要が提供され、同じものの動作の議論がそれに続く。
【０００９】
本開示の多数の態様は、図を参照するとより良く理解できる。図中の構成要素は、必ずしも一定の縮尺ではなく、代わりに、本開示の原理を明確に図示することに重きが置かれている。さらに、図では、同様の参照番号はいくつかの図を通して対応する部分を指定する。
【００１０】
図１を参照すると、様々な実施形態によるネットワーク化された環境１００が示されている。ネットワーク化された環境１００は、１つまたは複数の開発者クライアント１０６および１つまたは複数のクライアント１０９と、ネットワーク１１２を経由して、データ通信するコンピューティング環境１０３を含む。ネットワーク１１２は、例えば、インターネット、イントラネット、エクストラネット、ワイドエリアネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、有線ネットワーク、無線ネットワーク、もしくは他の適切なネットワークなど、または２つ以上のかかるネットワークの任意の組合せを含む。
【００１１】
コンピューティング環境１０３は、例えば、サーバーコンピュータまたはコンピューティング機能を提供する任意の他のシステムを含み得る。代替として、複数のコンピューティング装置が、例えば、１つもしくは複数のサーバーバンクもしくはコンピュータバンクまたは他の配列で配置されているコンピューティング環境１０３内で採用され得る。例えば、複数のコンピューティング装置は一緒に、クラウドコンピューティング資源、グリッドコンピューティング資源、および／または任意の他の分散コンピューティング配置を含み得る。かかるコンピューティング装置は、単一の施設に配置され得るか、または多数の異なる地理的位置間に分散され得る。
【００１２】
様々なアプリケーションおよび／または他の機能が、様々な実施形態に従って、コンピューティング環境１０３内で実行され得る。また、様々なデータが、コンピューティング環境１０３がアクセス可能なデータストア１１５内に格納される。データストア１１５は、見て分かるとおり、複数のデータストア１１５の代表であり得る。データストア１１５内に格納されるデータは、例えば、以下で説明する、様々なアプリケーションおよび／または機能エンティティの動作と関連付けられている。
【００１３】
コンピューティング環境１０３上で実行される構成要素は、例えば、開発者ポータルシステム１１８、アプリケーションインジェスチョンサービス１２１、アプリケーション市場システム１２４、互換性評価サービス１２７、および他のアプリケーション、サービス、プロセス、システム、エンジン、または本明細書では詳細に議論しない機能を含む。開発者ポータルシステム１１８は、ユーザーインタフェースを生成して、アプリケーション市場内の開発者の存在の維持に関連した機能を実行するために実行される。本明細書では、開発者は、アプリケーション１３０の供給源または販売業者に対応するユーザーまたは企業体に対応し得る。開発者ポータルシステム１１８は、開発者クライアント１０６における開発者が、アプリケーション１３０の投入またはアップロード、アプリケーション１３０に対する価格の設定、アプリケーション１３０に対するメタデータの設定、アプリケーション市場内でのアプリケーション１３０に対する販売方法のカスタマイズ、および／または他の機能の実行を行うことを可能にし得る。
【００１４】
一旦、開発者がアプリケーション１３０を開発者ポータルシステム１１８に提供すると、アプリケーションインジェスチョンサービス１２１がそのアプリケーション１３０をアプリケーション市場に追加するために実行され得る。アプリケーションインジェスチョンサービス１２１は、アプリケーション１３０を提供するためにアプリケーション市場の構成に関連した様々なタスクを実行し得る。例えば、アプリケーションインジェスチョンサービス１２１は、サポート対象のオペレーティングシステム、サポート対象のディスプレイ解像度またはサイズ、サポート対象の無線通信事業者、プロセッサ要件、メモリ要件などの、アプリケーション１３０の様々な要件を判断し得る。
【００１５】
アプリケーション市場システム１２４は、ユーザーインタフェースを提供して、アプリケーション市場に関連した様々なバックエンド機能を実行するために実行される。アプリケーション市場は、ユーザーがクライアント１０９上にインストールされるアプリケーション１３０を取得するのを容易にする。アプリケーション１３０は、多数の異なる開発者によって提供され得る。かかる取得は、購入およびダウンロード、無料ダウンロード、体験版ダウンロード、アップグレード、ロック解除、ならびに／または他のタイプの取得を含み得る。アプリケーション市場システム１２４は、ユーザーが、ジャンル、カテゴリ、タイトル、リリース日などに従って、利用可能なアプリケーション１３０を検索し、かつ／またはアプリケーション１３０を閲覧するのを容易にする。アプリケーション市場システム１２４は、アプリケーション１３０に対する電子決済を容易にするために、ユーザー認証および、クレジットカード、電子小切手、クレジットライン、ギフトカードなどの、様々な支払い手段の請求を実行し得る。
【００１６】
アプリケーション市場システム１２４は、クライアント機能１３１の登録および検索要求１３２をクライアント１０９から取得するように構成される。検索要求１３２に応答して、アプリケーション市場システム１２４は、検索結果１３３をクライアント１０９にネットワーク１１２を経由して返すように構成される。いくつかの実施形態では、検索結果１３３は、互換性のないアプリケーション１３０を除外するために事前にフィルタ処理され得る。他の実施形態では、検索結果１３３は、互換性フィルタ処理がクライアント１０９内で実行されるために、クライアント１０９に提供され得る。検索結果１３３は検索クエリーに応答して生成され得るが、検索結果１３３は、カテゴリリスト、人気のあるアプリケーション１３０のリスト、および／またはアプリケーション１３０の他の事前に定義されたか、もしくは動的に生成されるリストに対する検索要求１３２に応答しても生成され得る。
【００１７】
アプリケーション市場システム１２４、開発者ポータルシステム１１８、または両方は、Ａｐａｃｈｅ（登録商標）ＨＴＴＰ  Ｓｅｒｖｅｒ、Ａｐａｃｈｅ（登録商標）Ｔｏｍｃａｔ（登録商標）、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｉｎｔｅｒｎｅｔ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｓｅｒｖｉｃｅｓ（ＩＩＳ）、および／または他のサーバーなどの、市販のハイパーテキスト転送プロトコル（ＨＴＴＰ）サーバーアプリケーションを含み得る。アプリケーション市場システム１２４、開発者ポータルシステム１１８、または両方は、ＨＴＴＰ、シンプルオブジェクトアクセスプロトコル（ＳＯＡＰ）、表現状態転送（ＲＥＳＴ）、および／または他のネットワークプロトコルを採用し得る。
【００１８】
互換性評価サービス１２７は、特定のアプリケーション１３０が、クライアント１０９に対する機能の特定セットと互換性があるか互換性がないかを評価するために実行される。この目的のため、互換性評価サービス１２７は、特定のアプリケーション１３０に対して生成された互換性式１３４への変数置換を実行し得る。一実施形態では、互換性式１３４は、互換性評価サービス１２７によりスタックを使用して評価される後置式に対応する。
【００１９】
データストア１１５内に格納されるデータは、例えば、アプリケーション１３０、アプリケーション要件データ１３６、ビジネスルール１３９、互換性式１３４、機能セット１４５および識別子１４８を有するクライアント機能データ１４２、アプリケーション市場データ１５１、顧客データ１５４、ならびに潜在的に他のデータを含む。データストア１１５内のアプリケーション１３０は、アプリケーション市場に含めるために開発者によって提供されているアプリケーション１３０に対応する。アプリケーション１３０は、例えば、モバイルアプリケーション、ハイパーテキストマークアップ言語５（ＨＴＭＬ５）アプリケーション、デスクトップアプリケーションおよび／または他のアプリケーションを含み得る。
【００２０】
アプリケーション要件データ１３６は、アプリケーション１３０の各々に対する様々なアプリケーション要件を含む。かかる要件は、アプリケーション１３０がクライアント１０９上にダウンロードおよび／またはインストールされ得る前に、クライアント１０９が満足する、セキュリティ要件、機能要件、および／または他の要件を含み得る。かかる要件は、アプリケーション１３０内に含まれるマニフェストまたは他のファイルから判断され得る。追加として、かかる要件は、アプリケーション１３０のコードを分析すること、アプリケーション１３０のコードを実行してどの機能がアクセスされるかを判断すること、および／または他のアプローチによって、確認され得る。いくつかの事例では、要件は、開発者ポータルシステム１１８によって生成されたユーザーインタフェースを通して、開発者クライアント１０６において開発者によって手動で指定され得る。
【００２１】
ビジネスルール１３９は、アプリケーション１３０が特定の機能セット１４５と互換性があるかを判断し得る任意のルールを含み得る。ビジネス上の理由で、アプリケーション市場の事業主または開発者のいずれかの代わりに、あるアプリケーション１３０をあるクライアント１０９上への取得およびインストールのために提供しないことが望まれ得る。限定されない例として、アプリケーション市場の事業主がマッピングアプリケーション１３０をあるタブレットクライアント１０９に提供する場合、ビジネスルール１３９は、他の供給源からのマッピングアプリケーション１３０はタブレットクライアント１０９と互換性がないと指定し得る。別の例として、ビジネスルール１３９は、あるアプリケーション１３０は、特定の排他的な無線通信事業者以外の無線通信事業者に関連したモバイルクライアント１０９と互換性がないと指定し得る。
【００２２】
互換性式１３４は、アプリケーションインジェスチョンサービス１２１によって、アプリケーション１３０に関連するアプリケーション要件データ１３６およびビジネスルール１３９から生成され得る。一実施形態では、互換性式１３４は、オペランドおよび演算子を含む項のリストに対応する。オペランドは変数および定数を含み得る。演算子は、例えば、論理演算子、比較演算子、算術演算子、集合演算子などを含み得る。いくつかの事例では、演算子は、所定の数の演算子、例えば、２つのオペランドまたは別の数、と関連付けられ得る。互換性式１３４は、前置、中置、または後置表記法で提供され得る。一実施形態では、互換性式１３４は、スタックベース評価のための後置表記法であり得る。
【００２３】
クライアント機能データ１４２は、様々なクライアント１０９と関連付けられた機能または特性を記述するデータを含む。かかる機能または特性は、アプリケーション１３０が対応するクライアント１０９と互換性があるかを判断し得る。クライアント機能データ１４２は、複数の機能セット１４５を含み、各機能セット１４５は、同一の機能を有する複数のクライアント１０９に対応し得る。各機能セット１４５は、例えば、オペレーティングシステムのバージョン、無線通信事業者、インストール済みのアプリケーション１３０およびライブラリ、クライアント１０９が全地球測位システム（ＧＰＳ）装置を有するか、クライアント１０９がカメラを有するか、クライアント１０９のプロセッサ、クライアント１０９のメモリなど、を指定し得る。各機能セット１４５は、機能セット１４５を識別する識別子１４８と関連付けられている。
【００２４】
アプリケーション市場データ１５１は、アプリケーション市場システム１２４によって提供されるアプリケーション市場と関連付けられた様々なデータを含む。例えば、アプリケーション市場データ１５１は、アプリケーション１３０を宣伝する際に採用され得る、価格情報、注文情報、アプリケーション１３０に対するメタデータ、情報ページ、カテゴリおよび分類構造、レビュー、評価、スクリーンショット、および／または他のデータを含み得る。顧客データ１５４は、アプリケーション市場システム１２４のユーザーに関する様々なデータを含み得る。かかるデータは、セキュリティ証明書、閲覧履歴、注文履歴、登録された装置に対する識別子１４８、および／または他の情報を含み得る。
【００２５】
開発者クライアント１０６は、ネットワーク１１２に結合され得る、開発者によって操作される複数のクライアント装置の代表である。開発者クライアント１０６は、例えば、コンピュータシステムなどの、プロセッサベースのシステムを含み得る。かかるコンピュータシステムは、デスクトップコンピュータ、ラップトップコンピュータ、携帯情報端末、携帯電話、スマートフォン、セットトップボックス、音楽プレーヤー、ウェブパッド、タブレットコンピュータシステム、ゲーム機、電子書籍リーダー、または同様の機能を備えた他の装置の形で実施され得る。
【００２６】
開発者クライアント１０６は、ブラウザおよび／または他のアプリケーションなどの、様々なアプリケーションを実行するように構成され得る。ブラウザは、例えば、開発者ポータルシステム１１８および／もしくは他のサーバーによって提供されるウェブページまたは他のネットワークコンテンツなどの、ネットワークページにアクセスしてレンダリングし、それによりレンダリングされたネットワークページをディスプレイ上に生成するために開発者クライアント１０６内で実行され得る。開発者クライアント１０６は、例えば、モバイルアプリケーション、電子メールアプリケーション、インスタントメッセージアプリケーション、および／または他のアプリケーションなど、ブラウザ以外のアプリケーションを実行するように構成され得る。
【００２７】
クライアント１０９は、ネットワーク１１２に結合され得る、顧客または見込み客によって操作される複数のクライアント装置の代表である。クライアント１０９は、例えば、コンピュータシステムなどの、プロセッサベースのシステムを含み得る。かかるコンピュータシステムは、デスクトップコンピュータ、ラップトップコンピュータ、モバイルコンピュータ、携帯情報端末、携帯電話、スマートフォン、セットトップボックス、音楽プレーヤー、ウェブパッド、タブレットコンピュータシステム、ゲーム機、電子書籍リーダー、または同様の機能を備えた他の装置の形で実施され得る。クライアント１０９は、ディスプレイ１５７を含み得る。ディスプレイ１５７は、例えば、液晶ディスプレイ（ＬＣＤ）画面、ガスプラズマベースのフラットパネルディスプレイ、ＬＣＤプロジェクタ、または他のタイプのディスプレイ装置などの、１つまたは複数の装置を含み得る。
【００２８】
クライアント１０９は、クライアントアプリケーション１６０および／または他のアプリケーションなどの様々なアプリケーションを実行するように構成され得る。クライアントアプリケーション１６０は、ユーザーインタフェース１６３をディスプレイ１５７上にレンダリングして、アプリケーション市場の閲覧および検索、ならびにアプリケーション１３０のアプリケーション市場からの購入、ダウンロード、およびインストールを容易にするように構成される。一実施形態では、クライアントアプリケーション１６０は、アプリケーション市場のためのモバイルアプリケーションに対応する。別の実施形態では、クライアントアプリケーション１６０は、例えば、アプリケーション市場システム１２４および／もしくは他のサーバーによって提供されるウェブページまたは他のネットワークコンテンツなどの、ネットワークページにアクセスしてレンダリングするために採用されたブラウザに対応する。クライアント１０９は、例えば、モバイルアプリケーション、電子メールアプリケーション、インスタントメッセージアプリケーション、および／または他のアプリケーションなど、クライアントアプリケーション１６０以外のアプリケーションを実行するように構成され得る。
【００２９】
次に、ネットワーク化された環境１００の様々な構成要素の動作の概要を提供する。初めに、開発者クライアント１０６における開発者は、開発者ポータルシステム１１８とやりとりして、１つまたは複数のアプリケーション１３０をアプリケーション市場に含めるために投入する。いくつかの事例では、アプリケーション１３０の複数のバージョンが投入され得る。また、アプリケーション１３０の新しいバージョンがリリースされると、その新しいバージョンが投入され得る。新しいバージョンは、例えば、以前のバージョンと共存し得るか、または以前のバージョンを置換し得る。アプリケーション１３０は、開発者ポータルシステム１１８にアップロードされ得るか、または開発者ポータルシステム１１８は、アプリケーション１３０を別の供給源からダウンロードするように構成され得る。アプリケーション１３０の投入に対する他のアプローチが他の実施形態で採用され得る。
【００３０】
アプリケーションインジェスチョンサービス１２１が、次いで、アプリケーション市場に含めるために投入されている各アプリケーション１３０を処理する。この目的のため、アプリケーションインジェスチョンサービス１２１は、アプリケーション１３０の様々な要件を判断し得る。かかる要件は、開発者によって手動で指定され得、かつ／または自動的に判断され得る。例えば、アプリケーションインジェスチョンサービス１２１は、アプリケーション１３０を起動して、アプリケーション１３０がどの資源にアクセスしようとするかを判断し得る。代替として、または追加として、アプリケーションインジェスチョンサービス１２１は、アプリケーション１３０のコードを検査して、どの機能、資源などがアプリケーション１３０によって使用されるかを評価し得る。さらに、アプリケーションインジェスチョンサービス１２１は、アプリケーション１３０に対するマニフェストまたは他の構成ファイルに、もし存在すれば、少なくとも一部基づき、要件を判断し得る。アプリケーションインジェスチョンサービス１２１は、次いで、アプリケーション要件データ１３６および任意の適用可能なビジネスルール１３９から、アプリケーション１３０に対する互換性式１３４を作成する。
【００３１】
別々に、顧客は、アプリケーション市場システム１２４でアカウントおよび／または識別を確立し得る。このプロセスの一部として、顧客の各々は、１つまたは複数のクライアント１０９をアプリケーション市場システム１２４で登録し得る。顧客は、この登録プロセスを容易にするために、クライアントアプリケーション１６０をダウンロードしてインストールし得る。代替として、クライアントアプリケーション１６０がブラウザである場合、顧客は、アプリケーション市場システム１２４によって提供されるネットワークサイトを閲覧し得る。ネットワークサイトは、次いで、様々なクライアント実行可能コードを、登録プロセスを実行するブラウザ上にロードし得る。
【００３２】
登録の一部として、クライアントアプリケーション１６０は、クライアント１０９の様々な機能を確認するためにクライアント１０９に問い合わせを行い得る。例えば、クライアントアプリケーション１６０は、クライアント１０９の、現在のオペレーティングシステムのバージョン、インストールされているソフトウェアライブラリ、ＧＰＳ装置が存在するか、カメラが存在するか、現在の無線通信事業者、および／または他の特性、機能などを判断し得る。本明細書での議論は、主としてクライアント１０９装置に対する機能に関連するが、機能は、追加または代替として、クライアントアプリケーション１６０に関連し得る。限定されない例として、クライアントアプリケーション１６０がブラウザである場合、クライアントアプリケーション１６０がＨＴＭＬ５をサポートするか、どのＨＴＭＬ５の機能がサポートされるかなどが判断され得る。
【００３３】
クライアントアプリケーション１６０は、次いで、クライアント機能１３１をアプリケーション市場システム１２４に報告する。初期登録の後、クライアントアプリケーション１６０は、機能変更に応答して、アプリケーション市場システム１２４のアクセス時に、および／または他の時に、クライアント１０９に問い合わせを行って、クライアント機能１３１を定期的に（例えば、毎月、隔月など）報告するように構成され得る。アプリケーション市場システム１２４は、次いで、クライアント機能１３１を、事前に存在する機能セット１４５と、もし存在すれば、照合する。それが存在しない場合、アプリケーション市場システム１２４は新しい機能セット１４５をクライアント機能１３１からデータストア１１５内に作成して、新しい識別子１４８をそれに割り当て得る。アプリケーション機能セット１４５に関連付けられた識別子１４８は、次いで、顧客データ１５４内のクライアント１０９と関連付けられ、クッキーとしてクライアント１０９上に格納され、クライアントアプリケーション１６０による使用のためにクライアント１０９に転送されるか、または別の方法でクライアント１０９と関連付けられ得る。
【００３４】
顧客は次いで、アプリケーション市場の様々なユーザーインタフェース１６３にクライアントアプリケーション１６０を通してアクセスする。データは、ユーザーインタフェース１６３の生成およびレンダリングを容易にするために、クライアントアプリケーション１６０とアプリケーション市場システム１２４との間のネットワーク１１２を経由して送信され得る。一実施形態では、ユーザーインタフェース１６３は、レンダリングされたウェブページに対応し得る。別の実施形態では、ユーザーインタフェース１６３は、モバイルアプリケーション画面に対応し得る。ユーザーインタフェース１６３を通して、顧客は、アプリケーション市場によって提供されるアプリケーション１３０を全て閲覧および／または検索し得る。顧客は、検索クエリーを入力し、かつ／またはあるアプリケーション１３０を提示するように構成されたユーザーインタフェース１６３にアクセスし得る。それを行う際に、クライアントアプリケーション１６０は検索要求１３２をアプリケーション市場システム１２４に送信し得る。
【００３５】
それに応じて、アプリケーション市場システム１２４は、例えば、検索クエリーを使用して検索を実行するか、または事前に定義されたリストを取得することにより、アプリケーション１３０のリストを取得する。リスト内のアプリケーション１３０は、おそらく、人気、鮮度、検索クエリーとの関連性、価格などに対する基準を満足しているが、クライアント１０９と互換性があるかどうか分からない。様々な実施形態によれば、クライアント１０９と互換性のないアプリケーション１３０（および／またはアプリケーション１３０のバージョン）を除外するためにフィルタ処理が実行される。
【００３６】
一実施形態では、フィルタ処理は、アプリケーション市場システム１２４によってサーバー側で実行される。この目的のため、アプリケーション市場システム１２４は、アプリケーション１３０のリスト内の各アプリケーション１３０がクライアント１０９と互換性があるかを判断するために、互換性評価サービス１２７に問い合わせ得る。各クエリーは、クライアント１０９の機能セット１４５に対する識別子１４８を、それぞれのアプリケーション１３０に対する対応する識別子と一緒に提供し得る。クエリーがネットワークを経由してサービスコールとして伝送される場合、アプリケーション市場システム１２４は、ネットワーク待ち時間の影響を最小限にするために、クエリーまたはサービスコールをバッチにするように構成され得る。アプリケーション１３０のフィルタ処理されたリスト、または少なくともその一部が、次いで、ネットワーク１１２を経由して、クライアント１０９に送信される。
【００３７】
別の実施形態では、フィルタ処理は、クライアント１０９によってクライアント側で実行される。言い換えれば、互換性のないアプリケーション１３０を含み得るアプリケーション１３０のリストが、検索結果１３３内でクライアント１０９に送信される。クライアントアプリケーション１６０は、次いで、アプリケーション１３０の各々がクライアント１０９と互換性があるかを判断するために、互換性評価サービス１２７に対する１つまたは複数のサービスコールを行い得る。かかるサービスコールでは、クライアントアプリケーション１６０は識別子１４８（または、識別子１４８を判断するために使用され得る情報）を、各アプリケーション１３０に対する対応する識別子と一緒に渡し得る。クライアントアプリケーション１６０は、ネットワーク待ち時間の影響を最小限にするために、クエリーまたはサービスコールをバッチにするように構成され得る。一実施形態では、評価の結果がクライアント１０９内にキャッシュされ得る。
【００３８】
アプリケーション１３０のフィルタ処理されたリスト、または少なくともその一部が、クライアント１０９で利用可能な場合、クライアントアプリケーション１６０は、互換性があるアプリケーション１３０のリストからの１つまたは複数のアプリケーション１３０を提示するユーザーインタフェース１６３をレンダリングする。ユーザーインタフェース１６３は、そのアプリケーション１３０に対する詳細なページまたは画面にナビゲートするための、１つもしくは複数のリンクまたは他のユーザーインタフェース構成要素を含み得る。追加として、ユーザーインタフェース１６３は、アプリケーション１３０の１つの取得（例えば、購入およびダウンロード、無料ダウンロード、既存のインストレーションのアップグレードなど）を開始するための、１つもしくは複数のリンクまたは他のユーザーインタフェース構成要素を含み得る。
【００３９】
いくつかの事例では、互換性評価サービス１２７に対する検索要求１３２および／または評価クエリーは、クライアント１０９に関連した様々な可変機能特性を提供し得る。例えば、一実施形態では、格納された機能セット１４５は、クライアント１０９に対する不変特性を含み得るが、フィルタ処理を可能にするために、可変特性が、クライアント１０９によって提供され得る。かかる可変機能特性は、例えば、現在のオペレーティングシステムのバージョン、現在の無線通信事業者などを含み得る。
【００４０】
クライアント１０９上にインストールされるアプリケーション１３０に対する検索要求１３２を開始するクライアント１０９の機能に関して機能を説明してきたが、他の実施形態では、検索要求１３２は、異なるクライアント１０９と関連付けられた識別子１４８を指定し得る。例えば、顧客は、自分のスマートフォンと互換性のあるモバイルアプリケーション１３０を自分のデスクトップコンピュータから閲覧することを望み得る。かかる事例では、顧客は、以前に登録された装置から手動で識別または選択し得、それにより、使用されているクライアント１０９のものとは異なる識別子１４８を選択する。
【００４１】
互換性評価サービス１２７は、アプリケーション１３０の識別子、機能セット１４５の識別子１４８、ならびに潜在的にアプリケーション１３０のバージョン識別子および可変機能特性を指定するクエリーを取得して、アプリケーション１３０が機能セット１４５と互換性があるかを判断するために評価を実行する。この目的のため、互換性評価サービス１２７は、アプリケーション１３０（および、該当する場合は、バージョン）に対応する互換性式１３４を取得して、機能セット１４５（および、該当する場合は、可変機能特性）内の値に従って、互換性式１３４内の変数を置換する。互換性評価サービス１２７は、互換性式１３４の、該当する場合は、中置から後置表記法への変換、および／または他の変換も実行し得る。一実施形態では、互換性評価サービス１２７は、スタックを使用して、互換性式１３４を評価する。評価の結果は、アプリケーション１３０が、所与の機能セット１４５（および、該当する場合は、可変機能特性）と互換性があるか、または互換性がないかを示す。結果はデータストア１１５内にキャッシュされ、必要に応じて、互換性評価サービス１２７に対する将来の要求の代わりに利用され得る。
【００４２】
ここで、図２を参照すると、様々な実施形態に従い、ネットワーク化された環境１００（図１）内のクライアント１０９内で実行されるクライアントアプリケーション１６０（図１）によってレンダリングされるユーザーインタフェース１６３の一例が示されている。ユーザーインタフェース１６３は、クライアント１０９と互換性があると判断されているアプリケーション１３０（図１）のリスト２０３を提示する。クライアント１０９の識別２０６は、クライアント１０９を「Ｇａｌａｘｏ  ２０００Ｎスマートフォン」であるとして記述する。ユーザーインタフェース構成要素２０９は、互換性のために評価されているクライアント１０９を切り替えるために提供され得る。例えば、顧客は、タブレットコンピュータを以前に登録している可能性があり、そのタブレットコンピュータと互換性のあるアプリケーション１３０についてスマートフォン上で閲覧することを望み得る。
【００４３】
リスト２０３は、それぞれ「Ｉｎｓｔａｐｈｏｔｏ」、「Ｍｅａｎ  Ｂｉｒｄｓ」および「Ｍａｐ  Ａｐｐ」に対応する、３つのアプリケーション１３０の記述２１２ａ、２１２ｂ、および２１２ｃを含む。この限定されない例では、図、さらなる情報を要求するための構成要素、および購入を要求するための構成要素が各記述２１２に対して提供され得る。ユーザーインタフェース１６３のサイズが限定され得るので、１つまたは複数のナビゲーション構成要素２１５が、ユーザーインタフェース１６３を更新して、リスト２０３内の追加のアプリケーション１３０に対する記述２１２をレンダリングするために提供され得る。
【００４４】
次に図３を参照すると、様々な実施形態に従い、アプリケーションインジェスチョンサービス１２１の一部分の動作の一例を提供する流れ図が示されている。図３の流れ図は、本明細書で説明するように、アプリケーションインジェスチョンサービス１２１のその部分の動作を実装するために採用され得る、多数の異なるタイプの機能的配置の一例を提供するのに過ぎないことが理解される。代替として、図３の流れ図は、１つまたは複数の実施形態に従ってコンピューティング環境１０３（図１）内で実装される方法のステップの一例を示すと見なされ得る。
【００４５】
ボックス３０３から開始して、アプリケーションインジェスチョンサービス１２１は、アプリケーション１３０（図１）を開発者から取得する。例えば、開発者は、アプリケーション１３０を開発者ポータルシステム１１８（図１）を通じて投入し得る。ボックス３０６で、アプリケーションインジェスチョンサービス１２１は、アプリケーション１３０の要件を判断する。例えば、アプリケーションインジェスチョンサービス１２１は、アプリケーション１３０と関連付けられたデータ（例えば、マニフェストなど）を検査し得る。また、アプリケーションインジェスチョンサービス１２１は、アプリケーション１３０のコードを検査するか、またはアプリケーション１３０のコードを実行して、アプリケーション１３０がどの機能を使用するかを判断し得る。追加として、アプリケーションインジェスチョンサービス１２１は、開発者によって手動で指定されている要件を取得し得る。アプリケーションインジェスチョンサービス１２１は、要件をアプリケーション要件データ１３６（図１）内に格納し得る。
【００４６】
ボックス３０９で、アプリケーションインジェスチョンサービス１２１は、アプリケーション１３０に適用し得るビジネスルール１３９（図１）を判断する。ボックス３１２で、アプリケーションインジェスチョンサービス１２１は、アプリケーション１３０に対する互換性式１３４（図１）を生成する。アプリケーションインジェスチョンサービス１２１は、次いで、互換性式１３４をデータストア１１５（図１）に格納する。ボックス３１５で、アプリケーションインジェスチョンサービス１２１は、アプリケーション１３０をアプリケーション市場に追加し、それは、アプリケーション１３０をデータストア１１５に格納すること、アプリケーション市場データ１５１（図１）を更新すること、アプリケーション１３０をアプリケーション市場システム１２４（図１）に登録すること、および／または他の動作を伴い得る。その後、アプリケーションインジェスチョンサービス１２１のその部分が終了する。
【００４７】
図４に進むと、様々な実施形態に従い、アプリケーション市場システム１２４の一部分の動作の一例を提供する流れ図が示されている。図４の流れ図は、本明細書で説明するように、アプリケーション市場システム１２４のその部分の動作を実装するために採用され得る、多数の異なるタイプの機能的配置の一例を提供するのに過ぎないことが理解される。代替として、図４の流れ図は、１つまたは複数の実施形態に従って、コンピューティング環境１０３（図１）内で実装される方法のステップの一例を示すと見なされ得る。
【００４８】
ボックス４０３から開始して、アプリケーション市場システム１２４は、クライアント機能１３１（図１）をクライアント１０９（図１）から取得する。ボックス４０６で、アプリケーション市場システム１２４は、対応する機能セット１４５（図１）がデータストア１１５（図１）内に存在するかを判断する。対応する機能セットが存在しない場合、アプリケーション市場システム１２４は、ボックス４０９に移動して、クライアント機能１３１に対応する新しい機能セット１４５をデータストア１１５内に格納する。ボックス４１２で、アプリケーション市場システム１２４は、機能セット１４５に対する新しい識別子１４８（図１）を生成し、その識別子１４８をクライアント１０９と関連付ける。この目的のため、アプリケーション市場システム１２４は、顧客データ１５４（図１）を更新し、識別子１４８をクライアント１０９に送信して、識別子１４８をクライアント１０９上にクッキーとして格納し、かつ／または他の動作を実行し得る。アプリケーション市場システム１２４は、次いで、ボックス４１５に進む。
【００４９】
代わりに、アプリケーション市場システム１２４が、機能セット１４５がデータストア１１５内に既に存在すると判断する場合、アプリケーション市場システム１２４は、ボックス４０６からボックス４１８に移動して、既存の機能セット１４５の識別子１４８をクライアント１０９と関連付ける。この目的のため、アプリケーション市場システム１２４は、顧客データ１５４を更新し、識別子１４８をクライアント１０９に送信して、識別子１４８をクライアント１０９上にクッキーとして格納し、かつ／または他の動作を実行し得る。アプリケーション市場システム１２４は、次いで、ボックス４１５に進む。
【００５０】
ボックス４１５で、アプリケーション市場システム１２４は、アプリケーション１３０（図１）のリストに対する要求をクライアント１０９から取得する。例えば、要求は、検索要求１３２（図１）、カテゴリリストに対する要求などであり得る。ボックス４２１で、アプリケーション市場システム１２４は、アプリケーション１３０のリストを生成する。例えば、アプリケーション市場システム１２４は、検索基準に一致するアプリケーション１３０を見つけるためにアプリケーション１３０について検索を実行し得る。ボックス４２４で、アプリケーション市場システム１２４は、アプリケーション１３０の各々がクライアント１０９と互換性があるかを判断するために、互換性評価サービス１２７（図１）に問い合わせる。いくつかの事例では、アプリケーション市場システム１２４は、アプリケーション市場システム１２４と互換性評価サービス１２７との間の通信における待ち時間の影響を回避するために、クエリーをまとめてバッチにし得る。
【００５１】
ボックス４２７で、アプリケーション市場システム１２４は、アプリケーション１３０のリストをフィルタ処理して互換性がないと判断されるアプリケーション１３０を除外する。ボックス４３０で、アプリケーション市場システム１２４は、アプリケーション１３０のフィルタ処理されたリストを提示するためにユーザーインタフェース１６３（図１）に対するデータを生成する。ボックス４３３で、アプリケーション市場システム１２４は、ユーザーインタフェース１６３に対するデータを、ネットワーク１１２（図１）を経由してクライアント１０９に送信する。その後、アプリケーション市場システム１２４のその部分が終了する。
【００５２】
続けて図５には、様々な実施形態に従い、互換性評価サービス１２７の一部分の動作の一例を提供する流れ図が示されている。図５の流れ図は、本明細書で説明するように、互換性評価サービス１２７のその部分の動作を実装するために採用され得る、多数の異なるタイプの機能的配置の一例を提供するのに過ぎないことが理解される。代替として、図５の流れ図は、１つまたは複数の実施形態に従って、コンピューティング環境１０３（図１）内で実装される方法のステップの一例を示すと見なされ得る。
【００５３】
ボックス５０３から開始して、互換性評価サービス１２７は、クライアント１０９（図１）に対応する機能セット１４５（図１）およびアプリケーション１３０（図１）に対応する互換性式１３４（図１）を取得する。いくつかの事例では、互換性評価サービス１２７は、互換性式１３４を識別するためにアプリケーション１３０に対するバージョン識別子も取得し得る。さらに、互換性評価サービス１２７は、機能セット１４５内に格納されているものに加えて、クライアント１０９に対する様々な可変機能特性も取得し得る。
【００５４】
ボックス５０６で、互換性評価サービス１２７は、互換性式１３４を、該当する場合には、後置式に変換する。ボックス５０９で、互換性評価サービス１２７は、互換性式１３４内の変数を機能セット１４５からの値と置換する。例えば、互換性式１３４は、変数「ｓｃｒｅｅｎＳｉｚｅ」を有し得、機能セット１４５は「ｓｃｒｅｅｎＳｉｚｅ＝ｓｍａｌｌ」の属性・値対を有し得る。従って、互換性評価サービス１２７は、互換性式１３４を評価する目的で、「ｓｃｒｅｅｎＳｉｚｅ」を「ｓｍａｌｌ」で置換し得る。
【００５５】
ボックス５１２で、互換性評価サービス１２７は、スタックを使用して互換性式を評価し、それについては、図６の流れ図に関連してさらに説明する。ボックス５１５で、互換性評価サービス１２７は、評価結果を返す。その後、互換性評価サービス１２７のその部分が終了する。
【００５６】
ここで、図６を参照すると、様々な実施形態に従い、互換性評価サービス１２７の別の部分の動作の一例を提供する流れ図が示されている。図６の流れ図は、本明細書で説明するように、互換性評価サービス１２７の他の部分の動作を実装するために採用され得る、多数の異なるタイプの機能的配置の一例を提供するのに過ぎないことが理解される。代替として、図６の流れ図は、１つまたは複数の実施形態に従って、コンピューティング環境１０３（図１）内で実装される方法のステップの一例を示すと見なされ得る。
【００５７】
ボックス６０３から開始して、互換性評価サービス１２７は、項を互換性式１３４から取得する。ボックス６０６で、互換性評価サービス１２７は、項がオペランドであるかを判断する。互換性評価サービス１２７が、項がオペランドであると判断すると、互換性評価サービス１２７は、ボックス６０９に進んで、オペランドをスタック上にプッシュする。互換性評価サービス１２７は、次いで、ボックス６１２に進む。
【００５８】
代わりに、互換性評価サービス１２７が、項がオペランドではない（すなわち、演算子である）と判断すると、互換性評価サービス１２７は、ボックス６０６からボックス６１５に進み、演算子に従ってオペランドをスタックからポップする。例えば、互換性評価サービス１２７は、いくつかのオペランドをスタックからポップし得、その数は、少なくとも一部、演算子に基づき判断され得る。ボックス６１８で、互換性評価サービス１２７は、演算子をオペランドに適用する。例えば、演算子が「＝」であり、オペランドが「６」および「７」である場合、互換性評価サービス１２７は、「６」＝「７」であるかを判断し得、それにより偽の結果を生成する。
【００５９】
ボックス６１２で、互換性評価サービス１２７は、互換性式１３４がさらなる項を含むかを判断する。互換性式１３４がさらなる項を含む場合、互換性評価サービス１２７は、ボックス６２１で、演算子結果をスタック上にプッシュし、その後、ボックス６０３に戻る。互換性式１３４がさらなる項を含まない場合、互換性評価サービス１２７は、ボックス６２４で、結果を返す。その後、互換性評価サービス１２７のその部分が終了する。
【００６０】
図７に関連して、本開示の一実施形態に従ったコンピューティング環境１０３の概略ブロック図が示されている。コンピューティング環境１０３は、１つまたは複数のコンピューティング装置７００を含む。各コンピューティング装置７００は、例えば、プロセッサ７０３およびメモリ７０６を有する、少なくとも１つのプロセッサ回路を含み、プロセッサ７０３およびメモリ７０６の両方は、ローカルインタフェース７０９に結合されている。この目的のため、コンピューティング装置７００は、例えば、少なくとも１つのサーバーコンピュータまたは同様の装置を含み得る。ローカルインタフェース７０９は、例えば、見て分かるとおり、付随のアドレス／制御バスまたは他のバス構造を備えたデータバスを含み得る。
【００６１】
メモリ７０６に格納されているのは、データおよびプロセッサ７０３によって実行可能ないくつかの構成要素の両方である。具体的には、メモリ７０６に格納されていて、プロセッサ７０３によって実行可能なものは、開発者ポータルシステム１１８、アプリケーションインジェスチョンサービス１２１、アプリケーション市場システム１２４、互換性評価サービス１２７、および潜在的に他のアプリケーションである。また、メモリ７０６内に格納されているのは、データストア１１５および他のデータであり得る。加えて、オペレーティングシステムがメモリ７０６内に格納されて、プロセッサ７０３によって実行可能であり得る。
【００６２】
見て分かるとおり、メモリ７０６内に格納されて、プロセッサ７０３によって実行可能である他のアプリケーションがあり得ることが理解される。本明細書で説明する任意の構成要素がソフトウェアの形で実装される場合、例えば、Ｃ、Ｃ＋＋、Ｃ＃、Ｏｂｊｅｃｔｉｖｅ  Ｃ、Ｊａｖａ（登録商標）、ＪａｖａＳｃｒｉｐｔ（登録商標）、Ｐｅｒｌ、ＰＨＰ、Ｖｉｓｕａｌ  Ｂａｓｉｃ（登録商標）、Ｐｙｔｈｏｎ（登録商標）、Ｒｕｂｙ，Ｄｅｌｐｈｉ（登録商標）、Ｆｌａｓｈ（登録商標）、または他のプログラミング言語などの、いくつかのプログラミング言語のうちの任意の１つが採用され得る。
【００６３】
いくつかのソフトウェア構成要素がメモリ７０６内に格納され、プロセッサ７０３によって実行可能である。この点において、用語「実行可能」は、プロセッサ７０３によって最終的に実行できる形式であるプログラムファイルを意味する。実行可能プログラムの例は、例えば、メモリ７０６のランダムアクセス部分にロードでき、プロセッサ７０３によって実行できるフォーマットで、機械コードに変換できるコンパイル済みプログラム、メモリ７０６のランダムアクセス部分にロードされ、プロセッサ７０３によって実行されることが可能なオブジェクトコードなどの適切なフォーマットで表現され得るソースコード、または、プロセッサ７０３によって実行されるようにメモリ７０６のランダムアクセス部分内で命令を生成するために、別の実行可能プログラムによって解釈され得るソースコードなど、であり得る。実行可能プログラムは、例えば、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、ハードドライブ、ソリッドステートドライブ、ＵＳＢフラッシュドライブ、メモリカード、コンパクトディスク（ＣＤ）もしくはデジタル多用途ディスク（ＤＶＤ）などの光ディスク、フロッピィディスク、磁気テープ、または他のメモリ構成要素を含む、メモリ７０６の任意の部分または構成要素内に格納され得る。
【００６４】
メモリ７０６は、本明細書では、揮発性および不揮発性のメモリおよびデータ記憶構成要素の両方を含むとして定義される。揮発性構成要素は、電源喪失時にデータ値を保持しないものである。不揮発性構成要素は、電源喪失時にデータ値を保持するものである。従って、メモリ７０６は、例えば、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、ハードディスクドライブ、ソリッドステートドライブ、ＵＳＢフラッシュドライブ、メモリカードリーダーを介してアクセスされるメモリカード、関連付けられたフロッピィディスクドライブを介してアクセスされるフロッピィディスク、光ディスクドライブを介してアクセスされる光ディスク、適切なテープドライブを介してアクセスされる磁気テープ、および／もしくは他のメモリ構成要素、またはこれらのメモリ構成要素の任意の２つ以上の組合せを含み得る。加えて、ＲＡＭは、例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、または磁気ランダムアクセスメモリ（ＭＲＡＭ）および他のかかる装置を含み得る。ＲＯＭは、例えば、プログラマブル読取り専用メモリ（ＰＲＯＭ）、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブル読取り専用メモリ（ＥＥＰＲＯＭ）、または他の同様のメモリ装置を含み得る。
【００６５】
また、それぞれ、プロセッサ７０３は、複数のプロセッサ７０３を代表し得、メモリ７０６は、並列処理回路内で動作する複数のメモリ７０６を、代表し得る。かかる事例では、ローカルインタフェース７０９は、複数のプロセッサ７０３の任意の２つの間、任意のプロセッサ７０３とメモリ７０６のいずれかとの間、またはメモリ７０６の任意の２つの間、などの通信を容易にする適切なネットワークであり得る。ローカルインタフェース７０９は、例えば、負荷分散の実行を含み、この通信を調整するために設計された追加のシステムを含み得る。プロセッサ７０３は、電気的、または何らかの他の利用可能な構造であり得る。
【００６６】
開発者ポータルシステム１１８、アプリケーションインジェスチョンサービス１２１、アプリケーション市場システム１２４、互換性評価サービス１２７、クライアントアプリケーション１６０（図１）、および本明細書で説明する他の様々なシステムは、前述のように、ソフトウェア、または汎用ハードウェアで実行されるコードで実施され得るが、代替として、同じものが、専用ハードウェアまたはソフトウェア／汎用ハードウェアと専用ハードウェアの組合せでも実施され得る。専用ハードウェアで実施される場合、各々は、いくつかの技術のいずれか１つまたはいくつかの技術の組合せを採用する回路または状態機械として実装できる。これらの技術は、１つもしくは複数のデータ信号の適用時に様々な論理関数を実装するための論理ゲートを有する離散論理回路、適切な論理ゲートを有する特定用途向け集積回路、または他の構成要素などを含み得るが、それらに限定されない。かかる技術は一般に、当業者によって良く知られており、それ故、本明細書では詳細に説明しない。
【００６７】
図３〜図６の流れ図は、アプリケーションインジェスチョンサービス１２１、アプリケーション市場システム１２４、および互換性評価サービス１２７の部分の実施態様の機能および動作を示す。ソフトウェアで実施される場合、各ブロックは、指定された論理関数（複数可）を実装するためのプログラム命令を含むモジュール、セグメント、またはコードの部分を表し得る。プログラム命令は、コンピュータシステムまたは他のシステム内のプロセッサ７０３などの適切な実行システムによって認識可能な数値命令を含む、プログラミング言語で書かれた人間が可読な命令を含むソースコードまたは機械コードの形式で実施され得る。機械コードは、ソースコードなどから変換され得る。ハードウェアで実施される場合、各ブロックは、指定された論理関数（複数可）を実装するための回路またはいくつかの相互接続回路を表し得る。
【００６８】
図３〜図６の流れ図は、実行の特定の順序を示すが、実行順序は、示されるものとは異なり得ることが理解される。例えば、２つ以上のブロックの実行順序は、示される順序に対して混ぜられ得る。また、図３〜図６に連続して示される２つ以上のブロックは、同時に、または一部同時に実行され得る。さらに、いくつかの実施形態では、図３〜図６に示されるブロックの１つまたは複数は、スキップまたは省略され得る。加えて、任意の数のカウンタ、状態変数、警告セマフォ、またはメッセージが、強化された有用性、課金、性能測定、またはトラブルシューティング支援の提供などを目的として、本明細書で説明する論理の流れに追加され得る。全てのかかる変形は、本開示の範囲内であることが理解される。
【００６９】
また、ソフトウェアまたはコードを含む、開発者ポータルシステム１１８、アプリケーションインジェスチョンサービス１２１、アプリケーション市場システム１２４、互換性評価サービス１２７、およびクライアントアプリケーション１６０を含む、本明細書で説明する任意の論理またはアプリケーションは、コンピュータシステムまたは他のシステム内の、例えば、プロセッサ７０３などの、命令実行システムによる使用、または命令実行システムに関連した使用のために、任意の持続性コンピュータ可読媒体で実施できる。この意味で、論理は、例えば、コンピュータ可読媒体からフェッチして、命令実行システムによって実行できる、命令および宣言を含む、文を含み得る。本開示のコンテキストでは、「コンピュータ可読媒体」は、命令実行システムによる使用、または命令実行システムに関連した使用のために、本明細書で説明する論理またはアプリケーションを包含するか、格納するか、または保持する任意の媒体であり得る。
【００７０】
コンピュータ可読媒体は、例えば、磁気媒体、光媒体、または半導体媒体などの、多数の物理媒体のうちの任意の１つを含み得る。適切なコンピュータ可読媒体のさらに具体的な例は、磁気テープ、磁気フロッピィディスケット、磁気ハードドライブ、メモリカード、ソリッドステートドライブ、ＵＳＢフラッシュドライブ、または光ディスクを含み得るが、それらに限定されない。また、コンピュータ可読媒体は、例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ）およびダイナミックランダムアクセスメモリ（ＤＲＡＭ）、または磁気ランダムアクセスメモリ（ＭＲＡＭ）を含む、ランダムアクセスメモリ（ＲＡＭ）であり得る。加えて、コンピュータ可読媒体は、読取り専用メモリ（ＲＯＭ）、プログラマブル読取り専用メモリ（ＰＲＯＭ）、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブル読取り専用メモリ（ＥＥＰＲＯＭ）、または他の同様のメモリ装置であり得る。
【００７１】
前述は、少なくとも、以下の例示的な付記項を含む。
【００７２】
付記項１．コンピュータ装置内で実行可能なプログラムを実施する持続性コンピュータ可読媒体であって、モバイルアプリケーションを開発者から取得するコード；モバイルアプリケーションに対する複数のアプリケーション要件を自動的に判断するコード；互換性式をアプリケーション要件から生成するコード；モバイル機器に関連付けられた機能のセットを取得するコード；評価結果を生成するために機能のセットに少なくとも一部基づき互換性式の評価を実行するコード；評価結果に従って、モバイルアプリケーションがモバイル機器と互換性があるかを判断するコード；およびモバイルアプリケーションをユーザーによりモバイル機器上にインストールするために取得するのを容易にするユーザーインタフェースを生成するコード；を含む、持続性コンピュータ可読媒体。
【００７３】
付記項２．評価結果をキャッシュするコードをさらに含む、付記項１に記載の持続性コンピュータ可読媒体。
【００７４】
付記項３．互換性式が後置式であり、かつ評価を実行するコードがスタックを使用して評価を実行するように構成される、付記項１に記載の持続性コンピュータ可読媒体。
【００７５】
付記項４．機能セット識別子をモバイル機器から取得するコードをさらに含み、機能のセットを取得するコードが、機能セット識別子に従って、機能のセットをデータストアからロードするように構成される、付記項１に記載の持続性コンピュータ可読媒体。
【００７６】
付記項５．少なくとも１つのコンピューティング装置；および少なくとも１つのコンピューティング装置内で実行可能な少なくとも１つのアプリケーションを備えるシステムであって、少なくとも１つのアプリケーションが：アプリケーションのセットを判断する論理；特定のクライアントと互換性のないアプリケーションを除外するためにアプリケーションのセットをフィルタ処理する論理であって、フィルタ処理する論理が、特定のクライアントに対する機能セットを判断し、アプリケーションのセットのうちの各１つに対して対応する互換性式を取得し、アプリケーションのセットの各１つが特定のクライアントと互換性があるかを判断するために機能セットを使用して対応する互換性式の評価を実行するように構成されている、アプリケーションのセットをフィルタ処理する論理；およびフィルタ処理されているアプリケーションのセットを返す論理を含む、システム。
【００７７】
付記項６．少なくとも１つのアプリケーションが、フィルタ処理されているアプリケーションのセットのいずれかの購入を容易にするユーザーインタフェースを生成する論理をさらに含み、特定のクライアントと互換性のないアプリケーションが、ユーザーインタフェースを通じて選択から除外されている、付記項５に記載のシステム。
【００７８】
付記項７．特定のクライアントと互換性のないアプリケーションが、ユーザーインタフェース内で表示されるのから除外される、付記項６に記載のシステム。
【００７９】
付記項８．アプリケーションのセットが、モバイルアプリケーションのセットに対応し、かつ、クライアントがモバイル機器に対応する、付記項５に記載のシステム。
【００８０】
付記項９．少なくとも１つのアプリケーションが、開発者提供のアプリケーションを取得する論理；開発者提供のアプリケーションに対する複数のアプリケーション要件を自動的に判断する論理；アプリケーション要件に少なくとも一部基づき、開発者提供のアプリケーションに対して対応する互換性式を自動的に生成する論理；および開発者提供のアプリケーションに関連付けられた対応する互換性式を格納する論理、をさらに含む、付記項５に記載のシステム。
【００８１】
付記項１０．対応する互換性式を自動的に生成する論理が、複数のビジネスルールに少なくとも一部基づき、対応する互換性式を生成するように構成されている、付記項９に記載のシステム。
【００８２】
付記項１１．フィルタ処理する論理が、評価要求のバッチを互換性評価サービスにネットワークを経由して送信するように構成されていて、互換性評価サービスが評価を実行するように構成され、評価要求の各々が、アプリケーションのセットのそれぞれ１つに対する対応する識別子および機能セットに対する識別子を指定する、付記項５に記載のシステム。
【００８３】
付記項１２．少なくとも１つのアプリケーションが、互換性評価サービスからネットワークを経由して取得された評価要求のバッチに対する複数の応答をキャッシュする論理をさらに含み、フィルタ処理する論理が、要求を互換性評価サービスに送信する代わりに、別の評価に対してキャッシュされている応答のうちの少なくとも１つを利用するようにさらに構成されている、付記項１１に記載のシステム。
【００８４】
付記項１３．少なくとも１つのアプリケーションが、特定のクライアントから機能セットを取得する論理；機能セットが、データストア内に格納された機能セットのいずれかと一致するかを判断する論理；機能セットがデータストア内に格納されたいずれの機能セットとも一致しないという判断に応答して、その機能セットをデータストア内に格納する論理；および機能セットの識別子を特定のクライアントと関連付ける論理；をさらに含む、付記項５に記載のシステム。
【００８５】
付記項１４．少なくとも１つのアプリケーションが、検索クエリーをユーザーから取得する論理、およびアプリケーションのセットが、検索クエリーの実行に少なくとも一部基づき、アプリケーションのセットを判断するように構成されていると判断する論理をさらに含む、付記項５に記載のシステム。
【００８６】
付記項１５．評価が、各対応する互換性式内の複数のオペランド変数の各々に対して機能セットからそれぞれの定数を置換することを含む、付記項５に記載のシステム。
【００８７】
付記項１６．対応する互換性式が、複数の項を含む後置式であり、フィルタ処理する論理が、スタックを使用して後置式を評価するように構成されている、付記項５に記載のシステム。
【００８８】
付記項１７．対応する互換性式の評価が；後置式内の項の各１つに対して：項の１つが演算子かオペランドかを判断すること；項の１つがオペランドであるという判断に応答して、オペランドをスタック上にプッシュすること；項の１つが演算子であるという判断に応答して、いくつかのオペランドをスタックからポップすること；演算子をいくつかのオペランドに適用することにより結果を生成すること；および結果をスタック上にプッシュすることを含む、付記項１６に記載のシステム。
【００８９】
付記項１８．クライアントコンピューティング装置において、アプリケーションのリストに対する要求をアプリケーション市場システムに送信するステップであって、要求がクライアント識別子を含み、クライアント識別子がアプリケーション市場システムで登録されたクライアント機能のセットと関連付けられている、アプリケーションのリストに対する要求をアプリケーション市場システムに送信するステップ；クライアントコンピューティング装置において、アプリケーションのリストをアプリケーション市場システムから取得するステップであって、アプリケーションのリストがクライアント機能のセットと互換性のないアプリケーションを除外するためにフィルタ処理されている、アプリケーションのリストをアプリケーション市場システムから取得するステップ；および、クライアントコンピューティング装置において、フィルタ処理されているアプリケーションのリストを提示するように構成されたユーザーインタフェースをレンダリングするステップ；を含む方法。
【００９０】
付記項１９．要求が、クライアントコンピューティング装置の少なくとも１つの可変機能特性をさらに含む、付記項１８に記載の方法。
【００９１】
付記項２０．少なくとも１つの可変機能特性がオペレーティングシステムのバージョンを含む、付記項１９に記載の方法。
【００９２】
付記項２１．少なくとも１つの可変機能特性が、クライアントコンピューティング装置に対する現在の無線通信事業者を含む、付記項１９に記載の方法。
【００９３】
付記項２２．クライアントコンピューティング装置において、クライアントコンピューティング装置に対するクライアント機能のセットを定期的に発見するステップ；およびクライアントコンピューティング装置において、アプリケーション市場システムで発見されているクライアント機能のセットを登録するステップ；をさらに含む、付記項１８に記載の方法。
【００９４】
付記項２３．ユーザーインタフェースが、クライアントコンピューティング装置上へのインストールのためにアプリケーションのリストのうちのいずれかの取得を容易にするように構成されている、付記項１８に記載の方法。
【００９５】
付記項２４．アプリケーションのリストが、クライアント識別子と関連付けられた機能のセットを使用して、アプリケーションのリストのうちの各１つに対する対応する互換性式を評価することによりフィルタ処理される、付記項１８に記載の方法。
【００９６】
付記項２５．要求が、アプリケーション市場システム内で実行される場合に、アプリケーションのリストを生成する検索クエリーを含む、付記項１８に記載の方法。
【００９７】
付記項２６．クライアントコンピューティング装置において、フィルタ処理されているアプリケーションのリストをキャッシュするステップ；およびクライアントコンピューティング装置において、キャッシュされているアプリケーションのリストから少なくとも１つのアプリケーションを提示するように構成された別のユーザーインタフェースをレンダリングするステップ；をさらに含む、付記項１８に記載の方法。
【００９８】
本開示の前述した実施形態は、本開示の原理の明確な理解のために記載された実施態様の考えられる例に過ぎないことが強調されるべきである。多数の変形および修正が、本開示の精神および原理から実質的に逸脱することなく、前述の実施形態（複数可）に対して行われ得る。全てのかかる修正および変形は、本明細書で本開示の範囲内に含まれ、次の請求項によって保護されることを意図する。
【００９９】
関連出願の相互参照
以下の出願は、出願番号１３／５４０，０４５号を有する、２０１２年７月２日に出願された「ＥＶＡＬＵＡＴＩＮＧ  ＡＰＰＬＩＣＡＴＩＯＮ  ＣＯＭＰＡＴＩＢＩＬＩＴＹ」という名称の米国特許出願に対する優先権、およびその利益を主張し、それは、全体として参照により本明細書に組み込まれる。
【図１】
0005986312.tif 000002
【図２】
0005986312.tif 000003
【図３】
0005986312.tif 000004
【図４】
0005986312.tif 000005
【図５】
0005986312.tif 000006
【図６】
0005986312.tif 000007
【図７】
0005986312.tif 000008