メインコンテンツにスキップ
株式会社ゼットリンカー - Next.js システム開発専門
Next.js

中小企業のNext.jsフルスクラッチで、テストをどこまで書くか|AI駆動開発時代の現実的なテスト戦略 (Vitest + Playwright)

Conclusion

Next.js 16 のテストは Vitest(ユニット) と Playwright(E2E) の2本立てを基本に、「何をテストしないか」を先に決め、テストケースの妥当性だけは人間が責任を持つのが、中小企業向けフルスクラッチで現実的なライン引きです。

中小企業向けの Next.js フルスクラッチ受託で、テストをどこまで書くか。Next.js 16 公式が標準とする Vitest + Playwright 構成と、async Server Component が Vitest 非対応であるという制約を踏まえ、限られた予算で「何をテストしないか」を先に決める考え方を整理します。AI 駆動開発でテストを速く書けるいまだからこそ、テストケースの妥当性は人間が責任を持つ、という現場のラインを共有します。

8分で読めます
Next.jsNext.jsテストVitestPlaywrightAI駆動開発中小企業

中小企業向けの Next.js フルスクラッチ受託をやっていると、「テストはどこまで書くんですか」という質問をよく受けます。予算が限られる案件では、テストを全部書く余裕も、逆にゼロにする勇気もありません。私たちが現場で落ち着いている「ちょうどいいライン」を、2026 年時点の公式情報を踏まえて整理します。AI 駆動開発でテストを書く量が増えたいまだからこそ、改めて考え直す価値があるテーマだと思っています。

Next.js 16 時代のテストは Vitest と Playwright の2本立てが基本

まず前提として、テストのツール選定はかなり落ち着きました。Next.js 公式の「Testing」ガイドでは、ユニットテストに Vitest、E2E テストに Playwright を使う構成が標準的に紹介されています。

公式の Vitest ガイドには、見落としやすいけれど重要な注意書きがあります。「async Server Components は React エコシステムにとって新しいため、Vitest は現時点で対応していない。同期的な Server / Client Components のユニットテストは書けるが、async コンポーネントには E2E テストを推奨する」という趣旨の記述です(出典: Next.js 公式 Vitest ガイド、ドキュメントは Next.js 16.2.7 系、2026-06-01 時点)。

これは中小企業の業務システムでかなり効いてくる制約です。App Router の画面の多くは async な Server Component なので、「Vitest で全部ユニットテストする」という発想だと早々に行き詰まります。私たちは次のように割り切っています。

  • Vitest: 同期コンポーネント、Server Actions の純粋なロジック、Zod スキーマの検証
  • Playwright: ログインフロー、フォーム送信、async Server Component を含む画面の表示確認

Playwright も公式ガイドで「Chromium・Firefox・WebKit を1つの API で自動化できる E2E テストフレームワーク」と位置づけられており(出典: Next.js 公式 Playwright ガイド)、ブラウザの実挙動に依存する部分はこちらに寄せるのが素直です。

中小企業の予算で「何をテストしないか」を先に決める

テスト戦略というと「何をテストするか」を考えがちですが、私たちはまず「何をテストしないか」を決めます。受託の予算は有限なので、全部に同じ密度のテストを書くと、納期にも費用にも跳ね返ります。

私たちの目安はこうです。

  • 必ずテストする: 金額計算、在庫数の増減、権限チェック、外部連携の境界
  • E2E で薄く守る: 主要な業務フロー(受注 → 確定 → 通知 など)を1本ずつ通す
  • あえて書かない: 見た目だけの静的ページ、管理画面の細かい表示分岐

Next.jsのテスト戦略を3カラムで図解。必ずテストする対象(金額計算・在庫・権限・外部連携=Vitest)、E2Eで薄く守る主要業務フロー(Playwright)、あえて書かない静的ページや細かい表示分岐の3段階に分類して示す。

権限チェックを必ずテストする理由は、認可ロジックの集約と地続きです。私たちが Server Actions のセキュリティを Data Access Layer で守る で書いた通り、DAL に認可を寄せておくと、テストの対象も「DAL の関数」に集約できて、テストコストそのものが下がります。設計とテスト戦略はセットで考えるのが結局いちばん安く済みます。

ここで一度お知らせ

15分のカジュアル相談

