blancoCg 1.4.3 がリリースされていました
blancoCgの最新版(1.4.3)が11/07にリリースされていました。
blancoCgというのはオープンソースなコード自動生成フレームワーク
「blanco Framework」内のプロダクトの一つです。
Velocityのように自動生成コード+テンプレートファイル
形式ではなく、全てJavaを使って書いていきます。
例えばメソッドを生成させたい場合、
final BlancoCgMethod cgMethod =
_cgFactory.createMethod("メソッド名", "メソッドの説明");
上記のように「BlancoCgMethod」というblancoCgのクラスの
インスタンスを作ります。
この場合は「メソッド名」という名前のメソッドが作成され、
メソッドコメントに「メソッドの説明」という文字列が
生成されるようになります。(詳細な使用方法はこちら)
メソッドの他にも「クラス」「フィールド」など
各粒度ごとにクラスが用意されており、
それらを組み合わせて自動生成コードを書いていきます。
以前関わっていたプロジェクトで使ってみたことがあるのですが、
その時の感触としては
- 便利だった点
- 不便だった点
- できあがる出力コードのイメージがつかみづらい
- blancoCgが対応していないコードは作れない(当たり前ですが(^^;)
最後に挙げた点は結構痛い部分で、
例えば.NETの新しい機能を駆使した(Linqとか)コードを出力させたい場合、
テンプレート型ならテンプレートをそのように書き直してやればいいのですが、
blancoCgの場合はblancoCgのC#用機能が対応していなければ
作ることができません。
(この問題とも少〜しだけ絡むのですが、
blancoCg 1.4.3では、半年ほど前にMLで提案させていただいた
- 多次元配列の生成
- C#コードの場合、メソッドにはデフォルトで「virtual」を付ける
について対応されています。)
とはいえ、この部分はメリットと表裏一体となっているところでもあるので
「出来ないことは出来ない」という点さえ踏まえて設計すれば
気にしすぎる必要はないかと思います。
MLが少々静か、コミッタの数が少なそう(アクティブな方は実質お一人?)、
という気になる要素もありますが、
コード自動生成ツール作りをする際の選択肢としては
十分になり得ると思います。