(57)【要約】【課題】データベースに関する専門知識を十分に有していない作業者であっても、仕様変更または機能追加を容易に行うことができる、情報処理装置、情報処理方法およびプログラムを提供する。【解決手段】データベースを構成するテーブルに対する操作を実行する情報処理装置１００であって、操作内容を定義するルール定義ファイルＦ１０１の入力を受け付ける入力受付部１１と、ルール定義ファイルＦ１０１に定義された操作内容を解析する解析部１２と、解析部１２により解析された操作内容に従って、テーブルに対する操作を実行する操作実行部１３とを備える。【選択図】図２
2014021553.tif 000002
【特許請求の範囲】
【請求項１】
データベースを構成するテーブルに対する操作を実行する情報処理装置であって、
前記操作の操作内容を定義するテキストファイルの入力を受け付ける入力受付部と、
前記テキストファイルに定義された前記操作内容を解析する解析部と、
前記解析部により解析された前記操作内容に従って、前記テーブルに対する操作を実行する操作実行部と、
を備えることを特徴とする、情報処理装置。
【請求項２】
前記テキストファイルは、前記操作内容として、前記テーブルからのデータを抽出するための抽出ルール、複数の前記テーブル間の結合条件を示す結合ルール、前記データに対する加工処理の内容を指定する加工ルール、および、前記データの出力形態を示す出力ルールのうち少なくともいずれか１つを定義することを特徴とする、請求項１に記載の情報処理装置。
【請求項３】
前記テキストファイルは、前記テーブルの列単位で前記操作内容を定義することを特徴とする、請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記テキストファイルは、前記操作内容として３つ以上のテーブル間の結合ルールを定義する場合、階層構造を用いて、第１のテーブルと第２のテーブルとの対応関係を上位に定義し、第２のテーブルと第３のテーブルとの対応関係を下位に定義することを特徴とする、請求項１から請求項３のいずれか１項に記載の情報処理装置。
【請求項５】
前記操作実行部は、前記操作内容として前記加工ルールを定義する前記テキストファイルの入力を受け付けた場合、予め用意されたプログラムのうち、前記テキストファイルに定義された前記加工ルールと適合するプログラムを特定し、特定した前記プログラムを実行することにより、前記データに対する加工処理を行うことを特徴とする、請求項２に記載の情報処理装置。
【請求項６】
データベースを構成するテーブルに対する操作を実行するための情報処理方法であって、
（ａ）前記操作の操作内容を定義するテキストファイルの入力を受け付けるステップと、
（ｂ）前記ステップ（ａ）において受け付けられた前記テキストファイルに定義された前記操作内容を解析するステップと、
（ｃ）前記ステップ（ｂ）において解析された前記操作内容に従って、前記テーブルに対する操作を実行するステップと、
を含むことを特徴とする、情報処理方法。
【請求項７】
データベースを構成するテーブルに対する操作を、コンピュータによって実行するためのプログラムであって、
前記コンピュータに、
（ａ）前記操作の操作内容を定義するテキストファイルの入力を受け付けるステップと、
（ｂ）前記ステップ（ａ）において受け付けられた前記テキストファイルに定義された前記操作内容を解析するステップと、
（ｃ）前記ステップ（ｂ）において解析された前記操作内容に従って、前記テーブルに対する操作を実行するステップと、
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法およびプログラムに関し、特に、リレーショナルデータベースを構成するテーブルを操作するための情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
近年、データベースの主流は、リレーショナルデータベースである。また、このリレーショナルデータベースを構成するテーブルに対して、データの抽出、複数テーブル間の結合、データの加工、データの出力などの操作を行うためには、一般に、ＳＱＬ（Structured Query Language）と呼ばれるデータベース専用の言語が用いられている。そして、利用者側では、特にデータベースを構成している記憶装置を意識することなく、データの検索などを実行することが可能となる。
【０００３】
また、データベースを用いたシステムの開発、運用または保守を効率的に行うことを目的として、たとえば特許文献１に示される技術が知られている。この特許文献１に示される技術によれば、複数のＳＱＬ文の実行順序を記した定義情報を用いることにより、プログラミング作業を行うことなく、システムの開発、運用または保守を行うことができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−３４５４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、特許文献１に示される技術を用いる場合であっても、上述のとおり、作業者は、ＳＱＬを用いてシステムの運用等を行う。このため、データの出力形態を変更する場合など、仕様変更または機能追加を行う場合、作業者は、ＳＱＬ文の記述を変更する必要がある。しかしながら、ＳＱＬに関する知識を有する者は多くはなく、ＳＱＬなどデータベースに関する専門知識を十分に有していない者にとって、仕様変更または機能追加を行うことは容易ではない。また、仕様変更または機能追加を行う場合には、ＳＱＬ文の記述の変更等のために多くの手間を要することがあり、作業者は、柔軟かつ迅速に対応することが難しいという問題があった。
【０００６】
この発明は、上述の課題を解決するためになされたもので、その目的は、データベースに関する専門知識を十分に有していない作業者であっても、仕様変更または機能追加を容易に行うことができる、情報処理装置、情報処理方法およびプログラムを提供することである。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明の一側面における情報処理装置は、データベースを構成するテーブルに対する操作を実行する情報処理装置であって、
前記操作の操作内容を定義するテキストファイルの入力を受け付ける入力受付部と、
前記テキストファイルに定義された前記操作内容を解析する解析部と、
前記解析部により解析された前記操作内容に従って、前記テーブルに対する操作を実行する操作実行部と、
を備えることを特徴とする。
【０００８】
また、上記目的を達成するため、本発明の一側面における情報処理方法は、データベースを構成するテーブルに対する操作を実行するための情報処理方法であって、
（ａ）前記操作の操作内容を定義するテキストファイルの入力を受け付けるステップと、
（ｂ）前記ステップ（ａ）において受け付けられた前記テキストファイルに定義された前記操作内容を解析するステップと、
（ｃ）前記ステップ（ｂ）において解析された前記操作内容に従って、前記テーブルに対する操作を実行するステップと、
を含むことを特徴とする。
【０００９】
さらに、上記目的を達成するため、本発明の一側面におけるプログラムは、データベースを構成するテーブルに対する操作を、コンピュータによって実行するためのプログラムであって、
前記コンピュータに、
（ａ）前記操作の操作内容を定義するテキストファイルの入力を受け付けるステップと、
（ｂ）前記ステップ（ａ）において受け付けられた前記テキストファイルに定義された前記操作内容を解析するステップと、
（ｃ）前記ステップ（ｂ）において解析された前記操作内容に従って、前記テーブルに対する操作を実行するステップと、
を実行させることを特徴とする。
【発明の効果】
【００１０】
本発明における情報処理装置、情報処理方法およびプログラムによれば、データベースに関する専門知識を十分に有していない作業者であっても、仕様変更または機能追加を容易に行うことができる。
【図面の簡単な説明】
【００１１】
【図１】本実施の形態における情報処理装置を含む情報処理システム全体の構成を示す図である。
【図２】本実施の形態の情報処理装置の構成を示す図である。
【図３】本実施の形態の情報処理装置の操作実行部の構成を示す図である。
【図４】本実施の形態の情報処理装置によるデータベース操作全体の流れを示すフローチャートである。
【図５】本実施の形態の情報処理装置によるデータベースの操作の流れの一例を示す図である。
【図６】図５に示す操作を実現するためのルール定義ファイルの詳細を示す図である。
【図７】本実施の形態の情報処理装置により実現されるデータベースの操作の一例を示す図である。
【図８】本実施の形態の情報処理装置により実現されるデータベースの操作の一例を示す図である。
【図９】本実施の形態の情報処理装置による加工処理の流れの一例を示す図である。
【図１０】図９に示す加工処理を実現するためのルール定義ファイルの詳細を示す図である。
【図１１】本実施の形態の情報処理装置により実現される加工処理のイメージ図である。
【図１２】本実施の形態の情報処理装置における加工処理の実行および加工処理のための機能の追加イメージを示すイメージ図である。
【図１３】本発明の実施の形態における情報処理装置を実現するコンピュータの一例を示すブロック図である。
【発明を実施するための形態】
【００１２】
［システム構成］
以下、本発明の実施の形態における情報処理装置、情報処理方法およびプログラムについて、図を参照しながら説明する。
【００１３】
最初に、図１を用いて、本実施の形態における情報処理装置１００を含む情報処理システム全体の構成について説明する。図１は、本実施の形態における情報処理装置を含む情報処理システム全体の構成を示す図である。
【００１４】
図１に示すように、情報処理システムは、情報処理装置１００と、参照元データベースＴ１０１と、出力先データベースＴ１０２とを備える。
【００１５】
情報処理装置１００は、参照元データベースＴ１０１と接続され、参照元データベースＴ１０１を構成する複数のテーブルに対する操作を実行し、当該操作によって得られた出力データを出力先データベースＴ１０２へ出力する。また、情報処理装置１００は、出力先データベースＴ１０２以外の装置等に出力データを出力することもできる。図１に示す例において、出力先ファイルＦ１０２は、出力データとして出力された出力ファイルを示している。
【００１６】
参照元データベースＴ１０１は、１または複数のテーブルにより構成される。図１では、参照元データベースＴ１０１を構成するテーブルとして、テーブルＡ、テーブルＢおよびテーブルＣを示す。たとえば、情報処理装置１００は、テーブルＡ、テーブルＢまたはテーブルＣから、所定の列の抽出、テーブル間の結合またはデータに対する加工などの操作を実行して出力データを生成する。
【００１７】
出力先データベースＴ１０２は、１または複数のテーブルにより構成される。図１に示す例では、出力先データベースＴ１０２は、テーブルＸおよびテーブルＹによって構成されている。テーブルＸは、たとえば、参照元データベースＴ１０１のテーブルＡおよびテーブルＢのデータに基づいて情報処理装置１００により生成された出力データに相当する。また、テーブルＹは、たとえば、参照元データベースＴ１０１のテーブルＣのデータに基づいて情報処理装置１００により生成された出力データに相当する。
【００１８】
出力先ファイルＦ１０２は、たとえばＣＳＶ（Comma Separated Values）形式で記載されたファイルＸ、または、ＴＳＶ（Tab-Separated Values）形式で記載されたファイルＹにより構成される。ファイルＸまたはファイルＹには、参照元データベースＴ１０１のテーブルＡ、テーブルＢまたはテーブルＣのデータに基づいて情報処理装置１００により生成された出力データが含まれる。
【００１９】
また、情報処理装置１００は、出力データと予め設定されたテンプレートとを合成等することにより、Ｗｅｂ画面を構成するＨＴＭＬ形式またはメールを構成するテキスト形式のデータを作成し、作成したデータを出力先ファイルＦ１０２として出力することもできる。
【００２０】
［情報処理装置の構成］
続いて、図２を用いて情報処理システムを構成する情報処理装置１００の構成を説明する。図２は、本実施の形態の情報処理装置の構成を示す図である。
【００２１】
図２に示すように、情報処理装置１００は、入力受付部１１と、解析部１２と、操作実行部１３と、出力部１４とを備える。また、本実施の形態では、情報処理装置１００は、メモリ１５も備える。さらに、本実施の形態では、後述するように、情報処理装置１００は、コンピュータプログラムを実行することによって構築される。
【００２２】
入力受付部１１は、参照元データベースＴ１０１を構成するテーブルＡ、テーブルＢまたはテーブルＣに対する操作内容を定義する、ルール定義ファイルＦ１０１の入力を受け付ける。このルール定義ファイルＦ１０１は、たとえばＹＡＭＬなどのテキスト形式で記述されている。なお、ルール定義ファイルＦ１０１は、ＹＡＭＬ形式に限らず、他のテキスト形式により記述されていても良い。
【００２３】
具体的には、ルール定義ファイルＦ１０１は、操作内容として、テーブルからのデータを抽出するための抽出ルール、複数のテーブル間の結合条件を示す結合ルール、データに対する加工処理の内容を指定する加工ルールのうち少なくともいずれか１つを定義する。また、ルール定義ファイルＦ１０１は、操作内容として、出力データの出力形態を示す出力ルールを定義することもできる。そして、入力受付部１１は、このルール定義ファイルＦ１０１の入力を受け付けて、受け付けたルール定義ファイルＦ１０１を解析部１２へ出力する。
【００２４】
なお、ここでは、ルール定義ファイルＦ１０１の定義により指定される参照元データベースおよび出力先データベースは、情報処理装置１００との間でアクセス経路が確保されているデータベースであることとする。
【００２５】
解析部１２は、ルール定義ファイルＦ１０１に定義されたルールの解析処理を行い、解析結果を操作実行部１３へ出力する。
【００２６】
操作実行部１３は、解析部１２から取得したルールの解析結果に従って、テーブルＡ、テーブルＢまたはテーブルＣに対する操作を実行する。そして、本実施の形態では、操作実行部１３は、このような操作により得られたデータをメモリ１５上に展開する。
【００２７】
また、操作実行部１３は、本実施の形態では、予め用意された複数のプログラムから所定のプログラムを読み込み、読み込んだ当該プログラムを実行することもできる。具体的には、操作実行部１３は、予め用意された加工処理モジュールＭ１０１の読み込みを行い、読み込んだ加工処理モジュールＭ１０１を実行することにより加工処理を行うことができる。
【００２８】
より詳細には、加工処理モジュールＭ１０１は、加工内容のカテゴリ別に用意されている。ここで、カテゴリ別とは、たとえば日付に関するデータ、文字列に関するデータまたは数字に関するデータなど、加工対象となるデータの種類別であることを意味する。さらに、各カテゴリの加工処理モジュールＭ１０１は、１または複数の加工メソッドを含む。
【００２９】
また、入力受付部１１により入力が受付けられるルール定義ファイルＦ１０１には、たとえば加工ルールとして、カテゴリ名（以下、「パッケージ名」とも称する）および関数名（以下「加工メソッド名」とも称する）が記載されていても良い。この場合、操作実行部１３は、既に読み込んだ加工処理モジュールＭ１０１のうち、当該加工ルールに示されるカテゴリ名に対応する加工処理モジュールＭ１０１を特定する。
【００３０】
そして、操作実行部１３は、特定した加工処理モジュールＭ１０１に含まれる加工メソッドのうち、加工ルールに示される関数名に対応する加工メソッドを特定する。そして、操作実行部１３は、特定した加工メソッドを実行することにより加工処理を行う。
【００３１】
なお、操作実行部１３は、一度読み込んだ加工処理モジュールＭ１０１に関しては、メモリ１５等に保存し、同じ加工処理モジュールＭ１０１を再び読み込みを行うことなく、保存された加工処理モジュールＭ１０１を用いて加工処理を実行することができる。
【００３２】
出力部１４は、操作実行部１３によりメモリ１５上に展開されたデータを、出力データの利用目的等に応じて、たとえば出力先データベースＴ１０２に出力する。このとき、出力部１４は、解析部１２により解析された出力ルールの解析結果に従った形態で当該データを出力する。
【００３３】
すなわち、情報処理装置１００は、抽出ルール、結合ルール、加工ルールまたは出力ルールなどの定義をテキスト形式で記載したルール定義ファイルＦ１０１の入力を受け付ける。そして、情報処理装置１００は、ルール定義ファイルＦ１０１に定義されたルールを解析し、当該ルールに従ってデータベースに対する操作を実行する。このため、たとえば、仕様変更または機能追加を行う場合、作業者は、テキスト形式でルールの変更または追加を行うことで足りる。従って、作業者は、ＳＱＬ文の記述の変更など、情報処理装置１００自体に対する作業を行う必要はない。
【００３４】
したがって、データベースに関する専門知識を十分に有していない作業者であっても、仕様変更または機能追加を容易に行うことができる。また、ＳＱＬ文の記述の変更などの複雑な作業を行う必要がないため、作業者は柔軟かつ迅速に仕様変更または機能追加を行うことができる。以下、情報処理装置１００の操作実行部１３について、さらに具体的に説明する。
【００３５】
（操作実行部のより具体的な構成の説明）
続いて、図３を用いて、図２に示した操作実行部１３の構成を更に具体的に説明する。図３は、本実施の形態の情報処理装置の操作実行部の構成を示す図である。
【００３６】
図３に示すように、本実施の形態において、情報処理部１００の操作実行部１３は、さらに、抽出部２１と、結合部２２と、加工部２３とを備える。
【００３７】
抽出部２１は、解析部１２から出力された抽出ルールの解析結果に従って、参照元データベースＴ１０１のテーブルＡ、テーブルＢおよびテーブルＣのうち少なくともいずれか１つからレコードの抽出を行う。また、抽出部２１は、抽出したレコードをハッシュテーブルと配列とを組み合わせた形式でメモリ１５上に展開する。
【００３８】
結合部２２は、解析部１２から出力された結合ルールの解析結果に従って、参照元データベースＴ１０１のテーブルＡ、テーブルＢおよびテーブルＣのうち少なくとも２以上のテーブルの結合処理を実行する。具体的には、結合部２２は、結合対象となるテーブル名と列名との組み合わせで指定した結合キーにより、メモリ１５上に展開されている結合元のレコードと結合先のレコードとを結合する。
【００３９】
加工部２３は、図１２を用いて後述するプラグイン実行モジュールＰ９０１によって構成されている。まず、加工部２３は、解析部１２から出力された加工ルールの解析結果に対応する加工処理モジュールＭ１０１がメモリ１５に保存されているか否かを判断する。そして、当該加工処理モジュールＭ１０１が保存されていない場合、すなわち、当該加工処理モジュールＭ１０１が未だ読み込まれていない場合、加工部２３は、当該加工処理モジュールＭ１０１の読み込みを実行する。
【００４０】
そして、加工部２３は、読み込んだ加工処理モジュールＭ１０１に含まれる加工メソッドのうち、たとえば加工ルールに示された関数名に対応する加工メソッドを特定し、特定した加工メソッドを実行する。
【００４１】
また、加工部２３は、読み込んだ加工処理モジュールＭ１０１をメモリ１５に保存する。このため、加工部２３は、加工ルールに示されたカテゴリ名に対応する加工処理モジュールＭ１０１が既にメモリ１５に保存されている場合には、読み込みを再び行うことなく、保存された加工処理モジュールＭ１０１に基づいて加工処理を実行する。
【００４２】
なお、加工処理モジュールＭ１０１は、たとえばＰｅｒｌ（Practical Extraction and Report Language）によって作成される。以下、加工処理モジュールＭ１０１をプラグイン部品とも称する。また、作業者は、新たな加工処理モジュールＭ１０１を追加することが可能である。この場合、加工部２３は、新たに格納された加工処理モジュールＭ１０１を読み込むことによって、実行することのできる加工処理の機能を拡張させることができる。
【００４３】
また、作業者は、加工処理モジュールＭ１０１に、新たな加工メソッドを追加することが可能である。これにより、上記と同様に、加工部２３は、新たに追加された加工メソッドを読み込むことによって、実行することのできる加工処理の機能を拡張させることができる。
【００４４】
出力部１４は、上述した各種処理により得られたデータを、たとえば出力先データベースＴ１０２へ出力する。このとき、出力部１４は、解析部１２から出力された出力ルールの解析結果に従ってデータの出力を行う。
【００４５】
なお、作業者は、ルール定義ファイルＦ１０１に対して、出力ルールの変更または追加を行うことも可能である。これにより、出力部１４は、出力データを出力先データベースＴ１０２（図１参照）以外の他のデータベースに出力することができる。さらに、出力部１４は、出力データをＣＳＶ形式ファイルとして出力するなど、異なる出力形態によってデータの出力を行うこともできる。
【００４６】
［システム動作］
次に、図４から図１２を参照して本実施の形態の情報処理装置１００の動作について、「データベース操作全体の流れ」、「抽出処理および結合処理の詳細な説明」および「加工処理の詳細な説明」に分けて説明する。以下の説明においては、適宜図１から図３を参酌する。
【００４７】
また、本実施の形態では、情報処理装置１００を動作させることによって、情報処理方法が実施される。よって、本実施の形態における情報処理方法の説明は、以下の情報処理装置１００の動作説明に代える。
【００４８】
（ａ）データベース操作全体の流れ
図４は、本実施の形態の情報処理装置によるデータベース操作全体の流れを示すフローチャートである。図４においては、予め入力受付部１１が、ルール定義ファイルＦ１０１の入力を受け付け、これを解析部１２に入力していることとする。
【００４９】
図４に示すように、まず、解析部１２は、ルール定義ファイルＦ１０１が例えばＹＡＭＬ形式によって記述されている場合、一般的なＹＡＭＬパーサ、すなわちＹＡＭＬ解析モジュールなどを使用して、ＹＡＭＬ形式のテキストで記述されたルール定義ファイルＦ１０１を読み込み、読み込んだルール定義ファイルＦ１０１を定義情報としてメモリ１５上に展開する。
【００５０】
そして、解析部１２は、メモリ１５上に展開された定義情報を解析する（ステップＳ１１）。具体的には、解析部１２は、定義情報から、たとえばデータの列単位で定義された抽出ルール、結合ルール、加工ルールおよび出力ルールを特定し、特定したルールを解析する。そして、解析部１２は、解析結果を操作実行部１３へ出力する。
【００５１】
次に、抽出部２１は、解析部１２から取得した抽出ルールの解析結果に従って、参照元データベースＴ１０１からレコードの抽出を行う。そして、抽出部２２は、抽出した抽出レコードのデータを、ハッシュテーブルと配列とを組み合わせた形式でメモリ１５上に展開する（ステップＳ１２）。
【００５２】
次に、結合部２２は、解析部１２から結合ルールの解析結果が出力されているか否か、すなわちルール定義ファイルＦ１０１に結合ルールの定義が含まれているか否かを判断する（ステップＳ１３）。そして、ルール定義ファイルＦ１０１に結合ルールが含まれている場合には（ステップＳ１３において「Ｙｅｓ」）、結合部２２は、当該結合ルールの解析結果に従って結合処理を実行する（ステップＳ１４）。
【００５３】
すなわち、結合部２２は、結合ルールにより指定された結合キーを用いて、メモリ１５上に展開されている結合元のデータ、すなわち抽出部２１により抽出された抽出レコードと、結合先のレコードとを結合する。これにより、テーブル間の結合が行われる。なお、結合ルールにおいて、結合キーは、テーブル名と列名との組み合わせにより指定されている。
【００５４】
次に、結合処理（ステップＳ１４）の後、加工部２３は、解析部１２から加工ルールの解析結果が出力されているか否か、すなわちルール定義ファイルＦ１０１に加工ルールの定義が含まれているか否かを判断する（ステップＳ１５）。
【００５５】
そして、ルール定義ファイルＦ１０１に加工ルールが含まれている場合には（ステップＳ１５において「Ｙｅｓ」）、加工部２３は、さらに、当該加工ルールに示されたカテゴリ名に対応する加工処理モジュールＭ１０１を、既にメモリ１５に読み込んでいるか否かを判断する（ステップＳ１６）。
【００５６】
そして、加工部２３は、当該加工ルールに示されたカテゴリ名に対応する加工処理モジュールＭ１０１を未だ読み込んでいないと判断した場合には（ステップＳ１６において「Ｎｏ」）、当該カテゴリ名に対応する加工処理モジュールＭ１０１の読み込みを行う（ステップＳ１７）。そして、加工部２３は、読み込んだ加工処理モジュールＭ１０１をメモリ１５等に保存する（ステップＳ１８）。
【００５７】
そして、加工部２３は、読み込んだ加工処理モジュールＭ１０１に含まれる加工メソッドのうち、加工ルールに示された関数名に対応する加工メソッドを特定する。そして、加工部２３は、特定した加工メソッドを実行する（ステップＳ１９）。すなわち、加工部２３は、加工前の抽出レコードのデータを該当する加工メソッドに引渡して加工処理を実行し、メモリ１５上の抽出レコードのデータを、実行後の加工メソッドから返却された加工後のデータで上書きする。
【００５８】
なお、加工ルールに示されたカテゴリ名に対応する加工処理モジュールＭ１０１が既に読み込まれている場合であっても、当該加工処理モジュールＭ１０１の読み込み以降に、当該加工処理モジュールＭ１０１に新たな加工メソッドが追加されることがある。この場合、加工部２３は、新たに追加された加工メソッドを読み込むことにより、当該加工メソッドを実行することができる。
【００５９】
その後、出力部１４は、解析部１２により解析された出力ルールの解析結果に従った形態で、メモリ１５上に展開されているレコードのデータの出力処理を行う（ステップＳ２０）。
【００６０】
（ｂ）結合処理の詳細な説明
次に、図５から図８を用いて、結合部２２による結合処理（図４に示したステップＳ１４）の詳細について、「結合処理の具体例」、「条件による絞り込みを行う場合」および「条件キーに紐付いたレコードの取得を行う場合」に分けて説明する。
【００６１】
（ｉ）結合処理の具体例
図５は、本実施の形態の情報処理装置によるデータベースの操作の流れの一例を示す図である。
【００６２】
図５に示す例では、ルール定義ファイルＦ１０１（図２参照）に、定義Ｄ２０１、Ｄ２０２およびＤ２０３が含まれ、テーブルＡ、テーブルＢおよびテーブルＣの結合処理が実行される状況を示している。
【００６３】
まず、定義Ｄ２０１では、出力先テーブルＸへのマッピングのルールを定義する。この定義２０１に従って、たとえば、指定した条件によりテーブルＡから取得されるレコードが絞り込まれる（図５に示す処理「Ｃ２０１」）。また、この定義Ｄ２０１に従って、出力先テーブルＸの列Ｘ１、列Ｘ３および列Ｘ４には、それぞれテーブルＡの列Ｋ２、列Ａ１および列Ａ２から取得された値が割り当てられる。なお、列Ａ１および列Ａ２には、「KEYS:」で指定されたキーのグループ化によって得られた集計値が割り当てられる。
【００６４】
また、この定義Ｄ２０１に従って、出力先テーブルＸの列Ｘ２には、テーブルＢを経由して、テーブルＣの列Ｃ１から取得した値が割り当てられる。具体的には、紐付けＬ２０１により、テーブルＡとテーブルＢとのレコードのうち、列Ｋ２の値が一致するレコードに絞り込まれ、マッピングＲ２０１により、出力先テーブルＸの列Ｘ２に、結合名「結合−テーブルＢ」の列Ｂ１の値が割り当てられる。なお、結合名「結合−テーブルＢ」の列Ｂ１には、後述する定義Ｄ２０２により、テーブルＣの列Ｃ１から取得された値が割り当てられる。
【００６５】
定義Ｄ２０２では、テーブルＢを経由して、結合名「結合−テーブルＢ」に対してテーブルＣから取得した値を割り当てるルールを定義する。具体的には、定義Ｄ２０２に従って、紐付けＬ２０２により、テーブルＢとテーブルＣとのレコードのうち、列Ｋ３の値が一致するレコードに絞り込まれ、マッピングＲ２０２により、結合名「結合−テーブルＢ」の列Ｂ１に、テーブルＣの列Ｃ１の値が割り当てられる。
【００６６】
なお、ルール定義Ｆ１０１（図２参照）においては、加工処理（図５に示す処理「Ｐ２０１」）または出力処理（図５に示す処理「Ｐ２０２」）のルールを定義することも可能である。
【００６７】
続いて、図５に示す結合処理の詳細について、図６を用いて説明する。図６は、図５に示す操作を実現するためのルール定義ファイルの詳細を示す図である。
【００６８】
図６に示す例では、ルール定義ファイルＦ１０１（図２参照）に、定義Ｄ３００、Ｄ３１０およびＤ３２０が含まれる。ここでは、これらの定義Ｄ３００、Ｄ３１０およびＤ３２０に従って、参照元データベースＴ１０１のテーブルＡ、テーブルＢおよびテーブルＣが参照元となり、出力先テーブルＸの各列へのマッピングが実行される場合について説明する。また、これらの定義Ｄ３００、Ｄ３１０およびＤ３２０は、ＹＡＭＬ形式により記載されている。
【００６９】
なお、定義Ｄ３００は、図５に示す定義Ｄ２０１に相当し、定義Ｄ３１０は、図５に示す定義Ｄ２０２に相当し、定義Ｄ３２０は、図５に示す定義Ｄ２０３に相当する。これら定義Ｄ３００、Ｄ３１０およびＤ３２０は、定義Ｄ３００の下位に定義Ｄ３１０が定義され、さらに、定義Ｄ３１０の下位に定義Ｄ３２０が定義された階層構造となっている。
【００７０】
また、定義Ｄ３００、Ｄ３１０およびＤ３２０は、それぞれ複数の定義ファイルを含む。以下、各定義について具体的に説明する。
【００７１】
定義Ｄ３００は、定義Ｄ３０１、Ｄ３０２、Ｄ３０３、Ｄ３０４およびＤ３０５を含み、テーブルＡおよび結合名「結合−テーブルＢ」の領域から出力先テーブルＸへのマッピングのルールを定義する。より詳細には、定義Ｄ３０１は、参照元のテーブルＡから取得したレコードを中心に、出力先テーブルＸにマッピングを行うことを「TABLE:」に定義する。
【００７２】
定義Ｄ３０２は、参照元のテーブルＡの主キーになる列名を「KEYS:」に定義する。この例のように、キーが複数になる場合は、「−列名」の形で、キーの数だけインデントを揃えて複数行が記載される。
【００７３】
定義Ｄ３０３は、参照元のテーブルＡから取得した列名から、出力先テーブルＸの列名へのマッピングを「COLUMNS:」に定義する。また、定義Ｄ３０３は、「KEYS:」で定義された紐付けＬ３０１により、テーブルＡとテーブルＢとのレコードのうち、列Ｋ２の値が一致するレコードを絞り込み、マッピングＲ３０１により、結合名「結合−テーブルＢ」の領域の列Ｂ１の値を出力先テーブルＸの列Ｘ２に割り当てることを定義する。これにより、定義Ｄ３１１に定義されている結合名「結合−テーブルＢ」の領域から出力先テーブルＸへ値を受け渡すことができる。
【００７４】
定義Ｄ３０４は、参照元のテーブルＡから取得するレコードについて、絞り込みの条件を定義する。なお、「{SYSTEM}」はシステム側の定義領域を示し、「{CONFIG}」は個別環境設定の定義領域を示す。
【００７５】
定義Ｄ３０５は、定義Ｄ３０２で指定された各列を主キーの単位で集計し、グループ化することを定義している。
【００７６】
定義Ｄ３１０は、定義Ｄ３１１、Ｄ３１２、Ｄ３１３およびＤ３１４を含む。この定義Ｄ３１０は、テーブルＢから結合名「結合−テーブルＢ」へのマッピングおよび結合名「結合−テーブルＣ」の領域から出力先テーブルＸの列Ｘ２に値を受け渡すための結合ルールを定義する。
【００７７】
より詳細には、定義Ｄ３１１は、結合名を「結合−テーブルＢ」として定義する。定義Ｄ３１２は、参照元のテーブルＢから取得したレコードを中心に、結合名「結合−テーブルＢ」の領域にマッピングを行うことを「TABLE:」に定義する。
【００７８】
定義Ｄ３１３は、参照元のテーブルＢの主キーになる列名を「KEYS:」に定義する。なお、キーが複数になる場合は、「−列名」の形で、キーの数だけインデントを揃えて複数行が記載される。
【００７９】
定義Ｄ３１４は、参照元のテーブルＢから取得した列名から、結合名「結合−テーブルＢ」の領域の列名へのマッピングを「COLUMNS:」に定義する。また、定義Ｄ３１４は、紐付けＬ３０２により、テーブルＢとテーブルＣとのレコードのうち列Ｋ３の値が一致するレコードを絞り込み、マッピングＲ３１１により、結合名「結合−テーブルＣ」の列Ｃ１から取得した値を「結合−テーブルＢ」の領域の列Ｂ１に割り当てることを定義する。
【００８０】
具体的には、紐付けＬ３０１により、テーブルＡとテーブルＢとのレコードのうち列Ｋ２の値が一致するレコードが絞り込まれ、マッピングＲ２０１により、結合名「結合−テーブルＢ」の列Ｂ１の値が割り当てられる。また、マッピングＲ３１１により、結合名「結合-テーブルＢ」の列Ｂ１の値には、参照元のテーブルＣの列Ｃ１から取得した値が割り当てられる。これにより、出力先テーブルＸの列Ｘ２に、「結合−テーブルＢ」を経由して「結合−テーブルＣ」の領域から取得した値が割り当てられる。
【００８１】
定義Ｄ３２０は、定義Ｄ３２１、Ｄ３２２、Ｄ３２３およびＤ３２４を含む。この定義Ｄ３２０は、参照元のテーブルＣからマッピングＲ３１１で使用する結合名「結合−テーブルＢ」の列Ｂ１に値を受け渡すための結合ルールを定義する。また、定義Ｄ３２０では、定義Ｄ３１１に定義されている上位の結合名「結合−テーブルＢ」の領域の列Ｂ１に値を受け渡すため、定義Ｄ３１１、Ｄ３１２、Ｄ３１３およびＤ３１４が結合名「結合−テーブルＢ」配下のインデントＩ３２１に合わせて記載される。
【００８２】
より詳細には、定義Ｄ３２１は、結合名を「結合−テーブルＣ」として定義する。定義Ｄ３２２は、参照元のテーブルＣから取得したレコードを中心に、結合名「結合−テーブルＣ」の領域にマッピングを行うことを「TABLE:」に定義する。
【００８３】
定義Ｄ３２３は、参照元のテーブルＣの主キーになる列名を「KEYS:」に定義する。なお、キーが複数になる場合は、「−列名」の形でキーの数だけインデントを揃えて複数行が記載される。
【００８４】
定義Ｄ３２４は、参照元のテーブルＣから取得した列名から、結合名「結合−テーブルＣ」の領域の列名へのマッピングを「COLUMNS:」に定義する。これにより、結合名「結合−テーブルＢ」の列Ｂ１に、結合名「結合−テーブルＣ」を経由してテーブルＣから取得した値が割り当てられる。
【００８５】
上記のように、階層構造を用いて３つの定義Ｄ３００、Ｄ３１０およびＤ３２０を組み合わせる。すなわち、テーブルＡおよび結合名「結合−テーブルＢ」と、テーブルＸとの対応関係を上位に定義する。そして、その下位に、結合名「結合−テーブルＣ」とテーブルＢとの対応関係、および、テーブルＢと結合名「結合−テーブルＢ」との対応関係を定義する。さらに、その下位に、テーブルＣと結合名「結合−テーブルＣ」との対応関係、および、結合名「結合−テーブルＣ」とテーブルＢとの対応関係を定義する。これにより、３つの参照元のテーブルＡ、テーブルＢおよびテーブルＣの結合、および、出力先テーブルＸの各列へのマッピングが実現できる。
【００８６】
また、上記のように、複数のテーブルを結合する結合処理として、定義Ｄ３０４の「WHERE:」に示すように、結合先のテーブルを利用した条件による絞込みを行う場合と、定義Ｄ３０３の{結合-テーブルＢ}に示すように、結合先のテーブルから結合キーに紐付いたレコードを取得する場合とがある。以下、結合先のテーブルを利用した条件による絞込みを行う場合と、結合先のテーブルから結合キーに紐付いたレコードを取得する場合とについて、それぞれ詳細に説明する。
【００８７】
（ｉｉ）条件による絞り込みを行う場合
図７は、本実施の形態の情報処理装置により実現されるデータベースの操作の一例を示す図である。
【００８８】
図７に示す例では、ルール定義ファイルＦ１０１に、定義Ｄ４０１、Ｄ４０２およびＤ４０３が含まれている場合について説明する。また、図７に示す例では、操作の対象として、テーブルＡ、テーブルＢおよびテーブルＣに加えて、さらに、テーブルＤも含まれていることとする。また、図７に示す例では、定義Ｄ４０１、Ｄ４０２およびＤ４０３によって、処理Ｐ４０１からＰ４０７までが実行される。
【００８９】
定義Ｄ４０１は、「WHERE:」に指定した条件の右辺に、結合名{結合-テーブルD}を指定し、レコードの絞り込みの条件を定義する。これにより、処理Ｐ４０１において再帰ロジックにより、先に、結合名「結合−テーブルＤ」の定義Ｄ４０２に従った操作が実行される。
【００９０】
定義Ｄ４０２は、「WHERE:」に指定した条件の右辺に{CONFIG}を記述し、結合名「結合−テーブルＤ」の絞り込みの条件を定義する。これにより、処理Ｐ４０２において、定義Ｄ４０３の環境設定により定義される「CONFIG」領域から、該当するキーの値が取得される。次に、処理Ｐ４０３において、テーブルＤに対して、定義Ｄ４０２の「WHERE:」に指定された条件に該当する条件文が追加され、検索が行われる。この結果、処理Ｐ４０４において、処理Ｐ４０３で指定された条件に合致したレコードが、結合名「結合−テーブルＤ」が格納されているメモリ１５上の領域に展開される。
【００９１】
次に、処理Ｐ４０５において、処理Ｐ４０４により得られた結果を元に、参照元のテーブルＡに対して、定義Ｄ４０１の「WHERE:」に該当する条件文が追加され、検索が行われる。なお、当該「WHERE:」に指定された条件の右辺に{SYSTEM}の記載がある場合は、システム側で設定した「SYSTEM」領域から該当するキーの値が取得される。この結果、処理Ｐ４０６において、定義Ｄ４０１の「WHERE:」で指定された条件に合致するレコードが、テーブルＡが格納されているメモリ１５上の領域に展開される。
【００９２】
次に、処理Ｐ４０７において、出力先テーブルＸが格納されているメモリ１５の領域で、処理Ｐ４０６でメモリ１５上に展開されたレコードを元に、定義Ｄ４０１の「COLUMNS:」の各列の「NAME:」の右辺に指定されたキー名の値が左辺に指定されたキー名にマッピングされる。なお、右辺は参照元を示し、左辺は出力先を示す。
【００９３】
このように、参照元のテーブルＤを「WHERE:」の条件に含めて、処理Ｐ４０１から処理Ｐ４０７に示す処理が実行されることにより、テーブルの結合を利用した条件による絞り込みが実現できる。
【００９４】
（ｉｉｉ）条件キーに紐付いたレコードの取得を行う場合
図８は、本実施の形態の情報処理装置により実現されるデータベースの操作の一例を示す図である。
【００９５】
図８に示す例では、ルール定義ファイルＦ１０１に、定義Ｄ５０１、Ｄ５０２およびＤ５０３が含まれている場合について説明する。また、図８に示す例では、操作の対象として、テーブルＡ、テーブルＢおよびテーブルＣに加えて、さらに、テーブルＤも含まれていることとする。また、図８に示す例では、定義Ｄ５０１、Ｄ５０２およびＤ５０３によって、処理Ｐ５０１からＰ５０６までが実行される。
【００９６】
定義Ｄ５０１は、「COLUMNS:」に指定した列名の右辺に結合名{結合−テーブルＢ}を指定する。このため、処理Ｐ５０１において、先に再帰ロジックにより定義Ｄ５０２の結合名「結合−テーブルＢ」の定義に従った操作が実行される。
【００９７】
定義Ｄ５０２は、「COLUMNS:」に指定した列名の右辺に結合名{結合-テーブルＣ}を指定する。このため、処理Ｐ５０２において、先に再帰ロジックにより定義Ｄ５０３の結合名「結合−テーブルＣ」の定義に従った操作が実行される。
【００９８】
定義Ｄ５０３は、結合名「結合−テーブルＣ」を定義する。これにより、参照元のテーブルＣからレコードの取得が行われ、処理Ｐ５０３において、定義Ｄ５０３の「KEYS:」および「COLUMNS:」により指定された列のレコードが、結合名「結合−テーブルＣ」が格納されているメモリ１５上の領域に展開される。
【００９９】
次に、処理Ｐ５０４において、定義Ｄ５０２の「KEYS:」および「COLUMNS:」により指定された列のレコードが、定義Ｄ５０２によって結合名「結合−テーブルＢ」が格納されているメモリ１５上の領域に展開される。そして、処理Ｐ５０３によって結合名「結合−テーブルＣ」が格納されているメモリ１５上のレコードのうち、紐付けＬ５０２のキーで紐付けされた列Ｋ３の値が一致するレコードが特定される。そして、特定されたレコードの列Ｃ１の値が、結合名「結合−テーブルＢ」の領域のメモリ１５上の列Ｂ１にマッピングされる。
【０１００】
次に、処理Ｐ５０５において、定義Ｄ５０１の「WHERE:」で指定された条件に基づき、「KEYS:」および「COLUMNS:」により指定された列のレコードが、参照元のテーブルＡが格納されているメモリ１５上の領域に展開される。
【０１０１】
次に、処理Ｐ５０６において、処理Ｐ５０４において得られた結合名「結合−テーブルＢ」のメモリ１５上の領域に展開されたレコードのうち、紐付けＬ５０１のキーで紐付けされた列Ｋ２の値が一致するレコードが特定される。そして、特定されたレコードの列Ｂ１の値が、出力先テーブルＸに該当するメモリ１５上の列Ｘ２にマッピングされる。そして、定義Ｄ５０１の「COLUMNS:」の定義に従って、紐付けＬ５０１のキーで紐付けにより絞り込まれたレコードの列Ｋ２、ＳＵＭ（列Ａ１）およびＳＵＭ（列Ａ２）の値が、それぞれ列Ｘ１、列Ｘ３および列Ｘ４にマッピングされる。なお、「COLUMNS:」の各列の「NAME:」の右辺は参照元を示し、左辺は出力先を示す。
【０１０２】
このように、「KEYS:」および「COLUMNS:」を用いてマッピングされる列の指定を行うことにより、条件キーに紐付いたレコードの取得を行うことができる。
【０１０３】
（ｃ）加工処理の詳細な説明
次に、図９から図１２を用いて、加工部２３による加工処理の詳細について、「加工処理の具体例」、「加工処理の詳細」および「加工機能の拡張」に分けて説明する。
【０１０４】
（ｉ）加工処理の具体例
図９は、本実施の形態の情報処理装置による加工処理の流れの一例を示す図である。
【０１０５】
図９に示す例では、ルール定義ファイルＦ１０１（図２参照）に、加工ルールの定義が含まれ、参照元のテーブルＡおよびテーブルＢから抽出された各列の値に対して処理Ｐ６０１からＰ６０７までの加工処理が実行され、出力先テーブルＸの各列に出力される状況を示している。
【０１０６】
まず、処理Ｐ６０１に示す、日付形式を変換する加工処理では、参照元のテーブルＡの列Ａ１から取得された値に対して、たとえば「YYYY-MM-DD」の日付形式から「YYYY/MM/DD」の日付形式へと変換する処理が行われる。そして、加工処理の結果が出力先テーブルＸの列Ｘ１に出力される。
【０１０７】
また、処理Ｐ６０２に示す加工処理では、参照元のテーブルＡの列Ａ２から取得された値に対して変換処理が行われることなく、そのまま出力先テーブルＸの列Ｘ２に出力される（ダイレクトマッピング処理）。
【０１０８】
また、処理Ｐ６０３に示す、合計値を計算する加工処理では、参照元のテーブルＡの列Ａ３から取得された値と、列Ａ４から取得された値のそれぞれに対してグループ化が行われ、グループ毎に合計値が計算される。そして、加工処理の結果が出力先テーブルＸの列Ｘ３および列Ｘ４に出力される。
【０１０９】
また、処理Ｐ６０４に示す加工処理では、参照元のテーブルＡの列Ａ３および列Ａ４から取得された値に対して、「列A3/列A4*100」の計算処理が行われる。そして、加工処理の結果が出力先テーブルＸの列Ｘ５に出力される。
【０１１０】
また、処理Ｐ６０５に示す加工処理では、参照元のテーブルＢの列Ｂ１から取得された値に対して、たとえば、８０バイトを超えた文字が除外される。そして、加工処理の結果が出力先テーブルＸの列Ｘ６に出力される。
【０１１１】
また、処理Ｐ６０６に示す加工処理では、参照元のテーブルＢの列２から取得された値のうち、２番目の要素が取り出される。たとえば、取得された値が「XXXX:YYYY:ZZZZ」のような文字列である場合は、「YYYY」の部分が取り出される。そして、取り出された結果が出力先テーブルＸの列Ｘ７に出力される。
【０１１２】
また、処理Ｐ６０７に示す加工処理では、固定文字列、たとえば「'0:00-23:59'」が出力先テーブルＸの列Ｘ８に出力される。
【０１１３】
続いて、図９に示す加工処理の詳細について、図１０を用いて説明する。図１０は、図９に示す加工処理を実現するためのルール定義ファイルの詳細を示す図である。
【０１１４】
図１０を参照して、ルール定義ファイルＦ１０１（図２参照）には、加工ルールを定義する定義Ｄ７００が含まれ、この定義Ｄ７００には、定義Ｄ７０１、Ｄ７０２、Ｄ７０３、Ｄ７０４、Ｄ７０５、Ｄ７０６およびＤ７０７が含まれる。
【０１１５】
定義Ｄ７０１は、図９の処理Ｐ６０１に示す操作に対応し、日付形式を変換する加工ルールについて、「PROC: Date::format(%Y/%m/%d)」という形式により、日付形式変換用の加工メソッドを呼び出すことを定義する。そして、加工部２３は、既に読み込んだ加工処理モジュールＭ１０１の中から日付形式変換用の加工メソッドを特定し、特定した加工メソッドを実行する。
【０１１６】
これにより、参照元のテーブルＡの列Ａ１から取得した値に対して、たとえば「YYYY-MM-DD」の日付形式から「YYYY/MM/DD」の日付形式へと変換する処理が行われ、変換処理の結果が出力先のテーブルＸの列Ｘ２に出力される。また、定義Ｄ７０１は、取得した値が日付として不正な場合や未定儀（NULL）の場合は実行日に置き換えるように、「DFLT: '{SYSTEM}.date'」という形式で定義する。
【０１１７】
定義Ｄ７０２は、図９の処理Ｐ６０２に示す操作に対応し、「PROC:」または「DFLT:」を定義せず、「NAME:」のみを定義する。これにより、参照元のテーブルＡの列Ａ２から取得された値に対して変換処理が行われることなくマッピングが行われ、出力先テーブルＸの列Ｘ２に出力される（ダイレクトマッピング処理）。
【０１１８】
定義Ｄ７０３は、図９の処理Ｐ６０３に示す操作に対応し、グループ化された合計値を設定する加工ルールについて、「NAME: 列X3,SUM(列A3)」および「NAME: 列X4,SUM(列A4)」という形式により、ＳＱＬ文のＳＵＭ関数の実行を定義する。
【０１１９】
また、定義Ｄ７０３は、合計値が８桁の数字を超えた場合は「99999999」に置き換えるように、「PROC: Number::limit(99999999)」という形式により、最大値制限用の加工メソッドを呼び出すことを定義する。さらに、定義Ｄ７０３は、取得した値が未定儀（NULL）の場合は「０」に置き換えることを「DFLT: 0」という形式で定義する。これにより、参照元のテーブルＡの列Ａ３および列Ａ４から取得された値に対して、それぞれ、グループ化された合計値が設定され、合計値が８桁を超えない場合には設定された合計値が出力先テーブルＸの列Ｘ３および列Ｘ４に出力される。
【０１２０】
定義Ｄ７０４は、図９の処理Ｐ６０４に示す操作に対応し、「列A3/列A4*100」の計算結果を設定する加工ルールについて、「SUM(列A3)/SUM(列A4)*100」という形式により、ＳＱＬ文のＳＵＭ関数を含めた計算式の実行を定義する。また、定義Ｄ７０４は、計算結果が整数３桁かつ小数２桁となるように、「TO_CHAR(〜,ROUND(〜,2)),'FM990.00')」という形式により、ＳＱＬ文のＴＯ＿ＣＨＡＲ関数とＲＯＵＮＤ関数の実行を定義する。
【０１２１】
これにより、参照元のテーブルＡの列Ａ３および列Ａ４から取得された値に対して、「列A3/列A4*100」の計算結果が算出され、算出結果が、整数３桁かつ小数２桁となるように加工処理されて出力先テーブルＸの列Ｘ５に出力される。
【０１２２】
さらに、定義Ｄ７０４は、ゼロ除算が行われることを避けるため、列Ａ４の値が「0」の場合は計算結果を「0」とするように、「DECODE(SUM(列A4),0,0,ROUND(SUM(列A3)/SUM(列A4)*100,2))」という形式で、ＳＱＬ文のＤＥＣＯＤＥ関数の実行を定義する。また、定義Ｄ７０４は、取得した値が未定儀（NULL）の場合は「0」に置き換えることを「DFLT: 0」という形式で定義する。
【０１２３】
定義Ｄ７０５は、図９の処理Ｐ６０５に示す操作に対応し、８０バイトを超えた文字を除外する加工ルールについて、「PROC: String::cut(80)」という形式により、文字列操作用の加工メソッドを呼び出すことを定義する。また、定義Ｄ７０５は、８０バイトを超えた文字が除外された文字列を「"」で囲む加工ルールを続けて実行するため、「|String::enclose()」のように「|」で連結する形式により、文字列操作用の加工メソッドを呼び出すことを定義する。
【０１２４】
これにより、参照元のテーブルＢの列Ｂ１から取得された値に対して、８０バイトを超えた文字が除外され、文字列全体が「"」で囲まれる。そして、加工処理の結果が出力先テーブルＸの列Ｘ６に出力される。また、定義Ｄ７０５は、取得した値が未定儀（NULL）の場合は「””」に置き換えることを「DFLT: '""'」という形式で定義する。
【０１２５】
定義Ｄ７０６は、図９の処理Ｐ６０６に示す操作に対応し、「:」で区切られた２番目の要素を取り出す加工ルールについて、「PROC: String::split(2)」という形式により、文字列操作用の加工メソッドを呼び出すことを定義する。これにより、参照元のテーブルＢの列Ｂ２から取得した値に対して、「:」で区切られた２番目の要素が取り出される。たとえば、取得した値が「XXXX:YYYY:ZZZZ」のような文字列である場合は、「YYYY」の部分が取り出される。そして、取り出された結果が出力先テーブルＸの列Ｘ７に出力される。また、Ｄ６０６は、取得した値が未定儀（NULL）の場合は空文字に置き換えることを「DFLT: ''」という形式で定義する。
【０１２６】
定義Ｄ７０７は、図９の処理Ｐ６０７に示す操作に対応し、「PROC:」や「DFLT:」を定義せず、「NAME:」のみを定義し、参照元の右辺には固定値「'0:00-23:59'」が記載されている。これにより、変換処理が行われることなく固定文字列「'0:00-23:59'」が出力先テーブルＸの列Ｘ８に出力される。
【０１２７】
上記のような定義Ｄ７００により、ルール定義ファイルＦ１０１の加工ルールに複数の加工内容を指定して実現することができる。また、たとえば上述の「（ｂ）結合処理の詳細な説明」において説明したように、階層構造を用いた結合ルールと、加工ルールとを組み合わせてルール定義ファイルＦ１０１に定義することが可能である。これにより、複数の参照元のテーブルから抽出されたデータに対する加工処理を実行することができる。
【０１２８】
（ｉｉ）加工処理の詳細
図１１は、本実施の形態の情報処理装置により実現される加工処理のイメージ図である。ここでは、ルール定義ファイルＦ１０１に、加工ルールの定義である定義Ｄ８０１が含まれている場合について説明する。
【０１２９】
図１１に示すように、まず、処理Ｐ８０１において、定義Ｄ８０１の「KEYS」または「COLUMNS」により指定された参照元の列名の記述が、そのままＳＱＬ文の列名リストに埋め込まれ、参照元のテーブルＡからレコードを取得するためのＳＱＬ文が組み立てられる。
【０１３０】
次に、処理Ｐ８０２において、処理Ｐ８０１で組み立てられたＳＱＬ文に従った操作が実行される。その結果、処理Ｐ８０３において、処理Ｐ８０１で列名リストに指定された名前をキーとして、それぞれの列の値がメモリ１５上に展開される。
【０１３１】
次に、定義Ｄ８０１の定義で「PROC:」が指定されているため、処理Ｐ８０４において、該当する加工処理「Date::format(%Y/%m/%d)」が実行され、処理Ｐ８０３で展開されたメモリ１５上の列Ａ１の値が加工される。同様に、定義Ｄ８０１によって「PROC:」が指定されているため、処理Ｐ８０５において、該当する加工処理「Number::limit(99999999)」が実行され、処理Ｐ８０３で展開されたメモリ１５上のＳＵＭ（列Ａ３）の値が加工される。
【０１３２】
次に、処理Ｐ８０６において、図８に示す結合処理と同様に、結合名「結合−テーブルＢ」に該当するレコードがメモリ１５上に展開される。また、紐付けＬ８０１により紐付けされたレコードに対して、処理Ｐ８０７において、処理Ｐ８０６で展開されたメモリ１５上の列Ｋ２の値と列Ｂ１の値とが、処理Ｐ８０３で展開されたメモリ１５上で連結される。
【０１３３】
また、定義Ｄ８０１には、「PROC_WHOLE:」が記載され、連結後の結果全体に対する加工ルールが定義されている。ここでは、「|」で複数の加工メソッドを指定しているため、処理Ｐ８０８において、連結後の結果全体に対して該当する加工処理「String::cut(256)」と「String::enclose()」とが順番に実行され、連結後の値が加工される。
【０１３４】
次に、処理Ｐ８０９において、処理Ｐ８０３からＰ８０８までで得られた値が、定義Ｄ８０１の定義で「COLUMNS:」に指定された出力先の左辺のキー名にマッピングされる。このような一連の処理により、複数のテーブルの結合も含めたデータの加工処理を実現することができる。
【０１３５】
（ｉｉｉ）加工機能の追加
次に、図１２を用いて、データベースにおける機能の追加の具体例として、加工処理の実行および加工処理のための機能の追加イメージを説明する。図１２は、本実施の形態の情報処理装置における加工処理の実行および加工処理のための機能の追加イメージを示すイメージ図である。
【０１３６】
図１２に示すように、ここでは、ルール定義ファイルＦ１０１に、加工ルールの定義である定義Ｄ９０１が含まれ、参照元のテーブルＡおよびテーブルＢから取得されたデータが加工されて、出力先テーブルＸへ出力される場合について説明する。
【０１３７】
加工部２３は、プラグイン実行モジュールＰ９０１を実行することにより、定義Ｄ９０１から、「パッケージ名::関数名（引数）」の形式で記載された加工ルールの解析結果を取得し、解析結果に対応する加工メソッドを実行するために必要な情報として、パッケージ名、関数名および引数を割り出す。
【０１３８】
次に、加工部２３は、割り出されたパッケージ、すなわち加工処理モジュールＭ１０１が既に読み込まれているか否かを判断し、読み込まれていなければ、当該加工処理モジュールＭ１０１の読み込みを行う。次に、加工部２３は、読み込みを行った加工処理モジュールＭ１０１に含まれる加工メソッドの中から、解析結果に対応する加工メソッドを特定する。
【０１３９】
そして、加工部２３は、参照した加工元のデータに対して、該当する関数および引数を指定して特定した加工メソッドを実行する。その実行結果として、加工後の値が返却され、その値が出力先に割り当てられた列に出力される。
【０１４０】
また、カテゴリＡのプラグイン部品（加工処理モジュール）Ｍ９０１において、たとえば既に加工メソッドＡ１および加工メソッドＡ２が含まれ、加工メソッドＡ３を新たに追加する場合には、図１２に示すＡ９０１のように加工メソッドＡ３をプラグイン部品Ｍ９０１に追加する。これにより加工メソッド単位で加工ルールを拡張することができる。
【０１４１】
また、カテゴリＢのプラグイン部品（加工処理モジュール）Ｍ９０２において、たとえば既に加工メソッドＢ１および加工メソッドＢ２が含まれ、加工メソッドＢ３を新たに追加する場合には、図１２に示すＡ９０２のように加工メソッドＢ３をプラグイン部品Ｍ９０２に追加する。
【０１４２】
さらに、たとえば、カテゴリＣのプラグイン部品（加工処理モジュール）Ｍ９０３をプラグイン格納フォルダに格納することにより、カテゴリ単位で加工ルールを拡張させることができる。
【０１４３】
なお、ここでは、データベースにおける機能追加の具体例として、加工処理のための機能を追加する場合について説明したが、たとえば、異なる出力形態によってデータの出力処理が実行されるように出力処理のための機能を追加するなど、種々の機能の追加が可能である。
【０１４４】
［プログラム］
本発明の実施の形態における情報処理装置１００に係るプログラムは、コンピュータに、図４に示すステップを実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、本実施の形態における情報処理装置１００を実現することができる。
【０１４５】
本発明の実施の形態における情報処理装置１００の場合、コンピュータのＣＰＵ（Central Processing Unit）は、入力受付部１１、解析部１２、操作実行部１３および出力部１４（図２を参照）として機能し、処理を行う。
【０１４６】
ここで、本実施の形態における情報処理装置１００に係るプログラムを実行することによって、情報処理装置１００を実現するコンピュータについて図１３を用いて説明する。図１３は、本発明の実施の形態における情報処理装置を実現するコンピュータの一例を示すブロック図である。
【０１４７】
図１３に示すように、コンピュータ１５０は、ＣＰＵ１２１と、メインメモリ１２２と、記憶装置１２３と、入力インターフェイス１２４と、表示コントローラ１２５と、データリーダ／ライタ１２６と、通信インターフェイス１２７と、を備える。これらの各部は、バス１３１を介して、互いにデータ通信可能に接続される。
【０１４８】
ＣＰＵ１２１は、記憶装置１２３に格納された、本実施の形態におけるプログラム（コード）をメインメモリ１２２に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ１２２は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）等の揮発性の記憶装置である。また、本実施の形態におけるプログラムは、コンピュータ読み取り可能な記録媒体１３０に格納された状態で提供される。なお、本実施の形態におけるプログラムは、通信インターフェイス１２７を介して接続されたインターネット上で流通するものであっても良い。
【０１４９】
また、記憶装置１２３の具体例としては、ハードディスクの他、フラッシュメモリ等の半導体記憶装置が挙げられる。入力インターフェイス１２４は、ＣＰＵ１２１と、キーボード及びマウスといった入力機器１２８との間のデータ伝送を仲介する。表示コントローラ１２５は、ディスプレイ装置１２９と接続され、ディスプレイ装置１２９での表示を制御する。データリーダ／ライタ１２６は、ＣＰＵ１２１と記録媒体１３０との間のデータ伝送を仲介し、記録媒体１３０からのプログラムの読み出し、及びコンピュータ１５０における処理結果の記録媒体１３０への書き込みを実行する。通信インターフェイス１２７は、ＣＰＵ１２１と、他のコンピュータとの間のデータ伝送を仲介する。
【０１５０】
また、記録媒体１３０の具体例としては、ＣＦ（Compact Flash（登録商標））及びＳＤ（Secure Digital）等の汎用的な半導体記憶デバイス、フレキシブルディスク（Flexible Disk）等の磁気記憶媒体、又はＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの光学記憶媒体が挙げられる。
【０１５１】
［効果］
このように、本実施の形態に係る情報処理装置１００では、入力受付部２１が、参照元データベースＴ１０１を構成するテーブルＡ、テーブルＢまたはテーブルＣに対する操作内容を定義するテキストファイルであるルール定義ファイルＦ１０１の入力を受け付ける。また、解析部２２が、ルール定義ファイルＦ１０１に定義された操作内容を解析する。また、操作実行部１３が、解析部２２により解析された操作内容に従って、テーブルＡ、テーブルＢまたはテーブルＣに対する操作を実行する。
【０１５２】
このため、たとえば、仕様変更または機能追加を行う場合、作業者は、テキスト形式でルールの変更または追加を行うことで足りる。従って、作業者は、ＳＱＬ文の記述の変更など、情報処理装置１００自体に対する作業を行う必要はない。
【０１５３】
したがって、データベースに関する専門知識を十分に有していない作業者であっても、仕様変更または機能追加を容易に行うことができる。また、ＳＱＬ文の記述の変更などの複雑な作業を行う必要がないため、作業者は柔軟かつ迅速に仕様変更または機能追加を行うことができる。
【０１５４】
また、本実施の形態に係る情報処理装置１００において、ルール定義ファイルＦ１０１は、操作内容として、テーブルからのデータを抽出するための抽出ルール、複数のテーブル間の結合条件を示す結合ルール、データに対する加工処理の内容を指定する加工ルール、および、データの出力形態を示す出力ルールのうち少なくともいずれか１つを定義する。
【０１５５】
このような構成により、ルール定義ファイルＦ１０１に定義されるルールの変更または追加を行うことによって、抽出処理、結合処理、加工処理または出力処理の関する仕様変更または機能追加を容易に行うことができる。また、このような構成により、ルール定義ファイルＦ１０１には、抽出ルール、結合ルール、加工ルールまたは出力ルールのうち複数のルールを定義することが可能であるため、抽出処理、結合処理、加工処理または出力処理のうち複数の処理に関する仕様変更または機能追加を容易に行うことができる。
【０１５６】
また、本実施の形態に係る情報処理装置１００において、ルール定義ファイルＦ１０１は、テーブルの列単位で操作内容を定義する。
【０１５７】
このような構成により、データベースに関する専門知識を十分に有していない作業者であっても、テーブルの列単位で仕様変更または機能追加を容易に行うことができる。
【０１５８】
また、本実施の形態に係る情報処理装置１００において、ルール定義ファイルＦ１０１は、操作内容として３つ以上のテーブル間の結合ルールを定義する場合、階層構造を用いて、第１のテーブルと第２のテーブルとの対応関係を上位に定義し、第２のテーブルと第３のテーブルとの対応関係を下位に定義する。
【０１５９】
このような構成により、結合対象となるテーブルの数に制限を設けることなく、３つ以上のテーブル間を結合させることができる。
【０１６０】
また、本実施の形態に係る情報処理装置１００において、加工ルールを定義するルール定義ファイルＦ１０１の入力が受け付けられた場合、操作実行部１３は、予め用意された加工処理モジュールＭ１０１のうち、上記加工ルールと適合する加工処理モジュールＭ１０１および当該加工処理モジュールＭ１０１に含まれる加工メソッドを特定する。そして、操作実行部１３は、特定した加工メソッドを実行することにより、データに対する加工処理を行う。
【０１６１】
ここで、一般的に、情報処理装置自体に加工処理のためのプログラムが組み込まれているため、加工処理のための仕様変更または機能拡張を行う場合、作業者は、情報処理装置自体に対する作業を行う。これに対して、本実施の形態に係る情報処理装置１００では、加工処理のための仕様変更または機能追加を行う場合、作業者は、情報処理装置１００の外部において加工処理モジュールＭ１０１の追加または加工メソッドの追加を行い、ルール定義ファイルＦ１０１において所定の加工メソッドを指定することで足りる。このため、作業者は、情報処理装置１００自体に対する作業を行うことなく、加工処理のための仕様変更または機能追加を容易に行うことができる。
【０１６２】
上述した実施の形態の一部又は全部は、以下に記載する（付記１）〜（付記１５）によって表現することができるが、以下の記載に限定されるものではない。
【０１６３】
（付記１）
データベースを構成するテーブルに対する操作を実行する情報処理装置であって、
前記操作の操作内容を定義するテキストファイルの入力を受け付ける入力受付部と、
前記テキストファイルに定義された前記操作内容を解析する解析部と、
前記解析部により解析された前記操作内容に従って、前記テーブルに対する操作を実行する操作実行部と、
を備えることを特徴とする、情報処理装置。
【０１６４】
（付記２）
前記テキストファイルは、前記操作内容として、前記テーブルからのデータを抽出するための抽出ルール、複数の前記テーブル間の結合条件を示す結合ルール、前記データに対する加工処理の内容を指定する加工ルール、および、前記データの出力形態を示す出力ルールのうち少なくともいずれか１つを定義することを特徴とする、請求項１に記載の情報処理装置。
【０１６５】
（付記３）
前記テキストファイルは、前記テーブルの列単位で前記操作内容を定義することを特徴とする、付記１または付記２に記載の情報処理装置。
【０１６６】
（付記４）
前記テキストファイルは、前記操作内容として３つ以上のテーブル間の結合ルールを定義する場合、階層構造を用いて、第１のテーブルと第２のテーブルとの対応関係を上位に定義し、第２のテーブルと第３のテーブルとの対応関係を下位に定義することを特徴とする、付記１から付記３のいずれかに記載の情報処理装置。
【０１６７】
（付記５）
前記操作実行部は、前記操作内容として前記加工ルールを定義する前記テキストファイルの入力を受け付けた場合、予め用意されたプログラムのうち、前記テキストファイルに定義された前記加工ルールと適合するプログラムを特定し、特定した前記プログラムを実行することにより、前記データに対する加工処理を行うことを特徴とする、付記２に記載の情報処理装置。
【０１６８】
（付記６）
データベースを構成するテーブルに対する操作を実行するための情報処理方法であって、
（ａ）前記操作の操作内容を定義するテキストファイルの入力を受け付けるステップと、
（ｂ）前記ステップ（ａ）において受け付けられた前記テキストファイルに定義された前記操作内容を解析するステップと、
（ｃ）前記ステップ（ｂ）において解析された前記操作内容に従って、前記テーブルに対する操作を実行するステップと、
を含むことを特徴とする、情報処理方法。
【０１６９】
（付記７）
前記テキストファイルは、前記操作内容として、前記テーブルからのデータを抽出するための抽出ルール、複数の前記テーブル間の結合条件を示す結合ルール、前記データに対する加工処理の内容を指定する加工ルール、および、前記データの出力形態を示す出力ルールのうち少なくともいずれか１つを定義することを特徴とする、付記６に記載の情報処理方法。
【０１７０】
（付記８）
前記テキストファイルは、前記テーブルの列単位で前記操作内容を定義することを特徴とする、付記６または付記７に記載の情報処理方法。
【０１７１】
（付記９）
前記テキストファイルは、前記操作内容として３つ以上のテーブル間の結合ルールを定義する場合、階層構造を用いて、第１のテーブルと第２のテーブルとの対応関係を上位に定義し、第２のテーブルと第３のテーブルとの対応関係を下位に定義することを特徴とする、付記６から付記８のいずれかに記載の情報処理方法。
【０１７２】
（付記１０）
前記ステップ（ａ）において、前記操作内容として前記加工ルールを定義する前記テキストファイルの入力を受け付けた場合、前記ステップ（ｃ）においては、予め用意されたプログラムのうち、前記テキストファイルに定義された前記加工ルールと適合するプログラムを特定し、特定した前記プログラムを実行することにより、前記データに対する加工処理を行うことを特徴とする、付記７に記載の情報処理方法。
【０１７３】
（付記１１）
データベースを構成するテーブルに対する操作を、コンピュータによって実行するためのプログラムであって、
前記コンピュータに、
（ａ）前記操作の操作内容を定義するテキストファイルの入力を受け付けるステップと、
（ｂ）前記ステップ（ａ）において受け付けられた前記テキストファイルに定義された前記操作内容を解析するステップと、
（ｃ）前記ステップ（ｂ）において解析された前記操作内容に従って、前記テーブルに対する操作を実行するステップと、
を実行させることを特徴とするプログラム。
【０１７４】
（付記１２）
前記テキストファイルは、前記操作内容として、前記テーブルからのデータを抽出するための抽出ルール、複数の前記テーブル間の結合条件を示す結合ルール、前記データに対する加工処理の内容を指定する加工ルール、および、前記データの出力形態を示す出力ルールのうち少なくともいずれか１つを定義することを特徴とする、付記１１に記載のプログラム。
【０１７５】
（付記１３）
前記テキストファイルは、前記テーブルの列単位で前記操作内容を定義することを特徴とする、付記１１または付記１２に記載のプログラム。
【０１７６】
（付記１４）
前記テキストファイルは、前記操作内容として３つ以上のテーブル間の結合ルールを定義する場合、階層構造を用いて、第１のテーブルと第２のテーブルとの対応関係を上位に定義し、第２のテーブルと第３のテーブルとの対応関係を下位に定義することを特徴とする、付記１１から付記１３のいずれかに記載のプログラム。
【０１７７】
（付記１５）
前記ステップ（ａ）において、前記操作内容として前記加工ルールを定義する前記テキストファイルの入力を受け付けた場合、前記ステップ（ｃ）においては、予め用意されたプログラムのうち、前記テキストファイルに定義された前記加工ルールと適合するプログラムを特定し、特定した前記プログラムを実行することにより、前記データに対する加工処理を行うことを特徴とする、付記１２に記載のプログラム。
【符号の説明】
【０１７８】
１１  入力受付部
１２  解析部
１３  操作実行部
１４  出力部
１５  メモリ
２１  抽出部
２２  結合部
２３  加工部
１００  情報処理装置
１２１  ＣＰＵ
１２２  メインメモリ
１２３  記憶装置
１２４  入力インターフェイス
１２５  表示コントローラ
１２６  データリーダ／ライタ
１２７  通信インターフェイス
１２８  入力機器
１２９  ディスプレイ装置
１３０  記録媒体
１３１  バス
Ｔ１０１  参照元データベース
Ｔ１０２  出力先データベース
Ｆ１０１  ルール定義ファイル
Ｆ１０２  出力先ファイル
Ｍ１０１  加工処理モジュール
Ｍ９０１、Ｍ９０２、Ｍ９０３  プラグイン部品
Ｐ９０１  プラグイン実行モジュール
【図１】
2014021553.tif 000003
【図２】
2014021553.tif 000004
【図３】
2014021553.tif 000005
【図４】
2014021553.tif 000006
【図５】
2014021553.tif 000007
【図６】
2014021553.tif 000008
【図７】
2014021553.tif 000009
【図８】
2014021553.tif 000010
【図９】
2014021553.tif 000011
【図１０】
2014021553.tif 000012
【図１１】
2014021553.tif 000013
【図１２】
2014021553.tif 000014
【図１３】
2014021553.tif 000015