DSL(Domain Spacification Language)

なんか感覚でしかないのだけれど、DSLというキーワードに紐付く話題が流行りかけている気がする。「アーキテクチャや機能要件(仕様)をわかりやすく、明確に定義する」ことを、設計書やプログラミング言語ではなく、その中間的な存在のDSLで表現するというアプローチがどうもはやりそうな気がする。いや、流行るというよりも必然的な流れなのかもしれない。

つくづく、最近疑問に思っていることが設計書のあり方です。基本設計、詳細設計という名前だけの設計書で設計をあいまいにしてないか?本当に伝えたいことを伝えるドキュメントになっているのか?その辺が、どうも適当になっているような気がする。

ここからは私の経験からの話なので一般的にどうという話ではありませんが、基本設計(書)というのは、いわゆる外部設計にマッピングされて、画面の仕様と要件メモをまとめた程度のものが多く、詳細設計(書)というのは内部設計にマッピングされているのだけれど、どこまで内部かはあいまいなまま、結果的に実装に踏み込むのか/踏み込まないのかがすごく適当なものが多いように思います。現実問題として、実装が分からない/最近の技術的動向がわからない人が設計をやっているケースが多く、頭では詳細設計だけ見れば(何も考えずに)実装できるレベルだと思っていても、実装の考え方が10年前(それ以上)のままなので、例えばWebアプリケーションとC/Sの特性の違いなんかもわからずに設計するという状況が(どうも私の周りには)あります。

実装まで踏み込んだ設計するなら実装もわからないとだめなのは当たり前で、中途半端に顔を突っ込むからおかしくなるんじゃないかなと特に思っています。なので、実装から見たら抽象的でいて、要件から見たら具体的なDSLは、今までの設計書の書き方(あり方)を根本から変えてくれるのでは?と個人的にはきたいしています。

そのためには、より柔軟な言語が必要になるわけで、ScalaRubyなんかでそういうことができないものか考え中・・・