Slide 1

Slide 1 text

GradleではじめるGroovy expand @grimrose 2014-11-15 JJUG CCC 2014 Fall R1-4 #ccc_r14

Slide 2

Slide 2 text

あなた誰? ● twitter: @grimrose ● 好きな言語: Groovy ● 好きなIDE: IntelliJ IDEA

Slide 3

Slide 3 text

Agenda ● Gradleとは? ● Gradle徹底入門 ● Groovy REPL ● Gradle Groovysh Plugin ● Groovyとは?

Slide 4

Slide 4 text

Gradleとは?

Slide 5

Slide 5 text

Gradleについて ● 全く知らない? ● 聞いたことがある? ● 触ったことがある? ● 使っている? ● Plugin書いてる? ● 俺がGradleだ!

Slide 6

Slide 6 text

Gradleとは? ● 次世代ビルドツール ● not XML ● Groovy DSL ● Apache License, Version 2.0

Slide 7

Slide 7 text

Gradleとは? ● 主にJava、Groovyで実装 ● Java8対応 ● Groovy: 2.3.x

Slide 8

Slide 8 text

Gradleとは? ● version 2.2 ○ 2014-11-10 リリース ○ リリースは約6~8週間毎

Slide 9

Slide 9 text

Gradle 2.2 ● Component Selection Rules ● Declaring module replacements ● Sonar Runner plugin improvements ● Native language cross-compilation improvements ● Support for building x64 binaries on Windows using GCC ● Specify version control system for IntelliJ IDEA ● Specify location of local maven repository independently ● Compatibility with OpenShift ● Support for renaming imported Ant targets ● Sharing configuration files across builds ● Plugin to package and publish plugins

Slide 10

Slide 10 text

Gradle 2.2 ● Declaring module replacements ● Plugin to package and publish plugins

Slide 11

Slide 11 text

Declaring module replacements ライブラリのグループIDが 変わってしまった時に、 置換して検索する方法を指定できる

Slide 12

Slide 12 text

Declaring module replacements ● com.google.collections:google-collections ○ -> com.google.guava:guava ● org.jboss.netty ○ -> io.netty ● spring ○ -> spring-core

Slide 13

Slide 13 text

Plugin to package and publish plugins plugindev pluginを使用することで、 今までよりPluginの公開が簡単に

Slide 14

Slide 14 text

Gradle 2.2 Gradle 2.2, 2.3 news #jggug www.slideshare.net/KyonMm/gradle-22-23- news-jggug

Slide 15

Slide 15 text

師曰く 「世界で一番イケてる ビルドツール」

Slide 16

Slide 16 text

あなたとGradle 今すぐインストール

Slide 17

Slide 17 text

GVM Groovy enVironment Manager

Slide 18

Slide 18 text

GVMのインストール $ curl -s get.gvmtool.net | bash

Slide 19

Slide 19 text

posh-gvm Windows環境でのGroovy/Grails開発を 幸せにする!? GVMクローンposh-gvmを使ってみる qiita. com/_y_u_/items/7a4ffd6b79c829c99 62f

Slide 20

Slide 20 text

Gradleのインストール $ gvm i gradle

Slide 21

Slide 21 text

Gradle徹底入門

Slide 22

Slide 22 text

Gradle徹底入門 Gradle徹底入門 次世代ビルドツールによる自動化基盤の構築

Slide 23

Slide 23 text

Gradle徹底入門

Slide 24

Slide 24 text

Gradle徹底入門 ご出版 おめでとうございます!

Slide 25

Slide 25 text

Gradle徹底入門 既に購入済みの人?

Slide 26

Slide 26 text

Gradle徹底入門 ● 導入編 ● 基礎編 ● 実践編 ● 発展編

Slide 27

Slide 27 text

Gradle徹底入門 592ページ

Slide 28

Slide 28 text

Gradle徹底入門 Gradleを とりあえず使ってみたい

Slide 29

Slide 29 text

Gradle徹底入門 ● 導入編 ○ Gradleの世界 ○ インストールと設定 ○ スタートアップGradle ● 基礎編 ○ Javaプロジェクトのビルド

Slide 30

Slide 30 text

Gradle徹底入門 Gradleの設定方法が いまいち分からない

Slide 31

Slide 31 text

Gradle徹底入門 ● 基礎編 ○ Gradleの基礎 ○ スクリプトファイルの記述 ○ 依存関係の管理 ● 実践編 ○ Androidプロジェクトでの適用

