SlideShare a Scribd company logo
Grails 第3章
進化したSpring-bootベースフレームワーク
@tyama
About Me
山本です。岐阜県からきました。
デザイナーです。ウソです
twitter: @tyama
はてな id:mottsnite
活動
• 今週のGrails 意訳版
• grails.jp/news
• Grailsリリース情報を

ほぼリアルタイム配信。

9年目に突入!
• はてな id: mottsnite
本日のお話
• Grails ?
• Road to 3.0
• Grails 2.4.x ∼ Grails 2.5
• Grails 3 の話
• 新機能情報など
• Grails2との違い。
• Grails 3 とSpring Boot。
祝!New GRAILS_HOME!(4.9)
↓
Object Computing, Inc.
昔からGroovyに関心を持っている会社です。
Jeff氏が昔いた会社
Grails て何? (知らない人へ)
• Springフレームワークをベースに

ドメインドリブンでサクッと開発する

フルスタックフレームワーク。
• RoRにインスパイアされてJava/Groovyで開発。
• RoR系なので、CoCです。
• 開発には、

ディレクトリベースの規約とGroovy DSLを活用。
Road to 3.0
Grails 3.0への道
図解説明
Road to 3.0
Spring 4.0.x
Groovy 2.3.x
コードベースのモジュラー化
Spring 4.1.x
Groovy 2.4.x
Grails 2.4.x
Grails 2.5
Grails 3.0.x
今までと同じアーキテクチャ
Grails以外で
使用可能
Standalone GORM
Standalone GSP
Asset Pipeline
Gradle Asset Pipeline Plugin
Grails 1.3.x
Grails 1.2.x
Grails 1.0.x
古代
Grails 2.3.x
Grails 2.2.x
Grails 2.1.x
近代
時代に合わせると
いろいろアレね。
今後はどうすると?
Spring Boot 1.2.x
Spring 4.1.x
Groovy 2.4.x
そぎゃんこと言うても、変わっ
とだけんしょんなかたい!
アーキテクチャが変わった!?
アップデート大変!?
Spring 4.1なので依存するプラグイン
は注意してね。
図解説明
Road to 3.0
Grails 1.3.x
Grails 1.2.x
Grails 1.0.x
古代
Grails 2.3.x
Grails 2.2.x
Grails 2.1.x
近代
時代に合わせると
いろいろアレね。
今後はどうすると?
Road to 3.0
• Road to 3.0 構想
• 3.0リリースというゴールに向けて

2.4.xから、リファクタリングを開始。

一部の実装は2.4でも含む。
• Spring Bootをベースにするために。
• コアコードを集中的にリファクタリング
• 主要機能は、生Spring BootなどGrails外でも使用できるように
再構築。

