2013年8月17日土曜日

TDDeXchange in Tokyo に参加してきました #TDDeX

TDDeXchange in Tokyo で、実際のアプリでTDDどうやるんだっけ?
http://connpass.com/event/2929/

TDDeXchange in Tokyo #TDDeX
http://togetter.com/li/540368

TDD eXchange

TDD Boot Camp Tokyo 2013-07 に参加してきました #tddbcでは、ほぼコードを書くことは無いだろうと思い、参加してきました。


詳細については、「TDDの自殺」を発表しました。 #TDDeXをご覧ください。

テストコードの保守性をどうやって保っていくのかを考えるいいきっかけになったと思いました。
これまでテストの無いレガシーコードをテストしやすいコードまでなんとか引き上げてきました。
今後、自分以外の人間が携わった時に果たしてメンテナンスしやすいコードなのか分からないので、そういった視点で見直していくのは大切なのではないかと感じました。


途中までですが、APIを考えていたら時間を使いすぎてコード書く時間がほとんど取れませんでした。
DIとか全く考えずに書き始めたので、どうしようかと考えたところで時間切れになってしまいました。
このお題ならBoundaryでのテストはどうしたら良いのか、まだ出来ていないレイヤーをどう扱うのかを考える必要があるので、経験値がかなり上がると思いました。
普段意識してなかったツールもこのような視点から見てみるのも面白そうだと感じました。

おわりに


@kyon_mmさんがいらっしゃったおかげか、Groovyを使っていた方がこんなに多かったとは思いませんでした。

DSC_0040.jpg
会場は、おしゃれで居心地のいい空間でした。こういう場所でコード書いていたいなと思いました。

主催の@kyon_mmさん、スタッフの皆様、会場を提供して下さった株式会社ドリコム様ありがとうございました。

SQLアンチパターン読書会 「EAV(エンティティ・アトリビュート・バリュー)」 に参加してきました #sqlap

SQLアンチパターン読書会 「EAV(エンティティ・アトリビュート・バリュー)」
http://sqlap.doorkeeper.jp/events/4507

EAV



この回は、私が概要の説明をするお役目を承ったので、いろいろと調べてみてみました。

DSC_0334.jpg

DSC_0333.jpg

属性とその値を対象に関連付ける場合、その属性について詳しく調査出来るかがこのアンチパターンを解消する鍵なのではないかと思いました。
解決策もORMでサポートされているものも多く、カタログのように属性がバラバラであったりする場合はRDBMSでは難しいということも知りました。
また、最近ではNoSQLのような解決策も出てきており、どうしてもRDBMSでは難しい場合は選択肢として選べるようになったのは大きいと思いました。

おわりに

主催の@natsu_nananaさん、参加者の皆様、会場を提供してくださった株式会社アルティネット様ありがとうございました。
次回もまたよろしくお願いします。

2013年8月12日月曜日

TDD Boot Camp Tokyo 2013-07 に参加してきました #tddbc

TDD Boot Camp Tokyo 2013-07
http://tddbc.doorkeeper.jp/events/4663

TDD Boot Camp

開催からだいぶ経ってしまいしましたが、今回の件の感想が少ないとのご要望もあった模様なので、書いてみます。

今回は、JavaのTAとして参加してきました。
東京での開催にも関わらず、大阪や名古屋からTAの方がいらっしゃったりと、TAの方が多く大変助かりました。

一部ではC#の募集がないとのご指摘もありましたが、個人的にTAの方が受け持てる言語で行うのが妥当だと思っていますので、是非C#でTAの出来る方がいらっしゃれば、いつでも歓迎いたします。

個人的な印象としては、JavaScriptの希望者が確実に増えていると思いました。
JavaScriptでのテスティングフレームワークの移り変わりが早く、デファクトスタンダードが無いということ知りました。
特にPerlやRuby、Nodeなど別の言語のテスティングフレームワークのエッセンスを取り入れた為、フレームワークによってバラバラだという点も興味深かったです。

今回も@yattomさんと一緒にペアプロのデモをさせていただきました。
今回の反省点としては、Javaに特化した説明をしてしまった為、他の言語の参加者には分かりにくい内容になってしまっていたと思います。
今後のデモの課題として、個人的に感じたのは以下の内容です。

  • 設計とプログラミングのステージの割合や切り替えのタイミング
  • リファクタリングのタイミング
  • ドライバーとナビの交代のタイミング
  • TODOリストの使い方の説明
  • 言語やIDEに依存しない程度の説明

今回のイベントで一番印象に残ったのは、やはりGOOS本の原著者、Steve Freeman氏が参加されたことでしょう。
講演や、ペアプロでの成果の発表、等トップレベルの人のコードを見たり、解説してもらえることは、やはり刺激的で面白いと感じました。
いろいろと技術的なことも踏まえた通訳をしてくださった@yattomさん、ありがとうございました。

その他にもいろいろと勉強になることが多く、参加してよかったと思いました。
また、KPTの文字起こしをしていても参加者の方々がそれぞれ自分たちの課題を見つけられたり、何かしら得られていた様子なので、よかったと思いました。

