uehaj's blog

Grな日々 - GroovyとかGrailsとかElmとかRustとかHaskellとかReactとかFregeとかJavaとか -

Grailsはなぜ画期的か

Grailsって何が画期的なの、という質問を受けたので答えてみます。

Grailsが画期的なのは、以下の順序で開発を進められるからです

  • (A1) 業務ロジックを表すために、必要最低限な記述形式を考える
  • (A2) それをそのまま実行するための仕組みを、MOP(Meta Object Protocol)、プラグイン、DSL、GSPタグ、・・で作り上げる。(そのための定式化された仕組みがアーテファクト)
  • (A3) その記述形式で業務ロジックを書きくだす
  • (A4) 実行する

WEB+DBシステムの基本部分に関しては、(A1)(A2)が既にできてると思ってください。やることは(A3)(A4)だけです。(A1),(A2)は同種システムに対して共有できるので、2回目以降の同種システムの開発では省略可能です。

これに対して、従来システムでは以下の様になります。

  • (B1) 業務ロジックを表すために、必要最低限な記述形式を考えることはできないので、とりあえずUMLを使うとする。
  • (B2) UMLで論理モデルを書き下す
  • (B3) 必要に応じてUMLで実装モデルに書き直す
  • (B4) さらに実システム上で動作させるために、フレームワークなどの都合に合わせて、JavaやXMLなど既存の言語や記法で、既存の実行基盤の実装都合に合わせて全面的に書き直す。このレベルでは、最低限記述とか抽象性とか重複をなくそうとか、そういう希望よりも、実装都合(こうなってるからここに書かなければならない、Javaだからこう書かなければならない、など)が優先される。
  • (B5) 実行する

この場合、各ステップは、何回開発を繰り返そうとも、基本的には省略できません。

このように、Grailsの提供する開発は、(A1),(A2)を含めて考えると従来開発とはまるっきり別次元のもので、開発技法として高度に別物です。とはいえ、(A3)(A4)だけを見れば、Railsレベルと同じでとっつきやすいでしょう。(特にJava屋にとっては)

なお、MDAの夢を見た人は、(A2)「必要最低限な記述形式」を処理する仕組みを作り上げる、というステップが、MDAにおけるメタモデルの作成に他ならない、ということに気づくでしょう。

                    • -