BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Grails 3.0: Spring BootとGradleを採用

Grails 3.0: Spring BootとGradleを採用

原文(投稿日:2015/04/22)へのリンク

GrailsチームがGrails 3.0をリリースした。人気の高いMVCフレームワークが今回,Spring Bootをベースとして完全に書き直されている。Groovy 2.4とAndroidのサポート,Spring 4.1,旧GrantビルドシステムからGradleへのリプレースなど,多数の新機能を含む。

直接的なアップグレードパスは提供されていない。アップグレードガイドには,同名のGrails 3.0アプリケーションを新たに作成して,ソースファイルを新しいアプリケーションの適切な場所にコピーする,というマイグレーション手順が紹介されている。プロジェクト構造が一部変更されているため,アップグレード時には,各項目について確認する必要がある。

Java Web開発者のMichael Scharhag氏が“What's New in Grails 3”として,新たなプロジェクトの構造を明確に説明している。

今回のリリースの詳細を知るためにInfoQは,Grails Core Teamのシニアメンバである,プリンシパルソフトウェアエンジニアのJeff Brown氏にインタビューした。

InfoQ: まずは何よりも,Grails 3.0リリースおめでとうございます!Spring BootバージョンにGrailsを書き直すのは,非常に大きなチャレンジだったと思います。新たなアーキテクチャに移行する上で,特に難しかったコンポーネントは何でしたか?

Brown: やるべきことはたくさんありましたが,特に難しいという部分はなかったように思います。GrailsもBootも優れた設計を持っているので,そうでないものに比べれば,作業プロセスは比較的簡単でした。これまでGrailsでやっていて,今後はBootが代わりにやってくれることを取り除くための作業が,いくつか必要になった程度です。Bootが提供していないGrailsの機能の中で,最も重要なのはプラグインシステムです。これはGrailsに欠くことのできない必須機能です。フレームワークの拡張性は全体のストーリの中でも最重要な部分ですから,これを諦めるという選択肢はあり得ませんでした。プラグインシステムは必ず用意しなければならないので,完全に動作するように開発しました。すべてうまく行っています。Bootへのマイグレーションは非常に順調でした。作業が完了した今,フレームワークとしては大変よい状態にあります。

InfoQ: ビルドシステムがGantからGradleに変更されましたが,Gradleユーザにはどのようなメリットがあるのでしょう?

Brown: Gradleは優秀なビルドツールですので,以前から,何とかこれに変更できないかと思い続けていたのです。Grails 3のリリースが,そのための最高のチャンスになりました。これまでのリリースではずっと,フレームワーク内に独自のビルドシステムを用意していました。そのビルドシステムが,Gantをベースに作られていたのです。 ビルドシステムはとてもうまく機能していましたが,固有の制限がありました。私たちにとって,今後維持していく必要のない,パズルの1ピースだったのです。この問題を本当の意味で解決するのは困難ですし,そもそも,フレームワークの責務とするべきものでもありません。Gradleチームはこの仕事を見事に果たしています。その優れた成果のメリットを利用することに障害は何一つなかったので,私たちはそうしたのです。Grailsアプリケーションのビルドでは,以前からGradleを使うことができていましたが,今回のGrails 3で,Gradleとのファーストクラスの統合が実現しました。Grails 3でアプリやプラグインを開発する場合,Gradleのビルド設定は最初から出来上がっています。Gradleラッパファイルも生成されるので,Gradleをインストールする必要すらありません。導入直後からこのような環境を使用できるのは,本当にすばらしいことです。

InfoQ: Grails 2.xアプリをGrails 3.0で実行することはできるのでしょうか?できないとすれば,3.0へのマイグレーションはどの程度難しいのでしょう?

