(57)【要約】      （修正有）【課題】実行環境を適応させるために使用することができるコンテキストアウェアネスプラットフォームのためのシステムおよび方法を提供する。【解決手段】フレームワークはコンピュータシステムの実行環境についてのコンテキスト情報を設定し、追跡し、取得するインターフェースを備える。フレームワークはプラットフォーム上で稼動している実行可能プログラムによってアクセスするためのコンテキスト情報をプラットフォームレベルで集約するためのコンテキストエンジン２０８、および統合のデータストアを含む。コンテキストエンジン２０８は、データストア内のコンテキスト情報の設定、追跡、および取得など、コンテキスト情報オペレーションを実行する旨の要求を実行可能ファイルから受信する。コンテキスト情報の変更の通知を受信すると、１つまたは複数の実行可能プログラムは、システム設定を再構成するなど、実行環境を変える。【選択図】図４
2006209774.tif 000002
【特許請求の範囲】
【請求項１】
実行可能プログラムにコンテキスト情報を提供するコンピュータシステムであって、
実行可能ソフトウェアコードと、
前記実行可能ソフトウェアコードに動作可能に結合されたコンテキスト構成要素であって、コンテキスト情報オペレーションを要求するために実行可能ソフトウェアコードによって呼び出し可能なアプリケーションプログラミングインターフェースを有するコンテキスト構成要素と、
前記コンテキスト構成要素に動作可能に結合されたコンテキストエンジンであって、前記実行可能ソフトウェアコードによって要求された前記コンテキスト情報オペレーションを実行するコンテキストエンジンと、
前記コンテキストエンジンに動作可能に結合された統合のデータストアであって、コンテキスト情報を永続的に格納する統合のデータストアと
を含むことを特徴とするコンピュータシステム。
【請求項２】
コンテキスト情報オペレーションを要求するために前記実行可能ソフトウェアコードによって呼び出し可能な前記アプリケーションプログラミングインターフェースは、コンテキスト情報を設定するよう要求するアプリケーションプログラミングインターフェースを含むことを特徴とする請求項１に記載のシステム。
【請求項３】
コンテキスト情報オペレーションを要求するために前記実行可能ソフトウェアコードによって呼び出し可能な前記アプリケーションプログラミングインターフェースは、コンテキスト情報を取得するよう要求するアプリケーションプログラミングインターフェースを含むことを特徴とする請求項１に記載のシステム。
【請求項４】
コンテキスト情報オペレーションを要求するために前記実行可能ソフトウェアコードによって呼び出し可能な前記アプリケーションプログラミングインターフェースは、コンテキスト情報の変更を追跡するよう要求するアプリケーションプログラミングインターフェースを含むことを特徴とする請求項１に記載のシステム。
【請求項５】
前記コンテキストエンジンは、前記実行可能ソフトウェアコードによって要求された前記コンテキスト情報オペレーションを実行するコンテキストメッセージプロセッサを含むことを特徴とする請求項１に記載のシステム。
【請求項６】
前記コンテキストエンジンは、通知メッセージを前記コンテキスト情報とともに前記実行可能ソフトウェアコードに送信するコンテキストノーティファイアを含むことを特徴とする請求項１に記載のシステム。
【請求項７】
前記コンテキストエンジンは、通知メッセージを前記コンテキスト情報とともに前記実行可能ソフトウェアコードに非同期で送信するノーティファイアスレッドを含むことを特徴とする請求項１に記載のシステム。
【請求項８】
前記統合のデータストアは、ユーザアクティビティ、アプリケーション状態、およびマシン状態のコンテキスト情報を永続的に格納するデータストアを含むことを特徴とする請求項１に記載のシステム。
【請求項９】
請求項１に記載の前記システムを含むコンピュータ実行可能構成要素を有することを特徴とするコンピュータ可読媒体。
【請求項１０】
実行可能ソフトウェアコードにコンテキスト情報を提供する方法であって、
実行可能ソフトウェアコードのコンテキスト情報を設定するアプリケーションプログラミングインターフェースを呼び出すステップと、
前記実行可能ソフトウェアコードの前記コンテキスト情報を設定するステップと、
前記実行可能ソフトウェアコードの前記コンテキスト情報を取得するアプリケーションプログラミングインターフェースを呼び出すステップと、
ユーザアクティビティ、アプリケーション状態、およびマシン状態のコンテキスト情報を含む統合のデータストアから前記実行可能ソフトウェアコードの前記コンテキスト情報を取得するステップと
を含むことを特徴とする方法。
【請求項１１】
前記実行可能ソフトウェアコードのコンテキスト情報を設定する旨の要求を受信するステップをさらに含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記実行可能ソフトウェアコードのコンテキスト情報を追跡する旨の要求を受信するステップをさらに含むことを特徴とする請求項１０に記載の方法。
【請求項１３】
前記実行可能ソフトウェアコードのコンテキスト情報を取得する旨の要求を受信するステップをさらに含むことを特徴とする請求項１０に記載の方法。
【請求項１４】
前記コンテキスト情報の更新を実行可能ソフトウェアコードに通知するステップをさらに含むことを特徴とする請求項１０に記載の方法。
【請求項１５】
通知メッセージを前記コンテキスト情報とともに前記実行可能ソフトウェアコードに非同期で送信する通知スレッドを作成するステップをさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記コンテキスト情報を、ユーザアクティビティ、アプリケーション状態、およびマシン状態のコンテキスト情報を含む統合のデータストアに永続的に格納するステップをさらに含むことを特徴とする請求項１０に記載の方法。
【請求項１７】
前記実行可能ソフトウェアコードの命令を実行するために取得された前記コンテキスト情報を使用して、前記実行可能ソフトウェアコードの実行環境を変更するステップをさらに含むことを特徴とする請求項１０に記載の方法。
【請求項１８】
請求項１０に記載の前記方法を実行するコンピュータ実行可能命令を有することを特徴とするコンピュータ可読媒体。
【請求項１９】
実行可能プログラムにコンテキスト情報を提供するコンピュータシステムであって、
コンテキスト情報オペレーションを実行するためにアプリケーションプログラミングインターフェースを呼び出す手段と、
前記コンテキスト情報オペレーションを実行する手段と、
実行可能ソフトウェアコードの前記コンテキスト情報を取得するアプリケーションプログラミングインターフェースを呼び出す手段と、
前記実行可能ソフトウェアコードの前記コンテキスト情報を取得する手段と
を含むことを特徴とするコンピュータシステム。
【請求項２０】
ユーザアクティビティ、前記実行可能ソフトウェアコードの状態、および前記コンピュータシステムの状態のコンテキスト情報を含む統合のデータストア内に前記コンテキスト情報を永続的に格納する手段をさらに含むことを特徴とする請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にコンピュータシステムに関し、より詳細には、実行環境を適応させるために使用することができるコンテキストアウェアネスプラットフォームの改良されたシステムおよび方法に関する。
【背景技術】
【０００２】
コンピュータユーザは、コンピュータシステムが新しいまたは変更されたコンピューティング環境および／または動作環境に知的に適応することができないことで、長い間苛立ちを感じていた。この苛立ちは、しばしば複数の物理的な場所で、また様々な環境下で異なる大量のアクティビティを処理する可能性のあるモバイルコンピュータのユーザにとってはなおさら深刻となる。例えば、１日の初めに、モバイルコンピュータのユーザは、家にいて、電子メールやインスタントメッセージングを使用して、家族や友達と対話するかもしれない。次いでその後、モバイルコンピュータのユーザは、職場で会議中にプレゼンテーションを行うかもしれない。モバイルコンピュータのユーザは、夜に、翌日の商談のために飛行機で移動しながら取引申込書を作成しているかもしれない。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
残念ながら、ある環境での構成は別の環境ではすでに適切ではなく、変更する必要がある場合でさえ、コンピュータは、こうした異なる環境および使用ごとに同じように構成されたままである場合がある。例えば、ユーザは、家のネットワークと職場のネットワークとの間を移動する場合、物理的な場所を変えるようにモバイルコンピュータを構成する必要がある場合がある。この場合、ユーザは、デフォルトのプリンタ設定、デフォルトのインターネットブラウザホームページ、インターネットブラウザプロキシ設定、および他の関連の設定を変更する必要がある場合がある。また、ユーザは、アクティビティを変更するようコンピュータを構成する必要がある場合もある。例えば、プレゼンテーションを行う準備をしているユーザは、コンピュータのボリュームを調整し、インスタントメッセージ通知をオフにし、スクリーンセーバのタイムアウトをオフにし、他の設定調整を行うかもしれない。また、ユーザは、職場では家で対話する人とは異なる人と対話するようコンピュータを構成する必要がある場合もある。例えば、家では、友人や家族と通信するために、職場で使用する電子メールアカウントとは異なるデフォルトの電子メールアカウントを使用するかもしれない。その結果、モバイルコンピュータのユーザは、コンピューティング環境が変わるたびにモバイルコンピュータを再構成する必要がある場合がある。
【０００４】
コンテキスト情報を使用してコンピュータをコンピューティング環境に知的に適応させることができるように、コンピュータシステムが、物理的な場所、その物理的な場所でユーザが対話する可能性のある人物、ユーザのアクティビティなど、コンピューティング環境に関するコンテキスト情報を収集し、提示する方法が必要である。こうしたシステムおよび方法は、任意の実行可能プログラム（ｅｘｅｃｕｔａｂｌｅ）がコンテキスト情報を提供し、または使用して、コンピュータシステムを知的に適応させるように、均一の体系的な方法でコンテキスト情報を収集し、提示するべきである。
【課題を解決するための手段】
【０００５】
簡潔に言えば、本発明は、実行環境を適応させるために使用することができるコンテキストアウェアネスプラットフォームの改良されたシステムおよび方法を提供する。このため、本発明は、コンピュータシステムの実行環境についてのコンテキスト情報を設定し、追跡し、取得するインターフェースを備える構成要素およびフレームワークを提供する。提供される構成要素の中には、例えば、様々な実行可能プログラム、および統合のデータストアを含むデータストレージ設備に動作可能に結合されるコンテキストプラットフォームがある。データストア（データ記憶装置）は、プラットフォーム上で稼動する実行可能プログラムによってアクセスするためのコンテキスト情報の集約をプラットフォームレベルで行うことによって、コンテキストプラットフォームのコンテキスト情報の統合されたストレージを提供する。それだけには限定されないが、ユーザコンテキストデータ、実行可能コンテキストデータ、およびシステムコンテキストデータを含めて、任意のタイプのコンテキスト情報を（データストアに）格納することができる。
【０００６】
コンテキストプラットフォームは、コンテキストプラットフォームの様々な部分と他の実行可能プログラムとの間のプログラムに基づいた対話およびデータ交換を調整するために、コンテキストアプリケーションプログラミングインターフェース、および以下コンテキストエンジンと呼ぶ実行可能コードを含む。コンテキストアプリケーションプログラミングインターフェースは、実行可能プログラムがコンテキスト情報を設定し、追跡し、または取得するために、アクセスを提供する。コンテキスト情報を設定し、追跡し、または取得するために、任意の実行可能プログラムを、コンテキストアプリケーションプログラミングインターフェースに動作可能に結合する。コンテキストエンジンは、データストア内のコンテキスト情報の設定、追跡、および取得など、コンテキスト情報オペレーションを実行する旨の要求を実行可能プログラムから受信する。例えば、コンテキストエンジンは、コンテキスト情報を更新する旨の要求を受信したり、コンテキスト情報の変更について通知されるよう要求した実行可能プログラムを探したり、コンテキスト情報の変更の通知を実行可能プログラムに送信する。コンテキスト情報の変更の通知を受信した結果、１つまたは複数の実行可能プログラムは、システム設定を再構成するなど、実行環境を変えることができる。このように、実行可能プログラムは、コンテキスト情報を使用して、その実行環境を適応させる。
【０００７】
コンテキストプラットフォームは、コンテキスト情報を使用してコンピュータを実行環境に知的に適応させることができるように、コンピュータシステムが、物理的な場所、その物理的な場所でユーザが対話する可能性のある人物、ユーザのアクティビティなど、実行環境に関するコンテキスト情報を有利に収集し、提示する。さらに、コンテキストプラットフォームは、拡張可能であり、コンテキスト情報を提供し、使用し得る任意の数の実行可能プログラムをサポートする。さらに、コンテキストプラットフォームは、任意のサイズおよび／またはフォーマットのデータのコンテキスト情報をサポートする。他の利点は、以下の詳細な説明を図面と併せ読めば、理解できよう。
【発明を実施するための最良の形態】
【０００８】
動作環境の例
図１は、本発明を実施可能な適したコンピューティングシステム環境１００の例を示している。コンピューティングシステム環境１００は、適したコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲に関する限定を示唆するものではない。また、コンピューティング環境１００を、動作環境１００の例に示した構成要素のいずれか１つ、またはその組合せに関連する任意の依存性または必要条件を有していると解釈すべきではない。
【０００９】
本発明は、他の多くの汎用または専用コンピューティングシステム環境または構成で動作可能である。本発明との使用に適したよく知られているコンピューティングシステム、環境、および／または構成の例には、それだけには限定されないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、タブレット装置、ヘッドレスサーバ、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記の任意のシステムまたは装置を含む分散コンピューティング環境などがある。
【００１０】
本発明は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で説明することができる。一般にプログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。また、本発明は、タスクが通信ネットワークによってリンクされているリモート処理装置によって実行される分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラムモジュールを、メモリ記憶装置を含むローカルおよび／またはリモートのコンピュータ記憶媒体に置くことができる。
【００１１】
図１を参照すると、本発明を実施するシステムの例は、汎用コンピューティング装置をコンピュータ１１０の形で含んでいる。コンピュータ１１０の構成要素は、それだけには限定されないが、処理ユニット１２０、システムメモリ１３０、およびシステムメモリを含む様々なシステム構成要素を処理ユニット１２０に結合するシステムバス１２１を含む。システムバス１２１は、様々な任意のバスアーキテクチャを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のうちどんなバス構造でもよい。こうしたアーキテクチャには、それだけには限定されないが一例として、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ電子装置規格化協会（ＶＥＳＡ）ローカルバス、およびメザニンバスとしても知られている周辺部品相互接続（ＰＣＩ）バスなどがある。
【００１２】
コンピュータ１１０は、一般に様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０からアクセス使用可能な任意の媒体とすることができ、揮発性および不揮発性媒体、取外式および固定式の媒体を含む。コンピュータ可読媒体は、それだけには限定されないが一例として、コンピュータ記憶媒体および通信媒体を含む。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、他のデータなど、情報を記憶するための任意の方法または技術で実施される揮発性および不揮発性の取外式および固定式媒体がある。コンピュータ記憶媒体には、それだけには限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、または所望の情報の格納に使用でき、コンピュータ１１０からアクセスできる他の任意の媒体などがある。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを搬送波または他の移送機構などの変調されたデータ信号に組み込む。これには任意の情報配送媒体がある。「変調されたデータ信号」という用語は、信号に情報を符号化するように１つまたは複数のその特性が設定または変更された信号を意味する。通信媒体には、それだけには限定されないが一例として、有線ネットワーク、直接配線された接続などの有線媒体、および音響、ＲＦ、赤外線、その他の無線媒体などの無線媒体がある。また、上記のどんな組合せでもコンピュータ可読媒体の範囲内に含まれるものとする。
【００１３】
システムメモリ１３０は、読み取り専用メモリ（ＲＯＭ）１３１やランダムアクセスメモリ（ＲＡＭ）１３２など、揮発性および／または不揮発性メモリの形のコンピュータ記憶媒体を含む。基本入出力システム１３３（ＢＩＯＳ）は、例えば起動中など、コンピュータ１１０内の要素間での情報の転送を助ける基本ルーチンを含み、一般にＲＯＭ１３１に格納されている。ＲＡＭ１３２は一般に、処理ユニット１２０から直接アクセス可能な、および／または処理ユニット１２０が現在処理しているデータおよび／またはプログラムモジュールを含む。図１は、それだけには限定されないが一例として、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７を示している。
【００１４】
コンピュータ１１０は、他の取外式／固定式、揮発性／不揮発性コンピュータ記憶媒体を含むこともできる。一例にすぎないが、図１は、固定式不揮発性磁気媒体から読み取り、あるいはそこに書き込むハードディスクドライブ１４１、取外式不揮発性磁気ディスク１５２から読み取り、あるいはそこに書き込む磁気ディスクドライブ１５１、およびＣＤ−ＲＯＭや他の光媒体など、取外式不揮発性光ディスク１５６から読み取り、あるいはそこに書き込む光ディスクドライブ１５５を示している。動作環境の例で使用できる他の取外式／固定式、揮発性／不揮発性コンピュータ記憶媒体には、それだけには限定されないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体ＲＡＭ、半導体ＲＯＭなどがある。ハードディスクドライブ１４１は一般に、インターフェース１４０などの固定式メモリインターフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は一般に、インターフェース１５０などの取外式メモリインターフェースによってシステムバス１２１に接続される。
【００１５】
上述し、図１に示したドライブおよびその関連のコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータ１１０の他のデータの記憶域を提供する。図１では例えば、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を記憶するように示されている。これらの構成要素は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じであっても、異なっていてもよいことに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７は少なくとも異なるコピーであることを示すために、ここではそれらに異なる番号を付している。ユーザは、タブレットまたは電子デジタイザ１６４、マイクロフォン１６３、キーボード１６２、および一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティング装置１６１などの入力装置を介してコマンドおよび情報をコンピュータ１１０に入力することができる。図１には示していない他の入力装置には、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナ、またはバイオメトリクスセンサ、環境センサ、位置センサ、または他のタイプのセンサを含む装置を含む他の装置などがある。これらおよび他の入力装置は、しばしばシステムバスに結合されているユーザ入力インターフェース１６０を介して処理ユニット１２０に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）など他のインターフェースおよびバス構造で接続してもよい。モニタ１９１または他のタイプの表示装置もまた、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。モニタ１９１は、タッチ画面インターフェース１９２を介してシステムバス１２１に接続されるタッチ画面パネルなどに一体化することもできる。モニタおよび／またはタッチ画面パネルは、タブレット型パーソナルコンピュータなど、コンピューティング装置１１０が組み込まれるハウジングに物理的に結合することができることに留意されたい。さらに、コンピューティング装置１１０などのコンピュータは、出力周辺インターフェース１９３などを介して接続できるスピーカ１９４、プリンタ１９５などの他の周辺出力装置を含むこともできる。
【００１６】
コンピュータ１１０は、リモートコンピュータ１８０など１つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク式環境で動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置、または他の一般のネットワークノードでよく、一般にコンピュータ１１０に関連して上述した多くまたはすべての要素を含むが、図１にはメモリ記憶装置１８１のみを示している。図１に示した論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１および広域ネットワーク（ＷＡＮ）１７３を含むが、他のネットワークを含んでいてもよい。こうしたネットワーキング環境は、オフィス、全社規模のコンピュータネットワーク、イントラネット、およびインターネットではごく一般的である。ＬＡＮネットワーキング環境で使用する場合、コンピュータ１１０は、ネットワークインターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用する場合、コンピュータ１１０は一般に、モデム１７２、またはインターネットなどＷＡＮ１７３を介して通信を確立する他の手段を含む。モデム１７２は、内蔵でも外付けでもよく、ユーザ入力インターフェース１６０または他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク式環境では、コンピュータ１１０に関連して示したプログラムモジュール、またはその一部をリモートメモリ記憶装置に格納することができる。図１は、それだけには限定されないが一例として、リモートアプリケーションプログラム１８５をメモリ装置１８１上に存在するように示している。図示したネットワーク接続は例であり、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは理解されよう。
【００１７】
コンテキストアウェアネスプラットフォーム
本発明は一般に、コンテキストアウェアネスプラットフォームのシステムおよび方法を対象とする。コンテキストアウェアネスプラットフォームは、コンテキスト情報を使用してコンピュータを実行環境に知的に適応させることができるように、コンピュータシステムが、物理的な場所、その物理的な場所でユーザが対話する可能性のある人物、ユーザのアクティビティなど、実行環境に関するコンテキスト情報を有利に収集し、提示できるようにする。実行環境は、本明細書で使用する場合、インストールまたは構成の設定、実行可能プログラム命令、オペレーティングシステムサービスなど、実行可能設定を意味する。本発明のアーキテクチャは、コンピュータシステムの実行環境についてのコンテキスト情報を設定し、追跡し、取得するインターフェースを備える構成要素およびフレームワークを提供することがわかる。提供される構成要素の中には、プラットフォーム上で稼動する実行可能プログラムによってアクセスするためのコンテキスト情報の集約をプラットフォームレベルで行うコンテキストエンジンおよび統合のデータストアがある。ユーザコンテキストデータ、実行可能コンテキストデータ、およびシステムコンテキストデータを含めて、任意のタイプのコンテキスト情報を格納することができる。本明細書に示した様々なブロック図、フローチャート、およびシナリオは例にすぎず、本発明を適用するシナリオが他にも多数あり得ることは理解されよう。
【００１８】
図２を参照すると、コンテキストアウェアネスプラットフォームのシステム構成要素のアーキテクチャ例の概略を表すブロック図を示している。図面に示したブロック内で実施される機能を個別の構成要素として実施したり、いくつかのまたはすべてのブロックの機能を単一の構成要素内で実施したりすることができることを当業者であれば理解されよう。一例として、コンテキストプラットフォーム２０４内のコンテキストＡＰＩ２０６の機能は、個別の構成要素で実施することができる。
【００１９】
図２に示したコンテキストプラットフォーム２０４は、様々な実行可能プログラム２０２、およびデータストア２１０などのストレージ設備に動作可能に結合することができる。コンテキストプラットフォーム２０４は、コンテキストアプリケーションプログラミングインターフェース（ＡＰＩ）２０６およびコンテキストエンジン２０８を含む。コンテキストＡＰＩ２０６は、アプリケーションプログラミングインターフェース（ＡＰＩ）、オブジェクト、コントロールまたは他の実行可能コードとすることができる。コンテキストＡＰＩ２０６は、例えば、データストア２１０にコンテキスト情報を追加するＳｅｔＣｏｎｔｅｘｔＤａｔａ、データストア２１０内のコンテキスト情報の更新が通知されるＴｒａｃｋＣｏｎｔｅｘｔＤａｔａ、データストア２１０内のコンテキスト情報を取り出すＧｅｔＣｏｎｔｅｘｔＤａｔａなど、呼び出し可能なインターフェースを含めることによって、コンテキスト情報を設定し、追跡し、または取得するアクセスを提供することができる。コンテキスト情報を操作（コンテキスト情報の情報処理の意、ここではコンテキスト情報のオペレーションを実行すること）するために、他のコンテキストＡＰＩを使用することもできる。
【００２０】
コンテキストエンジン２０８は、カーネル構成要素、アプリケーション構成要素、リンクライブラリの構成要素、オブジェクトなどを含む、任意の実行可能ソフトウェアコードとすることができる。コンテキストエンジン２０８は、データストア２１０内のコンテキスト情報の設定、追跡、および取得など、コンテキスト情報オペレーションを実行する旨の要求を実行可能ソフトウェアコードから受信することができる。例えば、コンテキストエンジン２０８は、コンテキスト情報の更新または変更が通知される旨の要求を追跡し、追跡されるよう要求したコンテキスト情報の更新または変更を受信すると、実行可能プログラムに通知することができる。コンテキスト情報を永続的に格納するために、コンテキストエンジン２０８を、データストア２１０などの様々なストレージ設備に動作可能に結合することができる。コンテキストエンジン２０８は、コンテキスト情報を格納するために使用することができる、コンテキスト情報を表すコンテキストデータのブロックに、ＧＵＩＤなどの一意の識別子を関連付けることができる。
【００２１】
データストア２１０は、プラットフォーム上で稼動する実行可能プログラムによってアクセスするためのコンテキスト情報の集約をプラットフォームレベルで行うことによって、コンテキストプラットフォーム２０４のコンテキスト情報の統合されたストレージを提供することができる。データストアは、コンテキストタイプを格納することができる。コンテキストタイプは、データブロックのビットによって表されるコンテキスト情報の識別子として働くＧＵＩＤとすることができる。コンテキスト情報は、本明細書で使用する場合、それだけには限定されないが、場所、アクティビティ、および状態の情報を含む論理的および物理的な実行環境についての任意の情報を含む。実際に、コンテキスト情報は、任意のサイズ、任意のフォーマット、または任意のタイプのデータとすることができる。例えば、コンテキスト情報は、バイナリデータ、フォーマット済みデータ、音声またはビデオなどのメディアデータ、人間可読データ、ＸＭＬ、暗号化されたデータなどを含む。データストア２１０に格納されている様々なコンテキスト情報の中には、ユーザコンテキストデータ２１２、実行可能コンテキストデータ２１４、およびシステムコンテキストデータ２１６がある。ユーザコンテキストデータ２１２は、Ｗｅｂをサーフィンする、プレゼンテーションプログラムを使用するなど、ユーザのアクティビティについての情報を含む。実行可能コンテキストデータ２１４は、プログラム設定、開いたファイルなど、実行可能プログラムの状態についての情報を含む。また、システムコンテキストデータ２１６は、バッテリ電力レベルのようなハードウェア装置の状態、ネットワーク接続など、システム状態についての情報を含む。
【００２２】
実行可能プログラムは、アプリケーションプログラム、カーネル構成要素、またはコンテキスト情報を提供または取得し、および／またはコンテキスト情報の変更に従ってそのコンピューティング環境を適応させることができる他の実行可能プログラムとすることができる。コンテキスト情報を設定し、追跡し、取得するために呼び出し可能なインターフェースにアクセスするように、実行可能プログラム２０２をコンテキストＡＰＩ２０６に動作可能に結合することができる。例えば、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）ＸＰオペレーティングシステムのＮｅｔｗｏｒｋ  Ｌｏｃａｔｉｏｎ  Ａｗａｒｅｎｅｓｓ（ＮＬＡ）サービスは、ＳｅｔＣｏｎｔｅｘｔＤａｔａ  ＡＰＩを呼び出して、ネットワークのコンテキスト情報を新しいネットワーク接続に設定することによって、ネットワークの変更を監視し、ネットワーク情報をコンテキストプラットフォームに提供することができる。コンテキストエンジンは、ネットワーク接続を関連付ける新しい値を受信して、ネットワーク接続のコンテキスト情報の変更について通知されるべきＴｒａｃｋＣｏｎｔｅｘｔ  ＡＰＩを呼び出した実行可能プログラムを検索することができる。次いでコンテキストエンジンは、ネットワーク接続のコンテキスト情報の変更の通知をこれらの実行可能プログラムに送信することができる。ネットワーク接続の変更の通知を受信した結果、１つまたは複数の実行可能プログラムは、デフォルトのプリンタ設定、デフォルトのインターネットブラウザホームページ、インターネットブラウザプロキシ設定など、システム設定を変更することができる。このように、実行可能プログラムは、コンテキスト情報の更新の通知があり次第、コンテキスト情報を使用してその実行環境を適応させることができる。
【００２３】
図３は、代替実施形態におけるコンテキストアウェアネスプラットフォームのシステム構成要素のアーキテクチャ例の概略を表すブロック図を示している。図２とともに説明したシステム構成要素に加えて、管理下のコンテキストアプリケーションプログラミングインターフェース３０４をコンテキストＡＰＩ２０６に動作可能に結合して、管理下のコードを使用してコンテキストプラットフォーム３０２を実施することができる。管理下のコードとは、Ｍｉｃｒｏｓｏｆｔ（登録商標）．ＮＥＴ  Ｐｌａｔｆｏｒｍのために開発されたソフトウェアコードを指し、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｃｏｍｍｏｎ  Ｌａｎｇｕａｇｅ  Ｒｕｎｔｉｍｅ（ＣＬＲ）によって使用することができるメタデータを含む。有利には、．ＮＥＴランタイムは、メモリの割り振り、メモリの再利用、型チェック、および他のデータ関連のタスクなど、データ関連のタスクを管理することができる。管理下のコンテキストＡＰＩ３０４は、２つの静的メソッドＳｅｔＣｏｎｔｅｘｔおよびＧｅｔＣｏｎｔｅｘｔを備えるＣｏｎｔｅｘｔＣｌｉｅｎｔオブジェクト、およびウィンドウメッセージと直接対話するより、．ＮＥＴ相互運用アセンブリを使用して実行可能プログラムがコンテキスト情報イベントを受信できるようにする１組の非静的メソッドを含む。管理下のコンテキストＡＰＩ３０４は、コンテキストＡＰＩ２０６に動作可能に結合し、上述したコンテキストＡＰＩ２０６を使用して、．ＮＥＴ相互運用アセンブリを用いてコンテキストエンジン２０８と通信する。
【００２４】
ＳｅｔＣｏｎｔｅｘｔメソッドは、コンテキストのタイプについての新しいコンテキスト情報を提供するために実行可能プログラムによって使用することができる。コンテキストのタイプは、メソッドに渡されるオブジェクトのタイプによって決定することができる。コンテキストエンジンは、メソッドに渡されるオブジェクトに対応するＧＵＩＤにコンテキスト情報を関連付けることによって、コンテキスト情報を格納することができる。実行可能プログラムは、ＧｅｔＣｏｎｔｅｘｔメソッドを使用して、特定のタイプのコンテキストの現在のコンテキスト情報を取得することができる。コンテキストエンジンは、コンテキストのタイプのＧＵＩＤを使用して、ＳｅｔＣｏｎｔｅｘｔメソッドへの前回の呼び出しによってデータストアに書き込まれる、格納済みコンテキスト情報を検索する。
【００２５】
管理下のコンテキストＡＰＩ３０４は、ＣｏｎｔｅｘｔＣｌｉｅｎｔと呼ばれるオブジェクトによってアクセス可能なイベント機構も含む。ＣｏｎｔｅｘｔＣｌｉｅｎｔは、ＯｌｄＣｏｎｔｅｘｔ、ＮｅｗＣｏｎｔｅｘｔ、ＣｏｎｔｅｘｔＴｙｐｅおよびＳｔａｌｅなどのプロパティとともにＣｏｎｔｅｘｔＣｈａｎｇｅｄＥｖｅｎｔＡｒｇｓを使用することができるＣｏｎｔｅｘｔＣｈａｎｇｅｄという名前のイベント、およびＣｏｎｔｅｘｔＣｈａｎｇｅｄＥｖｅｎｔＨａｎｄｌｅｒという名前のイベントハンドラを提示することができる。ＯｌｄＣｏｎｔｅｘｔプロパティおよびＮｅｗＣｏｎｔｅｘｔプロパティは、イベントの受信側が適切な行動を起こすことができるように、コンテキストの状態が変更される前または後に、イベントの受信側がそれを決定する。ＣｏｎｔｅｘｔＴｙｐｅは、このイベントにおけるオブジェクトのタイプを表す。最後に、Ｓｔａｌｅフラグは、このコンテキスト情報が依然として揮発性メモリに存在しているという条件で、実行可能プログラムであるかどうかを示すために使用する。
【００２６】
図４は、コンテキストプラットフォームの様々な実装形態に含むコンテキストエンジンのシステム構成要素のアーキテクチャ例の概略を表すブロックエンジンを示している。コンテキストエンジン２０８は、メッセージキューからコンテキスト情報オペレーションを実行する旨の要求を受信し、コンテキスト情報の更新でデータストア２１０を更新し、実行可能プログラム２０２に変更を通知する。コンテキストエンジン２０８は、メッセージキュー４０２、コンテキストメッセージプロセッサ４０４、コンテキストデータ４０６、コンテキスト通知キュー４１４、コンテキストノーティファイア４１６、通知テーブル４１８、および１つまたは複数のノーティファイアスレッド４２０を含む。一実施形態において、コンテキスト情報オペレーションの実行可能プログラムによって送信された要求がメッセージキュー４０２で受信されるたびに、オペレーティングシステムは、コンテキストメッセージプロセッサ４０４をディスパッチして、メッセージを処理する。コンテキストエンジン２０８によって受信されるメッセージは、コンテキスト情報をコンテキストデータ４０６に追加するＳｅｔＣｏｎｔｅｘｔＤａｔａ要求、コンテキストデータ４０６内のコンテキスト情報への更新が通知されるＴｒａｃｋＣｏｎｔｅｘｔＤａｔａ要求、およびコンテキストデータ４０６からコンテキスト情報を取り出すＧｅｔＣｏｎｔｅｘｔＤａｔａ要求を含む。
【００２７】
コンテキストメッセージプロセッサ４０４は、コンテキスト情報４０６によって示されるように、コンテキスト情報をメモリに格納する。コンテキストデータ４０６に格納されている様々なコンテキスト情報の中には、ユーザコンテキストデータ４０８、実行可能コンテキストデータ４１０、およびシステムコンテキストデータ４１２がある。コンテキストエンジン２０８は、コンテキスト情報を含む関連のデータブロックとともに、コンテキスト情報をＧＵＩＤとして格納する。ＧｅｔＣｏｎｔｅｘｔＤａｔａ要求を受信するたびに、コンテキストメッセージプロセッサ４０４は、コンテキストデータ４０６から要求されたコンテキスト情報を取得し、コンテキスト情報のコピーを共有メモリバッファやメモリマップファイル、またはディスク上のファイルやシステムレジストリなどの他の共有場所に入れて、通知を受信すると実行可能プログラムがそれを読み取り可能とする。ＳｅｔＣｏｎｔｅｘｔＤａｔａ要求が受信されるたびに、コンテキストメッセージプロセッサ４０４は、ＳｅｔＣｏｎｔｅｘｔＤａｔａ要求内のコンテキスト情報をコンテキストデータ４０６に追加することによってコンテキストデータ４０６を更新し、コンテキストメッセージプロセッサ４０４は、コンテキスト通知キュー４１４にコンテキスト情報を入れる。一実施形態において、コンテキスト情報は、古いコンテキスト情報、新しいコンテキスト情報、およびこのコンテキスト情報の更新が通知されるよう要求した実行可能プログラムのリストを含む更新オブジェクトとすることができる。別の実施形態において、実行可能プログラムのリストを１つまたは複数のコンテキストタイプまたはＧＵＩＤに関連付ける通知テーブル４１８に、コンテキスト情報内の更新が通知されるよう要求した実行可能プログラムのリストを別々に格納してもよい。コンテキスト情報をコンテキスト通知キュー４１４に入れた後、コンテキストノーティファイア４１６を起動させる。一実施形態において、コンテキストノーティファイア４１６は、コンテキストエンジン２０８によって生じたスレッドとしてもよい。コンテキストノーティファイア４１６は、コンテキスト通知キュー４１４からコンテキスト情報の更新を読み取り、このコンテキスト情報の更新が通知されるよう要求した各実行可能プログラムに通知メッセージを送信する。
【００２８】
一実施形態において、コンテキストノーティファイア４１６は、通知メッセージをコンテキスト情報とともに非同期で送信する１つまたは複数のノーティファイアスレッド４２０を作成して、個々の実行可能プログラムに、コンテキスト情報の更新を通知することができる。したがって、ノーティファイアスレッド上の任意の実行可能プログラムによる同期ブロックは、他の通知が送信されるのを防止せず、任意の１つの実行可能プログラムに以前送信された通知の完了を要求することなく、任意の数の通知を実行可能プログラムに送信することができる。コンテキスト情報の更新の通知を受信すると、実行可能プログラムは、共有メモリバッファやメモリマップファイルなどの共有場所からコンテキスト情報の更新にアクセスする。
【００２９】
定期的に、コンテキストエンジン２０８は、コンテキストデータ４０６内のコンテキスト情報をデータストア２１０などの永続ストレージに書き込む。コンテキストエンジン２０８は、永続ストレージに通知テーブル４１８を書き込んでもよい。一実施形態において、コンテキストエンジン２０８は、非アクティブ期間の後でスリープになる。スリープになるのに先立って、コンテキストエンジン２０８は、永続ストレージに、コンテキストデータ４０６および通知テーブル４１８を書き込む。デフォルトの非アクティブ期間は、例えば１時間とすることができる。様々な実施形態において、ユーザアクティビティの予想される期間に適した他の期間を使用してもよい。一部の実施形態において、期間は、ユーザによって設定することができる。コンテキストエンジンは、起動される場合、永続ストレージからコンテキストデータを読み込み、それをコンテキストデータ４０６に書き込んだり、永続ストレージから通知リストを読み込み、それを通知テーブル４１８に書き込む。
【００３０】
実行可能プログラムは、他の実行可能プログラムによって使用するためのコンテキスト情報を提供することを望む場合はいつでも、１組の要求をコンテキストエンジンに送信する。図５は、コンテキスト情報を設定する一実施形態において実行可能プログラムによって引き受けられるステップ例の概略を表すフローチャートを示している。ステップ５０２で、コンテキストの変更が最初に検出される。次いでステップ５０４で、コンテキスト情報を設定する旨の要求が送信される。例えば、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）ＸＰオペレーティングシステムのＮｅｔｗｏｒｋ  Ｌｏｃａｔｉｏｎ  Ａｗａｒｅｎｅｓｓ（ＮＬＡ）サービスなどの実行可能プログラムは、ネットワークの変更を監視し、新しいネットワーク接続を検出することができる。次いで実行可能プログラムは、ＳｅｔＣｏｎｔｅｘｔＤａｔａ  ＡＰＩを呼び出して、ネットワークのコンテキスト情報を新しいネットワーク接続に設定することによって、ネットワーク情報をコンテキストプラットフォームに提供することができる。
【００３１】
図６は、コンテキスト情報を追跡する一実施形態において実行可能プログラムによって引き受けられるステップ例の概略を表すフローチャートを示している。まず、ステップ６０２で、コンテキスト情報を追跡する旨の要求が送信される。例えば、コンピュータシステムのデフォルトのプリンタ設定の責任を負う実行可能プログラムは、ＴｒａｃｋＣｏｎｔｅｘｔＤａｔａ  ＡＰＩを呼び出して、ネットワーク接続についてのコンテキスト情報への更新が通知される旨の追跡要求をコンテキストプラットフォームに送信する。次に、ステップ６０４で、コンテキスト情報の更新の通知を受信する。次いでステップ６０６で、コンテキスト情報の更新を取得する。例えば、デフォルトのプリンタ設定の責任を負う前の例の実行可能プログラムは、新しいネットワーク接続についてのコンテキスト情報の更新の通知を受信し、新しいネットワーク接続についてのコンテキスト情報の更新のコピーを共有メモリバッファまたはメモリマップファイルから取り出す。最後に、ステップ６０８で、実行可能プログラムは、コンテキスト情報の更新に従って適応（ａｄａｐｔ）する。したがって、デフォルトのプリンタ設定の責任を負う前の例の実行可能プログラムのような実行可能プログラムは、例えばデフォルトのプリンタ設定を新しいネットワーク接続に使用される設定に変更することによって、コンテキスト情報の更新に従ってその実行環境を適応させることができる。
【００３２】
図７は、コンテキスト情報を取得する一実施形態において実行可能プログラムによって引き受けられるステップ例の概略を表すフローチャートを示している。まず、ステップ７０２で、コンテキスト情報を取得する旨の要求が送信される。例えば、ブラウザのデフォルトのホームページを設定する責任を負う実行可能プログラムは、ＧｅｔＣｏｎｔｅｘｔＤａｔａ  ＡＰＩを呼び出して、ネットワークのコンテキスト情報を取得する。次に、ステップ７０４で、コンテキスト情報の通知を受信する。最後に、ステップ７０６で、実行可能プログラムは、取得されたコンテキスト情報に従って適応することが。例えば、ブラウザのデフォルトのホームページを設定する責任を負う前の例の実行可能プログラムは、デフォルトのホームページ設定を、ネットワーク接続に使用される設定に変更する。
【００３３】
図８は、要求されたコンテキスト情報オペレーションを実行する一実施形態においてコンテキストエンジンによって引き受けられるステップ例の概略を表すフローチャートを示している。実装は、同じ効果を達成しながら、また本発明の範囲から逸脱することなく、これらのステップを異なる順序で実行することを選択したり、効率や柔軟性の目的でこれらのステップの一部のみを実行したりすることを選択できることを当業者であれば理解されよう。ステップ８０２で、コンテキスト情報オペレーションを受信する。コンテキストエンジン２０８は、例えば、実行可能プログラムからコンテキスト情報オペレーションを受信する。ステップ８０４で、受信されたコンテキスト情報オペレーションはコンテキスト情報を設定する旨の要求であるかどうかを決定する。そうである場合、ステップ８０６で、コンテキスト情報をメモリ内に格納されているコンテキストデータの表現に追加し、ステップ８０８で、コンテキスト情報をコンテキスト通知キューに入れる。一実施形態において、コンテキストエンジン２０８は、設定要求内のコンテキスト情報をコンテキストデータ４０６に追加し、次いでコンテキストエンジン２０８は、コンテキスト情報をコンテキスト通知キュー４１４に入れる。
【００３４】
ステップ８１０で、このコンテキスト情報の更新が通知されるよう要求した任意の実行可能プログラムが、このコンテキスト情報の更新について通知される実行可能プログラムのリスト内で検索される。例えば、一実施形態において、実行可能プログラムのリストをコンテキストタイプまたはＧＵＩＤに関連付ける通知テーブル４１８などの通知テーブルに、このコンテキスト情報の更新が通知されるよう要求した実行可能プログラムのリストを別々に格納する。別の実施形態において、このコンテキスト情報の更新が通知されるよう要求した実行可能プログラムのリストは、数ある情報の中でも、更新されたコンテキスト情報を含む更新オブジェクト内に格納することができる。
【００３５】
ステップ８１１で、このコンテキスト情報の更新が通知されるべき実行可能プログラムのリストに含まれるよう要求した実行可能プログラムがあるかどうかが決定される。ある場合、ステップ８１２で、このコンテキスト情報の更新が通知されるよう要求した実行可能プログラムのリストに、通知を送信する。一実施形態において、コンテキストノーティファイア４１６は、コンテキスト通知キュー４１４からコンテキスト情報の更新を読み取り、このコンテキスト情報の更新が通知されるよう要求した各実行可能ファイルに通知メッセージを送信することができる。様々な実施形態において、コンテキストノーティファイア４１６は、通知メッセージをコンテキスト情報とともに非同期で送信する１つまたは複数のノーティファイアスレッド４２０を作成して、個々の実行可能ファイルにコンテキスト情報の更新を通知する。
【００３６】
ステップ８１２で、このコンテキスト情報の更新が通知されるよう要求した実行可能プログラムのリストに通知を送信した後、またはステップ８１１で、このコンテキスト情報の更新が通知されるべき実行可能プログラムのリスト内に含まれるよう要求した実行可能プログラムがないと決定された場合、ステップ８１４で、コンテキスト情報の更新を永続的に格納する。例えば、コンテキストエンジン２０８は、コンテキストデータ４０６内の更新されたコンテキスト情報をデータストア２１０などの永続ストレージに定期的に書き込む。非アクティブ期間の後、コンテキストエンジン２０８は、一実装形態において、スリープになるのに先立って、コンテキストデータ４０６を永続ストレージに書き込んでもよい。更新されたコンテキスト情報が永続的に格納された後、処理が終了する。
【００３７】
ステップ８０４に戻って、受信されたコンテキスト情報オペレーションが設定要求ではなかった場合、ステップ８１６で、受信されたコンテキスト情報オペレーションがコンテキスト情報を追跡する旨の要求であるかどうかを決定する。そうである場合、ステップ８１８で、コンテキスト情報の更新が通知される実行可能プログラムのリストを更新する。次に、ステップ８２０で、コンテキスト情報の更新が通知される実行可能プログラムの更新済みリストを永続的に格納する。例えば、コンテキストエンジン２０８は、通知テーブル４１８内の実行可能プログラムの更新済みリストを永続ストレージに定期的に書き込む。別の実施形態において、コンテキストエンジン２０８は、数ある情報の中でも更新済みのコンテキスト情報を含む更新オブジェクト内の実行可能プログラムの更新済みリストを永続ストレージに定期的に書き込む。非アクティブ期間の後、コンテキストエンジン２０８は、様々な実施形態において、スリープになるのに先立って、実行可能プログラムの更新済みリストを永続ストレージに書き込んでもよい。通知されるべき実行可能プログラムの更新済みリストが永続的に格納された後、処理が終了する。
【００３８】
ステップ８１６に戻って、受信されたコンテキスト情報オペレーションが追跡要求ではなかった場合、ステップ８２２で、受信されたコンテキスト情報オペレーションがコンテキスト情報を取得する旨の要求であるかどうかを決定する。そうである場合、ステップ８２４で、コンテキスト情報が取り出される。例えば、一実施形態において、コンテキストエンジン２０８は、コンテキストデータ４０６からコンテキスト情報を取得する。別の実施形態において、コンテキストエンジン２０８は、データストア２１０からコンテキスト情報を取得する。次に、ステップ８２６で、コンテキスト情報を要求側に送信する。コンテキスト情報を、取得要求を送信した実行可能プログラムに送信した後、処理が終了する。一実施形態において、取得要求の送信に応答して任意の実行可能プログラムがコンテキスト情報を受信するたびに、このコンテキスト情報の更新が通知されるよう要求した実行可能プログラムのリストに通知を送信してもよい。
【００３９】
有利には、このシステムおよび方法は、コンテキスト情報を使用してコンピュータを実行環境に知的に適応させることができるように、コンピュータシステムが実行環境についてのコンテキスト情報を収集し、提示する。実行可能プログラムは、コンテキスト情報の単一の項目を使用することによって実行環境を適応させ、またはコンテキスト情報の複数の項目を使用することによって実行環境を適応させる。さらに、実行可能プログラムは、使用可能なコンテキスト情報を使用して、コンテキスト情報を設定し、または実行環境を適応させるのに、他の実行可能プログラムから独立して動作し、またはいくつかの実行可能プログラムとともに動作する。プラットフォームで稼動している任意の実行可能プログラムがコンテキスト情報を提供または使用して、コンピュータシステムを知的に適応させてユーザの生産性を向上させるように、コンテキスト情報を、プラットフォームレベルで統合のデータストアに集約する。
【００４０】
上記の詳細な説明からわかるように、本発明は、実行環境を適応させるために使用することができるコンテキストアウェアネスプラットフォームの改良されたシステムおよび方法を提供する。本発明のアーキテクチャは、コンテキスト情報を設定し、追跡し、取得するインターフェースを備える構成要素およびフレームワークを提供する。提供されるシステムおよびフレームワークは拡張可能である。ユーザコンテキストデータ、実行可能コンテキストデータ、およびシステムコンテキストデータを含めて、任意のタイプのコンテキスト情報を使用することができる。コンテキスト情報を提供し、または使用する任意の数の実行可能プログラムをサポートすることができる。したがって、このシステムおよび方法は、現代のコンピューティングに必要なかなりの利点および利益を提供することがわかる。
【００４１】
本発明は、様々な変更および代替の構成が可能であるが、示したいくつかの実施形態を図面に示し、上記で詳しく説明している。しかし、本発明を開示した特定の形に限定する意図はなく、逆に、本発明は、本発明の意図および範囲内に含まれるすべての変更形態、代替の構造、および均等物をカバーすることを理解されたい。
【図面の簡単な説明】
【００４２】
【図１】本発明を組み込むことができるコンピュータシステムの概略を表すブロック図である。
【図２】本発明の一態様によるコンテキストアウェアネスプラットフォームの一実施形態におけるシステム構成要素のアーキテクチャ例の概略を表すブロック図である。
【図３】本発明の一態様によるコンテキストアウェアネスプラットフォームの別の実施形態におけるシステム構成要素のアーキテクチャ例の概略を表すブロック図である。
【図４】本発明の一態様によるコンテキストプラットフォームの様々な実施形態に含まれるコンテキストエンジンのシステム構成要素のアーキテクチャ例の概略を表すブロック図である。
【図５】本発明の一態様によるコンテキスト情報を設定する一実施形態において実行可能プログラムによって引き受けられるステップ例の概略を表すフローチャートである。
【図６】本発明の一態様によるコンテキスト情報を追跡する一実施形態において実行可能プログラムによって引き受けられるステップ例の概略を表すフローチャートである。
【図７】本発明の一態様によるコンテキスト情報を取得する一実施形態において実行可能プログラムによって引き受けられるステップ例の概略を表すフローチャートである。
【図８】本発明の一態様による要求されたコンテキスト情報オペレーションを実行する一実施形態においてコンテキストエンジンによって引き受けられるステップ例の概略を表すフローチャートである。
【符号の説明】
【００４３】
１２０  処理ユニット
１２１  システムバス
１３０  システムメモリ
１３４  オペレーティングシステム
１３５  アプリケーションプログラム
１３６  他のプログラムモジュール
１３７  プログラムデータ
１４０  固定式不揮発性メモリインターフェース
１４４  オペレーティングシステム
１４５  アプリケーションプログラム
１４６  他のプログラムモジュール
１４７  プログラムデータ
１５０  取外式不揮発性メモリインターフェース
１６０  ユーザ入力インターフェース
１６１  マウス
１６２  キーボード
１６３  マイク
１６４  タブレット
１７０  ネットワークインターフェース
１７１  ローカルエリアネットワーク
１７２  モデム
１７３  広域ネットワーク
１８０  リモートコンピュータ
１８５  リモートアプリケーションプログラム
１９０  ビデオインターフェース
１９１  モニタ
１９２  タッチ画面インターフェース
１９３  出力周辺インターフェース
１９４  スピーカ
１９５  プリンタ
【図１】
2006209774.tif 000003
【図２】
2006209774.tif 000004
【図３】
2006209774.tif 000005
【図４】
2006209774.tif 000006
【図５】
2006209774.tif 000007
【図６】
2006209774.tif 000008
【図７】
2006209774.tif 000009
【図８】
2006209774.tif 000010
【外国語明細書】
2006209774000001.pdf