第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周りもやりたい事を整理しないといかんな。