多様化するソフトウェア開発自動化
ソフトウェア開発自動化といえば、以前はソースコード自動生成のことを指すことが中心でしたが、最近はJenkins参考1やMaven参考2等を使ったビルド自動化、JsTestDriver参考3やSelenium参考4等を使ったテスト自動化を含めて、3つの領域ができています。
図1:ソフトウェア開発自動化の3つの領域
ソースコード自動生成も多様化
ソースコード自動生成だけを見ても、従来のやり方(つまり、エクセルで書かれた設計書や、Eclipseなどのウィザードやエディタからソースコードを自動で生成すること)とは少し毛色が異なる方法が出て来ています。例えば、Scala参考5、Groovy参考6、Xtend参考7等です。それぞれの言語で書かれたソースコードを元に、Scala、GroovyはJava VM上で動作するバイトコードを自動生成し、XtendはJavaのソースコードを自動生成します。Scala、Groovy、Xtendは生産性を高める事を目的とした言語になっており、Javaと同様の汎用性は残しつつも、よりすっきりとしたコードを生成できることが特徴です。いわばJavaの拡張版と言えるでしょう。
図2:Scala、Groovy、Xtendの位置づけ
Xtendの使いどころ
XtendはXtext参考8と組み合わせることで、Xtextで作成したDSL(ドメイン特化言語)に対応するコードジェネレータを作成することができます参考9。また、Xtend単体での利用も可能で、メソッドの戻り値定義やreturnの省略、lambdaの利用などにより、Javaよりすっきりとしたコードを書くことができます。既存のJavaベースの開発スタイルと共存が可能です。
技術の選択とバランス
ソフトウェア開発自動化における生産技術は多様化しており、システム開発プロジェクトにおける技術の選択がポイントとなってきます。ここで、既存開発スタイルや既存コードの移行観点から、最先端技術は常にベストな解というわけではありませんし、生産性が低くあまりにも陳腐化した技術を使い続けるというのも同様です。その中で、Scala、Groovy、Xtendは言語としての優位性を持ちながら、Webアプリケーション開発のデファクトスタンダードであるJavaのVM上で動作するコードを記述できるため、注目されている技術です。
参考文献
- 参考1Jenkins(外部リンク)
- 参考2Apache Maven(外部リンク)
- 参考3JsTestDriver(外部リンク)
- 参考4Selenium(外部リンク)
- 参考5Scala(外部リンク)
- 参考6Groovy
- 参考7Xtend(外部リンク)
- 参考8Xtext(外部リンク)
- 参考9特定システム特化型の自動化技術