(58)【調査した分野】(Int.Cl.,DB名)
サービスから、ユーザが前記サービスのユーザ・アカウントにログインしたことに応じて、前記ユーザ・アカウントにより保持され同期化される、1以上の周辺デバイスの各々のためのデバイス関連付けデータを受信するステップであって、周辺デバイスのための前記デバイス関連付けデータは、該周辺デバイスをコンピューティング・デバイスにどのように接続するかを示すものである、ステップと、
前記1以上の周辺デバイスのうち、前記コンピューティング・デバイスによる使用のために自動的に利用可能にすることができる周辺デバイスを判別するステップと、
前記1以上の周辺デバイスのうち、前記コンピューティング・デバイスによる使用のために自動的に利用可能にすることができる周辺デバイスだけを、前記コンピューティング・デバイスによる使用のために自動的に利用可能にするステップと、
前記1以上の周辺デバイスのうち、前記デバイス関連付けデータにクレデンシャルが含まれていないため前記コンピューティング・デバイスによる使用のために自動的には利用可能にすることができない少なくとも1つの周辺デバイスについて、クレデンシャルを提供するためのプロンプトを表示するステップと、
提供された前記クレデンシャルに基づいて、前記コンピューティング・デバイスによる使用のために自動的には利用可能にすることができない前記少なくとも1つの周辺デバイスを、前記コンピューティング・デバイスによる使用のために利用可能にするステップと、
を含む方法。
前記コンピューティング・デバイスによる使用のために自動的に利用可能にすることができる周辺デバイスのためのデバイス関連付けデータのコピーに加えて、前記1以上の周辺デバイスのうち、前記コンピューティング・デバイスによる使用のために自動的には利用可能にすることができない少なくとも1つの周辺デバイスのためのデバイス関連付けデータのコピーを、前記コンピューティング・デバイス上で保持するステップ
をさらに含む、請求項1記載の方法。
前記コンピューティング・デバイスによる使用のために自動的には利用可能にすることができない前記少なくとも1つの周辺デバイスのインジケーションを表示するステップと、
該少なくとも1つの周辺デバイスのインストールを許可するユーザ入力に応答して、前記コンピューティング・デバイス上に前記少なくとも1つの周辺デバイスをインストールするステップと、
をさらに含む、請求項2記載の方法。
少なくとも1つの周辺デバイスのための前記デバイス関連付けデータは、該少なくとも1つの周辺デバイスにより、前記サービスに提供されたものである、請求項1記載の方法。
前記判別することは、どの周辺デバイスを前記コンピューティング・デバイスによる使用のために自動的には利用可能にすることができないかを識別するための1以上のルールを適用することを含み、前記自動的に利用可能にすることは、前記コンピューティング・デバイスによる使用のために自動的には利用可能にすることができない周辺デバイスを除いた前記1以上の周辺デバイスを、前記コンピューティング・デバイスによる使用のために自動的に利用可能にすることを含む、請求項1記載の方法。
前記サービスから、前記1以上の周辺デバイスのうちの少なくとも1つの周辺デバイスのためのデバイス使用データを受信するステップであって、周辺デバイスのための前記デバイス使用データは、該周辺デバイスのための特定の設定を識別するものである、ステップと、
前記コンピューティング・デバイス上にインストールされている該少なくとも1つの周辺デバイスに前記特定の設定を適用するステップと、
をさらに含む、請求項1記載の方法。
【発明を実施するための形態】
【0005】
コンピューティング・デバイス間でデバイス関連付けデータを同期化することについて、本明細書で説明する。1以上の周辺デバイスのためのデバイス関連付けデータが、ローカル・サービス又はリモート・サービスのユーザ・アカウントに関連付けられた複数の異なるコンピューティング・デバイス間で保持され同期化される。周辺デバイスのためのデバイス関連付けデータは、その周辺デバイスのネットワーク・アドレス、その周辺デバイスと通信するために使用されるセキュリティ情報等といった、その周辺デバイスに接続するために使用されるデータである。デバイス関連付けデータは、ユーザが自分のアカウントにアクセスするコンピューティング・デバイスにより保持されることに加えて、ユーザのユーザ・アカウントに関連付けられたサービスによっても保持される。
【0006】
新たな周辺デバイスが、コンピューティング・デバイス上にインストールされたとき、又は、コンピューティング・デバイスに別の形で関連付けられたときに、新たな周辺デバイスのためのデバイス関連付けデータが、そのコンピューティング・デバイスに追加されるとともに、サービスにも追加される。ユーザが、コンピューティング・デバイスから、自分のユーザ・アカウントにログインしたときに、そのコンピューティング・デバイスにまだ記憶されていない、周辺デバイスのためのデバイス関連付けデータが、サービスからそのコンピューティング・デバイスにコピーされ、そのコンピューティング・デバイス上に自動的にインストールすることができる、あるいは、そのコンピューティング・デバイスに別の形で自動的に関連付けることができる、周辺デバイスのうちのいくつかが、そのコンピューティング・デバイス上に自動的にインストールされる、あるいは、そのコンピューティング・デバイスに別の形で関連付けられる。したがって、周辺デバイスのためのデバイス関連付けデータが、コンピューティング・デバイス又はサービスに追加された場合、そのデバイス関連付けデータは、ユーザが自分のアカウントにログインする他のコンピューティング・デバイスと同期化され、そのデバイス関連付けデータが、そのような他のコンピューティング・デバイスにコピーされ、周辺デバイスが、そのような他のコンピューティング・デバイス上に自動的にインストールされる、あるいは、そのような他のコンピューティング・デバイスに別の形で関連付けられる。
【0007】
図1は、1以上の実施形態に従った、コンピューティング・デバイス間におけるデバイス関連付けデータの同期化を実装する例示的なシステム100を示している。システム100は、コンピューティング・デバイス102と、複数の(n個の)コンピューティング・デバイス104(1)、...、104(n)と、を含み、これらのコンピューティング・デバイスは、サービス106と通信することができる。コンピューティング・デバイス102、104は、インターネット、ローカル・エリア・ネットワーク(LAN)、電話網、イントラネット、他のパブリック・ネットワーク及び/又はプロプライエタリ・ネットワーク、これらの組合せ等を含む多種多様なネットワークのうちの任意のものを介して、サービス106と通信することができる。コンピューティング・デバイス102、104は、追加的又は代替的に、多様な有線接続及び/又は無線接続のうちの任意のもの等の、ネットワーク以外の通信チャネルを介してサービス106と通信してもよい。システム100は、サービス106と通信する任意の数の同じタイプ又は異なるタイプのコンピューティング・デバイスを含んでもよいことに留意すべきである。
【0008】
各コンピューティング・デバイス102、104は、多種多様なタイプのデバイスであり得、コンピューティング・デバイス102及び104は、同じタイプのデバイスであってもよいし、異なるタイプのデバイスであってもよい。例えば、各コンピューティング・デバイス102、104は、デスクトップ・コンピュータ、サーバ・コンピュータ、ラップトップ・コンピュータ、ネットブック・コンピュータ、タブレット・コンピュータ、ノートパッド・コンピュータ、モバイル・ステーション、エンターテイメント・アプライアンス、ディスプレイ・デバイスに通信可能に接続されたセットトップ・ボックス、テレビジョン又は他のディスプレイ・デバイス、携帯電話機又は他の無線電話機、ゲーム・コンソール、自動車用コンピュータ、ウェアラブル・コンピュータ等であり得る。したがって、各コンピューティング・デバイス102、104は、多くのメモリ・リソース及びプロセッサ・リソースを有するフル・リソース・デバイス(例えば、パーソナル・コンピュータ、ゲーム・コンソール)から、限られたメモリ・リソース及び/又は処理リソースを有する低リソース・デバイス(例えば、従来型のセットトップ・ボックス、ハンドヘルド・ゲーム・コンソール)まで及び得る。
【0009】
コンピューティング・デバイス102及び104の説明と同様に、サービス106は、多くのメモリ・リソース及びプロセッサ・リソースを有するフル・リソース・デバイスから、限られたメモリ・リソース及び/又は処理リソースを有する低リソース・デバイスまで及ぶ多種多様なタイプのデバイスのうちの1以上を用いて実装することができる。サービス106は、コンピューティング・デバイス102、104からリモートにあってもよいし(例えば、インターネットを介してアクセスされる)、コンピューティング・デバイスに対してローカルにあってもよい(例えば、LANを介してアクセスされる)。したがって、サービス106は、コンピューティング・デバイス102、104に対してローカルにある1以上のデバイスによりホストされてもよいし(例えば、同じビルディング又はオフィス等の敷地内で)、コンピューティング・デバイス102、104からリモートにある1以上のデバイスによりホストされてもよい(例えば、別のビルディング、町、又は国等の異なる敷地内で)。
【0010】
コンピューティング・デバイス102のユーザは、サービス106に関連付けられたユーザ・アカウントを有する。ユーザは、ユーザ名及びパスワードや、デジタル証明書によって等、多種多様な方法のうちのいずれかにより、コンピューティング・デバイス102から、自分のアカウントにログインすることができる。ユーザが、自分のアカウントにログインしている間に、コンピューティング・デバイス102は、以下でより詳細に説明するように、サービス106とデバイス関連付けデータを同期化する。
【0011】
コンピューティング・デバイス102のユーザは、1以上の周辺デバイス108に接続することができる。これは、コンピューティング・デバイス102を1以上の周辺デバイス108に関連付ける、とも称される。コンピューティング・デバイス102を周辺デバイス108に関連付けることは、周辺デバイス108をコンピューティング・デバイス102上にインストールすることを含み得る。周辺デバイスをインストールすることは、コンピューティング・デバイス102と周辺デバイス108との間の通信接続を確立するために(例えば、周辺デバイス108をコンピューティング・デバイス102とペアリングするために)、コンピューティング・デバイス102及び/又は周辺デバイス108のためのリソース(例えば、ドライバ)をインストールして、コンピューティング・デバイス102及び/又は周辺デバイス108のための適切なプロパティを設定することを含む。したがって、周辺デバイスをインストールすることは、コンピューティング・デバイス102による使用のために周辺デバイス108を利用可能にすることを含む。
【0012】
コンピューティング・デバイス102を周辺デバイス108に関連付けることはまた、周辺デバイス108にどのようにアクセスするか(例えば、コンピューティング・デバイス102と周辺デバイス108との間の通信接続をどのように確立するか)、周辺デバイスがどのようなデバイス機能を有するか、そのようなデバイス機能をどのように使用するか、そのようなデバイス機能にどのようにアクセスするか、これらの組合せ等を示す情報をコンピューティング・デバイス102に追加することを含み得る。したがって、コンピューティング・デバイス102を周辺デバイス108に関連付けることは、周辺デバイス108をコンピューティング・デバイス102上にインストールすることなく、コンピューティング・デバイス102による使用のために周辺デバイス108を利用可能にすることを含み得る。
【0013】
周辺デバイス108とは、コンピューティング・デバイスに接続することができるデバイスであって、例えば、コンピューティング・デバイスにより提供されない機能を提供したり、コンピューティング・デバイスにより提供される機能を拡張したり、コンピューティング・デバイスにより提供される機能を置換したりするデバイスを指す。例えば、周辺デバイスは、出力デバイス(例えば、プリンタ、スピーカ等)、入力デバイス(例えば、スキャナ、マイクロフォン、キーボード等)、データ記憶デバイス、他のコンピューティング・デバイス(例えば、スマートフォン、プリント・サーバ等)等であり得る。周辺デバイスは、(例えば、有線接続又は無線接続を介してコンピューティング・デバイスと通信する)ローカル・デバイスであってもよいし、(例えば、ネットワークを介してコンピューティング・デバイスと通信する)リモート・デバイスであってもよい。周辺デバイスはまた、スマートフォン等の他のコンピューティング・デバイスであってもよい。
【0014】
1以上の実施形態において、周辺デバイスは、コンピューティング・デバイス102、104から分離されているハウジング内に実装されるデバイスである。周辺デバイスは、コンピューティング・デバイス102、104から物理的に分離され、コンピューティング・デバイス102、104に対して外部に存在するが、それでも、コンピューティング・デバイス102、104と通信することができ、任意的に、コンピューティング・デバイス102、104に物理的に接続されてもよい。周辺デバイスは、ハードウェア・デバイスであり、ソフトウェア及び/又はファームウェアを有することができる。例えば、周辺デバイス(例えば、共有プリンタ)は、(ソフトウェアにより実装される)プリント・サーバ及び物理プリンタの両方を含む論理ユニットであり得る。
【0015】
デバイス関連付けデータは、コンピューティング・デバイスを周辺デバイスに関連付けるプロセスの一部として使用することができる様々なデータである。したがって、デバイス関連付けデータは、周辺デバイスに対応する、とも称される。周辺デバイスのためのデバイス関連付けデータは、ネットワーク・アドレス又は媒体アクセス制御(MAC)アドレス、プリント・サーバ上の共有プリンタのネットワーク・アドレス、証明書又は個人識別番号(PIN)といったセキュリティ・データ又は認証データ等の、周辺デバイスに接続するために使用されるデータである。デバイス関連付けデータはまた、周辺デバイスの名前又は識別子、周辺デバイスのタイプ、周辺デバイスに関連付けられたドライバの識別子、周辺デバイスがコンピューティング・デバイス102上にすでにインストールされているかどうか等の、周辺デバイス及び/又はデバイス関連付けデータに関するさらなるデータを含み得る。したがって、周辺デバイスのためのデバイス関連付けデータは、周辺デバイスにどのように接続するかを示すものである。デバイス関連付けデータは、コンピューティング・デバイス102が、周辺デバイスを再インストールすることなく、(例えば、電源が落とされて再起動された後に)周辺デバイスに後でアクセスできるように、コンピューティング・デバイス102により保持される。
【0016】
周辺デバイスはまた、ユーザが周辺デバイスをどのように使用することを望む又は好むかを示すデバイス使用データ(device use data)(ユーザ・プリファレンス・データとも呼ばれる)に関連付けることができる。周辺デバイスのためのデバイス使用データは、例えば、周辺デバイスのためのユーザが好む特定の設定又は値(例えば、スピーカの特定の音量レベル、プリンタの特定の印刷設定(例えば、両面モード、インク又はトナーを節約するための節約モード等)、スキャナの特定のスキャン解像度等)を指定することができる。デバイス使用データは、デバイス関連付けデータの一部として含まれ、したがって、以下でより詳細に説明するように、デバイス関連付けデータの一部として同期化することができる。代替的に、デバイス使用データは、デバイス関連付けデータから分離されてもよいが、デバイス関連付けデータと同様に(且つ、任意的に一緒に)同期化される。
【0017】
デバイス使用データは、自動的にインストールされることに起因して、手動でインストールされることに起因して、あるいは、インストールされることなくコンピューティング・デバイスにより接続されることに起因して、コンピューティング・デバイスに関連付けられる周辺デバイスのために同期化され得る。したがって、周辺デバイスが、コンピューティング・デバイスに新たに関連付けられたときに、他のコンピューティング・デバイスからのデバイス使用データが、そのコンピューティング・デバイス上で受信され使用され得、ユーザは、そのコンピューティング・デバイス上に自動的に設定された、周辺デバイスの自分の所望の設定を有する。同様に、1つのコンピューティング・デバイス上でなされたデバイス使用データに対する変更は、デバイス関連付けデータと同様に、他のコンピューティング・デバイスと同期化される。
【0018】
周辺デバイス108は、例えば、周辺デバイス108をコンピューティング・システム102上に手動でインストールすることにより、サービス106から独立して(例えば、サービス106からデバイス関連付けデータを取得せずに)、コンピューティング・デバイス102に手動で関連付けられてもよい。周辺デバイス108をコンピューティング・デバイス102に手動で関連付けるために、周辺デバイスは、ディレクトリ・サービス、ネットワークを介したマルチキャスト・ディスカバリ、ユニバーサル・プラグ・アンド・プレイ(UPnP)・ネットワーキング・プロトコル、(例えば、ユニバーサル・シリアル・バス(USB)プロトコル又は無線USBプロトコルを用いて)周辺デバイスにローカルに接続すること、デバイス上のウェブ・サービス、他のパブリック・プロトコル及び/又はプロプライエタリ・プロトコル等といった多様なメカニズムのうちの任意のものを用いて、ディスカバリ又は識別される。デバイス関連付けデータは、周辺デバイスをディスカバリ又は識別するために使用されるサービスから取得する、周辺デバイス自体から取得する等、周辺デバイスをディスカバリ又は識別するために使用されるメカニズムに基づいて、様々な方法により取得することができる。
【0019】
ユーザが自分のアカウントのログインしている間に、コンピューティング・デバイス102は、サービス106とデバイス関連付けデータを同期化する。デバイス関連付けデータを同期化するコンピューティング・デバイス102とは、サービス106からデバイス関連付けデータを取得し、コンピューティング・デバイス102からサービス106へデバイス関連付けを提供するコンピューティング・デバイス102を指す。サービス106は、データ同期化モジュール112及びデバイス関連付けデータ記憶部114を含み得る。データ同期化モジュール112は、コンピューティング・デバイス102、104とのデバイス関連付けデータの同期化を管理し、受信したデバイス関連付けデータをデバイス関連付けデータ記憶部114に記憶する。したがって、サービス106のデバイス関連付けデータ記憶部114は、周辺デバイス108がコンピューティング・デバイス102、104のうちの様々なコンピューティング・デバイスに関連付けられた結果としてサービス106に提供され、コンピューティング・デバイス102、104間で同期化されるデバイス関連付けデータを含む。
【0020】
代替的に、サービス106は、デバイス関連付けデータ記憶部114のみを含んでもよく、コンピューティング・デバイス102、104が、以下でより詳細に説明するように、データ同期化モジュール112を用いることなく、デバイス関連付けデータに対する任意の変更を判別してもよい。サービス106は、プッシュ・モデルをサポートしてもよいし(例えば、サービス106が、サービス106から1以上のコンピューティング・デバイス102にデータを提供する場合)、且つ/あるいは、プル・モデルをサポートしてもよい(例えば、コンピューティング・デバイス102が、サービス106をポーリングして、あるいは、サービス106に別の形でアクセスして、サービス106に対してデータをリクエストする、あるいは、サービス106からデータを取得する)。
【0021】
ユーザが、コンピューティング・デバイス102又は104から自分のアカウントにログインしたときに、コンピューティング・デバイス上の、新たに関連付けられた周辺デバイス108のためのデバイス関連付けデータが、サービス106に送信され、デバイス関連付けデータ記憶部114に記憶される。同様に、関連付け解除された(例えば、削除又はアンインストールされた)周辺デバイス108のインジケーションが、サービス106に送信され、示されたデバイス関連付けデータが、デバイス関連付けデータ記憶部114から削除され得る。周辺デバイス108を関連付け解除するとは、周辺デバイス108をアンインストールすること(例えば、ドライバ又は他のリソースを削除又は他の形で除去すること、コンピューティング・デバイス102及び/又は周辺デバイス108のためのプロパティをクリア又はリセットすること等)を指す、あるいは、周辺デバイス108と通信するためにコンピューティング・デバイス102により使用される値をクリア又はリセットすることを指す。1以上の実施形態において、異なるデータを有し得る複数のコンピューティング・デバイスの間のコンフリクト(conflict)を管理するために、各コンピューティング・デバイス102、104、及びサービス106は、コンフリクトを解決するために、データが(コンピューティング・デバイス又はサービスにより、あるいは、コンピューティング・デバイス又はサービスの観点から)最後に変更された時間のタイムスタンプ(例えば、日付及び/又は時間)を保持し、どのデータが使用されるべきデータであるか(例えば、データが最後に変更された時間の最も直近のタイムスタンプ)を決定する。
【0022】
1つのコンピューティング・デバイス102、104から受信されたデバイス関連付けデータが、デバイス関連付けデータ記憶部114に記憶され、他のコンピューティング・デバイス102、104に提供される。デバイス関連付けデータは、例えば、ユーザが、他のコンピューティング・デバイス102、104から自分のユーザ・アカウントにログインするときや、定期間隔又は不定期間隔で(例えば、サービス106により他のコンピューティング・デバイス102、104にプッシュされるときや、他のコンピューティング・デバイス102、104により取得されるとき等)、異なる時間に、且つ/あるいは、異なるイベントに応答して、他のコンピューティング・デバイス102、104に提供され得る、且つ/あるいは、他のコンピューティング・デバイス102、104により取得され得る。
【0023】
したがって、新たな周辺デバイス108が、コンピューティング・デバイス102に関連付けられたときに、新たな周辺デバイス108のためのデバイス関連付けデータが、サービス106に送信され、デバイス関連付けデータ記憶部114に記憶される。ユーザが、その後に、コンピューティング・デバイス104から自分のアカウントにログインしたときに、新たな周辺デバイス108のためのデバイス関連付けデータが、サービス106からコンピューティング・デバイス104に送信され、新たな周辺デバイス108が、(破線の接続120により示されるように)コンピューティング・デバイス104に自動的に関連付けられる。新たな周辺デバイスをコンピューティング・デバイス104に自動的に関連付けることができる場合に、新たな周辺デバイスが、コンピューティング・デバイス104に自動的に関連付けられることに留意すべきである。新たな周辺デバイスをコンピューティング・デバイス104に自動的には関連付けることができない状況が存在し得、そのような場合には、新たな周辺デバイスは、以下でより詳細に説明するように、コンピューティング・デバイス104に自動的には関連付けられない。同様に、さらなる周辺デバイスが、コンピューティング・デバイス104に関連付けられるべきである場合、さらなる周辺デバイスのためのデバイス関連付けデータが、コンピューティング・デバイス102に提供され、さらなる周辺デバイスが、コンピューティング・デバイス102に自動的に関連付けられる(さらなる周辺デバイスをコンピューティング・デバイス102に自動的に関連付けることができるとみなされる場合)。
【0024】
図2は、1以上の実施形態に従った、コンピューティング・デバイス間におけるデバイス関連付けデータの同期化を実装する例示的なコンピューティング・デバイス200を示すブロック図である。コンピューティング・デバイス200は、例えば、
図1のコンピューティング・デバイス102又は104であり得る。コンピューティング・デバイス200は、ユーザ入力モジュール202、出力モジュール204、通信モジュール206、デバイス関連付けデータ同期化モジュール208、及びデバイス関連付けデータ記憶部210を含む。
【0025】
ユーザ入力モジュール202は、コンピューティング・デバイス200のユーザからユーザ入力を受け取る。ユーザ入力は、例えば、デバイス200のキーパッド又はキーボードの1以上のキーを押すことによって、デバイス200のコントローラ(例えば、リモート・コントロール・デバイス、マウス、トラック・パッド等)の1以上のキーを押すことによって、デバイス200のタッチパッド又はタッチスクリーンの特定の部分を押すことによって、デバイス200のタッチパッド又はタッチスクリーン上で特定のジェスチャを行うことによって、且つ/あるいは、デバイス200のコントローラ(例えば、リモート・コントロール・デバイス、マウス、トラック・パッド等)上で特定のジェスチャを行うことによって等、多種多様な態様で提供され得る。ユーザ入力はまた、例えば、デバイス200の任意の部分をタップすること、デバイス200の動き検出コンポーネント又は他のコンポーネントにより認識され得るアクション(デバイス200を振ること、デバイス200を回転させること、デバイス200を曲げること等)等、デバイス200への他の物理的フィードバック入力を介して提供されてもよい。ユーザ入力はまた、マイクロフォンへの音声入力又は他の可聴入力を介してや、画像キャプチャ・デバイスにより観測される手又は体の他の部分の動きを介して等、他の態様で提供されてもよい。
【0026】
出力モジュール204は、表示、再生、及び/又は他の提示のためのコンテンツを生成、管理、及び/又は出力する。このコンテンツは、出力モジュール204により作成されてもよいし、コンピューティング・デバイス200の他のモジュールから取得されてもよい。このコンテンツは、例えば、ユーザ・インタフェース(UI)の表示部分又は再生部分、入力のためのプロンプト等であり得る。コンテンツは、コンピューティング・デバイス200のコンポーネント(例えば、スピーカ、インタラクティブ・ディスプレイ・デバイス等)により、表示又は再生され得る。代替的に、出力モジュール204は、コンピューティング・デバイス200から分離されている他のデバイス又はコンポーネント(例えば、スピーカ、ディスプレイ・デバイス等)に出力される1以上の信号を生成してもよい。
【0027】
通信モジュール206は、
図1のサービス106等のサービスとの通信とともに、
図1の周辺デバイス108等の周辺デバイスとの通信を管理する。通信の管理とは、コンピューティング・デバイス200の他のモジュールから取得されたデータをターゲット・デバイスに送信することと、他のデバイスから受信したデータを、コンピューティング・デバイス200の適切なモジュールに提供することと、を指す。
【0028】
デバイス関連付けデータ記憶部210は、コンピューティング・デバイス200に手動で関連付けられたデバイスのためのデバイス関連付けデータのコピーに加えて、サービス106から受信された、デバイスのためのデバイス関連付けデータのコピーを保持する。サービス106から受信された、デバイスのためのデバイス関連付けデータは、コンピューティング・デバイス200に自動的に関連付けられてもよいし、代替的に、以下でより詳細に説明するように、コンピューティング・デバイス200に関連付けられることなく、受信されて、デバイス関連付けデータ記憶部210に保持されてもよい。
【0029】
デバイス関連付けデータ同期化モジュール208は、サービス106へのデバイス関連付けデータの送信を管理する。ユーザがサービス106の自分のアカウントにログインしている間に新たな周辺デバイスがコンピューティング・デバイス200に手動で関連付けられたときに、新たな周辺デバイスのためのデバイス関連付けデータが、デバイス関連付けデータ記憶部210に保持され、デバイス関連付けデータ同期化モジュール208は、そのデバイス関連付けデータのコピーをサービス106に送信する。ユーザがサービス106の自分のアカウントにログインしていない間に新たな周辺デバイスがコンピューティング・デバイス200に手動で関連付けられた場合、デバイス関連付けデータ同期化モジュール208は、ユーザが、その後に、コンピューティング・デバイス200から自分のアカウントにログインしたときに、新たな周辺デバイスのためのデバイス関連付けデータのコピーをサービス106に送信することができる。ユーザがサービス106の自分のアカウントにログインしていない間に新たな周辺デバイスがコンピューティング・デバイス200に手動で関連付けられた場合、代替的に、デバイス関連付けデータ同期化モジュール208は、新たな周辺デバイスのためのデバイス関連付けデータのコピーをサービス106に送信しなくてもよい。
【0030】
デバイス関連付けデータ同期化モジュール208はまた、サービス106からのデバイス関連付けデータの受信も管理する。ユーザが、コンピューティング・デバイス200から、サービス106の自分のアカウントにログインしたときに、サービス106は、サービス106はコピーを有しているがコンピューティング・デバイス200はコピーを有していない、任意の新たな周辺デバイスのための(例えば、別のコンピューティング・デバイスに手動で関連付けられた周辺デバイスのための)デバイス関連付けデータのコピーを送信する。サービス106はまた、サービス106から受信された、デバイス関連付けデータに関する他の情報(例えば、タイムスタンプ情報、ユーザ情報等)のコピーを送信することができる。デバイス関連付けデータ同期化モジュール208は、サービス106から受信されたデバイス関連付けデータのコピーをデバイス関連付けデータ記憶部210に保持させる。デバイス関連付けデータ同期化モジュール208はまた、コンフリクトを解決するために、及び他の機能を実行するために、サービス106から受信された、デバイス関連付けデータに関する情報(例えば、タイムスタンプ情報、ユーザ情報等)を保持する。デバイス関連付けデータ同期化モジュール208はまた、以下でより詳細に説明するように、周辺デバイスをコンピューティング・デバイス200に自動的に関連付けることができるとみなされる場合、コンピューティング・デバイス200を、そのデバイス関連付けデータに対応する周辺デバイスに自動的に関連付ける。
【0031】
同様に、デバイス関連付けデータに対する他の変更も、新たな周辺デバイスのためのデバイス関連付けデータの送信と同様、サービス106との間で送受信され得る。例えば、周辺デバイスのためのデバイス関連付けデータが変更された場合(例えば、プリント・サーバ名が変更された場合やセキュリティ・データ又は認証データが変更された場合等)、その変更のインジケーションがサービス106に送信され得、サービス106は、ユーザが他のコンピューティング・デバイスから自分のアカウントにログインしたときに、そのインジケーションを他のコンピューティング・デバイスに送信する。したがって、デバイス関連付けデータにおける変更が、他のコンピューティング・デバイスに対して自動的に同期化される。別の例として、周辺デバイスが、1つのコンピューティング・デバイス上で削除された場合(例えば、アンインストール又は関連付け解除された場合)、その削除のインジケーションがサービス106に送信され得、サービス106は、ユーザが他のコンピューティング・デバイスから自分のアカウントにログインしたときに、そのインジケーションを他のコンピューティング・デバイスに送信する。したがって、周辺デバイスが、他のコンピューティング・デバイスから自動的に関連付け解除される(例えば、アンインストールされる)。代替的に、削除された周辺デバイスのインジケーションは、サービス106に送信されなくてもよく、代わりに、ユーザが、ユーザが望むコンピューティング・デバイス上で周辺デバイスを手動で関連付け解除する。周辺デバイスがコンピューティング・デバイスから関連付け解除された場合であっても、対応するデバイス関連付けデータは、コンピューティング・デバイス上に存在し続けることができる(あるいは、削除されてもよい)ことに留意すべきである。
【0032】
どのようなデバイス関連付けデータの変更がなされたか(例えば、新たなデバイス関連付けデータ、削除のインジケーション、又は他の変更)、及び、したがって、どのデバイス関連付けデータの変更が他のコンピューティング・デバイスに対して同期化される必要があるかの判別は、様々な方法により実行され得る。その判別を実行するために、サービス106及び/又はコンピューティング・デバイス200を信頼することができる。例えば、コンピューティング・デバイス200は、どのようなデバイス関連付けデータの変更がなされたかを判別し、なされたデバイス関連付けデータの変更のインジケーションを送信することができる。別の例として、コンピューティング・デバイス200は、デバイス関連付けデータ記憶部210内の実質的に全てのデバイス関連付けデータのレコード(例えば、コンピューティング・デバイス200のための現在のデバイス関連付けデータのスナップショット)をサービス106に送信することができ、サービス106は、実質的に全てのデバイス関連付けデータのそのレコードを、サービス106により保持されている関連するデバイス関連付けデータのレコードと比較して、どのようなデバイス関連付けデータの変更がなされたかを判別することができる。
【0033】
さらに別の例として、コンピューティング・デバイス200は、デバイス関連付けデータ記憶部210内の実質的に全てのデバイス関連付けデータのレコード(例えば、コンピューティング・デバイス200のための現在のデバイス関連付けデータのスナップショット)をサービス106に送信することができ、サービス106は、このレコードのコピーを保持することができる。次いで、ユーザが、他のコンピューティング・デバイスから自分のユーザ・アカウントにログインしたときに、サービス106は、このレコードを他のコンピューティング・デバイスに送信することができ、他のコンピューティング・デバイスは、実質的に全てのデバイス関連付けデータのそのレコードを、デバイス関連付けデータの自身のレコードと比較して、どのようなデバイス関連付けデータの変更がなされたかを判別することができる。代替的に、サービス106が、このレコードを他のコンピューティング・デバイスに定期間隔又は不定期間隔でプッシュする、他のコンピューティング・デバイスが、定期間隔又は不定期間隔でそのレコードをリクエストする(例えば、サービス106をポーリングする)等、他の時間に、あるいは、他のイベントに応答して、サービス106は、このレコードを他のコンピューティング・デバイスに送信してもよい。
【0034】
図3は、1以上の実施形態に従って、コンピューティング・デバイス間でデバイス関連付けデータを同期化するための例示的なプロセス300を示すフローチャートである。プロセス300は、ソフトウェア、ファームウェア、ハードウェア、又はこれらの組合せにより実装することができる。プロセス300が、3つの列、すなわち、1つのコンピューティング・デバイス(例えば、
図1のコンピューティング・デバイス102若しくは104、又は
図2のコンピューティング・デバイス200)により実行される、左の列に示されるプロセス300の動作、別のコンピューティング・デバイス(例えば、
図1のコンピューティング・デバイス102若しくは104、又は
図2のコンピューティング・デバイス200)により実行される、右の列に示されるプロセス300の動作、及びサービス(例えば、
図1のサービス106)により実行される、真ん中の列に示されるプロセス300の動作で示されている。プロセス300は、動作のセットとして示されているが、様々な動作のオペレーションを実行するために、図示される順番に限定されるものではない。プロセス300は、コンピューティング・デバイス間でデバイス関連付けデータを同期化するための例示的なプロセスである。異なる図を参照する、コンピューティング・デバイス間でデバイス関連付けデータを同期化することについてのさらなる説明が、本明細書に含まれている。
【0035】
プロセス300において、デバイス関連付けデータ及び/又はデバイス関連付けデータの変更が、サービスに送信され(動作302)、サービスは、デバイス関連付けデータ及び/又はデバイス関連付けデータの変更を受信し(動作304)、デバイス関連付けデータ及び/又はデバイス関連付けデータの変更のコピーを保持する(動作306)。サービスは、動作302においてデバイス関連付けデータがサービスに送信されたときにユーザがログインしていたユーザ・アカウントに関連付けられたものとして、デバイス関連付けデータのコピーを保持する。デバイス関連付けデータの変更の場合、サービスは、以前のデバイス関連付けデータ(変更されているデバイス関連付けデータ)を新たに受信したデバイス関連付けデータで置換することができる。
【0036】
デバイス関連付けデータ及び/又はデバイス関連付けデータの変更が、サービスにより、コンピューティング・デバイスに送信される(動作308)。デバイス関連付けデータ及び/又はデバイス関連付けデータの変更が、送信され、動作302においてデバイス関連付けデータ及び/又はデバイス関連付けデータの変更を送信したコンピューティング・デバイスとは異なるコンピューティング・デバイスにより受信され得る(動作310)。コンピューティング・デバイスからのデバイス関連付けデータ及び/又はデバイス関連付けデータの変更を求めるリクエストに応答して、動作308において、デバイス関連付けデータ及び/又はデバイス関連付けデータの変更が送信されてもよいし、代替的に、サービスにより受信されたデバイス関連付けデータ及び/又はデバイス関連付けデータの変更を求める任意のリクエストとは無関係に、動作308において、サービスが、デバイス関連付けデータ及び/又はデバイス関連付けデータの変更をコンピューティング・デバイスにプッシュ又は別の形で提供してもよい。コンピューティング・デバイスは、デバイス関連付けデータ及び/又はデバイス関連付けデータの変更のコピーを保持する(動作312)。コンピューティング・デバイスはまた、デバイス関連付けデータにより識別される、コンピューティング・デバイスに自動的に関連付けることができる周辺デバイスをコンピューティング・デバイス自身に自動的に関連付ける、且つ/あるいは、デバイス関連付けデータの変更に従って、デバイス関連付けデータを更新する(動作314)。
【0037】
追加的又は代替的に、デバイス関連付けデータ及び/又はデバイス関連付けデータの変更を受信するリクエストが、動作302においてデバイス関連付けデータ及び/又はデバイス関連付けデータの変更を前に送信した同じコンピューティング・デバイスにより、サービスに送信されてもよい(動作316)。動作316において送信されたリクエストに応答して、サービスは、ユーザ・アカウントに関連付けられたデバイス関連付けデータ及び/又はデバイス関連付けデータの変更を、コンピューティング・デバイスに送信する(動作308)。コンピューティング・デバイスは、デバイス関連付けデータ及び/又はデバイス関連付けデータの変更を受信し(動作318)、デバイス関連付けデータ及び/又はデバイス関連付けデータの変更のコピーを保持する(動作320)。コンピューティング・デバイスはまた、デバイス関連付けデータにより識別される、コンピューティング・デバイスに自動的に関連付けることができる周辺デバイスをコンピューティング・デバイス自身に自動的に関連付ける、且つ/あるいは、デバイス関連付けデータの変更に従って、デバイス関連付けデータを更新する(動作322)。代替的に、動作316においてリクエストが送信される代わりに、サービスにより受信されたデバイス関連付けデータ及び/又はデバイス関連付けデータの変更を求める任意のリクエストとは無関係に、動作318において、サービスが、ユーザ・アカウントに関連付けられたデバイス関連付けデータ及び/又はデバイス関連付けデータの変更をコンピューティング・デバイスにプッシュ又は別の形で提供してもよい。
【0038】
このようにして、デバイス関連付けデータ及び/又はデバイス関連付けデータの変更が、他のコンピューティング・デバイスに対して同期化され得、周辺デバイスが、他のコンピューティング・デバイスに自動的に関連付けられる。追加的又は代替的に、デバイス関連付けデータは、サービスから、デバイス関連付けデータをサービスに送信したコンピューティング・デバイスに返されてもよい。このように、コンピューティング・デバイスは、自身のデバイス関連付けデータ情報をサービスにバックアップし、その後、デバイス関連付けデータを受信し、周辺デバイスをコンピューティング・デバイスに自動的に再関連付けさせることができる(例えば、コンピューティング・デバイスが、新たなハード・ドライブを有した場合や、オペレーティング・システムがコンピューティング・デバイス上に再インストールされている場合等)。
【0039】
デバイス関連付けデータは、サービスのユーザ・アカウントに関連付けられており、したがって、デバイス関連付けデータの送受信は、ユーザが自分のユーザ・アカウントにログインしている間に実行されることに留意すべきである。したがって、プロセス300における異なるコンピューティング・デバイスとの間の送受信は、異なる時間に実行され得る。例えば、ユーザが、1つのコンピューティング・デバイスから自分のユーザ・アカウントにログインしたときに、動作302において、デバイス関連付けデータが、サービスに送信され得、ユーザが、その後に、他のコンピューティング・デバイスから自分のユーザ・アカウントにログインしたときに、その後に動作308において、デバイス関連付けデータが、サービスから他のコンピューティング・デバイスに送信され得る。プロセス300は、異なるコンピューティング・デバイスから同時に実行されてもよいことにも留意すべきである。例えば、1つのコンピューティング・デバイスが、デバイス関連付けデータをサービスに送信中であると同時に、別のコンピューティング・デバイスが、サービスからデバイス関連付けデータを受信中であることや、1つのコンピューティング・デバイスが、デバイス関連付けデータをサービスに送信中であると同時に、別のコンピューティング・デバイスが、デバイス関連付けデータをサービスに送信中であること等もある。
【0040】
例示的なプロセス300において、デバイス関連付けデータは、サービスにより、コンピューティング・デバイスから受信されるものとして示されている。代替的に、デバイス関連付けデータは、他のソースから受信されてもよい。例えば、1以上の実施形態において、周辺デバイス自体が、その周辺デバイスのためのデバイス関連付けデータをサービスに提供してもよい。例えば、周辺デバイスは、自身のデバイス関連付けをサービスに送信することができるスマートフォンであり得る。したがって、周辺デバイスは、自身のデバイス関連付けデータをサービスに提供することができ、サービスは、ユーザが自分のアカウントにログインしているコンピューティング・デバイスに対してデバイス関連付けデータを同期化し、ユーザが周辺デバイスをコンピューティング・デバイスに手動で関連付けることなく、周辺デバイスが、コンピューティング・デバイスに自動的に関連付けられる。同様に、周辺デバイス(スマートフォン周辺デバイス等)はまた、サービスからデバイス関連付けデータを受信することができる。このデバイス関連付けデータは、特定のユーザが、この周辺デバイスをどのように使用することを望む又は好むかについてのユーザ・プリファレンス・データを含み得、この周辺デバイスは、(例えば、このユーザ・プリファレンス・データに従って、適切な構成値又は他のデバイス設定を設定することにより、)このユーザ・プリファレンス・データを使用することができる。
【0041】
図4は、1以上の実施形態に従って、周辺デバイスをコンピューティング・デバイスに自動的に関連付けるための例示的なプロセス400を示すフローチャートである。プロセス400は、
図1のコンピューティング・デバイス102若しくは104、又は
図2のコンピューティング・デバイス200等のコンピューティング・デバイスにより実行され、プロセス400は、ソフトウェア、ファームウェア、ハードウェア、又はこれらの組合せにより実装することができる。プロセス400は、動作のセットとして示されているが、様々な動作のオペレーションを実行するために、図示される順番に限定されるものではない。プロセス400は、周辺デバイスをコンピューティング・デバイスに自動的に関連付けるための例示的なプロセスである。異なる図を参照する、周辺デバイスをコンピューティング・デバイスに自動的に関連付けることについてのさらなる説明が、本明細書に含まれる。
【0042】
プロセス400において、プロセス400を実施するコンピューティング・デバイスから、ユーザ・アカウントにログインする(動作402)。ユーザ・アカウントに関連付けられた1以上の周辺デバイスの各々のためのデバイス関連付けデータが受信される(動作404)。受信されたデバイス関連付けデータは、受信されたデバイス関連付けデータの実質的に全てであるものや、他のコンピューティング・デバイスによりインストールされた新たな周辺デバイスのためのデバイス関連付けデータ等、異なる形態をとり得る。デバイス関連付けデータは、例えば、ユーザ・アカウントにログインした直後、ユーザ・アカウントにログインした後しばらく経過してから(例えば、閾時間量が経過した後、他のデータの閾量又はより高い優先度のデータがサービスから受信された後等)、他のイベント(例えば、サービスに記憶されているデバイス関連付けデータに対する変更)に基づいて等、様々な時間に受信され得る。
【0043】
受信されたデバイス関連付けデータのコピーが、コンピューティング・デバイス上で保持される(動作406)。さらに、受信されたデバイス関連付けデータに対応する1以上の周辺デバイスの中から、コンピューティング・デバイスにまだ関連付けられていないがコンピューティング・デバイスに関連付けることができる1以上の周辺デバイスが、判別される(動作408)。動作408においてコンピューティング・デバイスに現在は関連付けられていないがコンピューティング・デバイスに関連付けることができるものとして判別された1以上の周辺デバイスが、コンピューティング・デバイスに自動的に関連付けられる(動作410)。周辺デバイスをコンピューティング・デバイスに自動的に関連付けることにより、周辺デバイスは、その後、コンピューティング・デバイスに手動で関連付けられたかのように(例えば、コンピューティング・デバイス上に手動でインストールされたかのように)、コンピューティング・デバイスによりアクセスされ得るが、ユーザは、周辺デバイスをコンピューティング・デバイスに手動で関連付ける必要はない(例えば、周辺デバイスを手動でインストールする必要はない)。
【0044】
どの周辺デバイスがコンピューティング・デバイスにすでに関連付けられているかの判別は、例えば、デバイス関連付けデータに含まれる周辺デバイスの識別子を、コンピューティング・デバイスにすでに関連付けられている周辺デバイスの識別子と比較することによって、サーバから受信された全てのデバイス関連付けデータが、コンピューティング・デバイスにまだ関連付けられていない周辺デバイス用である(したがって、受信されたデバイス関連付けデータに対応する周辺デバイスの全てが、コンピューティング・デバイスにまだ関連付けられていない)とみなすことによって等、多種多様な方法により判別され得る。
【0045】
どの周辺デバイスをコンピューティング・デバイスに自動的に関連付けることができるかの判別もまた、様々な方法により判別され得る。1以上の実施形態において、コンピューティング・デバイスに自動的には関連付けることができない周辺デバイスを識別するための様々なルール(又は、他の基準)が適用される。そのようなルールは、コンピューティング・デバイス上に存在する、コンピューティング・デバイスがサービスから受信するデバイス関連付けデータの一部として記憶される等、様々な位置に存在し得る。したがって、周辺デバイスがコンピューティング・デバイスに自動的に関連付けられるべきではないと1以上のルールが示す場合を除いて、周辺デバイスは、コンピューティング・デバイスに自動的に関連付けることができる。
【0046】
周辺デバイスがコンピューティング・デバイスに自動的に関連付けられるべきではない場合にも、周辺デバイスのためのデバイス関連付けデータをなお使用して、周辺デバイスをコンピューティング・デバイスに手動で関連付ける際、周辺デバイスのディスカバリ及び/又は周辺デバイスの関連付けを容易にすることができることに留意すべきである。例えば、周辺デバイスは、デバイス関連付けデータ内に存在するセキュリティ・コード又は他の情報を有することができ、ユーザが周辺デバイスを手動でインストールすることにより周辺デバイスに接続することを選択した場合、ユーザは、そのような情報を再度入力又は他の形で提供する必要がない。別の例として、周辺デバイスの存在が、例えば、周辺デバイスが存在はするがコンピューティング・デバイスに関連付けられていないことを示すために異なる形式で(例えば、異なる色で、影付きで、あるいは、より明るく、等)、周辺デバイス選択画面又は他の構成画面上に表示され得る。
【0047】
コンピューティング・デバイスに自動的には関連付けることができない周辺デバイスを識別するためのルールは、周辺デバイス・ドライバ利用可能性ルール(peripheral device driver availability rule)を含み得る。周辺デバイス・ドライバとは、周辺デバイスと通信するためにコンピューティング・デバイスにより使用されるソフトウェア(及び/又はファームウェア)並びにデータを指す。1以上の実施形態において、周辺デバイスに対応するデバイス関連付けデータを受信するコンピューティング・デバイスは、周辺デバイス・ドライバをインストールできないことがある、すなわち、その周辺デバイスのためのドライバをインストールできないことがある。そのような実施形態において、周辺デバイスをコンピューティング・デバイスに関連付けることができないとの判定がなされる。
【0048】
さらに、いくつかの周辺デバイス・ドライバは、例えば、例えばネットワークを介して(例えば、別のデバイス又はサービスといった)ソースから、磁気ディスク又は光ディスクから、フラッシュ・ドライブ又は他のソリッド・ステート・ドライブから、コンピューティング・デバイス自体の別の位置から、ダウンロードされる。このような周辺デバイス・ドライバは、検証されたものとしてデジタル署名されていることもあるし、検証されたソースから取得されることもあるし、他の形で検証可能であることもある。1以上の実施形態において、周辺デバイス・ドライバが検証されなかった場合(例えば、コンピューティング・デバイスにより信頼される機関によってデジタル署名されていない場合や検証されたソースからのものではない場合等)、コンピューティング・デバイス上に周辺デバイス・ドライバをインストールすることができないとの判定がなされる。しかしながら、任意的に、取得された周辺デバイス・ドライバを用いて周辺デバイスのインストールを許可するよう、ユーザを促してもよい。「はい(イエス)」又は「インストール」オプションの選択等、周辺デバイスのインストールを許可する様々なユーザ入力が受信され得る。周辺デバイスのインストールを許可するとユーザ入力が示す場合、周辺デバイスは、コンピューティング・デバイスに自動的に関連付けられるかのように、コンピューティング・デバイスに関連付けられる(ユーザは、周辺デバイスをコンピューティング・デバイスに手動で関連付けているかのような、周辺デバイスをコンピューティング・デバイスに関連付けるためのさらなるアクションをとる必要がない)。
【0049】
さらに、いくつかの周辺デバイス・ドライバは、バージョン番号により識別され得る異なるモデル(例えば、ドライバにより使用されるプロトコル又はフォーマット)を用いて設計される。周辺デバイスは、これらのモデルの異なるモデルを用いるドライバを有することがある。1以上の実施形態において、周辺デバイス・ドライバが特定のモデルでない場合、周辺デバイス・ドライバがドライバ・モデルの少なくとも特定のバージョンでない場合等、コンピューティング・デバイス上に周辺デバイス・ドライバをインストールすることができないとの判定がなされる。しかしながら、取得された周辺デバイス・ドライバが特定のモデルではない、取得された周辺デバイス・ドライバがドライバ・モデルの少なくとも特定のバージョンではない等としても、任意的に、取得された周辺デバイス・ドライバを用いて周辺デバイスのインストールを許可するよう、ユーザを促してもよい。「はい(イエス)」又は「インストール」オプションの選択等、周辺デバイスのインストールを許可する様々なユーザ入力が受信され得る。周辺デバイスのインストールを許可するとユーザ入力が示す場合、周辺デバイスは、コンピューティング・デバイスに自動的に関連付けられるかのように、コンピューティング・デバイスに関連付けられる(ユーザは、周辺デバイスをコンピューティング・デバイスに手動で関連付けているかのような、周辺デバイスをコンピューティング・デバイスに関連付けるためのさらなるアクションをとる必要がない)。
【0050】
コンピューティング・デバイスに自動的には関連付けることができない周辺デバイスを識別するためのルールは、指定デバイス・ルール(specified device rule)を含み得る。いくつかの周辺デバイスは、個々のコンピューティング・デバイスに固有の方法で、コンピューティング・デバイスに関連付けることができ、デバイス関連付けデータは、その固有の方法を含む。例えば、周辺デバイス(例えば、Bluetooth(登録商標)デバイス)は、コンピューティング・デバイス上にインストールすることができ、その周辺デバイスがインストールされるコンピューティング・デバイスのMACアドレスを含むデバイス関連付けデータを有することができる。1以上の実施形態において、デバイス関連付けデータが、特定のコンピューティング・デバイスを指定するデータを含むかどうかについて、チェックがなされる。デバイス関連付けデータを受信したコンピューティング・デバイスが、そのデバイス関連付けデータにより指定されたコンピューティング・デバイスである場合、周辺デバイスをそのコンピューティング・デバイスに自動的に関連付けることができる。しかしながら、デバイス関連付けデータを受信したコンピューティング・デバイスが、そのデバイス関連付けデータにより指定されたコンピューティング・デバイスではない場合、周辺デバイスは、そのコンピューティング・デバイスに自動的には関連付けることができない。したがって、そのような周辺デバイスは、デバイス関連付けデータが元々送信されたコンピューティング・デバイス(例えば、デバイス関連付けデータをバックアップしている)に自動的に再関連付けられ得るが、他のコンピューティング・デバイスには自動的には関連付けられない。
【0051】
コンピューティング・デバイスに自動的には関連付けることができない周辺デバイスを識別するためのルールは、ドメイン・ルール又はネットワーク・ルールを含み得る。様々な周辺デバイスが、特定のコンピューティング・デバイス(例えば、ネットワークへのアクセスを有するコンピューティング・デバイス、同じドメインの一部であるコンピューティング・デバイス等)にのみアクセス可能な特定のネットワーク又はドメイン上に配置され得る。1以上の実施形態において、周辺デバイスが、デバイス関連付けデータを受信したコンピューティング・デバイスが現在アクセスしていないドメインの一部である、あるいは、周辺デバイスが、デバイス関連付けデータを受信したコンピューティング・デバイスが現在アクセスしていないネットワーク上に配置されている、とデバイス関連付けデータが示すかどうかについて、チェックがなされる。周辺デバイスが、コンピューティング・デバイスが現在アクセスしていないドメインの一部であるかどうか、又は、周辺デバイスが、コンピューティング・デバイスが現在アクセスしていないネットワーク上に配置されているかどうかは、例えば、周辺デバイスが存在するドメイン又はネットワーク(デバイス関連付けデータにおいて識別される)を、コンピューティング・デバイスが現在存在するレコード(例えば、コンピューティング・デバイスのオペレーシング・システムにより保持される)と比較して、それらが同じであるかどうかを判定することによって、周辺デバイスへのアクセスを試行して、その試行が成功したかどうかをチェックすることによって等、様々な方法で判定することができる。周辺デバイスが、コンピューティング・デバイスが現在アクセスしていないドメインの一部である場合、又は、周辺デバイスが、コンピューティング・デバイスが現在アクセスしていないネットワーク上に配置されている場合、周辺デバイスをコンピューティング・デバイスに自動的には関連付けることができないとの判定がなされる。
【0052】
周辺デバイスをコンピューティング・デバイスに自動的には関連付けることができないとの判定がなされる場合、この判定は、周辺デバイスに現在アクセス不可能であることに起因してなされることがある。したがって、そのような周辺デバイスは、コンピューティング・デバイスに関連付けることはできるがコンピューティング・デバイスに自動的には関連付けることができないものと呼ばれ得る。コンピューティング・デバイスが、後に、周辺デバイスが配置されているドメイン又はネットワークにアクセスできるようになり、したがって、周辺デバイスが、コンピューティング・デバイスに関連付けられるようになることをコンピューティング・システムに示すために、そのような周辺デバイス又はデバイス関連付けデータが、マークされる、あるいは、そのような周辺デバイス又はデバイス関連付けデータのレコードが作成される。例えば、コンピューティング・デバイスは、プロセス400が実行される際にユーザが自宅で起動させているラップトップ・コンピュータであり得、したがって、コンピューティング・デバイスは、ユーザの職場ドメイン又は職場ネットワークにアクセスしないが、後に職場に持ち込まれ、周辺デバイスが配置されている職場ドメイン又は職場ネットワークに参加することがある。そのような状況において、周辺デバイスが、後の時間に(例えば、ユーザが、自分のコンピューティング・デバイスを職場に持ち込んで、コンピューティング・デバイスが、周辺デバイスが配置されている職場ドメイン又は職場ネットワークに参加したことを、コンピューティング・デバイスが検出したときに)、コンピューティング・デバイスに自動的に関連付けられてもよいし、周辺デバイスをコンピューティング・デバイスに自動的に関連付ける能力を再チェックすることをユーザが望むかどうかを示すよう、後の時間にユーザを促してもよい。
図2のデバイス関連付けデータ同期化モジュール208は、定期間隔又は不定期間隔で、あるいは、特定のイベント(例えば、コンピューティング・デバイスが特定のドメインに参加すること等)に応答して、周辺デバイスが、コンピューティング・デバイスが現在アクセスしていないドメインの一部であるかどうか、又は、周辺デバイスが、コンピューティング・デバイスが現在アクセスしていないネットワーク上に配置されているかどうかをチェックすることできる。
【0053】
コンピューティング・デバイスに自動的には関連付けることができない周辺デバイスを識別するためのルールは、関連付け理由ルール(association reason rule)を含み得る。いくつかの状況において、周辺デバイスは、管理者アクション又はグループ・ポリシ設定等の特定の理由のために、コンピューティング・デバイスに関連付けられることがある。1以上の実施形態において、管理者からのコマンドに応答して、あるいは、グループ・ポリシ設定を理由として、周辺デバイスがコンピューティング・デバイスに関連付けられたときに、そのコマンドを理由として周辺デバイスがコンピューティング・デバイスに関連付けられたことに対応するレコードが、デバイス関連付けデータ内に作成される。周辺デバイスが、管理者からのそのようなコマンドを理由として、あるいは、グループ・ポリシ設定を理由として、コンピューティング・デバイスに関連付けられたことをデバイス関連付けデータが示すかどうかについて、デバイス関連付けデータを受信したコンピューティング・デバイスにより、チェックがなされる。周辺デバイスが、管理者からのそのようなコマンドを理由として、あるいは、グループ・ポリシ設定を理由として、コンピューティング・デバイスに関連付けられた場合、周辺デバイスは、デバイス関連付けデータを受信したコンピューティング・デバイスに自動的には関連付けることができないとの判定がなされる。
【0054】
コンピューティング・デバイスに自動的には関連付けることができない周辺デバイスを識別するためのルールは、認証ルールを含み得る。いくつかの状況においては、所定の認証情報、PIN等が、デバイス関連付けデータに含まれない。そうではなく、そのようなデバイス関連付けデータに対応する周辺デバイスが関連付けられている各コンピューティング・デバイスにおいて、ユーザ入力が受信される。1以上の実施形態において、周辺デバイスをコンピューティング・デバイスに関連付けるために使用される所定のデータ(クレデンシャル、PIN等)が、対応するデバイス関連付けデータから欠落しているかどうかについて、デバイス関連付けデータを受信したコンピューティング・デバイスにより、チェックがなされる。周辺デバイスをコンピューティング・デバイスに関連付けるために使用される所定のデータが、対応するデバイス関連付けデータに含まれていない場合、周辺デバイスは、コンピューティング・デバイスに自動的には関連付けることができないとの判定がなされる。
【0055】
しかしながら、任意的に、デバイス関連付けデータから欠落している所定のデータを提供するよう、ユーザを促してもよい。キーボード上でPIN又は認証コードを入力することや、ユーザに関連付けられたデジタル証明書を提供すること等、所定のデータを提供する様々なユーザ入力が受信され得る。欠落しているデータを提供するユーザ入力に応答して、周辺デバイスは、コンピューティング・デバイスに自動的に関連付けられるかのように、コンピューティング・デバイスに関連付けられる(ユーザは、周辺デバイスを手動でインストールしているかのような、周辺デバイスをコンピューティング・デバイスに関連付けるためのさらなるアクションをとる必要がない)。
【0056】
コンピューティング・デバイスに自動的には関連付けることができない周辺デバイスを識別するためのルールの説明において、ユーザに入力を促すこと(例えば、ドライバをインストールする許可、PIN又はクレデンシャル等)について言及されている。この促しは、例えば、周辺デバイスをコンピューティング・デバイスに自動的には関連付けることができないとの判定がなされたときや、周辺デバイス管理画面又は周辺デバイス構成画面上での周辺デバイスのユーザ選択に応答して等、様々な時間に行われ得る。
【0057】
さらに、周辺デバイスがコンピューティング・デバイスに自動的に関連付けられなかった場合、周辺デバイスがコンピューティング・デバイスに自動的に関連付けられなかった理由(例えば、コンピューティング・デバイス上に周辺デバイス・ドライバをインストールすることができない、コンピューティング・デバイスは適切なMACアドレスを有していない等)についてのインジケーションが、ユーザへのフィードバックを提供するために、表示又は別の形で提示され得ることに留意すべきである。この促しは、例えば、周辺デバイスをコンピューティング・デバイスに自動的には関連付けることができないとの判定がなされたときや、周辺デバイス管理画面又は周辺デバイス構成画面上での周辺デバイスのユーザ選択に応答して等、様々な時間に行われ得る。
【0058】
プロセス400の例示される例において、デバイス関連付けデータに対応する周辺デバイスが、動作410において、コンピューティング・デバイスに自動的に関連付けられたかどうかにかかわらず、受信されたデバイス関連付けデータのコピーが、コンピューティング・デバイス上で保持される。代替的に、周辺デバイスに対応するデバイス関連付けデータのコピーは、例えば、デバイス関連付けデータに対応する周辺デバイスが、コンピューティング・デバイスに関連付けられている、デバイス関連付けデータが、コンピューティング・デバイスに関連付けることはできるがコンピューティング・デバイスに自動的には関連付けることができないものとしてマークされている等の所定の状況下でのみ、コンピューティング・デバイス上で保持されてもよい。
【0059】
図5は、1以上の実施形態に従った、本明細書で説明した技術を実装するための例示的なモデル500を示すブロック図である。モデル500を使用して、例えば、
図2のデバイス関連付けデータ同期化モジュールを実装することができる。モデル500は、包括的同期化フレームワーク502、デバイス同期化ハンドラ504、デバイス関連付けフレームワーク508、及びデバイス関連付けデータ記憶部510を含む。
【0060】
デバイス関連付けフレームワーク508は、特定の周辺デバイス・プロトコル(例えば、プリンタ、Bluetooth(登録商標)デバイス、ウェブ・サービス・プロバイダ等)のためのデバイス関連付けデータを管理し、デバイス関連付けデータは、デバイス関連付けデータ記憶部510(
図2のデバイス関連付けデータ記憶部210であり得る)に保持される。デバイス関連付けフレームワーク508は、デバイス関連付けフレームワーク508がデバイス同期化ハンドラ504からデバイス関連付けデータを受信することを可能にするインタフェースであるインポート・メソッド(import method)512と、デバイス関連付けフレームワーク508がデバイス同期化ハンドラ504にデバイス関連付けデータを送信することを可能にするインタフェースであるエクスポート・メソッド(export method)514と、を提供する。デバイス関連付けフレームワーク508は、異なる周辺デバイス・プロトコルのためのデバイス関連付けデータを管理するための1以上のモジュールを含み得る。
【0061】
1以上の実施形態において、ユーザ・アカウントのためのデバイス関連付けデータのセットをサービス106に追加するために、包括的同期化フレームワーク502は、デバイス同期化ハンドラ504を呼び出し、同期化すべきデバイス関連付けデータを列挙する(enumerate)ようデバイス同期化ハンドラ504に要求する。デバイス同期化ハンドラ504は、デバイス関連付けフレームワーク508への呼び出しを行い、デバイス関連付けフレームワーク508が有しているデバイス関連付けデータの集合をエクスポートするようデバイス関連付けフレームワーク508にリクエストする。デバイス関連付けフレームワーク508は、デバイス関連付けデータを取得するために、デバイス関連付けデータ記憶部510からデバイス関連付けデータを読み出し、読み出したデバイス関連付けデータをデバイス同期化ハンドラ504に提供する。デバイス同期化ハンドラ504は、受信したデバイス関連付けデータを、同期化データのコンテナに配して、そのコンテナを包括的同期化フレームワーク502に返す。包括的同期化フレームワーク502は、同期化データの集合をサービス106に提供する。
【0062】
1以上の実施形態において、コンピューティング・デバイス上のデバイス関連付けデータに対してなされた変更をサービス106に提供するために、デバイス同期化ハンドラ504は、デバイス関連付けデータ記憶部510に対して直接、変更イベントを登録する。代替的に、デバイス同期化ハンドラ504は、例えば、デバイス関連付けフレームワーク508により公開されているアプリケーション・プログラミング・インタフェース(API)メソッドを呼び出すことによって等、他の方法で変更を受信するよう示してもよい。デバイス関連付けデータ記憶部510における変更に応答して、デバイス同期化ハンドラ504に通知され、デバイス同期化ハンドラ504は、デバイス関連付けフレームワーク508からのデバイス関連付けデータの現在のセットを列挙する。この列挙により、デバイス同期化ハンドラ504は、元のデバイス関連付けデータ記憶部510の詳細を理解する必要なく、デバイス関連付けデータ記憶部510においてどのような変更がなされたかについての詳細を得ることが可能になる。デバイス関連付けフレームワーク508は、デバイス関連付けデータを取得するために、デバイス関連付けデータ記憶部510からデバイス関連付けデータを読み出し、(例えば、デバイス関連付けデータ・オブジェクトとして)デバイス関連付けデータをデバイス同期化ハンドラ504に返し、デバイス同期化ハンドラ504は、受信したデバイス関連付けデータを含む同期化設定のコンテナを生成し、そのコンテナを包括的同期化フレームワーク502に渡す。包括的同期化フレームワーク502は、同期化データの集合をサービス106に提供する。
【0063】
1以上の実施形態において、サービス106から受信されたデバイス関連付けデータに対してなされた変更を記録するために、サービス106は、デバイス関連付けデータに対する変更について、包括的同期化フレームワーク502に通知し、実質的に全ての同期化設定の新たな集合を包括的同期化フレームワーク502に提供する。包括的同期化フレームワーク502は、この集合を解析し、次いで、サービス106から受信されたデバイス関連付けデータを処理するようデバイス同期化ハンドラ504を呼び出す。デバイス同期化ハンドラ504は、現在のローカル・デバイス関連付けデータとサービス106から受信されたデバイス関連付けデータとの間の差異を判別できるように、デバイス関連付けデータの既存のセットを列挙する。デバイス同期化ハンドラ504は、現在のローカル・デバイス関連付けデータとサービス106から受信されたデバイス関連付けデータとの間の差異を用いて、デバイス関連付けフレームワーク508を呼び出す。デバイス関連付けフレームワーク508は、デバイス関連付けデータ記憶部510から、対応するデバイス関連付けデータを取得する。デバイス関連付けデータ記憶部510から取得されたデバイス関連付けデータのセットが、デバイス同期化ハンドラ504にバックアップするために渡される。デバイス同期化ハンドラ504は、変更されたデバイス関連付けデータのセットが、デバイス同期化ハンドラ504が管理しているデバイス関連付けデータのセットに影響を及ぼすかどうかを判定する。すなわち、デバイス関連付けデータが同じに保たれているが、他の同期化データが変更された場合には、デバイス同期化ハンドラ504が管理しているローカルの状態に対する変更はない。周辺デバイスが追加された場合、デバイス同期化ハンドラ504は、デバイス関連付けデータを追加するためのインポート・コマンドを用いて、デバイス関連付けフレームワーク508を呼び出し、デバイス関連付けフレームワーク508は、デバイス関連付けデータをデバイス関連付けデータ記憶部510に追加する。周辺デバイスが除去された場合、デバイス同期化ハンドラ504は、関連付け解除コマンド又は除去コマンドを用いて、デバイス関連付けフレームワーク508を呼び出し、デバイス関連付けフレームワーク508は、デバイス関連付けデータをデバイス関連付けデータ記憶部510から削除する。デバイス関連付けデータがデバイス関連付けデータ記憶部510に追加された結果、又はデバイス関連付けデータがデバイス関連付けデータ記憶部510から削除された結果、コンピューティング・デバイスは、周辺デバイスに関連付けられる、又は周辺デバイスから関連付け解除される。
【0064】
本明細書で説明した技術は、様々な使用シナリオを提供する。例えば、ユーザは、自分の複数のコンピューティング・デバイスのうちの1つのコンピューティング・デバイス上に、使用することを好む周辺デバイスをインストールして、そのような周辺デバイスを、他の全てのコンピューティング・デバイス上に自動的にインストールさせることができる。別の例として、ユーザは、新たなスマートフォンを購入して、スマートフォンにそのデバイス関連付けデータをサービスに送信させることができる。次いで、ユーザの新たなスマートフォンは、ユーザが、ユーザのいずれのコンピューティング・デバイス上にスマートフォンを手動でインストールする必要なく、ユーザの全てのコンピューティング・デバイス上に自動的にインストールされる。
【0065】
本明細書で説明した技術に対して様々な他の変更がなされ得る。1以上の実施形態において、コンピューティング・デバイス上にインストールされた周辺デバイスのためのデバイス関連付けデータは、上述したように、ユーザが自分のアカウントにログインする様々な他のコンピューティング・デバイスに対して自動的に同期化される。代替的に、ユーザが特定の周辺デバイスをユーザの他のコンピューティング・デバイスに対して同期化させたいかどうかについて、(例えば、インストール・プロセスの一部として)ユーザを促してもよく、その特定の周辺デバイスは同期化されるべきであると示すユーザ入力のみに応答して、その特定の周辺デバイスのためのデバイス関連付けデータが、サービス及び他のコンピューティング・デバイスに送信される。
【0066】
本明細書において、特定のモジュールを参照して特定の機能について説明したが、本明細書で説明した個々のモジュールの機能は、複数のモジュールに分割されてもよいし、且つ/あるいは、複数のモジュールの少なくともいくつかの機能は、1つのモジュールに結合されてもよいことに留意すべきである。様々なモジュールにより実行される様々なアクションが、本明細書で説明されている。アクションを実行するものとして本明細書で説明した特定のモジュールは、そのアクションを実行するその特定のモジュール自体を含んでもよいし、代替的に、そのアクションを実行する(あるいは、そのアクションをその特定のモジュールと協働して実行する)別のコンポーネント又はモジュールを呼び出す、あるいはそのような別のコンポーネント又はモジュールに別の形でアクセスするその特定のモジュールを含んでもよい。したがって、アクションを実行する特定のモジュールは、そのアクションを実行するその特定のモジュール自体、及び/又は、その特定のモジュールにより呼び出される、あるいは別の形でアクセスされる、そのアクションを実行する別のモジュールを含む。
【0067】
図6は、本明細書で説明した様々な技術を実装することができる1以上のシステム及び/又はデバイスを表す例示的なコンピューティング・デバイス602を含む例示的なシステムを、一般に600で示している。コンピューティング・デバイス602は、例えば、サービス・プロバイダのサーバ、クライアントに関連付けられたデバイス(例えば、クライアント・デバイス)、オンチップ・システム、及び/又は、任意の他の適切なコンピューティング・デバイス若しくはコンピューティング・システムとすることができる。
【0068】
図示される例示的なコンピューティング・デバイス602は、処理システム604、1以上のコンピュータ読み取り可能な媒体606、及び、互いに通信可能に接続される1以上のI/Oインタフェース608を含む。図示されていないが、コンピューティング・デバイス602は、様々なコンポーネントを互いに接続するシステム・バス又は他のデータ・コマンド転送システムをさらに含み得る。システム・バスは、メモリ・バス若しくはメモリ・コントローラ、周辺バス、ユニバーサル・シリアル・バス、及び/又は、多様なバス・アーキテクチャのいずれかを利用するプロセッサ・バス若しくはローカル・バス等の様々なバス構造のいずれか1つ又は組合せを含み得る。制御線及びデータ線等の様々な他の例も意図されている。
【0069】
処理システム604は、ハードウェアを用いて1以上のオペレーションを実行する機能を表す。したがって、処理システム604は、プロセッサ、機能ブロック等として構成することができるハードウェア要素610を含むものとして図示されている。これは、特定用途向け集積回路や、1以上の半導体を用いて形成される他のロジック・デバイス等としての、ハードウェアによる実装を含み得る。ハードウェア要素610は、処理要素610が形成される材料又は本明細書で用いられた処理メカニズムにより限定されるものではない。例えば、プロセッサは、1以上の半導体及び/又はトランジスタ(例えば、電子集積回路(IC))を含んでもよい。そのようなコンテキストにおいて、プロセッサ実行可能な命令は、電子的に実行可能な命令であり得る。
【0070】
コンピュータ読み取り可能な媒体606は、メモリ/ストレージ612を含むものとして図示されている。メモリ/ストレージ612は、1以上のコンピュータ読み取り可能な媒体に関連付けられたメモリ/ストレージ能力を表す。メモリ/ストレージ612は、揮発性媒体(ランダム・アクセス・メモリ(RAM)等)及び/又は不揮発性媒体(読み取り専用メモリ(ROM)、フラッシュ・メモリ、光ディスク、磁気ディスク等)を含み得る。メモリ/ストレージ612は、固定媒体(例えば、RAM、ROM、固定ハード・ドライブ等)に加えて、取り外し可能な媒体(例えば、フラッシュ・メモリ、取り外し可能なハード・ドライブ、光ディスク等)も含み得る。コンピュータ読み取り可能な媒体606は、以下でさらに説明するように、多様な他の態様で構成されてもよい。
【0071】
1以上の入力/出力インタフェース608は、ユーザが、コマンド及び情報をコンピューティング・デバイス602に入力することを可能にするとともに、様々な入力/出力デバイスを用いて情報をユーザ及び/又は他のコンポーネント若しくはデバイスに提示することを可能にする機能を表す。入力デバイスの例は、キーボード、カーソル・コントロール・デバイス(例えば、マウス)、(例えば、音声入力のための)マイクロフォン、スキャナ、タッチ機能(例えば、物理的タッチを検出するよう構成されている静電容量式センサ又は他のセンサ)、カメラ(例えば、タッチを含まない動きをジェスチャとして検出するために、赤外線周波数等の、可視波長又は非可視波長を利用することができるカメラ)等を含む。出力デバイスの例は、ディスプレイ・デバイス(例えば、モニタ又はプロジェクタ)、スピーカ、プリンタ、ネットワーク・カード、触覚応答デバイス等を含む。したがって、コンピューティング・デバイス602は、ユーザ・インタラクションをサポートするために、以下でさらに説明するように、多様な態様で構成することができる。
【0072】
コンピューティング・デバイス602はまた、データ同期化システム614を含む。データ同期化システム614は、上述したデバイス関連付けデータを同期化するための様々な機能を提供する。データ同期化システム614は、例えば、
図1のデータ同期化モジュール112又は
図2のデバイス関連付けデータ同期化モジュール208を実装することができる。
【0073】
本明細書において、様々な技術が、ソフトウェア要素、ハードウェア要素、又はプログラム・モジュールの一般的なコンテキストにおいて説明され得る。一般に、そのようなモジュールは、特定のタスクを実行する、あるいは特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、要素、コンポーネント、データ構造等を含む。本明細書で使用される用語「モジュール」、用語「機能」、及び用語「コンポーネント」は、一般に、ソフトウェア、ファームウェア、ハードウェア、又はこれらの組合せを表す。本明細書で説明した技術の特徴は、プラットフォーム非依存であり、これは、本明細書で説明した技術が、多様なプロセッサを有する多様なコンピューティング・プラットフォーム上で実装され得ることを意味する。
【0074】
説明したモジュール及び技術の実装物は、何らかの形態のコンピュータ読み取り可能な媒体に記憶されてもよいし、そのような媒体を介して伝送されてもよい。コンピュータ読み取り可能な媒体は、コンピューティング・デバイス602がアクセスできる多様な媒体を含み得る。限定ではなく、例として、コンピュータ読み取り可能な媒体は、「コンピュータ読み取り可能な記憶媒体」及び「コンピュータ読み取り可能な信号媒体」を含み得る。
【0075】
「コンピュータ読み取り可能な記憶媒体」とは、情報の永続的記憶を可能にする媒体及び/若しくはデバイス、並びに/又は、有体のストレージを指し、単なる信号伝送、搬送波、又は信号自体を指すものではない。したがって、コンピュータ読み取り可能な記憶媒体とは、非信号搬送媒体を指す。コンピュータ読み取り可能な記憶媒体は、コンピュータ読み取り可能な命令、データ構造、プログラム・モジュール、ロジック要素/回路、又は他のデータ等の情報を記憶するのに適した方法又は技術により実装された、揮発性及び不揮発性の取り外し可能及び取り外し不可能な媒体及び/又は記憶デバイス等のハードウェアを含む。コンピュータ読み取り可能な記憶媒体の例は、RAM、ROM、EEPROM、フラッシュ・メモリ、若しくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)、若しくは他の光ストレージ、ハード・ディスク、磁気カセット、磁気テープ、磁気ディスク・ストレージ、若しくは他の磁気記憶デバイス、又は、所望の情報を記憶するのに適した、コンピュータがアクセスできる他の記憶デバイス、有体の媒体、若しくは製品を含み得るが、これらに限定されるものではない。
【0076】
「コンピュータ読み取り可能な信号媒体」とは、ネットワークを介して等、命令をコンピューティング・デバイス602のハードウェアに伝送するよう構成されている信号搬送媒体を指す。信号媒体は、通常、コンピュータ読み取り可能な命令、データ構造、プログラム・モジュール、又は他のデータを、搬送波、データ信号、又は他の搬送メカニズム等の変調されたデータ信号内に具現化し得る。信号媒体はまた、任意の情報配信媒体を含む。用語「変調されたデータ信号」とは、信号内の情報を符号化するように設定又は変更された特性セットのうちの1以上の特性を有する信号を意味する。限定ではなく、例として、通信媒体は、有線ネットワーク又は直接配線接続等の有線媒体と、音響、RF、赤外線、及び他の無線媒体等の無線媒体と、を含む。
【0077】
前述したように、ハードウェア要素610及びコンピュータ読み取り可能な媒体606は、本明細書で説明した技術の少なくともいくつかの態様を実装するためにいくつかの実施形態において使用できるハードウェア形態で実装された、命令、モジュール、プログラマブル・デバイス・ロジック、及び/又は固定デバイス・ロジックを表す。ハードウェア要素は、集積回路又はオンチップ・システム、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、コンプレックス・プログラマブル・ロジック・デバイス(CPLD)、及びシリコンによる他の実装物のコンポーネント、又は他のハードウェア・デバイスを含み得る。このコンテキストにおいて、ハードウェア要素は、ハードウェア要素により具現化され得る命令、モジュール、及び/又はロジックにより定められるプログラム・タスクを実行する処理デバイスとして動作することができることに加えて、例えば、前述したコンピュータ読み取り可能な記憶媒体といった、実行される命令を記憶するために利用されるハードウェア・デバイスとしても動作することができる。
【0078】
前述したものの組合せを使用して、本明細書で説明した様々な技術及びモジュールを実装することもできる。したがって、ソフトウェア、ハードウェア、又はプログラム・モジュール及び他のプログラム・モジュールは、何らかの形態のコンピュータ読み取り可能な記憶媒体上に具現化される、且つ/あるいは、1以上のハードウェア要素610により具現化される1以上の命令及び/又はロジックとして実装することができる。コンピューティング・デバイス602は、ソフトウェア・モジュール及び/又はハードウェア・モジュールに対応する特定の命令及び/又は機能を実装するよう構成され得る。したがって、ソフトウェアとしてコンピューティング・デバイス602により実行可能なモジュールとしてのモジュールの実装は、例えば、処理システムのハードウェア要素610及び/又はコンピュータ読み取り可能な記憶媒体の使用を通じた、ハードウェアにおいて少なくとも部分的により実現することができる。命令及び/又は機能は、本明細書で説明した技術、モジュール、及び例を実装する1以上の製品(例えば、1以上のコンピューティング・デバイス602及び/又は処理システム604)により実行可能/動作可能であり得る。
【0079】
図6にさらに示されるように、例示的なシステム600は、パーソナル・コンピュータ(PC)、テレビジョン、及び/若しくはセットトップ・ボックス・デバイス、並びに/又はモバイル・デバイス上でアプリケーションを実行する際のシームレスなユーザ・エクスペリエンスのためのユビキタス環境を可能にする。サービス及びアプリケーションは、アプリケーションを利用している間、ビデオ・ゲームをプレイしている間、ビデオを見ている間等に1つのデバイスから次のデバイスに移る際の共通のユーザ・エクスペリエンスのために、3つの全ての環境において実質的に同様に動作する。
【0080】
例示的なシステム600において、複数のデバイスが、中央コンピューティング・デバイスを介して相互接続される。中央コンピューティング・デバイスは、複数のデバイスに対してローカルにあってもよいし、複数のデバイスからリモートに位置してもよい。1以上の実施形態において、中央コンピューティング・デバイスは、ネットワーク、インターネット、又は他のデータ通信リンクを介して複数のデバイスに接続される1以上のサーバ・コンピュータのクラウドであり得る。
【0081】
1以上の実施形態において、この相互接続アーキテクチャは、共通のシームレスなエクスペリエンスを複数のデバイスのユーザに提供するために複数のデバイスにわたって機能を提供することを可能にする。複数のデバイスの各々は、異なる物理的要件及び能力を有することがあり、中央コンピューティング・デバイスは、デバイス向けに調整されながらも全てのデバイスに共通のエクスペリエンスをデバイスに提供することを可能にするプラットフォームを使用する。1以上の実施形態において、ターゲット・デバイスのクラスが作成され、エクスペリエンスが、デバイスの一般クラス向けに調整される。デバイスのクラスは、デバイスの物理的機能、使用のタイプ、又は他の共通の特性により定められ得る。
【0082】
様々な実装において、コンピューティング・デバイス602は、例えば、コンピュータ616、モバイル618、及びテレビジョン620の使用等のために、多種多様な構成を担うことができる。それらの構成の各々は、一般に異なる構造及び能力を有し得るデバイスを含み、したがって、コンピューティング・デバイス602は、異なるデバイス・クラスのうちの1以上に従って構成され得る。例えば、コンピューティング・デバイス602は、パーソナル・コンピュータ、デスクトップ・コンピュータ、マルチスクリーン・コンピュータ、ラップトップ・コンピュータ、ネットブック等を含むデバイスのコンピュータ616クラスとして実装され得る。
【0083】
コンピューティング・デバイス602はまた、携帯電話機、ポータブル音楽プレーヤ、ポータブル・ゲーム・デバイス、タブレット・コンピュータ、マルチスクリーン・コンピュータ等のモバイル・デバイスを含むデバイスのモバイル618クラスとして実装され得る。コンピューティング・デバイス602はまた、通常の視聴環境において一般により大型のスクリーンを有する、あるいは通常の視聴環境において一般により大型のスクリーンに接続されるデバイスを含むデバイスのテレビジョン620クラスとして実装され得る。このようなデバイスは、テレビジョン、セットトップ・ボックス、ゲーム・コンソール等を含む。
【0084】
本明細書で説明した技術は、コンピューティング・デバイス602のそれら様々な構成によりサポートされ得るが、本明細書で説明した技術の具体例に限定されるものではない。このような機能はまた、全て又は部分的に、例えば、以下で説明するプラットフォーム624を介し「クラウド」622を介する分散システムの使用を通じて実装されてもよい。
【0085】
クラウド622は、リソース626のためのプラットフォーム624を含む、且つ/あるいはそのようなプラットフォーム624を表す。プラットフォーム624は、クラウド622のハードウェア・リソース(例えば、サーバ)及びソフトウェア・リソースの基盤となる機能を抽象化する。リソース626は、コンピューティング・デバイス602からリモートにあるサーバ上でコンピュータ処理が実行されている間に利用することができるアプリケーション及び/又はデータを含み得る。リソース626はまた、インターネット、及び/又は、セルラ・ネットワーク若しくはWi−Fi(登録商標)ネットワーク等の加入者ネットワークを介して提供されるサービスも含み得る。
【0086】
プラットフォーム624は、コンピューティング・デバイス602を他のコンピューティング・デバイスに接続するためのリソース及び機能を抽象化し得る。プラットフォーム624はまた、リソースのスケーリングを抽象化して、スケールの対応するレベルを、プラットフォーム624を介して実装されているリソース626に対して生じた要求に提供するように機能することもできる。したがって、相互接続されるデバイスの実施形態において、本明細書で説明した機能の実装物は、システム600にわたって分散されてもよい。例えば、機能は、コンピューティング・デバイス602に部分的に実装されるとともに、クラウド622の機能を抽象化するプラットフォーム624を介して実装されてもよい。
【0087】
構造的特徴及び/又は方法論的動作に特有の言葉で主題について説明したが、特許請求の範囲において定められる主題は、上述した特定の特徴又は動作に必ずしも限定されないことを理解すべきである。そうではなく、上述した特定の特徴及び動作は、請求項を実施する例示的な形態として開示されている。