以下、本発明の実施の形態について図面を参照して説明する。以下の説明では同一の部品には同一の符号を付してある。それらの名称および機能も同じである。従ってそれらについての詳細な説明は繰り返さない。
図1は、本発明の実施の形態の一つにおける情報処理システムの全体概要の一例を示す図である。図1を参照して、情報処理システム1は、MFP(Multi Function Peripheral)100と、パーソナルコンピューター(以下「PC」という)300と、内部サーバー200と、検証サーバー500と、を含む。
MFP100は、画像形成装置の一例であり、処理対象となるデータを画像処理する画像処理機能、画像データに基づいて用紙などの記録媒体に画像を形成するための画像形成機能を少なくとも備えている。MFP100は、画像処理機能および画像形成機能に加えて、原稿を読み取るための原稿読取機能、およびファクシミリデータを送受信するファクシミリ送受信機能を備えてもよい。画像処理は、限定するものではないが、画像データを画像形成可能なラスターデータに変換する処理、画像中のエッジを強調する先鋭化処理、画像中の色の変化を滑らかにするスムージング処理、データをよりサイズの小さな符号化データに変換する符号化処理、符号化データを復号する復号処理、画像データのフォーマットを変換する変換処理を含む。
PC300および検証サーバー500は、一般的なコンピューターである。したがって、それらのハードウェア構成および機能については周知なので、ここでは説明を繰り返さない。
MFP100、内部サーバー200およびPC300それぞれは、ローカルエリアネットワーク(LAN)3に接続される。このため、MFP100、PC300および内部サーバー200それぞれは、LAN3を介してデータの送受信が可能である。LAN3は、それに接続される装置が限定された閉じた環境となるため、LAN3に接続される複数の装置間、ここではMFP100、PC300および内部サーバー200との間で送受信されるデータが外部に漏れないようにセキュリティが確保されている。なお、LAN3の接続形態は有線または無線を問わない。また、LAN3に代えて、セキュリティが確保されるのであれば、公衆交換電話網(Public Switched Telephone Networks)を用いたネットワーク、ワイドエリアネットワーク(WAN)を用いるようにしてもよい。
LAN3は、インターネット5に接続される。検証サーバー500は、インターネット5に接続されている。このため、MFP100、PC300および内部サーバー200それぞれは、LAN3を介してインターネット5に接続された検証サーバー500と互いに通信可能である。MFP100、PC300および内部サーバー200は内部に配置される装置であるのに対して、検証サーバー500は、MFP100、PC300および内部サーバー200に対して外部に配置される装置である。内部とは、セキュリティが確保されている領域を示し、外部とは内部で確保されているセキュリティが確保されていない領域を示す。
本実施の形態における情報処理システム1において、MFP100からPC300にデータを送信し、受信されたデータを処理するPC300で不具合が発生する場合に、検証サーバー500で、PC300において発生した不具合を検証する。ここでの検証は、PC300で発生した不具合が次に発生しないように、MFP100またはPC300を設定することである。例えば、MFP100からPC300に送信されるデータが、PC300で処理可能なデータとなるようにMFP100またはPC300のいずれかにインストールされているアプリケーションプログラムを更新する。検証サーバー500において、PC300において発生した不具合を再現するために、不具合の原因となるデータ、ここでは、MFP100からPC300に送信されるデータが必要となるが、そのデータが機密性の高い機密情報を含んでいる場合がある。このため、MFP100からPC300に送信されたデータそのものを検証サーバー500に送信するのではなく、内部サーバー200において、MFP100からPC300に送信されたデータを、PC300において発生した不具合と同じ不具合が再現される再現用データに変換し、再現用データを検証サーバー500に送信する。再現用データがLAN3に接続されたMFP100、PC300および内部サーバー200を含む閉じた環境の外部に配置された検証サーバー500に送信されるが、再現用データからデータに含まれる機密情報を再現できなければ機密情報が外部に漏洩するのを防止することができる。
図2は、本実施の形態における内部サーバーのハードウェア構成の概要の一例を示すブロック図である。図2を参照して、内部サーバー200は、内部サーバー200の全体を制御するための中央演算装置(CPU)201と、CPU201が実行するためのプログラムを記憶するROM(Read Only Memory)202と、CPU201の作業領域として使用されるRAM(Random Access Memory)203と、データを不揮発的に記憶するハードディスクドライブ(HDD)204と、CPU201をLAN3に接続する通信部205と、情報を表示する表示部206と、ユーザーの操作の入力を受け付ける操作部207と、外部記憶装置208と、を含む。
表示部206は、液晶表示装置(LCD)、有機ELD(Electro−Luminescence Display)等の表示装置である。操作部207は、キーボードなどのハードキーである。また、操作部207は、タッチパネルであってもよい。タッチパネルは、表示部206の上面または下面に表示部206に重畳して設けられる。タッチパネルは、表示部206の表示面中でユーザーにより指示された位置を検出する。
通信部205は、CPU201をLAN3に接続するためのインターフェースである。通信部205は、TCP(Transmission Control Protocol)またはUDP(User Datagram Protocol)等の通信プロトコルで、LAN3に接続されたMFP100またはPC300と通信する。なお、通信のためのプロトコルは、特に限定されることはなく、任意のプロトコルを用いることができる。内部サーバー200に、MFP100およびPC300それぞれのIP(Internet Protocol)アドレスを登録しておくことにより、内部サーバー200は、MFP100およびPC300それぞれと通信することができ、データの送受信が可能となる。
HDD204は、CPU201が実行するプログラム、またはそのプログラムを実行するために必要なデータを記憶する。CPU201は、HDD204に記録されたプログラムを、RAM203にロードして実行する。
外部記憶装置208は、プログラムを記憶したCD−ROM(Compact Disk ROM)209が装着される。CPU201は、外部記憶装置208を介してCD−ROM209にアクセス可能である。CPU201は、外部記憶装置208に装着されたCD−ROM209に記録されたプログラムをRAM203にロードして実行する。なお、CPU201が実行するプログラムを記憶する媒体としては、CD−ROM209に限られず、光ディスク(MO(Magnetic Optical Disc)/MD(Mini Disc)/DVD(Digital Versatile Disc))、ICカード、光カード、マスクROMまたはEPROM(Erasable Programmable ROM)などの半導体メモリであってもよい。
また、CPU201が実行するプログラムは、CD−ROM209に記録されたプログラムに限られず、HDD204に記憶されたプログラムをRAM203にロードして実行するようにしてもよい。この場合、LAN3に接続された他のコンピューターが、HDD204に記憶されたプログラムを書き換える、または、新たなプログラムを追加して書き込むようにしてもよい。さらに、内部サーバー200が、LAN3またはインターネット5に接続された他のコンピューターからプログラムをダウンロードして、そのプログラムをHDD204に記憶するようにしてもよい。ここでいうプログラムは、CPU201が直接実行可能なプログラムだけでなく、ソースプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
図3は、本実施の形態におけるMFPのハードウェア構成の概要の一例を示すブロック図である。図3を参照して、MFP100は、メイン回路110と、原稿を読み取るための原稿読取部130と、原稿を原稿読取部130に搬送するための自動原稿搬送装置120と、原稿読取部130が原稿を読み取って出力する画像データに基づいて用紙等に画像を形成するための画像形成部140と、画像形成部140に用紙を供給するための給紙部150と、ユーザーインターフェースとしての操作パネル160とを含む。
自動原稿搬送装置120は、原稿トレイ上にセットされた複数枚の原稿を1枚ずつ自動的に原稿読取部130のプラテンガラス上に設定された所定の原稿読み取り位置まで搬送し、原稿読取部130により原稿に形成された画像が読み取られた原稿を原稿排紙トレイ上に排出する。原稿読取部130は、原稿読取位置に搬送されてきた原稿に光を照射する光源と、原稿で反射した光を受光する光電変換素子とを含み、原稿のサイズに応じた原稿画像を走査する。光電変換素子は、受光した光を電気信号である画像データに変換して、画像形成部140に出力する。給紙部150は、給紙トレイに収納された用紙を画像形成部140に搬送する。
画像形成部140は、周知の電子写真方式により画像を形成するものであって、原稿読取部130から入力される画像データにシェーディング補正などの各種のデータ処理を施した、データ処理後の画像データまたは、外部から受信された画像データに基づいて、給紙部150により搬送される用紙に画像を形成し、画像を形成した用紙を排紙トレイに排出する。
メイン回路110は、MFP100の全体を制御するCPU111と、通信インターフェース(I/F)部112と、ROM113と、RAM114と、大容量記憶装置としてのハードディスクドライブ(HDD)115と、ファクシミリ部116と、外部記憶装置117と、を含む。CPU111は、自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150および操作パネル160と接続され、MFP100の全体を制御する。
ファクシミリ部116は、公衆交換電話網(PSTN)に接続され、PSTNにファクシミリデータを送信する、またはPSTNからファクシミリデータを受信する。ファクシミリ部116は、受信したファクシミリデータを、HDD115に記憶するとともに、画像形成部140で印刷可能な印刷データに変換して、画像形成部140に出力する。これにより、画像形成部140は、ファクシミリ部116により受信されたファクシミリデータを用紙に画像を形成する。また、ファクシミリ部116は、HDD115に記憶されたデータをファクシミリデータに変換して、PSTNに接続されたファクシミリ装置に送信する。
通信I/F部112は、LAN3にMFP100を接続するためのインターフェースである。通信I/F部112は、TCPまたはUDP等の通信プロトコルで、LAN3に接続された内部サーバー200またはPC300と通信する。なお、通信のためのプロトコルは、特に限定されることはなく、任意のプロトコルを用いることができる。
ROM113は、CPU111が実行するプログラム、またはそのプログラムを実行するために必要なデータを記憶する。RAM114は、CPU111がプログラムを実行する際の作業領域として用いられる。また、RAM114は、原稿読取部130から連続的に送られてくる読取画像を一時的に記憶する。
操作パネル160は、MFP100の上面に設けられる。操作パネル160は、表示部161と操作部163とを含む。表示部161は、例えば、液晶表示装置(LCD)であり、ユーザーに対する指示メニューや取得した画像データに関する情報等を表示する。なお、LCDに代えて、画像を表示する装置であれば、例えば、有機EL(electroluminescence)ディスプレイを用いることができる。
操作部163は、タッチパネル165と、ハードキー部167とを含む。タッチパネル165は、静電容量方式である。なお、タッチパネル165は、静電容量方式に限らず、例えば、抵抗膜方式、表面弾性波方式、赤外線方式、電磁誘導方式等の他の方式を用いることができる。
タッチパネル165は、その検出面が表示部161の上面または下面に表示部161に重畳して設けられる。ここでは、タッチパネル165の検出面のサイズと、表示部161の表示面のサイズとを同じにしている。このため、表示面の座標系と検出面の座標系は同じである。タッチパネル165は、ユーザーが、表示部161の表示面を指示する位置を検出面で検出し、検出した位置の座標をCPU111に出力する。表示面の座標系と検出面の座標系は同じなので、タッチパネル165が出力する座標を、表示面の座標に置き換えることができる。
ハードキー部167は、複数のハードキーを含む。ハードキーは、例えば接点スイッチである。タッチパネル165は、表示部161の表示面中でユーザーにより指示された位置を検出する。ユーザーがMFP100を操作する場合は直立した姿勢となる場合が多いので、表示部161の表示面、タッチパネル165の操作面およびハードキー部167は、上方を向いて配置される。ユーザーが表示部161の表示面を容易に視認することができ、ユーザーが指で操作部163を容易に指示することができるようにするためである。
外部記憶装置117は、CPU111により制御され、CD−ROM118、または半導体メモリが装着される。本実施の形態においては、CPU111は、ROM113に記憶されたプログラムを実行する例を説明するが、CPU111は、外部記憶装置117を制御して、CD−ROM118からCPU111が実行するためのプログラムを読出し、読み出したプログラムをRAM114に記憶し、実行するようにしてもよい。
なお、CPU111が実行するためのプログラムを記憶する記録媒体としては、CD−ROM118に限られず、フレキシブルディスク、カセットテープ、光ディスク、ICカード、光カード、半導体メモリ等の媒体でもよい。さらに、CPU111がLAN3に接続されたコンピューターからプログラムをダウンロードしてHDD115に記憶する、または、LAN3に接続されたコンピューターがプログラムをHDD115に書き込みするようにして、HDD115に記憶されたプログラムをRAM114にロードしてCPU111で実行するようにしてもよい。ここでいうプログラムは、CPU111により直接実行可能なプログラムだけでなく、ソースプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
図4は、本実施の形態におけるMFPが備えるCPUが有する機能の一例を示すブロック図である。図4に示す機能は、MFP100が備えるCPU111が、ROM113、HDD115またはCD−ROM118に記憶された検証依頼プログラムを実行することにより、CPU111により実現される機能である。検証依頼プログラムは、再現用データ生成プログラムの一部である。図4を参照して、CPU111は、処理実行部51と、通信制御部53と、パケット記憶部55と、検証依頼部57と、を含む。
処理実行部51は、MFP100が処理の対象とする処理データを受け付け、その処理データを処理する。処理実行部51が実行する処理は、限定するものではないが、ここでは、PC300にデータを送信する処理を実行する場合を例に説明する。例えば、処理実行部51は、原稿読取部130が原稿を読み取る場合、原稿読取部130が原稿を読み取って出力する画像データを受け付け、受け付けられた画像データを処理データとしてPC300に送信する。また、処理実行部51は、HDD115に記憶されたデータを読出し、読み出したデータを処理データとしてPC300に送信する。処理実行部51は、ユーザーがメッセージをPC300に送信する操作を入力する場合、メッセージを生成し、生成されたメッセージを処理データとしてPC300に送信する。メッセージは、例えば、電子メールであってもよい。処理実行部51は、処理データをPC300に送信する送信指令を通信制御部53に出力する。
通信制御部53は、送信指令が入力されることに応じて、通信I/F部112を制御して、処理データをPC300に送信する。通信制御部53は、処理データを複数の送信パケットとしてPC300に送信する。具体的には、通信制御部53は、処理データを分割した複数の分割部分それぞれを送信パケットのボディ部に設定し、PC300との間で取り決められた通信プロトコルにより定められた情報を送信パケットのヘッダ部に設定することにより、複数の送信パケットを生成する。送信パケットのヘッダ部は、例えば、複数の送信パケットを受信するPC300が複数の分割部分から処理データを再現可能とするための情報を含む。通信制御部53は、複数の送信パケットをパケット記憶部55に出力する。
通信制御部53は、1つの送信指令に対して複数の送信パケットを生成する場合、1つの送信指令に対して生成される複数の送信パケットが同じ組に含まれることを示す指令識別情報を複数の送信パケットそれぞれとともにパケット記憶部55に出力する。さらに、処理データが単位部分の複数から構成される場合、送信パケットのボディ部に設定された分割部分が含まれる単位部分を識別するための部分識別情報を複数の送信パケットそれぞれとともにパケット記憶部55に出力する。単位部分は、例えば、処理データが複数ページからなる画像データの場合、1つのページの画像データを示し、部分識別情報は、ページ番号を示す。
パケット記憶部55は、通信制御部53から指令識別情報と送信パケットとが入力されることに応じて、送信パケットを指令識別情報と関連付けてHDD115に記憶する。この場合、パケット記憶部55は、通信制御部53から入力される指令識別情報と送信パケットとをHDD115に記憶する時点で、通信制御部53から入力される指令識別情報と異なる指令識別情報と、その指令識別情報に関連付けられた送信パケットとがHDD115に記憶されている場合には、それらをHDD115から消去するのが好ましい。これにより、HDD115の記憶容量が無駄に消費されるのを回避することができる。
また、パケット記憶部55は、通信制御部53から指令識別情報と部分識別情報と送信パケットとが入力される場合、送信パケットを指令識別情報および部分識別情報と関連付けてHDD115に記憶する。この場合、パケット記憶部55は、通信制御部53から入力される指令識別情報と部分識別情報と送信パケットとをHDD115に記憶時点で、通信制御部53から入力される指令識別情報と部分識別情報との組と異なる組の指令識別情報と部分識別情報と、送信パケットとがHDD115に記憶されている場合には、それらをHDD115から消去するのが好ましい。
通信制御部53は、送信指令に従って複数の送信パケットを順にPC300に送信し、PC300が送信指令に応答する応答情報を含む返信パケットをPC300から受信する。通信制御部53は、PC300から1以上の返信パケットを受信する場合、1以上の返信パケットそれぞれのヘッダ部に記述された情報に従って、1以上の返信パケットそれぞれのボディを合成した応答情報を生成し、生成された応答情報を処理実行部51に出力する。PC300は、複数の送信パケットの全てを受信した後に、応答情報を送信する場合と、複数の送信パケットの全てを受信する前に応答情報を送信する場合がある。
応答情報は、処理データを正常に処理したことを通知する情報と、処理データを正常に処理できなかったことを通知するエラー情報とを含む。エラー情報は、例えば、PC300で、処理データを処理対象とした処理を実行することにより発生するエラーを識別するためのエラー識別情報を含む。PC300が、複数の送信パケットの全てを受信する前に応答情報を送信する場合は、例えば、複数の送信パケットの一部を受信した段階で、それまでに受信された処理データの一部を処理対象として処理を実行することによりエラーが発生する場合がある。
また、応答情報は、処理データが特定情報を含む場合に、PC300が特定情報を処理対象とした処理を実行することにより発生するエラーを識別するためのエラー情報を含む。特定情報が、ユーザーアカウントとパスワードの場合、PC300においてユーザーを認証する認証処理に失敗する場合に、応答情報は、認証に失敗したことを示すエラーを識別するためのエラー識別情報を含む。
処理実行部51は、応答情報がエラー情報を含む場合、通信制御部53に送信指令に基づく送信の中止を指示するとともに、送信指令を識別するための指令識別情報とエラー情報を検証依頼部57に出力する。
検証依頼部57は、処理実行部51から指令識別情報とエラー情報とが入力されることに応じて、パケット記憶部55によりHDD115に記憶された送信パケットのうちから、指令識別情報と関連付けられた送信パケットの全てを読出し、内部サーバー200に検証を依頼する。具体的には、検証依頼部57は、通信I/F部112を制御して、HDD115から読み出された複数の送信パケットと、処理実行部51から入力されるエラー情報と、処理データの送信先のPC300を識別するための装置識別情報とを内部サーバー200に送信する。送信パケットが部分識別情報と関連付けられている場合には、送信パケットと部分識別情報との組を、内部サーバー200に送信する。
図5は、本実施の形態における内部サーバーが備えるCPUが有する機能の一例を示すブロック図である。図5に示す機能は、内部サーバー200が備えるCPU201が、ROM202、HDD204またはCD−ROM209に記憶された再現用データ生成プログラムを実行することにより、CPU201により実現される機能である。
図5を参照して、内部サーバー200が備えるCPU201は、装置情報取得部251と、パケット取得部253と、エラー情報取得部255、シミュレート部257と、仮想実行制御部259と、生成部261と、再現用パケット決定部263と、出力部265と、を含む。
装置情報取得部251は、MFP100から検証依頼を受信すると、PC300から装置情報を取得する。具体的には、装置情報取得部251は、MFP100から受信された装置識別情報で特定されるPC300に装置情報の送信を要求し、PC300から受信される装置情報を取得する。装置情報取得部251は、装置情報を取得する場合、装置情報をシミュレート部257に出力する。装置情報は、PC300に搭載されているCPUに関する情報、PC300にインストールされているハードウェア資源に関するハード情報と、PC300にインストールされたソフトウェア資源に関するソフト情報と、を含む。CPUに関する情報は、CPUの機種名を含む。ハード情報は、ハードウェア資源を識別するためのハード識別情報と、ハードウェア資源を制御するために設定されているハードパラメータとを含む。ハード情報は、ハードウェア資源が複数の場合には、複数のハードウェア資源ごとに、ハード識別情報とハードパラメータとを含む。ソフト情報は、PC300にインストールされているプログラムのプログラム名と、そのプログラムを実行するために設定されているソフトパラメータと、を含む。
パケット取得部253は、MFP100から検証依頼を受信すると、MFP100から複数の送信パケットを受信する。パケット取得部253は、複数の送信パケットを受信すると、それらを生成部261に出力する。
エラー情報取得部255は、MFP100から検証依頼を受信すると、MFP100からエラー情報を受信する。エラー情報取得部255は、エラー情報を受信すると、エラー情報を再現用パケット決定部263に出力する。
生成部261は、パケット取得部253から入力される複数の送信パケットに基づいて、複数の送信パケットそれぞれの少なくとも一部を含む複数の変更パケットを生成する。具体的には、生成部261は、複数の送信パケットそれぞれのヘッダ部に記述されている情報に基づいて、複数の送信パケットそれぞれのボディを合成することにより、処理データを生成する。そして、生成部261は、処理データを分割し、複数の分割部分を生成する。例えば、分割部分のサイズを予め定めておき、処理データのサイズと分割部分のサイズとから分割数を決定すればよい。
生成部261は、複数の分割部分の少なくとも1つに基づいて変更パケットを生成する。具体的には、生成部261は、複数の分割部分から1以上の分割部分を処理対象に選択する。生成部261は、処理対象に選択された1以上の分割部分が、機密情報を含む場合、機密情報をダミー情報に変更する。機密情報は、機密性の高い情報として予め定められた情報である。機密情報は、例えば、個人情報、予め定められた単語等である。個人情報は、例えば、ユーザーアカウント、パスワード、電話番号、氏名等を含む。生成部261は、処理対象に選択された1以上の分割部分に基づいて変更パケットを生成する。生成部261は、複数の送信パケットを順に処理対象に選択し、処理対象に選択された送信パケットに対応する変更パケットを生成する。生成部261は、処理対象に選択された送信パケットのボディ部が、選択された1以上の分割部分のいずれかを含む場合、その分割部分を変更パケットのボディ部に設定し、送信パケットのヘッダ部を分割部分が設定されたボディ部に適合するように修正したヘッダ部を変更パケットのヘッダ部に設定する。生成部261は、処理対象に選択された送信パケットのボディ部が、選択された1以上の分割部分のいずれをも含まない場合、変更パケットのボディ部に何も設定することなく、送信パケットのヘッダ部を空のボディ部に適合するように修正したヘッダ部を変更パケットのヘッダ部に設定する。このように、生成部261は、複数の送信パケットにそれぞれ対応する複数の変更パケットを生成する。複数の変更パケットによって再生されるデータは、複数の分割部分から選択された1以上の分割部分を合成したデータとなる。生成部261は、生成された複数の変更パケットを仮想実行制御部259に出力する。
シミュレート部257は、装置情報取得部251から入力される装置情報に基づいてPC300をシミュレートする。シミュレート部257は、装置情報に含まれるハード情報を用いて、PC300に装着されたハードウェア資源を仮想装置に設定し、仮想装置にハードパラメータを設定する。また、シミュレート部257は、装置情報に含まれるソフト情報を用いて、PC300のCPUが実行するソフトウェア資源を仮想装置の仮想CPUにインストールし、仮想装置にソフトパラメータを設定する。これにより、シミュレート部257によってPC300をシミュレートする仮想装置が設定される。
仮想実行制御部259は、生成部261から複数の変更パケットが入力されることに応じて、シミュレート部257を制御して、シミュレート部257がPC300をシミュレートする仮想装置に、生成部261から入力される変更パケットを受信させる。
再現用パケット決定部263は、複数の変更パケットを順に受信する仮想装置が出力する返信パケットを監視しており、仮想装置が1以上の返信パケットを出力する場合、1以上の返信パケットそれぞれのヘッダ部に記述された情報に従って、1以上の返信パケットそれぞれのボディを合成した応答情報を生成する。再現用パケット決定部263は、仮想装置が複数の変更パケットの全てを受信した後に出力する応答情報がエラー情報取得部255から入力されるエラー情報で特定されるエラーと同じエラーを示すエラー情報を含む場合、生成部261から入力される複数の変更パケットを再現用パケットに決定し、出力部265に出力指示を出力する。出力指示は、再現用パケットを含む。
再現用パケット決定部263は、仮想装置が複数の変更パケットの全てを受信した後に送信する応答情報がエラー情報取得部255から入力されるエラー情報で特定されるエラーと同じエラーを示すエラー情報を含まない場合、または、仮想装置が複数の変更パケットの全てを受信する前に、エラー情報を含む応答情報を出力する場合、出力部265に出力指示を出力することなく、生成部261に再生成指示を出力する。
生成部261は、再現用パケット決定部263から再生成指示が入力される場合、それまでに処理対象に選択した1以上の分割部分とは異なる1以上の分割部分を処理対象に選択し、新たに処理対象に選択された1以上の分割部分に基づいて変更パケットを生成する。
具体的には、生成部261は、選択数M(Mは正の整数)を決定し、複数の分割部分のうちM個の分割部分からなる分割部分組を、複数の分割部分のうちからM個を選択する組み合わせの数だけ生成する。選択数Mは、変更パケットを生成するために用いる分割部分の数である。生成部261は、生成された複数の分割部分組のうちから処理対象となる分割部分組を1つ選択することにより、処理対象となるM個の分割部分を決定する。生成部261は、処理対象に決定されたM個の分割部分に基づいて、複数の変更パケットを生成する。また、生成部261は、再現用パケット決定部263から再生成指示が入力される場合、複数の分割部分組のうち未選択の分割部分を1つ選択する。生成部261は、複数の分割部分組の全てを選択した場合には、選択数Mを変更し、複数の新たな分割部分組を生成する。例えば、選択数Mの初期値を1とし、選択数を1から順に増加するのが好ましい。
出力部265は、再現用パケット決定部263から出力指示が入力されることに応じて、出力指示に含まれる再現用パケットを、検証サーバー500に送信し、検証を依頼する。なお、再現用パケットをMFP100に送信し、MFP100が検証サーバー500に検証を依頼するようにしてもよいし、再現用パケットをPC300に送信し、PC300が検証サーバー500に検証を依頼するようにしてもよい。
図6は、再現用データ生成処理の流れの一例を示すフローチャートである。再現用データ生成処理は、内部サーバー200が備えるCPU201が、ROM202、HDD204またはCD−ROM209に記憶された再現用データ生成プログラムを実行することにより、CPU201により実現される機能である。
図6を参照して、CPU201は、検証依頼を受けたか否かを判断する(ステップS01)。通信部205がMFP100から検証依頼を受信したか否かを判断する。検証依頼を受信するまで待機状態となり、検証依頼を受信したならば処理をステップS02に進める。MFP100は、検証依頼とともに、複数の送信パケットと、エラー情報と、処理データの送信先のPC300を識別するための装置識別情報とを送信するので、ステップS02においては、通信部205がMFP100から受信する、複数の送信パケットと、エラー情報と、PC300の装置識別情報とを取得する。
次のステップS03においては、ステップS02において取得されたPC300の装置識別情報に基づいて、PC300の装置情報をPC300から取得する。通信部205を制御して、PC300に装置情報を要求し、PC300が送信する装置情報を受信する。装置情報は、PC300に搭載されているCPUに関する情報、PC300にインストールされているハードウェア資源に関するハード情報と、PC300にインストールされたソフトウェア資源に関するソフト情報と、を含む。
次のステップS04においては、PC300をシミュレートする仮想装置を設定する。具体的には、ステップS03において取得された装置情報に含まれるCPUに関する情報およびハード情報に基づいて、PC300に装着されたCPUおよびハードウェア資源を仮想装置に設定し、仮想装置にハードパラメータを設定する。また、装置情報に含まれるソフト情報を用いて、PC300のCPUが実行するソフトウェア資源を仮想装置の仮想CPUにインストールし、仮想装置にソフトパラメータを設定する。
次のステップS05においては、変数iに「1」を設定し、処理をステップS06に進める。変数iは、ステップS02において受信された複数の送信パケットのうち処理対象となる送信パケットを特定するための値である。具体的には、第i番目の送信パケットを処理対象に設定する。
ステップS06においては、第i番目の送信パケットのボディを処理データに追加する。処理データは、MFP100によってPC300への送信の対象とされたデータであり、複数の送信パケットそれぞれに分割して含まれている。次のステップS07においては、ステップS02において取得された複数の送信パケットのうちに第(i+1)番目の送信パケットが存在するか否かを判断する。そのような送信パケットが存在するならば処理をステップS08に進めるが、そうでなければ処理をステップS09に進める。ステップS05〜ステップS08のループを繰り返すことにより、処理データに複数の送信パケットにそれぞれ含まれる複数のボディが順に追加され、処理データが完成する。
ステップS09においては、処理データを分割する。分割数は予め定めておくようにすればよい。以下処理データを分割した複数の部分を、複数の分割部分という。次のステップS10においては、選択数Mを「1」を設定する。次のステップS11においては、選択数Mの分割部分組を決定する。選択数Mの分割部分組は、複数の分割部分のうちからM個を選択する組み合わせの数だけあり、それぞれの分割部分組はM個の分割部分を含む。選択数Mを「1」とする場合、複数の分割部分それぞれが1つの分割部分組に含まれるので、複数の分割部分と同じ数の分割部分組が決定される。
次のステップS12においては、ステップS11において決定された複数の分割部分組のうちから1つの分割部分組を処理対象に選択し、処理をステップS13に進める。ステップS13においては、変更パケット生成処理を実行し、処理をステップS15に進める。変更パケット生成処理の詳細は後述するが、処理対象に選択された分割部分組に含まれるM個の分割部分に基づいて、複数の送信パケットを変更した複数の変更パケットを生成する処理である。
ステップS15においては、変更パケット生成処理において生成された複数の変更パケットを、ステップS04において設定された仮想装置に送信し、処理をステップS16に進める。ステップS16においては、複数の変更パケットのすべての送信が完了したか否かを判断する。複数の変更パケットのすべての送信が完了したならば処理をステップS17に進めるが、そうでなければ処理をステップS18に進める。複数の変更パケットのすべてを送信する前に、仮想装置からエラーを示す返信パケットが受信される場合、複数の変更パケットのすべての送信が完了しないとして処理をステップS18に進める。
ステップS17においては、ステップS02において取得されたエラー情報で示されるエラーと同じエラーを示すエラー情報を、仮想装置から受信したか否かを判断する。真ならば処理をステップS20に進めるが、偽ならば処理をステップS18に進める。
ステップS18においては、ステップS11において決定された1以上の分割部分組のうちに、ステップS12において処理対象に選択されていない分割部分組が存在するか否かを判断する。未選択の分割部分組が存在するならば処理をステップS12に戻し、未選択の組が存在しなければ処理をステップS19に進める。ステップS19においては、選択数Mをインクリメントし、処理をステップS11に戻す。
ステップS20においては、変更パケットを再現用パケットに決定し、処理をステップS21に進める。ステップS21においては、再現用パケットを検証サーバー500に送信し、処理を終了する。
図7は、変更パケット生成処理の流れの一例を示すフローチャートである。変更パケット生成処理は、図6のステップS13において実行される処理である。変更パケット生成処理が実行される前の段階で、処理対象の分割部分組が選択されている。処理対象の分割部分組には、選択数M個の分割部分を含む。ここで、処理対象の分割部分組に含まれる選択数M個の分割部分を、処理対象の分割部分という。
図7を参照して、CPU201は、ステップS31において、変数iに「1」を設定し、処理をステップS32に進める。変数iは、MFP100から受信された複数の送信パケットのうち処理対象となる送信パケットを特定するための値である。
次のステップS33においては、第i番目の送信パケットを処理対象に選択する。そして、第i番目の変更パケットに、第i番目の送信パケットのヘッダと同じヘッダを設定する。次のステップS34においては、第i番目の送信パケットのボディは、処理対象の分割部分の少なくとも1つを含むか否かを判断する。第i番目の送信パケットのボディが、分割部分組に含まれるM個の分割部分の少なくとも1つを含むならば処理をステップS35に進めるが、そうでなければ処理をステップS36に進める。ステップS35においては、第i番目の変更パケットに第i番目の送信パケットのボディに含まれる分割部分を設定し、処理をステップS37に進める。ステップS36においては、第i番目の変更パケットのボディを空に設定し、処理をステップS37に進める。例えば、第i番目の変更パケットのボディにNULLを設定する。
ステップS37においては、第i番目の変更パケットのボディに設定された分割部分が機密情報を含むか否かを判断する。分割部分が機密情報を含むならば処理をステップS38に進めるが、そうでなければ処理をステップS40に進める。機密情報は、機密性の高い情報として予め定められた情報である。機密情報の一例としては、例えば、ユーザーアカウント、パスワード、個人情報等である。ステップS38においては、機密情報をダミー情報に変更し、処理をステップS39に進める。これにより、変更パケットが機密情報を含まないようにすることができる。ステップS39においては、仮想装置にダミー情報を反映する。例えば、ユーザーアカウントおよびパスワードにより認証処理が実行されるが、仮想装置で、変更パケットに含まれるダミーのユーザーアカウントおよびパスワードにより認証が成功するように設定する。例えば、ダミーのユーザーアカウントおよびパスワードを、仮想装置が認証処理に用いるテーブルに追加する。また、仮想装置により認証処理でエラーが発生しないように設定する。
次のステップS40においては、第i番目の変更パケットのヘッダを修正し、処理をステップS41に進める。具体的には、第i番目の変更パケットのヘッダを分割部分が設定されたボディに適合するように修正する。ボディのサイズが変更されている場合には、ボディのサイズを示すフィールドを、ボディのサイズに合わせた値に変更する。
次のステップS41においては、第(i+1)番目の送信パケットが存在するか否かを判断する。複数の送信パケットのうちで、ステップS32において処理対象に選択されていない送信パケットが存在するならば処理をステップS42に進めるが、そうでなければ処理を検証データ生成処理に戻す。ステップS42においては、変数iをインクリメントし、処理をステップS32に戻す。
以上説明したように本実施の形態における内部サーバー200は、MFP100がPC300からエラー情報を受信する場合に、MFP100からPC300に送信された送信パケットから変更パケットを生成し、PC300をシミュレートする仮想装置に変更パケットを受信させて、エラー情報で示されるエラーと同じエラーを示すエラー情報を仮想装置が返信する場合における変更パケットを再現用パケットに決定する。このため、MFP100からPC300に送信される送信パケットの少なくとも一部を含み、PC300が送信パケットを受信した場合と同じエラーが発生する変更パケットを生成することができる。したがって、MFP100からPC300にデータを送信する場合にPC300で発生するエラーを再現可能で、かつ、サイズがより小さな再現用データを生成することができる。
また、内部サーバー200は、再現用パケットを検証サーバー500に送信するので、PC300で発生したエラーを検証サーバー500で再現することができ、エラーを検証することができる。
また、内部サーバー200は、MFP100が処理対象とするデータの単位、または、MFP100がデータを処理する処理の単位で定まる1以上のパケットを、送信パケットとして取得する。データの単位は、データが複数ページからなる場合には、ページ単位であり、1ページのデータを含む。処理の単位は、1つの処理が開始してから終了するまでの送信されるデータを含む。例えば、複数のデータを送信するデータ送信処理に対しては複数のファイルを含む。送信パケットは、データの単位、または、処理の単位で定まる1以上のパケットなので、MFP100が送信したパケットの全てをHDD115に記憶する必要がなく、メモリ資源を有効に利用することができる。また、検証サーバー500で、検証の際に、1つのデータに対して実行する処理で発生するエラーまたは1つの処理で発生するエラーの再現が容易となる。
また、内部サーバー200は、送信パケットの機密情報をダミー情報に書き換えるので、変更パケットが機密性の高い情報を含まないようにすることができる。
また、内部サーバー200は、送信パケット中で予め定められた種類のデータを含む部分、および/または、予め定められた部分を、ダミー情報で書き換えるので、変更パケットが機密性の高い情報を含まないようにすることができる。特に、送信パケットに含まる機密情報の種類または送信パケット中の位置が事前に判明している場合に、変更パケットが機密性の高い情報を含まないようにすることができる。
また、内部サーバー200は、処理データを複数の分割部分に分割し、複数の分割部分のうちから選択された1以上の分割部分から変更パケットを生成するので、変更パケットは、複数の分割部分のうちから選択された1以上の分割部分を含むので、送信パケットの一部を削除したものである。したがって、変更パケットのデータ量を送信パケットよりも小さくすることができる。
また、内部サーバー200は、送信パケットが複数の場合、複数の送信パケットにそれぞれ対応する複数の変更パケットを生成するので、再現用パケットを容易に決定することができる。
なお、上述した実施の形態においては、サーバーの一例として内部サーバー200を例に示したが、図6および図7に示した再現用データ生成処理を、内部サーバー200に実行させる再現用データ生成方法、また、その再現用データ生成方法を内部サーバー200が備えるCPU201に実行させる再現用データ生成プログラムとして発明を捉えることができるのは言うまでもない。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。