(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-30
(45)【発行日】2023-09-07
(54)【発明の名称】デバイス間でのアプリケーション状態の転送
(51)【国際特許分類】
G06F 9/52 20060101AFI20230831BHJP
【FI】
G06F9/52 150B
【外国語出願】
(21)【出願番号】P 2020005294
(22)【出願日】2020-01-16
(62)【分割の表示】P 2017556700の分割
【原出願日】2016-06-30
【審査請求日】2020-02-13
【審判番号】
【審判請求日】2022-09-21
(32)【優先日】2015-08-17
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ゴールドスミス,ベンジャミン
(72)【発明者】
【氏名】チェン,ジェニファー・シェン-ミン
(72)【発明者】
【氏名】クッシャー,アレクサンダー・フリードリッヒ
【合議体】
【審判長】須田 勝巳
【審判官】林 毅
【審判官】中村 信也
(56)【参考文献】
【文献】特表2014-512044(JP,A)
【文献】特表2014-503861(JP,A)
【文献】米国特許出願公開第2014/0032706(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F9/52
(57)【特許請求の範囲】
【請求項1】
デバイス間でアプリケーション状態を転送するためのシステムによって実行される方法であって、
第1のコンピューティングデバイスおよび第2のコンピューティングデバイスをユーザアカウントに登録するステップと、
前記第1のコンピューティングデバイス上で動作しているウェブブラウザによって提供されるアプリケーションインターフェイスから、前記第1のコンピューティングデバイス上の前記アプリケーションインターフェイスにリンクされたユーザアカウントに登録されたデバイスのデバイス一覧についての要求を受信するステップと、
前記第1のコンピューティングデバイス上の前記アプリケーションインターフェイスに、前記デバイス一覧についての前記要求に応じて、前記第2のコンピューティングデバイスの識別情報を含む前記デバイス一覧を提供するステップと、
前記デバイス一覧からの前記第2のコンピューティングデバイスの選択に基づいて、前記第1のコンピューティングデバイス上の前記アプリケーションインターフェイスから、前記第1のコンピューティングデバイス上で現在動作している前記ウェブブラウザの新たなインスタンスを前記第1のコンピューティングデバイス上で現在動作している前記ウェブブラウ
ザのインスタンスの状態で前記第2のコンピューティングデバイス上で開くための指示を受信するステップと、
前記第1のコンピューティングデバイスから、前記第1のコンピューティングデバイス上で現在動作している前記ウェブブラウザの前記インスタンスに対応する状態オブジェクトを受信するステップとを備え、前記状態オブジェクトは、i)前記第1のコンピューティングデバイス上で現在動作している前記ウェブブラウザのウェブ閲覧履歴、および、ii)前記第1のコンピューティングデバイス上で現在動作している前記ウェブブラウザによって現在開かれている少なくとも1つのウェブページのうちの少なくとも1つを含み、前記方法は、さらに、
前記状態オブジェクトと、前記第2のコンピューティングデバイス上で前記新たなインスタンスを開けるための、前記第1のコンピューティングデバイスからの前記指示との受信に応じて、前記状態オブジェクトを、前記第2のコンピューティングデバイス上で前記ウェブブラウザの前記新たなインスタンスを前記状態オブジェクトによって提供される状態で前記第2のコンピューティングデバイスに実行させる指示とともに前記第2のコンピューティングデバイスに提供するステップを備える、方法。
【請求項2】
前記要求は、前記第1のコンピューティングデバイス上で動作している前記ウェブブラウザに関連付けて前記第1のコンピューティングデバイスで行われたユーザジェスチャーに基づいて生成される、請求項1に記載の方法。
【請求項3】
前記状態オブジェクトは、前記第1のコンピューティングデバイス上で現在動作している前記ウェブブラウザによって現在開かれているウェブページを識別し、前記第2のコンピューティングデバイス上で前記ウェブブラウザの前記新たなインスタンスを前記状態オブジェクトによって提供される状態で前記第2のコンピューティングデバイスに実行させることは、前記第1のコンピューティングデバイス上で動作している前記ウェブブラウザでユーザによって最後に見られていたウェブページ内の位置で前記ウェブページを自動的に開くことを含む、請求項1に記載の方法。
【請求項4】
前記状態オブジェクトは前記ウェブ閲覧履歴を含み、前記新たなインスタンスは、前記ウェブ閲覧履歴に従ったウェブページのナビゲーションを可能にするように自動的に構成され、前記ナビゲーションは、前記第1のコンピューティングデバイス上で動作している前ウェブブラウザにおいて見られたウェブページの履歴を遡ったナビゲーションを含む、請求項3に記載の方法。
【請求項5】
前記第1のコンピューティングデバイスまたは前記第2のコンピューティングデバイスは、モバイルデバイスである、請求項3に記載の方法。
【請求項6】
前記デバイス一覧を前記第1のコンピューティングデバイス上の前記アプリケーションインターフェイスに提供するステップの前に、前記第1のコンピューティングデバイスおよび前記第2のコンピューティングデバイスが前記ユーザアカウントで認証されていると判断するステップをさらに備える、請求項1に記載の方法。
【請求項7】
前記第1のコンピューティングデバイス上で動作している前記ウェブブラウザに対応する更新された状態オブジェクトが、前記第1のコンピューティングデバイスから周期的な間隔で受信される、請求項1に記載の方法。
【請求項8】
デバイス間でアプリケーション状態を転送するためのシステムであって、
1つ以上のプロセッサと、
命令が格納されたメモリ媒体とを備える、システムであって、
前記命令は、実行されると、前記1つ以上のプロセッサに、
第1のコンピューティングデバイスおよび第2のコンピューティングデバイスをユーザアカウントに登録させ、
前記第1のコンピューティングデバイス上で動作しているウェブブラウザによって提供されるアプリケーションインターフェイスから、前記第1のコンピューティングデバイス上のアプリケーションインターフェイスにリンクされたユーザアカウントに登録された複数のデバイスのデバイス一覧についての要求を受信させ、
前記第1のコンピューティングデバイス上の前記アプリケーションインターフェイスに、前記デバイス一覧についての前記要求に応じて、前記第2のコンピューティングデバイスの識別情報を含む前記デバイス一覧を提供させ、
前記デバイス一覧からの前記第2のコンピューティングデバイスの選択に基づいて、前記第1のコンピューティングデバイス上の前記アプリケーションインターフェイスから、前記第1のコンピューティングデバイス上で現在動作している前記ウェブブラウザの新たなインスタンスを前記第1のコンピューティングデバイス上で現在動作している前記ウェブブラウ
ザのインスタンスの状態で前記第2のコンピューティングデバイス上で開くための指示を受信させ、
前記第1のコンピューティングデバイスから、前記第1のコンピューティングデバイス上で現在動作している前記ウェブブラウザの前記インスタンスに対応する状態オブジェクトを受信させ、前記状態オブジェクトは、i)前記第1のコンピューティングデバイス上で現在動作している前記ウェブブラウザのウェブ閲覧履歴、および、ii)前記第1のコンピューティングデバイス上で現在動作している前記ウェブブラウザによって現在開かれている少なくとも1つのウェブページのうちの少なくとも1つを含み、前記命令は、実行されると、さらに、前記1つ以上のプロセッサに、
前記状態オブジェクトと、前記第2のコンピューティングデバイス上で前記新たなインスタンスを開けるための、前記第1のコンピューティングデバイスからの前記指示との受信に応じて、前記状態オブジェクトを、前記第2のコンピューティングデバイス上で前記ウェブブラウザの前記新たなインスタンスを前記状態オブジェクトによって提供される状態で前記第2のコンピューティングデバイスに実行させる指示とともに前記第2のコンピューティングデバイスに提供させる、システム。
【請求項9】
前記要求は、前記第1のコンピューティングデバイス上で動作している前記ウェブブラウザに関連付けて前記第1のコンピューティングデバイスで行われたユーザジェスチャーに基づいて生成される、請求項8に記載のシステム。
【請求項10】
前記状態オブジェクトは、前記第1のコンピューティングデバイス上で現在動作している前記ウェブブラウザによって現在開かれているウェブページを識別し、前記第2のコンピューティングデバイス上で前記ウェブブラウザの前記新たなインスタンスを前記状態オブジェクトによって提供される状態で前記第2のコンピューティングデバイスに実行させることは、前記第1のコンピューティングデバイス上で動作している前記ウェブブラウザでユーザによって最後に見られていたウェブページ内の位置で前記ウェブページを自動的に開くことを含む、請求項8に記載のシステム。
【請求項11】
前記状態オブジェクトは前記ウェブ閲覧履歴を含み、前記新たなインスタンスは、前記ウェブ閲覧履歴に従ったウェブページのナビゲーションを可能にするように自動的に構成され、前記ナビゲーションは、前記第1のコンピューティングデバイス上で動作している前記ウェブブラウザにおいて見られたウェブページの履歴を遡ったナビゲーションを含む、請求項10に記載のシステム。
【請求項12】
前記第1のコンピューティングデバイスまたは前記第2のコンピューティングデバイスは、モバイルデバイスである、請求項10に記載のシステム。
【請求項13】
前記命令は、実行されると、さらに、前記1つ以上のプロセッサに、
前記デバイス一覧を前記第1のコンピューティングデバイス上の前記アプリケーションインターフェイスに提供する前に、前記第1のコンピューティングデバイスおよび前記第2のコンピューティングデバイスが前記ユーザアカウントで認証されていると判断させる、請求項11に記載のシステム。
【請求項14】
前記命令は、実行されると、さらに、前記1つ以上のプロセッサに、
前記第1のコンピューティングデバイス上で動作している前記ウェブブラウザに対応する更新された状態オブジェクトを、前記第1のコンピューティングデバイスから周期的な間隔で受信させる、請求項11に記載のシステム。
【請求項15】
請求項1~7のいずれか1項に記載の方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本技術は一般に、異なるデバイス間でのアプリケーション状態の転送に関する。
【背景技術】
【0002】
背景
ユーザはしばしば、自分のアカウントに関連付けられた複数のデバイスにわたって複数のアプリケーションとやりとりする。たとえば、ユーザは、自分のモバイルデバイス上でタスク(たとえば電子メールを書くこと)を開始し、異なる活動に切り替え、次に、異なるデバイス(たとえばラップトップ)上で元のタスクを再開しようとする場合がある。他のデバイス上でのタスクの再開は、タスクを再開するために、および/またはタスクの再開に必要な情報をロードするためにプログラムをロードし、および/または実行するための追加の時間を伴い得る。場合によっては、タスクを再開するための対応するアプリケーションが利用できないかもしれない。
【発明の概要】
【課題を解決するための手段】
【0003】
概要
本技術は、デバイス間でアプリケーション状態を転送するためのシステム、およびコンピュータにより実現される方法を提供する。1つ以上の実現化例では、コンピュータにより実現される方法は、第1のコンピューティングデバイスから、第1のコンピューティングデバイス上で動作しているアプリケーションに対応する1つ以上の状態オブジェクトを受信するステップと、第1のコンピューティングデバイスから離れた第2のコンピューティングデバイスから、第1のコンピューティングデバイスに関連付けられたデバイス状態情報についての要求を受信するステップと、要求に応答して、デバイス状態情報を第2のコンピューティングデバイスに提供するステップとを備え、デバイス状態情報は、第1のコンピューティングデバイス上で動作しているアプリケーションのアプリケーション一覧を備え、方法はさらに、第2のコンピューティングデバイスから、提供された一覧の選択されたアプリケーションに対応するアプリケーション選択を受信するステップと、アプリケーション選択の受信に応答して、受信された1つ以上の状態オブジェクトからの選択されたアプリケーションに対応する状態オブジェクトを、第2のコンピューティングデバイスに提供するステップとを備える。他の局面は、コンピュータにより実現される方法の実現のための対応するシステム、機器、およびコンピュータプログラム製品を含む。
【0004】
1つ以上の実現化例では、コンピュータにより実現される方法は、サーバから、ユーザアカウントに関連付けられた1つ以上の遠隔コンピューティングデバイス上で動作しているアプリケーションのアプリケーション一覧を受信するステップと、ユーザアカウントに関連付けられたグローバルアプリケーションインターフェイスでの表示のために、アプリケーション一覧を提供するステップと、グローバルアプリケーションインターフェイスで、提供されたアプリケーション一覧の選択されたアプリケーションに対応するアプリケーション選択を受信するステップと、受信されたアプリケーション選択に基づいて、選択されたアプリケーションに対応する状態オブジェクトをサーバから要求するステップと、サーバから要求された状態オブジェクトを受信するステップとを備える。他の局面は、コンピュータにより実現される方法の実現のための対応するシステム、機器、およびコンピュータプログラム製品を含む。
【0005】
1つ以上の実現化例では、システムは、1つ以上のプロセッサと、命令が格納されたメモリ媒体とを備える。命令は、実行されると、1つ以上のプロセッサが、第1のコンピュ
ーティングデバイスのために、第1のコンピューティングデバイス上で動作しているアプリケーションに対応する1つ以上の状態オブジェクトを格納し、第1のコンピューティングデバイスから離れた第2のコンピューティングデバイスから、第1のコンピューティングデバイス上で動作しているアプリケーションのアプリケーション一覧についての要求を受信し、要求に応答してアプリケーション一覧を提供し、第2のコンピューティングデバイスから、提供された一覧の選択されたアプリケーションに対応するアプリケーション選択を受信し、アプリケーション選択の受信に応答して、格納された1つ以上の状態オブジェクトからの選択されたアプリケーションに対応する状態オブジェクトを、第2のコンピューティングデバイスに提供するようにする。他の局面は、前述のシステムの実現のための対応する機器、方法、およびコンピュータプログラム製品を含む。
【0006】
本技術の他の構成は、本技術のさまざまな構成が実例として示され説明される以下の詳細な説明から、当業者には容易に明らかとなるであろう、ということが理解される。理解されるように、本技術は、本技術の範囲からまったく逸脱することなく、他の構成および異なる構成が可能であり、そのいくつかの詳細はさまざまな他の点で変更が可能である。したがって、図面および詳細な説明は本質的に例示的であると見なされるべきであり、限定的であると見なされるべきではない。
【0007】
図面の簡単な説明
添付図面を参照して、詳細な説明を行なう。
【図面の簡単な説明】
【0008】
【
図1】デバイス間でアプリケーション状態を転送するための例示的なシステムの図である。
【
図2】デバイス間でアプリケーション状態を転送するための例示的なコンポーネントおよびデータフローを示す図である。
【
図3】デバイス間でアプリケーション状態を転送する際に使用される例示的なユーザインターフェイスを示す図である。
【
図4】デバイス間でアプリケーション状態を転送するための例示的なプロセスのフロー図である。
【
図5】デバイス間でのアプリケーション状態の転送に関連して使用される例示的な電子システムを示す図である。
【発明を実施するための形態】
【0009】
詳細な説明
以下に述べる詳細な説明は、本技術のさまざまな構成の説明として意図されており、本技術が実践され得る構成のみを表わすよう意図されてはいない。添付図面はここに援用され、詳細な説明の一部を構成する。詳細な説明は、本技術の完全な理解を提供する目的のために、特定の詳細を含む。しかしながら、本技術はここに述べる特定の詳細に限定されず、これらの特定の詳細なしで実践され得る、ということは、当業者には明白かつ明確であろう。場合によっては、本技術の概念を不明瞭にしないように、周知の構造およびコンポーネントはブロック図の形で示される。
【0010】
本技術は、デバイス間でアプリケーション状態を転送するための機構を提供する。ユーザアカウントに関連付けられたコンピューティングデバイス上で動作しているアプリケーションに対応する状態オブジェクトを受信して格納するサーバが提供される。ユーザアカウントに関連付けられたクライアントデバイス(たとえば、コンピュータまたはスマートフォン)が、ユーザアカウントに関連付けられた他のデバイス上で動作しているアプリケーションを見ることを要求する場合がある。そのような要求を受信すると、サーバはクライアントデバイスに、他のデバイスに関連付けられた、デバイス上で動作しているアプリ
ケーションのアプリケーション一覧(たとえば、リストまたは他の表現)を含むデバイス状態情報を提供してもよい。クライアントデバイスは次に、アプリケーション一覧からのユーザ選択に基づいて、アプリケーションのうちの選択された1つのアプリケーションをサーバに通知し、サーバは、以前に受信された1つ以上の格納された状態オブジェクトから、選択されたアプリケーションに対応する状態オブジェクトを提供する。
【0011】
クライアント側で、クライアントデバイスは、クライアントデバイスのユーザが認証されたユーザアカウントに関連付けられた1つ以上のコンピューティングデバイスを判断してもよい。たとえば、クライアントデバイスは、ユーザアカウントに関連付けられた(または認証された)デバイスについて、(たとえばユーザアカウントに問い合わせることによって)サーバに問い合わせてもよい。判断されたコンピューティングデバイスのデバイス一覧が次に、クライアントデバイス上で動作しているグローバルアプリケーションインターフェイスに提供されてもよい。1つ以上の実現化例では、グローバルアプリケーションインターフェイスは、ユーザアカウントにリンクされたすべてのデバイスにわたる、(たとえば状態オブジェクトとしての)状態情報の「グローバルな」管理および転送を提供する。1つ以上のコンピューティングデバイスに対応するユーザ選択をグローバルアプリケーションインターフェイスから受信すると、クライアントデバイスは、選択されたデバイスについてのデバイス状態情報をサーバから要求してもよい。サーバは次に、選択されたコンピューティングデバイス上で動作しているアプリケーションのアプリケーション一覧を含むデバイス状態情報をクライアントデバイスに送信し、クライアントデバイスは、アプリケーション一覧をグローバルアプリケーションインターフェイスに提供する。
【0012】
ユーザは次に、提供されたアプリケーション一覧からあるアプリケーションを選択してもよい。選択されたアプリケーションを受信すると、クライアントデバイスは、選択されたアプリケーションに対応する状態オブジェクトを要求してサーバから受信する。クライアントデバイスは次に、状態オブジェクトを使用して、選択されたアプリケーションのローカルインスタンスを開いてもよい。ローカルインスタンスは、選択されたコンピューティングデバイスのうちの1つの上で現在動作している選択されたアプリケーションの遠隔インスタンスと同一の状態および設定を有する。
【0013】
グローバルアプリケーションインターフェイスはたとえば、ユーザアカウントに接続されたデバイス上で現在動作しているすべてのアプリケーション、または、状態情報がサーバに格納されたすべてのアプリケーションを見るために使用されてもよい。アプリケーションは、デバイスによって順序付けされて表示されるアプリケーションのグループから表示されてもよく、または、いくつかの実現化例では、デバイスのグループが表示され、表示されたデバイスのうちの選択された1つのデバイスについてのアプリケーションがユーザに提示されてもよい。いくつかの実現化例では、グローバルアプリケーションインターフェイスは、ユーザが予め定められたジェスチャー(たとえば、デスクトップ上でのピンチまたはピンチアウト(pinch-expand)ジェスチャー)を行なうと、表示されてもよい。
【0014】
システムの動作、およびグローバルアプリケーションインターフェイスは、双方向性であってもよい。たとえば、ユーザは、グローバルアプリケーションインターフェイスを使用して、別のデバイス上で現在実行されているアプリケーションのローカルインスタンスをインスタンス化してもよい。これに代えて、ユーザは、ユーザのデバイス上で現在動作しているアプリケーションの表現を、グローバルアプリケーションインターフェイスに表示された別のデバイスの表現までドラッグして、状態オブジェクトを別のデバイスに転送し、別のデバイス上でアプリケーションのインスタンスを開いてもよい。
【0015】
図1は、本技術の1つ以上の局面に従った、デバイス間でアプリケーション状態を転送するための例示的なシステム100の図である。システム100は、1つ以上のコンピュ
ーティングデバイス101、102と、1つ以上の集中型サーバ103と、遠隔ストレージ104(たとえばデータベース)とを含んでいてもよい。コンピューティングデバイス101、102は各々、1つ以上の位置認識コンピューティングデバイスが内蔵されるかまたは取付けられた、スマートフォン、GPSナビゲーションデバイス、またはパーソナルコンピュータ、タブレットコンピュータ、PDA、テレビまたは他の表示装置などのうちの1つであってもよい。
【0016】
さまざまな実現化例によれば、コンピューティングデバイス101および102は、ユーザアカウント105に結び付けられてもよい。したがって、ユーザ106は、ユーザアカウント105で認証されることによって、それぞれのデバイス101、102のある特徴を使用するよう認可される。ユーザアカウント105は、たとえば、クラウドベースのまたはウェブベースのユーザアカウントであってもよく、もしくは、企業アカウント(たとえばLDAPアカウント)であってもよく、複数のデバイス用のユニバーサルアカウントとして機能してもよい。この点に関し、ユーザアカウントに関連して格納された情報は、第3のコンピューティングデバイス上、たとえば、(たとえば「データクラウド」内の)サーバ103上に集中的に位置していてもよい。サーバ103は、たとえば第1のコンピューティングデバイス101および第2のコンピューティングデバイス102に、ネットワーク107(たとえばLAN、WAN、WiFi、セルラーネットワーク、またはインターネット)を通して動作可能に接続されてもよい。遠隔ストレージ104は、ユーザアカウント105に関連した情報(たとえば、状態オブジェクト)を格納してもよい。サーバ103および遠隔ストレージ104の機能性は、同じ物理サーバ上で実現されてもよく、または、複数のサーバ中に分散されてもよい。また、遠隔ストレージ104は、リレーショナルデータベース、オブジェクト指向型データベース、ファイル構造、テキストベースの記録、または他の形態のデータレポジトリといった任意の形態を取ってもよい。
【0017】
コンピューティングデバイス101、102は、デバイス上で動作しているアプリケーションについての状態オブジェクト内に、情報設定および状態情報を(たとえばローカルに)格納してもよい。状態オブジェクトは、各アプリケーションに関連付けられたメモリ常駐データオブジェクトであってもよい。アプリケーションが閉じられた後で、各状態オブジェクトは、クッキー状でメモリ内に留まってもよく、および/または、ローカル不揮発性メモリ内に留まってもよい。状態オブジェクトまたはその内部の情報は、遠隔ストレージ104での格納のために、サーバ103に自動的に送信されてもよい。別の局面では、状態オブジェクトまたはその内部の情報は、アプリケーションかまたはアプリケーションが動作しているデバイスがユーザアカウント105で登録および/または認証された場合、もしくは、ユーザ106によって手動で認可または始動された場合にのみ、送信されてもよい。
【0018】
各コンピューティングデバイス101、102は、サーバ103に接続して、ローカル状態情報を遠隔ストレージ104に格納された状態オブジェクトと同期させるように構成されてもよい。一局面では、第1のコンピューティングデバイス101は1つ以上の状態オブジェクトをサーバ103に送信してもよく、サーバ103は、デバイス101がオフラインであっても状態オブジェクトがアクセスされて第2のコンピューティングデバイス102と同期され得るように、状態オブジェクトを受信して遠隔ストレージ104に格納してもよい。サーバ103はまた、各デバイス、アプリケーション、または状態オブジェクトが前回同期された時間を含む他の情報を格納してもよい。
【0019】
状態オブジェクトの同期、格納、および/または転送は、異なるタイプのコンピューティングデバイス101、102間であってもよい。たとえば、さまざまなアプリケーションが、スマートフォン、ならびに、デスクトップまたはラップトップコンピュータ上にインストールされてもよい。これらのアプリケーションおよび/またはそれらが動作してい
るデバイスがユーザアカウント105に関連付けられている限り、それらのアプリケーションについての状態オブジェクトは、デバイスのうちのいずれかによるアクセスのために、遠隔ストレージ104上にアップロードされて格納されてもよい。
【0020】
コンピューティングデバイス101および102、サーバ103、およびストレージ104間のさまざまな接続は、有線または無線接続を通して行なわれてもよい。コンピューティングデバイス101および102は、規定されたエリア内で同一場所に位置してもよい。たとえば、これらのデバイスは、同じLANまたはWiFiネットワークに接続されてもよい。コンピューティングデバイス101および102は、ユーザの自宅と職場といった異なる場所にあってもよい。
【0021】
さまざまな局面によれば、コンピューティングデバイス101および102は、サーバ103とのやりとりのために、および、状態オブジェクトの管理または転送のために、1つ以上のユーザインターフェイス108a、108bをロードして実行するように構成されてもよい。ユーザインターフェイス108は、デスクトップまたはモバイルオペレーティングシステムによって提供されるデスクトップインターフェイス、もしくは、デバイス上で実行され、オペレーティングシステムによって管理されるスタンドアロンアプリケーション(たとえば、ウェブブラウザまたはウェブ対応アプリケーション)によって提供されるユーザインターフェイスであってもよい。インターフェイス108は、たとえば予め定められたジェスチャーを使用して開かれてもよい。たとえば、ユーザ106は、コンピューティングデバイス102のタッチスクリーン上でピンチアウトジェスチャー(たとえば逆ピンチ)を行なって、インターフェイス108bを開いてもよい。さらに説明されるように、各デバイスのユーザインターフェイス108は、ユーザアカウント105にリンクされたデバイス上で動作しているアプリケーションをグローバルなレベルで見直し、(たとえば、グローバルアプリケーションインターフェイスとして動作している)ユーザインターフェイス108に関連付けられたデバイス上でそれらのアプリケーションのうちの選択されたアプリケーションをローカルに開くために使用されてもよい。
【0022】
サーバ103は、ユーザアカウント105に関連付けられたデバイスについての状態オブジェクトを受信して格納してもよく、また、デバイスのうちの1つから状態情報についての要求を受信すると、サーバ103は、どのコンピューティングデバイスがユーザアカウント105に現在関連付けられているか(たとえば、登録されているか)、および/または、現在ユーザアカウント105で認証されているかに関して、判断を下してもよい。サーバは次に、判断に基づいて、アカウントにリンクされたデバイスにわたって動作しているすべてのアプリケーションの一覧を、デバイスのうちの1つ以上に提供してもよい。たとえば、コンピューティングデバイス102は、ユーザアカウント105にリンクされたデバイスの一覧を要求してもよい。サーバ103は次に、アカウントに現在リンクされているデバイスを判断し、デバイスの一覧を、ユーザ106への表示のためにユーザインターフェイス108bに提供してもよい。
【0023】
ユーザ106は次に、デバイス102上でローカルに開くためのユーザインターフェイス108bで、デバイスのうちの1つを選択してもよい。この点に関し、サーバ103は、インターフェイス108bから、デバイス一覧の選択されたコンピューティングデバイスに対応するデバイス選択を受信してもよい。デバイス選択の受信に応答して、サーバ103は、選択されたコンピューティングデバイス上で動作しているアプリケーションのアプリケーション一覧を判断し、アプリケーション一覧をインターフェイス108bに提供してもよい。ユーザ106は次に、アプリケーション一覧からあるアプリケーションを選択してもよく、コンピューティングデバイス102は、選択されたアプリケーションをサーバ103に提供する。サーバ103は次に、選択されたアプリケーションに対応する状態オブジェクトを、たとえば遠隔ストレージ104から検索し、状態オブジェクトをコン
ピューティングデバイス102に提供する。コンピューティングデバイス102は、サーバ103から状態オブジェクトを受信し、次に、受信された状態オブジェクトに基づいて、選択されたアプリケーションのローカルインスタンスを開く。ローカルインスタンスは、選択されたコンピューティングデバイス上で現在動作している選択されたアプリケーションの遠隔インスタンスと同一の状態および設定を有して開かれる。
【0024】
図2は、本技術の1つ以上の局面に従った、デバイス間でアプリケーション状態を転送するための例示的なコンポーネントおよびデータフローを示す。システム200は、異なるコンピューティングデバイス101、102と遠隔サーバ103との通信を容易にするのための1つ以上のアプリケーションプログラミングインターフェイス(application programming interface:API)202を含んでいてもよい。一局面では、API202
はサーバ103上に位置し、ユーザアカウント105に関連して動作するコンピューティングデバイスに提供されてもよい。API202を使用して、コンピューティングデバイス101は、設定および状態を含むアプリケーション状態情報を、ユーザアカウント105にリンクされたコンピューティングデバイス102などの他のデバイスによるアクセスのために、サーバ103に留めてもよい。
【0025】
1つ以上の実現化例では、アプリケーションは、たとえばユーザがユーザアカウント105で認可されたときに、アプリケーションをサーバ103に登録することによって、状態オブジェクト206を格納するために認可される。このように、各アプリケーションは「アカウントにリンクされる」ようになり、ユーザアカウント105において、それがインストールされ動作しているその対応するデバイスに関連付けられる。
【0026】
1つ以上の実現化例では、コンピューティングデバイス101は、デバイス101上で動作しているアプリケーションについてのアプリケーション状態および設定(および/または構成情報)といった、アプリケーション特有の状態情報を格納し、次にその情報を、他のデバイス上でのアプリケーションの他のインスタンスの生成のために、サーバ103上でミラーリングしてもよい。
図2に示すように、アプリケーションの第1のインスタンス204によって情報が格納または更新されると、状態オブジェクト206はサーバ103で自動的にミラーリング、格納または更新されてもよい。加えて、またはこれに代えて、状態オブジェクト206は、サーバ103から要求があり次第、たとえば、アカウントにリンクされたデバイスからサーバ103が同様の要求を受信すると、サーバ103に提供されてもよい。
【0027】
1つ以上の実現化例では、サーバ103上でAPI202と同時に実行されている情報監視サービスが、サーバ103に格納された情報を監視してもよい。アカウントにリンクされたデバイスのうちのいずれかでのアプリケーションの更新の際、サーバ103は、登録されたすべてのデバイスに信号を送信して、格納された情報が更新されたことをそれらに通知してもよい。1つ以上の実現化例では、各デバイスはイベントリスナをサーバ103に登録してもよく、サーバ103は、登録されたイベントリスナを呼び出すことによって、登録されたデバイスに通知してもよい。1つ以上の実現化例では、各アプリケーションは、API202を周期的に呼び出して、ストレージ104に格納された状態オブジェクトを更新してもよい。
【0028】
前述のように、API202へのアクセスは、ユーザアカウント105での認証、またはユーザアカウント105との関連付けに基づいていてもよい。この点に関し、ストレージ104に格納された状態オブジェクト206の転送は、ユーザアカウント105に検証可能に関連付けられ得るデバイス101、102だけが利用できるようにされてもよい。たとえば、デバイス101でのユーザアカウント105でのユーザ認証の際、デバイス101は、状態オブジェクト206を、ストレージ104での格納のためにサーバ103に
提供してもよい。デバイス102でのユーザアカウント105でのユーザ認証の際、デバイス102は、ユーザアカウント105にリンクされたすべてのデバイスから、デバイス101によって提供された状態オブジェクト206を含む状態オブジェクトを要求して受信してもよい。同様に、情報がいったんストレージ104に格納または更新されると、サーバ103はAPI202を介して、たとえば第2のコンピューティングデバイス102上で動作しているアプリケーションの第2のインスタンス208に、状態オブジェクト206を提供してもよい。
【0029】
図示された例では、第1のコンピューティングデバイス101上で動作しているアプリケーションの第1のインスタンス204に対応する状態オブジェクト206が、サーバ103によってデバイス101から受信される。デバイス101は、たとえばAPI202にアクセスして状態オブジェクト20をアップロードしてもよい。状態オブジェクト206のアップロードは、状態オブジェクトに対応するアプリケーションの起動時に、またはデバイス101の起動時に、たとえばユーザアカウント105でのアプリケーションまたはデバイス101の認証の際に起こってもよい。状態オブジェクト206は次に、アプリケーションまたはデバイスの101の動作中に、サーバ103に周期的に更新されてもよい。
【0030】
サーバ103は、コンピューティングデバイス101に関連付けられたデバイス状態情報についての要求をコンピューティングデバイス102から受信する。当該要求は一般に、ユーザアカウント105にリンクされたすべてのデバイスについてのデバイス状態情報、または、コンピューティングデバイス101に対応するデバイス状態情報に向けられてもよい。当該要求に応答して、サーバは、たとえばコンピューティングデバイス101上で動作しているアプリケーションの一覧210を含む要求された情報を、コンピューティングデバイス102に提供する。一覧210は次に、デバイス102によって提供されたインターフェイス108b上に表示されてもよい。
【0031】
サーバ103は次に、提供された一覧210の選択されたアプリケーションに対応するアプリケーション選択をデバイス102から受信してもよい。アプリケーション選択の受信に応答して、サーバ103はストレージ104にアクセスし、(デバイス101によって提供された)状態オブジェクト206を検索し、状態オブジェクト206をデバイス102に提供してもよい。デバイス102は次に、受信された状態オブジェクト206に基づいて、選択されたアプリケーションの第2のローカルインスタンス208を開いてもよい。この点に関し、第2のインスタンス208は、1つ以上の遠隔コンピューティングデバイスのうちのそれぞれの遠隔コンピューティングデバイス上で現在動作しているかもしれない第1のインスタンス204と同一である、アプリケーションの設定および状態を含んでいてもよい。
【0032】
1つ以上の実現化例では、サーバ103は、デバイスから、当該デバイス上で動作しているアプリケーションの遠隔インスタンスを異なるデバイス上で開く指示を受信してもよく、遠隔インスタンスは、現在のインスタンスと同一の設定および状態を有する。たとえば、サーバ103は、デバイス101から、デバイス101上の第1のインスタンス204からの状態オブジェクト206に基づいて、デバイス102上の第2のインスタンス208を開く要求を受信してもよい。この点に関し、デバイス101を操作しているユーザ106は、状態オブジェクト206をデバイス102に転送し、遠隔インスタンスの生成を始動してもよい。当該要求は、ユーザインターフェイス108aでユーザジェスチャーによって始動されてもよい。たとえば、ユーザ106は、状態オブジェクト206に対応するアプリケーションの表現を、デバイス102の表現までドラッグしてもよい。
【0033】
サーバ103は、コンピューティングデバイス101から、状態オブジェクト206と
コンピューティングデバイス102の識別情報とを受信してもよい。状態オブジェクト206は次に、デバイス102の受信された識別情報と、デバイス102についての予め定められた登録情報とに基づいて、コンピューティングデバイス102に送信されてもよい。たとえば、サーバ103は、デバイスの登録時に構成オプションを提供してもよく、ユーザは、登録中のデバイス上でどんなタイプのアプリケーションが転送され、および/または自動的に開かれ得るかを選択してもよい。1つ以上の実現化例では、サーバ103は、デバイス識別情報なしで状態オブジェクト206を受信し、動作可能に接続された次のデバイスに状態オブジェクト206が送出され得る(たとえば、次のデバイスがユーザアカウント105で認証されるとき)まで状態オブジェクト206を保持してもよい。加えて、またはこれに代えて、サーバ103は、識別されたデバイスが次回、サーバ103に動作可能に接続されるまで、状態オブジェクト206を保持してもよい。
【0034】
図3は、本技術の一局面に従った、デバイス間でアプリケーション状態を転送する際に使用される例示的なユーザインターフェイス108を示す。ユーザインターフェイス108は、クライアントコンピューティングデバイス101、102のディスプレイスクリーン302上に表示されてもよい。ディスプレイスクリーン302は、スクリーンの表面との接触、およびタッチ関連ジェスチャーを通して入力を受け付けるなどのために、タッチセンサ式であってもよい。ディスプレイスクリーン302は、1つ以上のアプリケーションおよび/またはアプリケーション特徴の実行、管理、および/または操作のための多くのアイコン、仮想ボタン、および他の制御機構を表示してもよい。
【0035】
ユーザインターフェイス108は、たとえば(たとえば仮想デスクトップとしての)オペレーティングシステムの、もしくは、ウェブブラウザ308またはソーシャルネットワークアプリケーションなどのアプリケーションのための、マスターインターフェイス302と一体化されるか、またはマスターインターフェイス302からアクセスされてもよい。この点に関し、ユーザインターフェイス108は、起動されると、たとえば1つ以上のアプリケーションまたはアプリケーション特徴を含む仮想デスクトップの上に、仮想デスクトップに少なくとも部分的に重複して表示されてもよい。いくつかの局面では、ユーザインターフェイス108は浮いていてもよく、ユーザによって位置を変えられてもよい。ユーザインターフェイス108は、たとえば、オペレーティングシステムによって提供され、または関連付けられたアプリケーション内に埋め込まれた命令(たとえば、ウェブページ内に埋め込まれたスクリプト言語)によって生成されてもよい。
【0036】
ユーザインターフェイス108は、たとえば、ディスプレイスクリーン302によって表示された仮想デスクトップ上で行なわれるユーザジェスチャー304によってアクセスされてもよい。たとえば、ユーザジェスチャー304は、アクションボタンを押し下げたまま、マウスなどのポインタデバイスによって行なわれるドラッグアクション、もしくは、1本または複数(たとえば2本、3本、4本またはそれ以上)の指のスワイプ、ピンチアクション、またはピンチアウトアクションなどのタッチ関連ジェスチャー、もしくは、ユーザインターフェイス108を起動するようデバイスに合図する他の予め定められたジェスチャーであってもよい。ユーザジェスチャー304は、x1からx2までの2点間での予め定められたパターンの連続スワイプであってもよい。1つ以上の実現化例では、ユーザインターフェイス108は、たとえばディスプレイスクリーン302の仮想デスクトップ上に表示されたユーザインターフェイス108に対応するアイコンまたは他の表現306を起動する(たとえば、クリックするかまたはタップする)ことによって起動されてもよい。
【0037】
ユーザインターフェイス108は、起動されると、ユーザアカウント105にリンクされたデバイスの一覧308を表示してもよい。一覧308は、たとえば、サーバ103によって提供されたデバイス情報に基づいて判断されてもよい。たとえば、ユーザインター
フェイス108が起動されると、ユーザインターフェイス108はデバイス情報についての要求をサーバ103に送信してもよく、サーバ103は、一覧308を含むデバイス情報をユーザインターフェイス108に返してもよい。この点に関し、一覧308のデバイスは、以前にユーザアカウント105に登録されたデバイスに限定されてもよい。一覧308がいったん表示されると、ユーザは、一覧308から1つ以上のデバイス(たとえば
図3の「デバイス2」)を選択して、選択されたデバイス上で動作しているアプリケーションを見てもよい。選択に応答して、選択されたコンピューティングデバイス上で動作しているアプリケーションのアプリケーション一覧310を、ユーザインターフェイス108は要求してもよく、サーバ103は提供してもよい。
【0038】
デバイス101、102は、アプリケーション一覧310を受信し、ユーザインターフェイス108上に表示する。アプリケーション一覧310は、選択されたデバイス(たとえば「デバイス2」)上で動作している各アプリケーション用のアイコン(たとえば、
図3の「アプリ1」~「アプリ9」)などの表現を含んでいてもよい。一覧310のアプリケーションは、たとえばアプリケーションをホストする対応する登録されたデバイスのために、以前にユーザアカウント105に登録されたアプリケーションに限定されてもよい。一覧310がいったん表示されると、ユーザは、サーバ103から状態情報を受信する1つ以上のアプリケーションを一覧310から選択してもよい。選択に応答して、選択されたアプリケーションに対応する状態オブジェクト206を、ユーザインターフェイス108は要求してもよく、サーバ103はデバイスに提供してもよい。状態オブジェクト206が受信されると、デバイスは、受信された状態オブジェクトに基づいて、選択されたアプリケーションのローカルインスタンスを開いてもよい。この点に関し、ローカルインスタンスは、選択されたデバイス(たとえば「デバイス2」)上で現在動作している選択されたアプリケーションの遠隔インスタンスと同一である、アプリケーションの設定および状態を備える。
【0039】
図3は、一覧308を表示後、選択されたデバイスについての一覧310を表示することを表しているが、たとえば最初にデバイスを選択することなく、すべてのデバイスについてのアプリケーション、またはすべてのデバイスについてのアプリケーションの部分集合が、インターフェイス108上にともに表示されてもよい。たとえば、ユーザインターフェイス108を起動する際、サーバ103は、ユーザアカウント105に登録されたすべてのデバイスについてのすべてのアプリケーションを提供してもよい。一覧308は、(ここではすべてのアプリケーションを含む)一覧310とともに表示されてもよく、一覧310におけるアプリケーションの部分集合を表示するために、デバイスが選択または選択解除されてもよい。
【0040】
加えて、またはこれに代えて、ユーザインターフェイス108は、ユーザインターフェイス108と同じデバイス上で動作している1つ以上のアプリケーションを表示してもよい。ユーザは、アプリケーションのローカルインスタンスの表現を、たとえば一覧308に表示されたデバイスのうちの1つまでドラッグして、ローカルインスタンスについての状態オブジェクト206が選択されたデバイスに送信されるようにしてもよい。アプリケーションがローカルにアクティブなインスタンスを有していない場合、サーバ103は、以前に格納された状態オブジェクト206を選択されたデバイスに送信してもよい。
【0041】
前述のように、選択されたアプリケーションのローカルインスタンスは、サーバ103から受信された状態オブジェクト206に基づいて開かれてもよく、ローカルインスタンスは、選択されたアプリケーションの遠隔インスタンスと同一である、アプリケーションの設定および状態を有する。一例では、選択されたアプリケーションはウェブブラウザであってもよく、ウェブブラウザの遠隔インスタンスは、たとえばモバイルデバイス上で動作している。受信された状態オブジェクト206は、ウェブブラウザの遠隔インスタンス
のウェブ閲覧履歴、および/または、ウェブブラウザの遠隔インスタンスによって現在開かれている少なくとも1つのウェブページを含んでいてもよい。ウェブブラウザのローカルインスタンスは次に、遠隔インスタンスにおいてユーザによって最後に見られたウェブページ内の位置でウェブページを見るために、自動的に開いてもよい。加えて、またはこれに代えて、ローカルインスタンスは、遠隔インスタンスのウェブ閲覧履歴に従ったウェブページのナビゲーションを可能にするように自動的に構成されてもよい。たとえば、ウェブブラウザがいったん開かれると、ユーザは「戻る」ボタンを選択して、ウェブブラウザの遠隔インスタンスにおいて見られたウェブページの履歴を遡ってナビゲートしてもよい。
【0042】
図4は、本技術の局面に従った、デバイス間でアプリケーション状態を転送するための例示的なプロセス400のフロー図を示す。説明の目的のために、例示的なプロセス400は、
図1、
図2、および
図3のコンポーネントを参照してここに説明される。また、説明の目的のために、例示的なプロセス400のブロックは、連続してまたは直線的に生じるとしてここに説明される。しかしながら、例示的なプロセス400の複数のブロックは並行して生じてもよい。加えて、例示的なプロセス400のブロックは図示された順序で行なわれなくてもよく、および/または、例示的なプロセス400のブロックのうちの1つ以上は行なわれなくてもよい。
【0043】
図示された例示的なフロー図では、サーバ103は、第1のコンピューティングデバイス101および第2のコンピューティングデバイス102を含む複数のデバイスをユーザアカウント105に登録する(402)。第1のコンピューティングデバイス101および/または第2のコンピューティングデバイスは、たとえば、スマートフォン、またはノートブック、タブレットなどのモバイルデバイス、またはデスクトップコンピュータであってもよい。デバイスの登録が図示されているが、サーバ103は、登録されたアプリケーションが、ユーザアカウント105に登録されたすべてのデバイス(またはデバイスの部分集合)間で更新され得るように、アプリケーションを個々にまたはグループでユーザアカウント105に登録してもよい。アプリケーションおよび/またはデバイスがいったんユーザアカウント105に登録されると、当該アプリケーションおよび/またはデバイスは、ユーザアカウント105に関連して状態オブジェクト206を格納してもよい。
【0044】
サーバ103は、たとえば第1のコンピューティングデバイス101から、デバイス101上で動作しているアプリケーションに対応する1つ以上の状態オブジェクト206を受信する(404)。前述のように、状態オブジェクト206は、アプリケーションのインスタンスがデバイス上で始まると格納されてもよく、たとえば周期的な間隔でサーバ103に更新されてもよい。1つ以上の実現化例では、デバイスのユーザは、状態オブジェクトがサーバ103に提供されるアプリケーションを登録するオプションを有する。たとえば、ユーザはインターフェイス108を開いて、ユーザアカウント105に登録するためのデバイス上の1つ以上のアプリケーションを選択してもよい。ユーザはまた、いつでもアプリケーションを登録解除するオプションを有する。
【0045】
サーバ103は、たとえばデバイス102から、ユーザアカウント105に登録されたデバイスのデバイス一覧308についての要求を受信し(406)、デバイス一覧についての要求に応答して、サーバ103は、デバイス一覧308をデバイス102に提供する(408)。当該要求は、ユーザインターフェイス108bから受信され、API202を介してサーバ103に提供されてもよい。デバイス一覧308についての要求は、ユーザによるアクションに応答して提供されてもよく、または、ユーザインターフェイスがインスタンス化されるとユーザインターフェイス108によって自動的に作られてもよい。1つ以上の実現化例では、ユーザインターフェイス108は、サーバ103を周期的にポーリングして新規デバイスが登録されたかどうか判断し、それに応じて一覧308を更新
してもよい。
【0046】
サーバ103は、デバイス101に関連付けられた、アプリケーションのアプリケーション一覧310を含むデバイス状態情報についての要求を受信する(410)。図示された例では、デバイス状態情報についての要求は、デバイス101を、デバイス一覧308から選択されたものとして識別する。デバイス状態情報についての要求に応答して、サーバ103は、デバイス101上で動作しているアプリケーションのアプリケーション一覧310を含む、デバイス101についてのデバイス状態情報を、デバイス102に提供する(412)。さまざまな局面によれば、デバイス102(要求しているデバイス)は、サーバ103がデバイス状態情報(および/またはデバイス一覧)をデバイス102に提供する前に、ユーザアカウント105で認証されるよう要求される。加えて、デバイス状態情報についての要求は、要求しているデバイス上のユーザインターフェイス108から受信されてもよく、デバイス状態情報は、要求しているデバイス上のユーザインターフェイス108に提供されてもよい。ユーザインターフェイス108は、さまざまな実現化例によれば、ユーザアカウント105とリンクされており、ユーザがデバイス102をユーザアカウント105で認証させるための機構を提供してもよい。サーバ103は、認可されると、アプリケーション一覧310の表示のために、デバイス状態情報をユーザインターフェイス108に提供する。
【0047】
サーバ103は次に、デバイス102から、提供された一覧310の選択されたアプリケーションに対応する(たとえば、ユーザによって行なわれた)アプリケーション選択を受信し(414)、アプリケーション選択の受信に応答して、サーバ103は、選択されたアプリケーションに対応する状態オブジェクト206をデバイス102に提供する(416)。前述のように、状態オブジェクト206は、遠隔インスタンスから受信された状態オブジェクトに基づいて、選択されたアプリケーションのローカルインスタンスを開くために提供される。新規のローカルインスタンスは、デバイス101を含む、ユーザアカウント105に登録された1つ以上の遠隔コンピューティングデバイスのうちのそれぞれの遠隔コンピューティングデバイス上で現在動作している、または動作していた、選択されたアプリケーションの遠隔インスタンスと同一である、アプリケーションの設定および状態を含んでいてもよい。いくつかの局面では、状態オブジェクトはまた、同じデバイス上で以前に動作していたアプリケーションのインスタンスによって以前に受信され格納されたものであってもよい。
【0048】
加えて、ユーザは、たとえば遠隔デバイスがユーザによって次に使用されるときに、遠隔デバイス上で対応するアプリケーションのインスタンスを自動的に(たとえば、ユーザによるさらなるアクションなしで)開くために、ユーザインターフェイス108を使用して状態オブジェクト206を遠隔デバイスに転送してもよい。この点に関し、(ユーザインターフェイス108での選択されたアプリケーションに対応する)状態オブジェクト206は、たとえばデバイス101からサーバ103によって受信されて、デバイス102上で動作している遠隔アプリケーションの指示とともにデバイス102に提供される。この指示は、当該アプリケーションの遠隔インスタンスを、状態オブジェクトによって提供される状態で実行するためのものである。デバイス102は指示を受信し、受信された状態オブジェクトからの情報を使用して対応するアプリケーションを開く。デバイス102(またはインターフェイス108b)は、アプリケーションを開く前に、最初にユーザ確認を要求してもよい。
【0049】
上述の例示的なプロセス400における特徴の多く、および関連アプリケーションは、コンピュータ読取可能記憶媒体(コンピュータ読取可能媒体とも呼ばれる)に記録された一組の命令として特定されるソフトウェアプロセスとして実現されてもよい。これらの命令が1つ以上の処理部(たとえば、1つ以上のプロセッサ、プロセッサのコア、または他
の処理部)によって実行されると、それらは処理部に、命令で指示されたアクションを行なわせる。コンピュータ読取可能媒体の例は、CD-ROM、フラッシュドライブ、RAMチップ、ハードドライブ、EPROMなどを含むものの、それらに限定されない。コンピュータ読取可能媒体は、単独では、無線でまたは有線接続を通して進む搬送波および電子信号を含まない。
【0050】
「ソフトウェア」という用語は、適切な場合、プロセッサによる処理のためにメモリに読込まれ得る、読出専用メモリに常駐するファームウェア、または磁気ストレージに格納されたアプリケーションを含むよう意図されている。また、いくつかの実現化例では、本開示の複数のソフトウェア局面は、本開示の別個のソフトウェア局面を残しつつ、より大きいプログラムの下位部分として実現され得る。いくつかの実現化例では、複数のソフトウェア局面はまた、別々のプログラムとして実現され得る。最後に、ここに説明されたソフトウェア局面をともに実現する別々のプログラムの任意の組合せは、本開示の範囲内にある。いくつかの実現化例では、ソフトウエアプログラムは、1つ以上の電子システム上で動作するためにインストールされた場合、ソフトウエアプログラムの動作を実行して行なう1つ以上の特定の機械実現化例を規定する。
【0051】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても公知)は、コンパイラ型またはインタープリタ型言語、宣言型または手続き型言語を含む任意の形態のプログラミング言語で書くことができ、それは、スタンドアロンプログラムとしての、もしくは、コンピュータ環境での使用に好適なモジュール、コンポーネント、サブルーチン、オブジェクト、または他のユニットとしての形態を含む任意の形態でデプロイメントされ得る。コンピュータプログラムは、ファイルシステムにおけるファイルに対応してもよいが、対応しなくてもよい。プログラムは、他のプログラムまたはデータ(たとえば、マークアップ言語文書に格納された1つ以上のスクリプト)を保持するファイルの一部、対象プログラム専用の単一のファイル、もしくは、連係された複数のファイル(たとえば、1つ以上のモジュール、サブプログラム、またはコードの部分を格納するファイル)に格納され得る。コンピュータプログラムは、1つのコンピュータ上で、もしくは、1ヶ所に位置するかまたは複数箇所に分散されて通信ネットワークによって相互接続された複数のコンピュータ上で実行されるようにデプロイメントされ得る。
【0052】
図5は、本技術の1つ以上の局面に従った、デバイス間でのアプリケーション状態の転送に関連して使用される例示的な電子システム500を示す図である。電子システム500は、コンピューティングデバイス100の動作に関連付けられたソフトウェア、もしくは、プロセス400の1つ以上の部分またはステップ、もしくは、
図1~4によって提供されたコンポーネントおよびプロセスの実行のためのコンピューティングデバイスであってもよい。さまざまな実現化例では、電子システム500は、第1のコンピューティングデバイス101または第2のコンピューティングデバイス102、またはサーバ103を代表していてもよい。この点に関し、電子システム500は、1つ以上のプロセッサが内蔵されるかまたは結合された、パーソナルコンピュータ、もしくは、タブレットコンピュータ、ラップトップ、スマートフォン、PDAなどのモバイルデバイス、もしくは、他のタッチスクリーンまたはテレビ、もしくは、無線接続性を有する任意の他の種類のコンピュータ関連電子デバイスであってもよい。
【0053】
電子システム500は、さまざまなタイプのコンピュータ読取可能媒体と、さまざまな他のタイプのコンピュータ読取可能媒体用のインターフェイスとを含んでいてもよい。図示された例では、電子システム500は、バス508と、処理部512と、システムメモリ504と、読出専用メモリ(read-only memory:ROM)510と、永続記憶装置502と、入力デバイスインターフェイス514と、出力デバイスインターフェイス506と
、1つ以上のネットワークインターフェイス516とを含む。いくつかの実現化例では、電子システム500は、前述のさまざまなコンポーネントおよびプロセスの動作のための他のコンピューティングデバイスまたは回路を含んでいてもよく、もしくは、それらと一体化されてもよい。
【0054】
バス508は、電子システム500の多くの内部デバイスを通信可能に接続するすべてのシステムバス、周辺バス、およびチップセットバスをまとめて表わす。たとえば、バス508は、処理部512を、ROM510、システムメモリ504、および永続記憶装置502と通信可能に接続する。
【0055】
これらのさまざまなメモリユニットから、処理部512は、本開示のプロセスを実行するために、実行するべき命令および処理するべきデータを検索する。異なる実現化例では、処理部は、シングルプロセッサまたはマルチコアプロセッサであり得る。
【0056】
ROM510は、処理部512および電子システムの他のモジュールによって必要とされる静的データおよび命令を格納する。一方、永続記憶装置502は、読出および書込メモリデバイスである。このデバイスは、電子システム500がオフであっても命令およびデータを格納する不揮発性メモリユニットである。本開示のいくつかの実現化例は、(磁気または光ディスクおよびその対応するディスクドライブなどの)大容量記憶装置を、永続記憶装置502として使用する。
【0057】
他の実現化例は、(フロッピー(登録商標)ディスク、フラッシュドライブ、およびその対応するディスクドライブなどの)リムーバブル記憶装置を、永続記憶装置502として使用する。永続記憶装置502と同様に、システムメモリ504は読出および書込メモリデバイスである。しかしながら、記憶装置502とは異なり、システムメモリ504は、ランダムアクセスメモリなどの揮発性読出および書込メモリである。システムメモリ504は、プロセッサが実行時に必要とする命令およびデータの一部を格納する。いくつかの実現化例では、本開示のプロセスは、システムメモリ504、永続記憶装置502、および/またはROM510に格納される。これらのさまざまなメモリユニットから、処理部512は、いくつかの実現化例のプロセスを実行するために、実行するべき命令および処理するべきデータを検索する。
【0058】
バス508はまた、入力デバイスインターフェイス514および出力デバイスインターフェイス506に接続する。入力デバイスインターフェイス514は、ユーザが情報を通信し、電子システムへのコマンドを選択することを可能にする。入力デバイスインターフェイス514とともに使用される入力デバイスは、たとえば、英数字キーボードおよびポインティングデバイス(「カーソル制御デバイス」とも呼ばれる)を含む。出力デバイスインターフェイス506は、たとえば、電子システム500によって生成された画像の表示を可能にする。出力デバイスインターフェイス506とともに使用される出力デバイスは、たとえば、プリンタおよび表示装置、たとえば陰極線管(cathode ray tube:CRT)または液晶ディスプレイ(liquid crystal display:LCD)などを含む。いくつかの実現化例は、入力かつ出力デバイスとして機能するタッチスクリーンなどのデバイスを含む。
【0059】
最後に、
図5に示すように、バス508はまた、ネットワークインターフェイス516を通して電子システム500をネットワーク(図示せず)に結合する。ネットワークインターフェイス516は、たとえば、無線アクセスポイント(たとえば、ブルートゥース(登録商標)またはWiFi)、もしくは、無線アクセスポイントに接続するための無線回路を含んでいてもよい。ネットワークインターフェイス516はまた、ローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)、無線LAN、ま
たはイントラネットなどのコンピュータのネットワーク、もしくは、インターネットなどのネットワークのネットワークの一部にコンピュータを接続するためのハードウェア(たとえば、イーサネット(登録商標)ハードウェア)を含んでいてもよい。電子システム500のうちのいずれかまたはすべてのコンポーネントは、本開示に関連して使用され得る。
【0060】
上述のこれらの機能は、コンピュータソフトウェア、ファームウェア、またはハードウェアで実現され得る。これらの手法は、1つ以上のコンピュータプログラム製品を使用して実現され得る。プログラマブルプロセッサおよびコンピュータは、モバイルデバイスに含まれ、またはモバイルデバイスとしてパッケージ化され得る。プロセスおよび論理フローは、1つ以上のプログラマブルプロセッサによって、および1つ以上のプログラマブル論理回路によって行なわれ得る。汎用および専用コンピューティングデバイスならびに記憶装置は、通信ネットワークを通して相互接続され得る。
【0061】
いくつかの実現化例は、コンピュータプログラム命令を機械読取可能またはコンピュータ読取可能媒体(これに代えて、コンピュータ読取可能記憶媒体、機械読取可能媒体、または機械読取可能記憶媒体と呼ばれる)に格納する、マイクロプロセッサ、ストレージおよびメモリなどの電子部品を含む。そのようなコンピュータ読取可能媒体のいくつかの例は、RAM、ROM、読出専用コンパクトディスク(CD-ROM)、書込可能コンパクトディスク(CD-R)、書換可能コンパクトディスク(CD-RW)、読出専用デジタル多用途ディスク(たとえば、DVD-ROM、2層DVD-ROM)、さまざまな書込可能/書換可能DVD(たとえば、DVD-RAM、DVD-RW、DVD+RWなど)、フラッシュメモリ(たとえば、SDカード、ミニSDカード、マイクロSDカードなど)、磁気および/またはソリッドステートハードドライブ、読出専用および書込可能ブルーレイ(登録商標)ディスク、超密度光ディスク、任意の他の光学媒体または磁気媒体、およびフロッピーディスクを含む。コンピュータ読取可能媒体は、少なくとも1つの処理部によって実行可能であって、さまざま動作を行なうための命令のセットを含むコンピュータプログラムを格納することができる。コンピュータプログラムまたはコンピュータコードの例は、コンパイラによって生成されるような機械コード、および、インタープリタを使用してコンピュータ、電子部品、またはマイクロプロセッサによって実行される、より高いレベルのコードを含むファイルを含む。
【0062】
上述の説明は、ソフトウェアを実行するマイクロプロセッサまたはマルチコアプロセッサを主に指しているが、いくつかの実現化例は、特定用途向け集積回路(application specific integrated circuit:ASIC)またはフィールドプログラマブルゲートアレイ
(field programmable gate array:FPGA)などの1つ以上の集積回路によって行な
われる。いくつかの実現化例では、そのような集積回路は、回路自体の上に格納された命令を実行する。
【0063】
この明細書およびこの出願の任意の請求項で使用されるように、「コンピュータ」、「サーバ」、「プロセッサ」、および「メモリ」という用語はすべて、電子デバイスまたは他の技術的デバイスを指す。これらの用語は、人々、または人々のグループを除外する。明細書の目的のために、「表示」または「表示する」という用語は、電子デバイス上に表示することを意味する。この明細書およびこの出願の任意の請求項で使用されるように、「コンピュータ読取可能媒体」という用語はもっぱら、コンピュータによって読取可能な形態で情報を格納する有形の物理的対象に限定される。これらの用語は、任意の無線信号、有線ダウンロード信号、および任意の他の一時的信号を除外する。
【0064】
ユーザとのやりとりを提供するために、この明細書に説明された主題の実現化例は、情報をユーザに表示するための表示装置、たとえばCRT(陰極線管)またはLCD(液晶
ディスプレイ)モニタと、ユーザがコンピュータに入力を提供できるようにするためのキーボードおよびポインティングデバイス、たとえばマウスまたはトラックボールとを有するコンピュータ上で実現され得る。ユーザとのやりとりを提供するために、他の種類のデバイスも使用され得る。たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば視覚フィードバック、聴覚フィードバック、または触覚フィードバックであり得る。また、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形態で受信され得る。加えて、コンピュータは、ユーザによって使用されているデバイスに文書を送信し、当該デバイスから文書を受信することによって、たとえば、ユーザのクライアントデバイス上のウェブブラウザから受信された要求に応答して、当該ウェブブラウザにウェブページを送信することによって、ユーザとやりとりできる。
【0065】
この明細書に説明された主題の実施形態は、たとえばデータサーバなどのバックエンドコンポーネント、もしくは、たとえばアプリケーションサーバなどのミドルウェアコンポーネント、もしくは、たとえばユーザがこの明細書に説明された主題の実現化例とやりとりできるようにするグラフィカルユーザインターフェイスまたはウェブブラウザを有するクライアントコンピュータなどのフロントエンドコンポーネント、もしくは、1つ以上のそのようなバックエンドコンポーネント、ミドルウェアコンポーネント、またはフロントエンドコンポーネントの任意の組合せを含む、コンピューティングシステムにおいて実現され得る。当該システムのコンポーネントは、たとえば通信ネットワークなどの任意の形態または媒体のデジタルデータ通信によって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(たとえばインターネット)、および、ピアツーピア・ネットワーク(たとえばアドホック・ピアツーピア・ネットワーク)を含む。
【0066】
コンピューティングシステムは、クライアントとサーバとを含み得る。クライアントとサーバとは一般に互いから離れており、典型的には通信ネットワークを通してやりとりする。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されて互いにクライアントサーバ関係を有するコンピュータプログラムによって生じる。いくつかの実施形態では、サーバは、(たとえば、クライアントデバイスとやりとりしているユーザにデータを表示し、当該ユーザからユーザ入力を受信する目的のために)データ(たとえばHTMLページ)をクライアントデバイスに送信する。クライアントデバイスで生成されたデータ(たとえば、ユーザとのやりとりの結果)が、クライアントデバイスからサーバで受信され得る。
【0067】
当業者であれば、ここに説明されたさまざまな例示的なブロック、モジュール、要素、コンポーネント、方法、およびアルゴリズムが、電子ハードウェア、コンピュータソフトウェア、またはそれらの組合せとして実現されてもよい、ということを理解するであろう。ハードウェアおよびソフトウェアのこの互換性を例示するために、さまざまな例示的なブロック、モジュール、要素、コンポーネント、方法、およびアルゴリズムが、一般にそれらの機能性に関して上に説明されてきた。そのような機能性がハードウェアとして実現されるか、またはソフトウェアとして実現されるかは、特定のアプリケーションと、システム全体に課された設計制約とに依存する。当業者は、説明された機能性を、特定のアプリケーションごとにさまざまなやり方で実現してもよい。さまざまなコンポーネントおよびブロックは、本技術の範囲からまったく逸脱することなく、異なるように配置されてもよい(たとえば、異なる順序で配置されるか、または異なるやり方で分割されてもよい)。
【0068】
開示されたプロセスにおけるステップの特定の順序または階層構造は、例示的なアプローチの実例である、ということが理解される。設計の好みに基づいて、プロセスにおける
ステップの特定の順序または階層構造が並べ替えられてもよいということが理解される。ステップのうちのいくつかは、同時に行なわれてもよい。添付の方法請求項は、さまざまなステップの要素をサンプル順序で提示しており、提示された特定の順序または階層構造に限定されるよう意図されてはいない。
【0069】
前述の説明は、どの当業者もここに説明されたさまざまな局面を実践できるようにするために提供される。前述の説明は本技術のさまざまな例を提供しており、本技術はこれらの例に限定されない。これらの局面へのさまざまな変更は当業者には容易に明らかになり、ここに規定された一般原理は他の局面に適用されてもよい。このため、請求項は、ここに示された局面に限定されるよう意図されてはおらず、請求項の文言と一致する全範囲が与えられるべきである。ここで、単数形の要素の言及は、特にそう明記されていない限り「たった1つ」を意味するよう意図されてはおらず、むしろ「1つ以上」を意味するよう意図されている。特に明記されない限り、「いくつかの」という用語は1つ以上を指す。男性代名詞(たとえば、「彼の」)は、女性および中性(たとえば、「彼女の」および「その」)を含み、逆もまた同様である。見出しおよび小見出しがある場合、それらは単に便宜上使用され、発明を限定しない。
【0070】
「ウェブサイト」という用語は、ここに使用されるように、1つ以上のウェブページ、ウェブ関連コンテンツをホストまたは格納するために使用される1つ以上のサーバなどを含む、ウェブサイトの任意の局面を含んでいてもよい。したがって、「ウェブサイト」という用語は、「ウェブページ」および「サーバ」という用語と交換可能に使用されてもよい。「~するように構成された」、「~するように動作可能である」、および「~するようにプログラミングされた」という述語の単語は、主語の特定の有形または無形の変更を何ら意味しておらず、むしろ、交換可能に使用されるよう意図されている。たとえば、動作またはコンポーネントを監視し制御するように構成されたプロセッサは、プロセッサが動作を監視し制御するようにプログラミングされていること、または、プロセッサが動作を監視し制御するように動作可能であることも意味していてもよい。同様に、コードを実行するように構成されたプロセッサは、プロセッサがコードを実行するようにプログラミングされている、またはコードを実行するように動作可能であるとして解釈され得る。
【0071】
「局面」などの言葉は、そのような局面が本技術にとって不可欠であること、または、そのような局面が本技術の全構成に当てはまることを意味しない。ある局面に関する開示は、全構成または1つ以上の構成に当てはまってもよい。局面は、1つ以上の例を提供してもよい。「局面」などの言葉は、1つ以上の局面を指してもよく、逆もまた同様である。「実施形態」などの言葉は、そのような実施形態が本技術にとって不可欠であること、または、そのような実施形態が本技術の全構成に当てはまることを意味しない。ある実施形態に関する開示は、全実施形態または1つ以上の実施形態に当てはまってもよい。実施形態は、1つ以上の例を提供してもよい。「実施形態」などの言葉は、1つ以上の実施形態を指してもよく、逆もまた同様である。「構成」などの言葉は、そのような構成が本技術にとって不可欠であること、または、そのような構成が本技術の全構成に当てはまることを意味しない。ある構成に関する開示は、全構成または1つ以上の構成に当てはまってもよい。構成は、1つ以上の例を提供してもよい。「構成」などの言葉は、1つ以上の構成を指してもよく、逆もまた同様である。
【0072】
「例」という単語は「例または実例として機能する」ことを意味するために、ここに使用される。「例」としてここに説明されたどの局面または設計も、他の局面または設計よりも好ましい、もしくは有利である、とは必ずしも解釈されない。
【0073】
当業者には公知である、または後に公知になる、この開示全体にわたって説明されたさまざまな局面の要素とのすべての構造的および機能的均等物は、ここに引用により明確に
援用されており、請求項によって包含されるよう意図されている。また、ここに開示されたことは何も、そのような開示が請求項に明確に記載されているかどうかにかかわらず、一般の人々に捧げられるよう意図されてはいない。請求項のどの要素も、要素が「~するための手段」という言葉を使用して明確に記載されない限り、または、方法請求項の場合、要素が「~するためのステップ」という言葉を使用して記載されない限り、米国特許法第112条第6段落の規定により解釈されるべきである。さらに、「含む」、「有する」などの用語が説明または請求項で使用される限りでは、そのような用語は、「備える」という用語と同様の態様で包括的であるよう意図されている。なぜなら、「備える」は、請求項で採用される場合、移行語として解釈されるためである。