スキル一覧に戻る

frontend-guidelines

Yuji181181 / Next-Layered-template

0🍴 0📅 2026年1月13日

レイヤードアーキテクチャを採用したNext.jsのテンプレートリポジトリ

SKILL.md

# Frontend Coding Guidelines

このプロジェクトにおけるフロントエンド実装のルールです。
AIはコードを生成する際、必ずこのドキュメントに従ってください。

## 1. Component Implementation (基本構造)

### コンポーネント定義
- **Function Declaration**: `React.FC` は使用せず、通常の関数コンポーネントとして定義してください。
- **Type Definition**: Propsの型定義は `interface` ではなく `type` を推奨し、コンポーネントの直上に記述してください。
- **Props Destructuring**: Propsは引数部分で分割代入(Destructuring)して受け取ってください。

### エクスポート設定
- **Named Export**: リファクタリングの容易性と一貫性のため、`export default` は使用せず、必ず `export const` (Named Export) を使用してください。

**実装例:**
```tsx
type UserCardProps = {
  name: string;
  age: number;
};

// 正しい書き方
export const UserCard = ({ name, age }: UserCardProps) => {
  return (
    <div className="border p-4">
      <p>{name} ({age})</p>
    </div>
  );
};
```

## 2. Next.js App Router Rules

### 'use client' の明記
- **Client Components**: 以下の機能を使用するファイルは、必ずファイルの**最上部(1行目)**に `'use client';` を記述してください。
    - React Hooks (`useState`, `useEffect`, `useCallback` など)
    - Data Fetching Hooks (`useSWR` など)
    - イベントリスナー (`onClick`, `onChange` など)
    - ブラウザ専用API (`window`, `document` など)
- **Server Components**: 上記の機能を使用しないコンポーネントは、デフォルトの Server Component のままとし、`'use client'` は記述しないでください。

## 3. Styling (Pure Tailwind CSS)

- **No UI Libraries**: `shadcn/ui`, `MUI`, `Chakra UI` などのコンポーネントライブラリは**使用しません**。
- **Pure Tailwind**: 標準のHTMLタグ(`div`, `button`, `input` 等)に対し、直接 Tailwind CSS のユーティリティクラスを適用してスタイリングを行ってください。
- **Components Location**:
    - 汎用パーツ(Button等)は `src/components/common` に配置してください。
    - 機能パーツ(Form等)は `src/components/domain` に配置してください。