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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
React Nativeでの OTA Updateって、 どう説明する?
ichiki1023
0
150
Execution in the Kingdom of Agents: Reflections on Abstraction and Complexity
bcantrill
0
870
IR Today: Theory, Practice, and Agents
dtunkelang
0
350
AI駆動開発の時代になったのでトヨタ生産方式から見直す
terurou
0
3.4k
組み立てて楽しむ AWS Blocks 入門
kmiya84377
0
220
継続的なAIコスト最適化
bgpat
1
180
自律型 AI をセキュアに実装!Gemini と MIG で作る動的コード実行環境
recruitengineers
PRO
1
220
生成AIで高い生産性を求められて、 悩み、乗り越えた話
mot_techtalk
2
130
AIに攻撃される前に、AIに攻撃させる
tsuchikazu
0
150
全PRの83%が AIレビューだけでマージできるようになった開発組織は その後どうなったか @2026/10
athug
0
100
ハードウェアコンペでもAI駆動開発が進んでいる話
iotengineer22
0
270
脆弱性診断って、何をしているの? 〜弱点を見つけて、会社の改善につなげるまで〜
keeg
0
220
Featured
See All Featured
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Utilizing Notion as your number one productivity tool
mfonobong
4
610
Game over? The fight for quality and originality in the time of robots
wayneb77
1
300
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
260
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
710
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.3k
Everyday Curiosity
cassininazir
0
350
The Pragmatic Product Professional
lauravandoore
37
7.5k
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.ʹࣅ͍ͯΔ
͋Γ͕ͱ͏͍͟͝·ͨ͠