SlideShare a Scribd company logo
1 of 53
Download to read offline
ウォーターフォールの中で
XPやってみた話
2013年9月20日
ひらりんたろう
LOUNGE
#kansumiL
自己紹介
•HN:ひらりんたろう
•XPが好き
•某大手メーカーの子会社でSW開発
•昔は業務系、今は組込み系
•ウォーターフォールを突き詰めつつある
XPやろうと思ったきっかけ
•開発規定、ルール、チェック
リスト、ISO、CMMIなど人間
性を排除する方向性に疑問。
•人の能力を引き出すやり方
を模索。
XP とPFに出会う。
目次
•おさらい
•XPやってみた話
•ペアプログラミング
•テスティング
•継続的インテグレーション
•やってみて気づいたこと
おさらい
ウォーターフォールとは?
工程表がこんな感じ
要求分析
機能設計
詳細設計
コーディング
単体試験
組合せ試験
xx試験
ウォーターフォールとは?
•計画に従うことを前提。
•ドキュメント重視。
•基本は前工程に戻ら
ない。
良いところ
•シンプル。
誰でも一度で覚
えることができる。
工程表がこんな感じ
要求分析
機能設計
詳細設計
コーディング
単体試験
組合せ試験
xx試験
1人月
要求分析
機能設計
詳細設計
コーディング
単体試験
組合せ試験
xx試験
100人月
要求分析
機能設計
詳細設計
コーディング
単体試験
組合せ試験
xx試験
業務系システム
要求分析
機能設計
詳細設計
コーディング
単体試験
組合せ試験
xx試験
組込みソフトウェア
要求分析
機能設計
詳細設計
コーディング
単体試験
組合せ試験
xx試験
悪いところ
•完璧主義。
計画、ドキュメ
ント、プロセス。
ウォーターフォールそのものが悪いのではないと思います。
XPとは?
•eXtreme Programming
•5つの価値と12のプラクティス。
•変化を前提。
•動くソフトウェア(コード)を重視。
•コミュニケーションや対話を重視
する人間中心の開発プロセス。
5つの価値
•コミュニケーション
•シンプル
•フィードバック
•勇気
•尊重
プラクティス(初期の12)
• 計画ゲーム(The Planning Game)
• 小規模リリース(Small Releases)
• 比喩(Metaphor)
• シンプルデザイン(Simple Design)
• テスティング(Testing)
• リファクタリング(Refactoring)
• ペアプログラミング(Pair Programming)
• 共同所有権(Collective Ownership)
• 継続的インテグレーション(Continuous Integration)
• 週40時間(40-Hour Week)
• オンサイト顧客(On-Site Customer)
• コーディング標準(Coding Standards)
XPの良さ
•人間中心。
ウォーターフォー
ルで病んだプログ
ラマの不満を解消。
悪いところ
•プロセスが曖昧。
プログラマーが好
きなようにやって
失敗する。
XPやってみた話
本題
当時(200X年)の状況
•まわりは誰もXPを知
らない。
•知ったばかりのプラク
ティスにチャレンジ。
プラクティス(初期の12)
• 計画ゲーム(The Planning Game)
• 小規模リリース(Small Releases)
• 比喩(Metaphor)
• シンプルデザイン(Simple Design)
• テスティング(Testing)
• リファクタリング(Refactoring)
• ペアプログラミング(Pair Programming)
• 共同所有権(Collective Ownership)
• 継続的インテグレーション(Continuous Integration)
• 週40時間(40-Hour Week)
• オンサイト顧客(On-Site Customer)
• コーディング標準(Coding Standards)
ペアプログラミングとは?
•全てのコードは2人のプロ
グラマにより一台のマシン
で書かれる。
•15分ごとにコードを書く人
を交代する。
•ペアも1日ごとで交代。
やってみた開発
•社内業務Webシステム
•4,5人の開発
•Java言語
•期間:3~5ヶ月(200X年)
やってみた結果①
•15分ごとに交代する。無理。
これは大変。すぐ1時間ごと
に変更。徐々に延びていく。
•PC1台を共有。
字が見えなくて結局2台使用
(NetMeeting使用)。
やってみた結果②
•投入工数・期間が増加。
Aさん
Bさん
Cさん
Dさん
これが、
やってみた結果②
•投入工数・期間が増加。
A、Bさん
C、Dさん
こうなった。
やってみた結果③
•イマイチ盛り上
がりに欠けた。
予想外。
ウォーターフォールの中で
•ペアで作業するので単
純に工数が2倍、期間が
2倍の計算。
•コスト・納期のシビアな
短期開発ばかりで適用
が難しい。
やってみた結果(おまけ)
•新人の教育には良い。
•レベルを落とす必要ない。
•ペア設計もあり。
•工数増加が許されやす
い。
プラクティス(初期の12)
• 計画ゲーム(The Planning Game)
• 小規模リリース(Small Releases)
• 比喩(Metaphor)
• シンプルデザイン(Simple Design)
• テスティング(Testing)
• リファクタリング(Refactoring)
• ペアプログラミング(Pair Programming)
• 共同所有権(Collective Ownership)
• 継続的インテグレーション(Continuous Integration)
• 週40時間(40-Hour Week)
• オンサイト顧客(On-Site Customer)
• コーディング標準(Coding Standards)
テスティングとは?
•プログラマは継続的にユ
ニットテストを書く、それは
開発を続けるために完全に
動かなければならない。
やってみた開発
•GUIアプリケーション
•3人の開発
•Java言語
•期間:約5ヶ月(200Y年)
やってみた結果①
•継続的にユニットテストを
書く。
⇒ユニットテスト(djUnit)を
書き続けてカバレッジ(C1)
100%を無理やり達成。
やってみた結果①’
•無理やりの理由
既存コードが密結合で凝集度が
低く、djUnitのモックオブジェクト
(メソッドの差し替え)とリフレク
ション(privateメソッドの呼び出
し)を多用してテストコードを実装。
やってみた結果②
•テストコード増大。明らかに
やり過ぎた。
製品コード < テストコード
•テストコードの品質に不安。
(本末転倒)
ウォーターフォールの中で
•ドキュメント重視が障害。
テストコード ≠ 試験書
試験書を別に作成するとい
う無駄な作業が発生。
テストコードと整合取れず。
妥協点
•メソッドのJavaDocを拡張
して試験項目を記載。CSV
に変換して試験書(Excel)
に読み込むようにした。
プラクティス(初期の12)
• 計画ゲーム(The Planning Game)
• 小規模リリース(Small Releases)
• 比喩(Metaphor)
• シンプルデザイン(Simple Design)
• テスティング(Testing)
• リファクタリング(Refactoring)
• ペアプログラミング(Pair Programming)
• 共同所有権(Collective Ownership)
• 継続的インテグレーション(Continuous Integration)
• 週40時間(40-Hour Week)
• オンサイト顧客(On-Site Customer)
• コーディング標準(Coding Standards)
継続的インテグレーションとは?
•システムを一日に何回もイ
ンテグレードしビルドし、テ
ストを 100% パスさせる。
開発の概要(テスティングと一緒)
•GUIアプリケーション
•3人の開発
•Java言語
•期間:約5ヶ月(200Y年)
やってみた結果①
•Hudson(今Jenkins)
+Subversion+
djUnitで1回/日ビルド、
テスト、レポート生成。
やってみた結果①’
•レポートはWebサー
バにUPして公開。
•JavaDoc
•カバレッジ結果
ウォーターフォールの中で
•問題なく運用できた。
•テスティングとの組み
合わせは抜群。
•メトリクス収集やコミット
ログ解析など行えそう。
やってみて気づいたこと
うまくいかない理由
•人は経験したことがあることを
リスクが低いと認識する。
=初めて通る道はゴールに着
くか分からないが、一度通った
道は時間がかかっても必ず
ゴールに着くと分かる。
うまくいかない理由
•つまり、ウォーターフォールを
一度でも経験してしまうと、相
対的に「XP」や「アジャイル」へ
のリスクが高く、ウォーター
フォールのリスクは低く感じら
れるようになる。
うまくいきそうな方法①
•新人に「XP」からや
らせてみる。
「生まれて最初に見
たものが親方式」
うまくいきそうな方法②
•いきなり「XP」やるとか
言わず、「リスク」や「問
題」を前面に出して、そ
の解決策にXPのプラク
ティスを使う。
最後に
現在(2013年)の状況
•試しに発注先の人に
XPとアジャイルについ
て聞いてみた。
回答
•「何ですかそれ?」

