SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

オープンソースApache Tuscanyで楽しむSOA

オープンソースApache Tuscanyで楽しむSOA
第8回「Groovyもサービス化しましょう」

Groovyも既存のSCAアプリケーションに組み込めます


ダウンロード サンプルコード (1.1 KB)

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の配列にする方法などで悩むこともありません。

図1.CalcChargeImpl.groovyの全コード
図1.CalcChargeImpl.groovyの全コード

 Javaから他の言語に置き換えるという意味での難易度をあえてつけるとすればJython > JRuby > Groovyといったところでしょうか。当然、Groovyがjavaの資産を置き換えるという意味では非常に楽です。ただし、既存資産があるのであればこの順序に関係なく再利用できるため、あえて作りなおすということも不要です。再利用できるものがあるのに、あえて他の言語に置き換えるのかという判断は、プロジェクトの多様な観点から評価し下すべきものです。

コンポジットファイルの変更

 図2と前回のJRubyのコンポジットファイル図3を比較してください。CalcChargeコンポーネントの実装クラスをCalcChargeImplという名称に統一した場合、何の言語であるかを示す拡張子を変更するだけなのです。筆者はプロトコル中立というだけでTuscanyを仕事仲間に宣伝していたわけですが、言語中立ということを確認した時点で、これは仕事仲間に係わらず実例を持ってTuscanyを開発されているコミュニティの方たちを差し置いて公に示す必要があると判断し、当連載を企画した次第です。

図2.CalcChargeImpl.groovyを使用した場合のコンポジットファイルの抜粋
図2.CalcChargeImpl.groovyを使用した場合のコンポジットファイルの抜粋
図3.CalcChargeImpl.rbを使用した場合のコンポジットファイルの抜粋
図3.CalcChargeImpl.rbを使用した場合のコンポジットファイルの抜粋

改めてTuscanyとは何か

 以前に触れたとおり、Tuscanyはオープンソースフレームワークですが、フレームワークという分類がないため、当連載では「開発ツール」として分類しています。フレームワークとしての軽快感、直感的な理解の容易さなども今まで読まれた方には納得いただけたのではないでしょうか。フレームワークとしても申し分ないものがありますが、さらに開発ツールとしての使い方も可能であると筆者は考えています。Tuscanyの潜在的な能力は、開発ツールとして位置づけても恥じないものがあります。Atom、JSON、さらにSOAの通信プロトコルの中心としてのWebサービスに至るまで、入門レベルの知識さえ身につければ、コンポーネントを組み合わせることが可能なのです。また、コンポーネントもJava以外にJRuby、Groovy、Jythonで作成できます。まさしく、レゴブロックとしてのコンポーネントが現実となり、私たちはその組み合わせを考えることにより、アプリケーションの作成が可能となったと言えるでしょう。Tuscanyがさらに多くの言語をサポートするようになることを願うばかりです。

 今回もサンプルコードをトップページに置いていますが、第7回と差異があるものだけを置いています。今回、初めて読まれた方は第7回のサンプルコードをダウンロードしてください。前回ダウンロードされた方は、CalcChargeImpl.rbをCalcChargeImpl.groovyに置き換えてください。コンポジットファイルについては、CalcChargeImplの拡張子を.rbから.groovyに書き換えるか、サンプルコードのwineshop.compositeファイルを置き換えてご利用ください。

修正履歴

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
オープンソースApache Tuscanyで楽しむSOA連載記事一覧

もっと読む

この記事の著者

川久保 智晴(カワクボ トモハル)

haruプログラミング教室(https://haru-idea.jp/)主宰。COBOL、FORTRANで13年、Javaを中心としたWeb開発で11年。3つしか言語知らないのかというとそうでもなく、sed/awk、Perl、Python, PHP,  C#, JavaScriptなども一時期は業...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4656 2009/12/25 11:44

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー