物流シミュレーションモデルの研究をしていると物流表現の形式をどうしようか考え込むことがあります。もちろん考えているだけではダメで要件を整理して形式化していかなければならないわけですが。細かい定義をしようとするとルールベースで定義することになるのですが、やはりそれなりのパワーを持った言語でないと適当な言語をデザインしただけでは先が見えてしまいます。一時期、コンパイラ・コンパイラなど勉強してみましたがどうもしっくりきませんでした。その一方で、ここ数年くらい頭にあったのが自動生成やDSLでした。どうやらRubyでは言語内DSLという考え方が主流のようです(参考)。有名なRailsもそしてRakeもその代表書くだと。まずはモデリング言語をどう設計すべきか分析する必要がありますが、まずは目の前の問題に対してDSLらしきものを組んでみたいと思います。手始めにRakeをささっと読んでみて勘所をつかもうかな。。。と思ってググってみると、早速、「Rakeのソースはコードリーディングや教材に適している」とというタイトルのエントリーがありました。