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
Next.js を選定した ZOZOTOWN のフロントエンドリプレイス、その全体像 / zo...
Search
yuya takei
June 08, 2023
Technology
3.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Next.js を選定した ZOZOTOWN のフロントエンドリプレイス、その全体像 / zozotown frontend replacement project
yuya takei
June 08, 2023
More Decks by yuya takei
See All by yuya takei
TypeScript AST を活用した 設計差分抽出の紹介 / Introduction to Design Difference Extraction Using TypeScript ASTあ
takewell
0
200
ZOZOTOWNリプレイスにおけるWebフロントエンドのこれから / The future of web frontend in ZOZOTOWN replacement
takewell
0
930
コンポーネント化とHeadlessCMSを用いた ECプロモーションの効率化
takewell
0
2.1k
Other Decks in Technology
See All in Technology
日経電子版を支えていく Kasane Design System/fec_fukuoka
nikkei_engineer_recruiting
0
990
Oracle Cloud Infrastructure IaaS 新機能アップデート 2026/6 - 2026/8
oracle4engineer
PRO
0
180
Sigmaユーザーのための有用リソース一挙公開 & Sigmaで使えるMCP #sigma_ucj /useful-resources-for-sigma-computing-users-and-mcps-with-sigma
shinyaa31
0
200
DEFCON_CHV_CTF_Write-up.pdf
bata_24
0
140
ASTを使って影響範囲を特定する
nealle
0
180
2026_devsumi_ozono.pdf
o3
3
420
20260912_スクラムにジェネラリストは必要か
ryugen04
0
380
WAF 運用改善の承認サイクル/SRE_BizReach_MIXI_1
visional_engineering_and_design
2
600
OpenTelemetry eBPF Instrumentationの舞台裏 / Behind the Scenes of OpenTelemetry eBPF Instrumentation
ymotongpoo
4
1.2k
安心して変更できるWebフロントエンドの作り方
pirosikick
4
1.7k
Claude Code本って、 読む必要あるの?
oikon48
2
420
登壇の自信を奪う3匹のオバケ / 3 Ghosts That Rob You of Your Confidence in Public Speaking
pauli
3
290
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
331
22k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
320
Balancing Empowerment & Direction
lara
6
1.3k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
370
4 Signs Your Business is Dying
shpigford
187
23k
Into the Great Unknown - MozCon
thekraken
41
2.7k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Documentation Writing (for coders)
carmenintech
77
5.5k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Transcript
Next.js を選定した ZOZOTOWN のフロント エンドリプレイス、 その全体像 株式会社ZOZO ZOZOTOWN開発本部 武井
勇也 Copyright © ZOZO, Inc. 1
© ZOZO, Inc. 2 株式会社ZOZO ZOZOTOWN開発本部 ZOZOWEB部 リプレイスバックエンドブロック 武井 勇也
2020年4月 新卒入社 ZOZOTOWN 開発本部に配属 2021年10月 フロントエンドリプレイスを担当開始 2023年4月 リプレイスバックエンドチーム異動 ZOZOTOWNのWebのリプレイスを担当 Twitter : @takewell_ Zenn : @takewell
© ZOZO, Inc. 目次 • Next.js でのリプレイスに至った経緯 • フロントエンドリプレイス •
Next.js をプロダクション投入するためのレンダリング • 振り返り • 今後について • まとめ 3
© ZOZO, Inc. 4 Next.js でのリプレイスに至った経緯
© ZOZO, Inc. リプレイス開始前 5 • 一つのアプリケーションにすべての責務を集 約したモノリシックな構成 • Classic
ASP/VBScriptで実現できない機能 は独自ライブラリを作成し対応 • スケールに成功し日本最大級のファッション 通販サイトとして成長 ※ 説明のため簡略化しています
© ZOZO, Inc. さらなる成長のための課題 6 • 技術スタックが時代的に一般的ではなくなってきているため • クラウド化が困難 •
OSSやSaaSのSDK導入が困難 • 人材採用が困難 • モノリシックなため • 責務が集中し、ロジックが密結合なため変更コストが高い • 開発組織のスケールが困難
© ZOZO, Inc. リプレイスの目的 7 これを達成できる組織にする
© ZOZO, Inc. 8 柔軟なシステム 開発生産性 技術のモダン化 採用強化 • セールなどの高負荷時
にスケール可能 • 技術情報のアウト プットによるプレ ゼンス向上 • レガシー技術による 独自実装の減少 • 汎用ミドルウェア、 SaaSを利用可能 • 並行開発 • リリースの自動化 リプレイスの効果
© ZOZO, Inc. フロントエンドリプレイス前の構成 9 ※ 説明のため簡略化しています • 達成 •
ビジネスロジックをマイクロサービスに移譲 • クラウド化 • 人材採用の加速 • インフラ基盤のベースを構築 • 未着手 • Webサーバーのリプレイス
© ZOZO, Inc. 10 フロントエンドリプレイス
© ZOZO, Inc. ホーム画面のリプレイスをフロントエンドリプレイス Phase1 と設定 11 Phase1 の狙い •
新フレームワークの導入 • インフラ基盤を構築する ホーム画面から始めた理由 • ホーム画面で利用しているAPIは、大部分が新BFF(Backend For Frontend) API から提供されており、レガシーシステムへの依存が比較的少ない • アクセス数や機能が多く、開発や運用のナレッジを蓄積しやすい • サービスの象徴的ページであり、開発のモチベーションが湧きやすい
© ZOZO, Inc. 新フレームワークは Next.js を選定 12 選定理由 • Reactでの開発をwebpackの細かい設定なしに始められる
• ページごとの SSR/SG などのレンダリング手法を柔軟に切り替えることができる • ルーティングとビルドコード分割の提供している • 数々のパフォーマンス最適化など新機能が毎年リリースされており、アクティブに開発され ているため将来性も期待できる 開発生産性◎ パフォーマンス◎ 人材採用のポテンシャル◎
© ZOZO, Inc. フロントエンドリプレイス後のシステム構成 13 • (1) ホーム画面のパスをリプレイス後のシステムへ、ホーム画面以外のパスは既存 システムへリクエストをルーティング •
(2) リプレイス後のシステムと既存オンプレミスのIISサーバーとセッションデータ共有 や、既存システムとの通信も可能にしている
© ZOZO, Inc. 14 Next.js をプロダクション 投入するためのレンダリング
© ZOZO, Inc. レンダリング 15 • Next.js には様々なレンダリング手法があるが、SSRするか否かがポイント • SSR
が必要な理由 • メタタグに動的データが必要 • ファーストビューに表示されるUIはローディングなどを挟まず表示したい • セールやキャンペーンの開始や終了のタイミングに合わせて時限式に切り替わるUIを 提供したい • SEO は極めて重要、懸念はないようにしたい
© ZOZO, Inc. レンダリングを選ぶためのフローチャート 16 • SEO効果に影響するコンテンツ • メタタグ •
ファーストビューに表示される • 検索エンジンにクローリングして欲しいものか • キャッシュ可能なコンテンツ • ユーザーによって変化しない • 時間で動的に切り替わる
© ZOZO, Inc. SSR の問題点 17 • アプリケーションを監視するエンジニアのオンコール体制の構築が必要 • サーバーの費用的なコストが生じる
• Node.js はシングルスレッド故に SSR のようなCPUバウンドな処理を同時処理された場 合、イベントループがブロックされ、性能が低下する可能性がある ZOZOTOWN はセールのタイミングなどリクエストがスパイクすることが あります。 快適に買い物してもらうためには、この高負荷に耐えられる必要があります
© ZOZO, Inc. SSR の問題点に対する対策 18 • リクエスト(req/sec) の見積もりと、負荷性能試験の実施 •
CDN を用いたキャッシュ • SEOに無関係な場合、CSR を積極的に利用していく • Node.js のマルチプロセス化によるコスト最適化
© ZOZO, Inc. 19 振り返り
© ZOZO, Inc. 必要となるスキル 20 ハードスキル • マークアップ : CSS,
アニメーション, アクセシビリティー • FEアプリケーション : ステート管理, レンダリング設計, ミドルウェアのノウハウ • BFFレイヤー : Node.js SSR/SG などの設計 マイクロサービスAPIのノウハウ • FE インフラ : Docker, GitHub Actions, CDN, 開発環境基盤のノウハウ • 既存システム : VBScript, 独自ミドルウェアのノウハウ ソフトスキル • 未知の知識を幅広く・早く吸収できる探索学習力 • 他部署と共通認識を形成できるコミュニケーション力・推進力 • 現場特性から最適なソリューションを判断・提案できる力
© ZOZO, Inc. よかった取り組み 21 • 他プロジェクトの兼任をやめてリプレイス専属FEチームを発足させた • やらないことを決めた •
ビックバンリリースはしない • 大きい機能改修はしない • レスポンシブサイトにはしない • 技術顧問古川さんに定期的に相談し、客観的に設計レビューをいただく
© ZOZO, Inc. 22 今後について
© ZOZO, Inc. 23 ~2021 Webフロントエンド リプレイス マイクロサービス 2022 2023
2024 HOME 会員基盤Phase1 カートリプレイス Phase2 お気に入り 会員基盤Phase3 検索結果 商品詳細 会員基盤Phase2 カート決済面リプレイス 1Q 2Q 3Q 4Q 1Q 2Q 3Q 4Q 1Q 2Q 3Q 4Q 現行システムの 完全削除に向けた後始末 商品API拡充 会員登録情報 カート決済面 一覧系、その他 検索結果残対応 注文リプレイス 注文履歴リプレイス 商品基盤構築 2025 1Q 2Q 3Q 注文リプレイス Phase1.0 注文処理の非同期化 事前調査 事前調査 注文履歴 検索系APIリプレイス 検索バッチリプレイス サイトリプレイス ロードマップ 遂行 フロントエンドリプレイスPhase1 完了 未着手 進行中
© ZOZO, Inc. Core Web Vitals の向上 24 Desktop Mobile
改善しているが、劇的な変化には至らず...! 伸び代まだまだあります! Before After
© ZOZO, Inc. その他やる可能性のあるもの 25 • パフォーマンス改善 • アクセシビリティー対応強化 •
デザインシステム構築 • マイクロフロントエンドな設計
© ZOZO, Inc. まとめ 26 • ホーム画面のNext.js化をフロントエンドリプレイス Phase1 というマイルストーンに設定した •
Next.js 化のプロダクション投入するためにはレンダリング設計が肝 • システムリプレイスは多岐にわたるスキルが必要となる。加えて、心構えやそれに至るまでのステップも 重要
None