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
ScalaでもDBのテストをしよう
Search
Kazumune Katagiri
April 09, 2016
Technology
380
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ScalaでもDBのテストをしよう
DbUnit?現役ですよ!
Kazumune Katagiri
April 09, 2016
More Decks by Kazumune Katagiri
See All by Kazumune Katagiri
50歳目前開発者の AI との付き合い方
nemuzuka
0
39
AWS を使ったシステムのテスト方針 #jawsug #jawsug_niigataken #nds60
nemuzuka
2
3.1k
フリーランスで割と長くリモートでやってる僕が気をつけていること
nemuzuka
1
13k
Vue.jsから始めるDOMにデータを持たせないアプリケーション開発への第1歩
nemuzuka
1
4.7k
わたしがみんなにオススメするBetter JavaとしてのScala
nemuzuka
1
880
Other Decks in Technology
See All in Technology
フィジカル版Github Onshapeの紹介
shiba_8ro
0
220
RSA暗号を手計算したくなること、ありますよね?? (20260615_orestudy6_rsa)
thousanda
0
410
AIのReact習熟度を測る
uhyo
2
550
小さく始める AI 活用推進 ― 日経電子版 Web チームの事例/nikkei-tech-talk47
nikkei_engineer_recruiting
0
270
Kubernetesにおける学習基盤とLLMOpsの概要
ry
1
300
アンオフィシャルな、オフィシャルからのお願い
wyamazak_devrel
0
110
AIはどのように 組織のアジリティを変えるのか?
junki
3
790
2026TECHFRESH畢業分享會 - Lightning Talk - 資料也要 CI/CD? 用 Airbyte 自動化資料同步
line_developers_tw
PRO
0
1k
2026 TECHFRESH 畢業分享會 - AI-Native 重塑軟體工程與虛擬講師
line_developers_tw
PRO
0
1k
AIネイティブな開発のサプライチェーンリスク対策 〜激動の開発現場でリスクに立ち向かう〜【ZennFes】
cscengineer
PRO
2
120
LLMにもCAP定理があるという話
harukasakihara
0
360
AIエージェントが名古屋の猛暑からあなたを守る
happysamurai294
0
120
Featured
See All Featured
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
170
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
310
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
370
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
330
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
The SEO identity crisis: Don't let AI make you average
varn
0
490
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
140
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
470
YesSQL, Process and Tooling at Scale
rocio
174
15k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
Transcript
ୈ47ճ ԬITٕज़ऀษڧձ ScalaͰDBͷςετ Λ͠Α͏ 2016/4/9 @nemuzuka
Έͳ͞Μɺςετͯ͠·͔͢ʁ
ݱ࣮ݫ͍͠… • εέδϡʔϧݫक(ࣄͰ͋Εঘߋ) • ߟ͑ΒΕΔશ෦ͷςετέʔεΛཏͯ͠ςε τΫϥεʹམͱ͜͠Ήͷʮਖ਼͍͠ʯ͚ΕͲ ͔͔࣌ؒΔ͠ɺςετΫϥεͷϝϯς ͔ʹͳΒͳ͍ ݶΒΕͨ࣌ؒͷதͰͬͯΔΑɺ ͱ͍͏τίϩ͕΄ͱΜͲͰʁ
Δ͖ॴ͚ͩ ͋·ΓखؒΛ͔͚ͣʹ ςετ͍ͨ͠…
ͦΜͳதͰDB(SQL)ͷςετɺ ͬͯ·͔͢ʁ
ׂʹ͋Θͳ͍…ʁ • ςετ͕Ͱ͖Δڥ͕ඞཁ • ଓઌΛςετ/։ൃ/ຊ൪ͰΓସ͑ΒΕΔΑ͏ͳΈ • ςετ࣮ߦʹ͕͔͔࣌ؒΓ͗͢Δ ʮSQLʹىҼ͢Δόάͷ݅ʯ͕ແࢹͰ͖ͳ͍ ɹͷͰ͋Ε࣮ࢪͨ͠΄͏͕ྑ͍͔͠Ε·ͤΜ
ͲΜͳύλʔϯΛςετ͢Δʁ • 1ςʔϒϧʹର͢ΔCRUD • ෳͷςʔϒϧΛ݁߹ͯ͠Ұཡʹදࣔ͢Δselect • ݁߹͕݅߹ͬͯͳ͍ͷऔΕͯ͜ͳ͍͜ͱ • ಈతʹݕࡧ͕݅มΘΔ߹Ͱظ͢Δσʔλ͕औΕΔ͜ͱ σʔλͷύλʔϯʹΑͬͯ
ఆ֎ͷ݁ՌΛฦ͍͢͠ͷͰςετ͖͢ ORMΛׂ͑Ѫͯ͠ྑ͍͔͠Εͳ͍
ʮ͡Ό͋ɺࠓճͷϓϩδΣΫτΓ·͔͢ʯ ͱݴΘΕͯ߄ͯͳ͍ҝʹ
DBΛͬͨςετͷྲྀΕ • ४උ • ୯ମςετ༻ͷεΩʔϚ/tableΛ༻ҙ(σʔλۭ) • ࣮ࢪ(ςετΫϥε) • 1. લఏ݅ͱͳΔσʔλΛొ
• 2. ࣮ࡍʹSQLΛൃߦͯ͠ςετ࣮ࢪɺ݁ՌΛ֬ೝ • 3. rollback(σʔλtableʹΒͳ͍)
લఏ݅ͱͳΔσʔλΛొ • DBΛͬͨςετΛ͢Δʹɺtableʹσʔλ͕ೖͬͯ ͍ͳ͍ͱSQLͰ݁Ռ͕औΕͣςετͱͯ͠Γཱͨͳ͍ • ͱݴ͑ɺtableͷલఏ݅Λຬͨͨ͢Ίʹɺ֤tableʹ ର͍͍ͯͪͪ͠InsertจΛॻ͘ͷ໘Ͱ͔ͬͨΔ͍ օ͞Μ͕͓͍ͷ։ൃݴޠɾFWͰָͰ͖ͯ·͔͢ʁ
ࢲɺScala / Skinny Framework • ScalaͷϑϧελοΫͳ WebΞϓϦέʔγϣϯ ։ൃϑϨʔϜϫʔΫ • ςετͷลΓखް͘
αϙʔτ
FactoryGirl • InsertจΛهड़͢Δ͜ͱແ͘ɺςετΫϥε͔Βલఏ݅ͷσʔλΛొ͢Δ͜ͱ͕Ͱ͖Δ • σʔλͷதʹγεςϜΛઃఆ • ొͨ͠id߲Λผtableͷ֎෦Ωʔͱͯ͠ઃఆ [ςετΫϥε] val company1
= FactoryGirl(Company).create() val country = FactoryGirl(Country, 'countryyy).create() val factory = FactoryGirl(Member).withVariables('countryId -> country.id) val member = factory.create('companyId -> company1.id, 'createdAt -> DateTime.now) [ઃఆϑΝΠϧ] countryyy { name="Japan" } member { countryId="#{countryId}" } company { name="FactoryGirl, Inc." } ઃఆϑΝΠϧΛݩʹσʔλΛొɻ ඞཁʹԠͯ͡ςετΫϥεଆͰઃఆ͢Δ
ϓϩάϥϜͰॻ͚Δͷخ͍͚͠Ͳ… • ςετσʔλΛ֬ೝ͢ΔࡍɺςετΫϥεΛݟͯɺͲ͏͍͏ͷ͕ೖ͍ͬͯ Δ͔Θ͔ΓͮΒ͍ • ෳͷtableΛ݁߹ͯ͠select͍ͯ͠ΔΑ͏ͳॲཧͷςετ • ४උσʔλͷొॲཧͰςετΫϥεͷେΛకΊͳ͍ʁϝϯςେมͦ͏… • ςετ༻ͷσʔλΛ20݅͘Β͍༻ҙ͍ͨ࣌͠
tableදܗࣜͰݟͨΓཧͰ͖ͨํ͕͏Ε͋͘͠Γ·ͤΜ͔ʁ
͜͏͍͏ͷͰɻ
ͱ͍͏͜ͱͰɺDbUnit • ExcelΛσʔλϑΝΠϧͱͯ͠ಡΈࠐΜͰɺલఏ ݅ͱͳΔtableͷঢ়ଶʹͯ͘͠ΕΔπʔϧ • ScalaͳͷͰɺJavaͷϥΠϒϥϦʹ؆୯ΞΫηε
ExcelϑΝΠϧͷϧʔϧ • γʔτ໊ˠtable໊ • 1ߦˠΧϥϜ໊ • 2ߦҎ߱σʔλ ɾγʔτ໊ͷ্ݶ31จࣈˠtable໊͕31จࣈΛ͑Δͱ...Ξτ ɾࠨͷγʔτ͔Βॱʹొ͍͖ͯ͠·͢ɻ ɾxlsxܗࣜͰͰ͖·͢
demo.
Ͷɺ؆୯ͦ͏Ͱ͠ΐʁ • ScalaTestΛ͏͜ͱͰRSpecͷΑ͏ʹॻ͚Δ • AutoRollback traitΛ༻͢Δ͜ͱͰςετ࣮ߦޙࣗಈͰrollback͢Δ • ෳ݅औಘ͢ΔSQLͷςετͷ߹ɺorder by Λ͚ͭͯৗʹಉ͡ॱ൪ͰऔಘͰ͖ΔΑ͏ʹҰ
• ֎෦ΩʔΛ͍ͬͯΔ࣌ɺσʔλͷొॱʹҙ • ςʔϒϧΛઌʹొ • ExcelͷσʔλಡΈࠐΈͰΤϥʔʹͳΔ࣌ • จࣈྻܕͷΧϥϜͳͷʹɺηϧ͕ / ʹͳͬͯΔ͔ • ηϧΛจࣈྻܕʹ͢Δͱ͏·͘ߦ͘͜ͱ͕ଟ͍
·ͱΊ • DB෦ͷςετࣗಈԽͨ͠ํ͕ྑ͍ͱࢥ͍·͢ • ςετσʔλΛExcelͰཧ͢ΔਓؾΛ্͍͖͛ͯ ͍ͨ #nds24 http://www.slideshare.net/kkatagiri/nds24-11327909 ࠓճͷιʔείʔυ https://github.com/nemuzuka/skinny-db-test