第19回 G*ワークショップに参加してきた #jggug


(写真:品川駅構内でモニターに映る実写版ドラえもん)


前々回の第17回以来、約4ヶ月振りの個人的参加となるG*ワークショップ。品川に来るのも今月初めに行われたIT英語学習カンファレンス以来ですね。今日は普段より参加人数が若干少なめだったのか、部屋の枠も半分ほどに縮小した形で開催。

入門Geb+Betamax


  • 自己紹介
    • テストですごい苦労をした
    • betamaxがあれば楽出来たな〜と。
  • 本日のお題
    • 自動化について
    • geb入門
    • betamax入門
    • geb+spock+betamaxでgrails test-app
  • テスト自動化、しましょうか?
    • 単体、結合はわりかし自動化出来ていますよね・・・?(参加者にプレッシャーw)
  • 自動化出来れば…
    • テスト実行にともなう人的コストが不要になる
    • テストの品質を上げられる
      • 手作業に完全という事はありえない
      • 手作業は監視出来ない
  • gebる前に:seleniumの系譜
    • seleniumを前身としている
      • 新旧それぞれのseleniumの情報がごっちゃになっている
      • 初代(2004)
      • 後継が開発されていた…が
        • googleが2006年にwebdriverを開発
        • google自身も初代Seleniumのヘビーユーザーだった
        • Selenium2+WebDriverが合体、1つのプロジェクトに
        • 2011/07 Selenium 2.0としてリリース。以降順調にリリースが続いている
  • Selenium1とwebdriver
    • Selenium1の課題
      • テストドライバーがブラウザ上で稼働するため、ブラウザのサンドボックスの制限をうける
      • 原理的に対応が難しい機能がある
        • ファイルアップロード、Ajax
    • Webdriver
  • WebDriver:Java APIサンプル
    • (Google検索時のサンプルコードを用いた実演デモ)
  • 『でも、ちょっとめんどくさい…。』
  • そこでGebですよ
  • Groovyで構築されたWebDriverのラッパー
    • jQueryライクなNavigator apiを提供
    • Page Objectパターンによる構造化
    • 2011/11/22時点最新ver 0.6.1
  • 多様なテストフレームワークと統合可能
    • Spock, EasyB
    • JUnit3/4, TestNG
    • Cucumber(Cuke4Duke)
  • Gebとspockのインテグレーション
    • getと連携するspockのテストケースとして以下が提供される
      • geb.spock. GebSoec/GebReportingSpec
    • Browserインスタンスの注入
    • エビデンス取得の自動化
  • ChromeDeiver利用時の注意点/GebReportingSpecの例/GebSpec利用時の注意点
    • (詳細はスライド資料参照)
  • Hello, Betamax(実演デモ)
  • その他のサンプル
  • SonaTypeのアカウント設定
    • 空を設定。
  • テストが一部通らない。
    • 時刻の扱いに問題あり
    • 等々、5個ほどあるらしい。(詳細はスライド資料参照)
  • Grails + Geb + Betamax
    • githubで提供しています。
    • YAML
    • tapeの利用価値
      • Web APIにアクセス出来ない状況でもテストが出来る 新幹線で移動する人向け!
      • テストを高速化出来る
      • テスト結果を安定化出来る
      • レアケースに対するテストを容易に出来る
      • Tapeを再利用(資産化)出来る。
  • Betamaxはまり道
    • 基本的にはRecorderと@betamaxだけで行けるはず!
      • 組み合わせによって色々起こります…
      • とりあえずGroovy-1.8/HttpBuilderの組み合わせがオススメ
      • あとは色々エラー出てたり…
    • 品質向上にご協力ください。
      • 作者もFolkしてPull Requestしてくれと言っているようです。(あんま反応無いけど)

ブラウザ、UI周りのテストは自動化の際に苦しむポイントの1つですが、これは便利そうですね。Seleniumも一昔前と比べてかな〜り便利になっている模様。諸々実践ノウハウもありそうだし、簡単な所から始めて徐々に使いこなせるようになっておきたい技術です。

