SlideShare a Scribd company logo
TDDを実践してわかった
 TDDつまづくあるあると
自分なりの乗り越え方まとめ

    @remore
今日、
 僕たちが
経験すること
Kent Beck wrote:

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

 テスト駆動開発入門
    p199
「TDDは分析技法
および設計技法」
「TDD=テスト
  ファースト?」
「テストコードを書く
  だけでしょ?」
____
      /⌒ ⌒\
  /( ●) (●)\
/::::::⌒(__人__)⌒::::: \   簡単だお!
|        |r┬-|        |
\         `ー'´      /


       3か月前の@remore
____
      /⌒ ⌒\
  /( ●) (●)\
/::::::⌒(__人__)⌒::::: \   簡単だお!
|        |r┬-|        |
\         `ー'´      /


後に現実を知ることになります
今日はTDDをケントベッ
クのテスト駆動開発入門
    で学んだ後、
僕の前に⽴ちはだかった
  いくつかの現実と、
僕がそれをどう乗り越え
 てきたかを紹介します
※この物語は
割とノンフィ
クションです
@remoreについて
• ニジボックスでソーシャルアプリ開発
• アジャイルな開発手法の導入を進めてる
• 3か月前の自分:
 – TDDは実践経験なし
  • テスト駆動開発入門を読んだ知識だけ
 – PHPUnitのインストール方法と簡単な使い方
   はネットで調べて知った程度
TDD修行
         TDD修行の旅
            修行の

          ??????          |
                          ■
                         ■■
レガシーコード山脈
レガシーコード山脈               ■■■
           ▲▲▲▲▲
              ▲ ▲     ?????
                      ???????
   ▲ ▲ ▲ ▲▲▲ ▲ ▲ ▲▲
   ▲ ▲ ▲▲ ▲ ▲
    ▲ ▲ ▲       ▲
     ▲ ▲ ▲     ▲ ▲
      ▲ ▲ ▲ ▲▲▲ ▲
      ▲ ▲
       ▲ ▲      ▲
        ▲     ▲ ▲
           ▲▲ ▲ ▲
            ▲ ▲
             ▲ ▲▲
              ▲ ▲▲
               ▲ ▲▲
 ▽スタート地点
  スタート地点       ▲ ▲▲
                ▲
レガシーコード山脈
• テストコードのない実装が山のようにあ
  る。
• 山の住⺠はソースコードの変更をした後、
  周辺を含めて何も壊れていないことをき
  ちんと確認する。そのあとは、結果がう
  まくいくことを祈りながら暮らしている
  と言われている
僕が登った山
• 自社MVCフレームワークを使ったソー
  シャルアプリのレガシーコード
• 言語はPHP
• ソースコードは10万⾏
 – フレームワーク部分を除いて、Model,
   Controller, Viewだけなら4000⾏くらい
  ※有効コード⾏数ベース
• テストコード⾏数は0
TDDつまづくあるある①

レガシーコード(テストコードのな
い実装)の山を目の当たりにして戦
意を喪失する。
(TDDをどのように現実の問題に適
用すればよいか、妙案が浮かばずに
途方に暮れている状態)
あると思います
(ありました)
考え方:我流でGO
絶対的に正しいTDDの適用方法を知りたくなるのは人情だけど、多分状況は千
差万別なので、それを始めから⾒つけるのは困難。

失敗して傷つきながら自分なりのプラクティスを作っていく:

•   MVCモデルでテストコードってどこから書けば良いのか
    – Model → Controller → Viewの順番でテストコードを書いていく方針でやってます

•   Controllerにかなりロジックがあって、テストできない部分が多い
    – これ、地味にかなりヘコみます・・「面倒くさっ」ってなる
    – まあ、Bad Designてことですよね。リファクタリングしないとね。Modelにテスト
      コード書き終わったらやろう。
    – テストコードを書きながら、Modelにコードを移していくイメージ

