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
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
67
RxJS と Netflix から学ぶリアクティブプログラミング
sasumasa
0
52
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
【GCC2026】鉄拳8でのVFX開発事例
bandainamcostudios
PRO
0
160
国家プロジェクトを支える「さくらONE」 大規模LLM開発におけるGPU障害を乗り越えるクラスター運用戦略
gpuunite_official
0
210
FORENSIA: ローカルLLMフォレンジックハーネス
sumeshi
2
430
20260817_生成AIの動向と中学校・高等学校での活用を考える_v1.00_公開用
doradora09
PRO
0
180
形式手法特論:Hyperproperty とモデル検査 #kernelvm / Kernel VM Study Tokyo 19th
ytaka23
0
500
AIのためのEthernet技術動向 (SerDes)
markunet
1
270
Genie Codeハンズオン応用編
taka_aki
0
140
20分でわかるセキュアAPI
nwiizo
2
320
会社紹介資料 / Sansan Company Profile
sansan33
PRO
24
430k
社内の7割が使うデータ基盤を、 データチーム2人で回すためにやったこと
koh_yoshi
4
1.5k
Flutter × BLE Centralを自前Pluginで実装する設計パターン - MethodChannel / EventChannelで作る双方向ブリッジの実践 / Building Custom Flutter BLE Central Plugins: Bidirectional Bridging with Method & Event Channels
bitkey
PRO
0
210
AI時代に、人は何を、どう学ぶのか #pbl_pub / What and How Do We Learn in the AI Era?
takaking22
1
200
Featured
See All Featured
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
570
How to make the Groovebox
asonas
2
2.3k
Test your architecture with Archunit
thirion
2
2.4k
How to train your dragon (web standard)
notwaldorf
97
6.8k
Between Models and Reality
mayunak
4
400
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
660
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Bash Introduction
62gerente
615
220k
The Curse of the Amulet
leimatthew05
2
14k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
550
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.ʹࣅ͍ͯΔ
͋Γ͕ͱ͏͍͟͝·ͨ͠