« 酸素濃度と進化爆発と技術革新 | トップページ | サブシステムを「使い捨てる」ためのアーキテクチャ »

2010.01.02

DOAは自動生成の夢を見るか

 「自動生成」に魅せられるソフトウエア技術者は少なくない。欲しいプログラムの仕様を、それぞれに工夫した言語や表形式や図面の形で定義して、それをもとにソースコードを自動生成する。これをコンパイルするだけで(スクリプト言語であればコンパイルなしで)プログラムが完成する。そんな桃源郷を夢見て多くの技術者が情熱を傾けてきた。

 UMLベースのMDAをはじめとして、いろいろなスタイルの自動生成のしくみが考案されたが、生成されたコードの編集を許すか許さないかが肝心の問題になった。編集を許すと、コードから定義を逆生成することが困難なので、中途半端な「コードテンプレート機能」や「コード補完機能」と違いがなくなる。かといって編集を許さないと、仕様の自由度が損なわれる。編集を禁止したままで仕様の自由度を高めようとすれば、しくみの複雑さが増して、教育コストや維持費がかさむようになる。あっち立てればこちらが立たないという頭の痛い問題が「自動生成」にはつきまとっている。

 これらの問題の多くが、この技術が「コード」を発想の起点にしているゆえに生じている。「コードをあっという間に生み出す技術」といえども、コードそのものにつきまとう制約や扱いにくさからは逃れられない。けっきょく「自動生成」は、開発者のコードへの無意識な偏執が生み出した見果てぬ夢とはいえないだろうか。

 いっぽう、アプリケーションドライバ(*1)はコードの制約を受けない。「自動生成」ではなく、「動的制御」、すなわち仕様情報にもとづいてダイレクトに機能を動作させるからだ(*2)。その過程でコード生成を伴わないのは、「データ処理パターン」毎に専用クラスが用意されているためだ。多すぎず少なすぎないバリエーションの「データ処理パターンクラス」が、仕様情報を翻訳して多彩なプログラムにみずから変形して立ち上がる。

 重要なのは、それらの「データ処理パターン」がDOA(データ中心手法)のシステム観によって生み出されているという点だ。関数従属性と定義域制約にもとづいて形式化された、つまり正規化されたデータベースがあれば、その上で起こり得るデータ処理パターンを経験的に整理できる。いっぽうデータベースが正規化されていなければ、その上で企図されるデータ処理はいちいち個性的なものにならざるを得ない。「定型的な舞台」を前提できるゆえに「型を組み合わせた緻密な踊り」を実現できるということだ。

 そういうわけで、DOAの最大の意義として「データベースを正規化することで、データ処理様式を類型化できること」を挙げたい。それゆえにこそ、システムを設計しやすくなるし、実装もしやすくなる。動的制御方式は、DOAの帰結とも呼ぶべき実装合理化の決定打だ。だから、DOAはもう自動生成の夢を見なくていい。


*1.アプリケーションドライバ:筆者の造語で、ドメイン別アプリケーションを実行するしくみのタイプのひとつ。アプリケーションの仕様情報を編集するための「エディタ」と、その仕様情報にもとづいてアプリケーションを動的に立ち上げる「ドライバ」とでできている。「ハードウエアドライバ」をドメイン用アプリケーション向けに拡張した考え方。筆者謹製のアプリケーションドライバ XEAD Driver が近日公開予定。
*2テーブルの拡張定義としてスクリプト言語も用いられるが、補助的なものにすぎない。

|

« 酸素濃度と進化爆発と技術革新 | トップページ | サブシステムを「使い捨てる」ためのアーキテクチャ »

コメント

アンドロイドは電気羊の夢をみるか by フィリップ・K・ディック
大好きな小説です

投稿: ret315 | 2010.05.07 15:55

コメントを書く



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




トラックバック


この記事へのトラックバック一覧です: DOAは自動生成の夢を見るか:

» abs/articles/2010 [[ abs+ ] (PukiWiki/TrackBack 0.3)]
【2ch】ニュー速クオリティ:意味がわかると怖いコピペ ウノウラボ Unoh Labs: Amazon Web Services入門: PHPとEC2/S3/SQS/SimpleDBで作るビデオ共有サイト Twitter解析ツール15種比較レビュー - リアルアクセス解析 MOONGIFT: ≫ 基幹システムのテーブル表示などで役立ち...... [続きを読む]

受信: 2010.01.12 01:52

« 酸素濃度と進化爆発と技術革新 | トップページ | サブシステムを「使い捨てる」ためのアーキテクチャ »