(57)【要約】      （修正有）【課題】文字で構成される秘匿したいデータから、匿名性を有し、かつ、文字の範囲、出現分布などの性質の変更を抑えつつ、元のデータに復元可能であるテストデータを作成するシステムを提供する。【解決手段】データの各レコードを複数の分割単位に分割するとともに、当該分割単位の種類を特定し、同一の種類の分割単位内で、分割単位に含まれる文字または文字列を他のレコードの分割単位の文字または文字列に変換し、同じ表記の文字または文字列は同じ表記の文字または文字列に変換する変換ルールを作成する。変換ルールに基いてレコードの分割単位の文字を変換し、テストデータを作成する。【選択図】図１
2015079403.tif 000002
【特許請求の範囲】
【請求項１】
文字列から構成されるレコードを有するデータから、匿名化したテストデータを作成するテストデータの作成方法において、
情報読込部が、前記データの各レコードを複数の分割単位に分割するとともに、当該分割単位の種類を特定するステップと、
変換ルール作成部が、同一の種類の分割単位内で、前記分割単位に含まれる文字または文字列を他のレコードの分割単位の文字または文字列に変換し、同じ表記の文字または文字列は同じ表記の文字または文字列に変換する変換ルールを作成するステップと、
テストデータ作成部が、前記変換ルールに基いて前記レコードの分割単位の文字を変換し、テストデータを作成するステップと、
を含むテストデータの作成方法。
【請求項２】
請求項１において、
前記分割及び種類特定は、第１の分割単位と、それをさらに分割した第２の分割単位とについて行い、前記第１の分割単位の種類に応じて第２の分割単位への分割基準を変えるとともに、前記第２の分割単位ごとに前記変換を行うように前記変換ルールを作成することを特徴とするテストデータの作成方法。
【請求項３】
請求項２において、
前記変換ルールは、前記第１の分割単位ごとに作成されることを特徴とするテストデータの作成方法。
【請求項４】
請求項１乃至３のいずれかにおいて、
所定の文字または文字列リストに含まれる文字または文字列を、前記変換の対象から除外することを特徴とするテストデータの作成方法。
【請求項５】
請求項４において、
前記変換ルールとは異なる変換ルールで、前記除外された文字または文字列同士を変換することを特徴とするテストデータの作成方法。
【請求項６】
請求項１乃至５のいずれかにおいて、
前記変換ルールでは、数字は数字に変換することを特徴とするテストデータの作成方法。
【請求項７】
請求項１乃至６のいずれかにおいて、
前記レコードは、住所を含み、
前記分割単位の項目として、郵便番号と紐付けることを可能とする都道府県名、市区町村名を少なくとも含むことを特徴とするテストデータの作成方法。
【請求項８】
請求項１乃至７のいずれかに記載のテストデータ作成方法と、
前記作成したテストデータを、テスト対象プログラムに処理させるステップと、
前記処理に用いたテストデータを、前記変換ルールを用いて復元を行うステップと、
を含むプログラムのテスト方法。
【請求項９】
文字列から構成されるレコードを有するデータから、匿名化したテストデータを作成するテストデータの作成システムにおいて、
前記データの各レコードを複数の分割単位に分割するとともに、当該分割単位の種類を特定する情報読込部と、
同一の種類の分割単位内で、前記分割単位に含まれる文字または文字列を他のレコードの分割単位の文字または文字列に変換し、同じ表記の文字または文字列は同じ表記の文字または文字列に変換する変換ルールを作成する変換ルール作成部と、
前記変換ルールに基いて前記レコードの分割単位の文字を変換し、テストデータを作成するテストデータ作成部と、
を備えたテストデータの作成システム。
【請求項１０】
文字列から構成されるレコードを有するデータから、匿名化したテストデータを作成するテストデータの作成プログラムにおいて、
コンピュータを、
前記データの各レコードを複数の分割単位に分割するとともに、当該分割単位の種類を特定する情報読込機能と、
同一の種類の分割単位内で、前記分割単位に含まれる文字または文字列を他のレコードの分割単位の文字または文字列に変換し、同じ表記の文字または文字列は同じ表記の文字または文字列に変換する変換ルールを作成する変換ルール作成機能と、
前記変換ルールに基いて前記レコードの分割単位の文字を変換し、テストデータを作成するテストデータ作成機能と、
として機能させるテストデータの作成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実際に使用・運用している環境で用いられているデータに対し、匿名化処理を実施し、情報漏洩を防止したテストデータを作成する技術に関する。
【背景技術】
【０００２】
システム開発の最終フェーズで実施されるシステムテストは、顧客が使用・運用する環境と可能な限り同じ環境で行われる必要があり、開発したシステムが全体として顧客の要求仕様通りに動作するかを検証する作業であるため、使用するテストデータも可能な限り顧客が使用・運用するデータであることを要求される。
【０００３】
従来の匿名化処理を行う手段には、匿名化対象のデータを特定の文字へ文字列置換する手段や、同じカラムに登録されているデータをランダムに入れ替える手段(例えば、特許文献１)がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開2001-209554号公報
【特許文献２】特開2012-069019号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ここで「本番環境」とはシステム開発やソフトウェア開発において開発された情報システムやソフトウェアを稼動させる環境、または情報システムやソフトウェアが稼動している環境を指す。
【０００６】
「データ」とは、例えば、本番環境で用いられている情報の中で取引先の顧客を特定することが可能であり、外部への漏洩を防止する必要のある情報である。
【０００７】
「文字の範囲」とは、例えば、データで使用されている文字コード値を指し、データが存在する情報システムで扱っている文字コードがJIS第一水準・第二水準であれば、JIS第一水準・第二水準を範囲とする。
【０００８】
幅広く用いられている文字列置換による匿名化手段は、データの匿名化手段としては有効であるが、本番環境を意識したシステムテストで用いるテストデータとしては、実際に使用されている文字の範囲やデータに存在する住所における都道府県や市といった意味のある文字列（単語）のデータ内での出現分布とは異なるため、テストデータによる不良検知、あるいは性能測定に用いるテストデータとしては有効性が薄れてしまう。
【０００９】
また、特許文献１での匿名化手段は、名称が氏と名、住所が都道府県・市・区・郡・町村・字（あざ）・町域にそれぞれ別カラムとして登録されている際には有効な匿名化手段と成り得るが、名称と住所がそれぞれ１カラムとして登録されているケースでは、１カラムの情報だけで顧客特定に繋がる危険性がある。
【００１０】
さらに、郵便番号と住所には項目間で紐付く関係があり、システムの機能として郵便番号から住所を検索する等の対応関係を必要とするテストケースがある。この場合、単にデータの匿名化処理を行っただけでは、レコード内でのカラム間の関係性が無くなり、その関係を用いた検索機能等のテストを行うことができないテストデータとなる。
【課題を解決するための手段】
【００１１】
上記の課題を解決するために、本発明では、文字列から構成されるレコードを有するデータから、匿名化したテストデータを作成するテストデータ作成において、データの各レコードを複数の分割単位に分割するとともに、当該分割単位の種類を特定し、同一の種類の分割単位内で、分割単位に含まれる文字または文字列を他のレコードの分割単位の文字または文字列に変換し、同じ表記の文字または文字列は同じ表記の文字または文字列に変換する変換ルールを作成し、変換ルールに基いて前記レコードの分割単位の文字を変換し、テストデータを作成する。
【発明の効果】
【００１２】
本発明により、データに対し匿名化処理を行うことで、本番環境で扱われているデータの性質を大きく変えることなく、データから元の情報を特定することができない匿名化されたテストデータを作成することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の一実施例にかかるシステム構成図である。
【図２】本発明の一実施例にかかるデータ（２００）のサンプルである。
【図３】本発明の一実施例にかかるカラム情報（３００）のサンプルである。
【図４】本発明の一実施例にかかる数値変換ルール（４００）のサンプルである。
【図５】本発明の一実施例にかかる除外リスト（５００）のサンプルである。
【図６】本発明の一実施例にかかる対応マップ（１２０）のサンプルである。
【図７】本発明の一実施例にかかるテストデータ作成の概要を示すフローチャートである。
【図８】本発明の一実施例にかかるデータシャッフル部（１３００）のフローチャートである。
【図９】本発明の一実施例にかかる住所変換ルール１（８２０）の例である。
【図１０】本発明の一実施例にかかる住所変換ルール２（８３０）の例である。
【図１１】本発明の一実施例にかかる名称変換ルール（８４０）の例である。
【図１２】本発明の一実施例にかかるテストデータ作成部（１４００）のフローチャートである。
【図１３】本発明の一実施例にかかる郵便番号（２１０）の匿名化処理の例である。
【図１４】本発明の一実施例にかかる住所（２２０）の匿名化処理の例である。
【図１５】本発明の一実施例にかかる名称（２３０）の匿名化処理の例である。
【図１６】本発明の一実施例にかかるテストデータ（６００）のサンプルである。
【図１７】本発明の一実施例にかかるテスト用対応マップ（７００）のサンプルである。
【図１８】本発明の一実施例にかかる復元データ作成の概要を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の一形態について図面に基づき説明する。
【実施例１】
【００１５】
図１は本発明の実施の形態に係るデータシャッフルシステムの概略構成を表すブロック図である。
【００１６】
データシャッフルシステム１０は本システム全体を示しており、テストデータ作成に係るプログラム１００とデータ群１１０と入出力装置１５０から構成される。データシャッフルシステム１０は、例えば、サーバやPCなどの情報処理装置により実現される。
【００１７】
プログラム１００は、記憶装置（図示せず）からプロセッサ（図示せず）上に読み出されて機能を発揮する。プログラム１００は、ユーザ認証を行うユーザ認証部１１００と入力ファイルの読み込みを行う入力情報読込部１２００と匿名化処理を行うための変換ルールを作成するデータシャッフル部１３００と作成したテストデータから匿名化前のデータを復元するデータ復元部１５００と変換ルールに基づき匿名化されたデータからテストデータを作成するテストデータ作成部１４００から構成される。
【００１８】
データ群１１０は、記憶装置に格納されており、対応マップ１２０と復元用データ１３０とユーザ認証用データ１４０から構成される。
【００１９】
また、入力ファイル２０及び出力ファイル３０は、入出力装置１５０を介してシステム１０外と入力や出力をされる。入力ファイル２０はデータ２００とカラム情報３００と数値変換ルール４００と除外リスト５００から構成され、出力ファイル３０はテストデータ６００とテスト用対応マップ７００から構成される。
【００２０】
図２は入力ファイル２０であり匿名化対象の項目で構成されるデータ２００のサンプルであり、データ２００は郵便番号２１０と住所２２０と名称２３０を含む項目に分割されて構成される。住所２２０は、都道府県ブロック２２１、市ブロック２２２、区ブロック２２３、郡ブロック２２４、町村ブロック２２５、字（あざ）ブロック２２６、町域ブロック２２７から構成される。町域ブロック２２７とは、郵便番号から紐付けることのできない番地やアパート・マンション名等の情報を指す。住所２２０が各ブロックに分けられておらずひとまとめとされている場合もある。
【００２１】
図３は入力情報２０でありデータ２００が登録されているカラムのカラム長の情報を保持するカラム情報３００のサンプルであり、データ２００の項目名３１０と項目のカラム長３２０と除外リスト名３３０から構成される。カラム情報３００は、データの項目名の定義と、その項目に適用される除外リスト５００を示している。
【００２２】
図４は入力情報２０でありデータ２００における郵便番号の匿名化処理を行う際に用いる変換ルールの情報を保持する数値変換ルール４００のサンプルであり、変換前の数値を表す変換前数値４１０と変換後の数値を表す変換後数値４２０から構成される。
【００２３】
図５は入力情報２０でありデータ２００における住所と名称の匿名化処理を行う際に処理対象外とする文字列をユーザが任意に設定する際の情報を保持する除外リスト５００のサンプルであり、住所２２０の町域ブロック２２７の匿名化処理対象から除外する文字を設定するための住所用除外リスト５１０と名称２３０の匿名化処理対象から除外する文字を設定するための名称用除外リスト５２０から構成される。
【００２４】
図６はデータ群１１０として保持されている対応マップ１２０のサンプルである。対応マップ１２０は実際に使用されている郵便番号のデータ１２１と、実際に使用されている郵便番号と対応している住所のデータ１２２と、住所のデータ１２２を都道府県・市・区・郡・町村・字（あざ）に分割した際の都道府県のデータである都道府県ブロック１２３と、住所のデータ１２２を都道府県・市・区・郡・町村・字（あざ）に分割した際の市のデータである市ブロック１２４と、住所のデータ１２２を都道府県・市・区・郡・町村・字（あざ）に分割した際の区のデータである区ブロック１２５と、住所のデータ１２２を都道府県・市・区・郡・町村・字（あざ）に分割した際の郡のデータである郡ブロック１２６と、住所のデータ１２２を都道府県・市・区・郡・町村・字（あざ）に分割した際のデータである町村ブロック１２７と、住所のデータ１２２を都道府県・市・区・郡・町村・字（あざ）に分割した際のデータである字（あざ）ブロック１２８とで構成される。対応マップ１２０は、入力情報読込部１２００によってデータ２００から作成される。  以降、上記形態における実施例の動作について、図面を用いて説明する。
【００２５】
図７は、データ２００に対し匿名化処理を行いテストデータの作成をするテストデータ作成の概要を示すフローチャートである。ユーザ認証部１１００でユーザ認証処理を行い、入力ファイル２０を入力情報読込部１２００で読み込み、データシャッフル部１３００でデータ２００を匿名化するための変換ルール８００を作成し、前記変換ルール８００に基づきテストデータ作成部１４００でデータ２００に対して匿名化処理によりテストデータ６００を作成する。また、テストデータ作成部１４００ではテストデータ６００からデータ２００への復元処理のための復元用データ１３０の蓄積を行う。
【００２６】
ユーザ認証は、ユーザ認証部１１００が、ユーザからID（IDentification）とPW（Pass Word）の入力を受付け、ユーザ認証用データ１４０に含まれているIDとPWと比較し、認証可否を判断する。顧客のデータを扱う権限を持つユーザのみが操作できるようにするためである。認証できた場合には、次の工程に進む。
【００２７】
入力情報読込部１２００は、入力ファイル２０を読み込み、その中のデータ２００から対応マップ１２０を作成し記憶する。データ２００の住所２２０がブロックに分けられていない場合、下記のようにして対応マップを作成する。まず、各ブロックに特徴文字である、都道府県ブロックの「都」「道」「府」「県」、市ブロックの「市」、区ブロックの「区」、郡ブロックの「郡」、町村ブロックの「町」「村」を抽出する。その位置関係（必ず都道府県、市（郡）、区（町村）の順になる）、組合せ関係（一つのレコードには市・区と郡・町村との一方のみである）から特徴文字としての正当性を確認し、正当な場合には特徴文字の後ろを区切り位置としてブロックに分割する。また、特徴文字により、分割したブロックがどのブロックになるか判定する。字ブロック２２６と町域ブロックとの分割は、町域ブロックに算用数字や「−」が用いられていたり、漢数字であっても「丁目」の直前にある数字以降が町域であったりすることを利用して分割位置を決める。ここで、地名データを用いて正確性を向上させてもよい（例えば、市・区・郡・町村名から、省略された都道府県名を補填する、政令指定都市以外は「区」があっても特徴文字にせず字ブロックにする、など）。また、このような文字認識により分割を行う他に、日本全国の郵便番号と都道府県から字（あざ）まで各ブロックに分割済みの住所とを対応させて記憶した郵便番号データ（図示せず）を記憶しておき、住所２２０と郵便番号データを比較して住所をブロックに分割してもよい。このようにして、対応マップが作成される。
【００２８】
また、本実施例では、数値変換ルール４００を入力ファイル２０として読み込んでいるが、データシャッフルシステム１０内（例えば入力情報読込部１２００）が数値変換ルール４００を作成してもよい。０〜９の数字をランダムに０〜９の数字に１対１の関係で変換するように、乱数を用いて変換規則がランダムになるように生成することができる。また、除外リストについては、予めデータ群として格納していてもよい。
【００２９】
データシャッフル部１３００は、本データで扱われている文字の範囲内でランダムな対応関係を設定し、且つデータ２００の項目間で依存関係にある項目の関係性を保持した匿名化を行うための変換ルールを作成する。すなわち、データシャッフル部１３００は、データ２００における郵便番号に対する変換ルールを作成する郵便番号データシャッフル処理と、データ２００における住所に対する変換ルールを作成する住所データシャッフル処理と、名称に対する変換ルールを作成する名称データシャッフル処理とを行う。図８は、その詳細を示すフローチャートであり、変換ルール８００を作成する対象のデータ２００の項目ごとに分割して振り分けを行い(１３０１)、項目毎に変換ルール８００の作成を行う。ここでは、データ２００を郵便番号２１０、住所２２０、名称２３０に分割する。
【００３０】
郵便番号データシャッフル処理において、より詳細には、数値変換ルール４００を郵便番号変換ルール８１０として設定する。郵便番号２１０に数値以外の区切り文字等が含まれている場合は削除し数値７桁のデータに整形する(１３０２)。入力ファイル２０として読み込んだ数値変換ルール４００を郵便番号変換ルール８１０として作成する（１３０３）。
【００３１】
また、住所データシャッフル処理において、対応マップ１２０からデータ２００の住所に存在するデータを抽出し、対応マップ１２０から抽出したデータの各ブロック(１２３〜１２８)における各データを重複排除し、ソートした上で複製し、一方のデータには昇順のインデックスキーを付与して変換前データリスト１に登録し、もう一方のデータはリストのサイズを上限とする乱数を、重複を許さないインデックスキーとして付与し、同じインデックスキーのペアとする対応関係を住所に関する住所変換ルール１(８２０)とする。また、データ２００の住所において、対応マップ２００に存在しない文字列を除外リスト５００に設定されている文字列を除き、１文字ずつに分割して重複をしないようにソートした上で複製し、一方のデータには昇順のインデックスキーを付与して変換前データリスト２に登録し、もう一方のデータはリストのサイズを上限とする乱数を、重複を許さないインデックスキーとして付与し、同じインデックスキーのペアとする対応関係を住所に関する住所変換ルール２(８３０)とする。
【００３２】
すなわち、町域以外のブロック２２１〜２２６と町域ブロック２２７で異なる変換ルールを作成する。まずは、町域以外のブロック２２１〜２２６と町域ブロック２２７のための住所変換ルール１（８２０）を作成し、次いで町域ブロック２２７のための住所変換ルール２（８３０）を作成する。
【００３３】
住所変換ルール１（８２０）の作成について、図８及び図９を用いて説明する。対応マップ１２０と住所除外リスト５１０を読み込み(１３０４)、ブロック毎に対応マップ１２０からデータ２００の住所２２０に存在するデータを重複排除して抽出する(１３０５)。ブロック毎(１２３〜１２８)に抽出した文字を複製し、一方に昇順のインデックスキーを付与して変換前データリスト１に登録し、もう一方は抽出した文字列のレコード数を上限とする乱数を用いたランダムなインデックスキーを付与して変換後データリスト１に登録し(１３０６)、変換前データリスト１と変換後データリスト１の同じインデックスキー同士に並べ替えることで住所変換ルール１(８２０)を作成する(１３０７)。図９は住所変換ルール１(８２０)の実施例である。対応マップ１２０から、ブロックごとに重複を排除して抽出する。例えば、都道府県ブロックに「北海道」のレコードが複数存在しても、重複排除して一つのみ抽出する。抽出したデータに対し、変換前データ、変換後データの二つの項目を作成し、変換前データに昇順で順番にインデックスキー（番号）を付して変換前データリストに登録する。もう一方はインデックスキーを昇順で発生させるとともに乱数を用いたランダムな順番で変換後データに付して変換後データリストに登録する、そして同じインデックスキーを有する変換前項目と変換後項目を対応させる。これをブロックごとに行い、同ブロック内でランダムに変換される住所変換ルール１（８２０）を作成することができる。
【００３４】
さらに、住所変換ルール２（８３０）の作成について、図８及び図１０を用いて説明する。町域ブロック２２７から住所用除外リスト５１０に設定されている文字列を除き、残った町域ブロック２２７の文字（図１０の下線部）を重複排除しながら１文字ずつ抽出する(１３０８)。抽出した文字を変換前データ、変換後データの二つに複製し、一方に昇順のインデックスキーを付与して変換前データリスト２に登録し、もう一方は抽出した文字列のレコード数を上限とする乱数を用いてランダムなインデックスキーを付与して変換後データリスト２に登録し(１３０９)、変換前データリスト２と変換後データリスト２の同じインデックスキー同士に並べ替えることで住所変換ルール２(８３０)を作成する(１３１０)。図１０は住所変換ルール２(８３０)の実施例である。なお、本実施例では、町名ブロック２２７内の数字は住所用除外リスト５１０に含まれているので変換は行わないが、数字変換ルール４００を用いて郵便番号と同様に数字同士で変換を行うようにしてもよい。
【００３５】
また、名称データシャッフル処理において、より詳細には、前記住所変換ルール２を作成する方法と同様に、データ２００の名称において、除外リスト５００に設定されている文字列を除き、１文字ずつに分割して重複をしないようにソートした上で複製し、一方のデータには昇順のインデックスキーを付与して変換前データリストに登録し、もう一方のデータはリストのサイズを上限とする乱数を、重複を許さないインデックスキーとして付与し、同じインデックスキーのペアとする対応関係を住所に関する名称変換ルール８４０とする。町名ブロックから住所変換ルール２を作成するのと同様な手法で作成する。
【００３６】
すなわち、まず名称除外リスト５２０を読み込み(１３１１)、名称用除外リスト５２０に設定されている文字列を除いた名称２３０を重複排除しながら１文字ずつ抽出する(１３１２)。抽出した文字を複製し、一方に昇順のインデックスキーを付与して変換前データリストに登録し、もう一方は抽出した文字のレコード数を上限とする乱数を用いてランダムなインデックスキーを付与して変換後データリストに登録し(１３１３)、変換前データリストと変換後データリストの同じインデックスキー同士に並べ替えることで名称変換ルール(８４０)を作成する(１３１４)。図１１は名称変換ルール(８４０)の実施例である。なお、本実施例では、会社形態を示す用語は名称用除外リスト５２０に含まれているため変換は行わないが、除外リスト５２０内の会社形態の用語のみでランダムに変換を行うルールを作成してテストデータ作成に適用してもよい。
【００３７】
図１２は、変換ルールに基づきデータ２００に匿名化処理を行い復元用データ１３０の蓄積を行うテストデータ作成部１４００のフローチャートである。データ２００と変換ルール８００を読み込み(１４０１)、郵便番号２１０に対して、郵便番号変換ルール８１０に基づき匿名化処理を行う(１４０２)。すなわち、郵便番号の算用数字を一文字ずつ郵便番号変換ルール８１０の変換前データから変換後データに変換していく。図１３は郵便番号２１０の匿名化処理の実施例である。
【００３８】
さらに、住所２２０に対し、住所変換ルール１(８２０)と住所変換ルール２(８３０)に基づき匿名化処理を行う(１４０３)。すなわち、町域ブロック以外はブロック単位で住所変換ルール１（８２０）の変換前データから変換後データに変換し、町域ブロックは一文字ずつ住所変換ルール２（８３０）の変換前データから変換後データに変換していく。図１４は住所２２０の匿名化処理の実施例である。
【００３９】
さらに、名称２３０に対し、名称変換ルール８４０に基づき匿名化処理を行う(１４０４)。すなわち、名称を一文字ずつ名称変換ルール８４０の変換前データから変換後データに変換していく。図１５は名称２３０の匿名化処理の実施例である。
【００４０】
匿名化処理を行った各項目からテストデータ６００を作成する(１４０５)、図１６はテストデータ６００のサンプルである。カラム情報３００の項目のカラム長３２０に基づき、各テストデータの項目に対してデータ長チェックを行い(１４０６)、テストデータ６００が登録先のカラムに収まるように項目のカラム長３２０を超えた文字列は切り捨て、該当したテストデータ６００はログに出力する。テストデータ６００の郵便番号と住所変換ルール１の変換後データ１はデータ２００を用いて各項目の対応関係を維持してテスト用対応マップ７００を作成し、テストデータ６００とテスト用対応マップ７００を復元用データ１３０に蓄積し(１４０７)、テストデータ６００とテスト用対応マップ７００を出力ファイル３０として出力する(１４０８)、図１７はテスト用対応マップ７００のサンプルである。
【００４１】
このようにして作成したテストデータを、テスト対象プログラムに処理させることにより、テストを行うことができる。テストの結果に問題が発生したり、開発環境のテスト結果と本番環境の運用結果に差異が生じた場合、テストに用いた匿名化済テストデータから匿名化前のテストデータ（本番環境のデータ）を復元することができる。
【００４２】
図１８は、対応関係を用いてテストデータ６００からデータ２００への復元を行う復元データ作成の概要を示すフローチャートである。
【００４３】
まずユーザ認証部１１００でユーザ認証用データ１４０を用いてユーザ認証を行う。
【００４４】
その後に、入力情報読込部１２００は、テストデータ６００を入力ファイルとして、復元用データ１３０から一致するファイル名を検索し、復元を行うテストデータ６００の全体または復元対象のレコードを読み込む。復元のために入力するテストデータ６００は、全レコードではなく、任意のレコードに絞り込まれたテストデータ６００についても可能である。
【００４５】
そして、データ復元部１５００で該当する変換ルール８００を入力として、復元したいテストデータ６００から匿名化前のデータ２００への復元を行う。復元とは、データシャッフルシステムにおいて作成されたテストデータ６００に対し、テストデータ６００を作成する際に用いた変換ルールを再度用いて、テストデータ６００を匿名化前のデータ２００に戻す処理である。すなわち、復元対象レコードの各項目を、変換ルール８００の変換後項目に対して検索を行い、ヒットした項目を変換前項目に変換（逆変換）することで復元を行う。そして、復元したテストデータ作成部１４００でデータ２００を作成し出力する。
【００４６】
以上、本発明の実施形態を説明した。本発明によると、顧客情報が含まれるデータに対し匿名化処理を行うことで、データから顧客を特定することができない匿名化されたテストデータを作成することができる。システムテストに関わる作業もしくは作業の一部を、セキュリティの施しにくい者に行わせた場合にも、テストデータから顧客特定に繋がるデータの流出を防止することが可能となる。
【００４７】
また、テストデータに出現する文字を重複排除し、その文字同士を１対１の関係で変換することにより、本番環境で扱われているデータ（匿名化前テストデータ）の文字の範囲と匿名化済データ内の文字列（単語）の文字の範囲が変わらない。また、文字同士を１対１の関係で変換することにより、匿名化前の同じであった複数の文字は、同じ文字に変換されるので、変換後も文字列（例えば、都道府県ブロックの都道府県名など）の出現分布は変換前と変わらない。これによって匿名化後のテストデータが、匿名化前のテストデータ（本番環境のデータ）の出現分布の性質を保っており、本番環境に近い状態で対象システムのテストをすることができる。
【００４８】
住所の町域には地域名に紐付くアパート名やマンション名が含まれることもあるが、この場合、１文字ずつランダムにシャッフルすることで従来に比べ、より匿名化されたテストデータを作成することが可能になる。また、都道府県などは１文字ずつシャッフルせず住所を構成する要素単位（ブロック単位）でのランダムなシャッフルを行うことにより、住所を構成する要素を変換せずにそのまま検索キーワードとする検索機能に耐え得るテストデータとすることができる。このため、テストにおいて入力を行う作業者が扱いやすいテストデータを作成することができる。
【００４９】
また、開発環境のテスト結果または本番環境での運用に問題が生じ、テストで用いた匿名化済テストデータと本番環境のデータを比較したい場合に、匿名化済テストデータから変換ルールを用いて復元できるため、比較を行うことができる。その場合でも、顧客情報が含まれる匿名化前のデータを開発環境に提供する必要性が無く、必要な場合に必要なデータのみを復元することができるため、情報漏洩を抑止することが可能である。また復元可能であることにより、郵便番号と住所の検索機能等で対応関係を必要とするテストケースにも耐え得るテストデータとすることが可能となる。
【符号の説明】
【００５０】
１０  データシャッフルシステム
２０  入力ファイル
３０  出力ファイル
１００  プログラム
１１０  データ群
１２０  対応マップ
１３０  復元用データ
１４０  ユーザ認証用データ
１５０  デフォルト値データ
１６０  入出力装置
２００  データ
２１０  データの構成項目である郵便番号
２２０  データの構成項目である住所
２２１  住所の構成要素である都道府県ブロック
２２２  住所の構成要素である市ブロック
２２３  住所の構成要素である区ブロック
２２４  住所の構成要素である郡ブロック
２２５  住所の構成要素である町村ブロック
２２６  住所の構成要素である字（あざ）ブロック
２２７  住所の構成要素である町域ブロック
２３０  データの構成項目である名称
３００  カラム情報
３１０  データを構成する項目名
３２０  データを構成する項目のカラム長
３３０  データを構成する項目に対する除外リスト名
４００  数値変換ルール
５００  除外リスト
５１０  住所用除外リスト
５２０  名称用除外リスト
６００  テストデータ
７００  テスト用対応マップ
８００  変換ルール
８１０  郵便番号変換ルール
８２０  住所変換ルール１
８３０  住所変換ルール２
８４０  名称変換ルール
１１００  ユーザ認証部
１２００  入力情報取得部
１３００  データシャッフル部
１４００  テストデータ作成部
１５００  データ復元部
【図１】
2015079403.tif 000003
【図２】
2015079403.tif 000004
【図３】
2015079403.tif 000005
【図４】
2015079403.tif 000006
【図５】
2015079403.tif 000007
【図６】
2015079403.tif 000008
【図７】
2015079403.tif 000009
【図８】
2015079403.tif 000010
【図９】
2015079403.tif 000011
【図１０】
2015079403.tif 000012
【図１１】
2015079403.tif 000013
【図１２】
2015079403.tif 000014
【図１３】
2015079403.tif 000015
【図１４】
2015079403.tif 000016
【図１５】
2015079403.tif 000017
【図１６】
2015079403.tif 000018
【図１７】
2015079403.tif 000019
【図１８】
2015079403.tif 000020