Slide 32

Slide 32 text

Gradle徹底入門 開発プロセスに取り入れたい

Slide 33

Slide 33 text

Gradle徹底入門 ● 実践編 ○ Gradleでのテスト ○ 統合開発環境(IDE)との連携 ● 発展編 ○ Jenkinsとの連携 ○ アーカイブの作成とファイルの公開

Slide 34

Slide 34 text

Gradle徹底入門 厚いし重い

Slide 35

Slide 35 text

Gradle徹底入門 Kindle

Slide 36

Slide 36 text

Gradle徹底入門 ぜひ、お手元に一冊

Slide 37

Slide 37 text

Gradle徹底入門 Gradle Plugin

Slide 38

Slide 38 text

Gradle Plugin 標準プラグイン

Slide 39

Slide 39 text

Gradle Plugin 3rd party Plugin

Slide 40

Slide 40 text

Gradle Plugin plugins.gradle.org

Slide 41

Slide 41 text

Gradle Plugin 個人的におすすめ

Slide 42

Slide 42 text

Gradle Plugin coverallsのバッジ

Slide 43

Slide 43 text

Gradle Plugin coveralls-gradle-plugin (github.com/kt3k/coveralls-gradle-plugin)

Slide 44

Slide 44 text

Gradle Plugin 標準のJetty Pluginの versionが古い

Slide 45

Slide 45 text

Gradle Plugin Gretty (github.com/akhikhl/gretty)

Slide 46

Slide 46 text

Gradle Plugin APサーバにデプロイしたい

Slide 47

Slide 47 text

Gradle Plugin Gradle Cargo plugin (github.com/bmuschko/gradle-cargo-plugin)

Slide 48

Slide 48 text

Gradle Plugin Androidでも Groovyを使いたい

Slide 49

Slide 49 text

Gradle Plugin Groovy on Android (github.com/melix/groovy-android-gradle-plugin)

Slide 50

Slide 50 text

Gradle + Arquillian Gradleでも Arquillianを使いたい

Slide 51

Slide 51 text

Gradle + Arquillian ShrinkWrap Resolvers (github.com/shrinkwrap/resolver)

Slide 52

Slide 52 text

話すこと ● 導入編 ○ Gradleの世界 ○ スタートアップ Gradle ● 基礎編 ○ Gradleの基礎 ○ スクリプトファイルの記述 ● Appendix ○ E. Groovy リファレンス

Slide 53

Slide 53 text

話さないこと ● 実践編 ● 発展編

Slide 54

Slide 54 text

Gradle徹底入門 続きは本で

Slide 55

Slide 55 text

Groovy REPL

Slide 56

Slide 56 text

言語を学ぶ ちょっと試しながら

Slide 57

Slide 57 text

言語を学ぶ REPL

Slide 58

Slide 58 text

Read Eval Print Loop REPL 欲しいですよね?

Slide 59

Slide 59 text

Java REPL albertlatacz/java-repl

Slide 60

Slide 60 text

Java REPL $ java -jar javarepl.jar

Slide 61

Slide 61 text

Java REPL Project Kulla

Slide 62

Slide 62 text

Groovy REPL Groovy Shell

Slide 63

Slide 63 text

Groovy Shell $ gvm i groovy

Slide 64

Slide 64 text

Groovy Console $ groovyConsole

Slide 65

Slide 65 text

Groovy Shell $ groovysh

Slide 66

Slide 66 text

Gradle Groovysh Plugin

Slide 67

Slide 67 text

Gradle Groovysh Plugin gradle-groovysh-plugin (github.com/tkruse/gradle-groovysh-plugin)

Slide 68

Slide 68 text

build.gradle buildscript { repositories { jcenter() } dependencies { classpath 'com.tkruse.gradle:gradle-groovysh-plugin:1.0.1' } } apply plugin: 'com.github.tkruse.groovysh' apply plugin: 'java'

Slide 69

Slide 69 text

build.gradle (2.1〜) plugins { id 'com.github.tkruse.groovysh' version '1.0.1' } apply plugin: 'java'

Slide 70

Slide 70 text

注意点 ● プロジェクトをロックしてしまう。 ○ 使用中は、IntelliJ IDEA等でGradleプロ ジェクトの更新が出来ない。 ● -q オプションを使う ○ Gradleのログが出力されて使いづらい ● --no-daemon オプションを使う ○ Gradleをdaemonで動かしてる人は注意。

