SlideShare una empresa de Scribd logo
1 de 29
第五部
アジャイルな
プログラミング
 株式会社コネクトスター
サービス開発者向け読書会
   越川 直人
これはなに


• アジャイルサムライ読書会
• 第5部を読んだ前提で議論する資料
第五部
     今回は12と13をやります。

• 12.ユニットテスト:動くことが分かる
• 13.リファクタリング:技術的負債の返済
• 14.テスト駆動開発
• 15.継続的インテグレーション:リリースに備える
問答無用で実践すべき
   プラクティス
• ユニットテスト
• リファクタリング
• テスト駆動開発(TDD)
• 継続的インテグレーション
12.ユニットテスト:
動くことが分かる
デグレードの例

デグレードとは、ソフトウェア開発にお
いて、プログラムを手直しした際に修正
部分以外の個所で不整合・不具合が発生
したり、バージョン管理の手抜かりなど
によって以前の状態に戻ってしまい、修
正済みだったバグが再発したりすること
デグレードの例
• 「バグだ と勘違い」したのが問題
• なんでそう思ったんだろう?
 testがない!

• 修正されたバグが二度とコードに現れ
 ないようにするためには?
 testを書こう!
テストを書く

• テストとは何か
 ブラウザで検証するアレ
 excelシートに⃝、×

• どんなイメージがあるか
 辛い、面倒くさい、コツコツ
テストを書く


• 今までどうやってきた?
 みんなでがんばった!、アルバイト?



       だめだね
本来のテスト

• バグを修正する前に、失敗するテストを書く
• 自動化して簡単に実行できる
• とはいえブラウザでのテストは必要だよね!
• 見た目はむしろ目で見たほうがイイ!
テストコードを
   たくさん書くと?
• 素早いフィードバックが得られる
• 極めて低コストにリグレッションテストを
 実行できる

• デバッグ時間を大幅に削減できる
• 自信を持ってデプロイできる
 (サーバへ上げる時に祈ってませんか?)
どこまで書けばいいの?

• ソフトウェアがちゃんと動いていると
 確信を持つに足るだけのテストを書
 き、労力に見合ったテストになってい
 ることを判断する基準が「危なっかし
 い所をすべてテストする」だ

• カバレッジは100%を目指すべきか
カバレッジは100%を目指すべきか


• 程よいところまでやろう!
• リーンにやるには?
• MVPなところは必ず書く
• 改修の生産性が一番よいところまで!
• エンジニアの精神衛生を保つ
testで実感したこと

• 機能を足した時に、古い機能のtestが落
 ちた!

• めっちゃいいな、と思った。
• 新しいエンジニアが加わった時!
危なっかしい箇所とは?
     みんなで考えよう




• 決済周り
• 複雑な処理
レガシーコード

• なにそれ
• レガシーコード改善ガイド
 を読もう
引用:レガシーコード改善ガイド




• レガシーコードとは、単にテストのない
 コードである
引用:レガシーコード改善ガイド

• テストのないコードは悪いコードである。 どれ
 だけうまく書かれているかは関係ない。 どれだ
 け美しいか、 オブジェクト指向か、 きちんと
 カプセル化されているかは関係ない。 テストが
 あれば、 検証しながらコードの動きを素早く
 変更できる。 テストがなければ、 コードが良
 くなっているのか悪くなっているのかが本当に
 は分からない。
13.リファクタリング:
 技術的負債の返済
技術的負債
• コードのコピーアンドペースト
• 手抜き、ハック、重複により技術的負
 債はたまってく

• 組織で共有されない知識や、複雑すぎ
 て変更が難しいコードも
リファクタリングで
技術的負債を返済する
リファクタリング
• 外部からみたソフトウェア全体の振る
 舞いを変えることなく、少しずつ継続
 的に設計を改善していく手順

• 振る舞いを変えることないことを担保
 する = テスト

• テストがない状態ではリファクタリン
 グは不可能
技術的負債の影響
• もし君が変更しづらく、仕事として楽し
 めないソフ トウェアを書いてしまったと
 しよう。もし、後になってその機能を更
 新したり、 新機能を追加したりといった
 せっかくの機会がめぐってきたとする。
 その時にどんな気分になるだろうか? ちっ
 ともわくわくしないんじゃないだろう
 か。そんな ことじゃだめなんだ
リファクタリング
     の仕方
• 一日を通じてたゆまず、継続的にリ
 ファクタリングする

• 技術的負債の返済は後になればなるほ
 ど難しくなる
リファクタリングのポイント


