SlideShare a Scribd company logo
1 of 15
速水 康晴
 Groovyスクリプトの起動について
◦ コンソールから
◦ Java/JVMから
2016-02-20 2#nds46
 速水 康晴(はやみ やすはる)
 新潟市西区在住
 ウイングアーク1st株式会社 新潟オフィス
◦ プログラマ(アーキテクト):Java/Flex/ActionScript
 JGGUG(日本Grails/Groovyユーザーグループ)
◦ サポート・スタッフ
 E-mail:toby55kij@gmail.com
 Twitter:toby55kij
32016-02-20#nds46
 良いですよね?!
◦ Javaっぽく書ける
◦ JavaでScriptできる
 ではスクリプトとして、どうやって呼ぶの?
◦ あまり触れられていない
2016-02-20#nds46 4
 GroovyはASFのトップレベルプロジェクト(TLP)に
 Groovy激動の2015年
◦ 01/19:Pivotalが3/末でのサポート終了を発表
◦ 03/--:Codehausの終了発表
◦ 03/17:Apache Incubator入り
◦ 09/24:バージョン2.4.5リリース
◦ 11/18:Incubator卒業、TLPに
2016-02-20 5#nds46
Hello.groovy
2016-02-20#nds46 6
//配列argsの先頭の内容を表示、無ければworld
println "Hello, ${args.size() > 0 ? args[0] : 'world'}."
 groovyコマンド
◦ スクリプトを実行
◦ 第1引数はファイル名、それ以降は配列argsに
 オプション以外
2016-02-20#nds46 7
$ groovy Hello.groovy Groovy
Hello, Groovy.
 groovyshコマンド
◦ Groovyスクリプトを直接入力して実行
◦ argsは変数として指定
2016-02-20#nds46 8
$ groovysh
groovy:000> args=['Groovy']
===> [Groovy]
groovy:000> :load Hello.groovy
===> true
Hello, Groovy.
===> null
 groovyConsoleコマンド
◦ GUI版コンソール
◦ スクリプトを入力・編集して実行
◦ argsは指定できない
2016-02-20#nds46 9
$ groovyConsole Hello.groovy
 Groovy組み込み
◦ groovy.lang.GroovyShell
 evaluate()
◦ 変数はgroovy.lang.Bindingに登録
◦ 実行する毎にコンパイルする→繰り返しには向かない
2016-02-20#nds46 10
Binding binding = new Binding();
binding.setVariable("args", args);
GroovyShell shell = new GroovyShell(binding);
shell.evaluate(new File("Hello.groovy"));
 Groovy組み込み
◦ groovy.lang.GroovyShell
 parse()
◦ コンパイルしてgroovy.lang.Script→繰り返して使える
2016-02-20#nds46 11
Binding binding = new Binding();
binding.setVariable("args", args);
GroovyShell shell = new GroovyShell();
Script script = shell.parse(new File("Hello.groovy"));
script.setBinding(binding);
script.run();
 Groovy組み込み
◦ 他に
 groovy.lang.GroovyClassLoader
 groovy.util.GroovyScriptEngine
◦ →省略
2016-02-20#nds46 12
 JSR-223
◦ Java6から(javax.scriptパッケージ)
◦ groovy-jsr223モジュールが必要
 org.codehaus.groovy:groovy-jsr223:2.4.5
◦ 他言語と切り替えて使う場面なら、、、
2016-02-20#nds46 13
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("groovy");
engine.put("args", args);
try (FileReader reader = new FileReader(new File("Hello.groovy")))
{
engine.eval(reader);
}
 Bean Scripting Framework
◦ Apache
◦ groovy-bsfモジュールが必要
 org.codehaus.groovy:groovy-bsf:2.4.5
◦ 使ってる?
◦ →省略
2016-02-20#nds46 14
 Grengine
◦ http://www.grengine.ch
 ch.grengine:grengine:1.0.5
◦ ch.grengine.Grengine
 変数はgroovy.lang.Bindingに登録
◦ コンパイル結果をキャッシュ、変更されたら再コンパイル
2016-02-20#nds46 15
Grengine engine = new Grengine();
Binding binding = engine.binding("args", args);
engine.run(new File("Hello.groovy"), binding);

More Related Content

What's hot

簡単ログ解析ハンズオン

簡単ログ解析ハンズオン
簡単ログ解析ハンズオン

簡単ログ解析ハンズオン
Koichiro Nishijima
 
[参考情報]OSC広島のお知らせ
[参考情報]OSC広島のお知らせ[参考情報]OSC広島のお知らせ
[参考情報]OSC広島のお知らせYoshitake Takata
 
