16
簡単!Groovy入門 2014/06/29 西区プログラム勉強会 李充根

簡単!Groovy入門

Embed Size (px)

DESCRIPTION

第9回福岡市西区プログラム勉強会発表資料

Citation preview

Page 1: 簡単!Groovy入門

簡単!Groovy入門

2014/06/29

西区プログラム勉強会

李充根

Page 2: 簡単!Groovy入門

発表の流れ

• きっかけ

• Groovyとは?

• Hello world

• 基本的な文法

• フルスタックフレームワークGrails

2014/6/29 第9回福岡市西区プログラム勉強会 2

Page 3: 簡単!Groovy入門

きっかけ

• 仕事でWEB開発することがないので趣味でやろう

• スクリプト系の言語を勉強したい

• PythonやRubyを勉強したことあるけどどうもなれない

• 最近関数型とかはやってるけど(Haskell、Scala、…)

– いきなり関数型のパラダイムに入るのは怖い

• JVMで動く言語って面白そう(Scala、Clojure)

• せっかくなので今使えるJavaに似た言語 =Groovy

2014/6/29 第9回福岡市西区プログラム勉強会 3

Page 4: 簡単!Groovy入門

Groovyとは?

• JVM上で動作する動的言語

• Java的な文法で記述できるスクリプト言語

• Rubyの影響を多大に受けており、その他Smalltalkなども影響している

• Gradle設定を記述するのに使用する

• 最近Androidで動くようになったのでSwiftとの対比で 注目されるかも?

• 一言で言うとJavaをスクリプトにした言語

≠JavaScript

2014/6/29 第9回福岡市西区プログラム勉強会 4

Page 5: 簡単!Groovy入門

Groovyの特徴

• Java(っぽい文法)でスクリプトかける

• コンパイル不要(.classにコンパイルすることもできる)

• Javaで不便だった部分を使いやすく

– Java8になり改善された部分も

• 今バージョン2.3

• 今年中に3.0 betaリリース予定

– Java8対応

– ラムダ式、streamAPI、Date Time API対応

– (クロージャとラムダ式どうなるんだろう)

2014/6/29 第9回福岡市西区プログラム勉強会 5

Page 6: 簡単!Groovy入門

Hello world

• 何はともあれプログラムの基本「Hello world」

• 動的スクリプト言語なのでクラス宣言なしでも動かすことができる

• もう少し丁寧に書くと

println “Hello world” 1

class Hello{ static final main(String... args){ println “Hello world” } }

1 2 3 4 5

Groovyはデフォルトでpublic

;は不要(入れてもよい)

2014/6/29 第9回福岡市西区プログラム勉強会 6

Page 7: 簡単!Groovy入門

基本的な文法

• 変数宣言

– 動的型付けの場合はObject型として扱われる

• List、Map

int hoge = 1 String fuga = “fugafuga” def piyo = “piyopiyo”

1 2 3

動的型付け

def list1 = [1, 2, 3] def list2 = (1..3) def map = [id:1, name: “ligun”]

1 2 3

2014/6/29 第9回福岡市西区プログラム勉強会 7

Page 8: 簡単!Groovy入門

基本的な文法

• for、for in

– for文はJavaと同様

– クロージャを使って下記のようにも記述できる

for(i in 1..3){ println i }

1 2 3

(1..3).each { println it } 1

2014/6/29 第9回福岡市西区プログラム勉強会 8

Page 9: 簡単!Groovy入門

基本的な文法

• クロージャ

– Groovyはクロージャをサポートしてる

– sortなども簡単

def clos = { a, b -> println “$a + $b = ${a+b}” } clos(1, 2)

1 2 3

def list = [[id:1,name:"fukuoka"], [id:2,name:"oita"], [id:3,name:"saga"], [id:4,name:"kumamoto"], [id:5,name:"miyazaki"]] def sortList = list.sort {it.name} println sortList

1 2 3 4 5 6 7 8

{ it -> it.name }

1 + 2 = 3

2014/6/29 第9回福岡市西区プログラム勉強会 9

Page 10: 簡単!Groovy入門

基本的な文法

• その他

– returnの省略可 • 最後に実行した文が戻り値になる

– 文字列比較が==で可能

– switch文で文字列、Rangeを使用可能

– アクセッサの自動生成 • クラスメソッドにはgetXxx、setXxxでアクセス可能

2014/6/29 第9回福岡市西区プログラム勉強会 10

Page 11: 簡単!Groovy入門

フルスタックフレームワークGrails

• Grails?

– Ruby on Railsを参考にしたGroovy用の WEBアプリケーションフレームワーク

– RoRと同じように「設定より規約」を重視した作り

– MVCパターンに従って開発できる

– warファアイルにデプロイすることで簡単に サーブレットコンテナで起動することができる

2014/6/29 第9回福岡市西区プログラム勉強会 11

Page 12: 簡単!Groovy入門

Grailsの特徴

• JSPのGrails版GSPを使うことでViewを完結に記述することができ、デザインとコードを分離できる

• 標準で軽量DBも付属しているためテスト環境構築も簡単

• Groovyで開発できるため、Javaとの親和性が高く様々なライブラリを使用できる

• プラグインを導入することで様々な機能を追加できる

– ログイン認証など

2014/6/29 第9回福岡市西区プログラム勉強会 12

Page 13: 簡単!Groovy入門

ちょっとだけGrails入門

• 新規Grailsアプリの作成

• コントローラの作成

– helloControllerというクラスが作成される

• コントローラに記述されたメソッド名と同名のGSPファイルを作成することでコントローラが呼び出された時遷移する

• モデルの作成

2014/6/29 第9回福岡市西区プログラム勉強会 13

grails create-app helloapp 1

grails create-controller hello 1

grails create-domain-class helloapp.Hello 1

Page 14: 簡単!Groovy入門

Grails入門

• 基本的にコマンドで新しいファイルを作成した時点で基本的な記述がされている

• Model(ドメインクラス)を作成した時点で自動で CREATE TABLEしてくれる

• サンプル作成

2014/6/29 第9回福岡市西区プログラム勉強会 14

Page 15: 簡単!Groovy入門

まとめ

• Groovy

– Java的で使いやすい!

– Javaで痒かったところに手が届く(Java8で改善されたものもあるけど)

– 日本語資料少ない

– Fukuoka.groovyたちあげたいな

• Grails

– 便利・簡単・速い

– XMLの記述が不要なので楽

– やっぱり日本語資料少ない

2014/6/29 第9回福岡市西区プログラム勉強会 15

Page 16: 簡単!Groovy入門

ご清聴ありがとうございました

2014/6/29 第9回福岡市西区プログラム勉強会 16