78
@tyama 今年も懲りずに Grails & Groovy eXchange 2014 ロンドンに行ってきた。

Groovy Grails eXchage 2014 報告

Embed Size (px)

Citation preview

Page 1: Groovy Grails eXchage 2014 報告

@tyama

今年も懲りずに Grails & Groovy eXchange 2014 ロンドンに行ってきた。

Page 2: Groovy Grails eXchage 2014 報告

じこしょうかい山本です。岐阜県からきました。 twitter: @tyama はてな id:mottsnite

Page 3: Groovy Grails eXchage 2014 報告

ぐれかつ!!• 今週のGrails 意訳版 • grails.jp/news

• 8年くらい続けているGrailsリリース情報 • はてな id: mottsnite

Page 4: Groovy Grails eXchage 2014 報告

概要• 場所

• The Skills Matter eXchange ロンドン • 時期

• 毎年12月上旬 • 期間

• 2日間

Page 5: Groovy Grails eXchage 2014 報告

歴史

2006年に企画され、2007年に第1回カンファレンスを開催。当時ロンドンでJavaエンジニアに注目を集めたGrails/Groovy・アジャイル・DDDなどの内容中心に情報交換を行うカンファレンス。

Page 6: Groovy Grails eXchage 2014 報告

今までの日本からの参加履歴• 2007

• 2人。内1人スピーカー参加。 • 2010

• 2人。 • 2011

• 4人。 • 2012

• 5人。 • 2013

• 4人。 • 2014

• 2人。内1人スピーカー参加。

Page 7: Groovy Grails eXchage 2014 報告

Grails & Groovy eXchange 2014 今回の特徴。

大まかに分類すると以下の内容に分けられる。

Groovy

Grails

Event Driven Architecture

Micro Service

Page 8: Groovy Grails eXchage 2014 報告

参加したセッションのみを紹介しています。

Page 9: Groovy Grails eXchage 2014 報告

Day 1

セッション1日目

Page 10: Groovy Grails eXchage 2014 報告

Keynote: What's up in the Groovy world?

• Groovyの今までと今後についてのお話。

• Groovy 2.3 • Java8対応。Traits。 • AST変換。NIO2対応など解説。 • JSON・マークアップテンプレート エンジンの高速化。

• ドキュメントデザイン • Groovy 2.4

• Android対応 • Groovy 2.5

• Groovy Macros (PR 470) • Groovy 3

• Antlr4 • もっとJava8

• Groovy/Javaの文法互換が素晴らしいと言い続けるために。 • MOP2

Guillaume LaForge

Page 11: Groovy Grails eXchage 2014 報告

Keynote: What's up in the Groovy world?

Groovy 2.3

• Java8対応。 クロージャ vs ラムダ式

Guillaume LaForge

Page 12: Groovy Grails eXchage 2014 報告

Keynote: What's up in the Groovy world?

Groovy 2.3

• Traits - Java8のインターフェイスデフォルト実装みたいなやつ

• ステートフル • 継承可能。 • 継承のコンフリクトはしないの?

• 後にきた継承が勝ち • ランタイム実装 as で可能2つ付けたいときは withTraits A,B

Guillaume LaForge

Page 13: Groovy Grails eXchage 2014 報告

Keynote: What's up in the Groovy world?

Groovy 2.3

• Traits • 継承可能。 • 継承は後にきた継承が勝ち。

Guillaume LaForge

Page 14: Groovy Grails eXchage 2014 報告

Keynote: What's up in the Groovy world?

Groovy 2.3

• Traits • ランタイム実装 as 2つ付けたいときは withTraits A,B

Guillaume LaForge

Page 15: Groovy Grails eXchage 2014 報告

Keynote: What's up in the Groovy world?

Groovy 2.3 • AST変換。

• @TailRecursive - 再帰処理 • @Sortable - ソート • @Builder -  流れるようなインターフェース実装

• @BaseScript - ベーススクリプト

Guillaume LaForge

Page 16: Groovy Grails eXchage 2014 報告

Keynote: What's up in the Groovy world?

Groovy 2.3 • NIO2対応。

• GDKにJDK7のNIO2をアレしたよ。

Guillaume LaForge

Page 17: Groovy Grails eXchage 2014 報告

Keynote: What's up in the Groovy world?

Groovy 2.3 • JSON高速化。再実装したら超高速になった。

Guillaume LaForge

