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
Webアプリケーションのアーキテクチャパターンから読み解くNext.js
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
pvcresin
November 06, 2020
Programming
450
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Webアプリケーションのアーキテクチャパターンから読み解くNext.js
Eight Engineer Meetup #1
pvcresin
November 06, 2020
More Decks by pvcresin
See All by pvcresin
関係性から理解する"同一性"の型用語たち
pvcresin
2
690
リセットCSSを1行消したらアクセシビリティが向上した話
pvcresin
4
570
Reduxモダナイズ 〜コードのモダン化を通して、将来のライブラリ移行に備える〜
pvcresin
2
950
text-box-trim について 1 分で
pvcresin
0
160
Web IDEの進化とそれを支える技術
pvcresin
0
140
ステップアップOSSコントリビュート
pvcresin
0
510
Eight WebフロントエンドのDX向上に関する取り組み
pvcresin
0
210
TS 未経験者が 社内向け JS ライブラリを TS に置き換えている話
pvcresin
0
430
React はじめの一歩
pvcresin
1
280
Other Decks in Programming
See All in Programming
AIエージェントで 変わるAndroid開発環境
takahirom
1
450
エンジニア向け会社紹介/Findy Company Profile
findyinc
6
360k
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
250
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
160
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
200
PHPだって関数型したい 〜できること、できないこと〜 / fp-in-php
jsoizo
0
160
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
140
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
360
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
200
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4.2k
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1k
コーディングルールの鮮度を保ちたい for SRE NEXT 2026 / keep-fresh-go-internal-conventions-sre-next-2026
handlename
0
120
Featured
See All Featured
Google's AI Overviews - The New Search
badams
0
1.1k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
180
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
640
My Coaching Mixtape
mlcsv
0
170
Mobile First: as difficult as doing things right
swwweet
225
10k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Fireside Chat
paigeccino
42
4k
First, design no harm
axbom
PRO
2
1.2k
How to train your dragon (web standard)
notwaldorf
97
6.7k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
220
Transcript
Webアプリケーションの アーキテクチャパターンから読み解くNext.js @pvcresin 2020-11-06 Eight Engineer Meetup #1
鳥山 らいか / Raika Toriyama Sansan 株式会社 > Eight 事業部
> Eight Career 部 > エンジニア (新卒 2 年目) • @pvcresin • 好きなこと:散歩・お笑い・断捨離 • 好きな言語:TypeScript, Kotlin, (Rust)
• Web アプリケーションアーキテクチャのパターンを簡単に 振り返りつつ、Next.js の良さについて考える • Next.js の大まかな思想を理解する 今日の話
• Classic SSR • SPA • BFF • SSR •
SSG • ISR • おまけ Contents
• サーバサイドフレームワーク + テンプレートエンジン • リクエストに応じて HTML を生成して返す デメリット •
毎回画面更新 Classic SSR (Server Side Rendering) SSR Server Client Request Request
• CSR (Client Side Rendering) + Ajax • サーバから返される空の HTML
をもとに、 JS でルーティング・UI 構築・通信を行う • 初期表示以降、必要なデータだけを API から取得するため 画面遷移が高速 • React などの View 用コンポーネントライブラリの台頭 SPA (Single Page Application) Client 初回 Ajax Empty CSR JSON API Server
デメリット • アプリケーションが複雑になるにつれて JS のコードも肥大化 • 完璧なコンテンツが 表示されるまでの時間が長い • スペックが劣るデバイスでは
操作性を損なう可能性 がある • (SEO ?) SPA (Single Page Application) API Server Client 初回 Ajax CSR JSON Empty
• フロントエンドのためのバックエンド(サーバ) • バックエンドの API サーバ化・マイクロサービス化の潮流 • UI 構築 /
Data 操作 の関心の分離 • 役割 ◦ API Gateway ◦ Session 管理 ◦ SSR(後述) BFF (Backends For Frontends) BFF Client micro service API Server micro service micro service Front-end Back-end
• SPA においてクライアントで行っていた UI 構築ロジックを BFF側 (Node.js) でも利用 • 初回アクセス時にサーバから完璧なコンテンツが
表示された HTML が返される • View 用ライブラリ ≒ テンプレートエンジン SSR (Server Side Rendering) SSR BFF Client 初回
• 多くの場合、「初期表示を SSR + その後は SPA」 • 初期表示までの時間短縮・ページ遷移の高速化 • Next.js
初期の思想 デメリット • リクエストを受けてから HTML を生成するので マシンリソースを消費 する SSR BFF Client SSR (Server Side Rendering) CSR 初回 Ajax JSON Next.js
• ビルド時に全ての HTML ファイルを生成 • ファイルを CDN から返すためレスポンスが高速 • 更新頻度の低い、ブログ・ドキュメント等に向く
• Next.js も途中から対応 デメリット • 全ての HTML ファイルを再生成・デプロイし直す必要 = 時間がかかる SSG (Static Site Generation) CDN Client Server Deploy SSG
• 従来は SSG か SSR のプロジェクトのどちらか一方を選択する必要があった • ページごとに SSG /
SSR を選べるように (Next.js v9.3~) • SSR (同期的) ➡ SSG (非同期的) に SSG + SSR Hybrid
• Next.js v9.5~ • 初回アクセス ◦ 初めて HTML を生成 •
再度アクセス ◦ キャッシュされた HTML を返しつつ、 裏で再生成(Stale-While−Revalidate) • 全ての HTML を生成する必要がないため、ビルド時間が短縮 ISR (Incremental Static Regeneration) CDN Client Server SSG 初回 2回目
おまけ
• 初回リクエスト時に 画像(+ の表示)を最適化してくれるコンポーネント (Next.js v10~) ◦ 元画像より小さいサイズの画像を生成して返却 ◦ 最適な画像フォーマットに自動変換
(WebP 等) • 必要なときに必要な分だけ処理 • (CDN の役割な気も...) next / image
• Next.js はデメリットを少しずつ乗り越えながら進化している • 昨今のフロントエンドのカバー範囲の増加は UX 向上を追求した結果 • パフォーマンス向上のためにはリクエストをサーバまで到達させない まとめ