Groovy in ClubDB2

2月22日(金)の ClubDB2
「Javaプログラマーに贈る:Groovyで楽にSQLを実行してみよう」
に行ってきました。

現場の効率化のために、
プログラマが利用するツールを
作ることの多いjfluteですが...

永続的レギュラー的な機能であれば、
しっかりJavaで堅く書いてDBFluteに
取り入れちゃうって感じになったりしますが、
ちょっとその場限り、もしくはそのプロジェクト限り、
そういった場合はもうちょいサクっとした環境で
作りたいと思うことがあります。

そのときの言語として、以前からGroovyに着目して
いたのですが、なかなかアプローチする機会が取れず、
「いつかいつか」と時が経つばかりでした。
すると...

「よもやClubDB2でGroovyが出てくるとはー!?」

しかも、JDBCプログラミングするってことなので、
なおさら興味のある話で飛びつきました。
3ヶ月の缶詰プログラミングの後だったので、
ちょうどよく都合もつきました。
既に詳しいブログもあるので、

// 「第158回 Javaプログラマーに贈る:Groovyで楽 | びぼーろく
http://d.hatena.ne.jp/kaakaa_hoe/20130222

自分は、とりあえず勉強会中にリアルタイムで
試していたコードを載せるだけ!?
(ブログレイアウト的に見づらいかも...)
import groovy.sql.Sql

sql=Sql.newInstance("jdbc:db2://localhost:50002/dfexdb", "db2inst1", "****", "com.ibm.db2.jcc.DB2Driver")
sql.execute("SET CURRENT SCHEMA = DFEXDB")

println "- - - - - - - - - - - - - - - - "
sql.eachRow("select * from MEMBER", {println it.MEMBER_ID + " : " + it.MEMBER_NAME})

println "- - - - - - - - - - - - - - - - "
memberList = sql.rows("select * from MEMBER")
memberList.each {row-> println row.MEMBER_NAME + " : " +row.BIRTHDATE}

println "- - - - - - - - - - - - - - - - "
sql.withTransaction {
  sql.eachRow("select * from MEMBER where MEMBER_NAME like ?", ['S%']) {println it.MEMBER_ID + " : " + it.MEMBER_NAME}
}

sql.close()
どうしても、OSユーザーになっちゃう!?
ので、パスワードは伏せてます。
(DB2ユーザーみたいなのは作れないんだっけ...)

という感じで、DBFluteおなじみのExampleDBの、
会員テーブルを検索してます。
ちょうど Mac版のDB2DBFluteのテスト環境が
ありましたので、それにつないでみました。
 -> DB2 on Mac for DBFlute

見事に検索できましたー。
最初、"SET CURRENT SCHEMA" してなくて、
42704エラーが発生してしまいましたが、
ヤマカンで execute() だーとやったらOK!

気軽に検索して何か出力する系のツールは、
本当に簡単に作れそうー!
Javaだとそれ自体もなんか大変でしたので。
始めてDB2の懇談会にも参加させて頂きました。

なんとなんとなんと!

運営者の方々のはからいで、
「みんな禁煙でねー」
ということを言って頂きました。
なんと素敵なことでしょう!

やはりそこがネックで今まで参加は
見送っていたのですが、うれしいばかりです。
あの時間帯であの場所柄、禁煙の飲み屋なんて
ほぼ存在しないので、店内の煙は若干仕方ない...
と割り切るところですが、とにかくなによりも、
ClubDB2の方々の心暖かい配慮がとても身に染みます。

ベジに関しても、お店の人にお野菜のメニューを
聞いてくれたりして、本当にありがたいばかりです。

いやぁ、ないですよーぅ。
エンジニア系の懇談会で禁煙を考慮してくれるなんて。
普段では、そんなのDBFluteの懇談会くらい(^^
(DBFluteユーザーの集いは、
 常に禁煙のお店...みんなありがとう

simさんともこうやってじっくり話をするのは初めてて、
色々飛び出る技術ネタ、その見識の深さに驚きます。
初めてお会いする方ともたくさんお話しできて、
とてもとても楽しかったです!
みなさん、ありがとうございます!
ClubDB2の方々、ありがとうございます!

自分も、もっとおもしろいネタを提供することで、
恩返ししたいと思います(^^

それにしても、
AlterCheckは、やはりどの現場でも魅力的だと確信。
この機能にフォーカスしたお話をもっと色々なところで
していきたいなぁと思いました。
(資料も、もっと整備していきたいな)

運用後DB変更 | DBFlute
AlterCheck | DBFlute
というわけで、他にも想い暖まることもあり、
一層、モチベーションは上がってきました。

DBFluteで、
現場のエンジニアが少しでも効率よくなり、
そのエンジニアが支えるビジネスが、
少しでも先に進めばと。

そうなれるように、
DBFlute自身がより効果的なものになること、
DBFluteがもっと多くの人に使ってもらえるような環境作り、
もっと頑張りたいなと。

ということで、
今(now)もEclipse開いて実装してまーす。
(オルオルカフェにて、ハーブティー飲みながら)

// 講師の方のブログ (資料が公開されています)
http://db2.jugem.cc/?eid=2545