Macにgroovyをインストールする

Macにgroovyをインストールする

MacでGradleを勉強するためにgroovyをインストールしました。

ターミナルで

curl -s "https://get.sdkman.io" | bash

と入力し、実行します。

完了したら、新しいターミナルで

source "/Users/takahashi/.sdkman/bin/sdkman-init.sh"

と入力します。(各環境に合わせて修正してください)

最後に

sdk install groovy

でインストール完了です。

GroovyConsoleを起動する

groovyをインストールしたら、GroovyConsoleを起動します。

groovyConsole &

で以下が起動できます。

Macにgroovyをインストールする

groovyConsole上でプログラムを記述することができます。

def a = "hello" // String型に暗黙型変換
println a

上記コードを書いて、command + rでプログラムが実行されます。

def

変数宣言の際に使用します。defは型指定が行われない(暗黙型変換される)のでコードを書くときはdefより明示的に型指定して変数宣言する方が望ましいです。

groovyはJavaと同じ型が使用できるのでJava経験者ならわかりやすい言語だと思います。

String a = "hello"
println a

if文

groovyはif文が書けます。

String a = "hello"
if (a == "hello") {
  println a
} else if (a == "test"){
  println "test"
} else {
  println "other"
}

for文

groovyでは色々なfor文が用意されています。

List<Integer> list =[0,1,2]

for(int i=0;i<list.size();i++){
  println list[i]
}

上記コードはリストをループしています。

リストの場合はforの代わりにeachを使用することができます。

List<Integer> list =[0,1,2]

list.each{
  println it
}

eachではitと言う変数が用意されており、itに値が入っていきます。

itを使用しない場合は以下のように記述します。

List<Integer> list =[0,1,2]
// 型省略
list.each{value ->
  println value
}
// 型指定
list.each{Integer value ->
  println value
}

foreach文

foreachも使えます。

List<Integer> list =[0,1,2]

for (i in list){
  println i
}

times

数値に対してループすることができます。

5.times{
  print it // 01234
}

switch文

switch文が使えます。

def s = 3;

switch(s) {
  case 's':
    println s
    break
  case 0..10:
    println s
    break
  default:
    println 'default';
}

Range

範囲オブジェクトと言うRangeを作成することができます。

1..3 → 1から3を表すオブジェクト

1…3→ 1から2を表すオブジェクト

“a”..”c”→ aからcを表すオブジェクト

Rangeは以下のようにループすることができます。

1..3.each{
  print it // 3
}

(1..3).each{
  print it // 123
}

カッコをつけないと意図する結果にならないので注意です。範囲オブジェクトを変数に代入すればカッコは不要です。

def a = 1..3;
a.each{
  print it // 123
}

リストのcollectメソッド

リストにはcollectメソッドが用意されています。このメソッドを使用すると各要素を順番に処理することができます。戻り値があります。

List<Integer> list =[0,1,2]

List<Integer> list2 = list.collect{ it * 2}

for(i in list2){
  println(i) // 0 2 4となる
}

リストのinjectメソッド

JSで言うreduceみたいなメソッドです。

各要素を次々処理するメソッドで以下は合計を算出します。

List<Integer> list = [1,2,3]
def ret = list.inject{x,y ->
  x + y
}
println ret // 6

リストのfindメソッド

リスト内の条件に合致する要素の一番最初の要素を返します。

List<Integer> list = [1,2,3,4]
def ret = list.find{
  it > 3
}
println ret // 4

リストのfindAllメソッド

リスト内の条件に合致する要素のリストを返します。

List<Integer> list = [1,2,3,4]
def ret = list.findAll{
  it > 2
}
println ret // [3,4]

リストのmax/minメソッド

リスト内の最大値、もしくは最小値を返します。

List<Integer> list = [1,2,3,4]
def ret = list.max()
println ret // 4
ret = list.min()
println ret // 1

リストにリストを追加する

リストにリストを追加するには+でリストを連結するだけです。

List<Integer> list1 = ['a','b','c','d']
List<Integer> list2 = [1,2,3]
println list1 + list2 // [a,b,c,d,1,2,3]

リストから特定のリストを削除する場合はマイナスを使用します。

List<Integer> list1 = ['a','b','c','d']
List<Integer> list2 = ['a','c']
println list1 - list2 // [b,d]

コメント文

groovyのコメントはJavaと同じです。

//で、その行の末尾までコメントアウトします。

/* 〜 */で複数行コメントアウトできます。

String

GroovyのStringはダブルクオーテーションで囲むと${}の置換変数を展開することができます。

このStringはgroovy.lang.GString型になりますが、必要に応じてjava.lang.Stringに強制的に変換されます。

def age = 10
String str = "${age}" + "歳"
println str

Bean

Groovyではクラス定義ができます。Javaのようにgetter/setterを記述する必要がなく、lombokを使用する必要もありません。フィールドをprivateにしなければgetter/setterが自動的に用意されます。

class Sample{
  Integer id;
  String name;
}

s = new Sample(id:1,name:'takahashi'); // 引数付きコンストラクタ
println s.getName() // takahashi

マップを定義する

Groovyではマップが定義できます。java.util.HashMapに当たります。

リストと記述方法は似ていますが、key:valueで記述します。

def map = ['key1':'value1','key2':'value2']

for(a in map) {
  println a.key
}
// key1
// key2

build.gradle

Spring BootでGradleプロジェクトを作成するとデフォルトでbuild.gradleファイルが配置されます。

このファイルはgroovyベースで記述されており、多少はgroovy言語を知っていないと困ることがあります。ここではbuild.gradleで使うことがある文法を紹介します。

buildscriptブロック

buildscriptブロックはビルドスクリプト自体が依存しているライブラリを指定するブロックです。

extブロックは変数を定義するブロックとなります。

dependenciesブロックで${変数名}で変数展開することができます。


buildscript {
ext {
junit5Version = = '5.6.0'
}
repositories {
mavenCentral()
}
dependencies {
classpath 'org.junit.platform:junit-platform-gradle-plugin:${junit5Version}'
}
}
view raw

gistfile1.txt

hosted with ❤ by GitHub
apply plugin

Groovyプラグインを使う場合にapply plugin:javaというように記述します。

javaはコンパイルなどに必要なプラグインとなります。

以下のように纏めてプラグインを書くこともできます。


plugins {
id 'org.springframework.boot' version '2.2.4.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java'
}
view raw

gistfile1.txt

hosted with ❤ by GitHub

以下サイトに標準で用意されているプラグイン一覧の記載があります。pmdなども入っています。

標準Gradleプラグイン

sourceSetsブロック

 

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました