(57)【要約】  本明細書に記載の実装は自動的に機器動作を行うことに関する。実装の１つは、コンテクスタのコンテクスト値を得ることができる。本発明に係る実装形態は、意思決定エンジンを使用して、そのコンテクスト値に基づいて特定の動作をコンピューティング・デバイスで行うかどうかを決定することができる。意思決定エンジンが当該特定の動作を行うと決定した場合、本発明に係る実装形態は、その特定の動作をコンピューティング・デバイスで実行することができる。この実装形態は、当該特定の動作に関連するフィードバックを使用して意思決定エンジンを更新することもできる。具体例として、当該特定の動作は、ユーザがアプリケーションの実行を要求する前にそのアプリケーションを事前起動することである。アプリケーションを事前起動しておくことにより、起動する前にユーザがアプリケーションをアプリケーションの実行を要求するのを待つ場合に比べて、アプリケーション起動までの待ち時間を短縮することができる。
2015506617.tif 000002
【特許請求の範囲】
【請求項１】
１つまたは複数のコンテクスタから１つまたは複数のコンテクスト値を取得するステップと、
１つまたは複数の決定規則を備える意思決定エンジンを使用して、前記１つまたは複数のコンテクスト値および前記１つまたは複数の決定規則に基づいて、コンピューティング・デバイスにおいて特定の動作を行うかどうかを決定するステップと、
前記意思決定エンジンが前記動作を行うと決定した場合に前記コンピューティング・デバイスで前記特定の動作を行うステップと、
前記特定の動作に関連するフィードバックを使用して、前記意思決定エンジンの前記決定規則を更新するステップと
を含む方法。
【請求項２】
個々のコンテクスト値が前記コンピューティング・デバイスの物理センサから取得される請求項１に記載の方法。
【請求項３】
個々のコンテクスト値が、前記コンピューティング・デバイスのユーザによる行動、または他のコンピューティング・デバイスにおける他のユーザの行動を反映する、請求項１に記載の方法。
【請求項４】
前記行動が、前記ユーザが前記コンピューティング・デバイスでアプリケーションを実行することを含む、請求項３に記載の方法。
【請求項５】
前記行動が、前記ユーザが前記コンピューティング・デバイスを使用して別の人物と通信することを含む、請求項３に記載の方法。
【請求項６】
個々のコンテクスト値が、現在の時刻または前記コンピューティング・デバイスの現在の位置を反映する、請求項１に記載の方法。
【請求項７】
状況に基づく動作モジュールと、
前記状況に基づく動作モジュールを実行するように構成されたコンピューティング・デバイスと
を備えるシステムであって、前記状況に基づく動作モジュールは、
第１の事例においては、
コンテクスタのコンテクスト値を取得し、
意思決定エンジンを使用して、前記コンテクスト値に基づいて前記コンピューティング・デバイスで動作を行わないことを決定し、
前記コンピューティング・デバイスで前記動作を行わず、
前記動作に関連するフィードバックを前記意思決定エンジンに提供し、前記意思決定エンジンが更新されて、前記コンテクスタがそのコンテクスト値を有する時に前記動作を行うことを学習し、
第１の事例より後の第２の事例においては、
前記第１の事例において取得されたコンテクスト値と同じ前記コンテクスタのコンテクスト値を取得し、
前記更新された意思決定エンジンを使用して、前記同じコンテクストに基づいて前記コンピューティング・デバイスで前記動作を行うことを決定し、
前記動作を前記コンピューティング・デバイスで行う
ように構成されるシステム。
【請求項８】
前記意思決定エンジンが決定木を備える請求項７に記載のシステム。
【請求項９】
前記意思決定エンジンがベイズ分類器を備える請求項７に記載のシステム。
【請求項１０】
前記ベイズ分類器が単純ベイズ分類器である請求項９に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
ユーザ入力に対するアプリケーション・ソフトウェアの反応性は、アプリケーションが比較的リソースを多く必要とするかどうかや、アプリケーションを実行しているデバイスの利用可能なハードウェア資源がアプリケーションのリソース要求量を満たすのに充分であるか等の多数の要因に応じて異なる可能性がある。例えば、モバイル機器のアプリケーションの中には起動までの待ち時間が１０〜１５秒程度と比較的長いものがある。この問題は、古いハードウェアを使用して新しいアプリケーションを実行する時に特に深刻になる。何故ならば、新しいアプリケーションは古いアプリケーションに比べてリソースをより多く必要とする傾向があるためである。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
アプリケーション起動までの待ち時間を短縮する一般的な手法の１つは、アプリケーションをメモリにロードするか、さらにはユーザが実際にアプリケーションを呼び出す前にアプリケーションの実行を開始しておくものである。しかし、モバイル機器はリソースが比較的制約されている傾向があり、現在使用されていないアプリケーションにメモリやプロセッサ資源を割り当てることが常に許容されるとは限らない。実際、場合によっては、この手法は、不必要なデータをロードしたり、不必要な命令を実行したりすることにより、不必要にバッテリ電力を消耗させてしまうことがある。
【課題を解決するための手段】
【０００３】
本明細書に記載された実装例は自動的に機器動作を行うことに関する。そのような実装例の１つは、１つまたは複数のコンテクスタ（contextor）から１つまたは複数のコンテクスト値を得ることを含む技術として顕在化される。この技術は、１つまたは複数の決定規則を備える意思決定エンジンを使用して、１つまたは複数のコンテクスト値および１つまたは複数の決定規則に基づいて、コンピューティング・デバイスで動作を行うかどうかを決定することを含むことができる。この技術は、意思決定エンジンが動作を行うと決定した場合にコンピューティング・デバイスでその動作を行うことも含むことができる。この技術は、動作に関連するフィードバックを使用して意思決定エンジンの決定規則を更新することも含むことができる。
【０００４】
本発明に係る別の実装例は、１つまたは複数のコンテクスト値に基づいて事前に起動しておくアプリケーションを特定することを含む技術として顕在化される。この技術は、アプリケーションを事前に起動してアプリケーションを事前起動状態にしておき、事前起動に関連するフィードバックを受け取ることも含むことができる。
【０００５】
本発明に係る別の実装例は、状況に基づく動作モジュールおよびコンピューティング・デバイスを含むシステムとして顕在化される。当該コンピューティング・デバイスは状況に基づく動作モジュールを実行するように構成することができる。状況に基づく動作モジュールは、第１の事例においては、コンテクスタのコンテクスト値を取得し、意思決定エンジンを使用して、コンテクスト値に基づいてコンピューティング・デバイスで特定の動作を行わないことを決定し、コンピューティング・デバイスでその特定の動作を行わないように構成することができる。状況に基づく動作モジュールは、動作に関連するフィードバックを意思決定エンジンに提供するように構成することもでき、意思決定エンジンが更新されて、コンテクスタがそのコンテクスト値を有する時に前記動作を行うことを学習することができる。状況に基づく動作モジュールは、第１の事例よりも後の第２の事例において、上述した第１の事例において取得されたコンテクスト値と同じコンテクスタのコンテクスト値を取得し、更新された意思決定エンジンを使用して、同じコンテクストに基づいてコンピューティング・デバイスで上記動作を行うことを決定し、当該動作をコンピューティング・デバイスで実行するように構成することもできる。
【０００６】
上記で列挙した例は読者を助けるための簡単な参照を提供するものであり、本明細書に記載される概念の範囲を定義することを目的とするものではない。
【０００７】
添付図面は、本特許で伝達される概念の実施を説明する。例示される実施の特徴は、添付図面と併せて以下の説明を参照することにより容易に理解できよう。各図面では、該当する場合は同様の参照符号を使用して同様の要素を示す。さらに、各参照符号の一番左の数字は、その参照符号が最初に登場する図およびそれに関連する説明を表す。
【図面の簡単な説明】
【０００８】
【図１】本明細書に記載の概念のいくつかの実装を用いることができる例示的なシナリオを示す図である。
【図２】本明細書に記載の概念のいくつかの実装によるモジュールの例示的アーキテクチャを示す図である。
【図３Ａ】本明細書に記載の概念のいくつかの実装による例示的なグラフィック・ユーザ・インターフェースを示す図である。
【図３Ｂ】本明細書に記載の概念のいくつかの実装による例示的なグラフィック・ユーザ・インターフェースを示す図である。
【図４Ａ】本明細書に記載の概念のいくつかの実装による例示的な決定規則を示す図である。
【図４Ｂ】本明細書に記載の概念のいくつかの実装による例示的な決定規則を示す図である。
【図４Ｃ】本明細書に記載の概念のいくつかの実装による例示的な決定規則を示す図である。
【図５】本明細書に記載の概念のいくつかの実装による例示的方法のフローチャートである。
【図６】本明細書に記載の概念のいくつかの実装による例示的方法のフローチャートである。
【図７】本明細書に記載の概念のいくつかの実装によるシステムの一例を示す図である。
【発明を実施するための形態】
【０００９】
＜概要＞
本検討内容は、機器の意思決定エンジンが入手可能な情報に基づいて当該機器に自動的に各種動作を行わせることに関する。例えば、一部の実装例においては、ユーザが実際にその実行を要求する前に、特定のアプリケーションが起動される。場合によっては、ユーザがアプリケーションの実行を要求する前に当該アプリケーションを起動することでアプリケーション起動までの待ち時間を短縮することができ、より満足感の高いユーザ体験を提供することができる。本明細書において提供される具体例のいくつかは、モバイル機器との関係で説明される。これは、モバイル機器は比較的リソースが制約されており、本明細書中に開示される実装は、リソースが制約された機器で実施するのに特に適している可能性があるためである。ただし、本明細書中に開示される実装は、ラップトップ型ＰＣやサーバー等の他の種類のコンピューティング・デバイスで実施することもできる。
【００１０】
一般に、ユーザは、例えばマウス、スクロール・ホイール、タッチ画面、または他の入力方法を使用して、アプリケーションを表すアイコン、タイル、または他のインターフェース要素を特定し、選択することによってアプリケーションの実行を要求することができる。アイコンは、デスクトップ、メニュー、または他のインターフェースから選択することができる。本文献では、用語「起動」は、アプリケーションの実行を求めるそのようなユーザ要求を受け取るのに応答して通例発生する各種の動作を含む一般的な用語である。例えば、起動は、アプリケーションのためにメモリを割り振ること、およびアプリケーションを記憶装置から割り振られたメモリにロードすることを含むことができる。起動は、ロードされたアプリケーション・コードを実行して、アプリケーションの初期化に関連する機能を行うことも含むことができる。例えば、ネットワークからウェブ・ページ、画像、映像等のデータを取得するアプリケーション・コードを起動の一部として実行することができる。スレッドやプロセスなどのプロセッサ資源もアプリケーション起動の一部として割り振ることができる。
【００１１】
アーキテクチャ的には、本明細書中に開示される技術は、１つまたは複数の「コンテクスタ」の値を種々の動作に対応付ける意思決定エンジンを使用して実施することができる。一般に、コンテクスタは、アプリケーションを起動する等の特定の動作を行うかどうかを決定するために意思決定エンジンが使用できる状態情報を提供する。例えば、あるコンテクスタは、加速度計、光センサ、全地球測位システム（「ＧＰＳ」）、マイクロフォン、時計等のモバイル機器の１つまたは複数の物理センサから値を直接得る、または論理的に値を導出する。他のコンテクスタは、特定のアプリケーションを要求する、特定の家族に電話をする、特定の単語を含むテキスト・メッセージを送信する等のユーザの行動を反映することができる。
【００１２】
本明細書において、用語「コンテクスタ」は、一般に、例えばセンサ、オペレーティング・システム、個々のアプリケーション等から機器が入手することができる情報の供給源の意味で使用する。用語「コンテクスト値」は個々のコンテクスタの値の意味で使用し、直接的な値（例えば周囲温度）、または論理的に導出された値（例えば温度を「寒い」、「暖かい」等の単語に変換することによる）のいずれをも含む。一般に、意思決定エンジンは、１つまたは複数のコンテクスタの現在または過去のコンテクスト値（順序を含む）についてとるべき動作を学習することができる。様々な動作から暗黙的または明示的にフィードバックを提供して意思決定エンジンの精度を改善し、それにより、特定のコンテクスタについて特定のコンテクスト値を学習させ、それを使用して特定の動作を行わせる。意思決定エンジンは、意思決定エンジンがユーザに対して特定の動作を自動的に行うことを決定する事例と、ユーザが直接、すなわち意思決定エンジンの介在なしに動作を行った事例の両方から学習できることに留意されたい。
【００１３】
一般に、現在または過去のコンテクスト値を使用して個々の意思決定エンジンを学習させ、特定の動作を行うかどうかを決定することができる。特に断らない限り、本明細書で使用する用語「コンテクスト値」は、特定のコンテクスタに関しての現在の値または過去の値のいずれをも意味する。実装例によっては、コンテクスタ・ログを使用して、時間の経過に伴うコンテクスト値の履歴を記憶する。さらに、場合によっては、コンテクスト値の特定の系列をコンテクスタ・ログから取得し、個々の意思決定エンジンにより適用することができる。コンテクスト値の系列の一例としては、例えば、ユーザが常に３つの異なるアプリケーションを特定の順序で使用するなどのアプリケーションの使用パターンなどがある。
【００１４】
本発明に係る動作の一例は、上述のアプリケーションの起動である。本明細書で使用する用語「事前起動（prelaunch）」は、ユーザが何らかの種類の機器入力を提供することによってアプリケーションの立ち上げを実際に要求する前に少なくとも部分的にアプリケーションを起動しておくという意味で使用する。例えば、ユーザは、特定の相手との通話を終えた直後にソーシャル・ネットワーキング・アプリケーションを開いて、その人物のソーシャル・ネットワーキング・プロフィールにおいて最新の状況、写真、コメント等を確認することが多いとする。意思決定エンジンは、例えば通話の最中やユーザが通話を終了した直後等に、ユーザが実際にアプリケーションの実行を要求する前にソーシャル・ネットワーキング・アプリケーションを事前起動しておくことを学習することができる。ユーザのために先んじてソーシャル・ネットワーキング・アプリケーションを事前起動することにより、一旦意思決定エンジンが該当する状況下で事前起動を行うことを学習すると、ユーザがソーシャル・ネットワーキング・アプリケーションを呼び出す際に体験する待ち時間が比較的短縮される可能性がある。この場合は、電話ログのコンテクスタが、ユーザが電話で話をした様々な連絡先を示すコンテクスト値を提供することができる。一部の実装例では、例えば、通話が行われた時刻／日／日付、ボブがユーザに電話をかけたのか、もしくはユーザがボブに電話をかけたのか、ボブおよび／またはユーザが職場の電話番号から電話をかけたのか、もしくは個人の電話番号から電話をかけたのか等の通話に関する他の情報も電話ログのコンテクスタから得ることができる。
【００１５】
本発明に係る動作の別の例は、機器の着信音の音量を自動的に調節することである。マイクロフォンで検出された周囲雑音が比較的高い時に着信音の音量を上げることが多いユーザを考えたい。意思決定エンジンは、マイクロフォンで検出された周囲雑音のコンテクスタの値が一定の閾値を超える時に動作（着信音量の増大）を行うように学習することができる。この周囲雑音の閾値は、その動作を行わせる特定のコンテクスト値として意思決定エンジンで学習することができる。言い換えると、意思決定エンジンは、周囲雑音のコンテクスタから得られたコンテクスト値が、着信音量の増大が意思決定エンジンが行うのに適した動作であることを示す状況では、ユーザ入力がなくとも予測的に着信音の音量を増大させることができる。時間の経過に伴い、意思決定エンジンは、（１）周囲雑音が高い状況下では着信音量を上げる動作をとり、（２）意思決定エンジンにその動作をとらせる周囲雑音の量の精度を改善し、（３）例えば種々のレベルの周囲雑音および／またはユーザの設定に応じて、特定の音量レベルを高く、または低く調節することを学習することができる。
【００１６】
上記のように、意思決定エンジンは、特定の動作が適切であったかどうかを示すフィードバックを介して学習させることができる。したがって、意思決定エンジンは、ある動作を行った後にフィードバックを受け取り、そのフィードバックを使用して意思決定エンジンの精度を改善することができる。意思決定エンジンが着信音の音量を上げる上記の例を考えたい。その後、ユーザがかかってきた電話を無視したり、着信音の音量を下げたりすると、それは意思決定エンジンにとって否定的なフィードバックとなる可能性がある。上記のソーシャル・ネットワーキング・アプリケーションを事前起動する例では、フィードバックは、アプリケーションが起動されてから所定量の時間以内、例えば３０秒以内にユーザが実際にソーシャル・ネットワーキング・アプリケーションを起動するための何らかの機器入力を提供することを決定したかどうかを示す。ユーザが機器入力を提供した場合、これは一般には意思決定エンジンにとって「肯定」のフィードバックと見なすことができ、ユーザが特定の家族に電話をした直後にアプリケーションを起動する動作をとる決定を強化する。反対に、所定量の時間内にユーザがソーシャル・ネットワーキング・アプリケーションを起動する機器入力を提供しない場合は、意思決定エンジンにとって「否定」のフィードバックと見なすことができ、意思決定エンジンに、そのような状況でソーシャル・ネットワーキング・アプリケーションを事前起動する確率を下げさせる。
【００１７】
この例では、アプリケーションは必ずしも明示的なフィードバックを意思決定エンジンに提供しないことに留意されたい。むしろ、フィードバックは暗黙的であり、例えばアプリケーションは、ユーザがアプリケーションを起動したか、または起動しなかったかを報告する必要はない。代わりに、その情報はモバイル機器のオペレーティング・システムから提供することができ、この場合、意思決定エンジンはオペレーティング・システムの一部となる。その他の場合においては、アプリケーションから、例えば、意思決定エンジンによって行われた特定の動作が適切であったかどうかを示すためにアプリケーションが意思決定エンジンに送る数値またはブール値から明示的なフィードバックを得ることができる。明示的なアプリケーションのフィードバックの一例として、アプリケーションは、アプリケーションを事前にロードするのにかかった時間を意思決定エンジンに通知することができる。一般に、あるアプリケーションの事前ロード時間が比較的長いことは、そのアプリケーションが事前ロードするのに適したアプリケーションであることを示唆し、したがって、アプリケーション起動決定エンジンにとって肯定的なフィードバックとして働く。逆に、事前ロード時間が比較的短いことは、そのアプリケーションを事前ロード時間することで得られる利益が比較的少ないことを示唆し、したがってアプリケーション起動決定エンジンにとって否定的なフィードバックとして働く。
【００１８】
上記のようなアプリケーションからのフィードバックは、コンテクスト値がアプリケーション使用パターンの非常に優れた、またはほぼ完璧な指標として機能する場合でも有用である可能性があることに留意されたい。例えば、１つまたは複数のコンテクスタが特定のアプリケーションが近い将来にほぼ確実にユーザによって起動される見込みであることを示す場合でも、通常通りのアプリケーションのロードを迅速に行えばユーザが待ち時間を全く知覚しない場合にはほとんど利益が得られない。逆に、１つまたは複数のコンテクスタが、ユーザが所与のアプリケーションを起動する比較的不確実な兆候しか提供しない場合でも、そのアプリケーションが事前起動しなければユーザに反応するようになるまでに長時間を要する場合には、アプリケーションを事前起動することがなお有用である可能性がある。
【００１９】
＜例示的なシナリオ＞
図１は、本発明に関し、状況を使用して先を見越して機器動作を行うことができるシナリオ１００を説明する図である。シナリオ１００は事例１および事例２を伴い、それぞれを以下において説明する。事例１から始めると、例示的シナリオ１００は、ユーザが特定のアプリケーション、例えば上記のソーシャル・ネットワーキング・アプリケーションの起動を要求した直後、例えば５秒後のモバイル機器１１０を示している。例えば、ユーザは、（キーボード、音声指示、トラックボール、タッチ画面等を介して）アプリケーションを起動することを指示する何らかの種類の機器入力を提供している。しかし、アプリケーションは、何らかの初期化処理を行っているために、例えば、記憶装置からメモリにロード中、オペレーティング・システムによりアクティブなアプリケーション・コンテクスト（プロセスやスレッド）に切り替え中、ネットワークを通じてデータの取得を試みている等のために、ユーザ命令にはまだ反応しない可能性がある。
【００２０】
しかし、図１に示すように、モバイル機器１１０は、アプリケーションを事前起動してユーザに知覚される待ち時間を短縮するように構成することが可能な状況に基づく動作モジュール１１１を含むことができる。一般に、状況に基づく動作モジュール１１１は、モバイル機器からコンテクスト、例えば「事例１」ではモバイル機器を使用して「ボブ」に電話をかけたことを示す１つまたは複数のコンテクスト値を取得することができる。コンテクスト値は、その通話がソーシャル・ネットワーキング・アプリケーションを起動するユーザ要求を受け取る直前、例えば２分以内に発呼された、または着信されたことを示すこともできる。時間の経過に伴って、状況に基づく動作モジュール１１１は、ソーシャル・ネットワーキング・アプリケーションを事前起動することが、ユーザがボブに電話をかけた、またはボブからの電話を受けた後にユーザのために行うのに適した動作であることを学習することができる。したがって、「事例２」においては、状況に基づく動作モジュールは、ユーザが実際にアプリケーションを要求する前にソーシャル・ネットワーキング・アプリケーションを起動しておくことができる。したがって、次にユーザがボブに電話をかける際にはソーシャル・ネットワーキング・アプリケーションを初期化し、ユーザが使用できる状態にしておくことができる。これを事例２に概略的に示し、事例２では事前起動の一部としてソーシャル・ネットワーキング・アプリケーションが何枚かの写真を既にモバイル機器にダウンロードしている。
【００２１】
＜例示的なアーキテクチャ＞
図２は、状況に基づく動作モジュール１１１の例示的アーキテクチャを示す図である。図２に示すように、状況に基づく動作モジュール１１１は、コンテクスト・マネジャ２１０、マッピング・マネジャ２２０、および動作マネジャ２３０を含むことができる。一般に、コンテクスト・マネジャ２１０は、時間２１１、場所２１２、電話ログ２１３、周囲雑音２１４、周辺光２１５、アプリケーションの使用状況２１６等を含む１つまたは複数のコンテクスタを管理するように構成することができる。コンテクスト値は、時間２１１についてはローカル機器のクロックおよび／または時刻サーバにより、場所２１２についてはＧＰＳシステムおよび／またはセルラー網による三角測量により、電話ログ２１３については通話記録アプリケーションにより、周囲雑音２１４についてはローカル機器のマイクロフォンにより、周辺光２１５についてはローカル機器の光センサにより取得することができ、およびアプリケーションの使用状況２１６についてはオペレーティング・システムから取得することができる。一般に、個々のコンテクスト値は、例えばセンサからモバイル機器でローカルに得ることができ、事例によっては１つまたは複数のローカルのコンテクスタ・ログに記憶される。ただし、事例によっては、コンテクスタ・ログをリモートで、例えばサーバに保持および記憶することができ、状況に基づく動作モジュールで使用するためにモバイル機器によって取り出すことができる。
【００２２】
図２に図示しないコンテクスタの他の例も企図される。一般に、他のコンテクスタは、モバイル機器１１０の各種機器センサ、および／またはオペレーティング・システム・ログ等、モバイル機器で保持される他の情報から得ることができる。下記で詳細に説明するように、コンテクスタは、例えば、コンテクスト・マネジャ２１０で使用するコンテクスタをユーザが選択できるグラフィック・ユーザ・インターフェース（「ＧＵＩ」）を介してユーザが選択できるようにすることができる。
【００２３】
本発明に係る動作を行うために意思決定エンジンが使用できる新しいコンテクスタを開発者が構築できることにも留意されたい。例えば、モバイル機器に電子コンパスをインストールするサード・パーティのアプリケーションを考えたい。電子コンパスの値、例えば方位角や論理的な方向（北、北西等）を提供する対応するコンテクスタをこの時にインストールすることができる。既存の意思決定エンジンは、新たにインストールされたコンテクスタにそれ以上変更を加えずに使用して各種動作を行うことを学習することができ、例えば、新しいコンテクスタをコンテクスト・マネジャによって提供される既存の機構に「プラグ・イン」することができる。これは、新しいコンテクスタがモバイル機器の製造者によって提供されるのか、モバイル機器のオペレーティング・システムの開発者（「ファースト・パーティ」）によって提供されるのか、またはサード・パーティーのアプリケーション開発者によって提供されるのかに関係なく該当する可能性がある。
【００２４】
状況に基づく動作モジュール１１１はマッピング・マネジャ２２０も含むことができ、これは、個々のコンテクスタから提供されるコンテクスト値を対応する動作に対応付けるように構成することができる。マッピング・マネジャ２２０は、対応付けを行うように構成された１つまたは複数の意思決定エンジン、例えばアプリケーションまたは「アプリ」起動決定エンジン２２１、着信音量決定エンジン２２２、および／または画面輝度決定エンジン２２３を含むことができる。個々の意思決定エンジンは、確率論／統計／確率的モデル、機械学習技術を介したオンラインまたはオフライン学習等を含む種々の決定アルゴリズムを使用して実装することができる。意思決定エンジンの特定の実装に関係なく、意思決定エンジンで実装される決定アルゴリズムが、特定の動作を行うかどうかを判断することができる。一般に、以前の機器動作とコンテクスト値の履歴を使用して時間の経過と共に意思決定エンジンを学習させることができ、その結果、意思決定エンジンは、ユーザにとって有益な形で各種機器動作の選択の精度を改善することを学習する。以前の機器動作は、アプリケーションの事前起動など、以前に意思決定エンジンによって行われた機器動作、または、意思決定エンジンが事前起動することなくユーザ入力を介して直接アプリケーションを起動したなど、ユーザが同様の動作を行った事例である。上記でコンテクスタについて述べたように、ファースト・パーティまたはサード・パーティの開発者が、マッピング・マネジャに直接プラグ・インし、既存のコンテクスタを使用して決定を行って各種動作を行うことを開始することが可能な新しい意思決定エンジンを提供することができる。例えば、機器が単純ベイズ・ネットワーク（naive  Bayesian）による意思決定エンジンを備えて製造され、その後サード・パーティーの開発者が、マッピング・マネジャにプラグ・インする時間ウィンドウ型の非常に高速の決定木意思決定エンジンを提供する。
【００２５】
動作マネジャ２３０は、マッピング・マネジャ２２０の意思決定エンジンによって行うことが可能な各種動作を管理するように構成することができる。例えば、そのような動作には、アプリケーションの事前起動動作２３１、着信音量調節動作２３２、および／または画面輝度調節動作２３３が含まれる。一般に、マッピング・マネジャで管理される各意思決定エンジンは、動作マネジャで管理される動作の１つまたは複数を行うことができる。実装によっては、動作は、例えば動作マネジャ２３０で使用される動作をユーザが選択できるグラフィック・ユーザ・インターフェース（「ＧＵＩ」）を介して、ユーザ選択可能とすることもできる。コンテクスタおよび意思決定エンジンと同様に、動作は、ファースト・パーティまたはサード・パーティーの開発者によって別途提供することもできる。例えば、上記の電子コンパスが、コンパスを照明する動作を提供することができる。時間の経過と共に、意思決定エンジンは、特定の時刻や周囲光が低い時等にユーザのためにコンパスを照明することを学習することができる。より一般的には、新しい動作を動作マネジャにプラグ・インして、既存の意思決定エンジンが既存のコンテクスタに応答して新たに利用可能となった動作を行うことを学習することができる。
【００２６】
以下の説明では、アプリケーションの事前起動動作について全般的に説明すると共に、それぞれ事前起動動作の一部と見なすことができる個々の具体的な下位動作（例えばメモリからアプリケーション・コードをロードする、コードを実行する等）に関連して説明する。また、用語「事前起動」は、本明細書においては、ユーザがアプリケーションの実行を要求する前にアプリケーションの起動を少なくとも部分的に行うという意味で一般に使用することに留意されたい。したがって、事前起動ではアプリケーションの起動を少なくとも部分的に行って、アプリケーションを事前起動された状態（コード／データが既にメモリにロードされている、コードが既に実行されている等）にして、ユーザがその後アプリケーションの実行を要求した場合にアプリケーションを事前起動された状態から実行できるようにする。
【００２７】
実装によっては、個々の意思決定エンジンは複数の動作を行うことができ、例えば事前起動される各アプリケーションを異なる動作として概念化することができることにも留意されたい。同様に、着信音量の調節は、１つの動作と考えることも、例えば音量を上げ下げするための個別の動作などの複数の動作を含むと考えることもできる。これは画面輝度の調節についても同様である。
【００２８】
個々の意思決定エンジンが特定の動作を行うかどうかは、意思決定エンジンへの入力として機能するコンテクスタの値に応じて決まる。時間の経過に伴って、意思決定エンジンが動作を行った時に、個々の動作から肯定または否定的なフィードバックを得ることができる。そのフィードバックを使用して意思決定エンジンを更新して、例えば着信音量を自動的に上げたり、ユーザのためにアプリケーションを事前起動したりする等、機器のユーザに有用である可能性のある動作をとらせることができる。図２では、動作から意思決定エンジンへのフィードバックを、個々の動作と意思決定エンジンを結ぶ双方向の矢印で概略的に示している。
【００２９】
図２に示す特定のコンテクスタ、意思決定エンジン、および動作は例示的なものであり、他のコンテクスタ、意思決定エンジン、および動作が企図されることにも留意されたい。例えば、上記のように、コンテクスタの値は、加速度計、温度センサ、電子コンパスまたはＧＰＳ、光センサ、マイクロフォン、カメラ、無線周波識別（ＲＦＩＤ）タグの読み取り（例えば近距離通信を使用する）等の種々のセンサ、ならびにネットワークの可用性やリンクの品質から得ることができる。コンテクスタは、各種アプリケーションおよび／またはモバイル機器１１０のオペレーティング・システムから得ることもでき、例えばオペレーティング・システムが、時間のコンテクスタに使用される機器クロックを備える場合がある。例えば、モバイル機器１１０は、種々のアプリケーションがいつ起動されるかを追跡するオペレーティング・システムを含み、特定のアプリケーションの起動がコンテクスタの役割を果たすことができる。具体的には、例えばユーザがいくつかのアプリケーションを特定の順序で要求する傾向がある場合には、一部のアプリケーションが、他のアプリケーションを事前起動させる「引き金（trigger）」となるアプリケーションである場合がある。所与のアプリケーションへのログインやキーの押下の順序等のユーザの振る舞いもコンテクスタの役割を果たすことができる。
【００３０】
所与のコンテクスタから得られるコンテクスト値は、未処理のデータであっても、より高いレベルの意思決定エンジンに提供してもよいことに留意されたい。例えば、未処理のＧＰＳデータを、場所のコンテクスタにより、例えば自宅、職場、友人の家等の意味的に情報の多い論理的な場所に変換することができる。同様に、未処理の時計データを時間のコンテクスタにより、朝、午後、夕方、夜間等に変換することができる。
【００３１】
意思決定エンジンに適する決定アルゴリズムの具体例としては、ベイズ・ネットワーク（例えば単純ベイズ・ネットワーク）分類器、決定木（例えば非常に高速の決定木）、サポート・ベクトル・マシン（ＳＶＭ）、隠れマルコフ・モデル（ＨＭＭ）、ガウス混合モデル（ＧＭＭ）等がある。現在の時刻と論理的な場所が単純ベイズ・ネットワークに基づく意思決定エンジンのコンテクスタとして使用される単純なシナリオを考えたい。意思決定エンジンが実行中のアプリケーションを認識すると、意思決定エンジンは、その認識が発生した時刻についてアプリケーション・カウンタｃ＿ｘを増分することができる。意思決定エンジンは、その認識が発生した論理的な場所を表す別のカウンタｃ＿ｙも増分することができる。意思決定エンジンは、アプリケーションについてのカウンタＰｒｉｏｒも増分することができ、これはアプリケーションが実行された合計回数を表す。意思決定エンジンが次に実行するアプリケーションを決定すると、意思決定エンジンは、現在の時刻を表す値ｃ＿ｘ’および現在の論理的場所を表す値ｃ＿ｙ’を取得することができる。そして、意思決定エンジンは、ｃ＿ｘ’＊ｃ＿ｘ’＊Ｐｒｉｏｒの値を各アプリケーションに割り当て、最も高い値のアプリケーションを実行することができる。
【００３２】
フィードバックは次のようにして発生する。予測が行われた後、ユーザが実際にアプリケーションを起動すると、意思決定エンジンは何れのアプリケーションが起動されたかを認識することができる。そして、その情報が、例えば変数ｃ＿ｘ、ｃ＿ｙ、およびＰｒｉｏｒを使用して上記の手順に従って記録される。したがって、ユーザがこれまで特定のアプリケーションを同じ時刻および／または同じ場所で実行する傾向がある場合は、そのことが割り当てられる値を増大させ、次にユーザがその場所に滞在している時、および／または同じ時刻に意思決定エンジンがそのアプリケーションを実行する可能性を高くするように作用する。
【００３３】
具体的な実装の１つでは、実行時のオーバーヘッド（ＣＰＵおよびメモリの利用量）が比較的低く、オフラインの学習処理を必要としないことから、非常に高速の決定木を使用する。さらに、ユーザの振る舞いの変化に適合しやすいため、そのような決定木の時間ウィンドウ型の実装を使用することもできる。非常に高速の決定木の詳細については、Ｄｏｍｉｎｇｏｓ  ｅｔ  ａｌ．，  “Ｍｉｎｉｎｇ  Ｈｉｇｈ−Ｓｐｅｅｄ  Ｄａｔａ  Ｓｔｒｅａｍｓ，”  ＫＤＤ  “００，  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ｓｉｘｔｈ  ＡＣＭ  ＳＩＧＫＤＤ  ｉｎｔｅｒｎａｔｉｏｎａｌ  ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｋｎｏｗｌｅｄｇｅ  ｄｉｓｃｏｖｅｒｙ  ａｎｄ  ｄａｔａ  ｍｉｎｉｎｇ  （ｐｐ．  ７１−８０），  ２０００．  Ｂｏｓｔｏｎ，  ＭＡ：  ＡＣＭ  Ｐｒｅｓｓで得ることができる。
【００３４】
一般に、コンテクスタの以前の値と動作のフィードバックを使用して意思決定エンジンを更新することができる。その結果、意思決定エンジンがそのフィードバックに基づいて学習するのにつれて、意思決定エンジンにより適切な動作をとらせることができる。実装によっては、コンテクスト値と動作のフィードバックを「ウィンドウ化」して古い値を割り引いて考慮する。例えば、ウィンドウ型ベイズ・アルゴリズムや決定木では、比較的最近（例えば、過去一週間、先月、過去４５日間等）のデータのみをコンテクスタおよびフィードバックに使用して意思決定エンジンを訓練する。それにより、意思決定エンジンが、例えば急なユーザの振る舞いの変化に対応して、より迅速に学習することを助けることができる。
【００３５】
この決定木の具体例では、意思決定エンジンは反復的にコンテクスト値を区分して、特定の動作に対応する値または値の範囲とする。決定木の各末端ノードが個々の動作を表すことができ、コンテクスト値は区分に使用される属性として表される。時間の経過と共に、末端ノード（動作）を検査ノードに置き換えることができ、検査ノードを分割して決定木で新しい規則を学習する。
【００３６】
また、ここに開示されるアーキテクチャでは各種動作とコンテクスタ間の独立を可能とすることに留意されたい。ある意味では、動作とコンテクスタを図２のアーキテクチャに「プラグ・イン」することができる。言い換えると、新しいコンテクスタを追加して、意思決定エンジンがその新しいコンテクスタを使用して、モバイル機器で既に有効にされている特定の動作を行うかどうかを学習できるようにする。
【００３７】
例えば、モバイル機器の位置で周辺光を監視する周辺光センサをコンテクスタとして追加することができる。周辺光が特定の機器動作と相関する傾向がある場合は、特定の意思決定エンジンが、周辺光についての特定の値に応答して１つまたは複数の既存の動作を開始できることを学習することができる。すなわち、意思決定エンジンは、その新しいコンテクスタに基づいて既存の機器動作を行うか否かについて新しい規則を学習することができる。
【００３８】
コンテクスタと動作とが互いに独立していることにより得られる技術的利点の１つを以下の例で説明する。この例は、コンテクスト・マネジャ２１０で新しいコンテクスタを有効にすることによってユーザの満足度を向上させることができることを示す。上記の家族ボブと話をした直後に頻繁にソーシャル・ネットワーキング・アプリケーションを開くユーザを考えたい。このユーザは、毎朝、通常は１時間行う朝のジョギングから帰ってきた直後にソーシャル・ネットワーキング・アプリケーションを開く習慣もあるとする。通話コンテクスタだけを有効にし、他のすべてのコンテクスタを有効にしない場合、アプリケーション起動決定エンジンは、ユーザがモバイル機器でボブと通話をした後にソーシャル・ネットワーキング・アプリを事前起動することを学習することができる。しかし、時間のコンテクスタや周辺光のコンテクスタなど、時間に反応するコンテクスタがないため、意思決定エンジンは、ユーザが朝にソーシャル・ネットワーキング・アプリケーションを開く傾向があることを示すコンテクスト値を得ることができない。
【００３９】
意思決定エンジンはこの例のユーザの習慣を学習するのに適したコンテクスタを持たないため、意思決定エンジンは、ユーザが朝のジョギングから戻る前にユーザのためにソーシャル・ネットワーキング・アプリケーションを事前起動することを学習することができない。現在の機器時間や周辺光センサ（例えば機器を持ってジョギングをするユーザの場合）などの新しい時間に反応するコンテクスタを有効にすることにより、既存のアプリケーション起動決定エンジンは、朝の適切な時間にモバイル機器でソーシャル・ネットワーキング・アプリケーションを事前起動することを学習することができる。肯定的なフィードバックでこの動作を強化することができ、例えば、ユーザが実際に毎朝ソーシャル・ネットワーキング・アプリケーションの実行を要求する時に肯定的なフィードバックが受け取られる。
【００４０】
周辺光のコンテクスタと時間のコンテクスタとは互いに正確には連携しないことに留意されたい。例えば、両者の関係は、夏時間への切り替わり後または夏時間からの切り替わり後に急に変化する、または季節に伴って日の出の時刻が変わるのにつれて時間をかけて変化する。場合によっては、意思決定エンジンは、ユーザの習慣に応じて一方のコンテクスタまたは他方のコンテクスタを使用することを学習することができる。したがって、意思決定エンジンは、日の出の時間に関係なく決まった時刻に習慣的にジョギングをするユーザに対しては、時間のコンテクスタを使用してソーシャル・ネットワーキング・アプリケーションを事前起動することを学習することができる。逆に、時計の時間に関係なく日が昇る時間に習慣的にジョギングをするユーザには、意思決定エンジンは周辺光のコンテクスタを使用してソーシャル・ネットワーキング・アプリケーションを事前起動することを学習することができる。
【００４１】
コンテクスタと動作が独立していることが有益であるさらに別の例として、既存の意思決定エンジンおよび既存のコンテクスタと共に機能するように新しい動作を有効にする以下の例を考えたい。ユーザがソーシャル・ネットワーキング・アプリケーションを事前起動するという１つの動作のみを有効にしており、上記のように機器時間および／または周辺光のコンテクスタを有効にしているとする。時刻の変化または朝の周辺光の変化は、意思決定エンジンがソーシャル・ネットワーキング・アプリケーションを事前起動するために使用するコンテクスト値の役割を果たすことができる。ただし、ユーザは、毎晩着信音の音量を下げ、朝起きた時に着信音の音量を戻すのを忘れる傾向もあるとする。着信音量調節動作２３２を有効にすることにより、着信音量決定エンジン２２２は、朝の一定の時刻、または朝に周辺光が増してきた時に着信音の音量を上げることを学習することができる。この場合、着信音の音量を上げたことからのフィードバックは、（１）ユーザが電話に出るか、または（２）調節後に着信音の音量を下げない場合に肯定と見なすことができる。着信音量決定エンジンは、夜の特定の時刻および／または周辺光が低減する時に着信音の音量を下げることも学習することができることにも留意されたい。
【００４２】
上記の例では、周辺光のコンテクスタと併せて時間のコンテクスタを使用することが有益である場合がある。ユーザは日中にモバイル機器をポケットに入れる傾向があるとする。この場合、ユーザのポケットの中は昼間でも暗いため、周辺光がないことだけでは、着信音の音量を下げる適切な指示にはならない可能性がある。時間のコンテクスタも使用することにより、着信音量決定エンジンは、例えば、（１）周辺光が比較的低く、かつ（２）現在の時刻が例えば午後８時など比較的遅い時に着信音の音量を下げるという規則を学習することができる。
【００４３】
＜例示的なＧＵＩ＞
図３Ａおよび図３Ｂは、それぞれ例示的なグラフィック・ユーザ・インターフェース（「ＧＵＩ」）３００および３５０の図である。ＧＵＩ３００でユーザは１つまたは複数のコンテクスタを選択的に有効／無効にすることができ、ＧＵＩ３５０でユーザは１つまたは複数の動作を選択的に有効／無効にすることができる。例えば、ＧＵＩ３００および／または３５０をモバイル機器で提示して、モバイル機器で有効にするコンテクスタおよび／または動作をユーザが選択できるようにする。一般に、新しいコンテクスタを有効にすることにより、ユーザは、既存の動作を実行するかどうかを決定する時に新しいコンテクスタから得られるコンテクスト値を意思決定エンジンに使用させることができる。同様に、新しい動作を有効にすることにより、ユーザは、意思決定エンジンに、既存のコンテクスタから得られるコンテクスト値に基づいてその新しい動作を実行するかどうかを決定させることができる。
【００４４】
図３Ａに関して、ユーザは、「有効にする」の列３０１から対応するブロックを選択することにより、ＧＵＩ３００を使用して個々のコンテクスタを有効にすることができる。所与のコンテクスタがユーザによって有効にされると、対応するブロックに「ｘ」が表示され、それ以外の場合は空欄で表示される。したがって、図３Ａは、ユーザが時間２１１と場所２１２を有効にし、電話ログ２１３、周囲雑音２１４、周辺光２１５、およびアプリケーションの使用状況２１６を無効にした設定を示している。
【００４５】
図３Ｂに関しては、ユーザは、「有効にする」の列３５１から対応するブロックを選択することによりＧＵＩ３５０を使用して個々の動作を有効にすることができる。所与の動作がユーザによって有効にされると、対応するブロックに「ｘ」が表示され、それ以外の場合は空欄で表示される。図３Ｂは、ユーザが特定の動作について下位動作を個々に選択状態にできるように複雑性を増した場合を示す。ここでは、ユーザはアプリケーション事前起動動作２３１全般を有効にしているが、図３Ｂで電子メール・アプリケーションの事前起動３５２に対応するブロックが空欄であることで示されるように、電子メール・アプリケーションの事前起動は明確に無効にしている。したがって、図３Ｂは、ユーザがアプリケーションの事前起動と着信音の調節を有効にした設定を示している。ただし、すべてのアプリケーションの事前起動を有効にする代わりに、ユーザは、アプリケーション事前起動決定エンジンで電子メール・アプリケーションが事前起動されることを明確に阻止している。より一般的には、複数の下位動作を実施する意思決定エンジンの場合、ユーザは、上記のように下位動作単位で特定の下位動作の有効／無効を切り替えることができる。
【００４６】
＜例示的な決定規則＞
図４Ａ、４Ｂ、および４Ｃは規則表４００を示し、これは、各種の決定規則が時間の経過と共に変化する、または追加される様子を説明するために使用される例示的なデータ構造である。この例では、規則表４００は、数個の意思決定エンジンに対応する組み合わせられた規則を示し、それらの規則は時間の経過と共にモバイル機器で進展する可能性がある。下記において詳細に説明するように、規則表４００は、追加的なコンテクスタと動作が有効にされるのに従って、アプリケーション起動決定エンジン２２１および着信音量決定エンジン２２２が学習することが可能な決定規則を例示している。ただし、規則表４００は、コンテクスタと動作を有効にすると新しい決定規則または更新された決定規則が発生することを例示するものであり、特定の意思決定エンジンがどのように決定規則を表すかを反映するとは限らないことに留意されたい。むしろ、個々の意思決定エンジンは、各自に備えられた特定の学習アルゴリズムを使用して決定規則を表すことができ、したがって決定規則は必ずしも別個の表で追跡する必要はない。例えば、決定木分類器は時間と共に変化し得る木構造を使用して決定規則を表すのに対し、単純ベイズ分類器は時間と共に変化し得る確率値を使用して決定規則を表すことができる。
【００４７】
図４Ａは、例えばユーザが着信音量の調節とソーシャル・ネットワーキング・アプリケーションの事前起動に関する２つの動作を有効にした時の初回の規則表４００を示し、それらの動作は上記のようにアプリケーションを事前起動する動作の下位動作とすることができる。上記のように、ユーザはＧＵＩ３５０などのＧＵＩを使用してそれらの動作を有効にすることができる。さらに、ユーザは、時間のコンテクスタ２１１と電話ログのコンテクスタ２１３の２つのコンテクスタを有効にしている。時間の経過に伴って、着信音量決定エンジンは、毎朝午前８時に着信音の音量を上げることを学習することができる。図４Ａではこれを規則４０１として示し、これは着信音量調節動作を午前８時のコンテクスト値に対応付ける。同様に、アプリケーション起動決定エンジンは、電話ログのコンテクスタがユーザがたった今ボブと電話で会話をしたことを示す時には必ずソーシャル・ネットワーキング・アプリケーションを事前起動することを学習することができる。図４Ａではこれを規則４０２として示し、これは「ボブ」の電話ログのコンテクスト値を、ソーシャル・ネットワーキング・アプリケーションを事前起動する動作に対応付ける。
【００４８】
図４Ｂは、例えばユーザが電子メール・アプリケーションを事前起動する動作をさらに有効にした後の第２の規則表４００を示す。上記のように、ユーザはＧＵＩ３５０などのＧＵＩを使用してこれを行うことができる。この新しい動作を有効にすることにより、アプリケーション起動決定エンジン２２１は、ユーザが朝午前９時を少し過ぎた時に電子メール・アプリケーションを起動する傾向があることを時間の経過に伴って学習することができる。したがって、事前起動アプリケーション決定エンジンは、電子メール・アプリケーションを事前起動する動作を午前９時のコンテクスト値に対応付ける新しい規則４０３を学習することができる。
【００４９】
図４Ｃは、例えばユーザが周囲雑音を測定するコンテクスタをさらに有効にした後の第３の規則表４００を示す。例えば、周囲雑音は、ユーザのモバイル機器のマイクロフォンで測定することができる。ユーザがこの新しいコンテクスタを有効にしたため、着信音量調節意思決定エンジンは、時間のコンテクスタと周囲雑音のコンテクスタの両方に依存するように規則４０１の精度を改善することができる。具体的には、図４Ｃの規則４０１は、周囲雑音が５０ｄＢを上回る時に午前８時より後にのみ着信音の音量を調節することを示している。上記のように、実装例によっては、着信音を調節する特定の音量、着信音の音量が調節される前にどの程度の周囲雑音があるか、周囲雑音のために着信音量を調節できる特定の時間等についての推定精度を継続して改善することができる。
【００５０】
上記の例を文脈に当てはめると、図４Ｃに示す規則４０１は、ユーザが一般に意思決定エンジンによって自動的に着信音量が上げられた時には音量をそのままにするが、周囲雑音が比較的低い時には着信音量を元の音量に下げる傾向があるという使用パターンを反映することができる。したがって、周囲雑音が比較的低かった状況では、着信音量を自動的に上げることが適切ではなかったという暗黙的な否定的なフィードバックをユーザが意思決定エンジンに提供したことになる。
【００５１】
上記の説明を展開するためのさらなる視点として、ユーザは通常午前８時までには比較的騒がしい職場で仕事をしているが、休日に自宅にいる時には背景雑音がはるかに少ないとする。ユーザから見ると、モバイル機器が、ユーザが職場にいる日に着信音量を上げることを学習したようにすら見える可能性がある。しかし、ユーザは、後に、午前８時より後に例えば混んでいる飲食店など職場以外の比較的騒がしい場所にいる時にもモバイル機器が着信音量を上げることに気付く可能性がある。
【００５２】
しかし、上記のように場所もコンテクスタとして使用することができる。上記の例では、例えば、ユーザが職場にいる時には着信音量を上げ、ユーザが自宅にいる時には着信音量を下げることを学習することにより、場所も、着信音量決定エンジンが規則４０１と同様の規則を学習するための適切なコンテクスタとなり得る。
【００５３】
＜第１の方法の例＞
図５は、上記のような状況に基づく動作を実施するために使用できる例示的方法５００を説明する図である。実装例によっては、方法５００は、モバイル機器１１０の状況に基づく動作モジュール１１１によって行うことができる。ただし、下記で詳細に説明するように、方法５００に関連する処理の一部は、１つまたは複数の他の機器、例えば１つまたは複数のサーバに割り振ることもできる。
【００５４】
ブロック５０１において、１つまたは複数のコンテクスタが有効にされる。例えば、コンテクスト・マネジャ２１０が、モバイル機器１１０の製造者によって予めインストールされ有効にされた１つまたは複数のコンテクスタを備えることができる。他の実施では、コンテクスタは、例えばソフトウェアやファームウェアの更新を介して追加のコンテクスタをインストールすることにより、後に追加することができる。さらに他の実施では、状況に基づく動作モジュール１１１が、ユーザによりインストール可能な購入後付加用（aftermarket）ソフトウェアとして提供される。さらに他の実施例においては、コンテクスト・マネジャ２１０が、ユーザまたはソフトウェア／ファームウェアの更新で、コンテクスタ単位で個々のコンテクスタをインストールさせることができる。さらに、上記のように、実装によっては、ユーザが例えばＧＵＩ３００を使用して適宜個々のコンテクスタをオンオフ設定（有効／無効）することができる。
【００５５】
次に、ブロック５０２において、１つまたは複数の動作が有効にされる。コンテクスタに関して上記で述べたように、動作は製造時に有効にする、ソフトウェア／ファームウェアの更新やインストールの一部として提供する、または動作単位で個々にインストールすることが可能である。同様に、実装例によっては、ユーザが例えばＧＵＩ３５０を使用して選択しながら個々の動作をオン／オフ設定（有効／無効）することができる。
【００５６】
次にブロック５０３において、各コンテクスタについて１つまたは複数のコンテクスト値が取得される。例えば、周辺光や音を反映する値を１つまたは複数のセンサから取得することができ、現在の機器時間を取得することができ、電話ログを入手することができ、機器のオペレーティング・システムと通信することにより最近のアプリケーションの振る舞いを監視する等が可能である。
【００５７】
次にブロック５０４において、コンテクスタの値に基づいて決定を行う。例えば、１つまたは複数の意思決定エンジンが上記の決定アルゴリズムを実装して、コンテクスタの値を対応付けて１つまたは複数の動作を選択することができる。
【００５８】
次にブロック５０５において、選択された１つまたは複数の動作が行われる。例えば、着信音量を調節して上げる、または下げる、１つまたは複数のアプリケーションを事前起動する等を行うことができる。
【００５９】
次に、ブロック５０６において、動作フィードバックを使用して意思決定エンジンの決定規則を更新する。例えば、動作がアプリケーションの起動を含む場合、フィードバックは、起動後ユーザが所定量の時間以内にアプリケーションの使用を要求する時に肯定となり、それ以外では否定になる。着信音量の調節の場合には、フィードバックは、ユーザが所定の時間内にその動作を元に戻さない、またはその時間内に着信音量を調節することなく１つまたは複数回の通話に出る場合に肯定と考えることができる。ユーザが着信音量を下げる、または上げて元に戻すことによって動作を元に戻した場合は、否定的なフィードバックと見なすことができる。一般に、肯定的なフィードバックは個々の動作を強化するように作用し、その結果、意思決定エンジンは肯定的なフィードバックが得られた時と同じ値またはそれに近い値をコンテクスタが持つ時にその動作を実行し続ける。同様に、否定的なフィードバックは、否定的なフィードバックが得られた時と同じ値または近い値をコンテクスタが持つ時にその動作を行わないように意思決定エンジンを学習させる。
【００６０】
方法５００は、図５でブロック５０６からブロック５０３に戻る矢印で示すように反復的に行うことにより（１つまたは複数の）意思決定エンジンの精度を継続的に改善することができることにも留意されたい。一般に、ブロック５０３〜５０６は、各種動作が行われた時のより新しいコンテクスト値とより新しい事例に基づいて時間をかけて反復して行うことができる。新しいコンテクスタおよび／または新しい動作が有効にされた時には、それぞれブロック５０１および５０２が方法５００への入り口点の役割を果たすことができる。また、意思決定エンジンの精度は時間の経過と共に改善されるので、特定の動作が事例によっては行われないが、コンテクスト値が同じである複数の後の事例で行われる可能性がある。これは、意思決定エンジンがその特定のコンテクストについてその動作を行うことを時間の経過と共に学習した場合に該当する。例えば、第１の事例では、着信音意思決定エンジンが規則４０１をまだ学習していない可能性があり、そのため午前８時に着信音量を調節しない可能性がある。後の第２の事例では、着信音量決定エンジンが規則４０１を学習しており、午前８時に着信音量を調節する可能性がある。同じように、意思決定エンジンの精度は継続的に改善され、最終的に、例えばユーザの振る舞いが変化するのに従って特定のコンテクスト値の場合は特定の動作を行わないことを学習することができる。
【００６１】
＜第２の方法の例＞
図６は、アプリケーションを事前起動する状況に基づく動作を実施するために使用できる例示的な方法６００を説明する図である。概念的には、方法６００は方法５００におけるブロック５０５の処理動作内容の具体例と見なすことができる。実装例によっては、方法６００はモバイル機器１１０のアプリケーション事前起動動作２３１によって行うことができる。
【００６２】
ブロック６０１において、事前起動するアプリケーションが特定される。例えば、このアプリケーションは、アプリケーション起動決定エンジン２２１によって特定することができる。上記の一例では、この決定を行って、ユーザが家族の一員であるボブとの電話を終えた直後の事例でソーシャル・ネットワーキング・アプリケーションを事前起動している。この例は、モバイル機器のユーザがソーシャル・ネットワーキング・アプリケーションの実行を要求する入力を提供する前にどのようにして動作が行われるかを説明するものであることに留意されたい。言い換えると、この決定が行われるのは、ユーザが電話の後比較的すぐにアプリケーションを要求する見込みが高いと意思決定エンジンが予想するようにするためである。
【００６３】
実装によっては、意思決定エンジンは、ブロック６０１で、アプリケーションに１つまたは複数の構成パラメータを設定することもできる。例えば、構成パラメータを使用して、例えばある電子メールについては電子メール署名を「ボブ」にし、他の電子メールについては「ボビー」にするなど、ユーザが電子メールをやり取りする相手に応じて異なる署名を設定することができる。別の例として、ユーザがＷｉ−Ｆｉアクセス環境のある地理的場所（例えば自宅）にいる時にはソーシャル・ネットワーキング・アプリケーションを比較的高い帯域幅機能に対応するよう設定し、ユーザがセルラー網サービスしか利用できない地理的場所（例えば自家用車）にいる時には比較的低い帯域幅機能に対応するよう設定することができる。
【００６４】
次に、ブロック６０２において、１つまたは複数の他のアプリケーションを退避させることができる。例えば、事前起動するアプリケーションが一定量のプロセッサおよび／またはメモリ資源を必要とする場合は、１つまたは複数の他のアプリケーションを終了して、事前起動対象のアプリケーションのために資源を解放することができる。具体的には、他のアプリケーションを終了することによってスレッドやプロセス等のプロセッサ資源を解放する、メモリを解放する、および／または他のアプリケーションのコードやデータをメモリから記憶装置に転送することができる。退避するアプリケーションを決めるためには各種の手法を使用することができ、例えば、現在実行されているアプリケーションの中で最も長い時間使用されていないもの、無作為に選択したアプリケーション、予測法、および／またはコストに基づく手法等がある。退避する（１つまたは複数の）アプリケーションは、記憶装置に移動する、メモリおよび／またはプロセッサ資源の割り当てを解放する等の「通常の」終了の振る舞いを用いることができる。
【００６５】
実装例によっては、上記のような退避させる（１つまたは複数の）アプリケーションは、１つまたは複数のコンテクスタの値に応じて意思決定エンジンが選択してもよく、例えば意思決定エンジンは、事前起動すべき（１つまたは複数の）アプリケーションだけでなく、退避する（１つまたは複数の）アプリケーションもコンテクスタの値に基づいて学習することができる。そのような実装では、アプリケーション起動決定エンジンは、退避されたアプリケーションを示すコンテクスト値を時間の経過と共に追跡するように構成することもできる。したがって、アプリケーション起動決定エンジンは、各種アプリケーションが退避された以前の事例からのフィードバックに基づいて、他のコンテクスタの値を考慮して、退避するのに適したアプリケーションを学習することができる。
【００６６】
次に、方法６００は、ブロック６０３〜６０５の実行に進むことができる。一般に、ブロック６０３〜６０５の処理は、アプリケーションを事前起動して、アプリケーションを事前起動状態にすることに関連する。
【００６７】
ブロック６０３において、事前起動するアプリケーションに資源を割り振ることができる。例えば、アプリケーションは、モバイル機器のオペレーティング・システムにメモリ資源を要求し、メモリ資源をアプリケーションに割り振ることができる。同様に、プロセッサ資源、例えば１つまたは複数のスレッドやプロセスをブロック６０３の一部としてアプリケーションに割り振ることができる。
【００６８】
次に、ブロック６０４において、アプリケーション・コードおよび／またはデータをメモリにロードすることができる。例えば、実行可能なバイナリ・コードを含む１つまたは複数のアプリケーション・モジュールを記憶装置（例えばフラッシュやハード・ドライブなどの不揮発性メモリ）から取り出し、比較的高速の揮発性メモリ、例えばＲＡＭにロードすることができる。例えば画像、映像、他の種類のデータ・ファイル等のアプリケーションで使用される各種データも記憶装置からメモリにロードすることができる。
【００６９】
次に、ブロック６０５において、ロードされたアプリケーション・コードをモバイル機器の１つまたは複数のプロセッサで実行することができる。例えば、当該アプリケーション・コードを実行することで、ネットワークからデータ（写真、映像等）をダウンロードする、ユーザをウェブ・サービスにログインさせる等の各種の初期化ステップを行うことができる。ゲーム・アプリケーションの場合、ブロック６０５は、１つまたは複数の点数をダウンロードする、１つまたは複数のピアもしくはサーバー（例えばマルチユーザ・ゲーム）に接続する等を含むことができる。
【００７０】
次に、ブロック６０６において、動作のフィードバックを受け取ることができる。実装例によっては、アプリケーションは、例えば肯定的なまたはマイナスのフィードバックを示す２進（ブール）値やより精緻な値（１〜１０の整数の評価等）などのフィードバックを意思決定エンジンに提供するための明示的な呼び出しを行うことができる。他の実装例では、アプリケーションの明示的なフィードバックは使用されない。むしろ、意思決定エンジンは事前起動されたアプリケーションが事前起動から所定量の時間内に要求されるかどうかを監視することができる。例えば、意思決定エンジンは、事前起動から所定量の時間（例えば２分）以内にアプリケーションが使用されることを肯定的なフィードバックと見なし、その他の場合はフィードバックを否定と見なす。
【００７１】
方法６００は、事前起動するアプリケーションのコードに変更を加えずに実行できることに留意されたい。例えば、アプリケーション起動決定エンジンの出力をモバイル機器のオペレーティング・システムのスケジューラに供給することができる。スケジューラは、単に事前起動されたアプリケーションを実行し、アプリケーションを所定の時間量、例えば１５秒間実行させる。その時間中に、アプリケーション・コードを単に通常通りに実行して、通例はユーザが明示的にアプリケーションを起動した後に行われる初期化ステップを行うことができる。所定量の時間が経過すると、オペレーティング・システムのスケジューラは、ユーザが明示的にアプリケーションの実行を要求するまではアプリケーションをそれ以上実行しないでおく。例えば、オペレーティング・システムは、アプリケーション（フェッチされたデータを含む）を退避せずに引き続きメモリに置いておくが、ユーザ要求が実際に受け取られるまでは、プロセッサにアプリケーションをスケジュールするのを停止することができる。多くの場合、この手法は、アプリケーション・コードの変更を必要とせず、アプリケーションまたはオペレーティング・システムのスケジューラにさらに変更を加えることなく、意思決定エンジンの決定を取り込むことによって実装することができる。
【００７２】
他の実装例においては、アプリケーション・コードが、事前起動の目的に使用される明示的な呼び出しまたは「シンク（sync）動作」を提供することができる。そのような実装では、アプリケーションの設計者が、事前起動時にアプリケーションを実行するのに適した機能を決定することができる。そのような実装では、「通常の」起動手順の代わりにシンク動作が呼び出されるので、アプリケーションは自身が事前起動されていることに「気付く」。この実装例では、アプリケーション設計者が、事前起動の目的に適切な初期化機能を分けてシンク動作とすることができる。したがって、シンク動作を提供することにより、アプリケーション設計者は、事前起動段階で行われるアプリケーション機能と、ユーザがアプリケーションの実行を明示的に要求するまで実行を待つアプリケーション機能とをコントロールすることができる。
【００７３】
＜その他の例＞
上記のコンテクスタ、動作、および意思決定エンジンは例示的なものであり、ここに開示される概念をどのようにして実施できるかの具体例を示すために提供した。ただし、ここに開示される実装と整合性のある多くの他の使用事例も企図される。一般に、追加的な機能は、異なる種類のコンテクスタ、動作、および意思決定エンジンを有効にすることによって提供することができる。
【００７４】
例えば、特定のユーザの振る舞い、感情、活動等に関連するコンテクスタを提供することができる。実装によっては、ユーザが嬉しいか、怒っているか、悲しいか等を知らせることにより明示的に自分の気分を示すことができる。他の場合には、例えば声の調子や電子メール通信で使用される単語等からユーザの気分を推測することができる（気分の研究に関するさらなる詳細はｈｔｔｐ：／／ａｆｆｅｃｔ．ｍｅｄｉａ．ｍｉｔ．ｅｄｕ／ｐｕｂｌｉｃａｔｉｏｎｓ．ｐｈｐで得ることができる）。そのような気分のコンテクスタが例えばユーザが悲しい気分であることを示す場合、着信音量決定エンジンは、悲しい時にはユーザは電話に出ないため、電話の着信音を消すことを学習することができる。別の例として、例えばユーザは比較的気分がよい時にソーシャル・ネットワーキング活動に参加する傾向があることから、アプリケーション起動決定エンジンは、ユーザが嬉しい気分であることを示す時にソーシャル・ネットワーキング・アプリケーションを起動することを学習することができる。
【００７５】
上記のように、ユーザの場所もコンテクスタとして使用することができる。実装によっては、物理的な場所（例えばＧＰＳ座標）に関連付けられた種々の論理的な場所を定義することができる。論理的な場所を定義することにより、ユーザが職を変えたり、新しい家に引っ越したりしても、学習された機能が整合性を保ち続けることができる。例えば、ユーザが職を変え、新しい物理的な職場への通勤を始めると、ユーザは新しい物理的な場所を「仕事」の論理的な場所として定義することができる。したがって、以前にユーザの古い職場に関して学習された規則は、２つの異なる職場の特定の物理的場所ではなく、「仕事」の論理的な場所に関連付けられるため、機能し続けることができる。
【００７６】
論理的な場所の別の例として、「飲食施設にいる」という一般的な概念を、ユーザのＧＰＳ座標がユーザがそのような施設にいることを示す時にはいつでも論理的な場所として使用することができる。したがって、ユーザが任意の種類のレストラン、カフェ、喫茶店等にいる時に頻繁にメールを書く習慣がある場合は、アプリケーション起動決定エンジンはテキスト・メッセージ・アプリケーションを開くことを学習することができる。したがって、「飲食施設」の論理的な場所を複数の場所と関連付け、ユーザがこれまでモバイル機器を持って訪れたことがない場所にも関連付けることができる。それに応じて、ユーザがこれまでその特定の場所でその動作を行ったことがなくとも、モバイル機器は、ユーザがいる場所の種類に基づいてメッセージ・アプリケーションを起動するなど、適切な動作をとることができる。むしろ、同様の場所におけるユーザの以前の動作に基づいて意思決定エンジンによって動作を推測することができる。
【００７７】
コンテクスタの別の例は、種々の動きに関連する。例えば、ユーザは、歩いている時と車を運転している時とで異なる習慣を有する場合がある。具体例として、ユーザは運転中は音声認識ソフトウェアを使用して電子メールおよび／またはテキスト・メッセージを作成するが、歩行中はキーボードを使用して電子メールおよび／またはテキスト・メッセージを作成する傾向があるとする。実装例によっては、ユーザが歩いているか運転しているかをユーザの最近の運動、例えば相対速度等に基づいて判定することができる。したがって、動きのコンテクスタが、「歩行中」、「運転中」、「自転車に乗っている」、「静止状態」等のコンテクスト値を提供することができる。さらに他の実装例においては、動きのコンテクスタが加速度計を使用して、ユーザが踊っているか、または他のその場で行う活動を行っているかどうかを判定することができる。
【００７８】
別の例として、コンテクスタは、モバイル機器の近くにいる人に関連することができる。例えば、ユーザが特定の友人や特定の家族等と一緒にいる場合、ユーザはモバイル機器を異なる形で使用する傾向がある場合がある。実装によっては、一緒にいる相手をユーザが明示的に特定する必要があるが、他の実装例においては、これは、例えばＢｌｕｅｔｏｏｔｈ(登録商標)等を介して他の人物のモバイル機器を認識することにより、モバイル機器によって自動的に判定することができる。子供と一緒にいる時には電話に一切出ない傾向があるが、特定の友人と一緒にいる時には常に電話に出るユーザを考えたい。そのような実装例においては、着信音量決定エンジンは、ユーザが子供と一緒にいる時には着信音量を下げるが、その特定の友人と一緒にいる時には音量を下げないようにすることを学習することができる。
【００７９】
これも上述したように、コンテクスタは、モバイル機器上の１つまたは複数のアプリケーションから提供される情報を反映することができる。例えば、電子メール・アプリケーションが、ユーザが外出中で職場にいないことを知らせるメッセージを有効にした、またはユーザが現在会議中であることを示すカレンダーの予定を有することを示すコンテクスト値を提供することができる。さらに別の例として、コンテクスタは、ユーザが最近特定の人物に電子メールを送信したことや、特定の単語が電子メールの件名および／または本文で使用されたかどうかを示すことができる。例えば、ユーザが文字列「ｈｔｔｐ：／／．．．」を含む電子メールを受信した場合、意思決定エンジンは、例えばユーザが電子メール中のハイパーリンクをクリックしてブラウザ・アプリケーションを起動した以前の事例に基づいてこの動作を学習した後には、ブラウザ・アプリケーションを起動することができる。
【００８０】
実装例によっては、コンテクスタをモバイル機器によって１時間、１分、１５分のブロック等の時間の「まとまり」に記録することができ、コンテクスト値を時間のまとまりごとの項目でコンテクスタ・ログに記録することができる。個々の意思決定エンジンは、時間のまとまりごとにアルゴリズムを更新することができる。実装例によっては、（１つまたは複数の）意思決定エンジンが対応する時間のまとまりを更新する相対的な頻度および／または時間のまとまりの大きさをユーザが設定できるようにすることができる。
【００８１】
上記の各種動作（アプリケーションの事前起動、着信音量の調節、画面輝度の調節等）も例示的なものであり、他の種類の動作も企図される。実装例によっては、モバイル機器を自動的にオン／オフする、飛行機モードにする等が可能である。さらに他の実装では、個々の意思決定エンジンが試験的に機器動作を学習することができる。例えば、意思決定エンジンは、ユーザがこれまでに電子コンパスを照明したことがなくとも、ユーザのために電子コンパスを照明する等の新しい動作を試みることができる。そのような実装では、それにより、ユーザが知りもしなかった可能性のあるモバイル機器の機能について知るのを助けることができる。
【００８２】
別の例として、一部の実装例は、バックグラウンド・サービスを特定の動作として抑制することができる。これには、ユーザが実行したいと思っている可能性のある他のアプリケーションのために演算資源（プロセッサ周期および／またはメモリ）を解放する効果がある。バックグラウンド抑制意思決定エンジンは、例えばユーザが仕事をしている時、特定の時刻、特定種類のファイル拡張子を持つ電子メールを受信した後等に、各種コンテクスト値がユーザが資源を多く要するアプリケーションを使用している可能性が高いことを示す時に、バックグラウンド・サービスを抑制することを学習することができる。
【００８３】
＜例示的なシステム＞
図７はシステム７００の一例を示す図である。例示的システム７００は、それぞれノート型クライアント機器７０２（１）およびモバイル・クライアント機器７０２（２）として示す１つまたは複数のクライアント機器７０２を含む。この場合、（１つまたは複数の）クライアント機器７０２は各々、プロセッサ７０４、メモリ７０６、記憶装置７０８、状況に基づく動作モジュール１１１、コンテクスタ・ログ７１０、およびオペレーティング・システム７１２を含むことができる。（添え字「（１）」は、クライアント機器７０２（１）に存在するモジュール、添え字「（２）」は、クライアント機器７０２（２）に存在するモジュールを表す意で使用する）状況に基づく動作モジュール１１１は一般に、図１〜図６に関して上述した処理を行うように構成することができる。コンテクスタ・ログ７１０は、有効にされているコンテクスタについて時間の経過と共に記憶された各種のコンテクスト値、ならびに動作がユーザまたは意思決定エンジンによって行われた時に行われた特定の動作の指示を含むことができる。
【００８４】
システム７００は、１つまたは複数のサーバ７１４も含むことができる。（１つまたは複数の）サーバ７１４も、プロセッサ７０４（３）、メモリ７０６（３）、および記憶装置７０８（３）を含むコンピューティング・デバイスとすることができる。添え字（３）は、サーバ７１４のプロセッサまたは記憶装置の存在を表す意で使用することに留意されたい。サーバ７１４は状況に基づく動作モジュール１１１（３）も含み、上記で図１〜図６に関して述べた処理は、（１つまたは複数の）サーバ７１４の状況に基づく動作モジュール１１１（３）によって行うこともできる。特定の実装の１つでは、１つまたは複数の意思決定エンジンが（１つまたは複数の）サーバ７１４の状況に基づく動作モジュール１１１（３）によって実装され、動作自体は個々のクライアント機器で行われる。ある視点から見ると、この実装では、コンテクスト・マネジャ２１０および動作マネジャ２３０をクライアント機器に、マッピング・マネジャ２２０をサーバに分散することができる。
【００８５】
（１つまたは複数の）クライアント機器７０２とサーバ７１４は、これに限定されないがインターネットなどの１つまたは複数のネットワーク７１６を介して通信することができる。状況に基づく動作モジュール１１１は、ソフトウェア、ハードウェア、および／またはファームウェアとして実装することができる。（１つまたは複数の）プロセッサ７０４は、コンピュータ可読命令コードの形態を有するデータを実行して機能を提供することができる。データおよび／またはコンピュータ可読命令コードはメモリ７０６および／または記憶装置７０８に記憶することができる。メモリおよび記憶装置は、とりわけ、揮発性もしくは不揮発性メモリ、ハード・ドライブ、および／または光学記憶装置（例えばＣＤ、ＤＶＤ等）、の１つまたは複数を含むことができる。
【００８６】
実装によっては、メモリ７０６は記憶内容の保ち時間が比較的短い揮発性メモリであり、一方、記憶装置７０８は命令（コード）およびデータの長期間の記憶に使用される不揮発性メモリである。そのような実装例では、記憶装置７０８を使用して、コンピューティング・デバイスがパワーサイクルされ、コードおよび／またはデータの変更が揮発性メモリから失われる時にその変更を保持する。そのような実装例では、アプリケーションの事前起動は、上記で方法６００のブロック６０４に関して説明したように、記憶装置７０８から一部またはすべてのアプリケーション・コードおよび／またはデータを取り出し、取り出したアプリケーション・コードまたはデータをメモリ７０６にロードすることを含むことができる。ユーザが特定のアプリケーションの実行を要求する前にそのようにすることで、アプリケーション・コードおよび／またはデータをユーザがアプリケーションの実行を要求した後に記憶装置から取り出す必要があった場合と比べて、アプリケーションはユーザによりよく反応するように見える。場合によっては、メモリ７０６は、記憶装置７０８に比べて読み出しおよび／または書き込みがかなり（例えば１桁またはそれ以上）「高速」または低待ち時間である場合もある。
【００８７】
また、状況に基づく動作モジュール１１１はオペレーティング・システム７１２と対話する、またはその一部とすることができることに留意されたい。実装例によっては、オペレーティング・システム７１２は、プロセッサ７０４で実行する個々のアプリケーションをスケジュールするスケジューラ機能を提供する。実装例によっては、オペレーティング・システムのスケジューラが、例えば方法６００のブロック６０３において、スレッドおよび／またはプロセスなどのプロセッサ資源をスケジュールされたアプリケーションに割り振る。
【００８８】
（１つまたは複数の）クライアント機器７０２およびサーバ７１４は、外部の記憶装置７１８からコンピュータ可読命令の形態のデータを受け取るおよび／または生成するように構成することもできる。外部記憶装置７１８の例には、とりわけ、光学記憶装置（ＣＤ、ＤＶＤ等）、ハード・ドライブ、およびフラッシュ記憶装置（例えばメモリ・スティックやメモリ・カード）がある。場合によっては、本明細書に記載されるモジュールを、組み立て時または少なくともユーザへの配送前にクライアント機器またはサーバにインストールすることができる。他の状況では、本明細書に記載のモジュールは、ネットワーク７１６を介して利用可能なダウンロード・モジュールとして、かつ／または外部記憶装置７１８から、配送後にユーザによってインストールすることができる。本明細書に記載のモジュールは、自立型アプリケーション、アプリケーションの部分、および／またはコンピューティング・デバイスのオペレーティング・システムの一部として顕在化することができる。
【００８９】
総合して、本明細書に記載のモジュールは、上記で図１〜図６に関して説明した機能を実現することができる。具体的には、状況に基づく動作モジュール１１１は、方法５００および／または６００を行うように構成することができる。事例によっては、分散環境などで、クライアント機器またはサーバが複数のコンピューティング・デバイスまたはマシンからなることが可能であることに留意されたい。そのような構成では、方法５００および／または６００は、複数のコンピューティング・デバイスまたはマシンに分散された処理を使用して実施することができる。
【００９０】
上記のように、一部の実装例においては、各種の意思決定エンジンをサーバー７１４で実行させる。そのような実装では、各クライアント機器がそれぞれローカルのコンテクスタ・ログ７１０（１）および７１０（２）を維持することができ、これらのログは、それぞれのクライアント機器の個々のコンテクスタについてのコンテクスト値の履歴、ならびに機器で行われた動作の履歴を含む。それらのコンテクスタ・ログをサーバー７１４にアップロードし、組み合わせてコンテクスタ・ログ７１０（３）とすることができる。
【００９１】
そのような実装例においては、サーバーの意思決定エンジンは、複数のユーザについてのコンテクスタ・ログに関して学習を行うことができる。これは特に、個々のユーザのコンテクスタ・データが比較的少ない事例で有用である場合がある。そのような実装では、個々の意思決定エンジンは、複数のユーザに適用できる可能性のある規則を学習することができる。一例は上記の電子メールに埋め込まれたハイパーリンクの例であり、例えば、多くの異なるユーザが、文字列「ｈｔｔｐ：／／．．．」を電子メール中のどこかに含む電子メールを受信した直後にブラウザ・アプリケーションを要求する可能性が高い。より一般的には、各意思決定エンジンは、他のユーザに対して他の機器で行われたコンテクスタ・ログおよび行われた動作から情報を取り出す（mine）ように構成することができる。したがって、意思決定エンジンは、他のユーザの状況と動作の関係から学習してユーザの体験を向上させることができる。実装によっては、他のユーザの機器の意思決定エンジンから得られる値を使用して意思決定エンジンをシード（seed）、初期化、またはその他の形で変更することさえできる。ただし、本明細書で述べる処理のすべて（意思決定エンジンの訓練を含む）は代わりに個々のクライアント機器でローカルに行い、そのクライアント機器またはユーザに固有のコンテクスタ・ログだけに基づいて意思決定エンジンを訓練してもよいことに留意されたい。
【００９２】
本明細書で使用する用語「コンピュータ」、「クライアント機器」、「サーバ」、および「コンピューティング・デバイス」は、一定量の処理能力および／または記憶能力を有する任意種の機器を意味することができる。一般に、「モバイル機器」は、ユーザが自分で携行するのに適したフォーム・ファクタで具現化されたコンピューティング・デバイスを言う。処理能力は、コンピュータ可読命令コードの形態のデータを実行して機能を提供することが可能な１つまたは複数のプロセッサにより提供することができる。
【００９３】
上記のように、コンピュータ可読命令は記憶装置および／またはメモリ装置に記憶することができる。記憶装置および／またはメモリ装置は、コンピューティング・デバイスの内部にあっても、かつ／または外部にあってもよい。記憶装置および／またはメモリ装置は、とりわけ、揮発性もしくは不揮発性メモリ、ハード・ドライブ、フラッシュ記憶装置、および／または光学記憶装置（例えばＣＤ、ＤＶＤ等）の１つまたは複数を含む。本明細書で使用する用語「コンピュータ可読媒体」は、一時的および非一時的なコンピュータ可読命令を含むことができる。それに対して、用語「コンピュータ可読記憶媒体」は一時的な事例を除外する。コンピュータ可読記憶媒体は「コンピュータ可読記憶装置」を含む。コンピュータ可読記憶装置の例には、とりわけ、ＲＡＭなどの揮発性記憶媒体、ハード・ドライブ、光ディスク、フラッシュ・メモリなどの不揮発性記憶媒体がある。
【００９４】
コンピューティング・デバイスの例には、パーソナル・コンピュータ、携帯電話、スマートフォン、携帯情報端末などの従来のコンピューティング・デバイス、または常に進化するコンピューティング・デバイスもしくはまだ開発されていない多数の種類のコンピューティング・デバイスが含まれる。さらに、システム７００の諸態様は１台のコンピューティング・デバイスで顕在化しても、複数のコンピューティング・デバイスに分散してもよい。
【００９５】
＜結び＞
本発明に関し、例示的な方法を説明する順序は制限とは解釈すべきでなく、ここに記載されるブロックまたはステップのうち任意数を任意の順序で組み合わせて記載の方法または代替の方法を実施することができる。さらに、本発明に係る方法は、コンピューティング・デバイスが方法を実装できるように、適切なハードウェア、ソフトウェア、ファームウェア、またはそれらの組み合わせで実施することができる。一例においては、本発明に係る方法は、一連の命令として１つまたは複数のコンピュータ可読記憶媒体に記憶され、１つまたは複数のコンピューティング・デバイスによる実行で１つまたは複数のコンピューティング・デバイスに方法を行わせる。
【００９６】
本明細書で説明する技術、方法、装置、システム等は、構造的特徴および／または方法論的動作に固有の術語で説明するが、特許請求の範囲に定義される主題は必ずしも記載の具体的な特徴や動作に制限されないことを理解されたい。むしろ、具体的な特徴や動作は、特許請求される方法、装置、システム等を実施する例示的形態として開示するものである。
【図１】
2015506617.tif 000003
【図２】
2015506617.tif 000004
【図３Ａ】
2015506617.tif 000005
【図３Ｂ】
2015506617.tif 000006
【図４Ａ】
2015506617.tif 000007
【図４Ｂ】
2015506617.tif 000008
【図４Ｃ】
2015506617.tif 000009
【図５】
2015506617.tif 000010
【図６】
2015506617.tif 000011
【図７】
2015506617.tif 000012
【国際調査報告】
2015506617.tif 000013
2015506617.tif 000014