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
Exceptional Rails
Search
Shinichi Maeshima
October 27, 2023
8.6k
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Exceptional Rails
kaigi on rails 2023での発表内容です
https://kaigionrails.org/2023/talks/willnet/
Shinichi Maeshima
October 27, 2023
More Decks by Shinichi Maeshima
See All by Shinichi Maeshima
How to Design Configuration for Rails Applications
willnet
2
1.6k
wkhtmltopdfの次どうするか問題2026
willnet
2
2.7k
メタプログラミングRuby問題集の活用
willnet
2
2.1k
rails g authenticationから学ぶRails8.0時代の認証
willnet
5
6k
What's a well-behaved Rails extension gem?
willnet
0
990
Sidekiq vs Solid Queue
willnet
15
15k
どうしてこうなった?から理解するActive Recordの関連の裏側
willnet
6
1.7k
Breaking the Flaky Test Cycle
willnet
2
2.6k
mrskで広がるインフラの選択肢
willnet
1
1.3k
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
530
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.6k
Building the Perfect Custom Keyboard
takai
2
950
How Software Deployment tools have changed in the past 20 years
geshan
3
35k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
360
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
980
The Art of Programming - Codeland 2020
erikaheidi
57
14k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
350
Exploring anti-patterns in Rails
aemeredith
4
560
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
310
Transcript
!XJMMOFU &YDFQUJPOBM3BJMT
Shinichi Maeshima @netwillnet @willnet https://blog.willnet.in Willnet Inc.
ٕज़ސۀΛ͍ͯ͠·͢
͓ࣄ4/4తͳͷΛ։ൃ ͍ͯ͠·͢
&YDFQUJPOBM 3BJMT
None
3BJMTΞϓϦέʔγϣϯʹ͓ ͚Δྫ֎ͱͷ͖߹͍ํʹ ͍ͭͯ͠·͢
3BJMTΞϓϦέʔγϣϯʹ͓ ͚Δྫ֎ͱͷ͖߹͍ํʹ ͍ͭͯ͠·͢
lྫ֎ͱɺ௨ྫͷݪଇʹ͋ͯ ·͍ͬͯͳ͍͜ͱɻҰൠͷ ݪଇͷద༻Λड͚ͳ͍͜ͱɻz IUUQTKBXJLJQFEJBPSHXJLJ&#&#&"
3VCZ3BJMTͷจ຺ͰSBJTF
3BJMTΞϓϦέʔγϣϯʹ͓ ͚Δྫ֎ͱͷ͖߹͍ํʹ ͍ͭͯ͠·͢
ྫ֎ͱͷ͖߹͍ํɺͱ w ͍ͭྫ֎Λൃੜͤ͞Δ͔ w ൃੜͨ͠ྫ֎Λ͍ͭͲͷΑ͏ʹSFTDVF͢Δͷ͔ w ௨͕ඞཁͳྫ֎ΛͲͷΑ͏ʹ։ൃऀʹ௨͢Δ͔ w ΤϥʔϖʔδΛϢʔβʹͲ͏දࣔ͢Δͷ͔
3BJMTΞϓϦέʔγϣϯͰ ͍ͭྫ֎Λൃੜͤ͞Δ͔
ʮඞཁ͕͋Δͱ͖͚ͩ ྫ֎Λൃੜͤ͞Δʯ
ݴ͍͑Δͱ ʮྫ֎Λൃੜͤ͞ͳͯ͘ ͳ͍ͱ͖ൃੜͤ͞ͳ͍ʯ
ͳͥʁ
ྫ֎ϑϩʔ͕͔ΓͮΒ͘ͳΔ
None
None
SBJTFʹΑΔϑϩʔͷΘ͔ΓͮΒ͞ w SBJTFରԠ͢ΔCFHJOʜSFTDVF·ͰભҠ͢ΔͷͰҰݟ͚ͨͩ͠ͰͲ͜ʹભ Ҡ͢Δ͔Θ͔Βͳ͍ࣄ͕͋Δ w CFHJOʜSFTDVF͕ผϝιουʹॻ͔Ε͍ͯͨΒͳ͓͞Β͔ΓͮΒ͍ w SFTDVFͰิ͢ΔΤϥʔ༰ʹΑͬͯɺྫ֎ൃੜݩ͕ෳ͋Δ͔ʁ w Ͳ͏͍͏ભҠΛͨͲΔ͔͔ΓͮΒ͍
ྫ֎͍
None
None
ഒҎ্͍
ʮඞཁ͕͋Δͱ͖͚ͩ ྫ֎Λൃੜͤ͞Δʯ
ඞཁ͕͋Δͱ͖ͱʁ
ݪଇͱͯ͠ҟৗܥ
ਖ਼ৗܥɺ४ਖ਼ৗܥɺҟৗܥ
͜ͷݴ༿ͷఆٛ͋͘·Ͱ ͜ͷൃදʹ͓͍ͯ͜ͷΑ͏ʹఆ ٛ͠·͢ɺͱ͍͏ͷͰ͢
ਖ਼ৗܥͷྫ ϩάΠϯϑΥʔϜʹਖ਼͍͠ϝʔ ϧΞυϨεͱύεϫʔυΛೖྗ ͯ͠ϩάΠϯͰ͖ͨ
४ਖ਼ৗܥͷྫ ϩάΠϯϑΥʔϜʹؒҧͬͨϝʔϧ ΞυϨεͱύεϫʔυΛೖྗͯ͠ ʮϝʔϧΞυϨε·ͨύεϫʔυ ͕ؒҧ͍͑ͯ·͢ʯͱදࣔ͞Εͨ
ҟৗܥͷྫ %#αʔόͷଓʹ ࣦഊͨ͠
ҟৗܥͰྫ֎Λൃੜͤ͞Δ࣮ྫ
དྷΔͣͷͳ͍ذʹདྷͯ͠· ͬͨ
None
Ϣʔβೖྗʹґଘ͠ͳ͍ Ϟσϧมߋͷࣦഊ
None
None
Ϣʔβೖྗແ͠Ͱআ͢ΔͷͰ͋Ε جຊޭ͢Δͣ
ͳΜΒ͔ͷཁҼͰআʹࣦഊͨ͠ͱ͖ʹ ྫ֎Λൃੜͤͯ͞ؾ͚ΔΑ͏ʹ͓ͯ͘͠
Λ͚ͭΕΔͱʜʁ
আʹࣦഊͨ͠ͱ͖Ϣʔβʹzআ͠ ·ͨ͠zͱදࣔ͞Εͯ͠·͏
ϢʔβೖྗΛΘͣ %#Λߋ৽͢Δͱ͖zzΛ ͚ͭͯؾ͚ΔΑ͏ʹ͢Δ
ݪଇͱͯ͠ҟৗܥ
ݪଇʹର͢Δྫ֎
४ਖ਼ৗܥͰྫ֎Λൃੜͤ͞Δ ेͳϝϦοτ͕͋Ε👌
ྫ"DUJWF3FDPSE3FDPSE/PU'PVOE
ྫ֎Λආ͚Δͱ͜͏ͳΔ
શ෦ͷͰ͜ΕΛΔͷ͍ͨΜ
ྫ֎Λ্͛ͯҐͷϨΠϠʹ ॲཧΛͤΔͱָ
ྫ֎Λ͍ͭͲͷΑ͏ʹSFTDVF͢Δ͔
ྫ֎Λ͍ͭͲͷΑ͏ʹSFTDVF͢Δ͔
͖ͬͨ͞͠ʮྫ֎Λൃੜͤ͞Δʯ έʔεҎ֎ͳΔ͘ૣ͘SFTDVF ͢Δ
ૣ͘SFTDVFͨ͠΄͏͕ϑϩʔ͕ Θ͔Γ͍͢
ྫ
None
None
ྫ֎Λ͍ͭͲͷΑ͏ʹSFTDVF͢Δ͔
ͳΔ͘۩ମతʹྫ֎Λࢦఆ͢Δ
None
UZQP͍ͯ͠Δͷʹؾ͚ͳ͍
ఆ͍ͯ͠ͳ͍ྫ֎Λิͯ͠͠·͏ ͱෆ۩߹ʹؾ͘ͷ͕ΕΔ
None
ͳΔ͘CFHJOʜSFTDVFΛڱ͘͢Δ
None
9QPTUʹࣦഊͨ͠ΒGBMTFΛฦ͍ͨ͠
None
VQEBUF͕ྫ֎Λग़ͨ͠Β9QPTU͕ ޭ͍ͯ͠ΔͷʹGBMTF͕ฦͬͯ͠·͏
ఆ͍ͯ͠ͳ͍ྫ֎Λิͯ͠͠·͏ ͱෆ۩߹ʹؾ͘ͷ͕ΕΔ
None
VQEBUF͕ྫ֎Λൃੜͤͨ͞Β ͙͢ؾ͚Δ
։ൃऀʹର͢Δ௨Λ Ͳ͏͢Δ͔
VQEBUF͕ྫ֎Λग़ͯ͠ ϢʔβʹΤϥʔը໘ݟͤͨ͘ͳ͍ͱͨ͠Βʁ
None
ϩάʹॻ͖ग़͚ͩͩ͢ͱ ຒΕͯ͠·͍·͢Ͷ
ΤϥʔτϥοΩϯάαʔϏε w 4FOUSZ w 3PMMCBS w )POFZ#BEHFS w "JSCSBLF w
3BZHVO w FUD
ϢʔβʹΤϥʔΛݟͤͣʹ ։ൃऀʹ௨͢Δ
3BJMTҎ߱͜͏ॻ͚Δ
ϒϩοΫͰࢦఆͨ͠ྫ֎্͕͕ͬͨ Βɺࣄલʹొ͓͍ͯͨ͠ॲཧΛߦ͏
ʮ4FOUSZʹྫ֎ใΛૹΔʯ Λࣄલొ͢Δઃఆ
࣮ࡍʹઃఆ͞ΕΔίʔυ
IBOEMFͷͱ͖ྫ֎ΛѲΓͭͿ͢
SFDPSEͷͱ͖࠶SBJTF͢Δ
ࡉ͔͍༷3BJMTΨΠυΛݟͯͶ
͜͜௨͢Δඞཁ͕͋Δʁͳ͍ʁ
ઈରͷਖ਼ղͳ͍͚Ͳ ҰൠతʹͲ͏அ͢ΔͱΑͦ͞͏ʁ
։ൃऀʹྫ֎Λ௨͢Δஅج४ w Ͳ͏͍͏ঢ়گͰΤϥʔ͕ى͖Δ͔Λߟ͑Δ w ྫ9ͷαʔό͕ෆௐˠෆௐΛͪ͜ΒଆͰղফ͢Δ͜ͱͰ͖ͳ͍ w ྫ"1*ΩʔΛؒҧ͍͑ͯͯΤϥʔˠΩʔΛઃఆͤ͠ղফ͢Δ w ରԠͰ͖ͳ͍Τϥʔʹ͍ͭͯ௨͕དྷͯϊΠζʹͳΔͷͰආ͚Δ w
ྫ͑4FOUSZʹXBSOJOHɺEFCVHͳͲͷϨϕϧ͕ઃఆͰ͖ͯ௨ৗͷྫ֎ͱ۠ ผ͢Δ͜ͱ͕Ͱ͖Δ w ࠓճͷྫͰXBSOJOHʹઃఆ͞Εͨྫ֎͕ظؒʹͨ͘͞Μൃੜ͢ΔΑ͏ͳΒ ௨͢ΔɺΑ͏ͳΓํ͕ྑͦ͞͏ʁ ଞͷղ͋Γͦ͏
None
͋Θ࣮ͤͯࢪ͍ͨ͠ɿෆཁͳΤ ϥʔΛ௨͠ͳ͍Α͏ʹௐ͢ Δɺ௨͞ΕͨͷΛτϦΞʔ δͯ͠ॗʑͱରԠͰ͖Δମ੍ͮ ͘Γ
ΤϥʔϖʔδΛ Ͳ͏ͬͯදࣔ͢Δ͔
None
͜ΕͰෆશ
͠SBDLͰ ྫ֎͕ى͖ͨΒʁ
None
3BJMTσϑΥϧτͰ ΤϥʔϖʔδΛදࣔ͢Δ 3BDLϛυϧΣΞΛ༻ҙ͠ ͍ͯΔ
ϖʔδΛදࣔ͢Δ Α͏ͳ൚༻తͳରԠ3BDL ϛυϧΣΞʹͤΔͱ%3:
SFTDVF@GSPN ಛผͳέʔεͰͷΈ͏
ΤϥʔϖʔδΛදࣔ͢Δ 3BDLϛυϧΣΞͬͯͲ͏ ಈ͍͍ͯΔʁ
3"*-4@&/7QSPEVDUJPO SBJMTNJEEMFXBSF
3BDLͰྫ֎Λิͨ͠ΒͲ͏ͳΔʁ w DPO fi HBDUJPO@EJTQBUDITIPX@FYDFQUJPOTͰΤϥʔϖʔδΛදࣔ͢Δ͔൱ ͔͕ܾ·Δ w ςετڥҎ֎σϑΥϧτʮදࣔ͢Δʯʹͳ͍ͬͯΔ w
ςετڥͰɺ3BJMT·Ͱ୯ʹʮදࣔ͠ͳ͍ʯ͕σϑΥϧτͩͬͨ ͕ɺ3BJMT͔Β ʮ"DUJPO%JTQBUDI&YDFQUJPO8SBQQFSSFTDVF@SFTQPOTFTʹଘࡏ͢Δྫ ֎ΫϥεͰ͋Εදࣔ͢Δʯͱ͍͏ઃఆʹͳ͍ͬͯΔ w Τϥʔϖʔδ͕දࣔ͞ΕΔ͜ͱΛςετ͍ͨ͠ϢʔεέʔεʹରԠ͍ͯ͠ Δ
3BDLͰྫ֎Λิͨ͠ΒͲ͏ͳΔʁ w DPO fi HDPOTJEFS@BMM@SFRVFTUT@MPDBMͰσόοά༻ͷΤϥʔϖʔδ͔ຊ൪༻ͷ Τϥʔϖʔδ͔͕ܾ·Δ w ຊ൪༻ͷΤϥʔϖʔδDPO fi
HFYDFQUJPOT@BQQʹઃఆ͞Εͨ3BDLΞϓϦέ ʔγϣϯΛDBMMͨ݁͠Ռ͕දࣔ͞ΕΔ w σϑΥϧτ"DUJPO%JTQBUDI1VCMJD&YDFQUJPOTΠϯελϯε͕ઃఆ͞ Ε͍ͯΔ
3BDLͰྫ֎Λิͨ͠ΒͲ͏ͳΔʁ w "DUJPO%JTQBUDI1VCMJD&YDFQUJPOT "DUJPO%JTQBUDI&YDFQUJPO8SBQQFSSFTDVF@SFTQPOTFTΛݟͯɺྫ֎Ϋϥεʹ ରԠ͢ΔϨεϙϯεεςʔλεΛಘΔ w ରԠ͕ͳ͍ྫ֎ JOUFSOBM@TFSWFS@FSSPS ѻ͍
w ϦΫΤετϑΥʔϚοτ͕IUNMͩͬͨΒɺQVCMJD\εςʔλε^IUNMΛදࣔ͢Δ w ରԠ͢ΔϑΝΠϧ͕ͳ͚Εۭ w ϦΫΤετϑΥʔϚοτ͕KTPOͩͬͨΒA\TUBUVT FSSPS#BE3FRVFTU^A ͷΑ͏ͳ+40/Λฦ͢
ಠࣗͷྫ֎ΫϥεΛରԠ͍ͤͨ͞ͱ͖͜͏ॻ͘
ಈతͳΤϥʔϖʔδΛදࣔ ͔ͨͬͨ͠ΒͲ͏͢Δʁ
DPOGJHFYDFQUJPOT@BQQΛಠࣗͷ 3BDLΞϓϦέʔγϣϯʹ͢Δ͜ͱ ͰಈతͳΤϥʔϖʔδΛ࡞Δ͜ͱ Ͱ͖Δ
ݸਓతʹσϑΥϧτͳ ΈΛͬͯ੩తͳϖʔδ Λදࣔͤ͞Δͷ͕͓͢͢Ί
ಈతͳΤϥʔϖʔδͷσϝϦοτ w ։ൃ࣌ʹຊ൪ͷΤϥʔϖʔδΛݟΔ͜ͱ͕΄΅ͳ͍ w ը໘่͕Ε͍ͯͯؾ͖ͮΒ͍ w ΤϥʔϖʔδΛදࣔ͢ΔϩδοΫʹόά͕͋ͬͯؾ͖ͮΒ͍ w ΤϥʔϖʔδΛදࣔ͢ΔλΠϛϯάͰΤϥʔʹͳΓɺਖ਼͘͠Τϥʔϖʔδ ΛදࣔͰ͖ͳ͍
Ͳ͏ͯ͠ಈతͳΤϥʔ ϖʔδ͕ඞཁͳΒ SBNCVMBODFΛ͏
SBNCVMBODFͷओͳػೳͱϝϦοτ w ϏϡʔςϯϓϨʔτΛར༻ͯ͠ಈతʹΤϥʔϖʔδΛ࡞Ͱ͖Δ w ʮΤϥʔϖʔδΛಈతʹදࣔ͢ΔʯΛࣗ࡞͢ΔͱϋϚΔϙΠϯτΛճආͰ͖ Δ w ΤϥʔϖʔδΛදࣔ͢Δ෦ͷ୯ମςετ͕؆୯ʹॻ͚Δ w ։ൃڥͰΤϥʔϖʔδΛ֬ೝ͢Δ͜ͱ͕Ͱ͖Δ
w FYIUUQMPDBMIPTUSBNCVMBODFOPU@GPVOE
ͱ͍͑·ͩߟ͑Δ͜ͱ͋Δ w ʮ%#ͱଓͰ͖ͳ͍ʯͳͲͷக໋తͳέʔεʹͲ͏ରԠ͢Δ͔ w ද่ࣔΕΛආ͚Δํ๏ w ϏδϡΞϧϦάϨογϣϯςετ
·ͱΊ w 3BJMTΞϓϦέʔγϣϯͰ͍ͭྫ֎Λൃੜͤ͞Δ͔ w ൃੜͨ͠ྫ֎ΛͲͷΑ͏ʹѻ͏͔ w ։ൃऀʹ௨͢Δํ๏ w ΤϥʔϖʔδΛදࣔ͢Δํ๏ w
ͳͲͳͲɺͦΕͧΕ۩ମྫΛަ͑ͯઆ໌͠·ͨ͠ w ࣭ͳͲ͋ͬͨΒ͜ͷ͋ͱXJMMOFUΛั·͑Δ͔ w EJTDPVSTFDMFBOSBJMTPSHʹτϐοΫΛ࡞͍ͬͯΔͷͰίϝϯτ͍ͩ͘͞
IUUQTEJTDPVSTFDMFBOSBJMTPSHUUPQJD