SlideShare ist ein Scribd-Unternehmen logo
1 von 18
仕事でも 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).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("~Message_${entry.key}.properties").newOutputStream(), "$entry.key") }
Scriptomは遅かったので POI で Scriptomでは結構時間が掛かったので、コメントにて教えてもらった POI で。
import org.apache.poi.hssf.usermodel.HSSFWorkbook def messages = [ ja : new Properties(), en : new Properties() ] def fileName = /~essage.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(/~essage_${entry.key}.properties/).newOutputStream(), "$entry.key") }
結構あっさり出来たので Groovy 良くね?と評価してもらい、正式に採用されました。
ま と め いきなり開発に使用するのは難しい。 良いところを見せつける。   簡単なツールとか、GAntとかが良いのかも。   ※Ant は詳しくないので、紹介しません  

Weitere ähnliche Inhalte

Was ist angesagt?

道具を磨き続ける
道具を磨き続ける道具を磨き続ける
道具を磨き続けるTakuya Fujimura
 
意識の低い自動化
意識の低い自動化意識の低い自動化
意識の低い自動化greenasparagus
 
Clustering -Elbow Chart-
Clustering -Elbow Chart-Clustering -Elbow Chart-
Clustering -Elbow Chart-Yuu Kimy
 
Lightning introduction to CoffeeScript 20131005
Lightning introduction to CoffeeScript 20131005Lightning introduction to CoffeeScript 20131005
Lightning introduction to CoffeeScript 20131005gotohayato
 
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)Hiro H.
 
Ruby初級者向けレッスン KOF2015 出張版
Ruby初級者向けレッスン KOF2015 出張版Ruby初級者向けレッスン KOF2015 出張版
Ruby初級者向けレッスン KOF2015 出張版higaki
 
20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介
20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介
20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介Yuki Fujisawa
 
etckeeperをopenSUSEの公式リポジトリに入れたいぞ!
etckeeperをopenSUSEの公式リポジトリに入れたいぞ!etckeeperをopenSUSEの公式リポジトリに入れたいぞ!
etckeeperをopenSUSEの公式リポジトリに入れたいぞ!Mitsutoshi Nakano
 
コミュニティのある風景
コミュニティのある風景コミュニティのある風景
コミュニティのある風景Ryunosuke SATO
 
Vimとctagsでコードリーディング 公開用
Vimとctagsでコードリーディング 公開用Vimとctagsでコードリーディング 公開用
Vimとctagsでコードリーディング 公開用Kenta Kase
 
Web技術勉強会 第37回
Web技術勉強会 第37回Web技術勉強会 第37回
Web技術勉強会 第37回龍一 田中
 
Debug Hacks at Security and Programming camp 2011
Debug Hacks at Security and Programming camp 2011 Debug Hacks at Security and Programming camp 2011
Debug Hacks at Security and Programming camp 2011 Hiro Yoshioka
 
Djangoフレームワークの紹介
Djangoフレームワークの紹介Djangoフレームワークの紹介
Djangoフレームワークの紹介Shinya Okano
 
リテラルと型の続きの話 #__swift__
リテラルと型の続きの話 #__swift__リテラルと型の続きの話 #__swift__
リテラルと型の続きの話 #__swift__Tomohiro Kumagai
 
Ruby 勉強会 第42回 発表資料 IO について
Ruby 勉強会 第42回 発表資料 IO についてRuby 勉強会 第42回 発表資料 IO について
Ruby 勉強会 第42回 発表資料 IO についてTomoya Kawanishi
 
ランダムにおちるfeature_system spec対策rspec-retry_ex の 紹介
ランダムにおちるfeature_system spec対策rspec-retry_ex の 紹介ランダムにおちるfeature_system spec対策rspec-retry_ex の 紹介
ランダムにおちるfeature_system spec対策rspec-retry_ex の 紹介Yuya Taki
 
JavaScript超入門 基礎
JavaScript超入門 基礎JavaScript超入門 基礎
JavaScript超入門 基礎tetsu6
 
SlowQueryとの戦い
SlowQueryとの戦いSlowQueryとの戦い
SlowQueryとの戦いKen Gotoh
 

Was ist angesagt? (20)

道具を磨き続ける
道具を磨き続ける道具を磨き続ける
道具を磨き続ける
 
意識の低い自動化
意識の低い自動化意識の低い自動化
意識の低い自動化
 
Clustering -Elbow Chart-
Clustering -Elbow Chart-Clustering -Elbow Chart-
Clustering -Elbow Chart-
 
