ハーマ先生
は~い!今日の講義を担当させていただくハーマ先生です!
ハーマ先生って誰やねんと思ったら記事の最下部に説明書いてあるから見てね~(投げやり)
世界一わかりやすい!~講義形式で学ぶサイト制作~:第16回
ハーマ先生
こんにちは、ウィーブ君!今日はNext.jsというフレームワークを紹介するよ。これは、Reactを使って構築されたフレームワークで、**静的サイトジェネレーション(SSG)やサーバーサイドレンダリング(SSR)**といった強力な機能を持っているんだ。動的なページも作りやすいのが特徴だよ!
Reactは聞いたことがあるけど、Next.jsってReactとどう違うの?
ウィーブ・ウェブ君
ハーマ先生
Next.jsは、Reactをベースにして、さらに機能を追加したフレームワークなんだ。Reactだけでもサイトは作れるけど、SEO対策やページのパフォーマンスを向上させるために、Next.jsはとても便利なんだよ。具体的には、ページのレンダリングをサーバー側で行ったり、静的にビルドして公開できる機能があるんだ。
1. Next.jsの特徴とは?何ができるのか?
- サーバーサイドレンダリング(SSR): ページをサーバー側で生成してからクライアントに配信する。これにより、初回読み込みが早く、SEOにも優れているんだ。
- 静的サイトジェネレーション(SSG): 動的なページでも、事前に静的にHTMLを生成しておける。これにより、ページの表示速度が向上するよ。
- APIルート: Next.jsにはAPIルートがあり、バックエンドの処理を組み込むことができるんだ。例えば、フォームの送信やデータベースの操作も可能。
- ページベースのルーティング: ファイルシステムをベースにして、Reactのページを自動的にルーティングしてくれるよ。
pages
ディレクトリにファイルを置くだけで新しいページが追加されるんだ。
まず、Next.jsで何ができるかを見てみよう!
ウィーブ・ウェブ君
ハーマ先生
なるほど、静的サイトと動的なサイト、両方のいいところを兼ね備えているってことだね!
2. Next.jsのインストールとプロジェクト作成方法
じゃあ、どうやってNext.jsを始めればいいの?
ウィーブ・ウェブ君
ハーマ先生
まずはNext.jsをインストールして、プロジェクトを作成してみよう。これもとても簡単だよ!
ステップ1: Next.jsプロジェクトを作成
まずは、npx
を使ってNext.jsのプロジェクトをセットアップするよ。
bashコードをコピーするnpx create-next-app@latest my-next-app
cd my-next-app
npm run dev
- **
npx create-next-app
**は、Next.jsの公式CLIツールを使ってプロジェクトを生成するためのコマンド。 - **
npm run dev
**で、開発サーバーを立ち上げて、ローカル環境でサイトを確認できるよ。
ハーマ先生
これで、Next.jsの開発環境が整ったよ。ブラウザでhttp://localhost:3000
にアクセスしてみて、Next.jsのデフォルトのページが表示されているはずだ!
3. ページベースのルーティングと静的サイト生成
Next.jsのルーティングが簡単だって言ってたけど、どうやってページを作るの?
ウィーブ・ウェブ君
ハーマ先生
Next.jsでは、pages
ディレクトリの中にファイルを作るだけで新しいページが追加されるんだ。例えば、pages/about.js
を作れば、自動的に/about
というURLにアクセスできるようになるんだよ。
すごい簡単!ページを作るだけで自動的にルーティングされるのは便利だね。
ウィーブ・ウェブ君
ステップ2: 新しいページの作成
// pages/about.js
export default function About() {
return (
<div>
<h1>About Page</h1>
<p>これはAboutページです。</p>
</div>
);
}
- 説明:
pages
ディレクトリの中にファイルを作成するだけで、新しいURLパスが自動でルーティングされるんだ。Next.jsでは、コードを書く手間が減り、シンプルにルーティングできるのが特徴だね。
4. 静的サイトジェネレーション(SSG)とサーバーサイドレンダリング(SSR)
ハーマ先生
次は、Next.jsの2つの大きな機能、**静的サイトジェネレーション(SSG)とサーバーサイドレンダリング(SSR)**について説明するね。
4.1 静的サイトジェネレーション(SSG)
SSGは、ビルド時に全ページを静的HTMLとして生成する機能で、特にSEOに強く、ページの読み込みが高速だよ。
// pages/blog/[id].js
export async function getStaticPaths() {
const paths = [{ params: { id: '1' } }, { params: { id: '2' } }];
return { paths, fallback: false };
}
export async function getStaticProps({ params }) {
return { props: { blogId: params.id } };
}
export default function Blog({ blogId }) {
return <h1>ブログID: {blogId}</h1>;
}
- 説明:
getStaticPaths
で事前に生成したいページのパスを指定し、getStaticProps
でそのページのデータを渡す。この2つの関数を使って、静的ページを生成できるんだ。
4.2 サーバーサイドレンダリング(SSR)
SSRは、リクエストが来るたびにサーバー側でHTMLを生成して返す方法だよ。動的なページに向いているんだ。
// pages/dashboard.js
export async function getServerSideProps() {
const data = await fetch('https://api.example.com/data');
const json = await data.json();
return { props: { stats: json } };
}
export default function Dashboard({ stats }) {
return (
<div>
<h1>ダッシュボード</h1>
<p>データ: {stats.value}</p>
</div>
);
}
- 説明:
getServerSideProps
関数はリクエストごとに実行され、サーバー側でHTMLをレンダリングしてからクライアントに送信するよ。これで、リアルタイムにデータを取得してページを表示できるんだ。
動的なデータも扱えるし、静的なページもビルドできるなんて、いろいろなサイトで使えそうだね!
ウィーブ・ウェブ君
5. APIルートの利用
Next.jsではAPIも使えるって言ってたけど、それってどうやって実装するの?
ウィーブ・ウェブ君
ハーマ先生
Next.jsのAPIルートは、pages/api
ディレクトリにファイルを作成することで実現できるよ。例えば、フォームの送信を受け取って処理したり、データベースにアクセスしたりすることができるんだ。
ステップ5: APIルートの作成
// pages/api/hello.js
export default function handler(req, res) {
res.status(200).json({ message: 'こんにちは、世界!' });
}
- 説明: このAPIルートは、
/api/hello
というエンドポイントを提供して、GET
リクエストに対してJSONデータを返すよ。これを使えば、簡単にAPIを実装できるんだ。
フロントエンドだけじゃなくて、バックエンドの処理もNext.jsでできるんだね!これならフルスタックで開発できそう!
ウィーブ・ウェブ君
6. デプロイの手順
作ったサイトをインターネットに公開するにはどうすればいいの?
ウィーブ・ウェブ君
ハーマ先生
サイトのデプロイも簡単だよ、特にVercelを使うと、Next.jsプロジェクトを簡単にデプロイできるんだ。VercelはNext.jsを開発している会社が提供しているホスティングサービスだから、相性抜群なんだ。
ステップ6: Vercelへのデプロイ
- Vercelの公式サイトにアクセスしてアカウントを作成。
- GitHub、GitLab、またはBitbucketからプロジェクトをインポートするオプションが表示されるので、Next.jsプロジェクトのリポジトリを選択。
- 「Deploy」ボタンをクリックするだけで、Vercelが自動的にビルドしてデプロイしてくれるよ。
ハーマ先生
これで、Next.jsのサイトがインターネット上に公開されるよ!https://your-project.vercel.app
のようなURLでアクセスできるはずだ。
まとめ
ハーマ先生
今日は、Next.jsを使って静的サイトから動的なWebアプリまで、いろいろな形でサイトを作成する方法を紹介したよ。特に、静的サイト生成(SSG)やサーバーサイドレンダリング(SSR)を活用することで、パフォーマンスやSEOに優れたサイトが作れるんだ!
ありがとう、ハーマ先生!Next.jsはReactと組み合わせることで、サイトの作成がすごく柔軟になるんだね。デプロイも簡単で、すぐに公開できるのがいいな!
ウィーブ・ウェブ君
ハーマ先生
そうだね。Next.jsは、Reactの強みを活かしながら、よりスケーラブルでパフォーマンスの高いWebアプリケーションを作るのに最適なフレームワークだよ。次は、さらに高度なカスタマイズやSEO対策のテクニックを学んでいこう!
Next.jsの特徴をおさらい:
- サーバーサイドレンダリング(SSR): リクエストごとにサーバー側でページを生成し、高速かつSEOに強いページを提供。
- 静的サイトジェネレーション(SSG): ビルド時にHTMLを生成し、高速な静的ページを作成。
- APIルート: サーバーサイドの処理をフロントエンドと一緒に管理可能。
- ページベースのルーティング:
pages
ディレクトリにファイルを置くだけで自動ルーティング。 - Vercelとの連携: Vercelを使えば、数クリックでNext.jsプロジェクトをデプロイできる。
これで、Next.jsを使って効率的なサイト構築ができるようになります。次のステップでは、デザインやSEOをさらに改善し、パフォーマンスの高いサイトを目指しましょう!
コメント