• 変数やメソッド に適切な名前がついて
 いるかを確かめる

• 似ている箇所をメソッドに抽出してみ
 たらどうだろう?
大掛かりな
 リファクタリング
• 外部要因によって変更が発生して、自
 分たちでも対処が必要だと判断したな
 ら、そのリファクタリングを他のユー
 ザーストーリーと同様に扱おう

• プロジェクトの終了は近いか?
• 少しずつやれないか?
テスト駆動開発の実例

• C#の例、普段見慣れない
• rubyのコードで実感したい
• sinatraみんな書いたことあるよね
• というわけで以下の実例を見せます
https://github.com/ppworks/rspec_sample
KPT




    http://kpt-it.herokuapp.com/
9fdaa76993f04b532d3d8604baaefcb5

Más contenido relacionado

La actualidad más candente

Agile pm10 quality_2a
Agile pm10 quality_2aAgile pm10 quality_2a
Agile pm10 quality_2a
Bunnojo
 
少し分かった気になるテスト駆動開発
少し分かった気になるテスト駆動開発少し分かった気になるテスト駆動開発
少し分かった気になるテスト駆動開発
lnial
 
Agile japan2010 rakuten様プレゼン資料
Agile japan2010 rakuten様プレゼン資料Agile japan2010 rakuten様プレゼン資料
Agile japan2010 rakuten様プレゼン資料
Akiko Kosaka
 
「継続的デリバリー」読書会 第3章 継続的デリバリー
「継続的デリバリー」読書会 第3章 継続的デリバリー「継続的デリバリー」読書会 第3章 継続的デリバリー
「継続的デリバリー」読書会 第3章 継続的デリバリー
Norikazu Hiraki
 

La actualidad más candente (20)

テストプロセス改善技術の概要
テストプロセス改善技術の概要テストプロセス改善技術の概要
テストプロセス改善技術の概要
 
ソフトウェア・テスト入門6
ソフトウェア・テスト入門6ソフトウェア・テスト入門6
ソフトウェア・テスト入門6
 
Gui自動テストツール基本
Gui自動テストツール基本Gui自動テストツール基本
Gui自動テストツール基本
 
Agile pm10 quality_2a
Agile pm10 quality_2aAgile pm10 quality_2a
Agile pm10 quality_2a
 
20121022 jenkinsまつり事前アンケート結果
20121022 jenkinsまつり事前アンケート結果20121022 jenkinsまつり事前アンケート結果
20121022 jenkinsまつり事前アンケート結果
 
少し分かった気になるテスト駆動開発
少し分かった気になるテスト駆動開発少し分かった気になるテスト駆動開発
少し分かった気になるテスト駆動開発
 
テストファースト、自動テストを導入するという事について(@社内勉強会)
テストファースト、自動テストを導入するという事について(@社内勉強会)テストファースト、自動テストを導入するという事について(@社内勉強会)
テストファースト、自動テストを導入するという事について(@社内勉強会)
 
自動テストの誤解とアンチパターン in 楽天 Tech Talk
自動テストの誤解とアンチパターン in 楽天 Tech Talk自動テストの誤解とアンチパターン in 楽天 Tech Talk
自動テストの誤解とアンチパターン in 楽天 Tech Talk
 
Agile japan2010 rakuten様プレゼン資料
Agile japan2010 rakuten様プレゼン資料Agile japan2010 rakuten様プレゼン資料
Agile japan2010 rakuten様プレゼン資料
 
ssmjp 20200221 Automation
ssmjp 20200221 Automationssmjp 20200221 Automation
ssmjp 20200221 Automation
 
「継続的デリバリー」読書会 第3章 継続的デリバリー
「継続的デリバリー」読書会 第3章 継続的デリバリー「継続的デリバリー」読書会 第3章 継続的デリバリー
「継続的デリバリー」読書会 第3章 継続的デリバリー
 
ゲーム開発環境の自動化
ゲーム開発環境の自動化ゲーム開発環境の自動化
ゲーム開発環境の自動化
 
My style agile
My style agileMy style agile
My style agile
 
テストとの上手な付き合い方
テストとの上手な付き合い方テストとの上手な付き合い方
テストとの上手な付き合い方
 
テストの視点を活用した TDD アプローチの検討とその検証
テストの視点を活用した TDD アプローチの検討とその検証テストの視点を活用した TDD アプローチの検討とその検証
テストの視点を活用した TDD アプローチの検討とその検証
 
レビューとは何か
レビューとは何かレビューとは何か
レビューとは何か
 
