仕事でも Groovy を使おう!

2,354 views

Published on

第3回 「Groovyイン・アクション」読書会 IN 関西 ショートセッション資料

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,354
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
12
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

仕事でも Groovy を使おう!

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

×