Groovy ネタ NGK 忘年会2009 ライトニングトーク

28
Groovyネタ G* in 5 min あっとNGK 2009/12/12 T.Yamamoto

description

NGK 忘年会2009(昼の部)みんなでライトニングトーク!「Groovy ネタ」NGK=名古屋合同懇親会http://groups.google.co.jp/group/dstokai/

Transcript of Groovy ネタ NGK 忘年会2009 ライトニングトーク

Page 1: Groovy ネタ NGK 忘年会2009 ライトニングトーク

Groovyネタ

G* in 5 minあっとNGK 2009/12/12

T.Yamamoto

Page 2: Groovy ネタ NGK 忘年会2009 ライトニングトーク

NGK!?

NagoyaGroovyKyodokumiai ???名古屋Groovy協同組合????・・これは・・行かなきゃ!

Page 3: Groovy ネタ NGK 忘年会2009 ライトニングトーク

よろしくです

JGGUG(ぢぇいがぐ)名古屋支部から来ました。やまもとです。twitter: tyama

JGGUGjapan grails/groovy user group

Page 4: Groovy ネタ NGK 忘年会2009 ライトニングトーク

おっと、

JapanGrailsGroovyUsersGroup

Page 5: Groovy ネタ NGK 忘年会2009 ライトニングトーク

Groovyをつかってる?

Javaを使ってるなら、Groovy使うべき!

Page 6: Groovy ネタ NGK 忘年会2009 ライトニングトーク

つか、Groovyて何?

食べ物?おいしいの?

Page 7: Groovy ネタ NGK 忘年会2009 ライトニングトーク

Java から Groovy え!?HelloWorld.java

public class HelloWorld { String name; public void setName(String name){ this.name = name; } public String getName(){ return name; } public String greet(){ return "Hello "+name; } public static void main(String[] args){ HelloWorld helloWorld = new HelloWorld(); helloWorld.setName("Groovy"); System.out.println(helloWorld.greet()); }}

拡張子変更

Page 8: Groovy ネタ NGK 忘年会2009 ライトニングトーク

Java から Groovy え!?HelloWorld.groovy

public class HelloWorld { String name; public void setName(String name){ this.name = name; } public String getName(){ return name; } public String greet(){ return "Hello "+name; } public static void main(String[] args){ HelloWorld helloWorld = new HelloWorld(); helloWorld.setName("Groovy"); System.out.println(helloWorld.greet()); }}

セミコロントルツメ

Page 9: Groovy ネタ NGK 忘年会2009 ライトニングトーク

Java から Groovy え!?HelloWorld.groovy

public class HelloWorld { String name public void setName(String name){ this.name = name } public String getName(){ return name } public String greet(){ return "Hello "+name } public static void main(String[] args){ HelloWorld helloWorld = new HelloWorld() helloWorld.setName("Groovy") System.out.println(helloWorld.greet()) }}

getterとsetterいなくなれ!

Page 10: Groovy ネタ NGK 忘年会2009 ライトニングトーク

Java から Groovy え!?HelloWorld.groovy

public class HelloWorld { String name public String greet(){ return "Hello "+name } public static void main(String[] args){ HelloWorld helloWorld = new HelloWorld() helloWorld.setName("Groovy") System.out.println(helloWorld.greet()) }} メインなんて外にいっちゃえ!

Page 11: Groovy ネタ NGK 忘年会2009 ライトニングトーク

Java から Groovy え!?HelloWorld.groovy

public class HelloWorld { String name public String greet(){ return "Hello "+name }}

HelloWorld helloWorld = new HelloWorld()helloWorld.setName("Groovy")System.out.println(helloWorld.greet())

publicとかもいぢるSystem.outもいらんよ

Page 12: Groovy ネタ NGK 忘年会2009 ライトニングトーク

Java から Groovy え!?HelloWorld.groovy

class HelloWorld { String name def greet(){ return "Hello "+name }}

def helloWorld = new HelloWorld()helloWorld.setName("Groovy")println(helloWorld.greet()) わかりやすく!

setとか無くていいメソッドの()省略

Page 13: Groovy ネタ NGK 忘年会2009 ライトニングトーク

Java から Groovy え!?HelloWorld.groovy

class HelloWorld { String name def greet(){ return "Hello "+name }}

def helloWorld = new HelloWorld()helloWorld.name = "Groovy"println helloWorld.greet()