Lightning introduction to CoffeeScript 20131005
Lightning introduction to CoffeeScript 20131005Lightning introduction to CoffeeScript 20131005
Lightning introduction to CoffeeScript 20131005
 
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
 
Ruby初級者向けレッスン KOF2015 出張版
Ruby初級者向けレッスン KOF2015 出張版Ruby初級者向けレッスン KOF2015 出張版
Ruby初級者向けレッスン KOF2015 出張版
 
20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介
20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介
20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介
 
etckeeperをopenSUSEの公式リポジトリに入れたいぞ!
etckeeperをopenSUSEの公式リポジトリに入れたいぞ!etckeeperをopenSUSEの公式リポジトリに入れたいぞ!
etckeeperをopenSUSEの公式リポジトリに入れたいぞ!
 
コミュニティのある風景
コミュニティのある風景コミュニティのある風景
コミュニティのある風景
 
Vimとctagsでコードリーディング 公開用
Vimとctagsでコードリーディング 公開用Vimとctagsでコードリーディング 公開用
Vimとctagsでコードリーディング 公開用
 
Web技術勉強会 第37回
Web技術勉強会 第37回Web技術勉強会 第37回
Web技術勉強会 第37回
 
Debug Hacks at Security and Programming camp 2011
Debug Hacks at Security and Programming camp 2011 Debug Hacks at Security and Programming camp 2011
Debug Hacks at Security and Programming camp 2011
 
Djangoフレームワークの紹介
Djangoフレームワークの紹介Djangoフレームワークの紹介
Djangoフレームワークの紹介
 
リテラルと型の続きの話 #__swift__
リテラルと型の続きの話 #__swift__リテラルと型の続きの話 #__swift__
リテラルと型の続きの話 #__swift__
 
Clrh47zecl
Clrh47zeclClrh47zecl
Clrh47zecl
 
Ruby 勉強会 第42回 発表資料 IO について
Ruby 勉強会 第42回 発表資料 IO についてRuby 勉強会 第42回 発表資料 IO について
Ruby 勉強会 第42回 発表資料 IO について
 
ランダムにおちるfeature_system spec対策rspec-retry_ex の 紹介
ランダムにおちるfeature_system spec対策rspec-retry_ex の 紹介ランダムにおちるfeature_system spec対策rspec-retry_ex の 紹介
ランダムにおちるfeature_system spec対策rspec-retry_ex の 紹介
 
JavaScript超入門 基礎
JavaScript超入門 基礎JavaScript超入門 基礎
JavaScript超入門 基礎
 
Mishimasyk6 iwatobipen
Mishimasyk6 iwatobipenMishimasyk6 iwatobipen
Mishimasyk6 iwatobipen
 
SlowQueryとの戦い
SlowQueryとの戦いSlowQueryとの戦い
SlowQueryとの戦い
 

Andere mochten auch

Sql world を支える技術
Sql world を支える技術Sql world を支える技術
Sql world を支える技術Oda Shinsuke
 
Pex を試してみよう!
Pex を試してみよう!Pex を試してみよう!
Pex を試してみよう!Oda Shinsuke
 
開発を彩る技術たち
開発を彩る技術たち開発を彩る技術たち
開発を彩る技術たちOda Shinsuke
 
Sql azure知ってますか?改訂版
Sql azure知ってますか?改訂版Sql azure知ってますか?改訂版
Sql azure知ってますか?改訂版Oda Shinsuke
 
Sql world を支える技術
Sql world を支える技術Sql world を支える技術
Sql world を支える技術Oda Shinsuke
 
第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」
第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」
第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」Tsuyoshi Yamamoto
 

Andere mochten auch (9)

Sql world を支える技術
Sql world を支える技術Sql world を支える技術
Sql world を支える技術
 
Pex を試してみよう!
Pex を試してみよう!Pex を試してみよう!
Pex を試してみよう!
 
開発を彩る技術たち
開発を彩る技術たち開発を彩る技術たち
開発を彩る技術たち
 
Sql azure知ってますか?改訂版
Sql azure知ってますか?改訂版Sql azure知ってますか?改訂版
Sql azure知ってますか?改訂版
 
Sql world を支える技術
Sql world を支える技術Sql world を支える技術
Sql world を支える技術
 
Sql world とは
Sql world とはSql world とは
Sql world とは
 
Sql world とは
Sql world とはSql world とは
Sql world とは
 
Sql world とは
Sql world とはSql world とは
Sql world とは
 
第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」
第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」
第3回Grails/Groovy勉強会名古屋「Grails名古屋座談会」
 

