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
高度なUI/UXこそHotwireで作ろう Kaigi on Rails 2025
Search
Naofumi Kagami
September 26, 2025
Programming
12k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
高度なUI/UXこそHotwireで作ろう Kaigi on Rails 2025
Naofumi Kagami
September 26, 2025
More Decks by Naofumi Kagami
See All by Naofumi Kagami
RailsTokyo 2026#4: AI様があれば、 Hotwireの弱点は消えるか?
naofumi
5
1.1k
Other Decks in Programming
See All in Programming
個人開発基盤をまるごとCloudflareに引っ越して爆速で総合的体験を向上させた話
tinykitten
0
190
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
4
2.3k
Jetpack Compose メカニズム
skydoves
0
420
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
150
アクセシビリティから考える情報設計
high_g_engineer
0
370
LL言語やWebフレームワークのPostgreSQL対応 〜DBの機能がユーザーに届くまで〜
kentaroutakeda
1
150
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
0
1.3k
20260828_品質と開発生産性を両立させる、AI時代のE2Eテストの考え方
magicpod
0
210
[GoCon2026] When Goroutines Are Not Enough: Runtime Locality in High-Throughput Go
takehaya
6
2.2k
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
0
280
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
110
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
390
Featured
See All Featured
Heart Work Chapter 1 - Part 1
lfama
PRO
10
36k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
540
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
The Cost Of JavaScript in 2023
addyosmani
55
10k
The Curious Case for Waylosing
cassininazir
1
510
Faster Mobile Websites
deanohume
310
32k
Scaling GitHub
holman
464
140k
My Coaching Mixtape
mlcsv
0
310
Google's AI Overviews - The New Search
badams
0
1.6k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.6k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
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Ͱ࡞Ζ͏ʯ