(57)【要約】【課題】クライアントアプリケーションのためのサービスの提供方法を改良する。【解決手段】一実施形態では、方法は、アプリケーションからサービスへのアクセスのための要求を受信することを含む。アプリケーションは、サービスにアクセスするためのソフトウェアを各々が含む複数のアプリケーションのうちの１つである。方法は、サービスにアクセスするために使用するアプリケーションのうちの１つを選択すること、サービスにアクセスするために選択されたアプリケーションのソフトウェアを介して要求元のアプリケーションにサービスへのアクセスを提供することを含む。【選択図】  図２
2018060580.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアを実施形態化する１つまたは複数のコンピュータ可読の非一時的記憶媒体であって、前記ソフトウェアは、実行時に
クライアントデバイスの複数のアプリケーションのうちの１つからサービスへのアクセスのための要求を受信し、前記複数のアプリケーションの各々が前記サービスにアクセスするためのソフトウェアを含み、
前記サービスへのアクセスを提供するために前記複数のアプリケーションの１つを選択し、
前記サービスにアクセスするために選択されたアプリケーションのソフトウェアを介して要求元のアプリケーションに前記サービスへのアクセスを提供するように動作可能である媒体。
【請求項２】
前記サービスがプッシュサービスを含む、請求項１に記載の媒体。
【請求項３】
前記複数のアプリケーションのうちの１つまたは複数が、前記ソフトウェアをさらに備え、前記ソフトウェアは、実行時に、
前記サービスにアクセスするためのアプリケーションから要求を受信し、該アプリケーションは、前記サービスにアクセスするためのソフトウェアをそれぞれが含む複数のアプリケーションのうちの１つを含み、
前記サービスにアクセスするために使用する前記複数のアプリケーションのうちの１つを選択し、
前記サービスにアクセスするために使用されるものと決定されたアプリケーションを介して要求元のアプリケーションに前記サービスへのアクセスを提供するように動作可能である、請求項１に記載の媒体。
【請求項４】
実行時に前記サービスにアクセスするために使用する前記複数のアプリケーションのうちの１つを選択するように実行可能な前記ソフトウェアは、実行時に１つまたは複数の基準に基づいて前記サービスへのアクセスに使用する前記複数のアプリケーションのうちの１つを決定するように更に動作可能なソフトウェアを含む、請求項１に記載の媒体。
【請求項５】
前記基準は、前記サービスにアクセスするための前記ソフトウェアのプロトコルバージョンを識別する情報を含む、請求項４に記載の媒体。
【請求項６】
前記基準は、前記複数のアプリケーションのうちの１つアプリケーションの属性を含む、請求項４に記載の媒体。
【請求項７】
前記属性は、前記複数のアプリケーションの１つが常駐するクライアントデバイス上のデータにアクセスするための１つまたは複数の権限を含む、請求項６に記載の媒体。
【請求項８】
前記基準は、前記サービスにアクセスするための前記ソフトウェアのバージョンを識別する情報を含む、請求項４に記載の媒体。
【請求項９】
前記基準は、
前記サービスにアクセスするためのソフトウェアのプロトコルバージョンを識別する情報を含む第１の基準と、
前記複数のアプリケーションのうちの１つアプリケーションの属性を含む第２の基準と、
前記サービスにアクセスするための前記ソフトウェアのバージョンを識別する情報を含む第３の基準とを含み、
前記第１の基準が前記第２の基準よりも優先され、前記第２の基準が前記第３の基準よりも優先される、請求項４に記載の媒体。
【請求項１０】
実行時に前記要求元のアプリケーションに前記サービスへのアクセスを提供するように動作可能な前記ソフトウェアは、実行時に
前記サービスにアクセスするために使用される前記アプリケーションが少なくともクライアントデバイス上のバックグラウンドで動作しているかどうかを決定し、
アプリケーションが少なくともクライアントデバイス上のバックグラウンドで動作していない場合には、前記サービスにアクセスするためのソフトウェアを含むアプリケーションの少なくとも一部をクライアントデバイスによって実行させるように更に動作可能なソフトウェアを含む、請求項１に記載の媒体。
【請求項１１】
実行時に前記サービスにアクセスするためのソフトウェアを含む前記アプリケーションの少なくとも一部を前記クライアントデバイスによって実行させるように動作可能な前記ソフトウェアは、実行時に前記サービスにアクセスするためのソフトウェアを含むアプリケーションの一部のみを前記クライアントデバイスによって実行させるように更に動作可能なソフトウェアを含む、請求項１０に記載の媒体。
【請求項１２】
実行時に前記サービスにアクセスするために使用する前記複数のアプリケーションのうちの１つを選択するように動作可能な前記ソフトウェアは、実行時に
前記サービスにアクセスするために使用する前記複数のアプリケーションの１つを選択するための選択サービスに前記サービスにアクセスする要求を提出し、
前記選択サービスから、選択されたアプリケーションの識別情報を受信するように更に動作可能なソフトウェアを含む、請求項１に記載の媒体。
【請求項１３】
各アプリケーションは、前記選択サービスのインスタンスをさらに含み、
実行時に前記サービスにアクセスする要求を選択サービスに提出するように動作可能な前記ソフトウェアは、実行時に
前記選択サービスのインスタンスのうちの１つを選択し、
前記選択サービスの選択されたインスタンスに要求を提出するように更に動作可能なソフトウェアを含む、請求項１２に記載の方法。
【請求項１４】
実行時に前記選択サービスのインスタンスの１つを選択するように動作可能な前記ソフトウェアは、実行時に１つまたは複数の基準に基づいて前記選択サービスのインスタンスを選択するように更に動作可能なソフトウェアを含み、前記基準は、
前記選択サービスのインスタンスのプロトコルバージョンを識別する情報を含む第１の基準と、
前記選択サービスのインスタンスを含むアプリケーションの属性を含む第２の基準と、
前記選択サービスのインスタンスのバージョンを識別する情報を含む第３の基準とを含む、請求項１３に記載の方法。
【請求項１５】
実行時にサービスにアクセスするためのアプリケーションから要求を受信するように実行可能な前記ソフトウェアは、実行時に前記アプリケーションがクライアントデバイス上で動作しているという通知を受信するように更に動作可能なソフトウェアを含む、請求項１に記載の媒体。
【請求項１６】
実行時にサービスにアクセスするためのアプリケーションから要求を受信するように動作可能な前記ソフトウェアは、実行時に前記複数のアプリケーションのうちの１つがクライアントデバイスにインストールされたという通知を受信するように更に動作可能なソフトウェアを含む、請求項１に記載の媒体。
【請求項１７】
実行時にサービスにアクセスするためのアプリケーションから要求を受信するように動作可能な前記ソフトウェアは、実行時に前記複数のアプリケーションのうちの１つに対する更新がクライアントデバイスにインストールされたという通知を受信するように更に動作可能なソフトウェアを含む、請求項１に記載の媒体。
【請求項１８】
方法であって、
コンピューティングデバイスが、クライアントデバイスの複数のアプリケーションのうちの１つからサービスへのアクセスのための要求を受信するステップであって、前記複数のアプリケーションの各々が前記サービスにアクセスするためのソフトウェアを含む、前記受信するステップと、
前記コンピューティングデバイスが、前記サービスにアクセスするために使用する前記複数のアプリケーションの１つを選択するステップと、
前記コンピューティングデバイスが、前記サービスにアクセスするために選択されたアプリケーションのソフトウェアを介して要求元のアプリケーションに前記サービスへのアクセスを提供するステップと
を含む方法。
【請求項１９】
前記サービスにアクセスするために使用する前記複数のアプリケーションの１つを選択するステップは、１つまたは複数の基準に基づいて前記サービスへのアクセスに使用する前記複数のアプリケーションのうちの１つを決定することを含み、
前記基準は、
前記サービスにアクセスするためのソフトウェアのプロトコルバージョンを識別する情報を含む第１の基準と、
前記複数のアプリケーションのうちの１つアプリケーションの属性を含む第２の基準と、
前記サービスにアクセスするための前記ソフトウェアのバージョンを識別する情報を含む第３の基準とを含み、
前記第１の基準が前記第２の基準よりも優先され、前記第２の基準が前記第３の基準よりも優先される、請求項１８に記載の方法。
【請求項２０】
システムであって、
１つまたは複数のプロセッサと、プロセッサに接続され、前記プロセッサにより実行可能な命令を含むメモリとを備え、前記プロセッサは前記命令の実行時に
クライアントデバイスの複数のアプリケーションのうちの１つからサービスへのアクセスのための要求を受信し、前記複数のアプリケーションの各々が前記サービスにアクセスするためのソフトウェアを含み、
前記サービスへのアクセスを提供するために前記複数のアプリケーションの１つを選択し、
前記サービスにアクセスするために選択されたアプリケーションのソフトウェアを介して要求元のアプリケーションに前記サービスへのアクセスを提供するように動作可能である、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、クライアントアプリケーションのためのサービスに関する。
【背景技術】
【０００２】
コンピューティングデバイスは、ゲーム、ウェブブラウザ、メッセージングサービス、またはソーシャルネットワーキングアプリケーションなどのソフトウェアアプリケーションを実行することができる。ソーシャルネットワーキングアプリケーションでは、ユーザは、ソーシャルネットワーク内の他のユーザと情報を連絡し、通信し、共有することができる。アプリケーションは、ハードウェアおよびソフトウェアとインタフェースして、ユーザに機能を提供することができる。例えば、モバイルデバイスは、モバイルデバイス上のグローバルポジショニングシステム（ＧＰＳ：ｇｌｏｂａｌ  ｐｏｓｉｔｉｏｎｉｎｇ  ｓｙｓｔｅｍ）チップセットからの出力など、センサ出力にアクセスしてクライアントデバイスの位置を特定するアプリケーションを含むことができる。別の例として、コンピューティングデバイス上のアプリケーションは、アプリケーションの実行中に、メモリ管理機能などのオペレーティングシステムの機能を使用することができる。
【発明の概要】
【０００３】
クライアントデバイス上のアプリケーションは、ユーザに機能を提供するため、および／またはハードウェアまたはソフトウェアとインタフェースするために、１つまたは複数のサービスを利用することができる。特定の実施形態では、特定のサービスを使用するか、または特定のサービスにアクセスするクライアントデバイス上のアプリケーションのソフトウェアは、アプリケーション用のソフトウェアクライアントおよびサービスのインスタンス（即ち、サービスにアクセスまたはサービスを提供するソフトウェア）の両方を含み得る。特定の実施形態では、複数のアプリケーションのクライアントは、それらのアプリケーションの各々にサービスの独自のインスタンスが含まれていても、プッシュサービスなどのクライアントデバイス上の特定のアプリケーションに関連付けられたサービスの使用を共有するか、またはサービスへのアクセスを共用することができる。
【０００４】
アプリケーションがサービスへのアクセスを要求した後、アプリケーションによってアクセスまたは使用されるべきサービスのインスタンスに関する決定が行われる。使用されるインスタンスは、要求元のアプリケーションに含まれるインスタンスであってもよく、または、代替的に、クライアントデバイス上の別のアプリケーションに関連付けられたインスタンスであってもよい。決定は、任意の適切な基準に基づいて行うことができる。例えば、インスタンスのプロトコルバージョン、インスタンスに関連付けられたアプリケーションの属性、インスタンスのバージョン、またはそれらの任意の組み合わせを使用して、サービスの特定のインスタンスがサービスを要求しているクライアントデバイスの１つまたは複数のアプリケーションによって使用されるべきかどうかが決定される。
【０００５】
特定の実施形態では、サービスは、他のサービスなどのサービスのどのインスタンスを要求元のアプリケーションが使用すべきかを決定する選択サービスとすることができる。選択サービスの複数のインスタンスが存在する場合（例えば、複数のアプリケーションがそれぞれ選択サービスのインスタンスを含む場合）、選択サービスの適切なインスタンスが決定され、かつ要求されたサービスのインスタンスを選択するために使用される。選択サービスのインスタンスは、任意の適切な基準に基づいて選択され、この基準は、限定されるものではないが、上記の基準を含む。
【０００６】
上述した実施形態は一例にすぎず、本開示の範囲はこれらに限定されるものではない。特定の実施形態は、上に開示した実施形態の構成要素、要素、特徴、機能、動作、またはステップの全て、一部を含むか、またはいずれも含まない。本発明による実施形態は、特に、方法、記憶媒体、システム、およびコンピュータプログラム製品に関する添付の特許請求の範囲に開示され、１つの請求項のカテゴリ（例えば、方法）に記載された任意の特徴は、他の請求項のカテゴリ（例えば、システム）においても同様に請求することができる。添付の特許請求の範囲に記載された従属性または特許請求の範囲を裏付ける参照番号は、形式的な理由のためにのみ選択される。しかしながら、何れかの前の請求項（特に、多数項従属性）を意図的に参照した結果生じる主題を同様に請求することができ、添付の請求項において選択された従属性に関係なく、請求項またはその特徴の何れの組み合わせも開示され、かつ請求することができる。請求することができる主題は、添付の特許請求の範囲の請求項に記載された特徴の組み合わせだけでなく、特許請求の範囲の請求項における他の特徴のあらゆる組み合わせをも含み、特許請求の範囲の請求項に記載された各特徴は、請求項における任意の他の特徴とも、または他の特徴の組み合わせとも組み合わせることができる。さらに、本明細書に記載または図示された実施形態および特徴のいずれは、別個の請求項および／または本明細書に記載または図示される任意の実施形態または特徴とも、または添付の特許請求の範囲の請求項の任意の特徴とも組み合わせて請求することができる。
【図面の簡単な説明】
【０００７】
【図１】ソーシャルネットワーキングシステムに関連する例示的なネットワーク環境を示す。
【図２】アプリケーションが使用すべきサービスの２つまたは複数のインスタンスのうちのいずれかのインスタンスを決定するための例示的な方法を示す。
【図３】アプリケーションが使用すべきサービスの２つまたは複数のインスタンスのうちのいずれかのインスタンスを決定するための例示的な方法を示す。
【図４】例示的なコンピュータシステムを示す。
【発明を実施するための形態】
【０００８】
図１は、ソーシャルネットワーキングシステムに関連付けられている例示的なネットワーク環境１００を示す。ネットワーク環境１００は、互いにネットワーク１１０によって接続されたユーザ１０１、クライアントシステム１３０、ソーシャルネットワーキングシステム１６０、およびサードパーティシステム１７０を含む。図１は、ユーザ１０１、クライアントシステム１３０、ソーシャルネットワーキングシステム１６０、サードパーティシステム１７０、およびネットワーク１１０の特定の構成を示すが、この開示は、ユーザ１０１、クライアントシステム１３０、ソーシャルネットワーキングシステム１６０、サードパーティシステム１７０、およびネットワーク１１０の任意の好適な構成を企図する。限定するものとしてではなく一例として、クライアントシステム１３０、ソーシャルネットワーキングシステム１６０、およびサードパーティシステム１７０の２以上は、ネットワーク１１０をバイパスして互いに直接的に接続されてもよい。別の例として、クライアントシステム１３０、ソーシャルネットワーキングシステム１６０、およびサードパーティシステム１７０の２以上が、全体として、または部分的に互いに物理的に、または論理的に同じ場所にあってもよい。さらに、図１は、特定の数のユーザ１０１、クライアントシステム１３０、ソーシャルネットワーキングシステム１６０、サードパーティシステム１７０、およびネットワーク１１０を示すが、この開示は、任意の好適な数のユーザ１０１、クライアントシステム１３０、ソーシャルネットワーキングシステム１６０、サードパーティシステム１７０、およびネットワーク１１０を企図する。限定するものとしてではなく一例として、ネットワーク環境１００は、複数のユーザ１０１、クライアントシステム１３０、ソーシャルネットワーキングシステム１６０、サードパーティシステム１７０、およびネットワーク１１０を含んでもよい。
【０００９】
特定の実施形態では、ユーザ１０１は、ソーシャルネットワーキングシステム１６０と、またはソーシャルネットワーキングシステム１６０を通じて対話、すなわち通信する個人（人間のユーザ）、エンティティ（たとえば、企業、事業者、またはサードパーティアプリケーション）、または（たとえば、個人またはエンティティの）グループであってよい。特定の実施形態では、ソーシャルネットワーキングシステム１６０は、オンラインソーシャルネットワークをホストするネットワークアドレス指定可能なコンピューティングシステムであってよい。ソーシャルネットワーキングシステム１６０は、たとえばユーザプロフィールデータ、コンセプトプロフィールデータ、ソーシャルグラフ情報、またはオンラインソーシャルネットワークに関係する他の好適なデータなど、ソーシャルネットワーキングデータを生成、記憶、受信、および送信する。ソーシャルネットワーキングシステム１６０は、ネットワーク環境１００の他の構成要素によって、直接的に、またはネットワーク１１０を通じてアクセスされてもよい。特定の実施形態では、ソーシャルネットワーキングシステム１６０は、ユーザ１０１がたとえば適切なプライバシ設定を設定することによってなど、自分達のアクションをソーシャルネットワーキングシステム１６０によって記録させる、または他のシステム（たとえば、サードパーティシステム１７０）と共有させることについてオプトインまたはオプトアウトすることを可能にする認可サーバ（または他の適切な構成要素）を含んでもよい。ユーザのプライバシ設定は、そのユーザに関連付けられているどの情報が記録されるか、そのユーザに関連付けられている情報がどのように記録されるか、そのユーザに関連付けられている情報がいつ記録されるか、そのユーザに関連付けられている情報を誰が記録するか、そのユーザに関連付けられている情報が誰と共有されるか、およびそのユーザに関連付けられている情報が何の目的で記録され共有されるかを決定することができる。認可サーバは、ブロッキング、データのハッシュ化、匿名化、または他の適切な技術を通じて、ソーシャルネットワーキングシステム３０のユーザの１以上のプライバシ設定を適切に実施するために用いられる。特定の実施形態では、サードパーティシステム１７０は、ネットワークアドレス指定可能なコンピューティングシステムであってよい。サードパーティシステム１７０は、データを生成、記憶、受信、および送信する。サードパーティシステム１７０は、ネットワーク環境１００の他の構成要素によって、直接的に、またはネットワーク１１０を通じてアクセスされてもよい。特定の実施形態では、１または複数のユーザ１０１が１または複数のクライアントシステム１３０を使用し、ソーシャルネットワーキングシステム１６０またはサードパーティシステム１７０にアクセスし、データを送り、それらからデータを受信してもよい。クライアントシステム１３０は、ソーシャルネットワーキングシステム１６０またはサードパーティシステム１７０に直接的に、ネットワーク１１０を通じて、またはサードパーティシステムを通じてアクセスしてもよい。限定するものとしてではなく一例として、クライアントシステム１３０は、サードパーティシステム１７０にソーシャルネットワーキングシステム１６０を通じてアクセスしてもよい。クライアントシステム１３０は、たとえばパーソナルコンピュータ、ラップトップコンピュータ、携帯電話、スマートフォン、またはタブレットコンピュータなど、任意の好適なコンピューティングデバイスであってよい。
【００１０】
この開示は、任意の好適なネットワーク１１０を企図する。限定するものとしてではなく一例として、ネットワーク１１０の１または複数の部分は、アドホックネットワーク、イントラネット、エクストラネット、仮想プライベートネットワーク（ＶＰＮ）、ローカルエリアネットワーク（ＬＡＮ）、無線ＬＡＮ（ＷＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、無線ＷＡＮ（ＷＷＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、インターネットの一部分、公衆交換電話網（ＰＳＴＮ）の一部分、携帯電話ネットワーク、またはこれらの２以上の組合せを含んでもよい。ネットワーク１１０は、１または複数のネットワーク１１０を含んでもよい。
【００１１】
リンク１５０は、クライアントシステム１３０、ソーシャルネットワーキングシステム１６０、およびサードパーティシステム１７０を通信ネットワーク１１０に、または互いに接続する。この開示は、任意の好適なリンク１５０を企図する。特定の実施形態では、１または複数のリンク１５０は、１または複数の有線（たとえば、デジタル加入者線（ＤＳＬ）またはＤＯＣＳＩＳ（Ｄａｔａ  Ｏｖｅｒ  Ｃａｂｌｅ  Ｓｅｒｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）など）、無線（たとえば、Ｗｉ−ＦｉまたはＷｉＭＡＸ（Ｗｏｒｌｄｗｉｄｅ  ｉｎｔｅｒｏｐｅｒａｂｉｌｉｔｙ  ｆｏｒ  Ｍｉｃｒｏｗａｖｅ  Ａｃｃｅｓｓ）など）、または光（たとえば、同期光ネットワーク（ＳＯＮＥＴ）または同期デジタルハイアラーキ（ＳＤＨ）など）リンクを含む。特定の実施形態では、１または複数のリンク１５０は、それぞれ、アドホックネットワーク、イントラネット、エクストラネット、ＶＰＮ、ＬＡＮ、ＷＬＡＮ、ＷＡＮ、ＷＷＡＮ、ＭＡＮ、インターネットの一部分、ＰＳＴＮの一部分、セルラ技術ベースのネットワーク、衛星通信技術ベースのネットワーク、別のリンク１５０、または２以上のそのようなリンク１５０の組合せを含む。リンク１５０は、必ずしもネットワーク環境１００全体を通じて同じであることを必要としない。１または複数の第１のリンク１５０は、１または複数の点で１または複数の第２のリンク１５０と異なってもよい。
【００１２】
クライアントデバイス上のアプリケーションは、１つまたは複数のサービスを利用して、ユーザに機能を提供し、かつ／またはハードウェアまたはソフトウェアとインタフェースすることができる。例えば、アプリケーションは、１つまたは複数のアプリケーションプログラミングインタフェース（ＡＰＩ）にアクセスして、オペレーティングシステム、他のソフトウェアプログラム（例えば、グラフィックスレンダリングプログラム等）、クライアントデバイス上のハードウェアまたは１つまたは複数のサーバまたは無線ネットワーク通信ポイントなどの外部ハードウェア、またはサーバまたは他の外部またはリモートコンピューティングデバイス上で動作するソフトウェアと通信することができる。ＡＰＩまたはＡＰＩとインタフェースするソフトウェアまたはハードウェアによって提供される機能は、サービスの一例である。例えば、クライアントコンピューティングデバイスは、ＡＰＩを介して外部プッシュサーバと通信してプッシュ通知を受信することができる。プッシュ通知は、１つまたは複数のサーバによって１つまたは複数の特定のアプリケーションに提供されてもよい。例えば、ソーシャルネットワーキングアプリケーションは、ソーシャルネットワーキングシステム上でアプリケーションのユーザに関連するアクティビティが発生したときに、そのアプリケーションに関連付けられたソーシャルネットワーキングシステムの１つまたは複数のサーバからプッシュ通知を受信することができる。別の例として、サービスは、コンピューティングデバイス上のＧＰＳセンサ（またはＧＰＳセンサが出力するデータ）またはコンピューティングデバイスのクロックなど、コンピューティングデバイスのハードウェアまたはソフトウェア機能へのアクセスを含むことができる。本開示はサービスの特定の例を記載しているが、本開示は任意の適切なサービスを企図する。
【００１３】
特定の実施形態では、サービスを使用するか、またはサービスにアクセスするアプリケーションのソフトウェアは、クライアントおよびサービスのインスタンス（例えば、サービスにアクセスまたはサービスを提供するためのソフトウェア）を含み得る。例えば、メッセージングアプリケーションは、プッシュサービスにアクセスするためのメッセージングクライアントおよび１つまたは複数のＡＰＩを含み、ナビゲーションアプリケーションは、プッシュサービスにアクセスするためのナビゲーションクライアントを含むとともに、１つまたは複数のＡＰＩも含み、各ケースにおけるプッシュサービスは、同じ（または関連する）通信プロトコルを使用して同じ（または関連する）サーバとの通信によって提供される。例えば、メッセージングアプリケーションおよびナビゲーションアプリケーションは、いずれの場合もプッシュ通知が、例えばソーシャルネットワーキングシステムの同じサーバによって提供されにもかかわらず、プッシュサービスのそれぞれ独自の関連するインスタンスをそれぞれ使用して通知を受信する。
【００１４】
特定の実施形態では、それらのアプリケーションの各々がその特定のサービスの独自のインスタンスを含む場合であっても、複数のアプリケーションがプッシュサービスのようなサービスの特定のインスタンスの使用を共有するか、または特定のインスタンスへのアクセスを共有する。換言すれば、いくつかのアプリケーションは、各々サービスのインスタンスを含み、更に、２つまたは複数のアプリケーションはサービスの複数のインスタンスのうちの特定の１つのインスタンスを介してサービスにアクセスすることができる。例えば、それらのアプリケーションの各々が、プッシュサーバと通信する性能（例えば、それら独自の必要なソフトウェアのインスタンスを含むか、またはアクセスすること）を含んでいても、１つのアプリケーションに関連付けられたプッシュサービスのインスタンスは、１つまたは複数のプッシュサーバと通信して、複数のアプリケーションにプッシュサービスを提供することができる。したがって、特定の実施形態では、１つのアプリケーションは、サーバと通信するようにオープン状態のソケットを有し、サーバからのデータは、複数のアプリケーションにサービスを提供するために単一のソケット接続を通じて多重化される（ｍｕｌｔｉｐｌｅｘｅｄ）。
【００１５】
図２は、アプリケーションが使用すべきサービスの２つまたは複数のインスタンスのうちのいずれかを決定するための例示的な方法２００を示す。この方法は、任意の適切なソフトウェアによって実行することができる。例えば、クライアントコンピューティングデバイス上の全てのまたは一部のアプリケーションは、方法２００を実行することができる。別の例として、クライアントコンピューティングデバイス上の全てのまたは一部のアプリケーションは、別のアプリケーションなどの方法を実行するソフトウェアにアクセスする。例えば、本明細書でより十分に説明するように、方法２００は、デバイス上の１つまたは複数のアプリケーションによってアクセス可能な独立した選択サービスによって実行することができる。
【００１６】
図２の方法は、ステップ２１０で開始され、サービスにアクセスするためのアプリケーションからの（例えば、選択サービスにアクセスするためのアプリケーションのクライアントからの）の要求が、例えば、選択サービスのインスタンスまたは選択サービスのインスタンスに関連付けられたソフトウェアによって受信される。上述のように、要求は、要求を提出するアプリケーションの一部である選択サービスのインスタンスによって受信されてもよい。言い換えると、要求を受信することは、その選択サービスに関連するアプリケーションによって生成された要求を選択サービスによって受信することを含むことができる。特定の実施形態では、サービスへのアクセスの要求は、アプリケーションがクライアントデバイス上で起動されるたびにアプリケーションによって行われる。言い換えれば、クライアントデバイスのバックグラウンドまたはフォアグラウンドで動作しているかどうかにかかわらず、クライアントデバイス上のランダムアクセスメモリにロードされているアプリケーションは、アプリケーションによって１つまたは複数のサービスに対する要求を生成する。例えば、ソーシャルネットワーキングアプリケーションがクライアントデバイス上にロードされるたびに、アプリケーションは、アプリケーションに関連するプッシュ通知を受信するために、プッシュサービスへのアクセスのための要求を提出する。別の例として、ソーシャルネットワーキングアプリケーションがクライアントデバイスにロードされるたびに、ソーシャルネットワーキングアプリケーションによるプッシュサービスへのアクセスの要求を構成するイベントの通知を方法２００を実施するソフトウェアに提供してもよい。
【００１７】
特定の実施形態では、サービスのインスタンスを含むアプリケーションがデバイスにインストールされるたびに、インストールは、アプリケーションがサービスにアクセスするための要求として選択サービスによって（またはインストールを監視し、かつ選択サービスによってアクセス可能なソフトウェアによって）解釈される。例えば、複数のアプリケーションが、特定のアプリケーションに関連付けられたプッシュサービスのインスタンスへのアクセスを共有していると想定する。換言すれば、特定のアプリケーションに関連するプッシュサービスのインスタンスは、クライアントデバイス上の各アプリケーションがプッシュサービスのためにアクセスすべきインスタンスであると決定される。プッシュサービスのインスタンスを有する別のアプリケーションがクライアントデバイスにインストールされると、その新たにインストールされたインスタンスは、アプリケーションが使用するための適切なインスタンスとなり得る。その理由は、例えば、新たにインストールされたアプリケーションに関連するサービスは、そのサービスの最新のインスタンスであり得るからである。従って、インストールは、例えば、図２の例示的な決定方法を実行することによって、プッシュサービスのどのインスタンスを使用するかの決定（インストールされたばかりのアプリケーションを含む、いくつかまたは全てのインストールされたアプリケーションを考慮した決定）をトリガする。サービスのインスタンスを使用する全てまたはいくつかのアプリケーションが、アプリケーションのインストール時にサービスへのアクセスに対する独自の要求を提出するか、あるいは、代替的に、アプリケーションのインストールがサービスにアクセスするためのサービスを用いる全てまたはいくつかのアプリケーションからの要求とみなされる。
【００１８】
特定の実施形態では、サービスのインスタンスを含むアプリケーションがデバイス上で更新されるたびに、更新は、そのアプリケーションがサービスにアクセスする要求として解釈される。特定の実施形態では、サービスのインスタンスを含むアプリケーションが更新されるたびに、更新は、アプリケーションがアクセスする要求として、選択サービスによって（または、更新を監視し、かつ選択サービスによってアクセス可能なソフトウェアによって）解釈される。例えば、複数のアプリケーションが、特定のアプリケーションに関連付けられたプッシュサービスのインスタンスへのアクセスを共有していると想定する。換言すれば、特定のアプリケーションに関連するプッシュサービスのインスタンスは、クライアントデバイス上の各アプリケーションがプッシュサービスのためにアクセスすべきインスタンスであると決定される。プッシュサービスのインスタンスを有する別のアプリケーションがクライアントデバイス上で更新されると、アプリケーションが使用するための適切なインスタンスとなり得る。その理由は、例えば、新たに更新されたアプリケーションに関連するサービスは、そのサービスの最新のインスタンスであり得るからである。従って、更新は、例えば、図２の例示的な決定方法を実行することによって、プッシュサービスのどのインスタンスを使用するかの決定（いくつかのまたは全てのアプリケーション、またはいくつかまたは全ての更新されたばかりのアプリケーションを考慮した決定）をトリガする。サービスのインスタンスを使用する全てまたはいくつかのアプリケーションは、アプリケーションが更新されたときにサービスへのアクセスのための独自の要求を提出するか、あるいは、代替的に、アプリケーションの更新がサービスにアクセスするためのサービスを用いる全てまたはいくつかのアプリケーションのからの要求とみなされる。特定の実施形態では、要求が、更新されるアプリケーションに含まれるサービスのインスタンスに更新が少なくとも部分的に適用されるとき（例えば、サービスのインスタンスが更新されるとき）に行われる。
【００１９】
ステップ２２０において、ステップ２１０において要求されたサービスのインスタンスを含む１つのアプリケーションが選択される。特定の実施形態では、サービスの所望のインスタンス（例えば、サービスのその所望のインスタンスを含むアプリケーション）は、選択サービスに要求を提出することによって選択され、その選択サービスは、要求元のアプリケーションに含まれるソフトウェアであるか、または要求元のアプリケーション（例えば、独立したアプリケーション）とは無関係のソフトウェアであり得る。選択サービスは、サービスにアクセスするために使用するアプリケーション（例えば、サービスの所望のインスタンスを含むアプリケーション）を決定し、そのアプリケーションの識別情報を返信する。特定の実施形態では、選択サービスは、それ自体が、例えば例示的な方法２００を使用して選択サービスのどのインスタンスを使用するかを決定してアプリケーションに対するサービスを選択するようにアプリケーションに対して選択されたサービスである。特定の実施形態では、サービスのインスタンスに関連付けられたアプリケーションを識別するデジタル署名または他のデータをチェックして、例えば、アプリケーションが既知または信頼できるアプリケーションであることを確認する。
【００２０】
特定の実施形態では、サービスにアクセスするために使用するアプリケーションは、１つまたは複数の所定の基準に従って決定されてもよい。例えば、基準は、サービスのインスタンスのプロトコルバージョンを含むことができる。特定の実施形態では、プロトコルバージョンは、サービスのインスタンスが、サービスを提供するサーバまたは他の外部コンピューティングデバイス上のソフトウェアのバージョンなど、サービスの特定のバージョンに対応していることを示し得る。例えば、プッシュサービスの場合、プロトコルバージョンは、プッシュサービスを提供するサーバ上のソフトウェアのバージョン、サーバとクライアントデバイスとの間で情報を通信するために使用されるプロトコルのバージョン、またはその両方に対応し得る。より高いプロトコルバージョンは、クライアントデバイス上のプッシュサービスのインスタンスが、プッシュサービスをサーバに提供するソフトウェア（プッシュサービスにアクセスするために使用される通信プロトコルを含む）と互換性があること、またはインスタンスがソフトウェアまたは通信プロトコルのバージョンに対応する増強された機能（例えば、セキュリティ機能など）を提供することができることを示す。
【００２１】
特定の実施形態では、サービスの使用するインスタンスを決定するための基準は、サービスのインスタンスを含むアプリケーションの属性またはアスペクト（ａｓｐｅｃｔ）を含むことができる。例えば、あるアプリケーションは、他のサービスよりもサービスにアクセスするのにより望ましいものであることがある。例えば、データ、ハードウェア、またはソフトウェアにアクセスする権限が小さいアプリケーションを上回る、データ、ハードウェア、またはソフトウェアにアクセス（センサ出力へのアクセスなど）する権限が大きいアプリケーションを選択することができる。特定の実施形態では、クライアントコンピューティングデバイスに予めインストールされたアプリケーションは、ユーザがインストールするアプリケーションよりも大きい権限を有し得る。特定の実施形態では、アプリケーションは、ユーザの設定またはユーザの嗜好に基づいてより大きい権限を有し得る。特定の実施形態では、属性はアプリケーションのタイプを含み得る。例えば、所望のサービスがメッセージングに関係する場合、メッセージングアプリケーションのサービスのインスタンスが使用するのにより望ましい。特定の実施形態では、属性は、アプリケーションの開発者または発行者を含み得る。例えば、サービスへのアクセスを望むアプリケーションは、要求するアプリケーションを設計、製作、または配布した同じ開発者または発行者によって設計、製作、または配布されるアプリケーションの一部であるサービスのインスタンスを使用することが好ましい。本開示は、サービスのインスタンスを選択するために使用される任意の適切な属性を企図する。特定の実施形態では、使用される属性は、例えば、デバイスのユーザによって、またはサービスの使用するインスタンスを決定するソフトウェアに対する更新によって交換または変更されてもよい。
【００２２】
特定の実施形態では、サービスの使用するインスタンスを決定する基準は、サービスにアクセスするために使用されるアプリケーションのバージョンを識別する情報を含み得る。特定の実施形態では、バージョンは、サービスのインスタンスのバージョンであり得る。アプリケーションまたはサービスのバージョンは、アプリケーションまたはサービスに対するソフトウェア更新に対応する。したがって、直近の更新アプリケーション（特定の実施形態では、直近の更新されたサービスのインスタンス）は、最新のアプリケーション（またはサービス）のバージョンに更新されていないアプリケーション（またはサービスのインスタンス）から選択することができる。
【００２３】
特定の実施形態では、サービスのインスタンスを決定するために使用される基準は、ランク付けまたは重み付けされてもよい。例えば、基準は、１）サービスのインスタンスのプロトコルバージョン、２）サービスのインスタンスを含むアプリケーションの属性またはアスペクト、３）サービスにアクセスするために使用されたアプリケーションのバージョンを識別する情報を含むことができる。１）に対応する基準は、２）に対応する基準よりも優先することができ、２）に対する基準は、３）に対応する基準よりも優先することができる。言い換えれば、より高いプロトコルバージョンを有するサービスのインスタンスは、より所望の属性を有するアプリケーションに関連するサービスのインスタンスより常に選択されてもよい。特定の実施形態では、より低いプロトコルバージョンを有する場合であっても非常に望ましい属性を有するアプリケーションが選択されるように、基準が重み付けされてもよい。本開示は、任意の適切な基準をランク付けまたは重み付けするための任意の適切な方法を企図する。
【００２４】
ステップ２３０で、サービスへのアクセス（例えば、ステップ２２０で選択されたサービスのインスタンス）が、要求元のアプリケーションに提供される。特定の実施形態では、アプリケーションが既にサービスのインスタンスを介してサービスにアクセスしており、かつどのインスタンスが適切なものであるかの決定が行われた場合（例えば、サービスのインスタンスがクライアントデバイス上で更新された場合）、ステップ２３０は、アプリケーションがすでに使用しているインスタンスが適切なインスタンスであることを決定することを含む。特定の実施形態では、ステップ２３０は、使用されるインスタンスを含むアプリケーションが少なくともクライアントデバイスのバックグラウンドで動作しているかどうかを決定することを含む。アプリケーションが少なくともクライアントデバイスのバックグラウンドで実行されていない場合、ステップ２３０は、要求元のアプリケーションがサービスの所望のインスタンスにアクセスできるように、クライアントデバイスのバックグラウンドにアプリケーションをロードすることを含む。特定の実施形態では、アプリケーションをロードすることは、所望のサービスを実施するために必要なアプリケーションの一部のみをロードすることを含んでもよい。言い換えれば、所望のサービスを使用する必要がないアプリケーションの他の実行可能な部分は、クライアントデバイスのバックグラウンドにロードされなくてもよい。特定の実施形態では、ステップ２３０は、アプリケーションがサービスにアクセスするために使用していたが、もはや使用するのに所望のインスタンスではない、サービスのインスタンスまたはサービスのインスタンスを含むアプリケーションを閉じることを含む。
【００２５】
特定の実施形態は、適切な場合、図２の方法の１つまたは複数のステップを繰り返すことができる。本開示は、図２の方法の特定のステップを説明しかつ例示しているが、本開示は、任意の適切な順序で生じる図２の方法の任意の適切なステップを企図している。さらに、本開示は、図２の方法の特定のステップを含む、アプリケーションが使用すべきサービスの２つまたは複数のインスタンスのうちのどれを決定するかの一例の方法を説明し例示するが、本開示は、適切な場合、図２の方法のステップの全て、一部、またはいずれも含まない、任意の適切なステップを含む、アプリケーションが使用すべきサービスの２つまたは複数のインスタンスのいずれかを決定するための任意の適切な方法を企図する。さらに、本開示は、図２の方法の特定のステップを実行する特定の構成要素、デバイス、またはシステムを説明しかつ例示しているが、本開示は、図２の方法の任意の適切なステップを実行する任意の適切な構成要素、デバイス、またはシステムの任意の適切な組み合わせを企図する。
【００２６】
本明細書でさらに十分に説明するように、例示的なサービスは、サービスのどのインスタンスを１つまたは複数のアプリケーションが使用すべきかを決定するための選択サービスであってもよい。選択サービスは、サービスへのアクセスを望むアプリケーションの一部であるか、または独立したソフトウェアであり得る。選択サービスは、例えば、方法２００のステップのいくつかまたは全てを実装することによって、アプリケーションが使用すべきサービスの２つまたは複数のインスタンスのうちのいずれかを決定するための全てまたはいくつかのステップを実行してもよい。選択サービスの複数のインスタンスが存在する場合、選択サービスの使用に適切なインスタンスが決定される。例えば、方法２００のステップ２２０に関連して説明された基準のいずれかを使用して、選択サービスのどのインスタンスを使用するかを決定して別のサービスのインスタンスを選択することができる。次いで、選択サービスは、例えば、方法２００のステップを実行することによって、他のサービスのどのインスタンスを使用するかを決定し得る。
【００２７】
図３は、アプリケーションが使用すべきサービスの２つまたは複数のインスタンスのうちのいずれかを決定するための例示的な方法３００を示す。方法３００は、サービスを要求するクライアントアプリケーションの観点から記述される。
【００２８】
方法３００は、クライアントアプリケーションがサービスへのアクセスを要求するステップ３１０で開始される。特定の実施形態では、クライアントアプリケーションがインストールされたときにアクセスのための要求が発生してもよい。特定の実施形態では、アクセスのための要求は、要求されたサービスのインスタンスをホストしているクライアントアプリケーションがインストールされたときに発生してもよい。特定の実施形態では、クライアントアプリケーションが更新されたときにアクセスのための要求が発生してもよい。特定の実施形態では、アクセスのための要求は、要求されたサービスのインスタンスをホストしているクライアントアプリケーションが更新されたときに発生してもよい。特定の実施形態では、要求は、定期的な間隔で、またはオンデマンドで（例えば、ユーザによって、クライアントアプリケーションによって、別のアプリケーションによって、またはそれらの任意の適切な組み合わせによって開始される）生じてもよい。特定の実施形態では、クライアントアプリケーションの要求が選択サービスに対して行われてもよい。特定の実施形態では、選択サービスは、例えば、選択サービスがクライアントアプリケーションのインストールまたは更新が発生したと判断したときに、クライアントアプリケーションに代わって要求を提出してもよい。
【００２９】
ステップ３２０において、クライアントは、要求に対する応答を受信する。特定の実施形態では、応答は、サービスにアクセスするためのクライアントの要求を満たすことができるサービスの１つまたは複数のインスタンスの識別情報を含む。特定の実施形態では、要求は、サービスを提供することができる全てのインスタンスに対するものであるか、またはサービスを提供することができるいくつかのインスタンスに対するものであり、対応する応答は、適宜、全てのインスタンスまたはいくつかのインスタンスを識別する。一例として、アプリケーションＡは、サービスへのアクセスを要求し、アプリケーションＡ、アプリケーションＣ、アプリケーションＤ、およびアプリケーションＦを、要求されたサービスのインスタンスを全て含む（または関連する）アプリケーションとして識別する応答を受信する。特定の実施形態では、識別されたインスタンスは、要求元のクライアントアプリケーションによって受信される前に、上記により十分に説明したように、ランク付けまたはスコア付けされてもよい。特定の実施形態では、クライアントアプリケーションは、インスタンスをそのクライアントアプリケーションに関連する選択サービスを使用することによって少なくとも部分的にランク付けまたはスコア付けすることができる。特定の実施形態では、応答を受信することは、クライアントアプリケーションが使用すべき要求されたサービスの選択されたインスタンス（例えば、選択サービスによって選択されるような最高スコアを有するインスタンス）の識別情報のみを受信することを含んでもよい。本明細書でさらに詳細に説明するように、選択サービスは、クライアントアプリケーションの一部、別のクライアントアプリケーションの一部、またはそれ独自の専用アプリケーションであってもよい。
【００３０】
特定の実施形態では、クライアントアプリケーションが、サービスにアクセスするために使用するサービスの選択されたインスタンスを識別した後、クライアントアプリケーションは、インスタンス、インスタンスに関連するアプリケーション、選択サービス、インスタンスに関するプロキシまたはインスタンスに関連するアプリケーションに関するプロキシ、またはそれらの任意の適切な組み合わせを通知し、クライアントアプリケーションが選択されたインスタンスを使用してサービスにアクセスすることを通知してもよい。特定の実施形態では、クライアントアプリケーションは、サービスのインスタンスと直接通信してもよい。特定の実施形態では、クライアントアプリケーションは、サービスのインスタンスと通信するために、スタンドアロン選択サービスなどの仲介を使用することができる。
【００３１】
特定の実施形態は、適切な場合、図３の方法の１つまたは複数のステップを繰り返してもよい。本開示は、図２の方法の特定のステップを説明かつ例示しているが、本開示は、任意の適切な順序で生じる図３の方法の任意の適切なステップを企図する。さらに、本開示は、図３の方法の特定のステップを含む、アプリケーションが使用すべきサービスの２つまたは複数のインスタンスのうちのいずれかを決定するための例示的な方法を説明し例示するが、本開示は、適切な場合、図３の方法のステップの全て、一部、またはいずれも含まない、任意の適切なステップを含む、アプリケーションが使用すべきサービスの２つまたは複数のインスタンスのいずれかを決定するための任意の適切な方法を企図する。さらに、本開示は、図３の方法の特定のステップを実行する特定の構成要素、デバイス、またはシステムを説明しているが、本開示は、図３の方法の任意の適切なステップを実行する任意の適切な構成要素、デバイス、またはシステムの任意の適切な組み合わせを企図する。
【００３２】
図４は、例示的なコンピュータシステム４００を示す。特定の実施形態では、１または複数のコンピュータシステム４００は、本明細書に記載され、または示されている１または複数の方法の１または複数のステップを実施する。特定の実施形態では、１または複数のコンピュータシステム４００は、本明細書に記載され、または示されている機能を提供する。特定の実施形態では、１または複数のコンピュータシステム４００上で動作するソフトウェアは、本明細書に記載され、または示されている１または複数の方法の１または複数のステップを実施し、または本明細書に記載され、または示されている機能を提供する。特定の実施形態は、１または複数のコンピュータシステム４００の１または複数の部分を含む。本明細書では、コンピュータシステムに言及することは、適切な場合、コンピューティングデバイスを包含してもよく、逆も同様である。さらに、コンピュータシステムに言及することは、適切な場合、１または複数のコンピュータシステムを包含してもよい。
【００３３】
この開示は、任意の好適な数のコンピュータシステム４００を企図する。この開示は、任意の好適な物理形態をとるコンピュータシステム４００を企図する。限定するものとしてではなく一例として、コンピュータシステム４００は、組込みコンピュータシステム、システムオンチップ（ＳＯＣ）、シングルボードコンピュータシステム（ＳＢＣ）（たとえば、コンピュータオンモジュール（ＣＯＭ）またはシステムオンモジュール（ＳＯＭ）など）、デスクトップコンピュータシステム、ラップトップもしくはノートブックコンピュータシステム、対話キオスク、メインフレーム、コンピュータシステムのメッシュ、移動体電話、携帯情報端末（ＰＤＡ）、サーバ、タブレットコンピュータシステム、またはこれらの２以上の組合せであってよい。適切な場合、コンピュータシステム４００は、１または複数のコンピュータシステム４００を含んでもよく、一元的なものであっても分散型であってもよく、複数のロケーションに跨ってもよく、複数のマシンに跨ってもよく、複数のデータセンタに跨ってもよく、クラウド内にあってもよく、クラウドは、１または複数のネットワーク内で１または複数のクラウドコンポーネントを含んでもよい。適切な場合、１または複数のコンピュータシステム４００は、実質的な空間的または時間的制限なしに、本明細書に記載され、または示されている１または複数の方法の１または複数のステップを実施してもよい。限定するものとしてではなく一例として、１つまたは複数のコンピュータシステム４００は、リアルタイムで、またはバッチモードで、本明細書に記載され、または示されている１または複数の方法の１または複数のステップを実施してもよい。１または複数のコンピュータシステム４００は、適切な場合、異なる時に、または異なるロケーションで、本明細書に記載され、または示されている１または複数の方法の１または複数のステップを実施してもよい。
【００３４】
特定の実施形態では、コンピュータシステム４００は、プロセッサ４０２、メモリ４０４、ストレージ４０６、入力／出力（Ｉ／Ｏ）インタフェース４０８、通信インタフェース４１０、およびバス４１２を含む。この開示は、特定の数の特定の構成要素を特定の構成で有する特定のコンピュータシステムについて記載し示しているが、この開示は、任意の好適な数の任意の好適な構成要素を任意の好適な構成で有する任意の好適なコンピュータシステムを企図する。
【００３５】
特定の実施形態では、プロセッサ４０２は、コンピュータプログラムを構成するものなど命令を実行するためのハードウェアを含む。限定するものとしてではなく一例として、命令を実行するために、プロセッサ４０２は、内部レジスタ、内部キャッシュ、メモリ４０４、またはストレージ４０６から命令を取り出し（またはフェッチし）、それらを復号および実行し、次いで、１または複数の結果を内部レジスタ、内部キャッシュ、メモリ４０４、またはストレージ４０６に書き込む。特定の実施形態では、プロセッサ４０２は、データ、命令、またはアドレス用に１または複数の内部キャッシュを含んでもよい。この開示は、適切な場合、任意の好適な数の任意の好適な内部キャッシュを含むプロセッサ４０２を企図する。限定するものとしてではなく一例として、プロセッサ４０２は、１または複数の命令キャッシュ、１または複数のデータキャッシュ、および１または複数の変換索引バッファ（ＴＬＢ）を含んでもよい。命令キャッシュ内の命令は、メモリ４０４またはストレージ４０６内の命令のコピーであってもよく、命令キャッシュは、プロセッサ４０２によるこれらの命令の取り出しを高速化する。データキャッシュ内のデータは、プロセッサ４０２にて実行される命令が操作するための、メモリ４０４またはストレージ４０６内のデータのコピー、プロセッサ４０２で実行される後続の命令によるアクセスのための、またはメモリ４０４もしくはストレージ４０６に書き込むための、プロセッサ４０２で実行された以前の命令の結果、あるいは他の好適なデータであってもよい。データキャッシュは、プロセッサ４０２による読出しまたは書込み動作を高速化する。ＴＬＢは、プロセッサ４０２のために仮想アドレス変換を高速化する。特定の実施形態では、プロセッサ４０２は、データ、命令、またはアドレス用に１または複数の内部レジスタを含む。この開示は、適切な場合、任意の好適な数の任意の好適な内部レジスタを含むプロセッサ４０２を企図する。適切な場合、プロセッサ４０２は、１または複数の算術論理演算ユニット（ＡＬＵ）を含むことができ、マルチコアプロセッサであってもよく、１または複数のプロセッサ４０２を含んでもよい。この開示は、特定のプロセッサについて記載し示しているが、この開示は、任意の好適なプロセッサを企図する。
【００３６】
特定の実施形態では、メモリ４０４は、プロセッサ４０２が実行するための命令、またはプロセッサ４０２が操作するためのデータを記憶するための主記憶装置を含む。限定するものとしてではなく一例として、コンピュータシステム４００は、ストレージ４０６または別のソース（たとえば、別のコンピュータシステム４００など）からメモリ４０４に命令をロードする。次いで、プロセッサ４０２は、メモリ４０４から内部レジスタまたは内部キャッシュに命令をロードする。命令を実行するために、プロセッサ４０２は、内部レジスタまたは内部キャッシュから命令を取り出し、それらを復号する。命令の実行中、または実行後、プロセッサ４０２は、１または複数の結果（中間結果であることも最終結果であることもある）を内部レジスタまたは内部キャッシュに書き込む。次いで、プロセッサ４０２は、それらの結果の１または複数をメモリ４０４に書き込む。特定の実施形態では、プロセッサ４０２は、１もしくは複数の内部レジスタもしくは内部キャッシュ内、または（ストレージ４０６もしくは他の場所ではなく）メモリ４０４内の命令だけを実行し、１もしくは複数の内部レジスタもしくは内部キャッシュ内、または（ストレージ８０６もしくは他の場所ではなく）メモリ４０４内のデータだけを操作する。１または複数のメモリバス（それぞれがアドレスバスとデータバスを含むことがある）がプロセッサ４０２をメモリ４０４に結合してもよい。バス４１２は、下記に記載されているように、１または複数のメモリバスを含んでもよい。特定の実施形態では、１または複数のメモリ管理ユニット（ＭＭＵ）が、プロセッサ４０２とメモリ４０４との間に存在し、プロセッサ４０２によって要求されるメモリ４０４へのアクセスを容易にする。特定の実施形態では、メモリ４０４は、ランダムアクセスメモリ（ＲＡＭ）を含む。このＲＡＭは、適切な場合、揮発性メモリであり得る。適切な場合、このＲＡＭは、ダイナミックＲＡＭ（ＤＲＡＭ）またはスタティックＲＡＭ（ＳＲＡＭ）であってよい。さらに、適切な場合、このＲＡＭは、シングルポート型またはマルチポート型ＲＡＭであってよい。この開示は、任意の好適なＲＡＭを企図する。メモリ４０４は、適切な場合、１または複数のメモリ４０４を含んでもよい。この開示は、特定のメモリについて記載し示しているが、この開示は、任意の好適なメモリを企図する。
【００３７】
特定の実施形態では、ストレージ３０６は、データまたは命令用のマスストレージを含む。限定するものとしてではなく一例として、ストレージ３０６は、ハードディスクドライブ（ＨＤＤ）、フロッピー（登録商標）ディスクドライブ、フラッシュメモリ、光ディスク、光磁気ディスク、磁気テープ、もしくはユニバーサルシリアルバス（ＵＳＢ）ドライブ、またはこれらの２以上の組合せを含んでもよい。ストレージ３０６は、適切な場合、取外し式または非取外し式（または固定）媒体を含んでもよい。ストレージ３０６は、適切な場合、コンピュータシステム３００に対して内部であっても外部であってもよい。特定の実施形態では、ストレージ３０６は、不揮発性のソリッドステートメモリである。特定の実施形態では、ストレージ３０６は、読出し専用メモリ（ＲＯＭ）を含む。適切な場合、このＲＯＭは、マスクプログラムドＲＯＭ、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＰＲＯＭ（ＥＥＰＲＯＭ）、電気的書き換え可能ＲＯＭ（ＥＡＲＯＭ）、もしくはフラッシュメモリ、またはこれらの２以上の組合せであってよい。この開示は、任意の好適な物理形態をとるマスストレージ３０６を企図する。ストレージ３０６は、適切な場合、プロセッサ３０２とストレージ３０６の間の通信を容易にする１または複数のストレージ制御ユニットを含んでもよい。適切な場合、ストレージ３０６は、１または複数のストレージ３０６を含んでもよい。この開示は、特定のストレージについて記載し示しているが、この開示は、任意の好適なストレージを企図する。
【００３８】
特定の実施形態では、Ｉ／Ｏインタフェース３０８は、コンピュータシステム３００と１または複数のＩ／Ｏデバイスとの間の通信のために１または複数のインタフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。コンピュータシステム３００は、適切な場合、これらのＩ／Ｏデバイスの１または複数を含んでもよい。これらのＩ／Ｏデバイスの１または複数は、人とコンピュータシステム３００の間の通信を可能にする。限定するものとしてではなく一例として、Ｉ／Ｏデバイスは、キーボード、キーパッド、マイクロフォン、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチルカメラ、スタイラス、タブレット、タッチスクリーン、トラックボール、ビデオカメラ、別の好適なＩ／Ｏデバイス、またはこれらの２以上の組合せを含んでもよい。Ｉ／Ｏデバイスは、１または複数のセンサを含んでもよい。この開示は、任意の好適なＩ／Ｏデバイス、およびそれらのための任意の好適なＩ／Ｏインタフェース３０８を企図する。適切な場合、Ｉ／Ｏインタフェース３０８は、プロセッサ３０２がこれらのＩ／Ｏデバイスの１または複数を駆動することを可能にする１または複数のデバイスまたはソフトウェアドライバを含む。Ｉ／Ｏインタフェース３０８は、適切な場合、１または複数のＩ／Ｏインタフェース３０８を含んでもよい。この開示は、特定のＩ／Ｏインタフェースについて記載し示しているが、この開示は、任意の好適なＩ／Ｏインタフェースを企図する。
【００３９】
特定の実施形態では、通信インタフェース３１０は、コンピュータシステム３００と１もしくは複数の他のコンピュータシステム３００または１もしくは複数のネットワークとの間の通信（たとえば、パケットベースの通信など）のために１または複数のインタフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。限定するものとしてではなく一例として、通信インタフェース３１０は、ＥＴＨＥＲＮＥＴ（登録商標）もしくは他の有線ベースのネットワークとの通信のためのインタフェースコントローラ（ＮＩＣ）もしくはネットワークアダプタ、またはＷＩ−ＦＩネットワークなど無線ネットワークとの通信のための無線ＮＩＣ（ＷＮＩＣ）もしくは無線アダプタを含んでもよい。この開示は、任意の好適なネットワーク、およびそのための任意の好適な通信インタフェース３１０を企図する。限定するものとしてではなく一例として、コンピュータシステム３００は、アドホックネットワーク、パーソナルエリアネットワーク（ＰＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、またはインターネットの１もしくは複数の部分、あるいはこれらの２以上の組合せと通信する。これらのネットワークの１または複数のうちの１または複数の部分は、有線であっても無線であってもよい。一例として、コンピュータシステム３００は、無線ＰＡＮ（ＷＰＡＮ）（たとえば、ＢＬＵＥＴＯＯＴＨ（登録商標）ＷＰＡＮなど）、ＷＩ−ＦＩネットワーク、ＷＩ−ＭＡＸネットワーク、携帯電話ネットワーク（たとえば、グローバル移動体通信システム（ＧＳＭ（登録商標））ネットワークなど）、もしくは他の好適な無線ネットワーク、またはこれらの２以上の組合せと通信する。コンピュータシステム３００は、適切な場合、これらのネットワークのいずれかのための任意の好適な通信インタフェース３１０を含んでもよい。通信インタフェース３１０は、適切な場合、１または複数の通信インタフェース３１０を含んでもよい。この開示は、特定の通信インタフェースについて記載し示しているが、この開示は、任意の好適な通信インタフェースを企図する。
【００４０】
特定の実施形態では、バス３１２は、コンピュータシステム３００の構成要素を互いに結合するハードウェア、ソフトウェア、またはその両方を含む。限定するものとしてではなく一例として、バス３１２は、アクセラレィティッドグラフィックスポート（ＡＧＰ）もしくは他のグラフィックスバス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、フロントサイドバス（ＦＳＢ）、ＨＴ（ＨＹＰＥＲＴＲＡＮＳＰＯＲＴ）相互接続、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、インフィニバンド相互接続、ＬＰＣ（ｌｏｗ−ｐｉｎ−ｃｏｕｎｔ）バス、メモリバス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス、ＰＣＩエクスプレス（ＰＣＩｅ）バス、ＳＡＴＡ（ｓｅｒｉａｌ  ａｄｖａｎｃｅｄ  ｔｅｃｈｎｏｌｏｇｙ  ａｔｔａｃｈｍｅｎｔ）バス、ＶＬＢ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ  ｌｏｃａｌ）バス、もしくは別の好適なバス、またはこれらの２以上の組合せを含んでもよい。バス３１２は、適切な場合、１または複数のバス３１２を含んでもよい。この開示は、特定のバスについて記載し示しているが、この開示は、任意の好適なバスまたは相互接続を企図する。
【００４１】
本明細書では、１または複数の非一時的コンピュータ可読記憶媒体は、適切な場合、１または複数の半導体ベースの、もしくは他の集積回路（ＩＣ）（たとえば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）または特定用途向けＩＣ（ＡＳＩＣ））、ハードディスクドライブ（ＨＤＤ）、ハイブリッドハードドライブ（ＨＨＤ）、光ディスク、光ディスクドライブ（ＯＤＤ）、光磁気ディスク、光磁気ドライブ、フロッピー（登録商標）ディスケット、フロッピー（登録商標）ディスクドライブ（ＦＤＤ）、磁気テープ、ソリッドステートドライブ（ＳＳＤ）、ＲＡＭドライブ、セキュアデジタルカードもしくはセキュアデジタルドライブ、任意の他の好適な非一時的コンピュータ可読記憶媒体、またはこれらの２以上の組合せを含んでもよい。非一時的コンピュータ可読記憶媒体は、適切な場合、揮発性、不揮発性、または揮発性と不揮発性の組合せであってよい。
【００４２】
本明細書では、「または（もしくは）」は、別段明確に示されていない限り、または別段文脈によって示されない限り、包括的（ｉｎｃｌｕｓｉｖｅ）であり、排他的なものではない。したがって、本明細書では、「ＡまたはＢ」は、別段明確に示されていない限り、または別段文脈によって示されない限り、「Ａ、Ｂ、またはその両方」を意味する。さらに、「および」は、別段明確に示されていない限り、または別段文脈によって示されない限り、共同であり、個別的でもある。したがって、本明細書では、「ＡおよびＢ」は、別段明確に示されていない限り、または別段文脈によって示されない限り、「ＡおよびＢを共同で、または個別的に」意味する。
【００４３】
この開示の範囲は、当業者であれば理解するであろう、本明細書に記載され、または示されている例示的な実施形態に対する変更、置換、変形、代替、および修正全てを包含する。この開示の範囲は、本明細書に記載され、または示されている例示的な実施形態に限定されない。さらに、この開示は、それぞれの実施形態について、本明細書では、特定の構成要素、要素、特徴、機能、動作、またはステップを含むものとして記載し示しているが、これらの実施形態のいずれも、当業者であれば理解するであろう、本明細書のどこかに記載され、または示されている構成要素、要素、特徴、機能、動作、またはステップのいずれかの任意の組合せまたは並べ替えを含んでもよい。さらに、添付の特許請求の範囲において、特定の機能を実施するように適合された、するように配置された、することが可能な、するように構成された、することが可能である、するように動作可能である、またはするように動作する装置もしくはシステム、または装置もしくはシステムの構成要素に言及することは、その装置、システム、または構成要素がそのように適合され、配置され、動作可能であり、構成され、可能であり、動作可能であり、動作する限り、それ、またはその特定の機能が作動される、オンにされる、またはロック解除されるか否かにかかわらず、その装置、システム、構成要素を包含する。
【図１】
2018060580.tif 000003
【図２】
2018060580.tif 000004
【図３】
2018060580.tif 000005
【図４】
2018060580.tif 000006