Rubyのドメイン特化言語(DSL)
ドメイン特化言語(DSL: Domain-Specific Language)
問題領域に特化した言語を意味する
特定の作業の遂行や問題の解決に特化して設計されたコンピュータ言語。
Railsでは、Validations・ActiveRecord・Rake・RSpecなど幅広く使われている。
汎用語(GPL: General Purpose Language) ← DSLの反意語
通常は多種多様な問題に対応できるものを意味する
Rubyで簡単なDSLを書いてみる
DSL定義ファイル
def pay(souvenir) puts "結果: #{souvenir}" if yield end load 'event.rb'
DSLテスト用のイベントファイル(event.rb)
def souvenir_price 500 # 実際は、標準入力とか、DBから読み込む end my_money = 400 pay "お土産買えた" do souvenir_price < my_money end pay "お土産買えない" do souvenir_price > my_money end
実行結果
=> "結果: お土産買えた"
まとめ
今回は初歩の初歩のDSLしか書いていないが、
DSLを書くことにより、非プログラマーの人でも
簡単にイベント定義をすることができる。