特許第6850805号(P6850805)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ウォークミー リミテッドの特許一覧

特許6850805コンピューティングデバイスにおけるユーザ対話動作の自動実行
<>
  • 特許6850805-コンピューティングデバイスにおけるユーザ対話動作の自動実行 図000002
  • 特許6850805-コンピューティングデバイスにおけるユーザ対話動作の自動実行 図000003
  • 特許6850805-コンピューティングデバイスにおけるユーザ対話動作の自動実行 図000004
  • 特許6850805-コンピューティングデバイスにおけるユーザ対話動作の自動実行 図000005
  • 特許6850805-コンピューティングデバイスにおけるユーザ対話動作の自動実行 図000006
  • 特許6850805-コンピューティングデバイスにおけるユーザ対話動作の自動実行 図000007
  • 特許6850805-コンピューティングデバイスにおけるユーザ対話動作の自動実行 図000008
  • 特許6850805-コンピューティングデバイスにおけるユーザ対話動作の自動実行 図000009
  • 特許6850805-コンピューティングデバイスにおけるユーザ対話動作の自動実行 図000010
  • 特許6850805-コンピューティングデバイスにおけるユーザ対話動作の自動実行 図000011
  • 特許6850805-コンピューティングデバイスにおけるユーザ対話動作の自動実行 図000012
  • 特許6850805-コンピューティングデバイスにおけるユーザ対話動作の自動実行 図000013
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6850805
(24)【登録日】2021年3月10日
(45)【発行日】2021年3月31日
(54)【発明の名称】コンピューティングデバイスにおけるユーザ対話動作の自動実行
(51)【国際特許分類】
   G06F 3/048 20130101AFI20210322BHJP
   G06F 3/16 20060101ALI20210322BHJP
   G06F 3/01 20060101ALI20210322BHJP
【FI】
   G06F3/048
   G06F3/16 630
   G06F3/16 650
   G06F3/01 570
