(原文) Getting Groovy (and Grails) - The Gr8 Conference: Groovy Usage Patterns

Gr8カンファレンス: Groovy利用パターン


カンファレンスの出席者のほとんどは、実際のプロジェクトでGroovyやGrailsを使いたいと願っていますが、多くの企業ではまだ評価段階にあります。Dierk Konigは、彼のセッションの中で「顧客のプロジェクトにGroovyやGrailsを導入するにはどんなやり方があるでしょうか」という質問に答えようとしました。彼は、プロジェクトにGroovyやGrailsを導入するための7つのよくあるパターン:super glue、liquid heart、keyhole surgery、smart configuration、unlimited openness、house-elf script、prototype を見いだしました。

1. Super Glue (万能接着剤)

Javaは完璧なインフラ層を作ります。実証済みのフレームワーク、ウィジェットセットやサービスを使えば、アプリケーションの堅牢な下位層を提供できます。スクリプトはJavaで書かれたインフラ層の上に、より柔軟でアジャイルなアプリケーション層を提供できます。フレームワーク群の持つ力をまとめ上げて、 アプリケーション全体をJavaで書く場合に比べ、より素早くカスタムアプリケーションを作りあげます。このアプローチによって、Javaをより敏速かつ容易に利用しつつ、その強さの上にアプリケーションを構築することが可能になります。また、開発者はJavaフレームワークの使用経験のすべてを活かすことができるのです。

2. Liquid Heart (液状の心臓)

これはsuper glueパターンのほぼ逆です。liquid heartを使えば、Javaで開発されたしっかりとしたアプリケーション構造を持ちつつ、ボーナス配分の計算規定のような移ろいやすいビジネスルールの実装にはGroovyを用いることができます。明確に区切られたコンテキストを設けることで、アプリケーションに固有な領域のビジネスルールを実装するためのユビキタス言語を、よりエレガントに表現するためにGroovyを使用することができます。このパターンに適した対象は、頻繁に変わる複雑なビジネスルールを持つアプリケーション領域で、これらはドメイン駆動設計/ドメイン固有言語(DSL)ベースのアプローチの良い候補になるでしょう。

3. Keyhole Surgery (鍵穴手術)

必要なのは、アプリケーションに何が起こっているかを調べることができて、それに対して(アプリケーション全体をリコンパイルする必要なく)修正可能なコードを実行できるということだけ、という場合があります。keyhole surgeryを使えば、Groovyスクリプトのライブ実行のためのバックドア(裏口)を作ることができます。このパターンは製品サポート、不具合の分析、運用中の修正や緊急対応などに特に有用です。

4. Smart Configuration (スマート設定)

もしあなたのチームがアプリケーションコードをGroovyで書くことに不安を感じているのなら、まずsmart configurationに使うことが良い出発点になるでしょう。これは設定をロジックで強化し、XMLファイルをより簡潔で表現力が高いGroovyスクリプトで置き換えるものです。チューリング完全な言語の持つすべての能力によって、大きなXMLファイルを使う場合に比べ、ずっとエレガントで明瞭に設定の意図を表現できるようになるでしょう。

5. Unlimited Openness (無制限の開放)

特に小から中型サイズの自由度が高いプロジェクトでは、すべてをスクリプトで書いてしまうことが有効である場合も多くなります。GrailsやGriffon、あるいは直接Groovyだけを活用し、より簡潔で表現力が高いアプリケーションを作るのです。ここで指摘しておきたい唯一の注意点は、アプリケーションの複雑度と開発チームの規模・成熟度を考慮しておくべきだということです。動的言語に比較的不慣れで、大きめな(3-5人を超える)チームではアプリケーションがどう動いているのか、チームの誰もわからなってしまうほど動的言語のメタプログラミング機能を濫用してしまい、ありとあらゆるトラブルに陥る可能性があるのです!

6. House-elf Scripts (小人さんスクリプト)

Groovyを使って手っ取り早く利益を得たいなら、使い捨てのスクリプトを作ることを考えてみましょう。ビルドの自動化からインストーラ、サービス監視、レポート生成、統計処理、ドキュメント自動生成、機能テスト、HTMLスクレイピング、Webのリモートコントロール、そしてWebサービスまで、この種の雑用スクリプトをGroovyで実装することによって、チーム内で親しみを得たり、快適な環境を構築する方法がたくさんあります。

7. Prototype (プロトタイプ)

ときにはただ実現可能性を調べたい(技術やUI、一連のアルゴリズムなどを素早く試したい)ということがあります。GroovyやGriffon、Grailsはまさにこういった迅速なプロトタイプ開発にぴったりです。そして、これでうまく書けるのなら、そのまま製品開発にも使わない理由はないでしょう。アプリケーションの一部/全部をJavaで完全に書き直してしまうこともできます。例えばCanooでは、しばしば書面のRFQのかわりにサンプルアプリケーションを作ってしまい、どのような感じで動くか顧客にみてもらうことがあります。

さらに、Dierkは検討中のいくつかの新しいパターンにも言及しました。“lipstick (口紅)”パターンは急速に増えているパターンで、Java APIを薄いGroovy層でラップして使いやすくします。“ghost writer (ゴーストライター)”パターンは、メタプログラミングによる機能追加によってGroovy APIを強化するために、アノテーションやAST変換を使う場合などを表します。

このセッションは、GroovyやGrailsをプロジェクトに導入するさまざまなアイデアを表現する用語を提供するという、本当に素晴らしい仕事をしました。今後、導入戦略について記述するとき、Groovyを使い始める方法のアイデア源として、また経験を共有するためのより効果的な語彙として、これらの用語をコミュニティ内で使い始めることができたら良いと思います。


Written by peterbell (翻訳 ksky@jggug.org)
May 20, 2009 at 5:26 pm