•   Viewのテストコードはどうしようかな
    – 仕組み上難しい場合も多そう(viewの中でechoしてたりだとか)
    – @remoreの場合は、Viewにはテストコードを書いていない。(その代わりソース
      コードレビュー他の設計技法は適用)
時間がかかりやすいところ
•   Modelのコードだけテストしようとしたけど、フレームワークの初期化処
    理を経由しないとModelに配置されてるオブジェクトを使えなかった
    – PHPUnitからModelを呼び出すために、テスティングフレームワーク内に、フレーム
      ワークの初期化処理だけを抜き出したphpスクリプトを新たに用意した
       •   バッドノウハウでごめんなさい


•   テストを実⾏する度に、テストコードから呼び出したModelのメソッドに
    よってDBのレコードが変化していくので、何も考えないでテストを書いて
    いくと、直前に成功していたテストコードが通らなったりする
    – setUp()とtearDown()を活用して、どんな環境でも失敗しないフィクスチャを作る
    – 例:
       •   setUp()で前回挿入したレコードを削除する
       •   テストコード内で使用するユーザ情報も設定しておく
    – Datasetを比較するほど細かく内容をテストすることが現実的だと思えなかったので、
      PHPUnitのデータベーステスト(PHPUnit/Extensions/Database/Testcase.php=
      DbUnitのポーティングを利用)はやらなかった
    – StubやMockは使っていない
       •   初めから使うことを想定して設計しておかないと使いづらい印象
細かいけど書いておきたいこと

• PHPUnitだと、1テストファイルに1テストクラス
  (PHPUnit_Framework_TestCaseの継承)しか書けない(っぽ
  い)
  – テストファイルを”*Test.php”っていうファイル名にしておけば、
    phpunitコマンド実⾏時にフォルダ名を渡すことでフォルダ内全体(ネ
    ストされているフォルダ含む)をテストしてくれる

• コードの可読性を重視して、テスト関数名に日本語でテストの目的
  を書いておくのがオススメ(文字コードはUTF-8であればテスト実
  ⾏可能)
TDD修行
         TDD修行の旅
            修行の

           生産性の
           生産性の谷          |
                          ■
                         ■■
レガシーコード山脈
レガシーコード山脈               ■■■
           ▲▲▲▲▲
              ▲ ▲     ?????
                      ???????
   ▲ ▲ ▲ ▲▲▲ ▲ ▲ ▲▲
   ▲ ▲ ▲▲ ▲ ▲
    ▲ ▲ ▲       ▲
     ▲ ▲ ▲     ▲ ▲
      ▲ ▲ ▲ ▲▲▲ ▲
      ▲ ▲
       ▲ ▲      ▲
        ▲     ▲ ▲
           ▲▲ ▲ ▲
            ▲ ▲
             ▲ ▲▲
              ▲ ▲▲
               ▲ ▲▲
 ▽スタート地点
  スタート地点       ▲ ▲▲
                ▲
生産性の谷

• レガシーコード山脈の難所の一つ
• 谷には開発者の不安を取り除くことができ
  る財宝が眠っていると言われている
• 「テストコードは要らない。最速で実装を
  終えよう。」という言い伝えを守り、山の
  住人はこの谷には近づかずに生活している
僕が落ちた谷
• 明らかに開発速度が落ちた
 – この時期は「@remoreさん、今何してんすか?」と
   いうリーダーからの問いに答えるのが怖かった

• 一時期、TDDから離れみたが、TDDをしないこと
  によって、テストコードが取り除いてくれていた
  不安が確かにあったことに気付かされた

• まあ、結局、開発速度が遅くなるのは自分が経験
  不⾜なだけ
TDDつまづくあるある②

思ったよりもテストコードを書くと
開発が遅くなって(なったように感
じて)しまい、戦意を喪失する。
(TDDをやった方がいいと頭ではわ
かっていても、スキルが無いが為に
テストコードを書かない方がローリ
スクだと思い込んでしまう状態)
あると思います
(ありました)
とにかく経験値を積む[書き方編]
@remoreの場合、こんな経験を積んでいきました

