Monday, April 30, 2007

Grails 0.5 リリースノート (翻訳)

多分、寝てる間にリリースされそうなので、先にリリースノート翻訳アップしておきます。
結構ザックリな翻訳ですが・・・。
公式には、4/30 (ロンドン時間)にリリース予定です。



Grails 0.5 リリースノート (翻訳)



Grails開発チームは、もう一つのマイルストーンに到達し、 Webアプリケーション開発フレームワーク Grails0.5のリリースしました。

Grailsは、JavaとGroovyで構築され、JEE分野で最も使用されている、
Spring、Hibernate、SiteMesh等のAPIを使用した、ダイナミックWebアプリケーションフレームワークです。

Grailsは、JavaとGroovy開発者に、既存の知識、長年Java開発者が利用してきた実績有る信頼されたAPIを使用した、
規約によるラピッド開発の楽しさをもたらします。

今回の開発は2月後半の0.4.2のリリースより190以上の課題が有り激しかったでが、
このリリースでは、新任のチームメンバーとユーザーと重要な機能強化から刺激的な貢献を受けました。

チームメンバー、パッチ投稿者、ユーザに感謝します。
多くの努力がこのリリースに反映されていますので、皆さんがGrailsの最新版を楽しんでいただける事を期待しています。

■新機能
・カスタムURLマッピング
・コマンドオブジェクト / フォームバリデーション
・GROMでのListとMapのサポート
・ドメインクラスでの構成コンポーネントのサポート (Hibernate "components")
・Base64コーデック
・Ivyでの依存関係の管理
・プロジェクトメタデータとバージョニングサポート
・スクリプトイベントフック
・全てのアーティファクトオブジェクトへのログの注入
・プラグインで使用できる、アーティファクトAPI
■改善点
・アーティファクト再読込の改善
・GORMのリレーショナル管理メソッドの改善
・バリデーション・カスケード
・Book.getAll(1,2,3)での複数のオブジェクトの取り出し。
・find()での名前付きのHQLパラメータ使用
・古いconstraintsの除去
・Performance improvements (40-50% faster)
・パフォーマンス改善(40-50%向上)
・タグリブの最適化
・スカッフォールドの改善(カラムのソート、大量結果のページネート、他)
・I18N改善(messages_ja.properties(日本語)も追加された)
・GSPビューロードのオーバーホール
・Grailsコアコードのテスト範囲が拡大
・多くのバグ修正


新機能 詳細


カスタムURLマッピング


URLマッピングは、コントローラ/アクションの形式のみでは無く、
ほぼ自由に定義できるようになりました。
定義例

class MyUrlMappings {
static mappings = {
"/product/$id" {
controller = "product"
action = "show
}
"/$id/$year/$month/$day" {
controller = "blog"
action = "show"
constraints {
year(matches:/\d{4}/)
month(matches:/\d{2}/)
day(matches:/\d{2}/)
}
}
}
}

ドキュメント(英)

コマンドオブジェクト / フォームバリデーション


Grailsではドメインクラスで制約条件を決めていました。しかし、フォーム又、リクエストパラメータがドメインクラスに一致するとは限りません。
0.5からは、リクエストが実行されたら、ドメインクラスと同じ制約条件で書かれたコマンドオブジェクトに、
Grailsによって自動的に生成・変換されて、バリデーションをかける事が可能になりました。

使用例

class LoginController {
def login = { LoginCommand cmd ->
if(cmd.hasErrors()) {
redirect(action:'loginForm')
}
else {
// do something else
}
}
}

class LoginCommand {
String username
String password
static constraints = {
username(blank:false, minSize:6)
password(blank:false, minSize:6)
}
}

ドキュメント(英)

GROMでのListとMapのサポート


GORM has been enhanced to support lists of domain objects in a relationship, as opposed to the default Set behaviour, providing ordered lists.
GORMでのリレーション時のドメインクラスでのリストサポートを強化しました。デフォルトのSetのふるまいと対照的に、Listを提供します。

// オブジェクトリストのサポート
class Author {
List books
static hasMany = [books:Book]
}

author.books[0] // 最初のbookを取得例。

ドメイン型では無い型として、Mapのサポート:

// Map のサポート
class Author {
Map books // ISBN:book名のMap
}

def a = new Author()
a.books = ["1590597583":"Grails Book"]
a.save()

通常型キーとドメインオブジェクトのマップも可能;

// ドメインクラスのマップを作成したい場合以下のようにできます。
class Book {
Map authors
static hasMany = [authors:Author]
}

def a = new Author(name:"Stephen King")

def book = new Book()
book.authors = [stephen:a]
book.save()

ドキュメント(英)

ドメインクラスでの構成コンポーネントのサポート (Hibernate "components")


GORMでは、データベースにクラスの階層に対してのテーブルマッピングを使用しています。
これはリレーションされたクラスは別のテーブルに収納することを意味します。
これからは、Hibernateの構成コンポーネントの仕組みを使った、”embedded”宣言を使って、
通常リレーションと見なされるオブジェクトのデータを埋め込むことができるようになります。

class Address {
String street
// ...
String country
}

class Person {
String firstName
String lastName

Address homeAddress
Address workAddress

static embedded = ['homeAddress', 'workAddress']
}

”embedded”に、プロパティー名のリストを定義すると、リレーションの代わりにテーブルに直に書き込まれます。
ドキュメント(英)

Base64コーデック


0.4で実装された、かなり使えるコーデックに、Base64コーデックが追加されました。

Your registration code is: user.registrationCode.encodeAsBase64()


ドキュメント(英)

Ivyでの依存関係の管理


プロジェクト内でIvyでの依存関係の管理が追加されました。
以下の2つのコマンドでおこなえます。
このコマンドをプロジェクトで1回実行
# grails install-ivy
そして、以下でプロジェクトの依存を更新
# grails get-dependencies

プロジェクトメタデータとバージョニングサポート


必要なGrailsのバージョンが設定されることによって、違うGrailsのバージョンを間違えて実行できなくしたり、
自分のアプリケーションのバージョン管理等に使用できます。
warファイルを書き出すときに、バージョン番号が付加されるようになります。
Ex. SomeApp-1.0,war
アプリケーション名の変更も可能です。

ドキュメント(英)

スクリプトイベントフック


ターゲットスクリプトでイベントフックが可能になりました。

全てのアーティファクトオブジェクトへのログの注入


0.4では、コントローラに”log”を追加しました。0.5からは全てのアーティファクトオブジェクトに追加されます。
ドキュメント(英)

プラグインで使用できる、アーティファクトAPI


アーティファクトの実装がオーバーホールされ、プラグインで自信で特別なアーティファクトの実装が可能になり、
他のアーティファクトと同じように操作ができるようになりました。
ドキュメント(英)

改善点 詳細(説明が必要そうな物だけ・・)


アーティファクト再読込の改善


ドメインオブジェクト、トランザクショナルサービス、Quarts Jobsのリロードのサポート

GORMのリレーショナル管理メソッドの改善


0.4でのaddXXXXメソッドの見直しをおこない変更しました。addXXXXは先々無くなります。
0.5からは、addToXXXX と、追加でremoveFromXXXXが実装されました。

def a = new Author(name:"Stephen King")
.addToBooks(title:"IT")
.addToBooks(title:"The Stand")
.save()

author.removeFromBooks(myBook)

Labels:

0 Comments:

Post a Comment

<< Home