« データ指向設計・開発の実践 | トップページ | セミナーとモデリングライブのお知らせ »

2015.01.19

アプリの類型における処理テーブルの形式化

 業務システムに含まれるアプリケーションの「類型化」が重要だという話を何度かしたが、その中心課題と言うべき「処理テーブルの形式化」について説明したい。アプリを類型化することは、切り出された類型における処理テーブル(処理されるデータ)の論理的な位置づけを明らかにすることでもある。

 前回と同様、製造指示のデータモデルを使って説明しよう(図1)。製造指示には品目マスターや得意先マスターへの参照関係がある。また、製造指示は3つの「子テーブル」を伴っていて、それぞれの子テーブルにも他のテーブルへの参照関係がある。

図1 製造指示のデータモデル
20150119_1

 この製造指示テーブルを扱うアプリについて検討しよう。パネル表示するためのアプリについては何度も取り上げたので、今回は印刷用アプリとして「製造指示書の印刷」を取り上げたい。このアプリは、拙作の開発基盤において「見出し明細印刷」と呼ばれる機能タイプ(アプリのパターン)として分類されている。まず開発者は、この機能タイプを選んで図2右側のような「仕様書」を書くことになる。ややこしそうに見えるかもしれないが、専用エディタを使えば簡単に書ける。

図2 「製造指示書の印刷」の機能定義
20150119_2

 この仕様書において、製造指示が「見出しテーブル」として位置づけされ、製造指示仕様明細、製造指示工程明細、製造指示材料明細が「明細テーブル」として位置づけされている(赤枠部分)。つまり、この機能タイプでは「見出しテーブル」と「明細テーブル」の形式で処理データが形式化されている。

 この仕様書をドライバ(アプリケーション・ドライバ)に渡すと、ドライバ自身が「仕様書にもとづいて手作りされたかのような印刷処理プログラム」にその場で変形し、図3のようなPDFを出力する。

図3「製造指示書の印刷」の出力結果
20150119_3

 帳票の上に品目マスターや工程マスターの項目値が含まれている点に注意してほしい。にもかかわらず、図2の仕様書にそれらのテーブルの操作に関する情報は含まれていない。なぜか。各テーブルが他のテーブルとどのような参照関係を持つかについては、それぞれの「テーブル仕様書」の中で既に宣言されているからだ。たとえば製造指示工程明細テーブルであれば、工程マスターに対する参照関係が図4のように定義されている(赤枠部分)。これもまた、「データの扱いについてはデータ定義上に記述せよ」という「データ指向の開発方針」の一側面である。

図4 製造指示工程明細のテーブル定義
20150119_4_2

 機能タイプ「見出し明細印刷」の本質的役割は、「見出しテーブル上の1件と明細テーブル上の複数件を処理すること」である。処理テーブルのそのような形式を明らかにすることで、機能タイプ毎の「実行可能な仕様書」を実現できる。実際にそういうものを利用してみれば、アプリケーションというものが「テーブル構造から導出可能な多彩な影」でしかないことを実感できるだろう。ことほどさように業務システムの骨格をなすものはテーブル構造であるし、まともな骨格を確立することにこそコストをかけるべきだ。

|

« データ指向設計・開発の実践 | トップページ | セミナーとモデリングライブのお知らせ »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: アプリの類型における処理テーブルの形式化:

« データ指向設計・開発の実践 | トップページ | セミナーとモデリングライブのお知らせ »