最新 追記

tueda's diary


2019-06-14 tueda's diary

_ blanco Framework を Maven repository 化

blanco Framework は、igapyonさんを中心に開発・保守が続けられている、ソースコード自動生成フレームワークです。

blanco は、納品物として通用するレベルのExcelシートに定義書を記述すると、各種言語のソースコードを出力します。

  • 納品する定義書から直接ソースコードを生成するので定義書とソースコードの乖離がない
  • 自動生成なのでソースコードの品質が揃う
  • 生成されたソースコードを動かすための専用ランタイムは不要
  • しかも吐き出せる言語の種類が多い(Java, C#, PHP, Delphi, Phython, ruby, Javascript, vb ... 言語の追加も割と簡単)

というのが特徴(と書いてウリと読む)です。

残念ながらプログラマ業界ではExcelシートを悪弊と考えるひとが多いので、発表するたびに苦笑されたり眉をひそめられたりしますが、実は某大手SIerでも長らく使われているような、普通に使うことだけを考えれば、ちょっと、いや結構良い感じのツールなのです。

blanco 自身をビルドするのが大変

しかし実はこの blanco Framework には、少し困ったクセがあります。

それは、blanco Framework の各ツールをビルドするために、そのツールの過去のバージョンが必要なこと。blanco Framework を構成するツール自身が Excel シートから生成されたソースコードを使っているため、blanco Framework に手を入れるためには、ツール間とツールのバージョン間の依存関係が非常に煩雑になるのです。ほとんど自家中毒な感じ。

まあ、ソースコードを自動生成するというのはつまり、ある意味コンパイラを作るのと共通する要素があるわけで。コンパイラとか作るような人なら

「古いバージョンで新しいバージョンを作るなんてあたりまえじゃん」

という事になるのですが…業務系ツールで、ツール自身に手を入れたいときにこの煩雑さはちと厳しいなあ、といのが正直なところ(苦笑)

Maven repository

Java 界隈ではビルドツールはもう ant どころか、gradle が標準となりつつあるのですが、blanco は実は、anttask ドリブンですw 各ツールは anttask として実装されていて、ant から起動されて Excel シートを読み込みます。(ちなみにこの anttask も Excel シートで定義されて Java コードが自動生成される)

で、3年程前に、igapyon さんが何を思い立ったのか、突然 blanco の Maven repository 化を始めました。最初は

「中途半端にディレクトリ構造変えたら、メンテがさらにめんどくさくなるやん〜」

とか思ってたのですが(ゴメン)、最近また blanco に手を入れる必要が出てきまして。手をいれるなら、同じく3年程前に実施した xlsx 拡張子の Excel への対応を全 blanco に入れたいな〜と思いました。(実はまだ xls 拡張子の Excel ブックしか読めない子がいた)

で、うちのforkとigapyonさんち(本家)の状況を見てて、このライブラリ間の相互依存、バージョン依存関係に絶望感がハンパなく…

「そうだ、Maven にしよう!」

Maven Repository にすれば

  • ソースコード生成に必要なjarファイルを Maven Repository で一括管理できる
  • 自分自身の過去のバージョンも、Maven Repository で管理されてるので深く考えずに次のバージョンが作れる

じゃないか!

ということで、つくりました。

igapyonさんが作ってくれてたのを fork して、

  • xlsx 対応
  • maven で clean 〜 package, deploy まで一気通貫ビルド(一部)

できるようにしました。ここのを使ってくれれば、いままでみたいに lib ディレクトリにどの jar を入れれば良いんだ?とか悩まずに、xlsx に対応できます。Maven Repository なので、gradle からも使えます、たぶん。もしかしたら、sbt からでも使えるかも。知らんけど

なお、ドキュメントを書いてる時間はありません。興味がある方は、既に Maven で一気通貫ビルドに対応している、以下のリポジトリを見て下さい。

残りもなるはやで、一気通貫ビルド化する予定です。

「これどうやって本家にmergeするんや」

というのが近い将来の悩みになりそうですが、今は何も考えない事にします(;´Д`)


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