• 例題演習
 – ケントベックのテスト開発入門を写経したり
   • 三角形を判定する関数をTDDで書いたり
   • 演習問題と解答例をgithubに置いてます。
     – https://github.com/remore/StudyTDD
 – FizzBuzz()をTDDで書いたり
• 業務でレガシーコードにテストコードを追加した
  り
• 新しく開発したツールやアプリにテストコードを
  書いていったり
とにかく経験値を積む[運用編]
• 環境構築
 – Jenkinsのインストールを繰り返し⾏った
 – PhingやXdebugも使ってみた
 – PHPUnit以外のテスティングフレームワーク
   も試してみた
  • PEAR非依存のlimeやSimpleTestならインストー
    ルにつまづくこともなくてこちらもオススメ
• 必要だった覚悟とか
 – 開発効率が下がったと思った分は残業してで
   も同じパフォーマンスを出すつもりでやる
もがいているうちに
 費用対効果について考え出した
• テストコードは1メソッドに対して1テストするだけで
  も違う
 – 「TDDは分析技法および設計技法」
 – 1メソッドが無理なら、1つのクラスに対して1つテスト
   コードを書くだけでも全然違う
   • テストファーストをガリガリ回すのとは違っちゃうけど
 – 何が違うかというと、こんなことを確認させてくれる(テ
   スト駆動開発入門 p126より抜粋)
   • 機能はどこに所属するのか。既存のメソッドの修正なのか、既
     存クラスの新規メソッドなのか、新しい場所に実装される既存
     のメソッドなのか、新規クラスなのか。
   • どのような名前をつけるべきなのか
   • 正しい答をどのようにチェックするのか
   • 正しい答えは何か
   • このテストから他のどのテストが提案されるのか
費用対効果について
       いま考えていること
• 作成するテストのパターンとボリュームは柔軟に考えればよい
 – Kent Beckは「条件分岐、ループ、操作、多相性」の4つをテストする
   ことを推奨しているけどね
 – 無理にテストコードを追加しすぎると、テストコード地獄(書いても
   書いても終わらない)にハマる
 – でも自分の中の不安は無視しちゃダメ

• 例えば、デグレが頻出してる部分だけテストコードを書きながらリ
  ファクタリングしてみるとか
 – いきなり全部リファクタリングしようとしないこと。コードの量が⼤
   きい場合は、十分に小さいサイズにリファクタすることで分割しなが
   らテストコードを追加していく。

• それとか、他の設計手法を交えることで割り切ることも時に有効
 – 例:Viewのコードは不安が少ないからテストコードは書かずにソース
   コードレビューだけしておこう
TDD修行
         TDD修行の旅
            修行の

           生産性の
           生産性の谷         |
                         ■
                        ■■
レガシーコード山脈
レガシーコード山脈              ■■■
           ▲▲▲▲▲
              ▲ ▲     自己満足の
                      自己満足の砦
   ▲ ▲ ▲ ▲▲▲ ▲ ▲ ▲▲
   ▲ ▲ ▲▲ ▲ ▲
    ▲ ▲ ▲       ▲
     ▲ ▲ ▲     ▲ ▲
      ▲ ▲ ▲ ▲▲▲ ▲
      ▲ ▲
       ▲ ▲      ▲
        ▲     ▲ ▲
           ▲▲ ▲ ▲
            ▲ ▲
             ▲ ▲▲
              ▲ ▲▲
               ▲ ▲▲
 ▽スタート地点
  スタート地点       ▲ ▲▲
                ▲
自己満足の砦
• 無関心と自信喪失に満ちた砦
• レガシーコード山脈を越えると⾒えてくる
• どんなに速くテストコードを書いても、テスト
  コードのおかげで潜在的なバグを修正できても、
  複雑に作られた自己満足の砦を抜け出すことは困
  難と言われている
