«前の日記(2019-07-22) 最新 編集

tueda's diary


2019-09-01 tueda's diary

_ blancoValueObject 2.0.4 リリース

上田版 blancoValueObject 2.0.4 をリリースしました。オレオレ mavenリポジトリはgithub上に用意されています。

https://github.com/uedaueo/blancofw-maven2

2.0.4での 変更点

  • Maven でのビルドに対応
  • 生成コードの出力ディレクトリの自由度の向上
    • targetdir=blanco と設定した場合
      • targetStyle=blanco : blanco/main
      • targetStyle=maven : blanco/main/java
      • targetStyle=free : blanco (targetdir に書かれた通り)
  • php スタイル定義書からの生成機能の向上
    • datetime 型に対応 (java.util.Date型に変換)
    • デフォルト値に対応 (datetime型は未対応)
    • toString メソッドの自動生成に対応

maven で使う

maven プロジェクトで使う場合は、このへんを参照してください。基本的には

<execution>
	<id>blanco-meta-valueobject</id>
	<phase>generate-sources</phase>
	<configuration>
		<target>
			<taskdef name="blancovalueobject"
 			classname="blanco.valueobject.task.BlancoValueObjectTask"
 			classpathref="maven.runtime.classpath">
			</taskdef>
			<blancovalueobject metadir="meta/objects"
 			encoding="${project.build.sourceEncoding}" sheetType="php" tmpdir="tmp"
 			targetdir="blanco" targetStyle="maven" verbose="true" />
		</target>
	</configuration>
	<goals>
		<goal>run</goal>
	</goals>
</execution>

とう設定で generate-sources フェーズを実行すれば、プロジェクト直下の meta/objects というディレクトリ下においた Excel 定義書を読みに行って、blanco/main/java の下にコードをはき出してくれます。

gradle で使う

オレオレmavenリポジトリを参照して、gradle で問題なく使用できる事を確認しました。

  • build.gradle に追記・編集
repositories {
    mavenCentral()
    jcenter()
    maven {
        // blancofw用
        url 'https://raw.github.com/uedaueo/blancofw-maven2/gh-pages/'
    }
}

dependencies {
    // blanco 関連用に追記
    compile 'blanco.anttask:blanco-anttask:[2.0,3.0)'
    compile 'blanco.batchprocess:blanco-batchprocess:[2.0,3.0)'
    compile 'blanco.commons.io:blanco-commons:[2.0,3.0)'
    compile 'blanco.cg:blanco-cg:[2.0,3.0)'
    compile 'blanco.valueobject:blanco-valueobject:[2.0,3.0)'
    compile 'blanco.constants:blanco-constants:[2.0,3.0)'
    compile 'blanco.meta2xml:blanco-meta2xml:[2.0,3.0)'
    compile 'blanco.resourcebundle:blanco-resourcebundle:[2.0,3.0)'
    compile 'blanco.xml.bind:blanco-xmlbinding:[2.0,3.0)'
    compile 'org.apache.ant:ant:[1.9.7,2.0)'
    compile 'org.apache.poi:poi:3.13'
    compile 'org.apache.poi:poi-ooxml:3.13'
    compile 'org.apache.poi:poi-ooxml-schemas:3.13'
    compile 'org.apache.poi:poi-scratchpad:3.13'
    compile 'org.apache.xmlbeans:xmlbeans:2.6.0'
}

task meta {
    doLast {
        ant.taskdef(name: 'blancovalueobject',
                classname: 'blanco.valueobject.task.BlancoValueObjectTask',
                classpath: configurations.compile.asPath
        )
        ant.blancovalueobject(metadir: "${projectDir}/meta/objects",
                tmpdir: "${buildDir}/tmp2",
                targetdir: "${projectDir}/blanco",
                targetStyle: "maven",
                sheetType: 'php',
                encoding: getProperty("blanco.encoding")
        )
    }
}
  • gradle.properties に追記
blanco.encoding=UTF-8
  • 自動生成
./gradlew meta

blancoValueObject とは

blancoValueObject は Excel の定義シートで定義したオブジェクト仕様書から ValueObject (JavaBeans) のソースコードを自動生成する、blanco Frameworkの中核をなすツールです。

仕様書として納品できる完成度の定義書から直接 Java のソースコードを生成しますので、定義書とソースコードの乖離が発生することがありません。そしてもちろん、ソースコードを見るより定義書を見る方が仕様や定義の見通しが良いので、「仕様のバグ」の発生も防ぎやすくなります。

とても便利なツールであり、本家のigapyonさんが業務系の大規模プロジェクトで相当な実績を積まれている、超安定優良オープンソースソフトウェアなのです。(惜しむらくは業務系なので実績のほぼすべてが「事例」として公表できず、世間的な認知度はイマイチなのですが(;´Д`))

もうひとつ、igapyon さんが開発を始められたのが2005年。当時の開発スタイルは、必要な jar を手動で開発環境に集めてきて、ant でビルド〜テスト〜デプロイまですべてを build.xml に定義して行うというもの。いわゆる「CI=継続的インテグレーション」を可能とするツールの走りで、我々もantによる開発環境の自動化というのは(CIなんて言葉が流行るより前から)散々にやってきたのですが。

しかし現代の開発スタイルから見ると、非常に残念な事に、

開発環境の構築とメンテがめんどくせ〜(;´Д`)

というのが、本音でした。開発環境さえ構築してしまえば今で言うところのCI自体は走り出すのですが、そこに至るまでが大変。またライブラリが更新されたりするとその対応は手動でしないといけません。そこで

mavenリポジトリに対応

ですよ。依存関係とバージョン指定を含めてライブラリを自動でとってこれる。バイナリで取ってくるので、相互依存しててもだいじょうぶ。mavenリポジトリすげぇ。

まだすべての blancoFramework に対応はできていませんが、ここに置いてある分は maven リポジトリに対応しています。pom.xml か build.gradle にリポジトリURLと依存関係を書いて頂ければ、すぐに使えます!

まだmavenリポジトリ対応が終わっていないものとしては

  • blancoDb
  • blancoRest
  • blancoValueObjectPhp
  • blancoDbPhp
  • blancoRestPhp

など、非常に実用的かつ便利なものが残っています。なるはやでこれらも対応していきたいと思います。

mavenリポジトリ化によって、blancoFramework 自体の開発も随分楽になりました。以前は依存関係を揃えるのが大変だったのよ、、、blancoの中でいろいろ相互依存してるし…実はmaven化した真の目的はblanco自体の開発を楽にしたい為だったりw。

この機会に「オレもオープンソースソフトウェアの開発がしてみたい」という勇者が現れて、残るツール類のmaven化を進めてくれることを、切に希望しています(;´Д`)


総訪問者数: 本日の訪問者数: 昨日の訪問者数: