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
全体がいい感じになるために、私たちRailsをホームにするWeb技術者ができること/let-o...
Search
MOROHASHI Kyosuke
March 23, 2019
Programming
2
1.9k
全体がいい感じになるために、私たちRailsをホームにするWeb技術者ができること/let-our-whole-system-grow
RailsDM 2019 での発表資料です
MOROHASHI Kyosuke
March 23, 2019
Tweet
Share
More Decks by MOROHASHI Kyosuke
See All by MOROHASHI Kyosuke
Identifying User Idenity
moro
9
16k
Simplicity on Rails -- RDB, REST and Ruby
moro
15
18k
ちょうどよい Rails E2E テスト/enough-good-rails-e2e-test
moro
5
2.4k
フレームワークを作らない方法/How NOT to build frameworks
moro
4
1.1k
フォームオブジェクトとの向き合い方/Grow Form Objects up
moro
1
2k
チームによるいきいきとしたソフトウェア開発/an-alive-team-grows-software
moro
3
3.4k
Web-E2E-Testing-from-Ruby
moro
5
550
Joyful user foundation restructuring with Ruby
moro
9
19k
cookpad-17day-tech-internship-2017-git
moro
0
9.5k
Other Decks in Programming
See All in Programming
DataStoreをテストする
mkeeda
0
290
AI Agents with JavaScript
slobodan
0
230
サービスクラスのありがたみを発見したときの思い出 #phpcon_odawara
77web
4
640
Building Scalable Mobile Projects: Fast Builds, High Reusability and Clear Ownership
cyrilmottier
2
280
gen_statem - OTP's Unsung Hero
whatyouhide
1
200
SQL Server ベクトル検索
odashinsuke
0
180
Unlock the Potential of Swift Code Generation
rockname
0
250
5年間継続して開発した自作OSSの記録
bebeji_nappa
0
200
Amazon CloudWatchの地味だけど強力な機能紹介!
itotsum
0
160
国漢文混用体からHolloまで
minhee
1
190
Kamal 2 – Get Out of the Cloud
aleksandrov
1
190
AI時代の開発者評価について
ayumuu
0
150
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.8k
Optimising Largest Contentful Paint
csswizardry
36
3.2k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
5
520
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
[RailsConf 2023] Rails as a piece of cake
palkan
54
5.4k
Producing Creativity
orderedlist
PRO
344
40k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Become a Pro
speakerdeck
PRO
27
5.3k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Code Review Best Practice
trishagee
67
18k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Docker and Python
trallard
44
3.3k
Transcript
શମ͕͍͍ײ͡ʹͳΔͨΊʹɺ ࢲͨͪ3BJMTΛϗʔϜʹ͢Δ 8FCٕज़ऀ͕Ͱ͖Δ͜ͱ 2019-03-23 Rails Developers Meetup 2019 ॾڮګհ
@moro
‣ ࣸਅ
Kyosuke MOROHASHI @moro
!5 SMS? What's SMSってなにをやってる会社なの?
https://twitter.com/sunaot/status/1002392476492038144
“ 情報インフラを構築することで、⾼齢社会を 取り巻く⼈びと、⾼齢社会で働く⽅や事業者の⽅、 ⾼齢者ご⾃⾝やそのご家族などがイキイキと ⽣活できる社会の実現を⽬指しています。 — https://www.bm-sms.co.jp/philosophy/
!8 &
吳䒭⠓爡ؒأ ٥ ؒي ٥ ؒأ 匌❨鿪庥⼒蓎Ⱅ㕦⡝♶⹛欵蓎Ⱅ㕦ةٙ٦ https://www.bm-sms.co.jp ؒٝآص،䱰欽؟؎ ز https://careers.bm-sms.co.jp/engineer/
join us!
શମ͕͍͍ײ͡ʹͳΔͨΊʹɺ ࢲͨͪ3BJMTΛϗʔϜʹ͢Δ 8FCٕज़ऀ͕Ͱ͖Δ͜ͱ
‣ 3BJMTੲͱࠓ ‣ ϢʔβʔʹՁΛಧ͚Δ͍ͬͯ͏͚Ͳ ‣ શମΛ͍͍ײ͡ʹ͢Δ ‣ ݁
3BJMTΛऔΓר͘ ੲͱࠓ
3BJMT ͳͲαʔόଆ8FCٕज़ ΛऔΓר͘ ੲͱࠓ
ٕज़τϐοΫͱͯ͠ͷ3BJMT ੲͱࠓ
‣ 3BJMT͕ग़࢝Ίͨɺ3BJMT8FCΞϓϦ ٕज़తτϐοΫͷ࠷ઌͷҰͭͩͬͨɻ ‣ 001 -JHIUXFJHIU-BOHVBHF ϑϧελοΫϑϨʔϜϫʔΫ ‣ "KBY 3&45
5%% ΞδϟΠϧ ษڧձ ҬίϛϡχςΟʔ ‣ ͍·ଓ͘ɺ͍ΖΜͳࢼΈ͕Ͱ͖ͯͨɻ ‣ ˞ͪΖΜʮ͕ͯ͢3BJMTͷ͓͔͛ʯͱ͍͏Θ͚Ͱͳ͍Α ࢲͷࢹͰ;Γ͔͑Δ ੲ
‣ ͷ࠷ઌͰͳͦ͞͏ɻ ‣ Ϟμϯ+4 .JDSPTFSWJDFT %FW0QT "* .- ʜ ‣
ʮ͋ͨΓ·͑ʯʹͳͬͨ ‣ ʮ࠷ઌʯʹ·ͨͳΔ͔͠Εͳ͍͠ɺ ͳΒͳ͍͔͠Εͳ͍ɻ ‣ ͨͩɺ·ͨ͠ͳͬͯલͱҧ͏ɻ ࠓ
‣ (PPEFOPVHIͱͯ͠ΘΕ͍ͯΔ ‣ ͢ͰʹͬͯΔͱ͜Ζͨ͘͞Μ͋Δ͠Ͷɻ ‣ ࠓͰ͍͍બࢶͩͱࢥ͏ ‣ ͪΖΜɺઈ໓ͯ͠΄͘͠ͳ͍ 3BJMTઈ໓͢Δ
‣ ୯Ұͷ3BJMTΞϓϦ͚ͩͰ݁͢Δ͜ͱ ͳ͘ͳ͖ͬͯͨɻ ͔ͱݴͬͯੲͱಉ͡Ͱͳ͍
‣ 3BJMTੲͱࠓ ‣ ࠷৽ͷٕज़Ͱͳ͘ͳ͖ͬͯͨ ‣ ϢʔβʔʹՁΛಧ͚Δ͍ͬͯ͏͚Ͳ ‣ શମΛ͍͍ײ͡ʹ͢Δ ‣
݁
3BJMTΞϓϦ ੲͱࠓ
‣ ୯Ұͷ8FCΞϓϦͰ΄΅݁͢Δɻ ‣ ಛఆͷαʔϏεɾۀɾϓϩμΫτ͕ؔ৺ͷର ‣ ֎෦࿈ܞಛผͳͱ͜Ζ͚ͩɻ ੲ3BJMT͕ग़࢝Ίͨࠒ
‣ 8FCͷαʔϏεͭͰ݁͢Δ͜ͱ ΄΅ͳ͍ɻ ‣ ʮαʔϏεͭʯͰɺଟ͘ͷཁૉٕज़͕ඞཁ ‣ ֎෦࿈ܞ͢Δͷ͕ৗɻ ࠓ
֎෦࿈ܞ͢Δͷ͕ৗ
֎෦࿈ܞ͢Δͷ͕ৗ
‣ ཁૉٕज़ͷઐԽ͕ਐΜͰ͍Δɻ ‣ ݸʑͷཁૉٕज़ʹ࠷దʹͳΔΑ͏ γεςϜׂ͕͞ΕΔɻ ‣ ͦΕͧΕͷz֎෦zʹͦΕͧΕͷతɾ ࢥ͕͋Δɻ
֎෦࿈ܞ͢Δͷ͕ৗ
‣ ʮඇಉظͬͯಉظΛߟ͑Δ͜ͱͩΑͶʯ ‣ !N@TFLJ͞Μ͕ݴͬͯͨؾ͕͢Δ ཁग़య ‣ׂ͞ΕͨࣄΛ߹ྲྀͤ͞Δɻ ‣߹ྲྀͤ͞ΔͱॳΊͯϢʔβʔʹಧ͘ɻ ʮׂͬͯ߹ྲྀ͢Δ͜ͱͩΑͶʯ
‣ ߦಈੳͯ͠.-ͰϦίϝϯυ͢Δ༰݁ՌΛ εϚϗΞϓϦʹͨ͠Γɻ ‣ छྨͷ.JDSPTFSWJDFTΤϯυϙΠϯτ͔Βͱ͖ͬͯ ͨσʔλΛ3FBDUΞϓϦʹΘͨͨ͠Γɻ ߹ྲྀͤ͞ΔͱॳΊͯϢʔβʔʹಧ͘
‣ αʔϏεͷӡӦελοϑ͕ɺͦΕͧΕͷઐࣝΛ ͱʹίϯςϯπΛՃߋ৽৹ࠪͨ͠Γɻ ιϑτΣΞ࣮͚ͩͰͳ͍
‣ ͍ΖΜͳઐՈՌ͕8FCٕज़Λ௨͍ͬͯ͘ɻ ‣ +40/PWFS)551ͱ͔ ‣ 41"ͱ͔ɺTJOHMFQBHF͡Όͳͯ͘+4 )5.-ͱ͔ ‣ ཧը໘ͱ͔ ‣
ͦͯ͠Ϣʔβʔʹಧ͘ɻ ߹ྲྀͷͱͯ͠ͷ8FCΞϓϦέʔγϣϯ
‣ 3BJMTੲͱࠓ ‣ ࠷৽ͷٕज़Ͱͳ͘ͳ͖ͬͯͨ ‣ ֎෦ͷ͍ΖΜͳͷͱ࿈ܞ͢Δඞཁ͕ग़͖ͯͨ ‣ ϢʔβʔʹՁΛಧ͚Δ͍ͬͯ͏͚Ͳ ‣
શମΛ͍͍ײ͡ʹ͢Δ ‣ ݁
3BJMTΞϓϦʹٻΊΒΕΔ͜ͱ ੲͱࠓ
‣ ୯ҰͷγεςϜͱͯ͠ɺσʔλͷ ग़͠ೖΕΛ্खʹߦ͏ɻ ‣ σʔλΛ͖Ε͍ʹೖΕΔɺೖΕ͘͢͢Δɻ ‣ շదͳҰށݐͯΛ࡞Δɻ ੲ
‣ ͞·͟·ͳਓ͕ͨͪ࣋ͪدΔՁΛ ߹ྲྀͤ͞ΔॴͱͳΔɻ ‣ ͍Ζ͍Ζͳਓͷॅ·͏֗ͷ׆ಈΛ͍͍ײ͡ʹ͢Δɻ ‣ ϩϘοτ͕࡞ͬͨΛϨʔϧͰӡΜͰίϯςφʹೖΕͯTIJQJUʙ̇ ࠓ
ྫ TFDSFRͷ͕͔͔࣌ؒΔ ϨίϝϯυΤϯυϙΠϯτΛ ܧଓͯ͠վળ͢Δࢪࡦ
‣ TFD͔͔Δͱ8FCಉظແཧ ‣ ඇಉظBOEPSΩϟογϡ ‣ ඇಉظͰऔΔͱ͖ͷ"1*Ͳ͏͢Δ ‣ Ωϟογϡ͢Δͱͯ͠ɺΩʔͱύʔδλΠϛϯάͷઃܭʜ
‣ Ϩίϝϯυ͢ΔࠜڌσʔλͷΘͨ͠ํ ‣ ‣ ྔ ‣ ϓϥΠόγʔ ‣ ޮՌΛͲ͏ͬͯଌఆ͠Α͏ ‣ ϩάऔಘͷΈɺ͍·͋ΔൣғͰΓΔ ‣ Ͳ͏͍͏ϩάΛͲ͏͍͏ޮՌͱΈͳ͍͍ͤ TFDSFRͷ͕͔͔࣌ؒΔϨίϝϯυΤϯυϙΠϯτΛܧଓͯ͠վળ͢Δࢪࡦ
‣ ୭͕Ͳ͏ੳ͢Δ ‣ ԿΛͬͯޮՌ͕͋ͬͨͱஅͰ͖Δ ‣ վળͷͨΊͷ৽ΞϧΰϦζϜΛͲ͏ͬͯػೳՃ͠Α͏ ‣ ύϥϝʔλมߋ͚ͩͰ͍͚Δ
‣ ͍͚ͳ͍ͱͯ͠ɺ͍ͭมߋͰ͖Δ ‣ ൺֱͷͨΊʹฒߦӡ༻͢ΔΈ ‣ ϨίϝϯυΤϯδϯ͕٧·ͬͨΓམͪͨΓͨ͠ΒͲ͏͠Α͏ ‣ ٕज़తʹΓͨ͠Γ ‣ ࠔͬͨϢʔβʔ͞ΜʹँͬͨΓॿ͚ͨΓ TFDSFRͷ͕͔͔࣌ؒΔϨίϝϯυΤϯυϙΠϯτΛܧଓͯ͠վળ͢Δࢪࡦ
‣ Ϛδ ‣ ҰݸҰݸ͕ɺٕज़తʹͪΐ͏εΰΠͱݶΒͳ͍ɻ ‣ ݸผʹʮ;ͭ͏ʯͷ͜ͱͷ΄͏͕ଟ͍ ‣ ͦΕͧΕͷͷઐՈͱͯ͠ɺͬͱεΰΠಉ྅ νʔϜϝϯόʔ͕͍ͨΓ͠·ͤΜ
ͥΜͿҰਓͰϚελʔ͢Δ
‣ ΞϓϦج൫ ‣ Πϯϑϥ43& ‣ "*ݚڀ։ൃ ‣ اըϚʔέλʔ ‣ Ϣʔβʔαϙʔτ
৭Μͳ৬ೳͷਓ͕͍ͨͪΔ
‣ଟ͘ͷ߹ɺ8FCΞϓϦͷίϛοτΛ͏ɻ ‣ҰݸҰݸͷػೳՃͦ͜·Ͱ͘͠ͳ͍ɻ ‣ͰͦΕΛܧଓతʹ͍͍ײ͡ʹ͢Δͷ͍͠ɻ ‣৭Μͳਓͷࢥ͕͋ΔͷͰɻ ࣋ͪدͬͨՌΛEFMJWFS͢Δ
‣ ͍͍ײ͡ʹ߹ྲྀ͢ΔʹͳΔɻ ‣ ૬ޓʹΑ͍ίϛϡχέʔγϣϯΛઃܭͯ͠ ‣ ՌΛྲྀ௨ͤ͞ΔΠϯλʔϑΣʔεΛఏڙ͢Δ ‣͍͠ɻ ‣͚ͲɺϢʔβʔʹՁΛಧ͚ΔͨΊʹඞཁͳ͜ͱɻ z8FCΞϓϦΛ࡞Δ৬ೳzΛ࣋ͭਓ͕ͨͪͰ͖Δͱ͍͍͜ͱ
‣ ͍͍ײ͡ʹ߹ྲྀ͢ΔʹͳΔɻ ‣ ૬ޓʹΑ͍ίϛϡχέʔγϣϯΛઃܭͯ͠ ‣ ՌΛྲྀ௨ͤ͞ΔΠϯλʔϑΣʔεΛఏڙ͢Δ ‣͍͠ɻ ‣͚ͲɺϢʔβʔʹՁΛಧ͚ΔͨΊʹඞཁͳ͜ͱɻ z8FCΞϓϦΛ࡞Δ৬ೳzΛ࣋ͭਓ͕ͨͪͰ͖Δͱ͍͍͜ͱ
‣ 3BJMTੲͱࠓ ‣ ࠷৽ͷٕज़Ͱͳ͘ͳ͖ͬͯͨ ‣ ֎෦ͷ͍ΖΜͳͷͱ࿈ܞ͢Δඞཁ͕ग़͖ͯͨ ‣ ৭Μͳ৬ೳͷਓ͕ͨͪग़ձ͏ʹͳ͖͍ͬͯͯΔ ‣ ϢʔβʔʹՁΛಧ͚Δ͍ͬͯ͏͚Ͳ
‣ શମΛ͍͍ײ͡ʹ͢Δ ‣ ݁
Ϣʔβʔʹ ՁΛಧ͚Δ ͍ͬͯ͏͚Ͳ
‣ ओޠ ‣ ࢲ͕ ‣ ࢲͨͪΤϯδχΞ͕ ‣ ࢲͨͪͷ\αʔϏε ࣄۀ
ձࣾ^શମ͕ ϢʔβʔʹՁΛಧ͚Δ͍ͬͯ͏͚Ͳ
‣ Ϣʔβʔͱ ‣ Πϯλʔωοτͷ͜͏ʹ͍ΔɺαʔϏεར༻ऀ ‣ ར༻ऀͷ͜ͱΛҰॹʹߟ͑Δɺ৫ͷؒ ‣ ͦ͏͍͏৫ͷ͕ؒ͏ιϑτΣΞϓϩμΫτ Λ࡞Δɺ։ൃνʔϜͷϝϯόʔ
ϢʔβʔʹՁΛಧ͚Δ͍ͬͯ͏͚Ͳ
‣ ʮࢲʯଞͷ৬ೳͷਓʹՁΛఏڙͯ͠ɻ ‣ ʮࢲͨͪʯΈΜͳ͕ͦΕͧΕͷ৬ೳΛੜ͔ͯ͠ ੈͷதΛ͍͖͍͖͍ͤͨ͞ɻ ഉଞͰͳ͘ϑϥΫλϧߏ
‣ ͍·ͷ8FCͷαʔόଆͬͯΑཱ͍ͪҐஔ ͩͱࢥ͏ɻ ‣ ৫֎ͷʰ͍ΖΜͳਓ͕ॅ·͏֗ʱ ͱͯ͠ͷιϑτΣΞશମΛ͍͍ײ͡ʹ͢Δɻ ‣ ʮΤίγεςϜʯͷγεςϜ શମΛ͍͍ײ͡ʹ͢Δ
‣ גࣜձࣾΤεɾΤϜɾΤεੵۃ࠾༻த ‣ 3BJMTੲͱࠓ ‣ ϢʔβʔʹՁΛಧ͚Δ͍ͬͯ͏͚Ͳ ‣ ʮࢲͨͪʯͱʮϢʔβʔʯͷϑϥΫλϧߏɻ11͡Όͳ͍Αɻ ‣ શମΛ͍͍ײ͡ʹ͢Δ
‣ ݁
શମΛ ͍͍ײ͡ʹ͢Δ
ιϑτΣΞʹॅ·͏ਓͨͪʹ͖߹͏
‣ ҰॹʹՁΛఏڙ͢ΔɺʮӡӦ͕ಘҙͳਓͨͪʯ͕ ;ͩΜॅ·͏ͱ͜Ζɻ ‣ ςʔϒ ϧΛ$36%͢Δ͚ͩͩͱΓͳ͍͜ͱ͕ଟ͍Αɻ ͨͱ͑ཧը໘
‣ ॅ·͏ਓͨͪͷϚΠϯυηοτΛଚॏͯ͠ɺ ιϑτΣΞʹ͠Α͏ɻ ‣ ϢϏΩλεݴޠɺυϝΠϯΤΩεύʔτɺ%$*ʜ ‣ Ϟδϡʔϧׂͷ͚ͩ͡Όͳ͍ ձ͠Α͏
‣ ੍ޚͷํͷܾఆݖΛɺॅ·͏ਓࣗʹҕͶΔɻ ‣ ίʔυϕʔεʹॅ·͏զʑɺίʔυϕʔεͷ͋ΓํΛ ৄ͘͠ͳ͍ਓʹܾΊΒΕͨ͘ͳ͍Ͱ͢ΑͶ ‣ ҙͯ͠ҭ͍ͯͯ͘ͱɺ݁Ռͱͯ͠Ͱ͖Δ ͜ͱ͋Δ
‣ 3BJMTϛϥΫϧ lϑϨʔϜϫʔΫzΛ࡞Βͳ͍
‣ ίʔυʹॅ·͏ࢲͨͪϓϩάϥϚʹ ‣ Α͍ΠϯλʔϑΣʔεͱίϛϡχέʔγϣϯͷ Λఏڙͯ͘͠Εɺ ‣ ιϑτΣΞͷ͍खʹՁΛಧ͚ΔͷΛ खॿ͚ͯ͘͠ΕΔɻ 3VCZ3BJMT
‣ ιϑτΣΞͷ͍खʹͱ͍͍ͬͯײ͡ʹɻ ‣ ʮ3BJMT͕ʰಈ͍ͯ΄͍͠Α͏ʹʱಈ͔ͳ͔ͬͨ ΒͦΕόάʯ ‣ Έ͍ͨͳ͜ͱΛ!ZVHVJ͞Μݴͬͯͨؾ͕ ཁग़య 3VCZ3BJMTͷΑ͏ʹৼΔ͏
ͱɺ͍͏ͷΛ Ұൠͱͯ͠ɺ ෆཁͱࢥ͏ਓ͋·Γ͍ͳ͍
‣ αʔϏε։ൃࢤΤϯδχΞ ‣ ʮࢲͷαʔϏεʯͰϢʔβʔʹՁΛఏڙ͍ͨ͠ ‣ ٕज़ࢤΤϯδχΞ ‣ ͜ͷ͍͢͝৽ٕज़Λద༻͍ͨ͠ ‣ ͦΕͧΕͷࢤͷͻͱ͕ʮશମʯʹͱͬͯେࣄ
ͳͷؒҧ͍ͳͯ͘ɻ ‣ ྑ͘͠·͠ΐ͏ ΩϟϦΞύεͱͯ͠ҙࣝ͢Δͷ͕͍͠
‣ ΈΜͳͷࣄΛ߹ྲྀͤ͞Δ͜ͱʹ ؔ৺Λ࣋ͭࢤੑʹɺ໊લ͕͋ΔͱΑ͍ɻ ‣ ͍͍ͷࢥ͍͍ͭͨΒڭ͍͑ͯͩ͘͞ ‣ ఆʮશମΛ͍͍ײ͡ʹ͢Δʯ ʲ؇ืʳ͜ͷࢤΛද͢Α໊͍લ
‣ 3BJMTੲͱࠓ ‣ ϢʔβʔʹՁΛಧ͚Δ͍ͬͯ͏͚Ͳ ‣ શମΛ͍͍ײ͡ʹ͢Δ ‣ ʮΈΜͳͷࣄΛ߹ྲྀͤ͞Δ͜ͱʯʹڵຯΛ࣋ͭɺͱ͍͏ ΩϟϦΞͷํੑΛ͝ఏҊͨ͠ɻ ‣
݁
݁
શମ͕͍͍ײ͡ʹͳΔͨΊʹɺ ࢲͨͪ3BJMTΛϗʔϜʹ͢Δ 8FCٕज़ऀ͕Ͱ͖Δ͜ͱ
"શମ͕͍͍ײ͡ʹ ͳΔ͜ͱʹڵຯΛ࣋ͪɺ ͦ͏͠Α͏ͱ͢Δ
‣ ͞·͟·ͳਓͨͪͷίϛϡχέʔγϣϯͷͱͳΔ͜ͱɺ ݩؾ͚ͮΔ͜ͱɻ ‣ ָͬͯ͘͠ͳΔΠϯλʔϑΣʔεΛ࡞Δ͜ͱɻ ‣ ͲΜͲΜࣄͨ͘͠ͳΔ6* ‣ ͲΜͲΜୟ͖ͨ͘ͳΔ"1* ‣
ࢲͨͪશһͰఏڙ͢ΔՁͷ૯Λେ͖͘͢Δ ͨΊʹٕज़Λ͏͜ͱɻ
‣ ͱ͍͏ࢤʹ֮ࣗతʹͳΓͳ͕Βɺ ͍ΖΜͳઐՈͱͷʑͷࣄΛָ͠Ή͜ͱɻ