(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-29
(45)【発行日】2023-12-07
(54)【発明の名称】オートフィルフィールド分類のためのシステムおよび方法
(51)【国際特許分類】
G06F 3/0484 20220101AFI20231130BHJP
G06F 16/332 20190101ALI20231130BHJP
【FI】
G06F3/0484
G06F16/332
【外国語出願】
(21)【出願番号】P 2022115492
(22)【出願日】2022-07-20
(62)【分割の表示】P 2020546350の分割
【原出願日】2019-03-04
【審査請求日】2022-08-10
(32)【優先日】2018-03-06
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】レメ,フェリペ
(72)【発明者】
【氏名】ロング,ジェイソン
【審査官】三田村 陽平
(56)【参考文献】
【文献】特開2009-277026(JP,A)
【文献】特開2011-170757(JP,A)
【文献】特開2005-165826(JP,A)
【文献】特開2012-059248(JP,A)
【文献】米国特許出願公開第2012/0063684(US,A1)
【文献】国際公開第2014/115198(WO,A1)
【文献】米国特許出願公開第2015/0370478(US,A1)
【文献】米国特許出願公開第2014/0372861(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/01
G06F 3/048- 3/04895
G06F 16/00 -16/958
(57)【特許請求の範囲】
【請求項1】
方法であって、
アプリケーションについてのオートフィル要求をリモートプロバイダが受け付けるステップを含み、前記オートフィル要求は、ユーザデバイスのユーザインターフェース(UI)上に前記アプリケーションによって表示されるコンテンツのサブセットを含み、前記方法は、さらに、
前記オートフィル要求を受け付けたことに
応じて、前記リモートプロバイダが1つ以上の候補ユーザ値を決定するステップと、
前記1つ以上の候補ユーザ値、および前記UI上で前記アプリケーションが表示するテキスト入力フィールドについてのフィールド分類要求を前記リモートプロバイダが送信するステップと、
前記リモートプロバイダが前記ユーザデバイスから前記フィールド分類要求に対する応答を受け付けるステップとを含み、前記応答は、前記1つ以上の候補ユーザ値のうち少なくとも1つについての類似度メトリックを含み、前記類似度メトリックは、前記1つ以上の候補ユーザ値のうち前記少なくとも1つに対する前記テキスト入力フィールドのユーザ入力値の比較に基づく、方法。
【請求項2】
前記1つ以上の候補ユーザ値のうち前記少なくとも1つについての前記類似度メトリックは、編集距離モデルを適用することにさらに基づく、または、基盤となる比較モデルを適用することにさらに基づき、前記基盤となる比較モデルは、オートフィル要求間で更新可能である、請求項1に記載の方法。
【請求項3】
前記リモートプロバイダが1つ以上の基盤となる比較モデルを受け付けるステップと、
前記リモートプロバイダが前記1つ以上の基盤となる比較モデルから選択された基盤となる比較モデルを送信するステップとをさらに含み、前記1つ以上の候補ユーザ値の各々についての前記類似度メトリックは、前記選択された基盤となる比較モデルを適用することにさらに基づく、請求項1または請求項2に記載の方法。
【請求項4】
前記1つ以上の候補ユーザ値は、複数の候補ユーザ値を含み、前記応答は、前記複数の候補ユーザ値のうち最も一致するユーザ値についての前記類似度メトリックを含む、請求項1~請求項3のいずれか1項に記載の方法。
【請求項5】
前記1つ以上の候補ユーザ値は、複数の候補ユーザ値を含み、前記応答は、前記複数の候補ユーザ値の各々についての前記類似度メトリックを含む、請求項1~請求項3のいずれか1項に記載の方法。
【請求項6】
前記フィールド分類要求は、前記アプリケーションによって前記UI上に表示される追加のテキスト入力フィールドをさらに示し、前記方法は、さらに、
前記リモートプロバイダが追加の応答を受け付けるステップを含み、前記追加の応答は、前記1つ以上の候補ユーザ値のうち少なくとも1つの追加のユーザ値についての追加の類似度メトリックを含み、前記1つ以上の候補ユーザ値のうち前記少なくとも1つの追加のユーザ値についての前記追加の類似度メトリックは、前記追加のテキスト入力フィールドの追加のユーザ入力値に基づく、請求項1~請求項5のいずれか1項に記載の方法。
【請求項7】
前記フィールド分類要求は、前記アプリケーションによって前記UI上に表示される追加のテキスト入力フィールドをさらに示し、前記方法は、さらに、
前記リモートプロバイダが前記オートフィル要求に
応じて1つ以上の追加の候補値を送信するステップを含み、前記1つ以上の追加の候補値は、前記1つ以上の候補ユーザ値とは異なり、前記方法は、さらに、
前記リモートプロバイダが追加の応答を受け付けるステップを含み、前記追加の応答は、前記1つ以上の追加の候補値のうち少なくとも1つについての追加の類似度メトリックを含み、前記追加の類似度メトリックは、前記1つ以上の追加の候補値のうち前記少なくとも1つに対する前記追加のテキスト入力フィールドの追加のユーザ入力値の比較に基づく、請求項1~請求項5のいずれか1項に記載の方法。
【請求項8】
前記ユーザデバイスが受け付ける候補ユーザ値の所定最大数を前記リモートプロバイダが受け付けるステップをさらに含み、前記1つ以上の候補ユーザ値を送信するステップは、前記1つ以上の候補ユーザ値のうち前記所定最大数未満の候補ユーザ値を送信するステップを含む、請求項1~請求項7のいずれか1項に記載の方法。
【請求項9】
前記ユーザデバイスが受け付ける候補ユーザ値のフィールド当たりの所定最大数を前記リモートプロバイダが受け付けるステップをさらに含み、前記1つ以上の候補ユーザ値を送信するステップは、前記フィールド当たりの所定最大数未満の候補ユーザ値を送信するステップを含む、請求項1~請求項7のいずれか1項に記載の方法。
【請求項10】
前記ユーザデバイスが受け付ける所定最小文字数を前記リモートプロバイダが受け付けるステップをさらに含み、前記1つ以上の候補ユーザ値を送信するステップは、少なくとも前記所定最小文字数を送信するステップを含む、請求項1~請求項9のいずれか1項に記載の方法。
【請求項11】
数字のみを含む候補ユーザ値の第1の所定最小文字数、および少なくとも1つの数値以外の文字を含む第2の候補ユーザ値の第2の所定最小文字数を前記リモートプロバイダが受け付けるステップをさらに含み、前記1つ以上の候補ユーザ値を送信するステップは、
前記1つ以上の候補ユーザ値が数字のみを含む場合に、前記1つ以上の候補ユーザ値の各々についての前記第1の所定最小文字数を少なくとも送信するステップと、
前記1つ以上の候補ユーザ値が少なくとも1つの数値以外の文字を含む場合に、前記1つ以上の候補ユーザ値の各々についての前記第2の所定最小文字数を少なくとも送信するステップとを含む、請求項1~請求項9のいずれか1項に記載の方法。
【請求項12】
前記リモートプロバイダがユーザ入力フィールドの所定最大数を受け付けるステップをさらに含み、前記フィールド分類要求についての前記ユーザ入力フィールドの数は、前記ユーザ入力フィールドの所定最大数に限定される、請求項1~請求項11のいずれか1項に記載の方法。
【請求項13】
前記リモートプロバイダが所定最大頻度を受け付けるステップをさらに含み、前記リモートプロバイダが受け付ける前記アプリケーションについての前記フィールド分類要求は、前記所定最大頻度に限定される、請求項1~請求項11のいずれか1項に記載の方法。
【請求項14】
前記リモートプロバイダがフィールド分類要求の所定最大数を受け付けるステップをさらに含み、前記リモートプロバイダが受け付ける前記アプリケーションについての前記フィールド分類要求は、前記フィールド分類要求の所定最大数に限定される、請求項1~請求項13のいずれか1項に記載の方法。
【請求項15】
前記リモートプロバイダがフィールド分類要求のフィールド当たりの最大数を受け付けるステップをさらに含み、前記リモートプロバイダが受け付けるテキスト入力フィールドごとの前記フィールド分類要求は、前記フィールド分類要求のフィールド当たりの最大数に限定される、請求項1~請求項13のいずれか1項に記載の方法。
【請求項16】
前記アプリケーションが表示する追加のテキスト入力フィールドのオートフィル値を前記オートフィル要求に
応じて前記リモートプロバイダから送信するステップをさらに含み、前記オートフィル値を送信することで、前記オートフィル値が前記追加のテキスト入力フィールドに表示される、請求項1~請求項15のいずれか1項に記載の方法。
【請求項17】
所定のオペレーティングシステムリソース割り当てが超過した後に、さらなる候補ユーザ値またはさらなるフィールド分類要求を前記リモートプロバイダが送信するステップをさらに含み、前記さらなる候補ユーザ値および前記さらなるフィールド分類要求は、前記ユーザデバイスによって拒否される、請求項1~請求項16のいずれか1項に記載の方法。
【請求項18】
前記リモートプロバイダが送信する1つ以上の後続のフィールド分類要求は、前記1つ以上の候補ユーザ値を含むキャッシュされたオブジェクトによって満たされる、請求項1~請求項17のいずれか1項に記載の方法。
【請求項19】
1以上のプロセッサと、
命令を格納したコンピュータによる読み取りが可能な不揮発性記録媒体と、を備え、前記命令は、前記1以上のプロセッサによって実行されることにより、前記1以上のプロセッサに請求項1~請求項18のいずれか1項に記載の方法を実施させる、コンピューティング装置。
【請求項20】
1以上のプロセッサによって実行されることにより前記1以上のプロセッサに請求項1~請求項18のいずれか1項に記載の方法を実施させる命令を備える、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本願は、2018年3月6日に出願された米国仮出願第62/639,471号に基づく優先権を主張し、当該出願のすべての記載内容を、本明細書に完全に記載されているかのように引用により本明細書に援用する。
【背景技術】
【0002】
背景
モバイル機器、携帯電話、パーソナルコンピュータ、およびタブレット端末を含む多くの最新コンピューティングデバイスは、ユーザがコンピューティングデバイスとやり取りすることを可能にするユーザインターフェース(UI)を提供する。たとえば、このUIを使って、アプリケーションプログラムは、画像、テキスト、ならびに、ウインドウ、ダイアログボックス、ポップアップ画面、画像、ボタン、スクロールバー、およびアイコンなどのグラフィカル要素を利用しているユーザとコミュニケーションをとることができる。また、UIは、タッチスクリーン、存在感知ディスプレイ、コンピュータマウス、キーボードなどのデバイス、および、その他のデバイスからの入力を受け付けて、ユーザがUIを、そしてそれによって、アプリケーションプログラムを制御できるようにする。
【0003】
場合によっては、オペレーティングシステムとやり取りをしてコンピューティングデバイスを管理するためにUIを利用することができる。たとえば、オペレーティングシステムは、オーディオコントロール、映像出力、コンピュータメモリ、およびオペレーティングシステムが使用するヒトの言語(複数可)(たとえば、英語、フランス語、マンダリン、ヒンディー語、ロシア語などで情報を受け付けるために選択される)など、コンピューティングデバイスのいくつかの態様(複数可)についての制御設定に関する1つ以上のウインドウをUIを使用して描く操作パネルまたは設定用アプリケーションを有し得る。操作パネル/設定用アプリケーションは、UIを使用して、ウインドウ(複数可)に関する次の入力を受け付けることができる。UIは、操作パネル/設定用アプリケーションを介してオペレーティングシステムへの入力を行ってコンピューティングデバイスを管理することができる。
【0004】
しかしながら、UIにデータを手入力することは、ユーザにとって不便であったり、時間がかかったり、および/または面倒であり得、特に、UIが小さいモバイル機器上では間違いが起こる可能性がある。
【発明の概要】
【課題を解決するための手段】
【0005】
概要
例示的な実施の形態は、ユーザデバイスのオペレーティングシステムが、ユーザが入力したデータをユーザデバイスに格納することなくクラウドソーシングおよび採点(スコアリング)することに基づいて、リモートプロバイダの助けを借りてアプリケーションのオートフィル(自動入力)データを提供できるようにするシステムに関する。より具体的には、ユーザがセンシティブなまたは機密情報を入力すると分かった上で、ユーザデバイスのオペレーティングシステムは、ユーザデバイスのユーザインターフェース(UI)上でアプリケーションによって表示される、そのユーザに固有の固有情報を除外したコンテンツのサブセットを決定してもよい。次に、別の態様では、オペレーティングシステムは、このコンテンツのサブセットを使用してオートフィル要求を生成し、アプリケーションのリモートプロバイダに送信してもよい。これに加えて、この要求に基づいて、オペレーテ
ィングシステムは、UI上にアプリケーションによって表示されるテキスト入力フィールドについてのフィールド分類要求と少なくとも1つ以上の候補ユーザ値とを含んだ応答をリモートプロバイダから受け付けてもよい。さらには、オペレーティングシステムは、テキスト入力フィールドにユーザ入力を検出し、テキスト入力フィールドにユーザ入力値を検出することに応答して1つ以上の候補ユーザ値の各々に対するユーザ入力値の比較に基づいて1つ以上の候補ユーザ値の各々についての類似度メトリックを決定してもよい。さらに別の態様では、オペレーティングシステムは、フィールド分類要求に対する応答をリモートプロバイダに送信してもよい。この応答は、1つ以上の候補値のうちの少なくとも1つの候補値についての類似度メトリックを含む。
【0006】
一態様では、ユーザデバイスのユーザインターフェース(UI)上にアプリケーションによって表示されるコンテンツのサブセットを決定するステップを含む方法を提供し、サブセットは、ユーザ固有情報を除外している。この方法は、さらに、アプリケーションについてのオートフィル要求をリモートプロバイダに送信するステップを含み、オートフィル要求は、UI上に表示されるコンテンツのサブセットを含む。またh、方法は、オートフィル要求に応答して、UI上でアプリケーションが表示するテキスト入力フィールドについてのフィールド分類要求および1つ以上の候補ユーザ値をリモートプロバイダから受け付けるステップを含む。これに加えて、方法は、テキスト入力フィールドにユーザ入力値を検出するステップを含む。方法は、さらに、記テキスト入力フィールドにユーザ入力値を検出することに応答して、1つ以上の候補ユーザ値の各々に対するユーザ入力値の比較に基づいて1つ以上の候補ユーザ値の各々についての類似度メトリックを決定するステップを含む。また、方法は、フィールド分類要求に対する応答をリモートプロバイダに送信するステップとを含み、応答は、1つ以上の候補ユーザ値の少なくとも1つについての類似度メトリックを含む。
【0007】
別の態様では、ユーザデバイスを提供する。このユーザデバイスは、ユーザインターフェース(UI)と、ユーザデバイスのUI上にアプリケーションによって表示されるコンテンツのサブセットを決定するように構成されるオペレーティングシステムとを備え、サブセットは、ユーザ固有情報を除外している。オペレーティングシステムは、さらに、アプリケーションについてのオートフィル要求をリモートプロバイダに送信するように構成され、オートフィル要求は、UI上に表示されるコンテンツのサブセットを含む。また、オペレーティングシステムは、オートフィル要求に応答して、UI上でアプリケーションが表示するテキスト入力フィールドについてのフィールド分類要求および1つ以上の候補ユーザ値をリモートプロバイダから受け付けるように構成される。これに加えて、オペレーティングシステムは、テキスト入力フィールドにユーザ入力値を検出するように構成される。オペレーティングシステムは、さらに、テキスト入力フィールドにユーザ入力値を検出することに応答して、1つ以上の候補ユーザ値の各々に対するユーザ入力値の比較に基づいて1つ以上の候補ユーザ値の各々についての類似度メトリックを決定するように構成される。また、オペレーティングシステムは、フィールド分類要求に対する応答をリモートプロバイダに送信するように構成され、応答は、1つ以上の候補ユーザ値の少なくとも1つについての類似度メトリックを含む。
【0008】
別の態様では、1つ以上のプロセッサによって実行可能な命令を格納した非一時的なコンピュータ読み取り可能な媒体を提供し、命令は、ユーザデバイスのオペレーティングシステムに機能を実行させる。機能は、ユーザデバイスのユーザインターフェース(UI)上にアプリケーションが表示するコンテンツのサブセットを決定することを含み、サブセットは、ユーザ固有情報を除外している。また、これらの機能は、アプリケーションについてのオートフィル要求をリモートプロバイダに送信することを含み、オートフィル要求は、UI上に表示されるコンテンツのサブセットを含む。これに加えて、これらの機能は、オートフィル要求に応答して、UI上でアプリケーションが表示するテキスト入力フィ
ールドについてのフィールド分類要求および1つ以上の候補ユーザ値をリモートプロバイダから受け付けることを含む。また、これらの機能は、テキスト入力フィールドにユーザ入力値を検出することを含む。これらの機能は、さらに、テキスト入力フィールドにユーザ入力値を検出することに応答して、1つ以上の候補ユーザ値の各々に対するユーザ入力値の比較に基づいて1つ以上の候補ユーザ値の各々についての類似度メトリックを決定することを含む。これに加えて、これらの機能は、フィールド分類要求に対する応答をリモートプロバイダに送信することとを含み、応答は、1つ以上の候補ユーザ値の少なくとも1つについての類似度メトリックを含む。
【0009】
別の態様では、UIと、少なくとも1つのプロセッサと、(少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに機能を実行させる)命令を格納した非一時的なコンピュータ読み取り可能な媒体とを備えるシステムを提供する。このシステムは、ユーザデバイスのユーザインターフェース(UI)上にアプリケーションによって表示されるコンテンツのサブセットを決定する手段を含み、サブセットは、ユーザ固有情報を除外している。このシステムは、さらに、アプリケーションについてのオートフィル要求をリモートプロバイダに送信する手段を含み、オートフィル要求は、UI上に表示されるコンテンツのサブセットを含む。またh、システムは、オートフィル要求に応答して、UI上でアプリケーションが表示するテキスト入力フィールドについてのフィールド分類要求および1つ以上の候補ユーザ値をリモートプロバイダから受け付ける手段を含む。これに加えて、システムは、テキスト入力フィールドにユーザ入力値を検出する手段を含む。システムは、さらに、記テキスト入力フィールドにユーザ入力値を検出することに応答して、1つ以上の候補ユーザ値の各々に対するユーザ入力値の比較に基づいて1つ以上の候補ユーザ値の各々についての類似度メトリックを決定する手段を含む。また、システムは、フィールド分類要求に対する応答をリモートプロバイダに送信する手段とを含み、応答は、1つ以上の候補ユーザ値の少なくとも1つについての類似度メトリックを含む。
【0010】
以上の概要は、例示にすぎず、限定ではない。例示の態様、実施の形態、および特徴に加えて、別の態様、実施の形態、および特徴は、図ならびに下記の詳細な説明および添付の図面を参照することによって明らかになるであろう。
【図面の簡単な説明】
【0011】
【
図1】例示的な実施の形態に係る、分散コンピューティングアーキテクチャを示す図である。
【
図2】例示的な実施の形態に係る、方法のフローチャートである。
【
図3A】例示的な実施の形態に係る、オートフィル要求をリモートプロバイダに送信し、リモートプロバイダから候補ユーザデータおよびフィールド分類要求を受け付ける第1デバイスのオペレーティングシステムを示す図である。
【
図3B】例示的な実施の形態に係る、第1モバイル機器上におけるアプリケーションのテキスト入力フィールドへの手作業によるデータのユーザ入力、およびオペレーティングシステムがユーザ入力データに基づいて1つ以上の類似度メトリックを生成してリモートプロバイダに送信する図を示す図である。
【
図4A】例示的な実施の形態に係る、オートフィル要求をリモートプロバイダに送信し、リモートプロバイダから候補ユーザデータおよびフィールド分類要求を受け付ける第2モバイル機器のオペレーティングシステムを示す図である。
【
図4B】例示的な実施の形態に係る、第2モバイル機器上におけるアプリケーションのテキスト入力フィールドへの手作業によるデータのユーザ入力、およびオペレーティングシステムがユーザ入力データに基づいて1つ以上の類似度メトリックを生成してリモートプロバイダに送信する図を示す図である。
【
図5】例示的な実施の形態に係る、オートフィル要求をリモートプロバイダに送信し、リモートプロバイダからオートフィル値を受け付けて表示する第3ユーザデバイスのオペレーティングシステムを示す図である。
【
図6】例示的な実施の形態に係る、例示的なコンピューティングデバイスの機能ブロック図である。
【発明を実施するための形態】
【0012】
詳細な説明
本明細書において、例示的な方法およびシステムを説明する。本明細書に記載する例示的な実施の形態もしくは特徴は、その他の実施の形態もしくは特徴よりも好ましいまたは有利であると必ずしも解釈されない。本明細書に記載の例示的な実施の形態は、限定ではない。本開示のシステムおよび方法の特定の態様を、本明細書において考えられる様々な異なる構成に配置したり組み合わせたりすることができることは、容易に理解されるであろう。
【0013】
さらには、図に示す特定の配置は、限定と考えられるべきではない。その他の実施の形態が図に示す各要素をより多くまたは少なく含み得ることを理解されたい。さらには、例示の要素のいくつかが組み合わされてもよく、省略されてもよい。さらには、例示的な実施の形態が図示されていない要素を含んでもよい。
【0014】
本明細書において一般的に説明し図示した本開示の態様を、本明細書において考えられる様々な異なる構成で配置したり、置き換えたり、組み合わせたり、分けたり、設計したりすることができることは、容易に理解されるであろう。
【0015】
I.概要
モバイル機器、携帯電話、パーソナルコンピュータ、およびタブレット端末を含むユーザデバイスが最新の通信ネットワークにおいて広く普及している。これらのデバイスの多くは、このようなネットワーク内での通信を容易にしつつ、1つ以上のアプリケーションを実行可能である。さらには、これらのデバイスの多くは、ユーザがユーザデバイスとやり取りすることを可能にする1つ以上のUIも提供する。
【0016】
たとえば、ユーザは、画像、テキスト、およびその他のグラフィカル要素の使用を通してユーザデバイス上のアプリケーションによって使用される情報を、UIを使って伝達してもよい。また、UIは、タッチスクリーン、存在感知ディスプレイ、コンピュータマウス、キーボードなど、ユーザデバイスに接続された非常に多くのデバイス、および、UI、つまり、アプリケーションをユーザが制御することを可能にするその他のデバイスから、入力を受け付けることができる。
【0017】
最良のシナリオでは、ユーザは、効果的かつ効率的にUIを使用してこのような情報を伝達できるようになる。しかしながら、ユーザがそのようにできることに対して、1つ以上の要因が限定を加えてしまう可能性がある。よって、このような限定のもとで操作している場合、より多くの情報を伝達する必要が高まると、これらの情報を効果的かつ効率的に伝達できることが制限される可能性がある。
【0018】
一例として、スクリーンが小さいユーザデバイスの場合、アプリケーションが使用する情報を伝達するために膨大な量のテキストをUIにキー入力することは、特に、ユーザが記憶し難いテキストでもある場合、非常に難しい。したがって、アプリケーションがこの情報を記憶できることは、アプリケーションが次回ユーザによって使われるときに情報を再伝達する必要がなくなるため、有利になるであろう。しかしながら、ユーザが通信しようと試みるアプリケーションの数が増えると、これらのアプリケーションに膨大な量のテキストを(初回時またはそれ以外の場合に)UIを利用して伝達することによって課され
る負担がユーザの重荷になる可能性があることは妥当であると思われる。また、これは、ユーザが入力した情報を個々のアプリケーションが記憶していたとしても当てはまる。その結果、このような情報を入力するよう要求されると、ユーザは、これらのアプリケーションにあまり関わらなくなる(または、その使用を完全にあきらめてしまう)であろう。
【0019】
これらの問題のいくつかは、ユーザデバイスのオペレーティングシステムを関与させて橋渡しとして機能させ、リモートプロバイダの助けを借りて複数のアプリケーション間のオートフィル(自動入力)を容易にするによって、このようなアプリケーションが使用する情報をユーザデバイスのユーザが効果的かつ効率的に伝達できるようにする方法、システム、およびデバイスを利用することによって対処できるであろう。具体的には、いくつかの例では、部分的に、オートフィル有効にし、認証されたリモートプロバイダがオートフィルにデータを提供できるようにし、オートフィルデータを取り出し、オートフィルデータを将来使用するために保存することによって、ユーザは、ユーザデバイスのオペレーティングシステムレベルでオートフィルを利用してもよい。
【0020】
しかしながら、オートフィル候補や要求と絶えずやり取りをしてオペレーティングシステムまたはリモートプロバイダによるオートフィルに関与させられることに苛立ったり疲労したりしてしまうユーザもいるであろう。この問題は、特に、ユーザがオートフィル処理およびオートフィルリモートプロバイダと以前やり取りを経験したことがある場合、ユーザに提供されるオートフィル候補が誤っていたり、誤って出されていたりすると、さらに浮き彫りになる。よって、ユーザのデバイス上に表示されたアプリケーションのどこにユーザのデータを自動入力するかをオートフィルリモートプロバイダが正確に分かっていることが理想である。
【0021】
残念ながら、ほとんどのオペレーティングシステム、アプリケーション、およびオートフィルリモートプロバイダはこのように動作せず、現在のところ、極めて信頼性が低いオプションにのみ依拠しているおそれがある。一例では、これらのサービスは、ヒューリスティクスおよびヒューリスティックデータを使用して、ユーザ入力データの正しい意味と、ユーザがこのデータを入力するまたは入力すべきテキスト入力フィールドとを考え出している可能性がある(たとえば、リモートプロバイダは、ビューのリソース識別子にユーザ名またはパスワードの部分文字列を探しているであろう)。しかし、これらのヒューリスティクスおよびヒューリスティックデータの問題としては、これらの信頼性が低く、データを単に手入力した場合よりも多くの時間と手間を無駄にしてしまうという、ユーザが通常避けたい真の問題につながることである。この非効率は、様々な局面で生じる。
【0022】
一例では、ユーザは、頻繁に誤って推測されるオートフィル入力データおよびテキスト入力フィールドを訂正するのに時間と手間を掛けている(たとえば、リモートプロバイダがユーザ名についてのオートフィルデータをパスワードフィールドに送信してしまう)。その他の例では、オペレーティングシステムまたはリモートプロバイダが自動入力可能なフィールドをまったく検出しないとユーザが認識している。これもまた、特に、ユーザがやり取りしている1つ以上のリモートプロバイダまたはアプリケーションの入力データが以前に保存済みであることをユーザが分かっている場合、ユーザには非常に苛立たしいであろう。
【0023】
しかし、詳細を上述したように、ユーザが入力するデータが将来のオートフィル利用のために使用されることについてユーザの同意が得られるまでは、リモートプロバイダは、将来のオートフィル利用のためにそのデータにアクセスすることができないので、ユーザが入力したデータの種類、程度、詳細、さらには、ユーザが入力したデータが将来のオートフィル利用のためにどのように使われるかについての見通しや方向性をリモートプロバイダがオペレーティングシステムに提供することは、難しい。
【0024】
さらには、セキュリティおよび/またはその他の理由で、自動入力されたユーザデータをユーザの同意なしにオペレーティングシステムがアプリケーションから公開してリモートプロバイダに提供(その逆も然り)しないであろう。よって、ユーザの固有情報をうっかり漏らしてしまったり、繰り返されるオートフィルプロンプトもしくは誤ったオートフィル入力要求でユーザに面倒をかけてしまったりすることなく、オペレーティングシステムがリモートプロバイダと動的にやり取りをし、インテリジェントに候補に挙げられたオートフィルデータを取得できるようになることについて、直接的ニーズがある。
【0025】
ユーザが入力したデータをユーザデバイスに格納したりユーザが同意する前に漏らしたりすることなくクラウドソーシングおよび(採点)スコアリングすることに基づいて、ユーザデバイスがリモートプロバイダの助けを借りてアプリケーションのオートフィルデータを用いてユーザに入力要求を行わせる方法、システム、およびデバイスに関する例示的な実施の形態を、本明細書に開示する。具体的には、本明細書に開示の例示的な実施の形態によって、ユーザに同意を求めるまたは同意する面倒をかけたり、モバイル機器の小さいUIフットプリントに基づいて理解したり伝えたりすることは非常に難しいであろう蓄積されたオプションを提示したりすることなく、ユーザに使用するようリモートプロバイダが提案するオートフィルデータをインテリジェントに知らせることができるようになる。同時に、ユーザを取り巻く固有情報を、最大限の配慮、守秘性、およびセキュリティで扱う必要もあるであろう。
【0026】
本明細書において提案するオートフィルのソリューションでは、ユーザのデータをクラウドソーシングのためにオートフィルサービスまたはリモートプロバイダに勝手気ままに送信する代わりに、これらのパーティが候補データをオペレーティングシステムに送信した後、ユーザがそのデータを入力したかどうかをオペレーティングシステムが確認する。言い換えると、高い近似レベルにおいて、例示的な実施の形態は、次のように動作し得る(1)モバイル機器のUI上に表示されるコンテンツのセキュアなサブセットに基づいて、モバイル機器のオペレーティングシステムがオートフィル要求をリモートプロバイダに送信する。(2)リモートプロバイダが一般的なユーザデータをモバイル機器のオペレーティングシステムに送信し、フィールド分類を要求していると入力要求に印を付ける。(3)ユーザがアプリケーションに入力した任意のデータに対する類似度メトリックに基づいて、さらなるオートフィル利用のためのフィールド分類結果を、オペレーティングシステムが返す。
【0027】
一例示的な実施の形態では、オペレーティングシステムは、ユーザデバイスのユーザインターフェース(UI)上にアプリケーションによって表示されるコンテンツのサブセットを決定してもよい。サブセットは、ユーザ固有情報を除外している。特に、ユーザは、コンピューティングデバイスとやり取りを行っていてもよく、そのデバイス上のアプリケーションとやり取りすると決めてもよい。オペレーティングシステムは、ユーザがアプリケーションとやり取りをしていることを認識し、かつ、当該アプリケーションに自動入力することに関連するとオペレーティングシステムが分かっているコンテンツが存在することを認識してもよい。
【0028】
一般に、UI上にアプリケーションによって表示されるコンテンツは、オペレーティングシステムが把握可能なアプリケーションに関する任意の情報を指す。一例では、このコンテンツは、ユーザデバイスのUI上に表示されるコンテンツの現在のビュー階層を含んでもよく、またはセンシティブおよび/もしくはプライベートな情報を含んでもよく、オペレーティングシステムは、ユーザ固有情報を除外したコンテンツのサブセットのみを決定する。
【0029】
別の態様では、オペレーティングシステムは、アプリケーションについてのオートフィル要求をリモートプロバイダに送信してもよい。オートフィル要求は、UI上に表示されるコンテンツのサブセットを含む。具体的には、ユーザ固有情報を除外した表示コンテンツのサブセットに基づいて、オペレーティングシステムは、このコンテンツのサブセット内の情報を含んだ要求またはこのコンテンツのサブセットに関連する情報を含んだ要求をこれらのリモートプロバイダに送信し、UIに表示された、特に、入力可能と思われるフィールドをリモートプロバイダに知らせてもよい。いずれのイベントにおいても、この要求は、UI上に表示されたコンテンツをリモートプロバイダにセキュアかつプライベートに構文解析させて、アプリケーションの自動入力を容易にするためにはどのような情報が有用であるかを判断させる(たとえば、アプリケーション上のどのテキスト入力フィールドを自動入力するかを決定する)ことができるので、オペレーティングシステムにとってもユーザにとっても有益であるであろう。
【0030】
また、いずれの場合であっても、オペレーティングシステムは、アプリケーションとともに使用するためのオートフィル要求(UI上に表示されるコンテンツのサブセットを含む)を送信してもよい。いくつかの例では、この要求は、アプリケーションの起動に応答して送信されてもよい。いくつかの例では、この要求は、アプリケーションのテキスト入力フィールドの選択に応答して送信されてもよい。
【0031】
さらに別の態様では、オペレーティングシステムは、オートフィル要求に応答して、UI上にアプリケーションによって表示されるテキスト入力フィールドについてのフィールド分類要求および1つ以上の候補ユーザ値をリモートプロバイダから受け付けてもよい。一般に、リモートプロバイダから受け付けた応答は、自動入力を容易にする際にオペレーティングシステムにもリモートプロバイダにも役立つデータを提供してもよい。
【0032】
一例では、応答は、以前にユーザによって入力されたおよび/またはアプリケーションまたはその他のアプリケーションにおいて自動入力されたユーザ値と相関しているとリモートプロバイダが判断する1つ以上の候補ユーザ値に基づいて自動入力を容易にする際にオペレーティングシステムにとって役立つデータを含んでもよい。これにより、リモートプロバイダは、アプリケーションおよびUIを介してユーザにオートフィル値を提案しようと試みる前に、ユーザに面倒をかけたり身動き出来なくさせたりすることなくアプリケーションにおいてオートフィルテキストフィールドを正確に特定できるようになることを期待して、オペレーティングシステムに候補ユーザ値を提供してもよい。しかし、同時に、オペレーティングシステムは、リモートプロバイダによる、(たとえば、特に、規模を多くのユーザに拡げた場合、過剰な量の候補ユーザ値を、それらのいくつかが最終的にアプリケーション上の表示テキストフィールドに一致するであろうと期待して送信することによって)オートフィル値をユーザに提案するための最良の方法を特定するために行われる「ブルートフォース(総当たり)」攻撃に圧倒されたくはないであろう。このブルートフォース攻撃を根絶するために、例示的な実施の形態では、オペレーティングシステムは、複数の戦術を利用し得る。
【0033】
たとえば、オペレーティングシステムは、以下のように限定するインターフェース(たとえば、アプリケーションプログラミングインターフェースまたはAPI)を介して、リモートプロバイダから候補ユーザ値および/またはフィールド分類要求を受け付け得る。(1)1つ以上の予め定められた要因に基づいて、リモートプロバイダから受け付ける候補ユーザ値の総数を限定する、(2)候補ユーザ値自体の特徴を、候補ユーザ値の1つ以上の特性または特徴に基づいて限定する、(3)フィールド分類要求の全体数を、フィールド分類要求の所定最大数またはフィールド分類要求が受け付けられる頻度に基づいて限定する、(4)ユーザ入力フィールドの所定最大数に基づいて、フィールド分類要求のためのユーザ入力フィールドの数を限定する、および/または(5)テキスト入力フィール
ドごとのフィールド分類要求の数を、フィールド分類要求のフィールド当たりの所定最大数に限定する(たとえば、インターフェースは、テキスト入力フィールド当たり3個を超えるフィールド分類要求を認めない)。
【0034】
候補ユーザ値およびフィールド分類要求に加えて、リモートプロバイダは、オペレーティングシステムのオートフィル要求に応答して、オペレーティングシステムがオートフィルを容易にする際に有用な追加情報を提供してもよい。たとえば、候補ユーザ値およびフィールド分類要求に加えて、リモートプロバイダは、アプリケーションが表示する追加のテキスト入力フィールドに対するオートフィル値を提供してもよい。ここで、追加のテキストフィールドとは、すでにリモートプロバイダが正しく識別したテキストフィールドである。また、これに応答して、いくつかの例では、オペレーティングシステムは、追加のテキスト入力フィールドにオートフィル値を表示させてもよい。
【0035】
しかしながら、これらのシナリオのいずれにおいても、リモートプロバイダは、オペレーティングシステムの期待またはインターフェースの限定に応えられていない可能性がある。そして、いずれの場合も、リモートプロバイダによるアクセスを限定してしまう方法でオペレーティングシステムが対応してしまうことにつながり得る。たとえば、オペレーティングシステムのリソースまたはその一部の所定の割り当て分が、本明細書に記載の処理に充てられていてもよく、この所定のリソース割り当てが超過したと判断した場合、オペレーティングシステムは、それを改善する動作を行ってもよい(たとえば、1つ以上のリモートプロバイダから候補ユーザ値またはフィールド分類要求をさらに受け付けることを拒否する)。
【0036】
また、別の態様では、オペレーティングシステムは、フィールド分類要求が受け付けられたテキスト入力フィールドにユーザ入力値を検出し、これに応答して、1つ以上の候補ユーザ値の各々に対するユーザ入力値の比較に基づいて1つ以上の候補ユーザ値の各々についての類似度メトリックを決定してもよい。いくつかの例では、この類似度メトリックは、リモートプロバイダが提供する候補ユーザ値のうちの1つ以上にユーザ入力された値がどれくらい類似しているかに基づいて生成されるスコアで表されてもよい。さらには、これらの類似度メトリックの演算の基盤となる方法(たとえば、基盤となる比較モデルまたはアルゴリズム)は、異なってもよく(たとえば、文字列マッチングモデルまたは編集距離モデル)、それどころか、動的であってもよい(たとえば、基盤となる比較モデルがオートフィル要求間で更新可能であり、それどころか、関連ソースまたはサードパーティソース(たとえば、Google Playストア)を通して取得されてもよい)。そして、これらの方法は、リモートプロバイダによって選択可能であってもよく(たとえば、オペレーティングシステムは、基盤となる比較モデルのリストをリモートプロバイダに送信し、リモートプロバイダが選択した基盤となる比較モデルに基づいて、当該選択された基盤となる比較モデルを適用することによって1つ以上の候補ユーザ値の各々についての類似度メトリックを決定してもよい)、および/または、デフォルトで設定されてもよい。
【0037】
さらに別の態様では、オペレーティングシステムは、フィールド分類要求に対する応答をリモートプロバイダに送信してもよい。この応答は、1つ以上の候補ユーザ値のうちの少なくとも1つの候補ユーザ値についての類似度メトリックを含む。いくつかの例では、この類似度メトリックの送信は、判断を行わない送信であってもよく(たとえば、オペレーティングシステムは、候補ユーザ値のすべてについて類似度メトリックを生成し、複数の候補ユーザ値の各々についての類似度メトリックを送信してもよい)、または、より対象を絞ったアナリティカルな送信であってもよい(たとえば、オペレーティングシステムは、候補ユーザ値のすべてについて類似度メトリックを生成するが、複数の候補ユーザ値のうち最も一致するユーザ値についての類似度メトリックのみを送信してもよい)。いず
れの場合であっても、類似度メトリックは、自動入力可能と思われるアプリケーションのフィールドをより良く特定するためにリモートプロバイダによって利用されてもよく、アプリケーションが同一ユーザまたは異なるユーザによって将来実行された場合に、より優れたオートフィルサービスをリモートプロバイダが提供できるようになる。
【0038】
II.分散コンピューティングアーキテクチャ
ここで、様々な実施の形態の詳細について言及する。実施の形態の例は、添付の図面に示す。下記の詳細な説明では、本開示および記載の実施の形態の十分な理解のために数々の具体的な詳細を説明する。しかしながら、これらの具体的な詳細がなくても本開示を実施することができる。その他、実施の形態の態様を不必要に曖昧にしないよう、周知の方法、プロシージャ、構成要素、および回路は、詳細に説明しない。
【0039】
図1は、例示的な実施の形態に係る、ネットワーク106を介してユーザデバイス104a、104b、104c、104d、104e、ならびにリモートプロバイダ112および114と通信を行うように構成されたサーバ装置108、110を有する分散コンピューティングアーキテクチャ100を示す。ネットワーク106は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、企業のイントラネット、公共インターネット、または、ネットワーク化されたコンピューティングデバイス間の通信経路を提供するように構成されたその他の種類のネットワークに相当し得る。また、ネットワーク106は、1つ以上のLAN、WAN、企業のイントラネット、および/または公共インターネットの組合せに相当し得る。
【0040】
図1ではユーザデバイスの小さな集合しか示していないが、分散アプリケーションアーキテクチャは、何十、何百、何千ものユーザデバイスにサービスを提供し得る。また、ユーザデバイス104a、104b、104c、104d、104e(または、任意の追加のプログラム可能なデバイス)は、リモートプロバイダの助けを借りて複数のアプリケーション間の自動入力を容易にすることにコンピューティングデバイスのオペレーティングシステムをユーザが関与させることができる任意の種類のコンピューティングデバイスであってもよく、一般的なラップトップコンピュータ、デスクトップコンピュータ、ウェアラブルコンピューティングデバイス、モバイルコンピューティングデバイス、ヘッドマウントデバイス(HMD)、ネットワーク端末、ワイヤレス通信装置(たとえば、スマートフォンまたは携帯電話)などである。いくつかの実施の形態では、ユーザデバイス104a、104b、および104cで示されているように、ユーザデバイスは、ネットワーク106に直接接続することができる。その他の実施の形態では、ユーザデバイス104dおよび104eで示されているように、ユーザデバイスは、ユーザデバイス104cなど、関連コンピューティングデバイスを介してネットワーク106に間接的に接続することができる。このような実施の形態では、ユーザデバイス104cは、ユーザデバイス104dおよび104eとネットワーク106との間で電子通信を通過させる関連コンピューティングデバイスとして動作することができる。
図1に示されていないさらに別の実施の形態では、ユーザデバイスは、ネットワーク106に直接および間接的に接続することができる。
【0041】
サーバ装置108、110は、要求に基づいてコンピュータおよびその他のデバイスにコンピュータ処理リソースおよびデータを分配するクラウドベースのサーバシステムの一部として動作し得る。特に、サーバ装置108、110は、ユーザデバイス104a~104eが要求する1つ以上のサービスを実行するように構成することができる。たとえば、サーバ装置108および/または110は、コンテンツをユーザデバイス104a~104eに提供することができる。別の態様では、サーバ装置108および/または110は、コンテンツをユーザデバイス104a~104eに直接提供してもよく、サードパーティから要求されたコンテンツ送信を容易にすることによって提供してもよい。このコン
テンツは、ウェブページ、ハイパーテキスト、スクリプト、コンパイルされたソフトウェアなどのバイナリデータ、画像、音声、および/または映像を含み得るが、これらに限定されない。コンテンツは、圧縮されたコンテンツおよび/または圧縮されていないコンテンツを含み得る。コンテンツは、暗号化されていてもよく、および/または暗号化されていなくてもよい。
【0042】
また、リモートプロバイダ112、114は、要求に基づいてコンピュータおよびその他のデバイスにコンピュータ処理リソースおよびデータを分配するクラウドベースのサーバシステムの一部として動作し得る。特に、リモートプロバイダ112、114は、例示的な実施の形態に従って、ネットワーク106上でコンテンツを提供、受け付け、格納、管理、および送信してもよい。たとえば、リモートプロバイダ112および/または114は、ユーザデバイス104a~104eが使用するコンテンツの要求を受け付け、コンテンツを含んだ応答を生成し、ネットワークに接続されたデバイスに送信することができる。
【0043】
例では、サーバ装置108および/または110は、リモートプロバイダ112および/または114の助けを借りてユーザデバイス104a~104e上の複数のアプリケーション間の自動入力を容易にするコンテンツを提供してもよい。これに加えて、サーバ装置108および/または110は、データベース、検索、演算、グラフィック、音声、映像、WorldWideWeb/インターネット利用、および/またはその他の機能のためのソフトウェアへのアクセスを、ユーザデバイス104a~104eに提供することができる。その他多くのコンテンツの応用例も可能である。
【0044】
III.方法のフローチャートおよび例示的な実施の形態
図2は、方法200を示すフローチャートを例示する。方法200は、UIを介してユーザデバイスのオペレーティングシステムによって表示されるアプリケーションのオートフィルサービスをリモートプロバイダがより適切に提供できるようにするために実行され得る。方法200は、
図1で例示および説明するように、ユーザデバイス104a~104eならびにリモートプロバイダ112および/または114、ならびに、場合によっては、サーバ108および/または110など、1つ以上のコンピューティングデバイスによって実行されてもよい。別の例では、方法200は、クラウドベースのシステムの一部として動作するユーザデバイス104a~104eならびにリモートプロバイダ112および/または114、場合によっては、サーバ108および/または110によって実行されてもよい。これに加えて、方法200は、
図1に具体的に例示したコンピューティングデバイス以外に、1つ以上のその他の種類のコンピューティングデバイスによって実行されてもよい。
【0045】
これに加えて、方法200のステップは、オペレーティングシステムによって完了されると下記に説明されるが、ユーザデバイスに関するその他の構成要素、アプリケーション、および/または技術が方法200のステップを実行できる。
【0046】
さらには、本明細書に記載のフローチャートに関連して説明する機能は、
図2に示すフローチャートに関連して説明する特殊機能ハードウェアモジュールおよび/もしくは構成済みの一般機能ハードウェアモジュール、専用の論理関数を実現するための、プロセッサによって実行されるプログラムコードの一部、決定、ならびに/またはステップとして実装され得ることを留意されたい。プログラムコードは、使用される場合、任意の種類のコンピュータ読み取り可能な媒体、たとえば、ディスクまたはハードドライブを含む記憶装置上などに格納され得る。
【0047】
これに加えて、
図2に示すフローチャートの各ブロックは、有線で接続され、処理にお
いて専用の論理関数を実行する回路を表し得る。別段の指定がない限り、
図2に示すフローチャートの機能は、記載の方法の全体的な機能が維持されている限り、関係する機能に応じて、図示した順序や説明した順序とは異なる順序で実行されてもよく、別々に説明された機能を実質的に同時に実行したり、いくつかの例では逆の順序で実行したりすることを含む。
【0048】
ブロック210において、方法200は、ユーザデバイスのユーザインターフェース(UI)上にアプリケーションによって表示されるコンテンツのサブセットを決定するステップを含んでもよい。サブセットは、ユーザ固有情報を除外している。特に、ユーザは、コンピューティングデバイスとやり取りを行っていてもよく、そのデバイス上のアプリケーションとやり取りすると決めてもよい。オペレーティングシステムは、ユーザがアプリケーションとやり取りをしていることを認識し、かつ、当該アプリケーションに自動入力することに関連するとオペレーティングシステムが分かっているコンテンツが存在することを認識してもよい。
【0049】
一般に、オペレーティングシステムは、共通してオートフィルに対応付けられた特定のデータを認識することができる。一例において、オペレーティングシステムは、アプリケーションに対応付けられたテキスト入力フィールドが共通のオートフィル記述子(たとえば、「Email」または「Username」)を含むまたは共通のオートフィル記述子に対応付けられていると認識し得る。
【0050】
一例では、オペレーティングシステムは、イベントのトリガ、たとえばオートフィルトリガイベントによって、UI上にアプリケーションによって表示されるコンテンツのサブセットの決定を開始し得る。このようなイベントは、デバイスとのユーザのやり取りの状態を含む、ユーザデバイスの現在の状態またはユーザデバイス上のアプリケーションに関する情報を提供し得る。また、オートフィルトリガイベントは、認証されたオートフィルに関与するタイミングをオペレーティングシステムに正しい時点で知らせるために使われてもよい。いくつかの例では、オートフィルトリガイベントは、デバイスとの直接または間接的なユーザのやり取りであり得る。しかしながら、一般に、オートフィルがユーザによって承認されると、デバイスとのユーザのやり取りは、オペレーティングシステムによって監視されるであろう。
【0051】
一実施の形態において、例示的なオートフィルトリガイベントは、シナリオの中でも、ユーザによるアプリケーションの起動またはユーザによるアプリケーションのテキスト入力フィールドの選択など、ユーザデバイスとのユーザの直接のやり取りに関連するデータによって示され得る。
【0052】
その他の例では、オートフィルトリガイベントは、シナリオの中でも、アプリケーションが起動されたことを示すシグナル、または、アプリケーションのテキスト入力フィールドもしくはユーザデバイスのUI上に表示されるコンテンツのその他のパラメータにフォーカスがセットされたことを示すシグナルなど、ユーザデバイスとのユーザの間接的なやり取りに関連するデータを含んでもよい。別の態様では、ユーザデバイスとのユーザの間接的なやり取りは、UI上に表示されたキーボードなどのグラフィックまたはGUIによって反映され得る。
【0053】
一般に、UI上にアプリケーションによって表示されるコンテンツは、オペレーティングシステムが把握可能なアプリケーションに関する任意の情報を指す。一例では、このコンテンツは、ユーザデバイスのUI上に表示されるコンテンツの現在のビュー階層を含んでもよい。しかしながら、コンテンツがセンシティブおよび/またはプライベートな情報も含んでいる可能性があるので、オペレーティングシステムは、ユーザ固有情報を除外し
たコンテンツのサブセットのみを決定する。
【0054】
いくつかの例では、ユーザ固有情報は、個人を特定できる情報またはその他の情報を含み得る。その他の情報とは、それ自体でまたはその他の情報とともに1人の人間を識別する、連絡をとる、もしくは位置を特定する、または、その他の情報またはデータの状況から個人を特定するために利用できる情報である。別の例では、ユーザ固有情報は、センシティブおよび/またはプライベートであるとユーザが指定した情報を含み得る。
【0055】
さらに別の例では、ユーザ固有情報は、ユーザに関連する1つ以上の要因に基づいてセンシティブおよび/またはプライベートであると指定された情報を含み得る。たとえば、ユーザ固有情報は、中でも、ユーザ、ユーザデバイス、および/もしくはリモートプロバイダが位置する地域に基づいてセンシティブおよび/またはプライベートであると指定された情報を含み得る。その他の例では、ユーザ固有情報は、ユーザの属性(たとえば、ユーザの年齢)に基づいてセンシティブおよび/またはプライベートであると指定された情報を含み得る。
【0056】
ブロック220において、方法200は、アプリケーションについてのオートフィル要求をリモートプロバイダに送信するステップをさらに含む。オートフィル要求は、UI上に表示されるコンテンツのサブセットを含む。この要求は、予め選択されたリモートプロバイダに送信されて、ユーザが以前にやり取りをしたことがあるもしくはやり取りしたことがないユーザデバイスまたは複数のリモートプロバイダ上でのオートフィル利用を容易にするのに役立てられてもよい。具体的には、ユーザ固有情報を除外した表示コンテンツのサブセットに基づいて、オペレーティングシステムは、このコンテンツのサブセット内の情報を含んだ要求またはこのコンテンツのサブセットに関連する情報を含んだ要求をこれらのリモートプロバイダに送信し、UIに表示された、特に、入力可能と思われるフィールドをリモートプロバイダに知らせてもよい。いずれのイベントにおいても、この要求は、UI上に表示されたコンテンツをリモートプロバイダにセキュアかつプライベートに構文解析させて、アプリケーションの自動入力を容易にするためにはどのような情報が有用であるかを判断させる(たとえば、アプリケーション上のどのテキスト入力フィールドを自動入力するかを決定する)ことができるので、オペレーティングシステムにとってもユーザにとっても有益であるであろう。
【0057】
いくつかの例では、要求は、UI上に表示されるテキスト入力フィールドに関連する情報を含んでもよい。一態様では、この情報は、テキスト入力フィールドに関連する1つ以上の記述子を含んでもよい。たとえば、これらの記述子は、中でも、「name」、「username」、「email」、「password」、「address」、「city」、「state」、「zip code」、「country」、「account number」、および/または「card number」などの用語を含んでもよい。
【0058】
その他の例では、要求は、ユーザデバイスの現在のビュー階層に関連する情報を含んでもよい。一態様では、この情報は、UI上に表示されるコンテンツのサブセットをコンパイルすることまたは保持することに関連する情報(たとえば、基盤となるスクリプトおよび/またはコード)を含んでもよい。別の態様では、この情報は、UI上に表示されるコンテンツのサブセットの特定の概算に関連する情報(たとえば、コンテンツのサブセットのワイヤーフレームを表すもの)を含んでもよい。さらに別の態様では、この情報は、UI上に表示されるコンテンツのサブセットのアーキテクチャに関連する情報(たとえば、リラティブレイアウト、リニアレイアウト、ボタンテーブルレイアウト、テーブル行、チェックボックス、および/またはその他の要素に関連する情報)を含んでもよい。
【0059】
いずれの場合であっても、オペレーティングシステムは、アプリケーションとともに使用するためのオートフィル要求(UI上に表示されるコンテンツのサブセットを含む)を送信してもよい。いくつかの例では、この要求は、アプリケーションの起動に応答して送信されてもよい。いくつかの例では、この要求は、アプリケーションのテキスト入力フィールドの選択に応答して送信されてもよい。
【0060】
さらに別の例では、この要求は、1つ以上のテキスト入力フィールドに関連するメタデータを含んでもよい。このメタデータは、その他のデータについての情報を提供するデータまたは情報であってもよい(たとえば、記述メタデータ(発見および識別などの目的でリソースを記述しており、タイトル、要約、作者、およびキーワードなどの要素を含み得る)、構造メタデータ(データのコンテナについての構造メタデータであり、複合オブジェクトがどのように組み立てられているか、たとえば、章を構成してデジタル素材および管理メタデータ(リソースがいつ、どのように作られたか、ファイルタイプおよびその他の技術情報、ならびにリソースにアクセスできる人物など、リソースを管理するのに役立つ情報を提供し得る)のタイプ、バージョン、関係性、およびその他の特徴を記述するために頁がどのように順序付けされているかなど、を示してもよい。)。
【0061】
ブロック230において、方法200は、オートフィル要求に応答して、UI上にアプリケーションによって表示されるテキスト入力フィールドについてのフィールド分類要求および1つ以上の候補ユーザ値をリモートプロバイダから受け付けるステップをさらに含んでもよい。一般に、リモートプロバイダから受け付けた応答は、自動入力を容易にする際にオペレーティングシステムにもリモートプロバイダにも役立つデータを提供してもよい。
【0062】
一例では、応答は、以前にユーザによって入力されたおよび/またはアプリケーションまたはその他のアプリケーションにおいて自動入力されたユーザ値と相関しているとリモートプロバイダが信じる1つ以上の候補ユーザ値に基づいて自動入力を容易にする際にオペレーティングシステムにとって役立つデータを含んでもよい。これにより、リモートプロバイダは、将来、ユーザに面倒をかけたりユーザの入力に頼ることなく、アプリケーションおよびUIを介してユーザにオートフィル値を提案しようと試みる前に入力フィールドに自動入力を行えるようにアプリケーションにおいてテキスト入力フィールドを特定できるようになることを期待して、オペレーティングシステムに候補ユーザ値を提供してもよい。
【0063】
しかしながら、同時に、オペレーティングシステムは、リモートプロバイダによる、(過剰な量の候補ユーザ値を、それらのいくつかが最終的にアプリケーション上の表示テキスト入力フィールドに一致するであろうと期待して送信することによって)オートフィル値をユーザに提案するための最良の方法を特定するために行われる「ブルートフォース(総当たり)」攻撃に圧倒されたくはないであろう。このブルートフォース攻撃を根絶するために、オペレーティングシステムは、複数の戦術を利用し得る。
【0064】
一例では、オペレーティングシステムは、1つ以上の予め定められた要因に基づいてリモートプロバイダから受け付ける候補ユーザ値の総数を限定するインターフェースを介してリモートプロバイダから候補ユーザ値を受け付けることができる。たとえば、このようなインターフェースは、候補ユーザ値の所定最大数に基づいて候補ユーザ値の全体数を限定し得る(たとえば、インターフェースは、任意の1つのリモートプロバイダから10個を超える候補ユーザ値を認めない)。別の例では、インターフェースは、テキスト入力フィールドごとの候補ユーザ値の数を、候補ユーザ値のフィールド当たりの所定最大数に限定し得る(たとえば、インターフェースは、テキスト入力フィールド当たり3個を超える候補ユーザ値を認めない)。
【0065】
さらに他の例では、インターフェースは、候補ユーザ値自体の特徴を、候補ユーザ値の1つ以上の特性または特徴に基づいて限定し得る。たとえば、インターフェースは、1つの特徴(たとえば、所定最小文字数)または複数の特徴(たとえば、インターフェースは、候補ユーザ値が数字のみを含む場合、1つ以上の候補ユーザ値の各々を第1の所定最小文字数に限定し、候補ユーザ値が少なくとも1つの数値以外の文字を含む場合、第2の所定最小文字数に限定し得る)に基づいて1つ以上の候補ユーザ値の各々を限定し得る。
【0066】
また、リモートプロバイダの候補ユーザ値と同様に、オペレーティングシステムは、オペレーティングシステムのオートフィル要求に応答してリモートプロバイダから受け付けるフィールド分類要求の種類または数を限定したいと思うであろう。たとえば、インターフェースは、フィールド分類要求の所定最大数(たとえば、インターフェースは、任意の1つのリモートプロバイダから10個を超えるフィールド分類要求を認めない)または、リモートプロバイダがフィールド分類要求を提供する頻度(インターフェースは、いずれのリモートプロバイダからも、1時間当たり10個を超えるフィールド分類要求を認めない)に基づいてフィールド分類要求の全体数を限定し得る。
【0067】
別の例では、インターフェースは、フィールド分類要求の数を、アプリケーションのユーザ入力フィールドの数に基づいて限定し得る(たとえば、インターフェースは、2つのユーザ入力フィールドしか存在しないことを理由に、10個を超えるフィールド分類要求を認めない。)。また、同様に、インターフェースは、テキスト入力フィールドごとのフィールド分類要求の数を、フィールド分類要求のフィールド当たりの所定最大数に限定し得る(たとえば、インターフェースは、テキスト入力フィールド当たり3個を超えるフィールド分類要求を認めない)。
【0068】
候補ユーザ値およびフィールド分類要求に加えて、リモートプロバイダは、オペレーティングシステムのオートフィル要求に応答して、オペレーティングシステムがオートフィルを容易にする際に有用な追加情報を提供してもよい。たとえば、候補ユーザ値およびフィールド分類要求に加えて、リモートプロバイダは、アプリケーションが表示する追加のテキスト入力フィールドに対するオートフィル値を提供してもよい(たとえば、リモートプロバイダは、さらに解析を行うことなく特定の追加のテキスト入力フィールドに対して自動入力するよう提案され得るオートフィル値を有していると分かっていてもよい)。また、これに応答して、いくつかの例では、オペレーティングシステムは、追加のテキスト入力フィールドにオートフィル値を表示させてもよい。
【0069】
しかしながら、これらのシナリオのいずれにおいても、リモートプロバイダは、オペレーティングシステムの期待もしくはインターフェースの限定、またはその両方に応えられていない可能性がある。そして、そうすることによって、リモートプロバイダによるアクセスを限定してしまうようにオペレーティングシステムが対応してしまうことにつながり得る。たとえば、オペレーティングシステムのリソースまたはその一部の所定の割り当て分が、本明細書に記載の処理に充てられていてもよい(たとえば、リモートプロバイダから候補ユーザ値およびフィールド分類要求を受け付けるために、オペレーティングシステムの所定システムリソース割り当て5%が充てられている)。さらには、いくつかの例では、この所定のリソース割り当てが超過したと判断した場合、オペレーティングシステムは、それを改善する動作を行ってもよい(たとえば、所定のリソース割り当て5%が超過したと判断することに応答して、オペレーティングシステムは、リモートプロバイダから候補ユーザ値またはフィールド分類要求をさらに受け付けることを拒否してもよい)。
【0070】
ブロック240において、方法200は、テキスト入力フィールドにユーザ入力値を検出するステップをさらに含んでもよい。ユーザ入力値は、ユーザが個々の文字、数字、ま
たは単語を入力(たとえば、キー入力)した場合に一定期間受け付けられてもよい。また、いつオペレーティングシステムが採点メトリックを生成してフィールド分類要求に対する応答を提供することができるかを判断するために、オペレーティングシステムは、フィールド分類要求を受け付けたテキスト入力フィールドを監視してもよい。
【0071】
ブロック250において、方法200は、テキスト入力フィールドにユーザ入力値を検出することに応答して、1つ以上の候補ユーザ値の各々に対するユーザ入力値の比較に基づいて当該1つ以上の候補ユーザ値の各々についての類似度メトリックを決定するステップをさらに含んでもよい。
【0072】
いくつかの例では、この類似度メトリックは、リモートプロバイダが提供する候補ユーザ値のうちの1つ以上にユーザ入力された値がどれくらい類似しているかに基づいて生成されるスコアで表されてもよい(たとえば、マッチがどれくらい正確であったかを伝えるスコア。ここで、このスコアは、テキスト入力フィールドIdに対応付けられたすべての候補ユーザ値の中で最高スコアである)。すなわち、1つのユーザ入力された値が(たとえば、email値が提案されている)第1のフィールド分類要求に対応する候補ユーザ値と完全一致(100%)であり、第2のフィールド分類要求(たとえば、ユーザ名が提案されている)に対応する別の候補ユーザ値に部分的にのみ一致(たとえば、40%)した場合、第1のフィールド分類要求に対応する類似度メトリックのほうが優れた一致であるとリモートプロバイダによって認識され得る。そのため、リモートプロバイダは、このフィールドがユーザ名フィールドよりもemailフィールドである可能性が高いと結論付け得る。
【0073】
さらには、これらの類似度メトリックの演算の基盤となる方法(たとえば、基盤となる比較モデルまたはアルゴリズム)は、異なってもよい(たとえば、文字列マッチングモデルまたは編集距離モデル)。別の態様では、これらの方法は、動的であってもよい(たとえば、基盤となる比較モデルがオートフィル要求間で更新可能であり、それどころか、関連ソースまたはサードパーティソース(たとえば、Google Playストア)を通して取得されてもよい)。
【0074】
また、これに加えて、リモートプロバイダによって選択可能であってもよい(たとえば、オペレーティングシステムは、基盤となる比較モデルのリストをリモートプロバイダに送信し、リモートプロバイダが選択した基盤となる比較モデルに基づいて、当該選択された基盤となる比較モデルを適用することによって1つ以上の候補ユーザ値の各々についての類似度メトリックを決定してもよい)。別の態様では、設定されていない場合、1つ以上の要因に基づいてオペレーティングシステムによってデフォルト方法(たとえば、アルゴリズム)が使われてもよい(たとえば、最も一般的に使われるモデルは、編集距離に基づくモデルであり得るため、デフォルトのマッチング方法として使われ得る)。
【0075】
ブロック260において、方法200は、フィールド分類要求に対する応答をリモートプロバイダに送信するステップをさらに含んでもよい。この応答は、1つ以上の候補ユーザ値のうちの少なくとも1つの候補ユーザ値についての類似度メトリックを含む。いくつかの例では、この類似度メトリックの送信は、判断を行わない送信であってもよい(たとえば、オペレーティングシステムは、リモートプロバイダによって送信された候補ユーザ値ごとにスコアを生成し、さらなる解析を行うことなくリモートプロバイダに送り返す)。言い換えると、いくつかの例では、リモートプロバイダから受け付けた1つ以上の候補ユーザ値は、複数の候補ユーザ値を含んでいる場合があり、これに応答して、オペレーティングシステムは、候補ユーザ値のすべてについて類似度メトリックを生成し、複数の候補ユーザ値の各々についての類似度メトリックを送信してもよい。しかしながら、その他のいくつかの例では、この送信は、より対象を絞ったアナリティカルな送信であってもよ
い。
【0076】
たとえば、いくつかの実施の形態では、リモートプロバイダから受け付けた1つ以上の候補ユーザ値は、複数の候補ユーザ値を含んでもよく、これに応答して、オペレーティングシステムは、候補ユーザ値のすべてについて類似度メトリックを生成するが、複数の候補ユーザ値のうち最も一致するユーザ値についての類似度メトリックのみを送信してもよい。
【0077】
IV.別の例示的な実施の形態
さらに別の例では、フィールド分類要求は、複数のテキスト入力フィールドを示し得る。いくつかの例では、同じセットの候補ユーザ値を使用して、テキスト入力フィールドの各々についての類似度メトリックを生成してもよい。オペレーティングシステムは、追加のテキスト入力フィールドに追加のユーザ入力値を検出してもよい。次に、追加のテキスト入力フィールドに追加のユーザ入力値を検出することに応答して、オペレーティングシステムは、1つ以上の候補ユーザ値の各々に対する追加のユーザ入力値の比較に基づいて当該1つ以上の候補ユーザ値の各々についての追加の類似度メトリックを決定し得る。これに加えて、オペレーティングシステムは、追加の応答をリモートプロバイダに送信してもよい。この追加の応答は、1つ以上の候補ユーザ値のうちの少なくとも1つについての追加の類似度メトリックを含む。
【0078】
その他の例では、異なるセットの候補ユーザ値を使用して、テキスト入力フィールドの各々についての類似度メトリックを生成してもよい。オペレーティングシステムは、オートフィル要求に応答して、1つ以上の追加の候補値をリモートプロバイダから受け付ける。当該1つ以上の追加の候補値は、1つ以上の候補ユーザ値とは異なる。また、別の態様では、オペレーティングシステムは、追加のテキスト入力フィールドに追加のユーザ入力値を検出してもよい。次に、追加のテキスト入力フィールドに追加のユーザ入力値を検出することに応答して、オペレーティングシステムは、1つ以上の追加の候補値の各々に対する追加のユーザ入力値の比較に基づいて当該1つ以上の追加の候補値の各々についての追加の類似度メトリックを決定してもよい。また、さらに別の態様では、オペレーティングシステムは、追加の応答をリモートプロバイダに送信してもよい。この追加の応答は、1つ以上の追加の候補値の少なくとも1つについての追加の類似度メトリックを含む。
【0079】
V.追加の説明図および例示的な実施の形態
第1モバイル機器上のアプリケーションとの第1のユーザのやり取りに基づいて、
図3Aは、例示的な実施の形態に係る、オペレーティングシステムがオートフィル要求をリモートプロバイダに送信し、フィールド分類要求と1つ以上の候補ユーザ値とをリモートプロバイダから受け付ける様子を示す。特に、携帯電話などのユーザデバイス302は、アプリケーション304の一部をユーザデバイス上に表示してもよい。また、アプリケーション304は、ユーザデバイス302のUI上に表示された共通のオートフィル記述子306(たとえば、「Email」)を含んだまたはこれに対応付けられたテキスト入力フィールドを含んでもよい。この例では、ユーザデバイス302のオペレーティングシステムが共通のオートフィル記述子306を認識すると、オペレーティングシステムは、オートフィル要求308をリモートプロバイダ310に送信してもよい。
【0080】
これに加えてこの例では、上述したように、このオートフィル要求308は、何らかのフォーカスがセットされたアプリケーションのテキスト入力フィールド(ここでは、表示キーボードを介してフィールドにテキストをキー入力することができることを示す縦線が「Email」テキスト入力フィールドにある)および/またはこのようなフォーカスがないテキスト入力フィールド(ここでは、「パスワード」テキスト入力フィールドは、このような縦線を有さない)に応答する要求であってもよい。
【0081】
しかしながら、これらのシナリオのいずれにおいても、オペレーティングシステムは、このようなオートフィル要求を送信する前に、UI上に表示された、ユーザ固有情報を除外したコンテンツのサブセットを決定する。このサブセットがオペレーティングシステムによって決定され、オペレーティングシステムがオートフィル要求を生成して送信するための何らかのイベントがトリガされると、オペレーティングシステムは、このオートフィル要求(ここでは、オートフィル要求308として示され、UI上に表示されるコンテンツのサブセットを含んでいる)を生成してリモートプロバイダに送信する。
【0082】
リモートプロバイダがオートフィル要求を受け付けると、少なくとも2つの情報をオペレーティングシステムに提供してもよい。(1)候補ユーザデータ312(候補ユーザ値「felipe@x.com」および「LemeF」を含む)、および(2)フィールド分類要求314(ここでは、「autofillId1」と示す)。
【0083】
第1のポイントを考えると、1つ以上の候補ユーザ値は、オペレーティングシステムがオートフィル要求308を送信するアプリケーションを自動入力することに関連し得るデータとしてリモートプロバイダによって提供され得る。ここでも、この例では、2つの候補ユーザ値は、「felipe@x.com」および「LemeF」と示す。
【0084】
本実施の形態の文脈において、以前に入力された候補ユーザデータ312がUserDataオブジェクトによって定義され、idと、field_id→list_of_valuesのマップとのペアを含んでもよい。ここで、idは、ユーザデータ全体を識別し(そのため、新バージョンの作成に使用され得る)、field_idは、フィールドタイプを表し、list_of_valuesは、そのフィールドに対応付けられたユーザ入力値のリストである。この例では、field_id「email」が「felipe@x.com」という値にマッピングされ、field_id「username」が「LemeF」にマッピングされる。
【0085】
また、本実施の形態の文脈において、idおよびfield_idの両方は、リモートプロバイダによって設定される任意の値であり、オペレーティングシステムによってブラックボックスとして扱われてもよいが、これらの処理をデバッグするのに役立つ意味のある値を含んでもよい。たとえば、そのような値を含んでいる場合、オペレーティングシステムは、この処理を下記に例示するコードを介して解析し得る。
【0086】
【0087】
さらには、いくつかの実施の形態では、UserDataは、リモートプロバイダに関連する、キャッシュされたオブジェクトであってもよいため、複数の要求において使われてもよい。別の態様では、そうしないことを選択する1つ以上の理由があり得るため(たとえば、セキュリティ目的)、UserDataは、永続化されなくてもよく(すなわち、一時的に格納される)、代わりに、オペレーティングシステムの再起動時または現在のユーザのリモートプロバイダが変更されたときもしくはリモートプロバイダがUserDataをリセットするときにクリアされてもよい。この点に関して、リモートプロバイダは、自動入力処理をさらに進める前に、UserDataが設定されているかどうかをチ
ェックしてもよい。例を以下に示す。
【0088】
【0089】
また、さらに別の実施の形態では、リモートプロバイダは、新バージョンの作成にidを使用してもよい。例を以下に示す。
【0090】
【0091】
また、第2のポイントを説明すると、オペレーティングシステムが同一ユーザまたは異なるユーザに関するオートフィル要求308を送信したアプリケーションの自動入力を容易にすることを促進する際にリモートプロバイダによってフィールド分類要求314が提供されてもよい。この例では、フィールド分類要求は、「autofillId1」と示す。
【0092】
本実施の形態の文脈において、リモートプロバイダは、FillResponseオブジェクトにおいてフィールド分類を明示的に要求してもよく、どのフィールドにおいてこのオブジェクトが使われるかを指定する。例を以下に示す。
【0093】
【0094】
別の態様では、オートフィルコンテキストがコミットされたとき、オペレーティングシステムは、リモートプロバイダが提供する2つの候補ユーザ値(「felipe@x.com」および「LemeF」として示されている)のいずれかが、ユーザが指示されたフィールド分類要求(ここでは、「autofillId1」として示されている)に対して手入力する値のいずれかと一致するかどうかを検証してもよい。しかしここでも、オートフィル値を提案するための最良の方法を特定するために行われるブルートフォース攻撃に圧倒されたくないので、オペレーティングシステムは、リモートプロバイダが送信した過剰な量の候補ユーザ値またはフィールド分類要求を、詳細を上述したような複数の戦術によって削減してもよい。
【0095】
図3Bを参照すると、
図3Bは、第1モバイル機器上のアプリケーションのテキスト入力フィールドへのユーザの第1のデータ手入力を示す。これに加えて、
図3Bは、結果として生じる、ユーザ入力データに基づいてオペレーティングシステムによって行われる1つ以上の類似度メトリックの生成およびリモートプロバイダへの送信を示す。
【0096】
特定的には、
図3Bは、ユーザが第1テキスト入力フィールド306(ここでは、「Email」テキスト入力フィールド)にユーザ入力値316(ここでは、「felipe
@x.com」)を手入力し得る様子を示す。これに応答して、オペレーティングシステムは、テキスト入力フィールド306にユーザ入力値316を検出し、このユーザ入力値316と候補ユーザデータ312の1つ以上の値の各々との比較に基づいてこれらの1つ以上の値の各々についての類似度メトリックの決定を開始してもよい。この点に関して、オペレーティングシステムは、ユーザが入力したデータを、ユーザデバイスに格納することなく解析および採点してもよい。これは、リモートプロバイダ310の将来の自動入力作業への手助けとなり得る(ユーザデバイス302上または異なるユーザデバイス上でアプリケーション304が動作するという両方の状況において)。
【0097】
特に、本実施の形態の文脈において、リモートプロバイダは、既存のFillEventHistoryメカニズムを利用することによってこの処理の結果を検証してもよい。FillEventHistoryとは、以前のオートフィルセッションで発生したイベントについてリモートプロバイダがオペレーティングシステムに問い合わせることを可能にするAPIである。TYPE_CONTEXT_COMMITTEDというタイプのイベントは、ユーザが画面上で送信した(コミットした)イベントを表す。その画面上でサービスプロバイダがフィールド分類を要求してその要求が受け付けられた場合、結果がFillEventHistoryオブジェクトで入手可能になる。また、リモートプロバイダは、getFieldsClassification()を呼び出すことによって結果を検証してもよい。getFieldsClassification()は、「autofillId1」などの識別子によって連想配列されたFieldClassificationオブジェクトのマップを返してもよい。これらの識別子(たとえば、連番の識別子)は、ビューを特定するためにオペレーティングシステムによって提供されてもよく、リモートプロバイダは、識別子を利用して、リモートプロバイダがフィールド分類を要求しているビューがどのビューであるかをオペレーティングシステムに知らせてもよい。
【0098】
また、別の態様では、FieldClassificationオブジェクトは、自動入力されたidにどのテキスト入力フィールド(そのfieldIdによって識別される)が一致するのかを表し得るMatchオブジェクトを含んでもよい。また、Matchオブジェクトは、一致がどれくらい正確であったかを知らせるスコアも含んでもよい(たとえば、このスコアは、テキスト入力フィールドidに対応付けられたすべてのユーザ値の中で最高スコアである)。たとえば、ユーザが「felipe@x.com」を「autofillId1」フィールドに入力した場合、オペレーティングシステムによって返される結果は、下記の例で表されてもよい。
【0099】
【0100】
言い換えると、この例では、「autofillId1」フィールドのスコアは、「e
mail」というfield_idに対応するユーザ値と100%マッチであった(すなわち、ユーザが入力したユーザ入力値316「felipe@x.com」は、候補ユーザデータ312およびフィールド分類要求314で提示された「felipe@x.com」と完全に一致した)。
【0101】
別の態様では、マッチスコアを定義するために用いられるメソッドおよびアルゴリズムは、UserData.Builder.setFieldClassificationAlgorithm()メソッド(アルゴリズムおよびオプションの引数の名前をとる)によって定義されてもよいが、特に、リモートプロバイダによって指定されない場合、デフォルトアルゴリズムが使われてもよい。
【0102】
さらに別の態様では、オペレーティングシステムは、フィールド分類要求314に対する応答を生成してリモートプロバイダ310に送信してもよい。この応答は、類似度メトリック318を含む。リモートプロバイダ310は、アプリケーションに対する将来の自動入力を向上させるために類似度メトリック318を使用してもよい。
【0103】
図3Aと同様に、第2モバイル機器上のアプリケーションとの第2のユーザのやり取りに基づいて、
図4Aは、例示的な実施の形態に係る、オペレーティングシステムがオートフィル要求をリモートプロバイダに送信し、フィールド分類要求と1つ以上の候補ユーザ値とをリモートプロバイダから受け付ける様子を示す。特に、(ユーザデバイス302と同様に)ユーザデバイス402は、アプリケーション304の一部をユーザデバイス402上に表示してもよい。また、アプリケーション304は、ユーザデバイス402のUI上に表示された共通のオートフィル記述子306(たとえば、「Email」)を含んだまたはこれに対応付けられたテキスト入力フィールドを含んでもよい。
【0104】
図3Aと同様に、
図4Aのオペレーティングシステムは、このオートフィル要求(ここでは、オートフィル要求408として示され、UI上に表示されるコンテンツのサブセットを含んでいる)を生成してリモートプロバイダに送信する。また、
図3Aと同様に、
図4Aのオペレーティングシステムは、少なくとも2つの情報をリモートプロバイダから提供されてもよい。(1)候補ユーザデータ412(ここでは、「jason@y.com」および「LongJ」と示す)および(2)フィールド分類要求414(ここでは、「autofillId1」と示す)。
【0105】
図4Bを参照すると、第1モバイル機器上のアプリケーションのテキスト入力フィールドへのユーザの第2のデータ手入力が示されている。
図3Bと同様に、
図4Bは、ユーザが第1テキスト入力フィールド306(ここでは、「Email」テキスト入力フィールド)にユーザ入力値416(ここでは、「jason@x.com」)を手入力し得る様子を示す。
図3Bと同様に、テキスト入力フィールド306にユーザ入力値416を検出することに応答して、オペレーティングシステムは、このユーザ入力値416と候補ユーザデータ412の1つ以上の値の各々との比較に基づいてこれらの1つ以上の値の各々についての類似度メトリックの決定を開始してもよい。
【0106】
ここでも、この点に関して、オペレーティングシステムは、ユーザが入力したデータを、ユーザデバイスに格納することなく解析して採点してもよい。これは、リモートプロバイダ310の将来の自動入力の試みへの手助けとなる(ユーザデバイス302上、ユーザデバイス402上、または異なるユーザデバイス上でアプリケーション304が動作するといういずれの状況において)。
【0107】
しかしながら、
図3Bとは異なり、候補ユーザデータ412およびユーザ入力値416の状況における「autofillId1」フィールドのスコアは、90%のスコアを出
す(すなわち、ユーザが入力した416「jason@x.com」は、ユーザ候補データ412およびフィールド分類要求414で提示された「jason@y.com」とわずか90%マッチである)。
【0108】
これに加えて、
図3Bと同様に、
図4Bのオペレーティングシステムは、フィールド分類要求に対する応答414を生成してリモートプロバイダ310に送信してもよい。この応答は、類似度メトリック418を含んでもよい。リモートプロバイダ310は、少なくとも類似度メトリック318と418とを使用してアプリケーション304のために自動入力サービスを提供してもよい。このように、例示的な実施の形態は、複数のユーザからのユーザ入力データを用いたクラウドソーシングを活用して、ユーザの同意なしにセンシティブなユーザ情報を漏らすことなくリモートプロバイダを素早く訓練してアプリケーションのフィールドを理解させる。さらにこの点に関して、リモートプロバイダがユーザに提案するための候補ユーザ値を有するためには、リモートプロバイダは、ユーザの同意を予め得ておかなければならない。したがって、本実施の形態は、ユーザの同意なしに不明または手当たり次第のリモートプロバイダを支援するオペレーティングシステムを対象としない。
【0109】
図3Aおよび
図4Aと同様に、第3のモバイル機器上のアプリケーションとの第3のユーザのやり取りに基づいて、
図5は、例示的な実施の形態に係る、オペレーティングシステムがオートフィル要求をリモートプロバイダに送信する様子を示す。特に、(ユーザデバイス302および402と同様に)ユーザデバイス502は、アプリケーション304の一部をユーザデバイス502上に表示してもよい。同様に、アプリケーション304は、ユーザデバイス502のUI上に表示された共通のオートフィル記述子306(たとえば、「Email」)を含んだまたはこれに対応つかられたテキスト入力フィールドを含んでもよい。
【0110】
図5を参照すると、オペレーティングシステムは、(ここでは、508と示され、UI上に表示されるコンテンツのサブセットを含んでいる)オートフィル要求を生成し、ここでもリモートプロバイダ310に送信してもよい。しかしながら、
図3Aおよび
図4Aの例示的な実施の形態とは異なり、
図5の例示的な実施の形態におけるオペレーティングシステムは、フィールド分類要求や1つ以上の候補ユーザ値を提示しないが、代わりに、オートフィル値(ここでは、「email」フィールドの「jim@y.com」と示す)が提示され、その後、この値がテキスト入力フィールド306に自動入力されてもよい。
【0111】
具体的には、この例示的な実施の形態では、リモートプロバイダ310は、オペレーティングシステムの少なくとも2つの類似度メトリック(318および418)の恩恵を受けていた可能性があるので、具体的な候補ユーザ値(ここでは、「jim@y.com」)、およびこの値が入力される具体的なテキスト入力フィールド(ここでは、「email」フィールド)の両方を含んだオートフィル値510を候補に挙げることができる信頼を築き上げている可能性がある。よって、本実施の形態での結果として、ユーザデバイス502のオペレーティングシステムは、ユーザデバイス302および402のオペレーティングシステムの作業および解析ならびにリモートプロバイダ310のすべてを、ユーザデバイス302、402、または502の具体的なユーザコンテンツを漏らすことなくセキュアに活用している。
【0112】
また、別の態様では、
図5において、オペレーティングシステムは、UI上に表示されたアプリケーションのテキスト入力フィールドが自動入力されたことをユーザに知らせるための確認メッセージ512を表示してもよい。また、別の例では、オペレーティングシステムは、オートフィル処理中にオペレーティングシステムによって入力されたアプリケーションのテキスト入力フィールドのデータがクリアされ得ることをユーザに知らせるた
めのやり直しプロンプト514を表示してもよい。
【0113】
VI.さらなる課題および提案ソリューション
しかしながら、いくつかの別の態様では、オートフィル処理の実行が相当な負担であると思われるため、オペレーティングシステムの全体的な性能に悪影響である可能性がある。上述した例のうちの1つでは、フィールド分類機能は、下記の理由のうち1つ以上を理由にユーザデバイスの調子および性能に悪影響を与え得る。(1)リモートプロバイダがある作業についての自動入力を出来ずにNull応答を返した場合、オペレーティングシステムは、その作業についてのオートフィルを一時的に無効化し得る。しかし、リモートプロバイダがNullを返す代わりにフィールド分類を設定した場合、セッションは開かれたままであってもよい。(2)オペレーティングシステムが、ユーザの入力値をメモリに保持してもよい。(3)オペレーティングシステムがコミット時にフィールド分類マッチを演算してからリモートプロバイダに送信してもよい。これは、O(N×M)演算(およびデータ構造)であってもよい(ここで、Nは、ユーザ入力値の入力の数であり、Mは、分類可能なフィールドの数である)。
【0114】
オペレーティングシステムの性能に与える影響を全体的に軽減させるために、オペレーティングシステムによって下記の緩和措置のうちの1つ以上が自動入力処理時に採り入れられてもよい。(1)候補ユーザ値の所定最大数に基づいて候補ユーザ値の全体数を限定する(たとえば、インターフェースは、いずれのリモートプロバイダからも、10個を超える候補ユーザ値を認めない)。(2)テキスト入力フィールドごとの候補ユーザ値の数を、候補ユーザ値のフィールド当たりの所定最大数に限定する(たとえば、インターフェースは、テキスト入力フィールド当たり3個を超える候補ユーザ値を認めない)。(3)候補ユーザ値自体の特徴を、候補ユーザ値の1つ以上の特性または特徴に基づいて限定する(たとえば、所定最小文字数。1つ以上の候補ユーザ値の各々が数字のみを含む場合、当該候補ユーザ値を第1の所定最小文字数に限定し、少なくとも1つの数値以外の文字を含む場合、第2の所定最小文字数に限定する)。(4)フィールド分類要求の全体数を、フィールド分類要求の所定最大数に基づいて限定する(たとえば、インターフェースは、いずれのリモートプロバイダからも、10個を超えるフィールド分類要求を認めない)。リモートプロバイダがフィールド分類要求を提供する頻度を限定する(たとえば、インターフェースは、いずれのリモートプロバイダからも、1時間当たり10個を超えるフィールド分類要求を認めない)。(5)フィールド分類要求の数を、ユーザ入力フィールドの数に基づいて限定する(たとえば、インターフェースは、2つのユーザ入力フィールドしか存在しない場合、10個を超えるフィールド分類要求を認めない)。(6)テキスト入力フィールドごとのフィールド分類要求の数を、フィールド分類要求のフィールド当たりの所定最大数に限定する(たとえば、インターフェースは、テキスト入力フィールド当たり3個を超えるフィールド分類要求を認めない)。(7)応答がフィールド分類のみを有する場合(たとえば、上述したNull応答のシナリオ)、ワークフローを最適化する。
【0115】
また、別の態様において、これらのシナリオでは、リモートプロバイダは、異なるサービスまたは関連サービス(たとえば、UserData.getMaxFieldsSize()、UserData.getMaxUserDataSize()、UserData.getMaxFieldClassificationIdsSize()、およびUserData.getMaxValueLength())のホストと通信を行うまたは当該ホストを通して通信を行うことによって受け付けられる最大値をチェックしてもよい。また、これらの値は、ユーザ設定によって定義されてもよく、リモートサーバによる実行中に調整されてもよく、その他の方法によって設定されてもよい。また、同様に、リモートプロバイダは、AutofillManager.isFieldClassificationEnabled()を呼び出して、機能が本当に利用可能であるかどうかをチェックしてもよい(たとえば、速度制限違反などが原因で自動的にオペレーテ
ィングシステムを無効化している可能性がある)。
【0116】
しかしながら、これらのシナリオのいずれにおいても、リモートプロバイダは、オペレーティングシステムの期待またはインターフェースの限定に応えられていない可能性があり、自身の保全のために、オペレーティングシステムは、それに従って応えてもよい。たとえば、オペレーティングシステムのリソースまたはその一部の所定の割り当て分が、本明細書に記載の処理に充てられていてもよい(たとえば、リモートプロバイダから候補ユーザ値およびフィールド分類要求を受け付けるために、オペレーティングシステムの所定システムリソース割り当て5%が充てられている)。さらには、いくつかの例では、この所定のリソース割り当てが超過したと判断した場合、オペレーティングシステムは、それを改善する動作を行ってもよい(たとえば、所定のリソース割り当て5%が超過したと判断することに応答して、オペレーティングシステムは、リモートプロバイダから候補ユーザ値またはフィールド分類をさらに受け付けることを拒否してもよい)。
【0117】
さらに別の態様では、自動入力処理におけるオペレーティングシステムのユーザデータの解析および採点を理由に、セキュリティがユーザの課題である場合がある。ここでも、ユーザが入力した値をオペレーティングシステムがリモートプロバイダに直接知らせることはないが、リモートプロバイダは、粘り強くブルートフォースを使ってこれらの値を算出しようと試みたり、算出したりするであろう。
【0118】
一例では、リモートプロバイダは、共通PINコード(たとえば、pin1={1111}、pin2={0000}、pin3={1234}など)のリストおよび候補ユーザ値を送信してから、これらの値のうちの1つが100%マッチの場合に確認を得ることができる。さらには、この点に関して、リモートプロバイダがこの処理を多くのユーザ(たとえば、数千人のユーザ)に対して繰り返し実行した場合、リモートプロバイダは、一致するものを最終的に見つけるであろう。この「ブルートフォース」攻撃のリスクを軽減させるために、いくつかの実施の形態では、オペレーティングシステムは、詳細を上述した保護作業のうちの1つ以上の作業に取りかかってもよい。
【0119】
また、別の態様では、いくつかの実施の形態では、オペレーティングシステムは、(たとえば、UserDataに追加できるフィールドの数を(UserData.getMaxFieldSize()によって限定し、最小文字数を(UserData.getMinValueLength()によって)設定することによって)これらの課題を様々な特定のレベルで(たとえば、これらの値をそれぞれ10および3に限定する))、複数のその他の方法で軽減させてもよい。最後に、上述したUserDataにPIIが含まれている可能性があるので、複数の追加対策によってさらに保護されてもよい(たとえば、メモリにのみ保持されてもよい(すなわち、デバイスが再起動した時にディスク上に残らない)。その値は、(toString()、dump()、log()上などに)ログ記録されない)。
【0120】
VII.コンピューティングデバイス
ここで
図6を参照すると、
図6は、例示的な実施の形態に係る、コンピューティングデバイス600の機能ブロック図である。特に、
図6に示すコンピューティングデバイス600は、上述したように、サーバ装置108および/もしくは110、ならびに/またはリモートプロバイダ112および/もしくは114、ユーザデバイス104a~104eのいずれか、方法200、ユーザデバイス302、ユーザデバイス402、および/もしくはユーザデバイス502の少なくとも1つの機能を実行するように構成され得る。
【0121】
コンピューティングデバイス600は、ユーザインターフェースモジュール601と、ネットワーク通信インターフェースモジュール602と、1つ以上のプロセッサ603と
、データストレージ604と、1つ以上のセンサ620とを備えてもよく、これらはすべて、システムバス、ネットワーク、またはその他の接続機構605を介して互いにリンクされている。
【0122】
ユーザインターフェースモジュール601は、外部のユーザ入出力装置とデータを送受信するように動作可能であり得る。たとえば、ユーザインターフェースモジュール601は、キーボード、キーパッド、タッチスクリーン、存在感知ディスプレイ、コンピュータマウス、トラックボール、ジョイスティック、カメラ、音声認識モジュール、および/またはその他の同様のデバイスなど、ユーザ入力装置とデータを送受信するように構成され得る。また、ユーザインターフェースモジュール601は、1つ以上のブラウン管(CRT)、液晶ディスプレイ、LED(Light Emitting Diode)、DLP(Digital Light Processing)技術を採用したディスプレイ、プリンター、電球、および/または現在知られているまたは今後開発されるその他の同様のデバイスなど、ユーザディスプレイデバイスに出力を行うように構成され得る。また、ユーザインターフェースモジュール601は、スピーカー、スピーカージャック、オーディオ出力ポート、音声出力装置、イヤホン、および/またはその他の同様のデバイスなど、耳に聞こえる出力(複数可)を生成するように構成することができる。ユーザインターフェースモジュール601は、さらに、振動および/またはコンピューティングデバイス600へのタッチおよび/または物理的な接触によって検出可能なその他出力など、ハプティック出力(複数可)を生成できる1つ以上のハプティックデバイスを有して構成され得る。いくつかの実施の形態では、ユーザインターフェースモジュール601を使用して、コンピューティングデバイス600を利用するためのGUIを提供することができる。
【0123】
ネットワーク通信インターフェースモジュール602は、ネットワークを介して通信するように構成可能な1つ以上のワイヤレスインターフェース607および/または1つ以上の有線インターフェース608を含み得る。ワイヤレスインターフェース607は、1つ以上のワイヤレストランスミッタ、レシーバ、および/または、Bluetooth(登録商標)トランシーバ、Zigbee(登録商標)トランシーバ、Wi-Fiトランシーバ、WiMAXトランシーバ、および/もしくはワイヤレスネットワークを介して通信するように構成可能なその他同様の種類のワイヤレストランシーバなど、トランシーバを含み得る。有線インターフェース608は、1つ以上の有線トランスミッタ、レシーバ、および/または、Ethernet(登録商標)トランシーバ、USB(Universal Serial Bus)トランシーバ、または、ツイストペア線、同軸ケーブル、光ファイバーリンク、もしくは有線ネットワークへの同様の物理的な接続を介して通信を行うように構成可能な同様のトランシーバなど、トランシーバを含み得る。
【0124】
いくつかの実施の形態では、ネットワーク通信インターフェースモジュール602は、信頼性が高く、セキュリティ保護され、および/または認証された通信を提供するように構成され得る。各々の通信について、信頼性が高い通信(すなわち、保証されたメッセージ配信)を約束するための情報が、たとえば、メッセージヘッダーおよび/またはフッターの一部として提供され得る(たとえば、パケット/メッセージ配列情報、カプセル化ヘッダー(複数可)および/またはフッター(複数可)、サイズ/時間情報、およびCRCおよび/またはパリティチェック値などの送信検証情報)。通信は、セキュリティ保護され得(たとえば、符号化または暗号化される)、および/または、DE、AE、RSA、Diffie-Hellman、および/またはDSA(これらに限定されない)など、1つ以上の暗号プロトコルおよび/またはアルゴリズムを用いて復号化/デコードされ得る。本明細書にリストアップしたものに加えて、その他の暗号プロトコルおよび/またはアルゴリズムも用いて通信をセキュリティ保護し、(その後、復号化/デコード)することができる。
【0125】
1つ以上のプロセッサ603は、1つ以上の汎用プロセッサ、および/または1つ以上の特定用途向けプロセッサ(たとえば、デジタル信号プロセッサ、GPU(Graphics Processing Unit)、特定用途向け集積回路など)を含み得る。1つ以上のプロセッサ603は、データストレージ604に含まれるコンピュータ読み取り可能なプログラム命令606および/または本明細書に記載したようなその他の命令を実行するように構成され得る。
【0126】
データストレージ604は、1つ以上のプロセッサ603のうちの少なくとも1つが読み出しおよび/またはアクセスできる1つ以上のコンピュータ読み取り可能な記憶媒体を含み得る。1つ以上のコンピュータ読み取り可能な記憶媒体は、光、磁気、有機、またはその他のメモリもしくはディスク記憶媒体など、揮発性および/または不揮発性ストレージコンポーネントを含み得、そのすべてまたは一部は、1つ以上のプロセッサ603のうちの少なくとも1つに組み込むことができる。いくつかの実施の形態では、データストレージ604は、1つの物理デバイス(たとえば、1つの光、磁気、有機、またはその他のメモリもしくはディスク記憶部)を使用して実装され得る一方、その他の実施の形態では、データストレージ604は、2つ以上の物理デバイスを用いて実装され得る。
【0127】
データストレージ604は、コンピュータ読み取り可能なプログラム命令606と、たとえば追加データとを含み得る。いくつかの実施の形態では、データストレージ604は、本明細書において記載した方法、シナリオ、および技術の少なくとも一部、ならびに/または本明細書において記載したデバイスおよびネットワークの機能の少なくとも一部を実行するために必要なストレージをさらに含み得る。
【0128】
いくつかの実施の形態では、コンピューティングデバイス600は、1つ以上のセンサ620を含み得る。センサ(複数可)620は、コンピューティングデバイス600の環境における状況を測定し、その環境についてのデータを提供するように構成され得る。たとえば、センサ(複数可)620は、次のうちの1つ以上を含み得る:(i)RFIDリーダー、近接センサ、1次元バーコードリーダー、2次元バーコード(たとえば、QR(Quick Response)コード)リーダー、およびレーザートラッカー(これらに限定されない)など、その他のオブジェクトおよび/またはデバイスを識別するための識別センサ。この識別センサ(複数可)は、RFIDタグ、バーコード、QRコード(登録商標)、ならびに/または、読み出されて少なくとも識別情報を提供するように構成されたその他のデバイスおよび/もしくはオブジェクトなど、識別子を読み取るように構成され得る。;(ii)傾斜センサ、ジャイロスコープ、加速度計、Dopplerセンサ、GPS(Global Positioning System)デバイス、ソナーセンサ、レーダー装置、レーザー変位センサ、およびコンパス(これらに限定されない)など、コンピューティングデバイス600の位置および/または移動を測定するためのセンサ;(iii)赤外線センサ、光センサ、光検出子、カメラ、バイオセンサ、生体センサ、静電容量型センサ、タッチセンサ、温度センサ、ワイヤレスセンサ、無線センサ、動作感知器、マイクロフォン、音センサ、超音波センサ、および/または煙感知器(これらに限定されない)など、コンピューティングデバイス600の環境を示すデータを取得するための環境センサ;(iv)1つ以上の次元、トルク、地面にかかる力、摩擦における力を測定する1つ以上のセンサ、ならびに/またはZMPおよび/もしくはZMPの位置を特定するZMP(Zero Moment Point)センサ(これらに限定されない)など、コンピューティングデバイス600に作用する1つ以上の力(たとえば、慣性力および/またはG力(G-force))を測定するための力覚センサ。センサ(複数可)620の多くの応用例も可能である。
【0129】
本開示は、本出願において説明した特定の実施の形態によって限定されない。当該特定
の実施の形態は、様々な態様の例示にすぎない。本開示の趣旨および範囲から逸脱することなく多くの変更および変形が可能であり、これは、当業者であれば容易に分かるであろう。本明細書に列挙したものに加えて、本開示の範囲に含まれる機能的に均等な方法および装置は、当業者であれば以上の説明から容易に分かるであろう。このような変更および変形は、添付の特許請求の範囲に含まれる。
【0130】
上記詳細な説明において、開示のシステム、デバイス、および方法の様々な特徴および機能について、図面を参照して説明した。図面において、同様の記号は、文脈が特に規定しない限り、通常は、同様の構成要素を特定する。詳細な説明に記載の実施の形態、図面、および特許請求の範囲は、限定ではない。本明細書に提示する発明の主題の趣旨および範囲から逸脱することなく、その他の実施の形態を利用することができ、その他の変更が可能である。本明細書において一般的に説明し図に示した本開示の態様を、様々な異なる構成に配置したり、置き換えたり、組み合わせたり、分けたり、設計したりすることができることは、容易に理解されるであろう。これらのすべては、本明細書において明確に予想されている。
【0131】
図のおよび本明細書に記載したラダー図、シナリオ、およびフローチャートの一部またはすべてについて、各ブロックおよび/または通信は、例示的な実施の形態に係る情報の処理および/または情報の送信を表してもよい。これらの例示的な実施の形態の範囲には、別の実施の形態が含まれる。これらの別の実施の形態では、たとえば、ブロックとして記載された機能、送信、通信、要求、応答、および/またはメッセージは、関係する機能に応じて、図示した順序や説明した順序とは異なる順序で実行されてもよく、実質的に同時または逆の順序を含む。さらには、本明細書に記載のラダー図、シナリオ、およびフローチャートを用いてより多いまたは少ない数のブロックおよび/または機能を使用してもよく、これらのラダー図、シナリオ、およびフローチャートは、互いにその一部または全体を組み合わせてもよい。
【0132】
情報の処理を表すブロックは、本明細書に記載の方法または技術の特定の論理関数を実行するように構成され得る回路に相当してもよい。代替的にまたは追加的に、情報の処理を表すブロックは、モジュール、セグメント、またはプログラムコード(関連データを含む)の一部に相当してもよい。プログラムコードは、方法または技術に含まれる特定の論理的機能または動作を実施するためのプロセッサによって実行可能な1つ以上の命令を含んでもよい。プログラムコードおよび/または関連データは、ディスクもしくはハードドライブを含む記憶装置など、任意の種類のコンピュータ読み取り可能な媒体、またはその他の記憶媒体上に格納されてもよい。
【0133】
また、コンピュータ読み取り可能な媒体は、たとえば、ROM(Read Only Memory)、光ディスクもしくは磁気ディスク、CD-ROM(Compact-Disc Read Only Memory)のような補助記憶装置または永続的長期記憶装置など、プログラムコードおよび/またはデータをより長い期間格納する非一時的なコンピュータ読み取り可能な媒体を含んでもよい。また、コンピュータ読み取り可能な媒体は、その他の揮発性または不揮発性記憶システムであってもよい。コンピュータ読み取り可能な媒体は、たとえばコンピュータ読み取り可能な記憶媒体または有形の記憶装置と考えられてもよい。
【0134】
また、1つ以上の情報の送信を表すブロックは、同じ物理デバイスに含まれるソフトウェアおよび/またはハードウェアモジュール間の情報の送信に相当してもよい。しかしな
がら、その他の情報の送信は、それぞれ異なる物理デバイスにあるソフトウェアモジュールおよび/またはハードウェアモジュール間であってもよい。
【0135】
本明細書において様々な態様および実施の形態を開示したが、その他の態様および実施の形態は、当業者であれば容易に分かるであろう。本明細書に開示の様々な態様および実施の形態は、説明のために提供されており、限定ではなく、添付のクレームが示す範囲に含まれる。