Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Carving the Way to Ruby Engineering
Search
Koichi ITO
December 05, 2024
Education
2
350
Carving the Way to Ruby Engineering
RubyWorld Conference 2024 (
https://2024.rubyworld-conf.org/ja/
)
Koichi ITO
December 05, 2024
Tweet
Share
More Decks by Koichi ITO
See All by Koichi ITO
Beyond the RuboCop Defaults
koic
3
2.9k
Minify Ruby Code
koic
2
2.1k
Permanent Agility
koic
37
7.6k
RuboCop: LSP and Prism
koic
3
4.2k
Organizational Pattern Hatching
koic
0
1.5k
A Practitioner's Journey from Ruby 1.8 to Present
koic
1
2k
A Story Featuring Right Hand Archetype
koic
0
1.1k
Without Practice, No Emergence
koic
4
2.4k
The Resurrection of the Fast Parallel Test Runner
koic
1
6.2k
Other Decks in Education
See All in Education
Blogit opetuksessa
matleenalaakso
0
1.7k
Semantic Web and Web 3.0 - Lecture 9 - Web Technologies (1019888BNR)
signer
PRO
2
2.5k
Master of Applied Science & Engineering: Computer Science & Master of Science in Applied Informatics
signer
PRO
0
520
ニュースメディアにおける生成 AI の活用と開発 / UTokyo Lecture Business Introduction
upura
0
120
(2024) Couper un gâteau... sans connaître le nombre de convives
mansuy
2
150
Image compression
hachama
0
120
Flinga
matleenalaakso
2
13k
Repaso electricidade e electrónica
irocho
0
210
cbt2324
cbtlibrary
0
120
Library Prefects 2024-2025
cbtlibrary
0
120
横浜国立大学大学院 国際社会科学府 経営学専攻博士課程前期(社会人専修コース)_在校生体験談
miki_small_pin
0
750
Evaluation Methods - Lecture 6 - Human-Computer Interaction (1023841ANR)
signer
PRO
0
720
Featured
See All Featured
Speed Design
sergeychernyshev
25
650
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
How to Think Like a Performance Engineer
csswizardry
21
1.2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Designing Experiences People Love
moore
138
23k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Building Better People: How to give real-time feedback that sticks.
wjessup
365
19k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
160
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.2k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.4k
Transcript
3VCZϓϩάϥϛϯάεΫʔϧ ͔Βͷ࠾༻ͱҭ Carving the Way to Ruby Engineering ҏ౻ߒҰ&4. *OD
3VCZ8PSME$POGFSFODF ౡࠜݝཱ࢈ۀަྲྀձؗʮ͘ʹͼ͖ϝοηʯ
@koic w044ϓϩάϥϚʔ w3VCP$PQίΞνʔϜίϛολʔ wגࣜձࣾӬγεςϜϚωδϝϯτ &4. *OD ΤϯδχΞϦϯάϚωʔδϟʔ σΟεςΟϯάΠογϡυɾΤϯδχΞ
None
࠾༻ͱಇ͖ํͷଟ༷Խ wਓੜͷঢ়گʹ͋Θͤͨ ϥΠϑελΠϧΛଚॏ͢Δ wؔ౦ݍɺҪɺ࣎լɺ Վࢁɺౡࠜɺٶ࡚͔Βͷ ϦϞʔτϫʔΫ 🗾
w த్ *5اۀ͔Β w த్ εΫʔϧܦ༝ w ৽ଔ
w ͕εΫʔϧग़ऀ w εΫʔϧ͔Βݩܯɺ्ҩɺڭࢣͳͲଟ༷ ࢲͨͪͷ৫ͷೖࣾܦ࿏
ࠓͷ
☝ 3VCZ͕ଟ༷ͳݱ࣮ੈքͷద߹ͱਁಁ͍ͯͨ͘͠Ίͷ׆ಈঢ়گΛ͖࣋ͬͯ·ͨ͠ IUUQTSVCZXPSMEDPOGPSHKBBCPVU
εΫʔϧ͔Βͷ࠾༻ͱҭϞσϧ 5SBJOJOH (SBEVBUJOH "QQSFOUJDJOH $BUBMZ[JOH 1SF&OHJOFFS 5SBOTJUJPOBM $IBOHF PS/PU (3085)
1SBHNBUJD4LJMMT (3085) 3VCZ'VOEBNFOUBMT (FUUJOH4UBSUFE School-to-Work Model *OTQJSFECZIUUQTXXXNBSUJOGPXMFSDPNBSUJDMFTBHJMF'MVFODZIUNM
ಛఆͷεΫʔϧʹدΒͳ͍ʁ 3VCZCJ[(SBOEQSJYΫϦΤΠςΟϒͷड͓ΊͰͱ͏͍͟͝·͢ʂ
ϑϥΫλϧίϛϡχςΟ ࠾༻ͱ͍͏໊ͷ௨աӺ ҭڥͮ͘Γ ࣍
ϑϥΫλϧίϛϡχςΟ
w 3VCZJTUʹҰछͷຽతͳՁ؍श׳͕ ͋ΔԾઆ w ϓϩάϥϛϯάݴޠΛֶͿ͚ͩͰͳ͘ɺ ϓϩάϥϛϯάݴޠΛͬͯΔίϛϡχςΟ Ͱͷઃܭͷྑ͠ѱ͠ͷՁ؍ৼΔ͍ํ Λ͍ͬͯ͘ ݴޠίϛϡχςΟΛΔ
w զʑ3VCZJTUɺ3VCZͱ͍͏ݴޠͱ3BJMTͱ ͍͏%4-Λࠃޠͱͨ͠ରΛߦ͏ w 3VCZ3BJMTΒ͍͠ ͘͠Β͘͠ͳ͍ ίʔυͷڞ௨ೝ͕ࣝͲ͏3VCZJTUʹ͋Δ w ʮݴޠࢥߟΛنఆ͢ΔʯαϐΞʹΥʔϑ
ͷԾઆɺ͋Δ͍ʮόϕϧʯ ࠃޠͷډ৺ͷྑ͞
7MBEJNJS%FNFOUZFWTBZT 0QFOJOH,FZOPUFPG,BJHJPO3BJMT
w ίʔυϦʔσΟϯά࡞ऀ͕͍͑ͨ͜ͱΛ ίʔυ͔ΒಡΈऔͬͯߟ͑Δ࡞ۀ w ݹయจֶ๏ͷઐՈͷΑ͏ʹɺ3VCZJTU 3VCZͱ3BJMTͷղऍΛॏͶ͍ͯ͘ w ॳ͔Βͳ͔ͬͨ3VCZ3BJMTઐՈಉ࢜ͷ ͕ٞঃʑʹΘ͔ΔΑ͏ʹͳͬͯ͘Δ ࡞ऀͷؾ࣋ͪΛߟ͑
ଓ͚ Α
εΫʔϧͱ͍͏ίϛϡχςΟͷೖΓޱ 3BJMTʹͨΒ͞Εͨ ʮઃఆΑΓنʯ ɺεΫʔϧं͔྆ Βاۀं྆ؒͷ ंํ๏ͷલఏͷ෯ Λ͍͛ͯΔʁ IUUQTKQRVPSBDPN3VCZʹͱܾͬͯఆతʹΓͳ͍ͷԿͩͱࢥ͍·͔͢
εΫʔϧ اۀʹଓ͘
w ԿेਓنͰ࠾༻Ͱ͖ΔେاۀͰͳ͍Զͨͪ w ϓϩάϥϛϯάະܦݧऀΛूஂڭࣨࢦಋ͢Δ ઐՈͰͳ͘ɺεΫʔϧͱ͍͏ઐۀऀ w 3VCZεΫʔϧʹ͓͚Δ3VCZίϛϡχςΟͷ ܗɺΦʔϓϯͳ3VCZίϛϡχςΟͱܨ ͕ΓͰ͋Γɺಉ͡ࢹͷؒͷू·Γॏཁ ࠾༻ͱ͍͏௨աӺ·Ͱͷҭ
w 3VCZΛओྗʹ࠾༻͍ͯ͠Δاۀɺ3VCZͬ Ά͍ਓͨͪͰߏ͞Εͯ͘Δʁ w ҰํͰɺ৫ʹΑͬͯՁ؍େʹ͍ͯ͠ Δͷʹର͢ΔΧϥʔ͕͋Δ w ৫ಛੑͷϚονϯάͰߟ͑ͯΈΔ ͓ޓ͍ʹͲΜͳਓ ͨͪ
ͱࣄΛ͍ͨ͠ʁ ద ߹ ੑ ॏ ཁ
ͲΜͳਓ͕ͨͪ จԽΛ࡞ͬͯ ͍Δ৫ʹ ࢀՃ͍ͨ͠ʁ ࠾༻ଆจԽΛൃ৴ͯ͠ɺԠืଆࣗʹ͍͋ͦ͏ͳจԽΛ୳ͤΔͱྑ͍ͷ͔ͳ
w 3VCZJT"HJMFCZ.BU[ w ֯୩͞Μ͕ฐࣾӡӦΠϕϯτͰاըͨ͠ओ 3VCZJTUΛड͚ೖΕΔاۀจԽΛৢ͢ IUUQTPCKFDUDMVCKQFWFOUDISJTUNBTTDIFEVMF
None
৫จԽ ίϛϡχςΟ ͱͷϚονϯάͷߟ ब৬Ԡืऀͱ࠾༻اۀͷϚονϯάͰɺ৫ΛίϛϡχςΟͱͯ͠ଊ͑ͯΈΔ
ͲΜͳਓͨͪͱಇ͖͍ͨʁ ͋Δ͍ ͲΜͳਓΛड͚ೖΕ͍ͨʁ
w ৴པͰ͖Δਓ͔Βͷڑ w ৴པͰ͖Δਓ͕৴པͰ͖Δͱݴ͍ͬͯΔਓ w ϦϑΝϨϯενΣοΫͻͱͭͷखஈͳ͕Β ৴པͰ͖Δے͔Βͷใ͕Ұ൪ͷ৴པݩ ࠾༻Λതଧʹ͠ͳ͍EFHSFFO ͭ·ΓίϛϡχςΟͰͷϨϐϡςʔγϣϯͱͯॏཁ
w ɹʮொా͍ʯͱ͍͏ίϛϡχςΟదੑஅ w اۀͱੜెͦΕͧΕΛ͍ͬͯΔͷͰɺ૬ੑ Λߟ͑Δ͜ͱ͕Ͱ͖Δ w εΫʔϧίϛϡχςΟͰɺਓͱاۀͷίϛϡ χςΟจԽΛΔ࿉͕͞Ε͍ͯΔͷͰʁ ίϛϡχςΟ͔ΒίϛϡχςΟ 3VCZίϛϡχςΟʮ࣍ͷִͨΓʯͳΒ͵.BU[ͱࡾ࣍ͷִͨΓͰܨ͕Γͦ͏
IUUQBHJMFFTNDPKQEPDTCVTJOFTT@QMBO@FTN@BHJMF@EJW@UIQEG ੜଶܥʹͱͬͯεΫʔϧίϛϡχςΟͷॏཁੑ্ 3VCZίϛϡχςΟʮ࣍ͷִͨΓʯͳΒ͵.BU[ͱࡾ࣍ͷִͨΓͰܨ͕Γͦ͏ ͱͳΔ 3VCZίϛϡχςΟ
࠾༻ͱ͍͏໊ͷ௨աӺ
w ࠾༻ޙϦϞʔτϫʔΫͷͨΊɺ࠾༻໘ ϦϞʔτͷίϛϡχέʔγϣϯͰߦ͍ͬͯΔ w ͦͷ໘ͷͷઌͷɺݱϝϯόʔͱͷࣄ Λݟӽͨ͠ࢹͰߦ͍ͬͯΔ ࠾༻ٕज़໘
w γϣʔτΞϯαʔͱͯͦ͠͏Ͱͳ͍ w ͪΖΜΛղ͚Δʹӽͨ͜͠ͱͳ͍ ͕ɺΛ௨ͯ͠ίϛϡχέʔγϣϯ໘ͷ ؍Λॏࢹ͍ͯ͠Δ w ٕज़తͳ෦ॏཁ͕ͩɺ͍·͍Δಉ྅ͨͪ ͱ͍͚ͬͯͦ͏͔͕ͬͱॏཁ ͕ղ͚ͳ͚Ε/(
🧐
ٕज़໘Ͱ $PQJMPU0,
w γϣʔτΞϯαʔͱͯ͠ͳ͍ w ͳͥͳΒίʔυิ͢Δͷ/(Ͱͳ͍ͷ ͱಉ͡Ͱɺ༏लͳίʔυิͱࢥ͑ྑ͍ w Ή͠Ζ৽͍࣌͠ͷΤϯδχΞͷൃྗͰ"* ΛͲ͜·Ͱ׆༻Ͱ͖Δ͔ڵຯ͕͋Δ ৽͍࣌͠ͷߟ͑ํʹ͋ΘͤΔ ·ͣࣗͷதʹߟ͑Λݟ͚ͭΔ͕࢟͋Δ͔ɻ"*ͦ͜ͷরձͱݟ͍ͯΔɻ
w ࣗ͋Δ͍"*Ͱॻ͍͍ͯΔίʔυʹର͠ ͯɺΤϥʔ͕ى͖ͨ࣌ͷσόοά w ϝιουมͷΑΓྑ໊͍લ͚ w ͔Βͳ͍͜ͱΛݴޠԽͯ͑͠ΒΕΔٕज़ w ʹର͢Δཁ݅ͷ࿙Εͷࢦఠ େࣄͳͷ"*͔Βઌͷ͜ͱ
ࣗΒͷٕज़ʹؔ৺Λ࣋ͭ͜ͱ ͋ͳͨͷࣄʹ͍ͭͯߟ͑Δ͜ͱʂ ܅ֶͿ͜ͱ͕৺͔Β͖ͩ ܅ιϑτΣΞͷ͜ͱΛେʹࢥ͍ͬͯΔ ΞδϟΠϧαϜϥΠ +POBUIBO3BTNVTTPO ୡਓϓϩάϥϚʔ %BWJE5IPNBT "OESFX)VOU ιϑτΣΞ։ൃ͖Ͱ͔͢ʁ
ҭڥͮ͘Γ
KPLFSUBHPNPSJTϨϕϧͷ ੌΛ࠾༻͢Δͷ͍͕͠ɺ࣍Λ ୲͏ੌʹ͍͚ͯ͠ΔڥΛ͑Δ ྗͰ͖Δͣ
εΩϧʹ͚͍͚ͭͯྑ͍ ֶΜͰ͍࢟͘ਓؒੑ͕େࣄ ͍·͋ΔεΩϧΑΓ࢟ !DPMPSCPYTBZT
w ͻͱΓͻͱΓʹ͔͍߹ͬͨใ͕େࣄ w ຊਓͷݴ༿Λಘ͍ͯͳ͍૾߹ͷྑ͍ ظ͕ڧ͘ɺͦΕԟʑʹͯ͠ϋζϨ͏Δ ϨϕϧΞοϓ͢ΔͷΤϯδχΞຊਓ
w ΤϯδχΞجૅٕज़शಘࢧԉ w ϝϯλʔ੍ w ࣾಡॻձɺษڧձɺݚڀ෦ w ϦϞʔτϫʔΫ։ൃඋิॿ w ใจԽ
ࣄۀͰߦ͑Δͷڥͮ͘Γ ͜ΕΒࢪࡦͷ͏ͪελʔλʔΩοτͬΆ͍ͷͰ͢
w ೖ͖ࣾͯͨ͠ϝϯόʔͷഎܠ·ͪ·ͪ w ৬ۀ͕ҧ͏͕લ৬Ͱ-JOVYͷݚम͕͋Δͳ ͲɺεΫʔϧҎલ͔ΒͷೃછΈͷ༗ແ w ใPOͳͲ͔Βۀߦʹෆͯ͠ ͍ΔͱࢥΘΕΔࣝεϙοτΛߟ͍͑ͯ͘ ΤϯδχΞجૅٕज़शಘࢧԉ વɺ͍ͬͯΔ͜ͱͱͰ͖Δ͜ͱҟͳΔ͕ɺΒͳ͍ࣝͰղܾͰ͖Δ
w ࢿ֨ࢼݧࣝͷମܥతशಘʹΑ͘Ͱ͖͍ͯΔ 3VCZೝఆٕज़ऀ ใٕज़ऀࢼݧ -JOV$ͳͲ w ࢿ֨औಘతͰͳ͘ɺۀߦʹඞཁͳ ࣝΛମܥతʹ֫ಘ͢Δͷ͕త w
ࢿ֨औಘ෭࡞༻͕ͩɺࢿ֨ࢼݧʹ߹࣮֨͠ ղআ͢Εخ͍͠ͷ͕ਓ ඪਓؒͷϞνϕʔγϣϯʹͳΔ
w ݱͷ֎͔ΒͩͱநతͳҰൠղͷఏҊ ҰൠղͷҬΛ͑ͮΒ͍ʁ w ॏཁͳͷ࣮։ൃݱʹ͓͚ΔίϯςΩετ ͰਓͷΛѲͰ͖ΔཱͪҐஔͷਓɻ ͦͷͨΊʹɺݱͷਓ͕ݟΔͷ͕ͬͱ ͕֬ߴ͍ ϝϯλʔಛघղͷѲ͕ॏཁ
ࢢπϦʔͰͳ͍ IUUQTXXXBNB[PODPKQEQ9
πϦʔߏ ηϛϥςΟεߏ ϝϯςΟʔʹԠͯ͡ɺଟ໘తʹݟΕΔΑ͏POମ੍ΛಈతʹऔΕΔΏͱΓॏཁ ϨϙʔτϥΠϯͷPOͷΈͩͱ ϥΠϯͷใ͕શͯʹͳͬͯ͠·͏ ඞཁͳϖΞͰͷPOͷػձΛ૿͠ ͲͷΑ͏ͳαϙʔτ͕Ͱ͖Δ͔ݕ౼Մ ҭPOϞσϧπϦʔͰͳ͍
w ަྲྀͷೱ୶Ͱ͍͏ͱɺಉ͡ϓϩδΣΫτͷϝ ϯόʔͱͷަྲྀ͕ѹతʹೱ͘ͳΓ͕ͪ ͦΕͦ͏ w ϓϩδΣΫτΛԣஅͨ͠ަྲྀػձ͋Δఔ ҙਤతʹ࡞Βͳ͍ͱɺಛʹ৽نࢀըͷ ϝϯόʔΛ࡞ΔϙΠϯτΛಘͮΒ͍
ࣾಡॻձɺษڧձɺݚڀ෦
None
w ͬͯΈ͍ͨࣄ༰ٕज़ͷࢦੑͳͲΛ ฉ͍ͯͲΜͳํʹϨϕϧΞοϓ͍͖ͯͨ͠ ͍͔Λ۷Γग़͍ͯ͘͠ w ͍·ͷϓϩδΣΫτΛΑΓྑ͘͢ΔΞϓϩʔ νɺϚον͢ΔผϓϩδΣΫτͷҾӽ͠ ͳͲɺθωϥϧϚωʔδϟʔͱϓϩδΣΫτ ϚοϓͰݕ౼͢Δ 8JUIPVU1SBDUJDF
/P&NFSHFODF मͤ͟ΕݱΘΕͣ
ใ ใൺֱతܗ͔Β࢝ΊΒΕΔ ;Γ͔͑Γ ேձɾ༦ձ $* ϦϑΝΫλϦϯά ϖΞϓϩάϥϛϯά Ϟϒϓϩάϥϛϯά ΠϯΫϦϝϯλϧͳઃܭ ϓϥϯχϯά
5%% ఆ࣌Πϕϯτͱͯ࢝͠ΊΒΕΔ PO ใʹ͍ͭͯৄ͘͠࡞ʰϕςϥϯͦ͜ใΛॻ͜͏ʱΛ͝ࢀর͍ͩ͘͞ ใ ٕೳͷशಘʹ͕࣌ؒඞཁ
ୈষ l࣌Λ͑ͨ ϓϩάϥϛϯάͷಓz IUUQXXXBNB[PODPKQEQ
l πʔϧٕ๏ԿมԽ͢Δ͕ɺ େ͖͘มԽ͢ΔΘ͚Ͱͳ͍ɻҰํɺ ਓΏͬ͘Γͱ͕ͩɺਂ͘มԽ͢Δɻ ,FOU#FDL
%BWF5IPNBTTBZT IUUQTXXXZPVUVCFDPNXBUDI W&$'(C+9Z* w 3VCZ,BJHJͰ ʮ৽͍͠ਓͨͪΛܴ ͑ೖΕΔࢧΛ͠Α ͏ʯͱএ͑Δ w ݱͦͷޙ
w ࢧͷ͋ͱ
l ϓϩάϥϛϯάεΫʔϧͰͷίϛϡχςΟब৬ઌͷ৫ίϛϡχςΟʹݴ͑ͦ͏ &4. *OD$&0ฏು݈ࣇ ͻͱΓͻͱΓͷਓͱͯ͠ͷؔ ϓϩδΣΫτظؒΑΓ͘ଓ͘