📑

【Groovy】という未知の言語を急に仕事で使うようになったので、少し調べてみた

2024/11/04に公開

Qiitaからのお引越し記事

groovyとは

経歴

言語の始まりは、2003年にまで遡る。
2015年にApacheソフトウェア財団へ管理が移行し、トップレベルプロジェクトとして開発がされているゴリゴリの現役言語。
最近では、Google、Netfilxといった有名企業でも取り入れられているとか。

groovyの特徴

JVMで動く

何よりもまず、この特徴が挙げられる。
どのページを見ても一番上に書かれている。
Javaとの互換性が高く、非常に容易くプロジェクトに取り入れることができる。

Javaの文法を簡易化したRubyライクな言語

Javaは静的型付け言語なのに対し、Groovyは動的型付け言語。
いわゆるスクリプト言語に該当する。
静的型付け言語と動的型付け言語の違いは省略するが、Hello World!!と出力するだけでも下記の通り記述量の違いがある。

Java
public class HelloWorld{
   public static void main(String[] args){
     System.out.println("Hello World!!");
   }
}
Groovy
println("Hello World!!")

groovyのユースケース

ユニットテストコードの記述

groovyは正式にプロジェクトのメイン言語として選定されることもあるが、調べている個人的な印象ではやはりユニットテストで使用されているケースを見かけることが多かった。
理由としては下記が挙げられる。

1. (Javaと比べて)記述量が減る

Javaは安全性を重視するあまり、記述量が大くなる。一方、Groovyではやりたいことを簡易的に実行することができる。
上記でも記載したが、やはり記述量の差は歴然。

2. テストケースを視覚的にわかりやすく記述することができる

Spockでテストを記述する際は、英語のように記述することができる。

Spockを利用したテストコード(一部)
class MyFirstSpock extends Specification {

    def "Spockテスト"() {
        setup:
        String message = "do clean!"

        expect:
        left + right == result

        where:
        left|right||result
        1|2||3
        4|5||9
        9|10||19

        cleanup:
        println "${message}"
    }
}

上記に記載した通り、事前にどのような記述方法があるのかを知らなくとも、
内容をおおまかにキャッチアップすることができる。

上記に記載のsetupexpectwherecleanupについては下記の通り。
setup: 前提条件を記述する。
expect: テスト条件、実行後の期待される内容を記述する。
where: テストで使用されるデータ、実行結果のパターンを記述する。
cleanup: メソッドの一番最後に実行する。setupで実行される前の状態に戻す。

groovyのチュートリアルを触ってみた所感

スクリプト言語を触るのが久しぶりだったため、まずプログラムの作成→実行できるまでのスピード感に感動してしまった。
記述もJavaを踏襲している箇所が多く馴染みやすさを感じたことも良かった。
groovyについて調べていると「まだまだ日本語の情報が少ない」との意見が散見されたが、逆に日本で発信すれば自分の情報に価値を感じてくれる人が多いのではないだろうか。
プロジェクトを進めるうちに知見もついてくると思うので、引き続き楽しもうと思う。

参照

GitHubで編集を提案

Discussion