blancoCg 1.4.3 がリリースされていました

blancoCg最新版(1.4.3)が11/07にリリースされていました。


blancoCgというのはオープンソースなコード自動生成フレームワーク
blanco Framework」内のプロダクトの一つです。


Velocityのように自動生成コード+テンプレートファイル
形式ではなく、全てJavaを使って書いていきます。


final BlancoCgMethod cgMethod =
_cgFactory.createMethod("メソッド名", "メソッドの説明");
例えばメソッドを生成させたい場合、
上記のように「BlancoCgMethod」というblancoCgのクラスの
インスタンスを作ります。


この場合は「メソッド名」という名前のメソッドが作成され、
メソッドコメントに「メソッドの説明」という文字列が
生成されるようになります。(詳細な使用方法はこちら


メソッドの他にも「クラス」「フィールド」など
各粒度ごとにクラスが用意されており、
それらを組み合わせて自動生成コードを書いていきます。


以前関わっていたプロジェクトで使ってみたことがあるのですが、
その時の感触としては

  • 便利だった点
    • 学習コストが少ない(Javaの文法を知っていれば使える)
    • 全部Javaで書くのでeclipseなどのIDEの恩恵を受けやすい
    • 生成コードの一部(Javaならimport文やパッケージ名)をある程度最適化してくれる
  • 不便だった点
    • できあがる出力コードのイメージがつかみづらい
    • blancoCgが対応していないコードは作れない(当たり前ですが(^^;)

最後に挙げた点は結構痛い部分で、
例えば.NETの新しい機能を駆使した(Linqとか)コードを出力させたい場合、
テンプレート型ならテンプレートをそのように書き直してやればいいのですが、
blancoCgの場合はblancoCgC#用機能が対応していなければ
作ることができません。


(この問題とも少〜しだけ絡むのですが、
blancoCg 1.4.3では、半年ほど前にMLで提案させていただいた

  • 多次元配列の生成
  • C#コードの場合、メソッドにはデフォルトで「virtual」を付ける

について対応されています。)


とはいえ、この部分はメリットと表裏一体となっているところでもあるので
「出来ないことは出来ない」という点さえ踏まえて設計すれば
気にしすぎる必要はないかと思います。


MLが少々静か、コミッタの数が少なそう(アクティブな方は実質お一人?)、
という気になる要素もありますが、
コード自動生成ツール作りをする際の選択肢としては
十分になり得ると思います。