Next.jsとは、ReactをベースにしたオープンソースのフルスタックJavaScriptフレームワークです。Next.jsは、静的サイト生成(SSG)やサーバーサイドレンダリング(SSR)といった機能を簡単に実装できるのが大きな特徴で、パフォーマンスの向上やSEO対策が求められるWebアプリケーションの開発に最適です。
現在参画している案件でNext.jsを使用しているため、Node.js、Next.jsのインストール方法から必要な初期設定をまとめました。
Node.jsのインストール
Node.jsのインストールにあたり、homebrewからnodebrewというツールをインストールします。
nodebrewとはNode.jsのバージョンを管理するツールです。プロジェクト毎にNode.jsのバージョンが異なるとインストールし直す必要がありますが、nodebrewを利用すれば簡単にバージョンを切り替えることができます。
なお、homebrewのインストール方法は下記に記載しています。インストールされていない方は参考にしてください。
nodebrewをインストールします。
# nodebrewをインストール
brew install nodebrew
# インストールされたことを確認
nodebrew -v
Node.jsをインストールします。
なお、2024年9月現在は最新のLTS版であるv20.17.0をインストールします。
# インストールできるバージョンを確認
nodebrew ls-remote
# 指定のバージョンをインストール
nodebrew install-binary v20.17.0
# インストールされたことを確認(v20.17.0が表示される)
nodebrew ls
# インストールしたバージョンを有効化
nodebrew use v20.17.0
パスを通します。
echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.zprofile
~/.zprofile
# インストールしたバージョンが表示されることを確認
node -v
Next.jsのインストール
Next.jsをインストール。
質問事項は下記を参考にしました。
私は初心者のためTypeScriptは使用せず、CSSはTailwindを学びながら進めたかったため以下にしました。
npx create-next-app@latest
# 質問事項の回答
✔ What is your project named? … cloud-work
✔ Would you like to use TypeScript? … No
✔ Would you like to use ESLint? … Yes
✔ Would you like to use Tailwind CSS? … Yes
✔ Would you like to use `src/` directory? … Yes
✔ Would you like to use App Router? (recommended) … No
✔ Would you like to customize the default import alias (@/*)? … No
インストール確認。
下記コマンドでサーバーを立ち上げ、http://localhost:3000 を表示し、動作を確認します。
cd cloud-work
npm run dev
以下ページが表示されていればOKです。
Next.jsの初期設定
不要なファイルを削除します。
開発を進めていくにあたり、インストール時のファイルで不要なものは削除してしまいます。
以下に削除対象を記載します。
- src/pages/api(apiディレクトリごと削除)
- api配下にapiのルートを作成することができますが、今回は使用しないため削除します
- src/pages/fonts(fontsディレクトリごと削除)
- 使用しないため削除します
- src/styles/globals.css(globals.css内の下記コードを削除)
- globals.cssにページ全体のcssを記載しますが、初期デザインが記載されているため削除します
:root {
--background: #ffffff;
--foreground: #171717;
}
@media (prefers-color-scheme: dark) {
:root {
--background: #0a0a0a;
--foreground: #ededed;
}
}
body {
color: var(--foreground);
background: var(--background);
font-family: Arial, Helvetica, sans-serif;
}
@layer utilities {
.text-balance {
text-wrap: balance;
}
}
pages配下のソースをjsからjsxに変更します。
- src/pages/_app.js
- src/pages/_document.js
- src/pages/index.js
src/pages/index.jsxを下記のように書き換えて、以下ページが表示されていればOKです。
export default function Home() {
console.log("Hello, Next.js!");
return <h1>Hello, Next.js!</h1>;
}
またコンソールログを確認すると、2回ログ出力されていることがわかります。
下記を参考にしましたが、reactStrictModeを解除(falseにする)と2回実行されなくなるので実施しておきましょう。
- next.config.mjs
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: false,
};
export default nextConfig;
コードは、以下のGitHubリポジトリで確認できます。
コメント