Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
データベース・リファクタリングを読む / hello-database-refactoring
Search
hideki kinjyo
PRO
September 27, 2021
Programming
1.4k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
データベース・リファクタリングを読む / hello-database-refactoring
社内勉強会での発表ネタです
hideki kinjyo
PRO
September 27, 2021
More Decks by hideki kinjyo
See All by hideki kinjyo
Symfonyが 簡単にAI agentになる
o0h
PRO
0
74
yield再入門 #phpcon
o0h
PRO
0
1.5k
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
360
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
3
380
ソースコード→AST→オペコード、の旅を覗いてみる
o0h
PRO
1
240
PCOVから学ぶコードカバレッジ #phpcon_odawara
o0h
PRO
0
470
夢の無限スパゲッティ製造機 -実装篇- #phpstudy
o0h
PRO
0
290
夢の無限スパゲッティ製造機 #phperkaigi
o0h
PRO
0
990
PHPer Book Revue 「雑に作る」 #phperkaigi
o0h
PRO
0
450
Other Decks in Programming
See All in Programming
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
160
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
250
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
500
GKE で Pod の見方を変えたら、スケールアウト時の挙動を真に捉えられた話
stkk
0
130
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
2.2k
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
7
2.1k
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
450
Family mrubyの進捗
kishima
1
130
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
150
SREの越境 / SRE Collaboration
y0hgi
2
260
スマートフォンでモールス信号を送受信する 〜スマートフォンのLEDとカメラで作る光通信の設計と実装〜
atsuki_seo
0
160
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2k
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Why Our Code Smells
bkeepers
PRO
340
58k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
460
A better future with KSS
kneath
240
18k
Statistics for Hackers
jakevdp
799
230k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
430
Are puppies a ranking factor?
jonoalderson
2
3.9k
Building Adaptive Systems
keathley
44
3.2k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
240
Transcript
໊ஶɿ ʮσʔλϕʔεɾϦϑΝΫλϦϯάʯ ΛಡΉ σϒϥΠϒʂ`21 / 2021.09.27 BY Hideki Kinjyo
ͳΜͰϦϑΝΫλϦϯά͠Α͏ʂ • ΞϓϦέʔγϣϯʂ • ςετʂ • σʔλϕʔεʂ • ৫ʂ •
αʔόʔʂ
ͳΜͰϦϑΝΫλϦϯά͠Α͏ʂ • ΞϓϦέʔγϣϯʂ • ςετʂ • σʔλϕʔεʂ • ৫ʂ •
αʔόʔʂ ←ࠓίί
͍ͭͷ • ۚलथ / ͖Μ͡ΐ͏ͻͰ͖ • GitHub: @o0h / Twitter:
@o0h_ • ͖ͳFWCakePHP • ΞΠίϯ ඒຯ͍͠ࡪࢠကͷࣸਅͰ͢
ࠓͷ • ʮϦϑΝΫλϦϯάʯ͕ςʔϚͩΑʙͱ͍ ͏͜ͱͰ • ຊͷհͰ͢
(ޙ͔Β)ؾ͍ͮͨ͜ͱ • طʹઌਓ͕ͬͯΜͳ͊ʙʂ • ࢿྉ࡞Γ࢝Ί͔ͯΒࢥ͍ग़ͨ͠ • Ͱؾʹ͠ͳ͍Ͱߦ͖·͢ • ྑ͍͔ͩΒݟͯ https://speakerdeck.com/soudai/database-refactoring
͓͠ͳ͕͖ 1. ͡ΊʹɿʮϦϑΝΫλϦϯάʯͬͯԿ͚ͩͬ(͓͞Β͍) 2. ʮσʔλϕʔεɾϦϑΝΫλϦϯάʯͬͯͲΜͳຊʁ 3. औΓ্͛ΒΕ͍ͯΔύλʔϯΛ͍͔ͭ͘հ͢ΔΑʂ
$1 ʮϦϑΝΫλϦϯάʯͬͯԿ͚ͩͬ (͓͞Β͍)
༗໊ͳຊ • (ୈ1൛ͷ)ຊޠ൛෭ɿʮϓϩάϥϜͷମ࣭վળςΫχοΫʯ • ϦϑΝΫλʹ͍ͭͯͷʮݪଇʯʮख๏ʯɺʮෆ٢ͳष͍ʯʹ͍ͭͯ ·ͱΊͨຊ • ݸਓతʹʮϓϩάϥϚͷΩϟϦΞͷૣ͍ஈ֊Ͱग़ձ͓͖ͬͯ͘ ຊʯͷ1ͭͩͱࢥ͏ •
“GoFͷσβΠϯύλʔϯੳ͔ΒઃܭʹҠΔࡍͷΈʹ͍ͭͯɺ ʹର͢Δղܾࡦͱͯ͠ಓےΛࣔ͠·͢ɻҰํϦϑΝΫλϦϯάɺ ࣮ʹஔ͍ͯઃܭΛ;Γ͔͑ΓɺطଘͷػೳΛอͪͭͭίʔυΛΑΓ Α͍ઃܭͱਐԽ͍ͤͯ͘͞खॱΛड़ͨͷͰ͢”(ϦϑΝΫλϦϯ ά ୈ2൛ ༁ऀ͋ͱ͕͖)
ϦϑΝΫλϦϯά Կ ᴷ֎෦͔Βݟͨͱ͖ͷৼΔ͍Λอͪͭͭɺཧղमਖ਼͕؆୯ ʹͳΔΑ͏ʹɺιϑτΣΞͷ෦ߏΛมԽͤ͞Δ͜ͱ ϦϑΝΫλϦϯάୈ൛ୈষ
ϦϑΝΫλϦϯά Կ ϦϑΝΫλϦϯάΛߦ͏ཧ༝(ಉ ୈ2ষΑΓ) • ϦϑΝΫλϦϯάιϑτΣΞઃܭΛվળ͢Δ • ϦϑΝΫλϦϯάιϑτΣΞΛཧղ͘͢͢͠Δ • ϦϑΝΫλϦϯάόάͷൃݟΛॿ͚Δ
• ϦϑΝΫλϦϯάϓϩάϥϛϯάΛΊΔ
ෆ٢ͳष͍ Կ ᴷࢲͨͪࠓ·Ͱඇৗʹଟ͘ͷίʔυΛݟ͖ͯ·ͨ͠ɻ͏·͘ ͍ͬͨϓϩδΣΫτͷίʔυ͋ΕɺେࣦഊΛট͍ͨͷ͋ Γ·͢ɻͦ͜ʹϦϑΝΫλϦϯάΛ༠͏ ͱ͖ʹʮඞཁͩʯͱ ڣͿ ͋Δछͷงғؾ͕͋ΓɺͦΕΛᄿ͚͗ΔೳྗΛࢲͨͪ ཆ͖ͬͯͨͷͰ͢
ϦϑΝΫλϦϯάୈ൛ୈষ
ෆ٢ͳष͍ Կ • “ϦϑΝΫλϦϯάͷඞཁੑΛࣔ͢ෆ٢ͳஹީ” • ཁ͢ΔʹʮͳΜ͔Ϛζ͍ίʔυʯ • ͜ΕϓϩάϥϚ͕(ܦݧ͔Β͘Δ)ඒҙࣝʹΑͬͯײͰ͖Δͷ͕ͩɺΑΓ ʮ۩ମతʹૌ͑ͯ͘ΔͷͰͳ͍͔ʯͱͯ͠ʮମײ֮ʯͷൺᄻ(=ष͍)͕ར ༻͞Ε͍ͯΔ
• ॻ੶ʮϦϑΝΫλϦϯάʯͰɺ৭ʑͳʮष͍ʯʹ͍ͭͯྨܕԽͱ໊͚Λߦͬ ͍ͯΔ • ৄ͘͠ʮϦϑΝΫλϦϯά ୈ3ষ ίʔυͷෆ٢ͳष͍ʯʹ
ϦϑΝΫλϦϯάͱύϑΥʔϚϯενϡʔχϯά • ϦϑΝΫλϦϯάʮઃܭΛ͑ΔʯʮՄಡੑΛ্ͤ͞ΔʯͨΊͷΞΫςΟϏςΟ • ಉ༷ʹʮϓϩάϥϜͷશମతͳػೳΛมߋ͠ͳ͍मਖ਼ʯͱͯ͠ɺύϑΥʔϚϯεɾνϡʔ χϯά͕ڍ͛ΒΕΔ • ྆ऀͷҧ͍ɺͦͷతʹ͋Δ • ՄಡੑͱύϑΥʔϚϯεɺ࣌ʹτϨʔυΦϑʹͳΔՄೳੑ͋Δ
• ্ʹॏ͖Λ͓͍͍ͯΔͳΒɺͦΕ(ϦϑΝΫλͱ͍͏ΑΓ)ύϑΥʔϚϯεɾ νϡʔχϯάͱݺΕΔ • (ݸਓతʹɺ͜ͷลΓؚΊͯਖ਼͍͠ޠኮΛͬͨํ͕ଞਓͱͷίϛϡχέʔγϣ ϯ͕εϜʔζʹͳͬͯྑ͍ͷͰͳ͍ʁͱ͍͏ؾ࣋ͪ͋Δ
ϦϑΝΫλϦϯάͱΞδϟΠϧ(తͳͷ) ᴷ͠ɺʮϏδωεՁʯΛૣ͘ఏڙ͢Δͷ͕͍ͪΜେࣄͩ ͱࢥ͍ͬͯΔͷͳΒɺ͋ͳͨͷγεςϜʹɺมԽʹԠͯ͡ਐԽ ͍ͯ͘͜͠ͱ͕ͳ͓͞ΒॏཁʹͳΔͣͩɻϦϑΝΫλϦϯάͱ ɺࣗͷमਖ਼Ͱಈ͖͕औΕͳ͘ͳΔͷΛ͙ํ๏ͩɻ ΤΫετϦʔϜɾϓϩάϥϛϯάಋೖฤୈষ
ϦϑΝΫλϦϯάͱΞδϟΠϧ(తͳͷ) • ϦϑΝΫλϦϯά(ಛʹXPͰ)͞Ε͍ͯΔ׆ಈ • ʮࣄલʹઃܭΛ͢ΔʯͷΛʮ࣮ͨ͋͠ͱͰɺઃܭΛվળ ͢Δʯͱ͍͏ࢥߟͷసʹݟΔʮΤΫετϦʔϜʯ͞ • ඞཁʹͳͬͨ࣌ʹඞཁͳίʔυ(ػೳ)Λ࣮Ͱ͖ΔΑ͏ʹɺϦ ϑΝΫλϦϯάʹΑͬͯίʔυͷʮػහੑʯΛҡ͍࣋ͯ͘͠ •
։ൃΛਐΊΔ্ͰಘֶͨͼΛɺίʔυઈ͑ؒͳ͘өͤ͞ Δ
ϦϑΝΫλϦϯάͷਐΊํ • ʮ(طଘͷ)ৼΔ͍Λอͭʯ͜ͱ͕େલఏ • ͭ·Γʮ࡞ۀͷલޙͰػೳ͕ఀࢭ͠ͳ͍ʯ͜ͱ͕ඞਢ • ʮ։ൃࡁΈʯͷͷΛʮ։ൃ్தʯʹ͢Δࣄڐ͞Εͳ͍ • খ͞ͳεςοϓΛੵΈॏͶ͍ͯ͘ͷ͕·͍͠ •
ςετͷमਖ਼ΛߦΘͳ͍(SUTͷվमͷΈ)Λߦ͏ • ςετ͕มԽ͢Δ = ৼΔ͍͕มߋ͞Ε͍ͯΔ͜ͱΛ൱ఆͰ͖ͳ͍ • ͨͩ͠ɺʮςετ࿙ΕʯΛิॆ͢Δ߹ྫ֎
$2 σʔλϕʔεɾϦϑΝΫλϦϯάͬͯ ͲΜͳຊʁ
༗໊ͳຊ • ຊޠ൛෭ɿʮσʔλϕʔεͷମ࣭վળςΫχοΫʯ • σʔλϕʔε(RDB)ΛϦϑΝΫλϦϯά͍ͯ͘͠ʹʁ Λ·ͱΊͨຊ • ϦϑΝΫλϦϯάͷςΫχοΫɺྨܕ • σʔλϕʔεͷෆ٢ͳष͍
• ϦϑΝΫλΛਐΊ͍ͯͨ͘Ίͷํ๏
SQLΞϯνύλʔϯͬͯຊ͋ͬͨ͡ΌΖ • ʮΞϯνύλʔϯʯͱ͍͏ʮෆ٢ͳष͍ʯΛհͨ͠ຊ • ࣅ͍ͯΔͬͪΌࣅ͍ͯΔ • ʮඃΔʯͱ͍͏ΑΓɺগཱͪ͠Ґஔ͕ҧ͏ײ͡ • SQLΞϯνύλʔϯ: ʮʯͱʮղܾͨ࢟͠ʯͷհ
• DBϦϑΝΫλϦϯά: ʮʯͱʮղܾͷਐΊํʯͷ հ
ຊจͷߏͰΈΔ྆ऀͷҧ͍ ͲͪΒʮయܕతͳঢ়ʯΛऔΓ্͛ɺղઆ͍ͯ͘͠ελΠϧ(ύλʔϯຊ)ɻ ଟ༷ͳύλʔϯΛൺֱɾ݁߹Ͱ͖ΔΑ͏ʹɺղઆͷ༰ߏԽ(ϑΥʔϚοτԽ)͞Ε͍ͯΔ => ͦͷߏΛൺֱ͢Δ͜ͱͰɺ྆ऀͷΩϟϥΫλʔॏ͖Λ͓͍͍ͯΔՕॴͷҧ͍͕͔Δ 42-Ξϯνύλʔϯ త Ξϯνύλʔϯ
ݟ͚ͭํ ༻͍ͯྑ͍߹ ղܾࡦ σʔλϕʔεɾϦϑΝΫλϦϯά ಈػ త τϨʔυΦϑ εΩʔϚߋ৽खॱ σʔλҠߦखॱ ϓϩάϥϜߋ৽खॱ
ྫ͑ɺͱ͋ΔΞϯνύλʔϯ͕͋Γ SQLΞϯνύλʔϯ: ʮIDϦΫϫΠΞυ(ͱΓ͋͑ͣID)ʯ • ʮԿͰ͔ΜͰʮidʯͱ͍͏ओΩʔΛஔ͚ྑ͍༁͡Όͳ͍ͧʂʯ ͱ͍͏”ष͍” • ղܾࡦ • Θ͔Γ͍͢ྻ໊ʹ͠Α͏
• نʹറΒΕͳ͍ • ࣗવΩʔͱෳ߹Ωʔͷ׆༻ • ʮ(Why)ʯʹରͯ͠ɺʮ͜͏͍͏෩ʹ͠Α͏(What)ʯѻΘΕ͍ͯ Δ͕ʮͲ͏ͬͯ҆શʹมߋΛ࣮ࢪ͢Δʁ(How)ʯ·Ͱѻ͍ͬͯͳ͍
ྫ͑ɺͱ͋ΔΞϯνύλʔϯ͕͋Γ ϦϑΝΫλϦϯά: ʮࣗવΩʔʹΑΔཧΩʔͷஔ͖͑ʯ εΩʔϚߋ৽खॱ 1. ৽͍͠ओΩʔͱͳΔΧϥϜ Λಛఆ͢Δ 2. ৽͍͠ΠϯσοΫεΛ Ճ͢Δ
3. ݩͷΧϥϜΛഇࢭ༧ఆʹ͢ Δ 4. ؔ࿈͢ΔςʔϒϧΛߋ৽͢ Δ 5. ࢀর߹ੑτϦΨʔΛߋ ৽͘͠Ճ͢Δ ϓϩάϥϜߋ৽खॱ 1. ཧΩʔΛ͍ͬͯΔ ίʔυΛআ͢Δ 2. ৽͍͠ΩʔΛݩʹ݁߹ Λߦ͏ 3. ৽͍͠ΩʔΛݩʹσʔ λऔಘΛߦ͏
ԿΛࢦͨ͠ຊͳͷ͔ • ʮ(ΞϓϦͱಉ͡Α͏ʹ)σʔλϕʔεϦϑΝΫλϦϯάͯ͠ ͍͜͏ʯͱ͍͏ओு • ͔͠XPతͳχϡΞϯεͷʮϦϑΝΫλϦϯάʯͰ͋Γɺ • ʮΤΠϠʔͬʂʂυʔϯʂʯͱؾ߹ΛೖΕͯΔͷͰͳ͘ • ʮখ͞ͳมߋΛʯʮյͣ͞ʹʯʮԿʯΔͷ
Ώʔͯ(DBΞϓϦΑΓ)͍͠͡ΌΖʁ • ”σʔλϕʔεʹؔͯ݁͠߹͕ඇৗʹߴ͘ͳΓಘΔͨ ΊɺσʔλϕʔεϦϑΝΫλϦϯά͜ΜͳΜͩͱड़ɺͦ ͷຊ(:ϦϑΝΫλϦϯά)Ͱѻ͍ͬͯͳ͍(ংจ)” • ͨͩ͠ɺϑΝϥʔୈ2൛ͰʮσʔλϕʔεͷϦϑΝΫ λϦϯάͷଟ͍ʯʹʮͯ·Βͳ͍ʯͱ ड़͍ͯΔ •
πʔϧͷਐԽɺϓϥΫςΟεͷൃల
৽൛ɹϦϑΝΫλϦϯάɹطଘͷίʔυΛ҆શʹվળ͢Δ P63 ϦϑΝΫλϦϯά طଘͷίʔυΛ҆શʹվળ͢Δʢୈ2൛ʣ P62
ൃలܕσʔλϕʔε։ൃ • ʮࣄલʹઃܭΛΓ͖Ζ͏ͱࢥΘͳ͍ͰɺཁٻͷมԽʹԠͯ͡PJ ظؒதʹεΩʔϚΛ࡞Γ্͍͛ͯ͜͏Ͷʂʯͱ͍͏ίϯηϓτ • ͍ΘΏΔʮΞδϟΠϧ։ൃʯతͳײ͡ʹDBѻ͏ • ʮΉͩΛ࠷খʹ͢Δʯʮେ͖ͳखΓΛݮΒͤΔʯʮ։ൃऀͱ૬ ੑͷΑ͍ਐΊํ͕ग़དྷΔʯͳͲͷར͕͋ΔΑ =>
͜ΕΛΓ͖ΔͨΊͷத৺తͳϓϥΫςΟε͕ϦϑΝΫλʂ
ϦϑΝΫλΛDBʹ࣋ͪࠐΉʹʁ • جຊతʹΞϓϦͷϦϑΝΫλͱಉ ͡Α͏ʹʂ • ͷಛఆˠςετͷ֬ೝˠվमˠ ςετʂ • ʮతʯͱʮ҆શஔʯΛ༻ҙͯ͠ ͍͜͏ʙ
$3 ຊͷதΛνϥݟͯ͠ΈΔ
ࠓ͜Μͳॴʹ৮ΕͯΈΔΑ • σʔλϕʔεͷෆ٢ͳष͍ • σʔλϕʔεɾϦϑΝΫλϦϯάઓུ • σʔλϕʔεͷϦϑΝΫλϦϯάͷྨ
σʔλϕʔεͷෆ٢ͳष͍ “σʔλϕʔεʹɺϦϑΝΫλϦϯάͷඞཁੑΛײͤ͡͞Δෆ٢ͳष͍͕͋Δ” 㱻 σʔλϕʔεʮ͍͍͢ʯʮಡΈ͍͢ʯඞཁ͕͋ΔΑʂ 1. ෳͷతʹΘΕΔΧϥϜ 2. ෳͷతʹΘΕΔςʔϒϧ 3. ͳσʔλ
4. ΧϥϜͷଟ͗͢Δςʔϒϧ 5. ߦͷଟ͗͢Δςʔϒϧ 6. ʮεϚʔτʯΧϥϜ 7. มߋͷڪා ڽूੑ Մಡੑ ύϑΥʔϚϯε Өڹൣғґଘ ࢀߟ: DataBase Refactoring(soudai sone) https://speakerdeck.com/soudai/database-refactoring?slide=19
σʔλϕʔεɾϦϑΝΫλϦϯάઓུ • ʮ͋Δ͖࢟ʯͱʮ҆શʹʯҠߦ͍ͨ͠ɺͱ͍͏ͷΛ ͍͔ʹ࣮ͯ͠ݱ͢Δ͔ʁͱ͍͏ͷ͕ϦϑΝΫλϦϯάઓུ • ຊॻʹ͓͍ͯʮڭ܇ʯͱදݱ͞Ε͍ͯΔ
σʔλϕʔεɾϦϑΝΫλϦϯάઓུ • খ͍͞มߋͷ΄͏͕ߦ͍͍͢ • ݸʑͷϦϑΝΫλϦϯάΛҰҙʹ ࣝผ͢Δ • େ͖ͳมߋΛଟ͘ͷখ͞ͳมߋʹ ͚࣮ͯࢪ͢Δ •
σʔλϕʔεߏςʔϒϧΛ࡞͢ Δ • ϏϡʔόονಉظΑΓτϦ ΨʔΛ͏ • ेͳҠߦظؒΛઃఆ͢Δ • σʔλϕʔεΞΫηεΛΧϓηϧԽ ͢Δ • SQLΛॏෳͤ͞ͳ͍ • (શ෦Ͱ13ݸͷڭ܇͕ࡌ͍ͬͯΔΑ)
খ͞ͳมߋ / มߋͷׂ • มߋΛখ͘͢͞Δ͜ͱͰࣦഊϦεΫΛݮͤ͞Δ • ʮςʔϒϧΛׂ͢Δʯͱ͍ͬͨେ͖ͳมߋɺʮ৽ͨͳ ςʔϒϧͷಋೖʯʮΧϥϜͷҠಈʯʮΠϯσοΫεͷಋೖʯ ͷΑ͏ʹࡉ͔͍खॱʹׂ͠ಘΔ
ϏϡʔόονಉظΑΓτϦΨʔΛ͏ • Ҡߦظؒʹɺ৽چͷσʔλมߋಉظΛ༻ҙ͢Δඞཁ͕͋ Δ • τϦΨʔʹΑΔಉظɺϏϡʔͷར༻ɺόονߋ৽ͱ͍͏ख๏ ͕ߟ͑ΒΕΔ • τϦΨʔͷϦΞϧλΠϜੑ͕ڧ͍ϝϦοτʹͳΔ ϏϡʔɺDBʹΑͬͯػೳ͕ࠩ͋ΔͷͰߟྀ͢Δඞཁ͕͋Δ
σʔλϕʔεΞΫηεΛΧϓηϧԽ͢Δ • ΞϓϦέʔγϣϯ͔ΒͷDBΞΫηεΛʮநԽʯ͢Δ • తʹݴ͏ͱʮSQLϕλॻ͖ΛΊΔ(ہॴԽ͢Δ)ʯ • ex: Repositoryύλʔϯͷద༻ͳͲɻ ʮSELECTจΛॻ͘ʯͷͰͳ͘ʮfindΠϯλʔϑΣΠεΛ༻ҙ͢ Δʯͱ͔ɺʮ࣮ςʔϒϧͱϞσϧΛ۠ผ͢Δʯͱ͔ɻ
• ͦΕʹΑͬͯɺʮDBͷมߋʯʹରͯ͠ʮΞϓϦέʔγϣϯͷม ߋʯͷӨڹΛ෧͡ࠐΊΔ
جຊతͳखॱ(Έ͍ͨͳͷ) • σʔλϕʔεʹґଘ͍ͯ͠ΔαʔϏε(≒ΞϓϦ)͕1ݸ͚ͩ ͔ʁෳ͔ʁʹΑͬͯқมΘΔ • ଟ͘ͷґଘऀ͕͍Δ߹ɺ͔ͬ͠ΓͱʮҠߦظؒʯΛઃ͚ Δ͜ͱ͕େࣄʂʂʂ
ϦϑΝΫλ࣌ͷҠߦରԠ • ॏཁͳͷʮޓੑͷҡ࣋ʯͱʮҠߦظؒͷӡ༻ʯ • ൚༻తͳޓੑҡ࣋ͷͨΊͷख๏ • ΧϥϜ໊ͷมߋܭࢉϑΟʔϧυͷՃʹରͯ͠τϦΨʔͷ࡞ • ςʔϒϧͷมߋʹରͯ͠Ϗϡʔͷ࡞ •
੍ɾσϑΥͷஈ֊తಋೖ • Ҡߦظؒͷӡ༻ • ຊॻͰʮdeprecatedΛΧϥϜͷίϝϯτʹ͢ʯʮτϦΨʔΛ༻͍ͨޓ ੑͷҡ࣋ʯͳͲͷख๏Λపఈతʹར༻͍ͯ͠Δ
σʔλϕʔεͷϦϑΝΫλϦϯάͷྨ ʮతɾख๏ʹ͍ͭͯɺDBͷϦϑΝΫλͲ͏͍͏ͷ͕͋Δ(͋Γ ಘΔ)ͷ͔ʁʯͱ͍͏ΨΠυ ߏ ςʔϒϧϏϡʔͷఆٛͷมߋ σʔλ࣭ ใͷ࣭ΛߴΊΔͨΊͷมߋ ࢀর߹ੑ ෳςʔϒϧؒͷ߹ੑΛอূ͢ΔͨΊͷมߋ ΞʔΩςΫνϟ
ΫϥΠΞϯτ͕%#ͱΓऔΓ͢Δํ๏Λվળ͢ΔͨΊͷมߋ ϝιου τϦΨʔɺετΞυɾϓϩγʔδϟͳͲͷมߋ ม ηϚϯςΟΫεͷมߋ
ߏϦϑΝΫλϦϯά(ୈ6ষ) • ΧϥϜͷআ • ςʔϒϧͷআ • ΧϥϜͷ౷߹ • ςʔϒϧͷ౷߹ •
ΧϥϜ໊ͷมߋ • ςʔϒϧ໊ͷมߋ • ςʔϒϧͷׂ • ΧϥϜͷׂ • ࣗવΩʔ / ཧΩʔͷಋೖ • ؔ࿈ςʔϒϧʹΑΔ1ରଟ ؔͷஔ͖͑ • શ෦Ͱ17ݸ
σʔλ࣭ϦϑΝΫλϦϯά(ୈ7ষ) • ࢀর༻ςʔϒϧͷՃ • ඪ४తͳίʔυͷద༻ • ඪ४తͳܕͷద༻ • Ωʔઓུͷཧ •
ΧϥϜ੍ͷআ • σϑΥϧτͷআ • ψϧෆՄ੍ͷআ • σʔλͷҠಈ • શ෦Ͱ13ݸ
ࢀর߹ੑϦϑΝΫλϦϯά • ֎෦Ωʔ੍ͷՃ • ܭࢉΧϥϜͷτϦΨʔͷ Ճ • ֎෦Ωʔ੍ͷআ • Χεέʔυআͷಋೖ
• ϋʔυσϦʔτಋೖ • ιϑτσϦʔτͷಋೖ • ཤྺͷͨΊͷτϦΨʔͷಋ ೖ
ΞʔΩςΫνϟɾϦϑΝΫλϦϯά(ୈ9ষ) • CRUDϝιουͷՃ • ϛϥʔϦϯάςʔϒϧͷ Ճ • ϦʔυϝιουͷՃ • ϏϡʔʹΑΔςʔϒϧͷΧ
ϓηϧԽ • ܭࢉϝιουͷಋೖ • ΠϯσοΫεͷಋೖ • ಡΈࠐΈઐ༻ςʔϒϧͷಋ ೖ • ਖ਼ࣜͳσʔλιʔεͷ༻ • શ෦Ͱ12ݸ
ϝιουɾϦϑΝΫλϦϯά(ୈ10ষ) • ※ࠓճׂѪ
ม(ୈ11ষ) • σʔλͷૠೖ • ৽ͨͳΧϥϜͷಋೖ • ৽ͨͳςʔϒϧͷಋೖ • Ϗϡʔͷಋೖ •
σʔλͷߋ৽
$X ·ͱΊͱΦϚέ
·ͱΊ • ʮΞϓϦέʔγϣϯίʔυΛॻ͖͑ΔΑ͏ͳײ֮ͰɺDB࿔Ε Δʯͱͨ͠ΒɾɾɾҰମͲΜͳੈքͳΜͩʂʁ • ͨͩɺʮ·ͳ͚ΕಘΒΕͳ͍ʯͱ͍͏ݴ༿͕͋Γ·͢Ͷʂ • ʮςετʹΑΔอূʯʮࣄނʹඋ͑Δʯʮܧଓతʹ౷߹ɾվળͯ͠ ͍͘ʯͱ͍͏جຊͲ͜Ͱಉ͡ʙ •
·ͣɺSQLΞϯνύλʔϯσʔλϕʔεɾϦϑΝΫλϦϯάΛಡ Ήʮෆ٢ͳष͍ʯΛײ͡औΓ͘͢ͳΔͱ͜Ζ͔Β࢝Ίͯɺະདྷʹ ͍ۙͮͯ͜ʂ
͋ΘͤͯಡΉͱ໘നͦ͏ͳຊ ࠓճͷຊʂ ΑΓʮཧʯํ໘ͷ SQL(RDB)ͳຊ ʮϦϑΝΫλͱԿ͔ʯͷຊ ʮϦϑΝΫλͷେࣄ͞ʯ Έ͍ͨͳͷίϨ
ͬͱࢹΛ͛Δɾ౿ΈࠐΉ ୯ମςετ͕͔ͬͨ͠Β ʮେ͖ͳϧʔϓʯͷςετͪ͠Ό͏ͱ͔ Ͳ͏ͬͯ ʮม͍͑ͯ͘ʯͱ͔ ʮյΕʹ͘͘࡞Δʯ͔ʁͱ͍ͬͨ σʔλϕʔεΛ ʮ҆શʯʹ͍ͬͯ͘ʂ