(57)【要約】  コンピューティングデバイスにおけるユーザ対話動作の自動実行のための方法、システムおよび製品。方法は、動作シーケンスの識別子を取得するステップと、識別子を使用して動作シーケンスのリポジトリを検索することによって動作シーケンスを取得するステップであって、動作シーケンスのリポジトリは、上記ユーザ以外の別のユーザのための、上記コンピューティングデバイス以外の別のコンピューティングデバイスによる１つまたは複数の動作の前回の実行に基づいて定義される動作シーケンスを含む、取得するステップと、動作シーケンスまたは動作シーケンスの一部をコンピューティングデバイス上で自動的に実行するステップとを含む。別の方法は、ＧＵＩのレイアウト内の要素を識別するステップと、割り当てられた一意のラベルを要素の各々に視覚的に近接して表示するステップと、割り当てられたラベルを参照することによって選択要素を音声で示すユーザによる発話を認識するステップと、選択要素に対してユーザ対話動作を自動的に実行するステップとを含む。
2018537795.tif 000002
【特許請求の範囲】
【請求項１】
ユーザによって動作させられるコンピューティングデバイスによって実行されるコンピュータ実施方法であって、前記コンピュータ実施方法は、
１つまたは複数の動作を含む動作シーケンスの識別子を取得するステップであって、各動作は、コンピューティングデバイスを動作させるためのユーザインターフェースの要素とのユーザ対話を表す、取得するステップと、
前記識別子を使用して動作シーケンスのリポジトリを検索して、前記動作シーケンスを取得することを含む、前記動作シーケンスを取得するステップであり、前記動作シーケンスのリポジトリは、前記ユーザ以外の別のユーザのための、前記コンピューティングデバイス以外の別のコンピューティングデバイスによる１つまたは複数の動作の前回の実行に基づいて定義される動作シーケンスを含む、取得するステップと、
前記動作シーケンスまたは前記動作シーケンスの一部を前記コンピューティングデバイス上で自動的に実行するステップと
を含む、コンピュータ実施方法。
【請求項２】
前記識別子を取得するステップは、前記ユーザの音声コマンドを取得するステップと、前記音声コマンドから前記識別子を抽出するステップとを含み、前記リポジトリは、他のユーザから得られる音声コマンドから識別子が抽出された動作シーケンスを含む、請求項１に記載のコンピュータ実施方法。
【請求項３】
前記自動的に実行するステップは、
現在の動作を実行するために必要な前記要素が、前記コンピューティングデバイスの現在の状態においてユーザ対話のために利用不可能であるという決定に応答して、
中間動作シーケンスを取得するステップであって、前記中間動作シーケンスは、１つまたは複数の動作を含み、各動作は、前記コンピューティングデバイスを動作させるための前記ユーザインターフェースの要素とのユーザ対話を表し、前記中間動作シーケンスは、前記コンピューティングデバイスに、前記現在の状態から前記コンピューティングデバイスの目標状態へと切り替えさせるように構成されており、前記目標状態では、前記要素はユーザ対話に利用可能である、取得するステップと、
前記コンピューティングデバイスに、前記現在の状態から前記目標状態に切り替えさせるために、前記中間動作シーケンスまたは前記中間動作シーケンスの一部を実行するステップであって、結果、前記現在の動作の自動実行を可能にする、実行するステップと
を含む、請求項１に記載のコンピュータ実施方法。
【請求項４】
前記中間動作シーケンスを取得する前記ステップは、複数の代替的な中間動作シーケンスの間で選択するステップを含み、前記中間動作シーケンスの各々は、前記コンピューティングデバイスに、前記現在の状態から前記コンピューティングデバイスの目標状態に切り替えさせるように構成されており、前記選択は、各代替的な中間動作シーケンスのスコアに基づいており、前記スコアの各々は、対応する代替的な中間動作シーケンスの実行に成功する可能性を示す、請求項３に記載のコンピュータ実施方法。
【請求項５】
前記動作シーケンスの実行が自動的に完了できないという決定に応答して、前記動作シーケンスの実行を完了するように前記コンピューティングデバイスのユーザに促すステップと、
中間動作シーケンスを決定するために前記ユーザの動作を監視するステップと、
将来の使用のために前記中間動作シーケンスを記憶するステップと
をさらに含む、請求項１に記載のコンピュータ実施方法。
【請求項６】
前記動作シーケンスは、アプリケーションプログラムとのユーザ対話を表す動作を含み、
前記動作シーケンスを自動的に実行する前記ステップは、前記アプリケーションプログラムが前記コンピューティングデバイスにインストールされているか否かを判定するステップを含む、請求項１に記載のコンピュータ実施方法。
【請求項７】
前記アプリケーションプログラムが前記コンピューティング装置にインストールされていないという決定に応答して、前記アプリケーションプログラムをダウンロードするシーケンスの実行をアクティブにするように前記ユーザに促す、請求項６に記載のコンピュータ実施方法。
【請求項８】
前記動作シーケンスのリポジトリは、複数のユーザのコンピューティングデバイスによってアクセス可能な共有リポジトリである、請求項１に記載のコンピュータ実施方法。
【請求項９】
前記識別子はパラメータを含み、前記動作シーケンスは前記パラメータに対して指定される値に基づいて修正される、請求項１に記載のコンピュータ実施方法。
【請求項１０】
前記コンピューティングデバイスの状態を目標状態に変更するためのユーザコマンドを取得するステップと、
前記コンピューティングデバイスの現在の状態を決定するステップと、
前記リポジトリ内の１つまたは複数の保持されている動作シーケンスに基づいて、前記動作シーケンスを決定するステップとをさらに含み、前記動作シーケンスは、前記コンピューティングデバイスの前記状態を前記現在の状態から前記目標状態に変更するように構成されている、請求項１に記載のコンピュータ実施方法。
【請求項１１】
前記動作シーケンスを決定するステップは、第１の保持されている動作シーケンスの一部を識別するステップであって、前記第１の保持されている動作シーケンスの前記一部内の最初に順序付けされている動作が現在の状態に適用可能であり、前記第１の保持されている動作シーケンスの前記一部内の最後に順序付けられている動作が、前記コンピューティングデバイスの前記状態を中間状態に変更するように構成されている、識別するステップと、
第２の保持されている動作シーケンスの一部を識別するステップであって、前記第２の保持されている動作シーケンスの前記一部内の最初に順序付けられている動作は前記中間状態に適用可能である、識別するステップと、
前記第２の動作シーケンスが後続する前記第１の保持されている動作シーケンスの前記部分を含むように前記動作シーケンスを決定するステップと
を含む、請求項１０に記載のコンピュータ実施方法。
【請求項１２】
前記動作シーケンスを決定するステップは、
ノードおよびエッジを含むグラフを取得するステップであって、前記グラフ内のノードは、前記コンピューティングデバイス内の状態に対応し、前記グラフ内のエッジは、ソースノードに対応する状態で適用可能であり、前記コンピューティングデバイスの前記状態を宛先ノードに対応する状態に変化させるように構成された、保持されている動作シーケンスに対応する、取得するステップと、
前記現在の状態に対応するノードから前記目標状態に対応するノードへのパスを決定するために前記グラフを分析するステップと、
前記パス内のエッジに対応する前記保持されている動作シーケンスに基づいて前記動作シーケンスを生成するステップと
を含む、請求項１０に記載のコンピュータ実施方法。
【請求項１３】
前記リポジトリは、記録されている動作シーケンスを含み、前記記録されている動作シーケンスは、前記記録されている動作シーケンスがユーザによって実行されている間に記録され、前記記録されている動作シーケンスの識別子は該ユーザによって提供される、請求項１に記載のコンピュータ実施方法。
【請求項１４】
前記リポジトリは、前記動作シーケンスに対して、複数の異なる識別子を保持し、前記複数の異なる識別子の少なくとも一部の各識別子は、異なるユーザによる前記動作シーケンスの実行に基づいて定義される、請求項１に記載のコンピュータ実施方法。
【請求項１５】
前記リポジトリは、前記ユーザの前記コンピューティングデバイスにアクセス可能なユーザ定義の動作シーケンスを含み、前記ユーザ定義の動作シーケンスは、複数の異なるユーザによって独立して実行される動作シーケンスである、請求項１に記載のコンピュータ実施方法。
【請求項１６】
前記動作シーケンスまたは前記動作シーケンスの一部を前記コンピューティングデバイス上で自動的に実行する前記ステップが、
前記ユーザ対話を隠すための表示を表示するステップであって、結果、前記ユーザ対話が実行される前記ユーザインターフェースの１つまたは複数の要素の少なくとも一部が、前記動作シーケンスまたは前記動作シーケンスの一部の前記自動実行中に前記ユーザに見えない、表示するステップを含む、請求項１に記載のコンピュータ実施方法。
【請求項１７】
コンピュータ実施方法であって、
コンピューティングデバイスによって表示されるグラフィカルユーザインターフェース（ＧＵＩ）のレイアウト内の１つまたは複数のインタラクティブ要素を決定するステップと、
前記１つまたは複数のインタラクティブ要素の各々にラベルを割り当てるステップであって、前記ラベルは前記レイアウト内で一意である、割り当てるステップと、
前記割り当てられたラベルを、前記１つまたは複数のインタラクティブ要素の各々に視覚的に近接して表示するステップと、
選択要素に割り当てられた前記ラベルを参照することによって、前記１つまたは複数のインタラクティブ要素のうちの前記選択要素を口頭で示すユーザによる発話を認識するステップと、
前記選択要素に対してユーザ対話動作を自動的に実行するステップと
を含む、コンピュータ実施方法。
【請求項１８】
１つまたは複数のユーザ対話動作を含む動作シーケンスに含めるべき前記選択要素に対する前記ユーザ対話動作を記録するステップをさらに含む、請求項１７に記載のコンピュータ実施方法。
【請求項１９】
前記動作シーケンスを識別子と関連付けるステップをさらに含み、前記動作シーケンスは、前記識別子を使用して取り出し可能である、請求項１８に記載のコンピュータ実施方法。
【請求項２０】
前記識別子は、第２の動作シーケンスの記録中に前記動作シーケンスを取り出すために使用され、結果、前記第２の動作シーケンスが前記動作シーケンスを組み込む、請求項１９に記載のコンピュータ実施方法。
【請求項２１】
前記動作シーケンスの記録中に前記ＧＵＩによって表示され、前記識別子の一部によって参照される集合から選択されているアイテムを自動的に識別するステップと、
前記識別子の前記一部をパラメータとして指定するステップであって、結果、前記集合からの異なるアイテムへの参照によって前記一部を置換しながら前記識別子を使用して前記動作シーケンスを取り出すことによって、前記動作シーケンスを実行するときに前記集合から前記異なるアイテムが選択される、指定するステップと
をさらに含む、請求項１９に記載のコンピュータ実施方法。
【請求項２２】
コンピューティングデバイスの複数のユーザの間で前記動作シーケンスを共有するステップをさらに含む、請求項１８に記載のコンピュータ実施方法。
【請求項２３】
前記動作シーケンスに関する使用統計を収集するステップをさらに含み、前記共有するステップは、前記使用統計によって基準が満たされることに応じて選択的に実行される、請求項２２に記載のコンピュータ実施方法。
【請求項２４】
前記コンピューティングデバイスのユーザによる前記動作シーケンスの反復実行を自動的に識別するステップと、
前記ユーザに、前記動作シーケンスの関連付けおよび取り出しを可能にする識別子を入力するよう促すステップと
をさらに含む、請求項１８に記載のコンピュータ実施方法。
【請求項２５】
前記コンピューティングデバイスは、近接センサを備え、
前記コンピューティングデバイスは音響を再生し、
前記方法は、
前記近接センサに向かうユーザの手の第１の伸長を識別することに応答して、前記音響が一時停止され、音声認識を実行するように前記音声認識が起動され、
近接センサに向かうユーザの手の第２の伸長の識別に応答して、音響が再開され、音声認識が停止されることをさらに含む、請求項１７に記載のコンピュータ実施方法。
【請求項２６】
前記１つまたは複数のインタラクティブ要素のうちの要素が、前記要素に対する動作が、前記ユーザによって使用されるために利用可能な事前記録動作シーケンスの最初の動作である要素であるという決定に応答して、前記ＧＵＩに、前記要素に関連する視覚的指示を表示するステップをさらに含む、請求項１７に記載のコンピュータ実施方法。
【請求項２７】
前記コンピューティングデバイスによって表示される前記ＧＵＩの前記レイアウト内の前記１つまたは複数のインタラクティブ要素がフリーテキスト入力要素を含むと判定するステップと、
前記ユーザから発話の音響を取得するステップと、
前記発話がいずれの前記識別子にも一致しないことを決定するために、前記発話を所定の音声コマンドの識別子と比較するステップと、
前記発話がいずれの前記識別子とも一致しないとの判定に応答して、前記発話をテキストに変換し、前記フリーテキスト入力要素に前記テキストを入力するステップと
をさらに含む、請求項１７に記載のコンピュータ実施方法。
【請求項２８】
前記テキストを合成発話に変換するステップと、
前記ユーザが前記合成発話を聞くことができるように、前記合成発話を再生するステップと
をさらに含む、請求項２７に記載のコンピュータ実施方法。
【請求項２９】
前記コンピューティングデバイスの前記ユーザによって実行される動作シーケンスが、動作シーケンスのリポジトリ内の動作シーケンスと同一であることを自動的に識別するステップであって、前記動作シーケンスは、前記選択要素に対する前記ユーザ対話動作を含む、１つまたは複数のユーザ対話動作を含む、識別するステップと、
前記動作シーケンスの識別子を取得するステップであって、前記識別子は、前記動作シーケンスのリポジトリから前記動作シーケンスを取り出すために有用である、取得するステップと、
前記ユーザに、将来において前記識別子を使用して前記動作シーケンスを実行するように促すステップと
をさらに含む、請求項１７に記載のコンピュータ実施方法。
【請求項３０】
プロセッサを有するコンピュータ装置であって、前記プロセッサは、
１つまたは複数の動作を含む動作シーケンスの識別子を取得するステップであって、各動作は、コンピューティングデバイスを動作させるためのユーザインターフェースの要素とのユーザ対話を表す、取得するステップと、
前記識別子を使用して動作シーケンスのリポジトリを検索して、前記動作シーケンスを取得することを含む、前記動作シーケンスを取得するステップであり、前記動作シーケンスのリポジトリは、前記ユーザ以外の別のユーザのための、前記コンピューティングデバイス以外の別のコンピューティングデバイスによる１つまたは複数の動作の前回の実行に基づいて定義される動作シーケンスを含む、取得するステップと、
前記動作シーケンスまたは前記動作シーケンスの一部を前記コンピューティングデバイス上で自動的に実行するステップと
を実行するように適合されている、コンピュータ装置。
【請求項３１】
前記識別子を取得するステップは、前記ユーザの音声コマンドを取得するステップと、前記音声コマンドから前記識別子を抽出するステップとを含み、前記リポジトリは、他のユーザから得られる音声コマンドから識別子が抽出された動作シーケンスを含む、請求項３０に記載のコンピュータ装置。
【請求項３２】
前記自動的に実行するステップは、
現在の動作を実行するために必要な前記要素が、前記コンピューティングデバイスの現在の状態においてユーザ対話のために利用不可能であるという決定に応答して、
中間動作シーケンスを取得するステップであって、前記中間動作シーケンスは、１つまたは複数の動作を含み、各動作は、前記コンピューティングデバイスを動作させるための前記ユーザインターフェースの要素とのユーザ対話を表し、前記中間動作シーケンスは、前記コンピューティングデバイスに、前記現在の状態から前記コンピューティングデバイスの目標状態へと切り替えさせるように構成されており、前記目標状態では、前記要素はユーザ対話に利用可能である、取得するステップと、
前記コンピューティングデバイスに、前記現在の状態から前記目標状態に切り替えさせるために、前記中間動作シーケンスまたは前記中間動作シーケンスの一部を実行するステップであって、結果、前記現在の動作の自動実行を可能にする、実行するステップと
を含む、請求項３０に記載のコンピュータ装置。
【請求項３３】
前記中間動作シーケンスを取得する前記ステップは、複数の代替的な中間動作シーケンスの間で選択するステップを含み、前記中間動作シーケンスの各々は、前記コンピューティングデバイスに、前記現在の状態から前記コンピューティングデバイスの目標状態に切り替えさせるように構成されており、前記選択は、各代替的な中間動作シーケンスのスコアに基づいており、前記スコアの各々は、対応する代替的な中間動作シーケンスの実行に成功する可能性を示す、請求項３２に記載のコンピュータ装置。
【請求項３４】
前記プロセッサは、
前記動作シーケンスの実行が自動的に完了できないという決定に応答して、前記動作シーケンスの実行を完了するように前記コンピューティングデバイスのユーザに促すステップと、
中間動作シーケンスを決定するために前記ユーザの動作を監視するステップと、
将来の使用のために前記中間動作シーケンスを記憶するステップと
を実施するようにさらに適合されている、請求項３０に記載のコンピュータ装置。
【請求項３５】
前記プロセッサは、
前記コンピューティングデバイスの状態を目標状態に変更するためのユーザコマンドを取得するステップと、
前記コンピューティングデバイスの現在の状態を決定するステップと、
前記リポジトリ内の１つまたは複数の保持されている動作シーケンスに基づいて、前記動作シーケンスを決定するステップとを実施するようにさらに適合されており、前記動作シーケンスは、前記コンピューティングデバイスの前記状態を前記現在の状態から前記目標状態に変更するように構成されている、請求項３０に記載のコンピュータ装置。
【請求項３６】
前記リポジトリは、前記動作シーケンスに対して、複数の異なる識別子を保持し、各識別子は、異なるユーザによる前記動作シーケンスの実行に基づいて定義される、請求項３０に記載のコンピュータ装置。
【請求項３７】
前記動作シーケンスまたは前記動作シーケンスの一部を前記コンピューティングデバイス上で自動的に実行する前記ステップが、
前記ユーザ対話を隠すための表示を表示するステップであって、結果、前記ユーザ対話が実行される前記ユーザインターフェースの１つまたは複数の要素の少なくとも一部が、前記動作シーケンスまたは前記動作シーケンスの一部の前記自動実行中に前記ユーザに見えない、表示するステップを含む、請求項３０に記載のコンピュータ装置。
【請求項３８】
プログラム命令を保持するコンピュータ可読記憶媒体を備えるコンピュータプログラム製品であって、前記プログラム命令は、プロセッサによって読み出されると、前記プロセッサに、
１つまたは複数の動作を含む動作シーケンスの識別子を取得するステップであって、各動作は、コンピューティングデバイスを動作させるためのユーザインターフェースの要素とのユーザ対話を表す、取得するステップと、
前記識別子を使用して動作シーケンスのリポジトリを検索して、前記動作シーケンスを取得することを含む、前記動作シーケンスを取得するステップであり、前記動作シーケンスのリポジトリは、前記ユーザ以外の別のユーザのための、前記コンピューティングデバイス以外の別のコンピューティングデバイスによる１つまたは複数の動作の前回の実行に基づいて定義される動作シーケンスを含む、取得するステップと、
前記動作シーケンスまたは前記動作シーケンスの一部を前記コンピューティングデバイス上で自動的に実行するステップと
を含む方法を実行させる、コンピュータプログラム製品。
【請求項３９】
プロセッサを有するコンピュータ装置であって、前記プロセッサは、
コンピューティングデバイスによって表示されるグラフィカルユーザインターフェース（ＧＵＩ）のレイアウト内の１つまたは複数のインタラクティブ要素を決定するステップと、
前記１つまたは複数のインタラクティブ要素の各々にラベルを割り当てるステップであって、前記ラベルは前記レイアウト内で一意である、割り当てるステップと、
前記割り当てられたラベルを、前記１つまたは複数のインタラクティブ要素の各々に視覚的に近接して表示するステップと、
選択要素に割り当てられた前記ラベルを参照することによって、前記１つまたは複数のインタラクティブ要素のうちの前記選択要素を口頭で示すユーザによる発話を認識するステップと、
前記選択要素に対してユーザ対話動作を自動的に実行するステップと
を実行するように適合されている、コンピュータ装置。
【請求項４０】
前記プロセッサは、１つまたは複数のユーザ対話動作を含む動作シーケンスに含めるべき前記選択要素に対する前記ユーザ対話動作を記録するステップを実施するようにさらに適合されている、請求項３９に記載のコンピュータ装置。
【請求項４１】
前記プロセッサは、複数のコンピューティングデバイスのユーザ間で前記動作シーケンスを共有するステップを実行するようにさらに適合されている、請求項４０に記載のコンピュータ装置。
【請求項４２】
前記プロセッサは、前記動作シーケンスに関する使用統計を収集するステップを実施するようにさらに適合されており、前記共有するステップは、前記使用統計によって基準が満たされることに応じて選択的に実行される、請求項４１に記載のコンピュータ装置。
【請求項４３】
前記プロセッサは、
前記コンピューティングデバイスのユーザによる前記動作シーケンスの反復実行を自動的に識別するステップと、
前記ユーザに、前記動作シーケンスの関連付けおよび取り出しを可能にする識別子を入力するよう促すステップと
を実施するようにさらに適合されている、請求項４０に記載のコンピュータ装置。
【請求項４４】
前記プロセッサは、
前記１つまたは複数のインタラクティブ要素のうちの要素が、前記要素に対する動作が、前記ユーザによって使用されるために利用可能な事前記録動作シーケンスの最初の動作である要素であるという決定に応答して、前記ＧＵＩに、前記要素に関連する視覚的指示を表示するステップを実施するようにさらに適合されている、請求項３９に記載のコンピュータ装置。
【請求項４５】
プログラム命令を保持するコンピュータ可読記憶媒体を備えるコンピュータプログラム製品であって、前記プログラム命令は、プロセッサによって読み出されると、前記プロセッサに、
コンピューティングデバイスによって表示されるグラフィカルユーザインターフェース（ＧＵＩ）のレイアウト内の１つまたは複数のインタラクティブ要素を決定するステップと、
前記１つまたは複数のインタラクティブ要素の各々にラベルを割り当てるステップであって、前記ラベルは前記レイアウト内で一意である、割り当てるステップと、
前記割り当てられたラベルを、前記１つまたは複数のインタラクティブ要素の各々に視覚的に近接して表示するステップと、
選択要素に割り当てられたラベルを参照することによって、前記１つまたは複数のインタラクティブ要素のうちの前記選択要素を口頭で示すユーザによる発話を認識するステップと、
前記選択要素に対してユーザ対話動作を自動的に実行するステップと
を含む方法を実行させる、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１５年９月２２日に出願された「コンピューティング装置におけるユーザ対話動作の自動実行（ＡＵＴＯＭＡＴＩＣ  ＰＥＲＦＯＲＭＡＮＣＥ  ＯＦ  ＵＳＥＲ  ＩＮＴＥＲＡＣＴＩＯＮ  ＯＰＥＲＡＴＩＯＮＳ  ＯＮ  Ａ  ＣＯＭＰＵＴＩＮＧ  ＤＥＶＩＣＥ）」と題する米国特許出願第１３／８６０，７３３号の利益を主張するものであり、これは、否認を生じることなくすべての目的のためにその全体が参照により本明細書に援用される。
【０００２】
本開示は、一般にコンピューティングデバイスのユーザ動作、特にコンピューティングデバイスにおけるユーザ対話動作の自動実行に関する。
【背景技術】
【０００３】
ここ数十年の間、個人用のコンピューティングデバイスがますます普及してきている。近年、個人情報端末（ＰＤＡ）、ハンドヘルドコンピュータ、および「スマートフォン」として一般的に知られている本格的なオペレーティングシステムを実行するコンピュータ化された携帯電話などのモバイルプラットフォームの登場により、このますますの普及の傾向はさらに高まっている。これらのデバイスは、通常、デスクトップコンピュータとほぼ同等の計算能力をユーザに提供する汎用プロセッサ、メモリ、およびストレージを備えている。さらなる一般的な特徴には、様々な通信ネットワークおよび他のデバイス、例えば無線ローカルエリアネットワーク（ＷＬＡＮ）、セルラネットワーク、近距離無線通信（ＮＦＣ）などへの接続、およびカメラ、マイクロフォン、加速度計、全地球測位システム（ＧＰＳ）受信機などの１つ以上のタイプのセンサが含まれる。
【０００４】
多くのモバイルコンピューティングデバイスは、ユーザ対話の主要形態として機能するグラフィカルユーザインターフェース（ＧＵＩ）を備えたタッチセンサ式ディスプレイ（「タッチスクリーン」としても知られている）を含む。ユーザは、主としてタッチセンサ式ディスプレイ上の指の接触およびジェスチャを介してＧＵＩと対話する。したがって、ユーザの手の一方または両方が占有されているとき、またはユーザが断続的な期間にわたってであれ、または完全にであれ、表示画面を見ることができないとき、モバイルデバイスおよびその異なる機能を動作させることは困難であるか、またはさらには不可能であると判明し得る。この状況は、例えば、ユーザが車両を運転しているときに一般的に発生する。ＧｏｏｇｌｅのＣＥＯで共同創立者のＬａｒｒｙ  Ｐａｇｅ氏は、２０１４年のインタビューで、この問題に言及している。「我々はまだ、コンピュータはかなり不便なものと感じています。ぶらぶら歩いているときに、タッチスクリーン電話をスクロールするのは良くないでしょう。車に乗れば弾みますから、実際には機能しません」このシナリオでは、何らかの形の音声制御が望ましいことは明らかである。近年、Ｓｉｒｉ（商標）、Ｃｏｒｔａｎａ（商標）、Ｇｏｏｇｌｅ  Ｎｏｗ（商標）などの「仮想アシスタント」の導入により、音声認識が大幅に改善されたため、この現実に向けて大きな進歩があった。
【０００５】
人間は習慣の生き物であり、多くのコンピューティングデバイスがそれらの間で共通の特徴および機能を共有するため、コンピューティングデバイスの使用は大きな規則性および反復パターンを示すことができ、それによって、ユーザまたは複数のユーザによって同じ動作または動作のシーケンスが頻繁に実行される。
【発明の概要】
【課題を解決するための手段】
【０００６】
開示される主題の１つの例示的な実施形態は、ユーザによって動作させられるコンピューティングデバイスによって実行されるコンピュータ実施方法であり、上記コンピュータ実施方法は、１つまたは複数の動作を含む動作シーケンスの識別子を取得するステップであって、各動作は、コンピューティングデバイスを動作させるためのユーザインターフェースの要素とのユーザ対話を表す、取得するステップと、
識別子を使用して動作シーケンスのリポジトリを検索して、動作シーケンスを取得することを含む、動作シーケンスを取得するステップであり、動作シーケンスのリポジトリは、上記ユーザ以外の別のユーザのための、上記コンピューティングデバイス以外の別のコンピューティングデバイスによる１つまたは複数の動作の前回の実行に基づいて定義される動作シーケンスを含む、取得するステップと、動作シーケンスまたはその一部をコンピューティングデバイス上で自動的に実行するステップとを含む。
【０００７】
開示される主題の別の例示的な実施形態は、プロセッサを有するコンピュータ装置であり、プロセッサは、１つまたは複数の動作を含む動作シーケンスの識別子を取得するステップであって、各動作は、コンピューティングデバイスを動作させるためのユーザインターフェースの要素とのユーザ対話を表す、取得するステップと、
識別子を使用して動作シーケンスのリポジトリを検索して、動作シーケンスを取得することを含む、動作シーケンスを取得するステップであり、動作シーケンスのリポジトリは、上記ユーザ以外の別のユーザのための、上記コンピューティングデバイス以外の別のコンピューティングデバイスによる１つまたは複数の動作の前回の実行に基づいて定義される動作シーケンスを含む、取得するステップと、動作シーケンスまたはその一部をコンピューティングデバイス上で自動的に実行するステップとを実行するように適合されている。
【０００８】
開示される主題のまた別の例示的な実施形態は、プログラム命令を保持するコンピュータ可読記憶媒体を備えるコンピュータプログラム製品であり、プログラム命令は、プロセッサによって読み出されると、プロセッサに、１つまたは複数の動作を含む動作シーケンスの識別子を取得するステップであって、各動作は、コンピューティングデバイスを動作させるためのユーザインターフェースの要素とのユーザ対話を表す、取得するステップと、
識別子を使用して動作シーケンスのリポジトリを検索して、動作シーケンスを取得することを含む、動作シーケンスを取得するステップであり、動作シーケンスのリポジトリは、上記ユーザ以外の別のユーザのための、上記コンピューティングデバイス以外の別のコンピューティングデバイスによる１つまたは複数の動作の前回の実行に基づいて定義される動作シーケンスを含む、取得するステップと、動作シーケンスまたはその一部をコンピューティングデバイス上で自動的に実行するステップとを含む方法を実行させる。
【０００９】
開示される主題のまた別の例示的な実施形態は、コンピュータ実施方法であり、方法は、コンピューティングデバイスによって表示されるグラフィカルユーザインターフェース（ＧＵＩ）のレイアウト内の１つまたは複数のインタラクティブ要素を決定するステップと、１つまたは複数のインタラクティブ要素の各々にラベルを割り当てるステップであって、ラベルはレイアウト内で一意である、割り当てるステップと、割り当てられたラベルを、１つまたは複数のインタラクティブ要素の各々に視覚的に近接して表示するステップと、選択要素に割り当てられたラベルを参照することによって、１つまたは複数のインタラクティブ要素のうちの選択要素を口頭で示すユーザによる発話を認識するステップと、選択要素に対してユーザ対話動作を自動的に実行するステップとを含む。
【００１０】
開示される主題のまた別の例示的な実施形態は、プロセッサを有するコンピュータ装置であり、プロセッサは、コンピューティングデバイスによって表示されるグラフィカルユーザインターフェース（ＧＵＩ）のレイアウト内の１つまたは複数のインタラクティブ要素を決定するステップと、１つまたは複数のインタラクティブ要素の各々にラベルを割り当てるステップであって、ラベルはレイアウト内で一意である、割り当てるステップと、割り当てられたラベルを、１つまたは複数のインタラクティブ要素の各々に視覚的に近接して表示するステップと、選択要素に割り当てられたラベルを参照することによって、１つまたは複数のインタラクティブ要素のうちの選択要素を口頭で示すユーザによる発話を認識するステップと、選択要素に対してユーザ対話動作を自動的に実行するステップとを実行するように適合されている。
【００１１】
開示される主題のまた別の例示的な実施形態は、プログラム命令を保持するコンピュータ可読記憶媒体を備えるコンピュータプログラム製品であり、プログラム命令は、プロセッサによって読み出されると、プロセッサに、コンピューティングデバイスによって表示されるグラフィカルユーザインターフェース（ＧＵＩ）のレイアウト内の１つまたは複数のインタラクティブ要素を決定するステップと、１つまたは複数のインタラクティブ要素の各々にラベルを割り当てるステップであって、ラベルはレイアウト内で一意である、割り当てるステップと、割り当てられたラベルを、１つまたは複数のインタラクティブ要素の各々に視覚的に近接して表示するステップと、選択要素に割り当てられたラベルを参照することによって、１つまたは複数のインタラクティブ要素のうちの選択要素を口頭で示すユーザによる発話を認識するステップと、選択要素に対してユーザ対話動作を自動的に実行するステップとを含む方法を実行させる。
【００１２】
本開示の主題は、図面と併せて以下の詳細な説明からより完全に理解され、諒解されるであろう。図面において、対応するまたは同様の数字または文字は、対応するまたは同様の構成要素を示す。別途示されない限り、図面は、本開示の例示的な実施形態または態様を提供し、本開示の範囲を限定するものではない。
【図面の簡単な説明】
【００１３】
【図１】本主題のいくつかの例示的な実施形態による、方法のフローチャート図である。
【図２Ａ】本開示の主題のいくつかの例示的な実施形態による、方法のフローチャート図である。
【図２Ｂ】本開示の主題のいくつかの例示的な実施形態による、方法のフローチャート図である。
【図２Ｃ】本開示の主題のいくつかの例示的な実施形態による、方法のフローチャート図である。
【図３】本開示の主題のいくつかの例示的な実施形態による、方法のフローチャート図である。
【図４】本開示の主題のいくつかの例示的な実施形態による、方法のフローチャート図である。
【図５】本開示の主題のいくつかの例示的な実施形態による、方法のフローチャート図である。
【図６】本開示の主題のいくつかの例示的な実施形態による、方法のフローチャート図である。
【図７】本開示の主題のいくつかの例示的な実施形態による、方法のフローチャート図である。
【図８Ａ】本開示の主題のいくつかの例示的な実施形態による、本開示の主題が使用されるコンピュータ化環境の例示的なスクリーンショットを示す図である。
【図８Ｂ】本開示の主題のいくつかの例示的な実施形態による、本開示の主題が使用されるコンピュータ化環境の例示的なスクリーンショットを示す図である。
【図９】本開示の主題のいくつかの例示的な実施形態による、システムのブロック図である。
【発明を実施するための形態】
【００１４】
本開示の主題によって対処される１つの技術的問題は、コンピューティングデバイスのユーザによって実行されるユーザ対話動作のシーケンスを記録することと、同じユーザの同じコンピューティングデバイスによって記録されたか、または、別のユーザの別のコンピューティングデバイスによって記録されたかにかかわらず、以前に記録されたシーケンスをオンデマンドで自動的に再生（例えば「実行」）することとを提供することである。
【００１５】
本開示の主題によって対処される別の技術的方法は、そのまま実行することが不可能な場合であっても、シーケンスの同じ最終結果を達成するように、動作シーケンスの実行を提供することである。いくつかの例示的な実施形態では、例えば、装置の異なる初期状態に起因して、または、シーケンスが記録されたときに示されていたものとは異なるソフトウェア構成要素の特定の動作モードに照らして、シーケンスをそのまま実行することは不可能であり得る。
【００１６】
本開示の主題によって対処されるまた別の技術的問題は、コンピューティングデバイスを任意の起点状態から所望の目標状態に、要求によって自動的に切り替えることを可能にすることである。
【００１７】
本開示の主題によって対処されるまた別の技術的問題は、音声起動機能によってコンピューティングデバイスのグラフィカルユーザインターフェース（ＧＵＩ）を拡張することである。
【００１８】
本開示の主題によって対処されるまた別の技術的問題は、コンピュータデバイスの完全に自然な音声制御インターフェースを提供することである。本開示の主題は、人間とコンピュータとの間のより自然な対話を可能にすることができ、したがって、人間がコンピュータを用いてより容易に物事を完了するのを助ける。
【００１９】
バーチャルアシスタントは、インターネットデータベースに基づいて質問への回答を得るのに有用であるが、コンピューティングデバイスでは非常に限定されたセットのタスクしか実行できず、これはデバイスの完全に自然な音声制御を保証するにはほど遠い。従来技術では、所望の音声起動コマンドごとにアプリケーションプログラミングインターフェース（ＡＰＩ）を手動で開発する必要があり、これは退屈で、高価で、スケーラブルではないタスクである。さらに、アプリケーションのエンドユーザは、いずれの音声コマンドがサポートされていて、いずれの音声コマンドがサポートされていないかを認識しておらず、ほとんどの機能は音声のみでは取得できないため、ユーザは運転中でもほとんどの動作を手動で実行する。２０１４年の調査は、９８％が運転中にメールを打つのは危険であると考えている一方で、７４％がこれを行うことを認めている。
【００２０】
コンピューティングデバイス上で必要なタスクを自動的に実行することは、様々な非運転条件においても望ましい場合がある。単一のコマンドを使用して複数の手順が必要なタスクを実行すると、時間および労力を節約できる。音声コマンドを使用することは、スマートウォッチを使用して、または、デバイスを取り出して、文字をタイプし、もしくは他の様態で人の手を使用して対話する必要なしに、スマートフォンと対話するための実用的なソリューションである。また、これは視覚障害者にとっても非常に有用であり得る。さらに、場合によっては、ユーザは自分が実行したいタスクを語ることができるが、コンピューティングデバイス上でそのタスクをどのように実行するかを知らない場合がある。例えば、既存の連絡先に電話番号を追加したい場合があるが、スマートフォンでこれを実行する方法はわからない場合がある。この場合、連絡先アプリケーションを手動で探し、関連する連絡先を探し、編集ボタンを押し、番号を入力して追加を確認するよりも、「番号Ｘを連絡先Ｙに追加する」と言うかまたは書き込む方がはるかに容易であろう。
【００２１】
１つの技術的ソリューションは、ユーザのためにコンピューティングデバイスによって以前に実行されており、それぞれの動作シーケンスの識別子を使用して別のユーザのために別のコンピューティングデバイス上で自動実行するために取り出し可能な動作シーケンスのリポジトリを維持することであり、動作シーケンスの各々は、１つまたは複数の動作を含み、各動作は、コンピューティングデバイスを動作させるためのユーザインターフェースの要素とのユーザ対話を表す。いくつかの例示的な実施形態では、リポジトリは、異なるユーザの複数のコンピューティングデバイスによってアクセス可能であり、それらの間で共有されてもよい。
【００２２】
いくつかの例示的な実施形態では、ユーザインターフェースは、動作シーケンスまたはその一部が自動的に実行されている間に代替表示が表示されることによってユーザから隠すことができ、その結果、ユーザ対話が実行されているユーザインターフェースの１つまたは複数の要素の少なくとも一部は、その時間中にユーザには見えない。代替表示は、実行が実施されていることを示すスプラッシュ画面であってもよい。付加的または代替的に、代替表示は、シーケンス実行が開始されたときのディスプレイのスクリーンショットであってもよく、それによってシーケンスが実行されている間に「フリーズ画面」の見た目が提供される。いくつかの例示的な実施形態では、代替表示は、シーケンスの実行が進行中であることを示すために、砂時計、回転要素などのアニメーションを含んでもよい。
【００２３】
いくつかの例示的な実施形態では、動作シーケンスの動作によって表されるユーザ対話は、クリック、スクロール、スライド、ドラッグ、ポイント、テキストの入力または編集などのような、コンピューティングデバイスのユーザインターフェースによって利用されるユーザ対話のいずれかであってもよい。付加的にまたは代替的に、ユーザ対話は、テキストの読み上げ、表示画面上の表領域の座標の指定（例えば、画像の部分的な箇所にズームインすること）などのような、ハンズオフ動作に適合したカスタム動作であってもよい。
【００２４】
いくつかの例示的な実施形態では、リポジトリは、ユーザによって実行されている間に記録され、そのユーザによって提供される識別子に関連付けられる少なくとも１つの記録動作シーケンスを含むことができる。いくつかの例示的な実施形態では、ユーザは、記録の開始前に記録コマンドを与えることによって、動作シーケンスを明示的に記録することができる。記録動作シーケンスと識別子との関連付けおよびそのリポジトリにおける記憶は、記録コマンドを使用するなど、ユーザが記録動作シーケンスを記録することによって開始されてもよい。付加的にまたは代替的に、動作シーケンスは、ユーザが明示的に記録を開始することなく、１つまたは複数の動作のユーザの実行の監視に基づいて記録されてもよい。ユーザは、記録動作シーケンスが頻繁に実行されていると自動的に認識されることに応答して、識別子を提供するように促されてもよい。
【００２５】
いくつかの例示的な実施形態では、リポジトリは、動作シーケンスに対して複数の異なる識別子を保持することができる。異なるユーザによる動作シーケンスの異なる実行に基づいて異なる識別子を定義することができる。付加的にまたは代替的に、同じユーザが同じシーケンスに対して複数の識別子を提供してもよい。いくつかの例示的な実施形態では、代替的な識別子は、異なる言語の識別子であってもよい。付加的にまたは代替的に、代替的な識別子は、同じ言語の識別子であってもよい。例えば、あるユーザは、ユーザ定義コマンド「ｏｐｅｎ  ＳＭＳ（ＳＭＳを開く）」を使用してシーケンスを定義してもよく、別のユーザは、ユーザ定義コマンド「ｓｔａｒｔ  ＳＭＳ（ＳＭＳを開始する）」を同じシーケンスに提供してもよく、一方で別のユーザは、同じシーケンスにユーザ定義コマンド「ｔｅｘｔ  ｍｅｓｓａｇｅ（メッセージを打つ）」を使用してもよい。
【００２６】
いくつかの例示的な実施形態では、識別子は、ユーザの音声コマンドを取得し、音声コマンドから識別子を抽出することによって取得することができる。いくつかの例示的な実施形態では、音声コマンドを発話−テキストエンジンを使用して分析して、識別子を抽出するために分析できる対応する文字列を提供することができる。いくつかの例示的な実施形態では、識別子を定義するときに、接続詞（「ａｎｄ」、「ｆｏｒ」など）または他の同様の用語などの文字列に現れる一般に使用される単語を省略することができる。付加的または代替的に、識別子は、ユーザによって入力される文字列「ｒｅｃｏｒｄ  ｓｅｑｕｅｎｃｅ  ｏｐｅｎ  ｓｅｓａｍｅ（シーケンスを記録せよ、開けゴマ）」のようなユーザによる非音声コマンドに基づいて定義されてもよく、「ｏｐｅｎ  ｓｅｓａｍｅ（開けゴマ）」は識別子自体であってもよく、または、そこから識別子が抽出される文字列であってもよい。ユーザコマンドは、監視および記録されるべき動作の実行の前に、またはそのような動作が実行され、システムによって監視された後に提供されてもよい。
【００２７】
いくつかの例示的な実施形態では、識別子は、パラメータを含んでもよく、それによって、動作シーケンスがパラメータに対して指定された値に基づいて変更される。例えば、識別子自体は、動作シーケンスの実行中に対話される集合からのアイテムの値およびそれに関連する参照などのベース識別子およびパラメータを含むことができる。一例として、識別子は  「ｖｏｉｐ  Ｓｕｚａｎｎｅ  Ｖｅｇａ」であり、Ｓｕｚａｎｎｅ  Ｖｅｇａはアドレス帳の連絡先に関連する参照である。関連するシーケンスは、Ｖｉｂｅｒ（商標）、Ｓｋｙｐｅ（商標）などのＶｏｉｃｅ  ｏｖｅｒ  ＩＰ（ＶｏＩＰ）アプリケーションを開き、アドレス帳に到達し、パラメータに基づいて連絡先の人物を選択し、選択された連絡先の人物との通話を開始するように構成することができる。したがって、コマンド「ｖｏｉｐ  Ｍｉｃｋ  Ｊａｇｇｅｒ」は、Ｍｉｃｋ  Ｊａｇｇｅｒについて連絡先の人物として明示的に定義する必要なく、同様に動作するように構成される。
【００２８】
いくつかの例示的な実施形態では、動作シーケンスの各々およびリポジトリに保持されたそれぞれの関連する識別子についての使用統計が収集されてもよい。使用統計は、付加的なユーザによる同一の動作シーケンスの実行、および、例えば、部分的にオーバーラップするシーケンスなどの同様の動作シーケンスの実行を計上することができる。保持されている動作シーケンスは、使用統計によって満たされていると示される使用基準に基づいて選択的にアクセス可能にすることができる。例えば、リポジトリに新たに導入された動作シーケンスは、最初は、元のユーザに個人的にしかアクセスできないようにすることができ、独立して所定の閾値分だけ多数回にわたって、かつ／または、多数の異なるユーザによって実行された後にのみ、公的にアクセス可能にすることができる。付加的にまたは代替的に、使用統計は、たとえあったとしてもめったに使用されない動作シーケンスまたは冗長識別子を検出および除去することによって、リポジトリの保守のために利用されてもよい。付加的にまたは代替的に、使用統計は、動作シーケンスの実行が成功する可能性を判定するために利用されてもよい。
【００２９】
いくつかの例示的な実施形態では、動作シーケンスの自動実行は、現在の動作を実行するために必要な要素が、コンピューティングデバイスの現在の状態におけるユーザ対話に利用可能であるか否かの判定を行うことを含むことができる。コンピューティングデバイスに、現在の状態から、ユーザ対話のために要素が利用可能な目標状態に切り替えさせるように構成された中間動作シーケンスを取得して実行して、現在の動作の自動実行を可能にすることができる。
【００３０】
本開示の文脈において、コンピューティングデバイスの状態に関連する「状態」という用語は、コンピューティングデバイスによって表示されるスクリーンディスプレイのレイアウトに含まれる１つまたは複数の要素の集合を指すことができる。この用語はまた、アプリケーションプログラム、および、それによって提供される１つまたは複数の集合表示のそれぞれの集合表示を指してもよい。例えば、電子メール通信を交換および管理するためのアプリケーションプログラムは、それぞれが別個の状態とみなされ得る、受信ボックス、送信済みアイテム、下書き、スパム、ごみ箱、アーカイブなどのいくつかのフォルダの表示を含むことができる。別の例として、コンピューティングデバイスのホーム画面は、アプリケーションプログラムまたはデバイス機能へのリンクまたはショートカットを含むグリッドからなり、各々が別個の状態と考えることもできる、複数の交互のページまたはサブ画面表示上に配置されてもよい。いくつかの例示的な実施形態では、インタラクティブ要素の集合は、画面表示のレイアウト内に表示された表示要素のサブセットであってもよい。例えば、テキストメッセージアプリケーションの画面表示内に存在するメッセージのコンテナは、「作成（ｃｏｍｐｏｓｅ）」ボタン、アプリケーションの画面を示す１つまたは複数のタブボタンなどのような同じレイアウト内の他の要素とは対照的に、それぞれの状態の定義の一部でなくてもよい。
【００３１】
いくつかの例示的な実施形態では、中間動作シーケンスは、対応する代替的な中間動作シーケンスを完了まで実行することが成功する可能性を示すスコアに基づいて、複数の代替的な中間動作シーケンスの中から選択を行うことによって得ることができる。スコアは、それぞれの動作シーケンスの使用統計に基づいてもよい。付加的にまたは代替的に、スコア計算は、例えば、シーケンス内の各さらなる動作のスコアを減らすことによって、長いシーケンスよりも短いシーケンスを選好するように構成することができる。
【００３２】
いくつかの例示的な実施形態では、中間動作シーケンスは、動作シーケンスの実行を完了するようにコンピューティングデバイスのユーザに促すことによって得ることができる。動作シーケンスの実行が自動的に完了できないという決定に応答して、ユーザを促すことができる。ユーザ動作は、中間動作シーケンスを決定するために監視されてもよい。監視される中間動作シーケンスは、その動作シーケンスまたは他の動作シーケンスの実行が自動的に完了できない場合、将来の自動回復を可能にするように、将来の使用のために記録および記憶されてもよい。
【００３３】
いくつかの例示的な実施形態では、動作シーケンスの自動実行は、動作シーケンスの動作がそれとのユーザ対話を表すアプリケーションプログラムがコンピューティングデバイスにインストールされているか否かの判定を行うことを含むことができ、アプリケーションプログラムがインストールされていないことに応答して、ユーザは、アプリケーションプログラムをダウンロードするためにシーケンスの実行をアクティブにするように促されてもよい。付加的にまたは代替的に、アプリケーションプログラムは、ダウンロードする前にユーザの承認を要求して、または、要求せずに、自動的にダウンロードされてもよい。いくつかの例示的な実施形態では、動作シーケンスの自動実行は、動作シーケンスの動作がそれとのユーザ対話を表すアプリケーションプログラムがコンピューティングデバイス内で現在作動しているか否かの判定を行うことを含むことができる。アプリケーションプログラムが作動しているがコンピューティングデバイスのフォアグラウンドにない場合、アプリケーションプログラムは、それと対話できるようにフォアグラウンドに切り替えられてもよい。付加的にまたは代替的に、アプリケーションプログラムが作動していない場合、アプリケーションプログラムは自動的に起動されてもよい。いくつかの例示的な実施形態では、プログラムの自動起動は、ユーザ定義の動作シーケンスを実行することによって実行されてもよい。付加的にまたは代替的に、プログラムは、適切なアプリケーションプログラミングインターフェース（ＡＰＩ）を呼び出すことによって起動されてもよい。
【００３４】
いくつかの例示的な実施形態では、ユーザによるすべての動作を監視することができ、動作シーケンスをそれに基づいて暗黙的に定義することができる。ユーザは、そのユーザによる頻繁な使用、そのユーザに類似したユーザ（例えば、ユーザと同じ使用プロファイルを有する）による頻繁な使用などのような基準を満たす使用統計に基づいて、暗黙的に定義された動作シーケンスの将来の取り出しおよび実行のための識別子を提供するように促され得る。
【００３５】
別の技術的ソリューションは、コンピューティングデバイスを目標状態に切り替えるためのユーザコマンドを取得することに応答して、コンピューティングデバイスの現在の状態を決定し、リポジトリに保持された１つまたは複数の動作シーケンスを使用して、実行されるときにコンピューティングデバイスの状態を現在の状態から目標状態に変更するように構成されている動作シーケンスを決定することである。
【００３６】
いくつかの例示的な実施形態では、動作シーケンスは、現在の状態で適用可能な最初に順序付けされている動作と、コンピューティングデバイスの状態を中間状態に変更するように構成された最後に順序付けられている動作とを有する第１の保持されている動作シーケンスの一部を識別し、中間状態に適用可能な最初に順序付けられている動作を有する第２の保持されている動作シーケンスの一部を識別し、第２の動作シーケンスが後続する第１の保持されている動作シーケンスの部分を含むように動作シーケンスを決定することによって決定することができる。付加的または代替的に、動作シーケンスは、ソースノードから宛先ノードへのエッジが、前者によって表される状態で適用可能であり、コンピューティングデバイスを後者によって表される状態に切り替えるように構成されている、保持されている動作シーケンスに対応するように、コンピューティングデバイスの状態を表すノードおよび保持されている動作シーケンスを表すエッジを含むグラフのデータ構造を取得および分析することによって決定されてもよい。グラフは、現在の状態に対応するノードから目標状態に対応するノードまでのパスを決定するために分析されてもよい。動作シーケンスは、パス内のエッジに対応する、保持されている動作シーケンスに基づいて生成することができる。
【００３７】
さらに別の技術的ソリューションは、ＧＵＩ内の各インタラクティブ要素に一意の識別子を提供することである。いくつかの例示的な実施形態では、ＧＵＩのレイアウトが取得されて、レイアウト内の１つまたは複数のインタラクティブ要素が決定される。一意のラベルを各インタラクティブ要素に割り当て、ラベルを対応するインタラクティブ要素に視覚的に近接して表示することができる。一意のラベルは、｛０，１，２，３、…｝のような数字、｛Ａ、Ｂ、Ｃ、…｝のような文字、｛ｉ、ｉｉ、ｉｉｉ、ｉｖ、…｝のようなローマ数字などであってもよい。付加的にまたは代替的に、一意のラベルは、特定のレイアウトのコンテキストにおいて厳密に一意であってもよく、異なるレイアウトの別の要素に対しては再利用されてもよい。特定の状態におけるレイアウト内の要素には、他のインタラクティブ要素、例えば、追加または他のアイテムを含む集合要素などの異なる内容を考慮して、異なる時間に異なるラベルを割り当てることができる。いくつかの例示的な実施形態では、音声認識機構を使用して、ユーザによるラベルの音声指示を検出することができ、対応するインタラクティブ要素に対するユーザ対話動作がそれに応じて自動的に実行されてもよい。
【００３８】
いくつかの例示的な実施形態では、ユーザは、その割り当てられた一意のラベルを示すことによって、またはその本来的に表示されているラベルを示すことによって、インタラクティブ要素との所望の対話を示すことができる。例えば、ＷｈａｔｓＡｐｐ（商標）アプリケーションプログラムのアイコンは、割り当てられた一意のラベル（例えば、数字「４」）を発音することによって、またはアイコンの固有のラベル「ｗｈａｔｓａｐｐ」を示すことによって対話することができる。
【００３９】
いくつかの例示的な実施形態では、指示された要素に対するユーザ対話動作は、１つまたは複数のユーザ対話動作からなる動作シーケンスに含めるために記録されてもよい。動作シーケンスは、将来の実行のために動作シーケンスを取り出すために使用されることになる識別子と関連付けられてもよい。識別子は、別の動作シーケンスの記録中に動作シーケンスを取り出すために使用することができ、それによって、以前に記録された動作シーケンスを新たに記録された動作シーケンスに組み込むことを可能にする。記録動作シーケンスは、コンピューティングデバイスの複数のユーザの間で共有することができる。共有は、収集されている使用統計によって満たされる基準に応じて選択的に実行されてもよい。ユーザによる記録動作シーケンスの反復実行を自動的に識別することができ、ユーザは、識別子を使用して記録動作シーケンスの取り出しを可能にするために、記録動作シーケンスとの関連付けのための識別子を入力するように促され得る。
【００４０】
いくつかの例示的な実施形態では、本明細書では一般に開発者と呼ばれる、パブリッシャ、開発者、配布者、またはアプリケーションの責任を負う同様のエンティティに、ユーザによって使用される動作シーケンスが通知され得る。開発者は自身のアプリケーションのコミュニティの使用状況を通知され得、ユーザのコミュニティが使用する特定の動作を開発するよう誘導される。例として、開発者は、約１％以上、約１，０００人以上のユーザなど、ユーザの相当部分によって４つの動作のシーケンスが頻繁に実行されることを通知されてもよい。そのようなシーケンスは「人気がある」と考えられ得る。開発者は、それに応じて、シーケンスまたはその一部を実行するように構成されたアトミックユーザ対話を開発することができる。開発者は、以前に使用された２つ以上のユーザ対話の代わりに、新しく開発されるアトミックユーザ対話を使用するように動作シーケンスを更新することを可能にされ得る。いくつかの例示的な実施形態では、新しく開発されるアトミックユーザ対話は、いくつかの別個のサーバトランザクションを単一のトランザクション集約することなどによって、より効率的であり得る。付加的または代替的に、新しく開発されるアトミックユーザ対話は、実行に成功する可能性が高いなど、より安定的であり得る。いくつかの例示的な実施形態では、新しく開発されるアトミックユーザ対話は音声コマンドであってもよい。付加的または代替的に、新しく開発されるアトミックユーザ対話を使用する別の動作シーケンスは、ユーザによって使用されてもよく、使用統計に基づいて、元の動作シーケンスよりも選好される代替であるとして自動的に決定されてもよい。いくつかの例示的な実施形態では、代替的な動作シーケンスおよび元の動作シーケンスの両方に同じ識別子が割り当てられてもよい（または、各シーケンスの識別子のセット全体であってもよく、そうでなくてもよい識別子の共有セットを有する）。共有されている１つまたは複数の識別子に基づいて、両方のシーケンスが互いの代替であると自動的に判定することができる。付加的にまたは代替的に、自動決定は、同じ最終結果を有する両方のシーケンスに基づいてもよい。
【００４１】
いくつかの例示的な実施形態では、ユーザによって実行される動作シーケンスは、動作シーケンスのリポジトリに保持されている動作シーケンスと同一であると自動的に識別することができる。保持されている動作シーケンスに関連付けられ、その取り出しに有用な識別子を取得することができ、ユーザは、将来の動作シーケンスの自動実行をトリガするためにその識別子を使用するように促され得る。
【００４２】
いくつかの例示的な実施形態では、ＧＵＩの要素は、実行されると考えられる動作が、その取り出しおよび実行を可能にする識別子を有する、保持されている動作シーケンスにおける最初の動作である要素として識別され得る。例えば、異なる色、大きさ、および／または形状のラベル、点滅しているまたは半透明のラベルなどを使用することによって、その要素に関連してそのような動作シーケンスの存在を示すために特別な視覚マーキングを使用することができる。
【００４３】
いくつかの例示的な実施形態では、動作シーケンスの記録中にＧＵＩによって表示され、識別子の一部によって参照される集合から選択されているアイテムは、自動的に識別することができ、パラメータとして指定することができ、それによって、正確に同じであるが、パラメータ部分の代わりに異なるアイテムを参照して識別子を使用することによって集合から選択されている異なる項目について動作シーケンスを取り出し、実行することができる。例えば、コンピューティング装置に記憶された連絡先リストから人物Ｘを選択すること、および、その人物にイベントへの参加を求めるメッセージを送信することからなる動作シーケンスは、識別子「ｉｎｖｉｔｅ  Ｘ（Ｘを招待する）」を備えることができる。Ｘ部分は、「ｉｎｖｉｔｅ  Ｙ（Ｙを招待する）」へのユーザコマンドが、同一の動作シーケンスを取り出して実行させるが、連絡先リストから選択され、メッセージを送信される人物がＸではなくＹであるように、連絡先人物のパラメータとして識別することができる。いくつかの例示的な実施形態では、Ｘをパラメータとして識別することは自動識別であってもよく、または、単語「ｐａｒａｍｅｔｅｒ（パラメータ）」を使用するなどのユーザ指示に基づくものであってもよい。
【００４４】
いくつかの例示的な実施形態では、コンピューティングデバイスによって表示されるＧＵＩのレイアウト内のインタラクティブ要素は、フリーテキスト入力要素を含むものとして決定されてもよい。ユーザから得られる発話の音響と、所定の音声コマンドの識別子との比較（直接的に、または、発話を使用して生成されるテキスト文字列をテキストエンジンと比較し、それを音声コマンドのテキスト識別子と比較するなどによって間接的に、のいずれかで）を実行することができ、不一致の判定に応答して、発話はテキストに変換され得、次にフリーテキスト入力要素に入力され得る。その後、テキストは任意選択的に合成発話に変換されてもよく、合成発話はその後、聴き取るためにユーザに配信することができ、それによって、ユーザは例えばテキストを確認し、または、訂正を要求することができる。
【００４５】
いくつかの例示的な実施形態では、コンピューティングデバイスは、近接センサを備えていてもよい。近接センサは、音声コマンドを介して少なくとも部分的に実行される動作シーケンスの記録中、または音声コマンドを使用するそのような動作シーケンスの実行中に、コンピューティングデバイスの音声認識モードと音響再生モードとの間で、ユーザがオンとオフとを切り替えることを可能にするために利用され得る。オン／オフ切り替えは、例えば、ユーザがデバイスに向かって手を伸ばすことによって行うことができる。
【００４６】
本開示の主題を利用する１つの技術的効果は、ユーザからの簡潔な通信および最小限の労力によって、コンピューティングデバイスを動作させるためのユーザインターフェースをカスタマイズすることである。
【００４７】
本開示の主題を利用する別の技術的効果は、各々が他者の寄与と組み合わさるわずかな寄与を行う複数のユーザの協調動作を通じて、累積的かつ動的に進化する有用な動作シーケンスの集合ライブラリを形成することを可能にすることである。一般に大勢の人々に労務または資源出資を委ねるそのようなプロセスは、「クラウドソーシング」とも呼ばれる。したがって、本開示の主題を利用することにより、例えば、共有リポジトリの内容の集約データ分析および収集された使用統計に基づいて、クラウドソーシングによるユーザ間の有用な動作シーケンスの普及および無益またはさらには有害な動作シーケンスのフィルタリング除外を可能にすることができる。
【００４８】
本開示の主題を利用するさらに別の技術的効果は、クラウドソーシングの能力を利用することによって、人−機械対話を改善するために反復使用パターンの利点を活かし、利用することであり得る。
【００４９】
ここで、本主題のいくつかの例示的な実施形態による、方法のフローチャート図を示す図１を参照する。
【００５０】
ステップ１００において、動作シーケンスの識別子を得ることができる。動作シーケンスは、１つまたは複数の動作を含むことができ、各動作は、コンピューティングデバイスを動作させるためのユーザインターフェースの要素とのユーザ対話を表す。識別子は、任意の入力モダリティを介してユーザコマンドを受信することによって取得することができる。例えば、ユーザは、キーボード、ポインティングデバイスなどを使用してコマンドを提供することができる。いくつかの例示的な実施形態では、ユーザは音声コマンドを提供することができる。識別子は、コマンドを表す文字列を操作するなどして、コマンドから抽出することができる。いくつかの例示的な実施形態では、音声コマンドをテキスト文字列に変換し、テキスト文字列を分析して識別子を抽出することができる。
【００５１】
ステップ１１０において、動作シーケンスを取り出すために識別子を使用してリポジトリを検索することができる。リポジトリは、ユーザのためにコンピューティングデバイスによって以前に実行された動作シーケンスを含むことができる。いくつかの例示的な実施形態では、リポジトリは、識別子が取得されたコンピューティングデバイス以外の別のコンピューティングデバイスによって、識別子を提供しているユーザ以外の別のユーザのために実行された動作シーケンスを含むことができる。
【００５２】
いくつかの例示的な実施形態では、リポジトリは、識別子が取得されたコンピューティングデバイスのユーザ以外の１人以上のユーザから得られた音声コマンドから識別子が抽出された動作シーケンスを含むことができる。
【００５３】
リポジトリは、コンピューティングデバイス内にローカルに保持されてもよく、または、コンピュータ化ネットワーク（例えば、インターネット）を介してコンピューティングデバイスに到達可能なサーバ内などに、リモートに保持されてもよい。いくつかの例示的な実施形態では、ローカルリポジトリは、以前の更新以降にコンピューティングデバイスにアクセス可能となっている任意の新しい情報を含むように、リモートサーバに基づいて定期的に更新されてもよい。いくつかの例示的な実施形態では、更新は、そのようなアプリケーションだけに関連する動作シーケンスを含むように、デバイス上のインストールされたアプリケーションのセットに基づいて実行することができる。このような選択的な更新は、必要な記憶スペースおよび帯域幅を低減し得る。いくつかの例示的な実施形態では、デバイスがリモートサーバへの接続性を有する場合、遠隔サーバに検索クエリを実行するように指示するなど、リモートの包括的なリポジトリを使用することができる。接続性がない場合（例えば、インターネットに接続されていない場合）、ローカルリポジトリを使用することができ、これにより、いくつかの動作シーケンス（ユーザに関連するシーケンス、デバイスにインストールされたアプリケーションに関連するシーケンスなど）を実行することが可能である。付加的にまたは代替的に、ローカルリポジトリは、デバイスのユーザによって頻繁にまたは以前に使用されているシーケンスの性能を向上させるためのキャッシュとして使用されてもよい。
【００５４】
ステップ１２０において、ステップ１１０で得られた動作シーケンスは、ステップ１００で識別子が得られたコンピューティングデバイス上で自動的に実行することができる。動作は、動作シーケンス中の定義された順序に従って反復して実行することができる。以下でより詳細に説明するように、場合によっては、動作シーケンスの正確な実行が不可能である場合があり、実際の実行は、シーケンス内で定義されていない追加の動作を実行すること、シーケンス内で定義された動作と異なる動作を実行することなどによって、定義されている動作シーケンスとは異なってもよい。いくつかの例示的な実施形態では、各動作の自動実行は、コンピューティングデバイスのオペレーティングシステムによって、または、その動作が実行されるアプリケーションによって提供されるＡＰＩを使用することができる。付加的にまたは代替的に、自動実行は、コンピューティングデバイス上で動作を実行するための外部デバイスを使用すること、入力デバイスのドライバを呼び出すことなどによって、ユーザＧＵＩ動作を模倣することができる。
【００５５】
動作シーケンスの実行を監視することができる（１３０）。監視された実行に基づいて、動作シーケンスの使用統計を更新することができる（１４０）。いくつかの例示的な実施形態では、使用統計をリポジトリ内に保持することができる。使用統計は、例えば、実行試行の総数、成功した実行の総数、失敗した実行の総数、シーケンスを実行した異なるユーザの数、ユーザあたりの成功した実行の数、任意のユーザによる最後の実行からの時間、全ユーザの最後の実行からの平均時間、平均的な実行ユーザのプロファイルなどを含むことができる。
【００５６】
ステップ１５０において、例えば、異なるユーザによる独立した実行の閾値に達するなど、使用統計が基準を満たすことに基づいて、追加のユーザが動作シーケンスを利用できるようにすることができる。いくつかの例示的な実施形態では、使用統計は、動作シーケンスが頻繁に首尾よく使用されているか否かを示すことができる。いくつかの例示的な実施形態では、動作シーケンスが有用であり、他人によって使用されることが安全であるか否かを判定するために、特定の使用統計が有用であり得る。一実施形態では、悪意のあるユーザが、中間ステップとして、デバイスからデータをコピーし、悪意のあるユーザによって制御されるサーバにデータを送信する悪意のある動作シーケンスを定義する場合がある。そのような動作シーケンスの使用統計は、このシーケンスを実行しているユーザが１人または少数であり、それゆえ、安全と考えることができないことを示している可能性がある。別の例として、装置からデータ全体を削除する悪意のあるシーケンスが定義される場合がある。悪意のあるシーケンスは、使用頻度の低い使用統計を示す可能性がある。したがって、そのような悪意のあるシーケンスは安全とは考えられない場合がある。付加的にまたは代替的に、シーケンスの実行後の変更された挙動も監視することができ、安全でないシーケンスに対する指示としての役割を果たすことができる。一例として、シーケンスが実行された後、デバイス監視は、デバイスの性能の劣化、デバイスのネットワーク接続性の低下などを検出することができる。
【００５７】
いくつかの例示的な実施形態では、使用統計の変化、ユーザからのフィードバック（例えば、動作シーケンスを不正確または悪意があると報告するなど）などを考慮して、以前に追加のユーザに利用可能であった動作シーケンスを利用できないようにすることができる。いくつかの例示的な実施形態では、シーケンスを一度実行したユーザは、意図的にシーケンスの再使用を避け得、したがって、本開示の主題は、ユーザが安全でないと考えるシーケンスを決定するために公的に利用可能なシーケンスをクラウドソースして、それに応じて、その後、そのシーケンスを利用できないようにすることができる。
【００５８】
ここで、本主題のいくつかの例示的な実施形態による、方法のフローチャート図を示す図２Ａを参照する。
【００５９】
ステップ２００では、例えば図１の方法を使用することによって、コンピューティングデバイス上で自動的に実行するための動作シーケンスを得ることができる。
【００６０】
ステップ２０５において、コンピューティングデバイス上のユーザインターフェースの表示を隠すためのオーバーレイ表示が表示され、これにより、動作シーケンスの動作が実行されるユーザインターフェースの１つまたは複数の要素の少なくとも一部が、ユーザから隠される。オーバーレイ表示は、コンピューティングデバイス上の動作シーケンスの実行全体を通じて表示されてもよい。いくつかの例示的な実施形態では、オーバーレイ表示は、動作シーケンスの実行前のＵＩのスクリーンショットであってもよく、それによって、ＵＩ要素との自動対話が実行される間、「フリーズしたフレーム」の見た目を提供する。付加的または代替的に、オーバーレイ表示は、「ロード中」アニメーションなど、動作がまだ実行されていることを示すアニメーションを含むことができる。付加的にまたは代替的に、オーバーレイ表示は、１つまたは複数の広告を含んでもよい。広告は、ユーザの特性、実行中の動作シーケンス、ユーザの使用プロファイルなどに基づいてユーザに提供されてもよい。一例として、音楽を再生することに関連するシーケンスを使用するユーザは、音楽関連広告の対象とすることができ、一方で、電子メールクライアントの使用に関連するシーケンスを頻繁に利用するユーザは、改善された電子メールクライアントアプリケーションの対象とすることができる。
【００６１】
ステップ２１０〜２５０では、動作シーケンスからの動作が、シーケンスによって定義された実行順序に従って反復的に処理される。
【００６２】
ステップ２１０において、動作シーケンスの現在の動作を実行するために必要なユーザインターフェースの要素を決定することができる。例えば、動作がボタンをアクティブにしている場合、その要素はボタンであってもよい。別の例として、動作が集合からの選択である場合、その要素は集合内の選択されたアイテムであってもよい。さらに別の例として、動作がフリーテキストフィールドにテキストを入力している場合、その要素はフリーテキストフィールドであってもよい。さらに別の例として、動作が静的テキストフィールドからのテキストの読み上げである場合、その要素は静的テキストフィールドであってもよい。いくつかの例示的な実施形態では、要素は、将来の実行において同じままである一意で永続的な識別子に基づいて識別される。いくつかの例示的な実施形態では、同じソフトウェアが他のデバイスによって実行される場合、要素の一意で永続的な識別子は同じままであり得る。付加的にまたは代替的に、識別子は、要素の表示ラベル（例えば、チェックボックスに近いテキスト、ボタン上の画像など）に基づいてもよい。付加的または代替的に、識別子は、表示ラベルが経時的に変化し得る、異なるユーザに対して異なり得るなど、表示ラベルに基づいていなくてもよい。いくつかの例示的な実施形態では、識別子は、実行されたソフトウェアに関連付けられる名前空間内の要素のプログラム名であってもよい。いくつかの例示的な実施形態では、一意かつ永続的な識別子は、特定の状態の第３のＵＩ要素、レイアウト内の特定の位置に位置決めされている特定の状態のＵＩ要素など、他のＵＩ要素およびデバイスの状態に基づいてもよい。いくつかの例示的な実施形態では、一意かつ永続的な識別子は、特定の状態のレイアウトにおけるＵＩ要素の相対位置に基づくことができる。
【００６３】
ステップ２２０では、その要素がコンピューティングデバイスの現在の状態で利用可能であるか否かの判定が行われ得る。要素が利用可能である場合、方法はステップ２５０において進行する。そうでなければ、方法はステップ２３０に進むことができる。いくつかの例示的な実施形態では、要素が存在し、現在の動作によって定義される所望の対話の実行を可能にする有効状態にある場合、要素は利用可能であると考えられる。
【００６４】
ステップ２３０において、コンピューティングデバイスを現在の状態から、ユーザ対話のために利用可能な目標状態に切り替えることを目的とする中間動作シーケンスが決定され得る。中間動作シーケンスは、図２Ｂに関連してさらに説明するように、シーケンスの実行を完了するためにそのユーザによって、または他のユーザによって過去に使用されたシーケンスであってもよい。付加的にまたは代替的に、中間動作シーケンスは、図２Ａで実行されている動作シーケンスに関係していないユーザによって実行されるシーケンスであってもよい。いくつかの例示的な実施形態では、中間動作シーケンスは、利用可能な動作シーケンスの部分に基づく合成シーケンスであってもよい。いくつかの例示的な実施形態では、中間動作シーケンスは、動作シーケンスリポジトリの内容に基づいて決定されてもよい。いくつかの例示的な実施形態では、中間動作シーケンスは、動作シーケンスを実行するデバイスによって合成されてもよく、または要求に応じて中間動作シーケンスを合成する、コンピュータ化ネットワークを介してアクセス可能なサーバなどの別の装置から取得されてもよい。
【００６５】
付加的または代替的に、中間動作シーケンスは、現在の状態を、現在の動作の後の後続の動作の１つの実行を可能にする次の状態に変更するシーケンスであってもよい。このような場合、中間動作シーケンスを取得することができ、実行されると、中間動作シーケンスは、シーケンス内に現れる１つまたは複数の動作の置き換えとしての役割を果たすことができる。いくつかの例示的な実施形態では、中間動作シーケンスは、シーケンス内の残りの動作に完全に置き換えることができる。
【００６６】
いくつかの例示的な実施形態では、中間動作シーケンスが必要な場合、（図１のステップ１３０に示されるような）実行の監視は、そのような情報を識別し、それに応じて使用統計を更新することができる。
【００６７】
ステップ２４０において、現在の状態から目標状態への切り替えを引き起こすために、中間動作シーケンスがコンピューティングデバイス上で自動的に実行されてもよい。いくつかの例示的な実施形態では、中間動作シーケンスは、動作シーケンスの実行と同様に実行されてもよい（例えば、中間動作シーケンスにおける各動作に対してステップ２１０〜２５０が実行され、場合によって、実行を完了するために別の中間動作シーケンスが必要となる）。
【００６８】
ステップ２５０で、現在の動作が要素に対して実行され得、動作シーケンスの自動実行が動作シーケンスの次の動作に進むことができる。同様に、動作シーケンス全体の実行が完了するまで、動作シーケンス内の各動作についてプロセスを繰り返し、ステップ２１０〜２５０を実行することができる。
【００６９】
ここで、本主題のいくつかの例示的な実施形態による、方法のフローチャート図を示す図２Ｂを参照する。
【００７０】
ステップ２２０が、要素が現在の状態で利用可能でないと判定した後、ステップ２３２を実行することができる。ステップ２３２において、ユーザは、実行を終了することができないことを通知され得る。いくつかの例示的な実施形態では、ステップ２３２は、中間動作シーケンスを自動的に取得することに失敗した後にのみ実行することができる（図２Ａのステップ２３０）。
【００７１】
それに応答して、ユーザは、動作シーケンスの実行を完了するために１つまたは複数の動作を手動で実行することができる。ユーザによる動作の手動実行は、将来の使用のために監視および記録することができる（ステップ２４２）。ユーザは、中間動作シーケンスを実行して目標状態に到達することができ、または、代替的に、現在の動作を実行することなくシーケンスの実行を完了するために残りの動作を実行してもよい。例えば、残りの動作シーケンスによって定義されるように動作Ａ、Ｂ、Ｃ、ＤおよびＥを実行する代わりに、ユーザは動作Ｘ、Ｙ、ＤおよびＥを実行することができる。したがって、中間動作シーケンスは、Ｘ、Ｙシーケンスであると決定することができ、将来において、動作Ａが利用できず、シーケンスがＡ、Ｂ、Ｃ、および後続するＤを実行する必要がある場合、Ａ、Ｂ、Ｃを実行する代わりに使用することができる。
【００７２】
ここで、本主題のいくつかの例示的な実施形態による、方法のフローチャート図を示す図２Ｃを参照する。
【００７３】
いくつかの例示的な実施形態では、アプリケーションプログラムがコンピューティングデバイスにインストールされていないことに起因して、現在の状態では、必要な要素が利用可能でない可能性がある。ステップ２３４で、ユーザは、アプリケーションプログラムがデバイスにインストールされる必要があり、可能性としてアプリケーションリポジトリなどの外部ソースからダウンロードされる必要があることを通知され得る。ユーザは、動作を承認するなどして、アプリケーションプログラムのダウンロードおよびインストールを許可するように求められ得る。いくつかの例示的な実施形態では、そのような動作は、アプリケーションプログラムをダウンロードする前に購入トランザクションの実行を必要とするストアからアプリケーションプログラムをダウンロードできる場合など、証明書を必要とする場合がある。
【００７４】
いくつかの例示的な実施形態では、ユーザはアプリケーションプログラムを手動でダウンロードすることができる。
【００７５】
付加的にまたは代替的に、ステップ２４４において、アプリケーションプログラムを自動的にダウンロードすることができる。いくつかの例示的な実施形態において、自動ダウンロードは、アプリケーションプログラムをダウンロードするように動作可能な動作シーケンスを実行することによって実行されてもよい。付加的にまたは代替的に、アプリケーションプログラムをダウンロードするようにプログラム的に構成されたＡＰＩ命令を呼び出すことによって、アプリケーションプログラムをダウンロードすることができる。
【００７６】
ここで、本主題のいくつかの例示的な実施形態による、方法のフローチャート図を示す図３を参照する。
【００７７】
ステップ３００において、ＧＵＩレイアウトを得ることができる。ＧＵＩレイアウトは、現在表示されているＧＵＩレイアウトであってもよい。
【００７８】
ステップ３１０において、ＧＵＩレイアウト内の要素を決定することができる。いくつかの例示的な実施形態では、クリック可能な要素、選択可能な要素、有効テキストフィールドなどのようなインタラクティブ要素が決定されてもよい。いくつかの例示的な実施形態では、インタラクティブ要素に加えて、画像要素、テキスト要素などのような非インタラクティブ要素も決定して処理することができる。要素は、オペレーティングシステムまたはアプリケーションによって提供されるＧＵＩ要素のＡＰＩを使用して決定されてもよい。付加的または代替的に、要素は、画面のキャプチャされた画像またはキャプチャされた画面画像のシーケンスにコンピュータビジョンアルゴリズムを適用することによって決定されてもよい。コンピュータビジョンアルゴリズムは、教師付き学習アルゴリズムおよび教師なし学習アルゴリズムを含む機械学習アルゴリズムを含むことができる。アルゴリズムは、システムのユーザによって提供される情報を使用して、ＧＵＩ要素を決定する能力を向上させることができる。
【００７９】
ステップ３２０において、各要素に一意のラベルが割り当てられる。一意のラベルは、｛０，１，２，３、…｝のような数字、｛Ａ、Ｂ、Ｃ、…｝のような文字、｛ｉ、ｉｉ、ｉｉｉ、ｉｖ、…｝のようなローマ数字などであってもよい。付加的にまたは代替的に、一意のラベルは、特定のレイアウトのコンテキストにおいて厳密に一意であってもよく、異なるレイアウトの別の要素に対しては再利用されてもよい。特定の状態におけるレイアウト内の要素には、他のインタラクティブ要素、例えば、追加または他のアイテムを含む集合要素などの異なる内容を考慮して、異なる時間に異なるラベルを割り当てることができる。
【００８０】
ステップ３３０において、ラベルをＧＵＩレイアウト内に表示することができる。いくつかの例示的な実施形態では、各ラベルは、ＧＵＩの対応する要素に視覚的に近接して表示することができる。
【００８１】
ステップ３４０において、ユーザによるＧＵＩの要素の指示が認識され得る。ユーザは、そのラベルを用いてＧＵＩの要素を参照することができる。いくつかの例示的な実施形態では、音声コマンドは、参照された要素の追加されたレイアウトに一意の識別子の音声表示を含むことができる。いくつかの例示的な実施形態において、ユーザは、代替的に、追加のレイアウト固有の識別子の追加の前に存在した、要素の固有のラベルのような他のラベルを使用してもよい。そのような固有のラベルに対する一例は、関連するプログラムの元のＧＵＩの一部としてのアイコンの隣に表示されるアイコンのラベルであってもよい。別の例は、ボタン上に現れるテキストラベル、または表示されているグラフィック画像の下または近くの注記であってもよい。
【００８２】
ステップ３５０において、ユーザがステップ３４０において認識された要素を参照するのに基づいて、各要素に対して動作を実行することができる。動作は、例えば、インタラクティブ要素と対話すること（例えば、選択可能なアイテムを選択すること、クリック可能なアイテムをクリックすること、選択要素にフォーカスを変更することなど）であってもよい。付加的にまたは代替的に、動作は、合成音を用いて、テキスト要素のテキスト内容を読み上げるなど、要素の内容を読み上げることであってもよい。動作は、ユーザによって定義されてもよい。いくつかの例示的な実施形態では、各要素とのデフォルトの対話的挙動が存在し得る。付加的にまたは代替的に、ユーザはデフォルト以外の挙動を指定することができる。一例として、「１」によって識別される要素がコンテナ内の選択可能な連絡先人物であると考える。（例えば、要素をクリックすることによって）連絡先人物が選択されると、連絡先人物への電話呼が開始される。ユーザが「１」と言う場合、要素をクリックして呼を開始するなど、要素とのデフォルトの対話が実行されてもよい。代替的に、ユーザは「１を読み出す（ｒｅａｄ  １）」と言ってもよい。このようなコマンドに基づいて、デバイスは、要素のテキスト内容を読み上げる音響を合成することができ、それに応じて、スクリーン上にグラフィックで表示される連絡先人物の名前を読み上げることができる。このような機能は、車を運転するときまたは画面がユーザから遠隔にあるときなど、ユーザが画面から内容を読む能力が限られている場合に有用である。
【００８３】
いくつかの例示的な実施形態では、動作の自動実行は、ＧＵＩとの対話を模倣することによって実行されてもよい。付加的にまたは代替的に、自動実行は、要素が対話された後に呼び出された同じ機能を呼び出すことなどによって、ＧＵＩと直接対話することなく実行されてもよい。例として、ボタンを押下する動作を考える。一実施形態では、ボタンに対するクリックをＧＵＩに対してシミュレートするイベントを生成することができる。したがって、ＧＵＩは、イベントを処理し、ボタンクリックを処理し、それによって所望の動作を実行することができる。付加的にまたは代替的に、ボタンがクリックされたことをＧＵＩが検出すると、例えば関数「ｐｅｒｆｏｒｍＡｃｔｉｏｎＯｆＴｈｉｓＢｕｔｔｏｎ（）」のようなＡＰＩ関数が呼び出される。ＧＵＩ層を介さずに直接ＡＰＩ関数を実行することにより、動作を行ってもよい。
【００８４】
ここで、本開示の主題のいくつかの例示的な実施形態による、本開示の主題が使用されるコンピュータ化環境の例示的なスクリーンショットを示す図８Ａおよび図８Ｂを参照する。図８Ａ〜図８Ｂのスクリーンショットは、図３のステップ３３０に基づいて作成することができる。
【００８５】
画面８００は、ＧＵＩレイアウトの要素の隣に割り当てられたラベルの表示を例示する。要素８１５には、ラベル８１０（「０」）が割り当てられる。要素８２５にはラベル８２０（「３」）が割り当てられる。要素８３５にはラベル８３０が割り当てられる。要素８４５にはラベル８４０が割り当てられる。いくつかの例示的な実施形態では、ラベルは、上から下、左から右の割り当て順序に従って割り当てられる。ただし、他の順序を使用することもできる。いくつかの実施形態では、割り当て順序は、上から下、右から左への割り当て、右から左に読まれる言語の順序、上から下、左から右への割り当て、左から右に読まれる言語の順序などのロケール情報に基づくことができる。
【００８６】
画面８００に例示されているように、一意のラベルは、対応する要素に視覚的に近接して表示される。ユーザは、割り当てられたラベルまたは固有のラベルを参照することによって要素を参照する音声コマンドを提供することができる。例えば、ユーザは、コマンド「３（ｔｈｒｅｅ）」（割り当てられたラベルを参照する）を提供することによって、またはコマンド「ｈｏｍｅ（ホーム）」（固有のラベルを参照する）を提供することによって、「Ｈｏｍｅ（ホーム）」のクリック可能要素（８２５）と対話することができる。
【００８７】
いくつかの例示的な実施形態では、画面８００は、アプリケーションプログラム内の画面である。アプリケーションプログラムには、画面８００’などの追加の画面がある。画面８００’は、アプリケーションプログラムのスパムメールボックスを示す。
【００８８】
画面８００’では、識別される各要素にラベルが割り当てられる。場合によっては、画面８００と同じ要素（要素８１５，８４５）に使用されているラベル８１０，８４０のように、同じラベルが同じ要素に使用される。付加的にまたは代替的に、画面８００’において、画面８００で使用されたものとは異なる要素に対してラベルが使用されてもよい。
【００８９】
いくつかの例示的な実施形態において、画面８００’は、電子メールの集合などのアイテムの集合を含む。ユーザは、割り当てられたラベルを使用して集合内のアイテムを参照することができる。例えば、「Ｔｈｅ  Ｐｏｓｔ  Ｏｆｆｉｃｅ（郵便局）」からの電子メールは、要素８８５に対応するラベル８８０（例えば、識別子「ｔｗｅｎｔｙ  ｓｅｖｅｎ（２７）」）を用いて参照することができる。
【００９０】
アプリケーションプログラムの将来の実行において、追加の電子メールが受信され、スパムメールボックス内で前述の電子メールの前に順序付けされている場合など、要素８８５のラベルが変更される可能性がある。
【００９１】
いくつかの例示的な実施形態では、画面８００および８００’は、両方の画面が同じプログラムアプリケーションであるにもかかわらず、デバイスの異なる状態の画面であってもよい。一例として、画面８００内に表される状態のレイアウトは、要素８１５，８４５，８２５のようなアプリケーションプログラムの異なる実行中に残る永続的な要素と、要素８３５のような異なる実行において変化し得る要素とを含むことができる。状態は、前者を使用し、後者を使用しないで定義することができる。状態は、アプリケーションプログラムのすべての異なる状態に現れる可能性のある要素８１５を含むことなく、またはアプリケーションプログラムのいくつかの状態において出現する可能性のある要素８４５を含むことなくなど、要素を定義するために使用できる要素のサブセットを使用して定義することができることに留意されたい。いくつかの例示的な実施形態では、ラベル割り当て順序において先行する要素の数に基づいて異なるラベルが割り当てられ得る「Ｃｏｍｐｏｓｅ（作成）」要素８９０など、異なる実行において異なる番号を付され得る要素を使用して画面８００’の状態を識別することができる。特に、割り当てられるラベルは、スパムメールボックス内の電子メールの数によって影響を受ける可能性がある。
【００９２】
いくつかの例示的な実施形態では、ラベルの視覚的指示は、動作シーケンスが使用可能であり、視覚的に指示された要素と対話することによって開始しているか否かを指示することができる。一例として、ラベル８６０は、ユーザが要素８６５に対する動作から始まる利用可能な動作シーケンスを有することをユーザに示すように、視覚的に提示されてもよい。動作シーケンスは、ユーザによって記録されているシーケンス、別のユーザによって記録され、ユーザにとってアクセス可能なシーケンスなどであってもよい。いくつかの実施形態では、視覚的指示は、ユーザによって定義されているシーケンスと、別のユーザによって定義され、ユーザによる実行のために利用可能なシーケンスとで異なってもよい。
【００９３】
いくつかの実施形態では、ユーザは、「ｏｐｅｒａｔｉｏｎ  ｔｗｏ（動作２）」と音声で指示するなどして、そのようなシーケンスの識別子を提供するようにシステムに問い合わせることができる。それに応答して、要素８６５に対する動作で開始する任意の動作シーケンスの使用可能な識別子を、合成発話を使用するなどして、ユーザに提供することができる。
【００９４】
場合によっては、ユーザは、「ｏｐｅｒａｔｉｏｎｓ（動作）」を音声で指示するなど、現在の画面で利用可能なすべてのシーケンスを識別するための指示を提供することができる。それに応答して、現在の画面に対する動作で開始する任意の動作シーケンスの使用可能な識別子を、ユーザに提供することができる。
【００９５】
ここで、本主題のいくつかの例示的な実施形態による、方法のフローチャート図を示す図４を参照する。
【００９６】
ステップ４１０において、ユーザとデバイスとの対話を監視することができる。いくつかの例示的な実施形態では、ユーザは、音声コマンドを使用して、タッチスクリーンを使用して、キーボードを使用して、または任意の他の入力デバイスを介してデバイスと対話することができる。いくつかの例示的な実施形態では、監視は、デバイスにインストールされた監視ソフトウェアによって実行されてもよい。いくつかの例示的な実施形態では、ユーザインターフェースの要素とのユーザ対話を監視して、それらの間に定義された順序を有する動作のセットを得ることができる。いくつかの例示的な実施形態では、動作のセットは、条件が満たされたときに完了するものとして決定されてもよい。一例として、約５秒、約２０秒などの所定の時間枠よりも短い時間内で先行する動作に後続する各ユーザ対話は、前の動作と同じセット内にあると考えることができる。付加的または代替的に、約５秒、約２０秒などのような所定の時間枠の間にユーザ対話がないことが検出されるまで、ユーザ対話を監視してセットに追加することができる。そのようなユーザ対話の欠如は、動作のセットが完了したことを決定するために使用され得る。追加のユーザ対話が新しいセットに追加される。
【００９７】
ステップ４２０において、監視されている動作のセットを、リポジトリに保持されている動作シーケンスと比較することができる。いくつかの例示的な実施形態では、比較はデバイス上でローカルに実行されてもよい。付加的または代替的に、セットは、分析のためにリポジトリにアクセスすることができるリモートサーバに送信されてもよい。いくつかの例示的な実施形態では、比較に基づいて、セットと同一の保持されている動作シーケンスが決定されてもよい。いくつかの例示的な実施形態では、保持されている動作シーケンスの使用統計が、図１のステップ１４０に関して実行されるように、監視されている実行に基づいて更新されてもよい。付加的または代替的に、同じ状態で開始し、同じ目標状態に達し、同じ集合内に含まれている同じ要素または類似の要素のいずれかに対して目標状態において同じユーザ対話を実行するシーケンスのような、実質的に類似の動作シーケンスを得ることができる。付加的にまたは代替的に、実質的に同様のシーケンスは、開始状態と目標状態との間に実行される動作間の相当の重なり（例えば、約７０％の重なり）を有するような同様の動作を含むことができる。
【００９８】
いくつかの例示的な実施形態では、識別されている動作シーケンスの識別子を取得することができる。いくつかの例示的な実施形態では、動作シーケンスは複数の識別子を有することができる。複数の識別子から識別子を選択することができる。いくつかの例示的な実施形態では、複数の識別子をロケール情報に基づいてフィルタリングして、コンピューティングデバイスのユーザによって使用される言語で識別子を提供することができる。付加的にまたは代替的に、識別子は、動作シーケンスを取り出すために使用される最も一般的な識別子、最も傾向の高い識別子などを選択するなどして、取り出し統計に基づいて選択することができる。
【００９９】
ステップ４３０で、ユーザは、ポップアップメッセージ、音響通知、プッシュ通知などを使用して、またはその他の方法で促され得、実施されたように、動作のセットを手動で動作させる代わりに、その識別子を将来において動作シーケンスを実行するために使用することができることを通知され得る。いくつかの例示的な実施形態では、識別子は、ユーザに選択肢の識別子を提供するように促すことによって、ユーザから取得することができる。
【０１００】
いくつかの例示的な実施形態では、ステップ４３０は、単一の動作よりも多い動作、４回以上の動作などのような、最小閾値を超える複数の動作を含む動作シーケンスに対して実行されてもよい。
【０１０１】
ここで、本主題のいくつかの例示的な実施形態による、方法のフローチャート図を示す図５を参照する。
【０１０２】
ステップ５１０において、デバイスは、外部スピーカなどを使用して、デバイスのスピーカを使用するなど、音響を再生することができる。音響は、デバイスのユーザが聞くことができる。
【０１０３】
ステップ５２０において、ユーザは、手を装置に向かって伸ばすことができる。デバイスは、近接センサ、運動センサなどを使用して、そのようなジェスチャを検出することができる。
【０１０４】
ステップ５３０で、デバイスは、再生されている音響を一時停止することができる。いくつかの例示的な実施形態では、デバイスは、Ｂｌｕｅｔｏｏｔｈ(登録商標)プロトコルを使用するなどして、無線でデバイスに接続されたカーラジオなどの、近接する他の可聴ソースの音量を下げることができる。
【０１０５】
いくつかの例示的な実施形態では、デバイスは音声認識機構を起動することができる。音響が一時停止してもはや聞こえなくなると、音声認識機構の動作を妨害する可能性がある背景音が少なくなる可能性があり得る。したがって、ユーザは、背景音に邪魔されることなく音声コマンドを提供することができる。
【０１０６】
ステップ５４０において、ユーザがデバイスに向かって手を伸ばすなどの、ユーザによる第２のジェスチャを検出することができる。いくつかの例示的な実施形態では、デバイスは、音声認識が動作している限り（例えば、ユーザが話している間、例えばユーザが、連続した音声コマンドを許容するために話すのを止めた後の約１０秒などの所定の時間枠内など）、第２のジェスチャを検出しようとしなくてもよい。
【０１０７】
ステップ５５０において、音響は、第２のジェスチャの検出に応答して再開することができる。
【０１０８】
いくつかの例示的な実施形態では、図５の方法は、ユーザが自身の車を運転している間に利用することができる。運転中に、ユーザは、デバイスとの相互作用を低減することを望む場合がある。手を伸ばすジェスチャは、ユーザによって実質的な精度を必要としないジェスチャであり得、したがって、例えば、ミュートボタンに手が届くよりも、車を運転する能力にあまり干渉しないジェスチャであり得る。
【０１０９】
ここで、本主題のいくつかの例示的な実施形態による、方法のフローチャート図を示す図６を参照する。
【０１１０】
ステップ６１０において、フリーテキストフィールドが、ユーザに表示されるＧＵＩのレイアウトの一部であると判定されてもよい。フリーテキストフィールドは、ユーザが文字列、複数行テキストなどのテキストを入力することを可能にすることができる。
【０１１１】
ステップ６２０において、ユーザによる発話を取得し、分析することができる。いくつかの例示的な実施形態では、音声認識モジュールを利用して、発話の音響を分析し、ステップ６３０においてそれに基づいてテキスト（例えば、文字列）を生成することができる。
【０１１２】
ステップ６４０において、テキストは、動作シーケンスのローカルまたはリモートリポジトリの動作シーケンスに関連付けられた識別子などの、動作シーケンスの識別子と比較することができる。いくつかの例示的な実施形態では、比較は、接続詞および他のあまり重要でない単語を省略すること、単語を正規化すること（例えば、性別に特有の文言を性的に中立なまたは所定の一般的な文言に変換すること、複数形を単数形に、またはその逆に変換するなど）などのような、テキスト分析をそのテキストに実行した後に実施されてもよい。
【０１１３】
一致が見つかった場合（ステップ６５０）、動作シーケンスを識別子に基づいて取り出すことができ、ユーザのデバイス上で実行することができる。そうでなければ、ステップ６６０を実行することができる。
【０１１４】
ステップ６６０において、フリーテキストフィールドにテキストを入力することができる。いくつかの例示的な実施形態では、いくつかのフリーテキストフィールドが存在してもよい。目標フリーテキストフィールドを選択することができる。いくつかの例示的な実施形態では、選択は、ユーザによる手動選択（例えば、音声選択、ポインティングデバイスを用いた選択など）、要素がＵＩ内のフォーカスされた要素であること、要素が、ＵＩ内のフォーカスされている要素に最も隣接するフリーテキスト入力要素であること、要素がＵＩ内で最も頻繁に使用されているフリーテキスト入力であること（例えば、ユーザ、ユーザに類似したプロファイルを有するユーザ、ユーザのグループなどの使用履歴に基づく）などに基づいてもよい。いくつかの例示的な実施形態では、生成されるテキストは、ステップ６４０で実行されたテキスト操作にかかわらず入力されてもよい。
【０１１５】
ステップ６７０において、テキスト−音声合成器を使用して、テキストに基づいて音響を合成することができる。
【０１１６】
ステップ６８０において、合成発話を、ユーザに聞こえるように再生することができる。いくつかの例示的な実施形態では、合成発話は、ステップ６２０の元の認識された発話とは異なる場合がある。いくつかの例示的な実施形態では、合成発話は、デバイスにボーカル入力されたコマンドの合成エコーを提供することができ、ユーザが発話−テキストメカニズムによって生成されたテキストを読む必要なしに、何が入力されたかをユーザが識別することを可能にする。
【０１１７】
ここで、本主題のいくつかの例示的な実施形態による、方法のフローチャート図を示す図７を参照する。
【０１１８】
ステップ７１０において、ユーザコマンドを取得することができる。ユーザコマンドは、メールアプリケーションの受信ボックスに到達するためにショートカットを利用するなど、所望の目標状態を示すコマンドであってもよい。いくつかの例示的な実施形態では、コマンドは、所望の状態へのユビキタスなショートカットを呼び出すことであってもよい。コマンドは、デバイスの任意の状態において適用可能であってもよく、その特定の開始状態に限定されない。ユーザコマンドは、音声コマンドまたは非音声コマンドであってもよい。
【０１１９】
ステップ７２０において、コンピューティングデバイスの現在の状態を判定することができる。状態は、例えば、ＵＩのレイアウト、および、そのようなレイアウトの保持されているレイアウトに対する比較に基づいて決定することができる。いくつかの例示的な実施形態では、現在の状態の識別は、ＵＩ要素（例えば、チェックボックス、クリック可能オブジェクトなどのインタラクティブＵＩ要素、画像、表示テキストなどのような非インタラクティブＵＩ要素）の一意かつ永続的な識別子を必要とし得、この識別子は、将来の実行において、および、同じソフトウェアが、異なるユーザのデバイスのような別のデバイス上で実行されるときに、同じままである。識別子は、表示ラベル（例えば、チェックボックスに近いテキスト、ボタン上の画像など）に基づいてもよい。付加的または代替的に、識別子は、表示ラベルが経時的に変化し得る、異なるユーザに対して異なり得るなど、表示ラベルに基づいていなくてもよい。
【０１２０】
ステップ７３０において、現在の状態から目標の状態に状態を変更するように構成された動作シーケンスを得ることができる。動作シーケンスは、リポジトリから取り出すことができる。付加的または代替的に、動作シーケンスは、リポジトリに保持されている２つ以上の動作シーケンス（またはその一部）を融合することによって生成されてもよい。
【０１２１】
いくつかの例示的な実施形態では、遷移グラフを決定することができる。遷移グラフは、どの動作シーケンス（またはその一部）がある状態から別の状態に切り替えるために使用され得るかを示し得る。遷移グラフは、ノードおよびエッジを含むことができる。遷移グラフ内のノードは、コンピューティングデバイス内の状態に対応することができる。ソースノードと宛先ノードとの間を接続する遷移グラフの有向エッジは、ソースノードに対応する状態において適用可能であり、コンピューティングデバイスの状態を、宛先ノードに対応する状態に変更するように構成された、保持されている動作シーケンスまたはその一部に対応することができる。いくつかの例示的な実施形態では、グラフの重み付けを行うことができ、エッジの重みは、シーケンス動作の実行に成功する可能性を示すことができる。
【０１２２】
いくつかの例示的な実施形態では、遷移グラフを分析して（７３２）、現在の状態から目標状態へのパスを決定することができる。パスは、１つまたは複数のシーケンス動作またはその一部を使用して状態を現在の状態から目標状態に変更するために実行される連続する動作のセットを含む合成動作シーケンスを示すことができる。いくつかの例示的な実施形態では、パスは、複数の代替パスの間で選択されてもよい。この選択は、対応する合成動作シーケンスの実行に成功する可能性に基づくことができる。いくつかの例示的な実施形態では、選択は、最高累積スコアを有するパスを選択することによって実行されてもよく、累積スコアは、パス内のエッジのスコアに基づいてもよい。付加的にまたは代替的に、累積スコアは、各追加動作についてスコアを減少させることなど、合成動作シーケンスに含まれる複数の動作によって影響され得る。
【０１２３】
いくつかの例示的な実施形態では、動作シーケンスは、２つ以上の動作シーケンスを融合することによって合成されてもよい（７３４）。
【０１２４】
いくつかの例示的な実施形態では、第１の保持されている動作シーケンスの一部および第２の保持されている動作シーケンスの一部を識別することができる。第１の保持されている動作シーケンスの一部は、最初に順序付けされている動作および最後に順序付けされている動作を有することができる。最初に順序付けされている動作は、現在の状態において適用可能であり、最後に順序付けされている動作は、コンピューティングデバイスの状態を中間状態に変更するように構成され得る。第２の保持されている動作シーケンスの一部は、最初に順序付けされている動作および最後に順序付けされている動作を有することができる。最初に順序付けされている動作は、中間状態において適用可能であり得る。いくつかの例示的な実施形態では、第２の保持されている動作シーケンスの一部の最後に順序付けされている動作は、目標状態に達するように構成されてもよい。付加的または代替的に、最後に順序付けされている動作は、第２の中間状態に達するように構成されてもよく、その後、１つまたは複数の追加の動作シーケンスが融合されて目標状態に到達してもよい。
【０１２５】
いくつかの例示的な実施形態では、合成動作シーケンスは、順序付けされている動作シーケンス（またはその一部）のセットに基づくことができる。いくつかの例示的な実施形態では、連続した動作が同じ状態のままであり得る場合でも、目標状態に到達する、順序付けされている動作シーケンスのセット内の最初の動作は、合成された動作シーケンスの最後に順序付けされた動作であり得る。そのようなカットオフは、合成動作シーケンスにおける動作の数を減らし、実行に成功する可能性を高め、冗長動作を実行することなく目標状態に達する効率を高めるのに有用であり得る。
【０１２６】
ステップ７４０において、合成動作シーケンスが実行され、それにより、ユーザによって示されるように、コンピューティングデバイスの状態が変化する。
【０１２７】
ここで、本開示の主題のいくつかの例示的な実施形態による、システムのブロック図を示す図９を参照する。
【０１２８】
コンピューティングデバイス９００は、すべて本開示の主題に従って、新しい動作シーケンスの記録、既存の動作シーケンスの実行、ＧＵＩ修正などを提供するように構成することができる。
【０１２９】
いくつかの例示的な実施形態では、コンピューティングデバイス９００は、プロセッサ９０２を備えることができる。プロセッサ９０２は、中央処理装置（ＣＰＵ）、マイクロプロセッサ、電子回路、集積回路（ＩＣ）などであってもよい。プロセッサ９０２は、コンピューティングデバイス９００またはそのいずれかのサブコンポーネントによって要求される計算を実行するために利用されてもよい。
【０１３０】
本開示の主題のいくつかの例示的な実施形態では、コンピューティングデバイス９００は、入出力（Ｉ／Ｏ）モジュール９０５を備えることができる。Ｉ／Ｏモジュール９０５は、ユーザに出力を提供し、ユーザから入力を受信するために利用されてもよい。いくつかの例示的な実施形態では、Ｉ／Ｏモジュール９０５を使用して、スピーカ、ヘッドセットなどを介して、ユーザに対する音響を再生することができる。いくつかの例示的な実施形態では、Ｉ／Ｏモジュール９０５を使用して、例えば、スクリーンディスプレイを使用して、ユーザに表示を提供することができる。いくつかの例示的な実施形態では、Ｉ／Ｏモジュール９０５を使用して、マイクロフォンによる音声コマンド、タッチスクリーン、ポインティングデバイス、キーボードなどの入力デバイスを使用するコマンドなどのユーザコマンドを受信することができる。一部の例示的な実施形態では、Ｉ／Ｏモジュール９０５は、サーバ９１０と通信するように構成することができる。
【０１３１】
いくつかの例示的な実施形態では、コンピューティングデバイス９００は、メモリ９０７を備えることができる。メモリ９０７は、ハードディスクドライブ、フラッシュディスク、ランダムアクセスメモリ（ＲＡＭ）、メモリチップなどであってもよい。いくつかの例示的な実施形態では、メモリ９０７は、プロセッサ９０２にコンピューティングデバイス９００のサブコンポーネントのいずれかに関連する動作を実行させるように動作するプログラムコードを保持することができる。
【０１３２】
メモリ９０７は、動作シーケンスプレーヤ９２０を備えることができる。動作シーケンスプレーヤ９２０は、動作シーケンスを実行するように構成することができる。動作シーケンスは、サーバ９１０または別のソースから取得できる。いくつかの実施形態では、動作シーケンスは、ローカルリポジトリにローカルに保持することができ、ローカルリポジトリは、コンピューティングデバイス９００および／またはその１人以上のユーザにアクセス可能なリモートリポジトリの一部を反映するように定期的に更新されてもよく、またはされなくてもよい。
【０１３３】
メモリ９０７は、状態決定器９２４を備えることができる。状態決定器９２４は、コンピューティングデバイス９００の状態を決定するように構成することができる。状態は、作動中であり、コンピューティングデバイス９００のディスプレイのフォアグラウンドにある、実行されているアプリケーションプログラムに基づいて決定することができる。付加的にまたは代替的に、状態は、コンピューティングデバイス９００のディスプレイに提示されたＧＵＩのレイアウトを分析することによって決定されてもよい。決定された状態は、ある状態から別の状態への遷移を可能にするために使用することができる。いくつかの例示的な実施形態では、動作シーケンスの実行の完了を可能にするために、動作シーケンスプレーヤ９２０によってある状態から別の状態への遷移を実行することができる。付加的にまたは代替的に、ユーザは、選択された目標状態に転送されることを要求することができる。現在の状態は、指示されたように状態を変更するために動作シーケンスがそこから実行されるべき現在の状態を識別するために、状態決定器９２４によって決定することができる。
【０１３４】
メモリ９０７は、動作シーケンスレコーダ９３２を備えることができる。動作シーケンスレコーダ９３２は、動作シーケンスを記録するように構成することができる。いくつかの実施形態では、記録は、ユーザによる明示的な先験的命令に基づいて、ユーザによる明示的な事後命令に基づいて、または暗黙的にかつユーザ命令に基づくことなく、実行されてもよい。いくつかの例示的な実施形態では、動作シーケンスレコーダ９３２は、コンピューティングデバイス９００のＧＵＩの要素との任意のユーザ対話の実行を監視することができる。いくつかの例示的な実施形態では、動作シーケンスレコーダ９３２は、各記録された動作における状態を判定するために状態決定器９２４を利用することができる。いくつかの例示的な実施形態では、動作シーケンスレコーダ９３２は、そのような各シーケンスの使用統計を収集するように、動作シーケンスの実行を監視することができる。使用統計は、コンピューティングデバイス９００上にローカルに保持されてもよいし、または、サーバ９１０などのサーバに送信されてもよい。
【０１３５】
メモリ９０７は、ＧＵＩ音声エクステンダ９３６を備えることができる。ＧＵＩ音声エクステンダ９３６は、本開示の主題に従って音声命令を可能にするようにＧＵＩを修正するように構成されてもよい。ＧＵＩ音声エクステンダ９３６は、ＧＵＩの各要素にレイアウト固有の識別子を割り当てるように構成することができ、これによりユーザは要素を音声で参照することができる。ＧＵＩ音声エクステンダ９３６は、発話を分析して、提供される音声コマンドが動作シーケンスを実行するためのコマンドであるか、新しい動作シーケンスを記録するためのコマンドであるか、コンピューティングデバイス９００の状態を目標状態に変更するためのコマンドであるか、ＧＵＩ要素と対話するためのコマンドであるか、ＧＵＩ要素の内容を読み上げるためのコマンドであるかなどを判定するように構成することができる。いくつかの例示的な実施形態では、ＧＵＩ音声エクステンダ９３６は、受信した音声命令をユーザにエコーするように構成することができ、これにより、ユーザは、コンピューティングデバイス９００が音声コマンドをどのように解釈したかを知ることができる。いくつかの例示的な実施形態では、動作シーケンスレコーダ９３２によってＧＵＩ音声エクステンダ９３６を利用して、動作シーケンスに記録されるべき動作の指示を受信することができる。
【０１３６】
サーバ９１０は、動作シーケンスを保持し、シーケンスをコンピューティングデバイス９００などのデバイスによって利用可能にするように構成することができる。サーバ９１０は、コンピューティングデバイス９００と同様に、プロセッサ（図示せず）、メモリ（図示せず）およびＩ／Ｏモジュール（図示せず）を備えることができる。
【０１３７】
サーバ９１０は、コンピューティングデバイス９００などの複数のコンピューティングデバイスから更新することができ、それによって複数のソースからの情報を集約する。
【０１３８】
サーバ９１０は、動作シーケンスリポジトリ９１２を備えることができる。動作シーケンスリポジトリ９１２は、動作シーケンスを保持するリポジトリであってもよい。いくつかの例示的な実施形態では、動作シーケンスリポジトリ９１２は、各動作シーケンスのための１つまたは複数の割り当てられた識別子を含むことができる。いくつかの例示的な実施形態では、動作シーケンスリポジトリ９１２は、（１つまたは複数の）コンピューティングデバイス９００から提供される監視情報に基づくなどして、各動作シーケンスの使用統計を保持することができる。
【０１３９】
サーバ９１０は、データ分析器９１４を備えることができる。データ分析器９１４は、動作シーケンスリポジトリ９１２内のデータを分析するように構成することができる。いくつかの例示的な実施形態では、データ分析器９１４は、（任意選択で、言語またはロケール情報に基づいて）シーケンス当たりの最も一般的な識別子を判定し、ユーザ定義シーケンスが他のユーザによる使用のために安全であるか否かを決定し、ユーザ定義シーケンスを他のユーザにとって利用可能にするか、または、いずれのユーザグループにとって利用可能にするかを決定し、シーケンスが悪意のあるシーケンスである可能性、シーケンスの実行が失敗する確率が高いこと等に基づいて、利用可能なシーケンスが利用不可能になるべきか否かを判定するなどのために、使用統計を分析するように構成することができる。
【０１４０】
本発明は、システム、方法、および／またはコンピュータプログラム製品であってもよい。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含むことができる。
【０１４１】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持し記憶することができる有形デバイスであってもよい。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、またはこれらの任意の適切な組み合わせであり得るが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非包括的なリストは、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラマブル読み出し専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ポータブルコンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリスティック、フロッピー（登録商標）ディスク、パンチカードまたは命令を記録されている溝内の隆起構造のような機械的に符号化されたデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書で使用されるコンピュータ可読記憶媒体は、無線波または他の自由に伝播する電磁波、導波管または他の伝送媒体を通って伝播する電磁波（例えば、光ファイバケーブルを通過する光パルス）、またはワイヤを介して伝送される電気信号などの一時的な信号自体であると解釈されるべきではない。
【０１４２】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスに、または、ネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワークおよび／またはワイヤレスネットワークを介して外部コンピュータまたは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータおよび／またはエッジサーバを含んでもよい。各コンピューティング／処理デバイス内のネットワークアダプタカードまたはネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体に記憶するためにコンピュータ可読プログラム命令を転送する。
【０１４３】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、１つまたは複数のプログラミング言語の任意の組み合わせで書かれたソースコードまたはオブジェクトコードのいずれかであってもよい。コンピュータ可読プログラム命令は全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、独立したソフトウェアパッケージとして、部分的にユーザのコンピュータ上かつ部分的にリモートコンピュータ上で、または、全体的にリモートコンピュータまたはサーバ上で実行することができる。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク（ＬＡＮ）またはワイドエリアネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または、接続は、外部コンピュータに対してなされてもよい（例えば、インターネットサービスプロバイダを使用してインターネットを介して）。いくつかの実施形態では、例えばプログラマブル論理回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、またはプログラマブル論理アレイ（ＰＬＡ）を含む電子回路が、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、電子回路をパーソナライズすることができる。
【０１４４】
本発明の態様は、本明細書において、本発明の実施形態による方法、装置（システム）、およびコンピュータプログラム製品のフローチャート図および／またはブロック図を参照して説明される。フローチャート図および／またはブロック図の各ブロック、ならびにフローチャート図および／またはブロック図のブロックの組み合わせは、コンピュータ可読プログラム命令によって実施できることが理解されよう。
【０１４５】
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されて、機械を生成することができ、それによって、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行する命令は、フローチャートおよび／またはブロック図の１つまたは複数のブロックで指定された機能／動作を実施するための手段を作成する。これらのコンピュータ可読プログラム命令は、コンピュータ、プログラム可能データ処理装置、および／または他のデバイスに、特定の様式で機能するように指示することができるコンピュータ可読記憶媒体に記憶することもでき、それによって、命令を記憶されているコンピュータ可読記憶媒体は、フローチャートおよび／またはブロック図の１つまたは複数のブロックにおいて指定された機能／動作の態様を実施する命令を含む製品を含む。
【０１４６】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされて、コンピュータ、他のプログラム可能装置または他のデバイス上で一連の動作ステップが実行されるようにすることもでき、それによって、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行する命令は、フローチャートおよび／またはブロック図の１つまたは複数のブロックにおいて指定された機能／動作を実施する。
【０１４７】
図面のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品の可能な実施態様のアーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能を実施するための１つまたは複数の実行可能命令を含むモジュール、セグメント、または命令の一部を表すことができる。いくつかの代替的な実施形態では、ブロックに記されている機能は、図に示された順序から外れて行われてもよい。例えば、連続して示される２つのブロックは、実際には実質的に同時に実行されてもよく、または、関連する機能に応じてブロックは時として逆の順序で実行されてもよい。また、ブロック図および／またはフローチャート図の各ブロック、ならびにブロック図および／またはフローチャート図のブロックの組み合わせは、特定の機能もしくは動作を実施し、または、専用ハードウェアとコンピュータ命令との組み合わせを実行する専用のハードウェアベースのシステムによって実施することができる。
【０１４８】
本明細書で使用する用語は、特定の実施形態を説明するためのものにすぎず、本発明を限定するものではない。本明細書で使用される場合、単数形「１つの（ａ、ａｎ）」および「この（ｔｈｅ）」は、文脈がそうでないことを明確に示さない限り、複数形も含むことが意図される。本明細書で使用される場合、用語「備える（ｃｏｍｐｒｉｓｅｓ）」および／または「備えている（ｃｏｍｐｒｉｓｉｎｇ）」は、記載された特徴、整数、ステップ、動作、要素および／または構成要素の存在を特定するが、１つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および／またはそれらのグループの存在または追加を除外しないことがさらに理解されよう。
【０１４９】
添付の特許請求の範囲内のすべてのミーンズプラスファンクション要素またはステッププラスファンクション要素の対応する構造、材料、動作、および均等物は、他の特許請求されている要素と組み合わせて機能を実施するための任意の構造、材料、または動作を、具体的に特許請求されているように含むように意図されている。本発明の説明は、例示および説明のために提示されているが、網羅的であること、または開示されている形態の本発明に限定されるようには意図されていない。本発明の範囲および精神から逸脱することなく、多くの変更および変形が当業者には明らかであろう。この実施形態は、本発明の原理および実際の適用を最もよく説明し、当業者が、意図される特定の用途に適した様々な変更を伴う様々な実施形態について本発明を理解できるように選択され、記載されている。
【図１】
2018537795.tif 000003
【図２Ａ】
2018537795.tif 000004
【図２Ｂ】
2018537795.tif 000005
【図２Ｃ】
2018537795.tif 000006
【図３】
2018537795.tif 000007
【図４】
2018537795.tif 000008
【図５】
2018537795.tif 000009
【図６】
2018537795.tif 000010
【図７】
2018537795.tif 000011
【図８Ａ】
2018537795.tif 000012
【図８Ｂ】
2018537795.tif 000013
【図９】
2018537795.tif 000014
【国際調査報告】
2018537795.tif 000015
2018537795.tif 000016