Strutsから移行する人のためのjsf基礎
Strutsから移行する人のためのjsf基礎Strutsから移行する人のためのjsf基礎
Strutsから移行する人のためのjsf基礎Satoshi Kubo
 
シンガポールFossasia2016に初参加してみた I tried the first time participate in the Singapor...
シンガポールFossasia2016に初参加してみた I tried the first time participate in the Singapor...シンガポールFossasia2016に初参加してみた I tried the first time participate in the Singapor...
シンガポールFossasia2016に初参加してみた I tried the first time participate in the Singapor...Netwalker lab kapper
 
How to collect frontend technology
How to collect frontend technologyHow to collect frontend technology
How to collect frontend technologyRikiyaOzawa
 
#24 prepare for_hands-on
#24 prepare for_hands-on#24 prepare for_hands-on
#24 prepare for_hands-onOWASP Nagoya
 
#23 prepare for_hands-on
#23 prepare for_hands-on#23 prepare for_hands-on
#23 prepare for_hands-onOWASP Nagoya
 
VyOS Users Meeting Japan #4 VyOS 1.2.0の開発の様子と自動テストの話
VyOS Users Meeting Japan #4 VyOS 1.2.0の開発の様子と自動テストの話VyOS Users Meeting Japan #4 VyOS 1.2.0の開発の様子と自動テストの話
VyOS Users Meeting Japan #4 VyOS 1.2.0の開発の様子と自動テストの話雄也 日下部
 
エンジニアが Webを学ぶために やっててよかったこと
エンジニアが Webを学ぶために やっててよかったことエンジニアが Webを学ぶために やっててよかったこと
エンジニアが Webを学ぶために やっててよかったことHirata Tomoko
 
GoでEPC作って本番運用している話
GoでEPC作って本番運用している話GoでEPC作って本番運用している話
GoでEPC作って本番運用している話雄也 日下部
 
twitewr
twitewrtwitewr
twitewrrinapik1
 
20150704-innovationegg04-conoha
20150704-innovationegg04-conoha20150704-innovationegg04-conoha
20150704-innovationegg04-conohaYoshitake Takata
 
JAWS-UG東京25オープニング_青木由佳
JAWS-UG東京25オープニング_青木由佳JAWS-UG東京25オープニング_青木由佳
JAWS-UG東京25オープニング_青木由佳由佳 青木
 
G* Workshop in Fukuoka - Introduction
G* Workshop in Fukuoka - IntroductionG* Workshop in Fukuoka - Introduction
G* Workshop in Fukuoka - IntroductionKazuchika Sekiya
 
CloudFormation ことはじめ - JAWS UG 名古屋 2019年7月度
CloudFormation ことはじめ - JAWS UG 名古屋 2019年7月度CloudFormation ことはじめ - JAWS UG 名古屋 2019年7月度
CloudFormation ことはじめ - JAWS UG 名古屋 2019年7月度Katz Ueno
 
Emacsからgitをゆるく使う
Emacsからgitをゆるく使うEmacsからgitをゆるく使う
Emacsからgitをゆるく使うTakashi Masuda
 
いまさら聞けない WordPress 情報の在り処
いまさら聞けない WordPress 情報の在り処いまさら聞けない WordPress 情報の在り処
いまさら聞けない WordPress 情報の在り処Odyssey Eightbit
 

What's hot (20)

簡単ログ解析ハンズオン

簡単ログ解析ハンズオン
簡単ログ解析ハンズオン

簡単ログ解析ハンズオン

 
JGGUG Community LT 2016
JGGUG Community LT 2016JGGUG Community LT 2016
JGGUG Community LT 2016
 
[参考情報]OSC広島のお知らせ
[参考情報]OSC広島のお知らせ[参考情報]OSC広島のお知らせ
[参考情報]OSC広島のお知らせ
 
Strutsから移行する人のためのjsf基礎
Strutsから移行する人のためのjsf基礎Strutsから移行する人のためのjsf基礎
Strutsから移行する人のためのjsf基礎
 
シンガポールFossasia2016に初参加してみた I tried the first time participate in the Singapor...
シンガポールFossasia2016に初参加してみた I tried the first time participate in the Singapor...シンガポールFossasia2016に初参加してみた I tried the first time participate in the Singapor...
シンガポールFossasia2016に初参加してみた I tried the first time participate in the Singapor...
 
How to collect frontend technology
How to collect frontend technologyHow to collect frontend technology
How to collect frontend technology
 
#24 prepare for_hands-on
#24 prepare for_hands-on#24 prepare for_hands-on
#24 prepare for_hands-on
 
