Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
RailsエンジニアがStimulus + 生JSだけで約半年のプロジェクトを終えた今思うこと
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Masayoshi Tokumoto
February 21, 2019
Technology
350
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
RailsエンジニアがStimulus + 生JSだけで約半年のプロジェクトを終えた今思うこと
Masayoshi Tokumoto
February 21, 2019
More Decks by Masayoshi Tokumoto
See All by Masayoshi Tokumoto
プロダクト・人・チームをいい感じにするためのシステム思考
sasumasa
0
70
RxJS と Netflix から学ぶリアクティブプログラミング
sasumasa
0
56
GraphQL を完全に理解する
sasumasa
0
48
Stimulus × Jest × Direct Upload × Image Fluxで カオスなJS環境と画像アップロード機能を改善しつつユーザーの投稿率を上げた話
sasumasa
1
390
キャパを超えた大型プロジェクトから学んだこと
sasumasa
0
1.5k
IKUSEI on Rails
sasumasa
2
1.9k
文系から半年でRuby(Sinatra, Rails)を学んだら人生変わった@沖縄Ruby会議02
sasumasa
9
19k
Other Decks in Technology
See All in Technology
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
5
25k
20260912_スクラムにジェネラリストは必要か
ryugen04
0
380
あるけみー式LTスライド作成術
alchemy1115
1
200
プロダクト思考 × 基盤思考を AIで実現する Compound Engineering
tkc66buzz
1
330
#jawssonic2026 あの時代が悪かった ~動かなかったSageMakerと共に迎えたイベント当日~
ktkn1129
0
150
クロスボーダーM&AのValue Upを支えるプロダクト開発。日米チームのハブになったプロダクトエンジニアの実践 / Product Engineering Conference 2026
genda
0
120
目の前の楽しいが人生を変える - コミュニティの螺旋の歩き方と楽しむコツ / change your life
soudai
PRO
4
530
WAF 運用改善の承認サイクル/SRE_BizReach_MIXI_1
visional_engineering_and_design
2
590
Amazon Quick on DesktopがIAM Identity Centerで動かない理由
yukiogawa
0
170
幾何アルゴリズムで なめらかなピン操作を / iOSDC Japan 2026 / smoothpin
kazumanagano
0
280
AIオーケストレーションを活用した 開発ワークフローの設計と実践
bqnq
0
150
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
3
480
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
What's in a price? How to price your products and services
michaelherold
247
13k
Tell your own story through comics
letsgokoyo
1
1.1k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
820
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
How to Talk to Developers About Accessibility
jct
2
540
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
400
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
Automating Front-end Workflow
addyosmani
1369
210k
Transcript
3BJMTΤϯδχΞ͕ 4UJNVMVT ੜ+4͚ͩͰ ͷϓϩδΣΫτΛऴ͑ͨࠓࢥ͏͜ͱ ಙݩকٛʢ!NBTBʣ
ࣗݾհ w ಙݩকٛʢͱ͘ͱɹ·͞Α͠ʣ w ԭೄग़ w גࣜձࣾΈΜͳͷΣσΟϯά w 3VCZ3BJMT+BWB4DSJQUK2VFSZ4UJNVMVT(P
ݴ͍͍ͨ͜ͱ w 3BJMTΤϯδχΞ͕γϯϓϧͳػೳΛ+4Ͱ࣮͢Δ࣌ K2VFSZΛͿΜճ͢ΑΓ4UJNVMVT ੜͷ +BWB4DSJQU ΛબͿํ͕ͣͬͱྑͦ͞͏ w ͨͩ͠ɺ+BWB4DSJQUͰ؆ܿʹॻͨ͘Ίͷݟ͕ʢຊਓɾ ࣾʹʣແ͍ͱԕճΓͯ͠͠·͏ڪΕ͕͋ΔͷͰҙ
ϓϩδΣΫτͰͬͨ͜ͱʢҰ෦ʣ w +4ͷϑϨʔϜϫʔΫͱ+4ͷςεςΟϯάϑϨʔϜϫʔΫͷબ ఆɾಋೖ w ෳຕͷը૾ΛඇಉظͰ"84ͷ4μΠϨΫτΞοϓϩʔυ w ໊ࣜͷαδΣετػೳͷ࣮ w Ϣʔβʔͷॻ͖ࠐΈ༰ͷࣗಈอଘػೳͷ࣮
ϓϩδΣΫτͰͬͨ͜ͱʢҰ෦ʣ w +4ͷϑϨʔϜϫʔΫͱ+4ͷςεςΟϯάϑϨʔϜϫʔΫͷબఆɾಋ ೖ w ෳຕͷը૾ΛඇಉظͰ"84ͷ4μΠϨΫτΞοϓϩʔυ w ॺ໊͖ͭ63-ͷऔಘ w σʔλͷૹ৴
w αϜωΠϧͷදࣔ w ໊ࣜͷαδΣετػೳͷ࣮ w Ϣʔβʔͷॻ͖ࠐΈ༰ͷࣗಈอଘػೳͷ࣮ ࠓ͜ͷ̎ͭʹ͍ͭͯ৮Εͳ͕Β 4UJNVMVT+4ʹ͍ͭͯ͠·͢
͖͔͚ͬʮK2VFSZ٫ʯ w K2VFSZศར͗͢Δ w Πϕϯτͱͷόϯυϧɺ%0.ૢ࡞ɺΞχϝʔγϣϯɺ"KBYʜ w ຕͷϑΝΠϧͰશ෦Ͱ͖ͯ͠·͏ w +4ʹৄ͍͠Θ͚Ͱͳ͍αʔόʔαΠυΤϯδχΞ͕ॻ͘ w
Ԛ͍ίʔυͰॻ͔Εͯ͠·͏ʢແ๏ଳʣ w K2VFSZݹ͍ϑϨʔϜϫʔΫ w ϒϥβؒͷ͕ࠩॖ·Γͭͭ͋Δ w ৽͍͠ϓϩδΣΫτͰΘ͟Θ͟͏ʁ w ৽ଔ͔ΒֶͿ͖ʁ
৽͍͠ϑϨʔϜϫʔΫͱ ςεςΟϯάϑϨʔϜϫʔΫͷબఆ w ϑϨʔϜϫʔΫ4UJNVMVT w ͖͔͚ͬΤϯδχΞͷ্͕࢘ʮྑͦ͞͏͔ͩΒௐͯΈͯʯͱݴͬͨ͜ͱ w 3BJMTΤϯδχΞ͕Λ͚ͯॻ͖ͦ͢͏ʢ#BTFDBNQ͕࡞ͬͨʣ w γϯϓϧͰ͋Δʢֶशίετ͕͘ɺػೳ࠷ݶʣ
w ςεςΟϯάϑϨʔϜϫʔΫ+FTU w 34QFDʹࣅͨॻ͖ํͰۙײ͕͋Δ w ͜Ε͔ΒࣾͰ͏͔͠Εͳ͍ʢͱݴΘΕ͍ͯͨʣ3FBDUͱੑ͕͋ Δ
4UJNVMVTͱ 4UJNVMVTJTB+BWB4DSJQUGSBNFXPSLXJUINPEFTUBNCJUJPOT 6OMJLFPUIFSGSBNFXPSLT 4UJNVMVTEPFTO`UUBLFPWFSZPVS BQQMJDBUJPO`TFOUJSFGSPOUFOE3BUIFS JU`TEFTJHOFEUP BVHNFOUZPVS)5.-CZDPOOFDUJOHFMFNFOUTUP +BWB4DSJQUPCKFDUTBVUPNBUJDBMMZ Ҿ༻ݩɿIUUQTTUJNVMVTKTPSHIBOECPPLJOUSPEVDUJPO
4UJNVMVTͱ <div data-controller="hello"> <input data-target="hello.name" type="text"> <button data-action="click->hello#greet">Greet</button> <span data-target="hello.output"></span>
</div> // hello_controller.js import { Controller } from "stimulus" export default class extends Controller { static targets = [ "name", "output" ] greet() { this.outputTarget.textContent = `Hello, ${this.nameTarget.value}!` } }
ϥΠϒϥϦΛ͍ͬͯͳ͍ਏΈ ʢͷҰ෦ʣ
%0.ͷੜ͕ਏ͍ @DSFBUF5IVNCOBJM'JFME EBUB \ DPOTUUIVNCOBJM'JFME-JTUEPDVNFOURVFSZ4FMFDUPS AKT@\UIJTDBUFHPSZ^UIVNCOBJMpFMEMJTUA DPOTUUIVNCOBJM'JFME8SBQQFSEPDVNFOUDSFBUF&MFNFOU EJW
UIVNCOBJM'JFME8SBQQFSEBUBTFUDPOUSPMMFSTUSJOHDPVOUFS UIVNCOBJM'JFME8SBQQFSEBUBTFUUBSHFUUIVNCOBJMpFMEJUFN UIVNCOBJM'JFME8SBQQFSEBUBTFUTUSJOH$PVOUFS.BY UIVNCOBJM'JFME8SBQQFSDMBTT/BNFQPTUQJDUVSFTBUUBDINFOUT DPOTUUIVNCOBJM'JFME#BDLHSPVOEEPDVNFOUDSFBUF&MFNFOU EJW UIVNCOBJM'JFME#BDLHSPVOEDMBTT/BNFPTDPOUBJOFSCBDLHSPVOE UIVNCOBJM'JFME#BDLHSPVOEDMBTT-JTUBEE CBDLHSPVOEDPMPSHPME UIVNCOBJM'JFME#BDLHSPVOEDMBTT-JTUBEE NBSHJOCPUUPN. DPOTUIJEEFO0CKFDU,FZUIJTDSFBUF)JEEFO0CKFDU,FZ EBUBPCKFDU,FZ DPOTUIJEEFO$BUFHPSZUIJTDSFBUF)JEEFO$BUFHPSZ DPOTUIJEEFO$POUFOU5ZQFUIJTDSFBUF)JEEFO$POUFOU5ZQF SFWJFX UIJT@DSFBUF3FWJFX5IVNCOBJM'JFME \ EBUB UIVNCOBJM'JFME#BDLHSPVOE IJEEFO0CKFDU,FZ IJEEFO$POUFOU5ZQF IJEEFO$BUFHPSZ ^ UIVNCOBJM'JFME8SBQQFSBQQFOE$IJME UIVNCOBJM'JFME#BDLHSPVOE UIVNCOBJM'JFME-JTUBQQFOE$IJME UIVNCOBJM'JFME8SBQQFS ^ ͜ͷதͰͭͭͷཁૉΛ ಉ͡ཁྖͰҰੜݒ໋࡞ͬͯΔ
%0.ͷੜ͕ਏ͍ w ʮআϘλϯʯʮαϜωΠϧʯʮઆ໌จʯͱ%0.Λੜ ͢ΔϝιουΛ͚ͯɺͦͷத͕DSFBUF&MFNFOU TFU"UUSJCVUF BQQFOE$IJMEͷ܁Γฦ͠ w σβΠϯ͕มߋʹͳΔͱσβΠφʔ͞ΜʹϚΠφεͷΦʔ ϥΛ์ͬͯ͠·͏͕͍ࣗΔʢະख़ʣ
w ͍͍αʔϏε͕࡞Γ͍ͨͷಉ͡ؾ࣋ͪͳͷʹɾɾɾ
ͦͷ࣌ͷࣗ 4UJNVMVTͱ͔ ੜͷ+4͡Όμϝͩɻ K2VFSZͳΒ·ͩϚγͳ Μ͡Όʢུʣ Ծ%0.Λѻ͏ϥΠϒ ϥϦΛ͏ͷ͕͍͍Μ͡Ό ͳ͍ʢࡶʣ
ઌഐ͕ϦϑΝΫλϦϯά
ઌഐ͕ϦϑΝΫλϦϯά w ը૾Ξοϓϩʔυॲཧ͕ऴΘͬͨΒ.VUBUJPOPCTFSWFS ͰPCTFSWF͍ͯ͠ΔཁૉͷEBUBଐੑͷΛ+40/จࣈྻͱ ͯ͢͠ w ಉҰ7JFXϑΝΠϧͰEJTQMBZOPOFͰϨϯμϦϯά͍ͯ͠ ΔαϜωΠϧͷςϯϓϨʔτΛ$MPOF͍ͯ͠ɺαϜωΠ ϧΛ࡞͢Δ
ͦͷ࣌ͷࣗ ࣗͷܦݧ͕ࣝ Γ͍ͯͳ͔ͬͨͩ ͚͔ͩͬͨ ͝ΊΜ4UJNVMVTɺ ͝ΊΜ+4ɾɾɾ
ݴ͍͍ͨ͜ͱʢ࠶ܝʣ w 3BJMTΤϯδχΞ͕γϯϓϧͳػೳΛ+4Ͱ࣮͢Δ࣌ K2VFSZΛͿΜճ͢ΑΓ4UJNVMVT ੜͷ +BWB4DSJQU ΛબͿํ͕ͣͬͱྑͦ͞͏ w ͨͩ͠ɺੜͷ+BWB4DSJQUͰ؆ܿʹॻͨ͘Ίͷݟ͕ʢຊ ਓɾࣾʹʣແ͍ͱԕճΓͯ͠͠·͏ڪΕ͕͋ΔͷͰҙ
͓·͚ 4UJNVMVTͰ%0.ͷੜΛ؆୯ʹͯ͘͠ΕΔΈ͕ͳ͍ͷɺ 3BJMTͷ5VSCPMJOLTͱҰॹʹ͏ͷ͕ఆ͞Ε͍ͯΔ͔Βʢͩ ͱࢥ͏ʣ ࢀߟʢXJMMOFU͞ΜͷεϥΠυʣɿIUUQTTQFBLFSEFDLDPNXJMMOFUTUJNVMVT w αϜωΠϧදࣔʹ͍ͭͯϦϑΝΫλϦϯά͞Εͨ༰ɺ5VSCPMJOLT Λ༗ޮʹͨ͠ঢ়ଶͰ)5.-Λ࠶ϨϯμϦϯάͨ͠ঢ়ଶʹࣅ͍ͯΔ w %0.Λͦͷ··͓͍࣋ͬͯͯࠩͷΈΛදࣔ͢Δͱ͍͏ҙຯͰԾ
%0.ʹࣅ͍ͯΔ
͋Γ͕ͱ͏͍͟͝·ͨ͠