InfoQ: Why Program by Hand in Five Days what You Can Spend Five Years of Your Life Automating?について

InfoQ に掲載された Parser Generator として有名な ANTLR(Xtext も使っています) の作者による講演ビデオです。

  1. InfoQ: Why Program by Hand in Five Days what You Can Spend Five Years of Your Life Automating?

ソフトウェア開発における自動化やDSLについて語っています。 とても興味深い内容です。 この分野に関心のある方は是非どうぞ。

InfoQ: Why Program by Hand in Five Days what You Can Spend Five Years of Your Life Automating?について

Jolt Awards: The Best Books | Dr Dobb’s Journalについて

Dr. Dobb’s Journal の記事の紹介で、ここ1年に出版された Software 関連書籍から評価の高いものが6件掲載されています。

  1. Jolt Awards: The Best Books | Dr Dobb’s Journal

このタイトルに惹かれる方々はもちろんのこと、エンタプライズ系の仕事をされている方も、最近の傾向を理解するという意味で参考になると思います。

Jolt Awards: The Best Books | Dr Dobb’s Journalについて

G*Magazineについて

日本Grails/Groovyユーザーグループが提供するGroovy関連情報誌のご紹介です。 出版関連に携わっている方が参加されているせいか、内容も見た目もハイクオリティです。

  1. JGGUG G*Magazine

現在第2号が公開されたところです。 Groovy/Grails他は(Rubyもそうだと思いますが)、通常モデリングでやっていることをプログラミング言語側からアプローチするとこういうことになるのかな、と思わせる世界を展開します。 なお、もうすぐ(6月?)このグループの方々が執筆されたGroovy入門書が出版されるとのことです。

G*Magazineについて

COBOL – Wikipedia について

COBOL が Common Business-Oriented Language の略だということをご存じの方はどれくらいおられるのでしょう。 設計当時の意気込みが感じられるネーミングだと思います。

  1. COBOL – Wikipedia, the free encyclopedia
もし現在、当時と同じような志を持ってビジネス指向の言語を作るとしたら、どんなものになるのでしょうか? 言語といってもプログラミング言語にはならないかもしれません。 ひょっとしたらXMLスキーマでしょうか。 それともモデリング系でしょうか。 それとも携帯向けの何かでしょうか。 改めて考えてみると楽しいと思います。
COBOL – Wikipedia について

Silver Smalltalkについて

過去に1件だけ関連ポストを書いただけなのですが、このブログサイトを訪問して下さる方の中には Smalltalk というキーワードで来られる方がおられます。 興味深いプロジェクトを見つけましたので紹介します。 Jean Bezivin 先生のつぶやきにあった情報です。

  1. Silver Smalltalk (blog site)
  2. Silver Smalltalk (in action)
  3. Google Group on Silver Smalltalk

Google Group にある説明によれば

“Silver Smalltalk is an implementation of the Smalltalk-80 language for Microsoft .Net.”

ということになっています。 ブログサイトを見ると、どんどん進化している状況が分かります。

Silver Smalltalkについて

Domain-Specific Language Engineering bookについて

Eelco Visser さんと Markus Voelter さんが共同で DSL Engineering 本の執筆を開始したというつぶやきを見つけました。

  1. Domain-Specific Language Engineering

現時点では Introduction (上の URL で原稿を読むことが出来ます)が出来ているだけだそうですが、かなり実践的な本になりそうです。 DSL に関心をお持ちの方は時々でものぞきに行くと良いと思います。

Domain-Specific Language Engineering bookについて

Groovyについて

音楽の話ではなく、プログラミング言語の話です。 Javaは使えるけれどGroovyは知らないという方もおられるかもしれませんので、JGGUGの中心メンバの一人の上原さんのスライド(slideshare)をご紹介します。 興味深い内容がつまっています。

  1. Easy Going Groovy(Groovyを気軽に使いこなそう)

しばらく前の

  1. Writing Domain Specific Languages (DSLs) using Groovyについて

というポストで紹介した Groovy を使った DSL 作成のスライドのなかでも Groovy 言語の紹介はありましたが、こちらは日本語のスライドですのでもっと入り易いと思います。 個人的には言語の名前の一部に “Java” を入れておけばもっと早く広まっていたのではと思っています。

Groovyについて

Emerging Languages Campについて

Jean Bezivin さんの引用からですが、これから有望そうなプログラミング言語に関する集まりがあるようです。 やはり興味深いのはどのような言語があるのかという点です。 講演者のページをみるとそれが分かります。

  1. Emerging Languages Camp
  2. Emerging Languages Camp: Speakers

