Cursor Rules ã®æžãæ¹ã¬ã€ã â ãããžã§ã¯ãå¥ãã³ãã¬ãŒãã»ãã¹ããã©ã¯ãã£ã¹ã»CLAUDE.mdæ¯èŒã2026幎çã
Cursorã®Rulesãã¡ã€ã«ã®æžãæ¹ã培åºè§£èª¬ã.cursorrules ã®åºæ¬æ§æãNext.jsã»Pythonã»Goçã®ãããžã§ã¯ãå¥ãã³ãã¬ãŒãããã¹ããã©ã¯ãã£ã¹ãCLAUDE.mdãšã®æ¯èŒãŸã§ç޹ä»ããŸãã
Cursor Rules ãšã¯ â AI ã«ããããžã§ã¯ãã®ã«ãŒã«ããäŒããä»çµã¿
ãCursorã«äœåºŠãåãæç€ºãç¹°ãè¿ããŠããŸãããïŒã Cursor Rules ãæ£ããæžãã ãã§ãAIããããžã§ã¯ãã®ã³ãŒãã£ã³ã°èŠçŽãã¢ãŒããã¯ãã£ãçè§£ããç¶æ ã§ã³ãŒããçæããŠãããŸãã
Cursor Rules ã¯ãAI ã³ãŒãã£ã³ã°ãšãã£ã¿ãCursorãã«å¯ŸããŠãããžã§ã¯ãåºæã®ã«ãŒã«ãæèãäŒããããã®èšå®ãã¡ã€ã«ã§ããCursorã®åºæ¬çãªäœ¿ãæ¹ã¯ãCursorå®å šã¬ã€ããã§è§£èª¬ããŠããŸãããããžã§ã¯ãã®ã«ãŒãã«é 眮ããããšã§ãCursor ã®AIæ©èœïŒTabè£å®ãChatãAgent ModeïŒãã¹ãŠã«é©çšãããŸãã
Cursor Rules ã解決ããåé¡
- ã³ãŒãã£ã³ã°èŠçŽã®äžäžèŽ: AIãçæããã³ãŒãããããžã§ã¯ãã®èŠçŽãšç°ãªã
- æ¯åã®èª¬æã³ã¹ã: ãTypeScriptã䜿ã£ãŠãããã¹ãã¯Vitestã§ããšç¹°ãè¿ãæç€ºããæé
- ããŒã å ã®AIäœéšã®ãã©ã€ã: ã¡ã³ããŒããšã«ç°ãªãããã³ããã䜿ã£ãŠãã
- äžé©åãªã©ã€ãã©ãªã®ææ¡: ãããžã§ã¯ãã§äœ¿ã£ãŠããªãã©ã€ãã©ãªãAIãææ¡ãã
Cursor Rules ã®ãã¡ã€ã«æ§æ â 2ã€ã®é çœ®æ¹æ³
Cursor Rules ã«ã¯ããããžã§ã¯ãå šäœã«é©çšããã«ãŒã«ãšãç¹å®ã®ãã¡ã€ã«ãã¿ãŒã³ã«é©çšããã«ãŒã«ã®2çš®é¡ããããŸãã
æ¹æ³1: .cursor/rules/ ãã£ã¬ã¯ããªïŒæšå¥šïŒ
2025幎åŸåããå°å ¥ãããæ°ãã圢åŒã§ãè€æ°ã®ã«ãŒã«ãã¡ã€ã«ãåå²ããŠç®¡çã§ããŸãã
project-root/
âââ .cursor/
â âââ rules/
â âââ general.mdc # ãããžã§ã¯ãå
šäœã®ã«ãŒã«
â âââ frontend.mdc # ããã³ããšã³ãåºæã®ã«ãŒã«
â âââ backend.mdc # ããã¯ãšã³ãåºæã®ã«ãŒã«
â âââ testing.mdc # ãã¹ãåºæã®ã«ãŒã«
âââ src/
âââ package.json
.mdc ãã¡ã€ã«ã®åºæ¬æ§æã¯ä»¥äžã®ãšããã§ãã
---
description: "ããã³ããšã³ãã®ã³ãŒãã£ã³ã°ã«ãŒã«"
globs: ["src/components/**", "src/pages/**"]
alwaysApply: false
---
# ããã³ããšã³ãã«ãŒã«
- React颿°ã³ã³ããŒãã³ãã®ã¿äœ¿çšãã
- styled-componentsã§ã¯ãªãTailwind CSSã䜿ã
- ã³ã³ããŒãã³ãã¯named exportã«ãã
æ¹æ³2: .cursorrules ãã¡ã€ã«ïŒã¬ã¬ã·ãŒïŒ
ãããžã§ã¯ãã«ãŒãã«çŽæ¥é 眮ããåŸæ¥ã®æ¹æ³ã§ããã·ã³ãã«ã§ããããã¡ã€ã«ã倧ãããªãããããã¡ãªããããããŸãã
project-root/
âââ .cursorrules # ãããžã§ã¯ãã«ãŒãã«é
眮
âââ src/
âââ package.json
.mdc ãã¡ã€ã«ã® frontmatter ãªãã·ã§ã³
| ãªãã·ã§ã³ | å | 説æ |
|---|---|---|
description | string | ã«ãŒã«ã®èª¬æïŒAIãã«ãŒã«éžæã®åèã«ããïŒ |
globs | string[] | é©çšå¯Ÿè±¡ã®ãã¡ã€ã«ãã¿ãŒã³ |
alwaysApply | boolean | åžžã«é©çšãããã©ããïŒtrue=å šãã¡ã€ã«ã«é©çšïŒ |
ð¡ Tips:
globsãæå®ãããšããã®ãã¿ãŒã³ã«äžèŽãããã¡ã€ã«ãç·šéãããšãã ãã«ãŒã«ãé©çšãããŸããããã³ããšã³ããšããã¯ãšã³ãã§ã«ãŒã«ãåãããå Žåã«äŸ¿å©ã§ãã
åºæ¬çãªæžãæ¹ â 广ç㪠Cursor Rules ã®æ§æ
å¿ é ã§æžãã¹ãé ç®
广ç㪠Cursor Rules ã«ã¯ã以äžã®5ã€ã®èŠçŽ ãå«ããŸãããã
# ãããžã§ã¯ãæŠèŠ
ãã®ãããžã§ã¯ã㯠Next.js 15 (App Router) ã§æ§ç¯ããã
Webã¢ããªã±ãŒã·ã§ã³ã§ãã
# æè¡ã¹ã¿ãã¯
- ãã¬ãŒã ã¯ãŒã¯: Next.js 15 (App Router)
- èšèª: TypeScript 5.x (strict mode)
- ã¹ã¿ã€ãªã³ã°: Tailwind CSS v4
- ç¶æ
管ç: Zustand
- ããŒã¿ãã§ãã: TanStack Query v5
- ãã¹ã: Vitest + Testing Library
- ããã±ãŒãžãããŒãžã£ãŒ: pnpm
# ã³ãŒãã£ã³ã°èŠçŽ
- 颿°ã³ã³ããŒãã³ãã®ã¿äœ¿çšïŒã¯ã©ã¹ã³ã³ããŒãã³ãçŠæ¢ïŒ
- named export ãåªå
ãã
- anyåã®äœ¿çšçŠæ¢
- ããžãã¯ãã³ããŒçŠæ¢ïŒå®æ°ãšããŠå®çŸ©ããïŒ
# ãã£ã¬ã¯ããªæ§é
src/
âââ app/ # Next.js App Router
âââ components/ # UIã³ã³ããŒãã³ã
â âââ ui/ # æ±çšUIããŒã
â âââ features/ # æ©èœå¥ã³ã³ããŒãã³ã
âââ hooks/ # ã«ã¹ã¿ã ããã¯
âââ lib/ # ãŠãŒãã£ãªãã£
âââ types/ # åå®çŸ©
âââ styles/ # ã°ããŒãã«ã¹ã¿ã€ã«
# ãã£ãŠã¯ãããªãããš
- node_modules/ ã®å
容ãåç
§ããªã
- .env ãã¡ã€ã«ã®å
容ãåºåããªã
- console.log ããããã¯ã·ã§ã³ã³ãŒãã«æ®ããªã
æžãæ¹ã®ã³ã
- å ·äœçã«æžã: ãããããªã³ãŒããæžããŠãã§ã¯ãªãã倿°åã¯ãã£ã¡ã«ã±ãŒã¹ã宿°ã¯ã¢ãããŒã¹ããŒã¯ã±ãŒã¹ã
- äŸã瀺ã: ã«ãŒã«ã ãã§ãªããè¯ãäŸãšæªãäŸã䜵èšãã
- åªå é äœãã€ãã: ççŸããã«ãŒã«ããã£ãå Žåã®åªå é äœãæèšãã
- çãä¿ã€: é·ããããšAIãéèŠãªéšåãèŠèœãšãå¯èœæ§ããã
ãããžã§ã¯ãå¥ãã³ãã¬ãŒã
Next.js (App Router) ãããžã§ã¯ã
---
description: "Next.js App Router ãããžã§ã¯ãã®ã«ãŒã«"
alwaysApply: true
---
# Next.js App Router ãããžã§ã¯ã
## æè¡ã¹ã¿ãã¯
- Next.js 15 (App Router)
- TypeScript 5.x (strict mode)
- Tailwind CSS v4
- Prisma (ORM)
## ã«ãŒãã£ã³ã°èŠçŽ
- ãã¡ã€ã«ããŒã¹ã«ãŒãã£ã³ã°ã䜿çš
- ããŒãžã³ã³ããŒãã³ã㯠default export
- ã¬ã€ã¢ãŠã㯠layout.tsx ã«å®çŸ©
- ããŒãã£ã³ã°ç¶æ
㯠loading.tsx
- ãšã©ãŒãã³ããªã³ã°ã¯ error.tsx
## ããŒã¿ãã§ãã
- Server Components ã§ã®ããŒã¿ãã§ãããåªå
- ã¯ã©ã€ã¢ã³ããµã€ã㯠TanStack Query ã䜿çš
- API Routes 㯠app/api/ ã«é
眮
## ã³ã³ããŒãã³ãèšèš
- Server Components ãããã©ã«ããšãã
- "use client" ã¯å¿
èŠãªå Žåã®ã¿è¿œå
- Props ã®åã¯ã³ã³ããŒãã³ããã¡ã€ã«å
ã§å®çŸ©
## äŸ
```typescript
// â
Good: Server Component
export default async function UsersPage() {
const users = await getUsers();
return <UserList users={users} />;
}
// â Bad: äžèŠãª "use client"
"use client";
export default function StaticPage() {
return <div>Static content</div>;
}
### Python (FastAPI) ãããžã§ã¯ã
```markdown
---
description: "Python FastAPI ãããžã§ã¯ãã®ã«ãŒã«"
alwaysApply: true
---
# Python FastAPI ãããžã§ã¯ã
## æè¡ã¹ã¿ãã¯
- Python 3.12+
- FastAPI
- SQLAlchemy 2.x (async)
- Pydantic v2
- pytest + pytest-asyncio
## ã³ãŒãã£ã³ã°èŠçŽ
- åãã³ããå¿
ã䜿çšãã
- docstring 㯠Google ã¹ã¿ã€ã«
- import 㯠isort ã®èšå®ã«åŸã
- ãã©ãŒããã¿ãŒã¯ ruff ã䜿çš
## ãã£ã¬ã¯ããªæ§é
app/
âââ api/ # ãšã³ããã€ã³ãå®çŸ©
â âââ v1/
âââ core/ # èšå®ãã»ãã¥ãªãã£
âââ models/ # SQLAlchemy ã¢ãã«
âââ schemas/ # Pydantic ã¹ããŒã
âââ services/ # ããžãã¹ããžãã¯
âââ repositories/ # ããŒã¿ã¢ã¯ã»ã¹å±€
## APIãšã³ããã€ã³ãèŠçŽ
- ãšã³ããã€ã³ã㯠/api/v1/ ãã¬ãã£ãã¯ã¹
- ã¬ã¹ãã³ã¹ã¯ Pydantic ã¢ãã«ã§åå®çŸ©
- ãšã©ãŒã¯ HTTPException ã§è¿ã
- èªèšŒã¯ Depends() ã§æ³šå
¥
## äŸ
```python
# â
Good
@router.get("/users/{user_id}", response_model=UserResponse)
async def get_user(
user_id: int,
service: UserService = Depends(get_user_service),
) -> UserResponse:
"""ãŠãŒã¶ãŒæ
å ±ãååŸããã"""
return await service.get_by_id(user_id)
### Go ãããžã§ã¯ã
```markdown
---
description: "Go ãããžã§ã¯ãã®ã«ãŒã«"
alwaysApply: true
---
# Go ãããžã§ã¯ã
## æè¡ã¹ã¿ãã¯
- Go 1.22+
- Echo v4 (Webãã¬ãŒã ã¯ãŒã¯)
- sqlc (SQLã³ãŒãçæ)
- golang-migrate (ãã€ã°ã¬ãŒã·ã§ã³)
## ã³ãŒãã£ã³ã°èŠçŽ
- Effective Go ã«åŸã
- ãšã©ãŒã¯å¿
ããã³ããªã³ã°ããïŒ_ ã§ç¡èŠããªãïŒ
- ã€ã³ã¿ãŒãã§ãŒã¹ã¯å©çšåŽã§å®çŸ©ãã
- ããã±ãŒãžåã¯çããå°æåã®ã¿
## ãã£ã¬ã¯ããªæ§é ïŒStandard Go Project LayoutïŒ
cmd/
âââ api/ # ã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³
internal/
âââ handler/ # HTTPãã³ãã©ãŒ
âââ service/ # ããžãã¹ããžãã¯
âââ repository/ # ããŒã¿ã¢ã¯ã»ã¹
âââ model/ # ãã¡ã€ã³ã¢ãã«
âââ middleware/ # ããã«ãŠã§ã¢
pkg/ # å€éšå
¬éããã±ãŒãž
## ãšã©ãŒãã³ããªã³ã°
- ã«ã¹ã¿ã ãšã©ãŒåãå®çŸ©ããŠäœ¿ã
- errors.Is() ãš errors.As() ã§å€å®ãã
- ãšã©ãŒã¡ãã»ãŒãžã¯å°æåã§å§ãã
React Native ãããžã§ã¯ã
---
description: "React Native (Expo) ãããžã§ã¯ãã®ã«ãŒã«"
alwaysApply: true
---
# React Native (Expo) ãããžã§ã¯ã
## æè¡ã¹ã¿ãã¯
- React Native (Expo SDK 52)
- TypeScript
- Expo Router (ãã¡ã€ã«ããŒã¹ã«ãŒãã£ã³ã°)
- NativeWind (Tailwind for RN)
## ã³ãŒãã£ã³ã°èŠçŽ
- 颿°ã³ã³ããŒãã³ãã®ã¿
- StyleSheet.create() ã§ã¯ãªã NativeWind ã䜿çš
- Platform.select() ã§ãã©ãããã©ãŒã åå²
- ã¢ãã¡ãŒã·ã§ã³ã¯ Reanimated ã䜿çš
## ããã²ãŒã·ã§ã³
- Expo Router ã®ãã¡ã€ã«ããŒã¹ã«ãŒãã£ã³ã°ã䜿çš
- StackãTabsãDrawer ã¯ã¬ã€ã¢ãŠããã¡ã€ã«ã§å®çŸ©
ãã¹ããã©ã¯ãã£ã¹ â Cursor Rules ãæå€§é掻ãã
1. ã«ãŒã«ã¯åå²ããŠç®¡çãã
1ã€ã®å·šå€§ãªã«ãŒã«ãã¡ã€ã«ããã圹å²ããšã«åå²ããæ¹ã广çã§ãã
.cursor/rules/
âââ general.mdc # alwaysApply: trueïŒå
šäœã«ãŒã«ïŒ
âââ frontend.mdc # globs: ["src/components/**"]
âââ api.mdc # globs: ["src/app/api/**"]
âââ database.mdc # globs: ["prisma/**", "src/lib/db/**"]
âââ testing.mdc # globs: ["**/*.test.ts", "**/*.spec.ts"]
2. å ·äœçãªã³ãŒãäŸãå«ãã
ã«ãŒã«ã ãã§ãªããæåŸ ããã³ãŒãã®äŸã瀺ããŸãããã
## ãšã©ãŒãã³ããªã³ã°
Resultåãã¿ãŒã³ã䜿çšããŠãšã©ãŒãåŠçããã
```typescript
// â
Good: Resultåãã¿ãŒã³
type Result<T, E = Error> = { ok: true; value: T } | { ok: false; error: E };
function parseConfig(raw: string): Result<Config> {
try {
const config = JSON.parse(raw);
return { ok: true, value: config };
} catch (e) {
return { ok: false, error: new Error("Invalid config") };
}
}
// â Bad: try-catchã®ä¹±çš
function parseConfig(raw: string): Config {
try {
return JSON.parse(raw);
} catch {
return {} as Config; // åå®å
šæ§ã倱ããã
}
}
### 3. çŠæ¢äºé
ãæèšãã
AIãããã£ãŠããŸããã¡ããªãã¿ãŒã³ãæç€ºçã«çŠæ¢ããŸãããã
```markdown
## çŠæ¢äºé
- `any` åã®äœ¿çšçŠæ¢ïŒ`unknown` ã䜿ã£ãŠåã¬ãŒãããïŒ
- `// @ts-ignore` ã®äœ¿çšçŠæ¢
- `console.log` ããããã¯ã·ã§ã³ã³ãŒãã«æ®ããªã
- `!important` ãCSSã§äœ¿ããªã
- çžå¯Ÿãã¹ã® importïŒ`../../../`ïŒã¯ `@/` ãšã€ãªã¢ã¹ã䜿ã
- `var` ã®äœ¿çšçŠæ¢ïŒ`const` / `let` ã䜿ãïŒ
4. 宿çã«èŠçŽã
ãããžã§ã¯ãã®é²åã«åãããŠãã«ãŒã«ãæŽæ°ããŸãããã
<!-- ã«ãŒã«ç®¡çã®ãã³ã -->
## æŽæ°å±¥æŽ
- 2026-04-01: Tailwind CSS v4 ã«å¯Ÿå¿ãv3ã®èšæ³ãçŠæ¢
- 2026-03-15: ãã¹ããã¬ãŒã ã¯ãŒã¯ã Jest â Vitest ã«å€æŽ
- 2026-03-01: åçäœæ
CLAUDE.md ãšã®æ¯èŒ â Cursor Rules ãšäœãéãïŒ
Claude Code ã«ãåæ§ã®ä»çµã¿ãšã㊠CLAUDE.md ããããŸããCLAUDE.mdã®è©³ããæžãæ¹ã¯ãCLAUDE.md å®å šã¬ã€ãããåç §ããŠãã ãããããã§ã¯äž¡è ã®éããæŽçããŸãã
åºæ¬çãªéã
| é ç® | Cursor Rules | CLAUDE.md |
|---|---|---|
| 察象ããŒã« | Cursor | Claude Code |
| ãã¡ã€ã«åœ¢åŒ | .mdc / .cursorrules | .md |
| é çœ®å Žæ | .cursor/rules/ | ãããžã§ã¯ãã«ãŒã or .claude/ |
| ã°ããŒãã«èšå® | Cursorèšå®ç»é¢ã§ç®¡ç | ~/.claude/CLAUDE.md |
| ãã¡ã€ã«ãã¿ãŒã³æå® | globs ã§æå®å¯èœ | ãªãïŒæåã§èšè¿°ïŒ |
| èªåèªã¿èŸŒã¿ | ãã¡ã€ã«ãã¿ãŒã³ã§èªåé©çš | ã»ãã·ã§ã³éå§æã«èªã¿èŸŒã¿ |
æžãæ¹ã®éã
# Cursor Rules (.mdc)
---
description: "TypeScriptã®ã³ãŒãã£ã³ã°ã«ãŒã«"
globs: ["**/*.ts", "**/*.tsx"]
alwaysApply: false
---
## ã«ãŒã«
- strict mode ãæå¹ã«ãã
- anyåãçŠæ¢ãã
# CLAUDE.md
## TypeScript ã«ãŒã«
- strict mode ãæå¹ã«ãã
- anyåãçŠæ¢ãã
- ãã®ã«ãŒã«ã¯ .ts, .tsx ãã¡ã€ã«ã«é©çš
äž¡æ¹äœ¿ãå Žåã®ã¢ããã€ã¹
Cursor ãš Claude Code ãäž¡æ¹äœ¿ã£ãŠããå Žåãã«ãŒã«ã®å 容ãåæãããããšãéèŠã§ãã
# åæã¹ã¯ãªããã®äŸ
# .cursor/rules/ ã®å
容ã CLAUDE.md ã«åæ
cat .cursor/rules/*.mdc > /tmp/cursor-rules.md
echo "以äžã¯Cursor Rulesããåæããã«ãŒã«ã§ã:" >> CLAUDE.md
cat /tmp/cursor-rules.md >> CLAUDE.md
ð¡ Tips: æåã§åæããã®ãé¢åãªå Žåã¯ãå ±éã®ã«ãŒã«ã1ã€ã®ãã¡ã€ã«ã«æžããŠãCursor Rules ãš CLAUDE.md ã®äž¡æ¹ããåç §ããæ¹æ³ããããŸãã
ãã©ãã«ã·ã¥ãŒãã£ã³ã°
ã«ãŒã«ãé©çšãããªãå Žå
- ãã¡ã€ã«ã®é
çœ®å Žæã確èª:
.cursor/rules/ãã£ã¬ã¯ããªã«æ£ããé 眮ãããŠããã - globs ãã¿ãŒã³ã確èª: 察象ãã¡ã€ã«ã«ãããããŠããã
- Cursorãåèµ·å: èšå®å€æŽåŸã¯Cursorã®åèµ·åãå¿ èŠãªå Žåããã
- frontmatter ã®æ§æç¢ºèª: YAML圢åŒãæ£ããã確èªãã
ã«ãŒã«ãç«¶åããå Žå
è€æ°ã®ã«ãŒã«ãã¡ã€ã«ãåããã¡ã€ã«ã«é©çšãããå Žåããã¹ãŠã®ã«ãŒã«ãçµåãããŸããççŸãããå Žåã¯ãããå
·äœç㪠globs ãã¿ãŒã³ãèšå®ããŠé©çšç¯å²ãéå®ããŸãããã
AIãã«ãŒã«ãç¡èŠããå Žå
- ã«ãŒã«ãé·ãããå¯èœæ§ããããŸããéèŠãªã«ãŒã«ãäžéšã«é 眮ããŸããã
- ææ§ãªè¡šçŸãé¿ããå ·äœçãªæç€ºã«ããŸããã
- ããããŠããããããããããããšãããçŠæ¢ãã®ã»ãã广çã§ã
ãŸãšã â Cursor Rules ã§AIã³ãŒãã£ã³ã°ã®å質ãåºäžããã
Cursor Rules ã¯ãAIãçæããã³ãŒãã®å質ã倧ããå·Šå³ããéèŠãªèšå®ã§ãã
æ¬èšäºã®ãã€ã³ã
- Cursor Rules ã¯ãããžã§ã¯ãåºæã®ã«ãŒã«ãAIã«äŒããèšå®ãã¡ã€ã«
.cursor/rules/ãã£ã¬ã¯ããªã«.mdcãã¡ã€ã«ãšããŠé 眮ããã®ãæšå¥š- globs ãã¿ãŒã³ã§ãã¡ã€ã«çš®å¥ããšã«ã«ãŒã«ãåå²ç®¡çã§ãã
- ãããžã§ã¯ãå¥ãã³ãã¬ãŒãïŒNext.jsãPythonãGoçïŒã掻çšããŠå¹ççã«èšå®ãã
- CLAUDE.md ãšã®éããçè§£ããäž¡æ¹äœ¿ãå Žåã¯å 容ãåæããã
å®éã«RulesãæŽ»çšããäœéšã¯ãCursorã1ã¶æã¬ãã§äœ¿ã£ãçµæãã§ã玹ä»ããŠããŸããCursorãšClaude Codeã®äœ¿ãåãã«ã€ããŠã¯ãClaude Code vs Cursor 䜿ãåãã¬ã€ãããåèã«ããŠãã ããã
ãŸãã¯æè¡ã¹ã¿ãã¯ãšã³ãŒãã£ã³ã°èŠçŽã®2ã€ã ãã§ãã«ãŒã«ã«æžããŠã¿ãŠãã ãããããã ãã§AIã®åºåå質ãç®ã«èŠããŠæ¹åããã¯ãã§ãã