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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Ryoichi SEKIGUCHI
September 21, 2014
Technology
6
1.4k
rubyhiroba
Ryoichi SEKIGUCHI
September 21, 2014
Tweet
Share
More Decks by Ryoichi SEKIGUCHI
See All by Ryoichi SEKIGUCHI
非同期処理とは何なのか
ryopeko
0
120
functionalなアプローチで動的要素を排除する
ryopeko
1
4.3k
Ruby makes everything
ryopeko
0
150
正しく失敗しながら進むプロダクト開発/railsdm2018
ryopeko
10
6.2k
CircleCI を使って自動(ほぼ)でセキュリティアップデート / circleci meetup
ryopeko
4
590
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
Mitigating geopolitical risks with local-first software and atproto
ept
0
130
欠陥分析(ODC分析)における生成AIの活用プロセスと実践事例 / 20260320 Suguru Ishii & Naoki Yamakoshi & Mayu Yoshizawa
shift_evolve
PRO
0
180
大規模ECサイトのあるバッチのパフォーマンスを改善するために僕たちのチームがしてきたこと
panda_program
1
260
「お金で解決」が全てではない!大規模WebアプリのCI高速化 #phperkaigi
stefafafan
4
1.8k
Google系サービスで文字起こしから勝手にカレンダーを埋めるエージェントを作った話
risatube
0
200
【社内勉強会】新年度からコーディングエージェントを使いこなす - 構造と制約で引き出すClaude Codeの実践知
nwiizo
2
540
【Λ(らむだ)】最近のアプデ情報 / RPALT20260318
lambda
0
120
ソフトバンク流!プラットフォームエンジニアリング実現へのアプローチ
sbtechnight
1
220
Windows ファイル共有(SMB)を再確認する
murachiakira
PRO
0
200
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
2
13k
20年以上続く PHP 大規模プロダクトを Kubernetes へ ── クラウド基盤刷新プロジェクトの4年間
oogfranz
PRO
0
120
アーキテクチャモダナイゼーションを実現する組織
satohjohn
1
1.1k
Featured
See All Featured
Scaling GitHub
holman
464
140k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
270
The Language of Interfaces
destraynor
162
26k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
690
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
380
How STYLIGHT went responsive
nonsquared
100
6k
Producing Creativity
orderedlist
PRO
348
40k
[SF Ruby Conf 2025] Rails X
palkan
2
840
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.5k
My Coaching Mixtape
mlcsv
0
80
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 Λબ͖͢