Next.js

Next.js14 と Vercel のベストプラクティス:高速安全デプロイ手順

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

1. Next.js 14 の主要機能とプロジェクト雛形

1‑1. app ディレクトリと Edge Runtime の概要

Next.js 14 では app ディレクトリ がデフォルトで有効化され、ページ単位で Server ComponentClient Component を明示的に分離できます。これにより、データ取得ロジックはサーバー側だけで完結し、クライアントへ送る JavaScript の量を最小限に抑えることが可能です。

項目 説明
Server Component データベースや外部 API へのアクセスはサーバー側で完結。クライアントには HTML だけが送信される。
Client Component useStateuseEffect などのインタラクティブロジックを実装するコンポーネント。
Edge Runtime Vercel のエッジネットワーク上でコードが実行され、Cold Start が数十ミリ秒程度に抑えられる。

Edge Runtime は「サーバー側」の処理でも高速化が期待できるため、API Route や画像最適化といった重たい処理をエッジへオフロードするのがおすすめです。

1‑2. プロジェクト作成コマンドと推奨設定

以下のコマンドで Next.js 14 のテンプレートを生成します。--experimental-app フラグは app ディレクトリ構造 を自動的に組み込み、TypeScript と ESLint も同時に有効化できます。

生成された app/ ディレクトリには以下のファイルが自動配置されます。

  • layout.tsx – ルートレイアウト(全ページ共通の HTML 構造)
  • page.tsx – デフォルトのトップページ

重要ポイント
- next.config.jsoutput: 'standalone' は自動で追加されません。必要に応じて手動で設定してください(Docker コンテナ化やサーバー外部デプロイ時に便利です)。
- Edge Runtime 用のページは個別に export const runtime = 'edge'; を付与することで有効になります。


2. Vercel CLI のインストールとローカル開発フロー

Vercel CLI はローカル環境で本番と同等のビルド・ランタイムを再現し、デプロイ作業をシンプルにします。以下ではインストールからローカルプレビューまでの手順を示します。

2‑1. インストールと認証

  • ログインに成功すると、トークンが ~/.config/vercel に保存されます。CI 環境では同ディレクトリの代わりに環境変数 VERCEL_TOKEN を設定すれば自動認証が可能です。

2‑2. プロジェクトと Vercel の紐付け

  • vercel link を実行すると .vercel/project.json が生成され、projectIdorgId が記録されます。以降の vercel dev / vercel deploy はこの情報を基に対象プロジェクトを自動判別します。

2‑3. ローカルプレビュー(vercel dev)

  • vercel devnext.config.jsvercel.json の設定をそのまま読み込み、.env.local も自動的に注入します。
  • エッジ関数はローカルでもエッジランタイムと同様のサンドボックスで実行されるため、デプロイ前に挙動確認が容易です。

3. デプロイ戦略:本番環境とプレビュー環境

Vercel では プレビュー環境 がデフォルトで有効化されています。GitHub の Pull Request と連携させるだけで、ブランチごとの一時デプロイが自動生成されます。

