Groovy入門

Javaの実行環境をベースに動作するスクリプト言語が「Groovy」ですが、「名前は聞いたことがあるけれど、使ったことが無い」という人も多いのではないでしょうか。

「Groovyってどんな言語?」「どうやって書くの?」

と思われている方に「Groovy入門」方法についてお話をしていきたいと思います。

Groovyの文法

変数

Groovyで変数を宣言する場合は、

def 変数名 = 初期値

と書きます。例えば、

def name = "hoge"
println name

のような書き方で変数の宣言と代入を行います。

といったものの、実はdefが無くても変数が定義できてしまいます。

name = "hoge"
println name

定数

Groovyには「定数」の概念がありません。

if文

Groovyでのif文は次のような書式で記述します。

if(条件式1) {
  //条件式1がtrue時の処理
} else if (条件式2) {
  //条件式2がtrue時の処理
} else {
  //条件式1・2がfalse時の処理
}

例えば、次のように書くことができます。

def score = 70
if (score == 100) {
    println "perfect!!"
} else if (score > 80) {
    println "so so..."
} else {
    println "you should try this test."
}

for文

for文の書式は次のようになります。

for (初期値式; 条件式; 増減式) {
    //繰り返し実行する処理を記述
}

例として、

for (int i = 0; i < 10; i++) {
    println i
}

と書くこともできますが、レガシーな書き方ですので、現代風に

for (i in 0..<10) {
  println i
}

と書くこともできます。

配列

配列は、

def 配列変数名 = new データ型[要素数]

と書くことで定義することができます。値の格納と出力は下記のようになります。

def numbers = new Integer[5]

numbers[0] = 23
numbers[1] = 5
numbers[2] = 13
numbers[3] = 25
numbers[4] = 21

for (num in numbers){
  println num
}

リスト

Groovyでは「リスト」を使用することができます。

リストは次のように定義します。

def list_data = [2, 3, 7, 8, 3, 2]

リストはメソッドを利用して「値の取得・追加・削除」などのさまざまな操作を行うことができます。

//値の取得
list_data.get(2)

//値の末尾への追加
list_data.add(10)

//値の削除
list_data.remove(2)
※削除後は、後ろの要素が前詰めする。

//値の全要素削除
list_data.clear()

//値の並び替え
list_data.sort()

//値の重複を削除
list_data.unique()

連想配列

連想配列は次のように記述していきます。

def 変数名 = [ キー:値, キー:値, キー:値・・・]

例えば、テストの点数を格納する場合は、下記のようになります。

def scores = ['国語':80, '数学':92, '英語':87]

連想配列の操作は、以下のように行うことができます。

//値の取得
scores['国語']
scores.get('国語')

//値の追加
scores['体育'] = 98
scores.put('体育', 98)

//値の削除
scores['体育'] = null
scores.remove('体育')

クラス

Groovyでクラスを定義する場合は、次のように記述します。

class Student {
    def id
    def name
    def grade
    
    // Entry Point
    static main(args) {
        def student = new Student()
        student.sayProfile()
    }
    
    // Constructor
    def Student() {
        id = 12345
        name = "tanaka"
        grade = "A"
    }
    
    def sayProfile() {
        println "私の学籍番号は、 ${id} です。"
        println "私の名前は、 ${name} です。"
        println "私のグレードは、 ${grade} です。"
    }  
}

Groovyでは、Javaと同様にエントリポイントであるmainメソッドを定義することができます。

継承

Groovyでは、次のように「extends」キーワードを利用して「継承」を実現することができます。

class Car {
    def speed = 0
    
    def accel(){
        println "アクセルペダルを踏み込みました。"
        speed += 10
    }
    
    def brake(){
        println "ブレーキペダルを踏みました。"
        speed = 0
    }
}

class MyCar extends Car{    
    def startAutoDrive(){
        println "自動運転モードを起動しました。"
    }
    
    def stopAutoDrive(){
        println "自動運転モードを解除しました。"
    }
}

def myCar = new MyCar()
myCar.accel()
println "現在のスピードは、 ${myCar.speed} です。"
myCar.brake()
println "現在のスピードは、 ${myCar.speed} です。"
myCar.startAutoDrive()
myCar.stopAutoDrive()

Groovyには他にもさまざまな機能がありますが、Java言語に親しんでいる方なら習得も行いやすいのではないでしょうか。

PHP・Ruby・Pythonなどメジャーな言語と比べると、決して知名度は高くありませんが、ぜひGroovyの習得にもチャレンジしてみてはいかがでしょうか。

HOMEへ