The History
    of
  Groovy
Groovy基礎勉強会 #GroovyBase
自己紹介

• kyon_mm きょん

• 自称Groovyエヴァンジェリスト

• 2011.9 - なごやのテストエンジニア

• Groovy, Test, CD, Agile, etc...
Phantom Type


• 名古屋のソフトウェア開発企業です。

• http://www.phantomtype.com
スポンサー広告


• 今回の勉強会開催にあたって @kyon_mmを支
援してくださっている企業さんの広告になり
ます。
Phantom Type


• ファントムタイプ社の目指すところは「コミ
ュニティ活動のバイタリティを支援する」こ
とです。
Phantom Type

• コミュニティ活動とは例えば「⃝⃝ Boot
Campを主催する」だとか「××言語スタート
アップを主催する」とかそういうのです。特
に技術的な面にこだわっているわけではあり
ません。
Phantom Type


• ファントムタイプ社がやりたいのはコミュニ
ティを主催したい人たちの交通費、宿泊費、
開催場所とか諸々の支援です。
ここから本編
Agenda


• Groovy年表

• Groovy全体像
Groovy

• 2003 Birth
• 2004 GroovyOne
• 2007 Groovy 1.0 Release!
• 2009 Groovy 1.5 Release!
• 2012 Groovy 2.0 Release!
Background


• JamesがPythonに触発されてJavaに持ち込もう
 とする

• Inspired by Ruby, Smalltalk, Clojure, etc.
Ruby


• Collection
    • each, every, grep, collect, inject
• mixin( != trait )
Clojure


• trampoline
• Agent(GPars)
JSR-241



• Groovy言語はJavaの第二言語として認められ
る。(第一言語はJava言語
Impact


• Groovy1.5
• Groovy2.0
Groovy1.5


• Java 5
• SwingBuilder
• Java/Groovy mix Compile
Groovy2.0


• Embedded Static Type Check
• JDK7 Support
Groovy in Japan

• Grails 0.3 ∼ 1.0 近辺 => Javaでのアジャイル開
 発支援として知名度があがる

• Groovy 2.0 近辺 => NTTソフトウェアの外向
 けのGroovy活動が活発になる
Agenda


• Groovy年表

• Groovy全体像
Groovy

• Dynamic Type( != Dynamic Language)
• OO Programming
• Java Friendly
• Script
• A Lots of Shortcut (compared to Java Language)
Dynamic Type

• int a = 1 // int
• Foo a = new Foo() // Foo
• def a = 1 // Object
• def a = new Foo() // Object
OO Programming


• Class型OO

• Objectのインスタンス化と属するメソッドで
 メッセージングを行う。
OO Programming

• Closureはあるが、トップレベル関数などはな
い。

• レコード、タプル、代数的データ型、パター
ンマッチがない
Java Friendly

• do while, abstract method on enum, ==, [a,b,c] な
 どの数個を除いてJavaと同様の動きをする。

• == は equalsで動作する

• [a,b,c]は配列ではなくArrayListとして動作する
Script


• トップレベルに書いたものはそのまま動作す
る

• もちろんClassを書いておくこともできる。
A Lots of Syntax sugar


• [*1..10].each{println it}
• http://www.slideshare.net/nobeans/the-report-of-
  javaone2011-about-groovy/14
Groovy


• MOP API
• AST API
• DSL
まとめ

• 今年で10周年なのでお祝いイベントやりたい

• 選択的型付けOOProgramming

• PHP化しないことを祈る

• ツール的に扱うのに親和性が非常に高い
覚悟して参りましょう!

The History of Groovy #GroovyBase