next16-expert について
Next.js 16.1.1 と React 19.2 を使う開発者向けの専門スキルガイドです。Proxy、キャッシュ、PPR、React のパターンに加え、実践的な指針とアンチパターンを扱います。
主な機能
- 01proxy.ts による全体リクエスト処理
- 02use cache によるデータキャッシュ管理
- 03React 19.2 のフォームパターン
- 04サーバー側の取得と変更の指針
- 05コンポーネント設計とアンチパターン
活用シーン
- 01middleware.ts から proxy.ts への移行
- 02データサービスのキャッシュと無効化
- 03状態管理を備えたフォームの構築
- 04Server Components と Server Actions の設計
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ yuniorglez/ gemini-elite-core --skill next16-expertインストール後、Claude Code で/next16-expertを入力して読み込まれたか確認します。
同梱ファイルreferences/proxy-deep-dive.mdreferences/unified-caching.md
詳細
⚡ スキル:next16-expert
説明
Next.js 16.1.1 と React 19.2 のエコシステムにおけるシニアスペシャリストです。このスキルでは、高パフォーマンスな Proxy & Cache のパラダイム、部分的なプリレンダリング(PPR)、および middleware.ts から proxy.ts への必須の移行に焦点を当てています。最新のフルスタック開発向けに、本番環境ですぐに使えるパターンを提供します。
目次
- クイックスタート
- Proxy 革命(
proxy.ts) - 統合キャッシュ(
use cache) - React 19.2 のパターン
- データ取得と変更
- コンポーネント設計と単一責任
- 「禁止事項」リスト(アンチパターン)
- 高度なリファレンス
クイックスタート
エリート品質のプロジェクトを初期化します。
npx create-next-app@latest my-elite-app \
--typescript \
--tailwind \
--eslint \
--app \
--src-dir \
--import-alias "@/*"
エリート設定(next.config.ts):
import type { NextConfig } from "next";
const nextConfig: NextConfig = {
experimental: {
ppr: true, // Enable Partial Pre-rendering
dynamicIO: true, // New IO optimization for Next.js 16
reactCompiler: true, // Stable React Compiler support
},
logging: {
fetches: {
fullUrl: true,
},
},
};
export default nextConfig;
Proxy 革命(proxy.ts)
Next.js 16 では、middleware.ts はレガシーです。すべてのグローバルなネットワーク処理は proxy.ts に配置する必要があります。これによりランタイムが安定し、すべてのリクエストを適切に制御できます。
標準的なエリート Proxy(src/app/proxy.ts):
import { nextProxy } from 'next/server';
export default nextProxy(async (request) => {
const url = request.nextUrl;
// Global Routing Logic
if (url.pathname.startsWith('/api/v1')) {
// Standardize API versioning at the proxy level
}
// Security Headers & Request Decoration
request.headers.set('X-Elite-Engine', '16.1.1');
const response = await fetch(request);
// Performance Monitoring
response.headers.set('Server-Timing', 'elite;dur=20');
return response;
});
A/B テストや高度なセキュリティについて詳しくは、proxy-deep-dive.md を参照してください。
統合キャッシュ(use cache)
Next.js 16 では use cache ディレクティブが導入され、revalidatePath の複雑さを、関数単位の明示的なキャッシュに置き換えられます。
キャッシュされたデータサービス(src/services/data.ts):
import { cacheLife, cacheTag } from 'next/cache';
export async function getGlobalMetrics() {
'use cache';
cacheLife(60); // Cache for 60 seconds
cacheTag('metrics');
const data = await fetch('https://api.internal/metrics').then(r => r.json());
return data;
}
無効化のパターン:
revalidateTag('metrics'):即時にパージします。updateTag('metrics'):推奨。古いデータとしてマークし、バックグラウンドで再検証します(SWR)。
複雑なキャッシュ戦略については、unified-caching.md を参照してください。
React 19.2 のパターン
Next.js 16 で React 19.2 の安定性を活用し、定型コードをなくします。
1. フォームでの useActionState
クライアントコンポーネントで、手動によるローディング状態やエラー状態の管理をなくします。
'use client';
import { useActionState } from 'react';
import { signUpAction } from '@/actions/auth';
export function SignUpForm() {
const [state, action, isPending] = useActionState(signUpAction, null);
return (
<form action={action}>
<input name="email" type="email" required />
{state?.errors?.email && <p className="text-red-500">{state.errors.email}</p>}
<button disabled={isPending}>
{isPending ? 'Processing...' : 'Sign Up'}
</button>
</form>
);
}
2. <Activity /> コンポーネント
パフォーマンスコストをかけずに、バックグラウンドのタブや非表示の UI をプリレンダリングするために使用します。
import { Activity } from 'react';
export function TabSystem({ activeTab }) {
return (
<>
<Activity mode={activeTab === 'home' ? 'visible' : 'hidden'}>
<HomeTab />
</Activity>
<Activity mode={activeTab === 'settings' ? 'visible' : 'hidden'}>
<SettingsTab />
</Activity>
</>
);
}
データ取得と変更
サーバーファーストのアプローチ(RSC)
データの 80% はサーバーコンポーネントで取得してください。
// app/dashboard/page.tsx
import { getGlobalMetrics } from '@/services/data';
export default async function Page() {
const metrics = await getGlobalMetrics(); // Direct, cached call
return (
<div>
<h1>Dashboard</h1>
<pre>{JSON.stringify(metrics, null, 2)}</pre>
</div>
);
}
サーバーアクション(変更処理)
すべての POST/PATCH/DELETE 操作で必須です。
// actions/auth.ts
'use server';
import { updateTag } from 'next/cache';
export async function signUpAction(prevState: any, formData: FormData) {
const email = formData.get('email');
try {
await db.user.create({ data: { email } });
updateTag('users'); // Background revalidation
return { success: true };
} catch (e) {
return { errors: { email: 'Invalid email' } };
}
}
コンポーネント設計と単一責任
- 300 行ルール:コンポーネントのファイルは 300 行未満にしてください。これを超える場合は、サブコンポーネントを抽出するか、ロジックを
hooks/またはservices/に移してください。 - ハイドレーションガード:ブラウザー専用の状態に依存するコンポーネントは、必ず保護してください。
'use client';
import { useState, useEffect } from 'react';
export function SafeClientComponent({ children }) {
const [mounted, setMounted] = useState(false);
useEffect(() => setMounted(true), []);
if (!mounted) return <div className="animate-pulse" />; // Placeholder
return <>{children}</>;
}
「禁止事項」リスト(アンチパターン)
middleware.tsは使用しないでください:proxy.tsを使用してください。Next.js 16 ではmiddleware.tsはレガシーと見なされ、パフォーマンスも劣ります。- 単純な UI 更新に
revalidatePathを使用しないでください:Server Actions 内でupdateTagを使用すると、より優れた UX(Stale-While-Revalidate)が得られます。 - Suspense を使わずに RSC から Cookie にアクセスしないでください:
cookies()またはheaders()にアクセスすると、ルートが動的になります。依存するコンポーネントを<Suspense>でラップし、ページの残りの部分を静的に保ってください(PPR)。 - コンポーネントにバレルファイル(
index.ts)を使用しないでください:ツリーシェイキングが無効になり、バンドルが肥大化します。コンポーネントファイルから直接インポートしてください。 - API URL をハードコードしないでください:環境の管理には、環境変数と
proxy.tsレイヤーを使用してください。
高度なリファレンス
- Proxy の詳細 — 高度なルーティングとセキュリティ。
- 統合キャッシュ —
use cacheディレクティブを使いこなします。 - React エキスパート — 高度なパフォーマンス最適化について。
- Supabase エキスパート — バックエンドと認証の統合について。
Next.js 16.1.1 と React 19.2 向けに最適化されています。更新日:2026 年 1 月 22 日 - 14:36