React フレームワークの 動向と選定基準
by
azukiazusa
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
React フレームワークの 動向と選定基準 azukiazusa
Slide 2
Slide 2 text
自己紹介 ● Web アプリケーションエンジニア ● Web フロントエンドが得意 ● https://azukiazusa.dev ● 趣味 ○ 読書 ○ 麻雀 ○ ポーカー azukiazusa
Slide 3
Slide 3 text
アジェンダ ● メジャーな React フレームワークの紹介 ● 技術選定時に考えるべきポイント ● 実際にどのような選択をしたのか ● まとめ
Slide 4
Slide 4 text
アジェンダ ● メジャーな React フレームワークの紹介 ● 技術選定時に考えるべきポイント ● 実際にどのような選択をしたのか ● まとめ
Slide 5
Slide 5 text
React プロジェクトに フレームワークは必要?
Slide 6
Slide 6 text
ほとんどのサイトやアプリケーションで 必要な機能の再発明を防ぐ ● ルーティング、データ取得、コード分割... ○ React は UI ライブラリである ● React の公式ドキュメントでもフレームワークを使うこ とが推奨されている https://ja.react.dev/learn/start-a-new-react-project
Slide 7
Slide 7 text
React で新しいプロジェクトを 始める場合を想定
Slide 8
Slide 8 text
フレームワークを使わない選択肢が 全く否定されるわけではない ● 既存プロジェクトに React を追加する ● 社内向けのツール
Slide 9
Slide 9 text
React フレームワークの紹介 ● Next.js(Pages Router) ● Next.js (App Router) ● Remix ● Remix(SPA モード) ● React + Vite(バンドラー) ● Gatsby ● Astro
Slide 10
Slide 10 text
Next.js(Pages Router) ● Next.js v13 以降で登場した App Router に対して Pages Router と呼ばれる ○ Pages Router が非推奨というわけではない ● ページごとに SSR・SSG・ISR の中からレンダリング方 式を選択できる
Slide 11
Slide 11 text
Pros ● 画面ごとのパフォーマン スの最適化 ● 枯れたフレームワークと 言える ●
などの様々 な最適化 ● 動的なページを必要とす る SPA には向いていな い ● ISR を採用する場合、イ ンフラが制限される Cons
Slide 12
Slide 12 text
Next.js(App Router) ● Server Components や Streaming、Server Actions の ような React の最新の機能をいち早く使える ○ React Canary: Meta 外での段階的な新機能導入 https://ja.react.dev/blog/2023/05/03/react-canaries ● よりよいユーザー体験を追求できる
Slide 13
Slide 13 text
Pros ● 最新の機能を利用でき、最も 高いユーザー体験を提供でき る ● デフォルトでリクエストの キャッシュ、重複排除機能が 備わっている ● コロケーションパターンを採 用しやすい ● 運用する難易度高い ● キャッシュの仕様が難解 ● undocument な挙動も 多く、ソースコードを読 み解く覚悟が必要 ● エコシステムが整ってい ない Cons
Slide 14
Slide 14 text
Remix ● 比較的新しめなフレームワーク ● レンダリング方式は SSR または SPA ● Web 標準の API に従うという設計哲学
Slide 15
Slide 15 text
Pros ● Web 標準の API を採用 しているため、学習コス トが比較的緩やか ● フィーチャーフラグによ るリリースの安定 ● Next.js(Pages Router)と比較して採 用事例はまだ多くない ● ISR やリクエストキャッ シュのような高度な機能 は提供されていない Cons
Slide 16
Slide 16 text
Remix(SPA モード) ● 最近 Stable になった ● React + React Router + Vite の延長のような使いごこち ● Remix の既存の API をほぼ利用できる
Slide 17
Slide 17 text
Pros ● インフラは静的ファイルの配 信サーバー ● SSR をしたくなったときに移 行しやすい ● ルーティング、コード分割な どフレームワークに求めれら れる機能が揃えってる ● ユーザー体験や SEO が 犠牲になる Cons
Slide 18
Slide 18 text
React + Vite ● フレームワークを採用しない選択肢 ● 現代ではバンドラとして Vite が採用されるのが主流 ● サーバーを使わない SPA アーキテクチャを採用する場合 選択肢に入ってくる
Slide 19
Slide 19 text
Pros ● サーバー運用コストや、 フレームワークの学習コ ストを抑えられる ● 既存のバックエンドと統 合しやすい ● ルーティングやデータ取 得のライブラリを統合す る作業を自分で行う必要 がある ○ 結局独自のフレーム ワーク作って学習コス トの問題が発生しがち Cons
Slide 20
Slide 20 text
Gatsby & Astro ● SSG に特化されたフレームワーク ● 静的なドキュメントサイトが主な用途 ● Gatsby は豊富なプラグインがあり、多くの設定ができる ● Astro は正確には React のフレームワークではなく、UI ライブラリの一部として React を使える
Slide 21
Slide 21 text
アジェンダ ● メジャーな React フレームワークの紹介 ● 技術選定時に考えるべきポイント ● 実際にどのような選択をしたのか ● まとめ
Slide 22
Slide 22 text
技術選定時に考えるべきポイント ● プロダクトの特性 ● プロジェクトの優先度 ● 開発メンバーのスキルセット ● 社内での採用事例
Slide 23
Slide 23 text
プロダクトの特性 ● EC サイト?社内システム?BtoB 向けの SaaS? ● EC サイトでは LCP スコアが収益に直結する ○ https://web.dev/case-studies/rakuten?hl=ja ○ パフォーマンスの最適化のためにコストを払える ● BtoB 向けの SaaS では App Router は too much になりがち ○ パフォーマンスを重視する優先度は下がる ○ 常に最新のデータを表示するため、キャッシュが全く不要
Slide 24
Slide 24 text
● フレームワークをリプレイスするような場合には、新規 の開発が止まってしまう恐れがある ○ どのくらいの期間なら開発を止めてもいいか? ■ コードの書き換えの作業時間 ■ メンバーへの教育コスト ○ フレームワークの新しい機能を採用すると、プロダク トやチームにとってどんなメリットがあるか? プロジェクトの優先度
Slide 25
Slide 25 text
● 専任のフロントエンドのエキスパートのみで構成されて いるチーム? ● メンバー全員がすべての領域を触っているチーム? ● 高度な機能を持つフレームワークを採用するにあたって 相応の教育コストがかかる 開発メンバーのスキルセット
Slide 26
Slide 26 text
● 社内の他のプロダクトですでに使われている? ○ 問題に直面した時に他チームの知見が使える ○ メンバーの増員が必要になった時、同じフレームワー クを採用していれば Join しやすい ● もしくは、社内で標準化されることを念頭に入れる 社内での採用事例
Slide 27
Slide 27 text
ある機能から享受できる利益と 発生するコストを天秤にかけて 考える
Slide 28
Slide 28 text
アジェンダ ● メジャーな React フレームワークの紹介 ● 技術選定時に考えるべきポイント ● 実際にどのような選択をしたのか ● まとめ
Slide 29
Slide 29 text
前提条件 プロダクトの特性 ● SaaS アプリケーション ● キャッシュは不可能 ● グラフの表示が主で、クライアント でデータを取得することが多い プロジェクトの優先度 ● 多くの工数を割けない 開発メンバーのスキルセット ● 開発メンバー全員がすべての領域 を触る 社内の採用事例 ● Next.js(Pages Router)が多い
Slide 30
Slide 30 text
React + Vite を採用 ● パフォーマンスは最優先事項ではない ○ 開発メンバーに対する教育コストを払うに値する材料ではない ● フレームワークのリプレイスに工数を割けない ○ 既存のバックエンドと統合しやすいのがメリット ● 社内のその他のプロダクトとは特性が異なるので、採用事例は重視 しなかった ● 技術選定をした当時 Remix SPA モードは Stable ではなかった
Slide 31
Slide 31 text
プロダクトマネージャー(意思決 定者)を説得できる材料があるか を考えて言語化する
Slide 32
Slide 32 text
意思決定をした際には 必ず文書化する
Slide 33
Slide 33 text
ADR と呼ばれる手法を採用 ● ステータス ● 問題 ● コンテキスト ● 決定 ● compliance ● 代替案
Slide 34
Slide 34 text
まとめ ● React のメジャーなフレームワークの特性を紹介 ● 技術選定をする際には、与えられた諸条件からある機能 を採用した際に享受できるメリットとコストを天秤にか ける ● 意思決定者を説得できるだけの材料があるか?を考えて 言語化する ● 意思決定した際のコンテキストや決定などを文書化する