VercelのCron定期実行の設定手順と無料枠の料金【完全解説】
この記事のポイント
Vercel CronはNext.js等のAPIルートを定期実行できる機能であり、無料枠の制限を考慮しつつ、vercel.jsonでのスケジュール定義やCRON_SECRETを用いた認証を行うことで、インフラを集約した安全な自動化処理を構築できます。
「Vercel Cronを使ってアプリの定期実行を実装したいけれど、無料枠の制限やセキュリティ対策を考慮した具体的な設定方法が分からない」と悩んでいる方は多いのではないでしょうか。
こうした疑問に分かりやすくお答えします。
本記事の内容
- Vercel Cronのプラン別制限と基本仕様
- vercel.jsonを用いた具体的な実装手順
- CRON_SECRETによる安全な運用方法
Vercel Cronを活用すれば、外部サービスを使わずにNext.jsなどのAPIルートから直接スケジュール処理を実行できます。Vercel Cronは無料で始められますが、料金プランによって実行回数などの制限が異なる点に注意が必要です。
また、安全な運用のためにVercel Cron SecretやCRON_TOKENの活用、開発環境でのCron Job Previewといった実戦的なテクニックも欠かせません。もしCron Jobが動かないトラブルが起きた際も、正しい設定を理解していればすぐに対処できるはずです。
2026年現在の最新仕様に基づき、vercel.jsonでの設定方法からインフラをVercelに集約して運用コストを最小限に抑える手順まで、丁寧に解説します。ぜひ最後までご覧ください。
Vercel Cronの基本仕様
Vercel Cronは、Vercel上のサーバーレス関数を特定のスケジュールで定期実行する機能です。vercel.jsonという設定ファイルにエンドポイントのパスと実行頻度を記述するだけで、外部サービスを使わずにバッチ処理を完結させられます。
2026年現在、Next.jsをはじめとする各種フレームワークとの高い親和性が魅力です。データベースの更新や通知送信といった自動化タスクを実現するため、まずは各プランの仕様を確認しましょう。
Vercel Cron 無料枠とHobbyプランの制限
VercelのHobbyプランでもVercel Cronを無料で利用できますが、実行頻度には厳格な制限があります。個人開発やプロトタイプの運用に適した範囲での提供となっています。
無料枠における主な制限事項は次の3点です。
- 設定可能なジョブ数は2つまで
- 実行頻度は最低1時間に1回まで
- 同時実行数への制限
Hobbyプランでは分単位のスケジュール指定ができず、5分おきの実行などはエラーとなるか無視されます。1時間以上の間隔であれば無料で運用し続けられるため、コストを抑えた開発が可能です。
Vercel Cron 料金と有料プランの比較
ビジネス用途で頻繁なデータ更新が必要な場合は、Proプラン以上の検討が必要です。有料プランへ移行すると実行頻度の制限が大幅に緩和され、柔軟な運用が可能になります。
プランごとの主な違いは以下の通りです。
| 項目 | Hobbyプラン(無料) | Proプラン(有料) |
|---|---|---|
| 最短の実行間隔 | 1時間に1回 | 1分に1回 |
| ジョブの設定上限 | 2個 | 40個 |
| スケジュール単位 | 1時間ごと | 1分ごと |
プランの利用料金とは別に、呼び出されるサーバーレス関数の実行リクエスト数に応じた従量課金が発生します。運用コストを最小限にするため、処理内容に応じた適切なプラン選択が重要です。
サーバーレス関数のタイムアウト上限
Vercel Cronを利用する際は、ジョブの実行時間がサーバーレス関数のタイムアウト制限に依存する点に注意してください。Cron Jobsは内部的にHTTPリクエストを関数に送信するため、制限時間を超えると処理が強制終了されます。
プランごとのデフォルトのタイムアウト値は以下の通りです。
- Hobbyプランは10秒
- Proプランは60秒(最大300秒まで延長可能)
重いデータ処理を行う場合、このタイムアウト制限がCron Jobが動かない原因となることがあります。10秒以内に終わらない処理は、タスクの分割やEdge Functionsの活用など対策を検討しましょう。
日本時間の表記に関する注意点
Vercel Cronのスケジュール指定は、タイムゾーンがUTC(協定世界時)で固定されています。日本時間(JST)で実行したい場合は、9時間を差し引いて計算しなければなりません。
具体的な変換例をまとめました。
- 日本時間 午前0時はUTC 前日15時
- 日本時間 午前9時はUTC 午前0時
- 日本時間 午後6時はUTC 午前9時
例えば毎日日本時間の午前10時に実行したい場合は、0 1 * * *と記述します。時差計算を誤ると意図しないタイミングで処理が実行されるため、設定時は慎重に確認してください。
Vercel Cronの実装手順
Vercel Cronを使うことで、特定のスケジュールでジョブを定期実行できます。外部サービスを使わずVercelのインフラ内で自動処理を完結できるため、2026年現在、運用コスト削減の手段として多くの開発者に採用されています。
実装を始める前に、利用するプランの制限を把握しておきましょう。
| プラン | 最大ジョブ数 | 最小実行間隔 |
|---|---|---|
| Hobby (無料) | 2ジョブ | 1時間間隔 |
| Pro | 40ジョブ | 1分間隔 |
| Enterprise | 無制限 | 1分間隔 |
プランによって実行頻度が大きく異なります。Hobbyプランでは高頻度な処理は行えない点を念頭に置いて実装を進めましょう。
①:Next.jsでAPIルートを作成する
Vercel Cronを実装するには、まずNext.jsで実行用エンドポイントを作成します。Vercel Cronは、特定のURLにHTTP GETリクエストを送る仕組みで動作するためです。
2026年現在の開発では、app/api/cron/route.tsなどのディレクトリにGETハンドラを実装します。セキュリティを確保するため、CRON_SECRETを使用した認証が必須となります。
- VercelダッシュボードのSettingsでCRON_SECRETを環境変数に設定してください。
- APIルート内で、リクエストヘッダーのAuthorizationと環境変数を比較する処理を書きます。
import { NextRequest, NextResponse } from 'next/server';
export const runtime = 'edge';
export async function GET(request: NextRequest) {
const authHeader = request.headers.get('authorization');
if (authHeader !== `Bearer ${process.env.CRON_SECRET}`) {
return NextResponse.json({ error: 'Unauthorized' }, { status: 401 });
}
try {
console.log('Next.js cron ジョブが実行されました');
return NextResponse.json({ success: true });
} catch (error) {
return NextResponse.json({ success: false }, { status: 500 });
}
}
Next.jsでCronを実装する際は、必ずレスポンスを返却するように構築してください。返却がないとVercel側でジョブ失敗と判定される場合があります。
②:vercel.jsonでスケジュールを定義する
次にプロジェクトのルートディレクトリにvercel.jsonを作成します。このファイルにより、Vercelプラットフォームへ実行パスとスケジュール情報を伝えます。
スケジュールはUTC(協定世界時)を基準に記述してください。日本時間(JST)で設定する場合は、9時間の時差を考慮する必要があります。
| 実行したい日本時間 | 設定すべきCron式 (UTC) | 説明 |
|---|---|---|
| 毎日 AM 9:00 | 0 0 * * * | 日本時間9時はUTCの0時 |
| 毎日 PM 19:00 | 0 10 * * * | 日本時間19時はUTCの10時 |
| 平日 PM 14:00 | 0 5 * * 1-5 | 月曜から金曜のUTC 5時 |
vercel.jsonの記述例は以下の通りです。
{
"crons": [
{
"path": "/api/cron",
"schedule": "0 10 * * 1-5"
}
]
}
この設定により、平日19時に特定のパスへリクエストが送信されます。
③:プレビュー環境で動作を確認する
本番公開の前に、Vercel Cron Job Preview環境で正しく動作するか確認しましょう。事前にチェックすることで、デプロイ後のロジック不備や認証エラーを防げます。
2026年現在はダッシュボードでログを確認できますが、手動での実行確認が確実です。
- VercelのPreview DeploymentのURLを確認してください。
- ターミナルからcurlコマンドを使い、認証トークンを付与してリクエストを送ります。
curl -X GET "https://[プレビューURL]/api/cron" -H "Authorization: Bearer [設定したTOKEN]"
Cron Jobが動かないという事態を避けるため、期待通りのレスポンスが返るか必ず確認してください。
④:本番環境へデプロイする
最後にコードとvercel.jsonをリポジトリへプッシュし、本番環境へデプロイを行います。Vercelは変更を検知すると、自動的にCron設定を読み込みます。
デプロイ完了後は、ダッシュボードのSettings内にある「Cron Jobs」メニューを確認してください。スケジュールが正しく登録されていれば設定完了です。
運用開始後は以下の3点を継続的に管理しましょう。
- 実行ログの監視:ダッシュボードで成功・失敗のログを定期的に確認しましょう。
- タイムアウト制限:無料プランは関数の実行時間が短いため、重い処理には注意が必要です。
- 認証情報の管理:CRON_SECRETは必ず環境変数で管理し、リポジトリには含めないでください。
これらの手順を守ることで、2026年の最新仕様に基づいた安全な定期実行処理が構築できます。
Vercel Cronの安全な運用方法
Vercel Cronは、Next.jsアプリケーションなどで定期実行処理を簡単に実装できる強力な機能です。エンドポイントが公開されているため、適切なセキュリティ対策を施さないと第三者による不正リクエストを許すリスクがあります。2026年現在のモダンな開発環境では、認証情報の管理と検証プロセスを正しく理解し、実装することが不可欠です。
環境変数CRON_SECRETの登録
Vercel Cronを安全に利用するための第一歩は、専用の環境変数CRON_SECRETを登録することです。この設定により、Vercel側が定期実行時にリクエストヘッダーへ認証トークンを自動で付与します。
Vercelのプロジェクト設定画面からEnvironment Variablesを開き、以下の内容を登録してください。
| 項目 | 推奨される設定内容 |
|---|---|
| キー名 | CRON_SECRET |
| 値 | 16文字以上のランダムな文字列 |
| 適用環境 | Production, Preview, Development |
登録時の注意点は以下の通りです。
- 類推されにくい複雑なランダム文字列を使用する
- チーム内で共有せず、Vercel管理画面上でのみ秘匿情報として扱う
- ローカル開発環境のテスト用に.env.localへCRON_SECRETと同じ値を設定する
これにより、サーバーレス関数側で正当なリクエストかを判別するための基準が準備できます。
リクエストヘッダーの検証
環境変数の設定だけでは不十分なため、エンドポイント側のコードでリクエストヘッダーの検証ロジックを実装します。受信したトークンと設定済みのCRON_SECRETを比較して、不正アクセスを遮断してください。
Vercel Cronのリクエストには、AuthorizationヘッダーにBearer形式のトークンが含まれます。タイミング攻撃を防ぐためにcrypto.timingSafeEqualを用いた比較を推奨します。
具体的な検証手順は以下の通りです。
- リクエストヘッダーからAuthorization情報を取得する
- 受信したトークンと環境変数のCRON_SECRETを厳密に比較する
- 一致しない場合は401 Unauthorizedエラーを返して処理を中断する
- 一致した場合のみ本来の定期実行処理を実行する
このプロセスを徹底することで、外部の第三者がAPIルートを叩いてジョブを不正起動させる事態を防げます。
ジョブが動かない時の確認ポイント
Cron Jobが動かない状態に陥った場合、プラン制限や設定ミスを確認しましょう。2026年時点でも、料金プランによって実行頻度の制約が大きく異なります。
プランごとの実行制限をまとめると次の通りです。
| プラン | 実行頻度の制限 | 最大ジョブ数 |
|---|---|---|
| Hobby (無料) | 1時間に1回まで | 2つまで |
| Pro (有料) | 1分に1回まで | 40個まで |
問題を切り分けるための確認事項を以下に示します。
- vercel.jsonの
scheduleフィールドにおけるCron式の記述が正しいか - Hobbyプランで高頻度な設定を行い、デプロイエラーが発生していないか
- Cron Job Preview機能やcURLを用いてエンドポイントが200 OKを返すか
- サーバーレス関数のタイムアウト制限に処理内容が抵触していないか
まずは手動でエンドポイントの動作を確認し、その後に検証ロジックや設定ファイルを一つずつ見直すことが解決への近道です。
Vercel Cronの活用事例
Vercel Cronは、Vercel上のServerless Functionsを指定したスケジュールで定期実行できる強力な機能です。2026年現在、多くの開発者が外部のジョブスケジューラーを使わず、Vercel Cronを利用してインフラの集約と運用の効率化を図っています。
Vercel Cronを導入するメリットは、Next.jsなどのフレームワークと密接に連携した自動化処理を安価に構築できる点です。サーバーレス環境の特性を活かした、代表的な活用事例を詳しく解説します。
データベースの自動バックアップ
Vercel Cronを利用すれば、データベースの整合性を維持するための自動バックアップ処理を定期的に実行可能です。バックアップを自動化することで、人的ミスやシステム障害によるデータ紛失リスクを最小限に抑えられます。
Vercel Cronからバックアップ用APIを実行し、外部ストレージへデータを保存する構成は運用の手間を省けます。具体的な実装の流れは次の通りです。
- vercel.jsonにVercel Cronのスケジュールを設定する
- 指定時間にVercelがバックアップ用のAPIエンドポイントを呼び出す
- API内でDBデータを抽出し、クラウドストレージへ保存する
- 処理完了後にログを出力する
このようにVercel Cronをトリガーにすれば、サーバー管理なしで堅牢なバックアップ体制を構築できます。
エラー発生時のチャット通知
システムの異常検知やヘルスチェック結果をチャットツールに通知する仕組みも、Vercel Cronの有効な活用方法です。定期的な監視により、ユーザーが気づかないサイレントエラーを早期に発見してビジネスへの影響を抑えられます。
Cronジョブで外部APIの生存確認やエラーログの集計を行い、異常時にSlackやDiscordへ通知を送る仕組みが一般的です。通知システムを構築する際の主な設計ポイントを以下に示します。
| 項目 | 詳細 |
|---|---|
| 通知トリガー | 外部APIのステータスエラーやDBクエリのタイムアウトなど |
| セキュリティ対策 | CRON_SECRETによるリクエスト認証 |
| 送信先 | SlackやMicrosoft TeamsなどのWebhook経由 |
| 実行頻度 | 利用プランの制限内(Hobbyプランは1時間に1回まで) |
定期的なヘルスチェックをNext.jsのCron機能で実装すれば、安定したサービス運用が可能になります。
Vercelへのインフラ集約
Vercel Cronを活用する最大の利点は、アプリケーションに関するインフラをVercel一つに集約できる点にあります。インフラの集約は、管理コストの削減と開発スピードの向上に直結するからです。
従来はAWS EventBridge等で管理していた定期実行も、vercel.jsonでスケジュールを管理すれば環境の共通化が容易になります。インフラ集約による主な変化は以下の通りです。
- 認証管理の簡素化:Vercel独自のCron Secret機能でセキュアな呼び出しを標準サポート
- デプロイの一元化:アプリの更新と同時にCronスケジュールも同期される
- 監視の統合:Vercelのダッシュボード上で実行ログを確認できる
Cron Job Preview機能を活用して動作確認を行えば、Cron Jobが動かないといったトラブルも防げます。Cron機能をVercelに集約することで、開発者はインフラの複雑さから解放され、機能開発に専念できるでしょう。
まとめ:Vercel Cronで定期実行を自動化しよう
本記事では、Vercel Cronの基本仕様や料金プラン別の制限、実装手順、セキュリティを高める運用方法を解説しました。Next.jsのAPIルートとvercel.jsonを組み合わせることで、外部サービスを使わずVercel内で完結した定期実行の仕組みを構築できます。
2026年現在の最新仕様に基づき、タイムアウト制限やCRON_SECRETによる認証を正しく設定しましょう。無料のHobbyプランでも利用可能ですが、実行頻度などの制限を把握しておくことが大切です。
本記事のポイント
- Hobbyプランと有料プランで実行頻度やタイムアウトの上限が異なるため、用途に合わせたプラン選定が重要
- vercel.jsonでの定義に加え、CRON_SECRETなどの環境変数を用いたリクエスト検証で不正アクセスを防止する
- データベース更新などのインフラをVercelに集約することで、運用コストと保守の手間を最小限に抑えられる
Vercel Cronを賢く活用すれば、複雑なサーバー管理から解放され、アプリケーションの自動化をセキュアに実現可能です。開発効率を最大化させて、本来注力すべき機能開発にリソースを集中させましょう。
効率的なワークフローの構築方法や、高度なサーバーレス構成について不明な点があれば、お気軽にご相談ください。
Vercel Cronに関するよくある質問
参考文献
執筆者
編集部
BtoB向けのモダンWeb制作に関する情報を発信。Next.jsを活用したWeb制作、SEOに強いサイト設計、UI/UX、AIを活用した制作効率化など、実務に役立つ知見を中心に扱っています。
監修者
Ulty 代表/編集長
海外メディア企業でSEOエディターとして従事後、独立。複数メディア運営の知見をもとに、Next.jsを活用したモダンWeb制作とSEO設計を提供。AIを活用した効率化と高品質な実装を両立し、設計から制作・運用まで一貫して支援している。
関連記事
CloudflareとAWSを比較・料金の違いとハイブリッド構成手順
CloudflareとAWSを比較し、CloudFrontやWAFの機能や料金の違いに迷うご担当者へ最適な構成と移行手順を解説し、インフラコスト削減を実現します。
Cloudflare DNSとは?無料プランの設定方法と速度改善の手順
Webサイトの表示速度や安全性に悩むご担当者様へ、CloudflareのDNSの無料プランや料金体系、安全な設定手順を解説し、知識不要で高速通信を実現します。
CloudflareのCDNの仕組みと使い方・無料の設定手順【図解】
CloudflareのCDNの仕組み・設定・使い方・料金・障害対策を解説し、無料WAFによるクラウド環境の高速化でSEOの評価向上と負荷軽減を実現します。
CloudflareのD1とは?特徴や他DBとの違い・開発手順【入門】
CloudflareのD1の概要や他データベースとの違い、メリットや開発手順を学び導入することで、保守運用が不要なフルサーバーレス環境を構築できます。
CloudflareのRegistrar移管手順と料金・デメリット【完全版】
CloudflareのRegistrarの価格や移管、JPドメインの対応状況でお悩みの方へ、ドメイン料金一覧や無料機能のメリットを解説し、運用コスト削減へ導きます。
Cloudflareの危険性・待機画面の正体と安全な導入手順【解説】
Cloudflareの危険性や安全性に悩む担当者へ、スマホ表示や障害の不安を解説し、リスクを回避して安全に導入運用する正しい設定手順が分かる記事です。