Page 18: Groovy Grails eXchage 2014 報告

Keynote: What's up in the Groovy world?

Groovy 2.3 • JSON・パースモードの追加。

• INDEX_OVERLAY: 2MB以下に対して高速処理 • CHARACTER_SOURCE: 2MB以上に対して有効 • LAX: 定義ファイルなどに最適。コメントやシングルクォートなどをサポート

※前のJsonSlurperは JsonSlurperClassicにリネームされました。

Guillaume LaForge

Page 19: Groovy Grails eXchage 2014 報告

Keynote: What's up in the Groovy world?

Groovy 2.3 • マークアップテンプレートエンジンの高速化。

• 静的コンパイルで高速レンダリング。 • サフィックスノーテーションで国際化 → _fr_FR.tpl • カスタムベーステンプレートクラス。 • Spring-Bootで承認済み。 • include機能。

Guillaume LaForge

Page 20: Groovy Grails eXchage 2014 報告

Keynote: What's up in the Groovy world?

Groovy 2.3 • ドキュメントデザイン変更。 • サイトもcodehausから独自サイトに移動。

• http://groovy-lang.org

Guillaume LaForge

Page 21: Groovy Grails eXchage 2014 報告

Groovy 2.4

(2015 初旬リリース予定)

Page 22: Groovy Grails eXchage 2014 報告

Keynote: What's up in the Groovy world?

Groovy 2.4 • Android対応 • 実際にGr8confアプリをリリースしている。 • New Yorkタイムスが超注目。

Guillaume LaForge

NY Timeが採用。 求人もしている。

Page 23: Groovy Grails eXchage 2014 報告

Keynote: What's up in the Groovy world?

Groovy 2.4 • @SelfType

Guillaume LaForge

Page 24: Groovy Grails eXchage 2014 報告

Keynote: What's up in the Groovy world?

Groovy 2.4 • StreamingTemplateEngine

Guillaume LaForge

Page 25: Groovy Grails eXchage 2014 報告

Groovy 2.5

(2015末リリース予定)

Page 26: Groovy Grails eXchage 2014 報告

Keynote: What's up in the Groovy world?

Groovy 2.5 • Groovy Macros (PR 470)

• https://github.com/groovy/groovy-core/pull/470 • シンプルにAST変換を作成。 • AstBuilderよりもパワフルかつ制限を少なく。

Guillaume LaForge

Page 27: Groovy Grails eXchage 2014 報告

Groovy 3.0

(2016以降のどこか)

Page 28: Groovy Grails eXchage 2014 報告

Keynote: What's up in the Groovy world?

Groovy 3 • Antlr4

• 現在は2を使用している。もう3も4も出ているし。 • もっとJava8

• Groovy/Javaの文法互換が素晴らしいと言い続けるために。

• MOP2 • 2008年くらいから言ってるやつ。

Guillaume LaForge

Page 29: Groovy Grails eXchage 2014 報告

–Guillaume LaForge

“Groovy Rocks the JVM since 2003”

Page 30: Groovy Grails eXchage 2014 報告

セッションの合間はこんな感じ

Page 31: Groovy Grails eXchage 2014 報告

Groovy AST Transformations And Type Checking Extensions

• コンパイラーでメタプログラミング。 • AST変換の解説とライブコーディング。

Jeff Brown

Grails3ではTraitをASTしている。

Page 32: Groovy Grails eXchage 2014 報告

• GrailsでSPA (シングルページアプリケーション)開発の解説。 • フロントエンドはangularでREST APIを使ったSPA開発 • REST使えばサーバーサイドのテストもシンプル • UI側は Karma(テストランナー)とBDDのJasmineを使って、TravisCIでCI。

Feed Your Grails KarmaVladimír Oraný

Page 33: Groovy Grails eXchage 2014 報告

Stateless authentication for microservices

• RESTfulアプローチでの認証の話。 • OAuth2の解説。 • JWT: JSON Web Tokenの解説。 • Spring Security RESTプラグインの中の人

• http://grails.org/plugin/spring-security-rest

Alvaro Sanchez-Mariscal

Page 34: Groovy Grails eXchage 2014 報告

Developing API Platform in Groovy at Ratuken

• 楽天のAPIプラットフォームをGroovyで開発したお話。 • 一日のアクセスが 160,000,000という環境。 • 彼の部署ではGroovyを活用! • Groovyの青本もってます!と。

