(57)【要約】【課題】【解決手段】アプリケーションのための方法は：取得されたシステム信号に基づいてコンテキスト関連情報を決定する工程と；コンテキスト関連情報に対応する対象アプリケーションを実行する工程であって、対象アプリケーションは、少なくとも１つのアプリケーションユニットを備える、工程と；対象アプリケーションを用いて、対応する動作を実行する工程と、を備える。【選択図】図１
2019537766.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
取得されたシステム信号に基づいてコンテキスト関連情報を決定する工程と、
複数のアプリケーションの中で、前記コンテキスト関連情報に対応する対象アプリケーションを選択する工程と、
前記コンテキスト関連情報に対応する前記対象アプリケーションを実行する工程と、
を備え、
前記対象アプリケーションは、少なくとも１つのアプリケーションユニットを備え、
前記コンテキスト関連情報に対応する前記対象アプリケーションを実行する工程は、前記対象アプリケーションを用いて、対応する動作を実行する工程を含む、方法。
【請求項２】
請求項１に記載の方法であって、前記コンテキスト関連情報を決定する工程は、
デバイスのインターフェースから前記システム信号を受信する工程と、
前記システム信号を前記コンテキスト関連情報に対応付けるサブスクリプション情報に少なくとも部分的に基づいて、前記システム信号に対応する少なくとも１つのコンテキスト関連情報を決定する工程と、
を含む、方法。
【請求項３】
請求項２に記載の方法であって、前記少なくとも１つのコンテキスト関連情報を決定する工程は、
前記システム信号を用いて前記サブスクリプション情報内を検索して、前記少なくとも１つのコンテキスト関連情報を決定する工程を含み、
前記コンテキスト関連情報は、前記システム信号をサブスクリプトする、方法。
【請求項４】
請求項２に記載の方法であって、さらに、
前記コンテキスト関連情報のコンテキスト条件に従って、前記コンテキスト関連情報から、１または複数のトリガされるコンテキスト関連情報を選択する工程を備え、
前記１または複数のトリガされるコンテキスト関連情報は、前記コンテキスト条件を満たす、方法。
【請求項５】
請求項１に記載の方法であって、前記対象アプリケーションを実行する工程は、
デバイスを用いて、前記コンテキスト関連情報に対応する前記対象アプリケーションを決定する工程と、
実行に向けて前記対象アプリケーションをロードする工程と、
を含む、方法。
【請求項６】
請求項５に記載の方法であって、前記デバイスを用いて、前記対象アプリケーションを決定する工程は、
前記デバイスのデバイス情報を用いて、前記コンテキスト関連情報に対応する前記少なくとも１つのアプリケーションユニットを決定する工程と、
前記少なくとも１つのアプリケーションユニットに対応するアプリケーションを前記対象アプリケーションとして決定する工程と、
を含む、方法。
【請求項７】
請求項１に記載の方法であって、さらに、
前記少なくとも１つのアプリケーションユニットがローカルで利用できない場合に、前記少なくとも１つのアプリケーションユニットをサーバから取得する工程を備える、方法。
【請求項８】
請求項１に記載の方法であって、前記対象アプリケーションの状態は、ｃｒｅａｔｅｄ状態、ｒｕｎｎｉｎｇ状態、ｆｒｏｚｅｎ状態、および、ｓｔｏｐｐｅｄ状態を含む、方法。
【請求項９】
請求項１に記載の方法であって、前記コンテキスト関連情報に対応する前記対象アプリケーションを実行する工程は、
前記コンテキスト関連情報に対応する前記対象アプリケーションを実行する工程と、
前記対象アプリケーションの状態を制御する工程と、
を含む、方法。
【請求項１０】
請求項１に記載の方法であって、さらに、
前記対象アプリケーションのためのアプリケーションインターフェースを表示する工程を備え、
ユーザコマンド情報が、前記アプリケーションインターフェースを介して受信される、方法。
【請求項１１】
請求項１に記載の方法であって、さらに、
前記対象アプリケーションに相関する少なくとも１つの他のアプリケーションを決定する工程と、
前記少なくとも１つの他のアプリケーションが前記デバイス上で実行されうるように、前記少なくとも１つの他のアプリケーションに関連するデバイスに命令を送信する工程と、
を備える、方法。
【請求項１２】
アプリケーションを動作させるための方法であって、
第１デバイスによって、取得された第１信号に従って第１コンテキスト関連情報を決定する工程と、
前記第１デバイスによって、前記第１コンテキスト関連情報に対応する第１アプリケーションを実行する工程と、
前記第１デバイスによって、命令を第２デバイスへ送信する工程と、
を備え、
前記命令は、第２コンテキスト関連情報に対応する第２アプリケーションを実行して、対応する第２動作を行うために、前記第２デバイスによって用いられる、方法。
【請求項１３】
請求項１２に記載の方法であって、システム信号が、前記第１デバイスで受信される前記第１信号および／または第２信号を含み、コンテキスト関連情報が、前記第１コンテキスト関連情報および／または前記第２コンテキスト関連情報を含む、方法。
【請求項１４】
請求項１３に記載の方法であって、さらに、
前記システム信号を受信する工程と、
サブスクリプション関係に少なくとも部分的に基づいて、前記システム信号に対応する少なくとも１つのコンテキスト関連情報を決定する工程と、
を備える、方法。
【請求項１５】
請求項１３に記載の方法であって、
前記第１コンテキスト関連情報に対応する前記第１アプリケーションを実行する工程は、
前記第１コンテキスト関連情報に対応する前記第１アプリケーションを決定する工程と、
実行に向けて前記第１アプリケーションをロードする工程と、
を含み、
前記第２コンテキスト関連情報に対応する前記第２アプリケーションを実行する工程は、
前記第２コンテキスト関連情報に対応する前記第２アプリケーションを決定する工程と、
実行に向けて前記第２アプリケーションをロードする工程と、
を含む、方法。
【請求項１６】
請求項１２に記載の方法であって、前記第１アプリケーションは、ｃｒｅａｔｅｄ状態、ｒｕｎｎｉｎｇ状態、ｆｒｏｚｅｎ状態、および、ｓｔｏｐｐｅｄ状態という状態を含み、
前記第１コンテキスト関連情報に対応する前記第１アプリケーションを実行する工程は、
前記第１コンテキスト関連情報に対応する第１対象アプリケーションを実行する工程と、
前記第１対象アプリケーションの状態を制御する工程と、
を含む、方法。
【請求項１７】
請求項１２に記載の方法であって、前記第２アプリケーションは、ｃｒｅａｔｅｄ状態、ｒｕｎｎｉｎｇ状態、ｆｒｏｚｅｎ状態、および、ｓｔｏｐｐｅｄ状態という状態を含み、
前記第２コンテキスト関連情報に対応する前記第２アプリケーションを実行する工程は、
前記第２コンテキスト関連情報に対応する第２対象アプリケーションを実行する工程と、
前記第２対象アプリケーションの状態を制御する工程と、
を含む、方法。
【請求項１８】
請求項１２に記載の方法であって、さらに、
前記第１アプリケーションおよび／または前記第２アプリケーションのためのアプリケーションインターフェースを表示する工程と、
前記アプリケーションインターフェースを通して、ユーザ動作情報を受信する工程と、
を備え、
前記アプリケーションインターフェースは、第１アプリケーションインターフェースおよび／または第２アプリケーションインターフェースを含む、方法。
【請求項１９】
コンテキストベースのアプリケーションのためのデバイスであって、
１または複数のプロセッサであって、
取得されたシステム信号に基づいてコンテキスト関連情報を決定する工程と、
前記コンテキスト関連情報に対応する対象アプリケーションを実行する工程であって、前記対象アプリケーションは、少なくとも１つのアプリケーションユニットを備える、工程と、
前記対象アプリケーションを用いて、対応する動作を実行する工程と、を実行するよう構成された、１または複数のプロセッサと、
前記１または複数のプロセッサに接続され、前記１または複数のプロセッサに命令を提供するよう構成された１または複数のメモリと、
を備える、デバイス。
【請求項２０】
第１デバイスおよび第２デバイスを備えたアプリケーションシステムであって、
前記第１デバイスは、
取得された第１信号に従って第１コンテキスト関連情報を決定する工程と、
前記第１コンテキスト関連情報に対応する第１アプリケーションを実行する工程と、
命令を第２デバイスに送信する工程と、を実行するよう構成され、
前記第２デバイスは、
前記命令に対応する第２信号を受信する工程であって、第２コンテキスト関連情報が、前記第２信号に従って取得される、工程と、
前記第２コンテキスト関連情報に対応する第２アプリケーションを実行して、対応する第２動作を行う工程と、を実行するよう構成される、アプリケーションシステム。
【請求項２１】
アプリケーションのためのコンピュータプログラム製品であって、有形で持続性のコンピュータ読み取り可能な記憶媒体内に具現化され、
取得されたシステム信号に基づいてコンテキスト関連情報を決定するためのコンピュータ命令と、
前記コンテキスト関連情報に対応する対象アプリケーションを実行するためのコンピュータ命令であって、前記対象アプリケーションは、少なくとも１つのアプリケーションユニットを備える、コンピュータ命令と、
前記対象アプリケーションを用いて、対応する動作を実行するためのコンピュータ命令と、
を備える、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
他の出願の相互参照
本願は、２０１６年１０月１３日出願の中国特許出願第２０１６１０８９５３１８．Ｘ号「Ａ  ＣＯＮＴＥＸＴ−ＢＡＳＥＤ  ＡＰＰ  ＯＰＥＲＡＴＩＮＧ  ＭＥＴＨＯＤ，ＭＥＡＮＳ，ＴＥＲＭＩＮＡＬ  ＤＥＶＩＣＥ  ＡＮＤ  ＳＹＳＴＥＭ」の優先権を主張する。当該出願は、すべての目的のために参照により本明細書に組み込まれる。
【０００２】
本願は、一般に、端末デバイス技術の分野に関し、特に、コンテキストアウェアコンピューティング技術に関する。
【背景技術】
【０００３】
端末デバイス技術がますます多くのデバイスタイプ（例えば、スクリーンベースのデバイス、スクリーンレスデバイス、ウェアラブルデバイス、および、家庭用デバイスなど）を包含するよう発展するにつれて、ますます多くの人々がかかる端末デバイスのユーザになり、ますます多くの機能およびサービスがかかる端末デバイスで利用可能になってきた。現在、端末デバイスで提供されるサービスは、一般に、アプリケーション（アプリとも呼ばれる）の形態で提供され、一方で、端末デバイスで提供されるサービスにアクセスするためのインターフェースが、一般に、端末デバイスのホームスクリーンまたはデスクトップスクリーンに表示される。また、様々なユーザサービスが、特定のタイプのユーザのニーズに応えることに特化した様々なアプリを通して提供される。例えば、チャットサービスが、インスタントメッセージングアプリを通して提供され、オンラインショッピングサービスが、電子商取引ユーザアプリを通して提供される。ユーザは、ユーザのニーズに従って様々なサービスを提供する様々なアプリを手動で起動することができる。現在、コンテキストを切り替える際、ユーザは、或るコンテキストベースのアプリから別のコンテキストベースのアプリへ手動で切り替える必要があり、これは、不便で、時間が掛かることがあり、コンテキストベースサービスに対するユーザのニーズの根本的な変化に対応するのに時機を失することもある。
【図面の簡単な説明】
【０００４】
以下の詳細な説明と添付の図面において、本発明の様々な実施形態を開示する。
【０００５】
【図１】本開示の１または複数の実施形態における、コンテキストアウェアアプリケーションのためのシステムモデル例を示すブロック図。
【０００６】
【図２Ａ】本開示の１または複数の実施形態における、コンテキストアウェアアプリケーションのためのシステムモデル例のコンポーネントを示す関連図。
【０００７】
【図２Ｂ】本開示の１または複数の実施形態における、コンテキストアウェアアプリケーションの例を示すブロック図。
【０００８】
【図２Ｃ】本開示の１または複数の実施形態における、図１のシステム１００のコンテキストエージェントフレームワーク例の様々なコンポーネントを示すブロック図。
【０００９】
【図２Ｄ】本開示の１または複数の実施形態における、コンテキストアウェアアプリケーションのライフサイクル例を示す状態図。
【００１０】
【図２Ｅ】本開示の１または複数の実施形態における、図１のコンテキストエージェントエンジン１０６によって制御されるコンテキストアウェアアプリの状態遷移の例を示す概略図。
【００１１】
【図２Ｆ】本開示の１または複数の実施形態における、ページ間の相互作用の例を示す機能ブロック図。
【００１２】
【図２Ｇ】本開示の１または複数の実施形態における、ページの状態遷移の例を示す概略図。
【００１３】
【図２Ｈ】本開示の１または複数の実施形態における、ページの状態遷移の別の例を示す概略図。
【００１４】
【図３】本開示の１または複数の実施形態における、コンテキストアウェアアプリケーションの実行例を示す機能ブロック図。
【００１５】
【図４】本開示の１または複数の実施形態における、コンテキストアウェアアプリケーション例を実行するための処理を示すフローチャート。
【００１６】
【図５】本開示の１または複数の実施形態における、コンテキストアウェアアプリケーションを実行するための処理の別の例を示すフローチャート。
【００１７】
【図６】本開示の１または複数の実施形態における、２つのデバイスにわたって実装されたコンテキストアウェアアプリケーションの例を示す概略図。
【００１８】
【図７】本開示の１または複数の実施形態における、複数のデバイス上で実行されるコンテキストアウェアアプリのための処理の例を示すフローチャート。
【００１９】
【図８】本開示の１または複数の実施形態における、２つのコンテキスト下でのコンテキストアウェアアプリのページ遷移の例を示す概略図。
【００２０】
【図９】本開示の１または複数の実施形態における、コンテキストアウェアアプリケーションのためにプログラムされたコンピュータシステムの一実施形態を示す機能図。
【発明を実施するための形態】
【００２１】
本発明は、処理、装置、システム、物質の組成、コンピュータ読み取り可能な格納媒体上に具現化されたコンピュータプログラム製品、および／または、プロセッサ（プロセッサに接続されたメモリに格納および／またはそのメモリによって提供される命令を実行するよう構成されたプロセッサ）を含め、様々な形態で実装されうる。本明細書では、これらの実装または本発明が取りうる任意の他の形態を、技術と呼ぶ。一般に、開示された処理の工程の順序は、本発明の範囲内で変更されてもよい。特に言及しない限り、タスクを実行するよう構成されるものとして記載されたプロセッサまたはメモリなどの構成要素は、ある時間にタスクを実行するよう一時的に構成された一般的な構成要素として、または、タスクを実行するよう製造された特定の構成要素として実装されてよい。本明細書では、「プロセッサ」という用語は、１または複数のデバイス、回路、および／または、コンピュータプログラム命令などのデータを処理するよう構成された処理コアを指すものとする。
【００２２】
以下では、本発明の原理を示す図面を参照しつつ、本発明の１または複数の実施形態の詳細な説明を行う。本発明は、かかる実施形態に関連して説明されているが、どの実施形態にも限定されない。本発明の範囲は、特許請求の範囲によってのみ限定されるものであり、本発明は、多くの代替物、変形物、および、等価物を含む。以下の説明では、本発明の完全な理解を提供するために、多くの具体的な詳細事項が記載されている。これらの詳細事項は、例示を目的としたものであり、本発明は、これらの具体的な詳細事項の一部または全てがなくとも特許請求の範囲に従って実施可能である。簡単のために、本発明に関連する技術分野で周知の技術事項については、本発明が必要以上にわかりにくくならないように、詳細には説明していない。
【００２３】
「第１」、「第２」などの用語は、本願の記載および請求項ならびに図面において、類似した対象を区別するために用いられ、必ずしも特定の順番または順序を記載する意図はないことに注意されたい。このように用いられたデータは、適切な状況で交換可能であり、その場合、本明細書に記載の本願の実施形態は、本明細書に図示または記載した順序以外の順序でも実施できることを理解されたい。さらに、「含む」および「有する」という用語、ならびに、それらの任意の変化形は、非排他的な包含を網羅するよう意図されたものであり；例えば、一連の工程またはユニットを含む処理、方法、システム、製品、または、装置が、明確に列挙された工程またはユニットに必ずしも限定されることはなく、明確に列挙されていない他の工程またはユニット、もしくは、これらの処理、方法、システム、製品、または、装置に固有の他の工程またはユニットを含んでもよい。
【００２４】
本明細書で用いられる用語「端末デバイス」は、マルチメディア機能およびサービスなどのアプリケーションを利用可能なコンピュータデバイスのことである。端末デバイスの例は、スマートフォン、タブレット、ウェアラブルデバイス、セットトップボックス、パーソナルコンピュータ、スマートテレビ、スマート家電、デスクトップコンピュータ、ラップトップコンピュータ、インターネット・オブ・シングズ（ＩｏＴ）オブジェクト、などを含む。端末デバイスは、オーディオ、ビデオ、データなどのサービスをユーザに提供するよう構成されうる。いくつかの実施形態において、端末デバイスは、さらに、タッチスクリーンなどのディスプレイを組み込むよう構成されうる。様々な実施形態において、端末デバイスは、様々なオペレーティングシステムをインストールするよう構成されてよく、オペレーティングシステムは、スマートオペレーティングシステム（ＩＯＳ、Ａｎｄｒｏｉｄ、および、Ａｌｉｂａｂａ（商標）Ｃｌｏｕｄ  ＯＳなど）を含むが、これらに限定されない。
【００２５】
本明細書で用いられる用語「コンポーネント」、「サービス」、「モデル」、「アプリケーション」、および、「システム」は、ハードウェア、ハードウェアおよびソフトウェアの組みあわせ、ソフトウェア、または、実行中のソフトウェア、のいずれかであるコンピュータ関連のエンティティを指す。例えば、コンポーネントは、プロセッサ上で実行するプロセス、プロセッサ、オブジェクト、実行ファイル、実行のスレッド、プログラム、および／または、コンピュータでありうるが、これらに限定されない。１または複数のコンポーネントが、プロセスおよび／または実行のスレッドの中に存在してよく、コンポーネントは、１つのコンピュータに局在してよい、および／または、２以上のコンピュータ間に分散されてよい。
【００２６】
本明細書で用いられる用語「インターネット・オブ・シングズ」（ＩｏＴ）は、多数のオブジェクト（コンピュータまたはコンピュータネットワークに限定されない）が、ネットワーク（例えば、インターネット）を介して、読み取り可能、認識可能、場所の特定可能、および、制御可能になりうるアーキテクチャを実装する技術を指す。ＩｏＴネットワークのオブジェクトの例は、ＲＦＩＤを備えたデバイス、赤外線センサを備えたデバイス、グローバルポジショニングシステム（ＧＰＳ）を備えたデバイス、レーザスキャナを備えたデバイスなど、多様な情報収集デバイスを含みうる。ユビキタス接続の時代に、ユーザの端末デバイスは、スクリーンを備えたデバイス、スクリーンのないデバイス、家庭用デバイス、ウェアラブルデバイスなどを含むようますます多様化している。
【００２７】
図１は、本開示の一実施形態における、コンテキストアウェアアプリケーションのためのシステムモデル例を示すブロック図である。システム１００は、コンテキストエージェントホスト１０２、コンテキストエージェントフレームワーク１０４、および、コンテキストエージェントエンジン１０６を備える。一実施形態において、コンテキストアウェアアプリのためのシステム１００は、標準的なアプリ開発モデルを用いて実装される。本明細書で用いられているように、コンテキストとは、ユーザが自身の動作を実行している設定および／または条件のことである。この例において、コンテキストエージェントエンジン１０６およびコンテキストエージェントフレームワーク１０４は、下の層から提供されたコンテキスト情報を収集または検出できるようにシステム層に実装されるソフトウェアコードである。また、コンテキストエージェントフレームワーク１０４は、リアクティブプログラミングモデル、すなわち、観察可能なデータストリームを備えた非同期プログラミングパラダイムを提供するために、動的プログラミング言語（Ｊａｖａｓｃｒｉｐｔ  ｆｒｏｍ  ａ  ｒｅａｃｔｉｖｅＸ  ｌｉｂｒａｒｙ（ＲｘＪＳ）など）を用いて実装される。さらに、オブジェクト（様々なＩｏＴデバイスなど）と相互接続するための統一プロトコルが、システムの一部として実装される。様々な端末デバイスおよびそこに提供された様々なサービスを接続および制御することにより、システム１００は、ユーザが、プロアクティブかつ自動的なコンテキストアウェアアプリケーションのサービスを受けることを可能にする。コンテキストエージェントホスト１０２は、コンテキスト検出機能を備えたアプリコンテナである。本明細書で用いられているように、アプリコンテナとは、１セットのプロセスおよびリソース（メモリ、ＣＰＵ、ディスクなど）をグループ化し、ホストおよび任意のその他のコンテナから隔離する軽量仮想環境を提供するオペレーティングシステム仮想化のソフトウェアコードのことである。コンテキストエージェントホスト１０２は、ページから継承し、ページは、最も高い親レベルのアプリユニット（ローカルサービスおよびリモートサービスの抽象化に共通した要素を定義するベースオブジェクトクラス）であり、その詳細については、図２Ｂを参照して後に説明する。開発者は、コンテキストエージェントホスト１０２のインスタンスを用いてアプリコンテキストを構成し、アプリコンテキストは、次にアプリとしてシステムで実行する。図に示すように、コンテキストエージェントホスト１０２は、コンテキストエージェントＡ  １２２、コンテキストエージェントＢ  １２４、コンテキストエージェントＣ  １２６を備え、これらは、それぞれ、コンテキストアプリＡ、コンテキストアプリＢ、および、コンテキストアプリＣを表す。
【００２８】
コンテキストエージェントフレームワーク１０４は、下層のコンテキスト解析「エンジン（コンテキストエージェントエンジン１０６など）と通信するアプリケーションフレームワークである。下位のシステム層が、上位のシステム層（例えば、コンテキストエージェントホスト１０２など）のアプリケーションまたはサービスにコンテキストを検出する機能およびコンテキストアウェアサービスを提供する機能を提供する際、コンテキストエージェントフレームワーク１０４を通して提供する。
【００２９】
この例において、コンテキストエージェントフレームワーク１０４は、信号ストリーム１４２、サブスクリプション１４６、アクチュエータ１４４、および、エージェントインスタンス１４８を、コンポーネントとして備える。これらのコンポーネントの各々は、例えば、ＪａｖａｓｃｒｉｐｔのリアクティブＸライブラリ（ＲｘＪＳ）によってサポートされたＪａｖａｓｃｒｉｐｔなどの動的プログラミング言語を利用して、コンテキストに対応する処理ロジックを扱うよう構成される。コンテキストエージェントフレームワーク１０４については、図２Ｃを参照して詳述する。
【００３０】
コンテキストエージェントエンジン１０６は、コンテキストエンジンのシステムサービスであり、これは、システムに組み込まれた（例えば、システムの一部である）スタンドアロンサービスとして実装されうる。コンテキストエージェントエンジン１０６は、システムの上層にあるコンテキストベースのアプリ（例えば、コンテキストエージェントホスト１０２）を管理するよう構成される。コンテキストエージェントエンジン１０６については、図２Ｅを参照して詳述する。
【００３１】
この例において、コンテキストエージェントエンジン１０６は、エージェント管理１６２、実行スケジューリング１６３、セキュリティゲートキーパ１６４、ストリーム管理１６５、サブスクリプション管理１６６、および、アクチュエータ管理１６７を、コンポーネントとして含む。これらのコンポーネントの詳細については、図２Ｃを参照して後に詳述する。
【００３２】
図２Ａは、本開示の一実施形態における、コンテキストアウェアサービスのためのシステムモデル例のコンポーネントを示す関連ブロック図である。図に示すように、コンテキストエージェントホスト２１０２は、コンテキストエージェントＡ２１２２およびコンテキストエージェントＢ２１２４のインスタンスを備えており、その機能の継承のためにコンテキストエージェントフレームワーク２１０４に依存する。コンテキストエージェントホスト２１０２も、コンテキストエージェントエンジン２０１６によっても管理され、その詳細については、図２Ｅを参照して説明する。
【００３３】
図２Ｂは、本開示の一実施形態における、図１のシステムモデル１００に従って開発されたコンテキストアウェアアプリ例を示すブロック図である。図に示すように、コンテキストアウェアアプリケーション２２００は、クラウドアプリパッケージ２２０２、ページ２２０４、ページリング２２０６、および、任意選択的なページカバー２２０８をコンポーネントとして備える。
【００３４】
まず、開発者は、図１のコンテキストエージェントホスト１０２から派生したコンテキストアウェアアプリを構築する。かかるコンテキストアウェアアプリは、例えば、クラウドアプリパッケージ２２０２の形態で提供されてよく、クラウドアプリパッケージ２２０２は、コンテキストの操作に対応する完全なアプリパッケージ（例えば、それ自身の上で実行されうるファイルの完全なセット）である。いくつかの実施形態において、クラウドアプリパッケージは、ドメイン名で識別される。
【００３５】
ページ２２０４は、最も高い親レベルのアプリのユニット（例えば、ベースオブジェクトクラス）である。換言すると、ページ２２０４は、アプリが導き出される最もベースレベルのアプリユニットである。この例において、コンテキストエージェントホスト２２０１は、コンテキストを検出する機能およびコンテキストアウェアサービスを提供する機能をページ２２０４から継承する。
【００３６】
ページカバー２２０８は、コンテキストアウェアアプリケーションにユーザインターフェースを提供するよう構成された仮想化コンポーネントであり、ユーザインターフェースは、ユーザとデバイスとの間の相互作用を可能にするよう構成される。ページカバー２２０８は、コンテキストにサービスする過程でユーザ入力を取得するかもしくはフィードバックまたはオプションをユーザに提供するための要件がないことがあるという意味で任意選択的である。
【００３７】
ページリンク２２０６は、アプリ間の通信のためのプロトコルである。ページリンク２２０６は、コンテキストアウェアアプリを呼び出すため、または、その他のアプリと通信するために利用できる．ページリンク２２０６は、インテントメカニズムまたはサービスメカニズムなどのメカニズムを用いて実装されうる。
【００３８】
この例において、クラウドアプリパッケージ２２０２は、ドメインＡへの参照によって識別され、実行に向けて端末デバイス上にダウンロードおよびインストールされる。アプリケーションコンテキストが検出された後、１または複数のページを含むコンテキストアウェアアプリが、コンテキストに対応するサービスを提供するために実行される。さらに、ヒューマンマシンインターフェースを通して、コンテキストアウェアアプリは、さらに、ユーザによるアプリの制御を容易にするために、ユーザとの相互作用を提供する。
【００３９】
図２Ｃは、本開示の一実施形態における、図１のシステムモデル１００のコンテキストエージェントフレームワーク例１０４の様々なコンポーネントを示すブロック図である。コンテキストエージェントフレームワーク２３００は、信号ストリーム２３０２、アクチュエータ２３０４、サブスクリプション２３０５、エージェント（図示せず）、および、エージェントインスタンス２３０８を備える。
【００４０】
エージェントは、コンテキストの検出および論理処理がそれによって記述される完全なコンテキスト論理ユニット（例えば、ソフトウェアプロセス）である。
【００４１】
エージェントインスタンスは、特定の環境および特定のデバイスに対してインスタンス化されたエージェントのインスタンスである。
【００４２】
信号ストリームは、様々なデバイスおよびシステムのＩ／Ｏインターフェースなどのソースから受信される信号（温度信号、湿度信号、モーション信号など）のストリームである。信号ストリームの信号に対する動作を通して、上位のシステム層のアプリケーションに、コンテキストを検出する機能が与えられる。また、エージェントは、信号ストリームを用いてコンテキストを検出するために処理ロジックコンポーネントを組織化するよう構成される。
【００４３】
サブスクリプションは、様々な信号をそれらに対応するコンテキストに対応付けるサブスクリプション関係である。テーブル、構成ファイルなどが、対応関係を維持するために利用されうる。サブスクリプションを通して、検出された信号が、決定されたコンテキストに相関し、コンテキストは、次に、対応するコンテキストベースアプリに相関する。
【００４４】
アクチュエータは、コンテキストアウェアサービスの特定の実行可能なタスクである。それは、システムがコンテキストを検出することによってコンテキストの対応する論理処理を実行する時に実行される実際のサービスである。例えば、アクチュエータは、天候が暑くて湿度が高いことを検出した後、エアコンをつけるようタスクを課されうる。
【００４５】
コンテキストエージェントエンジンは、すべてのコンテキストアウェアアプリを管理し、それらのライフサイクルを維持するよう構成される。アプリのライフサイクルについては、図２Ｄを参照して詳述する。
【００４６】
図２Ｄは、本開示の一実施形態における、コンテキストアウェアアプリケーションのライフサイクル例を示す状態図である。アプリは、Ｃｒｅａｔｅｄ、Ｒｕｎｎｉｎｇ、Ｆｒｏｚｅｎ、および、Ｄｉｓｐｏｓｅｄという状態を含むライフサイクルを経験する。
【００４７】
Ｃｒｅａｔｅｄ２４０２は、アプリが作成された状態であり、この状態のコンテキストアウェアアプリは、すでにユーザ対象デバイス上にインストールされていることを示す。
【００４８】
Ｒｕｎｎｉｎｇ２４０４は、実行の状態であり、その間、アプリは、エージェントによって記述されたロジックに従って動作を実行する。
【００４９】
Ｆｒｏｚｅｎ２４０６は、動作停止の状態であり、その間、アプリはもはや、システムリソースを利用しないか、または、全くコンテキストサービスを提供しない。この状態では、以前にアプリによって確保または利用されていたシステムリソースは、完全に解放される、部分的に解放される、または、全く解放されない、のいずれかでありうる。しかしながら、アプリは、実行状態２４０４に復帰または復元することができ、ここで、アプリは、コンテキストエージェントエンジンによって実行され続ける。
【００５０】
Ｄｉｓｐｏｓｅｄ２４０８は、実行の完了および終了の状態である。アプリ処理が終了し、すべてのリソースが解放される。
【００５１】
図２Ｅは、本開示の一実施形態における、図１のコンテキストエージェントエンジン１０６によって制御されるコンテキストアウェアアプリの状態遷移の例を示す概略図である。この例では、まず、コンテキストエージェントホスト２５０２が、コンテキストエージェントエンジン２５０４およびエージェントコントロールＵＩ２５０６を用いて生成される。その後、コンテキストエージェントエンジン２５０４は、コンテキストエージェントホスト２５０２を停止状態に設定してよく、後に、コンテキストエージェントホスト２５０２を実行状態に戻す。コンテキストエージェントエンジン２５０４は、さらに、コンテキストエージェントホスト２５０２を制御してその実行を終了させ、それに対応して、ダイナミックページマネージャサービス（ＤＰＭＳ）にもサービスを停止させる。いくつかの実施形態において、一般にサービスプロセスとして実装されるＤＰＭＳは、ページインスタンスを実行するための管理サービスとして用いられる。コンテキストエンジン２５０４は、インテントメカニズム、バインダメカニズム、匿名共有メモリメカニズム、または、プロセス間の通信のための任意の適切なメカニズムなど、プロセス間通信メカニズムを用いてコンテキストエージェントホスト２５０２へイベントの形態で上述の制御を通信しうる。ＤＰＭＳについては、後に詳述する。
【００５２】
次に、モバイルオペレーティングシステムであるＹｕｎＯＳ（Ａｌｉｙｕｎ  ＯＳとも呼ばれる）に基づいたページ管理の一例について記載する。記載した技術は、ＩＯＳ、Ａｎｄｒｏｉｄなど、その他のオペレーティングシステムにも適用可能である。
【００５３】
（１）ページ
【００５４】
本明細書で用いられるページとは、アプリのベースユニットの形態でローカルサービスおよびリモートサービスを抽象化するサービスコンポーネントのことである。様々なデータおよび機能をパッケージングすることにより、ページが、様々な種類のサービスを提供する。いくつかの実施形態において、１つのコンテキストアウェアサービスまたはアプリが、２以上のページを備えてもよい。例えば、コンテキストアウェアアプリが、ＵＩ（ユーザインターフェース）のサービスを提供するために１つのページ、画像取得のために別のページ、および／または、アカウント認証などのバックグラウンドサービスのために別のページを備えてよい。実行中のページを、本明細書では、ページインスタンスと呼ぶこととする。それは、ローカルサービスまたはリモートサービスを実行するための実行エンティティであり、ＤＰＭＳを用いて作成されうる。例えば、ページＡによって送信されたページＢへのページリンクを受信した後、ＤＰＭＳは、ページＢのインスタンスを作成する。また、ページインスタンスは、ＤＰＭＳによってスケジューリングまたは管理され、ＤＰＭＳは、さらに、ページインスタンスのライフサイクルを維持する。
【００５５】
各ページは、ＹｕｎＯＳにおいて一意識別子を有する。例えば、ページは、ＵＲＩ（ユニフォーム・リソース識別子）を用いて識別することができ、ＵＲＩは、識別子の一意性を生み出す様々な適切な技術を用いて生成される。ＵＲＩは、対応するページを一意的に決定するためのアドレスリンクとして機能する。例えば、ページによって提供されるサービスを区別するために、サービスのタイトル、サービスのコンテンツ、サービスの提供方法、サービスのプロバイダなど、関連情報が、対応するＵＲＩに埋め込まれ、ページに割り当てられうる。
【００５６】
企業Ａによって提供されるカレンダーサービスを例に取ると、企業Ａのカレンダーサービスに対応するページに割り当てられるＵＲＩは、以下のように構成されうる：
【００５７】
Ｐａｇｅ：／／ｃａｌｅｎｄａｒ．ａ．ｃｏｍ
【００５８】
上記において、「Ｐａｇｅ：／／」は、ページに対応するアドレスとしてのこのアドレスを、ｗｗｗサイトまたはＦＴＰサイトなど他のタイプのアドレスから区別するために用いられる。「ｃａｌｅｎｄａｒ」は、提供されるサービスのタイトルを示し、一方、「ａ」は、サービスプロバイダについての情報が企業Ａであることを示す。
【００５９】
コンテキストのニーズに応じて、ページが、複数のページインスタンスの作成を必要としてもよい。同じページの異なるインスタンスを区別するために、一意ページＩＤが、さらに、識別のために各ページインスタンスに割り当てられる。かかる識別子は、ページインスタンスが作成された時に割り当てられうる。ページインスタンスは、ページの実行状態であり、すなわち、ローカルまたはリモートサービスの実行エンティティである。再び、ＤＰＭＳは、ページインスタンスのライフサイクルを作成、スケジューリング、および、管理する。同様に、ページＩＤが、情報要素（ページリンク）に埋め込まれ、送信されうる。
【００６０】
図２Ｆは、本開示の一実施形態における、ページ間の相互作用の例を示す機能ブロック図である。この例において、ページＡ  ２６０２は、（例えば、ページリンクに含まれる）イベントをページＢ  ２６０４に送信し、ページＢ  ２６０４から返されたデータを取得する。また、ページＡ２６０２は、ＵＩ  ２６０８を通してユーザ２６０６と相互作用する。また、図に示すように、ページＡ  ２６０２はサービスＡを提供し、ページＢ  ２６０４はサービスＢを提供する。ページＡ  ２６０２は、ＵＩ  ２６０８の形態で表示インターフェースをユーザ２６０６に提供し、ＵＩ  ２６０８を通して、サービスＡの結果がユーザ２６０６に提供され、ユーザ２６０６からの様々な入力が受信される。さらに、ページＢ  ２６０４は、主にバックグラウンドで実行し、他のページにサービスサポートを提供するよう構成される。
【００６１】
さらに、ページは、開発および破棄されうるものであり、したがって、開発および破棄の間に３つの状態を有する。
【００６２】
Ｃｒｅａｔｅｄは、ページが作成されたことを示す状態である。ページは、作成（すなわち、インスタンス化）された後に、作成状態に入る。
【００６３】
Ｒｕｎｎｉｎｇは、ページが生成された後の実行の状態である。この状態では、イベントおよび／またはデータが、ページ間で伝送され、それぞれの受信側ページによって処理される。
【００６４】
Ｓｔｏｐｐｅｄは、ページが非アクティブ化されたことを示す状態である。この状態では、ページは、イベントおよび／またはデータを他のページとやり取りしない。
【００６５】
図２Ｇは、本開示の一実施形態における、ページの状態切り替えの例を示す。ページは、上述の異なる状態の間で切り替わることができる。また、ライフイベント通知が、切り替え後にページの状態を構成するために、切り替え時に受信される。ＤＰＭＳは、ページ状態切り替えおよびライフイベント通知を制御する。
【００６６】
図に示すように、ページ（図示せず）がｏｎＳｔａｒｔイベント２７０３を受信すると、そのページは、Ｃｒｅａｔｅｄ状態２７０２を離れ、Ｒｕｎｎｉｎｇ状態２７０４に入る。ページは、ｏｎＳｔｏｐイベント２７０５を受信すると、Ｒｕｎｎｉｎｇ状態２７０４を離れ、Ｓｔｏｐｐｅｄ状態２７０６に入る。Ｒｕｎｎｉｎｇ状態２７０４にある時、ページは、ｏｎＬｉｎｋインターフェース２７０７を介して他のページによって送信されたページリンクを受信する。ｏｎＳｔａｒｔイベント２７０３は、Ｒｕｎｎｉｎｇ状態２７０４に入り始めるようページに指示するために用いられるライフイベント通知である。ｏｎＳｔｏｐイベント２７０５は、Ｓｔｏｐｐｅｄ状態２７０６に入り始めるようページに指示するために用いられるライフイベント通知である。
【００６７】
図２Ｈは、本開示の一実施形態における、ページの状態遷移の別の例を示す。ＵＩ（ユーザインターフェース）を有するページについて、Ｒｕｎｎｉｎｇ状態は、以下の３つのサブ状態の内の１つでありうる：
【００６８】
Ｈｉｄｄｅｎは、ページがバックグラウンドで実行し、ユーザに対して表示されていない時のサブ状態である。
【００６９】
Ｓｈｏｗｎ−ｉｎａｃｔｉｖｅ（明らかに非インタラクティブ）は、あらゆるユーザ入力に応答しないモードでページがユーザに表示されている時のサブ状態である。
【００７０】
Ｓｈｏｗｎ−ａｃｔｉｖｅ（明らかにインタラクティブ）は、ユーザ入力に応答するモードでページがユーザに表示されている時のサブ状態である。
【００７１】
例えば、ページＡは、フルスクリーンウィンドウに表示され；ページＢは、部分スクリーンウィンドウに表示される。ページＢがページＡの上に表示されている時、ページＡは、Ｓｈｏｗｎ−ｉｎａｃｔｉｖｅサブ状態にあり、ページＢは、Ｓｈｏｗｎ−ａｃｔｉｖｅサブ状態にある。
【００７２】
ライフイベントの通知を通して、ページは、異なる状態の間および異なるサブ状態の間で切り替わる。
【００７３】
図２Ｈに示すように、Ｈｉｄｄｅｎサブ状態２８０２にあるページ（図示せず）がｏｎＳｈｏｗｎイベント２８０１を受信した後、それは、Ｓｈｏｗｎ−ｉｎａｃｔｉｖｅサブ状態２８０４に入る。Ｓｈｏｗｎ−ｉｎａｃｔｉｖｅサブ状態２８０４にあるページがｏｎＨｉｄｅイベント２８０３を受信した後、それは、Ｈｉｄｄｅｎサブ状態２８０２に戻る。Ｓｈｏｗｎ−ｉｎａｃｔｉｖｅサブ状態２８０４にあるページがｏｎＡｃｔｉｖｅイベント２８０５を受信した後、それは、Ｓｈｏｗｎ−ａｃｔｉｖｅサブ状態２８０６に入る。Ｓｈｏｗｎ−ａｃｔｉｖｅサブ状態２８０６にあるページがｏｎＩｎａｃｔｉｖｅイベント２８０７を受信した後、それは、Ｓｈｏｗｎ−ｉｎａｃｔｉｖｅサブ状態２８０４に入る。
【００７４】
（２）ページリンク
【００７５】
ページリンクは、ページ間での伝送のための情報要素である。情報（イベント、データなどであるが、これらに限定されない）が、ページリンクを用いてページ間で伝送される。イベントおよびデータのかかる伝送は、プロセス間および／またはスレッド間の通信プロトコルに従って、ＡＰＩ（アプリケーションプログラミングインターフェース）の構成されたセットを用いて実施されうる。また、ページリンクの利用により、ＹｕｎＯＳは、それらの通信に従ってサービスコンポーネント間の関係を記録する。ターゲットページのＵＲＩは、（例えば、構成ファイルに格納された）ページリンク内に構成され、イベント、データ、および／または、サービスの情報も、ページリンクに含まれうる。
【００７６】
ページは、柔軟にページリンクを通して相関され、様々なコンテキストアウェアサービスの実施を達成する。
【００７７】
（３）  ＤＰＭＳ
【００７８】
本明細書で用いられるＤＰＭＳ（ダイナミックページマネージャサービス）とは、システムが提供するサービスコンポーネント管理エンティティのことである。ＤＰＭＳは、作成から始まり破棄に至るページのライフサイクルを管理する。ＤＰＭＳは、ページのランタイムスケジューリング、および、ページリンクを介してのページ間の相互作用も管理する。
【００７９】
図３は、本開示の一実施形態における、コンテキストアウェアアプリの実行例を示す機能ブロック図である。コンテキストアウェアアプリが図示されているが、本開示の実施形態は、対応するコンテキストアウェアサービスをユーザに提供するために、任意のアプリの実行に適用できることに注意されたい。
【００８０】
上述のサービスコンポーネント管理を用いて、システムは、サービスコンポーネント管理インスタンスおよびＮ個（Ｎは２以上の整数）のサービスコンポーネントを含むよう準備される。このシステムに基づいて、サービスコンポーネント管理コンポーネントは、或るサービスコンポーネントによって別のサービスコンポーネントに向けて送信された情報エンティティを受信し、処理のために第２サービスコンポーネントに情報エンティティを送信するよう構成されうる。
【００８１】
上述のシステムを用いて、コンテキストアウェアアプリケーションが、コンテキストに従ってユーザに提供されうる。
【００８２】
コンテキストエージェントが開発されると、上述のシステムに基づいた自動コンテキストアウェアサービスが、本開示の実施形態に従って提供されうる。一実施形態において、信号を受信すると、コンテキストエージェントフレームワークは、信号に対応するコンテキスト関連情報を検出し、特定のコンテキスト関連情報のための処理ロジックを決定する。結果として、コンテキストエージェントホストは、決定された処理ロジックに対処するためにコンテキストアウェアアプリを実行するようタスクを課される。かかるコンテキストアウェアアプリは、様々なアプリケーションを含みうる。例えば、温度が３０°を超えることをユーザの携帯電話が検出すると、対応するコンテキストアウェアサービスまたはアプリは、ユーザの家のエアコンを始動させる。別の例として、ユーザの家が施錠され留守であるという信号をセキュリティシステムが検出すると、対応するコンテキストアウェアアプリが、電力を節約するためにユーザの家の特定の家電製品（電気など）をオフにする。
【００８３】
いくつかの実施形態において、コンテキスト関連情報は、対応するコンテキストアウェアアプリによって操作される処理ロジックを決定するために用いられ、コンテキストアウェアアプリは、コンテキスト内で提供されるサービスに対応する。この構成において、コンテキスト関連情報は、例えば、要求されたシステム信号、ロジック処理タスク、対応するコンテキストアプリなどを含むがこれらに限定されない対応するサービスによって実施される処理ロジックを識別するために利用できる。
【００８４】
本明細書で用いられるシステム信号とは、デバイス内のデータ要素のことである。システム信号は、デバイスのデータと、デバイスによって受信されたデータと、を含む。例えば、デバイスデータは、デバイスソフトウェア命令データ、センサ信号、および、様々な種類のインターフェースデータなど、デバイス上のソフトウェアデータおよびハードウェアデータを含む。デバイスによって受信されたデータは、様々なコマンドデータ、ハードウェアデータ、および、デバイスによって受信されたインターフェースデータを含む。例えば、イヤホンがデバイスに接続されたことを示すインターフェースデータをデバイスが検出すると、メディアプレイヤーアプリが、歌または音声ファイルを再生するためにアクティブ化される。別の例において、デバイスが利用可能な外部Ｂｌｕｅｔｏｏｔｈ（登録商標、以下同じ）信号を検出すると、デバイスは、対応するＢｌｕｅｔｏｏｔｈイヤホンまたはその他のＢｌｕｅｔｏｏｔｈデバイスを、Ｂｌｕｅｔｏｏｔｈ信号を提供するＢｌｕｅｔｏｏｔｈネットワークに接続する。さらに別の例において、デバイスが天気アプリから特定の温度の温度データを検出すると、デバイスは、エアコンシステムをオンにする。いくつかのタイプ例のデータが図示されているが、本開示の実施形態は、対応するコンテキストアウェアサービスをユーザに提供するために、様々な種類のデータを取得して、様々な対応するコンテキスト関連情報を決定する工程に適用できることに注意されたい。
【００８５】
この例において、デバイスは、例えば、対応するセンサ、サービスなどを用いて、様々なタイプのシステム信号を受信するよう構成される。かかる信号は、電話着信の信号、様々なセンサによって検知されてセンサから送信された信号、ユーザの位置の信号、インターネットサービスによって生成された信号などを含みうるが、これらに限定されない。１または複数のシステム信号３０２を受信した後、コンテキスト関連情報３０４が、１または複数のシステム信号を用いて決定される。一実施形態において、コンテキストアウェアアプリによって対処される各コンテキストは、対応するシステム信号をサブスクライブするので、コンテキスト関連情報は、対応する対象コンテキストアウェアアプリ３０６を決定するために用いられ、対象コンテキストアウェアアプリ３０６は、次に、コンテキストに対処するために実行される。例えば、空調コンテキストは、温度信号をサブスクライブし、照明条件コンテキストは、オン／オフ信号、バルブの明るさの程度、モニタリング信号などをサブスクライブする。したがって、対応する対象コンテキストアウェアアプリは、コンテキスト関連情報に基づいて決定され、その結果として、コンテキストに対応するサービスを提供するために実行される。いくつかの実施形態において、対象コンテキストアウェアアプリ３０６は、コンテキストアウェアアプリユニット（例えば、ページ）３０７の少なくとも１つのインスタンスを含む。次に、対象コンテキストアウェアアプリは、コンテキスト関連情報に対応する動作３０８を実行するために呼び出される。例えば、上述のようにそれぞれのコンテキスト関連情報を受信すると、制御アプリは、空調をオンにして２７°まで温度を下げるように、無線接続され制御されたエアコンに通知し、無線接続され制御された照明をオンまたはオフにするように、照明制御アプリに通知しうる。
【００８６】
図４は、本開示の一実施形態における、コンテキストアウェアアプリを実行するための処理の例を示すフローチャートである。処理４００は、例えば、図１のシステム１００によって実施されうるが、これに限定れない。コンテキストアウェアアプリが図示されているが、本開示の実施形態は、対応するコンテキストアウェアサービスをユーザに提供するために、任意のアプリの実行に適用できることに注意されたい。
【００８７】
処理４００は、コンテキスト関連情報が、取得されたシステム信号に基づいて決定される工程４０２で開始する。システム信号は、コンテキスト検出システムで受信された様々なタイプのデータ、ＩｏＴネットワークなどのネットワークで生成された様々なタイプのデータ、などを含む。例えば、端末デバイスで受信されるシステム信号は、センサ（例えば、温度センサ、湿度センサ、モーションセンサ、など）によって受信されたデータに関連するセンサ信号、デバイスコマンド信号（例えば、電源オン／オフ信号、表示信号、など）、ホームセキュリティシステムから生成された信号、照明システムによって生成された信号、などでありうる。
【００８８】
工程４０４で、コンテキスト関連情報に対応する対象コンテキストアウェアアプリが実行され、対象コンテキストアウェアアプリは、少なくとも１つのアプリユニットを備える。この例において、コンテキストアウェアアプリは、コンテキスト関連情報に対応するよう予め構成される。各コンテキスト関連情報は、１または複数のシステム信号に対応するようリンクされうる。メッセージングのパターンとして、サブスクリプションは、ソースによって発行されてサブスクライバによって受信されるメッセージのデータ構造を定義する。したがって、かかるメッセージは、データフィールドと、データフィールドに対応するデータ記述フィールドとを含むように定義される。例えば、メッセージは、データフィールド内に３０というデータを含み、データ記述フィールド内に「温度センサ１」の記述を含みうる。例えば、メッセージは、データフィールド内に５０％というデータを含み、データ記述フィールド内に「湿度センサ１」の記述を含みうる。ここで、上述のサブスクリプションは、信号を対応するコンテキスト関連情報に対応付ける対応関係を格納するために用いられる。換言すると、コンテキスト関連情報は、サブスクリプション関係を用いて信号に基づいて決定され、その結果として、対応するコンテキストアウェアアプリが決定される。各コンテキストアウェアアプリは、少なくとも１つのアプリユニット（ページ）と、コンテキストを検知し、それに従ってサービスを提供するよう構成されたベースコンポーネントと、を備える。
【００８９】
工程４０６で、対象コンテキストアウェアアプリを用いて、コンテキスト関連情報に対応する動作が実行される。
【００９０】
システムの実行中、受信された様々なタイプのシステム信号が、上述のサブスクリプション関係を用いて、それぞれのコンテキスト関連情報に対応付けられる。次いで、コンテキスト関連情報に対応するコンテキストアウェアアプリが、対象コンテキストアウェアアプリとして決定され、このアプリは、次に実行される。対象コンテキストアウェアアプリは、コンテキスト関連情報に従ってコンテキストベースサービスを提供するために用いられる。例えば、かかる対象コンテキストアウェアアプリの動作は、エアコンシステムをオンにする、照明をオフにする、音楽を再生する、などを行うよう構成されうる。したがって、自動コンテキスト検出および自動コンテキストアウェアアプリ実行は、ＩｏＴ技術に適用可能であり、これは、コンテキストに応答する動作の自動実行を達成するためのＩｏＴネットワークにおけるオブジェクトの間の相互通信につながり、結果として、コンテキストへのタイムリーかつ敏感な応答およびユーザ体験の向上を生み出す。
【００９１】
この例において、コンテキストアウェアアプリは、１または複数のアプリユニットを備える。特に、コンテキストアプリは、特定のコンテキストをサービスするために１または複数のページを組み合わせるよう構成されうる。コンテキスト関連情報に対応するページは、コンテキスト関連情報に基づいて決定され、一方、対応するサービスは、上述のページリンクおよびＤＰＭＳを用いてページを実行することによって提供される。
【００９２】
本開示の様々な実施形態に従って、ＩｏＴネットワークに適用された場合、ＩｏＴネットワークのシステムデバイスは、自身または他のシステムデバイスのいずれかを制御する。対応するコンテキストを決定することによってそれに対処するために、ＩｏＴネットワーク内の様々なシステム信号が受信され、相関される。家庭用ネットワーウを例に取ると、照明システム、セキュリティシステム、スマート家電（例えば、スマートキッチン家電）、などからのシステム信号は、ネットワークの指定サーバを通して分散されうる。ユーザのスマートフォンが上述の家庭用ネットワークを監視するよう構成されている場合、家庭用ネットワークのすべてのシステム信号が、スマートフォンに送信される。スマートフォンは、システム信号に対応するコンテキスト関連情報を決定し、その後、コンテキスト関連情報を分散および処理するよう構成される。本開示の実施形態は、様々なデバイスから提供される信号およびサービスの統合を達成するために、システム信号および対応するコンテキスト関連情報に基づいて様々なコンテキストを開発する際に適用可能である。デバイス自体を制御するかまたは他のデバイスを制御することにより、統合された開発、制御、管理、および、メンテナンスのためのシステムが、自動コンテキストアウェアアプリケーションに提供される。
【００９３】
図５は、本開示の一実施形態における、コンテキストアウェアアプリケーションを実行するための処理の別の例を示すフローチャートである。処理５００は、例えば、図１のシステム１００によって実施されうる。コンテキストアウェアアプリが図示されているが、本開示の実施形態は、対応するコンテキストアウェアサービスをユーザに提供するために、任意のアプリの実行に適用できることに注意されたい。
【００９４】
処理５００は、システム信号がデバイスで受信される工程５０２で始まる。
【００９５】
工程５０４で、受信されたシステム信号に対応する少なくとも１つのコンテキスト関連情報が、サブスクリプション関係に基づいて決定される。
【００９６】
システム信号は、任意の適切なマッピングロジックまたはデータ構造を用いて、コンテキスト関連情報に相関するよう予め構成される。この例において、システム信号は、上述のサブスクリプションを介して予め構成されたコンテキスト関連情報に対応するよう構成される。換言すると、各コンテキストによってサブスクライブされたシステム信号は、コンテキストに対応するコンテキスト関連情報がサブスクリプション関係を参照して決定されるように、サブスクリプション関係の形態で格納される。デバイスがシステム信号を受信すると、そのデバイスは、特定のシステム信号にサブスクライブする少なくとも１つのコンテキスト関連情報を決定するために、サブスクリプション関係を検索する。例えば、温度センサまたは温度アプリから温度を示す信号を受信すると、デバイスは、Ｉ／Ｏインターフェース情報（温度センサインターフェース）またはソースプロバイダ情報（アプリの記述）に基づいて、信号が温度関連データであると判定する。システム信号は、少なくとも１つのアプリケーションコンテキスト（システム信号をサブスクライブする）のためのコンテキスト関連情報を決定するために、サブスクリプション関係をルックアップするために用いられる。ここでも、デバイスは、照明システムデバイスもしくは任意のその他のデバイスまたはスマートデバイスなど、ＩｏＴネットワークの任意の種類のオブジェクトまたはデバイスでありうる。
【００９７】
この例において、各アプリケーションコンテキストは、１または複数のシステム信号をサブスクライブすると共に、アプリケーションのためのコンテキスト条件を構成することができるよう構成される。例えば、コンテキスト条件は、他のシステム信号の閾値を設定できる。したがって、これらのコンテキスト条件は、それぞれのアプリケーションコンテキストに対応しており、コンテキスト関連情報内に格納されてよく、コンテキスト関連情報は、システム信号をトリガするためのスクリーニングに用いられる。すなわち、システム信号をサブスクライブする１または複数のコンテキスト関連情報を決定した後、このコンテキスト関連情報によってサブスクライブされた他の信号が受信されたか否か、および、このコンテキスト関連情報内に含まれるコンテキスト条件がトリガされたか否かが、さらに判定される。
【００９８】
例えば、温度信号に対応する温度が３０°を超え、エアコンシステムを用いて冷却を開始するコンテキスト条件を満たすことを示す温度信号を、スマートフォンが受信した時、スマートフォンは、エアコンシステムを冷却モードでオンにすると共に、或る期間にわたって温度を維持するなど、その他の対応する動作を実行する。別の例において、車両が走り始めたことを示す信号を、ナビゲーション機能を備えたスマートフォンが受信すると、スマートフォンは、車載システムをアクティブ化し、スマートフォンによって以前にナビゲートされたルートを参照してナビゲーションを開始する。さらに別の例において、ヘッドホンが接続されたことを示すシステム信号を、スマートフォンが受信すると、スマートフォンは、楽曲、オーディオブック、音声データなどを再生するためにメディアアプリを起動する。
【００９９】
また、本開示の実施形態は、受信された１または複数のシステム信号を統合して、１または複数のシステム信号に対応するコンテキスト関連情報を決定することにも適用されてよい。例えば、ユーザの家庭用ネットワークの場合に、温度が予め構成された温度よりも高いことを示す第１信号およびテレビがオンであることを示す第２信号を受信した後、テレビセットが配置されたリビングルームでユーザがテレビを観ているとのコンテキストが決定される。その結果として、エアコンがリビングルームでオンにされる。別の例において、キッチンオーブンがオンであることを示す第１システム信号およびキッチンのガスコンロおよびレンジフードが動作中であることを示す第２システム信号を受信した後、ユーザがキッチンで料理中であるとのコンテキストが決定される。その結果として、キッチンのスマート冷蔵庫が、音楽を再生するよう動作される。１または複数のシステム信号を用いて、システム信号をサブスクライブするコンテキスト情報を決定し、決定されたコンテキスト情報を用いて、コンテキストに対処するためにアプリ内に構成された動作を自動的に実行するようコンテキストアウェアアプリを配備することで、自動コンテキストアウェアサービスが、ユーザに提供されうる。
【０１００】
工程５０６で、コンテキスト関連情報に対応するアプリユニットが、デバイスに関連するデバイス情報に基づいて決定される。
【０１０１】
デバイス情報が、コンテキスト関連情報に対応する対象コンテキストアウェアアプリを決定するために用いられる。次いで、対象コンテキストアウェアアプリは、実行に向けてシステムにロードされる。同じコンテキスト関連情報に対応しても、異なるコンテキストアウェアアプリは、異なるデバイスで実行される。例えば、温度が３０°を超え、温度を下げる必要性を示すコンテキスト情報について、空調を制御するのは、常に、起動されるコンテキストアウェアサービスである。しかしながら、どの特定のデバイスが検出された高温のコンテキストにあるのかに応じて、異なる冷却アプリが、異なるモードおよび冷却機能を備えた異なるエアコンシステムを制御するのに必要とされる。特に、家庭用ネットワークについては、目標冷却温度まで温度を下げるために起動されるのは、家庭用エアコンである。ユーザによって現在運転されている自動車については、おそらく、家庭用ネットワークでの目標冷却温度とは異なって予め構成された目標冷却温度まで、温度を下げるために起動されるのは、車載エアコンである。そして、オフィス環境については、オフィスの温度を冷却するために調節されるのは、オフィスのセントラルエアコンである。
【０１０２】
工程５０８で、アプリユニットに対応するコンテキストアウェアアプリが、対象コンテキストアプリとして決定される。
【０１０３】
コンテキスト情報が決定された後、システム信号に対応するコンテキスト情報を検出するためのデバイス、および、コンテキスト関連情報に対応する動作を実行するためのデバイスが決定される。デバイス情報を考慮して、デバイス情報に対応する１または複数のアプリユニットが、コンテキスト情報に対処するために決定される。したがって、コンテキスト情報を考慮して、デバイスは、１または複数のページを実行するよう構成され、１または複数のページの実行の協調が、対象コンテキストアウェアサービスを達成する。特に、ページの協調は、ページリンクを用いてページのインスタンスを実行するようＤＰＭＳを実行することで実施されうる。
【０１０４】
工程５１０で、アプリユニットがデバイス上でローカルに利用可能か否かが判定される。
【０１０５】
対象コンテキストアウェアアプリが、ページに対応する動作を実行する前に、デバイスがページのローカルコピーを有するか否かが判定される。有する場合、処理５００は工程５１４に進み、そうでない場合、処理５００は工程５１２に進む。
【０１０６】
工程５１２で、アプリユニットが、サーバなどのアプリソースから取得される。
【０１０７】
ページがローカルに利用可能ではないと判定された場合、デバイスは、アプリソース（例えば、サーバ）に要求を送信し、そこからページを取得する。このページ要求は、アプリユニットのユニットＩＤ（ページＩＤ）と、その他の関連パラメータと、を含む。サーバは、ユニットＩＤを用いてアプリユニットをルックアップすると、デバイスにアプリユニットを送り返す。
【０１０８】
工程５１４で、アプリユニットはデバイス上にロードされる。
【０１０９】
工程５１６で、対象コンテキストアウェアアプリを用いて、コンテキスト関連情報に対応する動作が実行される。
【０１１０】
この例において、デバイス上へのページのローディングは、上述のページリンクなどのプロトコルを用いて、アプリユニットに対応する対象コンテキストアウェアアプリを実行するためにページのインスタンスを実行するようＤＰＭＳを呼び出すことで実施される。対象コンテキストアウェアアプリの実行は、コンテキスト情報に対応する動作を実行する。
【０１１１】
工程５１８で、対象コンテキストアプリのアプリインターフェースが表示され、このインターフェースは、ユーザから動作情報を受信するよう構成されている。
【０１１２】
いくつかの実施形態において、対象コンテキストアウェアアプリの実行中、コンテキストアウェアアプリのヒューマンマシンインターフェース（例えば、対象コンテキストアウェアアプリのために構成されたアプリインターフェース）が、さらに表示される。ユーザインターフェースを用いて、アプリによって対処されるコンテキストに対応する動作が、ユーザに通信され、加えて、ユーザが対象コンテキストアウェアアプリと相互作用することが可能になる。
【０１１３】
したがって、表示インターフェースは、アプリインターフェースを介してユーザによって実行される動作に対応する動作入力情報をユーザから受信するため、ならびに、動作情報に関するフィードバック情報または出力情報を提供するために利用されうる。
【０１１４】
例えば、エアコンシステムが２７°まで温度を下げたことを、インターフェース表示が示した時に、ユーザは、インターフェースを用いて、このコンテキスト下で、エアコンをオフにするかまたはエアコンシステムに他の温度を設定するかを選択することができる。別の例において、家に誰もおらず、照明がオフになっていることを、セキュリティシステムが示す時に、ユーザは、インターフェースを用いて、玄関灯をオンにすることができる。
【０１１５】
工程５２０で、対象コンテキストアウェアアプリに関連する他のコンテキストアウェアアプリが決定される。動作命令が、他のコンテキストアウェアアプリに関連する他のデバイス上で他のコンテキストアウェアアプリを実行するために、これらの他のデバイスに送信される。
【０１１６】
いくつかの実施形態において、コンテキストアウェアアプリによって対処される特定のコンテキストは、コンテキストに応答する動作の実行を制御するために、複数のデバイスの間での協調を必要とする。例えば、温度信号がスマートフォンで受信され、コンテキストが決定された場合、対応する動作は、エアコンシステムをオンまたはオフにする、中庭のドアを閉める、リビングルームのブラインドを下げるなどの動作でありうる。別の例において、セキュリティシステムがシステムコマンドを受信した場合、動作は、同じ照明システム内で、特定の照明（勉強部屋の照明）をオンにして、特定の照明（玄関灯）をオフにする動作でありうる。したがって、対象コンテキストアウェアアプリを決定した後、コンテキスト情報を考慮して、対象コンテキストアウェアアプリに関連する他のコンテキストアウェアアプリと、それら他のコンテキストアウェアアプリに関連する他のデバイスとを、さらに決定する必要がある。動作命令が、これら他のデバイスに送信され、これら他のデバイスでシステム信号として受信される。他のデバイスは、受信した命令を用いて、コンテキスト関連情報を検出し、コンテキスト関連情報に対応する他の動作を実行するために他のコンテキストアウェアアプリを呼び出す。ここでも、コンテキストアウェアアプリ間の相互作用を実施するため、例えば、別のコンテキストアウェアアプリの呼び出しを実行するため、または、他のアプリに接続するために、ページリンクが利用されうる。
【０１１７】
図６は、本開示の一実施形態における、２つのデバイスにわたって実装されたコンテキストアウェアアプリケーションの例を示す。コンテキストアウェアアプリが図示されているが、本開示の実施形態は、対応するコンテキストアウェアサービスをユーザに提供するために、任意のアプリの実行に適用できることに注意されたい。
【０１１８】
工程６０２：第１デバイスが第１信号を受信する。
【０１１９】
工程６０４で、第１デバイスは、サブスクリプション関係に従って、第１コンテキスト関連情報をルックアップする。
【０１２０】
工程６０６で、第１デバイスは、第１コンテキスト関連情報に対応する第１コンテキストアウェアアプリを実行する。
【０１２１】
工程６０８で、第１コンテキストアウェアアプリは、第２デバイスへ動作命令を送信する。
【０１２２】
工程６１０で、第２デバイスは、動作命令に対応する第２信号に基づいてサブスクリプション関係をルックアップし、第２信号に対応する第２コンテキスト関連情報を決定する。
【０１２３】
工程６１２で、第２デバイスは、第２コンテキスト関連情報に対応する第２コンテキストアウェアアプリを実行する。
【０１２４】
工程６１４で、第２コンテキストアウェアアプリは、それに応じて第２動作を実行する。
【０１２５】
いくつかの実施形態では、工程４１４で、ユーザが、第２デバイスによる動作と相互作用できるように、第２ユーザインターフェースが第１デバイスのディスプレイに統合される。
【０１２６】
図７は、本開示の一実施形態における、複数のデバイス上で実行されるコンテキストアウェアアプリのための処理の例を示すフローチャートである。コンテキストアウェアアプリが図示されているが、本開示の実施形態は、対応するコンテキストアウェアサービスをユーザに提供するために、任意のアプリの実行に適用できることに注意されたい。
【０１２７】
処理７００は、第１デバイスが、取得した第１信号に従って第１コンテキスト関連情報を決定する工程７０２で始まる。
【０１２８】
工程７０４で、第１デバイスは、第１コンテキスト関連情報に対応する第１コンテキストアウェアアプリの実行を通して、第２デバイスへ動作命令を送信する。
【０１２９】
ここで用いられているように、第１デバイスによって受信されるシステム信号は、第１信号と呼ばれ、第２デバイスによって受信されるシステム信号は、第２信号と呼ばれる。実行時、第１デバイスは、第１信号を受信し、第１信号は、要求、命令、または、サーバから受信された何らかの他のシステム信号であってよく、あるいは、その信号は、デバイスのセンサによって検出されたデータなどのシステム信号、もしくは、そのデバイスまたはリモートネットワークのデバイスまたは他のユーザのデバイスなどの上で実行するアプリからのシステム信号であってもよい。１または複数の信号が受信されると、１または複数の信号は、対応する第１コンテキスト関連情報を決定するために用いられる。換言すると、１または複数の信号の各々をサブスクライブする対応するコンテキスト関連情報が、サブスクリプション関係からルックアップされ、第１コンテキスト関連情報として決定される。次に、第１コンテキスト関連情報に対応する第１コンテキストアウェアアプリが取得され、次に、対応する第１動作を実行するために実行される。第１コンテキストアウェアアプリが、他のコンテキストアウェアアプリで提供されるサービスを必要とすると判定された場合、アプリ間またはサービス間の通信プロトコル（例えば、上述のページリンク）が、第２デバイス上で第２コンテキストアウェアアプリを呼び出すため、および、第２デバイスに動作命令を送信するために用いられる。
【０１３０】
工程７０６で、第２デバイスは、第１デバイスから受信した動作命令に対応する第２信号を受信し、それにより、第２信号に従って第２コンテキスト関連情報を決定する。
【０１３１】
工程７０８で、第２デバイスは、対応する第２動作を実行するために、第２コンテキスト関連情報に対応する第２コンテキストアウェアアプリを実行する。
【０１３２】
第２デバイスは、第１デバイスによって送信された動作命令に対応する第２信号を受信する。第２信号は、第２コンテキスト情報を決定するために用いられる。一例において、第２デバイスは、サブスクリプション関係を用いて、第２信号をサブスクライブするコンテキスト情報をルックアップする。さらに、コンテキスト情報およびサブスクライブされた他の信号の各々のコンテキスト条件が決定される。コンテキスト情報がサブスクライブするすべてのシステム信号が受信され、予め構成されたコンテキスト条件すべてが満たされると、コンテキスト情報は、第２コンテキスト情報として決定される。ここでも、第２コンテキスト関連情報に対応する第２コンテキストアウェアアプリが決定され、次に、対応する第２動作を実行するために実行される。
【０１３３】
コンテキストアウェアアプリケーションのための上述のシステムに基づいて、コンテキストアウェアアプリが、以下の例において複数の協調するデバイス上で実行される。デバイスのコンテキストエージェントフレームワークの信号ストリームが、様々なシステム信号および他のデバイスからの信号を収集して処理する。次いで、サブスクリプションを参照して、様々な信号が、対応するコンテキスト決定およびコンテキストアウェアアプリケーションに対応付けられる。次に、論理ユニット（エージェント）に基づいて、コンテキストの決定およびその論理処理が行われる。その後、サービスタスク（アクチュエータ）が決定され、エージェントのインスタンス（エージェントインスタンス）を実行するために実行され、エージェントインスタンスは、特定のデバイスおよびコンテキストに対応する。エージェントインスタンスを用いて、上位のシステム層のコンテキストアウェアアプリ（コンテキストエージェント）が、アプリ間相互作用プロトコル（ページリンク）に基づいて呼び出される。コンテキストエージェントは、コンテキスト情報を検出してコンテキストアウェアサービスを提供するよう構成されたアプリユニット（ページ）を備える。ページが、コンテキスト情報に対応する動作を実行するために実行される。ユーザ相互作用が必要である場合、インターフェースが、表示モジュール（ページカバー）を用いて構成される。したがって、ページカバーは、コンテキストアウェアアプリにヒューマンマシンインターフェースを提供する。さらに、ページリンクは、複数のデバイスおよび複数のアプリの協調によって提供されるコンテキストアウェアサービスを達成するなどのために、他のアプリとの通信に利用されうる。コンテキスト決定およびサービス提供の過程で、コンテキストエンジン（コンテキストエージェントエンジン）が、上位のシステム層のコンテキストアプリを制御すると共にコンテキストアプリのライフサイクルを維持するよう、コンテキストエージェントホストを管理するために用いられる。様々な信号管理が、或る状態から別の状態へのコンテキストアプリの遷移を維持するために利用されうる。
【０１３４】
コンテキストアウェアサービスの２つの例を以下に示す。両方の例において、コンテキストアウェアアプリまたはコンテキストアウェアサービスが、クラウドアプリの形態で開発者によって開発され、そのインストールパッケージは、アプリセンタまたはアプリストア（ページセンタとも言う）のプラットフォームにアップロードされうる。特に、クラウドアプリパッケージは、エージェントコード（アプリコード）およびマニフェスト（リスト）を含む。
【０１３５】
第１の例では、ロボットからの信号処理に関する第１クラウドアプリ１パッケージが、ページセンタにアップロードされる。次いで、ロボットに対応する信号が検出され、その後、ロボットに対応するアプリがページセンタでルックアップされる。その後、ページセンタは、コンテキスト解析エンジンをデバイスに転送する。コンテキスト解析エンジンは、ｓｉｎｄＬｉｎｋを用いて、ＤＰＭＳ／ＳＰＭＳ（スタティックページマネージャサービス）を決定し、ＤＰＭＳ／ＳＰＭＳは、対応するアプリをルックアップするために用いられる。対応するアプリがローカルデバイスで利用可能ではない場合、ダウンロードの要求がページセンタに送信される。そうでない場合、ｓｉｎｄＬｉｎｋが、ロボットのアプリを呼び出すために用いられる。アプリのために構成されたインターフェースがある場合、アプリインターフェースも表示される。アプリインターフェースとの相互作用の間、要求されたアプリユニットは、コンテキストアウェアアプリの実行に向けて、ページセンタからダウンロードされるか、または、対応するローカルコピーから呼び出されうる。
【０１３６】
第２の例では、株式情報に関する第２クラウドアプリ２パッケージが、ページセンタにアップロードされ、その後、株式情報をルックアップするための信号が発行される。次に、株式情報に関連するアプリがページセンタで特定され、ページセンタは、次に、デバイスのコンテキスト解析エンジンにアプリを転送する。次に、コンテキスト解析エンジンは、ｓｉｎｄＬｉｎｋを用いて、ＤＰＭＳ／ＳＰＭＳ（スタティックページマネージャサービス）を決定し、ＤＰＭＳ／ＳＰＭＳは、対応するコンテキストアウェアアプリをルックアップするために用いられる。コンテキストアウェアアプリがローカルデバイスで利用可能ではない場合、ダウンロードの要求がページセンタに送信される。そうでない場合、ｓｉｎｄＬｉｎｋが、株式アプリを呼び出すために用いられる。株式アプリのために構成されたインターフェースがある場合、アプリインターフェースは、それに従って表示される。アプリインターフェースとの相互作用の間、要求されたアプリユニットは、コンテキストアウェアアプリの実行に向けて、ページセンタからダウンロードされるか、または、アプリユニットの対応するローカルコピーから呼び出されうる。
【０１３７】
アプリコンテキストに必要な１または複数のページが決定された後、ＤＰＭＳは、ページを実行するために用いられる。ＤＰＭＳは、ＳＰＭＳからページを取得し、ＳＰＭＳは、ページパッケージのローカルコピーが利用可能である場合にはローカルディスクからページを取得し、そうでない場合にはページセンタから取得する。ページが利用可能になった場合、ＤＰＭＳは、ページ実行プロセス（ページプロセス）を実行し、ユーザにサービスを提供するために、任意の対応するユーザインターフェースを表示する。
【０１３８】
本開示の一実施形態では、ページの形態のサービスコンポーネントが、様々なサービスをユーザに提供するよう構成される。したがって、端末デバイスで、コンテキストアプリは、対応するサービスをユーザに提供するために複数のページの組みあわせで構成されうる。第１ページから第２ページへの遷移が、ＤＰＭＳ時間の次元に基づいて実行されてよく、その後、対応するページがそれに従って実行される。
【０１３９】
図８は、本開示の一実施形態における、２つのコンテキスト下でのコンテキストアウェアアプリのページ遷移の例を示す概略図である。コンテキストアウェアアプリが図示されているが、本開示の実施形態は、対応するコンテキストアウェアサービスをユーザに提供するために、任意のアプリの実行に適用できることに注意されたい。第１コンテキスト（アプリコンテキスト１）において、ユーザは、ページ２に向けたページリンクを生成してそのページリンクをＤＰＭＳを介してページ２に送信するようページ１をトリガするために、ビジネスアプリのユーザインターフェースと相互作用する。ページ１によって送信されたページリンクを受信した後、ページ２は、ページ３に向けたページリンクを処理および生成し、ＤＰＭＳを介してページ３にそのページリンクを送信する。このページリンクの受信および処理の後、ページ３は、ページ４に向けたページリンクを生成してＤＰＭＳを介してページ４にページリンクを送信するだけではなく、ＤＰＭＳを介してページ８に送信されるページ８に向けたページリンクも生成する。ページリンクを受信した後、ページ４は、それを処理して、ページ３に処理結果を送り返す。
【０１４０】
別のコンテキスト（アプリコンテキスト２）において、ユーザは、ページ２に向けたページリンクを生成してそのページリンクをＤＰＭＳを介してページ２に送信するようページ５をトリガするために、ビジネスアプリのために構成されたＵＩと相互作用する。ページ５によって送信されたページリンクを受信した後、ページ２は、ページ６に向けたページリンクを処理および生成し、ＤＰＭＳを介してページ６にそのページリンクを送信する。ページリンクを受信した後、ページ６は、それを処理して、ページ７に向けたページリンクを生成し、ＤＰＭＳを介してページ７にそれを送信する。ページ７は、ページリンクを受信した後、それを処理し、ページ１０に向けたページリンクを生成して、ＤＰＭＳを介してページ１０へそれを送信する。ページ１０は、ページリンクを受信した後、それを処理して、ページ７に処理結果を送り返す。
【０１４１】
例えば、ユーザ旅行ガイドページから生成されたシステム信号に基づいて、ユーザが旅行を計画中であるとのコンテキストが決定される。この時点で、このコンテキストは、航空機チケットアプリ、ホテルアプリ、支払いアプリ、天気予報アプリ、などのサービスの提供に関連する他のタイプのページを提供するために用いられる。旅行ガイドページから天気予報ページに移行して旅行ガイドページに戻り、航空機チケットページ、ホテルページ、そして、支払いページに移行することにより、ユーザは、もはや、旅行ガイドアプリからこれらの関連する他のアプリに手動で切り替える必要はない。ページからページへ移行することができ、ページ間の連鎖関係性がコンテキストに対応することで、様々な種類のサービスが、特定のコンテキスト下でユーザに提供される。本開示の実施形態で、上述のアプリ開発システムモデルは、開発者が、コンテキストアウェアサービスまたはアプリを開発し、幅広いサービスおよびその便利な動作をユーザに提供できるように様々なデバイスおよびサービスを相関させることを可能にする。
【０１４２】
図９は、本開示の一実施形態における、コンテキストアウェアアプリケーションのためにプログラムされたコンピュータシステムの一実施形態を示す機能図である。コンピュータシステム９００は、必要に応じて、図１のシステム１００および図４〜図７の処理を実施するために利用できる。  明らかに、コンテキストアウェアアプリケーションのためのシステムおよび方法を実施するために、他のコンピュータシステムアーキテクチャおよび構成を用いることも可能である。コンピュータシステム９００は、プロセッサ９１およびメモリ９２を備える。プロセッサ９１は、上述の処理を実施するために、メモリ９２に格納されたコンピュータコードを実行する。
【０１４３】
メモリ９２は、端末デバイス動作を支援してデータを格納するよう構成される。データの例は、端末デバイス上の動作に用いられる任意のアプリまたはメソッド命令（メッセージ、画像、および、ビデオなど）を含む。メモリ９２は、ランダムアクセスメモリ（ＲＡＭ）または不揮発性メモリ（磁気ディスク記憶デバイスなど）であってよい。
【０１４４】
任意選択的に、プロセッサ９１は、処理コンポーネント９０内に構成される。コンピュータシステム９００は、さらに、通信コンポーネント９３、電源コンポーネント９４、マルチメディアコンポーネント９５、オーディオコンポーネント９６、入力／出力インターフェース９７、および／または、センサコンポーネント９８を備えてよい。
【０１４５】
処理コンポーネント９０は、コンピュータシステム９００の全体の動作を制御する。処理コンポーネント９０は、命令を実行するための１または複数のプロセッサ９１を備えうる。さらに、処理コンポーネント９０は、処理コンポーネント９０と他のコンポーネントとの間の相互作用を容易にするための１または複数のモジュールを備えてよい。例えば、処理コンポーネント９０は、マルチメディアコンポーネント９５と処理コンポーネント９０との間の相互作用を容易にするためのマルチメディアモジュールを備えてよい。
【０１４６】
電源コンポーネント９４は、コンピュータシステム９００の様々なコンポーネントに電力を供給する。電源９４は、電源管理システムと、１または複数の電源と、コンピュータシステム９００への電力の生成、管理、および、分配に関するその他のコンポーネントと、を備えうる。
【０１４７】
マルチメディアコンポーネント９５は、コンピュータシステム９００とユーザとの間に提供された出力インターフェース表示スクリーンを備える。いくつかの実施形態において、表示スクリーンは、液晶ディスプレイ（ＬＣＤ）またはタッチパネル（ＴＰ）を備えてよい。表示スクリーンがタッチパネルを備える場合、表示スクリーンは、ユーザから入力信号を受信するためのタッチスクリーンとして実装されてよい。タッチパネルは、タッチパネル上のタッチ、スライド動作、および、ジェスチャを検出するための１または複数のタッチセンサを備える。タッチセンサは、タッチまたはスライド動作の境界を検出するだけではなく、タッチまたはスライド動作に関する持続時間および圧力を測定することもできる。
【０１４８】
オーディオコンポーネント９６は、音声信号を出力および／または入力するよう構成される。例えば、オーディオコンポーネント９６は、マイク（ＭＩＣ）を備える。コンピュータシステム９００が動作モード（例えば、音声認識モード）にある時、マイクは、外部音声信号を受信するよう構成される。受信された音声信号は、さらに、ストレージデバイス９２に格納されるかまたは通信コンポーネント９３によって送信されうる。いくつかの実施形態において、オーディオコンポーネント９６は、さらに、音声信号の出力のためにスピーカを備える。
【０１４９】
入力／出力インターフェース９７は、処理コンポーネント９０と周辺インターフェースモジュールとの間のインターフェースを提供する。周辺インターフェースモジュールは、キーボード、クリックホイール、ボタンなどであってよい。これらのボタンは、ボリュームボタン、スタートボタン、および、ロックボタンを含むが、これらに限定されない。
【０１５０】
センサコンポーネント９８は、１または複数のセンサを備え、コンピュータシステム９００の様々な態様の状態評価を提供するために用いられる。例えば、センサコンポーネント９８は、端末デバイスのオン／オフ状態、コンポーネントの相対位置、および、ユーザとコンピュータデバイス９００との間の接触の有無を検出してよい。センサコンポーネント９８は、近接センサを備えてよく、近接センサは、ユーザと端末デバイスとの間の距離の測定を含め、物理的接触がない時に近接する物体の存在を検出するよう構成される。いくつかの実施形態において、センサコンポーネント９８は、さらに、カメラを備えてもよい。
【０１５１】
通信コンポーネント９３は、コンピュータシステム９００と他のデバイスとの間の有線または無線通信を容易にするよう構成される。コンピュータシステム９００は、Ｗｉ−Ｆｉ、２Ｇ、３Ｇ、または、それらの組みあわせなどの通信規格に基づいて無線ネットワークにアクセスできる。コンピュータシステム９００は、ＳＩＭカードを挿入するためのＳＩＭカードスロットを備えてよく、ＳＩＭカードは、端末デバイスがＧＰＲＳネットワークに登録し、インターネットとサーバとの間の通信を確立することを可能にする。
【０１５２】
説明および実際面で本明細書に開示した発明を考慮すると、当業者であれば、本願の実施のための他のスキームを容易に考えつく。本願は、本願の一般原理に従う本願のあらゆる変形例、用途、または、適応例を網羅し、本願によって開示されていない技術分野における公知または慣習的技術手段を含むことを意図する。説明および実施形態は、単に例示と見なされる。本願の真の射程範囲および思想は、以下の特許請求の範囲で示される。
【０１５３】
用語「備える」または「含む」またはそれらの活用形は、非排他的な意味に取られることにも注意されたい。したがって、一連の要素を備える処理、方法、製品、または、装置は、それらの要素を備えるだけでなく、明示的に挙げられていない他の要素、もしくは、かかる処理、方法、製品、または、装置に内在する要素をも備える。さらなる限定がなければ、「（単数の名詞）を備える」という表現によって限定される要素は、さらなる同一の要素が、かかる要素を備える処理、方法、製品、または、デバイスに存在することを排除しない。
【０１５４】
以上は、本願の好ましい実施形態にすぎず、本願を限定することはない。実施される任意の変形、等価的な置換、または、改良が、本願の保護範囲内に含まれる。
【０１５５】
上述の実施形態は、理解しやすいようにいくぶん詳しく説明されているが、本発明は、提供された詳細事項に限定されるものではない。本発明を実施する多くの代替方法が存在する。開示された実施形態は、例示であり、限定を意図するものではない。
【図１】
2019537766.tif 000003
【図２Ａ】
2019537766.tif 000004
【図２Ｂ】
2019537766.tif 000005
【図２Ｃ】
2019537766.tif 000006
【図２Ｄ】
2019537766.tif 000007
【図２Ｅ】
2019537766.tif 000008
【図２Ｆ】
2019537766.tif 000009
【図２Ｇ】
2019537766.tif 000010
【図２Ｈ】
2019537766.tif 000011
【図３】
2019537766.tif 000012
【図４】
2019537766.tif 000013
【図５】
2019537766.tif 000014
【図６】
2019537766.tif 000015
【図７】
2019537766.tif 000016
【図８】
2019537766.tif 000017
【図９】
2019537766.tif 000018
【国際調査報告】
2019537766.tif 000019