アジャイル開発とtddを半年間実践してみた顛末と、これから

50
アジャイル開発とTDDを 半年間実践してみた顛末 と、これから 株式会社NIJIBOX @remore PHP Conference Japan 2011 2011/9/10 Sat

Upload: kei-sawada

Post on 30-Jun-2015

16.243 views

Category:

Technology


3 download

DESCRIPTION

PHP Conrefence Japan 2011 Sep 10thでの発表資料 http://phpcon.php.gr.jp/2011/

TRANSCRIPT

Page 1: アジャイル開発とTDDを半年間実践してみた顛末と、これから

アジャイル開発とTDDを半年間実践してみた顛末と、これから

株式会社NIJIBOX@remore

PHP Conference Japan 20112011/9/10 Sat

Page 2: アジャイル開発とTDDを半年間実践してみた顛末と、これから

立ち位置

Page 3: アジャイル開発とTDDを半年間実践してみた顛末と、これから

このセッションが参考になるかもしれない人

• アジャイルにあまり詳しくない人• 身近に「テストコードを書く」とか、「イテレーションで開発しよう」とか言ってる人がいない人

• テストが好きな人• テストコードを書いたりTDDやCIを始めたいので、背中を押してほしい人

• PHPを使った開発現場でアジャイルがどう理解されて採用されているか、事例を知りたい人

Page 4: アジャイル開発とTDDを半年間実践してみた顛末と、これから

このセッションがあまり参考にならないかもしれないので心配な人

• 既にアジャイルな開発をされている方、経験豊富な方

• テストコードとか余裕で書いてる人。autotest使わないと生きていけない人などを含む。

• その他、ギークな方々。例えば、”ギーク”トラックにアジャイル開発のセッションがあっていいの、PHPerしっかり、って思っちゃう鋭い人を含む。

Page 5: アジャイル開発とTDDを半年間実践してみた顛末と、これから

①@remoreとPHP

Page 6: アジャイル開発とTDDを半年間実践してみた顛末と、これから

@remore

2001.4 2011.3

10年間、小さなSIerで受託開発。エンジニアとプロジェクトリーダ。がっつりウォーターフォール

に転職

2011.9

半年前、

• 1982’s、札幌生まれ札幌育ち• 両手両足で収まらない人数で、納品まで1年以上かかる開発をマネジメントしてたことがある程度にはウォーターフォーラー(でした)

Page 7: アジャイル開発とTDDを半年間実践してみた顛末と、これから

http://en.wikipedia.org/wiki/Php

細く長くPHPを愛用

Page 8: アジャイル開発とTDDを半年間実践してみた顛末と、これから

My First Books

Page 9: アジャイル開発とTDDを半年間実践してみた顛末と、これから

Page 10: アジャイル開発とTDDを半年間実践してみた顛末と、これから
Page 11: アジャイル開発とTDDを半年間実践してみた顛末と、これから

現場のスペック• ソーシャルアプリの自社開発がメイン• 開発期間が短い(0.5ヶ月~3ヶ月)• チームメンバーは流動的。プランナ1~2人にエンジニア1~2人が基本体制で、案件によって協力会社さんと共同作業が発生

• 開発中からリリース直前まで仕様変更が発生し、リリース後も仕様変更がある=常に仕様が変わる

• エンドユーザからのフィードバックが早く、その分バグ修正や機能修正にも速いスピードが求められる

Page 12: アジャイル開発とTDDを半年間実践してみた顛末と、これから

考えたこと• この現場でウォーターフォールで開発しても成果が上がらなさそう

• アジャイルやってみるか• 試しに社内勉強会でアジャイルプラクティス読んでみよう

• あわよくばTDDで品質を担保できたりしないの

Page 13: アジャイル開発とTDDを半年間実践してみた顛末と、これから

TDDのコード例

Page 14: アジャイル開発とTDDを半年間実践してみた顛末と、これから

