仕事でも Groovy を使おう!Groovy を堂々と使える環境を作ろう
アジェンダ自己紹介Groovy って認知度低いよね?どうやって認めてもらうか?体験談:私の場合まとめ
自己紹介名前:織田 信亮 (おだ しんすけ)勤務地:西中島で働いてます.NET (C#)がメイン(Java はよく知りません)オンラインの活動 Blog:お だ のスペース  http://d.hatena.ne.jp/odashinsuke/ twitter:shinsukeoda http://twitter.com/shinsukeoda
Groovy って認知度低いよね?この勉強会に参加するようになるまで知らなかった  あんまり Java に興味無かったし、アンテナ張ってなかったのかな?
会社でも…隣に座ってる人も知らなかったJava をメインでやってる人も知らなかったみんな、知らないじゃね?
どうやって認めてもらうか便利さを見せつける!!  いきなり「アプリケーションを Groovy で作りましょう」と言っても受け入れてもらえません。   ひとまず、開発ツールやビルドプロセスにちゃちゃっと取り入れて、見せびらかしましょう。
でも、環境作るの大変じゃね?セットアップ簡単だよ Windows なら、インストーラー叩くだけ  または、解凍して環境パス通すだけ
新しい言語覚えるのダルイしJava の文法とほぼ同じで書けるよ  微妙に違ったりするので、全くそのまま移植は出来ないかも。  配列の初期化子とかダメじゃね?
体験談:私の場合当時取りかかっていた プロジェクトに、Excel から .properties ファイルを生成している物があった。  多言語対応用のメッセージ管理に Excel を使用し、properties ファイルを作成していた。
こんな感じ
VBA から Groovy へ元々 Excel マクロ(VBA)で properties ファイルを作成していた。ある時、ビルドプロセスに取り込む事に・・・。Excel マクロだと、セキュリティを緩めないと自動で流せない!?  「なんか良い方法ない?」と相談を受ける。そこで・・・
Groovy なら簡単に出来ますよ!              ____        / \  /\  キリッ     / (ー)  (ー)\    /   ⌒(__人__)⌒ \    |      |r┬-|    |     \     `ー'´   /    ノ            \  /´               ヽ |    l              \ ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、.  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))
どうやったかScriptomを使いました。
import org.codehaus.groovy.scriptom.*def messages = [ ja : new Properties(), en : new Properties() ]Scriptom.inApartment{  def excelApp  def workBook  try { excelApp = new ActiveXObject('Excel.Application')    def fileName = "~\\Message.xls"    // ファイルを開くworkBook = excelApp.workbooks.open(fileName)    // セルに対しての操作workBook.sheets(1).cells.with {      def rowIndex = 2      def messageKey = cells.item(rowIndex, 1).value      while (messageKey) {         def japanese = cells.item(rowIndex, 2).value        def english = cells.item(rowIndex, 3).valuemessages.ja.setProperty(messageKey, japanese)messages.en.setProperty(messageKey, english)rowIndex++messageKey = cells.item(rowIndex, 1).value      }     }  } finally { workBook?.close()excelApp?.quit()  }}messages.each { entry -> entry.value.store(new File("~\\Message_${entry.key}.properties").newOutputStream(), "$entry.key")}
Scriptomは遅かったので POI でScriptomでは結構時間が掛かったので、コメントにて教えてもらった POI で。
import org.apache.poi.hssf.usermodel.HSSFWorkbookdef messages = [ ja : new Properties(), en : new Properties() ]def fileName = /~\Message.xls/// ファイルを開くHSSFWorkbookworkBook = new HSSFWorkbook(new File(fileName).newInputStream())// セルに対しての操作def sheet = workBook.sheets[0]def rowIndex = 1def row = sheet.getRow(rowIndex)def messageKey = row.getCell((short) 0).getRichStringCellValue().getString()while (messageKey) {     def japanese = row.getCell((short) 1).getRichStringCellValue().getString()    def english = row.getCell((short) 2).getRichStringCellValue().getString()messages.ja.setProperty(messageKey, japanese)messages.en.setProperty(messageKey, english)rowIndex++    row = sheet.getRow(rowIndex)messageKey = row?.getCell((short) 0)?.getRichStringCellValue()?.getString()} messages.each { entry -> entry.value.store(new File(/~\Message_${entry.key}.properties/).newOutputStream(), "$entry.key")}
結構あっさり出来たのでGroovy 良くね?と評価してもらい、正式に採用されました。
ま と めいきなり開発に使用するのは難しい。良いところを見せつける。  簡単なツールとか、GAntとかが良いのかも。  ※Ant は詳しくないので、紹介しません 

仕事でも Groovy を使おう!