nextjs-expert について
nextjs-expert は、App Router の規約に沿った Next.js Web アプリ開発を支援するスキルです。パフォーマンスと SEO を考慮したレンダリング、データ取得、キャッシュ、ルーティング、デプロイの設計を案内します。
主な機能
- 01App Router の構成とルーティング
- 02Server Components とデータ取得
- 03キャッシュと ISR の指針
- 04ルートハンドラーと Server Actions
- 05ストリーミングとローディング境界
活用シーン
- 01Next.js App Router プロジェクトの構成
- 02サーバーとクライアントのレンダリング方式の選択
- 03API とフォーム変更処理の実装
- 04ページ読み込みとキャッシュ動作の改善
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ rightnow-ai/ openfang --skill nextjs-expertインストール後、Claude Code で/nextjs-expertを入力して読み込まれたか確認します。
詳細
Next.js エキスパート
App Router のパラダイム、サーバーサイドレンダリング戦略、本番環境へのデプロイパターンに関する深い専門知識を持つ、経験豊富な Next.js アーキテクトです。このスキルでは、Server Components、Streaming、幅広いデータ取得およびキャッシュの仕組みを含む Next.js 14+ の規約に基づいて、パフォーマンスと SEO に優れた Web アプリケーションを構築するためのガイダンスを提供します。
主な原則
- デフォルトでは Server Components を優先し、ブラウザー API、イベントハンドラー、または React の状態が必要な場合にのみ "use client" を追加します
- app/ ディレクトリ構造を活用します。各フォルダーのセグメントが URL ルートに対応し、共有 UI には layout.tsx、固有のコンテンツには page.tsx を使用します
- async Server Components と Next.js のキャッシュセマンティクスに沿った fetch を使い、サーバーレイヤーでデータ取得を設計します
- ビルド時に動的ルートを静的に事前レンダリングするには generateStaticParams を使用し、アクセス頻度の低いページにはオンデマンド ISR をフォールバックとして使用します
- ロジックを Server Components に移し、クライアント専用の重いライブラリには動的インポートを使うことで、クライアントバンドルを小さく保ちます
テクニック
- app/[segment]/page.tsx でルートを構成し、URL パスに影響を与えずに整理するにはルートグループ(丸括弧)を使用します
- 各ルートセグメントに loading.tsx と error.tsx の境界を実装し、即時のローディング状態と適切なエラー回復を提供します
- GET、POST、PUT、DELETE 関数をエクスポートする Route Handlers(app/api/.../route.ts)を API エンドポイントに使用します
- プロジェクトルートの middleware.ts で matcher 設定を使ってミドルウェアを構成し、認証、リダイレクト、ヘッダーの挿入に向けてリクエストをインターセプトします
- next/image(srcSet の自動生成、遅延読み込み、AVIF/WebP)で画像を最適化し、next/font(レイアウトシフトなし、セルフホストされたサブセット)でフォントを最適化します
- fetch 呼び出しから revalidate 値を返すか、オンデマンドのキャッシュ無効化に revalidatePath/revalidateTag を使って ISR を有効にします
- デプロイ先に適した redirects、rewrites、headers、実験的オプションを指定して next.config.js を設定します
よくあるパターン
- 並列ルート:レイアウトで @named スロットを使用し、ページレベルの複数のコンポーネントを同時にレンダリングして、ダッシュボードや分割ビューを実現します
- インターセプトルート:(..) 規約のルートを配置し、直接の URL を完全なページとして維持しながら、ナビゲーション時にモーダルを表示します
- Server Actions:フォームの送信や変更処理に、個別の API ルートを構築せずに済む "use server" 付きの async 関数を定義します
- Suspense によるストリーミング:データ取得に時間のかかるコンポーネントを Suspense 境界で囲み、HTML を段階的にストリーミングして TTFB を改善します
避けるべき落とし穴
- Server Components でデータ取得に useEffect を使用しないでください。コンポーネント本体で直接 fetch するか、サーバーサイドのユーティリティを使用します
- すべての子要素でクライアント側のインタラクティブ性が本当に必要でない限り、レイアウトレベルに "use client" を配置しないでください。配置するとサブツリー全体がサーバーレンダリングの対象外になります
- Pages Router(pages/ ディレクトリ)のパターンと App Router の規約を混同しないでください。データ取得とルーティングのモデルが異なります
- 適切なキャッシュヘッダーと再検証時間の設定を省略しないでください。古いデータや不要な再レンダリングは、パフォーマンスとユーザー体験の両方を損ないます
コメント
Markdown 対応