事例・要件未定でもOK/営業はしません/所要時間15分

カジュアルに相談する

AI にテストを書かせる前に「テストケースの妥当性」は人間が決める

2026 年に入って、テストコードは AI 駆動開発でかなり速く書けるようになりました。Claude Code や Cursor に「この Server Action のユニットテストを書いて」と頼めば、それらしいテストが一気に出てきます。

ただ、ここに落とし穴があります。AI が書くのは「コードが現状どう動くかをなぞるテスト」になりがちで、「業務的に正しいか」を保証してはくれません。テストが全部グリーンでも、仕様の解釈がずれていれば意味がないわけです。

私たちは Cursor と Claude Code の使い分け でも書いたように、「テストコードは AI に書かせるが、テストケースの妥当性は人間がレビューする」というラインを守っています。具体的には、

  1. 人間が「このケースを満たせば仕様 OK」というテストケースの一覧を日本語で先に書く
  2. その一覧を AI に渡して、Vitest / Playwright のテストコードに落としてもらう
  3. 生成されたテストを人間が読み、境界値や異常系の抜けを補う

この順番を守るだけで、「AI が書いたグリーンなのに本番で壊れる」事故がかなり減ります。テストを速く書けるようになったいまこそ、ケース設計という人間側の仕事が相対的に重くなった、というのが実感です。Claude Code 単体での進め方は Claude Code で Next.js を開発する 2026 年の進め方 にまとめています。

Next.js 16 のキャッシュとテストの関係に注意する

もう1つ、Next.js 16 特有の注意点があります。Next.js 16 では next lint コマンドが廃止され、Turbopack が標準のバンドラになり、"use cache" ディレクティブを中心とした Cache Components が導入されました(出典: Next.js 16 公式ブログ、2025-10-21 公開)。

キャッシュが絡む画面は、テストでも「キャッシュされた古い値を見ているのか、最新の値を見ているのか」が曖昧になりやすい領域です。E2E テストで「更新したのに反映されない」とハマったときは、テストのバグではなくキャッシュ設計の問題であることが多い、という肌感覚があります。use cache の使いどころそのものは Next.js 16 の use cache を中小企業のフルスクラッチでどう使い分けるか で詳しく書いているので、テストでキャッシュ周りにハマったら、まず設計側を疑うのがおすすめです。

過去に痛い目を見た話は Next.js 開発の失敗から学んだこと にもまとめています。テストは「失敗を未然に防ぐ仕組み」なので、過去の失敗パターンとセットで読むと腹落ちしやすいと思います。

まとめ

  • Next.js 16 のテストは Vitest(ユニット) + Playwright(E2E)の2本立てが公式でも標準
  • async Server Component は Vitest 非対応、E2E で守るのが公式の推奨
  • 中小企業の予算では「何をテストしないか」を先に決め、金額・在庫・権限・外部連携に密度を寄せる
  • テストコードは AI に書かせてよいが、テストケースの妥当性は人間が責任を持つ
  • Next.js 16 のキャッシュ周りでハマったら、テストのバグではなく設計を疑う

「テストにどこまで予算をかけるべきか分からない」「AI 駆動開発でテストを増やしたいが品質が不安」という中小企業の方は、株式会社ゼットリンカーの無料相談フォーム からご相談ください。案件規模に合わせて、現実的なテスト戦略の引き方からお話しします。

本記事は Next.js 16.x 時点の情報です

最終更新:2026年6月2日

Share this article

15分のカジュアル相談

事例・要件未定でもOK/営業はしません/所要時間15分

カジュアルに相談する

次に読む記事

ALL ARTICLES →
01 / 03Next.js

中小企業のNext.jsフルスクラッチで、Server Actions のセキュリティを現実的に守る|Data Access Layer の置き方

Next.js 16 系の App Router で Server Actions を使う以上、middleware だけの認証では足りません。Data Access Layer (DAL) に認可ロジックを集約し、Zod 検証と DTO 返却を最低ラインに置く。中小企業向けフルスクラッチで「やりすぎず、抜けも作らない」セキュリティ設計を、受託の現場感で整理します。

·9
02 / 03Next.js

中小企業のNext.jsフルスクラッチで、セキュリティをどう担保するか|2026年版チェックリスト(認証・入力検証・脆弱性対策)