G*なJavaOne報告2011



前半はJavaOne 2011について写真を交えながらの活動報告。ここに至るまでに幾つかの場所でもこの内容で講演をされている模様ですので人によってはデジャヴ感もある内容となっておったようです・・・(^_^;) 上記スライドにもその辺りの写真は無いので、ここでは発表時に幾つか撮った写真のみUPする形に留めておきます。



メモに関しても、ここではスライドに上がっている2011年度版『Groovy 7つの使い方』に関するモノをピックアップ。

※ちなみに2009年度版はこちらの書籍『プログラミングGroovy』に記載されています。中野さんを含む4人の方々による共著、Groovyユーザ必携の名著です。

プログラミングGROOVY

プログラミングGROOVY

赤字の部分が2011年度に新しく置き換わった部分。

  • 1:万能接着剤
    • グルー(糊)として統合
    • XMLParser, JavaのネットワークAPI、Swing等を組み合わせて...
  • 2:やわらかな心臓(Liquid Heart)
  • 3:リップスティック(LipStick)
    • Groovyのあらゆる昨日・プロダクトを使ってコードを読みやすくする
    • GDKを筆頭に色々なライブラリ
      • 特にDSL Groovy1.8からDSLが寄り書きやすくなった
  • 4:内視鏡手術(Keyhole Surgery)
    • JenkinsのCLI機能、仕組み(backdoor)を入れておくと何でも出来るよ!
    • でもセキュリティの確保には十分注意!
  • 5:無制限の解放(Unlimitted Openness)
    • アプリケーション全体をGroovyやGrailsで構築。
    • 全てのコードが変化を受入られるように。
    • Perl,php.pythonに続こう。
    • 十分な知識と経験を持つ小規模なチームで比較的シンプルなシステムを開発する場合は効果が高いが…
  • 6:ゴーストライター(Ghost Writer)
    • アノテーションをマーカーとした、AST変換によるコード生成を利用
    • @Log, @immutable, @singleton, @Delegeteなど
  • 7:小人さんスクリプト(House-Elf)
    • はじめてGroovyを導入するときはオススメ。
    • 種々のユーティリティツールをGroovyスクリプトとして書く。
  • 上記7つに漏れたものも紹介。
    • プロトタイプ(prototype)
      • 検証用、プロトタイプで作成。
    • スマート設定(smart configuration)
      • XMLやプロパティファイルではなく、groovyスクリプトを設定ファイルとして利用
      • 繰り返しや条件分岐なども簡単に出来る。

そして、最後になりますがJavaOneイベントが来年4月に東京でも開催されるそうです。

本家(米国)で開催されるイベントの場合だと20万近く参加費が掛かるそうなのですが、東京開催のイベントでは1万円以内には収まる模様というか方向らしいです。

上記原典はこちら。(英語/PDF)

JGGUG合宿2011報告

  • 合宿運営レンジャー
JGGUG合宿2011報告


  • 日本中からG*な15名が参加
    • うち5名が初参加!
    • 今年は箱根!
      • 前2回は熱海だった
    • 結構奥地…
      • バス内でLT資料作るも気持ち悪く…
    • タイムテーブル:1泊2日
    • メイン会場
    • コードで自己紹介
      • G*なコードで何らかを動かし、自己紹介実施。

    • そして今年の企画は…?→『GDK48』。


コンセプトは言わずもがなの・・・

    • 企画内容:
      • 最後に総選挙!人気作を選抜。
    • お題発表後、もくもくとコーディング・・・(しかし中にはLT資料作成に勤しむ面々も・・・)
    • LT大会
    • 総選挙結果発表(センターは誰だ)
      • 参加人数:12(リモート1名)
      • 総エントリ数:38本
      • 敗因:当日告知、一泊、LT大会
      • そして総選挙結果発表へ...

