(57)【特許請求の範囲】
【請求項１】
１つまたは複数のアプリケーションに対する、ユーザによって使用されるデバイス上で動作するデジタルアシスタントの拡張性を実現するための、コンピュータにより実行される、方法であって、
インターフェースを、前記アプリケーションのそれぞれのものと関連付けられるアプリケーション拡張機能により公開されるアプリケーション固有のサービスと相互運用するように構成するステップであって、各アプリケーション拡張機能は前記デバイス上でローカルにインスタンス化され、関連アプリケーションに固有のリソースのマニフェスト、イベントハンドラ、およびロジックを含む、ステップと、
前記アプリケーションのそれぞれから、前記アプリケーションのそれぞれと前記デジタルアシスタントとの間のインタラクションを可能にするための能力およびリソースを記述するデジタルアシスタントリソースにアクセスするための要求を受信するステップと、
前記関連アプリケーションからデジタルアシスタント拡張性クライアントに前記リソースのマニフェストをロードするステップであって、前記リソースのマニフェストは、前記関連アプリケーションに固有の１つまたは複数のキーワードを含む、ステップと、
少なくとも前記１つまたは複数のキーワードを前記デジタルアシスタント拡張性クライアントに登録するステップと、
イベントを実行し、前記登録された１つまたは複数のキーワードを呼び出すために、前記デバイスのユーザから入力を受信するステップと、
前記受信した入力および前記登録された１つまたは複数のキーワードの呼び出しに基づいて、アプリケーション拡張機能に、ハンドリングのために前記デバイスのユーザの入力をマッピングするステップと、
前記デバイスのユーザの入力に応答して、初期のアプリケーション固有のサービスを前記アプリケーション拡張機能から受信するステップと、
前記初期のアプリケーション固有のサービスを受信した後、異なるアプリケーションから後続のアプリケーション固有のサービスを受信するステップであって、前記後続のアプリケーション固有のサービスは、前記初期のアプリケーション固有のサービスからのコンテキストに基づいている、ステップと、
を備える、方法。
【請求項２】
前記アプリケーションをまたいだユーザエクスペリエンスが、前記デバイスのユーザに対して、ネイティブのデジタルアシスタントユーザエクスペリエンスとして公開されるように前記アプリケーション固有のサービスをレンダリングするステップであって、前記アプリケーション固有のサービスは、前記デジタルアシスタントに利用可能な回答のデータベースのサイズを増大させる、ステップをさらに含む、請求項１に記載の方法。
【請求項３】
マッピングする前記ステップを実施するときに、コンテキストデータを使用するステップをさらに含む、請求項１に記載の方法。
【請求項４】
前記コンテキストデータは、時間／日付、前記ユーザもしくはデバイスのロケーション、言語、スケジュール、前記デバイス上にインストールされるアプリケーション、ユーザプリファレンス、ユーザの振る舞い、ユーザアクティビティ、記憶される連絡先、呼履歴、メッセージング履歴、ブラウジング履歴、デバイスタイプ、デバイス能力、または通信ネットワークタイプの、１つまたは複数を備える、請求項３に記載の方法。
【請求項５】
前記アプリケーションのそれぞれに対する拡張性サービスを提供するステップであって、前記拡張性サービスは、言語サービス、ボキャブラリサービス、ユーザプリファレンスサービス、またはコンテキストサービスの、１つまたは複数を含む、ステップをさらに含む、請求項１に記載の方法。
【請求項６】
前記拡張性サービスの一部分をリモートサービスプロバイダから受信するステップをさらに含む、請求項５に記載の方法。
【請求項７】
前記アプリケーション拡張機能は、ユーザエクスペリエンスまたはユーザインターフェースを、前記デジタルアシスタントを使用して実現するためのロジックをさらに含む、請求項１に記載の方法。
【請求項８】
音声入力、ジェスチャ入力、または手動入力に応答的に、連絡先情報を共有すること、記憶される連絡先を共有すること、ミーティングをスケジューリングすること、ユーザのカレンダを調べること、リマインダをスケジューリングすること、発呼すること、デバイスを動作させること、ゲームをプレイすること、購買すること、覚え書きをとること、アラームもしくは目覚ましリマインダをスケジューリングすること、メッセージを送出すること、ソーシャルメディアの更新をチェックすること、ウェブサイトをスクラップにすること、検索サービスとインタラクションすること、ファイルを共有もしくは開示すること、ウェブサイトへのリンクを送出すること、または、リソースへのリンクを送出することの、少なくとも１つを実施するように、前記デジタルアシスタントを構成するステップをさらに含む、請求項１に記載の方法。
【請求項９】
前記１つまたは複数のキーワードは、前記アプリケーションのそれぞれを明確に特定する、請求項１に記載の方法。
【請求項１０】
前記後続のアプリケーション固有のサービスは、前記デジタルアシスタントにおいて前記ユーザからの一連のインタラクションを通じて受信される、請求項１に記載の方法。
【請求項１１】
デバイスであって、
１つまたは複数のプロセッサと、
グラフィックスおよびオーディオを使用して前記デバイスのユーザとインタラクションするためのユーザインターフェース（ＵＩ）と、
１つまたは複数のアプリケーションと関連付けられるコード、およびコンピュータ可読命令を記憶するメモリデバイスであって、前記コンピュータ可読命令は、前記１つまたは複数のプロセッサにより実行されたとき、前記デバイスに、
ユーザの振る舞い、および、前記デバイスとのインタラクションを監視することにより、デバイスユーザに対するコンテキストアウェアネスを維持するように構成されたデジタルアシスタントを前記デバイス上で公開することであって、前記デジタルアシスタントは、前記デバイスユーザと、前記ＵＩを通して音声インタラクションを使用してインタラクションするようにさらに構成され、各アプリケーション拡張機能は前記デバイス上でローカルにインスタンス化され、関連アプリケーションに固有のリソースのマニフェスト、イベントハンドラ、およびロジックを含む、ことと、
前記アプリケーションのそれぞれから、前記アプリケーションのそれぞれと前記デジタルアシスタントとの間のインタラクションを可能にするための能力およびリソースを記述するデジタルアシスタントリソースにアクセスするための要求を受信することと、
前記関連アプリケーションからデジタルアシスタント拡張性クライアントに前記リソースのマニフェストをロードすることであって、前記リソースのマニフェストは、前記関連アプリケーションに固有の１つまたは複数のキーワードを含む、ことと、
少なくとも前記１つまたは複数のキーワードを前記デジタルアシスタント拡張性クライアントに登録することと、
イベントを実行し、前記登録された１つまたは複数のキーワードを呼び出すために、前記デバイスユーザから前記ＵＩを通して入力を受信するステップと、
アプリケーション拡張機能に、ハンドリングのために入力を引き渡すために前記コンテキストアウェアネス、受信した入力、および前記登録された１つまたは複数のキーワードの呼び出しを使用することであって、前記アプリケーション拡張機能は、関連アプリケーションから初期のサービスを配信するように構成される、ことと、
前記デジタルアシスタントを、前記ＵＩを通して前記デバイスユーザに対して前記初期のサービスをレンダリングするように動作させることと、
初期のアプリケーションに関連付けられた前記初期のサービスをレンダリングするために前記デジタルアシスタントを動作させた後、前記初期のサービスからのコンテキストに基づいて後続のアプリケーションを使用して後続のサービスを動作させることと
を実行させる、メモリデバイスと、
を備える、デバイス。
【請求項１２】
前記デバイスに、前記アプリケーション拡張機能に対して１つまたは複数の拡張性サービスを公開させるための命令をさらに含む、請求項１１に記載のデバイス。
【請求項１３】
前記デバイスに、前記アプリケーション拡張機能が、実行のために前記マニフェストからランタイム環境内に、アプリケーション固有のリソースをロードすることを可能にさせるための命令をさらに含む、請求項１１に記載のデバイス。
【請求項１４】
前記アプリケーション拡張機能は、前記イベントハンドラを含む、請求項１３に記載のデバイス。
【請求項１５】
コンピュータサーバに配置された１つまたは複数のプロセッサによって実行されると、前記コンピュータサーバに、
ローカルデバイス上のデジタルアシスタント拡張性クライアントと相互運用することであって、前記デジタルアシスタント拡張性クライアントは、前記ローカルデバイス上で実行可能な１つまたは複数のアプリケーション拡張機能にアプリケーションプログラミングインターフェース（ＡＰＩ）を公開し、前記アプリケーション拡張機能のそれぞれは、それぞれのアプリケーションからデジタルアシスタントによってレンダリング可能なユーザエクスペリエンスにサービスを配信するように構成されている、ことと、
ｉ）前記ローカルデバイスでユーザエクスペリエンスをレンダリングするときにアプリケーションが１つもしくは複数の異なる言語を使用することを可能にする言語サービス、またはｉｉ）前記ユーザエクスペリエンスをレンダリングするときにアプリケーションが未知の単語もしくはフレーズを処理することを可能にする語彙サービスを含むデジタルアシスタント拡張性サービスを維持することと、
前記ローカルデバイス上の前記デジタルアシスタント拡張性クライアントによって公開される前記ＡＰＩを通じて、前記１つまたは複数のアプリケーション拡張機能に前記デジタルアシスタント拡張性サービスを提供することであって、
各アプリケーション拡張機能は前記ローカルデバイス上でローカルにインスタンス化され、それぞれのアプリケーションに固有のリソースのマニフェスト、イベントハンドラ、およびロジックを含み、
各アプリケーション拡張機能は、前記リソースのマニフェストに従ってイベントを受信し、前記リソースを利用し、前記デジタルアシスタントによるユーザエクスペリエンスをレンダリングするロジックを適用するために、前記ローカルデバイス上のローカルランタイム環境にロードされ、
初期のアプリケーション拡張機能を呼び出す以前のインタラクションが後続のアプリケーション拡張機能を特定して使用するために利用されるように、複数のアプリケーション拡張機能が一連のインタラクション内で前記デジタルアシスタントによって使用可能である、
ことと、
を実行させる命令を記憶する１つまたは複数のコンピュータ可読メモリデバイス。
【請求項１６】
前記デジタルアシスタント拡張性サービスおよびデジタルアシスタント拡張性クライアントは、ネイティブのデジタルアシスタントエクスペリエンスとして、すべてのアプリケーションにわたって前記ローカルデバイス上でレンダリング可能なユーザエクスペリエンスをサポートするプラットフォームを提供する、請求項１５に記載の１つまたは複数のコンピュータ可読メモリデバイス。
【請求項１７】
前記アプリケーション拡張機能は、前記ローカルランタイム環境内にロードされる前記リソースのマニフェストに書き込まれたアプリケーション固有のリソースを含む、請求項１５に記載の１つまたは複数のコンピュータ可読メモリデバイス。
【請求項１８】
前記アプリケーション拡張機能は、サードパーティ開発者によって作成される、請求項１７に記載の１つまたは複数のコンピュータ可読メモリデバイス。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  デジタルアシスタントは、種々のフィーチャをデバイスユーザに提供することができ、デバイスとインタラクションして、タスクを実施する、情報を得る、ならびに、音声インタラクションを使用して友人および同僚と接続されたままでいることをより容易にし得る。典型的にはユーザは、デジタルアシスタントと、音声入力を使用してインタラクションすることができ、デジタルアシスタントは、ユーザに、そのデジタルアシスタント自体の音声を使用して話し得る。現在のフィーチャは、満足のいくように多くの使用シナリオに対して作動するが、機能の増大によって、デジタルアシスタントは、より一層有益に、および生産的になり得る。
【０００２】
[0002]  この背景技術は、後に続く概要および詳細な説明に対する簡潔な背景状況を紹介するために提供される。この背景技術は、請求される主題の範囲を決定する際に一助となることは意図されず、請求される主題を、上記で提示された欠点または問題の、いずれかまたはすべてを解決する実装形態に制限するとみなされることもまた意図されない。
【発明の概要】
【０００３】
[0003]  スマートフォン、タブレット、パーソナルコンピュータ（PC）、ゲームコンソールなどのデバイス上でサポートされるデジタルアシスタントは、サードパーティ開発者により作り上げられるアプリケーション拡張機能とインターフェース接続する拡張性クライアントを含み、そのことによって、アプリケーションユーザエクスペリエンス、コンテンツ、またはフィーチャの様々な態様が、デジタルアシスタント内に統合され、ネイティブのデジタルアシスタントエクスペリエンスとしてレンダリングされ得る。アプリケーション拡張機能は、言語／ボキャブラリ、ユーザプリファレンス、およびコンテキストサービスなどのクラウドベースの、および／または、ローカルのソースから提供される種々のサービスを使用することができ、それらのサービスは、インテリジェンス、および、コンテキスト関連性を付加し、一方で、拡張機能が、デジタルアシスタントコンテキストの中でシームレスにプラグインおよび動作することを可能にする。アプリケーション拡張機能はさらには、サービスにより公開される一般的なデジタルアシスタント機能、データ構造、およびライブラリにアクセスし、それらを利用し、アプリケーションドメイン固有のコンテキストおよび振る舞いを、拡張機能で捕捉されるプログラミングフィーチャを使用して実現し得る。サードパーティアプリケーションに対するそのような拡張性は、デジタルアシスタントが、ユーザに対して質問に回答し、アクションを実施するために使用し得る情報のデータベースの範囲を広げ得る。
【０００４】
[0004]  本デジタルアシスタント拡張性は、デジタルアシスタントを使用して情報を取得し、タスクを実施する際のユーザ効率の増大を可能にし、デバイスとの全般的なユーザインタラクション性能を改善する。デジタルアシスタントに利用可能である情報データベースを広げることにより、拡張性は、回答の品質を改善し、応答およびアクションのより広範な、および、より総合的なセットが、デバイス上でサポートされることを可能にする。このことは、必要とされる情報を取得するための試行の数を低減することができ、そのことは、追加的なリソース消費およびユーザフラストレーションを引き起こし得る、デバイスへのうかつな入力の可能性を低減する。加えて、拡張性は、場合によっては、ネットワーク帯域幅、処理サイクル、メモリ、およびバッテリ寿命を含む利用可能なコンピューティングリソースを、デバイスが、より効率的に利用することを可能にする。例えば、デジタルアシスタントにより維持されるコンテキストおよびユーザの振る舞いを説明するデータは、状況に合わせたコンテンツ、情報、およびユーザエクスペリエンスを引き渡す際に、アプリケーションをより効率的に動作させるために利用され得、そのことは、ネットワーク帯域幅所要量、ならびに、デバイス上の処理、記憶、およびメモリリソース上の負荷を低減し得る。
【０００５】
[0005]  この概要は、下記の詳細な説明でさらに説明される、単純化された形式での概念の精選したものを紹介するために提供される。この概要は、請求される主題の、主要な特徴、または、本質的な特徴を識別することは意図されず、この概要は、請求される主題の範囲を決定する際に一助として使用されることもまた意図されない。その上に、請求される主題は、この開示の任意の部分で指摘されるいずれかまたはすべての欠点を解決する実装形態に制限されない。上記で説明された主題は、コンピュータ制御の装置、コンピュータプロセス、コンピューティングシステムとして、または１つもしくは複数のコンピュータ可読記憶媒体などの製造品として実現され得るということが理解されよう。これらの、および、様々な他の特徴は、以下の詳細な説明を読むこと、および、関連付けられる図面の検討から明らかになろう。
【図面の簡単な説明】
【０００６】
【図１】[0006]サードパーティアプリケーションおよび拡張機能とインターフェース接続するための拡張性クライアントを含む、例示的なデジタルアシスタントを示す図である。
【図２】[0007]デバイスがアプリケーションサービスとネットワークを介して通信およびインタラクションし得る、例示的なコンピューティング環境を示す図である。
【図３】[0008]リモートアプリケーションサービスとインタラクションする、ローカルアプリケーションおよび／またはブラウザを示す図である。
【図４】[0009]デジタルアシスタントへの例示的な入力、および、デジタルアシスタントにより実施され得る一般的な機能の例示的な体系的分類を示す図である。
【図５】[0010]ユーザとデジタルアシスタントとの間の例示的なインターフェースを示す図である。
【図６】ユーザとデジタルアシスタントとの間の例示的なインターフェースを示す図である。
【図７】ユーザとデジタルアシスタントとの間の例示的なインターフェースを示す図である。
【図８】[0011]デジタルアシスタント構成要素と、拡張性クライアントと、アプリケーション拡張機能とを含む、例示的な層状アーキテクチャを示す図である。
【図９】[0012]デジタルアシスタント拡張性サービスにより公開される例示的なサービスを示す図である。
【図１０】[0013]アプリケーションインストールの間のデバイス上での、アプリケーション拡張機能とオペレーティングシステムとの間の例示的なインタラクションを示す図である。
【図１１】[0014]アプリケーションランタイムの間の、アプリケーション拡張機能とデジタルアシスタント拡張性クライアントとの間の例示的なインタラクションを示す図である。
【図１２】[0015]デバイス上にインストールされる、３つの例示的なアプリケーション拡張機能を示す図である。
【図１３】[0016]例示的なデジタルアシスタント拡張性ユーザエクスペリエンスシナリオを示す図である。
【図１４】例示的なデジタルアシスタント拡張性ユーザエクスペリエンスシナリオを示す図である。
【図１５】例示的なデジタルアシスタント拡張性ユーザエクスペリエンスシナリオを示す図である。
【図１６】[0017]本デジタルアシスタント拡張性を実現するときに実施され得る、例示的な方法を示す図である。
【図１７】本デジタルアシスタント拡張性を実現するときに実施され得る、例示的な方法を示す図である。
【図１８】本デジタルアシスタント拡張性を実現するときに実施され得る、例示的な方法を示す図である。
【図１９】[0018]部分的に本デジタルアシスタント拡張性を実現するために使用され得る、パーソナルコンピュータ（PC）などの例示的なコンピュータシステムの単純化されたブロック線図である。
【図２０】[0019]部分的に本デジタルアシスタント拡張性を実現するために使用され得る、例示的なデバイスのブロック線図を示す図である。
【図２１】[0020]例示的なモバイルデバイスのブロック線図である。
【図２２】[0021]例示的なマルチメディアコンソールのブロック線図である。
【発明を実施するための形態】
【０００７】
[0022]  類する参照番号は、類する要素を図面で示す。要素は、別段示されない限り、一定の縮尺では描かれない。
【０００８】
[0023]  図１は、ユーザ１０５が、デジタルアシスタント１１２をホストするデバイス１１０を用いる、デジタルアシスタント拡張性配置構成１００の概観を示す。デジタルアシスタント１１２は、拡張性クライアント１１４をサポートし、その拡張性クライアント１１４は典型的には、ネットワーク１１５を介して、リモートデジタルアシスタントサービス１３０によりサポートされる拡張性サービス１１８と相互運用する。代替的に拡張性サービスは、場合によっては、ある程度または完全に、ローカルサービス１３５としてインスタンス化され得る。デジタルアシスタント拡張性クライアント１１４は、アプリケーション拡張機能１４０とのインタラクションを可能にするように構成され、そのことによって、アプリケーションのユーザエクスペリエンス、フィーチャ、およびコンテンツの様々な態様が、デジタルアシスタント１１２と統合され得る。典型的には拡張性は、大部分の場合、デジタルアシスタントを使用して、同様のおよび一貫性のあるサウンド、外観、および感覚によって、アプリケーションが、ユーザエクスペリエンス、フィーチャ、およびコンテンツをレンダリングすることができるように実現され、その結果、アプリケーションとデジタルアシスタントとの間の遷移は、円滑にハンドリングされ、エクスペリエンスは、ユーザに対してシームレスにレンダリングされる。
【０００９】
[0024]  拡張機能１４０は、サードパーティアプリケーション１５０と、場合によっては、関連付けられ得、ここで、アプリケーション作成者、開発者、または提供者は、デジタルアシスタント１１２の提供者と同じではないエンティティである。ファーストパーティアプリケーションがさらには、一部の実装形態でサポートされ得る。場合によっては、デジタルアシスタント拡張性サービス１１８は、図１での線１５２により示されるように、アプリケーション１５０との直接インタラクションをサポートし得る。
【００１０】
[0025]  デジタルアシスタント拡張性の例示的な実装形態の様々な詳細が、今から提示される。図２は、様々なユーザ１０５が、ネットワーク１１５を介して通信するそれぞれのデバイス１１０を用いる、例示的な環境２００を示す。各々のデバイス１１０は、デジタルアシスタント１１２のインスタンスを含む。デバイス１１０は、場合によっては、音声電話通信能力をサポートすることができ、典型的には、インターネットブラウジングおよびマルチメディア（例えば、音楽、ビデオなど）消費などのデータ消費アプリケーションを、様々な他のフィーチャに加えてサポートし得る。デバイス１１０は例えば、ユーザがしばしば使用し、音声および／またはマルチメディア（すなわち、ビデオ）呼を発し受信する、メッセージング（例えば、テキスティング）および電子メール通信に関わる、データを用いるアプリケーションおよびアクセスサービスを使用する、ワールドワイドウェブをブラウズする、などを行うユーザ機器、モバイルフォン、セルフォン、フィーチャフォン、タブレットコンピュータ、およびスマートフォンを含むことができる。
【００１１】
[0026]  他のタイプの電子デバイスが、さらには、環境１００の中で使用可能であると想定されており、それらの電子デバイスは、ハンドヘルドコンピューティングデバイス、ＰＤＡ（携帯情報端末）、ポータブルメディアプレイヤ、ヘッドセットおよびイヤホンを使用するデバイス（例えば、Bluetooth（登録商標）互換デバイス）、ファブレットデバイス（すなわち、組み合わせスマートフォン／タブレットデバイス）、ウェアラブルコンピュータ、ＧＰＳ（全地球測位システム）システムなどのナビゲーションデバイス、ラップトップＰＣ（パーソナルコンピュータ）、デスクトップコンピュータ、マルチメディアコンソール、ゲーミングシステムなどを含む。後に続く論考では、用語「デバイス」の使用は、通信能力を伴って構成される、および、通信ネットワーク１１５への接続性の能力がある、すべてのデバイスを包含することが意図される。
【００１２】
[0027]  環境１００内の様々なデバイス１１０は、異なるフィーチャ、機能、および能力（ここでは、全体的に「フィーチャ」と呼称される）をサポートし得る。所与のデバイス上でサポートされるフィーチャの一部は、他のデバイス上でサポートされるものと同様であってよく、一方で、他のフィーチャは、所与のデバイスに特有であり得る。様々なデバイス１１０上でサポートされるフィーチャの中での、重複および／または特殊性の度合は、実装形態により変動し得る。例えば、一部のデバイス１１０は、タッチ制御、ジェスチャ認識、および音声コマンドをサポートすることができ、一方で、他のものは、より制限されたＵＩを可能にし得る。一部のデバイスは、ビデオ消費およびインターネットブラウジングをサポートすることができ、一方で、他のデバイスは、より制限された媒体ハンドリングおよびネットワークインターフェースフィーチャをサポートし得る。
【００１３】
[0028]  リストバンドおよび他のウェアラブルデバイスなどのアクセサリデバイス２１８が、さらには、環境２００内に存在し得る。そのようなアクセサリデバイス２１８は、典型的には、着用者の生理機能（例えば、心拍数、とられた道程、燃焼されたカロリーなど）、および、環境条件（温度、湿度、紫外線（UV）レベルなど）の監視、ならびに、結合されるデバイス１１０からの通知を表面化させることなどの機能をサポートするために、Ｂｌｕｅｔｏｏｔｈのような狭域通信プロトコルを使用して、デバイス１１０と相互運用するように適合される。
【００１４】
[0029]  デバイス１１０は典型的には、様々なユーザエクスペリエンスにアクセスする、および／または、それらのユーザエクスペリエンスを実現するために、ネットワーク１１５を利用し得る。ネットワークは、様々な組み合わせまたは副組み合わせでの、種々のネットワークタイプおよびネットワークインフラストラクチャの任意のものを含むことができ、セルラーネットワーク、衛星ネットワーク、Ｗｉ−Ｆｉ（登録商標）およびＥｔｈｅｒｎｅｔ（登録商標）ネットワークなどのＩＰ（インターネットプロトコル）ネットワーク、公衆交換電話網（PSTN）、ならびに／または、Ｂｌｕｅｔｏｏｔｈ（登録商標）ネットワークなどの狭域ネットワークを含む。ネットワークインフラストラクチャは例えば、モバイル事業者、企業、インターネットサービスプロバイダ（ISP）、電話サービスプロバイダ、データサービスプロバイダなどによりサポートされ得る。
【００１５】
[0030]  ネットワーク１１５は、インターネットの一部分を利用し得る、またはインターネットへの接続をサポートするインターフェースを含むことができ、そのことによって、デバイス１１０は、１つまたは複数のコンテンツプロバイダにより提供されるコンテンツにアクセスし、さらには、様々なアプリケーションサービス２２５によりサポートされるユーザエクスペリエンスをレンダリングし得る。アプリケーションサービス２２５はそれぞれ、ソーシャルネットワーキング、マッピング、ニュースおよび情報、娯楽、旅行、生産性、金融などのアプリケーションの多様性をサポートし得る。デジタルアシスタントサービス１３０（より詳細に下記で説明される）がさらには、コンピューティング環境２００内に存在する。
【００１６】
[0031]  図３で示されるように、デバイス１１０は典型的には、アプリケーションサービス２２５とのインタラクションを容易にし得るブラウザ３０５、または１つもしくは複数のアプリケーション１５０などのローカル構成要素を含み得る。例えば一部のシナリオでは、ユーザ１０５は、様々なフィーチャおよび機能を可能にするためのデータを索出する、情報を提供する、ならびに／または、ローカルデバイス１１０のユーザインターフェース上でレンダリングされ得る所与のユーザエクスペリエンスをサポートするために、ネットワークを介してサービスに対して通信する、ローカルで実行するアプリケーションを起動することができる。一部のシナリオでは、アプリケーションは、デバイス上で、リモートデバイスとローカルにインターフェース接続することを必要とすることなく動作し得る。
【００１７】
[0032]  図４は、機能４００の例示的な体系的分類を示し、それらの機能４００は、典型的には、デジタルアシスタント１１２によりネイティブで、またはアプリケーション１５０との組み合わせでのいずれかでサポートされ得る。デジタルアシスタント１１２への入力は、典型的には、ユーザ入力４０５、内部ソースからのデータ４１０、および、サードパーティコンテンツ４１８を含み得る外部ソースからのデータ４１５を含み得る。例えば、内部ソースからのデータ４１０は、デバイス上のＧＰＳ（全地球測位システム）構成要素、または何らかの他のロケーションアウェア構成要素により報告される、デバイス１１０の現在のロケーションを含み得る。外部ソースデータ４１５は、例えば、外部システム、データベース、サービスなどにより提供されるデータを含む。
【００１８】
[0033]  様々な入力は、デジタルアシスタント１１２がコンテキストデータ４２０を、そのデジタルアシスタント１１２が動作するときに利用することを可能にするために、単独で、または様々な組み合わせで使用され得る。コンテキストデータは例えば、時間／日付、ユーザのロケーション、言語、スケジュール、デバイス上にインストールされるアプリケーション、ユーザのプリファレンス、ユーザの振る舞い（ここで、そのような振る舞いは、ユーザへの通告、および、ユーザの同意を伴って、監視／追跡される）、記憶される連絡先（場合によっては、ローカルユーザの、または外部ソーシャルネットワーキングサービスにより維持されるものなどのリモートユーザのソーシャルグラフへのリンクを含む）、呼履歴、メッセージング履歴、ブラウジング履歴、デバイスタイプ、デバイス能力、通信ネットワークタイプおよび／またはその通信ネットワークタイプで提供されるフィーチャ／機能、モバイルデータプラン制約／制限、通信に対する他のパーティと関連付けられるデータ（例えば、それらのパーティのスケジュール、プリファレンスなど）などを含み得る。
【００１９】
[0034]  示されるように、機能４００は、ユーザとインタラクションすること４２５（例えば、自然言語ＵＩ、および、他のグラフィカルＵＩを通して）、タスクを実施すること４３０（例えば、ユーザのカレンダに予定を書き留めること、メッセージおよび電子メールを送出することなど）、サービスを提供すること４３５（例えば、ユーザからの質問に回答すること、行先への方向をマッピングすること、アラームをセットすること、通知を転送すること、電子メール、ニュース、ブログを読み上げることなど）、情報を集めること４４０（例えば、本または映画についてユーザにより要求される情報を見出すこと、最も近いイタリアンレストランをロケーション特定することなど）、デバイスを動作させること４４５（例えば、プリファレンスをセットすること、スクリーンの明るさを調整すること、Wi-FiおよびBluetoothなどのワイヤレス接続をオンおよびオフに変えること、他のデバイスと通信すること、スマート家電を制御することなど）、および、様々な他の機能を実施すること４５０を例示的に含む。機能４００の列挙は、網羅的であることは意図されず、他の機能が、本デジタルアシスタント拡張性の特定の実装形態に対して必要とされ得るように、デジタルアシスタント１１２および／またはアプリケーション１５０により提供され得る。
【００２０】
[0035]  ユーザは典型的には、所与のデバイス１１０によりサポートされるフィーチャおよび機能に応じて、いくつかの方法でデジタルアシスタント１１２とインタラクションすることができる。例えば、図５で示されるように、デジタルアシスタント１１２は、ユーザ１０５がデバイス１１０上でのユーザエクスペリエンスにサポートされた物理的インタラクション５１０を用いることを可能にする有形ユーザインターフェース５０５を公開することができる。そのような物理的インタラクションは、タッチスクリーン上でのタップすること、フリックすること、ドラッグすることなどのようなタッチベースの入力などを使用する、ボタン、メニュー、キーボードなどの物理的および／または仮想的制御機構の操作を含み得る。
【００２１】
[0036]  一部の実装形態では、デジタルアシスタント１１２は、図６で示される自然言語ユーザインターフェース６０５、または代替的には、音声コマンドベースのユーザインターフェース（示されない）を公開することができ、それらのユーザインターフェースによってユーザは、音声６１０を用いて様々な入力をデバイス１１０に提供する。
【００２２】
[0037]  他の実装形態では、デジタルアシスタント１１２は、図７で示されるジェスチャユーザインターフェース７０５を公開することができ、それを用いてユーザ１０５は、ジェスチャ７１０を用いて入力をデバイス１１０に提供する。場合によっては、ユーザインターフェースの組み合わせが利用され得、ここでユーザは、例えば、音声および物理的入力の両方を用いて、デジタルアシスタント１１２およびデバイス１１０とインタラクションし得ることに留意されたい。ユーザジェスチャは、光学検知、タッチ検知、近接検知などの様々な技法を使用して検知され得る。
【００２３】
[0038]  図８は、所与のデバイス１１０上でインスタンス化され得る、例示的な層状アーキテクチャ８００を示す。アーキテクチャ８００は典型的には、ソフトウェアで実現されるが、ソフトウェア、ファームウェア、および／またはハードウェアの組み合わせが、さらには、場合によっては、利用され得る。アーキテクチャ８００は、層の様態で配置構成され、アプリケーション層８０５、ＯＳ（オペレーティングシステム）層８１０、およびハードウェア層８１５を含む。ハードウェア層８１５は、デバイス１１０により使用される様々なハードウェア（例えば、入力および出力デバイス、ネットワーキングおよび無線ハードウェアなど）の、そのハードウェア層８１５の上方の層に対する抽象概念を提供する。この例示的な例では、ハードウェア層は、マイクロホン８２０およびオーディオエンドポイント８２５をサポートし、そのオーディオエンドポイント８２５は例えば、デバイスの内部スピーカ、有線またはワイヤレスヘッドセット／イヤピース、外部スピーカ／デバイスなどを含み得る。
【００２４】
[0039]  この例示的な例でのアプリケーション層８０５は、様々なアプリケーション１５０（例えば、ウェブブラウザ、マップアプリケーション、電子メールアプリケーション、ニュースアプリケーションなど）、および、デジタルアシスタント拡張性クライアント１１４をサポートする。アプリケーションは、ローカルで実行するコードを使用して実現されることが多い。しかしながら場合によっては、これらのアプリケーションは、リモートサーバ、またはサービスプロバイダまたは他のクラウドベースのリソースによりサポートされるものなどの、他のコンピューティングプラットフォームにより提供されるサービスおよび／またはリモートコード実行に依拠し得る。デジタルアシスタント拡張性クライアント１１４はここでは、アプリケーション層８０５でインスタンス化される構成要素として示されるが、所与のアプリケーションにより提供される機能は、丸ごと、または部分的に、ＯＳ層またはハードウェア層のいずれかでサポートされる構成要素を使用して実現され得るということが理解されよう。
【００２５】
[0040]  ＯＳ層８１０は、デジタルアシスタント１１２、および、様々な他のＯＳ構成要素８５５をサポートする。典型的な実装形態では、デジタルアシスタント１１２は、線８６０により示されるように、デジタルアシスタントサービス１３０とインタラクションし得る。すなわちデジタルアシスタント１１２は、一部の実装形態では、サービス１３０でサポートされる、または他のリモートリソースを使用するリモートコード実行を、幾分か利用し得る、または完全に利用し得る。加えて、そのデジタルアシスタント１１２は、本明細書で説明される様々なフィーチャおよび機能を実現するために必要とされ得るように、他のＯＳ構成要素８５５（および／または、アーキテクチャ８００の他の層でインスタンス化される他の構成要素）を利用し得る、および／または、それらの構成要素とインタラクションし得る。一部の実装形態では、デジタルアシスタント拡張性クライアント１１４によりサポートされる機能の一部またはすべては、図８での破線の矩形により示されるように、デジタルアシスタントに組み込まれ得る。上記で指摘されたように、デジタルアシスタント１１２はさらには、デバイス１１０上で、幾分かまたは完全に、ローカルにインスタンス化される拡張性サービスとインタラクションし得る。例えばサービスは、種々のユーザエクスペリエンスおよびフィーチャをサポートするために、ローカルリソースを適用し、ローカル論理を実現することができる。
【００２６】
[0041]  図９は、リモートデジタルアシスタント拡張性サービス１１８およびローカルクライアント１１４によりアプリケーション拡張機能１４０に対して公開され得る、例示的なサービス９００を示す。サービス９００はさらには、デバイス１１０上で、丸ごとまたは部分的に、拡張性クライアント１１４および／またはローカルデジタルアシスタント拡張性サービス１３５（図１）により、ローカルに実現および／またはレンダリングされ得る。代替的には、サービスの一部またはすべては、拡張性サービス１１８から、場合によっては、リモートアクセスを可能にするインターフェース（示されない）を使用して、直接アプリケーションに提供され得る。サービス１３０は、サービス９００のプロビジョニングをサポートするために必要とされ得るように、検索サービス９３５などの種々のプロバイダからの他のサービスにアクセスし得る。
【００２７】
[0042]  言語およびボキャブラリサービス９０５は、データおよび／またはサービスをデジタルアシスタントに提供するとき拡張機能による異なる言語の利用をサポートすることができる。例えば、一部のアプリケーションは、多言語セッティングで利用され得、一方で、他のアプリケーションは、複数の言語をサポートすることを魅力的なものにする、地域的または全地球的な分布を有し得る。ボキャブラリサービスは、特殊化された、および／または、業界固有のボキャブラリのアプリケーション利用をサポートし得る。例えば、技術的および科学的なボキャブラリは、コンピュータおよび技術ニュースを扱うアプリケーションに対してサポートされ得る。したがって、ニュース読み上げアプリケーションは、ボキャブラリサービスにアクセスすることができ、そのことによって、記事が声に出してユーザ１０５に対してデジタルアシスタントにより読み上げられるとき、特定の用語が正しく発音される。
【００２８】
[0043]  ユーザプリファレンスサービス９１０は、拡張機能が、データおよびサービスを提供するときデジタルアシスタントにより維持されるユーザプリファレンスを考慮に入れることを可能にし得る。コンテキストサービス９１５は、同様に、拡張機能が、デジタルアシスタントにより維持されるコンテキストデータを使用することを可能にし得る。他のサービス９２０が、さらには、拡張性サービス１１８により、特定の実装形態の要用を満たすために公開され得る。
【００２９】
[0044]  図１０で示されるように、デバイス１１０上でのアプリケーション拡張機能１４０のインストールの間、アプリケーションを検証および展開するために利用されるアプリケーションパッケージマニフェスト１０１５、または同様のインストールパッケージが、デジタルアシスタントリソースにアクセスするための要求１０２０を起動するように構成される。典型的には、要求が説明するものは、アプリケーションと、オペレーティングシステム１０５０、および／または、そのオペレーティングシステム１０５０上で実行するデジタルアシスタント構成要素との間のインタラクションを容易にするための、アプリケーションに対するインタラクションの拡張性ポイント、要される能力およびリソースの説明などである。
【００３０】
[0045]  図１１で示されるように、ランタイム環境１１１０でのデバイス１１０上での、ランタイムでのアプリケーション拡張機能動作の間、アプリケーション拡張機能１４０は、デジタルアシスタント拡張性クライアント１１４と、アプリケーションプログラミングインターフェース（API）１１１５を通してインターフェース接続し、マニフェスト１１２０をロードすることができ、そのマニフェスト１１２０は、グラフィックス、オーディオ、コマンド、および他の情報などの、アプリケーション固有のリソースを含み得る。例えばマニフェスト１１２０は、キーワード１１２２を含むことができ、それらのキーワード１１２２は、マニフェストからロードされ、デジタルアシスタント拡張性クライアントに登録され得る。登録されるキーワードは、ユーザによりランタイムに呼び出され得、入力イベントは、適切なアプリケーション拡張機能に導かれ得る。アプリケーション名は、キーワードの典型的な例であり、ユーザは、アプリケーションを名前によって起動するようにデジタルアシスタントに指図することができ、または情報、サービス、コンテンツなどを、名前が付いたアプリケーションから取得することができる。ランタイムの間、拡張性クライアント１１４は、ユーザ入力、アクション、および振る舞いと関連付けられるイベントを、アプリケーション拡張機能内のイベントハンドラ１１２５に送り出し得る。アプリケーション拡張機能は、デジタルアシスタントを通して特定のユーザエクスペリエンスまたはユーザインターフェースを容易にするために、スクリプトおよび他のプログラミングコンストラクトなどの論理１１３０を適用することができる。
【００３１】
[0046]  図１２は、デバイス１１０上にインストールされる、３つの例示的なアプリケーション、および、対応する拡張機能を示す。アプリケーションは、映画データベースアプリケーション１２０５および拡張機能１２１０、電子商取引アプリケーション１２１５および拡張機能１２２０、ならびに、クラウドソーシングのレビューアプリケーション１２２５および拡張機能１２３０を含む。アプリケーションおよび拡張機能は、例示的であることが意図されるということ、ならびに、種々のアプリケーションおよび拡張機能の任意のものが、所与のシナリオで利用され得るということを強調したい。
【００３２】
[0047]  図１３〜１５は、図１２で示され、付随する本文で説明される、３つのアプリケーションを使用する、例示的なデジタルアシスタント拡張性ユーザエクスペリエンスを示す。図１３ではユーザ１０５は、デバイス１１０上で動作しているデジタルアシスタント１１２（この例示的な例では「Cortana」と名前が付いている）とのインタラクションを有する。示されるようにデジタルアシスタントは、電子商取引アプリケーションと、その拡張機能を通してインタラクションして、ユーザのウィッシュリスト上の項目についての情報を表面化させ得る。図１４ではデジタルアシスタントは、映画データベースアプリケーションと、その拡張機能を通してインタラクションして、ユーザに対する推薦される映画を見出し得る。デジタルアシスタントは、映画情報をユーザの連絡先の１つに転送するための最良の方法を見出すために、その能力を使用して、通信を追跡することができる。ユーザはさらには、サードパーティアプリケーションを、名前、この場合「Ｘｂｏｘ  Ｖｉｄｅｏ」により呼び出すことができ、そのことによって、デジタルアシスタントは、ユーザの要求に応答して名前が付いたアプリケーションとインタラクションすることになる。ここではＸｂｏｘ  Ｖｉｄｅｏアプリケーション拡張機能は、その名前をキーワードとして登録しており、そのキーワードによってユーザは、デジタルアシスタントとインタラクションするとき、アプリケーションに、名前により言及することが可能になる。
【００３３】
[0048]  図１５ではデジタルアシスタントは、クラウドソーシングのレビューアプリケーションと、その拡張機能を通してインターフェース接続し、レストラン推薦をユーザに提供する。デジタルアシスタントは、推薦を表面化させること、メニューを転送すること、方向を提供すること、および類することなど種々のサービスを、レビューアプリケーションからの情報を使用して提供し得る。
【００３４】
[0049]  図１６は、デジタルアシスタントをデバイス（例えば、デバイス１１０）上で動作させるための例示的な方法１６００のフローチャートを示す。具体的な説述がない限り、フローチャートで示され、付随する本文で説明される、方法またはステップは、特定の順序またはシーケンスに限定されない。加えて、方法、またはそれらの方法のステップの一部は、同時に生起し得る、または実施され得、所与の実装形態では、そのような実装形態の要件に応じて、すべての方法またはステップが実施されなければならないわけではなく、一部の方法またはステップは、任意選択により利用され得る。
【００３５】
[0050]  ステップ１６０５で、インターフェースは、アプリケーション固有のサービスを、デバイス上で動作するそれぞれのアプリケーションと関連付けられる拡張機能から受信することに対して構成される。ユーザインターフェースは、ステップ１６１０で、音声コマンドをデバイスユーザから受信するように構成される。ステップ１６１５で、受信される入力は、それぞれの拡張機能に、ハンドリングのためにマッピングされる。ステップ１６２０で、デジタルアシスタント拡張性サービス（図９で示され、付随する本文で説明される、サービス９００など）が、アプリケーション拡張機能に対して公開され得る。
【００３６】
[0051]  ステップ１６２５で、デジタルアシスタント拡張性クライアントは、デバイスユーザの入力に応答して、アプリケーション固有のサービスを拡張機能から受信する。ステップ１６３０で、アプリケーション固有のサービスは、アプリケーションをまたいだユーザエクスペリエンスがネイティブのデジタルアシスタントユーザエクスペリエンスとして公開されるようにレンダリングされる。
【００３７】
[0052]  図１７は、デバイス（例えば、デバイス１１０）上で実現され得る例示的な方法１７００のフローチャートである。ステップ１７０５で、コンテキストアウェアデジタルアシスタントがデバイス上で公開され、ここで、コンテキストアウェアネスは、少なくとも部分的に、ユーザの振る舞い、および、デバイスとのインタラクションを監視すること（典型的には、ユーザへの通告、および、同意を伴う）により獲得され得る。ステップ１７１０で、ユーザからの入力が受信される。ステップ１７１５で、コンテキストアウェアネスが使用され、アプリケーション拡張機能に、ハンドリングのためにユーザ入力を引き渡す。アプリケーション拡張機能は、ステップ１７２０で、アプリケーション固有のリソースをロードする、スクリプトを実行させる、および、イベントをハンドリングすることができる。場合によっては、ステップ１７２５で、アプリケーションデータベースが、サービスの一部分として公開され得る。ステップ１７３０で、デジタルアシスタントは、拡張機能から受信されるサービスをレンダリングするように動作される。
【００３８】
[0053]  図１８は、サービスプロバイダにより利用され得る例示的な方法１８００を示す。ステップ１８０５で、プロバイダでの１つまたは複数のサーバは、ローカルデバイス上で実行されるデジタルアシスタント拡張性クライアントと相互運用し得る。ステップ１８１０で、デジタルアシスタント拡張性サービスは維持され、それらのデジタルアシスタント拡張性サービスは、ステップ１８１５で、アプリケーション拡張機能に、ローカル拡張性クライアントを通して提供される。
【００３９】
[0054]  図１９は、ＰＣ、クライアントマシン、またはサーバなどの例示的なコンピュータシステム１９００であって、それによって、本デジタルアシスタント拡張性が実現され得る、コンピュータシステム１９００の単純化されたブロック線図である。コンピュータシステム１９００は、プロセッサ１９０５と、システムメモリ１９１１と、システムバス１９１４とを含み、そのシステムバス１９１４は、システムメモリ１９１１を含む様々なシステム構成要素をプロセッサ１９０５に結合する。システムバス１９１４は、種々のバスアーキテクチャの任意のものを使用する、メモリバスもしくはメモリコントローラ、周辺バス、またはローカルバスを含む、いくつかのタイプのバス構造の任意のものであり得る。システムメモリ１９１１は、読み出し専用メモリ（ROM）１９１７と、ランダムアクセスメモリ（RAM）１９２１とを含む。情報を、コンピュータシステム１９００の中の要素の間で、スタートアップの間などに伝達する助力となる、基本ルーチンを内包する、基本入出力システム（BIOS）１９２５が、ＲＯＭ１９１７に記憶される。コンピュータシステム１９００は、内部に配設されるハードディスク（示されない）から読み出す、および、そのハードディスクに書き込むためのハードディスクドライブ１９２８と、取り外し式磁気ディスク１９３３（例えば、フロッピーディスク）から読み出す、または、その磁気ディスクに書き込むための磁気ディスクドライブ１９３０と、ＣＤ（コンパクトディスク）、ＤＶＤ（デジタルバーサタイルディスク）、もしくは他の光学媒体などの取り外し式光学ディスク１９４３から読み出す、または、その光学ディスクに書き込むための、光学ディスクドライブ１９３８とをさらに含み得る。ハードディスクドライブ１９２８、磁気ディスクドライブ１９３０、および光学ディスクドライブ１９３８は、システムバス１９１４に、ハードディスクドライブインターフェース１９４６、磁気ディスクドライブインターフェース１９４９、および光学ドライブインターフェース１９５２、それぞれにより接続される。ドライブ、および、それらの関連付けられるコンピュータ可読記憶媒体は、コンピュータシステム１９００に対する、コンピュータ可読命令、データ構造、プログラムモジュール、および、他のデータの、不揮発性記憶を提供する。この例示的な例は、ハードディスク、取り外し式磁気ディスク１９３３、および取り外し式光学ディスク１９４３を含むが、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、データカートリッジ、ランダムアクセスメモリ（RAM）、読み出し専用メモリ（ROM）などの、コンピュータによりアクセス可能であるデータを記憶し得る、他のタイプのコンピュータ可読記憶媒体が、さらには、本デジタルアシスタント拡張性の、一部の用途で使用され得る。加えて、本明細書で使用される際に、コンピュータ可読記憶媒体という用語は、媒体タイプの、１つまたは複数の実例（例えば、１つまたは複数の磁気ディスク、１つまたは複数のCDなど）を含む。この明細書、および、特許請求の範囲では、「コンピュータ可読記憶媒体」という語句、および、その変形物は、波、信号、ならびに／または、他の一時的および／もしくは無形���信媒体を含まない。
【００４０】
[0055]  いくつかのプログラムモジュールが、ハードディスク、磁気ディスク１９３３、光学ディスク１９４３、ＲＯＭ１９１７、またはＲＡＭ１９２１上に記憶され得、それらのプログラムモジュールは、オペレーティングシステム１９５５、１つまたは複数のアプリケーションプログラム１９５７、他のプログラムモジュール１９６０、およびプログラムデータ１９６３を含む。ユーザは、キーボード１９６６などの入力デバイス、および、マウスなどのポインティングデバイス１９６８を通して、コマンドおよび情報をコンピュータシステム１９００に入力することができる。他の入力デバイス（示されない）は、マイクロホン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ、トラックボール、タッチパッド、タッチスクリーン、タッチセンシティブデバイス、音声コマンドモジュールもしくはデバイス、ユーザ動作もしくはユーザジェスチャ捕捉デバイスなどを含み得る。これらおよび他の入力デバイスは、プロセッサ１９０５に、システムバス１９１４に結合されるシリアルポートインターフェース１９７１を通して接続されることが多いが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（USB）などの、他のインターフェースにより接続されることがある。モニタ１９７３、または、他のタイプのディスプレイデバイスが、さらには、システムバス１９１４に、ビデオアダプタ１９７５などのインターフェースを通じて接続される。モニタ１９７３に加えて、パーソナルコンピュータは典型的には、スピーカおよびプリンタなどの、他の周辺出力デバイス（示されない）を含む。図１９で示される例示的な例は、さらには、ホストアダプタ１９７８と、小型コンピュータシステムインターフェース（SCSI）バス１９８３と、ＳＣＳＩバス１９８３に接続される外部記憶デバイス１９７６とを含む。
【００４１】
[0056]  コンピュータシステム１９００は、ネットワーク化された環境で、リモートコンピュータ１９８８などの、１つまたは複数のリモートコンピュータへの論理接続を使用して動作可能である。リモートコンピュータ１９８８は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または、他の共通ネットワークノードとして選択され得、典型的には、コンピュータシステム１９００に連関して上記で説明された要素の多くまたはすべてを含むが、単一の代表的なリモートメモリ／記憶デバイス１９９０のみが、図１９で示される。図１９で図示される論理接続は、ローカルエリアネットワーク（LAN）１９９３と、ワイドエリアネットワーク（WAN）１９９５とを含む。そのようなネットワーキング環境は、例えば、オフィス、企業内コンピュータネットワーク、イントラネット、およびインターネットで展開されることが多い。
【００４２】
[0057]  ＬＡＮネットワーキング環境で使用されるとき、コンピュータシステム１９００は、ローカルエリアネットワーク１９９３に、ネットワークインターフェースまたはアダプタ１９９６を通して接続される。ＷＡＮネットワーキング環境で使用されるとき、コンピュータシステム１９００は典型的には、ブロードバンドモデム１９９８、ネットワークゲートウェイ、または、通信をインターネットなどのワイドエリアネットワーク１９９５を介して確立するための他の手段を含む。内部または外部であり得るブロードバンドモデム１９９８は、システムバス１９１４に、シリアルポートインターフェース１９７１を通じて接続される。ネットワーク化された環境では、コンピュータシステム１９００に関係付けられるプログラムモジュール、または、それらのプログラムモジュールの一部分は、リモートメモリ記憶デバイス１９９０に記憶され得る。図１９で示されるネットワーク接続は、例示的なものであり、コンピュータの間の通信リンクを確立する他の手段が、本デジタルアシスタント拡張性の用途の特定の要件に応じて使用され得ることに留意されたい。
【００４３】
[0058]  図２０は、本デジタルアシスタント拡張性を提供するための、本明細書で説明される様々な構成要素を実行する能力があるデバイスに対する、例示的なアーキテクチャ２０００を示す。したがって、図２０で例示されるアーキテクチャ２０００は、サーバコンピュータ、モバイルフォン、ＰＤＡ、スマートフォン、デスクトップコンピュータ、ネットブックコンピュータ、タブレットコンピュータ、ＧＰＳデバイス、ゲーミングコンソール、および／またはラップトップコンピュータに対して適合させられ得るアーキテクチャを示す。アーキテクチャ２０００は、本明細書で提示される構成要素の任意の態様を実行するために利用され得る。
【００４４】
[0059]  図２０で例示されるアーキテクチャ２０００は、ＣＰＵ（中央処理ユニット）２００２と、ＲＡＭ２００６およびＲＯＭ２００８を含むシステムメモリ２００４と、メモリ２００４をＣＰＵ２００２に結合するシステムバス２０１０とを含む。情報を、アーキテクチャ２０００の中の要素の間で、スタートアップの間などに伝達する助力となる、基本ルーチンを内包する、基本入出力システムが、ＲＯＭ２００８に記憶される。アーキテクチャ２０００は、アプリケーション、ファイルシステム、およびオペレーティングシステムを実現するために利用される、ソフトウェアコードまたは他のコンピュータ実行コードを記憶するための大容量記憶デバイス２０１２をさらに含む。
【００４５】
[0060]  大容量記憶デバイス２０１２は、ＣＰＵ２００２に、バス２０１０に接続される大容量記憶コントローラ（示されない）を通して接続される。大容量記憶デバイス２０１２、および、その関連付けられるコンピュータ可読記憶媒体は、アーキテクチャ２０００に対する不揮発性記憶を提供する。
【００４６】
[0061]  本明細書に内包されるコンピュータ可読記憶媒体の説明は、ハードディスクまたはＣＤ−ＲＯＭドライブなどの大容量記憶デバイスに言及するが、コンピュータ可読記憶媒体は、アーキテクチャ２０００によりアクセスされ得る、任意の利用可能な記憶媒体であり得るということが、当業者により理解されるはずである。
【００４７】
[0062]  限定ではなく例として、コンピュータ可読記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または、他のデータなどの情報の記憶のための、任意の方法または技術で実現される、揮発性および不揮発性の、取り外し式および非取り外し式の媒体を含み得る。例えばコンピュータ可読媒体は、所望される情報を記憶するために使用され得る、および、アーキテクチャ２０００によりアクセスされ得る、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ（消去可能プログラマブル読み出し専用メモリ）、ＥＥＰＲＯＭ（電気的消去可能プログラマブル読み出し専用メモリ）、フラッシュメモリ、もしくは他の固体メモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ、ＨＤ−ＤＶＤ（高精細DVD）、Ｂｌｕ−ｒａｙ（登録商標）、もしくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶デバイス、または、任意の他の媒体を含むが、それらに制限されない。
【００４８】
[0063]  様々な実施形態によれば、アーキテクチャ２０００は、ネットワーク化された環境で、ネットワークを通してのリモートコンピュータへの論理接続を使用して動作し得る。アーキテクチャ２０００は、ネットワークに、バス２０１０に接続されるネットワークインターフェースユニット２０１６を通して接続し得る。ネットワークインターフェースユニット２０１６はさらには、他のタイプのネットワークおよびリモートコンピュータシステムに接続するために利用され得るということが理解されるはずである。アーキテクチャ２０００はさらには、キーボード、マウス、または電子スタイラス（図２０では示されない）を含む、いくつかの他のデバイスからの入力を受信および処理するための、入出力コントローラ２０１８を含み得る。同様に入出力コントローラ２０１８は、ディスプレイスクリーン、プリンタ、または、他のタイプの出力デバイス（やはり、図２０では示されない）への出力を提供し得る。
【００４９】
[0064]  本明細書で説明されるソフトウェア構成要素は、ＣＰＵ２００２内にロードされ、実行されたときに、ＣＰＵ２００２、および、全般的なアーキテクチャ２０００を、汎用コンピューティングシステムから、本明細書で提示される機能を容易にするようにカスタマイズされる特殊目的コンピューティングシステムに転換し得るということが理解されるはずである。ＣＰＵ２００２は、任意の数の状態を、個々に、または集団的に呈し得る、任意の数のトランジスタ、または他のディスクリート回路要素から構築され得る。より具体的には、ＣＰＵ２００２は、有限状態機械として、本明細書で開示されるソフトウェアモジュールの中に内包される実行可能命令に応答して動作し得る。これらのコンピュータ実行可能命令は、どのようにＣＰＵ２００２が状態間で遷移するかを指定し、それにより、トランジスタ、またはＣＰＵ２００２を構成する他のディスクリートハードウェア要素を転換することにより、ＣＰＵ２００２を転換することができる。
【００５０】
[0065]  本明細書で提示されるソフトウェアモジュールを符号化することが、さらには、本明細書で提示されるコンピュータ可読記憶媒体の物理的構造を転換し得る。物理的構造の具体的な転換は、この説明の異なる実装形態では、様々な要因に依存し得る。そのような要因の例は、コンピュータ可読記憶媒体を実現するために使用される技術、コンピュータ可読記憶媒体が特性付けられるのは、１次記憶としてか、それとも２次記憶としてかなどを含み得るが、それらに制限されない。例えば、コンピュータ可読記憶媒体が半導体ベースのメモリとして実現されるならば、本明細書で開示されるソフトウェアは、コンピュータ可読記憶媒体上で符号化されることが、半導体メモリの物理的状態を転換することにより行われ得る。例えばソフトウェアは、半導体メモリを構成する、トランジスタ、コンデンサ、または他のディスクリート回路要素の状態を転換し得る。ソフトウェアはさらには、そのような構成要素の物理的状態を、データをそれらの構成要素上で記憶するために転換し得る。
【００５１】
[0066]  別の例として、本明細書で開示されるコンピュータ可読記憶媒体は、磁気または光学技術を使用して実現され得る。そのような実装形態では、本明細書で提示されるソフトウェアは、ソフトウェアがそれらの媒体で符号化されるとき磁気または光学媒体の物理的状態を転換することができる。これらの転換は、所与の磁気媒体の中の特定の位置の磁気特性を変化させることを含み得る。これらの転換はさらには、所与の光学媒体の中の特定の位置の物理的特徴または特性を変化させて、それらの位置の光学特性を変更することを含み得る。物理的媒体の他の転換が、本説明の範囲および趣旨から逸脱することなく可能であり、上述の例は、この論考を容易にするためにのみ提供される。
【００５２】
[0067]  上記に鑑みて、多くのタイプの物理的転換が、アーキテクチャ２０００で、本明細書で提示されるソフトウェア構成要素を記憶および実行するために生じるということが理解されるはずである。アーキテクチャ２０００は、ハンドヘルドコンピュータ、埋め込み型コンピュータシステム、スマートフォン、ＰＤＡ、および、当業者に知られている他のタイプのコンピューティングデバイスを含む、他のタイプのコンピューティングデバイスを含み得るということが、さらには理解されるはずである。アーキテクチャ２０００は、図２０で示される構成要素のすべてを含むわけではないことがある、図２０で明示的に示されない他の構成要素を含み得る、または、図２０で示されるものとは全く異なるアーキテクチャを利用し得るということが、さらには企図される。
【００５３】
[0068]  図２１は、２１０２で全体的に示される、種々の任意選択のハードウェアおよびソフトウェア構成要素を含む、モバイルフォンまたはスマートフォンなどの、例示的なデバイス１１０の機能ブロック線図である。モバイルデバイス内の任意の構成要素２１０２は、任意の他の構成要素と通信し得るが、例示の容易さのために、すべての接続が示されるわけではない。モバイルデバイスは、種々のコンピューティングデバイス（例えば、セルフォン、スマートフォン、ハンドヘルドコンピュータ、PDAなど）の任意のものであってよく、セルラーまたは衛星ネットワークなどの、１つまたは複数のモバイル通信ネットワーク２１０４とのワイヤレス２ウェイ通信を可能とし得る。
【００５４】
[0069]  例示されるデバイス１１０は、信号コーディング、データ処理、入出力処理、パワー制御、および／または、他の機能のようなタスクを実施するための、コントローラまたはプロセッサ２１１０（例えば、信号プロセッサ、マイクロプロセッサ、マイクロコントローラ、ASIC（特定用途向け集積回路）、または、他の制御および処理論理回路網）を含み得る。オペレーティングシステム２１１２は、パワー状態、ロック済み状態、および未ロック状態を含む、構成要素２１０２の割り振りおよび使用法を制御することができ、１つまたは複数のアプリケーションプログラム２１１４に対するサポートを提供する。アプリケーションプログラムは、共通モバイルコンピューティングアプリケーション（例えば、画像捕捉アプリケーション、電子メールアプリケーション、カレンダ、連絡先マネージャ、ウェブブラウザ、メッセージングアプリケーション）、または、任意の他のコンピューティングアプリケーションを含み得る。
【００５５】
[0070]  例示されるデバイス１１０は、メモリ２１２０を含み得る。メモリ２１２０は、非取り外し式メモリ２１２２および／または取り外し式メモリ２１２４を含み得る。非取り外し式メモリ２１２２は、ＲＡＭ、ＲＯＭ、フラッシュメモリ、ハードディスク、または、他のよく知られているメモリ記憶技術を含み得る。取り外し式メモリ２１２４は、フラッシュメモリ、または、ＧＳＭ（登録商標）（モバイル通信用グローバルシステム）システムでよく知られている加入者識別モジュール（SIM）カード、または、「スマートカード」などの他のよく知られているメモリ記憶技術を含み得る。メモリ２１２０は、オペレーティングシステム２１１２およびアプリケーションプログラム２１１４を実行させるための、データおよび／またはコードを記憶するために使用され得る。例示的なデータは、１つまたは複数の有線またはワイヤレスネットワークを通じて１つもしくは複数のネットワークサーバもしくは他のデバイスに送出される、および／または、それらのネットワークサーバもしくは他のデバイスから受信されるウェブページ、テキスト、画像、サウンドファイル、ビデオデータ、または、他のデータセットを含み得る。
【００５６】
[0071]  メモリ２１２０はさらには、コンピュータ可読命令、データ構造、プログラムモジュール、もしくは、他のデータなどの情報の記憶のための、任意の方法もしくは技術で実現される、１つもしくは複数のコンピュータ可読記憶媒体として配置構成され得る、または、それらのコンピュータ可読記憶媒体を含み得る。例えばコンピュータ可読媒体は、所望される情報を記憶するために使用され得る、および、デバイス１１０によりアクセスされ得る、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、もしくは他の固体メモリ技術、ＣＤ−ＲＯＭ（コンパクトディスクROM）、ＤＶＤ（デジタルバーサタイルディスク）、ＨＤ−ＤＶＤ（高精細DVD）、Ｂｌｕ−ｒａｙ、もしくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶デバイス、または、任意の他の媒体を含むが、それらに制限されない。
【００５７】
[0072]  メモリ２１２０は、国際モバイル加入者識別（IMSI）などの加入者識別子、および、国際モバイル機器識別子（IMEI）などの機器識別子を記憶するために使用され得る。そのような識別子は、ネットワークサーバに、ユーザおよび機器を識別するために送信され得る。デバイス１１０は、タッチスクリーン２１３２；音声認識、音声コマンドなどに対する音声入力の実現のためのマイクロホン２１３４；カメラ２１３６；物理的キーボード２１３８；トラックボール２１４０；ならびに／または近接センサ２１４２などの、１つまたは複数の入力デバイス２１３０と、スピーカ２１５２、および、１つまたは複数のディスプレイ２１５４などの、１つまたは複数の出力デバイス２１５０とをサポートし得る。ジェスチャ認識を使用する他の入力デバイス（示されない）が、さらには、場合によっては、利用され得る。他の可能な出力デバイス（示されない）は、圧電または触覚出力デバイスを含み得る。一部のデバイスは、２つ以上の入出力機能をサーブし得る。例えば、タッチスクリーン２１３２およびディスプレイ２１５４は、単一の入出力デバイスに組み合わされ得る。
【００５８】
[0073]  ワイヤレスモデム２１６０が、アンテナ（示されない）に結合され得、当技術分野でよく理解されるように、プロセッサ２１１０と外部デバイスとの間の２ウェイ通信をサポートし得る。モデム２１６０は、総称的に示され、モバイル通信ネットワーク２１０４と通信するためのセルラーモデム、および／または、他の無線ベースのモデム（例えば、Bluetooth２１６４またはWi-Fi２１６２）を含み得る。ワイヤレスモデム２１６０は典型的には、単一のセルラーネットワークの中の、セルラーネットワークの間の、または、デバイスと公衆交換電話網（PSTN）との間の、データおよび音声通信のための、ＧＳＭネットワークなどの１つまたは複数のセルラーネットワークとの通信に対して構成される。
【００５９】
[0074]  デバイスは、少なくとも１つの入出力ポート２１８０、パワーサプライ２１８２、ＧＰＳ受信器などの衛星ナビゲーションシステム受信器２１８４、加速度計２１８６、ジャイロスコープ（示されない）、および／または物理的コネクタ２１９０をさらに含むことができ、その物理的コネクタ２１９０は、ＵＳＢポート、ＩＥＥＥ  １３９４（FireWire）ポート、および／またはＲＳ−２３２ポートであり得る。例示される構成要素２１０２は、必要とされるものでもすべてを含むものでもなく、任意の構成要素を削除することができ、他の構成要素を追加することができる。
【００６０】
[0075]  図２２は、マルチメディアコンソール１１０４の例示的な機能ブロック線図である。マルチメディアコンソール１１０４は、レベル１キャッシュ２２０２と、レベル２キャッシュ２２０４と、フラッシュＲＯＭ（読み出し専用メモリ）２２０６とを有する、中央処理ユニット（CPU）２２０１を有する。レベル１キャッシュ２２０２およびレベル２キャッシュ２２０４は、一時の間データを記憶し、ゆえに、メモリアクセスサイクルの数を低減し、それにより、処理速度およびスループットを改善する。ＣＰＵ２２０１は、２つ以上のコア、ならびにしたがって、追加的なレベル１キャッシュ２２０２およびレベル２キャッシュ２２０４を伴って構成され得る。フラッシュＲＯＭ２２０６は、マルチメディアコンソール１１０４がパワーオンされるときのブートプロセスの初期段階の間にロードされる実行可能コードを記憶し得る。
【００６１】
[0076]  グラフィックス処理ユニット（GPU）２２０８、および、ビデオエンコーダ／ビデオコーデック（コーダ／デコーダ）２２１４は、高速度および高解像度グラフィックス処理のためのビデオ処理パイプラインを形成する。データは、ＧＰＵ２２０８からビデオエンコーダ／ビデオコーデック２２１４に、バスを通じて搬送される。ビデオ処理パイプラインは、ＲＡＭなどの、ただしそれに制限されない、様々なタイプのメモリ２２１２へのプロセッサアクセスを容易にするために、データをＡ／Ｖ（オーディオ／ビデオ）ポート２２４０に、テレビジョンまたは他のディスプレイへの送信のために出力する。メモリコントローラ２２１０は、ＧＰＵ２２０８に接続される。
【００６２】
[0077]  マルチメディアコンソール１１０４は、好ましくは、モジュール２２１８上に実装されるＩ／Ｏコントローラ２２２０と、システム管理コントローラ２２２２と、オーディオ処理ユニット２２２３と、ネットワークインターフェースコントローラ２２２４と、第１のＵＳＢ（ユニバーサルシリアルバス）ホストコントローラ２２２６と、第２のＵＳＢコントローラ２２２８と、フロントパネルＩ／Ｏサブアセンブリ２２３０とを含む。ＵＳＢコントローラ２２２６および２２２８は、周辺コントローラ２２４２（１）および２２４２（２）、ワイヤレスアダプタ２２４８、ならびに外部メモリデバイス２２４６（例えば、フラッシュメモリ、外部CD/DVD ROMドライブ、取り外し式媒体など）に対して、ホストとしてサーブする。ネットワークインターフェースコントローラ２２２４および／またはワイヤレスアダプタ２２４８は、ネットワーク（例えば、インターネット、ホームネットワークなど）へのアクセスを提供し、Ｅｔｈｅｒｎｅｔカード、モデム、Ｂｌｕｅｔｏｏｔｈモジュール、ケーブルモデムなどを含む、多種多様の様々な有線またはワイヤレスアダプタ構成要素の任意のものであり得る。
【００６３】
[0078]  システムメモリ２２４３が、ブートプロセスの間にロードされるアプリケーションデータを記憶するために用意される。媒体ドライブ２２４４が、用意され、ＤＶＤ／ＣＤドライブ、ハードドライブ、または、他の取り外し式媒体ドライブなどを備え得る。媒体ドライブ２２４４は、マルチメディアコンソール１１０４の内部または外部のものであり得る。アプリケーションデータは、媒体ドライブ２２４４を通じて、実行、プレイバックなどのために、マルチメディアコンソール１１０４によりアクセスされ得る。媒体ドライブ２２４４は、シリアルＡＴＡバスなどのバス、または、他の高速度接続（例えば、IEEE 1394）を通じて、Ｉ／Ｏコントローラ２２２０に接続される。
【００６４】
[0079]  システム管理コントローラ２２２２は、マルチメディアコンソール１１０４の利用可能性を確実にすることに関係付けられる種々のサービス機能を提供する。オーディオ処理ユニット２２２３およびオーディオコーデック２２３２は、高忠実度およびステレオ処理を伴う、対応するオーディオ処理パイプラインを形成する。オーディオデータは、オーディオ処理ユニット２２２３とオーディオコーデック２２３２との間で、通信リンクを通じて搬送される。オーディオ処理パイプラインは、オーディオ能力を有する外部オーディオプレイヤまたはデバイスによる再生のために、データをＡ／Ｖポート２２４０に出力する。
【００６５】
[0080]  フロントパネルＩ／Ｏサブアセンブリ２２３０は、マルチメディアコンソール１１０４の外側表面上で露わにされる、パワーボタン２２５０およびイジェクトボタン２２５２、ならびに、任意のＬＥＤ（発光ダイオード）または他のインジケータの機能をサポートする。システムパワーサプライモジュール２２３９は、パワーをマルチメディアコンソール１１０４の構成要素に提供する。ファン２２３８は、マルチメディアコンソール１１０４の中の回路網を冷却する。
【００６６】
[0081]  ＣＰＵ２２０１、ＧＰＵ２２０８、メモリコントローラ２２１０、および、マルチメディアコンソール１１０４の中の様々な他の構成要素は、１つまたは複数のバスを通じて相互接続され、それらのバスは、種々のバスアーキテクチャの任意のものを使用する、シリアルおよびパラレルバス、メモリバス、周辺バス、ならびに、プロセッサまたはローカルバスを含む。例として、そのようなアーキテクチャは、周辺構成要素相互接続（PCI）バス、ＰＣＩ−Ｅｘｐｒｅｓｓバスなどを含み得る。
【００６７】
[0082]  マルチメディアコンソール１１０４がパワーオンされるとき、アプリケーションデータは、システムメモリ２２４３から、メモリ２２１２ならびに／またはキャッシュ２２０２および２２０４内にロードされ、ＣＰＵ２２０１上で実行され得る。アプリケーションは、グラフィカルユーザインターフェースを提示することができ、そのグラフィカルユーザインターフェースは、マルチメディアコンソール１１０４上で利用可能な異なる媒体タイプにナビゲートするとき、一貫性のあるユーザエクスペリエンスを提供する。動作中、媒体ドライブ２２４４の中に内包される、アプリケーションおよび／または他の媒体は、追加的な機能をマルチメディアコンソール１１０４に提供するために、媒体ドライブ２２４４から起動またはプレイされる。
【００６８】
[0083]  マルチメディアコンソール１１０４は、単純に、システムをテレビジョンまたは他のディスプレイに接続することにより、スタンドアロンシステムとして動作され得る。このスタンドアロンモードでは、マルチメディアコンソール１１０４によって、１人または複数のユーザは、システムとインタラクションする、映画を見る、または、音楽を聞くことが可能となる。しかしながら、ネットワークインターフェースコントローラ２２２４またはワイヤレスアダプタ２２４８を通して利用可能にされるブロードバンド接続性の統合によって、マルチメディアコンソール１１０４は、より大きなネットワークコミュニティへの参加者として、さらに動作させられ得る。
【００６９】
[0084]  マルチメディアコンソール１１０４がパワーオンされるとき、ハードウェアリソースのセットされた量が、マルチメディアコンソールオペレーティングシステムによるシステム使用のために予約される。これらのリソースは、メモリ（例えば、１６ＭＢ）、ＣＰＵおよびＧＰＵサイクル（例えば、５％）、ネットワーキング帯域幅（例えば、８ｋｂｐｓ）などの予約物を含み得る。これらのリソースはシステムブート時間に予約されるので、予約されるリソースは、アプリケーションの見え方からは実在しない。
【００７０】
[0085]  特にメモリ予約は、好ましくは、起動カーネル、並行システムアプリケーション、およびドライバを内包するのに十分大きい。ＣＰＵ予約は、好ましくは不変であり、そのことによって、予約されるＣＰＵ使用量がシステムアプリケーションにより使用されないならば、アイドルスレッドが、使用されないサイクルがあればそれらを消費することになる。
【００７１】
[0086]  ＧＰＵ予約に関しては、ＧＰＵ割り込みを使用して、コードをスケジューリングして、ポップアップをオーバレイにレンダリングすることにより、システムアプリケーションにより生成される軽量のメッセージ（例えば、ポップアップ）が表示される。オーバレイに対して必要とされるメモリの量は、オーバレイエリアサイズに依存し、オーバレイは好ましくは、スクリーン解像度によってスケーリングする。最大限のユーザインターフェースが並行システムアプリケーションにより使用される場合、アプリケーション解像度に非依存的な解像度を使用することが好ましい。スケーラが、この解像度をセットするために使用され得、そのことによって、周波数を変更し、ＴＶ再同期を引き起こすことの要用がなくされる。
【００７２】
[0087]  マルチメディアコンソール１１０４がブートし、システムリソースが予約される後、並行システムアプリケーションが、システム機能を提供することを実行する。システム機能は、上記で説明された予約されたシステムリソースの中で実行する、システムアプリケーションのセットにカプセル化される。オペレーティングシステムカーネルは、ゲーミングアプリケーションスレッドに対するものであるシステムアプリケーションスレッドであるスレッドを識別する。システムアプリケーションは好ましくは、アプリケーションに対する、一貫性のあるシステムリソースの見え方を提供するために、ＣＰＵ２２０１上で、あらかじめ決定された時間および間隔で動作するようにスケジューリングされる。スケジューリングは、コンソール上で実行されるゲーミングアプリケーションに対するキャッシュ中断を最小化するためのものである。
【００７３】
[0088]  並行システムアプリケーションがオーディオを要するとき、オーディオ処理は、時間に敏感であることに起因して、ゲーミングアプリケーションに非同期的にスケジューリングされる。マルチメディアコンソールアプリケーションマネージャ（下記で説明される）は、システムアプリケーションがアクティブであるとき、ゲーミングアプリケーションオーディオレベルを制御する（例えば、ミュートする、減衰させる）。
【００７４】
[0089]  入力デバイス（例えば、コントローラ２２４２（１）および２２４２（２））は、ゲーミングアプリケーションおよびシステムアプリケーションにより共有される。入力デバイスは、各々がデバイスのフォーカスを有することになるように、予約されるリソースではなく、システムアプリケーションとゲーミングアプリケーションとの間で切り替えられることになる。アプリケーションマネージャは好ましくは、ゲーミングアプリケーションのナレッジを知っていることなしに、入力ストリームの切り替えることを制御し、ドライバは、フォーカス切り替えに関する状態情報を維持する。
【００７５】
[0090]  サードパーティアプリケーションに対する本デジタルアシスタント拡張性の様々な例示的な実施形態が、今から、例示ということで、および、すべての実施形態の網羅的な列挙としてではなく提示される。例は、１つまたは複数のアプリケーションに対する、デバイス上で動作するデジタルアシスタントの拡張性を実現するための方法であって、インターフェースを、アプリケーションのそれぞれのものと関連付けられる拡張機能により公開されるアプリケーション固有のサービスと相互運用するように構成するステップと、入力をデバイスユーザから受信するステップと、デバイスユーザの入力を拡張機能に、ハンドリングのためにマッピングするステップと、デバイスユーザの入力に応答して、アプリケーション固有のサービスを拡張機能から受信するステップとを備える、方法を含む。
【００７６】
[0091]  別の例では、方法は、アプリケーションをまたいだユーザエクスペリエンスが、デバイスユーザに対して、ネイティブのデジタルアシスタントユーザエクスペリエンスとして公開されるように、アプリケーション固有のサービスをレンダリングするステップであって、アプリケーション固有のサービスは、デジタルアシスタントに利用可能な回答のデータベースのサイズを増大させる、レンダリングするステップをさらに含む。別の例では、方法は、コンテキストデータを、マッピングするステップを実施するときに使用するステップをさらに含む。別の例では、コンテキストデータは、時間／日付、ユーザもしくはデバイスのロケーション、言語、スケジュール、デバイス上にインストールされるアプリケーション、ユーザプリファレンス、ユーザの振る舞い、ユーザアクティビティ、記憶される連絡先、呼履歴、メッセージング履歴、ブラウジング履歴、デバイスタイプ、デバイス能力、または通信ネットワークタイプの、１つまたは複数を備える。別の例では、方法は、アプリケーションに対する拡張性サービスを提供するステップであって、拡張性サービスは、言語サービス、ボキャブラリサービス、ユーザプリファレンスサービス、またはコンテキストサービスの、１つまたは複数を含む、提供するステップをさらに含む。別の例では、方法は、拡張性サービスの一部分をリモートサービスプロバイダから受信するステップをさらに含む。別の例では、方法は、リモートサービスプロバイダとのインタラクションに対して構成される拡張性クライアントとのインターフェースをサポートするステップをさらに含む。別の例では、方法は、アプリケーション固有のリソースを、アプリケーション拡張機能に含まれるマニフェストからロードするステップであって、アプリケーション固有のリソースは、少なくともデジタルアシスタントに登録されるキーワードを含む、ロードするステップをさらに含む。別の例では、アプリケーション拡張機能は、ユーザエクスペリエンスまたはユーザインターフェースを、デジタルアシスタントを使用して実現するための論理をさらに含む。別の例では、方法は、音声入力、ジェスチャ入力、または手動入力に応答的に、連絡先情報を共有すること、記憶される連絡先を共有すること、ミーティングをスケジューリングすること、ユーザのカレンダを調べること、リマインダをスケジューリングすること、発呼すること、デバイスを動作させること、ゲームをプレイすること、購買すること、覚え書きをとること、アラームもしくは目覚ましリマインダをスケジューリングすること、メッセージを送出すること、ソーシャルメディアの更新をチェックすること、ウェブサイトをスクラップにすること、検索サービスとインタラクションすること、ファイルを共有もしくは開示すること、ウェブサイトへのリンクを送出すること、または、リソースへのリンクを送出することの、少なくとも１つを実施するように、デジタルアシスタントを構成するステップをさらに含む。
【００７７】
[0092]  さらなる例は、デバイスであって、１つまたは複数のプロセッサと、グラフィックスおよびオーディオを使用してデバイスのユーザとインタラクションするためのユーザインターフェース（ＵＩ）と、１つまたは複数のアプリケーションと関連付けられるコード、およびコンピュータ可読命令を記憶するメモリデバイスであって、それらのコンピュータ可読命令は、１つまたは複数のプロセッサにより実行されたとき、デバイスユーザに対するコンテキストアウェアネスを維持するために、ユーザの振る舞い、および、デバイスとのインタラクションを監視することにより、デジタルアシスタントをデバイス上で公開するステップであって、デジタルアシスタントは、デバイスユーザと、ＵＩを通して音声インタラクションを使用してさらにインタラクションする、公開するステップと、入力をデバイスユーザから、ＵＩを通して受信するステップと、入力をアプリケーションに対する拡張機能に、ハンドリングのために引き渡すためにコンテキストアウェアネスを使用するステップであって、アプリケーション拡張機能は、サービスをアプリケーションから、デジタルアシスタントによりレンダリング可能なユーザエクスペリエンスへと引き渡すように構成される、使用するステップと、デジタルアシスタントを、サービスをデバイスユーザに対してＵＩを通してレンダリングするように動作させるステップとを備える方法を実施する、メモリデバイスとを備える、デバイスを含む。
【００７８】
[0093]  別の例では、デバイスは、１つまたは複数の拡張性サービスをアプリケーション拡張機能に対して公開することをさらに含む。別の例では、デバイスは、アプリケーション拡張機能が、アプリケーション固有のリソースをマニフェストからランタイム環境内に、実行のためにロードすることを可能にすることをさらに含む。別の例では、アプリケーション拡張機能は、イベントハンドラを含む。別の例では、アプリケーション拡張機能は、スクリプトまたはプログラミングコンストラクトの１つを備える論理を含む。別の例では、デバイスは、アプリケーションと関連付けられる１つまたは複数のデータベースを、アプリケーション拡張機能を使用するデジタルアシスタントに対して公開することをさらに含む。
【００７９】
[0094]  さらなる例は、命令を記憶する１つまたは複数のコンピュータ可読メモリデバイスであって、それらの命令は、コンピュータサーバに配設される１つまたは複数のプロセッサにより実行されたとき、ローカルデバイス上のデジタルアシスタント拡張性クライアントと相互運用するステップであって、デジタルアシスタント拡張性クライアントは、アプリケーションプログラミングインターフェース（API）を、デバイス上で実行可能である１つまたは複数のアプリケーション拡張機能に対して公開し、アプリケーション拡張機能の各々は、サービスをそれぞれのアプリケーションから、デジタルアシスタントによりレンダリング可能なユーザエクスペリエンスへと引き渡すように構成される、相互運用するステップと、デジタルアシスタント拡張性サービスを維持するステップであって、それらのサービスは、ｉ）アプリケーションが、ユーザエクスペリエンスをローカルデバイス上でレンダリングするとき、１つもしくは複数の異なる言語を使用することを可能にする言語サービス、ｉｉ）アプリケーションが、ユーザエクスペリエンスをレンダリングするとき、不明の単語もしくは語句をハンドリングすることを可能にするボキャブラリサービス、ｉｉｉ）アプリケーションが、デジタルアシスタントにより維持されるユーザプリファレンスを用いることを可能にするユーザプリファレンスサービス、または、ｉｖ）アプリケーションが、サービスを引き渡すとき、コンテキストアウェアネスを利用することを可能にするコンテキストサービスの、少なくとも１つを含む、維持するステップと、デジタルアシスタント拡張性サービスを、１つまたは複数のアプリケーション拡張機能に、ローカルデバイス上のデジタルアシスタント拡張性クライアントにより公開されるＡＰＩを通して提供するステップとを備える方法を実施する、１つまたは複数のコンピュータ可読メモリデバイスを含む。
【００８０】
[0095]  別の例では、デジタルアシスタント拡張性サービス、および、デジタルアシスタント拡張性クライアントは、ユーザエクスペリエンスをサポートするプラットフォームを提供し、それらのユーザエクスペリエンスは、ローカルデバイス上で、すべてのアプリケーションをまたいで、ネイティブのデジタルアシスタントエクスペリエンスとしてレンダリング可能なものである。別の例では、アプリケーション拡張機能は、ランタイム環境内にロードされるマニフェストに書き込まれるアプリケーション固有のリソースを内包する。別の例では、アプリケーション拡張機能は、サードパーティ開発者により作成される。
【００８１】
[0096]  上述に基づいて、デジタルアシスタント拡張機能に対する技術が、本明細書で開示されたということが理解されるはずである。本明細書で提示される主題は、コンピュータ構造的特徴、方法論的および変革的行為、特定のコンピューティング機械類、ならびにコンピュータ可読記憶媒体に固有の文言で説明されたが、添付される特許請求の範囲で定義される本発明は、必ずしも、本明細書で説明された、特定の特徴、行為、または媒体に制限されないということが理解されるべきである。むしろ、特定の特徴、行為、および媒体は、特許請求の範囲を実現することの例形式として開示される。
【００８２】
[0097]  上記で説明された主題は、単に例示ということで提供され、制限的と解釈されるべきではない。例示および説明された、例示的な実施形態および用途にしたがうことなく、ならびに、以下の特許請求の範囲で論述される、本発明の真の趣旨および範囲から逸脱することなく、様々な修正および変更を本明細書で説明された主題に加えることができる。
【図１】
0006671394.tif 000002
【図２】
0006671394.tif 000003
【図３】
0006671394.tif 000004
【図４】
0006671394.tif 000005
【図５】
0006671394.tif 000006
【図６】
0006671394.tif 000007
【図７】
0006671394.tif 000008
【図８】
0006671394.tif 000009
【図９】
0006671394.tif 000010
【図１０】
0006671394.tif 000011
【図１１】
0006671394.tif 000012
【図１２】
0006671394.tif 000013
【図１３】
0006671394.tif 000014
【図１４】
0006671394.tif 000015
【図１５】
0006671394.tif 000016
【図１６】
0006671394.tif 000017
【図１７】
0006671394.tif 000018
【図１８】
0006671394.tif 000019
【図１９】
0006671394.tif 000020
【図２０】
0006671394.tif 000021
【図２１】
0006671394.tif 000022
【図２２】
0006671394.tif 000023