nextjs-best-practices
Next.js App Routerの設計原則に基づき、Server Componentsの活用方法、データフェッチの戦略、ルーティングパターンのベストプラクティスを提供します。Next.jsプロジェクトの構成や実装方針について質問・相談する際に活用できます。
description の原文を見る
Next.js App Router principles. Server Components, data fetching, routing patterns.
SKILL.md 本文
Next.js ベストプラクティス
Next.js App Router 開発の原則。
1. Server コンポーネント vs Client コンポーネント
判定フロー
以下のどれが必要か...?
│
├── useState, useEffect, イベントハンドラ
│ └── Client コンポーネント ('use client')
│
├── 直接データ取得、インタラクティブでない
│ └── Server コンポーネント (デフォルト)
│
└── 両方必要?
└── 分割: Server 親 + Client 子
デフォルト設定
| 種類 | 用途 |
|---|---|
| Server | データ取得、レイアウト、静的コンテンツ |
| Client | フォーム、ボタン、インタラクティブUI |
2. データ取得パターン
取得戦略
| パターン | 用途 |
|---|---|
| Default | 静的 (ビルド時キャッシュ) |
| Revalidate | ISR (時間ベースの更新) |
| No-store | ダイナミック (毎リクエスト) |
データフロー
| ソース | パターン |
|---|---|
| データベース | Server コンポーネントで取得 |
| API | キャッシング付きで取得 |
| ユーザー入力 | Client ステート + Server Action |
3. ルーティング原則
ファイル規約
| ファイル | 目的 |
|---|---|
page.tsx | ルート UI |
layout.tsx | 共有レイアウト |
loading.tsx | ローディング状態 |
error.tsx | エラーバウンダリ |
not-found.tsx | 404 ページ |
ルート構成
| パターン | 用途 |
|---|---|
ルートグループ (name) | URL を変えずに整理 |
パラレルルート @slot | 同じレベルの複数ページ |
インターセプト (.) | モーダルオーバーレイ |
4. API ルート
ルートハンドラ
| メソッド | 用途 |
|---|---|
| GET | データ読取 |
| POST | データ作成 |
| PUT/PATCH | データ更新 |
| DELETE | データ削除 |
ベストプラクティス
- Zod での入力検証
- 適切なステータスコードの返却
- エラーを適切に処理
- 可能な場合 Edge runtime を使用
5. パフォーマンス原則
画像最適化
- next/image コンポーネント使用
- ファーストビュー要素に priority を設定
- blur プレースホルダ提供
- レスポンシブサイズ使用
バンドル最適化
- 重いコンポーネントに動的インポート使用
- ルートベースのコード分割 (自動)
- bundle analyzer で分析
6. メタデータ
静的 vs ダイナミック
| 種類 | 用途 |
|---|---|
| 静的エクスポート | 固定メタデータ |
| generateMetadata | ルート別ダイナミック |
必須タグ
- title (50-60 文字)
- description (150-160 文字)
- Open Graph 画像
- Canonical URL
7. キャッシング戦略
キャッシュレイヤ
| レイヤ | 制御 |
|---|---|
| リクエスト | fetch オプション |
| データ | revalidate/tags |
| フルルート | ルート設定 |
リバリデーション
| 方法 | 用途 |
|---|---|
| 時間ベース | revalidate: 60 |
| オンデマンド | revalidatePath/Tag |
| キャッシュなし | no-store |
8. Server Actions
ユースケース
- フォーム送信
- データ変更
- リバリデーショントリガ
ベストプラクティス
- 'use server' でマーク
- すべての入力を検証
- 型付けレスポンスを返す
- エラーハンドリング
9. アンチパターン
| ❌ しないこと | ✅ すること |
|---|---|
| 至るところで 'use client' | デフォルト Server |
| Client コンポーネントで取得 | Server で取得 |
| ローディング状態をスキップ | loading.tsx を使用 |
| エラーバウンダリを無視 | error.tsx を使用 |
| 大きな Client バンドル | 動的インポート使用 |
10. プロジェクト構造
app/
├── (marketing)/ # ルートグループ
│ └── page.tsx
├── (dashboard)/
│ ├── layout.tsx # ダッシュボードレイアウト
│ └── page.tsx
├── api/
│ └── [resource]/
│ └── route.ts
└── components/
└── ui/
覚えておくこと: Server コンポーネントがデフォルトである理由があります。ここから始めて、必要な場合のみ Client を追加してください。
使用時期
このスキルは、概要に記載されたワークフローまたはアクションを実行する場合に適用されます。
制限事項
- このスキルは、上記の説明と明確に一致するタスクの場合のみ使用してください。
- 出力を環境固有の検証、テスト、または専門家のレビューの代替として扱わないでください。
- 必要な入力、権限、安全性の境界、または成功基準が不足している場合は、中止して明確にしてください。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- sickn33
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/sickn33/antigravity-awesome-skills / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。