JJUG CCC 2012 fall で登壇してきました #jjug #jjug_r33

11/10に東京で行われたJJUG CCC 2012 fall(日本Javaユーザグループ クロス・コミュニティ・カンファレンス)で登壇してきました。

これまでのJJUG CCCは平日に開催されていることもあり、参加したくても中々参加できませんでした。しかし、今回は土曜日開催ということで参加したいなと思っていたわけです。さらに、Call for Paperでセッションの募集がありました。おまけに交通費を支援していただけるということで応募し、晴れてJJUG CCCにデビューできたのです。

自分のセッション

セッションはテストコードのリファクタリングということで、JUnit実践入門の営業もさせていただきました。

セッションの資料はこちらです。

今回のセッションでは、テストコードを整理する方法を紹介したわけですが、単純に紹介しただけじゃ、書籍を読んでもらうのと変わりません。そこで、実際にテストコードをライブコーディングで整理することを重視しました。

やはり、書いてあるのを読むのと、実際に誰かが実践するのを見るのでは全く異なります。本当はワークショップ形式で自分の手を動かすことがベストなのですが、イベントの性質的にそれは難しいので、ライブコーディングを選択したわけです。また、参加者の半分くらいは「ユニットテストは重要なんだろうと感じているけど、どうもピンとこない。どうやって学んだらいいのだろう?」といった感覚ではないか、と思ったため、セッションの前半では「ユニットテストの目的」と「ユニットテストを学ぶコツ」について話しています。

実際に手を入れたコードと、リファクタリングしたコードはGitHubにあります。修正課程を見ることが出来たのは、当日会場にいた参加者の特権です。

Twitterで観測できた反応はこんな感じでした。たくさんの方々に参加していただき、多くの反応を頂き、ありがとうございます。また、質問も幾つか出たので嬉しい限りです。

なお、東京で聞けなかった方には朗報です。来襲17日(土)の札幌Javaカンファレンスでも同じ内容で喋ります。興味のある方は是非、札幌まで遊びに来てください。

その他のセッション

テクニカルなセッションから、開発に対する考え方の話まで色々なセッションがありました。特に面白かったのは、やはり、なぎせさんの「ジェネリクスの基礎と応用」でしょうかw
まさに、java-jaって感じのセッションでした。はじめのうちは役立つ知識なのですが、どんどん趣味の話になり濃い内容になっていくのは参考になりました。自分もあんなセッションをやってみたいですね。

懇親会

参加者は200名くらいだったようですが、懇親会は20名強しかいませんでした。思ったより少なかったですが、おかげで濃い話がたくさんできたと思います。
できればもっと自分のセッションを聞いた人と交流したかったな、という思いはありましたが、java-jaに染まれたので良かった(?)です。TwitterやBlogで知っている人にリアルでお会いすると良いですね。たまに札幌在住が悔しくなります。
今度は北海道で「元祖ラーメンサラダ」を食べましょう!

というわけで、非常に楽しい旅でした。
今年はJavaOne Tokyoに次いで2回目の東京遠征でしたが、年2回くらいのペースで行きたいですねー。

あと、呼ばれればホイホイ行くと思うので、他の地域にも遊びに行きたいところです。

JUnit実践入門の読みどころ #junitbook

先日のエントリーではたくさんのブクマありがとうございます。Amazonでの予約も好調とのことで、うれしい限りです。

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

というわけで、書影も出てきました!

思えば、JUnitのセカイというエントリーで、たくさんの「わっふる」をいただき、出版の決意を固めたわけですが、気がつくと書き始めて1年経ってました。ようやく、情報を公開できる段階まで来たわけです。

今回のエントリーでは、JUnit実践入門の発売に先立ち、本書の構成と各章の概要をお伝えします。予約を迷っている方は、本エントリーを読んだ上でご検討いただければ幸いです。なお、本書では各章が独立した構成になっているため、興味のある章から読む事ができます。

続きを読む

札幌Javaカンファレンス2012 #sjc12

アナウンスが遅れましたが、今年も11月17日に札幌Javaカンファレンスを開催いたします。

昨年に引き続き、寺田さんと櫻庭さんが来札されるだけでなく、九州からは「創るJava」のきしだなおきさんが、JJUG(日本Javaユーザーグループ)からは鈴木雄介さんが、函館のアットウェアさんからは松館さんと高橋さんが参加され、豪華なラインナップとなりました。
予定しているセッションは、自分のセッションも含めこんな感じです。

  • JavaOne 2012 サンフランシスコ・最新アップデート(寺田佳央氏/@yoshioterada)
  • Java プラットフォームにおける HTML 5 対応 !!(寺田佳央氏/@yoshioterada)
  • Lambda への道(櫻庭 祐一氏/@skrb)
  • What's up JavaFX!(櫻庭 祐一氏/@skrb)
  • 作って学ぶデータベース 〜まずスモールデータから始めよう〜(きしだなおき氏/@kis)
  • 顧客とPMとPGの話は、なぜ噛み合わないのか- それぞれの思いをつなげるアーキテクトの視点について -(鈴木雄介氏/@yusuke_arclamp)
  • コロケーションアジャイルの実践 (アットウェア 松舘渉氏/@matsudate)
  • Androidアプリ やってはいけないUI/UXデザイン(アットウェア 高橋哲也氏)
  • テスト駆動開発入門(渡辺修司/@shuji_w6e)
  • テストコードのリファクタリング(渡辺修司/@shuji_w6e)