TPI NEXT ざっくり概要
TPI NEXT ざっくり概要TPI NEXT ざっくり概要
TPI NEXT ざっくり概要
 
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
 
テスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しよう
テスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しようテスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しよう
テスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しよう
 
RICOH最終選考プレゼン資料
RICOH最終選考プレゼン資料RICOH最終選考プレゼン資料
RICOH最終選考プレゼン資料
 

Similar a サービス開発者の読書会 #8「アジャイルサムライ」2012.6.12

テストしなイカ? Seleniumで自動ブラウザテスト
テストしなイカ? Seleniumで自動ブラウザテストテストしなイカ? Seleniumで自動ブラウザテスト
テストしなイカ? Seleniumで自動ブラウザテスト
Ohishi Mikage
 
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめJenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
atsushi_tmx
 
SeasarCon 2009 White TDD
SeasarCon 2009 White TDDSeasarCon 2009 White TDD
SeasarCon 2009 White TDD
Takuto Wada
 
クラウドが実現するソフト開発・運用の変革と自動化
クラウドが実現するソフト開発・運用の変革と自動化クラウドが実現するソフト開発・運用の変革と自動化
クラウドが実現するソフト開発・運用の変革と自動化
Etsuji Nakai
 

Similar a サービス開発者の読書会 #8「アジャイルサムライ」2012.6.12 (20)

TFS超入門。いつやるの。今でしょ
TFS超入門。いつやるの。今でしょTFS超入門。いつやるの。今でしょ
TFS超入門。いつやるの。今でしょ
 
テストしなイカ? Seleniumで自動ブラウザテスト
テストしなイカ? Seleniumで自動ブラウザテストテストしなイカ? Seleniumで自動ブラウザテスト
テストしなイカ? Seleniumで自動ブラウザテスト
 
iOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPracticeiOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPractice
 
Androidリリース作業の効率化(2)
Androidリリース作業の効率化(2)Androidリリース作業の効率化(2)
Androidリリース作業の効率化(2)
 
TDDはじめる前に
TDDはじめる前にTDDはじめる前に
TDDはじめる前に
 
分散開発チームによるAgile開発実践 ~いろいろハマった!よかった
分散開発チームによるAgile開発実践 ~いろいろハマった!よかった分散開発チームによるAgile開発実践 ~いろいろハマった!よかった
分散開発チームによるAgile開発実践 ~いろいろハマった!よかった
 
(Japanese) From Continuous Integration to DevOps - Japan Innovate 2013
(Japanese) From Continuous Integration to DevOps - Japan Innovate 2013 (Japanese) From Continuous Integration to DevOps - Japan Innovate 2013
(Japanese) From Continuous Integration to DevOps - Japan Innovate 2013
 
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめJenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
 
テスト駆動開発の進化
テスト駆動開発の進化テスト駆動開発の進化
テスト駆動開発の進化
 
テスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ーテスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ー
 
SeasarCon 2009 White TDD
SeasarCon 2009 White TDDSeasarCon 2009 White TDD
SeasarCon 2009 White TDD
 
CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料
 
Coderetreat
CoderetreatCoderetreat
Coderetreat
 
【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo
【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo 【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo
【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo
 
[TL02] "Shift Left" で問題の早期発見を実現する、最新 Visual Studio の品質チェック・テスト機能の使い方
[TL02] "Shift Left" で問題の早期発見を実現する、最新 Visual Studio の品質チェック・テスト機能の使い方[TL02] "Shift Left" で問題の早期発見を実現する、最新 Visual Studio の品質チェック・テスト機能の使い方
[TL02] "Shift Left" で問題の早期発見を実現する、最新 Visual Studio の品質チェック・テスト機能の使い方
 
phpspecで始めるBDD
phpspecで始めるBDDphpspecで始めるBDD
phpspecで始めるBDD
 
反復型ソフトウェア開発の勘所
反復型ソフトウェア開発の勘所反復型ソフトウェア開発の勘所
反復型ソフトウェア開発の勘所
 
クラウドが実現するソフト開発・運用の変革と自動化
クラウドが実現するソフト開発・運用の変革と自動化クラウドが実現するソフト開発・運用の変革と自動化
クラウドが実現するソフト開発・運用の変革と自動化
 
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編FriendlyによるWindowsアプリテスト自動化手法 基礎技術編
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編
 
【JaSST'11 Tokyo】 テスト イノベーション
【JaSST'11 Tokyo】 テスト イノベーション【JaSST'11 Tokyo】 テスト イノベーション
【JaSST'11 Tokyo】 テスト イノベーション
 

