コンテンツにスキップ

Chapter 8: ReactからNext.jsへ

React の基礎(Component / Props / State)を一通り体験できました。ここでは学んだ内容を振り返りつつ,Next.js で本格的なアプリケーションを構築する準備を整えます。


これまでに作ったコードを確認する

以下は Chapter 3〜7 を通じて完成した index.html の全体像です。ブラウザで動作を確認したい場合はそのままコピペして使えます。

index.html
<html>
  <body>
    <div id="app"></div>

    <script src="https://unpkg.com/react@18/umd/react.development.js"></script>
    <script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
    <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>

    <script type="text/jsx">
      const app = document.getElementById("app");

      function Header({ title }) {
        return <h1>{title ? title : "Default title"}</h1>;
      }

      function HomePage() {
        const names = ["Ada Lovelace", "Grace Hopper", "Margaret Hamilton"];
        const [likes, setLikes] = React.useState(0);

        function handleClick() {
          setLikes(likes + 1);
        }

        return (
          <div>
            <Header title="Develop. Preview. Ship." />
            <ul>
              {names.map((name) => (
                <li key={name}>{name}</li>
              ))}
            </ul>
            <button onClick={handleClick}>Like ({likes})</button>
          </div>
        );
      }

      const root = ReactDOM.createRoot(app);
      root.render(<HomePage />);
    </script>
  </body>
</html>

3つの基礎概念をおさらい

概念 役割
Component UI を組み立てる部品 Header / HomePage
Props データの受け渡し Header title="..."
State 時間とともに変化する値 useState(0) でカウントを管理

これらを押さえておけば,画面を組み立てて動かすための土台ができあがります。


React だけで開発を進めると…

<script> タグに依存した手法は学習や小規模な導入には便利ですが,実際のサービス開発では次のような課題に直面します。

規模が大きくなると困ること

  • ルーティングやビルド設定を自分で整える必要がある
  • 画像やフォントの最適化,SSR(サーバーサイドレンダリング)の設定が大変
  • Server Component / Client Component などの新機能を活用しづらい

フレームワークを使うことで,これらの設定を省力化し,プロダクトに集中できます。


Next.js が提供してくれるもの

Next.js は React をベースにしたフレームワークで,以下のような機能がセットで提供されます。

  • ファイルベースのルーティングとレイアウト
  • 最適化されたデータ取得(Server Actions / fetch のキャッシュ)
  • 画像・フォントの自動最適化
  • Server Components と Client Components の共存
  • ビルドとデプロイの自動化(Vercel との相性が特に良い)

React 単体で書いていたコードを Next.js プロジェクト内に移すだけで,これらの機能がすぐに使えるようになります。


次のステップ

最後の Chapter では Next.js プロジェクトを新規作成し,React で書いた UI を移し替える手順を確認します。ここまでで理解したコンセプトが,Next.js でどのように活かされるのかを体験しましょう。