Kent Beck wrote:

TDDは分析技法および設計技法であり、実際には開発のすべてのアクティビティを構造化するための技法である。

テスト駆動開発入門p199

Page 15: アジャイル開発とTDDを半年間実践してみた顛末と、これから

TDDは分析技法および設計技法

Page 16: アジャイル開発とTDDを半年間実践してみた顛末と、これから

②③

Page 17: アジャイル開発とTDDを半年間実践してみた顛末と、これから

実践したこと(の一部)

2011.3 9月

アジャイルプラクティス社内読書会 全10回 完了

いまここ

5月 7月

アジャイルサムライ邦訳レビュー参加

・テストコードを使って既存アプリの改善開発

「PHPを使ったアジャイル開発のLT、読書会とミニワークショップ」開催

・相対見積りで作業計画を作成・テストファーストで新規開発

アジャイルサムライ渋谷道場全6回会場提供、参加

TDDBC1.5参加

Page 18: アジャイル開発とTDDを半年間実践してみた顛末と、これから

実践ビフォーアフター TDD編

• テストコードを書くエンジニアの数:0人⇒5人• 部署のエンジニア30人。全体の17%がテストコードを書くようになった

• TDDを導入している案件数:0⇒3案件• 平均テスト数(assertion数)はわずか300/アプリ• テスト対象のコードは多くないが、それを差し引いてもテストのカバレッジは高くない。今後の課題。

Page 19: アジャイル開発とTDDを半年間実践してみた顛末と、これから

実践ビフォーアフター TDD編

• 運用中のアプリのデグレの報告件数が目に見えて減少• 前よりもよく眠れるようになった(当社比)• 空いたパワーを他の事に使えるようになった• 潜在バグを修正できたりした

Page 20: アジャイル開発とTDDを半年間実践してみた顛末と、これから

実践ビフォーアフター アジャイル編

• 実践前に比べて、仕様変更が容易に• 相対的な見積り(ストーリーポイント)と機能単位での開発(エンドツーエンド)を行うことで、これまでよりも高い精度で仕様変更の影響を見積もれるようになった

• チーム外へ文化の伝播が始まった• ホワイトボードに作業項目を張り出していたら、自然と他のチームでも張り出す文化が始まっていったりした

• その他に、プランニングポーカーやデイリースタンドアップ、インセプションデッキ等も実験的に行って効果を見極めているところ

Page 21: アジャイル開発とTDDを半年間実践してみた顛末と、これから

かかったコスト(TDDについて)• テストコードを書くエンジニア全員(業務時間内)• テストコードを書く時間• 開発環境(PHPUnit)のインストール等準備時間含む• 社内勉強会に参加してもらう時間• @remore(業務時間内+時間外)• 勉強会を開催したり参加したりする• 率先して本を読む

Page 22: アジャイル開発とTDDを半年間実践してみた顛末と、これから

これからの課題(TDDについて)

• TDDが自然に伝播していって、我流すぎるやり方が出てきている

• 社内でTDD講習会を開く• CIが継続できていない• Jenkinsのインストールまでは終わってるけど、ビルドしてテストするプロセスを毎日の業務フローに組み込めていない

• 壊れやすいテストコードを書かないように講習会で指導を進める

Page 23: アジャイル開発とTDDを半年間実践してみた顛末と、これから

④独断と偏見ベースで

Page 24: アジャイル開発とTDDを半年間実践してみた顛末と、これから

Rising The Barアジャイルを学んでいくと、

• より価値のあるソフトウェア作りを求める不断の意思が伝わる

• プラクティスを通じて、色々なことに気付かされる• 例えば僕の場合だと、顧客の考える価値は常に変わる=仕様も常に変わる、という当たり前の事に気付かされた

• それは、ウォーターフォールの世界では”仕様のFIX”という言葉に守られて、顧客に提供することが難しい価値

http://www.flickr.com/photos/scottishathletics/3254776255/

