« X-TEA Driverの英語版登場 | トップページ | 「外部設計・内部設計」の危うさ »

2016.06.13

ドメイン特化基盤の柔軟性を高める

 特定ドメイン向けの開発案件で継続的に稼ぎたいのであれば、自らがドメインエキスパートであったほうがいい。また、オブジェクト指向言語(OOPL)やこれと一体となっているアプリケーション・フレームワーク(APFW)を使うのではなく、ドメイン特化言語(DSL, Domain Specific Language)を擁するドメイン特化基盤(DSP, Domain Specific Platform)を使った方がいい。「フレームワークとドメイン特化基盤」の記事でそのように説明した。

 その後、その主張について「DSLでは柔軟性に欠ける」と指摘された。たしかに、OOPLに比べたら、DSLでは「きめ細かい要求」に対応できない。それは間違いない。なにしろDSLというものは、記述可能な要求をあらかじめパターン化することで成り立つものだからだ。

 しかし、柔軟性を失うことによる見返りを無視すべきではない。仕様の「変更容易性」である。じっさい、柔軟性と変更容易性とは二律背反の関係にある。たとえば、ある会社に「表計算」の課題があるとしよう。これを解決するために、専用のソフトウエアをJavaで手作りした場合と、Excelでsheetを作成した場合とを比較すれば、前者のほうが柔軟性が高く、後者のほうが変更容易性が高い。「表計算のドメインに特化したDSP」であるExcelを使わずに、わざわざJavaで専用システムを開発するケースなどないだろうが、理屈としてはそういうことだ。

 一般に、ドメインに特化することで実現手段の柔軟性は低下するが、「ドメイン特有のフィーチャ」を様式化できるゆえに、その種の要求を扱いやすくなる。結果的にソフトウエアとしての変更容易性が向上する。開発手段の発展は「高級化」として説明されることが多いが、「ドメイン特化が進む」という側面もあるということだ。

 では、変更容易性のために柔軟性を犠牲にすることは、DSLを核とするDSPの宿命なのだろうか。そういうことではない。DSLの制約をカバーするためにこそDSPがある。すなわち、DSPが「スクリプト言語」を取り込むことで柔軟性を確保できる。

 有名な例がExcelにおけるVBAであるが、拙作の業務システム向けDSPであるX-TEA Driverも、JavaScriptによる記述手段やその中で利用可能なAPI群を提供している。書かれたスクリプトは、DSLの枠組みに包含される形で格納される。

 「ドメイン特有のフィーチャ」として回収される要求については、DSLで手早く対応する。そのいっぽうで、それ以外の「きめ細かい要求」については、DSPに組み込まれたスクリプトで丁寧に対応する。X-TEA Driverでの開発経験から言えば、前者は要件全体の7割、後者は3割といったところだ。前者については文字通り「瞬殺」できてしまうので、後者の実装にじっくり取り組める。プログラマである私としては、後者を扱うほうが断然面白かったりする。

 DSLがそれだけでは大きな威力を発揮しない理由は、ここらへんにある。DSLを開発の基礎とすることでシステムの変更容易性や可読性を高める。そのいっぽうで、DSPが提供するさまざまな仕掛けで柔軟性を確保する。その種の工夫の代表であるスクリプトは、プログラマにとってとくに心楽しい仕掛けである。活用してほしい。

|

« X-TEA Driverの英語版登場 | トップページ | 「外部設計・内部設計」の危うさ »

コメント

コメントを書く



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




トラックバック


この記事へのトラックバック一覧です: ドメイン特化基盤の柔軟性を高める:

« X-TEA Driverの英語版登場 | トップページ | 「外部設計・内部設計」の危うさ »