DSLについて

DSL(Domain Specific Language)とは

DSL(Domain Specific Language)とは、特定の処理遂行や問題解決に対して特化して設計されたプログラミング言語のことです。

「ドメイン固有言語」「ドメイン特化言語」などとも呼ばれます。


DSLは、汎用プログラミング言語と違って、ある特定の領域(ドメイン)の問題を解決するために作られています。

それゆえ、対象外の領域の問題を解くことは一般的に想定していません。

UNIXではシェルスクリプトなどDSLを古くから利用しており、「リトル言語」もしくは「ミニ言語」と呼んでいました。


DSL例

  • SQL
    • データベース言語
  • yacc
    • コンパイラ用構文解析

内部DSLと外部DSL

内部DSLとは、汎用のプログラミング言語で実装され、書き方を工夫して見かけ上の構文を自然言語に近づけた言語です。

利用される場面としては、プロセスやタスクの実行、データ構造の構築、依存関係の定義、他のシステムとの通信などが挙げられます。

ホスト言語のAPI、ライブラリ、ビジネスコードなどはラッピングされるため、技術や知識がなくても容易に利用できるようになります。

Lispは言語自身でDSLを記述することができ、「プログラム可能なプログラミング言語」と言われてます。


外部DSLとは、汎用のプログラミング言語とは別の構文を持った言語です。

ホスト言語とは異なる言語(XML,Makefileのような独自形式)で作成されたDSLを指します。

外部DSLの最大のメリットは,DSL設計者が自由にフォーマットを決められるということです。

技術や知識のない人にとっては、理解しにくいことがあります。


DSLライフサイクル

DSL開発において「DSLのライフサイクル」が提唱されています。

DSLライフサイクルは以下のフェーズから成り立っています。

  • 決定(decision)
    • DSLを開発するか、利用するかどうかを決定します。
  • 分析(analysis)
    • 問題とされるドメインを識別し、関連する知識を集めます。
  • 設計(design)
    • 適切な設計パターンを識別します。
  • 実装(implementation)
    • 最も適切な実装手法を選択して、実装します。
  • 配備(deployment)
    • DSLとDSLで構築されたアプリケーションを利用します。
  • 保守(maintenance)
    • 問題の本質的な変更により、DSLの実装を変更します。

DSMについて

DSM(Domain-Specific Modeling:ドメイン固有モデリング)とは、グラフィカルなドメイン固有言語(DSL)を使用してシステムの様々な面を表現するシステム設計開発手法です。


関連ページ