Ähnlich wie 仕事でも Groovy を使おう!

JavaScript 非同期処理 入門
JavaScript非同期処理 入門JavaScript非同期処理 入門
JavaScript 非同期処理 入門Ishibashi Ryosuke
 
Ecmascript2015とその周辺について
Ecmascript2015とその周辺についてEcmascript2015とその周辺について
Ecmascript2015とその周辺について豊明 尾古
 
GroovyなAndroidテスト #atest_hack
GroovyなAndroidテスト #atest_hackGroovyなAndroidテスト #atest_hack
GroovyなAndroidテスト #atest_hackTakahiro Yoshimura
 
Twitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hackTwitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hackkimukou_26 Kimukou
 
F#によるFunctional Programming入門
F#によるFunctional Programming入門F#によるFunctional Programming入門
F#によるFunctional Programming入門bleis tift
 
1.29.user,user,user
1.29.user,user,user1.29.user,user,user
1.29.user,user,userTonny Xu
 
AFNetworking使ってみた
AFNetworking使ってみたAFNetworking使ってみた
AFNetworking使ってみたTaro Matsuzawa
 
再帰、漸化式、差分方程式とアルゴリズム Gx#20
再帰、漸化式、差分方程式とアルゴリズム   Gx#20再帰、漸化式、差分方程式とアルゴリズム   Gx#20
再帰、漸化式、差分方程式とアルゴリズム Gx#20鉄次 尾形
 
JavaからScala、そしてClojureへ: 実務で活きる関数型プログラミング
JavaからScala、そしてClojureへ: 実務で活きる関数型プログラミングJavaからScala、そしてClojureへ: 実務で活きる関数型プログラミング
JavaからScala、そしてClojureへ: 実務で活きる関数型プログラミングKent Ohashi
 
F#+Erlangで簡単なシューティングゲームを作ってみている
F#+Erlangで簡単なシューティングゲームを作ってみているF#+Erlangで簡単なシューティングゲームを作ってみている
F#+Erlangで簡単なシューティングゲームを作ってみているpocketberserker
 
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~decode2016
 
Python東海GAEやってみた
Python東海GAEやってみたPython東海GAEやってみた
Python東海GAEやってみたMori Shingo
 
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用Akira Inoue
 
Javascriptで無限ループを実現する5つの方法
Javascriptで無限ループを実現する5つの方法Javascriptで無限ループを実現する5つの方法
Javascriptで無限ループを実現する5つの方法yhara
 
JavaScriptおよびXPages Vote技術解説
JavaScriptおよびXPages Vote技術解説JavaScriptおよびXPages Vote技術解説
JavaScriptおよびXPages Vote技術解説賢次 海老原
 
pairsでのAngularJS x TypeScript x e2e @めぐすた#1
pairsでのAngularJS x TypeScript x e2e @めぐすた#1 pairsでのAngularJS x TypeScript x e2e @めぐすた#1
pairsでのAngularJS x TypeScript x e2e @めぐすた#1 Takuma Morikawa
 
この実装には問題がある!
この実装には問題がある!この実装には問題がある!
この実装には問題がある!GOMI NINGEN
 
英語コーダー大阪 ー 初めての英語コーダー教室
英語コーダー大阪 ー 初めての英語コーダー教室英語コーダー大阪 ー 初めての英語コーダー教室
英語コーダー大阪 ー 初めての英語コーダー教室Martin Heidegger
 

Ähnlich wie 仕事でも Groovy を使おう! (20)

JavaScript 非同期処理 入門
JavaScript非同期処理 入門JavaScript非同期処理 入門
JavaScript 非同期処理 入門
 
Ecmascript2015とその周辺について
Ecmascript2015とその周辺についてEcmascript2015とその周辺について
Ecmascript2015とその周辺について
 
GroovyなAndroidテスト #atest_hack
GroovyなAndroidテスト #atest_hackGroovyなAndroidテスト #atest_hack
GroovyなAndroidテスト #atest_hack
 
Twitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hackTwitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hack
 
F#によるFunctional Programming入門
F#によるFunctional Programming入門F#によるFunctional Programming入門
F#によるFunctional Programming入門
 
1.29.user,user,user
1.29.user,user,user1.29.user,user,user
1.29.user,user,user
 
AFNetworking使ってみた
AFNetworking使ってみたAFNetworking使ってみた
AFNetworking使ってみた
 
再帰、漸化式、差分方程式とアルゴリズム Gx#20
再帰、漸化式、差分方程式とアルゴリズム   Gx#20再帰、漸化式、差分方程式とアルゴリズム   Gx#20
再帰、漸化式、差分方程式とアルゴリズム Gx#20
 
