狠狠撸

狠狠撸Share a Scribd company logo
顿厂尝の使い所
#ShinjukuLT
@disc99
もくじ
? DSLとは
? DSLの種類類
? DSLの利利?用例例
? まとめ
DSLとは
? ドメイン特化?言語(Domain Speci?c
Language)
? <=> 汎?用?言語(JavaやRubyなど)
? 特定の領域(ドメイン)の問題を解決
? ミニ?言語
なぜDSL?
? ドメイン特化?言語
> コードは当該分野の専?門
家にとって読みやすく理理解
しやすくなります
DSLの種類類
? 内部DSL
? 汎?用のプログラミング?言語の機能を利利?用
? 外部DSL
? 汎?用のプログラミング?言語とは別の構?文
内部DSL
? ホスト?言語(Java、Rubyなどの汎?用?言語)
? ?自由度が?高い?言語が便便利利(シンタックスシュ
ガー、フォーマット、AST変換、マクロなど)
? ホスト?言語の機能を呼び出せるものもある
? ホスト?言語の構?文の制約あり
内部DSLの利利?用例例
? Gradle: ビルドに特化(Groovy)
? Vagrant: 仮想開発環境構築に特化(Ruby)
? Gatling: 負荷テストに特化(Scala)
? Apache Camel: 様々な処理理を連結に特化
(Java)
外部DSL
? ホスト?言語の制約がほとんど無い
? 問題領域に対して最適な表現を選択できる
? 构?文解析机能が必要
外部DSLの利利?用例例
? make: ビルド?自動化に特化
? 2Way-SQL: アプリ、ツール両?方からのSQLの
実?行行に特化
? SQLそのものやCSSなど分類類される場合も
My DSL
? Hogan
? https://github.com/disc99/hogan
? DB操作を直感的に?行行うためのライブラリ
? DB操作に特化
? Groovyの演算?子オーバーロードとAST変換を利利?用
Hoganの利利?用例例
? SQLテーブルっぽく構
造を定義
=> INSERT実?行行
コントリビュート?大歓迎!!?
まとめ
? DSLは問題領域(ドメイン)に特化した?言語
? DSLには内部DSLと外部DSLが存在する
? どちらを使うかはドメインをどのように表現し
たいか次第
? DSLには?一定の学習コスト、メンテコストが発
?生するので適切な使い所を考える
参考
? プログラマが知るべき97のこと:ドメイン特化?言語
? http://
xn--97-273ae6a4irb6e2hsoiozc2g4b8082p.co
m/
%E3%82%A8%E3%83%83%E3%82%BB%E3%
82%A4/%E3%83%89%E3%83%A1%E3%82%
A4%E3%83%B3%E7%89%B9%E5%8C%96%E
8%A8%80%E8%AA%9E

More Related Content

顿厂尝の使い所