ããã«ã¡ã¯ããšãŸã ã§ãã
Claude Codeã䜿ã£ãŠéçºãé²ããŠãããšãã¢ã€ãã¢ã圢ã«ãããããŠããã§ãããã
ã§ãããããã£ãŠä»æ§æžãæåã«äœã£ãæ¹ãå¹ççãªã®ã§ã¯ïŒããšæã£ãããšã¯ãããŸãããïŒ
ç§ãæåã¯æãã€ãã§Claude Codeã«æç€ºãåºããŠããŸããã
ããããããã ãšéäžã§æ¹åæ§ããã¬ãããéèŠãªæ©èœãå¿ãããããããšãå€ãã£ãã®ã§ãã
ãããŠæè¿ãAWSããªãªãŒã¹ãããKiroããšããAI IDEã話é¡ã«ãªã£ãŠããŸãã
ãã®ããŒã«ã¯ã仿§é§åéçºããšããææ³ãæ¡çšããŠããŠãéçºåã«èªåã§ä»æ§æžãäœæããŠãããã®ã§ãã
ä»åã¯ãKiroã®ã¢ãããŒããåèã«ããªãããClaude Code ã§ Kiro ã®ãããªä»æ§é§åéçºãå®çŸããŠã¿ãŸããã
ãã³ãã¬ãŒããªããžããªãé åžããŠããã®ã§ãã©ã®æè¡ã¹ã¿ãã¯ã§ãã誰ã§ãã¹ã¿ãŒãã§ããããã«ããŠãŸãã
ãªãClaude Codeã§äºå仿§æžãå¿ èŠãªã®ã
ãAIã«ä»»ããã®ã«ããªãã§ä»æ§æžãªããŠå¿ èŠãªã®ãïŒã
ããæããããããŸããã
ã§ãããæ¹ããŠèããŠã¿ãŠãã ãããæçãäœãæãã¬ã·ããªãã§ãçŸå³ããæçãäœã£ãŠããšèšãããŠãå°ããŸãããããããšåãã§ãClaude Codeãæç¢ºãªæç€ºããã£ãæ¹ãå¹ççã«åããã®ã§ãã
å®éã«ã仿§æžãªãã§ã¢ããªãäœãããšãããšããããªåé¡ãèµ·ããã¡ã§ãã
- èšèšã®äžè²«æ§ãä¿ãŠãªã
- å®è£ ãç«¶åããŠããŸã
- 宿åŸã®åäœç¢ºèªäžã«è¿œå æ©èœã®å¿ èŠæ§ã«æ°ã¥ã
ããã§ Kiro ãšãããšãã£ã¿ã§ã¯ãæåã«ä»æ§ãåºããããšã§ãã®åé¡ã解決ããŠããŸãã
Kiroã¹ã¿ã€ã«ã®ä»æ§é§åéçºãClaude Codeã§å®çŸ
ç§ã¯æ®æ®µãã Claude Code ããã¡ããã¡ã䜿ã£ãŠããã®ã§ãã§ããã° Kiro ã®èãæ¹ã ãåãå ¥ãã Claude Code éçºãããããšæããŸããã
ãããŠãClaude Code ã¯æ¢åã®ã¯ãŒã¯ãããŒã«æè»ã«é©å¿ã§ããããŒã«ãªã®ã§ãKiroã®ã¢ãããŒããåãå ¥ããããšã§ãäž¡æ¹ã®è¯ããæŽ»ããããšã«ããŸããã
ä»åçšæããã®ã¯ãkiro_style_claude_codeãšãããã³ãã¬ãŒãã§ãã
ãã®ãã³ãã¬ãŒãã¯ãKiroãšãã£ã¿ã®ã仿§é§åéçºãã®ãšãã»ã³ã¹ãClaude Codeçšã«åçŸãããã®ã§ãã
åæç¥èãšããŠãKiroã§ã¯ä»¥äžã®3ã€ã®ããã¥ã¡ã³ããèªåçæããŸãã
- requirements.md - ãŠãŒã¶ãŒã¹ããŒãªãŒãšåãå ¥ãåºæº
- design.md - æè¡ã¢ãŒããã¯ãã£ãšã³ã³ããŒãã³ãèšèš
- tasks.md - å ·äœçãªéçºæé
ãã®ãã³ãã¬ãŒãã䜿ãã°ãå°çšã®ã³ãã³ãã§åããããªä»æ§æžãèªåçæã§ããŸãã
èšããªãã°ãçµéšè±å¯ãªãããžã§ã¯ããããŒãžã£ãŒã暪ã«ã€ããŠãããŠãããããªæèŠã§ãã
kiro_style_claude_codeãã³ãã¬ãŒãã®ä»çµã¿
ã·ã³ãã«ã ãã©åŒ·åãª3ãã¡ã€ã«æ§æ
ãã®ãã³ãã¬ãŒãã§å€§äºã«ãããšããã¯ããã®ã·ã³ãã«ãã§ãã
Claude Codeãçè§£ãã¹ã仿§ã¯ããã£ã3ã€ã®ãã¡ã€ã«ã«éçŽãããŠããŸãã
- requirements.md - ãäœãäœããããå®çŸ©
- design.md - ãã©ãäœããããèšèš
- tasks.md - ãäœæ¥æé ãã管ç
ããã ãã§ãClaude Codeãè¿·ããå®è£ ãé²ããããããã«ãªããŸãã
å®éã®ãã£ã¬ã¯ããªæ§æãã·ã³ãã«ã§ãã
.
âââ .claude/
â âââ CLAUDE.md # ãããžã§ã¯ãã«ãŒã«
â âââ commands/
â âââ kiro.md # 仿§çæ
âââ specs/
â âââ requirements.md # èŠä»¶å®çŸ©
â âââ design.md # èšèšææž
â âââ tasks.md # ã¿ã¹ã¯äžèЧ
ããæ¢åã®ãããžã§ã¯ãã«çµã¿èŸŒããªããäžèšãã¡ã€ã«ãã³ããŒããŠãããã ãã§OKã§ãã
å°çšã³ãã³ãã§éçºãããŒãèªåå
ãã³ãã¬ãŒãã«ã¯ãKiroã¹ã¿ã€ã«ã®éçºãæ¯æŽããå°çšã³ãã³ããå«ãŸããŠããŸãã
/kiro ã³ãã³ã
ãã®ã³ãã³ããå®è¡ãããšãClaude Codeãèªåçã«3ã€ã®ä»æ§ãã¡ã€ã«ãçæããŸãã
äŸãã°ã以äžã®ãããªäœ¿ãæ¹ã§ãã
/kiro TODOã¢ããªã«åªå
床æ©èœã远å
ãã£ãããã ãã§ãClaude Codeã以äžã®ãããªæ§é åãããèŠä»¶å®çŸ©ãäœæããŠãããŸãã
### ã¹ããŒãªãŒ1: TODOã®äœæ
**As a** ãŠãŒã¶ãŒ
**I want** æ°ããTODOã¿ã¹ã¯ãäœæã§ãã
**So that** ããã¹ãããšãèšé²ã§ãã
**åãå
¥ãåºæº:**
- [ ] ã¿ã¹ã¯ã®ã¿ã€ãã«ãå
¥åã§ãã
- [ ] äœææ¥æãèªåçã«èšé²ããã
ãªããã®ãã³ãã¬ãŒãã广çãªã®ã
åŸæ¥ã®Claude Codeéçºã§ã¯ãå Žåœããçã«æç€ºãåºããã¡ã§ããã
äžæ¹ããã®ãã³ãã¬ãŒãã䜿ãã°ãClaude Codeãåç §ãã¹ã仿§ãææåãããã®ã§ä»¥äžã®ãããªæ©æµãåããããŸãã
- Claude Codeãäžè²«æ§ã®ããã³ãŒããçæã§ãã
- å®è£ ã®éäžã§æ¹åæ§ããã¬ãªã
- è€éãªæ©èœã段éçã«å®è£ ã§ãã
ç¹ã«å¹æçãªã®ã¯ãClaude Codeããæ¬¡ã«äœãå®è£ ããã°ãããããåžžã«ææ¡ã§ããããšã§ãã
tasks.mdãåç §ããããšã§ãClaude Codeã¯ãããªæãã§é²æã管çããªããå®è£ ãé²ããŸãã
ããšãã°ä»¥äžã®ãããªã¿ã¹ã¯è¡šãäœãããŸãã
## ãã§ãŒãº1: åºç€æ§ç¯
- [x] **Task 1**: ãããžã§ã¯ãã»ããã¢ãã
- [x] **Task 2**: éçºç°å¢ã®èšå®
## ãã§ãŒãº2: ã³ã¢æ©èœå®è£
- [ ] **Task 3**: TODOã®äœææ©èœ
- [ ] **Task 4**: TODOã®äžèŠ§è¡šç€º
## é²æè¿œè·¡
- å®äº: 2/6
- é²è¡äž: 1
- æªçæ: 3
Claude Codeã¯èªåçã«ã¿ã¹ã¯ã®å®äºããã§ãã¯ããæ¬¡ã®ã¿ã¹ã¯ã«ç§»ã£ãŠãããŸãã
ã§ã¯ãå®éã«äœãã¢ããªãäœããªããéçºã®æµããèŠãŠãããŸãããã
Kiroã¹ã¿ã€ã« ãã³ãã¬ãŒãã®ã»ããã¢ãã
ãŸããGitHubãããã³ãã¬ãŒããã³ããŒããŸãã
# ãã³ãã¬ãŒãããæ°ãããªããžããªãäœæ
# GitHubã§ãUse this templateããã¯ãªãã¯
ä»åã¯ãŒããã React ã¢ããªãäœã£ãŠã¿ãã®ã§ããã®ãªããžããªã®äžã« React ãããžã§ã¯ããçæããŸãã
npm create vite@latest todo-app
Kiroã¹ã¿ã€ã«çšã®ãã¡ã€ã«ãã³ããŒããŸãã
# Kiroã¹ã¿ã€ã«çšãã¡ã€ã«ãã³ããŒ
cp -r example-project/ todo-app/
cd todo-app/
ãªãããèªèº«ã®ãã©ã«ãã«æã£ãŠããå Žåã¯ä»¥äžãã¡ã€ã«ããã®ãŸãŸã³ããŒããã ãã§OKã§ãã
CLAUDE.md ã¯åã ã§äœææžã¿ã ãšæããŸãã®ã§ãäžèº«ã ãã貌ãä»ããŠããã ããã°ãšæããŸãã
âââ .claude/
â âââ CLAUDE.md # ãããžã§ã¯ãã«ãŒã«
â âââ commands/
â âââ kiro.md # 仿§åæå
â âââ sync-spec.md # 仿§åæ
âââ specs/
â âââ requirements.md # èŠä»¶å®çŸ©
â âââ design.md # èšèšææž
â âââ tasks.md # ã¿ã¹ã¯äžèЧ
Kiroã¹ã¿ã€ã«ã§Todoã¢ããªãäœã£ãŠã¿ãã
ã§ã¯ãReact ã®ç©ºãããžã§ã¯ããã Todo ã¢ããªãäœã£ãŠã¿ãŸãããã
èŠä»¶å®çŸ©æž(requirements.md)ãäœæ
/kiro ã³ãã³ãå®è¡
ãŸãã¯ã¿ãŒããã«ã§Claude Codeãèµ·åããŸãã
claude
ãããŠã以äžã®å°çšã³ãã³ããå ¥åããŸãã
/kiro ã«ç¶ããŠåè§ã¹ããŒã¹ã空ããå®çŸããŠã»ããå
容ã«ã€ããŠæç« ãç¶ããŸãã
/kiro TODOã¢ããªã®äœæ
ãã¡ãã¯ãClaude Code ã§äœãããªãªãžãã«ã³ãã³ãã§ãããããããã kiro ãšåã¥ããŸããã
ãããšãClaude Codeãåæã«èŠä»¶å®çŸ©ããå§ããŠãããŸãã
ããã§ã¯ TODOã¢ããªã®äœæ ãšããç®çãéæãããããèŠä»¶å®çŸ©ããã¹ã¿ãŒãããŠãããŸãã
ãããªæãã§ã¹ã¿ãŒãããŸãã
èŠä»¶å®çŸ©æžãèšèšæžãã¿ã¹ã¯ã«åãããŠããŸããã
/kiro is running⊠todoã¢ããªäœæ
⺠TODOã¢ããªäœæã®ä»æ§ãé æ¬¡äœæããŠãããŸãããŸãèŠä»¶å®çŸ©ããå§ããŸãã
⺠Update Todos
â¿ â specs/requirements.md -
ãŠãŒã¶ãŒã¹ããŒãªãŒãšåãå
¥ãåºæºãäœæ
â specs/design.md -
ã·ã¹ãã ã¢ãŒããã¯ãã£ãšæè¡ã¹ã¿ãã¯ãå®çŸ©
â specs/tasks.md -
å®è£
ã¿ã¹ã¯ã®äžèЧãšäŸåé¢ä¿ãæŽç
çæãããèŠä»¶å®çŸ©æžãã¬ãã¥ãŒïŒæ¿èªãã
å°ãåŸ ã€ãšã以äžã®ãããªçµæãè¿ã£ãŠããŸããã
⺠èŠä»¶å®çŸ©ãäœæããŸãããããã確èªããŠãããèšèšãšã¿ã¹ã¯ã®ä»æ§ãäœæããŸ
ãã
èŠä»¶ã®æŠèŠïŒ
- 7ã€ã®ãŠãŒã¶ãŒã¹ããŒãªãŒ: ã¿ã¹ã¯ã®äœæãäžèŠ§è¡šç€ºãå®äºåãæ¿ããç·šéã
åé€ããã£ã«ã¿ãªã³ã°ãããŒã¿æ°žç¶å
- éæ©èœèŠä»¶: ããã©ãŒãã³ã¹ã䜿ããããããã©ãŠã¶ãµããŒã
èŠä»¶ã«åé¡ããªããã°ã次ã«èšèšä»æ§ïŒdesign.mdïŒãäœæããŸããããããã
ã§ããããïŒ
å®éã«çæãããèŠä»¶å®çŸ©æžãèŠãŠã¿ãŸããããçµæ§ã¢ãªã¢ãªã§ãã
specs/requirements.md
# TODOã¢ããªèŠä»¶å®çŸ©
## ãããžã§ã¯ãæŠèŠ
ã·ã³ãã«ã§äœ¿ããããTODOã¢ããªã±ãŒã·ã§ã³ãäœæããããŠãŒã¶ãŒãæ¥ã
ã®ã¿ã¹ã¯ãå¹ççã«ç®¡çã§ããWebã¢ããªã±ãŒã·ã§ã³ã
## ãŠãŒã¶ãŒã¹ããŒãªãŒ
### 1. ã¿ã¹ã¯ã®äœæ
**As a** ãŠãŒã¶ãŒ
**I want** æ°ããã¿ã¹ã¯ãäœæã§ãã
**So that** ããã¹ãããšãèšé²ã§ãã
**åãå
¥ãåºæº:**
- [ ] ã¿ã¹ã¯ã®ã¿ã€ãã«ãå
¥åã§ãã
- [ ] EnterããŒãŸãã¯è¿œå ãã¿ã³ã§ã¿ã¹ã¯ãäœæã§ãã
- [ ] 空ã®ã¿ã¹ã¯ã¯äœæã§ããªã
- [ ] äœæããã¿ã¹ã¯ã¯ãªã¹ãã«å³åº§ã«è¡šç€ºããã
### 2. ã¿ã¹ã¯ã®äžèŠ§è¡šç€º
**As a** ãŠãŒã¶ãŒ
**I want** ãã¹ãŠã®ã¿ã¹ã¯ãäžèЧã§èŠã
**So that** äœããã¹ããææ¡ã§ãã
**åãå
¥ãåºæº:**
- [ ] ãã¹ãŠã®ã¿ã¹ã¯ããªã¹ã圢åŒã§è¡šç€ºããã
- [ ] åã¿ã¹ã¯ã«ã¯ã¿ã€ãã«ã衚瀺ããã
- [ ] å®äº/æªå®äºã®ç¶æ
ãèŠèŠçã«åºå¥ã§ãã
- [ ] ã¿ã¹ã¯ããªãå Žåã¯é©åãªã¡ãã»ãŒãžã衚瀺ããã
### 3. ã¿ã¹ã¯ã®å®äº/æªå®äºã®åãæ¿ã
**As a** ãŠãŒã¶ãŒ
**I want** ã¿ã¹ã¯ã®å®äºç¶æ
ãåãæ¿ãã
**So that** 鲿ã管çã§ãã
**åãå
¥ãåºæº:**
- [ ] ãã§ãã¯ããã¯ã¹ãŸãã¯ã¯ãªãã¯ã§ç¶æ
ãåãæ¿ãããã
- [ ] å®äºããã¿ã¹ã¯ã¯æã¡æ¶ãç·ã衚瀺ããã
- [ ] ç¶æ
ã®å€æŽã¯å³åº§ã«åæ ããã
- [ ] å®äºããã¿ã¹ã¯ãäžèŠ§ã«æ®ã
### 4. ã¿ã¹ã¯ã®ç·šé
**As a** ãŠãŒã¶ãŒ
**I want** æ¢åã®ã¿ã¹ã¯ãç·šéãã
**So that** å
å®¹ãæŽæ°ã§ãã
**åãå
¥ãåºæº:**
- [ ] ã¿ã¹ã¯ãã¯ãªãã¯ãŸãã¯ç·šéãã¿ã³ã§ç·šéã¢ãŒãã«å
¥ãã
- [ ] ã¿ã€ãã«ãçŽæ¥ç·šéã§ãã
- [ ] EnterããŒãŸãã¯ä¿åãã¿ã³ã§å€æŽãä¿åã§ãã
- [ ] EscããŒã§ãã£ã³ã»ã«ã§ãã
- [ ] 空ã®å
容ã«ã¯æŽæ°ã§ããªã
### 5. ã¿ã¹ã¯ã®åé€
**As a** ãŠãŒã¶ãŒ
**I want** äžèŠãªã¿ã¹ã¯ãåé€ãã
**So that** ãªã¹ããæŽçã§ãã
**åãå
¥ãåºæº:**
- [ ] åã¿ã¹ã¯ã«åé€ãã¿ã³ããã
- [ ] åé€ãã¿ã³ãã¯ãªãã¯ãããšç¢ºèªãã€ã¢ãã°ã衚瀺ããã
- [ ] 確èªåŸãã¿ã¹ã¯ããªã¹ãããåé€ããã
- [ ] åé€ã¯åãæ¶ãã§ããªã
### 6. ã¿ã¹ã¯ã®ãã£ã«ã¿ãªã³ã°
**As a** ãŠãŒã¶ãŒ
**I want** å®äº/æªå®äºã§ã¿ã¹ã¯ããã£ã«ã¿ãªã³ã°ãã
**So that** å¿
èŠãªã¿ã¹ã¯ã ããèŠãããšãã§ãã
**åãå
¥ãåºæº:**
- [ ] ããã¹ãŠããæªå®äºããå®äºæžã¿ãã®ãã£ã«ã¿ãŒãªãã·ã§ã³ããã
- [ ] ãã£ã«ã¿ãŒã®åãæ¿ããå³åº§ã«åæ ããã
- [ ] çŸåšã®ãã£ã«ã¿ãŒç¶æ
ãèŠèŠçã«ããã
- [ ] ãã£ã«ã¿ãŒé©çšäžãã¿ã¹ã¯ã®æäœãå¯èœ
### 7. ããŒã¿ã®æ°žç¶å
**As a** ãŠãŒã¶ãŒ
**I want** ã¿ã¹ã¯ããã©ãŠã¶ãéããŠãä¿åããã
**So that** ããŒã¿ã倱ããªã
**åãå
¥ãåºæº:**
- [ ] ãã©ãŠã¶ã®ããŒã«ã«ã¹ãã¬ãŒãžã«ããŒã¿ãä¿åããã
- [ ] ããŒãžããªããŒãããŠãã¿ã¹ã¯ã埩å
ããã
- [ ] ã¿ã¹ã¯ã®äœæ/ç·šé/åé€ãèªåçã«ä¿åããã
- [ ] ã¹ãã¬ãŒãžãšã©ãŒæã¯é©åãªãšã©ãŒã¡ãã»ãŒãžã衚瀺ããã
## éæ©èœèŠä»¶
- **ããã©ãŒãã³ã¹**: ã¿ã¹ã¯ã®è¿œå /ç·šé/åé€ã¯100ms以å
ã«å®äºããã1000ä»¶ã®ã¿ã¹ã¯ã§ãå¿«é©ã«åäœãã
- **䜿ãããã**: ã¬ã¹ãã³ã·ããã¶ã€ã³ã§ã¢ãã€ã«ã§ã䜿ãããããããŒããŒãã·ã§ãŒãã«ããããµããŒããã¢ã¯ã»ã·ããªãã£ã«é
æ
®ïŒWAI-ARIA察å¿ïŒ
- **ãã©ãŠã¶ãµããŒã**: ChromeïŒææ°çïŒãFirefoxïŒææ°çïŒãSafariïŒææ°çïŒãEdgeïŒææ°çïŒ
ãããªæãã§ããŠãŒã¶ãŒèŠç¹ã§ã®æ©èœãæç¢ºã«å®çŸ©ãããŠãããŸãã
æè¡çãªèŠä»¶ãšããããã¯ã¡ãããšèŠä»¶å®çŸ©æžããããæ©èœèŠä»¶ãšããŠãŸãšãŸã£ãŠããŸããã
å°å³ã«ãããŒã«ã«ã¹ãã¬ãŒãžãçšãã ããŒã¿ã®æ°žç¶å ãŸã§èæ ®ãããŠããã®ã¯ããã§ããã
èŠä»¶å®çŸ©æžãæ¿èªãã
äœã£ãŠããã£ãèŠä»¶å®çŸ©æžã§ç¹ã«åé¡ãªãã£ãã®ã§ãæ¿èªããŠã¿ãŸãããã
ãããŸã§äººéã仿§ã®èгç¹ã§ãã§ãã¯ããªããé²ããã®ããã€ã³ãã§ãã
> ok
ããã§å ¥åããã®ã¯ãæ¿èªãã§ããOKãã§ããªãã§ã倧äžå€«ã§ãã
èšèšæž (design.md) ãšã¿ã¹ã¯ïŒtask.mdïŒãäœæ
ã§ã¯ã次ã¯èšèšæžãšã¿ã¹ã¯ãäœæããŠããããŸãããã
ããã¯äžæ°ã«ãã£ãŠãããããšæããŸãã
ãšã¯èšã£ãŠããå ã»ã©æ¿èªããæç¹ã§ãã§ã«äœæãã¹ã¿ãŒãããŠããã¯ãã§ãã
⺠Update Todos
â¿ â specs/requirements.md - ãŠãŒã¶ãŒã¹ããŒãªãŒãšåãå
¥ãåºæºãäœæ
â specs/design.md - ã·ã¹ãã ã¢ãŒããã¯ãã£ãšæè¡ã¹ã¿ãã¯ãå®çŸ©
â specs/tasks.md - å®è£
ã¿ã¹ã¯ã®äžèЧãšäŸåé¢ä¿ãæŽç
ãã°ããåŸ ã€ãšã以äžã®ããã«å®äºå ±åãããŸãã
⺠TODOã¢ããªã®ä»æ§ãã¡ã€ã«ããã¹ãŠäœæããŸããïŒ
ð äœæãã仿§ãã¡ã€ã«
1. specs/requirements.md - 7ã€ã®ãŠãŒã¶ãŒã¹ããŒãªãŒãšåãå
¥ãåºæº
2. specs/design.md - React/TypeScript/Viteã䜿çšããSPAã¢ãŒããã¯ãã£
3. specs/tasks.md - 20åã®å®è£
ã¿ã¹ã¯ã5ã€ã®ãã§ãŒãºã«åå²
ããã§ä»æ§å®çŸ©ãå®äºããŸãããå®è£
ãéå§ããæºåãã§ããŠããŸãã
èšèšãã¡ã€ã«ãèŠãŠã¿ã
å®éã«äœæãããèšèšãã¡ã€ã«ããã¡ãã§ãã
åå®çŸ©ããã¡ã€ã«æ§æãªã©ãåŠçãããŒã«ãã¶ã€ã³ãªã©ã詳现ã«äœãããŠããããšãåãããŸãã
ãããŸã§çްããæžãããŠããã°ãã¶ããããšã¯ç¡ãããã§ãã
# TODOã¢ããªèšèšææž
## ã¢ãŒããã¯ãã£æŠèŠ
ã·ã³ã°ã«ããŒãžã¢ããªã±ãŒã·ã§ã³ïŒSPAïŒãšããŠå®è£
ãããã³ããšã³ãã®ã¿ã§å®çµããããŒã¿ã¯ãã©ãŠã¶ã®ããŒã«ã«ã¹ãã¬ãŒãžã«ä¿åããã
## æè¡ã¹ã¿ãã¯
- **èšèª**: TypeScript 5.x
- **ãã¬ãŒã ã¯ãŒã¯**: React 18.x
- **ãã«ãããŒã«**: Vite 5.x
- **ã¹ã¿ã€ãªã³ã°**: CSS Modules
- **ç¶æ
管ç**: React Context API + useReducer
- **ãã¹ã**: Vitest + React Testing Library
- **ãªã³ã¿ãŒ**: ESLint + Prettier
## ã³ã³ããŒãã³ãæ§æ
```
src/
âââ components/
â âââ App.tsx # ã«ãŒãã³ã³ããŒãã³ã
â âââ TodoInput.tsx # ã¿ã¹ã¯å
¥åãã©ãŒã
â âââ TodoList.tsx # ã¿ã¹ã¯äžèŠ§è¡šç€º
â âââ TodoItem.tsx # åå¥ã¿ã¹ã¯ã³ã³ããŒãã³ã
â âââ TodoFilter.tsx # ãã£ã«ã¿ãŒãã¿ã³
â âââ EditModal.tsx # ç·šéçšã¢ãŒãã«ïŒã€ã³ã©ã€ã³ç·šéã®å Žåã¯äžèŠïŒ
âââ contexts/
â âââ TodoContext.tsx # TODOã®ç¶æ
管ç
âââ hooks/
â âââ useTodos.ts # TODOæäœã®ã«ã¹ã¿ã ããã¯
â âââ useLocalStorage.ts # ããŒã«ã«ã¹ãã¬ãŒãžåæããã¯
âââ types/
â âââ todo.ts # åå®çŸ©
âââ utils/
âââ storage.ts # ããŒã«ã«ã¹ãã¬ãŒãžæäœ
```
## ããŒã¿ãããŒ
1. **ã¿ã¹ã¯äœæ**: TodoInput â useTodos â TodoContext â LocalStorage
2. **ç¶æ
æŽæ°**: TodoItem â useTodos â TodoContext â LocalStorage
3. **ãã£ã«ã¿ãªã³ã°**: TodoFilter â TodoContext â TodoListïŒè¡šç€ºã®æŽæ°ïŒ
4. **åæå**: Appèµ·åæ â LocalStorage â TodoContext â åã³ã³ããŒãã³ã
## åå®çŸ©
```typescript
// types/todo.ts
interface Todo {
id: string; // UUID
title: string; // ã¿ã¹ã¯ã®ã¿ã€ãã«
completed: boolean; // å®äºç¶æ
createdAt: Date; // äœææ¥æ
updatedAt: Date; // æŽæ°æ¥æ
}
type FilterType = 'all' | 'active' | 'completed';
interface TodoState {
todos: Todo[];
filter: FilterType;
}
```
## ç¶æ
管çèšèš
### TodoContext
```typescript
interface TodoContextValue {
todos: Todo[];
filter: FilterType;
addTodo: (title: string) => void;
updateTodo: (id: string, title: string) => void;
toggleTodo: (id: string) => void;
deleteTodo: (id: string) => void;
setFilter: (filter: FilterType) => void;
}
```
### Reducer Actions
```typescript
type TodoAction =
| { type: 'ADD_TODO'; payload: { title: string } }
| { type: 'UPDATE_TODO'; payload: { id: string; title: string } }
| { type: 'TOGGLE_TODO'; payload: { id: string } }
| { type: 'DELETE_TODO'; payload: { id: string } }
| { type: 'SET_FILTER'; payload: { filter: FilterType } }
| { type: 'LOAD_TODOS'; payload: { todos: Todo[] } };
```
## ããŒã«ã«ã¹ãã¬ãŒãžèšèš
- **ããŒ**: `todo-app-data`
- **圢åŒ**: JSONæåå
- **ä¿åã¿ã€ãã³ã°**: å
šãŠã®ç¶æ
倿޿
- **ãšã©ãŒãã³ããªã³ã°**: try-catchã§å
ã¿ããšã©ãŒæã¯ã³ã³ãœãŒã«ã«åºå
## UI/UXèšèš
### ã¬ã€ã¢ãŠã
```
âââââââââââââââââââââââââââââââââââââââ
â TODOã¢ã㪠â
âââââââââââââââââââââââââââââââââââââââ€
â [ å
¥åãã£ãŒã«ã ] â
â [远å ] â
âââââââââââââââââââââââââââââââââââââââ€
â [ãã¹ãŠ] [æªå®äº] [å®äºæžã¿] â
âââââââââââââââââââââââââââââââââââââââ€
â â¡ ã¿ã¹ã¯1 [ç·šé][åé€] â
â â ã¿ã¹ã¯2 [ç·šé][åé€] â
â â¡ ã¿ã¹ã¯3 [ç·šé][åé€] â
âââââââââââââââââââââââââââââââââââââââ
```
### ã¹ã¿ã€ãªã³ã°æ¹é
- ã¢ãã€ã«ãã¡ãŒã¹ãèšèš
- æå°å¹
: 320px
- æå€§å¹
: 800pxïŒäžå€®å¯ãïŒ
- ã«ã©ãŒãã¬ãã:
- ãã©ã€ããª: #007bff
- å®äº: #6c757d
- åé€: #dc3545
- èæ¯: #f8f9fa
## ããã©ãŒãã³ã¹æé©å
- React.memoã䜿çšããŠã³ã³ããŒãã³ãã®åã¬ã³ããªã³ã°ãæå°å
- useCallbackã§ã€ãã³ããã³ãã©ãã¡ã¢å
- 倧éã®ã¿ã¹ã¯ã«å¯Ÿå¿ãããããä»®æ³ã¹ã¯ããŒã«ã®å®è£
ãæ€èšïŒ1000件以äžã®å ŽåïŒ
## ã¢ã¯ã»ã·ããªãã£
- ãã¹ãŠã®ã€ã³ã¿ã©ã¯ãã£ãèŠçŽ ã«aria-label
- ããŒããŒãããã²ãŒã·ã§ã³å¯Ÿå¿
- ãã©ãŒã«ã¹ç®¡ç
- ã¹ã¯ãªãŒã³ãªãŒããŒå¯Ÿå¿
ã¿ã¹ã¯ãã¡ã€ã«ãèŠãŠã¿ã
åæ§ã«ã¿ã¹ã¯ãã¡ã€ã«ã®æ¹ãèŠãŠã¿ãŸãããã
ããã€ãã®ãã§ãŒãºã«åãããŠãããäŸåé¢ä¿ã瀺ãããŠããã®ã§ãé çªã«è¿·ããé²ããããšãã§ããããã«ãªã£ãŠããŸãã
# TODOã¢ããªå®è£
ã¿ã¹ã¯äžèЧ
## ãã§ãŒãº1: åºç€æ§ç¯
- [ ] **Task 1**: ãããžã§ã¯ãã»ããã¢ãã
- Viteã§ãããžã§ã¯ããåæå
- TypeScriptèšå®
- åºæ¬çãªãã£ã¬ã¯ããªæ§é ã®äœæ
- äŸåé¢ä¿: ãªã
- [ ] **Task 2**: éçºç°å¢ã®èšå®
- ESLintãPrettierã®èšå®
- CSS Modulesã®èšå®
- package.jsonã®ã¹ã¯ãªããèšå®
- äŸåé¢ä¿: Task 1
- [ ] **Task 3**: åå®çŸ©ã®äœæ
- types/todo.tsã®äœæ
- åºæ¬çãªåã€ã³ã¿ãŒãã§ãŒã¹ã®å®çŸ©
- äŸåé¢ä¿: Task 1
## ãã§ãŒãº2: ã³ã¢æ©èœå®è£
- [ ] **Task 4**: ããŒã«ã«ã¹ãã¬ãŒãžãŠãŒãã£ãªãã£ã®å®è£
- utils/storage.tsã®äœæ
- ä¿åã»èªã¿èŸŒã¿ã»ãšã©ãŒãã³ããªã³ã°
- äŸåé¢ä¿: Task 3
- [ ] **Task 5**: TodoContextãšReducerã®å®è£
- contexts/TodoContext.tsxã®äœæ
- Reducerããžãã¯ã®å®è£
- äŸåé¢ä¿: Task 3, Task 4
- [ ] **Task 6**: ã«ã¹ã¿ã ããã¯ã®å®è£
- hooks/useTodos.tsã®äœæ
- hooks/useLocalStorage.tsã®äœæ
- äŸåé¢ä¿: Task 5
- [ ] **Task 7**: TodoInputã³ã³ããŒãã³ãã®å®è£
- components/TodoInput.tsxã®äœæ
- å
¥åãã©ãŒã ãšããªããŒã·ã§ã³
- äŸåé¢ä¿: Task 6
- [ ] **Task 8**: TodoItemã³ã³ããŒãã³ãã®å®è£
- components/TodoItem.tsxã®äœæ
- ãã§ãã¯ããã¯ã¹ãç·šéãå逿©èœ
- äŸåé¢ä¿: Task 6
- [ ] **Task 9**: TodoListã³ã³ããŒãã³ãã®å®è£
- components/TodoList.tsxã®äœæ
- ã¿ã¹ã¯äžèŠ§è¡šç€ºãšãã£ã«ã¿ãªã³ã°
- äŸåé¢ä¿: Task 8
- [ ] **Task 10**: TodoFilterã³ã³ããŒãã³ãã®å®è£
- components/TodoFilter.tsxã®äœæ
- ãã£ã«ã¿ãŒãã¿ã³ã®å®è£
- äŸåé¢ä¿: Task 6
- [ ] **Task 11**: Appã³ã³ããŒãã³ãã®å®è£
- components/App.tsxã®äœæ
- å
šäœã¬ã€ã¢ãŠããšContextProvider
- äŸåé¢ä¿: Task 7, Task 9, Task 10
## ãã§ãŒãº3: ã¹ã¿ã€ãªã³ã°ãšUX
- [ ] **Task 12**: åºæ¬ã¹ã¿ã€ã«ã®å®è£
- CSS Modulesãã¡ã€ã«ã®äœæ
- ã¬ã¹ãã³ã·ããã¶ã€ã³ã®å®è£
- äŸåé¢ä¿: Task 11
- [ ] **Task 13**: ã¢ãã¡ãŒã·ã§ã³ãšãã©ã³ãžã·ã§ã³ã®è¿œå
- ã¿ã¹ã¯è¿œå ã»å逿ã®ã¢ãã¡ãŒã·ã§ã³
- ç¶æ
倿޿ã®ãã©ã³ãžã·ã§ã³
- äŸåé¢ä¿: Task 12
- [ ] **Task 14**: ããŒããŒãã·ã§ãŒãã«ããã®å®è£
- Enter/EscããŒã®ãã³ããªã³ã°
- ãã©ãŒã«ã¹ç®¡ç
- äŸåé¢ä¿: Task 11
## ãã§ãŒãº4: ãã¹ããšå質ä¿èšŒ
- [ ] **Task 15**: ãŠããããã¹ãã®äœæ
- ã³ã³ããŒãã³ããã¹ã
- ã«ã¹ã¿ã ããã¯ã®ãã¹ã
- Reducerã®ãã¹ã
- äŸåé¢ä¿: Task 11
- [ ] **Task 16**: çµ±åãã¹ãã®å®æœ
- ãŠãŒã¶ãŒãããŒå
šäœã®ãã¹ã
- ããŒã«ã«ã¹ãã¬ãŒãžãšã®é£æºãã¹ã
- äŸåé¢ä¿: Task 15
- [ ] **Task 17**: ã¢ã¯ã»ã·ããªãã£ã®å®è£
- ARIA屿§ã®è¿œå
- ã¹ã¯ãªãŒã³ãªãŒããŒå¯Ÿå¿
- äŸåé¢ä¿: Task 14
## ãã§ãŒãº5: æé©åãšãããã€æºå
- [ ] **Task 18**: ããã©ãŒãã³ã¹æé©å
- React.memoã®é©çš
- useCallbackã®é©çš
- 倧éããŒã¿å¯Ÿå¿ã®æ€èš
- äŸåé¢ä¿: Task 11
- [ ] **Task 19**: ãã«ãèšå®ã®æé©å
- Viteã®ãã«ãèšå®
- æ¬çªç°å¢çšã®æé©å
- äŸåé¢ä¿: Task 18
- [ ] **Task 20**: ããã¥ã¡ã³ãäœæ
- README.mdã®äœæ
- äœ¿çšæ¹æ³ãšã»ããã¢ããæé
- äŸåé¢ä¿: Task 19
## é²æè¿œè·¡
- å®äº: 0/20
- é²è¡äž: 0
- æªçæ: 20
## å®è£
é åºã®æšå¥š
1. ãã§ãŒãº1ãé çªã«å®æœïŒåºç€ãå¿
èŠïŒ
2. ãã§ãŒãº2ã¯Task 4-6ãå
ã«å®æœïŒç¶æ
管çã®åºç€ïŒ
3. ãã§ãŒãº2ã®Task 7-11ã¯äžŠè¡å®æœå¯èœ
4. ãã§ãŒãº3-5ã¯é æ¬¡å®æœ
ã¿ã¹ã¯ãä¿®æ£ããŠããã
ä»åã¯ãã§ã« React ãããžã§ã¯ãã¯ã»ããã¢ããæžã¿ã®ç¶æ ããã¹ã¿ãŒãããŸããã
ãã®ãããäžèšã® **Task 1**: ãããžã§ã¯ãã»ããã¢ãã ã®éšåã¯äžèŠãšãªããŸãã
ããèšã£ãå Žåã¯ãæåã§ã¿ã¹ã¯ãã¡ã€ã«ãä¿®æ£ããã®ã§ã¯ãªããClaude Code ã«æç€ºãåºããŠä¿®æ£ããæ¹ãå®å®ããããšæããŸãã
> Reactãããžã§ã¯ããã»ããã¢ããæžã¿ãªã®ã§ Task1 ã¯äžèŠã§ã
/init ã³ãã³ããå®è¡ã㊠CLAUDE.md ãæŽæ°ããŠãã
ããã©ã«ãã® CLAUDE.md ã«ã¯ Kiro ã¹ã¿ã€ã«ã«é¢ããèšè¿°ãããããŸããã
ãã®ã¿ã€ãã³ã°ã§ Claude Code å
ã§ /init ã³ãã³ããå®è¡ããããšã§ããããžã§ã¯ãã®å
容ãåæ ãããŠãããšããã§ãããã
> /init
ãããã specs ãã©ã«ãå
ã®ä»æ§ããã¥ã¡ã³ã3ç¹ã»ããã®å
容ãåæ ããŠãããã¯ãã§ãã
CLAUDE.mdã/initã§ã©ãè²ãŠãŠãããã«ã€ããŠã¯ãæèãClaude Codeã§äœã£ãŠåŠã¶ AIé§åã¢ããªéçºå
¥éãïŒæè¡è©è«ç€Ÿã2026幎9æ8æ¥çºå£²ïŒã®ç¬¬4ç« ã§ãéå±€çãªæŽçãå Žæããšã®ã«ãŒã«æå®ãŸã§å«ããŠæ±ã£ãŠããŸãã
CLAUDE.mdã®ã»ãã«ããäŒããæç€ºã®æžãæ¹ãã¿ã¹ã¯ã®åå²ãã³ã³ããã¹ãã®ä»çµã¿ãªã©ããã³ãºãªã³ã§é²ããæ§æã§ãã
Todoã¢ããªã®éçºãé²ããŠããã
ã§ã¯ãå®éã«éçºãã¹ã¿ãŒãããŠã¿ãŸãã
ã¶ããªãããã« specs/tasks.md ã«æ²¿ã£ãŠéçºãé²ã㊠ãšäŒããã®ãããããã§ãã
> specs/tasks.md ã«æ²¿ã£ãŠéçºãé²ããŠ
ããšã¯ã¿ã¹ã¯ãã¡ã€ã«ã«åŸã£ãŠèªåçã«éçºãé²ã¿ãŸã
å®éã«å®æããã¢ããªã®ç»é¢
åºæ¬çãªTODOã¢ããªã宿ããŸããã
äžéãè§Šã£ãŠã¿ãéããäºåã®èŠä»¶å®çŸ©éãã«äœãããŠããŸãã
èŠãç®ãã·ã³ãã«ã§äœ¿ãããããäœãããã°ãªãåäœããŠããã®ãçŽ æŽãããã§ãã
ã¡ãããšäœãããããšã¯æ£çŽæ³å®å ã§ãããå®æç³»ãäºåã«ã€ã¡ãŒãžã§ããã®ã§å®å¿æããããŸããã
ãŸãšãïŒä»æ§é§åéçºã§éçºå¹çãæå€§åããã
Claude Codeã䜿ã£ãéçºã§ãäºåã«ä»æ§æžãäœæããããšã®éèŠæ§ããäŒãããŸããã
ãããŠãç§ãçšæãã kiro_style_claude_code ãã³ãã¬ãŒãïŒã®ã³ãã³ãïŒã䜿ãã°ããã®ä»æ§æžäœæããããæ°åã§å®äºããŸãã
ç¹ã«ä»¥äžã®ãããªå Žåã¯ããã²ãã®æ¹æ³ã詊ããŠã¿ãŠãã ããã
- äžèŠæš¡ä»¥äžã®ã¢ããªã±ãŒã·ã§ã³ãäœãæ
- ããŒã ã§éçºããæ
- åŸããæ©èœè¿œå ã®å¯èœæ§ãããæ
æåã®æ°åã®æè³ã§ãéçºæéãå€§å¹ ã«ççž®ã§ããã¯ãã§ãã
仿§é§åéçºã¯åãªãããŒã«ã®äœ¿ãæ¹ã§ã¯ãªããéçºææ³ã®æ¡çšã§ãã
ãã®èãæ¹ã身ã«ã€ããã°ãAIé§åéçºã®è³ªãæ Œæ®µã«åäžããŸãã
ãã²ã次ã®ãããžã§ã¯ãã§è©ŠããŠã¿ãŠãã ããïŒïŒ
ã«ã¹ã¿ãã€ãºæ¡ãã䜿ã£ãŠã¿ã話ã倧æè¿ã§ããããŸãã
ä»ã«ã Claude Code ã AI é§åéçºã®èšäºãæžããŠããŸãã®ã§ãããã£ãããã¡ããã芧ãã ããã
- ãClaude Codeãããã§ããïŒå人éçºãããšãã«æåã«çšæããããã¥ã¡ã³ã24çš®ãšæ©èœèŠä»¶æžãå šå ¬é
- ãã³ããOKãå人éçºã§Apple颚ãã¶ã€ã³ã«ãŒã«ãäœã£ããçµ±äžæã®ããã«ãã³ããUIã«ã§ãã話
- ãClaude Codeãæç€ºæžãè¥å€§åããŠããã®ã§èгç¹å¥ã«æç€ºãåããŠéçºå¹çãæ¹åãã話
- Claude Code å ã§å°éå®¶ãäœæïŒæ°æ©èœ Sub agents ã§çšéå°éAIãäœã£ãŠå質æ¹åããŠã¿ã
ã¡ãã£ãšå®£äŒïŒ Claude Code ãªã©ã® Udemy ã³ãŒã¹äœã£ãŠãŸã
Claude Code ã§ã® Vibe Coding ã Next.jsãRuby on Rails ãªã©ã® Udemy ã³ãŒã¹ãéè¬ããŠããããããããããšã«è€æ°ã®ãã¹ãã»ã©ãŒãããã ããŠãŸãã
èªç€Ÿãµã€ãã§ã¯æäœäŸ¡æ Œã§åè¬ã§ããã¯ãŒãã³ãé åžããŠããã®ã§ãããã£ããèŠãŠãã£ãŠãã ããã
ãæèŠããæ°è¬åº§ã®èŠæã倧æè¿ã§ãïŒ