JavaからScala、そしてClojureへ: 実務で活きる関数型プログラミング
JavaからScala、そしてClojureへ: 実務で活きる関数型プログラミングJavaからScala、そしてClojureへ: 実務で活きる関数型プログラミング
JavaからScala、そしてClojureへ: 実務で活きる関数型プログラミング
 
Swift
SwiftSwift
Swift
 
F#+Erlangで簡単なシューティングゲームを作ってみている
F#+Erlangで簡単なシューティングゲームを作ってみているF#+Erlangで簡単なシューティングゲームを作ってみている
F#+Erlangで簡単なシューティングゲームを作ってみている
 
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
 
Python東海GAEやってみた
Python東海GAEやってみたPython東海GAEやってみた
Python東海GAEやってみた
 
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
 
Javascriptで無限ループを実現する5つの方法
Javascriptで無限ループを実現する5つの方法Javascriptで無限ループを実現する5つの方法
Javascriptで無限ループを実現する5つの方法
 
JavaScriptおよびXPages Vote技術解説
JavaScriptおよびXPages Vote技術解説JavaScriptおよびXPages Vote技術解説
JavaScriptおよびXPages Vote技術解説
 
pairsでのAngularJS x TypeScript x e2e @めぐすた#1
pairsでのAngularJS x TypeScript x e2e @めぐすた#1 pairsでのAngularJS x TypeScript x e2e @めぐすた#1
pairsでのAngularJS x TypeScript x e2e @めぐすた#1
 
Dotnetconf2017
Dotnetconf2017Dotnetconf2017
Dotnetconf2017
 
この実装には問題がある!
この実装には問題がある!この実装には問題がある!
この実装には問題がある!
 
英語コーダー大阪 ー 初めての英語コーダー教室
英語コーダー大阪 ー 初めての英語コーダー教室英語コーダー大阪 ー 初めての英語コーダー教室
英語コーダー大阪 ー 初めての英語コーダー教室
 

Mehr von Oda Shinsuke

SQL Server2022_PSPoptimization_pub.pdf
SQL Server2022_PSPoptimization_pub.pdfSQL Server2022_PSPoptimization_pub.pdf
SQL Server2022_PSPoptimization_pub.pdfOda Shinsuke
 
Dot net+sql server tips
Dot net+sql server tipsDot net+sql server tips
Dot net+sql server tipsOda Shinsuke
 
Sql server 2019 ざっくり紹介
Sql server 2019  ざっくり紹介Sql server 2019  ざっくり紹介
Sql server 2019 ざっくり紹介Oda Shinsuke
 
Spark on sql server?
Spark on sql server?Spark on sql server?
Spark on sql server?Oda Shinsuke
 
SQL Server のロック概要
SQL Server のロック概要SQL Server のロック概要
SQL Server のロック概要Oda Shinsuke
 
Blazor 触ってみた
Blazor 触ってみたBlazor 触ってみた
Blazor 触ってみたOda Shinsuke
 
Linux + PHP でも SQL Server
Linux + PHP でも SQL ServerLinux + PHP でも SQL Server
Linux + PHP でも SQL ServerOda Shinsuke
 
グラフデータベースの話し
グラフデータベースの話しグラフデータベースの話し
グラフデータベースの話しOda Shinsuke
 
Sql server 2017 新機能のご紹介
Sql server 2017 新機能のご紹介Sql server 2017 新機能のご紹介
Sql server 2017 新機能のご紹介Oda Shinsuke
 
Sql server 2017 からはじめる graph データベース
Sql server 2017 からはじめる graph データベースSql server 2017 からはじめる graph データベース
Sql server 2017 からはじめる graph データベースOda Shinsuke
 
Transaction scopeまだダメ
Transaction scopeまだダメTransaction scopeまだダメ
Transaction scopeまだダメOda Shinsuke
 
Sql serverと他dbの違いを押さえよう!
Sql serverと他dbの違いを押さえよう!Sql serverと他dbの違いを押さえよう!
Sql serverと他dbの違いを押さえよう!Oda Shinsuke
 
2016年を振り返って
2016年を振り返って2016年を振り返って
2016年を振り返ってOda Shinsuke
 
開発者の方向けの Sql server(db) t sql 振り返り
開発者の方向けの Sql server(db) t sql 振り返り開発者の方向けの Sql server(db) t sql 振り返り
開発者の方向けの Sql server(db) t sql 振り返りOda Shinsuke
 
