Develop with pleasure!

福岡でCloudとかBlockchainとか。

MetaProgramingSystem

InfoQで取り上げられてたIDEAネタ「IntelliJ IDEA 8:Javaを超えたサポート 」
IntelliJ IDEA 8:Javaを超えたサポート

Flexサポートは結構取り上げられてるけどRubyネタは無い模様。まぁ7.0からサポートしてるから?
気になったのは、あまりプロダクトの関連が見えにくい部分だが、

InfoQ: リリースノートのページ以外にIntelliJ IDEA 8で注目すべき変更点は、どのようなものがありますか?


Dmitry Jemerov氏: 内部的に最も大きな変更点は、IntelliJ IDEAから共通の基盤を抜き出すためのリファクタリングを行ったことです。これにより、同一コードベースで他の製品もビルドが可能になります。IntelliJ IDEAプラットフォームはMPS(リンク)により既に使用されており、同一プラットフォームで作られた多くの未発表製品が開発途上にあります。

IntelliJ IDEA 8:Javaを超えたサポート

という、MPSネタ。MPS = Meta Programing SystemというのはIDEAの開発元のJetBrains社が提供しているユーザが独自定義した言語というか、要はDSL(Domain Specific Language)の開発環境。
http://www.jetbrains.com/mps/

DLS=ドメイン特化言語という意味で、対象となるドメイン毎に専用のプログラミング言語を用いて、簡潔な記述で開発をしようというアプローチ。DSLは独自の言語であったり、JavaC++のような既存言語に機能拡張を行ったものでもある。
ちなみに、JetBrais社のMPS以外にもDSLの開発基盤としては、Microsoftの「Software Factories」とかが有名どころ。http://www.softwarefactories.com/
確か3年くらい前のITアーキテクトとかで取り上げられてた。

一見、難しそうに聞こえるけど、まるっきり新しいものかと言えば、そうでもなく例えば、JSPも1つのDSL。サーバサイドでWebページを動的に生成しようとする際にServletAPIで文字列連結して組むよりはるかに効率的で簡潔なコードを書ける。これは、Webページの生成というドメインに特化したJSPというDSLによる開発と言える。
ちなみに、マーチンファウラーのBlogにも紹介されてる。
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?TodaysLanguageWorkbenches

IDEAというIDE上のRubyFlexのサポートもDSLとして実現されてるんだろうか?だとすると結構、面白いアプローチだと思う。