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
高度なUI/UXこそHotwireで作ろう Kaigi on Rails 2025
Search
Naofumi Kagami
September 26, 2025
Programming
4
9.6k
高度なUI/UXこそHotwireで作ろう Kaigi on Rails 2025
Naofumi Kagami
September 26, 2025
Tweet
Share
Other Decks in Programming
See All in Programming
AI時代のキャリアプラン「技術の引力」からの脱出と「問い」へのいざない / tech-gravity
minodriven
21
7.4k
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
2.5k
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
180
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
210
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
230
余白を設計しフロントエンド開発を 加速させる
tsukuha
7
2.1k
dchart: charts from deck markup
ajstarks
3
1k
AIフル活用時代だからこそ学んでおきたい働き方の心得
shinoyu
0
140
プロダクトオーナーから見たSOC2 _SOC2ゆるミートアップ#2
kekekenta
0
230
CSC307 Lecture 04
javiergs
PRO
0
660
Oxlintはいいぞ
yug1224
5
1.4k
Smart Handoff/Pickup ガイド - Claude Code セッション管理
yukiigarashi
0
150
Featured
See All Featured
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.8k
Faster Mobile Websites
deanohume
310
31k
The Pragmatic Product Professional
lauravandoore
37
7.1k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
Agile that works and the tools we love
rasmusluckow
331
21k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
89
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
Facilitating Awesome Meetings
lara
57
6.8k
So, you think you're a good person
axbom
PRO
2
1.9k
Scaling GitHub
holman
464
140k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
750
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
290
Transcript
Ճʑඒ࢙!OBPGVNJ ,BJHJPO3BJMT ߴͳ6*69ͦ͜ )PUXJSFͰ࡞Ζ͏
(JUIVCOBPGVNJ ༀاۀͰόΠΦܥݚڀऀ όΠΦؔ࿈ϚʔέςΟϯά ʹόΠΦܥϝσΟΞ 3BJMT Ͱىۀ ΦϨΦϨ41"ϑϨʔϜϫʔΫ ,BNJTIJCBJKT όΠΦؔ࿈ηʔϧε όΠΦༀཧ
͔ΒϑϦʔϥϯε 3BJMT !OBPGVNJ
K2VFSZͰ;FOOͷ τοϓΛऔͬͨΓ ͍ͪૣ͘,BNBMΛਪͨ͠Γ
3FBDUΛ3BJMTʹ౷߹͢Δํ๏Λ HFNʹͨ͠Γ ϑϩϯτΤϯυϦϓϨΠεͷ ϓϩδΣΫτʹ͍ͭͯޠͬͨΓ
ϑϩϯτΤϯυ 3BJMT ΤϯδχΞ )PUXJSFਪ͠ͷ
/FYUKTΞϓϦΛ ,BNBMͰσϓϩΠ "1*SPVUFT্ͷ&+4Ͱ )PUXJSFΛՔಇ /FYUKT3FBDUͱ)PUXJSFͰ ಉ͡6*Λ࡞͠ɺσϞͱղઆ /FYUKTWT)PUXJSF IUUQTIPUXJSFOOFYUDBTUMFDPN
3BJMTΞϓϦΛ ,BNBMͰσϓϩΠ )PUXJSFʹ͍ͭͯࢥͬͨ͜ͱ ίʔυྫͱσϞ ߟ͑ํ )PUXJSFΑ· IUUQTIPUXJSFBOFDEPUBDBTUMFDPN
ͦͦ)PUXJSFͬͯͳʹʁ
ೆేཚΕΔ࣌ ేݱΔ 3FBDU )PUXJSF
None
)PUXJSF 4UJNVMVTΠϕϯτॲཧΛఆܕԽɾ؆ུԽ K2VFSZϕετϓϥΫςΟε ϥΠϑαΠΫϧΈ͍ͨͳײ͡ 5VSCPαʔό௨৴Λ؆ུԽɾ࠷దԽ
3FBDU ͑ͯεςʔτҰຊʹߜΔ 0OFXBZEBUBqPXΛڧ੍ εςʔτ%0.Λ࠷దԽ IUUQTKBSFBDUEFWMFBSOUIJOLJOHJOSFBDU 3FBDUͷྲّྀ
3FBDU ͑ͯεςʔτҰຊʹߜΔ 0OFXBZEBUBqPXΛڧ੍ εςʔτ%0.Λ࠷దԽ IUUQTKBSFBDUEFWMFBSOUIJOLJOHJOSFBDU 3FBDUͷྲّྀ ଞͷબࢶΛࣺͯͨ ͷ͕ಛ
)PUXJSF εςʔτΛ͍͍ͨ࣌ 4UJNVMVTͷWBMVFTUBUF͕ศར εςʔτߋ৽ εςʔτߋ৽ εςʔτߋ৽
IUUQTTUJNVMVTIPUXJSFEEFWSFGFSFODFWBMVFT
)PUXJSFϞʔμϧ +4ͳ͠ɺͦΕͱ͋Γ )PUXJSF5VSCP 4UJNVMVT ແཧʹ+BWB4DSJQUΛলུͤͣɺΉ͠Ζੵۃతʹ+BWB4DSJQUΛ׆༻͢Δ ͬ ͞ Γ ײ
ࠓͷຊ
ʮཧը໘)PUXJSFͰ࡞Γɺ ɹϢʔβը໘3FBDUͰ࡞Ζ͏ʯ ͳ ͥ ʁ Α͘ฉ͘ݴ༿
)PUXJSFߴ։ൃͰ͖Δ͔Β ཧը໘͖ ͰෳࡶͰߴͳ6*693FBDU ͡Όͳ͚Ε࡞Εͳ͍ ຊ ʁ +40/"1*͍ Β ͳ
͍ ͠ ͦ Γ Ό ͦ ͏ ͩ Ͷ
ࠓͷ * )PUXJSF༗໊αΠτͷϢʔβը໘Ͱ༻͞Ε͍ͯΔ ͱ͍͏ࣄ࣮ ** /FYUKTΑΓ)PUXJSFͷํ͕ྑ͍6*69͕࡞Γ͍͢ ͱ͍͏ࣄ࣮ *** )PUXJSFͰෳࡶͳ6*͕࡞ΕΔͱ͍͏ࣄ࣮ ࡞Γํͷίπ
3VCZPO3BJMTͷੜՈ w ΠϯϥΠϯฤूͳͲΛ༻ w ߴͳը໘ભҠ #BTFDBNQ
ແ ྉ ϓ ϥ ϯ ʂ IUUQTCBTFDBN QDPN
IUUQTUFDIMJGFDPPLQBEDPN FOUSZ )PUXJSF
ࠓͷ * )PUXJSF༗໊αΠτͷϢʔβը໘Ͱ༻͞Ε͍ͯΔ ͱ͍͏ࣄ࣮ ** /FYUKTΑΓ)PUXJSFͷํ͕ྑ͍6*69͕࡞Γ͍͢ ͱ͍͏ࣄ࣮ *** )PUXJSFͰෳࡶͳ6*͕࡞ΕΔͱ͍͏ࣄ࣮ ࡞Γํͷίπ
3FBDUͱ&3# K2VFSZͷݟ͚ͬͯͭ͘ʁ ϨΨγʔϑϩϯτΤϯυΛ/FYUKTʹϦϓϨΠε ʮ։ൃੜ࢈ੑͷ্ʯΛײͤͯ͘͡͞Εͨͭͷ͜ͱ IUUQTMPHNJKQNBJOUFDIOPMPHZ ͘ࡏ੶͍ͯ͠ΔਓͰ ʮͬͯ͜͜3FBDUͩͬͨΜͩʯ ʮͬͯ͜͜3BJMTͩͬͨΜͩʯ Έ͍ͨͳձ͕ग़ͯ͘Δ ݟ͚͔ͭͳ͍Β͍͠ʂ
3FBDUͷϖʔδͱ3BJMTͷϖʔδ ͷݟ͚ํ
ҙ⚠ ͔͜͜ΒϑϩϯτΤϯυ༻ޠ͕ ͨ͘͞Μग़͖ͯ·͢
/FYUKTQBHFTSPVUFSͷ443͕ ͬ͞Γ͢ΔͷΑ͋͘Δ՝ )PUXJSF5VSCP%SJWF σϑΥϧτͰରࡦࡁΈ σϑΥϧτͷϩʔσΟϯά6* 483ܕͷΩϟογϡ ϖʔδભҠ IUUQTIPUXJSFOOFYUDBTUMFDPNBQJIPUXJSFVTFST
None
483 4UBMF8IJMF3FWBMJEBUF ܕΩϟογϡ ΩϟογϡͷΛղফ͠ɺ ྑ͍ͱ͜औΓΛͯ͘͠ΕΔ
෦తͳը໘ͷॻ͖͑ 1SFGFUDIޮ͍ͯψϧαΫ 5VSCP'SBNFT λϒϝχϡʔ IUUQTIPUXJSFOOFYUDBTUMFDPNBQJIPUXJSFUBCCFE@TFHNFOUT@UVSCPGSBNFT
/FYUKT1BSBMMFM3PVUFTͰλϒΛ࣮
)PUXJSF5VSCP'SBNFTͰλϒΛ࣮
)PUXJSF5VSCP'SBNFTͰλϒΛ࣮ λϒΛඇಉظͰ ࠩ͠ସ͑ 63-Λಉظͯ͠ ϒοΫϚʔΫՄೳ
සൟʹ͏6*69Ͱ )PUXJSFͷํ͕༏Ε͍ͯΔ
࡞Γࠐ·ͳ͍ݶΓ )PUXJSFͷํ͕6*69͕ྑ͍
ຊʹ6*69ͷͨΊʹ 3FBDUΛ͍ͬͯΔͷʁ
ຊʹ6*69ͷͨΊʹ 3FBDUΛ͍ͬͯΔͷʁ ϑϩϯτΤϯυͷϦϓϨΠεʹɺ͍ͭ·Ͱ͔͚ΔΜͩʁ %9 ࠾༻ͷ͜ͱ͔Γݴͬͯͳ͍ʁ
3BJMTϑϩϯτΤϯυͷ%9ͱݴ͑ .BSDP3PUI͞Μ IUUQTLBJHJPOSBJMTPSHUBMLTNBSDPSPUIEBZ
ࠓͷ * )PUXJSF༗໊αΠτͷϢʔβը໘Ͱ༻͞Ε͍ͯΔ ͱ͍͏ࣄ࣮ ** /FYUKTΑΓ)PUXJSFͷํ͕ྑ͍6*69͕࡞Γ͍͢ ͱ͍͏ࣄ࣮ *** )PUXJSFͰෳࡶͳ6*͕࡞ΕΔͱ͍͏ࣄ࣮ ࡞Γํͷίπ
3FBDUʹ͔͠Ͱ͖ͳ͍ෳࡶͳ6*ͳΒ )PUXJSFʹຒΊࠐΊྑ͍ ͍͟ͱͳͬͨΒ
w DPOOFDU EJTDPOOFDU w AEBUB WBMVFATUBUF w 7BMVF$IBOHFE
DBMMCBDLT ຒΊࠐΈ4UJNVMVTͷΦϋί طଘ%0.ͱ+BWB4DSJQUίϯϙʔωϯτΛ ಉظͤ͞Δͷಘҙதͷಘҙ IUUQTIPUXJSFBOFDEPUBDBTUMFDPNPUIFS@MJCSBSJFTDIBSUKTTUJNVMVT
3FBDUຒΊࠐΈ༻ϥΠϒϥϦΛͬͯྑ͍ IUUQTHJUIVCDPNTLSZVLPWUVSCPNPVOU
%BJDIJ,6%0͞Μ 8FC$PNQPOFOUTͰ࣮ݱ͢Δ)PUXJSFͱ ϑϩϯτΤϯυϑϨʔϜϫʔΫͷڮ͠ IUUQTLBJHJPOSBJMTPSHUBMLTLVEPBTEBZ
Ͱ࣮ࡍɺ)PUXJSF͚ͩͰ ෳࡶͳ6*69શવ࡞ΕΔ
ͦͦෳࡶͳ6*ͱʁ
ʮ)PUXJSFͰ ɹ͜͜·ͰͰ͖ΔΑʂʯ
"3FBDUؔͳ͍͡ΌΜʂ جຊ͡ΌΜͦΕͬʂ
ෳࡶͬΆ͍͚Ͳ؆୯ʹ࡞ΕΔ6* %BUFQJDLFS DPMPSQJDLFS EJBMPH QPQPWFS➜ϒϥβσϑΥϧτ͋Γ υϥοάˍυϩοϓ➜7BOJMMB+4ͷϥΠϒϥϦ͋Γ ϝχϡʔɺυϩοϓμϯɺίϯϘϘοΫεɺπʔϧνοϓͳͲ ➜7BOJMMB+4ͷϥΠϒϥϦ͋Γ όϦσʔγϣϯ➜ϒϥβωΠςΟϒ͋Γ ෳࡶͳ6*Λ୳͢ͷ݁ߏେม
7BOJMMB+4)FBEMFTT6*ϥΠϒϥϦ 5BJMXJOE1MVT&MFNFOUT IUUQTUBJMXJOEDTTDPNCMPHWBOJMMBKTTVQQPSUGPSUBJMXJOEQMVT
7BOJMMB+4ʹΑΔ )FBEMFTT6*ϥΠϒϥϦ ͷ৽ைྲྀ
3FBDU͕ಘҙͱ͢Δෳࡶͳ 6*69ͱԿʁ
IUUQTXXXZPVUVCFDPNXBUDI WQ%R+7E/B
3FBDUϦΞϧλΠϜ μογϡϘʔυ༻ʹ ੜ·Εͨ
(P'.FEJBUPSύλʔϯ 3FBDUTUBUFͱPOFXBZEBUB qPXʹΑΔNFEJBUPSΛڧ੍ +49ʹΑΓɺTUBUF͔ΒྲྀΕΔ એݴత6*Λఏڙ 3FBDUͷڧΈ
IUUQTSFGBDUPSJOHHVSVEFTJHOQBUUFSOTNFEJBUPS # εύήοςΟ (P'.FEJBUPS1BUUFSO 0OFXBZEBUBqPX
3FBDUόʔδϣϯ εςʔτϑϩϯτͰཧ )PUXJSF5VSCPόʔδϣϯ εςʔταʔόͰཧ 4UJNVMVTόʔδϣϯ εςʔτϑϩϯτͰཧ "QQMF4UPSFࣸ IUUQTIPUXJSFBOFDEPUBDBTUMFDPNFYBNQMFTTUPSF
None
εύήοςΟԽ ͍͢͠
3FBDU POFXBZ EBUBqPX
αʔόαΠυ Σϒ.7$ αʔόαΠυ.7$ POFXBZEBUBqPXʹ ͳΔ͔͠ͳ͍ 5VSCPNPSQIJOH༻ 3FBDUͷࠩݕग़ॲཧͬΆ͍
4UJNVMVT POFXBZ EBUBqPX
Πϕϯτϋϯυϥ ࠶ϨϯμϦϯά એݴత6*ߋ৽
None
)PUXJSFͰTUBUF͓Αͼ POFXBZEBUBqPXΛ͏ͱ ෳࡶͳ6*͕࡞Γ͍͢
)PUXJSFͰάϩʔόϧεςʔτཧ ;VTUBOEΛͬͯΈΔ
7BOJMMB+4Ͱ͑Δ άϩʔόϧεςʔτཧ 1VC4VCػೳ ;VTUBOE
IUUQTIPUXJSFBOFDEPUBDBTUMFDPNFYBNQMFTESBXFS
None
;VTUBOEͷTUPSF TMJEF%SBXFS4UPSF
4UJNVMVT$POUSPMMFS 4MJEF%SBXFS$POUSPMMFS
άϩʔόϧεςʔτͰͰ͖Δ͜ͱ ΫϥΠΞϯταΠυ͚ͩͰʮԼॻ͖ʯʮอଘʯػೳ
άϩʔόϧεςʔτͰͰ͖Δ͜ͱ ΫϥΠΞϯταΠυ͚ͩͰϚϧνεςοϓͷϑΥʔϜ
ࠓͷ * )PUXJSF༗໊αΠτͷϢʔβը໘Ͱ༻͞Ε͍ͯΔ ͱ͍͏ࣄ࣮ ** /FYUKTΑΓ)PUXJSFͷํ͕ྑ͍6*69͕࡞Γ͍͢ ͱ͍͏ࣄ࣮ *** গͳ͘ͱ3FBDUఔʹ ෳࡶͳ6*͕࡞ΕΔͱ͍͏ࣄ࣮
࡞Γํͷίπ
)PUXJSFͷ·ͱΊ ༗໊αΠτͷϢʔβ͚ը໘ʹ༻͞Ε͍ͯΔ සൟʹ༻͢Δ6*69Ͱͱͯ༏Ε͍ͯΔ 3FBDUͳΒͰͷෳࡶͳ6*69Λ୳ͯ͠Έ͕ͨʜ )PUXJSF$IBSUKT3FBDUΛ؆୯ʹຒΊࠐΊΔ )PUXJSFͰTUBUFΛҙࣝ͠ɺPOFXBZEBUBqPXΛ͏ͱྑ͍ 4UJNVMVTͷWBMVFTUBUFศརʂ ;VTUBOE͑Δʂ
+40/ جૅࣄ $ ࣮͕͜͜ ݁ߏෳࡶ
ʮཧը໘)PUXJSFͰ࡞Γɺ ɹϢʔβը໘)PUXJSFͰ࡞Ζ͏ʯ