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エンジニアがStimulus + 生JSだけで約半年のプロジェクトを終えた今思うこと
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Masayoshi Tokumoto
February 21, 2019
Technology
340
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
66
RxJS と Netflix から学ぶリアクティブプログラミング
sasumasa
0
49
GraphQL を完全に理解する
sasumasa
0
47
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
IaC コードを資産へ:AWS CDK 社内ライブラリと横断展開 / aws-summit-japan-2026
gotok365
5
1k
徹底討論!ECS vs EKS!
daitak
0
200
2026 TECHFRESH 畢業分享會 - 開發日常大解密!從領域驅動到企業級上線
line_developers_tw
PRO
0
1.3k
自宅LLMの話
jacopen
1
650
GitHub Copilot app最速の発信の裏側
tomokusaba
1
190
Oracle Cloud Infrastructure:2026年6月度サービス・アップデート
oracle4engineer
PRO
0
130
Bucharest Tech Week 2026 - Reinventing testing practices in the AI era
edeandrea
PRO
1
170
20260619 私の日常業務での生成 AI 活用
masaruogura
1
230
Agile and AI Redmine Japan 2026
hiranabe
3
270
Lightning近況報告
kozy4324
0
190
Kiroで書いた 設計書 が AI レビューの 採点基準 になる
ezaki
0
130
気軽に使える"情報のハブ"としてのNotion活用 〜フロー情報の集積点 と、 Claude Code × Notion AI〜
syucream
1
150
Featured
See All Featured
Designing for humans not robots
tammielis
254
26k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
230
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
750
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
160
How GitHub (no longer) Works
holman
316
150k
How to Think Like a Performance Engineer
csswizardry
28
2.7k
Accessibility Awareness
sabderemane
1
140
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
200
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.ʹࣅ͍ͯΔ
͋Γ͕ͱ͏͍͟͝·ͨ͠