Más de Naoto Koshikawa

最近挑戦していること at MF Geeks Night 2015.03.19
最近挑戦していること at MF Geeks Night 2015.03.19最近挑戦していること at MF Geeks Night 2015.03.19
最近挑戦していること at MF Geeks Night 2015.03.19
Naoto Koshikawa
 
Sendagaya.rb これまでを振り返ってみる
Sendagaya.rb これまでを振り返ってみるSendagaya.rb これまでを振り返ってみる
Sendagaya.rb これまでを振り返ってみる
Naoto Koshikawa
 
リーン・スタートアップ読書会 第三部
リーン・スタートアップ読書会 第三部リーン・スタートアップ読書会 第三部
リーン・スタートアップ読書会 第三部
Naoto Koshikawa
 

Más de Naoto Koshikawa (20)

WIP
WIPWIP
WIP
 
GeeksNightってなに
GeeksNightってなにGeeksNightってなに
GeeksNightってなに
 
Faye使って見てる話 at MF Geeks Night 2015.04.21
Faye使って見てる話 at MF Geeks Night 2015.04.21Faye使って見てる話 at MF Geeks Night 2015.04.21
Faye使って見てる話 at MF Geeks Night 2015.04.21
 
最近挑戦していること at MF Geeks Night 2015.03.19
最近挑戦していること at MF Geeks Night 2015.03.19最近挑戦していること at MF Geeks Night 2015.03.19
最近挑戦していること at MF Geeks Night 2015.03.19
 
なぜRailsなのか
なぜRailsなのかなぜRailsなのか
なぜRailsなのか
 
Qiita meetup for MoneyForward
Qiita meetup for MoneyForwardQiita meetup for MoneyForward
Qiita meetup for MoneyForward
 
20150114 GeeksNight
20150114 GeeksNight20150114 GeeksNight
20150114 GeeksNight
 
MF GeeksNight pplogの話
MF GeeksNight pplogの話MF GeeksNight pplogの話
MF GeeksNight pplogの話
 
YAPC::Asia Tokyo 2014 前夜祭 pplog by @ppworks
YAPC::Asia Tokyo 2014 前夜祭 pplog by @ppworksYAPC::Asia Tokyo 2014 前夜祭 pplog by @ppworks
YAPC::Asia Tokyo 2014 前夜祭 pplog by @ppworks
 
Pplog rest
Pplog restPplog rest
Pplog rest
 
Sendagaya.rbのご紹介
Sendagaya.rbのご紹介Sendagaya.rbのご紹介
Sendagaya.rbのご紹介
 
Sendagaya.rb これまでを振り返ってみる
Sendagaya.rb これまでを振り返ってみるSendagaya.rb これまでを振り返ってみる
Sendagaya.rb これまでを振り返ってみる
 
ビジネスモデル・ジェネレーションの紹介
ビジネスモデル・ジェネレーションの紹介ビジネスモデル・ジェネレーションの紹介
ビジネスモデル・ジェネレーションの紹介
 
RESTful APIとしてのRailsとクライアントとしてのJavaScript
RESTful APIとしてのRailsとクライアントとしてのJavaScriptRESTful APIとしてのRailsとクライアントとしてのJavaScript
RESTful APIとしてのRailsとクライアントとしてのJavaScript
 
リーン・スタートアップ読書会 第三部
リーン・スタートアップ読書会 第三部リーン・スタートアップ読書会 第三部
リーン・スタートアップ読書会 第三部
 
heroku devcenter 翻訳プロジェクト へのお誘い
heroku devcenter  翻訳プロジェクト へのお誘いheroku devcenter  翻訳プロジェクト へのお誘い
heroku devcenter 翻訳プロジェクト へのお誘い
 
heroku devcenter読書会 #1 by sendagaya.rb
heroku devcenter読書会 #1 by sendagaya.rbheroku devcenter読書会 #1 by sendagaya.rb
heroku devcenter読書会 #1 by sendagaya.rb
 
サービス開発者の読書会 #2「アジャイルサムライ」2012.4.26
サービス開発者の読書会 #2「アジャイルサムライ」2012.4.26サービス開発者の読書会 #2「アジャイルサムライ」2012.4.26
サービス開発者の読書会 #2「アジャイルサムライ」2012.4.26
 
love heroku?
love heroku?love heroku?
love heroku?
 
P4p20120408
P4p20120408P4p20120408
P4p20120408
 

Último

Último (7)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

サービス開発者の読書会 #8「アジャイルサムライ」2012.6.12

Notas del editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n