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
フロントエンドリアーキテクトの話
Search
Yosuke Furukawa
PRO
June 08, 2023
Programming
11k
20
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
フロントエンドリアーキテクトの話
ZOZO Tech Meetup で話したフロントエンドリアーキテクトの話です。
Yosuke Furukawa
PRO
June 08, 2023
More Decks by Yosuke Furukawa
See All by Yosuke Furukawa
AIがコードを書いてくれる時代、我々は何を確かめるのか
yosuke_furukawa
PRO
13
5.4k
AI時代のシニアエンジニアとは
yosuke_furukawa
PRO
13
11k
Webの地図
yosuke_furukawa
PRO
6
5.3k
XHTMLが残したもの
yosuke_furukawa
PRO
2
990
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
460
デザインシステムが必須の時代に
yosuke_furukawa
PRO
2
350
Node.js, Deno, Bun 最新動向とその所感について
yosuke_furukawa
PRO
10
5.4k
Welcome JSConf.jp 2024
yosuke_furukawa
PRO
1
4.9k
tc39 x jsconf.jp Panel Discussion 2024
yosuke_furukawa
PRO
0
390
Other Decks in Programming
See All in Programming
Seven New Principles of Software Engineering
yegor256
0
400
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
1.2k
AIが生成したコードは読むべきか?抽象化設計とコードの品質保証 / abstraction-design-and-quality
minodriven
14
8k
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
400
ChromeでローカルLLM
ryu1013
0
180
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
1.6k
エージェントを使い続けるためのメタワーク / Meta-work for keeping using the agent
rkaga
6
2.1k
AmebaブログはKMPから卒業します
kmars0605
0
310
Zero-Tap Sign-In対応、結局何をすればいいの?
mitohato14
0
1.2k
graphql-ruby を Spinel で速くしようとした話
mtsmfm
0
140
Web Framework Benchmark Battle 2026, Any%
a_matsuda
3
3.1k
Kotlinize Is Not Just Converting to Kotlin
chigichan24
1
210
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.2k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
960
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
290
Mobile First: as difficult as doing things right
swwweet
225
10k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.6k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Paper Plane
katiecoart
PRO
5
54k
Transcript
ϑϩϯτΤϯυϦΞʔ ΩςΫτ 2023 6/8 @ zozo event
Twitter: @yosuke_furukawa Github: yosuke-furukawa
ҙࣄ߲ • ͜ͷεϥΠυ ZOZO ʹ͓͚ΔϦΞʔΩςΫ τͷͰ͋Γ·ͤΜɻ • ॴଐ৫ͱແؔͰ͢ɻ • େ෯ʹ΅্͔ͨ͠ͰҰൠతͳͱͯ͠ޠͬͯ
͍·͢ɻ
ϑϩϯτΤϯυϦΞʔΩςΫτ 2023 • ٕज़ސΛ͍ࣾͯ͠·͢ • ٕज़ސͷதͰҰ൪FAQͳͷ͕ • ʮxxxͰ࡞ͬͨͷΛϦΞʔΩςΫτ͍ͨ͠ͷͰ͕͢ʯͱ͍͏ ͍߹ΘͤͰ͢ •
ࠓճͦͦϦΞʔΩςΫτͱͲ͏͍͏ͷͳͷ͔ • ϦΞʔΩςΫτ͕͏·͍͘͘ͷͱ͏·͍͔͘ͳ͍ͷԿ͕ҧ ͏ͷ͔ʹ͍ͭͯ͠·͢
ϦΞʔΩςΫτͱ
ϦΞʔΩςΫτͱ • Chapter 5: Re-Architecting ϦϑΝΫλϦϯάͷҰछͰ͋Δɻ ϝιουΫϥεͱ͍ͬͨ୯ҐͰͳ ͘ɺϞδϡʔϧίϯϙʔωϯτͱ͍ͬ ͨ୯ҐͰઃܭͷݟ͠Λߦ͏͜ͱ
ϦΞʔΩςΫτͱ • ϦϑΝΫλϦϯάɿίʔυ୯ҐͰͷ࠶࣮ • ϦΞʔΩςΫτɿઃܭ୯ҐͰͷ࠶ߏஙɺϞ δϡʔϧΛׂͯ͠Ұ෦Λॻ͖͑Δ • ϏοάϦϥΠτɿॻ͖͠ɺθϩϕʔεͰͷ ࠶ߏங
ͦͦͳΜͰ ϦΞʔΩςΫτ͕ඞཁͳͷ͔
ͦͦͳΜͰϦΞʔΩςΫτ ͕ඞཁͳͷ͔ • ͜͜ʹ̎ͭͷత͕͋Δ • ιϑτΣΞ࣮རతͳʢظతͳϝϦο τʣ • ৫ͷٕज़ܧঝͷʢதظతͳϝϦοτʣ
ιϑτΣΞ࣮རతͳ • ϞδϡʔϧΛׂ͢Δ͜ͱͰಠཱੑΛߴΊɺґଘΛݮΒ͢ • ΠϯλϑΣʔεͱ࣮Λ͢Δ͜ͱͰؔ৺ΛͰ͖Δ ʢόοΫΤϯυͱϑϩϯτΤϯυͰΠϯλϑΣʔε͚ͩఆٛ ͢Ε͓ޓ͍ͷ࣮ؔ৺ͷ֎ʹͳΔʣ • ͻ͍ͯશମతʹϝϯςφϯείετ͕Լ͕Δํʹಇ͘ •
Ұํɺܾ·Γࣄ૿͑Δ͠ɺ੍͕શ͘ͳ͍༁Ͱແ͍ʢΠ ϯλϑΣʔεͷมߋʹ௧Έ͕͏ɺίʔυΛ࠶ઃܭ͢Δ͜ ͱͰͷҭίετൃੜ͢Δʣ
৫ͷٕज़ܧঝͷ • ఆظతʹϦΞʔΩςΫτɾϦϑΝΫλϦϯά Λߦ͏͜ͱ͕ίʔυͷϒϥοΫϘοΫεԽΛ ͙͜ͱʹͳΔ • ͻ͍ٕͯज़ͷঝʹͭͳ͕Δ
৫ͷٕज़ܧঝͷ • ίʔυͷΦʔφʔγοϓ͕ॏཁ • ࣗͷίʔυͰ͋Δɺࣗͷ͜ͱͰ͋Δͱ͍͏ ҙࣝ • ʮ࡞Δ͚ͩ࡞ͬͯޙଞਓʹͤΔʯͱ͍͏Ϛ ΠϯυͰൃల͠ͳ͍ •
ࣗͷͷͩͱ͍͏ҙࣝΛ࣋ͭ
৫ͷٕज़ܧঝͷ • ࣜભٶͱ͍͏ߟ͑ํ • ࣜʢఆظతʹʣભٶʢ৽఼͍ࣾ͠ΛΓɺޚਆମΛભ͢ʣ • ۩ମతʹ20ʹҰඞͣߦ͏ɻભٶʹΑΔࣄۀඅ2013Ͱ550ԯԁ • ࣜભٶࣗମਖ਼ٶͷҠಈʢϝΠϯϞδϡʔϧͷҠ͠ସ͑ʣ͕ऴΘͬͨ ޙɺผٶͷҠಈʢαϒϞδϡʔϧͷೖΕସ͑ʣ͕͋Δɻ
• ͜ͷؒɺ2ؒ160໊ͷٕೳऀͷޏ༻͕ଓ͘ɻผٶͷભٶऴྃޙɺएख ٕೳ༏लऀ30໊΄ͲΛਆٶͷৗۈ৬һͱͯ͢͠ɻ • ࠃަ௨লͷίϥϜʮࣜભٶʹݟΔٕज़ܧঝͱٕज़ऀ֬อ https://www.mlit.go.jp/hakusyo/mlit/h25/hakusho/h26/html/ n1233c20.htmlʯΑΓ
৫ͷٕज़ܧঝͷ • ࣜભٶͰఆظతʹϦΞʔΩςΫτΛߦ͏͜ͱͰɺ ٕज़ऀͷҭͱΦʔφʔγοϓͷ֬อΛߦ͍ͬͯΔ • γεςϜͷϦΞʔΩςΫτ͕͜͜ૂ͍Ͱ͋Δࣄ͕ଟ ͍ • ୯७ʹظతͳ࣭վળ͕త͚ͩͩͱ͢Δͱظͷ අ༻ରޮՌͷ͚ͩʹͳͬͯ͠·͏͕ɺ͜͜ΛΘ͔ͬ
ͯ͘Ε͍ͯΔਓ͕ݱΛޙԡͯ͘͠͠ΕΔͱॿ͔Δ
ϑϩϯτΤϯυ ϦΞʔΩςΫτ
ϑϩϯτΤϯυϦΞʔΩςΫτ • όοΫΤϯυͱϑϩϯτΤϯυΛΓ͚Δ ͱ͜Ζ͔Βελʔτ • ͜ΕϨΨγʔιϑτΣΞվળΨΠυʹ ࡌͬͯΔํ๏ • ͦͷޙͲ͏͢Δͱྑ͍ͷ͔
ϑϩϯτΤϯυϦΞʔΩςΫτ • Α͋͘Δύλʔϯ • ಛఆͷը໘͚ܾͩΊ͔ͯͦ͜ΒऔΓΉʢZOZO͕͜ͷύ λʔϯɺτοϓϖʔδ͔Βมߋ͢Δʣ • ͬͱίϯϙʔωϯτΛׂͯ͠ڞ௨ͷίϯϙʔωϯτʹ Γग़͢ͱ͜Ζ͔Β࢝ΊΔʢύʔπΛ·ͣ࠷ॳʹ࡞ͬͯ͠· ͍ɺ͔ͦ͜ΒΈ্͍͛ͯ͘ʣ
• Ұؾʹϒϧυʔβʔ࡞ઓʢΧοͱͳͬͯશ෦ Next.js ͰϦϥΠ τ͠·ͨ͠Έ͍ͨͳʣ
ಛఆͷը໘ίϯϙʔωϯτ͚ܾͩ Ί͔ͯͦ͜Βখ࢝͘͞ΊΔύλʔϯ • ࣮Ұ൪ଟ͍͔ • ଟ͘ͷػೳ͕͋ͬͯɺશ෦Λஔ͖͑Δͷ͕͠ ͘ɺঃʑʹஔ͖͑Δ͔͠ํ๏͕ͳ͍࣌ʹΔύ λʔϯ • ͍͖ͳΓϏοάϦϥΠτ͠Α͏ͱ͢Δͱࣦഊ͕͠
ͪͳͷͰɺطଘͷػೳՃΛ͠ͳ͕Β৽نϦΞʔ ΩςΫτΛซ༻͢Δ࣌ʹߦ͏
ͬͱίϯϙʔωϯτΛׂͯ͠ɺڞ௨ ύʔπΛ࡞Δͱ͜Ζ͔Β࢝Ίͯޙ͔Βঃʑ ʹڞ௨ύʔπʹدͤͯྑ͍ͯ͘͘͠ • ϘτϜΞοϓʹڞ௨ͷίϯϙʔωϯτ͔Β࣮ࢪ͢ΔΞ ϓϩʔν • ϨΠϠΛػೳ࣠Ͱׂ࣮ͯ͠ࢪ͢Δͷ͕̍ͭͷύλʔ ϯͩͱ͢Δͱɺ෦ͷಛੑͰׂ࣮ͯ͠ࢪ͢Δํ๏ •
౷Ұ͞Εͨίϯϙʔωϯτ͕ͪΌΜͱΑ͘Ͱ͖ͨͷ Ͱ͋Ε߹ੑ͑ΒΕΔ͠ɺ͏·͍͚͘ύʔπ ͷ࠶ར༻ੑ͕ߴ·Γੜ࢈ੑ্͕Δ
ͬͱίϯϙʔωϯτΛׂͯ͠ɺڞ௨ ύʔπΛ࡞Δͱ͜Ζ͔Β࢝Ίͯޙ͔Βঃʑ ʹڞ௨ύʔπʹدͤͯྑ͍ͯ͘͘͠ • ҰํͰڞ௨ίϯϙʔωϯτઃܭ͕͍͠ɻ • ޙʹ৮ΕΔ͕ɺϏοάϦϥΠτʹͳΓ͕ͪ • ͜ͷํ๏Ͱ͏·͍͘͘ύλʔϯ͋·Γݟͨ͜ ͱ͕ͳ͍
• ׂͷํ͕ஞ࣍తʹͳΒͣɺൈຊతͳׂʹ ͳΔࣄ͕͋Δ
Ұؾʹϒϧυʔβʔ࡞ઓ • Χοͱͳͬͯશ෦ͬͱ͖·ͨ͠ • Զʹ1ि͍ؒͩ͘͞ɻຊͷϦΞʔΩςΫτΛ ͓ݟͤ͠·͢Αύλʔϯ • ظతʹऴΘΔ͠ɺ෦࣭͕ؾʹͳΔ͕ɺ ϨϏϡʔ͕Ͱ͖ΔͳΒ࠷ߴ
Ұؾʹϒϧυʔβʔ࡞ઓ • ͦΜͳʹ͘ͳ͍ • ݸਓͷྗྔʹґଘͯ͠͠·͏ • ٕͦͦज़ͷܧঝΛ͍ͨ͠ͷʹɺ݁ہগͷ ਓʹ͔͠ܧঝ͞Εͳ͍ • ͨͩظతʹऴΘΒͤΔ͜ͱ͕Ͱ͖ͯɺ͕Ұ
ؾʹਐΉ
݁ہϦΞʔΩςΫτͷϑϩϯτ ΤϯυͰΔํ๏ͬͯ • ಛఆͷը໘ɾػೳɾίϯϙʔωϯτΛܾΊͯϦΞʔ ΩςΫτͯ͠ɺஞ࣍తʹม͍͑ͯ͘ํ๏͔͋͠· ΓϫʔΫͨ͠ͷΛݟͳ͍ • ϏοάϦϥΠτʹͳΒͳ͍Α͏ʹ͠ͳ͍ͱ͍͚ͳ ͍ •
ݸਓͷྗྔͰୡͰ͖Εྑ͍͕ɺ߹Αͦ͘͏ ͍͏ύϫʔͷ͋Δਓ͕͍ͳ͍͜ͱଟ͍
ϦΞʔΩςΫτ Ξϯνύλʔϯू
ϦΞʔΩςΫτΞϯνύλʔϯ ू • पลͷٕज़͔ͬΓͬͪΌ͏ύλʔϯ • eslint, prettier, pnpm, yarn, vite,
vitest, ͜͏͍͏πʔ ϧΛͲ͏͢Δ͔͔ΓΜͰલʹਐΜͰͳ͍ύλʔϯ • ඪ४ͷղ๏Έ͍ͨͳͷΛ͍ٻΊ͗ͯ͢Δ • ਖ਼ղͳΜͯແ͍ɺ·ͣʹਐΊͨΒͦΕ͕ਖ਼ղ • ޙ͔ΒͳΜͱͰͳͬͨΓ͢Δ
ϦΞʔΩςΫτΞϯνύλʔϯ ू • ·ͩݟ͵ແݶͷকདྷʹࢥ͍Λͤͯ͠·͏ύλʔϯ • ͜Μͳ͜ͱ͍͍ͳ • Ͱ͖ͨΒ͍͍ͳ • ͋Μͳػೳ͜Μͳίϯϙʔωϯτ͍ͬͺ͍͋Δ͚Ͳ
• ਐ·ͳ͍ʂʂʂ • શ෦Λ·Δͬͱ࠷ॳ͔ΒΑ͘͢Δ͜ͱͰ͖ͳ͍ • ͪΐͬͱͣͭͪΐͬͱͣͭܧଓతʹΑ͘͢Δ͜ͱ͔͠Ͱ͖ͳ͍
ϦΞʔΩςΫτΞϯνύλʔϯ ू • طଘػೳͷΤϯϋϯεΛετοϓͤͯ͞ϦΞʔΩςΫτ༏ઌͪ͠Ό͏ύλʔ ϯ • γϯϓϧʹαʔϏεͷػೳՃ͕ࢭ·Δ • جຊࣹܸͭͭ͠લਐ •
ελʔτΞοϓͱ͔ͩͱ྆ํΒͳ͍ͱ͍͚ͳ͍ͷ͕ਏ͍ͱ͜Ζ • ܦӦஅͰϦΞʔΩςΫτ༏ઌ͢ΔͳΒྑ͍͕ɺΤϯϋϯε͠ͳ͕Β Δͷ͕Ұൠత • ػೳը໘ׂ͕͞ΕͯͨΒ͚ͩ͜͜ػೳՃ͠ͳ͍Ͱ΄͍͠ͱ͍͏ ͷݴ͍͍͢
·ͱΊ
·ͱΊ • ϦΞʔΩςΫτͱ࠶ઃܭͷ͜ͱ • ϦΞʔΩςΫτΛΔҙຯ্࣭ɺੜ࢈ੑվળ͚ͩͰͳ͍ • ٕज़ͷܧঝͱίʔυͷΦʔφʔγοϓΛ࣋ͭ͜ͱʢࣜભٶʣ • ϦΞʔΩςΫτΛΔࡍείʔϓΛௐ͢Δ͜ͱ •
ͪΖΜҰؾʹͰ͖ΔͳΒͦΕͰྑ͍͕ɺݸਓʹґଘ͢ΔͷͰؾ Λ͚ͭΔ͜ͱ • Ξϯνύλʔϯ͍͔ͭ͋͘Δɺࣗͨͪʹͯ·ͬͯͳ͍͔Λ֬ ೝ͍ͨ͠