JGGUG合宿2011の報告に関しては、当日参戦されたorangeclover(TwitterID:@orange_clover)さんがレポート及びスライド資料にまとめた詳細版があるようですので、こちらも併せてリンク。

合宿の詳細がより把握出来ます。(リンク及び画像をクリックすると@orange_cloverさんのエントリに遷移)

GDK48総選挙の裏側


上記合宿報告と併せて、合宿で利用した『総選挙アプリ』を作られた奥さんによる裏話的な報告セッション。

  • 仕様
    • 関連ツイートを集める
    • gistを一覧
    • 投票結果集計

    • 投票出来るように
      • Twitterログイン
      • 投票可能に

    • ツイートを取ってくる
    • Twitter認証について
      • spring-security-twitter等、4つのコマンドでほぼ完了!
    • Gist連携
      • Gistコード表示
        • タグで対応可能
      • Description表示
      • Gist API
        • jsonでデータ取得可能
        • しかし、githubクロール出来ず。
        • →Gist APIJSONP/クライアントからごにょごにょすれば合法では!で対処。
      • 結果として1画面27リクエストする状態に。ネットワーク的にも時間が掛かるものとなってしまった。
    • 感想
      • CSSに時間が掛かった
      • 困ったときのEC2
        • PaasよりIaasの方が素直
      • Grailsプラグインはチート杉
        • タグ入れるだけでtwitter認証とか可能。すごいカンタン。

わずかな時間でこれらのアプリを作り上げた奥さんのスキルも半端無いけど、アプリを構成する(Grails1.3.7で利用していた)プラグインの豊富さ、便利さにも驚かされたセッションでした。


Groovyはやろうやろうと思いつつも中々プログラミング力を付ける作業が出来ていないというのが現状。(^^;) 先日のTDDBCでもコードの綺麗さに驚かされたし、何らかの形で力は付けていきたいと思っている今日この頃なので、まずはテスト関連でJava/JUnitスキル習熟と共にGroovyでの(テスト)スキルも徐々に肉付け&後は『小人スクリプト』作成に勤しむ辺りが着手し易そうな感じではあるかな。あとは先日買ったGradle本の写経とかか。Groovy周りもやりたい事を整理しないといかんな。

