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

開催されているのは9/18ですがこれを書いているのは大分日が経ってからの事。うぅイカイカン(^_^;)

開催会場はこれまで通り横浜タネマキ。

写経・実践

この日実践した範囲は『3.7 コレクション型』(P.80)から『演算子オーバーロード』の辺りまで。

全般的に参照したのはこの辺りのエントリ。

リスト
def list = [11,22,33,44,55]
assert list.equals([11,22,33,44,55])     // 等しい事を確認

assert list.first() == 11   // first:最初の要素を取得

assert list.getAt(2) == 33  // getAt:指定位置の要素を取得

assert list.head() == 11    // head:最初の要素を取得
assert list.last() == 55    // last:最後の要素を取得

assert ["A","B","C","D","E"].minus(["A","C","D"]) == ["B","E"]  // minus:指定要素を削除

assert [1,2,3].pop() == 3   // pop:リストの最後の要素を取得(リストからは削除される)

def listnum = [10, 20, 30]
listnum.push(40)    // push:リストの最後に指定要素を追加
assert listnum == [10, 20, 30, 40]

assert ["ひ", "ら", "な", "べ"].reverse() != ["ひ", "ら", "な", "べ"]   // reverse:要素を逆順にしたリストを作成(XP祭り2012名言)
assert ["ひ", "ら", "な", "べ"].reverse() == ["べ", "な", "ら", "ひ"]   // reverse:要素を逆順にしたリストを作成(XP祭り2012名言)

assert [31, 32, 33].tail() == [32, 33]  // tail:リストの最初の要素以外を取得
コレクション

参考ページはこちら。

package main.java

/**
 * Created with IntelliJ IDEA.
 * User: shinyaa31
 * Date: 12/09/29
 * Time: 10:12
 * To change this template use File | Settings | File Templates.
 */
println(2)
def list = [1, 2, 3]
assert list.containsAll([1, 2, 3])  // containsAll:指定要素が全て含まれているかを確認
assert list.contains(2)             // contains:指定要素が含まれているかを確認
assert ['上','上','下','下','左','右','左','右','B','A'].count('右') == 2    // count:指定要素の件数確認

// find:見つからない場合Nullが返ってくる。見つかった場合オブジェクトが返ってくる。
assert (1..20).find { it % 3 == 0 } == 3    // クロージャがtrueを返す最初の要素
assert (1..20).findAll { it % 3 == 0 } == [3,6,9,12,15,18]  // クロージャがtrueを返す全ての要素

// flatten:入れ子になったリストを平坦化(ツリー構造要素から要素一覧を取得する時等に使える)
assert [1,2,3,4,5] == [1,[2,3],[[4]],[],5].flatten()

// groupBy:クロージャで指定された条件で要素をグループ化し、Mapを返す
assert [0:[2,4,6], 1:[1,3,5]] == [1,2,3,4,5,6].groupBy { it % 2 }

// intersect:Collection要素同士の重複抽出
assert [1,2,3,4,5].intersect([3,4,5,6,7]) == [3,4,5]

// join:Collectionの各要素を指定区切り文字列で連結
assert ["2012","9","28"].join("/") == "2012/9/28"

// max,min:最大値、最小値を返す
assert [1,100,10000].max() == 10000
assert [1,100,10000].min() == 1

// plus:コレクション同士を連結
assert [1,2,3].plus([4,5,6]) == [1,2,3,4,5,6]

// sort:要素のソート
assert [9,4,10,3,3,2].sort() == [2,3,3,4,9,10]

// sum:要素の合計
assert [10,20,30,40,50,60,70,80,90,100].sum() == 550

// unique:重複削除
assert [10,20,30,20,30,10,30].unique() == [10,20,30]

sortやuniqueについては以下のエントリ等もとても参考になります。

クロージャ内でのインデックス(Javaにおけるfor文内のインデックス)についてはこの辺が引っ掛かりました。

GExcelAPI

リストやコレクションについて進めていく過程で、GExcelAPIというものがGroovyのこれらの機能を利用している・勉強になるという話に。

Map

書籍ではそこまで言及されていないGroovyとMapの関連ですが、この回でもそんなに言及は無し。


Mapではあるが、プロパティのアクセスなどについてはJavaBeansと同じような形でアクセス出来る事は少し前に別の写経でも触れた。

