(58)【調査した分野】(Int.Cl.,DB名)
前記入替処理部は、前記特異文字が前記入力データに含まれていないと判定した場合には、前記特異文字以外の通常文字を、前記ランダムデータを参照して、前記入れ替えレコードに含まれる前記位置の漢字文字に入れ替えた入れ替え通常文字ファイルを生成し、前記特異文字が前記入力データに含まれていると判定した場合には、前記入れ替え通常文字ファイルに含まれる漢字文字のうち、除かれた前記特異文字の位置にある通常文字を前記特異文字に置き換えた入れ替え特異文字ファイルを生成する、
ことを特徴とする請求項2に記載のテストデータ作成システム。
前記サーバ制御部は、前記入れ替え通常文字ファイルまたは前記入れ替え特異文字ファイルに同姓同名の漢字文字があるか否かを判定し、同姓同名の漢字文字があると判定した場合には、その漢字文字を含むレコードを削除する同名削除部をさらに備える、
ことを特徴とする請求項3または4に記載のテストデータ作成システム。
【発明を実施するための形態】
【0012】
以下に添付図面を参照して、本発明にかかるテストデータ作成システム、およびテストデータ作成装置の実施の形態を詳細に説明する。
【0013】
図1は、本発明の実施の形態におけるテストデータ作成システム1000の構成を示す図である。
図1に示すように、テストデータ作成システム1000は、クライアント端末100とサーバ200とを有し、これらが互いにLAN(Local Area Network)やWAN(Wide Area Network)等の一般的な通信網であるネットワーク300を介して接続されている。なお、以下では特に図示していないが、クライアント端末100とサーバ200は、互いに通信するための通信部を有している。また、以下では、クライアント端末100とサーバ200とが異なる筺体である前提で説明しているが、1つの装置でこれらの各機能を実現することとしてもよい。
【0014】
クライアント端末100は、一般的なPC(Personal Computer)等の情報処理装置から構成され、テストデータ作成システム1000の実行を指示し、または漢字データの各文字を入れ替えたランダムな漢字データを生成するためのランダムファイル2011を生成し、サーバ200に送信する。以下では、クライアント端末100は、表計算ソフトの乱数関数(漢字データが最大25ケタの場合には、例えば、ROUND(RAND()*24+1,0))を用いてランダムファイルを生成しているが、乱数が生成できるものであればどのような手法を用いても構わない。
【0015】
図2Aは、ランダムファイル2011のレイアウトの例を示す図である。
図2Aに示すように、ランダムファイル2011は、漢字データに含まれる文字の桁(文字項目)と、漢字データのレコードとが対応付けて記憶されている。
図2Aに示した例では、1レコード目の漢字データの1文字目は、1レコード目の漢字データの1文字目に置きかえる(すなわちそのままの状態となる)ことを意味し、1レコード目の漢字データの2文字目は、9レコード目の漢字データの2文字目に置きかえることを意味している。これ同様に、各レコード目の漢字データについて各文字が置きかえられる文字の位置が記憶されている。なお、ランダムファイル2011に用いられる乱数は、表計算ソフトにて都度作成されたものを使用し、個人情報である元の漢字氏名を逆算されないように保護する。
【0016】
図2Bは、ランダムファイル2011によって漢字データの各文字が変換される様子を示す図である。
図2Bに示した例では、変換される前の漢字データの1レコード目「佐藤△△△学△△△△」(姓:佐藤、名:学)の漢字氏名が、ランダムファイル2011の1レコード目を参照し、「佐下△△△善一△△△」に変換されていることが分かる。これは、1レコード目の1文字目の「佐」の文字が、ランダムファイルの1レコード目の1文字目「1」を参照して、そのまま置きかえられず、同レコードの2文字目の「藤」の文字が、ランダムファイルの1レコード目の2文字目「9」を参照して、漢字データの9レコード目の2文字目の「下」に置きかえられ、同様に1レコードの2文字目の「学」の文字が、ランダムファイルの1レコード目の6文字目「10」を参照して、漢字データの10レコード目の6文字目の「善」に置きかえられている状態を示している。このように、後述する処理では、漢字氏名の各文字がランダムファイル2011によってランダムに配置される。
【0017】
外部ファイル2012は、顧客からテスト用に提供を受けるテストデータが記憶されているファイルである。この外部ファイル2012には、漢字データの各文字が入れ替えられる前の漢字データが記憶され、後述する各処理を行うことによって、漢字データの一部の文字が入れ替えられる。
図3は、外部ファイル2012のレイアウトの例を示す図である。
図3に示すように、外部ファイル2012には、漢字データとなる漢字氏名が他の様々な情報とともに記憶されている。
図3に示す例では、漢字氏名として、1レコード目には「山田△突郎」、2レコード目には「佐藤△学」が記憶されている。以下これと同様に漢字氏名が記憶されている。
【0018】
特異文字データベース2013は、漢字データでは通常使用されない文字(特異文字)を記憶するデータベースである。特異文字データベース2013に記憶されている特異文字は、あらかじめ管理者等によって設定される。例えば、特異文字として、「ゑ」や「碕」(通常は「崎」)等の旧字体、数字、記号、ヘキサコードの文字等の氏名として不適切な文字が特異文字として記憶されている。
図4は、特異文字データベース2013のレイアウトの例を示す図である。
図4に示すように、特異文字データベース2013には、旧字体をはじめとした各特異文字が記憶されている。なお、上述したランダムファイル2011、外部ファイル2012、特異文字データベース2013は、外部から提供される前提で説明しているが、あらかじめサーバ200に記憶しておいてもよい。続いて、サーバ200について説明する。
【0019】
サーバ200は、一般的なサーバ装置から構成され、クライアント端末100からの指示に応じてテストデータに含まれる漢字データの各文字の配置をランダムにしたテストデータを生成するものである。
図1に示すように、サーバ200は、記憶部201と、制御部202とを有している。
【0020】
記憶部201は、HDD(Hard Disk Drive)等の記憶装置から構成され、変換氏名ファイル2013と、非変換氏名ファイル2014と、通常文字ファイル2015と、特異文字ファイル2016と、マージファイル2017と、全マージファイル2018とを記憶している。
【0021】
変換氏名ファイル2013は、後述する分離処理部2021によって変換が可能な漢字データを含むレコードと、変換が不可能な漢字データを含むレコードとが分離された場合の前者のデータを有したファイルである。
図5は、変換氏名ファイル2013のレイアウトの例を示す図である。
図5に示すように、変換氏名ファイル2013は、
図3に示した外部ファイル2012と同様のレイアウトであるが、変換不能なレコード(例えば、「オールスペース(△)」のレコード)は、文字位置の配置を変換することができないレコードとして除かれたものとなっている。
【0022】
非変換氏名ファイル2014は、後述する分離処理部2021によって変換が可能な漢字データを含むレコードと、変換が不可能な漢字データを含むレコードとが分離された場合の後者のデータを有したファイルである。
図6は、非変換氏名ファイル2014のレイアウトの例を示す図である。
図6に示すように、非変換氏名ファイル2014は、
図5に示した外部ファイル2012と同様のレイアウトであるが、変換不能なレコードとして除かれた、「オールスペース(△)」のレコード、スペース(△)がないレコード、スペース(△)が複数あるレコードが記憶されている。
【0023】
通常文字ファイル2015は、後述する文字分割処理部2022によって変換氏名ファイル2013特異文字を含まないレコードと、特異文字を含むレコードとに分割された場合の前者のデータを有したファイルである。
図7は、通常文字ファイル2015のレイアウトの例を示す図である。
図7に示すように、通常文字ファイル2015は、
図3に示した外部ファイル2012等と同様のレイアウトであるが、特異文字を含まないものとなっている。
【0024】
特異文字ファイル2016は、後述する文字分割処理部2022によって変換氏名ファイル2013特異文字を含まないレコードと、特異文字を含むレコードとに分割された場合の後者のデータを有したファイルである。
図8は、特異文字ファイル2016のレイアウトの例を示す図である。
図8に示すように、特異文字ファイル2016は、
図3に示した外部ファイル2012等と同様のレイアウトであるが、特異文字を含むものとなっている。
【0025】
マージファイル2017は、通常文字ファイル2015と特異文字ファイル2016とをマージしたファイルである。後述するように、通常文字ファイル2015および特異文字ファイル2016に含まれる漢字データの文字が入れ替えられ、その結果同名となった漢字データが削除された後のデータである。
図9は、マージファイル2017のレイアウトの例を示す図である。
図9に示すように、マージファイル2017は、
図3に示した外部ファイル2012等と同様のレイアウトであるが、通常文字だけでなく、特異文字を含む漢字データが記憶されている。
【0026】
全マージファイル2018は、上述したマージファイル2017が記憶するレコードのほか、非変換氏名ファイル2014のレコードを含むファイルである。マージファイル2017の場合と同様、通常文字ファイル2015および特異文字ファイル2016に含まれる漢字データの文字が入れ替えられ、その結果同名となった漢字データが削除された後のデータが記憶されている。
図10は、全マージファイル2018のレイアウトの例を示す図である。
図10に示すように、全マージファイル2018は、
図3に示した外部ファイル2012等と同様のレイアウトであるが、通常文字や特異文字、変換が不可能な文字を含む漢字データが記憶されている。続いて、
図1に戻って制御部202について説明する。
【0027】
制御部202は、CPU(Central Processing Unit)等の演算装置から構成され、サーバ200の各処理の実行を司るものである。
図1に示すように、制御部202は、分離処理部2021と、特異文字別分割処理部2022と、通常文字入替処理部2023と、通常文字同名削除部2024と、特異文字入替処理部2025と、特異文字同名削除部2026と、マージ処理部2027と、全マージ処理部2028とを有している。
【0028】
図11は、テストデータ作成システム1000の各部が行う処理の流れを示す図である。以下では、あらかじめ管理者等がクライアント端末100を操作して
図2に示したランダムファイル2011を生成しているものとする。
【0029】
図11に示すように、まず、サーバ200は、外部ファイル2012の提供を受けて、記憶部201に記憶されると、分離処理部2021は、漢字氏名の変換が可能な漢字データを含むレコードを変換氏名ファイル2013に記憶させ、漢字氏名の変換が不可能な漢字データを含むレコードを非変換氏名ファイル2014に記憶させる。その後、特異文字別分割処理部2022は、特異文字データベース2013と変換氏名ファイル2013とを読み込み、変換氏名ファイル2013の中で特異文字を含まないレコードを抽出して通常文字ファイル2015に記憶させ、変換氏名ファイル2013の中で特異文字を含むレコードを抽出して特異文字ファイル2016に記憶させる。
【0030】
そして、通常文字入替処理部2023は、ランダムファイル2011と通常文字ファイル2015とを読み込み、ランダムファイル2011に記憶されている乱数と漢字データの文字との関係に従って、漢字データの各文字を入れ替え、入れ替えた後の通常文字ファイル2015を出力する。その後、通常文字同名削除処理部2024は、漢字データの各文字を入れ替えた後の通常文字ファイル2015と、その入れ替え前の通常文字ファイル2015とを読み込み、同じ漢字データとなっているレコードを削除する。なお、以下ではこれら2つのファイルを比較してレコードの重複を判定し、重複しているレコードを削除しているが、例えば、漢字データの各文字を入れ替えた後の通常文字ファイル2015の中でレコードが重複しているか否かをさらに判定し、重複しているレコードを削除することとしてもよい。
【0031】
一方、特異文字別分割処理部2022が特異文字ファイル2016を記憶すると、特異文字入替処理部2025は、ランダムファイル2011と通常文字ファイル2015と特異文字ファイル2016とを読み込み、ランダムファイル2011に記憶されている乱数と漢字データの文字との関係に従って、漢字データの各文字を入れ替え、入れ替えた後の特異文字ファイル2016を出力する。その後、特異文字同名削除処理部2026は、漢字データの各文字を入れ替えた後の特異文字ファイル2016と、その入れ替え前の特異文字ファイル2016とを読み込み、同じ漢字データとなっているレコードを削除する。なお、以下ではこれら2つのファイルを比較してレコードの重複を判定し、重複しているレコードを削除しているが、例えば、漢字データの各文字を入れ替えた後の特異文字ファイル2016の中でレコードが重複しているか否かをさらに判定し、重複しているレコードを削除することとしてもよい。
【0032】
そして、マージ処理部2027は、漢字データの各文字が入れ替えられ、同じ漢字データを含むレコードが削除された後の通常文字ファイル2015と特異文字ファイル2016とを読み込み、マージファイル2017を生成する。また、全マージ処理部2028は、マージファイル2017と同様にこれらのファイルを読み込むほか、分離処理部2021によって分離された非変換氏名ファイル2014を読み込み、全マージファイル2018を生成する。このように生成されたマージファイル2017および全マージファイル2018に含まれるレコードのうち漢字データを有したレコードは漢字氏名についてユニークなファイルとなる。
【0033】
以下では、これらのマージファイル2017および全マージファイル2018をテストデータとして使用する場合について説明しているが、同名削除後の通常文字ファイル2015、同名削除後の特異文字ファイル2016等の上述した各処理の途中で生成されるファイルをテストデータとして使用してもよい。続いて、テストデータ作成システム1000で行われるテストデータ作成処理について説明する。
【0034】
図12は、テストデータ作成処理のうち分離処理部2021が行う分離処理の処理手順を示すフローチャートである。
図12に示すように、分離処理部2021は、外部ファイル2012を読み込み(ステップS1201)、その中の各レコードの漢字氏名が全てスペースであるか否かを判定する(ステップS1202)。そして、分離処理部2021は、各レコードの漢字氏名が全てスペースであると判定した場合(ステップS1202;Yes)、ステップS1206に進み、そのレコードを非変換氏名ファイル2014に出力する。
【0035】
一方、分離処理部2021は、各レコードの漢字氏名が全てスペースでないと判定した場合(ステップS1202;No)、さらに、漢字氏名にスペースがあるか否かを判定する(ステップS1203)。分離処理部2021は、漢字氏名にスペースがないと判定した場合(ステップS1203;No)、ステップS1206に進み、ステップS1202の場合と同様、そのレコードを非変換氏名ファイル2014に出力する。
【0036】
一方、分離処理部2021は、漢字氏名にスペースがあると判定した場合(ステップS1203;Yes)、さらに、漢字氏名にスペースが2つ以上含まれているか否かを判定する(ステップS1204)。分離処理部2021は、そして、分離処理部2021は、漢字氏名にスペースが2つ以上含まれていると判定した場合(ステップS1204;Yes)、ステップS1202等の場合と同様、そのレコードを非変換氏名ファイル2014に出力する。
【0037】
一方、分離処理部2021は、漢字氏名にスペースが2つ以上含まれていないと判定した場合(ステップS1204;No)、そのレコードを変換氏名ファイル2013に出力する。このステップS1204の処理が終了すると、
図12に示した全ての処理が終了する。
【0038】
図13は、テストデータ作成処理のうち特異文字別分割処理部2022が行う特異文字別分割処理の処理手順を示すフローチャートである。
図13に示すように、特異文字別分割処理部2022は、
図12に示した分離処理で作成された変換氏名ファイル2013を読み込み(ステップS1301)、読み込んだ変換氏名ファイル2013のレコードに含まれる漢字氏名と特異文字データベース2013に記憶されている特異文字とを1文字ずつ比較し、該当する文字の桁に、特異文字であることを示す文字区分「1」を設定する(ステップS1302)。
【0039】
例えば、以下に示すように、漢字氏名の各文字と文字区分の桁とが対応付けられ、特異文字に該当する2文字目の漢字「碕」、4文字目の漢字「ゑ」に対応する2文字目の文字区分および4文字目の文字区分に「1」が設定される。
【0041】
そして、特異文字別分割処理部2022は、漢字氏名に特異文字があるか否か(すなわち、そのレコードの漢字氏名の文字区分に「1」を設定したか否か)を判定し(ステップS1303)、漢字氏名に特異文字がないと判定した場合(ステップS1303;No)、そのレコードを通常文字ファイル2015に出力する(ステップS1304)。
【0042】
一方、特異文字別分割処理部2022は、漢字氏名に特異文字があると判定した場合(ステップS1303;Yes)、そのレコードを特異文字ファイル2016に出力する(ステップS1305)。このステップS1304またはS1305の処理が終了すると、
図13に示した全ての処理が終了する。
【0043】
図14は、テストデータ作成処理のうち通常文字入替処理部2023が行う通常文字入替処理の処理手順を示すフローチャートである。
図14に示すように、通常文字入替処理部2023は、
図13に示した特異文字別分割処理で作成された通常文字ファイル2015を読み込み(ステップS1401)、その入力件数がこの処理で作成する溜め込みテーブルのレコード数を上回ったか(溜め込みテーブルのレコード数に達したか)、または通常文字ファイル2015の入力が完了したか否かを判定し(ステップS1402)、入力件数がテーブルのレコード件数に達した、または入力が完了したと判定した場合(ステップS1402;Yes)、全件分処理したと判定し、ステップS1405に進む。
【0044】
一方、通常文字入替処理部2023は、入力件数がテーブル件数に達していない、または入力が完了していないと判定した場合(ステップS1402;No)、読み込んだレコードの漢字氏名を姓と名に分けて溜め込みテーブルに溜め込み(ステップS1403)、次のレコードを読み込み(ステップS1404)、ステップS1402に戻って、最終レコードが処理されるまでステップS1402〜S1404の処理を繰り返す。
【0045】
通常文字入替処理部2023は、溜め込みテーブルに溜め込まれるデータとして、例えば、以下に示すように、溜め込みテーブルの各レコードを姓と名に分け、読み込んだレコードの漢字氏名のうちのスペース(△)より前を姓項目に設定し、漢字氏名のうちのスペース(△)より後を名項目に設定する。
【0047】
そして、通常文字入替処理部2023は、ステップS1402において全件分処理したと判定すると、ランダムファイル2011を読み込む(ステップS1405)。ランダムファイル2011については
図2A、
図2Bにおいて示したが、例えば、通常文字入替処理部2023は、以下に示すようなランダムファイル2011を読み込む。
【0049】
通常文字入替処理部2023は、ランダムファイル2011を読み込むと、ランダムファイル2011の各レコードの文字項目(1文字目、2文字目等、文字の順番を示す項目)と、溜め込みテーブルに溜め込まれているレコードに含まれる漢字氏名の各文字とを取得し、その漢字氏名の各文字のうち、ランダムファイル2011の文字項目で指定されたレコードの文字項目に入れ替えた半完成漢字氏名を生成する(ステップS1406)。
【0050】
例えば、通常文字入替処理部2023は、溜め込みテーブルに溜め込まれたレコードの漢字氏名(上述した例では、1レコード目「山田△△太郎△△」、2レコード目「伊集院△竹千代△」、3レコード目「長曽可部重盛彦丸」)を読み込むとともに、ランダムファイル2011の1レコード目のデータ「12131213」を読み込む。そして、通常文字入替処理部2023は、ランダムファイル2011の1レコード目のデータのうちの1文字目の項目「1」を取得する。この項目の値が、何レコード目の漢字氏名の各文字の中の何番目の文字を取得するのかを表すものとなっている。すなわち、ランダムファイル2011のレコードの1文字目の数値「1」は、1レコード目の漢字氏名の1文字目を取得することを示している。この例では、1レコード目の漢字氏名「山田△△太郎△△」のうちの1文字目は「山」であるため、半完成漢字氏名の1文字目に「山」を設定する。
【0051】
続いて、通常文字入替処理部2023は、ランダムファイル2011の1レコード目のデータのうちの2文字目の項目「2」を取得する。この例では、2レコード目の漢字氏名「伊集院△竹千代△」のうちの2文字目は「集」であるため、半完成漢字氏名の2文字目に「集」を設定する。さらに、通常文字入替処理部2023は、ランダムファイル2011の1レコード目のデータのうちの3文字目の項目「1」を取得する。この例では、1レコード目の漢字氏名「山田△△太郎△△」のうちの3文字目は「スペース(△)」であるため、半完成漢字氏名の3文字目に「スペース(△)」を設定する。
【0052】
これと同様に、通常文字入替処理部2023は、ランダムファイル2011の1レコード目のデータのうちの4文字目の項目「3」を取得し、3レコード目の漢字氏名「長曽可部重盛彦丸」のうちの4文字目は「部」であるため、半完成漢字氏名の4文字目に「スペース(△)」を設定する。以降、名の1文字目〜4文字目も同様に設定され、姓「山集△部」、名「太千△丸」とする半完成漢字氏名が生成される。このようにステップS1406の処理を行うことによって、例えば、以下のように、各文字の位置が入れ替えられた漢字が設定された半完成漢字氏名が生成され、このような半完成漢字氏名が、通常文字ファイル2015の全レコード分について生成される。
【0054】
その後、通常文字入替処理部2023は、生成した半完成漢字氏名のうちの「氏」、「名」の中にスペースがある場合には、以下に示すように桁詰め(スペース詰め)を実行する(ステップS1407)。
【0056】
通常文字入替処理部2023は、さらに、スペース詰めした後の漢字氏名について、
「姓」および「名」の漢字を取り出し、以下に示すように、これらの間にスペース(△)を挿入する形式(「姓」+「△」+「名」)の形式で半完成漢字氏名を再構築し、最大文字数を超える文字がある場合(上の例では、姓名それぞれ5文字以上の場合)、その文字を削除して完成漢字氏名を生成する(ステップS1408)。
(完成漢字氏名)
【0057】
この例では漢字氏名が桁あふれすることはないが、例えば、文字数が最大10文字を想定している場合、姓が「愛上尾下」、名が「記区家子差巣」のような場合、名が5文字以上となっているため、最後の文字「巣」を削除し、「愛上尾下△記区家子差」とする。
【0058】
そして、通常文字入替処理部2023は、完成漢字氏名のうちの「姓」と「名」の間にスペース(△)が挿入されているか否かを確認し(ステップS1409)、「姓」と「名」の間にスペースが挿入されていることが確認できた場合(ステップS1409;Yes)、そのレコードを通常文字ファイル2015に出力する(ステップS1410)。
【0059】
一方、通常文字入替処理部2023は、「姓」と「名」の間にスペースが挿入されていることが確認できない場合(ステップS1409;No)、エラーとして処理を終了させる。このとき、エラーとされたレコードを削除してもよい。
【0060】
なお、ステップS1408において、通常文字入替処理部2023は、姓、名、または姓名共に文字数が長すぎるため、全ての文字が完成漢字氏名に設定できない場合、例えば、以下に示すように、完成漢字氏名に設定できる文字のみで完成漢字氏名とし、姓名の漢字部分を抽出し、「姓」+「△」+「名」の形式で半完成漢字氏名を再構築する。以下の例では、最後の2文字「衛門」が削除されて完成漢字氏名が生成されている。
【0061】
(スペース詰め後漢字氏名:氏名共長すぎる場合)
【0063】
この処理の結果、「姓」と「名」との間に「スペース(△)」が設定されている場合(ステップS1409;Yes)、そのレコードが通常文字ファイル2015に出力されることとなる。
【0064】
また、「姓」が長すぎるため、全ての文字が完成漢字氏名に設定できない場合、例えば、以下に示すように、設定できる文字のみで完成漢字氏名とし、姓名の漢字部分を抽出し、「姓」+「△」+「名」の形式で半完成漢字氏名を再構築する。このとき、「姓」が長すぎることによって「姓」+「△」+「名」の形式で半完成漢字氏名が再構築できない場合には、通常文字入替処理部2023は、そのレコードは通常文字ファイル2015に出力しない。
【0065】
(スペース詰め後漢字氏名:姓が長すぎる場合)
【0067】
このように、ステップS1410の処理が終了すると、
図14に示した全ての処理が終了する。続いて、
図11に戻ってテストデータ作成処理のうち通常文字同名削除処理部2024が行う通常文字同名削除処理について説明する。
【0068】
図15は、通常文字同名削除処理の処理手順を示すフローチャートである。
図15に示すように、通常文字同名削除処理部2024は、通常文字入替処理部2023が文字を入れ替える前の通常文字ファイル2015と、通常文字入替処理部2023が文字を入れ替えた後の通常文字ファイル2015とを読み込み(ステップS1501)、両者に漢字氏名が一致するレコードがあるか否かを判定する(ステップS1502)。
【0069】
そして、通常文字同名削除処理部2024は、両者に漢字氏名が一致するレコードがあると判定した場合(ステップS1502;Yes)、重複レコードがあると判断し、処理を終了させる。一方、通常文字同名削除処理部2024は、両者に漢字氏名が一致するレコードがないと判定した場合(ステップS1502;No)、そのレコードを通常文字ファイル2015に出力する(ステップS1503)。
【0070】
このように、
図14、15に示した各処理が行われることによって、重複のない入れ替え後の漢字氏名を含む通常文字ファイル2015が生成されることとなる。続いて、特異文字を有した漢字氏名の文字を入れ替える処理について説明する。
【0071】
図16は、テストデータ作成処理のうち特異文字入替処理部2025が行う通常文字入替処理の処理手順を示すフローチャートである。
図16に示すように、特異文字入替処理部2025は、
図13に示した特異文字別分割処理で作成された特異文字ファイル2016を読み込む(ステップS1601)。例えば、特異文字入替処理部2025は、特異文字ファイル2016の以下のレコードを読み込む。
【0073】
そして、特異文字入替処理部2025は、読み込んだレコード中の特異文字を、姓と名に分けて退避し、否時レイアウトを有する退避レコードを生成する(ステップS1602)。このとき、特異文字入替処理部2025は、以下に示すように、特異文字を、退避前のレコードと同じ位置に退避させる。以下では、特異文字である「碕」および「彌」の各文字が、元のレコードの氏名のそれぞれの位置に対応する位置に退避されている。
【0075】
特異文字入替処理部2025は、通常文字ファイル2015を読み込み(ステップS1603)、その入力件数がこの処理で作成する溜め込みテーブルのレコード数を上回ったか(溜め込みテーブルのレコード数に達したか)、または特異文字ファイル2016の入力が完了したか否かを判定し(ステップS1604)、入力件数がテーブルのレコード件数に達した、または入力が完了したと判定した場合(ステップS1604;Yes)、全件分処理したと判定し、ステップS1607に進む。
【0076】
一方、特異文字入替処理部2025は、入力件数がテーブル件数に達していない、または入力が完了していないと判定した場合(ステップS1604;No)、
図14に示した場合と同様に、読み込んだレコードの漢字氏名を姓と名に分けて溜め込みテーブルに溜め込み(ステップS1605)、次のレコードを読み込み(ステップS1606)、ステップS1604に戻って、最終レコードが処理されるまでステップS1604〜S1606の処理を繰り返す。
【0077】
特異文字入替処理部2025は、
図14に示した場合と同様に、溜め込みテーブルに溜め込まれるデータとして、例えば、以下に示すように、溜め込みテーブルの各レコードを姓と名に分け、読み込んだレコードの漢字氏名のうちのスペース(△)より前を姓項目に設定し、漢字氏名のうちのスペース(△)より後を名項目に設定する。
【0079】
そして、特異文字入替処理部2025は、ステップS1604において全件分処理したと判定すると、ランダムファイル2011を読み込む(ステップS1607)。ランダムファイル2011については
図2A、
図2Bにおいて示したが、例えば、特異文字入替処理部2025は、以下に示すようなランダムファイル2011を読み込む。
【0081】
特異文字入替処理部2025は、ランダムファイル2011を読み込むと、
図14に示した場合と同様に、ランダムファイル2011の各レコードの文字項目(1文字目、2文字目等、文字の順番を示す項目)と、溜め込みテーブルに溜め込まれているレコードに含まれる漢字氏名の各文字とを取得し、その漢字氏名の各文字のうち、ランダムファイル2011の文字項目で指定されたレコードの文字項目に入れ替えた半完成漢字氏名を生成する(ステップS1608)。具体的な例については既に
図14において説明しているため、ここではその説明を省略する。
【0082】
その後、特異文字入替処理部2025は、ステップS1602において生成した退避レコードの文字を、ステップS1608において生成した半完成漢字氏名に設定する(ステップS1609)。例えば、特異文字入替処理部2025は、以下に示すように、半完成漢字氏名が「山集△部太千△丸」の場合、退避レコードと半完成漢字氏名とを比較し、半漢字氏名に退避レコード「△碕△△彌△△△」を重ね合わせて特異文字を設定し、特異文字を設定した後の半完成漢字氏名「山碕△部彌千△丸」を生成する。
【0084】
(半完成漢字氏名)+(特異文字退避)
【0085】
その後、特異文字入替処理部2025は、生成した半完成漢字氏名のうちの「氏」、「名」の中にスペースがある場合には、以下に示すように桁詰め(スペース詰め)を実行する(ステップS1610)。
【0087】
特異文字入替処理部2025は、さらに、スペース詰めした後の漢字氏名について、
「姓」および「名」の漢字を取り出し、以下に示すように、これらの間にスペース(△)を挿入する形式(「姓」+「△」+「名」)の形式で半完成漢字氏名を再構築し、最大文字数を超える文字がある場合(上の例では、姓名それぞれ5文字以上の場合)、その文字を削除して完成漢字氏名を生成する(ステップS1611)。
【0089】
この例では漢字氏名が桁あふれすることはないが、
図14に示した場合と同様に、例えば、文字数が最大10文字を想定している場合、姓が「愛上尾下」、名が「記区家子差巣」のような場合、名が5文字以上となっているため、最後の文字「巣」を削除し、「愛上尾下△記区家子差」とする。
【0090】
そして、特異文字入替処理部2025は、完成漢字氏名のうちの「姓」と「名」の間にスペース(△)が挿入されているか否かを確認し(ステップS1612)、「姓」と「名」の間にスペースが挿入されていることが確認できた場合(ステップS1612;Yes)、そのレコードを特異文字ファイル2016に出力する(ステップS1613)。
【0091】
一方、特異入替処理部2025は、「姓」と「名」の間にスペースが挿入されていることが確認できない場合(ステップS1612;No)、エラーとして処理を終了させる。このとき、エラーとされたレコードを削除してもよい。
【0092】
なお、ステップS1611において、特異文字入替処理部2025は、姓、名、または姓名共に文字数が長すぎるため、全ての文字が完成漢字氏名に設定できない場合、例えば、以下に示すように、完成漢字氏名に設定できる文字のみで完成漢字氏名とし、姓名の漢字部分を抽出し、「姓」+「△」+「名」の形式で半完成漢字氏名を再構築する。以下の例では、最後の2文字「衛門」が削除されて完成漢字氏名が生成されている。
【0093】
(スペース詰め後漢字氏名:氏名共長すぎる場合)
【0095】
この処理の結果、「姓」と「名」との間に「スペース(△)」が設定されている場合(ステップS1611;Yes)、そのレコードが特異文字ファイル2016に出力されることとなる。
【0096】
また、「姓」が長すぎるため、全ての文字が完成漢字氏名に設定できない場合、例えば、以下に示すように、設定できる文字のみで完成漢字氏名とし、姓名の漢字部分を抽出し、「姓」+「△」+「名」の形式で半完成漢字氏名を再構築する。このとき、「姓」が長すぎることによって「姓」+「△」+「名」の形式で半完成漢字氏名が再構築できない場合には、特異文字入替処理部2025は、そのレコードは特異文字ファイル2016に出力しない。
【0097】
(スペース詰め後漢字氏名:姓が長すぎる場合)
【0099】
このように、ステップS1613の処理が終了すると、
図16に示した全ての処理が終了する。続いて、
図11に戻ってテストデータ作成処理のうち特異文字同名削除処理部2026が行う特異文字同名削除処理について説明する。
【0100】
図17は、特異文字同名削除処理の処理手順を示すフローチャートである。
図17に示すように、特異文字同名削除処理部2026は、特異文字入替処理部2025が文字を入れ替える前の特異文字ファイル2016と、特異文字入替処理部2025が文字を入れ替えた後の特異文字ファイル2016とを読み込み(ステップS1701)、両者に漢字氏名が一致するレコードがあるか否かを判定する(ステップS1702)。
【0101】
そして、特異文字同名削除処理部2026は、両者に漢字氏名が一致するレコードがあると判定した場合(ステップS1702;Yes)、重複レコードがあると判断し、処理を終了させる。一方、特異文字同名削除処理部2026は、両者に漢字氏名が一致するレコードがないと判定した場合(ステップS1702;No)、そのレコードを特異文字ファイル2016に出力する(ステップS1703)。
【0102】
このように、
図16、17に示した各処理が行われることによって、重複のない入れ替え後の漢字氏名を含む特異文字ファイル2016が生成されることとなる。続いて、このように作成された通常文字ファイル2015、特異文字ファイル2016をマージする処理について説明する。
【0103】
図18は、マージ処理部2027が行うマージ処理の処理手順を示すフローチャートである。
図18に示すように、マージ処理部2027は、重複のない入れ替え後の漢字氏名を含む通常文字ファイル2015および特異文字ファイル2016を読み込み(ステップS1801)、入力した順序でマージファイルを生成する(ステップS1802)。このとき、単に入力順ではなく、漢字氏名のアイウエオ順、あるいはレコードに顧客を識別するための顧客コードを有している場合には、その顧客コードでソートしてもよい。このように、通常文字と特異文字とがマージされたマージファイルが生成され、システムのテストデータとして使用されることとなる。
【0104】
図19は、全マージ処理部2028が行う全マージ処理の処理手順を示すフローチャートである。
図19に示すように、全マージ処理部2027は、重複のない入れ替え後の漢字氏名を含む通常文字ファイル2015および特異文字ファイル2016、さらに
図12において分離処理部2021が分離処理を行った結果作成される非変換氏名ファイル2014を読み込み(ステップS1901)、入力した順序で全マージファイルを生成する(ステップS1902)。このとい、単に入力順ではなく、漢字氏名のアイウエオ順、あるいはレコードに顧客を識別するための顧客コードを有している場合には、その顧客コードでソートしてもよい。このように、通常文字と特異文字、および非変換文字がマージされた全マージファイルが生成され、システムのテストデータとして使用されることとなる。
【0105】
なお、マージファイルまたは全マージファイルのいずれのファイルを用いてテストを行うかについては、システムの規模やテストの内容等によって任意に選択できる。例えば、システム全体の総合テストを行う場合には、システムの開発者は、非変換文字を含む全てのデータを網羅した全マージファイルを使用し、個々のシステムのテストを行う場合には非変換文字を含まないマージファイルを使用することができる。
【0106】
このように、クライアント端末100とサーバ200とがネットワーク300を介して接続され、漢字文字を含む複数のレコードを有したデータを作成するテストデータ作成システム1000において、クライアント端末100は、入れ替え対象となる漢字文字の位置と入れ替え後の漢字文字を有する入れ替えレコードとを対応付けたランダムデータを生成する生成部(制御部)を備え、サーバ200は、漢字文字を含む複数のレコードから構成される入力データと、ランダムデータとを取得し、入れ替え対象となる漢字文字を、入れ替えレコードに含まれる位置の漢字文字に入れ替える入替処理部(通常文字入替処理部2023、特異文字入替処理部2025)を有したサーバ制御部を備えているので、容易かつ適切に個人情報を保護したテストデータを作成することが可能となる。例えば、アプリケーションの稼動テストでは、個人情報を保護しつつ、漢字氏名をテストデータとして用いることができる。また、個人情報を保護しつつ、システムテストで使用するユニークな漢字氏名を含むテストデータを短時間で大量に作成することができる。