ドメイン固有言語(DSL)は特定の作業や問題解決を目的に設計されたプログラミング言語です。別名「ドメイン特化言語」とも呼ばれております。ドメイン固有言語は1種類のタスクをうまく記述することに集中したプログラミング言語であり古くから存在した歴史があります。この記事ではドメイン固有言語を理解するために初心者でも分かる分類、特徴、基礎知識などを簡単に解説していきます。
ドメイン固有言語(DSL)とは、特定の作業や問題解決を目的に設計されたプログラミング言語です。別名「ドメイン特化言語」とも呼ばれ、JavaやC言語などの汎用言語とは違い、特定の領域(ドメイン)に関連する処理や定義の記述に特化した仕様を持つプログラミング言語のことを表します。ドメイン固有言語(DSL)は外部DSLと内部DSLの二つに分類されます。特徴として「作業効率が高い」「厳密な基準は存在しない」などが挙げられます。
ドメイン固有言語(DSL)はメタプログラミングで使用されます。メタプログラミングとはロジックを直接記述するのではなく、あるパターンを持つロジックを生成する高位ロジックによってプログラミングを行う手法です。簡単に読み解くと「コードを生成するためのコード」のことです。
ドメイン固有言語(DSL)の分類を見ていきましょう。
外部DSLとは汎用プログラミング言語とはまったく別の構文を持ち、既存の言語とは無関係に独立に定義されたものです。ホスト言語とは異なる独自の形式で作成されたDSLを指します。
内部DSLとは汎用プログラミング言語の記述ルールを工夫し、見かけ上の構文を自然言語に近づけたものです。元になる汎用プログラミング言語が存在しており、その性質や構文を借りながら、複雑な機能を制限・省略するなどして定義されております。別名「組み込み DSL」とも呼ばれております。
ドメイン固有言語(DSL)の特徴を見ていきましょう。
ドメイン固有言語(DSL)の特徴として作業効率が高いということが挙げられます。その理由として特定の言語と変換エンジンさえあればDSLが対象とする特定のソフトウェア開発の側面で面倒な手作業を行う必要がありません。またコード自体がドキュメントの役割を果たす点も作業効率が高い理由の一つです。
ドメイン固有言語(DSL)の特徴として厳密な基準は存在しないということが挙げられます。ドメイン固有言語は対象や領域ごとに様々な言語があります。一方でどのような機能を保持していればドメイン固有言語とみなされるといった基準はありません。例としてPHPという代表的な言語も元はWebページの動的な生成の為に誕生したDSLでしたが、度重なるアップデートを繰り返し機能が拡張され汎用言語となりました。
ドメイン固有言語(DSL)は汎用プログラミング言語の違い、特定の領域(ドメイン)に関連する処理や定義の記述に特化した仕様を持ちます。よってドメイン固有言語は汎用プログラミング言語ほど複雑ではありません。またドメイン固有言語は、問題領域のロジックを直接表す要素とリレーションシップで構成されます。これによりアプリケーションの設計と、ロジックのエラーの検出と修正が容易になっております。
ドメイン固有言語 | 汎用プログラミング言語 | |
領域 | 固有(特定) | 汎用的 |
仕組み | 単純 | 複雑 |
種類(例) | SQL(データベース言語) VBA(Office製品言語) XML(マークアップ言語仕様) |
Java C言語 PHP など |
ドメイン固有言語(DSL)の種類(例)を見ていきましょう。
SQLとはリレーショナルデータベースの管理・操作をするため最も普及されているデータベース言語です。主な用途としてデータベース管理システム(DBMS)へデータの検索、追加、削除、更新などの指示のために使用されます。またSQLは国際標準化機構(ISO)で規格化をされております。そのためMySQL、Oracle、PostgreSQLなど様々なデータベース管理システムにおいてもSQLにて対応することが可能です。またSQLの代表的な拡張プログラム言語としてPL/SQLやT-SQLなどが挙げられます。
VBAとはマイクロソフト社によって1993年に開発されたMicrosoft Officeシリーズに搭載されているプログラミング言語です。VBAを使用することでExcel、Access、Word、PowerPointなどのMicrosoft Office製品の機能をカスタマイズすることや拡張などが可能となります。またVBAの正式名称は『Visual Basic for Applications(ビジュアルベーシック・フォー・アプリケーションズ)』です。VBAの主要な機能としてデータの計算・集計、提携ファイルの作成、サイトクローリングなどが挙げられます。
XMLとはWorld Wide Web Consortium (W3C)によって策定されるマークアップ言語仕様の一つです。ドキュメント内のデータ構造や内容を示すために用いられます。正式名称は『Extensible Markup Language』です。HTMLはタグが固定化されているものですが、XMLはタグを自由に決めることができます。技術標準化推進団体のW3Cが提供するもののため世界共通のオープンな規格となっております。XMLの特徴として『タグを自由に決められる』『拡張性が高い』『構造の変換』などが挙げられます。
ドメイン固有言語(DSL)を理解するために初心者でも分かる分類、特徴、基礎知識などを簡単に解説させていただきました。ドメイン固有言語を一言で表すと『特定の作業や問題解決を目的に設計されたプログラミング言語』です。主な分類として『外部DSL』『内部DSL』が挙げられます。ドメイン固有言語についてこの記事に書かれている最低限の内容は理解をしておくようにしましょう。