• テストコードが通らなくて時間をとられてしまい、
  自信を失い、心が折れる旅人も多い
意外に多くの勇者が一人で燃え尽
  きてるんじゃないか説
• 自己満足という側面
 – どんなに速くテストコードを書いても、
 – テストコードのおかげで潜在的なバグを修正できても
 – 誰にも褒められない

• 自信を失いやすいという側面
 – テストコードが通らない時間は単純に苦痛
 – テストが通らない(=レッド)まま数時間使ってしまった
   時の無⼒感は異常

• 理想に燃えて始めたはずのTDD。その理想が仇になっ
  て、理想と現実のギャップがここでボディーブローの
  ようにきいてくる
TDDつまづくあるある③

かけた努⼒の割に報われ難いように
思い込んでしまい、次第に戦意を喪
失していく。
(上手に説明しないと他人からは理
解されにくいことがままあって、や
さぐれてるうちに次第に熱が冷めて
元のレガシーな頭に戻っていく)
あると思います
(ありました)
アウトプットを心がける
• 誰かに話す(共感してもらう)
 – 会社でTDDしててつまづいたら同僚に
   • そしてテストコードを追加したいと思ってくれるチームのリー
     ダーやメンバー、同僚、勉強会の皆さんに感謝を
 – プライベートの開発でつまづいたら勉強会で
   • というわけで、僕のここ数か月のつまづきをお話しさせても
     らって英気を養ってます。TDDBC in Tokyoの皆さんありがと
     うございます。
 – 勉強会を主催しちゃうのも一つの手

• 成果を上手にアピールする
 – Assertを追加したテストコードをリポジトリにcommitす
   る時、堂々と”25Assert追加”のようにコメントに書く事
   を習慣化する
 – 勉強会でLTさせてもらったりブログを書いて反響を頂いた
   り
アウトプットする前に燃え尽きて
 しまいそうな時に読む精神論
• TDDはレッド、グリーン、リファクタリング
  のリズムが⼤事。だけど、リズムが壊れたか
  らといって自分の能⼒が低いわけじゃないと
  開き直れるかどうか。
• レッドの場合、自分が書いたコードに問題が
  ある場合が実際に多い。つまり、現実と向き
  合えるかどうかが問われる。
• 問題を先延ばしにしない強い心を。
• 焦らないでOK。初めは時間がかかるものと
  心得て、みんなで強い意志で取り組む。
最近の僕のTDD使い方まとめ
• レガシーコードと泥臭く戦う。
 – MVCならModelから少しずつ
 – Contorllerに残ってるコードはテストコードを書きながらリファクタリ
   ングしていく(=仕様化テストの導入)

• 自分の経験不足を言い訳にしない
 – テストコードを書くと生産性が落ちるのは自分のせい
 – 書くテストコードの量は、1パターンでも書くと全然違う
 – TDDで戦うところとそうでないところ、割り切りも⼤事

• 一人で戦わない。仲間と戦う。
 – 孤独との戦いもある
 – レッド、グリーン、リファクタリングのリズムが崩れてもファイティ
   ングポーズをとれるか。
 – つらかったら話を聞いてもらうだけでも違う
[付録] 読んでおくべき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

More Related Content

What's hot

リーン開発の本質 公開用
リーン開発の本質 公開用リーン開発の本質 公開用
リーン開発の本質 公開用
ESM SEC
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
 
5分で解るセキュアコーディング
5分で解るセキュアコーディング5分で解るセキュアコーディング
5分で解るセキュアコーディング
Yasuo Ohgaki
 
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
増田 亨
 
大企業アジャイルの勘所(ver1.1) #アジャイルマネジメントセミナー
大企業アジャイルの勘所(ver1.1) #アジャイルマネジメントセミナー大企業アジャイルの勘所(ver1.1) #アジャイルマネジメントセミナー
大企業アジャイルの勘所(ver1.1) #アジャイルマネジメントセミナー
Itsuki Kuroda
 
