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
The three great virtues are important
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Koichi ITO
November 19, 2021
Programming
5.5k
13
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
The three great virtues are important
銀座Rails #39 招待講演
https://ginza-rails.connpass.com/event/229348/
Koichi ITO
November 19, 2021
Transcript
100 slides
,PJDIJ*50&4. *OD ۜ࠲3BJMT 'SJ ʮಈ͍ͨʂʯͷઌ౿Έग़͢ɺ γεςϜͷϝϯςφϏϦςΟ্ͷ جૅٕज़ The three
great virtues are important
@koic w044ϓϩάϥϚʔ w3VCP$PQίΞνʔϜ wגࣜձࣾӬγεςϜϚωδϝϯτ &4. JOD ΤϯδχΞϦϯάϚωʔδϟʔ σΟεςΟϯάΠογϡυΤϯδχΞ w3BJMTͰͷؔ৺ࣄ&4.JNQPSUNBQͱͦͷಈ͖
͞Μ͔ΒͷΦϑΝʔ IUUQTUXJUUFSDPNNPSJNPSJIPHFTUBUVT
w ޮ࠶ར༻ੑ͕ؾʹͳΔΑ͏ʹͳͬͨʁ w ॲཧޮ%FW9͕ؾʹֻ͔͍ͬͯΔʁ w ίʔυγεςϜͷΫΦϦςΟʹ͍ͭͯͷ ࣗෛ͕ߴ·͖͍ͬͯͯΔʁ ܦͬͨΒͲΜͳঢ়ଶ🤔
w ʮଵଦؾၗຫʯͷࡾେඒಙΛ֫ಘͭ͠ ͭ͋Δͱ͍͏Ծઆ w ϓϩάϥϚʔͱͯ͠ݱ࣮ੈքͷҰһ w Α͏ͦ͜ ͓ΊͰͱ͏͍͟͝·͢ʂ ࡾେඒಙͷಓ ରΊ
ࢲͨͪϓϩάϥϚʔͷҒେͳࡾͭͷඒಙͰ͋Δ ଵଦɺؾɺၗຫΛʹ͚ͭΔ͜ͱΛਪ͢Δ
w *UFSBUJWF w *ODSFNFOUBM w %FWFMPQNFOU ܦͯԿճճ͍ͯ͠Δʁ IUUQTKBXJLJQFEJBPSHXJLJ෮ܕ։ൃ
ࠓճ։࠵Λܴ͑Δۜ࠲3BJMTʹ͚ͨʮΤϯδχΞ ೖ͔Β౿Έग़ͨ͠ઌʯ͕ςʔϚͰ͢ɻޭ͍ͯ͠Δ αʔϏε΄ͲणͰ͋ΓɺංେԽ͢ΔίʔυϕʔεΖ Ζͷඋ͕͑ॏཁʹͳΓ·͢ɻͦͯ͠ϓϩμΫτͷϝ ϯςφϏϦςΟ্ͱɺΤϯδχΞͱͯ͠ಇ͘Α͏ʹ ͳ͔ͬͯΒͷϨϕϧΞοϓंͷ྆ྠͰ͢ɻຊߨԋͰ ೖͷઌͱͳΔɺγεςϜϝϯςφϏϦςΟ্ͷ ͓͖͑ͯ͘εΩϧɺߟ͑ํʹ͍͓ͭͯ͠·͢ɻ ຊͷ֓ཁ
۪ऀܦݧʹֶͼɺ ݡऀྺ࢙ʹֶͿ IUUQTUXJUUFSDPNNPSJNPSJIPHFTUBUVT
म͟͞ΕɺݱΕͣ ืूத ຊฤͷ༰Λ࣮ફͰʹ͚͍ͭͨͳΒ lத్৽ଔ࠾༻zlϏδωεύʔτφʔz !LPJD·Ͱ͓ؾܰʹ
None
w ͓ۚ Ϗδωε ͷΕ͕αʔϏεͷΕ w णαʔϏεʹͳΕͳΔ΄ͲίʔυϕʔεංେԽ ͢Δݱ࣮ w ߦҎ্ͷίʔυʹόά͕͋Δ🤔 w
͋ͳͨͷαʔϏεԿͷʁ w զʑϓϩάϥϚʔɺԿʹͯ͠ϏδωεͷมԽʹద ԠͰ͖ΔγεςϜϝϯςφϏϦςΟΛඋ͑Δ͔ʁ ޭ͍ͯ͠ΔαʔϏε΄Ͳण
w " ͷౙٳΈʹۓٸো͕ൃੜ͠ɺਅதʹ ̍ϝιου̎̌̌̌ߦͷ$PEFͷղಡʹ಄Λ௧Ί ʮͻΌʔʂ͜ΕͻͲ͍ɺ$PEFͩͥʂʯͱ ࢥͬͨॠؒ w # ࣗΑΓͰ͖Δౕ͕ॻ͍ͨίʔυΛಡΜͰ ʮ͋ʂ͜Μͳهड़Ͱ͖ΔΜͩɻ͜ΓΌ$PPMͩͥʯ
ͱࢥͬͨॠؒ ͋ͳͨͳΒͲͪΒΛબͿʁ IUUQQBUUFSOTIBSVIFSPLVDPN EFBEMJOL
جૅͱͦͷઌ ʹ͋Δͷ
w ໊લ w ྺ࢙ w ઃܭ w ੑೳ w ճؼ
ࡾେඒಙΛ࣋ͬͯࠞಱΛ੍ޚ͢Δ w w ධՁ w อ࣋ w ڞ w ײ ͜ͷ͋ͨΓΛԡ͓͑ͯ͘͞ͱྑ͍Ͱ͠ΐ͏ͱ͍͏ ϙΠϯτΛຊͷ͓ͱ͖ͯ࣋ͬͯ͠·ͨ͠
σβΠϯελϛφԾઆ ྦྷੵͨ͠ ػೳͷྔ ࣌ؒ ͙͢Εͨઃܭ ·͍ͣઃܭ ϦϑΝΫλϦϯάୈ൛.BSUJO'PXMFSΑΓ
໊લ
ͷʹɺ໊ͯ͢લ͕͋Δ ੩తղੳͱͭ·Γιʔείʔυͷ ղੳͩɻͦͯ͠ιʔείʔυͷղੳͱ ໊લͷௐࠪͰ͋ΔɻϑΝΠϧ໊ɾ ໊ؔɾม໊ɾܕ໊ɾϝϯό໊ͳͲɺ ϓϩάϥϜ໊લͷ͔ͨ·Γͩɻ 3VCZιʔείʔυશղઆ੨ๆ
w ϓϩάϥϚʔΛԿ͍͍ͬͯͯ͠ w 3VCZຊମͰϞδϡʔϧϝιουͷ ໊લ͕ܾ·Βͣೖ͍ͬͯͳ͍ͷ͋Δ w γεςϜ෦ͷQVCMJD"1*ͦΕͳΓʹɺ γεςϜ֎෦ͱͷ࿈ܞͱͳΔQVCMJTIFE "1*ͱΓΘ͚৻ॏʹʮܾஅʯ͠Α͏ ໊͚͍͠
w ͻͱͭ֓೦ʹ͍ͭͯෳͷ໊લ͚ͭͳ͍ w ͻͱͭͷ໊લͰෳͷ֓೦Λද͞ͳ͍ w ͻͱͭͷ֓೦Λද͢;ͨͭͷ໊শͩͱࢥͬͯ ͍ͨΒҟͳΔ֓೦ͩͬͨ͜ͱ͕͋Γઃܭͷ Өڹࣄྫ͋ͬͨͷͰɺυϝΠϯͷཧղॏཁ w HSFQͰͷώοτ͕ߴ·Γ্͕͕֬Δ
໊͚Λ౷Ұ͢Δ
w 5IPSͷΦϓγϣϯఏڙͰoption: gen ΑΓoption: generateͷํ͕໌֬ w άϩʔόϧઃఆ͍͏എܠͰSettings.destΑΓ Settings.destination_serverͷํ͕໌֬ w গͳ͍λΠϓͰॻ͘ΑΓɺಡΈखΛ૾͢Δ
w ·ͨใ๛͔ͳΧϥϑϧͳ໊લΛݕ౼͢Δ جຊུ͞ͳ͍ํ͕ใམͪ͠ͳ͍
໊લॏཁ IUUQTNBHB[JOFSVCZJTUOFUBSUJDMFT)PUMJOLTIUNM
ྺ࢙
13Πγϡʔॏཁͳใࢿݯ
IUUQTDISJTCFBNTJPQPTUTHJUDPNNJU ίϛοτϝοηʔδ
None
w ॻ͖खΑΓಡΈखͷํ͕ଟ͍ͷͰಡΈखୈҰ w ຊจʹαϚϦΛॻ͖ɺ ಛʹ֎෦ͷ 63- ৄࡉࢀরͱ͍͏͍ํ͕͓͢͢Ί w 63-ύʔϚϦϯΫͩͱݴΘΕ͍ͯͨͳʁ͋ Εӕͩ
w ྫ͑ͷӡ༻Ͱ*54͕มΘΔ͜ͱ͕͋Δ ຊจͷ63-هड़ͷΈΛଟ༻͠ͳ͍
w γΣϧͷੈքͰgit logͯ͠શମཤྺ͔Β มߋ࣌ظΛݕग़ͯ͠ɺͦͷ··มߋҙਤΛ ಡΊΔͱศར w গ͠࡞ۀखॱΛม͑Δ͚ͩͰɺྺ࢙ΛḷΔ ํ๏ͷଟ༷ੑΛ࡞ΕΔ w (JU)VC͕མ͍ͪͯͯखݩͰḷΕΔ😇
13ͷEFTDʹςΩετ͞Ε͍ͯΕྑ͍ʁຊʁ
w 1VMM3FRVFTUʹॻ͘͜ͱΛ͋Β͔͡Ίίϛοτϝο ηʔδʹه͢ w ʮίϛοτˠ13࣌ʹॻ͘ʯͰͳ͘ʮίϛοτ࣌ ʹॻ͘ˠ13ܗ͘Β͍ʯ w Ͳ͏ͤॻ͘ͳΒϒϥβͰͳ͖͘ͳΤσΟλͰ w NBTUFS
NBJO QVTI͢Δͱ͖ͱྲྀΕΛม͑ͳ͍ ίϛοτϝοηʔδΛΤσΟλͰॻ͘
HJUDPNNJU࣌ʹΤσΟλฤू͢Δ
13࣌ʹλΠτϧຊจ͕ຒ·ͬͯΔ
มߋҙਤͰTRVBTIΛ͢Δ͖͔ʁ ϦϑΝΫλϦϯά৽ػೳͷ Ճͱີʹ݁ͼ͍͓ͯΓɺΘ ͟Θ͟͢ΔͨΊʹ࣌ؒΛׂ ͘ͷແବͩͱࢥ͍·͢ɻ ϦϑΝΫλϦϯάୈ൛.BSUJO'PXMFS
SBJMTSBJMT *NQSPWF"DUJPO$BCMFSFDPOOFDUJPOSFMJBCJMJUZ
None
独⽴してリバートできる独⽴した変更単位にしておく
pick, squash, or another PR? ࣮աఔͰͷςετՃɺ όάϑΟοΫεখ͞ͳϦ ϑΝΫλϦϯάͰ͔͢ʁ TRVBTI QJDL
ϦϦʔεࠩ͠͠ͷͱ͖ ͳͲಠཱͯ͠Ϧόʔτ͠ ͍ͨίϛοτͰ͔͢ʁ "OPUIFS 13 ͻͱͭͷϒϥϯνʹͻ ͱͭͷίϛοτ͚ͩͰ ͔͢ʁ ػೳͷՃมߋͱ Ͱ͖ΔطଘػೳͷϦ ϑΝΫλϦϯάͰ͔͢ʁ ͠ϨϏϡʔͰͷࢦఠͰͳ ࣗ͘ྗͰؾ͍͍ͮͯͨΒ ίϛοτΛ͚·͔͢ʁ ͻͱͭͷPRʹෳͷػ ೳཁٻʹର͢Δมߋ͕ ࠞ͟Γ·͔͢ʁ No Yes Yes No Yes No Yes Yes No Yes No No Start ಠཱͯ͠ϚʔδͰ͖Δ
w l༗ӹͳใͯ͢ه͢zCZZZBHJ w lͳͥͦͷ13ΛϚʔδ͢Δඞཁ͕͋Δͷ͔ Λॻ͘zCZLBNJQP w l$PTNFUJDDIBOHFͰ͋͑ͯ͋·Γॻ͔ ͳ͍ ࣭ྔͷରൺ zCZBNBUTVEB
3BJMTίϛολʔ͔ΒֶΜͩݪଇ
ߟʹ͍ͭͯͷଓ͖ͪ͜Β IUUQTTQFBLFSEFDLDPNLPJD DPNNJUNFTTBHFXJMMOFWFSEJF IUUQTTQFBLFSEFDLDPNLPJD UEEXJUIHJUMPOHMJWFFOHJOFFSJOH ίϛοτϝοηʔδʹ͍ͭͯ ίϛοτཻʹ͍ͭͯ
ࢥ͍ͬͯΔΑΓɺ ίϛοτཤྺ ͣͬͱͣͬͱ༗༻ɻ IUUQTUXJUUFSDPNNPSJNPSJIPHFTUBUVT
ઃܭ
None
w ࢲͷܦݧ্ɺͲ͜ʹԿ͕ॻ͍ͯ͋Δͷ͔Ѳ͢ Δͷʹɺಈ͘ιʔείʔυ͕࠷ਖ਼֬Ͱ͋Δ w ͳΜͱόά·Ͱॻ͔Ε͍ͯΔʂʂʁ😇 w υΩϡϝϯτΛ㚽Ζʹ͍ͯ͠ΔΘ͚Ͱͳ͘ɺ 8SJUFPOMZதؒՌͰͳ͍ϝϯςφϯε͞ ΕͨཧղิॿͷܰྔͳυΩϡϝϯτ༗༻ ઃܭͱ࣮ෆՄ
w ϞδϡʔϧԽ͕͏·͘͞Ε͍ͯΕɺมߋ ͢ΔͨΊʹཧղ͢ΔՕॴ੍͕ݶ͞ΕΔ w ׂ͕γϯϓϧͰ͋Εɺίʔυϕʔε ͑ΒΕͯγϯϓϧʹͳΔ w ґଘ͕গͳ͚Εςετ༰қੑ͕ߴ·Γɺ ݁Ռͱͯ͠࠶ར༻ੑ͍͢͠ ιʔείʔυʹઃܭ͍॓ͬͯΔ
ྫ͑'BUίϯτϩʔϥʔΛආ͚Δ &⒎PSUUP &OIBODF $PNQMFYPG%PNBJO-PHJD 5BCMF.PEVMF %PNBJO.PEFM ʰ1BUUFSOTPG&OUFSQSJTF"QQMJDBUJPO"SDIJUFDUVSFʱ.BSUJO'PXMFSΑΓ 5SBOTBDUJPO4DSJQU
w ઃܭऀͱ࣮ऀ͕ۀʹͳ͍ͬͯΔ࣌Ͱ ͳ͍ w ʮݟੵΓ։ൃऀͷʯͰ͋Δ w νʔϜ։ൃͰݟੵΓΛߦ͍ͬͯΔ߹ɺԿ ΛͲͷΑ͏ʹ࣮͢Δ͔ઃܭʹ౿ΈࠐΜͩ Λ͢Δ͜ͱͰݟੵΓ্͕͕֬Δ ݟੵΓઃܭߦҝ
w ੈͷதʹແݶͷίʔυ͕͋Γɺ͍·ॻ͍ͯ ͍ΔਓͱಡΜͩ͜ͱͷ͋Δਓͷʹͬͯ ͍ΔίʔυҎ֎Βͳ͍ίʔυ w ৽͘͠ϓϩδΣΫτϝϯόʔΛܴ͑ͨ࣌ͳͲ ʮಡΜͩ͜ͱͷͳ͍ίʔυʯΛԿʹ ʮಡΈղ͖͍͢ঢ়ଶʯʹ͓͚ͯ͠Δ͔ ࡞ͬͨͷ୭͔ʹͱͬͯΒͳ͍ίʔυ
w ·ͣιʔείʔυ࠷ॏཁͷ্ɺɺɺ w ΦϯϘʔσΟϯάͰશମ૾Λ௫ΊΔΑ͏ͳΞʔ ΩςΫνϟਤ w ࣗಈԽ͞Ε͍ͯͳ͍ӡ༻खॱ w 044ؔΘΔਓ͕େ͖͘ͳΔ΄Ͳɺ3&"%.& ͔ΒઌͷυΩϡϝϯτͷ༗༻ੑ͕ߴ·Δ
ิॿυΩϡϝϯτͷՁ
ੑೳ
w αΠτΛ๚Εͯඵͨ͞ΕͨΒؼ͕ ૿͑Δͱ͍͏ݱ࣮ w ͕ࣗϢʔβʔͱͯͬͯ͠ݟͨΒͲ͏ײ ͡Δ͔ʁ ϢʔβʔࢹʹཱͬͯΈΑ͏ w ίϯτϩʔϥʔɺϏϡʔͰॏ͍ॲཧΛͯ͠
͍͚ͳ͍ 8FCͷجຊ
w ສ݅ͷϨίʔυΛ࣋ͭςʔϒϧͷݕࡧΛ Ͳ͏ଊ͑Δ͔ʁ σʔλྔͷܯࠂͷ͍ w ඞཁͰ͋Εॏ͍ΫΤϦʹͳΒͳ͍ཁ݅ʹௐ ͢Δ ࣄલʹݕࡧൣғΛߜΕΔΑ͏ʹ͢Δͱ͔
w .2 FH424 ͳͲͷதؒʹΑΔඇಉظʹ ͯ͠όονॲཧΛߦ͏ͳͲΛݕ౼͢Δ ಉظॲཧͱඇಉظॲཧ
w αʔϏεΞϓϦέʔγϣϯͱΠϯϑϥ͕Ұମʹ ͳͬͯಈ͘ w ϒϥβɺ$%/ɺ8FCαʔόʔɺΞϓϦέʔγϣϯ αʔόʔɺσʔλϕʔεͷલஈͷํͰॲཧΛฦͤ ɺͦΕ͚ͩεϧʔϓοτ্͕͕Γશମͷෛՙ͕ݮΔ w ӬଓσʔλΛ࣋ͭσʔλϕʔεΑΓӬଓσʔλΛ࣋ ͨͳ͍8FCͷํ͕εέʔϧΞτ͍͢͠
ࣗͷΠϯϑϥߏΛΔ
w ଠฏ༸ͷ͜͏ଆʹϦιʔεΛऔΓʹ͍ͬ ͯॏ͍ͱ͔൵͍͠ͷͰɺϦʔδϣϯΛҙࣝ ͠Α͏ w ॏ͍9.-σʔλΛ)551ͷϦΫΤε τɺϨεϙϯεͷಉظͪΛͯ͠)FSPLV λΠϜΞτΤϥʔ Կଠฏ༸Λԣஅ͢Δͳ
None
w ಈ͘ίʔυඞཁ݅Ͱ͋Γे݅Ͱͳ͍ w αοͱಈ͘ίʔυ·Ͱ͍࣋ͬͯ͘ͷ3BJMTͷ Ғେ͕ͩ͞ɺΠϯσοΫε/ ͳͲͷߟྀ࿙ ΕɺͦͦίϯτϩʔϥʔͰॏ͍ಉظॲཧ Λ͠ͳ͍ͱ͍͏جૅॏཁ w Πϯϑϥߏͱεέʔϧํ๏Λ͓ͬͯ͘
ඵͬͨΒ͍8FCͷੈք
ճؼ
w ςετ͕ͳ͍ίʔυϨΨγʔίʔυCZ ʰϨΨγʔίʔυվળΨΠυʱ w ςετίʔυ͕ͳ͍044৴པͰ͖Δ͔ʁ CZUXBEB w ςετίʔυ͕ͳ͍Ҋ݅ ུ
CZฐࣾγεςϜϚωδϝϯτ ࣗಈԽ͞Εͨςετ͕ͨΓલͷ࣌
w ϓϩμΫτͷςετίʔυͨΓલͷ࣌ w ͞Βʹఆܗ࡞ۀɺӡ༻ϛεͷରࡦɺίʔυϨ ϏϡʔͷࢦఠͳͲɺςετίʔυʹམͱ͠ࠐΉ w ಉؙ͡ʹͨΒͳ͍Α͏ʹ͢Δ w 3VCP$PQͰTQFDQSPKFDU@TQFDSCΛ༻ҙ͠ ͓ͯΓɺ࣮Ҋ݅ʹྲྀ༻Ͱ͖Δߟ͑ํ
ϓϩδΣΫτΛςετ͢Δ
w ςετίʔυͱͦͷ࣮ߦ࣌ؒΞϓϦέʔ γϣϯͷՃͱͱʹྦྷੵ͞Εଓ͚Δ w ςετ࣮ߦͨͩͰͳ͘ɺςετ͕ॏ ͳ͍ͬͯ͘ͱෆ҆ఆͳςετɺεϩʔςε τͱ͍͏ͱ໘͍ͯ͘͠ ࣗಈςετͷ࣮ߦίετ
w ࠷ղܾϚγϯࢿݯͷۚͷؙ ۚ w ߴԽͷجຊฒྻԽͱݸผνϡʔχϯά w rspec -p --profile
ͳͲͰϓϩϑΝ ΠϦϯάΛͱΓɺ͍ςετ͔ΒςίೖΕ ΦϦίϯνϟʔτతͳ εϩʔςετܐࣄ σΧ
w %#ͷΫϦʔχϯάઓུͰ͕ʹͳͬͨࣄ ͋Γ w %BUBCBTF$MFBOFSͰ͋Ε DatabaseCleaner.strategyΛtruncation deletion truncationͲΕ͕࠷ద͔ܭଌ͢Δ w
BNBUTVEBEBUBCBTF@SFXJOEFSΛݕ౼͢Δ %#ͷΫϦʔχϯάઓུ
w ྫ͑ඵ͔͔Δεϩʔςετ͕ݸ ͋ΔͱɺͦΕ͚ͩͰ͔͔Δ w ͭ·ΓྻͩͱͰͷ$*ͷ্ݶճҎ ԼʹͳΔ w ͢ΔγεςϜਓ͕૿͑ɺ13͕૿͑ͯ ͍͘ͷͰ$*αʔϏεͷཧվΊͯॏཁ
ඵ
w γεςϜͷมߋʹର͢Δ༰қੑ w γεςϜτϥϯβΫγϣϯͷ༰қੑ ຊઅͰऔΓѻ͏
w ྖҬͷੈք؍ΛγεςϜʹөͤ͞Δ w ྑ໊͍͚γεςϜղੳ ͋Δ͍Ϗδωε ͷٯղੳ ͷ࠷ߴͷख͕͔Γ ຊ w
ଧͪ߹ΘͤͰ͑ΒΕͨγεςϜͷมߋཁ ݅Λɺ͍͔ʹޮతʹḷΔ͜ͱ͕Ͱ͖Δ͔ʁ FHͦΕͬΆ͍༻ޠΛHSFQ͢Δ ໊લʹΑΔτϨʔαϏϦςΟ
w ҙຯͱͯ͠ॏෳ͍ͯͨ͠ίʔυͷҰ෦ͷର Ԡ࿙ΕʹΑΓΠϯγσϯτ͕ൃੜͨ͠Λ ͍֮͑ͯ·͔͢ʁ w ͻͱͭͷมߋཁٻʹରͯ͠ɺมߋՕॴ͕গ ͳ͚Εগͳ͍΄ͲଛইᎭ࠲Λ͑ΒΕ Δ %POU3FQFBU:PVSTFMG
w ͱΓ͋͑ͣίϐϖͰ࡞͓͍ͬͯͯɺ͋ͱͰϦ ϑΝΫλϦϯά͢Εྑ͍ͩΖ͏👿 w NBTUFS NBJO ʹϚʔδ͞ΕͨΒɺ ϝϯςφϯε͞Εͦ͏ʹͳ͍ͩΖ͏👼 w ͍·ٸ͍Ͱ͍Δ͔ΒɺͤΊͯίϝϯτΛॻ
͖ͯ͠ޙͰ͔ΔΑ͏ʹ͓ͯ͜͠͏👶 ఱͱѱຐͷڱؒͷχϯήϯ
w ίʔυͰදݱͰ͖ͳ͍ϙΠϯτίϝϯτΛ͢ w ಛʹʮԿͷͨΊͷίʔυʯ͔هड़͕ඞཁͩͱײͨ͡ ΒιʔείʔυίϝϯτΛ੯͠·ͳ͍ w Ϧʔμϒϧίʔυશষͷ͏ͪষΛίϝϯτʹ අ͍ͯ͠Δ ॏཁ͞۩߹ʂ
w 50%0'*9.&Λॻ͘ͱbin/rails notesͰ ݟ͔ͭΔ ιʔείʔυίϝϯτ
w ྫ֎ϋϯυϦϯάγεςϜڥքʹϩάΛࠐ Ήͱ͍͏ͷϩΪϯάͷఆੴ w *%Λݩʹϩά͔Β%#ͷؔ࿈ϓϩάϥϜͷಈ͖ Λḷͬͯཉ͍͠ใ͕ݟ͔ͭΕྑ͍͚ΕͲ w ΄͍͠ϩά͍͍ͨͯϩά͞Ε͍ͯͳ͍ CZNJXB ͍߹Θͤௐࠪɺোௐࠪ
IUUQTUXJUUFSDPNNJXBTUBUVT
w ͕ى͖ͨ࣌ɺ·ͣใΛूΊΔϩάΛ ࠐΜΉ͜ͱ͔Βελʔτͱ͍͏͜ͱ͋Δ w ͕ͦͦى͖ΔՕॴ͕͔͍ͬͯΕ ɺΛ༧ظͯ͠ରԠ͓͚ͯ͠Δ w ઃܭ ϦϑΝΫλϦϯά ͱಉ͘͡ɺϩΪϯά
ʹ͍ͭͯʹԠͯ͡վળΛ͍͚ͯ͠Δͷ :"(/* %3: ͷ๏ଇ
ධՁ
ඞཁͳͷ͔Βॱ൪ʹ IUUQTXXXNPVOUBJOHPBUTPGUXBSFDPNCMPHBSFPGGFBUVSFTSFBMMZSBSFMZPSOFWFSVTFE
wʷʮ͍ʯͱ͔ʮ͍҆ʯͱ͔ʜ w˓ʮܧଓʯతʹʮՁʯΛಧ͚Δ ΞδϟΠϧιϑτΣΞ։ൃ QJWPU QJWPU JGͷੈք QJWPU ܁Γฦ͞Εͨ બ͕ө͞ ΕͨγεςϜ
ͨΓ͚ͩ Ͱͳ͘ϋζϨ ؚ·ΕΔ σʔλʹج͖ͮબͱҙࢥܾఆΛߦ͏
IUUQBHJMFFTNDPKQQJWPUBMUSBDLFSIFMQHFUUJOHTUBSUFE@KB ཉ͍͠ংྻೖΕସΘΔ
w ,(*Λୡ͢ΔͨΊͷ,1*্Λૂͬͨࢪࡦػ ೳͰ͋ΕɺׂΓͱܭଌΛηοτͰߟ͑ΒΕΔ w ͏·͘ߦ͔ͳ͚Ε͍͔ࠩͨ͠͠͠Εͳ͍ w ϞχλϦϯάج൫ʹର͢Δཁ݅༗ແΛ֬ೝͯ͠ ͓͘ͱྑ͍ ݟੵΓ͕ඞཁͳͱ͖͓Εͳ͘ ʮ͜͏͍ͬͨػೳ͕ཉ͍͠ʯͷཪଆΛΔ
w શ෦࡞ͬͯΈΑ͏ɺͱΓ͋͑ͣ࡞ͬͯΈ Α͏ͱ͍͏ͷɺٙͬͯΈΔͱྑ͍ w ։ൃϦιʔε༗ݶͰ͋ΓɺՁͷߴ͍ ػೳʹߜͬͨϝϯςφϯεΛࢦ͢ w ػೳͷ͠ࢉ͚ͩͰͳ͘ɺͱ͖ʹෆཁ ͳػೳͷҾ͖ࢉΛߟ͑ͯΈΔ ࣮͕ͳ͚Ε੍ݮΔ
อ࣋
w णαʔϏεʹͳΕͳΔ΄ͲϨίʔυྔӈݞ্ ͕ΓͰ૿Ճ͢Δ w Ϩίʔυͷ૿Ճʹ͍ɺεϩʔΫΤϦʹసͯ͡͠· ͏͜ͱ͕͋Δ w ඇ߃ٱอ͔࣋߃ٱอ͔࣋σʔλઃܭͷ伴ʹͳΔ w Ӭଓ͖͢σʔλ͔ɺফڈՄೳͳσʔλ͔ʁফڈ͢
͖σʔλ͔ʁ ୀձऀσʔλͳͲ σʔλͷϥΠϑαΠΫϧ
w *OEFY4IPUHVOͰෆཁͳΠϯσοΫεΛ ݕग़ͯ͠আ͢Δ ߋ৽ܥͷվળʹܨ͕Δ FHHJUIVCDPNTVFJOEFY@TIPUHVO w "3TFTTJPOTUPSFΛ͍ͬͯΔΑ͏ͳ߹ TFTTJPOTϨίʔυΛΫϦʔχϯά͠ͳ͍ͱΰϛ σʔλ͕݁ߏͳσΟεΫྔΛΊ͍ͯΔ͔
bin/rails db:sessions:trimΛΕͣʹ σʔλΫϦʔχϯά
w আͰ͖Δσʔλ͕͋Εɺআ͢Δ͜ͱͰσʔλྔ ݕࡧ ྔ ΛݮΒ͢ w ݕࡧରͷΛߜΔ͜ͱͰɺݕࡧྔΛݮΒͤΔΑ͏Ͱ͋Ε ɺཁ݅ௐΛࢼΈΔ w ཁ݅ʹΑͬͯϦΞϧλΠϜੑ͕ඞཁͳ͚ΕɺूܭࡁΈͷ
αϚϦʔςʔϒϧΛ༻ҙ͢Δ w ͦͦͷ42-ʹ͕͋Εվળɺຊ࣭తʹ42-͕దͯ͠ ͍ͳͦ͞͏Ͱ͋Εɺ3%#Ҏ֎ͷΠϯϑϥཁ݅Λݕ౼͢Δ σʔλ૿ՃʹΑΔεϩʔΫΤϦ
w 3%#.4ʹର͢ΔධՁϞχλϦϯά͕ඞཁͳ߹ ɺϦʔυϨϓϦΧΛ༻ҙ͓ͯ͘͠ͳͲݕ౼ͯ͠ ͓͘ͱྑ͍ w ΦϯϥΠϯͰܨ͕͍ͬͯΔຊ൪σʔλʹॏ͍ूܭ 42-Λൃߦ͢ΔͱɺϢʔβʔӨڹͰ൵͍͜͠ͱʹ ͳΓ͔Ͷͳ͍ w ਨׂʹͳΔͱ%#σʔλઃܭ͕ඞཁ
ׂѪ ෳσʔλϕʔε ϨϓϦΧηοτ
w ςʔϒϧϨίʔυෳͷσʔλϕʔεʹࢄ͢Δख๏ w ςʔϒϧؒͷJOIN͕͘͠ͳΓɺσʔλΛϦϯΫ͢Δͨ ΊͷઃܭɺϝϯςφϯείετΛֻ͚Δ΄ͲͷεέʔϥϏ ϦςΟ֬อ͕ຊʹඞཁͳͷ͔Αۛ͘ຯͨ͠ํ͕ྑ͍ w ʰෳ%#$BTVBM5BMLTʱͰΑ͘ฉ͍ͨ͜ͱʮෳ%#͢ Δͳʯͩͬͨɻ୯Ұ%#ͰΘͳ͍ྗ͕ٻΊΒΕΔ w
ηΩϡϦςΟ্ͷཧ༝Ͱ%#Λ͚ͳ͚ΕͳΒͳ͍ͱ͍͏ େมͦ͏ͩͬͨ ෳσʔλϕʔε γϟʔσΟϯά
w σʔλϕʔεઃܭɺ&3%ͷεΩʔϚઃܭ Ҏ֎ʹͲͷΑ͏ͳσʔλ͕ͲΕ͘Β͍૿ ͦ͠͏͔σʔλઃܭͱݟཱͯʹ͍ͭͯϓϥ χϯά͓ͯ͘͠ͱྑ͍ w ϩʔΧϧͷগྔσʔλͱຊ൪ڥͰ૿͠ ͍ͯ͘σʔλͷҧ͍Λ಄ͷཪʹඳ͍͓ͯ͘ εΩʔϚઃܭॏཁɺσʔλઃܭॏཁ
ڞ
3BJMTόʔδϣϯ্͕͕ ΔͱɺผͷϑϨʔϜϫʔΫ ʹͳͬͯେม पลͷਓʑ͕มΘΔΘ͚ Ͱͳ͍ͷͰਓ୳͔͠Β Βͳͯ͘͢Ή !LPJD RVFTUJPOFS 3VCZ#VTJOFTT6TFST$POGʹͯ
w 3BJMT୯ͳΔϑϨʔϜϫʔΫͱ͍͏͚ͩͰ ͳ͘ɺͦΕΛத৺ͱͨ͠ίϛϡχςΟͰ ͋Δ w نʹଇ࣮ͬͨΛ͢Δ͜ͱͰɺ৽͘͠ϓ ϩδΣΫτʹೖΔ࣌ɺܴ͑Δ࣌ɺϨʔϧͰ ܨ͕ͬͨͱײ͡ΒΕΔੈքʹ͚ۙͮΒΕΔ 3BJMTͱ͍͏ڞ௨ج൫
IUUQKQSVCZJTUOFU3VCZ,BJHJ DQMVHJOQMVHJOBUUBDI@EPXOMPBEQ1SPHSBNpMF@OBNFUIF@JTMBOE@PG@SVCZ@KQEG 3VCZ,BJHJ %BWF5IPNBT
l IUUQTXXXBUNBSLJUDPKQOFXTSBJMTIUNM There are few Japanese contributors of Rails in
2009 IUUQTUXJUUFSDPNZBIPOEBTUBUVT ˠ ຊͷ3BJMT೦ɻຊ Ͱ3BJMT͕ΘΕͯͳ͍ͱ ͍͏͜ͱͳ͍ͱࢥ͏͕ɺ ͦΕʹͯ͠։ൃऀ͕গͳ ͍ɻࢲ͕ݟͨͱ͜Ζ ਓதͰຊਓΒ͖͠ਓ ਓɻ
w ۙॴʹ͍Δਓͷ(FNΛ͑ͷ๏ଇ w ࠔͬͨͱ͖։ൃऀʹҬίϛϡχςΟͳͲͰ ͤΔ͔ w ΛΑΓཧ͘͢͠ͳΔ w ͲΜͳਓ͕࡞ͬͨ(FN͔
ΫηͳͲ ͔Δ w 3BJMTपลͷਓ͕पΓʹ૿͑Δޮೳ 044ਓ͕࡞͍ͬͯΔ
044ίϛϡχςΟͱͷڞੜΛࢧԉ
େ͖ͳࡿΛ͛Δ υΩϡϝϯτͷεϖϧϛεͷमਖ਼Λ࢝Ίͨྡͷ ਓ͕ɺ࣍ͷૉΒ͍͠ػೳΛ࣮͢Δ͜ͱʹͳ Δ͔Ͳ͏͔୭ʹΘ͔Γ·ͤΜɻ͔͠͠ɺ͋ ͳ͕ͨඍসΜͰɺͲΜͳখ͞ͳߩݙʹײँΛ ࣔ͢͜ͱͰɺϞνϕʔγϣϯΛߴΊͤ͞ɺͦͷ Մೳੑੜ·ΕΔ͔͠Ε·ͤΜɻ 5IF3BJMT%PDUSJOF ຊޠ༁ IUUQTRJJUBDPNUBLBIBTIJNJUFNTE⒎FFDCEBD&""&%&""&&&#"&&#QVTIVQBCJHUFOU
w ୭͔ʹͱͬͯʹཱͭͷίʔυͱݶΒ ͳ͍ w ͳΜΒ͔ͷϥΠϒϥϦͷΈ߹ΘͤͰ౿Μ ͩόάͷϨϙʔτɺϫʔΫΞϥϯυͷ ղܾࡦͰهࣄΛॻ͍͓͚ͯɺಉ͡ ʹૺ۰ͨ͠ਓͷݕࡧώοτͰཱ͔ͭ όουϊϋͷڞ༗
୭͔ʹͱͬͯͷ ࣗʹͱͬͯͷ͔ ͠ΕͣɺͦͷٯવΓ զʑϨʔϧͰܨ͕͍ͬͯΔ
ײ
w ະિ༗ͷΤϯδχΞืू࣌ w ϏδωεΛཱͤ͞ΔϓϩμΫτॏཁͩ ͕ɺϓϩμΫτΛϝϯςφϯεͰ͖Δ։ൃ ऀ͕͍ͳ͍ͱαʔϏεΛҡ࣋Ͱ͖ͳ͍ w ָ͘͠ͳ͍ϨΨγʔٕज़͚ͩͩͱɺح৺ Ԣͳ։ൃऀͷؔ৺Λอͭͷ͍͠ ։ൃऀͷ৺ٕମͷόϥϯεऔΓ
w ʮΊΜͲ͏ͩͳʯͱ͍͏ײࣗମॏཁ w γεςϜͷ։ൃ͚ͩͰͳ͘ɺϓϩδΣΫτࣗମͷ ࣗಈԽΛ͢Δ w $*-JOUFSͱ͍͏πʔϧʹݶΒͣɺఆܕ࡞ۀʹͳΓ ͦ͏ͳͷɺΤϯδχΞϦϯάͰղܾͰ͖ͳ͍͔ ݕ౼ͯ͠ΈΔ w
࣌ʹଵଦʹͳΔͨΊʹ੯͠·ͳ͍ F9USFNF-B[JOFTT
w ϩʔϯνޙΛܴ͑ΔαʔϏε͕͋Δ3BJMT 3VCZ͔3BJMT3VCZͷͲͪΒ͕γϡοͱ ϝϯςφϯε͞Εͯͯɺָͦ͠͏ʁ w OQNཧ͞Ε͓ͯΒͣɺ&4Ҏ߱ͷߏจ͕͑ͳ͍ ϨΨγʔϑϩϯτΤϯυΞϓϦʹະདྷΛݟΕͦ͏ʁ w ҰํͰͷલͷΛɺٿ্Ͱ࠷্खʹղܾͰ ͖ΔͷࣗͨͪͰ͠ΐ͏
खΛಈ͔͔͢Ͳ͏͔ 6QHSBEFNVTUHPPO
ϓϩμΫτͷϝϯςφϏϦ ςΟ্ͱɺΤϯδχΞͱ ͯ͠ಇ͘Α͏ʹͳ͔ͬͯΒ ͷϨϕϧΞοϓंͷ྆ྠ
w 3BJMTΞϓϦέʔγϣϯͷηΩϡϦςΟΞοϓ σʔτΛͰ͖Δঢ়ଶͮ͘ΓγεςϜͷ݈߁ Λҡ࣋͢ΔॏཁͳϑΝΫλʔ w ΞϓϦέʔγϣϯߏஙٕज़ͷϞμϯԽɺγ εςϜʹؔΘΔ։ൃऀͷΩϟϦΞͷ݈߁Λҡ ࣋͢ΔॏཁͳϑΝΫλʔ ৺ͷ݈߁ʹܨ͕Δ ϞμϯԽͷॏཁੑ
ࣗΒͷٕज़ʹؔ৺Λ࣋ͭ͜ͱ ͋ͳͨͷࣄʹ͍ͭͯߟ͑Δ͜ͱʂ ܅ֶͿ͜ͱ͕৺͔Β͖ͩ ܅ιϑτΣΞͷ͜ͱΛେʹࢥ͍ͬͯΔ ΞδϟΠϧαϜϥΠ +POBUIBO3BTNVTTPO ୡਓϓϩάϥϚʔ %BWJE5IPNBT "OESFX)VOU ָ͠͞ʹϏδωεՁ͕͋Δ
म͟͞ΕɺݱΕͣ ืूத ຊฤͷ༰ΛҰॹʹղܾ͍ͯ͜͠͏ͱ͍͏ lத్৽ଔ࠾༻zlϏδωεύʔτφʔz ຊؾͰͨͷΉR
!LBLVUBOJTBZT ΅͘ΤΫετϦʔϜϓϩάϥϛϯάਥͳͷͰɺ ༏लͳϓϩάϥϚʔΛ૿͍ͨ͠ͱࢥ͍ͬͯ·͢ IUUQTTQFBLFSEFDLDPNLBLVUBOJLBJHJPOSBJMT TMJEF
More Decks by Koichi ITO
See All by Koichi ITO
The Rails Doctrine Decade
koic
2
740
Reframing the Agile Manifesto
koic
5
5.1k
The NotImplementedError Problem in Ruby
koic
1
2.2k
Exploring RuboCop with MCP
koic
0
9k
Ruby and LLM Ecosystem 2nd
koic
1
2.3k
STYLE
koic
1
2.3k
Ruby and LLM Ecosystem
koic
3
14k
Write Code Every Day
koic
1
2.8k
Bliki (ja), and the Cathedral, and the Bazaar
koic
7
3.3k
Other Decks in Programming
See All in Programming
クラウドゲーミングのパフォーマンス最適化に挑む / Cloud Gaming Performance Tuning
vivion
0
330
ローカルLLMの基本と近況 2611 / Local LLM basics and recent situation 2611
kishida
2
400
作れるエンジニアから、価値を届けるエンジニアへ
ryunakayama
1
290
LLM 101: Exploring LLMs, Starting with Tokens.
dalinaum
0
110
高橋メソッドでCVE解説シリーズ 〜CVE-2026-112816〜
hakkadaikon
0
260
仕様駆動開発入門 (何を作るかを先に決めて渡す) | 目指せ Kiro マスター 05
inariku
PRO
2
150
どうしても Eloquent でリポジトリパターンをやりたいんだ #phpcon_niigata / phpcon-niigata-2026
shogogg
0
180
クラウドエージェントは、 何がそんなに便利なのか / what makes cloud agents so useful
rkaga
5
860
AIが実装を担う時代の「技術設計」と「チームマネジメント」
kamina_zzz
2
260
Apple Intelligenceとオンデバイス時代の到来
yahir0
0
240
プロジェクトコードをキレイキレイしよう!暗黙的な参照を読み解く静的解析
ostk0069
0
210
Web3Dライブラリを作ってVue Custom Rendererの仕組みを理解しよう / lets learn vue custom renderer by making 3d library
drumath2237
1
130
Featured
See All Featured
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
4
1.2k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Claude Code のすすめ
schroneko
67
230k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3.1k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
350
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1.1k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1.1k
Raft: Consensus for Rubyists
vanstee
143
7.9k
Technical Leadership for Architectural Decision Making
baasie
4
640
Are puppies a ranking factor?
jonoalderson
2
4.2k