Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
TDDワイワイ会inXP祭り2018
Search
Shuhei TAKASUGI
September 08, 2018
Programming
1
2.3k
TDDワイワイ会inXP祭り2018
2018.9.8 XP祭り2018でのワークショップで使用した資料です。
Shuhei TAKASUGI
September 08, 2018
Tweet
Share
More Decks by Shuhei TAKASUGI
See All by Shuhei TAKASUGI
TDDワイワイ会
shuyuhey
1
4.8k
Other Decks in Programming
See All in Programming
FindyにおけるTakumi活用と脆弱性管理のこれから
rvirus0817
0
230
AIでLINEスタンプを作ってみた
eycjur
1
220
AI OCR API on Lambdaを Datadogで可視化してみた
nealle
0
220
Processing Gem ベースの、2D レトロゲームエンジンの開発
tokujiros
2
110
【第4回】関東Kaggler会「Kaggleは執筆に役立つ」
mipypf
0
950
TanStack DB ~状態管理の新しい考え方~
bmthd
2
370
Ruby Parser progress report 2025
yui_knk
1
240
Google I/O recap web編 大分Web祭り2025
kponda
0
2.9k
STUNMESH-go: Wireguard NAT穿隧工具的源起與介紹
tjjh89017
0
390
OSS開発者という働き方
andpad
5
1.5k
Portapad紹介プレゼンテーション
gotoumakakeru
1
130
The State of Fluid (2025)
s2b
0
210
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
Building an army of robots
kneath
306
46k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
How to Ace a Technical Interview
jacobian
279
23k
Building Adaptive Systems
keathley
43
2.7k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Scaling GitHub
holman
463
140k
Making Projects Easy
brettharned
117
6.4k
Transcript
!1 TDDワイワイ会
TDDワイワイ会とは !2 https://tddyyx.connpass.com/
確認事項 ※モブプログラミングの様子を撮影することがあり ます。写りたくない方、不都合のある方は 予めお伝え下さい。 !3
SNS •SNSへの投稿問題ありません! !4 #tddyyχ #xpjug これはエックスではなくカイです
タイムライン •13:00 ~ 13:15 TDDとモブプログラミングの説明 •13:15 ~ 13:30 自己紹介/チーム分け •13:30
~ 14:30 ゆるゆるとモブプログラミング •14:30 ~ 14:50 ふりかえり !5
TDDと モブプログラミング !6
テスト駆動開発 • 「動作するきれいなコード」(Ron Jeffries) がゴール !7 ケント・ベック著 (新訳) オーム社, 2017
原著は2002 きれい 汚い 動作しない 動作する
テスト駆動開発 • ソフトウェア開発における不安を緩和したい • ”開発”にはもちろん”設計”も含んでいる • “設計”はコーディングによってなされる • 少しずつ設計しながら作り込む !8
ケント・ベック著 (新訳) オーム社, 2017 原著は2002
テスト駆動開発 •テストファーストのアプローチ • テストを書く • 実装する • リファクタリングする •3ステップの繰り返し •
Specification(仕様) • Generalization(一般化) • Design(設計) !9 ケント・ベック著 (新訳) オーム社, 2017 原著は2002
テスト駆動開発 • レッド:動作しない、おそらく最初のうちは コンパイルも通らないテストを1つ書く • グリーン:そのテストを迅速に動作させる。 ときにインチキでもやっつけでもいい • リファクタリング:テストがパスしたままの 状態で重複を除去したりコードをきれいに
する !10 ケント・ベック著 (新訳) オーム社, 2017 原著は2002
テスト駆動開発 • レッド・グリーン・リファクタリングを繰り返し インクリメンタルに設計・実装していく !11 きれい 汚い 動作しない 動作する レッド
グリーン リファクタリング ケント・ベック著 (新訳) オーム社, 2017 原著は2002
TDDワイワイ会でのTDD • Uncle Bob (Robert Martin) による3つのルールに従う。 1. 失敗するユニットテストをパスするためだけにしか プロダクションコードを書いてはならない。
2. 失敗させるのに十分なユニットテストが書けたら それ以上テストコードを書いてはならない。 コンパイルエラーも失敗とみなす。 3. 1つのユニットテストをパスさせるのに十分なコードが書けた らそれ以上プロダクションコードを書いてはならない。 !12 “The Three Laws of TDD” http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd
TDDワイワイ会でのテストの進め方 • ふるまいの具体例によって仕様を定めていく(Test First) • 実装から考えない • Step by step(一足飛びに考えない)
• レッド(テストが失敗している状態)は早く抜ける • グリーン(テストが動作を保証している状態)は安心 !13
モブプログラミングとは !14 https://speakerdeck.com/takaking22/mob-programming-startup-manual-number-mobprogramming- number-mobupuro !5",",*/( .0#130(3"..*/( 45"3561."/6"- Ϟϒϓϩάϥϛϯά ελʔτΞοϓϚχϡΞϧ !5",",*/(
モブプログラミング •複数名で1台のコンピュータを使い、寄ってたかって 1つのお題に挑戦するプラクティス • ドライバー(1人):考えを表明しながら手を動かしてコードを書 く。 • ナビゲーター(複数):手を動かさないが一緒にコードを書く。 バグを仕込まないように注意したり、躓きを助けたり、先回りし て調べたりする。
•2人1組でやるものはペアプログラミングと言う !15
TDDワイワイ会でのお約束 •ドライバー • やってること、これからやることを声に出す。 •ナビゲーター • これからやることを決定する。ドライバのやることの方向性が 間違っていそうな場合は修正を、あっていそうな場合は同意 をする。 !16
TDDワイワイ会でのモブ交代方式 •TDDのサイクルでレッドに なったら交代する 1. テストを通すための実装をす る(=“グリーンにする”) 2. (グリーンのまま)リファクタリ ングをする 3.
次に実装する仕様をテストで 表現する(=”レッドにする”) !17 きれい 汚い 動作しない 動作する ③ ① ②
TDDワイワイ会の必勝パターン •cyber-dojo.orgを使う • 無料のWeb REPL • いろんな言語環境がある • テストフレームワークがデフォルトで存在 •迷ったらFizzBuzz
• 仕様が理解容易 • 2時間ぐらいでじっくりやるのにちょうどいい •背伸びするオススメの組み合わせ • 知ってるお題 × 知らない言語 • 知らないお題 × 知ってる言語 !18 http://www.cyber-dojo.org/
ワイワイ会の流れ •チームに分かれて自己紹介 •使う言語・取り組む問題を決める •TODOリストを作る •コーディングをする !19
体験してほしいこと •心理的安全性 • 初めてあった人と一緒にコードを書くのに • 知らない言語なのに • プログラミング得意じゃないのに •楽しさ !20
自己紹介とチーム分け !21
自己紹介のやり方 1. みんなで輪になります 2. 「今日呼ばれたい名前、 普段使っているプログラミング言語、 今の気持ち」を1人ずつ話します !22
再掲)TDDワイワイ会とは !23 https://tddyyx.connpass.com/
次回 •9/23 TDDワイワイ会その16 in 第67回琉大祭 • 沖縄でバカンスがてらワイワイいかがですか? •10/21 TDDワイワイ会その17 •
秋葉原ダイビル12F !24