MySQLアーキテクチャ図解講座
MySQLアーキテクチャ図解講座MySQLアーキテクチャ図解講座
MySQLアーキテクチャ図解講座
Mikiya Okuno
 
クソコード動画「Managerクラス」解説
クソコード動画「Managerクラス」解説クソコード動画「Managerクラス」解説
クソコード動画「Managerクラス」解説
MinoDriven
 
はじめてのPRD
はじめてのPRDはじめてのPRD
はじめてのPRD
Takuya Oikawa
 
インセプションデッキ: やらないことリストと トレードオフスライダーをやってる話
インセプションデッキ:やらないことリストとトレードオフスライダーをやってる話インセプションデッキ:やらないことリストとトレードオフスライダーをやってる話
インセプションデッキ: やらないことリストと トレードオフスライダーをやってる話
Nobuhiro Yoshitake
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
 
プロダクトの強い軸を作るプロダクトマネジメントフレームワーク
プロダクトの強い軸を作るプロダクトマネジメントフレームワークプロダクトの強い軸を作るプロダクトマネジメントフレームワーク
プロダクトの強い軸を作るプロダクトマネジメントフレームワーク
kumiko koshiro
 
ペアプログラミング ホントのところ
ペアプログラミング ホントのところペアプログラミング ホントのところ
ペアプログラミング ホントのところ
Takuto Wada
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
 
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜
Yoshiki Nakagawa
 
イベント・ソーシングを知る
イベント・ソーシングを知るイベント・ソーシングを知る
イベント・ソーシングを知るShuhei Fujita
 
5分でわかった気になるインセプションデッキ
5分でわかった気になるインセプションデッキ5分でわかった気になるインセプションデッキ
5分でわかった気になるインセプションデッキTakao Oyobe
 
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかDDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
 
ウォーターフォールとアジャイルを考える #ita_ws
ウォーターフォールとアジャイルを考える #ita_wsウォーターフォールとアジャイルを考える #ita_ws
ウォーターフォールとアジャイルを考える #ita_ws
Yusuke Suzuki
 
Hack言語に賭けたチームの話
Hack言語に賭けたチームの話Hack言語に賭けたチームの話
Hack言語に賭けたチームの話
Yuji Otani
 

What's hot (20)

リーン開発の本質 公開用
リーン開発の本質 公開用リーン開発の本質 公開用
リーン開発の本質 公開用
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
5分で解るセキュアコーディング
5分で解るセキュアコーディング5分で解るセキュアコーディング
5分で解るセキュアコーディング
 
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
 
大企業アジャイルの勘所(ver1.1) #アジャイルマネジメントセミナー
大企業アジャイルの勘所(ver1.1) #アジャイルマネジメントセミナー大企業アジャイルの勘所(ver1.1) #アジャイルマネジメントセミナー
大企業アジャイルの勘所(ver1.1) #アジャイルマネジメントセミナー
 
MySQLアーキテクチャ図解講座
MySQLアーキテクチャ図解講座MySQLアーキテクチャ図解講座
MySQLアーキテクチャ図解講座
 
クソコード動画「Managerクラス」解説
クソコード動画「Managerクラス」解説クソコード動画「Managerクラス」解説
クソコード動画「Managerクラス」解説
 
はじめてのPRD
はじめてのPRDはじめてのPRD
はじめてのPRD
 
インセプションデッキ: やらないことリストと トレードオフスライダーをやってる話
インセプションデッキ:やらないことリストとトレードオフスライダーをやってる話インセプションデッキ:やらないことリストとトレードオフスライダーをやってる話
インセプションデッキ: やらないことリストと トレードオフスライダーをやってる話
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
 
プロダクトの強い軸を作るプロダクトマネジメントフレームワーク
プロダクトの強い軸を作るプロダクトマネジメントフレームワークプロダクトの強い軸を作るプロダクトマネジメントフレームワーク
プロダクトの強い軸を作るプロダクトマネジメントフレームワーク
 
