ReactメインのチームにNext.jsを導入した道のり
by
井内 将俊
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
© DMM Reactメインのチームに Next.jsを導入した道のり ペンギン丸 (井内 将俊)
Slide 2
Slide 2 text
© DMM 自己紹介 井内将俊(いうち まさとし) X:@pengin_engineer (ペンギン丸) 合同会社DMM.com ( 23新卒 ) バーチャルライブ配信サービス → フロントエンド 開発 2
Slide 3
Slide 3 text
© DMM 発表の主題 3 - 新規開発プロダクトの技術選定事例の紹介 - ReactメインでNext.js導入事例のないチーム - Reactで大きな課題は感じていない - 話す分野 - ReactとNext.js - Next.jsのAppRouterとPagesRouter - (Reactの状態管理ライブラリ)
Slide 4
Slide 4 text
© DMM プロダクト構成のざっくり紹介 4 モノレポ React フロント PHP フロント 配信者 視聴者
Slide 5
Slide 5 text
© DMM プロダクト構成のざっくり紹介 5 モノレポ React フロント PHP フロント 配信者 視聴者
Slide 6
Slide 6 text
© DMM プロダクト構成のざっくり紹介 6 モノレポ React フロント PHP フロント 配信者 視聴者 サブ機能 新規リポジトリ NEW
Slide 7
Slide 7 text
© DMM 前提となるシチュエーション 7 - チーム全体でフロントエンドはReact - 5年ほど前のリプレースでReactが導入されそのまま - 視聴者が使うわけではなく、配信者が使う - SEOは不要、パフォーマンスの優先度もそれほど高くない - 長期的に安定稼働させていきたい - 新規サブ機能も他と同に素のReact実装を想定
Slide 8
Slide 8 text
© DMM React前提からNext.jsを採用するメリット 8 - 新しい技術に興味のあるエンジニア採用に強くなる - 新卒研修でも使用しているNext.jsを採用しイメージ向上 - 内蔵された最適化機能 - ルーティング、プリフェッチ、画像最適化などが デフォルトでされており、設定が楽 - パフォーマンス向上が見込めるSSRが活用できる
Slide 9
Slide 9 text
© DMM React前提からNext.jsを採用する課題 9 - 開発メンバーの学習コスト - SSRを実現するためのNode.jsサーバーの運用・保守 - インフラ構成が大きく変わる
Slide 10
Slide 10 text
© DMM React前提からNext.jsを採用する課題 10 - 開発メンバーの学習コスト - SSRを実現するためのNode.jsサーバーの運用・保守 - インフラ構成が大きく変わる メリットがコストを 上回ることを説得する必要がある🤔
Slide 11
Slide 11 text
© DMM SSRを行うメリット 11 - SEOの改善、共有時の動的OGP - パフォーマンス改善 - 初期ページのロード時間の短縮 - 事前データ取得
Slide 12
Slide 12 text
© DMM SSRを行うメリット 12 - SEOの改善、共有時の動的OGP - パフォーマンス改善 - 初期ページのロード時間の短縮 - 事前データ取得 現状では 特段必要ない
Slide 13
Slide 13 text
© DMM SSRを行うメリット 13 - SEOの改善、共有時の動的OGP - パフォーマンス改善 - 初期ページのロード時間の短縮 - 事前データ取得 恩恵よりもコストの方が大きくなることがある 現状では 特段必要ない
Slide 14
Slide 14 text
© DMM 動的レンダリングを行わないNext.js 14 - 現状Reactで問題なく稼働している - SSRによる恩恵よりも、Node.jsサーバー導入コストが勝る
Slide 15
Slide 15 text
© DMM 動的レンダリングを行わないNext.js 15 - 現状Reactで問題なく稼働している - SSRによる恩恵よりも、Node.jsサーバー導入コストが勝る 静的レンダリングのみのNext.jsであれば 導入できるのでは?🤔
Slide 16
Slide 16 text
© DMM 動的レンダリングを行わないNext.js 16 - next.config.jsにoutput:”export”と指定すれば、設定可能 - SSG - ルーティング等の最適化設定 SSRができなくても以下の恩恵は得られる
Slide 17
Slide 17 text
© DMM Next.js導入のメリット・デメリット 17 メリット - エンジニア採用に強くなる - SSRが活用できる - 自動最適化 デメリット - 開発メンバーの学習コスト - SSR実現用のNode.js サーバーの運用・保守
Slide 18
Slide 18 text
© DMM メリット - エンジニア採用に強くなる - SSRが活用できる - SSGのみ - 自動最適化 Next.js導入のメリット・デメリット 18 デメリット - 開発メンバーの学習コスト - SSR実現用のNode.js サーバーの運用・保守
Slide 19
Slide 19 text
© DMM Next.js導入のメリット・デメリット 19 メリット - エンジニア採用に強くなる - SSRが活用できる - SSGのみ - 自動最適化 デメリット - 開発メンバーの学習コスト - SSR実現用のNode.js サーバーの運用・保守
Slide 20
Slide 20 text
© DMM Next.js導入のメリット・デメリット 20 メリット - エンジニア採用に強くなる - SSRが活用できる - SSGのみ - 自動最適化 デメリット - 開発メンバーの学習コスト - SSR実現用のNode.js サーバーの運用・保守 導入してもしなくても 大差はない....
Slide 21
Slide 21 text
© DMM Next.jsを採用するメリット 21 引用:React公式ドキュメント
Slide 22
Slide 22 text
© DMM Next.jsを採用するメリット 22 引用:React公式ドキュメント
Slide 23
Slide 23 text
© DMM Next.js導入のメリット・デメリット 23 メリット - エンジニア採用に強くなる - SSRが活用できる - SSGのみ - 自動最適化 デメリット - 開発メンバーの学習コスト - SSR実現用のNode.js サーバーの運用・保守
Slide 24
Slide 24 text
© DMM Next.js導入のメリット・デメリット 24 メリット - エンジニア採用に強くなる - SSRが活用できる - SSGのみ - 自動最適化 - React公式が推奨 デメリット - 開発メンバーの学習コスト - SSR実現用のNode.js サーバーの運用・保守
Slide 25
Slide 25 text
© DMM Next.js導入のメリット・デメリット 25 メリット - エンジニア採用に強くなる - SSRが活用できる - SSGのみ - 自動最適化 - React公式が推奨 デメリット - 開発メンバーの学習コスト - SSR実現用のNode.js サーバーの運用・保守 →Next.js導入が決定!
Slide 26
Slide 26 text
© DMM Pages Router or App Router 26 - 静的レンダリングのみであれば、大きな違いは無い - 従来のPages Routerに詳しいメンバーがいるわけではない - 今後App Routerが主流になり、新規機能追加も見込める - 新機能の恩恵を受けたくなった時、AppRouterベースの方 が導入しやすい
Slide 27
Slide 27 text
© DMM Pages Router or App Router 27 - 静的レンダリングのみであれば、大きな違いは無い - 従来のPages Routerに詳しいメンバーがいるわけではない - 今後App Routerが主流になり、新規機能追加も見込める - 新機能の恩恵を受けたくなった時、AppRouterベースの方 が導入しやすい → App Routerベースで開発
Slide 28
Slide 28 text
© DMM まとめ 28 - Reactを前提としていたプロダクトにNode.jsサーバーを用いた 動的レンダリングを行うNext.js採用はハードルが高い - 一方、静的レンダリングのみのNext.jsであれば大きな障壁なく 導入することが可能 - React公式でもフレームワークの活用を推奨 - 新規開発での素のReact採用は減少すると思われる
Slide 29
Slide 29 text
© DMM おまけ:状態管理ライブラリはどうしよう...?
Slide 30
Slide 30 text
© DMM 状態管理ライブラリの技術選定 30 - チームでは長くReduxが使われている - 最近は Recoil, Jotai, Zustand 等が勢いがあると聞く
Slide 31
Slide 31 text
© DMM 状態管理ライブラリの技術選定 31 - チームでは長くReduxが使われている - 最近は Recoil, Jotai, Zustand 等が勢いがあると聞く - → なんと無く 脱Reduxしたい気がする...?
Slide 32
Slide 32 text
© DMM 状態管理ライブラリの技術選定 32 - チームでは長くReduxが使われている - 最近は Recoil, Jotai, Zustand 等が勢いがあると聞く → なんと無く 脱Reduxしたい気がする...? 乗り換え先の選択肢も多く Reduxのデメリットも言語化できない... →
Slide 33
Slide 33 text
© DMM 状態管理ライブラリの技術選定 33 - Jotai - Recoil - Redux - Zustand
Slide 34
Slide 34 text
© DMM 状態管理ライブラリの技術選定 34 - Jotai - Recoil - Redux - Zustand これまで使っていたReduxを引き続き使う
Slide 35
Slide 35 text
© DMM おわりに 35 - 乗り換える技術選定では、学習コストに見合うメリット の提示が必要 - 技術選定のタイミングになってから検証していては時間が足 りない - 常日頃からのキャッチアップが必要 - 先輩や同期に頼り、知見を聞かせてもらうことも大切
Slide 36
Slide 36 text
© DMM ご静聴ありがとうございました!