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
What's a well-behaved Rails extension gem?
Search
Shinichi Maeshima
September 06, 2025
Technology
0
300
What's a well-behaved Rails extension gem?
ながらRuby会議01
https://regional.rubykaigi.org/nagara01/
でのスポンサーLT資料です
Shinichi Maeshima
September 06, 2025
Tweet
Share
More Decks by Shinichi Maeshima
See All by Shinichi Maeshima
rails g authenticationから学ぶRails8.0時代の認証
willnet
5
2.6k
Sidekiq vs Solid Queue
willnet
14
12k
どうしてこうなった?から理解するActive Recordの関連の裏側
willnet
6
1.5k
Exceptional Rails
willnet
6
7.7k
Breaking the Flaky Test Cycle
willnet
2
2.2k
mrskで広がるインフラの選択肢
willnet
1
1.1k
アプリケーションを長期にわたって無理なく運用するためのたったひとつの方法
willnet
2
2.2k
HotwireからDHHが考えるこれからのRailsとJSの付き合い方を知る
willnet
14
14k
Rails6.1で新しく入る機能について
willnet
12
16k
Other Decks in Technology
See All in Technology
GC25 Recap+: Advancing Go Garbage Collection with Green Tea
logica0419
1
370
業務自動化プラットフォーム Google Agentspace に入門してみる #devio2025
maroon1st
0
180
SREとソフトウェア開発者の合同チームはどのようにS3のコストを削減したか?
muziyoshiz
1
100
Windows で省エネ
murachiakira
0
160
DataOpsNight#8_Terragruntを用いたスケーラブルなSnowflakeインフラ管理
roki18d
1
320
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
5.4k
AIが書いたコードをAIが検証する!自律的なモバイルアプリ開発の実現
henteko
1
330
AI時代だからこそ考える、僕らが本当につくりたいスクラムチーム / A Scrum Team we really want to create in this AI era
takaking22
6
3.1k
ACA でMAGI システムを社内で展開しようとした話
mappie_kochi
0
220
いまさら聞けない ABテスト入門
skmr2348
1
190
「Verify with Wallet API」を アプリに導入するために
hinakko
1
220
GA technologiesでのAI-Readyの取り組み@DataOps Night
yuto16
0
260
Featured
See All Featured
Facilitating Awesome Meetings
lara
56
6.6k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
850
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.6k
A Tale of Four Properties
chriscoyier
160
23k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.6k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Building an army of robots
kneath
306
46k
Build your cross-platform service in a week with App Engine
jlugia
232
18k
Building Applications with DynamoDB
mza
96
6.6k
Into the Great Unknown - MozCon
thekraken
40
2.1k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
30
2.9k
Transcript
© SmartHR, Inc. 1 8IBUTBXFMMCFIBWFE3BJMTFYUFOTJPOHFN ͳ͕Β3VCZձٞεϙϯαʔ-5 લౡਅҰ !XJMMOFU 4NBSU)3ٕज़ސ
2025/09/06
͜ͷൃදͷ༰ w ͳ͕Β3VCZձٞͷϓϩϙʔβϧʹग़ ͨ͠ͷͷ͋͑ͳ͘མબͨ͠༰Ͱ͢ w 4NBSU)3ࣾͷεϙϯαʔ-5ΛΘͤ ͍͍ͯͨͩͯॖ൛Λ͠·͢ 2
લౡਅҰ !XJMMOFU ࣗݾհ גࣜձࣾ4NBSU)3Λ͡Ίͱͯ͠ෳࣾͰ ٕज़ސΛͯ͠·͢ ࠓ4NBSU)3ͷࢠΛඃ͍ͬͯ·͢ύʔ ΧʔΛண͍ͯ·͢
4NBSU)3ͰΤϯ δχΞΛืू͍ͯ͠ ·͢ʂʂʂʂʂʂ 4
ϑϧϦϞʔτϫʔΫ ͳͷͰذෞ͔ΒͰ ࣄͰ͖·͢ʂʂʂ 5
4NBSU)3ͷݸਓతͳΦε εϝϙΠϯτͪΌΜͱ͠ ͯΔͱ͜ΖͰ͢ ྫࣾ -5ձΛۀ࣌ؒதʹΔ 6
ͪΐͬͱฉ͍ͯΈ͍ͨͳʙ ͱ͍͏ͻͱ4NBSU)3ύʔ Χʔண͍ͯΔͻͱʹؾܰʹ ͔͚͍ͯͩ͘͠͞ʂʂʂ 7
None
ࠓ3BJMTΛ֦ு͢ΔHFN͕कΔ ͖͓࡞๏ʹ͍ͭͯ͠·͢
͓࡞๏ͬͯͳʹʁ ʮ3BJMTͷίϯϙʔωϯτ FY "DUJPO$POUSPMMFS#BTF Λ֦ு͢Δ ͱ͖ʹ"DUJWF4VQQPSUPO@MPBEΛ ར༻ͯ͠Ԇ࣮ߦ͢͠ʯ 10
ͭ·Γ 11
"DUJWF4VQQPSUPO@MPBEͱ w Ҿͷίϯϙʔωϯτ FY "DUJPO$POUSPMMFS#BTF ͕ϩʔυ͞ΕΔλΠ ϛϯά·ͰॲཧΛԆͤ͞Δϝιου w ରίϯϙʔωϯτ͕ಡΈࠐ·ΕͨޙͰ "DUJWF4VQQPSUPO@MPBEΛ࣮ߦͨ͠Βϒϩο
Ϋଈ࣮ߦ͞ΕΔ 12
ͳͥ"DUJWF4VQQPSUPO@MPBEΛ࣮ߦ͠ͳ ͚Ε͍͚ͳ͍ͷ͔ʁ ͓࡞๏௨Γॻ͔ͳ͍ͱద༻ͨͭ͠ Γͷઃఆ͕༗ޮʹͳΒͳ͍͔͠Ε ͳ͍ 13
લఏ3BJMTBQQMJDBUJPODPOGJHͷઃఆ ΰʔϧ͡Όͳ͍ w 3BJMTBQQMJDBUJPODPOGJHͷઃఆΛ֤ίϯϙʔω ϯτͷઃఆʹө͢Δ͜ͱͰॳΊͯద༻͞ΕΔ w 3BJMT SBJMUJFT ͋͘·Ͱ֤ίϯϙʔωϯτΛͭ ͳ͛ΔׂͰ͋Γɺίϯϙʔωϯτࣗମಠཱ
͍ͯ͠Δ w 3BJMTͷॳظԽ࣌ʹઃఆͷөͷొ͕ߦΘΕΔ 14
ίʔυྫ 15
ॳظԽॲཧͷॱ൪ DPOGJHBQQMJDBUJPOSC ֤ίϯϙʔωϯτͷઃఆө DPOGJHJOJUJBMJ[FST SC 16
લఏઃఆͷө֤ίϯϙʔωϯτ ΛԆϩʔυ͢ΔલఏͰ࡞ΒΕ͍ͯΔ w "DUJWF4VQQPSUPO@MPBEͰίϯϙʔωϯτ͕ ϩʔυ͞ΕͨλΠϛϯάʹҰؾʹઃఆΛద ༻͢Δߏʹͳ͍ͬͯΔ w ίϯϙʔωϯτͷϩʔυλΠϛϯά3BJMT ॳظԽ͕Ұ௨ΓऴΘͬͨޙΛఆ͍ͯ͠Δ 17
͜͜Ͱ͕Δ 3BJMTΛ֦ு͢ΔHFN͕࣍ͷΑ͏ʹ "DUJPO$POUSPMMFS#BTF ΛԆϩʔυ͠ͳ͍ͱʜʁ 18
DPOGJHJOJUJBMJ[FST SC࣮ߦલʹ֤ ίϯϙʔωϯτͷઃఆ͕ө͞ΕΔ DPOGJHBQQMJDBUJPOSC ֤ίϯϙʔωϯτͷઃఆө DPOGJHJOJUJBMJ[FST SC
͜͜Ͱ DPOGJHBDUJPO@DPOUSPMMFSBMMPX@EFQSFDBUFE@ QBSBNFUFST@IBTI@FRVBMJUZͳͲΛઃఆͯ͠ ৼΔ͍มΘΒͳ͍ 19
DPOGJHJOJUJBMJ[FST SCSBJMTΛΞοϓάϨʔ υ͢Δͱ͖ʹΑ͘ΘΕΔ CJOSBJMTBQQVQEBUFͱ͢Δͱ DPOGJHJOJUJBMJ[FST OFX@GSBNFXPSL@EFGBVMUT@9@:SCͳϑΝΠ ϧ͕࡞ΒΕͯɺஈ֊తʹ৽͍͠3BJMTͷσ ϑΥϧτઃఆʹΓସ͑ͯ͘͘͢͠ΕΔ 20
͔͓͠͠࡞๏ʹଇ͍ͬͯͳ͍HFNΛ͍ͬͯΔͱ ઃఆ͕ͨͣ͠Ͱ͖ͯͳ͍ɺͳΜ ͰʁͱͳΔ 21
͕͍ࣗͬͯΔ3BJMTΞϓϦέʔγϣϯʹ͓࡞๏ʹ ଇ͍ͬͯͳ͍HFN͕͋Δ͔Ͳ͏͔Λผ͢Δͷ͍͠ (FNGJMFMPDLΛݟΔͱݸҎ্ͷ HFNΛ͍ͬͯΔͳΜͯβϥ 22
ͦ͜Ͱࣗಈݕग़Ͱ͖ΔHFNΛ࡞Γ·ͨ͠ XJMMOFUBOUJ@NBOOFS@LJDL@DPVSTF 23
͍ํ w (FNGJMFͷҰ൪্ʹHFNlB OUJ@NBOOFS@LJDL@DPVSTFzΛՃ w SVCPDPQͷ#VOEMFS0SEFSFE(FNTDPQ͕ ༗ޮͳͱ͖ʹҰ൪্ʹདྷΔΑ͏ʹ໊લ Λ͍ͯ͠·͢ w "/5*@."//&3SBJMTCPPUΛ࣮ߦ͢Δ
24
3BJMTΛ֦ு͢ΔHFN։ൃऀ͕͓࡞๏ʹ४͡ ͍ͯΔ͔ςετ͢Δํ๏༻ҙ͍ͯ͠·͢ 25
͓࡞๏ʹ४͍ͯ͡ͳ͍HFNΛݟ͚ͭ ͨΒ0,Ͱͳ͍ HFNଆΛ͞ͳ͍ͱ͍͚ͳ͍ 26
ݸਓతʹͰ͖ΔൣғͰͬͯ·͢ w 13ҰൃͰͲ͏ʹ͔ͳΒͳ͍͜ͱଟ͍ͷͰಓʹͬͯ·͢ w TFFEGVHFNެࣜͤͳ͔ͬͨͷͰGPSLͨ͠IUUQT HJUIVCDPNXJMMOFUTFFEEP w IFBMUI@DIFDLHFN$*Λ͍ͯ͠·͢IUUQTHJUIVCDPN 1VSQMF%FWTIFBMUI@DIFDLQVMM w
TPSDFSZHFNϝϯςφʹͳͬͯվળதIUUQTHJUIVCDPN 4PSDFSZTPSDFSZ 27
ؒΛืू͍ͯ͠·͢ ࣗͷ୲ϓϩδΣΫτͰB OUJNBOOFS@LJDL@DPVSTFΛ࣮ߦ͢Δ ͓࡞๏ʹଇ͍ͬͯͳ͍HFN͕͋ͬͨΒί ϯτϦϏϡʔτ͢Δʂ 28
None