ペアプログラミング ホントのところ
ペアプログラミング ホントのところペアプログラミング ホントのところ
ペアプログラミング ホントのところ
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
 
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜
 
イベント・ソーシングを知る
イベント・ソーシングを知るイベント・ソーシングを知る
イベント・ソーシングを知る
 
5分でわかった気になるインセプションデッキ
5分でわかった気になるインセプションデッキ5分でわかった気になるインセプションデッキ
5分でわかった気になるインセプションデッキ
 
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかDDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
 
ウォーターフォールとアジャイルを考える #ita_ws
ウォーターフォールとアジャイルを考える #ita_wsウォーターフォールとアジャイルを考える #ita_ws
ウォーターフォールとアジャイルを考える #ita_ws
 
Hack言語に賭けたチームの話
Hack言語に賭けたチームの話Hack言語に賭けたチームの話
Hack言語に賭けたチームの話
 

Viewers also liked

ユニットテストの保守性を作りこむ, xpjugkansai2011
ユニットテストの保守性を作りこむ, xpjugkansai2011ユニットテストの保守性を作りこむ, xpjugkansai2011
ユニットテストの保守性を作りこむ, xpjugkansai2011H Iseri
 
アジャイル開発とTDDを半年間実践してみた顛末と、これから
アジャイル開発とTDDを半年間実践してみた顛末と、これからアジャイル開発とTDDを半年間実践してみた顛末と、これから
アジャイル開発とTDDを半年間実践してみた顛末と、これから
Kei Sawada
 
Tokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテストTokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテストYohei Sato
 
テスト駆動開発入門
テスト駆動開発入門テスト駆動開発入門
テスト駆動開発入門
Shuji Watanabe
 
TDDBC Fukuoka Day1
TDDBC Fukuoka Day1TDDBC Fukuoka Day1
TDDBC Fukuoka Day1
Takuto Wada
 
AWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline
AWS Black Belt Tech シリーズ 2015 - AWS Data PipelineAWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline
AWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline
Amazon Web Services Japan
 

Viewers also liked (6)

ユニットテストの保守性を作りこむ, xpjugkansai2011
ユニットテストの保守性を作りこむ, xpjugkansai2011ユニットテストの保守性を作りこむ, xpjugkansai2011
ユニットテストの保守性を作りこむ, xpjugkansai2011
 
アジャイル開発とTDDを半年間実践してみた顛末と、これから
アジャイル開発とTDDを半年間実践してみた顛末と、これからアジャイル開発とTDDを半年間実践してみた顛末と、これから
アジャイル開発とTDDを半年間実践してみた顛末と、これから
 
Tokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテストTokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテスト
 
テスト駆動開発入門
テスト駆動開発入門テスト駆動開発入門
テスト駆動開発入門
 
TDDBC Fukuoka Day1
TDDBC Fukuoka Day1TDDBC Fukuoka Day1
TDDBC Fukuoka Day1
 
AWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline
AWS Black Belt Tech シリーズ 2015 - AWS Data PipelineAWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline
AWS Black Belt Tech シリーズ 2015 - AWS Data Pipeline
 

Similar to TDDを実践してわかったTDDつまづくあるあると自分なりの乗り越え方まとめ

Sue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hackSue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hack
Go Sueyoshi (a.k.a sue445)
 
Grand Strategy For Presentation
Grand Strategy For PresentationGrand Strategy For Presentation
Grand Strategy For Presentation
bash0C7
 
リーダブルコードを読んだ後
リーダブルコードを読んだ後リーダブルコードを読んだ後
リーダブルコードを読んだ後
Kouhei Sutou
 
Tddのすゝめ
TddのすゝめTddのすゝめ
Tddのすゝめ
将 高野
 
