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
Yahoo!クイックマート管理画面でNext.js + static exportsを選んだ理由
Search
株式会社出前館
March 18, 2025
Technology
1
130
Yahoo!クイックマート管理画面でNext.js + static exportsを選んだ理由
Findy社主催
【Next.js特集】フロントエンド技術選定の裏側 〜直面する技術的課題とは?〜
での登壇資料です。
株式会社出前館
March 18, 2025
Tweet
Share
More Decks by 株式会社出前館
See All by 株式会社出前館
出前館アプリ進化論 アーキテクチャと組織のリアルな変⾰の舞台裏
demaecan
0
400
Flutterにしてよかった?出前館アプリを2年運用して気づいたことを全部話します
demaecan
1
800
Boxを“使われる場”にする統制と自動化の仕組み
demaecan
1
330
生成AI導入における「短期ROIを超えた」共存戦略
demaecan
0
66
Okta Identity Governanceで実現する最小権限の原則
demaecan
1
370
incident_commander_demaecan__1_.pdf
demaecan
0
290
ClickHouse Cloud をオブザーバビリティ基盤の候補に選んだ理由
demaecan
0
110
出前館の“裏エース!?”─TPM(Tech PM)が現場に安心をデリバリー!
demaecan
0
480
SpringBoot x TestContainerで実現するポータブル自動結合テスト
demaecan
0
340
Other Decks in Technology
See All in Technology
Introduction to Sansan Meishi Maker Development Engineer
sansan33
PRO
0
330
re:Invent2025 セッションレポ ~Spec-driven development with Kiro~
nrinetcom
PRO
2
170
モノタロウ x クリエーションラインで実現する チームトポロジーにおける プラットフォームチーム・ ストリームアラインドチームの 効果的なコラボレーション
creationline
0
440
Keynoteから見るAWSの頭の中
nrinetcom
PRO
1
160
戰略轉變:從建構 AI 代理人到發展可擴展的技能生態系統
appleboy
0
180
『君の名は』と聞く君の名は。 / Your name, you who asks for mine.
nttcom
1
150
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
3.6k
2025年の医用画像AI/AI×medical_imaging_in_2025_generated_by_AI
tdys13
0
310
製造業から学んだ「本質を守り現場に合わせるアジャイル実践」
kamitokusari
0
340
「リリースファースト」の実感を届けるには 〜停滞するチームに変化を起こすアプローチ〜 #RSGT2026
kintotechdev
0
590
AWS re:Invent 2025 を振り返る
kazzpapa3
2
110
ルネサンス開発者を育てる 1on1支援AIエージェント
yusukeshimizu
0
130
Featured
See All Featured
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
120
The #1 spot is gone: here's how to win anyway
tamaranovitovic
1
880
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
210
The Cult of Friendly URLs
andyhume
79
6.7k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.1k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
330
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
Evolving SEO for Evolving Search Engines
ryanjones
0
93
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
110
Navigating Weather and Climate Data
rabernat
0
65
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
120
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
2.8k
Transcript
Yahoo!ΫΠοΫϚʔτཧը໘ Ͱ Next.js + static exports ΛબΜͩཧ༝ ग़લؗגࣜձࣾ Յखן ࢤ࿕
Topics • ࣗݾհ • Yahoo!ΫΠοΫϚʔτͷհ • ͳͥ Yahoo!ΫΠοΫϚʔτཧը໘ Ͱ Next.js
+ static exports ΛબΜ ͩͷ͔ʁ
ࣗݾհ Յखן (ΧσΧϧ) ࢤ࿕ ॴଐ - LINE Ϡϑʔגࣜձࣾ - גࣜձࣾग़લؗʹग़த
ܦྺ - ~ 2021 WEB੍࡞ͷࣄ - 2021 LINE GrowthTechnology ೖࣾ (ϑϩ ϯτΤϯυΤϯδχΞ) - 2022͔Βग़લؗʹग़ ԭೄ͔ΒϑϧϦϞʔτͰࢀՃ
Yahoo!ΫΠοΫϚʔτͷհ
ίϯϏχεʔύʔͳͲͰൢച͞Ε͍ͯΔੜ৯ ༻Λจ で ͖Δ デ Ϧ バ Ϧʔαʔ ビ ε
Yahoo!γϣοϐϯάʹ͋Γ·͢ɻ ࡢͷ8݄ʹϦϦʔεͯ͠ରΤϦΞΛͪΌͪ͘Ό͘ͱ͍͍͛ͯͬͯΔ Yahoo!ΫΠοΫϚʔτ
Yahoo!ΫΠοΫϚʔτཧը໘ - ళฮͷཧ - ͷཧ - จใͷཧ Yahoo!ΫΠοΫϚʔτʹग़ళ͍ͯ͠ΔՃໍళͷཧऀε λοϑɺग़લؗଆͷΦϖϨʔλʔ͕ར༻͢Δཧπʔϧ ※ࠓճͷNext.jsಋೖࣄྫͰհ͢Δͷ͜ͷπʔϧ
ͳͥ Yahoo!ΫΠοΫϚʔτཧը໘ Next.js + static exports ΛબΜͩͷ͔ʁ
Yahoo!ΫΠοΫϚʔτཧը໘ͷ։ൃظؒ - 2023/11 νʔϜ্ཱͪ͛ɺٕज़બఆɺ։ൃج൫ͷߏங - 2024/01 ։ൃ։࢝ - 2024/08 ϦϦʔε
બఆ࣌ͷ݅ 1. ϦϦʔεඞୡ / λΠτͳεέδϡʔϧ 2. νʔϜͷೳྗɾঢ়گతʹαʔόʔͷอकආ͚͍ͨ 3. SEOߟྀෆཁ/ UX࠷༏ઌͰͳ͍
͔݅Βݟ͖͑ͯͨ͜ͱ 1. ϦϦʔεඞୡ / λΠτͳεέδϡʔϧ ֶशίετ্ཱ͓͕͑ͯͪ͞ΓΛૣ͍ͨ͘͠ 2. νʔϜͷೳྗɾঢ়گతʹαʔόʔͷอकආ͚͍ͨ ΫϥΠΞϯτ͕ϗεςΟϯάαʔόʔ͚ͩͰಈ͔ͤΔ 3.
SEOߟྀෆཁ/ UX࠷༏ઌͰͳ͍ SSR ෆཁ CSR Only Ͱ͍͍
ݕ౼ͨ͠ߏ - Next.js (pages router) + static exports - vite
+ react-router-dom બఆ࣌ظ 2023/11
Next.js + static exports vite + react-router-dom static exports Ͱ
Dynamic routes Λར༻͢Δʹ nginx ͳͲͰ rewrite ͕ඞཁ - /post/[id].tsx -> /post/[id].html ͕ੜ͞ΕΔ - /post/xxx -> /post/[id].html ʹ rewrite Next.jsͷݒ೦
Next.jsͷݒ೦ static exports Ͱ Dynamic routes Λར༻͢Δʹ nginx ͳͲͰ rewrite
͕ඞཁ - /post/[id].tsx -> /post/[id].html ͕ੜ͞ΕΔ - /post/xxx -> /post/[id].html ʹ rewrite Next.js + static exports vite + react-router-dom nginx Λ࣋ͭͷආ͚͍ͨ vite + react-router-dom Λࢼͦ͏
vite + react-router-dom Λࢼ͢ const router = createBrowserRouter({ path: "/about",
element: <About /> }) ίʔυʹϖʔδύεͱରԠ͢ΔίϯϙʔωϯτΛఆٛ͢Δ ※બఆ࣌ v16 ͷॻ͖ํ Next.js + static exports vite + react-router-dom ϧʔςΟϯάͲ͏ͬͯઃఆ͢Δͷʁ
vite + react-router-dom Λࢼ͢ const router = createBrowserRouter({ path: "about",
lazy: () => import("./routes/About"), }) Next.js + static exports vite + react-router-dom Code Splitting Ͳ͏Δͷʁ lazy ʹίϯϙʔωϯτΛ dynamic import ͢ΔؔΛ͢
ͬͺΓ Next.js ͕͍͍ͳ…
ͬͺΓ Next.js ͕͍͍… - react-router-dom ׳ΕΔ·Ͱ͔͔࣌ؒΓͦ͏ - ϝϯόʔશһ Next.js Ͱͷ
file-system based router ʹ׳Ε͍ͯΔ - Next.js ͳΒ Code splitting ͳͲϏϧυ࠷దԽΛࣗಈͰͯ͘͠ΕΔ Next.js + static exports vite + react-router-dom
ͰNext.jsʹݒ೦͕… - Dynamic routes Λར༻͢ΔͨΊʹ nginx ͳͲͰ rewrite ͢Δඞཁ͕͋Δ -
/post/xxx -> /post/[id].html ʹ rewrite Next.js + static exports vite + react-router-dom
- Dynamic routes Λར༻͢ΔͨΊʹ nginx ͳͲͰ rewrite ͢Δඞཁ͕͋Δ - Dynamic
routes Θͳ͍ - ύϥϝʔλʔΫΤϦύϥϝʔλʔͰ͍͍ͤ ͰNext.jsʹݒ೦͕… Next.js + static exports vite + react-router-dom
- Dynamic routes Λར༻͢ΔͨΊʹ nginx ͳͲͰ rewrite ͢Δඞཁ͕͋Δ - Dynamic
routes Θͳ͍ - ύϥϝʔλʔΫΤϦύϥϝʔλʔͰ͍͍ͤ - σϑΥϧτͩͱύε໊ͷhtml͕ੜ͞ΕΔͷͰͬͺΓ rewirte ͕ඞཁʁ - /about.tsx ΛϏϧυ͢Δͱ about.html ͕ੜ͞ΕΔ - /about ʹΞΫηε͢Δͱ 404 ʹͳΔ ͰNext.jsʹݒ೦͕… Next.js + static exports vite + react-router-dom
- Dynamic routes Λར༻͢ΔͨΊʹ nginx ͳͲͰ rewrite ͢Δඞཁ͕͋Δ - Dynamic
routes Θͳ͍ - ύϥϝʔλʔΫΤϦύϥϝʔλʔͰ͍͍ͤ - σϑΥϧτͩͱύε໊ͷhtml͕ੜ͞ΕΔͷͰͬͺΓ rewirte ͕ඞཁʁ - /about.tsx ΛϏϧυ͢Δͱ about.html ͕ੜ͞ΕΔ - /about ʹΞΫηε͢Δͱ 404 ʹͳΔ - trailingSlashɿ true Λઃఆͪ͠Ό͓͏ - index.html ͕ੜ͞ΕΔ /about.tsx → /about/index.html - ࣌ར༻Λఆ͍ͯͨࣾ͠ͷϗεςΟϯάઌͰ index.html ʹϑΥʔ ϧόοΫ͞ΕΔ༷ͩͬͨͷͰಛʹϧʔςΟϯάͳͲෆཁʹ ͰNext.jsʹݒ೦͕… Next.js + static exports vite + react-router-dom
·ͱΊ - ϓϩδΣΫτͷঢ়گνʔϜͷεΩϧͳͲલఏ͔݅ΒɺϥΠϒϥϦɾϑ ϨʔϜϫʔΫʹٻΊΔཁٻΛग़ͨ͠ - ཁٻ͕࣮ݱͰ͖ΔߏΛ2Ҋݕ౼ͨ͠ - νʔϜͷεΩϧʹϚον͢Δ Next.js ΛબΜͩ
- ཁ݅Λ࣮ݱ͢ΔͨΊʹ Next.js ͷ͍ํΛগͨ͠͠
։ൃ։࢝ɺϦϦʔε - બఆىҼͰͷΕͳ͘։ൃΛਐߦͰ͖ͨ - ༧ఆͨ͠ʹϦϦʔεͰ͖ͨ - ߇͑Ίͳ͍ํʹͳ͕ͬͨɺ݅ʹ͖߹͍νʔϜϓϩδΣΫτʹϑΟο τ͢Δબఆ͕Ͱ͖ͨͱࢥ͏
Yahoo!ΫΠοΫϚʔτཧը໘ͷݱࡏ - ϑΝʔετϦϦʔεͰམͱͨ͠ཁ݅ͷ։ൃத - ·ͩ·ͩΓͳ͍ػೳ͕ଟ͍ (ొɾߋ৽جຊ CSV ೖߘ…)
ग़લؗͷϑϩϯτΤϯυ - ϑϩϯτΤϯυΛͭϓϩμΫτ͕͍͔ͭ͘ - ग़લؗWEBɺ Ճໍళཧը໘ͳͲ - جຊReactͬͯ·͢ - ग़લؗWEBNext.js
+ BFF (GraphQL) - ৄ͘͠ΧδϡΞϧ໘ஊͰʂ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