読者です 読者をやめる 読者になる 読者になる

月曜日までに考えておきます

ITネタとゲームネタ中心に興味のあること色々書きます。

第44回InfoTalk(TDDとCI)に参加してきました

IT
昨日に引き続き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. コンパイル
  2. テスト
  3. インスペクション
  4. デプロイ
  5. 画面テスト
  6. デリバリ
などができるが、1つずつできるようにしていけばよい。 CIはツールではなくプラクティス。Jenkinsを導入すればうまくいくという銀の弾丸ではなく、「毎日コミットして修正する」ということが本質。   TDDのお話は、特に仮実装の部分が目からうろこでした。 なんでこんなコード書くんだろ、と思ってたんですが、これを試さないとテストが通らない時に「そもそもテストコードが悪い」とか「モジュールの依存関係が解消されてなくてテストしたいコードが呼び出せてない」みたいな問題を、プロダクションコードが悪いのではとデバッグしてはまるケースがあるので、まずはどう考えてもテストが通るコードを書いて問題ないことを確認するという意味があったと。今後実践していきます。   Jenkinsの方は、テスト書いてたら会社のデキる後輩が自発的にインストールしてくれたら神ツールだったという感じです。 自分ではインストール・運用をまだやっていないので、こっちも是非試していきたいと思います。