SHOEISHA iD

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

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

developerWorks Liaison(AD)

Web系開発のトレンドを牽引する
「IBM ソフトウェア・テクノロジー情報」(後編)

  • このエントリーをはてなブックマークに追加

 IBM のエバンジェリストや研究者達が運営するWiki「IBM ソフトウェア・テクノロジー情報」では、クラウドコンピューティングやマッシュアップ、Ajax、Web 2.0、アジャイル開発といったWeb系を中心とした技術情報を提供している。シリーズの後編となる今回は、須江氏によるGroovy、および、第1回に続き米持氏にIBMで扱うテクノロジーのポリシーなどについて語っていただいた内容を紹介する。

  • このエントリーをはてなブックマークに追加

Javaと親和性が高く、アジャイルな開発に適したスクリプト言語

 「Groovy」は、JavaのVM上で動作するスクリプト言語であり、Javaのクラスファイルをそのまま使用するほか文法もほぼ同じであるなど、Javaと密接な関係にあることが特徴となっている。このためJavaからの移行がしやすく、その上Groovyで新たにサポートされた機能や文法を使用することで、可読性が高くすっきりしたコードを記述することができる。また、スクリプトであるためコンパイルの必要がなく、ソースコードを書いたらすぐに実行できることからアジャイルな開発に適している。

ソフトウェア事業 WebSphereテクニカル・セールス アドバイザリー・テクノロジー・エバンジェリスト 須江信洋氏
須江氏:Groovy

 Groovyは、JavaのエキスパートであったJames Strachan氏とBob McWhirter氏らによって開発がスタートされた言語だが、これにはユニークなエピソードがあると須江氏はいう。「James Strachan氏が夫婦で海外旅行に行った折に、空港で奥さんがひとりで買い物に行ってしまい、時間をつぶすためにネットカフェでPythonの勉強をしたそうです。しかし、わずかな時間でJavaに欠けている機能に気づき、Javaをベースにいろいろな機能を追加して生産性を向上することを目的に開発を始めたのがGroovyだったのです」。

 Javaは優れたプラットフォームであり、使いやすくパフォーマンスも高いことからエンタープライズでのスタンダードとして普及している。また環境面でも優れており、エンジニアの層も厚くノウハウも蓄積されている。しかし、普及しているがために仕様の変更が難しく、しばしば論争が起きる上に実際の拡張には多大なコストがかかってしまう。このため最近では言語仕様の面で古さが目立ってきており、コーディングの冗長性などにおける制約も多く、改善の必要性が高まっている。

 そこでデベロッパの世界では、Javaの優れたプラットフォームを生かしつつ、先進的な言語仕様を取り入れて開発効率や生産性、使い勝手を向上しようという動きが高まった。現在、最も成功していると言えるのはJRubyであるが、Groovyもこうした流れから生まれた言語の一つである。Groovyはその後JCP(Java Community Process)に提案され、「JSR 241」として標準化されている。James Strachan氏の多忙によるプロジェクトリーダー交代や、JSR化に際しての大幅な言語仕様の見直しなどにより、GroovyプロジェクトそのものやGroovyの普及が一時的に停滞した時期があった。しかし、現在のGroovyは、仕様も安定し、JavaにPythonやRuby、SmallTalk、JavaScriptなどの動的な要素を取り込み、Javaでは対応の弱い部分をカバーしたバランスの良い言語となっている。

Groovyのサイト
Groovyのサイト

 Groovyに注目する理由として、須江氏は「文法がJavaに近いこと」「Javaの資産がそのまま使えること」を挙げている。Groovy上で扱うクラスはJavaのクラスそのものであるため、JRubyやJythonなどと異なり、例えばRubyの文字列やPythonのリストとJavaクラスとの使い分けといった煩雑さがなく相互運用性が高い。また、Groovyの利点としてリストやマップ、XMLといったコンプレックスデータを扱うためのリテラルが言語仕様として用意されていることが挙げられる。また、Javaの機能にはない動的なメソッドの呼び出しをJavaのクラスに適用することもできるため、例えばJavaのStringにGroovy側で自由にメソッドを追加して、Javaクラスを拡張することができる。

 さらにGroovyの特徴的な機能に「ビルダー」がある。これはGoFのBuilderパターンを実現するために作られたもので、見通しのいい書き方で構造を持つオブジェクトを組み立てることができる。例えば、XMLをJavaで作ろうとすると、最初にファクトリを作り、そこからDOMインスタンスを作り出して要素を追加していくという作業が必要で非常に面倒だが、GroovyではXMLを作成するための「マークアップビルダー」を使うと、XMLをクロージャの「入れ子」で表現して要素を追加できる。このためXMLの完成品をイメージしやすくなっている。このようにビルダーを使うことで、構造物をシンプルに作成できる。

 Groovyを応用した典型的な事例には、フルスタックWebフレークワークであるGrailsがある。Grailsは多くのコンポーネントの組み合わせで構成されており、このつなぎ目にGroovyを使用するというものだ。Grailsの基盤としてはSpringとHibernate、SiteMeshといったフレームワークが利用されているが、その上にGroovyの薄いラッパーをかぶせて基盤部分の複雑さを隠蔽している。これによって既存のJavaEEアプリケーションサーバーで稼働させることのできる、可用性の高いアプリケーションを容易に作成できる。また、GroovyはIBMのProject Zero(WebSphere sMash)にも採用されている。つなぎ目の「のり」として使えるため、サーバサイドでのマッシュアップのアジャイルな開発に適している。Javaをベースとしているため、堅牢性の高いSOA環境との接続にも有効だ。

 最後に、現状のGroovyにおける課題についてうかがうと、「Groovyは、JavaScriptと同じで歴史的に若いソフトウェアであり、開発環境がまだ十分こなれていないことが挙げられます。特に、IDEの作成がコンピュータサイエンス的に難しく、これは動的言語であるが故に、IDEが動的なコンテキストもしっかり理解する必要があるからです。ただし、これらの状況は徐々に改善されてきており、Groovyランタイムのパフォーマンスの面でも向上してきました。後は、まだマイナーな言語なので知名度を上げていきたいです。日本のコミュニティも少ないので、活性化するといいな、と思います。これはGroovyに関する日本語の情報が少ないためもありますが、最近『Groovyイン・アクション』という書籍も出ました。実はこの本の翻訳に参加しています。ぜひGroovyにも興味を持って、コミュニティなどにも参加して欲しいと思います」。

次のページ
ユニークなチーム編成で幅広い情報を発信

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

  • このエントリーをはてなブックマークに追加
developerWorks Liaison連載記事一覧

もっと読む

この記事の著者

吉澤 亨史(ヨシザワ コウジ)

元自動車整備士。整備工場やガソリンスタンド所長などを経て、1996年にフリーランスライターとして独立。以後、雑誌やWebを中心に執筆活動を行う。パソコン、周辺機器、ソフトウェア、携帯電話、セキュリティ、エンタープライズ系など幅広い分野に対応。

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

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3327 2008/12/03 08:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング