Next.jsのインストール
プロジェクトでNext.jsを使用する場合、unpkg.comからreact
とreact-dom
スクリプトを読み込む必要はありません。代わりに、npm
またはお好みのパッケージマネージャーを使用してこれらのパッケージをローカルにインストールできます。
注: Next.jsを使用するには、マシンにNode.jsバージョン18.17.0以上がインストールされている必要があります(最小バージョン要件を確認)。こちらからダウンロードできます。
これを行うには、index.html
ファイルと同じディレクトリにpackage.json
という新しいファイルを作成し、空のオブジェクト{}
を記述します。
{}
ターミナルで、プロジェクトのルートディレクトリで次のコマンドを実行します:
npm install react@latest react-dom@latest next@latest
インストールが完了すると、package.json
ファイル内にプロジェクトの依存関係がリストされているはずです:
{
"dependencies": {
"next": "^14.0.3",
"react": "^18.3.1",
"react-dom": "^18.3.1"
}
}
上記よりも新しいバージョンが表示されても心配ありません。next
、react
、react-dom
パッケージがインストールされていれば問題ありません。
また、各パッケージの正確なバージョン情報を含むpackage-lock.json
という新しいファイルも作成されます。
index.html
ファイルに戻り、以下のコードを削除します:
<html>
と<body>
タグid
がapp
の<div>
要素- NPMでインストールしたため
react
とreact-dom
スクリプト - Next.jsにはJSXをブラウザが理解できる有効なJavaScriptに変換するコンパイラがあるため、
Babel
スクリプト <script type="text/jsx">
タグdocument.getElementById()
とReactDom.createRoot()
メソッドReact.useState(0)
関数のReact.
部分
上記の行を削除した後、ファイルの先頭に次のインポートを追加します:
import { useState } from 'react';
コードは次のようになります:
import { useState } from 'react';
function Header({ title }) {
return <h1>{title ? title : 'Default title'}</h1>;
}
function HomePage() {
const names = ['Ada Lovelace', 'Grace Hopper', 'Margaret Hamilton'];
const [likes, setLikes] = 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>
);
}
HTMLファイルに残っているコードはJSXのみなので、ファイルタイプを.html
から.js
または.jsx
に変更できます。
最初のページを作成
Next.jsはファイルシステムベースのルーティングを使用します。これは、アプリケーションのルートをコードで定義する代わりに、フォルダとファイルを使用できることを意味します。
Next.jsで最初のページを作成する方法は次のとおりです:
- appという新しいフォルダを作成し、
index.js
ファイルをその中に移動します。 index.js
ファイルをpage.js
に名前変更します。これがアプリケーションのメインページになります。<HomePage>
コンポーネントにexport default
を追加して、Next.jsがページのメインコンポーネントとしてレンダリングするコンポーネントを識別できるようにします。
import { useState } from 'react';
function Header({ title }) {
return <h1>{title ? title : 'Default title'}</h1>;
}
export default function HomePage() {
// ...
}
開発サーバーの実行
次に、開発中に新しいページの変更を確認できるように開発サーバーを実行しましょう。package.json
ファイルに"next dev"
スクリプトを追加します:
{
"scripts": {
"dev": "next dev"
},
"dependencies": {
"next": "^14.0.3",
"react": "^18.3.1",
"react-dom": "^18.3.1"
}
}
ターミナルでnpm run dev
を実行して確認します。次の2つのことに気付くでしょう:
- localhost:3000に移動すると、次のエラーが表示されます:

これは、Next.jsがReactサーバーコンポーネントを使用しているためです。サーバーコンポーネントはuseState
をサポートしていないため、代わりにクライアントコンポーネントを使用する必要があります。
次の章では、サーバーコンポーネントとクライアントコンポーネントの主な違いについて説明し、このエラーを修正します。
app
フォルダ内にlayout.js
という新しいファイルが自動的に作成されます。これはアプリケーションのメインレイアウトです。すべてのページで共有されるUI要素(ナビゲーション、フッターなど)を追加するために使用できます。
export const metadata = {
title: 'Next.js',
description: 'Generated by Next.js',
};
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>{children}</body>
</html>
);
}
まとめ
これまでの移行作業を見ると、Next.jsを使用する利点がすでに感じられるかもしれません:
- ReactとBabelスクリプトを削除しました。これにより、考慮する必要のある複雑なツールと設定が不要になります。
- 最初のページを作成しました。
追加資料: