第16回 G*ワークショップ+JGGUG総会に参加してきた


(※イベントで配っていた団扇。裏面はなんとチートシート!)

日本Grails/Groovyユーザーグループの2010年度総会を開催します。総会に続いては、恒例のG*ワークショップを開催し、G*ワールドの最新情報をお届けします。さらに懇親会では自由参加のLT(Lightning Talks)大会で盛り上がる予定です。金曜の夜をGroovyに過ごしましょう!

前回2/24の第15回から約4ヶ月、第16回及びJGGUG総会が開催され、参加してきました。会場は毎度お馴染み『オラクル青山センター』。

※前回第15回G*ワークショップのエントリは以下。

なお、今回のワークショップ開催にあたって、会場入りの際に以下のような名札を頂きました。

運営委員の予算の都合もあり、会の終了時には返却しましたが、このような形のサポートはありがたいですし、とても良い仕組みだと思います。実際TwitterIDでは幾度と無く話しているものの、実際には…というケースは多々ある事ですし、お互い初対面で紹介し合う際も非常にスムーズに進められると思います。可能であれば次回以降も/他のコミュニティや勉強会でも同様の試みがなされてくれると良いですね。




2010年度JGGUG総会


会則に基づき、2010年度の決算と活動報告、2011年度の予算と活動計画の承認をいただきます。15分程度で終わる予定です。
  • 年に1回の総会。これまでの活動計画・役員について・今後の予定等の各種報告、告知がなされました。
  • 活動計画
    • 勉強会:首都圏月一回。名古屋関西でも開催
    • 合宿は例年通り開催
    • Sprringユーザ会、DevSumi、日本Javaユーザ会等と強調。
    • 出版:G*マガジンの発行

今回初めて知ったのですが、合宿についてはは毎年やっている模様です。どんな感じの内容なんだろう?

  • 活動計画について
    • 首都圏・関西・名古屋、その他各所で勉強会開催を予定
    • 1泊程度の合宿を実施予定
    • コミュニティ参加:日本Springユーザ会・日本Javaユーザ会等と連携・強調して活動。
    • G*マガジンの発行
  • サポートスタッフ制度についての紹介。
    • 月一回位のチャットミーティング等々、活動内容の紹介と募集。
  • 個人サポーター
    • 法人会員以外に経済的基盤を作りたい
    • 個人だけどJGGUGに経済的に付与したい
    • JGGUG任意額をご寄付頂ける方、募集中。1円でも良いらしいです(笑)
      • 寄付頂けた方はG*Magazineへの1年間のご芳名掲載アリ。
    • 詳しくはsupporters@jggug.orgまで。

「レッツゴーデベロッパー2011」レポート

去る5/28に仙台で開催されたクロスコミュニティイベント、「レッツゴーデベロッパー2011」の開催レポートです。

こちらがその『レッツゴーデベロッパー2011 - 東北デベロッパーズコミュニティ』の関連ページ。


Ustream動画


Groovy/jggugと仙台との関連については、以前にもイベントが開催されていたそうで。

イベントは盛況の内に終了。その流れを受けて、また仙台でイベントやりましょうよ、という話が挙がっていたそうです。そのイベントについては、2011年02月末から話し合いの場が持たれておりました。

そして3.11、東日本大震災発生。発生当日の昼には、開催会場についての話し合いが行われていたそうです。

震災発生後に改めて話し合いがなされた時には『これは東北行くしかないだろう!』という方向に。

その時に諸々話し合い・調整等を経てイベント開催へと漕ぎ着けた…という事らしいです。(※実際の調整期間は1ヶ月程。会場利用の問題、予算の問題等ありましたが皆さんの寄付等の好意に寄り解決・黒字化出来たそうです)

イベントロゴ画像はこちら。

  • ロゴデザイン(株)ニューキャスト さんの作品だそうで。SPECIAL THANKS!!

イベントの模様については、上記各種スライド・動画などをご参照ください。またセッション内でも詳細にまとめられているという『参加レポート』についての言及がありましたので、以下に記しておきます。


Groovy関連のセッションについて軽くメモ。

  • プログラミングGroovy 〜レッツゴーJavaデベロッパー!〜
    • プログラミングGroovy執筆チームによる講演。
    • 『本が出ますよ!』という宣伝的なセッション。

プログラミングGROOVY

プログラミングGROOVY

    • 約75名がセッションに参加。殆どGroovyの事を知らない人ばかりだったようです。
    • 概ね『Groovyスゴイね』という感触だった模様。
    • Groovy本の事に触れてはいたが、執筆スケジュールの都合上、『本買ってね』に留まる。プレゼントは無し。
  • Growing Grails Software, Driven by Domain
    • DDD本を発売されてノリに乗っている和智さんの講演。
    • 和智さんのスライドはいつもカッコイイ。
    • テストの部分(ライブラリ:を使用)はjggugスタッフからの無茶振りだったらしい。
    • セッション中、いきなりの『モデルを書きましょう』。紙が配られ、隣りの人と即興モデリング実践。
    • フロア後ろから撮った写真が印象的。東北らしい/東京ではこうは行かないんじゃないか(笑)


  • 渾身会
    • Kiyotaka Oku (TwitterID:@kiy0taka)さんによる渾身の『乾杯』で開始。
    • 和智さんによるDDD本プレゼント。10代の人に贈与。10代の内からDDD本に触れられるなんて…(以下略)
    • 東京からも2〜30人が参加したらしい(これはイベント通じて?)
    • ネトボラ佐藤さん(前述Ustream動画参照)。
      • PCのネットワークとか得意分野のほうでボランティアをやっている人。
      • 『得意分野で頑張れば良いんだよ』。
      • 被災地の写真など…
  • LT大会
    • 色々なメンツが展開。太極拳だったり、TwitterBotだったり…
    • 被災者の1人である小泉さんという方は家が流され、TV映像にも(インタビューが?)出たらしい。
  • イベントを支えてくれた人達、感謝。
  • 個人サポーター、感謝。
    • 有料のハコを借りた。11万
    • jggugから3万円、それでも足りない
    • 個人サポーターをTシャツで募る→最終的に黒字に。

最後はTakuma Watabiki (TwitterID:@bikisuke)さん作成の『イベント』オープニング時使用映像で〆。

セッション:「今日からはじめるGPars」

世界は並列処理で満ち溢れている… GPars(じーぱーず)はGroovy Parallel Systemsの略で、他の言語で実現されている並列処理モデルのいいとこどりをしたようなライブラリです。Groovy1.8からはライブラリに標準で添付されるようになり、利用への敷居が低くなりました。今こそGroovy流の軽量でエレガントな並列処理を学ぶチャンスです。ステップアップで、GParsをご紹介していきたいと思います。


この度役員に成られた『ふも』さんこと吉田健太郎さんによるセッション。

  • 自己紹介
    • Twitterアイコンの猫画像は実家の猫だそうです。
    • プログラマーですか?いえネコです...とブログの自己紹介文に書く位のネコ好き
    • Groovyベースの並列処理ライブラリ群。
    • 並列処理の分野の良いとこ取りをしたもの。
    • コードは殆どJava製、問題無し。
    • javaからも使える。
    • 1.8から本体にもバンドル。インポートするだけで使える