すぐにメジャーになるものが含まれているかどうか分かりませんが、今日このように多様なアプローチが提案されているというのは現在主流の言語に飽き足りない方々が多く存在するということなのでしょう。 UMLに対するDSLはこれに近い話なのかもしれません。

Emerging Languages Campについて

モデリング言語とMDDについて(2)

何となく今こう考えているということですが ・・・

1 メタモデルまたは概念モデル

どんな手法でモデリングをするにしても、やはりメタモデルまたは概念モデルといったものが最初にきます。 表現方法はいろいろあって、MOFを使うものや、EBNFのようなプログラム言語設計記法を使うもの、更に多分もっと純粋数学的なものなどです。

2 モデル

モデルはモデリング言語で書かれた対象の記述になります。 世の中でもっとも使われているモデリング言語がUMLだとすると、純粋なUMLモデルやUML Profileを含んだ拡張UMLモデルがここで言うモデルにあたります。  EBNFのようなものを使って文法を規定した場合は、その文法に従って書かれたテキストがモデルにあたります。

3 プログラム

プログラムとモデルの違いは何でしょうか? 言語定義の厳密さレベルの違いもありますが、プログラムはコンパイラやインタープリタを使い実行できます。 OMGでもExecutable UML的な検討が長年行われていますがまだ時間がかかるようです。 もしこれが出来ればUMLもプログラミング言語に昇格し、UMLモデルはUMLプログラムと呼ばれるのでしょうか? そうかもしれませんが、現時点ではモデルはモデルであり、どうしてもそれをプログラムに対応付ける作業が必要で、人が頭の中で補完しながら変換して行くのが従来型の開発作業で、ある程度は(本当は出来るだけ多く)自動化したいというのがモデル駆動の基本的な考え方だと思います。 文法規則を決めて書かれたテキストモデルの場合も同様で、そのテキストは文法規則に従って解釈できる訳ですから、その文法とテキストを入力として対象プログラミング言語・対象インフラ環境をターゲットとしたマッピングを行えば良いだけです。 言うのは簡単ですが、実際にはモデリング言語やマッピング対象の多様性を考えると、なかなか標準的なものになりそうもないという印象を受けます。

4 DSL: 現実解の一つ(Xtext)

UMLを使ってもうまくMDDの流れに乗せられないとすれば、別の方式にも目が向きます。 UMLを使うMDAがまだ普及に至っていないのは、UMLの仕様自体の複雑さに起因しているのではないかという気がします。 仮にそうだとするともっとシンプルな方式の方が現実的かもしれません。 DSL、それもグラフィカルDSLではなくTextual DSL(何故なら、グラフィカルDSLの作成がそれ程容易でないため)、そしてInternal DSLではなくExternal DSLが良さそうです(こちらについてはご意見がありそうですが)。 この方向のツールにはXtext、MPS、Oslo M言語などがありますが、関連情報の入手のし易さとプラットフォーム非依存という観点からXtextが有力候補になります。 Xtextは今回書いているDSL設計、DSLに基づくエディタ、コード変換などがパッケージになっています。 Xtextが究極の解かと問われると独自仕様部分が多くまた競合製品・プロジェクトもありそこまでは言えませんが、現時点ではオープンな世界でかなり実用的に使えるものです。

モデリング技術は世の中に多くあるため、人により何を信じるのか異なる宗教のようなところがあります。 実際は効率よく良い結果が得られるなら何を使っても構わないとも思っています。 このポストに書いたことは「こんな見方もある」という程度でご理解下さい。

補足) 日本Grails/Groovyユーザーグループの山田さんから「Grailsプログラミングはモデリングと同じ」という見解を聞かせて頂いたことがあります。

モデリング言語とMDDについて(2)

Design Your Own DSL with Groovyについて

InfoQの記事(というかScreen Cast)で、Groovy言語についてのものです。 「Eclipse Community Awardsについて」のポストでGroovyに触れたのですが、余りご存じない方にはこういった Screen Cast も入り易いかもしれないと思いご紹介してみようと思いました。 ただちょっと時間が長い(90分程度)ため、時間のある時を見つけてご覧ください。

  1. Design Your Own DSL with Groovy

なおタイトルは Groovy で DSL を設計するというものですが、前半はGroovy 言語の説明が中心で後ろの方で DSL の話が出てきます。 ちなみに Groovy のホームページは以下にあります。

  1. Groovy
Design Your Own DSL with Groovyについて