20140329_kyon_kao_wedding_lt_groovy
TRANSCRIPT
2014.3.29
須江信洋(@nobusue)
http://d.hatena.ne.jp/nobusue
https://www.facebook.com/nobuhiro.sue
きょんくん&かおりちゃん
結婚おめでとうLT大会 in Tokyo
『Groovy(G*)による
SIer閉鎖空間サバイバル術』
まずは、
ご結婚
おめでとうございます!!!
(from JGGUG一同)
2
自己紹介
須江 信洋(すえ のぶひろ) Twitter: @nobusue
https://www.facebook.com/nobuhiro.sue
約10年ほどJavaEE関連の仕事をしてます
2013年10月よりフリーランス(個人事業主)
最近興味を持っているもの Vert.x / Storm / Camel / ElasticSearch
Vagrant / Docker / Ansible / Serverspec
もちろんGroovy / Gradle / Grails
3
Gradle本 (執筆中)
JGGUGって?
Japan Grails/Groovy User Group 2009年発足
Grails/GroovyなどのGroovyエコシステム(G*)に関するコミュニティ
前身は2006年から活動していたGrailsコミュニティ
こわくない
毎月第3金曜日にG*ワークショップを開催 参加型(ハンズオンなど)
告知・申し込みはこちら
http://jggug.doorkeeper.jp/
4
http://www.jggug.org/
きょんくんとJGGUG
何度も登壇いただいてます!
最近だと、、、
5
いつも刺激的な発表をありがとうございます。
今後ともよろしくお願い申し上げます。
(JGGUG一同)
ここから本題
[Q]Groovyって役に立つの? [A]知らなくても生きていけますが、 知っていると快適に生きていけるかも 例えばこんなとき JavaのクラスやJVMの挙動を手っ取り早く調べたい
JUnitのテストケースを簡潔に書きたい
Antのビルドスクリプトが複雑すぎて手がつけられない
Jenkinsをちょちょっとハックしたい
JDK以外禁止の環境で生き延びたい
6
とあるSIerの現場
インターネット接続制限厳しい 当然ながらProxyでアクセス制限
SlideShare禁止
Dropbox/Google groups禁止
GitHub禁止
使えるツールの制限厳しい Ruby入ってない(あっても1.8.7)
Python古い
Gemとか自由に取ってこれない
仮想マシン禁止(というか32bit Windows…)
7
インストールレスでGroovy
JDKさえインストールされていれば、 以下の方法でGroovyが使えます Groovyのバイナリを落としてくる
展開して embeddable/groovy-all-x.x.x.jar を取り出す
ターゲット環境で以下を実行
java –jar groovy-all-x.x.x.jar hoge.groovy
java –jar groovy-all-x.x.x.jar –e “println ‘Hello groovy’”
8
実話 その1
とあるシステム間の疎通確認のため、対向側のサーバーの指定ポートに接続できるか確認したい
間にFirewallがあるので、対向側でnetstatで確認するだけではダメ
最近のLinuxはtelnet入ってない・・・
以下で解決 java –jar groovy-all.jar –e
"new Socket(‘x.x.x.x’, 9443)“
接続できない場合、ConnectException が出る
9
実話 その2
アプリケーションが使っているOSSの名称と
バージョンをリストアップしてお客さんに報告しなければならなくなった
ビルドは当然Antで、JARはSubversionに直接コミットされている・・・
そんなプロジェクトが十数個
10
こんなの作りました
11
def rootDir = new File(args[0])
rootDir.eachFileRecurse { file ->
if( file.name =~ /.*¥.jar$/ {
def jar = new JarFile(file)
def manifest = jar.manifest
def att = manifest?.mainAttributes
println “[File] ${file.absolutePath}”
println “Title: ${att?.getValue(‘Implementation-Title’)}”
println “Version: ${att?.getValue(‘Implementation-Version’)}”
println
}
というわけで
Groovy(G*)に興味が湧いてきた方は ぜひG*ワークショップにお越しください 告知・申し込みはこちら
http://jggug.doorkeeper.jp/
次回はApache Camel+Groovyの予定
お仕事も承っております ご相談は @nobusue まで
12