コンテンツにスキップ

主要フレームワークの位置づけ

第12講 / 全32講読了目安 約40分
  • UIライブラリとアプリケーションフレームワークの違い
  • React、Vue、Angular、Svelteの大まかな位置づけ
  • Next.js、Nuxt、SvelteKit、Astroが追加する機能
  • 人気ではなく案件条件で比較する方法
  • 採用後の体制・ビルド・更新・ホスティングまで含めて判断する方法

「フロントエンドフレームワーク」という言葉には、提供範囲の異なる技術が含まれます。

flowchart TD
    WEB[Webサイト・Webアプリ]
    WEB --> STD[Web標準<br/>HTML・CSS・JavaScript]
    STD --> UI[UIライブラリ/フレームワーク<br/>React・Vue・Angular・Svelte]
    UI --> APP[アプリケーションフレームワーク<br/>Next.js・Nuxt・SvelteKit]
    STD --> CONTENT[コンテンツ指向フレームワーク<br/>Astro]
    APP --> HOST[静的ホスティング・サーバー・サーバーレス]
    CONTENT --> HOST

製品名を覚えることより、どこまでをその技術が担当するかを理解することが重要です。

UIライブラリとアプリケーションフレームワーク

Section titled “UIライブラリとアプリケーションフレームワーク”

UIライブラリ・UIフレームワーク

Section titled “UIライブラリ・UIフレームワーク”

画面をコンポーネントに分け、状態に応じて更新する仕組みを主に提供します。

  • React
  • Vue
  • Angular
  • Svelte

公式な呼び方や提供範囲は異なりますが、PMとしては「画面を組み立てる層」と捉えると理解しやすくなります。

アプリケーションフレームワーク

Section titled “アプリケーションフレームワーク”

UI技術に加えて、次のようなサイト全体の仕組みを提供します。

  • URLルーティング
  • データ取得
  • SSR・SSG
  • サーバー側処理
  • ビルド
  • 画像最適化
  • キャッシュ
  • デプロイ先との連携

代表例はNext.js、Nuxt、SvelteKitです。

コンテンツ指向のWebフレームワーク

Section titled “コンテンツ指向のWebフレームワーク”

ブログ、メディア、コーポレートサイトなど、コンテンツ中心のWebサイトを主な用途とし、静的HTMLと少ないJavaScriptを重視する製品があります。Astroが代表例です。

境界は製品アップデートで変化します。採用時点の公式資料で確認します。

Reactは、コンポーネントからユーザーインターフェースを構築するライブラリです。

  • UIを部品へ分ける
  • データや状態に応じて画面を更新する
  • 既存サイトの一部分にも導入できる
  • 周辺ツール・フレームワークの選択肢が多い

React単体では、サイト全体の公開方式は決まりません。

  • Next.js等と組み合わせるか
  • SPAなのか、SSR・SSGなのか
  • 状態管理・フォーム・ルーティングに何を使うか
  • 保守担当が周辺構成まで理解できるか

「Reactを使う」という説明だけでは、インフラ・SEO・ビルド・運用は判断できません。

Vueは、標準的なHTML・CSS・JavaScriptを基礎とし、既存ページの一部分からサイト全体まで段階的に導入できるフレームワークです。

Vue単体で一部分のUIを作る場合と、Nuxtでサイト全体を作る場合では、レンダリング・ビルド・ホスティングが異なります。

PMは「Vueを採用する」ではなく、「Vueをどの範囲に、どの構成で採用するか」を確認します。

Angularは、ルーティング、フォーム、通信など、Webアプリケーション構築に必要な幅広い機能を一体的に提供するフレームワークです。

大規模なチームや長期開発では、共通ルールを持ちやすいことが利点です。一方、コンテンツ中心の小規模サイトでは、必要以上に構成・学習範囲が大きくなる場合があります。

社内標準、既存資産、チーム経験が選定理由になることが多い技術です。

Svelteは、コンポーネントをビルド時にJavaScript・CSS等へ変換するコンパイラ型のUIフレームワークです。

ブラウザ側の処理を抑えやすい設計を取れますが、「Svelteなら必ず高速」とは限りません。画像、API、第三者タグ、画面設計なども性能に影響します。

サイト全体を作る場合はSvelteKitと組み合わせることが多く、保守体制は両方を含めて確認します。

Next.jsはReactを基盤にしたWebアプリケーションフレームワークです。

  • ルーティング
  • 静的生成
  • サーバー側レンダリング
  • サーバー側処理
  • データ取得・キャッシュ
  • ビルド・最適化

などを統合します。

同じNext.jsでも、すべて静的生成する構成、アクセス時に生成する構成、ページごとに方式を変える構成があります。

「Next.jsだからSEOに強い」「Next.jsだからサーバーレス」という説明ではなく、具体的なレンダリング・配信方式を確認します。

NuxtはVueを基盤とするフレームワークです。SSR、静的生成、サーバー処理、ルーティング等を統合します。

静的ホスティング、Node.jsサーバー、サーバーレス、エッジ等、出力・配信方式によって保守対象と費用が変わります。

SvelteKitはSvelteを使ったWebアプリケーションフレームワークです。

ページごとにプリレンダリング、SSR、CSR等を選び、配信環境に応じたアダプターを利用します。どのページを静的にし、どのページをアクセス時に生成するかで、必要なホスティングが変わります。