• 環境を解説。 • Spring MVC をGroovyで。 • Groovy, Spock, Gradle, Jenkins。 • Groovy + MongoDB。 • Groovy & Cloud Foundry。 • Groovy + Hadoop/Hive, Clustrix, splunk。 • Groovy + virgo (Spring dm Server)/ OSGi

Shuichi Suzuki

Page 35: Groovy Grails eXchage 2014 報告

Groovy VFS

• Apache VFSのDSL実装「Groovy VFS」の話。 • リモートFTP, SFTP & HTTPをワンラインでオペレーションできる優れもの!

Schalk Cronjé

def vfs = new VFS()vfs { cp "http://from/a.txt",

"sftp://to/b.txt"}

Page 36: Groovy Grails eXchage 2014 報告

Modular Monoliths with Grails 3 and Spring Boot

• MonolithのをGrails3でモジュラする話。哲学的に。Lari Hotari

Page 37: Groovy Grails eXchage 2014 報告

Park Bench Discussion

Page 38: Groovy Grails eXchage 2014 報告

Day 2

セッション2日目

Page 39: Groovy Grails eXchage 2014 報告

Keynote: Grails 3.0 Preview

Grails3についてのお話がメイン!! • Grails 2.4のおさらい。 • Grails 2.4.5 • Grails 3!

• 他のカンファレンスよりも開発が進んでいるので完成度の高いデモが見られました。

Graeme Rocher

Page 40: Groovy Grails eXchage 2014 報告

Keynote: Grails 3.0 Preview

• Grails 2.4のおさらい。 • Spring 4.0 • Java 8 対応 • Groovy 2.3 に更新 • @CompileStatic 対応 • アセットパイプライン • コードベースのモジュラー化 • HIbernate4対応 • 単独利用できる GORMとGSP

Graeme Rocher

Page 41: Groovy Grails eXchage 2014 報告

Keynote: Grails 3.0 Preview

Grails 2.4 • コードベースのモジュラー化 • Grails3に向けて大切なリファクタリングステップ。

Graeme Rocher

Page 42: Groovy Grails eXchage 2014 報告

Keynote: Grails 3.0 Preview

Grails 2.4 • これもGrails3に向けて先行対応。 • 単独利用可能なGORMとGSP。 • Spring-Bootでも使えます。

Graeme Rocher

Page 43: Groovy Grails eXchage 2014 報告

Keynote: Grails 3.0 Preview

Grails 2.4 • GORM for MongoDB 3.0 • Spring-Bootにも対応。 • これもGrails3に向けて先行対応。

Graeme Rocher

Page 44: Groovy Grails eXchage 2014 報告

Keynote: Grails 3.0 Preview

Grails 2.4.5 くるよ! • Grails 2.4.x の TODOリスト!

• Grails 2.4.5 リリース • Spring Security Core 2.0.GAリリース • 今後も引き続きメンテナンス • バグフィックス

Graeme Rocher

Page 45: Groovy Grails eXchage 2014 報告

Grails3

Page 46: Groovy Grails eXchage 2014 報告

Keynote: Grails 3.0 Preview

Grails3 •Gradleをビルドシステムに組込 •パッケージング・デプロイの抽象化 •Servletコンテナの外へ •アプリプロファイル: Netty,Servlet,Batch,Hadoopなど。 •run-app / 実行可能 jarファイル •Grailsの領域を拡大

Graeme Rocher

Page 47: Groovy Grails eXchage 2014 報告

Keynote: Grails 3.0 Preview

Grails3 •Spring Boot 上に構築。 •プラグインシステムとイベント •マルチプロジェクトビルド •マイクロサービス対応 •膨れた部分を取り除く •依存を減らす

Graeme Rocher

Page 48: Groovy Grails eXchage 2014 報告

Keynote: Grails 3.0 Preview

Grails3 - Gradle対応 •現在のビルドシステムは非推奨に。 •ビルドはGradleで行う。 •分離されたビルドプラグインの提供でGradle機能拡張の提供。

Graeme Rocher

Page 49: Groovy Grails eXchage 2014 報告

Keynote: Grails 3.0 Preview

Grails3 デモ!Graeme Rocher

Page 50: Groovy Grails eXchage 2014 報告

Keynote: Grails 3.0 Preview