(以前できてた?できかけてた物も再度見直し)
• ただゴールのGrails3では一部仕様変わるかもよっ!
• なんなら、実際に更新大変かもよっ!
• それでもモダンなアーキテクチャにするのだよ!
Grails 2.4.x リリース
• Spring 4.0
• Java 8 対応
• Groovy 2.3 に更新
• @CompileStatic 対応
• アセットパイプライン
• コードベースのモジュラー化
• Hibernate 4 対応
• 単独利用できる GORMとGSP
図解説明
Road to 3.0
Grails 1.3.x
Grails 1.2.x
Grails 1.0.x
古代
Grails 2.3.x
Grails 2.2.x
Grails 2.1.x
近代
時代に合わせると
いろいろアレね。
今後はどうすると?
Spring 4.0.x
Groovy 2.3.x
コードベースのモジュラー化
Grails 2.4.x
Grails以外で
使用可能
Standalone GORM
Standalone GSP
Asset Pipeline
Spring 4.0?
今はSpring 4.1だろっ!
Spring 4.1は Grails 3で対応する(キリッ
あとで話あると思うけど、、
更新するの大変なんだろっ?
わかっちまえば、そうでもないのだが。。
んじゃ、だすよ。これも。
Grails 2.5
• Grails 2.4 系と同じアーキテクチャ。
• 違い
• Groovy 2.4 対応
• Spring 4.1 対応
• いきなり Grails3 だと アレ な人向けに、

ベースとなるライブラリを

更新して対応させたバージョン。

       ただし、Spring 4.1の互換に悩む事も。
図解説明
Road to 3.0
Spring 4.0.x
Groovy 2.3.x
コードベースのモジュラー化
Grails 2.4.x
Grails以外で
使用可能
Standalone GORM
Standalone GSP
Asset PipelineGrails 1.3.x
Grails 1.2.x
Grails 1.0.x
古代
Grails 2.3.x
Grails 2.2.x
Grails 2.1.x
近代
時代に合わせると
いろいろアレね。
今後はどうすると?
Spring 4.1.x
Groovy 2.4.x
Grails 2.5
今までと同じアーキテクチャ
Spring 4.1なので依存するプラグイン
は注意してね。
図解説明
Road to 3.0
Spring 4.0.x
Groovy 2.3.x
コードベースのモジュラー化
Grails 2.4.x
Grails以外で
使用可能
Standalone GORM
Standalone GSP
Asset PipelineGrails 1.3.x
Grails 1.2.x
Grails 1.0.x
古代
Grails 2.3.x
Grails 2.2.x
Grails 2.1.x
近代
時代に合わせると
いろいろアレね。
今後はどうすると?
Spring 4.1.x
Groovy 2.4.x
Grails 2.5
今までと同じアーキテクチャ
Spring 4.1なので依存するプラグイン
は注意してね。
図解説明
Road to 3.0
Spring 4.0.x
Groovy 2.3.x
コードベースのモジュラー化
Grails 2.4.x
Grails以外で
使用可能
Standalone GORM
Standalone GSP
Asset PipelineGrails 1.3.x
Grails 1.2.x
Grails 1.0.x
古代
Grails 2.3.x
Grails 2.2.x
Grails 2.1.x
近代
時代に合わせると
いろいろアレだね。
今後はどうすると?
Spring 4.1.x
Groovy 2.4.x
Grails 2.5
今までと同じアーキテクチャ
Spring 4.1なので依存するプラグイン
は注意してね。
Grails 3 の話を始める前に
おさえて起きたい内容。
★ Asset Pipeline
★ スタンドアロンGORM, GSP
Asset Pipeline
• Web用リソースアセット(CSS,JS,画像)をアレするアレ。
Railsの人にはお馴染みかな。
• Resourcesプラグインに変わりコチラが公式となった。
assetタグ
<asset:javascript src="application.js"/>
<asset:stylesheet href="application.css"/>
<asset:image src="grails_logo.png" height="60" />
application.js
//= require jquery
//= require_self
//= require file_a
//= require_tree .
console.log('some javascript');
Standalone GORM
• GORM - Grails O/R マッピング

Grails3へ向けて外部利用もできるようになった。
• https://github.com/tyama/standalone-gorm-examples

↑以下のサンプル詰め合わせ
• Groovyスクリプト
• GORM MongoDB
• GORM Hibernate 4
• Spring Boot
• GORM MongoDB
• GORM Hibernate 4
デモ
Standalone GSP & Spring Boot
• Grailsでお馴染みのView層 GSP
• https://github.com/grails/grails-boot
Road to Grails 3.0
ここで、Grails 2.4.x , 2.5 の話は終了。
図解説明
Road to 3.0
Spring 4.0.x
Groovy 2.3.x
コードベースのモジュラー化
Grails 2.4.x
Grails以外で
使用可能
Standalone GORM
Standalone GSP
Asset PipelineGrails 1.3.x
Grails 1.2.x
Grails 1.0.x
古代
Grails 2.3.x
Grails 2.2.x
Grails 2.1.x
近代
時代に合わせると
いろいろアレね。
今後はどうすると?
Spring 4.1.x
Groovy 2.4.x
Grails 2.5
今までと同じアーキテクチャ
Spring 4.1なので依存するプラグイン
は注意してね。
Grails 3.0.x
Grails 3
Spring Boot
Gradle
Grails 3
• 何かに られる形で3/31に3.0.0リリース。
• そしてすぐに3.0.1リリース。
• プロジェクトリーダーは、その後、長期休暇へ。戻ってくるのか!?
• 前バージョンから更新はファイル複製!
• Spring Bootをベースに構築。
• CoCとCoCのぶつかり合い。良い意味でも悪い意味でも。。
• ビルドシステムをGradleに。
• ビルドを柔軟に。
図解説明
Road to 3.0
Spring 4.0.x
Groovy 2.3.x
コードベースのモジュラー化
Spring 4.1.x
Groovy 2.4.x
Grails 2.4.x
Grails 2.5
Grails 3.0.x
今までと同じアーキテクチャ
Grails以外で
使用可能
Standalone GORM
Standalone GSP
Asset Pipeline
Gradle Asset Pipeline Plugin
Grails 1.3.x
Grails 1.2.x
Grails 1.0.x
古代
Grails 2.3.x
Grails 2.2.x
Grails 2.1.x
近代
時代に合わせると
いろいろアレね。
今後はどうすると?
Spring Boot 1.2.x
Spring 4.1.x
Groovy 2.4.x
アーキテクチャが変わった!?
Spring 4.1なので依存するプラグイン
は注意してね。
Grails3 What s new!
ザックリ、解説
Grails3 What s new! - コアフィーチャ
• Groovy 2.4
• AST, Trait, StaticCompile
• Spring 4.1
• JMSアノテーション, JCache, WebSocket, 

Groovyマークアップテンプレート
• Spring Boot 1.2
• SpringのSpringによるCoC
• Tomcat,Jetty,Undertowコンテナ組込の起動可能Jar
• Gradle ビルドシステム
• 今までのGantからGradleへ移行!
細かいことは

Spring詳しい人に聞いて
細かいことは

Groovy詳しい人に聞いて
とりあえず、

Boot本読んでね。
Gradle本
持ってないの?
JJUG CCC 20150411 grails3 Spring-boot
Grails3 - 何故 Spring Boot?
• マイクロサービス
マイクロサービス
マイクロサービス
モノリス vs マイクロサービス
Alvaro Sanchez-Mariscal氏のスライドより。
Grails3 - 何故 Spring Boot?
• マイクロサービス
• ファットJARと組込コンテナ。様々なランタイムに対応。
• Tomcat, Jetty, Undertow

• モニタリングとヘルスチェックの仕組み
• spring-boot-starter-actuator

• Bootのオートコンフィグレーションの活用。
• 常識的なデフォルト設定
• spring-boot-autoconfigure

• Springの柔軟性を活用 (今までもこれからも)

Grailsでマイクロサービス?
なにそれうまいの?
Grails マイクロサービス
• 作成
• grails create-app demo --profile=web-micro
• 実行
• grails run-app / インタラクティブモードでもOK
• パッケージ
• grails package
• java -jar build/demo-0.1.jar
• 注意点: 現状の問題点
• テストコードがあると動かない
• パッケージしたときにgroovy-antがなくて起動しない..
• @Grab('org.codehaus.groovy:groovy-ant:2.4.3')
• 物によっては動きが?まあマイクロサービスですから。
Grails3 What s new! - コアフィーチャ
• アプリケーションプロファイル
Keynote: Grails 3.0 Preview
Grails3 - プロファイル
•アプリケーションのプロファイルを指定することで

さまざまなタイプのアプリケーション生成に対応。
•プロファイルはgithubリポジトリで管理されている。
•そこに使用可能なプロファイルが提供されている。
スライド流用
Keynote: Grails 3.0 Preview
Grails3 - プロファイル
•リポジトリのprofile階層に使用可能なプロファイルが管理されて
いる。
•そこに今後。 ratpackとか他のプロファイルも入る。
•プロファイルでは以下が定義されている。
•プロジェクトスケルトン
•テンプレート
•コマンド
スライド流用
Keynote: Grails 3.0 Preview
Grails3 - プロファイル - コマンド
•yamlでタスクステップを定義。
•groovyでスクリプトを提供も可能。
•GroovyScriptCommandクラスとして実行される。
•コマンド補完などの内容も定義
•コマンド作成用に新たなAPIなども用意されている。
•コード生成用のrender, modelなど。
スライド流用
Keynote: Grails 3.0 Preview
Grails3 - プロファイル - 継承
•プロファイルは継承できます。
•プロファイルを実装するときは

近いプロファイルを継承して作成できる。多重継承も可能。
•継承するので、必要追加分のみを定義すればよい。
•不要なスケルトン・コマンドは除外も可能。
•でも、まだ自由にリポジトリを切替はできないのでアレです。
スライド流用
Grails3 What s new! - コアフィーチャ
• Traitをベースに再デザインされたAPI
• Groovy 2.4.x の恩恵!
• traitがASTされます!
Grails3 What s new! - コアフィーチャ
• 内部フローの変更
Grails3 What s new! - Webフィーチャ
• コントローラアクション用フィルターの廃止。
• Interceptor API に変更。
class MyInterceptor {
boolean before() { true }
boolean after() { true }
void afterView() {
// no-op
}
}
Grails3 What s new! - 開発環境フィーチャ
• 新たなシェルとコード生成API
• 強化されたIDE統合
• Intellij IDEA にgradleプロジェクトとして取込
• アプリケーションメインクラス
• static void main をもつ Applicationクラスを実行
• IDEで実行・デバッグも起動できる
Grails3 What s new! - テストフィーチャ
• インテグレーション
• Spring Bootをベースとしたテスト実行の仕組みを使用

• Gebファンクショナルテスト
• create-functional-test で

Spock/Gebファンクショナルテストを生成

• Gradleテスト実行
• 並列実行でのテスト実行定義など。
What s New だけだとわからんね。
とりまコード動かしてみましょう!
デモ
• マイクロサービス - コードみましょ。
• 通常App - コードみましょ。
• Grails3 + Spring Boot
Grails3 のコードいろいろ
• メインファイル grails-app/init/パッケージパス/Application.groovy
• Spring Bootと同じ感じだよ。
• 階層がかわった。
• http://grails.github.io/grails-doc/3.0.1/guide/upgrading.html
• 定義設定が変わった。Config.groovy DataSource.groovy 廃止
• 今後のメインは application.yml
• 今までのGroovyな設定ファイルは application.groovyを作成して書けば良いよ。
• 読込順: yml → groovy → 起動ルートyml → 環境変数
• ログの形式が変わったよ。 logback.groovy
• http://logback.qos.ch/manual/groovy.html
• Gradleになったから、BuildConfigは無しで、 build.gradle を使うよ!
• Grails用のGradleプラグイン
Grails3 のいろいろ
• Grails2からの移行は結構大変。
• http://grails.github.io/grails-doc/3.0.1/guide/upgrading.html
• Grails2で出来たことが実装変わってアレっとなる。 → 慣れろ!
• 同時にSpring Bootのマニュアルを読むようになる。
• http://docs.spring.io/spring-boot/docs/1.2.3.RELEASE/reference/html/
• Spring 4.1で提供されている便利な物は使え。
• http://docs.spring.io/spring/docs/4.1.x/spring-framework-reference/html/
• いろいろ解明するまで悩みまくる → まだ情報すくない。
• ドキュメントが嘘つきの時がある。(書いてある事がGrails2の情報だったり)
• -noverify
Grails3 でのプラグイン
• プラグインまだ少ないね!? 現状: 17個
• 今後はbintrayで管理される: https://bintray.com/grails/plugins
• Grails 2.4 系でのプラグイン数: 1200個
• Grails3では使えません。どうすんの? 以下でだいたいクリア。
• リソース系: webjarsを活用
• Spring系: オートコンフィグとかでどうにかなるでしょ?
• ファンクショナル系: 自分で移行
• ライブラリ系: 依存追加すれば?
• テクニカルな: 作者が対応するの待つ or 頑張って自分で実装!
• ゴミ系: どうでもいい物もたくさんある。そいつらは気にしない。
図解説明
Road to 3.0
Spring 4.0.x
Groovy 2.3.x
コードベースのモジュラー化
Spring 4.1.x
Groovy 2.4.x
Grails 2.4.x
Grails 2.5
Grails 3.0.x
今までと同じアーキテクチャ
Grails以外で
使用可能
Standalone GORM
Standalone GSP
Asset Pipeline
Gradle Asset Pipeline Plugin
Grails 1.3.x
Grails 1.2.x
Grails 1.0.x
古代
Grails 2.3.x
Grails 2.2.x
Grails 2.1.x
近代
時代に合わせると
いろいろアレね。
今後はどうすると?
Spring Boot 1.2.x
Spring 4.1.x
Groovy 2.4.x
そぎゃんこと言うても、変わっ
とだけんしょんなかたい!
アーキテクチャが変わった!?
アップデート大変!?
Spring 4.1なので依存するプラグイン
は注意してね。
Grails3 まとめ
• Spring Bootの勉強が必要
• 必須ではないが知っておくと吉。
• むしろ必要でしょ。
• Spring Boot の開発をさらに迅速に!
• アノテーション不要開発。
• コード配置場所を定めるCoCでメンテナンスしやすい。
• 小さな物はもちろん、大中規模のアプリやプラグインを活用したモジュラ開発が可能
• キレイに開発すれば、後からSpring Boot化も可能。
• まだバグが多い?
• そこまで酷くはない。簡単な回避方法もある……と思う。
• 今までも初物はアレでした。
• Grails2との関係
• 違いが多いので。。。
JGGUGに集まれ!
• G*ワークショップ
• 来週あります!来週金曜日!
• Web API祭り!
• もっとGrails3の事を知ることができます!
• https://jggug.doorkeeper.jp/events/22473
Q&A
• 簡単な内容でお願いします。
• Javaはクソではありません。
Thank you.
日本Grails/Groovyユーザーグループ
www.jggug.org 59

More Related Content

PDF
G * magazine 0
PDF
Groovy Grails eXchage 2014 報告
PDF
JGGUG grails-spring-boot
PPTX
やさしいGitの内部構造 - yapcasia2013
PDF
Spring in-summer-gradle-hands on-withanswers
PDF
システム開発を前進させるためのGradle導入法
PDF
Retina対応 CSSスプライトを自動化しよう sprity版(東区フロントエンド勉強会 2015年 第2回) 補足資料
PDF
gulp + Slim テンプレートエンジンで HTML を効率よく書き出そう
G * magazine 0
Groovy Grails eXchage 2014 報告
JGGUG grails-spring-boot
やさしいGitの内部構造 - yapcasia2013
Spring in-summer-gradle-hands on-withanswers
システム開発を前進させるためのGradle導入法
Retina対応 CSSスプライトを自動化しよう sprity版(東区フロントエンド勉強会 2015年 第2回) 補足資料
gulp + Slim テンプレートエンジンで HTML を効率よく書き出そう

What's hot (20)

PDF
Gws 20141024 gradle_intro
PDF
Rails Tokyo 035 Cucumber
PPTX
Jjug 20140430 gradle_advanced
PDF
Jjug 20140430 gradle_basic
PDF
Gradleどうでしょう
PDF
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
PDF
パフォーマンス計測Ciサービスを作って得た知見を共有したい
PDF
VSCodeで始めるAzure Static Web Apps開発
PDF
Pylons ユーザのための Pyramid 移行ガイド
PDF
OSS Product feat. Gradle
PDF
スッとGoを取り入れる
PDF
SwaggerとAPIのデザイン
PPTX
Gradle入門
PDF
(IDEユーザのための) ClojureのEmacs開発環境について
PDF
Clojureでガラケーサイトを作る際の細かい話
PDF
モバイル制作におけるパフォーマンス最適化について
PDF
Git勉強会 2016 Gitで卒論を管理しよう回
PDF
ホームディレクトリに埋もれた便利なコードをさがせ!
PDF
インフラ部門で働くCプログラマの話
PDF
ClojureでElectronアプリを作ろう
Gws 20141024 gradle_intro
Rails Tokyo 035 Cucumber
Jjug 20140430 gradle_advanced
Jjug 20140430 gradle_basic
Gradleどうでしょう
CircleCIを使ったSpringBoot/GAEアプリ開発の効率化ノウハウ
パフォーマンス計測Ciサービスを作って得た知見を共有したい
VSCodeで始めるAzure Static Web Apps開発
Pylons ユーザのための Pyramid 移行ガイド
OSS Product feat. Gradle
スッとGoを取り入れる
SwaggerとAPIのデザイン
Gradle入門
(IDEユーザのための) ClojureのEmacs開発環境について
Clojureでガラケーサイトを作る際の細かい話
モバイル制作におけるパフォーマンス最適化について
Git勉強会 2016 Gitで卒論を管理しよう回
ホームディレクトリに埋もれた便利なコードをさがせ!
インフラ部門で働くCプログラマの話
ClojureでElectronアプリを作ろう
Ad

Viewers also liked (20)

PDF
あなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情について
PPTX
Java 20年史 (JJUG CCC 2015 春 基調講演)
PDF
クラウド時代の Spring Framework (aka Spring Framework in Cloud Era)
PDF
金勘定のためのBigDecimalそしてMoney and Currency API
PDF
プログラミング言語Clojureのニャンパスでの活用事例
PDF
Java開発の強力な相棒として今すぐ使えるGroovy
PPTX
JJUG CCC 2015 Spring 「新人エンジニア奮闘記 - Javaって何?からwebサービスを公開するまで -」発表スライド
PDF
GrailsでSpringをGroovyにしよう!
PDF
わたしのRubyの楽しみかた
PDF
アジャイル事業部メンバーの2017年 抱負
PPTX
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
PDF
Dexador Rises
PPTX
ビズリーチ x ScalaMatsuri by BIZREACH, Inc.
PPTX
Java FXグラフィックスとアニメーション入門(JJUG CCC 2015 Spring G-7)
PDF
Synthesijer jjug 201504_01
PDF
Ruby everywhere
PDF
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
PDF
Java web application testing
PDF
大規模な負荷でもドキドキしない為のJava EE
PDF
JobStreamerではじめるJavaBatchのクラウド分散実行
あなたとAndroid 今すぐダウンロード!? Android開発で変わる SIerのJava技術事情について
Java 20年史 (JJUG CCC 2015 春 基調講演)
クラウド時代の Spring Framework (aka Spring Framework in Cloud Era)
金勘定のためのBigDecimalそしてMoney and Currency API
プログラミング言語Clojureのニャンパスでの活用事例
Java開発の強力な相棒として今すぐ使えるGroovy
JJUG CCC 2015 Spring 「新人エンジニア奮闘記 - Javaって何?からwebサービスを公開するまで -」発表スライド
GrailsでSpringをGroovyにしよう!
わたしのRubyの楽しみかた
アジャイル事業部メンバーの2017年 抱負
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
Dexador Rises
ビズリーチ x ScalaMatsuri by BIZREACH, Inc.
Java FXグラフィックスとアニメーション入門(JJUG CCC 2015 Spring G-7)
Synthesijer jjug 201504_01
Ruby everywhere
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
Java web application testing
大規模な負荷でもドキドキしない為のJava EE
JobStreamerではじめるJavaBatchのクラウド分散実行
Ad

Similar to JJUG CCC 20150411 grails3 Spring-boot (20)

PDF
Grailsのススメ(仮)
PPTX
2013.01.18 G*Workshop GGX 2012 Report
PDF
Grails 2.0.0.M1の話
PDF
Groovyの紹介20130323
PDF
G* Workshop in Fukuoka - Introduction
PDF
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
PDF
「Grails-1.1を斬る!〜Grails-1.1からのチーム開発〜」
PDF
Groovy Bootcamp 2015 by JGGUG
PDF
「プログラミングGroovy」入門(公開用)
PDF
G * magazine 1
PDF
クラウド開発に役立つ OSS あれこれ
PDF
Gws 20120521 gradle
PDF
The Essence of Using Ruby on Rails in Corporations
PDF
The History of Groovy #GroovyBase
PDF
Gws 20130315 gradle_handson
PDF
試して学べるクラウド技術! OpenShift
PDF
Read Groovy Compile process(Groovy Benkyoukai 2013)
PDF
Groovy kisobenkyoukai20130309
PDF
Play framework 2.0のおすすめと1.2からのアップグレード
PDF
最新技術動向(2011年上期)
Grailsのススメ(仮)
2013.01.18 G*Workshop GGX 2012 Report
Grails 2.0.0.M1の話
Groovyの紹介20130323
G* Workshop in Fukuoka - Introduction
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
「Grails-1.1を斬る!〜Grails-1.1からのチーム開発〜」
Groovy Bootcamp 2015 by JGGUG
「プログラミングGroovy」入門(公開用)
G * magazine 1
クラウド開発に役立つ OSS あれこれ
Gws 20120521 gradle
The Essence of Using Ruby on Rails in Corporations
The History of Groovy #GroovyBase
Gws 20130315 gradle_handson
試して学べるクラウド技術! OpenShift
Read Groovy Compile process(Groovy Benkyoukai 2013)
Groovy kisobenkyoukai20130309
Play framework 2.0のおすすめと1.2からのアップグレード
最新技術動向(2011年上期)

More from Tsuyoshi Yamamoto (20)

PDF
Grailsx@London 2011 報告
PDF
Grails 1.4.0.M1 メモLT
PDF
JGGUG 2011-02 LT
PDF
Grailsx@ロンドンへ行ってきた報告。
PDF
多治見IT勉強会 Groovy Grails
PDF
G*ワークショップ in 仙台 Grails(とことん)入門
PDF
Jggug 2010 330 Grails 1.3 観察
PDF
groovyプラプラとか「はやい、はやいよ」
PDF
第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」
PDF
第1回名古屋Grails/Groogy勉強会「Grailsを始めてみよう!」
PDF
名古屋SGGAE/J勉強会 Grails、Gaelykでハンズオン
PDF
Grails 1.2 探検隊 -新たな聖杯をもとめて・・・-
PDF
Groovy ネタ NGK 忘年会2009 ライトニングトーク
PDF
G*なクラウド 雲のかなたに ショートバージョン
PDF
JGGUG Camp 2009 いっぽう熱海では、
PDF
ExtJS勉強会@名古屋
PDF
G*なクラウド ~雲のかなたに~
PDF
はじめてのGroovy
PDF
G* on GAE/J 挑戦編
PDF
第4回 g* ワークショップ はじめてみよう! Grailsプラグイン
Grailsx@London 2011 報告
Grails 1.4.0.M1 メモLT
JGGUG 2011-02 LT
Grailsx@ロンドンへ行ってきた報告。
多治見IT勉強会 Groovy Grails
G*ワークショップ in 仙台 Grails(とことん)入門
Jggug 2010 330 Grails 1.3 観察
groovyプラプラとか「はやい、はやいよ」
第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」
第1回名古屋Grails/Groogy勉強会「Grailsを始めてみよう!」
名古屋SGGAE/J勉強会 Grails、Gaelykでハンズオン
Grails 1.2 探検隊 -新たな聖杯をもとめて・・・-
Groovy ネタ NGK 忘年会2009 ライトニングトーク
G*なクラウド 雲のかなたに ショートバージョン
JGGUG Camp 2009 いっぽう熱海では、
ExtJS勉強会@名古屋
G*なクラウド ~雲のかなたに~
はじめてのGroovy
G* on GAE/J 挑戦編
第4回 g* ワークショップ はじめてみよう! Grailsプラグイン

JJUG CCC 20150411 grails3 Spring-boot

  • 3. 活動 • 今週のGrails 意訳版 • grails.jp/news • Grailsリリース情報を
 ほぼリアルタイム配信。
 9年目に突入! • はてな id: mottsnite
  • 4. 本日のお話 • Grails ? • Road to 3.0 • Grails 2.4.x ∼ Grails 2.5 • Grails 3 の話 • 新機能情報など • Grails2との違い。 • Grails 3 とSpring Boot。
  • 5. 祝!New GRAILS_HOME!(4.9) ↓ Object Computing, Inc. 昔からGroovyに関心を持っている会社です。 Jeff氏が昔いた会社
  • 6. Grails て何? (知らない人へ) • Springフレームワークをベースに
 ドメインドリブンでサクッと開発する
 フルスタックフレームワーク。 • RoRにインスパイアされてJava/Groovyで開発。 • RoR系なので、CoCです。 • 開発には、
 ディレクトリベースの規約とGroovy DSLを活用。
  • 7. Road to 3.0 Grails 3.0への道
  • 8. 図解説明 Road to 3.0 Spring 4.0.x Groovy 2.3.x コードベースのモジュラー化 Spring 4.1.x Groovy 2.4.x Grails 2.4.x Grails 2.5 Grails 3.0.x 今までと同じアーキテクチャ Grails以外で 使用可能 Standalone GORM Standalone GSP Asset Pipeline Gradle Asset Pipeline Plugin Grails 1.3.x Grails 1.2.x Grails 1.0.x 古代 Grails 2.3.x Grails 2.2.x Grails 2.1.x 近代 時代に合わせると いろいろアレね。 今後はどうすると? Spring Boot 1.2.x Spring 4.1.x Groovy 2.4.x そぎゃんこと言うても、変わっ とだけんしょんなかたい! アーキテクチャが変わった!? アップデート大変!? Spring 4.1なので依存するプラグイン は注意してね。
  • 9. 図解説明 Road to 3.0 Grails 1.3.x Grails 1.2.x Grails 1.0.x 古代 Grails 2.3.x Grails 2.2.x Grails 2.1.x 近代 時代に合わせると いろいろアレね。 今後はどうすると?
  • 10. Road to 3.0 • Road to 3.0 構想 • 3.0リリースというゴールに向けて
 2.4.xから、リファクタリングを開始。
 一部の実装は2.4でも含む。 • Spring Bootをベースにするために。 • コアコードを集中的にリファクタリング • 主要機能は、生Spring BootなどGrails外でも使用できるように 再構築。
 (以前できてた?できかけてた物も再度見直し) • ただゴールのGrails3では一部仕様変わるかもよっ! • なんなら、実際に更新大変かもよっ! • それでもモダンなアーキテクチャにするのだよ!
  • 11. Grails 2.4.x リリース • Spring 4.0 • Java 8 対応 • Groovy 2.3 に更新 • @CompileStatic 対応 • アセットパイプライン • コードベースのモジュラー化 • Hibernate 4 対応 • 単独利用できる GORMとGSP
  • 12. 図解説明 Road to 3.0 Grails 1.3.x Grails 1.2.x Grails 1.0.x 古代 Grails 2.3.x Grails 2.2.x Grails 2.1.x 近代 時代に合わせると いろいろアレね。 今後はどうすると? Spring 4.0.x Groovy 2.3.x コードベースのモジュラー化 Grails 2.4.x Grails以外で 使用可能 Standalone GORM Standalone GSP Asset Pipeline
  • 14. Spring 4.1は Grails 3で対応する(キリッ
  • 17. Grails 2.5 • Grails 2.4 系と同じアーキテクチャ。 • 違い • Groovy 2.4 対応 • Spring 4.1 対応 • いきなり Grails3 だと アレ な人向けに、
 ベースとなるライブラリを
 更新して対応させたバージョン。
        ただし、Spring 4.1の互換に悩む事も。
  • 18. 図解説明 Road to 3.0 Spring 4.0.x Groovy 2.3.x コードベースのモジュラー化 Grails 2.4.x Grails以外で 使用可能 Standalone GORM Standalone GSP Asset PipelineGrails 1.3.x Grails 1.2.x Grails 1.0.x 古代 Grails 2.3.x Grails 2.2.x Grails 2.1.x 近代 時代に合わせると いろいろアレね。 今後はどうすると? Spring 4.1.x Groovy 2.4.x Grails 2.5 今までと同じアーキテクチャ Spring 4.1なので依存するプラグイン は注意してね。
  • 19. 図解説明 Road to 3.0 Spring 4.0.x Groovy 2.3.x コードベースのモジュラー化 Grails 2.4.x Grails以外で 使用可能 Standalone GORM Standalone GSP Asset PipelineGrails 1.3.x Grails 1.2.x Grails 1.0.x 古代 Grails 2.3.x Grails 2.2.x Grails 2.1.x 近代 時代に合わせると いろいろアレね。 今後はどうすると? Spring 4.1.x Groovy 2.4.x Grails 2.5 今までと同じアーキテクチャ Spring 4.1なので依存するプラグイン は注意してね。
  • 20. 図解説明 Road to 3.0 Spring 4.0.x Groovy 2.3.x コードベースのモジュラー化 Grails 2.4.x Grails以外で 使用可能 Standalone GORM Standalone GSP Asset PipelineGrails 1.3.x Grails 1.2.x Grails 1.0.x 古代 Grails 2.3.x Grails 2.2.x Grails 2.1.x 近代 時代に合わせると いろいろアレだね。 今後はどうすると? Spring 4.1.x Groovy 2.4.x Grails 2.5 今までと同じアーキテクチャ Spring 4.1なので依存するプラグイン は注意してね。 Grails 3 の話を始める前に おさえて起きたい内容。 ★ Asset Pipeline ★ スタンドアロンGORM, GSP
  • 21. Asset Pipeline • Web用リソースアセット(CSS,JS,画像)をアレするアレ。 Railsの人にはお馴染みかな。 • Resourcesプラグインに変わりコチラが公式となった。 assetタグ <asset:javascript src="application.js"/> <asset:stylesheet href="application.css"/> <asset:image src="grails_logo.png" height="60" /> application.js //= require jquery //= require_self //= require file_a //= require_tree . console.log('some javascript');
  • 22. Standalone GORM • GORM - Grails O/R マッピング
 Grails3へ向けて外部利用もできるようになった。 • https://github.com/tyama/standalone-gorm-examples
 ↑以下のサンプル詰め合わせ • Groovyスクリプト • GORM MongoDB • GORM Hibernate 4 • Spring Boot • GORM MongoDB • GORM Hibernate 4 デモ
  • 23. Standalone GSP & Spring Boot • Grailsでお馴染みのView層 GSP • https://github.com/grails/grails-boot
  • 24. Road to Grails 3.0 ここで、Grails 2.4.x , 2.5 の話は終了。
  • 25. 図解説明 Road to 3.0 Spring 4.0.x Groovy 2.3.x コードベースのモジュラー化 Grails 2.4.x Grails以外で 使用可能 Standalone GORM Standalone GSP Asset PipelineGrails 1.3.x Grails 1.2.x Grails 1.0.x 古代 Grails 2.3.x Grails 2.2.x Grails 2.1.x 近代 時代に合わせると いろいろアレね。 今後はどうすると? Spring 4.1.x Groovy 2.4.x Grails 2.5 今までと同じアーキテクチャ Spring 4.1なので依存するプラグイン は注意してね。 Grails 3.0.x
  • 27. Grails 3 • 何かに られる形で3/31に3.0.0リリース。 • そしてすぐに3.0.1リリース。 • プロジェクトリーダーは、その後、長期休暇へ。戻ってくるのか!? • 前バージョンから更新はファイル複製! • Spring Bootをベースに構築。 • CoCとCoCのぶつかり合い。良い意味でも悪い意味でも。。 • ビルドシステムをGradleに。 • ビルドを柔軟に。
  • 28. 図解説明 Road to 3.0 Spring 4.0.x Groovy 2.3.x コードベースのモジュラー化 Spring 4.1.x Groovy 2.4.x Grails 2.4.x Grails 2.5 Grails 3.0.x 今までと同じアーキテクチャ Grails以外で 使用可能 Standalone GORM Standalone GSP Asset Pipeline Gradle Asset Pipeline Plugin Grails 1.3.x Grails 1.2.x Grails 1.0.x 古代 Grails 2.3.x Grails 2.2.x Grails 2.1.x 近代 時代に合わせると いろいろアレね。 今後はどうすると? Spring Boot 1.2.x Spring 4.1.x Groovy 2.4.x アーキテクチャが変わった!? Spring 4.1なので依存するプラグイン は注意してね。
  • 29. Grails3 What s new! ザックリ、解説
  • 30. Grails3 What s new! - コアフィーチャ • Groovy 2.4 • AST, Trait, StaticCompile • Spring 4.1 • JMSアノテーション, JCache, WebSocket, 
 Groovyマークアップテンプレート • Spring Boot 1.2 • SpringのSpringによるCoC • Tomcat,Jetty,Undertowコンテナ組込の起動可能Jar • Gradle ビルドシステム • 今までのGantからGradleへ移行! 細かいことは
 Spring詳しい人に聞いて 細かいことは
 Groovy詳しい人に聞いて とりあえず、
 Boot本読んでね。 Gradle本 持ってないの?
  • 32. Grails3 - 何故 Spring Boot? • マイクロサービス
  • 35. モノリス vs マイクロサービス Alvaro Sanchez-Mariscal氏のスライドより。
  • 36. Grails3 - 何故 Spring Boot? • マイクロサービス • ファットJARと組込コンテナ。様々なランタイムに対応。 • Tomcat, Jetty, Undertow
 • モニタリングとヘルスチェックの仕組み • spring-boot-starter-actuator
 • Bootのオートコンフィグレーションの活用。 • 常識的なデフォルト設定 • spring-boot-autoconfigure
 • Springの柔軟性を活用 (今までもこれからも)

  • 38. Grails マイクロサービス • 作成 • grails create-app demo --profile=web-micro • 実行 • grails run-app / インタラクティブモードでもOK • パッケージ • grails package • java -jar build/demo-0.1.jar • 注意点: 現状の問題点 • テストコードがあると動かない • パッケージしたときにgroovy-antがなくて起動しない.. • @Grab('org.codehaus.groovy:groovy-ant:2.4.3') • 物によっては動きが?まあマイクロサービスですから。
  • 39. Grails3 What s new! - コアフィーチャ • アプリケーションプロファイル
  • 40. Keynote: Grails 3.0 Preview Grails3 - プロファイル •アプリケーションのプロファイルを指定することで
 さまざまなタイプのアプリケーション生成に対応。 •プロファイルはgithubリポジトリで管理されている。 •そこに使用可能なプロファイルが提供されている。 スライド流用
  • 41. Keynote: Grails 3.0 Preview Grails3 - プロファイル •リポジトリのprofile階層に使用可能なプロファイルが管理されて いる。 •そこに今後。 ratpackとか他のプロファイルも入る。 •プロファイルでは以下が定義されている。 •プロジェクトスケルトン •テンプレート •コマンド スライド流用
  • 42. Keynote: Grails 3.0 Preview Grails3 - プロファイル - コマンド •yamlでタスクステップを定義。 •groovyでスクリプトを提供も可能。 •GroovyScriptCommandクラスとして実行される。 •コマンド補完などの内容も定義 •コマンド作成用に新たなAPIなども用意されている。 •コード生成用のrender, modelなど。 スライド流用
  • 43. Keynote: Grails 3.0 Preview Grails3 - プロファイル - 継承 •プロファイルは継承できます。 •プロファイルを実装するときは
 近いプロファイルを継承して作成できる。多重継承も可能。 •継承するので、必要追加分のみを定義すればよい。 •不要なスケルトン・コマンドは除外も可能。 •でも、まだ自由にリポジトリを切替はできないのでアレです。 スライド流用
  • 44. Grails3 What s new! - コアフィーチャ • Traitをベースに再デザインされたAPI • Groovy 2.4.x の恩恵! • traitがASTされます!
  • 45. Grails3 What s new! - コアフィーチャ • 内部フローの変更
  • 46. Grails3 What s new! - Webフィーチャ • コントローラアクション用フィルターの廃止。 • Interceptor API に変更。 class MyInterceptor { boolean before() { true } boolean after() { true } void afterView() { // no-op } }
  • 47. Grails3 What s new! - 開発環境フィーチャ • 新たなシェルとコード生成API • 強化されたIDE統合 • Intellij IDEA にgradleプロジェクトとして取込 • アプリケーションメインクラス • static void main をもつ Applicationクラスを実行 • IDEで実行・デバッグも起動できる
  • 48. Grails3 What s new! - テストフィーチャ • インテグレーション • Spring Bootをベースとしたテスト実行の仕組みを使用
 • Gebファンクショナルテスト • create-functional-test で
 Spock/Gebファンクショナルテストを生成
 • Gradleテスト実行 • 並列実行でのテスト実行定義など。
  • 49. What s New だけだとわからんね。
  • 51. デモ • マイクロサービス - コードみましょ。 • 通常App - コードみましょ。 • Grails3 + Spring Boot
  • 52. Grails3 のコードいろいろ • メインファイル grails-app/init/パッケージパス/Application.groovy • Spring Bootと同じ感じだよ。 • 階層がかわった。 • http://grails.github.io/grails-doc/3.0.1/guide/upgrading.html • 定義設定が変わった。Config.groovy DataSource.groovy 廃止 • 今後のメインは application.yml • 今までのGroovyな設定ファイルは application.groovyを作成して書けば良いよ。 • 読込順: yml → groovy → 起動ルートyml → 環境変数 • ログの形式が変わったよ。 logback.groovy • http://logback.qos.ch/manual/groovy.html • Gradleになったから、BuildConfigは無しで、 build.gradle を使うよ! • Grails用のGradleプラグイン
  • 53. Grails3 のいろいろ • Grails2からの移行は結構大変。 • http://grails.github.io/grails-doc/3.0.1/guide/upgrading.html • Grails2で出来たことが実装変わってアレっとなる。 → 慣れろ! • 同時にSpring Bootのマニュアルを読むようになる。 • http://docs.spring.io/spring-boot/docs/1.2.3.RELEASE/reference/html/ • Spring 4.1で提供されている便利な物は使え。 • http://docs.spring.io/spring/docs/4.1.x/spring-framework-reference/html/ • いろいろ解明するまで悩みまくる → まだ情報すくない。 • ドキュメントが嘘つきの時がある。(書いてある事がGrails2の情報だったり) • -noverify
  • 54. Grails3 でのプラグイン • プラグインまだ少ないね!? 現状: 17個 • 今後はbintrayで管理される: https://bintray.com/grails/plugins • Grails 2.4 系でのプラグイン数: 1200個 • Grails3では使えません。どうすんの? 以下でだいたいクリア。 • リソース系: webjarsを活用 • Spring系: オートコンフィグとかでどうにかなるでしょ? • ファンクショナル系: 自分で移行 • ライブラリ系: 依存追加すれば? • テクニカルな: 作者が対応するの待つ or 頑張って自分で実装! • ゴミ系: どうでもいい物もたくさんある。そいつらは気にしない。
  • 55. 図解説明 Road to 3.0 Spring 4.0.x Groovy 2.3.x コードベースのモジュラー化 Spring 4.1.x Groovy 2.4.x Grails 2.4.x Grails 2.5 Grails 3.0.x 今までと同じアーキテクチャ Grails以外で 使用可能 Standalone GORM Standalone GSP Asset Pipeline Gradle Asset Pipeline Plugin Grails 1.3.x Grails 1.2.x Grails 1.0.x 古代 Grails 2.3.x Grails 2.2.x Grails 2.1.x 近代 時代に合わせると いろいろアレね。 今後はどうすると? Spring Boot 1.2.x Spring 4.1.x Groovy 2.4.x そぎゃんこと言うても、変わっ とだけんしょんなかたい! アーキテクチャが変わった!? アップデート大変!? Spring 4.1なので依存するプラグイン は注意してね。
  • 56. Grails3 まとめ • Spring Bootの勉強が必要 • 必須ではないが知っておくと吉。 • むしろ必要でしょ。 • Spring Boot の開発をさらに迅速に! • アノテーション不要開発。 • コード配置場所を定めるCoCでメンテナンスしやすい。 • 小さな物はもちろん、大中規模のアプリやプラグインを活用したモジュラ開発が可能 • キレイに開発すれば、後からSpring Boot化も可能。 • まだバグが多い? • そこまで酷くはない。簡単な回避方法もある……と思う。 • 今までも初物はアレでした。 • Grails2との関係 • 違いが多いので。。。
  • 57. JGGUGに集まれ! • G*ワークショップ • 来週あります!来週金曜日! • Web API祭り! • もっとGrails3の事を知ることができます! • https://jggug.doorkeeper.jp/events/22473