以下に、本願の開示する制御プログラム、情報処理装置およびシステムの各実施例を図面に基づいて詳細に説明する。なお、各実施例は開示の技術を限定するものではない。また、各実施例において開示された技術を組み合わせることもできる。
実施例1に係るシステムについて説明する。図1は、実施例1に係るシステムの構成の一例を示す図である。図1の例に示すシステム1は、ソースシステム内のサーバ2、サーバ3、ターゲットシステム内のサーバ4、サーバ5、情報処理装置6、および、クライアント装置10を有する。システム1におけるサーバ2、サーバ3、サーバ4、サーバ5、情報処理装置6およびクライアント装置10の台数は、図1の例に示す台数に限られず、任意の台数を採用できる。サーバ2およびサーバ3と、情報処理装置6とは、ネットワーク90を介して接続されている。すなわち、サーバ2およびサーバ3と、情報処理装置6とは、互いに通信可能である。また、サーバ4およびサーバ5と、情報処理装置6とは、ネットワーク91を介して接続されている。すなわち、サーバ4およびサーバ5と、情報処理装置6とは、互いに通信可能である。また、情報処理装置6とクライアント装置10とは、接続されており、互いに通信可能である。なお、情報処理装置6と、サーバ2〜5およびクライアント装置10とは、有線に限らず、無線など任意の通信網を介して接続することができる。
図2A〜2Cは、実施例1に係るシステムの情報処理装置が実行する処理の一例を説明するための図である。情報処理装置6は、ソースシステムのサーバ2およびサーバ3からデータを収集する。そして、情報処理装置6は、収集したデータを匿名化する。そして、情報処理装置6は、匿名化したデータに対して以下で説明する処理を実行した上で、ターゲットシステムのサーバ4およびサーバ5に配布する。例えば、情報処理装置6は、3件のレコードを収集した場合には、収集したレコードを匿名化し、図2Aの例に示すように、匿名化データ80を生成する。ここで、匿名化データ80は、匿名化のためのデータ変換処理が実行されたデータであり、属性値が対応する値域に変換されたり、仮名文字化されたり、レコードの一部の属性が破棄されたりしたデータである。図2Aの例では、匿名化データ80は、ABCDという属性値を含む2件のレコードと、EFGHという属性値を含む1件のレコードとを有する。
そして、情報処理装置6は、匿名化データ80のレコードの重複数を計数する。続いて、情報処理装置6は、計数した結果を、情報処理装置6内に設けられた、レコードの重複数のカウンタである重複数テーブル(Table:TBL)8dに登録する。以下の説明では、「テーブル」、「Table」を、「TBL」と略記する。図2Aの例に示すように、情報処理装置6は、ABCDという属性値を含むレコードの重複数「2」を、重複数TBL8dに登録する。また、情報処理装置6は、EFGHという属性値を含むレコードの重複数「1」を、重複数TBL8dに登録する。
続いて、情報処理装置6は、匿名化データ80の各レコードについて、個人が識別される可能性が高いレコードであるか否か検証する。例えば、情報処理装置6は、図2Aの例に示すように、重複数TBL8dを参照し、各レコードについて、重複数がN(Nは自然数)以上であるか否かを判定する。以下、Nの値が「2」である場合について説明する。情報処理装置6は、重複数がN以上となるABCDという属性値を含む2件のレコードについては、「OK」、すなわち、個人が識別される可能性が低いと判定し、2回目の匿名化を行わずにサーバ4およびサーバ5に配布する。
一方、情報処理装置6は、重複数がN未満となるEFGHという属性値を含む1件のレコードについては、「NG」、すなわち、個人が識別される可能性が高いと判定し、2回目の匿名化を行った上で、サーバ4およびサーバ5に配布する。この結果、図2Aの例に示すように、サーバ4およびサーバ5には、検証済みの匿名化データ82が蓄積される。なお、図2Aの例に示すように、検証済みの匿名化データ82には、2回目の匿名化が行われた結果、EFGHという属性値からFGという属性値が破棄されたレコード82aが含まれている。
そして、情報処理装置6は、新たに、サーバ2またはサーバ3から2件のレコードを収集した場合には、収集したレコードを匿名化し、図2Bの例に示すように、匿名化データ83を生成する。図2Bの例では、匿名化データ83は、EFGHという属性値を含む1件のレコードと、IJKLという属性値を含む1件のレコードとを有する。
そして、情報処理装置6は、匿名化データ83のレコードの重複数を計数する。続いて、情報処理装置6は、計数した結果を、重複数TBL8dに反映する。すなわち、図2Bの例に示すように、情報処理装置6は、重複数TBL8dのEFGHという属性値を含むレコードの重複数を「1」から「2」に更新し、IJKLという属性値を含むレコードの重複数として「1」を登録する。
続いて、情報処理装置6は、匿名化データ83の各レコードについて、個人が識別される可能性が高いレコードであるか否か検証する。例えば、情報処理装置6は、図2Bの例に示すように、重複数TBL8dを参照し、各レコードについて、重複数がN以上であるか否かを判定する。情報処理装置6は、重複数がN以上となるEFGHという属性値を含むレコードについては、「OK」と判定し、2回目の匿名化を行わずにサーバ4およびサーバ5に配布する。また、EFGHという属性値を含むレコードについては、個人が識別される可能性が低くなったため、情報処理装置6は、サーバ4およびサーバ5に蓄積されたレコード82aの2回目の匿名化を解除するための指示をサーバ4およびサーバ5に送信する。これにより、図2Bに示すように、サーバ4およびサーバ5は、レコード82aの2回目の匿名化を解除する。すなわち、サーバ4およびサーバ5は、破棄されたFGという属性値をレコード82aに登録する。
情報処理装置6は、上述したような処理を行うことで、収集したデータ群に含まれるデータのうち、「データの一致」というデータ間の所定の条件を満たさないと判定されるデータの量を抑制することができる。この結果、より多くのレコードが、ターゲットシステムのサーバ4およびサーバ5において統計処理などの所定の処理を行う際に有効に用いられるようになる。
一方、情報処理装置6は、重複数がN未満となるIJKLというレコードについては、「NG」、すなわち、個人が識別される可能性が高いと判定し、2回目の匿名化を行った上で、サーバ4およびサーバ5に配布する。この結果、図2Bの例に示すように、サーバ4およびサーバ5には、検証済みの匿名化データ82が蓄積される。なお、図2Bの例に示すように、検証済みの匿名化データ82には、2回目の匿名化が行われた結果、IJKLという属性値からJKという属性値が破棄されたレコード82bが含まれている。
ここで、サーバ2およびサーバ3は、ユーザからの指示などによって、自身のデータベースに格納されているデータの更新や削除を行う。例えば、efghという属性値を含むレコードをabcdという属性値を含むレコードに更新する指示をユーザから受け付けた場合、サーバ2およびサーバ3は次の処理を行う。すなわち、サーバ2およびサーバ3は、自身のデータベースに格納されているefghという属性値を含むレコードをabcdという属性値を含むレコードに更新する。なお、この場合における更新前のefghという属性値を含むレコードは、図2Aの例に示す匿名化データ80のEFGHという属性値を含むレコードに対して匿名化が行われる前のレコードに対応する。また、abcdという属性値を含むレコードは、匿名化が行われるとABCDという属性値を含むレコードとなる。そして、サーバ2およびサーバ3は、efghという属性値を含むレコードをabcdという属性値を含むレコードに更新したことを示す更新データを情報処理装置6に送信する。
情報処理装置6は、efghという属性値を含むレコードをabcdという属性値を含むレコードに更新したことを示す更新データを受信した場合には、次のような処理を行う。すなわち、情報処理装置6は、受信した更新データが示す更新に基づいて、サーバ4およびサーバ5に蓄積されたレコードを更新するようにサーバ4およびサーバ5に指示を送信する。ここで、情報処理装置6が受信した更新データは、サーバ4およびサーバ5に蓄積されたEFGHという属性値を含むレコードをABCDという属性値を含むレコードに更新することを意味する。すなわち、情報処理装置6が受信した更新データは、サーバ4およびサーバ5に蓄積されたデータ群に含まれるEFGHという属性値を含むレコードを1件削除し、ABCDという属性値を含むレコードを1件追加することを意味する。このため、更新データを受信した情報処理装置6は、図2Cの例に示すように、重複数TBL8dのEFGHという属性値を含むレコードの重複数を「2」から「1」に更新し、ABCDという属性値を含むレコードの重複数を「2」から「3」に更新する。
そして、情報処理装置6は、図2Cの例に示すように、重複数TBL8dを参照し、更新前のEFGHという属性値を含むレコードおよび更新後のABCDという属性値を含むレコードについて、重複数がN以上であるか否かを判定する。そして、情報処理装置6は、重複数がN以上となるABCDという属性値を含むレコードについては、「OK」と判定し、EFGHという属性値を含むレコードをABCDという属性値を含むレコードに更新する指示をサーバ4およびサーバ5に配布する。これにより、図2Cに示すように、サーバ4およびサーバ5は、検証済みの匿名化データ82に含まれるEFGHという属性値を含むレコード82cをABCDという属性値を含むレコードに更新する。
また、情報処理装置6は、重複数がN未満となるEFGHという属性値を含む1件のレコードについては、「NG」と判定する。ここで、EFGHという属性値を含む1件のレコードは、今回の更新によって、重複数が「N」から「N−1」となった。すなわち、サーバ4およびサーバ5に蓄積されたEFGHという属性値を含むレコードは、2回目の匿名化が行われていないレコードであり、今回の更新によって、個人が識別される可能性が高くなった。そのため、情報処理装置6は、重複数がN未満となるEFGHという属性値を含む1件のレコードに対して2回目の匿名化を行う。そして、情報処理装置6は、EFGHという属性値を含むレコードを、EFGHという属性値からFGの属性値が破棄された2回目の匿名化後のレコードに更新する指示をサーバ4およびサーバ5に送信する。これにより、図2Cに示すように、サーバ4およびサーバ5は、レコード82aをEFGHという属性値からFGの属性値が破棄された2回目の匿名化後のレコードに更新する。
上述してきたように、情報処理装置6は、更新に係る情報である更新データを受信した場合に、更新前後のレコードについて重複数がN以上であるか否かを判定し、判定結果に応じて各種の処理を行う。このように、情報処理装置6によれば、更新データを受信するだけで、サーバ4およびサーバ5に蓄積されたデータを更新させることができる。したがって、情報処理装置6によれば、更新されたレコード全体を受信しなくても、更新データを受信するだけで簡易な処理で、サーバ4およびサーバ5に蓄積されたデータを更新させることができる。
また、情報処理装置6によれば、サーバ4およびサーバ5に蓄積されたレコードのうち、更新によって新たに個人が識別される可能性が高くなったレコードについては匿名化させることができる。また、情報処理装置6によれば、サーバ4およびサーバ5に蓄積されたレコードのうち、更新によって新たに個人が識別される可能性が低くなったレコードについては匿名化を解除させることができる。
図1の説明に戻り、サーバ2は、データベース(Data Base)2a、および、出力部2bを有する。以下の説明では、「データベース」を「DB」と略記する。DB2aは、人の氏名や住所などの個人情報のような個人が識別される可能性が高いデータを記憶する。出力部2bは、DB2aに記憶されたデータ等をネットワーク90を介して情報処理装置6に送信する。
サーバ2から情報処理装置6へ送信するデータのデータ構造の一例について説明する。図3は、サーバ2から情報処理装置6へ送信するデータのデータ構造の一例を示す図である。図3の例に示すデータのレコードには、「個人ID(Identification)」、「氏名」、「性別」、「年齢」、「身長」、「体重」の各項目が含まれる。「個人ID」の項目には、個人を識別するためのID(個人ID)が登録される。「氏名」の項目には、「個人ID」の項目に登録された個人IDが示す人物の氏名が登録される。「性別」の項目には、「個人ID」の項目に登録された個人IDが示す人物の性別が登録される。「年齢」の項目には、「個人ID」の項目に登録された個人IDが示す人物の年齢が登録される。「身長」の項目には、「個人ID」の項目に登録された個人IDが示す人物の身長が登録される。「体重」の項目には、「個人ID」の項目に登録された個人IDが示す人物の体重が登録される。なお、「No」の項目に登録された番号は、レコードの識別を容易にするために便宜上付加したもので、実際には含まれない。図3の例のデータにおける番号が「1」のレコードは、個人ID「1098」が示す人物の氏名が「A」であり、性別が「男」であり、年齢が「29歳」であり、身長が「169cm」であり、体重が「62kg」であることを示す。このように、番号が「1」のレコードには、個人が識別される可能性が高い情報が登録されている。また、図3の例に示すように、他の番号のレコードについても、同様に、個人が識別される可能性が高い情報が登録されている。
また、サーバ2のユーザが、DB2aに記憶されたデータを更新する指示をサーバ2に入力した場合には、サーバ2は、指示に基づいてDB2aに記憶されたデータを更新する。そして、サーバ2の出力部2bは、更新内容を示すデータである更新データをネットワーク90を介して情報処理装置6に送信する。図4は、更新データの一例を示す図である。図4の例が示す更新データは、先の図3の例に示す個人ID「1098」を有するレコードの「年齢」の項目に登録された値を「30」に更新したことを示す。
また、サーバ2のユーザが、DB2aに記憶されたデータを削除する指示をサーバ2に入力した場合には、サーバ2は、指示に基づいてDB2aに記憶されたデータを削除する。そして、サーバ2の出力部2bは、削除内容を示すデータである削除データをネットワーク90を介して情報処理装置6に送信する。図5は、削除データの一例を示す図である。図5の例が示す削除データは、先の図3の例に示す個人ID「1098」を有するレコードを削除したことを示す。
サーバ3は、DB3a、および、出力部3bを有する。DB3aは、人の氏名や住所などの個人情報のような個人が識別される可能性が高いデータを記憶する。出力部3bは、DB3aに記憶されたデータ等をネットワーク90を介して情報処理装置6に送信する。例えば、出力部3bは、先の図3の例に示すデータをネットワーク90を介して情報処理装置6に送信する。
また、サーバ3のユーザが、DB3aに記憶されたデータを更新する指示をサーバ3に入力した場合には、サーバ3は、指示に基づいてDB3aに記憶されたデータを更新する。そして、サーバ3の出力部3bは、更新データをネットワーク90を介して情報処理装置6に送信する。
また、サーバ3のユーザが、DB3aに記憶されたデータを削除する指示をサーバ3に入力した場合には、サーバ3は、指示に基づいてDB3aに記憶されたデータを削除する。そして、サーバ3の出力部3bは、削除データをネットワーク90を介して情報処理装置6に送信する。
上述したように、サーバ2およびサーバ3は、レコードが更新された場合に、更新されたレコード全体を情報処理装置6に送信するのではなく、更新されたレコード全体よりもデータサイズが小さい更新データを情報処理装置6に送信する。これにより、情報処理装置6は、より少ない情報量でサーバ2およびサーバ3で更新された内容を把握することができる。
また、サーバ2およびサーバ3は、レコードが削除された場合に、削除されたレコード全体を情報処理装置6に送信するのではなく、削除されたレコード全体よりもデータサイズが小さい削除データを情報処理装置6に送信する。これにより、情報処理装置6は、より少ない情報量でサーバ2およびサーバ3で削除されたレコードを把握することができる。
サーバ4は、DB4a、および、処理実行部4bを有する。サーバ4は、ネットワーク91を介して情報処理装置6から送信されたデータを受信し、受信したデータをDB4aに蓄積する。処理実行部4bは、データを受信したタイミングとは非同期に、図示しない他の装置からの要求に応じて、DB4aに蓄積されたデータを用いて、統計処理などの所定の処理を実行する。
情報処理装置6からサーバ4に送信されるデータのデータ構造の一例について説明する。図6は、情報処理装置6からサーバ4に送信されるデータのデータ構造の一例を示す図である。図6の例に示すデータのレコードには、「性別」、「年齢」、「身長」、「体重」、「レコード管理ID」の各項目が含まれる。「レコード管理ID」の項目には、レコード管理IDが登録される。後述するが、レコード管理IDは、情報処理装置6において、個人IDごとに、個人IDに対応して生成されるIDである。また、レコード管理IDは、サーバ4およびサーバ5に蓄積されたデータの更新や削除を情報処理装置6が実行させる処理を行う場合に用いられる。
また、「性別」の項目には、「レコード管理ID」の項目に登録されたレコード管理IDに対応する個人IDが示す人物の性別が登録される。「年齢」の項目には、例えば、「レコード管理ID」の項目に登録されたレコード管理IDに対応する個人IDが示す人物の年齢があいまいにされた値、または、年齢の情報が破棄された「null」の情報が登録される。「身長」の項目には、例えば、「レコード管理ID」の項目に登録されたレコード管理IDに対応する個人IDが示す人物の身長があいまいにされた値、または、身長の情報が破棄された「null」の情報が登録される。「体重」の項目には、例えば、「レコード管理ID」の項目に登録されたレコード管理IDに対応する個人IDが示す人物の体重があいまいにされた値、または、体重の情報が破棄された「null」の情報が登録される。
図6の例のデータにおける番号が「1」のレコードは、レコード管理ID「aaa01」に対応する個人IDが示す人物の性別が「男」であり、年齢が「20〜29歳」であり、身長が「160〜169cm」であり、体重が「60〜69kg」であることを示す。このように、番号が「1」のレコードには、性別以外の各種情報があいまい化された情報が登録されている。また、図6の例のデータにおける番号が「4」のレコードは、レコード管理ID「aaa04」に対応する個人IDが示す人物の性別が「男」であり、年齢、身長、体重が不明であることを示す。このように、番号が「4」のレコードには、性別に関する情報が登録されているが、年齢、身長、体重に関する情報は登録されていない。
サーバ5は、DB5a、および、処理実行部5bを有する。サーバ5は、ネットワーク91を介して情報処理装置6から送信されたデータを受信し、受信したデータをDB5aに蓄積する。処理実行部5bは、データを受信したタイミングとは非同期に、図示しない他の装置からの要求に応じて、DB5aに蓄積されたデータを用いて、統計処理などの所定の処理を実行する。なお、情報処理装置6からサーバ5に送信されるデータは、情報処理装置6からサーバ4に送信されるデータと同様である。例えば、情報処理装置6からサーバ5へは、先の図6の例に示したデータが送信される。
図1の説明に戻り、クライアント装置10は、ユーザの操作によって、情報処理装置6に各種処理を実行するための指示を送信する。また、クライアント装置10は、ユーザの操作によって、後述する定義データ8cを生成し、生成した定義データ8cを情報処理装置6に送信して、情報処理装置6に定義データ8cを記憶させる。
情報処理装置6は、ソースシステムのサーバ2およびサーバ3からデータを収集する。そして、情報処理装置6は、収集したデータを匿名化する。そして、情報処理装置6は、匿名化したデータに対して各種の処理を実行した上で、ターゲットシステムのサーバ4およびサーバ5に配布する。
図7は、実施例1に係る情報処理装置の機能構成の一例を示す図である。図7の例に示すように、情報処理装置6は、通信部7、記憶部8、制御部9を有する。
通信部7は、サーバ2〜5およびクライアント装置10との通信を行うためのインターフェースである。例えば、通信部7は、サーバ2からネットワーク90を介して各種のデータを受信した場合には、受信したデータを制御部9へ送信する。同様に、通信部7は、サーバ3からネットワーク90を介して各種のデータを受信した場合には、受信したデータを制御部9へ送信する。また、通信部7は、後述の配布制御部9eから各種のデータを受信した場合には、受信したデータをネットワーク91を介してサーバ4およびサーバ5に送信する。
記憶部8は、各種の情報を記憶する。例えば、記憶部8は、収集データ8a、匿名化データ8b、定義データ8c、重複数TBL8d、NGデータTBL8e、配布済データTBL8f、IDTBL8gを記憶する。
収集データ8aは、後述の収集部9aが収集したデータである。例えば、収集データ8aは、先の図3に示すデータである。
匿名化データ8bは、後述の匿名化部9cにより、後述の更新された匿名化の対象のデータに対して匿名化が行われたデータである。図8は、匿名化データのデータ構造の一例を示す図である。図8の例の匿名化データ8bは、図3に示すデータが更新された後述の匿名化の対象のデータに対して匿名化が行われた場合の匿名化後のデータである。図8の例に示す匿名化データ8bは、更新された匿名化の対象のデータに対して後述の匿名化部9cにより、「氏名」の項目が破棄され、「年齢」、「身長」および「体重」の項目の登録内容をあいまいにする処理が行われたデータである。
定義データ8cは、後述の匿名化部9cなどにより匿名化される対象の項目、後述の検証部9dなどにより検証される対象の項目、および、後述の検証部9dなどにより検証が行われる際に用いられるレコードの重複数の閾値を含む。定義データ8cは、クライアント装置10のユーザの操作によりクライアント装置10が生成したデータである。定義データ8cは、後述の管理部9hにより記憶部8に格納される。図9は、定義データのデータ構造の一例を示す図である。図9の例が示す定義データ8cは、後述の検証部9dなどにより検証が行われる際に用いられるレコードの重複数の閾値「2」を含む。
また、図9の例に示す定義データ8cは、「項目名」、「検証」および「匿名化」の項目を有する。「項目名」の項目には、匿名化の対象のデータに含まれる項目の名称が登録される。図9の例では、定義データの「項目名」に、「性別」、「年齢」、「身長」、「体重」、「レコード管理ID」の各項目の名称が登録された場合が示されている。
「検証」の項目には、「YES」または「NO」が登録される。図9の例が示す定義データ8cは、「項目名」に名称が登録された各項目のうち、「検証」の項目に「YES」が登録された項目を検証することを示す。すなわち、図9の例が示す定義データ8cは、「検証」の項目に「YES」が登録された「性別」、「年齢」、「身長」および「体重」の項目を検証することを示す。
「匿名化」の項目には、「YES」または「NO」が登録される。図9の例が示す定義データ8cは、「YES」が登録された項目の登録内容を匿名化することを示す。図9の例が示す定義データ8cは、「項目名」に名称が登録された各項目のうち、「匿名化」の項目に「YES」または「NO」が登録された項目以外の項目を破棄することを示す。図9の例が示す定義データ8cは、「匿名化」の項目に「YES」が登録された「年齢」、「身長」および「体重」の項目を匿名化することを示す。また、図9の例が示す定義データ8cは、その他の項目、例えば、「氏名」を破棄することを示す。
重複数TBL8dには、レコードの重複数が登録される。図10は、重複数TBLのデータ構造の一例を示す図である。図10の例が示す重複数TBL8dのレコードは、上述の定義データ8cにおいて、「項目名」に名称が登録された各項目のうち「検証」の項目に「YES」が登録された「性別」、「年齢」、「身長」および「体重」の項目と、「重複数」の項目とを有する。例えば、図10の例が示す重複数TBL8dの1番目のレコードは、性別「男」、年齢「20〜29」、身長「170〜179」、体重「60〜69」のレコードの重複数が「1」であることを示す。
NGデータTBL8eには、重複数TBL8dに登録されたレコードのうち、重複数がN未満のレコードの項目の登録内容と、対応するレコード管理IDとが登録される。図11は、NGデータTBLのデータ構造の一例を示す図である。図11の例が示すNGデータTBL8eのレコードは、重複数TBL8dの「重複数」以外の「性別」、「年齢」、「身長」および「体重」の項目と、「レコード管理ID」の項目とを有する。図11の例が示すNGデータTBL8eは、重複数の閾値Nを「2」とした場合に、図10の例に示す重複数TBL8dにおいて重複数が2未満のレコード、すなわち、「1」であるレコードの登録内容と、対応するレコード管理IDとが登録されている場合を示す。
配布済データTBL8fには、サーバ4およびサーバ5に送信されるデータが格納される。配布済データTBL8fに格納されるデータの一例としては、先の図6の例に示すデータが挙げられる。
IDTBL8gには、個人IDとレコード管理IDとが対応付けて登録される。図12は、IDTBLのデータ構造の一例を示す図である。図12の例が示すIDTBL8gのレコードは、「個人ID」および「レコード管理ID」の項目を有する。「個人ID」の項目には、個人IDが登録される。「レコード管理ID」の項目には、レコード管理IDが登録される。例えば、図12の例が示すIDTBL8gの1番目のレコードは、個人ID「1098」に対応するレコード管理IDが「aaa01」であることを示す。
記憶部8は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部8は、上記の種類の記憶装置に限定されるものではなく、Random Access Memory(RAM)、Read Only Memory(ROM)であってもよい。
制御部9は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図7に示すように、制御部9は、収集部9aと、判別部9bと、匿名化部9cと、検証部9dと、配布制御部9eと、更新制御部9fと、削除制御部9gと、管理部9hとを有する。
収集部9aは、ネットワーク90を介してサーバ2およびサーバ3から送信される各種のデータを収集する。例えば、収集部9aは、ネットワーク90を介してサーバ2およびサーバ3から送信される図3の例に示すような匿名化の対象のデータを収集する。また、収集部9aは、ネットワーク90を介してサーバ2およびサーバ3から送信される更新データを収集する。また、収集部9aは、ネットワーク90を介してサーバ2およびサーバ3から送信される削除データを収集する。
判別部9bは、収集部9aにより収集されたデータの種類を判別する。例えば、判別部9bは、収集部9aにより収集されたデータが、匿名化の対象のデータ、更新データ、削除データのいずれであるのかを判別する。また、判別部9bは、収集部9aにより収集されたデータが、匿名化の対象のデータであると判別した場合には、匿名化の対象のデータに含まれる個人IDを取得する。例えば、図3の例に示すデータを匿名化の対象のデータであると判別した場合には、判別部9bは、次のような処理を行う。すなわち、判別部9bは、匿名化の対象のデータに含まれる個人ID「1098」、「1234」、「3210」、「3456」、「5432」、「5478」、「7654」、「7890」、「9012」、「9876」を取得する。そして、判別部9bは、取得した個人IDを識別することができるIDであるレコード管理IDを個人IDごとに生成する。例えば、個人ID「1098」、「1234」、「3210」、「3456」、「5432」、「5478」、「7654」、「7890」、「9012」、「9876」を取得した場合には、判別部9bは、次のような処理を行う。すなわち、判別部9bは、レコード管理ID「aaa01」、「aaa02」、「aaa03」、「aaa04」、「aaa05」、「aaa06」、「aaa07」、「aaa08」、「aaa09」、「aaa10」を生成する。
そして、判別部9bは、匿名化の対象のデータに含まれる個人IDを破棄し、匿名化の対象のデータにレコード管理IDを登録して、匿名化の対象のデータを更新する。例えば、判別部9bは、匿名化の対象のデータの各レコードに含まれる個人ID「1098」、「1234」、「3210」、「3456」、「5432」、「5478」、「7654」、「7890」、「9012」、「9876」のそれぞれを破棄する。そして、判別部9bは、各レコードのそれぞれに、レコード管理ID「aaa01」、「aaa02」、「aaa03」、「aaa04」、「aaa05」、「aaa06」、「aaa07」、「aaa08」、「aaa09」、「aaa10」を付加する。下記で説明する処理では、更新された匿名化の対象のデータが用いられる。
これにより、サーバ4およびサーバ5に送信されるデータには、個人IDではなくレコード管理IDが含まれるようになる。サーバ4およびサーバ5に送信されるデータに個人IDが含まれるような場合には、サーバ4およびサーバ5に蓄積されたデータの個人IDから個人が識別される可能性が高い。しかしながら、個人IDではなく、個人が識別される可能性が低いレコード管理IDを含むデータが、サーバ4およびサーバ5に蓄積された場合には、蓄積されたデータのレコード管理IDから個人が識別される可能性は低い。このため、本実施例によれば、送信したデータから個人が識別されるような事象の発生を抑制することができる。
そして、判別部9bは、IDTBL8gに、取得した個人IDと、生成したレコード管理IDとを対応付けて登録する。このようにして、判別部9bは、IDTBL8gを更新する。例えば、判別部9bは、図12に示すように、取得した個人IDと生成したレコード管理IDとを対応付けてIDTBL8gに登録する。
匿名化部9cは、各種のデータを匿名化する。例えば、匿名化部9cは、匿名化の対象のデータが判別部9bにより更新された場合には、定義データ8cを参照し、更新された匿名化の対象のデータの各項目の登録内容の中から、定義データ8cが示す破棄する項目の登録内容を破棄する。具体例を挙げて説明すると、匿名化部9cは、例えば、図9に示す定義データ8cが記憶部8に記憶されている場合には、かかる定義データ8cの「匿名化」の項目に「YES」が登録された「年齢」、「身長」および「体重」の項目を参照する。そして、匿名化部9cは、更新された匿名化の対象のデータの各項目の登録内容のうち、「氏名」の項目の登録内容を破棄する。
そして、匿名化部9cは、更新された匿名化の対象のデータの各項目の登録内容のうち破棄されなかった項目の登録内容の中から、定義データ8cが示す匿名化する項目の登録内容を匿名化する。例えば、匿名化部9cは、更新された匿名化の対象のデータに対しては、サーバ4およびサーバ5において統計処理に用いることができるように匿名化を行う。具体例を挙げて説明する。匿名化部9cは、更新された匿名化の対象のデータの「年齢」、「身長」および「体重」の項目の登録内容に対しては、統計処理に用いることができるように、匿名化の対象のデータに含まれる値を、値が属する値域に変換する匿名化を行う。そして、匿名化部9cは、匿名化の結果得られた匿名化データ8bを記憶部8に格納する。
図3に示すデータが判別部9bにより匿名化の対象のデータと判別され、匿名化の対象のデータが更新され、図9に示す定義データ8cを参照した場合には、次のような処理を行う。すなわち、匿名化部9cは、更新された匿名化の対象のデータの「氏名」の項目の登録内容を破棄し、「年齢」、「身長」および「体重」の項目の登録内容をあいまいにして、図8の例に示す匿名化データ8bを生成する。そして、匿名化部9cは、生成した匿名化データ8bを記憶部8に格納する。
検証部9dは、検証対象のレコードの重複数がN以上であるか否かを判定することにより、検証対象のレコードが、個人が識別される可能性が高いレコードであるかまたは低いレコードであるか検証する。
一態様としては、検証部9dは、匿名化部9cにより匿名化データ8bが生成された場合には、定義データ8cに登録された重複数の閾値「N」を参照する。例えば、図9に示す定義データ8cが記憶部8に記憶されている場合には、検証部9dは、定義データ8cの重複数の閾値「2」を参照する。以下、定義データ8cに、重複数の閾値として「2」が登録されている場合について説明するが、定義データ8cに登録される重複数の閾値「N」の値は自然数であれば任意の値を採用することができる。
次に、検証部9dは、定義データ8cが示す検証する項目を参照する。例えば、図9に示す定義データ8cが記憶部8に記憶されている場合には、検証部9dは、定義データ8cの「検証」の項目に「YES」が登録された「性別」、「年齢」、「身長」および「体重」の項目を参照する。
そして、検証部9dは、下記に説明する検証部9dが実行する処理が未処理であるレコードがなくなるまで、未処理のレコードに対して下記に説明する処理を行う。すなわち、検証部9dは、まず、新たに生成され記憶部8に格納された匿名化データ8bを記憶部8から取得し、取得した匿名化データ8bの未処理のレコードを1つ選択する。例えば、図8に示す匿名化データ8bが新たに匿名化部9cにより生成され記憶部8に格納された場合には、検証部9dは、匿名化データ8bを記憶部8から取得し、番号が「1」のレコードを選択する。
続いて、検証部9dは、選択したレコードの各項目の登録内容のうち、検証する項目の登録内容の組み合わせを含むレコードがあるか、重複数TBL8dを検索する。例えば、図8に示す匿名化データ8bの番号が「1」のレコードを選択した場合には、検証部9dは、検証する項目の登録内容「男」、「20〜29」、「160〜169」、「60〜69」の組み合わせを含むレコードがあるか、重複数TBL8dを検索する。
検索の結果、検証する項目の登録内容の組み合わせを含むレコードが得られた場合には、検証部9dは、得られたレコードの「重複数」の項目に登録された値を1つインクリメントする。例えば、検証する項目の登録内容「男」、「20〜29」、「160〜169」、「60〜69」の組み合わせを含むレコードが図10に示す重複数TBL8dに対する検索の結果得られた場合には、検証部9dは、次のような処理を行う。すなわち、検証部9dは、検証する項目の登録内容「男」、「20〜29」、「160〜169」、「60〜69」の組み合わせを含む重複数TBL8dの5番目のレコードの重複数「2」を「3」に更新する。
一方、検索の結果、検証する項目の登録内容の組み合わせが得られなかった場合には、検証部9dは、次のような処理を行う。すなわち、検証部9dは、検証する項目の登録内容の組み合わせが登録された1件のレコードを生成し、生成したレコードを重複数TBL8dに追加し、追加したレコードの「重複数」の項目に「1」を登録する。このようにして、検証部9dは、重複数TBL8dを更新する。
そして、検証部9dは、重複数TBL8dの検証する項目の登録内容の組み合わせを含むレコードの「重複数」の項目に登録された重複数が、参照した重複数の閾値「N」以上であるか否かを判定する。
重複数が「N」未満である場合には、選択したレコードが、個人が識別される可能性が高いレコードであるため、検証部9dは、選択したレコードをNGデータTBL8eに登録する。そして、検証部9dは、取得した匿名化データ8bのレコードの中に、未処理のレコードがあるか否かを判定し、未処理のレコードがある場合には、未処理のレコードを1つ選択し、選択した未処理のレコードに対して上述した処理を再び行う。
一方、重複数が「N」以上である場合には、検証部9dは、重複数TBL8dのレコードの「重複数」の項目に登録された重複数が、参照した重複数の閾値「N」であるか否かを判定する。重複数が「N」である場合には、選択したレコードが新たにサーバ2またはサーバ3から送信されたことによって、選択したレコードが、個人が識別される可能性が高いレコードではなくなったため、検証部9dは、次のような処理を行う。すなわち、検証部9dは、NGデータTBL8eに登録されたレコードであって、選択したレコードの「レコード管理ID」以外の項目の登録内容を有するレコードを特定し、特定したレコードをNGデータTBL8eから削除する。そして、検証部9dは、選択したレコードを、個人が識別される可能性が低い「OK」に分類する。例えば、検証部9dは、制御部9の内部メモリに展開されたOKリストに、選択したレコードを登録する。そして、検証部9dは、取得した匿名化データ8bのレコードの中に、未処理のレコードがあるか否かを判定し、未処理のレコードがある場合には、未処理のレコードを1つ選択し、選択した未処理のレコードに対して上述した処理を再び行う。なお、検証部9dは、計数部の一例である。
配布制御部9eは、匿名化が行われたデータをサーバ4およびサーバ5にネットワーク91を介して配布する。一態様としては、配布制御部9eは、まず、匿名化部9cにより新たに記憶部8に格納された匿名化データ8bのレコードの中に、検証部9dにより新たにNGデータTBL8eに登録されたレコードがあるか否かを判定する。
新たにNGデータTBL8eに登録されたレコードがある場合には、配布制御部9eは、定義データ8cが示す匿名化する項目を参照する。例えば、図9に示す定義データ8cが記憶部8に記憶されている場合には、配布制御部9eは、次のような処理を行う。すなわち、配布制御部9eは、定義データ8cの「匿名化」の項目に「YES」が登録された「年齢」、「身長」および「体重」の項目を参照する。そして、配布制御部9eは、新たにNGデータTBL8eに登録されたレコードのうち、未処理のレコードを1つ選択する。そして、配布制御部9eは、選択したレコードの各項目の登録内容の中から、定義データ8cが示す匿名化する項目の登録内容を匿名化する。例えば、配布制御部9eは、個人が識別される可能性が低減されるように、登録内容を破棄して各項目に「null」を登録する匿名化を行う。具体例を挙げて説明すると、配布制御部9eは、図6に示すデータの番号が「3」のレコードが示すように、「年齢」、「身長」、「体重」の項目の登録内容を「null」に設定する。そして、配布制御部9eは、新たにNGデータTBL8eに登録されたレコードのうち、未処理のレコードがあるか否かを判定し、未処理のレコードがある場合には、未処理のレコードを1つ選択し、上述した処理を行う。このようにして、配布制御部9eは、新たにNGデータTBL8eに登録された全てのレコードの匿名化を行う匿名化処理を行う。なお、配布制御部9eにおいて行われた匿名化は、統計処理に用いることができるように先の匿名化部9cにより行われた匿名化を「1回目の匿名化」とすると、「2回目の匿名化」となる。また、「2回目の匿名化」を配布制御部9eに代えて匿名化部9cが行うこともできる。
そして、配布制御部9eは、匿名化部9cにより「OK」と分類されたレコードがある場合には、かかるレコードを配布済データTBL8fに格納する。これに加えて、配布制御部9eは、2回目の匿名化が行われたレコードがある場合には、2回目の匿名化のレコードも配布済データTBL8fに格納する。続いて、配布制御部9eは、新たに配布済データTBL8fに格納したデータを取得し、取得したデータがサーバ4およびサーバ5に送信されるように、取得したデータを通信部7に出力する。これにより、例えば、図6の例に示すようなデータがサーバ4およびサーバ5に送信される。なお、配布制御部9eは、出力部の一例である。
図7の説明に戻り、更新制御部9fは、更新データを受信した場合に、サーバ4およびサーバ5に蓄積されたデータのうち、新たに識別される可能性が高くなったレコードや新たに識別される可能性が低くなったデータが更新されるように制御する。
一態様としては、更新制御部9fは、サーバ2およびサーバ3から送信された更新データを受信すると、更新データに含まれる個人IDを取得し、取得した個人IDに対応するレコード管理IDをIDTBL8gから取得する。例えば、図4の例に示す更新データを受信した場合には、更新制御部9fは、更新データに含まれる個人ID「1098」を取得し、図12の例に示すIDTBL8gから、個人ID「1098」に対応するレコード管理ID「aaa01」を取得する。
続いて、更新制御部9fは、更新制御部9fが取得したレコード管理IDを有する更新の対象のレコードを情報処理装置6に送信する指示をサーバ4またはサーバ5に送信させるべく、かかる指示を通信部7に送信する。これにより、更新制御部9fが取得したレコード管理IDを有する更新の対象のレコードを情報処理装置6に送信する指示がサーバ4またはサーバ5に送信される。かかる指示を受信したサーバ4またはサーバ5は、DB4aまたはDB5aに蓄積されたレコードの中から、指示が示すレコードを検索し、検索の結果得られたレコードをネットワーク91を介して情報処理装置6に送信する。これにより、情報処理装置6の更新制御部9fは、取得したレコード管理IDを有する更新の対象のレコードを得ることができる。例えば、DB4aまたはDB5aに蓄積されたデータが図6の例に示すデータであり、更新制御部9fがレコード管理ID「aaa01」を有する更新の対象のレコードを送信する指示を通信部7に送信した場合には、更新制御部9fは、次のレコードを取得する。すなわち、更新制御部9fは、図6の例に示す番号が「1」のレコードを取得する。
続いて、更新制御部9fは、取得したレコードの「レコード管理ID」以外の項目の登録内容を有するレコードを重複数TBL8dのレコードの中から検索し、検索の結果得られたレコードの「重複数」の項目に登録された値を1つデクリメントする。例えば、図6の例に示す、番号が「1」のレコード(「男」、「20〜29」、「160〜169」、「60〜69」、「aaa01」の各登録内容を有するレコード)を取得した場合に、更新制御部9fは、次のような処理を行う。すなわち、更新制御部9fは、「男」、「20〜29」、「160〜169」、「60〜69」の登録内容を有するレコードを図10の例に示す重複数TBL8dのレコードの中から検索する。そして、更新制御部9fは、検索の結果得られた図10の例に示す重複数TBL8dの5番目のレコードの「重複数」の項目に登録された値「2」を「1」に更新する。図13は、更新された重複数TBLの一例を示す図である。この結果、図10の例に示す重複数TBL8dの登録内容は、図13の例に示す重複数TBL8dの登録内容に更新される。なお、重複数が「N」から「N−1」に更新された場合には、更新制御部9fが取得したレコードが、個人が識別される可能性が高いレコードとなったことを意味する。
続いて、更新制御部9fは、取得したレコードの重複数を更新後の重複数TBL8dから取得する。例えば、図6の例に示す番号が「1」のレコードを取得した場合には、更新制御部9fは、図13の例に示す更新後の重複数TBL8dの5番目のレコードの重複数「1」を取得する。
その後、更新制御部9fは、定義データ8cに登録された重複数の閾値「N」を参照し、取得した重複数が、重複数の閾値「N」を1つデクリメントした値「N−1」であるか否かを判定する。ここで、N=2の場合に、例えば、更新制御部9fは、図13の例に示す更新後の重複数TBL8dの5番目のレコードの重複数「1」を取得したときには、取得した重複数「1」が、「N−1」であると判定する。
取得した重複数が「N−1」である場合には、更新制御部9fは、個人が識別される可能性が低いレコードとなるようにサーバ4およびサーバ5に蓄積された対応するレコードを更新するように制御する。例えば、更新制御部9fは、サーバ4またはサーバ5に蓄積されたレコード管理IDのうち、次のようなレコード管理IDを情報処理装置6に送信する指示をサーバ4またはサーバ5に送信するべく、かかる指示を通信部7に送信する。すなわち、更新制御部9fが取得したレコードの「レコード管理ID」以外の項目の登録内容を有するレコードに含まれるレコード管理IDであって、更新制御部9fが取得済みのレコード管理ID以外のレコード管理IDを送信する指示を通信部7に送信する。例えば、図6の例に示す、番号が「1」のレコード(「男」、「20〜29」、「160〜169」、「60〜69」、「aaa01」の各登録内容を有するレコード)を取得した場合には、更新制御部9fは、次のような処理を行う。すなわち、更新制御部9fは、「男」、「20〜29」、「160〜169」、「60〜69」の登録内容を有するレコードに含まれるレコード管理IDであって「aaa01」以外のレコード管理IDを情報処理装置6に送信する指示を通信部7に送信する。これにより、かかる指示がサーバ4またはサーバ5に送信され、指示を受信したサーバ4またはサーバ5は、DB4aまたはDB5aから指示が示すレコード管理IDを取得し、取得したレコード管理IDを情報処理装置6に送信する。例えば、「男」、「20〜29」、「160〜169」、「60〜69」の登録内容を有するレコードに含まれる、「aaa01」以外のレコード管理IDを送信する指示を受信し、DB4aに図6に示すデータが蓄積されている場合、サーバ4は次の処理を行う。すなわち、サーバ4は、レコード管理ID「aaa06」を情報処理装置6に送信する。このようにして、更新制御部9fは、サーバ4またはサーバ5から新たにレコード管理IDを取得する。
そして、更新制御部9fは、更新制御部9fが取得したレコードの「レコード管理ID」以外の項目の登録内容と、新たに取得したレコード管理IDとを含むレコードを生成し、生成したレコードをNGデータTBL8eに登録する。例えば、更新制御部9fは、「男」、「20〜29」、「160〜169」、「60〜69」の登録内容と、新たに取得したレコード管理ID「aaa06」とを含むレコードを生成し、レコードを図14の例に示すようにNGデータTBL8eに追加する。図14は、レコードが追加されたNGデータTBLの一例を示す図である。
そして、更新制御部9fは、NGデータTBL8eに新たに登録したレコードを取得し、定義データ8cを参照し、定義データ8cが示す匿名化する項目の登録内容を匿名化する。例えば、更新制御部9fは、取得したレコードに対して、匿名化する項目の登録内容を破棄するように匿名化を行う。具体例を挙げて説明する。更新制御部9fは、レコードの「年齢」、「身長」および「体重」の項目の登録内容を破棄して、各項目に「null」を登録する匿名化を行う。例えば、更新制御部9fは、「男」、「null」、「null」、「null」、「aaa06」の登録内容が各項目に登録されたレコードを生成する。このようにして、更新制御部9fは、取得したレコードの匿名化を行う。なお、更新制御部9fに代えて匿名化部9cが、取得したレコードの匿名化を行うこともできる。
そして、更新制御部9fは、配布済データTBL8fのレコードの中から、更新制御部9fが新たに取得したレコード管理IDを有するレコードを特定する。そして、更新制御部9fは、特定したレコードの検証対象の項目の登録内容が、匿名化されたレコードの検証対象の項目の登録内容となるように、配布済データTBL8fを更新する。例えば、更新制御部9fは、図6に示すデータが配布済データTBL8fに登録されている場合には、レコード管理ID「aaa06」を有するレコードの登録内容を、図15に示すように「男」、「null」、「null」、「null」に更新する。図15は、更新後のデータの一例を示す図である。
続いて、更新制御部9fは、配布済データTBL8fにおいて新たに更新されたレコード(匿名化されたレコード)を取得し、取得したレコードをサーバ4およびサーバ5に送信するべく、取得したレコードを通信部7に出力する。これにより、例えば、図15の例に示すレコード管理ID「aaa06」のレコードがサーバ4およびサーバ5に送信される。図15の例に示すレコード管理ID「aaa06」のレコードを受信したサーバ4およびサーバ5のそれぞれは、DB4a、DB5aのそれぞれに蓄積されたレコードのうち、レコード管理ID「aaa06」のレコードを特定する。そして、サーバ4およびサーバ5のそれぞれは、特定したレコードを、受信したレコードで更新する。これにより、新たに個人が識別される可能性が高くなったサーバ4およびサーバ5のレコードは、個人が識別される可能性が低くなるように更新される。このようにして、更新制御部9fは、取得した重複数が「N−1」である場合には、新たに個人が識別される可能性が高くなったサーバ4およびサーバ5のレコードを、個人が識別される可能性が低くなるように更新する。
また、更新制御部9fは、取得した重複数の値に関わらず、下記で説明するような処理を行う。例えば、更新制御部9fは、まず、取得した更新の対象のレコードの登録内容を、更新データが示す更新内容で更新する。図16、図17は、実施例1の情報処理装置が実行する処理の一例を説明するための図である。例えば、更新制御部9fは、図4の例に示す更新データを受信し、図16の例に示す更新の対象のレコードを取得した場合には、図17の例に示すように、更新データに含まれる更新内容に基づいて、「年齢」の項目に登録された年齢を「30」に更新する。
そして、更新制御部9fは、定義データ8cを参照し、更新されたレコードの登録内容のうち、定義データ8cが示す匿名化する項目の登録内容を匿名化する。例えば、更新制御部9fは、更新されたレコードに対しては、匿名化する項目の登録内容をあいまいにするように匿名化を行う。図18は、実施例1の情報処理装置が実行する処理の一例を説明するための図である。例えば、更新制御部9fは、図18に示すように、レコードの「年齢」、「身長」および「体重」の項目の登録内容をあいまいにして、匿名化を行う。これにより、匿名化されたレコードが生成される。なお、更新制御部9fは、匿名化する項目の登録内容であっても、すでにあいまいにされている登録内容については、匿名化を省略する。
続いて、更新制御部9fは、匿名化されたレコードの「レコード管理ID」以外の項目の登録内容を有するレコードを重複数TBL8dのレコードの中から検索する。検索の結果レコードが得られた場合には、更新制御部9fは、得られたレコードの「重複数」の項目に登録された値を1つインクリメントする。図19は、実施例1の情報処理装置が実行する処理の一例を説明するための図である。例えば、図18の例に示すレコードの「レコード管理ID」以外の項目の登録内容を有するレコードが、先の図13の例に示すように、重複数TBL8dの4番目のレコードに登録されていた場合には、更新制御部9fは、次のような処理を行う。すなわち、更新制御部9fは、図19に示すように、重複数TBL8dの4番目のレコードの「重複数」の項目に登録された値「1」を「2」に更新する。なお、重複数が「N−1」から「N」に更新された場合には、匿名化されたレコードの「レコード管理ID」以外の項目の登録内容を有するサーバ4およびサーバ5に蓄積された全てのレコードが、個人が識別される可能性が低いレコードとなったことを意味する。
一方、検索の結果レコードが得られなかった場合には、更新制御部9fは、重複数TBL8dに新たなレコードを追加する。そして、更新制御部9fは、追加されたレコードの「重複数」以外の各項目に、匿名化されたレコードの登録内容を登録する。続いて、更新制御部9fは、追加されたレコードの「重複数」の項目に「1」を登録する。
続いて、更新制御部9fは、匿名化されたレコードに対応する重複数TBL8dのレコードの重複数を取得する。例えば、更新制御部9fは、図19の例に示す更新後の重複数TBL8dの4番目のレコードの重複数「2」を取得する。
次に、更新制御部9fは、取得した重複数が、重複数の閾値「N」以上であるか否かを判定する。このようにして、更新制御部9fは、検証対象のレコードの重複数がN以上であるか否かを判定することにより、検証対象のレコードが、個人が識別される可能性が高いレコードであるか検証する。なお、更新制御部9fが行う検証を、検証部9dが行うこともできる。
取得した重複数が、重複数の閾値「N」未満である場合には、更新制御部9fは、匿名化されたレコードをNGデータTBL8eに登録する。そして、更新制御部9fは、新たにNGデータTBL8eに登録されたレコードの各項目の登録内容の中から、定義データ8cが示す匿名化する項目の登録内容を匿名化する。例えば、更新制御部9fは、個人が識別される可能性が低減されるように、登録内容を破棄して各項目に「null」を登録する匿名化を行う。このようにして、更新制御部9fは、新たにNGデータTBL8eに登録されたレコードの匿名化を行う匿名化処理を行う。このようにして、更新制御部9fは、レコードの匿名化を行う。なお、更新制御部9fに代えて匿名化部9cが、このようなレコードの匿名化を行うこともできる。
そして、更新制御部9fは、配布済データTBL8fのレコードの中から、更新制御部9fが新たに匿名化したレコードのレコード管理IDを有するレコードを検索する。続いて、更新制御部9fは、検索の結果得られたレコードの検証対象の項目の登録内容が、新たに匿名化したレコードの検証対象の項目の登録内容となるように、配布済データTBL8fを更新する。
続いて、更新制御部9fは、配布済データTBL8fにおいて新たに更新されたレコード(匿名化されたレコード)を取得し、取得したレコードをサーバ4およびサーバ5に送信するべく、取得したレコードを通信部7に出力する。これにより、匿名化されたレコードがサーバ4およびサーバ5に送信される。匿名化されたレコードを受信したサーバ4およびサーバ5のそれぞれは、DB4a、DB5aのそれぞれに蓄積されたレコードのうち、受信したレコードに含まれるレコード管理IDと、レコード管理IDが一致するレコードを特定する。そして、サーバ4およびサーバ5のそれぞれは、特定したレコードを、受信したレコードで更新する。
一方、取得した重複数が、重複数の閾値「N」以上である場合には、更新制御部9fは、取得した重複数が、重複数の閾値「N」であるか否かを判定する。
取得した重複数が、重複数の閾値「N」である場合、更新制御部9fは、NGデータTBL8eを参照し、新たに匿名化されたレコードの「レコード管理ID」以外の項目の登録内容と一致する登録内容を有するレコードのレコード管理IDを取得する。例えば、更新制御部9fは、図18に示すような匿名化されたレコードを生成した場合、図14に示すNGデータTBL8eから、NGデータTBL8eの5番目のレコードのレコード管理ID「aaa10」を取得する。
そして、更新制御部9fは、NGデータTBL8eに登録されたレコードのうち、取得したレコード管理IDを有するレコードを特定し、特定したレコードを削除する。例えば、更新制御部9fは、図14に示すNGデータTBL8eから、5番目のレコードを削除する。
そして、更新制御部9fは、配布済データTBL8fのレコードの中から、更新制御部9fが新たに取得したレコード管理IDを有するレコードを特定する。続いて、更新制御部9fは、特定したレコードの検証対象の項目の登録内容が、新たに匿名化されたレコードの検証対象の項目の登録内容となるように、配布済データTBL8fを更新する。図20は、実施例1に係る情報処理装置が実行する処理の一例を示す図である。例えば、更新制御部9fは、図15に示すデータが配布済データTBL8fに登録されている場合に、レコード管理ID「aaa10」を取得したときには、次のような処理を行う。すなわち、更新制御部9fは、配布済データTBL8fのレコード管理ID「aaa10」を有するレコードの登録内容を、図20に示すように、「男」、「30〜39」、「160〜169」、「60〜69」の登録内容に更新する。
続いて、更新制御部9fは、配布済データTBL8fにおいて新たに更新されたレコードを取得し、取得したレコードをサーバ4およびサーバ5に送信するべく、取得したレコードを通信部7に出力する。これにより、例えば、図20の例に示すレコード管理ID「aaa10」のレコードがサーバ4およびサーバ5に送信される。図20の例に示すレコード管理ID「aaa10」のレコードを受信したサーバ4およびサーバ5のそれぞれは、DB4a、DB5aのそれぞれに蓄積されたレコードのうち、レコード管理ID「aaa10」のレコードを特定する。そして、サーバ4およびサーバ5のそれぞれは、特定したレコードを、受信したレコードで更新する。これにより、新たに個人が識別される可能性が低くなったサーバ4およびサーバ5のレコードは、統計処理などの各種の処理に用いられることが可能となるように更新される。このようにして、更新制御部9fは、取得した重複数が「N」である場合には、新たに個人が識別される可能性が低くなったサーバ4およびサーバ5のレコードを、統計処理などの各種の処理に用いられることが可能となるように更新する。
また、更新制御部9fは、重複数が「N」であるか否かの判定結果に関わらず、重複数が「N」以上である場合には、次の処理を行う。すなわち、更新制御部9fは、配布済データTBL8fのレコードのうち、更新制御部9fが新たに匿名化したレコードのレコード管理IDを有するレコードを特定する。そして、更新制御部9fは、特定したレコードの検証対象の項目の登録内容が、新たに匿名化したレコードの検証対象の項目の登録内容となるように、配布済データTBL8fを更新する。図21は、実施例1に係る情報処理装置が実行する処理の一例を示す図である。例えば、更新制御部9fは、図20に示すデータが配布済データTBL8fに登録されている場合に、図18の例に示す匿名化されたレコードを生成したときには、次のような処理を行う。すなわち、更新制御部9fは、配布済データTBL8fのレコード管理ID「aaa01」を有するレコードの年齢の登録内容を、図21に示すように、「30〜39」に更新する。
続いて、更新制御部9fは、配布済データTBL8fにおいて新たに更新されたレコードを取得し、取得したレコードをサーバ4およびサーバ5に送信するべく、取得したレコードを通信部7に出力する。これにより、例えば、図21の例に示すレコード管理ID「aaa01」のレコードがサーバ4およびサーバ5に送信される。図21の例に示すレコード管理ID「aaa01」のレコードを受信したサーバ4およびサーバ5のそれぞれは、DB4a、DB5aのそれぞれに蓄積されたレコードのうち、レコード管理ID「aaa01」のレコードを特定する。そして、サーバ4およびサーバ5のそれぞれは、特定したレコードを、受信したレコードで更新する。このようにして、更新制御部9fは、サーバ4およびサーバ5のレコードを更新データに基づいて更新することができる。
図7の説明に戻り、削除制御部9gは、削除データを受信した場合に、サーバ4およびサーバ5に蓄積されたデータのうち、新たに識別される可能性が高くなったレコードが更新されるように制御する。
一態様としては、削除制御部9gは、サーバ2およびサーバ3から送信された削除データを受信すると、削除データに含まれる個人IDを取得し、取得した個人IDに対応するレコード管理IDをIDTBL8gから取得する。例えば、図5の例に示す削除データを受信した場合には、削除制御部9gは、削除データに含まれる個人ID「1098」を取得し、図12の例に示すIDTBL8gから、個人ID「1098」に対応するレコード管理ID「aaa01」を取得する。
続いて、削除制御部9gは、削除制御部9gが取得したレコード管理IDを有する削除の対象のレコードを情報処理装置6に送信する指示をサーバ4またはサーバ5に送信するべく、かかる指示を通信部7に送信する。これにより、削除制御部9gが取得したレコード管理IDを有する更新の対象のレコードを情報処理装置6に送信する指示がサーバ4またはサーバ5に送信される。かかる指示を受信したサーバ4またはサーバ5は、DB4aまたはDB5aに蓄積されたレコードの中から、指示が示すレコードを検索し、検索の結果得られたレコードをネットワーク91を介して情報処理装置6に送信する。これにより、情報処理装置6の削除制御部9gは、取得したレコード管理IDを有する削除の対象のレコードを得ることができる。例えば、DB4aまたはDB5aに蓄積されたデータが図6の例に示すデータであり、削除制御部9gがレコード管理ID「aaa01」を有する削除の対象のレコードを送信する指示を通信部7に送信した場合には、削除制御部9gは、次のレコードを取得する。すなわち、削除制御部9gは、図6の例に示す番号が「1」のレコードを取得する。
続いて、削除制御部9gは、取得したレコードの「レコード管理ID」以外の項目の登録内容を有するレコードを重複数TBL8dのレコードの中から検索し、検索の結果得られたレコードの「重複数」の項目に登録された値を1つデクリメントする。例えば、図6の例に示す、番号が「1」のレコード(「男」、「20〜29」、「160〜169」、「60〜69」、「aaa01」の各登録内容を有するレコード)を取得した場合に、削除制御部9gは、次のような処理を行う。すなわち、削除制御部9gは、「男」、「20〜29」、「160〜169」、「60〜69」の登録内容を有するレコードを図10の例に示す重複数TBL8dのレコードの中から検索する。そして、削除制御部9gは、検索の結果得られた図10の例に示す重複数TBL8dの5番目のレコードの「重複数」の項目に登録された値「2」を、「1」に更新する。この結果、図10の例に示す重複数TBL8dの登録内容は、図13の例に示す重複数TBL8dの登録内容に更新される。なお、重複数が「N」から「N−1」に更新された場合には、削除制御部9gが取得したレコードが、個人が識別される可能性が高いレコードとなったことを意味する。
続いて、削除制御部9gは、取得したレコードの重複数を更新後の重複数TBL8dから取得する。例えば、図6の例に示す番号が「1」のレコードを取得した場合には、削除制御部9gは、図13の例に示す更新後の重複数TBL8dの5番目のレコードの重複数「1」を取得する。
その後、削除制御部9gは、定義データ8cに登録された重複数の閾値「N」を参照し、取得した重複数が、重複数の閾値「N」を1つデクリメントした値「N−1」であるか否かを判定する。ここで、N=2の場合に、例えば、削除制御部9gは、図13の例に示す更新後の重複数TBL8dの5番目のレコードの重複数「1」を取得したときには、取得した重複数「1」が、「N−1」であると判定する。
取得した重複数が「N−1」である場合には、削除制御部9gは、個人が識別される可能性が低いレコードとなるようにサーバ4およびサーバ5に蓄積された対応するレコードを更新するように制御する。例えば、削除制御部9gは、サーバ4またはサーバ5に蓄積されたレコード管理IDのうち、次のようなレコード管理IDを情報処理装置6に送信する指示をサーバ4またはサーバ5に送信するべく、かかる指示を通信部7を送信する。すなわち、削除制御部9gが取得したレコードの「レコード管理ID」以外の項目の登録内容を有するレコードに含まれるレコード管理IDであって、削除制御部9gが取得済みのレコード管理ID以外のレコード管理IDを送信する指示を通信部7に送信する。例えば、図6の例に示す、番号が「1」のレコード(「男」、「20〜29」、「160〜169」、「60〜69」、「aaa01」の各登録内容を有するレコード)を取得した場合には、削除制御部9gは、次のような処理を行う。すなわち、削除制御部9gは、「男」、「20〜29」、「160〜169」、「60〜69」の登録内容を有するレコードに含まれるレコード管理IDであって「aaa01」以外のレコード管理IDを情報処理装置6に送信する指示を通信部7に送信する。これにより、かかる指示がサーバ4またはサーバ5に送信され、指示を受信したサーバ4またはサーバ5は、DB4aまたはDB5aから指示が示すレコード管理IDを取得し、取得したレコード管理IDを情報処理装置6に送信する。例えば、「男」、「20〜29」、「160〜169」、「60〜69」の登録内容を有するレコードに含まれる、「aaa01」以外のレコード管理IDを送信する指示を受信し、DB4aに図6に示すデータが蓄積されている場合、サーバ4は次の処理を行う。すなわち、サーバ4は、レコード管理ID「aaa06」を情報処理装置6に送信する。このようにして、削除制御部9gは、サーバ4またはサーバ5から新たにレコード管理IDを取得する。
そして、削除制御部9gは、削除制御部9gが取得したレコードの「レコード管理ID」以外の項目の登録内容と、新たに取得したレコード管理IDとを含むレコードを生成し、生成したレコードをNGデータTBL8eに登録する。例えば、削除制御部9gは、「男」、「20〜29」、「160〜169」、「60〜69」の登録内容と、新たに取得したレコード管理ID「aaa06」とを含むレコードを生成し、レコードを図14の例に示すようにNGデータTBL8eに追加する。
そして、削除制御部9gは、NGデータTBL8eに新たに登録したレコードを取得し、定義データ8cを参照し、定義データ8cが示す匿名化する項目の登録内容を匿名化する。例えば、削除制御部9gは、取得したレコードに対して、匿名化する項目の登録内容を破棄するように匿名化を行う。具体例を挙げて説明する。削除制御部9gは、レコードの「年齢」、「身長」および「体重」の項目の登録内容を破棄して、各項目に「null」を登録する匿名化を行う。例えば、削除制御部9gは、「男」、「null」、「null」、「null」、「aaa06」の登録内容が各項目に登録されたレコードを生成する。このようにして、削除制御部9gは、レコードの匿名化を行う。なお、削除制御部9gに代えて匿名化部9cが、レコードの匿名化を行うこともできる。
そして、削除制御部9gは、配布済データTBL8fのレコードのうち、削除制御部9gが新たに取得したレコード管理IDを有するレコードを特定する。続いて、削除制御部9gは、特定したレコードの検証対象の項目の登録内容が、匿名化されたレコードの検証対象の項目の登録内容となるように、配布済データTBL8fを更新する。例えば、削除制御部9gは、図6に示すデータが配布済データTBL8fに登録されている場合には、レコード管理ID「aaa06」を有するレコードの登録内容を、図15に示すように「男」、「null」、「null」、「null」に更新する。
続いて、削除制御部9gは、配布済データTBL8fにおいて新たに更新されたレコード(匿名化されたレコード)を取得し、取得したレコードがサーバ4およびサーバ5に送信されるように、取得したレコードを通信部7に出力する。これにより、例えば、図15の例に示すレコード管理ID「aaa06」のレコードがサーバ4およびサーバ5に送信される。図15の例に示すレコード管理ID「aaa06」のレコードを受信したサーバ4およびサーバ5のそれぞれは、DB4a、DB5aのそれぞれに蓄積されたレコードのうち、レコード管理ID「aaa06」のレコードを特定する。そして、サーバ4およびサーバ5のそれぞれは、特定したレコードを受信したレコードで更新する。これにより、新たに個人が識別される可能性が高くなったサーバ4およびサーバ5のレコードは、個人が識別される可能性が低くなるように更新される。このようにして、削除制御部9gは、取得した重複数が「N−1」である場合には、新たに個人が識別される可能性が高くなったサーバ4およびサーバ5のレコードを、個人が識別される可能性が低くなるように更新する。
また、削除制御部9gは、取得した重複数の値に関わらず、下記で説明するような処理を行う。例えば、削除制御部9gは、配布済データTBL8fのレコードのうち、削除データに含まれる個人IDに対応するレコード管理IDを有するレコードを特定し、特定したレコードを削除する。
続いて、削除制御部9gは、削除データに含まれる個人IDに対応するレコード管理IDを含むレコードを削除する指示をサーバ4およびサーバ5に送信すべく、かかる指示を通信部7に送信する。すなわち、削除制御部9gは、削除データが示すレコードを削除する指示を通信部7に送信する。これにより、かかる指示がサーバ4およびサーバ5に送信される。指示を受信したサーバ4およびサーバ5のそれぞれは、DB4a、DB5aのそれぞれに蓄積されたレコードのうち、指示が示すレコード管理IDを含むレコードを特定し、特定したレコードを削除する。
図7の説明に戻り、管理部9hは、クライアント装置10から送信された定義データ8cを受信すると、受信した定義データ8cを記憶部8に格納する。
制御部9は、Application Specific Integrated Circuit(ASIC)などの集積回路である。また、制御部9は、Field Programmable Gate Array(FPGA)であってもよい。また、制御部9は、Central Processing Unit(CPU)などの電子回路であってもよい。さらに、制御部9は、Micro Processing Unit(MPU)であってもよい。
次に、本実施例に係る情報処理装置が実行する処理の流れを説明する。図22は、実施例1に係る制御処理の手順を示すフローチャートである。
図22に示すように、収集部9aは、ネットワーク90を介してサーバ2およびサーバ3から送信される各種のデータを収集する(S101)。
続いて、判別部9bは、収集部9aにより収集されたデータの種類が、匿名化の対象のデータであるか否かを判定する(S102)。匿名化の対象のデータである場合(S102肯定)には、判別部9bは、匿名化の対象のデータに含まれる個人IDを取得し、取得した個人IDに対応するレコード管理IDを生成する。そして、判別部9bは、匿名化の対象のデータに含まれる取得した個人IDを破棄し、匿名化の対象のデータにレコード管理IDを登録して、匿名化の対象のデータを更新する(S103)。
そして、判別部9bは、IDTBL8gに、取得した個人IDと、生成したレコード管理IDとを対応付けて登録して、IDTBL8gを更新する(S104)。
続いて、匿名化部9cは、定義データ8cを参照し、更新された匿名化の対象のデータの各項目の登録内容の中から、定義データ8cが示す破棄する項目の登録内容を破棄する。そして、匿名化部9cは、更新された匿名化の対象のデータの各項目の登録内容のうち破棄されなかった項目の登録内容の中から、定義データ8cが示す匿名化する項目の登録内容を匿名化する。そして、匿名化部9cは、匿名化の結果得られた匿名化データ8bを記憶部8に格納する(S105)。
そして、検証部9dは、データ検証処理を実行する(S106)。図23は、実施例1に係るデータ検証処理の手順を示すフローチャートである。図23に示すように、検証部9dは、定義データ8cに登録された重複数の閾値「N」を参照する(S201)。
次に、検証部9dは、定義データ8cが示す検証する項目を参照する(S202)。そして、検証部9dは、新たに生成され記憶部8に格納された匿名化データ8bを記憶部8から取得し、取得した匿名化データ8bの未処理のレコードを1つ選択する(S203)。
続いて、検証部9dは、選択したレコードの各項目の登録内容の中から、検証する項目の登録内容の組み合わせを特定し、特定した登録内容の組み合わせを含むレコードがあるか、重複数TBL8dを検索する。検索の結果、検証する項目の登録内容の組み合わせを含むレコードが得られた場合には、検証部9dは、得られたレコードの「重複数」の項目に登録された値を1つインクリメントして、重複数TBL8dを更新する。一方、検索の結果、検証する項目の登録内容の組み合わせが得られなかった場合には、検証部9dは、検証する項目の登録内容の組み合わせが登録された1件のレコードを生成し、生成したレコードを重複数TBL8dに追加する。そして、検証部9dは、追加したレコードの「重複数」の項目に「1」を登録する。このようにして、検証部9dは、重複数TBL8dを更新する(S204)。
そして、検証部9dは、重複数TBL8dの検証する項目の登録内容の組み合わせを含むレコードの「重複数」の項目に登録された重複数が、参照した重複数の閾値「N」以上であるか否かを判定する(S205)。
重複数が「N」以上でない、すなわち、重複数が「N」未満である場合(S205否定)には、選択したレコードが、個人が識別される可能性が高いレコードであるため、検証部9dは、選択したレコードをNGデータTBL8eに登録する(S206)。そして、検証部9dは、取得した匿名化データ8bのレコードの中に、未処理のレコードがあるか否かを判定する(S207)。未処理のレコードがある場合(S207肯定)には、S203に戻り、検証部9dは、未処理のレコードを1つ選択して上述した処理を再び行う。
一方、重複数が「N」以上である場合(S205肯定)には、検証部9dは、重複数TBL8dのレコードの「重複数」の項目に登録された重複数が、参照した重複数の閾値「N」であるか否かを判定する(S208)。重複数が「N」でない場合(S208否定)には、S210へ進む。重複数が「N」である場合(S208肯定)には、選択したレコードが新たにサーバ2またはサーバ3から送信されたことによって、選択したレコードが、個人が識別される可能性が高いレコードではなくなったため、検証部9dは、次のような処理を行う。すなわち、検証部9dは、NGデータTBL8eに登録されたレコードであって、選択したレコードの「レコード管理ID」以外の項目の登録内容を有するレコードを特定し、特定したレコードをNGデータTBL8eから削除する(S209)。そして、検証部9dは、選択したレコードを、個人が識別される可能性が低い「OK」に分類し(S210)、S207へ進む。未処理のレコードがない場合(S207否定)には、検証部9dは、処理結果を内部メモリに格納し、リターンする。
図22の説明に戻り、配布制御部9eは、データ配布処理を実行し(S107)、処理を終了する。図24は、実施例1に係るデータ配布処理の手順を示すフローチャートである。図24に示すように、配布制御部9eは、匿名化部9cにより新たに記憶部8に格納された匿名化データ8bのレコードの中に、検証部9dにより新たにNGデータTBL8eに登録されたレコードがあるか否かを判定する(S301)。新たにNGデータTBL8eに登録されたレコードがない場合(S301否定)には、S306へ進む。
一方、新たにNGデータTBL8eに登録されたレコードがある場合(S301肯定)には、配布制御部9eは、定義データ8cが示す匿名化する項目を参照する(S302)。そして、配布制御部9eは、新たにNGデータTBL8eに登録されたレコードのうち、未処理のレコードを1つ選択する(S303)。そして、配布制御部9eは、選択したレコードの各項目の登録内容の中から、定義データ8cが示す匿名化する項目の登録内容を匿名化する(S304)。
そして、配布制御部9eは、新たにNGデータTBL8eに登録されたレコードのうち、未処理のレコードがあるか否かを判定する(S305)。未処理のレコードがある場合(S305肯定)には、配布制御部9eは、S303に戻り、未処理のレコードを1つ選択し、上述した処理を再び行う。
未処理のレコードがない場合(S305否定)には、配布制御部9eは、匿名化部9cにより「OK」と分類されたレコードがある場合には、かかるレコードを配布済データTBL8fに格納する。これに加えて、配布制御部9eは、2回目の匿名化が行われたレコードがある場合には、2回目の匿名化のレコードも配布済データTBL8fに格納する(S306)。続いて、配布制御部9eは、新たに配布済データTBL8fに格納したデータを取得し、取得したデータがサーバ4およびサーバ5に送信されるように、取得したデータを通信部7に出力し(S307)、処理結果を内部メモリに格納し、リターンする。
図22の説明に戻り、匿名化の対象のデータでない場合(S102否定)には、判別部9bは、収集部9aにより収集されたデータの種類が、更新データであるか否かを判定する(S108)。更新データである場合(S108肯定)には、更新制御部9fは、更新制御処理を実行し(S109)、処理を終了する。
図25は、実施例1に係る更新制御処理の手順を示すフローチャートである。図25に示すように、更新制御部9fは、第1の重複数取得処理を実行する(S401)。
図26は、実施例1に係る第1の重複数取得処理の手順を示すフローチャートである。図26に示すように、更新制御部9fは、更新データに含まれる個人IDを取得し、取得した個人IDに対応するレコード管理IDをIDTBL8gから取得する(S501)。
続いて、更新制御部9fは、更新制御部9fが取得したレコード管理IDを有する更新の対象のレコードを情報処理装置6に送信する指示をサーバ4またはサーバ5に送信すべく、かかる指示を通信部7に送信する。そして、更新制御部9fは、サーバ4またはサーバ5から、更新対象のレコードを取得する(S502)。
続いて、更新制御部9fは、取得したレコードの「レコード管理ID」以外の項目の登録内容を有するレコードを重複数TBL8dのレコードの中から検索する。そして、更新制御部9fは、検索の結果得られたレコードの「重複数」の項目に登録された値を1つデクリメントして、重複数TBL8dを更新する(S503)。
続いて、更新制御部9fは、取得したレコードの重複数を更新後の重複数TBL8dから取得し(S504)、処理結果を内部メモリに格納し、リターンする。
図25の説明に戻り、更新制御部9fは、定義データ8cに登録された重複数の閾値「N」を参照し、取得した重複数が、重複数の閾値「N」を1つデクリメントした値「N−1」であるか否かを判定する(S402)。
取得した重複数が「N−1」でない場合(S402否定)には、S404へ進む。一方、取得した重複数が「N−1」である場合(S402肯定)には、更新制御部9fは、第1の匿名化依頼処理を実行する(S403)。
図27は、実施例1に係る第1の匿名化依頼処理の手順を示すフローチャートである。図27に示すように、更新制御部9fは、サーバ4またはサーバ5に蓄積されたレコード管理IDのうち、次のようなレコード管理IDを情報処理装置6に送信する指示をサーバ4またはサーバ5に送信すべく、かかる指示を通信部7に送信する。すなわち、更新制御部9fが取得したレコードの「レコード管理ID」以外の項目の登録内容を有するレコードに含まれるレコード管理IDであって、更新制御部9fが取得済みのレコード管理ID以外のレコード管理IDを送信する指示を通信部7に送信する。このようにして、更新制御部9fは、サーバ4またはサーバ5から新たにレコード管理IDを取得する(S601)。
そして、更新制御部9fは、更新制御部9fが取得したレコードの「レコード管理ID」以外の項目の登録内容と、新たに取得したレコード管理IDとを含むレコードを生成し、生成したレコードをNGデータTBL8eに登録する(S602)。
そして、更新制御部9fは、NGデータTBL8eに新たに登録したレコードを取得し、定義データ8cを参照し、定義データ8cが示す匿名化する項目の登録内容を匿名化する(S603)。
そして、更新制御部9fは、配布済データTBL8fのレコードの中から、更新制御部9fが新たに取得したレコード管理IDを有するレコードを特定する。続いて、更新制御部9fは、特定したレコードの検証対象の項目の登録内容が、匿名化されたレコードの検証対象の項目の登録内容となるように、配布済データTBL8fを更新する(S604)。
続いて、更新制御部9fは、配布済データTBL8fにおいて新たに更新されたレコード(匿名化されたレコード)を取得し、取得したレコードがサーバ4およびサーバ5に送信されるように、取得したレコードを通信部7に出力する(S605)。そして、更新制御部9fは、処理結果を内部メモリに格納し、リターンする。
図25の説明に戻り、更新制御部9fは、更新依頼処理を実行し(S404)、処理結果を内部メモリに格納し、リターンする。
図28は、実施例1に係る更新依頼処理の手順を示すフローチャートである。図28に示すように、更新制御部9fは、取得した更新の対象のレコードの登録内容を、更新データが示す更新内容で更新して、更新後のレコードを生成する(S701)。
そして、更新制御部9fは、定義データ8cを参照し、更新されたレコードの登録内容のうち、定義データ8cが示す匿名化する項目の登録内容を匿名化する(S702)。続いて、更新制御部9fは、匿名化されたレコードの「レコード管理ID」以外の項目の登録内容を有するレコードを重複数TBL8dのレコードの中から検索する。検索の結果、レコードが得られた場合には、更新制御部9fは、得られたレコードの「重複数」の項目に登録された値を1つインクリメントする。一方、検索の結果、レコードが得られなかった場合には、更新制御部9fは、重複数TBL8dに新たなレコードを追加する。そして、更新制御部9fは、追加されたレコードの「重複数」以外の各項目に、匿名化されたレコードの登録内容を登録する。続いて、更新制御部9fは、追加されたレコードの「重複数」の項目に「1」を登録する。このようにして、更新制御部9fは、重複数TBL8dを更新する(S703)。
続いて、更新制御部9fは、匿名化されたレコードに対応する重複数TBL8dのレコードの重複数を取得し、取得した重複数が、重複数の閾値「N」以上であるか否かを判定する(S704)。取得した重複数が、重複数の閾値「N」未満である場合(S704否定)には、更新制御部9fは、匿名化されたレコードをNGデータTBL8eに登録する(S705)。
そして、更新制御部9fは、新たにNGデータTBL8eに登録されたレコードの各項目の登録内容の中から、定義データ8cが示す匿名化する項目の登録内容を匿名化する(S706)。
そして、更新制御部9fは、配布済データTBL8fのレコードの中から、更新制御部9fが新たに匿名化したレコードのレコード管理IDを有するレコードを検索する。続いて、更新制御部9fは、検索の結果得られたレコードの検証対象の項目の登録内容が、新たに匿名化したレコードの検証対象の項目の登録内容となるように、配布済データTBL8fを更新する(S707)。
続いて、更新制御部9fは、配布済データTBL8fにおいて新たに更新されたレコード(匿名化されたレコード)を取得し、取得したレコードがサーバ4およびサーバ5に送信されるように、取得したレコードを通信部7に出力する(S708)。そして、更新制御部9fは、処理結果を内部メモリに格納し、リターンする。
一方、取得した重複数が、重複数の閾値「N」以上である場合(S704肯定)には、更新制御部9fは、取得した重複数が、重複数の閾値「N」であるか否かを判定する(S709)。取得した重複数が、重複数の閾値「N」でない場合(S709否定)には、S714へ進む。
一方、取得した重複数が、重複数の閾値「N」である場合(S709肯定)には、更新制御部9fは、次のような処理を行う。すなわち、更新制御部9fは、NGデータTBL8eを参照し、新たに匿名化されたレコードの「レコード管理ID」以外の項目の登録内容と一致する登録内容を有するレコードのレコード管理IDを取得する(S710)。
そして、更新制御部9fは、NGデータTBL8eに登録されたレコードのうち、取得したレコード管理IDを有するレコードを特定し、特定したレコードを削除する(S711)。そして、更新制御部9fは、配布済データTBL8fのレコードのうち、新たに取得したレコード管理IDを有するレコードを特定する。続いて、更新制御部9fは、特定したレコードの検証対象の項目の登録内容が、新たに匿名化されたレコードの検証対象の項目の登録内容となるように、配布済データTBL8fを更新する(S712)。続いて、更新制御部9fは、配布済データTBL8fにおいて新たに更新されたレコードを取得し、取得したレコードがサーバ4およびサーバ5に送信されるように、取得したレコードを通信部7に出力する(S713)。
続いて、更新制御部9fは、配布済データTBL8fのレコードのうち、更新制御部9fが新たに匿名化したレコードのレコード管理IDを有するレコードを特定する。そして、更新制御部9fは、特定したレコードの検証対象の項目の登録内容が、新たに匿名化したレコードの検証対象の項目の登録内容となるように、配布済データTBL8fを更新する(S714)。続いて、更新制御部9fは、配布済データTBL8fにおいて新たに更新されたレコードを取得し、取得したレコードがサーバ4およびサーバ5に送信されるように、取得したレコードを通信部7に出力する(S715)。そして、更新制御部9fは、処理結果を内部メモリに格納し、リターンする。
図22の説明に戻り、更新データでない場合(S108否定)には、判別部9bは、収集部9aにより収集されたデータの種類が、削除データであるか否かを判定する(S110)。削除データでない場合(S110否定)には、処理を終了する。一方、削除データである場合(S110肯定)には、削除制御部9gは、削除制御処理を実行し(S111)、処理を終了する。
図29は、実施例1に係る削除制御処理の手順を示すフローチャートである。図29に示すように、削除制御部9gは、第2の重複数取得処理を実行する(S801)。
図30は、実施例1に係る第2の重複数取得処理の手順を示すフローチャートである。図30に示すように、削除制御部9gは、削除データに含まれる個人IDを取得し、取得した個人IDに対応するレコード管理IDをIDTBL8gから取得する(S901)。
続いて、削除制御部9gは、削除制御部9gが取得したレコード管理IDを有する削除の対象のレコードを情報処理装置6に送信する指示をサーバ4またはサーバ5に送信すべく、かかる指示を通信部7に送信する。これにより、削除制御部9gは、取得したレコード管理IDを有する削除の対象のレコードを取得する(S902)。
続いて、削除制御部9gは、取得したレコードの「レコード管理ID」以外の項目の登録内容を有するレコードを重複数TBL8dのレコードの中から検索し、検索の結果得られたレコードの「重複数」の項目に登録された値を1つデクリメントする。このようにして、削除制御部9gは、重複数TBL8dを更新する(S903)。
続いて、削除制御部9gは、取得したレコードの重複数を更新後の重複数TBL8dから取得し(S904)、処理結果を内部メモリに格納し、リターンする。
図29の説明に戻り、削除制御部9gは、定義データ8cに登録された重複数の閾値「N」を参照し、取得した重複数が、重複数の閾値「N」を1つデクリメントした値「N−1」であるか否かを判定する(S802)。取得した重複数が、「N−1」でない場合(S802否定)には、S804へ進む。
一方、取得した重複数が「N−1」である場合(S802肯定)には、削除制御部9gは、実施例1に係る第2の匿名化依頼処理を実行する(S803)。図31は、実施例1に係る第2の匿名化依頼処理の手順を示すフローチャートである。図31に示すように、削除制御部9gは、サーバ4またはサーバ5に蓄積されたレコードのレコード管理IDのうち、次のようなレコード管理IDを情報処理装置6に送信する指示をサーバ4またはサーバ5に送信すべく、かかる指示を通信部7に送信する。すなわち、削除制御部9gが取得したレコードの「レコード管理ID」以外の項目の登録内容を有するレコードに含まれるレコード管理IDであって、削除制御部9gが取得済みのレコード管理ID以外のレコード管理IDを送信する指示を通信部7に送信する。これにより、削除制御部9gは、サーバ4またはサーバ5から新たにレコード管理IDを取得する(S1001)。
そして、削除制御部9gは、削除制御部9gが取得したレコードの「レコード管理ID」以外の項目の登録内容と、新たに取得したレコード管理IDとを含むレコードを生成し、生成したレコードをNGデータTBL8eに登録する(S1002)。
そして、削除制御部9gは、NGデータTBL8eに新たに登録したレコードを取得し、定義データ8cを参照し、定義データ8cが示す匿名化する項目の登録内容を匿名化する(S1003)。
そして、削除制御部9gは、配布済データTBL8fのレコードのうち、削除制御部9gが新たに取得したレコード管理IDを有するレコードを特定する。続いて、削除制御部9gは、特定したレコードの検証対象の項目の登録内容が、匿名化されたレコードの検証対象の項目の登録内容となるように、配布済データTBL8fを更新する(S1004)。
続いて、削除制御部9gは、配布済データTBL8fにおいて新たに更新されたレコード(匿名化されたレコード)を取得し、取得したレコードがサーバ4およびサーバ5に送信されるように、取得したレコードを通信部7に出力する(S1005)。そして、削除制御部9gは、処理結果を内部メモリに格納し、リターンする。
図29の説明に戻り、削除制御部9gは、配布済データTBL8fのレコードのうち、削除制御部9gが取得した削除の対象のレコードと一致するレコードを特定し、特定したレコードを削除する(S804)。
続いて、削除制御部9gは、削除制御部9gが取得したレコード管理IDを含むレコードを削除する指示をサーバ4およびサーバ5に送信するように、通信部7を制御し(S805)、処理結果を内部メモリに格納し、リターンする。
上述してきたように、本実施例の情報処理装置6は、収集したデータに含まれるレコードについて、所定の関係を持つレコード、例えば、検証する項目の登録内容の組み合わせが一致するレコードの個数を計数する。そして、情報処理装置6は、計数した個数がN個以上である場合には、所定の関係を持つ、複数のレコードをサーバ4およびサーバ5に出力する。そして、新たにデータを収集した場合には、情報処理装置6は、前回収集したデータ、および、新たに収集したデータに含まれるレコードについて、所定の関係を持つレコードの個数を計数する。続いて、情報処理装置6は、前回収集したデータ、および、新たに収集したデータに含まれるレコードについて計数した所定の関係を持つレコードの個数が、N個以上である場合には、次の処理を行う。すなわち、情報処理装置6は、所定の関係を持つ複数のレコードのうち、新たに収集したデータに含まれるレコードをサーバ4およびサーバ5に出力する。したがって、情報処理装置6によれば、収集したデータに含まれるレコードのうち、「レコードの一致」というレコード間の所定の条件を満たさないと判定されるレコードの量を抑制することができる。この結果、より多くのレコードが、ターゲットシステムのサーバ4およびサーバ5において統計処理などの所定の処理を行う際に有効に用いられるようになる。
また、情報処理装置6は、収集したデータに含まれるレコードについて計数した所定の関係を持つレコードの個数がN個未満である場合には、次の処理を行う。すなわち、情報処理装置6は、所定の関係を持つ複数のレコードに対して、匿名化する項目の登録内容を破棄する匿名化を行い、匿名化された複数のレコードをサーバ4およびサーバ5に出力する。そして、新たにデータを収集した場合には、情報処理装置6は、前回収集したデータおよび新たに収集したデータに含まれるレコードについて計数した所定の関係を持つレコードの個数が、N個未満であるときには、次の処理を行う。すなわち、情報処理装置6は、所定の関係を持つ複数のレコードのうち、新たに収集したデータに含まれるレコードに対して、匿名化する項目の登録内容を破棄する匿名化を行い、匿名化されたレコードをサーバ4およびサーバ5に出力する。したがって、情報処理装置6によれば、所定の関係を持つレコードの個数がN個未満であるレコードについては、個人が識別される可能性が低くなるように匿名化した上で、サーバ4およびサーバ5に送信することができる。
また、情報処理装置6は、収集したデータに含まれる所定の関係を持つレコードの個数を計数し、計数した個数と、所定の関係を持つレコードとを対応付けて重複数TBL8dに登録する。そして、新たにデータを収集した場合には、情報処理装置6は、次のような処理を行う。すなわち、情報処理装置6は、重複数TBL8dに登録されたレコードおよび新たに収集したデータのレコードと所定の関係を持つ新たに収集したデータに含まれるレコードの個数を計数し、計数した個数に基づいて、重複数TBL8dの個数の値を更新する。したがって、情報処理装置6によれば、レコードごとに個数が登録される重複数TBL8dのような少ない情報量のテーブルを用いて、出力済みのレコードも考慮して、所定の関係を持つレコードの個数を計数することができる。
また、情報処理装置6は、前回収集したデータまたは新たに収集したデータに含まれる更新対象のレコードが更新された場合には、更新される前の更新対象のレコードについて所定の関係を持つレコードの個数を計数する。そして、情報処理装置6は、更新される前の更新対象のレコードについて計数した所定の関係を持つレコードの個数がN−1である場合には、次のような処理を行う。すなわち、情報処理装置6は、更新される前の更新対象のレコードと所定の関係を持つレコードについて、登録内容を破棄するなどの匿名化を行う指示をサーバ4およびサーバ5に出力する。したがって、情報処理装置6によれば、レコードの更新によって、サーバ4およびサーバ5に蓄積されたレコードであって、個人を識別する可能性が高くなったレコードを、個人を識別する可能性が低くなるように更新させることができる。
また、情報処理装置6は、更新された後の更新対象のレコードについて所定の関係を持つレコードの個数を計数する。そして、情報処理装置6は、更新された後の更新対象のレコードについて計数した所定の関係を持つデータの個数がNである場合には、更新された後のレコードと所定の関係を持つレコードについて匿名化を解除する指示をサーバ4またはサーバ5に出力する。したがって、情報処理装置6によれば、レコードの更新によって、サーバ4およびサーバ5に蓄積されたレコードであって、個人を識別する可能性が低くなったレコードを、統計処理などの各種の処理において用いられるように、更新させることができる。
また、情報処理装置6は、更新された後の更新対象のレコードについて計数した所定の関係を持つレコードの個数がN以上である場合には、更新された後の更新対象のレコードをサーバ4およびサーバ5に出力する。また、情報処理装置6は、更新された後の更新対象のレコードについて計数した所定の関係を持つレコードの個数がN未満である場合には、更新された後の更新対象のレコードを匿名化する。そして、情報処理装置6は、匿名化されたレコードをサーバ4およびサーバ5に出力する。
また、情報処理装置6は、前回収集したデータまたは新たに収集したデータに含まれるレコードが削除された場合には、削除されたレコードについて所定の関係を持つレコードの個数を計数する。そして、情報処理装置6は、削除されたレコードについて計数した所定の関係を持つレコードの個数がN−1である場合には、削除されたデータと所定の関係を持つレコードについて匿名化する指示をサーバ4およびサーバ5に出力する。したがって、情報処理装置6によれば、レコードの削除によって、サーバ4およびサーバ5に蓄積されたレコードであって、個人を識別する可能性が高くなったレコードを、個人を識別する可能性が低くなるように更新させることができる。
さて、上記の実施例1では、重複数TBL8d、NGデータTBL8eを用いて各種の処理を行う場合を例示したが、開示の情報処理装置はこれに限定されない。そこで、実施例2では、後述するグループID紐付TBL19c、NGIDTBL19b、グループIDTBL19aを用いて各種の処理を行う場合について説明する。
図32は、実施例2に係る情報処理装置の機能構成の一例を示す図である。図32に示すように、情報処理装置18は、通信部7、記憶部19および制御部20を有する。かかる記憶部19は、図7に示す実施例1に係る記憶部8と比較して、グループID紐付TBL19c、NGIDTBL19bおよびグループIDTBL19aを記憶する点が異なる。また、かかる制御部20は、図7に示す実施例1に係る制御部9と比較して、検証部20d、配布制御部20e、更新制御部20fおよび削除制御部20gを有する点が異なる。なお、以下では、上記の実施例1と同様の機能を果たす各部については図7と同様の符号を付し、その説明は省略する。また、実施例2に係るシステムの構成については、実施例1に係るシステムの構成と同様であるので、説明を省略する。
サーバ2およびサーバ3は、例えば、実施例1と同様に、図3の例に示すデータを情報処理装置18に送信する。また、情報処理装置18は、実施例1と同様に、図6の例に示すデータをサーバ4およびサーバ5に送信する。
グループIDTBL19aには、レコードが属するグループのグループIDが登録される。図33は、グループIDTBLのデータ構造の一例を示す図である。図33の例が示すグループIDTBL19aのレコードは、定義データ8cにおいて、「項目名」に名称が登録された項目のうち「検証」の項目に「YES」が登録された「性別」、「年齢」、「身長」、「体重」の項目と、「グループID」の項目とを有する。例えば、図33の例が示すグループIDTBL19aの1番目のレコードは、性別「男」、年齢「20〜29」、身長「170〜179」、体重「60〜69」のレコードが属するグループのグループIDが「grp1」であることを示す。なお、同一のグループには、検証対象の項目の登録内容が一致するレコードが属する。すなわち、検証対象の項目の登録内容が一致するレコードについては、グループIDTBL19aに登録されるグループIDが一致することとなる。本実施例に係る情報処理装置6は、グループIDTBL19aに登録されたグループIDを計数することで、レコードの重複数を計数する。
NGIDTBL19bには、重複数がN未満のレコードに含まれるレコード管理IDが登録される。図34は、NGIDTBLのデータ構造の一例を示す図である。図34の例が示すNGIDTBL19bのレコードは、「レコード管理ID」の項目を有する。図34の例が示すNGIDTBL19bは、重複数がN未満のレコードに含まれるレコード管理IDが登録されている場合を示す。
グループID紐付TBL19cには、レコード管理IDとグループIDとが対応付けて登録される。図35は、グループID紐付TBLのデータ構造の一例を示す図である。図35の例が示すグループID紐付TBL19cは、「レコード管理ID」、「グループID」の項目を有する。「レコード管理ID」の項目には、レコード管理IDが登録される。「グループID」の項目には、「レコード管理ID」の項目に登録されたレコード管理IDを含むレコードが属するグループのグループIDが登録される。図35のグループID紐付TBL19cの1番目のレコードは、レコード管理ID「aaa01」を含むレコードは、グループID「grp5」が示すグループに属することを示す。
記憶部19は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部19は、上記の種類の記憶装置に限定されるものではなく、Random Access Memory(RAM)、Read Only Memory(ROM)であってもよい。
制御部20は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図32に示すように、制御部20は、収集部9aと、判別部9bと、匿名化部9cと、検証部20dと、配布制御部20eと、更新制御部20fと、削除制御部20gと、管理部9hとを有する。
収集部9a、判別部9b、匿名化部9cおよび管理部9はは、実施例1と同様の構成であるため、説明を省略する。
検証部20dは、検証対象のレコードの重複数がN以上であるか否かを判定することにより、検証対象のレコードが、個人が識別される可能性が高いレコードであるか検証する。
一態様としては、検証部20dは、匿名化部9cにより匿名化データ8bが生成された場合には、定義データ8cに登録された重複数の閾値「N」を参照する。例えば、図9に示す定義データ8cが記憶部8に記憶されている場合には、検証部20dは、定義データ8cの重複数の閾値「2」を参照する。以下、定義データ8cに、重複数の閾値として「2」が登録されている場合について説明するが、定義データ8cに登録される重複数の閾値「N」の値は自然数であれば任意の値を採用することができる。
次に、検証部20dは、定義データ8cが示す検証する項目を参照する。例えば、図9に示す定義データ8cが記憶部8に記憶されている場合には、検証部20dは、定義データ8cの「検証」の項目に「YES」が登録された「性別」、「年齢」、「身長」および「体重」の項目を参照する。
そして、検証部20dは、下記に説明する検証部20dが実行する処理が未処理であるレコードがなくなるまで、未処理のレコードに対して下記に説明する処理を行う。すなわち、検証部20dは、まず、新たに生成され記憶部8に格納された匿名化データ8bを記憶部8から取得し、取得した匿名化データ8bの未処理のレコードを1つ選択する。例えば、図8に示す匿名化データ8bが新たに匿名化部9cにより生成され記憶部8に格納された場合には、検証部20dは、匿名化データ8bを記憶部8から取得し、番号が「1」のレコードを選択する。
続いて、検証部20dは、選択したレコードの各項目の登録内容のうち、検証する項目の登録内容の組み合わせを取得する。例えば、図8に示す匿名化データ8bの番号が「1」のレコードを選択した場合には、検証部20dは、検証する項目の登録内容「男」、「20〜29」、「160〜169」、「60〜69」の組み合わせを取得する。
そして、検証部20dは、取得した登録内容の組み合わせに対応するグループIDがあるか、グループIDTBL19aを検索する。検索の結果、取得した登録内容の組み合わせに対応するグループIDが得られた場合には、検証部20dは、得られたグループIDと、選択したレコードに含まれるレコード管理IDとを対応付けて、グループID紐付TBL19cに登録する。例えば、検証部20dは、登録内容「男」、「20〜29」、「160〜169」、「60〜69」の組み合わせに対応するグループIDがあるか、図33に示すグループIDTBL19aを検索した場合には、グループID「grp1」を得る。そして、検証部20dは、得られたグループID「grp1」と、選択した番号が「1」のレコードのレコード管理ID「aaa01」とを対応付けてグループID紐付TBL19cに登録して、グループID紐付TBL19cを更新する。
一方、検索の結果、取得した登録内容の組み合わせに対応するグループIDが得られなかった場合には、検証部20dは、新規のグループIDを生成する。そして、検証部20dは、生成した新規のグループIDと、取得した登録内容の組み合わせとを対応付けて、グループIDTBL19aに登録する。すなわち、検証部20dは、グループIDTBL19aに、生成した新規のグループIDと、取得した登録内容の組み合わせとを含むレコードを追加する。そして、検証部20dは、生成した新規のグループIDと、選択したレコードに含まれるレコード管理IDとを対応付けてグループID紐付TBL19cに登録し、グループID紐付TBL19cを更新する。
グループID紐付TBL19cが更新された場合には、検証部20dは、更新後のグループID紐付TBL19cに登録されたグループIDであって、検証部20dが得たグループID、または、生成した新規のグループIDの個数を計数する。例えば、検証部20dは、グループIDTBL19aに対して検索を行った結果、グループID「grp5」が得られた場合に、更新後のグループID紐付TBL19cの登録内容が図35に示す内容であるときには、次のような処理を行う。すなわち、検証部20dは、図35の例に示す登録内容から、グループID「grp5」の個数「2」を計数する。このようにして、検証部20dは、選択したレコードの重複数を算出する。
そして、検証部20dは、選択したレコードの重複数が、参照した重複数の閾値「N」以上であるか否かを判定する。
重複数が「N」未満である場合には、選択したレコードが、個人が識別される可能性が高いレコードであるため、検証部20dは、選択したレコードに含まれるレコード管理IDをNGIDTBL19bに登録する。図36は、実施例2に係る情報処理装置が実行する処理の一例を説明するための図である。例えば、選択したレコードに含まれるレコード管理IDが「aaa06」である場合には、検証部20dは、図36に示すように、NGIDTBL19bにレコード管理ID「aaa06」を登録する。
一方、重複数が「N」以上である場合には、検証部20dは、選択したレコードの重複数が、参照した重複数の閾値「N」であるか否かを判定する。重複数が「N」である場合には、選択したレコードが新たにサーバ2またはサーバ3から送信されたことによって、選択したレコードが、個人が識別される可能性が高いレコードではなくなったため、検証部20dは、次のような処理を行う。すなわち、検証部20dは、得られたグループID、または、新規のグループIDに対応する全てのレコード管理IDをグループID紐付TBL19cから取得し、取得した全てのレコード管理IDをNGIDTBL19bから削除する。そして、検証部20dは、選択したレコードを、個人が識別される可能性が低い「OK」に分類する。例えば、検証部20dは、制御部20の内部メモリに展開されたOKリストに、選択したレコードを登録する。そして、検証部20dは、取得した匿名化データ8bのレコードの中に、未処理のレコードがあるか否かを判定し、未処理のレコードがある場合には、未処理のレコードを1つ選択し、選択した未処理のレコードに対して上述した処理を再び行う。
配布制御部20eは、匿名化が行われたデータをサーバ4およびサーバ5にネットワーク91を介して配布する。一態様としては、配布制御部20eは、まず、匿名化部9cにより新たに記憶部8に格納された匿名化データ8aのレコードのレコード管理IDの中に、検証部20dにより新たにNGIDTBL19bに登録されたレコード管理IDがあるか否かを判定する。
新たにNGIDTBL19bに登録されたレコード管理IDがある場合には、配布制御部20eは、定義データ8cが示す匿名化する項目を参照する。例えば、図9に示す定義データ8cが記憶部19に記憶されている場合には、配布制御部20eは、次のような処理を行う。すなわち、配布制御部20eは、定義データ8cの「匿名化」の項目に「YES」が登録された「年齢」、「身長」および「体重」の項目を参照する。そして、配布制御部20eは、新たにNGIDTBL19bに登録されたレコード管理IDのうち、未処理のレコード管理IDを1つ選択する。そして、配布制御部20eは、選択したレコード管理IDを含む匿名化データ8bのレコードを取得し、取得したレコードの各項目の登録内容の中から、定義データ8cが示す匿名化する項目の登録内容を匿名化する。例えば、配布制御部20eは、個人が識別される可能性が低減されるように、登録内容を破棄して各項目に「null」を登録する匿名化を行う。具体例を挙げて説明すると、配布制御部20eは、図6に示すデータの番号が「3」のレコードが示すように、「年齢」、「身長」、「体重」の項目の登録内容を「null」に設定する。そして、配布制御部20eは、新たにNGIDTBL19bに登録されたレコード管理IDのうち、未処理のレコード管理IDがあるか否かを判定し、未処理のレコード管理IDがある場合には、未処理のレコード管理IDを1つ選択し、上述した処理を行う。このようにして、配布制御部20eは、新たにNGIDTBL19bに登録された全てのレコード管理IDに対応する匿名化データ8bのレコードの匿名化を行う匿名化処理を行う。なお、配布制御部20eにおいて行われた匿名化は、統計処理に用いることができるように匿名化部9cにより行われた匿名化を「1回目の匿名化」とすると、「2回目の匿名化」となる。また、「2回目の匿名化」を配布制御部20eに代えて匿名化部9cが行うこともできる。
そして、配布制御部20eは、匿名化部9cにより「OK」と分類されたレコードがある場合には、かかるレコードを配布済データTBL8fに格納する。これに加えて、配布制御部20eは、2回目の匿名化が行われたレコードがある場合には、2回目の匿名化のレコードも配布済データTBL8fに格納する。続いて、配布制御部20eは、新たに配布済データTBL8fに格納したデータを取得し、取得したデータがサーバ4およびサーバ5に送信されるように、取得したデータを通信部7に出力する。これにより、例えば、図6の例に示すようなデータがサーバ4およびサーバ5に送信される。
図32の説明に戻り、更新制御部20fは、更新データを受信した場合に、サーバ4およびサーバ5に蓄積されたデータのうち、新たに識別される可能性が高くなったレコードや新たに識別される可能性が低くなったデータが更新されるように制御する。
一態様としては、更新制御部20fは、サーバ2およびサーバ3から送信された更新データを受信すると、更新データに含まれる個人IDを取得し、取得した個人IDに対応するレコード管理IDをIDTBL8gから取得する。例えば、図4の例に示す更新データを受信した場合には、更新制御部20fは、更新データに含まれる個人ID「1098」を取得し、図12の例に示すIDTBL8gから、個人ID「1098」に対応するレコード管理ID「aaa01」を取得する。
続いて、更新制御部20fは、取得したレコード管理IDに対応するグループIDをグループID紐付TBL19cから取得する。例えば、更新制御部20fは、図35に示すグループID紐付TBL19cから、レコード管理ID「aaa01」に対応するグループID「grp5」を取得する。次に、更新制御部20fは、取得したレコード管理IDを含むレコードをグループID紐付TBL19cから削除する。例えば、更新制御部20fは、図35に示すグループID紐付TBL19cから、レコード管理ID「aaa01」を含むレコードを削除する。この結果、グループID紐付TBL19cの登録内容は、図37に示す登録内容となる。なお、図37は、グループID紐付TBLの登録内容の一例を示す図である。そして、更新制御部20fは、グループID紐付TBL19cを参照し、取得したグループIDの個数を計数することにより、取得したグループIDが示すグループに属するレコードの重複数を算出する。例えば、更新制御部20fは、グループID「grp5」を取得し、図37に示すグループID紐付TBL19cを参照した場合には、グループID「grp5」の個数「1」を算出する。すなわち、更新制御部20fは、グループID「grp5」が示すグループに属するレコードの重複数「1」を算出する。なお、重複数が「N−1」である場合には、更新制御部20fが取得したグループIDに属するレコードが、個人が識別される可能性が高いレコードとなったことを意味する。
その後、更新制御部20fは、定義データ8cに登録された重複数の閾値「N」を参照し、算出した重複数が、重複数の閾値「N」を1つデクリメントした値「N−1」であるか否かを判定する。ここで、N=2の場合に、例えば、更新制御部20fは、取得したグループIDに属するレコードの重複数「1」を算出したときには、算出した重複数「1」が、「N−1」であると判定する。
算出した重複数が「N−1」である場合には、更新制御部20fは、個人が識別される可能性が低いレコードとなるようにサーバ4およびサーバ5に蓄積された対応するレコードを更新するように制御する。例えば、更新制御部20fは、取得したグループIDに対応するレコード管理IDを、グループID紐付TBL19cから取得する。具体例を挙げて説明すると、更新制御部20fは、図37に示すグループID紐付TBL19cから、グループID「grp5」に対応するレコード管理ID「aaa06」を取得する。そして、更新制御部20fは、取得したレコード管理IDをNGIDTBL19bに登録する。例えば、更新制御部20fは、取得したレコード管理ID「aaa06」を図34に示すNGIDTBL19bに登録する。この結果、NGIDTBL19bの登録内容は、図36に示す登録内容となる。
そして、更新制御部20fは、取得したグループIDに対応する検証対象の項目の登録内容を、グループIDTBL19aから取得する。例えば、更新制御部20fは、図33に示すグループIDTBL19aから、グループID「grp5」に対応する「男」、「20〜29」、「160〜169」、「60〜69」の登録内容を取得する。そして、更新制御部20fは、取得した登録内容と、新たに取得したレコード管理IDとを含むレコードを生成する。例えば、更新制御部20fは、「男」、「20〜29」、「160〜169」、「60〜69」の登録内容と、新たに取得したレコード管理ID「aaa06」とを含むレコードを生成する。そして、更新制御部20fは、定義データ8cを参照し、生成したレコードに対して、定義データ8cが示す匿名化する項目の登録内容を匿名化する。例えば、更新制御部20fは、生成したレコードに対して、匿名化する項目の登録内容を破棄するように匿名化を行う。具体例を挙げて説明する。更新制御部20fは、レコードの「年齢」、「身長」および「体重」の項目の登録内容を破棄して、各項目に「null」を登録する匿名化を行う。例えば、更新制御部20fは、「男」、「null」、「null」、「null」、「aaa06」の登録内容が各項目に登録された、匿名化されたレコードを生成する。このようにして、更新制御部20fは、生成したレコードの匿名化を行う。なお、更新制御部20fに代えて匿名化部9cが、生成したレコードの匿名化を行うこともできる。
そして、更新制御部20fは、配布済データTBL8fのレコードの中から、更新制御部20fが新たに取得したレコード管理IDを有するレコードを特定する。そして、更新制御部20fは、特定したレコードの検証対象の項目の登録内容が、匿名化されたレコードの検証対象の項目の登録内容となるように、配布済データTBL8fを更新する。例えば、更新制御部20fは、図6に示すデータが配布済データTBL8fに登録されている場合には、レコード管理ID「aaa06」を有するレコードの登録内容を、図15に示すように「男」、「null」、「null」、「null」に更新する。
続いて、更新制御部20fは、配布済データTBL8fにおいて新たに更新されたレコード(匿名化されたレコード)を取得し、取得したレコードがサーバ4およびサーバ5に送信されるように、取得したレコードを通信部7に出力する。これにより、例えば、図15の例に示すレコード管理ID「aaa06」のレコードがサーバ4およびサーバ5に送信される。図15の例に示すレコード管理ID「aaa06」のレコードを受信したサーバ4およびサーバ5のそれぞれは、DB4a、DB5aのそれぞれに蓄積されたレコードのうち、レコード管理ID「aaa06」のレコードを特定する。そして、サーバ4およびサーバ5のそれぞれは、特定したレコードを、受信したレコードで更新する。これにより、新たに個人が識別される可能性が高くなったサーバ4およびサーバ5のレコードは、個人が識別される可能性が低くなるように更新される。このようにして、更新制御部20fは、算出した重複数が「N−1」である場合には、新たに個人が識別される可能性が高くなったサーバ4およびサーバ5のレコードを、個人が識別される可能性が低くなるように更新する。
また、更新制御部20fは、算出した重複数の値に関わらず、下記で説明するような処理を行う。例えば、更新制御部20fは、更新データに含まれる個人IDに対応するレコード管理IDと、取得したグループIDに対応する検証対象の項目の登録内容とを含むレコードを生成する。具体例を挙げて説明すると、更新制御部20fは、図4に示す更新データに含まれる個人ID「1098」に対応するレコード管理ID「aaa01」と、次のような登録内容とを含むレコードを生成する。すなわち、更新制御部20fは、グループID「grp5」に対応する登録内容「男」、「20〜29」、「160〜169」、「60〜69」をも含むレコードを生成する。この結果、図16の例に示すようなレコードが生成される。そして、更新制御部20fは、生成したレコードの登録内容を、更新データが示す更新内容で更新する。例えば、更新制御部20fは、図4の例に示す更新データを受信し、図16の例に示すレコードを生成した場合には、図17の例に示すように、更新データに含まれる更新内容に基づいて、「年齢」の項目に登録された年齢を「30」に更新する。
そして、更新制御部20fは、定義データ8cを参照し、更新されたレコードの登録内容のうち、定義データ8cが示す匿名化する項目の登録内容を匿名化する。例えば、更新制御部20fは、更新されたレコードに対して、匿名化する項目の登録内容をあいまいにするように匿名化を行う。一例としては、更新制御部20fは、図18に示すように、レコードの「年齢」、「身長」および「体重」の項目の登録内容をあいまいにして、匿名化を行う。これにより、匿名化されたレコードが生成される。
続いて、更新制御部20fは、匿名化したレコードの各項目の登録内容のうち、検証する項目の登録内容の組み合わせを取得する。例えば、図18に示すようにレコードを匿名化した場合には、更新制御部20fは、検証する項目の登録内容「男」、「30〜39」、「160〜169」、「60〜69」の組み合わせを取得する。
そして、更新制御部20fは、取得した登録内容の組み合わせに対応するグループIDがあるか、グループIDTBL19aを検索する。検索の結果、取得した登録内容の組み合わせに対応するグループIDが得られた場合には、更新制御部20fは、得られたグループIDと、匿名化したレコードに含まれるレコード管理IDとを対応付けて、グループID紐付TBL19cに登録する。例えば、更新制御部20fは、登録内容「男」、「30〜39」、「160〜169」、「60〜69」の組み合わせに対応するグループIDがあるか、図33に示すグループIDTBL19aを検索した場合には、グループID「grp4」を得る。そして、更新制御部20fは、得られたグループID「grp4」と、匿名化したレコードに含まれるレコード管理ID「aaa01」とを対応付けて、図38に示すように、グループID紐付TBL19cに登録して、グループID紐付TBL19cを更新する。なお、図38は、グループID紐付TBLの登録内容の一例を示す図である。
一方、検索の結果、取得した登録内容の組み合わせに対応するグループIDが得られなかった場合には、更新制御部20fは、新規のグループIDを生成する。そして、更新制御部20fは、生成した新規のグループIDと、取得した登録内容の組み合わせとを対応付けて、グループIDTBL19aに登録する。すなわち、更新制御部20fは、グループIDTBL19aに、生成した新規のグループIDと、取得した登録内容の組み合わせとを含むレコードを追加する。そして、更新制御部20fは、生成した新規のグループIDと、選択したレコードに含まれるレコード管理IDとを対応付けてグループID紐付TBL19cに登録し、グループID紐付TBL19cを更新する。
グループID紐付TBL19cが更新された場合には、更新制御部20fは、更新後のグループID紐付TBL19cに登録されたグループIDであって、更新制御部20fが得たグループID、または、生成した新規のグループIDの個数を計数する。例えば、更新制御部20fは、グループIDTBL19aに対して検索を行った結果、グループID「grp4」が得られ、更新後のグループID紐付TBL19cの登録内容が図38に示す内容である場合には、次のような処理を行う。すなわち、更新制御部20fは、図38の例に示す登録内容から、グループID「grp4」の個数「2」を計数する。このようにして、更新制御部20fは、得られたグループID、または、生成した新規のグループIDが示すグループに属するレコードの重複数を算出する。
そして、更新制御部20fは、得られたグループID、または、生成した新規のグループIDが示すグループに属するレコードの重複数が、参照した重複数の閾値「N」以上であるか否かを判定する。
重複数が「N」未満である場合には、得られたグループID、または、生成した新規のグループIDが示すグループに属するレコードが、個人が識別される可能性が高いレコードであるため、更新制御部20fは、次のような処理を行う。すなわち、更新制御部20fは、更新データに含まれる個人IDに対応するレコード管理IDをNGIDTBL19bに登録する。
そして、更新制御部20fは、定義データ8cを参照し、新たに匿名化されたレコードに対して、定義データ8cが示す匿名化する項目の登録内容を匿名化する。例えば、更新制御部20fは、匿名化されたレコードに対して、匿名化する項目の登録内容を破棄するように匿名化を行う。このようにして、更新制御部20fは、匿名化されたレコードに対して2回目の匿名化を行う。なお、更新制御部20fに代えて匿名化部9cが、2回目の匿名化を行うこともできる。
そして、更新制御部20fは、配布済データTBL8fのレコードの中から、更新データに含まれる個人IDに対応するレコード管理IDを有するレコードを特定する。そして、更新制御部20fは、特定したレコードの検証対象の項目の登録内容が、匿名化されたレコードの検証対象の項目の登録内容となるように、配布済データTBL8fを更新する。
続いて、更新制御部20fは、配布済データTBL8fにおいて新たに更新されたレコード(匿名化されたレコード)を取得し、取得したレコードがサーバ4およびサーバ5に送信されるように、取得したレコードを通信部7に出力する。これにより、例えば、取得したレコードがサーバ4およびサーバ5に送信される。かかるレコードを受信したサーバ4およびサーバ5のそれぞれは、DB4a、DB5aのそれぞれに蓄積されたレコードのうち、受信したレコードに含まれるレコード管理IDを有するレコードを特定する。そして、サーバ4およびサーバ5のそれぞれは、特定したレコードを、受信したレコードで更新する。これにより、サーバ4およびサーバ5のレコードは、更新データに基づいて更新される。
一方、重複数が「N」以上である場合には、更新制御部20fは、得られたグループID、または、生成した新規のグループIDが示すグループに属するレコードの重複数が、参照した重複数の閾値「N」であるか否かを判定する。重複数が「N」である場合には、レコードが更新されたことによって、更新されたレコードが属するグループに属する全てのレコードが、個人が識別される可能性が高いレコードではなくなったため、更新制御部20fは、次のような処理を行う。すなわち、更新制御部20fは、得られたグループID、または、新規のグループIDに対応する全てのレコード管理IDをグループID紐付TBL19cから取得する。そして、更新制御部20fは、取得した全てのレコード管理IDのうち、更新データに含まれるレコード管理ID以外のレコード管理IDをNGIDTBL19bから削除する。図39は、実施例2に係る情報処理装置が実行する処理の一例を説明するための図である。例えば、更新制御部20fは、図38に示すグループID紐付TBL19cから、グループID「grp4」に対応する全てのレコード管理ID「aaa01」、「aaa10」を取得する。そして、更新制御部20fは、レコード管理ID「aaa01」、「aaa10」のうち、更新データに含まれるレコード管理ID「aaa01」以外のレコード管理ID「aaa10」をNGIDTBL19bから削除する。この結果、NGIDTBL19bは、例えば、図36に示す登録内容から、図39に示す登録内容に更新される。
そして、更新制御部20fは、配布済データTBL8fのレコードの中から、更新制御部20fが新たに取得したレコード管理IDのうち更新データに含まれるレコード管理ID以外のレコード管理IDを有するレコードを検索する。例えば、更新制御部20fは、新たに取得したレコード管理ID「aaa01」、「aaa10」のうち、更新データに含まれるレコード管理ID「aaa01」以外のレコード管理ID「aaa10」を有するレコードを検索する。続いて、更新制御部20fは、検索の結果得られたレコードの検証対象の項目の登録内容が、新たに匿名化したレコードの検証対象の項目の登録内容となるように、配布済データTBL8fを更新する。例えば、更新制御部20fは、配布済データTBL8fのレコード管理ID「aaa01」を有するレコードの登録内容「男」、「null」、「null」、「null」を、次のように更新する。すなわち、更新制御部20fは、匿名化したレコードの登録内容「男」、「30〜39」、「160〜169」、「60〜69」に更新する。
続いて、更新制御部20fは、配布済データTBL8fにおいて新たに更新されたレコード(匿名化されたレコード)を取得し、取得したレコードがサーバ4およびサーバ5に送信されるように、取得したレコードを通信部7に出力する。これにより、例えば、図20の例に示すレコード管理ID「aaa10」のレコードがサーバ4およびサーバ5に送信される。図20の例に示すレコード管理ID「aaa10」のレコードを受信したサーバ4およびサーバ5のそれぞれは、DB4a、DB5aのそれぞれに蓄積されたレコードのうち、レコード管理ID「aaa10」のレコードを特定する。そして、サーバ4およびサーバ5のそれぞれは、特定したレコードを、受信したレコードで更新する。これにより、新たに個人が識別される可能性が低くなったサーバ4およびサーバ5のレコードは、統計処理などの各種の処理に用いられることが可能となるように更新される。このようにして、更新制御部20fは、重複数が「N」である場合には、新たに個人が識別される可能性が低くなったサーバ4およびサーバ5のレコードを、統計処理などの各種の処理に用いられることが可能となるように更新する。
また、更新制御部20fは、重複数が「N」であるか否かの判定結果に関わらず、重複数が「N」以上である場合には、次の処理を行う。すなわち、更新制御部20fは、配布済データTBL8fのレコードのうち、更新制御部20fが新たに匿名化したレコードのレコード管理IDを有するレコードを特定する。そして、更新制御部20fは、特定したレコードの検証対象の項目の登録内容が、新たに匿名化したレコードの検証対象の項目の登録内容となるように、配布済データTBL8fを更新する。例えば、更新制御部20fは、図20に示すデータが配布済データTBL8fに登録されている場合に、図18の例に示す匿名化されたレコードを生成した場合には、次のような処理を行う。すなわち、更新制御部20fは、配布済データTBL8fのレコード管理ID「aaa01」を有するレコードの年齢の登録内容を、図21に示すように、「30〜39」に更新する。
続いて、更新制御部20fは、配布済データTBL8fにおいて新たに更新されたレコードを取得し、取得したレコードがサーバ4およびサーバ5に送信されるように、取得したレコードを通信部7に出力する。これにより、例えば、図21の例に示すレコード管理ID「aaa01」のレコードがサーバ4およびサーバ5に送信される。図21の例に示すレコード管理ID「aaa01」のレコードを受信したサーバ4およびサーバ5のそれぞれは、DB4a、DB5aのそれぞれに蓄積されたレコードのうち、レコード管理ID「aaa01」のレコードを特定する。そして、サーバ4およびサーバ5のそれぞれは、特定したレコードを、受信したレコードで更新する。このようにして、更新制御部20fは、サーバ4およびサーバ5のレコードを更新データに基づいて更新することができる。
図32の説明に戻り、削除制御部20gは、削除データを受信した場合に、サーバ4およびサーバ5に蓄積されたデータのうち、新たに識別される可能性が高くなったレコードが更新されるように制御する。
一態様としては、削除制御部20gは、サーバ2およびサーバ3から送信された削除データを受信すると、削除データに含まれる個人IDを取得し、取得した個人IDに対応するレコード管理IDをIDTBL8gから取得する。例えば、図5の例に示す削除データを受信した場合には、削除制御部20gは、削除データに含まれる個人ID「1098」を取得し、図12の例に示すIDTBL8gから、個人ID「1098」に対応するレコード管理ID「aaa01」を取得する。
続いて、削除制御部20gは、取得したレコード管理IDに対応するグループIDをグループID紐付TBL19cから取得する。例えば、削除制御部20gは、図35に示すグループID紐付TBL19cから、レコード管理ID「aaa01」に対応するグループID「grp5」を取得する。次に、削除制御部20gは、取得したレコード管理IDを含むレコードをグループID紐付TBL19cから削除する。例えば、削除制御部20gは、図35に示すグループID紐付TBL19cから、レコード管理ID「aaa01」を含むレコードを削除する。この結果、グループID紐付TBL19cの登録内容は、図37に示す登録内容となる。そして、削除制御部20gは、グループID紐付TBL19cを参照し、取得したグループIDの個数を計数することにより、取得したグループIDが示すグループに属するレコードの重複数を算出する。例えば、削除制御部20gは、グループID「grp5」を取得し、図37に示すグループID紐付TBL19cを参照した場合には、グループID「grp5」の個数「1」を算出する。すなわち、削除制御部20gは、グループID「grp5」が示すグループに属するレコードの重複数「1」を算出する。なお、重複数が「N−1」である場合には、削除制御部20gが取得したグループIDに属するレコードが、個人が識別される可能性が高いレコードとなったことを意味する。
その後、削除制御部20gは、定義データ8cに登録された重複数の閾値「N」を参照し、算出した重複数が、重複数の閾値「N」を1つデクリメントした値「N−1」であるか否かを判定する。ここで、N=2の場合に、例えば、削除制御部20gは、取得したグループIDに属するレコードの重複数「1」を算出したときには、算出した重複数「1」が、「N−1」であると判定する。
算出した重複数が「N−1」である場合には、削除制御部20gは、個人が識別される可能性が低いレコードとなるようにサーバ4およびサーバ5に蓄積された対応するレコードを更新するように制御する。例えば、削除制御部20gは、取得したグループIDに対応するレコード管理IDを、グループID紐付TBL19cから取得する。具体例を挙げて説明すると、削除制御部20gは、図37に示すグループID紐付TBL19cから、グループID「grp5」に対応するレコード管理ID「aaa06」を取得する。そして、削除制御部20gは、取得したレコード管理IDをNGIDTBL19bに登録する。例えば、削除制御部20gは、取得したレコード管理ID「aaa06」を図34に示すNGIDTBL19bに登録する。この結果、NGIDTBL19bの登録内容は、図36に示す登録内容となる。
そして、削除制御部20gは、取得したグループIDに対応する検証対象の項目の登録内容を、グループIDTBL19aから取得する。例えば、削除制御部20gは、図33に示すグループIDTBL19aから、グループID「grp5」に対応する「男」、「20〜29」、「160〜169」、「60〜69」の登録内容を取得する。そして、削除制御部20gは、取得した登録内容と、新たに取得したレコード管理IDとを含むレコードを生成する。例えば、削除制御部20gは、「男」、「20〜29」、「160〜169」、「60〜69」の登録内容と、新たに取得したレコード管理ID「aaa06」とを含むレコードを生成する。そして、削除制御部20gは、定義データ8cを参照し、生成したレコードに対して、定義データ8cが示す匿名化する項目の登録内容を匿名化する。例えば、削除制御部20gは、生成したレコードに対して、匿名化する項目の登録内容を破棄するように匿名化を行う。具体例を挙げて説明する。削除制御部20gは、レコードの「年齢」、「身長」および「体重」の項目の登録内容を破棄して、各項目に「null」を登録する匿名化を行う。例えば、削除制御部20gは、「男」、「null」、「null」、「null」、「aaa06」の登録内容が各項目に登録された、匿名化されたレコードを生成する。このようにして、削除制御部20gは、生成したレコードの匿名化を行う。なお、削除制御部20gに代えて匿名化部9cが、生成したレコードの匿名化を行うこともできる。
そして、削除制御部20gは、配布済データTBL8fのレコードの中から、削除制御部20gが新たに取得したレコード管理IDを有するレコードを特定する。そして、削除制御部20gは、特定したレコードの検証対象の項目の登録内容が、匿名化されたレコードの検証対象の項目の登録内容となるように、配布済データTBL8fを更新する。例えば、削除制御部20gは、図6に示すデータが配布済データTBL8fに登録されている場合には、レコード管理ID「aaa06」を有するレコードの登録内容を、図15に示すように「男」、「null」、「null」、「null」に更新する。
続いて、削除制御部20gは、配布済データTBL8fにおいて新たに更新されたレコード(匿名化されたレコード)を取得し、取得したレコードがサーバ4およびサーバ5に送信されるように、取得したレコードを通信部7に出力する。これにより、例えば、図15の例に示すレコード管理ID「aaa06」のレコードがサーバ4およびサーバ5に送信される。図15の例に示すレコード管理ID「aaa06」のレコードを受信したサーバ4およびサーバ5のそれぞれは、DB4a、DB5aのそれぞれに蓄積されたレコードのうち、レコード管理ID「aaa06」のレコードを特定する。そして、サーバ4およびサーバ5のそれぞれは、特定したレコードを、受信したレコードで更新する。これにより、新たに個人が識別される可能性が高くなったサーバ4およびサーバ5のレコードは、個人が識別される可能性が低くなるように更新される。このようにして、削除制御部20gは、算出した重複数が「N−1」である場合には、新たに個人が識別される可能性が高くなったサーバ4およびサーバ5のレコードを、個人が識別される可能性が低くなるように更新する。
また、削除制御部20gは、取得した重複数の値に関わらず、下記で説明するような処理を行う。例えば、削除制御部20gは、配布済データTBL8fのレコードのうち、削除データに含まれる個人IDに対応するレコード管理IDを有するレコードを特定し、特定したレコードを削除する。
続いて、削除制御部20gは、削除データに含まれる個人IDに対応するレコード管理IDを含むレコードを削除する指示をサーバ4およびサーバ5に送信すべく、かかる指示を通信部7に送信する。すなわち、削除制御部20gは、削除データが示すレコードを削除する指示を通信部7に送信する。これにより、かかる指示がサーバ4およびサーバ5に送信される。指示を受信したサーバ4およびサーバ5のそれぞれは、DB4a、DB5aのそれぞれに蓄積されたレコードのうち、指示が示すレコード管理IDを含むレコードを特定し、特定したレコードを削除する。
制御部20は、ASICなどの集積回路である。また、制御部20は、FPGAであってもよい。また、制御部20は、CPUなどの電子回路であってもよい。さらに、制御部20は、MPUであってもよい。
次に、本実施例に係る情報処理装置が実行する処理の流れを説明する。図40は、実施例2に係る制御処理の手順を示すフローチャートである。
図40に示すように、収集部9aは、ネットワーク90を介してサーバ2およびサーバ3から送信される各種のデータを収集する(S101)。
続いて、判別部9bは、収集部9aにより収集されたデータの種類が、匿名化の対象のデータであるか否かを判定する(S102)。匿名化の対象のデータである場合(S102肯定)には、判別部9bは、匿名化の対象のデータに含まれる個人IDを取得し、取得した個人IDに対応するレコード管理IDを生成する。そして、判別部9bは、取得した個人IDを破棄し、匿名化の対象のデータにレコード管理IDを登録して、匿名化の対象のデータを更新する(S103)。
そして、判別部9bは、IDTBL8gに、取得した個人IDと、生成したレコード管理IDとを対応付けて登録して、IDTBL8gを更新する(S104)。
続いて、匿名化部9cは、定義データ8cを参照し、更新された匿名化の対象のデータの各項目の登録内容の中から、定義データ8cが示す破棄する項目の登録内容を破棄する。そして、匿名化部9cは、更新された匿名化の対象のデータの各項目の登録内容のうち破棄されなかった項目の登録内容の中から、定義データ8cが示す匿名化する項目の登録内容を匿名化する。そして、匿名化部9cは、匿名化の結果得られた匿名化データ8bを記憶部8に格納する(S105)。そして、検証部20dは、データ検証処理を実行する(S1106)。
図41は、実施例2に係るデータ検証処理の手順を示すフローチャートである。図41に示すように、検証部20dは、定義データ8cに登録された重複数の閾値「N」を参照する(S1201)。そして、検証部20dは、定義データ8cが示す検証する項目を参照する(S1202)。
続いて、検証部20dは、新たに生成され記憶部8に格納された匿名化データ8bを記憶部8から取得し、取得した匿名化データ8bの未処理のレコードを1つ選択する(S1203)。そして、検証部20dは、選択したレコードの各項目の登録内容のうち、検証する項目の登録内容の組み合わせを取得する(S1204)。
その後、検証部20dは、取得した登録内容の組み合わせに対応するグループIDがあるか、グループIDTBL19aを検索する(S1205)。検索の結果、取得した登録内容の組み合わせに対応するグループIDが得られた場合(S1205肯定)には、検証部20dは、次のような処理を行う。すなわち、検証部20dは、得られたグループIDと、選択したレコードに含まれるレコード管理IDとを対応付けて、グループID紐付TBL19cに登録して、グループID紐付TBL19cを更新する(S1208)。
一方、検索の結果、取得した登録内容の組み合わせに対応するグループIDが得られなかった場合(S1205否定)には、検証部20dは、新規のグループIDを生成する(S1206)。そして、検証部20dは、生成した新規のグループIDと、取得した登録内容の組み合わせとを対応付けて、グループIDTBL19aに登録する(S1207)。そして、検証部20dは、生成した新規のグループIDと、選択したレコードに含まれるレコード管理IDとを対応付けてグループID紐付TBL19cに登録し、グループID紐付TBL19cを更新する(S1208)。
続いて、検証部20dは、更新後のグループID紐付TBL19cに登録されたグループIDであって、検証部20dが得たグループID、または、生成した新規のグループIDの個数を計数して、選択したレコードの重複数を算出する(S1209)。
そして、検証部20dは、選択したレコードの重複数が、参照した重複数の閾値「N」以上であるか否かを判定する(S1210)。
重複数が「N」未満である場合(S1210否定)には、検証部20dは、選択したレコードに含まれるレコード管理IDをNGIDTBL19bに登録する(S1211)。そして、検証部20dは、取得した匿名化データ8bのレコードのうち、未処理のレコードがあるか否かを判定する(S1212)。未処理のレコードがある場合(S1212肯定)には、検証部20dは、S1203に戻り、未処理のレコードを1つ選択して、上述した処理を再び行う。一方、未処理のレコードがない場合(S1212否定)には、検証部20dは、処理結果を内部メモリに格納し、リターンする。
一方、重複数が「N」以上である場合(S1210肯定)には、検証部20dは、選択したレコードの重複数が、参照した重複数の閾値「N」であるか否かを判定する(S1213)。重複数が「N」でない場合(S1213否定)には、検証部20dは、S1215に進む。一方、重複数が「N」である場合(S1213肯定)には、検証部20dは、次の処理を行う。すなわち、検証部20dは、得られたグループID、または、新規のグループIDに対応する全てのレコード管理IDをグループID紐付TBL19cから取得し、取得した全てのレコード管理IDをNGIDTBL19bから削除する(S1214)。
そして、検証部20dは、選択したレコードを、個人が識別される可能性が低い「OK」に分類し(S1215)、S1212に進む。
図40の説明に戻り、配布制御部20eは、データ配布処理を実行する(S1107)。図42は、実施例2に係るデータ配布処理の手順を示すフローチャートである。図42に示すように、配布制御部20eは、匿名化部9cにより新たに記憶部8に格納された匿名化データ8aのレコードのレコード管理IDの中に、検証部20dにより新たにNGIDTBL19bに登録されたレコード管理IDがあるか否かを判定する(S1301)。匿名化データ8aのレコードのレコード管理IDの中に、NGIDTBL19bに登録されたレコード管理IDがない場合(S1301否定)には、配布制御部20eは、S1306へ進む。一方、匿名化データ8aのレコードのレコード管理IDの中に、NGIDTBL19bに登録されたレコード管理IDがない場合(S1301肯定)には、配布制御部20eは、次のような処理を行う。すなわち、配布制御部20eは、定義データ8cが示す匿名化する項目を参照する(S1302)。
そして、配布制御部20eは、新たにNGIDTBL19bに登録されたレコード管理IDのうち、未処理のレコード管理IDを1つ選択する(S1303)。そして、配布制御部20eは、選択したレコード管理IDを含む匿名化データ8bのレコードを取得し、取得したレコードの各項目の登録内容の中から、定義データ8cが示す匿名化する項目の登録内容を匿名化する(S1304)。そして、配布制御部20eは、新たにNGIDTBL19bに登録されたレコード管理IDのうち、未処理のレコード管理IDがあるか否かを判定する(S1305)。未処理のレコード管理IDがある場合(S1305肯定)には、配布制御部20eは、S1303に戻り、未処理のレコード管理IDを1つ選択し、上述した処理を再び行う。
一方、未処理のレコード管理IDがない場合(S1305否定)には、配布制御部20eは、次のような処理を行う。すなわち、配布制御部20eは、匿名化部9cにより「OK」と分類されたレコードがある場合には、かかるレコードを配布済データTBL8fに格納する。これに加えて、配布制御部20eは、2回目の匿名化が行われたレコードがある場合には、2回目の匿名化のレコードも配布済データTBL8fに格納する(S1306)。続いて、配布制御部20eは、新たに配布済データTBL8fに格納したデータを取得し、取得したデータがサーバ4およびサーバ5に送信されるように、取得したデータを通信部7に出力する(S1307)。そして、配布制御部20eは、処理結果を内部メモリに格納し、リターンする。
図40の説明に戻り、匿名化の対象のデータでない場合(S102否定)には、判別部9bは、収集部9aにより収集されたデータの種類が、更新データであるか否かを判定する(S108)。更新データである場合(S108肯定)には、更新制御部20fは、更新制御処理を実行し(S1109)、処理を終了する。
図43は、実施例2に係る更新制御処理の手順を示すフローチャートである。図43に示すように、更新制御部20fは、第1の重複数取得処理を実行する(S1401)。
図44は、実施例2に係る第1の重複数取得処理の手順を示すフローチャートである。図44に示すように、更新制御部20fは、更新データに含まれる個人IDを取得し、取得した個人IDに対応するレコード管理IDをIDTBL8gから取得する(S1501)。
続いて、更新制御部20fは、取得したレコード管理IDに対応するグループIDをグループID紐付TBL19cから取得する(S1502)。次に、更新制御部20fは、取得したレコード管理IDを含むレコードをグループID紐付TBL19cから削除する(S1503)。そして、更新制御部20fは、グループID紐付TBL19cを参照し、取得したグループIDの個数を計数することにより、取得したグループIDが示すグループに属するレコードの重複数を算出し(S1504)、処理結果を内部メモリに格納し、リターンする。
図43の説明に戻り、更新制御部20fは、定義データ8cに登録された重複数の閾値「N」を参照し、算出した重複数が、重複数の閾値「N」を1つデクリメントした値「N−1」であるか否かを判定する(S1402)。
取得した重複数が「N−1」でない場合(S1402否定)には、更新制御部20fは、S1404へ進む。一方、取得した重複数が「N−1」である場合(S1402肯定)には、更新制御部20fは、第1の匿名化依頼処理を実行する(S1403)。
図45は、実施例2に係る第1の匿名化依頼処理の手順を示すフローチャートである。図45に示すように、更新制御部20fは、取得したグループIDに対応するレコード管理IDを、グループID紐付TBL19cから取得する(S1601)。そして、更新制御部20fは、取得したレコード管理IDをNGIDTBL19bに登録する(S1602)。
そして、更新制御部20fは、取得したグループIDに対応する検証対象の項目の登録内容を、グループIDTBL19aから取得し、取得した登録内容と、新たに取得したレコード管理IDとを含むレコードを生成する。続いて、更新制御部20fは、定義データ8cを参照し、生成したレコードに対して、定義データ8cが示す匿名化する項目の登録内容を匿名化する(S1603)。
そして、更新制御部20fは、配布済データTBL8fのレコードの中から、更新制御部20fが新たに取得したレコード管理IDを有するレコードを特定する。続いて、更新制御部20fは、特定したレコードの検証対象の項目の登録内容が、匿名化されたレコードの検証対象の項目の登録内容となるように、配布済データTBL8fを更新する(S1604)。
その後、更新制御部20fは、配布済データTBL8fにおいて新たに更新されたレコード(匿名化されたレコード)を取得し、取得したレコードがサーバ4およびサーバ5に送信されるように、取得したレコードを通信部7に出力する(S1605)。そして、更新制御部20fは、処理結果を内部メモリに格納し、リターンする。
図43の説明に戻り、更新制御部20fは、更新依頼処理を実行し(S1404)、処理結果を内部メモリに格納し、リターンする。
図46は、実施例2に係る更新依頼処理の手順を示すフローチャートである。図46に示すように、更新制御部20fは、更新データに含まれる個人IDに対応するレコード管理IDと、取得したグループIDに対応する検証対象の項目の登録内容とを含むレコードを生成する。そして、更新制御部20fは、生成したレコードの登録内容を、更新データが示す更新内容で更新する(S1701)。
そして、更新制御部20fは、定義データ8cを参照し、更新されたレコードの登録内容のうち、定義データ8cが示す匿名化する項目の登録内容を匿名化する(S1702)。続いて、更新制御部20fは、匿名化したレコードの各項目の登録内容のうち、検証する項目の登録内容の組み合わせを取得する(S1703)。
そして、更新制御部20fは、取得した登録内容の組み合わせに対応するグループIDがあるか、グループIDTBL19aを検索する(S1704)。検索の結果、取得した登録内容の組み合わせに対応するグループIDが得られた場合(S1704肯定)には、更新制御部20fは、次のような処理を行う。すなわち、更新制御部20fは、得られたグループIDと、匿名化したレコードに含まれるレコード管理IDとを対応付けて、グループID紐付TBL19cに登録する(S1707)。そして、更新制御部20fは、S1708に進む。
一方、検索の結果、取得した登録内容の組み合わせに対応するグループIDが得られなかった場合(S1704否定)には、更新制御部20fは、新規のグループIDを生成する(S1705)。そして、更新制御部20fは、生成した新規のグループIDと、取得した登録内容の組み合わせとを対応付けて、グループIDTBL19aに登録する(S1706)。そして、更新制御部20fは、生成した新規のグループIDと、選択したレコードに含まれるレコード管理IDとを対応付けてグループID紐付TBL19cに登録する(S1707)。
そして、更新制御部20fは、更新後のグループID紐付TBL19cに登録されたグループIDであって、更新制御部20fが得たグループID、または、生成した新規のグループIDの個数を計数して、重複数を算出する(S1708)。
そして、更新制御部20fは、得られたグループID、または、生成した新規のグループIDが示すグループに属するレコードの重複数が、参照した重複数の閾値「N」以上であるか否かを判定する(S1709)。
重複数が「N」未満である場合(S1709否定)には、更新制御部20fは、更新データに含まれる個人IDに対応するレコード管理IDをNGIDTBL19bに登録する(S1710)。
そして、更新制御部20fは、定義データ8cを参照し、新たに匿名化されたレコードに対して、定義データ8cが示す匿名化する項目の登録内容を匿名化する(S1711)。
そして、更新制御部20fは、配布済データTBL8fのレコードの中から、更新データに含まれる個人IDに対応するレコード管理IDを有するレコードを特定する。そして、更新制御部20fは、特定したレコードの検証対象の項目の登録内容が、匿名化されたレコードの検証対象の項目の登録内容となるように、配布済データTBL8fを更新する(S1712)。
続いて、更新制御部20fは、配布済データTBL8fにおいて新たに更新されたレコード(匿名化されたレコード)を取得し、取得したレコードがサーバ4およびサーバ5に送信されるように、取得したレコードを通信部7に出力する(S1713)。そして、更新制御部20fは、処理結果を内部メモリに格納し、リターンする。
一方、重複数が「N」以上である場合(S1709肯定)には、更新制御部20fは、次のような処理を行う。すなわち、更新制御部20fは、得られたグループID、または、生成した新規のグループIDが示すグループに属するレコードの重複数が、参照した重複数の閾値「N」であるか否かを判定する(S1714)。重複数が「N」である場合(S1714肯定)には、更新制御部20fは、得られたグループID、または、新規のグループIDに対応する全てのレコード管理IDをグループID紐付TBL19cから取得する(S1715)。そして、更新制御部20fは、取得した全てのレコード管理IDのうち、更新データに含まれるレコード管理ID以外のレコード管理IDをNGIDTBL19bから削除する(S1716)。
そして、更新制御部20fは、配布済データTBL8fのレコードの中から、更新制御部20fが新たに取得したレコード管理IDのうち更新データに含まれるレコード管理ID以外のレコード管理IDを有するレコードを検索する。続いて、更新制御部20fは、検索の結果得られたレコードの検証対象の項目の登録内容が、新たに匿名化したレコードの検証対象の項目の登録内容となるように、配布済データTBL8fを更新する(S1717)。
続いて、更新制御部20fは、配布済データTBL8fにおいて新たに更新されたレコード(匿名化されたレコード)を取得し、取得したレコードがサーバ4およびサーバ5に送信されるように、取得したレコードを通信部7に出力する(S1718)。
そして、更新制御部20fは、配布済データTBL8fのレコードのうち、更新制御部20fが新たに匿名化したレコードのレコード管理IDを有するレコードを特定する。そして、更新制御部20fは、特定したレコードの検証対象の項目の登録内容が、新たに匿名化したレコードの検証対象の項目の登録内容となるように、配布済データTBL8fを更新する(S1719)。
続いて、更新制御部20fは、配布済データTBL8fにおいて新たに更新されたレコードを取得し、取得したレコードがサーバ4およびサーバ5に送信されるように、取得したレコードを通信部7に出力する(S1720)。そして、更新制御部20fは、処理結果を内部メモリに格納し、リターンする。
図40の説明に戻り、更新データでない場合(S108否定)には、判別部9bは、収集部9aにより収集されたデータの種類が、削除データであるか否かを判定する(S110)。削除データでない場合(S110否定)には、処理を終了する。一方、削除データである場合(S110肯定)には、削除制御部20gは、削除制御処理を実行し(S1111)、処理を終了する。
図47は、実施例2に係る削除制御処理の手順を示すフローチャートである。図47に示すように、削除制御部20gは、第2の重複数取得処理を実行する(S1801)。
図48は、実施例2に係る第2の重複数取得処理の手順を示すフローチャートである。図48に示すように、削除制御部20gは、削除データに含まれる個人IDを取得し、取得した個人IDに対応するレコード管理IDをIDTBL8gから取得する(S1901)。
続いて、削除制御部20gは、取得したレコード管理IDに対応するグループIDをグループID紐付TBL19cから取得する(S1902)。次に、削除制御部20gは、取得したレコード管理IDを含むレコードをグループID紐付TBL19cから削除する(S1903)。そして、削除制御部20gは、グループID紐付TBL19cを参照し、取得したグループIDの個数を計数することにより、取得したグループIDが示すグループに属するレコードの重複数を算出する(S1904)。そして、削除制御部20gは、処理結果を内部メモリに格納し、リターンする。
図47の説明に戻り、削除制御部20gは、定義データ8cに登録された重複数の閾値「N」を参照し、算出した重複数が、重複数の閾値「N」を1つデクリメントした値「N−1」であるか否かを判定する(S1802)。取得した重複数が、「N−1」でない場合(S1802否定)には、S1804へ進む。
一方、取得した重複数が「N−1」である場合(S1802肯定)には、削除制御部20gは、第2の匿名化依頼処理を実行する(S1803)。図49は、実施例2に係る第2の匿名化依頼処理の手順を示すフローチャートである。図49に示すように、削除制御部20gは、取得したグループIDに対応するレコード管理IDを、グループID紐付TBL19cから取得する(S2001)。そして、削除制御部20gは、取得したレコード管理IDをNGIDTBL19bに登録する(S2002)。
そして、削除制御部20gは、取得したグループIDに対応する検証対象の項目の登録内容を、グループIDTBL19aから取得し、取得した登録内容と、新たに取得したレコード管理IDとを含むレコードを生成する。そして、削除制御部20gは、定義データ8cを参照し、生成したレコードに対して、定義データ8cが示す匿名化する項目の登録内容を匿名化する(S2003)。
そして、削除制御部20gは、配布済データTBL8fのレコードの中から、削除制御部20gが新たに取得したレコード管理IDを有するレコードを特定する。そして、削除制御部20gは、特定したレコードの検証対象の項目の登録内容が、匿名化されたレコードの検証対象の項目の登録内容となるように、配布済データTBL8fを更新する(S2004)。
続いて、削除制御部20gは、配布済データTBL8fにおいて新たに更新されたレコード(匿名化されたレコード)を取得し、取得したレコードがサーバ4およびサーバ5に送信されるように、取得したレコードを通信部7に出力する(S2005)。そして、削除制御部20gは、処理結果を内部メモリに格納し、リターンする。
図47の説明に戻り、削除制御部20gは、配布済データTBL8fのレコードのうち、削除データに含まれる個人IDに対応するレコード管理IDを有するレコードを特定し、特定したレコードを削除する(S1804)。
続いて、削除制御部20gは、削除データに含まれる個人IDに対応するレコード管理IDを含むレコードを削除する指示をサーバ4およびサーバ5に送信すべく、かかる指示を通信部7に送信する(S1805)。そして、削除制御部20gは、処理結果を内部メモリに格納し、リターンする。
上述してきたように、本実施例の情報処理装置18は、収集したデータに含まれるレコードについて、所定の関係を持つレコード、例えば、検証する項目の登録内容の組み合わせが一致するレコードの個数を計数する。そして、情報処理装置18は、計数した個数がN個以上である場合には、所定の関係を持つ、複数のレコードをサーバ4およびサーバ5に出力する。そして、新たにデータを収集した場合には、情報処理装置18は、前回収集したデータ、および、新たに収集したデータに含まれるレコードについて、所定の関係を持つレコードの個数を計数する。続いて、情報処理装置18は、前回収集したデータ、および、新たに収集したデータに含まれるレコードについて計数した所定の関係を持つレコードの個数が、N個以上である場合には、次の処理を行う。すなわち、情報処理装置18は、所定の関係を持つ複数のレコードのうち、新たに収集したデータに含まれるレコードをサーバ4およびサーバ5に出力する。したがって、情報処理装置18によれば、収集したデータに含まれるレコードのうち、「レコードの一致」というレコード間の所定の条件を満たさないと判定されるレコードの量を抑制することができる。この結果、より多くのレコードが、ターゲットシステムのサーバ4およびサーバ5において統計処理などの所定の処理を行う際に有効に用いられるようになる。
また、情報処理装置18は、収集したデータに含まれるレコードについて計数した所定の関係を持つレコードの個数がN個未満である場合には、次の処理を行う。すなわち、情報処理装置18は、所定の関係を持つ複数のレコードに対して、匿名化する項目の登録内容を破棄する匿名化を行い、匿名化された複数のレコードをサーバ4およびサーバ5に出力する。そして、新たにデータを収集した場合には、情報処理装置18は、前回収集したデータおよび新たに収集したデータに含まれるレコードについて計数した所定の関係を持つレコードの個数が、N個未満であるときには、次の処理を行う。すなわち、情報処理装置18は、所定の関係を持つ複数のレコードのうち、新たに収集したデータに含まれるレコードに対して、匿名化する項目の登録内容を破棄する匿名化を行い、匿名化されたレコードをサーバ4およびサーバ5に出力する。したがって、情報処理装置18によれば、所定の関係を持つレコードの個数がN個未満であるレコードについては、個人が識別される可能性が低くなるように匿名化した上で、サーバ4およびサーバ5に送信することができる。
また、情報処理装置18は、収集したデータに含まれる所定の関係を持つレコードの組み合わせごとに異なるグループIDを、収集したデータに含まれるレコードのそれぞれに対応付けてグループIDTBL19aやグループID紐付TBL19cに登録する。そして、情報処理装置18は、グループID紐付TBL19cに登録されたグループIDを計数することで、収集したデータに含まれるレコードについて、所定の関係を持つレコードの個数を計数する。また、情報処理装置18は、新たにデータを収集した場合に、前回収集したデータおよび新たに収集したデータに含まれるレコードについて、所定の関係を持つレコードの個数を計数する際に、次のような処理を行う。すなわち、情報処理装置18は、グループIDTBL19aに登録されたレコードおよび新たに収集したデータに含まれるレコードと所定の関係を持つレコードの組み合わせごとに異なるグループIDを用いて、次のような処理を行う。すなわち、情報処理装置18は、かかるグループIDを、新たに収集したデータに含まれるレコードのそれぞれに対応付けてグループIDTBL19aやグループID紐付TBL19cに登録する。そして、情報処理装置18は、グループID紐付TBL19cに登録されたグループIDを計数することで、前回収集したデータおよび新たに収集したデータに含まれるレコードについて、所定の関係を持つデータの個数を計数する。
また、情報処理装置18は、前回収集したデータまたは新たに収集したデータに含まれる更新対象のレコードが更新された場合には、更新される前の更新対象のレコードについて所定の関係を持つレコードの個数を計数する。そして、情報処理装置18は、更新される前の更新対象のレコードについて計数した所定の関係を持つレコードの個数がN−1である場合には、次のような処理を行う。すなわち、情報処理装置18は、更新される前の更新対象のレコードと所定の関係を持つレコードについて、登録内容を破棄するなどの匿名化を行う指示をサーバ4およびサーバ5に出力する。したがって、情報処理装置18によれば、レコードの更新によって、サーバ4およびサーバ5に蓄積されたレコードであって、個人を識別する可能性が高くなったレコードを、個人を識別する可能性が低くなるように更新させることができる。
また、情報処理装置18は、更新された後の更新対象のレコードについて所定の関係を持つレコードの個数を計数する。そして、情報処理装置18は、更新された後の更新対象のレコードについて計数した所定の関係を持つデータの個数がNである場合には、更新された後のレコードと所定の関係を持つレコードについて匿名化を解除する指示をサーバ4またはサーバ5に出力する。したがって、情報処理装置18によれば、レコードの更新によって、サーバ4およびサーバ5に蓄積されたレコードであって、個人を識別する可能性が低くなったレコードを、統計処理などの各種の処理において用いられるように、更新させることができる。
また、情報処理装置18は、更新された後の更新対象のレコードについて計数した所定の関係を持つレコードの個数がN以上である場合には、更新された後の更新対象のレコードをサーバ4およびサーバ5に出力する。また、情報処理装置18は、更新された後の更新対象のレコードについて計数した所定の関係を持つレコードの個数がN未満である場合には、更新された後の更新対象のレコードを匿名化する。そして、情報処理装置18は、匿名化されたレコードをサーバ4およびサーバ5に出力する。
また、情報処理装置18は、前回収集したデータまたは新たに収集したデータに含まれるレコードが削除された場合には、削除されたレコードについて所定の関係を持つレコードの個数を計数する。そして、情報処理装置18は、削除されたレコードについて計数した所定の関係を持つレコードの個数がN−1である場合には、削除されたデータと所定の関係を持つレコードについて匿名化する指示をサーバ4およびサーバ5に出力する。したがって、情報処理装置18によれば、レコードの削除によって、サーバ4およびサーバ5に蓄積されたレコードであって、個人を識別する可能性が高くなったレコードを、個人を識別する可能性が低くなるように更新させることができる。
また、情報処理装置18は、グループIDと対応付けてレコードの検証する項目の登録内容を記憶する。このため、情報処理装置18は、記憶されたグループIDおよび登録内容を用いてサーバ4またはサーバ5から更新対象のレコードや削除対象のレコードを取得することなく、サーバ4またはサーバ5のレコードの更新や削除を制御することができる。
さて、これまで開示のシステムに関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
例えば、上述した更新制御処理、削除制御処理などの各種の処理は、クライアント端末10からユーザによる処理を実行する指示が情報処理装置6、18に入力された場合に実行することもできる。
また、実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。また、本実施例において説明した各処理のうち、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理を任意に細かくわけたり、あるいはまとめたりすることができる。また、ステップを省略することもできる。
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理の順番を変更できる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
[制御プログラム]
また、上記の実施例で説明した情報処理装置6、18の各種の処理は、あらかじめ用意された制御プログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図50を用いて、上記の各実施例で説明した情報処理装置6、18と同様の機能を有する制御プログラムを実行するコンピュータの一例を説明する。図50は、制御プログラムを実行するコンピュータを示す図である。
図50に示すように、コンピュータ300は、CPU310、ROM320、Hard Disk Drive(HDD)330、RAM340、通信装置350を有する。CPU310、ROM320、HDD330、RAM340、通信装置350は、バス360を介して接続される。
ROM320は、OSなどの基本プログラムを記憶する。また、HDD330は、上記の各実施例で示す収集部9a、判別部9b、匿名化部9c、検証部9d、20d、配布制御部9e、20e、更新制御部9f、20f、削除制御部9g、20g、管理部9hと同様の機能を発揮する制御プログラム330aを記憶する。なお、制御プログラム330aについては、適宜分離しても良い。また、HDD330には、収集データ、匿名化データ、定義データ、重複数TBL、NGデータTBL、配布済データTBL、IDTBL、グループIDTBL、グループID紐付TBL、NGIDTBLが設けられる。収集データ、匿名化データ、定義データ、重複数TBL、NGデータTBL、配布済データTBLは、上述した収集データ8a、匿名化データ8b、定義データ8c、重複数TBL8d、NGデータTBL8e、配布済データTBL8fに対応する。また、IDTBL、グループIDTBL、グループID紐付TBL、NGIDTBLは、上述したIDTBL8g、グループIDTBL19a、グループID紐付TBL19c、NGIDTBL19bに対応する。
そして、CPU310が、制御プログラム330aをHDD330から読み出して実行する。
そして、CPU310は、収集データ、匿名化データ、定義データ、重複数TBL、NGデータTBL、配布済データTBL、IDTBL、グループIDTBL、グループID紐付TBL、NGIDTBLを読み出してRAM340に格納する。さらに、CPU310は、RAM340に格納された各種のデータを用いて、制御プログラム330aを実行する。なお、RAM340に格納されるデータは、常に全てのデータがRAM330に格納されなくともよい。処理に用いられるデータがRAM340に格納されれば良い。
なお、上記した制御プログラム330aについては、必ずしも最初からHDD330に記憶させておく必要はない。
例えば、コンピュータ300に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に制御プログラム330aを記憶させておく。そして、コンピュータ300がこれらから制御プログラム330aを読み出して実行するようにしてもよい。
さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータ300に接続される「他のコンピュータ(またはサーバ)」などに制御プログラム330aを記憶させておく。そして、コンピュータ300がこれらからプログラム330aを読み出して実行するようにしてもよい。