【請求項の数】45
【全頁数】37
(21)【出願番号】特願2018-534206(P2018-534206)
(86)(22)【出願日】2016年9月5日
(65)【公表番号】特表2018-537795(P2018-537795A)
(43)【公表日】2018年12月20日
(86)【国際出願番号】IL2016050977
(87)【国際公開番号】WO2017051406
(87)【国際公開日】20170330
【審査請求日】2019年6月19日
(31)【優先権主張番号】14/860,733
(32)【優先日】2015年9月22日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】518186779
【氏名又は名称】ウォークミー リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】特許業務法人浅村特許事務所
(72)【発明者】
【氏名】ゾーハル、ロン
(72)【発明者】
【氏名】シェメール、モラン
【審査官】 ▲高▼瀬 健太郎
(56)【参考文献】
【文献】 米国特許出願公開第2014/0267933(US,A1)
【文献】 米国特許出願公開第2013/0297319(US,A1)
【文献】 米国特許出願公開第2015/0213799(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/048
G06F 3/01
G06F 3/16
(57)【特許請求の範囲】
【請求項1】
ユーザによって動作させられるコンピューティングデバイスによって実行されるコンピュータ実施方法であって、前記コンピュータ実施方法は、
1つまたは複数の動作を含む動作シーケンスの識別子を取得するステップであって、各動作は、コンピューティングデバイスを動作させるためのユーザインターフェースの要素とのユーザ対話を表す、取得するステップと、
前記識別子を使用して動作シーケンスのリポジトリを検索して、前記動作シーケンスを取得することを含む、前記動作シーケンスを取得するステップであり、前記動作シーケンスのリポジトリは、前記ユーザ以外の別のユーザのための、前記コンピューティングデバイス以外の別のコンピューティングデバイスによる1つまたは複数の動作の前回の実行に基づいて定義される動作シーケンスを含む、取得するステップと、
前記動作シーケンスまたは前記動作シーケンスの一部を前記コンピューティングデバイス上で自動的に実行するステップと
を含む、コンピュータ実施方法。
【請求項2】
前記識別子を取得するステップは、前記ユーザの音声コマンドを取得するステップと、前記音声コマンドから前記識別子を抽出するステップとを含み、前記リポジトリは、他のユーザから得られる音声コマンドから識別子が抽出された動作シーケンスを含む、請求項1に記載のコンピュータ実施方法。
【請求項3】
前記自動的に実行するステップは、
現在の動作を実行するために必要な前記要素が、前記コンピューティングデバイスの現在の状態においてユーザ対話のために利用不可能であるという決定に応答して、
中間動作シーケンスを取得するステップであって、前記中間動作シーケンスは、1つまたは複数の動作を含み、各動作は、前記コンピューティングデバイスを動作させるための前記ユーザインターフェースの要素とのユーザ対話を表し、前記中間動作シーケンスは、前記コンピューティングデバイスに、前記現在の状態から前記コンピューティングデバイスの目標状態へと切り替えさせるように構成されており、前記目標状態では、前記要素はユーザ対話に利用可能である、取得するステップと、
前記コンピューティングデバイスに、前記現在の状態から前記目標状態に切り替えさせるために、前記中間動作シーケンスまたは前記中間動作シーケンスの一部を実行するステップであって、結果、前記現在の動作の自動実行を可能にする、実行するステップと
を含む、請求項1に記載のコンピュータ実施方法。
【請求項4】
前記中間動作シーケンスを取得する前記ステップは、複数の代替的な中間動作シーケンスの間で選択するステップを含み、前記中間動作シーケンスの各々は、前記コンピューティングデバイスに、前記現在の状態から前記コンピューティングデバイスの目標状態に切り替えさせるように構成されており、前記選択は、各代替的な中間動作シーケンスのスコアに基づいており、前記スコアの各々は、対応する代替的な中間動作シーケンスの実行に成功する可能性を示す、請求項3に記載のコンピュータ実施方法。
【請求項5】
前記動作シーケンスの実行が自動的に完了できないという決定に応答して、前記動作シーケンスの実行を完了するように前記コンピューティングデバイスのユーザに促すステップと、
中間動作シーケンスを決定するために前記ユーザの動作を監視するステップと、
将来の使用のために前記中間動作シーケンスを記憶するステップと
をさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項6】
前記動作シーケンスは、アプリケーションプログラムとのユーザ対話を表す動作を含み、
前記動作シーケンスを自動的に実行する前記ステップは、前記アプリケーションプログラムが前記コンピューティングデバイスにインストールされているか否かを判定するステップを含む、請求項1に記載のコンピュータ実施方法。
【請求項7】
前記アプリケーションプログラムが前記コンピューティングデバイスにインストールされていないという決定に応答して、前記アプリケーションプログラムをダウンロードするシーケンスの実行をアクティブにするように前記ユーザに促す、請求項6に記載のコンピュータ実施方法。
【請求項8】
前記動作シーケンスのリポジトリは、複数のユーザのコンピューティングデバイスによってアクセス可能な共有リポジトリである、請求項1に記載のコンピュータ実施方法。
【請求項9】
前記識別子はパラメータを含み、前記動作シーケンスは前記パラメータに対して指定される値に基づいて修正される、請求項1に記載のコンピュータ実施方法。
【請求項10】
前記コンピューティングデバイスの状態を目標状態に変更するためのユーザコマンドを取得するステップと、
前記コンピューティングデバイスの現在の状態を決定するステップと、
前記リポジトリ内の1つまたは複数の保持されている動作シーケンスに基づいて、前記動作シーケンスを決定するステップとをさらに含み、前記動作シーケンスは、前記コンピューティングデバイスの前記状態を前記現在の状態から前記目標状態に変更するように構成されている、請求項1に記載のコンピュータ実施方法。
【請求項11】
前記動作シーケンスを決定するステップは、第1の保持されている動作シーケンスの一部を識別するステップであって、前記第1の保持されている動作シーケンスの前記一部内の最初に順序付けされている動作が現在の状態に適用可能であり、前記第1の保持されている動作シーケンスの前記一部内の最後に順序付けられている動作が、前記コンピューティングデバイスの前記状態を中間状態に変更するように構成されている、識別するステップと、
第2の保持されている動作シーケンスの一部を識別するステップであって、前記第2の保持されている動作シーケンスの前記一部内の最初に順序付けられている動作は前記中間状態に適用可能である、識別するステップと、
前記第2の保持されている動作シーケンスの前記一部が後続する前記第1の保持されている動作シーケンスの前記一部を含むように前記動作シーケンスを決定するステップと
を含む、請求項10に記載のコンピュータ実施方法。
【請求項12】
前記動作シーケンスを決定するステップは、
ノードおよびエッジを含むグラフを取得するステップであって、前記グラフ内のノードは、前記コンピューティングデバイス内の状態に対応し、前記グラフ内のエッジは、ソースノードに対応する状態で適用可能であり、前記コンピューティングデバイスの前記状態を宛先ノードに対応する状態に変化させるように構成された、保持されている動作シーケンスに対応する、取得するステップと、
前記現在の状態に対応するノードから前記目標状態に対応するノードへのパスを決定するために前記グラフを分析するステップと、
前記パス内のエッジに対応する前記保持されている動作シーケンスに基づいて前記動作シーケンスを生成するステップと
を含む、請求項10に記載のコンピュータ実施方法。
【請求項13】
前記リポジトリは、記録されている動作シーケンスを含み、前記記録されている動作シーケンスは、前記記録されている動作シーケンスがユーザによって実行されている間に記録され、前記記録されている動作シーケンスの識別子は該ユーザによって提供される、請求項1に記載のコンピュータ実施方法。
【請求項14】
前記リポジトリは、前記動作シーケンスに対して、複数の異なる識別子を保持し、前記複数の異なる識別子の少なくとも一部の各識別子は、異なるユーザによる前記動作シーケンスの実行に基づいて定義される、請求項1に記載のコンピュータ実施方法。
【請求項15】
前記リポジトリは、前記ユーザの前記コンピューティングデバイスにアクセス可能なユーザ定義の動作シーケンスを含み、前記ユーザ定義の動作シーケンスは、複数の異なるユーザによって独立して実行される動作シーケンスである、請求項1に記載のコンピュータ実施方法。
【請求項16】
前記動作シーケンスまたは前記動作シーケンスの一部を前記コンピューティングデバイス上で自動的に実行する前記ステップが、
前記ユーザ対話を隠すための表示を表示するステップであって、結果、前記ユーザ対話が実行される前記ユーザインターフェースの1つまたは複数の要素の少なくとも一部が、前記動作シーケンスまたは前記動作シーケンスの一部を前記コンピューティングデバイス上で自動的に実行する間は前記ユーザに見えない、表示するステップを含む、請求項1に記載のコンピュータ実施方法。
【請求項17】
コンピュータ実施方法であって、
コンピューティングデバイスによって表示されるグラフィカルユーザインターフェース(GUI)のレイアウト内の1つまたは複数のインタラクティブ要素を決定するステップと、
前記1つまたは複数のインタラクティブ要素の各々にラベルを割り当てるステップであって、前記ラベルは前記レイアウト内で一意である、割り当てるステップと、
前記割り当てられたラベルを、前記1つまたは複数のインタラクティブ要素の各々に視覚的に近接して表示するステップと、
選択要素に割り当てられた前記ラベルを参照することによって、前記1つまたは複数のインタラクティブ要素のうちの前記選択要素を口頭で示すユーザによる発話を認識するステップと、
前記選択要素に対してユーザ対話動作を自動的に実行するステップと
を含む、コンピュータ実施方法。
【請求項18】
1つまたは複数のユーザ対話動作を含む動作シーケンスに含めるべき前記選択要素に対する前記ユーザ対話動作を記録するステップをさらに含む、請求項17に記載のコンピュータ実施方法。
【請求項19】
前記動作シーケンスを識別子と関連付けるステップをさらに含み、前記動作シーケンスは、前記識別子を使用して取り出し可能である、請求項18に記載のコンピュータ実施方法。
【請求項20】
前記識別子は、第2の動作シーケンスの記録中に前記動作シーケンスを取り出すために使用され、結果、前記第2の動作シーケンスが前記動作シーケンスを組み込む、請求項19に記載のコンピュータ実施方法。
【請求項21】
前記動作シーケンスの記録中に前記グラフィカルユーザインターフェースによって表示され、前記識別子の一部によって参照される集合から選択されているアイテムを自動的に識別するステップと、
前記識別子の前記一部をパラメータとして指定するステップであって、結果、前記集合からの異なるアイテムへの参照によって前記一部を置換しながら前記識別子を使用して前記動作シーケンスを取り出すことによって、前記動作シーケンスを実行するときに前記集合から前記異なるアイテムが選択される、指定するステップと
をさらに含む、請求項19に記載のコンピュータ実施方法。
【請求項22】
コンピューティングデバイスの複数のユーザの間で前記動作シーケンスを共有するステップをさらに含む、請求項18に記載のコンピュータ実施方法。
【請求項23】
前記動作シーケンスに関する使用統計を収集するステップをさらに含み、前記共有するステップは、前記使用統計によって基準が満たされることに応じて選択的に実行される、請求項22に記載のコンピュータ実施方法。
【請求項24】
前記コンピューティングデバイスのユーザによる前記動作シーケンスの反復実行を自動的に識別するステップと、
前記ユーザに、前記動作シーケンスの関連付けおよび取り出しを可能にする識別子を入力するよう促すステップと
をさらに含む、請求項18に記載のコンピュータ実施方法。
【請求項25】
前記コンピューティングデバイスは、近接センサを備え、
前記コンピューティングデバイスは、音響を再生するように構成され、
前記コンピュータ実施方法は、
前記近接センサに向かうユーザの手の第1の伸長を識別することに応答して、前記音響が一時停止され、音声認識を実行するように前記音声認識が起動され、
近接センサに向かうユーザの手の第2の伸長の識別に応答して、音響が再開され、音声認識が停止されることをさらに含む、請求項17に記載のコンピュータ実施方法。
【請求項26】
前記1つまたは複数のインタラクティブ要素のうちの要素が、前記要素に対する動作が、前記ユーザによって使用されるために利用可能な事前記録動作シーケンスの最初の動作である要素であるという決定に応答して、前記グラフィカルユーザインターフェースに、前記要素に関連する視覚的指示を表示するステップをさらに含む、請求項17に記載のコンピュータ実施方法。
【請求項27】
前記コンピューティングデバイスによって表示される前記グラフィカルユーザインターフェースの前記レイアウト内の前記1つまたは複数のインタラクティブ要素がフリーテキスト入力要素を含むと判定するステップと、
前記ユーザから発話の音響を取得するステップと、
前記発話を所定の音声コマンドの識別子と比較して、前記発話がいずれの前記識別子にも一致しないことを決定するステップと、
前記発話がいずれの前記識別子とも一致しないとの判定に応答して、前記発話をテキストに変換し、前記フリーテキスト入力要素に前記テキストを入力するステップと
をさらに含む、請求項17に記載のコンピュータ実施方法。
【請求項28】
前記テキストを合成発話に変換するステップと、
前記ユーザが前記合成発話を聞くことができるように、前記合成発話を再生するステップと
をさらに含む、請求項27に記載のコンピュータ実施方法。
【請求項29】
前記コンピューティングデバイスの前記ユーザによって実行される動作シーケンスが、動作シーケンスのリポジトリ内の動作シーケンスと同一であることを自動的に識別するステップであって、前記動作シーケンスは、前記選択要素に対する前記ユーザ対話動作を含む、1つまたは複数のユーザ対話動作を含む、識別するステップと、
前記動作シーケンスの識別子を取得するステップであって、前記識別子は、前記動作シーケンスのリポジトリから前記動作シーケンスを取り出すために有用である、取得するステップと、
前記ユーザに、将来において前記識別子を使用して前記動作シーケンスを実行するように促すステップと
をさらに含む、請求項17に記載のコンピュータ実施方法。
【請求項30】
プロセッサを有するコンピュータ装置であって、前記プロセッサは、
1つまたは複数の動作を含む動作シーケンスの識別子を取得するステップであって、各動作は、コンピューティングデバイスを動作させるためのユーザインターフェースの要素とのユーザ対話を表す、取得するステップと、
前記識別子を使用して動作シーケンスのリポジトリを検索して、前記動作シーケンスを取得することを含む、前記動作シーケンスを取得するステップであり、前記動作シーケンスのリポジトリは、前記コンピューティングデバイスを利用するユーザとは別のユーザのための、前記コンピューティングデバイス以外の別のコンピューティングデバイスによる1つまたは複数の動作の前回の実行に基づいて定義される動作シーケンスを含む、取得するステップと、
前記動作シーケンスまたは前記動作シーケンスの一部を前記コンピューティングデバイス上で自動的に実行するステップと
を実行するように適合されている、コンピュータ装置。
【請求項31】
前記識別子を取得するステップは、前記ユーザの音声コマンドを取得するステップと、前記音声コマンドから前記識別子を抽出するステップとを含み、前記リポジトリは、他のユーザから得られる音声コマンドから識別子が抽出された動作シーケンスを含む、請求項30に記載のコンピュータ装置。
【請求項32】
前記自動的に実行するステップは、
現在の動作を実行するために必要な前記要素が、前記コンピューティングデバイスの現在の状態においてユーザ対話のために利用不可能であるという決定に応答して、
中間動作シーケンスを取得するステップであって、前記中間動作シーケンスは、1つまたは複数の動作を含み、各動作は、前記コンピューティングデバイスを動作させるための前記ユーザインターフェースの要素とのユーザ対話を表し、前記中間動作シーケンスは、前記コンピューティングデバイスに、前記現在の状態から前記コンピューティングデバイスの目標状態へと切り替えさせるように構成されており、前記目標状態では、前記要素はユーザ対話に利用可能である、取得するステップと、
前記コンピューティングデバイスに、前記現在の状態から前記目標状態に切り替えさせるために、前記中間動作シーケンスまたは前記中間動作シーケンスの一部を実行するステップであって、結果、前記現在の動作の自動実行を可能にする、実行するステップと
を含む、請求項30に記載のコンピュータ装置。
【請求項33】
前記中間動作シーケンスを取得する前記ステップは、複数の代替的な中間動作シーケンスの間で選択するステップを含み、前記中間動作シーケンスの各々は、前記コンピューティングデバイスに、前記現在の状態から前記コンピューティングデバイスの目標状態に切り替えさせるように構成されており、前記選択は、各代替的な中間動作シーケンスのスコアに基づいており、前記スコアの各々は、対応する代替的な中間動作シーケンスの実行に成功する可能性を示す、請求項32に記載のコンピュータ装置。
【請求項34】
前記プロセッサは、
前記動作シーケンスの実行が自動的に完了できないという決定に応答して、前記動作シーケンスの実行を完了するように前記コンピューティングデバイスのユーザに促すステップと、
中間動作シーケンスを決定するために前記ユーザの動作を監視するステップと、
将来の使用のために前記中間動作シーケンスを記憶するステップと
を実施するようにさらに適合されている、請求項30に記載のコンピュータ装置。
【請求項35】
前記プロセッサは、
前記コンピューティングデバイスの状態を目標状態に変更するためのユーザコマンドを取得するステップと、
前記コンピューティングデバイスの現在の状態を決定するステップと、
前記リポジトリ内の1つまたは複数の保持されている動作シーケンスに基づいて、前記動作シーケンスを決定するステップとを実施するようにさらに適合されており、前記動作シーケンスは、前記コンピューティングデバイスの前記状態を前記現在の状態から前記目標状態に変更するように構成されている、請求項30に記載のコンピュータ装置。
【請求項36】
前記リポジトリは、前記動作シーケンスに対して、複数の異なる識別子を保持し、各識別子は、異なるユーザによる前記動作シーケンスの実行に基づいて定義される、請求項30に記載のコンピュータ装置。
【請求項37】
前記動作シーケンスまたは前記動作シーケンスの一部を前記コンピューティングデバイス上で自動的に実行する前記ステップが、
前記ユーザ対話を隠すための表示を表示するステップであって、結果、前記ユーザ対話が実行される前記ユーザインターフェースの1つまたは複数の要素の少なくとも一部が、前記動作シーケンスまたは前記動作シーケンスの一部を前記コンピューティングデバイス上で自動的に実行する間は前記ユーザに見えない、表示するステップを含む、請求項30に記載のコンピュータ装置。
【請求項38】
プログラム命令を保持するコンピュータ可読記憶媒体であって、前記プログラム命令は、プロセッサによって読み出されると、前記プロセッサに、
1つまたは複数の動作を含む動作シーケンスの識別子を取得するステップであって、各動作は、コンピューティングデバイスを動作させるためのユーザインターフェースの要素とのユーザ対話を表す、取得するステップと、
前記識別子を使用して動作シーケンスのリポジトリを検索して、前記動作シーケンスを取得することを含む、前記動作シーケンスを取得するステップであり、前記動作シーケンスのリポジトリは、前記コンピューティングデバイスを利用するユーザとは別のユーザのための、前記コンピューティングデバイス以外の別のコンピューティングデバイスによる1つまたは複数の動作の前回の実行に基づいて定義される動作シーケンスを含む、取得するステップと、
前記動作シーケンスまたは前記動作シーケンスの一部を前記コンピューティングデバイス上で自動的に実行するステップと
を含む方法を実行させる、コンピュータ可読記憶媒体
【請求項39】
プロセッサを有するコンピュータ装置であって、前記プロセッサは、
コンピューティングデバイスによって表示されるグラフィカルユーザインターフェース(GUI)のレイアウト内の1つまたは複数のインタラクティブ要素を決定するステップと、
前記1つまたは複数のインタラクティブ要素の各々にラベルを割り当てるステップであって、前記ラベルは前記レイアウト内で一意である、割り当てるステップと、
前記割り当てられたラベルを、前記1つまたは複数のインタラクティブ要素の各々に視覚的に近接して表示するステップと、
選択要素に割り当てられた前記ラベルを参照することによって、前記1つまたは複数のインタラクティブ要素のうちの前記選択要素を口頭で示すユーザによる発話を認識するステップと、
前記選択要素に対してユーザ対話動作を自動的に実行するステップと
を実行するように適合されている、コンピュータ装置。
【請求項40】
前記プロセッサは、1つまたは複数のユーザ対話動作を含む動作シーケンスに含めるべき前記選択要素に対する前記ユーザ対話動作を記録するステップを実施するようにさらに適合されている、請求項39に記載のコンピュータ装置。
【請求項41】
前記プロセッサは、複数のコンピューティングデバイスのユーザ間で前記動作シーケンスを共有するステップを実行するようにさらに適合されている、請求項40に記載のコンピュータ装置。
【請求項42】
前記プロセッサは、前記動作シーケンスに関する使用統計を収集するステップを実施するようにさらに適合されており、前記共有するステップは、前記使用統計によって基準が満たされることに応じて選択的に実行される、請求項41に記載のコンピュータ装置。
【請求項43】
前記プロセッサは、
前記コンピューティングデバイスのユーザによる前記動作シーケンスの反復実行を自動的に識別するステップと、
前記ユーザに、前記動作シーケンスの関連付けおよび取り出しを可能にする識別子を入力するよう促すステップと
を実施するようにさらに適合されている、請求項40に記載のコンピュータ装置。
【請求項44】
前記プロセッサは、
前記1つまたは複数のインタラクティブ要素のうちの要素が、前記要素に対する動作が、前記ユーザによって使用されるために利用可能な事前記録動作シーケンスの最初の動作である要素であるという決定に応答して、前記グラフィカルユーザインターフェースに、前記要素に関連する視覚的指示を表示するステップを実施するようにさらに適合されている、請求項39に記載のコンピュータ装置。
【請求項45】
プログラム命令を保持するコンピュータ可読記憶媒体であって、前記プログラム命令は、プロセッサによって読み出されると、前記プロセッサに、
コンピューティングデバイスによって表示されるグラフィカルユーザインターフェース(GUI)のレイアウト内の1つまたは複数のインタラクティブ要素を決定するステップと、
前記1つまたは複数のインタラクティブ要素の各々にラベルを割り当てるステップであって、前記ラベルは前記レイアウト内で一意である、割り当てるステップと、
前記割り当てられたラベルを、前記1つまたは複数のインタラクティブ要素の各々に視覚的に近接して表示するステップと、
選択要素に割り当てられたラベルを参照することによって、前記1つまたは複数のインタラクティブ要素のうちの前記選択要素を口頭で示すユーザによる発話を認識するステップと、
前記選択要素に対してユーザ対話動作を自動的に実行するステップと
を含む方法を実行させる、コンピュータ可読記憶媒体
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2015年9月22日に出願された「コンピューティング装置におけるユーザ対話動作の自動実行(AUTOMATIC PERFORMANCE OF USER INTERACTION OPERATIONS ON A COMPUTING DEVICE)」と題する米国特許出願第13/860,733号の利益を主張するものであり、これは、否認を生じることなくすべての目的のためにその全体が参照により本明細書に援用される。
【0002】
本開示は、一般にコンピューティングデバイスのユーザ動作、特にコンピューティングデバイスにおけるユーザ対話動作の自動実行に関する。
【背景技術】
【0003】
ここ数十年の間、個人用のコンピューティングデバイスがますます普及してきている。近年、個人情報端末(PDA)、ハンドヘルドコンピュータ、および「スマートフォン」として一般的に知られている本格的なオペレーティングシステムを実行するコンピュータ化された携帯電話などのモバイルプラットフォームの登場により、このますますの普及の傾向はさらに高まっている。これらのデバイスは、通常、デスクトップコンピュータとほぼ同等の計算能力をユーザに提供する汎用プロセッサ、メモリ、およびストレージを備えている。さらなる一般的な特徴には、様々な通信ネットワークおよび他のデバイス、例えば無線ローカルエリアネットワーク(WLAN)、セルラネットワーク、近距離無線通信(NFC)などへの接続、およびカメラ、マイクロフォン、加速度計、全地球測位システム(GPS)受信機などの1つ以上のタイプのセンサが含まれる。
【0004】
多くのモバイルコンピューティングデバイスは、ユーザ対話の主要形態として機能するグラフィカルユーザインターフェース(GUI)を備えたタッチセンサ式ディスプレイ(「タッチスクリーン」としても知られている)を含む。ユーザは、主としてタッチセンサ式ディスプレイ上の指の接触およびジェスチャを介してGUIと対話する。したがって、ユーザの手の一方または両方が占有されているとき、またはユーザが断続的な期間にわたってであれ、または完全にであれ、表示画面を見ることができないとき、モバイルデバイスおよびその異なる機能を動作させることは困難であるか、またはさらには不可能であると判明し得る。この状況は、例えば、ユーザが車両を運転しているときに一般的に発生する。GoogleのCEOで共同創立者のLarry Page氏は、2014年のインタビューで、この問題に言及している。「我々はまだ、コンピュータはかなり不便なものと感じています。ぶらぶら歩いているときに、タッチスクリーン電話をスクロールするのは良くないでしょう。車に乗れば弾みますから、実際には機能しません」このシナリオでは、何らかの形の音声制御が望ましいことは明らかである。近年、Siri(商標)、Cortana(商標)、Google Now(商標)などの「仮想アシスタント」の導入により、音声認識が大幅に改善されたため、この現実に向けて大きな進歩があった。
【0005】
人間は習慣の生き物であり、多くのコンピューティングデバイスがそれらの間で共通の特徴および機能を共有するため、コンピューティングデバイスの使用は大きな規則性および反復パターンを示すことができ、それによって、ユーザまたは複数のユーザによって同じ動作または動作のシーケンスが頻繁に実行される。
【発明の概要】
【課題を解決するための手段】
【0006】
開示される主題の1つの例示的な実施形態は、ユーザによって動作させられるコンピューティングデバイスによって実行されるコンピュータ実施方法であり、上記コンピュータ実施方法は、1つまたは複数の動作を含む動作シーケンスの識別子を取得するステップであって、各動作は、コンピューティングデバイスを動作させるためのユーザインターフェースの要素とのユーザ対話を表す、取得するステップと、
識別子を使用して動作シーケンスのリポジトリを検索して、動作シーケンスを取得することを含む、動作シーケンスを取得するステップであり、動作シーケンスのリポジトリは、上記ユーザ以外の別のユーザのための、上記コンピューティングデバイス以外の別のコンピューティングデバイスによる1つまたは複数の動作の前回の実行に基づいて定義される動作シーケンスを含む、取得するステップと、動作シーケンスまたはその一部をコンピューティングデバイス上で自動的に実行するステップとを含む。
【0007】
開示される主題の別の例示的な実施形態は、プロセッサを有するコンピュータ装置であり、プロセッサは、1つまたは複数の動作を含む動作シーケンスの識別子を取得するステップであって、各動作は、コンピューティングデバイスを動作させるためのユーザインターフェースの要素とのユーザ対話を表す、取得するステップと、
識別子を使用して動作シーケンスのリポジトリを検索して、動作シーケンスを取得することを含む、動作シーケンスを取得するステップであり、動作シーケンスのリポジトリは、上記ユーザ以外の別のユーザのための、上記コンピューティングデバイス以外の別のコンピューティングデバイスによる1つまたは複数の動作の前回の実行に基づいて定義される動作シーケンスを含む、取得するステップと、動作シーケンスまたはその一部をコンピューティングデバイス上で自動的に実行するステップとを実行するように適合されている。
【0008】
開示される主題のまた別の例示的な実施形態は、プログラム命令を保持するコンピュータ可読記憶媒体を備えるコンピュータプログラム製品であり、プログラム命令は、プロセッサによって読み出されると、プロセッサに、1つまたは複数の動作を含む動作シーケンスの識別子を取得するステップであって、各動作は、コンピューティングデバイスを動作させるためのユーザインターフェースの要素とのユーザ対話を表す、取得するステップと、
識別子を使用して動作シーケンスのリポジトリを検索して、動作シーケンスを取得することを含む、動作シーケンスを取得するステップであり、動作シーケンスのリポジトリは、上記ユーザ以外の別のユーザのための、上記コンピューティングデバイス以外の別のコンピューティングデバイスによる1つまたは複数の動作の前回の実行に基づいて定義される動作シーケンスを含む、取得するステップと、動作シーケンスまたはその一部をコンピューティングデバイス上で自動的に実行するステップとを含む方法を実行させる。
【0009】
開示される主題のまた別の例示的な実施形態は、コンピュータ実施方法であり、方法は、コンピューティングデバイスによって表示されるグラフィカルユーザインターフェース(GUI)のレイアウト内の1つまたは複数のインタラクティブ要素を決定するステップと、1つまたは複数のインタラクティブ要素の各々にラベルを割り当てるステップであって、ラベルはレイアウト内で一意である、割り当てるステップと、割り当てられたラベルを、1つまたは複数のインタラクティブ要素の各々に視覚的に近接して表示するステップと、選択要素に割り当てられたラベルを参照することによって、1つまたは複数のインタラクティブ要素のうちの選択要素を口頭で示すユーザによる発話を認識するステップと、選択要素に対してユーザ対話動作を自動的に実行するステップとを含む。
【0010】
開示される主題のまた別の例示的な実施形態は、プロセッサを有するコンピュータ装置であり、プロセッサは、コンピューティングデバイスによって表示されるグラフィカルユーザインターフェース(GUI)のレイアウト内の1つまたは複数のインタラクティブ要素を決定するステップと、1つまたは複数のインタラクティブ要素の各々にラベルを割り当てるステップであって、ラベルはレイアウト内で一意である、割り当てるステップと、割り当てられたラベルを、1つまたは複数のインタラクティブ要素の各々に視覚的に近接して表示するステップと、選択要素に割り当てられたラベルを参照することによって、1つまたは複数のインタラクティブ要素のうちの選択要素を口頭で示すユーザによる発話を認識するステップと、選択要素に対してユーザ対話動作を自動的に実行するステップとを実行するように適合されている。
【0011】
開示される主題のまた別の例示的な実施形態は、プログラム命令を保持するコンピュータ可読記憶媒体を備えるコンピュータプログラム製品であり、プログラム命令は、プロセッサによって読み出されると、プロセッサに、コンピューティングデバイスによって表示されるグラフィカルユーザインターフェース(GUI)のレイアウト内の1つまたは複数のインタラクティブ要素を決定するステップと、1つまたは複数のインタラクティブ要素の各々にラベルを割り当てるステップであって、ラベルはレイアウト内で一意である、割り当てるステップと、割り当てられたラベルを、1つまたは複数のインタラクティブ要素の各々に視覚的に近接して表示するステップと、選択要素に割り当てられたラベルを参照することによって、1つまたは複数のインタラクティブ要素のうちの選択要素を口頭で示すユーザによる発話を認識するステップと、選択要素に対してユーザ対話動作を自動的に実行するステップとを含む方法を実行させる。
【0012】
本開示の主題は、図面と併せて以下の詳細な説明からより完全に理解され、諒解されるであろう。図面において、対応するまたは同様の数字または文字は、対応するまたは同様の構成要素を示す。別途示されない限り、図面は、本開示の例示的な実施形態または態様を提供し、本開示の範囲を限定するものではない。
【図面の簡単な説明】
【0013】
図1】本主題のいくつかの例示的な実施形態による、方法のフローチャート図である。
図2A】本開示の主題のいくつかの例示的な実施形態による、方法のフローチャート図である。
図2B】本開示の主題のいくつかの例示的な実施形態による、方法のフローチャート図である。
図2C】本開示の主題のいくつかの例示的な実施形態による、方法のフローチャート図である。
図3】本開示の主題のいくつかの例示的な実施形態による、方法のフローチャート図である。
図4】本開示の主題のいくつかの例示的な実施形態による、方法のフローチャート図である。
図5】本開示の主題のいくつかの例示的な実施形態による、方法のフローチャート図である。
図6】本開示の主題のいくつかの例示的な実施形態による、方法のフローチャート図である。
図7】本開示の主題のいくつかの例示的な実施形態による、方法のフローチャート図である。
図8A】本開示の主題のいくつかの例示的な実施形態による、本開示の主題が使用されるコンピュータ化環境の例示的なスクリーンショットを示す図である。
図8B】本開示の主題のいくつかの例示的な実施形態による、本開示の主題が使用されるコンピュータ化環境の例示的なスクリーンショットを示す図である。
図9】本開示の主題のいくつかの例示的な実施形態による、システムのブロック図である。
【発明を実施するための形態】
【0014】
本開示の主題によって対処される1つの技術的問題は、コンピューティングデバイスのユーザによって実行されるユーザ対話動作のシーケンスを記録することと、同じユーザの同じコンピューティングデバイスによって記録されたか、または、別のユーザの別のコンピューティングデバイスによって記録されたかにかかわらず、以前に記録されたシーケンスをオンデマンドで自動的に再生(例えば「実行」)することとを提供することである。
【0015】
本開示の主題によって対処される別の技術的方法は、そのまま実行することが不可能な場合であっても、シーケンスの同じ最終結果を達成するように、動作シーケンスの実行を提供することである。いくつかの例示的な実施形態では、例えば、装置の異なる初期状態に起因して、または、シーケンスが記録されたときに示されていたものとは異なるソフトウェア構成要素の特定の動作モードに照らして、シーケンスをそのまま実行することは不可能であり得る。
【0016】
本開示の主題によって対処されるまた別の技術的問題は、コンピューティングデバイスを任意の起点状態から所望の目標状態に、要求によって自動的に切り替えることを可能にすることである。
【0017】
本開示の主題によって対処されるまた別の技術的問題は、音声起動機能によってコンピューティングデバイスのグラフィカルユーザインターフェース(GUI)を拡張することである。
【0018】
本開示の主題によって対処されるまた別の技術的問題は、コンピュータデバイスの完全に自然な音声制御インターフェースを提供することである。本開示の主題は、人間とコンピュータとの間のより自然な対話を可能にすることができ、したがって、人間がコンピュータを用いてより容易に物事を完了するのを助ける。
【0019】
バーチャルアシスタントは、インターネットデータベースに基づいて質問への回答を得るのに有用であるが、コンピューティングデバイスでは非常に限定されたセットのタスクしか実行できず、これはデバイスの完全に自然な音声制御を保証するにはほど遠い。従来技術では、所望の音声起動コマンドごとにアプリケーションプログラミングインターフェース(API)を手動で開発する必要があり、これは退屈で、高価で、スケーラブルではないタスクである。さらに、アプリケーションのエンドユーザは、いずれの音声コマンドがサポートされていて、いずれの音声コマンドがサポートされていないかを認識しておらず、ほとんどの機能は音声のみでは取得できないため、ユーザは運転中でもほとんどの動作を手動で実行する。2014年の調査は、98%が運転中にメールを打つのは危険であると考えている一方で、74%がこれを行うことを認めている。
【0020】
コンピューティングデバイス上で必要なタスクを自動的に実行することは、様々な非運転条件においても望ましい場合がある。単一のコマンドを使用して複数の手順が必要なタスクを実行すると、時間および労力を節約できる。音声コマンドを使用することは、スマートウォッチを使用して、または、デバイスを取り出して、文字をタイプし、もしくは他の様態で人の手を使用して対話する必要なしに、スマートフォンと対話するための実用的なソリューションである。また、これは視覚障害者にとっても非常に有用であり得る。さらに、場合によっては、ユーザは自分が実行したいタスクを語ることができるが、コンピューティングデバイス上でそのタスクをどのように実行するかを知らない場合がある。例えば、既存の連絡先に電話番号を追加したい場合があるが、スマートフォンでこれを実行する方法はわからない場合がある。この場合、連絡先アプリケーションを手動で探し、関連する連絡先を探し、編集ボタンを押し、番号を入力して追加を確認するよりも、「番号Xを連絡先Yに追加する」と言うかまたは書き込む方がはるかに容易であろう。
【0021】
1つの技術的ソリューションは、ユーザのためにコンピューティングデバイスによって以前に実行されており、それぞれの動作シーケンスの識別子を使用して別のユーザのために別のコンピューティングデバイス上で自動実行するために取り出し可能な動作シーケンスのリポジトリを維持することであり、動作シーケンスの各々は、1つまたは複数の動作を含み、各動作は、コンピューティングデバイスを動作させるためのユーザインターフェースの要素とのユーザ対話を表す。いくつかの例示的な実施形態では、リポジトリは、異なるユーザの複数のコンピューティングデバイスによってアクセス可能であり、それらの間で共有されてもよい。
【0022】
いくつかの例示的な実施形態では、ユーザインターフェースは、動作シーケンスまたはその一部が自動的に実行されている間に代替表示が表示されることによってユーザから隠すことができ、その結果、ユーザ対話が実行されているユーザインターフェースの1つまたは複数の要素の少なくとも一部は、その時間中にユーザには見えない。代替表示は、実行が実施されていることを示すスプラッシュ画面であってもよい。付加的または代替的に、代替表示は、シーケンス実行が開始されたときのディスプレイのスクリーンショットであってもよく、それによってシーケンスが実行されている間に「フリーズ画面」の見た目が提供される。いくつかの例示的な実施形態では、代替表示は、シーケンスの実行が進行中であることを示すために、砂時計、回転要素などのアニメーションを含んでもよい。
【0023】
いくつかの例示的な実施形態では、動作シーケンスの動作によって表されるユーザ対話は、クリック、スクロール、スライド、ドラッグ、ポイント、テキストの入力または編集などのような、コンピューティングデバイスのユーザインターフェースによって利用されるユーザ対話のいずれかであってもよい。付加的にまたは代替的に、ユーザ対話は、テキストの読み上げ、表示画面上の表領域の座標の指定(例えば、画像の部分的な箇所にズームインすること)などのような、ハンズオフ動作に適合したカスタム動作であってもよい。
【0024】
いくつかの例示的な実施形態では、リポジトリは、ユーザによって実行されている間に記録され、そのユーザによって提供される識別子に関連付けられる少なくとも1つの記録動作シーケンスを含むことができる。いくつかの例示的な実施形態では、ユーザは、記録の開始前に記録コマンドを与えることによって、動作シーケンスを明示的に記録することができる。記録動作シーケンスと識別子との関連付けおよびそのリポジトリにおける記憶は、記録コマンドを使用するなど、ユーザが記録動作シーケンスを記録することによって開始されてもよい。付加的にまたは代替的に、動作シーケンスは、ユーザが明示的に記録を開始することなく、1つまたは複数の動作のユーザの実行の監視に基づいて記録されてもよい。ユーザは、記録動作シーケンスが頻繁に実行されていると自動的に認識されることに応答して、識別子を提供するように促されてもよい。
【0025】
いくつかの例示的な実施形態では、リポジトリは、動作シーケンスに対して複数の異なる識別子を保持することができる。異なるユーザによる動作シーケンスの異なる実行に基づいて異なる識別子を定義することができる。付加的にまたは代替的に、同じユーザが同じシーケンスに対して複数の識別子を提供してもよい。いくつかの例示的な実施形態では、代替的な識別子は、異なる言語の識別子であってもよい。付加的にまたは代替的に、代替的な識別子は、同じ言語の識別子であってもよい。例えば、あるユーザは、ユーザ定義コマンド「open SMS(SMSを開く)」を使用してシーケンスを定義してもよく、別のユーザは、ユーザ定義コマンド「start SMS(SMSを開始する)」を同じシーケンスに提供してもよく、一方で別のユーザは、同じシーケンスにユーザ定義コマンド「text message(メッセージを打つ)」を使用してもよい。
【0026】
いくつかの例示的な実施形態では、識別子は、ユーザの音声コマンドを取得し、音声コマンドから識別子を抽出することによって取得することができる。いくつかの例示的な実施形態では、音声コマンドを発話−テキストエンジンを使用して分析して、識別子を抽出するために分析できる対応する文字列を提供することができる。いくつかの例示的な実施形態では、識別子を定義するときに、接続詞(「and」、「for」など)または他の同様の用語などの文字列に現れる一般に使用される単語を省略することができる。付加的または代替的に、識別子は、ユーザによって入力される文字列「record sequence open sesame(シーケンスを記録せよ、開けゴマ)」のようなユーザによる非音声コマンドに基づいて定義されてもよく、「open sesame(開けゴマ)」は識別子自体であってもよく、または、そこから識別子が抽出される文字列であってもよい。ユーザコマンドは、監視および記録されるべき動作の実行の前に、またはそのような動作が実行され、システムによって監視された後に提供されてもよい。
【0027】
いくつかの例示的な実施形態では、識別子は、パラメータを含んでもよく、それによって、動作シーケンスがパラメータに対して指定された値に基づいて変更される。例えば、識別子自体は、動作シーケンスの実行中に対話される集合からのアイテムの値およびそれに関連する参照などのベース識別子およびパラメータを含むことができる。一例として、識別子は 「voip Suzanne Vega」であり、Suzanne Vegaはアドレス帳の連絡先に関連する参照である。関連するシーケンスは、Viber(商標)、Skype(商標)などのVoice over IP(VoIP)アプリケーションを開き、アドレス帳に到達し、パラメータに基づいて連絡先の人物を選択し、選択された連絡先の人物との通話を開始するように構成することができる。したがって、コマンド「voip Mick Jagger」は、Mick Jaggerについて連絡先の人物として明示的に定義する必要なく、同様に動作するように構成される。
【0028】
いくつかの例示的な実施形態では、動作シーケンスの各々およびリポジトリに保持されたそれぞれの関連する識別子についての使用統計が収集されてもよい。使用統計は、付加的なユーザによる同一の動作シーケンスの実行、および、例えば、部分的にオーバーラップするシーケンスなどの同様の動作シーケンスの実行を計上することができる。保持されている動作シーケンスは、使用統計によって満たされていると示される使用基準に基づいて選択的にアクセス可能にすることができる。例えば、リポジトリに新たに導入された動作シーケンスは、最初は、元のユーザに個人的にしかアクセスできないようにすることができ、独立して所定の閾値分だけ多数回にわたって、かつ/または、多数の異なるユーザによって実行された後にのみ、公的にアクセス可能にすることができる。付加的にまたは代替的に、使用統計は、たとえあったとしてもめったに使用されない動作シーケンスまたは冗長識別子を検出および除去することによって、リポジトリの保守のために利用されてもよい。付加的にまたは代替的に、使用統計は、動作シーケンスの実行が成功する可能性を判定するために利用されてもよい。
【0029】
いくつかの例示的な実施形態では、動作シーケンスの自動実行は、現在の動作を実行するために必要な要素が、コンピューティングデバイスの現在の状態におけるユーザ対話に利用可能であるか否かの判定を行うことを含むことができる。コンピューティングデバイスに、現在の状態から、ユーザ対話のために要素が利用可能な目標状態に切り替えさせるように構成された中間動作シーケンスを取得して実行して、現在の動作の自動実行を可能にすることができる。
【0030】
本開示の文脈において、コンピューティングデバイスの状態に関連する「状態」という用語は、コンピューティングデバイスによって表示されるスクリーンディスプレイのレイアウトに含まれる1つまたは複数の要素の集合を指すことができる。この用語はまた、アプリケーションプログラム、および、それによって提供される1つまたは複数の集合表示のそれぞれの集合表示を指してもよい。例えば、電子メール通信を交換および管理するためのアプリケーションプログラムは、それぞれが別個の状態とみなされ得る、受信ボックス、送信済みアイテム、下書き、スパム、ごみ箱、アーカイブなどのいくつかのフォルダの表示を含むことができる。別の例として、コンピューティングデバイスのホーム画面は、アプリケーションプログラムまたはデバイス機能へのリンクまたはショートカットを含むグリッドからなり、各々が別個の状態と考えることもできる、複数の交互のページまたはサブ画面表示上に配置されてもよい。いくつかの例示的な実施形態では、インタラクティブ要素の集合は、画面表示のレイアウト内に表示された表示要素のサブセットであってもよい。例えば、テキストメッセージアプリケーションの画面表示内に存在するメッセージのコンテナは、「作成(compose)」ボタン、アプリケーションの画面を示す1つまたは複数のタブボタンなどのような同じレイアウト内の他の要素とは対照的に、それぞれの状態の定義の一部でなくてもよい。
【0031】
いくつかの例示的な実施形態では、中間動作シーケンスは、対応する代替的な中間動作シーケンスを完了まで実行することが成功する可能性を示すスコアに基づいて、複数の代替的な中間動作シーケンスの中から選択を行うことによって得ることができる。スコアは、それぞれの動作シーケンスの使用統計に基づいてもよい。付加的にまたは代替的に、スコア計算は、例えば、シーケンス内の各さらなる動作のスコアを減らすことによって、長いシーケンスよりも短いシーケンスを選好するように構成することができる。
【0032】
いくつかの例示的な実施形態では、中間動作シーケンスは、動作シーケンスの実行を完了するようにコンピューティングデバイスのユーザに促すことによって得ることができる。動作シーケンスの実行が自動的に完了できないという決定に応答して、ユーザを促すことができる。ユーザ動作は、中間動作シーケンスを決定するために監視されてもよい。監視される中間動作シーケンスは、その動作シーケンスまたは他の動作シーケンスの実行が自動的に完了できない場合、将来の自動回復を可能にするように、将来の使用のために記録および記憶されてもよい。
【0033】
いくつかの例示的な実施形態では、動作シーケンスの自動実行は、動作シーケンスの動作がそれとのユーザ対話を表すアプリケーションプログラムがコンピューティングデバイスにインストールされているか否かの判定を行うことを含むことができ、アプリケーションプログラムがインストールされていないことに応答して、ユーザは、アプリケーションプログラムをダウンロードするためにシーケンスの実行をアクティブにするように促されてもよい。付加的にまたは代替的に、アプリケーションプログラムは、ダウンロードする前にユーザの承認を要求して、または、要求せずに、自動的にダウンロードされてもよい。いくつかの例示的な実施形態では、動作シーケンスの自動実行は、動作シーケンスの動作がそれとのユーザ対話を表すアプリケーションプログラムがコンピューティングデバイス内で現在作動しているか否かの判定を行うことを含むことができる。アプリケーションプログラムが作動しているがコンピューティングデバイスのフォアグラウンドにない場合、アプリケーションプログラムは、それと対話できるようにフォアグラウンドに切り替えられてもよい。付加的にまたは代替的に、アプリケーションプログラムが作動していない場合、アプリケーションプログラムは自動的に起動されてもよい。いくつかの例示的な実施形態では、プログラムの自動起動は、ユーザ定義の動作シーケンスを実行することによって実行されてもよい。付加的にまたは代替的に、プログラムは、適切なアプリケーションプログラミングインターフェース(API)を呼び出すことによって起動されてもよい。
【0034】
いくつかの例示的な実施形態では、ユーザによるすべての動作を監視することができ、動作シーケンスをそれに基づいて暗黙的に定義することができる。ユーザは、そのユーザによる頻繁な使用、そのユーザに類似したユーザ(例えば、ユーザと同じ使用プロファイルを有する)による頻繁な使用などのような基準を満たす使用統計に基づいて、暗黙的に定義された動作シーケンスの将来の取り出しおよび実行のための識別子を提供するように促され得る。
【0035】
別の技術的ソリューションは、コンピューティングデバイスを目標状態に切り替えるためのユーザコマンドを取得することに応答して、コンピューティングデバイスの現在の状態を決定し、リポジトリに保持された1つまたは複数の動作シーケンスを使用して、実行されるときにコンピューティングデバイスの状態を現在の状態から目標状態に変更するように構成されている動作シーケンスを決定することである。
【0036】
いくつかの例示的な実施形態では、動作シーケンスは、現在の状態で適用可能な最初に順序付けされている動作と、コンピューティングデバイスの状態を中間状態に変更するように構成された最後に順序付けられている動作とを有する第1の保持されている動作シーケンスの一部を識別し、中間状態に適用可能な最初に順序付けられている動作を有する第2の保持されている動作シーケンスの一部を識別し、第2の動作シーケンスが後続する第1の保持されている動作シーケンスの部分を含むように動作シーケンスを決定することによって決定することができる。付加的または代替的に、動作シーケンスは、ソースノードから宛先ノードへのエッジが、前者によって表される状態で適用可能であり、コンピューティングデバイスを後者によって表される状態に切り替えるように構成されている、保持されている動作シーケンスに対応するように、コンピューティングデバイスの状態を表すノードおよび保持されている動作シーケンスを表すエッジを含むグラフのデータ構造を取得および分析することによって決定されてもよい。グラフは、現在の状態に対応するノードから目標状態に対応するノードまでのパスを決定するために分析されてもよい。動作シーケンスは、パス内のエッジに対応する、保持されている動作シーケンスに基づいて生成することができる。
【0037】
さらに別の技術的ソリューションは、GUI内の各インタラクティブ要素に一意の識別子を提供することである。いくつかの例示的な実施形態では、GUIのレイアウトが取得されて、レイアウト内の1つまたは複数のインタラクティブ要素が決定される。一意のラベルを各インタラクティブ要素に割り当て、ラベルを対応するインタラクティブ要素に視覚的に近接して表示することができる。一意のラベルは、{0,1,2,3、…}のような数字、{A、B、C、…}のような文字、{i、ii、iii、iv、…}のようなローマ数字などであってもよい。付加的にまたは代替的に、一意のラベルは、特定のレイアウトのコンテキストにおいて厳密に一意であってもよく、異なるレイアウトの別の要素に対しては再利用されてもよい。特定の状態におけるレイアウト内の要素には、他のインタラクティブ要素、例えば、追加または他のアイテムを含む集合要素などの異なる内容を考慮して、異なる時間に異なるラベルを割り当てることができる。いくつかの例示的な実施形態では、音声認識機構を使用して、ユーザによるラベルの音声指示を検出することができ、対応するインタラクティブ要素に対するユーザ対話動作がそれに応じて自動的に実行されてもよい。
【0038】
いくつかの例示的な実施形態では、ユーザは、その割り当てられた一意のラベルを示すことによって、またはその本来的に表示されているラベルを示すことによって、インタラクティブ要素との所望の対話を示すことができる。例えば、WhatsApp(商標)アプリケーションプログラムのアイコンは、割り当てられた一意のラベル(例えば、数字「4」)を発音することによって、またはアイコンの固有のラベル「whatsapp」を示すことによって対話することができる。
【0039】
いくつかの例示的な実施形態では、指示された要素に対するユーザ対話動作は、1つまたは複数のユーザ対話動作からなる動作シーケンスに含めるために記録されてもよい。動作シーケンスは、将来の実行のために動作シーケンスを取り出すために使用されることになる識別子と関連付けられてもよい。識別子は、別の動作シーケンスの記録中に動作シーケンスを取り出すために使用することができ、それによって、以前に記録された動作シーケンスを新たに記録された動作シーケンスに組み込むことを可能にする。記録動作シーケンスは、コンピューティングデバイスの複数のユーザの間で共有することができる。共有は、収集されている使用統計によって満たされる基準に応じて選択的に実行されてもよい。ユーザによる記録動作シーケンスの反復実行を自動的に識別することができ、ユーザは、識別子を使用して記録動作シーケンスの取り出しを可能にするために、記録動作シーケンスとの関連付けのための識別子を入力するように促され得る。
【0040】
いくつかの例示的な実施形態では、本明細書では一般に開発者と呼ばれる、パブリッシャ、開発者、配布者、またはアプリケーションの責任を負う同様のエンティティに、ユーザによって使用される動作シーケンスが通知され得る。開発者は自身のアプリケーションのコミュニティの使用状況を通知され得、ユーザのコミュニティが使用する特定の動作を開発するよう誘導される。例として、開発者は、約1%以上、約1,000人以上のユーザなど、ユーザの相当部分によって4つの動作のシーケンスが頻繁に実行されることを通知されてもよい。そのようなシーケンスは「人気がある」と考えられ得る。開発者は、それに応じて、シーケンスまたはその一部を実行するように構成されたアトミックユーザ対話を開発することができる。開発者は、以前に使用された2つ以上のユーザ対話の代わりに、新しく開発されるアトミックユーザ対話を使用するように動作シーケンスを更新することを可能にされ得る。いくつかの例示的な実施形態では、新しく開発されるアトミックユーザ対話は、いくつかの別個のサーバトランザクションを単一のトランザクション集約することなどによって、より効率的であり得る。付加的または代替的に、新しく開発されるアトミックユーザ対話は、実行に成功する可能性が高いなど、より安定的であり得る。いくつかの例示的な実施形態では、新しく開発されるアトミックユーザ対話は音声コマンドであってもよい。付加的または代替的に、新しく開発されるアトミックユーザ対話を使用する別の動作シーケンスは、ユーザによって使用されてもよく、使用統計に基づいて、元の動作シーケンスよりも選好される代替であるとして自動的に決定されてもよい。いくつかの例示的な実施形態では、代替的な動作シーケンスおよび元の動作シーケンスの両方に同じ識別子が割り当てられてもよい(または、各シーケンスの識別子のセット全体であってもよく、そうでなくてもよい識別子の共有セットを有する)。共有されている1つまたは複数の識別子に基づいて、両方のシーケンスが互いの代替であると自動的に判定することができる。付加的にまたは代替的に、自動決定は、同じ最終結果を有する両方のシーケンスに基づいてもよい。
【0041】
いくつかの例示的な実施形態では、ユーザによって実行される動作シーケンスは、動作シーケンスのリポジトリに保持されている動作シーケンスと同一であると自動的に識別することができる。保持されている動作シーケンスに関連付けられ、その取り出しに有用な識別子を取得することができ、ユーザは、将来の動作シーケンスの自動実行をトリガするためにその識別子を使用するように促され得る。
【0042】
いくつかの例示的な実施形態では、GUIの要素は、実行されると考えられる動作が、その取り出しおよび実行を可能にする識別子を有する、保持されている動作シーケンスにおける最初の動作である要素として識別され得る。例えば、異なる色、大きさ、および/または形状のラベル、点滅しているまたは半透明のラベルなどを使用することによって、その要素に関連してそのような動作シーケンスの存在を示すために特別な視覚マーキングを使用することができる。
【0043】
いくつかの例示的な実施形態では、動作シーケンスの記録中にGUIによって表示され、識別子の一部によって参照される集合から選択されているアイテムは、自動的に識別することができ、パラメータとして指定することができ、それによって、正確に同じであるが、パラメータ部分の代わりに異なるアイテムを参照して識別子を使用することによって集合から選択されている異なる項目について動作シーケンスを取り出し、実行することができる。例えば、コンピューティング装置に記憶された連絡先リストから人物Xを選択すること、および、その人物にイベントへの参加を求めるメッセージを送信することからなる動作シーケンスは、識別子「invite X(Xを招待する)」を備えることができる。X部分は、「invite Y(Yを招待する)」へのユーザコマンドが、同一の動作シーケンスを取り出して実行させるが、連絡先リストから選択され、メッセージを送信される人物がXではなくYであるように、連絡先人物のパラメータとして識別することができる。いくつかの例示的な実施形態では、Xをパラメータとして識別することは自動識別であってもよく、または、単語「parameter(パラメータ)」を使用するなどのユーザ指示に基づくものであってもよい。
【0044】
いくつかの例示的な実施形態では、コンピューティングデバイスによって表示されるGUIのレイアウト内のインタラクティブ要素は、フリーテキスト入力要素を含むものとして決定されてもよい。ユーザから得られる発話の音響と、所定の音声コマンドの識別子との比較(直接的に、または、発話を使用して生成されるテキスト文字列をテキストエンジンと比較し、それを音声コマンドのテキスト識別子と比較するなどによって間接的に、のいずれかで)を実行することができ、不一致の判定に応答して、発話はテキストに変換され得、次にフリーテキスト入力要素に入力され得る。その後、テキストは任意選択的に合成発話に変換されてもよく、合成発話はその後、聴き取るためにユーザに配信することができ、それによって、ユーザは例えばテキストを確認し、または、訂正を要求することができる。
【0045】
いくつかの例示的な実施形態では、コンピューティングデバイスは、近接センサを備えていてもよい。近接センサは、音声コマンドを介して少なくとも部分的に実行される動作シーケンスの記録中、または音声コマンドを使用するそのような動作シーケンスの実行中に、コンピューティングデバイスの音声認識モードと音響再生モードとの間で、ユーザがオンとオフとを切り替えることを可能にするために利用され得る。オン/オフ切り替えは、例えば、ユーザがデバイスに向かって手を伸ばすことによって行うことができる。
【0046】
本開示の主題を利用する1つの技術的効果は、ユーザからの簡潔な通信および最小限の労力によって、コンピューティングデバイスを動作させるためのユーザインターフェースをカスタマイズすることである。
【0047】
本開示の主題を利用する別の技術的効果は、各々が他者の寄与と組み合わさるわずかな寄与を行う複数のユーザの協調動作を通じて、累積的かつ動的に進化する有用な動作シーケンスの集合ライブラリを形成することを可能にすることである。一般に大勢の人々に労務または資源出資を委ねるそのようなプロセスは、「クラウドソーシング」とも呼ばれる。したがって、本開示の主題を利用することにより、例えば、共有リポジトリの内容の集約データ分析および収集された使用統計に基づいて、クラウドソーシングによるユーザ間の有用な動作シーケンスの普及および無益またはさらには有害な動作シーケンスのフィルタリング除外を可能にすることができる。
【0048】
本開示の主題を利用するさらに別の技術的効果は、クラウドソーシングの能力を利用することによって、人−機械対話を改善するために反復使用パターンの利点を活かし、利用することであり得る。
【0049】
ここで、本主題のいくつかの例示的な実施形態による、方法のフローチャート図を示す図1を参照する。
【0050】
ステップ100において、動作シーケンスの識別子を得ることができる。動作シーケンスは、1つまたは複数の動作を含むことができ、各動作は、コンピューティングデバイスを動作させるためのユーザインターフェースの要素とのユーザ対話を表す。識別子は、任意の入力モダリティを介してユーザコマンドを受信することによって取得することができる。例えば、ユーザは、キーボード、ポインティングデバイスなどを使用してコマンドを提供することができる。いくつかの例示的な実施形態では、ユーザは音声コマンドを提供することができる。識別子は、コマンドを表す文字列を操作するなどして、コマンドから抽出することができる。いくつかの例示的な実施形態では、音声コマンドをテキスト文字列に変換し、テキスト文字列を分析して識別子を抽出することができる。
【0051】
ステップ110において、動作シーケンスを取り出すために識別子を使用してリポジトリを検索することができる。リポジトリは、ユーザのためにコンピューティングデバイスによって以前に実行された動作シーケンスを含むことができる。いくつかの例示的な実施形態では、リポジトリは、識別子が取得されたコンピューティングデバイス以外の別のコンピューティングデバイスによって、識別子を提供しているユーザ以外の別のユーザのために実行された動作シーケンスを含むことができる。
【0052】
いくつかの例示的な実施形態では、リポジトリは、識別子が取得されたコンピューティングデバイスのユーザ以外の1人以上のユーザから得られた音声コマンドから識別子が抽出された動作シーケンスを含むことができる。
【0053】
リポジトリは、コンピューティングデバイス内にローカルに保持されてもよく、または、コンピュータ化ネットワーク(例えば、インターネット)を介してコンピューティングデバイスに到達可能なサーバ内などに、リモートに保持されてもよい。いくつかの例示的な実施形態では、ローカルリポジトリは、以前の更新以降にコンピューティングデバイスにアクセス可能となっている任意の新しい情報を含むように、リモートサーバに基づいて定期的に更新されてもよい。いくつかの例示的な実施形態では、更新は、そのようなアプリケーションだけに関連する動作シーケンスを含むように、デバイス上のインストールされたアプリケーションのセットに基づいて実行することができる。このような選択的な更新は、必要な記憶スペースおよび帯域幅を低減し得る。いくつかの例示的な実施形態では、デバイスがリモートサーバへの接続性を有する場合、遠隔サーバに検索クエリを実行するように指示するなど、リモートの包括的なリポジトリを使用することができる。接続性がない場合(例えば、インターネットに接続されていない場合)、ローカルリポジトリを使用することができ、これにより、いくつかの動作シーケンス(ユーザに関連するシーケンス、デバイスにインストールされたアプリケーションに関連するシーケンスなど)を実行することが可能である。付加的にまたは代替的に、ローカルリポジトリは、デバイスのユーザによって頻繁にまたは以前に使用されているシーケンスの性能を向上させるためのキャッシュとして使用されてもよい。
【0054】
ステップ120において、ステップ110で得られた動作シーケンスは、ステップ100で識別子が得られたコンピューティングデバイス上で自動的に実行することができる。動作は、動作シーケンス中の定義された順序に従って反復して実行することができる。以下でより詳細に説明するように、場合によっては、動作シーケンスの正確な実行が不可能である場合があり、実際の実行は、シーケンス内で定義されていない追加の動作を実行すること、シーケンス内で定義された動作と異なる動作を実行することなどによって、定義されている動作シーケンスとは異なってもよい。いくつかの例示的な実施形態では、各動作の自動実行は、コンピューティングデバイスのオペレーティングシステムによって、または、その動作が実行されるアプリケーションによって提供されるAPIを使用することができる。付加的にまたは代替的に、自動実行は、コンピューティングデバイス上で動作を実行するための外部デバイスを使用すること、入力デバイスのドライバを呼び出すことなどによって、ユーザGUI動作を模倣することができる。
【0055】
動作シーケンスの実行を監視することができる(130)。監視された実行に基づいて、動作シーケンスの使用統計を更新することができる(140)。いくつかの例示的な実施形態では、使用統計をリポジトリ内に保持することができる。使用統計は、例えば、実行試行の総数、成功した実行の総数、失敗した実行の総数、シーケンスを実行した異なるユーザの数、ユーザあたりの成功した実行の数、任意のユーザによる最後の実行からの時間、全ユーザの最後の実行からの平均時間、平均的な実行ユーザのプロファイルなどを含むことができる。
【0056】
ステップ150において、例えば、異なるユーザによる独立した実行の閾値に達するなど、使用統計が基準を満たすことに基づいて、追加のユーザが動作シーケンスを利用できるようにすることができる。いくつかの例示的な実施形態では、使用統計は、動作シーケンスが頻繁に首尾よく使用されているか否かを示すことができる。いくつかの例示的な実施形態では、動作シーケンスが有用であり、他人によって使用されることが安全であるか否かを判定するために、特定の使用統計が有用であり得る。一実施形態では、悪意のあるユーザが、中間ステップとして、デバイスからデータをコピーし、悪意のあるユーザによって制御されるサーバにデータを送信する悪意のある動作シーケンスを定義する場合がある。そのような動作シーケンスの使用統計は、このシーケンスを実行しているユーザが1人または少数であり、それゆえ、安全と考えることができないことを示している可能性がある。別の例として、装置からデータ全体を削除する悪意のあるシーケンスが定義される場合がある。悪意のあるシーケンスは、使用頻度の低い使用統計を示す可能性がある。したがって、そのような悪意のあるシーケンスは安全とは考えられない場合がある。付加的にまたは代替的に、シーケンスの実行後の変更された挙動も監視することができ、安全でないシーケンスに対する指示としての役割を果たすことができる。一例として、シーケンスが実行された後、デバイス監視は、デバイスの性能の劣化、デバイスのネットワーク接続性の低下などを検出することができる。
【0057】
いくつかの例示的な実施形態では、使用統計の変化、ユーザからのフィードバック(例えば、動作シーケンスを不正確または悪意があると報告するなど)などを考慮して、以前に追加のユーザに利用可能であった動作シーケンスを利用できないようにすることができる。いくつかの例示的な実施形態では、シーケンスを一度実行したユーザは、意図的にシーケンスの再使用を避け得、したがって、本開示の主題は、ユーザが安全でないと考えるシーケンスを決定するために公的に利用可能なシーケンスをクラウドソースして、それに応じて、その後、そのシーケンスを利用できないようにすることができる。
【0058】
ここで、本主題のいくつかの例示的な実施形態による、方法のフローチャート図を示す図2Aを参照する。
【0059】
ステップ200では、例えば図1の方法を使用することによって、コンピューティングデバイス上で自動的に実行するための動作シーケンスを得ることができる。
【0060】
ステップ205において、コンピューティングデバイス上のユーザインターフェースの表示を隠すためのオーバーレイ表示が表示され、これにより、動作シーケンスの動作が実行されるユーザインターフェースの1つまたは複数の要素の少なくとも一部が、ユーザから隠される。オーバーレイ表示は、コンピューティングデバイス上の動作シーケンスの実行全体を通じて表示されてもよい。いくつかの例示的な実施形態では、オーバーレイ表示は、動作シーケンスの実行前のUIのスクリーンショットであってもよく、それによって、UI要素との自動対話が実行される間、「フリーズしたフレーム」の見た目を提供する。付加的または代替的に、オーバーレイ表示は、「ロード中」アニメーションなど、動作がまだ実行されていることを示すアニメーションを含むことができる。付加的にまたは代替的に、オーバーレイ表示は、1つまたは複数の広告を含んでもよい。広告は、ユーザの特性、実行中の動作シーケンス、ユーザの使用プロファイルなどに基づいてユーザに提供されてもよい。一例として、音楽を再生することに関連するシーケンスを使用するユーザは、音楽関連広告の対象とすることができ、一方で、電子メールクライアントの使用に関連するシーケンスを頻繁に利用するユーザは、改善された電子メールクライアントアプリケーションの対象とすることができる。
【0061】
ステップ210〜250では、動作シーケンスからの動作が、シーケンスによって定義された実行順序に従って反復的に処理される。
【0062】
ステップ210において、動作シーケンスの現在の動作を実行するために必要なユーザインターフェースの要素を決定することができる。例えば、動作がボタンをアクティブにしている場合、その要素はボタンであってもよい。別の例として、動作が集合からの選択である場合、その要素は集合内の選択されたアイテムであってもよい。さらに別の例として、動作がフリーテキストフィールドにテキストを入力している場合、その要素はフリーテキストフィールドであってもよい。さらに別の例として、動作が静的テキストフィールドからのテキストの読み上げである場合、その要素は静的テキストフィールドであってもよい。いくつかの例示的な実施形態では、要素は、将来の実行において同じままである一意で永続的な識別子に基づいて識別される。いくつかの例示的な実施形態では、同じソフトウェアが他のデバイスによって実行される場合、要素の一意で永続的な識別子は同じままであり得る。付加的にまたは代替的に、識別子は、要素の表示ラベル(例えば、チェックボックスに近いテキスト、ボタン上の画像など)に基づいてもよい。付加的または代替的に、識別子は、表示ラベルが経時的に変化し得る、異なるユーザに対して異なり得るなど、表示ラベルに基づいていなくてもよい。いくつかの例示的な実施形態では、識別子は、実行されたソフトウェアに関連付けられる名前空間内の要素のプログラム名であってもよい。いくつかの例示的な実施形態では、一意かつ永続的な識別子は、特定の状態の第3のUI要素、レイアウト内の特定の位置に位置決めされている特定の状態のUI要素など、他のUI要素およびデバイスの状態に基づいてもよい。いくつかの例示的な実施形態では、一意かつ永続的な識別子は、特定の状態のレイアウトにおけるUI要素の相対位置に基づくことができる。
【0063】
ステップ220では、その要素がコンピューティングデバイスの現在の状態で利用可能であるか否かの判定が行われ得る。要素が利用可能である場合、方法はステップ250において進行する。そうでなければ、方法はステップ230に進むことができる。いくつかの例示的な実施形態では、要素が存在し、現在の動作によって定義される所望の対話の実行を可能にする有効状態にある場合、要素は利用可能であると考えられる。
【0064】
ステップ230において、コンピューティングデバイスを現在の状態から、ユーザ対話のために利用可能な目標状態に切り替えることを目的とする中間動作シーケンスが決定され得る。中間動作シーケンスは、図2Bに関連してさらに説明するように、シーケンスの実行を完了するためにそのユーザによって、または他のユーザによって過去に使用されたシーケンスであってもよい。付加的にまたは代替的に、中間動作シーケンスは、図2Aで実行されている動作シーケンスに関係していないユーザによって実行されるシーケンスであってもよい。いくつかの例示的な実施形態では、中間動作シーケンスは、利用可能な動作シーケンスの部分に基づく合成シーケンスであってもよい。いくつかの例示的な実施形態では、中間動作シーケンスは、動作シーケンスリポジトリの内容に基づいて決定されてもよい。いくつかの例示的な実施形態では、中間動作シーケンスは、動作シーケンスを実行するデバイスによって合成されてもよく、または要求に応じて中間動作シーケンスを合成する、コンピュータ化ネットワークを介してアクセス可能なサーバなどの別の装置から取得されてもよい。
【0065】
付加的または代替的に、中間動作シーケンスは、現在の状態を、現在の動作の後の後続の動作の1つの実行を可能にする次の状態に変更するシーケンスであってもよい。このような場合、中間動作シーケンスを取得することができ、実行されると、中間動作シーケンスは、シーケンス内に現れる1つまたは複数の動作の置き換えとしての役割を果たすことができる。いくつかの例示的な実施形態では、中間動作シーケンスは、シーケンス内の残りの動作に完全に置き換えることができる。
【0066】
いくつかの例示的な実施形態では、中間動作シーケンスが必要な場合、(図1のステップ130に示されるような)実行の監視は、そのような情報を識別し、それに応じて使用統計を更新することができる。
【0067】
ステップ240において、現在の状態から目標状態への切り替えを引き起こすために、中間動作シーケンスがコンピューティングデバイス上で自動的に実行されてもよい。いくつかの例示的な実施形態では、中間動作シーケンスは、動作シーケンスの実行と同様に実行されてもよい(例えば、中間動作シーケンスにおける各動作に対してステップ210〜250が実行され、場合によって、実行を完了するために別の中間動作シーケンスが必要となる)。
【0068】
ステップ250で、現在の動作が要素に対して実行され得、動作シーケンスの自動実行が動作シーケンスの次の動作に進むことができる。同様に、動作シーケンス全体の実行が完了するまで、動作シーケンス内の各動作についてプロセスを繰り返し、ステップ210〜250を実行することができる。
【0069】
ここで、本主題のいくつかの例示的な実施形態による、方法のフローチャート図を示す図2Bを参照する。
【0070】
ステップ220が、要素が現在の状態で利用可能でないと判定した後、ステップ232を実行することができる。ステップ232において、ユーザは、実行を終了することができないことを通知され得る。いくつかの例示的な実施形態では、ステップ232は、中間動作シーケンスを自動的に取得することに失敗した後にのみ実行することができる(図2Aのステップ230)。
【0071】
それに応答して、ユーザは、動作シーケンスの実行を完了するために1つまたは複数の動作を手動で実行することができる。ユーザによる動作の手動実行は、将来の使用のために監視および記録することができる(ステップ242)。ユーザは、中間動作シーケンスを実行して目標状態に到達することができ、または、代替的に、現在の動作を実行することなくシーケンスの実行を完了するために残りの動作を実行してもよい。例えば、残りの動作シーケンスによって定義されるように動作A、B、C、DおよびEを実行する代わりに、ユーザは動作X、Y、DおよびEを実行することができる。したがって、中間動作シーケンスは、X、Yシーケンスであると決定することができ、将来において、動作Aが利用できず、シーケンスがA、B、C、および後続するDを実行する必要がある場合、A、B、Cを実行する代わりに使用することができる。
【0072】
ここで、本主題のいくつかの例示的な実施形態による、方法のフローチャート図を示す図2Cを参照する。
【0073】
いくつかの例示的な実施形態では、アプリケーションプログラムがコンピューティングデバイスにインストールされていないことに起因して、現在の状態では、必要な要素が利用可能でない可能性がある。ステップ234で、ユーザは、アプリケーションプログラムがデバイスにインストールされる必要があり、可能性としてアプリケーションリポジトリなどの外部ソースからダウンロードされる必要があることを通知され得る。ユーザは、動作を承認するなどして、アプリケーションプログラムのダウンロードおよびインストールを許可するように求められ得る。いくつかの例示的な実施形態では、そのような動作は、アプリケーションプログラムをダウンロードする前に購入トランザクションの実行を必要とするストアからアプリケーションプログラムをダウンロードできる場合など、証明書を必要とする場合がある。
【0074】
いくつかの例示的な実施形態では、ユーザはアプリケーションプログラムを手動でダウンロードすることができる。
【0075】
付加的にまたは代替的に、ステップ244において、アプリケーションプログラムを自動的にダウンロードすることができる。いくつかの例示的な実施形態において、自動ダウンロードは、アプリケーションプログラムをダウンロードするように動作可能な動作シーケンスを実行することによって実行されてもよい。付加的にまたは代替的に、アプリケーションプログラムをダウンロードするようにプログラム的に構成されたAPI命令を呼び出すことによって、アプリケーションプログラムをダウンロードすることができる。
【0076】
ここで、本主題のいくつかの例示的な実施形態による、方法のフローチャート図を示す図3を参照する。
【0077】
ステップ300において、GUIレイアウトを得ることができる。GUIレイアウトは、現在表示されているGUIレイアウトであってもよい。
【0078】
ステップ310において、GUIレイアウト内の要素を決定することができる。いくつかの例示的な実施形態では、クリック可能な要素、選択可能な要素、有効テキストフィールドなどのようなインタラクティブ要素が決定されてもよい。いくつかの例示的な実施形態では、インタラクティブ要素に加えて、画像要素、テキスト要素などのような非インタラクティブ要素も決定して処理することができる。要素は、オペレーティングシステムまたはアプリケーションによって提供されるGUI要素のAPIを使用して決定されてもよい。付加的または代替的に、要素は、画面のキャプチャされた画像またはキャプチャされた画面画像のシーケンスにコンピュータビジョンアルゴリズムを適用することによって決定されてもよい。コンピュータビジョンアルゴリズムは、教師付き学習アルゴリズムおよび教師なし学習アルゴリズムを含む機械学習アルゴリズムを含むことができる。アルゴリズムは、システムのユーザによって提供される情報を使用して、GUI要素を決定する能力を向上させることができる。
【0079】
ステップ320において、各要素に一意のラベルが割り当てられる。一意のラベルは、{0,1,2,3、…}のような数字、{A、B、C、…}のような文字、{i、ii、iii、iv、…}のようなローマ数字などであってもよい。付加的にまたは代替的に、一意のラベルは、特定のレイアウトのコンテキストにおいて厳密に一意であってもよく、異なるレイアウトの別の要素に対しては再利用されてもよい。特定の状態におけるレイアウト内の要素には、他のインタラクティブ要素、例えば、追加または他のアイテムを含む集合要素などの異なる内容を考慮して、異なる時間に異なるラベルを割り当てることができる。
【0080】
ステップ330において、ラベルをGUIレイアウト内に表示することができる。いくつかの例示的な実施形態では、各ラベルは、GUIの対応する要素に視覚的に近接して表示することができる。
【0081】
ステップ340において、ユーザによるGUIの要素の指示が認識され得る。ユーザは、そのラベルを用いてGUIの要素を参照することができる。いくつかの例示的な実施形態では、音声コマンドは、参照された要素の追加されたレイアウトに一意の識別子の音声表示を含むことができる。いくつかの例示的な実施形態において、ユーザは、代替的に、追加のレイアウト固有の識別子の追加の前に存在した、要素の固有のラベルのような他のラベルを使用してもよい。そのような固有のラベルに対する一例は、関連するプログラムの元のGUIの一部としてのアイコンの隣に表示されるアイコンのラベルであってもよい。別の例は、ボタン上に現れるテキストラベル、または表示されているグラフィック画像の下または近くの注記であってもよい。
【0082】
ステップ350において、ユーザがステップ340において認識された要素を参照するのに基づいて、各要素に対して動作を実行することができる。動作は、例えば、インタラクティブ要素と対話すること(例えば、選択可能なアイテムを選択すること、クリック可能なアイテムをクリックすること、選択要素にフォーカスを変更することなど)であってもよい。付加的にまたは代替的に、動作は、合成音を用いて、テキスト要素のテキスト内容を読み上げるなど、要素の内容を読み上げることであってもよい。動作は、ユーザによって定義されてもよい。いくつかの例示的な実施形態では、各要素とのデフォルトの対話的挙動が存在し得る。付加的にまたは代替的に、ユーザはデフォルト以外の挙動を指定することができる。一例として、「1」によって識別される要素がコンテナ内の選択可能な連絡先人物であると考える。(例えば、要素をクリックすることによって)連絡先人物が選択されると、連絡先人物への電話呼が開始される。ユーザが「1」と言う場合、要素をクリックして呼を開始するなど、要素とのデフォルトの対話が実行されてもよい。代替的に、ユーザは「1を読み出す(read 1)」と言ってもよい。このようなコマンドに基づいて、デバイスは、要素のテキスト内容を読み上げる音響を合成することができ、それに応じて、スクリーン上にグラフィックで表示される連絡先人物の名前を読み上げることができる。このような機能は、車を運転するときまたは画面がユーザから遠隔にあるときなど、ユーザが画面から内容を読む能力が限られている場合に有用である。
【0083】
いくつかの例示的な実施形態では、動作の自動実行は、GUIとの対話を模倣することによって実行されてもよい。付加的にまたは代替的に、自動実行は、要素が対話された後に呼び出された同じ機能を呼び出すことなどによって、GUIと直接対話することなく実行されてもよい。例として、ボタンを押下する動作を考える。一実施形態では、ボタンに対するクリックをGUIに対してシミュレートするイベントを生成することができる。したがって、GUIは、イベントを処理し、ボタンクリックを処理し、それによって所望の動作を実行することができる。付加的にまたは代替的に、ボタンがクリックされたことをGUIが検出すると、例えば関数「performActionOfThisButton()」のようなAPI関数が呼び出される。GUI層を介さずに直接API関数を実行することにより、動作を行ってもよい。
【0084】
ここで、本開示の主題のいくつかの例示的な実施形態による、本開示の主題が使用されるコンピュータ化環境の例示的なスクリーンショットを示す図8Aおよび図8Bを参照する。図8A図8Bのスクリーンショットは、図3のステップ330に基づいて作成することができる。
【0085】
画面800は、GUIレイアウトの要素の隣に割り当てられたラベルの表示を例示する。要素815には、ラベル810(「0」)が割り当てられる。要素825にはラベル820(「3」)が割り当てられる。要素835にはラベル830が割り当てられる。要素845にはラベル840が割り当てられる。いくつかの例示的な実施形態では、ラベルは、上から下、左から右の割り当て順序に従って割り当てられる。ただし、他の順序を使用することもできる。いくつかの実施形態では、割り当て順序は、上から下、右から左への割り当て、右から左に読まれる言語の順序、上から下、左から右への割り当て、左から右に読まれる言語の順序などのロケール情報に基づくことができる。
【0086】
画面800に例示されているように、一意のラベルは、対応する要素に視覚的に近接して表示される。ユーザは、割り当てられたラベルまたは固有のラベルを参照することによって要素を参照する音声コマンドを提供することができる。例えば、ユーザは、コマンド「3(three)」(割り当てられたラベルを参照する)を提供することによって、またはコマンド「home(ホーム)」(固有のラベルを参照する)を提供することによって、「Home(ホーム)」のクリック可能要素(825)と対話することができる。
【0087】
いくつかの例示的な実施形態では、画面800は、アプリケーションプログラム内の画面である。アプリケーションプログラムには、画面800’などの追加の画面がある。画面800’は、アプリケーションプログラムのスパムメールボックスを示す。
【0088】
画面800’では、識別される各要素にラベルが割り当てられる。場合によっては、画面800と同じ要素(要素815,845)に使用されているラベル810,840のように、同じラベルが同じ要素に使用される。付加的にまたは代替的に、画面800’において、画面800で使用されたものとは異なる要素に対してラベルが使用されてもよい。
【0089】
いくつかの例示的な実施形態において、画面800’は、電子メールの集合などのアイテムの集合を含む。ユーザは、割り当てられたラベルを使用して集合内のアイテムを参照することができる。例えば、「The Post Office(郵便局)」からの電子メールは、要素885に対応するラベル880(例えば、識別子「twenty seven(27)」)を用いて参照することができる。
【0090】
アプリケーションプログラムの将来の実行において、追加の電子メールが受信され、スパムメールボックス内で前述の電子メールの前に順序付けされている場合など、要素885のラベルが変更される可能性がある。
【0091】
いくつかの例示的な実施形態では、画面800および800’は、両方の画面が同じプログラムアプリケーションであるにもかかわらず、デバイスの異なる状態の画面であってもよい。一例として、画面800内に表される状態のレイアウトは、要素815,845,825のようなアプリケーションプログラムの異なる実行中に残る永続的な要素と、要素835のような異なる実行において変化し得る要素とを含むことができる。状態は、前者を使用し、後者を使用しないで定義することができる。状態は、アプリケーションプログラムのすべての異なる状態に現れる可能性のある要素815を含むことなく、またはアプリケーションプログラムのいくつかの状態において出現する可能性のある要素845を含むことなくなど、要素を定義するために使用できる要素のサブセットを使用して定義することができることに留意されたい。いくつかの例示的な実施形態では、ラベル割り当て順序において先行する要素の数に基づいて異なるラベルが割り当てられ得る「Compose(作成)」要素890など、異なる実行において異なる番号を付され得る要素を使用して画面800’の状態を識別することができる。特に、割り当てられるラベルは、スパムメールボックス内の電子メールの数によって影響を受ける可能性がある。
【0092】
いくつかの例示的な実施形態では、ラベルの視覚的指示は、動作シーケンスが使用可能であり、視覚的に指示された要素と対話することによって開始しているか否かを指示することができる。一例として、ラベル860は、ユーザが要素865に対する動作から始まる利用可能な動作シーケンスを有することをユーザに示すように、視覚的に提示されてもよい。動作シーケンスは、ユーザによって記録されているシーケンス、別のユーザによって記録され、ユーザにとってアクセス可能なシーケンスなどであってもよい。いくつかの実施形態では、視覚的指示は、ユーザによって定義されているシーケンスと、別のユーザによって定義され、ユーザによる実行のために利用可能なシーケンスとで異なってもよい。
【0093】
いくつかの実施形態では、ユーザは、「operation two(動作2)」と音声で指示するなどして、そのようなシーケンスの識別子を提供するようにシステムに問い合わせることができる。それに応答して、要素865に対する動作で開始する任意の動作シーケンスの使用可能な識別子を、合成発話を使用するなどして、ユーザに提供することができる。
【0094】
場合によっては、ユーザは、「operations(動作)」を音声で指示するなど、現在の画面で利用可能なすべてのシーケンスを識別するための指示を提供することができる。それに応答して、現在の画面に対する動作で開始する任意の動作シーケンスの使用可能な識別子を、ユーザに提供することができる。
【0095】
ここで、本主題のいくつかの例示的な実施形態による、方法のフローチャート図を示す図4を参照する。
【0096】
ステップ410において、ユーザとデバイスとの対話を監視することができる。いくつかの例示的な実施形態では、ユーザは、音声コマンドを使用して、タッチスクリーンを使用して、キーボードを使用して、または任意の他の入力デバイスを介してデバイスと対話することができる。いくつかの例示的な実施形態では、監視は、デバイスにインストールされた監視ソフトウェアによって実行されてもよい。いくつかの例示的な実施形態では、ユーザインターフェースの要素とのユーザ対話を監視して、それらの間に定義された順序を有する動作のセットを得ることができる。いくつかの例示的な実施形態では、動作のセットは、条件が満たされたときに完了するものとして決定されてもよい。一例として、約5秒、約20秒などの所定の時間枠よりも短い時間内で先行する動作に後続する各ユーザ対話は、前の動作と同じセット内にあると考えることができる。付加的または代替的に、約5秒、約20秒などのような所定の時間枠の間にユーザ対話がないことが検出されるまで、ユーザ対話を監視してセットに追加することができる。そのようなユーザ対話の欠如は、動作のセットが完了したことを決定するために使用され得る。追加のユーザ対話が新しいセットに追加される。
【0097】
ステップ420において、監視されている動作のセットを、リポジトリに保持されている動作シーケンスと比較することができる。いくつかの例示的な実施形態では、比較はデバイス上でローカルに実行されてもよい。付加的または代替的に、セットは、分析のためにリポジトリにアクセスすることができるリモートサーバに送信されてもよい。いくつかの例示的な実施形態では、比較に基づいて、セットと同一の保持されている動作シーケンスが決定されてもよい。いくつかの例示的な実施形態では、保持されている動作シーケンスの使用統計が、図1のステップ140に関して実行されるように、監視されている実行に基づいて更新されてもよい。付加的または代替的に、同じ状態で開始し、同じ目標状態に達し、同じ集合内に含まれている同じ要素または類似の要素のいずれかに対して目標状態において同じユーザ対話を実行するシーケンスのような、実質的に類似の動作シーケンスを得ることができる。付加的にまたは代替的に、実質的に同様のシーケンスは、開始状態と目標状態との間に実行される動作間の相当の重なり(例えば、約70%の重なり)を有するような同様の動作を含むことができる。
【0098】
いくつかの例示的な実施形態では、識別されている動作シーケンスの識別子を取得することができる。いくつかの例示的な実施形態では、動作シーケンスは複数の識別子を有することができる。複数の識別子から識別子を選択することができる。いくつかの例示的な実施形態では、複数の識別子をロケール情報に基づいてフィルタリングして、コンピューティングデバイスのユーザによって使用される言語で識別子を提供することができる。付加的にまたは代替的に、識別子は、動作シーケンスを取り出すために使用される最も一般的な識別子、最も傾向の高い識別子などを選択するなどして、取り出し統計に基づいて選択することができる。
【0099】
ステップ430で、ユーザは、ポップアップメッセージ、音響通知、プッシュ通知などを使用して、またはその他の方法で促され得、実施されたように、動作のセットを手動で動作させる代わりに、その識別子を将来において動作シーケンスを実行するために使用することができることを通知され得る。いくつかの例示的な実施形態では、識別子は、ユーザに選択肢の識別子を提供するように促すことによって、ユーザから取得することができる。
【0100】
いくつかの例示的な実施形態では、ステップ430は、単一の動作よりも多い動作、4回以上の動作などのような、最小閾値を超える複数の動作を含む動作シーケンスに対して実行されてもよい。
【0101】
ここで、本主題のいくつかの例示的な実施形態による、方法のフローチャート図を示す図5を参照する。
【0102】
ステップ510において、デバイスは、外部スピーカなどを使用して、デバイスのスピーカを使用するなど、音響を再生することができる。音響は、デバイスのユーザが聞くことができる。
【0103】
ステップ520において、ユーザは、手を装置に向かって伸ばすことができる。デバイスは、近接センサ、運動センサなどを使用して、そのようなジェスチャを検出することができる。
【0104】
ステップ530で、デバイスは、再生されている音響を一時停止することができる。いくつかの例示的な実施形態では、デバイスは、Bluetooth(登録商標)プロトコルを使用するなどして、無線でデバイスに接続されたカーラジオなどの、近接する他の可聴ソースの音量を下げることができる。
【0105】
いくつかの例示的な実施形態では、デバイスは音声認識機構を起動することができる。音響が一時停止してもはや聞こえなくなると、音声認識機構の動作を妨害する可能性がある背景音が少なくなる可能性があり得る。したがって、ユーザは、背景音に邪魔されることなく音声コマンドを提供することができる。
【0106】
ステップ540において、ユーザがデバイスに向かって手を伸ばすなどの、ユーザによる第2のジェスチャを検出することができる。いくつかの例示的な実施形態では、デバイスは、音声認識が動作している限り(例えば、ユーザが話している間、例えばユーザが、連続した音声コマンドを許容するために話すのを止めた後の約10秒などの所定の時間枠内など)、第2のジェスチャを検出しようとしなくてもよい。
【0107】
ステップ550において、音響は、第2のジェスチャの検出に応答して再開することができる。
【0108】
いくつかの例示的な実施形態では、図5の方法は、ユーザが自身の車を運転している間に利用することができる。運転中に、ユーザは、デバイスとの相互作用を低減することを望む場合がある。手を伸ばすジェスチャは、ユーザによって実質的な精度を必要としないジェスチャであり得、したがって、例えば、ミュートボタンに手が届くよりも、車を運転する能力にあまり干渉しないジェスチャであり得る。
【0109】
ここで、本主題のいくつかの例示的な実施形態による、方法のフローチャート図を示す図6を参照する。
【0110】
ステップ610において、フリーテキストフィールドが、ユーザに表示されるGUIのレイアウトの一部であると判定されてもよい。フリーテキストフィールドは、ユーザが文字列、複数行テキストなどのテキストを入力することを可能にすることができる。
【0111】
ステップ620において、ユーザによる発話を取得し、分析することができる。いくつかの例示的な実施形態では、音声認識モジュールを利用して、発話の音響を分析し、ステップ630においてそれに基づいてテキスト(例えば、文字列)を生成することができる。
【0112】
ステップ640において、テキストは、動作シーケンスのローカルまたはリモートリポジトリの動作シーケンスに関連付けられた識別子などの、動作シーケンスの識別子と比較することができる。いくつかの例示的な実施形態では、比較は、接続詞および他のあまり重要でない単語を省略すること、単語を正規化すること(例えば、性別に特有の文言を性的に中立なまたは所定の一般的な文言に変換すること、複数形を単数形に、またはその逆に変換するなど)などのような、テキスト分析をそのテキストに実行した後に実施されてもよい。
【0113】
一致が見つかった場合(ステップ650)、動作シーケンスを識別子に基づいて取り出すことができ、ユーザのデバイス上で実行することができる。そうでなければ、ステップ660を実行することができる。
【0114】
ステップ660において、フリーテキストフィールドにテキストを入力することができる。いくつかの例示的な実施形態では、いくつかのフリーテキストフィールドが存在してもよい。目標フリーテキストフィールドを選択することができる。いくつかの例示的な実施形態では、選択は、ユーザによる手動選択(例えば、音声選択、ポインティングデバイスを用いた選択など)、要素がUI内のフォーカスされた要素であること、要素が、UI内のフォーカスされている要素に最も隣接するフリーテキスト入力要素であること、要素がUI内で最も頻繁に使用されているフリーテキスト入力であること(例えば、ユーザ、ユーザに類似したプロファイルを有するユーザ、ユーザのグループなどの使用履歴に基づく)などに基づいてもよい。いくつかの例示的な実施形態では、生成されるテキストは、ステップ640で実行されたテキスト操作にかかわらず入力されてもよい。
【0115】
ステップ670において、テキスト−音声合成器を使用して、テキストに基づいて音響を合成することができる。
【0116】
ステップ680において、合成発話を、ユーザに聞こえるように再生することができる。いくつかの例示的な実施形態では、合成発話は、ステップ620の元の認識された発話とは異なる場合がある。いくつかの例示的な実施形態では、合成発話は、デバイスにボーカル入力されたコマンドの合成エコーを提供することができ、ユーザが発話−テキストメカニズムによって生成されたテキストを読む必要なしに、何が入力されたかをユーザが識別することを可能にする。
【0117】
ここで、本主題のいくつかの例示的な実施形態による、方法のフローチャート図を示す図7を参照する。
【0118】
ステップ710において、ユーザコマンドを取得することができる。ユーザコマンドは、メールアプリケーションの受信ボックスに到達するためにショートカットを利用するなど、所望の目標状態を示すコマンドであってもよい。いくつかの例示的な実施形態では、コマンドは、所望の状態へのユビキタスなショートカットを呼び出すことであってもよい。コマンドは、デバイスの任意の状態において適用可能であってもよく、その特定の開始状態に限定されない。ユーザコマンドは、音声コマンドまたは非音声コマンドであってもよい。
【0119】
ステップ720において、コンピューティングデバイスの現在の状態を判定することができる。状態は、例えば、UIのレイアウト、および、そのようなレイアウトの保持されているレイアウトに対する比較に基づいて決定することができる。いくつかの例示的な実施形態では、現在の状態の識別は、UI要素(例えば、チェックボックス、クリック可能オブジェクトなどのインタラクティブUI要素、画像、表示テキストなどのような非インタラクティブUI要素)の一意かつ永続的な識別子を必要とし得、この識別子は、将来の実行において、および、同じソフトウェアが、異なるユーザのデバイスのような別のデバイス上で実行されるときに、同じままである。識別子は、表示ラベル(例えば、チェックボックスに近いテキスト、ボタン上の画像など)に基づいてもよい。付加的または代替的に、識別子は、表示ラベルが経時的に変化し得る、異なるユーザに対して異なり得るなど、表示ラベルに基づいていなくてもよい。
【0120】
ステップ730において、現在の状態から目標の状態に状態を変更するように構成された動作シーケンスを得ることができる。動作シーケンスは、リポジトリから取り出すことができる。付加的または代替的に、動作シーケンスは、リポジトリに保持されている2つ以上の動作シーケンス(またはその一部)を融合することによって生成されてもよい。
【0121】
いくつかの例示的な実施形態では、遷移グラフを決定することができる。遷移グラフは、どの動作シーケンス(またはその一部)がある状態から別の状態に切り替えるために使用され得るかを示し得る。遷移グラフは、ノードおよびエッジを含むことができる。遷移グラフ内のノードは、コンピューティングデバイス内の状態に対応することができる。ソースノードと宛先ノードとの間を接続する遷移グラフの有向エッジは、ソースノードに対応する状態において適用可能であり、コンピューティングデバイスの状態を、宛先ノードに対応する状態に変更するように構成された、保持されている動作シーケンスまたはその一部に対応することができる。いくつかの例示的な実施形態では、グラフの重み付けを行うことができ、エッジの重みは、シーケンス動作の実行に成功する可能性を示すことができる。
【0122】
いくつかの例示的な実施形態では、遷移グラフを分析して(732)、現在の状態から目標状態へのパスを決定することができる。パスは、1つまたは複数のシーケンス動作またはその一部を使用して状態を現在の状態から目標状態に変更するために実行される連続する動作のセットを含む合成動作シーケンスを示すことができる。いくつかの例示的な実施形態では、パスは、複数の代替パスの間で選択されてもよい。この選択は、対応する合成動作シーケンスの実行に成功する可能性に基づくことができる。いくつかの例示的な実施形態では、選択は、最高累積スコアを有するパスを選択することによって実行されてもよく、累積スコアは、パス内のエッジのスコアに基づいてもよい。付加的にまたは代替的に、累積スコアは、各追加動作についてスコアを減少させることなど、合成動作シーケンスに含まれる複数の動作によって影響され得る。
【0123】
いくつかの例示的な実施形態では、動作シーケンスは、2つ以上の動作シーケンスを融合することによって合成されてもよい(734)。
【0124】
いくつかの例示的な実施形態では、第1の保持されている動作シーケンスの一部および第2の保持されている動作シーケンスの一部を識別することができる。第1の保持されている動作シーケンスの一部は、最初に順序付けされている動作および最後に順序付けされている動作を有することができる。最初に順序付けされている動作は、現在の状態において適用可能であり、最後に順序付けされている動作は、コンピューティングデバイスの状態を中間状態に変更するように構成され得る。第2の保持されている動作シーケンスの一部は、最初に順序付けされている動作および最後に順序付けされている動作を有することができる。最初に順序付けされている動作は、中間状態において適用可能であり得る。いくつかの例示的な実施形態では、第2の保持されている動作シーケンスの一部の最後に順序付けされている動作は、目標状態に達するように構成されてもよい。付加的または代替的に、最後に順序付けされている動作は、第2の中間状態に達するように構成されてもよく、その後、1つまたは複数の追加の動作シーケンスが融合されて目標状態に到達してもよい。
【0125】
いくつかの例示的な実施形態では、合成動作シーケンスは、順序付けされている動作シーケンス(またはその一部)のセットに基づくことができる。いくつかの例示的な実施形態では、連続した動作が同じ状態のままであり得る場合でも、目標状態に到達する、順序付けされている動作シーケンスのセット内の最初の動作は、合成された動作シーケンスの最後に順序付けされた動作であり得る。そのようなカットオフは、合成動作シーケンスにおける動作の数を減らし、実行に成功する可能性を高め、冗長動作を実行することなく目標状態に達する効率を高めるのに有用であり得る。
【0126】
ステップ740において、合成動作シーケンスが実行され、それにより、ユーザによって示されるように、コンピューティングデバイスの状態が変化する。
【0127】
ここで、本開示の主題のいくつかの例示的な実施形態による、システムのブロック図を示す図9を参照する。
【0128】
コンピューティングデバイス900は、すべて本開示の主題に従って、新しい動作シーケンスの記録、既存の動作シーケンスの実行、GUI修正などを提供するように構成することができる。
【0129】
いくつかの例示的な実施形態では、コンピューティングデバイス900は、プロセッサ902を備えることができる。プロセッサ902は、中央処理装置(CPU)、マイクロプロセッサ、電子回路、集積回路(IC)などであってもよい。プロセッサ902は、コンピューティングデバイス900またはそのいずれかのサブコンポーネントによって要求される計算を実行するために利用されてもよい。
【0130】
本開示の主題のいくつかの例示的な実施形態では、コンピューティングデバイス900は、入出力(I/O)モジュール905を備えることができる。I/Oモジュール905は、ユーザに出力を提供し、ユーザから入力を受信するために利用されてもよい。いくつかの例示的な実施形態では、I/Oモジュール905を使用して、スピーカ、ヘッドセットなどを介して、ユーザに対する音響を再生することができる。いくつかの例示的な実施形態では、I/Oモジュール905を使用して、例えば、スクリーンディスプレイを使用して、ユーザに表示を提供することができる。いくつかの例示的な実施形態では、I/Oモジュール905を使用して、マイクロフォンによる音声コマンド、タッチスクリーン、ポインティングデバイス、キーボードなどの入力デバイスを使用するコマンドなどのユーザコマンドを受信することができる。一部の例示的な実施形態では、I/Oモジュール905は、サーバ910と通信するように構成することができる。
【0131】
いくつかの例示的な実施形態では、コンピューティングデバイス900は、メモリ907を備えることができる。メモリ907は、ハードディスクドライブ、フラッシュディスク、ランダムアクセスメモリ(RAM)、メモリチップなどであってもよい。いくつかの例示的な実施形態では、メモリ907は、プロセッサ902にコンピューティングデバイス900のサブコンポーネントのいずれかに関連する動作を実行させるように動作するプログラムコードを保持することができる。
【0132】
メモリ907は、動作シーケンスプレーヤ920を備えることができる。動作シーケンスプレーヤ920は、動作シーケンスを実行するように構成することができる。動作シーケンスは、サーバ910または別のソースから取得できる。いくつかの実施形態では、動作シーケンスは、ローカルリポジトリにローカルに保持することができ、ローカルリポジトリは、コンピューティングデバイス900および/またはその1人以上のユーザにアクセス可能なリモートリポジトリの一部を反映するように定期的に更新されてもよく、またはされなくてもよい。
【0133】
メモリ907は、状態決定器924を備えることができる。状態決定器924は、コンピューティングデバイス900の状態を決定するように構成することができる。状態は、作動中であり、コンピューティングデバイス900のディスプレイのフォアグラウンドにある、実行されているアプリケーションプログラムに基づいて決定することができる。付加的にまたは代替的に、状態は、コンピューティングデバイス900のディスプレイに提示されたGUIのレイアウトを分析することによって決定されてもよい。決定された状態は、ある状態から別の状態への遷移を可能にするために使用することができる。いくつかの例示的な実施形態では、動作シーケンスの実行の完了を可能にするために、動作シーケンスプレーヤ920によってある状態から別の状態への遷移を実行することができる。付加的にまたは代替的に、ユーザは、選択された目標状態に転送されることを要求することができる。現在の状態は、指示されたように状態を変更するために動作シーケンスがそこから実行されるべき現在の状態を識別するために、状態決定器924によって決定することができる。
【0134】
メモリ907は、動作シーケンスレコーダ932を備えることができる。動作シーケンスレコーダ932は、動作シーケンスを記録するように構成することができる。いくつかの実施形態では、記録は、ユーザによる明示的な先験的命令に基づいて、ユーザによる明示的な事後命令に基づいて、または暗黙的にかつユーザ命令に基づくことなく、実行されてもよい。いくつかの例示的な実施形態では、動作シーケンスレコーダ932は、コンピューティングデバイス900のGUIの要素との任意のユーザ対話の実行を監視することができる。いくつかの例示的な実施形態では、動作シーケンスレコーダ932は、各記録された動作における状態を判定するために状態決定器924を利用することができる。いくつかの例示的な実施形態では、動作シーケンスレコーダ932は、そのような各シーケンスの使用統計を収集するように、動作シーケンスの実行を監視することができる。使用統計は、コンピューティングデバイス900上にローカルに保持されてもよいし、または、サーバ910などのサーバに送信されてもよい。
【0135】
メモリ907は、GUI音声エクステンダ936を備えることができる。GUI音声エクステンダ936は、本開示の主題に従って音声命令を可能にするようにGUIを修正するように構成されてもよい。GUI音声エクステンダ936は、GUIの各要素にレイアウト固有の識別子を割り当てるように構成することができ、これによりユーザは要素を音声で参照することができる。GUI音声エクステンダ936は、発話を分析して、提供される音声コマンドが動作シーケンスを実行するためのコマンドであるか、新しい動作シーケンスを記録するためのコマンドであるか、コンピューティングデバイス900の状態を目標状態に変更するためのコマンドであるか、GUI要素と対話するためのコマンドであるか、GUI要素の内容を読み上げるためのコマンドであるかなどを判定するように構成することができる。いくつかの例示的な実施形態では、GUI音声エクステンダ936は、受信した音声命令をユーザにエコーするように構成することができ、これにより、ユーザは、コンピューティングデバイス900が音声コマンドをどのように解釈したかを知ることができる。いくつかの例示的な実施形態では、動作シーケンスレコーダ932によってGUI音声エクステンダ936を利用して、動作シーケンスに記録されるべき動作の指示を受信することができる。
【0136】
サーバ910は、動作シーケンスを保持し、シーケンスをコンピューティングデバイス900などのデバイスによって利用可能にするように構成することができる。サーバ910は、コンピューティングデバイス900と同様に、プロセッサ(図示せず)、メモリ(図示せず)およびI/Oモジュール(図示せず)を備えることができる。
【0137】
サーバ910は、コンピューティングデバイス900などの複数のコンピューティングデバイスから更新することができ、それによって複数のソースからの情報を集約する。
【0138】
サーバ910は、動作シーケンスリポジトリ912を備えることができる。動作シーケンスリポジトリ912は、動作シーケンスを保持するリポジトリであってもよい。いくつかの例示的な実施形態では、動作シーケンスリポジトリ912は、各動作シーケンスのための1つまたは複数の割り当てられた識別子を含むことができる。いくつかの例示的な実施形態では、動作シーケンスリポジトリ912は、(1つまたは複数の)コンピューティングデバイス900から提供される監視情報に基づくなどして、各動作シーケンスの使用統計を保持することができる。
【0139】
サーバ910は、データ分析器914を備えることができる。データ分析器914は、動作シーケンスリポジトリ912内のデータを分析するように構成することができる。いくつかの例示的な実施形態では、データ分析器914は、(任意選択で、言語またはロケール情報に基づいて)シーケンス当たりの最も一般的な識別子を判定し、ユーザ定義シーケンスが他のユーザによる使用のために安全であるか否かを決定し、ユーザ定義シーケンスを他のユーザにとって利用可能にするか、または、いずれのユーザグループにとって利用可能にするかを決定し、シーケンスが悪意のあるシーケンスである可能性、シーケンスの実行が失敗する確率が高いこと等に基づいて、利用可能なシーケンスが利用不可能になるべきか否かを判定するなどのために、使用統計を分析するように構成することができる。
【0140】
本発明は、システム、方法、および/またはコンピュータプログラム製品であってもよい。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含むことができる。
【0141】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持し記憶することができる有形デバイスであってもよい。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、またはこれらの任意の適切な組み合わせであり得るが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非包括的なリストは、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラマブル読み出し専用メモリ(EPROMまたはフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスク読み出し専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピー(登録商標)ディスク、パンチカードまたは命令を記録されている溝内の隆起構造のような機械的に符号化されたデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書で使用されるコンピュータ可読記憶媒体は、無線波または他の自由に伝播する電磁波、導波管または他の伝送媒体を通って伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを介して伝送される電気信号などの一時的な信号自体であると解釈されるべきではない。
【0142】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、または、ネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワークおよび/またはワイヤレスネットワークを介して外部コンピュータまたは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータおよび/またはエッジサーバを含んでもよい。各コンピューティング/処理デバイス内のネットワークアダプタカードまたはネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するためにコンピュータ可読プログラム命令を転送する。
【0143】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Smalltalk、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組み合わせで書かれたソースコードまたはオブジェクトコードのいずれかであってもよい。コンピュータ可読プログラム命令は全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、独立したソフトウェアパッケージとして、部分的にユーザのコンピュータ上かつ部分的にリモートコンピュータ上で、または、全体的にリモートコンピュータまたはサーバ上で実行することができる。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または、接続は、外部コンピュータに対してなされてもよい(例えば、インターネットサービスプロバイダを使用してインターネットを介して)。いくつかの実施形態では、例えばプログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブル論理アレイ(PLA)を含む電子回路が、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、電子回路をパーソナライズすることができる。
【0144】
本発明の態様は、本明細書において、本発明の実施形態による方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図および/またはブロック図を参照して説明される。フローチャート図および/またはブロック図の各ブロック、ならびにフローチャート図および/またはブロック図のブロックの組み合わせは、コンピュータ可読プログラム命令によって実施できることが理解されよう。
【0145】
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されて、機械を生成することができ、それによって、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行する命令は、フローチャートおよび/またはブロック図の1つまたは複数のブロックで指定された機能/動作を実施するための手段を作成する。これらのコンピュータ可読プログラム命令は、コンピュータ、プログラム可能データ処理装置、および/または他のデバイスに、特定の様式で機能するように指示することができるコンピュータ可読記憶媒体に記憶することもでき、それによって、命令を記憶されているコンピュータ可読記憶媒体は、フローチャートおよび/またはブロック図の1つまたは複数のブロックにおいて指定された機能/動作の態様を実施する命令を含む製品を含む。
【0146】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされて、コンピュータ、他のプログラム可能装置または他のデバイス上で一連の動作ステップが実行されるようにすることもでき、それによって、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行する命令は、フローチャートおよび/またはブロック図の1つまたは複数のブロックにおいて指定された機能/動作を実施する。
【0147】
図面のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品の可能な実施態様のアーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を含むモジュール、セグメント、または命令の一部を表すことができる。いくつかの代替的な実施形態では、ブロックに記されている機能は、図に示された順序から外れて行われてもよい。例えば、連続して示される2つのブロックは、実際には実質的に同時に実行されてもよく、または、関連する機能に応じてブロックは時として逆の順序で実行されてもよい。また、ブロック図および/またはフローチャート図の各ブロック、ならびにブロック図および/またはフローチャート図のブロックの組み合わせは、特定の機能もしくは動作を実施し、または、専用ハードウェアとコンピュータ命令との組み合わせを実行する専用のハードウェアベースのシステムによって実施することができる。
【0148】
本明細書で使用する用語は、特定の実施形態を説明するためのものにすぎず、本発明を限定するものではない。本明細書で使用される場合、単数形「1つの(a、an)」および「この(the)」は、文脈がそうでないことを明確に示さない限り、複数形も含むことが意図される。本明細書で使用される場合、用語「備える(comprises)」および/または「備えている(comprising)」は、記載された特徴、整数、ステップ、動作、要素および/または構成要素の存在を特定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはそれらのグループの存在または追加を除外しないことがさらに理解されよう。
【0149】
添付の特許請求の範囲内のすべてのミーンズプラスファンクション要素またはステッププラスファンクション要素の対応する構造、材料、動作、および均等物は、他の特許請求されている要素と組み合わせて機能を実施するための任意の構造、材料、または動作を、具体的に特許請求されているように含むように意図されている。本発明の説明は、例示および説明のために提示されているが、網羅的であること、または開示されている形態の本発明に限定されるようには意図されていない。本発明の範囲および精神から逸脱することなく、多くの変更および変形が当業者には明らかであろう。この実施形態は、本発明の原理および実際の適用を最もよく説明し、当業者が、意図される特定の用途に適した様々な変更を伴う様々な実施形態について本発明を理解できるように選択され、記載されている。
図1
図2A
図2B
図2C
図3
図4
図5
図6
図7
図8A
図8B
図9