1.非同期コレクション
  • コレクションに対する並列処理を簡単に提供。
  • 並列コレクションはjavaの並列処理ライブラリのラッパーを提供
    • Java7の機能を先取り。
      • JSR166,JSR166yなど
  • (実装例)並列コレクションなハロワ(Hello World)
  • (実装例)parallelにeachしてみる
  • parallelメソッド対応表
    • 通常のメソッドとwithPool内で使えるようになるparallelなメソッドの対応表(なるものがあるらしい。どこに?)
  • withPoolについて
    • デフォルトではコア数+1のスレッドを使う。
    • 第1引数でスレッドス数を指定可能。
    • 例)core 2な場合、デフォルトではスレッド数は3。
  • makeTransparent
    • .makeTransparentしておくと、いちいち〜Parallelしなくて済むからちょっとだけシンプルに書ける。
    • 注意)v0.12から名前が.makeConcurrent()に変更になっている。
  • map/filter/reduce
    • コレクションに.parallelをつけると、関数型っぽくmap/filter/reduceできるようになる。
    • map/filter/reduceメソッド対応表もある。
    • (実装例)文字数カウント
    • (実装例)スリープソート
    • (実装例)フィボナッチ数(fork/join)
      • JSR 166yのfork/join機能をGparsのラッパーから使う例。
2.アクター
  • 演じる人を用意して実装
  • アクターとは:
    • 基本ステップ
      • アクターはそれぞれ独立したスレッド(世界)で動く。
      • 自分とは別のアクターとやり取りするには、メッセージを送る。
      • メッセージを受け取ったアクターはメッセージに返信することが出来る。
    • (実装例)アクターなハロワ
    • (実装例)メインスレッドがアクターに送信
    • →これだと順序バラバラで困る→Javaのコードで調整
  • 高度なloop
    • loopの第1引数に繰り返し条件(真の間くりかえし)を返すクロージャやint(繰り返し回数)を指定する事でループ回数を指定可能。
  • reactor(リアクター)
    • loop-reactの組み合わせはよく使うので、用意された便利DSL。リアクション専用。
  • sendor(送り主)
    • senderはactorのクロージャ内部で、送信元を特定するのに使える。
  • reply(返信)
    • ここでは、msgを受け取って<< と >>で囲ったものを返却している。
    • .sendAndWaitはメッセージを送信した後、アクターからの返信を待つ。
  • メッセージ振り分け(switch-case)
    • 比較:scalaアクターのメッセージ振り分け
3.エージェント
  • 並列処理環境において、ミュータブルなデータを安全に取り扱うのは難しい。そこでエージェントを使い、データの更新をラップする。
  • この機能はクロージャ由来。
  • (実装例)エージェントなハロワ
  • (実装例)リストに追加
  • (実装例)リスナーとバリデータを追加
4.データフロー
  • タスクという単位に処理を振り分けて記述していく
  • (実装例)データフローなハロワ
  • (実装例)デッドロックにご用心
まとめ
  • GParsでどんな事ができるかを把握
    • エージェント・データフローについて…本当はもっと多機能です
    • 日常の小さな部分からコツコツと簡単に並列化処理をはじめてみませんか?

google transfer toolkit上でGParsのドキュメント翻訳を実施中だそうです。(URL控えられず…後日スライド等でご参照ください)

「Groovy 1.8の新機能 〜ま、まさか、今までのGroovyが予告だったとでも言うのか…〜」

待ちに待ったGroovy 1.8.0がリリースされました。導入された新機能はJSONサポート、最適化、DSLを書きやすくするための拡張、クロージャまわりを始め、「熟成」と言うべきでしょう。その上で、これでもか!というぐらい多くのAST変換群が定義されました。利用者はAST変換の真の可能性を目の当たりにするでしょう。具体例やデモを混じえて紹介してみたいと思います。

こちらのセッションに関しては、早速Slide資料が挙がっていましたので連携。

上原さんは「プログラミングGroovy」の著者の1人でもあります。再度書籍の御紹介。

プログラミングGROOVY

プログラミングGROOVY

