(57)【要約】【課題】ユーザ操作の効率性向上を補助する。【解決手段】情報処理装置１２は、端末装置においてユーザの操作によって作成された操作履歴を取得する操作履歴取得部６０と、取得された操作履歴に基づき、ユーザの操作により実行された機能を、操作対象機能として特定する機能特定部６２と、機能特定部６２が特定した操作対象機能の情報に基づき、取得された操作履歴の中から所定の操作履歴を抽出する操作抽出部６４と、操作抽出部６４が抽出した操作履歴について、操作の効率性の高さを示す指標を算出する指標算出部６６と、指標に基づき、所定の効率性を有する操作履歴を選択する操作選択部６８と、操作選択部６８に選択された操作履歴に基づくガイド情報を出力する出力制御部７０と、を備える。【選択図】図６
2020071673.tif 000002
【特許請求の範囲】
【請求項１】
端末装置においてユーザの操作によって作成された操作履歴を取得する操作履歴取得部と、
前記取得された操作履歴に基づき、前記ユーザの操作により実行された機能を、操作対象機能として特定する機能特定部と、
前記機能特定部が特定した操作対象機能の情報に基づき、前記取得された操作履歴の中から所定の操作履歴を抽出する操作抽出部と、
前記操作抽出部が抽出した操作履歴について、操作の効率性の高さを示す指標を算出する指標算出部と、
前記指標に基づき、所定の効率性を有する操作履歴を選択する操作選択部と、
前記操作選択部に選択された操作履歴に基づくガイド情報を出力する出力制御部と、
を備える、
ことを特徴とする情報処理装置。
【請求項２】
前記操作履歴取得部が取得する操作履歴は、ユーザの操作による操作結果が記憶されたメモリ空間のアドレス情報を含み、
前記機能特定部は、前記メモリ空間のアドレスと機能との対応関係を示す機能アドレス情報を参照し、前記取得された操作履歴に含まれるメモリ空間のアドレス情報に対応する機能を、前記操作対象機能であると特定する、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記操作抽出部は、前記操作対象機能が同一である複数の操作履歴を抽出し、
前記指標算出部は、前記抽出された複数の操作履歴それぞれについて、前記指標を算出し、
前記操作選択部は、前記指標が算出された操作履歴の中から、相対的に前記指標が高い操作履歴を選択する、
ことを特徴とする請求項１又は請求項２に記載の情報処理装置。
【請求項４】
前記操作選択部は、前記出力制御部が前記ガイド情報を出力する先の端末装置を使用するユーザの操作履歴に係る前記指標に基づいて、前記所定の効率性を規定するための前記指標に関する条件を設定し、前記指標が前記設定した条件に合致する操作履歴を選択する、
ことを特徴とする請求項１又は請求項２に記載の情報処理装置。
【請求項５】
前記操作履歴取得部は、複数のユーザに関する操作履歴を取得し、
前記出力制御部は、前記操作選択部で選択された操作履歴に係るユーザと、前記ガイド情報を出力する先の端末装置を使用するユーザとが一致するか否かに応じて、異なる種類のガイド情報を出力する、
ことを特徴とする請求項１から請求項４のいずれか１項に記載の情報処理装置。
【請求項６】
前記操作履歴は、端末装置においてユーザが入力した操作内容を示す操作入力情報を含み、
前記指標算出部は、前記操作抽出部が抽出した操作履歴の操作入力情報に基づき、前記指標を算出し、
前記出力制御部は、前記選択された操作履歴に含まれる操作入力情報を前記ガイド情報として出力する、
ことを特徴とする請求項１から請求項５のいずれか１項に記載の情報処理装置。
【請求項７】
前記指標算出部は、前記操作入力情報として、前記ユーザの操作時間と、前記ユーザによる前記端末装置の入力部への入力回数と、前記端末装置のポインタの移動量との少なくとも１つに基づき、前記指標を算出する、
ことを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記指標算出部は、前記ユーザの操作による操作結果が記憶されるまでに要した前記ユーザによる操作の度合いを示す操作量と、前記操作結果が記憶されるまでに要した前記端末装置の消費電力量との、少なくともいずれかを、前記指標として算出する、
ことを特徴とする請求項１から請求項７のいずれか１項に記載の情報処理装置。
【請求項９】
端末装置においてユーザの操作によって作成された操作履歴を取得する操作履歴取得ステップと、
前記取得された操作履歴に基づき、前記ユーザの操作により実行された機能を、操作対象機能として特定する機能特定ステップと、
前記機能特定ステップで特定した操作対象機能の情報に基づき、前記取得された操作履歴の中から所定の操作履歴を抽出する操作抽出ステップと、
前記操作抽出ステップで抽出した操作履歴について、操作の効率性の高さを示す指標を算出する指標算出ステップと、
前記指標に基づき、所定の効率性を有する操作履歴を選択する操作選択ステップと、
前記操作選択ステップで選択された操作履歴に基づくガイド情報を出力する出力制御ステップと、
を含む、
ことを特徴とする、情報処理方法。
【請求項１０】
端末装置においてユーザの操作によって作成された操作履歴を取得する操作履歴取得ステップと、
前記取得された操作履歴に基づき、前記ユーザの操作により実行された機能を、操作対象機能として特定する機能特定ステップと、
前記機能特定ステップで特定した操作対象機能の情報に基づき、前記取得された操作履歴の中から所定の操作履歴を抽出する操作抽出ステップと、
前記操作抽出ステップで抽出した操作履歴について、操作の効率性の高さを示す指標を算出する指標算出ステップと、
前記指標に基づき、所定の効率性を有する操作履歴を選択する操作選択ステップと、
前記操作選択ステップで選択された操作履歴に基づくガイド情報を出力する出力制御ステップと、
をコンピュータに実行させるプログラム。  
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システム、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
ユーザによる機器の操作を補助するために、例えば特許文献１には、ユーザの操作を監視して、監視した操作内容に基づき、ユーザに最適な操作補助を行う旨が記載されている。特許文献１には、２人のユーザの操作履歴が類似していた場合に、一方のユーザの操作履歴に含まれておらず、他方のユーザの操作履歴に含まれている機能を、未知の機能として提示する旨、及び、使用歴の浅いユーザに対して、他のユーザの操作履歴における使用頻度の高い機能を提示する旨が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−３４５８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ユーザによる機器操作は、効率性が高いことが求められる場合がある。特許文献１には、ユーザの操作を補助する情報を提示する旨が記載されているが、特許文献１の方法では、操作の効率性が高くなるように補助することは考慮されていない。従って、特許文献１の方法により提供される情報を用いたとしても、ユーザ操作の効率性は必ずしも高くはならない。このため、機器に対するユーザの操作の効率性向上を補助することが求められている。
【０００５】
本発明は、上記課題を鑑み、ユーザ操作の効率性向上を補助することができる情報処理装置、情報処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一態様にかかる情報処理装置は、端末装置においてユーザの操作によって作成された操作履歴を取得する操作履歴取得部と、前記取得された操作履歴に基づき、前記ユーザの操作により実行された機能を、操作対象機能として特定する機能特定部と、前記機能特定部が特定した操作対象機能の情報に基づき、前記取得された操作履歴の中から所定の操作履歴を抽出する操作抽出部と、前記操作抽出部が抽出した操作履歴について、操作の効率性の高さを示す指標を算出する指標算出部と、前記指標に基づき、所定の効率性を有する操作履歴を選択する操作選択部と、前記操作選択部に選択された操作履歴に基づくガイド情報を出力する出力制御部と、を備える、ことを特徴とする。
【０００７】
本発明の一態様にかかる情報処理方法は、端末装置においてユーザの操作によって作成された操作履歴を取得する操作履歴取得ステップと、前記取得された操作履歴に基づき、前記ユーザの操作により実行された機能を、操作対象機能として特定する機能特定ステップと、前記機能特定ステップで特定した操作対象機能の情報に基づき、前記取得された操作履歴の中から所定の操作履歴を抽出する操作抽出ステップと、前記操作抽出ステップで抽出した操作履歴について、操作の効率性の高さを示す指標を算出する指標算出ステップと、前記指標に基づき、所定の効率性を有する操作履歴を選択する操作選択ステップと、前記操作選択ステップで選択された操作履歴に基づくガイド情報を出力する出力制御ステップと、を含む、ことを特徴とする。
【０００８】
本発明の一態様にかかるプログラムは、端末装置においてユーザの操作によって作成された操作履歴を取得する操作履歴取得ステップと、前記取得された操作履歴に基づき、前記ユーザの操作により実行された機能を、操作対象機能として特定する機能特定ステップと、前記機能特定ステップで特定した操作対象機能の情報に基づき、前記取得された操作履歴の中から所定の操作履歴を抽出する操作抽出ステップと、前記操作抽出ステップで抽出した操作履歴について、操作の効率性の高さを示す指標を算出する指標算出ステップと、前記指標に基づき、所定の効率性を有する操作履歴を選択する操作選択ステップと、前記操作選択ステップで選択された操作履歴に基づくガイド情報を出力する出力制御ステップと、をコンピュータに実行させる。
【発明の効果】
【０００９】
本発明によれば、ユーザ操作の効率性向上を補助することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、第１実施形態に係る情報処理システムのブロック図である。
【図２】図２は、第１実施形態に係る端末装置のブロック図である。
【図３】図３は、本実施形態に係るメモリ空間の模式的な概念図である。
【図４】図４は、端末装置が記憶する操作履歴テーブルの一例を示す図である。
【図５】図５は、第１実施形態に係る端末装置の処理フローを示すフローチャートである。
【図６】図６は、第１実施形態に係る情報処理装置のブロック図である。
【図７】図７は、機能アドレス情報テーブルの一例を示す図である。
【図８】図８は、情報処理装置が記憶する操作履歴テーブルの一例を示す図である。
【図９】図９は、機能の情報が付与された後の、情報処理装置が記憶する操作履歴テーブルの一例を示す図である。
【図１０】図１０は、指標の算出結果の一例を示す図である。
【図１１】図１１は、第１実施形態に係る情報処理装置の処理フローを説明するフローチャートである。
【図１２】図１２は、図１１のステップＳ４０の処理フローの詳細を示すフローチャートである。
【図１３】図１３は、第１実施形態に係る端末装置の情報の表示フローを説明するフローチャートである。
【図１４】図１４は、ステップＳ６０で作成された啓蒙ガイド情報を表示している画面の例を示す図である。
【図１５】図１５は、ステップＳ６０で作成された啓蒙ガイド情報を表示している画面の例を示す図である。
【図１６】図１６は、ステップＳ５８で作成された称賛ガイド情報を表示している画面の例を示す図である。
【図１７】図１７は、ステップＳ５８で作成された称賛ガイド情報を表示している画面の例を示す図である。
【図１８】図１８は、第２実施形態に係る電力換算テーブルの一例を示す図である。
【図１９】図１９は、第３実施形態に係る端末装置のブロック図である。
【図２０】図２０は、第３実施形態に係る端末装置の処理フローを示すフローチャートである。
【００１１】
以下に、本発明の実施形態を図面に基づいて詳細に説明する。なお、以下に説明する実施形態により本発明が限定されるものではない。
【００１２】
（第１実施形態）
図１は、第１実施形態に係る情報処理システムのブロック図である。図１に示すように、第１実施形態に係る情報処理システム１は、複数の端末装置１０と、サーバである情報処理装置１２（操作効率評価装置）と、ネットワーク１４とを有する。１つ以上の端末装置１０は、ネットワーク１４を介して、情報処理装置１２に接続されており、ネットワーク１４を介して、互いに通信、すなわち情報の送受信が可能となっている。それぞれの端末装置１０は、同一のプログラムの動作が可能であり、そのプログラムが動作した際のユーザによる端末装置１０の操作の情報、すなわち操作履歴が、端末装置１０から情報処理装置１２に送信される。情報処理装置１２は、端末装置１０から送信された操作履歴を記憶して、後述する処理を実行することで、ユーザの操作を効率性の観点から分析して、ユーザの端末装置１０の操作を補助する。なお、複数の端末装置１０と情報処理装置１２とは、無線通信で接続されていてもよし、有線通信で接続されていてもよい。図１に示す例では、端末装置１０は３つであるが、端末装置１０の数はこれより多くても少なくてもよい。例えば、情報処理システム１においては、端末装置１０が１つであってもよい。
【００１３】
（端末装置）
図２は、第１実施形態に係る端末装置のブロック図である。端末装置１０は、コンピュータであり、プログラムを実行する。端末装置１０は、プログラムを実行している際に、ユーザの端末装置１０への操作の情報である操作履歴を取得して、情報処理装置１２に出力する。端末装置１０が実行するプログラムは、本実施形態ではアプリケーションであるが、それに限られず、ＯＳ（Operating  System）及びファームウェアなどであってもよい。図２に示すように、制御部２０と、通信部２２と、操作部２４と、表示部２６と、タイマ部２８と、記憶部２９とを有する。制御部２０は、演算装置、すなわちＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）であり、端末装置１０の全体を制御する。
【００１４】
通信部２２は、通信インターフェイスであり、制御部２０の制御により、他の装置、例えば情報処理装置１２と通信することで、データの送受信をするよう構成される。操作部２４は、ユーザの操作（入力）を受け付ける入力部である。本実施形態において、操作部２４は、キーボード３０及びマウス３２を有する。ただし、操作部２４は、ユーザの操作を受け付けるものであれば、キーボード３０及びマウス３２などの入力装置に限らず、他のデバイスを用いてもよい。例えば、タッチパネルであってもよい。表示部２６は、制御部２０の制御により、情報を出力する出力部であり、ここでは、情報を表示するディスプレイである。なお、端末装置１０は、情報を出力する出力部として、表示部２６以外を備えていてもよく、例えば、情報を音声で出力するスピーカを備えていてもよい。タイマ部２８は、現在時刻を取得する装置である。タイマ部２８は、自身で現在時刻を算出するものであるが、外部機器より時刻情報を受信するものであってもよい。
【００１５】
なお、ユーザは、プログラムが動作している端末装置１０を操作する。以下、ユーザによる端末装置１０の操作の内容、すなわちユーザがどのように操作部２４を操作したかの情報を、操作内容と記載する。操作内容は、操作入力情報あるいは操作手順とも称される。また、制御部２０は、ユーザの操作に応じて所定の処理を実行する。ユーザの操作によって制御部２０が実行した処理の結果を、操作結果と記載する。操作結果は、操作出力情報とも称される。この操作結果は、操作内容に応じたものとなり、後述する記憶部２９のメモリ空間３６に記憶される。また、ユーザは、操作部２４を操作して、プログラムを実行中の制御部２０に所定の処理を実行させるが、ユーザの操作により実行された処理の種類を、以下、機能Ｆと記載する。すなわち、機能Ｆとは、ユーザ操作に応じてユーザに提供される機能であるが、ユーザ操作の目的であるともいえる。ユーザは、機能Ｆをプログラムに実行させるために、自身で決めた操作内容で操作を行う。制御部２０は、その操作内容に応じた処理を実行した結果（操作結果）を、プログラムの状態に反映する。従って、同一の機能Ｆを実行する場合であっても、操作内容（操作手順）はユーザに応じて異なる場合がある。一例としては、文章を作成するプログラムにおいて、文字のフォントを設定する処理が、機能Ｆといえる。そして、フォントを設定するためにマウス３２やキーボード３０をどのように操作したかを示す情報が、操作内容と言え、設定されたフォントを示す情報が、操作結果といえる。所定のフォントを設定するための操作手順は、１種類のみではなく、複数種類存在することが多い。ただし、これは一例であり、例えば、無線通信機器の設定を行うためのプログラムにおいて、無線通信機器の特定の機能を使用できるように（アクティブ状態に）設定する処理を、機能Ｆということもできる。
【００１６】
記憶部２９は、各種情報を記憶するものであり、本実施形態では、プログラム記憶部３４、メモリ空間３６、及び操作履歴記憶部３８を有する。プログラム記憶部３４は、端末装置１０が実行するプログラムを記憶する。プログラム記憶部３４は、本実施形態では、外部記憶装置であり、例えばＨＤＤ（Hard  Disk  Drive）やＳＳＤ（Solid  Disk  Drive）などの不揮発性の記録媒体である。制御部２０は、プログラム記憶部３４からプログラムを読み出して、プログラムを立ち上げる。
【００１７】
メモリ空間３６は、制御部２０が直接アクセス可能なメモリ、すなわち内部記憶装置で構成され、例えば半導体メモリで構成される。メモリ空間３６は、アドレス空間と言い換えることもできる。メモリ空間３６内には、プログラムの機能Ｆ毎にメモリ領域が割り当てられている。そして、機能Ｆについての情報が、割り当てられたメモリ領域に書き換え可能に記憶される。例えば、ある機能Ｆについての操作結果は、その機能Ｆが割り当てられたメモリ領域に、書き換え可能に記憶される。すなわち、制御部２０は、メモリ空間３６にアクセスして、メモリ空間３６に記憶されている情報に基づき処理を実行し、メモリ空間３６に処理結果を記憶させることで、プログラムの機能Ｆを実行する。なお、機能Ｆについての処理内容も、その機能Ｆが割り当てられたメモリ領域に記憶されてもよい。
【００１８】
図３は、本実施形態に係るメモリ空間の模式的な概念図である。図３では、メモリ空間３６が、互いにアドレスが異なる複数のメモリ領域Ｍを有している例を示している。図３の例では、メモリ領域Ｍとして、メモリ領域Ｍ１からメモリ領域Ｍ２５が示されている。図３の例では、メモリ領域Ｍ１からメモリ領域Ｍ５までが、１つの機能Ｆである、機能ＦＡに割り当てられる。従って、機能ＦＡの操作結果は、メモリ領域Ｍ１からＭ５の少なくとも１つに記憶される。また、図３の例では、メモリ領域Ｍ６が、機能ＦＢに割り当てられ、メモリ領域Ｍ１１からメモリ領域Ｍ１５と、メモリ領域Ｍ２１からメモリ領域Ｍ２５までが、機能ＦＣに割り当てられ、メモリ領域Ｍ１９及びメモリ領域Ｍ２０が、機能ＦＤに割り当てられている。このように、メモリ空間３６は、どの機能Ｆがどのアドレスのメモリ領域を使用するかが、予め定められている。言い換えれば、制御部２０がプログラム実行時に使用するメモリ空間３６は、所定のアドレスが所定の機能Ｆに対応しているといえる。ただし、図３における機能Ｆとメモリ領域Ｍとの対応関係は、あくまでも一例である。すなわち、機能Ｆに対応するメモリ領域Ｍが定まっていればよく、１つの機能Ｆに割り当てられるメモリ領域Ｍの数、メモリ領域Ｍの大きさ、メモリ領域Ｍのアドレスなどは、任意である。
【００１９】
図２に戻り、操作履歴記憶部３８は、ユーザによる端末装置１０の操作の履歴である操作履歴を記憶するメモリである。操作履歴は、操作内容（操作入力情報）と操作結果（操作出力情報）とを含む。制御部２０は、ユーザの操作部２４への操作の内容、すなわち操作内容を検出して、検出した操作内容を、操作履歴記憶部３８に記憶させる。また、制御部２０は、メモリ領域Ｍの変化を検出して、変化があった場合には、メモリ領域Ｍの情報（操作結果の情報）を、操作履歴記憶部３８に記憶させる。操作履歴記憶部３８に記憶させる操作結果の情報は、その操作結果を記憶したメモリ領域Ｍのアドレスと、そのアドレスに記憶された値（操作結果を示す値）と、を含む。なお、操作履歴記憶部３８は、例えば外部記憶装置であるプログラム記憶部３４と、ハードウェアとして一体であってもよいが、プログラム記憶部３４と別体の記憶装置であってもよい。
【００２０】
図４は、端末装置が記憶する操作履歴テーブルの一例を示す図である。例えば、制御部２０は、操作履歴を、操作履歴記憶部３８の中の操作履歴テーブルに記憶させる。なお、図４の操作履歴テーブルの内容は一例である。図４に示すように、操作履歴テーブルは、操作時刻と、操作対象と、操作内容または操作結果とを関連付けて記憶している。ここで、操作時刻は、操作に係る時刻である。例えば、１つの操作が開始された時刻、１つの操作が終了した時刻、操作結果が記憶された時刻などである。図４に示すように、操作時刻は、日付と時刻を組み合せた「日時」であってもよい。本実施形態では、「日時」である場合も含めて、「時刻」という用語を用いる。また、操作対象は、その操作に係るデバイスを示している。操作履歴には、複数の操作の履歴が含まれる。以下において、１つの操作に対応する操作履歴であることを明確にしたい場合に、単位操作履歴ＯＰと記載する。単位操作履歴は、１つの操作内容又は１つの操作結果の履歴である。操作履歴テーブルに、操作履歴（単位操作履歴ＯＰ）を識別する識別子（例えばＯＰ１などの記号）を、操作内容などと関連付けて記憶させてもよいし、記憶させなくてもよい。
【００２１】
図４の例では、単位操作履歴ＯＰ１は、表示部２６にウィンドウＷ１を表示させた操作内容である。なお、単位操作履歴ＯＰ１は、それより前にユーザがウィンドウＷ１を開くよう操作を行うことで、制御部２０が表示部２６を制御することにより行われたものであるが、図４においては単位操作履歴ＯＰ１より前の操作履歴を省略している。従って、単位操作履歴ＯＰ１は、ユーザが表示部２６を操作対象として、ウィンドウＷ１を表示させるという操作内容を実行した操作履歴ということもできる。単位操作履歴ＯＰ２は、単位操作履歴ＯＰ１の直後に行われた操作内容であり、ユーザが、マウス３２を操作対象として、マウス３２を移動量８０だけスクロールした操作（表示部２６に表示されるポインタを移動量８０だけ移動させた操作）である。移動量８０とは、例えば表示部２６のピクセル８０個分、スクロールしたことを意味しているが、それに限られず、例えば、マウス３２の画面上の移動距離をセンチメートルやインチで表した数値であってもよい。また、マウス３２の机上の移動距離をセンチメートルやインチで表した数値であってもよい。すなわち、マウス３２の移動量を示す尺度として、任意の尺度を用いることができる。単位操作履歴ＯＰ３は、単位操作履歴ＯＰ２の直後に行われた操作内容であり、ユーザが、マウス３２の左側のボタンを一度クリックした、すなわち左シングルクリックしたという操作である。単位操作履歴ＯＰ４は、単位操作履歴ＯＰ３の直後に行われた操作内容であり、ユーザが、キーボード３０を８回打鍵した（打鍵数８）という操作である。なお、図４には示していないが、打鍵されたキーボード３０のキー名称（キーボード３０が備える複数のキーのうちどのキーが押されたかの情報）を、操作履歴テーブルに記録してもよい。単位操作履歴ＯＰ５は、単位操作履歴ＯＰ４の直後に行われた操作内容であり、ユーザが、マウス３２を移動量５０だけスクロールした操作である。単位操作履歴ＯＰ６は、単位操作履歴ＯＰ５の直後に行われた操作内容であり、ユーザが、マウス３２を左シングルクリックした操作である。また、単位操作履歴ＯＰ７は、単位操作履歴ＯＰ６の直後にメモリ空間３６に記憶された操作結果の情報であり、単位操作履歴ＯＰ１から単位操作履歴ＯＰ６の操作内容に応じて、制御部２０が決定した操作結果の情報である。操作結果が記録される場合、操作履歴テーブルの操作対象フィールドは、「記憶部」になる。単位操作履歴ＯＰ７は、操作結果が記憶されたメモリ領域ＭのアドレスがＡ００１００であり、そのアドレスに記憶された操作結果を示す値が、０ｘ５５であることを示している。このアドレスは、例えば、図３におけるメモリ領域Ｍ１に相当する。
【００２２】
このように、制御部２０は、ユーザによる操作内容に基づきプログラムを実行して操作結果をメモリ空間３６に記憶させる。そして、制御部２０は、操作内容の情報と操作結果の情報とを、操作履歴として操作履歴記憶部３８に記憶させる。制御部２０は、操作履歴に、その操作履歴がどのユーザ又はどの端末装置１０によるものかを示すＩＤ(Identification)情報を関連付けて、通信部２２を介して、情報処理装置１２に送信する。なお、ＩＤ情報は、ユーザのＩＤ（ユーザＩＤ）であってもよいし、端末装置１０のＩＤ（端末ＩＤ）であってもよい。例えば、図１において端末装置１０が１つしかなく、複数のユーザが１つの端末装置１０に交互にログインしてプログラムを使用する環境においては、ユーザＩＤを使用する。また例えば、端末装置１０が携帯電話やスマートフォン等であり、１つの端末装置１０を使用するユーザが１人に限定される環境においては、端末ＩＤを使用してもよい。ユーザＩＤと端末ＩＤはどちらも、操作に係る主体（操作主体）を示すＩＤであるので、これらを総称して、「操作主体ＩＤ」、あるいは「操作主体識別子」という。また、操作履歴が情報処理装置１２に送信されるタイミングは、特定のアドレスのメモリ領域Ｍのデータ（値）が変化した際に、新しい単位操作履歴ＯＰが追加されたり更新されたりした際であってもよいし、所定の時間毎であってもよい。
【００２３】
端末装置１０は、以上のような構成となっている。以下、端末装置１０による操作履歴の取得のフローを、フローチャートで説明する。図５は、第１実施形態に係る端末装置の処理フローを示すフローチャートである。図５に示すように、制御部２０は、ユーザからの操作部２４への所定の操作（プログラムを立ち上げるための操作）を検出した場合に、プログラムを開始する（ステップＳ１０）。プログラムを開始したら、制御部２０は、メモリ空間３６の監視を開始する（ステップＳ１２）。具体的には、制御部２０は、メモリ空間３６内の特定のアドレスが割り当てられたメモリ領域Ｍの値が変化したかを監視する。特定のアドレスのメモリ領域Ｍとは、プログラムの機能Ｆが割り当てられているアドレスのメモリ領域Ｍである。そして、制御部２０は、プログラムの実行によって、表示部２６にウィンドウが表示されたかを判断する（ステップＳ１４）。ここでのウィンドウは、操作を行うために開かれるウィンドウであり、「アクティブウィンドウ」とも称される。ウィンドウが表示されなかった場合（ステップＳ１４；Ｎｏ）、後述のステップＳ１８に進む。ウィンドウが表示された場合（ステップＳ１４；Ｙｅｓ）、制御部２０は、アクティブウィンドウ名、すなわち表示されてユーザが操作を行う対象となっているウィンドウの名称と、タイマ部２８から読み出したウィンドウが表示された時刻とを、単位操作履歴ＯＰとして操作履歴記憶部３８に記憶する（ステップＳ１６）。
【００２４】
そして、制御部２０は、ユーザの操作部２４への操作があったかを検出する(ステップＳ１８)。制御部２０は、ユーザの操作が検出されなかった場合（ステップＳ１８；Ｎｏ）、後述のステップＳ２２に進む。制御部２０は、ユーザの操作が検出された場合（ステップＳ１８；Ｙｅｓ）、ユーザによる操作内容と、タイマ部２８から読み出した操作が行われた時刻とを、単位操作履歴ＯＰとして操作履歴記憶部３８に記憶する（ステップＳ２０）。そして、制御部２０は、機能Ｆに対応するメモリ空間３６が変化したかを判断する（ステップＳ２２）。すなわち、制御部２０は、監視していた、機能Ｆに対応する特定のアドレスのメモリ領域Ｍの値（データ）が変化したか否かを判定する（ステップＳ２２）。メモリ空間３６が変化しなかった場合（ステップＳ２２；Ｎｏ）、後述のステップＳ２８に進む。メモリ空間３６が変化した場合（ステップＳ２２；Ｙｅｓ）、制御部２０は、メモリ空間３６の変化パターン、すなわち操作結果の情報と、タイマ部２８から読み出したメモリ空間３６が変化した際の時刻とを、単位操作履歴ＯＰとして操作履歴記憶部３８に記憶する（ステップＳ２４）。すなわち、制御部２０は、特定のアドレスのメモリ領域Ｍの値が変化した場合、そのメモリ領域Ｍのアドレス及びそのメモリ領域の変化後の値と、そのメモリ領域Ｍの値が変化した際の時刻とを、単位操作履歴ＯＰとして操作履歴記憶部３８に記憶する。なお、メモリ空間３６の変化パターン（操作結果の情報）は、１回の操作で複数のアドレスのメモリ領域Ｍに変化があった場合、複数のアドレスとそれらの値とを１件のデータとして記録してもよいし、アドレス毎にそれぞれ別のデータとして複数件の単位操作履歴ＯＰとして記録してもよい。また、制御部２０は、メモリ領域の変化後の値の代わりに、メモリ領域の変化前の値、又は変化前と変化後の差分値などを、操作結果を示す単位操作履歴ＯＰとして記憶させてもよい。
【００２５】
その後、制御部２０は、複数の単位操作履歴ＯＰのそれぞれに操作に係る主体を識別する操作主体ＩＤ（ユーザＩＤ又は端末ＩＤ）を関連付けて、情報処理装置１２に送信する（ステップＳ２６）。そして、制御部２０は、プログラムを終了するかを判断し（ステップＳ２８）、終了しない場合（ステップＳ２８；Ｎｏ）、ステップＳ１４に戻り処理を続け、終了する場合（ステップＳ２８；Ｙｅｓ）、メモリ空間３６の監視を終了して（ステップＳ２９）、本処理を終了する。なお、図５に説明した処理は、立ち上げたプログラムとは別のプログラム、すなわちモニタープログラム及び操作監視プログラムなどで実行してもよいし、立ち上げたプログラム自体で実行してもよい。
【００２６】
（情報処理装置）
次に、情報処理装置１２について説明する。図６は、第１実施形態に係る情報処理装置のブロック図である。情報処理装置１２は、コンピュータを用いて構成されており、いわゆるサーバである。なお、情報処理装置１２を複数のコンピュータを用いて構成してもよい。その場合、図６の一部の機能ブロックをあるコンピュータが処理し、その他の機能ブロックを他のコンピュータが処理する、といったように、機能別の分散処理を行ってもよい。あるいは、同一の機能ブロックを複数のコンピュータで処理する分散処理を行ってもよい。情報処理装置１２は、端末装置１０から操作履歴を受信して、ユーザの操作の効率性を評価する。なお、本実施形態において、情報処理装置１２は、端末装置１０とは別の装置であるが、端末装置１０が情報処理装置１２を兼ねてもよく、言い換えれば、端末装置１０と情報処理装置１２とが同一の装置であってよい。すなわち、情報処理装置１２が、ユーザが操作を行うプログラムを実行して、ユーザの操作履歴を記憶するとともに、情報処理装置１２とは別の装置（他の端末装置１０）の操作履歴を取得して、後述の処理、すなわちユーザの操作の効率性の評価を実行してもよい。また、端末装置１０が、他の端末装置１０の操作履歴を取得して、ユーザの操作の効率性の評価を実行してもよい。
【００２７】
図６に示すように、情報処理装置１２は、制御部４０と、通信部４２と、表示部４４と、記憶部４６とを有する。制御部４０は、演算装置、すなわちＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）であり、情報処理装置１２の全体を制御する。制御部４０の詳細については後述する。
【００２８】
通信部４２は、通信インターフェイスであり、制御部４０の制御により、他の装置、例えば端末装置１０と通信することで、データの送受信をするよう構成される。表示部４４は、制御部４０の制御により、情報を出力する出力部であり、ここでは、情報を表示するディスプレイである。なお、情報処理装置１２は、情報を表示する出力部として、表示部４４以外を備えていてもよく、例えば、情報を音声で出力するスピーカを備えていてもよい。なお、情報処理装置１２は、端末装置１０と同様の操作部を備えていてもよい。また、表示部４４を省略し、情報処理装置１２とは別の装置（表示装置、他のコンピュータの表示部など）に情報処理装置１２の情報を出力してもよい。
【００２９】
記憶部４６は、各種情報を記憶するものであり、本実施形態では、プログラム記憶部５０と、操作履歴記憶部５２と、機能アドレス情報記憶部５４とを有する。プログラム記憶部５０は、情報処理装置１２が実行するプログラムを記憶する。情報処理装置１２が実行するプログラムとは、ここでは、端末装置１０からの操作履歴を取得して各種処理を実行するプログラムである。プログラム記憶部５０は、本実施形態では、外部記憶装置であり、例えばＨＤＤやＳＳＤなどの不揮発性の記録媒体である。
【００３０】
操作履歴記憶部５２は、端末装置１０から送信された操作履歴を記憶する。操作履歴記憶部３８は、例えば外部記憶装置であるプログラム記憶部５０と、ハードウェアとして一体であってもよいが、プログラム記憶部５０と別体の記憶装置であってもよい。
【００３１】
機能アドレス情報記憶部５４は、機能アドレス情報を記憶する。機能アドレス情報は、端末装置１０のプログラムの機能Ｆと、端末装置１０のメモリ空間３６のアドレス（メモリ領域Ｍ）との対応関係を示す情報である。具体的には、機能アドレス情報記憶部５４は、機能アドレス情報テーブルを記憶する。図７は、機能アドレス情報テーブルの一例を示す図である。本図に示すように、機能アドレス情報テーブルは、開始アドレスと、終了アドレスと、機能（機能Ｆ）とを関連付けて記憶する。図７に示す例では、端末装置１０のプログラムの機能Ｆ１が、メモリ空間３６のアドレスＡ０００００からＡ０００ＦＦまでに割り当てられており、機能Ｆ２が、メモリ空間３６のアドレスＡ００１００からＡ００１１Ｆまでに割り当てられており、機能Ｆ３が、メモリ空間３６のアドレスＡ００２００からＡ００３ＦＦまでに割り当てられており、機能Ｆ４が、メモリ空間３６のアドレスＡ００４００からＡ００４ＦＦまでと、アドレスＡ００６００からＡ００６ＦＦまでとに割り当てられており、機能Ｆ５が、メモリ空間３６のアドレスＡ００５００からＡ００５７Ｆまでに割り当てられている。機能アドレス情報記憶部５４は、このような機能アドレス情報を予め記憶している。なお、機能アドレス情報記憶部５４は、例えば外部記憶装置であるプログラム記憶部５０と、ハードウェアとして一体であってもよいが、プログラム記憶部５０と別体の記憶装置であってもよい。
【００３２】
図６に戻り、情報処理装置１２の説明を続ける。制御部４０は、操作履歴取得部６０と、機能特定部６２と、操作抽出部６４と、指標算出部６６と、操作選択部６８と、出力制御部７０とを有する。操作履歴取得部６０と、機能特定部６２と、操作抽出部６４と、指標算出部６６と、操作選択部６８と、出力制御部７０とは、制御部４０がプログラム記憶部５０からプログラムを読み出すことで実現されて、それぞれの処理を実行する。
【００３３】
操作履歴取得部６０は、通信部４２を介して、端末装置１０から、端末装置１０の操作履歴記憶部３８に記憶された操作履歴を取得する。操作履歴取得部６０は、複数の端末装置１０のそれぞれから、ユーザの操作によって作成された操作履歴を取得する。すなわち、操作履歴取得部６０は、操作内容と、操作結果の情報（操作結果を記憶したメモリ領域Ｍのアドレスと、そのアドレスに記憶された値）と、操作時刻の情報と、その操作履歴の操作に係るユーザまたは端末装置１０を示す操作主体ＩＤの情報とを、操作履歴として取得する。操作履歴取得部６０は、取得した操作履歴を、操作履歴記憶部５２に記憶させる。
【００３４】
図８は、情報処理装置１２が記憶する操作履歴テーブルの一例を示す図である。例えば、操作履歴取得部６０は、取得した操作履歴を、図８に示す操作履歴テーブルとして、操作履歴記憶部５２に記憶させる。図８に示すように、操作履歴テーブルには、操作主体ＩＤ（ＩＤ情報）、操作時刻、操作対象、操作内容又は操作結果、の各フィールド（項目）が存在する。操作履歴テーブルは、これらのフィールドを関連付けて、単位操作履歴ＯＰごとに、操作履歴として格納している。例えば、図４に示した端末装置１０が記憶した単位操作履歴ＯＰ１からＯＰ７に対し、図８では操作主体ＩＤが追加されて格納されている。単位操作履歴ＯＰ１からＯＰ７は、ユーザＡが操作した旨の操作主体ＩＤ「Ａ」を含む。また、図８の例では、図４に示した操作履歴が作成された後に、ユーザＡの操作によって作成された単位操作履歴ＯＰ８、ＯＰ９が示されている。また、ユーザＢの単位操作履歴ＯＰ１０からＯＰ１３が、示されている。図８の例では、単位操作履歴ＯＰ８は、単位操作履歴ＯＰ７の直後に行われた操作内容であり、ユーザＡが、マウス３２を移動量６０だけスクロールした操作である。また、単位操作履歴ＯＰ９は、単位操作履歴ＯＰ８の直後に行われた操作内容であり、ユーザＡが、マウス３２を左シングルクリックした操作である。また、単位操作履歴ＯＰ１０は、ユーザＡとは異なるユーザＢが操作した操作内容であり、表示部２６にウィンドウＷ２を表示させた操作内容である。単位操作履歴ＯＰ１１は、単位操作履歴ＯＰ１０の直後に行われた操作内容であり、ユーザＢが、マウス３２を移動量５０だけスクロールした操作である。単位操作履歴ＯＰ１２は、単位操作履歴ＯＰ１１の直後に行われた操作内容であり、ユーザＢが、マウス３２を左シングルクリックした操作である。単位操作履歴ＯＰ１３は、単位操作履歴ＯＰ１２の直後にメモリ空間３６に記憶された操作結果の情報であり、単位操作履歴ＯＰ１０から単位操作履歴ＯＰ１２の操作内容に応じて、制御部２０が決定した操作結果の情報である。単位操作履歴ＯＰ１３は、操作結果が記憶されたメモリ領域ＭのアドレスがＡ００５００であり、そのアドレスに記憶された操作結果を示す値が、０ｘ００であることを示している。なお、情報処理装置１２における操作履歴テーブルについても、操作履歴（単位操作履歴ＯＰ）を識別する識別子（例えばＯＰ１などの記号）を、操作内容などと関連付けて記憶させてもよいし、記憶させなくてもよい。
【００３５】
図６に戻り、情報処理装置１２の説明を続ける。機能特定部６２は、操作履歴取得部６０が取得した操作履歴を、グループ化して操作履歴群を作成し、操作履歴群に対する機能Ｆを特定する。言い換えれば、機能特定部６２は、それぞれの単位操作履歴ＯＰについて、操作履歴群に対応させるか否かを判定し、真と判定した単位操作履歴ＯＰを、いずれかの操作履歴群に対応させ、操作履歴群のそれぞれについて機能Ｆを特定する。例えば、機能特定部６２は、複数の単位操作履歴ＯＰを、１つの操作履歴群とする。１つの操作履歴群は、１つの目的の処理（機能Ｆ）を行うためのユーザによる一連の操作の履歴であるといえる。すなわち、機能特定部６２は、一連の単位操作履歴ＯＰをまとめて操作履歴群を形成することにより、ユーザが入力した操作内容に対応する機能Ｆを特定するといえる。なお、「操作履歴」という用語は、１つ又は複数の単位操作履歴ＯＰを意味する場合もあるが、１つ又は複数の操作履歴群を意味する場合もある。
【００３６】
機能特定部６２は、少なくとも１つの操作内容の単位操作履歴ＯＰと、１つの操作結果の単位操作履歴ＯＰとを含むように、操作履歴群を形成する。すなわち、機能特定部６２は、１つの操作結果の単位操作履歴ＯＰと、その単位操作履歴ＯＰに対応する操作内容の単位操作履歴ＯＰとを、１つの操作履歴群とする。機能特定部６２は、操作結果の単位操作履歴ＯＰと、その単位操作履歴ＯＰより前の時刻が関連付けられた操作内容の単位操作履歴ＯＰとを、１つの操作履歴群とする。具体的には、機能特定部６２は、ユーザによる操作が可能になった状態から、操作によって操作結果が決定されるまでの間の単位操作履歴ＯＰを、１つの操作履歴群にまとめる。操作が可能になった状態とは、典型的には、ユーザが操作を行うためのウィンドウ（アクティブウィンドウ）が表示された状態である。より詳しくは、機能特定部６２は、同じ操作主体ＩＤを有する単位操作履歴ＯＰのうち、操作結果が含まれる単位操作履歴ＯＰ、すなわち、メモリ領域Ｍの値が変化した単位操作履歴ＯＰから時刻を遡り、メモリ領域Ｍの値が変化した単位操作履歴ＯＰの直前のウィンドウが表示された単位操作履歴ＯＰまでの間に含まれる単位操作履歴ＯＰを、１つの操作履歴群（操作履歴のグループ）とする。言い換えれば、機能特定部６２は、メモリ領域Ｍの値が変化した単位操作履歴ＯＰを、１つの操作履歴群に含まれる最終データとする。そして、機能特定部６２は、その最終データの単位操作履歴ＯＰから時刻を遡り、最終データとした単位操作履歴ＯＰと同じ操作主体ＩＤを有する単位操作履歴ＯＰであってウィンドウが表示された単位操作履歴ＯＰのうちで、最終データに最も近い時刻（直近の時刻）に関連付けられた単位操作履歴ＯＰを、最初のデータとする。
【００３７】
図８の例では、機能特定部６２は、メモリ領域Ｍの値が変化した単位操作履歴ＯＰ７を最終データとし、単位操作履歴ＯＰ７の直前で単位操作履歴ＯＰ７と同じ操作主体ＩＤのウィンドウ表示の単位操作履歴ＯＰ１を最初のデータとする。機能特定部６２は、単位操作履歴ＯＰ１から単位操作履歴ＯＰ７を、ユーザＡによる１つの操作履歴群Ｔ１であるとする。また、機能特定部６２は、単位操作履歴ＯＰ１０から単位操作履歴ＯＰ１３までを、ユーザＢによる他の１つの操作履歴群Ｔ２とする。なお、図８の例において、単位操作履歴ＯＰ８およびＯＰ９は、いずれの操作履歴群にも対応していない。機能特定部６２は、それぞれの単位操作履歴ＯＰについて、ウィンドウが表示されてから、メモリ領域Ｍの値が変化するまでの操作に該当するか否かを判定する。そして、この条件に合致しない単位操作履歴ＯＰは、いずれの操作履歴群にも対応しないと判定する。単位操作履歴ＯＰ８およびＯＰ９は、この条件に合致しない操作であるため、いずれの操作履歴群にも対応しない、という結果になる。
【００３８】
機能特定部６２は、このように単位操作履歴ＯＰをグループ化して操作履歴群を作成した後、操作履歴群ごとに、機能Ｆを特定する。ここで特定された機能Ｆは、ユーザの操作により実行された機能であるため、「操作対象機能」あるいは「操作目的機能」とも称される。操作履歴群は、ある１つの目的を達成するためにユーザが行った一連の操作のまとまりであり、ユーザ視点では、１つの操作履歴群は１つ（１回）のユーザ操作であるともいえる。従って、機能特定部６２は、ユーザの操作ごとに、機能Ｆを操作対象機能として特定するともいえる。具体的には、機能特定部６２は、同じ操作履歴群に含まれる単位操作履歴ＯＰを、同じ機能Ｆであるとして特定する。機能特定部６２は、操作履歴に含まれる、操作結果が記憶されたメモリ空間３６の情報に基づき、操作履歴群ごとに機能Ｆを特定する。操作履歴取得部６０が取得した操作履歴には、単位操作履歴ＯＰがどの機能Ｆに対応するものであるかの情報が含まれていない。それに対し、機能特定部６２は、操作結果が記憶されたメモリ空間３６の情報に基づき、ユーザの操作ごとに、ここでは操作履歴群ごとに、機能Ｆを特定する。具体的には、機能特定部６２は、操作履歴群に含まれるメモリ領域Ｍの値が変化した操作履歴（図８の例では単位操作履歴ＯＰ７や単位操作履歴ＯＰ１３）から、そのメモリ領域Ｍのアドレス、すなわち操作結果が記憶されたメモリ領域Ｍのアドレスを抽出する。そして、機能特定部６２は、機能アドレス情報記憶部５４から、メモリ空間３６のアドレスと機能Ｆとの関係を示す機能アドレス情報を読み出して、読み出した機能アドレス情報と、抽出したメモリ領域Ｍのアドレス（操作結果が記憶されたメモリ領域Ｍのアドレス）とを照合する。機能特定部６２は、機能アドレス情報において、抽出したメモリ領域Ｍのアドレスと同じアドレスに関連付けられた機能Ｆを、その操作履歴群の機能Ｆであると特定する。機能特定部６２は、操作履歴群毎に、このようにして機能Ｆを特定する。機能特定部６２は、特定した機能Ｆの情報を操作履歴に関連付けて、操作履歴記憶部５２に記憶させる。このように、機能特定部６２は、機能アドレス情報を読み出し、機能アドレス情報において、操作結果が記憶されたメモリ空間３６のアドレスに関連付けられた機能Ｆを、その操作の目的の機能Ｆであると特定する。機能特定部６２は、操作履歴取得部６０が取得した操作履歴群に対し、特定した機能Ｆの情報を付与する。
【００３９】
なお、機能アドレス情報は、端末装置１０側に記憶されていてもよい。この場合、端末装置１０の制御部２０は、上述の方法で機能アドレス情報に基づき作成した機能Ｆの情報を操作履歴に加えて、操作履歴記憶部３８に記憶させる。従ってこの場合、情報処理装置１２は、機能Ｆの情報を含んだ操作履歴を取得し、機能特定部６２は、操作履歴に含まれた機能Ｆ（操作対象機能）の情報を取得することで、ユーザの操作により実行された機能を特定する。つまり、機能特定部６２は、端末装置１０で作成された情報を取得することにより、操作対象機能を特定してもよい。機能特定部６２は、機能取得部あるいは操作対象機能取得部であるともいえる。
【００４０】
次に、図７および図８を用いて、機能を特定する処理の具体例を説明する。図８の操作履歴テーブルの例では、単位操作履歴ＯＰ７のアドレスがＡ００１００であるため、図７に示す機能アドレス情報によると、単位操作履歴ＯＰ１からＯＰ７までの操作、すなわち操作履歴群は、機能Ｆ２となる。また、単位操作履歴ＯＰ１３のアドレスがＡ００５００であるため、図７に示す機能アドレス情報によると、単位操作履歴ＯＰ１０からＯＰ１３までの操作履歴群は、機能Ｆ５となる。機能特定部６２は、特定した機能の情報を図８の操作履歴テーブルに追加し、操作履歴記憶部５２に記憶させる。図９は、機能の情報が付与された後の操作履歴テーブルの一例を示す図であり、図８の操作履歴テーブルと比べて、「機能」フィールドが追加されている。図９に示すように、機能特定部６２は、単位操作履歴ＯＰ１からＯＰ７までに、機能Ｆ２である旨の情報を関連付け、単位操作履歴ＯＰ１０からＯＰ１３までに、機能Ｆ５である旨の情報を関連付ける。また、いずれの操作履歴群に分類されない単位操作履歴ＯＰ８およびＯＰ９の「機能」欄には、いずれの機能Ｆにも関連付けられていないことを示す「−」が記録される。
【００４１】
なお、操作履歴テーブルは、１回の処理で機能Ｆが特定された操作履歴以外にも、過去に機能Ｆが特定された際の操作履歴を含んでいる。図９の例では、ユーザＣによる操作履歴群Ｔ３である単位操作履歴ＯＰ１４から単位操作履歴ＯＰ１７と、ユーザＢによる操作履歴群Ｔ４である単位操作履歴ＯＰ１９から単位操作履歴ＯＰ２５とが、それに該当する。単位操作履歴ＯＰ１４は、表示部２６にウィンドウＷ２を表示させた操作内容である。単位操作履歴ＯＰ１５、ＯＰ１６については説明を省略するが、ユーザＣによる操作内容を含む操作履歴である。単位操作履歴ＯＰ１７は、単位操作履歴ＯＰ１４から単位操作履歴ＯＰ１６の操作内容に応じて、制御部２０が決定した操作結果の情報である。単位操作履歴ＯＰ１７は、操作結果が記憶されたメモリ領域ＭのアドレスがＡ００１０１であり、そのアドレスに記憶された操作結果を示す値が、０ｘ５５であることを示している。従って、単位操作履歴ＯＰ１４からＯＰ１７には、機能Ｆ２が対応する。また、単位操作履歴ＯＰ１９は、表示部２６にウィンドウＷ１を表示させた操作内容である。単位操作履歴ＯＰ２０からＯＰ２４については説明を省略するが、ユーザＢによる操作内容を含む操作履歴である。単位操作履歴ＯＰ２５は、単位操作履歴ＯＰ１９から単位操作履歴ＯＰ２４の操作内容に応じて、制御部２０が決定した操作結果の情報である。単位操作履歴ＯＰ２５は、操作結果が記憶されたメモリ領域ＭのアドレスがＡ００１００であり、そのアドレスに記憶された操作結果を示す値が、０ｘ３３であることを示している。従って、単位操作履歴ＯＰ１９からＯＰ２５には、機能Ｆ２が対応する。なお、操作履歴テーブルは、過去に取得した全ての操作履歴を含んでいてもよいし、所定期間（例えば、過去１年間）に取得した操作履歴、あるいは操作時刻が所定期間に該当する操作履歴のみを含んでいてもよい。
【００４２】
図６に戻り、情報処理装置１２の説明を続ける。操作抽出部６４は、同じ目的の操作とみなせる操作履歴群を抽出する。例えば、同じ機能Ｆに対応する操作同士は、同じ目的の操作であると見なせるので、それらの操作を抽出する。具体的には、操作履歴テーブルに含まれる操作履歴群の中から、以下に示す（１）から（４）のいずれかの条件に合致する操作履歴群を、同一目的の操作として、抽出する。
（１）機能フィールドが第１の所定値（例えば機能Ｆ２）である操作履歴群。
（２）機能フィールドが第１の所定値（例えば機能Ｆ２）であり、かつ操作結果のアドレスが第２の所定値（例えばＡ００１００）操作履歴群。
（３）機能フィールドが第１の所定値（例えば機能Ｆ２）であり、かつ操作結果のアドレスが第２の所定値（例えばＡ００１００）であり、かつ操作結果の値（メモリ領域Ｍの値）が第３の所定値（例えば０ｘ５５）である操作履歴群。
（４）機能フィールドが第１の所定値（例えば機能Ｆ２）であり、かつ操作結果のアドレスが第２の所定値（例えばＡ００１００）であり、かつ操作結果の値（メモリ領域Ｍの値）が第３の所定値（例えば０ｘ５５）であり、かつメモリ領域Ｍの変更前の値が第４の所定値（例えば０ｘ００）である操作履歴群。
【００４３】
ここで、第１の所定値から第４の所定値は、予め定められた値に限らない。例えば、（１）の条件を用いる場合、操作履歴テーブルの機能フィールドに格納された任意の１つの値を読み出し、それを第１の所定値としてもよい。このような処理をすると、操作履歴テーブルに格納された１つの操作履歴群の機能と同じ機能に対応付けられた操作履歴群を全て抽出することができる。また、操作履歴テーブルにおいて、２つ以上の操作履歴群に対応する機能を第１の所定値にし、１つの操作履歴群にしか対応しない機能は第１の所定値にしない（抽出対象としない）処理をしてもよい。すなわち、操作抽出部６４は、（１）の条件を用いて、機能フィールド（すなわち機能Ｆ）が互いに一致する操作履歴群を、抽出することができる。同様に、操作履歴テーブルに格納された任意の操作結果のアドレスを読み出し、それを第２の所定値としてもよい。すなわち、操作抽出部６４は、（２）の条件を用いて、機能フィールド及び操作結果のアドレスが互いに一致する操作履歴群を、抽出することができる。同様に、操作履歴テーブルに格納されたメモリ領域Ｍの値を読み出し、それを第３の所定値としてもよい。すなわち、操作抽出部６４は、（３）の条件を用いて、機能フィールド、操作結果のアドレス、及び操作結果の値が互いに一致する操作履歴群を、抽出することができる。同様に、操作履歴テーブルに格納されたメモリ領域Ｍの変更前の値を読み出し、それを第４の所定値としてもよい。すなわち、操作抽出部６４は、（４）の条件において、機能フィールド、操作結果のアドレス、操作結果の値、及びメモリ領域Ｍの変更前の値が互いに一致する操作履歴群を、抽出することができる。
【００４４】
上記の条件（１）〜（４）は、同じ目的の操作と判定するための条件であるが、条件（１）が最も緩く、番号が大きくなるほど条件が厳しくなり、条件（４）が最も厳しい。条件（１）を用いる場合、図９の例では、機能Ｆ２に対応する、操作履歴群Ｔ１と操作履歴群Ｔ３と操作履歴群Ｔ４とが同じ目的の操作と判定される。また、１つの機能Ｆに対応するメモリ空間が複数のアドレスで構成されている場合には、条件（１）と条件（２）では異なる結果になる場合がある。例えば、図９の例において、条件（１）を用いると、機能Ｆ２に対応する、操作履歴群Ｔ１、Ｔ３、Ｔ４は全て同じ目的と判定される。条件（２）を用いると、操作履歴群Ｔ１と操作履歴群Ｔ４は同じ目的と判定されるが、操作履歴群Ｔ１と操作履歴群Ｔ３は、アドレスが異なるため、同じ目的とは判定されない。また、条件（３）を用いると、操作履歴群Ｔ１、Ｔ３、Ｔ４において、アドレスおよびメモリ領域Ｍの値は、完全には一致しないため、それぞれ別の目的の操作と判定される。例えば、フォントカラーの変更機能において、特定の色に変更したものだけを同じ目的とするのでなく、どの色に変更した場合でも同じ目的とみなしたい場合、すなわち、メモリ領域Ｍの変更後の値が全く同じ変更でなくても、変更されたメモリ領域Ｍのアドレスが同じであれば、同じ目的としたい場合には、条件（１）または条件（２）を用いればよい。条件（４）を用いる場合、操作履歴取得部６０は、メモリ領域Ｍが変更された後の値だけでなく、変更される前の値も、端末装置１０から取得する。そして、操作抽出部６４は、機能Ｆ、メモリ領域Ｍのアドレス、メモリ領域Ｍの変更後の値、メモリ領域Ｍの変更前の値、の全てが一致する操作履歴群を、同じ目的の操作であるとして抽出する。
【００４５】
このように、操作抽出部６４は、少なくとも機能Ｆが一致する操作履歴群を、同じ目的の操作として判定する。さらに、操作抽出部６４は、同じ機能Ｆでなくても、類似する機能Ｆの操作履歴群を抽出してもよい。この場合、記憶部４６は、関係性の高い（類似性の高い）機能に関する情報を記憶し、操作抽出部６４は、その情報をもとに、関係性が高いと定義された２つ以上の機能Ｆに対応する操作履歴群を、同じ目的の操作であるとして抽出する。例えば、機能Ｆ２と機能Ｆ５は異なる機能であるが、関連性の高い機能であると定義されている場合、機能Ｆ２に係る操作と機能Ｆ５に係る操作を同じ目的の操作と判定する。すなわち、同じ目的の操作と判定する条件は、機能Ｆが同一であることに限定されない。あるいは、機能Ｆ２に係る操作と機能Ｆ５に係る操作を、同一の目的ではないが、類似する目的の操作と判定して、抽出対象に加えてもよい。この場合、操作抽出部６４は、同一又は類似する目的の操作を判定して抽出する、といえる。
【００４６】
また、記憶部４６に、２つの機能の組み合せ毎に類似度（関連性／類似性の高さを示す数値）を記憶させておき、操作抽出部６４は、その類似度をもとに、同じ目的の操作を判定してもよい。例えば、フォントの色を変更する機能と、フォントの文字修飾（ボールド／イタリック等）を変更する機能との類似度を「０．３」、フォントの色を変更する機能と、フォントの大きさを変更する機能との類似度を「０．２」などと適宜定義しておく。ここで類似度は、関連性／類似性が高いほど高い値に設定されている。そして操作抽出部６４は、類似度が所定のしきい値（例えば「０．３」）以上である機能に対応する操作履歴群を、同一の目的の操作とみなして抽出する。
【００４７】
また、機能と操作結果の値との組み合わせに関する類似度を記憶部４６に記憶させておき、操作抽出部６４は、その類似度をもとに、同じ目的の操作を判定してもよい。この類似度が定義される機能の組み合せは、同じであっても、異なっていてもよい。例えば、フォントの色を変更する機能に関して、操作結果の値である変更後の色が一致する場合の類似度を「１．０」、数値は若干異なるが、色差が所定値未満である場合（ほぼ同じ色とみなせる場合）の類似度を「０．８」、色差が所定値以上である場合（ほぼ同じ色とみなせない場合）の類似度を「０．５」などと定義しておく。そして操作抽出部６４は、類似度が所定のしきい値（例えば「０．７」）以上である機能に対応する操作履歴群を、同一の目的の操作とみなして抽出する。この場合、「フォントの色を変更する」という同じ機能の範囲で、異なる操作結果の値に関する類所度を用いている。
【００４８】
また、機能と操作結果の値との組み合せに関する類似度において、２つの機能が異なっていてもよい。例えば、「フォントの文字修飾を変更する」機能により、操作結果の値が「ボールド」となった状態と、「フォントの大きさを変更する」機能により、操作結果の値が「２０ポイント」になった状態との類似度を「０．２」、「フォントの文字修飾を変更する」機能により、操作結果の値が「ボールド」となった状態と、「フォントの大きさを変更する」機能により、操作結果の値が「８ポイント」になった状態との類似度を「０．１」などと定義しておいてもよい。なお、ここでは通常フォントの大きさは「２０ポイント」と「８ポイント」の間のサイズ（例えば「１２ポイント」）であることを想定しており、通常フォントより大きなサイズのフォントは、その文字を強調するために使われる可能性が高いため、文字を強調する目的で使われる「ボールド」との類似度がより高い値に設定されている。すなわち、操作抽出部６４は、機能Ｆ同士の類似度、又は、機能Ｆと操作結果の値との組み合せ同士の類似度を用いて、類似度が所定のしきい値以上の機能Ｆ又は操作結果に対応する操作履歴群を、同一の目的の操作とみなして抽出する。また、このしきい値を段階的に変化させて抽出処理を行ってもよい。例えば、最初にしきい値を「０．８」に設定して抽出処理を行い、必要な数の操作履歴群が抽出できた場合には処理を終了し、必要な数の操作履歴群が抽出できなかった場合には、しきい値を「０．５」に下げて、再度抽出処理を行うようにしてもよい。
【００４９】
このように、操作抽出部６４は、同じ機能Ｆ又は所定の関係を有する機能Ｆに対応する操作履歴群を抽出する。従って、操作抽出部６４は、機能特定部６２が特定した機能Ｆの情報に基づき、操作履歴群の中から、所定の操作履歴群を抽出するといえる。また、操作抽出部６４は、所定の機能（操作対象機能）に対応する操作履歴を抽出するともいえる。例えば、操作抽出部６４は、「機能Ｆ２に対応する操作履歴群」、「機能Ｆ２に対応し、かつ操作結果のアドレスがＡ００１００であり、かつそのアドレスの値が０ｘ５５である操作履歴群」などを抽出するが、これら全ては、所定の機能（機能Ｆ２）に対応する操作履歴である。また例えば、機能Ｆ１とＦ５の関連性が高く、類似の目的の機能とみなせる場合に、操作抽出部６４は、「機能Ｆ２または機能Ｆ５に対応する操作履歴群」、「機能Ｆ２に対応し、かつ操作結果のアドレスがＡ００１００の操作履歴群、または、機能Ｆ５に対応し、かつ操作結果のアドレスがＡ００５００の操作履歴群」などを抽出するが、これら全ては、所定の機能（機能Ｆ２または機能Ｆ５）に対応する操作履歴である。このように、所定の機能は、複数の機能Ｆの組み合せで定義されてもよい。またこのように、所定の機能に対応する全部の操作履歴ではなく、所定の機能に対応する一部の操作履歴を抽出してもよい。その意味で、操作抽出部６４は、所定の機能に対応する少なくとも一部の操作履歴を抽出するともいえる。また、操作抽出部６４は、全ての機能Ｆを抽出対象とするのではなく、予め定めた特定の機能Ｆのみを、抽出対象としてもよい。例えば、機能Ｆ１から機能Ｆ５が存在する場合、機能Ｆ１からＦ４を抽出対象とし、機能Ｆ５を抽出対象にしなくてもよい。
【００５０】
図６に戻り、情報処理装置１２の説明を続ける。指標算出部６６は、操作抽出部６４が抽出した操作について、操作の効率性に関する指標Ｅを算出する。すなわち、指標算出部６６は、機能Ｆが一致する操作履歴群、又は機能Ｆが所定の関係を有する操作履歴群について、その操作履歴群におけるユーザ操作の効率性の高さを示す指標Ｅを算出する。指標Ｅは、抽出された操作履歴群におけるユーザの操作の効率性を評価した指標である。本実施形態では、指標Ｅは、操作結果がメモリ空間３６に記憶されるまでに要したユーザの操作量（工数）を示す値であり、言い換えれば、操作履歴群に含まれる操作内容の良し悪しの程度（度合い）を示している。
【００５１】
指標算出部６６は、操作抽出部６４が抽出した操作履歴群（以下、抽出操作履歴群とも呼ぶ）に含まれる単位操作履歴ＯＰの操作内容に基づき、指標Ｅを算出する。この抽出操作履歴群は、複数種類の操作内容を含む場合がある。この場合、指標算出部６６は、複数種類の操作内容に基づき、指標Ｅを算出する。本実施形態における操作内容は、マウス３２のクリック数及びキーボード３０の打鍵数、すなわち操作部２４への入力回数と、マウス３２の移動距離、すなわちポインタの移動量とを含んでいる。指標算出部６６は、操作部２４への入力回数及びポインタの移動量に加え、ユーザの操作時間を用いて、指標Ｅを算出する。
【００５２】
指標算出部６６は、抽出操作履歴群の中から指標Ｅの算出に用いる操作内容（単位操作履歴ＯＰ）を抽出する。具体的には、指標算出部６６は、抽出操作履歴群に含まれる全ての単位操作履歴ＯＰから、マウス３２をクリックした単位操作履歴ＯＰとキーボード３０を打鍵した単位操作履歴ＯＰを抽出する。そして、抽出した単位操作履歴ＯＰにおけるマウス３２のクリック数及びキーボード３０の打鍵数の操作履歴群毎の合計値を、各操作履歴群における操作部２４への入力回数として算出する。また、指標算出部６６は、抽出操作履歴群に含まれる全ての単位操作履歴ＯＰから、マウス３２を移動させた単位操作履歴ＯＰを抽出する。そして、抽出した単位操作履歴ＯＰにおけるマウス３２の操作履歴群毎の移動量の合計値を、各操作履歴群におけるポインタの移動量として算出する。また、ユーザの操作時間とは、機能Ｆに関する操作が開始されてから操作結果が記録されるまでに要した時間であり、言い換えれば、機能Ｆに関する操作が開始された時刻から、目的が達成された時刻（操作結果が決定された時刻）までの時間である。指標算出部６６は、抽出操作履歴群において、ウィンドウが表示された時刻を操作が開始された時刻とし、機能Ｆに対応するメモリ領域が変更された時刻を目的が達成された時刻であるとする。すなわち、指標算出部６６は、ウィンドウが表示された単位操作履歴ＯＰ（図９の例では単位操作履歴ＯＰ１）に関連付けられた時刻から、操作結果についての単位操作履歴ＯＰ（図９の例では単位操作履歴ＯＰ７）に関連付けられた時刻までの時間を算出して、算出した時間を操作時間とする。なお、操作が開始された時刻は、ウィンドウが表示された時刻に限られず、例えばユーザが最初に操作部２４を操作した時刻（図９の例では単位操作履歴ＯＰ２）としてもよい。
【００５３】
このように算出した操作部２４への入力回数、ポインタの移動量、及びユーザの操作時間は、値が小さいほど、ユーザによる操作量が少ないといえる。そして、機能Ｆを実行するのに要したユーザの操作量が少ないほど、効率のよい操作であるといえる。以下の説明において、操作抽出部６４は、条件（１）を用いて、機能Ｆ２に対応する同じ目的の操作履歴群を抽出しており、図９に示す操作履歴の中から、操作履歴群Ｔ１、Ｔ３、Ｔ４を抽出しているものとする。すなわち、機能Ｆ２に対応する抽出操作履歴群は、Ｔ１、Ｔ３、Ｔ４の３つである。指標算出部６６は、抽出操作履歴群Ｔ１について、「マウス３２の左シングルクリック」が２回であり、「キーボード３０の打鍵数」が８回であるため、操作部２４の入力回数を「２＋８＝１０回」とし、ポインタの移動量を「８０＋５０＝１３０」とし、ウィンドウが表示された時刻「２０１８−０１−１５  １３：００：００．０００」から、操作結果が記録された時刻「２０１８−０１−１５  １３：００：０６．１００」までの時間（時間差）である操作時間を「６．１秒」として算出する。また、指標算出部６６は、抽出操作履歴群Ｔ３について同様に、操作部２４の入力回数を「１回」とし、ポインタの移動量を「１０」とし、操作時間を「３．０秒」として算出する。また、指標算出部６６は、抽出操作履歴群Ｔ４について、操作部２４の入力回数を「２＋８＝１０回」とし、ポインタの移動量を「５０＋６０＝１１０」とし、操作時間を「６．０秒」として算出する。なお上述した、操作部２４への入力回数、ポインタの移動量、及びユーザの操作時間は、単位操作履歴ＯＰに含まれるユーザの操作量を示す値を、操作履歴群ごとに集約（集計）した値であるので、これらを操作集約値あるいは操作集計値と称する。
【００５４】
指標算出部６６は、以上のように、指標Ｅの算出に用いる操作内容を抽出し、それをもとに操作集約値を算出する。ただし、指標Ｅの算出に用いる操作内容の種類は、上記で説明したものに限られず、任意に設定してよい。例えば、指標算出部６６は、操作内容として、ユーザの操作時間と、ユーザによる端末装置の操作部２４への入力回数と、端末装置１０のポインタの移動量との少なくとも１つに基づき、指標Ｅを算出してよい。また、マウス３２のクリック数と、キーボード３０の打鍵数を合計せずに、別々の操作集約値（パラメータ）として用いて、指標Ｅを算出してもよい。また、例えば端末装置１０の操作部２４がタッチパネルである場合、すなわち端末装置１０がスマートフォンやタブレット端末などである場合、操作内容は、タッチパネルのタップやフリックなどの操作となる。操作部２４がカメラやマイクなどであってもよく、この場合の操作内容は、カメラのボタン操作やマイクのスイッチ操作などになる。また、音声入力やジェスチャー入力による操作を用いる場合、ユーザの発話回数、発話時間、ジェスチャー動作に要した時間、ジェスチャー動作の運動量などを操作集約値として用いて指標Ｅを算出してもよい。
【００５５】
指標算出部６６は、抽出した操作内容を用いて、指標Ｅを算出する。指標算出部６６は、抽出した操作内容に基づいて算出された操作集約値を、所定の関数に入力して、指標Ｅを算出する。例えば、指標算出部６６は、次の式（１）を用いて指標Ｅを算出する。
【００５６】
Ｅ＝ｆ（ｘ，ｙ，ｚ）  ・・・（１）
【００５７】
ここで、ｆは、ｘ、ｙ、ｚを変数とした所定の関数であり、予め設定される。またここでは、ｘは操作時間であり、ｙは入力回数であり、ｚはポインタの移動量（移動距離）である。
【００５８】
さらに、指標算出部６６は、複数の操作集約値を算出した場合、操作集約値毎に異なる重み付けを行って、指標Ｅを算出することが好ましい。例えば、指標算出部６６は、次の式（２）を用いて指標Ｅを算出する。
【００５９】
Ｅ＝α・ｇ（ｘ）＋β・ｈ（ｙ）＋γ・ｋ（ｚ）  ・・・（２）
【００６０】
α、β、γは、予め定められた定数であり、例えば０以上の値である。ｇ、ｈ、ｋは、それぞれｘ、ｙ、ｚを変数とする予め設定された所定の関数であり、例えば出力値が０以上となる単調増加特性を持つ。従って、この場合、指標Ｅが小さいほど、ユーザによる操作の度合いを示す操作量が小さくなるといえる。つまり、指標Ｅが小さいほど、ユーザ操作の効率性が高い。指標算出部６６は、α、β、γを予め異なる値に設定したり、ｇ、ｈ、ｋを予め異なる関数に設定したりすることで、操作集約値毎、すなわち操作内容毎に異なる重み付けを行って、指標Ｅを算出する。なお、ｇ、ｈ、ｋは線形関数であっても、非線形関数であってもよい。最も簡易な処理としては、出力＝入力となる線形関数であってもよい。すなわち、関数を用いずに、ｘ、ｙ、ｚの重み付け加算値を指標Ｅとしてもよい。
【００６１】
図１０は、操作集約値および指標Ｅの算出結果の一例を示す図である。式（２）において、α＝２、β＝１、γ＝０．１とし、ｇ，ｈ，ｋを出力＝入力となる線形関数であるとすると、操作履歴群Ｔ１、Ｔ３、Ｔ４の指標Ｅは、図１０のようになる。すなわち、操作履歴群Ｔ１の指標Ｅは、「３５．２」となり、操作履歴群Ｔ３の指標Ｅは、「８．０」となり、操作履歴群Ｔ４の指標Ｅは、「３３．０」となる。なお、指標算出部６６は、すでに指標Ｅを算出済みの操作履歴群については、改めて指標Ｅを算出し直さなくてもよく、例えば記憶部４６に記憶した算出済みの指標Ｅを読み出して、算出済みの操作履歴群の指標Ｅを取得してもよい。本実施形態における指標Ｅは、値が小さいほど、操作の効率性が高い（効率性が良い）、という特性を持っている。ただし、指標Ｅの値の大小と、操作の効率性の高さの関係は、任意に定義することができる。例えば、指標Ｅの値が大きいほど、操作の効率性が高いように、指標Ｅを算出することも可能である。以下の説明において、「ユーザ操作の効率性が高い」という意味で、「指標Ｅが高い」あるいは「指標Ｅの値が高い」という表現を用いる場合がある。本実施形態において、「指標Ｅが小さい」ことと「指標Ｅが高い」ことと「操作の効率がよい」ことは同義である。
【００６２】
図６に戻り、情報処理装置１２の説明を続ける。操作選択部６８は、指標算出部６６が算出した指標Ｅに基づき、同じ目的とみなせる操作のうちから、所定の効率性を有する操作を選択する。すなわち、操作選択部６８は、指標算出部６６が算出した指標Ｅに基づき、抽出操作履歴群のうちから、所定の効率性を有する操作履歴群を選択する。本実施形態における所定の効率性の１つは、操作の効率性が最もよいことである。従って、操作選択部６８は、指標Ｅに基づき、互いに対応する機能Ｆを有する操作履歴群のうちから、最も効率性の高い操作履歴群、言い換えれば、ユーザによる操作量が最も少ない操作履歴群を、選択する。具体的には、操作選択部６８は、抽出操作履歴群の指標Ｅを比較して、指標Ｅの値が最も小さい操作履歴群を、選択する。例えば、図１０の例では、操作選択部６８は、操作履歴群Ｔ１、Ｔ３、Ｔ４のうちから、操作履歴群Ｔ３を選択する。ただし、操作選択部６８は、所定の効率性を有する操作を選択するものであれば、操作の効率性が最もよい操作履歴群を選択することに限られない。例えば、操作選択部６８は、効率性が所定の基準よりも高い操作履歴群、すなわち指標Ｅが所定の閾値より小さい操作履歴を選択してもよい。また、操作の効率性が高い順に所定数の操作履歴群を選択してもよく、この所定数は２以上であってもよい。すなわち、操作選択部６８は、指標Ｅが最も高い（指標Ｅが最も小さい）操作履歴を選択することに限られず、それぞれの操作履歴のうちから、相対的に指標Ｅが高い操作履歴を選択してよい。
【００６３】
出力制御部７０は、操作選択部６８が選択した操作（操作履歴群）の情報、すなわち最も効率がよい操作履歴群に関する情報を、ガイド情報として出力する。出力制御部７０は、操作選択部６８が選択した操作履歴群に関する情報を、通信部４２を介して、それぞれの端末装置１０に出力、すなわち送信する。また、出力制御部７０は、表示部４４に操作選択部６８が選択した操作履歴群の情報を出力、すなわち表示させてもよい。出力制御部７０が出力する情報（ガイド情報）とは、操作選択部６８が選択した操作履歴群における操作内容の情報(操作入力情報)であるが、詳しくは後述する。
【００６４】
情報処理装置１２の構成は、以上のようになっている。次に、情報処理装置１２の処理フローを、フローチャートに基づき説明する。図１１は、第１実施形態に係る情報処理装置の処理フローを説明するフローチャートである。図１１は、最も効率のよい操作履歴群を選択するための処理フローである。図１１に示すように、ステップＳ３０において、操作履歴取得部６０は、通信部４２を介して、端末装置１０から操作履歴を取得する。そして、ステップＳ３２において、機能特定部６２は、取得した操作履歴に含まれる単位操作履歴ＯＰをグループ化して、操作履歴群を作成する。機能特定部６２は、操作結果の単位操作履歴ＯＰと、それに対応する操作内容の単位操作履歴ＯＰとを１つのグループにまとめ、１つの操作履歴群を作成する。そして、ステップＳ３４において、機能特定部６２は、機能アドレス情報に基づき、操作履歴群毎に機能Ｆを特定し、操作履歴群を特定した機能Ｆに関連付けて、操作履歴記憶部５２に記憶させる。機能特定部６２は、機能アドレス情報において、操作結果が記憶されたメモリ空間３６のアドレスに関連付けられた機能Ｆを、その操作履歴群により実行された機能Ｆであると特定する。
【００６５】
そして、ステップＳ３６において、操作抽出部６４は、ステップＳ３４で特定された機能Ｆをもとに、操作履歴記憶部５２に記憶された操作履歴群の中から、同一又は類似する目的とみなせる操作履歴群の組み合せを特定し、抽出する。具体的には、操作抽出部６４は、上述の条件（１）〜（４）のいずれかを用いて、この処理を行う。説明を簡潔にするため、ここでは条件（１）を用いるものとする。この場合、例えば、機能Ｆ１に対応する４つの操作履歴群が抽出され、機能Ｆ２に対応する３つの操作履歴群が抽出され、機能Ｆ３に対応する５つの操作履歴群が抽出される、といったように、機能Ｆ（つまり同一の目的）ごとに、操作履歴群が抽出される。また、操作履歴群が１つしか存在しない機能Ｆについては、後続の処理で使われないため、そのような機能Ｆに対応する操作履歴群は抽出されない。つまり、ある１つの機能Ｆに対応する操作履歴群が複数存在する場合に、それらの操作履歴群が抽出される。１つの機能Ｆに対応する、抽出された複数の操作履歴群は、「操作履歴群グループ」とも称される。例えば、機能Ｆ１に対応する４つの操作履歴群が抽出された場合、その４つの操作履歴群をまとめて「機能Ｆ１に対応する操作履歴群グループ」あるいは短縮して「操作履歴群グループ１」と称する。
【００６６】
次にステップＳ３８において、指標算出部６６は、操作抽出部６４が抽出した操作履歴群の指標Ｅを算出し、操作履歴記憶部５２に記憶させる。ここでは、操作履歴群グループ順に、各操作履歴群の指標Ｅを算出する。例えば、ステップＳ３６において、機能Ｆ１に対応する操作履歴群グループ１として、４つの操作履歴群が抽出され、機能Ｆ２に対応する操作履歴群グループ２として、３つの操作履歴群が抽出された場合、まず操作履歴群グループ１の４つの操作履歴群について、各々指標Ｅを算出し、次に操作履歴群グループ２の３つの操作履歴群について、各々指標Ｅを算出する。そして、機能Ｆに対応付けて、操作履歴群と指標Ｅとを操作履歴記憶部５２に記憶させる。次に、ステップＳ４０において、操作選択部６８は、最も効率のよい操作履歴群を選択して、その操作履歴群に関する情報（ガイド情報）を作成し、出力制御部７０はガイド情報を端末装置１０に出力する。
【００６７】
次に、図１１のステップＳ４０の処理の処理フローを、より詳細に説明する。図１２は、図１１のステップＳ４０の処理フローの詳細を示すフローチャートである。図１２に示すように、まずステップＳ５０において、制御部４０は、通信部４２を介して端末装置１０からのガイド情報リクエスト（ガイド情報要求メッセージ）を受け付ける。端末装置１０は、任意のタイミングでガイド情報リクエストを情報処理装置１２に送信できる。このガイド情報リクエストには、操作主体ＩＤ（端末装置１０を使用するユーザのユーザＩＤまたは端末装置１０の端末ＩＤ）と、ガイド情報を指定するための情報（ガイド指定情報）として機能Ｆとが含まれている。なお、ガイド情報リクエストに含まれる操作主体ＩＤは、ガイド情報を出力する先の端末装置１０、あるいはその端末装置１０を使用するユーザを示している。ガイド情報を出力する先の端末装置１０を「ターゲット端末」と称し、ターゲット端末を使用するユーザを「ターゲットユーザ」と称する。次にステップＳ５２において、操作選択部６８は、操作履歴記憶部５２から、ガイド指定情報に一致する機能Ｆに対応する指標Ｅを読み出し、読み出した指標Ｅを対象にして、最小値を算出する。すなわち、最小値とは、ガイド指定情報に一致する機能Ｆに対する複数の指標Ｅのうちの、最も値が小さい指標Ｅを指す。最小値を算出するには種々のアルゴリズムを用いることができるが、例えば、操作履歴記憶部５２から読み出した指標Ｅを昇順にソートし、その先頭（１番目）の値を取得すればよい。
【００６８】
次にステップＳ５４において、操作選択部６８は、ガイド指定情報に一致する機能Ｆに対応する操作履歴群の中から、指標ＥがステップＳ５２で算出された最小値に一致する操作履歴群を選択する。言い換えれば、操作選択部６８は、指標ＥがステップＳ５２で算出された最小値となった操作履歴群を、選択する。つまり、操作選択部６８は、端末装置１０から指定された機能Ｆに関して、最も効率のよい（効率の高い）操作方法（操作履歴群）を選択する。最小値に一致する操作履歴群が複数存在する場合は、それらを全て選択してもよいし、その中の１つを選択してもよい。複数の操作履歴群から１つを選択する場合、例えば、操作時刻が最も新しい操作履歴群を選択すればよい。あるいは、以下のような方法を用いてもよい。過去に操作選択部６８が選択した操作履歴群に対応する操作主体ＩＤを記憶部４６に記憶させておき、それらを集計して、操作主体ＩＤごとに選択回数を算出する。そして、過去の選択回数が多い操作主体ＩＤの操作履歴を優先的に選択する。例えば、指標Ｅが最小値となる操作履歴群として、ユーザＡ、ユーザＢ、ユーザＣによる３つの操作履歴群が存在することを想定する。各ユーザの操作履歴群が過去に選択された回数が、ユーザＡ：「７」、ユーザＢ：「１０」、ユーザＣ：「３」である場合、３つの操作履歴群から１つを選択して出力する際に、過去の選択回数が最も多いユーザＢの操作履歴群を選択する。これは、操作スキルが属人的なスキルであり、過去に優れた操作を行ったユーザの操作は、今回の操作においても優れている可能性が高いという知見に基づく処理である。
【００６９】
次にステップＳ５６において、操作選択部６８は、ステップＳ５０で受け付けたガイド情報リクエストに含まれる操作主体ＩＤと、ステップＳ５４で選択された操作履歴群の操作主体ＩＤとを比較し、両者が一致するか否かを判定する。両者が一致する場合（ステップＳ５６；Ｙｅｓ）、ステップＳ５８に進み、両者が一致しない場合（ステップＳ５６；Ｎｏ）、ステップＳ６０に進む。ステップＳ５８において、操作選択部６８は、操作効率がよいユーザ向けのガイド情報を作成する。すなわち、ガイド指定情報で指定された機能Ｆに関しては、ガイド情報を要求したユーザの操作方法が最もよいと判定されているので、ガイド情報リクエストに対応させて、効率がよいユーザ向けのガイド情報を作成する。このガイド情報は、「称賛ガイド情報」とも称される。称賛ガイド情報の詳細は後述する。ステップＳ５８からはステップＳ６２に進む。
【００７０】
ステップＳ６０において、操作選択部６８は、操作効率が悪いユーザ向けのガイド情報を作成する。ここで、「効率が悪いユーザ」とは、本人よりも効率がよい（効率が高い）他のユーザが存在するユーザである。すなわち、ガイド指定情報で指定された機能Ｆに関しては、ガイド情報を要求したユーザの操作方法よりも効率のよい他のユーザが存在するため、ガイド情報リクエストに対応させて、効率が悪いユーザ向けのガイド情報を作成する。効率が悪いユーザ向けのガイド情報には、効率が最もよい操作方法（操作履歴群）に関する情報が含まれている。このガイド情報は、「啓蒙ガイド情報」とも称される。啓蒙ガイド情報の詳細については後述する。ステップＳ６０からはステップＳ６２に進む。
【００７１】
ステップＳ６２において、操作選択部６８は、出力制御部７０を介して、ステップＳ５８またはステップＳ６０で作成されたガイド情報を、端末装置１０に出力する。つまり、操作選択部６８は、出力制御部７０にガイド情報を出力させる。以上がステップＳ４０の詳細処理の説明である。ステップＳ５８とステップＳ６０で作成されるガイド情報は共に、操作効率のよい操作方法（操作履歴群）に基づく情報であり、指標Ｅに基づく情報であるともいえる。また、本実施形態では、効率がよいユーザ向けのガイド情報と、効率が悪いユーザ向けのガイド情報を分けて作成するが、必ずしも分ける必要はない。例えば、１つの機能Ｆに対して１つのガイド情報を作成し、全ての端末装置１０に同じガイド情報を出力してもよい。なお、ステップＳ５４において、ガイド指定情報に一致する機能Ｆに対応する操作履歴群であり、かつガイド情報リクエストに含まれる操作主体ＩＤとは異なる操作主体ＩＤをもつ操作履歴群を対象に選択処理を行ってもよい。つまり、ガイド情報リクエストを要求するユーザとは異なるユーザの操作履歴群を対象にして、指標Ｅが最小である操作履歴群を選択してもよい。このような処理をすると、「称賛ガイド情報」は出力されず、「啓蒙ガイド情報」のみが出力される。場合によっては、ガイド情報リクエストを要求するユーザの操作よりも、操作効率の低い操作手順がガイド情報として出力される可能性もあるが、他のユーザの操作手順を知ることは、操作効率のよいユーザにとっても有益であるため、このようなガイド情報も有益である。
【００７２】
このように、出力制御部７０は、操作選択部６８で選択された操作履歴に係るユーザ（ステップＳ５４で選択された操作履歴群の操作主体ＩＤ）と、ガイド情報を出力する先の端末装置１０を使用するユーザ（ガイド情報リクエストに含まれる操作主体ＩＤ）とが一致するか否かに応じて、異なる種類のガイド情報を出力する。なお、ステップＳ５６の判定処理を次のように変形してもよい。ステップＳ５６の代わりに、ステップＳ５６Ａとして、操作選択部６８は、ステップＳ５０で受け付けたガイド情報リクエストに含まれる操作主体ＩＤおよび機能Ｆに対応する操作履歴の指標Ｅが、ステップＳ５２で算出された指標Ｅの最小値と一致するか否かを判定する。いずれにしても、ターゲットユーザの指標Ｅが、機能Ｆに対応する指標Ｅの中で最も小さいか否かに応じて、異なる種類のガイド情報を出力する、といえる。
【００７３】
図１０の例では、指標Ｅが最小の操作履歴群として、操作履歴群Ｔ３（ユーザＣの操作履歴群）が選択されるため、出力制御部７０は、操作履歴群Ｔ３に関するガイド情報を端末装置１０に送信する。なお、操作履歴群Ｔ３は、ユーザＣによる操作である。ターゲットユーザがユーザＡまたはユーザＢである場合、ターゲットユーザが使用する端末装置１０（ターゲット端末）に対して、操作履歴群Ｔ３に関する啓蒙ガイド情報が送信される。ターゲットユーザがユーザＣである場合、ターゲット端末に対して、操作履歴群Ｔ３に関する称賛ガイド情報が送信される。なお、操作履歴群Ｔ３に関する啓蒙ガイド情報をユーザＣが使用する端末装置１０を含む全ての端末装置１０に送信してもよい。また、全ての端末装置１０に対してガイド情報を送信するのではなく、一部の端末装置１０に対してのみガイド情報を送信してもよい。例えば、所定の条件よりも効率が悪い、すなわち所定の閾値よりも指標Ｅが大きいユーザの端末装置１０に対してのみ啓蒙ガイド情報を送信するようにしてもよい。
【００７４】
なお、上述のステップＳ５２およびステップＳ５４において、ガイド指定情報と同じ機能Ｆに対応する指標Ｅの最小値を算出し、その最小値に対応する操作履歴群を選択しているが、これに限らず、以下のような変形処理を行ってもよい。まずステップＳ５２に代わるステップＳ５２Ａにおいて、ターゲットユーザの機能Ｆに関する指標Ｅをもとに、指標Ｅに関する探索条件を設定する。探索条件として、探索目標値または探索範囲のいずれかを用いる。探索目標値は、ターゲットユーザの機能Ｆに関する指標Ｅよりも小さい値になるように設定する。例えば、ターゲットユーザの指標Ｅから所定値（例えば「８」）を引いた値を用いてもよいし、ターゲットユーザの指標Ｅに所定値（例えば「０．８」）を乗じた値を用いてもよい。探索範囲は、指標Ｅの範囲を示す数値であり、上限値と下限値の２つで構成される。具体的には、ターゲットユーザの指標Ｅよりも値が小さい方向の所定の範囲を探索範囲とする。例えば、ターゲットユーザの指標Ｅが「３０．０」である場合、「指標Ｅが２０以上３０未満」の範囲を探索範囲とする。この範囲は、ターゲットユーザの指標Ｅから所定値（例えば「１０」）を引いた値を用いてもよいし、ターゲットユーザの指標Ｅに所定値（例えば「０．７」）を乗じた値を用いてもよい。また、ターゲットユーザの指標Ｅから第１の所定値（例えば「５」）を引いた値（「２５」）と、ターゲットユーザの指標Ｅから第１の所定値よりも大きい第２の所定値（例えば「１０」）を引いた値（「２０」を用いて、「指標Ｅが２０以上２５未満」の範囲を探索範囲としてもよい。
【００７５】
次にステップＳ５４に代わるステップＳ５４Ａにおいて、ステップＳ５２Ａで設定された探索条件をもとに、操作履歴群を選択する。探索条件として探索目標値を用いる場合は、探索目標値に最も近い値の指標Ｅをもつ操作履歴群を選択する。例えば、探索目標値と操作履歴群の指標Ｅとの差分が最も小さい操作履歴群を選択する。例えば、探索目標値が「２０」であり、操作履歴群Ｔ５の指標Ｅが「１８」、操作履歴群Ｔ６の指標Ｅが「２３」、操作履歴群Ｔ７の指標Ｅが「２７」である場合を想定する。この場合、探索目標値と各指標Ｅとの差分値は、Ｔ５が「−２」、Ｔ６が「＋３」、Ｔ７が「＋７」になるので、この中から探索目標値との差（差分値の絶対値）が最も小さい操作履歴群Ｔ５を選択する。あるいは、探索目標値に最も近く、かつ探索目標値よりも値が大きい指標Ｅをもつ操作履歴群を選択してもよい。その場合は、操作履歴群Ｔ６が選択される。また、探索目標値と各指標Ｅとの差分値に限らず、各指標Ｅを探索目標値で割った値を算出し、その値が最も「１」に近い操作履歴群を、探索目標値に最も近い指標Ｅをもつ操作履歴群としてもよい。最も近い値をもつ操作履歴群が複数存在する場合は、その中の１つをランダムに選択してもよいし、全てを選択してもよい。探索条件として探索範囲を用いる場合は、探索範囲に合致する指標Ｅをもつ操作履歴群を選択する。探索範囲に合致する指標Ｅが複数存在する場合は、その中の１つをランダムに選択してもよいし、全てを選択してもよい。また、探索範囲の下限値に最も近い値をもつ操作履歴群を選択してもよい。ステップＳ５４ＡからはステップＳ５６に進む。ターゲットユーザの指標Ｅが、機能Ｆに対応する指標Ｅの最小値である場合には、探索目標値に最も近い値の操作履歴群は、ターゲットユーザのものになるので、その場合はＹｅｓと判定される。
【００７６】
このような処理を行うことにより、ターゲットユーザの指標Ｅよりもやや効率の高い指標Ｅをもつ操作履歴群を選択することができる。つまり、ターゲットユーザの操作よりも効率がよく、かつターゲットユーザの操作の効率とあまり大きな差がない操作を選択することができる。例えば、機能Ｆの指標Ｅの最小値が「１０」であり、２番目に小さい値が「１５」であり、３番目に小さい値が「２０」であり、４番目に小さい値が「２５」であり、探索範囲が「２０以上２５未満」である場合、最小値「１０」に対応する操作は選択されず、３番目に小さい値「２０」に対応する操作が選択され、それに基づくガイド情報が作成される。これは、ターゲットユーザに対して、最も効率がよい操作に関する情報を提供するよりも、ターゲットユーザの操作の効率にある程度近いレベルの操作に関する情報を提供した方が、ターゲットユーザにとって、分かり易く、有益である（価値が高い）場合があるという知見に基づく処理である。例えば、効率が最もよい操作は、操作に習熟した上級レベルのユーザが行った操作である可能性が高く、ターゲットユーザが操作に習熟していない初心者である場合、上級ユーザが行った操作に関する情報は、難し過ぎて参考にならない（価値が低い）可能性がある。一方、このような変形処理を行うことにより、ターゲットユーザの操作の効率と大きく違う操作を除外して、ユーザが受容し易い適切な情報を提供できる。つまり、ユーザの操作技能レベルに合った適切な操作補助情報を提供することができる。
【００７７】
（ガイド情報の表示）
以上のように、情報処理装置１２は、端末装置１０が送信したガイド情報リクエストへの応答として、端末装置１０に最も効率のよい操作履歴群に基づくガイド情報を送信する。端末装置１０は、ガイド情報を受信したら、その情報を表示部２６に表示する。以下、情報の表示方法について説明する。図１３は、第１実施形態に係る端末装置の情報の表示フローを説明するフローチャートである。端末装置１０の制御部２０は、ユーザによる端末装置１０の操作を監視している。ステップＳ７０において、制御部２０は、ガイド情報を表示するトリガとなる、ユーザの所定の操作を検出する。所定の操作として、あらかじめ種々の操作を定義しておくことができるが、ここでは、プログラムのウィンドウを表示する操作が検出対象として定義されているものとする。次にステップＳ７２において、制御部２０は、通信部２２を介して、情報処理装置１２にガイド情報リクエストを送信する。制御部２０は、端末装置１０を使用するユーザＩＤもしくは端末装置１０の端末ＩＤである操作主体ＩＤと、表示したウィンドウに対応する機能Ｆとをガイド情報リクエストを作成して、情報処理装置１２に送信する。なお、記憶部２９には、ウィンドウと機能Ｆとの対応関係を示すデータ（不図示）が記録されている。なお、１つのウィンドウに複数の機能Ｆが対応する場合は、それら複数の機能Ｆをガイド情報リクエストに含めてもよい。次にステップＳ７４において、制御部２０は、通信部２２を介して、情報処理装置１２からガイド情報を受信する。次にステップＳ７６において、制御部２０は、ステップＳ７４で受信したガイド情報を、表示部２６に表示させる。つまり、表示部２６がガイド情報を表示する。上述したように、情報処理装置１２は、ガイド情報リクエストに対する応答として２種類のうちの１つのガイド情報を送信するため、ステップＳ７６においては、２種類のガイド情報のいずれかが表示される。以上が、ガイド情報表示処理の処理フローの説明である。
【００７８】
上述の説明では、ウィンドウを表示することをトリガとして、ガイド情報を表示しているが、これに限らず他の方法を用いてもよい。例えば、制御部２０は、プログラムが起動したことトリガとして、ガイド情報を表示させてもよい。この場合、ステップＳ７２において制御部２０は、プログラムが備える全ての機能Ｆをガイド情報リクエストに入れて情報処理装置１２に送信する。また、ステップＳ７４において制御部２０は、プログラムが備える全ての機能Ｆに関するガイド情報を受信する。そして、ステップＳ７６において表示部２６は、全ての機能Ｆに関する情報を表示する。また、ユーザが端末装置１０にログインしたことをガイド情報表示のトリガとしてもよい。この場合は、ガイド情報リクエストに、ユーザが使用可能なプログラム（アプリケーションプログラム等）を識別するプログラム識別子と、各プログラムの機能Ｆとの組み合せを入れて送信する。また、プログラムが起動してから所定の時間が経過したことをトリガとしてもよい。また、メモリ領域Ｍに変化があることをトリガとしてもよい。この場合は、機能Ｆの代わりに、値が変化したメモリ領域Ｍのアドレスをガイド情報リクエストに入れて送信してもよい。情報処理装置１２は、機能アドレス情報テーブルを参照して、ガイド情報リクエストに含まれるアドレスを機能Ｆに変換し、ガイド情報処理を行う。また、ガイド情報リクエストに、メモリ領域Ｍのアドレスと、そのアドレスの値を入れてもよい。またさらに、ガイド情報リクエストに、メモリ領域Ｍの変更前の値を入れてもよい。メモリ領域Ｍの変更後の値やメモリ領域Ｍの変更前の値をガイド情報リクエストに入れることにより、情報処理装置１２は、ユーザが行った操作と同じ目的の操作履歴をより高い精度で特定できるため、より精度の高いガイド情報を提供できる。すなわち、ユーザの意図した目的により近い操作方法を厳選して提供できる。
【００７９】
次に、ガイド情報の表示方法について説明する。図１４及び図１５は、ステップＳ６０で作成された啓蒙ガイド情報を表示している画面の例を示す図である。端末装置１０は、啓蒙ガイド情報として、最も効率がよい操作履歴に含まれる操作内容を表示する。図１４に示すように、制御部２０は、機能Ｆに対応するウィンドウＷが表示されたら、例えばポップアップウィンドウとして、啓蒙ガイド情報を示すウィンドウＤ１を表示部２６に表示させる。ウィンドウＤ１は、啓蒙ガイド情報として、最も効率がよい操作履歴群の操作内容を表示している。図１４の例では、ウィンドウＤ１は、「機能Ｆ２は、ウィンドウＷ３から左シングルクリックでも設定可能です。」という文章（メッセージ）を表示している。例えば、ターゲットユーザが図９におけるユーザＡである場合、ウィンドウＤ１には、ユーザＡが過去に行った操作内容よりも効率の良い、ユーザＣの操作内容が表示される。なお、上記のメッセージにおいて、「Ｗ３」という記号で示したウィンドウは、過去に効率の悪い操作をした機能Ｆに対応する「ウィンドウＷ」と同じであってもよいし、異なっていてもよい。
【００８０】
また、端末装置１０は、図１５のように啓蒙ガイド情報を表示してもよい。すなわち、図１５に示すように、制御部２０は、機能Ｆに対応するウィンドウＷに対応させて、ターゲットユーザが行った操作よりも効率のよい操作があることを示すウィンドウＤ２Ａを表示部２６に表示させる。ウィンドウＤ２Ａは、「機能Ｆ２を設定するもっと効率のよい操作方法があります」という文章と、「ここをクリック」という表示Ｄ２Ａ１とを表示する。すなわち、ウィンドウＤ２Ａは、より効率のよい操作があることを通知する情報と、効率のよい操作内容を表示させるためのクリック箇所（リンク）とを表示する。ユーザが表示Ｄ２Ａ１をクリックすると、ウィンドウＤ２Ｂが表示される。ウィンドウＤ２Ｂは、最も効率のよい操作履歴群に関する情報であり、最も効率のよい操作履歴群における操作内容を示す情報である。例えば、ターゲットユーザが図９および図１０におけるユーザＡである場合、ウィンドウＤ２Ｂには、ユーザＡが過去に行った効率の悪い操作内容（操作手順）と、最も効率のよいユーザＣの操作内容（操作手順）とが表示される。なお、図９の例において、ユーザＣはスクロール操作を行っているが、スクロール操作は状況によって必要性が変わるため、図１５に示すように、ガイド情報の操作手順では省略してもよい。あるいは、スクロール操作などを省略せずにガイド情報に表示してもよい。このように効率の悪い操作内容と、効率のよい操作内容とを対比して表示するため、ユーザにとって非常に分かり易い表示ができる。また、いきなり詳細情報を表示せずに、ユーザが希望した時のみ詳細情報を表示するため、不必要な表示スペースをとることがなく、過剰な情報を表示しないため、ユーザは、本来行うべき操作に集中し易くなる。なお、端末装置１０を使用するユーザが、過去にウィンドウＷに対応する機能Ｆを使用していない場合は、ウィンドウＤ２Ｂにおける「あなたの操作」欄の表示は省略する。
【００８１】
図１６及び図１７は、ステップＳ５８で作成された称賛ガイド情報を表示している画面の例を示す図である。ターゲットユーザの過去の操作が最も効率の良いものである場合、端末装置１０は、称賛ガイド情報を表示する。図１６に示すように、制御部２０は、機能Ｆに対応するウィンドウＷが表示されたら、例えばポップアップウィンドウとして、称賛ガイド情報を示すウィンドウＤ３を表示部２６に表示させる。ウィンドウＤ３は、称賛ガイド情報として、この端末装置１０を使用しているユーザが過去に実行した操作の効率が最も高かったこと示す情報を表示している。ここでは「前回あなたが機能Ｆ２を設定したウィンドウＷ３からシングルクリックは、最も効率がよい操作方法でした。」という文章（メッセージ）を表示している。
【００８２】
また、端末装置１０は、機能Ｆに関する操作のうち、ターゲットユーザの操作が最も効率の良いものであった場合、図１７のように称賛ガイド情報を表示してもよい。すなわち、図１７に示すように、制御部２０は、機能Ｆに対応するウィンドウＷに対応させて、称賛ガイド情報を示すウィンドウＤ４Ａ、Ｄ４Ｂ、Ｄ４Ｃを、順次切り替えながら表示部２６に表示させる。ウィンドウＤ４Ａは、「ユーザが過去に使用した機能（機能Ｆ２）対応する操作内容が、効率性の比較対象となった３５人のユーザの中で最も効率が良かった」ことを示している。このように、効率性の比較対象となったユーザの数を表示することにより、閲覧中のユーザに対して「さらに工夫して効率のよい操作を行ってみよう」等のモチベーションを与えることができる。また、ウィンドウＤ４Ａは、ユーザにクリックさせるための表示Ｄ４Ａ１も表示している。ユーザが表示Ｄ４Ａ１をクリックすると、ウィンドウＤ４Ｂが表示される。
【００８３】
ウィンドウＤ４Ｂは、機能Ｆに関して効率のよい操作を行ったユーザに関する情報を表示している。図１７の例では、ウィンドウＤ４Ｂに、効率のよい操作を行った上位５人のユーザの情報が表示されている。「順位」の欄には、操作効率が高い順に付与された順位が表示される。本図の例では、順位「１」のユーザの操作効率が最も高い。「名前」の欄には、あらかじめユーザごとに登録した名前（ニックネームまたは実名）が表示される。「操作効率」の欄には、操作効率の高さを示す指標Ｅの値が表示される。上述したように、指標Ｅの値が小さいほど操作効率が高いことを示している。ユーザ名や指標Ｅなどの画面に表示される情報は、端末装置１０が情報処理装置１２から受信するガイド情報に含まれている。なお、１人のユーザが複数の操作内容で操作を行った場合、図１７に示すように、同一のユーザ（ユーザＢ）を操作履歴群毎に複数回表示してもよい。また、ウィンドウＤ４Ｂは、情報処理装置１２の操作抽出部６４で抽出されたすべての操作履歴群についてユーザ情報を表示してもよいし、図１７に示すように上位の所定数（３５人中の５人）に限定して表示してもよい。また、「本日の上位１０人」といったように、特定の期間において集計した結果を表示してもよい。さらにウィンドウＤ４Ｂは、操作履歴群の情報毎に、ユーザにクリックさせるための表示Ｄ４Ｂ１も表示している。ユーザが表示Ｄ４Ｂ１をクリックすると、クリックした表示Ｄ４Ｂ１に対応する操作履歴群の操作内容を示すウィンドウＤ４Ｃが表示される。ウィンドウＤ４Ｃには、ウィンドウＤ４Ｂで表示された各ユーザの操作の詳細情報として、操作履歴群の操作内容（操作手順）が表示される。図１７のような表示を行うことにより、閲覧したユーザは、単に効率のよい操作内容を知ることができるだけでなく、効率のよい操作を行ったユーザについても知ることができる。例えば、ユーザごとに自分の連絡先を開示するか否かの設定をさせておき、制御部２０は、連絡先の開示を許可したユーザについては、図１７のウィンドウＤ４Ｂにおいて、連絡先を表示してもよい。すなわち、操作効率の良いユーザのリストにおいて、メールアドレス、ＳＮＳ（Social  Networking  Service）のアカウント情報、電話番号などの連絡先情報を表示してもよい。また、端末装置１０と情報処理装置１２を連携させて、ユーザ間で情報交換（メッセージ交換）できる機能を提供してもよい。このような表示を閲覧したユーザは、効率のよいユーザに直接連絡を取ることができ、ユーザ同士で情報交換を行うことができるので、さらに効率の良い操作手順などを他のユーザから直接教えてもらうことができる。また、アプリケーションを使用するユーザコミュニティーが活性化されるので、そのアプリケーションが好きな「ファン」が増え、アプリケーションの長期的な収益につながることも期待される。
【００８４】
制御部２０は、以上のようにして、ガイド情報、すなわち効率のよい操作履歴群に基づく情報を表示する。なお、情報処理装置１２は、所定の期間における複数回の操作に関する操作効率を集計して、操作効率ランキングを作成してもよい。例えば、過去１ヶ月間の操作履歴を収集し、その期間にある機能（例えば、機能Ｆ２）に関する操作を１０回行ったユーザに対しては、１０個の指標Ｅを算出し、それらの代表値（平均値、中央値、最頻値など）を算出する。そして、各ユーザの指標Ｅの代表値に従って、操作効率ランキングを作成する。さらに、情報処理装置１２は、指標Ｅのばらつき度合いを用いて、操作効率ランキングを作成してもよい。例えば、過去１ヶ月間の操作履歴を収集し、その期間にある機能（例えば、機能Ｆ２）に関する操作を１０回行ったユーザに対しては、１０個の指標Ｅを算出し、それらの代表値と、それらのばらつき度合いを示す値（分散、標準偏差など）を算出する。そして、代表値が小さく、かつ、ばらつき度合いを示す値が小さいユーザほど、安定的に効率的な操作を行うユーザであると言えるので、そのようなユーザほど上位の順位になるように、操作効率ランキングを作成する。例えば、指標Ｅの代表値がほぼ同じユーザが２人（ユーザＸ、ユーザＹ）いる場合、ユーザＸのばらつき度合いを示す値が「３」で、ユーザＹのばらつき度合いを示す値が「１０」であるとすると、ユーザＸの方が安定して同じような効率の操作を行っていると言えるので、ユーザＸの順位をより上位にする。また、情報処理装置１２は、操作効率の改善率をもとに、操作効率ランキングを作成してもよい。例えば、情報処理装置１２は、ある機能（例えば、機能Ｄ２）に関する操作効率が１ヶ月間でどの程度改善されたかを示す操作効率の改善率をユーザごとに算出する。この場合、例えば、最新の操作効率を過去の時点（例えば、１か月前）の操作効率で割った値を、操作効率の改善率とする。情報処理装置１２は、このように作成した操作効率ランキング（ランキング情報）を端末装置１０に送信する。端末装置１０は、受信したランキング情報を表示部２６に表示する。例えば、制御部２０は、情報処理装置１２から、各ユーザの操作効率の改善率を示すランキング情報を通信部２２を介して受信し、改善率の大きい順にユーザを並べて、操作効率ランキングとして表示部２６に表示させてもよい。なお、情報処理装置１２ではなく、端末装置１０でランキング情報を作成してもよい。
【００８５】
また、制御部２０は、効率の良い又は悪い操作は、どのメニューのどのボタンがクリックされた場合であるかの情報や、どのコントロールが選択された場合であるかの情報など、ＧＵＩ（Graphical  User  Interface）に従った情報を表示部２６に表示させてもよい。この場合、例えば、制御部２０は、操作があった時のスクリーン座標（例えばマウスのポインタの位置など）の情報を、操作履歴記憶部３８へ記録する一方、アプリケーションのフォームやボタンなど各コントロールについて、名称とスクリーン座標との対応情報を別テーブルとして用意し、このテーブルを使用して座標の情報から操作のあったコントロールの名称を取得する。
【００８６】
また、制御部２０は、効率の良い操作をする為の設定を勧める旨の情報を表示してもよい。例えば、ある機能Ｆを実行する操作の中で、キーボードショートカットを用いた操作の効率が最も良い場合、制御部２０は、キーボードショートカットの設定方法を表示部２６に表示させてもよい。このような表示をすることで、キーボードショートカットを設定していない効率の悪いユーザに対して、キーボードショートカットの設定方法を勧めることができる。効率の良い操作方法に関する情報を提供する対象のユーザは、全ユーザでも良いし、指標Ｅが所定値以上であるなど、効率が所定条件よりも悪いユーザだけにしてもよい。指標Ｅの所定値は、過去の平均を対象としてもよいし、一番最近の値を対象としてもよい。
【００８７】
以上説明したように、本実施形態に係る情報処理装置１２は、操作履歴取得部６０と、機能特定部６２と、操作抽出部６４と、指標算出部６６と、操作選択部６８と、出力制御部７０とを有する。操作履歴取得部６０は、端末装置１０においてユーザの操作によって作成された操作履歴を取得する。機能特定部６２は、取得された操作履歴に基づき、ユーザの操作により実行された機能Ｆを、操作対象機能として特定する。操作抽出部６４は、機能特定部６２が特定した操作対象機能の情報に基づき、取得された操作履歴の中から所定の操作履歴を抽出する。指標算出部６６は、操作抽出部６４が抽出した操作履歴について、操作の効率性の高さを示す指標Ｅを算出する。操作選択部６８は、指標Ｅに基づき、所定の効率性を有する操作履歴を選択する。出力制御部７０は、操作選択部６８に選択された操作履歴に基づくガイド情報を出力する。
【００８８】
端末装置１０は、ユーザの操作によって、処理を実行するが、処理を実行するまでのユーザの操作内容は、ユーザによって異なる。従って、端末装置１０を用いた作業の効率を改善するためには、ユーザの操作内容（操作手順）の改善が必要となる場合がある。本実施形態に係る情報処理装置１２は、ユーザの操作履歴を取得し、操作履歴に基づき特定したユーザの操作により実行された機能Ｆに基づき、所定の操作履歴を抽出する。そして、情報処理装置１２は、抽出した操作履歴の効率性の指標Ｅに基づき、所定の効率性を有する操作履歴を選択し、その操作履歴のガイド情報を出力する。ユーザは、所定の効率性を有する操作の情報を確認することで、それを参考に処理内容を改善することが可能となる。従って、この情報処理装置１２によると、ユーザ操作の効率性向上を補助（サポート）することができる。
【００８９】
また、操作履歴取得部６０が取得する操作履歴は、ユーザの操作による操作結果が記憶されたメモリ空間３６のアドレス情報を含む。機能特定部６２は、メモリ空間３６のアドレスと機能との対応関係を示す機能アドレス情報を参照し、取得された操作履歴に含まれるメモリ空間のアドレス情報に対応する機能Ｆを、操作対象機能であると特定する。この情報処理装置１２は、メモリ空間３６の情報に基づいて操作対象機能を特定するため、操作の目的を精度よく判定することができる。従って、ユーザが行った操作と目的が同じ又は類似する操作を比較対象とし、全く異なる目的の操作を比較対象とせずに、操作の効率性を比較できる。このため、ユーザが行った操作と全く異なる目的の操作に関する情報（ユーザにとって価値の低い情報）を除外して、ユーザの操作効率性の向上に役立つ情報を提供することができる。
【００９０】
また、操作抽出部６４は、操作対象機能が同一である複数の操作履歴を抽出する。指標算出部６６は、抽出された複数の操作履歴それぞれについて、指標Ｅを算出する。操作選択部６８は、指標Ｅが算出された操作履歴の中から、相対的に指標Ｅが高い操作履歴を選択する。この情報処理装置１２によると、操作対象機能（機能Ｆ）が一致する操作履歴の指標Ｅ同士を比較して、操作履歴を選択する。従って、ユーザが行った操作と同じ目的の操作の中から、効率性が高い操作を精度よく選択することができる。このため、ユーザの操作効率性の向上に役立つ情報を精度よく提供することができる。
【００９１】
また、操作選択部６８は、出力制御部７０がガイド情報を出力する先の端末装置１０を使用するユーザの操作履歴に係る指標Ｅに基づいて、所定の効率性を規定するための指標Ｅに関する条件（探索条件）を設定し、設定した条件に合致する操作履歴を選択する。この情報処理装置１２によると、ガイド情報の対象となるユーザの指標Ｅに基づいて操作履歴を選択するため、ユーザの操作技能レベルに応じて適切な操作補助情報を提供することができる。
【００９２】
操作履歴取得部６０は、複数のユーザに関する操作履歴を取得する。出力制御部７０は、操作選択部６８で選択された操作履歴に係るユーザと、ガイド情報を出力する先の端末装置１０を使用するユーザとが一致するか否かに応じて、異なる種類のガイド情報を出力する。この情報処理装置１２によると、ユーザの操作効率性に応じて異なる種類のガイド情報を提供できるので、それぞれにユーザにとって適切な情報を提供することができる。
【００９３】
また、操作履歴は、端末装置１０においてユーザが入力した操作内容を示す操作入力情報を含む。指標算出部６６は、操作抽出部６４が抽出した操作履歴の操作入力情報に基づき、指標Ｅを算出する。出力制御部７０は、選択された操作履歴に含まれる操作入力情報をガイド情報として出力する。この情報処理装置１２は、操作入力情報に基づき指標Ｅを算出するため、操作の効率性を高い精度で評価することが可能となり、ユーザの操作の効率性向上に役立つ情報を精度よく提供することができる。
【００９４】
また、操作抽出部６４は、複数種類の操作内容を含んだ操作（操作履歴群）を抽出する。指標算出部６６は、複数種類の操作内容に基づき、指標Ｅを算出する。この情報処理装置１２は、複数の操作内容に基づき指標Ｅを算出するため、操作の効率性を高い精度で評価することが可能となり、ユーザの操作の効率性向上に役立つ情報を精度よく提供することができる。
【００９５】
また、指標算出部６６は、複数種類の操作内容毎に異なる重み付けを行って、指標Ｅを算出する。この情報処理装置１２は、複数の操作内容の重み付けを変えることで、操作の効率性を高い精度で評価することが可能となり、ユーザの操作の効率性向上に役立つ情報を精度よく提供することができる。
【００９６】
また、指標算出部６６は、操作内容として、ユーザの操作時間と、ユーザによる端末装置の操作部２４への入力回数と、端末装置１０のポインタの移動量との少なくとも１つに基づき、指標Ｅを算出する。この情報処理装置１２は、このような操作内容に基づき指標Ｅを算出するため、操作の効率性を高い精度で評価することが可能となり、ユーザの操作の効率性向上に役立つ情報を精度よく提供することができる。
【００９７】
また、操作選択部６８は、指標Ｅに基づき、ユーザの操作の効率性が最も高い操作を選択する。この情報処理装置１２は、効率性が最も高い操作を出力するため、ユーザが効率性の高い操作を確認することが可能となり、ユーザの機器操作の効率性向上を好適に補助可能となる。
【００９８】
また、本実施形態に係る情報処理システム１は、情報処理装置１２と、情報処理装置１２に操作履歴を送信する端末装置１０と、を有する。この情報処理システム１は、ユーザの機器操作の効率性向上を好適に補助することができる。
【００９９】
（第２実施形態）
次に、第２実施形態について説明する。第１実施形態においては、情報処理装置１２は、操作結果がメモリ空間３６に記憶されるまでに要したユーザによる操作の操作量を指標とすることで、ユーザの操作量が少ない操作を、効率のよい操作として扱っていた。しかし、効率のよい操作は、ユーザの操作量が少ない操作に限られない。例えば第２実施形態に示すように、効率のよい操作は、操作結果がメモリ空間３６に記憶されるまでに要した端末装置１０の消費電力量が小さい操作であってもよい。すなわち、第２実施形態に係る情報処理装置１２は、ユーザの操作量の代わりに、機器の消費電力量を用いて効率性の評価を行っている点で、第１実施形態とは異なる。第２実施形態において、第１実施形態と構成が共通する箇所は、説明を省略する。
【０１００】
図１８は、第２実施形態に係る電力換算テーブルの一例を示す図である。第２実施形態に係る情報処理装置１２は、記憶部４６に、消費電力量と操作種別との関係を示す電力換算情報を記憶している。すなわち、情報処理装置１２は、電力換算情報として、図１８に例示されるような電力換算テーブルを記憶している。図１８に示すように、電力換算テーブルは、単位操作量あたりの消費電力量を、操作種別毎に記憶している。図１８の例では、例えば、単位時間あたりの消費電力量「Ｐ１」とキーボード３０への１回の打鍵あたりの消費電力量「Ｐ２」と、ポインタ移動の単位距離あたりの消費電力量「Ｐ３」と、マウス３２の１回のクリックあたりの消費電力量「Ｐ４」と、マウス３２のホイールの単位回転角度あたりの消費電力量「Ｐ５」とが、電力換算情報として記憶されている。この電力換算情報は、例えば、予め試験などで測定された値を使用してよい。なお、単位時間当たりの消費電力量は、端末装置１０の消費電力量であるが、端末装置１０とモニター（表示部２６）が分かれている場合は、モニターの消費電力量を含んでいてもよい。また、表示部２６やモニター（表示装置）の設定条件（例えば、画面の輝度の設定）ごとに、消費電力量を記憶してもよい。また、単位時間当たりの消費電力量は、スピーカ、カメラ等の周辺機器の消費電力量を含んでいてもよい。また、単位時間当たりの消費電力量は、キーボード３０、マウス３２等の操作部の消費電力量を含んでいてもよい。また、情報処理装置１２は、端末装置１０の機種および周辺機器の機種ごとに、このような電力換算情報を格納してもよい。また、情報処理装置１２は、単位時間当たりの消費電力量を、操作効率を判定する対象とするプログラムを単独で動作させた時の平均消費電力量としてもよい。この場合、他のプログラムや他のプロセスに起因する消費電力を除外して、対象プログラムのみに起因する消費電力を精度よく算出することができる。
【０１０１】
第２実施形態に係る指標算出部６６は、操作抽出部６４が抽出した操作履歴群について、電力換算情報に基づき、消費電力量を指標Ｅとして算出する。指標算出部６６は、抽出操作履歴群に含まれる全ての単位操作履歴ＯＰを対象にして、電力換算情報に記録された操作種別毎に操作集約値を算出する。例えば、１つの操作履歴群に含まれるキーボード３０の打鍵数の合計値を算出する。次に、指標算出部６６は、操作集約値と操作種別毎の電力消費量とを用いて演算処理を行い、操作種別毎の消費電力量を算出する。そして、指標算出部６６は、操作種別毎の消費電力量を合計して、指標Ｅを算出する。例えば、指標算出部６６は、次の式（３）により、操作履歴群ごとに指標Ｅを算出する。
【０１０２】
Ｅ＝ε・ｘ＋λ・ｙ＋η・ｚ＋θ・ｕ＋μ・ｖ  ・・・（３）
【０１０３】
ここで、ｘがユーザの操作時間で、ｙがキーボード３０の打鍵数で、ｚがポインタの移動距離で、ｕがマウス３２のクリック数で、ｖがマウス３２のホイールの延べ回転角度であり、これらは操作履歴群ごとに算出された値である（操作集約値）。また、ε、λ、η、θ、μは、電力換算情報における操作種別毎の単位操作量あたりの消費電力量であり、０より大きい係数である。図１８に示す例の場合、εは「Ｐ１」、λは「Ｐ２」、ηは「Ｐ３」、θは「Ｐ４」、μは「Ｐ５」となる。さらに、指標算出部６６は、モニター（表示部２６）の輝度ｄや同時に表示したウィンドウの数ｗを考慮して、指標Ｅ、すなわち操作履歴群あたりの消費電力量を算出してもよい。すなわち、指標算出部６６は、例えば次の式（４）により、指標Ｅを算出してもよい。
【０１０４】
Ｅ＝ｈ（ｄ，ｗ）・ｘ＋λ・ｙ＋η・ｚ＋θ・ｕ＋μ・ｖ  ・・・（４）
【０１０５】
ここで、ｈは、ｄとｗとを変数とする関数であり、輝度ｄが大きくなるほど、また、ウィンドウ数ｗが大きくなるほど、値が大きくなる関数である。
【０１０６】
第２実施形態に係る情報処理装置１２は、このように算出した指標Ｅを用いて、操作の効率性を判断する。すなわち、情報処理装置１２は、指標Ｅが小さい操作ほど、消費電力の観点からの効率性がよいと判断する。なお、電力換算情報は、端末装置１０が有していてもよい。この場合、端末装置１０が単位操作履歴ＯＰごとに消費電力量を算出して、算出した消費電力量を操作履歴に含めて情報処理装置１２に送信する。指標算出部６６は、端末装置１０が算出した消費電力量を用いて、指標Ｅを算出する。例えば、１つの操作履歴群に含まれる単位操作履歴ＯＰごとの消費電力量の合計値を算出し、指標Ｅとする。あるいは、端末装置１０が指標Ｅを算出し、その指標Ｅを情報処理装置１２に送信してもよい。
【０１０７】
以上説明したように、第２実施形態に係る情報処理装置１２は、操作結果がメモリ空間３６に記憶されるまでに要した端末装置１０の消費電力量を指標Ｅとする。従って、この情報処理装置１２は、消費電力の観点から、ユーザの機器操作の効率性向上を好適に補助することができる。第１実施形態と第２実施形態とで説明したように、情報処理装置１２は、操作結果がメモリ空間３６に記憶されるまでに要したユーザによる操作の操作量と、操作結果がメモリ空間３６に記憶されるまでに要した端末装置１０の消費電力量との、少なくともいずれかを、指標Ｅとして取得してよい。また、第１実施形態と第２実施形態とを組み合わせてもよい。すなわち、第１実施形態で算出した操作量の観点からの指標Ｅと、第２実施形態で算出した消費電力の観点からの指標Ｅとの両方を用いて、操作効率の総合的な判断を行ってもよい。例えば、ユーザの操作量を示す指標Ｅ１と、操作に係る消費電力量を示す指標Ｅ２との重み付け加算値を総合的な指標Ｅとして算出し、第１実施形態で述べた処理と同様な処理を行って、ガイド情報を提供してもよい。
【０１０８】
（第３実施形態）
次に、第３実施形態について説明する。第３実施形態は、機器の消費電力量を直接測定する点で、第２実施形態とは異なる。第３実施形態において、第２実施形態と構成が共通する箇所は、説明を省略する。
【０１０９】
図１９は、第３実施形態に係る端末装置のブロック図である。図１９に示すように、第３実施形態に係る端末装置１０Ａは、制御部２０Ａが、バッテリ２５Ａの残存電力量を検出する点で、第２実施形態とは異なる。制御部２０Ａは、バッテリ２５Ａの残存電力量を検出する。
【０１１０】
図２０は、第３実施形態に係る端末装置の処理フローを示すフローチャートである。図２０に示すように、制御部２０Ａは、ユーザからの操作部２４への所定の操作（プログラムを立ち上げるための操作）を検出した場合に、プログラムを開始する（ステップＳ８０）。プログラムを開始したら、制御部２０Ａは、メモリ空間３６とバッテリ２５Ａとの監視を開始する（ステップＳ８２）。具体的には、制御部２０Ａは、メモリ空間３６内の特定のアドレスが割り当てられたメモリ領域Ｍの値が変化したかを監視すると共に、バッテリ２５Ａの残存電力量を監視する。そして、制御部２０Ａは、プログラムの実行によって、表示部２６にウィンドウが表示されたかを判断する（ステップＳ８４）。ステップＳ８４からステップＳ９２までは、図５に示す第１実施形態のステップＳ１４からステップＳ２２と同じなので、説明を省略する。
【０１１１】
ステップＳ９２においてメモリ空間３６が変化した場合（ステップＳ９２；Ｙｅｓ）、制御部２０Ａは、メモリ空間３６の変化パターン、すなわち操作結果の情報と、タイマ部２８から読み出したメモリ空間３６が変化した際の時刻と、消費電力量とを、操作履歴記憶部３８に記憶する（ステップＳ９４）。制御部２０Ａは、ユーザによる操作が行われる前のバッテリ２５Ａの残存電力量とユーザによる操作が行われた後のバッテリ２５Ａの残存電力量とを検出し、操作が行われる前のバッテリ２５Ａの残存電力量から、操作が行われた後のバッテリ２５Ａの残存電力量を差し引くことで、消費電力量を算出する。ユーザによる操作が行われる前のバッテリ２５Ａの残存電力量は、例えば、ウィンドウが表示される直前の残存電力量であり、ユーザによる操作が行われた後のバッテリ２５Ａの残存電力量は、メモリ空間３６が変化した際のバッテリ２５Ａの残存電力量である。すなわち、制御部２０Ａは、操作履歴群ごとの消費電力量を算出する。そして、操作履歴記憶部３８に含まれる操作履歴テーブルの操作結果フィールドに、メモリ領域のアドレスおよびそのアドレスの値と合わせて、操作履歴群の消費電力量を記録する。
【０１１２】
その後、制御部２０Ａは、操作履歴と操作主体ＩＤとを関連付けて、情報処理装置１２に送信する（ステップＳ９６）。そして、制御部２０Ａは、プログラムを終了するかを判断し（ステップＳ９８）、終了しない場合（ステップＳ９８；Ｎｏ）、ステップＳ８４に戻り処理を続け、終了する場合（ステップＳ９８；Ｙｅｓ）、メモリ空間３６及びバッテリ２５Ａの監視を終了して（ステップＳ９９）、本処理を終了する。
【０１１３】
第３実施形態に係る情報処理装置１２は、このように消費電力量の情報を含む操作履歴を取得する。第３実施形態に係る操作抽出部６４、第１実施形態及び第２実施形態と同様に操作履歴群を抽出する。そして、第３実施形態に係る指標算出部６６は、操作履歴から、操作履歴群毎の消費電力量を読み出して、読み出した消費電力量を、指標Ｅとして取得する。この場合、指標算出部６６は、指標Ｅを算出せずに、端末装置１０Ａから取得するので、指標取得部であるともいえる。第３実施形態においても第１実施形態と同様に、情報処理装置１２は、指標Ｅの値が小さい操作ほど、効率的な操作であると判定する。つまり、消費電力量の少ない操作ほど、効率的な操作であると判定される。なお、端末装置１０Ａは、操作履歴群ごとの消費電力量を算出せず、単位操作履歴ＯＰごとに残存電力量を記憶してもよい。この場合、情報処理装置１２は、単位操作履歴ＯＰごとの残存電力量を取得し、ウィンドウが表示された単位操作履歴ＯＰにおける残存電力量から、メモリ空間３６が変化した単位操作履歴ＯＰにおける残存電力量を差し引いて、１つの操作履歴群の消費電力量を算出して、指標Ｅとしてもよい。
【０１１４】
なお、短時間の操作による消費電力はごくわずかなので、第３実施形態に係る情報処理装置１２は、同じ機能Ｆでの消費電力量を複数回記録しておき、回数あたりの平均の消費電力量を求めて、その平均電力量を指標Ｅとして取得してもよい。なお、バッテリ２５Ａの残量の差分から消費電力量を検出した場合、古いバッテリの方が減りが早い為、消費電力が大きいという判定になるおそれがある。従って、バッテリ２５Ａ又は端末装置１０機器）の製造年などに基づき、指標Ｅに補正をかけてもよい。すなわち、製造年が古い場合の操作履歴群ほど、指標Ｅが小さくなるように補正をかけてもよい。また、同じ端末装置１０で同時に複数のプログラムを使用していると、どのプログラムのどの機能がどのくらい電力消費しているのかを検出することが困難となるおそれもある。従って、同じような環境のユーザ、すなわち、同じ又は近い数のプログラムを使用している端末装置１０同士を比較してもよい。また、表示部２６やモニター（表示装置）の設定条件（例えば、画面の輝度の設定）に応じて、計測された消費電力を補正してもよい。例えば、同一の操作に対して、画面の輝度を高く（明るく）設定している端末装置１０Ａの方が、輝度を低く（暗く）設定している端末装置１０Ａよりも、消費電力量が多くなる。このため、画面の輝度を高く設定しているほど、計測された消費電力量の値をより小さな値に補正してもよい。つまり、同一の操作に対して、表示部２６やモニター（表示装置）の設定条件によらずに、一律の消費電力量が得られるように補正処理を行ってもよい。あるいは、画面の輝度を高く設定しているのは、その必要のある操作（例えば、ポインタを細かく移動させる操作等）を行うためであるという観点に立てば、計測された消費電力量の補正を行わずに使用してもよい。
【０１１５】
第３実施形態では、端末装置１０で実測した消費電力を用いるため、第２実施形態のような電力換算情報を予め準備する必要がない。一方、第２実施形態では、他のプログラムの影響やその他の外乱要因の影響を低減して、対象のプログラムに関する消費電力を精度よく算出することが可能となる。
【０１１６】
また、消費電力以外にも、例えばデータ通信量を監視して、データ通信量を、ユーザの操作効率としてもよい。例えば、情報処理装置１２は、操作に係る通信データ量を指標Ｅとして算出し、通信データ量が少ないほど、効率のよい操作と判定してもよい。また、端末装置１０への負担を考慮して、端末装置１０にとっての効率を考慮してもよい。この場合、端末装置１０への負担の度合い、例えば端末装置１０の発熱量、端末装置１０の温度上昇、端末装置１０に含まれるモーターの回転数などに基づいて、指標Ｅを算出してもよい。この場合、端末装置１０への負担の度合いが小さいほど、効率のよい操作と判定する。また、端末装置１０の耐久性を考慮して操作効率を判定してもよい。例えば、マウス３２のクリック数が１０００万回まで保証されており、キーボード３０の打鍵数が３０００万回まで保証されている場合、マウス３２のクリック１回がマウス３２の寿命に与える影響よりも、キーボード３０の打鍵１回がキーボード３０の寿命に与える影響の方が少ない。このため、マウスクリック１回とキーボード打鍵１回で、どちらも同じ機能Ｆを実行できる場合は、端末装置１０の寿命に及ぼす影響の少ないキーボード３０を使った方が効率のよい操作と判定できる。従って、情報処理装置１２は、例えば、キーボード３０の打鍵数よりもマウス３２のクリック数の重み付けを大きくして、指標Ｅを算出する。情報処理装置１２は、このような評価尺度を用いることにより、端末装置１０の寿命がなるべく長くなるような操作方法に関する情報をユーザに提供することができる。
【０１１７】
また、情報処理装置１２は、端末装置１０の耐久性の他に、端末装置１０の価格（維持費用）を考慮して、操作効率を判定してもよい。例えば、マウス３２のクリック数が１０００万回まで保証されており、キーボード３０の打鍵数が３０００万回まで保証されており、マウス３２の価格が２千円、キーボード３０の価格が１万円である場合を想定する。この場合、マウス３２のクリック１回により消耗される金銭価値（２千円／１０００万回）と、キーボード３０の打鍵１回により消耗される金銭価値（１万円／３０００万回）を比較すると、マウス３２の金銭価値の低下の方が少ないため、マウス３２を使った操作の方が効率のよい操作と判定できる。従って、情報処理装置１２は、例えば、キーボード３０の操作よりもマウス３２の操作の重み付けを大きくして、指標Ｅを算出する。情報処理装置１２は、このような評価基準を用いることにより、維持費用（ランニングコスト）がより少ない操作方法に関する情報をユーザに提供することができる。
【０１１８】
以上、本発明の実施形態を説明したが、これら実施形態の内容により実施形態が限定されるものではない。また、前述した構成要素には、当業者が容易に想定できるもの、実質的に同一のもの、いわゆる均等の範囲のものが含まれる。さらに、前述した構成要素は適宜組み合わせることが可能である。さらに、前述した実施形態の要旨を逸脱しない範囲で構成要素の種々の省略、置換又は変更を行うことができる。
【符号の説明】
【０１１９】
１  情報処理システム
１０  端末装置
１２  情報処理装置
１４  ネットワーク
２０、４０  制御部
２２、４２  通信部
２４  操作部
２６、４４  表示部
２８  タイマ部
２９、４６  記憶部
３０  キーボード
３２  マウス
３４、５０  プログラム記憶部
３６  メモリ空間
３８、５２  操作履歴記憶部
５４  機能アドレス情報記憶部
６０  操作履歴取得部
６２  機能特定部
６４  操作抽出部
６６  指標算出部
６８  操作選択部
７０  出力制御部
Ｅ  指標
Ｆ  機能
Ｍ  メモリ領域
ＯＰ  単位操作履歴
【図１】
2020071673.tif 000003
【図２】
2020071673.tif 000004
【図３】
2020071673.tif 000005
【図４】
2020071673.tif 000006
【図５】
2020071673.tif 000007
【図６】
2020071673.tif 000008
【図７】
2020071673.tif 000009
【図８】
2020071673.tif 000010
【図９】
2020071673.tif 000011
【図１０】
2020071673.tif 000012
【図１１】
2020071673.tif 000013
【図１２】
2020071673.tif 000014
【図１３】
2020071673.tif 000015
【図１４】
2020071673.tif 000016
【図１５】
2020071673.tif 000017
【図１６】
2020071673.tif 000018
【図１７】
2020071673.tif 000019
【図１８】
2020071673.tif 000020
【図１９】
2020071673.tif 000021
【図２０】
2020071673.tif 000022