Qcon Tokyo 1日目 ドメイン固有言語 −その役割−  Martin Fowler

以下、私の中で感じたことなので内容そのままではないです。
かなり勝って解釈があると思います。
 
DSLで一番の利点は読みやすいことであるこの知見を得られたので良かった。

DSLドメイン固有言語)は新しい考え方ではない。

既に私たちはいくつかのDSLを使っている。
SQLCSSXMLなど。
コードは見てすぐに何をするべきものなのか?がわからなければいけない。
javaよりもXMLの方が理解しやすい。XMLよりもDLSの方がより理解しやすい。

DSLには外部DSLと内部DSLがある。

  • 外部DSL
    • UNIXでは歴史がある。Unixのコミュニティではlittle languagesという言葉で使われていた。
    • シンタックスが自由に決められる。
    • パーサーを書く必要があるが大変ではない。
  • 内部DSL
    • 既存のプログラミング言語を使う(そのまま言語で記載できる)
    • 汎用のプログラミング言語で特殊な使い方をする
    • パーサージェネレータが不要
    • デメリットは使っている言語のシンタックスに合わせる必要がある

 

Command Query API と fluent API

(なんでこの話になったんだか忘れました。)

  • Command Query API
    • メソッド自体が意味を持たせるメソッドを使う。javadocで調べられる。
  • fluent API
    • そのメソッド自体は意味を持たない。文法持っている。

fluent APIは流れるインターフェースとかそういうの。
このエントリではぶりきじゃで説明を略
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?FluentInterface

ドメイン固有言語の定義

  • 一つの言語である。一つの言葉としての性格を持っている(DSLの重要な特徴である)
  • コンピュータプログラミング言語である。
  • 表現力が限られている。アプリケーション全体を書く物ではない。機能が限られているからこそいい。
  • DSL特定ドメインにフォーカスしている
  • ドメイン固有言語を使う場合は複数の言語と組み合わせて使う。

dsl->semantic model->generate code (option)

(かなり略)
DSLをParseしてコードを生成するとかそういう話で
コード生成はoptionでしかないとか。

昔からDSLという考え方はあったが、新しいもの

(かなり略)
IDEが成長した。

など

DSLで一番の利点は読みやすいことである

DSLの利点をあげる時に書く事に注目することが多い。
CSSDSLはプログラミングの知識無しにプログラミングをできるようにしている。
これは書く事を容易にしている。デザイナーでもプログラミングできるようにしている。

一番のメリットは読む側にある。
顧客がDSLを書く事ができなくても読むことができるとしたら、間違った記載の場合に
間違いを注意することができる。DSLでコミュニケーションギャップが縮まることを意味している。 
一般の人にも書けるようにすることが大事なのではない。読めることがもっとも大事なのだ。
このメリットは非常に大きいが、そう簡単にはできない。
プログラマー以外の人でも読めるDSLを作るのは難しい。しかし、上記の利点がある。


続きはwebで
http://martinfowler.com
http://martinfowler.com/bliki/DomainSpecificLanguage.html