Groovy特有の演算子

『3.8 演算子』では、『*.』(展開ドット:全メンバに適用したリスト)に言及。こちらはGradle等でも良く利用されているもの。

task quickStart << {
    sourceSets*.allSource*.srcDirs.flatten().each { it.mkdirs() }
}

今日のつぶやき 2012/09/15〜2012/09/18

XP祭り近辺のつぶやきも含めてこちらで。

今日のつぶやき 2012/09/18

今日のつぶやき 2012/09/17

  • @natsu_nanana @yokatsuki 買わずとも、家に在庫が充分ストックされている、という事ですね。 posted at 23:33:55
  • @y_sumida @dproject21 @grimrose @shin_semiya @yenjoji 了解です。 posted at 22:11:07
  • RT @natsu_nanana: @natsu_nanana メモ:お米、パン粉、牛乳、納豆、ごま、玉子、徳利、日本酒、… posted at 22:10:08
  • RT @tetsu_m: ブログを書くまでがXP祭りです。/ XP祭り2012で感じたこと、考えたこと - Always All Ways http://t.co/sLilHQhQ #xpjug posted at 18:55:55
  • [勉強会][XP][Agile][Scrum][BA][BABOK]XP祭り2012〜ソーシャルチェンジ!〜に参加してきた(前編) #xpjug #whywg: XP祭り2012(イベント公式) 9月15日 XP祭り2012... http://t.co/Vkyi9xlS posted at 17:45:54
  • @grimrose 実際は発言者も全て記録していたのですが、何かと発言内容も過激だったりしてますのでそこは伏せておりますw 誰の発言だったのかも想像してみてください。ありがとうございます〜。 posted at 17:29:11
  • ひとまず半分荷が降りた。残る後半もベースは書いたけど微調整が必要なので少し時間を置く。 posted at 17:22:38
  • 参加レポート書きました!『アラウンドテーブル』を中心にまとめています。後編は後ほど。 / XP祭り2012〜ソーシャルチェンジ!〜に参加してきた(前編) #xpjug #whywg - Shinya’s Daily Report http://t.co/Xg21ppXO posted at 17:15:42
  • ぼちぼちXP祭り2012のふりかえりも完了しそうだ。文字数制限やコンテンツ検閲の都合もあるので、前後編に分けて、前編はお昼頃、後半は夜若しくは明日以降にUPするかな。 #xpjug posted at 09:12:59
  • @s_kic なるほど、了解です。どんな感じで追記しましょうか?差し支え無ければコメント頂ければそのコメントの体裁で追記致します。 posted at 08:59:45
  • うっ、1エントリで収まるかなと思いきや、LT祭りで予想以上に文字数取っちゃった(14000)のでトータル40000字オーバーしてもうたw ここにクロージング&懇親会と各種リンク追加するから、大分危険ではあるなぁ…。やはり前後編分割していくか。 posted at 08:25:56
  • @s_kic おはようございます。先日のマチ子先生のディスカッション、御参加ありがとうございました!アンケートについて、キクさんは発言内容補足訂正に'yes'と記載されていましたが、内容の方は問題無いでしょうか?(Facebook該当グループにテキストUPしております) posted at 08:03:40
  • ふぅ、やっとXP祭りのレポート、クロージングまで辿り着いた…。 posted at 07:56:42
  • @amameci なるほど。そして今はYankee Maidな訳ですね。 posted at 03:37:19
  • @amameci ok! ( ´∀`)b GJ!! ところでそちらは今何時? posted at 03:31:27
  • @amameci Hi! Mr.Maid. How are you? posted at 03:21:13
  • あ、冥土様既に in U.S.A してたか… posted at 03:18:23
  • RT @amameci: めいど いん ゆーえすえー posted at 03:17:39
  • @amameci その時間はマチコ先生の対策会議&時間に備えて休憩してました… posted at 03:15:19
  • おっ、ラウンドテーブルとマチコ先生を書いて24000字か…これなら1エントリで行けるかな? posted at 03:13:47
  • RT @xpjug: 【XP祭り2012】アジャイルコーチラウンドテーブルに参加されたコーチのみなさまです。爆笑の場をつくっていただき、ありがとうございました! #xpjug http://t.co/M8ct6Y4p posted at 03:10:48
  • RT @Akiyah: #xpjug なんでモヒカン?と言う質問があったけど、電脳なをさんを参考にしたからです。 http://t.co/GQES3NPi posted at 01:50:18
  • RT @Akiyah: #xpjug 昨日のXP祭りでのLTの資料公開(画像です) http://t.co/pdrEINNy posted at 01:43:56
  • RT @joker1007: 22:40に札幌出ても、その夜の内に横浜の自宅に戻れるとか、文明の利器すげえわ。というわけで、無事帰宅しました。 #sprk2012 posted at 01:43:33
  • RT @hatena_groovy: JavaScriptでAnt Task http://t.co/MNFK9mrH posted at 01:43:24

今日のつぶやき 2012/09/16

  • RT @haradakiro: Bob Martin の Bowling Game Kata をやるといいよ。というか一回はやれ。 http://t.co/arXly5FX ppt の通りに。 #xpjug posted at 21:38:44
  • RT @haradakiro: Global Day of Code Rea treat 2012 は、12/8 に開催です。世界 200 都市での同時開催を目指してます。 #xpjug #Coderetreat posted at 21:38:38
  • RedBull++;で気合を注入 posted at 21:35:39
  • RT @haradakiro: Bowling Game Kata の説明の日本語の ppt って需要あるんだろうか?あるなら Bob に公開許可をもらおう。(jUnit4 対応したほうがいいよなぁ) http://t.co/OovVt4gz posted at 20:51:13
  • RT @siva_the: 昔、某コジマで客は沢山いるのに余りにも店員が少なくて頭来たから、大音量でyoutube流してるパソコンで、ヤマダ電機の曲を流したら、お前らどこにいたんだよってくらい大量の店員が凄いスピードでやってきて超焦った。 posted at 20:41:52
  • 予想以上に疲れていたようで、今さっきまで断続的に寝ていた…(訢3[▓▓▓] posted at 19:09:23
  • RT @hageyahhoo: I made a presentation about #agile2012 at #xpjug ! My slide is here : http://t.co/r8aO6FrG posted at 03:00:36
  • 「ライムスター宇多丸のウィークエンドシャッフル 2012/09/15放送分のつぶやき #utamaru」をトゥギャりました。 http://t.co/Q3Mlq9zj posted at 02:38:55
  • RT @mumumu: XP祭り2012 まとめレポートを書きました http://t.co/S3GjCSJ7 #xpjug posted at 02:21:06
  • RT @suginoy: カーズって言われてもジョジョしか思い浮かばない #xpjug posted at 01:57:57
  • 『マチコ先生の白熱風教室』アンケート結果集計Done. ご参加&ご意見頂いた皆様、ありがとうございました!頂いた内容を元に、今後改善を進めて参ります。 #xpjug #whywg posted at 01:53:23
  • RT @JibrielShibata: http://t.co/uICtqhKi #xpjug LTのスライドを公開しました posted at 01:31:09
  • RT @grimrose: 書きました。| XP祭り2012 〜ソーシャルチェンジ!〜 に参加してきました。 #xpjug http://t.co/U5Soww1W posted at 01:22:27
  • @amameci 只今帰宅致しました、(もうじき飛行機で)空を飛ぶ冥土様。 posted at 01:11:46
  • @grimrose ただいまです〜。 posted at 01:08:43
  • @s_kic ただいまです〜。こちらこそありがとうございました!多分すぐには寝れないので何らかのふりかえりにこれから取り掛かりますW posted at 01:07:54
  • @dproject21 それは書きません。 posted at 01:06:50
  • 帰宅! posted at 00:57:30
  • 最寄り駅まで着いたので、ひとまずアイス最中食べながら一息。 posted at 00:31:09
  • 検閲もあるから、マチ子先生→アラウンドテーブル→LT祭り以降で行くべきか... posted at 00:20:14
  • RT @daiksy: 前職で会議室に呼び出されて「お前のTwitterは品が無い。もっと節度を持て」と言われたので、個人活動ですよ、と反論したら、会社の人間をフォローしてたら業務と一緒だ、と意味不明なことを言われたので、その五分後に同僚のアカウントを全部スパム報告したアカウントはこちらになります。 posted at 00:16:08

今日のつぶやき 2012/09/15