Groovyで置き換える
Tuscanyに対する思い入れからつい前置きが長くなりました。それでは、Groovyへの置き換えを説明します。Jythonに詳しい方はぜひチャレンジしてください。当連載ではJRubyとGroovyを扱いますが、Jythonに詳しい方は是非チャレンジし、他の言語と組み合わせることの容易さを実感して頂ければと思います。
Groovyの場合、ほとんど悩むところがないと言っていいでしょう。Integerとプリミティブなint型の変換も自動で行ってくれるし、java.util.Calendarクラスもimportすることなく使えます。型変換については静的変換か動的変換かを選択できるため、非常に柔軟なコードが記述できます。図1がCalcChargeサービスを実装したCalcChargeImpl.groovyです。前回紹介したJRubyとほとんど変わらないことにお気づきになったかと思います。JRubyよりもさらにJavaとの親和性が高いため、前回悩んだようなorg.jruby.Arrayをintの配列にする方法などで悩むこともありません。

Javaから他の言語に置き換えるという意味での難易度をあえてつけるとすればJython > JRuby > Groovyといったところでしょうか。当然、Groovyがjavaの資産を置き換えるという意味では非常に楽です。ただし、既存資産があるのであればこの順序に関係なく再利用できるため、あえて作りなおすということも不要です。再利用できるものがあるのに、あえて他の言語に置き換えるのかという判断は、プロジェクトの多様な観点から評価し下すべきものです。
コンポジットファイルの変更
図2と前回のJRubyのコンポジットファイル図3を比較してください。CalcChargeコンポーネントの実装クラスをCalcChargeImplという名称に統一した場合、何の言語であるかを示す拡張子を変更するだけなのです。筆者はプロトコル中立というだけでTuscanyを仕事仲間に宣伝していたわけですが、言語中立ということを確認した時点で、これは仕事仲間に係わらず実例を持ってTuscanyを開発されているコミュニティの方たちを差し置いて公に示す必要があると判断し、当連載を企画した次第です。
改めてTuscanyとは何か
以前に触れたとおり、Tuscanyはオープンソースフレームワークですが、フレームワークという分類がないため、当連載では「開発ツール」として分類しています。フレームワークとしての軽快感、直感的な理解の容易さなども今まで読まれた方には納得いただけたのではないでしょうか。フレームワークとしても申し分ないものがありますが、さらに開発ツールとしての使い方も可能であると筆者は考えています。Tuscanyの潜在的な能力は、開発ツールとして位置づけても恥じないものがあります。Atom、JSON、さらにSOAの通信プロトコルの中心としてのWebサービスに至るまで、入門レベルの知識さえ身につければ、コンポーネントを組み合わせることが可能なのです。また、コンポーネントもJava以外にJRuby、Groovy、Jythonで作成できます。まさしく、レゴブロックとしてのコンポーネントが現実となり、私たちはその組み合わせを考えることにより、アプリケーションの作成が可能となったと言えるでしょう。Tuscanyがさらに多くの言語をサポートするようになることを願うばかりです。
今回もサンプルコードをトップページに置いていますが、第7回と差異があるものだけを置いています。今回、初めて読まれた方は第7回のサンプルコードをダウンロードしてください。前回ダウンロードされた方は、CalcChargeImpl.rbをCalcChargeImpl.groovyに置き換えてください。コンポジットファイルについては、CalcChargeImplの拡張子を.rbから.groovyに書き換えるか、サンプルコードのwineshop.compositeファイルを置き換えてご利用ください。


