Grailsでシステムを作る感覚/山田さん
本エントリは、エントリJJUG CCCいってきましたの一つです。セッションを聞いてのメモ書きです。元の発表資料:BOFB-1-4.pdf
ドメインとは
- ドメイン=支配。同じ宗教を持った人の国。同じ性質を持ったものの集合。
- 典型的なドメイン3つ:
- (1) 問題ドメイン(何かを売りたい)
- (2) 解決ドメイン(ソフトウェアをどう作ればいいか,ハードは、認証は、技術)
- (3) プロセスドメイン(開発プロセス)
開発者の仕事は(1)と(2)の橋渡し。Javaを書くからお金がもらえるのではない。
(1)を(2)に変換するという仕事。
- Grailsで開発するときに最初にすること:ドメインを見つける。
- (1)ワークフロー,組織構造
- (2)データ構造、画面遷移
- (3)テスト方法、構成管理
- アプリケーション固有のドメイン
何を対象とするの?という話。
ドメインを表す言語(DSL)を作ろう
-
- 概念クラス(ドメインクラス、モデル)はGrails組み込みで用意されている
- ワークフローは作らないとならない。
- マスタ画面テストは概念クラスの言語を流用できる?
- 「DSLを作る」=ドメインを定義する、ということの具体的な形。
- DSLは組み合わせられる。概念クラスを定義するためのDSLに制約やORMのDSLを組み込める。
DSLによる仕様と実装の分離
- DSLは実装方法を含まない。「What」しかない。実装方法、すなわち「HOW」は、
- できたDSLの処理系を使って、「仕様をコンパイル」して実システムを作る。
- 「what+how+アダプタ」=プラグイン
- プラグイン分類(MDAを参考に):
- プラットフォーム独立プラグイン
- プラットフォーム特化プラグイン
- システムを作る=ドメインを作りくみあわせる
- 現実の問題に近いドメインは再利用しやすい(本当か?)
DSLを介して役割の分担が実現される
-
- 言語仕様(DSL仕様)設計
- 言語処理系(プラグイン)の実装
- 業務を記述する(ドメインを書き下す)
- システムを構築する(ドメインを組み合わせる)
[感想] Grailsについて、自分にとって新たな 視点で大局的概観が得られた。こういう話がで きるのは今、山田さんならでは。 ただ、現実と理想は違うとは思うけど、 理想の話も重要。理想の話が重要。