Groovy 初心者向けスクリプトチュートリアル
⚡ スマートサマリー
Groovy Script はオブジェクト指向言語です。 Java JVMバイトコードにコンパイルされるプラットフォーム。動的な型を追加します。pingクロージャ、簡潔な構文 Java、そしてそれは Jenkins パイプライン、 Gradle 構築し、 SoapUI アサーション。

何が Groovy スクリプト?
アパッチ Groovy オブジェクト指向であり、 Java 構文互換性のあるプログラミング言語 Java プラットフォーム。この動的言語には、 PythonRuby、Smalltalk、Perl。 Groovy ソースコードはコンパイルされて Java バイトコードなので、どのプラットフォームでも実行できます。 Java 仮想マシンがインストールされました。 Groovy また、舞台裏で多くの作業を行っているため、通常のシステムよりも機敏でダイナミックに感じられます。 Java.
A Groovy スクリプト 単に .groovy ステートメントを含むファイル Groovy 実行前に生成されたクラスでラップします。そのため、クラスやコードを書かずに1行のファイルを実行できます。 main 方法。 Groovy したがって、スクリプト言語として使用できます。 Java プラットフォームでありながら、エンタープライズ機能も提供 JavaDSL サポート、クロージャ、オプションの動的タイプなどの生産性機能を追加します。ping他の言語とは異なり、これは Java代替品ではありません。
💡ヒント: Groovy 5.0は現在の安定版リリースラインであり、JDK 11以降を対象としています。 Groovy 4.0はJDK 8プロジェクトで引き続き利用可能であり、 Groovy JDK 17向けのバージョン6.0はまだアルファ版です。バージョンを選択する前に、必ず公式ダウンロードページのシステム要件表をご確認ください。
Why Groovy?
使用して学ぶべき主な理由を以下に示します。 Groovy:
- Groovy 俊敏で動的な言語です。
- 既存のすべてのシステムとシームレスに統合されます Java オブジェクトとライブラリ。
- 簡単かつ自然に感じます Java 開発者。
- このコードは同等のものよりも簡潔で意味深い Java コード。
- 室内では好きなだけ使っても、少しだけ使っても構いません Java 分野の様々なアプリケーションで使用されています。
- 標準で動作します Java 仮想マシンそのため、別途ランタイムは必要ありません。
Groovy 沿革
- 2003: ジェームズ・Sによって開始されましたtracハンとボブ・マクWhirター
- 2004: 提出された Java コミュニティプロセスとしてJSR 241として提出されたが、後に撤回された。
- 2005: 復活した track ジェレミー・レイナーとギヨーム・ラフォルジュによる作品。
- 2007: Groovy 1.0がリリースされました。
- 2012: Groovy 2.0がリリースされました。
- 2014: Groovy JDK 8の正式サポートを含むバージョン2.3がリリースされました。
- 2015: Groovy Apache Softwareのトップレベルプロジェクトとなった Foundation.
- 2022: Groovy 4.0 がリリースされ、Maven の座標が移動しました。
org.apache.groovy. - 2025: Groovy JDK 11以降に対応したバージョン5.0がリリースされました。
の特長 Groovy
- リスト、マップ、範囲、および正規表現リテラル。
- マルチメソッド(実行時メソッドディスパッチ)とメタプログラミング。
- Groovy クラスとスクリプトは通常、
.groovyファイル。 - スクリプトには Groovy クラス宣言のないステートメント。
- スクリプトには、クラス定義の外側にメソッド定義を含めることもできます。
- Groovy コードはコンパイルされ、従来の Java アプリケーション。
- マップ、リスト、正規表現に対する言語レベルでのサポート。
- クロージャ、動的タイプのサポートping、そしてメタオブジェクトプロトコル。
- 静的および動的の両方のタイプをサポートpingさらに、演算子オーバーロードも可能。
- オプションの静的型チェック
@TypeChecked(NAIST) と@CompileStatic注釈。
インストールする方法 Groovy
ステップ1) あなたが持っていることを確認してください Java インストール.
ステップ2) に行く https://groovy.apache.org/download.html をクリックして Windows インストーラーへのリンク。
注: インストールすることもできます Groovy バイナリ Zip ファイルから、SDKMAN!、Homebrew、Scoop、Chocolatey などのパッケージ マネージャーを介して、またはプラグインとして Java IDE。この内 Groovy ウォークスルーでは、 Windows インストーラ。
ステップ3) ダウンロードしたインストーラーを起動します。言語を選択し、「OK」をクリックします。
ステップ4) ようこそ画面で、「次へ」をクリックしてください。
ステップ5) ライセンス条項に同意します。
ステップ6) インストールしたいコンポーネントを選択し、「次へ」をクリックしてください。
ステップ7) インストールディレクトリを選択し、「次へ」をクリックします。
ステップ8) 「スタートメニュー」フォルダを選択し、「次へ」をクリックします。
ステップ9) インストールが完了したら、パスはデフォルトのままにして「次へ」をクリックしてください。
ステップ10) ファイル関連付けオプションを確認し、「次へ」をクリックしてください。
ステップ11) スタートメニューで、 Groovy インストールを確認するには、コンソールを開いてください。
⚠️ 警告: その Windows インストーラーはコミュニティ提供の成果物であり、公式のApacheリリースではありません。組織で署名付きApacheダウンロードが必要な場合は、バイナリZipディストリビューションを使用し、その正当性を確認してください。 .asc 署名と .sha256 代わりにチェックサムを使用してください。
Groovy ハローワールドの例
単純な文字列「Hello World」を印刷したいとします。 Javaコードは次のようになります。
public class Demo {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
出力:
Hello World
上記のコードはどちらの場合も有効です Java (NAIST) と Groovy、理由 Groovy ほぼすべてを受け入れる Java 構文。 Groovy つまり、クラス宣言、パブリックメソッド、完全修飾されたprint呼び出しを省略して、1行で同じ出力を得ることができるということです。
println "Hello World"
出力:
Hello World
- セミコロンは必要ありません。
- クラスや
main方法。 System.out.printlnに縮小されますprintln.
Groovy 変数
In Java静的バインディングは必須であり、つまり変数の型を事前に宣言する必要があります。
public class Demo {
public static void main(String[] args) {
int x = 104;
System.out.println(x);
//x = "Guru99";
}
}
出力:
104
上記の例では、変数の型はキーワードを使用して事前に宣言されています。 int浮動小数点数を宣言する場合は、キーワードを使用します。 float or double.
文字列値を代入しようとすると int (5行目のコメントを解除すると)、次のコンパイルエラーが発生します。
Demo.java:5: error: incompatible types: String cannot be converted to int x = "Guru99";
対照的に、 Groovy 動的なタイプをサポートしますping変数はキーワードを使用して定義されます defまた、型を事前に宣言する必要はありません。ランタイムが変数の型を自動的に判別し、後からその型を変更することも可能です。
def x = 104 println x.getClass() x = "Guru99" println x.getClass()
出力:
class java.lang.Integer class java.lang.String
In Groovy 複数行の文字列を作成することもできます。その場合は、文字列を三重引用符で囲むようにしてください。
def x = """Groovy at Guru99""" println x
出力:
Groovy at Guru99
注意: 次のような明示的な型を使用することもできます。 byte, short, int, long in Groovyしかし、一度型を明示的に宣言すると、それを動的に変更することはできません。
int x = 104 println x x = "Guru99"
出力:
104
Caught: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'Guru99' with class 'java.lang.String' to class 'int'
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'Guru99' with class 'java.lang.String' to class 'int'
at jdoodle.run(jdoodle.groovy:3)
Command exited with non-zero status 1
Groovy Operaトー
演算子とは、コンパイラに対して特定の数学的または論理的な操作を実行するように指示する記号のことです。 Groovy 以下の5つの通信事業者ファミリーをサポートしています。
- 算術演算子: 追加(+)、減算tract (-)、乗算 (*)、除算 (/)、剰余 (%)、インクリメント (++)、デクリメント (–)。
- 関係演算子: 等しい (==)、等しくない (!=)、より小さい (<)、以下 (<=)、より大きい (>)、以上 (>=)。
- 論理演算子: そして、(&&) または (||) は使用できますが、(!) は使用できません。
- ビット演算子: および (&)、または (|)、排他的論理和 (^)、補数 (~)。
- 代入演算子: 代入(=)と複合形式(+=)、(-=)、(*=)、(/=)、(%=)。
Groovy いくつかの演算子を追加します Java それらはなく、null チェックの定型コードを大幅に削除します。
| Operator | 詳細説明 |
|---|---|
| ?. | 安全なナビゲーション。左辺がnullの場合、NullPointerExceptionをスローする代わりにnullを返します。 |
| ?: | エルビス演算子。真であれば左側の値を返し、そうでなければ右側の値を返します。 |
| <=> | 宇宙船演算子。compareToに処理を委譲し、ソートクロージャ内で役立ちます。 |
| ==〜 | 正規表現によるマッチング。文字列全体がパターンに一致する場合にのみtrueを返します。 |
Groovy ループ
In Javaカウントループは次のように定義します。
public class Demo {
public static void main(String[] args) {
for (int x = 0; x <= 5; x++) {
System.out.println(x);
}
}
}
出力:
0 1 2 3 4 5
同じ出力を以下で達成できます Groovy upto この方法は、両方の境界を含みます。
0.upto(5) { println "$it" }
出力:
0 1 2 3 4 5
ここに it はクロージャの暗黙的なパラメータであり、現在の反復処理の値を保持します。次のコードを考えてみましょう。
2.upto(4) { println "$it" }
出力:
2 3 4
使用することもできます times このメソッドは常に0から始まり、呼び出した数値の1つ手前で停止します。したがって、0から5までを出力するには6が必要です。
6.times { println "$it" }
出力:
0 1 2 3 4 5
では、0、2、4 を印刷したいとしましょう。 Java forループ.
public class Demo {
public static void main(String[] args) {
for (int x = 0; x <= 5; x=x+2) {
System.out.println(x);
}
}
}
出力:
0 2 4
あなたが使用することができます step 同じ結果を得るためのメソッド。2番目の引数は増分値、1番目の引数は排他的な上限値です。
0.step(5, 2) { println "$it" }
出力:
0 2 4
Groovy 意思決定
Groovy 再利用する Java 条件文を追加し、はるかに柔軟な switch以下の表に選択肢をまとめました。
| ステートメント | 詳細説明 |
|---|---|
| if文 | 同様に Java条件が真の場合に、if文の本体が実行されます。 |
| if/else文 | if文の条件が最初に評価されます。条件が真であれば、ifブロック内のステートメントが実行され、elseブロックはスキップされます。条件が偽であれば、代わりにelseブロック内のステートメントが実行されます。 |
| ネストされたif文 | ifブロック内でさらに条件をテストする必要がある場合に使用します。 |
| switchステートメント | 条件が多い場合、ネストされたif-elseチェーンは読みにくくなります。switch文は同じロジックを読みやすくします。 Groovyケースラベルは、値、クラス、範囲、正規表現、またはクロージャにすることができます。 |
| ネストされたswitch文 | Groovy また、switch文の中に別のswitch文を配置することも可能です。 |
Groovy リスト
リスト構造を使用すると、データ項目のコレクションを格納できます。 Groovyリストはオブジェクト参照のシーケンスを保持し、そのシーケンス内の各要素の位置を保持します。リストリテラルは、カンマで区切られ角括弧で囲まれた一連のオブジェクトとして記述されます。
の例 Groovy リスト:
- 文字列のリスト:
['Angular', 'Nodejs'] - 複数のオブジェクト参照が混在しているリスト:
['Groovy', 2, 4, 2.6] - 整数値のリスト:
[16, 17, 18, 19] - 空のリスト:
[]
以下のリストメソッドが利用可能です Groovy.
| 方法 | 詳細説明 |
|---|---|
| add() | リストの末尾に新しい値を追加します。 |
| を含む() | リストに特定の値が含まれている場合はtrueを返します。 |
| 取得する() | 指定された位置にある要素を返します。 |
| isEmpty() | リストに要素が含まれていない場合はtrueを返します。 |
| マイナス() | 元のリストの要素から、指定されたコレクションで指定された要素を除外した新しいリストを作成します。 |
| プラス() | 元のリストの要素と指定されたコレクションの要素を組み合わせて、新しいリストを作成します。 |
| ポップ() | リストから最後の項目を削除し、それを返します。 |
| 削除する() | 指定された位置にある要素を削除します。 |
| 逆行する () | 元のリストの要素を逆順にした新しいリストを作成します。 |
| サイズ() | リスト内の要素数を返します。 |
| ソート() | リストのソート済みコピーを返します。 |
以下を検討してください Groovy スクリプトの例。
def y = ["Guru99", "is", "Best", "for", "Groovy"] println y y.add("Learning") println(y.contains("is")) println(y.get(2)) println(y.pop())
出力:
[Guru99, is, Best, for, Groovy] true Best Learning
最初の行は元の5要素のリストを出力します。 add() まだ実行されていません。 get(2) 「ベスト」を返します。 Groovy リストはゼロインデックスで、 pop() 最後に追加された項目であるため、「Learning」が返されます。
Groovy ゲレンデマップ
A Groovy マップはキーと値のペアの集合です。キーが単純な識別子である場合、引用符は不要です。これにより、マップリテラルは非常にコンパクトになります。
の例 Groovy マップ:
[tutorial: 'Java', language: 'Groovy']これは、2つのキーと値のペアの集合です。[:]空の地図を表します。
以下は、マップメソッドの一覧です。 Groovy.
| 方法 | 詳細説明 |
|---|---|
| containsKey() | 指定されたキーがマップに含まれているかどうかを確認します。 |
| 取得する() | マップ内でキーを検索し、一致する値を返します。エントリが見つからない場合は、nullを返します。 |
| keySet() | マップ内のキーのセットを返します。 |
| 置く() | 指定された値を、指定されたキーに関連付けます。マップに既にマップが含まれている場合ping そのキーについては、古い値が置き換えられます。 |
| サイズ() | キーと値のマップの数を返しますpings. |
| 値() | 値のコレクションビューを返します。 |
Groovy 例:
def y = [fName:'Jen', lName:'Cruise', sex:'F'] print y.get("fName")
出力:
Jen
Groovy キャップ
A Groovy クロージャとは、オブジェクトとしてラップされたコードブロックのことです。メソッドや関数のように動作しますが、変数に格納したり、他の値と同様に受け渡したりすることができます。
単純なクロージャの例:
def myClosure = { println "My First Closure" } myClosure()
出力:
My First Closure
クロージャはパラメータを受け入れることができます。識別子のリストはカンマで区切られ、矢印(->)はパラメータリストの末尾を示します。
def myClosure = { a, b, c -> y = a + b + c println y } myClosure(1, 2, 3)
出力:
6
クロージャは値を返すこともできます。
def myClosure = { a, b, c -> return (a + b + c) } println(myClosure(1, 2, 3))
出力:
6
パラメータリストを宣言しない場合、 Groovy 単一の暗黙のパラメータを提供します。 itクロージャは他のクロージャに渡すこともできます。これは、次のようなコレクション メソッドがまさに行っていることです。 each, collect, findAll 作業。
Groovy ツール
に付属する 3 つの重要なツールを見ていきましょう。 Groovy 分布:
- グルーヴィー: コマンドラインから対話的にコードを実行します。
- groovyConsole: 対話型コード実行のためのグラフィカルウィンドウ。
- グルーヴィー: 実行 Groovy Perl や Python スクリプト。
Groovysh
- コマンドラインシェル。
- 実行を支援します Groovy 対話的にコーディングする。
- 単一の文またはスクリプト全体を入力できます。
以下のスクリーンショットは、groovyshが式を1行ずつ評価している様子を示しています。
Groovy 領事
- 最小限の機能を持つSwingインターフェース Groovy 開発編集者。
- 書き込みと実行が可能 Groovy 対話的にコーディングする。
- ロードと実行をサポートします Groovy スクリプトファイル。
Groovy 下のコンソールでは、スクリプトは上部のペインに入力され、結果は下部のペインに表示されます。
Groovy
その groovy コマンドは、実行するプロセッサです。 Groovy プログラムやスクリプト。ソースコードをメモリ内のバイトコードにコンパイルし、ワンステップで実行するため、別途ビルド段階は必要ありません。また、簡単なテストにも使用できます。 Groovy 以下に示すように、ターミナルから直接式を入力します。
場所 Groovy 実際のプロジェクトで使用されています
ほとんどの開発者は Groovy 独立した言語としてではなく、既に使用しているツール内のスクリプト層として使用されます。それがどこに現れるかを知っていれば、上記の構文を配置するのがはるかに容易になります。
| ツール | 認定条件 Groovy 使用されている |
|---|---|
| Jenkins | 宣言型パイプラインとスクリプト型パイプラインは、 Groovy DSLと共有ライブラリは平易です Groovy クラス。 |
| Gradle | クラシック build.gradle ファイルは Groovy スクリプトなので、よりコンパクトに読めます 達人 POMまたは アリ ファイルを作成します。 |
| SoapUI | Groovy スクリプトのステップとスクリプトのアサーションによって、動的なリクエストデータとカスタムレスポンスのチェックが実行されます。 |
| スポック | A Groovy そのテストフレームワークは、given-when-thenブロックとデータテーブルがJVMユニットテストで広く使用されています。 |
| ElasticsearchとGrails | Grailsは、完全なWebアプリケーションを構築します。 Groovy、いくつかのデータツールは Groovy カスタムスクリプト用。 |
In 自動化テスト チームにとってこれは二重に重要です。スイートを実行する CI ジョブとテスト自体の両方が Groovyつまり、単一の言語でパイプラインの接着剤とアサーションロジックをカバーできるということです。
Groovy 対。 Java
| Groovy | Java |
|---|---|
| デフォルトのアクセス修飾子はpublicなので、修飾子のないメソッドは、そのクラスやパッケージの外からアクセスできます。 | デフォルトのアクセス修飾子はパッケージプライベートなので、修飾子のないフィールド、メソッド、クラスは、それぞれのパッケージ内でのみ参照可能です。 |
| クラスプロパティに対して、ゲッターとセッターは自動的に生成されます。 | フィールドのゲッターメソッドとセッターメソッドは、自分で定義する必要があります。 |
| Groovy 二重引用符で囲まれた文字列内で変数置換を可能にします。 | Java 文字列補間をサポートしていません。 |
| 型情報は省略可能です。 | 型情報は必須です。 |
| 文末にセミコロンは必ずしも必要ありません。 | すべての文はセミコロンで終わります。 |
| Groovy すべてのスクリプトを、生成されたScriptクラスで自動的にラップします。 | クラスを実行可能にするには、メインメソッドが必要です。 |
デフォルトではすべてが公開され動的ですが、 @CompileStatic 復元されます Java- レベル速度とチェック。 |
すべては静的にコンパイルされ、ビルド時にチェックされます。 |
についての神話 Groovy
| 神話 | 現実 |
|---|---|
| Groovy スクリプト作成にのみ使用できます。 | スクリプト作成には非常に優れていますが、通常のクラスにコンパイルされるため、あらゆるJVMアプリケーションに組み込むことも可能です。 |
| Groovy これはクロージャに関するものなので、単なる関数型プログラミング言語です。 | Groovy LispやClojureといった関数型言語からアイデアを取り入れているが、本質的にはオブジェクト指向言語である。 |
| Groovy テスト駆動開発にのみ使用する価値がある。 | Groovy これはSpockを使ったTDDに非常に適していますが、それを使用する理由は決してそれだけではありません。 |
| あなただけが必要です Groovy Grailsを使いたい場合。 | Grailsは強力なWeb開発フレームワークですが、 Gradle, Jenkins、そしてスポックはすべて Groovy それなしで。 |
使用の短所 Groovy
- JVMと Groovy スクリプトの起動時間が遅いため、OSレベルのスクリプトを迅速に実行する用途には適さない。
- Groovy JVM中心のコミュニティ以外では広く採用されていない。
- 使いづらい Groovy 動的な機能を理解するIDEがなければ。
- 動的ディスパッチは Groovy 同等のコードよりも遅い Java 適用しない限りコード
@CompileStatic. - Groovy プログラムは通常のメモリよりも多くのメモリを必要とする場合があります Java プログラム。
- 知識 Java 事実上、前提条件である。
慣れてきたら Groovy 構文の場合、次の自然なステップは、その周辺のエコシステムです。 Java チュートリアルでは、 Groovy スクリプトはビルドとデプロイメントを推進します Jenkinsビルドツールを比較する 達人 (NAIST) と アパッチアントそして、どのように Groovy 主張は Selenium そしてAPIテストスイート。