以下メモ。詳細は上記スライドでご堪能ください。

  • Groovyとは(簡単に)
    • 2011/04/28:1.8.0 finalリリース!(素晴らしいリリースだったらしい)
    • コードデモ:Java版wordcount:48行→groovyだと9行で済む!→Groovy1.8だと更に4行まで簡略化。
    • countByはGroovy1.8の新規GDKメソッド
  • Groovy1.8の新機能:広範な機能追加
    • クロージャまわりの強化
    • AST変換強化
    • 効率向上
    • 文法の拡張
    • ライブラリ強化
    • その他
    • 文法の拡張
      • 拡張コマンド式(GEP3)
      • ドルスラッシュ文字列リテラル($/.../$)
      • ///...///(トリプルスラッシュ)の表記が検討されていた。→/.../の複数対応版
  • AST変換強化:多数の変換追加!
    • 1.ボイラープレート割り…決まりきったコード。それを割る。
    • 2.巨人の肩
      • 先駆者の経験と智恵の決勝としてのコーディングパターンをダレもが使えるように
        • @WithReadLockアノテーション
        • @WithWriteLockアノテーション
          • 読み-読みではブロックしないが、読み-書き、書き-書きではブロック
          • シンクロナイズドでは常にブロック
    • 3.言語機能の補修・拡張
  • クロージャ周りの強化
    • メモ化:Closure#memoize()
    • memoizeの仲間たち
      • クロージャがどうのこうのというより、memoize=キャッシュ機構を簡単に作れる仕組み。
  • ライブラリ強化
    • ネイティブJSONサポート
  • 効率向上
    • プリミティブ演算の最適化
  • その他
    • 実行可能jarによるスクリプト実行
      • インストール不要で実行
      • G*のjarが実行可能に
  • まとめ
    • AST変換に関しては、groovy1.7以前は序盤にすぎなかった
      • 1.8で実用的なAST変換が整備された
    • 昨日豊富、精力的な改善がすすんでいる
    • モジュール化も着手され、ライブラリ強化と整合性維持の両立を目指している
    • Groovy1.9もはじまっている
      • Java7への本格対応

GParsもそうだしこのセッションの1.8もそうだけど、ボリューム満載でメモ取るのがやっと。(^_^;) この辺りはやはり新刊書籍を購入して、順次学習していく方向でついていきたいところです。

懇親会兼LT大会

ビールやピザが届き、会場後ろにで乾杯〜暫し御歓談。

LT大会本編の前に、オラクル社より寺田 佳央(TwitterID:@yoshioterada)さんからイベントのお知らせが。

場所は今日のイベントと全く同じ場所。Java7の記念碑的なイベントになりそうなので、興味のある方は是非。

開催概要
日程: 2011年7月7日 (木) 14:00〜19:00 (受付時間: 13:30〜)
会場: オラクル青山センター
会場住所: 〒107-0061 東京都港区北青山2-5-8
Twitter ハッシュタグ #java7
UStream :http://www.ustream.tv/channel/java-seminar-jp
是非、Java SE 7 Launch のイベントにお近くの会場まで足をお運びください。登壇者、ユーザグループ、コミュニティ一同心よりお待ち申し上げます。


そしてLT本編。今回は総勢10人ものLT実演となりました。多い!(笑)
以下実演順。なお、順番決めはKiyotaka Oku (kiy0taka)さん作成のGroovy製プログラムによる(ランダム)決定です。

1.Kiyotaka Oku (kiy0taka)
  • プログラミングGroovyの『オビ』を書くそうです。
  • groovyコンソールであそぶ
  • 中身:groovy.ui.console
    • 実行パターンには3つの方法がある
    • 拡張してみる
      • メニューを追加してみる
      • 処理を追加してみる
    • サンプルがあるので見てみてください
    • GroovyConsole on jenkins
    • groovyの拡張子…groovy gvy gy gsh?
2.Kazuchika Sekiya (kazuchika)

  • 執筆チームの紹介(色に例えて)
  • 書籍目次紹介

  • Groovy in action VS プログラミングGroovy:Groovy イン・アクションは裾のを拡げたとは言い難い。プログラミングGrovyは入門・普及活動に最適。

  • 好評予約受付中!

プログラミングGROOVY

プログラミングGROOVY

3.Hiroshi Nakamura (nahi)
4.Yasuharu Hayami (toby55kij)
  • 新潟からの参戦。
  • JSonBuilderの使い方をクイズ形式で。
  • JSONはGroovy1.8から簡単に使えます。ガンガン使いましょう。
