Perl Hackers Hub
第35回 Perlによる内部DSLの作り方(1)
本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはcpanクライアントApp::cpmの開発などで知られる鍛治匠一さんで,
DSLとは
DSL
- リレーショナルデータベースへの問い合わせに特化したSQL
- ビルド手順記述に特化したMakefile
- cpanモジュール依存記述に特化したcpanfile
などがDSLです。
DSLの利点
ではDSLの利点は何でしょうか。次の点が挙げられると思います。
- 簡潔である
- 適切なDSLを用いれば,
問題を簡潔に記述できます。その結果わかりやすくなり, その問題の重要な部分に集中できます。 - クールである
- 簡潔さとも関連しますが,
適切なDSLは無駄なものが削ぎ落とされており, かっこ良くクールなものになります。DSLを人間が読み, 開発するものである場合, クールさは非常に重要であると考えます。
DSLの欠点
DSLも,
- 問題領域を定義するのが難しい
- DSLは特定の問題領域に特化した言語であると述べましたが,
問題領域を定義することは非常に難しい作業です。問題領域の定義に失敗すると, DSLの範疇 (はんちゅう) で扱えなくなる, DSLが冗長になるなどの問題が起こり, DSLの利点が失われてしまいます。 - 新たな言語を作るコストがかかる
- 新たな言語を作る以上,
文法を考えそれを解釈するプログラムを作らなければならず, 相当なコストがかかります。 - 新たな言語を習得するコストがかかる
- 使用者はその新たな言語を習得しなければなりません。さらにDSLという特性上,
そこでの知識がほかに応用しにくいという問題も持っています。
これらの利点,
内部DSLと外部DSL
さて,
内部DSL
内部DSLもしくは言語内DSLとは,
- cpanfileはPerlをホスト言語として定義された内部DSL
- RakefileはRubyをホスト言語として定義された内部DSL
などです。
内部DSLの利点としては次の3点が挙げられます。
1つ目は,
2つ目は,
3つ目は,
外部DSL
内部DSLに対して,
- SQL
- Makefile
などが外部DSLです。
外部DSLの利点として,
欠点としては,
以降では,
バックナンバー
Perl Hackers Hub
- 第35回 Perlによる内部DSLの作り方(1)
- 第34回 DockerによるPerlのWebアプリケーション開発(3)
- 第34回 DockerによるPerlのWebアプリケーション開発(2)
- 第34回 DockerによるPerlのWebアプリケーション開発(1)
- 第33回 MojoliciousでかんたんWebアプリケーション開発(3)
- 第33回 MojoliciousでかんたんWebアプリケーション開発(2)
- 第33回 MojoliciousでかんたんWebアプリケーション開発(1)
- 第32回 新人さんのためのPerl入門(3)
- 第32回 新人さんのためのPerl入門(2)
- 第32回 新人さんのためのPerl入門(1)