「Next.js はセキュリティ的に大丈夫?」に総論で答えます。2026年5月の大型セキュリティリリース(middleware認可迂回 CVE-2026-44575、16.2.6で修正)を起点に、本体のパッチ追従、認証・認可をData Access Layerに寄せる設計、Zodによる入力検証とServer Actions、環境変数・シークレット管理、依存パッケージの脆弱性、デプロイ設定までを、中小企業向けフルスクラッチの現実的なラインで整理。各論は詳細記事へリンクします。

·9
03 / 03Next.js

受発注管理をSaaSからNext.jsフルスクラッチに切り替える判断基準

受発注SaaSの機能過剰やデータ出力の制約に悩む経営者向けに、Next.jsフルスクラッチへ切り替えるべきサインと残すべきサインを整理。Firestoreでの状態遷移設計と並行運用の進め方を解説します。

·9

プライバシーポリシー

株式会社ゼットリンカー(以下、「当社」といいます。)は、お客様の個人情報の重要性を認識し、 その保護の徹底を図るため、以下のプライバシーポリシー(以下、「本ポリシー」といいます。)を定めます。

1. 個人情報の定義

本ポリシーにおいて「個人情報」とは、生存する個人に関する情報であって、 当該情報に含まれる氏名、生年月日その他の記述等により特定の個人を識別することができるもの、 及び他の情報と容易に照合することができ、それにより特定の個人を識別することができることとなるものを指します。

2. 個人情報の収集

当社は、お客様が当社のサービスをご利用になる際、お客様の個人情報を収集することがあります。収集する個人情報は以下の通りです:

  • 氏名
  • メールアドレス
  • 電話番号
  • 会社名・組織名
  • 住所
  • その他当社が定める入力フォームにお客様が入力する情報

3. 個人情報の利用目的

当社は、お客様からご提供いただいた個人情報を、以下の目的で利用します:

  • お客様への連絡やサービスの提供
  • お客様からのお問い合わせへの対応
  • 当社サービスの改善や新サービスの開発
  • メールマガジンの配信(お客様の同意がある場合)
  • 契約や法令等に基づく権利の行使や義務の履行
  • その他、上記利用目的に付随する目的

4. 個人情報の第三者提供

当社は、以下の場合を除き、お客様の同意なく個人情報を第三者に提供することはありません:

  • 法令に基づく場合
  • 人の生命、身体または財産の保護のために必要がある場合であって、本人の同意を得ることが困難である場合
  • 公衆衛生の向上または児童の健全な育成の推進のために特に必要がある場合
  • 国の機関もしくは地方公共団体またはその委託を受けた者が法令の定める事務を遂行することに対して協力する必要がある場合

5. 個人情報の管理

当社は、お客様の個人情報を正確かつ最新の状態に保ち、個人情報への不正アクセス、 個人情報の紛失、破損、改ざん及び漏洩などを防止するため、 セキュリティシステムの維持・管理体制の整備等の必要な措置を講じ、安全対策を実施し個人情報の厳重な管理を行います。

6. 個人情報の開示・訂正・削除

お客様は、当社に対してご自身の個人情報の開示を求めることができます。 また、開示の結果、個人情報の内容が事実でないことが判明した場合には、 速やかに訂正または削除に応じます。

7. 導入事例の公開について

当社は、お客様から依頼いただいたプロジェクトを導入事例として記事にさせていただく場合があります。導入事例として公開する場合は、以下の点に配慮いたします:

  • 機密情報や個人情報は公開いたしません
  • 社名を公開する場合は、公開内容について事前にお客様に確認いただきます
  • 社名を非公開とする場合でも、お客様のご要望に応じて公開内容を確認いただくことが可能です

8. Cookie(クッキー)の使用について

当社のウェブサイトでは、お客様により良いサービスを提供するため、Cookie を使用することがあります。 Cookie により個人を識別できる情報を収集することはありません。 お客様はブラウザの設定により Cookie の受信を拒否することができます。

9. SSL(Secure Socket Layer)について

当社のウェブサイトはSSLに対応しており、ウェブブラウザとウェブサーバーとの通信を暗号化しています。 お客様が入力する個人情報は自動的に暗号化されて送受信されるため、 万が一、第三者が傍受した場合でも内容を解読することは困難です。