リーダブルコード 1.0'
リーダブルコード 1.0'リーダブルコード 1.0'
リーダブルコード 1.0'
Yamamura Takashi
 
DDDをScrumで廻す あるいは ScrumをDDDで廻す
DDDをScrumで廻す あるいは ScrumをDDDで廻す DDDをScrumで廻す あるいは ScrumをDDDで廻す
DDDをScrumで廻す あるいは ScrumをDDDで廻す
Kiro Harada
 
TDD を自分の道具にしよう
TDD を自分の道具にしようTDD を自分の道具にしよう
TDD を自分の道具にしよう
Yuji Okazawa
 
Node js 入門
Node js 入門Node js 入門
Node js 入門
Satoshi Takami
 
マジカルsvnとキュアgit
マジカルsvnとキュアgitマジカルsvnとキュアgit
マジカルsvnとキュアgit
Takafumi ONAKA
 
nseg第5回勉強会
nseg第5回勉強会nseg第5回勉強会
nseg第5回勉強会ko ty
 
TDDはじめる前に
TDDはじめる前にTDDはじめる前に
TDDはじめる前に
Yasui Tsutomu
 
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく
Ryo Mitoma
 
KDDI Business ID におけるアジャイル開発と検証フロー
KDDI Business ID におけるアジャイル開発と検証フローKDDI Business ID におけるアジャイル開発と検証フロー
KDDI Business ID におけるアジャイル開発と検証フロー
ques_staff
 
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~Tomomi Kajita
 
仕様七変化
仕様七変化仕様七変化
仕様七変化
galluda
 
とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方
Yusuke Wada
 
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
Masahiro Wakame
 

Similar to TDDを実践してわかったTDDつまづくあるあると自分なりの乗り越え方まとめ (20)

Sue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hackSue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hack
 
Grand Strategy For Presentation
Grand Strategy For PresentationGrand Strategy For Presentation
Grand Strategy For Presentation
 
リーダブルコードを読んだ後
リーダブルコードを読んだ後リーダブルコードを読んだ後
リーダブルコードを読んだ後
 
Tddのすゝめ
TddのすゝめTddのすゝめ
Tddのすゝめ
 
TDDを研ぎ究める
TDDを研ぎ究めるTDDを研ぎ究める
TDDを研ぎ究める
 
リーダブルコード 1.0'
リーダブルコード 1.0'リーダブルコード 1.0'
リーダブルコード 1.0'
 
DDDをScrumで廻す あるいは ScrumをDDDで廻す
DDDをScrumで廻す あるいは ScrumをDDDで廻す DDDをScrumで廻す あるいは ScrumをDDDで廻す
DDDをScrumで廻す あるいは ScrumをDDDで廻す
 
TDD を自分の道具にしよう
TDD を自分の道具にしようTDD を自分の道具にしよう
TDD を自分の道具にしよう
 
Node js 入門
Node js 入門Node js 入門
Node js 入門
 
マジカルsvnとキュアgit
マジカルsvnとキュアgitマジカルsvnとキュアgit
マジカルsvnとキュアgit
 
nseg第5回勉強会
nseg第5回勉強会nseg第5回勉強会
nseg第5回勉強会
 
TDDはじめる前に
TDDはじめる前にTDDはじめる前に
TDDはじめる前に
 
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく
 
KDDI Business ID におけるアジャイル開発と検証フロー
KDDI Business ID におけるアジャイル開発と検証フローKDDI Business ID におけるアジャイル開発と検証フロー
KDDI Business ID におけるアジャイル開発と検証フロー
 
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
 
仕様七変化
仕様七変化仕様七変化
仕様七変化
 
とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方
 
資料
資料資料
資料
 
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
 
java-ja TDD 2nd
java-ja TDD 2ndjava-ja TDD 2nd
java-ja TDD 2nd
 

Recently uploaded

FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 

Recently uploaded (16)

FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 

TDDを実践してわかったTDDつまづくあるあると自分なりの乗り越え方まとめ