昨日に引き続きIT勉強会参加レポです。
7/20(金)に行われた第44回InfoTalkに参加してきました。
InfoTalk/20120720 - 産業技術大学院大学
テーマは以下の2つでした。
TDD のこころ ― テスト駆動開発に大事なもの
和田 卓人 氏=タワーズ・クエスト株式会社取締役社長
プログラミングを行う際に同時にテストコードを書き,フィードバックを得ながら開発を行う「テスト駆動開発(TDD)」が開発者のための重要なプラクティ スと認識されるようになって久しいが,まだまだ実践する技術者は少数派であり,初心者が入門するには壁があるのも事実である。今回は,TDD を始めてみたい,また始めてみたが迷っているエンジニアに向けて,テスト駆動開発にとって大事な「こころ」についての講演を行い,続いてTDD の事例紹介や応用についても触れる。
Jenkinsではじめる継続的インテグレーション
佐藤 聖規 氏=(株)NTTデータ 技術開発本部 ALMソリューションセンタ シニア・エキスパート,日本Jenkinsユーザ会
ソフトウェア開発でこれらの自体が発生していないだろうか? ・「単純な手作業の繰り返しでミス」 ・「別の環境だとビルドできない」 ・「結合テストで修正地獄」 ・「リリース直前で動かない」 このような問題を解決して,ストレスフリー・最高の品質を提供するのがJenkinsである。 Jenkinsは「継続的インテグレーション」というコンパイル,テスト,デプロイなどを自動化し,1日に何度も繰り返す手法を実践するソフトウェアである。 これにより問題を早期に発見し,早期解決する。 今回はJenkinsを導入したい,知りたい人向けにJenkinsの基本を紹介しよう。
Jenkins User Conferenceが開催されます(7/29) http://build-shokunin.org/juc2012/
■TDDのこころ:まとめ
ソフトウェア開発の3本柱として
があげられる。3つそろってやるべき。
ここでのテスト、というのはDeveloperTestであり、CustmerTestやQATestではない。
設計を頑張って検討して美しい設計をしてもコードを書くことによって初めて得られる情報、というのは多いので、まずはテストを書いて実装していくことで「動くきれいなコード」ができる。
TDDの流れはRed(動かない)→Green(動くけどきたないコード)→Refactor(動くきれいなコード)
日本人がテストコード書くならメソッド名に日本語を使うのは問題ない。
仮実装はテストコードに問題がない(テストコードのテスト)のためにやる。
テストする箇所は「全メソッド」というのは意味が無い。開発者が意味が無い部分をテストする。
既存のテストコードがないコードにテストを入れていくなら「レガシーコード改善ガイド」を読むべき。
DBのせいでコードやテストがきれいに書けないなら「データベース
リファクタリング」を読むのがおすすめ。
■Jenkinsではじめる継続的インテグレーション:まとめ
手作業でビルドやデプロイすることで違うバージョンを出してしまうなどのミスが多発。
別の環境だとビルドできない、などの問題を解決する。
コミットしたらテストする。そうしないとどのコミットでバグが発生したのかわからない。
Jenkinsのインストールは簡単。
Welcome to Jenkins CI! | Jenkins CI
Webページにアクセスすればすぐインストールできる。
スモールスタートしてスケールアウトも簡単。プラグインによる機能拡張も。
いきなり全部やるのは大変。
- コンパイル
- テスト
- インスペクション
- デプロイ
- 画面テスト
- デリバリ
などができるが、1つずつできるようにしていけばよい。
CIはツールではなくプラクティス。Jenkinsを導入すればうまくいくという
銀の弾丸ではなく、「毎日コミットして修正する」ということが本質。
TDDのお話は、特に仮実装の部分が目からうろこでした。
なんでこんなコード書くんだろ、と思ってたんですが、これを試さないとテストが通らない時に「そもそもテストコードが悪い」とか「モジュールの依存関係が解消されてなくてテストしたいコードが呼び出せてない」みたいな問題を、プロダクションコードが悪いのではと
デバッグしてはまるケースがあるので、まずはどう考えてもテストが通るコードを書いて問題ないことを確認するという意味があったと。今後実践していきます。
Jenkinsの方は、テスト書いてたら会社のデキる後輩が自発的にインストールしてくれたら神ツールだったという感じです。
自分ではインストール・運用をまだやっていないので、こっちも是非試していきたいと思います。