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