(57)【特許請求の範囲】
【請求項１】
方法であって、
第１のコンピューティングデバイスから、前記第１のコンピューティングデバイス上で動作しているアプリケーションに対応する１つ以上の状態オブジェクトを受信するステップと、
前記第１のコンピューティングデバイスから離れた第２のコンピューティングデバイスから、前記第１のコンピューティングデバイスに関連付けられたデバイス状態情報についての要求を受信するステップと、
前記要求に応答して、前記デバイス状態情報を前記第２のコンピューティングデバイスに提供するステップとを備え、前記デバイス状態情報は、前記第１のコンピューティングデバイス上で動作している前記アプリケーションのアプリケーション一覧を備え、前記方法はさらに、
前記第２のコンピューティングデバイスから、提供された前記アプリケーション一覧の選択されたアプリケーションに対応するアプリケーション選択を受信するステップと、
前記アプリケーション選択の受信に応答して、受信された前記１つ以上の状態オブジェクトからの前記選択されたアプリケーションに対応する状態オブジェクトを、前記第２のコンピューティングデバイスに提供するステップとを備え、
前記方法はさらに、
前記１つ以上の状態オブジェクトを受信するステップの前に、前記第１のコンピューティングデバイスおよび前記第２のコンピューティングデバイスを備える複数のデバイスをユーザアカウントに登録するステップと、
デバイス状態情報についての前記要求を受信するステップの前に、前記ユーザアカウントに登録されたデバイスのデバイス一覧についての要求を受信するステップと、
前記デバイス一覧についての前記要求に応答して、前記デバイス一覧を提供するステップとを備え、
デバイス状態情報についての前記要求は、前記第１のコンピューティングデバイスを、前記デバイス一覧から選択されるとして識別する、方法。
【請求項２】
前記デバイス状態情報を前記第２のコンピューティングデバイスに提供するステップの前に、前記第２のコンピューティングデバイスが前記ユーザアカウントで認証されていると判断するステップをさらに備える、請求項１に記載の方法。
【請求項３】
デバイス状態情報についての前記要求は、前記第２のコンピューティングデバイス上のグローバルアプリケーションインターフェイスから受信され、前記デバイス状態情報は前記グローバルアプリケーションインターフェイスに提供され、前記グローバルアプリケーションインターフェイスは前記ユーザアカウントとリンクされており、前記デバイス状態情報は、前記アプリケーション一覧の表示のために、前記第２のコンピューティングデバイス上の前記グローバルアプリケーションインターフェイスに提供される、請求項１に記載の方法。
【請求項４】
前記第１のコンピューティングデバイス上で動作しているアプリケーションに対応する更新された状態オブジェクトが、前記第１のコンピューティングデバイスから周期的な間隔で受信される、請求項１から３のいずれか１項に記載の方法。
【請求項５】
前記第１のコンピューティングデバイスにおいて、アプリケーションを選択するステップと、
前記第１のコンピューティングデバイスにおいて、前記第２のコンピューティングデバイスを選択するステップと、
前記第１のコンピューティングデバイスから、選択された前記第２のコンピューティングデバイスに、遠隔アプリケーションの指示とともに、選択された前記アプリケーションに対応する状態オブジェクトを提供するステップと、
選択された前記第２のコンピューティングデバイスにおいて、前記状態オブジェクトによって提供される状態で、前記遠隔アプリケーションを実行するステップとをさらに備える、請求項１から４のいずれか１項に記載の方法。
【請求項６】
前記第１のコンピューティングデバイスまたは前記第２のコンピューティングデバイスは、モバイルデバイスである、請求項１から５のいずれか１項に記載の方法。
【請求項７】
サーバから、ユーザアカウントに関連付けられた１つ以上の遠隔コンピューティングデバイス上で動作しているアプリケーションのアプリケーション一覧を受信するステップと、
前記ユーザアカウントに関連付けられたグローバルアプリケーションインターフェイスでの表示のために、前記アプリケーション一覧を提供するステップと、
前記グローバルアプリケーションインターフェイスで、提供された前記アプリケーション一覧の選択されたアプリケーションに対応するアプリケーション選択を受信するステップと、
受信された前記アプリケーション選択に基づいて、前記選択されたアプリケーションに対応する状態オブジェクトを前記サーバから送信するように、前記サーバに要求するステップと、
前記サーバから要求された前記状態オブジェクトを受信するステップとを備える方法であって、
前記方法はさらに、
前記サーバによって提供されたデバイス情報に基づいて、前記１つ以上の遠隔コンピューティングデバイスのデバイス一覧を判断するステップと、
前記グローバルアプリケーションインターフェイスでの表示のために、前記デバイス一覧を提供するステップと、
前記グローバルアプリケーションインターフェイスで、前記デバイス一覧において識別されるそれぞれの前記遠隔コンピューティングデバイスに基づく、デバイス選択を受信するステップとを備え、前記デバイス選択が為された遠隔コンピューティングデバイスにおいて、前記アプリケーション選択が為されるアプリケーションの遠隔インスタンスが動作しており、前記方法はさらに、
前記デバイス選択の受信に応答して、前記アプリケーション一覧を前記サーバから送信するように、前記サーバに要求するステップを備え、前記アプリケーション一覧は前記デバイス選択が為された遠隔コンピューティングデバイスについてのものである、方法。
【請求項８】
受信された前記状態オブジェクトに基づいて、前記選択されたアプリケーションのローカルインスタンスを開くステップを備え、前記ローカルインスタンスは、前記１つ以上の遠隔コンピューティングデバイスのうちのそれぞれの遠隔コンピューティングデバイス上で現在動作している前記選択されたアプリケーションの遠隔インスタンスと同一である、前記アプリケーションの設定および状態を備える、請求項７に記載の方法。
【請求項９】
それぞれの前記遠隔コンピューティングデバイスは、モバイルデバイスである、請求項７または８に記載の方法。
【請求項１０】
前記選択されたアプリケーションはウェブブラウザを備え、受信された前記状態オブジェクトは、前記選択されたアプリケーションの前記遠隔インスタンスのウェブ閲覧履歴と、前記遠隔インスタンスによって現在開かれている少なくとも１つのウェブページとを含み、
前記選択されたアプリケーションの前記ローカルインスタンスは、前記遠隔インスタンスによって最後に見られた前記ウェブページ内の位置で前記ウェブページを見るために開き、前記ローカルインスタンスは、前記遠隔インスタンスの前記ウェブ閲覧履歴に従ったウェブページのナビゲーションを可能にするように構成される、請求項８に記載の方法。
【請求項１１】
ディスプレイスクリーンで行なわれたユーザジェスチャーに応答して、前記グローバルアプリケーションインターフェイスを生成するステップを備える、請求項７から１０のいずれか１項に記載の方法。
【請求項１２】
１つ以上のプロセッサと、
命令が格納されたメモリ媒体とを備える、システムであって、
前記命令は、実行されると、前記１つ以上のプロセッサが、
第１のコンピューティングデバイスのために、前記第１のコンピューティングデバイス上で動作しているアプリケーションに対応する１つ以上の状態オブジェクトを格納し、
前記第１のコンピューティングデバイスから離れた第２のコンピューティングデバイスから、前記第１のコンピューティングデバイス上で動作している前記アプリケーションのアプリケーション一覧についての要求を受信し、
前記要求に応答して、前記アプリケーション一覧を前記第２のコンピューティングデバイスに提供し、
前記第２のコンピューティングデバイスから、提供された前記アプリケーション一覧の選択されたアプリケーションに対応するアプリケーション選択を受信し、
前記アプリケーション選択の受信に応答して、格納された前記１つ以上の状態オブジェクトからの前記選択されたアプリケーションに対応する状態オブジェクトを、前記第２のコンピューティングデバイスに提供するようにし、
前記命令は、実行されると、さらに、前記１つ以上のプロセッサが、
前記１つ以上の状態オブジェクトを受信する前に、前記第１のコンピューティングデバイスおよび前記第２のコンピューティングデバイスを備える複数のデバイスをユーザアカウントに登録するようにし、
アプリケーション一覧についての前記要求を受信する前に、前記第２のコンピューティングデバイスから、前記ユーザアカウントに登録されたデバイスのデバイス一覧についての要求を受信し、
前記デバイス一覧についての前記要求に応答して、前記デバイス一覧を前記第２のコンピューティングデバイスに提供するようにし、
アプリケーション一覧についての前記要求は、前記第１のコンピューティングデバイスを、前記デバイス一覧から選択されるとして識別する、システム。
【請求項１３】
アプリケーション一覧についての前記要求は、前記第２のコンピューティングデバイス上のグローバルアプリケーションインターフェイスから受信され、前記アプリケーション一覧に関する情報は前記グローバルアプリケーションインターフェイスに提供され、前記グローバルアプリケーションインターフェイスは前記ユーザアカウントとリンクされており、前記アプリケーション一覧に関する情報は、前記アプリケーション一覧の表示のために、前記第２のコンピューティングデバイス上の前記グローバルアプリケーションインターフェイスに提供される、請求項１２に記載のシステム。
【請求項１４】
前記第１のコンピューティングデバイスは、アプリケーションを選択し、前記第２のコンピューティングデバイスを選択し、選択された前記第２のコンピューティングデバイスに、遠隔アプリケーションの指示とともに、選択された前記アプリケーションに対応する状態オブジェクトを提供するものであり、
選択された前記第２のコンピューティングデバイスは、前記状態オブジェクトによって提供される状態で、前記遠隔アプリケーションを実行するものである、請求項１２に記載のシステム。
【請求項１５】
請求項１から１１のいずれか１項に記載の方法を１以上のプロセッサに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は一般に、異なるデバイス間でのアプリケーション状態の転送に関する。
【背景技術】
【０００２】
背景
ユーザはしばしば、自分のアカウントに関連付けられた複数のデバイスにわたって複数のアプリケーションとやりとりする。たとえば、ユーザは、自分のモバイルデバイス上でタスク（たとえば電子メールを書くこと）を開始し、異なる活動に切り替え、次に、異なるデバイス（たとえばラップトップ）上で元のタスクを再開しようとする場合がある。他のデバイス上でのタスクの再開は、タスクを再開するために、および／またはタスクの再開に必要な情報をロードするためにプログラムをロードし、および／または実行するための追加の時間を伴い得る。場合によっては、タスクを再開するための対応するアプリケーションが利用できないかもしれない。
【発明の概要】
【課題を解決するための手段】
【０００３】
概要
本技術は、デバイス間でアプリケーション状態を転送するためのシステム、およびコンピュータにより実現される方法を提供する。１つ以上の実現化例では、コンピュータにより実現される方法は、第１のコンピューティングデバイスから、第１のコンピューティングデバイス上で動作しているアプリケーションに対応する１つ以上の状態オブジェクトを受信するステップと、第１のコンピューティングデバイスから離れた第２のコンピューティングデバイスから、第１のコンピューティングデバイスに関連付けられたデバイス状態情報についての要求を受信するステップと、要求に応答して、デバイス状態情報を第２のコンピューティングデバイスに提供するステップとを備え、デバイス状態情報は、第１のコンピューティングデバイス上で動作しているアプリケーションのアプリケーション一覧を備え、方法はさらに、第２のコンピューティングデバイスから、提供された一覧の選択されたアプリケーションに対応するアプリケーション選択を受信するステップと、アプリケーション選択の受信に応答して、受信された１つ以上の状態オブジェクトからの選択されたアプリケーションに対応する状態オブジェクトを、第２のコンピューティングデバイスに提供するステップとを備える。他の局面は、コンピュータにより実現される方法の実現のための対応するシステム、機器、およびコンピュータプログラム製品を含む。
【０００４】
１つ以上の実現化例では、コンピュータにより実現される方法は、サーバから、ユーザアカウントに関連付けられた１つ以上の遠隔コンピューティングデバイス上で動作しているアプリケーションのアプリケーション一覧を受信するステップと、ユーザアカウントに関連付けられたグローバルアプリケーションインターフェイスでの表示のために、アプリケーション一覧を提供するステップと、グローバルアプリケーションインターフェイスで、提供されたアプリケーション一覧の選択されたアプリケーションに対応するアプリケーション選択を受信するステップと、受信されたアプリケーション選択に基づいて、選択されたアプリケーションに対応する状態オブジェクトをサーバから要求するステップと、サーバから要求された状態オブジェクトを受信するステップとを備える。他の局面は、コンピュータにより実現される方法の実現のための対応するシステム、機器、およびコンピュータプログラム製品を含む。
【０００５】
１つ以上の実現化例では、システムは、１つ以上のプロセッサと、命令が格納されたメモリ媒体とを備える。命令は、実行されると、１つ以上のプロセッサが、第１のコンピューティングデバイスのために、第１のコンピューティングデバイス上で動作しているアプリケーションに対応する１つ以上の状態オブジェクトを格納し、第１のコンピューティングデバイスから離れた第２のコンピューティングデバイスから、第１のコンピューティングデバイス上で動作しているアプリケーションのアプリケーション一覧についての要求を受信し、要求に応答してアプリケーション一覧を提供し、第２のコンピューティングデバイスから、提供された一覧の選択されたアプリケーションに対応するアプリケーション選択を受信し、アプリケーション選択の受信に応答して、格納された１つ以上の状態オブジェクトからの選択されたアプリケーションに対応する状態オブジェクトを、第２のコンピューティングデバイスに提供するようにする。他の局面は、前述のシステムの実現のための対応する機器、方法、およびコンピュータプログラム製品を含む。
【０００６】
本技術の他の構成は、本技術のさまざまな構成が実例として示され説明される以下の詳細な説明から、当業者には容易に明らかとなるであろう、ということが理解される。理解されるように、本技術は、本技術の範囲からまったく逸脱することなく、他の構成および異なる構成が可能であり、そのいくつかの詳細はさまざまな他の点で変更が可能である。したがって、図面および詳細な説明は本質的に例示的であると見なされるべきであり、限定的であると見なされるべきではない。
【０００７】
図面の簡単な説明
添付図面を参照して、詳細な説明を行なう。
【図面の簡単な説明】
【０００８】
【図１】デバイス間でアプリケーション状態を転送するための例示的なシステムの図である。
【図２】デバイス間でアプリケーション状態を転送するための例示的なコンポーネントおよびデータフローを示す図である。
【図３】デバイス間でアプリケーション状態を転送する際に使用される例示的なユーザインターフェイスを示す図である。
【図４】デバイス間でアプリケーション状態を転送するための例示的なプロセスのフロー図である。
【図５】デバイス間でのアプリケーション状態の転送に関連して使用される例示的な電子システムを示す図である。
【発明を実施するための形態】
【０００９】
詳細な説明
以下に述べる詳細な説明は、本技術のさまざまな構成の説明として意図されており、本技術が実践され得る構成のみを表わすよう意図されてはいない。添付図面はここに援用され、詳細な説明の一部を構成する。詳細な説明は、本技術の完全な理解を提供する目的のために、特定の詳細を含む。しかしながら、本技術はここに述べる特定の詳細に限定されず、これらの特定の詳細なしで実践され得る、ということは、当業者には明白かつ明確であろう。場合によっては、本技術の概念を不明瞭にしないように、周知の構造およびコンポーネントはブロック図の形で示される。
【００１０】
本技術は、デバイス間でアプリケーション状態を転送するための機構を提供する。ユーザアカウントに関連付けられたコンピューティングデバイス上で動作しているアプリケーションに対応する状態オブジェクトを受信して格納するサーバが提供される。ユーザアカウントに関連付けられたクライアントデバイス（たとえば、コンピュータまたはスマートフォン）が、ユーザアカウントに関連付けられた他のデバイス上で動作しているアプリケーションを見ることを要求する場合がある。そのような要求を受信すると、サーバはクライアントデバイスに、他のデバイスに関連付けられた、デバイス上で動作しているアプリケーションのアプリケーション一覧（たとえば、リストまたは他の表現）を含むデバイス状態情報を提供してもよい。クライアントデバイスは次に、アプリケーション一覧からのユーザ選択に基づいて、アプリケーションのうちの選択された１つのアプリケーションをサーバに通知し、サーバは、以前に受信された１つ以上の格納された状態オブジェクトから、選択されたアプリケーションに対応する状態オブジェクトを提供する。
【００１１】
クライアント側で、クライアントデバイスは、クライアントデバイスのユーザが認証されたユーザアカウントに関連付けられた１つ以上のコンピューティングデバイスを判断してもよい。たとえば、クライアントデバイスは、ユーザアカウントに関連付けられた（または認証された）デバイスについて、（たとえばユーザアカウントに問い合わせることによって）サーバに問い合わせてもよい。判断されたコンピューティングデバイスのデバイス一覧が次に、クライアントデバイス上で動作しているグローバルアプリケーションインターフェイスに提供されてもよい。１つ以上の実現化例では、グローバルアプリケーションインターフェイスは、ユーザアカウントにリンクされたすべてのデバイスにわたる、（たとえば状態オブジェクトとしての）状態情報の「グローバルな」管理および転送を提供する。１つ以上のコンピューティングデバイスに対応するユーザ選択をグローバルアプリケーションインターフェイスから受信すると、クライアントデバイスは、選択されたデバイスについてのデバイス状態情報をサーバから要求してもよい。サーバは次に、選択されたコンピューティングデバイス上で動作しているアプリケーションのアプリケーション一覧を含むデバイス状態情報をクライアントデバイスに送信し、クライアントデバイスは、アプリケーション一覧をグローバルアプリケーションインターフェイスに提供する。
【００１２】
ユーザは次に、提供されたアプリケーション一覧からあるアプリケーションを選択してもよい。選択されたアプリケーションを受信すると、クライアントデバイスは、選択されたアプリケーションに対応する状態オブジェクトを要求してサーバから受信する。クライアントデバイスは次に、状態オブジェクトを使用して、選択されたアプリケーションのローカルインスタンスを開いてもよい。ローカルインスタンスは、選択されたコンピューティングデバイスのうちの１つの上で現在動作している選択されたアプリケーションの遠隔インスタンスと同一の状態および設定を有する。
【００１３】
グローバルアプリケーションインターフェイスはたとえば、ユーザアカウントに接続されたデバイス上で現在動作しているすべてのアプリケーション、または、状態情報がサーバに格納されたすべてのアプリケーションを見るために使用されてもよい。アプリケーションは、デバイスによって順序付けされて表示されるアプリケーションのグループから表示されてもよく、または、いくつかの実現化例では、デバイスのグループが表示され、表示されたデバイスのうちの選択された１つのデバイスについてのアプリケーションがユーザに提示されてもよい。いくつかの実現化例では、グローバルアプリケーションインターフェイスは、ユーザが予め定められたジェスチャー（たとえば、デスクトップ上でのピンチまたはピンチアウト（pinch-expand）ジェスチャー）を行なうと、表示されてもよい。
【００１４】
システムの動作、およびグローバルアプリケーションインターフェイスは、双方向性であってもよい。たとえば、ユーザは、グローバルアプリケーションインターフェイスを使用して、別のデバイス上で現在実行されているアプリケーションのローカルインスタンスをインスタンス化してもよい。これに代えて、ユーザは、ユーザのデバイス上で現在動作しているアプリケーションの表現を、グローバルアプリケーションインターフェイスに表示された別のデバイスの表現までドラッグして、状態オブジェクトを別のデバイスに転送し、別のデバイス上でアプリケーションのインスタンスを開いてもよい。
【００１５】
図１は、本技術の１つ以上の局面に従った、デバイス間でアプリケーション状態を転送するための例示的なシステム１００の図である。システム１００は、１つ以上のコンピューティングデバイス１０１、１０２と、１つ以上の集中型サーバ１０３と、遠隔ストレージ１０４（たとえばデータベース）とを含んでいてもよい。コンピューティングデバイス１０１、１０２は各々、１つ以上の位置認識コンピューティングデバイスが内蔵されるかまたは取付けられた、スマートフォン、ＧＰＳナビゲーションデバイス、またはパーソナルコンピュータ、タブレットコンピュータ、ＰＤＡ、テレビまたは他の表示装置などのうちの１つであってもよい。
【００１６】
さまざまな実現化例によれば、コンピューティングデバイス１０１および１０２は、ユーザアカウント１０５に結び付けられてもよい。したがって、ユーザ１０６は、ユーザアカウント１０５で認証されることによって、それぞれのデバイス１０１、１０２のある特徴を使用するよう認可される。ユーザアカウント１０５は、たとえば、クラウドベースのまたはウェブベースのユーザアカウントであってもよく、もしくは、企業アカウント（たとえばＬＤＡＰアカウント）であってもよく、複数のデバイス用のユニバーサルアカウントとして機能してもよい。この点に関し、ユーザアカウントに関連して格納された情報は、第３のコンピューティングデバイス上、たとえば、（たとえば「データクラウド」内の）サーバ１０３上に集中的に位置していてもよい。サーバ１０３は、たとえば第１のコンピューティングデバイス１０１および第２のコンピューティングデバイス１０２に、ネットワーク１０７（たとえばＬＡＮ、ＷＡＮ、ＷｉＦｉ、セルラーネットワーク、またはインターネット）を通して動作可能に接続されてもよい。遠隔ストレージ１０４は、ユーザアカウント１０５に関連した情報（たとえば、状態オブジェクト）を格納してもよい。サーバ１０３および遠隔ストレージ１０４の機能性は、同じ物理サーバ上で実現されてもよく、または、複数のサーバ中に分散されてもよい。また、遠隔ストレージ１０４は、リレーショナルデータベース、オブジェクト指向型データベース、ファイル構造、テキストベースの記録、または他の形態のデータレポジトリといった任意の形態を取ってもよい。
【００１７】
コンピューティングデバイス１０１、１０２は、デバイス上で動作しているアプリケーションについての状態オブジェクト内に、情報設定および状態情報を（たとえばローカルに）格納してもよい。状態オブジェクトは、各アプリケーションに関連付けられたメモリ常駐データオブジェクトであってもよい。アプリケーションが閉じられた後で、各状態オブジェクトは、クッキー状でメモリ内に留まってもよく、および／または、ローカル不揮発性メモリ内に留まってもよい。状態オブジェクトまたはその内部の情報は、遠隔ストレージ１０４での格納のために、サーバ１０３に自動的に送信されてもよい。別の局面では、状態オブジェクトまたはその内部の情報は、アプリケーションかまたはアプリケーションが動作しているデバイスがユーザアカウント１０５で登録および／または認証された場合、もしくは、ユーザ１０６によって手動で認可または始動された場合にのみ、送信されてもよい。
【００１８】
各コンピューティングデバイス１０１、１０２は、サーバ１０３に接続して、ローカル状態情報を遠隔ストレージ１０４に格納された状態オブジェクトと同期させるように構成されてもよい。一局面では、第１のコンピューティングデバイス１０１は１つ以上の状態オブジェクトをサーバ１０３に送信してもよく、サーバ１０３は、デバイス１０１がオフラインであっても状態オブジェクトがアクセスされて第２のコンピューティングデバイス１０２と同期され得るように、状態オブジェクトを受信して遠隔ストレージ１０４に格納してもよい。サーバ１０３はまた、各デバイス、アプリケーション、または状態オブジェクトが前回同期された時間を含む他の情報を格納してもよい。
【００１９】
状態オブジェクトの同期、格納、および／または転送は、異なるタイプのコンピューティングデバイス１０１、１０２間であってもよい。たとえば、さまざまなアプリケーションが、スマートフォン、ならびに、デスクトップまたはラップトップコンピュータ上にインストールされてもよい。これらのアプリケーションおよび／またはそれらが動作しているデバイスがユーザアカウント１０５に関連付けられている限り、それらのアプリケーションについての状態オブジェクトは、デバイスのうちのいずれかによるアクセスのために、遠隔ストレージ１０４上にアップロードされて格納されてもよい。
【００２０】
コンピューティングデバイス１０１および１０２、サーバ１０３、およびストレージ１０４間のさまざまな接続は、有線または無線接続を通して行なわれてもよい。コンピューティングデバイス１０１および１０２は、規定されたエリア内で同一場所に位置してもよい。たとえば、これらのデバイスは、同じＬＡＮまたはＷｉＦｉネットワークに接続されてもよい。コンピューティングデバイス１０１および１０２は、ユーザの自宅と職場といった異なる場所にあってもよい。
【００２１】
さまざまな局面によれば、コンピューティングデバイス１０１および１０２は、サーバ１０３とのやりとりのために、および、状態オブジェクトの管理または転送のために、１つ以上のユーザインターフェイス１０８ａ、１０８ｂをロードして実行するように構成されてもよい。ユーザインターフェイス１０８は、デスクトップまたはモバイルオペレーティングシステムによって提供されるデスクトップインターフェイス、もしくは、デバイス上で実行され、オペレーティングシステムによって管理されるスタンドアロンアプリケーション（たとえば、ウェブブラウザまたはウェブ対応アプリケーション）によって提供されるユーザインターフェイスであってもよい。インターフェイス１０８は、たとえば予め定められたジェスチャーを使用して開かれてもよい。たとえば、ユーザ１０６は、コンピューティングデバイス１０２のタッチスクリーン上でピンチアウトジェスチャー（たとえば逆ピンチ）を行なって、インターフェイス１０８ｂを開いてもよい。さらに説明されるように、各デバイスのユーザインターフェイス１０８は、ユーザアカウント１０５にリンクされたデバイス上で動作しているアプリケーションをグローバルなレベルで見直し、（たとえば、グローバルアプリケーションインターフェイスとして動作している）ユーザインターフェイス１０８に関連付けられたデバイス上でそれらのアプリケーションのうちの選択されたアプリケーションをローカルに開くために使用されてもよい。
【００２２】
サーバ１０３は、ユーザアカウント１０５に関連付けられたデバイスについての状態オブジェクトを受信して格納してもよく、また、デバイスのうちの１つから状態情報についての要求を受信すると、サーバ１０３は、どのコンピューティングデバイスがユーザアカウント１０５に現在関連付けられているか（たとえば、登録されているか）、および／または、現在ユーザアカウント１０５で認証されているかに関して、判断を下してもよい。サーバは次に、判断に基づいて、アカウントにリンクされたデバイスにわたって動作しているすべてのアプリケーションの一覧を、デバイスのうちの１つ以上に提供してもよい。たとえば、コンピューティングデバイス１０２は、ユーザアカウント１０５にリンクされたデバイスの一覧を要求してもよい。サーバ１０３は次に、アカウントに現在リンクされているデバイスを判断し、デバイスの一覧を、ユーザ１０６への表示のためにユーザインターフェイス１０８ｂに提供してもよい。
【００２３】
ユーザ１０６は次に、デバイス１０２上でローカルに開くためのユーザインターフェイス１０８ｂで、デバイスのうちの１つを選択してもよい。この点に関し、サーバ１０３は、インターフェイス１０８ｂから、デバイス一覧の選択されたコンピューティングデバイスに対応するデバイス選択を受信してもよい。デバイス選択の受信に応答して、サーバ１０３は、選択されたコンピューティングデバイス上で動作しているアプリケーションのアプリケーション一覧を判断し、アプリケーション一覧をインターフェイス１０８ｂに提供してもよい。ユーザ１０６は次に、アプリケーション一覧からあるアプリケーションを選択してもよく、コンピューティングデバイス１０２は、選択されたアプリケーションをサーバ１０３に提供する。サーバ１０３は次に、選択されたアプリケーションに対応する状態オブジェクトを、たとえば遠隔ストレージ１０４から検索し、状態オブジェクトをコンピューティングデバイス１０２に提供する。コンピューティングデバイス１０２は、サーバ１０３から状態オブジェクトを受信し、次に、受信された状態オブジェクトに基づいて、選択されたアプリケーションのローカルインスタンスを開く。ローカルインスタンスは、選択されたコンピューティングデバイス上で現在動作している選択されたアプリケーションの遠隔インスタンスと同一の状態および設定を有して開かれる。
【００２４】
図２は、本技術の１つ以上の局面に従った、デバイス間でアプリケーション状態を転送するための例示的なコンポーネントおよびデータフローを示す。システム２００は、異なるコンピューティングデバイス１０１、１０２と遠隔サーバ１０３との通信を容易にするのための１つ以上のアプリケーションプログラミングインターフェイス（application programming interface：ＡＰＩ）２０２を含んでいてもよい。一局面では、ＡＰＩ２０２はサーバ１０３上に位置し、ユーザアカウント１０５に関連して動作するコンピューティングデバイスに提供されてもよい。ＡＰＩ２０２を使用して、コンピューティングデバイス１０１は、設定および状態を含むアプリケーション状態情報を、ユーザアカウント１０５にリンクされたコンピューティングデバイス１０２などの他のデバイスによるアクセスのために、サーバ１０３に留めてもよい。
【００２５】
１つ以上の実現化例では、アプリケーションは、たとえばユーザがユーザアカウント１０５で認可されたときに、アプリケーションをサーバ１０３に登録することによって、状態オブジェクト２０６を格納するために認可される。このように、各アプリケーションは「アカウントにリンクされる」ようになり、ユーザアカウント１０５において、それがインストールされ動作しているその対応するデバイスに関連付けられる。
【００２６】
１つ以上の実現化例では、コンピューティングデバイス１０１は、デバイス１０１上で動作しているアプリケーションについてのアプリケーション状態および設定（および／または構成情報）といった、アプリケーション特有の状態情報を格納し、次にその情報を、他のデバイス上でのアプリケーションの他のインスタンスの生成のために、サーバ１０３上でミラーリングしてもよい。図２に示すように、アプリケーションの第１のインスタンス２０４によって情報が格納または更新されると、状態オブジェクト２０６はサーバ１０３で自動的にミラーリング、格納または更新されてもよい。加えて、またはこれに代えて、状態オブジェクト２０６は、サーバ１０３から要求があり次第、たとえば、アカウントにリンクされたデバイスからサーバ１０３が同様の要求を受信すると、サーバ１０３に提供されてもよい。
【００２７】
１つ以上の実現化例では、サーバ１０３上でＡＰＩ２０２と同時に実行されている情報監視サービスが、サーバ１０３に格納された情報を監視してもよい。アカウントにリンクされたデバイスのうちのいずれかでのアプリケーションの更新の際、サーバ１０３は、登録されたすべてのデバイスに信号を送信して、格納された情報が更新されたことをそれらに通知してもよい。１つ以上の実現化例では、各デバイスはイベントリスナをサーバ１０３に登録してもよく、サーバ１０３は、登録されたイベントリスナを呼び出すことによって、登録されたデバイスに通知してもよい。１つ以上の実現化例では、各アプリケーションは、ＡＰＩ２０２を周期的に呼び出して、ストレージ１０４に格納された状態オブジェクトを更新してもよい。
【００２８】
前述のように、ＡＰＩ２０２へのアクセスは、ユーザアカウント１０５での認証、またはユーザアカウント１０５との関連付けに基づいていてもよい。この点に関し、ストレージ１０４に格納された状態オブジェクト２０６の転送は、ユーザアカウント１０５に検証可能に関連付けられ得るデバイス１０１、１０２だけが利用できるようにされてもよい。たとえば、デバイス１０１でのユーザアカウント１０５でのユーザ認証の際、デバイス１０１は、状態オブジェクト２０６を、ストレージ１０４での格納のためにサーバ１０３に提供してもよい。デバイス１０２でのユーザアカウント１０５でのユーザ認証の際、デバイス１０２は、ユーザアカウント１０５にリンクされたすべてのデバイスから、デバイス１０１によって提供された状態オブジェクト２０６を含む状態オブジェクトを要求して受信してもよい。同様に、情報がいったんストレージ１０４に格納または更新されると、サーバ１０３はＡＰＩ２０２を介して、たとえば第２のコンピューティングデバイス１０２上で動作しているアプリケーションの第２のインスタンス２０８に、状態オブジェクト２０６を提供してもよい。
【００２９】
図示された例では、第１のコンピューティングデバイス１０１上で動作しているアプリケーションの第１のインスタンス２０４に対応する状態オブジェクト２０６が、サーバ１０３によってデバイス１０１から受信される。デバイス１０１は、たとえばＡＰＩ２０２にアクセスして状態オブジェクト２０をアップロードしてもよい。状態オブジェクト２０６のアップロードは、状態オブジェクトに対応するアプリケーションの起動時に、またはデバイス１０１の起動時に、たとえばユーザアカウント１０５でのアプリケーションまたはデバイス１０１の認証の際に起こってもよい。状態オブジェクト２０６は次に、アプリケーションまたはデバイスの１０１の動作中に、サーバ１０３に周期的に更新されてもよい。
【００３０】
サーバ１０３は、コンピューティングデバイス１０１に関連付けられたデバイス状態情報についての要求をコンピューティングデバイス１０２から受信する。当該要求は一般に、ユーザアカウント１０５にリンクされたすべてのデバイスについてのデバイス状態情報、または、コンピューティングデバイス１０１に対応するデバイス状態情報に向けられてもよい。当該要求に応答して、サーバは、たとえばコンピューティングデバイス１０１上で動作しているアプリケーションの一覧２１０を含む要求された情報を、コンピューティングデバイス１０２に提供する。一覧２１０は次に、デバイス１０２によって提供されたインターフェイス１０８ｂ上に表示されてもよい。
【００３１】
サーバ１０３は次に、提供された一覧２１０の選択されたアプリケーションに対応するアプリケーション選択をデバイス１０２から受信してもよい。アプリケーション選択の受信に応答して、サーバ１０３はストレージ１０４にアクセスし、（デバイス１０１によって提供された）状態オブジェクト２０６を検索し、状態オブジェクト２０６をデバイス１０２に提供してもよい。デバイス１０２は次に、受信された状態オブジェクト２０６に基づいて、選択されたアプリケーションの第２のローカルインスタンス２０８を開いてもよい。この点に関し、第２のインスタンス２０８は、１つ以上の遠隔コンピューティングデバイスのうちのそれぞれの遠隔コンピューティングデバイス上で現在動作しているかもしれない第１のインスタンス２０４と同一である、アプリケーションの設定および状態を含んでいてもよい。
【００３２】
１つ以上の実現化例では、サーバ１０３は、デバイスから、当該デバイス上で動作しているアプリケーションの遠隔インスタンスを異なるデバイス上で開く指示を受信してもよく、遠隔インスタンスは、現在のインスタンスと同一の設定および状態を有する。たとえば、サーバ１０３は、デバイス１０１から、デバイス１０１上の第１のインスタンス２０４からの状態オブジェクト２０６に基づいて、デバイス１０２上の第２のインスタンス２０８を開く要求を受信してもよい。この点に関し、デバイス１０１を操作しているユーザ１０６は、状態オブジェクト２０６をデバイス１０２に転送し、遠隔インスタンスの生成を始動してもよい。当該要求は、ユーザインターフェイス１０８ａでユーザジェスチャーによって始動されてもよい。たとえば、ユーザ１０６は、状態オブジェクト２０６に対応するアプリケーションの表現を、デバイス１０２の表現までドラッグしてもよい。
【００３３】
サーバ１０３は、コンピューティングデバイス１０１から、状態オブジェクト２０６とコンピューティングデバイス１０２の識別情報とを受信してもよい。状態オブジェクト２０６は次に、デバイス１０２の受信された識別情報と、デバイス１０２についての予め定められた登録情報とに基づいて、コンピューティングデバイス１０２に送信されてもよい。たとえば、サーバ１０３は、デバイスの登録時に構成オプションを提供してもよく、ユーザは、登録中のデバイス上でどんなタイプのアプリケーションが転送され、および／または自動的に開かれ得るかを選択してもよい。１つ以上の実現化例では、サーバ１０３は、デバイス識別情報なしで状態オブジェクト２０６を受信し、動作可能に接続された次のデバイスに状態オブジェクト２０６が送出され得る（たとえば、次のデバイスがユーザアカウント１０５で認証されるとき）まで状態オブジェクト２０６を保持してもよい。加えて、またはこれに代えて、サーバ１０３は、識別されたデバイスが次回、サーバ１０３に動作可能に接続されるまで、状態オブジェクト２０６を保持してもよい。
【００３４】
図３は、本技術の一局面に従った、デバイス間でアプリケーション状態を転送する際に使用される例示的なユーザインターフェイス１０８を示す。ユーザインターフェイス１０８は、クライアントコンピューティングデバイス１０１、１０２のディスプレイスクリーン３０２上に表示されてもよい。ディスプレイスクリーン３０２は、スクリーンの表面との接触、およびタッチ関連ジェスチャーを通して入力を受け付けるなどのために、タッチセンサ式であってもよい。ディスプレイスクリーン３０２は、１つ以上のアプリケーションおよび／またはアプリケーション特徴の実行、管理、および／または操作のための多くのアイコン、仮想ボタン、および他の制御機構を表示してもよい。
【００３５】
ユーザインターフェイス１０８は、たとえば（たとえば仮想デスクトップとしての）オペレーティングシステムの、もしくは、ウェブブラウザ３０８またはソーシャルネットワークアプリケーションなどのアプリケーションのための、マスターインターフェイス３０２と一体化されるか、またはマスターインターフェイス３０２からアクセスされてもよい。この点に関し、ユーザインターフェイス１０８は、起動されると、たとえば１つ以上のアプリケーションまたはアプリケーション特徴を含む仮想デスクトップの上に、仮想デスクトップに少なくとも部分的に重複して表示されてもよい。いくつかの局面では、ユーザインターフェイス１０８は浮いていてもよく、ユーザによって位置を変えられてもよい。ユーザインターフェイス１０８は、たとえば、オペレーティングシステムによって提供され、または関連付けられたアプリケーション内に埋め込まれた命令（たとえば、ウェブページ内に埋め込まれたスクリプト言語）によって生成されてもよい。
【００３６】
ユーザインターフェイス１０８は、たとえば、ディスプレイスクリーン３０２によって表示された仮想デスクトップ上で行なわれるユーザジェスチャー３０４によってアクセスされてもよい。たとえば、ユーザジェスチャー３０４は、アクションボタンを押し下げたまま、マウスなどのポインタデバイスによって行なわれるドラッグアクション、もしくは、１本または複数（たとえば２本、３本、４本またはそれ以上）の指のスワイプ、ピンチアクション、またはピンチアウトアクションなどのタッチ関連ジェスチャー、もしくは、ユーザインターフェイス１０８を起動するようデバイスに合図する他の予め定められたジェスチャーであってもよい。ユーザジェスチャー３０４は、ｘ１からｘ２までの２点間での予め定められたパターンの連続スワイプであってもよい。１つ以上の実現化例では、ユーザインターフェイス１０８は、たとえばディスプレイスクリーン３０２の仮想デスクトップ上に表示されたユーザインターフェイス１０８に対応するアイコンまたは他の表現３０６を起動する（たとえば、クリックするかまたはタップする）ことによって起動されてもよい。
【００３７】
ユーザインターフェイス１０８は、起動されると、ユーザアカウント１０５にリンクされたデバイスの一覧３０８を表示してもよい。一覧３０８は、たとえば、サーバ１０３によって提供されたデバイス情報に基づいて判断されてもよい。たとえば、ユーザインターフェイス１０８が起動されると、ユーザインターフェイス１０８はデバイス情報についての要求をサーバ１０３に送信してもよく、サーバ１０３は、一覧３０８を含むデバイス情報をユーザインターフェイス１０８に返してもよい。この点に関し、一覧３０８のデバイスは、以前にユーザアカウント１０５に登録されたデバイスに限定されてもよい。一覧３０８がいったん表示されると、ユーザは、一覧３０８から１つ以上のデバイス（たとえば図３の「デバイス２」）を選択して、選択されたデバイス上で動作しているアプリケーションを見てもよい。選択に応答して、選択されたコンピューティングデバイス上で動作しているアプリケーションのアプリケーション一覧３１０を、ユーザインターフェイス１０８は要求してもよく、サーバ１０３は提供してもよい。
【００３８】
デバイス１０１、１０２は、アプリケーション一覧３１０を受信し、ユーザインターフェイス１０８上に表示する。アプリケーション一覧３１０は、選択されたデバイス（たとえば「デバイス２」）上で動作している各アプリケーション用のアイコン（たとえば、図３の「アプリ１」〜「アプリ９」）などの表現を含んでいてもよい。一覧３１０のアプリケーションは、たとえばアプリケーションをホストする対応する登録されたデバイスのために、以前にユーザアカウント１０５に登録されたアプリケーションに限定されてもよい。一覧３１０がいったん表示されると、ユーザは、サーバ１０３から状態情報を受信する１つ以上のアプリケーションを一覧３１０から選択してもよい。選択に応答して、選択されたアプリケーションに対応する状態オブジェクト２０６を、ユーザインターフェイス１０８は要求してもよく、サーバ１０３はデバイスに提供してもよい。状態オブジェクト２０６が受信されると、デバイスは、受信された状態オブジェクトに基づいて、選択されたアプリケーションのローカルインスタンスを開いてもよい。この点に関し、ローカルインスタンスは、選択されたデバイス（たとえば「デバイス２」）上で現在動作している選択されたアプリケーションの遠隔インスタンスと同一である、アプリケーションの設定および状態を備える。
【００３９】
図３は、一覧３０８を表示後、選択されたデバイスについての一覧３１０を表示することを表しているが、たとえば最初にデバイスを選択することなく、すべてのデバイスについてのアプリケーション、またはすべてのデバイスについてのアプリケーションの部分集合が、インターフェイス１０８上にともに表示されてもよい。たとえば、ユーザインターフェイス１０８を起動する際、サーバ１０３は、ユーザアカウント１０５に登録されたすべてのデバイスについてのすべてのアプリケーションを提供してもよい。一覧３０８は、（ここではすべてのアプリケーションを含む）一覧３１０とともに表示されてもよく、一覧３１０におけるアプリケーションの部分集合を表示するために、デバイスが選択または選択解除されてもよい。
【００４０】
加えて、またはこれに代えて、ユーザインターフェイス１０８は、ユーザインターフェイス１０８と同じデバイス上で動作している１つ以上のアプリケーションを表示してもよい。ユーザは、アプリケーションのローカルインスタンスの表現を、たとえば一覧３０８に表示されたデバイスのうちの１つまでドラッグして、ローカルインスタンスについての状態オブジェクト２０６が選択されたデバイスに送信されるようにしてもよい。アプリケーションがローカルにアクティブなインスタンスを有していない場合、サーバ１０３は、以前に格納された状態オブジェクト２０６を選択されたデバイスに送信してもよい。
【００４１】
前述のように、選択されたアプリケーションのローカルインスタンスは、サーバ１０３から受信された状態オブジェクト２０６に基づいて開かれてもよく、ローカルインスタンスは、選択されたアプリケーションの遠隔インスタンスと同一である、アプリケーションの設定および状態を有する。一例では、選択されたアプリケーションはウェブブラウザであってもよく、ウェブブラウザの遠隔インスタンスは、たとえばモバイルデバイス上で動作している。受信された状態オブジェクト２０６は、ウェブブラウザの遠隔インスタンスのウェブ閲覧履歴、および／または、ウェブブラウザの遠隔インスタンスによって現在開かれている少なくとも１つのウェブページを含んでいてもよい。ウェブブラウザのローカルインスタンスは次に、遠隔インスタンスにおいてユーザによって最後に見られたウェブページ内の位置でウェブページを見るために、自動的に開いてもよい。加えて、またはこれに代えて、ローカルインスタンスは、遠隔インスタンスのウェブ閲覧履歴に従ったウェブページのナビゲーションを可能にするように自動的に構成されてもよい。たとえば、ウェブブラウザがいったん開かれると、ユーザは「戻る」ボタンを選択して、ウェブブラウザの遠隔インスタンスにおいて見られたウェブページの履歴を遡ってナビゲートしてもよい。
【００４２】
図４は、本技術の局面に従った、デバイス間でアプリケーション状態を転送するための例示的なプロセス４００のフロー図を示す。説明の目的のために、例示的なプロセス４００は、図１、図２、および図３のコンポーネントを参照してここに説明される。また、説明の目的のために、例示的なプロセス４００のブロックは、連続してまたは直線的に生じるとしてここに説明される。しかしながら、例示的なプロセス４００の複数のブロックは並行して生じてもよい。加えて、例示的なプロセス４００のブロックは図示された順序で行なわれなくてもよく、および／または、例示的なプロセス４００のブロックのうちの１つ以上は行なわれなくてもよい。
【００４３】
図示された例示的なフロー図では、サーバ１０３は、第１のコンピューティングデバイス１０１および第２のコンピューティングデバイス１０２を含む複数のデバイスをユーザアカウント１０５に登録する（４０２）。第１のコンピューティングデバイス１０１および／または第２のコンピューティングデバイスは、たとえば、スマートフォン、またはノートブック、タブレットなどのモバイルデバイス、またはデスクトップコンピュータであってもよい。デバイスの登録が図示されているが、サーバ１０３は、登録されたアプリケーションが、ユーザアカウント１０５に登録されたすべてのデバイス（またはデバイスの部分集合）間で更新され得るように、アプリケーションを個々にまたはグループでユーザアカウント１０５に登録してもよい。アプリケーションおよび／またはデバイスがいったんユーザアカウント１０５に登録されると、当該アプリケーションおよび／またはデバイスは、ユーザアカウント１０５に関連して状態オブジェクト２０６を格納してもよい。
【００４４】
サーバ１０３は、たとえば第１のコンピューティングデバイス１０１から、デバイス１０１上で動作しているアプリケーションに対応する１つ以上の状態オブジェクト２０６を受信する（４０４）。前述のように、状態オブジェクト２０６は、アプリケーションのインスタンスがデバイス上で始まると格納されてもよく、たとえば周期的な間隔でサーバ１０３に更新されてもよい。１つ以上の実現化例では、デバイスのユーザは、状態オブジェクトがサーバ１０３に提供されるアプリケーションを登録するオプションを有する。たとえば、ユーザはインターフェイス１０８を開いて、ユーザアカウント１０５に登録するためのデバイス上の１つ以上のアプリケーションを選択してもよい。ユーザはまた、いつでもアプリケーションを登録解除するオプションを有する。
【００４５】
サーバ１０３は、たとえばデバイス１０２から、ユーザアカウント１０５に登録されたデバイスのデバイス一覧３０８についての要求を受信し（４０６）、デバイス一覧についての要求に応答して、サーバ１０３は、デバイス一覧３０８をデバイス１０２に提供する（４０８）。当該要求は、ユーザインターフェイス１０８ｂから受信され、ＡＰＩ２０２を介してサーバ１０３に提供されてもよい。デバイス一覧３０８についての要求は、ユーザによるアクションに応答して提供されてもよく、または、ユーザインターフェイスがインスタンス化されるとユーザインターフェイス１０８によって自動的に作られてもよい。１つ以上の実現化例では、ユーザインターフェイス１０８は、サーバ１０３を周期的にポーリングして新規デバイスが登録されたかどうか判断し、それに応じて一覧３０８を更新してもよい。
【００４６】
サーバ１０３は、デバイス１０１に関連付けられた、アプリケーションのアプリケーション一覧３１０を含むデバイス状態情報についての要求を受信する（４１０）。図示された例では、デバイス状態情報についての要求は、デバイス１０１を、デバイス一覧３０８から選択されたものとして識別する。デバイス状態情報についての要求に応答して、サーバ１０３は、デバイス１０１上で動作しているアプリケーションのアプリケーション一覧３１０を含む、デバイス１０１についてのデバイス状態情報を、デバイス１０２に提供する（４１２）。さまざまな局面によれば、デバイス１０２（要求しているデバイス）は、サーバ１０３がデバイス状態情報（および／またはデバイス一覧）をデバイス１０２に提供する前に、ユーザアカウント１０５で認証されるよう要求される。加えて、デバイス状態情報についての要求は、要求しているデバイス上のユーザインターフェイス１０８から受信されてもよく、デバイス状態情報は、要求しているデバイス上のユーザインターフェイス１０８に提供されてもよい。ユーザインターフェイス１０８は、さまざまな実現化例によれば、ユーザアカウント１０５とリンクされており、ユーザがデバイス１０２をユーザアカウント１０５で認証させるための機構を提供してもよい。サーバ１０３は、認可されると、アプリケーション一覧３１０の表示のために、デバイス状態情報をユーザインターフェイス１０８に提供する。
【００４７】
サーバ１０３は次に、デバイス１０２から、提供された一覧３１０の選択されたアプリケーションに対応する（たとえば、ユーザによって行なわれた）アプリケーション選択を受信し（４１４）、アプリケーション選択の受信に応答して、サーバ１０３は、選択されたアプリケーションに対応する状態オブジェクト２０６をデバイス１０２に提供する（４１６）。前述のように、状態オブジェクト２０６は、遠隔インスタンスから受信された状態オブジェクトに基づいて、選択されたアプリケーションのローカルインスタンスを開くために提供される。新規のローカルインスタンスは、デバイス１０１を含む、ユーザアカウント１０５に登録された１つ以上の遠隔コンピューティングデバイスのうちのそれぞれの遠隔コンピューティングデバイス上で現在動作している、または動作していた、選択されたアプリケーションの遠隔インスタンスと同一である、アプリケーションの設定および状態を含んでいてもよい。いくつかの局面では、状態オブジェクトはまた、同じデバイス上で以前に動作していたアプリケーションのインスタンスによって以前に受信され格納されたものであってもよい。
【００４８】
加えて、ユーザは、たとえば遠隔デバイスがユーザによって次に使用されるときに、遠隔デバイス上で対応するアプリケーションのインスタンスを自動的に（たとえば、ユーザによるさらなるアクションなしで）開くために、ユーザインターフェイス１０８を使用して状態オブジェクト２０６を遠隔デバイスに転送してもよい。この点に関し、（ユーザインターフェイス１０８での選択されたアプリケーションに対応する）状態オブジェクト２０６は、たとえばデバイス１０１からサーバ１０３によって受信されて、デバイス１０２上で動作している遠隔アプリケーションの指示とともにデバイス１０２に提供される。この指示は、当該アプリケーションの遠隔インスタンスを、状態オブジェクトによって提供される状態で実行するためのものである。デバイス１０２は指示を受信し、受信された状態オブジェクトからの情報を使用して対応するアプリケーションを開く。デバイス１０２（またはインターフェイス１０８ｂ）は、アプリケーションを開く前に、最初にユーザ確認を要求してもよい。
【００４９】
上述の例示的なプロセス４００における特徴の多く、および関連アプリケーションは、コンピュータ読取可能記憶媒体（コンピュータ読取可能媒体とも呼ばれる）に記録された一組の命令として特定されるソフトウェアプロセスとして実現されてもよい。これらの命令が１つ以上の処理部（たとえば、１つ以上のプロセッサ、プロセッサのコア、または他の処理部）によって実行されると、それらは処理部に、命令で指示されたアクションを行なわせる。コンピュータ読取可能媒体の例は、ＣＤ−ＲＯＭ、フラッシュドライブ、ＲＡＭチップ、ハードドライブ、ＥＰＲＯＭなどを含むものの、それらに限定されない。コンピュータ読取可能媒体は、単独では、無線でまたは有線接続を通して進む搬送波および電子信号を含まない。
【００５０】
「ソフトウェア」という用語は、適切な場合、プロセッサによる処理のためにメモリに読込まれ得る、読出専用メモリに常駐するファームウェア、または磁気ストレージに格納されたアプリケーションを含むよう意図されている。また、いくつかの実現化例では、本開示の複数のソフトウェア局面は、本開示の別個のソフトウェア局面を残しつつ、より大きいプログラムの下位部分として実現され得る。いくつかの実現化例では、複数のソフトウェア局面はまた、別々のプログラムとして実現され得る。最後に、ここに説明されたソフトウェア局面をともに実現する別々のプログラムの任意の組合せは、本開示の範囲内にある。いくつかの実現化例では、ソフトウエアプログラムは、１つ以上の電子システム上で動作するためにインストールされた場合、ソフトウエアプログラムの動作を実行して行なう１つ以上の特定の機械実現化例を規定する。
【００５１】
コンピュータプログラム（プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても公知）は、コンパイラ型またはインタープリタ型言語、宣言型または手続き型言語を含む任意の形態のプログラミング言語で書くことができ、それは、スタンドアロンプログラムとしての、もしくは、コンピュータ環境での使用に好適なモジュール、コンポーネント、サブルーチン、オブジェクト、または他のユニットとしての形態を含む任意の形態でデプロイメントされ得る。コンピュータプログラムは、ファイルシステムにおけるファイルに対応してもよいが、対応しなくてもよい。プログラムは、他のプログラムまたはデータ（たとえば、マークアップ言語文書に格納された１つ以上のスクリプト）を保持するファイルの一部、対象プログラム専用の単一のファイル、もしくは、連係された複数のファイル（たとえば、１つ以上のモジュール、サブプログラム、またはコードの部分を格納するファイル）に格納され得る。コンピュータプログラムは、１つのコンピュータ上で、もしくは、１ヶ所に位置するかまたは複数箇所に分散されて通信ネットワークによって相互接続された複数のコンピュータ上で実行されるようにデプロイメントされ得る。
【００５２】
図５は、本技術の１つ以上の局面に従った、デバイス間でのアプリケーション状態の転送に関連して使用される例示的な電子システム５００を示す図である。電子システム５００は、コンピューティングデバイス１００の動作に関連付けられたソフトウェア、もしくは、プロセス４００の１つ以上の部分またはステップ、もしくは、図１〜４によって提供されたコンポーネントおよびプロセスの実行のためのコンピューティングデバイスであってもよい。さまざまな実現化例では、電子システム５００は、第１のコンピューティングデバイス１０１または第２のコンピューティングデバイス１０２、またはサーバ１０３を代表していてもよい。この点に関し、電子システム５００は、１つ以上のプロセッサが内蔵されるかまたは結合された、パーソナルコンピュータ、もしくは、タブレットコンピュータ、ラップトップ、スマートフォン、ＰＤＡなどのモバイルデバイス、もしくは、他のタッチスクリーンまたはテレビ、もしくは、無線接続性を有する任意の他の種類のコンピュータ関連電子デバイスであってもよい。
【００５３】
電子システム５００は、さまざまなタイプのコンピュータ読取可能媒体と、さまざまな他のタイプのコンピュータ読取可能媒体用のインターフェイスとを含んでいてもよい。図示された例では、電子システム５００は、バス５０８と、処理部５１２と、システムメモリ５０４と、読出専用メモリ（read-only memory：ＲＯＭ）５１０と、永続記憶装置５０２と、入力デバイスインターフェイス５１４と、出力デバイスインターフェイス５０６と、１つ以上のネットワークインターフェイス５１６とを含む。いくつかの実現化例では、電子システム５００は、前述のさまざまなコンポーネントおよびプロセスの動作のための他のコンピューティングデバイスまたは回路を含んでいてもよく、もしくは、それらと一体化されてもよい。
【００５４】
バス５０８は、電子システム５００の多くの内部デバイスを通信可能に接続するすべてのシステムバス、周辺バス、およびチップセットバスをまとめて表わす。たとえば、バス５０８は、処理部５１２を、ＲＯＭ５１０、システムメモリ５０４、および永続記憶装置５０２と通信可能に接続する。
【００５５】
これらのさまざまなメモリユニットから、処理部５１２は、本開示のプロセスを実行するために、実行するべき命令および処理するべきデータを検索する。異なる実現化例では、処理部は、シングルプロセッサまたはマルチコアプロセッサであり得る。
【００５６】
ＲＯＭ５１０は、処理部５１２および電子システムの他のモジュールによって必要とされる静的データおよび命令を格納する。一方、永続記憶装置５０２は、読出および書込メモリデバイスである。このデバイスは、電子システム５００がオフであっても命令およびデータを格納する不揮発性メモリユニットである。本開示のいくつかの実現化例は、（磁気または光ディスクおよびその対応するディスクドライブなどの）大容量記憶装置を、永続記憶装置５０２として使用する。
【００５７】
他の実現化例は、（フロッピー（登録商標）ディスク、フラッシュドライブ、およびその対応するディスクドライブなどの）リムーバブル記憶装置を、永続記憶装置５０２として使用する。永続記憶装置５０２と同様に、システムメモリ５０４は読出および書込メモリデバイスである。しかしながら、記憶装置５０２とは異なり、システムメモリ５０４は、ランダムアクセスメモリなどの揮発性読出および書込メモリである。システムメモリ５０４は、プロセッサが実行時に必要とする命令およびデータの一部を格納する。いくつかの実現化例では、本開示のプロセスは、システムメモリ５０４、永続記憶装置５０２、および／またはＲＯＭ５１０に格納される。これらのさまざまなメモリユニットから、処理部５１２は、いくつかの実現化例のプロセスを実行するために、実行するべき命令および処理するべきデータを検索する。
【００５８】
バス５０８はまた、入力デバイスインターフェイス５１４および出力デバイスインターフェイス５０６に接続する。入力デバイスインターフェイス５１４は、ユーザが情報を通信し、電子システムへのコマンドを選択することを可能にする。入力デバイスインターフェイス５１４とともに使用される入力デバイスは、たとえば、英数字キーボードおよびポインティングデバイス（「カーソル制御デバイス」とも呼ばれる）を含む。出力デバイスインターフェイス５０６は、たとえば、電子システム５００によって生成された画像の表示を可能にする。出力デバイスインターフェイス５０６とともに使用される出力デバイスは、たとえば、プリンタおよび表示装置、たとえば陰極線管（cathode ray tube：ＣＲＴ）または液晶ディスプレイ（liquid crystal display：ＬＣＤ）などを含む。いくつかの実現化例は、入力かつ出力デバイスとして機能するタッチスクリーンなどのデバイスを含む。
【００５９】
最後に、図５に示すように、バス５０８はまた、ネットワークインターフェイス５１６を通して電子システム５００をネットワーク（図示せず）に結合する。ネットワークインターフェイス５１６は、たとえば、無線アクセスポイント（たとえば、ブルートゥース（登録商標）またはＷｉＦｉ）、もしくは、無線アクセスポイントに接続するための無線回路を含んでいてもよい。ネットワークインターフェイス５１６はまた、ローカルエリアネットワーク（「ＬＡＮ」）、ワイドエリアネットワーク（「ＷＡＮ」）、無線ＬＡＮ、またはイントラネットなどのコンピュータのネットワーク、もしくは、インターネットなどのネットワークのネットワークの一部にコンピュータを接続するためのハードウェア（たとえば、イーサネット（登録商標）ハードウェア）を含んでいてもよい。電子システム５００のうちのいずれかまたはすべてのコンポーネントは、本開示に関連して使用され得る。
【００６０】
上述のこれらの機能は、コンピュータソフトウェア、ファームウェア、またはハードウェアで実現され得る。これらの手法は、１つ以上のコンピュータプログラム製品を使用して実現され得る。プログラマブルプロセッサおよびコンピュータは、モバイルデバイスに含まれ、またはモバイルデバイスとしてパッケージ化され得る。プロセスおよび論理フローは、１つ以上のプログラマブルプロセッサによって、および１つ以上のプログラマブル論理回路によって行なわれ得る。汎用および専用コンピューティングデバイスならびに記憶装置は、通信ネットワークを通して相互接続され得る。
【００６１】
いくつかの実現化例は、コンピュータプログラム命令を機械読取可能またはコンピュータ読取可能媒体（これに代えて、コンピュータ読取可能記憶媒体、機械読取可能媒体、または機械読取可能記憶媒体と呼ばれる）に格納する、マイクロプロセッサ、ストレージおよびメモリなどの電子部品を含む。そのようなコンピュータ読取可能媒体のいくつかの例は、ＲＡＭ、ＲＯＭ、読出専用コンパクトディスク（ＣＤ−ＲＯＭ）、書込可能コンパクトディスク（ＣＤ−Ｒ）、書換可能コンパクトディスク（ＣＤ−ＲＷ）、読出専用デジタル多用途ディスク（たとえば、ＤＶＤ−ＲＯＭ、２層ＤＶＤ−ＲＯＭ）、さまざまな書込可能／書換可能ＤＶＤ（たとえば、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷなど）、フラッシュメモリ（たとえば、ＳＤカード、ミニＳＤカード、マイクロＳＤカードなど）、磁気および／またはソリッドステートハードドライブ、読出専用および書込可能ブルーレイ（登録商標）ディスク、超密度光ディスク、任意の他の光学媒体または磁気媒体、およびフロッピーディスクを含む。コンピュータ読取可能媒体は、少なくとも１つの処理部によって実行可能であって、さまざま動作を行なうための命令のセットを含むコンピュータプログラムを格納することができる。コンピュータプログラムまたはコンピュータコードの例は、コンパイラによって生成されるような機械コード、および、インタープリタを使用してコンピュータ、電子部品、またはマイクロプロセッサによって実行される、より高いレベルのコードを含むファイルを含む。
【００６２】
上述の説明は、ソフトウェアを実行するマイクロプロセッサまたはマルチコアプロセッサを主に指しているが、いくつかの実現化例は、特定用途向け集積回路（application specific integrated circuit：ＡＳＩＣ）またはフィールドプログラマブルゲートアレイ（field programmable gate array：ＦＰＧＡ）などの１つ以上の集積回路によって行なわれる。いくつかの実現化例では、そのような集積回路は、回路自体の上に格納された命令を実行する。
【００６３】
この明細書およびこの出願の任意の請求項で使用されるように、「コンピュータ」、「サーバ」、「プロセッサ」、および「メモリ」という用語はすべて、電子デバイスまたは他の技術的デバイスを指す。これらの用語は、人々、または人々のグループを除外する。明細書の目的のために、「表示」または「表示する」という用語は、電子デバイス上に表示することを意味する。この明細書およびこの出願の任意の請求項で使用されるように、「コンピュータ読取可能媒体」という用語はもっぱら、コンピュータによって読取可能な形態で情報を格納する有形の物理的対象に限定される。これらの用語は、任意の無線信号、有線ダウンロード信号、および任意の他の一時的信号を除外する。
【００６４】
ユーザとのやりとりを提供するために、この明細書に説明された主題の実現化例は、情報をユーザに表示するための表示装置、たとえばＣＲＴ（陰極線管）またはＬＣＤ（液晶ディスプレイ）モニタと、ユーザがコンピュータに入力を提供できるようにするためのキーボードおよびポインティングデバイス、たとえばマウスまたはトラックボールとを有するコンピュータ上で実現され得る。ユーザとのやりとりを提供するために、他の種類のデバイスも使用され得る。たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば視覚フィードバック、聴覚フィードバック、または触覚フィードバックであり得る。また、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形態で受信され得る。加えて、コンピュータは、ユーザによって使用されているデバイスに文書を送信し、当該デバイスから文書を受信することによって、たとえば、ユーザのクライアントデバイス上のウェブブラウザから受信された要求に応答して、当該ウェブブラウザにウェブページを送信することによって、ユーザとやりとりできる。
【００６５】
この明細書に説明された主題の実施形態は、たとえばデータサーバなどのバックエンドコンポーネント、もしくは、たとえばアプリケーションサーバなどのミドルウェアコンポーネント、もしくは、たとえばユーザがこの明細書に説明された主題の実現化例とやりとりできるようにするグラフィカルユーザインターフェイスまたはウェブブラウザを有するクライアントコンピュータなどのフロントエンドコンポーネント、もしくは、１つ以上のそのようなバックエンドコンポーネント、ミドルウェアコンポーネント、またはフロントエンドコンポーネントの任意の組合せを含む、コンピューティングシステムにおいて実現され得る。当該システムのコンポーネントは、たとえば通信ネットワークなどの任意の形態または媒体のデジタルデータ通信によって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク（「ＬＡＮ」）およびワイドエリアネットワーク（「ＷＡＮ」）、インターネットワーク（たとえばインターネット）、および、ピアツーピア・ネットワーク（たとえばアドホック・ピアツーピア・ネットワーク）を含む。
【００６６】
コンピューティングシステムは、クライアントとサーバとを含み得る。クライアントとサーバとは一般に互いから離れており、典型的には通信ネットワークを通してやりとりする。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されて互いにクライアントサーバ関係を有するコンピュータプログラムによって生じる。いくつかの実施形態では、サーバは、（たとえば、クライアントデバイスとやりとりしているユーザにデータを表示し、当該ユーザからユーザ入力を受信する目的のために）データ（たとえばＨＴＭＬページ）をクライアントデバイスに送信する。クライアントデバイスで生成されたデータ（たとえば、ユーザとのやりとりの結果）が、クライアントデバイスからサーバで受信され得る。
【００６７】
当業者であれば、ここに説明されたさまざまな例示的なブロック、モジュール、要素、コンポーネント、方法、およびアルゴリズムが、電子ハードウェア、コンピュータソフトウェア、またはそれらの組合せとして実現されてもよい、ということを理解するであろう。ハードウェアおよびソフトウェアのこの互換性を例示するために、さまざまな例示的なブロック、モジュール、要素、コンポーネント、方法、およびアルゴリズムが、一般にそれらの機能性に関して上に説明されてきた。そのような機能性がハードウェアとして実現されるか、またはソフトウェアとして実現されるかは、特定のアプリケーションと、システム全体に課された設計制約とに依存する。当業者は、説明された機能性を、特定のアプリケーションごとにさまざまなやり方で実現してもよい。さまざまなコンポーネントおよびブロックは、本技術の範囲からまったく逸脱することなく、異なるように配置されてもよい（たとえば、異なる順序で配置されるか、または異なるやり方で分割されてもよい）。
【００６８】
開示されたプロセスにおけるステップの特定の順序または階層構造は、例示的なアプローチの実例である、ということが理解される。設計の好みに基づいて、プロセスにおけるステップの特定の順序または階層構造が並べ替えられてもよいということが理解される。ステップのうちのいくつかは、同時に行なわれてもよい。添付の方法請求項は、さまざまなステップの要素をサンプル順序で提示しており、提示された特定の順序または階層構造に限定されるよう意図されてはいない。
【００６９】
前述の説明は、どの当業者もここに説明されたさまざまな局面を実践できるようにするために提供される。前述の説明は本技術のさまざまな例を提供しており、本技術はこれらの例に限定されない。これらの局面へのさまざまな変更は当業者には容易に明らかになり、ここに規定された一般原理は他の局面に適用されてもよい。このため、請求項は、ここに示された局面に限定されるよう意図されてはおらず、請求項の文言と一致する全範囲が与えられるべきである。ここで、単数形の要素の言及は、特にそう明記されていない限り「たった１つ」を意味するよう意図されてはおらず、むしろ「１つ以上」を意味するよう意図されている。特に明記されない限り、「いくつかの」という用語は１つ以上を指す。男性代名詞（たとえば、「彼の」）は、女性および中性（たとえば、「彼女の」および「その」）を含み、逆もまた同様である。見出しおよび小見出しがある場合、それらは単に便宜上使用され、発明を限定しない。
【００７０】
「ウェブサイト」という用語は、ここに使用されるように、１つ以上のウェブページ、ウェブ関連コンテンツをホストまたは格納するために使用される１つ以上のサーバなどを含む、ウェブサイトの任意の局面を含んでいてもよい。したがって、「ウェブサイト」という用語は、「ウェブページ」および「サーバ」という用語と交換可能に使用されてもよい。「〜するように構成された」、「〜するように動作可能である」、および「〜するようにプログラミングされた」という述語の単語は、主語の特定の有形または無形の変更を何ら意味しておらず、むしろ、交換可能に使用されるよう意図されている。たとえば、動作またはコンポーネントを監視し制御するように構成されたプロセッサは、プロセッサが動作を監視し制御するようにプログラミングされていること、または、プロセッサが動作を監視し制御するように動作可能であることも意味していてもよい。同様に、コードを実行するように構成されたプロセッサは、プロセッサがコードを実行するようにプログラミングされている、またはコードを実行するように動作可能であるとして解釈され得る。
【００７１】
「局面」などの言葉は、そのような局面が本技術にとって不可欠であること、または、そのような局面が本技術の全構成に当てはまることを意味しない。ある局面に関する開示は、全構成または１つ以上の構成に当てはまってもよい。局面は、１つ以上の例を提供してもよい。「局面」などの言葉は、１つ以上の局面を指してもよく、逆もまた同様である。「実施形態」などの言葉は、そのような実施形態が本技術にとって不可欠であること、または、そのような実施形態が本技術の全構成に当てはまることを意味しない。ある実施形態に関する開示は、全実施形態または１つ以上の実施形態に当てはまってもよい。実施形態は、１つ以上の例を提供してもよい。「実施形態」などの言葉は、１つ以上の実施形態を指してもよく、逆もまた同様である。「構成」などの言葉は、そのような構成が本技術にとって不可欠であること、または、そのような構成が本技術の全構成に当てはまることを意味しない。ある構成に関する開示は、全構成または１つ以上の構成に当てはまってもよい。構成は、１つ以上の例を提供してもよい。「構成」などの言葉は、１つ以上の構成を指してもよく、逆もまた同様である。
【００７２】
「例」という単語は「例または実例として機能する」ことを意味するために、ここに使用される。「例」としてここに説明されたどの局面または設計も、他の局面または設計よりも好ましい、もしくは有利である、とは必ずしも解釈されない。
【００７３】
当業者には公知である、または後に公知になる、この開示全体にわたって説明されたさまざまな局面の要素とのすべての構造的および機能的均等物は、ここに引用により明確に援用されており、請求項によって包含されるよう意図されている。また、ここに開示されたことは何も、そのような開示が請求項に明確に記載されているかどうかにかかわらず、一般の人々に捧げられるよう意図されてはいない。請求項のどの要素も、要素が「〜するための手段」という言葉を使用して明確に記載されない限り、または、方法請求項の場合、要素が「〜するためのステップ」という言葉を使用して記載されない限り、米国特許法第１１２条第６段落の規定により解釈されるべきである。さらに、「含む」、「有する」などの用語が説明または請求項で使用される限りでは、そのような用語は、「備える」という用語と同様の態様で包括的であるよう意図されている。なぜなら、「備える」は、請求項で採用される場合、移行語として解釈されるためである。
【図１】
0006649403.tif 000002
【図２】
0006649403.tif 000003
【図３】
0006649403.tif 000004
【図４】
0006649403.tif 000005
【図５】
0006649403.tif 000006