図1は、発明の実施の一形態である不正監視システム1の構成を示すブロック図である。監視装置である不正監視システム1は、監視端末装置2、店舗システム3、および記録・警告装置4を含む。監視端末装置(以下「監視端末」という)2は、たとえばパーソナルコンピュータによって構成され、店舗システム3に含まれる後述の外部機器30を監視する装置である。店舗システム3は、LAN(Local Area Network)5などのネットワークあるいは公衆回線によって監視端末2に接続される監視対象のシステムである。
記録・警告装置4は、監視端末2に接続され、店舗システム3に含まれる外部機器30に関しての映像を撮影するカメラおよび音を録音するマイクロフォン(以下「マイク」という)、ならびに警告を報知するスピーカなどの記録機器および警告機器を含んで構成される。図1には、理解を容易にするために、店舗システム3および記録・警告装置4が1台ずつ接続された監視端末2を示しているが、監視端末2には店舗システム3および記録・警告装置4が複数台接続されてもよい。
店舗システム3は、POS(Point Of Sales)端末6およびPOS端末6に接続される外部機器30を含む。POS端末6は、外部機器30からのログ元データに基づいてログを生成し、生成したログを監視端末2に送信する。監視端末2は、POS端末6から受信したログに基づいて、外部機器30に収納される監視対象物たとえば物品あるいは現金の過不足を監視する。そして、過不足を検出すると、記録・警告装置4によって、外部機器30の周辺の映像の撮影および音の録音、ならびに警告の報知を行う。
まず、ログの生成、記録、および再生について、図2〜図31によって説明し、その後、外部機器30の監視について、図32〜図44によって説明する。
図2は、図1に示した不正監視システム1の基礎となるログ記録再生システム9の構成を模式的に示す図である。ログ記録再生システム9は、ターゲット機10とサポート機20とを含む。ターゲット機10は、たとえば流通あるいはガソリンスタンドなどで用いられるPOS端末6によって構成され、入出力部11およびログファイル部T15を含む。サポート機20は、たとえば監視端末2によって構成され、表示部S25を含む。ターゲット機10とサポート機20とは、ネットワークたとえばLAN5あるいは公衆回線などによって接続される。図2には、1台のターゲット機10しか記載していないが、複数台のターゲット機10が接続される。
ターゲット機10の入出力部11は、たとえば操作者がターゲット機10を操作するタッチパネルおよび操作者への情報を表示する液晶ディスプレイを含む。ログファイル部T15は、たとえばハードディスク装置によって構成され、操作者が入出力部11に対して行った操作などの履歴情報つまりログを記憶する。サポート機20の表示部S25は、たとえばサポート機20の操作者への情報を表示する液晶ディスプレイによって構成される。
ターゲット機10は、操作者が入出力部11を操作すると、操作者が行った操作を表すログを生成し、生成したログをログファイル部T15に記憶する。あるいは、生成したログを、ログファイル部T15に記憶することなく、サポート機20に送信する。サポート機20は、ログファイル部T15から読み出されて送信されるログ、あるいはログファイル部15に記憶することなく送信されたログを受信すると、受信したログに基づいて、ターゲット機10で行われた操作を解析し、解析結果を表示部S25に表示する。表示部S25には、たとえばターゲット機10の入出力部11のタッチパネルが画像として表示され、そのタッチパネルを操作する操作者の手が重畳して表示され、ターゲット機10で行われた操作が表示部S25上で再現される。
図3は、図2に示したターゲット機10の外観を模式的に示す斜視図である。図3に示したターゲット機10は、ガソリンスタンドに設置されるPOS端末6の例であり、従業員が操作を行い、ガソリンの給油指定あるいは決済に用いられる。図3に示したターゲット機10は、情報入力のためのタッチパネル部111およびキー部112、情報表示のための表示部T113、プリンタ31、および磁気カードリーダライタ33を含む。プリンタ31および磁気カードリーダライタ33は、ターゲット機10に組み込まれている必要はなく、外付けであってもよい。
図4は、図1に示した店舗システム3の構成の一例を示すブロック図である。図4に示した店舗システム3は、ターゲット機10たとえばPOS端末6を含む。ターゲット機10は、入出力部11、ログ記録制御部12、システムタイマ部13、アプリケーション部14、ログファイル部T15、表示制御部16、制御部17、図示しないCPU(
Central Processing Unit)、および図示しないメモリを含む。ターゲット機10には、外部機器30、たとえばプリンタ31、スキャナ32、磁気カードリーダライタ33、暗証番号入力装置34、計量機35、釣銭機36、油面計37、洗車機38、および自動販売機39が接続される。
入出力部11は、ターゲット機10に内蔵されるデバイスおよび外付けのデバイスとデータの送受信を行う通信手段であるタッチパネル部111、キー部112、表示部T113、LAN通信部114、パラレル通信部115、シリアル通信部116、無線通信部117、およびSS(Service Station)−LAN通信部118を含む。内蔵されるデバイスは、たとえばタッチパネル部111、キー部112、および表示部T113であり、外付けのデバイスつまり外部機器30は、たとえばプリンタ31、スキャナ32、磁気カードリーダライタ33、暗証番号入力装置34、計量機35、釣銭機36、油面計37、洗車機38、および自動販売機39である。
タッチパネル部111は、操作者が画面にタッチすることによって情報を入力するタッチパネルである。キー部112は、操作者がキーを押下することによって情報を入力するキー入力装置である。表示部T113は、液晶ディスプレイなどの表示装置であり、情報を表示する。
LAN通信部114は、LAN5に接続される機器たとえばサポート機20とデータを送受信する通信部である。パラレル通信部115は、パラレルインタフェースによってターゲット機10に接続されるプリンタなどの装置と、パラレル通信によってデータを送受信する通信部である。シリアル通信部116は、シリアルインタフェースによってターゲット機10に接続されるスキャナ32、磁気カードリーダライタ33、および自動販売機39と、シリアル通信によってデータを送受信する通信部である。無線通信部117は、無線によってターゲット機10に接続される暗証番号入力装置34と、無線通信によってデータを送受信する通信部である。SS−LAN通信部118は、SS−LANによってターゲット機10に接続される計量機35、釣銭機36、油面計37、および洗車機38とデータを送受信する通信部である。外部デバイスとの通信は有線でも無線でもかまわない。
ログ記録制御部12は、ログ生成部121、文字列変換テーブル部T122、ログ記録部123、およびログ設定部124を含み、入出力部11あるいは表示制御部16からの情報に基づいて、ログを生成し記録する。ログ生成部121は、入出力部11あるいは表示制御部16からログ指示つまりログの生成指示を受け取ると、または入出力部11にログ対象の動作が発生したか否かを監視し、ログ対象の動作が発生すると、ログ指示または発生したログ対象の動作に基づくログを生成する。ログ対象の動作は、たとえば操作者がターゲット機10に取付けられたデバイスを直接指などで触ったり押したりしたことによってターゲット機10上に入力が発生すること、各通信部と接続される外部デバイスとの通信が発生すること、通信路の状態が変わること、各部でエラーが発生することなどの動作である。文字列変換テーブル部T122は、たとえば図示しないメモリに含まれ、ログ生成部121がログを生成するために用いる後述する変換テーブルを記憶する。ログ記録部123は、ログ生成部121が生成したログを、ログファイル部T15に記憶する。ログ設定部124は、たとえば図示しないメモリに含まれ、ログを生成するログ対象およびログを記憶させるログファイルの指定などが設定されている。
システムタイマ部13は、ターゲット機10の時刻を計時するタイマである。ログ生成部121は、ログを生成する際、システムタイマ部13が示す時刻を参照して、時刻をログに残す。アプリケーション部14は、ターゲット機10の用途に応じた機能を実現する部位であり、画像データ部141およびアプリケーション制御部142を含む。画像データ部141は、たとえば図示しないメモリに含まれ、表示部T113に表示する画像イメージとその画像イメージを管理するための後述する画像管理テーブル51を記憶する。アプリケーション制御部142は、ターゲット機10の用途に応じて実行されるプログラムによって実現される機能である。
ログファイル部T15は、たとえば図示しないメモリに含まれ、標準ログファイル151および指定ログファイル152を含む。ログファイルは、複数のログをまとめてファイル化したものである。1台のターゲット機10が出力するログをログファイルに記録する場合、ログファイルは1つだけではなく複数のファイルに分割することが可能である。たとえば、入出力デバイス毎あるいは動作毎に分割することができる。図4に示した例では、まず、大きく2つのログファイル、つまり標準ログファイル151と指定ログファイル152とに分割している。標準ログファイル151は、要求のあったデバイス別にログを記憶するためのログファイルであり、指定ログファイル152は、デバイス共通にログを記憶するためのログファイルである。そして、標準ログファイル151の中は、デバイス別のログファイルに分割されている。さらに、ファイルの分割は、ログファイルのファイルサイズがシステム上の制限あるいは任意に指定した最大値まで達した場合にも行われる。
表示制御部16は、表示部T113を制御する。たとえばアプリケーション制御部142から指示された画像イメージを表示部T113に表示する。制御部17は、図示しないメモリによって記憶されるプログラムが、図示しないCPUによって実行されることによって実現される機能であり、入出力部11、ログ記録制御部12、アプリケーション部14、および表示制御部16を制御する。入出力部11、ログ記録制御部12、アプリケーション部14、および表示制御部16も、図示しないメモリによって記憶されるプログラムが、図示しないCPUによって実行されることによって実現される機能である。図示しないメモリは、たとえばROM(Read Only Memory)あるいはRAM(Random Access
Memory)などの半導体メモリあるいはハードディスク装置によって構成される記憶装置である。
プリンタ31は、たとえば印刷装置であり、スキャナ32は、たとえば原稿読取装置あるいはバーコード読取装置であり、磁気カードリーダライタ33は、磁気カードの読み込みおよび書き込みを行う装置であり、暗証番号入力装置34は、暗証番号を入力するための入力装置である。計量機35、釣銭機36、油面計37、および洗車機38は、ガソリンスタンドで用いられる装置であり、計量機35は、ポンプによる給油量を計量する装置であり、釣銭機36は、釣銭を払い出す装置であり、油面計37は、タンクに貯蔵されている油量を計量する装置であり、洗車機38は、車の洗車を行う装置である。自動販売機39は、販売目的の物品を収納し、ユーザの操作に従って物品の販売を行う装置である。
入出力部11は、タッチパネル部111、キー部112、表示部T113、LAN通信部114、パラレル通信部115、シリアル通信部116、無線通信部117、およびSS−LAN通信部118からのハードウェアまたはソフトウェアによる割込みによって処理を開始する。割込み要因に基づいて、ログの生成を指示するログ指示を作成し、作成したログ指示をログ生成部121に送る。
図5は、図4に示した画像データ部141が管理する画像管理テーブル51の一例を示す図である。画像管理テーブル51は、表示部T113に表示する表示画面を特定する表示画面番号ごとのデータを示すテーブルである。このデータは、表示部T113の画面全体に表示する画像そのもののデータ、表示部T113の画面の一部に表示する画像の、あるいは画像を生成するためのメタデータである。図5には、表示画面番号「0001」について、データ「開始画像データ」が示され、表示画面番号「0002」について、データ「業務画像1データ」が示され、表示画面番号「0003」について、データ「業務画像2データ」が示されている。
アプリケーション制御部142は、表示制御部16に対して表示画面番号を指示すると、表示制御部16は、アプリケーション制御部142から指示された表示画面番号の画像を表示部T113に表示させる。そして、表示制御部16は、指示された表示画面番号を示すログ指示を作成し、作成したログ指示をログ生成部121に送る。
ログ記録制御部12は、入出力部11内で、割り込み以外のログ対象の動作が発生しているか否かを監視する。ログ対象の動作が発生していると、そのログ対象の動作のログを生成し、生成したログをログファイル部T15に記憶する。さらに、入出力部11あるいは表示制御部16から、ログ設定部124に設定されているログ対象のログ指示を受け取ると、ログ指示に基づくログを生成し、ログファイル部T15に記憶する。ログファイル部T15のうちの標準ログファイルに記憶するか指定ログファイルに記憶するか否かは、ログ設定部124の設定に基づいて判断される。
図6は、図4に示した入出力部11または表示制御部16からログ生成部121に通知されるログ指示例52を示す図である。ログ指示は、基本的には、1行で1つのログ指示を示し、図6には、6つのログ指示が示されている。1つのログ指示は、カンマで区切られた複数の数値または文字列から構成される。最初の数値は、図7で後述する入出力部番号を示し、2番目の数値は、図8で後述する動作番号を示し、3番目以降の数値または文字列は、動作の詳細である。
たとえば、1行目のログ指示「1,1,142,244」は、入出力番号「1」つまりタッチパネル部111で、動作番号「1」の動作つまり「触れる」動作が発生し、動作詳細が「142,244」つまり触れた位置が座標(142,244)であったことを示している。2行目のログ指示は「1,2,145,242」であり、3行目のログ指示は「11,11,01F45CCD4EF10E042」であり、4行目のログ指示は「21,31,130」であり、5行目のログ指示は「1,1,582,289」であり、6行目のログ指示は「1,2,573,295」である。
図7は、図4に示した文字列変換テーブル部T122に記憶される入出力部名定義テーブル53を示す図である。入出力部名定義テーブル53は、入出力部を特定するための「入出力部番号」ごとに、対応する「入出力部名ログ文字列」を示すテーブルである。入出力部名定義テーブル53の右側に備考として、それぞれの入出力部名を記載する。テーブルの入出力部名ログ文字列欄の文字列は任意に設定することができるので、入出力部名ログ文字列を、全く関係のない文字列に設定してもよい。
たとえば、入出力部番号「001」は、入出力部名ログ文字列が「“operation”」であり、備考が「タッチパネル」つまりタッチパネル部111であることを示している。同様に、入出力部番号に対する入出力部名ログ文字列および備考は、それぞれ「011」については、「“serial1”」つまりシリアル通信部1であり、「012」については、「“serial2”」つまりシリアル通信部2であり、「013」については、「“extserial”」つまりシリアル通信部3であり、「021」については、「“display”」つまり表示部であり、「031」については、「“sslan”」つまりSS−LAN通信部であり、「100」については、「“core”」つまりアプリケーションである。
「シリアル通信部1」、「シリアル通信部2」、および「シリアル通信部3」は、いずれもシリアル通信部116であり、同一デバイスで複数の入出力チャネルを利用している場合を示している。複数の入出力チャネルのそれぞれに入出力部番号を割り当てて区別している。
図8は、図4に示した文字列変換テーブル部T122に記憶される動作名定義テーブル54を示す図である。動作名定義テーブル54は、動作を特定するための「動作番号」ごとに、対応する「動作名ログ文字列」を示すテーブルである。動作名定義テーブル54の右側に備考として、それぞれの動作名を記載している。テーブルの動作名ログ文字列欄の文字列は任意に設定することができるので、動作名ログ文字列を、全く関係のない文字列に設定してもよい。
たとえば、動作番号「000」は、動作名ログ文字列が「“message” 」であり、情報であることを示している。同様に、動作番号に対する動作名ログ文字列および備考は、それぞれ「001」については、「“pressed” 」つまり触れるであり、「002」については、「“released” 」つまり離すであり、「011」については、「“read” 」つまり入力であり、「012」については、「“write” 」つまり出力であり、「021」については、「“error” 」つまりエラーであり、「031」については、「“change” 」つまり画面変更である。
図9は、図4に示した文字列変換テーブル部T122に記憶される動作詳細作成ルールテーブル55を示す図である。動作詳細作成ルールテーブル55は、「入出力部」と「動作」との組合せごとに、「動作詳細のログ作成ルール」を示すテーブルである。動作詳細作成ルールテーブル55の右側に「備考:意味」として、それぞれの組合せの意味が記載されている。
たとえば、入出力部「001」と動作「001」との組合せについては、タッチパネルに触れたことを意味し、動作詳細のログ作成ルールが「第3、第4引数を座標“x=%04d,y=%04d”形式にする」を行なったことを意味している。同様に、入出力部と動作との各組合せについての動作詳細のログ作成ルールおよび備考は、入出力部「001」と動作「002」との組合せについては、タッチパネルを離したことを意味し、「第3、第4引数を座標“x=%04d,y=%04d”形式にする」を行なった、入出力部「011」と動作「011」との組合せについては、シリアル通信部1で入力を意味し、「第3引数を16進数にする」を行なった、入出力部「011」と動作「012」との組合せについては、シリアル通信部1で出力を意味し、「第3引数を16進数にする」を行なった、入出力部「011」と動作「021」との組合せについては、シリアル通信部1でエラーを意味し、「第3引数を10進数にする」を行なった、入出力部「021」と動作「031」との組合せについては、表示部で画面変化を意味し、「第3引数を“display=%04d”形式にする」を行なった、入出力部「031」と動作「011」との組合せについては、SS−LAN通信部で入力を意味し、「第3引数を16進数にする」を行なった、入出力部「031」と動作「012」との組合せについては、SS−LAN通信部で出力を意味し、「第3引数を16進数にする」を行なった、入出力部「100」と動作「000」との組合せについては、アプリケーション情報を意味し、「第3引数を文字のまま出力する」を行なったである。
ログ生成部121は、入出力部11あるいは表示制御部16から、ログ設定部124に設定されているログ対象のログ指示を受け取ると、まず、システムタイマ部13から日時を取得し、日時を表す日時ログ文字列を生成する。次に、受け取ったログ指示の1番目の数値に基づいて、図7に示した入出力部名定義テーブル53から入出力部名ログ文字列、そして2番目の数値に基づいて、図8に示した動作名定義テーブル54から動作名ログ文字列を取得する。さらに、受け取ったログ指示の1番目の数値、2番目の数値、および3番目以降の数値または文字列に基づいて、図9に示した動作詳細作成ルールテーブル55
の動作詳細のログ作成ルールによって、動作の詳細を表す動作詳細ログを作成する。取得した日時ログ文字列、入出力部名ログ文字列、および動作名ログ文字列、ならびに作成した動作詳細ログを合成して、ログ指示に対応するログを生成する。生成したログは、ログファイル部T15に記憶する。
たとえば、操作者がタッチパネルに触れたことを示すログを生成する場合、指示ログは、図6に示した指示ログ例52の1行目の指示ログ「1,1,142,244」である。第1引数「1」が示す入出力部「タッチパネル」を表す番号「001」と、第2引数「1」が示す動作「触れる」を表す番号「001」との組合せについて、図9に示した動作詳細作成ルールテーブル55を参照すると、動作詳細のログ作成ルール「第3、第4引数を座標“x=%04d,y=%04d”形式にする」が得られる。ここで「%04d」とは、4桁の10進数を示し、C言語を使用するプログラムにおいて文字出力に関する標準的な出力形式を示す一例である。日時を2006年5月18日15時15分01.120秒とすると、第3引数「142」および第4引数「244」から、ログは、「2006/05/18,15:05:01.120,“operation”,“pressed”,“x=0142,y=0244”」となる。
図10は、図4に示したログファイル部T15に記憶されたログ例56を示す図である。ログ例56は、基本的には、1行で1つのログつまりターゲット機10上での1動作についてのログを示し、図10には、6つのログが示されている。1つのログは、カンマで区切られた複数の数値または文字列から構成される。最初の数値または文字列は、ログ対象の動作があった日時、2番目の数値または文字列は、入出力部名、3番目の数値または文字列は、動作名、4番目の数値または文字列は、各動作の内容を詳細に示す動作詳細である。図10に示した例では、4つの項目を例示したが、これら以外に、ログには関連するプログラム名、ユーザ名、ログの文字数、あるいはマシン名などターゲット機10に関連する情報、および使用状況あるいは場所を特定する情報などを含めてもよい。さらに、1つのログの情報量が多くなる場合、2行以上にログを分割してもよい。
図10には、図6に示した指示ログ例52に対応するログ例56が示されている。1行目には、「2006/05/18,15:05:01.120,“operation”,“pressed”,“x=0142,y=0244”」と示され、2行目には、「2006/05/18,15:05:01.541,“operation”,“released”,“x=0145,y=0242”」と示され、3行目には、「2006/05/18,15:05:02.951,“serial1”,“read”,“01F45CCD4EF10E042”」と示され、4行目には、「2006/05/18,15:05:04.092,“display”,“change”,“display=0130”」と示され、5行目には、「2006/05/18,15:05:08.735,“operation”,“pressed”,“x=0582,y=0289”」と示され、6行目には、「2006/05/18,15:05:09.089,“operation”,“released”,“x=0573,y=0295”」と示されている。
図10に示した例では、ログに日時を特定する情報を含んでいる例を示したが、ログに日時を特定するための情報を含まない場合、ログファイル部T15のログファイルにログを記録する際、ログが生成された順またはログ対象の動作が発生した順に記憶する。ログに日時を特定するための情報を含む場合は順不同でもよい。
図11は、図4に示したアプリケーション部14がログ指示作成のために用いるログ事象変換テーブル57を示す図である。ログ事象変換テーブル57は、アプリケーション制御部142において発生した「事象」ごとに、対応する「ログ文字列」を示すテーブルである。ログ文字列欄には、事象に合わせて任意のログ文字列を設定することができる。したがって、アプリケーションについては、入出力部11とは独立したログとして、つまりアプリケーションのみの情報をログとして記録することができる。
図11には、事象「プログラムAの開始」について、ログ文字列「“プログラムA開始”」が示され、事象「プログラムAの終了」について、ログ文字列「“プログラムA終了(終了コード=%03d)”」が示され、事象「操作する従業員の指定」について、ログ文字列「“従業員コード=%06d”」が示され、事象「精算処理の開始」について、ログ文字列「“精算処理開始”」が示されている。
図12は、図4に示したアプリケーション部14からログ生成部121に通知するログ指示例58およびそれに基づくログ例59を示す図である。たとえば、ターゲット機10が複数の従業員で構成される飲食店で使用する端末である場合、端末の操作者を特定するために、アプリケーションは、従業員情報たとえば従業員コードを用いて従業員を管理する。タッチパネルの操作は、端末を使用する従業員が関連する動作であり、タッチパネルで行われた入出力操作と従業員情報とを関連付けてログに記録しておきたいケースが発生する。ログ記録制御部12がこの従業員情報に関知する構成となっていない場合、ログに記録するため、アプリケーション制御部142は、アプリケーションにのみ存在する情報、たとえば従業員情報を、任意の文字列として、ログ指示でログ生成部121に指示する。
ログ指示例58に示した個々のログ指示は、図6に示した例と同様に、カンマで区切られた複数の数値または文字列から構成される。最初の数値は、図7に示した入出力部番号を示し、2番目の数値は、図8に示した動作番号を示し、3番目以降の数値または文字列は、動作の詳細である。動作の詳細は、図11に示した事象に対応する情報である。たとえば、1行目のログ指示「100,0,“プログラムA開始”」は、入出力番号「100」つまりアプリケーションで、動作番号「0」の動作つまり「情報」を生成し、動作詳細が「プログラムA開始」つまりプログラムAが開始されたことを示している。2行目のログ指示は「100,0,“従業員コード=%06d”,138」であり、3行目のログ指示は「100,0,“プログラムA終了(終了コード=%03d)”,0」である。
ログ例59に示した個々のログは、それぞれログ指示例58に示したログ指示に対応するログであり、図10に示した例と同様に、カンマで区切られた複数の数値または文字列から構成される。最初の数値または文字列は、ログ対象の動作があった日時、2番目の数値または文字列は、入出力部名、3番目の数値または文字列は、動作名、4番目の数値または文字列は、各動作の内容を詳細に示す動作詳細である。たとえば、1行目には、「2006/05/26,10:13:59.022,“core”,“message”,“プログラムA開始”」と示され、2行目には、「2006/05/26,10:14:21.924,“core”,“message”,“従業員コード=000138”」と示され、3行目には、「2006/05/26,10:20:11.311,“core”,“message”,“プログラムA終了(終了コード=000)”」と示されている。
図13は、図2に示したサポート機20の構成の一例を示すブロック図である。サポート機20は、ログ読取部21、バッファ部22、ログ解析部23、画面イメージファイルDB(database)24、表示部S25、操作部26、文字列変換テーブル部S27、ログ再生制御部28、図示しないCPU、および図示しないメモリを含む。サポート機20は、LAN5を介して、ターゲット機10に接続される。
ログ読取部21は、ターゲット機10に含まれるログファイル部T15からログを読み取る。バッファ部22は、ログ読取部21に読み取られたログを記憶する。ログ解析部23は、ログの解析を行う。画面イメージファイルDB(以下「画面イメージファイルデータベース」ともいう)24は、ログを記録したターゲット機10の表示画面と同じまたは同等の複数の画面の画像イメージ(以下「画面イメージ」ともいう)およびその画像イメージを管理するための後述する画面テーブルを記憶する。表示部S25は、たとえば液晶ディスプレイなどで構成され、画像を表示する。操作部26は、たとえばキーボードあるいはマウスなどよって構成され、ログ再生および表示内容について指示を入力するための入力装置である。文字列変換テーブル部S27は、たとえば図示しないメモリに含まれ、ログ文字列から動作を特定するためにログ解析部23によって参照される後述する変換テーブルを記憶する。
ログ再生制御部28は、図示しないメモリによって記憶されるプログラムが、図示しないCPUによって実行されることによって実現される機能であり、ログ読取部21、バッファ部22、ログ解析部23、画面イメージファイルDB24、表示部S25、および操作部26を制御する。ログ解析部23も、図示しないメモリによって記憶されるプログラムが、図示しないCPUによって実行されることによって実現される機能である。図示しないメモリは、たとえばROMあるいはRAMなどの半導体メモリあるいはハードディスク装置によって構成される記憶装置である。バッファ部22および画面イメージファイルDB24は、図示しないメモリに含まれる。
図14は、図13に示した表示部S25に表示される再生画面70を示す図である。再生画面70は、画面表示部71、キー操作表示部72、入出力表示部73、および再生ポインタ74を含む。画面表示部71は、ターゲット機10の表示部T113に表示される画像と同じ画像を表示する領域である。キー操作表示部72は、ターゲット機10のキー部112を表す画像を表示する領域である。入出力表示部73は、ターゲット機10の入出力部11に入出力された情報のうちタッチパネル部111およびキー部112によって入力された情報を除く入出力情報、たとえば入出力部11に含まれる各通信部によって入出力された情報を表示するための領域である。再生ポインタ74は、すべてのログを再生する場合、現在再生しているログの相対位置を示すポインタである。
ログ再生制御部28は、ログ再生を行う際、ターゲット機10上の表示部T113に表示されていた画面を、画面表示部71に表示する。ターゲット機10上でタッチパネルあるいはマウスによって座標指定が行なわれた場合、指定された座標位置を指、矢印、あるいは記号などのポインタによって特定する。ターゲット機10のキー部112で入力されたキーが操作された場合、入力値がポインタによって特定されるようにキー操作表示部72に表示する。さらに、ターゲット機10の入出力部11に含まれる各通信部で通信された情報を、入出力表示部73に文字列化して表示する。
図15は、図13に示したログ再生制御部28で用いられる検索方法定義テーブル60を示す図である。検索方法定義テーブル60は、指定された再生条件に基づいて、ログの検索方法を決定するためのテーブルであり、「再生条件指定」ごとに「検索方法」が示されている。図15には、再生条件指定「再生開始日時の指定」について、検索方法「ログ行の日時と指定日時の比較」が示され、再生条件指定「特定従業員の指定」について、検索方法「"従業員コード="文字列との一致を検索」が示され、再生条件指定「外部デバイスの特定通信内容」について、検索方法「入出力部ログ文字列と動作詳細文字列との一致を検索」が示されている。
操作者が操作部26からログの再生を指示すると、ログ再生制御部28は、表示部S25に再生させるログのログファイル名を選択させる画面を、表示部S25に表示する。操作部26によってログファイル名が選択されると、選択されたログファイルを、ログ読取部21によって、ターゲット機10に含まれるログファイル部T15からバッファ部22に読み込む。選択されたログファイルが複数である場合、選択された全ログファイルをバッファ部22に読み込み、日時によってログをソートする。
次に、ログ再生制御部28は、再生条件を入力させる画面を、表示部S25に表示する。再生条件には、図15に示した再生条件があり、たとえばログの開始から終了までのうちの任意の日時のログを再生するという条件、あるいはログ中で指定の文字列と一致するログを再生するという条件を指定することができる。再生条件が指定されると、指定された再生条件を満たすログを検索する。
ログ再生制御部28は、ログ解析部23によって、検索した各ログについて、ログが示す動作がどのようなものであったかを解析する。ログの示す動作が画面表示に関係するものである場合、画面イメージファイルDB24から、ログに含まれる画面表示についての情報が示す画面イメージを取得し、取得した画面イメージを画面表示部71に表示する。操作が伴っていれば、表示されている画面イメージに重畳して、その操作の操作位置を示すための指などのポインタを表示する。ログ再生制御部28は、検索したログを時系列に順次再生する。
ユーザは、操作部26によって、順次再生されているログを任意の時点で停止することができ、さらに停止時点から再開することができる。1つのログを表示してから次のログを表示する時間を、ログの日時に基づいて調整することによって、実時間での動作として再現することができる。その時間を短くすることによって高速再生、あるいはその時間を長くすることによってスロー再生も可能である。
図16は、図13に示した画面イメージファイルDB24に記憶される画面テーブル61の一例を示す図である。画面テーブル61は、画面を特定するための情報である画面情報と、画面イメージを格納するファイルを特定するための画面イメージファイル名とを対にして構成したテーブルであり、ログに基づいて、ログ記録時に表示されていた画面を特定して、再生イメージを生成するために使用される。画面イメージファイル名は、予め画面イメージ毎に定められたファイルの名称であり、画面イメージファイル名が示すファイルに、ターゲット機10上で表示される画面と同じまたは同等の画面の画像イメージが記録される。
図16に示した画面情報を、図5に示した画像管理テーブル51における表示画像番号と同じ画像番号にすることによって、ログ記録時の表示画面とログ再生時の表示画面とを一致させることができる。ログに含まれる画面表示についての情報は、ログが記録された時点でターゲット機10の画面に表示されていた画面イメージを導き出せる一意の情報であり、画面テーブル61における画面情報のいずれかの画面情報を特定している。ログが記録された時点でターゲット機10の画面に表示されていた画面イメージを収めたファイルのファイル名、またはそのイメージを特定することができるなんらかの情報を収めたファイルのファイル名が、画面テーブル61の画面イメージファイル名に示されている。したがって、特定された画面情報に対応する画面イメージファイル名の画面イメージを、画面イメージファイルDB24から読み出して、表示部S25に表示すれば、ログが記録された時点でターゲット機10の画面に表示されていた画面イメージを再生することができる。
画面イメージファイル名の画面イメージのイメージ形式は、たとえばPNG(Portable
Network Graphics)形式、GIF(Graphic Interchange Format)形式、あるいはJPEG(Joint Photographic Experts Group)形式など様々なフォーマットを利用することができる。
図16には、画面情報「画面0001」の画面イメージファイルとして「0001.PNG」が示され、画面情報「画面0002」の画面イメージファイルとして「0002.GIF」が示され、画面情報「画面0003」の画面イメージファイルとして「0003.JPG」が示されている。
図17は、図14に示した画面表示部71に表示される再生画面70の生成手順の一例を模式的に示す図である。ログ再生制御部28は、図16に示した画面テーブル61を使用して、ターゲット機10からバッファ部22に読み込んだログファイルのログから、ログが記録された際に表示されていたターゲット機10上の画面を導き出す。
図17には、ログファイル15a、画面イメージファイルデータベース24a、および再生イメージ70a、および再生イメージ70bが示されている。ログファイル15aには、2つのログ「 2006/05/22,14:49:42.789,“display”,“change”,“display=画面0001”」および「2006/05/22,14:53:02.024,“display”,“change”,“display=画面0002”」が記録されている。画面イメージファイルデータベース24aには、画面テーブル61、画面イメージ「0001.PNG」、画面イメージ「0002.GIF」、および画面イメージ「0003.JPG」が記憶されている。
ログ再生制御部28は、たとえばバッファ部22に読み込んだログファイル15aの最初のログを、ログ解析部23によって解析すると、「2006年5月22日14時49分42.789秒」に「画面0001」を表示したことが判明する。画面情報「画面0001」をキーとして、画面イメージファイルデータベース24aで検索を行い、関連する画面イメージファイル名「0001.PNG」を得る。すなわち、当該ログ記録時にターゲット機10上で表示された画面はファイル「0001.PNG」の画像イメージであることが導かれる。ログ再生制御部28は、画面イメージファイル名「0001.PNG」の画像イメージを、画面イメージファイルデータベース24aから取得し、再生イメージ70aとして表示部S25に表示する。同様に、2つ目のログについて、再生イメージ70bを表示部S25に表示する。
再生イメージ70aは、「2006年5月22日14時49分42.789秒」にターゲット機10の表示部T113に表示された画像イメージ「画面0001」であり、再生イメージ70bは、「2006年5月22日14時53分02.024秒」にターゲット機10の表示部T113に表示された画像イメージ「画面0002」である。
図18は、図13に示した画面イメージファイルDB24に記憶される他の画面テーブル62の例を示す図である。画面テーブル62は、画面のうち背景を特定するための情報、または部品となるウィンドウを特定するための情報によって定義される画面情報と、画面イメージを格納するファイルを特定するための画面イメージファイル名とを対にして構成したテーブルであり、図16に示した画面テーブル61と同様に、ログからログ記録時に表示されていた画面を特定して、再生イメージを生成するために使用される。画面イメージファイル名は、予め画面イメージ毎に定められたファイルの名称であり、画面イメージファイル名が示すファイルに、ターゲット機10上で表示される画面の背景またはウィンドウ・ボタン・テキストなどの部品と同じまたは同等の画像イメージが記録される。
図18には、画面情報「背景0001」の画面イメージファイルとして「B0001.PNG」が示され、画面情報「背景0002」の画面イメージファイルとして「B0002.PNG」が示され、画面情報「背景0003」の画面イメージファイルとして「B0003.PNG」が示され、画面情報「ウィンドウ0001」の画面イメージファイルとして「W0001.PNG」が示され、画面情報「ウィンドウ0002」の画面イメージファイルとして「W0002.PNG」が示されている。
画面テーブル62が、図16に示した画面テーブル61と異なる点は、画面テーブル62のイメージファイル名が指すイメージファイルは、画面に表示される画像イメージ全体のうち一部を示す構成要素となっているところである。再生イメージの生成は、背景として使用される画像イメージと背景の前方に表示するウィンドウの画像イメージとを組み合わせて生成される。すなわち、ログに記録される複数の画面情報から得られる複数の画像イメージが重畳されたものである。したがって、画像イメージを共通に利用することができるので、画面イメージファイルデータベース24に記憶する画像イメージの数の削減あるいは各データのデータサイズを減少させることができる。
図19は、図14に示した画面表示部71に表示される再生画面の生成手順の他の例を模式的に示す図である。ログ再生制御部28は、図18に示した画面テーブル62を使用して、ターゲット機10からバッファ部22に読み込んだログファイルのログから、ログが記録された際に表示されていたターゲット機10上の画面を導き出す。
図19には、ログファイル15b、画面イメージファイルデータベース24b、および再生イメージ70c、および再生イメージ70dが示されている。ログファイル15bには、2つのログ「2006/05/22,14:49:42.789, “display”,“display=背景0001,ウィンドウ0001(x=0132,y=0024”」および「2006/05/22,14:53:02.024, “display”,“display=背景0001,ウィンドウ0002(x=0132,y=0024”」が記録されている。画面イメージファイルデータベース24bには、画面テーブル62、画面イメージ「B0001.PNG」、画面イメージ「W0001.PNG」、および画面イメージ「W0002.PNG」が記憶されている。
ログ再生制御部28は、たとえばバッファ部22に読み込んだログファイル15bの最初のログを、ログ解析部23によって解析すると、「2006年5月22日14時49分42.789秒」に「背景0001」と「ウィンドウ0001」とを表示したことがわかる。画面情報「背景0001」をキーとして、画面イメージファイルデータベース24bで検索を行い、関連する画面イメージファイル名「B0001.PNG」を得る。同様に、画面情報「ウィンドウ0001」をキーとして検索し、画面イメージファイル名「W0001.PNG」を得る。ログ再生制御部28は、画面イメージファイル名「B0001.PNG」の画像イメージと、画面イメージファイル名「W0001.PNG」の画像イメージとを、画面イメージファイルデータベース24bから取得し、2つの画像イメージを重畳して、再生イメージ70cとして表示部S25に表示し、該ログ記録時にターゲット機上で表示された画面を再生する。同様に、2つ目のログについて、再生イメージ70dを表示部S25に表示する。
再生イメージ70cは、「2006年5月22日14時49分42.789秒」にターゲット機10の表示部T113に表示された画像イメージ「背景0001」および「ウィンドウ0001」であり、再生イメージ70dは、「2006年5月22日14時53分02.024秒」にターゲット機10の表示部T113に表示された画像イメージ「背景0001」および「ウィンドウ0002」である。
図20は、図13に示した文字列変換テーブル部S27に記憶される入出力部特定テーブル63を示す図である。入出力部特定テーブル63は、「入出力部名ログ文字列」に対応する「入出力部番号」を示すテーブルである。入出力部特定テーブル63の右側に備考として、それぞれの入出力部名を記載する。入出力部特定テーブル63は、ログ解析部23が解析を行う際に用いるテーブルであり、図7に示した入出力部名定義テーブル53による変換と逆の変換を行うためのテーブルである。
図20には、「タッチパネル」を意味する、入出力部名ログ文字列「“operation”」に対して、入出力部番号「001」、「シリアル通信部1」を意味する、入出力部名ログ文字列「“serial1”」に対して、入出力部番号「011」、「シリアル通信部2」を意味する、入出力部名ログ文字列「“serial2”」に対して、入出力部番号「012」、「シリアル通信部3」を意味する、入出力部名ログ文字列「“extserial”」に対して、入出力部番号「013」、「表示部」を意味する、入出力部名ログ文字列「“display”」に対して、入出力部番号「021」、「SS−LAN通信部」を意味する、入出力部名ログ文字列「“sslan”」に対して、入出力部番号「031」、「アプリケーション」を意味する、入出力部名ログ文字列「“core”」に対して、入出力部番号「100」が示されている。
図21は、図13に示した文字列変換テーブル部S27に記憶される動作特定テーブル64を示す図である。動作特定テーブル64は、「動作名ログ文字列」に対応する「動作番号」を示すテーブルである。動作特定テーブル64の右側に備考として、それぞれの動作名を記載する。動作特定テーブル64は、図8に示した動作名定義テーブル54による変換と逆の変換を行うためのテーブルである。
図21には、「情報」を意味する、動作名ログ文字列「“message”」に対して、動作番号「000」、「触れる」を意味する、動作名ログ文字列「“pressed”」に対して、動作番号「001」、「離す」を意味する、動作名ログ文字列「“released”」に対して、動作番号「002」、「入力」を意味する、動作名ログ文字列「“read”」に対して、動作番号「011」、「出力」を意味する、動作名ログ文字列「“write”」に対して、動作番号「012」、「エラー」を意味する、動作名ログ文字列「“error”」に対して、動作番号「021」、「画面変更」を意味する、動作名ログ文字列「“change”」に対して、動作番号「031」が示されている。
図22は、図13に示した文字列変換テーブル部S27に記憶される動作解析テーブル65を示す図である。動作解析テーブル65は、「入出力部」と「動作」との組合せごとに、「動作詳細ログの意味」を示すテーブルであり、ログに動作詳細文字列として記録されたものから、各入出力部でどのような動作が行われたかを特定するために用いられる。動作解析テーブル65の右側に備考として、それぞれのログの意味を記載している。動作解析テーブル65は、ログ解析部23が解析を行う際に用いるテーブルであり、図9に示した動作詳細作成ルールテーブル55で行われた変換と逆の変換を行うためのものである。
図22には、入出力部「001」と動作「001」との組合せについては、「タッチパネル座標(X,Y)に触れた」を意味し、動作詳細ログの意味が「“x=%04d,y=%04d”形式で数値は座標X、Y」である。同様に、入出力部と動作との各組合せについての動作詳細ログの意味は、入出力部「001」と動作「002」との組合せについては、「タッチパネル座標(X,Y)で離した」を意味し、動作詳細は「“x=%04d,y=%04d”形式で数値は座標X、Y」であり、入出力部「011」と動作「011」との組合せについては、「シリアル通信部1において外部機器との通信で入力があった」を意味し、動作詳細は「16進数形式で通信内容」であり、入出力部「011」と動作「012」との組合せについては、「シリアル通信部1において外部機器に通信で出力した」を意味し、動作詳細は「16進数形式で通信内容」であり、入出力部「011」と動作「021」との組合せについては、「シリアル通信部1においてエラー発生」を意味し、動作詳細は「10進数形式でエラーコード」であり、入出力部「021」と動作「031」との組合せについては、「表示部で画面を表示した」を意味し、動作詳細は「“display=%04d”形式で数値は画面番号D」であり、入出力部「031」と動作「011」との組合せについては、「SS−LAN通信部において外部機器との通信で入力があった」を意味し、動作詳細は「16進数形式で通信内容」であり、入出力部「031」と動作「012」との組合せについては、「SS−LAN通信部において外部機器に通信で出力した」を意味し、動作詳細は「16進数形式で通信内容」であり、入出力部「100」と動作「000」との組合せについては、「アプリケーション情報」を意味し、動作詳細は「文字のまま出力する」である。
ログ解析部23は、ログの入出力名に対応する入出力部番号を図20に示した入出力部特定テーブル63から抽出し、ログの動作名に対応する動作番号を図21に示した動作特定テーブル64から抽出し、さらに抽出した入出力部番号および動作番号の組合せに対応する動作を図21に示した動作解析テーブル65によって特定する。
ログ再生制御部28は、ターゲット機10の入出力部11に含まれる各通信部で通信された情報の場合、ログの動作詳細に示された情報を、入出力表示部73に文字列化して表示する。画面の表示が行われたログである場合、図17または図19に示したように、ログの動作詳細に対応する画面番号を画面イメージファイルDB24から取得し、取得した表示画面を表示部S25に再生表示する。
さらに、タッチパネル部111またはキー部112に対する操作のログの場合、ログの動作詳細が示す位置をポインタによって特定して示すことによって、表示部S25に表示された画面イメージの中の操作ボタンまたはキーのうち、操作された操作ボタンまたはキーを示すことができる。1つの操作を行った後次の操作を行う場合、1つの操作の位置と次の操作の位置とを結ぶ経路上に、ポインタの残像を1つの操作の位置から次の操作の位置まで順次移動させて表示することによって、ポインタの移動の追尾を可能にする。
図23は、図1に示した不正監視システム1の基礎となるログ記録再生システム9の他の構成を模式的に示す図である。図23に示したログ記録再生システム9は、ログファイルをターゲット機外の記憶装置に記憶するものであり、LAN5でそれぞれ接続されるターゲット機10a、サポート機20、およびネットワークディスク40を含む。サポート機20は、図4に示したサポート機20と同じであり、図示していない。ターゲット機10aは、図4に示したターゲット機10のログファイル部T15をなくしたものである。ログ送信部18は、図4に示したLAN通信部114と同じであり、ログ生成部121で生成されたログを、LAN5などのネットワークあるいは公衆回線に接続されているネットワークディスク40に送信する。
ネットワークディスク40は、LAN5に接続され、ログファイル部N41およびログ通信部N42を含む。ログファイル部N41は、たとえばハードディスク装置などの記憶装置によって構成され、ログ通信部N42がターゲット機10aから受信したログを記憶する。ログ通信部N42は、LAN5に接続される他の機器たとえばターゲット機10aおよびサポート機20と、データを送受信する通信部である。これによって、ターゲット機10a内部に記憶領域を設けなくても、ログ記録を行うことができる。
図24は、図1に示した不正監視システム1の基礎となるログ記録再生システム9のさらに他の構成を模式的に示す図である。図24に示したログ記録再生システム9は、ログファイルをなくしたシステムであり、LAN5によってそれぞれ接続されるターゲット機10bおよびサポート機20aを含む。ターゲット機10bは、図23に示したターゲット機10aと同じであり説明は省略する。サポート機20aは、図25で詳述するが、図13に示したサポート機20のログ読取部21およびバッファ部22の代わりにログ受信部S29を設けたものである。ターゲット機10bは、生成したログを記憶することなく、ログ送信部18によってサポート機20aに送信する。
図25は、図24に示したサポート機20aの構成の一例を示すブロック図である。図13に示したサポート機20のログ読取部21およびバッファ部22の代わりにログ受信部S29を設けたものである。サポート機20aのログ受信部S29は、ターゲット機10bから送信されたログを受信し、ログ解析部23に送る。ログ解析部23は、ログ受信部S29から受け取ったログを解析し、解析結果をログ再生制御部28に送る。ログ再生制御部28は、ログ解析部23から受け取った解析結果に基づいて表示を行う。すなわち、ログ表示システム3は、ターゲット機10bで行われた操作を、リアルタイムでサポート機20aの表示部S25に表示することができる。したがって、ターゲット機10bと離れた場所で、ターゲット機10bでの動作を監視することができる。ログを監視する用途に使用することが簡単になる。
図26は、図4に示した入出力部11の入出力ログ指示作成処理のフローチャートである。入出力部11がログ指示に関する処理を行うとき、ステップA1に移る。ステップA1では、ハードウェアまたはソフトウェア割込みを待つ。ステップA2では、割込みがあったか否かを判定する。割込みがあると、ステップA3に進み、割込みがないと、ステップA1に戻る。ステップA3では、割込みについて処理を行う。ステップA4では、割込みを発生した処理内容に基づいてログ指示を作成する。ステップA5では、ログ指示をログ生成部121に通知して終了する。
図27は、図4に示したアプリケーション部14のログ指示作成処理のフローチャートである。アプリケーション部14が、表示部T113の画面に表示を行うとき、ステップB1に移る。画面表示を行うには、表示制御部16に対して表示画像番号を通知することによって、表示する画面を指定する。この指定は、ターゲット機10上で動作する任意のアプリケーションによって行われる。
ステップB1では、表示画像番号を基に画像データ部141から、図5に示した画像管理テーブル51によって特定される画像データを取得する。ステップB2では、表示部T113に合わせて画像データを調整する。調整とは、画像は、全体または一部であり、表示部T113の表示能力に合わせて、画像を拡大、縮小、あるいは重ね合せることである。ステップB3では、調整した画像データを表示部T113に表示する。ステップB4では、表示画像番号に基づいてログ指示を作成する。ステップB5では、生成したログ指示をログ生成部121へ通知して終了する。
図28は、図4に示したログ記録制御部12のログ監視処理のフローチャートである。ログ記録制御部12は、入出力部11内の各部を監視し、ログ対象の動作のログを生成するために、ステップC1に移る。
ステップC1では、ログ設定部124からログ設定を取得する。ログ設定には、ログの対象、たとえば入出力部11に関する動作全て、あるいはエラーが設定されており、ログ設定にログ対象を設定しておくことによって、ログ対象の動作を選択することができる。ステップC2では、入出力部11の動作を確認する。すなわち、入出力部11内の各部の動作を監視する。ステップC3では、ログ対象動作があったか否かを判定する。ログ対象動作があると、ステップC4に進み、ログ対象動作がないと、ステップC2に戻る。
ステップC4では、ログ対象の動作について、ログを生成する。ステップC5では、ログ設定に記録先ログファイルの指定があるか否かを判定する。指定があると、ステップC7に進み、指定がないと、ステップC6に進む。ステップC6では、生成したログを標準ログファイル151に記録して終了する。ステップC7では、生成したログを指定ログファイル152に記録して終了する。
図29は、図4に示したログ記録制御部12のログ記録処理のフローチャートである。入出力部11または表示制御部16からのログ指示を監視するとき、ステップD1に移る。
ステップD1では、ログ指示を待つ。ステップD2では、ログ指示があったか否かを判定する。ログ指示があると、ステップD3に進み、ログ指示がないと、ステップD1に戻る。ステップD3では、ログ設定部124からログ設定を取得する。ステップD4では、ログ指示がログ対象のログ指示か否かを判定する。ログ対象であると、ステップD5に進み、ログ対象でないと、ステップD1に戻る。
ステップD5では、検出したログ対象の動作について、ログを生成する。ステップD6では、ログ設定に記録先ログファイルの指定があるか否かを判定する。指定があると、ステップD8に進み、指定がないと、ステップD7に進む。ステップC7では、生成したログを標準ログファイル151に記録して終了する。ステップC8では、生成したログを指定ログファイル152に記録して終了する。
図28と図29とに示した両フローチャートは、ともにログ記録制御部12による処理であるが、別々のタスクで動作する。しかし、各フローチャートの開始を他のフローチャートの終了に繋げて1つのタスクとして連続して動作してもよい。
図30は、図4に示したログ生成部121のログ生成処理のフローチャートである。
図28に示したステップC4または図29に示したステップD5でログを生成する際に、呼び出され、ステップE1に移る。したがって、ログ対象のログ指示またはログ対象の動作が特定された状態で処理が開始される。
ステップE1では、システムタイマ部13から現在の日時を取得する。日時は、必ずしもシステムタイマ部13による日時である必要はなく、ログの対象となる動作が発生した日時を特定することができる何らかの一意な日時を使用してもよい。一意な日時とは、たとえばターゲット機10が動作を開始してからの経過時間、同一ネットワーク上のサーバ機の時計による日時あるいはそのサーバの稼動時間である。
ステップE2では、取得した日時から日時ログ文字列を作成する。ステップE3では、図7に示した入出力部名定義テーブル53を参照して、入出力部番号に対応する入出力部ログ文字列を取得する。ステップE4では、図8に示した動作名定義テーブル54を参照して、動作番号に対応する動作ログ文字列を取得する。ステップE5では、図9に示した動作詳細作成ルールテーブル55を参照して、入出力部番号と動作番号との組合せに対応する動作詳細ログ文字列の作成ルールつまり動作詳細のログ作成ルールを取得する。
ステップE6では、取得した動作詳細のログ作成ルールに基づき、動作詳細のログ文字列を作成する。ステップE7では、ステップE2で作成した日時ログ文字列、ステップE3で取得した入出力部ログ文字列、ステップE4で取得した動作ログ文字列、およびステップE6で作成した動作詳細ログ文字列を結合してログを生成し、終了する。
図31は、図13に示したログ再生制御部28のログ再生処理のフローチャートである。たとえば操作部26によって、ログの再生を行う機能が選択されると、ステップF1に移る。
ステップF1では、表示部S25に、再生するログファイル名を選択させるためのログファイル名選択画面を表示する。ステップF2では、操作部26によってログファイル名が選択されるのを待つ。ステップF1に移る前に、たとえばログの再生を行う機能が選択される前に、再生するログファイルが指定されていれば、ステップF1およびステップF2をスキップしてもよい。
ステップF3では、複数のログファイルが選択されたか否かを判定する。複数のログファイルが選択されると、ステップF19に進み、1つのログファイルが選択されると、ステップF4に進む。ステップF4では、選択されたログファイルをバッファ部22に読み込む。ステップF5では、バッファ部22から、ログの記録が開始された日時と終了した日時つまり最後に記録された日時とを取得する。バッファ部22内のログは、日時順にソートされているので、それぞれ先頭行の日時と最終行の日時とを取得する。
ステップF6では、再生条件を入力させるための再生条件入力画面を表示する。再生条件は、たとえばログの開始から終了までのうちの入力された日時のログを再生するという条件、あるいは入力された文字列と一致するまたは含むログを再生するという条件である。ステップF7では、再生条件の指定があるか否かを判定する。再生条件の指定があると、ステップF8に進み、再生条件の指定がないと、ステップF20に進む。ステップF8では、バッファ部22内のログから指定された再生条件に合致するログを検索し、バッファ部22の先頭のログを第1行としたとき、検索されたログの行番号の値から「1」引いた値をカウンタ「n」に代入する。
ステップF9では、カウンタ「n」に「1」を加え、ポインタを次の行に進める。ステップF10では、バッファ部22から「n」行目のログを1行分読取る。ステップF11では、読み取ったログをログ解析部23で解析する。解析によって、ログが示す動作がどのようなものであったかを明らかにする。ステップF12では、再生に別の行のログが必要であるか否かを判定する。1つの動作が2行以上のログに分割記録されていることがあるので、別の行が必要であるか否かを判定する。ログが不足すると再生することができないケースがある。別の行のログが必要であると、ステップF9に戻り、別の行のログが必要でないと、ステップF13に進む。
ステップF13では、画面表示のログか否か、つまりログの示す動作が画面表示に関係するものである否かを判定する。画面表示のログの場合、ステップF14に進み、画面表示のログでない場合、ステップF15に進む。ステップF14では、ログに画面イメージについての情報が含まれているので、その情報が示す画面イメージを画面イメージファイルDB24から取得する。ステップF15では、取得した画面イメージとログが示す動作とから表示する再生画面イメージを生成する。ステップF16では、生成した再生画面イメージを表示部S25に表示する。
ステップF17では、バッファ部22内のログを全て読み取ったか否かを判定する。ログを全て読み取っていない場合、ステップF18に進み、ログを全て読み取った場合、終了する。終了と同時に開始に戻り、ログファイル選択画面の表示を行うこともできる。ステップF18では、ウェイトw秒待ち、ステップF9に戻る。ステップF19では、選択された全ログファイルをバッファ部22に読み込み、ログ各行の日時をキーとしてログをソートし、ステップF5に進む。ステップF20では、カウンタ「n」に「0」を代入して、ステップF9に進む。
図31に示した処理は、操作部26による操作によって任意の場面で終了することができ、さらに一時的に停止および一時停止からの再実行を行うことができる。さらに、ログファイルの選択とともに、ログファイル内のログをファイルサイズ、行数、またはログに記録された日時によって指定することができ、ログファイルからのログの読み取りを、ログファイル中の任意のログから開始することも可能である。
再生速度については、図31に示した各ステップ間、ループ中、あるいはジャンプ前後に、操作部26によって指定した任意時間または一定時間、たとえばウェイトw秒を挿入することも可能であり、これによって再生速度の調整を行うことができる。ウェイトに使用する時間wを、ログに記録された日時に基づいて設定することによって、ログの実時間再生も可能である。wの値は、フローチャートの処理を開始する時に、またはステップF9からステップF18のループ処理中に、操作部26によって任意に変更することができる。
図32は、図1に示した監視端末2と記録・警告装置4とが関係する部分の構成を示すブロック図である。不正監視システム1は、リアルタイムで店舗システム3を監視するため、ログ記録再生システム9の構成のうち、図24に示した構成をとる。リアルタイムが要求されない場合は、図4あるいは図23の構成のようにログファイルに記録し、それを読み出してもよい。
監視端末2は、ログ監視制御部200、LAN通信部210、監視端末システムタイマ211、アドレス情報ファイル212、警告音声ファイル213、撮影画像ファイル214、および録音音声ファイル215を含む。ログ監視制御部200は、ログ解析部201、機器制御部202、および記録部203を含み、ログを解析することによって、図示しない外部機器30における物品あるいは現金の過不足を検出し、過不足を検出すると、記録・警告機器4を制御する。
ログ解析部201は、LAN通信部210がLAN5を介して図示しないPOS端末6から受信するログを解析し、外部機器30における物品あるいは現金の過不足を検出する。外部機器30における物品あるいは現金の過不足を検出すると、機器制御部202に記録および警告の制御を指示する。機器制御部202に記録および警告の制御を指示する際、検出した日時を監視端末システムタイマ211から取得し、ログから得た監視対象機器番号および監視端末システムタイマ211から取得した日時を機器制御部202に知らせる。監視対象機器番号は、監視対象機器である店舗システム3を識別するために、店舗システム3ごとに付与される番号である。
機器制御部202は、ログ解析部201から記録および警告の制御の指示を受けると、記録および警告を指示すべき外部機器30を、知らされた監視対象機器番号から、アドレス情報ファイル212に記憶される情報たとえば後述するアドレス情報テーブル66に基づいて特定し、特定した外部機器30に対応する記録・警告機器4に記録および警告を指示する。警告を指示する際、警告音声ファイル213から警告のための警告音情報を読み出して、特定された外部機器30に対応する記録・警告機器4に送信する。そして、ログ解析部201から知らされた日時は、記録部203に知らせる。記録部203は、記録・警告機器4から受信した情報を記憶する。記録・警告機器4から受信した情報のうち、画像情報は撮影画像ファイル214に記憶し、音情報は録音音声ファイル215に記憶する。画像情報あるいは音情報を記憶する際、機器制御部202から知らされた日時とともに対応付けて記憶する。
アドレス情報ファイル212、警告音声ファイル213、撮影画像ファイル214、および録音音声ファイル215は、図13に示したサポート機20たとえば監視端末2の図示しないメモリたとえば磁気ディスク装置など不揮発性の記憶装置に記憶されるファイルである。アドレス情報ファイル212は、図35で後述するアドレス情報テーブル66を記憶する。警告音声ファイル213は、外部機器30のスピーカ403から出力するための音を表す音情報を記憶する。撮影画像ファイル214は、外部機器30のカメラ401で撮影された画像を表す画像情報を記憶するためのファイルである。録音音声ファイル215は、外部機器30のマイク402で収集された音を表す音情報を記憶するためのファイルである。
記録・警告装置4は、カメラ401、マイク402、およびスピーカ403を含む。カメラ401は、監視装置2からの指示によって、監視対象機器である外部機器30の周辺つまり外部機器30を操作する人がいる範囲を撮影し、撮影した画像を表す画像情報を監視装置2に送信する。マイク402は、監視装置2からの指示によって、監視対象機器である外部機器30の周辺つまり外部機器30を操作する人の会話および外部機器30で生じる音などの音情報を収集し、収集した音情報を監視装置2に送信する。スピーカ403は、監視装置2から受信する警告音情報を出力し、不正な操作が行われたことを報知する。
図33は、図4に示した釣銭機36の構成を示すブロック図である。釣銭機36は、釣銭機通信制御部361、入出金制御部362、釣銭機システムタイマ363、現金保管庫364、現金収受部365、釣銭機取引メモリ366、釣銭機異常時メモリ367、および釣銭機起動時メモリ368を含む。釣銭機通信制御部361は、POS端末6と通信を行い、送受信する情報を入出金制御部362と受け渡しする。
入出金制御部362は、釣銭機36に対する取引の操作が行われると、現金収受部365に現金の収受を指示し、現金の収受が行われた後の現金保管庫364に保管される現金の残高を確認し、取引が行われた日時を釣銭機システムタイマ363から取得する。確認した残高と、釣銭機システムタイマ363から取得した日時とをログ元データとして、釣銭機通信制御部361によって、POS端末6に送信する。そして、確認した残高は、釣銭機取引メモリ366に記憶する。さらに、釣銭機36の電源が投入されたとき、およびPOS端末6との通信で障害を検出したとき、現金保管庫364に保管される現金の残高および日時を、ログ元データとして、釣銭機通信制御部361によって、POS端末6に送信する。
釣銭機システムタイマ363は、日時を計時し、計時された日時は、入出金制御部362によって参照される。釣銭機取引メモリ366は、取引後の残高を記憶するためのメモリである。釣銭機異常時メモリ367は、通信に障害が検出されたときの現金の残高および日時を記憶するためのメモリである。釣銭機起動時メモリ368は、電源が投入された直後の現金の残高および日時を記憶するためのメモリである。
図34は、図4に示した自動販売機39の構成を示すブロック図である。自動販売機39は、自販機通信制御部391、入出庫制御部392、自販機システムタイマ393、物品保管庫394、物品収受部395、自販機取引メモリ396、自販機異常時メモリ397、および自販機起動時メモリ398を含む。自販機通信制御部361は、POS端末6と通信を行い、送受信する情報を入出庫制御部362と受け渡しする。
入出庫制御部392は、自動販売機39に対する取引の操作が行われると、物品収受部395に物品の収受を指示し、物品の収受が行われた後の物品保管庫394に保管される物品の残高を確認し、取引が行われた日時を自販機システムタイマ393から取得する。確認した残高と、自販機システムタイマ393から取得した日時とをログ元データとして、自販機通信制御部391によって、POS端末6に送信する。そして、確認した残高は、自販機取引メモリ396に記憶する。さらに、自動販売機39の電源が投入されたとき、およびPOS端末6との通信で障害を検出したとき、物品保管庫394に保管される物品の残高および日時を、ログ元データとして、自販機通信制御部391によって、POS端末6に送信する。
自販機システムタイマ393は、日時を計時し、計時された日時は、入出庫制御部392によって参照される。自販機取引メモリ396は、取引後の残高を記憶するためのメモリである。自販機異常時メモリ397は、通信に障害が検出されたときの物品の残高および日時を記憶するためのメモリである。自販機起動時メモリ398は、電源が投入された直後の物品の残高および日時を記憶するためのメモリである。
図35は、図32に示したアドレス情報ファイル212に記憶されるアドレス情報テーブル66を示す図である。アドレス情報テーブル66は、監視対象機器番号661、カメラの機器アドレス662、マイクの機器アドレス663、スピーカの機器アドレス664、およびウェイトタイマ665の項目を含む。監視対象機器番号661は、監視対象機器である店舗システム3を識別するための番号である。カメラの機器アドレス662は、監視対象機器である店舗システム3に含まれるカメラ401を識別するための識別情報である。マイクの機器アドレス663は、監視対象機器である店舗システム3に含まれるマイク402を識別するための識別情報である。スピーカの機器アドレス664は、監視対象機器である店舗システム3に含まれるスピーカ403を識別するための識別情報である。ウェイトタイマ665は、マイク402が録音する時間を示す。
図35に示したアドレス情報テーブル66には、監視対象機器番号661「Casher1」について、カメラの機器アドレス「camera1(Adr1)」、マイクの機器アドレス「mike1(Adr2)」、スピーカの機器アドレス「speaker1(Adr3)」、およびウェイトタイマ「wait10」が示され、監視対象機器番号661「Vender1」について、カメラの機器アドレス「camera2(Adr4)」、マイクの機器アドレス「mike2(Adr5)」、スピーカの機器アドレス「speaker2(Adr6)」、およびウェイトタイマ「wait10」が示されている。
図36は、図1に示した外部機器30の取引発生時処理のフローチャートである。外部機器30たとえば釣銭機36または自動販売機39において、取り引きが行われると、ステップG1に移る。ステップG1では、現金または物品が投入されたか否かを判定する。現金または物品が投入されると、ステップG2に進み、現金または物品が投入されないと、ステップG3に進む。ステップG2では、投入された現金の額または物品の数を取引メモリの残高または数量へ加算する。たとえば釣銭機36の場合、釣銭機取引メモリ366に記憶される残高へ加算し、自動販売機39の場合、自販機取引メモリ396に記憶される数量へ加算する。ステップG3では、現金または物品が払い出されたか否かを判定する。現金または物品が払い出されると、ステップG4に進み、現金または物品が払い出されないと、ステップG5に進む。ステップG4では、払い出された現金の額または物品の数量を取引メモリの残高または数量から減算する。
ステップG5では、投入または払い出しが発生したか否かを判定する。投入または払い出しが発生すると、ステップG6に進み、投入または払い出しが発生していないと、取引発生時処理を終了する。ステップG6では、システムタイマから日時を取得する。ステップG7では、取引メモリの残高または数量と日時とをログ元データとしてPOS端末6に送信して、取引発生時処理を終了する。
図37は、図1に示した外部機器30の電源投入時処理のフローチャートである。外部機器30に電源が投入されると、ステップH1に移る。ステップH1では、起動時メモリはクリア済か否かを判定する。すなわち、POS端末6に送信していないログ元データが起動時メモリに記憶されているか否かを判定する。起動時メモリがクリア済であると、ステップH2に進み、起動時メモリがクリア済でないと、ステップH5に進む。
ステップH2では、現金残高または物品収納数量の計数を行う。ステップH3では、システムタイマから日時を取得する。ステップH4では、計数結果および日時を起動時メモリへ保存つまり記憶する。ステップH5では、起動時の残高または数量を日時とともにログ元データとしてPOS端末6に送信する。ステップH6では、通信がOKか否かを判定する。通信がOKでないと、電源投入時処理を終了し、通信がOKであると、ステップH7に進む。ステップH7では、起動時メモリの残高または数量をクリアして電源投入時処理を終了する。
図38は、図1に示した外部機器30の通信エラー処理のフローチャートである。POS端末6との通信を行うと、ステップJ1に移る。ステップJ1では、通信エラーつまり通信障害があったか否かを判定する。通信エラーがあると、ステップJ2へ進み、通信エラーがないと、通信エラー処理を終了する。
ステップJ2では、異常時メモリはクリア済か否かを判定する。すなわち、POS端末6に送信していないログ元データが異常時メモリに記憶されているか否かを判定する。異常時メモリがクリア済であると、ステップJ3に進み、異常時メモリがクリア済でないと、ステップJ6に進む。ステップJ3では、現金残高または物品収納数量の計数を行う。ステップJ4では、システムタイマから日時を取得する。ステップJ5では、計数結果および日時を起動時メモリへ保持つまり記憶する。
ステップJ6では、異常時の残高または数量を日時とともにログ元データとしてPOS端末6に送信する。ステップJ7では、通信がOKか否かを判定する。通信がOKでないと、通信エラー処理を終了し、通信がOKであると、ステップJ8に進む。ステップJ8では、異常時メモリの残高または数量をクリアして通信エラー処理を終了する。
図39は、図1に示したPOS端末6のログ生成処理のフローチャートである。外部機器30からログ元データの送信があると、ステップK1に移る。ステップK1では、外部機器30からログ元データを受信する。ステップK2では、ログ元データに基づいてログを生成する。ステップK3では、生成したログを監視端末2に送信して、ログ生成処理を終了する。リアルタイムでない場合は、ステップK3では、生成したログを標準ログファイル151などに記憶して、ログ生成処理を終了する。
図40は、図1に示した監視端末2の不正監視処理のフローチャートである。不正監視処理を行うために定期的にたとえば1秒ごとに、ステップL1に移る。ステップL1では、変数N1〜N3をクリアする。ステップL2では、POS端末6からログを受信する。ステップL3では、ログ終了か否かを判定する。ログが受信されないと、ログ終了であると判定し、不正監視処理を終了し、ログを受信すると、ログ終了でないと判定し、ステップL4に進む。
ステップL4では、受信したログが外部機器30のうち釣銭機36または自動販売機39のログか否かを判定する。釣銭機36または自動販売機39のログであると、ステップL5に進み、釣銭機36および自動販売機39のいずれのログでもないと、ステップL2に戻る。ステップL5では、取引のログか否かを判定する。取引のログであると、ステップL14に進み、取引のログでないと、ステップL6に進む。ステップL6では、通信エラーのログか否かを判定する。通信エラーのログであると、ステップL7に進み、通信エラーのログでないと、ステップL10に進む。
ステップL7では、残高または数量、および外部機器アドレスを変数N2へセーブする。ステップL8では、変数N1と変数N2とが一致するか否かを判定する。一致すると、ステップL2へ戻り、一致しないと、ステップL9へ進む。ステップL9では、不正警告処理を行う。ステップL10では、電源ONのログか否かを判定する。電源ONのログであると、ステップL11に進み、電源ONのログでないと、ステップL2に戻る。ステップL11では、残高または数量、および外部機器アドレスを変数N3へセーブする。ステップL12では、変数N1と変数N3とが一致するか否かを判定する。一致すると、ステップL2へ戻り、一致しないと、ステップL13へ進む。ステップL13では、不正警告処理を行って、ステップL2に戻る。ステップL14では、残高または数量、および外部機器アドレスを変数N1へセーブして、ステップL2へ戻る。
図41は、図40に示した不正監視処理から呼び出される不正警告処理のフローチャートである。図40に示したステップL9またはステップL13から呼び出されるとステップM1に移る。ステップM1では、アドレス情報ファイル212に記憶されるアドレス情報テーブル66から警告機器の機器アドレスとウェイトタイマとを取得する。ステップM2では、該当機器アドレスのカメラ401に撮影命令を送信する。ステップM3では、該当機器アドレスのマイク402に録音命令を送信する。ステップM4では、警告音声ファイル213から音声ファイルを読み出す。ステップM5では、該当機器アドレスのスピーカ403に、読み出した音声ファイルを送出する。
ステップM6では、ウェイトw秒たとえば10秒待つ。ウェイトw秒は、アドレス情報ファイル212に記憶されるアドレス情報テーブル66から取得したウェイトタイマが示す時間である。ステップM7では、カメラ401から撮影画像ファイルを受信したか否かを判定する。撮影画像ファイルを受信すると、ステップM9に進み、撮影画像ファイルを受信しないと、ステップM8に進む。ステップM8では、マイク402から録音音声ファイルを受信したか否かを判定する。録音音声ファイルを受信すると、ステップM11に進み、録音音声ファイルを受信しないと、不正警告処理を終了する。
ステップM9では、システムタイマを取得する。ステップM10では、受信した撮影画像ファイルを撮影画像ファイル214に保存つまり記憶し、ステップM8に進む。ステップM11では、システムタイマを取得する。ステップM12では、受信した録音音声ファイルを録音音声ファイル215に保存つまり記憶し、不正警告処理を終了する。
図42は、図32に示したカメラ401の画像撮影処理のフローチャートである。撮影が可能になると、ステップN1に移る。ステップN1では、監視端末2から撮影命令を受信したか否かを判定する。撮影命令を受信すると、ステップN2に進み、撮影命令を受信しないと、ステップN1に戻る。ステップN2では、外部機器の周辺を撮影する。ステップN3では、撮影した画像の画像ファイルを監視端末2に送信して、画像撮影処理を終了する。
図43は、図32に示したマイク402の音声録音処理のフローチャートである。録音が可能になると、ステップP1に移る。ステップP1では、監視端末2から録音命令を受信したか否かを判定する。録音命令を受信すると、ステップP2に進み、録音命令を受信しないと、ステップP1に戻る。ステップP2では、外部機器の周囲の音の録音を開始する。ステップP3では、10秒待つ。ステップP4では、録音を終了する。ステップP5では、録音した音の録音ファイルを監視端末2に送信して、音声録音処理を終了する。
図44は、図32に示したスピーカ403の警告音声再生処理のフローチャートである。出力が可能になると、ステップQ1に移る。ステップQ1では、監視端末2から再生命令を受信したか否かを判定する。再生命令を受信すると、ステップQ2に進み、再生命令を受信しないと、ステップQ1に戻る。ステップQ2では、音声を再生して出力し、警告音声再生処理を終了する。
このように、収納手段である釣銭機36または自動販売機39によって、出し入れ可能な監視対象物である現金または物品が収納され、計数手段である入出金制御部362または入手庫制御部392によって、収納手段に収納されている監視対象物の数量が計数され、電源投入検出手段である入出金制御部362または入出庫制御部392によって、電源が投入されたことが検出され、記憶手段である釣銭機取引メモリ366または自販機取引メモリ396によって数量情報が記録され、報知手段であるスピーカ403によって異常が報知される。そして、制御手段である入出金制御部362または入出庫制御部392、および監視端末2によって、収納手段への監視対象物の出し入れが行われた際に収納手段に収納されている監視対象物の数量が計数手段によって計数され、計数手段によって計数された数量を表す数量情報が記憶手段によって記憶される。さらに、電源投入検出手段によって電源が投入されたことが検出されたとき、収納手段に収納されている監視対象物の数量が計数手段によって計数され、電源投入検出時に計数された数量が、記憶手段に記憶される数量情報が示す数量に一致しない場合、監視対象物の数量が一致しないことを表す情報が報知手段によって報知されるので、電源投入直後に監視対象物たとえば収納物品あるいは収納現金の過不足を検出したときに、警告音などによって報知することができる。したがって、物品あるいは現金の不正の抜き取りを抑止することができる。
さらに、収納手段である釣銭機36または自動販売機39によって、出し入れ可能な監視対象物である現金または物品が収納され、計数手段である入出金制御部362または入手庫制御部392によって、収納手段に収納されている監視対象物の数量が計数され、通信障害検出手段である釣銭機通信制御部361または自販機通信制御部391によって、外部装置と通信を行う通信部である釣銭機通信制御部361または自販機通信制御部391での通信の障害が検出され、記憶手段である釣銭機取引メモリ366または自販機取引メモリ396によって情報が記録され、報知手段であるスピーカ403によって情報が報知される。そして、制御手段である入出金制御部362または入出庫制御部392、および監視端末2によって、収納手段への監視対象物の出し入れが行われた際に収納手段に収納されている監視対象物の数量が計数手段によって計数され、計数手段によって計数された数量を表す数量情報が記憶手段によって記憶される。さらに、通信部での通信の障害が通信障害検出手段によって検出されたとき、収納手段に収納されている監視対象物の数量が計数手段によって計数された数量が、記憶手段に記憶される数量情報が示す数量に一致しない場合、監視対象物の数量が一致しないことを表す情報が報知手段によって報知されるので、通信障害発生直後に監視対象物たとえば収納物品あるいは収納現金の過不足を検出したときに、警告音などによって報知することができる。したがって、物品あるいは現金の不正な抜き取りを抑止することができる。
さらにまた、計時手段である釣銭機システムタイマ363または自販機システムタイマ393によって、日時が計時され、前記制御手段によって、計数手段によって計数された数量を表す数量情報を記憶手段に記憶させるとき、計時手段によって計時された日時を表す日時情報を数量情報に対応付けて記憶させるので、過不足が発生していない数量を記憶した日時を特定することができる。したがって、過不足が発生した日時を絞り込むことができる。
さらに、撮影手段であるカメラ401によって、前記収納手段の周囲が撮影され、前記制御手段によって、監視対象物の数量が一致しない場合、撮影手段に収納手段の周囲を撮影させるので、監視対象物たとえば収納物品あるいは収納現金の過不足を検出したとき、収納手段たとえば自動販売機あるいは釣銭機の周囲を撮影することができる。したがって、不正操作発生時の状況証拠を収集することができる。
さらにまた、録音手段であるマイク402によって、前記収納手段の周囲の音が録音され、前記制御手段によって、監視対象物の数量が一致しない場合、録音手段に収納手段の周囲の音を録音させるので、監視対象物たとえば収納物品あるいは収納現金の過不足を検出したとき、収納手段たとえば自動販売機あるいは釣銭機の周囲の音を録音することができる。したがって、不正発生時の状況証拠を収集することができる。