#23 prepare for_hands-on
#23 prepare for_hands-on#23 prepare for_hands-on
#23 prepare for_hands-on
 
VyOS Users Meeting Japan #4 VyOS 1.2.0の開発の様子と自動テストの話
VyOS Users Meeting Japan #4 VyOS 1.2.0の開発の様子と自動テストの話VyOS Users Meeting Japan #4 VyOS 1.2.0の開発の様子と自動テストの話
VyOS Users Meeting Japan #4 VyOS 1.2.0の開発の様子と自動テストの話
 
エンジニアが Webを学ぶために やっててよかったこと
エンジニアが Webを学ぶために やっててよかったことエンジニアが Webを学ぶために やっててよかったこと
エンジニアが Webを学ぶために やっててよかったこと
 
GoでEPC作って本番運用している話
GoでEPC作って本番運用している話GoでEPC作って本番運用している話
GoでEPC作って本番運用している話
 
twitewr
twitewrtwitewr
twitewr
 
20150704-innovationegg04-conoha
20150704-innovationegg04-conoha20150704-innovationegg04-conoha
20150704-innovationegg04-conoha
 
JAWS-UG東京25オープニング_青木由佳
JAWS-UG東京25オープニング_青木由佳JAWS-UG東京25オープニング_青木由佳
JAWS-UG東京25オープニング_青木由佳
 
G* Workshop in Fukuoka - Introduction
G* Workshop in Fukuoka - IntroductionG* Workshop in Fukuoka - Introduction
G* Workshop in Fukuoka - Introduction
 
CloudFormation ことはじめ - JAWS UG 名古屋 2019年7月度
CloudFormation ことはじめ - JAWS UG 名古屋 2019年7月度CloudFormation ことはじめ - JAWS UG 名古屋 2019年7月度
CloudFormation ことはじめ - JAWS UG 名古屋 2019年7月度
 
Walking front end
Walking front endWalking front end
Walking front end
 
LT JAWS FESTA Kyushu 2015
LT JAWS FESTA Kyushu 2015LT JAWS FESTA Kyushu 2015
LT JAWS FESTA Kyushu 2015
 
Emacsからgitをゆるく使う
Emacsからgitをゆるく使うEmacsからgitをゆるく使う
Emacsからgitをゆるく使う
 
いまさら聞けない WordPress 情報の在り処
いまさら聞けない WordPress 情報の在り処いまさら聞けない WordPress 情報の在り処
いまさら聞けない WordPress 情報の在り処
 

Similar to Groovyスクリプト"再"入門 起動編

JavaOne2014サンフランシスコ報告会in大阪
JavaOne2014サンフランシスコ報告会in大阪JavaOne2014サンフランシスコ報告会in大阪
JavaOne2014サンフランシスコ報告会in大阪bitter_fox
 
Arachne Unweaved (JP)
Arachne Unweaved (JP)Arachne Unweaved (JP)
Arachne Unweaved (JP)Ikuru Kanuma
 
関西 Java エンジニアの会 2012年6月度 JavaOne 報告会!
関西 Java エンジニアの会 2012年6月度 JavaOne 報告会!関西 Java エンジニアの会 2012年6月度 JavaOne 報告会!
関西 Java エンジニアの会 2012年6月度 JavaOne 報告会!Kazkuki Oakamoto
 
JSR353をGroovyで賢く使う
JSR353をGroovyで賢く使うJSR353をGroovyで賢く使う
JSR353をGroovyで賢く使うYasuharu Hayami
 
Groovy Grails eXchage 2014 報告
Groovy Grails eXchage 2014 報告Groovy Grails eXchage 2014 報告
Groovy Grails eXchage 2014 報告Tsuyoshi Yamamoto
 
開発を彩る技術たち
開発を彩る技術たち開発を彩る技術たち
開発を彩る技術たちOda Shinsuke
 
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Koichi Sakata
 
GopherJS + Nashorn
GopherJS + NashornGopherJS + Nashorn
GopherJS + NashornTakuya Ueda
 
Black jumbodogをcoreclrで動かしてみた
Black jumbodogをcoreclrで動かしてみたBlack jumbodogをcoreclrで動かしてみた
Black jumbodogをcoreclrで動かしてみたYasuaki Matsuda
 
はじめてのWallaby.js
はじめてのWallaby.jsはじめてのWallaby.js
はじめてのWallaby.jsShunta Saito
 
Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207Kanako Kobayashi
 
How to deploy & operate OpenStack Production
How to deploy & operate OpenStack ProductionHow to deploy & operate OpenStack Production
How to deploy & operate OpenStack ProductionVirtualTech Japan Inc.
 
