DSL
Model-Aware Generation †
一言要約 †
コードを生成する際にモデルを意識することで、汎用的なものと特殊なものを分離させる。
要約 †
- 生成されたコードの中にセマンティックモデルを何らかの形で持ち込むことで、コードの中で汎用的なものと特殊なものを分離させた状態を保つ。
仕組み †
- 重要なのは汎用と特殊を分離させることで、モデルは肖像でよい。
- 対象となる環境によって制限されるため、意味モデルをそのまま表現するのは難しくなる。
- モデルの肖像(肖像モデル)にシンプルなAPIを持たせ、コードの生成によってそのAPIを使用するコードを作る。
- こうすることで、生成されたコードに対するテストも容易になる。
使いどころ †
- モデルを意識しない生成に比べると、テスト・構築・保守が容易
- 対象となる環境によって制限されていると難しいこともある
- DSLをフロントエンドとして使用していれば、それはモデルを意識した生成と言える
- ステートマシンコードを生成するパターン
- ステートマシンを動的にロードするパターン
ファウラーへのフィードバック †
担当者のつぶやき †
- どうするか、よりも結果としてどうなるかに主眼が置かれたセクション。
- 実際にはどうやって生成するかの方が興味ありますよね。
みんなの突っ込み †