Vercel

Next.jsでVercel Edge Functionsを導入する方法 | 技術ガイド

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

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


スポンサードリンク

Vercel Edge Functionsの有効化設定手順

Vercel Edge Functionsを使用するには、vercel.jsonファイルでの構成が不可欠です。以下に具体的な手順と注意点をまとめます。

vercel.jsonでの設定ファイル構成

  1. プロジェクトルートにvercel.jsonを作成し、Edge Functionsのプロパティを追記します。
  2. edgeFunctions配下に処理対象となるAPIエンドポイントを定義します。

注意entrypointのパスは、Next.js App Router環境では通常 /src/app/api/配下に配置します。

Edge Function実行環境の確認方法

ローカルでのテストにはVercel CLIを使用します:

この際、「Functions」タブでEdge Functionsが有効化されているかを確認してください。環境構成ミスは、早期に検出可能です。


App Router環境でのディレクトリ構造設計

Next.js 13以降ではApp Routerが標準となり、Edge Functionsとの連携によってさらに高速な処理が可能になります。以下のポイントを押さえてください。

pagesとappディレクトリの差分確認

  • pagesディレクトリ(Next.js 12以前の仕様):/pages/api/配下にAPIエンドポイントを配置。
  • appディレクトリ(App Router):/src/app/api/配下にEdge FunctionsやAPI Routeを配置。ファイル拡張子が.edge.ts.tsで区別されます。
項目 pagesディレクトリ appディレクトリ
APIエンドポイントの配置 /pages/api/ /src/app/api/
Edge Functionsの拡張子 .ts .edge.ts

補足:App Routerでは、ファイル名に.edge.tsを付けることでEdge Functionと判定されます。

Edge Functions専用ファイルの配置ルール

Edge Functionは/src/app/api/[エンドポイント].edge.tsのように配置します。ただし、Edge Functionsのみを扱うディレクトリを作成し、他の処理とは分離することが推奨されます。


Edge Functionファイルの作成規範

Edge Functionはexport default function handler()形式で実装されますが、Next.js API Routeと異なる制限があります。以下に実装手順を示します。

リクエストハンドラ関数の基本構造

  • reqパラメータ:クライアントからのリクエスト情報(メソッド、ヘッダーなど)。
  • envパラメータ:Vercelの環境変数を参照するためのオブジェクト。

環境変数の参照方法

Edge Functions内で使用する環境変数は、Vercelプロジェクト設定画面(Settings > Environment Variables)に登録し、以下のように取得します:

注意点:Edge Functionsではローカルの.env.localファイルを読み込めません。必ずVercel側での設定が必要です。


データベース接続時の技術的制約

Edge Functionsはサーバーレス環境に実行されるため、データベースアクセスには注意が必要です。

Prisma ClientのEdge環境対応

Prisma ClientはEdge Functions環境では使用できません。主な理由:

  • 接続先がサポートされていない(例:PostgreSQLやMySQLとの通信)
  • 非同期処理に最適化されていない

代替案として以下の方法があります:

  1. データベースアクセスはクライアントサイドまたはサーバーサイドのAPIで処理し、Edge Functionsではキャッシュデータを利用する。
  2. Supabase Edge Functionsサポートを活用し、JavaScriptでの非同期通信を行う。

Supabase Edge Functionsサポート確認

SupabaseはEdge Functions環境でも利用可能です。ただし、以下の注意点があります:

  • リアルタイム接続(PostgreSQL WebSocket)は使用不可
  • リクエスト制限に注意し、APIキーを適切に管理する

パーソナライズ実装例と最適化ポイント

Edge Functionsではユーザーごとのパーソナライズ処理が可能で、特にFeature FlagやA/Bテストの実装が注目されています。

LaunchDarklyとの連携フロー

  1. LaunchDarkly SDKをEdge Functions内に導入
  2. リクエストからユーザーIDなどを取得し、Feature Flagを判定します。

性能への影響:SDKは軽量ですが、リクエストごとに非同期通信を行うため、処理時間を意識した設計が必要です。

Edge FunctionでのA/Bテスト実装

Edge Functionsでは、ユーザー属性に応じたA/Bテストを簡易的に実行できます。以下のようにグループ分けを行います:

この方法では、Edge Functionsがグローバルな処理を高速に実行し、ユーザーごとの体験差別化が可能です。


実装時のチェックリスト

以下のポイントを順次確認してください:

  1. vercel.jsonでのEdge Functions設定
  2. edgeFunctionsプロパティの配置場所と構文を確認
  3. App Router環境でのディレクトリ構造
  4. /src/app/api/配下に.edge.tsファイルを配置
  5. データベース接続の回避策
  6. クライアント・サーバーサイド経由でDBアクセス
  7. パーソナライズ機能の導入
  8. Feature FlagやA/Bテストを活用

まとめ

Vercel Edge Functionsは、Next.jsプロジェクトにおける非同期処理の効率化とユーザー体験の最適化に役立ちます。記事で紹介した手順に従い、Edge Functionsを導入・運用することで、グローバルなパーソナライズや高速API処理が可能になります。実践手順を踏まえ、Edge Functionsの特性を活かしたアーキテクチャ設計を目指してください。

スポンサードリンク

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


-Vercel