Contenu connexe
Similaire à Pull Request & TDD 入門 (20)
Pull Request & TDD 入門
- 5. 私がTDDを気に入った背景
2005〜
角谷さん 和田さんに XPやTDDについて、実プロジェクトで指導を受ける
角谷さん 和田さんが抜けた後も、リーダーとしてメンテナンスを続ける
メンテナンスを続ける中で、TDDやテストの自動化の嬉しさを改めて実感
私でも自信を持ってフィーチャの追加や修正ができる
障害対応も落ち着いて対処できる
2012〜
Scrumコーチとして、安井さん、西村さん、天野さんと現場の導入支援
Scrumのフレームワークのみの限界
開発の進め方自体はスクラムでは言及せず。開発チームに任されている。
が、自力のトライアンドエラーでテスト自動化やリファクタリングを使ってリーダブルコードつくれ
る、設計できるようになるまでには時間がかかる
TDDコーチ、テスト自動化の初期導入の依頼を受けることも
5
- 6. 私がPull Requestを気に入った背景
20xx
角谷さんが、海外の一部で注目を浴びていた Pull Request を社内に紹介
社内でも実験的に Pull Request を試すチームが現れる。広がる
XPのチーム内のコードの共同所有の実現手段だけでなく、
チームを超えてのレビューが行われる。Pull Requestのコラボを通じて、
各々のコードを書く力がUPしていくのを目撃。(これは驚きだった)
Pull Requestを見に行けば、開発者がなにをしているかそれとなく分
かる
私も微力ながら Pull Requestを使って、オープンソースへのコミット
できることがわかった
2014
Pull Requestを使った社内開発に携わり、良さを改めて実感。
開発のコーチ時に紹介するようになった。
6
- 21. Pull Request とは?
➤“プルリクエストは、Bitbucket を使った
開発者のコラボレーションを促進する機
能の 1 つです。使いやすい Web イン
ターフェイスで、提案された変更を公式
プロジェクトに統合する前に議論するこ
とができます。”
https://www.atlassian.com/ja/git/workflows#!pull-request
21
- 24. 環境の確認
➤Git のインストール
➤GitHub Accountの作成
➤SSH setting
https://help.github.com/articles/generating-ssh-keys/
➤fork
➤clone
git@github.com:<your id>/tdd-pullrequest-rspec-
exercise1.git
git@github.com:<your id>/tdd-pullrequest-java-
exercise1.git
➤README.mdを参考に Testが実行できるか確認
24
- 26. 基本ステップ(Forkを使う場合)
➤ fork
➤ clone
➤ トピックブランチの作成(テスト追加とバグ修正)
➤ 修正,動作確認
➤ commit
➤ push
➤ Pull Request [GitHub上]
➤ フィードバックコメント [GitHub上]
➤ コメント対応, commit, push (追加修正が必要がなくなるまで)
➤ rebase or merge and push (もし、コンフリクトでMerge できない場合)
➤ Merge[GitHub上] (もし、マージしてOKなら)
26
- 54. [演習3]
➤ スタックをTDDを使って作ってみよう
54
メソッド名 説明
boolean isEmpty() ・スタックが空の場合はtrue、それ以外はfalseを返す
int size() ・スタックに積まれている値の数を取得する
void push(int value) ・引数の値をスタックの一番上に積む
・スタックに積まれている値の数が1つ増える
・スタックには値を10個まで積めること、11個以上積んだ時の
挙動は不定とする(※1)
void pop() ・スタックの一番上の値を取り除く
・スタックに積まれている値の数が1つ減る
・スタックが空のときはEmptyException例外が発生する(※2)
int top() ・スタックの一番上の値を取得する
・スタックに積まれている値の数は変化しない
・スタックが空のときはEmptyException例外が発生する(※2)
演習メモ
※1:内部のデータの持ち方は、配列でもコレクションクラスでもよい。
※2:例外クラスは、独自に定義する。
- 60. TODO
- 誕生
- 生存
先にテストを書いて失敗を確認する
タスクに着手したら
60
➤ 問題を実行可能なテストで明確にするため
(何が実行できたら問題を解いたと言える?)
➤ テスト対象のメソッドの使い方例を明瞭にするため
(クラスやメソッドを利用する人はどう使えると嬉しいだろうか?)
➤ テストが期待通り動作していることを確認するため
➤ 後日にまとめてテストでは、テストが記述が難しい実装に
なってしまうため
(testでassertが書けるように実装するにはどうすればよいだろうか?)
※問題を解く前に問題を明瞭にするのは、問題を解くときのの基本鉄則。テストで表現するのがポイント
※ただしテストファーストに慣れずに手が止まってしまうなら、TDDの制約をゆるめ、“ちょっと実装したら直ぐテストで確認
(つまり何の問題を解いてたのか?をテストで明瞭にしてみよう)”で始めるがオススメ