ããã«ã¡ã¯ããšãŸã ã§ãã
SuperClaudeã®ã³ãã³ãã¯ããããããããã©ãã©ã®é çªã§äœ¿ãã°ãããè¿·ã£ãŠããŸãããïŒ
å®ã¯SuperClaudeã«ã¯ãCommon Workflowsããšããæšå¥šãã¿ãŒã³ããããŸãã
ãã®æµãã«æ²¿ã£ãŠé²ãããšãèŠä»¶å®çŸ©ããå®è£
èšç»ã®çå®ãããã«ã³ãŒãå質ã®åäžãŸã§ã¹ã ãŒãºã«éçºãé²ãããã«ãªããŸãã
ä»åã¯å€©æ°äºå ±ã¢ããªã顿ã«ãSuperClaudeã®4ã€ã®ã¯ãŒã¯ãããŒãå®è·µããŠã¿ãŸããïŒ
å¿ãã人ã®ããã«èŠçŽ
- SuperClaudeã®æšå¥šã¯ãŒã¯ãããŒã§å¹ççã«éçºã§ãã
- brainstorm â design â workflow ã®3ã€ã§èšèšã宿
- åã³ãã³ãã®å®è¡çµæãå ·äœçã§å®çšç
- ã³ãŒãå質ã®åæãšæ¹åãæ°å€ã§å¯èŠåããã
- ããã¥ã¡ã³ãçææ©èœã§éçºè³ç£ãæ®ãã
ã¡ãªã¿ã«ããã¡ãã®åç»çã®æ¹ãè§£èª¬ã¯æåãã®ã§ããããã§ãã
ä»å䜿ãã¯ãŒã¯ãããŒã®å šäœå
SuperClaudeã®ããã¥ã¡ã³ãã«ã¯ãCommon WorkflowsããšããŠ4ã€ã®æšå¥šãã¿ãŒã³ã玹ä»ãããŠããŸãã
ãããããããããéçºã·ãŒã³ã«å¯Ÿå¿ããŠããã®ã§ãã
- New Project Setup - ãããžã§ã¯ãç«ã¡äžã
- Feature Development - æ©èœéçº
- Code Quality Improvement - å質æ¹å
- Bug Investigation - åé¡èª¿æ»
ããããçµã¿åãããããšã§ãéçºã®å šå·¥çšãã«ããŒã§ããŸãã
ãããžã§ã¯ãã®ã»ããã¢ãã
ãŸãã¯Next.jsã§ãããžã§ã¯ããäœæããŸãã
npx create-next-app@latest weather-app
cd weather-app
npm run dev
å¥ã¿ãŒããã«ã§Claude Codeãèµ·åã
claude
åæåã³ãã³ãã§çŸåšã®ç¶æ ãã¡ã¢ãªãã¡ã€ã«ã«èšé²ããŸãã
/init
ããã§æºåå®äºã§ãã
ãããžã§ã¯ãã®çŸç¶ãCLAUDE.mdãã¡ã€ã«ã«ä¿åããŠããããšã§ã以éã®äŒè©±ã§æèãä¿æã§ããããã«ãªããŸãã
SuperClaude ãã€ã³ã¹ããŒã«
ãŸã SuperClaude ãã€ã³ã¹ããŒã«ããŠããªãå Žåã¯ãå¥ã®èšäºãåèã«ã€ã³ã¹ããŒã«ãããŠãããŸãã
ãªããSuperClaude ã®ã«ã¹ã¿ã ã³ãã³ãã¯æ¥ã 远å ãããŠããããã§ãã®ã§ãé©å®ããŒãžã§ã³ã¢ããããŠãããšè¯ãã§ãããã
å床ãã€ã³ã¹ããŒã«ãããšç¢ºå®ã«ã³ãã³ããææ°åã§ããŸãã
uv venv
source .venv/bin/activate
uv pip install SuperClaude
python3 -m SuperClaude install
ã¯ãŒã¯ãããŒ1ïŒãããžã§ã¯ãã®ç«ã¡äžã
æ°èŠãããžã§ã¯ãã§æåã«äœ¿ãã¯ãŒã¯ãããŒã§ãã
èŠä»¶å®çŸ© â èšèš â èšç»ãšããæµãã§é²ããŠãããŸãã
brainstormã§èŠä»¶å®çŸ©
ãŸãã¯äœããããã®ãæç¢ºã«ããŸãã
/sc:brainstorm "倩æ°äºå ±ã¢ããªãäœãããã§ããOpenWeatherMap APIã䜿ã£ãŠçŸåšã®å€©æ°ãš5æ¥éã®å€©æ°äºå ±ã衚瀺ããã"
ãããšSuperClaudeã察話çã«èŠä»¶ãè©°ããŠãããŸãã
ð€ èŠä»¶ã®è©³çŽ°ç¢ºèª
åºæ¬æ©èœã«ã€ããŠ
- å Žæã®æå®æ¹æ³ã¯ã©ãããŸããããïŒ
- éœåžåã§æ€çŽ¢ïŒ
- çŸåšå°ãèªåååŸïŒ
- ãæ°ã«å
¥ãã®å Žæãä¿åïŒ
- è€æ°éœåžã®åãæ¿ãæ©èœïŒ
衚瀺ãããå€©æ°æ
å ±
- çŸåšã®å€©æ°ã§è¡šç€ºãããé
ç®ïŒ
- æ°æž©ãäœææž©åºŠã倩æ°ã¢ã€ã³ã³ïŒ
- 湿床ã颚éãæ°å§ïŒ
- éæ°Žç¢ºçãèŠçïŒ
- 5æ¥éäºå ±ã®è¡šç€ºåœ¢åŒïŒ
- 1æ¥ããšã®æé«/æäœæ°æž©ïŒ
- 3æéããšã®è©³çްäºå ±ïŒ
- é±éãã¬ã³ãã°ã©ãïŒ
ãã¶ã€ã³ã»UX
- ããžã¥ã¢ã«ã¹ã¿ã€ã«ïŒ
- ã·ã³ãã«ã§ã¯ãªãŒã³ãªãã¶ã€ã³ïŒ
- 倩æ°ã«å¿ããèæ¯ç»å/ã¢ãã¡ãŒã·ã§ã³ïŒ
- ã«ãŒãåã¬ã€ã¢ãŠãïŒ
- ããŒã¯/ã©ã€ãã¢ãŒã察å¿ïŒ
æè¡çãªèŠæ
- ããŒã¿æŽæ°ïŒ
- ããŒãžèªã¿èŸŒã¿æã®ã¿ïŒ
- 宿çãªèªåæŽæ°ïŒ
- ãã«ããŠã³ã§ãªãã¬ãã·ã¥ïŒ
ð çŸæç¹ã§ã®èŠä»¶æŽç
ãããžã§ã¯ã: 倩æ°äºå ±Webã¢ããª
æè¡ã¹ã¿ãã¯:
- Next.js 15.5.0 (App Router)
- TypeScript
- Tailwind CSS v4
- OpenWeatherMap API
ç¢ºå®æ©èœ:
- çŸåšã®å€©æ°è¡šç€º
- 5æ¥éã®å€©æ°äºå ±
æ€èšäºé
:
- å Žæã®æå®æ¹æ³
- 衚瀺ãã詳现æ
å ±
- UI/UXãã¶ã€ã³
- ã¬ã¹ãã³ã·ã察å¿ã®åªå
床
ã©ã®éšåãã詳ããæ±ºããŠãããŸããããïŒç¹ã«éèŠãããæ©èœã¯ãããŸããïŒ
ããã§æ³šç®ãã¹ãã¯ãææ§ãªéšåãæç¢ºã«ããŠãããç¹ã§ãã
ãã ã倩æ°äºå ±ã¢ããªãäœãããããšäŒããã ãã§ã¯ãå®è£
ã®è©³çŽ°ãæ±ºãŸããåŸã§ææ»ããçºçããŸãã
ã§ãbrainstormã³ãã³ããªããèæ
®ãã¹ãç¹ãç¶²çŸ
çã«æç€ºããŠãããã®ã§ãã
äŸãã°å Žæã®æå®æ¹æ³ã²ãšã€ãšã£ãŠããéœåžåæ€çŽ¢ãªã®ãçŸåšå°ååŸãªã®ãã
ãã®éžæã«ãã£ãŠå®è£
ã®è€éãã倧ããå€ãããŸãã
ã·ã³ãã«ã«äœãããã®ã§ã以äžã®ããã«è¿çããŸããã
å Žæã«ã€ããŠã¯éœåžåã§æ€çŽ¢ã§ããããã«ãã€ã€ãããã©ã«ãã¯æ±äº¬ã«ããŠãããŠãã ããã
ä»ã®èŠä»¶ã«ã€ããŠã¯ä»»ããŸããããŸãã¯ã§ããã ãã·ã³ãã«ã§æäœéãªæ©èœã«ãšã©ããŠã»ããã§ãã
æçµçã«ãã®ãããªèŠä»¶å®çŸ©æžãäœæãããŸããã
⺠äºè§£ããŸããïŒã·ã³ãã«ã§æäœéã®æ©èœã«çµã£ã倩æ°äºå ±ã¢ããªãäœããŸãããã
ð æçµä»æ§æž
ã³ã¢æ©èœïŒMVPïŒ
å Žæã®æå®:
- éœåžåæ€çŽ¢ïŒããã¹ãå
¥åïŒ
- ããã©ã«ã: æ±äº¬
- æ€çޢ履æŽ: ãªãïŒã·ã³ãã«ãåªå
ïŒ
çŸåšã®å€©æ°:
- éœåžå
- çŸåšã®æ°æž©
- 倩æ°ã®èª¬æïŒæŽããæããªã©ïŒ
- 倩æ°ã¢ã€ã³ã³
- æé«/æäœæ°æž©
5æ¥éäºå ±:
- æ¥ä»
- 倩æ°ã¢ã€ã³ã³
- æé«/æäœæ°æž©
- ã·ã³ãã«ãªãªã¹ã衚瀺
UI/UX:
- ã¯ãªãŒã³ã§ãããã«ãªãã¶ã€ã³
- ã¢ãã€ã«å¯Ÿå¿ïŒã¬ã¹ãã³ã·ãïŒ
- ã©ã€ãã¢ãŒãã®ã¿
- æ¥æ¬èªè¡šç€º
æè¡å®è£
APIèšå®:
- OpenWeatherMap API (ç¡æãã©ã³)
- èšèªãã©ã¡ãŒã¿: jaïŒæ¥æ¬èªïŒ
- åäœ: metricïŒææ°ïŒ
ã³ã³ããŒãã³ãæ§æ:
- SearchBar: éœåžåå
¥å
- CurrentWeather: çŸåšã®å€©æ°ã«ãŒã
- ForecastList: 5æ¥éäºå ±ãªã¹ã
- WeatherCard: äºå ±ã®åæ¥è¡šç€º
ãšã©ãŒåŠç:
- éœåžãèŠã€ãããªãå Žå
- APIå¶é/ãšã©ãŒ
- ããŒãã£ã³ã°ç¶æ
å®è£
ã®åªå
é äœ
1. Phase 1: åºæ¬æ©èœ
- æ±äº¬ã®å€©æ°ãããŒãã³ãŒã衚瀺
- UIã¬ã€ã¢ãŠãæ§ç¯
2. Phase 2: APIçµ±å
- OpenWeatherMap APIæ¥ç¶
- ããŒã¿ååŸãšè¡šç€º
3. Phase 3: æ€çŽ¢æ©èœ
- éœåžåæ€çŽ¢å®è£
- ãšã©ãŒãã³ããªã³ã°
ããã§ããããã§ããããïŒå®è£
ãéå§ããŠãããã§ããïŒ
èŠä»¶ãæç¢ºã«ãªã£ããšããã§ãããã¥ã¡ã³ãåããŠãããŸãã
> 決ãŸã£ãèŠä»¶å®çŸ©ã«ã€ããŠãdocsãã£ã¬ã¯ããªå
ã«ããã¥ã¡ã³ããšããŠãŸãšããŠãã ãã
ããã¥ã¡ã³ãåããŠããããšã§ãåŸããæ¯ãè¿ã£ãããAIãšã®äŒè©±ãé·ããªã£ãŠãæèã倱ããªãããã«ã§ããŸãã
ãŸããAPIããŒãäºåã«OpenWeatherMapããååŸããŠãããã®ã§ããã®æšãäŒããŠãããŸãããã
env.localã«OPEN_WEATHER_API_KEYãšããååã§APIããŒãèšå®ããŠãããŸãã
ãã®åæã§é²ãããããèŠä»¶å®çŸ©æžã«è¿œèšããŠãã ããã
designã§ã·ã¹ãã èšèš
èŠä»¶ãåºãŸã£ãããæè¡çãªèšèšã«å ¥ããŸãã
/sc:design "èŠä»¶å®çŸ©ãããšã«ã·ã¹ãã èšèš"
ãããšã以äžã®ãããªèšèšãèªåçæãããŸããã
⺠ã·ã¹ãã èšèšæžã docs/system-design.md ãšããŠäœæããŸããã
èšèšã®ãã€ã³ã
ðïž ã¢ãŒããã¯ãã£
- 3å±€æ§é : ã¯ã©ã€ã¢ã³ã â API Routes â å€éšAPI
- ã»ãã¥ãªãã£éèŠ: APIããŒããµãŒããŒãµã€ãã§ç®¡ç
ð ã»ãã¥ãªãã£èšèš
- APIããŒã¯ç°å¢å€æ° OPEN_WEATHER_API_KEY ã§ç®¡ç
- Next.js API Routesã䜿çšããŠããŒãä¿è·
- å
¥åæ€èšŒãšã¬ãŒãå¶éãå®è£
ðŠ ã³ã³ããŒãã³ãèšèš
- SearchBar: éœåžåæ€çŽ¢
- CurrentWeather: çŸåšã®å€©æ°è¡šç€º
- ForecastList: 5æ¥éäºå ±ãªã¹ã
- WeatherCard: åå¥ã®äºå ±ã«ãŒã
ð ããŒã¿ãããŒ
1. ãŠãŒã¶ãŒå
¥å â SearchBar
2. API Routeçµç±ã§OpenWeatherMapã«æ¥ç¶
3. ã¬ã¹ãã³ã¹ãæŽåœ¢ããŠUIã«åæ
â¡ ããã©ãŒãã³ã¹æé©å
- 5åéã®APIã¬ã¹ãã³ã¹ãã£ãã·ã³ã°
- æ€çŽ¢å
¥åã«500msã®ãããŠã³ã¹
- ãšã©ãŒãã³ããªã³ã°ãšåè©Šè¡æ©èœ
èšèšæžã«ã¯ãåå®çŸ©ããšã©ãŒãã³ããªã³ã°ããã¹ãæŠç¥ãå«ãŸããŠããŸãããããããŒã¹ã«å®è£
ãé²ããããŸãã
ã¢ãŒããã¯ãã£ãã»ãã¥ãªãã£ãã³ã³ããŒãã³ããããŒã¿ãããŒãããã©ãŒãã³ã¹ãªã©ãå®è·µçãªèгç¹ã§ãŸãšããããŠããŸãã
ç¹ã«æ³šç®ãããã®ã¯ã»ãã¥ãªãã£èšèšã®éšåã§ãã
APIããŒãã¯ã©ã€ã¢ã³ãåŽã«é²åºãããªãããã«ãNext.js API Routesãçµç±ããèšèšã«ãªã£ãŠããŸãã
ãããã£ãå®è£
äžã®èœãšã穎ãäºåã«åé¿ã§ããã®ã¯ãèšè𿮵éã§ãã£ããèããŠããããã§ãã
ãŒãããé©åãªèšèšãäœãããæç€ºãããã®ã倧å€ã§ãããSuperClaudeãªããã®ã¬ãã«ã®ã·ã¹ãã èšèšãã³ãã³ãäžçºã§äœæã§ããŸãã
workflowã§å®è£ èšç»äœæ
èšèšãã§ããããå ·äœçãªå®è£ èšç»ãç«ãŠãŸãã
/sc:workflow "å®è£
èšç»"
ãã¹ãé§åéçºã§é²ããããšãã£ãŒãããã¯ãããšããã以äžã®èšç»ãäœæãããŸããã
ð å®è£
èšç»ã®æŠèŠ
Phase 1: UIåºç€æ§ç¯ (Day 1)
- åå®çŸ©ãšãããžã§ã¯ãæ§é
- ã¢ãã¯ããŒã¿ã§UIã³ã³ããŒãã³ãäœæ
- ã¬ã¹ãã³ã·ããã¶ã€ã³å®è£
Phase 2: APIå®è£
(Day 2)
- Next.js API Routesæ§ç¯
- OpenWeatherMap飿º
- ãã£ãã·ã³ã°å®è£
Phase 3: çµ±åãšæ€çŽ¢æ©èœ (Day 2-3)
- ããã³ããšã³ããšAPIçµ±å
- ãªã¢ã«ã¿ã€ã æ€çŽ¢æ©èœ
- UXæ¹åïŒããŒãã£ã³ã°ããšã©ãŒè¡šç€ºïŒ
Phase 4: æé©å (Day 3)
- ãšã©ãŒãã³ããªã³ã°åŒ·å
- ããã©ãŒãã³ã¹æé©å
- ã»ãã¥ãªãã£ãšã¢ã¯ã»ã·ããªãã£
Phase 5: ãã¹ã (Day 3-4)
- ãŠããã/çµ±åãã¹ã
- ããã¥ã¡ã³ãæŽå
- ãããã€æºå
èšç»æžãèªåçã«ããã¥ã¡ã³ãåãããŸããã
ãã®æ®µéçãªå®è£
èšç»ãããããšã§ãã©ãããæãã€ããã¹ããè¿·ãããšããªããªããŸãã
ç¹ã«Phaseããšã«æç¢ºãªææç©ãå®çŸ©ãããŠããã®ã§ãé²æãææ¡ãããããªããŸãã
ã¯ãŒã¯ãããŒ2ïŒæ©èœéçº
èšç»ãã§ããããå®éã®éçºã«å ¥ããŸãã
implementã§æ®µéçã«å®è£
ãŸãã¯ãã¹ãåºç€ã®èšå®ããå§ããŸãã
/sc:implement "ãã¹ãåºç€ã®èšå®"
å®è¡çµæã¯ãã¡ãã§ãã
⺠â
ãã¹ãåºç€ã®ã»ããã¢ããå®äº
ãã¹ãé§åéçºïŒTDDïŒã®ããã®åºç€ãæ§ç¯ããŸããã
ðŠ ã€ã³ã¹ããŒã«æžã¿ããã±ãŒãž
- Jest: ãã¹ããã¬ãŒã ã¯ãŒã¯
- @testing-library/react: Reactã³ã³ããŒãã³ããã¹ã
- @testing-library/jest-dom: DOMèŠçŽ ã®ã«ã¹ã¿ã ãããã£ãŒ
- @testing-library/user-event: ãŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ã·ãã¥ã¬ãŒã·ã§ã³
- jest-environment-jsdom: ãã©ãŠã¶ç°å¢ã®ã·ãã¥ã¬ãŒã·ã§ã³
ð äœæãããã¡ã€ã«æ§é
weather-app/
âââ jest.config.js # Jestèšå®ãã¡ã€ã«
âââ jest.setup.js # ãã¹ãç°å¢ã®ã»ããã¢ãã
âââ __tests__/ # ãã¹ããã¡ã€ã«çšãã£ã¬ã¯ããª
â âââ components/ # ã³ã³ããŒãã³ããã¹ã
â âââ lib/ # ã©ã€ãã©ãªãã¹ã
â âââ api/ # APIãã¹ã
â âââ types/ # åå®çŸ©ãã¹ã
âââ src/
âââ components/ # ã³ã³ããŒãã³ãå®è£
âââ lib/ # ãŠãŒãã£ãªãã£
âââ types/ # åå®çŸ©
𧪠å©çšå¯èœãªãã¹ãã³ãã³ã
npm test # ãã¹ãå®è¡
npm run test:watch # 倿Žç£èŠã¢ãŒãã§ãã¹ã
npm run test:coverage # ã«ãã¬ããžã¬ããŒãçæ
âš ã»ããã¢ããå
容
- Next.js察å¿ã®Jestèšå®
- TypeScriptãµããŒã
- ãã¹ãšã€ãªã¢ã¹ïŒ@/ïŒã®ãµããŒã
- ç°å¢å€æ°ã®ã¢ãã¯ïŒOPEN_WEATHER_API_KEYïŒ
- fetchã®ã°ããŒãã«ã¢ãã¯
ãã¹ãç°å¢ã®åäœç¢ºèªãå®äºããTDDéçºã®æºåãæŽããŸããã
ãã¹ãåºç€ã®ã»ããã¢ãããå®äºããŸããã
ããã§éèŠãªã®ã¯ãåã«ã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããã ãã§ãªãããã¡ã€ã«æ§é ãŸã§æŽçããŠãããŠããç¹ã§ãã
åŸãããã¹ããæžããããæ§é ã«ãªã£ãŠããã®ã§ãéçºå¹çãäžãããŸãã
ç¶ããŠPhase 1ããé ã«å®è£ ãé²ããŸãã
/sc:implement "Phase 1"
å®è£ èšç»ã«åŸã£ãŠãèªåçã«ã³ãŒããçæãããŠãããŸãã
ãããäžæ°ã«é²ãããå Žåã¯ä»¥äžã®ãããªããã³ããã§OKã§ãã
ãã§ã«ã·ã¹ãã èšèšãèšç»ã¯ç¶¿å¯ã«ç«ãŠãããŠããŸãã®ã§ããã¡ãã§ã倧äžå€«ããšæããŸãã
/sc:implement "å®è£
èšç»ã«æ²¿ã£ãŠå®äºãŸã§é²ããŠãã ãã"
èšç»ãããããããããããã£ã倧éæãªæç€ºã§ãé©åã«å®è£ ãé²ãã®ã§ãã
ãšã©ãŒãçºçããæã®å¯ŸåŠæ³
å®è£ ãå®äºããŠãã©ãŠã¶ã§ç¢ºèªãããšããšã©ãŒãåºãŠããŸããã
ãæ±äº¬ãšããéœåžãèŠã€ãããŸããã§ããããšããã¡ãã»ãŒãžã§ãã
throw new Error(error.error || '倩æ°äºå ±ã®ååŸã«å€±æããŸãã')
ãããè§£æ¶ãããããã«ã¹ã¿ã ã³ãã³ãã䜿ã£ãŠã¿ãŸããã
troubleshootã§åé¡èšºæ
åé¡ã解決ããããã®ã«ã¹ã¿ã ã³ãã³ãããããŸãã®ã§ããã¡ãã䜿ããŸãã
ãšã©ãŒå 容ãåŒæ°çã«æž¡ããŠãããã°OKã§ãã
/sc:troubleshoot "## Error Type
Console Error
## Error Message
Forecast data not found for æ±äº¬
at fetchForecast (src/lib/weather.ts:19:11)
at async Home.useCallback[loadWeatherData] (src/app/page.tsx:23:43)
## Code Frame
17 | if (!response.ok) {
18 | const error = await response.json()
> 19 | throw new Error(error.error || '倩æ°äºå ±ã®ååŸã«å€±æããŸãã')
| ^
20 | }
21 |
22 | return response.json()
Next.js version: 15.5.0 (Turbopack)
"
SuperClaudeãåé¡ãåæããŠãããŸãã
åé¡ã®èšºæçµæãšè§£æ±ºç
åå ïŒOpenWeatherMap APIã¯æ¥æ¬èªã®éœåžåãèªèã§ããŸãã
解決ïŒè±èªã®éœåžåã®ã¿ãåãä»ããŸã
以äžã®ä¿®æ£ã宿œïŒ
- æ¥æ¬èªéœåžåãè±èªã«å€æãããã«ããŒé¢æ°ã远å
- ãã䜿ãããæ¥æ¬ã®éœåžåã®ãããã³ã°ãäœæ
ãã®èšºæçµæãéèŠãªã®ã¯ãåã«ãšã©ãŒãä¿®æ£ããã ãã§ãªããæ ¹æ¬åå ãç¹å®ããŠããç¹ã§ãã
æ¥æ¬èªã®éœåžåã䜿ããªããšãã仿§äžã®å¶çŽãèŠã€ããããã«å¯Ÿãã解決çãŸã§æç€ºããŠãããŠããŸãã
ããã¯åçŽã«ãšã©ãŒã¡ãã»ãŒãžãClaude Codeã«æž¡ãããããæ§é çãªåé¡è§£æ±ºã«ãªã£ãŠããŸãã
ä¿®æ£åŸãç¡äºã«å€©æ°æ å ±ã衚瀺ãããããã«ãªããŸããã
æ©èœè¿œå ãšèŠç©ãã
ãããŸã§ã倩æ°ã¢ã€ã³ã³ã¯ç»åãšããŠååŸããŠããŸããã
ãã®å€©æ°ã¢ã€ã³ã³ãçµµæåã«å€æŽããäœæ¥ã®èŠç©ãããåã£ãŠã¿ãŸãã
estimateã§å·¥æ°èŠç©ãã
/sc:estimate "倩æ°ã¢ã€ã³ã³ãç»åã§ã¯ãªãçµµæåã䜿ãããã«ããã"
ãããžã§ã¯ããããŒãžã£ãŒã®ãããªè©³çްãªèŠç©ãããåºåãããŸããã
ð èŠç©ããçµæ
æšå®äœæ¥æé: 2-3æéïŒäººéã®å®è£
æéïŒ
è€é床: äœãäžçšåºŠ
圱é¿ç®æ: 2ã³ã³ããŒãã³ã
å®è£
èšç»:
1. 倩æ°ã³ãŒããšçµµæåã®ãããã³ã°äœæ
2. CurrentWeatherã³ã³ããŒãã³ãã®ä¿®æ£
3. ForecastListã³ã³ããŒãã³ãã®ä¿®æ£
4. ãã¹ãã®æŽæ°
ã¡ãªãã:
â
å€éšç»åäŸåã®æé€
â
ããã©ãŒãã³ã¹åäžïŒãããã¯ãŒã¯ãªã¯ãšã¹ãåæžïŒ
â
ãªãã©ã€ã³å¯Ÿå¿å¯èœ
ãã¡ãªãã:
â ïž OSã»ãã©ãŠã¶ã«ããçµµæå衚瀺ã®å·®ç°
â ïž çŽ°ãã倩æ°ã®è¡šçŸãé£ãã
ãªã¹ã¯ãšå¯Ÿç:
- ãªã¹ã¯ïŒçµµæåã衚瀺ãããªãç°å¢
- 察çïŒãã©ãŒã«ããã¯ããã¹ãã®çšæ
- 圱é¿åºŠïŒäœ
å®è£ ã®å€æã«å¿ èŠãªæ å ±ãç¶²çŸ ãããŠããŸãã
ç¹ã«ã¡ãªããã»ãã¡ãªãããæç¢ºã«ãªã£ãŠããã®ã§ãå®è£
ãã¹ããã©ããã®å€æææã«ãªããŸãã
å人éçºã§ãããããã£ãèŠç©ãããåãããšã§ææ»ããæžãããŸãã
taskã§å®è£
èŠç©ãããå ã«ãå®è£ ãé²ããŸãã
implementã³ãã³ãã§ãè¯ãã®ã§ããããã£ãããªã®ã§estimateãšã»ããã§äœ¿ãããtaskã³ãã³ãã䜿ã£ãŠã¿ãŸãã
/sc:task "倩æ°ãç»åããçµµæåã«çœ®ãæããå®è£
"
ä»åã ãšã¿ã¹ã¯ã现ååãããããã€ãã®æ®µéã«åãããŠå®è£ ãé²ã¿ãŸãã
ç»åãçµµæåã«çœ®ãæããçšåºŠã®å®è£
ã§ããã°taskã³ãã³ãã®æ©æµã¯å°ããã®ã§ãããèŠæš¡ã倧ãããè€éãªå®è£
ã§ããã°taskã¯å¹åãçºæ®ãããã§ãã
taskã³ãã³ãã®å©ç¹ã¯ãå®è£
ãè«ççãªåäœã§åå²ããŠãããããšã§ãã
ããã«ãããéäžã§åé¡ãçºçããŠããã©ããŸã§å®äºããŠããŠäœãæ®ã£ãŠããããæç¢ºã«ãªããŸãã
ç¹ã«è©°ãŸãããšãªãã眮ãæããå®äºããŸããã
ã¯ãŒã¯ãããŒ3ïŒããã¥ã¡ã³ãçæ
éçºãäžæ®µèœããããããã¥ã¡ã³ããæŽåããŸãã
--typeãªãã·ã§ã³ã§æå®ãããšãããã¥ã¡ã³ãã®çš®é¡ãéžã¹ãŸãã
APIããã¥ã¡ã³ãçæ
/sc:document --type api
API仿§æžãèªåçæãããŸããã
ãã¡ãã¯äžéšæç²ããäŸã§ãã
## Endpoints
### 1. Get Current Weather
**Endpoint:** `GET /api/weather/[city]`
**Description:** Returns current weather information for the specified city.
**Parameters:**
| Parameter | Type | Location | Required | Description |
|-----------|------|----------|----------|-------------|
| city | string | URL path | Yes | City name (English or romanized) |
**Response Schema:**
```typescript
{
city: string // City name
temperature: number // Current temperature (°C)
description: string // Weather description in Japanese
icon: string // Weather icon code (e.g., "01d", "09n")
tempMax: number // Maximum temperature (°C)
tempMin: number // Minimum temperature (°C)
humidity?: number // Humidity percentage (optional)
windSpeed?: number // Wind speed in m/s (optional)
}
```
**Example Request:**
```bash
curl http://localhost:3000/api/weather/Tokyo
```
**Example Response:**
```json
{
"city": "Tokyo",
"temperature": 25.4,
"description": "æŽã",
"icon": "01d",
"tempMax": 28.2,
"tempMin": 22.1,
"humidity": 65,
"windSpeed": 3.5
}
```
**Error Responses:**
| Status Code | Description | Response Body |
|-------------|-------------|---------------|
| 404 | City not found | `{ "error": "Weather data not found for [city]" }` |
| 500 | Server error | `{ "error": "Failed to fetch weather data" }` |
| 500 | No API key | `{ "error": "API key is not configured" }` |
**Cache Behavior:**
- Results cached for 5 minutes per city
- Cache key: lowercase city name
- Cache cleared on server restart
ãã®APIããã¥ã¡ã³ããåªããŠããã®ã¯ãå®è£ ããèªåçæãããŠãããããåžžã«ææ°ã®ç¶æ ãä¿ãŠãããšã§ãã
æåã§ããã¥ã¡ã³ããæžããšãå®è£
ãšä¹é¢ããã¡ã§ãããSuperClaudeãªãå®è£
ãšåæããããã¥ã¡ã³ããäœæã§ããŸãã
ããŒã éçºã§APIãå
±æããéã«ã圹ç«ã¡ãŸãã
ãŠãŒã¶ãŒã¬ã€ãçæ
/sc:document --type user-guide
ãšã³ããŠãŒã¶ãŒåãã®ã¬ã€ããçæãããŸãã
# 倩æ°äºå ±ã¢ã㪠ãŠãŒã¶ãŒã¬ã€ã
## ð€ïž ã¯ããã«
ãã®ã¢ããªã¯ãäžçäžã®éœåžã®å€©æ°æ
å ±ãç°¡åã«ç¢ºèªã§ããWebã¢ããªã±ãŒã·ã§ã³ã§ããçŸåšã®å€©æ°ãš5æ¥éã®å€©æ°äºå ±ããèŠãããçµµæåãšãšãã«è¡šç€ºããŸãã
## ð± äž»ãªæ©èœ
### çŸåšã®å€©æ°è¡šç€º
- ð¡ïž ãªã¢ã«ã¿ã€ã ã®æ°æž©
- ð€ïž 倩æ°ã®ç¶æ
ïŒçµµæåã§è¡šç€ºïŒ
- ð æé«ã»æäœæ°æž©
- ð§ æ¹¿åºŠ
- ðš 颚é
### 5æ¥é倩æ°äºå ±
- ð
æ¥ä»ã𿿥
- ð¡ïž åæ¥ã®æé«ã»æäœæ°æž©
- ð€ïž 倩æ°äºå ±ïŒçµµæåã§è¡šç€ºïŒ
## ð äœ¿ãæ¹
### 1. ã¢ããªã±ãŒã·ã§ã³ãžã®ã¢ã¯ã»ã¹
ãã©ãŠã¶ã§ä»¥äžã®URLã«ã¢ã¯ã»ã¹ããŠãã ããïŒ
...以äžç¥
å人éçºã§ãããããã£ããŠãŒã¶ãŒã¬ã€ãããããšãSNSã§å®£äŒããæããå©çšè ããã®è³ªå察å¿ã楜ã«ãªããŸãã
ã¯ãŒã¯ãããŒ4ïŒå質æ¹å
æåŸã«ãã³ãŒãåè³ªãæ¹åããŠãããŸãã
analyzeã§å質åæ
/sc:analyze --focus quality
詳现ãªåæã¬ããŒããçæãããŸãã
ã¹ã³ã¢ãåºãã®ã§ã宿çã«ã¬ããŒããçæããŠå質æ¹åã«åœ¹ç«ãŠããã§ãã
⺠ð ã³ãŒãå質åæå®äº
Weather Appãããžã§ã¯ãã®å質åæãå®äºããŸããã
ð ç·åè©äŸ¡: 85/100ç¹ ââââ
åæçµæãdocs/QUALITY_REPORT.mdã«ä¿åããŸããã
äž»ãªè©äŸ¡ãã€ã³ã:
åªããŠããç¹ â
- Next.js 15.5 App Routerã«ããã¢ãã³ãªã¢ãŒããã¯ãã£
- TypeScript峿 Œã¢ãŒãã«ããåå®å
šæ§
- é©åãªã³ã³ããŒãã³ãèšèšãšè²¬ååé¢
- å®å
šãªæ¥æ¬èªããŒã«ã©ã€ãŒãŒã·ã§ã³
æ¹åãå¿
èŠãªç¹ â ïž
- ErrorBoundaryã³ã³ããŒãã³ããæªäœ¿çš
- ãã¹ãã«ãã¬ããžæž¬å®ã®èšå®äžå
- ãããã¯ãŒã¯ãšã©ãŒã®è©³çްåé¡ãäžè¶³
- ã¢ã¯ã»ã·ããªãã£å¯Ÿå¿ã®åŒ·åäœå°
è©³çŽ°ãªæ¹åææ¡ãšããŒããããã¯ã¬ããŒããã¡ã€ã«ãã確èªãã ããã
100ç¹æºç¹äž85ç¹ãšããã¹ã³ã¢ãåºãŸããã
ããã«ãããã³ãŒãå質ã客芳çã«ææ¡ã§ããŸãã
ç¹ã«æ¹åç¹ãæç¢ºã«ãªã£ãŠããã®ã§ãã©ãããæãã€ããã°è¯ãããåãããŸãã
improveã§å質æ¹å
åæçµæãå ã«ãæ¹åãå®è¡ããŸãã
/sc:improve --type quality "åºåã¯æ¥æ¬èªã§ãé¡ãããŸã"
èªåçã«æ¹åã宿œãããŸããã
⺠ð ã³ãŒãå質æ¹åå®äº
Weather Appã®ã³ãŒãå質ã倧å¹
ã«æ¹åããŸããã
ð 宿œããæ¹åå
容
1. ãšã©ãŒãã³ããªã³ã°ã®åŒ·å âš
- ã«ã¹ã¿ã ãšã©ãŒã¿ã€ã5çš®é¡ãå®è£
- APIãšã©ãŒã®è©³çްãªåé¡ãšã¡ãã»ãŒãžã®æ¥æ¬èªå
- ãããã°ãããããšã©ãŒã³ãŒãäœç³»
2. ã¢ã¯ã»ã·ããªãã£ã®å€§å¹
æ¹å â¿
- SearchBarã³ã³ããŒãã³ãã®WCAGæºæ
- ã¹ã¯ãªãŒã³ãªãŒããŒå®å
šå¯Ÿå¿
- ããŒããŒãããã²ãŒã·ã§ã³åŒ·å
3. ããŒãã£ã³ã°äœéšã®åäž â¡
- ã¹ã±ã«ãã³ã¹ã¯ãªãŒã³ã®å®è£
- èŠèŠçã«å¿«é©ãªããŒãã£ã³ã°ã¢ãã¡ãŒã·ã§ã³
4. ãã¹ãã€ã³ãã©ã®æ¹å ð
- ã«ãã¬ããžæž¬å®èšå®ã®è¿œå
- å質éŸå€ã®èšå®ïŒ80%ç®æšïŒ
ð å質ã¹ã³ã¢ã®åäž
85ç¹ â 92ç¹ ã«æ¹å
ð çæãã¡ã€ã«
- src/lib/errors.ts - ã«ã¹ã¿ã ãšã©ãŒã¯ã©ã¹
- src/components/WeatherSkeleton.tsx - ã¹ã±ã«ãã³ã¹ã¯ãªãŒã³
- docs/QUALITY_IMPROVEMENTS.md - æ¹åã¬ããŒã
â
åäœç¢ºèª
- ãªã³ããšã©ãŒ: ãªã
- åãšã©ãŒ: ãªã
- ãã«ã: æ£åžž
è©³çŽ°ãªæ¹åå
容㯠docs/QUALITY_IMPROVEMENTS.md ãã確èªãã ããã
7ç¹ãã¹ã³ã¢ãåäžããŸããã
éèŠãªã®ã¯ãåã«æ°å€ãäžãã£ãã ãã§ãªããå
·äœçã«ã©ã®ãããªæ¹åãè¡ãããããæç¢ºãªç¹ã§ãã
ãšã©ãŒãã³ããªã³ã°ãã¢ã¯ã»ã·ããªãã£ãããŒãã£ã³ã°äœéšãªã©ããŠãŒã¶ãŒäœéšã«çŽçµããæ¹åãå«ãŸããŠããŸãã
ãã¹ãã«ãã¬ããžåæ
/sc:test --coverage
ãã¹ãã®å®è¡ãšã«ãã¬ããžåæãè¡ãããŸãã
⺠ð ãã¹ãã«ãã¬ããžåæå®äº
çŸåšã®ã«ãã¬ããžç¶æ³
ç·åã«ãã¬ããž: 34.95% ïŒç®æš: 80%ïŒ
| ã¡ããªã¯ã¹ | çŸåšå€ | ç®æšå€ | å·®å |
|------------|--------|-----|-----------|
| Statements | 34.95% | 80% | -45.05% â |
| Branches | 29.52% | 70% | -40.48% â |
| Functions | 33.33% | 80% | -46.67% â |
| Lines | 35.64% | 80% | -44.36% â |
ãã¹ãå®è¡çµæ
- â
æå: 36ãã¹ã / 5ã¹ã€ãŒã
- â 倱æ: 3ãã¹ã / 3ã¹ã€ãŒã
- åèš: 39ãã¹ã / 8ã¹ã€ãŒã
ð çæãããã¬ããŒã
docs/TEST_COVERAGE_REPORT.md ã«è©³çްãªã«ãã¬ããžåæã¬ããŒããäœæããŸããã
ð äž»ãªåé¡ç¹
1. ã¡ã€ã³ããŒãžïŒpage.tsxïŒ: 0% - å®å
šã«æªãã¹ã
2. ãšã©ãŒåŠç: ErrorBoundary.tsx (0%), errors.ts (25.71%)
3. APIéä¿¡å±€: weather.ts (0%)
â
è¯å¥œãªéšå
- UIã³ã³ããŒãã³ã: CurrentWeather, ForecastList, WeatherCard ã¯100%ã«ãã¬ããž
- APIã«ãŒã: 70-100%ã®é«ã«ãã¬ããž
ð¯ æšå¥šãããæ¬¡ã®ã¹ããã
1. ç·æ¥å¯Ÿå¿ïŒ1-2æ¥ïŒ
- page.tsxã®çµ±åãã¹ã远å
- weather.tsã®ãŠããããã¹ã
- errors.tsã®ãã¹ã远å
2. æšæºéæïŒ3-5æ¥ïŒ
- ã«ãã¬ããžéŸå€ã段éçã«äžãã
- ErrorBoundaryã®ãã¹ãå®è£
- å
šäœã«ãã¬ããž80%ãç®æã
è©³çŽ°ãªæ¹åèšç»ã¯ã¬ããŒããã¡ã€ã«ãã確èªãã ããã
ã«ãã¬ããžãçŽ35%ãšäœãçµæã«ãªããŸããã
ã§ããããã§è¯ãã®ã§ãã
çŸå®çãªéçºã§ã¯ãæåãã100%ã®ã«ãã¬ããžãç®æãã®ã§ã¯ãªããæ®µéçã«æ¹åããŠãããã®ã§ãã
éèŠãªã®ã¯ãã©ããæªãã¹ããªã®ããã©ãããæãã€ããã¹ãããæç¢ºã«ãªã£ãŠããããšã§ãã
SuperClaudeã䜿ã£ãŠæããããš
ä»åã®éçºãéããŠãSuperClaudeã®åšåã宿ããŸããã
ç¹ã«å°è±¡çã ã£ãã®ã¯ä»¥äžã®ç¹ã§ãã
1. 段éçãªæèããã»ã¹
brainstorm â design â workflowãšããæµããèªç¶ã§ãã
人éã®ãšã³ãžãã¢ãèããæµããšåããªã®ã§ããã
èŠä»¶ãæç¢ºã«ããŠãèšèšããŠãèšç»ãç«ãŠãã
ãã®åœããåã®ããã»ã¹ããAIããµããŒãããŠãããŸãã
æ®æ®µãªããšãªãé ã®äžã§èããŠããããšãããã¡ããšèšèªåããŠãããã®ã§ãæèã®æãæŒãããªããªããŸãã
2. æ°å€ã«ããå¯èŠå
ã³ãŒãå質ã85ç¹ãã92ç¹ã«æ¹åãããã
ã«ãã¬ããžã34.95%ã§ç®æšãŸã§ããš45%ã
ãã®ãããªå ·äœçãªæ°å€ããããšã次ã®ã¢ã¯ã·ã§ã³ãæç¢ºã«ãªããŸãã
ããªããšãªãå質ãäžããããã§ã¯ãªããã92ç¹ã95ç¹ã«ããããã«ããšã©ãŒãã³ããªã³ã°ã匷åããããšããå ·äœçãªç®æšèšå®ãã§ããã®ã§ãã
3. å°éçãªèгç¹ã§ã®åæ
ã»ãã¥ãªãã£ãããã©ãŒãã³ã¹ãã¢ã¯ã»ã·ããªãã£ã
ããããã®èгç¹ã§å°éçãªåæãããŠãããŸãã
äžäººã§éçºããŠãããšèŠèœãšããã¡ãªéšåãããã¡ããšãã§ãã¯ããŠãããã®ã§ãã
ç¹ã«ã¢ã¯ã»ã·ããªãã£ã¯å¿ããã¡ãªèгç¹ã§ãããSuperClaudeãªãèªåçã«èæ ®ããŠãããŸãã
ãŸãšã
SuperClaudeã®æšå¥šã¯ãŒã¯ãããŒã䜿ã£ãŠå€©æ°äºå ±ã¢ããªãäœã£ãŠã¿ãŸããã
åã³ãã³ãã飿ºããŠåãããšã§ãéçºã®å
šå·¥çšãã¹ã ãŒãºã«é²ã¿ãŸãã
ç¹ã«analyzeãšimproveã®çµã¿åããã¯åŒ·åã§ããã
èŠä»¶å®çŸ©ããå質æ¹åãŸã§ãäžè²«ããæµãã§éçºã§ããã®ã§ãææ»ããå°ãªãå¹ççã§ãã
ããSuperClaudeã䜿ã£ãŠããæ¹ã¯ããã²ãã®ã¯ãŒã¯ãããŒã詊ããŠã¿ãŠãã ããã
éçºå¹çãåçã«åäžããããšã宿ã§ããã¯ãã§ãã
ä»å玹ä»ããã³ãã³ãã¯SuperClaudeã®äžéšã«éããŸããã
ä»ã«ã䟿å©ãªã³ãã³ãããããããããŸãã
詳ããç¥ãããæ¹ã¯ãååã®èšäºããã²ã芧ãã ããã
ãŸããåç»ã§ã詳ãã解説ããŠããŸãã®ã§ããããã°ãã§ãã¯ããŠã¿ãŠãã ããã
XïŒTwitterïŒã§ãéçºã®æ§åãçºä¿¡ããŠããŸãã

