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
Advanced Micro Frontends: Multi Version/ Framework Scenarios @WAD 2025, Berlin
manfredsteyer
PRO
0
340
ruby.wasmで多人数リアルタイム通信ゲームを作ろう
lnit
3
500
設計やレビューに悩んでいるPHPerに贈る、クリーンなオブジェクト設計の指針たち
panda_program
6
2.3k
フロントエンドのパフォーマンスチューニング
koukimiura
4
1.5k
Quand Symfony, ApiPlatform, OpenAI et LangChain s'allient pour exploiter vos PDF : de la théorie à la production…
ahmedbhs123
0
210
20250628_非エンジニアがバイブコーディングしてみた
ponponmikankan
0
710
システム成長を止めない!本番無停止テーブル移行の全貌
sakawe_ee
1
220
猫と暮らす Google Nest Cam生活🐈 / WebRTC with Google Nest Cam
yutailang0119
0
160
PHPで始める振る舞い駆動開発(Behaviour-Driven Development)
ohmori_yusuke
2
410
PipeCDのプラグイン化で目指すところ
warashi
1
290
20250704_教育事業におけるアジャイルなデータ基盤構築
hanon52_
5
880
TypeScriptでDXを上げろ! Hono編
yusukebe
1
400
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
140
7k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
Thoughts on Productivity
jonyablonski
69
4.7k
Designing for Performance
lara
610
69k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.7k
A better future with KSS
kneath
238
17k
Six Lessons from altMBA
skipperchong
28
3.9k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Building Adaptive Systems
keathley
43
2.7k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.4k
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