今日のつぶやき 2011/11/22

  • @pocketberserker まとめに追記しますw posted at 23:57:12
  • 横浜なら是非!横浜・神奈川で興味のある人は居そうな気がしますね。 RT @tw_takubon: まわりが道場やってるから、やってみようかなぁと…横浜にニーズはあるかな? #サムライとなく posted at 23:56:30
  • イベント終了後も活発につぶやかれていたので諸々拾って更新しています。 / 2011/11/19 SCMBootCamp in Tokyo 2 #scmbc - Togetter http://t.co/iYOGfU80 posted at 23:47:34
  • 夕方勢いで作ったまとめを更新しました。 / きょん氏(@kyon_mm) a.k.a うさみみ のかわいい呼称を考えよう - Togetter http://t.co/VBiX8HzO posted at 23:40:24
  • 夕方の『うさみみ』Togetterの件、更新しようと思い『うさみみ』で検索→『うさみみ 執事』というつぶやきがあり、一瞬追加に悩むなど(何かの番組予告で流れたらしい)。 posted at 23:30:19
  • キターク posted at 23:23:33
  • RT @asho: RedmineとGitの連携にAlminiumが便利すぎて死ぬ。CentOSの5系は対応してないみたいだからCent OS 6のインスタンス立ち上げた。ほんと便利な時代になったもんだ。 http://t.co/kMuhYVRp posted at 22:45:22
  • @heroween はっ...!そうだった。きょんくんさんだったな... posted at 22:44:38
  • @yujiorama 恐らくうさみみが本体なのでは。さかなクンと同じように...。 posted at 22:21:53
  • RT @Delete_All: 過去2年分くらいの部長のポジティブな発言をまとめてみました。一気に読むと眩暈がしてきますが読後に不思議な爽快感があるので日常を打開したい方は是非。 / “上司の言葉をまとめてみたよ - Everything You’ve Ever D…” http://t.co/RrQp1klk posted at 22:20:46
  • @kyon_mm 探せばあるはず...w posted at 22:02:02
  • @kyon_mm togetterも後で更新しとかなきゃ...これは何か呼称使わないと...!w posted at 21:57:17
  • RT @yanatake: "ガリ梨''復刻 キタ━━(゚∀゚)━━!! http://t.co/5vVVD4Zl posted at 21:51:25
  • @kyon_mm まさかここまで反響があるとは思わんかったw posted at 21:18:35
  • うさみみ緩募のTogetter作る際に『うさみみ』でつぶやき検索したら結構内容がカオスだったのは内緒だ posted at 19:47:44
  • 勢いに任せて作っちゃいました。 / きょん氏( @kyon_mm ) a.k.a うさみみ のかわいい呼称を考えよう - Togetter http://t.co/VBiX8HzO posted at 19:45:51
  • 「きょん氏(@kyon_mm) a.k.a うさみみ のかわいい呼称を考えよう」をトゥギャりました。 http://t.co/VBiX8HzO posted at 19:43:28
  • 『うさみみ』から滲み出るカリスマオーラと言う事か… RT @kyon_mm: カリスマ力っていうか うさみみ力 だよねw RT: 想像以上の『うさみみ呼称募集』に対する反響に、@kyon_mm 氏のカリスマ力を見た。 (via @shinyaa31) posted at 19:36:01
  • 想像以上の『うさみみ呼称募集』に対する反響に、@kyon_mm 氏のカリスマ力を見た。 posted at 19:32:22
  • RT @nobeans: 補足: gradleは個別に開発マシンにインストールしなくても、gradle wrapperという仕組みを使ってPJディレクトリに仕込みを入れておくだけで、どのマシン(mac, win, linux)でもインストール不要で使いはじめられます #jggug posted at 19:31:26
  • @nobeans 招待しました! posted at 19:23:11
  • @jaVuBax Twitter垢経由で招待しました!ご確認お願いします。 posted at 19:21:35
  • 新しいはてなブックマーク、先程ご招待頂き、招待出来るようになりました(5名/1日)。 欲しい方はご連絡ください。 posted at 19:17:40
  • @ShiroKappa ありがとうございます!登録しました。 posted at 19:08:33
  • ありがとうございます!是非!! RT @ShiroKappa: @shinyaa31 送りますよ〜! #愛のバトンリレーreturn posted at 19:03:05
  • 【緩募】新しいはてなブックマークの利用権(?) posted at 19:00:40
  • RedBull++; posted at 18:59:57
  • RT @kikko_no_blog: 東電がとうとう認めました!「保有する全ての原発が停止しても今夏の最大供給力を上回る約5700万キロワットを確保できる」「実際には原発がなくても計画停電などの影響が出ない」→ http://t.co/Io72wITa posted at 18:58:47
  • 品川 #jggug 到着。 posted at 18:50:14
  • @ShiroKappa @kyon_mm これは読みは『おとこ』ですか? posted at 18:33:55
  • 【緩募】 @kyon_mm 氏の『うさみみ○○』:○○に入る呼称。※かわいらしさ大事。 posted at 18:30:34
  • ベタだけど『お前もゆるふわうさみみにしてやろうか!!』はインパクト絶大かと。 QT @kyon_mm: より怖いですwww RT: では・・・「うさみみ閣下」。 RT @kyon_mm: 「うさみみ総統」。。。かわいいのかよくわからないね。 (via @shinyaa31) posted at 18:18:54
  • 閉店(ガラガラ posted at 18:07:06
  • “2011-11-22 - Everything You’ve Ever Dreamed” http://t.co/InaQBagY posted at 18:06:25
  • では・・・「うさみみ閣下」。 RT @kyon_mm: 「うさみみ総統」。。。かわいいのかよくわからないね。 posted at 18:04:40
  • そろそろシャッター閉めるか・・・ posted at 18:01:02
  • [REST] 認証が必要な API を REST っぽく作るときのメモ - それはBlog http://t.co/J7aqtSRi posted at 18:00:41
  • RT @benzeezy: #JPRAP [MUSIC] KREVA "マカー feat. AKLO, L-VOKAL (Remix)" http://t.co/fv3ikJ3F posted at 17:58:37
  • RT @yoshioterada: 12/9(金) に毎年恒例の GlassFish 忘年会を開催します!!GlassFish ユーザグループジャパンは忘年会だけは忘れません。詳細は別途後日発表します。取り急ぎ GlassFish ファンの皆様 12/9 (金)の予定を空けておいてください。 posted at 17:39:14
  • ・・・(`・д・´)ハッ! しまった、RedBull飲み忘れていた・・・。 posted at 17:25:46
  • @mytk なんと・・・大ボールかと思いきやあながちそうでも無かった(ちょいちょい特務)とは・・・^^; posted at 17:04:05
  • “なぜ日本人は落合博満が嫌いか - 琥珀色の戯言” http://t.co/1F5VsWwV posted at 17:02:03
  • @cointoss1973 演習無し、あくまでもDVCS間のディスカッション。これまでのSCMBCでの演習時のやり取りからするとかな〜りガチのDisり合いになりそうな予感がするけど、参加した人はそこから各DVCSの特徴や用途等を把握する事が出来そうな予感がしなくもないですね。 posted at 16:46:32
  • @mytk 只野仁さん的なイメージ?w >特命係長 posted at 16:42:54
  • 以前Shibuya.tracで「チケット管理システム大決戦」(Trac/Redmine/Backlog/JIRA)なるものが開催されていたが、「分散バージョン管理システム大決戦」(Git, Mercurial, Bazaar, +α)ってのも面白そうだな・・・ #scmbc posted at 16:41:12
  • @kyon_mm @cointoss1973 まぁボスって言うか首謀者っていうか総統っていうか象徴ですわね・・・ posted at 16:15:01
  • @sinsoku_listy @cointoss1973 おおお・・・なるほど、その情報があるとWindowsでGitやりたい!という人は助かります!ありがとうございます。今後scmbcでGit/Windowsで参加される方はそれを一読!とすると混乱無くて良さそうですね。 posted at 16:14:09
  • @cointoss1973 @sinsoku_listy 左様です。Gitの本質を学ぶ前に、その辺(日本語・文字化け及びその対処方法)で躓いてしまい、第1回目は消化不良の部分がありました。なので今回第2回はその辺りが比較的クリアなBazaarで挑みました。 posted at 16:11:19
  • @sinsoku_listy @cointoss1973 是非、これを読めば完全対応!というエントリをお願いします・・・(><;) >Windows上でのGit日本語対応 posted at 16:06:02
  • RT @yuroyoro: 「アンタら団塊の世代がナマクラだったから今のシステムが出来上がっちまったンだよッ!」ってセリフを20年近くも前に生み出していたサンクチュアリはスゴイと思います posted at 15:10:39
  • RT @jaVuBax: まとめ書いたよっ 第1回アジャイルサムライ読書会 島根道場 #agilesamurai #agileshimane : http://t.co/k8sZWB3O posted at 14:58:38
  • (´・ω・` )...。 RT @riskrisk: こちらの人におせわになっております。 posted at 14:30:07
  • @irof ど、どこのレポート? posted at 13:06:35
  • 感動した。 / 喧嘩上等のカメラ店が「ど素人」に教わった商売の極意 http://t.co/9NQWVa0O posted at 13:05:56
  • 昼寝から起床 mkr posted at 12:56:40
  • @irof もういっそTDDBC in Japanで良いんでないかと。 posted at 12:56:20
  • 昼寝 :-) #btnq posted at 12:35:47
  • RT @ockeghem: 僕がコマンドプロンプトを捨ててWindows PowerShellに移行した理由は、たった一つ。PowerShellの方がコピペがしやすい(←そこか)。しかも、PowerShell上でcmd.exeを動かしている\(^o^)/ posted at 12:34:13
  • RT @shuji_w6e: 小・中・大・必殺技と繋がる安定のコンボ http://t.co/GLTaKQ0y posted at 12:32:36
  • @heroween 十円玉で『うんこ』って落書きされていれば、劇写しにいかんでもないですね。 posted at 12:02:36
  • 開発端末のあまりの処理の遅さに辟易している祝日前の午前のひととき posted at 11:28:17
  • RT @flashoman: 結婚記念日の予定表ができてる、、、 http://t.co/QRcyTtsh posted at 11:27:20
  • RT @AtlassianJapan: JIRA ウェブサイト日本語ページが大幅に増えました! http://t.co/8TLWbDUi posted at 11:16:44
  • @heroween 悪戯される事を覚悟の上で停めてるんでしょう。きっと。 posted at 11:08:45
  • RT @finalvent: FlaxがJava化すれば。“@ozero: Flex捨ててswfをコンバートする先がhtml5というか、そこに選択肢としてJavaFXがでてこないってのは単に時期尚早という問題なのだろなぁ。” posted at 10:33:26
  • RT @kaorun55: [*会社]読んでて辛くなるな。 / “リーンスタートアップをどう実践するのか” http://t.co/fJ2Mju6Q posted at 10:27:44
  • RT @kaorun55: 今月のSoftwareDesigne では、神速さんのデビュー記事とともに、うちの社長の仮想化ソフトの記事も載ってるらしいのでみないと。 posted at 10:20:58
  • RT @Seacolor: この不具合にハマった……なんという戯けたバグか > maxChars が指定されている TextInput の致命的バグ (Flex SDK 4.5.1) http://t.co/yiC5hmyp posted at 10:07:53
  • 吹いたw RT @iii_mt_iii: 【某ファッション雑誌で奇跡が!】17人の写真家が1ページずつお気に入りの写真を掲載しているのですが、美しい写真の裏ページに江頭2:50が透けてしまい、まるで山の神状態。編集部、絶対狙ってるよね。 http://t.co/NK8EyCjd posted at 09:39:32
  • RT @iii_mt_iii: 【某ファッション雑誌で奇跡が!】17人の写真家が1ページずつお気に入りの写真を掲載しているのですが、美しい写真の裏ページに江頭2:50が透けてしまい、まるで山の神状態。編集部、絶対狙ってるよね。 http://t.co/xIsxdDVj posted at 09:38:45
  • RT @wonderful_panda: bzr-svnの使い方をまとめました。最初はややこしく感じると思うけど、やってみたらそうでもないはず。 http://t.co/CXai2ueI #scmbc #bazaar posted at 08:51:20
  • RT @moomindani: RedmineやGit, Mercurial, Subversionなど、プロジェクト管理に必要なツールをひとまとめにしたALMiniumというものを知った。楽そうだし使ってみよう。http://t.co/haZDOycq posted at 08:50:24
  • RT @taime634: ガリレオ・ガリレイが大学教授になったのとほぼ同時期に、日本で秀吉が刀ガリレイを出したのは多分偶然。 posted at 08:28:23
  • RT @rena0913: まじかよwwwww RT 1/1(元旦)→日曜  2/11(建国記念日)→土曜  4/30(昭和の日)→日曜 5/5(こどもの日)→日曜 9/22(秋分の日)→土曜 11/3(文化の日)→土曜 12/23(天皇誕生日)→日曜 2012年クソ過ぎ posted at 08:13:24
  • Play framework - Home http://t.co/ozqXb7LJ posted at 08:10:55