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
COOKPAD and Test Automation
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Naoto Takai
May 25, 2014
Programming
19
2.8k
COOKPAD and Test Automation
ソフトウェアテストシンポジウム 2014 東北(JaSST'14 Tohoku)
2014年5月23日(金)
Naoto Takai
May 25, 2014
Tweet
Share
More Decks by Naoto Takai
See All by Naoto Takai
Building the Perfect Custom Keyboard
takai
2
670
キースイッチ潤滑入門 / A Brief Introduction to Lube MX Switches
takai
2
820
みなさん、分かっていますか / What is a difference?
takai
1
950
The Design Philosophy of Kuroko2
takai
3
2.3k
Agile and DevOps with Ruby
takai
2
1.2k
Software Quality and Testing #1
takai
6
710
Microservices in Action
takai
36
5.4k
Ruby App on Netflix Microservices Stack
takai
6
1.1k
How We Use Jenkins?
takai
21
8.5k
Other Decks in Programming
See All in Programming
Kotlin Multiplatform Meetup - Compose Multiplatform 외부 의존성 아키텍처 설계부터 운영까지
wisemuji
0
180
実は歴史的なアップデートだと思う AWS Interconnect - multicloud
maroon1st
0
350
AIエージェント、”どう作るか”で差は出るか? / AI Agents: Does the "How" Make a Difference?
rkaga
4
1.9k
開発者から情シスまで - 多様なユーザー層に届けるAPI提供戦略 / Postman API Night Okinawa 2026 Winter
tasshi
0
150
ThorVG Viewer In VS Code
nors
0
750
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
510
Denoのセキュリティに関する仕組みの紹介 (toranoana.deno #23)
uki00a
0
250
.NET Conf 2025 の興味のあるセッ ションを復習した / dotnet conf 2025 quick recap for backend engineer
tomohisa
0
120
疑似コードによるプロンプト記述、どのくらい正確に実行される?
kokuyouwind
0
340
Vibe Coding - AI 驅動的軟體開發
mickyp100
0
160
[KNOTS 2026登壇資料]AIで拡張‧交差する プロダクト開発のプロセス および携わるメンバーの役割
hisatake
0
110
今こそ知るべき耐量子計算機暗号(PQC)入門 / PQC: What You Need to Know Now
mackey0225
3
350
Featured
See All Featured
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
150
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Speed Design
sergeychernyshev
33
1.5k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
120
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
740
Agile that works and the tools we love
rasmusluckow
331
21k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
66
36k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.4k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
52
Transcript
ΫοΫύουͱςετࣗಈԽ JaSST’14 Tohoku
ߴҪਓ ΫοΫύουגࣜձࣾ
ࢲͷཤྺॻ ʙ ϝʔΧʔܥൢࣾ ʙ Σϒ੍࡞ձࣾ ʙ େखγεςϜΠϯςάϨʔλʔ
ʙ ωοταʔϏεӡӦձࣾ
ιϑτΣΞ࣭ͱͷग़ձ͍ Σϒ੍࡞ձࣾͰडୗ։ൃʹैࣄ͍ͯͨ͠ ࢲ3VCZͷීٴɾൃలͷͨΊʹେखγε ςϜΠϯςάϨʔλͱస৬ͨ͠ͷ͕ͩɺ ԿͷҼՌ͔ιϑτΣΞඪ४Խ෦ʹଐ ͞ΕΔ͜ͱʹͳͬͨͷͩͬͨʜʜɻ
None
None
݄ؒϢχʔΫϒϥβ ສ ສ ສ ສ ສ
ສ ݄ ݄ ݄ ݄ ݄ ݄ ݄ ݄ ݄ ݄ ݄ ݄ ݄ 1$ ϞόΠϧ ສ6# ʢ݄ظୈ࢛ظܾࢉิઆ໌ࢿྉʣ
εϚϗΞϓϦྦྷܭ%- ύζυϥ ສɺࠇೣ ສ J04 ສ "OESPJEສ ʢ݄࣌ʣ
ߘϨγϐ ສ ສ ສ ສ ສ ສ ສ ݄ ݄
݄ ݄ ݄ ݄ ݄ Ϩγϐ ສ ʢ݄ظୈ࢛ظܾࢉิઆ໌ࢿྉʣ
ΫοΫύουͷϢʔβʔ உੑ ঁੑ ঁੑ உੑ ੑผ Ҏ্
ҎԼ ҎԼ Ҏ্ ʢঁੑʣ ʢ݄࣌ʣ
. . . . . 2 2 2
2 2 2 2 2 2 2 2 2 2 2 2 ձһࣄۀ ࠂࣄۀ ͦͷଞ ࢛ظച্ߴ ඦສԁʢ࿈݁ʣ ʢ݄ظୈ࢛ظܾࢉิઆ໌ࢿྉʣ
ΞϓϦέʔγϣϯߏʢ8FCʣ MySQL Redis Memcached Unicorn Rails 3.2 Ruby 2.0 nginx
Amazon Web Service Apache
ΞϓϦέʔγϣϯنʢ8FCʣ w Ϟσϧɹɹɹɹɹɹɹʜ Ϋϥε w ίϯτϩʔϥʔɹɹɹʜΫϥε w ϏϡʔςϯϓϨʔτɹʜ ϑΝΠϧ w
ϧʔςΟϯάఆٛɹɹʜ ߦ w 34QFD&YBNQMFɹɹʜ ݸ w σϓϩΠճɹɹɹɹʜճҎ্ʗ ʢ݄࣌ʣ
None
࠷ߴʹ͓͍͍͠ʮνϣίϨʔτέʔΩʯ Ͳ͏ͬͨΒͰ͖Δ͔Λߟ͍͑ͯͩ͘͞ɻ
None
ʮຖͷྉཧΛָ͠Έʹʯ Ͳ͏ͬͨΒͰ͖Δ͔Λߟ͍͑ͯͩ͘͞ɻ
ࣦഊ͢ΔΓํ ָ͠ΈʹͳΔͨΊͷཁ݅Λఆٛ͢Δ ্هΛຬͨ͢ػೳΛઃܭ͢Δ ιϑτΣΞΛ࣮͠ɺςετ͢Δ
ͳࣦͥഊ͢Δͷ͔ʁ ָ͠ΈʹͳΔͨΊͷཁ݅Λఆٛ͢Δ ্هΛຬͨ͢ػೳΛઃܭ͢Δ ιϑτΣΞΛ࣮͠ɺςετ͢Δ ʮଥੑ֬ೝʯͷϓϩηε͕ͳ͍
̫ˍ̫ʢݕূͱଥੑ֬ೝʣ w ݕূ ٬؍తূڌΛఏࣔ͢Δ͜ͱʹΑͬͯɺنఆཁٻࣄ߲ ͕ຬͨ͞Ε͍ͯΔ͜ͱΛ֬ೝ͢Δ͜ͱɻ w ଥੑ֬ೝ ٬؍తূڌΛఏࣔ͢Δ͜ͱʹΑͬͯɺಛఆͷҙਤ͞ Εͨ༻్ຢద༻ʹؔ͢Δཁٻࣄ߲͕ຬͨ͞Ε͍ͯ Δ͜ͱΛ֬ೝ͢Δ͜ͱɻ
̫ࣈϞσϧͱ̫ˍ̫ ଥੑ֬ೝ ཁ݅ఆٛ جຊઃܭ ৄࡉઃܭ ࣮ɾ୯ମςετ ݁߹ςετ γεςϜςετ ड͚ೖΕςετ اը
ධՁ ݕূ
̫ࣈϞσϧͱքʢ༨ஊʣ ൃଆൣғ ཁ݅ఆٛ جຊઃܭ ৄࡉઃܭ ࣮ɾ୯ମςετ ݁߹ςετ γεςϜςετ ड͚ೖΕςετ اը
ධՁ डୗଆൣғ डୗ։ൃͰଥੑ֬ೝ͕ ʹͳΒͳ͍ཧ༝ ਖ਼֬ʹཁ݅ఆٛɾड͚ೖ Εςετൃଆ
ޭ͢ΔΓํ ιϑτΣΞΛ͔ͭͬͯΒ͏ ָ͠Έʹͳ͔ͬͨΛௐΔ Ͳ͏ͬͨΒͬͱָ͠ΈʹͳΔ ιϑτΣΞΛͭ͘ΕΔ͔ߟ͑Δ
σΠϒɾτʔϚεᐌ͘ɺ " 8IFSFEPXFXBOUUPCF # 8IFSFBSFXF $ )PXEPXFJNQSPWFPVSQSPDFTT 5IJTJT"HJMJUZ5IFSFJTOPNPSF
ཁٻຬͷࣄޙੑ ιϑτΣΞ͕ཁٻΛຬ͍ͨͯ͠Δ͔ɺ ιϑτΣΞΛΘͳ͍ͱஅͰ͖ͳ͍ɻ
͠ɺ͓٬͞·ʹΉͷΛฉ͍͍ͯͨΒɺ ͓٬͞·ʮͬͱ͍അ͕ཉ͍͠ʯͱ ͍͑ͯͨͩΖ͏ɻ ϔϯϦʔɾϑΥʔυʦཁग़యʧ
୭͕ސ٬ͳͷ͔͕Θ͔Βͳ͚ΕɺԿ͕ ࣭ͳͷ͔Θ͔Βͳ͍ɻ ΤϦοΫɾϦʔεʰϦʔϯελʔτΞοϓʱ ࣭୭͔ʹͱͬͯͷՁͰ͋Δɻ δΣϥϧυɾϫΠϯόʔάʰιϑτΣΞจԽΛΔ̍ʱ
ߏங͢Δ ܭଌ͢Δ ֶͿ σʔλ ΞΠσΞ ߏஙɾܭଌɾֶशͷϧʔϓ ͜ͷϧʔϓʹཁ͢Δ࣌ؒΛ࠷খԽ͢Δ
ϧʔϓʹཁ͢Δ࣌ؒΛ࠷খԽ͢Δʹʁ ʢʹιϑτΣΞͷͭ͘Γํͷվળʣ
ࣦഊ͢ΔΓํ ։ൃϓϩηεඪ४Λఆٛ͢Δɻ ։ൃϓϩηεඪ४ΛϓϩδΣΫτຖʹ ςʔϥϦϯά͢Δɻ
ͳࣦͥഊ͢Δͷ͔ʁ ։ൃϓϩηεඪ४Λఆٛ͢Δɻ ։ൃϓϩηεඪ४ΛϓϩδΣΫτຖʹ ςʔϥϦϯά͢Δɻ ݱ࣮ͷ։ൃϓϩηεͷվળͰͳ͍
ޭ͢ΔΓํ ϦϦʔεՄೳͳঢ়ଶʹ͢Δ ιϑτΣΞΛ։ൃ͢Δ มߋΛՃ͔͑ͯΒϦϦʔεՄೳͳ ঢ়ଶʹͳΔ·ͰͷແବΛͳ͘͢
ιϑτΣΞੜ࢈ੑ ιϑτΣΞͷੜ࢈ੑΛ্ͤ͞ΔͨΊͷ ޮՌతͳख๏͓Αͦࡾͭʹྨ͞ΕΔɻ w ෦Խʜͭ͘Βͳ͍Α͏ʹ͢Δ w ࣗಈԽʜ͠ͳ͍Α͏ʹ͢Δ w ՄࢹԽʜΘ͔ΔΑ͏ʹ͢Δ
ܧଓతσϦόϦʔ ܧଓతσϦόϦʔιϑτΣΞ։ൃʹ͓ ͚ΔنͷͻͱͭͩɻʜʜܧଓతσϦό ϦʔΛ࣮ݱ͢Δʹɺ։ൃνʔϜ͕ιϑτ ΣΞΛܧଓతʹ౷߹͠ɺ࣮ߦϑΝΠϧΛ Ϗϧυ͠ɺ͞ΒʹͦΕΛࣗಈతʹςετ ͯ͠Λݕग़͢Ε͍͍ɻ IUUQDBQTDUSMRVFKQLENTOSXJLJCMJLJ $POUJOVPVT%FMJWFSZ
ࣗಈςετͱඅ༻ରޮՌʢ༨ஊʣ ςετࣗಈԽ։ൃϓϩηεͷϜμऔΓͰ ͋ΓɺͦͦϜμऔΓʹඅ༻ରޮՌͱ͍ ͏֓೦͏·Εͳ͍ʢΩϦοʣ
σϓϩΠϝϯτύΠϓϥΠϯ ՌϦϙδτϦ όʔδϣϯίϯτϩʔϧ ιʔείʔυ ઃఆ ίϛοτεςʔδ ड͚ೖΕεςʔδ ड͚ೖΕςετ ڥઃఆɺσϓϩΠɺ εϞʔΫςετ
ੑೳςετ ڥઃఆɺσϓϩΠɺ εϞʔΫςετ ຊ൪ڥ ڥઃఆɺσϓϩΠɺ εϞʔΫςετ ίϯύΠϧ ίϛοτςετ Ռ࡞ ίʔυղੳ ڥઃఆ σϓϩΠ εϞʔΫςετ ड͚ೖΕςετ ઃఆ +F[)VNCMFɺ%BWJE'BSMFZʰܧଓతσϦόϦʔʱ
ΫοΫύουͷύΠϓϥΠϯ Source Code Review Continuous Integration Production Test Developement Production
GitHub Git Repository merge pull req pull tag deploy deploy
Developer Machine Redis Shared Development MySQL EC2 Ruby on Rails
memcached Remote Spec Workers remote_spec worker remote_spec worker GitHub Enterprise LAN Tokyo Tyrant Development App Server push rspec deploy HipChat ϩʔΧϧͷ։ൃڥ
։ൃऀʹΑΔςετ 34QFDʹΑΔςετ ୯ମςετπʔϧʹΑͬͯɺσʔλϕ ʔεؚΊͨςετΛ͢Δ $BQZCBSBʹΑΔςετ ը໘ͳ͠ͷΣϒϒϥβΛ༻͍ͯɺ γφϦΦϕʔεͷςετΛ͢Δ
։ൃऀςετɾ2"ςετʢ༨ஊʣ ։ൃऀςετͱ2"ςετରཱతͳ֓೦ Ͱͳ͘ɺςετͷ͋Δଆ໘ʹ͗͢ͳ͍ɻ ྨ͋Γ͖Ͱߟ͑ΔͷͰͳ͘ɺϦϦʔε ·ͰʹԿ͕ඞཁ͔Λߟ͑Α͏ɻ
34QFDͷಛ ;Δ·͍ۦಈ։ൃʢ#%%ʣͷͨΊͷςες ΟϯάϑϨʔϜϫʔΫɻ w σϑΝΫτελϯμʔυͰ͋Δ w ςετίʔυΛߏԽ͍͢͠ w ΤίγεςϜ͕ॆ࣮͍ͯ͠Δ
34QFDʹΑΔςετ describe SymbolStack do ... context 'when stack is empty'
do subject(:empty_stack) { SymbolStack.new } describe '#size' do it { expect(empty_stack.size).to eq 0 } end
$BQZCBSBʹΑΔςετ feature 'User login' do scenario 'successful login' do visit
login_path fill_in 'Login', with: '
[email protected]
' fill_in 'Password', with: 'password' click_link 'Submit' expect(current_path).to root_path end
LAN EC2 CI Server Git Repository Production Test HipChat tag
pull notify deploy Development DB schema Remote Spec distribute Git Repository clone pusher service hook pull push Developer merge ιʔείʔυͷྲྀΕ
ίʔυϨϏϡʔ Team Pull Request Owner Developer Developer review open merge
review ίʔυϨϏϡʔνʔϜ୯ҐͰߦͳ͏͕ɺ શһ͕ϨϏϡʔ͢Δ͜ͱͰ͖Δɻ
None
None
None
None
Repository Product Support Product Manager Issue Developer UI/UX Designer Pull
Request file file review open open (JU)VC&OUFSQSJTFͷར༻ ΤϯδχΞҎ֎ʹσβΠφʔ৬ɺσΟϨ Ϋλʔ৬ɺαϙʔτ৬ͳͲ
LAN EC2 CI Server Git Repository Production Test HipChat tag
pull notify deploy Development DB schema Remote Spec distribute Git Repository clone pusher service hook pull push Developer merge ιʔείʔυͷྲྀΕ
$*αʔόʮ͓Ή͖Μ͢ʯ IUUQTHJUIVCDPNNBTBOPCVJNBJFNPUJPOBMKFOLJOTQMVHJO
$*࣌ؒʹؔ͢Δܦݧଇ ։ൃऀेʹၗຫͳͷͰɺ ͰΠϥΠϥ͠ɺͰΩϨΔɻ
$*Λૣ͘͢Δ ϚϧνϓϩηεԽʢQBSBMMFM@UFTUTʣ ࢄԽ ୈ̍ੈSFNPUF@TQFD ୈ̎ੈSFNPUF@TQFD
ୈ̏ੈ3334QFD
3334QFDͷಛ εϙοτΠϯελϯεΛར༻ ϓϩηεఀࢭ͔Βͷࣗಈ෮ؼ ࣦഊͨ͠ςετͷࣗಈ࠶࣮ߦ ςετ࣮ߦॱংͷ࠷దԽ
͍ςετͷػత࣮ߦ Φʔϓϯιʔε IUUQTHJUIVCDPNDPPLQBESSSTQFDCMPCNBTUFS%&4*(/NE
Master Slave Worker Slave Slave Worker ʜ ʜ DB 3334QFDͷߏ
&YBNQMFʜ εϨʔϒʜ ϫʔΧʔʜฒྻ ࣮ߦ࣌ؒɹʜ
ςετͷ࣭ ػೳͷՁϦϦʔεͯ͠ॳΊͯΘ͔Δ ʹςετʹաͳઌߦࢿͰ͖ͳ͍ w ςετઃܭఔΛಠཱͯ͠ઃ͚ͳ͍ w ։ൃఔͷ͋ͱͷςετఔͳ͍ ຊ൪ڥͰͷμϝʔδίϯτϩʔϧ͕ॏཁ
None
None
None
None
None
σϕϩούʔͱϢʔβʔͷίϛϡχέʔγ ϣϯίϥϘϨʔγϣϯΛ્Ήนͳ͘ͳ ͬͨɻόάͷण໋ɺϲ݄͔Βʹ ॖ͞Εͨɻ ̟ɾΟςΧʔɺ̟ɾΞʔϘϯɺ̟ɾΩϟϩʔϩ ʰςετ͔Βݟ͑ͯ͘ΔάʔάϧͷιϑτΣΞ։ൃʱ
ͱɺ͍͏͓ͩͬͨͷ͞ʜʜ
ϞόΠϧΞϓϦέʔγϣϯ w ΑΓϢʔβʔΤΫεϖϦΤϯε͕ॏཁʹ w Ϧονͳ6*ɺෳࡶͳঢ়ଶͷςετ w ΞϓϦέʔγϣϯσϦόϦʔ͕࠶೩ w ෳόʔδϣϯ͕ซଘ w
ϦϦʔεϑϩʔͷ࠶ߏங w ϦϦʔεظؒɺςετϑΣʔζ
෮श ສճʹճɺສԁ͕ͨΔεϩοτϚ γϯ͕͋Δͷͱ͠·͢ɻ͜ͷεϩοτϚ γϯͰ༡Ϳͱ͖ɺճ͋ͨΓ͍͘Βίετ Λ͔͚Δ͖͔ߟ͍͑ͯͩ͘͞ɻ
·ͱΊ w ϢʔβʔͷཁٻɺϦϦʔεͯ͠ॳΊͯ ͔Δɻ w ߏஙɾܭଌɾֶशͷϧʔϓʹཁ͢Δ࣌ؒ Λ࠷খԽ͠ͳ͚ΕͳΒͳ͍ɻ w ϦϦʔε·ͰͷϓϩηεΛఆٛ͠ɺͦ͜ ͔ΒແବΛऔΓআ͘ɻ