More Related Content

Viewers also liked

オブジェクト指向やめましょう
オブジェクト指向やめましょうオブジェクト指向やめましょう
オブジェクト指向やめましょうなおき きしだ
 
Windows Server 2016でコンテナを動かしてみた
Windows Server 2016でコンテナを動かしてみたWindows Server 2016でコンテナを動かしてみた
Windows Server 2016でコンテナを動かしてみたTakashi Kanai
 
デザパタ勉強会(上級編)
デザパタ勉強会(上級編)デザパタ勉強会(上級編)
デザパタ勉強会(上級編)kaz3391
 
Windows+VirtualBoxで作るTensorFlow環境
Windows+VirtualBoxで作るTensorFlow環境Windows+VirtualBoxで作るTensorFlow環境
Windows+VirtualBoxで作るTensorFlow環境Hiroo Inamura
 
C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版信之 岩永
 
ソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビューソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビューMoriharu Ohzu
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣Masahiro Nishimi
 

Viewers also liked (9)

オブジェクト指向やめましょう
オブジェクト指向やめましょうオブジェクト指向やめましょう
オブジェクト指向やめましょう
 
Windows Server 2016でコンテナを動かしてみた
Windows Server 2016でコンテナを動かしてみたWindows Server 2016でコンテナを動かしてみた
Windows Server 2016でコンテナを動かしてみた
 