Ms build 触ってみよう
Ms build 触ってみようMs build 触ってみよう
Ms build 触ってみようOda Shinsuke
 
Sql server2014復習とsqlserver2016の紹介
Sql server2014復習とsqlserver2016の紹介Sql server2014復習とsqlserver2016の紹介
Sql server2014復習とsqlserver2016の紹介Oda Shinsuke
 
Sql server sql database 最新機能紹介
Sql server sql database 最新機能紹介Sql server sql database 最新機能紹介
Sql server sql database 最新機能紹介Oda Shinsuke
 

Mehr von Oda Shinsuke (20)

SQL Server2022_PSPoptimization_pub.pdf
SQL Server2022_PSPoptimization_pub.pdfSQL Server2022_PSPoptimization_pub.pdf
SQL Server2022_PSPoptimization_pub.pdf
 
What's hyperscale
What's hyperscaleWhat's hyperscale
What's hyperscale
 
Dot net+sql server tips
Dot net+sql server tipsDot net+sql server tips
Dot net+sql server tips
 
Sql server 2019 ざっくり紹介
Sql server 2019  ざっくり紹介Sql server 2019  ざっくり紹介
Sql server 2019 ざっくり紹介
 
Spark on sql server?
Spark on sql server?Spark on sql server?
Spark on sql server?
 
SQL Server のロック概要
SQL Server のロック概要SQL Server のロック概要
SQL Server のロック概要
 
Blazor 触ってみた
Blazor 触ってみたBlazor 触ってみた
Blazor 触ってみた
 
Linux + PHP でも SQL Server
Linux + PHP でも SQL ServerLinux + PHP でも SQL Server
Linux + PHP でも SQL Server
 
グラフデータベースの話し
グラフデータベースの話しグラフデータベースの話し
グラフデータベースの話し
 
Sql server 2017 新機能のご紹介
Sql server 2017 新機能のご紹介Sql server 2017 新機能のご紹介
Sql server 2017 新機能のご紹介
 
Sql server 2017 からはじめる graph データベース
Sql server 2017 からはじめる graph データベースSql server 2017 からはじめる graph データベース
Sql server 2017 からはじめる graph データベース
 
Transaction scopeまだダメ
Transaction scopeまだダメTransaction scopeまだダメ
Transaction scopeまだダメ
 
Sql serverと他dbの違いを押さえよう!
Sql serverと他dbの違いを押さえよう!Sql serverと他dbの違いを押さえよう!
Sql serverと他dbの違いを押さえよう!
 
2016年を振り返って
2016年を振り返って2016年を振り返って
2016年を振り返って
 
Sql world とは
Sql world とはSql world とは
Sql world とは
 
開発者の方向けの Sql server(db) t sql 振り返り
開発者の方向けの Sql server(db) t sql 振り返り開発者の方向けの Sql server(db) t sql 振り返り
開発者の方向けの Sql server(db) t sql 振り返り
 
Sql world とは
Sql world とはSql world とは
Sql world とは
 
Ms build 触ってみよう
Ms build 触ってみようMs build 触ってみよう
Ms build 触ってみよう
 
Sql server2014復習とsqlserver2016の紹介
Sql server2014復習とsqlserver2016の紹介Sql server2014復習とsqlserver2016の紹介
Sql server2014復習とsqlserver2016の紹介
 
Sql server sql database 最新機能紹介
Sql server sql database 最新機能紹介Sql server sql database 最新機能紹介
Sql server sql database 最新機能紹介
 

Kürzlich hochgeladen

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 

Kürzlich hochgeladen (8)

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 

仕事でも Groovy を使おう!

  • 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 ファイルを作成していた。
  • 11. VBA から Groovy へ 元々 Excel マクロ(VBA)で properties ファイルを作成していた。 ある時、ビルドプロセスに取り込む事に・・・。 Excel マクロだと、セキュリティを緩めないと自動で流せない!?   「なんか良い方法ない?」と相談を受ける。 そこで・・・
  • 12. Groovy なら簡単に出来ますよ!            ____       / \  /\  キリッ     / (ー)  (ー)\    /   ⌒(__人__)⌒ \    |      |r┬-|    |     \     `ー'´   /    ノ            \  /´               ヽ |    l              \ ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、.  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))
  • 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 = "~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).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("~Message_${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 = /~essage.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(/~essage_${entry.key}.properties/).newOutputStream(), "$entry.key") }
  • 18. ま と め いきなり開発に使用するのは難しい。 良いところを見せつける。   簡単なツールとか、GAntとかが良いのかも。   ※Ant は詳しくないので、紹介しません