(57)【特許請求の範囲】
【請求項１】
ユーザがユーザコンピュータを使用中に発生したエラーを収集するシステムであって、
ユーザによる操作手順を含む操作環境のログ情報を前記ユーザコンピュータから収集する収集部と、
前記収集したログ情報を蓄積する蓄積部と、
エラーが有った操作手順に対応するログ情報を受信したことに応じて、当該エラーが有った操作手順に対して操作手順が類似しかつエラーが無かった操作手順に対応するログ情報を前記蓄積部から検索する検索部と、
前記検索されたログ情報に含まれる複数の操作手順に基づいて、前記エラーが有った操作手順に類似する操作手順の統計情報を算出する操作手順解析部と、
前記検索されたログ情報に含まれる操作手順及び前記算出された統計情報をユーザに提供する情報提供部と、
を備えるシステム。
【請求項２】
前記検索部は、エラーが生じた操作と一致する操作を少なくとも含む操作手順に対応するログ情報を、前記蓄積部から検索する
請求項１に記載のシステム。
【請求項３】
前記検索部は、前記エラーが生じた操作と一致する操作を少なくとも含み、前記エラーが有った操作手順に対して操作手順が類似し、かつエラーが無かった操作手順に対応するログ情報を、前記蓄積部から検索する
請求項２に記載のシステム。
【請求項４】
前記情報提供部は、前記エラーが有った操作手順で操作されることが前記ユーザコンピュータで検出された場合に、検出された操作手順に類似しかつエラーが無かった操作手順がユーザに提供されるべく、当該エラーが無かった操作手順を前記ユーザコンピュータに提供する
請求項１から３のいずれか一項に記載のシステム。
【請求項５】
前記蓄積部は、前記エラーが有った第１操作手順に対応するログ情報を受信したことに応じて前記情報提供部が提供した第２操作手順が、エラーが無かった操作手順として収集された場合に、前記第１操作手順に対応づけて第２操作手順を更に蓄積し、
前記情報提供部は更に、前記第１操作手順により生じるエラーを回避する操作手順として、前記第２操作手順をユーザに提供する
請求項１から４のいずれか一項に記載のシステム。
【請求項６】
特定のエラーが有った操作を含む複数の操作手順を、前記蓄積部から抽出するエラー操作手順抽出部
をさらに備え、
前記抽出された複数の操作手順に基づいて、当該操作を含むエラーの有った操作手順およびエラーの無かった操作手順の統計情報を算出するエラー操作手順解析部
を更に備え、
前記情報提供部は更に、前記エラー操作手順解析部が算出した統計情報をユーザに提供する
請求項１から５のいずれか一項に記載のシステム。
【請求項７】
エラーが有った操作手順の後に行われ対応するエラーが無かった操作手順を、前記蓄積部から検索する操作手順検索部
を更に備え、
前記情報提供部は更に、前記エラーが有った操作手順と、前記操作手順検索部が検索した操作手順とを、ユーザに提供する
請求項１から６のいずれか一項に記載のシステム。
【請求項８】
ユーザによる操作によって生じる、前記操作手順を示す複数のイベントを検出する検出部
をさらに備え、
前記収集部は、前記検出部が検出した複数のイベントを含む操作環境のログ情報を収集する
請求項１から７のいずれか一項に記載のシステム。
【請求項９】
ユーザがユーザコンピュータを使用中に発生したエラーを収集するシステムであって、
ユーザによる操作手順を含む操作環境のログ情報を前記ユーザコンピュータから収集する収集部と、
前記収集したログ情報を蓄積する蓄積部と、
エラーが有った操作手順に対応するログ情報を受信したことに応じて、当該エラーが有った操作手順に対して操作手順が類似しかつエラーが無かった操作手順に対応するログ情報を前記蓄積部から検索する検索部と、
特定のエラーが有った操作を含む複数の操作手順を、前記蓄積部から抽出するエラー操作手順抽出部と、
前記抽出された複数の操作手順に基づいて、当該操作を含むエラーの有った操作手順およびエラーの無かった操作手順の統計情報を算出するエラー操作手順解析部と、
前記検索されたログ情報に含まれる操作手順及び前記算出された統計情報をユーザに提供する情報提供部と、
を備えるシステム。
【請求項１０】
ユーザがユーザコンピュータを使用中に発生したエラーを収集するシステム用のプログラムであって、コンピュータを、
請求項１から９のいずれか一項に記載のシステムとして機能させるプログラム。
【請求項１１】
ユーザがコンピュータを使用中に発生したエラーを収集する方法であって、
ユーザによる操作手順を含む操作環境のログ情報を前記コンピュータから収集するステップと、
前記収集したログ情報を蓄積部に蓄積するステップと、
エラーが有った操作手順に対応するログ情報を受信したことに応じて、当該エラーが有った操作手順に対して操作手順が類似しかつエラーが無かった操作手順に対応するログ情報を前記蓄積部から検索するステップと、
前記検索されたログ情報に含まれる複数の操作手順に基づいて、前記エラーが有った操作手順に類似する操作手順の統計情報を算出するステップと、
前記検索されたログ情報に含まれる操作手順及び前記算出された統計情報をユーザに提供するステップと、
を備える方法。
【請求項１２】
ユーザがコンピュータを使用中に発生したエラーを収集する方法であって、
ユーザによる操作手順を含む操作環境のログ情報を前記コンピュータから収集するステップと、
前記収集したログ情報を蓄積部に蓄積するステップと、
エラーが有った操作手順に対応するログ情報を受信したことに応じて、当該エラーが有った操作手順に対して操作手順が類似しかつエラーが無かった操作手順に対応するログ情報を前記蓄積部から検索するステップと、
特定のエラーが有った操作を含む複数の操作手順を、前記蓄積部から抽出するステップと、
前記抽出された複数の操作手順に基づいて、当該操作を含むエラーの有った操作手順およびエラーの無かった操作手順の統計情報を算出するステップと、
前記検索されたログ情報に含まれる操作手順及び前記算出された統計情報をユーザに提供するステップと、
を備える方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システム、プログラムおよび方法に関する。
【背景技術】
【０００２】
電子計算機システムに対するユーザの操作の履歴を示す操作履歴情報、障害の発生状況を示す障害発生状況情報、及び、アプリケーションの動作環境を示す環境情報を収集して、アプリケーションの動作が保証された動作環境を示す標準環境情報に基づいて、障害を解析する技術が知られている（たとえば、特許文献１参照。）。
［先行技術文献］
［特許文献］
［特許文献１］特開平８−５０５５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００３】
コンピュータを操作しているときにソフトウェアのエラーが生じた場合、どのようなユーザ操作または動作環境であればエラーを回避できるかが、ユーザには容易には分からない、という課題があった。
【課題を解決するための手段】
【０００４】
上記課題を解決するために、本発明の一態様においては、ユーザがユーザコンピュータを使用中に発生したエラーを収集するシステムであって、ユーザによる操作手順を含む操作環境のログ情報をユーザコンピュータから収集する収集部と、収集したログ情報を蓄積する蓄積部と、エラーが有った操作手順に対応するログ情報を受信したことに応じて、当該エラーが有った操作手順に対して操作手順が類似しかつエラーが無かった操作手順に対応するログ情報を蓄積部から検索する検索部と、検索されたログ情報に含まれる複数の操作手順に基づいて、エラーが有った操作手順に類似する操作手順の統計情報を算出する操作手順解析部と、検索されたログ情報に含まれる操作手順及び算出された統計情報をユーザに提供する情報提供部とを備える。
また、本発明の一態様においては、ユーザがユーザコンピュータを使用中に発生したエラーを収集するシステムであって、ユーザによる操作手順を含む操作環境のログ情報をユーザコンピュータから収集する収集部と、収集したログ情報を蓄積する蓄積部と、エラーが有った操作手順に対応するログ情報を受信したことに応じて、当該エラーが有った操作手順に対して操作手順が類似しかつエラーが無かった操作手順に対応するログ情報を蓄積部から検索する検索部と、特定のエラーが有った操作を含む複数の操作手順を、蓄積部から抽出するエラー操作手順抽出部と、抽出された複数の操作手順に基づいて、当該操作を含むエラーの有った操作手順およびエラーの無かった操作手順の統計情報を算出するエラー操作手順解析部と、検索されたログ情報に含まれる操作手順及び算出された統計情報をユーザに提供する情報提供部とを備える。
【０００５】
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではない。また、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【図面の簡単な説明】
【０００６】
【図１】本実施形態に係るシステムの全体構成を示す図である。
【図２】ログ情報および回避策の一例を示す図である。
【図３】エラー情報および回避策の一例を示す図である。
【図４】ユーザ端末１１０の動作フローの一例を示す図である。
【図５】エラーが生じた場合の処理フローの一例を示す図である。
【図６】サーバ１００における処理フローの一例を示す図である。
【図７】イベント列の間の類似度を説明する図である。
【図８】サーバ１００における動作フローの一例を示す図である。
【図９】コンピュータ１９００のハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【０００７】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【０００８】
図１は、本実施形態に係るシステムの全体構成を示す。本システムは、サーバ１００、複数のユーザ端末１１０ａ〜ｃ、開発用コンピュータ１２０を備える。本実施形態の説明において、複数のユーザ端末１１０ａ〜ｃを、複数のユーザ端末１１０または単にユーザ端末１１０と総称する場合がある。ユーザ端末１１０ａ〜ｃは、それぞれ利用者１９０ａ〜ｃによって操作され使用される。本実施形態の説明において、複数の利用者１９０ａ〜ｃを、複数の利用者１９０または単に利用者１９０と総称する場合がある。
【０００９】
本システムは、利用者１９０がユーザ端末１１０を使用中に発生したエラーを収集する。ユーザ端末１１０は、この発明におけるユーザコンピュータの一例である。そして、利用者１９０は、この発明における、ユーザコンピュータを使用するユーザの一例である。開発者１８０は、開発用コンピュータ１２０を用いて、ユーザ端末１１０ａ〜ｃで動作するソフトウェアの開発または保守をする。利用者１９０および開発者１８０は、本システムの利用者である。具体的には、利用者１９０および開発者１８０は、この発明において、後述する操作手順等の提供を受けるユーザの一例である。
【００１０】
各ユーザ端末１１０は、それぞれの利用者１９０からの操作を受け付けて動作する。ユーザ端末１１０は、ユーザ端末１１０に対する操作を検出し操作ログとして送信する機能とエラーの回避策を処理する機能とが組み込まれたソフトウェアを実行する。ユーザ端末１１０で当該ソフトウェアが動作している場合、ユーザ端末１１０は、利用者１９０による一連の操作と動作環境とを含む操作ログを継続的に取得して、ネットワーク１５０を通じてサーバ１００に送信する。ユーザ端末１１０でエラーが生じた場合には、ユーザ端末１１０は、エラーが生じたときの操作とエラーが生じた旨を示す情報とを含む操作ログを、ネットワーク１５０を通じてサーバ１００に送信する。ここでいうエラーとは、例えばユーザ端末１１０の内部にエラー要因があるエラーであり、メール受信時の受信エラーのように外部に実質的なエラー要因があるものは含まない。
【００１１】
サーバ１００は、複数のユーザ端末１１０から、操作ログを取得する。サーバ１００は、操作ログを記録する記憶装置１０４と、記憶装置１０４に記録されている操作ログを解析する解析装置１０２とを有する。記憶装置１０４は、複数のユーザ端末１１０からエラーが生じていない場合の操作ログを収集して記録することができる。このため、ユーザ端末１１０でエラーが生じていない場合のユーザ操作を記録することができる。エラーが生じた旨の情報を含む操作ログをユーザ端末１１０から取得した場合、解析装置１０２は、記憶装置１０４に記録された操作ログを検索して、エラーを回避できる操作を抽出する。具体的には、解析装置１０２は、エラーが生じていない場合の操作ログの中から、エラーを回避できる操作を抽出する。そして、サーバ１００は、抽出した操作を、回避策としてユーザ端末１１０に送信する。
【００１２】
回避策は、エラーが生じなかった動作環境を示す回避環境を含む。回避環境としては、エラーが生じなかったオペレーティングシステム（ＯＳ）の種別を示すＯＳ情報１３１を例示することができる。また、回避環境としては、エラーが生じなかったソフトウェアの動作設定を示す設定情報１３２を例示することができる。また、回避策としては、エラーが生じなかった操作を示す回避操作を含む。回避操作の情報としては、ユーザインターフェース上の操作内容を示す操作情報１３３を例示することができる。ユーザ端末１１０は、回避策に含まれる情報を、例えば表示装置に表示することにより、それぞれの利用者１９０に提示する。
【００１３】
サーバ１００は、操作ログを定期的に集計して、エラー情報および回避策を、開発者１８０の開発用コンピュータ１２０に送信する。開発用コンピュータ１２０は、受信したエラー情報および回避策を、開発者１８０に提示する。エラー情報としては、エラーが生じた動作環境、エラーが生じた操作等を例示することができる。エラー情報については後述する。
【００１４】
本実施形態に係るシステムによれば、エラーが発生しなかった操作環境を複数のユーザ端末１１０から収集して記憶装置１０４に記録することができる。そして、あるユーザ端末１１０でエラーが発生した場合に、エラーが発生しなかった操作環境を記憶装置１０４から検索して、エラーが発生したユーザ端末１１０の利用者１９０に提示することができる。このため、利用者１９０は、どのような操作または環境であれれば、エラーを回避できるかが分かる。したがって、ソフトウェアのバージョンアップ等によってエラー要因が解消されるのを待たずに、ソフトウェアを利用して作業を進めるこができる場合がある。また、本システムによれば、開発者１８０は、エラーが発生した操作または環境だけでなく、どのような操作または環境であればエラーが生じていないかが分かる。このため、開発者１８０は、エラーが発生した要因を速やかに特定することができる場合がある。
【００１５】
図２は、ログ情報および回避策の一例を示す。ログ情報２００は、ＯＳ情報、設定情報、および、操作内容を含む。ＯＳ情報の一例として示した"ＯＳ−Ａ"は、ＯＳの種別を示す情報である。ＯＳの種別には、ＯＳのバージョン情報が含まれてよい。
【００１６】
設定情報の一例として示した"ＭＡＩＬ＿ＸＸＸ＿ＳＥＴＴＩＮＧ＝３"は、ソフトウェアの動作設定パラメータを特定する。動作設定パラメータは、"ＭＡＩＬ＿ＸＸＸ＿ＳＥＴＴＩＮＧ"等の設定項目と、"３"の設定値とを含む。動作設定パラメータは、ソフトウェアが起動時に設定ファイルから読み込まれてソフトウェアの動作に反映される。設定情報としては、ＯＳの設定情報を含むことができる。ＯＳの設定情報は、例えばＯＳの起動時に設定ファイルから読み込まれてＯＳの動作に反映される。ＯＳの設定情報としては、ＯＳに設定された環境変数を含んでよい。ログ情報２００には、"ＮｏｔｅＭａｉｌ．ｉｎｉ"等の、設定ファイルを特定する情報が、設定情報として含まれてよい。
【００１７】
ログ情報２００は、操作ログとして、利用者１９０による一連の操作手順を含む。例えば、"メール新規作成ボタンをクリック"のような、操作内容を特定する情報を含む。操作ログの取得については後述する。エラーが生じていない場合には、ユーザ端末１１０は、ログ情報を定期的に送信する。エラーが生じた場合、エラーを示す情報がログ情報２００に付加される。エラーが生じたタイミングを示す情報が含まれてよい。例えば、エラーが生じた直前の操作に、エラーを示す情報が付加されてよい。本図に例示したように、ログ情報２００は、ＯＳ情報および設定情報を含む動作環境、ならびに、操作手順を示す操作ログを含む。ログ情報の送信処理の具体例については後述する。
【００１８】
サーバ１００において、解析装置１０２は、ユーザによる操作手順を含む操作環境のログ情報をユーザ端末１１０から収集する収集部として機能する。記憶装置１０４は、収集されたログ情報を蓄積する蓄積部として機能する。また、解析装置１０２は、エラーが有った操作手順に対応するログ情報を受信したことに応じて、当該エラーが有った操作手順に対して操作手順が類似しかつエラーが無かった操作手順に対応するログ情報を記憶装置１０４から検索する検索部としても機能する。
【００１９】
解析装置１０２は、エラーが有った操作手順に対応するログ情報２００を受信したことに応じて、記憶装置１０４が格納している、エラーが無かった操作手順に対応する複数のログ情報を検索する。本検索処理の具体例については後述する。解析装置１０２は、ユーザ端末１１０に送信する回避策２２０のデータを生成する。具体的には、解析装置１０２は、利用者１９０に提示すべき回避策２３０のデータと、ユーザ端末１１０に実行させる回避策２４０のデータとを生成する。
【００２０】
解析装置１０２は、検索した複数のログ情報とログ情報２００とを比較して、差異点を抽出して、その統計情報を生成する。例えば、検索されたログ情報２１０は、ログ情報２００とは異なるＯＳ情報２１１、動作設定パラメータ２１２、操作２１３を有する。解析装置１０２は、検索された複数の操作ログを集計して、これらの差異点毎に統計情報を算出することにより、ユーザに提示する回避策２３０のデータを生成する。回避策２３０は、図１に例示したＯＳ情報１３１、設定情報１３２および操作情報１３３を含む。
【００２１】
回避策２４０は、例えば、操作手順情報２４１と、実行処理情報２４３とを含む。操作手順情報２４１は、エラーが生じる条件を示す操作手順の情報である。本例では、"本文へフォーカスを移動"、"テキストを編集"、"送信ボタンをクリック"の順で操作があった場合に、エラーが生じることを表す。
【００２２】
実行処理情報２４３は、ユーザ端末１１０で実行すべき処理内容を表す。すなわち、回避策２４０は、ユーザ端末１１０が、操作手順情報２４１で示される条件を満たす操作手順がなされた場合に、実行処理情報２４３で示される処理を実行する旨をユーザ端末１１０に指示する。実行処理情報２４３としては、特定の処理に替えて実行する処理であってよい。本例では、処理２４２で示される"送信ボタンをクリック"の処理に替えて、"ドラフト保存処理"および"送信ボタンをクリック"の処理を実行すべきことを表す。
【００２３】
解析装置１０２は、回避策２２０のデータを、エラーが生じたユーザ端末１１０に送信する。このように、解析装置１０２は、検索されたログ情報に含まれる操作手順を利用者１９０に提供する情報提供部として機能する。サーバ１００は、どのような回避策をとればエラーを回避できるかを利用者１９０に提案することができる。また、サーバ１００は、エラーを回避することができる処理をユーザ端末１１０に提供することができる。サーバ１００の提供した処理をユーザ端末１１０が自動的に適用することで、利用者１９０はエラーが生じるか否かを気にすることなく、ユーザ端末１１０を操作して作業をすることができる。
【００２４】
図３は、開発用コンピュータ１２０に送信されるエラー情報および回避策の一例を示す。上述したように、サーバ１００は、エラーが生じた操作手順を含むログ情報と、エラーが生じていない操作手順を含むログ情報とを、複数のユーザ端末１１０から収集して記録している。
【００２５】
解析装置１０２は、エラーが生じた複数の操作手順を、記憶装置１０４から検索する。解析装置１０２は、検索した複数のログ情報に基づいて、エラーが生じた操作環境を示す情報を含むエラー関連情報３１０を生成する。具体的には、解析装置１０２は、エラーが生じたときのログ情報と、エラーが生じなかったときのログ情報とを比較して差異点を抽出して、差異点の統計情報を含むエラー関連情報３１０を生成する。エラー関連情報３１０は、エラー情報の一例としてのエラー統計３２０およびエラー操作環境３３０、ならびに、回避策３４０の情報を含む。
【００２６】
エラー操作環境３３０は、ログ情報２００など、エラーが生じたときの複数のログ情報である。また、回避策３４０は、例えば図３で例示したエラー操作環境３３０に対応する回避策である。具体的には、処理３４２は図２の処理２４２に対応し、実行処理情報３４３は図２の実行処理情報２４３に対応する。このため、ここでは、エラー統計３２０を中心に説明する。
【００２７】
例示されるように、エラー統計３２０は、特定のエラー、例えば「送信ボタンを押した時に生じたエラー」について、その発生頻度を示す情報を含む。例えば、"送信ボタンを押した時にエラーが生じたユーザは１０％います。"という情報を含む。このため、開発者１８０は、例えば発生頻度が高いエラーを重要なエラーとみなして、優先的に対処したりすることができる。
【００２８】
エラー統計３２０は、"ＯＳ―Ａを使用：５０％"など、ＯＳの種別毎のエラー発生頻度の情報を含む。また、エラー統計３２０は、"ＭＡＩＬ＿ＸＸＸ＿ＳＥＴＴＩＮＧ＝３：８０％"など、動作設定パラメータ毎のエラー発生頻度の情報を含む。また、エラー統計３２０は、"送信ボタンをクリックする前にドラフト保存ボタンをクリックしていない：３０％"など、操作内容毎のエラー発生頻度の情報を含む。このため、開発者１８０は、どのような操作または環境でエラーが多く発生しているかを容易に把握することができる。
【００２９】
例示したエラー関連情報３１０によれば、開発者１８０は、ユーザがどのような環境において、具体的にどのような操作を行った結果エラーが生じたかを、極めて容易に把握することができる。また、エラーが発生した操作環境と回避策とを比較することで、プログラム上のどの箇所にエラー要因があるかを速やかに発見できる場合がある。このため、例えばエラーが発生したときのメモリ状況、プログラムのコールスタック情報のみから判断する場合と比較して、プログラムを具体的にどう変更すれば回避できるかを、開発者１８０が容易に判断することができる場合がある。
【００３０】
なお、本システムでは、エラー関連情報３１０を開発者１８０に提供するとしたが、利用者１９０に提供してよいことはいうまでもない。例えば、障害情報として、利用者１９０に早期に提供することができる。また、利用者１９０に広く障害情報として提供することで、回避策が早期に発見される場合がある。
【００３１】
図４は、ユーザ端末１１０の動作フローの一例を示す。操作ログを取得する処理は、例えば、利用者１９０の操作によるイベントの発生に応じて呼び出されるソフトウェアモジュールとして提供されて、エラー検出の対象となるソフトウェアに組み込まれてよい。ユーザ端末１１０は、イベントが発生すると、発生したイベントの内容を判断する（ステップＳ４０２）。ステップＳ４０２においてユーザ端末１１０は、発生したイベントが、記憶すべきイベント、記憶しないイベント、および、エラーが生じるイベントのいずれのイベントであるかを判断する。まず、エラーが生じるイベントではない場合の動作フローについて説明する。
【００３２】
生じたイベントが、予め定められた記憶すべきイベントである場合、イベントの内容を操作ログとして記憶する（ステップＳ４０４）。記憶すべきイベントとしては、キーボード、マウス等の入力装置が利用者１９０によって操作されることによって発生するイベントを例示することができる。しかし、例えばタイマーイベントのように、常時発生するようなイベントは、記憶すべきイベントから除外されてよい。また、マウス等のカーソルが単に移動するときに生じるイベントも、記憶すべきイベントから除外されてよい。ただし、カーソルが移動するときに生じるイベントであっても、異なるＵＩ要素にカーソルが入ったときのイベントや、ＵＩ要素からカーソルが外れたときのイベントは、記憶すべきイベントとして定められてよい。また、ソフトウェアが起動したときのイベント、終了したときのイベントも、記憶すべきイベントして定められてよい。
【００３３】
ユーザ端末１１０がイベントの内容を記憶する記憶媒体は、ユーザ端末１１０が備えるＲＡＭ等の揮発性の記憶媒体であってよいし、ユーザ端末１１０が備えるディスク装置等の不揮発性の記憶媒体であってもよい。記憶するイベントの内容としては、イベントが生じたときのＵＩ要素を識別する情報と、クリック等のイベントの種類を識別する情報とを含んでよい。しかし、記憶するイベントの内容は、図２等で例示した"メール新規作成ボタンをクリック"などのように、ユーザ操作を表す情報であってよい。例えば、イベントが生じたときのＵＩ要素である"メール新規作成ボタン"と、イベントの種類"クリック"とから、ユーザ操作を表す情報を特定することができる。
【００３４】
ユーザ端末１１０は、記憶したイベントの総数が、予め定められた基準値以上であるか否かを判断する（ステップＳ４０６）。記憶したイベントの総数が基準値以上である場合（ステップＳ４０６：ＹＥＳ）、記憶しているイベントの内容をログ情報としてサーバ１００に送信する（ステップＳ４０８）。送信が完了すると、記憶している内容をフラッシュしたり、記憶済みのイベント数をカウントするカウンタを初期化するなど、ステップＳ４０６の判断およびステップＳ４０８の送信処理に関連する内部処理を実行してよい。
【００３５】
そして、ユーザ端末１１０は、生じたイベントの処理を実行する（ステップＳ４１０）。本処理は、例えばメールソフトウェアにおいてメールの新規作成ボタンをクリックした場合の処理などのように、ソフトウェア本体が実行する処理である。ステップＳ４１０の実行によってエラーが生じた場合の処理については、後述する。
【００３６】
ステップＳ４１０が完了すると、ユーザ端末１１０は、ソフトウェアを終了するか否かを判断する（ステップＳ４１２）。ソフトウェアを終了する場合（ステップＳ４１２：ＹＥＳ）、サーバ１００に送信していないイベントを記憶しているときは、イベントの内容をログ情報としてサーバ１００に送信する（ステップＳ４１４）。ステップＳ４１４の処理が完了すると、ソフトウェアとしての動作が終了する。ソフトウェアを終了しない場合（ステップＳ４１２：ＮＯ）、ステップＳ４０２に処理を戻す。
【００３７】
一方、ステップＳ４０２において、生じたイベントが予め定められた記憶すべきイベントでない場合、ステップＳ４１０に処理を移行する。また、ステップＳ４０６において、記憶済みのイベント数が基準値未満である場合（ステップＳ４０６：ＮＯ）、ステップＳ４１０に処理を移行する。このとき、記憶済みのイベント数をカウントするカウンタをインクリメントするなどの必要な内部処理を実行してよい。
【００３８】
ここで、ステップＳ４０２において、エラーが生じるイベントであると判断された場合、エラーを回避するための回避処理を実行する（ステップＳ４２２）。エラーが生じるイベントであるか否かは、図２で例示した操作手順情報２４１の操作手順に該当するイベントが生じたか否かによって、判断することができる。
【００３９】
ステップＳ４２２においてユーザ端末１１０は、図２で例示した回避策２４０に関する処理を行う。具体的には、ユーザ端末１１０は、実行処理情報２４３で示される処理を実行する。例えば、ユーザ端末１１０は、実行処理情報２４３で示される処理を実装する関数に、処理を移行させる。ステップＳ４２２における他の処理としては、実行処理情報２４３を示す情報を、利用者１９０に提示する処理を例示することができる。例えば、"送信ボタンをクリックする前に、ドラフト保存処理をして下さい。"、"ドラフト保存処理をすることをお勧めします。"などのメッセージを表示する。本回避策に関する処理によって、ユーザはエラーを生じるような操作をしてしまった場合でも、容易にエラーを回避できる場合がある。ステップＳ４２２の処理が完了すると、ステップＳ４１２に処理を移行させる。
【００４０】
本処理フローで説明したように、ユーザ端末１１０は、操作手順を示す複数のイベントを取得して、サーバ１００に提供することができる。なお、いずれのイベントを記憶すべきかが、設定ファイル等によるユーザ設定で定められてもよい。例えばキーボード操作が送信されるのを望まない利用者１９０は、キーボード操作を記憶しないように設定することができる。このため、プライバシーに配慮しつつ利用者１９０の利便性の高いシステムを提供できる。より多くの操作情報を提供する利用者１９０には、より正確な操作情報に基づく回避策が蓄積される結果、回避策が提供される機会が増える。このため、より高い確率でエラーを回避することが可能になる。
【００４１】
本例では、イベント数が基準値を超えた場合に、サーバ１００にイベント内容を送信するとした。しかし、イベント数が基準値を超えたか否かの判断を、イベント内容を前回に送信してから予め定められた時間長さの期間が経過したか否かの判断に替えてもよい。また、イベント数が基準値を超えた場合、または、前回に送信してから予め定められた時間長さの期間が経過した場合に、サーバ１００にイベント内容を送信してもよい。
【００４２】
図５は、エラーが生じた場合の処理フローの一例を示す。本処理は、エラーが生じた場合に呼び出されて実行されるよう、本処理を提供するソフトウェアモジュールがソフトウェアに組み込まれてよい。
【００４３】
ステップＳ５０２において、ユーザ端末１１０はエラーが発生したイベントをセットする。具体的には、図２のログ情報２００で示したように、エラーを示す情報を操作ログに付加する。そして、サーバ１００に送信していないイベントが存在する場合は、当該イベントの内容とともに、エラーを示す情報を、ログ情報としてサーバ１００に送信する（ステップＳ５０４）。そして、ユーザ端末１１０は、サーバ１００から回避策の候補が送信されるのを待ち、回避策の候補を受信すると利用者１９０に回避策の候補を提示する（ステップＳ５０６）。回避策の候補としては、図２の回避策２３０を例示することができる。
【００４４】
本システムによれば、サーバ１００がエラーが生じた操作手順とエラーが生じなかった操作手順とを蓄積しているので、利用者１９０がユーザ端末１１０を使用中に、回避策の候補を提供することができる。このため、障害報告を受けてから開発者１８０側で回避策を検討する場合と比べて、実際的な回避策を利用者１９０に速やかに提供することができる。
【００４５】
なお、本処理フローは、ソフトウェアの内部変数等の矛盾など、内部エラーが発生した場合に呼び出されてよい。また、ソフトウェアの実行が異常終了した場合に呼び出されて実行されるよう、オペレーティングシステム等に登録されていてもよい。
【００４６】
図６は、サーバ１００における処理フローの一例を示す。本処理フローは、ユーザ端末１１０からログ情報を受信した場合に、開始する。解析装置１０２は、受信したログ情報を、記憶装置１０４に記録する（ステップＳ６０２）。解析装置１０２は、受信したログ情報にエラーがセットされているか否かを判断する（ステップＳ６０４）。
【００４７】
受信したログ情報にエラーがセットされている場合（ステップＳ６０４：ＹＥＳ）、解析装置１０２は、当該エラーがセットされたイベントと同一イベントを含み、かつ、エラーがセットされていないイベント列を、記憶装置１０４に記録されたログ情報の中から検索する（ステップＳ６０６）。このように、解析装置１０２は、エラーが生じた操作と一致する操作を少なくとも含む操作手順に対応するログ情報を、記憶装置１０４から検索する検索部として機能する。
【００４８】
解析装置１０２は、ステップＳ６０６で検索されたイベント列のうち、ユーザ端末１１０から受信したイベント列との間の類似度が予め定められた基準値より高いイベント列を抽出する（ステップＳ６０８）。すなわち、解析装置１０２は、エラーが生じた操作を含み、エラーが有った操作手順に対して操作手順が類似し、かつエラーが無かった操作手順に対応するログ情報を、記憶装置１０４から検索する。
【００４９】
解析装置１０２は、ステップＳ６０８で抽出したイベント列とユーザ端末１１０から受信したイベント列とを比較して、イベント列および動作環境の差異点を抽出して、記憶装置１０４に記録する（ステップＳ６１０）。例えば、図２で例示したＯＳ情報２１１、動作設定パラメータ２１２および操作２１３に関する差異点を抽出する。解析装置１０２は、ステップＳ６０８で抽出したイベント列について統計情報を算出する（ステップＳ６１２）。これにより、図１で例示したＯＳ情報１３１、設定情報１３２および操作情報１３３のように、エラーが生じていないイベントに基づく統計情報を算出する。このように、解析装置１０２は、記憶装置１０４から検索されたログ情報に含まれる複数の操作手順に基づいて、エラーが有った操作手順に類似する操作手順の統計情報を算出する操作手順解析部として機能する。
【００５０】
そして、解析装置１０２は、回避策の候補をユーザ端末１１０に送信する（ステップＳ６１４）。回避策の候補としては、ステップＳ６１２で算出した統計情報を含む情報、すなわち、図２で例示した回避策２３０を例示することができる。ここで、後述する回避手順が記憶装置１０４に記録されている場合、当該回避手順を含む回避策の候補を、ユーザ端末１１０に送信してもよい。このように、解析装置１０２は、エラー操作に類似する操作手順の統計情報をユーザに提供する。ここで、解析装置１０２は、回避策の候補を、ユーザ端末１１０から受信したイベント列に対応づけて記憶装置１０４に記録してよい。記憶装置１０４に記録した回避策情報は、後述するように、開発者１８０用のデータとして利用されてよい。ステップＳ６１４の処理が完了すると、本処理フローを終了する。
【００５１】
一方、受信したログ情報にエラーがセットされていない場合（ステップＳ６０４：ＮＯ）、以前にエラーが生じたイベントであるか否かを判断する（ステップＳ６２２）。具体的には、予め定められた期間内にユーザ端末１１０から受信したログ情報を検索して、エラーがセットされた同一のイベントが検索された場合に、以前にエラーが生じたイベントであると判断する。以前にエラーが生じたイベントではない場合（ステップＳ６２２：ＮＯ）、本処理フローを終了する。
【００５２】
ステップＳ６２２において以前にエラーが生じたイベントである場合、解析装置１０２は、今回受信した一連のイベント列によって示される操作手順を、エラーを回避することができる回避手順として、記憶装置１０４に記録する（ステップＳ６２４）。上述したように、利用者１９０は回避策２３０をサーバ１００から受け取ることができるので、当該回避策に基づいて操作し直すことができる。利用者１９０が操作し直すことでエラーが生じなかった場合、そのときのログ情報はエラーが生じないイベント列として収集される。したがって、今回受信した操作手順が、ユーザ端末１１０においてエラーを回避できた回避手順である可能性が高い。特に、予め定められた時間内に、エラーが生じないイベント列として収集された場合には、利用者１９０が操作をやり直してエラーを回避できた可能性が高い。
【００５３】
そこで、解析装置１０２は、今回の操作手順を回避手順として記録しておくことで、同じ利用者１９０にとって極めて有効な回避手順として記録することができる。また、他の利用者１９０にとっても、本回避手順がエラー回避に有効な可能性がある。したがって、ステップＳ６２４で記録した回避手順を、ステップＳ６１４においてユーザ端末１１０に送信してもよい。本回避手順は、ユーザ端末１１０に実行させるべく、図２に例示した実行処理情報２４３としてユーザ端末１１０に送信してもよい。
【００５４】
ステップＳ６２２およびステップＳ６２４に関連して説明したように、記憶装置１０４は、エラーが有った第１操作手順に対応するログ情報を受信したことに応じて解析装置１０２が提供した第２操作手順が、エラーが無かった操作手順として収集された場合に、第１操作手順に対応づけて第２操作手順を更に蓄積する。そして、解析装置１０２は、第１操作手順により生じるエラーを回避する操作手順として、第２操作手順を利用者１９０に提供する。
【００５５】
図７は、イベント列の間の類似度を説明する図である。本例は、エラー有りイベント列とエラー無しイベント列との間の類似度を算出する処理の一例を示す。
【００５６】
エラー有りイベント列は、エラーが有った場合の操作手順を示す。エラー有りイベント列は、時間順に生じたイベントＡ、イベントＢ、イベントＣ、イベントＤ、イベントＥ、イベントＧを含み、イベントＧの後にエラーが発生したとする。一方、エラーなしイベント列は、エラーが無かった場合の操作手順を示す。エラーなしイベント列は、イベントＢ、イベントＣ、イベントＤ、イベントＥ、イベントＦ、イベントＧを含み、イベントＧの後もエラーは生じていないとする。
【００５７】
解析装置１０２は、エラーが生じたイベントＧよりも予め定められたイベント数だけ前のイベント列を比較対象とする。本図では簡単のため、４個だけ前のイベント列を比較対象とするとして説明する。すなわち、エラー有りイベント列のうちのイベントＢ、イベントＣ、イベントＤ、イベントＥからなるイベント列と、エラーなしイベント列のうちのイベントＣ、イベントＤ、イベントＥ、イベントＦからなるイベント列とを、比較対象とする。そして、イベント列の双方に含まれるイベントの数を、比較対象のイベント列の総数で除した値を、類似度として算出する。本例では、３個のイベントＢ、Ｃ、Ｄが双方に含まれているので、類似度は７５％となる。このように、解析装置１０２は、エラーが生じた操作よりも前の操作手順において、エラーが有った操作手順に対して操作手順が類似しかつエラーが無かった操作手順に対応するログ情報を、記憶装置１０４から検索する。
【００５８】
本例では、類似度の概念を分かり易く説明することを目的として、イベントの発生順を特に考慮しなかったが、イベント列内におけるイベントの発生順を考慮して、類似度を算出してもよい。例えば、解析装置１０２は、イベント列の双方に含まれ、かつ、両イベント列の間のイベントの発生順の差異が予め定められた基準値よりも小さいイベントの数を、上記双方のイベント列に含まれるイベントの数とみなして、上記の類似度を算出してよい。
【００５９】
本例では、類似度の概念を分かり易く説明することを目的として、予め定められた数のイベント列を比較対象としたが、予め定められた時間内に生じたイベント列を比較対象としてもよい。予め定められた時間内に生じたイベント列を比較対象とする場合、利用者１９０の操作速度等の違いによって、イベント数が著しく異なる場合がある。イベント数の差が予め定められた値を超える場合は、イベント数が多い方のイベント列を、イベント数が少ない方のイベント数に揃えて比較をしてよい。例えば、イベント数が多い方のイベント列の中から、イベントが生じたタイミングが新しい順に選択することによって、イベント数を揃えてよい。なお、比較対象とするイベントを規定する上記の予め定められた数、または、予め定められた時間は、解析装置１０２の動作を設定する動作パラメータ等で調整可能であってよい。
【００６０】
また、本図の例では、完全に一致するイベントに基づいて、類似度を算出するとした。イベント同士を比較することで、適切な比較対象が可能となる。例えば、同じメール保存機能をキーボード操作およびマウス操作のいずれでも行えるよう、ソフトウェアが実装されている場合がある。同じ機能を実行する場合でも、キーボード操作とマウス操作とでは、ソフトウェア内で異なる処理が行われる場合がある。処理が異なると異なるエラーが生じる可能性がある。本図の例では完全に一致するイベントに基づき類似度を算出することで、そのような可能性をなくすことができ、意味のある比較対象が可能となる。一方で、エラーが例えばＵＩ関連の処理に全く関係せず、機能を実装するコードが原因で生じる場合もある。この場合は、機能単位で比較する手法を適用しても同様の結果が得られる。したがって、類似度の算出方法は、本図の例には限定されない。
【００６１】
図８は、サーバ１００がエラー関連情報３１０を送信する場合の動作フローの一例を示す。本処理は、例えば予め定められた時間間隔で定期的に実行される。解析装置１０２は、記憶装置１０４に蓄積されたログ情報から、エラーが生じたイベントを検索して、エラーの種類毎に行うループ処理を開始する（ステップＳ８０２）。例えば「送信ボタンを押した時に生じたエラー」など、エラーが生じたときの操作の種類毎に、ステップＳ８０４からステップＳ８１４までの処理を繰り返す。
【００６２】
解析装置１０２は、イベント列および動作環境の差異点を読み出す（ステップＳ８０４）。例えば、図６のステップＳ６１０で抽出され記憶装置１０４に記録された差異点を、記憶装置１０４から読み出す。例えば、図２で例示したＯＳ情報２１１、動作設定パラメータ２１２および操作２１３に関する差異点を読み出す。
【００６３】
解析装置１０２は、本ループに係る種類のエラーを記憶装置１０４から検索して、エラーが生じたイベント列を抽出する（ステップＳ８０６）。そして、解析装置１０２は、ステップＳ８０４で読み出した差異点について統計を算出する（ステップＳ８０８）。解析装置１０２は、例えば図３のエラー統計３２０で説明したように、本ループに係る種類のエラーが発生した頻度と、各差異点についてエラーの発生頻度とを算出する。
【００６４】
続いて、ステップＳ８０６で検索されたイベント列のそれぞれに対して行うループ処理を開始する（ステップＳ８１０）。本ループでは、検索されたイベント列のそれぞれに対する回避策を記憶装置１０４から読み出す。具体的には、ステップＳ６１４に関連して説明したように、回避策の候補が記憶装置１０４に記録されている場合、当該回避策の候補を記憶装置１０４から読み出す（ステップＳ８１２）。
【００６５】
ステップＳ８１４は、ステップＳ８１０で開始した処理ループの終了に対応する。また、ステップＳ８１６は、ステップＳ８０２で開始した処理ループの終了に対応する。これらのループが終了すると、解析装置１０２は、図３のエラー統計３２０で例示したエラー統計情報、図３のエラー操作環境３３０で例示したエラーイベント列、図３の回避策３４０で例示した回避手段を、開発用コンピュータ１２０に送信する。すなわち、図３で例示したエラー関連情報３１０が開発用コンピュータ１２０に送信される。ステップＳ８１８の処理が完了すると、本処理フローを終了する。
【００６６】
ステップＳ８０６、ステップＳ８０８、ステップＳ８１８で説明したように、解析装置１０２は、特定のエラーが有った操作を含む複数の操作手順を、記憶装置１０４から抽出するエラー操作手順抽出部、および、抽出された複数の操作手順に基づいて、当該操作を含むエラーの有った操作手順およびエラーの無かった操作手順の統計情報を算出するエラー操作手順解析部として機能する。そして、記憶装置１０４は、算出した統計情報を、開発者１８０に提供する。
【００６７】
ステップＳ８１２の説明では、回避策の候補を記憶装置１０４から読み出すとした。しかし、解析装置１０２は、記憶装置１０４に蓄積されたログ情報に基づき、利用者１９０がエラーを回避するために採用した回避策を特定して、開発者１８０に提供してもよい。例えば、解析装置１０２は、エラーが有った操作手順の後に行われ対応するエラーが無かった操作手順を、記憶装置１０４から検索する。そして、解析装置１０２は、エラーが有った操作手順と、検索された操作手順とを、開発者１８０に提供する。このため、利用者１９０が経験的に知っている回避策、または、利用者１９０が偶然に行った回避策を、開発者１８０に提供することができる場合がある。
【００６８】
本処理フローで説明したように、解析装置１０２は、エラーが有った操作手順で操作されることがユーザ端末１１０で検出された場合に、検出された操作手順に類似しかつエラーが無かった操作手順がユーザに提供されるべく、当該エラーが無かった操作手順をユーザ端末１１０に提供する。ここで、「検出された操作手順に類似しかつエラーが無かった操作手順がユーザに提供される」とは、ステップＳ４２２で説明した、実行処理情報２４３で示される処理を実行すること、および、実行処理情報２４３を示す情報を利用者１９０に提示することを含む。このため、解析装置１０２は、利用者１９０がエラーが生じそうな操作をした場合にユーザ端末１１０の画面上に警告を出させたり、エラーを回避できる処理をユーザ端末１１０で自動的に実行させたりすることができる。
【００６９】
上記において、サーバ１００は、ユーザ端末１１０から操作手順を含む操作環境のログ情報を取得して、当該操作手順に類似しかつエラーが無かった操作手順を、利用者１９０または開発者１８０に提供するとして、本システムの動作を説明した。しかし、サーバ１００は、ユーザ端末１１０から操作手順の情報を取得しなくともよい。例えば、サーバ１００は、ユーザ端末１１０から動作環境のログ情報を取得して、エラーが有った動作環境に対応するログ情報を受信したことに応じて、当該エラーが有った動作環境に対して動作環境が類似しかつエラーが無かった動作環境に対応するログ情報を記憶装置１０４から検索して、検索されたログ情報に含まれる動作環境を、利用者１９０または開発者１８０に提供してもよい。この場合でも、利用者１９０または開発者１８０は、どのような動作環境であればエラーを回避できるかが分かる。
【００７０】
上記において、サーバ１００は、ユーザ端末１１０から送信されるログ情報を収集して蓄積するとした。しかし、サーバ１００は、いずれかのユーザ端末１１０からエラーの有った操作手順に対応するログ情報を受信したことに応じて、エラーのあった操作手順に類似する操作手順に対応するログ情報の蓄積を開始してもよい。これにより、解析装置１０２は、エラーが生じない操作手順に関するログ情報を処理する必要がなくなり、ログ情報を処理する場合の負荷が軽減される。また、記憶装置１０４が有する記憶容量を節約することができ、検索時間を削減にもつながる。
【００７１】
ユーザ端末１１０は、パーソナルコンピュータ、携帯電話などの情報処理装置であってよい。また、本システムでは、ユーザ端末１１０とサーバ１００が別個の装置として説明した。しかし、ユーザ端末１１０は、サーバ１００が有する少なくとも一部の機能を有してよい。例えば、ユーザ端末１１０が、解析装置１０２が有する機能を有してもよい。また、ユーザ端末１１０が、サーバ１００が有する機能を有してもよい。サーバ１００が有する機能をユーザ端末１１０が有する場合、ユーザ端末１１０は、他のユーザ端末１１０から操作環境のログ情報を収集してよい。一方、ユーザ端末１１０は、他のユーザ端末１１０からは操作環境のログ情報を収集せず、ユーザ端末１１０自身の操作環境のログ情報だけを収集してもよい。
【００７２】
図９は、本実施形態に係るコンピュータ１９００のハードウェア構成の一例を示す。本実施形態に係るコンピュータ１９００は、ホスト・コントローラ２０８２により相互に接続されるＣＰＵ２０００、ＲＡＭ２０２０、グラフィック・コントローラ２０７５、及び表示装置２０８０を有するＣＰＵ周辺部と、入出力コントローラ２０８４によりホスト・コントローラ２０８２に接続される通信インターフェイス２０３０、ハードディスクドライブ２０４０、及びＣＤ−ＲＯＭドライブ２０６０を有する入出力部と、入出力コントローラ２０８４に接続されるＲＯＭ２０１０、フレキシブルディスク・ドライブ２０５０、及び入出力チップ２０７０を有するレガシー入出力部とを備える。
【００７３】
ホスト・コントローラ２０８２は、ＲＡＭ２０２０と、高い転送レートでＲＡＭ２０２０をアクセスするＣＰＵ２０００及びグラフィック・コントローラ２０７５とを接続する。ＣＰＵ２０００は、ＲＯＭ２０１０及びＲＡＭ２０２０に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィック・コントローラ２０７５は、ＣＰＵ２０００等がＲＡＭ２０２０内に設けたフレーム・バッファ上に生成する画像データを取得し、表示装置２０８０上に表示させる。これに代えて、グラフィック・コントローラ２０７５は、ＣＰＵ２０００等が生成する画像データを格納するフレーム・バッファを、内部に含んでもよい。
【００７４】
入出力コントローラ２０８４は、ホスト・コントローラ２０８２と、比較的高速な入出力装置である通信インターフェイス２０３０、ハードディスクドライブ２０４０、ＣＤ−ＲＯＭドライブ２０６０を接続する。通信インターフェイス２０３０は、ネットワークを介して他の装置と通信する。ハードディスクドライブ２０４０は、コンピュータ１９００内のＣＰＵ２０００が使用するプログラム及びデータを格納する。ＣＤ−ＲＯＭドライブ２０６０は、ＣＤ−ＲＯＭ２０９５からプログラム又はデータを読み取り、ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供する。
【００７５】
また、入出力コントローラ２０８４には、ＲＯＭ２０１０と、フレキシブルディスク・ドライブ２０５０、及び入出力チップ２０７０の比較的低速な入出力装置とが接続される。ＲＯＭ２０１０は、コンピュータ１９００が起動時に実行するブート・プログラム、及び／又は、コンピュータ１９００のハードウェアに依存するプログラム等を格納する。フレキシブルディスク・ドライブ２０５０は、フレキシブルディスク２０９０からプログラム又はデータを読み取り、ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供する。入出力チップ２０７０は、フレキシブルディスク・ドライブ２０５０を入出力コントローラ２０８４へと接続すると共に、例えばパラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を入出力コントローラ２０８４へと接続する。
【００７６】
ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供されるプログラムは、フレキシブルディスク２０９０、ＣＤ−ＲＯＭ２０９５、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。プログラムは、記録媒体から読み出され、ＲＡＭ２０２０を介してコンピュータ１９００内のハードディスクドライブ２０４０にインストールされ、ＣＰＵ２０００において実行される。
【００７７】
コンピュータ１９００にインストールされたプログラムは、コンピュータ１９００を、図１から図８にかけて説明したサーバ１００の各部として機能させる。また、当該プログラムは、コンピュータ１９００にインストールされて、コンピュータ１９００を、図１から図８にかけて説明したサーバ１００およびユーザ端末１１０の各部の機能を実現させてよい。
【００７８】
これらのプログラムに記述された情報処理は、コンピュータ１９００に読込まれることにより、ソフトウェアと上述した各種のハードウェア資源とが協働した具体的手段として機能する。また、これらのプログラムに記述された情報処理は、コンピュータ１９００に読込まれることにより、ソフトウェアと上述した各種のハードウェア資源とが協働した具体的手段であるサーバ１００、ユーザ端末１１０として機能する。そして、これらの具体的手段によって、本実施形態におけるコンピュータ１９００の使用目的に応じた情報の演算又は加工を実現することにより、使用目的に応じた特有のサーバ１００、ユーザ端末１１０が構築される。
【００７９】
一例として、コンピュータ１９００と外部の装置等との間で通信を行う場合には、ＣＰＵ２０００は、ＲＡＭ２０２０上にロードされた通信プログラムを実行し、通信プログラムに記述された処理内容に基づいて、通信インターフェイス２０３０に対して通信処理を指示する。通信インターフェイス２０３０は、ＣＰＵ２０００の制御を受けて、ＲＡＭ２０２０、ハードディスクドライブ２０４０、フレキシブルディスク２０９０、又はＣＤ−ＲＯＭ２０９５等の記憶装置上に設けた送信バッファ領域等に記憶された送信データを読み出してネットワークへと送信し、もしくは、ネットワークから受信した受信データを記憶装置上に設けた受信バッファ領域等へと書き込む。このように、通信インターフェイス２０３０は、ＤＭＡ（ダイレクト・メモリ・アクセス）方式により記憶装置との間で送受信データを転送してもよく、これに代えて、ＣＰＵ２０００が転送元の記憶装置又は通信インターフェイス２０３０からデータを読み出し、転送先の通信インターフェイス２０３０又は記憶装置へとデータを書き込むことにより送受信データを転送してもよい。
【００８０】
また、ＣＰＵ２０００は、ハードディスクドライブ２０４０、ＣＤ−ＲＯＭドライブ２０６０（ＣＤ−ＲＯＭ２０９５）、フレキシブルディスク・ドライブ２０５０（フレキシブルディスク２０９０）等の外部記憶装置に格納されたファイルまたはデータベース等の中から、全部または必要な部分をＤＭＡ転送等によりＲＡＭ２０２０へと読み込ませ、ＲＡＭ２０２０上のデータに対して各種の処理を行う。そして、ＣＰＵ２０００は、処理を終えたデータを、ＤＭＡ転送等により外部記憶装置へと書き戻す。このような処理において、ＲＡＭ２０２０は、外部記憶装置の内容を一時的に保持するものとみなせるから、本実施形態においてはＲＡＭ２０２０および外部記憶装置等をメモリ、記憶部、または記憶装置等と総称する。本実施形態における各種のプログラム、データ、テーブル、データベース等の各種の情報は、このような記憶装置上に格納されて、情報処理の対象となる。なお、ＣＰＵ２０００は、ＲＡＭ２０２０の一部をキャッシュメモリに保持し、キャッシュメモリ上で読み書きを行うこともできる。このような形態においても、キャッシュメモリはＲＡＭ２０２０の機能の一部を担うから、本実施形態においては、区別して示す場合を除き、キャッシュメモリもＲＡＭ２０２０、メモリ、及び／又は記憶装置に含まれるものとする。
【００８１】
また、ＣＰＵ２０００は、ＲＡＭ２０２０から読み出したデータに対して、プログラムの命令列により指定された、本実施形態中に記載した各種の演算、情報の加工、条件判断、情報の検索・置換等を含む各種の処理を行い、ＲＡＭ２０２０へと書き戻す。例えば、ＣＰＵ２０００は、条件判断を行う場合においては、本実施形態において示した各種の変数が、他の変数または定数と比較して、大きい、小さい、以上、以下、等しい等の条件を満たすかどうかを判断し、条件が成立した場合（又は不成立であった場合）に、異なる命令列へと分岐し、またはサブルーチンを呼び出す。
【００８２】
以上に示したプログラム又はモジュールは、外部の記録媒体に格納されてもよい。記録媒体としては、フレキシブルディスク２０９０、ＣＤ−ＲＯＭ２０９５の他に、ＤＶＤ又はＣＤ等の光学記録媒体、ＭＯ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワーク又はインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムをコンピュータ１９００に提供してもよい。
【００８３】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【００８４】
特許請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。
【符号の説明】
【００８５】
１００  サーバ、１０２  解析装置、１０４  記憶装置、１１０  ユーザ端末、１２０  開発用コンピュータ、１３１  ＯＳ情報、１３２  設定情報、１３３  操作情報、１５０  ネットワーク、１９０  利用者、１８０  開発者、２００、２１０  ログ情報、２１１  ＯＳ情報、２１２  動作設定パラメータ、２１３  操作、２２０、２３０  回避策、２４２  処理、２４０  回避策、２４１  操作手順情報、２４３  実行処理情報、３１０  エラー関連情報、３２０  エラー統計、３３０  エラー操作環境、３４０  回避策、３４２  処理、１９００  コンピュータ、２０００  ＣＰＵ、２０１０  ＲＯＭ、２０２０  ＲＡＭ、２０３０  通信インターフェイス、２０４０  ハードディスクドライブ、２０５０  フレキシブルディスク・ドライブ、２０６０  ＣＤ−ＲＯＭドライブ、２０７０  入出力チップ、２０７５  グラフィック・コントローラ、２０８０  表示装置、２０８２  ホスト・コントローラ、２０８４  入出力コントローラ、２０９０  フレキシブルディスク、２０９５  ＣＤ−ＲＯＭ
【図１】
0005648911.tif 000002
【図２】
0005648911.tif 000003
【図３】
0005648911.tif 000004
【図４】
0005648911.tif 000005
【図５】
0005648911.tif 000006
【図６】
0005648911.tif 000007
【図７】
0005648911.tif 000008
【図８】
0005648911.tif 000009
【図９】
0005648911.tif 000010