JJUG CCC 20150411 grails3 Spring-boot
-
Upload
tsuyoshi-yamamoto -
Category
Technology
-
view
1.966 -
download
1
Transcript of JJUG CCC 20150411 grails3 Spring-boot
本日のお話
• Grails ? • Road to 3.0
• Grails 2.4.x ~ Grails 2.5 • Grails 3 の話
• 新機能情報など • Grails2との違い。 • Grails 3 とSpring Boot。
Grails て何? (知らない人へ)
• Springフレームワークをベースにドメインドリブンでサクッと開発するフルスタックフレームワーク。
• RoRにインスパイアされてJava/Groovyで開発。 • RoR系なので、CoCです。
• 開発には、ディレクトリベースの規約とGroovy DSLを活用。
図解説明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
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
デモ
図解説明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
• 何かに煽られる形で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! - コアフィーチャ
• 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本 持ってないの?
Grails3 - 何故 Spring Boot?
• マイクロサービス • ファットJARと組込コンテナ。様々なランタイムに対応。
• Tomcat, Jetty, Undertow
• モニタリングとヘルスチェックの仕組み • spring-boot-starter-actuator
• Bootのオートコンフィグレーションの活用。 • 常識的なデフォルト設定
• spring-boot-autoconfigure
• Springの柔軟性を活用 (今までもこれからも)
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') • 物によっては動きが?まあマイクロサービスですから。
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! - 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テスト実行 • 並列実行でのテスト実行定義など。
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