DSL / Model-Aware Generation


DSL

Model-Aware Generation

一言要約

コードを生成する際にモデルを意識することで、汎用的なものと特殊なものを分離させる。

要約

  • 生成されたコードの中にセマンティックモデルを何らかの形で持ち込むことで、コードの中で汎用的なものと特殊なものを分離させた状態を保つ。

仕組み

  • 重要なのは汎用と特殊を分離させることで、モデルは肖像でよい。
  • 対象となる環境によって制限されるため、意味モデルをそのまま表現するのは難しくなる。
  • モデルの肖像(肖像モデル)にシンプルなAPIを持たせ、コードの生成によってそのAPIを使用するコードを作る。
    • こうすることで、生成されたコードに対するテストも容易になる。

使いどころ

  • モデルを意識しない生成に比べると、テスト・構築・保守が容易
  • 対象となる環境によって制限されていると難しいこともある
  • DSLをフロントエンドとして使用していれば、それはモデルを意識した生成と言える

  • ステートマシンコードを生成するパターン
  • ステートマシンを動的にロードするパターン

ファウラーへのフィードバック

担当者のつぶやき

  • どうするか、よりも結果としてどうなるかに主眼が置かれたセクション。
  • 実際にはどうやって生成するかの方が興味ありますよね。

みんなの突っ込み