tdd boot camp福岡2日目
Post on 21-May-2015
3.216 Views
Preview:
DESCRIPTION
TRANSCRIPT
TDD Boot Camp福岡2日目
bleis-tift
March 20, 2011
はじめに
そのまえに
この資料は LATEXを使って書かれています画像はスクリーンショットや写真以外 SVG
何が嬉しいのって?そりゃGitで管理できること、ですかね
そのまえに
この資料は LATEXを使って書かれています
画像はスクリーンショットや写真以外 SVG
何が嬉しいのって?そりゃGitで管理できること、ですかね
そのまえに
この資料は LATEXを使って書かれています画像はスクリーンショットや写真以外 SVG
何が嬉しいのって?そりゃGitで管理できること、ですかね
そのまえに
この資料は LATEXを使って書かれています画像はスクリーンショットや写真以外 SVG
何が嬉しいのって?そりゃGitで管理できること、ですかね
はじめに
なんでTDDBCでGit?
→Git(DVCS)とTDDの相性が非常に良いから
ちなみに、昨日バージョン管理システムを使っていたペアっていますか?
はじめに
なんでTDDBCでGit?→Git(DVCS)とTDDの相性が非常に良いから
ちなみに、昨日バージョン管理システムを使っていたペアっていますか?
はじめに
なんでTDDBCでGit?→Git(DVCS)とTDDの相性が非常に良いから
ちなみに、昨日バージョン管理システムを使っていたペアっていますか?
今日話すこと
TDDとの出会い、Gitとの出会いTDD Boot Camp歴DVCS/GitについてGitを使ったTDDの流れ
今日話すこと
TDDとの出会い、Gitとの出会いTDD Boot Camp歴DVCS/GitについてGitを使ったTDDの流れ
自分の中のTDDの基礎を固めてくれた本 3冊
高専3年
内容はすでに古い今風に書き直されないだろうか・・・
高専4年
今も色あせない素敵な本初版と第二版で表紙は変わったけど中身はほぼ同じ
社会人2年目
本家迷ったらとりあえず従っておく
共通点
メソッドベースのテストよりも、シナリオベースのテストに焦点を当てている
当時使っていたVCS
CVSや SVNやVSS
→ 1チケット 1コミット→コミットよりも小さい粒度はエディタの「元に戻す」機能でカバー→カバーできずに死ぬ
当時使っていたVCS
CVSや SVNやVSS→ 1チケット 1コミット
→コミットよりも小さい粒度はエディタの「元に戻す」機能でカバー→カバーできずに死ぬ
当時使っていたVCS
CVSや SVNやVSS→ 1チケット 1コミット→コミットよりも小さい粒度はエディタの「元に戻す」機能でカバー
→カバーできずに死ぬ
当時使っていたVCS
CVSや SVNやVSS→ 1チケット 1コミット→コミットよりも小さい粒度はエディタの「元に戻す」機能でカバー→カバーできずに死ぬ
不満と疑問
コミットによってTDDのリズムが崩されるコミットよりも小さい粒度の作業をやり直すのが面倒1チケット 1コミットは適切なのか?
Gitとの出会い
2009年9月
Gitとの出会い
PM「今回開発拠点が分散してるから分散バージョン管理システムとかいうの使うことにしたから」
Gitとの出会い
PM「選定しといて」
Gitとの出会い
俺「えっ」
Gitとの出会い
候補:svk、Git、Mercurial
Gitとの出会い
とりあえず本も 2冊出ているし、Git使ってみようえ、ちょっ、はええぇぇぇ!入門Gitと入門 git速攻購入BetterSVNとしてGitを使い始める1チケット 1トピックブランチがいいと思い始める
Gitとの出会い
とりあえず本も 2冊出ているし、Git使ってみよう
え、ちょっ、はええぇぇぇ!入門Gitと入門 git速攻購入BetterSVNとしてGitを使い始める1チケット 1トピックブランチがいいと思い始める
Gitとの出会い
とりあえず本も 2冊出ているし、Git使ってみようえ、ちょっ、はええぇぇぇ!
入門Gitと入門 git速攻購入BetterSVNとしてGitを使い始める1チケット 1トピックブランチがいいと思い始める
Gitとの出会い
とりあえず本も 2冊出ているし、Git使ってみようえ、ちょっ、はええぇぇぇ!入門Gitと入門 git速攻購入
BetterSVNとしてGitを使い始める1チケット 1トピックブランチがいいと思い始める
Gitとの出会い
とりあえず本も 2冊出ているし、Git使ってみようえ、ちょっ、はええぇぇぇ!入門Gitと入門 git速攻購入BetterSVNとしてGitを使い始める
1チケット 1トピックブランチがいいと思い始める
Gitとの出会い
とりあえず本も 2冊出ているし、Git使ってみようえ、ちょっ、はええぇぇぇ!入門Gitと入門 git速攻購入BetterSVNとしてGitを使い始める1チケット 1トピックブランチがいいと思い始める
ターニングポイント
2009/10/11名古屋Ruby会議01
名古屋Ruby会議01
和田さんと初めて会う色々問い詰める(ぉ
1チケット 1コミットってどうなんですか?1チケット 1トピックブランチでいいんでしょうか?などなど
その時見せてもらったコミットグラフに衝撃を受ける
名古屋Ruby会議01
和田さんと初めて会う
色々問い詰める(ぉ
1チケット 1コミットってどうなんですか?1チケット 1トピックブランチでいいんでしょうか?などなど
その時見せてもらったコミットグラフに衝撃を受ける
名古屋Ruby会議01
和田さんと初めて会う色々問い詰める(ぉ
1チケット 1コミットってどうなんですか?1チケット 1トピックブランチでいいんでしょうか?などなど
その時見せてもらったコミットグラフに衝撃を受ける
名古屋Ruby会議01
和田さんと初めて会う色々問い詰める(ぉ
1チケット 1コミットってどうなんですか?
1チケット 1トピックブランチでいいんでしょうか?などなど
その時見せてもらったコミットグラフに衝撃を受ける
名古屋Ruby会議01
和田さんと初めて会う色々問い詰める(ぉ
1チケット 1コミットってどうなんですか?1チケット 1トピックブランチでいいんでしょうか?
などなど
その時見せてもらったコミットグラフに衝撃を受ける
名古屋Ruby会議01
和田さんと初めて会う色々問い詰める(ぉ
1チケット 1コミットってどうなんですか?1チケット 1トピックブランチでいいんでしょうか?などなど
その時見せてもらったコミットグラフに衝撃を受ける
名古屋Ruby会議01
和田さんと初めて会う色々問い詰める(ぉ
1チケット 1コミットってどうなんですか?1チケット 1トピックブランチでいいんでしょうか?などなど
その時見せてもらったコミットグラフに衝撃を受ける
名古屋Ruby会議01
名古屋Ruby会議01
和田さんと初めて会う色々問い詰める(ぉ
1チケット 1コミットってどうなんですか?1チケット 1トピックブランチでいいんでしょうか?などなど
その時見せてもらったコミットグラフに衝撃を受ける
もうGitしか!
Gitにはまる
Gitのソースコードを読み始めるGitのソースコードをいじり始める
→色々と理解が深まり今に至る
Gitにはまる
Gitのソースコードを読み始める
Gitのソースコードをいじり始める
→色々と理解が深まり今に至る
Gitにはまる
Gitのソースコードを読み始めるGitのソースコードをいじり始める
→色々と理解が深まり今に至る
Gitにはまる
Gitのソースコードを読み始めるGitのソースコードをいじり始める
→色々と理解が深まり今に至る
今日話すこと
TDDとの出会い、Gitとの出会いTDD Boot Camp歴DVCS/GitについてGitを使ったTDDの流れ
TDD Boot Camp(2009/12/19)
納品日と重なり行けなかった・・・参加した a-hisameさんに話を聞く楽しそう!次あるなら何が何でも行ってやる!!
TDD Boot Camp(2009/12/19)
納品日と重なり行けなかった・・・
参加した a-hisameさんに話を聞く楽しそう!次あるなら何が何でも行ってやる!!
TDD Boot Camp(2009/12/19)
納品日と重なり行けなかった・・・参加した a-hisameさんに話を聞く
楽しそう!次あるなら何が何でも行ってやる!!
TDD Boot Camp(2009/12/19)
納品日と重なり行けなかった・・・参加した a-hisameさんに話を聞く楽しそう!次あるなら何が何でも行ってやる!!
TDD Boot Camp北陸(2010/3/13-14)
参加!GitとTDDとペアプロの組み合わせを初めてやった今のスタイルはこの時からのものです名古屋でも是非やりたい!
TDD Boot Camp北陸(2010/3/13-14)
参加!
GitとTDDとペアプロの組み合わせを初めてやった今のスタイルはこの時からのものです名古屋でも是非やりたい!
TDD Boot Camp北陸(2010/3/13-14)
参加!GitとTDDとペアプロの組み合わせを初めてやった
今のスタイルはこの時からのものです名古屋でも是非やりたい!
TDD Boot Camp北陸(2010/3/13-14)
参加!GitとTDDとペアプロの組み合わせを初めてやった今のスタイルはこの時からのものです
名古屋でも是非やりたい!
TDD Boot Camp北陸(2010/3/13-14)
参加!GitとTDDとペアプロの組み合わせを初めてやった今のスタイルはこの時からのものです名古屋でも是非やりたい!
TDD Boot Camp名古屋(2010/7/10-11)
開催!色々なペア、色々な言語のやり方を見ることができたGitやMercurial使ってたペアもちらほら
TDD Boot Camp名古屋(2010/7/10-11)
開催!
色々なペア、色々な言語のやり方を見ることができたGitやMercurial使ってたペアもちらほら
TDD Boot Camp名古屋(2010/7/10-11)
開催!色々なペア、色々な言語のやり方を見ることができた
GitやMercurial使ってたペアもちらほら
TDD Boot Camp名古屋(2010/7/10-11)
開催!色々なペア、色々な言語のやり方を見ることができたGitやMercurial使ってたペアもちらほら
TDD Boot Camp福岡
開催中!仕様変更通達するの楽しいです色々あってここでしゃべっています
TDD Boot Camp福岡
開催中!
仕様変更通達するの楽しいです色々あってここでしゃべっています
TDD Boot Camp福岡
開催中!仕様変更通達するの楽しいです
色々あってここでしゃべっています
TDD Boot Camp福岡
開催中!仕様変更通達するの楽しいです色々あってここでしゃべっています
今日話すこと
TDDとの出会い、Gitとの出会いTDD Boot Camp歴DVCS/GitについてGitを使ったTDDの流れ
問題
マージで競合が起こらなかった場合、マージは成功したと言えますか?
デモ
マージによるコードの破壊
このように、競合が起こらなかったにも関わらずコードが壊れる場合がある
バージョン管理テスティング自動化
三本柱!
マージによるコードの破壊
このように、競合が起こらなかったにも関わらずコードが壊れる場合がある
バージョン管理
テスティング自動化
三本柱!
マージによるコードの破壊
このように、競合が起こらなかったにも関わらずコードが壊れる場合がある
バージョン管理テスティング
自動化
三本柱!
マージによるコードの破壊
このように、競合が起こらなかったにも関わらずコードが壊れる場合がある
バージョン管理テスティング自動化
三本柱!
マージによるコードの破壊
このように、競合が起こらなかったにも関わらずコードが壊れる場合がある
バージョン管理テスティング自動化
三本柱!
DVCSを使う利点
エディタのヒストリ機能ではだめなの?
エディタのヒストリ機能は操作に対する履歴バージョン管理システムは意味を持ったまとまりに対する履歴
集中管理型ではだめなの?
コミットをあまり細かくできないビルドを壊すようなコミットはもってのほか開発者ごとにブランチを切る?
DVCSを使う利点
エディタのヒストリ機能ではだめなの?
エディタのヒストリ機能は操作に対する履歴バージョン管理システムは意味を持ったまとまりに対する履歴
集中管理型ではだめなの?
コミットをあまり細かくできないビルドを壊すようなコミットはもってのほか開発者ごとにブランチを切る?
DVCSを使う利点
エディタのヒストリ機能ではだめなの?エディタのヒストリ機能は操作に対する履歴
バージョン管理システムは意味を持ったまとまりに対する履歴
集中管理型ではだめなの?
コミットをあまり細かくできないビルドを壊すようなコミットはもってのほか開発者ごとにブランチを切る?
DVCSを使う利点
エディタのヒストリ機能ではだめなの?エディタのヒストリ機能は操作に対する履歴バージョン管理システムは意味を持ったまとまりに対する履歴
集中管理型ではだめなの?
コミットをあまり細かくできないビルドを壊すようなコミットはもってのほか開発者ごとにブランチを切る?
DVCSを使う利点
エディタのヒストリ機能ではだめなの?エディタのヒストリ機能は操作に対する履歴バージョン管理システムは意味を持ったまとまりに対する履歴
集中管理型ではだめなの?
コミットをあまり細かくできないビルドを壊すようなコミットはもってのほか開発者ごとにブランチを切る?
DVCSを使う利点
エディタのヒストリ機能ではだめなの?エディタのヒストリ機能は操作に対する履歴バージョン管理システムは意味を持ったまとまりに対する履歴
集中管理型ではだめなの?コミットをあまり細かくできない
ビルドを壊すようなコミットはもってのほか開発者ごとにブランチを切る?
DVCSを使う利点
エディタのヒストリ機能ではだめなの?エディタのヒストリ機能は操作に対する履歴バージョン管理システムは意味を持ったまとまりに対する履歴
集中管理型ではだめなの?コミットをあまり細かくできないビルドを壊すようなコミットはもってのほか
開発者ごとにブランチを切る?
DVCSを使う利点
エディタのヒストリ機能ではだめなの?エディタのヒストリ機能は操作に対する履歴バージョン管理システムは意味を持ったまとまりに対する履歴
集中管理型ではだめなの?コミットをあまり細かくできないビルドを壊すようなコミットはもってのほか開発者ごとにブランチを切る?
Gitとは
分散バージョン管理システムのひとつLinuxのカーネル用として開発開始高機能かつ高速
Gitとは
分散バージョン管理システムのひとつ
Linuxのカーネル用として開発開始高機能かつ高速
Gitとは
分散バージョン管理システムのひとつLinuxのカーネル用として開発開始
高機能かつ高速
Gitとは
分散バージョン管理システムのひとつLinuxのカーネル用として開発開始高機能かつ高速
今からやること
Better SVNとしてのGit
ひとり or ペアプロ(もちろんTDD)で必要な最小限のコマンドリモートリポジトリは扱いません
最低限必要なコマンド
git init
git status
git add
git commit
gitk
git checkout
git merge
git now(非標準)
最低限必要なコマンド
git init
git status
git add
git commit
gitk
git checkout
git merge
git now(非標準)
git init
Gitのリポジトリを作るコマンド。
.
カレントディレクトリにリポジトリを作成
.
.
.
git init
.
指定ディレクトリにリポジトリを作成
.
.
.
git init hoge
最低限必要なコマンド
git init
git status
git add
git commit
gitk
git checkout
git merge
git now(非標準)
git status
リポジトリの状態を表示するコマンド。
.
状態確認
.
.
.
git status
最低限必要なコマンド
git init
git status
git add
git commit
gitk
git checkout
git merge
git now(非標準)
git add
未登録のファイルをGitに登録するコマンド。
.
新規ファイル hogeを登録
.
.
.
touch hogegit add .
最低限必要なコマンド
git init
git status
git add
git commit
gitk
git checkout
git merge
git now(非標準)
git commit
コミットするコマンド。
.
変更のあったものをすべてコミット
.
.
.
git commit -a
最低限必要なコマンド
git init
git status
git add
git commit
gitk
git checkout
git merge
git now(非標準)
gitk
コミットグラフの確認用ウィンドウ。
.
gitk
.
.
.
gitk --all &
何はなくともとりあえず立ち上げておく。
gitk
コミットグラフの確認用ウィンドウ。
.
gitk
.
.
.
gitk --all &
何はなくともとりあえず立ち上げておく。
最低限必要なコマンド
git init
git status
git add
git commit
gitk
git checkout
git merge
git now(非標準)
git checkout
ブランチを切り替えるコマンド。
.
ブランチを作成して切り替え
.
.
.
git checkout -b id/553
.
普通の切り替え
.
.
.
git checkout master
最低限必要なコマンド
git init
git status
git add
git commit
gitk
git checkout
git merge
git now(非標準)
git merge
ブランチをマージするコマンド。
.
id/553をmasterにマージ
.
.
.
git checkout mastergit merge id/553
最低限必要なコマンド
git init
git status
git add
git commit
gitk
git checkout
git merge
git now(非標準)
git now
「とりあえず」コミットしておくコマンド。神速さん発案、川西さん実装の非標準コマンド。
.
なう!
.
.
.
git now
.
きちんとしたコミットを作る
.
.
.
git now --rebase
今日話すこと
TDDとの出会い、Gitとの出会いTDD Boot Camp歴DVCS/GitについてGitを使ったTDDの流れ
Gitを使ったTDDの流れ
.
..
1 作業用にブランチを切る
.
.
.
2 保存したいと思ったら git now
.
.
.
3 戻りたくなったら gitkで「ブランチをここにリセットする」
git resetというコマンドが裏で動く.
.
.
4 作業が終わったらmasterにmerge
Gitを使ったTDDの流れ
.
..
1 作業用にブランチを切る
.
.
.
2 保存したいと思ったら git now
.
.
.
3 戻りたくなったら gitkで「ブランチをここにリセットする」
git resetというコマンドが裏で動く.
.
.
4 作業が終わったらmasterにmerge
Gitを使ったTDDの流れ
.
..
1 作業用にブランチを切る
.
.
.
2 保存したいと思ったら git now
.
.
.
3 戻りたくなったら gitkで「ブランチをここにリセットする」
git resetというコマンドが裏で動く.
.
.
4 作業が終わったらmasterにmerge
Gitを使ったTDDの流れ
.
..
1 作業用にブランチを切る
.
.
.
2 保存したいと思ったら git now
.
.
.
3 戻りたくなったら gitkで「ブランチをここにリセットする」
git resetというコマンドが裏で動く
.
.
.
4 作業が終わったらmasterにmerge
Gitを使ったTDDの流れ
.
..
1 作業用にブランチを切る
.
.
.
2 保存したいと思ったら git now
.
.
.
3 戻りたくなったら gitkで「ブランチをここにリセットする」
git resetというコマンドが裏で動く
.
.
.
4 作業が終わったらmasterにmerge
Gitを使ったTDDの流れ
.
..
1 作業用にブランチを切る
.
.
.
2 保存したいと思ったら git now
.
.
.
3 戻りたくなったら gitkで「ブランチをここにリセットする」
git resetというコマンドが裏で動く
.
.
.
4 作業が終わったらmasterにmerge
後からブランチを作る
今やっている作業をいったん中断して、ほかの作業をやりたい。
.
コマンド
.
.
.
git nowgit checkout -b ブランチ名 master作業git checkout mastergit merge ブランチ名
後からブランチを作る
今やっている作業をいったん中断して、ほかの作業をやりたい。
.
コマンド
.
.
.
git nowgit checkout -b ブランチ名 master作業git checkout mastergit merge ブランチ名
その先へ
Gitをある程度使っている方向け
gitkではなく、コマンドを使うブランチのマージに rebaseを使うITS/BTSと連携させる
その先へ
Gitをある程度使っている方向けgitkではなく、コマンドを使う
ブランチのマージに rebaseを使うITS/BTSと連携させる
その先へ
Gitをある程度使っている方向けgitkではなく、コマンドを使うブランチのマージに rebaseを使う
ITS/BTSと連携させる
その先へ
Gitをある程度使っている方向けgitkではなく、コマンドを使うブランチのマージに rebaseを使うITS/BTSと連携させる
おまけ事例紹介
弊社開発環境
コードはGitで管理更新用のリポジトリと取得用のリポジトリが別HudsonでCI(まだ Jenkinsにしていない)ビルドが通らない変更は rejectされるfast forward mergeができなければ rejectされる
弊社開発環境
コードはGitで管理
更新用のリポジトリと取得用のリポジトリが別HudsonでCI(まだ Jenkinsにしていない)ビルドが通らない変更は rejectされるfast forward mergeができなければ rejectされる
弊社開発環境
コードはGitで管理更新用のリポジトリと取得用のリポジトリが別
HudsonでCI(まだ Jenkinsにしていない)ビルドが通らない変更は rejectされるfast forward mergeができなければ rejectされる
弊社開発環境
コードはGitで管理更新用のリポジトリと取得用のリポジトリが別HudsonでCI(まだ Jenkinsにしていない)
ビルドが通らない変更は rejectされるfast forward mergeができなければ rejectされる
弊社開発環境
コードはGitで管理更新用のリポジトリと取得用のリポジトリが別HudsonでCI(まだ Jenkinsにしていない)ビルドが通らない変更は rejectされる
fast forward mergeができなければ rejectされる
弊社開発環境
コードはGitで管理更新用のリポジトリと取得用のリポジトリが別HudsonでCI(まだ Jenkinsにしていない)ビルドが通らない変更は rejectされるfast forward mergeができなければ rejectされる
メリット
ビルドを壊してしまってもほかの開発者に迷惑をかけないリポジトリから取得したものは最低限の動作確認がされている
デメリット
構築が大変変更が大変
ただまぁ、一度構築してしまえばかなり快適
top related