Grails3 デモ内容 •grails create-app •IntelliJ IDEAで、gradleプロジェクトとして開けます。 •もちろんインタラクティブコンソールあるよ。 •コマンド補完。オプションも補完。 •run-app で起動。 •package コマンド。でパッケージビルド。 •grails-app/init/Application.groovyをそのまま実行で起動。 •-noverifyを指定するとホットリロードもできる。 •create-functional-test はGebテストを生成するよ。 •JUnit実行でテストできるよ。

Graeme Rocher

Page 51: Groovy Grails eXchage 2014 報告

Keynote: Grails 3.0 Preview

Grails3 デモ内容 •grails package コマンド実行 •jar & warを生成。 •生成された war ファイルを実行! •Tomcatとかにwarを入れるのもOK

Graeme Rocher

Page 52: Groovy Grails eXchage 2014 報告

Keynote: Grails 3.0 Preview

Grails3 デモ内容 •build.gradle の中身解説 •Gradleプラグインが指定されている。 •spring-boot •war •asset-pipeline •grails-core •grails-gsp

Graeme Rocher

Page 53: Groovy Grails eXchage 2014 報告

Keynote: Grails 3.0 Preview

Grails3 デモ内容 •build.gradle の中身解説 •Grailsプラグインは dependenciesに指定。

Graeme Rocher

Page 54: Groovy Grails eXchage 2014 報告

Keynote: Grails 3.0 Preview

Grails3 - Spring Boot との関係 •組込サーバ •tomcatプラグインは無いですよ。 •実行可能 jar •WARパッケージング •スクリプティング / マイクロサービス

Graeme Rocher

Page 55: Groovy Grails eXchage 2014 報告

Keynote: Grails 3.0 Preview

Grails3 - 何故 Spring Boot ? •ファットJARと組込 •様々なランタイムに対応 •モニタリングとヘルスチェックの仕組み •Bootのオートコンフィグレーションの活用。

Graeme Rocher

Page 56: Groovy Grails eXchage 2014 報告

Keynote: Grails 3.0 Preview

Grails3 •そしてマイクロサービスのデモ! •こんなんが動くんです!

Graeme Rocher

Page 57: Groovy Grails eXchage 2014 報告

Keynote: Grails 3.0 Preview

Grails3 - マイクロサービス •grails create-app demo --profile=web-micro •ソースが2つ!?

•必要なコードはApplication.groovyに書く。

Graeme Rocher

Page 58: Groovy Grails eXchage 2014 報告

Keynote: Grails 3.0 Preview

Grails3 - マイクロサービス •インタラクティブモード •プロファイルが変わったから使えるコマンドも変わる。

Graeme Rocher

Page 59: Groovy Grails eXchage 2014 報告

Keynote: Grails 3.0 Preview

Grails3 - プロファイル •アプリケーションのプロファイルを指定することでさまざまなタイプのアプリケーション生成に対応。 •プロファイルはgithubリポジトリで管理されている。 •そこに使用可能なプロファイルが提供されている。

Graeme Rocher

Page 60: Groovy Grails eXchage 2014 報告

Keynote: Grails 3.0 Preview

Grails3 - プロファイル •リポジトリのprofile階層に使用可能なプロファイルが管理されている。 •そこに今後。 ratpackとか他のプロファイルも入る。 •プロファイルでは以下が定義されている。 •プロジェクトスケルトン •テンプレート •コマンド

Graeme Rocher

Page 61: Groovy Grails eXchage 2014 報告

Keynote: Grails 3.0 Preview

Grails3 - プロファイル - コマンド •yamlでタスクステップを定義。 •groovyでスクリプトを提供も可能。 •GroovyScriptCommandクラスとして実行される。 •コマンド補完などの内容も定義 •コマンド作成用に新たなAPIなども用意されている。 •コード生成用のrender, modelなど。

Graeme Rocher

Page 62: Groovy Grails eXchage 2014 報告

Keynote: Grails 3.0 Preview

Grails3 - プロファイル - 継承 •プロファイルは継承できます。 •プロファイルを実装するときは近いプロファイルを継承して作成できる。多重継承も可能。 •継承するので、必要追加分のみを定義すればよい。 •不要なスケルトン・コマンドは除外も可能。

Graeme Rocher

Page 63: Groovy Grails eXchage 2014 報告

Keynote: Grails 3.0 Preview

Grails3 - 無くなる物!!! Graeme Rocher

