Skip to content

Groovy のよく使われる文法

Groovy は Java プラットフォーム上に構築された柔軟なプログラミング言語で、Python や Ruby、Smalltalk の強力な機能を多数取り入れています。以下では、Groovy のよく使われる文法を紹介し、素早く使いこなせるようサポートします。

変数の宣言

Groovy では、変数の宣言に def キーワードを使用するほか、型を明示的に指定することもできます。

groovy
// def キーワードを使用
def name = "Groovy"

// 型を明示的に指定
String greeting = "Hello, ${name}!"

データ型

Groovy は整数型、浮動小数点型、ブール型、文字列など、さまざまなデータ型をサポートしています。

groovy
def a = 10          // 整数型
def b = 10.5        // 浮動小数点型
def c = true        // ブール型
def d = "Groovy"    // 文字列

論理演算

Groovy では、&&(論理積)、||(論理和)、!(論理否定)などの論理演算子が使用できます。

groovy
def a = 10
def b = 20

if (a > 0 && b > 0) {
    println "両方の数は正数です"
} else if (a > 0 || b > 0) {
    println "少なくとも一方の数は正数です"
} else {
    println "両方の数は非正数です"
}

条件文

Groovy では、if-elseswitch の条件文が利用できます。

groovy
def number = 10
if (number > 0) {
    println "数は正数です"
} else {
    println "数は非正数です"
}

switch (number) {
    case 0:
        println "数はゼロです"
        break
    case { it > 0 }:
        println "数は正数です"
        break
    default:
        println "数は負数です"
}

繰り返し文

Groovy では、forwhiledo-while の繰り返し文がサポートされています。

groovy
// for 文
for (i in 0..9) {
    println i
}

// while 文
def i = 0
while (i < 10) {
    println i++
}

// do-while 文
def j = 0
do {
    println j++
} while (j < 10)

文字列

文字列の連結

Groovy では、+ 演算子や ${} 構文を使って文字列を連結できます。

groovy
def name = "Groovy"
def greeting = "Hello, " + name + "!"
println greeting  // 出力: Hello, Groovy!

def greeting2 = "Hello, ${name}!"
println greeting2  // 出力: Hello, Groovy!

文字列の切り出し

substring メソッドを使って文字列の一部を切り出すことができます。

groovy
def str = "Hello, Groovy!"
println str.substring(7)  // 出力: Groovy!
println str.substring(0, 5)  // 出力: Hello

文字列の置換

replace メソッドを使って文字列内の特定の部分を置き換えることができます。

groovy
def str = "Hello, Groovy!"
println str.replace("Groovy", "Java")  // 出力: Hello, Java!

文字列の分割

split メソッドを使って文字列を配列に分割できます。

groovy
def str = "Hello, Groovy!"
def parts = str.split(", ")
println parts[0]  // 出力: Hello
println parts[1]  // 出力: Groovy!

文字列の分割と要素の取得

tokenize メソッドを使って文字列をリストに分割し、インデックスで特定の部分にアクセスできます。

groovy
def str = "Hello, Groovy!"
println str.tokenize(",")[1]  // 出力: Groovy!

文字列の空白除去

trim メソッドを使って文字列両端の空白文字を削除できます。

groovy
def str = "  Hello, Groovy!  "
println str.trim()  // 出力: Hello, Groovy!

文字列の長さ

length プロパティを使って文字列の長さを取得できます。

groovy
def str = "Hello, Groovy!"
println str.length()  // 出力: 14

文字列の包含判定

contains メソッドを使って、文字列内に特定のサブストリングが含まれるかどうかを確認できます。

groovy
def str = "Hello, Groovy!"
println str.contains("Groovy")  // 出力: true

文字列の位置検索

indexOf メソッドを使って、文字列内での特定のサブストリングの位置を調べることができます。

groovy
def str = "Hello, Groovy!"
println str.indexOf("Groovy")  // 出力: 7

文字列の比較

==!=<><=>= などの演算子を使って文字列同士の比較が可能です。

groovy
def str1 = "Hello, Groovy!"
def str2 = "Hello, Java!"
println str1 == str2  // 出力: false
println str1 != str2  // 出力: true
println str1 < str2  // 出力: true
println str1 > str2  // 出力: false
println str1 <= str2  // 出力: true
println str1 >= str2  // 出力: false

文字列のエスケープ

特殊文字をエスケープするには \ を使用します。例えば、\n は改行を表します。

groovy
def str = "Hello,\nGroovy!"
println str  // 出力: Hello,
             // Groovy!

文字列のテンプレート

Groovy では、${} 構文を使って文字列内に変数を埋め込むことができます。

groovy
def name = "Groovy"
def greeting = "Hello, ${name}!"
println greeting  // 出力: Hello, Groovy!

