ReactメインのチームにNext.jsを導入した道のり
by
井内 将俊
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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 ご静聴ありがとうございました!