Slide 71

Slide 71 text

起動 $ ./gradlew -q shell

Slide 72

Slide 72 text

終了 ● Ctrl + c ● :exit ○ :x ● :quit ○ :q

Slide 73

Slide 73 text

Groovy Shell groovy-lang.org/groovysh.html

Slide 74

Slide 74 text

Groovyとは?

Slide 75

Slide 75 text

Groovyとは ● 選択的型付け言語 ● Javaより簡潔 ● Javaの資産が使える ● スクリプトも書ける ● セミコロンレス ● etc...

Slide 76

Slide 76 text

Groovy groovy-lang.org

Slide 77

Slide 77 text

プログラミングGROOVY

Slide 78

Slide 78 text

Groovy Java SEの標準APIを 拡張

Slide 79

Slide 79 text

GDK Groovy Development Kit

Slide 80

Slide 80 text

Groovy Stream API と GDK

Slide 81

Slide 81 text

Stream API と GDK ● filter ● forEach ● map ● reduce ● flatMap ● findAll ● each ● collect ● inject ● flatten ○ (+ collect)

Slide 82

Slide 82 text

Stream API と GDK ● allMatch ● anyMatch ● collect ● distinct ● count ● max ● min ● sorted ● every ● any ● collect ● unique ● size ● max ● min ● sort

Slide 83

Slide 83 text

Gradle Groovy DSL

Slide 84

Slide 84 text

Gradle task hello << { println “Hello Gradle !” }

Slide 85

Slide 85 text

Closure groovy.lang.Closure

Slide 86

Slide 86 text

Closure { 引数 -> 式 }

Slide 87

Slide 87 text

ファイル操作 task createTextFile << { def f = file ‘sample.txt’ f.write ‘Hello Gradle !’ println f.text }

Slide 88

Slide 88 text

ファイル操作 copy { from ‘src’ into ‘dist’ }

Slide 89

Slide 89 text

ファイル操作 CopySpec

Slide 90

Slide 90 text

Template engines ● xxx.properties ● jetty.xml ● context.xml ● application.yml ● etc…

Slide 91

Slide 91 text

Template engines ● 複数行String ● groovy.text ○ SimpleTemplateEngine ● groovy.text.markup ○ MarkupTemplateEngine

Slide 92

Slide 92 text

Template engines groovy-lang.org/templating.html

Slide 93

Slide 93 text

Power Assert Spock

Slide 94

Slide 94 text

Power Assert assert 式

Slide 95

Slide 95 text

Power Assert groovy:000> a = 1 ===> 1 groovy:000> b = 2 ===> 2 groovy:000> assert a == b ERROR org.codehaus.groovy.runtime.powerassert. PowerAssertionError: assert a == b | | | 1 | 2 false groovy:000>

Slide 96

Slide 96 text

演算子オーバーロード log4jdbcを 本番には入れられない でも、 開発中は使いたい

Slide 97

Slide 97 text

演算子オーバーロード configurations { excludeFromProd } dependencies { runtime 'com.googlecode.log4jdbc:log4jdbc:1.2' runtime 'org.postgresql:postgresql:9.3-1102-jdbc41' excludeFromProd 'com.googlecode.log4jdbc:log4jdbc:1.2' } war { if (env == 'prod') { classpath -= configurations.excludeFromProd } }

Slide 98

Slide 98 text

まとめ

Slide 99

Slide 99 text

● www.gradle.org/docs/ ○ current ○ release-candidate ○ nightly Gradleチョットデキル

Slide 100

Slide 100 text

github.com/gradle/gradle Gradleチョットデキル

Slide 101

Slide 101 text

Groovy in Action Second Edition Groovyチョットデキル

Slide 102

Slide 102 text

Groovyチョットデキル

Slide 103

Slide 103 text

まとめ Gradle Wrapperがあれば Groovyが使える

Slide 104

Slide 104 text

まとめ Gradleに慣れると 知らないうちに Groovyが使えるようになる

Slide 105

Slide 105 text

まとめ Groovyが使えると 仕事が捗る

Slide 106

Slide 106 text

まとめ Let’s enjoy Groovy!

Slide 107

Slide 107 text

最後に宣伝 #jggug

Slide 108

Slide 108 text

最後に宣伝 #yokohamagroovy #mattarigrails

Slide 109

Slide 109 text

最後に ご清聴 ありがとうございました。