(58)【調査した分野】(Int.Cl.,DB名)
前記アプリケーションがクラウドベースのアイデンティティをサポートしているときにのみ、前記アプリケーションに前記認証トークンを提供するステップをさらに有する、
請求項1に記載の方法。
前記オペレーティングシステムにより前記ユーザを認証するステップは、認証プロトコルを用いて前記ユーザを前記クライアントデバイスにログインさせるステップを有する、
請求項1に記載の方法。
前記クラウドベースのアイデンティティに関連する、クラウドベースアイデンティティサービスと通信し、ユーザ認証時、前記クラウドベースアイデンティティサービスからユーザ関連情報を読み出すように構成されたクラウドベースアイデンティティサービス通信コンポーネントを有する、請求項7に記載のシステム。
【発明を実施するための形態】
【0010】
特許請求の範囲に記載する本主題を、図面を参照して説明する。図面では、同じ参照数字を用いて同じ要素を示す。以下の説明では、説明を目的として、特許請求の範囲に記載する主題をよく理解できるよう、多数の具体的な詳細事項を記載する。しかし、特許請求の範囲に記載した主題は、これらの具体的な詳細事項が無くても実施できることは明らかである。他の場合では、特許請求の範囲に記載する主題の説明を容易にするために、ブロック図の形式で構造とデバイスを示す。
【0011】
図1は、オンラインアイデンティティを用いてオンラインサービスのユーザを認証する既存技術の一実施形態100を示す図である。例えば、ユーザは、「fabrikam.com」などの第1のウェブベースサービスとオンラインでのつながり(online association)を有する。第1のウェブベースサービスは、ソーシャルネットワーキングサイト、電子メールサービスプロバイダ、オンラインサービスアグリゲータ、その他のクラウドベースの(例えば、インターネット、イントラネット、ローカルまたはワイドネットワークなどオンラインの)サービスプロバイダであり得る。この例では、オンラインサービス112とのつながり(association)は、ユーザ名と関連秘密鍵(例えば、パスワード)を生成することなどによる、そのサービス112に登録する時の認証提供を含みうる。さらに、オンラインサービス112は、セキュリティクエスチョン、イメージ、その他の形式のセキュリティ(例えば、暗号化鍵)などの追加的セキュリティ情報を、ユーザのオンラインIDとともに含めるよう、ユーザに要求することがある。
【0012】
この実施形態100では、ユーザは、「contoso.com」などの他のドメイン102にナビゲートして、例えばそのサイト102にユーザとしてログオンや登録することができる。サイトにログオンまたは登録するとき、ウェブサイトドメインは、ログインするための複数の代替手段を提供するウェブページ104を提供する。一例として、ユーザは、ウェブサイトのログインアイデンティティ106を利用できるし、または「fabrikam.com」ウェブサイト112用に生成したユーザアイデンティティ108などの他のオンラインアイデンティティ108、110を用いてログインできる。さらに、例えば、別のユーザアイデンティティ110を用いてcontoso.com104にログオンしてもよい。
【0013】
一般的に、ユーザが他のオンラインアイデンティティ108、110を選択してウェブサイト102にログインするとき、そのウェブサイトはサービス112などの他のアイデンティティプロバイダ(identity provider)と通信できる(116)。この例では、contoso.comは、ユーザが、サイト102にログインする他のオンラインアイデンティティを選択できるボタン(例えば、108、110)を表示する。ユーザはfabrikam.comオンラインアイデンティティ108を選択でき、ウェブサイト102はfabrikam.comと通信して(116)、ログイン認証情報(login credentials)を提供する。一実施形態では、fabrikamアプリケーションがcontoso.comで実行されているか、典型的なfabrikam.comログイン画面114が呼び出され、ユーザに提供される。ユーザはこれに自分のfabrikam.comアイデンティティ認証情報を入力できる。fabrikam.comによりユーザが認証されると、fabrikam.comウェブサイトはcontoso.comウェブサイト102と通信して(116)、例えばユーザが認証され、contoso.comにログインすることを許されることを示す。
【0014】
ユーザが、例えば、クラウドベースのアイデンティティ(例えば、fabrikam.comの)で自分のデバイスにサインオンし、その認証を用いて、他のアプリケーション及び/またはウェブサイトに自動的にサインインする方法を考案できる。一例として、fabrikam.comの認証を起動してcontoso.comにログオンし、オンラインウェブサイトと通信してユーザを認証する替わりに、ユーザデバイスのオペレーティングシステムが、ユーザがアプリケーション及び/またはウェブサイトにログインする認証を提供することもできる。オペレーティングシステムは、例えばユーザがクラウドベースのアイデンティティを用いてデバイスにログオンした後、ユーザの認証を求められた時、単にウェブサイト及び/またはアプリケーションに対してそのユーザをアイデンティファイ(identify)する。
【0015】
図2は、オペレーティングシステムを用いてアプリケーションのユーザを認証する方法200を示すフロー図である。この方法200は、ステップ202で始まり、ステップ204において、ユーザのクラウドベースのアイデンティティ(cloud-based identity)を用いて、オペレーティングシステム(OS)でユーザを認証するステップを含む。例えば、ユーザは、セキュアに認証され得るように、そのユーザの認証情報を含む一又は複数のクラウドベースのアイデンティティ(例えば、一又は複数のウェブサイト、電子メールサービス、オンラインサービス、ソーシャルサイト、ウェブコンテンツアグリゲーションサイトなどでユーザを認証するのに用いられるアイデンティティ)を有する。クラウドベースのアイデンティティとしては、ユーザアイデンティティと関連共有秘密鍵(例えば、パスワード)とを利用して、ユーザを認証することが多い。他の認証方法を用いることもできるし、セキュリティクエスチョン、画像、ヒューマンインターラクティブプルーフ(HIP)その他の追加的セキュリティ手段を利用してもよい。
【0016】
ステップ206において、アプリケーションがOSにユーザの認証を要求する。例えば、ユーザが利用するデバイスはOSを有し、例えばユーザがそのデバイスにログオンした時に、ユーザはそのOSに認証されている。この例では、ユーザは、デバイスに電源投入すると、クラウドベースのアイデンティティで認証を受けるように促される。さらに、ユーザがデバイス上のアプリケーション(例えば、デバイス上のアプリケーション、またはオンラインアプリケーションまたはサービス)にアクセスを試みると、そのアプリケーションは、(例えば、ユーザのクラウドベースのアイデンティティを提供するオンラインサービスと通信する替わりに)デバイス上のOSにユーザの認証を要求できる。
【0017】
ステップ208において、認証トークンがアプリケーションに提供される。認証トークンはユーザのクラウドベースのアイデンティティ(identity)を示すものである。認証トークンは、ユーザのアイデンティティをプログラム的に具体化するのに用いることができるソフトウェアベースのセキュリティトークンであってもよい。認証トークンは、例えばユーザのアイデンティティとパスワードを入力せずに、アプリケーションにユーザ認証を提供するセキュリティ鍵として機能し得る。例えば、OSは、アプリケーションからの要求があると認証トークンを提供する。トークンはローカルで(例えば、ユーザデバイスで)生成されても、リモートで(例えば、ユーザのアイデンティティに関連するクラウドベースのサービスにより)生成されてもよい。一実施形態では、トークンは、そのアプリケーションによる利用のためだけに生成されてもよいし、複数の要求アプリケーションに対して認証を提供する一般的なトークンであってもよい。
【0018】
ステップ210において、認証トークンは、アプリケーションがユーザを認証するのに用いられる。例えば、ユーザは、クラウドベースのアイデンティティ(identity)(例えば、fabrikam.comログイン認証情報)を用いて自分のデバイスにログオンすると、ユーザがアクセスするアプリケーション(例えば、デバイスベースアプリケーション、ウェブサイト、オンラインサービス、ウェブベースアプリケーションなど)で自動的に(プログラム的に)認証され得る。この例では、ユーザがアプリケーションへのアクセスを試みると、ユーザのクラウドベースのアイデンティティを示す認証トークンがアプリケーションに提供され、ユーザはそのアプリケーションに対して追加的な認証情報を入力しなくても、そのアプリケーションにアクセスできる。さらに、この例では、アプリケーションは、クラウドベースアイデンティティプロバイダ(例えば、「Fabrikam」と通信して、ユーザの認証を要求する必要はない。
【0019】
方法200は、認証トークンを用いてユーザを認証して終了する。
【0020】
図3は、ここに説明する一又は複数の技術の一又は複数の部分を実施できる一実施形態300を示すフロー図である。ステップ302において、ユーザは、アプリケーションで、そのユーザと関連するクラウドベースアイデンティティ(cloud-based identity)に対するサポートを設定する。一実施形態では、ユーザは、アプリケーション用のインターネットベースサービスで、自分のクラウドベースアイデンティティを登録できる。例えば、第1のウェブサイト(例えば、contoso.com)は、ユーザに一又は複数の第2のウェブサイト(例えば、fabrikam.com)からのアイデンティティを利用して、第1のウェブサイトにログインさせる。このように、この例では、ユーザは、第1のウェブサイトでの認証に使うため、第2のウェブサイトから自分のアイデンティティを登録できる。
【0021】
実施形態300のステップ304において、ユーザは、そのユーザのクラウドベースのアイデンティティを用いて、自分のデバイスにログオンする。一般的に、ユーザがデバイスに電源を投入すると、オペレーティングシステムがユーザに、そのユーザに関連するアイデンティティ(identity)を提供するよう求める、及び/またはユーザの認証を求める。一実施形態では、強力な認証プロトコルを利用してユーザをデバイスにログインする。例えば、強力な認証には、ユーザ名と共有秘密(例えば、複数の共有秘密)などの、ユーザアイデンティティ(user identity)に関する少なくとも2つの要素を提供することによる2要素認証(または、例えば多要素認証)がある。他の一例として、強力な認証は、暗号鍵の共有やチャレンジ・レスポンス認証スキームなどであってもよい。
【0022】
この実施形態では、ユーザは、(例えば、ユーザ名とパスワード認証を含む)fabrikam.comなどの自分のクラウドベースアイデンティティでデバイスにログオンする。ステップ306において、ユーザは、自分のクラウドベースアイデンティティに関連するクラウドベースアイデンティティサービスを用いて認証されることができる。一実施形態では、オペレーティングシステムは、デバイスのユーザにログインユーザインタフェース(UI)を提供でき、OSは、例えばUIに入力された情報に用いて、クラウドベースアイデンティティサービスと通信して、クラウドベースアイデンティティのためにユーザを認証できる。
【0023】
一実施形態では、ユーザの認証は、上記の通り、クラウドベースアイデンティティ(例えば、fabrikam.comによる)に関連するユーザ名とパスワードなどの強力な認証を含む。一例として、ユーザは強力な認証情報によりクライアントデバイスにログオンでき、ログオン情報はクラウドベースアイデンティティサービスに伝送され、クラウドベースアイデンティティサービスはユーザを認証し、ユーザが入力されたアイデンティティに対して認証されていることをOSに示すことができる。
【0024】
さらに、一実施形態では、ユーザがクラウドベースアイデンティティでログインした後、一または複数のブラウザクッキーが、例えばユーザのデバイスで実行されているブラウザで更新される。例えば、更新されたブラウザクッキーは、ユーザがfabrikam.comにサインインしていることを示す。このような一または複数のクッキーの利用により、例えば、自動的な認証は、認証トークンをOSから読み出す認証要求をしているアプリケーションに常に依存しなくてもよく、ユーザがクラウドベースアイデンティティサービスにログオンしていることを知るためだけに更新されたブラウザクッキーを用いてもよい。
【0025】
ステップ308において、(例えば、クラウドベースアイデンティティサービスによる)ユーザの認証時に、ユーザのクラウドベースアイデンティティのために、認証トークンが生成される。例えば、OSは、デバイスにログオンしているユーザがクラウドベースアイデンティティのために認証されているとの確認を受け取ると、認証トークンを生成させることができる。一実施形態では、OS中で実行されているプログラムにより生成できる。他の一実施形態では、認証トークンは、クラウドベースアイデンティティサービスにより生成され、デバイス上のOSにより読み出される。
【0026】
一実施形態では、アプリケーションに対するインターネットベースサービスでのクラウドベースアイデンティティを登録するステップは、そのアプリケーションのインターネットベースサービスが、ユーザのクラウドベースアイデンティティに関連するクラウドベースアイデンティティサービスと通信するステップを含む。例えば、ユーザは、第2のウェブサイトのためのログイン認証情報(login credentials)を提供することにより、第1のウェブサイトに認証を要求できる。第1のウェブサイトは第2のウェブサイトと通信して、ユーザ認証を要求できる。さらに、この例では、ユーザが第2のウェブサイトで認証されると、第2のウェブサイトは、ユーザが認証されているとの表示を返すことができる。一実施形態では、アプリケーションに対するインターネットベースサービスでの登録は、例えば一度だけ行え、ユーザは、そのユーザのクラウドベースアイデンティティを用いて、アプリケーションに対してインターネットベースサービスでの登録を維持できる(例えば、ユーザは一旦登録されると、後で再登録する必要はない)。
【0027】
図4は、ここに説明する一又は複数の技術の一又は複数の部分を実施できる一実施形態400を示すフロー図である。ステップ402において、ユーザがデバイス上のアプリケーションをアクティブ化する。ここで、ユーザは、自分のクラウドベースアイデンティティを用いてデバイスに事前にログインしていてもよい。アプリケーションをアクティブ化するステップは、次のステップを含む:
デバイス上に常駐するプログラムを開くステップ
(例えば、メディアプレーヤをスタートするステップであり、そのプレーヤのプログラミングの少なくとも一部はクライアントデバイス上にローカルに記憶されているステップ);
ウェブブラウザプログラムを開き、ウェブサイトにナビゲーションするステップ;
ウェブサイトからウェブベースアプリケーション(web-app)をスタートするステップ(例えば、web-appにサービスしているリモートサーバにリンクされたデバイスのデスクトップからweb-appをスタートするステップ);
ユーザのデバイスなどからある形式のプログラミングをアクティブ化するステップ。
【0028】
ステップ404において、ユーザによりアクティブ化されたアプリケーションは、例えば、ユーザのクラウドベースIDを用いて、ユーザの認証を求めてOSとネゴシエーションできる。一実施形態では、ユーザのクラウドベースアイデンティティがアプリケーションによりサポートされていないこと、及び/またはアプリケーションがそのユーザのクラウドベースアイデンティティを用いることをユーザが許可していないことを、アプリケーションが判断する、及び/またはOSが知ることができる。この実施形態では、上記(例えば、
図3のステップ302)の通り、例えば、ユーザのIDに対するサポートが設定されなければ、認証トークンがアプリケーションに提供されない。一例として、ネゴシエーション中に、IDがアプリケーションによりサポートされていないことが分かると、アプリケーションとともに用いるクラウドベースIDをユーザが設定するのをガイドするダイアローグボックスUIが表示される。
【0029】
一実施形態では、ネゴシエーションは、アプリケーションでのユーザのIDに対するサポート(例えば、ユーザがすでにサポートを設定したこと)を特定するステップと、アプリケーションがユーザの認証をOSに求めるステップとを含む。ステップ406において、アプリケーションからのユーザのIDにアクセスする要求があると、OSは、例えばUIダイアローグボックスにおいて、ユーザのクラウドベースIDをアプリケーションと共用するユーザの許可を求めることができる。このように、例えば、ユーザにより許可されたアプリケーションのみがユーザの認証トークンにアクセスできる。例えば、悪意のユーザ及び/またはプログラムが、ユーザIDや関連情報にアクセスして、例えば悪意のある動作を実行したがるかもしれない。この例では、明示的許可がユーザにより与えられることにより、悪意のある攻撃が減少するかも知れない。
【0030】
ステップ408において、ユーザは、例えば、許可UIダイアローグボックスにおいて「イエス」ボタンを選択することにより、アプリケーションがユーザのクラウドベースIDにアクセスする許可を与えることができる。ステップ410において、ユーザがそのクラウドベースアイデンティティへのアクセスを許可すると、認証トークンがアプリケーションに提供される。一実施形態では、認証トークンは、アプリケーションからの要求があると、例えばOSにより生成され、またはクラウドベースIDサービスなどから読み出される。例えば、ユーザがOSにより認証された時に生成された認証トークンをOSが記憶していてもよいが、アプリケーションがユーザ認証を要求した時にのみトークンが生成されてもよい。さらに、アプリケーションがユーザのクラウドベースIDをサポートしている場合にのみ、認証トークンが提供されてもよい。
【0031】
他の一実施形態では、アプリケーションから認証トークンを要求するステップは、アプリケーションがオペレーティングシステムに、そのアプリケーションを含むクライアントデバイスにログオンしたユーザのアイデンティティを求めるステップを含む。例えば、特定のユーザに対する認証許可を要求する替わりに、アプリケーションは、デバイスにログオンしたユーザの認証のみを欲していることがある。この例では、ユーザはデバイスにログインでき、デバイスOSはユーザを認証できる。アプリケーションは、アクティブ化されると、例えば、ログインしているユーザのIDをOSに求めるだけで、ユーザとインターラクションしない。この実施形態では、オペレーティングシステムがユーザのクラウドベースアイデンティティで応答でき、アプリケーションがユーザのクラウドベースアイデンティティを用いてユーザを認証できる。
【0032】
ステップ412において、ユーザが認証されると、ユーザ関連情報がクラウドベースアイデンティティサービスから読み出せる。例えば、ユーザ関連情報は、ユーザに関するアイデンティティと、メッセージのインテグリティを確認するのに使えるメタデータとを含む。例えば、アプリケーションのオンラインプレゼンスに関する秘密鍵を用いて、メッセージが盗聴されたか判断する。この例では、一旦ユーザが認証されると、アプリケーションはそのアプリケーションとリンクしたリモートサーバ(例えば、アプリケーションプロバイダ)と定期的にまたは連続的に通信し、ユーザのアイデンティティとメタデータを、悪意のハッキングを減らす秘密鍵の一部として使える。
【0033】
他の一例として、改善されたユーザ体験をアプリケーションが提供するのを援助できる他のユーザ関連情報、例えば、嗜好、利用履歴、利用または記憶されたメディア、コンタクト、お気に入りのウェブサイト、電子メール情報、カレンダなどが提供され得る。あるいは、ユーザが例えばOSで認証される時、ユーザ関連情報がクラウドベースIDサービスから読み出され、(例えば、ユーザによる許しがあれば)OSはその情報をアプリケーションに提供できる。
【0034】
ステップ414において、認証トークンは、アプリケーションがユーザを認証するのに用いられる。例えば、アプリケーションは、OSとトラスト関係を有し、認証トークンは、ユーザが言うとおりの人であるとのOSによる表示(representation)を含み得る。さらに、例えば、アプリケーションが認証目的でユーザのクラウドベースIDをサポートするように設定されていると、認証トークンはユーザのクラウドベースIDがOSにより認証されていることの表示を含み得る。一実施形態では、アプリケーションは、認証トークンの受領時に、ユーザによりアクセスされ得る。
【0035】
ユーザが、例えば、ラップトップ、スマートフォン、ハンドヘルドコンピュータ、デスクトップなどのデバイスにサインオンできるシステムを考案してもよい。ユーザは、デバイスにログオンするためにユーザにより事前に設定されたクラウドベースアイデンティティを用いる。デバイスのオペレーティングシステムは、そのIDでユーザを認証できる。オペレーティングシステムは、ユーザのクラウドベースIDのサービスプロバイダと通信して、デバイスのユーザを認証できる。アプリケーションが例えばユーザの認証情報を求めた時には、オペレーティングシステムはアプリケーションでの認証のため、アプリケーションにユーザのクラウドベースIDを提供できる。
【0036】
図5は、オペレーティングシステム552を用いてアプリケーション558のユーザを認証するシステム500を示すコンポーネント図である。コンピュータベースプロセッサ502は、システムのデータを処理するように構成され、ユーザ認証コンポーネント504と動作可能に結合している。ユーザ認証コンポーネント504はユーザ550を認証し、オペレーティングシステム552は、ユーザ550と関連するクラウドベースアイデンティティ554を用いる。例えば、ユーザは、クラウドベースIDサービス(例えば、ソーシャルネットワーク、電子メールサービス、またはその他のオンラインサービスなど)で登録されているクラウドベースアイデンティティ(ID)を有する。この例では、クラウドベースIDサービスは、ユーザを認証するのに必要なことをすでに行っており、それゆえユーザによりクラウドベースアイデンティティ554を用いてデバイス上のOS552でユーザを認証することができる。
【0037】
認証トークン提供コンポーネント506は、ユーザ認証コンポーネント504及びオペレーティングシステム552と動作可能に結合している。認証トークン提供コンポーネント506は、オペレーティングシステム552への要求があると(その要求がアプリケーション558からのものである場合)、アプリケーション558に認証トークン556を提供する。認証トークン556は、ユーザのクラウドベースアイデンティティ554に基づき、アプリケーション558のためにユーザを認証するために用いられる。例えば、ユーザのオンラインID554がオペレーティングシステム552のために認証コンポーネント504により認証されると、認証トークン提供コンポーネント506は認証トークン556を用いてアプリケーション558にユーザが認証されたことを知らせることができる。この例では、アプリケーションがオペレーティングシステム552にユーザ550の認証を要求すると、認証トークン556が要求された認証を提供できる。
【0038】
図6は、ここに説明する一又は複数のシステムを実施できる一実施形態600を示すコンポーネント図である。この例では、
図5の拡張を提供するので、
図5を参照して説明した要素やコンポーネントなどは簡略化のため繰り返し説明しないこともある。クラウドベースアイデンティティサービス通信コンポーネント610は、(例えば、ユーザのIDを提供され、及び/または維持する)ユーザ650のクラウドベースアイデンティティと関連するクラウドベースアイデンティティサービス660と通信できる。クラウドベースアイデンティティサービス通信コンポーネント610は、クラウドベースアイデンティティのためにユーザを認証し、及び/またはユーザ650を認証した時、クラウドベースアイデンティティサービス660からユーザ関連情報を読み出し得る。例えば、ユーザ650が自分のクラウドベースID654を用いてデバイスにログオンする時、ユーザ認証コンポーネント504は、クラウドベースアイデンティティサービス通信コンポーネント610を利用してID654と関連するクラウドベースアイデンティティサービス660でそのIDを認証し、例えば、クラウドベースアイデンティティサービス660からアイデンティティ情報などのユーザ関連情報を読み出すこともできる。
【0039】
ユーザ650がユーザ認証コンポーネント504により認証されると、認証トークン生成コンポーネント612は、ユーザのクラウドベースアイデンティティ654に関連する認証トークン656を生成できる。ユーザログインコンポーネント614は、オペレーティングシステム652のためにユーザログイン認証情報を読み出すことができる。このユーザログイン認証情報を用いて、オペレーティングシステム652のために、ユーザのクラウドベースアイデンティティ654を認証できる。例えば、ユーザがオペレーティングシステム652を有するデバイスに電源投入した時、ユーザが(例えば、ユーザのオンラインIDに関連するユーザ名とパスワードで)ログインするために、ログインダイアログユーザインタフェース(UI)が提供される。この例では、ユーザログインコンポーネント614は、ログイン情報を読み出し、(ログインUIを提供してもよい、)そのログイン情報をユーザ認証コンポーネント504に送る。
【0040】
ユーザ認証コンポーネント504は、ユーザ650により操作されるクライアントデバイス616に含まれていても良く、クライアントデバイス616へのユーザログインに少なくとも部分的に基づきユーザのクラウドベースアイデンティティ654を取得するように構成され得る。例えば、クライアントデバイス616は、例えば、ユーザのクラウドベースID654により、ユーザログインコンポーネント614により提供されるログインUIを用いて、ユーザにデバイスへのログオンを可能とするコンポーネントを有する。クラウドベースID654は、デバイス上のユーザ認証コンポーネント504により認証され得る。このように、例えば、デバイス616上に常駐した(または、例えばデバイス616によりリモートでアクセスされる)アプリケーション658は、OS652による認証を用いて、ユーザがアプリケーションにアクセスするのをローカルで認証でき、ユーザに2度のログインを求める必要はない。
【0041】
さらに別の一実施形態は、ここに説明した一又は複数の方法を実施するように構成されたプロセッサ実行可能命令を含む、コンピュータ読み取り可能媒体を含む。このように考案されるコンピュータ読み取り可能媒体を
図7に示した。実施形態700は、コンピュータ読み取り可能媒体708(例えば、CD−R、DVD−R、またはハードディスクドライブのプラッター(platter))を有し、コンピュータ読み取り可能データ706がその上にエンコードされている。このコンピュータ読み取り可能データ706は、ここに説明した一又は複数の原理により動作するように構成された一組のコンピュータ命令704を含む。かかる実施形態702では、プロセッサ実行可能命令704は、例えば、
図2の方法200などの方法を実行するように構成されている。他の一実施形態では、プロセッサ実行可能命令704は、例えば、
図5のシステム500などのシステムを実施するように構成されている。かかる多くのコンピュータ読み取り可能媒体は、ここに説明した方法により動作するように構成された技術分野における当業者により考案され得る。
【0042】
本主題を個別の構造的特徴及び/又は方法動作を用いて説明したが、言うまでもなく、添付した特許請求の範囲に規定する主題は、上記の特定の特徴や動作には必ずしも限定されない。上記の特定の特徴や動作は、請求項を実施する形式例を開示するものである。
【0043】
本願では、「コンポーネント」、「モジュール」、「システム」、「インタフェース」などの用語は、概して、コンピュータに関する実体であって、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、又は実行中のソフトウェアを意味する。例えば、コンポーネントは、プロセッサ上で実行されているプロセス、プロセッサ、オブジェクト、実行されたスレッド、プログラム、及び/又はコンピュータなどであるが、これらに限定されない。例として、コントローラ上で実行されているアプリケーションとそのコントローラとは両方ともコンポーネントである。プロセス及び/又は実行されたスレッド内に1つ以上のコンポーネントがあってもよく、一コンポーネントは一コンピュータ上にあっても、及び/又は2つ以上のコンピュータ間に分散していてもよい。
【0044】
さらに、特許請求の範囲に記載した主題は、コンピュータを制御して開示の主題を実施するソフトウェア、ファームウェア、ハードウェア、またはこれらの任意の組合せを作る標準的なプログラミング及び/またはエンジニアリング方法を用いて、方法、装置、または製品(article of manufacture)として実施できる。ここで用いる「製品」との用語は、任意のコンピュータ読み取り可能デバイス、キャリア、または媒体からアクセス可能なコンピュータプログラムを含むものである。もちろん、当業者には言うまでもなく、特許請求の範囲に記載した主題の範囲や精神から逸脱することなく、この構成に多くの修正を加えることができる。
【0045】
図8と以下の説明は、ここに説明した一又は複数のプロビジョンを実施するのに好適な計算環境を簡単に説明するものである。
図8の動作環境は、好適な動作環境の単なる一例であって、動作環境の利用や機能の範囲に関する限定を示唆するものではない。計算デバイスの例としては、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、モバイルデバイス(モバイルフォン、パーソナルデジタルアシスタント(PDA)、メディアプレーヤなど)、マルチプロセッサシステム、コンシューマエレクトロニクス、ミニコンピュータ、メインフレームコンピュータ、上記の任意のシステムやデバイスを含む分散計算環境などが含まれるが、これらに限定されない。
【0046】
必要ではないが、実施形態を一又は複数の計算デバイスにより実行される「コンピュータ読み取り可能命令」のコンテクストで説明する。コンピュータ読み取り可能命令は、(以下に説明する)コンピュータ読み取り可能媒体を介して配布できる。コンピュータ読み取り可能命令は、特定のタスクを実行したり、特定の抽象データタイプをインプリメントする関数、オブジェクト、アプリケーションプログラムインタフェース(API)、データ構造などのプログラムモジュールとして実施できる。一般的に、コンピュータ読み取り可能命令の機能は、結合し、または必要に応じて様々な環境に分散されている。
【0047】
図8は、ここに説明する一又は複数の実施形態を実施するように構成された計算デバイス812を有するシステム810の一例を示している。ある構成では、計算デバイス812は少なくとも1つの処理ユニット816とメモリ818を含む。計算デバイスの構成とタイプに応じて、メモリ818は、(例えばRAMのように)揮発性であっても、(例えばROMやフラッシュメモリのように)不揮発性であっても、これらの組合せであってもよい。ここ構成を
図8の破線814で示した。
【0048】
他の実施形態では、デバイス812は、追加的特徴及び/または機能を含み得る。例えば、デバイス812は、磁気記憶、光記憶などを含むがこれらに限定されない追加的な(例えば、リムーバブル及び/または非リムーバブルの)記憶も含み得る。かかる追加的記憶は、
図8に記憶820により示した。一実施形態では、ここに説明した一又は複数の実施形態を実施するコンピュータ読み取り可能命令は記憶820にある。記憶820は、オペレーティングシステム、アプリケーションプログラムなどを実施する他のコンピュータ読み取り可能命令も記憶できる。コンピュータ読み取り可能命令は、例えば、メモリ818にロードされ、処理ユニット816により実行される。
【0049】
ここで用いる「コンピュータ読み取り可能媒体」との用語は、コンピュータ記憶媒体を含む。コンピュータ記憶媒体には、コンピュータ読み取り可能命令その他のデータなどの情報を記憶するための任意の方法や技術で実施された、揮発性および不揮発性、リムーバブルまたは非リムーバブルの媒体を含む。メモリ818と記憶820はコンピュータ記憶媒体の例である。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリその他のメモリ技術、CD−ROM、デジタルバーサタイルディスク(DVD)その他の光ディスク記憶媒体、磁気カセット、磁気テープ、磁気ディスク記憶その他の磁気記憶デバイス、またはその他の、所望の情報の記憶に使え、デバイス812によりアクセスできる任意の媒体を含むが、これらに限定されない。かかるコンピュータ記憶媒体はデバイス812の一部であり得る。
【0050】
デバイス812は、デバイス812が他のデバイスと通信できるようにする通信接続826も含み得る。通信接続826は、モデム、ネットワークインタフェースカード(NIC)、統合ネットワークインタフェース、RF送信器/受信器、赤外線ポート、USB接続、その他の計算デバイス812を他の計算デバイスに接続するインタフェースを含み得るが、これらに限定されない。通信接続826は、有線接続または無線接続を含み得る。通信接続826は、通信媒体を送信及び/または受信できる。
【0051】
「コンピュータ読み取り可能媒体」との用語は通信媒体を含み得る。通信媒体は、一般的に、キャリア波やその他の伝送メカニズムである「変調データ信号」中のコンピュータ読み取り可能命令その他のデータを化体し、任意の情報配信媒体を含む。「変調データ信号」との用語は、情報を信号にエンコードするように設定または変更された特徴を有する信号を含む。
【0052】
デバイス812は、キーボード、マウス、ペン、ボイス入力デバイス、タッチ入力デバイス、赤外線カメラ、ビデオ入力デバイス、及び/またはその他の入力デバイスなどの入力デバイス824を含み得る。ディスプレイ、スピーカ、プリンタ、及び/またはその他の出力デバイスである出力デバイス822もデバイス812に含まれ得る。入力デバイス824と出力デバイス822は、有線接続、無線接続、またはこれらの組合せを介してデバイス812に接続されている。一実施形態では、他の一計算デバイスからの入力デバイスまたは出力デバイスを、計算デバイス812の入力デバイス824または出力デバイス822として用いることもできる。
【0053】
計算デバイス812のコンポーネントは、バスなどの様々な相互接続により接続され得る。かかる相互接続には、PCIエクスプレスなどのPCI(Peripheral Component Interconnect)、USB(Universal Serial Bus)、IEEE1394(firewire)、光学バス構造などが含まれる。他の一実施形態では、計算デバイス812のコンポーネントは、ネットワークにより相互接続され得る。例えば、メモリ818は、ネットワークにより相互接続された異なる物理的場所にある複数の物理的メモリユニットよりなるものであってもよい。
【0054】
当業者には言うまでもないが、コンピュータ読み取り可能命令を記憶するのに用いられる記憶デバイスは、ネットワークにわたって分散していてもよい。例えば、ネットワーク828を介してアクセス可能な計算デバイス830は、コンピュータ読み取り可能命令を記憶し、ここに説明した一又は複数の実施形態を実施する。計算デバイス812は、計算デバイス830にアクセスして、コンピュータ読み取り可能命令の一部または全部をダウンロードして実行する。あるいは、計算デバイス812は、必要に応じてコンピュータ読み取り可能命令の複数の部分(pieces)をダウンロードして、一部の命令を計算デバイス812で実行し、一部の命令を計算デバイス830で実行してもよい。
【0055】
実施形態の様々な動作をここに説明した。一実施形態では、説明した動作のうちの一又は複数は、コンピュータ読み取り可能媒体に記憶されたコンピュータ読み取り可能命令であり得る。コンピュータ読み取り可能命令は、計算デバイスにより実行されると、その計算デバイスに、説明した動作を実行させる。複数の動作の一部または全部を説明した順序は、これらの動作がその順序でなければならないことを示唆するものと解してはならない。当業者には、別の順序でも説明した利益を有することがわかるだろう。さらに、言うまでもなく、ここに説明した各実施形態において必ずしもすべての動作が必要なわけではない。
【0056】
さらに、「exemplary」との語は、ここでは一例であることを意味する。ここで「exemplary」と説明した態様や設計は、他の態様や設計より有利であると限らない。むしろ、exemplaryとの語の使用は、具体的なコンセプトの提示を意図している。本願において、「または」との用語は、排他的な意味での「または」ではなく、包含的な意味での「または」を意味すると意図している。すなわち、特に断らない限り、またはコンテクストから明らかでない限り、「XがAまたはBを利用する」は任意の自然な包含的な置換を意味することを意図している。すなわち、XがAを利用し;XがBを利用し;またはXがAとBの両方を利用する場合、前記のどの場合であっても「XがAまたはBを利用する」が満たされる。さらに、AとBの少なくとも一方などの表現は、一般的に、AまたはBまたはAとBの両方を意味する。また、本願及び添付した特許請求の範囲で用いている冠詞「a」と「an」は、特に断らなければ、またはコンテクストから単数形であることが明らかでなければ、一般的に、「一又は複数」を意味すると解釈される。また、AとBの少なくとも一方などの表現は、一般的に、AまたはBまたはAとBの両方を意味する。
【0057】
また、一又は複数の実施形態を参照して本開示を示し説明したが、当業者には、この明細書及び添付した図面を読んで理解すれば、等価な代替や修正が思いつくだろう。本開示はかかる修正や代替のすべてを含み、後述の特許請求の範囲のみにより限定される。上記のコンポーネント(例えば、要素やリソース)により実行される様々な機能に関して、かかるコンポーネントを説明するのに用いた用語は、特に断らなければ、例え開示の構成と構造的に等価でなくても、本開示のここに例示した実施形態の機能を実行する、説明のコンポーネントの指定の機能を実行する(例えば、機能的に高価な)任意のコンポーネントに対応することを意図している。また、本開示の特徴を複数の実施形態の1つのみを参照して開示したとしても、アプリケーションで好ましく有利であるならば、かかる特徴は他の実施形態の一又は複数の特徴と組み合わせてもよい。さらに、「includes」、「having」、「has」、「with」またはこれらの変化形を詳細な説明または特許請求の範囲のいずれかで用いる限り、かかる用語は「comprising」との用語と同様に包含的であることを意図している。