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
Carving the Way to Ruby Engineering
Search
Koichi ITO
December 05, 2024
Education
3
850
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
RuboCop: Modularity and AST Insights
koic
2
1.4k
Beyond the RuboCop Defaults
koic
3
3.9k
Minify Ruby Code
koic
2
2.3k
Permanent Agility
koic
37
8.8k
RuboCop: LSP and Prism
koic
3
4.8k
Organizational Pattern Hatching
koic
0
1.5k
A Practitioner's Journey from Ruby 1.8 to Present
koic
1
2.1k
A Story Featuring Right Hand Archetype
koic
0
1.1k
Without Practice, No Emergence
koic
4
2.5k
Other Decks in Education
See All in Education
ハワイアン航空 ステータスへの道 #HAairstudy
maroon1st
0
140
Why Did Douglass Change His Mind?
oripsolob
0
480
Web からのデータ収集と探究事例の紹介 / no94_jsai_seminar
upura
0
220
Tips for the Presentation - Lecture 2 - Advanced Topics in Big Data (4023256FNR)
signer
PRO
0
250
OCIでインスタンス構築してみた所感
masakiokuda
0
190
保育士チームが実践している連続的な観察と多面的な観察を共有するための振り返り / Reflection to share “continuous and multifaceted observations” as practiced by a team of childcare professionals
psj59129
0
3.9k
OpenRobomaster 中国のロボットコンテスト 日本連携の可能性
takasumasakazu
0
380
Data Representation - Lecture 3 - Information Visualisation (4019538FNR)
signer
PRO
1
2.3k
(元)教育担当がお伝えする、若手社員が成長しまくるOJTポイント
masakiokuda
0
270
HCL Domino 14.5 EAP2 Domino IQ について
harunakano
0
110
i-GIP 2025 中高生のみなさんへ資料
202200
0
160
いにしえの国産データベース~桐~って知っていますか?
masakiokuda
2
140
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
251
12k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
19
1.1k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
13
1.4k
Building Flexible Design Systems
yeseniaperezcruz
329
38k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
How to train your dragon (web standard)
notwaldorf
90
6k
Statistics for Hackers
jakevdp
798
220k
KATA
mclloyd
29
14k
Writing Fast Ruby
sferik
628
61k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.3k
Building Adaptive Systems
keathley
41
2.5k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
47
2.7k
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ฏು݈ࣇ ͻͱΓͻͱΓͷਓͱͯ͠ͷؔ ϓϩδΣΫτظؒΑΓ͘ଓ͘