デザパタ勉強会(上級編)
デザパタ勉強会(上級編)デザパタ勉強会(上級編)
デザパタ勉強会(上級編)
 
Unityと.NET
Unityと.NETUnityと.NET
Unityと.NET
 
Windows+VirtualBoxで作るTensorFlow環境
Windows+VirtualBoxで作るTensorFlow環境Windows+VirtualBoxで作るTensorFlow環境
Windows+VirtualBoxで作るTensorFlow環境
 
C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版
 
ソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビューソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビュー
 
Oracle Big Data SQL3.1のご紹介
Oracle Big Data SQL3.1のご紹介Oracle Big Data SQL3.1のご紹介
Oracle Big Data SQL3.1のご紹介
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
 

Similar to XP in WF

Xpfp 070626
Xpfp 070626Xpfp 070626
Xpfp 070626takepu
 
Xp Terakoya No02
Xp Terakoya No02Xp Terakoya No02
Xp Terakoya No02takepu
 
Scrum,Test,Metrics #sgt2016
Scrum,Test,Metrics #sgt2016Scrum,Test,Metrics #sgt2016
Scrum,Test,Metrics #sgt2016kyon mm
 
アジャイル開発を始めてみませんか?(思い出編)
アジャイル開発を始めてみませんか?(思い出編)アジャイル開発を始めてみませんか?(思い出編)
アジャイル開発を始めてみませんか?(思い出編)Miho Nagase
 
ペルソナシナリオとプロトタイプ2
ペルソナシナリオとプロトタイプ2ペルソナシナリオとプロトタイプ2
ペルソナシナリオとプロトタイプ2Shuhei Iitsuka
 
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビューTakafumi ONAKA
 
アジャイルとスクラムとは 原則、価値、プラクティス
アジャイルとスクラムとは 原則、価値、プラクティスアジャイルとスクラムとは 原則、価値、プラクティス
アジャイルとスクラムとは 原則、価値、プラクティスYasui Tsutomu
 
[JaSST nano] テストケースを作ってもらうときに気を付けていたことをお話するの
[JaSST nano] テストケースを作ってもらうときに気を付けていたことをお話するの[JaSST nano] テストケースを作ってもらうときに気を付けていたことをお話するの
[JaSST nano] テストケースを作ってもらうときに気を付けていたことをお話するのKazukiNishizono1
 
ソフトウェアだんどり
ソフトウェアだんどりソフトウェアだんどり
ソフトウェアだんどりTakashi Imagire
 
opensource and accessibility (Dec2000) Part 2
opensource and accessibility (Dec2000) Part 2opensource and accessibility (Dec2000) Part 2
opensource and accessibility (Dec2000) Part 2Takuya Nishimoto
 
アート・オブ・アジャイル デベロップメント ~組織を成功に導くエクストリームプログラミングの道~
アート・オブ・アジャイル デベロップメント ~組織を成功に導くエクストリームプログラミングの道~アート・オブ・アジャイル デベロップメント ~組織を成功に導くエクストリームプログラミングの道~
アート・オブ・アジャイル デベロップメント ~組織を成功に導くエクストリームプログラミングの道~Fumihiko Kinoshita
 
IT技術者でも1から学べるビジネスモデルキャンバス入門
IT技術者でも1から学べるビジネスモデルキャンバス入門IT技術者でも1から学べるビジネスモデルキャンバス入門
IT技術者でも1から学べるビジネスモデルキャンバス入門陽一 滝川
 
非開発者のためのアジャイル開発入門
非開発者のためのアジャイル開発入門非開発者のためのアジャイル開発入門
非開発者のためのアジャイル開発入門Kiro Harada
 
GCSアジャイル開発を使ったゲームの作り方
 GCSアジャイル開発を使ったゲームの作り方 GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方Hiroyuki Tanaka
 
