Yokohama.groovy #6 を開催してきた #yokohamagroovy


(写真:横浜タネマキの壁に書かれているイメージキャラクターを含めた『壁画』。)


開催会場はいつものように横浜タネマキ。つい先週環境が変わり、若干開始時刻の20:00に間に合わなさげな雰囲気になりつつありそうなのですがこの日一緒に参加された御二方(@grimroseさん、@y_sumidaさん)は本編(読書&写経)開始を待っていてくださいました。ありがたい事です。


と言うわけでこの日は第4章 4.1.Groovy APIから。第4章は冒頭でGroovyのAPIからパッケージ一覧を抜粋しているのですが、その一覧に記載されているパッケージをそれぞれ見ていこう、という事になりました。以下雑感、メモ等を。

groovy.grape

そもそもGrapeとは何ぞや?という所からざっくりGrapeを探る。

Groovy組み込みのJAR自動ダウンロード・管理機構。
Grapeとは?
Apache Ivyを使った、Groovyの標準的なモジュール管理ツールです。Mavenリポジトリをサポートしているので、他のリポジトリからJARファイルなどをダウンロードしてスクリプト中で依存関係を解決しつつ実行することができます。

依存管理ツールというのは分かるのですが、じゃあどんな局面で使う・使えるのだろう?という所を考えて行くと、割とそんなに頻繁では無いよね〜、という結論に。『依存性を解決させる』という事自体そこまで頻繁に訪れる訳でもないからまぁ当然と言えば当然なのか。@grimroseさんによると、以下の環境ではGrapeは動かないらしいのですが、この辺の話も余程限定されたケースでないと無さそうな感じ。

groovy.lang

このパッケージは書籍『プログラミングGroovy』の他の章でも挙がっているクラスなども多く、逆に1つ1つを採り上げると時間が幾らあっても足りなさそうなのでクラスをそれぞれ確認するに留めました。

groovy.mock.interceptor

Mockに関するパッケージ。このパッケージを使うとなるとGroovyでテストコードを書く事になるのだろうけど、そうなるとGroovyでテストコードを書く事の便利さ、有用さはJavaと比べてどの程度、どの位あるのだろうか?と言った以前も浮き上がっていた思いがここで再燃。

以前は(Groovyテスティングに関して)ホントに触りの部分だけしか見て無かったので、もう少し深掘りして行けばまた違った局面が見られるのかもしれない。


groovy.servlet/groovy.sql

SQL

この辺りについても今回では触れず割愛。SQLについてはこの後でページをを割いている事もあり、次回以降のテーマとして扱う予定です。

groovy.text

テンプレートエンジン系のクラスが幾つかあるパッケージ。他のテンプレート系ライブラリと比べても便利で使い易いね〜、という話に。

groovy.time

パッケージ内に記載されていたサンプルコードから、以下のエントリ内のサンプルコードリーディングに。

import groovy.time.*
import org.codehaus.groovy.runtime.TimeCategory

// Define period of 2 years, 3 months, 15 days, 0 hours, 23 minutes, 2 seconds and 0 milliseconds.
def period = new DatumDependentDuration(2, 3, 15, 0, 23, 2, 0)
assert '2 years, 3 months, 15 days, 23 minutes, 2.000 seconds' == period.toString()
def year2000 = new Date(100, 0, 0)  // Jan 1, 2000
assert 'Mon Apr 15 00:23:02 UTC 2002' == (period + year2000).toString()

// Define time period of 5 hours, 54 minutes and 30 milliseconds.
def time = new TimeDuration(5, 54, 0, 30)
assert '5 hours, 54 minutes, 0.030 seconds' == time.toString()
 
use (TimeCategory) {
    assert period.toString() == (2.years + 3.months + 15.days + 0.hour + 23.minutes + 2.seconds).toString()
    assert time.toString() == (5.hours + 54.minutes + 30.milliseconds).toString()
 
    // We can use period.from.now syntax.   
    def d1 = 1.week - 1.day
    def d2 = new Date() + 6.days
    assert d2.format('yyyy-MM-dd') == d1.from.now.toString()
 
    // We can use period.ago syntax.
    def d3 = 3.days.ago
    def d4 = new Date() - 3
    assert d4.format('yyyy-MM-dd') == d3.toString()
}

まぁ言いたい事は分かるんだけど、割と変態的だよね〜、という話にはなりましたw useを使ったカテゴリの例などは後の章でも出てくるトピックなので、そこでまた触れる予定。

と言う訳で、今回は(ページとしては)何と1ページしか進まなかったw

次回の予定など

次回開催予定は2週間後の10/30(火)を軸に。基本『隔週火曜』開催とし、都合が悪い場合月曜で…という大枠でYokohama.groovyは運営しております。(この流れで行けば10/30になりそう?)


また、現在は『プログラミングGroovy』を対象書籍として会を進めていますが、年内を目処にこの書籍は完了させ(多分5章までやって区切り)、年明け以降は別のテーマなり対象を掲げて行こうという話に。詳細はこれからであり年末までにはある程度見えてくるでしょうけど、色々な興味深いテーマが会話の中でも挙がって来ていたので出来る所から実現して行きたいですね。