JavaOneの最新動向から、アジャイル開発やAndroidまで、どのセッションも楽しみな内容です!

北海道/札幌の方だけではなく、他地域からの参戦もお待ちしております!なお、懇親会はお寿司屋さんのコース料理。絶対に参加した方が良いですよ。

参加登録は、こちらからお願いします。

JUnit実践入門 ー 体系的に学ぶユニットテストの技法 が出ます! #junitbook

Twitter等でアナウンスしましたが、ついに著書『JUnit実践入門』がAmazonに登録されました。11/14発売予定11/21発売(1週間ずれました、すみません><)で、480ページと大ボリュームとなっています。

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

副題の『体系的に学ぶユニットテストの技法』は、レビュワーとしても参加していただいた@irofさんの案を元にしました(ありがとうございます!)。

この本の特徴は、この副題に集約されていると言っても過言ではありません。

フィクスチャ、モック、パラメータ化テストなどなど、xUnit Test Patternsで紹介されている「ことば」をたっぷりと解説しています。メインのJUnitに関しては、単なるAPIのリファレンスとならないように、どのような目的で、どんなシーンで使うかを重視して解説しています。そして、Androidやデータベースなどを扱うプログラムなど、実際の開発で応用できるトピックも多く収録しました。
また、基礎的なことだけに終わらず、カバレッジテスト駆動開発なども紹介し、ユニットテストを活用するためのプラクティスも紹介しています。さらに、本書で学んだ技法を試すための演習問題と、サンプルのテストコードを収録しました。皆様の学習の手助けになるでしょう。
このように、本書ではユニットテストの技法を体系的に学ぶことができます。

なお、本書はJUnit本ではありますが、それと同じくらいにユニットテスト本であることを目指しました。Javaの開発で活用することがベストですが、他の言語を使った開発であっても根底にある考え方や技法は変わりません。変わるのはツールだけです。Javaをホーム言語としていないプログラマの方も、本屋で見かけたら、ちょっと覗いてみてください。

最後に、『JUnit実践入門』の章構成をご紹介します(変更があったらゴメンナサイ)。

1章 JUnitチュートリアル
2章 ユニットテスト
3章 テスティングフレームワーク

    • Part II JUnitの実践的機能 --

4章 アサーション
5章 テストランナー
6章 テストのコンテキスト
7章 テストフィクスチャ
8章 パラメータ化テスト
9章 ルール
10章 カテゴリ化テスト

11章 テストダブル
12章 データベースのユニットテスト
13章 Androidのテスト
14章 コードカバレッジ

15章 継続的テスト
16章 テスト駆動開発
17章 振舞駆動開発

    • Part V 実践問題 --

18章 ベーシックなテスト
19章 アサーションとフィクスチャ
20章 テストダブル

発売まであと1ヶ月ほど、もう暫くお待ちください(まだ最終チェックが残っています)。

札幌Javaカンファレンス2012を開催予定 #sjc2012

まだ確定情報ではありませんが、11/17(土)に札幌市内でJavaのイベントを行う予定です。ちなみに去年はこんな感じでした。後ほど講演者は発表していきますが、去年以上に豪華になると思います。

また、去年の反省で「縦に長すぎ...」というのがありまして、流石に疲れました...。なので、今年は2トラックでやろーかな、と思っています。今のところこんなセッションを考えていますが、希望とかあればコッソリでもいいので教えてください。

基本的にはJava系のセッションで10本程度やる方向で考えています。

あと、TDDBC(TDD Boot Camp)形式でハンズオンもやりたいと思っています。他のセッションもあるので2時間程度で簡単に導入程度ですけど、ペアプロテストファーストの体験みたいな感じで。

というわけで、札幌に乗り込んでくる人を募集しています。

特にGroovyとJenkinsは誰が喋りに来てくれないかな(チラッ

というわけで、札幌近郊の方は予定を開けておきましょう。勿論、懇親会は海鮮系を攻めますよ!

近況。秋です...

北海道も9月となりました。

通常、北海道はお盆を過ぎると秋の空気となり、朝夕は冷え込むので注意しないと体調を崩します。しかしながら、今年はおかしなことに、未だに30℃を超える日々です。まだ夏は終わっていないようです。

さて、WebDB Press 69で予告された、秋出版予定のJUnit実践入門(仮)ですが、現在最終校正を行っています。目次など、情報が公開できるようになりましたらばブログでも読みどころなどのエントリーを書こうと思います。もちろん、WEB+DB Press 69で特集された内容はすべて含みますよ。

北海道の夏が終わらないので遅れているわけじゃありません><

と言われる時期には皆様のお手元に届くよう作業しておりますので、もう暫くお待ちください。

GradleでEnclosedテストが2回実行されることの対策

@irofさんのエントリーで、GradleでEnclosedのテストが二回実行されるんだ
「あとではまる」とブックマークしたらば、3ヶ月後にちゃんとはまりましたw

で、原因ですが、Groovyでコンパイルされた後のネストクラスが、トップレベルのクラスとして認識されるため、Eclosedで実行され、かつ通常のJUnitテストとして実行されるのが、おそらくは原因。

回避策は2つ。
1つはEnclosedテストランナーを利用しないw
というか、@RunWithの部分をコメントアウトすればOK。

もう一つは、テストの実行時に除外クラスを指定すること。つまり、build.gradle に次のように設定する。

test {
exclude '**/*$*'
}

ネストクラスやインナークラスは、「アウタークラス$インナークラス」となるため、$で判断してます。

exclude '**/*Test$*'

でもいいかも