Astroは、ブログ、メディア、マーケティングサイト、コーポレートサイトなど、コンテンツ中心のサイトを主な対象とするWebフレームワークです。

  • 標準ではページを静的生成する
  • HTML中心で配信する
  • 必要なコンポーネントだけJavaScriptを有効化しやすい
  • React、Vue、Svelte等を部分利用できる
  • 必要なページだけアクセス時に生成できる

複雑な管理画面より、コンテンツ配信に向きやすい一方、ページ数が非常に多い場合はビルド時間を確認します。

技術主な位置づけ向きやすいケース主な注意点
ReactUIライブラリ複雑なUI、既存サイトへの部分導入周辺構成の選択肢が多い
Vue段階導入可能なUIフレームワーク部分UIからWebアプリまでVue単体とNuxtで構成が異なる
Angular統合型フレームワーク大規模・組織的なWebアプリ学習・構成が大きくなりやすい
Svelteコンパイラ型UIフレームワーク軽量なUI、SvelteKitアプリ経験者・周辺体制を確認
Next.jsReactアプリケーションフレームワークReactでSSR・SSG・サーバー機能を使うレンダリング・キャッシュ設計が複雑
NuxtVueアプリケーションフレームワークVueでサイト全体を構築出力・配信方式を確認
SvelteKitSvelteアプリケーションフレームワーク静的・動的サイトアダプター・ホスティングを確認
Astroコンテンツ指向Webフレームワークコーポレート、メディア、ブログ大量ページのビルド・動的機能

この表は優劣や市場順位を示すものではありません。

  • コンテンツ中心か、操作中心か
  • 会員・個別表示があるか
  • CMS更新が多いか
  • 動的機能の複雑さ
  • 現在の経験者
  • レビューできる人
  • 保守を引き継ぐ人
  • 採用・外注のしやすさ
  • 静的ホスティングか、実行サーバーが必要か
  • ビルド時間
  • CMS反映時間
  • プレビュー
  • キャッシュ
  • バージョン更新
  • 想定運用年数
  • メジャーアップデート
  • 周辺プラグイン
  • 特定ホスティングへの依存
  • データ・ソースの移行可能性

コーポレートサイト+ヘッドレスCMS

Section titled “コーポレートサイト+ヘッドレスCMS”

Astro、Next.js、Nuxt等が候補になります。製品名より、静的生成か、CMS更新の反映時間、プレビュー、JavaScript量、運用担当を比較します。

React+Next.js、Vue+Nuxt、Angular、SvelteKit等が候補になります。認証、状態管理、API、サーバー処理、監視・保守を含めて比較します。

検索・シミュレーター等の部分だけReactやVueを導入できる場合があります。全面リプレイスだけを選択肢にしません。

  • 技術名ではなく提供範囲を確認している
  • UIライブラリとアプリケーションフレームワークを区別している
  • フレームワークを使わない案も比較している
  • サイトのコンテンツ量・操作量に適している
  • レンダリング方式とホスティングを確認している
  • CMS更新・プレビュー・キャッシュへの影響を確認している
  • チーム内にレビュー・保守できる経験者がいる
  • 周辺ライブラリを含む更新方針がある
  • 特定ホスティングへの依存を把握している
  • 推奨案と不採用案の理由を文書化している

「React、Next.js、Vercelは同じもの」

Section titled “「React、Next.js、Vercelは同じもの」”

ReactはUIライブラリ、Next.jsはReactを基盤とするフレームワーク、Vercelはホスティング等を提供する企業・サービスです。

知名度だけでは、要件、チーム、既存資産、運用への適合性は判断できません。

「Astroは静的サイトしか作れない」

Section titled “「Astroは静的サイトしか作れない」”

標準では静的生成ですが、必要なルートをアクセス時に生成する構成も選べます。

現在も公式に保守される統合型フレームワークです。案件との適合性で判断します。

「Svelteならどんなサイトでも最速」

Section titled “「Svelteならどんなサイトでも最速」”

性能は画像、API、第三者タグ、実装設計等にも左右されます。

Q1. ReactとNext.jsの違いは何ですか。

Section titled “Q1. ReactとNext.jsの違いは何ですか。”
回答と解説 ReactはコンポーネントでUIを作るライブラリです。Next.jsはReactにルーティング、レンダリング、サーバー処理、ビルド等を加えるフレームワークです。

Q2. Vueを採用すると公開方式まで決まりますか。

Section titled “Q2. Vueを採用すると公開方式まで決まりますか。”
回答と解説 決まりません。部分導入、SPA、Nuxtを使ったSSR・SSG等、構成によって異なります。

Q3. コーポレートサイトで優先する比較観点は何ですか。

Section titled “Q3. コーポレートサイトで優先する比較観点は何ですか。”
回答と解説 コンテンツ量、更新頻度、SEO、JavaScript量、CMS反映、ビルド、プレビュー、ホスティング、保守人員です。

Q4. 技術比較をエンジニアへ依頼するとき、何を求めますか。

Section titled “Q4. 技術比較をエンジニアへ依頼するとき、何を求めますか。”
回答と解説 案件課題、採用・不採用理由、開発・運用コスト、体制、更新、依存、障害・移行への影響を求めます。

Q5. 既存サイトの検索UIだけを改善する場合、全面移行は必須ですか。

Section titled “Q5. 既存サイトの検索UIだけを改善する場合、全面移行は必須ですか。”
回答と解説 必須ではありません。必要な一部分だけフレームワークを導入する方法も比較します。