(58)【調査した分野】(Int.Cl.,DB名)
前記アプリケーションをまたいだユーザエクスペリエンスが、前記デバイスのユーザに対して、ネイティブのデジタルアシスタントユーザエクスペリエンスとして公開されるように前記アプリケーション固有のサービスをレンダリングするステップであって、前記アプリケーション固有のサービスは、前記デジタルアシスタントに利用可能な回答のデータベースのサイズを増大させる、ステップをさらに含む、請求項1に記載の方法。
前記コンテキストデータは、時間/日付、前記ユーザもしくはデバイスのロケーション、言語、スケジュール、前記デバイス上にインストールされるアプリケーション、ユーザプリファレンス、ユーザの振る舞い、ユーザアクティビティ、記憶される連絡先、呼履歴、メッセージング履歴、ブラウジング履歴、デバイスタイプ、デバイス能力、または通信ネットワークタイプの、1つまたは複数を備える、請求項3に記載の方法。
前記アプリケーションのそれぞれに対する拡張性サービスを提供するステップであって、前記拡張性サービスは、言語サービス、ボキャブラリサービス、ユーザプリファレンスサービス、またはコンテキストサービスの、1つまたは複数を含む、ステップをさらに含む、請求項1に記載の方法。
前記アプリケーション拡張機能は、ユーザエクスペリエンスまたはユーザインターフェースを、前記デジタルアシスタントを使用して実現するためのロジックをさらに含む、請求項1に記載の方法。
音声入力、ジェスチャ入力、または手動入力に応答的に、連絡先情報を共有すること、記憶される連絡先を共有すること、ミーティングをスケジューリングすること、ユーザのカレンダを調べること、リマインダをスケジューリングすること、発呼すること、デバイスを動作させること、ゲームをプレイすること、購買すること、覚え書きをとること、アラームもしくは目覚ましリマインダをスケジューリングすること、メッセージを送出すること、ソーシャルメディアの更新をチェックすること、ウェブサイトをスクラップにすること、検索サービスとインタラクションすること、ファイルを共有もしくは開示すること、ウェブサイトへのリンクを送出すること、または、リソースへのリンクを送出することの、少なくとも1つを実施するように、前記デジタルアシスタントを構成するステップをさらに含む、請求項1に記載の方法。
前記後続のアプリケーション固有のサービスは、前記デジタルアシスタントにおいて前記ユーザからの一連のインタラクションを通じて受信される、請求項1に記載の方法。
前記デバイスに、前記アプリケーション拡張機能が、実行のために前記マニフェストからランタイム環境内に、アプリケーション固有のリソースをロードすることを可能にさせるための命令をさらに含む、請求項11に記載のデバイス。
前記デジタルアシスタント拡張性サービスおよびデジタルアシスタント拡張性クライアントは、ネイティブのデジタルアシスタントエクスペリエンスとして、すべてのアプリケーションにわたって前記ローカルデバイス上でレンダリング可能なユーザエクスペリエンスをサポートするプラットフォームを提供する、請求項15に記載の1つまたは複数のコンピュータ可読メモリデバイス。
前記アプリケーション拡張機能は、前記ローカルランタイム環境内にロードされる前記リソースのマニフェストに書き込まれたアプリケーション固有のリソースを含む、請求項15に記載の1つまたは複数のコンピュータ可読メモリデバイス。
【発明を実施するための形態】
【0007】
[0022] 類する参照番号は、類する要素を図面で示す。要素は、別段示されない限り、一定の縮尺では描かれない。
【0008】
[0023]
図1は、ユーザ105が、デジタルアシスタント112をホストするデバイス110を用いる、デジタルアシスタント拡張性配置構成100の概観を示す。デジタルアシスタント112は、拡張性クライアント114をサポートし、その拡張性クライアント114は典型的には、ネットワーク115を介して、リモートデジタルアシスタントサービス130によりサポートされる拡張性サービス118と相互運用する。代替的に拡張性サービスは、場合によっては、ある程度または完全に、ローカルサービス135としてインスタンス化され得る。デジタルアシスタント拡張性クライアント114は、アプリケーション拡張機能140とのインタラクションを可能にするように構成され、そのことによって、アプリケーションのユーザエクスペリエンス、フィーチャ、およびコンテンツの様々な態様が、デジタルアシスタント112と統合され得る。典型的には拡張性は、大部分の場合、デジタルアシスタントを使用して、同様のおよび一貫性のあるサウンド、外観、および感覚によって、アプリケーションが、ユーザエクスペリエンス、フィーチャ、およびコンテンツをレンダリングすることができるように実現され、その結果、アプリケーションとデジタルアシスタントとの間の遷移は、円滑にハンドリングされ、エクスペリエンスは、ユーザに対してシームレスにレンダリングされる。
【0009】
[0024] 拡張機能140は、サードパーティアプリケーション150と、場合によっては、関連付けられ得、ここで、アプリケーション作成者、開発者、または提供者は、デジタルアシスタント112の提供者と同じではないエンティティである。ファーストパーティアプリケーションがさらには、一部の実装形態でサポートされ得る。場合によっては、デジタルアシスタント拡張性サービス118は、
図1での線152により示されるように、アプリケーション150との直接インタラクションをサポートし得る。
【0010】
[0025] デジタルアシスタント拡張性の例示的な実装形態の様々な詳細が、今から提示される。
図2は、様々なユーザ105が、ネットワーク115を介して通信するそれぞれのデバイス110を用いる、例示的な環境200を示す。各々のデバイス110は、デジタルアシスタント112のインスタンスを含む。デバイス110は、場合によっては、音声電話通信能力をサポートすることができ、典型的には、インターネットブラウジングおよびマルチメディア(例えば、音楽、ビデオなど)消費などのデータ消費アプリケーションを、様々な他のフィーチャに加えてサポートし得る。デバイス110は例えば、ユーザがしばしば使用し、音声および/またはマルチメディア(すなわち、ビデオ)呼を発し受信する、メッセージング(例えば、テキスティング)および電子メール通信に関わる、データを用いるアプリケーションおよびアクセスサービスを使用する、ワールドワイドウェブをブラウズする、などを行うユーザ機器、モバイルフォン、セルフォン、フィーチャフォン、タブレットコンピュータ、およびスマートフォンを含むことができる。
【0011】
[0026] 他のタイプの電子デバイスが、さらには、環境100の中で使用可能であると想定されており、それらの電子デバイスは、ハンドヘルドコンピューティングデバイス、PDA(携帯情報端末)、ポータブルメディアプレイヤ、ヘッドセットおよびイヤホンを使用するデバイス(例えば、Bluetooth(登録商標)互換デバイス)、ファブレットデバイス(すなわち、組み合わせスマートフォン/タブレットデバイス)、ウェアラブルコンピュータ、GPS(全地球測位システム)システムなどのナビゲーションデバイス、ラップトップPC(パーソナルコンピュータ)、デスクトップコンピュータ、マルチメディアコンソール、ゲーミングシステムなどを含む。後に続く論考では、用語「デバイス」の使用は、通信能力を伴って構成される、および、通信ネットワーク115への接続性の能力がある、すべてのデバイスを包含することが意図される。
【0012】
[0027] 環境100内の様々なデバイス110は、異なるフィーチャ、機能、および能力(ここでは、全体的に「フィーチャ」と呼称される)をサポートし得る。所与のデバイス上でサポートされるフィーチャの一部は、他のデバイス上でサポートされるものと同様であってよく、一方で、他のフィーチャは、所与のデバイスに特有であり得る。様々なデバイス110上でサポートされるフィーチャの中での、重複および/または特殊性の度合は、実装形態により変動し得る。例えば、一部のデバイス110は、タッチ制御、ジェスチャ認識、および音声コマンドをサポートすることができ、一方で、他のものは、より制限されたUIを可能にし得る。一部のデバイスは、ビデオ消費およびインターネットブラウジングをサポートすることができ、一方で、他のデバイスは、より制限された媒体ハンドリングおよびネットワークインターフェースフィーチャをサポートし得る。
【0013】
[0028] リストバンドおよび他のウェアラブルデバイスなどのアクセサリデバイス218が、さらには、環境200内に存在し得る。そのようなアクセサリデバイス218は、典型的には、着用者の生理機能(例えば、心拍数、とられた道程、燃焼されたカロリーなど)、および、環境条件(温度、湿度、紫外線(UV)レベルなど)の監視、ならびに、結合されるデバイス110からの通知を表面化させることなどの機能をサポートするために、Bluetoothのような狭域通信プロトコルを使用して、デバイス110と相互運用するように適合される。
【0014】
[0029] デバイス110は典型的には、様々なユーザエクスペリエンスにアクセスする、および/または、それらのユーザエクスペリエンスを実現するために、ネットワーク115を利用し得る。ネットワークは、様々な組み合わせまたは副組み合わせでの、種々のネットワークタイプおよびネットワークインフラストラクチャの任意のものを含むことができ、セルラーネットワーク、衛星ネットワーク、Wi−Fi(登録商標)およびEthernet(登録商標)ネットワークなどのIP(インターネットプロトコル)ネットワーク、公衆交換電話網(PSTN)、ならびに/または、Bluetooth(登録商標)ネットワークなどの狭域ネットワークを含む。ネットワークインフラストラクチャは例えば、モバイル事業者、企業、インターネットサービスプロバイダ(ISP)、電話サービスプロバイダ、データサービスプロバイダなどによりサポートされ得る。
【0015】
[0030] ネットワーク115は、インターネットの一部分を利用し得る、またはインターネットへの接続をサポートするインターフェースを含むことができ、そのことによって、デバイス110は、1つまたは複数のコンテンツプロバイダにより提供されるコンテンツにアクセスし、さらには、様々なアプリケーションサービス225によりサポートされるユーザエクスペリエンスをレンダリングし得る。アプリケーションサービス225はそれぞれ、ソーシャルネットワーキング、マッピング、ニュースおよび情報、娯楽、旅行、生産性、金融などのアプリケーションの多様性をサポートし得る。デジタルアシスタントサービス130(より詳細に下記で説明される)がさらには、コンピューティング環境200内に存在する。
【0016】
[0031]
図3で示されるように、デバイス110は典型的には、アプリケーションサービス225とのインタラクションを容易にし得るブラウザ305、または1つもしくは複数のアプリケーション150などのローカル構成要素を含み得る。例えば一部のシナリオでは、ユーザ105は、様々なフィーチャおよび機能を可能にするためのデータを索出する、情報を提供する、ならびに/または、ローカルデバイス110のユーザインターフェース上でレンダリングされ得る所与のユーザエクスペリエンスをサポートするために、ネットワークを介してサービスに対して通信する、ローカルで実行するアプリケーションを起動することができる。一部のシナリオでは、アプリケーションは、デバイス上で、リモートデバイスとローカルにインターフェース接続することを必要とすることなく動作し得る。
【0017】
[0032]
図4は、機能400の例示的な体系的分類を示し、それらの機能400は、典型的には、デジタルアシスタント112によりネイティブで、またはアプリケーション150との組み合わせでのいずれかでサポートされ得る。デジタルアシスタント112への入力は、典型的には、ユーザ入力405、内部ソースからのデータ410、および、サードパーティコンテンツ418を含み得る外部ソースからのデータ415を含み得る。例えば、内部ソースからのデータ410は、デバイス上のGPS(全地球測位システム)構成要素、または何らかの他のロケーションアウェア構成要素により報告される、デバイス110の現在のロケーションを含み得る。外部ソースデータ415は、例えば、外部システム、データベース、サービスなどにより提供されるデータを含む。
【0018】
[0033] 様々な入力は、デジタルアシスタント112がコンテキストデータ420を、そのデジタルアシスタント112が動作するときに利用することを可能にするために、単独で、または様々な組み合わせで使用され得る。コンテキストデータは例えば、時間/日付、ユーザのロケーション、言語、スケジュール、デバイス上にインストールされるアプリケーション、ユーザのプリファレンス、ユーザの振る舞い(ここで、そのような振る舞いは、ユーザへの通告、および、ユーザの同意を伴って、監視/追跡される)、記憶される連絡先(場合によっては、ローカルユーザの、または外部ソーシャルネットワーキングサービスにより維持されるものなどのリモートユーザのソーシャルグラフへのリンクを含む)、呼履歴、メッセージング履歴、ブラウジング履歴、デバイスタイプ、デバイス能力、通信ネットワークタイプおよび/またはその通信ネットワークタイプで提供されるフィーチャ/機能、モバイルデータプラン制約/制限、通信に対する他のパーティと関連付けられるデータ(例えば、それらのパーティのスケジュール、プリファレンスなど)などを含み得る。
【0019】
[0034] 示されるように、機能400は、ユーザとインタラクションすること425(例えば、自然言語UI、および、他のグラフィカルUIを通して)、タスクを実施すること430(例えば、ユーザのカレンダに予定を書き留めること、メッセージおよび電子メールを送出することなど)、サービスを提供すること435(例えば、ユーザからの質問に回答すること、行先への方向をマッピングすること、アラームをセットすること、通知を転送すること、電子メール、ニュース、ブログを読み上げることなど)、情報を集めること440(例えば、本または映画についてユーザにより要求される情報を見出すこと、最も近いイタリアンレストランをロケーション特定することなど)、デバイスを動作させること445(例えば、プリファレンスをセットすること、スクリーンの明るさを調整すること、Wi-FiおよびBluetoothなどのワイヤレス接続をオンおよびオフに変えること、他のデバイスと通信すること、スマート家電を制御することなど)、および、様々な他の機能を実施すること450を例示的に含む。機能400の列挙は、網羅的であることは意図されず、他の機能が、本デジタルアシスタント拡張性の特定の実装形態に対して必要とされ得るように、デジタルアシスタント112および/またはアプリケーション150により提供され得る。
【0020】
[0035] ユーザは典型的には、所与のデバイス110によりサポートされるフィーチャおよび機能に応じて、いくつかの方法でデジタルアシスタント112とインタラクションすることができる。例えば、
図5で示されるように、デジタルアシスタント112は、ユーザ105がデバイス110上でのユーザエクスペリエンスにサポートされた物理的インタラクション510を用いることを可能にする有形ユーザインターフェース505を公開することができる。そのような物理的インタラクションは、タッチスクリーン上でのタップすること、フリックすること、ドラッグすることなどのようなタッチベースの入力などを使用する、ボタン、メニュー、キーボードなどの物理的および/または仮想的制御機構の操作を含み得る。
【0021】
[0036] 一部の実装形態では、デジタルアシスタント112は、
図6で示される自然言語ユーザインターフェース605、または代替的には、音声コマンドベースのユーザインターフェース(示されない)を公開することができ、それらのユーザインターフェースによってユーザは、音声610を用いて様々な入力をデバイス110に提供する。
【0022】
[0037] 他の実装形態では、デジタルアシスタント112は、
図7で示されるジェスチャユーザインターフェース705を公開することができ、それを用いてユーザ105は、ジェスチャ710を用いて入力をデバイス110に提供する。場合によっては、ユーザインターフェースの組み合わせが利用され得、ここでユーザは、例えば、音声および物理的入力の両方を用いて、デジタルアシスタント112およびデバイス110とインタラクションし得ることに留意されたい。ユーザジェスチャは、光学検知、タッチ検知、近接検知などの様々な技法を使用して検知され得る。
【0023】
[0038]
図8は、所与のデバイス110上でインスタンス化され得る、例示的な層状アーキテクチャ800を示す。アーキテクチャ800は典型的には、ソフトウェアで実現されるが、ソフトウェア、ファームウェア、および/またはハードウェアの組み合わせが、さらには、場合によっては、利用され得る。アーキテクチャ800は、層の様態で配置構成され、アプリケーション層805、OS(オペレーティングシステム)層810、およびハードウェア層815を含む。ハードウェア層815は、デバイス110により使用される様々なハードウェア(例えば、入力および出力デバイス、ネットワーキングおよび無線ハードウェアなど)の、そのハードウェア層815の上方の層に対する抽象概念を提供する。この例示的な例では、ハードウェア層は、マイクロホン820およびオーディオエンドポイント825をサポートし、そのオーディオエンドポイント825は例えば、デバイスの内部スピーカ、有線またはワイヤレスヘッドセット/イヤピース、外部スピーカ/デバイスなどを含み得る。
【0024】
[0039] この例示的な例でのアプリケーション層805は、様々なアプリケーション150(例えば、ウェブブラウザ、マップアプリケーション、電子メールアプリケーション、ニュースアプリケーションなど)、および、デジタルアシスタント拡張性クライアント114をサポートする。アプリケーションは、ローカルで実行するコードを使用して実現されることが多い。しかしながら場合によっては、これらのアプリケーションは、リモートサーバ、またはサービスプロバイダまたは他のクラウドベースのリソースによりサポートされるものなどの、他のコンピューティングプラットフォームにより提供されるサービスおよび/またはリモートコード実行に依拠し得る。デジタルアシスタント拡張性クライアント114はここでは、アプリケーション層805でインスタンス化される構成要素として示されるが、所与のアプリケーションにより提供される機能は、丸ごと、または部分的に、OS層またはハードウェア層のいずれかでサポートされる構成要素を使用して実現され得るということが理解されよう。
【0025】
[0040] OS層810は、デジタルアシスタント112、および、様々な他のOS構成要素855をサポートする。典型的な実装形態では、デジタルアシスタント112は、線860により示されるように、デジタルアシスタントサービス130とインタラクションし得る。すなわちデジタルアシスタント112は、一部の実装形態では、サービス130でサポートされる、または他のリモートリソースを使用するリモートコード実行を、幾分か利用し得る、または完全に利用し得る。加えて、そのデジタルアシスタント112は、本明細書で説明される様々なフィーチャおよび機能を実現するために必要とされ得るように、他のOS構成要素855(および/または、アーキテクチャ800の他の層でインスタンス化される他の構成要素)を利用し得る、および/または、それらの構成要素とインタラクションし得る。一部の実装形態では、デジタルアシスタント拡張性クライアント114によりサポートされる機能の一部またはすべては、
図8での破線の矩形により示されるように、デジタルアシスタントに組み込まれ得る。上記で指摘されたように、デジタルアシスタント112はさらには、デバイス110上で、幾分かまたは完全に、ローカルにインスタンス化される拡張性サービスとインタラクションし得る。例えばサービスは、種々のユーザエクスペリエンスおよびフィーチャをサポートするために、ローカルリソースを適用し、ローカル論理を実現することができる。
【0026】
[0041]
図9は、リモートデジタルアシスタント拡張性サービス118およびローカルクライアント114によりアプリケーション拡張機能140に対して公開され得る、例示的なサービス900を示す。サービス900はさらには、デバイス110上で、丸ごとまたは部分的に、拡張性クライアント114および/またはローカルデジタルアシスタント拡張性サービス135(
図1)により、ローカルに実現および/またはレンダリングされ得る。代替的には、サービスの一部またはすべては、拡張性サービス118から、場合によっては、リモートアクセスを可能にするインターフェース(示されない)を使用して、直接アプリケーションに提供され得る。サービス130は、サービス900のプロビジョニングをサポートするために必要とされ得るように、検索サービス935などの種々のプロバイダからの他のサービスにアクセスし得る。
【0027】
[0042] 言語およびボキャブラリサービス905は、データおよび/またはサービスをデジタルアシスタントに提供するとき拡張機能による異なる言語の利用をサポートすることができる。例えば、一部のアプリケーションは、多言語セッティングで利用され得、一方で、他のアプリケーションは、複数の言語をサポートすることを魅力的なものにする、地域的または全地球的な分布を有し得る。ボキャブラリサービスは、特殊化された、および/または、業界固有のボキャブラリのアプリケーション利用をサポートし得る。例えば、技術的および科学的なボキャブラリは、コンピュータおよび技術ニュースを扱うアプリケーションに対してサポートされ得る。したがって、ニュース読み上げアプリケーションは、ボキャブラリサービスにアクセスすることができ、そのことによって、記事が声に出してユーザ105に対してデジタルアシスタントにより読み上げられるとき、特定の用語が正しく発音される。
【0028】
[0043] ユーザプリファレンスサービス910は、拡張機能が、データおよびサービスを提供するときデジタルアシスタントにより維持されるユーザプリファレンスを考慮に入れることを可能にし得る。コンテキストサービス915は、同様に、拡張機能が、デジタルアシスタントにより維持されるコンテキストデータを使用することを可能にし得る。他のサービス920が、さらには、拡張性サービス118により、特定の実装形態の要用を満たすために公開され得る。
【0029】
[0044]
図10で示されるように、デバイス110上でのアプリケーション拡張機能140のインストールの間、アプリケーションを検証および展開するために利用されるアプリケーションパッケージマニフェスト1015、または同様のインストールパッケージが、デジタルアシスタントリソースにアクセスするための要求1020を起動するように構成される。典型的には、要求が説明するものは、アプリケーションと、オペレーティングシステム1050、および/または、そのオペレーティングシステム1050上で実行するデジタルアシスタント構成要素との間のインタラクションを容易にするための、アプリケーションに対するインタラクションの拡張性ポイント、要される能力およびリソースの説明などである。
【0030】
[0045]
図11で示されるように、ランタイム環境1110でのデバイス110上での、ランタイムでのアプリケーション拡張機能動作の間、アプリケーション拡張機能140は、デジタルアシスタント拡張性クライアント114と、アプリケーションプログラミングインターフェース(API)1115を通してインターフェース接続し、マニフェスト1120をロードすることができ、そのマニフェスト1120は、グラフィックス、オーディオ、コマンド、および他の情報などの、アプリケーション固有のリソースを含み得る。例えばマニフェスト1120は、キーワード1122を含むことができ、それらのキーワード1122は、マニフェストからロードされ、デジタルアシスタント拡張性クライアントに登録され得る。登録されるキーワードは、ユーザによりランタイムに呼び出され得、入力イベントは、適切なアプリケーション拡張機能に導かれ得る。アプリケーション名は、キーワードの典型的な例であり、ユーザは、アプリケーションを名前によって起動するようにデジタルアシスタントに指図することができ、または情報、サービス、コンテンツなどを、名前が付いたアプリケーションから取得することができる。ランタイムの間、拡張性クライアント114は、ユーザ入力、アクション、および振る舞いと関連付けられるイベントを、アプリケーション拡張機能内のイベントハンドラ1125に送り出し得る。アプリケーション拡張機能は、デジタルアシスタントを通して特定のユーザエクスペリエンスまたはユーザインターフェースを容易にするために、スクリプトおよび他のプログラミングコンストラクトなどの論理1130を適用することができる。
【0031】
[0046]
図12は、デバイス110上にインストールされる、3つの例示的なアプリケーション、および、対応する拡張機能を示す。アプリケーションは、映画データベースアプリケーション1205および拡張機能1210、電子商取引アプリケーション1215および拡張機能1220、ならびに、クラウドソーシングのレビューアプリケーション1225および拡張機能1230を含む。アプリケーションおよび拡張機能は、例示的であることが意図されるということ、ならびに、種々のアプリケーションおよび拡張機能の任意のものが、所与のシナリオで利用され得るということを強調したい。
【0032】
[0047]
図13〜15は、
図12で示され、付随する本文で説明される、3つのアプリケーションを使用する、例示的なデジタルアシスタント拡張性ユーザエクスペリエンスを示す。
図13ではユーザ105は、デバイス110上で動作しているデジタルアシスタント112(この例示的な例では「Cortana」と名前が付いている)とのインタラクションを有する。示されるようにデジタルアシスタントは、電子商取引アプリケーションと、その拡張機能を通してインタラクションして、ユーザのウィッシュリスト上の項目についての情報を表面化させ得る。
図14ではデジタルアシスタントは、映画データベースアプリケーションと、その拡張機能を通してインタラクションして、ユーザに対する推薦される映画を見出し得る。デジタルアシスタントは、映画情報をユーザの連絡先の1つに転送するための最良の方法を見出すために、その能力を使用して、通信を追跡することができる。ユーザはさらには、サードパーティアプリケーションを、名前、この場合「Xbox Video」により呼び出すことができ、そのことによって、デジタルアシスタントは、ユーザの要求に応答して名前が付いたアプリケーションとインタラクションすることになる。ここではXbox Videoアプリケーション拡張機能は、その名前をキーワードとして登録しており、そのキーワードによってユーザは、デジタルアシスタントとインタラクションするとき、アプリケーションに、名前により言及することが可能になる。
【0033】
[0048]
図15ではデジタルアシスタントは、クラウドソーシングのレビューアプリケーションと、その拡張機能を通してインターフェース接続し、レストラン推薦をユーザに提供する。デジタルアシスタントは、推薦を表面化させること、メニューを転送すること、方向を提供すること、および類することなど種々のサービスを、レビューアプリケーションからの情報を使用して提供し得る。
【0034】
[0049]
図16は、デジタルアシスタントをデバイス(例えば、デバイス110)上で動作させるための例示的な方法1600のフローチャートを示す。具体的な説述がない限り、フローチャートで示され、付随する本文で説明される、方法またはステップは、特定の順序またはシーケンスに限定されない。加えて、方法、またはそれらの方法のステップの一部は、同時に生起し得る、または実施され得、所与の実装形態では、そのような実装形態の要件に応じて、すべての方法またはステップが実施されなければならないわけではなく、一部の方法またはステップは、任意選択により利用され得る。
【0035】
[0050] ステップ1605で、インターフェースは、アプリケーション固有のサービスを、デバイス上で動作するそれぞれのアプリケーションと関連付けられる拡張機能から受信することに対して構成される。ユーザインターフェースは、ステップ1610で、音声コマンドをデバイスユーザから受信するように構成される。ステップ1615で、受信される入力は、それぞれの拡張機能に、ハンドリングのためにマッピングされる。ステップ1620で、デジタルアシスタント拡張性サービス(
図9で示され、付随する本文で説明される、サービス900など)が、アプリケーション拡張機能に対して公開され得る。
【0036】
[0051] ステップ1625で、デジタルアシスタント拡張性クライアントは、デバイスユーザの入力に応答して、アプリケーション固有のサービスを拡張機能から受信する。ステップ1630で、アプリケーション固有のサービスは、アプリケーションをまたいだユーザエクスペリエンスがネイティブのデジタルアシスタントユーザエクスペリエンスとして公開されるようにレンダリングされる。
【0037】
[0052]
図17は、デバイス(例えば、デバイス110)上で実現され得る例示的な方法1700のフローチャートである。ステップ1705で、コンテキストアウェアデジタルアシスタントがデバイス上で公開され、ここで、コンテキストアウェアネスは、少なくとも部分的に、ユーザの振る舞い、および、デバイスとのインタラクションを監視すること(典型的には、ユーザへの通告、および、同意を伴う)により獲得され得る。ステップ1710で、ユーザからの入力が受信される。ステップ1715で、コンテキストアウェアネスが使用され、アプリケーション拡張機能に、ハンドリングのためにユーザ入力を引き渡す。アプリケーション拡張機能は、ステップ1720で、アプリケーション固有のリソースをロードする、スクリプトを実行させる、および、イベントをハンドリングすることができる。場合によっては、ステップ1725で、アプリケーションデータベースが、サービスの一部分として公開され得る。ステップ1730で、デジタルアシスタントは、拡張機能から受信されるサービスをレンダリングするように動作される。
【0038】
[0053]
図18は、サービスプロバイダにより利用され得る例示的な方法1800を示す。ステップ1805で、プロバイダでの1つまたは複数のサーバは、ローカルデバイス上で実行されるデジタルアシスタント拡張性クライアントと相互運用し得る。ステップ1810で、デジタルアシスタント拡張性サービスは維持され、それらのデジタルアシスタント拡張性サービスは、ステップ1815で、アプリケーション拡張機能に、ローカル拡張性クライアントを通して提供される。
【0039】
[0054]
図19は、PC、クライアントマシン、またはサーバなどの例示的なコンピュータシステム1900であって、それによって、本デジタルアシスタント拡張性が実現され得る、コンピュータシステム1900の単純化されたブロック線図である。コンピュータシステム1900は、プロセッサ1905と、システムメモリ1911と、システムバス1914とを含み、そのシステムバス1914は、システムメモリ1911を含む様々なシステム構成要素をプロセッサ1905に結合する。システムバス1914は、種々のバスアーキテクチャの任意のものを使用する、メモリバスもしくはメモリコントローラ、周辺バス、またはローカルバスを含む、いくつかのタイプのバス構造の任意のものであり得る。システムメモリ1911は、読み出し専用メモリ(ROM)1917と、ランダムアクセスメモリ(RAM)1921とを含む。情報を、コンピュータシステム1900の中の要素の間で、スタートアップの間などに伝達する助力となる、基本ルーチンを内包する、基本入出力システム(BIOS)1925が、ROM1917に記憶される。コンピュータシステム1900は、内部に配設されるハードディスク(示されない)から読み出す、および、そのハードディスクに書き込むためのハードディスクドライブ1928と、取り外し式磁気ディスク1933(例えば、フロッピーディスク)から読み出す、または、その磁気ディスクに書き込むための磁気ディスクドライブ1930と、CD(コンパクトディスク)、DVD(デジタルバーサタイルディスク)、もしくは他の光学媒体などの取り外し式光学ディスク1943から読み出す、または、その光学ディスクに書き込むための、光学ディスクドライブ1938とをさらに含み得る。ハードディスクドライブ1928、磁気ディスクドライブ1930、および光学ディスクドライブ1938は、システムバス1914に、ハードディスクドライブインターフェース1946、磁気ディスクドライブインターフェース1949、および光学ドライブインターフェース1952、それぞれにより接続される。ドライブ、および、それらの関連付けられるコンピュータ可読記憶媒体は、コンピュータシステム1900に対する、コンピュータ可読命令、データ構造、プログラムモジュール、および、他のデータの、不揮発性記憶を提供する。この例示的な例は、ハードディスク、取り外し式磁気ディスク1933、および取り外し式光学ディスク1943を含むが、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、データカートリッジ、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)などの、コンピュータによりアクセス可能であるデータを記憶し得る、他のタイプのコンピュータ可読記憶媒体が、さらには、本デジタルアシスタント拡張性の、一部の用途で使用され得る。加えて、本明細書で使用される際に、コンピュータ可読記憶媒体という用語は、媒体タイプの、1つまたは複数の実例(例えば、1つまたは複数の磁気ディスク、1つまたは複数のCDなど)を含む。この明細書、および、特許請求の範囲では、「コンピュータ可読記憶媒体」という語句、および、その変形物は、波、信号、ならびに/または、他の一時的および/もしくは無形通信媒体を含まない。
【0040】
[0055] いくつかのプログラムモジュールが、ハードディスク、磁気ディスク1933、光学ディスク1943、ROM1917、またはRAM1921上に記憶され得、それらのプログラムモジュールは、オペレーティングシステム1955、1つまたは複数のアプリケーションプログラム1957、他のプログラムモジュール1960、およびプログラムデータ1963を含む。ユーザは、キーボード1966などの入力デバイス、および、マウスなどのポインティングデバイス1968を通して、コマンドおよび情報をコンピュータシステム1900に入力することができる。他の入力デバイス(示されない)は、マイクロホン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ、トラックボール、タッチパッド、タッチスクリーン、タッチセンシティブデバイス、音声コマンドモジュールもしくはデバイス、ユーザ動作もしくはユーザジェスチャ捕捉デバイスなどを含み得る。これらおよび他の入力デバイスは、プロセッサ1905に、システムバス1914に結合されるシリアルポートインターフェース1971を通して接続されることが多いが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などの、他のインターフェースにより接続されることがある。モニタ1973、または、他のタイプのディスプレイデバイスが、さらには、システムバス1914に、ビデオアダプタ1975などのインターフェースを通じて接続される。モニタ1973に加えて、パーソナルコンピュータは典型的には、スピーカおよびプリンタなどの、他の周辺出力デバイス(示されない)を含む。
図19で示される例示的な例は、さらには、ホストアダプタ1978と、小型コンピュータシステムインターフェース(SCSI)バス1983と、SCSIバス1983に接続される外部記憶デバイス1976とを含む。
【0041】
[0056] コンピュータシステム1900は、ネットワーク化された環境で、リモートコンピュータ1988などの、1つまたは複数のリモートコンピュータへの論理接続を使用して動作可能である。リモートコンピュータ1988は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または、他の共通ネットワークノードとして選択され得、典型的には、コンピュータシステム1900に連関して上記で説明された要素の多くまたはすべてを含むが、単一の代表的なリモートメモリ/記憶デバイス1990のみが、
図19で示される。
図19で図示される論理接続は、ローカルエリアネットワーク(LAN)1993と、ワイドエリアネットワーク(WAN)1995とを含む。そのようなネットワーキング環境は、例えば、オフィス、企業内コンピュータネットワーク、イントラネット、およびインターネットで展開されることが多い。
【0042】
[0057] LANネットワーキング環境で使用されるとき、コンピュータシステム1900は、ローカルエリアネットワーク1993に、ネットワークインターフェースまたはアダプタ1996を通して接続される。WANネットワーキング環境で使用されるとき、コンピュータシステム1900は典型的には、ブロードバンドモデム1998、ネットワークゲートウェイ、または、通信をインターネットなどのワイドエリアネットワーク1995を介して確立するための他の手段を含む。内部または外部であり得るブロードバンドモデム1998は、システムバス1914に、シリアルポートインターフェース1971を通じて接続される。ネットワーク化された環境では、コンピュータシステム1900に関係付けられるプログラムモジュール、または、それらのプログラムモジュールの一部分は、リモートメモリ記憶デバイス1990に記憶され得る。
図19で示されるネットワーク接続は、例示的なものであり、コンピュータの間の通信リンクを確立する他の手段が、本デジタルアシスタント拡張性の用途の特定の要件に応じて使用され得ることに留意されたい。
【0043】
[0058]
図20は、本デジタルアシスタント拡張性を提供するための、本明細書で説明される様々な構成要素を実行する能力があるデバイスに対する、例示的なアーキテクチャ2000を示す。したがって、
図20で例示されるアーキテクチャ2000は、サーバコンピュータ、モバイルフォン、PDA、スマートフォン、デスクトップコンピュータ、ネットブックコンピュータ、タブレットコンピュータ、GPSデバイス、ゲーミングコンソール、および/またはラップトップコンピュータに対して適合させられ得るアーキテクチャを示す。アーキテクチャ2000は、本明細書で提示される構成要素の任意の態様を実行するために利用され得る。
【0044】
[0059]
図20で例示されるアーキテクチャ2000は、CPU(中央処理ユニット)2002と、RAM2006およびROM2008を含むシステムメモリ2004と、メモリ2004をCPU2002に結合するシステムバス2010とを含む。情報を、アーキテクチャ2000の中の要素の間で、スタートアップの間などに伝達する助力となる、基本ルーチンを内包する、基本入出力システムが、ROM2008に記憶される。アーキテクチャ2000は、アプリケーション、ファイルシステム、およびオペレーティングシステムを実現するために利用される、ソフトウェアコードまたは他のコンピュータ実行コードを記憶するための大容量記憶デバイス2012をさらに含む。
【0045】
[0060] 大容量記憶デバイス2012は、CPU2002に、バス2010に接続される大容量記憶コントローラ(示されない)を通して接続される。大容量記憶デバイス2012、および、その関連付けられるコンピュータ可読記憶媒体は、アーキテクチャ2000に対する不揮発性記憶を提供する。
【0046】
[0061] 本明細書に内包されるコンピュータ可読記憶媒体の説明は、ハードディスクまたはCD−ROMドライブなどの大容量記憶デバイスに言及するが、コンピュータ可読記憶媒体は、アーキテクチャ2000によりアクセスされ得る、任意の利用可能な記憶媒体であり得るということが、当業者により理解されるはずである。
【0047】
[0062] 限定ではなく例として、コンピュータ可読記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または、他のデータなどの情報の記憶のための、任意の方法または技術で実現される、揮発性および不揮発性の、取り外し式および非取り外し式の媒体を含み得る。例えばコンピュータ可読媒体は、所望される情報を記憶するために使用され得る、および、アーキテクチャ2000によりアクセスされ得る、RAM、ROM、EPROM(消去可能プログラマブル読み出し専用メモリ)、EEPROM(電気的消去可能プログラマブル読み出し専用メモリ)、フラッシュメモリ、もしくは他の固体メモリ技術、CD−ROM、DVD、HD−DVD(高精細DVD)、Blu−ray(登録商標)、もしくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶デバイス、または、任意の他の媒体を含むが、それらに制限されない。
【0048】
[0063] 様々な実施形態によれば、アーキテクチャ2000は、ネットワーク化された環境で、ネットワークを通してのリモートコンピュータへの論理接続を使用して動作し得る。アーキテクチャ2000は、ネットワークに、バス2010に接続されるネットワークインターフェースユニット2016を通して接続し得る。ネットワークインターフェースユニット2016はさらには、他のタイプのネットワークおよびリモートコンピュータシステムに接続するために利用され得るということが理解されるはずである。アーキテクチャ2000はさらには、キーボード、マウス、または電子スタイラス(
図20では示されない)を含む、いくつかの他のデバイスからの入力を受信および処理するための、入出力コントローラ2018を含み得る。同様に入出力コントローラ2018は、ディスプレイスクリーン、プリンタ、または、他のタイプの出力デバイス(やはり、
図20では示されない)への出力を提供し得る。
【0049】
[0064] 本明細書で説明されるソフトウェア構成要素は、CPU2002内にロードされ、実行されたときに、CPU2002、および、全般的なアーキテクチャ2000を、汎用コンピューティングシステムから、本明細書で提示される機能を容易にするようにカスタマイズされる特殊目的コンピューティングシステムに転換し得るということが理解されるはずである。CPU2002は、任意の数の状態を、個々に、または集団的に呈し得る、任意の数のトランジスタ、または他のディスクリート回路要素から構築され得る。より具体的には、CPU2002は、有限状態機械として、本明細書で開示されるソフトウェアモジュールの中に内包される実行可能命令に応答して動作し得る。これらのコンピュータ実行可能命令は、どのようにCPU2002が状態間で遷移するかを指定し、それにより、トランジスタ、またはCPU2002を構成する他のディスクリートハードウェア要素を転換することにより、CPU2002を転換することができる。
【0050】
[0065] 本明細書で提示されるソフトウェアモジュールを符号化することが、さらには、本明細書で提示されるコンピュータ可読記憶媒体の物理的構造を転換し得る。物理的構造の具体的な転換は、この説明の異なる実装形態では、様々な要因に依存し得る。そのような要因の例は、コンピュータ可読記憶媒体を実現するために使用される技術、コンピュータ可読記憶媒体が特性付けられるのは、1次記憶としてか、それとも2次記憶としてかなどを含み得るが、それらに制限されない。例えば、コンピュータ可読記憶媒体が半導体ベースのメモリとして実現されるならば、本明細書で開示されるソフトウェアは、コンピュータ可読記憶媒体上で符号化されることが、半導体メモリの物理的状態を転換することにより行われ得る。例えばソフトウェアは、半導体メモリを構成する、トランジスタ、コンデンサ、または他のディスクリート回路要素の状態を転換し得る。ソフトウェアはさらには、そのような構成要素の物理的状態を、データをそれらの構成要素上で記憶するために転換し得る。
【0051】
[0066] 別の例として、本明細書で開示されるコンピュータ可読記憶媒体は、磁気または光学技術を使用して実現され得る。そのような実装形態では、本明細書で提示されるソフトウェアは、ソフトウェアがそれらの媒体で符号化されるとき磁気または光学媒体の物理的状態を転換することができる。これらの転換は、所与の磁気媒体の中の特定の位置の磁気特性を変化させることを含み得る。これらの転換はさらには、所与の光学媒体の中の特定の位置の物理的特徴または特性を変化させて、それらの位置の光学特性を変更することを含み得る。物理的媒体の他の転換が、本説明の範囲および趣旨から逸脱することなく可能であり、上述の例は、この論考を容易にするためにのみ提供される。
【0052】
[0067] 上記に鑑みて、多くのタイプの物理的転換が、アーキテクチャ2000で、本明細書で提示されるソフトウェア構成要素を記憶および実行するために生じるということが理解されるはずである。アーキテクチャ2000は、ハンドヘルドコンピュータ、埋め込み型コンピュータシステム、スマートフォン、PDA、および、当業者に知られている他のタイプのコンピューティングデバイスを含む、他のタイプのコンピューティングデバイスを含み得るということが、さらには理解されるはずである。アーキテクチャ2000は、
図20で示される構成要素のすべてを含むわけではないことがある、
図20で明示的に示されない他の構成要素を含み得る、または、
図20で示されるものとは全く異なるアーキテクチャを利用し得るということが、さらには企図される。
【0053】
[0068]
図21は、2102で全体的に示される、種々の任意選択のハードウェアおよびソフトウェア構成要素を含む、モバイルフォンまたはスマートフォンなどの、例示的なデバイス110の機能ブロック線図である。モバイルデバイス内の任意の構成要素2102は、任意の他の構成要素と通信し得るが、例示の容易さのために、すべての接続が示されるわけではない。モバイルデバイスは、種々のコンピューティングデバイス(例えば、セルフォン、スマートフォン、ハンドヘルドコンピュータ、PDAなど)の任意のものであってよく、セルラーまたは衛星ネットワークなどの、1つまたは複数のモバイル通信ネットワーク2104とのワイヤレス2ウェイ通信を可能とし得る。
【0054】
[0069] 例示されるデバイス110は、信号コーディング、データ処理、入出力処理、パワー制御、および/または、他の機能のようなタスクを実施するための、コントローラまたはプロセッサ2110(例えば、信号プロセッサ、マイクロプロセッサ、マイクロコントローラ、ASIC(特定用途向け集積回路)、または、他の制御および処理論理回路網)を含み得る。オペレーティングシステム2112は、パワー状態、ロック済み状態、および未ロック状態を含む、構成要素2102の割り振りおよび使用法を制御することができ、1つまたは複数のアプリケーションプログラム2114に対するサポートを提供する。アプリケーションプログラムは、共通モバイルコンピューティングアプリケーション(例えば、画像捕捉アプリケーション、電子メールアプリケーション、カレンダ、連絡先マネージャ、ウェブブラウザ、メッセージングアプリケーション)、または、任意の他のコンピューティングアプリケーションを含み得る。
【0055】
[0070] 例示されるデバイス110は、メモリ2120を含み得る。メモリ2120は、非取り外し式メモリ2122および/または取り外し式メモリ2124を含み得る。非取り外し式メモリ2122は、RAM、ROM、フラッシュメモリ、ハードディスク、または、他のよく知られているメモリ記憶技術を含み得る。取り外し式メモリ2124は、フラッシュメモリ、または、GSM(登録商標)(モバイル通信用グローバルシステム)システムでよく知られている加入者識別モジュール(SIM)カード、または、「スマートカード」などの他のよく知られているメモリ記憶技術を含み得る。メモリ2120は、オペレーティングシステム2112およびアプリケーションプログラム2114を実行させるための、データおよび/またはコードを記憶するために使用され得る。例示的なデータは、1つまたは複数の有線またはワイヤレスネットワークを通じて1つもしくは複数のネットワークサーバもしくは他のデバイスに送出される、および/または、それらのネットワークサーバもしくは他のデバイスから受信されるウェブページ、テキスト、画像、サウンドファイル、ビデオデータ、または、他のデータセットを含み得る。
【0056】
[0071] メモリ2120はさらには、コンピュータ可読命令、データ構造、プログラムモジュール、もしくは、他のデータなどの情報の記憶のための、任意の方法もしくは技術で実現される、1つもしくは複数のコンピュータ可読記憶媒体として配置構成され得る、または、それらのコンピュータ可読記憶媒体を含み得る。例えばコンピュータ可読媒体は、所望される情報を記憶するために使用され得る、および、デバイス110によりアクセスされ得る、RAM、ROM、EPROM、EEPROM、フラッシュメモリ、もしくは他の固体メモリ技術、CD−ROM(コンパクトディスクROM)、DVD(デジタルバーサタイルディスク)、HD−DVD(高精細DVD)、Blu−ray、もしくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶デバイス、または、任意の他の媒体を含むが、それらに制限されない。
【0057】
[0072] メモリ2120は、国際モバイル加入者識別(IMSI)などの加入者識別子、および、国際モバイル機器識別子(IMEI)などの機器識別子を記憶するために使用され得る。そのような識別子は、ネットワークサーバに、ユーザおよび機器を識別するために送信され得る。デバイス110は、タッチスクリーン2132;音声認識、音声コマンドなどに対する音声入力の実現のためのマイクロホン2134;カメラ2136;物理的キーボード2138;トラックボール2140;ならびに/または近接センサ2142などの、1つまたは複数の入力デバイス2130と、スピーカ2152、および、1つまたは複数のディスプレイ2154などの、1つまたは複数の出力デバイス2150とをサポートし得る。ジェスチャ認識を使用する他の入力デバイス(示されない)が、さらには、場合によっては、利用され得る。他の可能な出力デバイス(示されない)は、圧電または触覚出力デバイスを含み得る。一部のデバイスは、2つ以上の入出力機能をサーブし得る。例えば、タッチスクリーン2132およびディスプレイ2154は、単一の入出力デバイスに組み合わされ得る。
【0058】
[0073] ワイヤレスモデム2160が、アンテナ(示されない)に結合され得、当技術分野でよく理解されるように、プロセッサ2110と外部デバイスとの間の2ウェイ通信をサポートし得る。モデム2160は、総称的に示され、モバイル通信ネットワーク2104と通信するためのセルラーモデム、および/または、他の無線ベースのモデム(例えば、Bluetooth2164またはWi-Fi2162)を含み得る。ワイヤレスモデム2160は典型的には、単一のセルラーネットワークの中の、セルラーネットワークの間の、または、デバイスと公衆交換電話網(PSTN)との間の、データおよび音声通信のための、GSMネットワークなどの1つまたは複数のセルラーネットワークとの通信に対して構成される。
【0059】
[0074] デバイスは、少なくとも1つの入出力ポート2180、パワーサプライ2182、GPS受信器などの衛星ナビゲーションシステム受信器2184、加速度計2186、ジャイロスコープ(示されない)、および/または物理的コネクタ2190をさらに含むことができ、その物理的コネクタ2190は、USBポート、IEEE 1394(FireWire)ポート、および/またはRS−232ポートであり得る。例示される構成要素2102は、必要とされるものでもすべてを含むものでもなく、任意の構成要素を削除することができ、他の構成要素を追加することができる。
【0060】
[0075]
図22は、マルチメディアコンソール110
4の例示的な機能ブロック線図である。マルチメディアコンソール110
4は、レベル1キャッシュ2202と、レベル2キャッシュ2204と、フラッシュROM(読み出し専用メモリ)2206とを有する、中央処理ユニット(CPU)2201を有する。レベル1キャッシュ2202およびレベル2キャッシュ2204は、一時の間データを記憶し、ゆえに、メモリアクセスサイクルの数を低減し、それにより、処理速度およびスループットを改善する。CPU2201は、2つ以上のコア、ならびにしたがって、追加的なレベル1キャッシュ2202およびレベル2キャッシュ2204を伴って構成され得る。フラッシュROM2206は、マルチメディアコンソール110
4がパワーオンされるときのブートプロセスの初期段階の間にロードされる実行可能コードを記憶し得る。
【0061】
[0076] グラフィックス処理ユニット(GPU)2208、および、ビデオエンコーダ/ビデオコーデック(コーダ/デコーダ)2214は、高速度および高解像度グラフィックス処理のためのビデオ処理パイプラインを形成する。データは、GPU2208からビデオエンコーダ/ビデオコーデック2214に、バスを通じて搬送される。ビデオ処理パイプラインは、RAMなどの、ただしそれに制限されない、様々なタイプのメモリ2212へのプロセッサアクセスを容易にするために、データをA/V(オーディオ/ビデオ)ポート2240に、テレビジョンまたは他のディスプレイへの送信のために出力する。メモリコントローラ2210は、GPU2208に接続される。
【0062】
[0077] マルチメディアコンソール110
4は、好ましくは、モジュール2218上に実装されるI/Oコントローラ2220と、システム管理コントローラ2222と、オーディオ処理ユニット2223と、ネットワークインターフェースコントローラ2224と、第1のUSB(ユニバーサルシリアルバス)ホストコントローラ2226と、第2のUSBコントローラ2228と、フロントパネルI/Oサブアセンブリ2230とを含む。USBコントローラ2226および2228は、周辺コントローラ2242(1)および2242(2)、ワイヤレスアダプタ2248、ならびに外部メモリデバイス2246(例えば、フラッシュメモリ、外部CD/DVD ROMドライブ、取り外し式媒体など)に対して、ホストとしてサーブする。ネットワークインターフェースコントローラ2224および/またはワイヤレスアダプタ2248は、ネットワーク(例えば、インターネット、ホームネットワークなど)へのアクセスを提供し、Ethernetカード、モデム、Bluetoothモジュール、ケーブルモデムなどを含む、多種多様の様々な有線またはワイヤレスアダプタ構成要素の任意のものであり得る。
【0063】
[0078] システムメモリ2243が、ブートプロセスの間にロードされるアプリケーションデータを記憶するために用意される。媒体ドライブ2244が、用意され、DVD/CDドライブ、ハードドライブ、または、他の取り外し式媒体ドライブなどを備え得る。媒体ドライブ2244は、マルチメディアコンソール110
4の内部または外部のものであり得る。アプリケーションデータは、媒体ドライブ2244を通じて、実行、プレイバックなどのために、マルチメディアコンソール110
4によりアクセスされ得る。媒体ドライブ2244は、シリアルATAバスなどのバス、または、他の高速度接続(例えば、IEEE 1394)を通じて、I/Oコントローラ2220に接続される。
【0064】
[0079] システム管理コントローラ2222は、マルチメディアコンソール110
4の利用可能性を確実にすることに関係付けられる種々のサービス機能を提供する。オーディオ処理ユニット2223およびオーディオコーデック2232は、高忠実度およびステレオ処理を伴う、対応するオーディオ処理パイプラインを形成する。オーディオデータは、オーディオ処理ユニット2223とオーディオコーデック2232との間で、通信リンクを通じて搬送される。オーディオ処理パイプラインは、オーディオ能力を有する外部オーディオプレイヤまたはデバイスによる再生のために、データをA/Vポート2240に出力する。
【0065】
[0080] フロントパネルI/Oサブアセンブリ2230は、マルチメディアコンソール110
4の外側表面上で露わにされる、パワーボタン2250およびイジェクトボタン2252、ならびに、任意のLED(発光ダイオード)または他のインジケータの機能をサポートする。システムパワーサプライモジュール2239は、パワーをマルチメディアコンソール110
4の構成要素に提供する。ファン2238は、マルチメディアコンソール110
4の中の回路網を冷却する。
【0066】
[0081] CPU2201、GPU2208、メモリコントローラ2210、および、マルチメディアコンソール110
4の中の様々な他の構成要素は、1つまたは複数のバスを通じて相互接続され、それらのバスは、種々のバスアーキテクチャの任意のものを使用する、シリアルおよびパラレルバス、メモリバス、周辺バス、ならびに、プロセッサまたはローカルバスを含む。例として、そのようなアーキテクチャは、周辺構成要素相互接続(PCI)バス、PCI−Expressバスなどを含み得る。
【0067】
[0082] マルチメディアコンソール110
4がパワーオンされるとき、アプリケーションデータは、システムメモリ2243から、メモリ2212ならびに/またはキャッシュ2202および2204内にロードされ、CPU2201上で実行され得る。アプリケーションは、グラフィカルユーザインターフェースを提示することができ、そのグラフィカルユーザインターフェースは、マルチメディアコンソール110
4上で利用可能な異なる媒体タイプにナビゲートするとき、一貫性のあるユーザエクスペリエンスを提供する。動作中、媒体ドライブ2244の中に内包される、アプリケーションおよび/または他の媒体は、追加的な機能をマルチメディアコンソール110
4に提供するために、媒体ドライブ2244から起動またはプレイされる。
【0068】
[0083] マルチメディアコンソール110
4は、単純に、システムをテレビジョンまたは他のディスプレイに接続することにより、スタンドアロンシステムとして動作され得る。このスタンドアロンモードでは、マルチメディアコンソール110
4によって、1人または複数のユーザは、システムとインタラクションする、映画を見る、または、音楽を聞くことが可能となる。しかしながら、ネットワークインターフェースコントローラ2224またはワイヤレスアダプタ2248を通して利用可能にされるブロードバンド接続性の統合によって、マルチメディアコンソール110
4は、より大きなネットワークコミュニティへの参加者として、さらに動作させられ得る。
【0069】
[0084] マルチメディアコンソール110
4がパワーオンされるとき、ハードウェアリソースのセットされた量が、マルチメディアコンソールオペレーティングシステムによるシステム使用のために予約される。これらのリソースは、メモリ(例えば、16MB)、CPUおよびGPUサイクル(例えば、5%)、ネットワーキング帯域幅(例えば、8kbps)などの予約物を含み得る。これらのリソースはシステムブート時間に予約されるので、予約されるリソースは、アプリケーションの見え方からは実在しない。
【0070】
[0085] 特にメモリ予約は、好ましくは、起動カーネル、並行システムアプリケーション、およびドライバを内包するのに十分大きい。CPU予約は、好ましくは不変であり、そのことによって、予約されるCPU使用量がシステムアプリケーションにより使用されないならば、アイドルスレッドが、使用されないサイクルがあればそれらを消費することになる。
【0071】
[0086] GPU予約に関しては、GPU割り込みを使用して、コードをスケジューリングして、ポップアップをオーバレイにレンダリングすることにより、システムアプリケーションにより生成される軽量のメッセージ(例えば、ポップアップ)が表示される。オーバレイに対して必要とされるメモリの量は、オーバレイエリアサイズに依存し、オーバレイは好ましくは、スクリーン解像度によってスケーリングする。最大限のユーザインターフェースが並行システムアプリケーションにより使用される場合、アプリケーション解像度に非依存的な解像度を使用することが好ましい。スケーラが、この解像度をセットするために使用され得、そのことによって、周波数を変更し、TV再同期を引き起こすことの要用がなくされる。
【0072】
[0087] マルチメディアコンソール110
4がブートし、システムリソースが予約される後、並行システムアプリケーションが、システム機能を提供することを実行する。システム機能は、上記で説明された予約されたシステムリソースの中で実行する、システムアプリケーションのセットにカプセル化される。オペレーティングシステムカーネルは、ゲーミングアプリケーションスレッドに対するものであるシステムアプリケーションスレッドであるスレッドを識別する。システムアプリケーションは好ましくは、アプリケーションに対する、一貫性のあるシステムリソースの見え方を提供するために、CPU2201上で、あらかじめ決定された時間および間隔で動作するようにスケジューリングされる。スケジューリングは、コンソール上で実行されるゲーミングアプリケーションに対するキャッシュ中断を最小化するためのものである。
【0073】
[0088] 並行システムアプリケーションがオーディオを要するとき、オーディオ処理は、時間に敏感であることに起因して、ゲーミングアプリケーションに非同期的にスケジューリングされる。マルチメディアコンソールアプリケーションマネージャ(下記で説明される)は、システムアプリケーションがアクティブであるとき、ゲーミングアプリケーションオーディオレベルを制御する(例えば、ミュートする、減衰させる)。
【0074】
[0089] 入力デバイス(例えば、コントローラ2242(1)および2242(2))は、ゲーミングアプリケーションおよびシステムアプリケーションにより共有される。入力デバイスは、各々がデバイスのフォーカスを有することになるように、予約されるリソースではなく、システムアプリケーションとゲーミングアプリケーションとの間で切り替えられることになる。アプリケーションマネージャは好ましくは、ゲーミングアプリケーションのナレッジを知っていることなしに、入力ストリームの切り替えることを制御し、ドライバは、フォーカス切り替えに関する状態情報を維持する。
【0075】
[0090] サードパーティアプリケーションに対する本デジタルアシスタント拡張性の様々な例示的な実施形態が、今から、例示ということで、および、すべての実施形態の網羅的な列挙としてではなく提示される。例は、1つまたは複数のアプリケーションに対する、デバイス上で動作するデジタルアシスタントの拡張性を実現するための方法であって、インターフェースを、アプリケーションのそれぞれのものと関連付けられる拡張機能により公開されるアプリケーション固有のサービスと相互運用するように構成するステップと、入力をデバイスユーザから受信するステップと、デバイスユーザの入力を拡張機能に、ハンドリングのためにマッピングするステップと、デバイスユーザの入力に応答して、アプリケーション固有のサービスを拡張機能から受信するステップとを備える、方法を含む。
【0076】
[0091] 別の例では、方法は、アプリケーションをまたいだユーザエクスペリエンスが、デバイスユーザに対して、ネイティブのデジタルアシスタントユーザエクスペリエンスとして公開されるように、アプリケーション固有のサービスをレンダリングするステップであって、アプリケーション固有のサービスは、デジタルアシスタントに利用可能な回答のデータベースのサイズを増大させる、レンダリングするステップをさらに含む。別の例では、方法は、コンテキストデータを、マッピングするステップを実施するときに使用するステップをさらに含む。別の例では、コンテキストデータは、時間/日付、ユーザもしくはデバイスのロケーション、言語、スケジュール、デバイス上にインストールされるアプリケーション、ユーザプリファレンス、ユーザの振る舞い、ユーザアクティビティ、記憶される連絡先、呼履歴、メッセージング履歴、ブラウジング履歴、デバイスタイプ、デバイス能力、または通信ネットワークタイプの、1つまたは複数を備える。別の例では、方法は、アプリケーションに対する拡張性サービスを提供するステップであって、拡張性サービスは、言語サービス、ボキャブラリサービス、ユーザプリファレンスサービス、またはコンテキストサービスの、1つまたは複数を含む、提供するステップをさらに含む。別の例では、方法は、拡張性サービスの一部分をリモートサービスプロバイダから受信するステップをさらに含む。別の例では、方法は、リモートサービスプロバイダとのインタラクションに対して構成される拡張性クライアントとのインターフェースをサポートするステップをさらに含む。別の例では、方法は、アプリケーション固有のリソースを、アプリケーション拡張機能に含まれるマニフェストからロードするステップであって、アプリケーション固有のリソースは、少なくともデジタルアシスタントに登録されるキーワードを含む、ロードするステップをさらに含む。別の例では、アプリケーション拡張機能は、ユーザエクスペリエンスまたはユーザインターフェースを、デジタルアシスタントを使用して実現するための論理をさらに含む。別の例では、方法は、音声入力、ジェスチャ入力、または手動入力に応答的に、連絡先情報を共有すること、記憶される連絡先を共有すること、ミーティングをスケジューリングすること、ユーザのカレンダを調べること、リマインダをスケジューリングすること、発呼すること、デバイスを動作させること、ゲームをプレイすること、購買すること、覚え書きをとること、アラームもしくは目覚ましリマインダをスケジューリングすること、メッセージを送出すること、ソーシャルメディアの更新をチェックすること、ウェブサイトをスクラップにすること、検索サービスとインタラクションすること、ファイルを共有もしくは開示すること、ウェブサイトへのリンクを送出すること、または、リソースへのリンクを送出することの、少なくとも1つを実施するように、デジタルアシスタントを構成するステップをさらに含む。
【0077】
[0092] さらなる例は、デバイスであって、1つまたは複数のプロセッサと、グラフィックスおよびオーディオを使用してデバイスのユーザとインタラクションするためのユーザインターフェース(UI)と、1つまたは複数のアプリケーションと関連付けられるコード、およびコンピュータ可読命令を記憶するメモリデバイスであって、それらのコンピュータ可読命令は、1つまたは複数のプロセッサにより実行されたとき、デバイスユーザに対するコンテキストアウェアネスを維持するために、ユーザの振る舞い、および、デバイスとのインタラクションを監視することにより、デジタルアシスタントをデバイス上で公開するステップであって、デジタルアシスタントは、デバイスユーザと、UIを通して音声インタラクションを使用してさらにインタラクションする、公開するステップと、入力をデバイスユーザから、UIを通して受信するステップと、入力をアプリケーションに対する拡張機能に、ハンドリングのために引き渡すためにコンテキストアウェアネスを使用するステップであって、アプリケーション拡張機能は、サービスをアプリケーションから、デジタルアシスタントによりレンダリング可能なユーザエクスペリエンスへと引き渡すように構成される、使用するステップと、デジタルアシスタントを、サービスをデバイスユーザに対してUIを通してレンダリングするように動作させるステップとを備える方法を実施する、メモリデバイスとを備える、デバイスを含む。
【0078】
[0093] 別の例では、デバイスは、1つまたは複数の拡張性サービスをアプリケーション拡張機能に対して公開することをさらに含む。別の例では、デバイスは、アプリケーション拡張機能が、アプリケーション固有のリソースをマニフェストからランタイム環境内に、実行のためにロードすることを可能にすることをさらに含む。別の例では、アプリケーション拡張機能は、イベントハンドラを含む。別の例では、アプリケーション拡張機能は、スクリプトまたはプログラミングコンストラクトの1つを備える論理を含む。別の例では、デバイスは、アプリケーションと関連付けられる1つまたは複数のデータベースを、アプリケーション拡張機能を使用するデジタルアシスタントに対して公開することをさらに含む。
【0079】
[0094] さらなる例は、命令を記憶する1つまたは複数のコンピュータ可読メモリデバイスであって、それらの命令は、コンピュータサーバに配設される1つまたは複数のプロセッサにより実行されたとき、ローカルデバイス上のデジタルアシスタント拡張性クライアントと相互運用するステップであって、デジタルアシスタント拡張性クライアントは、アプリケーションプログラミングインターフェース(API)を、デバイス上で実行可能である1つまたは複数のアプリケーション拡張機能に対して公開し、アプリケーション拡張機能の各々は、サービスをそれぞれのアプリケーションから、デジタルアシスタントによりレンダリング可能なユーザエクスペリエンスへと引き渡すように構成される、相互運用するステップと、デジタルアシスタント拡張性サービスを維持するステップであって、それらのサービスは、i)アプリケーションが、ユーザエクスペリエンスをローカルデバイス上でレンダリングするとき、1つもしくは複数の異なる言語を使用することを可能にする言語サービス、ii)アプリケーションが、ユーザエクスペリエンスをレンダリングするとき、不明の単語もしくは語句をハンドリングすることを可能にするボキャブラリサービス、iii)アプリケーションが、デジタルアシスタントにより維持されるユーザプリファレンスを用いることを可能にするユーザプリファレンスサービス、または、iv)アプリケーションが、サービスを引き渡すとき、コンテキストアウェアネスを利用することを可能にするコンテキストサービスの、少なくとも1つを含む、維持するステップと、デジタルアシスタント拡張性サービスを、1つまたは複数のアプリケーション拡張機能に、ローカルデバイス上のデジタルアシスタント拡張性クライアントにより公開されるAPIを通して提供するステップとを備える方法を実施する、1つまたは複数のコンピュータ可読メモリデバイスを含む。
【0080】
[0095] 別の例では、デジタルアシスタント拡張性サービス、および、デジタルアシスタント拡張性クライアントは、ユーザエクスペリエンスをサポートするプラットフォームを提供し、それらのユーザエクスペリエンスは、ローカルデバイス上で、すべてのアプリケーションをまたいで、ネイティブのデジタルアシスタントエクスペリエンスとしてレンダリング可能なものである。別の例では、アプリケーション拡張機能は、ランタイム環境内にロードされるマニフェストに書き込まれるアプリケーション固有のリソースを内包する。別の例では、アプリケーション拡張機能は、サードパーティ開発者により作成される。
【0081】
[0096] 上述に基づいて、デジタルアシスタント拡張機能に対する技術が、本明細書で開示されたということが理解されるはずである。本明細書で提示される主題は、コンピュータ構造的特徴、方法論的および変革的行為、特定のコンピューティング機械類、ならびにコンピュータ可読記憶媒体に固有の文言で説明されたが、添付される特許請求の範囲で定義される本発明は、必ずしも、本明細書で説明された、特定の特徴、行為、または媒体に制限されないということが理解されるべきである。むしろ、特定の特徴、行為、および媒体は、特許請求の範囲を実現することの例形式として開示される。
【0082】
[0097] 上記で説明された主題は、単に例示ということで提供され、制限的と解釈されるべきではない。例示および説明された、例示的な実施形態および用途にしたがうことなく、ならびに、以下の特許請求の範囲で論述される、本発明の真の趣旨および範囲から逸脱することなく、様々な修正および変更を本明細書で説明された主題に加えることができる。