Page 25: アジャイル開発とTDDを半年間実践してみた顛末と、これから

組織的な成功を目指す一助に

• アジャイルなプラクティスたちは、自分から動ける人、肩書きを気にしない人、当事者意識を持って動ける人になるように促してくれる

• 全員で考えるチームを目指せる• コミュニケーションの重要性を絶えず意識できる• 臭いものにフタをするようなマネジメントではなく、顧客を含めたチーム内全員でまずい部分を認識して開発を進める文化が生まれる

Page 26: アジャイル開発とTDDを半年間実践してみた顛末と、これから

いまTDDを学ぶべき理由

• TDDを実践する文化は急にスケールしない• 他の言語と比べるとPHPerにはTDDを使いこなしてる人が多くないみたいでなんとなく悔しい(←

• PHPの中の人は前からテストコード書いてる• テスティングフレームワークやテストコードの書き方の記事も、環境も情報も十分に揃っている。TDD is waiting for you!

Page 27: アジャイル開発とTDDを半年間実践してみた顛末と、これから

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

TIOBE Programming Community Index for August 2011

Page 28: アジャイル開発とTDDを半年間実践してみた顛末と、これから

TDDBCでの使用言語数の比較言語 使用された回数Java 12Ruby 9C# 5

Python 4PHP 4Scala 2

※@remore調べ、2011年8月までの公式情報と参加者のブログを確認して測定※TDDBC/TDDPC佐賀については使用した言語情報が確認できなかったため測定から除外

Page 29: アジャイル開発とTDDを半年間実践してみた顛末と、これから

多分こうなってる(日本だと)

PHPのユーザ総数

TDDやCIの実践者数

ある他の言語

絶対数が多い 絶対数が少ない

Page 30: アジャイル開発とTDDを半年間実践してみた顛末と、これから

実践者数が少ない理由の予想

• 水は低きに流れる?• テストを書きたい人は、テスト書く人が沢山居て、情報がより集約されてるRubyやJavaに流れていってる説

• 必要性を感じている人が少ない?• 利用者がテストを自動化する必要性を感じてないから実践していない説

⇒その恩恵にあずかったことがないのかも。業務で利用する場合は特にその恩恵は大きいはずなんだけど…

Page 31: アジャイル開発とTDDを半年間実践してみた顛末と、これから

Kent Beck wrote:

保守的な登山家は4本の手足のうち、必ず3本は地面につけるという習慣を持っている。1度2本を動かすというダイナミックな動きは、遥かに危険である。

テスト駆動開発入門p124

Page 32: アジャイル開発とTDDを半年間実践してみた顛末と、これから

Page 33: アジャイル開発とTDDを半年間実践してみた顛末と、これから

オススメの導入方法=価値の説明方法

• まず、押し付けない• 言葉でも用語でもなく、手法の中身と価値を説明する

• 横文字を使わない• 無意識にアジャイルに開発できてる人やチームにああだこうだ余計な事を言わない

• 使えそうなプラクティスから使う• 学習コストを常に意識する

Page 34: アジャイル開発とTDDを半年間実践してみた顛末と、これから

ウォーターフォールの現場でもアジャイル開発を学ぶ意義は大きい

アジャイル ウォーターフォールデイリースタンドアップ 朝会レトロスペクティブ プロジェクト完了報告、総括

見積りは不確かであることを前提とする

スケジュールに必ずバッファを読む

イテレーション、インクリメント長期に渡るスケジュールでは、マイルストーンを小刻みに設定する

時間、予算、品質を固定してスコープを可変にする

提案時に、時間・予算・品質を詳細に定義して前提条件として盛り

込む

ウォーターフォールの開発現場のプラクティスは、アジャイルで深く研究されている

Page 35: アジャイル開発とTDDを半年間実践してみた顛末と、これから

TDDことはじめ<テスティングフレームワーク選び>

• PHPUnit:大本命。テストコードの規模が大きくなるならこの一択。なんだかんだ見やすいテストコードが書けるし、情報も豊富。

• limeやSimpleTest:PEAR非依存なのでインストール不要=わずかだけど初期導入コストが低いといえば低い。中小規模の開発やテスト文化の定着のためであれば利用は大アリ

• その他のテスティングフレームワーク:もやし日記さんのまとめが分かりやすいです

• http://d.hatena.ne.jp/p4life/20080314

Page 36: アジャイル開発とTDDを半年間実践してみた顛末と、これから

TDDことはじめ<教材選びと勉強会>

• とりあえずKent Beckのテスト駆動開発入門を読む

• 余力があれば次にgoos本を(Growing Object-Oriented Software, Guided By Tests)

• 社内でテストコードを書いてみる会を開催してみたり、TDDBCが開催されていたら参加してみる

• この後の@yamashiroのセッションもお聞き逃しなく!

Page 37: アジャイル開発とTDDを半年間実践してみた顛末と、これから

TDDの導入は挫折の連続

• TDDつまづくあるある• 実際のソースコードがテストコードが無い状態(レガシーコード)の場合にどこからテストを始めればよいかわからない問題

• テストコードを書く時間分生産性が低下する問題など• 自分なりの乗り越え方のまとめ• http://www.slideshare.net/keiswd/tddtdd

Page 38: アジャイル開発とTDDを半年間実践してみた顛末と、これから

最後に大切なこと

Page 39: アジャイル開発とTDDを半年間実践してみた顛末と、これから
Page 40: アジャイル開発とTDDを半年間実践してみた顛末と、これから

価値のあるソフトウェアを早く継続的に

顧客に提供するということ

Page 41: アジャイル開発とTDDを半年間実践してみた顛末と、これから

大切な事に気付かせてくれる2冊

Page 42: アジャイル開発とTDDを半年間実践してみた顛末と、これから

SpecialThanksTo

Page 43: アジャイル開発とTDDを半年間実践してみた顛末と、これから

@kakutani @t_wada

Page 44: アジャイル開発とTDDを半年間実践してみた顛末と、これから

渋谷の先輩方と仲間

Page 45: アジャイル開発とTDDを半年間実践してみた顛末と、これから

@bokusamahttp://farm3.static.flickr.com/2485/4101436288_3eb6f90ed8_b.jpg

Page 46: アジャイル開発とTDDを半年間実践してみた顛末と、これから

おまけ

Page 47: アジャイル開発とTDDを半年間実践してみた顛末と、これから

付ろく。参考文献• 三周遅れのXP• http://www.slideshare.net/yoshiori/xp-3242327• 読んでおくべきテスト関係のTL• http://togetter.com/li/5878• http://togetter.com/li/6759• http://togetter.com/li/6923• 本を読むならアジャイルプラクティスとアジャイルサムライが断然オススメ

Page 48: アジャイル開発とTDDを半年間実践してみた顛末と、これから

もっとアジャイルサムライ

• アジャイルサムライのwikiを参照• 全国各地で読書会(道場)が開催されてる• アジャイルサムライのwikiもごひいきに• https://github.com/agile-samurai-ja/support/wiki/AgilesamuraiDojo

• アジャイルサムライを読んだあなたも、これから読んでみようと思ってるあなたも、9/18(日)のアジャイルサムライ他流試合もお見逃しなく

• http://atnd.org/events/19733

Page 49: アジャイル開発とTDDを半年間実践してみた顛末と、これから

人材募集(おやくそく)

• NIJIBOXでは、Unityやりたい人を募集してます←• PHP使える人ももちろん歓迎なんですが、今回はJavascript使いの募集

• ※9/10時点の情報です• 興味のある方は下記URLでチェックしてみて下さい• http://nijibox.jp/unity/

Page 50: アジャイル開発とTDDを半年間実践してみた顛末と、これから

おしまい