(57)【特許請求の範囲】
【請求項１】
方法であって、第１の演算装置によって、
前記第１の演算装置のオペレーティングシステムが、前記第１の演算装置上で実行されているクライアントアプリケーションから、前記第１の演算装置のユーザに関連付けられている１組のデータにアクセスするための第１のリクエストを受け取ることであって、前記１組のデータは、第２の演算装置によって管理されていることと；
前記１組のデータにアクセスするための第２のリクエストを、前記第１の演算装置の前記オペレーティングシステムが前記クライアントアプリケーションに代わって前記第２の演算装置に送ることであって、前記第２のリクエストは、前記クライアントアプリケーションを識別するアプリケーション識別情報と、前記クライアントアプリケーションの開発者を識別する開発者識別情報と、前記１組のデータにアクセスするためのアクセス権種別とを含むことと；
前記第１の演算装置の前記オペレーティングシステムが、前記第２の演算装置から、前記第２のリクエストに対するレスポンスを受け取ることと；
前記第２のリクエストに対する前記レスポンスが、前記１組のデータに前記クライアントアプリケーションにアクセス権を付与する場合に、前記第２の演算装置で前記１組のデータにアクセスするための前記クライアントアプリケーションによって使用されるアクセストークンを、前記第１の演算装置の前記オペレーティングシステムが、前記クライアントアプリケーションに転送することであって、前記第１の演算装置の前記オペレーティングシステムは、前記第２の演算装置から前記アクセストークンを受け取ることと
を含む方法。
【請求項２】
前記第２の演算装置は、ソーシャル・ネットワーキング・システムに関連付けられ、
前記第１の演算装置のユーザは、ソーシャル・ネットワーキング・システムのメンバーであり、
前記１組のデータは、ソーシャル・ネットワーキング・システムに記憶された前記ユーザのデータである、
請求項１に記載の方法。
【請求項３】
前記第１のリクエストは、前記クライアントアプリケーションのアプリケーション識別
情報と、前記１組のデータにアクセスするための前記アクセス権種別とを含み、
前記方法はさらに、前記第１の演算装置の前記オペレーティングシステムが、前記クライアントアプリケーションの前記アプリケーション識別情報に基づき前記クライアントアプリケーションの前記開発者の前記開発者識別情報を判断することを含む、
請求項１または２に記載の方法。
【請求項４】
前記方法はさらに、前記クライアントアプリケーションが前記１組のデータにアクセスすることを前記第２のリクエストへの前記レスポンスが拒否した場合に、前記第１の演算装置の前記オペレーティングシステムが、前記クライアントアプリケーションに対し、前記１組のデータにアクセスするためのリクエストが拒否されたことを通知することを含む、
請求項１乃至３いずれか１項に記載の方法。
【請求項５】
前記第２のリクエストはさらに、前記第１の演算装置の前記ユーザを識別するユーザ識別情報を含む、
請求項１乃至４いずれか１項に記載の方法。
【請求項６】
前記方法はさらに、前記第２のリクエストが送られる際に使用される安全な接続を前記第２の演算装置と確立することを含む、
請求項１乃至５いずれか１項に記載の方法。
【請求項７】
前記第２のリクエストへの前記レスポンスがクライアントアプリケーションに前記１組のデータへのアクセス権を付与する場合に、前記レスポンスは、前記アクセストークンを含み、
前記方法はさらに、前記第１の演算装置に前記アクセストークンを記憶することを含む、
請求項１乃至６いずれか１項に記載の方法。
【請求項８】
１以上のプロセッサによって実行可能な命令を含むメモリと、前記メモリに連結され、前記命令を実行するように実行可能である前記１以上のプロセッサとを備える第１のシステムであって、
前記１以上のプロセッサは、前記命令を実行すると、
第１の演算装置のオペレーティングシステムが、前記第１の演算装置上で実行されているクライアントアプリケーションから、前記第１の演算装置のユーザに関連付けられ、第２の演算装置によって管理されている１組のデータにアクセスするための第１のリクエストを受け取り、
前記１組のデータにアクセスするための第２のリクエストを、前記第１の演算装置のオペレーティングシステムが前記クライアントアプリケーションに代わって前記第２の演算装置に送り、
前記第１の演算装置のオペレーティングシステムが、前記第２の演算装置から、前記第２のリクエストに対するレスポンスを受け取り、
前記第２のリクエストに対する前記レスポンスが、前記クライアントアプリケーションに前記１組のデータへのアクセス権を付与する場合に、前記第２の演算装置でその前記１組のデータにアクセスするための前記クライアントアプリケーションによって使用されるアクセストークンを、前記第１の演算装置の前記オペレーティングシステムが、前記クライアントアプリケーションに転送する
ように実行可能であり、
前記第２のリクエストは、前記クライアントアプリケーションを識別するアプリケーション識別情報と、前記クライアントアプリケーションの開発者を識別する開発者識別情報と、前記１組のデータにアクセスするためのアクセス権種別とを含み、
前記第１の演算装置の前記オペレーティングシステムは、前記第２の演算装置から前記アクセストークンを受け取る、第１のシステム。
【請求項９】
第２のシステムは、ソーシャル・ネットワーキング・システムに関連付けられ、
前記第１のシステムのユーザは、前記ソーシャル・ネットワーキング・システムのメンバーであり、
前記１組のデータは、前記ソーシャル・ネットワーキング・システムと一緒に記憶された前記ユーザのデータである、
請求項８に記載の第１のシステム。
【請求項１０】
前記第１のリクエストは、前記クライアントアプリケーションの前記アプリケーション識別情報と、前記１組のデータにアクセスするための前記アクセス権種別とを含み、
前記１以上のプロセッサはさらに、前記第１のシステムの前記オペレーティングシステムによって、前記クライアントアプリケーションの前記アプリケーション識別情報に基づき前記クライアントアプリケーションの前記開発者の前記開発者識別情報を判断するための前記命令を実行する際に動作可能である、
請求項８または９に記載の第１のシステム。
【請求項１１】
前記１以上のプロセッサはさらに、前記命令を実行すると、
前記クライアントアプリケーションが前記１組のデータにアクセスすることを前記第２のリクエストへの前記レスポンスが拒否した場合に、前記第１の演算装置の前記オペレーティングシステムによって、前記クライアントアプリケーションに対し、前記１組のデータにアクセスするためのリクエストが拒否されたことを通知するように動作可能である、
請求項８乃至１０いずれか１項に記載の第１のシステム。
【請求項１２】
前記第２のリクエストはさらに、前記第１のシステムの前記ユーザを識別するユーザ識別情報を含む、
請求項８乃至１１いずれか１項に記載の第１のシステム。
【請求項１３】
前記１以上のプロセッサはさらに、前記第２のリクエストが送られる際に使用される安全な接続を第２のシステムと確立するための前記命令を実行する際に動作可能である、
請求項８乃至１２いずれか１項に記載の第１のシステム。
【請求項１４】
前記第２のリクエストへの前記レスポンスがクライアントアプリケーションに前記１組のデータへのアクセス権を付与する場合に、前記レスポンスは、前記アクセストークンを備え、
前記第１のシステム上で前記アクセストークンを記憶するための前記命令を実行する際に、前記１以上のプロセッサはさらに動作可能である、
請求項８乃至１３いずれか１項に記載の第１のシステム。
【請求項１５】
ソフトウェアを組み込んでいる１以上のコンピュータが読取り可能な記録媒体であって、
前記ソフトウェアは、第１のコンピュータシステムによって実行されたときに、
第１の演算装置のオペレーティングシステムによって、かつ前記第１の演算装置上で実行されているクライアントアプリケーションから、前記第１の演算装置のユーザに関連付けられ、第２の演算装置によって管理されている１組のデータにアクセスするための第１のリクエストを受け取り、
前記１組のデータにアクセスするための第２のリクエストを、前記第１の演算装置の前記オペレーティングシステムが前記クライアントアプリケーションに代わって前記第２の演算装置に送り、
前記第１の演算装置の前記オペレーティングシステムによって、かつ前記第２の演算装置から、前記第２のリクエストに対するレスポンスを受け取り、
前記第２のリクエストに対する前記レスポンスが、前記クライアントアプリケーションに前記１組のデータへのアクセス権を付与する場合に、前記第２の演算装置でその前記１組のデータにアクセスするための前記クライアントアプリケーションによって使用されるアクセストークンを、前記第１の演算装置の前記オペレーティングシステムによって、かつ前記クライアントアプリケーションに転送する
ように動作可能であり、
前記第２のリクエストは、前記クライアントアプリケーションを識別するアプリケーション識別情報と、前記クライアントアプリケーションの開発者を識別する開発者識別情報と、前記１組のデータにアクセスするためのアクセス権種別とを含み、
前記第１の演算装置の前記オペレーティングシステムは、前記第２の演算装置から前記アクセストークンを受け取り、
第２のコンピュータシステムは、ソーシャル・ネットワーキング・システムに関連付けられ、
前記第１のコンピュータシステムのユーザは、前記ソーシャル・ネットワーキング・システムのメンバーであり、
前記１組のデータは、ソーシャル・ネットワーキング・システムに記憶された前記ユーザのデータである、
１以上のコンピュータが読取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は概して、オペレーティングシステム経由でデータにアクセスするためのクライアントアプリケーションの認証に関する。
【背景技術】
【０００２】
データや情報のセキュリティには、特定のエンティティによる特定データへのアクセスの制御を伴うことが多い。１組のデータがあるとすると、そのデータの所有者は、そのデータへのアクセスを許可するエンティティや、そのデータへのアクセスをリクエストしているエンティティにそのデータへのアクセス権が付与されるまでの認証手順を指定し得る。１組の特定データへのアクセス権を制御する方法は、各種存在する。たとえば、そのデータは、アクセスコード（パスワードやアクセストークンなど）で保護され得る。正しいアクセスコードを提供できるエンティティにのみ、そのデータへのアクセス権が付与される。別例を挙げると、あるエンティティがそのデータへのアクセスをリクエストするたびに、明示的なリクエストがそのデータの所有者に送られ、所有者がそのエンティティにデータへのアクセス権を付与するかどうかを選択できるようにし得る。
【０００３】
ソーシャル・ネットワーキング・ウェブサイトなどのソーシャル・ネットワーキング・システムを利用すれば、ユーザは、そのシステムとやり取りし、そのシステムを通じて互いに交流することができる。ソーシャル・ネットワーキング・システムは、ユーザに関するレコード（ユーザプロファイルと称されることが多い）を作成および記憶し得る。ユーザプロファイルは、ユーザの人口学的情報と、通信チャネル情報と、個人的興味とを含み得る。ソーシャル・ネットワーキング・システムはまた、或るユーザと他のユーザとの関係に関するレコード（ソーシャルグラフなど）を作成および保存し得るとともに、ユーザ間の社会的交流を促すサービス（ウォールポスト、写真共有、あるいはインスタントメッセージングなど）の提供もし得る。
【０００４】
ソーシャル・ネットワーキング・システムは、ユーザのプロフィール情報、ユーザのソーシャルネットワーク仲間の識別情報、ユーザのニュースフィードなど、ソーシャル・ネットワーキング・システムによって維持される情報にアクセスするアプリケーションを開発者が設定できるようにするアプリケーション・プログラミング・インターフェースを提供し得る。このようなアプリケーションは、ブラウザクライアントがアクセスするサーバによってホスティングされるウェブベースのアプリケーションであり得るか、あるいはクライアント装置にローカルインストールされるネイティブアプリケーション（またはこれらの組み合わせ）であり得る。実際、一部のソーシャル・ネットワーキング・システムでは、ユーザは、いわゆるキャンバスアプリケーションを本人のユーザプロファイルに追加し得る。キャンバスアプリケーションは、ソーシャル・ネットワーキング・システムのウェブページによって提供されるリンクまたは他のコントロールをユーザがクリックすることによってアクセスし得るサードパーティ製アプリケーションであり得る。キャンバスアプリケーションは、サードパーティ製システムによってホスティングされ得る。そしてキャンバスアプリケーションは、ソーシャル・ネットワーキング・システムによって提供されるウェブページのＩフレーム（ｉｆｒａｍｅ）（または他のセクション）で実行され得る。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願公開第２００３／００７９１２０号明細書
【特許文献２】米国特許出願公開第２００３／００９３６６６号明細書
【特許文献３】米国特許出願公開第２００８／０２３５７８２号明細書
【特許文献４】米国特許出願公開第２００５／０１６０１６１号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
キャンバスアプリケーションは、サードパーティ製システムによってホスティングされ得る。そしてキャンバスアプリケーションは、ソーシャル・ネットワーキング・システムによって提供されるウェブページのＩフレーム（ｉｆｒａｍｅ）（または他のセクション）で実行され得る。
【課題を解決するための手段】
【０００７】
本開示は概して、オペレーティングシステム経由でデータにアクセスするためのクライアントアプリケーションの認証に関する。さらに詳しくは、オペレーティングシステムが、ファーストパーティに関連付けられている、あるいはファーストパーティによって管理される１組のデータへのアクセス権を個々のクライアントアプリケーションがリクエストするためのプロキシの働きをする。
【０００８】
特定の実施形態では、第１の演算装置のオペレーティングシステムにより、かつ第１の演算装置上で実行されているクライアントアプリケーションから、第１の演算装置のユーザに関連付けられており、第２の演算装置によって管理されている１組のデータにアクセスするための第１のリクエストを受け取ること、１組のデータにアクセスするための第２のリクエストであって、クライアントアプリケーションを識別するアプリケーション識別情報と、クライアントアプリケーションの開発者を識別する開発者識別情報と、その１組のデータにアクセスするためのアクセス権種別と、を含む第２のリクエストを、第１の演算装置のオペレーティングシステムがクライアントアプリケーションに代わって、第２の演算装置に送ることと、第１の演算装置のオペレーティングシステムにより、かつ第２の演算装置から、第２のリクエストに対するレスポンスを受け取ること、および第２のリクエストに対するレスポンスが、その１組のデータにクライアントアプリケーションにアクセス権を付与する場合に、第２の演算装置でその１組のデータにアクセスするためのクライアントアプリケーションによって使用されるアクセストークンであって、第１の演算装置のオペレーティングシステムにより、かつ第２の演算装置から受け取られるアクセストークンを、第１の演算装置のオペレーティングシステムにより、かつクライアントアプリケーションに転送することである。
【０００９】
本開示のこれらの特徴、態様、および利点、および他の特徴、態様、および利点について、添付の図面を参照しながら以下に詳述する。
【図面の簡単な説明】
【００１０】
【図１】オペレーティングシステムが、ファーストパーティに関連付けられている、あるいはファーストパーティによって管理されている１組のデータへのアクセスをクライアントアプリケーションがリクエストするためのプロキシの働きをする処理フローの例。
【図２】ユーザ装置の例。
【図３】コンピュータシステムの例。
【発明を実施するための形態】
【００１１】
本開示について、添付の図面に示す或る実施形態を参照しながら、以下に詳述する。以下の記述では、本開示についての理解を徹底するために、数々の具体的詳細が記載されている。ただし本開示は、これら具体的詳細の一部または全部がなくても実施され得る。他の事例では、本開示を無用にわかりにくくするのを避けるために、周知の処理ステップおよび／または構造について詳しく説明していない。加えて、本開示は特定の実施形態を併
用しながら説明しているが、この説明内容は、記載された実施形態に本開示を制限することを意図するものではないものと理解されたい。説明内容はむしろ、代替物、変形物、および均等物を網羅することを意図するものであり、これらは、添付の特許請求の範囲によって定められる本開示の趣旨および範囲内に含まれ得る。
【００１２】
場合によっては、或るパーティ（ｐａｒｔｙ）によって開発されたアプリケーションは、別のパーティに関連付けられている、所有されている、および／または制御されている情報またはデータにアクセスする必要があり得る。わかりやすくするために、以降、１組の特定データに関して、そのデータと直接関連付けられているパーティ（本人のユーザプロファイルデータに関連付けられているユーザなど）は「ファーストパーティ」と称し、ファーストパーティに関連付けられたデータへのアクセスを希望するパーティを「サードパーティ」と称する。特定の実施形態では、サードパーティによって開発されたアプリケーションが、サードパーティに関連付けられている、あるいはそのサードパーティによって管理されているデータにアクセスする必要がある場合に、サードパーティがファーストパーティに直接データアクセス権をリクエストするのではなく、オペレーティングシステムが、サードパーティのプロキシとしての働きをし、サードパーティに代わってファーストパーティにデータアクセス権をリクエストし得る。
【００１３】
図１は、オペレーティングシステムが、リモートシステムをホストとするファーストパーティに関連付けられている、あるいはリモートシステムをホストとするファーストパーティによって管理されている１組のデータへのアクセスをクライアント装置プラットフォームにインストールされたクライアントアプリケーションがリクエストするためのプロキシの働きをする処理フロー例を表している。図２は、ユーザ装置例を表している。図１および図２は、互いに関連している。
【００１４】
特定の実施形態では、デスクトップコンピュータやモバイル装置（たとえば、ノートコンピュータ、ネットブックコンピュータ、携帯電話、ゲーム機その他）などのユーザ装置２１０は、オペレーティングシステム２１３と、いくつかの（ａ  ｎｕｍｂｅｒ  ｏｆ）クライアントアプリケーション２１４とを有し得る。たとえば、ユーザ装置２１０は、カリフォルニア州クパチーノにあるアップル株式会社が提供しているｉＰｈｏｎｅ（登録商標）であり得る。クライアントアプリケーション２１４は、ユーザ装置２１０にインストールされ得る。そしてユーザ装置２１０上で実行され得る。特定の実施形態において、ユーザ装置２１０は、記憶媒体（メモリやハードドライブなど）を有し得る。そして記憶媒体の或る部分が、安全であり、不正に加工できないようになっており、安全な情報（デジタル証明書２１１やアクセストークン２１２など）を記憶する目的で使用され得る。
【００１５】
特定の実施形態では、ファーストパーティ２２０に関連付けられたリモートホスト（サーバやデータベースなど）に記憶されたデータ２２１の管理を担うファーストパーティ２２０が存在する。特定の実施形態では、ファーストパーティ２２０は、ソーシャル・ネットワーキング・システムであり得る。そしてユーザ装置２１０のユーザは、ソーシャル・ネットワーキング・システム２２０のメンバーであり得る。データ２２１は、ユーザのプロフィール、ソーシャルネットワーク上の知人と仲間、カレンダーエントリ、興味や趣味、ユーザ向けに生成されたニュースフィード、ユーザによってソーシャル・ネットワーキング・システム２２０にアップロードされた画像、ユーザが送った、あるいはユーザに送られたメッセージまたは投稿など、ソーシャル・ネットワーキング・システム２２０によって維持されるユーザのデータであり得る。ユーザデータ２２１は、ソーシャル・ネットワーキング・システム２２０に関連付けられたリモートホストに記憶され得る。ソーシャル・ネットワーキング・システム２２０は、ユーザ本人のデータ２２１を管理し得る。
【００１６】
特定の実施形態では、ソーシャル・ネットワーキング・システム２２０は、ユーザ装置
２１０またはリモートホストに記憶されたユーザのデータ（データ２２１など）の一部または全部にソフトウェアアプリケーション（サードパーティの開発者によって開発されたアプリケーションなど）がアクセスできるようにするアプリケーション・プログラミング・インターフェース（ＡＰＩ）を提供し得る。たとえば、クライアントアプリケーション２１４は、ソーシャル・ネットワーキング・システム２２０によって提供されるＡＰＩを使用して、ユーザのデータ（たとえば、プロフィール情報、ソーシャルネットワーク上の知人、画像など）の一部にアクセスし得る。同時に、ソーシャル・ネットワーキング・システム２２０は、（ユーザプライバシーを保護するなどの目的で）認証されたクライアントアプリケーション２１４だけがユーザデータ２２１にアクセスできるようにするために必要なステップを実行し得る。たとえば、クライアントアプリケーション２１４がある特定のユーザデータにアクセスする場合、最初に認証を受けた上でアクセス権が付与される。
【００１７】
特定の実施形態では、ユーザ装置２１０のオペレーティングシステム２１３は、クライアントアプリケーション２１４とファーストパーティのデータマネージャ２２０（たとえばソーシャル・ネットワーキング・システム）との間での認証セッションを代行する。特定の実施形態では、リモートホストに記憶されているユーザデータ２２１にクライアントアプリケーション２１４がアクセスする必要がある場合、ファーストパーティのデータマネージャ２２０に直接アクセストークンをするのではなく、ステップ１１０に示すとおり、クライアントアプリケーション２１４は、オペレーティングシステムシステム２１３にリクエストを送り得る。たとえば、クライアントアプリケーション２１４は、オペレーティングシステム２１３にＡＰＩコールを出して、ファーストパーティのデータマネージャ２２０（ソーシャル・ネットワーキング・システムなど）とのセッション「ｇｅｔＳｅｓｓｉｏｎ（ａｐｐ＿ｉｄ，  ｐｅｒｍｉｓｓｉｏｎｓ）」などを開き得る。「ｐｅｒｍｉｓｓｉｏｎｓ（許可）」は、クライアントアプリケーション２１４が所望するアクセス許可の種類である。たとえば、アクセス許可は、読み出し許可（たとえば、ユーザのプロフィール情報、ユーザに送られたメッセージなどを読み出す）または書き込み許可（たとえば、写真のアップロード、ウォールへの投稿、電子メールの送信、ステータスの更新、イベントまたは場所へのチェックインなどを行う）を含み得る。特定の実施形態において、このリクエストは、リクエスト側クライアントアプリケーション２１４のアプリケーション識別情報（ａｐｐ＿ｉｄ）を含み得る。任意選択的に、このリクエストは、リクエスト側クライアントアプリケーション２１４がアクセスする必要のあるセキュアデータ２２１のどの特定部分にアクセスするか（たとえば、リクエスト側クライアントアプリケーション２１４がリモートホストに記憶されたデータ２２１のすべてにアクセスする必要は必ずしもない）を記載している情報も含み得る。
【００１８】
特定の実施形態では、ユーザ装置２１０に記憶された任意の数のデジタル証明書２１１が存在し得る。これらのデジタル証明書２１１は、装置メーカーによってユーザ装置２１０のユーザごとに構成され得る。そしてこれらのデジタル証明書２１１は、ユーザ装置２１０の記憶媒体の、不正に加工できないようになっている安全な部分に記憶され得る。たとえば、ユーザ装置２１０の各認証済みユーザは、自分のデジタル証明書２１１を有し得る。特定のユーザがユーザ装置２１０の上でクライアントアプリケーション２１４を実行しているときに、クライアントアプリケーション２１４が特定のユーザのデータにアクセスする必要がある場合には、そのユーザのデジタル証明書２１１は、認証プロセスと併用され得る（たとえば、ユーザ装置２１０とファーストパーティ２２０との間で安全な接続を確立する目的で使用され得る）。特定の実施形態において、このリクエストは、（たとえばオブジェクト指向ＣまたはＣを使用して）関数呼び出しとして実装され得る。この関数は、入力引数としてアプリケーション識別情報（たとえばｆｕｎｃｔｉｏｎ＿ｎａｍｅ（ａｐｐ＿ｉｄ，  ｐｅｒｍｉｓｓｉｏｎｓ））を取り得る。クライアントアプリケーション２１４は、データ２２１にアクセスする必要がある場合、この関数を呼び出し、アプ
リケーション識別情報を入力値として「ａｐｐ＿ｉｄ」に渡し、入力値として必要とされるアクセス権の種類（読み出しや書き込みなど）を「ｐｅｒｍｉｓｓｉｏｎｓ」に指定し得る。
【００１９】
特定の実施形態では、ステップ１２０に示すとおり、オペレーティングシステム２１３は、リクエスト側クライアントアプリケーション（ｒｅｑｕｅｓｔｉｎｇ  ｃｌｉｅｎｔ
ａｐｐｌｉｃａｔｉｏｎ）２１４のアプリケーション識別情報に基づき開発者識別情報（ＤＥＶ  ＩＤ、「バンドルＩＤ」とも称される）を判断し得る。開発者識別情報は、リクエスト側クライアントアプリケーション２１４の開発者（ソフトウェア会社など）を表す。各クライアントアプリケーション２１４が初めてユーザ装置２１０にインストールされると、オペレーティングシステム２１３は、自身のアプリケーション識別情報と開発者識別情報とを判断し得る。そしてオペレーティングシステム２１３は、その情報のレコードを（たとえばルックアップテーブルとして）維持し得る。続いてオペレーティングシステム２１３は、アプリケーション識別情報に基づき、このレコードを使用して開発者識別情報を調べ得る。
【００２０】
特定の実施形態では、ステップ１３０に示すとおり、オペレーティングシステム２１３は、リクエスト側クライアントアプリケーション２１４に代わってファーストパーティのデータマネージャ２２０にリクエストを送り得る。ｐｒｏｘｙ．Ａｕｔｈｏｒｉｚｅ（ａｐｐ＿ｉｄ，  ｄｅｖｅｌｏｐｅｒ＿ｉｄ，  ｐｅｒｍｉｓｓｉｏｎｓ）などのリクエストは、リクエスト側クライアントアプリケーション２１４の開発者識別情報（たとえば「ＡＢＣＤ１２３４」）とアプリケーション識別情報との両方を含み得る。リクエストは、リモートホストが１組のデータ（ユーザ・アカウント・データなど）に関連付け得るユーザ識別情報（あるいは、その他任意の適切なアカウント識別情報）も含み得る。任意で、このリクエストは、クライアントアプリケーション２１４がアクセスする必要のあるユーザデータ２２１特定部分（ｐｅｒｍｉｓｓｉｏｎｓ）について記載した情報（たとえば、クライアントアプリケーション２１４から受け取った初回リクエストからの情報）も含み得る。特定の実施形態では、オペレーティングシステム２１３は、ファーストパーティのデータマネージャ２２０との安全なネットワーク接続（ＳＳＬ接続など）を確立し得る、そしてこの安全な接続を経由してリクエストを送り得る。ＳＳＬ接続は、ユーザ装置２１０の記憶媒体の安全な部分に記憶されたデジタル証明書２１１を使用して確立され得る。たとえば、ファーストパーティのデータマネージャ２２０におけるＳＳＬ実装は、有効なデジタル証明書を提示することをクライアントに要求するＳＳＬＶｅｒｉｆｙｃｌｉｅｎｔマンデートで構成され得る。ＳＳＬ接続を有効なデジタル証明書に制限することにより、装置および／またはユーザの識別情報にいくらかの信頼が得られる。この点が特に該当するのは、デジタル証明書がユーザ装置の不正加工防止対策済み記憶装置（ｔａｍｐｅｒ−ｒｅｓｉｓｔａｎｔ  ｓｔｏｒａｇｅ）に記憶されており、場合によっては、さらに装置メーカーによってインストールされている場合である。
【００２１】
特定の実施形態では、ファーストパーティのデータマネージャ２２０は、リクエストを受け取ると（かつユーザ装置レベルのデジタル証明書が妥当であり、ＳＳＬ接続が確立されたと想定すると）、ステップ１４０に示すとおり、自身のアプリケーション識別情報と開発者識別情報とに基づきリクエスト側クライアントアプリケーション２１４を認証し得る。たとえば、ファーストパーティのデータマネージャ２２０は、リクエストに対応するユーザ識別情報に関連付けられたユーザデータ２２１（および／またはＳＳＬ接続に関連付けられたクライアント側デジタル証明書）へのアクセス権を有するすべてのクライアントアプリケーションのレコードを維持し得る。リクエスト側クライアントアプリケーション２１４が（たとえば自身のアプリケーション識別情報と開発者識別情報に基づき）その中の１つであれば、ユーザデータ２２１へのアクセス権が付与される。そうでなければ、ユーザデータ２２１へのアクセスは、拒絶される。
【００２２】
なお、開発者識別情報とアプリケーション識別情報との組み合わせは、各クライアントアプリケーション２１４を一意に識別する。ただし、１組のクライアントアプリケーションを一意に識別する他の手段が存在する。たとえば、各クライアントアプリケーション２１４に、グローバルに一意の識別情報が割り当てられ得る。
【００２３】
リクエスト側クライアントアプリケーション（ｒｅｑｕｅｓｔｉｎｇ  ｃｌｉｅｎｔ  ａｐｐｌｉｃａｔｉｏｎ）２１４にユーザデータ２２１へのアクセスが許可されている場合には、ステップ１５０に示すとおり、ファーストパーティのデータマネージャ２２０は、オペレーティングシステム２１３にアクセストークンを送り得る。一実装形態において、このアクセストークンは、セッション鍵とセッション秘密とを備え得る。セッション秘密は、特定のセッションのハッシュ値であり得る。オペレーティングシステム２１３はその後、リクエスト側クライアントアプリケーション２１４にアクセストークンを転送して、リクエスト側クライアントアプリケーション２１４がリモートホスト２２０でユーザに関連付けられたデータにアクセストークンを使用してアクセスできるようにし得る。特定の実施形態において、このアクセストークンは、期限を有し得る。たとえば、クライアントアプリケーション２１４は、アクセストークンを取得すると、期限が切れるまで、そのアクセストークンを使用して現在のセッション期間または特定の期間（たとえば２４時間）にわたってユーザデータ２２１にアクセスし得る。その後、クライアントアプリケーション２１４は、ユーザデータ２２１にアクセスするために別のアクセストークンをリクエストする必要がある。
【００２４】
特定の実施形態において、オペレーティングシステム２１３またはリクエスト側クライアントアプリケーション２１４は、ファーストパーティ２２０から有効なアクセストークン２１２を受け取ると、ユーザ装置２１０（たとえばユーザ装置２１０の記憶媒体の安全な部分）にアクセストークン２１２を記憶し得る。アクセストークン２１２の期限が切れるまで、リクエスト側クライアントアプリケーション２１４は、そのアクセストークン２１２を使用してユーザデータ２２１に繰り返しアクセスする。同時に、オペレーティングシステム２１３は、リクエスト側クライアントアプリケーション２１４だけが、リクエスト側クライアントアプリケーション２１３用に取得されたこの特定のアクセストークン２１２を使用できるようにし、ユーザ装置２１０にインストールされた他のクライアントアプリケーション２１４がこの特定のアクセストークン２１２を使用できないようにし得る。
【００２５】
一方、リクエスト側クライアントアプリケーション２１４がユーザデータ２２１へのアクセスを拒否された場合には、ファーストパーティのデータマネージャ２２０は、オペレーティングシステム２１３にアクセストークンを送らない。代わりにファーストパーティのデータマネージャ２２０は、既定の信号で応答し、ユーザデータ２２１へのアクセスリクエストが否定されたことをオペレーティングシステム２１３がリクエスト側クライアントアプリケーション２１４に通知できるようにし得る。
【００２６】
特定の実施形態では、ユーザ装置２１０は、ソーシャル・ネットワーキング・ウェブサイトのメンバーであるユーザに関連付けられ得る。一般にソーシャルネットワークとは、友情、血縁、共通利害、金銭交換（ｆｉｎａｎｃｉａｌ  ｅｘｃｈａｎｇｅ）、嫌悪（ｄｉｓｌｉｋｅ）、あるいは信仰、知識、名声の関係など、１以上の種類の相互依存または関係によって結び付いた個人や組織などのエンティティで構成される社会構造のことである。ソーシャルネットワークは近年、インターネットを活用するようになってきた。インターネット上には、ソーシャル・ネットワーキング・ウェブサイトという形態のソーシャル・ネットワーキング・システムが存在する。このようなソーシャル・ネットワーキング・ウェブサイトを利用して、一般にウェブサイトユーザと称されるメンバーが、各種の社
交活動を行うことができる。たとえば、フェイスブック社がｗｗｗ．ｆａｃｅｂｏｏｋ．ｃｏｍで運営するソーシャル・ネットワーキング・ウェブサイトでは、ユーザは、電子メール、インスタントメッセージ、あるいはブログ投稿を介して友人と通信したり、社交イベントを企画したり、写真を共有したり、友人または面白い出来事のニュースを受け取ったり、ゲームをしたりすることができる。
【００２７】
データ２２１は、ソーシャル・ネットワーキング・ウェブサイトに表示されるユーザの情報（たとえば、プロフィール、背景情報、ソーシャルネットワーク上の知人、ユーザによってソーシャル・ネットワーキング・ウェブサイトにアップロードされた写真、メッセージと投稿、社交行事予定とイベント、チェックイン、最新情報、通知、ニュースフィードなど）を含み得る。この場合、ソーシャル・ネットワーキング・ウェブサイトは、クライアントアプリケーション２１４によってユーザのソーシャル情報または他の情報へのアクセスを制御するファーストパーティのデータマネージャ２２０であり得る。場合によっては、ユーザは、特定のクライアントアプリケーション２１４を認識あるいは使用したときなどに、どのクライアントアプリケーション２１４が（たとえば、ユーザのアカウントを通じて提供されるセットアップオプションを使用して）ユーザのどの情報にアクセスできるかをソーシャル・ネットワーキング・ウェブサイトに指定し得る。こうして特定のクライアントアプリケーション２１４が必要とする情報を把握する。また、クライアントアプリケーション２１４は、そのユーザにアクセス許可をリクエストするために、オペレーティングシステムを通過し得る。オペレーティングシステムは、特定のクライアントアプリケーション２１４に代わってそのユーザへの情報リクエストを表示し得る。そして、ユーザがそのクライアントアプリケーション２１４に情報アクセス権を付与すると、オペレーティングシステムは、そのユーザの認証をソーシャル・ネットワーキング・ウェブサイト送り得る。その後、クライアントアプリケーション２１４がユーザの情報（たとえばデータ２２１）にアクセスする必要が生じるたびに、オペレーティングシステム２１３は、ユーザに問い合わせて煩わせるのではなく、ソーシャル・ネットワーキング・ウェブサイトをホスティングしているソーシャル・ネットワーキング・システム（すなわちファーストパーティのデータマネージャ２２０）にリクエストを送り得る。ソーシャル・ネットワーキング・システムは、ユーザによって以前に規定された、ユーザの情報へのアクセスに関する仕様に従ってクライアントアプリケーション２１４を認証し得る。一実装形態では、ユーザが、クライアントアプリケーションのアクセス許可（読み出しや書き込みなど）を指定し得る。そして、ユーザのアカウントにおける許可をソーシャル・ネットワーキング・ウェブサイトと共に（たとえば構成セッティングの一部として）記憶する。その後、ソーシャル・ネットワーキング・ウェブサイト（すなわちファーストパーティのデータマネージャ）は、特定のクライアントアプリケーションが、ソーシャル・ネットワーキング・ウェブサイトと共に記憶されたユーザのデータへのアクセス権を有するかどうかを判断し、有する場合には、ユーザのアカウントに記憶された構成設定に基づき、そのクライアントアプリケーションがどのアクセス許可を有するかを判断し得る。当然のことながら、ユーザは、これらの設定をいつでも修正することができる。
【００２８】
本発明の実装形態は、ユーザがユーザ装置２１０（スマーフォトンなど）を使用してリモートホスト２２０にいったんログインしたら、ログアウトすることを明示的に選択するまで、そのユーザ装置２１０へのログイン状態を保つように構成されうる。たとえば、ユーザは、ユーザ装置２１０にインストールされたクライアントアプリケーションを使用してリモートホスト２２０にアクセスし、リモートホスト２２０によって維持されたユーザアカウントに明示的にログインし得る。リモートホスト２２０にログインすると、ユーザ装置２２０にインストールされたクライアントアプリケーション２１４は、ユーザにアカウントに明示的にログインさせたり、別の方法でユーザ名とパスワードとを提供させたりすることなく、リモートホスト２２０によって維持されている、あるいはリモートホスト２２０を通じて利用できる、そのユーザに関連付けられたデータに即座にアクセスし得る
。たとえば、特定のユーザを識別するプロキシ認証リクエストを処理するとき、リモートホスト２２０は、ユーザのアカウント情報にアクセスして、そのユーザが特定のユーザ装置２１０に依然としてログインしているかどうかを判断し得る。たとえば、ログインステータス情報は、ユーザ装置のクライアント側デジタル証明書に関連付けることができる。リモートホスト２２０は、この情報にアクセスして、ユーザがユーザ装置２１０に依然としてログインしているか否か、プロキシ認証リクエストの認証の一部として判断し得る。
【００２９】
加えて、ユーザは、クライアントアプリケーションを自身のアカウントに追加したり、自身のアカウントから削除したりすることによって、どのクライアントアプリケーション２１４は、自身のデータにアクセスし得るかを設定し得る。或る実装形態では、このアプリケーションのリストは、所与のアプリケーションのモバイル版およびウェブ版に対応し得る。たとえば、ユーザがデスクトップＰＣを使用してリモートホスト２２０にアクセスし、特定のウェブベースのキャンバスアプリケーションを「インストール」した後に、同じアプリケーションのモバイル版をユーザ装置２１０にインストールすると仮定する。そのアプリケーションのモバイル版のデータアクセス権は、キャンバスアプリケーションのユーザのインストールに基づき許可され得る。
【００３０】
特定の実施形態は、１以上のコンピュータシステム上で実装され得る。図３は、例示的なコンピュータシステム３００を表している。特定の実施形態では、１以上のコンピュータシステム３００は、本明細書に記載または図示された１以上の方法のうち１以上のステップを実行する。特定の実施形態では、１以上のコンピュータシステム３００は、本明細書に記載または図示された機能を提供する。特定の実施形態では、１以上のコンピュータシステム３００上で実行されているソフトウェアが、本明細書に記載または図示された１以上の方法のうち１以上のステップを実行するか、本明細書に記載または図示された機能を提供する。特定の実施形態は、１以上のコンピュータシステム３００の１以上の部分を含む。
【００３１】
本開示は、あらゆる適切な数のコンピュータシステム３００を想定している。本開示は、任意の適切な形態をとるコンピュータシステム３００を想定している。非制限的な例として、コンピュータシステム３００は、組み込みコンピュータシステム、システムオンチップ（ＳＯＣ）、シングルボード・コンピュータ・システム（ＳＢＣ）（たとえばコンピュータオンモジュール（ＣＯＭ）やシステムオンモジュール（ＳＯＭ）など）、デスクトップ・コンピュータ・システム、ラップトップまたはノート型コンピュータシステム、インタラクティブキオスク、メインフレーム、コンピュータシステム網、携帯電話、携帯情報端末（ＰＤＡ）、サーバあるいはこれらの２以上の組み合わせであり得る。コンピュータシステム３００は適宜、１以上のコンピュータシステム３００を含み得るか、一元的または分散型であり得るか、複数箇所にまたがり得るか、クラウドに置かれて１以上のネットワークに１以上のクラウド構成要素を含み得る。１以上のコンピュータシステム３００は、適宜本明細書に記載または図示された１以上の方法のうち１以上のステップを、実質的な空間または時間的制限なしで実行し得る。非制限的な例として、１以上のコンピュータシステム３００は、本明細書に記載または図示された１以上の方法のうち１以上のステップを、リアルタイムまたはバッチモードで実行し得る。１以上のコンピュータシステム３００は、本明細書に記載または図示された１以上の方法のうち１以上のステップを、さまざまな時期あるいはさまざまな箇所で実行し得る。
【００３２】
特定の実施形態では、コンピュータシステム３００は、プロセッサ３０２と、メモリ３０４と、記憶装置３０６と、入出力（Ｉ／Ｏ）インターフェース３０８と、通信インターフェース３１０と、バス３１２とを備える。本開示は、特定数の特定の構成要素を特定の配置構成で有する特定のコンピュータシステムを記載および図示しているが、本開示は、あらゆる適切な数のあらゆる適切な構成要素をあらゆる適切な配置構成で有するあらゆる
適切なコンピュータシステムを想定している。
【００３３】
特定の実施形態では、プロセッサ３０２は、コンピュータプログラムを構成する命令など、命令を実行するためのハードウェアを備える。非制限的な例として、命令を実行するために、プロセッサ３０２は、内部レジスタ、内部キャッシュ、メモリ３０４、または記憶装置３０６から命令を取得（またはフェッチ）し、それらを復号して実行した後、内部レジスタ、内部キャッシュ、メモリ３０４、または記憶装置３０６に１以上の結果を書き込む。特定の実施形態では、プロセッサ３０２は、データ、命令、またはアドレスを格納する１以上の内部キャッシュを備え得る。本開示は、あらゆる適切な数の任意の適切な内部キャッシュを備えるプロセッサ３０２を適宜想定している。非制限的な例として、プロセッサ３０２は、１以上の命令キャッシュと、１以上のデータキャッシュと、１以上の変換索引バッファ（ＴＬＢ、ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒ）とを備え得る。命令キャッシュ内の命令は、メモリ３０４または記憶装置３０６内の命令のコピーであり得る。命令キャッシュは、プロセッサ３０２によってそれらの命令の取得を高速化し得る。データキャッシュ内のデータは、プロセッサ３０２で実行中の命令が処理するメモリ３０４または記憶装置３０６内のデータ、プロセッサ３０２で実行中の以降の命令がアクセスするため、あるいはメモリ３０４または記憶装置３０６に書き込むためにプロセッサ３０２で実行された前回の命令の結果、または他の適切なデータのコピーであり得る。データキャッシュは、プロセッサ３０２による読み出し操作または書き込み操作を高速化し得る。ＴＬＢは、プロセッサ３０２の仮想アドレス変換を高速化し得る。特定の実施形態では、プロセッサ３０２は、データ、命令、またはアドレスを格納する１以上の内部レジスタを備え得る。本開示は、あらゆる適切な数の任意の適切な内部レジスタを備えるプロセッサ３０２を適宜想定している。プロセッサ３０２は、１以上の算数論理ユニット（ＡＬＵ、ａｒｉｔｈｍｅｔｉｃ  ｌｏｇｉｃ  ｕｎｉｔ）を備え得るか、マルチコアプロセッサであり得るか、あるいは１以上のプロセッサ３０２を適宜備え得る。本開示は、特定のプロセッサを記載および図示しているが、あらゆる適切なプロセッサを想定している。
【００３４】
特定の実施形態では、メモリ３０４は、プロセッサ３０２が実行する命令またはプロセッサ３０２が処理するデータを記憶するためのメインメモリを備える。非制限的な例として、コンピュータシステム３００は、記憶装置３０６または別のソース（たとえば別のコンピュータシステム３００）からメモリ３０４に命令をロードし得る。その後プロセッサ３０２は、メモリ３０４から内部レジスタまたは内部キャッシュにその命令をロードし得る。その命令を実行するために、プロセッサ３０２は、内部レジスタまたは内部キャッシュから命令を取得し、復号し得る。プロセッサ３０２は、命令の実行中または実行後に、（中間または最終結果であり得る）１以上の結果を内部レジスタまたは内部キャッシュに書き込み得る。その後プロセッサ３０２は、それらの結果のうち１またはそれ以上をメモリ３０４に書き込み得る。特定の実施形態では、プロセッサ３０２は、１以上の内部レジスタまたは内部キャッシュ、あるいはメモリ３０４内の命令だけを実行し（記憶装置３０６または他の場所にある命令は実行しない）、１以上の内部レジスタまたは内部キャッシュ、あるいはメモリ３０４内のデータだけを処理する（記憶装置３０６または他の場所にあるデータは処理実行しない）。（アドレスバスとデータバスとを各々含み得る）１つ以上のメモリバスは、プロセッサ３０２をメモリ３０４に連結し得る。バス３１２は、下記のとおり、１以上のメモリバスを含み得る。特定の実施形態では、１以上のメモリ管理ユニット（ＭＭＵ）は、プロセッサ３０２とメモリ３０４との間に存在し、プロセッサ３０２によってリクエストされたメモリ３０４へのアクセスを促す。特定の実施形態では、メモリ３０４は、ランダム・アクセス・メモリ（ＲＡＭ）を含む。このＲＡＭは適宜、揮発性メモリであり得る。このＲＡＭは適宜、ダイナミックＲＡＭ（ＤＲＡＭ）またはスタティックＲＡＭ（ＳＲＡＭ）であり得る。さらに、このＲＡＭは適宜、シングルポートまたはマルチポートＲＡＭでもあり得る。本開示は、あらゆる適切なＲＡＭを想定している。
メモリ３０４は、１以上のメモリ３０４を適宜含み得る。本開示は特定のメモリを記載および図示しているが、本開示はあらゆる適切なメモリを想定している。
【００３５】
特定の実施形態では、記憶装置３０６は、データまたは命令を記憶するための大容量記憶装置を含む。非制限的な例として、記憶装置３０６は、ＨＤＤ、フロッピー（登録商標）・ディスク・ドライブ、フラッシュメモリ、光ディスク、光磁気ディスク、磁気テープ、またはユニバーサル・シリアル・バス（ＵＳＢ）・ドライブ、あるいはこれらのうち２以上の組み合わせを含み得る。記憶装置３０６は、取り外し可能または不能な（あるいは固定された）媒体を適宜含み得る。記憶装置３０６は適宜、コンピュータシステム３００に対して内部的または外部的であり得る。特定の実施形態では、記憶装置３０６は、不揮発性のソリッドステートメモリである。特定の実施形態では、記憶装置３０６は、読み出し専用メモリ（ＲＯＭ）を含む。このＲＯＭは適宜、マスクプログラムＲＯＭ、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＰＲＯＭ（ＥＥＰＲＯＭ）、電気書き換え可能ＲＯＭ（ＥＡＲＯＭ）、またはフラッシュメモリ、あるいはこれらのうち２以上の組み合わせであり得る。本開示は、あらゆる適切な形態をとる大容量記憶装置３０６を想定している。記憶装置３０６は、プロセッサ３０２と記憶装置３０６との間での通信を促す１以上の記憶装置制御ユニットを適宜備え得る。記憶装置３０６は、１以上の記憶装置３０６を適宜含み得る。本開示は特定の記憶装置を記載および図示しているが、あらゆる適切な記憶装置を想定している。
【００３６】
特定の実施形態では、Ｉ／Ｏインターフェース３０８は、コンピュータシステム３００と１以上のＩ／Ｏ装置との間での通信を仲介するための１以上のインターフェースを提供するハードウェア、ソフトウェア、またはその両方を備える。コンピュータシステム３００は、これらのＩ／Ｏ装置のうち１もしくはそれ以上を適宜備え得る。これらのＩ／Ｏ装置のうち１またはそれ以上が、人とコンピュータシステム３００との間での通信を可能にし得る。非制限的な例として、Ｉ／Ｏ装置は、キーボード、キーパッド、マイク、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチルカメラ、スタイラス、タブレット、タッチスクリーン、トラックボール、ビデオカメラ、別の適切なＩ／Ｏ装置、またはこれらのうち２以上の組み合わせを含み得る。Ｉ／Ｏ装置は、１以上のセンサを含み得る。本開示は、あらゆる適切なＩ／Ｏ装置と、その装置用のあらゆる適切なＩ／Ｏインターフェース３０８とを想定している。Ｉ／Ｏインターフェース３０８は、プロセッサ３０２がこれらのＩ／Ｏ装置のうち１もしくはそれ以上を駆動できるようにする１以上の装置またはソフトウェアドライバを適宜備え得る。Ｉ／Ｏインターフェース３０８は、１以上のＩ／Ｏインターフェース３０８を適宜含み得る。本開示は、特定のＩ／Ｏインターフェースを記載および図示しているが、あらゆる適切なＩ／Ｏインターフェースを想定している。
【００３７】
特定の実施形態では、通信インターフェース３１０は、コンピュータシステム３００と１以上の他のコンピュータシステム３００または１以上のネットワークとの間での通信（たとえばパケットベースの通信など）を仲介するための１以上のインターフェースを提供するハードウェア、ソフトウェア、またはその両方を備える。非制限的な例として、通信インターフェース３１０は、イーサネット（登録商標）もしくは他の有線ベースのネットワークと通信するためのネットワーク・インターフェース・コントローラ（ＮＩＣ）もしくはネットワークアダプタ、または、ＷＩ−ＦＩネットワークなどの無線ネットワークと通信するための無線ＮＩＣ（ＷＮＩＣ）もしくは無線アダプタを備え得る。本開示は、あらゆる適切なネットワークと、そのネットワーク用のあらゆる適切な通信インターフェース３１０とを想定している。非制限的な例として、コンピュータシステム３００は、アド・ホック・ネットワーク、パーソナル・エリア・ネットワーク（ＰＡＮ）、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ）、またはインターネットの１以上の部分、あるいはこれらのうち２以上の組み合わせと通信し得る。これらのネットワークのうち１以上の
うちの１以上の部分は、有線または無線であり得る。たとえば、コンピュータシステム３００は、無線ＰＡＮ（ＷＰＡＮ）（たとえばブルートゥースＷＰＡＮなど）、ＷＩ−ＦＩネットワーク、ＷＩ−ＭＡＸネットワーク、セルラー方式電話ネットワーク（たとえばモバイル通信（ＧＳＭ（登録商標））ネットワーク用のグローバルシステムなど）、もしくは他の適切な無線ネットワーク、またはこれらのうち２以上の組み合わせと通信し得る。コンピュータシステム３００は、これらのネットワークのいずれをも仲介するあらゆる適切な通信インターフェース３１０を適宜備え得る。通信インターフェース３１０は、１以上の通信インターフェース３１０を適宜含み得る。本開示は、特定の通信インターフェースを記載および図示しているが、あらゆる適切な通信インターフェースを想定している。特定の実施形態では、バス３１２が、互いにコンピュータシステム３００の構成要素を連結するハードウェア、ソフトウェア、またはその両方を含む。非制限的な例として、バス３１２は、Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ（ＡＧＰ）または他のグラフィックスバス、Ｅｎｈａｎｃｅｄ  Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＥＩＳＡ）バス、フロントサイドバス（ＦＳＢ）、ＨＹＰＥＲＴＲＡＮＳＰＯＲＴ（ＨＴ）相互接続、Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＳＡ）バス、ＩＮＦＩＮＩＢＡＮＤ相互接続、Ｌｏｗ−Ｐｉｎ−Ｃｏｕｎｔ（ＬＰＣ）バス、メモリバス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バス、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩ−Ｘ）バス、シリアル・アドバンスド・テクノロジー・アタッチメント（ＳＡＴＡ）バス、Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ  Ｌｏｃａｌ（ＶＬＢ）バス、もしくは別の適切なバス、またはこれらのうち２以上の組み合わせを含み得る。バス３１２は、１以上のバス３１２を適宜含み得る。本開示は、特定のバスを記載および図示しているが、あらゆる適切なバスまたは相互接続を想定している。
【００３８】
本明細書において、コンピュータ可読記憶媒体について言及した場合、構造を有する１以上の非一時的な有体コンピュータ可読記憶媒体を包含する。非制限的な例として、コンピュータ可読記憶媒体は、半導体ベースまたは他の集積回路（ＩＣ）（たとえば、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）や特定用途向けＩＣ（ＡＳＩＣ）など）、ハードディスク、ＨＤＤ、ハイブリッド・ハード・ドライブ（ＨＨＤ）、光ディスク、光ディスクドライブ（ＯＤＤ）、光磁気ディスク、光磁気ドライブ、フロッピー（登録商標）ディスク、フロッピー（登録商標）・ディスク・ドライブ（ＦＤＤ）、磁気テープ、ホログラフィック記憶媒体、ソリッドステートドライブ（ＳＳＤ）、ＲＡＭドライブ、セキュア・デジタル・カード、セキュア・デジタル・ドライブ、もしくは別の適切なコンピュータ可読記憶媒体、またはこれらのうち２以上の組み合わせを適宜含み得る。本明細書において、コンピュータ可読記憶媒体について言及した場合、米国特許法第１０１条下で特許保護の対象ではないあらゆる媒体を除外する。本明細書において、コンピュータ可読記憶媒体について言及した場合、信号伝達の一時的な形態（伝播する電気信号または電磁信号自体など）を、米国特許法第１０１条下で特許保護の対象でない程度まで除外する。非一時的なコンピュータ可読記憶媒体は適宜、揮発性、不揮発性、または揮発性および不揮発性の組み合わせであり得る。
【００３９】
本開示は、あらゆる適切な記憶装置を実装している１以上のコンピュータ可読記憶媒体を想定している。特定の実施形態では、コンピュータ可読記憶媒体は、プロセッサ３０２の１以上の部分（たとえば１以上の内部レジスタまたはキャッシュなど）、メモリ３０４の１以上の部分、記憶装置３０６の１以上の部分、またはこれらの組み合わせを適宜実装する。特定の実施形態では、コンピュータ可読記憶媒体は、ＲＡＭまたはＲＯＭを実装する。特定の実施形態では、コンピュータ可読記憶媒体が揮発性または永続メモリを実装する。特定の実施形態では、１以上のコンピュータ記憶媒体は、ソフトウェアを包含している。本明細書において、ソフトウェアについての言及は、１以上のアプリケーション、バ
イトコード、１以上のコンピュータプログラム、１以上の実行可能プログラム、１以上の命令、論理、マシンコード、１以上のスクリプトまたはソースコードを包含し得る。そしてその逆もまた適宜該当し得る。特定の実施形態では、ソフトウェアが１以上のアプリケーション・プログラミング・インターフェース（ＡＰＩ）を含む。本開示は、あらゆる適切なプログラミング言語でまたはプログラミング言語の組み合わせで、記述またはさもなければ表されたあらゆる適切なソフトウェアを想定している。特定の実施形態では、ソフトウェアは、ソースコードまたはオブジェクトコードとして表される。特定の実施形態では、ソフトウェアは、Ｃ、Ｐｅｒｌ、またはそれらの適切な拡張言語など、より高水準のプログラミング言語で表される。特定の実施形態では、ソフトウェアは、アセンブリ言語（または機械語）など、より低水準のプログラミング言語で表される。特定の実施形態では、ソフトウェアは、ＪＡＶＡ（登録商標）、Ｃ、またはＣ＋＋で表される。特定の実施形態では、ソフトウェアは、ハイパー・テキスト・マークアップ言語（ＨＴＭＬ）、拡張マークアップ言語（ＸＭＬ）、または他の適切なマークアップ言語で表される。
【００４０】
本明細書において、「または／あるいは」は、明示されていない限り、あるいは文脈によって示されていない限り、包含的であり独占的でない。したがって、本明細書において、「ＡまたはＢ」は、明示されていない限り、あるいは文脈によって示されていない限り、「Ａ、Ｂ、またはその両方」を意味する。さらに、「と／および／かつ」は、明示されていない限り、あるいは文脈によって示されていない限り、結合的であり、かつ複数である。したがって、本明細書において、「ＡおよびＢ」は、明示されていない限り、あるいは文脈によって示されていない限り、「結合的かつ複数であるＡおよびＢ」を意味する。
【００４１】
本開示は、実施形態例に対する変更、代替、変形、改造、改変について、当業者であれば理解できるすべてを本明細書に包含する。同様に、添付の請求項も、実施形態例に対する変更、代用、変形、改造、改変について、当業者であれば理解できるすべてを本明細書に適宜包含する。さらに、添付の特許請求の範囲の中で、特定の機能を実行するように適合させた、配置された、実行できる、実行可能にした、動作可能な、あるいは動作する機器またはシステム、あるいは機器またはシステムの構成要素について言及した場合、その機器、システム、または構成要素がそのように適合させてあるか、配置されているか、実行可能であるか、実行可能にしてあるか、動作可能であるか、あるいは動作する限り、それら自身あるいはそれらのその特定機能が起動しているか、オンになっているか、あるいはロック解除されているかどうかに関係なく、その機器、システム、または構成要素を包含する。
【図１】
0006001666.tif 000002
【図２】
0006001666.tif 000003
【図３】
0006001666.tif 000004