(57)【要約】【課題】メモリの使用量を低減すること。【解決手段】情報提供装置１００は、ファイル１１０内の複数の項目のうちの利用者がデータを要求する項目と当該利用者とを示す要求情報１０１を取得する。情報提供装置１００は、ファイル１１０内の項目の組合せごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報１２１，１２２，…の中から、取得した要求情報１０１が示す利用者がデータを取得する権限を有する項目の組合せに対応する索引情報を検索する。情報提供装置１００は、検索により得られた索引情報に基づいて要求情報１０１が示す項目のデータを読み出し、読み出したデータを出力する。【選択図】図１
2012174147.tif 000002
【特許請求の範囲】
【請求項１】
記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得し、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索し、
前記記憶部に記憶されたファイルから、検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出し、
読み出した前記データを出力する、
処理をコンピュータに実行させることを特徴とする情報提供プログラム。
【請求項２】
前記ファイル内の項目の組合せごとの索引情報に前記対応する索引情報がない場合に、当該対応する索引情報を前記ファイルに基づいて作成し、
前記データを読み出す際に、作成した前記索引情報に基づいて前記読み出す処理を前記コンピュータに実行させることを特徴とする請求項１に記載の情報提供プログラム。
【請求項３】
前記ファイル内の項目の組合せごとの索引情報のうちの、当該索引情報のうちの他の索引情報と共通の項目を含む索引情報は、前記共通の項目と、前記他の索引情報を示す識別情報と、を対応付ける情報であり、
前記識別情報を含む索引情報が前記検索により得られた場合に、前記識別情報に基づいて前記他の索引情報を取得し、取得した前記他の索引情報に基づいて前記読み出す処理を前記コンピュータに実行させることを特徴とする請求項１または２に記載の情報提供プログラム。
【請求項４】
記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得し、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索し、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目のデータを前記ファイルから抽出した抽出ファイルから、検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出し、
読み出した前記データを出力する、
処理をコンピュータに実行させることを特徴とする情報提供プログラム。
【請求項５】
前記ファイル内の項目の組合せごとの前記抽出ファイルに、前記利用者情報によって特定される利用者がデータを取得する権限を有する項目の組合せに対応する抽出ファイルがない場合に、当該対応する抽出ファイルを前記ファイルに基づいて作成し、
前記データを読み出す際に、作成した前記抽出ファイルから前記対応する項目のデータの格納場所のデータを読み出す処理を前記コンピュータに実行させることを特徴とする請求項４に記載の情報提供プログラム。
【請求項６】
記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得し、
前記記憶部に記憶された前記ファイル内の項目の組合せおよびデータの秘匿化方法ごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索し、
前記記憶部に記憶された前記ファイル内の項目の組合せおよびデータの秘匿化方法ごとの、当該組合せに含まれる項目のデータを前記ファイルから抽出し、抽出したデータを当該組合せに含まれる秘匿化方法によって秘匿化した秘匿化ファイルから、検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出し、
読み出した前記データを出力する、
処理をコンピュータに実行させることを特徴とする情報提供プログラム。
【請求項７】
記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得する取得部と、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索する検索部と、
前記記憶部に記憶されたファイルから、前記検索部による検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出す読出部と、
前記読出部によって読み出されたデータを出力する出力部と、
を備えることを特徴とする情報提供装置。
【請求項８】
記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得し、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索し、
前記記憶部に記憶されたファイルから、検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出し、
読み出した前記データを出力する、
ことを特徴とする情報提供方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報提供プログラム、情報提供装置および情報提供方法に関する。
【背景技術】
【０００２】
たとえばｄａｔａ．ｇｏｖのように、様々なデータが通信ネットワークを通じて一般の利用者に公開されるようになっている（たとえば、下記特許文献１参照。）。しかし、データをそのまま公開してしまうと、データに含まれている個人情報を公開することになってしまう。そこで、データの提供元では利用者の権限に応じて、提供データに含まれる項目を取捨選択したり、データから個人が特定されないように個人情報を秘匿化したりすることで個人情報の流出を防いでいる。
【０００３】
利用者に提供されるデータは、たとえばフラットファイルなどによって管理される。フラットファイルは、たとえば、プレーンテキストまたはテキストとバイナリの混合であり、通常１行が１レコードになっている。フラットファイルのレコード内はフィールドを区切り文字（デリミタ）で区切った構造になっている。フラットファイルには、たとえばＣＳＶ（Ｃｏｍｍａ−Ｓｅｐａｒａｔｅｄ  Ｖａｌｕｅｓ）ファイルがある。
【０００４】
複数の利用者にフラットファイルのデータを提供するにあたり、複数の利用者のそれぞれの権限に応じて、提供するデータの項目を制限したり、提供するデータを秘匿化したりする。たとえば、フラットファイルから、利用者に提供可能な各項目のデータを含む利用者ファイルを利用者ごとに作成し、利用者からの要求に対して対応する利用者ファイルからデータを取得することで、利用者の権限に応じたデータ提供を行う。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−２８５４９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した従来技術では、データを提供するアプリケーションは利用者ごとにデータのファイルを作成して保持することになるため、メモリの使用量が多くなるという問題がある。たとえば、複数の利用者が同時にアクセスすると、アプリケーションは、データの提供処理が終了するまで大量のデータのファイルを保持することになるため、データを提供するためには巨大なディスクシステムを設けることになってしまう。
【０００７】
本発明は、上述した従来技術による問題点を解消するため、メモリの使用量を低減することができる情報提供プログラム、情報提供装置および情報提供方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、本発明の一観点によれば、記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得し、前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索し、前記記憶部に記憶されたファイルから、検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出し、読み出した前記データを出力する報提供プログラム、情報提供装置および情報提供方法が提供される。
【発明の効果】
【０００９】
本発明の一観点によれば、メモリの使用量を低減することができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施の形態１にかかる情報提供装置による情報提供の一例を示す図である。
【図２】図２は、実施の形態１にかかる情報提供装置の通信システムへの適用の例を示す図である。
【図３】図３は、実施の形態１にかかる情報提供装置のハードウェア構成例を示すブロック図である。
【図４】図４は、実施の形態１にかかるフラットファイルの内容の一例を示す説明図である。
【図５】図５は、実施の形態１にかかる利用者テーブルの内容の一例を示す説明図である。
【図６】図６は、実施の形態１にかかる情報提供装置の機能的構成を示すブロック図である。
【図７】図７は、実施の形態１にかかるインデックス管理テーブルの内容の一例を示す説明図である。
【図８】図８は、実施の形態１にかかるインデックスの内容の一例を示す説明図である。
【図９】図９は、実施の形態１にかかる情報提供装置による処理の一例を示すフローチャートである。
【図１０】図１０は、実施の形態１にかかるインデックスの作成処理の一例を示すフローチャートである。
【図１１】図１１は、実施の形態１にかかるデータの提供処理の一例を示すフローチャートである。
【図１２】図１２は、実施の形態２にかかるインデックスの内容の一例を示す説明図である。
【図１３】図１３は、実施の形態２にかかる情報提供装置による処理の一例を示すフローチャートである。
【図１４】図１４は、実施の形態２にかかるインデックスの圧縮処理の一例を示すフローチャートである。
【図１５】図１５は、実施の形態３にかかる情報提供装置による情報提供の一例を示す図である。
【図１６】図１６は、実施の形態３にかかる情報提供装置の機能的構成を示すブロック図である。
【図１７】図１７は、実施の形態３にかかる抽出ファイルの内容の一例を示す説明図である。
【図１８】図１８は、実施の形態３にかかる情報提供装置による処理の一例を示すフローチャートである。
【図１９】図１９は、実施の形態３にかかるインデックスの作成処理の一例を示すフローチャートである。
【図２０】図２０は、実施の形態３にかかるデータの提供処理の一例を示すフローチャートである。
【図２１】図２１は、実施の形態４にかかる情報提供装置による情報提供の一例を示す図である。
【図２２】図２２は、実施の形態４にかかる情報提供装置の機能的構成を示すブロック図である。
【図２３】図２３は、実施の形態４にかかる秘匿化ファイルの内容の一例を示す説明図である。
【図２４】図２４は、実施の形態４にかかるインデックス管理テーブルの内容の一例を示す説明図である。
【図２５】図２５は、実施の形態４にかかる情報提供装置による処理の一例を示すフローチャートである。
【図２６】図２６は、実施の形態４にかかるインデックスの作成処理の一例を示すフローチャートである。
【図２７】図２７は、実施の形態４にかかるデータの提供処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して、開示技術の好適な実施の形態を詳細に説明する。
【００１２】
（実施の形態１）
（情報提供装置による情報提供）
図１は、実施の形態１にかかる情報提供装置による情報提供の一例を示す図である。図１に示す情報提供装置１００は、利用者からの要求情報１０１に対して、索引情報１２１，１２２，…のうちの利用者のポリシ（権限）に対応する索引情報を用いてファイル１１０のデータを読み出し、読み出したデータを提供データ１０２として出力する。
【００１３】
具体的には、情報提供装置１００は、ファイル１１０をたとえば内部の記憶部に記憶している。または、ファイル１１０は、情報提供装置１００からアクセス可能な外部の記憶部に記憶されていてもよい。また、内容の異なる複数のファイル１１０が記憶されていてもよい。ファイル１１０には複数の項目のデータが含まれている。図１に示す例では、ファイル１１０には、項目１〜ｎ（ｎは自然数）のデータとしてそれぞれデータ１〜ｎが含まれている。
【００１４】
ファイル１１０は、たとえば、プレーンテキストまたはテキストとバイナリの混合であり、１行が１レコードになっており、レコード内はフィールドを区切り文字（デリミタ）で区切った構造のフラットファイルである。フラットファイルの例としてはＣＳＶファイルが挙げられる。
【００１５】
また、情報提供装置１００は、ファイル１１０のデータを要求する利用者と、利用者がデータを取得する権限を有するファイル１１０の項目の組合せ（ポリシ）と、を対応付ける権限情報をたとえば内部の記憶部に記憶している。または、権限情報は、情報提供装置１００からアクセス可能な外部の記憶部に記憶されていてもよい。
【００１６】
また、情報提供装置１００は、索引情報１２１，１２２，…をたとえば内部の記憶部に記憶している。または、索引情報１２１，１２２，…は、情報提供装置１００からアクセス可能な外部の記憶部に記憶されていてもよい。索引情報１２１，１２２，…は、ファイル１１０の項目と、ファイル１１０の項目のデータの格納場所（アドレス）と、を対応付けるファイル１１０の項目の組合せごとの索引情報である。索引情報１２１，１２２，…が示す格納場所は、ファイル１１０が記憶された記憶部における格納場所である。
【００１７】
たとえば、索引情報１２１は、項目１および項目２の組合せに対応する索引情報である。索引情報１２１においては、項目１および項目２に対してそれぞれ格納場所１および格納場所２が対応付けられている。すなわち、索引情報１２１は、項目１のデータ（データ１）は格納場所１に格納されていることを示している。また、索引情報１２１は、項目２のデータ（データ２）は格納場所２に格納されていることを示している。
【００１８】
索引情報１２２は、項目１および項目３の組合せに対応する索引情報である。索引情報１２２においては、項目１および項目３に対してそれぞれ格納場所１および格納場所３が対応付けられている。すなわち、索引情報１２２は、項目１のデータ（データ１）は格納場所１に格納されていることを示している。また、索引情報１２２は、項目３のデータ（データ３）は格納場所３に格納されていることを示している。
【００１９】
情報提供装置１００は、要求情報１０１を利用者から取得する。要求情報１０１は、ファイル１１０のデータを要求する情報である。たとえば、要求情報１０１は、要求元の利用者と、ファイル１１０の項目１〜ｎのうちの利用者がデータを要求する項目と、を示す情報である。図１に示す例では、要求情報１０１は、要求元としての利用者１と、利用者１が要求する項目としての項目２と、を示している。なお、複数のファイル１１０が記憶されている場合は、要求情報１０１には、複数のファイル１１０のうちの利用者が要求するデータが含まれるファイルを示す情報を含んでいてもよい。
【００２０】
情報提供装置１００は、索引情報１２１，１２２，…の中から、要求情報１０１が示す利用者がデータを取得する権限を有する項目の組合せに対応する索引情報を取得する。具体的には、情報提供装置１００は、記憶された権限情報に基づいて、要求情報１０１が示す利用者に対応する項目の組合せを特定する。図１に示す例では、要求情報１０１が示す利用者１に対応する項目の組合せは、項目１，２の組合せであるとする。そして、情報提供装置１００は、索引情報１２１，１２２，…の中から、特定した組合せに対応する索引情報を検索する。図１に示す例では、情報提供装置１００は、特定した項目１，２の組合せに対応する索引情報１２１が検索により得られる。
【００２１】
また、情報提供装置１００は、特定した組合せに対応する索引情報が索引情報１２１，１２２，…の中にない場合は、特定した組合せに対応する索引情報を作成してもよい。情報提供装置１００は、作成した索引情報を、情報提供装置１００の内部または外部の記憶部に記憶することで、作成した索引情報を索引情報１２１，１２２，…に追加する。
【００２２】
情報提供装置１００が索引情報を作成する場合は、索引情報をあらかじめ情報提供装置１００の内部または外部の記憶部に記憶しておかなくてもよい。または、ファイル１１０の項目の一部の組合せに対応する索引情報のみを情報提供装置１００の内部または外部の記憶部に記憶しておいてもよい。この場合は、取得された要求情報１０１に基づく項目の組合せに対応する索引情報のみが記憶されるため、索引情報１２１，１２２，…が記憶される記憶部（メモリ）の使用量を低減することができる。
【００２３】
または、ファイル１１０の項目のすべての組合せに対応する索引情報１２１，１２２，…を情報提供装置１００の内部または外部の記憶部に記憶しておいてもよい。この場合は、情報提供装置１００が特定した組合せに対応する索引情報は常に索引情報１２１，１２２，…に含まれているため、情報提供装置１００は新たな索引情報を作成する処理を行わなくてもよい。このため、要求情報１０１の取得時の情報提供装置１００の処理量を低減することができる。
【００２４】
情報提供装置１００は、取得した索引情報に基づいて、ファイル１１０が記憶された記憶部から、要求情報１０１が示す項目のデータを読み出す。図１に示す例では、情報提供装置１００は、取得した索引情報１２１に基づいて、要求情報１０１が示す項目２の格納場所２を特定する。そして、情報提供装置１００は、特定した格納場所２のデータを読み出すことでデータ２を読み出す。
【００２５】
情報提供装置１００は、読み出したデータを提供データ１０２として出力する。図１に示す例では、要求情報１０１が示す項目２のデータ（データ２）が提供データ１０２として出力される。なお、情報提供装置１００は、提供データ１０２を利用者に応じて秘匿化して出力してもよい。情報提供装置１００から出力された提供データ１０２は、たとえばネットワークを介して要求情報１０１の送信元の端末装置へ送信される。
【００２６】
なお、情報提供装置１００が取得した索引情報に要求情報１０１が示す項目が含まれていない場合は、要求情報１０１が示す項目のデータが読み出されず、要求情報１０１が示す項目のデータが出力されない。たとえば、図１に示す例において、要求情報１０１に含まれる項目が項目３であった場合は、利用者のポリシに対応する索引情報１２１には項目３が含まれていないため、項目３のデータは出力されない。これにより、利用者が取得する権限を有していないデータを出力しないようにすることができる。
【００２７】
ここでは、要求情報１０１がファイル１１０の項目１〜ｎのうちの利用者がデータを要求する項目を示す情報である場合について説明したが、要求情報１０１はファイル１１０の項目１〜ｎのうちの特定の項目を示していなくてもよい。この場合は、たとえば、情報提供装置１００は、利用者のポリシに対応する全項目のデータを読み出して出力する。
【００２８】
（通信システムへの適用例）
図２は、実施の形態１にかかる情報提供装置の通信システムへの適用の例を示す図である。図１に示した情報提供装置１００は、たとえば図２に示す通信システム２００に適用することができる。通信システム２００は、情報提供装置１００と、端末装置２２１〜２２ｎと、ネットワーク２３０と、を含んでいる。情報提供装置１００と端末装置２２１〜２２ｎは、ネットワーク２３０を介して互いに接続されている。
【００２９】
ネットワーク２３０は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワークである。また、ネットワーク２３０は、有線のネットワークであってもよいし、無線のネットワークであってもよいし、有線および無線が混在したネットワークであってもよい。
【００３０】
端末装置２２１は、たとえば端末装置２２１の利用者の操作にしたがって情報提供装置１００へ要求情報（たとえば図１に示した要求情報１０１）送信する。情報提供装置１００は、端末装置２２１から送信された要求情報に対して、端末装置２２１の利用者のポリシに応じてファイル１１０のデータを取得する。そして、情報提供装置１００は、取得したデータを提供データ１０２として端末装置２２１へ送信する。
【００３１】
同様に、端末装置２２２〜２２ｎは、たとえばそれぞれ端末装置２２２〜２２ｎの利用者の操作にしたがって情報提供装置１００へ要求情報を送信する。これに対して、情報提供装置１００は、端末装置２２２〜２２ｎのそれぞれの利用者のポリシに応じてファイル１１０のデータを取得する。そして、情報提供装置１００は、取得したデータをそれぞれ提供データ１０２として端末装置２２２〜２２ｎへ送信する。
【００３２】
（情報提供装置１００のハードウェア構成例）
図３は、実施の形態１にかかる情報提供装置のハードウェア構成例を示すブロック図である。図１，図２に示した情報提供装置１００は、たとえば図３に示すコンピュータ３００によって実現することができる。コンピュータ３００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０３と、磁気ディスクドライブ３０４と、磁気ディスク３０５と、光ディスクドライブ３０６と、光ディスク３０７と、通信Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０８と、ユーザＩ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０９と、を備えている。また、各構成部はバス３２０によってそれぞれ接続されている。
【００３３】
ここで、ＣＰＵ３０１は、コンピュータ３００の全体の制御を司る。ＲＯＭ３０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ３０３は、ＣＰＵ３０１のワークエリアとして使用される。磁気ディスクドライブ３０４は、ＣＰＵ３０１の制御にしたがって磁気ディスク３０５に対するデータのリード／ライトを制御する。磁気ディスク３０５は、磁気ディスクドライブ３０４の制御で書き込まれたデータを記憶する。
【００３４】
光ディスクドライブ３０６は、ＣＰＵ３０１の制御にしたがって光ディスク３０７に対するデータのリード／ライトを制御する。光ディスク３０７は、光ディスクドライブ３０６の制御で書き込まれたデータを記憶したり、光ディスク３０７に記憶されたデータをコンピュータに読み取らせたりする。
【００３５】
通信Ｉ／Ｆ３０８は、通信回線を通じてネットワーク２３０（図２参照）に接続され、ネットワーク２３０を介して端末装置２２２〜２２ｎ（図２参照）に接続される。そして、通信Ｉ／Ｆ３０８は、ネットワーク２３０とコンピュータ３００のインターフェースを司り、端末装置２２２〜２２ｎとの間のデータの入出力を制御する。通信Ｉ／Ｆ３０８には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００３６】
ユーザＩ／Ｆ３０９は、コンピュータ３００とコンピュータ３００の管理者との間のインターフェースを司る。たとえば、ユーザＩ／Ｆ３０９には、ディスプレイ、マウス、キーボードなどを用いることができる。また、コンピュータ３００を管理者が操作したりモニタしたりしない場合は、ユーザＩ／Ｆ３０９を省いた構成にしてもよい。
【００３７】
また、図２に示した端末装置２２２〜２２ｎのそれぞれも、たとえばコンピュータ３００によって実現することができる。この場合は、通信Ｉ／Ｆ３０８は、ネットワーク２３０を介して情報提供装置１００に接続される。そして、通信Ｉ／Ｆ３０８は、情報提供装置１００との間のデータの入出力を制御する。また、ユーザＩ／Ｆ３０９には、利用者から要求情報１０１が入力される入力インターフェースと、利用者へ提供データ１０２を出力する出力インターフェースと、が含まれる。
【００３８】
（フラットファイルの内容）
図４は、実施の形態１にかかるフラットファイルの内容の一例を示す説明図である。図４に示すフラットファイル４００は、図１に示したファイル１１０の一例である。フラットファイル４００は、たとえば、プレーンテキストまたはテキストとバイナリが混在したデータである。フラットファイル４００は、Ｎａｍｅ１（氏）、Ｎａｍｅ２（名）、Ｓａｌａｒｙ（給料）およびＣｏｄｅ（識別コード）のフィールドを有する。各フィールドにデータを設定することで、人物データ４００−１〜４００−４がレコードとして記憶されている。
【００３９】
フラットファイル４００の各レコードは、それぞれ特定の人物に関するＮａｍｅ１、Ｎａｍｅ２、ＳａｌａｒｙおよびＣｏｄｅを示している。また、フラットファイル４００の各レコードは、Ｎａｍｅ１、Ｎａｍｅ２、ＳａｌａｒｙおよびＣｏｄｅが区切り文字で区切られた構造になっている。区切り文字はたとえばカンマなどである。
【００４０】
一例として、人物データ４００−１を例に挙げると、Ｎａｍｅ１「ＳＡＬＡＺＡＲ」、Ｎａｍｅ２「ＫＡＴＥ」、Ｓａｌａｒｙ「４３９４７６」およびＣｏｄｅ「ＤＸ２ＸＳ２」が記憶されている。フラットファイル４００は、たとえば、図３に示したＲＯＭ３０２、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶されている。
【００４１】
（利用者テーブル５００の内容）
図５は、実施の形態１にかかる利用者テーブルの内容の一例を示す説明図である。図５に示す利用者テーブル５００は、フラットファイル４００のデータを要求する利用者と、利用者がデータを取得する権限を有するファイル１１０の項目の組合せ（ポリシ）と、を対応付ける権限情報の一例である。利用者テーブル５００は、利用者、ポリシおよびシードのフィールドを有する。各フィールドに情報を設定することで、利用者データ５００−１，５００−２，…がレコードとして記憶されている。ここで、利用者は、情報提供装置１００に対してフラットファイル４００のデータの提供を要求する利用者である。利用者には、たとえば「Ａｌｉｃｅ」、「Ｂｏｂ」、「Ｅｖｅ」などがある。
【００４２】
ポリシは、フラットファイル４００の項目の組合せのうちの、利用者が取得する権限を有する項目の組合せである。フラットファイル４００の項目は、たとえば、フラットファイル４００の列（フィールド）と行（レコード）によって表される。ポリシには、たとえば「ｐ１」、「ｐ２」、「ｐ３」などがある。「ｐ１」、「ｐ２」、「ｐ３」のそれぞれは、フラットファイル４００の項目（列と行）の異なる組合せを示している。
【００４３】
シードは、フラットファイル４００のデータを利用者へ提供する際に、提供するデータを秘匿化するためのパラメータである。情報提供装置１００は、利用者へ提供データ１０２を出力する際に、提供データ１０２を利用者のシードに基づいて完全にまたは部分的に秘匿化して提供する。シードには、たとえば「ｓ１」、「ｓ２」、「ｓ３」などがある。「ｓ１」、「ｓ２」、「ｓ３」はそれぞれ異なるパラメータを示している。
【００４４】
一例として、利用者データ５００−１を例に挙げると、利用者「Ａｌｉｃｅ」、ポリシ「ｐ１」およびシード「ｓ１」が記憶されている。利用者テーブル５００は、たとえば、図３に示したＲＯＭ３０２、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶されている。
【００４５】
（情報提供装置１００の機能的構成例）
図６は、実施の形態１にかかる情報提供装置の機能的構成を示すブロック図である。図６に示すように、情報提供装置１００は、取得部６０１と、特定部６０２と、検索部６０３と、作成部６０４と、読出部６０５と、秘匿化部６０６と、出力部６０７と、を含む構成である。この制御部となる機能（取得部６０１〜出力部６０７）は、たとえば、図３に示したＲＯＭ３０２、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、通信Ｉ／Ｆ３０８により、その機能を実現する。
【００４６】
取得部６０１は、たとえば通信Ｉ／Ｆ３０８により、利用者からの要求情報１０１を取得する。要求情報１０１は、少なくとも、フラットファイル４００に含まれる複数の項目のうちの利用者がデータを要求する項目と、要求元の利用者とを示す。なお、取得部６０１によって取得された要求情報１０１は、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶される。
【００４７】
特定部６０２は、取得部６０１によって取得された要求情報１０１が示す要求元の利用者に対応するポリシおよびシードを利用者テーブル５００に基づいて特定する。なお、特定部６０２によって特定されたポリシおよびシードは、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶される。
【００４８】
インデックス情報記憶部６１０には、インデックス管理テーブル６１１が記憶されている。また、インデックス情報記憶部６１０には、インデックス６１２ａ，６１２ｂ，…が記憶される。インデックス情報記憶部６１０は、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの情報提供装置１００の記憶装置によって実現してもよいし、通信Ｉ／Ｆ３０８を介して情報提供装置１００が接続可能な外部の記憶装置によって実現してもよい。
【００４９】
インデックス管理テーブル６１１は、ポリシと、インデックス情報記憶部６１０に記憶されているインデックス６１２ａ，６１２ｂ，…の識別情報「ｉｎｄｅｘ１」，「ｉｎｄｅｘ２」，…と、を対応付ける情報である。
【００５０】
インデックス６１２ａ，６１２ｂ，…は、フラットファイル４００の項目の組合せに含まれる項目と、項目のデータのアドレス（格納場所）と、を対応付ける索引情報の一例である。インデックス６１２ａ，６１２ｂ，…は、フラットファイル４００の項目の組合せ（ポリシ）ごとに存在する。インデックス６１２ａ，６１２ｂ，…は、インデックス情報記憶部６１０にあらかじめ記憶されていてもよいし、作成部６０４によって作成されてインデックス情報記憶部６１０に記憶されてもよい。
【００５１】
検索部６０３は、インデックス６１２ａ，６１２ｂ，…のうちの特定部６０２によって特定されたポリシに対応するインデックスをインデックス情報記憶部６１０から検索する。具体的には、検索部６０３は、インデックス管理テーブル６１１に基づいて、インデックス６１２ａ，６１２ｂ，…の中からポリシに対応するインデックスを検索する。検索の結果、対応するインデックスがインデックス情報記憶部６１０に存在する場合には、検索部６０３は、対応するインデックスをインデックス情報記憶部６１０から取得する。
【００５２】
検索の結果、対応するインデックスが存在しない場合には、検索部６０３は、特定部６０２によって特定されたポリシを作成部６０４へ通知する。そして、検索部６０３は、作成部６０４によって作成され、インデックス情報記憶部６１０に追加されたインデックスを取得する。なお、検索部６０３によって取得されたインデックスは、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶される。
【００５３】
作成部６０４は、フラットファイル４００に基づいて、検索部６０３から通知されたポリシに対応するインデックスを作成する。具体的には、作成部６０４は、通知されたポリシに含まれる項目のそれぞれのアドレス（格納場所）を取得し、取得したアドレスと項目とを対応付けることによってインデックスを作成する。作成部６０４は、作成したインデックスをインデックス情報記憶部６１０のインデックス６１２ａ，６１２ｂ，…に追加する。また、作成部６０４は、作成したインデックスを、検索部６０３から通知されたポリシと対応付けてインデックス管理テーブル６１１に登録する。
【００５４】
読出部６０５は、取得部６０１によって取得された要求情報１０１が示す項目のデータを、検索部６０３によって取得されたインデックスに基づいて、フラットファイル４００が記憶された記憶部から読み出す。具体的には、読出部６０５は、要求情報１０１が示す項目のデータに対応するアドレスをインデックスから検索する。そして、読出部６０５は、フラットファイル４００が記憶された記憶部における、検索により得られたアドレスのデータを読み出す。なお、読出部６０５によって読み出されたデータは、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶される。
【００５５】
また、検索の結果、要求情報１０１が示す項目のデータに対応するアドレスがインデックスに存在しなかった場合は、要求元の利用者は、要求情報１０１が示す項目のデータを取得する権限を有していない。この場合は、読出部６０５は、エラーメッセージを生成してもよい。これにより、要求元の利用者に対して、データの取得ができなかったことを通知することができる。なお、読出部６０５によって生成されたエラーメッセージは、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶される。
【００５６】
秘匿化部６０６は、読出部６０５によって読み出されたデータを、特定部６０２によって特定されたシードに基づいて秘匿化する。秘匿化部６０６によるデータの秘匿化としては、たとえば、シードに基づく乱数化や、文字列を頭文字のみに変換する処理などを用いることができる。
【００５７】
秘匿化として乱数化を行う場合は、情報提供装置１００のメモリに複数の乱数テーブルを記憶しておく。そして、秘匿化部６０６は、メモリに記憶された乱数テーブルの中から、特定されたシードに基づいて乱数テーブルを選択し、選択した乱数テーブルに基づいてデータを乱数化する。したがって、同一のシードが特定された場合は、選択される乱数テーブルも同一となる。なお、秘匿化部６０６によって秘匿化されたデータは、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶される。
【００５８】
出力部６０７は、たとえば通信Ｉ／Ｆ３０８により、秘匿化部６０６によって秘匿化されたデータ、または読出部６０５によって生成されたエラーメッセージを利用者の端末装置へ出力する。または、出力部６０７は、データまたはエラーメッセージをＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶してもよい。
【００５９】
（インデックス管理テーブル６１１の内容）
図７は、実施の形態１にかかるインデックス管理テーブルの内容の一例を示す説明図である。図７に示すインデックス管理テーブル６１１は、図６に示したインデックス管理テーブル６１１の一例である。インデックス管理テーブル６１１は、ポリシおよびインデックスのフィールドを有する。各フィールドに情報を設定することで、管理データ７００−１〜７００−３がレコードとして記憶されている。
【００６０】
ここで、ポリシは、利用者テーブル５００に含まれるポリシに対応する情報である。インデックスは、インデックス情報記憶部６１０に記憶されたインデックス６１２ａ，６１２ｂ，…のそれぞれを示す識別情報である。インデックスの値には、たとえば「ｉｎｄｅｘ１」、「ｉｎｄｅｘ２」および「ｉｎｄｅｘ３」がある。一例として、管理データ７００−１を例に挙げると、ポリシ「ｐ１」およびインデックス「ｉｎｄｅｘ１」が記憶されている。
【００６１】
（インデックス６１２ａ，６１２ｂ，…の内容）
図８は、実施の形態１にかかるインデックスの内容の一例を示す説明図である。図８に示すインデックス６１２ａ，６１２ｂ，…は、図７に示したインデックス管理テーブル６１１のインデックス「ｉｎｄｅｘ１」、「ｉｎｄｅｘ２」…に対応するそれぞれのインデックスを示している。インデックス６１２ａ，６１２ｂ，…のそれぞれは、列、行およびアドレスのフィールドを有する。インデックス６１２ａの各フィールドに情報を設定することで、インデックスデータ８０１−１〜８０１−３がレコードとして記憶されている。また、インデックス６１２ｂの各フィールドに情報を設定することで、インデックスデータ８０２−１〜８０２−３がレコードとして記憶されている。
【００６２】
ここで、列は、フラットファイル４００の列を示す情報である。行は、フラットファイル４００の行を示す情報である。したがって、列および行の組合せは、フラットファイル４００の項目を示す。列および行には、たとえば「１」および「２」などがある。アドレスは、列および行の組合せが示すフラットファイル４００の項目の、フラットファイル４００が記憶された記憶部における格納場所を示す情報である。アドレスには、たとえば「０」、「１００」、「２００」および「３００」などがある。
【００６３】
一例として、インデックス６１２ａのインデックスデータ８０１−１を例に挙げると、列「１」、行「１」およびアドレス「０」が記憶されている。したがって、インデックスデータ８０１−１は、列「１」および行「１」の組合せが示すフラットファイル４００の項目のデータがアドレス「０」に格納されていることを示している。
【００６４】
（情報提供装置１００による処理）
図９は、実施の形態１にかかる情報提供装置による処理の一例を示すフローチャートである。実施の形態１にかかる情報提供装置１００は、たとえば図９に示す各ステップを実行する。まず、取得部６０１が、利用者からの要求情報１０１を取得する（ステップＳ９０１）。つぎに、特定部６０２が、ステップＳ９０１によって取得された要求情報１０１の要求元の利用者のポリシを特定する（ステップＳ９０２）。
【００６５】
つぎに、検索部６０３が、ステップＳ９０２によって特定されたポリシに一致するインデックスがインデックス情報記憶部６１０にあるか否かを判断する（ステップＳ９０３）。ポリシに一致するインデックスがある場合（ステップＳ９０３：Ｙｅｓ）は、情報提供装置１００は、ステップＳ９０６へ移行する。
【００６６】
ステップＳ９０３において、ポリシに一致するインデックスがない場合（ステップＳ９０３：Ｎｏ）は、情報提供装置１００は、ステップＳ９０４へ移行する。すなわち、作成部６０４が、フラットファイル４００における、ステップＳ９０２によって特定されたポリシが示す各項目のデータのアドレスを示すインデックスを作成する（ステップＳ９０４）。つぎに、作成部６０４が、ステップＳ９０４によって作成されたインデックスをインデックス情報記憶部６１０に登録する（ステップＳ９０５）。
【００６７】
つぎに、情報提供装置１００は、要求情報１０１が示す項目のデータを利用者に提供する提供処理を行い（ステップＳ９０６）、一連の処理を終了する。以上の各ステップにより、利用者のポリシに対応するインデックスに基づいて、利用者からの要求情報１０１が示す項目のデータを利用者に提供することができる。
【００６８】
（インデックスの作成処理）
図１０は、実施の形態１にかかるインデックスの作成処理の一例を示すフローチャートである。作成部６０４は、図９に示したステップＳ９０４において、たとえば図１０に示す各ステップを実行する。図１０に示す各ステップにおいて、ＣＯＬ、ＲＯＷは、それぞれフラットファイル４００の列、行を示す変数である。また、ＡＤＤＲＥＳＳは、フラットファイル４００におけるアドレスを示す変数である。
【００６９】
まず、作成部６０４は、フラットファイル４００を開く（ステップＳ１００１）。つぎに、作成部６０４は、ＣＯＬに１を設定する（ステップＳ１００２）。つぎに、作成部６０４は、ＲＯＷに１を設定する（ステップＳ１００３）。つぎに、作成部６０４は、ＡＤＤＲＥＳＳに０を設定する（ステップＳ１００４）。
【００７０】
つぎに、作成部６０４は、現在のＣＯＬとＲＯＷが示す項目は、利用者が取得する権限を有する項目か否かを、図９に示したステップＳ９０２によって特定されたポリシに基づいて判断する（ステップＳ１００５）。権限を有する項目でない場合（ステップＳ１００５：Ｎｏ）は、作成部６０４は、ステップＳ１００７へ移行する。権限を有する項目である場合（ステップＳ１００５：Ｙｅｓ）は、作成部６０４は、現在のＣＯＬ、ＲＯＷおよびＡＤＤＲＥＳＳが示す列、行およびアドレスの組合せを、新規に作成するインデックスに追加する（ステップＳ１００６）。
【００７１】
つぎに、作成部６０４は、フラットファイル４００における現在のＡＤＤＲＥＳＳが示すアドレスに格納された文字が区切り文字であるか否かを判断する（ステップＳ１００７）。区切り文字には、たとえば、ファイルの終端（Ｅｎｄ  Ｏｆ  Ｆｉｌｅ）、列の区切り、行の区切りがある。区切り文字でない場合（ステップＳ１００７：Ｎｏ）は、作成部６０４は、ＡＤＤＲＥＳＳをインクリメントし（ステップＳ１００８）、ステップＳ１００７へ戻る。
【００７２】
ステップＳ１００７において、区切り文字である場合（ステップＳ１００７：Ｙｅｓ）は、作成部６０４は、フラットファイル４００における現在のＡＤＤＲＥＳＳが示すアドレスに格納された文字がファイルの終端であるか否かを判断する（ステップＳ１００９）。ファイルの終端である場合（ステップＳ１００９：Ｙｅｓ）は、作成部６０４は、一連の処理を終了する。ファイルの終端でない場合（ステップＳ１００９：Ｎｏ）は、作成部６０４は、フラットファイル４００における現在のＡＤＤＲＥＳＳが示すアドレスに格納された文字が列の区切りであるか否かを判断する（ステップＳ１０１０）。
【００７３】
ステップＳ１０１０において、格納された文字が列の区切りである場合（ステップＳ１０１０：Ｙｅｓ）は、作成部６０４は、ＣＯＬをインクリメントし（ステップＳ１０１１）、ステップＳ１０１４へ移行する。格納された文字が列の区切りでなく行の区切りである場合（ステップＳ１０１０：Ｎｏ）は、作成部６０４は、ＲＯＷをインクリメントする（ステップＳ１０１２）。つぎに、作成部６０４は、ＣＯＬを１に設定し（ステップＳ１０１３）、ステップＳ１０１４へ移行する。
【００７４】
ステップＳ１０１４においては、作成部６０４は、現在のＣＯＬとＲＯＷが示す項目は、利用者が取得する権限を有する項目か否かを、図９に示したステップＳ９０２によって特定されたポリシに基づいて判断する（ステップＳ１０１４）。権限を有する項目でない場合（ステップＳ１０１４：Ｎｏ）は、作成部６０４は、ステップＳ１０１６へ移行する。権限を有する項目である場合（ステップＳ１０１４：Ｙｅｓ）は、作成部６０４は、現在のＣＯＬ、ＲＯＷおよびＡＤＤＲＥＳＳが示す列、行およびアドレスの組合せを、新規に作成するインデックスに追加する（ステップＳ１０１５）。
【００７５】
つぎに、作成部６０４は、ＡＤＤＲＥＳＳをインクリメントし（ステップＳ１０１６）、ステップＳ１００７へ戻る。以上の各ステップにより、図９に示したステップＳ９０２によって特定されたポリシが示す各項目のデータのアドレスを示すインデックスを作成することができる。
【００７６】
（データの提供処理）
図１１は、実施の形態１にかかるデータの提供処理の一例を示すフローチャートである。情報提供装置１００は、図９に示したステップＳ９０６において、たとえば図１１に示す各ステップを実行する。まず、検索部６０３が、図９に示したステップＳ９０２によって特定されたポリシに一致するインデックスをインデックス情報記憶部６１０から取得する（ステップＳ１１０１）。つぎに、読出部６０５が、要求情報１０１に利用者が要求する項目が含まれているか否かを判断する（ステップＳ１１０２）。要求情報１０１に項目が含まれていない場合（ステップＳ１１０２：Ｎｏ）は、情報提供装置１００は、ステップＳ１１０４へ移行する。
【００７７】
要求情報１０１に項目が含まれている場合（ステップＳ１１０２：Ｙｅｓ）は、読出部６０５が、要求情報１０１が示す項目（列および行）が、ステップＳ１１０１によって取得されたインデックスにあるか否かを判断する（ステップＳ１１０３）。項目がインデックスにある場合（ステップＳ１１０３：Ｙｅｓ）は、読出部６０５が、ステップＳ１１０１によって取得されたインデックスに基づいてデータをフラットファイル４００から読み出す（ステップＳ１１０４）。
【００７８】
具体的には、要求情報１０１に項目が含まれている場合は、読出部６０５は、要求情報１０１が示す列および行に対応するアドレスをインデックスに基づいて特定し、特定したアドレスのデータを読み出す。また、要求情報１０１に項目が含まれていない場合は、読出部６０５は、インデックスが示す各アドレスのデータを読み出す。
【００７９】
つぎに、特定部６０２が、要求情報１０１が示す利用者のシードを特定する（ステップＳ１１０５）。つぎに、秘匿化部６０６が、ステップＳ１１０５によって特定されたシードに基づいて、ステップＳ１１０４によって読み出されたデータを秘匿化する（ステップＳ１１０６）。つぎに、出力部６０７が、ステップＳ１１０６によって秘匿化されたデータを出力し（ステップＳ１１０７）、一連の処理を終了する。
【００８０】
ステップＳ１１０３において、項目がインデックスにない場合（ステップＳ１１０３：Ｎｏ）は、読出部６０５が、データを取得できなかった旨のエラーメッセージを生成する（ステップＳ１１０８）。つぎに、出力部６０７が、ステップＳ１１０８によって生成されたエラーメッセージを出力し（ステップＳ１１０９）、一連の処理を終了する。以上の各ステップにより、要求情報１０１が示す項目のデータを利用者に提供することができる。また、利用者が取得する権限を有していない項目のデータについては利用者へ提供せず、エラーメッセージを出力することができる。
【００８１】
このように、実施の形態１にかかる情報提供装置１００は、ポリシ（利用者がデータを取得する権限を有する項目の組合せ）ごとにデータのアドレスを示すインデックスを作成し、利用者が要求する項目のデータをインデックスに基づいて取得する。これにより、利用者の権限に応じて利用者にデータを提供することができる。
【００８２】
また、ポリシの数は利用者の数より少ない。したがって、ポリシごとのインデックスを作成することで、たとえば利用者に提供可能な各項目のデータを含む利用者ファイルを利用者ごとに作成する場合に比べて、作成するファイル数を低減することができる。このため、メモリの使用量を低減することができる。
【００８３】
また、データのアドレスを示すインデックスは、データ自体を含む利用者ファイルよりも情報量が少ない。したがって、ポリシごとのインデックスを作成することで、たとえば利用者に提供可能な各項目のデータを含む利用者ファイルを利用者ごとに作成する場合に比べて、作成するファイルのサイズを低減することができる。このため、メモリの使用量をさらに低減することができる。
【００８４】
（実施の形態２）
実施の形態２にかかる情報提供装置１００について、実施の形態１にかかる情報提供装置１００と異なる部分について説明する。
【００８５】
（インデックス６１２ａ，６１２ｂ，…の内容）
図１２は、実施の形態２にかかるインデックスの内容の一例を示す説明図である。図１２において、図８に示した部分と同様の部分については同一の符号を付して説明を省略する。図８に示したインデックス６１２ｂのインデックスデータ８０２−１は、インデックス６１２ａのインデックスデータ８０１−２と同一の項目（列「２」および行「１」の組合せ）を示している。この場合は、図１２に示すように、インデックスデータ８０２−１を、列「２」および行「１」の組合せと、インデックス６１２ａの識別情報「ｉｎｄｅｘ１」と、を対応付ける情報としてもよい。
【００８６】
ポリシごとのインデックスを示す識別情報は、記憶部の格納場所を示すアドレスよりもデータ量が小さいため、インデックス６１２ｂにおいてアドレスに代えてインデックスの識別情報を格納することで、インデックス６１２ｂのサイズを圧縮することができる。検索部６０３は、取得したインデックスのアドレスに他のインデックスの識別情報が含まれている場合は、含まれている識別情報が示すインデックスも取得する。
【００８７】
読出部６０５は、検索部６０３によって取得された各インデックスに基づいて、要求情報１０１が示す項目のデータを読み出す。たとえば、読出部６０５は、検索部６０３によって取得された各インデックスのいずれかを取得する。そして、読出部６０５は、取得したインデックスにおいて、要求情報１０１が示す項目にアドレスが対応付けられている場合は対応付けられているアドレスを取得する。
【００８８】
また、読出部６０５は、取得したインデックスにおいて、要求情報１０１が示す項目に他のインデックスの識別情報が対応付けられている場合は、検索部６０３によって取得された各インデックスのうちの識別情報が示すインデックスを取得する。そして、読出部６０５は、取得したインデックスに基づいて、要求情報１０１が示す項目に対応付けられているアドレスを取得する。
【００８９】
図１２に示す例では、検索部６０３は、検索によりインデックス６１２ｂを取得した場合に、インデックス６１２ｂに識別情報「ｉｎｄｅｘ１」が含まれているため、識別情報「ｉｎｄｅｘ１」が示すインデックス６１２ａも取得する。読出部６０５は、検索部６０３によって取得された各インデックスのうちのたとえばインデックス６１２ｂを取得する。ここで、要求情報１０１が示す項目が列「２」および行「１」の組合せであるとする。
【００９０】
インデックス６１２ｂにおいて、列「２」および行「１」の組合せには識別情報「ｉｎｄｅｘ１」が対応付けられているため、読出部６０５は、識別情報「ｉｎｄｅｘ１」が示すインデックス６１２ａを取得する。そして、読出部６０５は、取得したインデックス６１２ａにおいて、列「２」および行「１」の組合せにはアドレス「１００」が対応付けられているため、アドレス「１００」のデータを読み出す。
【００９１】
（情報提供装置１００による処理）
図１３は、実施の形態２にかかる情報提供装置による処理の一例を示すフローチャートである。実施の形態２にかかる情報提供装置１００は、たとえば図１３に示す各ステップを実行する。図１３に示すステップＳ１３０１〜Ｓ１３０４は、図９に示したステップＳ９０１〜Ｓ９０４と同様である。ステップＳ１３０４の後に、作成部６０４が、ステップＳ１３０４によって作成されたインデックスの圧縮処理を行う（ステップＳ１３０５）。
【００９２】
図１３に示すステップＳ１３０６，Ｓ１３０７は、図９に示したステップＳ９０５，Ｓ９０６と同様である。以上の各ステップにより、利用者のポリシに対応するインデックスに基づいて、利用者からの要求情報１０１が示す項目のデータを利用者に提供することができる。また、インデックスを作成する場合に、作成したインデックスの圧縮処理を行うことで、インデックス情報記憶部６１０（メモリ）の使用量を低減することができる。
【００９３】
（インデックスの圧縮処理）
図１４は、実施の形態２にかかるインデックスの圧縮処理の一例を示すフローチャートである。作成部６０４は、図１３に示したステップＳ１３０５において、たとえば図１４に示す各ステップを実行する。まず、作成部６０４は、インデックス情報記憶部６１０に記憶されたすべてのインデックスがステップＳ１４０２によって選択されたか否かを判断する（ステップＳ１４０１）。すべてのインデックスが選択されていない場合（ステップＳ１４０１：Ｎｏ）は、作成部６０４は、インデックス情報記憶部６１０に記憶されたインデックスのうちの未選択のインデックスを選択する（ステップＳ１４０２）。
【００９４】
つぎに、作成部６０４は、ステップＳ１４０２によって選択されたインデックスのすべてのレコードがステップＳ１４０４によって選択されたか否かを判断する（ステップＳ１４０３）。すべてのレコードが選択されていない場合（ステップＳ１４０３：Ｎｏ）は、作成部６０４は、図１３のステップＳ１３０４によって作成されたインデックスのレコードのうちの未選択のレコードを選択する（ステップＳ１４０４）。
【００９５】
つぎに、作成部６０４は、ステップＳ１４０４によって選択されたレコードと一致するレコードが、ステップＳ１４０２によって選択されたインデックスにあるか否かを判断する（ステップＳ１４０５）。一致するレコードがない場合（ステップＳ１４０５：Ｎｏ）は、作成部６０４は、ステップＳ１４０３へ戻る。一致するレコードがある場合（ステップＳ１４０５：Ｙｅｓ）は、作成部６０４は、ステップＳ１４０４によって選択されたレコードのアドレスを、ステップＳ１４０２によって選択されたインデックスの識別情報に書き換え（ステップＳ１４０６）、ステップＳ１４０３へ戻る。
【００９６】
ステップＳ１４０３において、すべてのレコードが選択された場合（ステップＳ１４０３：Ｙｅｓ）は、作成部６０４は、ステップＳ１４０１へ戻る。ステップＳ１４０１において、すべてのインデックスが選択された場合（ステップＳ１４０１：Ｙｅｓ）は、作成部６０４は、一連の処理を終了する。以上の各ステップにより、図１３のステップＳ１３０４によって作成されたインデックスに既存のインデックスと共通のレコードがあった場合に、作成されたインデックスを圧縮することができる。
【００９７】
このように、実施の形態２にかかる情報提供装置１００によれば、記憶されるインデックスのサイズを圧縮することができる。具体的には、実施の形態２にかかる情報提供装置１００において、他のインデックスと共通の項目を含むインデックスは、他のインデックスと共通の項目と、他のインデックスを示す識別情報と、を対応付ける。
【００９８】
これにより、記憶されるインデックスのデータ量を少なくし、メモリの使用量をさらに低減することができる。この場合は、情報提供装置１００は、他のインデックスを示す識別情報を含むインデックスが検索により得られた場合に、識別情報に基づいて他のインデックスを取得し、取得した他のインデックスに基づいてデータを読み出すことができる。
【００９９】
（実施の形態３）
実施の形態３にかかる情報提供装置１００について、実施の形態１または２にかかる情報提供装置１００と異なる部分について説明する。
【０１００】
（情報提供装置１００による情報提供）
図１５は、実施の形態３にかかる情報提供装置による情報提供の一例を示す図である。図１５において、図１に示した部分と同様の部分については同一の符号を付して説明を省略する。情報提供装置１００は、抽出ファイル１５１１，１５１２，…を内部の記憶部に記憶している。または、抽出ファイル１５１１，１５１２，…は、情報提供装置１００からアクセス可能な外部の記憶部に記憶されていてもよい。
【０１０１】
抽出ファイル１５１１，１５１２，…は、ファイル１１０の項目の組合せごとの、項目に含まれるデータをファイル１１０から抽出した抽出ファイルである。実施の形態３においては、索引情報１２１，１２２，…が示す格納場所は、抽出ファイル１５１１，１５１２，…が記憶された記憶部における格納場所である。
【０１０２】
情報提供装置１００は、特定したポリシに対応する索引情報が索引情報１２１，１２２，…の中にない場合は、特定したポリシに対応する抽出ファイルおよび索引情報を作成してもよい。情報提供装置１００は、作成した抽出ファイルを、情報提供装置１００の内部または外部の記憶部に記憶することで、作成した抽出ファイルを抽出ファイル１５１１，１５１２，…に追加する。
【０１０３】
情報提供装置１００が抽出ファイルを作成する場合は、抽出ファイル１５１１，１５１２，…をあらかじめ情報提供装置１００の内部または外部の記憶部に記憶しておかなくてもよい。または、ファイル１１０の項目の一部の組合せに対応する抽出ファイルのみを情報提供装置１００の内部または外部の記憶部に記憶しておいてもよい。この場合は、取得された要求情報１０１に基づく項目の組合せに対応する抽出ファイルのみが記憶されるため、抽出ファイル１５１１，１５１２，…が記憶される記憶部（メモリ）の使用量を低減することができる。
【０１０４】
または、ファイル１１０の項目のすべての組合せに対応する抽出ファイルおよび索引情報を情報提供装置１００の内部または外部の記憶部に記憶しておいてもよい。この場合は、情報提供装置１００が特定した組合せに対応する抽出ファイルおよび索引情報は常に抽出ファイル１５１１，１５１２，…および索引情報１２１，１２２，…に含まれている。したがって、情報提供装置１００は新たな抽出ファイルおよび索引情報を作成する処理を行わなくてもよい。このため、要求情報１０１の取得時の情報提供装置１００の処理量を低減することができる。
【０１０５】
情報提供装置１００は、取得した索引情報に基づいて、抽出ファイル１５１１，１５１２，…が記憶された記憶部から、要求情報１０１が示す項目のデータを読み出す。図１に示す例では、情報提供装置１００は、取得した索引情報１２１に基づいて、要求情報１０１が示す項目２の格納場所２を特定する。そして、情報提供装置１００は、特定した格納場所２のデータを読み出すことでデータ２を読み出す。
【０１０６】
ここでは、要求情報１０１がファイル１１０の項目１〜ｎのうちの利用者がデータを要求する項目を示す情報である場合について説明したが、要求情報１０１はファイル１１０の項目１〜ｎのうちの特定の項目を示していなくてもよい。この場合は、たとえば、情報提供装置１００は、利用者のポリシに対応する全項目のデータを読み出して出力する。
【０１０７】
（情報提供装置１００の機能的構成例）
図１６は、実施の形態３にかかる情報提供装置の機能的構成を示すブロック図である。図１６において、図６に示した部分と同様の部分については同一の符号を付して説明を省略する。図１６に示すように、実施の形態３にかかる情報提供装置１００は、図６に示した構成に加えて抽出ファイル記憶部１６１０を備えている。
【０１０８】
抽出ファイル記憶部１６１０には、抽出ファイル１６１１，１６１２…が記憶される。抽出ファイル１６１１，１６１２…は、抽出ファイル記憶部１６１０にあらかじめ記憶されていてもよいし、作成部６０４によって作成されて抽出ファイル記憶部１６１０に記憶されてもよい。抽出ファイル記憶部１６１０は、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの情報提供装置１００の記憶装置によって実現してもよいし、たとえば通信Ｉ／Ｆ３０８を介して情報提供装置１００が接続可能な外部の記憶装置によって実現してもよい。
【０１０９】
抽出ファイル１６１１，１６１２…は、フラットファイル４００の項目の組合せ（ポリシ）ごとに作成される情報であって、項目の組合せに含まれる項目のデータをフラットファイル４００から抽出した抽出ファイルである。上述したように、検索部６０３は、検索の結果、対応するインデックスが存在しない場合には、特定部６０２によって特定されたポリシを作成部６０４へ通知する。
【０１１０】
作成部６０４は、検索部６０３から通知されたポリシに基づいてフラットファイル４００から抽出ファイル１６１１，１６１２…を作成する。具体的には、作成部６０４は、フラットファイル４００の各データのうちの、通知されたポリシに含まれる項目のデータを抽出する。そして、作成部６０４は、抽出結果を抽出ファイルとして抽出ファイル記憶部１６１０に記憶する。
【０１１１】
また、作成部６０４は、検索部６０３から通知されたポリシに対応するインデックスを作成する。具体的には、作成部６０４は、通知されたポリシに含まれる項目のデータの抽出ファイル記憶部１６１０におけるアドレス（格納場所）を取得し、取得したアドレスと項目とを対応付けることによってインデックスを作成する。
【０１１２】
なお、作成部６０４によって作成されたインデックスは、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶される。また、作成部６０４は、作成したインデックスをインデックス情報記憶部６１０のインデックス６１２ａ，６１２ｂ，…に追加する。また、作成部６０４は、作成したインデックスを、検索部６０３から通知されたポリシと対応付けてインデックス管理テーブル６１１に登録する。
【０１１３】
読出部６０５は、取得部６０１によって取得された要求情報１０１が示す項目のデータを、検索部６０３によって取得されたインデックスに基づいて、抽出ファイル記憶部１６１０から読み出す。具体的には、読出部６０５は、要求情報１０１が示す項目のデータに対応するアドレスをインデックスから検索する。そして、読出部６０５は、抽出ファイル記憶部１６１０における、検索により得られたアドレスのデータを読み出す。
【０１１４】
（抽出ファイルの内容）
図１７は、実施の形態３にかかる抽出ファイルの内容の一例を示す説明図である。図１７において、抽出ファイル１６１１は、フラットファイル４００の項目のうちの、ポリシｐ１（Ｎａｍｅ１、Ｎａｍｅ２、ＳａｌａｒｙおよびＣｏｄｅの組合せ、すなわち全項目）に対応する抽出ファイルである。したがって、抽出ファイル１６１１は、Ｎａｍｅ１、Ｎａｍｅ２、ＳａｌａｒｙおよびＣｏｄｅのフィールドを有する。各フィールドに情報を設定することで、人物データ１７０１−１〜１７０１−４がレコードとして記憶されている。人物データ１７０１−１〜１７０１−４のそれぞれは、図４に示した人物データ４００−１〜４００−４の全項目を抽出したデータ（全データ）である。
【０１１５】
抽出ファイル１６１２は、フラットファイル４００の項目のうちの、ポリシｐ２（Ｎａｍｅ１、ＳａｌａｒｙおよびＣｏｄｅの組合せ）に対応する抽出ファイルである。したがって、抽出ファイル１６１２は、Ｎａｍｅ１、ＳａｌａｒｙおよびＣｏｄｅのフィールドを有する。各フィールドに情報を設定することで、人物データ１７０２−１〜１７０２−４がレコードとして記憶されている。人物データ１７０２−１〜１７０２−４のそれぞれは、図４に示した人物データ４００−１〜４００−４のＮａｍｅ１、ＳａｌａｒｙおよびＣｏｄｅを抽出したデータである。
【０１１６】
一例として、人物データ１７０１−１を例に挙げると、Ｎａｍｅ１「ＳＡＬＡＺＡＲ」、Ｎａｍｅ２「ＫＡＴＥ」、Ｓａｌａｒｙ「４３９４７６」およびＣｏｄｅ「ＤＸ２ＸＳ２」が記憶されている。抽出ファイル１６１１，１６１２，…は、たとえば、図３に示したＲＯＭ３０２、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶されている。
【０１１７】
図１７に示す例では、フラットファイル４００の各データを、セル（データ）単位でなく項目（行または列）単位でデータを削除することで抽出ファイル１６１１，１６１２，…を作成している。これにより、抽出ファイル１６１１，１６１２，…のデータ量を削減することができる。
【０１１８】
（情報提供装置１００による処理）
図１８は、実施の形態３にかかる情報提供装置による処理の一例を示すフローチャートである。実施の形態３にかかる情報提供装置１００は、たとえば図１８に示す各ステップを実行する。図１８に示すステップＳ１８０１〜Ｓ１８０３は、図９に示したステップＳ９０１〜Ｓ９０３と同様である。
【０１１９】
ステップＳ１８０３において、ポリシに一致するインデックスがある場合（ステップＳ１８０３：Ｙｅｓ）は、情報提供装置１００は、ステップＳ１８０８へ移行する。ポリシに一致するインデックスがない場合（ステップＳ１８０３：Ｎｏ）は、作成部６０４が、ステップＳ１８０２によって特定されたポリシに基づいてフラットファイル４００からデータを抽出する（ステップＳ１８０４）。
【０１２０】
つぎに、作成部６０４が、ステップＳ１８０４による抽出結果を抽出ファイルとして抽出ファイル記憶部１６１０に記憶する（ステップＳ１８０５）。つぎに、作成部６０４が、ステップＳ１８０５によって記憶された抽出ファイルにおける、ステップＳ１８０２によって特定されたポリシが示す各項目のデータのアドレスを示すインデックスを作成する（ステップＳ１８０６）。
【０１２１】
図１８に示すステップＳ１８０７，Ｓ１８０８は、図９に示したステップＳ９０５，Ｓ９０６と同様である。以上の各ステップにより、利用者のポリシごとに抽出ファイルを作成するとともに、利用者のポリシに対応するインデックスに基づいて、利用者からの要求情報１０１が示す項目のデータを利用者に提供することができる。
【０１２２】
（インデックスの作成処理）
図１９は、実施の形態３にかかるインデックスの作成処理の一例を示すフローチャートである。作成部６０４は、図１８に示したステップＳ１８０６において、たとえば図１９に示す各ステップを実行する。図１９に示す各ステップにおいて、ＣＯＬａｂ、ＲＯＷａｂは、図１８のステップＳ１８０５によって記憶された抽出ファイルの列、行を示す変数である。また、ＡＤＤＲＥＳＳａｂは、図１８のステップＳ１８０５によって記憶された抽出ファイルにおけるアドレスを示す変数である。
【０１２３】
まず、作成部６０４は、図１８のステップＳ１８０５によって記憶された抽出ファイルを開く（ステップＳ１９０１）。図１９の説明において、ステップＳ１９０１によって開かれた抽出ファイルを単に抽出ファイルと称する。つぎに、作成部６０４は、ＣＯＬａｂに１を設定する（ステップＳ１９０２）。つぎに、作成部６０４は、ＲＯＷａｂに１を設定する（ステップＳ１９０３）。つぎに、作成部６０４は、ＡＤＤＲＥＳＳａｂに０を設定する（ステップＳ１９０４）。
【０１２４】
つぎに、作成部６０４は、現在のＣＯＬａｂ、ＲＯＷａｂおよびＡＤＤＲＥＳＳａｂが示す列、行およびアドレスの組合せを、新規に作成するインデックスに追加する（ステップＳ１９０５）。ステップＳ１９０５において、作成部６０４は、ＣＯＬａｂおよびＲＯＷａｂが示す項目（列および行）を、抽出ファイルにおける項目から、フラットファイル４００における項目に変換して追加する。
【０１２５】
たとえば、作成部６０４は、抽出ファイルの作成時に、フラットファイル４００における項目と、抽出ファイルにおける項目と、の対応情報を生成して記憶部に記憶しておく。そして、作成部６０４は、記憶部に記憶された対応情報に基づいて、抽出ファイルにおける項目からフラットファイル４００における項目への変換を行う。
【０１２６】
つぎに、作成部６０４は、抽出ファイルにおける現在のＡＤＤＲＥＳＳａｂが示すアドレスに格納された文字が区切り文字であるか否かを判断する（ステップＳ１９０６）。区切り文字には、たとえば、ファイルの終端（Ｅｎｄ  Ｏｆ  Ｆｉｌｅ）、列の区切り、行の区切りがある。区切り文字でない場合（ステップＳ１９０６：Ｎｏ）は、作成部６０４は、ＡＤＤＲＥＳＳａｂをインクリメントし（ステップＳ１９０７）、ステップＳ１９０６へ戻る。
【０１２７】
ステップＳ１９０６において、区切り文字である場合（ステップＳ１９０６：Ｙｅｓ）は、作成部６０４は、抽出ファイルにおける現在のＡＤＤＲＥＳＳａｂが示すアドレスに格納された文字がファイルの終端であるか否かを判断する（ステップＳ１９０８）。ファイルの終端である場合（ステップＳ１９０８：Ｙｅｓ）は、作成部６０４は、一連の処理を終了する。ファイルの終端でない場合（ステップＳ１９０８：Ｎｏ）は、作成部６０４は、抽出ファイルにおける現在のＡＤＤＲＥＳＳａｂが示すアドレスに格納された文字が列の区切りであるか否かを判断する（ステップＳ１９０９）。
【０１２８】
ステップＳ１９０９において、格納された文字が列の区切りである場合（ステップＳ１９０９：Ｙｅｓ）は、作成部６０４は、ＣＯＬａｂをインクリメントし（ステップＳ１９１０）、ステップＳ１９１３へ移行する。格納された文字が列の区切りでなく行の区切りである場合（ステップＳ１９０９：Ｎｏ）は、作成部６０４は、ＲＯＷａｂをインクリメントする（ステップＳ１９１１）。つぎに、作成部６０４は、ＣＯＬａｂを１に設定し（ステップＳ１９１２）、ステップＳ１９１３へ移行する。
【０１２９】
つぎに、作成部６０４は、現在のＣＯＬａｂ、ＲＯＷａｂおよびＡＤＤＲＥＳＳａｂが示す列、行およびアドレスの組合せを、新規に作成するインデックスに追加する（ステップＳ１９１３）。ステップＳ１９１３において、作成部６０４は、ＣＯＬａｂおよびＲＯＷａｂが示す列および行を、抽出ファイルにおける列および行から、フラットファイル４００における列および行に変換して追加する。
【０１３０】
つぎに、作成部６０４は、ＡＤＤＲＥＳＳａｂをインクリメントし（ステップＳ１９１４）、ステップＳ１９０６へ戻る。以上の各ステップにより、図１８に示したステップＳ１８０２によって特定されたポリシに対応するインデックスを作成することができる。
【０１３１】
（データの提供処理）
図２０は、実施の形態３にかかるデータの提供処理の一例を示すフローチャートである。情報提供装置１００は、図１８に示したステップＳ１８０８において、たとえば図２０に示す各ステップを実行する。図２０に示す各ステップは、図１１に示した各ステップと同様である。ただし、ステップＳ２００４においては、読出部６０５が、ステップＳ２００１によって取得されたインデックスに基づいてデータを抽出ファイル記憶部１６１０から読み出す（ステップＳ２００４）。
【０１３２】
具体的には、要求情報１０１に項目が含まれている場合は、読出部６０５は、要求情報１０１が示す列および行に対応する抽出ファイル記憶部１６１０のアドレスをインデックスに基づいて特定し、特定したアドレスのデータを読み出す。また、要求情報１０１に項目が含まれていない場合は、読出部６０５は、インデックスが示す抽出ファイル記憶部１６１０の各アドレスのデータを読み出す。
【０１３３】
以上の各ステップにより、要求情報１０１が示す項目のデータを利用者に提供することができる。また、利用者が取得する権限を有していない項目のデータについては利用者へ提供せず、エラーメッセージを出力することができる。
【０１３４】
このように、実施の形態３にかかる情報提供装置１００は、ポリシごとにインデックスおよび抽出ファイルを作成し、利用者が要求する項目のデータをインデックスに基づいて抽出ファイルから取得する。これにより、利用者の権限に応じて利用者にデータを提供することができる。
【０１３５】
また、ポリシの数は利用者の数より少ない。したがって、ポリシごとの抽出ファイルを作成することで、たとえば利用者に提供可能な各項目のデータを含む利用者ファイルを利用者ごとに作成する場合に比べて、作成するデータのファイル数を低減することができる。したがって、メモリの使用量を低減することができる。
【０１３６】
また、実施の形態３にかかる情報提供装置１００において、実施の形態２にかかる情報提供装置１００のようにインデックスの圧出処理を行ってもよい。これにより、メモリの使用量をさらに低減することができる。
【０１３７】
また、図１９に示したインデックスの作成処理において、抽出ファイルの項目をフラットファイル４００の項目に変換してインデックスに追加する処理について説明したが、抽出ファイルの項目をそのままインデックスに追加する処理としてもよい。この場合は、インデックスは、抽出ファイルにおける項目と、抽出ファイルにおけるデータのアドレスと、を対応付けることになる。
【０１３８】
これに対して、読出部６０５は、要求情報１０１が示す項目（フラットファイル４００における項目）を抽出ファイルにおける項目に変換する。たとえば、作成部６０４が、抽出ファイルの作成時に、フラットファイル４００における項目と、抽出ファイルにおける項目と、の対応情報を生成して記憶部に記憶しておく。読出部６０５は、記憶部に記憶された対応情報に基づいて、フラットファイル４００における項目から抽出ファイルにおける項目への変換を行う。読出部６０５は、変換した項目およびインデックスに基づいてデータを読み出す。
【０１３９】
（実施の形態４）
実施の形態４にかかる情報提供装置１００について、実施の形態１または２にかかる情報提供装置１００と異なる部分について説明する。
【０１４０】
（情報提供装置１００による情報提供）
図２１は、実施の形態４にかかる情報提供装置による情報提供の一例を示す図である。図２１において、図１に示した部分と同様の部分については同一の符号を付して説明を省略する。情報提供装置１００は、秘匿化ファイル２１１１〜２１１３，…を内部の記憶部に記憶している。または、秘匿化ファイル２１１１〜２１１３，…は、情報提供装置１００からアクセス可能な外部の記憶部に記憶されていてもよい。
【０１４１】
秘匿化ファイル２１１１〜２１１３，…は、ファイル１１０の項目に含まれるデータをファイル１１０から抽出し、抽出結果をシード（秘匿方法）に基づいて秘匿化したファイルである。秘匿化ファイル２１１１〜２１１３，…は、ポリシおよびシードの組合せごとに記憶される。また、索引情報１２１〜１２３，…は、ポリシおよびシードの組合せごとに記憶される。また、索引情報１２１〜１２３，…が示す格納場所は、秘匿化ファイル２１１１〜２１１３，…が記憶された記憶部における格納場所である。
【０１４２】
また、情報提供装置１００は、ファイル１１０のデータを要求する利用者と、ポリシおよびシード（秘匿方法）の組合せと、を対応付ける権限情報をたとえば内部の記憶部に記憶している。または、権限情報は、情報提供装置１００からアクセス可能な外部の記憶部に記憶されていてもよい。
【０１４３】
また、情報提供装置１００は、索引情報１２１〜１２３，…をたとえば内部の記憶部に記憶している。または、索引情報１２１〜１２３，…は、情報提供装置１００からアクセス可能な外部の記憶部に記憶されていてもよい。索引情報１２１〜１２３，…は、ファイル１１０の項目と、ファイル１１０の項目のデータの格納場所（アドレス）と、を対応付けるファイル１１０の項目の組合せごとの索引情報である。索引情報１２１〜１２３，…が示す格納場所は、ファイル１１０が記憶された記憶部における格納場所である。
【０１４４】
情報提供装置１００は、要求情報１０１が示す利用者のポリシおよびシード（秘匿化方法）を特定する。そして、情報提供装置１００は、特定したポリシおよびシードの組合せに対応する索引情報をインデックス情報記憶部６１０から検索する。情報提供装置１００は、特定したポリシおよびシードの組合せに対応する索引情報が索引情報１２１，１２２，…の中にない場合は、特定したポリシおよびシードの組合せに対応する秘匿化ファイルおよび索引情報を作成してもよい。情報提供装置１００は、作成した秘匿化ファイルを、情報提供装置１００の内部または外部の記憶部に記憶することで、作成した秘匿化ファイルを秘匿化ファイル２１１１〜２１１３，…に追加する。
【０１４５】
情報提供装置１００が秘匿化ファイルを作成する場合は、秘匿化ファイル２１１１〜２１１３，…をあらかじめ情報提供装置１００の内部または外部の記憶部に記憶しておかなくてもよい。または、ファイル１１０の項目の一部の組合せに対応する秘匿化ファイルのみを情報提供装置１００の内部または外部の記憶部に記憶しておいてもよい。この場合は、取得された要求情報１０１に基づく項目の組合せに対応する秘匿化ファイルのみが記憶されるため、秘匿化ファイル２１１１〜２１１３，…が記憶される記憶部（メモリ）の使用量を低減することができる。
【０１４６】
または、ファイル１１０の項目のすべての組合せに対応する秘匿化ファイルおよび索引情報を情報提供装置１００の内部または外部の記憶部に記憶しておいてもよい。この場合は、情報提供装置１００が特定した組合せに対応する秘匿化ファイルおよび索引情報は常に秘匿化ファイル２１１１〜２１１３，…および索引情報１２１，１２２，…に含まれている。したがって、情報提供装置１００は新たな秘匿化ファイルおよび索引情報を作成する処理を行わなくてもよい。このため、要求情報１０１の取得時の情報提供装置１００の処理量を低減することができる。
【０１４７】
情報提供装置１００は、取得した索引情報に基づいて、秘匿化ファイル２１１１〜２１１３，…が記憶された記憶部から、要求情報１０１が示す項目のデータを読み出す。図１に示す例では、情報提供装置１００は、取得した索引情報１２１に基づいて、要求情報１０１が示す項目２の格納場所２を特定する。そして、情報提供装置１００は、特定した格納場所２のデータを読み出すことでデータ２を読み出す。
【０１４８】
ここでは、要求情報１０１がファイル１１０の項目１〜ｎのうちの利用者がデータを要求する項目を示す情報である場合について説明したが、要求情報１０１はファイル１１０の項目１〜ｎのうちの特定の項目を示していなくてもよい。この場合は、たとえば、情報提供装置１００は、利用者のポリシに対応する全項目のデータを読み出して出力する。
【０１４９】
（情報提供装置１００の機能的構成例）
図２２は、実施の形態４にかかる情報提供装置の機能的構成を示すブロック図である。図２２において、図６または図１６に示した部分と同様の部分については同一の符号を付して説明を省略する。図２２に示すように、実施の形態４にかかる情報提供装置１００は、図６または図１６に示した構成に加えて秘匿化ファイル記憶部２２１０を備えている。
【０１５０】
秘匿化ファイル記憶部２２１０には、秘匿化ファイル２２１１，２２１２…が記憶される。秘匿化ファイル２２１１，２２１２…は、秘匿化ファイル記憶部２２１０にあらかじめ記憶されていてもよいし、作成部６０４および秘匿化部６０６によって作成されて秘匿化ファイル記憶部２２１０に記憶されてもよい。秘匿化ファイル記憶部２２１０は、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの情報提供装置１００の記憶装置によって実現してもよいし、通信Ｉ／Ｆ３０８を介して情報提供装置１００が接続可能な外部の記憶装置によって実現してもよい。
【０１５１】
秘匿化ファイル２２１１，２２１２…は、ポリシおよびシードの組合せごとに作成される情報である。また、秘匿化ファイル２２１１，２２１２…は、項目の組合せに含まれる項目のデータをフラットファイル４００から抽出し、抽出結果をシードに基づいて秘匿化したＰＰ（Ｐｒｉｖａｃｙ  Ｐｒｏｔｅｃｔｉｏｎ）ファイルである。秘匿化部６０６は、作成部６０４によって作成された抽出ファイルの各データを、特定部６０２によって特定されたシードに基づいて秘匿化する。秘匿化部６０６は、各データを秘匿化した抽出ファイルを秘匿化データとして秘匿化ファイル記憶部２２１０に記憶する。
【０１５２】
インデックス情報記憶部６１０のインデックス６１２ａ，６１２ｂ，…は、ポリシ（フラットファイル４００の項目の組合せ）およびシードの組合せごとに存在する。また、インデックス６１２ａ，６１２ｂ，…が示すアドレスは、秘匿化ファイル記憶部２２１０におけるアドレスを示す。
【０１５３】
読出部６０５は、取得部６０１によって取得された要求情報１０１が示す項目のデータを、検索部６０３によって取得されたインデックスに基づいて、秘匿化ファイル記憶部２２１０から読み出す。具体的には、読出部６０５は、要求情報１０１が示す項目のデータに対応するアドレスをインデックスから検索する。そして、読出部６０５は、秘匿化ファイル記憶部２２１０における、検索により得られたアドレスのデータを読み出す。ここでは、読出部６０５が読み出したデータはすでに秘匿化されている。出力部６０７は、読出部６０５によって読み出された秘匿化済みのデータを出力する。
【０１５４】
（秘匿化ファイルの内容）
図２３は、実施の形態４にかかる秘匿化ファイルの内容の一例を示す説明図である。図２３に示す秘匿化ファイル２２１１は、フラットファイル４００の項目のうちの、ポリシｐ１（Ｎａｍｅ１、Ｎａｍｅ２、ＳａｌａｒｙおよびＣｏｄｅの組合せ、すなわち全項目）およびシードｓ１に対応する秘匿化ファイルである。したがって、秘匿化ファイル２２１１は、Ｎａｍｅ１、Ｎａｍｅ２、ＳａｌａｒｙおよびＣｏｄｅのフィールドを有する。
【０１５５】
各フィールドに情報を設定することで、人物データ２３０１−１〜２３０１−４がレコードとして記憶されている。人物データ２３０１−１〜２３０１−４のそれぞれは、シードｓ１に基づいて秘匿化されている。たとえば、人物データ２３０１−１〜２３０１−４のＮａｍｅ１は、元の文字列から頭文字だけに置換されている。また、人物データ２３０１−１〜２３０１−４のＳａｌａｒｙは、シードｓ１に基づいて乱数化されている。
【０１５６】
秘匿化ファイル２２１２は、フラットファイル４００の項目のうちの、ポリシｐ２（Ｎａｍｅ１、ＳａｌａｒｙおよびＣｏｄｅの組合せ）およびシードｓ３に対応する秘匿化ファイルである。したがって、秘匿化ファイル２２１２は、Ｎａｍｅ１、ＳａｌａｒｙおよびＣｏｄｅのフィールドを有する。
【０１５７】
各フィールドに情報を設定することで、人物データ２３０２−１〜２３０２−４がレコードとして記憶されている。人物データ２３０２−１〜２３０２−４のそれぞれは、シードｓ３に基づいて秘匿化されている。たとえば、人物データ２３０２−１〜２３０２−４のＮａｍｅ１は、数字に置換されている。また、人物データ２３０２−１〜２３０２−４のＳａｌａｒｙは、端数が切り捨てられている。
【０１５８】
秘匿化ファイル２２１３は、フラットファイル４００の項目のうちの、ポリシｐ１（Ｎａｍｅ１、Ｎａｍｅ２、ＳａｌａｒｙおよびＣｏｄｅの組合せ、すなわち全項目）およびシードｓ２に対応する秘匿化ファイルである。したがって、秘匿化ファイル２２１３は、Ｎａｍｅ１、Ｎａｍｅ２、ＳａｌａｒｙおよびＣｏｄｅのフィールドを有する。
【０１５９】
各フィールドに情報を設定することで、人物データ２３０３−１〜２３０３−４がレコードとして記憶されている。人物データ２３０３−１〜２３０３−４のそれぞれは、シードｓ２に基づいて秘匿化されている。たとえば、人物データ２３０３−１〜２３０３−４のＮａｍｅ１およびＮａｍｅ２は、元の文字列から頭文字だけに置換されている。また、人物データ２３０１−２〜２３０２−４のＳａｌａｒｙは、シードｓ２に基づいて乱数化されている。
【０１６０】
一例として、人物データ２３０１−１を例に挙げると、Ｎａｍｅ１「Ｓ」、Ｎａｍｅ２「ＫＡＴＥ」、Ｓａｌａｒｙ「４１３１０７」およびＣｏｄｅ「ＤＸ２ＸＳ２」が記憶されている。秘匿化ファイル２２１１，２２１２，２２１３，…は、たとえば、図３に示したＲＯＭ３０２、ＲＡＭ３０３、磁気ディスク３０５、光ディスク３０７などの記憶装置に記憶されている。
【０１６１】
図２３に示す例では、フラットファイル４００の各データを、セル（データ）単位でなく項目（行または列）単位でデータを削除し、残りの各データを秘匿化することで秘匿化ファイル２２１１，２２１２…を作成している。これにより、秘匿化ファイル２２１１，２２１２…のデータ量を削減することができる。
【０１６２】
（インデックス管理テーブル６１１の内容）
図２４は、実施の形態４にかかるインデックス管理テーブルの内容の一例を示す説明図である。図２４に示すインデックス管理テーブル６１１は、図２２に示したインデックス管理テーブル６１１の一例である。インデックス管理テーブル６１１は、ポリシ、シードおよびインデックスのフィールドを有する。各フィールドに情報を設定することで、管理データ２４００−１〜２４００−３がレコードとして記憶されている。
【０１６３】
ここで、ポリシは、利用者テーブル５００に含まれるポリシに対応する情報である。シードは、利用者テーブル５００に含まれるシードに対応する情報である。インデックスは、インデックス情報記憶部６１０に記憶されたインデックス６１２ａ，６１２ｂ，…のそれぞれを示す識別情報である。
【０１６４】
一例として、管理データ２４００−１を例に挙げると、ポリシ「ｐ１」、シード「ｓ１」およびインデックス「ｉｎｄｅｘ１」が記憶されている。実施の形態４においては、ポリシおよびシードの組合せごとにインデックスが作成されるため、インデックス管理テーブル６１１においてはポリシおよびシードの組合せとインデックスとが対応付けられる。
【０１６５】
（情報提供装置１００による処理）
図２５は、実施の形態４にかかる情報提供装置による処理の一例を示すフローチャートである。実施の形態４にかかる情報提供装置１００は、たとえば図２５に示す各ステップを実行する。図２５に示すステップＳ２５０１〜Ｓ２５０４は、図１８に示したステップＳ１８０１〜Ｓ１８０４と同様である。ただし、ステップＳ２５０２においては、特定部６０２が、ステップＳ２５０１によって取得された要求情報１０１が示す利用者のポリシおよびシードを特定する（ステップＳ２５０２）。
【０１６６】
ステップＳ２５０４のつぎに、秘匿化部６０６が、ステップＳ２５０４による抽出結果を、ステップＳ２５０２によって特定されたシードに基づいて秘匿化する（ステップＳ２５０５）。つぎに、秘匿化部６０６が、ステップＳ２５０５によって秘匿化されたステップＳ２５０４による抽出結果を、秘匿化ファイルとして秘匿化ファイル記憶部２２１０に記憶する（ステップＳ２５０６）。つぎに、作成部６０４が、ステップＳ２５０６によって記憶された秘匿化ファイルにおける、ステップＳ２５０２によって特定されたポリシが示す各項目のデータのアドレスを示すインデックスを作成する（ステップＳ２５０７）。
【０１６７】
図２５に示すステップＳ２５０８，Ｓ２５０９は、図９に示したステップＳ９０５，Ｓ９０６と同様である。以上の各ステップにより、利用者のポリシおよびシードの組合せごとに秘匿化ファイルを作成するとともに、利用者のポリシに対応するインデックスに基づいて、要求情報１０１が示す項目のデータを利用者に提供することができる。
【０１６８】
（インデックスの作成処理）
図２６は、実施の形態４にかかるインデックスの作成処理の一例を示すフローチャートである。作成部６０４は、図２５に示したステップＳ２５０７において、たとえば図２６に示す各ステップを実行する。図２６に示す各ステップにおいて、ＣＯＬｐｐ、ＲＯＷｐｐは、図２５のステップＳ２５０６によって記憶された秘匿化ファイルの列、行を示す変数である。また、ＡＤＤＲＥＳＳｐｐは、図２５のステップＳ２５０６によって記憶された秘匿化ファイルにおけるアドレスを示す変数である。
【０１６９】
まず、作成部６０４は、図２５のステップＳ２５０６によって記憶された秘匿化ファイルを開く（ステップＳ２６０１）。図２６の説明において、ステップＳ２６０１によって開かれた秘匿化ファイルを単に秘匿化ファイルと称する。つぎに、作成部６０４は、ＣＯＬｐｐに１を設定する（ステップＳ２６０２）。つぎに、作成部６０４は、ＲＯＷｐｐに１を設定する（ステップＳ２６０３）。つぎに、作成部６０４は、ＡＤＤＲＥＳＳｐｐに０を設定する（ステップＳ２６０４）。
【０１７０】
つぎに、作成部６０４は、現在のＣＯＬｐｐ、ＲＯＷｐｐおよびＡＤＤＲＥＳＳｐｐが示す列、行およびアドレスの組合せを、新規に作成するインデックスに追加する（ステップＳ２６０５）。ステップＳ２６０５において、作成部６０４は、ＣＯＬｐｐおよびＲＯＷｐｐが示す項目（列および行）を、秘匿化ファイルにおける項目から、フラットファイル４００における項目に変換して追加する。
【０１７１】
たとえば、作成部６０４は、秘匿化ファイルの作成時に、フラットファイル４００における項目と、秘匿化ファイルにおける項目と、の対応情報を生成して記憶部に記憶しておく。そして、作成部６０４は、記憶部に記憶された対応情報に基づいて、秘匿化ファイルにおける項目からフラットファイル４００における項目への変換を行う。
【０１７２】
つぎに、作成部６０４は、秘匿化ファイルにおける現在のＡＤＤＲＥＳＳｐｐが示すアドレスに格納された文字が区切り文字であるか否かを判断する（ステップＳ２６０６）。区切り文字には、たとえば、ファイルの終端（Ｅｎｄ  Ｏｆ  Ｆｉｌｅ）、列の区切り、行の区切りがある。区切り文字でない場合（ステップＳ２６０６：Ｎｏ）は、作成部６０４は、ＡＤＤＲＥＳＳｐｐをインクリメントし（ステップＳ２６０７）、ステップＳ２６０６へ戻る。
【０１７３】
ステップＳ２６０６において、区切り文字である場合（ステップＳ２６０６：Ｙｅｓ）は、作成部６０４は、秘匿化ファイルにおける現在のＡＤＤＲＥＳＳｐｐが示すアドレスに格納された文字がファイルの終端であるか否かを判断する（ステップＳ２６０８）。ファイルの終端である場合（ステップＳ２６０８：Ｙｅｓ）は、作成部６０４は、一連の処理を終了する。ファイルの終端でない場合（ステップＳ２６０８：Ｎｏ）は、作成部６０４は、秘匿化ファイルにおける現在のＡＤＤＲＥＳＳｐｐが示すアドレスに格納された文字が列の区切りであるか否かを判断する（ステップＳ２６０９）。
【０１７４】
ステップＳ２６０９において、格納された文字が列の区切りである場合（ステップＳ２６０９：Ｙｅｓ）は、作成部６０４は、ＣＯＬｐｐをインクリメントし（ステップＳ２６１０）、ステップＳ２６１３へ移行する。格納された文字が列の区切りでなく行の区切りである場合（ステップＳ２６０９：Ｎｏ）は、作成部６０４は、ＲＯＷｐｐをインクリメントする（ステップＳ２６１１）。つぎに、作成部６０４は、ＣＯＬｐｐを１に設定し（ステップＳ２６１２）、ステップＳ２６１３へ移行する。
【０１７５】
つぎに、作成部６０４は、現在のＣＯＬｐｐ、ＲＯＷｐｐおよびＡＤＤＲＥＳＳｐｐが示す列、行およびアドレスの組合せを、新規に作成するインデックスに追加する（ステップＳ２６１３）。ステップＳ２６１３において、作成部６０４は、ＣＯＬｐｐおよびＲＯＷｐｐが示す列および行を、秘匿化ファイルにおける列および行から、フラットファイル４００における列および行に変換して追加する。
【０１７６】
つぎに、作成部６０４は、ＡＤＤＲＥＳＳｐｐをインクリメントし（ステップＳ２６１４）、ステップＳ２６０６へ戻る。以上の各ステップにより、要求情報１０１が示す利用者のポリシおよびシードの組合せに対応するインデックスを作成することができる。
【０１７７】
（データの提供処理）
図２７は、実施の形態４にかかるデータの提供処理の一例を示すフローチャートである。情報提供装置１００は、図２５に示したステップＳ２５０９において、たとえば図２７に示す各ステップを実行する。まず、検索部６０３が、図２５のステップＳ２５０２によって特定されたポリシおよびシードの組合せに一致するインデックスをインデックス情報記憶部６１０から取得する（ステップＳ２７０１）。つぎに、読出部６０５が、要求情報１０１に利用者が要求する項目が含まれているか否かを判断する（ステップＳ２７０２）。
【０１７８】
ステップＳ２７０２において、要求情報１０１に項目が含まれていない場合（ステップＳ２７０２：Ｎｏ）は、情報提供装置１００は、ステップＳ２７０４へ移行する。要求情報１０１に項目が含まれている場合（ステップＳ２７０２：Ｙｅｓ）は、読出部６０５が、要求情報１０１が示す項目（列および行）が、ステップＳ２７０１によって取得されたインデックスにあるか否かを判断する（ステップＳ２７０３）。項目がインデックスにある場合（ステップＳ２７０３：Ｙｅｓ）は、読出部６０５が、ステップＳ２７０１によって取得されたインデックスに基づいてデータを秘匿化ファイル記憶部２２１０から読み出す（ステップＳ２７０４）。
【０１７９】
具体的には、要求情報１０１に項目が含まれている場合は、読出部６０５は、要求情報１０１が示す列および行に対応する秘匿化ファイル記憶部２２１０のアドレスをインデックスに基づいて特定し、特定したアドレスのデータを読み出す。また、要求情報１０１に項目が含まれていない場合は、読出部６０５は、インデックスが示す秘匿化ファイル記憶部２２１０の各アドレスのデータを読み出す。なお、ステップＳ２７０４によって読み出されるデータは、図２５のステップＳ２５０５によって秘匿化されている。つぎに、出力部６０７が、ステップＳ２７０４によって読み出されたデータを出力し（ステップＳ２７０５）、一連の処理を終了する。
【０１８０】
ステップＳ２７０３において、項目がインデックスにない場合（ステップＳ２７０３：Ｎｏ）は、読出部６０５が、データを取得できなかった旨のエラーメッセージを生成する（ステップＳ２７０６）。つぎに、出力部６０７が、ステップＳ２７０６によって生成されたエラーメッセージを出力し（ステップＳ２７０７）、一連の処理を終了する。以上の各ステップにより、要求情報１０１が示す項目のデータを利用者に提供することができる。また、利用者が取得する権限を有していない項目のデータについては利用者へ提供せず、エラーメッセージを出力することができる。
【０１８１】
このように、実施の形態４にかかる情報提供装置１００は、ポリシおよびシードの組合せごとにインデックスおよび秘匿化ファイルを作成し、利用者が要求する項目のデータをインデックスに基づいて秘匿化ファイルから取得する。これにより、利用者の権限に応じて利用者にデータを提供することができる。
【０１８２】
また、ポリシおよびシードの組合せの数は利用者の数より少ない。したがって、ポリシおよびシードの組合せごとの秘匿化ファイルを作成することで、たとえば利用者に提供可能な各項目のデータを含む利用者ファイルを利用者ごとに作成する場合に比べて、作成するデータのファイル数を低減することができる。したがって、メモリの使用量を低減することができる。
【０１８３】
また、実施の形態４にかかる情報提供装置１００において、実施の形態２にかかる情報提供装置１００のようにインデックスの圧出処理を行ってもよい。これにより、メモリの使用量をさらに低減することができる。
【０１８４】
また、図２６に示したインデックスの作成処理において、秘匿化ファイルの項目をフラットファイル４００の項目に変換してインデックスに追加する処理について説明したが、秘匿化ファイルの項目をそのままインデックスに追加する処理としてもよい。この場合は、インデックスは、秘匿化ファイルにおける項目と、フラットファイル４００におけるデータのアドレスと、を対応付けることになる。
【０１８５】
これに対して、読出部６０５は、要求情報１０１が示す項目（フラットファイル４００における項目）を秘匿化ファイルにおける項目に変換する。たとえば、作成部６０４が、秘匿化ファイルの作成時に、フラットファイル４００における項目と、秘匿化ファイルにおける項目と、の対応情報を生成して記憶部に記憶しておく。読出部６０５は、記憶部に記憶された対応情報に基づいて、フラットファイル４００における項目から秘匿化ファイルにおける項目への変換を行う。読出部６０５は、変換した項目およびインデックスに基づいてデータを読み出す。
【０１８６】
以上説明したように、情報提供装置、情報提供方法および情報提供プログラムは、ポリシごとにデータのアドレスを示すインデックスを記憶し、利用者が要求する項目のデータをインデックスに基づいてフラットファイルから読み出す。これにより、たとえば利用者に提供可能な各項目のデータを含む利用者ファイルを利用者ごとに記憶しなくても、利用者の権限に応じてデータを提供することができる。このため、メモリの使用量を低減することができる。
【０１８７】
また、ポリシに対応するインデックスがない場合にポリシに対応するインデックスをフラットファイルに基づいて作成し、作成したインデックスに基づいてデータを取得してもよい。これにより、すべてのポリシに対応するインデックスをあらかじめ記憶しておかなくても、利用者の権限に応じてデータを提供することができる。このため、インデックスを記憶する数を減らし、メモリの使用量を低減することができる。
【０１８８】
また、ポリシごとのインデックスのうちの、他のインデックスと共通の項目を含むインデックスは、他のインデックスと共通の項目と、他のインデックスを示す識別情報と、を対応付けてもよい。この場合は、他のインデックスを示す識別情報を含むインデックスが検索により得られた場合に、識別情報に基づいて他のインデックスを取得し、取得した他のインデックスに基づいてデータを読み出すことができる。これにより、記憶されるインデックスのデータ量を少なくし、メモリの使用量を低減することができる。
【０１８９】
また、利用者のポリシは、利用者とポリシとを対応付ける権限情報に基づいて特定することができる。また、読み出したデータは、たとえば要求元の利用者に対応するシードに基づいて秘匿化して出力してもよい。
【０１９０】
また、情報提供装置、情報提供方法および情報提供プログラムは、ポリシごとにデータのアドレスを示すインデックスを記憶し、インデックスに基づいてポリシごとの抽出ファイルからデータを読み出す。これにより、たとえば利用者に提供可能な各項目のデータを含む利用者ファイルを利用者ごとに記憶しなくても、利用者の権限に応じてデータを提供することができる。このため、メモリの使用量を低減することができる。
【０１９１】
また、ポリシに対応する抽出ファイルがない場合にポリシに対応する抽出ファイルをフラットファイルに基づいて作成し、作成した抽出ファイルに基づいてデータを取得してもよい。これにより、すべてのポリシに対応する抽出ファイルをあらかじめ記憶しておかなくても、利用者の権限に応じてデータを提供することができる。このため、抽出ファイルを記憶する数を減らし、メモリの使用量を低減することができる。
【０１９２】
また、情報提供装置、情報提供方法および情報提供プログラムは、ポリシおよびシードの組合せごとにデータのアドレスを示すインデックスを記憶し、インデックスに基づいてポリシおよびシードの組合せごとの秘匿化ファイルからデータを読み出す。これにより、たとえば利用者に提供可能な各項目のデータを含む利用者ファイルを利用者ごとに記憶しなくても、利用者の権限に応じてデータを提供することができる。このため、メモリの使用量を低減することができる。
【０１９３】
また、ポリシに対応する秘匿化ファイルがない場合にポリシに対応する秘匿化ファイルをフラットファイルに基づいて作成し、作成した秘匿化ファイルに基づいてデータを取得してもよい。これにより、すべてのポリシに対応する秘匿化ファイルをあらかじめ記憶しておかなくても、利用者の権限に応じてデータを提供することができる。このため、秘匿化ファイルを記憶する数を減らし、メモリの使用量を低減することができる。
【０１９４】
なお、各実施の形態で説明した情報提供方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本情報提供プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本情報提供プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１９５】
また、各実施の形態で説明した情報提供装置１００は、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す。）やＦＰＧＡなどのＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）によっても実現することができる。具体的には、たとえば、上述した情報提供装置１００の機能（取得部６０１〜出力部６０７）をＨＤＬ記述によって機能定義し、そのＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより情報提供装置１００を製造することができる。
【０１９６】
上述した各実施の形態に関し、さらに以下の付記を開示する。
【０１９７】
（付記１）記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得し、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索し、
前記記憶部に記憶されたファイルから、検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出し、
読み出した前記データを出力する、
処理をコンピュータに実行させることを特徴とする情報提供プログラム。
【０１９８】
（付記２）前記ファイル内の項目の組合せごとの索引情報に前記対応する索引情報がない場合に、当該対応する索引情報を前記ファイルに基づいて作成し、
前記データを読み出す際に、作成した前記索引情報に基づいて前記読み出す処理を前記コンピュータに実行させることを特徴とする付記１に記載の情報提供プログラム。
【０１９９】
（付記３）前記ファイル内の項目の組合せごとの索引情報のうちの、当該索引情報のうちの他の索引情報と共通の項目を含む索引情報は、前記共通の項目と、前記他の索引情報を示す識別情報と、を対応付ける情報であり、
前記識別情報を含む索引情報が前記検索により得られた場合に、前記識別情報に基づいて前記他の索引情報を取得し、取得した前記他の索引情報に基づいて前記読み出す処理を前記コンピュータに実行させることを特徴とする付記１または２に記載の情報提供プログラム。
【０２００】
（付記４）前記利用者情報と、前記ファイル内の項目のうちの当該利用者情報によって特定される利用者がデータを取得する権限を有する項目の組合せと、を対応付ける権限情報に基づいて前記利用者情報に対応する項目の組合せを特定し、
前記対応する索引情報を検索する際に、特定した前記組合せに対応する索引情報を検索する処理を前記コンピュータに実行させることを特徴とする付記１〜３のいずれか一つに記載の情報提供プログラム。
【０２０１】
（付記５）読み出した前記データを秘匿化し、
読み出した前記データを出力する際に、秘匿化した前記データを出力する処理を前記コンピュータに実行させることを特徴とする付記１〜４のいずれか一つに記載の情報提供プログラム。
【０２０２】
（付記６）前記要求情報は、前記ファイル内の複数の項目のうちの前記利用者がデータを要求する項目を示し、
前記データを読み出す際に、前記要求情報が示す項目のデータを読み出すことを特徴とする付記１〜５のいずれか一つに記載の情報提供プログラム。
【０２０３】
（付記７）記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得し、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索し、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目のデータを前記ファイルから抽出した抽出ファイルから、検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出し、
読み出した前記データを出力する、
処理をコンピュータに実行させることを特徴とする情報提供プログラム。
【０２０４】
（付記８）前記ファイル内の項目の組合せごとの前記抽出ファイルに、前記利用者情報によって特定される利用者がデータを取得する権限を有する項目の組合せに対応する抽出ファイルがない場合に、当該対応する抽出ファイルを前記ファイルに基づいて作成し、
前記データを読み出す際に、作成した前記抽出ファイルから前記対応する項目のデータの格納場所のデータを読み出す処理を前記コンピュータに実行させることを特徴とする付記７に記載の情報提供プログラム。
【０２０５】
（付記９）記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得し、
前記記憶部に記憶された前記ファイル内の項目の組合せおよびデータの秘匿化方法ごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索し、
前記記憶部に記憶された前記ファイル内の項目の組合せおよびデータの秘匿化方法ごとの、当該組合せに含まれる項目のデータを前記ファイルから抽出し、抽出したデータを当該組合せに含まれる秘匿化方法によって秘匿化した秘匿化ファイルから、検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出し、
読み出した前記データを出力する、
処理をコンピュータに実行させることを特徴とする情報提供プログラム。
【０２０６】
（付記１０）前記ファイル内の項目の組合せごとの前記秘匿化ファイルに、利用者情報によって特定される利用者がデータを取得する権限を有する項目の組合せおよび秘匿化方法に対応する秘匿化ファイルがない場合に、当該対応する秘匿化ファイルを前記ファイルに基づいて作成し、
前記データを読み出す際に、作成した前記秘匿化ファイルから前記対応する項目のデータの格納場所のデータを読み出す処理を前記コンピュータに実行させることを特徴とする付記９に記載の情報提供プログラム。
【０２０７】
（付記１１）前記ファイルのデータを要求する利用者と、前記ファイル内の項目のうちの当該利用者がデータを取得する権限を有する項目の組合せと、前記データの秘匿化方法と、を対応付ける権限情報に基づいて、前記利用者情報によって特定される利用者に対応する組合せおよび秘匿化方法を特定し、
前記対応する索引情報を検索する際に、特定した前記組合せおよび前記秘匿化方法に対応する索引情報を検索する処理を前記コンピュータに実行させることを特徴とする付記９または１０に記載の情報提供プログラム。
【０２０８】
（付記１２）記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得する取得部と、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索する検索部と、
前記記憶部に記憶されたファイルから、前記検索部による検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出す読出部と、
前記読出部によって読み出されたデータを出力する出力部と、
を備えることを特徴とする情報提供装置。
【０２０９】
（付記１３）記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得する取得部と、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索する検索部と、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目のデータを前記ファイルから抽出した抽出ファイルから、前記検索部による検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読出部と、
前記読出部によって読み出されたデータを出力する出力部と、
を備えることを特徴とする情報提供装置。
【０２１０】
（付記１４）記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得する取得部と、
前記記憶部に記憶された前記ファイル内の項目の組合せおよびデータの秘匿化方法ごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索する検索部と、
前記記憶部に記憶された前記ファイル内の項目の組合せおよびデータの秘匿化方法ごとの、当該組合せに含まれる項目のデータを前記ファイルから抽出し、抽出したデータを当該組合せに含まれる秘匿化方法によって秘匿化した秘匿化ファイルから、前記検索部による検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出す読出部と、
前記読出部によって読み出されたデータを出力する出力部と、
を備えることを特徴とする情報提供装置。
【０２１１】
（付記１５）記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得し、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索し、
前記記憶部に記憶されたファイルから、検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出し、
読み出した前記データを出力する、
ことを特徴とする情報提供方法。
【０２１２】
（付記１６）記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得し、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索し、
前記記憶部に記憶された前記ファイル内の項目の組合せごとの、当該組合せに含まれる項目のデータを前記ファイルから抽出した抽出ファイルから、検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出し、
読み出した前記データを出力する、
ことを特徴とする情報提供方法。
【０２１３】
（付記１７）記憶部に記憶された複数の項目を含むファイルの要求情報および利用者を特定する利用者情報を取得し、
前記記憶部に記憶された前記ファイル内の項目の組合せおよびデータの秘匿化方法ごとの、当該組合せに含まれる項目と当該項目のデータの格納場所とを対応付ける索引情報と前記利用者情報との対応情報を参照し、前記利用者情報に対応する索引情報を検索し、
前記記憶部に記憶された前記ファイル内の項目の組合せおよびデータの秘匿化方法ごとの、当該組合せに含まれる項目のデータを前記ファイルから抽出し、抽出したデータを当該組合せに含まれる秘匿化方法によって秘匿化した秘匿化ファイルから、検索により得られた前記索引情報に対応する項目のデータの格納場所のデータを読み出し、
読み出した前記データを出力する、
ことを特徴とする情報提供方法。
【符号の説明】
【０２１４】
１００  情報提供装置
１０１  要求情報
１０２  提供データ
１１０  ファイル
１２１〜１２３…  索引情報
２００  通信システム
２２１〜２２ｎ  端末装置
２３０  ネットワーク
３００  コンピュータ
３０１  ＣＰＵ
３０２  ＲＯＭ
３０３  ＲＡＭ
３０４  磁気ディスクドライブ
３０５  磁気ディスク
３０６  光ディスクドライブ
３０７  光ディスク
３０８  通信Ｉ／Ｆ
３０９  ユーザＩ／Ｆ
３２０  バス
４００  フラットファイル
５００  利用者テーブル
６０１  取得部
６０２  特定部
６０３  検索部
６０４  作成部
６０５  読出部
６０６  秘匿化部
６０７  出力部
６１０  インデックス情報記憶部
６１１  インデックス管理テーブル
６１２ａ，６１２ｂ  インデックス
１５１１，１５１２，１６１１，１６１２  抽出ファイル
１６１０  抽出ファイル記憶部
２１１１〜２１１３，２２１１〜２２１３  秘匿化ファイル
２２１０  秘匿化ファイル記憶部
ｐ１，ｐ２  ポリシ
ｓ１〜ｓ３  シード
【図１】
2012174147.tif 000003
【図２】
2012174147.tif 000004
【図３】
2012174147.tif 000005
【図４】
2012174147.tif 000006
【図５】
2012174147.tif 000007
【図６】
2012174147.tif 000008
【図７】
2012174147.tif 000009
【図８】
2012174147.tif 000010
【図９】
2012174147.tif 000011
【図１０】
2012174147.tif 000012
【図１１】
2012174147.tif 000013
【図１２】
2012174147.tif 000014
【図１３】
2012174147.tif 000015
【図１４】
2012174147.tif 000016
【図１５】
2012174147.tif 000017
【図１６】
2012174147.tif 000018
【図１７】
2012174147.tif 000019
【図１８】
2012174147.tif 000020
【図１９】
2012174147.tif 000021
【図２０】
2012174147.tif 000022
【図２１】
2012174147.tif 000023
【図２２】
2012174147.tif 000024
【図２３】
2012174147.tif 000025
【図２４】
2012174147.tif 000026
【図２５】
2012174147.tif 000027
【図２６】
2012174147.tif 000028
【図２７】
2012174147.tif 000029