SML はドメイン固有言語かフレームワークか — 言語設計基準に照らした分析
著者: Asher Bond (asher.bond@distillative.ai)
要旨
ドメイン固有言語は、対象ドメインに合わせた構文と抽象を備え、定型コードを削減し、汎用ホスト言語からある程度独立していなければならない。本稿は、ビジネスインテリジェンスにおいて次元・階層・関係・計算メトリックを定義する宣言的言語である SML(Semantic Modeling Language)を、これらの基準に照らして評価する。言語をその提供する抽象と束縛機構によって特徴づける古典的立場 [1, 2] に依拠すれば、SML は DSL の実質的基準——ドメインに整合した構文、ドメイン抽象、定型コード削減——を満たす。一方で、借用された心的モデル(MDX 様式の式)を保持しており、この点で一部フレームワークの領域にとどまる。「DSL かフレームワークか」は二者択一ではなくスペクトルであり、SML はその DSL 側に位置する。ホスト言語からの独立性という単一の軸においてのみ、フレームワーク側へ引き寄せられている。
本論
SML とは何か。 SML は、ビジネスインテリジェンスにおける意味モデリングのための宣言的言語である。データセット・次元・階層・関係・計算メトリックを専用の構文で定義する——MDX 様式の expression を持つ metric_calc オブジェクト、join_columns と role_play ラベルによってファクトデータセットと日付次元を結合する関係オブジェクトがその例である。これらの例は、言語の文法仕様ではなく、その姿を示す [ILLUSTRATIVE] なものである。
DSL の基準。 ある言語を他の言語から区別するもの——第一級とされる抽象・命名・束縛機構 [1]、およびドメイン操作を合成する水準を引き上げることの価値 [2]——に関する古典的説明に従えば、DSL には慣例的に次が期待される。(1) ホスト言語への薄いラッパーではなく、ドメイン固有の構文を提供すること。(2) ドメイン概念に整合した抽象を備えること。(3) 定型コードを削減すること。(4) 汎用言語の深い知識なしに利用可能であること。
評価。
- 「ドメイン構文 (1):」SML は、独自の宣言的形式でモデルと計算を定義する——満たす。
- 「ドメイン抽象 (2):」次元・階層・関係・メトリックは、ビジネスインテリジェンスの概念に直接対応する——満たす。
- 「定型コード削減 (3):」関係とメトリックの宣言は、同等の手書き SQL/ORM 配管より簡潔である——満たす。
- 「独立性 (4):」部分的に満たす。SML は Python も SQL も要求しないが、その計算式は MDX 様式の構文と心的モデルを借用しており、先行するクエリパラダイムへ結びつけている。
結論。 SML は DSL の実質的基準——ドメイン構文、ドメイン抽象、定型コード削減——を満たし、厳密な独立性においてのみ及ばない。スペクトル上で答えるなら、SML はフレームワーク的借用を一部残したドメイン固有言語である。正確にどこへ位置するかは、基準 (4) をどれだけ厳しく重みづけるかに依存する。本評価は定性的であり、数値スコアを伴わない。四つの基準は「満たす/部分的」へと解決され、その解決こそが結果である——百分率は、この判断が持たない精度を付け加えるにすぎない。
根拠と適用範囲
本稿は言語設計基準に照らした定性的分析であり、そのものとして成立している。四つの DSL 基準は共通の実務的定義 [1, 2] である——形式文法やコンパイラ工具立てを軸に組み立てられた定義であれば、各軸の重みは異なり、そしてその重みづけが結論を決するのは基準 (4) においてである。構文の断片は、論証のために SML の姿を示す [ILLUSTRATIVE] なものであり、その文法の権威ある記述ではない。これらの基準において、結論は揺るがない。SML は独立性において借用を行う DSL であり、「DSL かフレームワークか」は二者択一のラベルではなくスペクトル上の位置である。
References
- Christopher Strachey (2000). Fundamental Concepts in Programming Languages. Higher-Order and Symbolic Computation. [Reprint of 1967 lecture notes]
- John Backus (1978). Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs. Communications of the ACM. [1977 ACM Turing Award Lecture]