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
Alpine.js を活用した Laravel MPA フロントエンド最適化戦略 / Alpi...
Search
tzmfreedom
March 20, 2025
Technology
1
570
Alpine.js を活用した Laravel MPA フロントエンド最適化戦略 / Alpine.js MPA
tzmfreedom
March 20, 2025
Tweet
Share
More Decks by tzmfreedom
See All by tzmfreedom
PHPStan拡張のコードから読み解く静的解析の威力と可能性 / PHPStan extension code reading
tzmfreedom
3
320
php-srcを読んでみよう / php-src codereading
tzmfreedom
1
2.1k
DBGpを使って PHPのデバッガーをつくろう / DGBp PHP Debugger
tzmfreedom
1
1.8k
独自フレームワークPHPアプリケーションの改善戦略 / Original Framework PHP Kaizen
tzmfreedom
5
4.3k
PHPでPHPを実装する〜プログラミング言語実装入門〜
tzmfreedom
0
980
Salesforceのツールの作り方
tzmfreedom
0
580
Other Decks in Technology
See All in Technology
ソフトウェア開発におけるインターフェイスという考え方 / PHPerKaigi 2025
k1low
9
3k
Autonomous Database - Dedicated 技術詳細 / adb-d_technical_detail_jp
oracle4engineer
PRO
4
8.2k
LINE API Deep Dive Q1 2025: Unlocking New Possibilities
linedevth
1
130
英語と日本語の文字をComposeでキレイに並べよう
tomoya_shibata
1
130
LangGraphを使ったAIエージェント実装
iwakiyusaku
1
180
入社半年で PTE に! 元海外在住者が語る Google Cloud × G-genで 成長する秘訣
risatube
PRO
0
140
IAMのマニアックな話 2025 ~40分バージョン ~
nrinetcom
PRO
3
160
生成AIで生産性向上
tomuro
0
230
TDSE_20250311_AIxIoTビジネス共創ラボ第2回勉強会_発表資料.pdf
iotcomjpadmin
0
370
グループポリシー再確認
murachiakira
0
110
非エンジニアにも伝えるメールセキュリティ / Email security for non-engineers
ykanoh
13
3.3k
EM初心者として半年間マネジャーをやってみて分かったこと
sansantech
PRO
0
170
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Large-scale JavaScript Application Architecture
addyosmani
511
110k
Faster Mobile Websites
deanohume
306
31k
Designing Experiences People Love
moore
140
23k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
Making Projects Easy
brettharned
116
6.1k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Making the Leap to Tech Lead
cromwellryan
133
9.1k
Automating Front-end Workflow
addyosmani
1369
200k
The Power of CSS Pseudo Elements
geoffreycrofte
76
5.7k
Done Done
chrislema
182
16k
Agile that works and the tools we love
rasmusluckow
328
21k
Transcript
גࣜձࣾΤεɾΤϜɾΤεɹా࣮ "MQJOFKTΛ׆༻ͨ͠ -BSBWFM.1"ϑϩϯτΤϯυ࠷దԽઓུ
ࣗݾհ w ా࣮!U[N@GSFFEPN w גࣜձࣾΤεɾΤϜɾΤεͷΤϯδχΞ w 1)1ྺʙ͘Β͍ w ΞϓϦέʔγϣϯଆͷج൫վળ͕ಘҙ w
ಛʹ1)1ಠࣗ'8͔Β-BSBWFMΞϓϦέʔγϣϯ·Ͱ৭ʑͱ w ࠷ۙ.1"ͷϑϩϯτΤϯυվળʹྗͨ͠Γɺ ٕज़બఆͷͨΊͷϑϩϯτΤϯυٕज़ݕূΛߦ͍ͬͯ·͢
.1"ͷϑϩϯτΤϯυվળͷͷલʹ w .1"ͱʁ w αʔόʔ͔Β)5.-Λฦ͢Α͏ͳΞϓϦέʔγϣϯ w 1)1ͩͱ#MBEF5XJHͳͲͷςϯϓϨʔτΤϯδϯΛར༻ͯ͠)5.-ΛϨ ϯμϦϯά w ը໘ΛΠϯλϥΫςΟϒʹ͢ΔͨΊʹ+BWB4DSJQU͕෦తʹར༻͞ΕΔ
Ϣʔβ ʢϒϥβʣ αʔόʔ (&5ʂ1045ʂ )5.-
.1"ͱ+BWB4DSJQU w ॳظཁ͕݅γϯϓϧͩͱૉͷ+BWB4DSJQUK2VFSZ͕࠾༻͞ΕΔ͜ͱ͕ଟ͍ w ্هٕज़ͷ߹ɺཁ͕݅ෳࡶԽͨ͠ͱ͖ʹෛ࠴ʹͳΓ͕ͪ w 41"ͱൺͯ+BWB4DSJQUͷཧ͕ࡶʹͳΓ͕ͪ w ϥΠϒϥϦͷཧɺϑΝΠϧཧɺςετɺϑΥʔϚολɺ-JOUͳͲ ϑΥʔϚολ͕ೖ͍ͬͯͳͯ͘Մಡੑ͕ѱ͍
-JOU͕ͳ͍ͷͰະఆٛมͷࢀরʹؾ͚ͳ͍
ΦʔόʔεϖοΫͳ41" w ҰํͰ.1"Ͱྑͦ͞͏ͳཁ݅ͳͷʹΦʔόʔεϖοΫͳ41"͕બ ͞ΕΔέʔεΑ͋͘Δ w νʔϜͷशख़ʹΑͬͯอकੑೝෛՙͷ͕ى͖Δ w ϑϩϯτΤϯυΛྑ͍ײ͡ʹ͢Δʹ41"ʹҠߦ͢Δ͔͠ͳ͍ʁ w ٕज़બάϥσʔγϣϯͰ͋ͬͯ΄͍͠
w τϨʔυΦϑΛݟۃΊͯνʔϜʹ͋ͬͨબࢶ͕΄͍͠
͢͜ͱ w .1"ͷϑϩϯτΤϯυ։ൃͷ՝ w K2VFSZͷϝϦοτʗσϝϦοτ w "MQJOFKTΛ༻͍ͨϑϩϯτΤϯυ։ൃ w جຊతͳ͍ํ w
#MBEF࿈ܞɺࣗಈςετɺίϯϙʔωϯτɺܕ͚ w K2VFSZͷԿΛղܾ͢Δͷ͔ʁ
.1"ͷϑϩϯτΤϯυ։ൃͷ՝
͜Μͳײ͡ͳαʔϏεΛࢥ͍ු͔͍ͯͩ͘͞ w -BSBWFM.1"ϝΠϯ +BWB4DSJQUগʑ w +BWB4DSJQUϥΠϒϥϦK2VFSZΛओʹར༻ w ෳࡶͳॲཧ͕͋Γίʔυ͕ಡΈղ͚ͳ͍ʜ w -JOUϑΥʔϚολΛ͍ͬͯͳ͍
w ϥΠϒϥϦ͕ཧ͞Ε͓ͯΒͣݹ͍όʔδϣϯ w ΤϥʔݕͷΈ͕ͳ͍ w Ϗϧυ͍ͯ͠ͳ͍ w ϑϩϯτΤϯυͷςετ͕ͳ͍
ͳΜ͔ͩΑ͋͘Γͦ͏ͳߏͰ͢Ͷʜʁ
w -BSBWFM.1"ϝΠϯ +BWB4DSJQUগʑ w +BWB4DSJQUϥΠϒϥϦK2VFSZΛओʹར༻ w ෳࡶͳॲཧ͕͋Γίʔυ͕ಡΈղ͚ͳ͍ʜ w -JOUϑΥʔϚολΛ͍ͬͯͳ͍ w
ϥΠϒϥϦ͕ཧ͞Ε͓ͯΒͣݹ͍όʔδϣϯ w ΤϥʔݕͷΈ͕ͳ͍ w Ϗϧυ͍ͯ͠ͳ͍ w ϑϩϯτΤϯυͷςετ͕ͳ͍ ͯ͞ɺK2VFSZʹ͍ͭͯࢥ͍ΛͤΑ͏
վΊͯߟ͑ΔK2VFSZͷ༏Ґੑ w ྑ͍ҙຯͰ໋ྩతͰ͋Δ w +4ΛಡΈࠐΉ͚ͩͰηϨΫλʔϕʔεͰػೳ͕͑ΔΑ͏ʹͳΔ w τάϧɺΞίʔσΟΦϯɺμΠΞϩάɺΧϧʔηϧ w Ϗϧυ͕ෆཁͰ͙͑͢Δ w
/PEFKTͳͲͷ։ൃڥɾσϓϩΠڥΛඋ͠ͳͯ͘ྑ͍ w ϓϥάΠϯ͕๛Ͱಋೖ؆୯ w ૯ͯ͡ ಋೖʹ͓͚Δ ೝෛՙ͕͍
ಡΈࠐΉ͚ͩͰ͑ΔK2VFSZͷྑ͞ w )5.-Λॻ͚ͩ͘ͰৼΔ͍ΛೖΕΒΕΔ w 8FCαΠτʹͪΐͬͱͨ͠ΟδΣοτΛೖΕ͍ͨ߹ʹศར
ͳͥK2VFSZ͕ʹͳΓ͕ͪͳͷ͔ w ѱ͍ҙຯͰ໋ྩతͰ͋Δ w +4)5.-ͷίʔυΛݟ͚ͨͩͰ࠷ऴతͳग़ྗ݁Ռ͕͔ΓͮΒ͍ w ಡΈࠐΉ͚ͩͰಈ͕͘Ώ͑ʹɺӨڹൣғ͕͔ΓͮΒ͍ w ηϨΫλΛར༻͢ΔͨΊɺ)5.-ʹڧ͘ґଘ͠ɺյΕ͍͢ w
͙͑͢Δ͕Ώ͑ʹཧ͕ࡶʹͳΓ͕ͪ w $%/ɺόʔδϣϯཧɺϏϧυʢ࠷దԽʣɺςετ w ૯ͯ͡ ӡ༻ʹ͓͚Δ ೝෛՙ͕ߴ͘ɺอकੑ͕͍
.1"ϑϩϯτΤϯυ։ൃͷ՝ͱղܾํ๏ ՝ ղܾํ๏ ໋ྩత6*ʢK2VFSZʣͰอकੑ͕͍ એݴత6*ʢ"MQJOFKTʣ ΩϟογϡରࡦɾεΫϦϓτ࠷దԽ͕Ͱ͖͍ͯͳ͍ 7JUFʹΑΔϏϧυͷಋೖ ςετ͕ॻ͔Ε͓ͯΒͣ҆શͳมߋ͕Ͱ͖ͳ͍ 7JUFTUʹΑΔςετಋೖ ϥΠϒϥϦͷཧ͕Ͱ͖͍ͯͳ͍
/1.ʹΑΔϥΠϒϥϦཧ ܕ͕ແ͍ͷͰݎ࿚ੑ͕͍ 5ZQF4DSJQUʹΑΔܕͷಋೖ ίʔυͷܗߏจνΣοΫ͕Ͱ͖͍ͯͳ͍ #JPNFʹΑΔϑΥʔϚοτɾ੩తղੳ Τϥʔݕɾཧ͕Ͱ͖͍ͯͳ͍ 4FOUSZͳͲͷΤϥʔཧπʔϧͷར༻
.1"ϑϩϯτΤϯυ։ൃͷ՝ͱղܾํ๏ ՝ ղܾํ๏ ໋ྩత6*ʢK2VFSZʣͰอकੑ͕͍ એݴత6*ʢ"MQJOFKTʣ ΩϟογϡରࡦɾεΫϦϓτ࠷దԽ͕Ͱ͖͍ͯͳ͍ 7JUFʹΑΔϏϧυͷಋೖ ςετ͕ॻ͔Ε͓ͯΒͣ҆શͳมߋ͕Ͱ͖ͳ͍ 7JUFTUʹΑΔςετಋೖ ϥΠϒϥϦͷཧ͕Ͱ͖͍ͯͳ͍
/1.ʹΑΔϥΠϒϥϦཧ ܕ͕ແ͍ͷͰݎ࿚ੑ͕͍ 5ZQF4DSJQUʹΑΔܕͷಋೖ ίʔυͷܗߏจνΣοΫ͕Ͱ͖͍ͯͳ͍ #JPNFʹΑΔϑΥʔϚοτɾ੩తղੳ Τϥʔݕɾཧ͕Ͱ͖͍ͯͳ͍ 4FOUSZͳͲͷΤϥʔཧπʔϧͷར༻
K2VFSZͷ໋ྩత6*ͷ՝Λ "MQJOFKTʹΑΔએݴత6*Ͱղܾ͢Δ
"MQJOFKTͱ w खܰʹએݴత6*Λ͑ΔϥΠϒϥϦ w ʮϞμϯ8FCͷK2VFSZʯʮ5BJMXJOE$44ͷ+BWB4DSJQU൛ʯ w 7VFKTʹࣅͨߏจ w )5.-ͷଐੑʹΠϯϥΠϯͰॲཧΛهड़Ͱ͖Δ w
ֶशίετ͕͍"UUSJCVUFT 1SPQFSUJFT .FUIPET w Ϗϧυͤͣʹ$%/ͰಋೖՄೳ w -JWFXJSFͷ։ൃऀ͕࡞ͬͨ044
͜Ε͚ͩͰද੍ࣔޚ͕ಈ͘ʂʂʂ
"MQJOFKTͷ͍ํ w YEBUBͰΦϒδΣΫτʢϓϩύςΟˍϝιουʣΛఆٛ w YTIPX YJG YGPSͰදࣔΛ੍ޚ w YUFYU YCJOE
ͰϓϩύςΟͷΛදࣔɺө w YPO ! ͰϝιουΛݺͼग़ͯ͠ϓϩύςΟͷΛม͑ͨΓॲཧΛߦ͏ YEBUBʹΑΔσʔλఆٛ $MJDLΠϕϯτϋϯυϦϯά දࣔඇද੍ࣔޚ
ྫɿΠϯΫϦϝϯλϧݕࡧ +4ΦϒδΣΫτͳͷͰ HFUUFSΛఆٛͰ͖Δ YNPEFMʹΑΔํόΠϯυ YGPSʹΑΔϧʔϓ YUFYUͰΛදࣔ
K2VFSZͱൺֱ͢Δ
#MBEFͱͷ࿈ܞํ๏ w ίϯτϩʔϥ͔ΒϏϡʔʹαʔόʔมΛόΠϯυ͢Δ͚ͩʢݹ͖ྑ͖ʁ1)1ʣ w !KTσΟϨΫςΟϒEBUBYYYଐੑΛ͏ w ΠϯλϥΫςΟϒʹσʔλΛऔಘߋ৽͢Δඞཁ͕ͳ͚Ε"1*Λ࡞Δඞཁ͕ͳ͍
ίϯϙʔωϯτԽ w "MQJOFKTʹίϯϙʔωϯτԽͷػೳແ͍ w ΘΓʹ֤ςϯϓϨʔτΤϯδϯͷίϯϙʔωϯτػೳΛ͏ w #MBEFͩͱ!JODMVEFΛͬͨαϒϏϡʔͷಡΈࠐΈDPNQPOFOUΛ͏ w ͪͳΈʹ8FCίϯϙʔωϯτΛ࣮ͬͨՄೳʢࠓճׂѪʣ
ଐੑʹ+BWB4DSJQUΛॻ͔ͳͯ͘0, w "MQJOFEBUB Λͬͯ+BWB4DSJQUଆͰࣄલʹΦϒδΣΫτఆ͕ٛͰ͖Δ w ͜ΕʹΑΓɺ͍ճ͕͠Ͱ͖ͨΓςετՄೳʹͳΔ w ΦϒδΣΫτʹରͯ͠ܕఆٛͰ͖Δ
ΦϒδΣΫτϕʔεͳͷͰςετॻ͚Δ w "MQJOFKTͰΦϒδΣΫτϕʔεͰৼΔ͍Λఆٛ͢Δ w ΦϒδΣΫτϕʔεͳͷͰςετ͕؆୯
6*ίϯϙʔωϯτͷςετॻ͚Δ
ܕఆٛͰ͖Δ w A!UZQFTBMQJOFKTAΛ͑σʔλΦϒδΣΫτͷܕ͚͕Ͱ͖Δ
K2VFSZͷ՝ΛͲ͏ղܾ͢Δ͔ w +4)5.-ͷίʔυΛݟ͚ͨͩͰ࠷ऴతͳग़ྗ݁Ռ͕͔ΓͮΒ͍ એݴత6*ͳͷͰॲཧ͕Θ͔Γ͘͢Մಡੑ͕ߴ͍ w ಡΈࠐΉ͚ͩͰಈ͕͘Ώ͑ʹɺӨڹൣғ͕͔ΓͮΒ͍ AYEBUBAͳͲͷଐੑ໊ͰผՄೳ w
ηϨΫλΛར༻͢ΔͨΊɺ)5.-ʹڧ͘ґଘ͠ɺյΕ͍͢ ηϨΫλΛར༻͠ͳ͍ͷͰյΕͮΒ͍
"MQJOFKTͷ(PPE👍 w .1"ͷςϯϓϨʔτΤϯδϯͱڝ߹ͤͣڠௐͰ͖Δ w K2VFSZͱڞଘͰ͖Δ w Ϗϧυͤͣʹ͙͑͢Δ w ֶशίετͷ͞ w
ͦΕͰ͍ͯએݴత6*ͱςελϏϦςΟ͕खʹೖΔ w Ҡߦੑ w એݴత6*ͳͷͰΨν41"ϑϨʔϜϫʔΫͷҠߦқ͍ͣ w K2VFSZΑΓֶशίετ͕ແବʹͳΒͳ͍
"MQJOFKTͷ.PUUP😂 w Ϗϡʔͷܕ҆શੑ͕ແ͍ w )5.-ଐੑͷόΠϯσΟϯάܕ҆શͰͳ͍ w ʢՃ͑ͯ.1"ͩͱςϯϓϨʔτΤϯδϯࣗମ͕ܕ҆શͰͳ͍͜ͱଟ͍ʣ w ʢ#MBEF͕ܕνΣοΫʗิ͕Ͱ͖Εͳ͊ʣ w
ʢ+49549͕ત·͍͠ʜʣ w ίϯϙʔωϯτϕʔεͷ։ൃʹ͔ͳ͍ w ੈͷதͷ͘Β͍ΛΊΔෳࡶͳঢ়ଶཧɺ6*ͳΞϓϦέʔγϣϯʹ͔ͳ͍ w ໊͕͍ʜ͆ʢͷͰఏҊͮ͠Β͍ɻ"MQJOFKTʁʁͬͯͳΔʣ
·ͱΊ w "MQJOFKTΛͬͯ.1"ͷϑϩϯτΤϯυΛྑ͍ײ͡ʹ͢Δํ๏Λհ͠· ͨ͠ w K2VFSZҎ֎ʹ"MQJOFKTͷΑ͏ͳ.1"ͱੑͷߴ͍ϑϩϯτΤϯυٕ ज़͕͋Γ·͢ w ϑϩϯτΤϯυʹݶΒͣɺϓϩμΫτ৫ʹ߹ͬͨదͳٕज़Λબ͢ Δ͜ͱͰɺͦͷϓϩμΫτ৫͕ग़ͤΔՁΛ࠷େԽͰ͖Δͱࢥ͍·
͢ɻ w దͳٕज़બͷͨΊʹ1)1FS,BJHJͰ օ༷͕Βͳ͔ͬͨ৽͍͠ݟΛಘΒΕͨΒ࠷ߴͰ͢Ͷ👍
-BSBWFMΞϓϦέʔγϣϯͰ ϑϩϯτΤϯυΛָ͘͠։ൃ͠·͠ΐ͏💪