(57)【要約】【課題】送信元が有する元データが漏洩することを抑制すること。【解決手段】送信装置１０１は、正誤情報１１１を受信装置１０２に送信し、受信装置１０２は、図１の（１−１）、（１−２）で示すように、正誤情報１１１を受信し、候補値の集合を参照して、所定のルールに基づいて推測値：１０を生成する。そして、受信装置１０２は、図１の（１−３）で示すように、推測値：１０と正誤情報１１１とに基づいて、候補値の集合を更新する。図１の（１−３）の状態では、候補値の集合に含まれる値が１つに特定可能となっていないため、送信装置１０１と受信装置１０２とは、再び推測値を生成し、候補値の集合を更新する。繰り返した結果、受信装置１０２は、図１の（３−３）で示すように、推測値：３６が正解であるとして、推測値：３６によって示されるデータを、元データと一致するデータとして生成する。【選択図】図１
2018066827.tif 000002
【特許請求の範囲】
【請求項１】
元データを有する送信装置と、前記送信装置と接続する受信装置とを有するデータ生成システムのデータ生成方法であって、
前記送信装置が、
前記元データが示す値となり得る送信元の候補値の集合を参照して前記送信元の候補値の集合に含まれるいずれかの値を生成する所定のルールに基づいて、第１の値を生成し、
生成した前記第１の値と前記元データが示す値との差分の大きさを示す差分情報を生成して、生成した前記差分情報を前記受信装置に送信し、
前記第１の値と、生成した前記差分情報とに基づいて、前記送信元の候補値の集合を更新し、
前記送信元の候補値の集合に含まれる候補値が１つに特定可能となるまで前記送信する処理を繰り返す、
処理を実行し、
前記受信装置が、
前記差分情報を、前記送信装置から受信し、
受信先の候補値の集合を参照して、前記所定のルールに基づいて、第１の値を生成し、
生成した当該第１の値と、受信した前記差分情報とに基づいて、前記受信先の候補値の集合を更新し、
前記受信先の候補値の集合に含まれる候補値が１つに特定可能となるまで前記受信先の候補値の集合を更新する処理を繰り返し、前記受信先の候補値の集合に含まれる候補値によって示されるデータを生成する、
処理を実行することを特徴とするデータ生成方法。
【請求項２】
前記差分情報は、
前記所定のルールに基づいて生成された値と前記元データが示す値との差分がないことを示す第１の識別情報、または、前記生成された値と前記元データが示す値との差分があることを示す第２の識別情報であって、
前記受信装置が、
前記差分情報が前記第１の識別情報である場合、当該第１の値によって示されるデータを生成し、
前記差分情報が前記第２の識別情報である場合、当該第１の値が前記受信先の候補値の集合に含まれないように前記受信先の候補値の集合を更新する、
ことを特徴とする請求項１に記載のデータ生成方法。
【請求項３】
前記差分情報は、
前記所定のルールに基づいて生成された値と前記元データが示す値との差分がないことを示す第１の識別情報、または、前記送信元の候補値の集合を前記生成された値を基準として複数の部分に分割した複数の部分集合のうちの前記元データが示す値が含まれる部分集合を示す識別情報であって、
前記受信装置が、
前記差分情報が前記第１の識別情報である場合、当該第１の値によって示されるデータを生成し、
前記差分情報が前記複数の部分集合のいずれかの部分集合を示す識別情報である場合、前記受信先の候補値の集合を当該第１の値を基準として複数の部分に分割した複数の部分集合のうちの前記いずれかの部分集合に対応する部分集合を、前記受信先の候補値の集合として更新する、
ことを特徴とする請求項１に記載のデータ生成方法。
【請求項４】
前記差分情報は、
前記第１の識別情報と、前記生成された値を基準として前記送信元の候補値の集合を均等に３分割した複数の部分集合の各部分集合を示す各識別情報とをそれぞれ識別可能な２ビットの情報であることを特徴とする請求項３に記載のデータ生成方法。
【請求項５】
前記元データは、前記送信装置のメモリをダンプしたダンプデータであって、
前記受信装置が、前記元データより過去に採取された過去のダンプデータを記憶し、
前記所定のルールは、
前記過去のダンプデータに基づく値が前記送信元または前記受信先の候補値の集合に含まれる場合、当該値を第１の値として出力し、
前記過去のダンプデータに基づく値が前記送信元または前記受信先の候補値の集合に含まれない場合、前記送信元または前記受信先の候補値の集合に含まれるいずれかの値を第１の値として出力する、
ことを特徴とする請求項１〜４のいずれか一つに記載のデータ生成方法。
【請求項６】
元データを有する送信装置と、前記送信装置と接続する受信装置とを有するデータ生成システムであって、
前記送信装置は、
前記元データが示す値となり得る送信元の候補値の集合を参照して前記送信元の候補値の集合に含まれるいずれかの値を生成する所定のルールに基づいて、第１の値を生成し、
生成した前記第１の値と前記元データが示す値との差分の大きさを示す差分情報を生成して、生成した前記差分情報を前記受信装置に送信し、
前記第１の値と、生成した前記差分情報とに基づいて、前記送信元の候補値の集合を更新し、
前記送信元の候補値の集合に含まれる候補値が１つに特定可能となるまで前記送信する処理を繰り返し、
前記受信装置は、
前記差分情報を、前記送信装置から受信し、
受信先の候補値の集合を参照して、前記所定のルールに基づいて、第１の値を生成し、
生成した当該第１の値と、受信した前記差分情報とに基づいて、前記受信先の候補値の集合を更新し、
前記受信先の候補値の集合に含まれる候補値が１つに特定可能となるまで前記受信先の候補値の集合を更新する処理を繰り返し、前記受信先の候補値の集合に含まれる候補値によって示されるデータを生成する、
処理を実行することを特徴とするデータ生成システム。
【請求項７】
コンピュータに、
元データが示す値となり得る候補値の集合を参照して前記候補値の集合に含まれるいずれかの値を生成する所定のルールに基づいて生成された第１の値と前記元データが示す値との差分の大きさを示す差分情報を、前記元データを有する送信元から受信し、
前記候補値の集合を参照して、前記所定のルールに基づいて、第１の値を生成し、
生成した前記第１の値と、受信した前記差分情報とに基づいて、前記候補値の集合を更新し、
前記候補値の集合に含まれる候補値が１つに特定可能となるまで前記候補値の集合を更新する処理を繰り返し、前記候補値の集合に含まれる候補値によって示されるデータを生成する、
処理を実行させることを特徴とするデータ生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ生成方法、データ生成システム、およびデータ生成プログラムに関する。
【背景技術】
【０００２】
従来、共通鍵や公開鍵といった暗号鍵を用いた暗号化方式を用いて、送信元が有する元データを暗号化した暗号化データを、受信先に送信する技術がある。関連する先行技術として、例えば、原稿の読み取りが開始されたことに応答して、リアルタイムクロックから秒数ｎを読み取り、上記原稿の先頭からｎビット目の原画データを白黒反転させ、圧縮符号化および暗号処理を施した暗号化データを送出するものがある。また、デジタルコンテンツを所定の分割方法に基づき分割ファイルに分割し、それぞれ異なる格納場所に格納し、指示された格納場所から各分割ファイルを無認証でダウンロードし、所定の分割方法に基づく復元処理を行い、デジタルコンテンツを得る技術がある。また、通信を行う場合、まず平文のデータに対して自己相関性を低減させる処理を行い、その結果得られたデータである二次データに対して暗号化処理を行い、暗号化によって生成された暗号文を送信する技術がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平０７−２５０２５２号公報
【特許文献２】特開２００５−０９９９１０号公報
【特許文献３】特開２００７−１９３１３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術によれば、共通鍵や公開鍵といった暗号鍵を用いた暗号化方式を用いて、送信元が有する元データを暗号化した暗号化データを受信先に送信すると、その元データが漏洩することがある。例えば、復号鍵を知らない第三者であっても、解析に時間をかければ復号鍵を得ることができるため、得られた復号鍵によって暗号化データを復号し、元データを得ることができてしまう。
【０００５】
１つの側面では、本発明は、送信元が有する元データが漏洩することを抑制することができるデータ生成方法、データ生成システム、およびデータ生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一側面によれば、元データを有する送信装置と、送信装置と接続する受信装置とを有するデータ生成システムであって、送信装置が、元データが示す値となり得る送信元の候補値の集合を参照して送信元の候補値の集合に含まれるいずれかの値を生成する所定のルールに基づいて、第１の値を生成し、生成した第１の値と元データが示す値との差分の大きさを示す差分情報を生成して、生成した差分情報を受信装置に送信し、第１の値と、生成した差分情報とに基づいて、送信元の候補値の集合を更新し、送信元の候補値の集合に含まれる候補値が１つに特定可能となるまで送信する処理を繰り返す、処理を実行し、受信装置が、差分情報を、送信装置から受信し、受信先の候補値の集合を参照して、所定のルールに基づいて、第１の値を生成し、生成した当該第１の値と、受信した差分情報とに基づいて、受信先の候補値の集合を更新し、受信先の候補値の集合に含まれる候補値が１つに特定可能となるまで受信先の候補値の集合を更新する処理を繰り返し、受信先の候補値の集合に含まれる候補値によって示されるデータを生成するデータ生成方法、データ生成システム、およびデータ生成プログラムが提案される。
【発明の効果】
【０００７】
本発明の一態様によれば、送信元が有する元データが漏洩することを抑制することができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、本実施の形態にかかるデータ生成システム１００の動作例を示す説明図である。
【図２】図２は、送信装置１０１と受信装置１０２とのハードウェア構成例を示す説明図である。
【図３】図３は、送信装置１０１の機能構成例を示す説明図である。
【図４】図４は、受信装置１０２の機能構成例を示す説明図である。
【図５】図５は、実施例１における元データ生成例を示す説明図（その１）である。
【図６】図６は、実施例１における元データ生成例を示す説明図（その２−１）である。
【図７】図７は、実施例１における元データ生成例を示す説明図（その２−２）である。
【図８】図８は、実施例２における元データ生成例を示す説明図（その１）である。
【図９】図９は、実施例２における元データ生成例を示す説明図（その２）である。
【図１０】図１０は、送信装置１０１が記憶する情報の一例を示す説明図である。
【図１１】図１１は、受信装置１０２が記憶する情報の一例を示す説明図である。
【図１２】図１２は、過去のダンプファイルデータ１００１の記憶内容の一例を示す説明図である。
【図１３】図１３は、送信データ１００２の記憶内容の一例を示す説明図である。
【図１４】図１４は、受信データ１１０１の記憶内容の一例を示す説明図である。
【図１５】図１５は、対象データｓｏｕｒｃｅの記憶内容の一例を示す説明図である。
【図１６】図１６は、結果インデックス変換情報ｋｅｋｋａ２ｖａｌｕｅの記憶内容の一例を示す説明図である。
【図１７】図１７は、候補リストｋｏｕｈｏの記憶内容の一例を示す説明図である。
【図１８】図１８は、推測結果ｓｕｉｓｏｋｕの記憶内容の一例を示す説明図である。
【図１９】図１９は、正誤情報ｋｅｋｋａの記憶内容の一例を示す説明図である。
【図２０】図２０は、過去データ抽出サンプルｓａｍｐｌｅの記憶内容の一例を示す説明図である。
【図２１】図２１は、開始インデックス情報ｖａｌｕｅ２ｓｔａｒｔｉｎｄｅｘの記憶内容の一例を示す説明図である。
【図２２】図２２は、終了インデックス情報ｖａｌｕｅ２ｅｎｄｉｎｄｅｘの記憶内容の一例を示す説明図である。
【図２３】図２３は、同期式における元データ生成処理手順の一例を示すフローチャートである。
【図２４】図２４は、データ送受信処理手順の一例を示すフローチャートである。
【図２５】図２５は、非同期式における元データ生成処理手順の一例を示すフローチャートである。
【図２６】図２６は、対象データ読込み処理手順の一例を示すフローチャートである。
【図２７】図２７は、データ特性抽出処理手順の一例を示すフローチャートである。
【図２８】図２８は、データ特性送信処理手順とデータ特性受信処理手順との一例を示すフローチャートである。
【図２９】図２９は、推測関数によるデータ生成処理手順の一例を示すフローチャートである。
【図３０】図３０は、候補リスト作成処理手順の一例を示すフローチャートである。
【図３１】図３１は、候補リストｋｏｕｈｏの記憶内容の変化の一例を示す説明図である。
【図３２】図３２は、データ推測処理手順の一例を示すフローチャートである。
【図３３】図３３は、正誤判定処理手順の一例を示すフローチャートである。
【図３４】図３４は、正誤結果送信処理手順の一例を示すフローチャートである。
【図３５】図３５は、正誤結果受信処理手順の一例を示すフローチャートである。
【図３６】図３６は、生成データ保存処理手順の一例を示すフローチャートである。
【図３７】図３７は、送信元におけるデータ蓄積処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下に図面を参照して、開示のデータ生成方法、データ生成システム、およびデータ生成プログラムの実施の形態を詳細に説明する。
【００１０】
図１は、本実施の形態にかかるデータ生成システム１００の動作例を示す説明図である。データ生成システム１００は、送信元が有するデータを、受信先が生成するシステムである。送信元や受信先は、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、サーバ、携帯端末等のコンピュータである。
【００１１】
ここで、送信元から受信先へデータを送信する機会としては、送信元の物理メモリの内容全てをダンプデータとして出力し、受信先として製品サポートサービスに、ダンプデータを送信することがある。この場合、送信元に重大な障害が発生した場合、障害の原因を解析する目的で、ダンプファイルが送信されている。このダンプファイルには、送信元が物理メモリに保持していた全てのデータを含むため、パスワードや個人情報などの機密情報が含まれる。このため、送信中の情報漏洩を防ぐために、ダンプファイルの暗号化が行われる。暗号化の方法には、例えば、共通鍵や公開鍵等の鍵を用いた暗号化方式が挙げられる。
【００１２】
しかしながら、共通鍵や公開鍵といった暗号鍵を用いた暗号化方式を用いて、送信元が有する元データを暗号化した暗号化データを受信先に送信すると、その元データが漏洩することがある。例えば、復号鍵を知らない第三者であっても、解析に時間をかければ復号鍵を得ることができるため、得られた復号鍵によって暗号化データを復号し、元データを得ることができてしまう。また、コンピュータの計算処理能力の向上によって、復号鍵の解析にかかる時間が短縮することにもなる。また、暗号化方法は、日々研究されているため、ある日その暗号化方法に対する解読方法が発見された結果、その暗号化方法の暗号強度が低下する恐れもある。
【００１３】
また、過去データの特性に基づいて、受信先でデータを予測する方法も考えられるが、受信先で、送信元の現在のダンプデータを１００％の精度で予測することは前述の方法ではできないことである。従って、障害の原因を解析する目的に対しては、前述の方法を採用することは不適当である。
【００１４】
そこで、本実施の形態では、受信先が、元データを持つ送信元と共通のルールから同一の推測値を生成し、送信元から得た推測値の正誤情報から元データを推測することを繰り返して元データを生成することについて説明する。
【００１５】
図１を用いて、データ生成システム１００の動作例について説明する。データ生成システム１００は、送信元となる送信装置１０１と、受信先となる受信装置１０２とを有する。図１の例では、ダンプファイルの一部となる元データとして、１バイトのデータが示す値：３６を送信することとする。ここで、元データが示す値は、元データを形成するビット列によって表現できる数値である。
【００１６】
一連の処理を説明すると、送信装置１０１は、受信装置１０２と共通のルールとなる所定のルールに基づいて生成された第１の値と元データが示す値との差分の大きさを示す差分情報を、受信装置１０２に送信する。ここで、所定のルールは、元データが示す値となり得る候補値の集合を参照して候補値の集合に含まれるいずれかの値を生成するルールである。一方、受信装置１０２は、差分情報を受信し、候補値の集合を参照して、所定のルールに基づいて、第１の値を生成する。次に、受信装置１０２は、生成した第１の値と、受信した差分情報とに基づいて、候補値の集合を更新する。そして、受信装置１０２は、候補値の集合に含まれる値が１つに特定可能となるまで候補値の集合を更新する処理を繰り返し、候補値の集合に含まれる第２の値によって示されるデータを生成する。
【００１７】
ここで、候補値の集合の初期状態は、元データが示す値が取り得る値の集合である。また、候補値の集合は、送信装置１０１と受信装置１０２とがそれぞれで管理するものであり、送信装置１０１と受信装置１０２とは、同一内容の更新を、自身が管理する候補値の集合に対して行う。
【００１８】
例えば、元データが１バイトのデータであれば、候補値の集合の初期状態は、０から２５５までの値の集合となる。この候補値の集合の初期状態は、送信装置１０１と受信装置１０２とで同一になる。また、元データが２バイトのデータであれば、候補値の集合の初期状態は、０から６５５３５までの値の集合となる。また、元データが２バイト以上のデータについて、送信装置１０１と受信装置１０２とは、２バイト以上のデータの各バイトに対して、図１で示す処理を行ってもよい。
【００１９】
また、候補値の集合の管理方法としては、例えば、元データが示す値が取り得る値ごとに、その値が正解候補となるのか、または、誤りであると確定したかを管理してもよい。以下の例では、元データが示す値が取り得る値ごとの管理情報を、候補リストｋｏｕｈｏと称する。候補リストｋｏｕｈｏは、送信装置１０１と受信装置１０２とがそれぞれ有するが、図１では、受信装置１０２が有する候補リストｋｏｕｈｏを示す。
【００２０】
所定のルールは、送信装置１０１と受信装置１０２とで共有する、候補値の集合に含まれる第１の値を生成するルールである。送信装置１０１と受信装置１０２とは、候補値の集合が同一であれば、所定のルールに基づいて、同一の値となる第１の値を生成することになる。そして、所定のルールは、元の値を推測するために用いるルールであり、生成される第１の値は、推測結果となる値である。以下、第１の値を「推測値」と呼称する。
【００２１】
また、所定のルールは、１つでもよいし、複数あってもよいし、その複数の所定のルールのうち使用するルールを動的に変更してもよい。例えば、送信装置１０１は、複数の所定のルールのうちのいずれかの所定のルールを選択して推測値を生成し、生成した推測値から差分情報を生成し、差分情報と選択したいずれかの所定のルールを示す識別情報とを、受信装置１０２に送信してもよい。この場合、受信装置１０２は、受信した識別情報が示すいずれかの所定のルールに基づいて、推測値を生成する。また、送信装置１０１と受信装置１０２とは、推測値を生成する処理を何度か繰り返すことがあるが、繰り返しのたびに異なる所定のルールを選択してもよい。
【００２２】
また、所定のルールは、元データの特性によるものでもよい。例えば、送信装置１０１と受信装置１０２とが、送信装置１０１の過去のダンプデータを記憶するとする。この場合、所定のルールは、過去のダンプデータに基づく値が候補値の集合に含まれる場合、ダンプデータの特性として、その過去のダンプデータに基づく値を推測値として出力してもよい。過去のダンプデータに基づく値は、過去のダンプデータの値そのものでもよいし、過去のダンプデータの値が複数あるならば、過去のダンプデータの値の平均値、最小値、最大値等でもよい。また、過去のダンプデータの値が候補値の集合に含まれない場合、所定のルールは、候補値の集合に含まれるいずれかの値を推測値として出力する。
【００２３】
差分情報は、推測値と元データが示す値との差分の大きさを示す。例えば、差分情報は、差分がないことを示す第１の識別情報、または、差分があることを示す第２の識別情報でもよい。または、差分情報は、第１の識別情報、または、推測値を基準として候補値の集合を複数の部分に分割した複数の部分集合のうちの元データが示す値が含まれる部分集合を示す識別情報でもよい。ここで、差分がないということは、推測値が正解だったことを意味し、差分があるということは、推測値が誤りだったことを意味する。従って、以降の説明では、差分情報を、「正誤情報」と称する。また、候補値の集合は、正解候補となる値の集合となる。図１の説明では、正誤情報は、正解を示す第１の識別情報として「０」、または、誤りを示す第２の識別情報として「１」の１ビットの情報であるとする。
【００２４】
図１の上部に示したデータ生成システム１００では、送信装置１０１は、候補値の集合を参照して、所定のルールに基づいて推測値：１０を生成する。図１の上部の状態では、候補値の集合は、初期状態であり、０〜２５５である。この推測値：１０は誤りであるため、送信装置１０１は、「１」を有する正誤情報１１１を受信装置１０２に送信する。
【００２５】
そして、受信装置１０２は、図１の（１−１）で示すように、正誤情報１１１を送信装置１０１から受信する。また、受信装置１０２は、図１の（１−２）で示すように、候補値の集合を参照して、所定のルールに基づいて推測値：１０を生成する。このように、本実施の形態では、１回以上推測値を生成し、元データが示す値を予測する。以下の記載では、推測値を生成した回数を用いて説明することがある。図１の上部に示したデータ生成システム１００は、１回目の推測の状態を示す。
【００２６】
そして、受信装置１０２は、図１の（１−３）で示すように、生成した推測値：１０と、受信した正誤情報１１１とに基づいて、候補値の集合を更新する。図１の上段の例では、正誤情報１１１は、誤りを示す情報であるため、推測値：１０が誤りであることを示す。従って、受信装置１０２は、図１の上段で示すように、候補値の集合を、推測値：１０が含まれないように更新する。具体的には、受信装置１０２は、値：１０を正解候補から除外するため、候補リストｋｏｕｈｏの値：１０を、誤りであることを示す値に更新する。図１では、墨塗りにより正解候補から落としたことを模式的に表現する。なお、図１では図示していないが、送信装置１０１も、自身の候補リストｋｏｕｈｏの値：１０を、誤りであることを示す値に更新する。
【００２７】
図１の（１−３）の状態では、候補値の集合に含まれる値が１つに特定可能となっていないため、送信装置１０１と、受信装置１０２とは、再び推測値を生成し、候補値の集合を更新することになる。具体的には、図１の中段において、送信装置１０１は、更新された候補値の集合を参照して、所定のルールに基づいて、推測値：３８を生成し、誤りを示す「１」を正誤情報１１２として受信装置１０２に送信する。
【００２８】
一方、受信装置１０２は、図１の（２−１）で示すように、正誤情報１１２を受信する。また、受信装置１０２は、図１の（２−２）で示すように、更新された候補値の集合を参照して、所定のルールに基づいて、推測値：３８を生成する。そして、受信装置１０２は、図１の（２−３）で示すように、生成した推測値：３８と、受信した正誤情報１１２とに基づいて、候補値の集合を更新する。図１の中段の例では、正誤情報１１２は、誤りを示す情報であるため、推測値：３８が誤りであることを示す。従って、受信装置１０２は、図１の中段で示すように、候補値の集合を、推測値：３８が含まれないように更新する。
【００２９】
図１の（１−３）の状態では、候補値の集合に含まれる値が１つに特定可能となっていないため、送信装置１０１と、受信装置１０２とは、再び推測値を生成し、候補値の集合を更新することになる。具体的には、図１の下段において、送信装置１０１は、更新された候補値の集合を参照して、所定のルールに基づいて、推測値：３６を生成し、正解を示す「０」を正誤情報１１３として受信装置１０２に送信する。
【００３０】
一方、受信装置１０２は、図１の（３−１）で示すように、正誤情報１１３を受信する。また、受信装置１０２は、図１の（３−２）で示すように、更新された候補値の集合を参照して、所定のルールに基づいて、推測値：３６を生成する。そして、受信装置１０２は、生成した推測値：３６と、受信した正誤情報１１３とに基づいて、候補値の集合を更新する。図１の下段の例では、正誤情報１１２は、正解を示す情報であるため、推測値：３６が正解であることを示す。従って、受信装置１０２は、図１の（３−３）で示すように、推測値：３６が正解であるとして、推測値：３６によって示されるデータを、元データと一致するデータとして生成する。また、正誤情報として、正解を示す「０」を受信した場合、受信装置１０２は、正解となる値が判明するため、候補リストｋｏｕｈｏを更新しなくてもよい。
【００３１】
また、図１では示していないが、誤りを示す「１」となる正誤情報を２５５回受信した場合、候補値の集合に含まれる候補値が１つに特定可能となる。この場合、受信装置１０２は、候補リストｋｏｕｈｏに含まれるただ１つの候補値によって示されるデータを、元データと一致するデータとして生成する。このように、データ生成システム１００は、元データを送信しないため、通信傍受等による元データの漏洩を防ぐことができる。
【００３２】
また、図１の説明では、本実施の形態は、メモリをダンプしたダンプデータに適用することを説明したが、これに限られない。例えば、本実施の形態は、サーバをバックアップする際のバックアップデータを元データとすることもできるし、仮想マシンのマイグレーションを行う際のマイグレーションデータを元データとすることもできる。
【００３３】
次に、送信装置１０１と、受信装置１０２とのハードウェアについて、図２で説明する。
【００３４】
図２は、送信装置１０１と受信装置１０２とのハードウェア構成例を示す説明図である。また、図２で示すように、送信装置１０１と受信装置１０２とは、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等のネットワーク２００で接続される。
【００３５】
送信装置１０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、メモリ２０２と、ディスクドライブ２０３と、ディスク２０４と、通信装置２０５と、入力装置２０６と、出力装置２０７とを有する。また、ＣＰＵ２０１〜ディスクドライブ２０３、通信装置２０５〜出力装置２０７は、バス２１０によってそれぞれ接続される。
【００３６】
ＣＰＵ２０１は、送信装置１０１の全体の制御を司る演算処理装置である。ＣＰＵ２０１は、複数のコアを有するマルチコアプロセッサでもよい。メモリ２０２は、ＣＰＵ２０１のワークエリアとして使用される揮発性メモリや、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。揮発性メモリは、例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等がある。不揮発メモリには、例えば、ＮＯＲ型のフラッシュメモリ等がある。
【００３７】
ディスクドライブ２０３は、ＣＰＵ２０１の制御に従って、ディスク２０４に対するデータのリード／ライトを制御する制御装置である。例えば、ディスク２０４が、磁気ディスクであれば、磁気ディスクドライブである。また、ディスクドライブ２０３がソリッドステートドライブである場合、ディスク２０４には、半導体素子によって形成された半導体メモリ、いわゆる半導体ディスクを採用することができる。
【００３８】
通信装置２０５は、ネットワーク２００を介して受信装置１０２等の他の装置に接続される。そして、通信装置２０５は、ネットワーク２００と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。通信装置２０５には、例えばモデムやＬＡＮアダプタなどを採用することができる。
【００３９】
入力装置２０６は、送信装置１０１に情報を入力する入力装置である。例えば、入力装置２０６は、マウスやキーボード等である。マウスは、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う装置である。キーボードは、文字、数字、各種指示などの入力のためのキーを有し、データの入力を行う装置である。
【００４０】
出力装置２０７は、送信装置１０１から情報を出力する入力装置である。例えば、出力装置２０７は、ディスプレイ等である。ディスプレイは、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する装置である。ディスプレイには、例えば、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）、ＴＦＴ（Ｔｈｉｎ  Ｆｉｌｍ  Ｔｒａｎｓｉｓｔｏｒ）液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００４１】
受信装置１０２は、ＣＰＵ２５１と、メモリ２５２と、ディスクドライブ２５３と、ディスク２５４と、通信装置２５５と、入力装置２５６と、出力装置２５７とを有する。また、ＣＰＵ２５１〜ディスクドライブ２５３、通信装置２５５〜出力装置２５７は、バス２６０によってそれぞれ接続される。ＣＰＵ２５１〜出力装置２５７については、ＣＰＵ２０１〜出力装置２０７の説明において、送信装置１０１から受信装置１０２に置き換えるだけであるため、説明を省略する。
【００４２】
（送信装置１０１の機能構成例）
図３は、送信装置１０１の機能構成例を示す説明図である。送信装置１０１の機能構成例を示すブロック図である。送信装置１０１は、制御部３００を有する。制御部３００は、推測値生成部３０１と、正誤情報生成部３０２と、送信部３０３と、更新部３０４と、を含む。制御部３００は、記憶装置に記憶されたプログラムをＣＰＵ２０１が実行することにより、各部の機能を実現する。記憶装置とは、具体的には、例えば、図２に示したメモリ２０２、ディスク２０４などである。また、各部の処理結果は、メモリ２０２や、ＣＰＵ２０１のレジスタ、ＣＰＵ２０１のキャッシュメモリ等に格納される。
【００４３】
また、送信装置１０１は、対象データｓｏｕｒｃｅ、候補リストｋｏｕｈｏにアクセス可能である。送信装置１０１が有する候補リストｋｏｕｈｏは、送信元の候補値の集合を管理する。また、送信装置１０１は、対象データｓｏｕｒｃｅ、候補リストｋｏｕｈｏ以外のデータも記憶する。送信装置１０１のより具体的な記憶内容の一例については、図１０で説明する。
【００４４】
推測値生成部３０１は、送信装置１０１が有する候補リストｋｏｕｈｏを参照して送信元の候補値の集合に含まれるいずれかの値を生成する所定のルールに基づいて、推測値を生成する。
【００４５】
正誤情報生成部３０２は、推測値生成部３０１が生成した推測値と元データが示す値とに基づいて、正誤情報を生成する。正誤情報は、図１で示したように、正解を示す第１の識別情報、または、誤りを示す第２の識別情報であってもよい。または、正誤情報は、第１の識別情報、または、推測値を基準として候補値の集合を複数の部分に分割した複数の部分集合のうちの元データが示す値が含まれる部分集合を示す識別情報でもよい。候補値の集合の分割の仕方については、均等に分割してもよいし、不均等に分割してもよいが、均等に分割することが好ましい。また、分割する数は、２以上の整数ならばどのような値でもよい。ただし、正誤情報を表現するビット数を考慮すると、正誤情報を表現するビット数がｘであれば、２＾ｘ−１分割することが好ましい。例えば、ｘ＝２であれば、３分割することが好ましい。また、推測値を基準とするとは、例えば、推測値を基点として候補値の集合を複数の部分集合に分割することである。例えば、１つ目の部分集合の先頭が、推測値＋１となるようにしてもよい。
【００４６】
また、正誤情報を表現するビット数は可変でもよい。例えば、１回目の推測では、正誤情報を表現するビット数が３ビットであり、候補値の集合を２＾３−１＝７分割し、２回目の推測では、正誤情報を表現するビット数が２ビットであり、候補値の集合を３分割するとしてもよい。正誤情報となる識別情報が何を示すか、また、候補値の集合の分割の仕方についても、候補値の集合、および所定のルールと同様に、送信装置１０１と受信装置１０２とで同一の方法を用いる。
【００４７】
ここで、部分集合を示す識別情報についての具体例について説明する。例えば、候補値の集合が０〜２５５であり、推測値が１０であり、複数の部分集合は、候補値の集合を３つに均等に分割するとする。従って、元データが示す値が１０である場合、正誤情報は、第１の識別情報となる。また、元データが示す値が０〜９、１１〜２５５のいずれかである場合、次に示す３つの部分集合のうちのいずれかの部分集合を示す識別情報となる。そして、正誤情報が、１つ目の部分集合を示す識別情報となる場合とは、元データが示す値が、１０＋１から１０＋２５５／３＝１０＋８５＝９５までのいずれかの値となる場合である。また、２つ目の部分集合は、元データが示す値が、１０＋８５＋１＝９６から１０＋２５５×２／３＝１０＋１７０までのいずれかの値となる場合である。また、３つ目の部分集合は、元データが示す値が、１０＋１７０＋１＝１８１から１０＋２５５＝２６５までのいずれかの値となるが、２６５は候補値の集合の最大値２５５を超えている。このように、部分集合の最大値が候補値の集合を超えた場合、候補値の集合の最小値から、超えた数分までの数を、その部分集合に含めればよい。従って、３つ目の部分集合は、元データが示す値が、１８１から２５５まで、または０から９までのいずれかの値となる場合である。
【００４８】
送信部３０３は、正誤情報生成部３０２が生成した正誤情報を受信装置１０２に送信する。
【００４９】
更新部３０４は、推測値生成部３０１が生成した推測値と、正誤情報生成部３０２が生成した差分情報とに基づいて、送信装置１０１が有する候補リストｋｏｕｈｏを更新する。候補リストｋｏｕｈｏの更新例については、図４〜図９等で説明する。
【００５０】
制御部３００は、送信装置１０１が有する候補リストｋｏｕｈｏに含まれる候補値が１つに特定可能となるまで、送信部３０３による正誤情報を送信する処理を繰り返す。
【００５１】
（受信装置１０２の機能構成例）
図４は、受信装置１０２の機能構成例を示す説明図である。受信装置１０２の機能構成例を示すブロック図である。受信装置１０２は、制御部４００を有する。制御部４００は、受信部４０１と、推測値生成部４０２と、更新部４０３と、元データ生成部４０４と、を含む。制御部４００は、記憶装置に記憶されたプログラムをＣＰＵ２５１が実行することにより、各部の機能を実現する。記憶装置とは、具体的には、例えば、図２に示したメモリ２５２、ディスク２５４などである。また、各部の処理結果は、メモリ２５２や、ＣＰＵ２５１のレジスタ、ＣＰＵ２５１のキャッシュメモリ等に格納される。
【００５２】
また、受信装置１０２は、候補リストｋｏｕｈｏにアクセス可能である。受信装置１０２が有する候補リストｋｏｕｈｏは、受信先の候補値の集合を管理する。また、受信装置１０２は、候補リストｋｏｕｈｏ以外のデータも記憶する。受信装置１０２のより具体的な記憶内容の一例については、図１１で説明する。
【００５３】
受信部４０１は、正誤情報を送信装置１０１から受信する。
【００５４】
推測値生成部４０２は、受信装置１０２が有する候補リストｋｏｕｈｏを参照して送信元の候補値の集合に含まれるいずれかの値を生成する所定のルールに基づいて、推測値を生成する。
【００５５】
更新部４０３は、推測値生成部４０２が生成した推測値と、受信部４０１が受信した差分情報とに基づいて、受信装置１０２が有する候補リストｋｏｕｈｏを更新する。また、更新部４０３は、受信装置１０２が有する候補リストｋｏｕｈｏに含まれる候補値が１つに特定可能となるまで、受信装置１０２が有する候補リストｋｏｕｈｏを更新する処理を繰り返す。
【００５６】
例えば、正誤情報が誤りであることを示す第２の識別情報である場合、更新部４０３は、推測値が候補値の集合に含まれないように、受信装置１０２が有する候補リストｋｏｕｈｏを更新する。
【００５７】
また、正誤情報が、送信装置１０１の候補値の集合を、推測値を基準として複数の部分に分割した複数の部分集合のいずれかの部分集合を示す識別情報であるとする。この場合、更新部４０３は、受信装置１０２の候補値の集合を、推測値を基準として複数の部分に分割した複数の部分集合のうち、正誤情報が示すいずれかの部分集合に対応する部分集合を、候補値の集合として更新する。ここで、送信装置１０１の複数の部分集合の各部分集合の識別情報と、受信装置１０２の複数の部分集合の各部分集合の識別情報とは、同一の値になるとする。従って、正誤情報が示すいずれかの部分集合に対応する部分集合は、同一の識別情報で示される部分集合となる。
【００５８】
例えば、図３で説明した、候補値の集合が０〜２５５であり、推測値が１０であり、１つ目の部分集合が１１から９５までとなり、２つ目の部分集合が９６から１７０までとなり、３つ目の部分集合が１７１から２５５、０から９までとなるとする。そして、第１の識別情報が「０」、１つ目〜３つ目のそれぞれの部分集合を示す識別情報が、「１］〜「３」であるとする。ここで、正誤情報が「１」である場合、更新部４０３は、候補値の集合が、１１から９５までとなるように、受信装置１０２が有する候補リストｋｏｕｈｏを更新する。
【００５９】
元データ生成部４０４は、受信装置１０２が有する候補リストｋｏｕｈｏに含まれる候補値によって示されるデータを生成する。生成されるデータは、元データと同一のデータとなる。例えば、正誤情報が正解であることを示す第１の識別情報である場合、更新部４０３による更新を行わず、元データ生成部４０４が、推測値によって示されるデータを生成してもよい。また、正誤情報が正解であることを示す第１の識別情報である場合に、更新部４０３は、受信装置１０２が有する候補リストｋｏｕｈｏの更新を行ってもよい。
【００６０】
（実施例１）
実施例１では、正誤情報として正解を示す「０」、または誤りを示す「１」を取り得る１ビットの情報を送信する方法である。実施例１における元データ生成の一例について、図５〜図７を用いて説明する。図５〜図７で示すデータ生成システム１００は、１バイト分のデータの推測を繰り返して、元データと同一のデータを生成する。ここで、図５〜図７における元データは、値：３６であるとする。また、データサイズがｎバイトの場合、図５〜図７の処理と同様の処理をｎ回繰り返せばよい。
【００６１】
図５は、実施例１における元データ生成例を示す説明図（その１）である。１回目の推測として、送信装置１０１は、図５の（Ｓ１−１）で示すように、推測関数によるデータ生成処理を実行し、推測値：１０を得る。推測値：１０は誤りであるため、送信装置１０１は、図５の（Ｓ１−２）で示すように、正誤情報として「１」を受信装置１０２に送信する。一方、受信装置１０２は、図５の（Ｄ１）で示すように、推測関数によるデータ生成処理を実行し、推測値：１０を得る。そして、受信装置１０２は、送信装置１０１から正誤情報として「１」を受け取り、推測値：１０が誤りであると判断する。
【００６２】
送信装置１０１と受信装置１０２とは、推測値：１０が誤りであったため、候補リストｋｏｕｈｏから、推測値：１０を正解候補から除外する。図５〜図９では、墨塗りにより正解候補から落としたことを模式的に表現する。
【００６３】
そして、２回目の推測として、送信装置１０１は、図５の（Ｓ２−１）で示すように、推測関数によるデータ生成処理を実行し、推測値：３８を得る。推測値：３８は誤りであるため、送信装置１０１は、図５の（Ｓ２−２）で示すように、正誤情報として「１」を受信装置１０２に送信する。一方、受信装置１０２は、図５の（Ｄ２）で示すように、推測関数によるデータ生成処理を実行し、推測値：３８を得る。そして、受信装置１０２は、送信装置１０１から正誤情報として「１」を受け取り、推測値：３８が誤りであると判断する。
【００６４】
送信装置１０１と受信装置１０２とは、推測値：３８が誤りであったため、候補リストｋｏｕｈｏから、推測値：３８を正解候補から除外する。
【００６５】
以下、３回目の推測も２回目の推測と同様に、送信装置１０１は、図５の（Ｓ３−１）で示すように、推測関数によるデータ生成処理を実行し、推測値：３を得る。そして、推測値：３は誤りであるため、送信装置１０１は、図５の（Ｓ３−２）で示すように、正誤情報として「１」を受信装置１０２に送信する。一方、受信装置１０２は、図５の（Ｄ３）で示すように、推測関数によるデータ生成処理を実行し、推測値：３を得る。そして、受信装置１０２は、送信装置１０１から正誤情報として「１」を受け取り、推測値：３が誤りであると判断する。
【００６６】
図６は、実施例１における元データ生成例を示す説明図（その２−１）である。図６では、９回の推測を繰り返し、１０回目の推測で正解する例を示す。送信装置１０１は、図６の（Ｓ１０−１）で示すように、推測関数によるデータ生成処理を実行し、推測値：３６を得る。そして、推測値：３６は正解であるため、送信装置１０１は、図６の（Ｓ１０−２）で示すように、正誤情報として「０」を受信装置１０２に送信する。一方、受信装置１０２は、図６の（Ｄ１０）で示すように、推測関数によるデータ生成処理を実行し、推測値：３６を得る。そして、受信装置１０２は、送信装置１０１から正誤情報として「０」を受け取り、推測値：３６が正解であると判断する。これにより、受信装置１０２は、元データが値：３６であることを特定することができる。
【００６７】
図７は、実施例１における元データ生成例を示す説明図（その２−２）である。図７では、２５５回の推測を繰り返し、全て誤りとなる例を示す。送信装置１０１は、図７の（Ｓ２５５−１）で示すように、推測関数によるデータ生成処理を実行し、推測値：８を得る。そして、推測値：８は誤りであるため、送信装置１０１は、図７の（Ｓ２５５−２）で示すように、正誤情報として「１」を受信装置１０２に送信する。一方、受信装置１０２は、図７の（Ｄ２５５）で示すように、推測関数によるデータ生成処理を実行し、推測値：８を得る。そして、受信装置１０２は、送信装置１０１から正誤情報として「１」を受け取り、推測値：８が誤りであると判断する。この時点で、候補リストｋｏｕｈｏを参照すると、正解か誤りかが明らかとなっていない値が３６だけであることが特定できるため、受信装置１０２は、残っている推測値：３６が正解であると判断する。このように、受信装置１０２は、元データが推測値：３６であることを特定することができる。
【００６８】
（実施例２）
実施例２では、正誤情報として正解を示す「０」、または正解が候補値の集合内にあることを示す「１」〜「３」を取り得る２ビットの情報を送信する方法である。ここで、「１」〜「３」のそれぞれにおける候補値の集合は、１回目の推測では、候補値の集合全体を３分割したそれぞれの部分集合である。そして、２以上の整数となるｉ回目の推測では、「１」〜「３」のそれぞれにおける候補値の集合は、ｉ−１回目の推測で候補値の集合を３分割したそれぞれの部分集合である。また、実施例２では、多くとも５回の推測で正解の値を得ることができる。
【００６９】
実施例２における元データ生成の一例について、図８、図９を用いて説明する。図８、図９で示すデータ生成システム１００は、１バイト分のデータの推測を繰り返して、元データと同一のデータを生成する。ここで、図８、図９における元データは、値：３６であるとする。また、データサイズがｎバイトの場合、図８、図９の処理と同様の処理をｎ回繰り返せばよい。
【００７０】
図８は、実施例２における元データ生成例を示す説明図（その１）である。１回目の推測として、送信装置１０１は、図８の（Ｓ１−１）で示すように、推測関数によるデータ生成処理を実行し、推測値：１０を得る。推測値：１０は誤りであるため、送信装置１０１は、図８の（Ｓ１−２）で示すように、候補値の集合のうち、誤りである推測値：１０を除いた１０＋１〜１０＋２５５を３分割し、分割したそれぞれの部分集合を正誤情報の「１」〜「３」に割り当てる。ここで、１０＋２５５は、候補値の集合の最大値である２５５を超えるが、この場合、超えた分の数１０を、候補値の集合の最小値である０から数えると、９となる。
【００７１】
従って、１回目の推測において、正誤情報の「１」は、１０＋１〜１０＋８５に正解があることを示し、正誤情報の「２」は、１０＋８６〜１０＋１７０に正解があることを示し、正誤情報の「３」は、１０＋１７１〜１０＋２５５に正解があることを示す。ここで、１０＋１７１〜１０＋２５５の実際の候補値の集合は、１８１〜２５５、０〜９となる。
【００７２】
そして、送信装置１０１は、図８の（Ｓ１−２）で示すように、正誤情報の「１」の候補値の集合内に正解があることを特定し、図８の（Ｓ１−３）で示すように、正誤情報として「１」を受信装置１０２に送信する。
【００７３】
一方、受信装置１０２は、図８の（Ｄ１）で示すように、推測関数によるデータ生成処理を実行し、推測値：１０を得る。そして、受信装置１０２は、送信装置１０１から正誤情報として「１」を受け取り、推測値：１０が誤りであると判断する。さらに、受信装置１０２は、正誤情報の「１」〜「３」に割り当てられた候補値の集合を、送信装置１０１と同様に判定し、正解が１０＋１〜１０＋８５という候補値の集合内にあると判断する。
【００７４】
そして、送信装置１０１と受信装置１０２とは、推測値：１０が誤りであったため、候補リストｋｏｕｈｏから、推測値：１０を正解候補から除外する。さらに、正誤情報の「２」、「３」に割り当てられた部分集合にも正解がないことが特定できるため、送信装置１０１と受信装置１０２とは、正誤情報の「２」、「３」に割り当てられた１０＋８６〜１０＋１７０、１８１〜２５５、０〜９を正解候補から除外する。
【００７５】
２回目の推測として、送信装置１０１は、図８の（Ｓ２−１）で示すように、推測関数によるデータ生成処理を実行し、推測値：３８を得る。推測値：３８は誤りであるため、送信装置１０１は、候補値の集合１０＋１〜１０＋８５のうち、誤りである推測値：３８を除いた３８＋１〜３８＋８４を３分割し、分割したそれぞれの部分集合を正誤情報の「１」〜「３」に割り当てる。ここで、３８＋８４は、候補値の集合の最大値１０＋８５＝９５を超えるが、この場合、超えた分の数３８＋８４−９５＝２７を、候補値の集合の最小値１１から数えると、３７となる。従って、２回目の推測において、正誤情報の「１」は、３８＋１〜３８＋２８に正解があることを示し、正誤情報の「２」は、３８＋２９〜３８＋５６に正解があることを示し、正誤情報の「３」は、３８＋５７〜３８＋８４に正解があることを示す。ここで、３８＋５７〜３８＋８４の実際の候補値の集合は、９５、１１〜３７となる。
【００７６】
そして、送信装置１０１は、図８の（Ｓ２−２）で示すように、正誤情報の「３」の候補値の集合内に正解があることを特定し、図８の（Ｓ２−３）で示すように、正誤情報として「３」を受信装置１０２に送信する。
【００７７】
一方、受信装置１０２は、図８の（Ｄ２）で示すように、推測関数によるデータ生成処理を実行し、推測値：３８を得る。そして、受信装置１０２は、送信装置１０１から正誤情報として「３」を受け取り、推測値：１０が誤りであると判断する。さらに、受信装置１０２は、正誤情報の「１」〜「３」に割り当てられた候補値の集合を、送信装置１０１と同様に判定し、正解が９５、１１〜３７という候補値の集合内にあると判断する。
【００７８】
そして、送信装置１０１と受信装置１０２とは、推測値：３８が誤りであったため、候補リストｋｏｕｈｏから、推測値：３８を正解候補から除外する。さらに、正誤情報の「１」、「２」に割り当てられた候補値の集合内にも正解がないことが特定できるため、送信装置１０１と受信装置１０２とは、正誤情報の「１」、「２」に割り当てられた３８＋１〜３８＋２８、３８＋２９〜３８＋５６を正解候補から除外する。
【００７９】
以下、３回目の推測も２回目の推測と同様に、送信装置１０１は、図８の（Ｓ３−１）で示すように、推測関数によるデータ生成処理を実行し、推測値：１３を得る。推測値：１３は誤りであるため、送信装置１０１は、候補値の集合９５、１１〜３７のうち、誤りである推測値：１３を除いた１３＋１〜１３＋２７を３分割し、分割したそれぞれの部分集合を正誤情報の「１」〜「３」に割り当てる。ここで、１３＋２７＝４０となり、正解がある９５、１１〜３７の範囲の外であり、具体的には３７から３超えている。従って、３７から３つ分次の値は、３７の次の９５、９５の次の１１、１１の次の１２となり、１２となる。従って、３回目の推測において、正誤情報の「１」は、１３＋１〜１３＋９に正解があることを示し、正誤情報の「２」は、１３＋１０〜１３＋１８に正解があることを示し、正誤情報の「３」は、１３＋１９〜１３＋２７に正解があることを示す。ここで、１３＋１９〜１３＋２７の実際の候補値の集合は、３２〜３７、９５、１１、１２となる。
【００８０】
そして、送信装置１０１は、図８の（Ｓ３−２）で示すように、正誤情報の「３」の候補値の集合内に正解があることを特定し、図８の（Ｓ３−３）で示すように、正誤情報として「３」を受信装置１０２に送信する。
【００８１】
一方、受信装置１０２は、図８の（Ｄ３）で示すように、推測関数によるデータ生成処理を実行し、推測値：１３を得る。そして、受信装置１０２は、送信装置１０１から正誤情報として「３」を受け取り、推測値：１３が誤りであると判断する。さらに、受信装置１０２は、正誤情報の「１」〜「３」に割り当てられた候補値の集合を、送信装置１０１と同様に判定し、正解が３２〜３７、９５、１１、１２という候補値の集合内にあると判断する。
【００８２】
図９は、実施例２における元データ生成例を示す説明図（その２）である。図９では、図８で示した３回目の推測を終えた後の状態である。３回目の推測によって、送信装置１０１と受信装置１０２とは、推測値：１３が誤りであったため、候補リストｋｏｕｈｏから、推測値：１３を正解候補から除外する。さらに、正誤情報の「１」、「２」に割り当てられた候補値の集合にも正解がないことが特定できるため、送信装置１０１と受信装置１０２とは、正誤情報の「１」、「２」に割り当てられた１３＋１〜１３＋９、１３＋１０〜１３＋１８を正解候補から除外する。
【００８３】
４回目の推測として、送信装置１０１は、図９の（Ｓ４−１）で示すように、推測関数によるデータ生成処理を実行し、推測値：３３を得る。推測値：３３は誤りであるため、送信装置１０１は、候補値の集合３２〜３７、９５、１１、１２のうち、誤りである推測値：３３を除いた３３＋１〜３３＋８を３分割し、分割したそれぞれの部分集合を正誤情報の「１」〜「３」に割り当てる。ここで、３３＋８＝４１となり、正解がある３２〜３７、９５、１１、１２という候補値の集合の外であり、具体的には３７から４超えている。従って、３７から４つ分次の値は、３７の次の９５、９５の次の１１、１１の次の１２、１２の次の３２となり、３２となる。従って、４回目の推測において、正誤情報の「１」は、３３＋１〜３３＋３に正解があることを示し、正誤情報の「２」は、３３＋４〜３３＋６に正解があることを示し、正誤情報の「３」は、３３＋７〜３３＋８に正解があることを示す。ここで、３３＋４〜３３＋６の実際の候補値の集合は、３７、９５、１１となり、３３＋７〜３３＋８の実際の候補値の集合は、１２、３２となる。
【００８４】
そして、送信装置１０１は、図８の（Ｓ４−２）で示すように、正誤情報の「１」の候補値の集合内に正解があることを特定し、図８の（Ｓ４−３）で示すように、正誤情報として「１」を受信装置１０２に送信する。
【００８５】
一方、受信装置１０２は、図８の（Ｄ４）で示すように、推測関数によるデータ生成処理を実行し、推測値：３３を得る。そして、受信装置１０２は、送信装置１０１から正誤情報として「１」を受け取り、推測値：３３が誤りであると判断する。さらに、受信装置１０２は、正誤情報の「１」〜「３」に割り当てられた候補値の集合を、送信装置１０１と同様に判定し、正解が３３＋１〜３３＋３という候補値の集合内にあると判断する。
【００８６】
そして、送信装置１０１と受信装置１０２とは、推測値：３３が誤りであったため、候補リストｋｏｕｈｏから、推測値：３３を正解候補から除外する。さらに、正誤情報の「２」、「３」に割り当てられた候補値の集合にも正解がないことが特定できるため、送信装置１０１と受信装置１０２とは、正誤情報の「２」、「３」に割り当てられた３７、９５、１１、１２、３２を正解候補から除外する。
【００８７】
５回目の推測として、送信装置１０１は、図９の（Ｓ５−１）で示すように、推測関数によるデータ生成処理を実行し、推測値：３５を得る。推測値：３５は誤りであるため、送信装置１０１は、候補値の集合３３＋１〜３３＋３のうち、誤りである推測値：３５を除いた３５＋１〜３５＋２を３分割しようとする。しかしながら、３５＋１〜３５＋２は、２つの値しかないため、送信装置１０１は、３５＋１を正誤情報の「１」に割り当て、３５＋２を正誤情報の「２」に割り当てる。ここで、３５＋２は、正解がある３３＋１〜３３＋３の範囲の外であり、具体的には３６から１超えている。従って、３６から１つ分次の値は、３７の次の３４となる。
【００８８】
そして、送信装置１０１は、図９の（Ｓ５−２）で示すように、正誤情報の「１」の候補値の集合に正解があることを特定し、図９の（Ｓ５−３）で示すように、正誤情報として「１」を受信装置１０２に送信する。
【００８９】
一方、受信装置１０２は、図９の（Ｄ５）で示すように、推測関数によるデータ生成処理を実行し、推測値：３５を得る。そして、受信装置１０２は、送信装置１０１から正誤情報として「１」を受け取り、推測値：３５が誤りであると判断する。さらに、受信装置１０２は、正誤情報の「１」〜「３」に割り当てられた候補値の集合を、送信装置１０１と同様に判定し、正解が３６であると判断する。これにより、受信装置１０２は、元データが値：３６であることを特定することができる。
【００９０】
次に、本実施の形態で用いる情報の一例について、送信装置１０１が記憶する情報を図１０で示し、受信装置１０２が記憶する情報を図１１で示す。
【００９１】
図１０は、送信装置１０１が記憶する情報の一例を示す説明図である。ディスク２０４には、過去のダンプファイルデータ１００１と、送信データ１００２とを保持する。過去のダンプファイルデータ１００１の記憶内容の一例は、図１２で示す。また、送信データ１００２の記憶内容の一例は、図１３で示す。
【００９２】
また、送信装置１０１は、メモリ２０２内に、次に示す１１個のデータを保持するデータを保持するための領域を確保する。また、送信装置１０１は、メモリ２０２内に、ループカウンタｉ、ｊ、ｍと、汎用一時変数ｋ、ｃ、ｐとを保持するための領域を確保する。
【００９３】
保持するデータの１番目は、対象データのサイズｄａｔａｓｉｚｅである。保持するデータの２番目は、コンピュータ名ｃｏｍｐｕｔｅｒｎａｍｅである。保持するデータの３番目は、ダンプ出力日時ｄｕｍｐｄａｔｅである。図１０では、対象データのサイズｄａｔａｓｉｚｅ、コンピュータ名ｃｏｍｐｕｔｅｒｎａｍｅ、ダンプ出力日時ｄｕｍｐｄａｔｅの具体的な記憶内容の一例を示す。
【００９４】
保持するデータの４番目は、受信装置１０２で生成させる対象となる対象データｓｏｕｒｃｅである。対象データｓｏｕｒｃｅの記憶内容の一例は、図１５で示す。保持するデータの５番目は、結果インデックス変換情報ｋｅｋｋａ２ｖａｌｕｅである。結果インデックス変換情報ｋｅｋｋａ２ｖａｌｕｅの記憶内容の一例は、図１６で示す。
【００９５】
保持するデータの６番目は、候補リストｋｏｕｈｏである。候補リストｋｏｕｈｏの記憶内容の一例は、図１７で示す。保持するデータの７番目は、推測結果ｓｕｉｓｏｋｕである。推測結果ｓｕｉｓｏｋｕの記憶内容の一例は、図１８で示す。保持するデータの８番目は、正誤情報ｋｅｋｋａである。正誤情報ｋｅｋｋａの記憶内容の一例は、図１９で示す。保持するデータの９番目は、過去データ抽出サンプルｓａｍｐｌｅである。過去データ抽出サンプルｓａｍｐｌｅの記憶内容の一例は、図２０で示す。
【００９６】
保持するデータの１０番目は、開始インデックス情報ｖａｌｕｅ２ｓｔａｒｔｉｎｄｅｘである。開始インデックス情報ｖａｌｕｅ２ｓｔａｒｔｉｎｄｅｘの記憶内容の一例は、図２１で示す。保持するデータの１１番目は、終了インデックス情報ｖａｌｕｅ２ｅｎｄｉｎｄｅｘである。終了インデックス情報ｖａｌｕｅ２ｅｎｄｉｎｄｅｘの記憶内容の一例は、図２２で示す。
【００９７】
図１１は、受信装置１０２が記憶する情報の一例を示す説明図である。ディスク２５４には、過去のダンプファイルデータ１００１と、受信データ１１０１とを保持する。また、送信データ１００２の記憶内容の一例は、図１４で示す。
【００９８】
また、受信装置１０２は、メモリ２５２内に、１０個のデータを保持するデータを保持するための領域を確保する。ここで、１０個のデータは、送信装置１０１のメモリ２０２内に保持した１１個のデータのうち、対象データｓｏｕｒｃｅ以外のデータであるため、説明を省略する。また、受信装置１０２は、メモリ２５２内に、ループカウンタｉ、ｊ、ｍと、汎用一時変数ｋ、ｃ、ｐとを保持するための領域を確保する。
【００９９】
図１０、図１１で示した情報の一例について、図１２〜図２２を用いて説明する。ここで、図１２〜図２２で示した情報は、実施例２の場合の情報である。また、以下の説明において、「データに付与した符号名［ｘ］」という記載を行う場合があるが、これは、そのデータが配列変数であり、配列変数のｘ番目のデータを示す。また、「データに付与した符号名［ｘ］［ｙ］」という記載を行う場合があるが、これは、そのデータが２次元の配列変数であり、２次元配列変数のｘ行目のｙ番目のデータを示す。
【０１００】
図１２は、過去のダンプファイルデータ１００１の記憶内容の一例を示す説明図である。図１２に示す過去のダンプファイルデータ１００１は、レコード１２０１−０〜３を有する。図１２に示す過去のダンプファイルデータ１００１の値は、一例であって、他の値となることもある。
【０１０１】
過去のダンプファイルデータ１００１は、コンピュータ名と、採取日時と、ダンプファイルデータというフィールドを含む。コンピュータ名フィールドには、ダンプファイルを有していたコンピュータ名が格納される。採取日時フィールドには、ダンプファイルを採取した日時を示す文字列が格納される。ダンプファイルデータフィールドには、ｎバイトのダンプデータがバイトごとに格納される。
【０１０２】
図１３は、送信データ１００２の記憶内容の一例を示す説明図である。図１３に示す送信データ１００２は、レコード１３０１−０を有する。送信データ１００２は、元データとなるｎバイトのデータをバイトごとに記憶する。図１３に示す送信データ１００２の値は、一例であって、他の値となってもよい。
【０１０３】
図１４は、受信データ１１０１の記憶内容の一例を示す説明図である。図１４に示す受信データ１１０１は、レコード１４０１−０を有する。受信データ１１０１は、推測により生成したｎバイトのデータをバイトごとに記憶する。図１４に示す受信データ１１０１の値は、一例である。
【０１０４】
図１５は、対象データｓｏｕｒｃｅの記憶内容の一例を示す説明図である。図１５に示す対象データｓｏｕｒｃｅは、レコード１５０１−０を有する。対象データｓｏｕｒｃｅは、ディスク２０４内に保持されている送信データ１００２から読み出して、メモリ２０２に保持したデータである。従って、対象データｓｏｕｒｃｅの値は、送信データ１００２の値と同一の値を有する。
【０１０５】
図１６は、結果インデックス変換情報ｋｅｋｋａ２ｖａｌｕｅの記憶内容の一例を示す説明図である。図１６に示す結果インデックス変換情報ｋｅｋｋａ２ｖａｌｕｅは、レコード１６０１−０〜５を有する。結果インデックス変換情報ｋｅｋｋａ２ｖａｌｕｅは、実施例２が採用される際には、図１６で示す固定の値となる。
【０１０６】
結果インデックス変換情報ｋｅｋｋａ２ｖａｌｕｅの各レコードは、各回数の推測で用いる。例えば、レコード１６０１−０は、１回目の推測で用いるレコードである。そして、ｋｅｋｋａ２ｖａｌｕｅ［０］［１］〜ｋｅｋｋａ２ｖａｌｕｅ［０］［８６］が、図８の１回目の推測で示した、候補値の集合を３分割したうちの正誤情報の「１」に割り当てた部分集合に一致する。同様に、ｋｅｋｋａ２ｖａｌｕｅ［０］［８７］〜ｋｅｋｋａ２ｖａｌｕｅ［０］［１７０］が、図８の１回目の推測で示した、候補値の集合を３分割したうちの正誤情報の「２」に割り当てた集合に一致する。このように、ｋｅｋｋａ２ｖａｌｕｅ［ｘ］［ｙ］の値は、ｘ＋１番目の推測で用いられる値であって、推測関数によるデータ生成処理により得られた値＋ｙの値が、正誤情報の「０」〜［３］のいずれであるかを示す。
【０１０７】
図１７は、候補リストｋｏｕｈｏの記憶内容の一例を示す説明図である。図１７に示す候補リストｋｏｕｈｏは、レコード１７０１−０を有する。図１７に示す候補リストｋｏｕｈｏの値は、一例である。
【０１０８】
図１７に候補リストｋｏｕｈｏは、５回目の推測を終えた状態を示す。そして、ｋｏｕｈｏ［ｘ］の値ｙは、ｙ番目の推測によって推測値：ｘが正解候補から除外されたことを示す。ただし、ｙが現在の推測回数より１大きい場合、推測値：ｘは、正解候補として残っている状態である。ｋｏｕｈｏ［ｘ］の値を、「候補除外推測回数」と呼称する。例えば、図１７の状態では、推測回数が５回であるとし、ｋｏｕｈｏ［０］、［２５４］、［２５５］、すなわち値：０、２５４、２５５は、１回目の推測によって正解候補から除外したことを示す。同様に、図１７の状態では、値：１〜１０は、２回目の推測によって正解候補から除外したことを示す。従って、図１７に示す候補リストｋｏｕｈｏは、５回目の推測を終えて、候補除外推測回数が現在の推測回数である５より１大きい６となったｋｏｕｈｏ［１４］、すなわち値：１４が正解であることを示す。また、ｋｏｕｈｏ［ｘ］＝６となるｘは、ただ１つとなる。
【０１０９】
図１８は、推測結果ｓｕｉｓｏｋｕの記憶内容の一例を示す説明図である。図１８に示す推測結果ｓｕｉｓｏｋｕは、レコード１８０１−０〜５を有する。図１８に示す推測結果ｓｕｉｓｏｋｕの値は、一例である。ここで、レコード１８０１−５を有するのは、受信装置１０２だけであり、送信装置１０１はレコード１８０１−５を有さない。
【０１１０】
推測結果ｓｕｉｓｏｋｕの各レコードは、０バイト目からｎ−１バイト目までのｎバイトに対する各回数の推測結果が格納される。例えば、レコード１８０１−０は、１回目の推測結果が格納される。従って、レコード１８０１−５が、正解となる値が格納される。
【０１１１】
図１９は、正誤情報ｋｅｋｋａの記憶内容の一例を示す説明図である。図１９に示す正誤情報ｋｅｋｋａは、レコード１９０１−０〜４を有する。図１９に示す正誤情報ｋｅｋｋａは、一例である。
【０１１２】
正誤情報ｋｅｋｋａの各レコードは、０バイト目からｎ−１バイト目までのｎバイトに対する各回数の推測に対する正誤情報が格納される。例えば、レコード１９０１−０は、１回目の推測に対する正誤情報が格納される。
【０１１３】
図２０は、過去データ抽出サンプルｓａｍｐｌｅの記憶内容の一例を示す説明図である。図２０に示す過去データ抽出サンプルｓａｍｐｌｅは、レコード２００１−０〜４を有する。図２０に示す過去データ抽出サンプルｓａｍｐｌｅの値は、一例である。
【０１１４】
過去データ抽出サンプルｓａｍｐｌｅは、推測関数によるデータ生成処理で用いられるデータである。送信装置１０１と受信装置１０２とは、過去データ抽出サンプルｓａｍｐｌｅが有するレコード分の過去のメモリダンプファイルを、サンプルデータとして採用する。従って、図２０の例では、過去データ抽出サンプルｓａｍｐｌｅは、過去５回分のメモリダンプファイルを有する。
【０１１５】
図２１は、開始インデックス情報ｖａｌｕｅ２ｓｔａｒｔｉｎｄｅｘの記憶内容の一例を示す説明図である。図２１に示す開始インデックス情報ｖａｌｕｅ２ｓｔａｒｔｉｎｄｅｘは、レコード２１０１−０〜５を有する。開始インデックス情報ｖａｌｕｅ２ｓｔａｒｔｉｎｄｅｘの値は、実施例２が採用される際には、図１６で示す固定の値となる。
【０１１６】
開始インデックス情報ｖａｌｕｅ２ｓｔａｒｔｉｎｄｅｘの各レコードは、各回数の推測における正誤情報「０」〜「３」のそれぞれに割り当てる候補値の集合の先頭の値を求めるために用いる値を示す。ｘ＋１回目の推測の正誤情報の「ｙ」に割り当てられる候補値の集合の先頭の値は、ｘ回目の推測により正解があると特定された候補値の集合のうち、推測関数によるデータ生成処理により得る値から数えて、ｖａｌｕｅ２ｓｔａｒｔｉｎｄｅｘ［ｘ］［ｙ］番目にある値となる。
【０１１７】
図２２は、終了インデックス情報ｖａｌｕｅ２ｅｎｄｉｎｄｅｘの記憶内容の一例を示す説明図である。図２２に示す終了インデックス情報ｖａｌｕｅ２ｅｎｄｉｎｄｅｘは、レコード２２０１−０〜５を有する。終了インデックス情報ｖａｌｕｅ２ｅｎｄｉｎｄｅｘの値は、実施例２が採用される際には、図１６で示す固定の値となる。
【０１１８】
終了インデックス情報ｖａｌｕｅ２ｅｎｄｉｎｄｅｘの各レコードは、各回数の推測における正誤情報「０」〜「３」のそれぞれに割り当てる候補値の集合の末尾の値を求めるために用いる値を示す。ｘ＋１回目の推測の正誤情報の「ｙ」に割り当てられる候補値の集合の末尾の値は、ｘ回目の推測により正解があると特定された候補値の集合のうち、推測関数によるデータ生成処理により得る値から数えて、ｖａｌｕｅ２ｅｎｄｉｎｄｅｘ［ｘ］［ｙ］番目にある値となる。
【０１１９】
次に、送信装置１０１と受信装置１０２とが実行する元データ生成処理について、図２３〜図３０、図３２〜図３７を用いて説明する。元データ生成処理は、図２３で示す同期式で行うこともできるし、図２５で示す非同期式で行うこともできる。また、図２３〜図３０、図３２〜図３７の各ステップの処理は、表示の都合上、具体的なプログラムコードで記載することがある。
【０１２０】
図２３は、同期式における元データ生成処理手順の一例を示すフローチャートである。同期式における元データ生成処理では、送信装置１０１と受信装置１０２とが同期して元データ生成処理を行う。同期をとる方法は、例えば、送信装置１０１と受信装置１０２とは、タイマーにより同時に起動する方法がある。または、送信装置１０１の操作者と、受信装置１０２の操作者とが電話等で連絡を取り、同時に処理を開始するようにして同期をとってもよい。また、送信装置１０１と受信装置１０２とが何らかデータの送受信を行う際には、図２４で示すデータ送受信処理に従って、データを送受信する。
【０１２１】
送信装置１０１は、対象データ読込み処理を実行する（ステップＳ２３０１）。対象データ読込み処理は、図２６で示す。次に、送信装置１０１は、データ特性抽出処理を実行する（ステップＳ２３０２）。データ特性抽出処理は、図２７で示す。そして、送信装置１０１は、データ特性送信処理を実行し（ステップＳ２３０３）、データ特性を受信装置１０２に送信する。データ特性を受信した受信装置１０２は、データ特性受信処理を実行する（ステップＳ２３５１）。データ特性送信処理とデータ特性受信処理とは、図２８で示す。
【０１２２】
ステップＳ２３０３の処理終了後、送信装置１０１は、実施例２では推測を多くとも５回行うため、ループカウンタｉに０を代入する（ステップＳ２３０４）。次に、送信装置１０１は、推測関数によるデータ生成処理を実行する（ステップＳ２３０５）。推測関数によるデータ生成処理は、図２９で示す。そして、送信装置１０１は、正誤判定処理を実行する（ステップＳ２３０６）。正誤判定処理は、図３３で示す。次に、送信装置１０１は、正誤結果送信処理を実行し（ステップＳ２３０７）、正誤結果を受信装置１０２に送信する。正誤結果送信処理は、図３４で示す。
【０１２３】
一方、受信装置１０２は、ステップＳ２３５１の終了後、実施例２では推測を多くとも５回行うため、ループカウンタｉに０を代入する（ステップＳ２３５２）。次に、受信装置１０２は、推測関数によるデータ生成処理を実行する（ステップＳ２３５３）。そして、受信装置１０２は、送信装置１０１から正誤結果を受け付けて、正誤結果受信処理を実行する（ステップＳ２３５４）。正誤結果受信処理は、図３５で示す。
【０１２４】
ステップＳ２３０７の処理終了後、送信装置１０１は、ループカウンタｉに１加算し（ステップＳ２３０８）、繰り返し判定として、ループカウンタｉが５未満か否かを判断する（ステップＳ２３０９）。ループカウンタｉが５未満である場合（ステップＳ２３０９：Ｔｒｕｅ）、送信装置１０１は、ステップＳ２３０５の処理に移行する。一方、ループカウンタｉが５以上である場合（ステップＳ２３０９：Ｆａｌｓｅ）、送信装置１０１は、送信元におけるデータ蓄積処理を実行する（ステップＳ２３１０）。送信元におけるデータ蓄積処理は、図３７で示す。ステップＳ２３１０の処理終了後、送信装置１０１は、同期式における元データ生成処理を終了する。
【０１２５】
一方、受信装置１０２は、ステップＳ２３５４の処理終了後、ループカウンタｉに１加算し（ステップＳ２３５５）、繰り返し判定として、ループカウンタｉが５未満か否かを判断する（ステップＳ２３５６）。ループカウンタｉが５未満である場合（ステップＳ２３５６：Ｔｒｕｅ）、受信装置１０２は、ステップＳ２３５３の処理に移行する。一方、ループカウンタｉが５以上である場合（ステップＳ２３５６：Ｆａｌｓｅ）、受信装置１０２は、生成データ保存処理を実行する（ステップＳ２３５７）。次に、受信装置１０２は、受信先におけるデータ蓄積処理を実行する（ステップＳ２３５８）。受信先におけるデータ蓄積処理は、送信元におけるデータ蓄積処理とほぼ同様の処理であるため、図示を省略する。送信元におけるデータ蓄積処理に対する受信先におけるデータ蓄積処理の差異の説明については、図３７の説明と併せて行う。
【０１２６】
ステップＳ２３５８の処理終了後、受信装置１０２は、同期式における元データ生成処理を終了する。
【０１２７】
図２４は、データ送受信処理手順の一例を示すフローチャートである。送信装置１０１は、接続依頼を受信装置１０２に送信する（ステップＳ２４０１）。接続依頼を送信した後、送信装置１０１は、送信した接続依頼の応答を待ち受ける。
【０１２８】
一方、受信装置１０２は、接続待ちを開始し（ステップＳ２４５１）、接続依頼があったか否かを判断する（ステップＳ２４５２）。一方、接続依頼がない場合（ステップＳ２４５２：接続無し）、受信装置１０２は、ステップＳ２４５１の処理に移行する。接続依頼があった場合（ステップＳ２４５２：接続有り）、受信装置１０２は、接続を受付け（ステップＳ２４５３）、接続依頼の応答を送信装置１０１に送信し、接続を確立する（ステップＳ２４５４）。
【０１２９】
送信装置１０１は、接続依頼の応答があったか否かを判断する（ステップＳ２４０２）。接続依頼の応答がない場合（ステップＳ２４０２：応答無し）、送信装置１０１は、ステップＳ２４０１の処理に移行する。接続依頼の応答があった場合（ステップＳ２４０２：応答有り）、送信装置１０１は、接続を確立する（ステップＳ２４０３）。そして、送信装置１０１は、データを受信装置１０２に送信する（ステップＳ２４０４）。データを送信後、送信装置１０１は、データ送受信処理を終了する。
【０１３０】
一方、ステップＳ２４５４の処理終了後、受信装置１０２は、送信装置１０１からデータを受信する（ステップＳ２４５５）。データを受信後、受信装置１０２は、データ送受信処理を終了する。
【０１３１】
図２５は、非同期式における元データ生成処理手順の一例を示すフローチャートである。同期式における元データ生成処理では、送信装置１０１と受信装置１０２とが同期せずに元データ生成処理を行う。従って、受信装置１０２は、送信装置１０１の処理が終了してから元データ生成処理を行う。
【０１３２】
送信装置１０１は、対象データ読込み処理を実行する（ステップＳ２５０１）。次に、送信装置１０１は、データ特性抽出処理を実行する（ステップＳ２５０２）。そして、送信装置１０１は、データ特性ファイル出力処理を実行する（ステップＳ２５０３）。データ特性ファイル出力処理は、データ特性送信処理とほぼ同様の処理であるため、図示を省略する。データ特性送信処理に対するデータ特性ファイル出力処理の差異の説明については、図２８で説明する。
【０１３３】
ステップＳ２５０３の処理終了後、送信装置１０１は、ループカウンタｉに０を代入する（ステップＳ２５０４）。次に、送信装置１０１は、推測関数によるデータ生成処理を実行する（ステップＳ２５０５）。そして、送信装置１０１は、正誤判定処理を実行する（ステップＳ２５０６）。次に、送信装置１０１は、正誤結果ファイル出力処理を実行する（ステップＳ２５０７）。正誤結果ファイル出力処理は、正誤結果送信処理とほぼ同様の処理であるため、図示を省略する。正誤結果送信処理に対する正誤結果ファイル出力処理の差異の説明については、図３４の説明と併せて行う。
【０１３４】
そして、送信装置１０１は、ループカウンタｉに１加算し（ステップＳ２５０８）、繰り返し判定として、ループカウンタｉが５未満か否かを判断する（ステップＳ２５０９）。ループカウンタｉが５未満である場合（ステップＳ２５０９：Ｔｒｕｅ）、送信装置１０１は、ステップＳ２５０５の処理に移行する。一方、ループカウンタｉが５以上である場合（ステップＳ２５０９：Ｆａｌｓｅ）、送信装置１０１は、送信元におけるデータ蓄積処理を実行する（ステップＳ２５１０）。そして、送信装置１０１は、ステップＳ２５０３、Ｓ２５０７の各処理で出力したデータファイルを受信装置１０２に送信する（ステップＳ２５１１）。ステップＳ２５１１の処理終了後、送信装置１０１は、非同期式における元データ生成処理を終了する。
【０１３５】
ここで、データファイルの送信について、送信装置１０１と受信装置１０２とは、電子メールや、ＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）によるファイル転送を利用してもよい。また、データファイルは、一般的な圧縮アルゴリズムによって圧縮されたデータでもよい。
【０１３６】
一方、受信装置１０２は、送信装置１０１からデータファイルを受信する（ステップＳ２５５１）。次に、受信装置１０２は、データ特性読込み処理を実行する（ステップＳ２５５２）。データ特性読込み処理は、データ特性受信処理とほぼ同様の処理であるため、図示を省略する。データ特性受信処理に対するデータ特性読込み処理の差異の説明については、図２８の説明と併せて行う。
【０１３７】
そして、受信装置１０２は、ステップＳ２３５１の終了後、ループカウンタｉに０を代入する（ステップＳ２５５３）。次に、受信装置１０２は、推測関数によるデータ生成処理を実行する（ステップＳ２５５４）。そして、受信装置１０２は、正誤結果読込み処理を実行する（ステップＳ２５５５）。正誤結果読込み処理は、正誤結果受信処理とほぼ同様の処理であるため、図示を省略する。正誤結果受信処理に対する正誤結果読込み処理の差異の説明については、図３５の説明と併せて行う。
【０１３８】
次に、受信装置１０２は、ループカウンタｉに１加算し（ステップＳ２５５６）、繰り返し判定として、ループカウンタｉが５未満か否かを判断する（ステップＳ２５５７）。ループカウンタｉが５未満である場合（ステップＳ２５５７：Ｔｒｕｅ）、受信装置１０２は、ステップＳ２５５４の処理に移行する。一方、ループカウンタｉが５以上である場合（ステップＳ２５５７：Ｆａｌｓｅ）、受信装置１０２は、生成データ保存処理を実行する（ステップＳ２５５８）。次に、受信装置１０２は、受信先におけるデータ蓄積処理を実行する（ステップＳ２５５９）。ステップＳ２５５９の処理終了後、受信装置１０２は、非同期式における元データ生成処理を終了する。
【０１３９】
図２６は、対象データ読込み処理手順の一例を示すフローチャートである。送信装置１０１は、ディスク２０４に保存されている送信データ１００２をメモリ２０２内の配列変数ｓｏｕｒｃｅに読込む（ステップＳ２６０１）。次に、送信装置１０１は、読込んだ送信データ１００２のサイズｎを、変数ｄａｔａｓｉｚｅに代入する（ステップＳ２６０２）。ステップＳ２６０２の処理終了後、送信装置１０１は、対象データ読込み処理を終了する。
【０１４０】
図２７は、データ特性抽出処理手順の一例を示すフローチャートである。送信装置１０１は、配列変数ｓｏｕｒｃｅから、コンピュータ名とダンプ出力日時とを抽出する（ステップＳ２７０１）。
【０１４１】
次に、送信装置１０１は、抽出したコンピュータ名とダンプ出力日時とを、変数ｃｏｍｐｕｔｅｒｎａｍｅ、ｄｕｍｐｄａｔｅにそれぞれ代入する（ステップＳ２７０２）。ステップＳ２７０２の処理について、図２７では、データ特性がコンピュータ名とダンプ出力日時としているが、これに限らない。また、データ特性を配列変数から抽出することについても、これに限らない。例えば、送信装置１０１は、配列変数ｓｏｕｒｃｅ以外のデータからデータ特性を抽出してもよいし、送信装置１０１の操作者によって入力されたデータをデータ特性として設定してもよい。ステップＳ２７０２の処理終了後、送信装置１０１は、データ特性抽出処理を終了する。
【０１４２】
図２８は、データ特性送信処理手順とデータ特性受信処理手順との一例を示すフローチャートである。データ特性送信処理として、送信装置１０１は、変数ｄａｔａｓｉｚｅの値と、変数ｃｏｍｐｕｔｅｒｎａｍｅの値と、変数ｄｕｍｐｄａｔｅの値とを受信装置１０２に送信する（ステップＳ２８０１）。ステップＳ２８０１の処理終了後、送信装置１０１は、データ特性送信処理を終了する。また、データ特性ファイル出力処理では、送信装置１０１は、変数ｄａｔａｓｉｚｅの値と、変数ｃｏｍｐｕｔｅｒｎａｍｅの値と、変数ｄｕｍｐｄａｔｅの値とをデータファイルに出力する。
【０１４３】
一方、データ特性受信処理として、受信装置１０２は、受信した値を変数ｄａｔａｓｉｚｅと、変数ｃｏｍｐｕｔｅｒｎａｍｅ、ｄｕｍｐｄａｔｅにそれぞれ代入する（ステップＳ２８５１）。ステップＳ２８５１の処理終了後、受信装置１０２は、データ特性受信処理を終了する。また、データ特性読込み処理では、受信装置１０２は、データファイルに記載された値を変数ｄａｔａｓｉｚｅと、変数ｃｏｍｐｕｔｅｒｎａｍｅ、ｄｕｍｐｄａｔｅにそれぞれ代入する。
【０１４４】
図２９は、推測関数によるデータ生成処理手順の一例を示すフローチャートである。推測関数によるデータ生成処理は、送信装置１０１と受信装置１０２とが行う処理である。図２９では、送信装置１０１が推測関数によるデータ生成処理を実行する例を用いて説明を行う。
【０１４５】
送信装置１０１は、変数ｄａｔａｓｉｚｅ分繰り返すため、ループカウンタｊに０を代入する（ステップＳ２９０１）。次に、現在が１回目の推測か否かを判断する（ステップＳ２９０２）。１回目の推測か否かについては、具体的なプログラムコードで記載すると、「ｉｆ  ｉ＝０」の処理結果で判断することができる。
【０１４６】
現在が１回目の推測である場合（ステップＳ２９０２：Ｔｒｕｅ）、送信装置１０１は、候補リストｋｏｕｈｏの全てに１を代入する（ステップＳ２９０３）。ステップＳ２９０３の処理は、具体的なプログラムコードで記載すると、「ｋｏｕｈｏ［０］：＝１，…，ｋｏｕｈｏ［２５５］：＝１」となる。ステップＳ２９０３の時点では、まだ推測が１度も行われていない。従って、ｋｏｕｈｏ［０］〜［２５５］の値、すなわち、候補除外推測回数を１に設定することにより、値：０〜２５５の全てが正解候補として設定された状態となる。
【０１４７】
一方、現在が１回目の推測でない、すなわち２回目以上の推測である場合（ステップＳ２９０２：Ｆａｌｓｅ）、送信装置１０１は、前回の推測が正解だったか否かを判断する（ステップＳ２９０４）。前回の推測が正解だったか否かについては、具体的なプログラムコードで記載すると、「ｉｆ  ｋｅｋｋａ［ｉ−１］［ｊ］＝０」の処理結果で判断することができる。
【０１４８】
前回の推測が正解だった場合（ステップＳ２９０４：Ｔｒｕｅ）、送信装置１０１は、前回の推測を、今回の推測結果に代入する（ステップＳ２９０５）。ステップＳ２９０５の処理は、具体的なプログラムコードで記載すると、「ｓｕｉｓｏｋｕ［ｉ］［ｊ］：＝ｓｕｉｓｏｋｕ［ｉ−１］［ｊ］」となる。
【０１４９】
一方、前回の推測が誤りだった場合（ステップＳ２９０４：Ｆａｌｓｅ）、送信装置１０１は、候補リスト作成処理を実行する（ステップＳ２９０６）。候補リスト作成処理は、図３０で説明する。ステップＳ２９０３、Ｓ２９０６の処理終了後、送信装置１０１は、データ推測処理を実行する（ステップＳ２９０７）。データ推測処理は、図３２で示す。ステップＳ２９０５、Ｓ２９０７の処理終了後、送信装置１０１は、ループカウンタｊに１加算し（ステップＳ２９０８）、ループカウンタｊが変数ｄａｔａｓｉｚｅ未満か否かを判断する（ステップＳ２９０９）。ループカウンタｊが変数ｄａｔａｓｉｚｅ未満である場合（ステップＳ２９０９：Ｔｒｕｅ）、送信装置１０１は、ステップＳ２９０２の処理に移行する。一方、ループカウンタｊが変数ｄａｔａｓｉｚｅ以上である場合（ステップＳ２９０９：Ｆａｌｓｅ）、送信装置１０１は、推測関数によるデータ生成処理を終了する。
【０１５０】
図３０は、候補リスト作成処理手順の一例を示すフローチャートである。候補リスト作成処理は、送信装置１０１と受信装置１０２とが行う処理である。図３０では、送信装置１０１が候補リスト作成処理を実行する例を用いて説明を行う。
【０１５１】
送信装置１０１は、候補リストｋｏｕｈｏの全てに１を代入する（ステップＳ３００１）。ステップＳ３００１の処理は、具体的なプログラムコードで記載すると、「ｋｏｕｈｏ［０］：＝１，…，ｋｏｕｈｏ［２５５］：＝１」となる。次に、送信装置１０１は、ｉ＋１回繰り返すため、ループカウンタｍに０を代入する（ステップＳ３００２）。
【０１５２】
そして、送信装置１０１は、変数ｋにｍ＋１回目の推測結果の値を代入し、また、カウンタ変数ｃに０を代入する（ステップＳ３００３）。ステップＳ３００３の処理は、具体的なプログラムコードで記載すると、「ｋ  ：＝  ｓｕｉｓｏｋｕ［ｍ］［ｊ］、  ｃ  ：＝  ０」となる。このように、ｍ＋１回目の推測結果は、ｓｕｉｓｏｋｕ［ｍ］、言い換えれば、レコード１８０１−ｍに格納されている。
【０１５３】
次に、送信装置１０１は、候補リストｋｏｕｈｏのｋの値、すなわち候補除外推測回数がｍ＋１ならば、カウント変数ｃに１加算する（ステップＳ３００４）。ステップＳ３００４の処理は、具体的なプログラムコードで記載すると、「ｉｆ  （ｋｏｕｈｏ［ｋ］＝ｍ＋１）  ｔｈｅｎ  ｃ：＝  ｃ＋１」となる。
【０１５４】
そして、送信装置１０１は、変数ｋに１加算し、加算した結果ｋが２５６以上になった場合、ｋに０を代入する（ステップＳ３００５）。ステップＳ３００５の処理は、具体的なプログラムコードで記載すると、「ｋ：＝  ｋ＋１、  ｉｆ  （ｋ＞＝２５６）  ｔｈｅｎ  ｋ：＝  ０」となる。
【０１５５】
次に、送信装置１０１は、カウンタ変数ｃが、推測関数によるデータ生成処理により得られた値からｍ＋１回目の推測結果で正解が含まれる候補値の集合の先頭の値までの数より小さいか否かを判断する（ステップＳ３００６）。ここで、推測関数によるデータ生成処理により得られた値からｍ＋１回目の推測結果で正解が含まれる候補値の集合の先頭の値までの数は、ｖａｌｕｅ２ｓｔａｒｔｉｎｄｅｘ［ｍ］で得ることができる。さらに、ｍ＋１回目の推測結果は、ｋｅｋｋａ［ｍ］［ｊ］で得ることができる。従って、カウンタ変数ｃが前述した数より小さいかは、具体的なプログラムコードで記載すると、「ｉｆ  ｃ  ＜  ｖａｌｕｅ２ｓｔａｒｔｉｎｄｅｘ［ｍ］［ｋｅｋｋａ［ｍ］［ｊ］］」の処理結果で判断することができる。ステップＳ３００６の処理において処理結果が真となる場合（ステップＳ３００６：Ｔｒｕｅ）、送信装置１０１は、ステップＳ３００４の処理に移行する。
【０１５６】
ステップＳ３００６の処理において処理結果が偽となる場合（ステップＳ３００６：Ｆａｌｓｅ）、送信装置１０１は、候補リストｋｏｕｈｏのｋの値、すなわち候補除外推測回数がｍ＋１ならば、候補リストｋｏｕｈｏのｋの値に１加算し、さらに、カウント変数ｃに１加算する（ステップＳ３００７）。ステップＳ３００７の処理は、具体的なプログラムコードで記載すると、「ｉｆ  （ｋｏｕｈｏ［ｋ］＝ｍ＋１）  ｔｈｅｎ  ｛  ｋｏｕｈｏ［ｋ］：＝  ｋｏｕｈｏ［ｋ］  ＋１；  ｃ：＝  ｃ＋１  ｝」となる。
【０１５７】
次に、送信装置１０１は、変数ｋに１加算し、加算した結果ｋが２５６以上になった場合、ｋに０を代入する（ステップＳ３００８）。ステップＳ３００８の処理は、具体的なプログラムコードで記載すると、「ｋ：＝  ｋ＋１、ｉｆ  （ｋ＞＝２５６）  ｔｈｅｎ  ｋ：＝  ０」となる。
【０１５８】
そして、送信装置１０１は、カウンタ変数ｃが、推測関数によるデータ生成処理により得られた値からｍ＋１回目の推測結果で正解が含まれる候補値の集合の末尾の値までの数より小さいか否かを判断する（ステップＳ３００９）。ここで、推測関数によるデータ生成処理により得られた値からｍ＋１回目の推測結果で正解が含まれる候補値の集合の末尾の値までの数は、ｖａｌｕｅ２ｅｎｄｉｎｄｅｘ［ｍ］で得ることができる。従って、カウンタ変数ｃが前述した数より小さいかは、具体的なプログラムコードで記載すると、「ｉｆ  ｃ  ＜  ｖａｌｕｅ２ｅｎｄｉｎｄｅｘ［ｍ］［ｋｅｋｋａ［ｍ］［ｊ］］」の処理結果で判断することができる。ステップＳ３００６の処理において処理結果が真となる場合（ステップＳ３００９：Ｔｒｕｅ）、送信装置１０１は、ステップＳ３００７の処理に移行する。
【０１５９】
ステップＳ３００９の処理において処理結果が偽となる場合（ステップＳ３００９：Ｆａｌｓｅ）、送信装置１０１は、ループカウンタｍに１を加算する（ステップＳ３０１０）。そして、送信装置１０１は、ｍがｉより小さいか否かを判断する（ステップＳ３０１１）。ｍがｉより小さい場合（ステップＳ３０１１：Ｔｒｕｅ）、送信装置１０１は、ステップＳ３００３の処理に移行する。一方、ｍがｉ以上である場合（ステップＳ３０１１：Ｆａｌｓｅ）、送信装置１０１は、候補リスト作成処理を終了する。次に、候補リスト作成処理中における候補リストｋｏｕｈｏの記憶内容の変化の一例を、図３１を用いて説明する。
【０１６０】
図３１は、候補リストｋｏｕｈｏの記憶内容の変化の一例を示す説明図である。図３１では、ｉ＝４とする。また、図３１で示す例は、図８、図９で示した例と同一である。従って、１回目の推測、言い換えれば、ｍ＝０の際には、ｓｕｉｓｏｋｕ［ｍ］［ｊ］＝１０、ｋｅｋｋａ［ｍ］［ｊ］＝１とする。この場合、ｓｕｉｓｏｋｕ［ｍ］［ｊ］＋ｖａｌｕｅ２ｓｔａｒｔｉｎｄｅｘ［ｍ］［ｋｅｋｋａ［ｍ］［ｊ］］は、推測値：１１となる。また、ｓｕｉｓｏｋｕ［ｍ］［ｊ］＋ｖａｌｕｅ２ｅｎｄｉｎｄｅｘ［ｍ］［ｋｅｋｋａ［ｍ］［ｊ］］は、推測値：９５となる。
【０１６１】
また、候補リストｋｏｕｈｏの候補除外推測回数が２とならなかった箇所、すなわち、１のままの箇所が、図８、図９での１回目の推測で説明した、１回目の推測によって正解候補から除外した値となる。図３１の最も上部に示した候補リストｋｏｕｈｏでは、１回目の推測によって正解候補から除外した値を、墨塗りで示す。
【０１６２】
同様に、２回目の推測、言い換えれば、ｍ＝１の際には、ｓｕｉｓｏｋｕ［ｍ］［ｊ］＝３８、ｋｅｋｋａ［ｍ］［ｊ］＝３とする。この場合、ｓｕｉｓｏｋｕ［ｍ］［ｊ］＋ｖａｌｕｅ２ｓｔａｒｔｉｎｄｅｘ［ｍ］［ｋｅｋｋａ［ｍ］［ｊ］］は、値：９５となる。また、ｓｕｉｓｏｋｕ［ｍ］［ｊ］＋ｖａｌｕｅ２ｅｎｄｉｎｄｅｘ［ｍ］［ｋｅｋｋａ［ｍ］［ｊ］］は、値：３７となる。
【０１６３】
また、候補リストｋｏｕｈｏの候補除外推測回数が３とならなかった箇所、すなわち、１または２の箇所が、図８、図９での２回目の推測で説明した正解候補から除外した値となる。図３１の上から２番目に示した候補リストｋｏｕｈｏでは、２回目の推測によって正解候補から除外した値を、墨塗りで示す。
【０１６４】
同様に、３回目の推測、言い換えれば、ｍ＝２の際には、ｓｕｉｓｏｋｕ［ｍ］［ｊ］＝１３、ｋｅｋｋａ［ｍ］［ｊ］＝３とする。この場合、ｓｕｉｓｏｋｕ［ｍ］［ｊ］＋ｖａｌｕｅ２ｓｔａｒｔｉｎｄｅｘ［ｍ］［ｋｅｋｋａ［ｍ］［ｊ］］は、値：３２となる。また、ｓｕｉｓｏｋｕ［ｍ］［ｊ］＋ｖａｌｕｅ２ｅｎｄｉｎｄｅｘ［ｍ］［ｋｅｋｋａ［ｍ］［ｊ］］は、値：１２となる。
【０１６５】
また、候補リストｋｏｕｈｏの候補除外推測回数が４とならなかった箇所、すなわち、１〜３のいずれかの箇所が、図８、図９での３回目の推測で説明した正解候補から除外した値となる。図３１の上から３番目に示した候補リストｋｏｕｈｏでは、３回目の推測によって正解候補から除外した値を、墨塗りで示す。
【０１６６】
同様に、４回目の推測、言い換えれば、ｍ＝３の際には、ｓｕｉｓｏｋｕ［ｍ］［ｊ］＝３３、ｋｅｋｋａ［ｍ］［ｊ］＝１とする。この場合、ｓｕｉｓｏｋｕ［ｍ］［ｊ］＋ｖａｌｕｅ２ｓｔａｒｔｉｎｄｅｘ［ｍ］［ｋｅｋｋａ［ｍ］［ｊ］］は、値：３４となる。また、ｓｕｉｓｏｋｕ［ｍ］［ｊ］＋ｖａｌｕｅ２ｅｎｄｉｎｄｅｘ［ｍ］［ｋｅｋｋａ［ｍ］［ｊ］］は、値：３６となる。
【０１６７】
また、候補リストｋｏｕｈｏの候補除外推測回数が５とならなかった箇所、すなわち、１〜４のいずれかの箇所が、図８、図９での４回目の推測で説明した正解候補から除外した値となる。図３１の一番下に示した候補リストｋｏｕｈｏでは、４回目の推測によって正解候補から除外した値を、墨塗りで示す。
【０１６８】
図３２は、データ推測処理手順の一例を示すフローチャートである。図３２で示すデータ推測処理は、バイト単位に前回の値、前々回の値、…を推測結果として出力する。そして、データ推測処理は、送信装置１０１と受信装置１０２とが行う処理である。図３２では、送信装置１０１が、データ推測処理を実行する例を用いて説明する。
【０１６９】
送信装置１０１は、過去のダンプファイルデータ１００１から、コンピュータ名がｃｏｍｐｕｔｅｒｎａｍｅと一致する、採取日時の新しい方から５回分のデータを抽出し、過去データ抽出サンプルｓａｍｐｌｅに代入する（ステップＳ３２０１）。また、過去データがない場合、送信装置１０１は、過去データ抽出サンプルｓａｍｐｌｅを０埋めする。
【０１７０】
次に、多くとも５回繰り返すため、送信装置１０１は、ループカウンタｍに０を代入する（ステップＳ３２０２）。そして、送信装置１０１は、ｓａｍｐｌｅ［ｍ］［ｊ］の値をｋに代入する（ステップＳ３２０３）。そして、送信装置１０１は、候補リストｋｏｕｈｏのｋが正解候補として残っているか否かを判断する（ステップＳ３２０４）。候補リストｋｏｕｈｏのｋが正解候補に残っているかは、図１７で説明したように、候補リストｋｏｕｈｏのｋの候補除外推測回数が、現在の推測回数より１大きければよい。そして、現在の推測回数は、ｉで示される。従って、候補リストｋｏｕｈｏのｋが正解候補として残っているかは、具体的なプログラムコードで記載すると、「ｉｆ  ｋｏｕｈｏ［ｋ］  ＝  ｉ＋１」の処理結果で判断することができる。
【０１７１】
ｋが正解候補として残っている場合（ステップＳ３２０４：Ｔｒｕｅ）、送信装置１０１は、ｋの値を推測結果として代入する（ステップＳ３２０５）。ステップＳ３２０５の処理は、具体的なプログラムコードで記載すると、「ｓｕｉｓｏｋｕ［ｉ］［ｊ］：＝  ｋ」となる。ステップＳ３２０５の処理終了後、送信装置１０１は、データ推測処理を終了する。
【０１７２】
一方、ｋが正解候補として残っていない場合（ステップＳ３２０４：Ｆａｌｓｅ）、送信装置１０１は、変数ｍに１加算する（ステップＳ３２０６）。次に、送信装置１０１は、ｍが５未満か否かを判断する（ステップＳ３２０７）。ｍが５未満である場合（ステップＳ３２０７：Ｔｒｕｅ）、送信装置１０１は、ステップＳ３２０３の処理に移行する。一方、ｍが５以上である場合（ステップＳ３２０７：Ｆａｌｓｅ）、送信装置１０１は、候補リストｋｏｕｈｏの各値の中で候補除外推測回数がｉ＋１となる最小の値を、推測結果に代入する（ステップＳ３２０８）。ステップＳ３２０８の処理終了後、送信装置１０１は、データ推測処理を終了する。
【０１７３】
また、データ推測処理は、図３２で示す処理に限られない。例えば、送信装置１０１や受信装置１０２は、バイト単位に過去データの出現回数の多い値を、推測結果として出力してもよい。また、送信装置１０１や受信装置１０２は、データ特性に応じて、データ推測方法を切り替えてもよい。
【０１７４】
図３３は、正誤判定処理手順の一例を示すフローチャートである。正誤判定処理は、送信装置１０１が実行する処理である。送信装置１０１は、ｄａｔａｓｉｚｅ回繰り返すため、ループカウンタｊに０を代入する（ステップＳ３３０１）。次に、送信装置１０１は、推測結果が正しいかを判断する（ステップＳ３３０２）。ここで、推測結果が正しいかは、具体的なプログラムコードで記載すると、「ｉｆ  ｓｏｕｒｃｅ［ｊ］  ＝  ｓｕｉｓｏｋｕ［ｉ］［ｊ］」の処理結果で判断することができる。
【０１７５】
推測結果が誤りである場合（ステップＳ３３０２：Ｆａｌｓｅ）、正誤情報の「１」〜「３」のそれぞれに割り当てられた候補値の集合のうちのどれに正解が含まれるかを判断するため、送信装置１０１は、現在が１回目の推測か否かを判断する（ステップＳ３３０３）。現在が１回目の推測か否かについては、具体的なプログラムコードで記述すると、「ｉｆ  ｉ  ＝  ０」の処理結果で判断することができる。
【０１７６】
現在が１回目の推測である場合（ステップＳ３３０３：Ｔｒｕｅ）、送信装置１０１は、候補リストｋｏｕｈｏの全てに１を代入する（ステップＳ３３０４）。ステップＳ３３０４の処理は、具体的なプログラムコードで記載すると、「ｋｏｕｈｏ［０］：＝１，…，ｋｏｕｈｏ［２５５］：＝１」となる。一方、１回目の推測でない場合（ステップＳ３３０３：Ｆａｌｓｅ）、送信装置１０１は、候補リスト作成処理を実行する（ステップＳ３３０５）。
【０１７７】
ステップＳ３３０４、またはＳ３３０５の処理終了後、対象データの値から推測結果までを繰り返すため、送信装置１０１は、変数ｋに対象データの値を代入し、また、カウンタ変数ｃに０を代入する（ステップＳ３３０６）。ステップＳ３３０６の処理は、具体的なプログラムコードで記載すると、「ｋ：＝  ｓｏｕｒｃｅ［ｊ］、ｃ：＝  ０」となる。
【０１７８】
次に、送信装置１０１は、候補リストｋｏｕｈｏのｋの候補除外推測回数がｉ＋１ならば、カウント変数ｃに１加算する（ステップＳ３３０７）。ステップＳ３３０７の処理は、具体的なプログラムコードで記載すると、「ｉｆ  （ｋｏｕｈｏ［ｋ］  ＝  ｉ＋１）  ｔｈｅｎ  ｃ：＝  ｃ＋１」となる。
【０１７９】
そして、送信装置１０１は、変数ｋに１加算し、加算した結果ｋが２５６以上になった場合、ｋに０を代入する（ステップＳ３３０８）。ステップＳ３３０８の処理は、具体的なプログラムコードで記載すると、「ｋ：＝  ｋ＋１、  ｉｆ  （ｋ＞＝２５６）  ｔｈｅｎ  ｋ：＝  ０」となる。
【０１８０】
次に、送信装置１０１は、変数ｋが推測結果に到達したか否かを判断する（ステップＳ３３０９）。変数ｋが推測結果に到達したか否かについては、具体的なプログラムコードで記載すると、「ｉｆ  ｋ  ＝  ｓｕｉｓｏｋｕ［ｉ］［ｊ］」の処理結果で判断することができる。変数ｋが推測結果に到達していない場合（ステップＳ３３０９：Ｆａｌｓｅ）、送信装置１０１は、ステップＳ３３０７の処理に移行する。
【０１８１】
一方、変数ｋが推測結果に到達した場合（ステップＳ３３０９：Ｔｒｕｅ）、送信装置１０１は、カウント変数ｃの値を結果インデックス変換情報ｋｅｋｋａ２ｖａｌｕｅのｉ＋１番目の推測で用いるレコードにより変換した値を、正誤情報ｋｅｋｋａに代入する（ステップＳ３３１０）。ステップＳ３３１０の処理は、具体的なプログラムコードで記載すると、「ｋｅｋｋａ［ｉ］［ｊ］：＝  ｋｅｋｋａ２ｖａｌｕｅ［ｉ］［ｃ］」となる。
【０１８２】
推測結果が正しい場合（ステップＳ３３０２：Ｔｒｕｅ）、送信装置１０１は、正解を意味する「０」を正誤情報ｋｅｋｋａに代入する（ステップＳ３３１１）。
【０１８３】
ステップＳ３３１０、またはＳ３３１１の処理終了後、送信装置１０１は、ループカウンタｊに１を加算する（ステップＳ３３１２）。そして、送信装置１０１は、ｊが変数ｄａｔａｓｉｚｅより小さいか否かを判断する（ステップＳ３３１３）。ｊが変数ｄａｔａｓｉｚｅより小さい場合（ステップＳ３３１３：Ｔｒｕｅ）、送信装置１０１は、ステップＳ３３０２の処理に移行する。一方、ｊが変数ｄａｔａｓｉｚｅ以上である場合（ステップＳ３３１３：Ｆａｌｓｅ）、送信装置１０１は、正誤判定処理を終了する。
【０１８４】
図３４は、正誤結果送信処理手順の一例を示すフローチャートである。正誤結果送信処理は、送信装置１０１が実行する処理である。送信装置１０１は、ｄａｔａｓｉｚｅ回繰り返すため、変数ｊに０を代入し、また、変数ｐとカウンタ変数ｃに、０を代入する（ステップＳ３４０１）。
【０１８５】
次に、送信装置１０１は、現在が１回目の推測か否かを判断する（ステップＳ３４０２）。１回目の推測か否かについては、具体的なプログラムコードで記載すると、「ｉｆ  ｉ＝０」の処理結果で判断することができる。
【０１８６】
現在が１回目の推測でない場合（ステップＳ３４０２：Ｆａｌｓｅ）、送信装置１０１は、前回の推測が正解だったか否かを判断する（ステップＳ３４０３）。前回の推測が正解だったか否かについては、具体的なプログラムコードで記載すると、「ｉｆ  ｋｅｋｋａ［ｉ−１］［ｊ］  ＝  ０」の処理結果で判断することができる。
【０１８７】
前回の推測が正解でない場合（ステップＳ３４０３：Ｆａｌｓｅ）、または、現在が１回目の推測である場合（ステップＳ３４０２：Ｔｒｕｅ）、送信装置１０１は、変数ｐを２ビット分左シフトした値と、今回の推測結果を、変数ｐに代入し、カウンタ変数ｃに１加算する（ステップＳ３４０４）。ステップＳ３４０４の処理は、具体的なプログラムコードで記載すると、「ｐ：＝  ｐ＊４  ＋  ｋｅｋｋａ［ｉ］［ｊ］、  ｃ：＝  ｃ＋１」となる。
【０１８８】
そして、送信装置１０１は、４回分の正誤情報を変数ｐに代入したか否かを判断する（ステップＳ３４０５）。４回分の正誤情報を変数ｐに代入したか否かについては、具体的なプログラムコードで記載すると、「ｉｆ  ｃ＝４」の処理結果で判断することができる。４回分の正誤情報を変数ｐに代入した場合（ステップＳ３４０５：Ｔｒｕｅ）、送信装置１０１は、変数ｐの値を受信装置１０２に送信する（ステップＳ３４０６）。そして、受信装置１０２は、変数ｐとカウンタ変数ｃに０を代入する（ステップＳ３４０７）。
【０１８９】
ステップＳ３４０７の処理終了後、または、前回の推測が正解だった場合（ステップＳ３４０３：Ｔｒｕｅ）、４回分の正誤情報を変数ｐに代入していない場合（ステップＳ３４０５：Ｆａｌｓｅ）、送信装置１０１は、ｊに１加算する（ステップＳ３４０８）。そして、送信装置１０１は、ｊが変数ｄａｔａｓｉｚｅ未満か否かを判断する（ステップＳ３４０９）。ｊが変数ｄａｔａｓｉｚｅ未満である場合（ステップＳ３４０９：Ｔｒｕｅ）、送信装置１０１は、ステップＳ３４０２の処理に移行する。一方、ｊが変数ｄａｔａｓｉｚｅ以上である場合（ステップＳ３４０９：Ｆａｌｓｅ）、送信装置１０１は、正誤結果送信処理を終了する。
【０１９０】
ここで、ステップＳ３４０９：Ｆａｌｓｅとなった場合に、カウンタ変数ｃが０でない場合、未送信の正誤情報があることになるため、送信装置１０１は、変数ｐの値に、４＾（４−ｃ）を乗じた値を、受信装置１０２に送信する。
【０１９１】
また、正誤結果送信処理に対する正誤結果ファイル出力処理の差異は、送信装置１０１が、ステップＳ３４０６の処理において、変数ｐの値をファイルに書き込むことである。
【０１９２】
図３５は、正誤結果受信処理手順の一例を示すフローチャートである。正誤結果受信処理は、受信装置１０２が実行する処理である。受信装置１０２は、ｄａｔａｓｉｚｅ回繰り返すため、変数ｊに０を代入し、また、カウンタ変数ｃに、０を代入する（ステップＳ３５０１）。
【０１９３】
次に、受信装置１０２は、送信装置１０１から受信した値を変数ｐに代入する（ステップＳ３５０２）。そして、受信装置１０２は、現在が１回目の推測か否かを判断する（ステップＳ３５０３）。１回目の推測か否かについては、具体的なプログラムコードで記載すると、「ｉｆ  ｉ＝０」の処理結果で判断することができる。
【０１９４】
現在が１回目の推測でない場合（ステップＳ３５０３：Ｆａｌｓｅ）、受信装置１０２は、前回の推測が正解だったか否かを判断する（ステップＳ３５０４）。前回の推測が正解だったか否かについては、具体的なプログラムコードで記載すると、「ｉｆ  ｋｅｋｋａ［ｉ−１］［ｊ］  ＝  ０」の処理結果で判断することができる。
【０１９５】
前回の推測が正解である場合（ステップＳ３５０４：Ｔｒｕｅ）、受信装置１０２は、ｋｅｋｋａ［ｉ］［ｊ］に０を代入し（ステップＳ３５０５）、ｊに１加算する（ステップＳ３５０６）。
【０１９６】
一方、現在が１回目の推測である場合（ステップＳ３５０３：Ｔｒｕｅ）、または、前回の推測が正解でない場合（ステップＳ３５０４：Ｆａｌｓｅ）、受信装置１０２は、変数ｐの値から１回分の正誤情報を抽出する（ステップＳ３５０７）。ステップＳ３５０７の処理は、具体的なプログラムコードで記載すると、「ｋｅｋｋａ［ｉ］［ｊ］：＝  ｛  ｐ  ÷  ４＾（３−ｃ）  ｝  ｍｏｄ  ４」となる。そして、受信装置１０２は、ループカウンタｊとカウンタ変数ｃとに１加算する（ステップＳ３５０８）。
【０１９７】
ステップＳ３５０６、またはステップＳ３５０８の処理終了後、受信装置１０２は、ループカウンタｊが変数ｄａｔａｓｉｚｅ未満か否かを判断する（ステップＳ３５０９）。ループカウンタｊが変数ｄａｔａｓｉｚｅ未満である場合（ステップＳ３５０９：Ｔｒｕｅ）、受信装置１０２は、４回分の正誤情報を処理したか否かを判断する（ステップＳ３５１０）。４回分の正誤情報を処理したか否かについては、具体的なプログラムコードで記載すると、「ｉｆ  ｃ  ＝  ４」の処理結果で判断することができる。
【０１９８】
４回分の正誤情報を処理していない場合（ステップＳ３５１０：Ｆａｌｓｅ）、受信装置１０２は、ステップＳ３５０３の処理に移行する。一方、４回分の正誤情報を処理した場合（ステップＳ３５１０：Ｔｒｕｅ）、受信装置１０２は、カウンタ変数ｃに０を代入し（ステップＳ３５１１）、ステップＳ３５０２の処理に移行する。一方、ループカウンタｊが変数ｄａｔａｓｉｚｅ以上である場合（ステップＳ３５０９：Ｆａｌｓｅ）、受信装置１０２は、正誤結果受信処理を終了する。
【０１９９】
また、正誤結果受信処理に対する正誤結果読込み処理の差異は、ステップＳ３５０２において、受信装置１０２は、ファイルに出力された値を、変数ｐに代入することである。
【０２００】
図３６は、生成データ保存処理手順の一例を示すフローチャートである。生成データ保存処理は、受信装置１０２が実行する処理である。受信装置１０２は、ｄａｔａｓｉｚｅ回繰り返すため、ループカウンタｊに０を代入する（ステップＳ３６０１）。次に、受信装置１０２は、５回目の推測が正解だったか否かを判断する（ステップＳ３６０２）。５回目の推測が正解だったか否かについては、具体的なプログラムコードで記載すると、「ｉｆ  ｋｅｋｋａ［４］［ｊ］＝０」の処理結果で判断することができる。
【０２０１】
前回の推測が正解だった場合（ステップＳ３６０２：Ｔｒｕｅ）、受信装置１０２は、５回目の推測を、推測結果として代入する（ステップＳ３６０３）。本実施の形態では、ｓｕｉｓｏｋｕ［５］を推測結果として利用する。従って、ステップＳ３６０３の処理は、具体的なプログラムコードで記載すると、「ｓｕｉｓｏｋｕ［５］［ｊ］：＝  ｓｕｉｓｏｋｕ［４］［ｊ］」となる。
【０２０２】
一方、前回の推測が誤りだった場合（ステップＳ３６０２：Ｆａｌｓｅ）、受信装置１０２は、候補リスト作成処理を実行する（ステップＳ３６０４）。次に、受信装置１０２は、候補リストｋｏｕｈｏのうち、候補除外推測回数が６となる値を推測結果に代入する（ステップＳ３６０５）。
【０２０３】
ステップＳ３６０３、またはＳ３６０５の処理終了後、受信装置１０２は、ループカウンタｊに１加算する（ステップＳ３６０６）。そして、受信装置１０２は、ループカウンタｊが変数ｄａｔａｓｉｚｅ未満か否かを判断する（ステップＳ３６０７）。ループカウンタｊが変数ｄａｔａｓｉｚｅ未満である場合（ステップＳ３６０７：Ｔｒｕｅ）、受信装置１０２は、ステップＳ３６０２の処理に移行する。
【０２０４】
一方、ループカウンタｊが変数ｄａｔａｓｉｚｅ以上である場合（ステップＳ３６０７：Ｆａｌｓｅ）、受信装置１０２は、６回目の推測結果ｓｕｉｓｏｋｕ［５］をファイルに保存する（ステップＳ３６０８）。ステップＳ３６０８の処理終了後、受信装置１０２は、生成データ保存処理を終了する。
【０２０５】
図３７は、送信元におけるデータ蓄積処理手順の一例を示すフローチャートである。送信元におけるデータ蓄積処理は、送信装置１０１が実行する処理である。送信装置１０１は、ディスク２０４の過去のダンプファイルデータ１００１に行を挿入する（ステップＳ３７０１）。次に、送信装置１０１は、追加した行に、変数ｃｏｍｐｕｔｅｒｎａｍｅ、ｄｕｍｐｄａｔｅ、ｓｏｕｒｃｅを記録する（ステップＳ３７０２）。ステップＳ３７０２の処理終了後、送信装置１０１は、送信元におけるデータ蓄積処理を終了する。
【０２０６】
また、送信元におけるデータ蓄積処理に対する受信先におけるデータ蓄積処理の差異は、ステップＳ３７０１、Ｓ３７０２の実行主体が受信装置１０２になることと、ステップＳ３７０２のｓｏｕｒｃｅがｓｕｉｓｏｋｕ［５］になることである。
【０２０７】
以上説明したように、受信装置１０２は、元データを持つ送信装置１０１と共通の所定のルールから同一の推測値を生成し、送信装置１０１から受信した推測値の正誤情報から元データを推測することを繰り返して元データを生成する。このように、送信装置１０１が元データを送信せずに、受信装置１０２は、元データを生成するため、元データの漏洩を抑制することができる。
【０２０８】
また、受信装置１０２は、実施例１で示したように、正誤情報として正解を示す「０」、または誤りを示す「１」を取り得る１ビットの情報を受信し、元データと同一のデータを生成してもよい。これにより、受信装置１０２は、通信傍受等による元データの漏洩を抑制しつつ、実施例２に比べて簡便な処理で、元データと同一のデータを生成することができる。
【０２０９】
また、受信装置１０２は、正誤情報として正解を示す第１の識別情報、または正解が候補値の集合を、推測値を基準として複数の部分に分割した部分集合を示す識別情報を受信し、元データと同一のデータを生成してもよい。これにより、受信装置１０２は、通信傍受等による元データの漏洩を抑制しつつ、実施例１に比べて推測回数を少なくすることができる。
【０２１０】
受信装置１０２は、実施例２で示したように、正誤情報として正解を示す「０」、または正解がそれぞれの候補値の集合内にあることを示す「１」〜「３」を取り得る２ビットの情報を受信し、元データと同一のデータを生成してもよい。これにより、受信装置１０２は、正誤情報のデータ量を抑えて、通信傍受等による元データの漏洩を抑制しつつ、実施例１に比べて推測回数を少なくすることができる。具体的には、実施例１では、最多で２５５回の推測を行う可能性があるが、実施例２では多くても５回の推測で元データと同一のデータを生成することができる。
【０２１１】
また、送信装置１０１と受信装置１０２とは、過去のダンプデータに基づく値が候補値の集合に含まれる場合、その値を推測値としてもよい。これにより、ダンプデータが似たような値を取るのであれば、受信装置１０２は、推測結果を正解にし易くすることができる。そして、推測結果が正解になれば、以降の推測を行わなくてよいため、受信装置１０２は、実施例１、２のどちらにおいても、元データと同一のデータを生成することにかかる負荷を抑えることができる。
【０２１２】
また、送信装置１０１と受信装置１０２は、候補リストｋｏｕｈｏが示す候補値の集合の初期状態を、元データが示す値が取り得る値の集合としてもよい。これにより、送信装置１０１と受信装置１０２とは、どのような元データに対しても対応することができる。また、元データのデータフォーマットが予め判明しており、データフォーマットによってあるバイトに設定される値がある程度限定されるとする。この場合、送信装置１０１と受信装置１０２とは、候補リストｋｏｕｈｏが示す候補値の集合の初期状態を、その限定される値の集合としてもよい。これにより、送信装置１０１と受信装置１０２は、推測する回数をより少なくすることができる。
【０２１３】
なお、本実施の形態で説明したデータ生成方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本データ生成プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本データ生成プログラムは、インターネット等のネットワークを介して配布してもよい。
【０２１４】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０２１５】
（付記１）元データを有する送信装置と、前記送信装置と接続する受信装置とを有するデータ生成システムのデータ生成方法であって、
前記送信装置が、
前記元データが示す値となり得る送信元の候補値の集合を参照して前記送信元の候補値の集合に含まれるいずれかの値を生成する所定のルールに基づいて、第１の値を生成し、
生成した前記第１の値と前記元データが示す値との差分の大きさを示す差分情報を生成して、生成した前記差分情報を前記受信装置に送信し、
前記第１の値と、生成した前記差分情報とに基づいて、前記送信元の候補値の集合を更新し、
前記送信元の候補値の集合に含まれる候補値が１つに特定可能となるまで前記送信する処理を繰り返す、
処理を実行し、
前記受信装置が、
前記差分情報を、前記送信装置から受信し、
受信先の候補値の集合を参照して、前記所定のルールに基づいて、第１の値を生成し、
生成した当該第１の値と、受信した前記差分情報とに基づいて、前記受信先の候補値の集合を更新し、
前記受信先の候補値の集合に含まれる候補値が１つに特定可能となるまで前記受信先の候補値の集合を更新する処理を繰り返し、前記受信先の候補値の集合に含まれる候補値によって示されるデータを生成する、
処理を実行することを特徴とするデータ生成方法。
【０２１６】
（付記２）前記差分情報は、
前記所定のルールに基づいて生成された値と前記元データが示す値との差分がないことを示す第１の識別情報、または、前記生成された値と前記元データが示す値との差分があることを示す第２の識別情報であって、
前記受信装置が、
前記差分情報が前記第１の識別情報である場合、当該第１の値によって示されるデータを生成し、
前記差分情報が前記第２の識別情報である場合、当該第１の値が前記受信先の候補値の集合に含まれないように前記受信先の候補値の集合を更新する、
ことを特徴とする付記１に記載のデータ生成方法。
【０２１７】
（付記３）前記差分情報は、
前記所定のルールに基づいて生成された値と前記元データが示す値との差分がないことを示す第１の識別情報、または、前記送信元の候補値の集合を前記生成された値を基準として複数の部分に分割した複数の部分集合のうちの前記元データが示す値が含まれる部分集合を示す識別情報であって、
前記受信装置が、
前記差分情報が前記第１の識別情報である場合、当該第１の値によって示されるデータを生成し、
前記差分情報が前記複数の部分集合のいずれかの部分集合を示す識別情報である場合、前記受信先の候補値の集合を当該第１の値を基準として複数の部分に分割した複数の部分集合のうちの前記いずれかの部分集合に対応する部分集合を、前記受信先の候補値の集合として更新する、
ことを特徴とする付記１に記載のデータ生成方法。
【０２１８】
（付記４）前記差分情報は、
前記第１の識別情報と、前記生成された値を基準として前記送信元の候補値の集合を均等に３分割した複数の部分集合の各部分集合を示す各識別情報とをそれぞれ識別可能な２ビットの情報であることを特徴とする付記３に記載のデータ生成方法。
【０２１９】
（付記５）前記元データは、前記送信装置のメモリをダンプしたダンプデータであって、
前記受信装置が、前記元データより過去に採取された過去のダンプデータを記憶し、
前記所定のルールは、
前記過去のダンプデータに基づく値が前記送信元または前記受信先の候補値の集合に含まれる場合、当該値を第１の値として出力し、
前記過去のダンプデータに基づく値が前記送信元または前記受信先の候補値の集合に含まれない場合、前記送信元または前記受信先の候補値の集合に含まれるいずれかの値を第１の値として出力する、
ことを特徴とする付記１〜４のいずれか一つに記載のデータ生成方法。
【０２２０】
（付記６）前記送信元の候補値の集合および前記受信先の候補値の集合の初期状態は、前記元データが示す値が取り得る値の集合であることを特徴とする付記１〜５のいずれか一つに記載のデータ生成方法。
【０２２１】
（付記７）元データを有する送信装置と、前記送信装置と接続する受信装置とを有するデータ生成システムであって、
前記送信装置は、
前記元データが示す値となり得る送信元の候補値の集合を参照して前記送信元の候補値の集合に含まれるいずれかの値を生成する所定のルールに基づいて、第１の値を生成し、
生成した前記第１の値と前記元データが示す値との差分の大きさを示す差分情報を生成して、生成した前記差分情報を前記受信装置に送信し、
前記第１の値と、生成した前記差分情報とに基づいて、前記送信元の候補値の集合を更新し、
前記送信元の候補値の集合に含まれる候補値が１つに特定可能となるまで前記送信する処理を繰り返し、
前記受信装置は、
前記差分情報を、前記送信装置から受信し、
受信先の候補値の集合を参照して、前記所定のルールに基づいて、第１の値を生成し、
生成した当該第１の値と、受信した前記差分情報とに基づいて、前記受信先の候補値の集合を更新し、
前記受信先の候補値の集合に含まれる候補値が１つに特定可能となるまで前記受信先の候補値の集合を更新する処理を繰り返し、前記受信先の候補値の集合に含まれる候補値によって示されるデータを生成する、
処理を実行することを特徴とするデータ生成システム。
【０２２２】
（付記８）コンピュータに、
元データが示す値となり得る候補値の集合を参照して前記候補値の集合に含まれるいずれかの値を生成する所定のルールに基づいて生成された第１の値と前記元データが示す値との差分の大きさを示す差分情報を、前記元データを有する送信元から受信し、
前記候補値の集合を参照して、前記所定のルールに基づいて、第１の値を生成し、
生成した前記第１の値と、受信した前記差分情報とに基づいて、前記候補値の集合を更新し、
前記候補値の集合に含まれる候補値が１つに特定可能となるまで前記候補値の集合を更新する処理を繰り返し、前記候補値の集合に含まれる候補値によって示されるデータを生成する、
処理を実行させることを特徴とするデータ生成プログラム。
【符号の説明】
【０２２３】
１００  データ生成システム
１０１  送信装置
１０２  受信装置
１１１〜１１３  正誤情報
３００、４００  制御部
３０１、４０２  推測値生成部
３０２  正誤情報生成部
３０３  送信部
３０４、４０３  更新部
４０１  受信部
４０４  元データ生成部
【図１】
2018066827.tif 000003
【図２】
2018066827.tif 000004
【図３】
2018066827.tif 000005
【図４】
2018066827.tif 000006
【図５】
2018066827.tif 000007
【図６】
2018066827.tif 000008
【図７】
2018066827.tif 000009
【図８】
2018066827.tif 000010
【図９】
2018066827.tif 000011
【図１０】
2018066827.tif 000012
【図１１】
2018066827.tif 000013
【図１２】
2018066827.tif 000014
【図１３】
2018066827.tif 000015
【図１４】
2018066827.tif 000016
【図１５】
2018066827.tif 000017
【図１６】
2018066827.tif 000018
【図１７】
2018066827.tif 000019
【図１８】
2018066827.tif 000020
【図１９】
2018066827.tif 000021
【図２０】
2018066827.tif 000022
【図２１】
2018066827.tif 000023
【図２２】
2018066827.tif 000024
【図２３】
2018066827.tif 000025
【図２４】
2018066827.tif 000026
【図２５】
2018066827.tif 000027
【図２６】
2018066827.tif 000028
【図２７】
2018066827.tif 000029
【図２８】
2018066827.tif 000030
【図２９】
2018066827.tif 000031
【図３０】
2018066827.tif 000032
【図３１】
2018066827.tif 000033
【図３２】
2018066827.tif 000034
【図３３】
2018066827.tif 000035
【図３４】
2018066827.tif 000036
【図３５】
2018066827.tif 000037
【図３６】
2018066827.tif 000038
【図３７】
2018066827.tif 000039