Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

JJUG CCC 20150411 grails3 Spring-boot

4,078 views

Published on

JJUG CCC Grails3 Spring-Boot

Published in: Technology

JJUG CCC 20150411 grails3 Spring-boot

  1. 1. Grails 第3章 進化したSpring-bootベースフレームワーク @tyama
  2. 2. About Me 山本です。岐阜県からきました。 デザイナーです。ウソです twitter: @tyama はてな id:mottsnite
  3. 3. 活動 • 今週のGrails 意訳版 • grails.jp/news • Grailsリリース情報を
 ほぼリアルタイム配信。
 9年目に突入! • はてな id: mottsnite
  4. 4. 本日のお話 • Grails ? • Road to 3.0 • Grails 2.4.x ∼ Grails 2.5 • Grails 3 の話 • 新機能情報など • Grails2との違い。 • Grails 3 とSpring Boot。
  5. 5. 祝!New GRAILS_HOME!(4.9) ↓ Object Computing, Inc. 昔からGroovyに関心を持っている会社です。 Jeff氏が昔いた会社
  6. 6. Grails て何? (知らない人へ) • Springフレームワークをベースに
 ドメインドリブンでサクッと開発する
 フルスタックフレームワーク。 • RoRにインスパイアされてJava/Groovyで開発。 • RoR系なので、CoCです。 • 開発には、
 ディレクトリベースの規約とGroovy DSLを活用。
  7. 7. Road to 3.0 Grails 3.0への道
  8. 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. 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. 10. Road to 3.0 • Road to 3.0 構想 • 3.0リリースというゴールに向けて
 2.4.xから、リファクタリングを開始。
 一部の実装は2.4でも含む。 • Spring Bootをベースにするために。 • コアコードを集中的にリファクタリング • 主要機能は、生Spring BootなどGrails外でも使用できるように 再構築。
 (以前できてた?できかけてた物も再度見直し) • ただゴールのGrails3では一部仕様変わるかもよっ! • なんなら、実際に更新大変かもよっ! • それでもモダンなアーキテクチャにするのだよ!
  11. 11. Grails 2.4.x リリース • Spring 4.0 • Java 8 対応 • Groovy 2.3 に更新 • @CompileStatic 対応 • アセットパイプライン • コードベースのモジュラー化 • Hibernate 4 対応 • 単独利用できる GORMとGSP
  12. 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
  13. 13. Spring 4.0? 今はSpring 4.1だろっ!
  14. 14. Spring 4.1は Grails 3で対応する(キリッ
  15. 15. あとで話あると思うけど、、 更新するの大変なんだろっ? わかっちまえば、そうでもないのだが。。
  16. 16. んじゃ、だすよ。これも。
  17. 17. Grails 2.5 • Grails 2.4 系と同じアーキテクチャ。 • 違い • Groovy 2.4 対応 • Spring 4.1 対応 • いきなり Grails3 だと アレ な人向けに、
 ベースとなるライブラリを
 更新して対応させたバージョン。
        ただし、Spring 4.1の互換に悩む事も。
  18. 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. 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. 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. 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. 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. 23. Standalone GSP & Spring Boot • Grailsでお馴染みのView層 GSP • https://github.com/grails/grails-boot
  24. 24. Road to Grails 3.0 ここで、Grails 2.4.x , 2.5 の話は終了。
  25. 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
  26. 26. Grails 3 Spring Boot Gradle
  27. 27. Grails 3 • 何かに られる形で3/31に3.0.0リリース。 • そしてすぐに3.0.1リリース。 • プロジェクトリーダーは、その後、長期休暇へ。戻ってくるのか!? • 前バージョンから更新はファイル複製! • Spring Bootをベースに構築。 • CoCとCoCのぶつかり合い。良い意味でも悪い意味でも。。 • ビルドシステムをGradleに。 • ビルドを柔軟に。
  28. 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. 29. Grails3 What s new! ザックリ、解説
  30. 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本 持ってないの?
  31. 31. Grails3 - 何故 Spring Boot? • マイクロサービス
  32. 32. マイクロサービス
  33. 33. マイクロサービス
  34. 34. モノリス vs マイクロサービス Alvaro Sanchez-Mariscal氏のスライドより。
  35. 35. Grails3 - 何故 Spring Boot? • マイクロサービス • ファットJARと組込コンテナ。様々なランタイムに対応。 • Tomcat, Jetty, Undertow
 • モニタリングとヘルスチェックの仕組み • spring-boot-starter-actuator
 • Bootのオートコンフィグレーションの活用。 • 常識的なデフォルト設定 • spring-boot-autoconfigure
 • Springの柔軟性を活用 (今までもこれからも)

  36. 36. Grailsでマイクロサービス? なにそれうまいの?
  37. 37. 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') • 物によっては動きが?まあマイクロサービスですから。
  38. 38. Grails3 What s new! - コアフィーチャ • アプリケーションプロファイル
  39. 39. Keynote: Grails 3.0 Preview Grails3 - プロファイル •アプリケーションのプロファイルを指定することで
 さまざまなタイプのアプリケーション生成に対応。 •プロファイルはgithubリポジトリで管理されている。 •そこに使用可能なプロファイルが提供されている。 スライド流用
  40. 40. Keynote: Grails 3.0 Preview Grails3 - プロファイル •リポジトリのprofile階層に使用可能なプロファイルが管理されて いる。 •そこに今後。 ratpackとか他のプロファイルも入る。 •プロファイルでは以下が定義されている。 •プロジェクトスケルトン •テンプレート •コマンド スライド流用
  41. 41. Keynote: Grails 3.0 Preview Grails3 - プロファイル - コマンド •yamlでタスクステップを定義。 •groovyでスクリプトを提供も可能。 •GroovyScriptCommandクラスとして実行される。 •コマンド補完などの内容も定義 •コマンド作成用に新たなAPIなども用意されている。 •コード生成用のrender, modelなど。 スライド流用
  42. 42. Keynote: Grails 3.0 Preview Grails3 - プロファイル - 継承 •プロファイルは継承できます。 •プロファイルを実装するときは
 近いプロファイルを継承して作成できる。多重継承も可能。 •継承するので、必要追加分のみを定義すればよい。 •不要なスケルトン・コマンドは除外も可能。 •でも、まだ自由にリポジトリを切替はできないのでアレです。 スライド流用
  43. 43. Grails3 What s new! - コアフィーチャ • Traitをベースに再デザインされたAPI • Groovy 2.4.x の恩恵! • traitがASTされます!
  44. 44. Grails3 What s new! - コアフィーチャ • 内部フローの変更
  45. 45. Grails3 What s new! - Webフィーチャ • コントローラアクション用フィルターの廃止。 • Interceptor API に変更。 class MyInterceptor { boolean before() { true } boolean after() { true } void afterView() { // no-op } }
  46. 46. Grails3 What s new! - 開発環境フィーチャ • 新たなシェルとコード生成API • 強化されたIDE統合 • Intellij IDEA にgradleプロジェクトとして取込 • アプリケーションメインクラス • static void main をもつ Applicationクラスを実行 • IDEで実行・デバッグも起動できる
  47. 47. Grails3 What s new! - テストフィーチャ • インテグレーション • Spring Bootをベースとしたテスト実行の仕組みを使用
 • Gebファンクショナルテスト • create-functional-test で
 Spock/Gebファンクショナルテストを生成
 • Gradleテスト実行 • 並列実行でのテスト実行定義など。
  48. 48. What s New だけだとわからんね。
  49. 49. とりまコード動かしてみましょう!
  50. 50. デモ • マイクロサービス - コードみましょ。 • 通常App - コードみましょ。 • Grails3 + Spring Boot
  51. 51. 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プラグイン
  52. 52. 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
  53. 53. Grails3 でのプラグイン • プラグインまだ少ないね!? 現状: 17個 • 今後はbintrayで管理される: https://bintray.com/grails/plugins • Grails 2.4 系でのプラグイン数: 1200個 • Grails3では使えません。どうすんの? 以下でだいたいクリア。 • リソース系: webjarsを活用 • Spring系: オートコンフィグとかでどうにかなるでしょ? • ファンクショナル系: 自分で移行 • ライブラリ系: 依存追加すれば? • テクニカルな: 作者が対応するの待つ or 頑張って自分で実装! • ゴミ系: どうでもいい物もたくさんある。そいつらは気にしない。
  54. 54. 図解説明 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なので依存するプラグイン は注意してね。
  55. 55. Grails3 まとめ • Spring Bootの勉強が必要 • 必須ではないが知っておくと吉。 • むしろ必要でしょ。 • Spring Boot の開発をさらに迅速に! • アノテーション不要開発。 • コード配置場所を定めるCoCでメンテナンスしやすい。 • 小さな物はもちろん、大中規模のアプリやプラグインを活用したモジュラ開発が可能 • キレイに開発すれば、後からSpring Boot化も可能。 • まだバグが多い? • そこまで酷くはない。簡単な回避方法もある……と思う。 • 今までも初物はアレでした。 • Grails2との関係 • 違いが多いので。。。
  56. 56. JGGUGに集まれ! • G*ワークショップ • 来週あります!来週金曜日! • Web API祭り! • もっとGrails3の事を知ることができます! • https://jggug.doorkeeper.jp/events/22473
  57. 57. Q&A • 簡単な内容でお願いします。 • Javaはクソではありません。
  58. 58. Thank you. 日本Grails/Groovyユーザーグループ www.jggug.org 59

×