Next.js GitHubデプロイ完全ガイド – Vercel・Netlify・GitHub Pagesで簡単公開
はじめに
Next.jsアプリケーションを開発した後、最も重要なステップがデプロイ(本番環境への公開)です。この記事では、GitHubを使ったNext.jsプロジェクトのデプロイ方法を、主要なホスティングサービス別に詳しく解説します。初心者でも迷わずにデプロイできるよう、手順を分かりやすくまとめました。
GitHubを使ったデプロイのメリット
なぜGitHubデプロイが推奨されるのか
- 自動デプロイ: コードをpushするだけで自動的にサイトが更新
- バージョン管理: 変更履歴の追跡と簡単なロールバック
- チーム開発: 複数人での共同作業が容易
- 無料利用: 多くのホスティングサービスが無料プランを提供
事前準備:GitHubリポジトリの作成
1. ローカルリポジトリの初期化
cd your-nextjs-project
git init
git add .
git commit -m "Initial commit"
2. GitHubリポジトリとの連携
git remote add origin https://github.com/username/repository-name.git
git branch -M main
git push -u origin main
3. 必要なファイルの確認
// package.json
{
"scripts": {
"build": "next build",
"start": "next start",
"export": "next export"
}
}
Vercelでのデプロイ(推奨)
なぜVercelが最適なのか
Vercelは Next.js の開発元が提供するホスティングサービスで、最も簡単で高性能なデプロイが可能です。
1. Vercelへのデプロイ手順
# Vercel CLIのインストール
npm i -g vercel
# デプロイ実行
vercel
# 本番環境へのデプロイ
vercel --prod
2. GitHub連携の設定
- Vercel Dashboardにアクセス
- 「New Project」をクリック
- GitHubリポジトリを選択
- 「Deploy」をクリック
3. 環境変数の設定
// vercel.json
{
"env": {
"CUSTOM_KEY": "value"
},
"build": {
"env": {
"CUSTOM_KEY": "value"
}
}
}
Netlifyでのデプロイ
1. netlify.tomlの作成
[build]
command = "npm run build"
publish = ".next"
[[redirects]]
from = "/*"
to = "/index.html"
status = 200
2. GitHub連携でのデプロイ
- Netlifyにログイン
- 「New site from Git」を選択
- GitHubリポジトリを接続
- ビルド設定を確認してデプロイ
3. 環境変数の設定
# Netlify CLI使用
netlify env:set NEXT_PUBLIC_API_URL "https://api.example.com"
GitHub Pagesでのデプロイ
1. 静的エクスポートの設定
// next.config.js
/** @type {import('next').NextConfig} */
const nextConfig = {
output: 'export',
trailingSlash: true,
images: {
unoptimized: true
}
}
module.exports = nextConfig
2. GitHub Actionsの設定
# .github/workflows/deploy.yml
name: Deploy to GitHub Pages
on:
push:
branches: [ main ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18'
- run: npm ci
- run: npm run build
- uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./out
3. リポジトリ設定
- GitHubリポジトリの「Settings」タブ
- 「Pages」セクションで「GitHub Actions」を選択
- ワークフローが実行されるのを確認
カスタムドメインの設定
1. Vercelでのカスタムドメイン
# Vercel CLIでドメイン追加
vercel domains add example.com
2. DNSレコードの設定
# Aレコード
@ → 76.76.19.61
# CNAMEレコード
www → cname.vercel-dns.com
環境変数の管理
1. 開発・本番環境の分離
// .env.local
NEXT_PUBLIC_API_URL=http://localhost:3000/api
DATABASE_URL=postgresql://localhost/myapp_dev
// .env.production
NEXT_PUBLIC_API_URL=https://api.myapp.com
DATABASE_URL=postgresql://prod-server/myapp
2. セキュアな環境変数
// 公開される環境変数(NEXT_PUBLIC_プレフィックス)
const apiUrl = process.env.NEXT_PUBLIC_API_URL;
// サーバーサイドのみで使用される環境変数
const dbUrl = process.env.DATABASE_URL;
CI/CDパイプラインの構築
GitHub Actionsでの自動テスト・デプロイ
name: CI/CD Pipeline
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- run: npm ci
- run: npm test
- run: npm run build
パフォーマンス最適化
1. ビルド最適化
// next.config.js
module.exports = {
swcMinify: true,
compiler: {
removeConsole: process.env.NODE_ENV === 'production'
}
}
2. 画像最適化
// 本番環境での画像最適化
import Image from 'next/image'
export default function MyImage() {
return (
<Image
src="/hero.jpg"
alt="Hero image"
width={800}
height={600}
priority
/>
)
}
デプロイ先比較表
| サービス | 料金 | 特徴 | Next.js最適化 |
|---|---|---|---|
| Vercel | 無料〜 | 最高の Next.js サポート | ⭐⭐⭐⭐⭐ |
| Netlify | 無料〜 | 豊富な機能 | ⭐⭐⭐⭐ |
| GitHub Pages | 無料 | 静的サイトのみ | ⭐⭐⭐ |
トラブルシューティング
よくあるデプロイエラーと解決策
ビルドエラー
# 依存関係の問題
npm ci
npm run build
# Node.jsバージョンの確認
node --version
環境変数が読み込まれない
// 正しい環境変数の設定
console.log('API URL:', process.env.NEXT_PUBLIC_API_URL);
ページが404エラー
// next.config.js でトレイリングスラッシュを設定
module.exports = {
trailingSlash: true
}
セキュリティ対策
1. シークレット情報の管理
# GitHub Secretsの使用
- name: Deploy
env:
API_KEY: ${{ secrets.API_KEY }}
run: npm run deploy
2. セキュリティヘッダーの設定
// next.config.js
module.exports = {
async headers() {
return [
{
source: '/(.*)',
headers: [
{
key: 'X-Content-Type-Options',
value: 'nosniff'
}
]
}
]
}
}
監視とメンテナンス
1. パフォーマンス監視
// Vercel Analyticsの導入
import { Analytics } from '@vercel/analytics/react'
export default function App({ Component, pageProps }) {
return (
<>
<Component {...pageProps} />
<Analytics />
</>
)
}
2. エラー監視
// Sentryの設定例
import * as Sentry from '@sentry/nextjs'
Sentry.init({
dsn: process.env.NEXT_PUBLIC_SENTRY_DSN
})
まとめ
Next.jsアプリケーションのGitHubを使ったデプロイは、適切な手順を踏めば簡単に実現できます。Vercelが最も推奨されるホスティングサービスですが、プロジェクトの要件に応じてNetlifyやGitHub Pagesも選択肢となります。
継続的なデプロイメント、適切な環境変数管理、パフォーマンス最適化を組み合わせることで、本格的なWebアプリケーションの運用が可能になります。
定期的なメンテナンスと監視を行い、ユーザーに最高の体験を提供しましょう。
この記事は最新のNext.js 13+とGitHubの機能に基づいて作成されています。デプロイ前に最新のドキュメントもご確認ください。
■プロンプトだけでオリジナルアプリを開発・公開してみた!!
■AI時代の第一歩!「AI駆動開発コース」はじめました!
テックジム東京本校で先行開始。
■テックジム東京本校
「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。
<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。
<月1開催>放送作家による映像ディレクター養成講座
<オンライン無料>ゼロから始めるPython爆速講座


