以下、実施形態について、図面を参照しながら詳細に説明する。なお、説明は次のような順番で行う。
まず、第1実施形態の概要の説明を兼ねて、第1実施形態において印刷される帳票の例について図1を参照して説明する。次に、図1に対する比較例として図2と図3を参照し、図1のような出力の優れた点について説明する。その後、図1に例示したような出力を行うための具体的なシステムの構成、データ例および処理の流れについて説明する。
具体的には、図4を参照して、第1実施形態における出力制御システムの構成を説明し、図5〜10を参照して出力制御システムで利用される各種DB(データベース)のデータの具体例を説明する。そして、図11〜13を参照して、図10の文字スコアDBを構築する前処理について説明し、図14〜16を参照して、帳票の印刷時の出力制御処理について説明する。
最後に、第1実施形態との違いを中心に、その他の実施形態についても説明する。
さて、図1は、第1実施形態において印刷される帳票を例示する図である。なお、第1実施形態において、開発対象のシステムは銀行の勘定系システムであり、システムの機能のうちで検証対象の機能は、帳票を紙に印刷する機能であるが、第1実施形態の適用対象は、以下に説明する具体例に限られるわけではない。
図1の検証用帳票101は、銀行の各顧客の氏名、性別、生年月日、住所および残高を含む帳票に対して第1実施形態を適用した例である。図1の例では、氏名と住所が保護対象(換言すればマスク化対象)の項目であり、性別、生年月日および残高は保護対象外である。図1に示すように、マスク化対象の氏名と住所の文字列は、それぞれ1文字を除いて、黒くて四角い所定のパターンによりマスク化されている。
よって、検証用帳票101を見ても、顧客の氏名や住所は分からないようになっており、氏名と住所という個人情報は保護されている。他方で、検証用帳票101を使って、例えば、「1人の顧客のデータを1行に印刷し、帳票全体では3人の顧客のデータを印刷する」といった所定のフォーマットのとおりに正しく帳票が印刷されているか否かといった検証を行うことも可能である。その理由は、氏名と住所の項目には、それぞれ1文字ずつ、マスク化されずにそのまま出力される文字があるからである。
例えば、仮に「本来3人の顧客のデータを1枚の帳票に印刷すべきところ、同じ1人の顧客のデータが繰り返し3回1枚の帳票に印刷されてしまう」といったバグが開発中の勘定系システムに残っていたとする。この場合、システム開発者は、検証用帳票においてマスク化されずにそのまま印字された少数の文字を手がかりに、バグの存在を疑うことができる。
あるいは、「氏名の列に誤って金額が印刷されてしまう」といったバグが開発中の勘定系システムに残っていた場合、氏名の列でマスク化されずに印刷される1文字は、数字かカンマとなる。よって、マスク化された文字が大多数であるために氏名全体は不明だとしても、システム開発者は、検証用帳票から「氏名の列に関連して何らかのバグがある」ということに気付くことができる。
なお、図1の検証用帳票101からシステム開発者は、例えば、氏名の列でマスク化されずに印字された少数の文字を手がかりに、「氏名の列には、金額などではなく、氏名らしき短めの文字列が印刷されている」ということを確認することもできる。
詳しくは後述するが、第1実施形態では、このようにマスク化の対象の項目内でマスク化せずにそのまま出力する文字が、優先度にしたがって選定される。そして、その優先度は、検証に役立ちそうな文字ほど高く評価することで計算される値である。
すなわち、第1実施形態によれば、コンピュータが出力制御プログラムにしたがって、まず、出力対象として指定された文字列に含まれる各文字について、所定の評価基準にしたがって評価される優先度をそれぞれ取得する。そして、コンピュータは、優先度に基づいて、マスク化せずに出力する非マスク化対象文字を文字列の中から選定する。
その後、コンピュータは、文字列に含まれる文字のうち、非マスク化対象文字はマスク化せずに、かつ非マスク化対象文字以外の文字であるマスク化対象文字は所定のパターンでマスク化するように、文字列の出力を制御する。図1の検証用帳票101は、このような一連の処理の結果、出力される帳票の例である。
なお、具体的な計算式は後述するが、検証に役立ちそうな文字ほど高く評価するには、以下のような評価基準の1つまたは複数の組み合わせにしたがって優先度が定義されていればよい。
・評価対象の文字が所定の種類(外字、数字、記号、ひらがな、カタカナ、漢字、アルファベットなど)の文字であれば優先度を高くする
・評価対象の文字の画数が多いほど優先度を高くする
・評価対象の文字の出現頻度が低いほど優先度を高くする
よって、第1実施形態によれば、そのまま出力される少数の非マスク化対象文字を手がかりに、出力されたデータ同士の識別が可能となり、ひいては検証も可能となる。同時に、第1実施形態によれば、文字列のほとんどはマスク化対象文字としてマスク化されているので、個人情報は保護される。
続いて、図1の検証用帳票101に対する比較例として図2と図3を参照し、第1実施形態による検証用帳票101の利点を説明する。なお、図2と図3における帳票のフォーマットおよび印刷対象のデータは、図1の検証用帳票101と同じである。
図2は、マスクなしで帳票が印刷される場合を例示する図である。図2の非マスク化帳票102には、3人の顧客それぞれの氏名、性別、生年月日、住所および残高が、マスク化されずに印刷されている。
すなわち、1人目の顧客は、氏名が「櫨田 太郎」で、性別が男で、生年月日が1969年4月1日で、住所が「千葉県流《吉》市…」で、残高が2万1千円である。
なお、本明細書においては、「士」ではなく「土」の下に「口」と書く「吉」の異体字を、「《吉》」のように表記する。《吉》は外字なので、便宜上、このように二重山括弧を使って表記する。
また、非マスク化帳票102にデータが印刷された2人目の顧客は、氏名が「富士通 花子」で、性別が女で、生年月日が1971年2月2日で、住所が「石川県金沢市…」で、残高が3千円である。そして、3人目の顧客は、氏名が「富士通 次郎」で、性別が男で、生年月日が1960年9月2日で、残高が45万円である。
このように、非マスク化帳票102からは、3人の顧客の個人情報があからさまに分かってしまう。したがって、非マスク化帳票102の印刷は、もともと個人情報を参照する権限を有している者(例えば銀行員)に対しては許可されてよいが、個人情報を参照する権限を持たない者(例えばシステム開発会社社員)に対しては許可すべきではない。
それに対し、図1の検証用帳票101では、例えば1人目の顧客の氏名と住所に関しては、「櫨田 太郎」のうちの「櫨」という文字と「千葉県流《吉》市…」のうちの「《吉》」という文字のみが印刷される。よって、検証用帳票101からは「櫨田 太郎」という顧客の氏名や住所を特定することはできないので、検証用帳票101の印刷は、個人情報を参照する権限を持たない者に対しても許可されてよい。したがって、システム開発者は、印刷を許可された検証用帳票101を使って、データが正しく印刷されているか否かの検証を行うことが可能である。
続いて、検証用帳票101に対する別の比較例について図3を参照して説明する。図3は、項目全体がマスク化されて帳票が印刷される場合を例示する図である。
すなわち、図3の全体マスク化帳票103においては、氏名、性別、生年月日、住所、残高の欄がすべて黒塗りになっている。よって、全体マスク化帳票103では個人情報は保護されている。
しかしながら、全体マスク化帳票103では、そもそも各項目に何かが印刷されているのか否かということすら不明である。また、3人の別々の顧客のデータが3行に分けて印刷されているのか、それとも何らかのバグで同一顧客のデータが繰り返し印刷されてしまっているのかも、全体マスク化帳票103からは不明である。同様に、印刷される場所と印刷されるデータの不整合(例えば氏名の列に金額が印刷されるなどのエラー)が起きていないか否かについても、全体マスク化帳票103からではまったく判断不能である。
それに対し、図1の検証用帳票101では、個人情報の保護と、データが正しく出力されているか否かの検証を可能にする仕組みが両立されている。
例えば、住所の中で「県」および「市」という文字は、3人の顧客に共通しているので、仮に「県」または「市」が非マスク化対象文字として選定されると、3人の顧客の住所を検証用帳票101から区別することはできない。しかし、実際には図1に示すように、検証用帳票101では、「県」や「市」ではなく、「《吉》」、「金」、「仙」のように個々の顧客のデータを差別化する鍵として有効な、検証に役立つ文字が非マスク化対象文字として選定される。
このように、第1実施形態では、住所中の大多数の文字をマスク化することで住所自体は秘匿して個人情報を保護しつつ、検証に役立つ文字は非マスク化対象文字として選定してそのまま表示することで検証を可能とするような出力制御が行われる。したがって、第1実施形態によれば、図2の非マスク化帳票102および図3の全体マスク化帳票103のいずれと比較しても有利な、図1の検証用帳票101のような出力が得られる。
続いて、図4〜16を参照して、第1実施形態についてさらに詳しく説明する。
図4は、出力制御システムの構成図である。図4に示すとおり、第1実施形態による出力制御システム200は、サーバ201とクライアントPC(Personal Computer)202とプリンタ203を備える。クライアントPC202とプリンタ203は、例えばLAN(Local Area Network)などのネットワークを介して、サーバ201と接続されている。また、サーバ201はユーザ管理部204とレベル比較部205を備える。
なお、図4の出力制御システム200は、第1実施形態における開発対象の勘定系システムを含むシステムであり、勘定系システムからの出力を制御する機能を有する。
出力制御システム200はさらに、サーバ201からアクセス可能なDBとして、顧客DB206、ユーザID(identifier)管理DB207、個人情報マスク化管理DB208、文字スコアDB209、画数DB210および外字文字コードDB211を備える。これらの各種DBは、例えばハードディスク装置またはRAM(Random Access Memory)などの、サーバ201が備える記憶装置上にあってもよく、ネットワークを介してサーバ201に接続された記憶装置上にあってもよい。
サーバ201とクライアントPC202としては、一般的なコンピュータを利用することができる。例えば、CPU(Central Processing Unit)、ROM(Read Only Memory)、RAM、ハードディスク装置などの外部記憶装置、ネットワークとの通信インタフェース、入力装置および出力装置を備えるコンピュータが利用可能である。
サーバ201とクライアントPC202は、コンピュータ読み取り可能な記憶媒体の駆動装置をさらに備えていてもよい。また、入力装置としては、例えば、マウスなどのポインティングデバイスやキーボードなどが利用可能であり、出力装置としては、例えばLCD(Liquid Crystal Display)などのディスプレイが利用可能である。
ユーザ管理部204とレベル比較部205は、第1実施形態ではサーバ201のCPUが所定のプログラムをRAMにロードして実行することで実現されるが、実施形態によっては、その一部または全部が専用のハードウェア回路により実現されてもよい。
サーバ201のCPUをユーザ管理部204およびレベル比較部205として機能させるための上記プログラムは、コンピュータ読み取り可能な記憶媒体に格納されて提供され、サーバ201にインストールされてもよい。あるいは、上記プログラムは、ネットワークからサーバ201にダウンロードされてもよい。もちろん、サーバ201のハードディスク装置やROMなどに上記プログラムがプレインストールされていてもよい。
また、上記記憶媒体としては、CD(Compact Disc)やDVD(Digital Versatile disk)などの光ディスク、光磁気ディスク、磁気ディスク、フラッシュメモリなどの不揮発性の半導体メモリなどが利用可能である。
ところで、第1実施形態での開発対象である銀行の勘定系システムは、サーバ201上に構築され、顧客DB206に対するデータの読み書きを行うコンピュータシステムである。顧客DB206は、詳しくは図5とともに後述するとおり、銀行の顧客に関するデータを格納するDBであり、多くの個人情報を含む。
なお、第1実施形態では、勘定系システム本体の具体的構成は任意なので、図4には、勘定系システム本体に関しては、ユーザ管理部204のみを図示してある。ユーザ管理部204は、詳しくは図6とともに後述するユーザID管理DB207を用いて、勘定系システムのユーザのアカウントやログイン状態を管理する。勘定系システムのユーザには、当該勘定系システムの開発者や銀行員が含まれる。
また、クライアントPC202は、ユーザに対して、サーバ201上に構築された勘定系システムにアクセスするためのユーザインタフェースを提供する。例えば、クライアントPC202は、勘定系システムへのログイン画面や、勘定系システムに対する帳票印刷指示の入力画面などのユーザインタフェースを提供する。
そして、第1実施形態のサーバ201は、勘定系システムからの帳票出力を制御して例えば図1の検証用帳票101のような形式で帳票を出力するためのレベル比較部205を備える。なお、第1実施形態におけるレベル比較部205は、個々の文字の優先度のレベル同士を比較することで非マスク化対象文字とマスク化対象文字を決定し、文字の出力を制御するだけでなく、その制御に必要なDBの構築も行う。
すなわち、レベル比較部205は、詳しくは図11〜13とともに後述するように、顧客DB206、画数DB210および外字文字コードDB211に基づいて、文字スコアDB209を構築する。なお、画数DB210、外字文字コードDB211、文字スコアDB209の具体例は、図8〜10とともに後述する。
そして、勘定系システムに対して帳票の印刷指示がクライアントPC202から与えられると、レベル比較部205は、ユーザID管理DB207と個人情報マスク化管理DB208に基づいてユーザの権限に応じた処理を行う。この処理の詳細は図14〜16とともに後述するが、概要は次のとおりである。
すなわち、個人情報を参照する権限のないユーザから帳票印刷指示が与えられた場合、レベル比較部205は、図1の検証用帳票101のように、個人情報の秘匿と勘定系システムの検証を両立させる形でのマスク化を行うように、帳票の出力を制御する。
例えば、帳票がプリンタ203により紙媒体へ出力される場合には、レベル比較部205は、プリンタ203用のプリンタドライバを含んでもよい。レベル比較部205は、プリンタドライバからプリンタ203へ出力される命令(例えばPostScript(登録商標)などのページ記述言語で書かれた命令)の生成を制御することで、帳票の出力を制御することができる。
他方、個人情報を参照する権限のあるユーザから帳票印刷指示が与えられた場合、レベル比較部205は、図2の非マスク化帳票102のように個人情報をそのまま印刷してよいと判断する。なお、この場合においても、もしユーザからマスク化の指示が与えられたならば、レベル比較部205は指示にしたがい、個人情報を参照する権限のないユーザの場合と同様に、帳票の出力を制御してマスク化を実行する。
そして、個人情報を参照する権限の有無によらず、検証用帳票101のような形でのマスク化を行うように出力を制御する際のレベル比較部205の動作は、次のとおりである。
すなわち、レベル比較部205は、印刷対象として顧客DB206から得られるデータに対して、文字スコアDB209を参照して非マスク化対象文字を選定する処理を行う。つまり、レベル比較部205は、出力対象として指定された文字列に含まれる各文字について、所定の評価基準にしたがって評価される優先度をそれぞれ取得する優先度取得部として機能するとともに、非マスク化対象文字を選定する選定部としても機能する。
そして、レベル比較部205は、非マスク化対象文字の選定結果に基づいて、例えば検証用帳票101のような形で帳票を出力するように、勘定系システムからの帳票の出力を制御する。つまり、レベル比較部205は、文字列に含まれる文字のうち、選定した非マスク化対象文字はマスク化せずに、かつマスク化対象文字は所定のパターンでマスク化するように、文字列の出力を制御する出力制御部としても機能する。
なお、第1実施形態では、顧客DB206で管理される項目のうち、どの項目をマスク化するかを指定するためのマスクパターンが指定可能である。詳しくは図7とともに後述するが、いくつかの所定のマスクパターンが個人情報マスク化管理DB208により管理されており、レベル比較部205は、個人情報マスク化管理DB208も参照しながら出力の制御を行う。
さて、続いて図5〜10を参照して、図4に示した各種DBの具体例について説明する。
図5は、顧客DB206の例を示す図である。図5には、例として、「口座番号」、「氏名」、「性別」、「生年月日」、「住所」および「残高」という各項目を有する顧客DB206を図示してあるが、顧客DB206はさらに他の項目を有していてもよい。
また、図5では、顧客DB206のエントリとして、具体的には、図2の非マスク化帳票102にデータが出力されている3人の顧客それぞれのエントリを例示している。図5によれば、この3人の顧客の口座番号は、それぞれ「3876523」、「3876524」および「3876525」である。氏名、性別、生年月日、住所および残高の各項目の値は図2と同様である。
図6は、ユーザID管理DB207の例を示す図である。ユーザID管理DB207は、「ユーザID」、「属性」、「検証権限」、「選択可能マスクパターン」という各項目、および、その他の不図示の項目(例えばパスワードなど)を有する。
図6には具体例として2つのエントリが図示してある。1番目のエントリでは、ユーザIDが「AAA」であり、2番目のエントリでは、ユーザIDが「BBB」である。なお、以下ではこの2つのエントリそれぞれのユーザのことを「ユーザAAA」および「ユーザBBB」という。
ユーザAAAの属性は「最終承認者」である。第1実施形態において「最終承認者」とは、顧客DB206内の個人情報を参照する権限を持つ者のことであり、具体例は銀行員である。よって、ユーザID管理DB207においてユーザAAAの検証権限は「あり」と設定されている。
また、ユーザID管理DB207によれば、ユーザAAAが選択可能なマスクパターンは、図7に示す個人情報マスク化管理DB208で定義されているマスクパターンのうち、「マスクパターン1」と「マスクパターン2」である。なお、詳しくは図14とともに後述するが、ユーザAAAは、検証権限が「あり」なので、マスクパターンを指定せずに図2の非マスク化帳票102のような形での印刷出力を指定することも許されている。
逆に、ユーザBBBの属性は「開発担当者」である。第1実施形態において「開発担当者」とは、顧客DB206内の個人情報を参照する権限を持たない者のことであり、具体例は勘定系システムの開発を請け負った受託会社社員などである。よって、ユーザID管理DB207においてユーザBBBの検証権限は「なし」と設定されている。
また、ユーザID管理DB207によれば、ユーザBBBが選択可能なマスクパターンは、図7に示す個人情報マスク化管理DB208で定義されているマスクパターンのうち、「マスクパターン3」のみである。
図7は、個人情報マスク化管理DB208の例を示す図である。個人情報マスク化管理DB208は、顧客DB206の項目のうちどの項目をマスク化するかを指定するためのマスクパターンの定義を記憶するDBである。
図7に示すように、個人情報マスク化管理DB208のテーブルは、「マスクパターン」と「マスク項目」という2つの列を有する。なお、図7には具体例として3つのエントリが図示してある。
1番目のエントリでは、「マスクパターン1」が定義されている。「マスクパターン1」は、具体的には、顧客DB206の項目のうち、氏名、生年月日、住所および残高をマスク化の対象とするパターンである。
同様に、2番目のエントリで定義される「マスクパターン2」は、顧客DB206の項目のうち氏名と住所のみをマスク化の対象とするパターンである。また、3番目のエントリで定義される「マスクパターン3」は、顧客DB206の項目のうち氏名と残高のみをマスク化の対象とするパターンである。
もちろん、実施形態に応じて、また、顧客DB206が有する項目に応じて、図7に例示した以外の様々なマスクパターンが個人情報マスク化管理DB208において定義されていてよい。
なお、第1実施形態では、「氏名が秘匿されていれば住所から個人を特定することはできない」という想定のもとで、図6に示すように、検証権限が「なし」のユーザBBBが「マスクパターン3」を選択することができるように設定されている。しかし、実施形態によっては、検証権限が「なし」のユーザBBBにとって選択可能なマスクパターンとして、例えば「マスクパターン1」のみが設定されていてもよい。
図8は、画数DB210の例を示す図である。画数DB210は予め用意されている。
ここで、画数DB210の説明の準備として、第1実施形態で使われる文字集合について説明する。第1実施形態で開発対象の勘定系システムで利用される文字集合は任意であるが、以下では説明の便宜上、次のように仮定する。
すなわち、第1実施形態で開発対象の勘定系システムでは、JIS(Japanese Industrial Standard)X0208で定められる文字集合(以下、説明の便宜上「CA」と表す)または外字の集合(以下、「CB」と表す)に含まれる文字が利用されるとする。換言すれば、第1実施形態において勘定系システムが利用する文字集合は、式(1)の文字集合Cである。
C=CA∪CB (1)
以下では、文字集合Cに含まれる各文字をch(h=1,2,……)と表す。
第1実施形態の勘定系システムにおいて、文字集合Cの文字を符号化するための文字符号化方式は任意の方式でよく、例えば、ISO−2022−JP、Shift_JIS、EUC−JP(あるいはそれらの拡張方式)などが利用可能である。なお、ISOはInternational Organization for Standardizationの略、EUCはextended UNIX codeの略である(UNIXは登録商標)。
以下、説明の簡略化のため、第1実施形態の勘定系システムでは、外字集合である文字集合CBについても扱えるようにISO−2022−JPを拡張した文字符号化方式(以下では便宜的に「拡張ISO−2022−JP」という)が使われているものとする。
ここで、文字集合Cを符号化する任意の文字符号化方式によって文字chを符号化したときの文字コードは、文字集合C内で文字chを一意に識別する文字識別情報としての側面を持つことに注目する。第1実施形態では、拡張ISO−2022−JPによる文字コードを、文字識別情報として利用するものとする。もちろん、実施形態によっては、どの文字符号化方式とも無関係なシリアル番号を文字識別情報として用いることもできる。
ここで図8の説明に戻る。図8に示すとおり、画数DB210のテーブルには、「文字コード」、「画数」および「文字」の3つの列がある。
「文字コード」列には、文字識別情報としての、拡張ISO−2022−JPによる文字コードが、16進数で示されている。なお、「0x」は16進数を示す接頭辞である。「画数」列の値は当該文字の画数である。
なお、文字符号化方式として上記の拡張ISO−2022−JPが使われる場合には、「文字コード」列と「文字」列の内容は等しくなるので、一方の列は省略可能である。しかし、図8では説明の便宜上、「文字コード」列と「文字」列をともに図示してある。図9〜10でも同様である。
画数DB210は、文字集合Cに含まれる各文字についてのエントリを有するが、図8には、図5の顧客DB206登場する文字のうち「花」、「櫨」、「富」、「《吉》」の4文字のエントリを例示してある。図8に示すとおり、これら4文字の画数は、7、20、12、6である。
図9は、外字文字コードDB211の例を示す図である。外字文字コードDB211は、外字集合である文字集合CBに含まれる各文字についてのエントリを有するが、文字集合CAに含まれる文字についてのエントリは持たない。
外字文字コードDB211の各エントリは、文字識別情報としての文字コードと、当該文字コードで識別される文字の組である。図9には具体例として、図5の顧客DB206登場する外字である「《吉》」に関するエントリが図示してある。
図10は、文字スコアDB209の例を示す図である。文字スコアDB209は、文字集合Cに含まれる各文字についてのエントリを有するが、図10には、図5の顧客DB206登場する文字のうち「花」、「櫨」、「富」、「《吉》」の4文字のエントリを例示してある。
また、文字スコアDB209は、項目として、「文字」および当該文字を識別する文字識別情報としての「文字コード」を有する点で、図8の画数DB210と同様である。文字スコアDB209はさらに、当該文字の優先度を表す総合スコアを計算するための各種スコアの項目を有する。具体的には、文字スコアDB209には次のような項目がある。
・外字文字コードDB211に基づいて計算される「外字スコア」
・顧客DB206の各項目における各文字の出現頻度に基づいて計算される「出現頻度スコア」
・画数DB210に基づいて計算される「画数スコア」
なお、出現頻度スコアは、顧客DB206が有する複数の項目に対応して複数存在する。図10では、図5の顧客DB206の「氏名」と「住所」という項目に対応する出現頻度スコアを、それぞれ「出現頻度スコア(氏名)」、「出現頻度スコア(住所)」と表している。
また、顧客DB206には上記のように図5では省略している様々な項目が含まれていてよい。そこで、図10では、顧客DB206のそれらの不図示の項目にそれぞれ対応した出現頻度スコアの列を文字スコアDB209が持つことを、省略符号「…」と「出現頻度スコア(xxx)」という列で表している。
文字スコアDB209に格納される各種スコアの意味および計算法については、図11〜13とともに後述するので、ここでは説明を省略する。
続いて、図11〜13を参照して、図4のレベル比較部205が事前に文字スコアDB209を構築するための前処理について説明する。レベル比較部205は、不図示の初期化処理により文字スコアDB209を初期化した後、図11〜13に示す3つの処理を任意の順序で1回ずつ行うことで、文字スコアDB209を構築する。
なお、上記の初期化処理とは、具体的には、レベル比較部205が、文字集合Cに含まれる各文字についてのエントリを文字スコアDB209に作成し、各エントリにおいて、「文字コード」列と「文字」列に値を設定する処理である。その他の列の値は、図11〜13の処理において設定される。また、以下では説明の便宜上、文字集合Cに含まれる文字の文字コードの範囲が0x2120〜0x7E7Fであるとするが、この範囲は実施形態に応じて異なる。
図11は、外字処理のフローチャートである。外字処理は、レベル比較部205が図9の外字文字コードDB211を参照して、図10の文字スコアDB209の外字スコアの値を設定する処理である。なお、第1実施形態では、文字c
hの外字スコアE
hは次の式(2)で定義される。
各文字chについて式(2)の値を文字スコアDB209に設定するため、レベル比較部205は、まずステップS101で、ループ変数としての文字コードに0x2120を設定する。続くステップS102〜S107は繰り返しループを形成している。
ステップS102でレベル比較部205は初期化を行う。つまり、レベル比較部205は、ステップS101または後述のステップS106で文字コードに設定した値を「文字コード」列に持つエントリを、文字スコアDB209において検索し、得られたエントリの「外字スコア」列に0を設定する。
次に、ステップS103でレベル比較部205は外字確認処理を行う。すなわち、レベル比較部205は、ステップS101または後述のステップS106で文字コードに設定した値を「文字コード」列に持つエントリを、図9の外字文字コードDB211において検索する。エントリがヒットすれば、ステップS101または後述のステップS106で設定した文字コードが表す文字は外字に該当し、エントリがヒットしなければ、当該文字は外字ではない。
そして、ステップS104でレベル比較部205は、ステップS101または後述のステップS106で設定した文字コードが表す文字が外字か否かを判断し、外字であれば処理はステップS105に移行し、外字でなければ処理はステップS106に移行する。
ステップS105でレベル比較部205は、ステップS101または後述のステップS106で文字コードに設定した値を「文字コード」列に持つ、文字スコアDB209中のエントリにおいて、「外字スコア」として1を設定する。
ステップS106でレベル比較部205は、文字コードをインクリメントする。
そして、ステップS107でレベル比較部205は、ステップS106でのインクリメントの結果、文字コードに設定されている値が0x7E7Fを超えたか否かを判定する。文字コードに設定されている値が0x7E7F以下の場合、処理はステップS102に戻る。他方、文字コードに設定されている値が0x7E7Fを超えた場合は、ch∈Cとなるすべての文字chについて、式(2)の外字スコアEhが文字スコアDB209の「外字スコア」列に設定済みなので、レベル比較部205は、図11の外字処理を終了する。
図12は、出現回数処理のフローチャートである。出現回数処理は、レベル比較部205が図5の顧客DB206を参照して、図10の文字スコアDB209の各出現頻度スコアの値を設定する処理である。
なお、勘定系システムの実際の運用にともなって顧客DB206の内容は随時変更されうるが、第1実施形態が対象としているのは勘定系システムの開発中の検証作業である。よって、レベル比較部205は、ある任意の時点の顧客DB206のスナップショットを利用して、図12の処理を1回行うだけでよい。
ステップS201でレベル比較部205は、ループ変数としての文字コードに0x2120を設定する。続くステップS202〜S211は繰り返しループを形成している。
ステップS202でレベル比較部205は、もう1つのループ変数jに1を設定する。ループ変数jは、顧客DB206中の各項目(以下、図12の説明においては「表示項目」という)に対応し、続くステップS203〜S209は繰り返しループを形成している。
ステップS203でレベル比較部205は、j番目の表示項目について出現回数確認処理を行う。すなわち、レベル比較部205は、ステップS201または後述のステップS210で設定した文字コードが表す文字が、顧客DB206中のj番目の表示項目中に出現する回数を数える。
例えば、文字コードに設定された値が0x3256で、j番目の表示項目が「氏名」という項目であれば、レベル比較部205は、顧客DB206の「氏名」列内で「花」という文字が出現する回数を数える。以下では、文字chがj番目の表示項目中に出現する回数を「fjh」と表す。
続いてステップS204でレベル比較部205は、ステップS203で数えたj番目の表示項目中の出現回数fjhが0回か1回以上かを判断する。出現回数fjhが0回のとき処理はステップS205に移行し、出現回数fjhが1回以上のとき処理はステップS206に移行する。
ステップS205でレベル比較部205は、ステップS201または後述のステップS210で設定した文字コードが表す文字の、j番目の表示項目に関する出現頻度スコアを10と定める。例えば、文字コードに設定された値が0x4827で、顧客DB206の「住所」列には「櫨」という文字が1回も出現しないのであれば、「櫨」という文字の住所に関する出現頻度スコアは10と定められる。
他方、ステップS206でレベル比較部205は、ステップS201または後述のステップS210で設定した文字コードが表す文字の、j番目の表示項目に関する出現頻度スコアを以下のようにして計算する。
ここで説明の便宜上、ステップS201または後述のステップS210で設定した文字コードが表す文字を文字c
hとする。また、顧客DB206のj番目の表示項目の全文字数をn
jとすると、全文字数n
jは次の式(3)のとおりである。
よって、顧客DB206のj番目の表示項目における文字chの出現率(すなわち相対頻度)rjhは、次の式(4)のとおりである。
rjh=fjh/nj (4)
出現率rjhが低い文字chほど、j番目の表示項目内では珍しいので、j番目の表示項目内でデータの区別に役立つ度合が高く、表示優先度を高くすることが好ましい。そこで、出現率rjhが低いほど出現頻度スコアが高くなるように、出現率rjhの逆数qjhをとる。qjhは、式(5)のように表される。
qjh=1/rjh=nj/fjh (5)
ところで、図10とあわせて簡単に説明したとおり、第1実施形態では、総合スコアは外字スコア、出現頻度スコアおよび画数スコアから計算されるが、式(5)のqjhは、外字スコアおよび画数スコアと比較して相対的に値が大きくなりがちである。よって、式(5)のqjhをそのまま出現頻度スコアとして使うとすると、総合スコアの計算において外字スコアと画数スコアがほとんど考慮されなくなってしまう。
そこで、第1実施形態では、総合スコアに与える出現頻度スコアの影響力を適正な範囲に収めるための正規化を導入する。具体的には、以下の式(6)に示すように、文字chのj番目の表示項目に関する出現頻度スコアFjhは、j番目の表示項目の全文字数njによる除算により式(5)のqjhを正規化した値として定義される。
Fjh=qjh/nj=1/fjh (6)
ここで、j番目の表示項目に関する文字chの出現頻度スコアFjhは、意味的には、上記のとおり、顧客DB206のj番目の表示項目における文字chの出現数fjhを全文字数njで除算したものの逆数qjhをさらに全文字数njで除算した値である。しかし、式(6)に示すように出現頻度スコアFjhは、結局はj番目の表示項目中の文字chの出現回数fjhの逆数に等しい。よって、ステップS206でレベル比較部205は、出現頻度スコアFjhを計算するのに、実際には単に出現回数fjhの逆数を計算するだけでよい。
上記のステップS205またはS206の実行後、処理はステップS207に移行する。そして、ステップS207においてレベル比較部205は、ステップS205またはS206で得た値を、j番目の表示項目中に関する文字chの出現頻度スコアFjhとして文字スコアDB209に設定する。
次のステップS208では、レベル比較部205は、顧客DB206のすべての表示項目を処理したか否かを判断する。現在設定されている文字コードの値に関して、まだレベル比較部205が処理していない表示項目が残っていれば、処理はステップS209に移行する。他方、現在設定されている文字コードの値に関して、レベル比較部205がすべての表示項目を処理し終わっていれば、処理はステップS210に移行する。
ステップS209でレベル比較部205は、顧客DB206の表示項目に関するループ変数jに1を足す。そして処理はステップS203に戻る。
また、ステップS210でレベル比較部205は、文字コードをインクリメントする。
そして、続くステップS211でレベル比較部205は、ステップS210でのインクリメントの結果、文字コードに設定されている値が0x7E7Fを超えたか否かを判定する。文字コードに設定されている値が0x7E7F以下の場合、処理はステップS202に戻る。他方、文字コードに設定されている値が0x7E7Fを超えた場合は、ch∈Cとなるすべての文字chについて、顧客DB206中の全表示項目に関するそれぞれの出現頻度スコアが文字スコアDB209に設定済みなので、レベル比較部205は図12の出現回数処理を終了する。
図13は、画数処理のフローチャートである。画数処理は、レベル比較部205が図8の画数DB210を参照して、図10の文字スコアDB209の画数スコアの値を設定する処理である。
ステップS301でレベル比較部205は、ループ変数としての文字コードに0x2120を設定する。続くステップS302〜S306は繰り返しループを形成している。
ステップS302でレベル比較部205は画数確認処理を行う。つまり、レベル比較部205はステップS301または後述のステップS305で文字コードに設定した値を「文字コード」列に持つエントリの「画数」列の値を、図8の画数DB210から読み出す。例えば、文字コードが0x4827のとき、画数としてステップS302では20が得られる。
続くステップS303でレベル比較部205は、ステップS302で得た画数から特定画数を減じた結果に0.1を掛ける。ただし、その演算結果が0以下の場合は、演算結果で0が得られたものと見なすこととする。
具体的には、第1実施形態における上記の特定画数は13である。また、説明の便宜上、ステップS301または後述のステップS305で設定した文字コードが表す文字をchとし、ステップS302で得られた文字chの画数をshとする。ステップS303でレベル比較部205は、下記の式(7)で定義される画数スコアShを計算する。
Sh=min(0,(sh−13)×0.1) (7)
式(7)によれば、画数スコアShは、文字chの画数shが特定画数(例えば13画)以下ならゼロだが、画数shが特定画数を超えているときは、画数shが多いほど大きな正の値をとる。このように画数スコアShが定義される理由は次のとおりである。すなわち、一般的な経験則として、画数の多い文字は、頻繁には使われないのでデータを見分ける際の鍵として好適であり、データ同士を差異化する働きを持つことが多いからである。
なお、式(7)で特定画数を示す定数として13が使われる理由は、「経験的に、人名で使用される漢字で画数が多いものの平均的な画数は、約13である」との知見による。また、式(7)で定数0.1が使われる理由は、外字スコアEhおよび出現頻度スコアFjhと画数スコアShとの間でバランスをとるためである。
こうして画数スコアShを計算すると、次のステップS304でレベル比較部205は、文字スコアDB209において文字chに対応するエントリの「画数スコア」列に、ステップS303の演算結果を格納する。
そして、ステップS305でレベル比較部205は、文字コードをインクリメントする。
続くステップS306でレベル比較部205は、ステップS305でのインクリメントの結果、文字コードに設定されている値が0x7E7Fを超えたか否かを判定する。文字コードに設定されている値が0x7E7F以下の場合、処理はステップS302に戻る。他方、文字コードに設定されている値が0x7E7Fを超えた場合は、ch∈Cとなるすべての文字chについて、式(7)の画数スコアShが文字スコアDB209の「画数スコア」列に設定済みなので、レベル比較部205は、図13の画数処理を終了する。
続いて、レベル比較部205が上記図11〜13の前処理により文字スコアDB209を構築した後に行う出力制御処理について説明する。図14と15は、出力制御処理のフローチャートである。
出力制御処理は、図4の出力制御システム200においてクライアントPC202の入力装置に検証者からの印刷指示が入力されることを契機として、開始される。なお、以下の説明において「検証者」とは、図6のユーザID管理DB207にユーザIDが登録されており、出力制御システム200に含まれる勘定系システムにログイン中の者のことである。
ステップS401でレベル比較部205は、出力制御処理を開始する契機となった検証者からの印刷指示を、クライアントPC202から受け取る。
すると、ステップS402でレベル比較部205は、ユーザ管理部204を介してユーザID管理DB207にアクセスし、印刷指示を与えた検証者の検証権限を確認する。すなわち、レベル比較部205は、検証者のユーザIDをキーにして図6のユーザID管理DB207を検索し、検証者の検証権限および選択可能マスクパターンを得る。
そして、ステップS403でレベル比較部205は、検証者の検証権限の有無を判断する。ステップS402での確認の結果、検証者に検証権限があると判明した場合、処理はステップS404に移行し、検証者に検証権限がないと判明した場合、処理はステップS408に移行する。
ステップS404でレベル比較部205は、マスクパターンの指定について判断を行う。例えば、レベル比較部205は、マスクパターンを検証者に指定させるためのダイアログなどを画面に表示するよう、クライアントPC202に命令し、ダイアログへの入力をクライアントPC202から受け取り、受け取った入力に基づいて判断を行ってもよい。
マスクパターンを指定する入力がクライアントPC202から与えられなかった場合(換言すれば、マスクパターンを利用しない旨の入力が明示的または暗黙的にクライアントPC202から与えられた場合)、処理はステップS405に移行する。
また、ステップS402でレベル比較部205が確認した選択可能マスクパターン(複数の場合はそのうちのいずれか)を指定する入力がクライアントPC202から与えられた場合、処理は図15のステップS412に移行する。逆に、ステップS402でレベル比較部205が確認した選択可能マスクパターン以外のマスクパターンを指定する入力がクライアントPC202から与えられた場合、処理はステップS406に移行する。
ステップS405でレベル比較部205は、印刷指示により指定された帳票をマスクなしで印刷するように、プリンタ203への出力を制御する。その結果、例えば図2の非マスク化帳票102のように、どの部分もマスク化されていない形式の検証用帳票がプリンタ203により印刷され、図14の出力制御処理は終了する。
他方、ステップS406でレベル比較部205は、選択不可のマスクパターンが指定されたことを警告するためのエラー表示を行うよう、クライアントPC202に命令する。なお、第1実施形態における当該エラー表示は、印刷指示をキャンセルして処理を終了するか否かを検証者に指定させるためのダイアログの表示を含む。
ステップS407でレベル比較部205は、クライアントPC202を介して上記ダイアログに対して入力された指示に基づき、印刷指示をキャンセルして処理を終了するか否かを判断する。処理を終了する旨の指示が入力された場合、図14の出力制御処理も終了する。他方、処理を続行する旨の指示が入力された場合、レベル比較部205はステップS404からの処理を繰り返す。
さて、ステップS403で検証者に検証権限があると判断した場合、レベル比較部205はステップS408で、クライアントPC202からマスクパターンを指定する入力を受け取る。例えば、レベル比較部205は、マスクパターンを検証者に指定させるためのダイアログなどを画面に表示するよう、クライアントPC202に命令し、ダイアログへの入力をクライアントPC202から受け取ってもよい。
そして、ステップS409でレベル比較部205は、ステップS408で受け取った入力が、検証権限なしでも選択可能なマスクパターンを指定するものであるか否かを判断する。つまり、レベル比較部205は、ステップS402でユーザID管理DB207から読み出した選択可能マスクパターンに含まれるマスクパターンがステップS408で指定されたか否かを判断する。
検証権限なしでも選択可能なマスクパターンがステップS408で指定された場合、処理は図15のステップS412に移行する。逆に、選択不可のマスクパターンがステップS408で指定された場合、処理はステップS410に移行する。
ステップS410でレベル比較部205は、ステップS406と同様に、選択不可のマスクパターンが指定されたことを警告するためのエラー表示を行うよう、クライアントPC202に命令する。
そして、ステップS411でレベル比較部205は、ステップS407と同様に、クライアントPC202からの入力に基づき、印刷指示をキャンセルして処理を終了するか否かを判断する。処理を終了する旨の指示が入力された場合、図14の出力制御処理も終了する。他方、処理を続行する旨の指示が入力された場合、レベル比較部205はステップS408からの処理を繰り返す。
さて、「検証者が選択可能なマスクパターンを指定する入力が、クライアントPC202から与えられた」と上記のステップS404またはステップS409で判断すると、レベル比較部205は、続いて図15のステップS412以降の処理を行う。
ステップS412でレベル比較部205は、顧客に関するループ変数であるiの値を1に初期化する。続くステップS413〜S421は繰り返しループを形成している。
そして、ステップS413でレベル比較部205は、ステップS401で受け取った印刷指示が示す印刷範囲の中でi番目の顧客のデータを、顧客DB206から読み出す。
印刷指示の形式は実施形態に応じて任意であるが、例えば、印刷指示は、顧客を識別する識別情報としての口座番号の範囲を指定するとともに、印刷対象となる顧客DB206中の項目を指定する指示でもよい。以下では説明の便宜上、印刷指示として「口座番号が3876523以上3876525以下の顧客について、氏名・性別・生年月日・住所・残高の各項目を印刷せよ」という指示がステップS401で与えられた場合を具体例として説明する。
ステップS414でレベル比較部205は、印刷対象の項目に関するループ変数であるjの値を1に初期化する。続くステップS415〜S419は繰り返しループを形成している。
ステップS415でレベル比較部205は、印刷対象項目のうちj番目の項目がマスク対象であるか否かを、ステップS404またはS408で指定されたマスクパターンに基づいて判断する。
例えば、図7のマスクパターン2が指定された場合、マスク対象の項目は氏名と住所である。よって、上記の例のように印刷指示により印刷対象項目として氏名・性別・生年月日・住所・残高が指定された場合、j=1またはj=4のときにはステップS415で「j番目の項目がマスク対象である」と判断される。
そして、印刷対象項目のうちj番目の項目がマスク対象でなければ、処理はステップS416に移行する。逆に、j番目の項目がマスク対象であれば、処理はステップS417に移行する。
ステップS416でレベル比較部205は、i番目の顧客のj番目の項目のデータをマスク化せずに使用して、当該データを出力するための制御を行う。例えば、上記の例でi=1かつj=2のとき、レベル比較部205は、「男」という性別のデータをそのまま出力するための制御を行う。
他方、ステップS417では、レベル比較部205は、j番目の項目のデータをマスク化して、当該データを出力するための制御を行う。ステップS417の詳細は図16とともに説明するが、例えば、上記の例でi=1かつj=1のときの例を挙げると次のとおりである。
すなわち、この例では、i番目の顧客のj番目の項目のデータとは、図5に示すように「櫨田 太郎」という氏名の文字列である。よって、ステップS416でレベル比較部205は、「櫨田 太郎」という文字列に対するマスク化の処理を行い、具体的には、「櫨」という文字以外を黒い矩形により秘匿するよう、出力を制御する。
ステップS416またはS417の実行後、処理はステップS418に移行する。なお、ステップS416とS417の処理はそれぞれ、例えば、プリンタ203に対して出力される一連の命令(例えばページ記述言語による命令)のうち、i番目の顧客のj番目の項目の印刷に関する部分を生成することを含んでもよい。
ステップS418でレベル比較部205は、i番目の顧客に関してすべての印刷対象項目を処理したか否かを判断する。レベル比較部205がi番目の顧客に関してまだ処理していない印刷対象項目が残っている場合、処理はステップS419に移行する。逆に、レベル比較部205がi番目の顧客に関してすべての印刷対象項目を処理し終えた場合、処理はステップS420に移行する。
ステップS419でレベル比較部205はループ変数jに1を足す。そして、処理はステップS415に戻る。
また、ステップS420では、レベル比較部205は、印刷指示で指定された印刷対象の顧客をすべて処理したか否かを判断する。レベル比較部205がまだ処理していない顧客が残っている場合、処理はステップS421に移行する。逆に、印刷指示で指定された印刷対象の顧客をすべてレベル比較部205が処理し終えた場合、処理はステップS422に移行する。
ステップS211でレベル比較部205はループ変数iに1を足す。そして、処理はステップS413に戻る。
ステップS422では、プリンタ203が、レベル比較部205による上記ステップS412〜S421の制御の結果にしたがって、検証用の帳票を印刷する。例えば、レベル比較部205がプリンタドライバを含む場合、レベル比較部205がステップS416またはS417で生成した命令にしたがって、プリンタ203はステップS422で帳票を印刷する。
例えば、上記のように「口座番号が3876523以上3876525以下の顧客について、氏名・性別・生年月日・住所・残高の各項目を印刷せよ」という印刷指示が与えられ、図7の「マスクパターン2」が指定されているとする。すると、ステップS422でプリンタ203から出力されるのは、図1のような検証用帳票101である。
こうして検証用帳票101が出力されると、図14〜15の出力制御処理は終了する。
続いて、ステップS417の詳細について図16を参照して説明する。図16は、文字列のマスク化処理のフローチャートである。図16のマスク化処理は、第1実施形態では、項目名とマスク化対象の文字列(説明の便宜上、Xとする)を引数とする処理である。
ステップS501でレベル比較部205は、文字列X中の文字を1つずつ処理していくためのループ変数kに1を設定する。続くステップS502〜S504は繰り返しループを形成している。
ステップS502でレベル比較部205は、文字列Xのk番目の文字の各種スコアを文字スコアDB209から読み出し、総合スコアを計算する。なお、上述のとおり、第1実施形態では、文字識別情報として文字コードが使われているので、図10の文字スコアDB209において「文字コード」列と「文字」列の値は等しい。よって、ステップS502でレベル比較部205は、文字列Xからk番目の文字(説明の便宜上chとする)を取り出し、取り出した文字chを「文字コード」列のキーとして使って文字スコアDB209を検索し、検索されたエントリから各種スコアを読み取る。
具体的には、レベル比較部205は、外字スコアEhと、図16のマスク化処理に引数として与えられた項目名が示す項目の出現頻度スコアFj’hと、画数スコアShを文字スコアDB209から読み出す。
なお、以下では、図15のステップS417において印刷対象の項目のうちj番目の項目に関して図16の処理が呼び出されたものとし、印刷対象の項目のうちj番目の項目は顧客DB206の項目の中ではj’番目であるとする。例えば、図1の検証用帳票101の印刷に関して、氏名は、印刷対象の項目のうち1番目の項目であり、図5の顧客DB206の項目の中では2番目の項目である。よって、図1の検証用帳票101の印刷に関しては、j=1のときj’=2である。
ステップS502でレベル比較部205は、次の式(8)のように定義される総合スコアTjhを計算し、例えばサーバ201が備えるRAMに計算結果を記憶する。
Tjh=Eh+Fj’h+Sh (8)
ステップS503でレベル比較部205は、文字列X内のすべての文字を処理したか否かを判断する。未処理の文字が残っている場合、処理はステップS504に移行し、レベル比較部205が文字列Xの文字をすべて処理し終えた場合、処理はステップS505に移行する。
ステップS504でレベル比較部205は、ループ変数kに1を足す。そして処理はステップS502に戻る。
ステップS505でレベル比較部205は、文字列Xの中で総合スコアが最大の文字を非マスク化対象文字として選定し、それ以外の文字をマスク化対象文字と決定する。なお、総合スコアが最大の文字が複数存在する場合、レベル比較部205は所定の方針にしたがって1文字あるいは複数文字を非マスク化対象文字として選定する。
上記の所定の方針は、実施形態に応じて任意である。例えば、レベル比較部205は、総合スコアが最大の文字をすべて非マスク化対象文字として選定してもよい。または、レベル比較部205は、総合スコアが最大の文字のうちで所定の位置の文字のみ(例えば、最左の文字、最右の文字、左から2番目の文字、など)を非マスク化対象文字として選定してもよい。
なお、第1実施形態では、上記の定義および図12のステップS205から、総合スコアTjhが10以上となるのは、下記2つの条件がともに成立する場合のみである。
・文字列Xは、印刷対象の項目のうちj番目の項目のデータとして、図16のマスク化処理の引数に与えられている。
・しかし、実際には顧客DB206中の当該項目に出現しない文字chが、文字列Xに含まれている。
つまり、総合スコアTjhが10以上となるのは、何らかの異常(例えば検証対象の勘定系システムにおけるバグ)がある場合である。よって、第1実施形態においてレベル比較部205は、ステップS505での例外処理として、総合スコアTjhが10以上の文字は、たとえ総合スコアTjhが最大でなくても非マスク化対象文字として選定してもよい。
最後に、ステップS506でレベル比較部205は、ステップS505で非マスク化対象文字として選定しなかった文字をマスク化して秘匿し、処理結果を返す。
以上のとおり、第1実施形態によれば、指定されたマスクパターンに応じて、例えば図1の検証用帳票101のような形で帳票が印刷される。第1実施形態の利点については図1〜3を参照して概要を説明したが、図4〜16とともに説明した詳細をふまえて再度第1実施形態の利点について、いくつかの比較例と比較しながら述べれば以下のとおりである。
例えば銀行における勘定系システム等のシステム開発においては、多くの場合、帳票が正しく印刷されるか否かという試験(つまり検証作業)をともなう。しかし、検証作業を行う人員(図14〜15の説明における「検証者」)は、大抵の場合、銀行の顧客の個人情報を参照する権限のある銀行員等ではなく、システム構築受託会社やその請負会社等の社員等、個人情報を参照する権限のない者である。よって、実際の顧客の個人情報を秘匿した状態での検証作業を可能とすることが望ましい。
実際の顧客の個人情報を秘匿した状態での検証作業を可能とするための1つの解決法は、実際の顧客のデータ(以下「本番データ」という)ではなく、検証作業用に作成した仮想のデータ(以下「仮想データ」という)を用いて検証作業を行うことである。例えば、顧客DB206に本番データの代わりに仮想データを格納しておけば、図2の非マスク化帳票102のような形式で帳票を印刷しても、検証者に対して本番データを秘匿しておくことが可能である。
しかし、仮想データを用いた検証作業では、「たとえ仮想データでは正常に帳票が印刷されるとしても、本番データを使ったときに本当に帳票が正常に印刷されるという確証がない」という問題が常につきまとう。例えば、特殊な顧客名、住所、その他諸々のイレギュラーな要素が本番データにはあるかもしれず、仮想データではそれらのイレギュラーな要素をカバーしきれていないかもしれない。
そこで、「イレギュラーな要素を含みうる本番データに対しても帳票が正常に印刷される」という確証のある、高品質な勘定系システムを構築するには、やはり本番データを使った検証作業を行うことが好ましい。ところが、本番データは現実の個人情報を含むので、本番データを使った検証作業においては、個人情報を参照する権限のない検証者に対して個人情報を秘匿することが望ましい。
しかしながら、単純に例えば「氏名を秘匿するために、氏名を黒塗りにすることでマスク化する」といった手法を採用すると、図3の全体マスク化帳票103のような出力が得られる。その結果、例えば「氏名を表す文字列が正しく氏名の列のところに印刷されているか否か」といった検証すら不能になり、検証作業としての趣旨が没却されてしまう。
そこで、他の手法として、例えば「帳票において個人情報に当たる部分は、暗号化した画像として印刷し、個人情報を参照する権限のある者であれば後から暗号化画像を復号して個人情報を可視化することができるようにする」という手法も考えられる。
この手法によれば、検証者に個人情報を参照する権限がなければ、暗号化画像を見ても個人情報が分からないので、個人情報の秘匿は達成される。しかし、やはり図3の比較例などと同様に、個人情報を参照する権限のない検証者にとっては、例えば「氏名を表す文字列が正しく氏名の列のところに印刷されているか否か」などの検証すら、不可能である。
もちろん、個人情報を参照する権限のある検証者(例えば銀行員)ならば、暗号化画像を復号することで帳票の本来の印刷内容を知ることができ、検証作業が可能である。しかし、それではそもそもシステム開発会社に勘定系システムの開発業務を委託した意味が没却されてしまう。
このように、個人情報の秘匿と本番データを使った検証作業とを両立させるには、困難がある。
他方で、個人情報の一部ではあっても、当該一部のみを表示する分には個人の特定につながらず、問題とならないものに関する検証作業(例えば、「個人情報に含まれる外字が正しく印刷されるか」といった検証作業)もある。また、図3の比較例では、「氏名の欄に金額などの数値が誤って印刷されていないか」、「誤って空欄になっていないか」といったことの検証すら不可能だが、個人を特定しない範囲で一部の文字を印刷すれば、ある程度の確信度をもって検証可能である事柄も多い。
第1実施形態によれば、例えば図1の検証用帳票101のように、マスクパターンに応じてマスク化される各項目では、個人を特定しない範囲で部分的に非マスク化対象文字のみがそのまま表示される。そして、非マスク化対象文字としては、確認の優先度が高い文字やデータ同士を差異化する鍵となりうる文字が、総合スコアに基づいて優先的に選定される。よって、第1実施形態によれば、個人情報の秘匿と本番データを使った検証作業をうまく両立することが可能となる。
なお、確認の優先度が高い文字の例は、外字や、例外処理用に出現頻度スコアとして特殊な値10が割り当てられた文字などである。また、データ同士を差異化する鍵となりうる文字の例は、出現回数の少ない文字や、画数の多い文字などであり、これらの文字は比較的珍しく、一見して特徴的なので、検証時の手がかりとして有効である。
例えば、氏名の五十音順に顧客のデータを並べて出力する帳票に関する検証作業では、「田中」のような一般的な姓の顧客が大勢いる場合、同姓の顧客のデータが並ぶかもしれない。このとき、もし「田」または「中」が非マスク化対象文字として選定されると、正しく各顧客の氏名が印刷されているのか、誤って1人の顧客の氏名が繰り返し印刷されているのか、検証が難しい。
しかし「田」や「中」は氏名における出現頻度が高く、外字でもなく、画数も少ないので、総合スコアは比較的低い。よって、第1実施形態によれば、「田中」という同姓の大勢の顧客のデータに関しては、各顧客を区別するのに有効な、下の名前に含まれる文字が非マスク化対象文字として選定される。その結果、マスク化された氏名は、個々の顧客の氏名を特定することはできない状態でありながらも、(異なる氏名に対しては異なる文字が非マスク化対象文字として選定されることが多いので)氏名同士の区別がつけやすい状態で、印刷される。よって、少数の非マスク化対象文字を手がかりとして検証作業を行うことも可能となる。
このように、第1実施形態によれば、個人情報に関するセキュリティを保ちながらも、本番データに現れる各種のイレギュラーな要素を網羅した検証作業を行うことが可能となる。また、非マスク化対象文字を適切に定義された総合スコアにしたがってレベル比較部205が選定することで、検証作業の効率化も可能となる。なぜなら、検証者は、帳票に印刷される大量の文字すべてを見て検証する代わりに、少数の非マスク化対象文字のみを見て検証作業を行えばよいからである。
したがって、第1実施形態によれば、本番データを用いた効率的な検証作業により、品質の高い勘定系システムが提供されるようになる。
続いて、第2実施形態について説明する。第1実施形態と第2実施形態の違いは、文字を出力する優先度を表す総合スコアの定義である。第1実施形態に関して、上記の説明では総合スコアの具体的な算出方法を例示したが、もちろん総合スコアの定義は実施形態によって様々である。
例えば、式(2)中の定数0および1は、実施形態に応じて任意の他の値に置き換えられてもよい。
また、出現率rjhが低いほど出現頻度スコアFjhが高くなるように、式(5)で出現率rjhの逆数qjhをとり、全文字数njを使ってそのqjhを式(6)のように正規化するという、出現頻度スコアFjhの定義は、あくまでも一例である。実施形態によっては、逆数をとる代わりに、出現率rjhに対して単調減少する任意の関数を使うこともできるし、式(6)以外の方法で正規化された出現頻度スコアを利用することもできる。
同様に、式(7)の画数スコアShも、実施形態によっては違うように定義されていてもよく、例えば、式(7)中の0、13、0.1という定数は、実施形態に応じて別の数値でもよいし、画数スコアShは画数shの任意の関数でよい。また、特定画数(式(7)では13)は、式(7)のように項目によらず一律の値でもよいが、項目ごとに異なる値でもよい。
また、式(8)の総合スコアTjhの定義も、実施形態によって様々に変形されてよい。総合スコアは、外字スコアEhと出現頻度スコアFj’hと画数スコアShのうち少なくとも1つに基づく任意の関数であればよく、例えば(8)のような算術和の代わりに、所定の重み係数を用いた重み付け和を利用することもできる。
なお、式(8)の総合スコアTjhの定義に応じて、総合スコアTjhが通常とりうる値の範囲も異なる。よって、その範囲にない適宜の値を、図12のステップS205における「10」という値の代わりに用いることが好ましい。
このように、総合スコアの定義は実施形態に応じて様々に変えることができる。第2実施形態は、総合スコアの定義を変えた場合の一例である。
具体的には、第2実施形態において文字chの総合スコアは、顧客DB206の表示項目によらず一律に、次の式(9)のように定義される。
Th=Eh (9)
なお、式(9)の定義から明らかに、第2実施形態においては、文字スコアDB209中の画数スコアや出現頻度スコアの項目は省略可能であり,これらの項目に値を設定するための前処理(つまり図12〜13の処理)も省略可能である。
式(9)により定義された総合スコアThを利用する第2実施形態は、例えば、外字が正しく印刷されるか否かを検証するための外字出力テストに好適である。
図17は、第2実施形態において外字出力テスト用に印刷される帳票を例示する図である。具体的には、図17の外字検証用帳票104は、「氏名、性別、生年月日、住所、残高」をマスク項目として定義する図7には不図示のマスクパターンが指定された場合の例である。
式(9)によれば、第2実施形態における総合スコアThは、文字chが外字なら1であり、文字chが外字でなければ0である。よって、式(9)の総合スコアThにしたがってレベル比較部205が図14〜15の出力制御処理を行うと、図17のように、外字である《吉》のみが非マスク化対象文字として選定され、他の文字は黒い矩形により秘匿される。
したがって、図17の外字検証用帳票104は、個人情報を参照する権限のないシステム開発者等に対して個人情報を秘匿しつつ、システム開発者等が実際の顧客DB206のデータを用いて、外字が問題なく出力されるか否かの検証を行うことを可能とする。よって、第2実施形態は、外字出力テストに好適である。
このように、検証の目的に応じて適宜総合スコアの定義を変えることで、個人情報を参照する権限のない者による検証を可能とすることと、個人情報を秘匿することを両立することができる。
続いて、第3実施形態について説明する。第3実施形態では、マスクの外観が上記の第1・第2実施形態とは異なる。
第1・第2実施形態では、個々の文字をマスク化する際に、レベル比較部205は、どのマスク化対象文字でも一律に、黒い矩形により秘匿する。しかし、マスクの外観は実施形態に応じて任意である。例えば、マスク化対象文字をマスク化するのに、レベル比較部205は、当該マスク化対象文字の上にマスク用の画像を重ねてもよいし、当該マスク化対象文字を所定の記号に置換してもよい。
マスク用の画像は、マスク化対象文字が透けて見えることのないように不透明のもので、かつ、マスク化対象文字を覆うだけの大きさがあれば、任意である。図1では黒い矩形が使われているが、色は黒でなくてもよく、1色で塗りつぶすのではなく模様がついていてもよく、形状は矩形でなくてもよい。また、連続する複数の文字がいずれもマスク化対象文字であるとき、図1のように分離したマスクで個々の文字を秘匿するのではなく、連続した複数のマスク化対象文字を一続きのマスクで秘匿してもよい。
また、マスク化対象文字を置き換えるための上記所定の記号は任意であるが、レベル比較部205は、マスク化対象文字を例えば、「■」、「□」、「◎」、「〓」などの記号に置換することで秘匿してもよい。つまり、マスクとして使われるのは、所定の記号でもよい。
このように、実施形態に応じてマスクの外観は様々であるが、第3実施形態では、レベル比較部205が、異なるマスク化対象文字に対して共通する一律なマスクを使う代わりに、マスク化対象文字をレンダリングした画像を暗号化する。それにより、マスク化対象文字は、人間が見ても読めない状態で出力されるので、個人情報を参照する権限のない者に対する情報の秘匿が実現される。
さらに、第3実施形態では、個人情報を参照する権限のある者による事後的な復号により、印刷された帳票の全内容が確認可能となる。よって、例えば、何らかの理由で非マスク化対象文字だけからでは検証結果に確信が持てないなどの場合にも、第3実施形態によれば、個人情報を参照する権限のある者の一時的な協力を得ることで、検証作業を円滑に進めることが可能となる。
具体的には、第3実施形態では、図16のステップS506のレベル比較部205の動作が第1実施形態とは異なる。第3実施形態におけるステップS506は、マスク化対象文字をレンダリングして画像化する処理と、レンダリングにより得られた画像を、例えば上記の特許文献5に記載の手法により暗号化する処理を含む。
以下では、印刷対象の1人目の顧客の氏名である「櫨田 太郎」が文字列Xとして与えられた場合を例として、図16のステップS506の処理が第3実施形態ではどのように変形されるかについて、より具体的に説明する。なお、この例では、上記のとおりステップS505では「櫨」のみが非マスク化対象文字として選定されている。
第3実施形態のステップS506において、レベル比較部205は、まず、「櫨田 太郎」という文字列全体を、図2の非マスク化帳票102のようにそのまま出力する場合と同様にレンダリングしたレンダリング画像を生成する。そして、レベル比較部205は、生成したレンダリング画像のうち、マスク化対象文字である「田」、「太」および「郎」が出力される領域を、暗号化する対象の領域(以下、「部分領域」という)として選択する。
なお、1つの項目(例えば氏名)の中に複数のマスク化対象文字がある場合、レベル比較部205は、レンダリング画像内で複数のマスク化対象文字が出力される領域をまとめて1つの部分領域として扱うものとして、以下の説明を行う。つまり、部分領域の形状は飛び石状であってもよい。しかし、レベル比較部205は、レンダリング画像内で複数のマスク化対象文字が出力されるそれぞれの領域を個別の部分領域として扱い、以下に説明する処理を複数の部分領域に対してそれぞれ行うこともできる。
さて、レベル比較部205は、部分領域を選択すると、選択した部分領域を暗号鍵に基づいて変換する。変換後の画像を、以下では「処理画像」という。また、暗号鍵は、図6のユーザID管理DB207で管理されるユーザのうち、検証権限が「あり」の者のみに通知される。
部分領域を変換して処理画像を得る手法は様々である。例えば、レベル比較部205は、部分領域を複数の微小領域に分割し、分割した複数の微小領域を暗号鍵に基づいて並べ替えるスクランブル処理を行うことで、部分領域を処理画像に変換してもよい。あるいは、レベル比較部205は、部分領域を任意の圧縮方法で圧縮データに変換し、圧縮データの各ビットを任意の大きさの白画素または黒画素として配列することで、処理画像を生成してもよい。以上のような変換により、人間が視覚的に元の文字を理解することができないように、処理画像が生成される。
そして、レベル比較部205は、部分領域の位置を特定可能にするために、上記のような変換により得た処理画像の画素値を規則的に変換する。例えば、レベル比較部205は、処理画像の横方向に関して一定の周期で画素値を変換し、縦方向に関して一定の周期で画素値を変換することにより、概ね縞状の模様を成すような変換画像を生成することができる。より具体的には、レベル比較部205は、処理画像を白黒の市松模様画像と重ねたときに黒い部分と重なる部分の画素値を反転させることで、処理画像から変換画像を生成してもよい。
レベル比較部205は、生成した変換画像自体を、マスク化対象文字を暗号化によりマスク化した暗号化画像として用いてもよい。または、レベル比較部205は、部分領域の位置を特定するために特定のマーカーを変換画像に付加し、付加後の画像を暗号化画像として用いてもよい。
あるいは、レベル比較部205は、暗号化画像の復号化の妥当性を検証するための特定のチェック用マークをレンダリング画像に付加してから、上記のようにして処理画像と変換画像を作成してもよい。いずれにしろ、暗号化画像は、個々のマスク化対象文字の形状から何らかの暗号化処理により得られる画像なので、個々のマスク化対象文字に応じて異なる画像である。
レベル比較部205は、マスク化対象文字に対応する領域に、以上のようにして生成した暗号化画像を配置し、非マスク化対象文字に対応する領域に、非マスク化対象文字をそのままレンダリングした画像を配置した画像を、ステップS506の処理結果として返す。その結果として、例えば上記の「櫨田 太郎」の例の場合、図15のステップS422で出力される検証用帳票においては、「櫨」という文字は人間が見て読める状態で印刷されるが、その他の3文字は、人間が見ても読めない状態に暗号化されて印刷される。
そして、上記の暗号鍵は、個人情報を参照する権限のない者には通知されない。よって、第3実施形態によれば、個人情報を参照する権限のない者は、暗号化画像を画像復号化装置により復号して「田」・「太」・「郎」といったマスク化対象文字を読み取ることはできない。よって、個人情報の秘匿が達成される。
一方で、「櫨」という非マスク化対象文字は、個人情報を参照する権限のない者でも読み取れる状態で出力される。よって、個人情報を参照する権限のない者が、「櫨」という文字を手がかりに、帳票出力に関する検証作業を行うこともできる。
ところで、第3実施形態では、上記のようにして印刷された帳票をスキャナなどの光学機器で読み込んで得られた画像を復号化する不図示の画像復号化装置を、出力制御システム200がさらに含む。なお、以下では特に誤解のおそれがないので、暗号化画像を含む帳票がスキャナなどによって読み取られることで得られた画像中の暗号化画像のことも、単に暗号化画像という。
上記ではレベル比較部205が暗号化画像を生成する具体的処理の例をいくつか示したが、その違いに応じて、画像復号化装置の具体的動作も一部異なる。
例えば、レベル比較部205による暗号化において上記のマーカーが使われる場合、画像復号化装置は、暗号化画像に付加されたマーカーを検出し、検出したマーカーに基づいて、暗号化された暗号化画像領域を検出する。そして、画像復号化装置は、検出された暗号化画像領域のうち画素値が規則的に変換されている暗号化位置を検出し、検出された暗号化位置と復号鍵とに基づいて暗号化画像領域を復号する。
なお、ここではレベル比較部205による暗号化に使われた暗号鍵が、復号鍵として画像復号化装置に与えられる。また、画像復号化装置は、具体的には、レベル比較部205による画素値の規則的な変換の逆変換を暗号化画像領域に施し、得られた結果に対して、逆スクランブル処理または伸張処理を行うことで、暗号化画像領域を復号する。
あるいは、レベル比較部205による暗号化において上記のチェック用マークが使われる場合、画像復号化装置は、暗号化された暗号化画像領域を検出し、検出した暗号化画像領域のうち画素値が規則的に変換されている暗号化位置を検出する。
そして、画像復号化装置は、検出した暗号化位置と復号鍵とに基づいて暗号化画像領域を復号し、復号した画像から復号化の妥当性を検証するための特定のチェック用マークを検出する。もしチェック用マークが検出されなければ、画像復号化装置は、検出した暗号化位置を補正し、チェック用マークが検出されるまで、または指定の基準を満たすまで、復号化をやり直してもよい。
なお、以上のような画像復号化装置は、独立した装置でもよいし、スキャナが画像復号化装置としての機能を有していてもよい。また、サーバ201が、所定のプログラムを実行することで上記の画像復号化装置として機能してもよい。
このように、第3実施形態では、暗号化画像を含んで印刷された帳票がスキャナ等の光学機器によりスキャンされ、スキャンされた結果の画像が画像復号化装置により復号される。よって、個人情報を参照する権限のある者は、復号鍵を画像復号化装置に入力することで、個人情報を参照する権限のない者が検証に用いた帳票に暗号化されて印刷されている個人情報を知ることができ、必要に応じてより詳細に帳票の出力結果を検証することができる。
なお、本発明は上記の実施形態に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
上記の各実施形態は、開発対象のシステムが銀行の勘定系システムである場合の例だが、開発対象のシステムは任意である。例えば、金融分野や医療分野のシステム、あるいは小売業やサービス業における顧客管理システムなど、任意のシステムに対して上記の実施形態を適用することができる。なお、マスク化により保護する対象は、当然ながら、個人情報以外の種類の機密情報であってもよい。
また、開発対象のシステムに応じて、当該システムで使われる文字集合および符号化方式は任意である。すなわち、文字集合Cは実施形態に応じて様々であり、文字識別情報として何を利用するかも実施形態に応じて任意であり、たとえ文字識別情報として文字コードを利用するとしても、どの符号化方式の文字コードを使うかは、実施形態に応じて任意である。
もちろん、印刷対象の帳票の形式も、図面に例示したものに限られず、実施形態に応じて任意である。
なお、実施形態によっては、マスクパターンの選択の余地がなくてもよい。つまり、1つの所定のマスクパターンが常に使われてもよい。
また、図4に示した出力制御システム200の構成は一例である。出力制御システム200は、クライアントサーバシステムではなくスタンドアロンシステムでも構わない。
さらに、各種DBの形式も任意である。上記の説明においては各種DBの例をテーブル形式で例示したが、各種DBは、テーブル形式のリレーショナルDBでなくてもよく、例えば、XML(eXtensible Markup Language)形式など他の形式のDBでもよい。
また、図10の文字スコアDB209は、図5の顧客DB206の複数の項目に応じて出現頻度スコアの列を複数有しているが、さらに、顧客DB206の項目別の総合スコアの列を有していてもよい。その場合、レベル比較部205は、図11〜13の前処理の後に、さらに、文字スコアDB209中の各文字について、項目別にそれぞれ総合スコアを計算し、計算結果を文字スコアDB209に格納してもよい。
例えば、レベル比較部205は、図11と図13の処理を先に行い、その後、図12の処理を行ってもよい。そして、図12の処理において、レベル比較部205は、ステップS207の直後に、現在注目している文字についてのj番目の表示項目に関する総合スコアを計算し、文字スコアDB209に計算結果を格納してもよい。
すると、レベル比較部205は、印刷時に図16のステップS502において、総合スコアをその都度計算する代わりに、こうして項目別に予め計算した総合スコアを文字スコアDB209から単に読み出すだけでよくなる。すなわち、レベル比較部205は出力制御処理の実行時に、計算により総合スコアを取得してもよいし、文字スコアDB209からの読み出しにより総合スコアを取得してもよい。
なお、実施形態によっては、顧客DB206中の複数の項目をまとめてレベル比較部205が出現頻度スコアを算出してもよく、それに応じて文字スコアDB209の列も適宜変更可能である。例えば、レベル比較部205は、顧客DB206における住所と氏名をあわせた範囲での出現頻度に基づいて、住所と氏名に共通して使われる出現頻度スコアを算出し、文字スコアDB209に格納してもよい。
ただし、項目ごとに文字の分布の特徴が大きく異なる場合は、第1実施形態のように項目別に出現頻度スコアを算出することが有効である。例えば、「県」という文字は、住所ではデータ同士の区別にあまり有益ではないかもしれないが、氏名に関しては「県」という文字がデータ同士の区別に役立つかもしれない。
また、図16のステップS505では、文字列Xの中で総合スコアTjhが最大の文字をレベル比較部205が非マスク化対象文字として選定しているが、選定基準は実施形態により任意である。例えば、レベル比較部205は、以下の(1)〜(3)のような文字を非マスク化対象文字として選択してもよい。また、選定基準は、顧客DB206の項目ごとに異なっていてもよい。
(1)文字列Xの中で総合スコアTjhがα位以内の文字(αは1≦αを満たす所定の定数)
(2)文字列Xの中で総合スコアTjhが上位β%以内に入る文字(βは0<β<100を満たす所定の定数)
(3)文字列Xの中で総合スコアTjhがγ以上の文字(γは所定の定数)
なお、レベル比較部205は、ある種の選定基準のもとでは、i人目の顧客のj番目の項目に関して2文字以上を非マスク化対象文字として選定する可能性があるが、その場合、非マスク化対象文字が連続すると個人情報が推測しやすくなってしまう。特に、氏名のように文字数が比較的少ない項目に関しては、複数の文字が非マスク化対象文字として選定された場合、個人情報が推測しやすくなる。
例えば、ある顧客の氏名は「醍醐 學」のように、使用頻度が低く画数が多い文字ばかりかもしれない。すると、上記(3)の選定基準を採用した実施形態においては、定数γの値によっては、3文字すべてが非マスク化対象文字として選定される可能性もある。
そこで、実施形態に応じて、レベル比較部205は、非マスク化対象文字が連続しないようにするための処理をさらに行ってもよい。
例えば、非マスク化対象文字(の候補)として隣り合う2文字が選定された場合、レベル比較部205は、総合スコアTjhが1番高い第1の文字を非マスク化対象文字とし、総合スコアTjhが2番目に高い第2の文字はマスク化対象文字に変えてもよい。すると、実際には1文字のみが非マスク化対象文字となるので、連続する2文字がそのまま出力されることはなくなる。
あるいは、もし総合スコアTjhが3番目に高い第3の文字が上記第1の文字に隣接しないならば、レベル比較部205は、第2の文字をマスク化対象文字にする代わりに、第3の文字を繰り上げて非マスク化対象文字として選定してもよい。第1の文字の両隣が第2と第3の文字である場合は、レベル比較部205は、第2と第3の文字をマスク化対象文字とし、その代わりに、総合スコアTjhが4番目に高い第4の文字を繰り上げて非マスク化対象文字として選定してもよい。
例えば以上のような処理により、レベル比較部205は、たとえ非マスク化対象文字を複数選定する実施形態においても、非マスク化対象文字同士が隣り合わないようにすることができる。
また、上記の各実施形態では、「出力」の具体例として紙媒体への印刷出力を取り上げているが、印刷媒体は紙以外の媒体でもよいし、印刷以外の出力にも上記の各実施形態は適用可能である。印刷以外の出力の例としては、例えば、電子ファイルへの出力や表示装置の画面への出力が挙げられる。
一般に、プリンタドライバの出力は、プリンタ203に与えられれば、プリンタ203による印刷媒体への印刷を引き起こすが、PostScript(登録商標)などの所定のページ記述言語により記述された形式の電子ファイルとしても保存可能である。よって、レベル比較部205は、上記実施形態のように印刷媒体への印刷出力を制御することができるだけでなく、明らかに、ページ記述言語により記述された形式の電子ファイルへの出力を制御することもできる。
また、PDF(Portable Document Format)形式のファイルは、PostScript(登録商標)形式のデータから生成されるので、レベル比較部205は、PDF形式のファイルへの帳票の出力を制御することもできる。もちろん、実施形態によって、レベル比較部205は、その他の形式の電子ファイルへの出力を制御してもよい。
また、レベル比較部205は、表示装置の画面への出力を制御することもできる。例えば、レベル比較部205は、図16のステップS506において、非マスク化対象文字はそのまま画面にレンダリングし、マスク化対象文字に関してはマスク用の画像をオーバレイさせてからレンダリングを行ってもよい。あるいは、レベル比較部205は、マスク化対象文字を所定の記号ないしマスク用の画像に置換してからレンダリングを行うことで、画面への出力を制御してもよい。画面への出力を制御するための具体的実装として、レベル比較部205が表示装置のデバイスドライバを含んでいてもよい。
あるいは、レベル比較部205は、デバイスドライバよりも高いレベルで画面への出力を制御してもよい。
例えば、出力制御システム200がWebアプリケーションとして実装される場合、サーバ201は、クライアントPC202の画面に表示する内容を表すHTML(HypertText Markup Language)コードを生成してクライアントPC202に送信する。そこで、レベル比較部205は、HTMLコードの生成を制御することで、画面への出力を制御してもよい。
例えば、レベル比較部205は図16のステップS506で、マスク化対象文字をマスク用の所定の記号またはimgタグに置換し、非マスク化対象文字はそのまま用い、その結果を、文字列Xをマスク化して画面に表示するためのHTMLコードとしてもよい。それにより、レベル比較部205はクライアントPC202の画面への表示を制御し、マスク化対象文字を隠しつつ非マスク化対象文字をクライアントPC202のディスプレイに表示させることができる。
最後に、上記の種々の実施形態に関して、さらに下記の付記を開示する。
(付記1)
コンピュータに、
出力対象として指定された文字列に含まれる各文字について、所定の評価基準にしたがって評価される優先度をそれぞれ取得する優先度取得ステップと、
前記優先度に基づいて、マスク化せずに出力する非マスク化対象文字を前記文字列の中から選定する選定ステップと、
前記文字列に含まれる文字のうち、前記非マスク化対象文字はマスク化せずに、かつ前記非マスク化対象文字以外の文字であるマスク化対象文字は所定のパターンでマスク化するように、前記文字列の出力を制御する第1の出力制御ステップと、
を実行させる出力制御プログラム。
(付記2)
前記優先度は、
評価対象の文字が所定の種類の文字であれば前記優先度を高くするという評価基準、
前記評価対象の文字の画数が多いほど前記優先度を高くするという評価基準、および
前記評価対象の文字の出現頻度が低いほど前記優先度を高くするという評価基準
のうちの少なくとも1つに基づいて評価される値である、
ことを特徴とする付記1に記載の出力制御プログラム。
(付記3)
前記所定の種類とは、外字、数字、記号、ひらがな、カタカナ、漢字、アルファベットのいずれかであることを特徴とする付記2に記載の出力制御プログラム。
(付記4)
前記所定のパターンは、
異なる前記マスク化対象文字に対して共通な、所定の記号もしくは画像、または
個々の前記マスク化対象文字に応じて異なる画像であって、当該マスク化対象文字の形状から暗号化処理により得られる暗号化画像
のいずれかであることを特徴とする付記1から3のいずれか1項に記載の出力制御プログラム。
(付記5)
前記出力対象として、データベース内の1つ以上の項目それぞれの文字列が指定され、
前記所定の評価基準は、前記1つ以上の項目それぞれに応じた評価基準であり、
前記出力制御プログラムは、前記選定ステップにおいて前記コンピュータに、前記1つ以上の項目それぞれについて、当該項目に応じた前記評価基準にしたがって評価される前記優先度に基づいて、当該項目の文字列の中から前記非マスク化対象文字を選定させる、
ことを特徴とする付記1から4のいずれか1項に記載の出力制御プログラム。
(付記6)
前記1つ以上の項目のうちの所定の1つの項目に応じた前記評価基準は、
評価対象の文字が前記データベースの当該所定の1つの項目内に出現する頻度が低いほど、前記優先度を高くするという評価基準である
ことを特徴とする付記5に記載の出力制御プログラム。
(付記7)
前記出力制御プログラムは、前記コンピュータに、
マスク対象の項目を指定する入力を受け付ける入力ステップを実行させ、
前記出力対象のうち、前記入力により指定される前記マスク対象の項目に対して、前記優先度取得ステップ、前記選定ステップおよび前記第1の出力制御ステップを実行させ、
前記出力対象のうち前記マスク対象の項目以外の項目の文字列を、マスク化せずに出力するよう制御する第2の出力制御ステップを実行させる、
ことを特徴とする付記5または6に記載の出力制御プログラム。
(付記8)
前記第1の出力制御ステップでは、印刷媒体、電子ファイルまたは表示装置の画面のいずれかへの出力が制御されることを特徴とする付記1から7のいずれか1項に記載の出力制御プログラム。
(付記9)
出力対象として指定された文字列に含まれる各文字について、所定の評価基準にしたがって評価される優先度をそれぞれ取得する優先度取得部と、
前記優先度取得部が取得した前記優先度に基づいて、マスク化せずに出力する非マスク化対象文字を前記文字列の中から選定する選定部と、
前記文字列に含まれる文字のうち、前記選定部が選定した前記非マスク化対象文字はマスク化せずに、かつ前記非マスク化対象文字以外の文字であるマスク化対象文字は所定のパターンでマスク化するように、前記文字列の出力を制御する出力制御部と、
を備えることを特徴とする出力制御装置。
(付記10)
コンピュータが、
出力対象として指定された文字列に含まれる各文字について、所定の評価基準にしたがって評価される優先度をそれぞれ取得し、
前記優先度に基づいて、マスク化せずに出力する非マスク化対象文字を前記文字列の中から選定し、
前記文字列に含まれる文字のうち、前記非マスク化対象文字はマスク化せずに、かつ前記非マスク化対象文字以外の文字であるマスク化対象文字は所定のパターンでマスク化するように、前記文字列の出力を制御する、
ことを特徴とする出力制御方法。