(57)【特許請求の範囲】
【請求項１】
方法であって、
１つ以上のプロセッサと、前記１つ以上のプロセッサにより実行するための命令を格納したメモリとを備える電子デバイスにおいて、
前記電子デバイスのオペレーティングシステム上で動作する第１のアプリケーションから前記電子デバイスのオペレーティングシステム上で動作する第２のアプリケーションに、前記第１のアプリケーションが前記電子デバイスのリソースにアクセスするための第１の要求を含む複数の要求を送ること、
前記第１の要求を含む前記複数の要求のそれぞれに応答して、前記第２のアプリケーションを使用して、前記第１のアプリケーションが前記リソースにアクセスするための許可を前記電子デバイスのユーザに求めること、
前記第１のアプリケーションが前記リソースにアクセスするための許可を与える第１のユーザ入力を受信することを含む、前記第１のアプリケーションが前記リソースにアクセスすることを許可または拒否するユーザ入力をそれぞれ受信すること、
前記複数の要求のそれぞれのレコードを格納することであって、当該要求のそれぞれに関連付けられたそれぞれの前記ユーザ入力および前記電子デバイスのそれぞれのコンテキスト情報を含むレコードを格納すること、
前記第１のユーザ入力に応答して、前記第２のアプリケーションを使用して、前記第１のアプリケーションが前記リソースにアクセスするための許可を与えること、
前記レコードに基づいて、前記リソースへの前記第１のアプリケーションのアクセスを許可または拒否する条件の推奨を前記ユーザに提示すること、を備える、方法。
【請求項２】
前記リソースは、
前記電子デバイスのマイクロフォン、
前記電子デバイスのメッセージングアプリケーション、
前記電子デバイスの位置追跡デバイス、および
前記電子デバイスのカメラ
からなる群から選択される、請求項１に記載の方法。
【請求項３】
前記第１のユーザ入力は、前記第１のアプリケーションが前記リソースにアクセスすることを１度のみ許可することを指定するものであり、前記方法は、前記第１のユーザ入力を受信し、前記第１のユーザ入力に応答して、前記第２のアプリケーションを使用して、前記第１のアプリケーションが前記リソースにアクセスする許可を与えた後に、
前記第１のアプリケーションが前記リソースにアクセスするための第２の要求を前記第１のアプリケーションから前記第２のアプリケーションに送ること、
前記第２の要求に応答して、前記第２のアプリケーションを使用して、前記第１のアプリケーションが前記リソースにアクセスするための許可を前記ユーザに求めること、
前記第１のアプリケーションが前記リソースにアクセスするための許可を与えるか否かを示す第２のユーザ入力を受信すること、および
前記第２のユーザ入力に従って、前記第２のアプリケーションを使用して、前記第１のアプリケーションが前記リソースにアクセスすることを許可または拒否することをさらに備える、請求項１または２に記載の方法。
【請求項４】
前記第１の要求に応答して、前記第１のアプリケーションが前記リソースにアクセスすることを許可する権限が現時点で前記第２のアプリケーションに与えられていないと判定することをさらに備え、
前記判定に応答して、前記第１のアプリケーションが前記リソースにアクセスするための許可を前記ユーザに求める、請求項１または２に記載の方法。
【請求項５】
前記第１のユーザ入力は、前記第１のアプリケーションが前記リソースにアクセスすることを許可する期間を指定するものであり、前記方法は、
前記第１のユーザ入力に従って、前記期間の間、前記第２のアプリケーションを繰り返し使用して、前記第１のアプリケーションが前記リソースにアクセスするための許可を自動的に与えることをさらに備える、請求項１または２に記載の方法。
【請求項６】
前記第１のユーザ入力は、前記第１のアプリケーションが前記リソースにアクセスすることを許可する許可位置を指定するものであり、前記方法は、
前記第１のユーザ入力に従って、前記電子デバイスの検出位置が前記許可位置に対応する間、前記第２のアプリケーションを繰り返し使用して、前記第１のアプリケーションが前記リソースにアクセスするための許可を自動的に与えることをさらに備える、請求項１または２に記載の方法。
【請求項７】
前記第１のユーザ入力は、前記第１のアプリケーションが前記リソースにアクセスすることを許可する許可ユーザを指定するものであり、前記方法は、
前記第１のユーザ入力に従って、前記電子デバイスのユーザが前記許可ユーザであると判定されたときに、前記第２のアプリケーションを繰り返し使用して、前記第１のアプリケーションが前記リソースにアクセスするための許可を自動的に与えることをさらに備える、請求項１または２に記載の方法。
【請求項８】
前記リソースは、前記電子デバイスの位置追跡デバイスを含み、
前記第１のユーザ入力は、前記位置追跡デバイスへのアクセスに関して前記第１のアプリケーションに対して許可すべき分解能の度合いを指定するものである、請求項１または２に記載の方法。
【請求項９】
前記第１のユーザ入力は、位置追跡の分解能を低分解能と高分解能との間で選択するものである、請求項８に記載の方法。
【請求項１０】
前記リソースにアクセスするために前記第１のアプリケーションから送られた要求の数を或る期間に亘って判定すること、および
前記要求の数が閾値を満たすことに応じて、前記第２のアプリケーションを使用して、前記第１のアプリケーションが前記リソースにアクセスすることを拒否することをさらに備える請求項１または２に記載の方法。
【請求項１１】
前記要求の数が前記閾値を満たすことに応じて、前記電子デバイスの前記ユーザにアラートを通知することをさらに備える請求項１０に記載の方法。
【請求項１２】
前記それぞれのコンテキスト情報は、それぞれの前記ユーザ入力を受信したときの前記電子デバイスの位置およびそれぞれの前記ユーザ入力を受信した時刻のうちの少なくとも１つを含む、請求項１または２に記載の方法。
【請求項１３】
請求項１〜１２のうちのいずれか一項に記載の方法を行うべく実行される際に動作可能なソフトウェアを具現化する１つ以上の非一時的なコンピュータ可読記憶媒体。
【請求項１４】
１つ以上のプロセッサと、前記プロセッサに接続され、前記プロセッサにより実行可能な命令を含む少なくとも１つのメモリとを備えたシステムであって、前記プロセッサは、請求項１〜１２のうちのいずれか一項に記載の方法を行うべく前記命令を実行する際に動作可能である、システム。
【請求項１５】
前記第２のアプリケーションを使用して許可を与えることは、
前記第２のアプリケーションを、前記第１のアプリケーションが前記リソースからデータを取得するためのプロキシとして使用すること、
前記第２のアプリケーションから前記第１のアプリケーションに前記データを提供すること、を含む、請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概してモバイルデバイスのアプリケーションのアクセス許可に関し、これに限定されないが、モバイルデバイスリソースへのアクセス許可を管理することを含む。
【背景技術】
【０００２】
モバイルデバイスのアプリケーションの豊富さと共に、モバイルデバイスによって提供されるリソースおよび機能の範囲が拡大し続けている。モバイルデバイスのアプリケーションによって使用されるデバイスリソースへの安全なアクセスを提供することが、ますます消費者の関心事となっている。消費者は、そのアプリケーションが消費者のプライバシーを尊重する適切な方法でデバイスリソースにアクセスするものであると信頼しない場合にはそのアプリケーションを使用したくないと考える。アプリケーションによるアクセスの信頼性の問題は、詳細な権限管理機能の欠如、および観察されるリソースアクセス動作の監視と実行の課題によって、さらに複雑化されている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
従って、モバイルデバイスリソースへのアクセス許可を管理するための方法、システム、およびインタフェースが必要とされている。
【課題を解決するための手段】
【０００４】
オペレーティングシステムとは別のアプリケーションを使用して、要求元のアプリケーションからのアクセス要求を受信し、ユーザに許可を求め、そのユーザからの許可に従って要求元のアプリケーションのアクセスを許可または拒否することで、デバイスリソースへのアクセスがより安全に管理および監視される。このような方法、システム、およびインタフェースは、任意で、モバイルデバイスリソースへのアクセス許可を管理するための従来方法を補完または置き換える。
【０００５】
いくつかの実施形態によれば、方法は、１つ以上のプロセッサと、前記１つ以上のプロセッサにより実行するための命令を格納したメモリとを備える電子デバイス（たとえば、モバイルデバイス）で実行される。方法は、第１のアプリケーションから第２のアプリケーションに前記第１のアプリケーションが前記電子デバイスのリソースにアクセスするための第１の要求を送ることを含む。前記第１および第２のアプリケーションは、前記電子デバイスのオペレーティングシステム上で実行される。前記第１の要求に応答して、前記第２のアプリケーションが使用されることで、前記第１のアプリケーションが前記リソースにアクセスするための許可が前記電子デバイスのユーザに求められる。前記第１のアプリケーションが前記リソースにアクセスするための許可を与える第１のユーザ入力が受信されると、前記第１のユーザ入力に応答して、前記第２のアプリケーションが使用されることで、前記第１のアプリケーションが前記リソースにアクセスするための許可が与えられる。
【０００６】
いくつかの実施形態によれば、電子デバイス（例えば、モバイルデバイスなどのクライアントデバイス）は、１つ以上のプロセッサと、メモリと、１つ以上のプログラムとを含む。前記１つ以上のプログラムは、前記メモリに格納され、前記１つ以上のプロセッサによって実行されるように構成される。前記１つ以上のプログラムは、上述の方法の動作を実行するための命令を含む。いくつかの実施形態によれば、非一時的なコンピュータ可読記憶媒体は、電子デバイスにより実行されるとき前記電子デバイスに上述の方法の動作を実行させる命令を格納する。いくつかの実施形態によれば、電子デバイスは、上述の方法の動作を実行するための手段を含む。
【０００７】
このように、許可設定を管理および監視するためのプロキシとして機能する、オペレーティングシステムとは別のアプリケーションを使用することによって、アプリケーションは新たなリリースやオペレーティングシステムの更新から分離され、オペレーティングシステム自体によって実装される場合に実現可能となり得るものよりも広範囲のデバイスとの互換性が可能となる。さらに、個別のプロキシアプリケーションは、オペレーティングシステム開発者がアクセス権の使用に関して提供できない透明性／アカウンタビリティを可能にするＡＰＩの開発およびフォローを可能とする。このため、モバイルデバイスリソースへのアクセス許可を管理するためのより効率的で信頼性の高い方法が電子デバイスに提供され、これらのデバイスの有効性、効率性、およびユーザ満足度が向上する。
【０００８】
実施形態はとりわけ、方法、記憶媒体、システム、およびコンピュータプログラム製品を対象とした添付の特許請求の範囲に開示される。一つのカテゴリ（例えば、方法）にて言及されている特徴は他のカテゴリ（例えば、システム）でも言及され得る。添付の特許請求の範囲の請求項に記載された従属関係または参照は、形式的な理由のみのために選択されているが、任意の先行する請求項（特に、多数従属関係）に対する意図的な参照によって生じる任意の主題も特許請求され得るものであり、その結果、添付の特許請求の範囲の請求項において選択されている従属関係にかかわらず、任意の請求項の組み合わせおよびそれらの特徴が開示および特許請求され得る。また、特許請求され得る主題は、添付の特許請求の範囲の請求項に記載された特徴の組み合わせだけでなく、それらの請求項における特徴の任意の他の組み合わせも含む。請求項にて言及されている各特徴は、それらの請求項における任意の他の特徴またはそれらの組み合わせと組み合わせることができる。また、本明細書に記載ないし図示された実施形態および特徴は、別々の請求項で特許請求され得るものであり、および／または本明細書に記載ないし図示された任意の実施形態または特徴との任意の組み合わせ、あるいは添付の特許請求の範囲の請求項の任意の特徴との任意の組み合わせで特許請求され得る。
【０００９】
いくつかの実施形態において、方法は、１つ以上のプロセッサと、前記１つ以上のプロセッサにより実行するための命令を格納したメモリとを備える電子デバイスにおいて、
前記電子デバイスのオペレーティングシステム上で動作する第１のアプリケーションから前記電子デバイスのオペレーティングシステム上で動作する第２のアプリケーションに、前記第１のアプリケーションが前記電子デバイスのリソースにアクセスするための第１の要求を送ること、
前記第１の要求に応答して、前記第２のアプリケーションを使用して、前記第１のアプリケーションが前記リソースにアクセスするための許可を前記電子デバイスのユーザに求めること、
前記第１のアプリケーションが前記リソースにアクセスするための許可を与える第１のユーザ入力を受信すること、および
前記第１のユーザ入力に応答して、前記第２のアプリケーションを使用して、前記第１のアプリケーションが前記リソースにアクセスするための許可を与えること
を備える。
【００１０】
前記リソースは、
前記電子デバイスのマイクロフォン、
前記電子デバイスのメッセージングアプリケーション、
前記電子デバイスの位置追跡デバイス、および
前記電子デバイスのカメラ
からなる群から選択され得る。
【００１１】
前記第２のアプリケーションを使用して、前記第１のアプリケーションが前記リソースにアクセスするための許可を与えることは、
前記第２のアプリケーションを使用して前記リソースからデータを取得すること、および
前記第２のアプリケーションから前記第１のアプリケーションに前記データを提供すること
を含み得る。
【００１２】
前記第１のユーザ入力は、前記第１のアプリケーションが前記リソースにアクセスすることを１度のみ許可すること（ワンタイム許可）を指定し得る。この場合、前記方法は、前記第１のユーザ入力を受信し、前記第１のユーザ入力に応答して、前記第２のアプリケーションを使用して、前記第１のアプリケーションが前記リソースにアクセスする許可を与えた後に、
前記第１のアプリケーションが前記リソースにアクセスするための第２の要求を前記第１のアプリケーションから前記第２のアプリケーションに送ること、
前記第２の要求に応答して、前記第２のアプリケーションを使用して、前記第１のアプリケーションが前記リソースにアクセスするための許可を前記ユーザに求めること、
前記第１のアプリケーションが前記リソースにアクセスするための許可を与えるか否かを示す第２のユーザ入力を受信すること、および
前記第２のユーザ入力に従って、前記第２のアプリケーションを使用して、前記第１のアプリケーションが前記リソースにアクセスすることを許可または拒否すること
をさらに備え得る。
【００１３】
いくつかの実施形態において、前記方法は、前記第１の要求に応答して、前記第１のアプリケーションが前記リソースにアクセスすることを許可する権限が現時点で前記第２のアプリケーションに与えられていないと判定することをさらに備え得る。この場合、前記判定に応答して、前記第１のアプリケーションが前記リソースにアクセスするための許可が前記ユーザに求められる。
【００１４】
前記第１のユーザ入力は、前記第１のアプリケーションが前記リソースにアクセスすることを許可する期間を指定し得る。この場合、前記方法は、
前記第１のユーザ入力に従って、前記期間の間、前記第２のアプリケーションを繰り返し使用して、前記第１のアプリケーションが前記リソースにアクセスするための許可を自動的に与えること
をさらに備え得る。
【００１５】
前記第１のユーザ入力は、前記第１のアプリケーションが前記リソースにアクセスすることを許可する許可位置を指定し得る。この場合、前記方法は、
前記第１のユーザ入力に従って、前記電子デバイスの検出位置が前記許可位置に対応する間、前記第２のアプリケーションを繰り返し使用して、前記第１のアプリケーションが前記リソースにアクセスするための許可を自動的に与えること
をさらに備え得る。
【００１６】
前記第１のユーザ入力は、前記第１のアプリケーションが前記リソースにアクセスすることを許可する許可ユーザを指定し得る。この場合、前記方法は、
前記第１のユーザ入力に従って、前記電子デバイスの前記ユーザが前記許可ユーザであると判定されたときに、前記第２のアプリケーションを繰り返し使用して、前記第１のアプリケーションが前記リソースにアクセスするための許可を自動的に与えること
をさらに備え得る。
【００１７】
前記第１のユーザ入力は、前記第１のアプリケーションが前記リソースにアクセスすることを許可する条件を指定し得る。この場合、前記方法は、
前記第２のアプリケーションに割り当てられたメモリに前記条件を格納すること、および
前記第２のアプリケーションにおいて、前記第１のアプリケーションからの後続の要求に応答して、前記条件を使用して、前記第１のアプリケーションが前記リソースにアクセスすることを許可するか否かを判定すること
をさらに備え得る。
【００１８】
前記条件は、前記第１のアプリケーションに対応するフォアグラウンドプロセスによる前記リソースへのアクセスを許可するが、前記第１のアプリケーションに対応するバックグラウンドプロセスに対してはアクセスを許可しないものとすることができる。
【００１９】
前記条件は、前記第１のアプリケーションに対応するバックグラウンドプロセスによる前記リソースへのアクセスを許可するが、前記第１のアプリケーションに対応するフォアグラウンドプロセスに対してはアクセスを許可しないものとすることができる。
【００２０】
前記リソースは、前記電子デバイスの位置追跡デバイスを含み得る。この場合、前記第１のユーザ入力は、前記位置追跡デバイスへのアクセスに関して前記第１のアプリケーションに対して許可すべき分解能の度合いを指定し得る。
【００２１】
前記第１のユーザ入力は、位置追跡の分解能を低分解能と高分解能との間で選択するものであってもよい。
いくつかの実施形態において、前記方法は、
前記リソースにアクセスするために前記第１のアプリケーションから送られた要求の数を或る期間に亘って判定すること、および
前記要求の数が閾値を満たすことに応じて、前記第２のアプリケーションを使用して、前記第１のアプリケーションが前記リソースにアクセスすることを拒否すること
をさらに備え得る。
【００２２】
いくつかの実施形態において、前記方法は、前記要求の数が前記閾値を満たすことに応じて、前記電子デバイスの前記ユーザにアラートを通知することをさらに備え得る。
いくつかの実施形態において、前記方法は、
前記第１のアプリケーションから前記第２のアプリケーションに前記第１のアプリケーションが前記リソースにアクセスするための前記第１の要求を含む複数の要求を送ること、
前記複数の要求のレコードを格納すること、および
前記レコードに基づいて、前記複数の要求に関する１つ以上の統計情報を前記ユーザに提示すること
をさらに備え得る。
【００２３】
いくつかの実施形態において、前記方法は、
前記第１のアプリケーションから前記第２のアプリケーションに前記第１のアプリケーションが前記リソースにアクセスするための前記第１の要求を含む複数の要求を送ること、
前記複数の要求のそれぞれに応答して、前記第１のアプリケーションが前記リソースにアクセスするための許可を前記ユーザに求め、前記第１のアプリケーションが前記リソースにアクセスすることを許可または拒否するユーザ入力をそれぞれ受信すること、
前記複数の要求のそれぞれのレコード、それぞれの前記ユーザ入力、および前記電子デバイスのそれぞれのコンテキスト情報を格納すること、および
前記レコードに基づいて、前記リソースへの前記第１のアプリケーションのアクセスを許可または拒否する条件の推奨を前記ユーザに提示すること
をさらに備え得る。
【００２４】
前記コンテキスト情報は、それぞれの前記ユーザ入力を受信したときの前記電子デバイスの位置およびそれぞれの前記ユーザ入力を受信した回数のうちの少なくとも１つを含み得る。
【００２５】
同様に特許請求することが可能ないくつかの実施形態において、電子デバイスは、
１つ以上のプロセッサと、
前記１つ以上のプロセッサにより実行するための１つ以上のプログラムを格納したメモリと、を備える。前記１つ以上のプログラムは、
前記電子デバイスのオペレーティングシステム上で動作する第１のアプリケーションから前記電子デバイスのオペレーティングシステム上で動作する第２のアプリケーションに、前記第１のアプリケーションが前記電子デバイスのリソースにアクセスするための第１の要求を送ること、
前記第１の要求に応答して、前記第２のアプリケーションを使用して、前記第１のアプリケーションが前記リソースにアクセスするための許可を前記電子デバイスのユーザに求めること、および
前記第１のアプリケーションが前記リソースにアクセスするための許可を与える第１のユーザ入力に応答して、前記第２のアプリケーションを使用して、前記第１のアプリケーションが前記リソースにアクセスするための許可を与えること
を実行するための命令を含む。
【００２６】
同様に特許請求することが可能ないくつかの実施形態において、非一時的なコンピュータ可読記憶媒体は、電子デバイスの１つ以上のプロセッサにより実行するための１つ以上のプログラムを格納する。前記１つ以上のプログラムは、第１のアプリケーションと異なる第２のアプリケーションであって、前記第１および第２のアプリケーションが動作する前記電子デバイスのオペレーティングシステムとは異なる前記第２のアプリケーションに対応する。前記１つ以上のプログラムは、
前記第１のアプリケーションから、前記第１のアプリケーションが前記電子デバイスのリソースにアクセスするための第１の要求を受信すること、
前記第１の要求に応答して、前記第１のアプリケーションが前記リソースにアクセスするための許可を前記電子デバイスのユーザに求めること、および
前記第１のアプリケーションが前記リソースにアクセスするための許可を与える第１のユーザ入力に応答して、前記第１のアプリケーションが前記リソースにアクセスするための許可を与えること
を実行するための命令を含む。
【００２７】
いくつかの実施形態において、１つ以上の非一時的なコンピュータ可読記憶媒体は、上記実施形態のいずれかによる方法または任意の他の開示された実施形態による方法を行うべく実行される際に動作可能なソフトウェアを具現化する。
【００２８】
いくつかの実施形態において、システムは、１つ以上のプロセッサと、前記プロセッサに接続され、前記プロセッサにより実行可能な命令を含む少なくとも１つのメモリとを備える。前記プロセッサは、上記実施形態のいずれかによる方法または任意の他の開示された実施形態による方法を行うべく前記命令を実行する際に動作可能である。
【００２９】
いくつかの実施形態において、好ましくは非一時的なコンピュータ可読記憶媒体を備えるコンピュータプログラム製品は、上記実施形態のいずれかによる方法または任意の他の開示された実施形態による方法を行うべくデータ処理システム上で実行される際に動作可能である。
【図面の簡単な説明】
【００３０】
【図１】いくつかの実施形態によるソーシャルネットワークの例示的なネットワークアーキテクチャを示すブロック図。
【図２】いくつかの実施形態による例示的なソーシャルネットワークシステムを示すブロック図。
【図３】いくつかの実施形態による例示的なクライアントデバイスを示すブロック図。
【図４Ａ】いくつかの実施形態による、デバイスリソースへのアクセス許可を管理し、アクセス要求の統計情報を提示するための例示的なグラフィックユーザインタフェース（ＧＵＩ）を示す図。
【図４Ｂ】いくつかの実施形態による、デバイスリソースへのアクセス許可を管理し、アクセス要求の統計情報を提示するための例示的なグラフィックユーザインタフェース（ＧＵＩ）を示す図。
【図５Ａ】いくつかの実施形態による、アクセス許可およびアクセス要求レコードを格納する例示的なデータ構造を示す図。
【図５Ｂ】いくつかの実施形態による、アクセス許可およびアクセス要求レコードを格納する例示的なデータ構造を示す図。
【図６】いくつかの実施形態による、デバイスリソースへのアクセス許可を管理する方法を例示するフローチャート。
【発明を実施するための形態】
【００３１】
以下、添付図面に示された実施例を参照する。以下の説明では、種々の実施形態の理解をもたらすべく多数の具体的な詳細を述べる。しかしながら、説明する種々の実施形態がこれらの特定の詳細なしに実施され得ることは、当業者には明らかである。なお、周知の方法、手順、構成要素、回路、およびネットワークは、実施形態の態様を不必要に不明瞭にしないように詳細には記載されていない。
【００３２】
説明する種々の実施形態のより良い理解のために、添付の図面と併せて以下の実施形態を説明する。同様の符号は、図面および説明の全体にわたって対応する部分を示す。
本明細書において種々の構成要素を説明するためにいくつかの場合で第１、第２などの用語が使用されるが、これらの構成要素はこれらの用語によって限定されるものではない。これらの用語は、或る要素を別の要素と区別することのみを目的として使用される。例えば、説明する種々の実施形態の範囲から逸脱することなく、第１のグループは第２のグループとも呼ぶことができ、同様に、第２のグループは第１のグループとも呼ぶことができる。第１のグループと第２のグループは双方ともにグループであるが、同じグループではない。
【００３３】
本明細書に記載された種々の実施形態を説明するために使用される用語は、特定の実施形態を説明することのみを目的としており、限定することを意図したものではない。種々の実施形態および添付の特許請求の範囲において使用される単数形「１つ」は、文脈がそうでないことを明確に示さない限り、複数形も含むことが意図される。また、本明細書で使用される「および／または」という用語は、１つ以上の関連する列挙されたアイテムの任意かつすべての可能な組み合わせを示し、包含する。本明細書で使用する「含む」および／または「備える」という用語は、記載された特徴、整数、ステップ、動作、要素、および／または構成の存在を特定し、他の１つ以上の特徴、整数、ステップ、動作、要素、構成、および／またはそれらの群の存在または追加を排除するものではない。
【００３４】
本明細書で使用される用語「〜の場合」は、任意で、文脈に応じて、「〜のとき」、「〜の時点」、「〜の判定に応答して」、「〜の検出に応答して」、または「〜との判定に応じて」を意味すると解釈される。同様に、「〜と判定される場合」や「（所定の状態や事象が）検出される場合」などの記載は、任意で、文脈に応じて、「〜の判定時点」、「〜の判定に応答して」、「（所定の状態や事象を）検出した時点」、「（所定の状態や事象の）検出に応答して」、または「（所定の状態や事象が）検出されたとの判定に応じて」を意味すると解釈される。
【００３５】
本明細書で使用される用語「例示的」は、「その種類の最良を表す」との意味ではなく、「例、事例、または実例として役立つ」との意味で使用される。
図１は、いくつかの実施形態によるソーシャルネットワークの例示的なネットワークアーキテクチャ１００を示すブロック図である。ネットワークアーキテクチャ１００は、１つ以上のネットワーク１０６（例えば、インターネット、セルラ電話ネットワーク、モバイルデータネットワーク、他の広域ネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワークなど）によって電子ソーシャルネットワークシステム１０８に通信可能に接続された複数のクライアントデバイス１０４−１，１０４−２，…１０４−ｎ（「クライアントシステム」、「クライアントコンピュータ」、または「クライアント」とも呼ばれる）を含む。いくつかの実施形態では、１つ以上のネットワーク１０６は、公衆通信ネットワーク（例えば、インターネットおよび／またはセルラデータネットワーク）、プライベート通信ネットワーク（例えば、プライベートＬＡＮまたは専用線）、またはそれらの通信ネットワークの組み合わせを含む。
【００３６】
いくつかの実施形態では、クライアントデバイス１０４−１，１０４−２，…１０４−ｎは、スマートウォッチ、パーソナルデジタルアシスタント、ポータブルメディアプレーヤ、スマートフォン、タブレットコンピュータ、２Ｄゲームデバイス、３Ｄ（例えば、バーチャルリアリティ）ゲームデバイス、ラップトップコンピュータ、デスクトップコンピュータ、１つ以上のプロセッサを内蔵したまたは１つ以上のプロセッサに接続されたテレビ、車載情報システム（例えば、ナビゲーション、エンターテインメント、および／または他の情報を提供する車載コンピュータシステム）、および／またはソーシャルネットワークシステム１０８と通信するために使用することができる他の適切なコンピューティングデバイスなどのコンピューティングデバイスである。したがって、クライアントデバイス１０４−１，１０４−２，…１０４−ｎのいくつかまたはすべては、モバイルデバイスとすることができる。いくつかの実施形態では、ソーシャルネットワークシステム１０８は、コンピュータサーバなどの単一のコンピューティングデバイスである一方、他の実施形態では、ソーシャルネットワークシステム１０８は、サーバシステム（例えば、クラウドコンピューティング）の動作を実行するように互いに連動する複数のコンピューティングデバイスによって実現される。
【００３７】
ユーザ１０２−１，１０２−２，…１０２−ｎは、クライアントデバイス１０４−１，１０４−２，…１０４−ｎを使用して、ソーシャルネットワークシステム１０８にアクセスし、そのソーシャルネットワークシステム１０８によって提供される対応するソーシャルネットワーキングサービスに参加する。例えば、クライアントデバイス１０４−１，１０４−２，…１０４−ｎの１つ以上は、ソーシャルネットワーキングサービスにアクセスするために使用可能なウェブブラウザアプリケーションを実行する。別の例として、クライアントデバイス１０４−１，１０４−２，…１０４−ｎの１つ以上は、ソーシャルネットワーキングサービス（例えば、スマートフォンまたはタブレット上で動作するソーシャルネットワーキング「アプリケーション」であって、ｉＰｈｏｎｅ（登録商標）、Ａｎｄｒｏｉｄ（登録商標）、またはＷｉｎｄｏｗｓ（登録商標）のスマートフォンまたはタブレット上で動作しているＦａｃｅｂｏｏｋ（登録商標）ソーシャルネットワーキングアプリケーションなど）に特有のソフトウェアアプリケーションを実行する。
【００３８】
クライアントデバイス１０４−１，１０４−２，…１０４−ｎとの間で情報をやり取りするユーザは、デジタル情報を提供および／または購入（例えば、投稿、書き込み、閲覧、公開、放送、宣伝、推薦、共有）することによって、ソーシャルネットワークシステム１０８によって提供されるソーシャルネットワーキングサービスに参加することができる。デジタル情報は、例えば、テキストコメント（例えば、ステータス、更新、アナウンス、返信、ロケーション「チェックイン」、プライベート／グループメッセージ）、写真、ビデオ、音声ファイル、リンク、ドキュメント、および／または他の電子コンテンツなどである。いくつかの実施形態において、ユーザは、ソーシャルネットワークシステム１０８によって提供されるソーシャルネットワーキングサービスのページ、グループ、イベント、メッセージボード、フィード、アプリケーション、および／またはユーザプロファイルとの間で情報をやり取りする。ソーシャルネットワーキングサービスのユーザは、ソーシャルネットワーキングサービスの他のユーザによって投稿された情報に注釈を付けることができる（例えば、他のユーザの投稿を支持または「いいね」としたり、または他のユーザによる投稿にコメントしたりするなど）。いくつかの実施形態では、ソーシャルネットワークシステム１０８の外部のシステムおよび／またはサービスによって、ユーザの代わりに情報を投稿することができる。例えば、ユーザは、映画のレビューを映画レビューウェブサイトに投稿することができ、適切な許可がある場合、そのウェブサイトがユーザの代わりにソーシャルネットワークシステム１０８にレビューをクロスポストしてもよい。別の例では、モバイルクライアントデバイス上で実行されるソフトウェアアプリケーションは、適切な許可がある場合、全地球測位システム（ＧＰＳ）または他のジオロケーション機能（例えば、Ｗｉ−Ｆｉ（登録商標）またはハイブリッド測位システム）を使用してユーザの位置を判定し、そのユーザの位置（例えば、「自宅にいる」、「職場にいる」、または「カリフォルニア州のサンフランシスコにいる」など）を用いてソーシャルネットワークシステム１０８を更新してもよく、および／またはユーザの位置から得られる情報および／またはユーザの位置に基づく情報を使用してソーシャルネットワークシステム１０８を更新してもよい。また、クライアントデバイス１０４−１，１０４−２，…１０４−ｎとの間で情報をやり取りするユーザは、ソーシャルネットワークシステム１０８によって提供されるソーシャルネットワーキングサービスを使用してユーザのグループを定義することもできる。また、クライアントデバイス１０４−１，１０４−２，…１０４−ｎとの間で情報をやり取りするユーザは、ソーシャルネットワークシステム１０８によって提供されるソーシャルネットワーキングサービスを使用して互いに通信し共同作業することもできる。
【００３９】
いくつかの実施形態では、ネットワークアーキテクチャ１００は、第三者サーバ１１０−１，１１０−２，…１１０−ｍも含む。いくつかの実施形態では、所与の第三者サーバ１１０が、直接またはソーシャルネットワークシステム１０８と連携して、ウェブページをクライアントデバイス１０４に提供する第三者ウェブサイトをホストするために使用される。いくつかの実施形態では、ソーシャルネットワークシステム１０８は、インラインフレーム（「ｉｆｒａｍｅ」）を使用して、ユーザのソーシャルネットワークセッション内の独立したウェブサイトをネストする。いくつかの実施形態では、所与の第三者サーバを使用して、直接またはソーシャルネットワークシステム１０８と連携して、クライアントデバイス１０４によって使用される第三者アプリケーションをホストする。いくつかの実施形態では、ソーシャルネットワークシステム１０８は、ｉｆｒａｍｅを使用することにより、第三者サーバ１１０によって個別にホストされ、ユーザ１０２のソーシャルネットワーキングセッション内で動作し且つソーシャルネットワークシステム１０８内のユーザのプロファイルを通じてアクセスされるアプリケーションを第三者の開発者が作成することを可能にする。例示的な第三者アプリケーションには、書籍、ビジネス、通信、コンテスト、教育、娯楽、ファッション、金融、飲食、ゲーム、健康およびフィットネス、ライフスタイル、地域情報、映画、テレビ、音楽および音声、ニュース、写真、ビデオ、生産性、参照資料、セキュリティ、ショッピング、スポーツ、旅行、ユーティリティなどのアプリケーションが含まれる。いくつかの実施形態では、所与の第三者サーバ１１０は、直接またはソーシャルネットワークシステム１０８と連携して、クライアントデバイス１０４によって使用される企業システムをホストするために使用される。いくつかの実施形態では、所与の第三者サーバ１１０は、第三者コンテンツ（例えば、ニュース記事、レビュー、メッセージフィードなど）を提供するために使用される。
【００４０】
いくつかの実施形態では、所与の第三者サーバ１１０は単一のコンピューティングデバイスである一方、他の実施形態では、所与の第三者サーバ１１０は、サーバシステム（例えば、クラウドコンピューティング）の動作を実行するように互いに連動する複数のコンピューティングデバイスによって実現される。
【００４１】
図２は、いくつかの実施形態による例示的なソーシャルネットワークシステム１０８を示すブロック図である。ソーシャルネットワークシステム１０８は、典型的には、１つ以上の処理ユニット（プロセッサまたはコア）２０２と、１つ以上のネットワークまたは他の通信インタフェース２０４と、メモリ２０６と、これらの構成を相互接続するための１つ以上の通信バス２０８とを含むサーバシステムである。通信バス２０８は、任意で、システムの構成間の通信を相互接続および制御する回路（チップセットとも呼ばれる）を含む。ソーシャルネットワークシステム１０８は、任意で、ユーザインタフェース（図示せず）を含む。ユーザインタフェースが提供される場合には、ユーザインタフェースは表示デバイスを含んでもよく、また、任意で、キーボード、マウス、トラックパッド、および／または入力ボタンなどの入力を含む。代替的にまたは追加的に、表示デバイスはタッチ感知面を含み、その場合、ディスプレイはタッチ感知ディスプレイである。
【００４２】
メモリ２０６は、ＤＲＡＭ、ＳＲＡＭ、ＤＤＲ−ＲＡＭ、または他のランダムアクセスソリッドステートメモリ装置などの高速ランダムアクセスメモリを含む。メモリ２０６は、１つ以上の磁気ディスク記憶装置、光ディスク記憶装置、フラッシュメモリ装置、および／または他の不揮発性ソリッドステート記憶装置などの不揮発性メモリを含んでもよい。メモリ２０６は、任意で、プロセッサ２０２から離れた位置にある１つ以上の記憶装置を含んでもよい。メモリ２０６、またはメモリ２０６内の不揮発性メモリ装置は、非一時的なコンピュータ可読記憶媒体を含む。
【００４３】
いくつかの実施形態では、メモリ２０６またはメモリ２０６のコンピュータ可読記憶媒体は、以下のプログラム、モジュールおよびデータ構造、またはそれらのサブセットもしくはスーパーセットを記憶する。
・種々の基本システムサービスを扱い、ハードウェア依存タスクを実行するための手順を含むオペレーティングシステム２１０；
・１つ以上の通信ネットワークインタフェース２０４（有線または無線）と、１つ以上の通信ネットワーク（例えば、１つ以上のネットワーク１０６）とを介して、ソーシャルネットワークシステム１０８を他のコンピュータに接続するために使用されるネットワーク通信モジュール２１２；
・ソーシャルネットワークに関連付けられたデータを格納するためのソーシャルネットワークデータベース２１４。ソーシャルネットワークに関連付けられるデータとしては、例えば、以下が挙げられる：
・・ユーザ情報２１８などのエンティティ情報２１６；
・・接続情報２２０；および
・・コンテンツ２２２。コンテンツ２２２には、以下が含まれる：
・・・ユーザコンテンツ２２４（例えば、テキストコメント（例えば、投稿、ステータス、更新、アナウンス、返信、ロケーション「チェックイン」、プライベート／グループメッセージなど）、写真、ビデオ、音声ファイル、リンク、ドキュメント、および／または他のデジタル電子コンテンツなど）；および／または
・・・ニュース記事２２６；
・ソーシャルネットワーキングサービス、ソーシャルメディアアプリケーション、および関連機能を（例えば、図３におけるクライアントデバイス１０４上のブラウザモジュール３３８またはソーシャルネットワーククライアントモジュール３４０と連携して）提供するためのソーシャルネットワークサーバモジュール２２８。ソーシャルネットワークサーバモジュール２２８には、以下が含まれる：
・・クライアント１０４のユーザ１０２をソーシャルネットワークシステム１０８にロギングするためのログインモジュール２３０；および
・・表示のためにクライアント１０４に送信すべきコンテンツを提供するためのコンテンツ供給マネージャ２３２。コンテンツ供給マネージャ２３２には、以下が含まれる：
・・・ソーシャルネットワークデータベース２１４にオブジェクト（画像、ビデオ、音声ファイル、コメント、ステータスメッセージ、リンク、アプリケーション、および／または他のエンティティ情報２１６、接続情報２２０、またはコンテンツ２２２など）を記述するためのコンテンツ生成モジュール２３４；および
・・・表示のためにクライアント１０４に送信すべき情報／コンテンツを選択するためのコンテンツ選択モジュール２３６；
・ソーシャルネットワークシステムのユーザがソーシャルネットワーク内のコンテンツおよび他のユーザを検索することを可能にするための検索モジュール２３８。
【００４４】
ソーシャルネットワークデータベース２１４は、ソーシャルネットワークに関連付けられたデータを、グラフ、次元、フラット、階層、ネットワーク、オブジェクト指向、リレーショナル、および／またはＸＭＬデータベースなどの１つ以上のタイプのデータベースに格納する。
【００４５】
いくつかの実施形態では、ソーシャルネットワークデータベース２１４はグラフデータベースを含み、このグラフデータベースは、グラフデータベース内のノードとして表されるエンティティ情報２１６と、グラフデータベース内のエッジとして表される接続情報２２０とを有する。つまり、グラフデータベースは、複数のノードと共に、対応するノード間の接続を定義する複数のエッジとを含む。いくつかの実施形態では、ノードおよび／またはエッジはそれら自体、対応するエンティティの識別子、属性、および情報を含むデータオブジェクトであり、それらのいくつかはソーシャルネットワーキングサービスの対応するプロファイルページまたは他のページ上にてクライアント１０４でレンダリングされる。いくつかの実施形態では、ノードは、クライアント１０４におけるそれぞれのノードに対応するページのレンダリングと関連してコンテンツをレンダリングする際に使用するための、他のオブジェクト、データ構造、またはリソースへのポインタまたは参照も含む。
【００４６】
エンティティ情報２１６は、ユーザプロファイル、ログイン情報、プライバシーおよび他の選好、経歴データなどのユーザ情報２１８を含む。いくつかの実施形態では、所与のユーザについて、ユーザ情報２１８は、ユーザの名前、プロフィール画像、連絡先情報、生年月日、性別、婚姻状態、家族状態、雇用、教育背景、嗜好、関心および／または他の人口学的情報を含む。
【００４７】
いくつかの実施形態では、エンティティ情報２１６は、物理的な場所（例えば、レストラン、劇場、ランドマーク、都市、州、または国）、現実または知的財産（例えば、彫刻、絵画、映画、ゲーム、歌、アイデア／コンセプト、写真、または書面による作業）、ビジネス、人々のグループ、および／またはビジネスのグループを含む。いくつかの実施形態では、エンティティ情報２１６は、音声ファイル、ビデオファイル、デジタル写真、テキストファイル、構造化文書（例えば、ウェブページ）、またはアプリケーションなどのリソースに関する情報を含む。いくつかの実施形態では、リソースは、ソーシャルネットワークシステム１０８内（例えば、コンテンツ２２２内）に、または第三者サーバ１１０などの外部サーバ上に配置される。
【００４８】
いくつかの実施形態では、接続情報２２０は、ソーシャルネットワークデータベース２１４内のエンティティ間の関係に関する情報を含む。いくつかの実施形態では、接続情報２２０は、グラフデータベース内のノード対を接続するエッジに関する情報を含む。いくつかの実施形態では、一対のノード対を接続するエッジは、その一対のノード間の関係を表す。
【００４９】
いくつかの実施形態では、エッジは、一対のノード間の関係に対応する１つ以上のデータオブジェクトまたは属性を含むかまたは表す。例えば、第２のユーザが第１のユーザの「フレンド」であることを第１のユーザが示す場合、ソーシャルネットワークシステム１０８は第２のユーザに「フレンドリクエスト」を送信する。第２のユーザが「フレンドリクエスト」を確認すると、ソーシャルネットワークシステム１０８は、第１のユーザのユーザノードと第２のユーザのユーザノードとを接続するエッジを作成し、そのエッジをグラフデータベースに接続情報２２０として格納する。この接続情報２２０は、第１のユーザと第２のユーザとがフレンドであることを示す。いくつかの実施形態では、接続情報２２０は、友人関係、家族関係、ビジネスまたは雇用関係、ファン関係、フォロワー関係、訪問者関係、加入者関係、上位／下位関係、相互関係、非相互関係、他の適切なタイプの関係、またはそれらのうちの２つ以上の関係を含む。
【００５０】
いくつかの実施形態では、ユーザノードと他のエンティティノードとの間のエッジは、当該ユーザノードのユーザによって当該他のエンティティノードに向けて実行される特定の動作またはアクティビティに関する接続情報を表す。例えば、ユーザは、他のノードのエンティティを「好き」であるか、または、そのエンティティに関して、「出席している」、「再生している」、「聞いている」、「料理している」、「働いている」、もしくは「見ている」などの状態にある。他のノードのエンティティに対応するソーシャルネットワーキングサービスのページは、例えば、「好き」、「チェックイン」、または「お気に入りに追加」などの選択可能なアイコンを含み得る。ユーザがこれらのアイコンのうちの１つをクリックすると、ソーシャルネットワークシステム１０８は、対応するユーザの動作に応答して、「好き」エッジ、「チェックイン」エッジ、または「お気に入り」エッジを作成し得る。別の例として、ユーザが特定のアプリケーション（例えば、オンライン音楽アプリケーション）を使用して特定の曲を聴くことが考えられる。この場合、ソーシャルネットワークシステム１０８は、ユーザがその曲を聴いてアプリケーションを使用したことを示すべく、ユーザに対応するユーザノードと、その曲およびアプリケーションにそれぞれ対応するエンティティノードとの間に、「聴取済み」エッジおよび「使用済み」エッジを作成し得る。さらに、ソーシャルネットワークシステム１０８は、その特定の曲が特定のアプリケーションによって演奏されたことを示すべく、その曲およびアプリケーションに対応するエンティティノード間に「再生済み」エッジを作成し得る。
【００５１】
いくつかの実施形態では、コンテンツ２２２は、テキスト（例えば、ＡＳＣＩＩ、ＳＧＭＬ、ＨＴＭＬ）、画像（例えば、ＪＰＥＧ、ｔｉｆ、ｇｉｆ）、グラフィックス（ベクトルベースまたはビットマップ）、音声、ビデオ（例えば、ｍｐｅｇ）、他のマルチメディア、および／またはそれらの組み合わせを含む。いくつかの実施形態では、コンテンツ２２２は、実行可能コード（例えば、ブラウザウィンドウまたはフレーム内で実行可能なゲーム）、ポッドキャスト、リンクなどを含む。
【００５２】
いくつかの実施形態では、ソーシャルネットワークサーバモジュール２２８は、ウェブまたはハイパーテキスト転送プロトコル（ＨＴＴＰ）サーバ、ファイル転送プロトコル（ＦＴＰ）サーバ、ならびに、コモンゲートウェイインタフェース（ＣＧＩ）スクリプト、ＰＨＰハイパーテキストプリプロセッサ（ＰＨＰ）、アクティブサーバページ（ＡＳＰ）、ハイパーテキストマークアップ言語（ＨＴＭＬ）、拡張可能マークアップ言語（ＸＭＬ）、Ｊａｖａ（登録商標）、ＪａｖａＳｃｒｉｐｔ（登録商標）、アシンクロナスＪａｖａＳｃｒｉｐｔ及びＸＭＬ（ＡＪＡＸ）、ＸＨＰ、Ｊａｖｅｌｉｎ、ワイヤレスユニバーサルリソースファイル（ＷＵＲＦＬ）などを使用して実装されるウェブページおよびアプリケーションが挙げられる。
【００５３】
図３は、いくつかの実施形態による例示的なクライアントデバイス１０４（例えば、モバイルデバイス）を示すブロック図である。クライアントデバイス１０４は、典型的には、１つ以上の処理ユニット（プロセッサまたはコア）３０２と、１つ以上のネットワークまたは他の通信インタフェース３０４と、メモリ３０６と、これらの構成を相互接続するための１つ以上の通信バス３０８とを含む。通信バス３０８は、任意で、システムの構成間の通信を相互接続および制御する回路（チップセットとも呼ばれる）を含む。クライアントデバイス１０４はユーザインタフェース３１０を含む。ユーザインタフェース３１０は、典型的には、表示デバイス３１２を含む。いくつかの実施形態では、クライアントデバイス１０４は、キーボード、マウス、および／または他の入力ボタン３１６などの入力を含む。代替的または追加的に、いくつかの実施形態では、表示デバイス３１２はタッチ感知面３１４を含み、その場合、表示デバイス３１２はタッチ感知ディスプレイである。タッチ感知ディスプレイ３１２を有するクライアントデバイスでは、物理的キーボードは任意である（例えば、キーボード入力が必要なときにソフトキーボードが表示されてもよい）。また、ユーザインタフェース３１０は、スピーカ、またはスピーカやイヤホンやヘッドホンに接続された音声出力接続などの音声出力デバイス３１８を含む。さらに、いくつかのクライアントデバイス１０４は、キーボードを補完するためにまたはキーボードに代えて、マイクロフォンおよび音声認識を使用する。任意で、クライアントデバイス１０４は、音声（例えば、ユーザからの会話）を取り込むための音声入力デバイス３２０（例えば、マイクロフォン）を含む。任意で、クライアントデバイス１０４は、クライアントデバイス１０４の位置を決定するためのＧＰＳ（全地球測位衛星）または他のジオロケーションレシーバなどの位置検出デバイス３２２を含む。また、クライアントデバイス１０４は、任意で、カメラまたはウェブカメラなどの画像／ビデオキャプチャデバイス３２４を含む。
【００５４】
メモリ３０６は、ＤＲＡＭ、ＳＲＡＭ、ＤＤＲ−ＲＡＭ、または他のランダムアクセスソリッドステートメモリ装置などの高速ランダムアクセスメモリを含む。メモリ３０６は、１つ以上の磁気ディスク記憶装置、光ディスク記憶装置、フラッシュメモリ装置、または他の不揮発性ソリッドステート記憶装置などの不揮発性メモリを含んでもよい。メモリ３０６は、任意で、プロセッサ３０２から離れた位置にある１つ以上の記憶装置を含んでもよい。メモリ３０６、またはメモリ３０６内の不揮発性メモリ装置は、非一時的なコンピュータ可読記憶媒体を含む。
【００５５】
いくつかの実施形態では、メモリ３０６またはメモリ３０６のコンピュータ可読記憶媒体は、以下のプログラム、モジュールおよびデータ構造、またはそれらのサブセットもしくはスーパーセットを記憶する。
・種々の基本システムサービスを扱い、ハードウェア依存タスクを実行するための手順を含むオペレーティングシステム３２６；
・１つ以上の通信ネットワークインタフェース３０４（有線または無線）と、１つ以上の通信ネットワーク（インターネット、セルラ電話ネットワーク、モバイルデータネットワーク、他の広域ネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワークなど）とを介して、クライアントデバイス１０４を他のコンピュータに接続するために使用されるネットワーク通信モジュール３２８；
・画像／ビデオキャプチャデバイス３２４によってキャプチャされたそれぞれの画像またはビデオを処理するための画像／ビデオキャプチャモジュール３３０（例えば、カメラモジュール）。なお、それぞれの画像またはビデオは（例えば、クライアントアプリケーションモジュール３３６によって）ソーシャルネットワークシステム１０８に送信またはストリーミングされ得る；
・音声入力デバイス３２０によってキャプチャされた音声を処理するための音声入力モジュール３３２（例えば、マイクロフォンモジュール）。なお、それぞれの音声は（例えば、クライアントアプリケーションモジュール３３６によって）ソーシャルネットワークシステム１０８に送信またはストリーミングされ得る；
・クライアントデバイス１０４の位置を（例えば、位置検出デバイス３２２を使用して）決定し、種々のアプリケーション（例えば、ソーシャルネットワーククライアントモジュール３４０）で使用するべくこの位置情報を提供するための位置検出モジュール３３４（例えば、ＧＰＳ、Ｗｉ−Ｆｉ（登録商標）、またはハイブリッド測位モジュール）；および
・１つ以上のクライアントアプリケーションモジュール３３６。クライアントアプリケーションモジュール３３６は、以下のモジュール（または命令セット）、あるいはそれらのサブセットもしくはスーパーセットを含む：
・・ウェブサイト（例えば、ソーシャルネットワークシステム１０８によって提供されるソーシャルネットワーキングウェブサイト）にアクセスし、閲覧し、情報をやり取りするためのウェブブラウザモジュール３３８（例えば、マイクロソフトによるＩｎｔｅｒｎｅｔ Ｅｘｐｒｏｒｅｒ（登録商標）、モジラによるＦｉｒｅｆｏｘ（登録商標）、アップルによるＳａｆａｒｉ（登録商標）、またはグーグルによるＣｈｒｏｍｅ（登録商標））；
・・ソーシャルネットワーク（例えば、ソーシャルネットワークシステム１０８によって提供されるソーシャルネットワーク）、ソーシャルメディアアプリケーション、および関連機能とのインタフェースを提供するためのソーシャルネットワーククライアントモジュール３４０；
・・クライアントデバイス１０４のリソース（例えば、音声入力デバイス３２０、位置検出デバイス３２２、画像／ビデオキャプチャデバイス３２４、および／またはメモリ３０６内の各モジュール）へのアプリケーションのアクセス許可を管理するための許可モジュール３４２。許可モジュール３４２には、以下が含まれる：
・・・アプリケーションがリソースにアクセスするための許可および条件を記憶するための許可テーブル３４４；および
・・・アプリケーションによって送信されたアクセス要求のレコード、アクセス要求に応答して受信されたユーザ入力、およびアクセス要求がなされたときおよび／またはユーザ入力が受信された時点におけるクライアントデバイス１０４のコンテキスト情報を記憶するためのレコードテーブル３４６；および／または
・・他の任意のクライアントアプリケーションモジュール３４８（例えば、ワード処理、カレンダー、地図、天気、在庫、時間管理、バーチャルデジタルアシスタント、プレゼンテーション、ナンバークランチング（スプレッドシート）、描画、インスタントメッセージング、電子メール、電話通信、ビデオ会議、写真管理、ビデオ管理、デジタル音楽プレイヤー、デジタルビデオプレイヤー、２Ｄゲーム、３Ｄ（例えば、バーチャルリアリティ）ゲーム、電子書籍リーダー、および／またはトレーニング支援のためのアプリケーションなど）。
【００５６】
いくつかの実施形態では、許可モジュール３４２は、アプリケーション（例えば、クライアントアプリケーションモジュール３３６）がクライアントデバイス１０４のリソースにアクセスするための許可を（例えば、図４ＡのＧＵＩ４００を表示することによって）クライアントデバイス１０４のユーザに求めるように構成されている。許可モジュール３４２は、アプリケーションによるリソースへのアクセスを許可／拒否するユーザ入力を受信し、その受信したユーザ入力に応答してアプリケーションによるアクセスを許可／拒否する。また、いくつかの実施形態では、許可モジュール３４２は、リソースからデータを取得し、その取得したデータを要求元のアプリケーションに提供する。また、いくつかの実施形態では、許可モジュール３４２は、アクセスを許可または拒否するユーザ指定条件（例えば、許可位置、許可ユーザ、１度のみの許可（ワンタイム許可）、位置分解能など）を管理し、その条件を使用してそれに従ってアクセスを許可または拒否する。いくつかの実施形態では、許可モジュール３４２は、アプリケーションによって送信されたアクセス要求の数が閾値を満たしているか否かを判定し、その判定結果に従ってアプリケーションのアクセスを拒否するおよび／またはユーザにアラートを通知する。いくつかの実施形態では、記憶されたレコード（例えば、レコードテーブル３４６内のレコード）に基づいて、許可モジュール３４２は、複数のアクセス要求に関する統計情報を提示し、および／またはデバイスリソースへのアプリケーションのアクセスを許可または拒否する条件の推奨をユーザに提示する。
【００５７】
上述したモジュールおよびアプリケーションの各々は、上述した１つ以上の機能および／または本願に記載された方法（例えば、本明細書に記載のコンピュータ実装方法および他の情報処理方法）における１つ以上の機能を実行するための実行可能命令セットに対応する。これらのモジュール（すなわち、命令セット）は、個別のソフトウェアプログラム、プロシージャ、またはモジュールとして実装される必要はなく、したがって、これらのモジュールの種々のサブセットが、任意で、種々の実施形態において組み合わされるかもしくは再配置される。いくつかの実施形態では、メモリ２０６および／またはメモリ３０６は、上述したモジュールおよびデータ構造のサブセットを記憶する。さらに、メモリ２０６および／またはメモリ３０６は、任意で、上述していない追加のモジュールおよびデータ構造を記憶する。
【００５８】
以下、クライアントデバイス（例えば、図３のクライアントデバイス１０４）に実装することが可能なグラフィカルユーザインタフェース（「ＧＵＩ」）およびその関連プロセスの実施形態について説明する。
【００５９】
図４Ａおよび図４Ｂは、いくつかの実施形態による、デバイスリソースに対するアクセス許可を管理しアクセス要求統計情報を提示するための、クライアントデバイス１０４のディスプレイ上に示される例示的なＧＵＩ４００，４１０を示す。ＧＵＩ４００，４１０は、方法６００（図６）を含む以下に説明するプロセスを示す。図４Ａおよび図４ＢはＧＵＩの例を示しているが、他の実施形態では、図４Ａおよび図４Ｂの実施形態とは異なる構成のＧＵＩがユーザインタフェース要素を表示する。
【００６０】
図４Ａは、アプリケーション（例えば、図３の許可モジュール３４２）の例示的なＧＵＩ４００を示す。ＧＵＩ４００は、クライアントデバイス１０４−１のリソースへの他のアプリケーションのアクセス許可を管理する。ＧＵＩ４００は、クライアントデバイス１０４−１のリソースへのアクセス許可を指定するユーザ入力（例えば、ユーザインタフェース要素４０４の選択）をユーザが与えることを可能にする。ＧＵＩ４００は、許可要求プロンプト４０２と、デバイスリソースに対するアクセスを許可または拒否する許可条件を指定するためのユーザインタフェース要素４０４とを含む。
【００６１】
いくつかの実施形態では、ＧＵＩ４００は、デバイスリソースへのアクセスを要求する特定のアプリケーション機能をユーザが利用しようと試みることに応答して表示される（例えば、地図アプリケーションを使用して現在の位置から目的地までの道順を検索する場合、クライアントデバイス１０４の現在の位置を決定するためにクライアントデバイス１０４の位置検出デバイス３２２（図３）を使用する必要がある）。いくつかの実施形態では、ＧＵＩ４００は、デバイスリソースへのアクセスを要求するバックグラウンドプロセスを実行するアプリケーション（アクセス許可を管理するためのアプリケーションとは異なる）に応答して表示される。
【００６２】
いくつかの実施形態では、許可要求プロンプト４０２は、アプリケーションがデバイスリソースにアクセスすることの許可をユーザに求めるテキストを含む。例えば、許可要求プロンプト４０２は、「アプリケーション０１」がクライアントデバイス１０４−１の現在の位置を決定するために位置検出デバイス３２２および／または位置検出モジュール３３４にアクセスすることの許可を与えるか否かをクライアントデバイス１０４−１のユーザに求める。アクセスを許可または拒否する種々のデバイスリソースについては、図６においてより詳細に説明する。
【００６３】
ユーザは、許可を求められたことに応答して、表示されたユーザインタフェース要素４０４のうちのいずれかを選択して許可内容を指定することができる。各ユーザインタフェース要素４０４は、要求元のアプリケーション（例えば、「アプリケーション０１」）がデバイスリソースにアクセスすることを許可または拒否することに対応する。異なるユーザインタフェース要素４０４は、リソースへのアクセスを許可または拒否する異なる条件に対応し、これらの条件は、アクセスを許可または拒否するための詳細設定（例えば、アクセスを許可または拒否する特定の回数、期間、ユーザ、位置、位置分解能など）を表す。図４Ａの例においては、ユーザインタフェース要素４０４の選択により、ユーザは、アプリケーション０１がリソースにアクセスすることを常に許可するか（例えば４０４−１）、アクセスを１度のみ許可するか（例えば４０４−２）、アクセスを常に拒否するか（例えば４０４−３）、アクセスを特定期間において許可するか（例えば４０４−４）、または他の許可条件オプションを指定することができる（例えば４０４−５）。ユーザインタフェース要素４０４−５を選択することで、ユーザが指定することが可能な追加の許可条件（例えば、位置を決定し得る特定の分解能、特定のユーザ、特定の位置など）の表示がトリガされる。ユーザは、単一の条件または複数の条件を指定することができる。アクセスを許可または拒否するための種々の許可条件については、図５Ａ〜５Ｂおよび図６においてより詳細に説明する。
【００６４】
図４Ｂは、アクセス許可を管理するためのアプリケーションの別の例示的なＧＵＩ４１０（例えば、許可モジュール３４２）を示す。ＧＵＩ４１０は、電子デバイス上のアプリケーション（例えば、図３の許可モジュール３４２以外の他のクライアントアプリケーションモジュール３３６）から受信したアクセス要求の統計情報を表示する。図示されるように、ＧＵＩ４１０は、複数のアプリケーションについてアクセス要求の統計情報を表示するための複数のセクション４１２（例えば、アプリケーション０１についてはセクション４１２−１、アプリケーション０２についてはセクション４１２−２など）と、それぞれのアプリケーションについて詳細なアクセス要求履歴を閲覧するためのユーザインタフェース要素４１４とを含む。
【００６５】
セクション４１２は、統計情報が表示されるアクセス許可に関する詳細（例えば、図３および図５Ａの許可テーブル３４４から取得される詳細）を表示する。この例では、セクション４１２−１は、アクセス許可の発生日時（「アクセス許可の発生日」）、アクセスが許可されたかどうか（「アクセス可否」）、アクセス許可が認められたリソース（「リソース」）、アクセス許可期間（「許可期間」）、アクセス許可位置（「許可位置」）、許可ユーザ（「許可ユーザ」）、およびアクセスがフォアグラウンドプロセスで許可されたのかバックグラウンドプロセスで許可されたのか（「フォアグラウンド／バックグラウンド」）を含む。ＧＵＩ４１０には示されていないが、セクション４１２は、ユーザによって適用可能なまたはユーザによって指定される他の追加のパラメータまたは条件を表示するように構成されてもよい。
【００６６】
さらに、セクション４１２は、アプリケーション（例えば、クライアントアプリケーションモジュール３３６）によって送信されたアクセス要求の種々の統計情報を表示する。この例では、クライアントデバイス１０４−１の位置検出デバイス３２２（図３）にアクセスするためにアプリケーション０１によって送信された要求に関する統計情報が示されている。この統計情報は、アプリケーション０１によって送信されたアクセス要求の最終時刻（「最終要求時刻」）、アクセス要求の最終送信位置（「最終要求位置」）、最後にアクセス要求を送信したアプリケーション０１のユーザ（例えば、ログインしたユーザ）（最終要求ユーザ）、統計情報を閲覧した日に受信したアクセス要求数（「今日のアクセス要求数」）、およびアクセス要求の発生日から受信したアクセス要求の総数（「アクセス要求総数」）を含む。ＧＵＩ４１０には示されていないが、セクション４１２は、他のアクセス要求統計情報を表示するように構成されてもよい。
【００６７】
ユーザによって指定されたアクセス許可情報を、対応するアプリケーションのアクセス要求統計情報とともに表示することによって、ユーザは、許可および規定された境界外で動作している潜在的に悪意のあるアプリケーションを識別することができる。また、ユーザは、デバイスリソースにアクセスする際にどのアプリケーションが最もリソース集約的であるか、また、どのデバイスリソースがアプリケーションによって最もアクセスされるかを識別することができる。さらに、アクセス要求統計情報に基づいて、アクセス許可を管理するアプリケーション（例えば、図３の許可モジュール３４２）は、疑わしいアプリケーションによるリソースへのアクセスを拒否したり、疑わしいアクティビティが検出されたときにユーザにアラートを通知したり、および／またはユーザに対してアクセス許可の推奨を提示することができる。
【００６８】
セクション４１２−１は、それぞれのアプリケーションについて、詳細なアクセス要求履歴を閲覧するためのユーザインタフェース要素４１４を任意で含む。例えば、ユーザインタフェース要素４１４を選択すると、アプリケーション０１によって送信された各アクセス要求の詳細リストを含むＧＵＩ（図示せず）が表示される。これらの各アクセス要求は、記憶されたレコード（例えば、要求時刻、要求元のユーザ、要求位置などを含む図３および図５Ｂのレコードテーブル３４６）から取得されたデータとともに表示される。
【００６９】
図５Ａおよび図５Ｂは、いくつかの実施形態による、アクセス許可およびアクセス要求レコードを格納する例示的なデータ構造を示す。いくつかの実施形態では、許可テーブル３４４（図５Ａ）およびレコードテーブル３４６（図５Ｂ）は、クライアントデバイスの１つ以上のモジュールまたはサブモジュール（例えば、図３におけるクライアントデバイス１０４のメモリ３０６のモジュール、および／または許可モジュール３４２のサブモジュール）に記憶される。代替的に、いくつかの実施形態では、許可テーブル３４４およびレコードテーブル３４６は、アクセス許可が管理、共有、および／または単一のユーザに関連付けられた複数のクライアントデバイスによって取得可能となるようにサーバシステム（例えば、図３のソーシャルネットワークシステム１０８）のモジュールに記憶される。さらに、いくつかの実施形態において、許可テーブル３４４および／またはレコードテーブル３４６は、追加のパラメータ、条件、統計情報、および／またはユーザ指定のアクセス許可またはアクセス要求に関するデータなどの、図５Ａおよび図５Ｂに示されていない追加のフィールドを含んで記憶するように構成される。
【００７０】
図５Ａは、リソースへのアプリケーションのアクセス許可を記憶する（例えば、図３のクライアントデバイス１０４のメモリ３０６に記憶される）許可テーブル３４４を示す。図示されるように、許可テーブル３４４のエントリは、デバイスリソースに対する各アプリケーションのアクセス許可に対応する。
【００７１】
アクセス許可は、アプリケーション（例えば、図３におけるクライアントデバイス１０４のクライアントアプリケーションモジュール３３６）が電子デバイスに記憶されているリソースにアクセスすることが承諾されているか不承諾であるかを定義する。許可テーブル３４４の各エントリは、アクセス許可が定義されるアプリケーション（「アプリケーションＩＤ」）、アクセスが許可または拒否されるリソース（「リソース」）、リソースへのアクセスが許可されているか拒否されているか（アクセス可否）、およびアクセス許可が定義された日時（「アクセス許可日時」）を識別する。任意で、許可テーブル３４４は、アクセスを許可または拒否する条件を指定することができる。例えば、特定期間（「期間」）、特定位置（「位置」）、および／または特定ユーザ（「ユーザ」）に対してのみアクセスを許可することができる。さらには、特定の分解能（位置追跡リソースの場合には「位置分解能」）および／またはフォアグラウンドプロセスもしくはバックグラウンドプロセス（「フォアグラウンド／バックグラウンド」）にアクセス許可を制限することができる。
【００７２】
一例として、「アプリケーション０１」がクライアントデバイス１０４（例えば、図３の位置検出デバイス３２２）のＧＰＳ装置（または他の全地球的航法衛星システム装置）にアクセスすることが、「ユーザ０１」に対しては無期限に（「常時」）許可されている。このアクセス許可は、クライアントデバイス１０４の位置から半径２０００フィートの分解能に制限され、アプリケーション０１がバックグラウンドプロセスではなくフォアグラウンドプロセス（例えば、クライアントデバイス１０４の現在位置を表示する双方向地図アプリケーション）で動作しているときにのみＧＰＳ装置にアクセスすることができる。さらには、２０１４年１１月２５日の午前２時５分にこのアクセス許可が（例えば、受信したユーザ入力によって）与えられたことが示されている。
【００７３】
図５Ｂは、アプリケーションにより送信されたアクセス要求のレコードを記憶する（例えば、図３におけるクライアントデバイス１０４のメモリ３０６に記憶された）レコードテーブル３４６を示す。これらのレコードは、（例えば、図４ＢのＧＵＩ４１０に示されるような）アクセス要求統計情報を生成するために使用することができる。図示されるように、レコードテーブル３４６のエントリは、特定のアクセス要求に対応する識別インデックス番号（「要求インデックス＃」）、デバイスリソースへのアクセスを要求するアプリケーション（「アプリケーションＩＤ」）、アクセスが要求されたリソース（「リソース」）、アクセス要求が送信された日時（あるいは、アクセスが許可／拒否された時）（「要求の日時」）、アクセス要求が送信された際の要求元アプリケーションのユーザ（例えば、ログインしたユーザ）（要求元ユーザ）、アクセス要求が送信された位置（「要求の位置」）、およびアクセスが許可されたか拒否されたか（「要求の結果」）を含む。図示されていないが、アクセス要求の結果に関する追加の詳細がレコードテーブル３４６に含まれてもよい（例えば、許可期間、許可位置など）。
【００７４】
一例として、アクセス要求「００１」は、クライアントデバイス１０４のＧＰＳ装置（例えば、図３の位置検出デバイス３２２）にアクセスするべく「アプリケーション０１」によって送信された要求に対応する。上述した許可テーブル３４４の例で説明すると、この要求に応答して、「アプリケーション０１」がＧＰＳ装置にアクセスする許可が与えられる（例えば、「アプリケーション０１」はＧＰＳ装置にアクセスすることが無期限に（「常時」許可されている）。「ユーザ０１」が「アプリケーション０１」を使用していたとき（または、クライアントデバイス１０４を使用していたとき）に、ＧＰＳ座標（３７．４２０５９１、−１２２．１４１３３０）に相当する位置で、２０１４年１１月２５日の午前２時５分にアクセス要求「００１」に応答してアクセス許可が与えられたことを示している。
【００７５】
図６は、いくつかの実施形態によるデバイスリソースへのアクセス許可を管理する方法６００を示すフローチャートである。方法６００は、電子デバイス（例えば、図１および図３のクライアントデバイス１０４、ここでは、クライアントデバイス１０４はスタンドアロンデバイスとして動作している）で実行される。図６は、コンピュータメモリ（例えば、図３におけるクライアントデバイス１０４のメモリ３０６）または他のコンピュータ可読記憶媒体に記憶された命令に対応する。
【００７６】
第１のアプリケーション６０２−１（例えば、図３のクライアントアプリケーションモジュール３３６などの、クライアントデバイス１０４のモジュールに対応する）は、第１のアプリケーションが電子デバイスのリソースにアクセスするための第１の要求を、第２のアプリケーション６０２−２（例えば、許可モジュール３４２に対応する）に送信する（６０６）。第１および第２のアプリケーション６０２−１，６０２−２は、電子デバイスのオペレーティングシステム上で動作する。
【００７７】
電子デバイスのリソースは、この電子デバイスによって提供されるサブデバイス、構成要素、機構、アプリケーション、および／または他の機能が含まれる。例えば、リソースは、マイクロフォン（例えば、図３において、音声をキャプチャするための音声入力デバイス３２０）、電子デバイスのメッセージングアプリケーション（例えば、ＳＭＳテキストメッセージを送受信するためのクライアントアプリケーションモジュール３４８）、電子デバイスの位置追跡デバイス（例えば、クライアントデバイス１０４の位置を決定するための位置検出デバイス３２２）、および電子デバイスのカメラ（例えば、画像またはビデオをキャプチャするための画像／ビデオキャプチャデバイス３２４）を含む。他のリソースの例としては、各サブデバイスまたは構成要素に関連付けられたモジュール（例えば、図３における画像／ビデオキャプチャモジュール３３２、音声入力モジュール３３２、および位置検出モジュール３３４）が挙げられる。
【００７８】
第１の要求に応答して、第２のアプリケーション６０２−２は、第１のアプリケーション６０２−１がリソースにアクセスするための許可を電子デバイスのユーザ６０４（例えば、図１におけるクライアントデバイス１０４−１のユーザ１０２−１）に求める（６０８）。例えば、「アプリケーション０１」のアクセス許可を指定するようにユーザ６０４に求めるべく、ＧＵＩ４００（図４Ａ）が許可要求プロンプト４０２と共に表示される。
【００７９】
いくつかの実施形態では、第２のアプリケーション６０２−２は、第１の要求に応答して、第１のアプリケーション６０２−１がリソースにアクセスすることを許可する権限が現時点では第２のアプリケーション６０２−２に与えられていないと判定する。この判定に応答して、第１のアプリケーション６０２−１がリソースにアクセスするための許可がユーザ６０４に求められる（６０８）。例えば、第１のアプリケーション６０２−１（例えば、図３のクライアントアプリケーションモジュール３３６に対応する「アプリケーション０１」）は、クライアントデバイス１０４のマイクロフォン（例えば、音声入力デバイス３２０および／または対応する音声入力モジュール３３２）にアクセスするための要求を第２のアプリケーション６０２−２（例えば、許可モジュール３４２）に送信する。すると、アプリケーション６０２−２は、マイクロフォンへのアクセスについてアプリケーション６０２−１（「アプリケーション０１」）に対応するアクセス許可が与えられているか許可テーブル３４４を検索する。アクセス許可が存在しない場合、第２のアプリケーション６０２−２は、第１のアプリケーション６０２−１がマイクロフォンにアクセスするための許可を指定するようにユーザ６０４に求める。
【００８０】
第１のアプリケーション６０２−１がリソースにアクセスするための許可が第２のアプリケーション６０２−２からユーザ６０４に求められると（６０８）、第１のアプリケーション６０２−１がリソースにアクセスすることを許可または拒否する第１のユーザ入力が（例えば、アプリケーション６０２−２によって）受信される（６１０）。その第１のユーザ入力に応答して、電子デバイスは、第２のアプリケーション６０２−２を使用して、第１のアプリケーション６０２−１がリソースにアクセスすることを許可または拒否する（６１４）。
【００８１】
いくつかの実施形態では、第２のアプリケーション６０２−２を使用して第１のアプリケーション６０２−１がリソースにアクセスする許可を与えることは、第２のアプリケーション６０２−２を使用してリソースからデータを取得することを含む。第２のアプリケーション６０２−２は、その後、第１のアプリケーション６０２−１にそのデータを提供する。したがって、第２のアプリケーション６０２−２は、第１のアプリケーション６０２−１がリソースにアクセスするためのプロキシとして機能する（例えば、第２のアプリケーション６０２−２は、位置検出デバイス３２２からＧＰＳ座標を取得し、第１のアプリケーション６０２−１にそのＧＰＳ座標を提供する）。他の実施形態では、第１のアプリケーション６０２−１のアクセスが許可されると、第１のアプリケーション６０２−１が、第２のアプリケーション６０２−２とは独立してリソースに直接アクセスする。
【００８２】
条件とは、リソースへのアクセスに課される制限、および／またはアクセスを許可するために満たすべき要件である。いくつかの実施形態では、第１のユーザ入力は、第１のアプリケーション６０２−１がリソースにアクセスすることを許可または拒否する１つ以上の条件を指定する（６１０）。条件は、第２のアプリケーション６０２−２に割り当てられたメモリ（例えば、図３における許可モジュール３４２の許可テーブル３４４）に記憶される（６１２）。第２のアプリケーション６０２−２は、この条件を使用して、第１のアプリケーション６０２−１からの後続の要求に応答して第１のアプリケーション６０２−１にリソースにアクセスする許可を与えるかどうかを決定する（６１４）。
【００８３】
例えば、第１のユーザ入力は、第１のアプリケーション６０２−１がリソースにアクセスすることを１度のみ許可すること（ワンタイム許可）を指定する。第２のアプリケーション６０２−２が、その第１のユーザ入力に応答して、第１のアプリケーション６０２−１にリソースへのアクセスを許可した後、第１のアプリケーション６０２−１がリソースにアクセスするための第２の要求が第１のアプリケーション６０２−１から第２のアプリケーション６０２−２に送信される。第１のユーザ入力がアクセスを１度のみ許可するものであったことから、このアクセスを提供する権限は第２のアプリケーション６０２−２に与えられていない。従って、第２の要求に応答して、第２のアプリケーション６０２−２は、第１のアプリケーション６０２−１がリソースに再びアクセスする許可をユーザに求める。そして、第１のアプリケーション６０２−１にリソースにアクセスする許可を与えるかどうかを示す第２のユーザ入力が受信される。第２のアプリケーション６０２−２は、その第２のユーザ入力に従って、第１のアプリケーション６０２−１がリソースにアクセスすることを許可または拒否する。いくつかの実施形態では、ワンタイム許可は、第１のアプリケーション６０２−１に対して、一つのアクセス要求のみについてデータ（例えば、図３の画像／ビデオキャプチャデバイス３２４でキャプチャされた一つの写真）を取得するべくリソースにアクセスする許可を与える。他の実施形態では、ワンタイム許可は、第１のアプリケーション６０２−１に対して、その要求元アプリケーションの起動／実行の一つのセッションまたはインスタンスについてリソースにアクセスする許可を与える（例えば、地図アプリケーションは、ユーザがその地図アプリケーションを終了および／または再起動するまで、クライアントデバイス１０４のＧＰＳ座標にアクセスすることができる）。
【００８４】
いくつかの実施形態では、第１のユーザ入力は、第１のアプリケーション６０２−１がリソースにアクセスすることを許可する期間を指定する。その期間の間、第２のアプリケーション６０２−２が繰り返し使用されることにより、第１のユーザ入力に従って、第１のアプリケーション６０２−１に対し、リソースにアクセスする許可が自動的に（すなわち、追加のユーザ入力を求めることなく）与えられる。この指定される期間は、アクセスを許可する日付の範囲（例えば、２０１４年１１月１日から２０１４年１２月１日までの間はアクセスが許可される）、または時間の範囲（例えば、午後１時から午後５時までの間はアクセスが許可される）、または指定した時間制限（例えば、１時間の間など）、あるいはこれらの任意の組み合わせ（例えば、指定された日付の範囲において、指定された時間の間、アクセスが許可される）とすることができる。代替的に、第１のユーザ入力は、第１のアプリケーション６０２−１がリソースにアクセスすることを拒否する期間を指定する。この場合には、その期間を除いてアクセスが許可される。
【００８５】
いくつかの実施形態では、第１のユーザ入力は、第１のアプリケーション６０２−１がリソースにアクセスすることを許可する回数を指定する。この回数を超えない限り、第２のアプリケーション６０２−２が繰り返し使用されることにより、第１のユーザ入力に従って、第１のアプリケーション６０２−１に対し、リソースにアクセスする許可が自動的に与えられる。例えば、第１のユーザ入力は、第１のアプリケーション６０２−１からのアクセス要求を許可する数を指定する。
【００８６】
いくつかの実施形態では、第１のユーザ入力は、第１のアプリケーション６０２−１がリソースにアクセスすることを許可する許可位置を指定する。電子デバイスの検出位置が許可位置に対応する間、第２のアプリケーション６０２−２が繰り返し使用されることにより、第１のユーザ入力に従って、第１のアプリケーション６０２−１に対し、リソースにアクセスする許可が自動的に与えられる。この指定される許可位置は、検出位置に関連付けられた座標（例えば、ＧＰＳ座標）、会場、組織、またはエンティティ（例えば、レストラン、ユーザの自宅、ユーザの職場など）、あるいはアクセスが許可される所定のエリア（例えば、ジオフェンスエリア）とすることができる（例えば、ユーザの自宅から半径半マイルの範囲で許可される）。一例として、第１のユーザ入力は、ユーザの自宅に関連付けられた位置の特定の半径の外側で第１のアプリケーション６０２−１がクライアントデバイス１０４のカメラ（例えば、図３の画像／ビデオキャプチャデバイス３２４）にアクセスすることを許可することを指定する。従って、クライアントデバイス１０４の検出位置がユーザの自宅の上記特定の半径内のＧＰＳ座標に対応する場合、第１のアプリケーション６０２−１はクライアントデバイス１０４のカメラにアクセスすることが拒否される。
【００８７】
いくつかの実施形態では、第１のユーザ入力は、第１のアプリケーション６０２−１がリソースにアクセスすることを許可する許可ユーザを指定する。電子デバイスのユーザ６０４が許可ユーザであると判定されたとき、または電子デバイスのユーザ６０４が許可ユーザであると判定される間、第２のアプリケーション６０２−２が繰り返し使用されることにより、第１のユーザ入力に従って、第１のアプリケーション６０２−１に対し、リソースにアクセスする許可が自動的に与えられる。電子デバイスのユーザは、例えば、第１のアクセス要求の時点で、電子デバイスの第１のアプリケーション６０２−１、第２のアプリケーション６０２−２、またはオペレーティングシステムにログインしたユーザである。いくつかの実施形態では、電子デバイスのユーザ６０４が許可ユーザであるかどうかを判定することは、ユーザ認証情報を要求し（例えば、ユーザに対し、ユーザ名やパスワード、生体入力、または他の識別情報を提供することを促し）検証することを含む。
【００８８】
いくつかの実施形態では、条件（ステップ６１０で第１のユーザ入力によって指定される条件）は、第１のアプリケーション６０２−１に対応するフォアグラウンドプロセスおよび／またはバックグラウンドプロセスによるリソースへのアクセスを許可する（例えば、フォアグラウンドプロセスによるアクセスは許可するがバックグラウンドプロセスに対しては許可しない、またはその逆についても同様）。フォアグラウンドプロセスは、その動作（例えば、要求されたリソースへアクセスすることを含む）をユーザ６０４が観察可能なアプリケーションプロセスを含む。いくつかの実施形態では、フォアグラウンドプロセスは、アプリケーションそれ自体が起動／実行されていて現在実行中にある場合にのみ実行されるアプリケーションプロセスである。一例として、地図アプリケーションのフォアグラウンドプロセスは、クライアントデバイス１０４の現在のＧＰＳ座標を取得し、地図上での対応する位置をクライアントデバイス１０４のユーザに表示することを含む。これに対して、バックグラウンドプロセスは、その動作（例えば、要求されたリソースへアクセスすることを含む）をクライアントデバイスのユーザが観察可能でないアプリケーションプロセスを含む。いくつかの実施形態では、バックグラウンドプロセスは、他のフォアグラウンド／バックグラウンドプロセスと同時に実行されるアプリケーションプロセス、および／またはアプリケーションそれ自体が起動／実行されておらず現在実行中にない場合に実行されるアプリケーションプロセスを含む。例えば、アプリケーションのバックグラウンドプロセスは、ユーザがクライアントデバイス１０４のマイクロフォン（例えば、図３における音声入力デバイス３２０）にアクセスするアプリケーションを使用していない場合にも、そのマイクロフォンを使用してユーザからの音声を継続的に取り込む。バックグラウンドプロセスがマイクロフォンにアクセスすることを拒否することで、潜在的なユーザのプライバシー侵害を防ぐことができる。
【００８９】
いくつかの実施形態では、リソースは、電子デバイスの位置追跡デバイス（例えば、図３の位置検出デバイス３２２）を含み、第１のユーザ入力は、この位置追跡デバイスへのアクセスに関して第１のアプリケーション６０２−１に対して許可すべき分解能の度合いを指定する。位置追跡デバイスへのアクセスに関する分解能の度合いは、例えば、クライアントデバイス１０４の位置を判定可能な精度（距離）を指定するものである（例えば、クライアントデバイス１０４の現在位置が検出されることで、クライアントデバイス１０４が位置している特定の半径を有するエリアが描かれる）。いくつかの実施形態では、第１のユーザ入力は、位置追跡の分解能を、低分解能と高分解能との間で選択する（例えば、位置追跡の所定の精度に対応する低分解能と高分解能（低分解能よりも高い精度を有する分解能）との間で選択する）か、または３つ以上の利用可能な分解能の中から選択する。
【００９０】
いくつかの実施形態では、第１のユーザ入力は、第１のアプリケーション６０２−１にアクセス許可を与える条件の組み合わせを指定する。例えば、アプリケーション６０２−１は、ユーザ１０２−１（許可ユーザ条件）についてのみ、且つ指定された時間帯において指定の日（例えば、１つ以上の指定の曜日）についてのみ、リソースにアクセスすることが許可される。アプリケーションに対してアクセスを許可または拒否する条件は、図５Ａおよび５Ｂに示され本明細書で説明されるものに限定されるものではなく、他の制限、要件、パラメータ、リソース指定制限、および／またはリソースへアクセスする際の詳細レベルも含むことができる。
【００９１】
いくつかの実施形態において、電子デバイスは、第１のアプリケーション６０２−１がリソースにアクセスするために、第１のアプリケーション６０２−１によって第２のアプリケーション６０２−２に送信された複数のアクセス要求のレコードを（例えば、図３および図５Ｂのレコードテーブル３４６に）記憶する（６１２）。
【００９２】
いくつかの実施形態では、第２のアプリケーション６０２−２は、リソースにアクセスするために第１のアプリケーション６０２−１によって送信された要求の数を或る期間に亘って（例えば、図３および図５Ｂのレコードテーブル３４６に記憶されたレコードに基づいて）判定する（６１６）。要求の数が閾値を満たす場合（例えば、閾値を超えるまたは閾値以上となる場合）、第２のアプリケーション６０２−２が使用されることにより、第１のアプリケーション６０２−１がリソースにアクセスすることが（例えば、追加のユーザ入力を求めることなく自動的に）拒否される（６１８）。閾値は、ユーザ入力によって指定されてもよいし、または第２のアプリケーション６０２−２においてコード化されてもよい。任意で、閾値を満たす要求の数に従って、電子デバイスのユーザにアラートが通知される（６２０）（例えば、クライアントデバイス１０４のディスプレイ上にアラートが表示されて、疑わしいアプリケーションがユーザに通知される）。このように、閾値は、悪意のあるアプリケーション（例えば、マルウェア）を識別および／または阻止するために使用することができる。
【００９３】
いくつかの実施形態では、記憶されたレコードに基づき、複数の要求に関する１つ以上の統計情報がユーザに提示される（６２２）。例えば、記憶されたレコードに基づくアクセス要求の統計情報を含む図４ＢのＧＵＩ５１０がクライアントデバイス１０４のディスプレイ上に表示される。
【００９４】
いくつかの実施形態では、第１のアプリケーション６０２−１によって送信された複数のアクセス要求に応答して、電子デバイスは、それぞれのアクセス要求について、第１のアプリケーションがリソースにアクセスすることを許可または拒否することを示す受信したそれぞれのユーザ入力のレコード（ユーザ入力はアクセス許可がユーザに求められた後に受信される）、および／または電子デバイスに関するそれぞれのコンテキスト情報のレコードを（例えば、レコードテーブル３４６に）記憶する（６１２）。コンテキスト情報は、アクセス要求が送信される状況、および／またはアクセス要求についてアクセスが許可または拒否される状況を記述する。いくつかの実施形態では、コンテキスト情報は、それぞれユーザ入力を受信したときの電子デバイスの位置（例えば、ユーザが自宅にいたときにアクセスの許可が指定されるなど）および／またはそれぞれユーザ入力が受信された日付／時刻（例えば、２０１４年１１月２５日の午後２時５分にアクセスの許可が指定されるなど）を含む。アクセス要求、与えられたアクセス許可、およびコンテキスト情報のレコードの例は、図５Ｂのレコードテーブル３４６に示されている。
【００９５】
いくつかの実施形態では、記憶されたレコードに基づき、第１のアプリケーション６０２−１がリソースにアクセスすることを許可または拒否する条件の推奨がユーザに提示される（６２４）。電子デバイスは、レコードテーブル３４６に記憶されたレコードに基づいてユーザにより与えられるアクセス許可のパターンを識別し、アクセスを許可または拒否する条件の推奨をインテリジェントに提示する。例えば、許可モジュール３４２は、推奨内容を構築する機械学習アルゴリズムを含み得る。一例では、レコードテーブル３４６のレコード（図３および図５Ｂ）は、第１のアプリケーション６０２−１がクライアントデバイス１０４の特定のリソース（例えば、図３において、音声をキャプチャする音声入力デバイス３２０）にアクセスする許可（例えば、ワンタイム許可）をユーザが常に与えていることを示す。従って、第２のアプリケーション６０２−２は、第１のアプリケーション６０２−１からその特定のリソースにアクセスするための後続の要求を受信することに応答して、第１のアプリケーション６０２−１がその特定のリソースに常にアクセスできるようにユーザが許可を与えていることを（例えば、ＧＵＩプロンプトを表示することによって）提言する。他の例では、第２のアプリケーション６０２−２は、ユーザが常に、第１のアプリケーション６０２−１が１つ以上の条件下で特定のリソースにアクセスすることを許可または拒否していることを識別し、第１のアプリケーションがその１つ以上の条件下ではその特定のリソースに常にアクセスできるようにユーザが許可を与えている、もしくは第１のアプリケーションがその１つ以上の条件下ではその特定のリソースにアクセスすることを禁止していることを提言する。さらに別の例では、第２のアプリケーション６０２−２は、ユーザが常に、複数のアプリケーションが（例えば、１つ以上の条件下で、もしくは条件には関係なく）特定のリソースにアクセスすることを許可または拒否していることを識別し、全てのアプリケーションが（例えば、１つ以上の条件下で、もしくは条件には関係なく）その特定のリソースに常にアクセスできるようにユーザが許可を与えている、もしくは全てのアプリケーションが（例えば、１つ以上の条件下で、もしくは条件には関係なく）その特定のリソースにアクセスすることを禁止していることを提言する。
【００９６】
このため、クライアントデバイスのオペレーティングシステムとは異なる信頼性の高い許可アプリケーション（例えば、図３の許可モジュール３４２）を使用することによって、ユーザはどのアプリケーションがデバイスリソースにアクセスする許可を要求しているのかを高い信頼性で識別できるとともに、そのようなアクセス許可を細かなレベルで管理することができる。その結果、ユーザはデバイス上のアプリケーションを使用する際により高い信頼性とセキュリティを得ることができる。また、オペレーティングシステムとは別の独立した信頼性の高いアプリケーションを使用することによって、アクセス許可機能の柔軟性と透過性に影響を及ぼし得る、オペレーティングシステムに対するシステム全体の更新からその信頼性の高い許可アプリケーションが分離されるようになるため、より広い範囲のデバイスとの互換性を向上させることができる。
【００９７】
上述したシステムがユーザの情報を収集する状況において、ユーザには、個人情報（例えば、ソーシャルコンテンツプロバイダに対するユーザの好みまたはユーザの貢献に関する情報）を収集可能なプログラムまたは機構をオプトイン／オプトアウトする機会が提供されてもよい。また、いくつかの実施形態では、特定のデータが記憶または使用される前に１つ以上の方法でそれが非特定化されて、個人を識別可能な情報が除去されるようにしてもよい。例えば、ユーザについて個人を識別可能な情報が判別不可となるようにまたはそのユーザに関連付けされないようにユーザの身元が匿名化されてもよく、これにより、ユーザの好みまたはユーザインタラクションを、特定のユーザに関連付けるのではなく一般化する（例えば、ユーザの人口統計に基づいて一般化する）ことができる。
【００９８】
種々の図面のいくつかは特定の順序で多数の論理工程を示しているが、順序に依存しない工程を並べ替えてもよく、また、他の工程を組み合わせたり省略したりしてもよい。いくつかの並べ替えまたはグループ分けを特定して説明したが、他のものも当業者には明らかであり、本明細書で説明する順序付けおよびグループ分けは代替案のリストを網羅するものではない。さらに、工程は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの任意の組み合わせで実施できることが認識され得る。
【００９９】
以上、特定の実施形態を参照して説明したが、上述した例示的な説明は網羅的であることを意図したものでなく、開示された厳密な形態に特許請求の範囲を限定することを意図したものでもない。上述した教示を考慮して、多くの変更および変形が可能である。実施形態は、特許請求の範囲およびその実用的な適用の基本となる原理を最もよく説明するために選択され、当業者が考えられる特定の用途に適した様々な変更を加えた実施形態を最適な形で使用することができる。
【図１】
0006727211.tif 000002
【図２】
0006727211.tif 000003
【図３】
0006727211.tif 000004
【図４Ａ】
0006727211.tif 000005
【図４Ｂ】
0006727211.tif 000006
【図５Ａ】
0006727211.tif 000007
【図５Ｂ】
0006727211.tif 000008
【図６】
0006727211.tif 000009