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
kawasaki rubykaigi slide
Search
rojiuratech
August 20, 2016
Programming
0
620
kawasaki rubykaigi slide
rojiuratech
August 20, 2016
Tweet
Share
More Decks by rojiuratech
See All by rojiuratech
rubykaigi-verup-20160828
rojiuratech
0
630
My Ruby Progress at kawasaki rubykaigi
rojiuratech
0
93
Other Decks in Programming
See All in Programming
たのしいparse.y
ydah
3
120
生成AIでGitHubソースコード取得して仕様書を作成
shukob
0
280
【re:Growth 2024】 Aurora DSQL をちゃんと話します!
maroon1st
0
770
モバイルアプリにおける自動テストの導入戦略
ostk0069
0
110
Cloudflare MCP ServerでClaude Desktop からWeb APIを構築
kutakutat
1
540
数十万行のプロジェクトを Scala 2から3に完全移行した
xuwei_k
0
260
Zoneless Testing
rainerhahnekamp
0
120
第5回日本眼科AI学会総会_AIコンテスト_3位解法
neilsaw
0
170
開発者とQAの越境で自動テストが増える開発プロセスを実現する
92thunder
1
180
プロダクトの品質に コミットする / Commit to Product Quality
pekepek
2
770
fs2-io を試してたらバグを見つけて直した話
chencmd
0
220
103 Early Hints
sugi_0000
1
220
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
53
5k
Six Lessons from altMBA
skipperchong
27
3.5k
KATA
mclloyd
29
14k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
247
1.3M
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
29
2k
Building Adaptive Systems
keathley
38
2.3k
Code Reviewing Like a Champion
maltzj
520
39k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
Done Done
chrislema
181
16k
A designer walks into a library…
pauljervisheath
204
24k
Automating Front-end Workflow
addyosmani
1366
200k
Transcript
͜ͷ1͘Β͍ͷRubyྗͷ৳ঢ়گ ʙΏ͕Έͳֶ͍ͷճؼʙ 4IJOJDIJ.*/04)*."
ࣗݾհ *5ɾ8FCܥͰͳ͍اۀͰ 8FCʢΛհͨ͠ʣαʔϏεͷ։ൃɾӡӦ ෦ॺ໊̐ɺ͏ͪΤϯδχΞ໊̍ʢࢲ͚ͩʂʣ ϑϧελοΫܕΤϯδχΞ ɾɾɾʹͳΒ͟ΔΛ͑ͳ͔ͬͨ
ࣄͰऔΓΜͰ͍Δ͜ͱ ೖͰ͖ΔϦιʔεগͳ͍͕ ͪʹେنɺଟػೳͳγεςϜ͕ඞཁͰͳ͍ ͲͪΒ͔ͱ͍͑ɺϏδωεϞσϧͷཱ͕֬ॏཁ w 8PSE1SFTTΧελϚΠζ w খنαΠτ։ൃ 1)1.Z42-+BWB4DSJQU
w 3VCZɾɾɾσʔλूܭͳͲ͕த৺
ൃද֓ཁ ̍ɿ͜ͷ̍͘Β͍ͷग़དྷࣄΛৼΓฦΔ ɹػձΛૂ͍ͭͭ3VCZʹೃછΜͰ͍͘ɻ ɹ2JJUBͷߘΛৼΓฦΔɻ ̎ɿΞτϓοτͷมԽʹ͢Δ 3VCZʹݶΒͣɺීวతͳϓϩάϥϛϯάֶʹ ɹճؼ͍ͯͬͨ͠ʁ
͜ͷ̍͘Β͍ͷग़དྷࣄ • ̏2ɹղੳɾஔʁʂͳΒ3VCZͩʂ • ̐2ɹϒʔτΩϟϯϓʹࢀՃɻεΩʔ߹॓Έ͍ͨͩɻ • ̍2ɹ͚ࣾΞϓϦέʔγϣϯͷ࡞ • ̎2ɹମܥతͳࣝͷඞཁੑΛ࠶ೝࣝɹ •
̏2ɹ1)1Ͱ3BJMTͬΆ͘ͳΔɹ
2JJUBɺϒϩάͷಈͱରൺ • ̏2ɹղੳɾஔʁʂͳΒ3VCZͩʂ ɹɹɹɹɹɹɹˠύʔεॲཧɺϧʔϓॲཧͷॻ͖ͳ͙Γ • ̐2ɹϒʔτΩϟϯϓʹࢀՃɻεΩʔ߹॓Έ͍ͨͩɻ ɹɹɹɹɹɹɹˠZBNMɺ3BJMTͷجຊಈ࡞ • ̍2ɹ͚ࣾΞϓϦέʔγϣϯͷ࡞ ɹɹɹɹɹɹɹˠ3BJMTΞϓϦͷ։ൃ
• ̎2ɹମܥతͳࣝͷඞཁੑΛ࠶ೝࣝ ɹɹɹɹɹɹɹˠԾڥ • ̏2ɹ1)1Ͱ3BJMTͬΆ͘ͳΔ ɹɹɹɹɹɹɹˠΤϯδχΞ
ղੳʁஔʁͳΒ3VCZͩʂ • εΫϨΠϐϯάɺஔॲཧ͕ඞཁʹͳͬͨɻ ɹʢͬ͟ͱ̐̌̌̌ϖʔδɺIUNMʣ • ۀࣗମͰ͖·ͨ͠ɻͻͲ͍ΓํͰ͕͢ɾɾɾɻ νϥγͷཪʹ͔͖ͳ͙ͬͨΑ͏ͳ ͻͲ͍ιʔεͷࢁ
̍લ͘Β͍ͷɺͻͲ͍ιʔε • ϑΝΠϧ໊औಘGJOEͱDBUͷΈ߹Θͤ • ্هग़ྗ݁ՌΛಡΈࠐΈɺग़ྗ͢ΔϑΝΠϧҰཡ࡞ • ೖग़ྗϦετʹԊͬͯɺஔͨ͠ͷΛు͖ग़͢ • ஔύλʔϯ͕ϋʔυίʔσΟϯά ͦΜͳϑΝΠϧ͕େྔʹస͕͍ͬͯͨ
࣌ɺ͕͖ۤ͠ΜͰ͍ͨ
ͻͲ͍2JJUBͷߘ • ೖॻʹॻ͍ͯ༗ΔΑ͏ͳॲཧͷ࣮ԋ • 4IFMM4DSJQUͰ؆୯ͳεΫϦϓτͷ࣮ߦ • (FNΛೖΕΑ͏ͱͯۤ͠ઓͨ͠ • ΤΫηϧγʔτͷσʔλಡΈࠐΈ ͳΜͰ͜Μͳͷॻ͍ͨʁʂͱ͍͏Α͏ͳ
͔ͣ͘͠ͳΔΑ͏ͳͷ͕ଟ
͜ΜͳͷΛॻ͍͍ͯͨ Γ͍ͨ͜ͱΘ͔Δ͕ɺ̎̌ੈلͷ $ݴޠͷڭՊॻΈ͍ͨͩɾɾɾ
ϋοΧιϯͰ3BJMT͔Γ • ࡢՆʹࢀՃͨ͠ϋοΧιϯͰɺࢀՃνʔϜͷ ɹɹ΄ͱΜͲ͕3VCZPO3BJMTΛ༻͍ͯͨ͠ɻ • 3P3 ɹˡ͜Μͳײ͡ʹͳΓ·ͨ͠ Ұൠڭཆͳͷ͔ʁʂ
3BJMʹΔͨΊʹϒʔτΩϟϯϓʹ • &MJUFT$BNQʹࢀՃɻ̏ؒͿͬ௨͠ɻ • 3BJMTڥͷઃఆ͔ΒσϓϩΠ·ͰҰ௨Γͷಈ࡞Λɺ ɹҰؾʹମݧͨ͠ εΩʔ߹॓Έ͍ͨͳײͩͬͨ͡
εΩʔ߹॓ɹͦͷ͜͜Ζʁ • ࠷ॳͷҰาΛ౿Έग़͢ɻ͜Ε͚ͩͰݩͱΕͨɻ ɹɹʢಈ࡞ͷΈΛҰؾʹҿΈࠐΉʣ • ʢࢲʹͱͬͯʣɹڥτϥϒϧͷ΄͏͕ਂࠁͩͬͨ • Α͍3VCZϓϩάϥϜͷॻ͖ํɹ·ͨผͷɻ ɹɹʢ͕͢͞ʹɺͦ͜·ͰΓࠐΊͳ͍ʣ
ͪΐͬͱͨ͠ͷΛ࡞ ͚ࣾʹɺใݕࡧΞϓϦΛ࡞ɻ औҾઌใΛҬɺܖͳͲͰݕࡧ ͋͘͘͝͝Γ͖ͨΓͷγεςϜͰ͕͢
͜ͷΑ͏ͳཁ͕ w ਓʹΑͬͯฤूݖݶ͕ҟͳΔɹ w ֎෦͔ΒσʔλΛΠϯϙʔτ͍ͨ͠ w ݕࡧ݁Ռ͕ଟ͘ͳΔͷͰɺϖʔδΘ͚͍ͨ͠ w ࢢ۠ொଜͳͲͷ͍۠ͬͺ͍ w
࠷ॳͷσʔλૠೖɺΤϯδχΞʹͤΔʁʂ ڊਓͷݞʹΖ͏ʂʂʂ
ڊਓͷݞɹ3VCZ(FNTͷ༻ (FNͰେํ࣮ݱՄೳ ࠷ޙͷ̍ɺ̎าͷ࡞ۀʹઐ೦ ࣮ݱ͍ͨ͠ػೳ ༻ͨ͠Gem ଳ࡞ۀ Ϣʔβཧ 1VOEJU ϩάΠϯɾݖݶͷ ఆॲཧ
දͷΠϯϙʔτ 3PP 4QSFBETIFFU ಡΈࠐΈ༰ͷ ఆɺܗॲཧ ϖʔδϯά LBNJOBSJ ϖʔδ͋ͨΓ ද੍ࣔޚ ݻఆ߲ BDUJWF@IBTI σʔλͷछྨ %#ܗࣜͷઃܭ Πϯϙʔτ TFFE@GV σʔλͷ४උ
͜ͷ࣌ۤ࿑ͨ͜͠ͱ w ҰׅΠϯϙʔτͷมॲཧ w K2VFSZͷڍಈ 5VSCPMJOLTͰෆ۩߹ʣ ˠ࣌ͷ2JJUBʹଟ w ʮ͍ํʯͷʢγεςϜҎ্ʹॏཁʣ ˠձࣾͷಛੑ্ඇৗʹॏཁ
σβΠϯύλʔϯେࣄ • ػೳΛ૿͍ͯͬͯ͠ɺ߹ੑ͕ͱΕΔγεςϜઃܭ • ಡΈ͘͢ॻ͖͘͢ɺվम͍͢͠ιʔείʔυ • ͜ΕΒΛ࡞Δʹɺਖ਼͍͠ܕΛʹ͚ͭΔඞཁ͕͋Δ ͲΜͳݴޠɺڥʹ͓͍ͯ ॏཁͳ͜ͱͰʁ
ޙճ͠ʹͳΓ͍͢ཧ༝Λߟ • ֶߍͰڭ͖͑Εͳ͍ ɹʢϓϩάϥϜʹΞϨϧΪʔΛىֶ͜͢ੜগͳ͘ແ͍ʣ ɹʢ͋͘·Ͱखஈɻ෭࣍తͳͷͰ͋Δέʔεଟ͍ʣ • ձࣾͰڭ͍͑ͯΔՋ͕ແ͍ʁ ɹʢೳಈతʹษڧ͠ͳ͍ͱʹ͖ͭʹ͍͘ʣ • ͦͷ͚ͩͳΒɺؒʹ߹ͬͯ͠·͏͜ͱ͕ଟ͍
ɹʢ͜Ε͕࠷େͷཧ༝͔ʣ
1)1Λͬͯ3BJMTͬΆ͘ͳΔ • ݱࡏɺੜPHPʴCybozu KintoneͰWebαʔϏεΛ࡞த ɹʢۀϑϩʔɺॾ݅Λߟྀ͜͠ͷߏΛར༻ʣ • .PEFMɺ7JFXɺ$POUSPMMFSͷιʔεΛ͚Δ • .PEFMʹґଘ͠ͳ͍ػೳNPEVMFԽɻ •
63-ͳͲͷઃఆใDPOGJHϑΝΠϧʹ 3BJMTͬΆ͘ͳΔʢۮવͩͧʣ
,JOUPOF"1*ͱͷଓ͕େม • $36%ॲཧʹ૬͢Δ෦"1*Λར༻ɻ ɹʢ3VCZ 1)1 1ZUIPOͳͲͷ4%,͋Γʣ • 8FCαΠτ෦Λൈ͖ग़͢ͱɺ,JOUPOFΛ ɹ%#ͷΑ͏ʹѻ͍ͬͯ·͢ɻ •
͔͠͠ɺૹड৴͢ΔσʔλΛՃ͢Δ ɹ෦͕େมɻʢ͜͜Ͱۤ࿑ʣ ࠓճɺ4%,ʹ૬͢Δࣗ࡞͠·ͨ͠ɻ
όονॲཧͳͲ3VCZΛར༻༧ఆ • 3VCZ൛4%,ʢHFNʣ͍ͦ͢͏ɻ ɹɹυΩϡϝϯτ͕ॆ࣮͍ͯ͠Δ • ߦͷεΫϦϓτͰ$36%ॲཧ͕Մೳ ɹΫΤϦੜײతʹͰ͖Δɻ QFSMͷΑ͏ͳͷͱͯ͠ར༻ • ,JOUPOF"1*Λඪ४ೖྗPS4IFMM4DSJQU͔Β
ɹར༻͢Δ͜ͱ͍͠ɻ
"DUJWF3FDPSEͬΆ͑͘Δ SFRVJSFbLJOUPOF` BQJ,JOUPOF"QJOFX lFYBNQMFDZCP[VDPN lBVUIUPLFOz ΞϓϦʹର͠"1*ଓΛੜ ΞϓϦ൪߸*%ͷϨίʔυΛऔಘͱԾఆ BQJSFDPSEHFU
Ϩίʔυ൪߸Ͱऔಘ ΞϓϦ൪߸ʹର͠σʔλΛ༩͑Δ SFDPSE\lOBNFz\lWBMVFzl,BXBTBLJ3VCZLBJHJz^^ BQJSFDPSESFHJTUFS Ϩίʔυͷ৽نՃ
ΞτϓοτͷมԽ RubyʹݶͬͨͷͰͳ͍Ͱ͕͢ɾɾɾ • ۃྗϞδϡʔϧԽ࣮ͯ͢͠Δɻ • ΫϥεͷܧঝΑΓҠৡΛ͏ɻ • ઃఆͱϩδοΫ͚Δɻ ޠΓܧ͕Ε͖ͯͨ ϓϩάϥϚֶʹḷΓͭ͘
ۃྗϞδϡʔϧԽ͢Δ ྫ͑ɺରϦετͷςΩετϑΝΠϧʹର͠ ஔॲཧΛߦ͏Α͏ͳ߹ɾɾɾɻ w ରͱ͢ΔϑΝΠϧϦετΛऔಘ͢Δػೳ w ରϑΝΠϧͷ༗ແΛఆɺ̍݅ͣͭಡΈࠐΉػೳ w ஔ߲ͱর߹͠ɺஔ͖͑ॲཧΛߦ͏ػೳ w
ஔͨ͠ͷΛॻ͖ग़͢ػೳ ͱ͍ͬͨΑ͏ʹɺղͰ͖Δɻ
هड़ͷश׳ʹมԽ͕ग़͖ͯͨ ྫ͑ɺϧʔϓͷதͰෳͷॲཧΛߦ͏ͱ͖ GPSFBDI ඞཁͳͷಡΈࠐΈʣ ஔॲཧଞଟ ॻ͖ग़͠ॲཧʣ
FOE ɾɾɾɾ ॲཧͷ֓ཁ͕̍ը໘ʹऩ·Δʢॏཁʣˍ গͳ͍ίʔυͰଟ͘ͷͷ͕࣮ݱͰ͖ΔΑ͏ʹͳΔ ैདྷͷ߹ ̍̌̌ߦҎ্ͷϝιουβϥ ݱࡏͷ߹ GPSFBDI ػೳผΦϒδΣΫτʣ FOE ಡΈࠐΈʣ ஔ͖͑ʣ ʢॻ͖ग़͠ʣ ̍ϝιου͋ͨΓ ̏̌ʙ̒̌ߦఔ
ܧঝͱҠৡͷҧ͍ ܧঝʹΫϥεͷػೳΛҾ͖ܧ͙ ҠৡʹଞͷΫϥεͷػೳΛݺͼग़͢ w 8FCΞϓϦέʔγϣϯ։ൃͰ ɹܧঝΑΓҠৡ͕దͳ͜ͱ͕ଟ͍ɻ
ܧঝΑΓҠৡʁ ܧঝʹΫϥεͷػೳΛҾ͖ܧ͙ ʢԼͷΑ͏ͳπϦʔߏʣ εϥΠϜ ਫణܕ ӷঢ়ܕ ͘Β͛ܕ ϗΠϛεϥΠϜ ϕϗϚεϥΠϜ ͠ͼΕ͘Β͛ʁ
Ϋϥεͱͷؔ࿈ʹໃ६͕ʁʂ
ࣅ͍ͯΔΑ͏ͰҟͳΔಛੑ ϗΠϛεϥΠϜ ɾճ෮ߦಈ ɹɾϗΠϛ ɾυϩοϓ ɹɾߴ֬ w ͠ͼΕ͘Β͛ճ෮ߦಈΛߦΘͳ͍ ɹˠແ༻ػೳʹͳΔ ϕϗϚεϥΠϜ
ɾճ෮ߦಈ ɹɾϕϗϚ ɾυϩοϓ ɹɾத֬ ͠ͼΕ͘Β͛ ɾՃ߈ܸ ɹɾຑᙺ ɾυϩοϓ ɹɾ֬ ͘Β͛ܕεϥΠϜશ෦ճ෮Ωϟϥͱࢥͬͨʁ
ܧঝΑΓҠৡʁ ҠৡʹଞͷΫϥεͷػೳΛݺͼग़͢ ʢԼਤͷΑ͏ͳؔ࿈ੑʹͳΔʣ Ϣʔβʔ ΞΠςϜ Φʔμʔ "1*ଓ Πϯϙʔτ ΤϦΞ Ϟσϧͱ֦ுػೳҰରπϦʔͰͳ͍
Ϟσϧͱ֦ுػೳͷ୲ྫ ֤Ϟσϧ ɾΞΫγϣϯผॲཧ ɾೖग़ྗϑΟϧλʔ ɾ$36%ॲཧ ໘ʹΑͬͯɺΫΤϦͷ༰͕ҟͳΔ͕ ଓॲཧͷϑϩʔมΘΒͳ͍ "1*ଓɺϓϩηε΄΅͓ͳ͡ ֦ுػೳʢ"1*ଓʣ ɾΫΤϦͷ༻ҙ
ɾૹ৴ɺ݁Ռऔಘ ɾσʔλड͚͠
ઃఆͱϩδοΫΛ͚Δ લ৬ͰϋʔυίʔσΟϯάېࢭͳϓϩδΣΫτ͕͋Γ ʢσʔλղੳ࡞ۀͷ୯७ͳεΫϦϓτͰʂʂʣ ઃఆɹɹɹɿɹঢ়گʹԠͯ͡มߋൃੜ ɹɹɹɹɹɹɹʢස·ͪ·ͪʣ ϩδοΫɹɿɹঢ়گʹΑΔมߋ͕গͳ͍ ઃఆʹؔͯ͠ɺมߋසʹԠͯ͡ ιʔεϑΝΠϧΛׂ͢ΔͳͲͷ͕ඞཁ
ͦͷಓͷΓʹͻͲ͍ίʔυ͕ • ඇৗʹ͍ϝιου • ઃఆྨͷϋʔυίʔσΟϯά • 'BUͳίϯτϩʔϥʔɹ 3P3 ͜ΕΒΛஏ͔͍ͣ͠ͱ͓ͬͨ ͔ͩΒͦ͜ࠓ͕͋Δ
̍લͷॲཧΛ࣮ࢪͨ͠Β ྫ͑ɺରϦετͷςΩετϑΝΠϧʹର͠ ஔॲཧΛߦ͏Α͏ͳ߹ɾɾɾɻ ैདྷɿ̏ʙ̐ͷιʔεϑΝΠϧʹ͔Εɺ ɹɹɹԆ̑̌ʙ̒̌εςοϓҎ্ ݱࡏɿҰཡऔಘؚΊɺ̎̌εςοϓఔ ͠ͳ͘ͱྑ͔ͬͨॲཧ͕ݮͬͨ͜ͱ͕ओཁҼ
ࢀߟจݙɾϖʔδͳͲ ɾٕज़ධࣾɹύʔϑΣΫτ3VCZ ୈ̏ষ͋ͨΓʣ ɹʢΦϒδΣΫτࢤΛٵऩͰ͖ͨʣ ɾΦϥΠϦʔɾδϟύϯɹ࣮ફ7BHSBOU17BHSBOUಓ ɹʢඞཁʹԠͨ͡ڥมߋ͕Ͱ͖Δʣ ɾ3VCZʹΑΔσβΠϯύλʔϯ̑ݪଇ ɹIUUQRJJUBDPNLJEBDIJUFNTCEFBEBDD ɹʢ೦ͳ͕Βग़యݩઈ൛ʹͳͬͯ·͢ʣ ɹ