Brown: Grails 2アプリケーションをGrails 3で実行することはできません。アプリケーションをGrails 3にアップデートする必要があります。ほとんどのアプリケーションに関しては,移行はそれほど難しくはありません。アップグレードに必要な作業は,アプリケーションが何を行っているかによって違います。例えば,ビルドシステムに多くを依存しているアプリのアップグレードでは,新しいGradleベースのビルドシステムが旧システムとは根本的に変わっているため,少し注意が必要になります。新しいシステムの方が強力で柔軟性もあるのですが,以前のビルドシステムとの互換性がないためです。幸いなことに,ほとんどのアプリはビルドシステムと直接関係を持っていませんが,アップグレードで対処しなければならないものの一例です。プラグインやその他のライブラリへの依存性の表記方法がGrail 3では違うので,それに対処する必要があります。BuildConfig.groovyで使用しているコードをbuild.gradleにコピーして,依存性を記述している部分を修正する,という作業が主体になります。すべて一度限りの作業ですし,難しくはありません。/grails-app以下のコードについては,ほとんど問題ありません。アップグレード時に注意を払う必要もないでしょう。src/groovyの下にあるコードの大部分は,新たに用意されたsrc/main/groovy/内に移動すればよく,@ValidateableアノテーションをValidateableトレイト(trait)に置き換えるなどの詳細な部分を除けば,こちらもほとんど問題ないと思います。結論としては,アップグレード手順はアプリが何をしているかによって違うものの,それほど大変な作業ではありません。次世代フレームワークを手に入れるために多少の対価が必要だ,ということです。

InfoQ: 先週,“GrailsがOCIを新たな本拠とする”,という発表がありましたが,プレスリリースを見る限りでは,単にあなたとGraeme Rocher氏がOCIに雇用された,ということに思えます。この発表には,それ以上の意味があるのでしょうか?

Brown: はい。Graemeと私はOCIに移籍しました。フレームワークが信頼できる企業の手に渡り,今後も開発が進められることによって,ユーザあるいは潜在的ユーザを安心させることができたという意味では,それ自体すばらしいニュースです。

加えてOCIは現在,Grailsプロジェクトの公式スポンサとして,その資金を引き継いでいます。プロジェクトの開発や方向性に関しては,引き続きGrailsコアチームが完全な自律性を維持しています。OCIと組むという決定は,主としてオープンソースに対する同社の長年にわたるコミットメントと,Grails技術に対する理解に基づくものです。

差し当たってしばらくは,新たにリリースされたGrails 3.0を積極的にサポートしますが,近いうちにGrails 3.1のスコープとタイムラインを決定する作業に取り掛かる予定です。

OCIは今後,Grailsの知名度向上のために努力します。そして私たちは,多額の投資をしているOCIの数多くの既存顧客のためにも,積極的にこのフレームワークに取り組んでいきます。私たちはOCI内部の製品開発チームと共同で,OCIのサポートする他のオープンソース基盤技術に対して,Grailsの技術の統合を進めています。Grailsの進む方向について,私たちは非常に楽観的に考えています。すばらしい成果が得られるでしょう。

InfoQ: Groovyが先日,Apache Software Foundationに移動しましたが,Grailsにもそのような計画がありますか?

Brown: OCIは,Grailsの公式スポンサです。Grailsの管理方法は,私たちがこれまでずっと管理してきた方法とほとんど変わっていません。コミュニティからのコントリビューションを歓迎していますし,コミュニティの開発者たちと密接に作業をして,彼らがフレームワークに直接あるいはプラグインの形式で貢献してくれるのを支援します。OCIに移行したことで,フレームワークの技術的なリーダシップや,リリースの公開方法に関わるロジスティックスなどが変更されることはありません。

InfoQ: プロジェクトへのコントリビューションを検討中のGrailsユーザや企業に対して,何か伝えたいことはありますか?

Brown: コントリビューションを希望する企業や個人に対しては,歓迎の気持ちを伝えたいと思います。小さいものに関しては,Grails Developer Google Group(https://groups.google.com/forum/#!forum/grails-dev-discuss)を通じて連絡をお願いします。スケールの大きなコントリビューションについては,開発者ないし企業と直接的に話ができればと思います。大規模な開発に対して共同で資金供給するために,ある種のパートナーシップを結ぶことが理に適っているのならば,そのようなことも行うつもりです。フレームワークを気に入っていて,何らかの貢献をしたいのだが,フレームワーク自体のコードを変更することに躊躇している開発者たちからも,たくさんのアプローチを受けています。そのような人たちがコントリビュートするよい方法のひとつは,“The Grails User Guide”の更新に協力することです。このガイドはフレームワーク自体と同じく,オープンソースです。コントリビュート希望者との作業は,それが個人であっても大企業であっても,私たちにとって同じように重要です。コントリビューションに興味のある方はぜひ,私たちに連絡をください。実現に向けて協力します。

InfoQ: お時間を頂いてありがとうございました。ご活躍を祈ります。

Brown: どういたしまして。Grails 2からGrails 3への移行に関する皆さんからの熱意には,とても感謝しています。皆さんを支援するため,私たちにできることは何でも行うつもりです。

この記事に星をつける

おすすめ度
スタイル

BT