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

Post on 10-May-2015

1.189 views 0 download

description

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

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

Groovyネタ

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

T.Yamamoto

NGK!?

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

よろしくです

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

JGGUGjapan grails/groovy user group

おっと、

JapanGrailsGroovyUsersGroup

Groovyをつかってる?

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

つか、Groovyて何?

食べ物?おいしいの?

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()); }}

拡張子変更

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()); }}

セミコロントルツメ

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いなくなれ!

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()) }} メインなんて外にいっちゃえ!

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もいらんよ

Java から Groovy え!?HelloWorld.groovy

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

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

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

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にして!

Java から Groovy え!?HelloWorld.groovy

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

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

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

Java から Groovy え!?HelloWorld.groovy

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

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

どや!

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

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

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

あそんでみてね!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レポから勝手にとってくるんだからね!

で、Groovyて何?

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

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

どのへんに

Groovy

Webアプリケーション

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

デスクトップアプリ

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

ビルド

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

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

CIツールHudsonの中にも!

これこれ!

Google AppEngine for Java

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

mailService.send to: 'foobar@gmail.com', subject: 'Hello World', htmlBody: '<bold>Hello</bold>'

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()

そんなこんなで、

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

Thank you...