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 Developers Meetup
Search
AKAMATSU Yuki
November 16, 2017
Technology
3.7k
6
Share
Rails Developers Meetup
AKAMATSU Yuki
November 16, 2017
More Decks by AKAMATSU Yuki
See All by AKAMATSU Yuki
今年できたチームの生産性を向上させたプラクティスの紹介 / Kaigi on Rails 2022
ukstudio
4
5.1k
Cookpad Tech Kitchen #24
ukstudio
0
780
Cookpad Summer Internship 2019 Day 1 Git
ukstudio
0
10k
Cookpad Summer Internship 2019 Day 1 Ruby TypeScript
ukstudio
0
10k
sdevtalks.org開発報告 / reporting that sdevtalks.org was launched
ukstudio
0
380
GraphQL on Rails
ukstudio
1
480
「なんでも」をしよう / 2018-12-19 s-dev talks LT
ukstudio
2
580
Rails Developers Meetup 2018 Extreme
ukstudio
0
3.5k
機能追加時における 仮説検証/s-dev-talks-01
ukstudio
0
1k
Other Decks in Technology
See All in Technology
Agent Skillsで実現する記憶領域の運用とその後
yamadashy
2
1.8k
サンプリングは「作る」のか「使う」のか? 分散トレースのコストと運用を両立する実践的戦略 / Why you need the tail sampling and why you don't want it
ymotongpoo
4
170
AIの揺らぎに“コシ”を与える階層化品質設計
ickx
0
270
AI時代の品質はテストプロセスの作り直し #scrumniigata
kyonmm
PRO
4
1.5k
10サービス以上のメール到達率改善を地道に継続的に進めている話 / Continue to improve email delivery rates across multiple services
yamaguchitk333
6
1.5k
AI時代に、 データアナリストがデータエンジニアに異動して
jackojacko_
0
750
いつの間にかデータエンジニア以外の業務も増えていたけど、意外と経験が役に立ってる
zozotech
PRO
0
480
Gaussian Splattingの実用化 - 映像制作への展開
gpuunite_official
0
160
ワールドカフェ再び、そしてゴール・ルール・ロール・ツール / World Café Revisited, and the Goals-Rules-Roles-Tools
ks91
PRO
0
140
そのSLO 99.9%、本当に必要ですか? 〜優先度付きSLOによる責任共有の設計思想〜 / Is that 99.9% SLO really necessary? Design philosophy of shared responsibility through prioritized SLOs
vtryo
0
590
Purview Endpoint DLP 動かしてみた
kozakigh
0
350
AI-Assisted Contributions and Maintainer Load - PyCon US 2026
pauloxnet
1
100
Featured
See All Featured
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
390
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
130
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
530
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
300
The SEO identity crisis: Don't let AI make you average
varn
0
460
How STYLIGHT went responsive
nonsquared
100
6.1k
Darren the Foodie - Storyboard
khoart
PRO
3
3.3k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
250
Marketing to machines
jonoalderson
1
5.2k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
300
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.9k
Transcript
3BJMTͰ&$αʔϏεΛ θϩ͔Β࡞ͬͯΈͯ גࣜձࣾTQJDFMJGF $5045&&34ϓϩμΫτϚωʔδϟʔদ༞ر
45&&34ʹ͍ͭͯ w ΦϦδφϧ5γϟπൢചαʔϏε w ը૾ΞοϓϩʔυαʔϏε্ͷσβΠϯΤσΟλͰ5γϟπ ΛσβΠϯɾൢച w ઃఆͨ͠ൢചՁ֨ʹԠͯ͡จ͝ͱʹऩӹ͕ൃੜ
45&&34ʹ͍ͭͯ w ΦϦδφϧ5γϟπൢചαʔϏε w ը૾ΞοϓϩʔυαʔϏε্ͷσβΠϯΤσΟλͰ5γϟπ ΛσβΠϯɾൢച w ઃఆͨ͠ൢചՁ֨ʹԠͯ͡จ͝ͱʹऩӹ͕ൃੜ
νʔϜߏ w ϓϩμΫτϚωʔδϟʔ݉ΞϓϦέʔγϣϯΤϯδχΞ w Πϯϑϥ݉ΞϓϦέʔγϣϯΤϯδχΞ w σβΠφ
1E.ͱ։ൃऀ͕ಉҰਓͰ͋ΔϝϦοτ w ҙࢥૄ௨ͷίετ͕େ෯ݮ w Ϗδωεͱ։ൃͱͰೝࣝͷҧ͍ͱ͍͏ͷ͕جຊతʹൃੜ͠ͳ ͍
ೝࣝҧ͍ͷൃੜͱ w ྫ͑ w ϏδωεଆͷࢥʮͱΓ͋͑ͣ.71ͱͯ͠ϦϦʔεͯ͠ػೳͱͯ͠ඞཁ͔֬ ೝ͍ͨ͠ʯ w ։ൃଆͷࢥʮͱ͘ʹԿݴΘΕͯͳ͍͠ɺ࡞ΓࠐΜͰ͠·͍͍ͬͯΜͩΖ ͏ʯ w
Ϗδωεͱ։ൃͷརͷෆҰகͱ͔͋Δ w Ϗδωεച্ϦϦʔεεϐʔυΛؾʹ͢Δ͕ɺ։ൃଆকདྷతʹࣗୡ ͕ۤ࿑͠ͳ͍͔Ͳ͏͔Λؾʹ͢Δ w ։ൃʮԾઆݕূ͕͏·͍ͬͨ͘Β࡞Γͳ͓࣌ؒ͢Λ࡞Δ͘ΕΔͱݴ͚ͬͨͲ ͍ͭ͘Εͳ͍Μ͚ʜʯ w ҆શࡦͰෛ࠴Λ࡞Γ͜·ͳ͍ํΛͱΓ͕ͪ
ಉҰਓͷ߹ w ෛ࠴ΛੵΉͱͯ͠ͲΕ͙Β͍ۤ࿑ͦ͠͏͔ɺϏδωεతʹ ࠓޙͲ͏͍ͨ͠ͷ͔͕ࣗΘ͔͍ͬͯΔͷͰஅ͕ϥΫ w ۤ࿑͢ΔͷࣗͳͷͰɺͦ͜ΒΜʹର͢Δؾෛ͍͋· Γͳ͍
ͱ͍͑ʜ w ΓϢʔβʔͷߦಈ͕ࣗͱఆ͠ͳ͍ͷͩͬͨΓ͢Δ ͷͰɺ༧ఆ֎ͷ༷มߋ͕ൃੜ͢Δ w 45&&34ͷ߹ɺ࠷ॳγϯϓϧʹճͷจͰͻͱͭͷαΠ ζ͔͠ങ͑ͳ͔ͬͨ w ࣗͷΛങ͏ʹࣗͷαΠζ͚ͩങ͑ΕΑ͍ͱࢥͬ ͨ
w ͚ͩͲఆ֎ʹෳαΠζΛങ͍͍ͨਓ͕ଟ͔ͬͨ w ͳΔ΄ͲͶ͍ͬͯ͏͜ͱͰ%#ͷߏΛม͑ͯෳαΠζߪೖ ͷϦϦʔεΛߦͬͨ
ͭ·Γʜ w ߟ͑Δਓͱ࡞Δਓ͕ಉ͡ͰϢʔβʔ͕͍ΔҎ্ͯ͢εϜʔ ζʹߦ͘Θ͚Ͱͳ͍ w ࣗͻͱΓͩͱͦ͜ΒΜͷ༷มߋͷཧ༝ͱ͔ٕज़తͳΉͣ ͔͠͞Θ͔ΔͷͰೲಘײ͕͋Δ w ෳਓͷ߹ɺཧ༝͕։ൃʹΘΒ༷ͣมߋͷࢦ͚ࣔͩΘ Δͱඃऀతͳؾ࣋ͪʹͳΓ͕ͪ
w ͦ͜ΒΜͷίϛϡχέʔγϣϯ͕͏·͍͔͘ͳ͍ͱۭؾΘ Δ͘ͳΓ͕ͪ w ͜ͷลΓʹରͯࣗ͠ಛʹ͑Λ͍࣋ͬͯΔΘ͚Ͱͳ͍ ͚Ͳɺҙ͓ࣝͯ͘͠ͱΑͦ͞͏
3BJMTͷ w 3BJMT%FWFMPQFST.FFUVQͳͷͰ։ൃଆͷΛ w ͋·ΓίΞٕज़తͳ͕͋ΔΘ͚Ͱͳ͍ͷͰτϐοΫগ ͠ࢄؾຯʹͳΔ͔ w ಛผͳʹ͔͍͜͠ͱΛ͍ͯ͠ΔΘ͚͡Όͳ͍ͷͰɺ͋Δҙ ຯۙͳʹͳΔͱࢥ͏
։ൃʹ͓͍ͯߟ͍͑ͯͨ͜ͱ w ࣭ͱεϐʔυͷόϥϯεΛऔΓ͍ͨͱߟ͍͑ͯͨ w εϐʔυॏࢹ͗ͣ͢͠ɺ ࣗʹͱͬͯ ͋ͨΓ·͑ͷ͜ͱ ͋ͨΓ·͑ʹͪΌΜͱΔ w ػೳݸผͷઃܭ͋Δఔͬ͘͟ΓͰ0,ɻ࣍ΠδΔػձ͕
͋Εͦͷ࣌ʹ͢ w ٯʹશମͷઃܭํͳΔ͘ߟ͓͖͔͑ͯͨͬͨ
σʔλϕʔεઃܭ w ͪΌΜͱਖ਼نԽͱ֎෦ΩʔΛΔ w σʔλϕʔεͱσʔλͷෛ࠴ղফ͢Δͷ͕େมͳͷͰ࠷ ݶ͜Ε͙Β͍Δ w ͍Βͳ͍ςʔϒϧΓ͍ͨ͜ͱͱ߹Θͳ͍ઃܭʹͳͬͨΒ ͪΌΜͱ͢ w
ΞΫηε͕ଟ͘ͳ͚Εมߋʹରͯͦ͜͠·ͰγϏΞʹ ͳΔ͜ͱͳ͍ w ͦΕΑΓΑ͘Θ͔ΒΜઃܭͷςʔϒϧ͢ํ͕ࠔΔ
σʔλϕʔεͷ7JFX w ਖ਼نԽ͍ͯ͘͠ͱ/ ͷղফ+0*/ͷ͕ଟͯ͘3BJMT্ͷίʔ υͷݟ௨͕͠ΘΔ͘ͳΔ͜ͱ͕͋Δ w ͦͷͱ͖7JFXΛ༻ҙͯ͠ରॲ͢Δ w IUUQTHJUIVCDPNUIPVHIUCPUTDFOJD w
7JFXΛଟஈʹ͢Δͱ͋Δ7JFXͷߏΛม͍͑ͨͱ͖ʹ໘ʹͳ ΔͷͰҙ w ࣅͨཧ༝ͰΧϥϜՃ࣌ʹ͜·ΔͷͰ7JFXʹ࠷ݶͷΧϥϜ Λࢦఆ͢Δ΄͏͕Α͍ w ΞϓϦଆͱ%#ଆʹϩδοΫ͕͔ΕΔͷͪΐͬͱΈͲ͜Ζ
ϚΠάϨʔγϣϯ w εΩʔϚͷมߋͱσʔλͷೖͷཧΛΘ͚ΔΑ͏ʹͨ͠ w σʔλೖIUUQTHJUIVCDPNIBSSZTUFDI TFFE@NJHSBUJPOͰ w εΩʔϚͷมߋʹIUUQTHJUIVCDPNBOLBOF TUSPOH@NJHSBUJPOTΛೖΕͯΈͨ w
ةݥͳ%#มߋʹରͯ͠ܯࠂΛग़͢ w ৭ʑษڧʹͳ͚ͬͨͲɺࠓճෆཁ͔ͩͬͨͳͱࢥ͏
αʔϏεϨΠϠ w αʔϏεϨΠϠѱ͘ͳ͍͕ɺಋೖॳͷαʔϏεϨΠϠʹ ର͢ΔෆษڧͰඍົͳײ͡ʹ w "3ͷΠϯελϯεΛෳ͏Α͏ͳॲཧαʔϏεϨΠ ϠΈ͍ͨʹͯͨ͠
ߪೖॲཧ·ΘΓΛαʔϏεΫϥεʹ w ߪೖॲཧΔ͜ͱ͕ͨ͘͞Μ w ΫϨΧͷܾࡁॲཧɺจใͷӬଓԽɺϢʔβʔͷϝʔϧ ௨ͳͲͳͲʜ w ѻ͏Ϟσϧ͕ଟ͍͠ɺΔ͜ͱଟ͍ͷͰɺͦΕΛ·Δͬͱ αʔϏεΫϥε w
ॳίʔυ͕खଓ͖తʹࣗવͱͳΔͷͰͦΕͦΕͰϝϦο τ͕͋ͬͨ w ίʔυΛ࠶ར༻͢Δͱͳͬͨͱ͖ʹ͍·Θ͕͠Ͱ͖ͣʹࠔ ΔΊʹʜ
Ͳ͏͢ΕΑ͔ͬͨͷ͔ w αʔϏεϨΠϠग़དྷΔݶΓബ͘͢Δ w ͦ͏͢Δͱ3BJMTͷ߹ɺίϯτϩʔϥʔʹॻ͚͍͍ͬ ͍ͯ͏ͷଟʑ͋Δ w υϝΠϯϞσϧͷઃܭྗΛ͑Δ
ϑΥʔϜΫϥε w ਖ਼نԽ͢Δͱେମʹ͓͍ͯϑΥʔϜͱϞσϧ͕ʹͳΒͳ͍ w ϑΥʔϜ͝ͱʹϑΥʔϜΫϥεΛ࡞Δͷ͕݁ہϥΫ w ࣮IUUQUFDINFEQFFSDPKQFOUSZ Λࢀߟʹ͢Εେମ0,
όϦσʔγϣϯΛͲ͜Ͱߦ͏͔ w ͋ͱ͔ΒϑΥʔϜΫϥεΛಋೖͨ͠ͷͰॳϞσϧʹόϦ σʔγϣϯ͕͋ͬͨ w ϑΥʔϜΫϥεͷόϦσʔγϣϯΛϞσϧͷΠϯελϯ εʹͯ͠ϞσϧͰߦ͏
class Form def sync @model_a = ModelA.new(foo: @foo, bar: @bar)
@model_b = ModelB.new(hoge: @hoge) end def valid? sync @model_a.valid? && @model_b.valid? end end όϦσʔγϣϯΛͲ͜Ͱߦ͏͔
ϑΥʔϜΫϥεʹॻ͘ํʹγϑτ w ਓগͳ͍ͷͰϞσϧݺΜͰόϦσʔγϣϯ͞ΕͣࣄނΔ ͱ͍͏ͷগͳ͍ w ϑΥʔϜ࣮͢Δͱ͖ʹϑΥʔϜ୯ҐͰόϦσʔγϣϯߟ͑Δํ ͕ͳΜ͔ϥΫ w ϞσϧͰόϦσʔγϣϯ͢ΔͱࠔΔέʔε͋Δ w
ಛఆΧϥϜଞͷΧϥϜಉ࢜ͷܭࢉʹΑͬͯຒΊΒΕΔ߹ w όϦσʔγϣϯ࣌ʹܭࢉ͢ΔίετΛࢧ͏ඞཁ͕͋Δ w ·ͨϑΥʔϜͷΛόϦσʔγϣϯ͍ͨ͠ͷͰϑΥʔϜͰͦ ͜Λ͋·Γؾʹͨ͘͠ͳ͍
class Form def sync @model = ModelA.new(foo: @foo, bar: @bar)
end def valid? @model.valid? # hogeΛೖΕͯͳ͍ͷͰvalidʹͳΒͳ͍ end def save! hoge = (@foo + @bar) * rate @model.hoge = hoge @model.save! end end
ϑΥʔϜΫϥεʹॻ͘ํʹγϑτ w ͱ͍͑ΓϞσϧʹόϦσʔγϣϯ͕ͳ͍ͷʜ w ͋ͱࣅͨΑ͏ͳϑΥʔϜͰࣅͨΑ͏ͳόϦσʔγϣϯΛॻ͘ ͜ͱଟʑ w όϦσʔγϣϯΛ͍͍ײ͡ʹ·ͱΊͨϞδϡʔϧΛ࡞Δͱ Α͍ͷ͔ͳʜ
·ͱΊ w ϓϩμΫτϚωʔδϟʔͱ։ൃऀͷҙࢥૄ௨େࣄͩΑ w ͏ͪͷ߹݉Ͱͦ͜εΩοϓ͚ͨ͠Ͳɺݱ࣮ͦΕΛଓ ͚͍ͯ͘ͷͳ͔ͳ͔͍͠ w 3BJMT։ൃʹ͓͍ͯେ·͔ͳݪଇΛक͍ͬͯ͘ͷ͕جຊ w ݪଇʹ͍ͭͯษڧ͠Α͏
w ҙਤతʹखΛൈ͘ͱ͔Ͱͳ͍ݶΓɺ্ݶ͕ࣗͷ࣮ྗͰܾ·Δ w ͱݴ࣮͑Ϩϕϧͩͱܾ·Γख͕ͳ͍͜ͱଟ͍ w ͦͷลͷࢼߦࡨޡڪΕͳ͍