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
rubyhiroba
Search
Ryoichi SEKIGUCHI
September 21, 2014
Technology
1.4k
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
rubyhiroba
Ryoichi SEKIGUCHI
September 21, 2014
More Decks by Ryoichi SEKIGUCHI
See All by Ryoichi SEKIGUCHI
非同期処理とは何なのか
ryopeko
0
140
functionalなアプローチで動的要素を排除する
ryopeko
1
4.4k
Ruby makes everything
ryopeko
0
170
正しく失敗しながら進むプロダクト開発/railsdm2018
ryopeko
10
6.2k
CircleCI を使って自動(ほぼ)でセキュリティアップデート / circleci meetup
ryopeko
4
600
Kaizen Platform でやっている Kaizen Week というイベントについて / kaize week tokyurubykaigi 10
ryopeko
2
1.2k
mysql casual talks vol7
ryopeko
0
2.6k
devsumi2014-dena-bootcamp2014
ryopeko
40
65k
jtrk02
ryopeko
0
5.8k
Other Decks in Technology
See All in Technology
40代で“やっとエンジニアになれた”――閉じた学びを開き、空の青さを知る / 20260628 Naoki Takahashi
shift_evolve
PRO
4
290
「ビジネスがわかるエンジニア」とは何か?
ryooob
0
130
SONiC Scale-Up Working Group から探る Scale-UpやUltraEthernet機能の実装方法
ebiken
PRO
2
440
データサイエンスを価値につなげるプロジェクト設計 〜 DS一年目が現場で得た気づき 〜
ysd113
1
290
ぼっちではじめた登壇が「51名」「241件」の発信に化けた
subroh0508
1
280
入門!AWS Blocks
ysuzuki
1
170
ACE-Step-1.5で見る 音楽生成AIのしくみと“破綻だけ直す”Retake機能の開発【zennfes spring 2026 登壇資料】
personabb
1
550
AIネイティブな開発のサプライチェーンリスク対策 〜激動の開発現場でリスクに立ち向かう〜【ZennFes】
cscengineer
PRO
2
150
IaC コードを資産へ:AWS CDK 社内ライブラリと横断展開 / aws-summit-japan-2026
gotok365
9
1.4k
【Snowflake Summit 2026 Recap!!】Snowflake Summit Deep Dive: Security & Governance
civitaspo
1
280
アンオフィシャルな、オフィシャルからのお願い
wyamazak_devrel
0
140
脱SaaS!FDEを支えるプロビジョニングと分離設計
knih
0
250
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
528
40k
Agile that works and the tools we love
rasmusluckow
331
21k
The Limits of Empathy - UXLibs8
cassininazir
1
360
Are puppies a ranking factor?
jonoalderson
1
3.6k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
480
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
320
The Pragmatic Product Professional
lauravandoore
37
7.3k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
440
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.5k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
200
Building the Perfect Custom Keyboard
takai
2
800
Transcript
Rails ʹ͓͚Δ ֎෦γεςϜͱͷεϜʔζͳ ౷߹։ൃ ؔޱ྄Ұ ! ryopeko " ryopeko 3VCZ)JSPCBੜ׆ൃදձ
ؔޱ ྄Ұ # ryopeko " ryopeko • ύʔϑΣΫτRuby ڞஶऀ •
σϒαϛ2014εϐʔΧʔ • ϕετεϐʔΧʔ 2Ґड • ࠷ۙਓ͔ؒͨͪΒෳDBͱݺ Ε͍ͯΔ
IUUQBENJOTCBS
֎෦γεςϜΛͬͨ ৽ΞϓϦέʔγϣϯ։ൃ
IUUQEJBSZTIVDSFBNOFUCMPHSVCZLBJHJMJHIUOJOHUBMLTIUNM lΈΜͳͬͱಠࣗݚڀͷՌΛൃද͢Δͱ͍͍ͱࢥ͏
֎෦γεςϜͱͷܨ͗͜Έ $ API % RPC DB ࢀর
ࠓճDBΛڞ༗͢Δ߹ͷ ख๏ʹ͍ͭͯͷ͓
' "QQ
' "QQ ' "QQ
' "QQ ' "QQ ' "QQ
' "QQ ' "QQ ' "QQ
DBڞ༗ͨ͠߹ʹ ʹͳͬͯ͘Δ͜ͱ
ෳਓͰ։ൃ͍ͯ͠Δ߹ BQQMF DIFSSZ QFBDI HSBQF PSBOHF GSVJUT
ෳਓͰ։ൃ͍ͯ͠Δ߹ BQQMF DIFSSZ QFBDI HSBQF PSBOHF GSVJUT TFMFDU
ෳਓͰ։ൃ͍ͯ͠Δ߹ BQQMF DIFSSZ QFBDI HSBQF PSBOHF GSVJUT TFMFDU TFMFDU
ෳਓͰ։ൃ͍ͯ͠Δ߹ BQQMF DIFSSZ QFBDI HSBQF PSBOHF GSVJUT TFMFDU EFMFUF TFMFDU
ෳਓͰ։ൃ͍ͯ͠Δ߹ BQQMF DIFSSZ QFBDI HSBQF PSBOHF GSVJUT TFMFDU EFMFUF TFMFDU
Unit Test Ͱಉ༷
Unit Test ࣌ͷڞ༗DBͷࠔΓࣄ • ςετ༻ͷDB͕ڞ༗͞ΕͯΔͱ݁ՌʹӨڹ • ςετ༻ͷDB͕ଘࡏ͠ͳ͍߹DBͷϦΫ ΤετΛϞοΫ͢Δඞཁ • ςετσʔλΛ༻ҙ͢Δͷ͕͘͠ͳΔ
ڞ༗DBͷεΩʔϚมߋʹ ै͢Δͷ͕େม
͜͜·ͰͰ σϝϦοτΛ·ͱΊΔͱ…
DBڞ༗ͨ͠߹ͷσϝϦοτ • ෳਓͰͷ։ൃ࣌ʹσʔλෆ߹ͱͳΔ • Unit Test ࣌ʹڞ༗DBͷऔΓѻ͍͕ࡶʹͳΔ • ڞ༗DBͷεΩʔϚมߋʹै͢Δͷ͕େม
ΓखݩʹDB͕͋ͬͯ΄͍͠… (Rails ͬͯखݩʹDB࡞Γ·͢͠…)
Ͱखݩʹ ࣋ͬͯΈ·͠ΐ͏
DBڞ༗ͨ͠߹ͷσϝϦοτ • ෳਓͰͷ։ൃ࣌ʹσʔλෆ߹ͱͳΔ • Unit Test ࣌ʹڞ༗DBͷऔΓѻ͍͕ࡶʹͳΔ • ڞ༗DBͷεΩʔϚมߋʹै͢Δͷ͕େม ্ͭղܾͦ͠͏ʜ
खݩʹ࣋ͭ߹ͷ σϝϦοτʹ͍ͭͯߟ͑ͯΈΔ
खݩʹDBΛ࣋ͬͨ߹ͷσϝϦοτ • σʔλͷ४උ͕େม • ରʹ Slave ؚ͕·Ε͍ͯͯߋ৽ܥ SQL ଧͭΑ͏ͳ ίʔυΛॻ͍͍ͯΔ߹ɺຊ൪ͰϨϓϦ͕ࢭ·ͬͯ
ࢮ͵ • ݩͷDBεΩʔϚΛΔज़͕ඞཁ • ݩͷDBεΩʔϚΛखݩʹ؆୯ʹ࠶ݱ͢Δज़͕ඞཁ
σʔλͷ४උ͕େม
σʔλͷ४උ͕େม • db:seed తͳΈͰҰׅͰ༻ҙ͢Δ • ֎෦͔Βࢀর͢ΔͷΈͷDBͷ߹ɺσʔλύ λʔϯΛཏͰ͖Δͱ͍͏ϝϦοτ • େมͳͷύλʔϯͷϝϯς •
(Ͳ͏ͤςετͰඞཁͩ͠)
खݩʹDBΛ࣋ͬͨ߹ͷσϝϦοτ • σʔλͷ४උ͕େม • ରʹ Slave ؚ͕·Ε͍ͯͯߋ৽ܥ SQL ଧͭΑ͏ͳ ίʔυΛॻ͍͍ͯΔ߹ɺຊ൪ͰϨϓϦ͕ࢭ·ͬͯࢮ
͵ • ݩͷDBεΩʔϚΛΔज़͕ඞཁ • ݩͷDBεΩʔϚΛखݩʹ؆୯ʹ࠶ݱ͢Δज़͕ඞཁ
Slave ʹߋ৽ܥΫΤϦ
Slave ʹߋ৽ܥΫΤϦ • # eagletmt/switch_point Λ͏͜ͱͰղܾ • Slave ʹߋ৽ܥΫΤϦΛଧͱ͏ͱ͢Δͱྫ֎ •
ෳDBΛऔΓѻ͏͜ͱʹͳΔͷͰ switch_point ͱͯ༗ޮ • ࣗͣͱ M/S Λҙࣝ͢ΔΑ͏ͳએݴతهड़ʹͳΔ
IUUQTHJUIVCDPNFBHMFUNUTXJUDI@QPJOUCMPCNBTUFSTQFDNPEFMTSC TXJUDI@QPJOUͷઃఆྫ Ұ෦ൈਮ
IUUQTHJUIVCDPNFBHMFUNUTXJUDI@QPJOUCMPCNBTUFSTQFDNPEFMTSC TXJUDI@QPJOUͷઃఆྫ Ұ෦ൈਮ
खݩʹDBΛ࣋ͬͨ߹ͷσϝϦοτ • σʔλͷ४උ͕େม • ରʹ Slave ؚ͕·Ε͍ͯͯߋ৽ܥ SQL ଧͭΑ͏ͳ ίʔυΛॻ͍͍ͯΔ߹ɺຊ൪ͰϨϓϦ͕ࢭ·ͬͯࢮ
͵ • ݩͷDBεΩʔϚΛΔज़͕ඞཁ • ݩͷDBεΩʔϚΛखݩʹ؆୯ʹ࠶ݱ͢Δज़͕ඞཁ
ݩͷDBͷεΩʔϚΛΔज़
ݩͷDBͷεΩʔϚΛΔज़ • ۀͰ͍ͬͯΔεΩʔϚશͯ git Ͱཧ͞Ε͍ͯΔ • ͜͜ΛݟΕৗʹ࠷৽͕͋Δͱ͍͏ঢ়ଶ • ͜ͷϦϙδτϦͷεΩʔϚใΛ༻͢ΔΑ͏ʹσϓ ϩΠϓϩηεʹΈࠐ·Ε͍ͯΔ
• ฐࣾͷࣄྫʹؔΘΒͣɺmigration ֎ͷεΩʔϚͲ͜ ͔͠ΒʹҰݩཧ͞Ε͍ͯΔ͖
खݩʹDBΛ࣋ͬͨ߹ͷσϝϦοτ • σʔλͷ४උ͕େม • ରʹ Slave ؚ͕·Ε͍ͯͯߋ৽ܥ SQL ଧͭΑ͏ͳ ίʔυΛॻ͍͍ͯΔ߹ɺຊ൪ͰϨϓϦ͕ࢭ·ͬͯࢮ
͵ • ݩͷDBεΩʔϚΛΔज़͕ඞཁ • ݩͷDBεΩʔϚΛखݩʹ؆୯ʹ࠶ݱ͢Δज़͕ඞཁ
ݩͷDBͷεΩʔϚΛ खݩͰ؆୯ʹ࠶ݱ͢Δज़
ݩͷDBͷεΩʔϚΛ؆୯ʹ࠶ݱ͢Δज़ • Ұݩཧ͞Ε͍ͯΔεΩʔϚΛDBʹద༻ ͢Δͷ໘ • ໘ͳঢ়ଶͩͱεΩʔϚ͕ߋ৽͞Εͳ͘ͳΔ • Rails ʹ db:migrate
ͱ͍͏Έ͕͋Δͷ Ͱɺͦͷఔʹద༻ίετΛԼ͍͛ͨ
લఏ:εΩʔϚ͕ϦϙδτϦ ཧ͞Ε͍ͯΔ
͜ͷΛ ղܾ͢ΔΈΛ࡞ͬͯΈͨ
' # (JU)VC"1*$BMM 42- &YFDVUF ( 42-
db_supplier # SZPQFLPEC@TVQQMJFS
db_supplier (settings) DPOpHEBUBCBTFZNM
db_supplier (settings) DPOpHFOWJSPONFOUTEFWFMPQNFOUSC
DEMO
None
None
db_supplier Ͱ࣮ݱ͞Εͨ͜ͱ • ؆୯ʹҰݩཧ͞ΕͨεΩʔϚΛద༻͢Δ͜ ͱ͕Ͱ͖ͨ • ςετ࣌ʹ migration, fixture ͕͑ΔΑ͏ʹ
ͳͬͨ • ֎෦ͷDBͷײ৺ࣄΛݮΒͤͨ
db_supplier Ͱ࣮ݱ͍ͤͨ͜͞ͱ • εΩʔϚʹߋ৽ʹඋ͑ͯͲͷ࣌ͷͷ͕ద ༻͞Ε͍ͯΔ͔Θ͔ΔΑ͏ʹ͢Δ • db:seed ૬ͷͷΈࠐΊΔΑ͏ʹ • etc…
खݩʹDBΛ࣋ͬͨ߹ͷσϝϦοτ • σʔλͷ४උ͕େม • ରʹ Slave ؚ͕·Ε͍ͯͯߋ৽ܥ SQL ଧͭΑ͏ͳ ίʔυΛॻ͍͍ͯΔ߹ɺຊ൪ͰϨϓϦ͕ࢭ·ͬͯࢮ
͵ • ݩͷDBεΩʔϚΛΔज़͕ඞཁ • ݩͷDBεΩʔϚΛखݩʹ؆୯ʹ࠶ݱ͢Δज़͕ඞཁ
·ͱΊ
·ͱΊ • ֎෦ͷDBΛͦͷ··ར༻͢Δͱ։ൃ࣌ʹڝ߹ ͯ͠͠·͏ • खݩʹDBΛ࣋ͭʹͯ͠ద༻͕໘ • εΩʔϚͷཧͱద༻͕ඞཁ • gem
࡞ͬͯղܾͨ͠
࠷ޙʹ…
ͱ͍͑… • DBڞ༗ີ݁߹ʹͳΔ • ϞσϧͷϩδοΫ͕ॏෳͯ͠ଘࡏ͢ΔՄೳੑ • ҙਤ͍ͯ͠ͳ͍ͱ͜ΖͰDBΛ৮ΒΕ͍ͯΔՄ ೳੑ • API
͕༻ҙͰ͖ΔͳΒ API Λબ͖͢