Your SlideShare is downloading. ×
仕事でも Groovy を使おう!
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

仕事でも Groovy を使おう!

2,050
views

Published on

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

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

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,050
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
10
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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