現場で使えるGroovy(その1)「Windowsのパスは /文字列/ を使おう」
このシリーズの一覧はこちら
はじめに
現場で使うマシンは残念ながらWindowsであることが多い。そこで、Groovyスクリプトを書く際のちょっとしたTipsを一つご紹介します。
/文字列/ 表記
Groovyでは正規表現を簡潔に記述するための文字列記述方式として、
/文字列/
という表記方法が用意されています。これはバックスラッシュ(\)をエスケープしなくてもそのまま書けるため、正規表現でバックスラッシュを多用する場合に重宝します。ちなみにGStringと同じように${...}形式で式も埋め込めますので、「バックスラッシュを自動エスケープしてくれる便利なGString形式」くらいの認識で使い始めることができると思います。
def str = "Hello" assert 'Hello! World' == /${str}! World/
さて、前置きはこれくらいにして、この // 形式が有効活用できる場面が実はもうひとつありまして、それはそう、Windowsのパスですよ。ご存知の通り、Windowsは
C:\Documents and Settings\All Users\デスクトップ
なんていう風にバックスラッシュ込みのパスですよね。そこでGroovyの /文字列/ を使えば
def winPath = /C:\Documents and Settings\All Users\デスクトップ/
という風にすっきり書けちゃうわけですね。素敵ですね。
ということで、これを利用して実際に私が現場で書いたGroovyスクリプトをひとつ紹介します。
とあるフォルダにある「.groovy」ファイルを とあるフォルダにコピーするGroovyスクリプト
new AntBuilder().sequential { copy(todir: /C:\dotGroovy/) { fileset(dir: /C:\work/, includes: '**/*.groovy') } }
これは「C:\work」フォルダ配下にある「.groovy」ファイルを階層構造を保持したまますべて「C:\dotGroovy」にコピーするスクリプトです。たった4行ですがパワフルなことができています。パスの部分はエクスプローラからコピペでいけるのが楽でいいですね。
余談ですが、Fileオブジェクトを作る時は as File を使うと便利です。
/C:\work/ as File
2011-07-09追記
asin:4774147273 のP68でも当記事と同等の手法が紹介されていた!それから、Groovy v1.8から ドルスラ記法が追加されたのでその例を追記します。
$/string/$(GString展開する、バックスラッシュはバックスラッシュとして扱う、複数行可)
『プログラミングGroovy』P67 より
これは、/文字列/ の複数行版と単純に捉えることもできます。
def winPathList = $/\ C:\Windows\System32 C:\Documents and Settings\All Users\デスクトップ /$
ドルスラ文字列を使えばWindowsパスを含んだ複数行の文字列も簡単に扱えてしまうわけですね。
ちなみに、出だしが $/\
となっているのはGroovyのヒアドキュメントで改行取り消し - No Programming, No Lifeのためです。
おわりに
これはWindows専用なんだと強く自分に言い聞かせれば、書く手間とあわせてもおつりが来ると思いませんか?現場がWindowsな人はぜひ試してみてください。
Enjoy your code more groovier!
参考書籍
Groovyに興味を持った方はぜひこの一冊を購入しましょう!
- 作者: 関谷和愛,上原潤二,須江信洋,中野靖治
- 出版社/メーカー: 技術評論社
- 発売日: 2011/07/06
- メディア: 単行本(ソフトカバー)
- 購入: 5人 クリック: 302回
- この商品を含むブログ (113件) を見る