(58)【調査した分野】(Int.Cl.,DB名)
前記所定の動作は前記ユーザからの指示に応じて開始され、前記指示を受け付けると、前記端末装置が前記所定の動作に対応する処理の実行の要求をサーバに送信する場合に、
前記制御手段は、前記判定手段が発生したと判定した場合に、前記サーバに実行要求を送信した処理をより高速化するための要求を前記サーバに送信するように制御することを特徴とする請求項1から3のいずれか1項に記載の端末装置。
前記所定の動作は前記ユーザからの指示に応じて開始され、前記指示を受け付けると、前記端末装置が前記端末装置内において前記所定の動作に対応する処理を実行する場合に、
前記制御手段は、前記判定手段が発生したと判定した場合に、前記所定の動作に対応する処理の実行の要求をサーバに送信するように制御することを特徴とする請求項1から8のいずれか1項に記載の端末装置。
【発明を実施するための形態】
【0010】
以下、図面を用いて、本願発明に係る実施形態について説明する。なお、以下に示す実施形態は一例であり、これに限定するものではない。そのため、本願発明の特徴的構成を適用できれば他の構成であってもよい。
【0011】
[実施形態1]
以下に、添付する図面を参照して本発明の第1の実施形態を説明する。ただし、この実施の形態に記載されている構成要素はあくまでも例示であり、この発明の範囲をそれらのみに限定する趣旨のものではない。
【0012】
<システム構成>
以下、本実施形態に対応するクライアント・サーバ・システムの構成について説明する。
図1は、オンラインショッピングサイトとしてシステムを構築した場合の、本実施形態に対応するシステム全体構成の一例を示すブロック図である。当該システムは、ユーザ端末、サーバがネットワークに接続されて構成されている。サーバは、オンラインショッピングサイトを管理し、サイトで販売される商品の画像情報の他に、店舗及び顧客の各ユーザ情報を管理する。
【0013】
クライアント101a、101b、101c(以下、これらを総称して「クライアント101」という。)は、ユーザが操作し、サーバによりユーザ認証を受けた後、サーバからサービスの提供を受けることができるユーザ端末である。本実施形態では、当該サービスには、オンラインショッピングサイトで提供されている情報の閲覧を含むことができる。
【0014】
サーバ103は、クライアント101のユーザを認証し、認証されたユーザが使用するクライアント101に対して上記サービスを提供する装置である。クライアント101及びサーバ103はそれぞれネットワーク102に接続され、相互通信が可能となっている。ネットワーク102は例えばインターネット、ローカル・エリア・ネットワーク(LAN)、或いは、ワイド・エリア・ネットワーク(WAN)として構築することができる。インターネットは世界中のネットワークが互いに接続されたネットワークであるが、ネットワーク102は、これ以外にもイントラネットのように特定の組織内においてのみ接続可能なネットワークであってもよい。サーバ103には、ユーザ情報データベース104とコンテンツデータベース105とが接続されている。
【0015】
クライアント101は、ユーザが操作することで、サーバ103が提供するサービスを利用することができる。当該サービスには、例えばサーバ103が提供するページ情報の閲覧、情報の検索、絞り込み、並び替え、その他の情報の取得、情報のアップロード等が含まれる。クライアント101は、ユーザ端末、端末装置、情報処理装置、或いは、通信装置であって、例えば、スマートフォン、タブレット端末、ノートパソコン、デスクトップパソコン、携帯情報端末、携帯電話等を含む。クライアント101は、ユーザの状態を検出するための各種センサを搭載しているものとする。当該センサには、映像、触覚、振動、音声等を検出する機能を有するものを含む。クライアント101は、無線LAN、LTE等の無線データ通信手段によってネットワーク102に接続されている。尚、イーサネット(登録商標)等のネットワークケーブルを含むLANにより、ネットワーク102へアクセス可能に更に構成されていてもよい。
【0016】
サーバ103は、ユーザ情報データベース104を管理し、クライアント101の各ユーザの登録情報を保持しておき、各ユーザが特定のサービスの提供を受けようとする場合に、当該ユーザが当該サービス提供を受ける権限を有しているか否かを判定するために用いることができる。サーバ103は、また、コンテンツデータベース105に格納されているデータを管理し、クライアント101からの要求に応じて当該データをクライアント101に提供することができる。サーバ103は、例えば、LANによってユーザ情報データベース104やコンテンツデータベース105と接続される。ユーザ情報データベース104及びコンテンツデータベース105は、それぞれ所定のデータベース・ソフトウェアがインストールされた情報処理装置であり、各種データの管理を行う。
【0017】
ユーザ情報データベース104は、ユーザごとの登録情報を管理する。具体的に、ユーザを一意に識別するためのユーザ識別子(ユーザID)、登録ユーザであるか否かを判定するためのユーザ登録情報(例えば、ユーザ名とパスワードのセット等)等を関連づけて格納する。
【0018】
コンテンツデータベース105は、サーバ103からクライアント101に提供されるコンテンツデータを格納し管理する。また、クライアント101がアップロードしたコンテンツを格納し、管理することもできる。コンテンツデータには、テキスト、画像、動画、音声等のデータが含まれる。これらのコンテンツデータには、当該コンテンツデータを一意に識別するためのコンテンツIDが割当てられている。
【0019】
尚、本明細書では、便宜上、サーバ103、ユーザ情報データベース104、及びコンテンツデータベース105は、それぞれ物理的に独立した情報処理装置によって実現されるものとして説明するが、本発明の実施形態はこれに限られるものではない。例えば、これらが単一の情報処理装置によって実現されてもよい。その一方で、サーバ103等の各装置が複数台の情報処理装置により冗長構成、或いは分散構成されても良い。また、ユーザ情報データベース104は、サーバ103とLAN等によって接続されているものとして説明するが、例えば、ネットワーク102や非図示のイントラネット経由でサーバ103と通信可能な形態をとってもよい。サーバ103とコンテンツデータベース105との関係についても同様である。また、ユーザ情報データベース104が管理するユーザ情報と、とコンテンツデータベース105が管理するコンテンツ関連のデータとは一体的に管理されていてもよい。
【0020】
<クライアント101の構成>
図2は、クライアント101のハードウェア構成の一例を示すブロック図である。本実施形態に対応するクライアント101は、例えば、携帯電話、スマートフォン、タブレット端末として構成することができる。以下では、
図2を参照して本実施形態に対応するクライアント101を説明するが、
図2は、クライアント101をスマートフォンとして構成する例を示している。
【0021】
図2において、CPU200は、ハードディスク装置(以下、HDと呼ぶ)205に格納されているアプリケーションプログラム(本実施形態に対応する処理を実行するためのアプリケーションプログラムを含む)、オペレーティングシステム(OS)や制御プログラム等を実行し、RAM202にプログラムの実行に必要な情報、ファイル等を一時的に格納する制御を行う。インターフェイス208を介した外部装置とのデータ送受信を制御するとともに、外部装置から受信したデータの分析・処理を実行し、また外部装置へ送信するデータ(処理要求やデータ要求を含む)の生成を行う。
【0022】
ROM201は、内部に基本I/Oプログラム、本実施形態に対応する処理を実行するためのアプリケーションプログラム等の各種データを記憶する。RAM202は各種データを一時記憶し、CPU200の主メモリ、ワークエリア等として機能する。
【0023】
外部記憶ドライブ203は、記録媒体へのアクセスを実現するための外部記憶ドライブであり、メディア(記録媒体)204に記憶されたプログラム等を本コンピュータシステムにロードすることができる。尚、メディア204は、例えば、SDカード等のフラッシュ(登録商標)メモリ等を利用することができる。
【0024】
外部記憶装置205は、本実施形態では大容量メモリとして機能するHD(ハードディスク)を用いている。HD205には、アプリケーションプログラム、OS、制御プログラム、関連プログラム等が格納される。なお、ハードディスクの代わりに、フラッシュメモリ等の不揮発性記憶装置を用いても良い。
【0025】
指示入力装置206は、ボタン、キーボード、マウス、タッチパネル等がこれに相当する。出力装置207は、指示入力装置206から入力したコマンドや、それに対するクライアント101の応答出力等を出力する。出力装置207にはディスプレイ、スピーカ、ヘッドフォン端子等が含まれる。システムバス209は、端末理装置内のデータの流れを司る。
【0026】
インターフェイス(以下、I/Fという)208は、外部装置とのデータのやり取りを仲介する送信装置、受信装置、或いは、通信装置としての役割を果たす。具体的に、I/F208は、無線通信モジュールを含むことができ、当該モジュールはアンテナシステム、RF送受信器、1つ以上の増幅器、同調器、1つ以上の発振器、デジタル信号プロセッサ、CODECチップセット、加入者識別モジュールカード、メモリなどを含む、周知の回路機構を含むことができる。また、有線接続のための有線通信モジュールを含むことができる。有線通信モジュールは1つ以上の外部ポートを介して他のデバイスとの通信を可能とする。また、データを処理する様々なソフトウェアコンポーネントを含むことができる。外部ポートは、イーサーネット、USBやIEEE1394等を介して、直接的に、又はネットワークを介して間接的に他のデバイスと結合する。尚、以上の各装置と同等の機能を実現するソフトウェアにより、ハードウェア装置の代替として構成することもできる。
【0027】
撮像部210は、撮影光学系、撮像素子(CMOSセンサ等)、A/D変換部などを含むことができる。撮像部210から出力された画像信号は、RAM202に格納され、CPU200による圧縮・符号化処理により例えばJPEG画像に変換され、メディア204やHD205に格納されてもよい。また、CPU200が、ユーザの表情からユーザの状態を判定するために撮影画像の解析を行なってもよい。
【0028】
音声入力部211は、内蔵された無指向性のマイクにより、クライアント101の周囲の音声を集音(収音)し、アナログデジタル変換をしてCPU200に送信する。CPU200は、入力されたデジタル音声信号の処理を行い、必要に応じてメディア204やHD205に格納してもよい。また、CPU200が、ユーザ状態を判定するためにユーザの発生音声の解析を行なってもよいし、クライアント101の周囲環境を判定するための音声解析を行なうこともできる。
【0029】
振動検出部212は、角速度センサや加速度センサによりクライアント101の振動を検出し、CPU200に通知することができる。CPU200は、クライアント101の設置環境や利用状況を判定するために振動情報を解析することができる。
【0030】
クライアント101は、本実施形態に対応する処理を実行するために対応するプログラムを動作させる度に、既にプログラムがインストールされているHD205からRAM202にロードするようにしてもよい。また、本実施形態に係るプログラムをROM201に記録しておき、これをメモリマップの一部をなすように構成し、直接CPU200で実行することも可能である。さらに、メディア204から対応プログラム及び関連データを直接RAM202にロードして実行させることもできる。
【0031】
また、上述した情報処理装置としてのユーザ情報データベース104及びコンテンツデータベース105も、
図2のCPU200からシステムバス209までと同様或いは同等のハードウェア構成を有するように構成しても良い。
【0032】
<サーバ103の構成>
図3は、サーバ103のハードウェア構成の一例を示すブロック図である。CPU300、ROM301、RAM302、外部記憶ドライブ303、メディア304、HD305、指示入力装置306、出力装置307、I/F308、システムバス309の機能及び用途、更には、これらの関係は、
図2を用いて同一名称の要素について説明したものと同様或いは同等である。
【0033】
サーバ103はデータベース310を更に備えることができる。データベース310はシステムバス309に接続され、CPU300の制御下において所定のデータを保存、管理する。所定のデータには、クライアント101に提供するコンテンツデータを含むことができる。データベース310は、
図1のユーザ情報データベース104及びコンテンツデータベース105を含むことができる。
【0034】
以下、本実施形態に対応するクライアント・サーバ・システムにおいて実行される、ユーザの操作特性に基づくクライアント101の動作制御について説明する。クライアント101を使用しているユーザは、その時々の精神状態・心理状態によって、操作の仕方が変わることがある。例えば、苛立ったときや、ストレスを感じているときには、操作回数が増加したり、操作速度が速くなったりする。また、クライアント101がタッチパネルを有する場合には、タッチパネルに対する操作圧力が高くなることもある。ユーザがこのような状態にある場合、ユーザは自身が操作する端末が操作に迅速に応答することを要求していると推測される。
【0035】
そこで、本実施形態では、このようなユーザの精神状態・心理状態を示す兆候を検知して、表示処理を切替える制御を実行する。その際、精神状態や心理状態の変化の出方はユーザによって異なるため、複数のパラメータのうち、ユーザの精神状態の変化が出やすいパラメータを特定し、当該パラメータの変化に基づいてユーザの現在の状態を判定する。本実施形態では、まずユーザからの操作を継続的に監視しておき、装置がどのような動作を行なったときにユーザがどのように反応するのかを観察し、ユーザの精神状態の変化が出やすいパラメータをテーブル化し、ユーザ特性テーブルを作成する。
【0036】
テーブル化の対象となり得るパラメータは、クライアント101がユーザとの関連において検出可能な任意のパラメータを含む。例えば、クライアント101がスマートフォンであって、タッチパネルを有する場合に、タッチパネル上で受け付ける各種操作(タップ圧力、スワイプ速度、タップ回数、タップ位置、ピンチジェスチャ回数等)による入力は全てテーブル登録の対象となり得る。また、音声入力部211により検出されたユーザによる特定の音声入力(舌打ち、発言等)や、振動検出部212により検出されたクライアント101の振動(ユーザが装置を振るなどした場合に発生する振動等)を含むこともできる。
【0037】
以下、
図4のフローチャートを参照して、本実施形態に対応するクライアント101において実行される、ユーザ特性テーブルの生成処理を説明する。当該フローチャートに対応する処理は、例えば、CPU200が対応するプログラム(ROM102やHD105等に格納)を実行することにより実現できる。
【0038】
まず、S401において、CPU200は、所定の動作指示(或いは、所定の操作入力)を検出したか否かを判定する。検出対象には、例えば、情報の検索、絞り込み、並べ替え、その他の情報の取得、情報のアップロード、新たなリンク先の表示、ウェブページのページ切替え、ウェブページの更新等の動作指示(或いは、当該動作の実行を指示するための操作入力)が含まれる。例えば、情報の検索であれば、検索ボタンに対する操作を検出した場合に、所定の動作指示を検出したと判定できる。新たなリンク先の表示であれば、ページ中に表示されているURLへのタップ操作を検出した場合に、所定の動作指示を検出したと判定できる。同様にしてページ切替えや更新も対応するタップ操作を検出した場合に、所定の動作指示を検出したと判定することができる。
【0039】
このようにしてCPU200が当該動作指示を検出すると、処理はS402に進み、CPU200は、指示された動作の実行を遅延させる。例えば、新たなリンク先の表示の場合には、URLに基づいてリンク先のページ情報を、外部のウェブサーバ等から取得してもよいが、ページ情報を取得できた場合であっても、クライアント101の出力装置107のディスプレイには表示しないように動作を制御する。
【0040】
動作の遅延には、例えば以下のものも含まれる。ユーザ操作に対して反応しない(例えば、スワイプに対し画面が動かない)、ウェブサイトの表示切替の速度を低下させる、ページのスクロール速度を低下させる、ページの表示を停止する、画面を急に暗くする、起動中のアプリを突然終了する、端末の動作と無関係なコメントを表示する、等である。
【0041】
次に、処理はS403に進み、CPU200は、所定の動作指示を検出してからの経過時間TpがT1以上となったか否かを判定する。経過時間TpがT1に満たない場合は、処理はS404に進み、経過時間TpがT1以上となった場合は、処理はS406に進む。S404においてCPU200は、入力を検出したか否かを判定する。当該入力は、ユーザがS401において所定の動作指示を行なうための操作を行なった後、当該動作に対応する処理が実行されずにいる間に検出される、タッチパネル入力、音声入力、振動、画像を含むこともできる。これらの入力は、ユーザがフラストレーションを感じていることを表す入力であって、例えば、画面を叩く操作入力や、画面を強く押す入力、素早いスワイプ入力、舌打ちや特定の言葉の発声等の音声入力、画像解析により得られるユーザの不満を表す表情が含まれる。また、ユーザが行なうことが可能な入力の平均値を保持しておき、平均値を比較することにより、ユーザの平均的な入力とは異なるユーザ入力を検出したかどうかを判定することができる。例えば、フリック入力について、指の移動速度の平均値を保持しておき、平均値よりも早い場合には、入力を検出したと判定してもよい。
【0042】
このようにして入力が検出された場合には、処理はS405に進む。一方、入力が検出されない場合、S403に戻って経過時間を監視する。S405においてCPUは、S404で検出した入力の種別を判定して、S401で検出した動作と関連づけてテーブルに仮登録し、S403に戻る。
【0043】
S406において、CPU200はS402で遅延させていた処理を実行する。続くS407において、テーブルの登録内容を参照し、仮登録されている検出動作と検出入力の組み合わせのうち、同一の組み合わせで所定登録回数(例えば5回)以上登録されているものがあるか否かを判定する。もし、所定登録回数以上登録されている同一の組み合わせが存在する場合は、処理はS408に進む。所定登録回数以上登録されている同一の組み合わせが存在しない場合は、処理はS401に戻って、以上の処理を繰り返す。
【0044】
CPU200は、S408において所定登録回数以上登録されていると判定された同一の組み合わせについて、ユーザ特性テーブルに本登録を行なう。その後、S401に戻って以上の処理を繰り返す。その際、S408において本登録された組み合わせに関する動作については、S401における検出対象の動作から除外してもよい。例えば、新たなリンク先の表示のための動作について本登録された場合、その後の処理では、新たなリンク先の表示のための動作が検出された場合であっても、S402における処理の遅延も行なわず、リンク先のページが受信できれば直ぐに表示を行なってよい。或いは、一定期間経過後に検出対象の動作に含めるようにしてもよい。また、検索対象の動作から除外しない場合には、同一の動作について複数のユーザ入力の組み合わせが登録されても良い。
【0045】
以上により、ユーザのフラストレーションを表す入力と、装置の動作とを関連づけて登録することが可能となる。なお、当該本登録されたユーザ特性テーブルのデータは、クライアント101内のHD205内に保存すると共に、サーバ103内、或いは、ユーザ情報データベース104内に保存してもよい。
【0046】
また、S402では、動作の実行を意図的に遅延させていたが、通常の動作において偶発的に遅延が生じた場合にも同様の処理を実行しても良い。例えば、S401において動作指示を検出した後、S402は実行せず、S406において処理が実行できる状態になれば処理を実行する。その際、動作指示の検出から処理の実行までの経過時間を測定しておき、一定の経過時間が過ぎても処理の実行ができない場合にS404で検出した入力をS405で仮登録しておく。これにより、偶発的に発生した遅延についても、ユーザのフラストレーションを表す入力と、装置の動作とを関連づけて登録することが可能となる。
【0047】
図5は、ユーザ特性テーブルの一例を示す。ユーザ特性テーブル500には、登録種別501、検出動作502、検出入力503、検出日時504を含む情報が登録される。
図5では、省略しているが、ユーザ特性テーブル500は、ユーザを識別するためのユーザ識別子と関連づけておくことができる。
【0048】
登録種別501には、仮登録と本登録との2種類があり、それぞれについて検出動作502、検出入力503が登録される。仮登録について、検出動作502には、
図4のS401において検出された動作が登録される。また、検出入力503には、S404において検出された入力が登録され、経過時間TpがT1に達するまでに検出された入力を登録することができる。検出日時504には、S404において入力を検出した日時が登録され、これは経過時間がT1に達した日時とすることができる。検出日時504が現在の日時と比較して一定期間以上経過している場合、有効な情報ではないとして、ユーザ特性テーブル500から削除してもよい。
【0049】
本登録には、仮登録で登録された動作のうち、所定登録回数以上登録された検出動作と検出入力との同一の組み合わせについて、検出動作502、検出入力503、検出日時504とが登録される。例えば、
図5の場合、動作Aについて検出された入力1と入力2とが本登録されている。これらは、仮登録において、例えば5回以上登録されていたために本登録されたものである。検出日時504は、本登録された日時を登録することができる。
【0050】
ユーザ特性テーブル500に本登録された組み合わせは、仮登録の領域からは削除され、それ以降同一の動作については仮登録を行なわなくてもよい。或いは、登録日時から一定期間以上経過した場合には、同一の動作について仮登録を再開し、関連づけられる検出入力の組み合わせが異なる場合には、本登録時に既に登録されている内容を上書きするか、新たに登録してもよい。これは時間の経過と共にユーザの反応が異なってくる場合に対応するためである。
【0051】
仮登録から本登録へ移す場合、同一の検出動作について仮登録されている検出入力503が複数あり、かつ、全てが一致しない場合がある。例えば、
図5で仮登録されている動作Bに着目すると、既に5つの仮登録がなされているので、本登録が可能である。仮登録内容の検出入力503のうち、入力3と入力1とは全てに共通しているが、入力2は一度しか検出されていない。したがって、このような場合には入力2は無視して、入力3と入力1のみを動作Bと関連づけて本登録することができる。なお、入力2が所定登録回数の過半数以上であった場合には、本登録の対象としてもよい、或いは、所定登録回数以上となった入力3と入力1のみを本登録した後、引き続き動作Bについて仮登録を継続し、入力2について所定登録回数以上が登録された後に、本登録の対象とすることができる。
【0052】
ここで、所定登録回数をより大きい値にすることにより、ある動作に対してユーザが確実に実行する操作を統計的に絞り込むことが可能となる。これにより、例えば、ある条件下において偶々検出された入力は統計的に除外されることになるので、平均値との比較を行なわずとも、ユーザのフラストレーションを反映する入力を特定することが可能となる。また、
図5では、検出入力503として複数の入力を登録しているが、検出入力が複数である必要はなく単数であってもよい。その場合、関連づけられる検出動作502について最も高い頻度で検出された入力を検出入力として登録することができる。
【0053】
また、テーブルに登録する入力は、一定時間T1内に検出された入力であるが、検出された複数の同種(又は異種)の入力をまとめて扱うことによりジェスチャ入力として登録してもよい。例えば、一定の間隔を置いてタップを行ない、画面を叩くユーザがいる一方で、一定方向のスワイプを繰り返すユーザもいる。この場合、単体のタップやスワイプ自体を入力として登録することもできるが、一定時間内に入力された複数のタップをまとめて連続タップジェスチャとして、また、繰り返し行なわれたスワイプをまとめて連続スワイプジェスチャとして登録してもよく、この場合はユーザが実行するジェスチャによりユーザの状態を判定することが可能となる。例えば、単にスワイプを単発で行なっている場合は、フラストレーションを感じていないと判定できる一方、連続してタップを繰り返している場合はユーザがフラストレーションを感じている状態にあると判定することができる。
【0054】
次に、
図6を参照して、クライアント101で行なわれる、本実施形態に対応する処理の流れを説明する。
図6は、クライアント101で実行される処理のフローチャートの一例を示す。当該フローチャートに対応する処理は、例えば、クライアント101のCPU200が対応するプログラムを実行し、各機能ブロックの動作を制御することにより実現できる。
【0055】
まず、S601では、クライアント101においてユーザからの操作を受付ける。ここで受付ける操作には、例えば、情報検索、絞り込み、並べ替え、その他の情報の取得、情報のアップロード、ページの表示、更新、リンク先の情報の提示、ズームイン、ズームアウトなどを要求するための操作が含まれる。CPU200はユーザからの操作を受付けると、S602において受付けた操作に対応する処理を開始する。クライアント101がサーバ103から情報の取得を要求する操作を受付けた場合には、当該情報の取得のためのWeb API(以下、単にAPIと略す。)を利用して、情報の取得要求を送信する。例えば、情報検索の場合には、サーバ103に対し検索の実行を要求するためのAPIを利用し、検索要求を送信する。このとき、使用可能なAPIが複数ある場合、クライアント101においてデフォルトとして指定されているAPIを利用する。また、クライアント101側で実行可能な処理については、CPU200が当該処理を開始する。例えば、表示されているページのズームインの動作を受付けた場合には、ユーザから受付けた操作量に応じたズームイン動作を実行することができる。
【0056】
クライアント101がAPIを利用してサーバ103に所定の処理の実行を要求した場合、サーバ103側では、クライアント101から要求を受信すると、要求に対応する処理を実行し、処理が完了すると処理結果をクライアント101に要求に対する応答として送信する。
【0057】
S602における処理の実行中において、クライアント101のユーザは処理の完了を待つ待機状態に置かれるが、処理が完了せず、ユーザ操作に対する応答ができない場合に待機中のユーザはフラストレーションを感じることになる。そこで、続くS603においてCPU200は、ユーザがフラストレーションを感じているかどうかを判定する。当該判定は、S601で受付けた操作(所定の処理)と関連づけて、ユーザ特性テーブル500に本登録された検出入力503に該当する入力が検出されたか否かに基づき行なうことができる。このとき、検出された入力のうち、各入力について与えられる平均値からのずれが認められる入力のみについて、本登録された検出入力503に該当する入力かどうかを判定してもよい。また、所定の処理と関連づけて複数の入力がユーザ特性テーブル500登録されている場合、所定の処理との関連で、いずれか1つ以上の入力を検出した場合にフラストレーションを感じていると判定しても良い。或いは、複数の入力が登録されている場合、所定の時間内に複数の入力の少なくとも2つ以上、または、全てが検出された場合にフラストレーションを感じていると判定しても良い。
【0058】
クライアント101のCPU200が、ユーザのフラストレーションを検出した場合、処理はS604に移行して、クライアント101では、当該フラストレーションを解消するための処理を行なう。例えば、待機時間が長いためにユーザがフラストレーションを感じている場合には処理の高速化を行なう。当該フラストレーション解消処理の詳細は、
図7を参照して後述する。続くS605において、処理が完了すると、処理結果を出力する。例えば、S601における操作が、情報検索を要求する操作であった場合に、サーバ103から受信した検索結果をディスプレイに表示する。このとき、ユーザのフラストレーションを解消するように出力処理を実行することができる。詳細は、
図8を参照して後述する。
【0059】
次に、
図7を参照して、S604におけるクライアント101におけるフラストレーション解消処理について、より詳細に説明する。ここではAPIを利用する場合に、サーバ103との連携において実行可能な処理を含む。
【0060】
まず、S701において、CPU200は、S601で受付けた操作に対応する処理を実行するためのAPIについて、選択済みのデフォルトのAPIよりもサーバ103側でより高速にレスポンスが可能なAPIがあるか否かを判定する。高速にレスポンスが可能なAPIとは、例えば、サーバ側の処理速度を上げることによって高速にサーバ103がレスポンスが可能となるAPIであってもよい。また、例えば、クライアント101から検索を要求する場合に、検索結果に含める情報をより少なくして(例えば、画像を省略する、検索対象に関する説明情報を省略する等)、サーバ103が高速にレスポンスすることを可能とするAPIであってもよい。このような、より高速なレスポンスが可能なAPIがある場合には、S702において当該高速のAPIを利用して要求をサーバ103に対して再度送信する。この時、当該要求が、ユーザ特性テーブル500における、どの動作に基づくものかを示す情報を含めてもよい。より高速なレスポンスが可能なAPIがない場合には、S703に進む。
【0061】
S703では、CPU200は、S601で受付けた操作に対応するAPIがあるか否かを判定する。対応APIがある場合にはS704に進み、対応APIが無い場合にはS705に進む。例えば、ある動作をクライアント101側のアプリケーションの機能を用いて実行することができるが、当該ローカルの機能の実行によりユーザがフラストレーションを感ずる場合に、サーバ103側の処理に切り替えることができる。このとき、受付けたユーザ操作に対応するAPIが用意されている場合には、S704で当該APIを利用してサーバ103に処理の実行要求を送信してもよい。これにより、ユーザがフラストレーションを感じていたクライアント101側での処理そのものを、サーバ103側の処理により置き換えることで、フラストレーションを解消することが可能となる。
【0062】
また、ユーザが表示形態そのものや、それを変更する過程においてフラストレーションを感じている(例えば、画像表示後の拡大、縮小動作が上手くできないためにフラストレーションを感じている場合等)と推測できる場合には、CSS(Cascading Style Sheets)を切替えることにより、表示画面のレイアウトを変更し、フラストレーションを解消できる可能性がある。そこで、S705では、CSSの変更が可能な状況であるか否かを判定し、変更が可能である場合には、S706においてユーザのフラストレーションを解消する方向にCSSを変更する。例えば、表示が小さいためにユーザがズームイン操作を繰り返している場合や、逆に表示が大きいためにユーザがスクロールを頻繁に繰り返している場合は、ユーザがフラストレーションを感じていると推測できる。このような場合には、CSSの変更が可能な状況と判定し、ページの表示が拡大されるようなレイアウトのCSSに変更する。一方、検索結果の受信に時間がかかっているような場合には、CSSの変更はフラストレーションを解消することに直接関係がないので、CSSの変更が可能な状況には該当しない。
【0063】
以上の
図7の処理によりサーバ103が新たなAPIに基づく要求を受信すると、サーバ103は対応する処理を実行する。サーバ103側での処理が完了すると、サーバ103から処理結果が要求に対する応答として送信される。
【0064】
次に、
図8を参照して、S605におけるクライアント101における処理結果の出力について、より詳細に説明する。まず、S801において、サーバ103からの送信結果に画像が含まれているか否かを判定する。APIに対する応答結果は、例えば、JSONやXML形式で提供され、クライアント101が受信した応答結果に基づきディスプレイに表示する情報を生成する。例えば、応答結果に表示用画像を取得するためのリンク(URL)が含まれている場合、画像のサイズが大きければ、画像の画質(解像度)が高く、データサイズが大きいためにクライアント101における表示が遅延し、ユーザのフラストレーションを解消できない可能性がある。そこで、画像用のリンクが含まれている場合にはS802に進み、画像用のリンクが含まれない場合にはS803に進む。S802において画像用リンクに含まれる画像のサイズを小さい値に変更し、S803に進む。例えば、128×128の画像サイズを取得するURLが応答結果に記述されていた場合には、これを64×64に変更してもよい。
【0065】
次に、S803において、表示項目の数が所定数以上であるか否かを判定する。もし、項目が多くある場合、全ての項目について表示情報を取得・生成するまでに時間を要し、クライアント101における表示が完了しないため、遅延が発生し、ユーザのフラストレーションを解消できない可能性がある。例えば、検索結果に含まれる項目及び画像の数が所定数以上の場合には、各項目及び画像を受信するまで表示が完了しない。また、表示使用とするページが複数のAPIから取得したデータをマッシュアップしたページであった場合、ページの表示完了は最も反応が遅かったAPIに依存することになる。このような場合には、応答の遅いAPIに対応する項目は削除して、応答の早かったAPIからの応答結果に対応する項目のみを表示してもよい。
【0066】
なお上記では、ユーザに問い合わせを行なうことなく、クライアント101側で、フラストレーションを解消するために処理の高速化や、情報量の削減を行なった。しかし、ユーザによっては、フラストレーションを感じつつも、速度よりも情報量や品質を優先したい場合もあると考えられる。そこで、S603においてユーザのフラストレーションを検出した場合に、ユーザにS604の処理を実行するか否かの問い合わせを行なってもよい。そして、問い合せに対し、ユーザがS604の処理の実行を希望する場合には、S604以降の処理を実行し、ユーザが当該処理の実行を希望しない場合にはS604以降の処理を行なわず、S602において開始した処理をそのまま継続することができる。
【0067】
以上のように本実施形態では、クライアント101の特定の動作との関連で発生した入力を監視するので、動作との関連で発生した所定のユーザ入力に基づきユーザがフラストレーションを感じているかどうかを判定し、クライアント101における表示を効率よく制御することができる。
【0068】
例えば、表示が切り替るタイミングにおける遅延に対するタップ入力は、端末に対する指示操作ではなくユーザが表示の高速化を催促する合図とみなすことができる。従って、そのような動作とタップ入力とを関連づけておくことで、表示切り替わりのタイミングでタップが発生した際には、表示速度を変更することができる。このように、端末動作とパラメータとを関連づけて記憶しておくことで、装置の動作とは無関係な操作の変化による誤動作を防止することができる。
【0069】
また、例えば、舌打ちが癖となっているユーザがいた場合、それは表示コンテンツの内容に対するものであるのか、装置の動作に対するものであるのかが分からない。その場合、舌打ちが発生する度に表示速度を切替えていては、ユーザの意図に反するおそれがある。また、そのたびにAPIを変更してサーバ103に要求を再送していては、サーバ103側の負荷が大きくなってしまう。そこで、舌打ちと他の条件(装置の動作か、他の操作パラメータ)とを組み合わせることで、装置に対するフラストレーションを的確に判定して処理を実行することができる。
【0070】
さらに、本実施形態では、タップや、スワイプ等の入力につき、個々の入力ではなく、一定時間内に検出された入力を集合として扱うことにより、ジェスチャを特定することが可能となる。これにより、フラストレーションを感じた際に、特定の入力の組み合わせたジェスチャ入力(例えば、特定のリズムでタップを繰り返したり、数回のタップの後にスワイプを繰り返す等)を行なうユーザについて、当該ジェスチャが発生したか否かによりユーザの状態を判定することが可能となる。
【0071】
さらに、本実施形態では、ユーザの精神状態を複数の入力の組み合わせや、動作と入力との関連性に基づき判定するため、迅速な表示が必要とされる場合を的確に捉えて表示制御を切替えることができる。よって、単なる入力検出や入力の変化の検出に応じて頻繁に高速APIが使用され、結果としてサーバの負荷が高くなってしまうような事態を回避することができるので、システム全体としての処理効率を向上させることができる。
【0072】
[実施形態2]
上述の実施形態1では、クライアント101における所定の動作との関連において行なわれるユーザ入力を検出し、ユーザ特性として利用した。これに対し本実施形態では、所定の動作との関連づけを行なうことなく、複数の入力の組み合わせ(ユーザ入力セット)により、ユーザのフラストレーション状態を判定することを可能とする。
【0073】
本実施形態では、ユーザ入力を監視して、同時期に検出された入力の変化を関連づけ、それ以外と区別することができる。例えば、表示切替に時間がかかったためにユーザがフラストレーションを感じ、スワイプ操作と、タップ操作とが行なわれた場合、それらのパラメータの組み合わせについて変化を監視する。もし、パラメータがセットで変化した場合、ユーザの精神状態に変化があったとみなして、表示速度を変更する。これにより、たまたまスワイプ速度が速かった、というだけで常に表示解像度が低下してしまうような事態を回避できる。また、特定の装置動作との関連で記憶しておく場合は、動作毎に関連づける必要があるが、パラメータのセットを記憶しておけば、一部の動作との関連で発生する操作の変化に限定されず、広く対応が可能となる。
【0074】
以下、
図9のフローチャートを参照して、本実施形態に対応するクライアント101において実行される、ユーザ特性テーブルの生成処理を説明する。当該フローチャートに対応する処理は、例えば、CPU200が対応するプログラム(ROM102やHD105等に格納)を実行することにより実現できる。
【0075】
まず、S901において、CPU200は、ユーザ入力を検出したか否かを判定する。ユーザ入力は、指示入力装置208、音声入力部211、振動検出部212、撮像部210で取得可能な任意の入力を含むことができる。ユーザ入力が検出されると、処理はS802に進み、CPU200は、検出したユーザ入力が、当該ユーザ入力の平均値からずれた入力であるかを判定する。例えば、クライアント101は、タップ入力について、単位時間当たりの操作回数、タップ時の押圧力等について平均値を保持しておくことができる。そして、S901でユーザ入力としてタップ入力が検出された場合であれば、検出されたタップの回数や押圧力の当該平均値からのずれが所定よりも大きいか否かを判定し、ずれが所定よりも大きい場合には、平均からのずれがあると判定できる。平均からのずれがあると判定されると、処理はS903に進み、CPU200は、検出したユーザ入力をユーザ特性テーブルに仮登録する。本実施形態におけるユーザ特性テーブルは、
図5に示したユーザ特性テーブル500を転用することができる。但し、本実施形態では検出動作502の項目はブランクとし、検出入力503と検出日時504を登録すればよい。
【0076】
次に、処理はS904に進み、CPU200は、平均からのずれがあると判定されたユーザ入力を検出してからの経過時間Tp'がT2以上となったか否かを判定する。ここで、T2の値は、検出されたユーザ入力の内容に応じて変更してもよい。経過時間Tp'がT2に満たない場合は、処理はS901に戻り、処理を繰り返す。この時、経過時間Tp'の計測を開始した後、経過時間T2以内に検出され、平均からずれていると判定された入力は、S903において互いに関連づけて仮登録される。経過時間Tp'がT2以上となった場合は、処理はS905に進む。S905において、テーブルの登録内容を参照し、仮登録されている、互いに関連づけられた検出入力の組み合わせのうち、同一の組み合わせで所定登録回数(例えば5回)以上登録されているものがあるか否かを判定する。もし、所定登録回数以上登録されている同一の組み合わせが存在する場合は、処理はS906に進む。所定登録回数以上登録されている同一の組み合わせが存在しない場合は、処理はS901に戻って、以上の処理を繰り返す。
【0077】
S906において、CPU200は所定登録回数以上登録されていると判定された同一の組み合わせについて、ユーザ特性テーブル500に本登録を行なう。その後、S901に戻って以上の処理を繰り返す。その際、S906において本登録された組み合わせに関する動作については、S901における検出対象の動作から除外してもよい。例えば、ピンチ入力と、舌打ちの音声入力が本登録された場合、同一の組み合わせについては、仮登録しなくてもよい。或いは、本登録から一定期間経過後に仮登録の対象としてもよい。ここで、本実施形態でも実施形態1と同様に、単体の入力(タップやスワイプ等)を入力として登録することもできるが、一定時間内に入力された複数の入力をまとめてジェスチャ入力として登録してもよい。
【0078】
以上により、ユーザのフラストレーションを表すユーザ入力セットをユーザ特性テーブル500に登録することが可能となる。本実施形態においても、
図6から
図8に対応する処理を実行することで、ユーザ特性テーブル500に登録されたユーザ特性に基づき、ユーザのフラストレーションを検出して、これを効果的に解消することができる。但し、本実施形態では、フラストレーション状態か否かの判定は、S601で受付けた操作と関連づけて実行する必要はなく、処理が開始された後のユーザ入力に基づいて行なうことができる。フラストレーションが検出されれば、そのときに実行している処理についてS604やS605の処理を実行すればよい。
【0079】
[実施形態3]
実施形態1及び実施形態2では、検出したユーザ入力を、当該ユーザ入力の平均値と比較して用いる場合について記載した。そして、これらの実施形態では、ユーザ入力の種類に応じた平均値を使うものの、ユーザがクライアント101を使用している際の使用状況や、使用時間帯に関わらず、一律の平均値を使っていた。しかし、同一のユーザであっても、使用する時間帯によって、或いは、周囲の環境によって、ユーザ入力の態様が異なる可能性があるため、本実施形態では、使用時間帯やクライアント101の周辺環境等の外部情報を考慮して判定を行なう場合について記載する。
【0080】
図10は、ユーザ入力と、周辺環境や使用時間帯といった条件との関連づけにおいて、各ユーザ入力の平均値を管理する平均値テーブル1000の一例を示す。平均値テーブル1000には、検出対象のユーザ入力1001が登録されており、各ユーザ入力に対し条件1002として、複数の条件が登録されている。条件1002には、例えば、ユーザがクライアント101を使用する時間帯に関する条件(例えば、出金時間帯の、朝7時から9時、帰宅時間帯の夕方6時以降等)、或いは、クライアント101の周辺環境に関する条件(電車に乗っている、或いは、周辺が騒がしい環境にいる等)を登録することができる。
【0081】
ユーザによるクライアント101の使用がいずれかの条件に一致するか否かは、例えば、CPU200、撮像部210、音声入力部211、振動検出部212からの出力がいずれかの条件を満たしているかにより判定することができる。例えば、CPU200は、クライアント101内部の時計に基づき、時刻を判定して条件に一致するかを判定することができる。また、音声入力部211により検出される音声や振動検出部212により検出される振動パターンにより、ユーザが電車に乗っているかどうかを判定することができる。また、音声入力部211により検出される音声のレベルにより、クライアント101の周辺環境の騒音の度合いを判定することができる。
【0082】
このようにして、条件1002のいずれかの条件に合致すると判定された場合には、S603の判定において用いる検出されたユーザ入力と比較される平均値に、当該条件と関連づけて平均値テーブル1000に登録されている値を用いる。
【0083】
これにより、ユーザがフラストレーションを感じているかどうかについて、ユーザの使用環境に応じた判定が可能となる。例えば、通勤時に使用している場合には、それ以外の時よりも操作圧力が強くなってしまうユーザについては、通勤時間帯であると判定されるか、或いは、電車に乗っていると判定された場合に、平均値を高くして判定の精度を損なわないようにすることができる。このように平均値を適切に設定することにより、クライアント101からサーバ103への不必要なAPIリクエストを制限することが可能となるので、サーバ103側の処理負担を軽減することも可能となる。
【0084】
[その他の実施形態]
本発明は上記実施の形態に制限されるものではなく、本発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために、以下の請求項を添付する。また本発明に係る情報処理装置は、1以上のコンピュータを該情報処理装置として機能させるコンピュータプログラムによっても実現可能である。該コンピュータプログラムは、コンピュータが読み取り可能な記録媒体に記録されることにより、あるいは電気通信回線を通じて、提供/配布することができる。