20120519 アジャイルサムライ読書会第9回(完)

30
アジャイルサムライ 第五部 アジャイルなプログラミング 2012.5.19 株式会社コネクトスター サービス開発者の読書会

description

アジャイルサムライ読書会、第8回、第9回はアジャイルなプログラミングについてです。テスト駆動開発・リファクタリングなどの重要さと難しさを共有しました。 私達の読書会は、サービス開発に関わる人(プランナー/プログラマー/デザイナーなど誰でも)がよりよいサービス開発のあり方について、お題になった本を通じて、共通認識をもったり知識を交換したり、建設的に議論したりする場です。 2012年4月からは「アジャイルサムライ」を読んでいます。

Transcript of 20120519 アジャイルサムライ読書会第9回(完)

Page 1: 20120519 アジャイルサムライ読書会第9回(完)

アジャイルサムライ第五部 アジャイルなプログラミング

2012.5.19 株式会社コネクトスター

サービス開発者の読書会

Page 2: 20120519 アジャイルサムライ読書会第9回(完)

後半戦

Page 3: 20120519 アジャイルサムライ読書会第9回(完)

これはなに

• アジャイルサムライ読書会

• 第5部を読んだ前提で議論する資料

• 前編はhttp://www.slideshare.net/

naotokoshikawa/82012612

Page 5: 20120519 アジャイルサムライ読書会第9回(完)

第五部• 12.ユニットテスト:動くことが分かる

• 13.リファクタリング:技術的負債の返済

•14.テスト駆動開発

•15.継続的インテグレーション:リリースに備える

今回は14と15をやります。

Page 6: 20120519 アジャイルサムライ読書会第9回(完)

おさらい

Page 7: 20120519 アジャイルサムライ読書会第9回(完)

問答無用で実践すべきプラクティス

• ユニットテスト

• リファクタリング

• テスト駆動開発(TDD)

• 継続的インテグレーション

Page 8: 20120519 アジャイルサムライ読書会第9回(完)

14. テスト駆動開発

• 前回実際にRSpecでテスト駆動開発をお見せしました。

• 想像通り?

• イメージ変わった?

(考えよう!)

Page 9: 20120519 アジャイルサムライ読書会第9回(完)

実際見てみて• TDDって何が難しいの?(当たり前じゃない?)

• ブラウザで検証するものだと思ってた

• メンタルに作用するものでは

• めんどくさそう

Page 10: 20120519 アジャイルサムライ読書会第9回(完)

実際見てみて

• 成功体験がないと実感しないかも

• 一見不合理に見える

• 分かっていても出来ないものに見えた

• 生活習慣の一種に見えた

• 技術よりマインドが大事そう

Page 11: 20120519 アジャイルサムライ読書会第9回(完)

テストを先に書く

まず失敗するテストを書く

Page 12: 20120519 アジャイルサムライ読書会第9回(完)

ルールその1

• 失敗するテストをひとつ書くまでは、新しいコードを一切 書かない。

• (ここで大事なのは、本当に必要なコー

ド以外を書いちゃいけない)

Page 13: 20120519 アジャイルサムライ読書会第9回(完)

ルールその2

• 「危なっかしい所」をすべてテストする

• 意図を伝えるためにテストを書く

Page 14: 20120519 アジャイルサムライ読書会第9回(完)

ルールについて

• 「既に実装されたコードがある」と考えながら、先にテストを書くっていうのは設計手法として実にうまい作戦

• テスト駆動開発はユニットテストやリファクタリングよりも高度な 技術

(考えよう!)

Page 15: 20120519 アジャイルサムライ読書会第9回(完)

ルールについて

• どうやってTDDやっているかをチェックするんだい?

• テストそのものの質はどうみよう?

• 危なっかしい箇所がピックアップされているか?

Page 16: 20120519 アジャイルサムライ読書会第9回(完)

得られる効果

Page 17: 20120519 アジャイルサムライ読書会第9回(完)

得られる効果• コードベースの保守や修正を容易にすることにつながっている。

• コードが減れば、複雑さも減る。

• 設計がシンプルになれば、変更や修正もし やすくなる

Page 18: 20120519 アジャイルサムライ読書会第9回(完)

15.継続的インテグレーション

Page 19: 20120519 アジャイルサムライ読書会第9回(完)

リリースに備える文化

• プロジェクトの本番は初日から始まっている

• 本番環境へのデプロイは遙か遠い未来のことではない

(考えよう!)

Page 20: 20120519 アジャイルサムライ読書会第9回(完)

リリースに備える文化

• 本番環境にアップロードするのはお客さんということもある

• プログラム納品とかあるとありがち

• 納品前のドタバタがありがち

Page 21: 20120519 アジャイルサムライ読書会第9回(完)

継続的インテグレーションとは

• ソースコードリポジトリ

• チェックイン手順

• ビルドの自動化

• 作業単位を小さくしようとする姿勢

Page 22: 20120519 アジャイルサムライ読書会第9回(完)

具体的に必要なもの• git

• gitのワークフローの理解

• アトミックコミット

• CIサーバー

• それを通知するコミュニケーションツール(IRC, Campfire, hipchatなどなど)

Page 23: 20120519 アジャイルサムライ読書会第9回(完)

コミット手順

Page 24: 20120519 アジャイルサムライ読書会第9回(完)

ビルドの自動化

更にチェックインするとCIサーバーがビルドしてテストを実行する

Page 25: 20120519 アジャイルサムライ読書会第9回(完)

学んだこと• ユニットテストビルドしたコードがちゃんと動くことを示す方法

• リファクタリングコードをシンプルでクリーンな状態に保ち、読みやすくするための技術

Page 26: 20120519 アジャイルサムライ読書会第9回(完)

学んだこと• テスト駆動開発(TDD)

複雑さに立ち向かうための設計技法

• 継続的インテグレーション決まった間隔ですべてを統合し、プロダクトをリリース可能な状態を保ち続ける取り組み

Page 27: 20120519 アジャイルサムライ読書会第9回(完)

アジャイルであるために

• 毎週、価値ある成果を届けられているか?

• たゆまぬ改善のための努力を惜しまず続けているか?

Page 29: 20120519 アジャイルサムライ読書会第9回(完)

Page 30: 20120519 アジャイルサムライ読書会第9回(完)

次回

• みんなの感想LT

• リーンスタートアップ読書会の進め方を検討しよう!