20120519 アジャイルサムライ読書会第9回(完)
-
Upload
connectstar-co-ltd -
Category
Documents
-
view
320 -
download
5
description
Transcript of 20120519 アジャイルサムライ読書会第9回(完)
アジャイルサムライ第五部 アジャイルなプログラミング
2012.5.19 株式会社コネクトスター
サービス開発者の読書会
後半戦
これはなに
• アジャイルサムライ読書会
• 第5部を読んだ前提で議論する資料
• 前編はhttp://www.slideshare.net/
naotokoshikawa/82012612
KPT
• まずは読書会のKPTを確認
• http://kpt-it.herokuapp.com/9fdaa76993f04b532d3d8604baaefcb5
第五部• 12.ユニットテスト:動くことが分かる
• 13.リファクタリング:技術的負債の返済
•14.テスト駆動開発
•15.継続的インテグレーション:リリースに備える
今回は14と15をやります。
おさらい
問答無用で実践すべきプラクティス
• ユニットテスト
• リファクタリング
• テスト駆動開発(TDD)
• 継続的インテグレーション
14. テスト駆動開発
• 前回実際にRSpecでテスト駆動開発をお見せしました。
• 想像通り?
• イメージ変わった?
(考えよう!)
実際見てみて• TDDって何が難しいの?(当たり前じゃない?)
• ブラウザで検証するものだと思ってた
• メンタルに作用するものでは
• めんどくさそう
実際見てみて
• 成功体験がないと実感しないかも
• 一見不合理に見える
• 分かっていても出来ないものに見えた
• 生活習慣の一種に見えた
• 技術よりマインドが大事そう
テストを先に書く
まず失敗するテストを書く
ルールその1
• 失敗するテストをひとつ書くまでは、新しいコードを一切 書かない。
• (ここで大事なのは、本当に必要なコー
ド以外を書いちゃいけない)
ルールその2
• 「危なっかしい所」をすべてテストする
• 意図を伝えるためにテストを書く
ルールについて
• 「既に実装されたコードがある」と考えながら、先にテストを書くっていうのは設計手法として実にうまい作戦
• テスト駆動開発はユニットテストやリファクタリングよりも高度な 技術
(考えよう!)
ルールについて
• どうやってTDDやっているかをチェックするんだい?
• テストそのものの質はどうみよう?
• 危なっかしい箇所がピックアップされているか?
得られる効果
得られる効果• コードベースの保守や修正を容易にすることにつながっている。
• コードが減れば、複雑さも減る。
• 設計がシンプルになれば、変更や修正もし やすくなる
15.継続的インテグレーション
リリースに備える文化
• プロジェクトの本番は初日から始まっている
• 本番環境へのデプロイは遙か遠い未来のことではない
(考えよう!)
リリースに備える文化
• 本番環境にアップロードするのはお客さんということもある
• プログラム納品とかあるとありがち
• 納品前のドタバタがありがち
継続的インテグレーションとは
• ソースコードリポジトリ
• チェックイン手順
• ビルドの自動化
• 作業単位を小さくしようとする姿勢
具体的に必要なもの• git
• gitのワークフローの理解
• アトミックコミット
• CIサーバー
• それを通知するコミュニケーションツール(IRC, Campfire, hipchatなどなど)
コミット手順
ビルドの自動化
更にチェックインするとCIサーバーがビルドしてテストを実行する
学んだこと• ユニットテストビルドしたコードがちゃんと動くことを示す方法
• リファクタリングコードをシンプルでクリーンな状態に保ち、読みやすくするための技術
学んだこと• テスト駆動開発(TDD)
複雑さに立ち向かうための設計技法
• 継続的インテグレーション決まった間隔ですべてを統合し、プロダクトをリリース可能な状態を保ち続ける取り組み
アジャイルであるために
• 毎週、価値ある成果を届けられているか?
• たゆまぬ改善のための努力を惜しまず続けているか?
KPT
http://kpt-it.herokuapp.com/9fdaa76993f04b532d3d8604baaefcb5
完
次回
• みんなの感想LT
• リーンスタートアップ読書会の進め方を検討しよう!