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
670
kawasaki rubykaigi slide
rojiuratech
August 20, 2016
Tweet
Share
More Decks by rojiuratech
See All by rojiuratech
rubykaigi-verup-20160828
rojiuratech
0
660
My Ruby Progress at kawasaki rubykaigi
rojiuratech
0
110
Other Decks in Programming
See All in Programming
Ruby Parser progress report 2025
yui_knk
1
440
Vue・React マルチプロダクト開発を支える Vite
andpad
0
110
Navigation 2 を 3 に移行する(予定)ためにやったこと
yokomii
0
270
意外と簡単!?フロントエンドでパスキー認証を実現する WebAuthn
teamlab
PRO
2
760
GitHubとGitLabとAWS CodePipelineでCI/CDを組み比べてみた
satoshi256kbyte
4
240
Kiroで始めるAI-DLC
kaonash
2
590
パッケージ設計の黒魔術/Kyoto.go#63
lufia
3
440
AI Coding Agentのセキュリティリスク:PRの自己承認とメルカリの対策
s3h
0
230
Swift Updates - Learn Languages 2025
koher
2
480
旅行プランAIエージェント開発の裏側
ippo012
2
910
go test -json そして testing.T.Attr / Kyoto.go #63
utgwkk
3
310
私の後悔をAWS DMSで解決した話
hiramax
4
210
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Git: the NoSQL Database
bkeepers
PRO
431
66k
How to Ace a Technical Interview
jacobian
279
23k
Practical Orchestrator
shlominoach
190
11k
Optimizing for Happiness
mojombo
379
70k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Art, The Web, and Tiny UX
lynnandtonic
303
21k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Rebuilding a faster, lazier Slack
samanthasiow
83
9.2k
The Invisible Side of Design
smashingmag
301
51k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
GitHub's CSS Performance
jonrohan
1032
460k
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 ɹʢ೦ͳ͕Βग़యݩઈ൛ʹͳͬͯ·͢ʣ ɹ