Offloading BPF Implementation to FPGA-NIC したいねって話
Offloading BPF Implementation to FPGA-NIC したいねって話Offloading BPF Implementation to FPGA-NIC したいねって話
Offloading BPF Implementation to FPGA-NIC したいねって話slankdev
 
Nodeにしましょう
NodeにしましょうNodeにしましょう
NodeにしましょうYuzo Hebishima
 
2013 08-19 jjug
2013 08-19 jjug2013 08-19 jjug
2013 08-19 jjugsk44_
 
Application insights で行ってみよう
Application insights で行ってみようApplication insights で行ってみよう
Application insights で行ってみようKazushi Kamegawa
 
Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発Tsutomu Yano
 

Similar to Groovyスクリプト"再"入門 起動編 (20)

JavaOne2014サンフランシスコ報告会in大阪
JavaOne2014サンフランシスコ報告会in大阪JavaOne2014サンフランシスコ報告会in大阪
JavaOne2014サンフランシスコ報告会in大阪
 
Arachne Unweaved (JP)
Arachne Unweaved (JP)Arachne Unweaved (JP)
Arachne Unweaved (JP)
 
関西 Java エンジニアの会 2012年6月度 JavaOne 報告会!
関西 Java エンジニアの会 2012年6月度 JavaOne 報告会!関西 Java エンジニアの会 2012年6月度 JavaOne 報告会!
関西 Java エンジニアの会 2012年6月度 JavaOne 報告会!
 
JSR353をGroovyで賢く使う
JSR353をGroovyで賢く使うJSR353をGroovyで賢く使う
JSR353をGroovyで賢く使う
 
いまさら触るAwt
いまさら触るAwtいまさら触るAwt
いまさら触るAwt
 
Groovyの紹介20130323
Groovyの紹介20130323Groovyの紹介20130323
Groovyの紹介20130323
 
Groovy Grails eXchage 2014 報告
Groovy Grails eXchage 2014 報告Groovy Grails eXchage 2014 報告
Groovy Grails eXchage 2014 報告
 
開発を彩る技術たち
開発を彩る技術たち開発を彩る技術たち
開発を彩る技術たち
 
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
 
GopherJS + Nashorn
GopherJS + NashornGopherJS + Nashorn
GopherJS + Nashorn
 
Black jumbodogをcoreclrで動かしてみた
Black jumbodogをcoreclrで動かしてみたBlack jumbodogをcoreclrで動かしてみた
Black jumbodogをcoreclrで動かしてみた
 
はじめてのWallaby.js
はじめてのWallaby.jsはじめてのWallaby.js
はじめてのWallaby.js
 
Beginners scala 20121113
Beginners scala 20121113Beginners scala 20121113
Beginners scala 20121113
 
Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207
 
How to deploy & operate OpenStack Production
How to deploy & operate OpenStack ProductionHow to deploy & operate OpenStack Production
How to deploy & operate OpenStack Production
 
Offloading BPF Implementation to FPGA-NIC したいねって話
Offloading BPF Implementation to FPGA-NIC したいねって話Offloading BPF Implementation to FPGA-NIC したいねって話
Offloading BPF Implementation to FPGA-NIC したいねって話
 
Nodeにしましょう
NodeにしましょうNodeにしましょう
Nodeにしましょう
 
2013 08-19 jjug
2013 08-19 jjug2013 08-19 jjug
2013 08-19 jjug
 
Application insights で行ってみよう
Application insights で行ってみようApplication insights で行ってみよう
Application insights で行ってみよう
 
Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発Clojureの世界と実際のWeb開発
Clojureの世界と実際のWeb開発
 

More from Yasuharu Hayami

More from Yasuharu Hayami (9)

Jggug20141219 collect何とか
Jggug20141219 collect何とかJggug20141219 collect何とか
Jggug20141219 collect何とか
 
Jggug20120901pojojson
Jggug20120901pojojsonJggug20120901pojojson
Jggug20120901pojojson
 
Groovyでjson
GroovyでjsonGroovyでjson
Groovyでjson
 
jggug20120120
jggug20120120jggug20120120
jggug20120120
 
JsonOutputについて
JsonOutputについてJsonOutputについて
JsonOutputについて
 
Groovyの紹介20110820
Groovyの紹介20110820Groovyの紹介20110820
Groovyの紹介20110820
 
Jggug20110617
Jggug20110617Jggug20110617
Jggug20110617
 
Jggugcamp2010 LT
Jggugcamp2010 LTJggugcamp2010 LT
Jggugcamp2010 LT
 
Jggug20100724
Jggug20100724Jggug20100724
Jggug20100724
 

Groovyスクリプト"再"入門 起動編