文字列の正規表現によるマッチング

==~ 演算子を使って正規表現によるマッチングが可能です。

groovy
def emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/
def str = "google@163.com"
println str ==~ emailPattern  // 出力: true

複数行の文字列

三重引用符 """''' を使って複数行の文字列を定義できます。

groovy
def multiLineStr = """
    This is a multi-line
    string in Groovy.
"""
println multiLineStr

リスト(List)

Groovy では、リスト(List)は異なる型の要素を含むことができる一般的なデータ構造です。以下は、Groovy のリスト操作に関するよく使われる文法です。

リストの定義

角括弧 [] を使ってリストを定義できます。

groovy
def list = [1, 2, 3, 'Groovy', true]

リスト要素へのアクセス

インデックスを使ってリストの要素にアクセスできます。インデックスは 0 から始まります。

groovy
def list = [1, 2, 3, 'Groovy', true]
println list[3]  // 出力: Groovy

リスト要素の変更

インデックスを使ってリストの要素を変更できます。

groovy
def list = [1, 2, 3, 'Groovy', true]
list[3] = 'Java'
println list  // 出力: [1, 2, 3, 'Java', true]

要素の追加

add メソッドや左シフト演算子 << を使ってリストに要素を追加できます。

groovy
def list = [1, 2, 3]
list.add(4)
println list  // 出力: [1, 2, 3, 4]

list << 5
println list  // 出力: [1, 2, 3, 4, 5]

要素の削除

remove メソッドを使ってリストから要素を削除できます。

groovy
def list = [1, 2, 3, 4, 5]
list.remove(0)
println list  // 出力: [2, 3, 4, 5]

リストの長さ

size メソッドを使ってリストの長さを取得できます。

groovy
def list = [1, 2, 3, 4, 5]
println list.size()   // 出力: 5

リストの走査

for ループを使ってリストの各要素を順に処理できます。

groovy
def list = [1, 2, 3, 4, 5]
for (item in list) {
    println item
}

また、each メソッドを使ってリストの要素を走査することもできます。

groovy
def list = [1, 2, 3, 4, 5]
list.each { println it }

リストの変換

collect メソッドを使ってリストの各要素を変換できます。

groovy
def list = [1, 2, 3, 4, 5]
def newList = list.collect { it * 2 }
println newList  // 出力: [2, 4, 6, 8, 10]

リストのフィルタリング

find

条件を満たす最初の要素を返します。

groovy
def list = [1, 2, 3, 4, 5]
println list.find { it % 2 == 0 }  // 出力: 2

findAll

条件を満たすすべての要素からなる新しいリストを返します。

groovy
def list = [1, 2, 3, 4, 5]
def newList = list.findAll { it % 2 == 0 }
println newList  // 出力: [2, 4]

リストのマッチング

any

条件を満たす要素が少なくとも一つ存在するかをチェックします。

groovy
def list = [1, 2, 3, 4, 5]
println list.any { it % 2 == 0 }  // 出力: true

every

条件を満たす要素がすべて存在するかをチェックします。

groovy
def list = [1, 2, 3, 4, 5]
println list.every { it % 2 == 0 }  // 出力: false

リストのスライス

subList メソッドを使ってリストの一部を取り出すことができます。

groovy
def list = [1, 2, 3, 4, 5]
println list.subList(1, 4)  // 出力: [2, 3, 4]

リストの並べ替え

sort メソッドを使ってリストを並べ替えることができます。

groovy
def list = [3, 1, 4, 2, 5]
println list.sort()  // 出力: [1, 2, 3, 4, 5]

リストの逆転

reverse メソッドを使ってリストを逆転させることができます。

groovy
def list = [1, 2, 3, 4, 5]
println list.reverse()  // 出力: [5, 4, 3, 2, 1]

リストの包含判定

contains メソッドを使って、リストに特定の要素が含まれるかどうかを確認できます。

groovy
def list = [1, 2, 3, 4, 5]
println list.contains(3)  // 出力: true
println list.contains(6)  // 出力: false

リストの結合

plus メソッドや + 演算子を使って二つのリストを結合できます。

groovy
def list1 = [1, 2, 3]
def list2 = [4, 5, 6]
println list1.plus(list2)  // 出力: [1, 2, 3, 4, 5, 6]
println list1 + list2      // 出力: [1, 2, 3, 4, 5, 6]

リストの空にする

clear メソッドを使ってリストを空にすることができます。

groovy
def list = [1, 2, 3, 4, 5]
list.clear()
println list  // 出力: []

マップ(Map)

Groovy では、マップ(Map)はキーと値のペアを格納するための一般的なデータ構造です。以下は、Groovy のマップ操作に関するよく使われる文法です。

マップの定義

角括弧 [:] や中括弧 {} を使ってマップを定義できます。

groovy
def map = [:]
map = ["name": "Groovy", "version": 2.5]

マップ要素へのアクセス

キーを使ってマップの値にアクセスできます。

groovy
def map = ["name": "Groovy", "version": 2.5]
println map["name"]  // 出力: Groovy

マップ要素の変更

キーを使ってマップの値を変更できます。

groovy
def map = ["name": "Groovy", "version": 2.5]
map["name"] = "Java"
println map  // 出力: [name:Java, version:2.5]

要素の追加

put メソッドや直接代入を使ってマップに要素を追加できます。

groovy
def map = ["name": "Groovy"]
map.put("version", 2.5)
println map  // 出力: [name:Groovy, version:2.5]

map["author"] = "James"
println map  // 出力: [name:Groovy, version:2.5, author:James]

要素の削除

remove メソッドを使ってマップから要素を削除できます。

groovy
def map = ["name": "Groovy", "version": 2.5]
map.remove("version")


println map  // 出力は [name:Groovy]

マップのサイズ

size メソッドを使用して、マップのサイズを取得できます。

groovy
def map = ["name": "Groovy", "version": 2.5]
println map.size()  // 出力は 2

マップの反復処理

each メソッドを使って、マップ内のキーと値のペアを反復処理できます。

groovy
def map = ["name": "Groovy", "version": 2.5]
map.each { key, value ->
    println "${key}: ${value}"
}

キーまたは値の存在確認

containsKey および containsValue メソッドを使用して、マップに特定のキーまたは値が含まれているかどうかを確認できます。

groovy
def map = ["name": "Groovy", "version": 2.5]
println map.containsKey("name")  // 出力は true
println map.containsValue(2.5)  // 出力は true

マップのクリア

clear メソッドを使用して、マップを空にすることができます。

groovy
def map = ["name": "Groovy", "version": 2.5]
map.clear()
println map  // 出力は [:]

マップの結合

putAll メソッドを使用して、あるマップのすべての要素を別のマップに追加できます。

groovy
def map1 = ["name": "Groovy"]
def map2 = ["version": 2.5]
map1.putAll(map2)
println map1  // 出力は [name:Groovy, version:2.5]

全てのキーまたは値の取得

keySet および values メソッドを使用して、マップ内の全てのキーまたは値を取得できます。

groovy
def map = ["name": "Groovy", "version": 2.5]
println map.keySet()  // 出力は [name, version]
println map.values()  // 出力は [Groovy, 2.5]

関数

Groovy では、関数はメソッド(Method)と呼ばれ、クラス内やスクリプトの一部として定義できます。以下に、Groovy の関数定義および呼び出しに関する一般的な構文を示します。

関数の定義

def キーワードを使用して関数を定義できます。

groovy
def greet(name) {
    return "Hello, ${name}!"
}

関数の呼び出し

関数を定義した後は、関数名と引数を指定して呼び出すことができます。

groovy
def result = greet("Groovy")
println result  // 出力は Hello, Groovy!

デフォルト引数を持つ関数

関数を定義する際に、引数にデフォルト値を設定できます。

groovy
def greet(name = "World") {
    return "Hello, ${name}!"
}

println greet()        // 出力は Hello, World!
println greet("Groovy") // 出力は Hello, Groovy!

複数の引数を持つ関数

複数の引数を受け取る関数を定義できます。

groovy
def add(a, b) {
    return a + b
}

println add(3, 5)  // 出力は 8

匿名関数

匿名関数を定義し、変数に代入したり、引数として渡したりできます。

groovy
def multiply = { a, b -> a * b }
println multiply(3, 5)  // 出力は 15

可変引数を持つ関数

可変数の引数を受け取る関数を定義できます。

groovy
def sum(... numbers) {
    def total = 0
    for (number in numbers) {
        total += number
    }
    return total
}

println sum(1, 2, 3, 4)  // 出力は 10

クロージャを引数とする関数

クロージャ(Closure)を引数として受け取る関数を定義できます。

groovy
def operate(a, b, closure) {
    return closure(a, b)
}

def add = { x, y -> x + y }
println operate(3, 5, add)  // 出力は 8

複数の値を返す関数

複数の値を返す関数を定義できます。戻り値はリストとして扱われます。

groovy
def getCoordinates() {
    return [10, 20]
}

def (x, y) = getCoordinates()
println "x: ${x}, y: ${y}"  // 出力は x: 10, y: 20

再帰関数

関数内部で自身を再帰的に呼び出す再帰関数を定義できます。

groovy
def factorial(n) {
    if (n <= 1) {
        return 1
    } else {
        return n * factorial(n - 1)
    }
}

println factorial(5)  // 出力は 120