
GroovyはJVM上で動作するJavaから派生したプログラミング言語です。2003年に登場した比較的新しい言語ですが年々プログラマー界隈で注目を集めており2021年2月には『TIOBEインデックス』では12位を記録しております。この記事ではGroovyを理解するために初心者でも分かる歴史、特徴、基礎知識などを簡単に解説していきます。
GroovyとはJavaプラットフォーム上で動作するJavaから派生したプログラミング言語です。Rubyからの影響も受けており、機能や概念はRubyライクとなっております。RubyライクなJava版スクリプト言語というのがしっくりきます。Groovyは動的プログラミング言語ですので直接スクリプトを実行することができます。Javaの文法を大きく簡易化しているためJavaユーザーは学習コストを抑えて習得することができるでしょう。特徴として『JVMで動作する』『高度なJava補完機能』『文法が簡単』などが挙げられます。Groovyは「Google」「Netfilx」「Walmart」といった様々な有名企業に採用されております。
Groovyの読み方は『グルーヴィー』です。名前の由来は調査したところ出てきておりませんが、英語でGroovyは仲間言葉として使用されているようです。高揚感を表す際に使用される言葉ということなのでそのような意味が込められているのかもしれません。
Groovyはジェームス・ストラチャン氏、ボブ・マックワーター氏二人の開発者が中心となり2003年8月にJVM上で動作する動的プログラミング言語として誕生しました。言語の仕様はJavaベースとなっているため、これまでJavaを利用したきたユーザーにも親しみやすい言語として認知されております。また開発者であるジェームス氏も公言しているようにRubyライクな言語として機能や概念は大きな影響を受けております。その後、幾らかの時が過ぎギヨーム・ラフォージ氏、ジェレミー・レイナー氏等が開発の主体を引き継ぐ形になります。
また2015年までスポンサー企業として『Pivotal』の元に開発が行われておりましたが、同年3月末を持って『Apacheソフトウェア財団』へ管理が移行する形となりました。簡単に以下の年表にまとめておりますのでご覧ください。
年代 | 内容 |
2003年 | 「Groovy」誕生 |
2007年 | 「Groovy 1.0」リリース |
2012年 | 「Groovy 2.0.0」リリース |
2015年 | Apacheソフトウェア財団へ管理移行 |
2020年 | 「Groovy 3.0.0」リリース |
Groovyの人気推移について見ていきましょう。2003年に登場した比較的歴史の新しい言語ですが、ここ最近の人気推移はどのように変化していったのでしょうか。TIOBEインデックス(https://www.tiobe.com/tiobe-index/)の発表している順位推移をその他のプログラミング言語と比較する形で以下の表にしてみました。
Groovy | Java | Ruby | |
2018年 | 49位 | 1位 | 17位 |
2019年 | 19位 | 1位 | 11位 |
2020年 | 31位 | 2位 | 13位 |
2021年 | 12位 | 3位 | 13位 |
Groovyはスクリプト言語というプログラミング言語の中でも記述や実行を簡易的に行うことができる言語です。スクリプト言語には厳密な定義は存在していませんが、動的型付け言語をスクリプト言語として呼ぶ場合があります。また多くの場合インタプリタ方式(インタプリタ言語)を採用しているプログラム言語が多いです。代表的なスクリプト言語としてPHP、Ruby、JavaScriptなどが挙げられます。
スクリプト言語のメリットや種類を解説している記事はこちら>>
Groovyの特徴を見ていきましょう。
GroovyはJVM上で動作するという特徴が有ります。そのためJavaのライブラリやフレームワークを不自由なく使うことが可能です。JVM上で動作する言語は他にもScalaやKotlinなどが挙げられますがこれらを総じてJVM言語と呼びます。Groovyである理由の一つとしてJVM上で動作する動的スクリプト言語であるということが挙げられます。
Groovyは高度なJava補完機能を持つという特徴があります。「クロージャ」「ビルダー」「関数型プログラミング」「型推論」「静的コンパイル」など、Javaを補完する高度なプログラミング機能を提供しております。Javaおよびサードパーティライブラリとシームレスかつ透過的に統合および相互運用します。
Groovyは文法が簡単という特徴があります。Javaの文法を大きく簡易化しているためJavaユーザーは学習コストを抑えて習得することができます。「行末セミコロンを省略できること」や「getter/setter」の自動作成などJavaと比較した際に簡易化されたポイントが数多く存在します。
Groovyはドメイン固有言語という特徴があります。柔軟で順応性のある構文、高度な統合およびカスタマイズメカニズムによって、読み取り可能なビジネスルールをアプリケーションに統合します。
Groovyの基本的な文法を見ていきましょう。
Groovyの変数宣言では『def』キーワードを使用します。
変数宣言 | 実行方法 |
def | defキーワードの後に、変数名を記述する |
Javaと同じ | 「Integer」「Double」「String」を使用 |
Groovyではデータ型で使用される基本的な種類は以下の通りです。
(※基本的にJavaと同じ扱いになっております)
変数型 | サイズ | 範囲 |
Byte | 8bit | -128 ~ 127 |
Short | 16bit | -32768 ~ 32767 |
Int | 32bit | -2147483648 ~ 2147483647 |
Long | 64bit | -9223372036854775808 ~ 9223372036854775807 |
浮動小数点型 | サイズ | 範囲 |
Float | 32bit | 約(-)3.40282347E+38(約6~7桁の精度) |
Double | 64bit | (-)1.79769313486231570E+388(15桁の精度) |
Groovyでは演算子で使用される基本的な種類は以下の通りです。
演算子の種類 | 概要 |
算術演算子 | 足し算や引き算を実行する |
関係演算子 | 演算子の左辺と右辺を比較 |
論理演算子 | 理論を判定する際に用いる |
ビット演算子 | 中置記法も利用できる関数 |
代入演算子 | 変数に対して何か値を代入する |
割当演算子 | 定の値を検索するためにフィルタで使用する条件を定義 |
制御文ではif/else文、switch/case文、while文を覚えておく必要があります。
Groovyの代表的なフレームワークを見ていきましょう。
GrailsとはGroovyベースのWebアプリケーションフレームワークです。SpringBootの上に構築されており、Springを利用した依存性注入など、SpringBootの時間節約機能を活用しています。誕生当初は「Groovy on Rails」という名前でしたが『Ruby on Rails』の産みの親であるデイビット氏の改名要求により「Grails」の名となりました。旧名からも分かるとおり『Ruby on Rails』にインスパイアされております。
Groovyが影響を受けたプログラミング言語を見ていきましょう。
JavaとはOracle社が開発・提供するオブジェクト指向のプログラミング言語です。1995年にサン・マイクロシステムズ(後にOracle社が買収)のジェームス・ゴブリン氏によって開発されリリースとなりました。プログラミング言語の発展に大きな影響をもたらしたC言語を元に開発されたことでも有名です。当時、最も人気を集めていたC言語はオブジェクト指向ではありませんでした。
Javaの登場によってオブジェクト指向が主流の時代が訪れたと言われております。Javaのキャッチコピーは「Write once, run anywhere」で直訳すると「一度書けば、どこでも実行できる」という意味があります。このことからも分かるようにJavaの特徴は『オブジェクト指向の先駆者』で『どこでも動く』ということらが挙げられます。世界中で最もポピュラーで多くのWebアプリケーションで採用されていることで知られております。
Rubyとはまつもとゆきひろ氏によって1995年に開発されたオープンソースでオブジェクト指向のプログラミング言語です。日本人プログラマーのよって開発された言語として初めて国際電気標準会議(IEC)で国際規格に認証されました。2018年には米国において最も稼げる言語はRubyと言われるほど国内外問わず世界的にも注目を集めております。
Rubyというその名称には『Perl(パール)に続ぐ』という意味が込められており6月宝石であるPerlの次月(7月)宝石のRuby(ルビー)という名称を採用することになりました。Rubyの特徴は記述量が少なく、自由度が高い、そして何より『書くことが楽しい』と多くのプログラマーの方が口を揃えております。RubyはWebアプリケーションの開発に最も向いており代表的な開発事例としてGunosy、食べログ、価格.comなどが挙げられます。
Groovyを理解するために初心者でも分かる歴史、特徴、基礎知識などを簡単に解説させていただきました。Groovyを一言で表すと『JVM上で動作するJavaから派生したプログラミング言語』です。特徴として『JVMで動作する』『高度なJava補完機能』『文法が簡単』などが挙げられます。Groovyについてこの記事に記載されている最低限の内容は理解をしておくようにしましょう。