returnもいらない!+nameも””の中に$nameにして!

Page 14: Groovy ネタ NGK 忘年会2009 ライトニングトーク

Java から Groovy え!?HelloWorld.groovy

class HelloWorld { String name def greet(){ "Hello $name"}}

def helloWorld = new HelloWorld()helloWorld.name = "Groovy"println helloWorld.greet()

デフォルトコンストラクタも勝手にできるよ!

Page 15: Groovy ネタ NGK 忘年会2009 ライトニングトーク

Java から Groovy え!?HelloWorld.groovy

class HelloWorld { String name def greet(){ "Hello $name"}}

def helloWorld = new HelloWorld(name: "Groovy")println helloWorld.greet()

Page 16: Groovy ネタ NGK 忘年会2009 ライトニングトーク

どや!

つまり、GroovyではJavaコードの98%くらいは、そのまま動くので、Javaプログラマに言語を覚えるコストがあまりかからない。そしてGroovyな記述をすれば余分なものが無くなって見やすくわかりやすく。

Page 17: Groovy ネタ NGK 忘年会2009 ライトニングトーク

他にもいろいろ...配列、 マップdef arr = [1,2,3,'hoge']def map = [a:1,b:2,c:'hoge']

クロージャ、Range、使いやすい正規表現イテレータ、each,collect,find ...メタプログラミング...... more!他にもいろいろありますが、とても5分では話しきれません!

Page 18: Groovy ネタ NGK 忘年会2009 ライトニングトーク

あそんでみてね!Groovy-1.7で、twitter4j使ったサンプル

@Grab('net.homeip.yusuke:twitter4j:[2.0,)')import twitter4j.*def user="username",pass="pass"new Twitter(user,pass).friendsTimeline.each { println "${it.user.name}: ${it.text}"}

ライブラリーもmavenレポから勝手にとってくるんだからね!

Page 19: Groovy ネタ NGK 忘年会2009 ライトニングトーク

で、Groovyて何?

日本ではまだ人気が無いがJava使いは使った方が良い言語。※Javaでの開発を楽しくするミドルウェア的な物。

開発元は、VMware傘下のSpringSourceにいます。

Page 20: Groovy ネタ NGK 忘年会2009 ライトニングトーク

どのへんに

Groovy

Page 21: Groovy ネタ NGK 忘年会2009 ライトニングトーク

Webアプリケーション

Grails Spring,HibernateがベースにアジャイルJEE開発。プラグインでのモジュラな開発* Grailsアプリ自身もプラグインになるGAE/J対応も可能。各種クラウド(EC2,Stax,morph等)簡単デプロイ対応もある

Page 22: Groovy ネタ NGK 忘年会2009 ライトニングトーク

デスクトップアプリ

Griffon swingアプリをgrailsと同じ感覚で作る!

Page 23: Groovy ネタ NGK 忘年会2009 ライトニングトーク

ビルド

Gantxmlを書かずにAntを使いこなせ!

Gradle Maven、Ivy、Ant等を統合したGroovyなビルドツール

Page 24: Groovy ネタ NGK 忘年会2009 ライトニングトーク

CIツールHudsonの中にも!

これこれ!

Page 25: Groovy ネタ NGK 忘年会2009 ライトニングトーク

Google AppEngine for Java

Gaelyk GroovyでGAE/Jを簡単に!GroovyのGAE/J用軽量開発ツールキットです。GAE/Jの各種サービスも簡単操作!

mailService.send to: '[email protected]', subject: 'Hello World', htmlBody: '<bold>Hello</bold>'

Page 26: Groovy ネタ NGK 忘年会2009 ライトニングトーク

Gaelyk

データストアAPIimport com.google.appengine.api.datastore.Entity

def person = new Entity("person")person['name'] = "やまもとつよし"person.age = 18

println person.nameperson.save()

def q = new Query('person')def list = datastoreService.prepare(q).asList(

    Builder.withLimit(20).offset(0) )person.delete()

Page 27: Groovy ネタ NGK 忘年会2009 ライトニングトーク

そんなこんなで、

12/26 名古屋SGGAE/J勉強会。Scala vs and Groovy 合同で、GAE/J勉強会!「SGGAE/J」読み:すっげーぢぇ!

Page 28: Groovy ネタ NGK 忘年会2009 ライトニングトーク

Thank you...