10. プライバシーポリシーの変更

当社は、必要に応じて、本ポリシーの内容を変更することがあります。 変更後のプライバシーポリシーについては、当社ウェブサイトに掲載したときから効力を生じるものとします。

11. お問い合わせ

本ポリシーに関するお問い合わせは、以下の窓口までお願いいたします。

株式会社ゼットリンカー

〒160-0023

東京都新宿区西新宿3丁目3番13号西新宿水間ビル2F

代表取締役: 金原隆利

お問い合わせ先: info@zetlinker.com

制定日:2024年1月1日

最終改訂日:2026/7/20

利用規約

この利用規約(以下、「本規約」といいます。)は、株式会社ゼットリンカー(以下、「当社」といいます。)が 提供するウェブサイトおよびサービス(以下、「本サービス」といいます。)の利用条件を定めるものです。 お客様は、本規約に同意した上で、本サービスをご利用ください。

第1条(適用)

1. 本規約は、お客様と当社との間の本サービスの利用に関わる一切の関係に適用されるものとします。

2. 当社は本サービスに関し、本規約のほか、ご利用にあたってのルール等、各種の定め(以下、「個別規定」といいます。)を することがあります。これら個別規定はその名称のいかんに関わらず、本規約の一部を構成するものとします。

3. 本規約の規定と個別規定の規定が異なる場合は、個別規定において特段の定めなき限り、個別規定の規定が優先されるものとします。

第2条(定義)

本規約において使用する以下の用語は、各々以下に定める意味を有するものとします。

  • 「利用契約」とは、本規約を契約条件として当社とお客様との間で締結される、本サービスの利用契約
  • 「知的財産権」とは、著作権、特許権、実用新案権、意匠権、商標権その他の知的財産権(それらの権利を取得し、またはそれらの権利につき登録等を出願する権利を含みます。)
  • 「投稿データ」とは、お客様が本サービスを利用して投稿その他送信するコンテンツ(文章、画像、動画その他のデータを含みますがこれらに限りません。)

第3条(本サービスの提供)

1. お客様は、本規約に同意の上、当社の定める方法によって利用登録を申請し、当社がこれを承認することによって、本サービスを利用することができるようになります。

2. 当社は、お客様に以下のいずれかの事由があると判断した場合、利用登録の申請を承認しないことがあり、その理由については一切の開示義務を負わないものとします。

  • 利用登録の申請に際して虚偽の事項を届け出た場合
  • 本規約に違反したことがある者からの申請である場合
  • その他、当社が利用登録を相当でないと判断した場合

第4条(ユーザーIDおよびパスワードの管理)

1. お客様は、自己の責任において、本サービスのユーザーIDおよびパスワードを適切に管理するものとします。

2. お客様は、いかなる場合にも、ユーザーIDおよびパスワードを第三者に譲渡または貸与し、もしくは第三者と共用することはできません。

3. 当社は、ユーザーIDとパスワードの組み合わせが登録情報と一致してログインされた場合には、そのユーザーIDを登録しているお客様自身による利用とみなします。

第5条(禁止事項)

お客様は、本サービスの利用にあたり、以下の行為をしてはなりません。

  • 法令または公序良俗に違反する行為
  • 犯罪行為に関連する行為
  • 本サービスの内容等、本サービスに含まれる著作権、商標権ほか知的財産権を侵害する行為
  • 当社、ほかのお客様、またはその他第三者のサーバーまたはネットワークの機能を破壊したり、妨害したりする行為
  • 本サービスによって得られた情報を商業的に利用する行為
  • 当社のサービスの運営を妨害するおそれのある行為
  • 不正アクセスをし、またはこれを試みる行為
  • 他のお客様に関する個人情報等を収集または蓄積する行為
  • 不正な目的を持って本サービスを利用する行為
  • 本サービスの他のお客様またはその他の第三者に不利益、損害、不快感を与える行為
  • 他のお客様に成りすます行為
  • 当社が許諾しない本サービス上での宣伝、広告、勧誘、または営業行為
  • 面識のない異性との出会いを目的とした行為
  • 当社のサービスに関連して、反社会的勢力に対して直接または間接に利益を供与する行為
  • その他、当社が不適切と判断する行為

制定日:2024年1月1日

最終改訂日:2026/7/20