« マイクロサービスと基幹システムの本質 | トップページ | 業務ロジックをアプリに置いてはいけない »

2016.01.19

機能タイプ&テーブルポジションで効率アップ

 拙作のOSSモデリングツールX-TEA Modelerの「機能定義」に含まれる「テーブル入出力定義」の属性として「ポジション」を追加した(次図)。X-TEA Modelerにおいて機能定義はユーザ定義された「機能タイプ」別に分類されるが「(テーブル)ポジション」はこれと密接に関係している。それらを組み合わせて機能定義することで、設計情報を実装につなげやすくなる。

▼テーブル入出力定義のポジション属性
20160119

 業務システムには多種多様な機能定義(アプリ定義)が含まれるが、それらを「機能タイプ(データ処理パターン、デザインパターン)」に分類することで、設計過程が合理化される。私の経験では、10種類以下に整理された機能タイプで、業務システムに含まれる70%程度の機能定義(アプリ)をカバーできる。それらについてはざっくりしたフォームのデザインを補足するだけで、設計作業が完了する。残りの30%については「その他」のような機能タイプをあてがい、個別に仕様を考えたらいい。漫然と設計するのではなく、そのようにメリハリを効かせることで、作業効率が格段に向上する。

 ただし、そこまでであれば「設計作業の合理化」でしかない。機能タイプを適用することの究極の目的は「実装作業の合理化」にある。機能定義に丁寧に機能タイプをあてがうだけで、作業が効率化するし、設計情報の可読性も確実に高まるだろう。しかしそれでも、そのように丹念にまとめられた設計情報を眺めながらいちいちプログラミングしている、という態勢ではなにやら中途半端である。どうせなら、機能タイプによって類型化された機能定義にもとづいて「実際に動作するアプリ」を一瞬で手に入れるための工夫までやりたい。

 そのための鍵が「テーブルポジション」だ。例として「一次テーブル結合テーブルとともに読み込んで、その複数レコードをフォーム上で一覧表示する」という機能タイプを取り上げよう。個々の機能定義にこの機能タイプをあてがう際に「一次テーブルは製造指示で、結合テーブルは製品マスター」などと宣言してもらう。これによって、それぞれのテーブルのデータ処理上の位置づけ(ポジション)が明らかになる。

 どのようなテーブルポジションが想定されるかは、機能タイプ毎に異なる。上述したもの以外の機能タイプでは「見出しテーブル」や「明細テーブル」といったポジションが問題にされる。これらの他に「その他」までを含めた5種類くらいを、テーブルポジションの属性が取り得る値として用意しておけば十分だろう。

 機能タイプとテーブルポジションを組み合わせることで、個々の機能定義の意味合いがより具体的になるだけでなく、実装につなげやすくなる。なにしろ機能タイプとして処理様式が明確になっているし、どのテーブルがどんなポジションで扱われるかまでが宣言されているし、テーブル間の関連形式はデータモデル上で明らかになっているからだ。

 たとえば、拙作の仕様書エディタX-TEA Editor(X-TEA Driverに同梱)ではもともと、X-TEA Modelerの機能定義にもとづいて「そのまま動作する仕様書」を初期設定できるようになっている。ただし、これまでは機能定義の「テーブル入出力定義」の「摘要」からポジションを読み取っていた。近日公開されるX-TEA Editorでは、テーブル入出力の正式なポジション属性として読みとれるようになる。

 もちろん、他の実装基盤向けにも同様の工夫ができる。X-TEA Modelerでまとめられた設計情報の実体は、XMLで様式化されている文字列データでしかない。様式仕様は公開されているので、機能定義やテーブル定義をparseして必要なアプリを自動生成するためのスクリプトも書ける。そこまでやれば、機能タイプとテーブルポジションにもとづいて機能モデリングしたことの効果が最大化される。ぜひチャレンジしてほしい。

 そしてそのとき、業務システム設計の本当の難しさは「機能設計」ではなく「データベース設計」にあることを実感できるだろう。適切に設計されたデータベースさえあれば、必要な機能はどんなやり方でも比較的楽に手に入る。しかしデータベース構造がまともでなければ、機能の設計と実装は辛気臭い職人技であり続ける。そんな現場でいくら年期を積んでも、タコツボ的な知識が増えるばかりでエンジニアとしての成長は頭打ちだ。とりあえず、データ要件に沿って的確にデータベース設計できるようになろう。機能タイプやテーブルポジションの活用などはその後の話ではある。

|

« マイクロサービスと基幹システムの本質 | トップページ | 業務ロジックをアプリに置いてはいけない »

コメント

コメントを書く



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




トラックバック


この記事へのトラックバック一覧です: 機能タイプ&テーブルポジションで効率アップ:

« マイクロサービスと基幹システムの本質 | トップページ | 業務ロジックをアプリに置いてはいけない »