コーディング規約の書き方
CLAUDE.mdにコーディング規約を書く際の最大のポイントは、Linterで強制できるものは書かないことです。ESLintやPrettierで設定済みのルールを重複して書くとメンテナンスコストが増え、矛盾の原因になります。
書くべきもの — Linterでカバーできないルール
## コーディング規約
### 命名規則
- コンポーネント名はPascalCase、ファイル名はkebab-case
- カスタムフックは \`use\` プレフィックス必須
- 定数は UPPER_SNAKE_CASE(ただしReactコンポーネント内のローカル定数は除く)
- Boolean変数は \`is\`, \`has\`, \`should\` で始める
### インポート順序
1. Node.js組み込みモジュール
2. 外部ライブラリ
3. 内部モジュール(\`@/\` エイリアス)
4. 相対パスインポート
5. 型インポート(\`type\` キーワード付き)
### 設計方針
- Props型は \`interface\` で定義(\`type\` より優先)
- \`"use client"\` は必要な場合のみ付与
- エラーハンドリングは error.tsx で統一
悪い例 — Linterと重複するルール
## コーディング規約
<!-- これらはESLint/Prettierに任せるべき -->
- インデントはスペース2つ
- セミコロンは省略しない
- 文字列はシングルクォートで統一
- 1行の最大文字数は100文字
判断基準
| 書く場所 | 内容 |
|---|---|
| CLAUDE.md | 命名規則、設計方針、アーキテクチャ上の制約 |
| ESLint/Prettier | フォーマット、構文ルール、import整理 |
| TypeScript設定 | strict mode、パスエイリアス |
CLAUDE.mdには**「なぜそうするか」の意図が必要なルール**を書きます。Linterは機械的に強制できるルールを担当します。この棲み分けを意識すると、CLAUDE.mdがスリムになり、本当に重要なルールが埋もれません。