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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
MOROHASHI Kyosuke
March 23, 2019
Programming
2
2k
全体がいい感じになるために、私たち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
dynamic!
moro
10
16k
Identifying User Idenity
moro
23
26k
Simplicity on Rails -- RDB, REST and Ruby
moro
18
20k
ちょうどよい Rails E2E テスト/enough-good-rails-e2e-test
moro
6
2.6k
フレームワークを作らない方法/How NOT to build frameworks
moro
4
1.3k
フォームオブジェクトとの向き合い方/Grow Form Objects up
moro
1
2.2k
チームによるいきいきとしたソフトウェア開発/an-alive-team-grows-software
moro
3
3.5k
Web-E2E-Testing-from-Ruby
moro
5
610
Joyful user foundation restructuring with Ruby
moro
9
19k
Other Decks in Programming
See All in Programming
Honoを使ったリモートMCPサーバでAIツールとの連携を加速させる!
tosuri13
1
190
SourceGeneratorのススメ
htkym
0
330
AIプロダクト時代のQAエンジニアに求められること
imtnd
1
270
AI Schema Enrichment for your Oracle AI Database
thatjeffsmith
0
350
CSC307 Lecture 12
javiergs
PRO
0
420
AIによる開発の民主化を支える コンテキスト管理のこれまでとこれから
mulyu
3
1.4k
Sekiban + Microsoft Orleans のアクターをAWS対応しました / Sekiban + Microsoft Orleans actors are now supported on AWS.
tomohisa
0
110
コマンドとリード間の連携に対する脅威分析フレームワーク
pandayumi
1
480
CSC307 Lecture 10
javiergs
PRO
1
670
AgentCoreとHuman in the Loop
har1101
5
260
AI & Enginnering
codelynx
0
140
Apache Iceberg V3 and migration to V3
tomtanaka
0
190
Featured
See All Featured
Scaling GitHub
holman
464
140k
Typedesign – Prime Four
hannesfritz
42
3k
Automating Front-end Workflow
addyosmani
1371
200k
How to Talk to Developers About Accessibility
jct
2
140
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
61
53k
Agile that works and the tools we love
rasmusluckow
331
21k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
0
170
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
81
New Earth Scene 8
popppiees
1
1.6k
Reality Check: Gamification 10 Years Later
codingconduct
0
2k
Become a Pro
speakerdeck
PRO
31
5.8k
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* ‣
ࢲͨͪશһͰఏڙ͢ΔՁͷ૯Λେ͖͘͢Δ ͨΊʹٕज़Λ͏͜ͱɻ
‣ ͱ͍͏ࢤʹ֮ࣗతʹͳΓͳ͕Βɺ ͍ΖΜͳઐՈͱͷʑͷࣄΛָ͠Ή͜ͱɻ