水曜日, 8月 27, 2008

【Reflex】 ドメイン専用言語としてのReflex表現 このエントリーを含むはてなブックマーク



 何気にSeasar Conference 2008のエントリを見てたら興味ある見出しがあった。

B1: 「近」未来のプログラミング言語
Java 言語用フレームワークではアノテーションの活用が当たり前になりました。アノテーションによって、我々は XML 地獄からぬけだして、簡単にプログラミングできるようになりましたが、気づいたらそこはアノテーション地獄でした。天国への蜘蛛の糸は「ドメイン専用言語」といわれていますが、本当でしょうか?


 ドメイン専用(特化)言語はよく知らないので、もう少し調べてみる。

ドメイン特化言語(DSL)

(前略)・・言語の文法を定義し、コード生成機能を使ってDSLから汎用的な言語を生成する、あるいは、そのDSL用のインタプリタを書くことです。こういったことを簡単にするツールがUnixにはたくさん揃っています。こうしたDSLのことを私は「外部DSL」と呼んでいます。 XML設定ファイルも外部DSLのよく知られた形式の1つです。・・(中略)・・
私はいつもDSLを作成するのと似たようなことを、設計を肉付けする際に行っています――クラスやメソッドがDSLとなるように開発するのです。できることなら、そのとき使っている言語でこれをやりたいのですが、もしできないならできないで、コード生成を使うことになるでしょう。


 これはドメインを定義してモデルを自動生成することで生産性を上げようという話かな。私は、XMLの特性が生かせるのは、WSDLのようなAPI記述ではなく、ドメイン記述かもしれないと考えているので、基本的に賛成である。しかし、ドメイン記述に使ったのはいいけれども、その複雑さによりXML地獄をもたらしてしまった。そういう意味では、XMLSchemaもRelaxNGも同罪だ。

 しかし、JSONとRESTであればうまくいくように思える。

 複雑さはJSONおよびRESTfulに設計することで解消し、CoCによりDSLを作成するのと同じことができるようになる。具体的な私の解は、VTECメソッドを用いてRESTfulに設計し、4つのCRUD APIを実装する。そして、Reflex表現を使ってドメインクラスを自動生成することである。

<関連>
リソースの実装
自己完結したデータの集合
Reflex Entity Editorを公開

0 件のコメント:

 
© 2006-2015 Virtual Technology
当サイトではGoogle Analyticsを使ってウェブサイトのトラフィック情報を収集しています。詳しくは、プライバシーポリシーを参照してください。