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
RSpec概論
Search
shiraki hirotomo
September 14, 2018
Programming
0
730
RSpec概論
RSpecを触る前に僕が知っておきたかったこと
shiraki hirotomo
September 14, 2018
Tweet
Share
Other Decks in Programming
See All in Programming
なぜ「共通化」を考え、失敗を繰り返すのか
rinchoku
1
650
猫と暮らす Google Nest Cam生活🐈 / WebRTC with Google Nest Cam
yutailang0119
0
120
Porting a visionOS App to Android XR
akkeylab
0
460
なんとなくわかった気になるブロックテーマ入門/contents.nagoya 2025 6.28
chiilog
1
270
“いい感じ“な定量評価を求めて - Four Keysとアウトカムの間の探求 -
nealle
1
10k
Blazing Fast UI Development with Compose Hot Reload (droidcon New York 2025)
zsmb
1
290
5つのアンチパターンから学ぶLT設計
narihara
1
170
20250704_教育事業におけるアジャイルなデータ基盤構築
hanon52_
5
790
LT 2025-06-30: プロダクトエンジニアの役割
yamamotok
0
760
チームで開発し事業を加速するための"良い"設計の考え方 @ サポーターズCoLab 2025-07-08
agatan
1
420
チームのテスト力を総合的に鍛えて品質、スピード、レジリエンスを共立させる/Testing approach that improves quality, speed, and resilience
goyoki
5
870
The Modern View Layer Rails Deserves: A Vision For 2025 And Beyond @ RailsConf 2025, Philadelphia, PA
marcoroth
1
110
Featured
See All Featured
Code Review Best Practice
trishagee
69
18k
Being A Developer After 40
akosma
90
590k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
6
300
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
Gamification - CAS2011
davidbonilla
81
5.4k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Building an army of robots
kneath
306
45k
How GitHub (no longer) Works
holman
314
140k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
Making Projects Easy
brettharned
116
6.3k
Transcript
34QFD֓ कΓ͍͢ςετίʔυͷϧʔϧ5*14
ΞδΣϯμ ࣗݾհ 34QFD֓ཁ جຊػೳ ޙʑࠔΓ͕ͪͳΞϯνϚφʔ
ςετ࣌ؒΛ͘͢Δ ·ͱΊʙ͜ͷ͚̎ͭͩकΕ͖ͬͱʙ
͡Ίʹ ʮςετॻ͍ͨ͜ͱͳ͍ʂʯ ʮςετௐ͚ͨͲɺͬͨ͜ͱͳ͍ʂʯ ʮςετॻ͍ͯΈ͚ͨͲͬ͘͠Γ͖ͯͳ͍ʂʯ Λ͛ͨͷͰɺίʔυΑΓ͕ଟΊͰ͢ɻ
ࣗݾհ ໊લɿന๎ ձࣾɿגࣜձࣾϕʔγοΫʢ৽ଔ̏ʣ ͞ΘͬͯΔ͜ͱɿ3BJMT "84 RJJUBͱ͔UXJUUFSͱ͔ͷ*%ɿOBNJUPQ झຯɿϑΥʔτφΠτ
ࣗݾհ ࣗͷࣝͷཧͱ 34QFDʹ͍ͭͯΒͳ͍ൃݟ͕͋Εͱࢥ͍ ࠓճͷษڧձͷ༰ʹ͠·ͨ͠ɻ
͜Ε͔Βઆ໌͢Δ͜ͱɺ ͜Μͳײ͡ͷڥͷਓ͕͖ͬͯͨ3TQFDͳͷͰ ͔ͨ͠͠Βઌೖ؍͕͋Δ͔͠Εͳ͍ͷͰɺ ͲΜͳαʔϏεʹؔΘ͖͔ͬͯͨͷઆ໌
ձࣾͰ͖ͬͯͨ͜ͱ &$αΠτͷཧαΠτʢ෦ʣ࡞Γม͑ ϝσΟΞαΠτอकӡ༻ ࢿྉٻαΠτ৽ن ӳձڭࣨݕࡧαΠτ৽ن ࢿྉٻαΠτอकӡ༻
ձࣾͰ͖ͬͯͨ͜ͱ ͲΕ
ձࣾͰ͖ͬͯͨ͜ͱ ̍ඵͰམͪͨΒαʔϏε͕Γཱͨͳ͍ɾɾɾ
ձࣾͰ͖ͬͯͨ͜ͱ ͱ͔Ͱͳ͍ɻ
ձࣾͰ͖ͬͯͨ͜ͱ ͲΜͲΜػೳͷՃɾमਖ਼ͱ͔͍͢͠ڥ
ձࣾͰ͖ͬͯͨ͜ͱ ͦΜͳڥͰςετίʔυΛॻ͍͖ͯ·ͨ͠
ҙ ԿΛςετ͢Ε͍͍ͷ͔ ͲΕ͘Β͍ςετ͢Ε͍͍ͷ͔ͱ͔ʹ ʮઈର͜ΕʯΈ͍ͨͳͷ͕ͳ͍
ҙ 34QFDͷϧʔϧʹ͍ͭͯߟ͑ͨ͜ͱΛ આ໌͍͖ͯ͠·͕͢ Ұ൪ྑ͍ϧʔϧ نͱ͔αʔϏεՔಇͱ͔Λ౿·͑ͯ νʔϜϝϯόʔͱ૬ஊܾͯ͠ΊΔͷ͕ϕετ
34QFD֓ཁ " lςετzͷछྨ # ̎େςετϑϨʔϜϫʔΫ
"lςετzͷछྨ 2"ςετ σΟϨΫλʔςετ ։ൃςετ
ͦΕͧΕׂ͕ҧ͏
ʮͲΕ͙Β͍ςετ͢Ε͍͍ͷʁʯ
͜ΕΛߟ͑ΔͨΊʹ͓͓͑ͯ͘͞
2"ςετ 2VBMJUZ"TTVSBODFʢ࣭อূʣ αʔϏε࣭Λอূʢόάɺૢ࡞ײʣ ˎ࡞ۀޮԽͷͨΊɺ͜͜Ͱ34QFDͬͯΔձࣾ ͋ΔΒ͍͠
σΟϨΫλʔςετ JTTVF௨Γʹ࣮͞Ε͍ͯΔ͔νΣοΫ ˎόάΛཏతʹνΣοΫ͢ΔΑ͏ͳׂͰͳ͍
։ൃςετ ։ൃऀ͕։ൃ͍ͨ͢͠Ίʹߦ͏ςετ ˎࣗ͜ͷύʔτͰΑ͘34QFD͖ͬͯ·ͨ͠
̏ͭͷςετ ͜ΕΒ̏ͭͷςετͷॅΈ͚͕େࣄ ԿΛ34QFDͰ୲อ͢Δͷ͔
։ൃςετʹ͓͚Δ34QFD ୲อ͢Δͷ શϖʔδɺਖ਼ৗʹΞΫηεͰ͖Δ͔ શϝιουɺશΞΫγϣϯʹςετΛߦ͏ ى͜Γ͑ͳ͍ೖྗΛ༧ͯ͠ςετ
։ൃςετʹ͓͚Δ34QFD ୲อ͢Δͷ શϖʔδɺਖ਼ৗʹΞΫηεͰ͖Δ͔ શϝιουɺશΞΫγϣϯʹςετΛߦ͏ ى͜Γ͑ͳ͍ೖྗΛ༧ͯ͠ςετ ͠·ͤΜ
։ൃςετʹ͓͚Δ34QFD ओʹҎԼೋͭΛ୲อ͢Δ ϛε͕ى͜Γ͕ͪͳϩδοΫ ϏδωεతʹಛʹॏཁͳϩδοΫ
։ൃςετʹ͓͚Δ34QFD ϛε͕ى͜Γ͕ͪͳϩδοΫ ෳࡶͳϩδοΫ αʔϏεͷ͍ൣғͰΘΕ͍ͯΔϩδοΫ
։ൃςετʹ͓͚Δ34QFD ϏδωεతʹಛʹॏཁͳϩδοΫ ٻؔ $7ϑϩʔ
։ൃςετʹ͓͚Δ34QFD 5*14୲อ͢ΔͷΛߜΔ
#̎େςετϑϨʔϜϫʔΫ NJOJUFTU 34QFD
γϯϓϧ ϐϡΞ3VCZ ଟػೳ υΩϡϝϯτ෩ NJOJUFTU 3TQFD
NJOJUFTU 3TQFD
NJOJUFTUͱ34QFD NJOJUFTUγϯϓϧ͕͞ਓؾ 34QFDߴػೳͳͷͰਓؾ ϑϨʔϜϫʔΫʹΑΔͷҧ͍ߟ͑ͳ͍͍ͯ͘ 3TQFDͷ΄͏͕ຊޠͷهࣄ͕ଟ͍ͷͰ͓͢͢Ί
جຊػೳ ̏ͭͷTQFDͷׂʢNPEFM DPOUSPMMFS SFRVFTUʣ JUͱFYQFDU EFTDSJCFͱDPOUFYU GBDUPSZ USBJU TUVC
ͪͳΈʹ υΩϡϝϯτ͜͜ IUUQSTQFDJOGPEPDVNFOUBUJPOSTQFDSBJMT
"̏ͭͷTQFDͷׂ NPEFMTQFD Ϟσϧͷϝιου୯ҐͰͷςετ ϞσϧͷόϦσʔγϣϯςετ DPOUSPMMFSTQFD ඇਪ BDUJPOͷΠϯελϯεมͷΛςετ ࢦఆͷVSMɺҙਤ͢ΔSFTQPOTFʹͳ͍ͬͯΔ͔ςετ SFRVFTUTQFD
ࢦఆͷVSMɺҙਤ͢ΔSFTQPOTFʹͳ͍ͬͯΔ͔ςετ
DPOUSPMMFSTQFDඇਪ IUUQSTQFDJOGPCMPHSTQFDIBTCFFOSFMFBTFE SBJMTTVQQPSUGPSSBJMT SFRVFTUTQFDͰɺίϯτϩʔϥͷͭͷΞΫγϣϯʹूதͰ͖· ͕͢ɺίϯτϩʔϥςετͱҟͳΓɺϧʔλɺϛυϧΣΞελο ΫɺϥοΫͷϦΫΤετͱϨεϙϯεͷ྆ํ͕ඞཁͰ͢ɻ͜Εɺ ͋ͳ͕ͨॻ͍͍ͯΔςετʹݱ࣮ײΛ༩͑ɺDPOUSPMMFSTQFDʹڞ ௨͢Δଟ͘ͷΛճආ͢Δͷʹཱͪ·͢ɻ ެࣜ༁
NPEFMTQFDͱSFRVFTUTQFD ͍͚ NPEFMTQFDσʔλΛςετ͢Δ SFRVFTUTQFDݟͨΛςετ͢Δ
FYZBNBEBͰදࣔͯ͠Δ͔ςετ
NPEFMTQFDσʔλΛ ਖ਼͍͠ͰΦϒδΣΫτੜͰ͖Δ͔ IFMMPϝιου͕ػೳ͍ͯ͠Δ͔ʁ ͳͲ
SFRVFTUTQFDݟͨΛ ZBNBEBʹΞΫηεͰ͖Δ͔ ϖʔδཁૉʹzZBNBEBͰ͢ɻzͱ͍͏ ςΩετ͕ଘࡏ͢Δ͔ ͳͲ
TQFDΛॻ͘લͷԼ४උ ςετ͍͢͠.7$ʹ͢Δ ϝιουͷҾฦΓͷܕΛἧ͑Δ WJFXͰมͷఆٛͨ͠Γ࠶ೖͨ͠Γ͠ͳ͍ ΊͬͪΌWJFXʹذ͕ॻ͍ͯ͋ΔͷΛΊΔ
"̏ͭͷTQFDͷׂ 5*14DPOUSPMMFSTQFDΘͳ͍ 5*14NPEFMTQFDͰσʔλͷऔಘɾܗΛςετ 5*14SFRVFTUTQFDͰσʔλͷදࣔΛςετ
#JUͱFYQFDU
None
None
None
None
$DPOUFYUͱEFTDSJCF
None
None
None
None
EFTDSJCF DPOUFYU JU EFTDSJCFɿϝιου୯ҐͳͲͷ·ͱ·ΓͰғΉ DPOUFYUɿ߹͚ͰғΉ JUɿ࠷খ୯ҐͰғΉ
EFTDSJCF DPOUFYU JU 5*14 EFTDSJCF DPOUFYU JUΛͬͯυΩϡϝϯτ෩ʹॻ͘
ͪͳΈʹ
ͲͬͪͰPL ˎ͜ͷ߹DPOUFYUͷ΄͏͕͍͍͚ͲΤϥʔͱ͔ʹͳΒͳ͍
ߦࢦఆ࣮ͯ͠ߦ ASTQFDϑΝΠϧ໊ߦ൪߸AͰ࣮ߦ
%CFGPSFͱMFU
None
JUΛ؆ܿʹ͢ΔͨΊʹ
None
None
MFUͱMFU
MFUͱMFU w MFUԆධՁɻʢJUͰݺͳ͍ͱ࣮ߦ͞Εͳ͍ʣ w MFU֤JU͝ͱͷ࣮ߦલʹධՁɻCFGPSFͱҰॹ
None
None
MFUͱCFGPSFͷ͍͚ JUͰࢀর͢Δ͔Ͳ͏͔ MFUͷ߹ɺJUͰࢀর͢Δ CFGPSFͷ߹ɺJUͰࢀর͠ͳ͍
%CFGPSFͱMFU 5*14CFGPSF MFUͰJUΛγϯϓϧʹ 5*14CFGPSFͰࢀর͠ͳ͍Ϩίʔυͱ͔Λࣄલ४උ 5*14MFUͰJUͰࢀর͢ΔΛࣄલ४උ
%GBDUPSZ
%GBDUPSZ 6TFS OBNFඞਢ CJSUIQMBDFඞਢ CJSUIEBZඞਢ UFMඞਢ KPCඞਢ
None
σϑΥϧτͷΛ༻ҙ͢Δ
None
JUͰҙࣝ͢Δ͜ͱΛߜΕΔ 6TFSΦϒδΣΫτ࡞͢Δ 6TFSIFMMP͕ਖ਼͘͠ಈ࡞͍ͯ͠Δ͔
%GBDUPSZ 5*14ΦϒδΣΫτΛ࡞ΔͨΊͷهड़ΛݮΒ͢
%TUVC ϞσϧͷϝιουΛ্ॻ͖͠ɺฦΓΛݻఆͰ͖Δ
%TUVC
ྫ Ϋϥεɿ1SFG ϝιουɿEJTUBODF QSFG QSFG "1*ɿ(PPHMF.BQ"1*
None
͜ͷςετͷԿ͕ʁ
̎ͭͷϝιουΛςετͯ͠Δ ͜ͷςετͰ ʮݝͷڑΛࢉग़͢Δʯ ʮ(PPHMF.BQ"1*͕ݝͷҐஔใΛࢉग़͢Δʯ
ͭ·Γɾɾɾ ʮ(PPHMF.BQ"1*ʯ͕͚͜Δͱ 1SFGEJTUBODFͷܭࢉ͕ਖ਼͚ͯ͘͜͠Δ
ςετରͷϝιου͚ͩͰ ⭕ʮݝͷڑΛࢉग़͢Δʯ ❌ʮ(PPHMF.BQ"1*͕ݝͷҐஔใΛࢉग़͢Δʯ
͜͏ͩͱ͢Δͱɾɾɾ (PPHMF.BQ"1*TFBSDI ҾͷݝͷҐஔใΛऔಘ͢Δ
BMMPX PCK UPSFDFJWF NFUIPE XJUI BSH BOE@SFUVSO WBMVF BMMPX
PCK UPSFDFJWF NFUIPE BOE@SFUVSO WBMVF
ରͷΈͷςετʹͳΔ 1SFGEJTUBODFͷΈͷςετ ͠(PPHMF.BQ"1*ଆͰ͚ͯͯ͜ςετ͕௨Δ ͳ͚͔ͥͨ͜ͷௐࠪͷ͕࣌ؒল͚Δ
%TUVC 5*14ςετରʹͳΔϝιουΛߜΔ
TUVCͱNPDL εΩοϓ ࢀߟɿ IUUQKBOHBKBODPNCMPHFYQFDU BOEBMMPXJOSTQFD
ΞϯνϚφʔ " EFTDSJCFɺDPOUFYUɺJUͷ͍ํ # MFU CFGPSFͷҐஔʢEFTDSJCFͷ֎ʹग़͞ͳ͍ʣ $ ్தͰVQEBUF % ฒͼॱܥϝιουͰΓ͕ͪͳςετ
"EFTDSJCFɾDPOUFYUɾJU Ͳ͏͍͏෩ʹͰॻ͚Δ
None
͜ΕͰΤϥʔ͕ى͖Δͱ AFYQFDU UPFRAʹͯ͠ΈΔ
None
w AAҎ͕߱FYQFDUͰ͖͍ͯͳ͍
"EFTDSJCFɾDPOUFYUɾJU JUͰԿݸFYQFDU͠ͳ͍ ్தͰ͚͜Δͱςετ͕தஅͯ͠͠·͏ FYQFDU͕ଟ͍ͱԿ͕ਖ਼ৗ͔͔ΓͮΒ͍
࠷খ୯ҐΛJUͰғΉ
None
ͬͱ͔Γ͘͢
l·ͱ·ΓzΛEFTDSJCFͰ l߹͚zΛDPOUFYUͰ
None
Կ͕͍͍ͷʁ Τϥʔى͖ͨ࣌ͷείʔϓΛখ͘͞Ͱ͖Δ ྫ͑ɺAAʹͳΓ͚ͨ͜ͱ͖ ෦తʹࣺ͍ͯ͢ ྫ͑ɺՃ๏ϝιουΛશআͨ͠ͱ͖
"EFTDSJCFɾDPOUFYUɾJU 5*14EFTDSJCFͰz·ͱ·ΓzΛғΉ 5*14DPOUFYUͰz߹͚zΛғΉ 5*14JUͰz࠷খ୯ҐzΛғΉ
#MFU CFGPSFͷҐஔ
None
l࢛ଇԋࢉzԼʹMFU ՃݮআͦΕͧΕͷςετ͕େ͖͘ͳΔͱ
None
ͭΒ͍
EFTDSJCFͷ֎ʹMFUΛग़͢ͱ ୯७ʹίʔυ͕ಡΈͮΒ͍ είʔϓ͕͕ͬͯ͠·͏ ͪͳΈʹɺաͳڞ௨ԽΛͨ࣌͠ʹى͖͍͢ɻ
#MFU CFGPSFͷҐஔ 5*14EFTDSJCFͷ֎ʹMFUΛग़͞ͳ͍
$్தͰVQEBUF
None
ྫ͑ɺԿΒ͔ͷมߋ͕͋Γ MFU OVNCFS \^ʹ͢Δ͜ͱʹͳΓ·ͨ͠
None
lQPJOUz͚͚ͩͯ͘͜Εͳ͍ ଞͱҰ༷ʹมߋ͞Εͳ͍ͷͰݟམͱͯ͠͠·͏
$్தͰVQEBUF 5*14JUͱ͔ͰVQEBUF͠ͳ͍
%ฒͼॱܥϝιουͷςετ ͜Εʹ͍ͭͯRJJUB IUUQTRJJUBDPNOBNJUPQJUFNT CGG⒎FEG
ςετ࣌ؒΛ͘ " ςετͷΛݮΒ͢ # ແବͳϨίʔυΛ࡞Βͳ͍ $ DSFBUFΑΓCVJME % UFTURVFVFΛ͏
"ςετͷΛݮΒ͢ ΧόϨοδΛ͏ඞཁ͕͋Δ͔ʁ SFRVFTUTQFDΛNPEFMTQFDʹஔ͖͑Εͳ͍ ͔
#ແବͳΠϯελϯε MFUɺCFGPSFͳͲͰ࡞͍ͬͯͳ͍͔ GBDUPSZͰඥ͚͕ଟ͘ͳͬͯͳ͍͔
$DSFBUFΑΓCVJME DSFBUFϞσϧΦϒδΣΫτ͕ੜͯ͠อଘ͢Δ CVJMEϞσϧΦϒδΣΫτΛੜ͢Δ
% UFTURVFVF HFNIUUQTHJUIVCDPNUNNUFTURVFVF ςετΛฒྻ࣮ߦͰ͖Δ σϑΥϧτͷಉ࣮࣌ߦ$16ͷίΞ
·ͱΊ
34QFDશવΒͳͯ͘
αʔϏε͝ͱʹ34QFDͷϧʔϧ͕ಛʹͳͯ͘
؆୯ʹ࣮ݱՄೳͳ ࠷ݶͷ
ϝϯςφϯε͍͢͠ ςετίʔυʹ͢ΔͨΊͷ৺͕͚
ͨͬͨ̎ͭ
EFTDSJCF DPOUFYU JUΛਖ਼͘͠͏ EFTDSJCFͷ֎ʹMFUΛग़͞ͳ͍
͜ͷೋ͕ͭ࠷༏ઌ
͜ΕΛϕʔεʹ
։ൃςετͱͯ͠Ͳ͜·Ͱςετ͢Δ͔ NPEFMTQFDͱSFRVFTUTQFDͷॅΈ͚ JUͰԿݸFYQFDU͠ͳ͍ ్தͰVQEBUF͠ͳ͍
جૅ͔Β34QFDΛΓ͍ͨ 3TQFDʹΑΔ3BJMTςετೖ ిࢠॻ੶ͷΈ ҏ౻३Ұ͞ΜͷRJJUB #FUUFS4QFDT ͜ΕಡΈͳ͕Β͕͍͍͔ʮαϤφϥ#FUUFS4QFDT ʯ ެࣜυΩϡϝϯτ
ͬͱϝϯςφϯε͘͢͠ Մಡੑͷߴ͍ςετίʔυΛॻͨ͘Ίͷ͓࡞๏ू IUUQTHJUIVCDPNXJMMOFUSTQFDTUZMFHVJEF