(57)【特許請求の範囲】
【請求項１】
編集対象のデータとして、データの属性を示す基底とデータの値とを対応付けて保持するデータ保持部と、
データの編集内容を内包的記法により記述するための第１プログラム言語で記述されたコードであって、前記編集対象のデータに対する前記基底にもとづく編集内容が記述された第１コードを取得するコード取得部と、
データの編集内容を外延的記法により記述するための第２プログラム言語と前記第１プログラム言語との予め定められた対応関係にしたがって、前記第１コードから、前記第２プログラム言語で記述されたコードである第２コードを生成するコード生成部と、
前記第２コードにしたがって前記編集対象のデータを編集する編集処理部と、
を備え、
前記コード生成部は、前記編集対象のデータとしての要素を複数含む母集団と、前記母集団から抽出すべき要素の条件としての基底である１つ以上の抽出基底とを指定した射影操作が、内包的記法により記述されて前記第１コードに含まれる場合に、前記母集団に含まれる複数の要素を逐次列挙するための繰り返し命令と、前記１つ以上の抽出基底を逐次列挙するための繰り返し命令とを含み、それらの繰り返し命令による繰り返し処理として、前記抽出基底を有する要素を抽出する処理を記述した第２コードを生成することを特徴とするデータ編集装置。
【請求項２】
前記編集対象のデータは、前記データの値として数値が用いられ、前記基底として名称、単位、期間、主体のうち少なくとも１つが用いられることを特徴とする請求項１に記載のデータ編集装置。
【請求項３】
前記第１コードは、複数のデータを集約させるための集約命令を含むものであり、
前記コード生成部は、前記第１コードに集約命令が含まれる場合、前記複数のデータの基底を集約する基底である集約基底を予め定めた情報にしたがって、前記複数のデータの値の集計値と前記集約基底とを対応づけた集計結果を出力する第２コードを生成することを特徴とする請求項１または２に記載のデータ編集装置。
【請求項４】
前記コード生成部は、前記第１コードに集約命令が含まれる場合、集約対象の複数のデータそれぞれの値を差し引くことを示すデータと前記集計結果とを対応づけた中間データを出力する第２コードをさらに生成することを特徴とする請求項３に記載のデータ編集装置。
【請求項５】
編集対象のデータとして、データの属性を示す基底とデータの値とを対応付けて保持するステップと、
データの編集内容を内包的記法により記述するための第１プログラム言語で記述されたコードであって、前記編集対象のデータに対する前記基底にもとづく編集内容が記述された第１コードを取得するステップと、
データの編集内容を外延的記法により記述するための第２プログラム言語と前記第１プログラム言語との予め定められた対応関係にしたがって、前記第１コードから、前記第２プログラム言語で記述されたコードである第２コードを生成するステップと、
前記第２コードにしたがって前記編集対象のデータを編集するステップと、
をコンピュータが実行し、
前記第２コードを生成するステップは、前記編集対象のデータとしての要素を複数含む母集団と、前記母集団から抽出すべき要素の条件としての基底である１つ以上の抽出基底とを指定した射影操作が、内包的記法により記述されて前記第１コードに含まれる場合に、前記母集団に含まれる複数の要素を逐次列挙するための繰り返し命令と、前記１つ以上の抽出基底を逐次列挙するための繰り返し命令とを含み、それらの繰り返し命令による繰り返し処理として、前記抽出基底を有する要素を抽出する処理を記述した第２コードを生成することを特徴とするデータ編集方法。
【請求項６】
編集対象のデータとして、データの属性を示す基底とデータの値とを対応付けて保持する機能と、
データの編集内容を内包的記法により記述するための第１プログラム言語で記述されたコードであって、前記編集対象のデータに対する前記基底にもとづく編集内容が記述された第１コードを取得する機能と、
データの編集内容を外延的記法により記述するための第２プログラム言語と前記第１プログラム言語との予め定められた対応関係にしたがって、前記第１コードから、前記第２プログラム言語で記述されたコードである第２コードを生成する機能と、
前記第２コードにしたがって前記編集対象のデータを編集する機能と、
をコンピュータに実現させ、
前記第２コードを生成する機能は、前記編集対象のデータとしての要素を複数含む母集団と、前記母集団から抽出すべき要素の条件としての基底である１つ以上の抽出基底とを指定した射影操作が、内包的記法により記述されて前記第１コードに含まれる場合に、前記母集団に含まれる複数の要素を逐次列挙するための繰り返し命令と、前記１つ以上の抽出基底を逐次列挙するための繰り返し命令とを含み、それらの繰り返し命令による繰り返し処理として、前記抽出基底を有する要素を抽出する処理を記述した第２コードを生成することを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理技術に関し、特に、データ編集装置およびデータ編集方法に関する。
【背景技術】
【０００２】
これまでのデータベース（例えば、ＲＤＢやＸＭＬＤＢ等）は、予め定められたスキーマにしたがってデータをストレージへ蓄積していた。データベースの提供する機能は次の３つに大別することができる。すなわち（１）ストレージ上でのデータ蓄積および検索機能、（２）蓄積されたデータへのアクセス制御機能、（３）検索されたデータから必要な部分を抽出し、必要に応じて変換するデータ編集機能、である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−２６６９９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記（３）のデータ編集機能に関して、データをメモり内でデータオブジェクトとして表現する方法は標準的に定められておらず、どのような形式のオブジェクトとして表現するかというＯＲ（Object Relation）マッピングと呼ばれる課題が存在した。また、データオブジェクトを操作するためのプログラムの記述は複雑になりやすく、データ編集の内容をユーザが直観的に把握することが難しい場合があった。
【０００５】
本発明は上記課題を鑑みてなされたものであり、その主な目的は、データオブジェクトに対するユーザの操作を支援するための技術を提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のある態様のデータ編集装置は、編集対象のデータとして、データの属性を示す基底とデータの値とを対応付けて保持するデータ保持部と、データの編集内容を内包的記法により記述するための第１プログラム言語で記述されたコードであって、編集対象のデータに対する基底にもとづく編集内容が記述された第１コードを取得するコード取得部と、データの編集内容を外延的記法により記述するための第２プログラム言語と第１プログラム言語との予め定められた対応関係にしたがって、第１コードから、第２プログラム言語で記述されたコードである第２コードを生成するコード生成部と、第２コードにしたがって編集対象のデータを編集する編集処理部と、を備える。
【０００７】
本発明の別の態様は、データ編集方法である。この方法は、編集対象のデータとして、データの属性を示す基底とデータの値とを対応付けて保持するステップと、データの編集内容を内包的記法により記述するための第１プログラム言語で記述されたコードであって、編集対象のデータに対する基底にもとづく編集内容が記述された第１コードを取得するステップと、データの編集内容を外延的記法により記述するための第２プログラム言語と第１プログラム言語との予め定められた対応関係にしたがって、第１コードから、第２プログラム言語で記述されたコードである第２コードを生成するステップと、第２コードにしたがって編集対象のデータを編集するステップと、をコンピュータが実行する。
【０００８】
なお、以上の構成要素の任意の組合せ、本発明の表現を装置、方法、システム、プログラム、プログラムを格納した記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【０００９】
本発明によれば、データオブジェクトに対するユーザの操作を支援することができる。
【図面の簡単な説明】
【００１０】
【図１】売上伝票の例を示す図である。
【図２】実施の形態のデータ編集装置の機能構成を示すブロック図である。
【図３】会計型データを操作するためのユーザコードの一例を示す図である。
【図４（ａ）】図３のユーザコードに対応する実行コードを示す図である。
【図４（ｂ）】図３のユーザコードに対応する実行コードを示す図である。
【図５】レコード型データを操作するためのユーザコードの一例を示す図である。
【図６（ａ）】図５のユーザコードに対応する実行コードを示す図である。
【図６（ｂ）】図５のユーザコードに対応する実行コードを示す図である。
【図７】データ編集装置の動作を示すフローチャートである。
【発明を実施するための形態】
【００１１】
（前提技術）
本発明の実施の形態の構成を説明する前に、本実施の形態で示すデータ編集技術の前提となる交換代数について説明する。
【００１２】
本発明者は、以下に示す２つのデータ構造により、企業等の組織における８〜９割のデータを表現することができると考えた。
１．多分類数値型（以下、「会計型データ」とも呼ぶ。）
データの値とデータの属性（以下、「基底」とも呼ぶ。）の組み合わせであり、データの値として数値が用いられ、データの属性として名称・単位・時間・主体が用いられる。例えば、４０＜現金，円＞＋３０＜ミカン，個＞・・・と表現される。
２．多分類混合型（以下、「レコード型データ」とも呼ぶ。）
データの値と基底の組み合わせであり、データの値および基底には数値や数値以外の様々なリテラルが用いられる。例えば、５５＜年齢＞＋山田太郎＜名前＞＋津軽＜好きな果物＞・・・と表現される。
以下では、主に会計型データについて詳細に説明する。
【００１３】
会計型データは、何らかの分類された項目ごとに与えられた数値データをまとめて表現し、その上で演算を行うための代数系（以下、「交換代数」とも呼ぶ。）に属するものであり、交換代数データとも言える。会計型データにおける基底（すなわち分類項目）は、＜名称，単位，時間，主体＞と４つの項目からなる。データは、１以上の基底に対する値の組み合わせ、言い換えれば、１以上の基底に対する値の和で表現される。
例１：ｘ＝２００＜リンゴ，円，＃，＃＞＋４００＜さんま，円，＃，＃＞
例２：ｙ＝２００＜リンゴ，円，２００６年第１四半期，＃＞＋４００＜リンゴ，円，２００６年第２四半期，＃＞＋７２０＜リンゴ，円，２００６年第３四半期，＃＞
上記の例１では時間と主体が省略されており、例２では主体が省略されている。例２は時系列データが表現されたものとも言える。また基底の主体には企業名等の組織の識別情報が設定されてもよい。
【００１４】
交換代数による表現のメリットとして、様々な基底（分類）を用いてデータを表現できること、またプログラムコードではなく人間に解釈容易な文字で基底を表現できることが挙げられる。さらにまた、後述するように振替という演算による統一的なデータ編集が可能になる。
【００１５】
実施の形態の交換代数では、マイナスの数値の代わりに＾（ハット）という記号を用いる。例えばｘ＝２０＾＜リンゴ，＃，＃，＃＞はリンゴが２０減ることを示す。言い換えれば、＾はある項目に対して相殺すべき反対項目を意味する基底を示す。また相殺操作を表す作用素（オペレータ）として「〜（バー）」を導入する。以下例を示す。
ｘ１＝３０＜現金＞＋２０＜リンゴ＞＋５０＜負債＞
ｙ１＝＾ｘ１＝３０＾＜現金＞＋２０＾＜リンゴ＞＋５０＾＜負債＞
〜（ｙ１＋ｘ１）＝（３０＾＜現金＞＋２０＾＜リンゴ＞＋５０＾＜負債＞）＋（３０＜現金＞＋２０＜リンゴ＞＋５０＜負債＞）＝０
【００１６】
次に、交換代数による振替え操作について説明する。簿記では振替という操作がある。これは一種の分類替え（基底変換）の操作と言える。ここでは、図１の（ａ）に示す八百屋の売上伝票を図１の（ｂ）に示す売上伝票へ振替える例を示す。
【００１７】
図１の（ａ）および（ｂ）で示す取引は円表示で以下のように表現できる。
ｘ１＝２００＜現金，円＞＋１００＾＜リンゴ，円＞＋１００＜利益，円＞
ｘ２＝５０＜光熱費，円＞＋５０＾＜現金，円＞
ｘ３＝１００＾＜利益，円＞＋１００＜営業収益，円＞
ｘ４＝５０＾＜営業収益，円＞＋５０＾＜光熱費，円＞
ｙ＝ｘ１＋ｘ２＋ｘ３＋ｘ４＝（２００＜現金，円＞＋１００＾＜リンゴ，円＞＋１００＜利益，円＞）＋（５０＜光熱費，円＞＋５０＾＜現金，円＞）＋（１００＾＜利益，円＞＋１００＜営業収益，円＞）＋（５０＾＜営業収益，円＞＋５０＾＜光熱費，円＞）
〜ｙ＝１５０＜現金，円＞＋１００＾＜リンゴ，円＞＋５０＜営業収益，円＞
【００１８】
次に、振替え操作と見なすアグリゲーション（合併）と按分について説明する。
１．アグリゲーション
３００円の津軽と２００円の富士と１００円の紅玉（いずれもリンゴの１品種）があったとする。これを、ｘ＝３００＜津軽，円＞＋２００＜富士，円＞＋１００＜紅玉，円＞と表現する。この津軽・富士・紅玉を「リンゴ」とまとめて分類する操作も一種の振替であり、アグリゲーションとよぶ。なお前提として｛津軽，富士，紅玉｝-->{リンゴ}という対応関係のマップが与えられている必要がある。
【００１９】
この例では上記の対応関係のマップにしたがって、Ｆ（ｘ）＝３００＾＜津軽，円＞＋２００＾＜富士，円＞＋１００＾＜紅玉，円＞＋３００＜リンゴ，円＞＋２００＜リンゴ，円＞＋１００＜リンゴ，円＞、という元を生成する。基底＜リンゴ＞の値は、集約対象の基底＜津軽＞、＜富士＞、＜紅玉＞のそれぞれに対する値である。言い換えれば、集約対象の基底＜津軽＞、＜富士＞、＜紅玉＞のそれぞれに対する値の集計値が、基底＜リンゴ＞の値として算出される。
【００２０】
アグリゲーションを表す振替Ｇ（ｘ）は、Ｆ（ｘ）を用いて、〜｛ｘ＋Ｆ（ｘ）｝で与えられる。すなわち、Ｇ（ｘ）＝〜｛ｘ＋Ｆ（ｘ）｝＝（３００＜津軽，円＞＋２００＜富士，円＞＋１００＜紅玉，円＞）＋（３００＾＜津軽，円＞＋２００＾＜富士，円＞＋１００＾＜紅玉，円＞＋３００＜リンゴ，円＞＋２００＜リンゴ，円＞＋１００＜リンゴ，円＞）＝６００＜リンゴ，円＞、となる。
【００２１】
２．按分
按分とは、１つの分類項目をさらに細かく複数の分類項目へ分割することである。例えば、アグリゲーションに示した例では基底＜リンゴ＞に対応する値を、津軽・富士・紅玉へ分割することを意味する。なお前提として｛リンゴ｝-->｛津軽，富士，紅玉｝の按分比率が与えられている必要があり、ここでは１：１：１であることとする。
【００２２】
この例では上記の按分比率にしたがって、ｘ＝６００＜リンゴ，円＞に対して、Ｆ（ｘ）＝６００＾＜リンゴ，円＞＋２００＜津軽，円＞＋２００＜富士，円＞＋２００＜紅玉，円＞、という元を生成する。
按分を表す振替えＧ（ｘ）は、Ｆ（ｘ）を用いて、〜｛ｘ＋Ｆ（ｘ）｝で与えられる。すなわち、Ｇ（ｘ）＝〜｛ｘ＋Ｆ（ｘ）｝＝６００＜リンゴ，円＞＋（６００＾＜リンゴ，円＞＋２００＜津軽，円＞＋２００＜富士，円＞＋２００＜紅玉，円＞）＝２００＜津軽，円＞＋２００＜富士，円＞＋２００＜紅玉，円＞、となる。
【００２３】
（実施の形態）
以下、上記の交換代数の考え方を利用してデータ編集処理を実行する情報処理装置（以下、「データ編集装置」と呼ぶ。）について説明する。本実施の形態において、ユーザは、対象がその集合に属するための必要十分条件を与えることによって集合を記述する方法である内包的記法を用いて、データの編集内容を記述する。実施の形態のデータ編集装置は、内包的記法により記述された編集内容に基づいて、集合の要素をすべて列挙することで集合を記述する方法である外延的記法で記述されたプログラムコードを出力する。そして、編集対象のデータを、交換代数に対応する形式のデータオブジェクトとしてメモリに読み込み、上記のプログラムコードを実行することによりデータの編集処理を実行する。
【００２４】
図２は、実施の形態のデータ編集装置１０の機能構成を示すブロック図である。データ編集装置１０は、データ保持部１２と、コード対応関係テーブル１４と、集約規則テーブル１６と、按分規則テーブル１８と、コード取得部２０と、コード生成部２２と、編集処理部２４を備える。
【００２５】
本明細書のブロック図において示される各ブロックは、ハードウェア的には、コンピュータのＣＰＵをはじめとする素子や機械装置で実現でき、ソフトウェア的にはコンピュータプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウェア、ソフトウェアの組合せによっていろいろなかたちで実現できることは、当業者には理解されるところである。例えば、図２の各機能ブロックは、ソフトウェアとして記録媒体に格納されデータ編集装置１０のハードディスクにインストールされ、データ編集装置１０のメインメモリに適宜読み出されてＣＰＵにて実行されてもよい。
【００２６】
データ保持部１２は、編集対象となる編集前のデータと編集後のデータとを保持する記憶領域である。データ保持部１２は、編集前のデータと編集後のデータのそれぞれについて、データの値と基底とを対応づけたＣＳＶ（Comma Separated Values）ファイルを保持する。例えば、ＣＳＶファイルの一行が「値，ハットの有無，名称，単位，時間，主体」となり、空白行が元（げん）の区切りを示してもよい。なおデータ保持部１２は、データ編集装置１０とは異なる情報処理装置、例えばデータベースサーバ内に設けられてもよいことはもちろんである。この場合、ＬＡＮ・ＷＡＮ・インターネット等の通信網を介して当該データベースサーバとデータ編集装置１０が接続された情報処理システムが構築されてもよい。
【００２７】
コード対応関係テーブル１４は、データの編集内容（編集操作）を内包的記法により記述するためのプログラム言語（以下、「内包的記法言語」とも呼ぶ。）と、データの編集内容を外延的記法により記述するためのプログラム言語（以下、「外延的記法言語」）との対応関係を保持する記憶領域である。実施の形態における外延的記法言語はＪａｖａ（登録商標）言語であることとするが、Ｃ言語等、他のプログラム言語であってもよい。
【００２８】
内包的記法言語と外延的記法言語との対応関係は、例えば、内包的記法言語における編集操作を示すキーワードと、外延的記法言語におけるその編集操作を実現するためのロジックを実装したコード（関数）とを対応づけたものである。より具体的には、内包的記法言語における複数のデータから特定のデータを抽出する条件の記述は、外延的記法言語における複数のデータを逐次列挙するための繰り返し命令の記述と対応づけられる。また例えば、内包的記法言語において入力データを指定するコードと、外延的記法言語においてその入力データをメモリ内に読み込むロジックを実装したコードとを対応づけたものである。なお、対応関係の具体例は図３〜図６において後述する。
【００２９】
集約規則テーブル１６は、アグリゲーション操作時に参照されるべき複数種類の基底の集約関係を定めた集約規則を保持する記憶領域である。集約規則は、例えば上述の｛津軽，富士，紅玉｝-->{リンゴ}という集約関係を定めたものである。複数種類の基底を集約する基底（上記例ではリンゴ）を以下では「集約基底」と呼ぶこととする。按分規則テーブル１８は、按分操作時に参照される複数種類の基底の按分比率を定めた按分規則を保持する記憶領域である。按分規則は、例えば上述の｛リンゴ｝-->｛津軽，富士，紅玉｝という按分関係と、１：１：１という按分比率を定めたものである。
【００３０】
コード取得部２０は、キーボード等の所定の入力装置を介してユーザにより入力されたプログラムコード（以下、「ユーザコード」とも呼ぶ。）を取得する。このユーザコードは、内包的記法言語で記述される。具体的なユーザコード例は後述する。
【００３１】
コード生成部２２は、コード対応関係テーブル１４に保持された対応関係にしたがって、ユーザコードから、ユーザコードに記述されたデータ編集内容が外延的記法言語で記述されたプログラムコード（以下、「実行コード」とも呼ぶ。）を生成する。実施の形態における実行コードはＪａｖａバイトコードであることとする。具体的には、ユーザコードに対応するＪａｖａソースコードを生成し、そのソースコードをコンパイルすることによりＪａｖａバイトコードを生成する。具体的な実行コード例は後述する。
【００３２】
編集処理部２４は、コード生成部２２において生成された実行コードにしたがって、データ保持部１２に保持された編集対象のデータを編集する。編集処理部２４は、データ読込部２６とデータ編集部２８と編集結果出力部３０を含む。なお、実行コードが所定の実行エンジンにおいて実行されることにより、編集処理部２４（データ読込部２６〜編集結果出力部３０）の機能が実現されてもよいことはもちろんである。例えば、実行コードがＪａｖａバイトコードの場合、実行エンジンはＪＶＭ（Java Virtual Machine）となる。
【００３３】
データ読込部２６は、データ保持部１２から編集対象のデータを読み込み、そのデータから、データの値と基底とが対応づけられたデータオブジェクトをメモリ上に生成する。データ編集部２８は、データ読込部２６において生成されたデータオブジェクトに対する操作を実行して編集結果のデータを設定する。編集結果出力部３０は、データ読込部２６において設定された編集結果のデータをＣＳＶファイルとして記録し、データ保持部１２へ格納する。
【００３４】
図３は、会計型データを操作するためのユーザコードの一例を示す。以下のコード例では、左端に行番号を示しており、その行番号によりコードの位置を適宜示す。図３では、編集対象データとして、２００＜現金＞＋１００＜小麦＞という元と、２００＜現金＞＋２００＜大豆＞という元を含む集合Ｃが指定されている。ここでは説明の簡明化のため編集対象データを直接入力しているが、典型的には入力ファイルとしてのＣＳＶファイルの名称や、そのＣＳＶファイルにおける入力データの記述位置が指定されることにより入力データを示すデータオブジェクトが生成される。
【００３５】
図３の４行目では、交換代数のプロジェクション処理、すなわち指定された基底と一致する部分要素を抽出する射影操作が指定されている。具体的には、集合Ｃから基底＜現金＞もしくは＜小麦＞に該当し、かつ、値が設定済という条件を充足する元を抽出して集合ａｓｅｔへ代入する処理が指定されている。そして５行目でａｓｅｔ内の元の加算処理が指定されている。ａｓｅｔは２００＜現金＞、１００＜小麦＞、２００＜現金＞を含むため、加算結果ａｌｐｈａは４００＜現金＞＋１００＜小麦＞となる。ここでは説明の簡明化のため編集結果を標準出力へ出力することとしているが、典型的には出力ファイルとしてのＣＳＶファイルが指定されて、当該ＣＳＶファイルに編集結果（ここでは加算結果ａｌｐｈａの内容）が記録される。
【００３６】
図４（ａ）は、図３のユーザコードに対応する実行コードを示す。具体的には図３の２行目に応じてコード生成部２２が生成する実行コードであり、データ読込部２６の機能に対応する。なお、実施の形態の説明では実行コードとして便宜的にＪａｖａソースプログラムを示す。同図では、集合Ｃに対応するＥｘＡｌｇｅＳｅｔオブジェクトに、２００＜現金＞＋１００＜小麦＞という元に対応するＥｘＡｌｇｅオブジェクト（１５〜２３行目）と、２００＜現金＞＋２００＜大豆＞という元に対応するＥｘＡｌｇｅオブジェクト（２４〜３２行目）が格納されている。
【００３７】
図４（ｂ）は、図３のユーザコードに対応する実行コードを示す。具体的には図３の４行目に応じてコード生成部２２が生成する実行コードであり、データ編集部２８の機能に対応する。同図では、集合Ｃに含まれる複数の元に対応するＥｘＡｌｇｅオブジェクトを列挙するｆｏｒループと、集合Ｄに含まれる複数の基底に対応するＥｘＢａｓｅオブジェクトを列挙するｆｏｒループとの２重ループの中で、プロジェクションメソッドが呼び出され、プロジェクション処理の結果がリストへ追加される。そして、そのリストから集合ａｓｅｔが設定されている。
【００３８】
図５は、レコード型データを操作するためのユーザコードの一例を示す。同図では、山田＜ｎａｍｅ＞＋５＜ｓｃｏｒｅ＞、田中＜ｎａｍｅ＞＋３＜ｓｃｏｒｅ＞、鈴木＜ｎａｍｅ＞＋４＜ｓｃｏｒｅ＞、佐藤＜ｎａｍｅ＞＋２＜ｓｃｏｒｅ＞、本田＜ｎａｍｅ＞＋５＜ｓｃｏｒｅ＞の５つの元を含む集合ｄａｔａｓｅｔが指定されている。
【００３９】
図５の９行目では、基底＜ｓｃｏｒｅ＞に対応づけられた値が４以上の元が存在するたびに、元「１＜４以上，人，＃，＃＞」を集合ａｓｅｔへ代入する処理が指定されている。そして、１１行目でａｓｅｔ内の元の加算処理が指定されている。この結果として、ａｓｅｔには元「１＜４以上，人，＃，＃＞」が３個含まれることになり、ｒｅｔ＝３＜４以上，人，＃，＃＞となる。すなわちこの例は、ｓｃｏｒｅが４以上の人数を集計するものとなる。
【００４０】
図６（ａ）は、図５のユーザコードに対応する実行コードを示す。具体的には図５の２〜７行目に応じてコード生成部２２が生成する実行コードであり、データ読込部２６の機能に対応する。同図では、集合ｄａｔａｓｅｔに対応するＤｔＡｌｇｅＳｅｔオブジェクトに、上記５つのレコード型データの元のそれぞれに対応するＤｔａｌｇｅオブジェクトが格納される。レコード型データは値と基底の両方で様々なデータ型を許容するため、値と基底のそれぞれのデータ型を示す情報もＤｔａｌｇｅオブジェクトに設定される。
【００４１】
図６（ｂ）は、図５のユーザコードに対応する実行コードを示す。具体的には図５の９行目に応じてコード生成部２２が生成する実行コードであり、データ編集部２８の機能に対応する。同図では、集合ｄａｔａｓｅｔに含まれる複数の元に対応するＤｔＡｌｇｅＳｅｔオブジェクトを列挙するｆｏｒループの中で、基底＜ｓｃｏｒｅ＞に対応する値が４以上の場合に、元「１＜４以上，人，＃，＃＞」がリストへ追加される。そして、そのリストから集合ａｓｅｔが設定されている。
【００４２】
なおユーザコードにアグリゲーション命令（関数）が設定された場合、コード生成部２２は、集約規則テーブル１６に保持された集約規則を参照して、まず簿記の記載に対応するオブジェクト（以下、「中間オブジェクト」とも呼ぶ。）を設定する実行コードを生成する。具体的には、集約対象の複数のデータの集計値を算出し、その集計値と集約基底とを対応づけたデータと、集約対象の複数のデータそれぞれの値を差し引くことを示すデータ（すなわち集約対象の複数のオリジナルデータにハット属性を付加したデータ）とを加算する元を示すオブジェクトを、中間オブジェクトとして設定する実行コードを生成する。この中間オブジェクトは、前提技術のアグリゲーションで示したＦ（ｘ）に対応する。
【００４３】
そしてコード生成部２２は、集約対象の複数のオリジナルデータが加算される元を示すオブジェクトと中間オブジェクトとを加算する、言い換えれば、集約対象の複数のオリジナルデータとそれらのデータにハット属性を付加したデータとを相殺することにより、集約対象の複数のデータの集計値と集約基底とを対応づけたデータを、集計結果のオブジェクトへ格納する実行コードを生成する。この実行コードは、前提技術のアグリゲーションで示した〜（ｘ＋Ｆ（ｘ））に対応するコードである。なおコード生成部２２は、中間オブジェクトの内容を所定のファイルへ出力する実行コードをさらに生成してもよい。この態様によると、中間オブジェクトの内容をユーザへ提示することにより、効率的なデバッグを支援するとともに、簿記の振替計算に利用可能な情報をユーザへ提供できる。
【００４４】
またユーザコードに按分命令（関数）が設定された場合、コード生成部２２は、按分規則テーブル１８に保持された集約規則を参照して、アグリゲーション時と同様にまず中間オブジェクトを設定する実行コードを生成する。具体的には、按分対象のデータの値を按分比率にしたがって按分し、按分した値と按分先の各基底とを対応づけたデータと、按分対象のオリジナルデータにハット属性を付加したデータとを加算する元を示すオブジェクトを、中間オブジェクトとして設定する実行コードを生成する。この中間オブジェクトは、前提技術の按分で示したＦ（ｘ）に対応する。
【００４５】
そしてコード生成部２２は、按分対象のオリジナルデータの元を示すオブジェクトと中間オブジェクトとを加算する、言い換えれば、按分対象のオリジナルデータとそのデータにハット属性を付加したデータとを相殺することにより、按分した値と按分先の各基底とを対応づけたデータを、按分結果のオブジェクトへ格納する実行コードを生成する。この実行コードは、前提技術の按分で示した〜（ｘ＋Ｆ（ｘ））に対応するコードである。なおコード生成部２２は、アグリゲーションと同様に、中間オブジェクトの内容を所定のファイルへ出力する実行コードをさらに生成してもよい。
【００４６】
以上の構成による動作を以下説明する。
図７は、データ編集装置１０の動作を示すフローチャートである。まずユーザは、内包的記法言語を用いてデータの編集内容を内包的記法により記述し、そのプログラムコードを指定したデータの編集指示をデータ編集装置１０へ入力する。データ編集装置１０が所定の入力装置を介してデータの編集指示を受け付けた場合（Ｓ１０のＹ）、データ編集装置１０のコード取得部２０は、ユーザにより入力されたプログラムコードをユーザコードとして取得する（Ｓ１２）。コード生成部２２は、コード対応関係テーブル１４に保持されたユーザコードと実行コード間の対応関係にしたがって、ユーザコードから実行コードの生成処理を開始する（Ｓ１４）。
【００４７】
ユーザコードにアグリゲーション命令や按分命令等の振替え命令が存在する場合（Ｓ１６のＹ）、コード生成部２２はその振替え命令に応じた相殺処理のための中間オブジェクトの出力命令を実行コードへ設定する（Ｓ１８）。ユーザコードに振替え命令がなければ（Ｓ１６のＮ）、Ｓ１８をスキップする。編集処理部２４は、生成された実行コードにしたがって編集対象データに対する編集処理を実行する（Ｓ２０）。例えば、データ読込部２６は、データ保持部１２の入力データ格納用のＣＳＶファイルから、ユーザコードおよびユーザコードから生成された実行コードにおいて指定された編集対象のデータを読み込みデータオブジェクトを生成する。そしてデータ編集部２８は、生成されたデータオブジェクトに対して実行コードにて指定された編集操作（基底に基づく射影操作・アグリゲーション操作・按分操作等）を実行し、編集結果を示すデータオブジェクトを生成する。編集結果出力部３０は、編集処理部２４による編集結果、例えばデータ編集部２８により生成された編集結果を示すデータオブジェクトの内容（属性値等）を、データ保持部１２の編集結果格納用のＣＳＶファイルへ出力する（Ｓ２２）。データ編集装置１０がデータの編集指示を受け付けなければ（Ｓ１０のＮ）、Ｓ１２以降はスキップされる。
【００４８】
本実施の形態のデータ編集装置１０によれば、従来ＲＤＢで扱われていたデータを、会計型データに対応するデータオブジェクト、もしくは、レコード型データに対応するデータオブジェクトとして表現することができる。これにより、コンピュータ上におけるデータオブジェクト表現の標準化を支援することができる。また、編集対象のデータの蓄積においてＲＤＢのような複雑な仕組みを必要とせず、可視性の高いＣＳＶファイルで蓄積することができる。
【００４９】
またデータ編集装置１０によれば、ユーザはデータの編集内容を内包的記法言語で記述できるため、データの編集内容を正しく理解しているユーザであれば、実際にコンピュータを動作させるための外延的記法言語について理解していなくても、正しいデータ編集を実現させることができる。またデータ編集装置１０では編集対象のデータが値と基底との組み合わせとして保持されるため、ユーザは内包的記法を用いることで、規定に基づく編集内容を容易に記述することができる。また内包的記法はコンピュータに依存せず、データ編集の仕様を反映するものであるため、ユーザは正しい仕様記述を行えば、正しいデータ編集を実現させることができる。例えば、ｆｏｒループ等を意識せずに、ユーザはデータの編集内容を仕様通りに記載すればよい。したがって、ユーザコードへのバグの混入を低減させることができ、言い換えれば、バグの発生箇所をデータそのもののバグに限定させやすくなる。例えば、会計型データの操作においては、アグリゲーションや按分等、様々な振替処理をロバストに記述することができる。
【００５０】
またデータ編集装置１０によれば、データの基底に基づいて値の編集処理が行われることにより、データの形式（スキーマ）に変更があった場合でも、その影響範囲を限定することができる。例えば、編集対象のデータを格納したテーブルにおいてカラムの入れ替えが発生しても、ユーザコードにおける編集ロジックへの影響を排除することができる。
【００５１】
またデータ編集装置１０によれば、アグリゲーションや按分等の振替処理の規則がプログラムコード外のテーブルに保持されるため、規則に変更が生じてもテーブルのデータを変更すればよく、プログラムコードへの影響を排除できる。
【００５２】
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００５３】
例えば、データ編集装置１０は振替規則テーブルをさらに備えてもよい。振替規則テーブルは、振替操作（ここではアグリゲーションや按分を伴わない基底の変換操作であることとする）において参照されるべき振替規則を保持する記憶領域である。振替規則は、振替元の基底と振替先の基底とを対応づけたデータである。コード生成部２２は、ユーザコードに振替命令が設定された場合、振替規則テーブルに保持された振替規則を参照して、中間オブジェクトＦ（ｘ）を設定する実行コードを生成する。例えば、ｘ＝数値Ａ＜振替元の基底＞の場合、Ｆ（ｘ）＝数値Ａ＾＜振替元の基底＞＋数値Ａ＜振替先の基底＞となる。そしてコード生成部２２は、〜（ｘ＋Ｆ（ｘ））に対応した実行コードを生成する。当該コードの実行結果として、上記の例では、数値Ａ＜振替元の基底＞が、数値Ａ＜振替先の基底＞に変換されることになる。
【００５４】
上述した実施の形態、変形例の任意の組み合わせもまた本発明の実施の形態として有用である。組み合わせによって生じる新たな実施の形態は、組み合わされる実施の形態、変形例それぞれの効果をあわせもつ。
【００５５】
請求項に記載の各構成要件が果たすべき機能は、実施の形態および変形例において示された各構成要素の単体もしくはそれらの連携によって実現されることも当業者には理解されるところである。
【符号の説明】
【００５６】
１０  データ編集装置、  １２  データ保持部、  １４  コード対応関係テーブル、  １６  集約規則テーブル、  １８  按分規則テーブル、  ２０  コード取得部、  ２２  コード生成部、  ２４  編集処理部、  ２６  データ読込部、  ２８  データ編集部、  ３０  編集結果出力部。
【図１】
0005794568.tif 000002
【図２】
0005794568.tif 000003
【図３】
0005794568.tif 000004
【図４（ａ）】
0005794568.tif 000005
【図４（ｂ）】
0005794568.tif 000006
【図５】
0005794568.tif 000007
【図６（ａ）】
0005794568.tif 000008
【図６（ｂ）】
0005794568.tif 000009
【図７】
0005794568.tif 000010