さわってみよう Firefox OS|デザイナーズハック004
さわってみよう Firefox OS|デザイナーズハック004さわってみよう Firefox OS|デザイナーズハック004
さわってみよう Firefox OS|デザイナーズハック004Chihiro Tomita
 
Xamarin入門(技術というより心構え編)
Xamarin入門(技術というより心構え編)Xamarin入門(技術というより心構え編)
Xamarin入門(技術というより心構え編)Makoto Nishimura
 
テストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornightテストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornightkyon mm
 
パフォーマンステストいつやる??
パフォーマンステストいつやる??パフォーマンステストいつやる??
パフォーマンステストいつやる??Shuichi Takaku
 
雑食系エンジニアの作りかた
雑食系エンジニアの作りかた雑食系エンジニアの作りかた
雑食系エンジニアの作りかたHiroshi Maekawa
 

Similar to XP in WF (20)

Xpfp 070626
Xpfp 070626Xpfp 070626
Xpfp 070626
 
Xp Terakoya No02
Xp Terakoya No02Xp Terakoya No02
Xp Terakoya No02
 
Scrum,Test,Metrics #sgt2016
Scrum,Test,Metrics #sgt2016Scrum,Test,Metrics #sgt2016
Scrum,Test,Metrics #sgt2016
 
アジャイル開発を始めてみませんか?(思い出編)
アジャイル開発を始めてみませんか?(思い出編)アジャイル開発を始めてみませんか?(思い出編)
アジャイル開発を始めてみませんか?(思い出編)
 
ペルソナシナリオとプロトタイプ2
ペルソナシナリオとプロトタイプ2ペルソナシナリオとプロトタイプ2
ペルソナシナリオとプロトタイプ2
 
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
 
アジャイルとスクラムとは 原則、価値、プラクティス
アジャイルとスクラムとは 原則、価値、プラクティスアジャイルとスクラムとは 原則、価値、プラクティス
アジャイルとスクラムとは 原則、価値、プラクティス
 
[JaSST nano] テストケースを作ってもらうときに気を付けていたことをお話するの
[JaSST nano] テストケースを作ってもらうときに気を付けていたことをお話するの[JaSST nano] テストケースを作ってもらうときに気を付けていたことをお話するの
[JaSST nano] テストケースを作ってもらうときに気を付けていたことをお話するの
 
ソフトウェアだんどり
ソフトウェアだんどりソフトウェアだんどり
ソフトウェアだんどり
 
opensource and accessibility (Dec2000) Part 2
opensource and accessibility (Dec2000) Part 2opensource and accessibility (Dec2000) Part 2
opensource and accessibility (Dec2000) Part 2
 
アート・オブ・アジャイル デベロップメント ~組織を成功に導くエクストリームプログラミングの道~
アート・オブ・アジャイル デベロップメント ~組織を成功に導くエクストリームプログラミングの道~アート・オブ・アジャイル デベロップメント ~組織を成功に導くエクストリームプログラミングの道~
アート・オブ・アジャイル デベロップメント ~組織を成功に導くエクストリームプログラミングの道~
 
IT技術者でも1から学べるビジネスモデルキャンバス入門
IT技術者でも1から学べるビジネスモデルキャンバス入門IT技術者でも1から学べるビジネスモデルキャンバス入門
IT技術者でも1から学べるビジネスモデルキャンバス入門
 
非開発者のためのアジャイル開発入門
非開発者のためのアジャイル開発入門非開発者のためのアジャイル開発入門
非開発者のためのアジャイル開発入門
 
Yeoman ELT
Yeoman ELTYeoman ELT
Yeoman ELT
 
GCSアジャイル開発を使ったゲームの作り方
 GCSアジャイル開発を使ったゲームの作り方 GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方
 
さわってみよう Firefox OS|デザイナーズハック004
さわってみよう Firefox OS|デザイナーズハック004さわってみよう Firefox OS|デザイナーズハック004
さわってみよう Firefox OS|デザイナーズハック004
 
Xamarin入門(技術というより心構え編)
Xamarin入門(技術というより心構え編)Xamarin入門(技術というより心構え編)
Xamarin入門(技術というより心構え編)
 
テストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornightテストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornight
 
パフォーマンステストいつやる??
パフォーマンステストいつやる??パフォーマンステストいつやる??
パフォーマンステストいつやる??
 
雑食系エンジニアの作りかた
雑食系エンジニアの作りかた雑食系エンジニアの作りかた
雑食系エンジニアの作りかた
 

XP in WF