おわりに

次のTDDBCでは、いくつかJavaScriptのテスティングフレームワークを習得してJavaScriptのTAも出来るようになりたいと思いました。

主催の藤原さん、TAの皆様、運営を手伝って下さった皆様、会場を提供して下さった楽天様、ありがとうございました。

2013年7月20日土曜日

『JUnit実践入門』写経・実践会 in 横浜 #8 (最終回) に参加してきました #junitbook

『JUnit実践入門』写経・実践会 in 横浜 #8 (最終回) #junitbook
http://connpass.com/event/2590/

2013/07/06 『JUnit実践入門』写経・実践会 in 横浜 #8 (最終回) #junitbook
http://togetter.com/li/529598

はじめに

今回は最終回ということで、書籍全体を通してのディスカッションとTDD/ペアプロ実践が内容でした。

最終回

ディスカッションでは、会社で行なっている新人研修でこの書籍を用いてやっているので、その内容についてと個人的な見解を話すことが出来ました。
主な内容については、Javaの研修が終わった新人に対してこの書籍を利用して、JUnitを利用してどうやってユニットテストを書いていけばよいのかを話しました。
この書籍にはサンプルが公開レポジトリに掲載されていますので、これを解答として行き着く手順をこの会で得られた経験も併せて説明しました。
実際にコードを書いてもらってmavenで動かしてみて確認しながら進めて行き方は、評判も良かったように感じました。

最終回ということで、これまでの参加レポートを列挙してみます。


#1には@kyon_mmさんが、#3には@t_wadaさんが、#6には@irofさん、著者の@shuji_w6eさんがゲストとして参加してくださいました。

個人的に印象に残った回を挙げるとすれば、やはり#6の特別編を挙げたいと思います。
cucumberとseleniumを組み合わせることで、ここまで振る舞いをテストが出来るんだよというのが実際に手を動かすことで実感できました。
そのおかげでGebを用いてSpockで似たようなことが出来るようになりました。

おわりに

今回で、この写経・実践会も終わりとなりました。
この本が出た後の半年で自分自身多くのことを学ぶ事ができました。
それもこれもこの会があったおかげだと思います。
書籍は積読では何も身につかないので、こういった会に参加することで他の方が実践している経験や知見を学ぶことが出来る事を実感出来ました。
他にもまだ読んでいない本があるので読書会が開催されていたら、積極的に参加してみたいと思います。



主催の@shinyaa31さん、参加者の皆さん、会場の横浜タネマキさん、ありがとうございました。

2013年7月3日水曜日

Javaで実践するリーダブルコード ぷらす に参加してきました #readablecode

Javaで実践するリーダブルコード ぷらす
http://atnd.org/event/E0016341/0

はじめに

アジャイルサムライ横浜道場でお世話になっている@terahide27さんが主催されるということで、なにかお手伝いできることはないかと考え、スタッフとして参加しようと思いお願いしてみたところ承諾を得ることが出来ました。

リーダブルコード自体は購入直後に読んでおり、出来る限りプロジェクトに反映できるよう努力していました。



当日は、多くの人に集まってもらえたのはとてもありがたいと思うのと同時に、出来る限り良い経験をしてもらえるようにしたいと思いました。

ハンズオン

今回のハンズオンでは、ペア毎にお題を含めどのように進めていくのかなどを決めてもらいました。
全てのペアが提案されたボーリングのお題をやっていましたが、リファクタリングを重視しダメなコードから始めたり、初めからTDDで行なっていたりと進めて行き方はバラバラでした。


印象に残ったのは、手続き型でprimitiveな型しか使わないダメなコードから始めたペアは、どこもスペアの実装しようとした時点で破綻していた事でした。

最終的にコードレビューの時間でその違いがはっきりしてました。
途中からリファクタリングを始めたペアは、何とかして綺麗なコードにしようとしたが時間が足りず、修正に手一杯で名前を変える余裕が無かった様に感じました。
初めからリーダブルコードの内容を意識して書くことでリファクタリングやユニットテストのしやすいコードになっていくのではないかと思いました。

JUnitの使い方も経験によってばらつきが見られ、慣れていないとどのように書いたら良いのか分からなかったり、使い方そのものを知らなかったりと様々でした。
JUnit実践入門が出版されたおかげで始めるキッカケが出来たと思うので、これを機会に読みやすいコードにしていく為にもJUnitをどう使えばいいのか知ってもらえればいいなと思いました。

テストを全く書かなかったペアが最後になってテストを書いて実行してみたら、間違った結果を返したまま時間切れになったのを見かけ、やはり実装を確認しながら開発するのは大切なことだと感じました。

おわりに

TDDBC Tokyo 2013-07が開催される前にTAとして良い経験をさせて頂きました。
上手くお手伝いできたか不安ではありますが、参加者の皆様が今回の経験を活かして現場でも読みやすいコードを残していってもらえれば幸いです。

主催の@terahide27さん、スタッフの皆様、参加者の皆様、会場を提供して下さった株式会社アクシスウェア様、ありがとうございました。