3‑1. 本番デプロイ

  • --prod フラグを付与すると、Vercel は「Production」向けビルドとして扱い、vercel.jsonproductionBranch が設定されている場合は自動的にそのブランチが対象になります。
  • デプロイ完了後に表示される URL(例:https://my-next14-app.vercel.app)を共有すれば、本番リリースが完了です。

3‑2. プレビュー環境(自動生成)

  1. GitHub 連携
  2. Vercel Dashboard → Git Integration → 対象リポジトリを選択し、Pull Request Preview を有効化。

  3. プレビューデプロイの流れ

  4. PR が作成・更新されるたびに Vercel が自動でビルドし、https://<branch>-my-next14-app.vercel.app のような一時 URL を生成します。
  5. 開発者はこのプレビュー URL で実際のエッジ環境と同様の挙動を確認できます。

注意:CLI に --previews オプションは存在しません。プレビューは上記のように Git 連携か、vercel deploy(フラグなし)だけで自動的に生成されます。


4. 環境変数・シークレットとカスタムドメイン

4‑1. 環境変数の管理方法

種類 保存場所 アクセス例
公開環境変数 (NEXT_PUBLIC_ プレフィックス) Vercel Dashboard の Environment Variables.env.local process.env.NEXT_PUBLIC_API_URL
シークレット(サーバー側のみ) Dashboard の Secret に暗号化保存 process.env.DATABASE_URL

同期コマンド例

  • 取得した .env.* ファイルは必ず .gitignore に列挙し、リポジトリに含めないようにします。

4‑2. カスタムドメインの設定手順

  1. Dashboard → Domains → Add Domainexample.com を入力。
  2. DNS プロバイダ側に以下のレコードを追加(Vercel が提示する値は必ず確認)
種類 ホスト名
CNAME www cname.vercel-dns.com
A @(ルートドメイン) 76.76.21.21
  1. DNS が伝播したら Dashboard に Verified と表示され、Vercel が自動的に Let’s Encrypt の証明書を発行します。
  2. 必要に応じて example.com → www.example.com のリダイレクト設定を追加し、統一された URL でアクセスできるようにします。

ポイント:HTTPS は自動で有効化され、証明書の更新も Vercel がバックグラウンドで行うため手作業は不要です。


5. パフォーマンス最適化とセキュリティベストプラクティス

5‑1. ISR・Static Generation・Edge Functions の使い分け

手法 主な利用シーン ビルド/ランタイム特性
Static Generation (SSG) コンテンツが変更頻度低いページ(LP、ブログ一覧) ビルド時に HTML が生成され CDN から即配信。最速レスポンス。
Incremental Static Regeneration (ISR) 定期的に更新したいページ(ニュース記事、商品情報) revalidate 時間ごとにバックグラウンドで再ビルドし、最新データを保持。
Edge Functions 高速 API、認証・画像変換など低レイテンシが求められる処理 エッジロケーションで実行され、数十ミリ秒の応答が可能。

実装例

5‑2. ビルドキャッシュと画像最適化

  • ビルドキャッシュ
    Vercel は前回の node_modules.next/cache を自動的に保存します。特別な設定は不要ですが、vercel.json に明示的に有効化したい場合は以下を追加できます。

  • 画像最適化
    Next.js の next/image コンポーネントだけで、WebP 変換やサイズリサイズが自動的に行われます。Vercel が CDN 経由で最適化画像を配信するため、ページ速度向上に直結します。

5‑3. セキュリティ対策

ヘッダー強化(CSP・HSTS 等)

依存パッケージの自動更新

  • Dependabot がプルリクエストを作成し、CI がテストを通過すれば自動的にマージできるフローを整えると、脆弱性の放置リスクが低減します。

Vercel のサンドボックス

Edge Function は各リクエストごとに分離されたコンテナで実行され、ファイルシステムへの書き込みや外部ネットワークへの無制限アクセスはできません。これだけでも多くの権限昇格攻撃を防げます。


6. エンドツーエンドまとめ

項目 推奨手順
プロジェクト作成 npx create-next-app@latest --experimental-app --typescript --eslint --use-pnpm
ローカル開発 vercel login → vercel link → vercel dev でエッジ環境を再現
本番デプロイ vercel deploy --prod
プレビュー GitHub PR と連携すれば自動生成、CLI ではフラグ不要
環境変数 Dashboard のシークレット+.env.*vercel env pull で同期
カスタムドメイン DNS に CNAME/A レコードを設定し、Vercel が自動 HTTPS 発行
パフォーマンス ISR / SSG / Edge Functions の使い分け + ビルドキャッシュ・画像最適化
セキュリティ CSP/HSTS ヘッダー、Dependabot による定期更新、Edge サンドボックス活用

この手順に沿って設定すれば、高速・安全・スケーラブル な Next.js 14 アプリを Vercel 上で継続的にデリバリーできるようになります。チーム全体で同じテンプレートと CI/CD パイプラインを共有し、開発速度と品質の両立を目指してください。

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Next.js