Page 64: Groovy Grails eXchage 2014 報告

Keynote: Grails 3.0 Preview

Grails3 - フローが変わる! Graeme Rocher

Page 65: Groovy Grails eXchage 2014 報告

Keynote: Grails 3.0 Preview

Grails3 - シンプル化された恩恵は?! •メンテナンス性の向上 •パフォーマンスの向上 •Springとのより良い統合 •依存が少なく •内部フォワードが無くなる

Graeme Rocher

Page 66: Groovy Grails eXchage 2014 報告

Keynote: Grails 3.0 Preview

Grails3 - メタプログラミングの進化。 •Grails1 - Expando •Grails2 - AST •Grails3 - TraitsとAST

Graeme Rocher

Page 67: Groovy Grails eXchage 2014 報告

–オレ氏

“これは期待できそうだ。”

Page 68: Groovy Grails eXchage 2014 報告

セッションの合間はこんな感じ

Page 69: Groovy Grails eXchage 2014 報告

Groovy and Android: a winning pair

• ニューヨークタイムスがGroovyを使うとか。 • 採用理由

• AndroidにはJava8がなくてラムダもない。 • Groovyは読みやすい。 • タイプセーフに対応してはStaticCompile対応したからOK • GroovyはJavaの先を行っている、そしてシームレスにJavaと連携、ブリッジが不要。

• Andoridスタジオ使ってね。便利。 • プロジェクト作成したらbuild.gradleにgroovyの依存を注入。

Guillaume LaForge

Page 70: Groovy Grails eXchage 2014 報告

• リアルタイムな世界でのGrails • Grailsで、Springインテグレーションの話。 • コードを追って解説してくれました。わかりやすい!

Grails and the real-time worldIván López

Page 71: Groovy Grails eXchage 2014 報告

Micro Service Architecture with Spring Boot and Groovy

• GVMの中の人。 • Spring BootとGroovyはトモダチ。

• TDDでspring-bootアプリをGroovyで構築するハンズオン • 受け入れテストはCucumbeで記述。 • UnitテストはSpockで記述。 • GroovyでSpring-bootの簡単なアプリを作成。

• 動画必見。

Marco Vermeulen

Page 72: Groovy Grails eXchage 2014 報告

RESTful Grails 2

• Grails2でのRESTの話。 • バインドの深い部分の解説もあった。ハズ。 • コンパイルタイムに追加しているっぽい。

Jeff Brown

Page 73: Groovy Grails eXchage 2014 報告

Forces on Groovy Architecture

この人の話はいつも難しい。 アーキテクチャて何? アーキテクチャ vs デザイン。ですか? アーキテクチャはフィロソフィー あんたの哲学は? • そんな感じの話から自信がマイクロサービスを活用している案件の事例を紹介。

David A. Dawson

Page 74: Groovy Grails eXchage 2014 報告

Groovy, with style

• 最後のセッション。 • Guillaume氏がGroovy歴11+の経験値でお送りします。 • Groovyのスタイルガイド。

• イメージ写真でクイズを出しながら解説。 • Groovyコードをキレイに書こう!

Guillaume LaForge

Page 75: Groovy Grails eXchage 2014 報告

最後に参加方法!

https://skillsmatter.com/conferences/6863-groovy-grails-exchange-2015

Page 76: Groovy Grails eXchage 2014 報告

他の海外Gアスタなカンファレンス達。• 2015/1/10

• Grails Conf ニューデリー・インド • 2015/4/10-11

• Greach マドリッド・スペイン • 2015/6/2-4

• GR8confヨーロッパ コペンハーゲン・デンマーク, • 2015/7

• GR8conf US ミネアポリス・USA • 2015/6/11-12

• Gradle Summit 2015 サンタクララ・USA • 2015/9/14-17

• SpringOne 2GX 2015, ワシントン・USA • 2015/12/14-15

• Groovy Grails Exchange 2015 ロンドン・UK

Page 77: Groovy Grails eXchage 2014 報告

Groovy & Grails eXchange 2014 動画はコチラから。

https://skillsmatter.com/conferences/1957-groovy-grails-exchange-2014

今週のGrails 2014-50 意訳版からもリンクがあります

http://grails.jp/news/2014-50.html

Page 78: Groovy Grails eXchage 2014 報告

Thank you.

日本Grails/Groovyユーザーグループ

www.jggug.org78