5.きょん@うさみみモード (kyon_mm)

※一部TL上/jggjgコミュニティでは話題持ちきりとなっていた @kyon_mm さんの初TL。ついに『うさみみモード』な姿が目の前に!

拡大したのがこちら!

LT内容は自己紹介・Groovyとの繋がり、今後開催予定のSCM Boot Campについて。

  • groovy
    • jvmで使える
    • excelと仲良し
    • jenkinsと仲良し
    • スクリプトでも使える
      • 業務でExcelからプロダクトコードを作る事多し
    • 仕事で使ってみよう!→でも現場でどうやって新しい言語を導入すればいいのか
    • Groovyはprivateでアクセス出来るJava』と割り切る


6.T.Yamamoto (tyama)
  • Grailsのお話(Grails 1.4.0 M1)
  • すごい細かく変わった
  • 速度向上した!
  • 注意点
    • grails upgradeでこけます
    • DBかわったよ
    • まだM1です!
      • レポート挙げてくれれば、tyamaさんが検証するらしいです。

こちらも早速スライドが挙がっていたのでリンク。

7.Masataka Kawahara (mkawax)
  • iPAd/iPhone AppでのG* Magazine電子書籍化について。
  • 6/13現在、アップから約2週間、日本で187DL、日本以外で193DL.
  • G*Magazine記事募集/イラストが入ることも?


8.Takahiro Sugiura (touchez_du_bois)
  • 『もしトラ』出オチ…しかし個人的『もしドラ』から先のに元ネタ分からず。(-_-;)

  • JavaFX2.0について
    • リッチクライアント向けのスクリプトとして生まれ変わる
  • FxBuilderなどなど
  • griffonでも使える
  • いけてない:エラーメッセージがわからない
9.鈴木・J・修一 (jacksuzuki)
    • groovyを使ったシステムの紹介をする予定だったのだが、直前で役員会議にてNG
    • また、PCの調子が悪かったのかスライドが使えず。トークのみ。
  • GroovyからJavaへの移行を行い、すんなり移行。そこで喜びの一句。『groovy、javaにほんのり薄化粧』。
10.Yasuharu Nakano (nobeans)
  • AST変換と戯れてみよう
  • groovy本6章を担当。
  • groovy zoneで紹介された
  • groovy serv、早い!昨日v0.8出ました。windowsサポート強化
  • AST変換(ネコ)
    • ネコ多め:『Groovyクラスタはネコを出しとけば喜ぶ
  • 簡単にAST変換プログラムが作れる



…っと、今回も結構なボリュームになってしまった…(^_^;)

セッション本編・LTの皆さんの内容を拝見したり、懇親会での会話を聞くにつけ、皆さん相当ハイレベル・各所の精鋭揃いなスキルの持ち主が集まっているワークショップだったな〜と実感。自分なんかはその点足元にも及ばず、Groovy自体も興味を持った程度でまだまだ序の口、ひよっ子な感じなので唯々圧倒されっぱなしでした。

『Groovyイン・アクション』を購入したものの、その厚さに中々読経・写経が進まないで居たので、今度出る書籍『プログラミングGroovy』をベースに再度Groovy学習・実践(ここ最近、出力や実践に比重を増やしていかなければなぁとしみじみ思うようになりました。手を動かさないとやはり身に付いていかないですね。)を前に進められれば、と思います。

勉強会・懇親会では@kyon_mmさん(DevLOVE HangarFlight以来)、@kimukou_26さん・@mike_neckさん(共に今回初めて)と軽く御挨拶・お話出来ました。この御三方もTwitterTL上で幾度となく会話を目にしていますが、それぞれにハイレベル/ハイスキル。姿勢を見習って、貪欲に知識を吸収して行こう!という気にさせられました。


次回開催は7月下旬予定だそうです。『プログラミングGroovy』も出版されている事ですし、書籍にちなんだ内容にも興味があるところです。