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
rubykaigi-verup-20160828
Search
rojiuratech
August 28, 2016
Programming
0
660
rubykaigi-verup-20160828
rojiuratech
August 28, 2016
Tweet
Share
More Decks by rojiuratech
See All by rojiuratech
kawasaki rubykaigi slide
rojiuratech
0
670
My Ruby Progress at kawasaki rubykaigi
rojiuratech
0
110
Other Decks in Programming
See All in Programming
Reading Rails 1.0 Source Code
okuramasafumi
0
230
FindyにおけるTakumi活用と脆弱性管理のこれから
rvirus0817
0
510
請來的 AI Agent 同事們在寫程式時,怎麼用 pytest 去除各種幻想與盲點
keitheis
0
120
はじめてのMaterial3 Expressive
ym223
2
740
Processing Gem ベースの、2D レトロゲームエンジンの開発
tokujiros
2
130
詳解!defer panic recover のしくみ / Understanding defer, panic, and recover
convto
0
240
AIと私たちの学習の変化を考える - Claude Codeの学習モードを例に
azukiazusa1
10
4.2k
rage against annotate_predecessor
junk0612
0
170
速いWebフレームワークを作る
yusukebe
5
1.7k
Kiroで始めるAI-DLC
kaonash
2
590
Oracle Database Technology Night 92 Database Connection control FAN-AC
oracle4engineer
PRO
1
450
奥深くて厄介な「改行」と仲良くなる20分
oguemon
1
540
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Code Review Best Practice
trishagee
70
19k
Designing Experiences People Love
moore
142
24k
Facilitating Awesome Meetings
lara
55
6.5k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Git: the NoSQL Database
bkeepers
PRO
431
66k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
188
55k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Scaling GitHub
holman
463
140k
Become a Pro
speakerdeck
PRO
29
5.5k
Transcript
͜ͷ1͘Β͍ͷRubyྗͷ৳ঢ়گ ʙΏ͕Έͳֶ͍ͷճؼʙ 4IJOJDIJ.*/04)*." ˏSPKJVSBUFDI
ࣗݾհ ໊લɹɹɹɹɹɹɿɹຸౡɹ৻Ұ ͓ࣄɹɹɹɹɹɿɹϔϧεέΞۀք ɹɹɹɹɹɹɹɹɹɹࣗࣾ8FCαΠτ։ൃɾӡӦ LBXBTBLJSCɹɿɹࠒ͔Β සग़ݴޠڥɹɹɿɹ1)1.Z42-+BWB4DSJQUɾɾɾ ͖ͳݴޠڥɹɿɹ3VCZɹ7BHSBOU ɹ ෦ॺ໊̐ɺ͏ͪΤϯδχΞ໊̍ʢࢲ͚ͩʂʣ ϑϧελοΫܕΤϯδχΞ
ɾɾɾͷΑ͏ͳͷʹͳΔɻ
ൃද֓ཁ ̍ɿ͜ͷ̍͘Β͍ͷग़དྷࣄΛৼΓฦΔ ɹػձΛૂ͍ͭͭ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ͷΈ߹Θͤ • ্هग़ྗ݁ՌΛಡΈࠐΈɺग़ྗ͢ΔϑΝΠϧҰཡ࡞ • ೖग़ྗϦετʹԊͬͯɺஔͨ͠ͷΛు͖ग़͢ • ஔύλʔϯ͕ϋʔυίʔσΟϯά ࣌ΛৼΓฦΔͱɾɾɾ
ͦΜͳιʔείʔυΛେྔʹస͕͍ͬͯͨ
̎̌̍̑̏2͜Ζͷɺ2JJUBͷߘ • ೖॻʹॻ͍ͯ༗ΔΑ͏ͳॲཧͷ࣮ԋ • 4IFMM4DSJQUͰ؆୯ͳεΫϦϓτͷ࣮ߦ • (FNΛೖΕΑ͏ͱͯۤ͠ઓͨ͠ • ΤΫηϧγʔτͷσʔλಡΈࠐΈ ͳΜͰ͜Μͳͷॻ͍ͨʁʂͱ͍͏Α͏ͳ
͔ͣ͘͠ͳΔΑ͏ͳͷ͕ଟ
͜ΜͳͷΛॻ͍͍ͯͨ Γ͍ͨ͜ͱΘ͔Δ͕ɺ̎̌ੈلͷ $ݴޠͷڭՊॻΈ͍ͨͩɾɾɾ
͡ΊͯͷϋοΧιϯʹͯ • ࢀՃνʔϜͷ΄ͱΜͲ͕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 ʮ͍ํʯͷʢγεςϜҎ্ʹॏཁʣ ˠձࣾͷಛੑ্ඇৗʹॏཁ
σβΠϯύλʔϯେࣄ • ػೳΛ૿͍ͯͬͯ͠ɺ߹ੑ͕ͱΕΔγεςϜઃܭ • ಡΈ͘͢ॻ͖͘͢ɺվम͍͢͠ιʔείʔυ • ͜ΕΒΛ࡞Δʹɺਖ਼͍͠ܕΛʹ͚ͭΔඞཁ͕͋Δ ͲΜͳݴޠɺڥʹ͓͍ͯ ॏཁͳ͜ͱͰʁ
ޙճ͠ʹͳΓ͍͢ཧ༝Λߟ • ֶߍͰڭ͖͑Εͳ͍ ɹʢϓϩάϥϜʹΞϨϧΪʔΛىֶ͜͢ੜগͳ͘ແ͍ʣ ɹʢ͋͘·Ͱखஈɻ෭࣍తͳͷͰ͋Δέʔεଟ͍ʣ • ձࣾͰڭ͍͑ͯΔՋ͕ແ͍ʁ ɹʢೳಈతʹษڧ͠ͳ͍ͱʹ͖ͭʹ͍͘ʣ • ͦͷ͚ͩͳΒɺؒʹ߹ͬͯ͠·͏͜ͱ͕ଟ͍
ɹʢ͜Ε͕࠷େͷཧ༝͔ʣ
3P3Λಋೖ͢Δ্Ͱͷ՝ ։ൃνʔϜશମͰɹ RoRͷదԠίετɹʼɹੜPHPར༻ίετ w ԿΛฤू͢ΕΑ͍͔Θ͔Βͳ͍ ɹˠॳݟࡴ͕ͩ͠ɺ͔֬ʹށ͏ɻ w 1)1ͳΒɺσβΠφʔ͕͍ͬͯΔπʔϧʹରԠͯ͠Δ ɹˠ)5.-ίʔσΟϯάͳͲΛߟ͑Δͱɾɾɾ ެ։WebαΠτʹؔͯ͠ɺੜPHPΛ༻
1)1Λͬͯ3BJMTͬΆ͘ͳΔ σβΠφʔ͕৮Εͳ͍෦ʹؔͯ͠ɺ MVCϑϨʔϜϫʔΫͬΆ࣮͘ • .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 ಡΈࠐΈʣ ஔ͖͑ʣ ʢॻ͖ग़͠ʣ ̍ϝιου͋ͨΓ ̏̌ʙ̒̌ߦఔ
ܧঝͱҠৡͷҧ͍ ܧঝʹΫϥεͷػೳΛҾ͖ܧ͙ ҠৡʹଞͷΫϥεͷػೳΛݺͼग़͢ 8FCΞϓϦέʔγϣϯΛઃܭ͍ͯ͠Δͱɺ ܧঝΑΓҠৡ͕దͳ͜ͱ͕ଟ͍ͱײͨ͡ɻ
ܧঝΑΓҠৡʁ ܧঝʹΫϥεͷػೳΛҾ͖ܧ͙ ʢԼͷΑ͏ͳπϦʔߏʣ εϥΠϜ ਫణܕ ӷঢ়ܕ ͘Β͛ܕ ϗΠϛεϥΠϜ ϕϗϚεϥΠϜ ͠ͼΕ͘Β͛ʁ
Ϋϥεͱͷؔ࿈ʹໃ६͕ʁʂ
ࣅ͍ͯΔΑ͏ͰҟͳΔಛੑ ϗΠϛεϥΠϜ ɾճ෮ߦಈ ɹɾϗΠϛ ɾυϩοϓ ɹɾߴ֬ w ͠ͼΕ͘Β͛ճ෮ߦಈΛߦΘͳ͍ ɹˠແ༻ػೳʹͳΔ ϕϗϚεϥΠϜ
ɾճ෮ߦಈ ɹɾϕϗϚ ɾυϩοϓ ɹɾத֬ ͠ͼΕ͘Β͛ ɾՃ߈ܸ ɹɾຑᙺ ɾυϩοϓ ɹɾ֬ ͘Β͛ܕεϥΠϜશ෦ճ෮Ωϟϥͱࢥͬͨʁ
ܧঝΑΓҠৡʁ ҠৡʹଞͷΫϥεͷػೳΛݺͼग़͢ ʢԼਤͷΑ͏ͳؔ࿈ੑʹͳΔʣ Ϣʔβʔ ΞΠςϜ Φʔμʔ "1*ଓ Πϯϙʔτ ΤϦΞ Ϟσϧͱ֦ுػೳҰରπϦʔͰͳ͍
Ϟσϧͱ֦ுػೳͷ୲ྫ ֤Ϟσϧ ɾΞΫγϣϯผॲཧ ɾೖग़ྗϑΟϧλʔ ɾ$36%ॲཧ ໘ʹΑͬͯɺΫΤϦͷ༰͕ҟͳΔ͕ ଓॲཧͷϑϩʔมΘΒͳ͍ "1*ଓɺϓϩηε΄΅͓ͳ͡ ֦ுػೳʢ"1*ଓʣ ɾΫΤϦͷ༻ҙ
ɾૹ৴ɺ݁Ռऔಘ ɾσʔλड͚͠
ઃఆͱϩδοΫΛ͚Δ લ৬ͰϋʔυίʔσΟϯάېࢭͳϓϩδΣΫτ͕͋Γ ʢσʔλղੳ࡞ۀͷ୯७ͳεΫϦϓτͰʂʂʣ ઃఆɹɹɹɿɹঢ়گʹԠͯ͡มߋൃੜ ɹɹɹɹɹɹɹʢස·ͪ·ͪʣ ϩδοΫɹɿɹঢ়گʹΑΔมߋ͕গͳ͍ ઃఆʹؔͯ͠ɺมߋසʹԠͯ͡ ιʔεϑΝΠϧΛׂ͢ΔͳͲͷ͕ඞཁ
ͦͷಓͷΓʹͻͲ͍ίʔυ͕ • ඇৗʹ͍ϝιου • ઃఆྨͷϋʔυίʔσΟϯά • 'BUͳίϯτϩʔϥʔɹ 3P3 ͜ΕΒΛஏ͔͍ͣ͠ͱ͓ͬͨ ͔ͩΒͦ͜ࠓ͕͋Δ
̍લͷॲཧΛ࣮ࢪͨ͠Β ྫ͑ɺରϦετͷςΩετϑΝΠϧʹର͠ ஔॲཧΛߦ͏Α͏ͳ߹ɾɾɾɻ ैདྷɿ̏ʙ̐ͷιʔεϑΝΠϧʹ͔Εɺ ɹɹɹԆ̑̌ʙ̒̌εςοϓҎ্ ݱࡏɿҰཡऔಘؚΊɺ̎̌εςοϓఔ ͠ͳ͘ͱྑ͔ͬͨॲཧ͕ݮͬͨ͜ͱ͕ओཁҼ
ࢀߟจݙɾϖʔδͳͲ ɾٕज़ධࣾɹύʔϑΣΫτ3VCZ ୈ̏ষ͋ͨΓʣ ɹʢΦϒδΣΫτࢤΛٵऩͰ͖ͨʣ ɾΦϥΠϦʔɾδϟύϯɹ࣮ફ7BHSBOU17BHSBOUಓ ɹʢඞཁʹԠͨ͡ڥมߋ͕Ͱ͖Δʣ ɾ3VCZʹΑΔσβΠϯύλʔϯ̑ݪଇ ɹIUUQRJJUBDPNLJEBDIJUFNTCEFBEBDD ɹʢ೦ͳ͕Βग़యݩઈ൛ʹͳͬͯ·͢ʣ ɹ