Javaにはウィザードが必要

Ruby on RailsC++のウィザードのようなものだというのをhttp://secure.ddo.jp/~kaku/tdiary/経由でみたけど、これは逆にいえば、Ruby on Railsと同じような簡単さをJavaで実現するためにはJavaにもウィザードが必要ということになります。
で、「そのためにNetBeansはいいですよ」というのが、今回のJavaOneでのプレゼンの後ろ半分でした。


ちなみに前半は要約すると「買ってね」という話( ̄▽ ̄)
Javaの教育についての話だったんだけど、そこで認識した問題点という話で、それを解決するために本を書いたんだから、そういう話になっちゃうわけです。


で、ウィザードの話。
たとえば、Javaフレームワークは試してみるのがまず面倒。
ということで、NetBeansにはサンプルプロジェクトが簡単に作れる仕組みがありますよ、と。例として無設定Strutsのサンプルウィザードを作ってみました。デモでは、ここから作成したプロジェクトを「実行」して少ない手順で動くことを見せました。これは作成手順のデモもやりたかったんだけど、時間がないので飛ばしました。時間がないといっても、マシンがもう少し速ければできたのに、とかそういうレベル。


あと、じゃあ実際のプロジェクトの場合は?ということで、NetBeansには「Webフレームワーク」という仕組みがあって、これを使うとWebアプリケーションにフレームワークを組み込むウィザードを作れます。で「無設定Struts」もフレームワークとして表示させるようにしてみました。今の時点ではこのウィザードはデモ用の飾りなので、「OK」してもなにも起こりません。


もちろんActionのウィザードも作っています。


これはとりあえずちゃんと動きます。ま、所詮デモ用ですが。


こういったウィザードを作るときに、新規作成はいくらでもできるんだけど、作成したものを変更するというのが作りにくかったのですが、EclipseのJDTやらNetBeansのJavaLanguageModelなどを使えばJavaソースをオブジェクトとして操作できるし、アノテーションのおかげで別ファイルのXMLを解析する必要もないので、かなり楽になったという話をしようと思ったけどタイムオーバー。
繰り返しやらないといけないようなコードは、ウィザードにしてしまえというのがメタプログラミングのひとつの形というところまで続けたかったんだけど。


ところでメタプログラミングというと、今まではMDAでコーディング工程の前にUMLから一挙大放出というイメージがあったんだけど、現実的にはウィザードで必要と思ったときに生成というのが流行るのではなかろうか、と思いました。
ここまでJavaOneで話せればよかったんですが、さすがにそこまでの時間はなく、あと、JavaOneの客層とは ずれる話なので、なんとなく話して終わらせました。
とりあえず余るでもオーバーするでもなく時間ギリギリで終わらせられたのでよしと。