Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
database/sql 入門 (P$POGFSFODF4QSJOH :PJDIJSP4IJNJ[V!CVEPVHVNJ
Slide 2
Slide 2 text
自己紹介 ‣ ਗ਼ਫཅҰ!CVEPVHVNJ ‣ ‣ #BDLFOE&OHJOFFS ‣ (P3VCZ ‣ ϒϩάIUUQCVEPVHVNJHJUIVCJP ‣ ϘϧμϦϯάࣗ࡞ΩʔϘʔυHPMBOHUPLZP
Slide 3
Slide 3 text
このセッションの背景 ‣ (Pͷॻ੶ଟ͘ൃച͞Ε͍ͯΔ͕ʜ ‣ σʔλϕʔεૢ࡞͍ͭͯॻ͔Εͨຊ͋·Γͳ͍ ‣ Πϯλʔωοτ্·ͱ·ͬͨهࣄ͕͋·Γͳ͍ ‣ YYYϥΠϒϥϦΛ৮ͬͯΈͨܥத্ڃऀ͚ͷνϡʔχϯάه ࣄ
Slide 4
Slide 4 text
今日のゴール ‣ %#Λͬͨ։ൃΛߦͳ͏ͨΊͷ४උ͕Ͱ͖Δ ‣ EBUBCBTFTRMύοέʔδͷงғؾΛཧղ͢Δ ‣ ࣮ͱҰॹʹςετΛॻ͚ΔΑ͏ʹͳΔ ‣ %#पΓͷهࣄൃදΛࢀߟʹࣗͰखΛಈ͔ͤΔΑ͏ʹͳΔ
Slide 5
Slide 5 text
DBを用意する
Slide 6
Slide 6 text
ローカルにDBサーバを構築する ‣ ͍ࣺͯͷσʔλϕʔεΛ༻ҙ͢Δ ‣ ྫɿ%PDLFSΛͬͯ.Z42-ΛϙʔτͰىಈ͢Δ
Slide 7
Slide 7 text
マイグレーションツールを使ったスキーマ定義 ‣ σʔλϕʔεΛ༻ҙ͚ͨͩ͠ͰσʔλอଘͰ͖ͳ͍ ‣ ςʔϒϧΛ࡞ͬͯσʔλͷೖΕͷʢεΩʔϚʣΛ༻ҙ͢Δ ‣ εΩʔϚͷߏཧΛ͢ΔͨΊʹϚΠάϨʔγϣϯπʔϧΛ͏
Slide 8
Slide 8 text
Goで書かれたマイグレーションツール ‣ IUUQTHJUIVCDPNSVCFOWTRMNJHSBUF ‣ IUUQTHJUIVCDPNHPCVGGBMPQPQUSFFNBTUFSTPEB ‣ IUUQTHJUIVCDPNHPMBOHNJHSBUFNJHSBUF ‣ IUUQTHJUIVCDPNTUFJOCBDIFSHPPTF
Slide 9
Slide 9 text
sql-migrate ‣ γϯϓϧʹϚΠάϨʔγϣϯ༻ͷ42-Λ࣮ߦɾཧͰ͖Δ
Slide 10
Slide 10 text
sql-migrate ‣ %4-Ͱͳ͘ૉͷ42-ΛͬͯϚΠάϨʔγϣϯΛఆٛͰ͖Δ
Slide 11
Slide 11 text
DB処理の設計方針
Slide 12
Slide 12 text
Entity(構造体)の定義 ‣ งғؾ+40/Ϛοϐϯάͱಉ͡ ‣ /VMMೖͷՄೳੑ͕͋ΔϑΟʔϧυͷܕʹTRM/VMM999Λ ‣ (P͔ΒTRM/VMM5JNF͑Δ UJQHPMBOHPSHөࡁΈ
Slide 13
Slide 13 text
リポジトリパターン ‣ σʔλͷ֨ೲॴΛӅณɾநԽ͢Δઃܭύλʔϯ ‣ σʔλιʔεͷӬଓԽૢ࡞ΛಛఆQLH ࠓճSFQPTJUPSZQLHʣʹ ΧϓηϧԽ͢Δ͜ͱ͕Ͱ͖Δ ‣ ଞͷQLHσʔλιʔεͷӬଓԽૢ࡞ͷৄࡉΛΒͳ͍·· ϏδωεϩδοΫɾΞϓϦέʔγϣϯϩδοΫΛ࣮Ͱ͖Δ
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
No content
Slide 16
Slide 16 text
データベース操作の入門
Slide 17
Slide 17 text
ドライバをロードする ‣ ଓઌͷ3%#ʹ͋ͬͨ υϥΠόΛCMBOLJNQPSU ‣ .Z42-ͷ߹ɺ HPTRMESJWFSNZTRM͕ σϑΝΫτ
Slide 18
Slide 18 text
database/sqlを使ったデータベース操作の実装 ‣ (Pʹ%#ૢ࡞Λ࣮͢Δͱ͖KJO[IVHPSNͳͲͷൺֱతϦονͳ ϑϨʔϜϫʔΫʢ03.ʣ͕ଘࡏ͢Δ ‣ ࠓճ(Pͷ%#ૢ࡞ͷجຊ֓೦Λԡ͑͞ΔͨΊɺ ެࣜͰ͋ΔEBUBCBTFTRMQLHΛྫʹ͢Δ
Slide 19
Slide 19 text
sql.DB、sql.Conn、sql.Tx オブジェクト ‣ TRM%# ‣ ෳͷΰϧʔνϯ͔Βར༻͞Εͯ҆શɻαʔϏεىಈ࣌ʹҰTRM0QFO͢Δ ͚ͩͰΑ͘ɺ௨ৗ0QFO$MPTFΛ܁Γฦ͞ͳ͍ ‣ TRM$POO ‣ TRM%# $POOϝιου͔ΒऔಘͰ͖ΔɻίωΫγϣϯʹ૬ɻཁ$MPTF ‣ TRM5Y ‣ τϥϯβΫγϣϯʹ૬ɻίϛοτϩʔϧόοΫૢ࡞Λ͢Δͱ͖ʹɻཁ$MPTF
Slide 20
Slide 20 text
sql.DB、sql.Conn、sql.Tx オブジェクト ‣ 2VFSZ$POUFYU2VFSZ3PX$POUFYU ‣ 4&-&$5ૢ࡞ ‣ &YFD$POUFYU ‣ */4&3561%"5&%&-&5&ૢ࡞ ‣ ͲΕ(P%PDʹ&YBNQMF͕͋ΔͷͰɺͦΕΛΈΔͱΑ͍
Slide 21
Slide 21 text
Repositoryパターンへの適用
Slide 22
Slide 22 text
テストを書く
Slide 23
Slide 23 text
外部環境・サービスに依存しないテスト and より実環境の再現を優先したいテスト
Slide 24
Slide 24 text
再掲
Slide 25
Slide 25 text
モックを使ったDBに依存しない単体テスト ‣ %"5"%0(HPTRMNPDLͱ͍͏ બࢶ ‣ TRM%#ΦϒδΣΫτͷϞοΫ ‣ ظ͢Δ42-จ͕ൃߦ͞Ε͔ͨ ݕূͰ͖Δ
Slide 26
Slide 26 text
モックを使ったDBに依存しない単体テスト ‣ SBFQPTJUPSZҎ֎ͷQLHϞοΫ ͰςετͰ͖Δ ‣ ࣮ࡍHPMBOHHPNPDLͬͨΓ
Slide 27
Slide 27 text
DBサーバを使った結合テスト ‣ ςετίʔυͷத͔Β%PDLFSΛΘͣ.Z42-αʔόΛىಈ͢Δ ‣ IUUQTHJUIVCDPNMFTUSSBUHPUFTUNZTRME ‣ ςετίʔυͷத͔Β%PDLFSΛͬͯ.Z42-αʔόΛىಈ͢Δ ‣ IUUQTHJUIVCDPNPSZEPDLFSUFTU ‣ #VJME$POTUSBJOUTΛ͏ͱςετ͚࣮ͯߦͰ͖Δ ‣ HPUFTUͰ࣮ߦ͢ΔϑΝΠϧΛϑΟϧλϦϯά͢Δͷʹ͑Δ
Slide 28
Slide 28 text
CircleCIの設定例
Slide 29
Slide 29 text
今日のゴール ‣ %#Λͬͨ։ൃΛߦͳ͏ͨΊͷ४උ͕Ͱ͖Δ ‣ EBUBCBTFTRMύοέʔδͷงғؾΛཧղ͢Δ ‣ ࣮ͱҰॹʹςετΛॻ͚ΔΑ͏ʹͳΔ ‣ %#पΓͷهࣄൃදΛࢀߟʹࣗͰखΛಈ͔ͤΔΑ͏ʹͳΔ
Slide 30
Slide 30 text
まとめ ‣ ϩʔΧϧͷ.Z42-্ཱ͔ͪ͛Β$*ͷઃఆΛ͢Δͱ͜Ζ·Ͱհ ‣ ൃදதͷαϯϓϧίʔυͷશମҎԼͷϦϙδτϦͰ ‣ IUUQTHJUIVCDPNCVEPVHVNJHPTRMTBNQMF ‣ ޱ಄Ͱհͨ͠هࣄͷ63-ͳͲ໌ϒϩάهࣄͰհ༧ఆ ‣ GPMMPXNF!CVEPVHVNJ