Cline+Claudeã§ã®éçºã詊ããŠã¿ãææ³
2幎ãããåããCopilotãCursorã«ããã³ãŒãã£ã³ã°ãµããŒããåããéçºã¯å®éã«è¡ãªã£ãŠããã®ã ãã©ãå é±ãããããã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã«ããéçºã«ãæ¬è °ãå ¥ããŠèª¿æ»ãå§ããã以äžã¯ãã®éã«éã«èª¿ã¹ãæ å ±ãŸãšãã
ããã§ãã®åæ¥ããããŸã§æ¯æ¥ãäž»ã«Cline+Claude(ãã®ä»versionãæŽŸçç³»ã¯ã©ã€ã¢ã³ããå«ã)ã䜿ã£ãŠè²ã ãšã³ãŒãçæããããããŠå®éšããã®ã§ãã®ææ³ãæžãã
詊ããŠã¿ãããš
æåã¯ç°¡åãªpromptãå ¥åããŠãã³åºãã§çæãããToDoãªã¹ããšã管çç»é¢ã¿ãããªãã®ãäœãããŠã¯ã€ã¯ã€ããŠããã ãã©äœåããã£ããæµç³ã«é£œããŠããã®ã§ãããå°ãèŠæš¡ã®å€§ããªã¿ã¹ã¯ã«åãæããããããšã«ããã
æ¢åãããžã§ã¯ããžã®ãã¹ã远å
ãŸãæåã«ãå人éçºããŠãã¢ã³ãã³nowã®TAèµ°è åãã®webãµã€ããçŸç¶ãã¹ããŒãã ã£ãã®ã§ãããã«å¯ŸããŠClaude 3.5 sonnetãšClineã䜿ã£ãŠãã¹ãã«ãã¬ããžãã©ããŸã§äžãããããæ€èšŒããŠã¿ãã
æè¡ã¹ã¿ãã¯ãšããŠã¯Hono/TypeScript/jsx/Bun/SpreadSheetã§ãSSGãããã«ãçµæãCloudflare Pagesã«ãããã€ãããããªãã®ãèŠæš¡çã«ã¯å€§äœ20ã³ã³ããŒãã³ãã«700è¡ååŸã®ããžãã¹ããžãã¯ã®ãã¡ã€ã«ãããæãã
ãŸãã¯.clinerulesãäœæãããã¹ãç°å¢ã®æŽåããå§ããã.clinerulesã¯äžèšã
.clinerules
ããªãã¯é«åºŠãªåé¡è§£æ±ºèœåãæã€AIã¢ã·ã¹ã¿ã³ãã§ãã以äžã®æç€ºã«åŸã£ãŠãå¹ççãã€æ£ç¢ºã«ã¿ã¹ã¯ãéè¡ããŠãã ããã
ãŸãããŠãŒã¶ãŒããåãåã£ãæç€ºã確èªããŸãïŒ
<æç€º>
{{instructions}}
</æç€º>
ãã®æç€ºãå
ã«ã以äžã®ããã»ã¹ã«åŸã£ãŠäœæ¥ãé²ããŠãã ããïŒ
---
1. æç€ºã®åæãšèšç»
<ã¿ã¹ã¯åæ>
- äž»èŠãªã¿ã¹ã¯ãç°¡æœã«èŠçŽããŠãã ããã
- èšèŒãããæè¡ã¹ã¿ãã¯ã確èªãããã®å¶çŽå
ã§ã®å®è£
æ¹æ³ãæ€èšããŠãã ããã
- éèŠãªèŠä»¶ãšå¶çŽãç¹å®ããŠãã ããã
- æœåšçãªèª²é¡ããªã¹ãã¢ããããŠãã ããã
- ã¿ã¹ã¯å®è¡ã®ããã®å
·äœçãªã¹ãããã詳现ã«åæããŠãã ããã
- ãããã®ã¹ãããã®æé©ãªå®è¡é åºã決å®ããŠãã ããã
### éè€å®è£
ã®é²æ¢
å®è£
åã«ä»¥äžã®ç¢ºèªãè¡ã£ãŠãã ããïŒ
- src/components/ å
ã®æ¢åã³ã³ããŒãã³ãã®åå©çšå¯èœæ§
- src/lib/ å
ã®ãŠãŒãã£ãªãã£é¢æ°ã®æŽ»çš
- å
±éã®ã¹ã¿ã€ã«å®çŸ©ïŒsrc/styles/global.tsïŒã®å©çš
- å€èšèªå¯Ÿå¿ã³ã³ããŒãã³ãã®çµ±äžçãªå®è£
æ¹æ³
ãã®ã»ã¯ã·ã§ã³ã¯ãåŸç¶ã®ããã»ã¹å
šäœãå°ããã®ãªã®ã§ãæéããããŠã§ããååã«è©³çްãã€å
æ¬çãªåæãè¡ã£ãŠãã ããã
</ã¿ã¹ã¯åæ>
---
2. ã¿ã¹ã¯ã®å®è¡
- ç¹å®ããã¹ããããäžã€ãã€å®è¡ããŠãã ããã
- åã¹ãããã®å®äºåŸãç°¡æœã«é²æãå ±åããŠãã ããã
- å®è£
æã¯ä»¥äžã®ç¹ã«æ³šæããŠãã ããïŒ
- src/components/ å
ã®ã³ã³ããŒãã³ãæ§é ã®äžè²«æ§ç¶æ
- TypeScriptã®åå®çŸ©ã®å³å¯ãªç®¡ç
- ã©ã³ãã³ã°ããžãã¯ã®æŽåæ§ç¢ºä¿
- å€èšèªå¯Ÿå¿ã®äžè²«æ§ç¶æ
---
3. å質管çãšåé¡å¯Ÿå¿
- åã¿ã¹ã¯ã®å®è¡çµæãè¿
éã«æ€èšŒããŠãã ããã
- ãšã©ãŒãäžæŽåãçºçããå Žåã¯ã以äžã®ããã»ã¹ã§å¯Ÿå¿ããŠãã ããïŒ
a. TypeScriptã³ã³ãã€ã«ãšã©ãŒã®ç¢ºèªãšä¿®æ£
b. Viteãã«ããšã©ãŒã®è§£æ±º
c. ã³ã³ããŒãã³ãã®ã¬ã³ããªã³ã°æ€èšŒ
d. ã©ã³ãã³ã°èšç®ããžãã¯ã®æ£ç¢ºæ§ç¢ºèª
- æ€èšŒçµæã¯ä»¥äžã®åœ¢åŒã§èšé²ããŠãã ããïŒ
a. æ€èšŒé
ç®ãšæåŸ
ãããçµæ
b. å®éã®çµæãšå·®ç°
c. å¿
èŠãªå¯Ÿå¿çïŒè©²åœããå ŽåïŒ
---
4. æçµç¢ºèª
- ãã¹ãŠã®ã¿ã¹ã¯ãå®äºããããææç©å
šäœãè©äŸ¡ããŠãã ããã
- åœåã®æç€ºå
容ãšã®æŽåæ§ã確èªããå¿
èŠã«å¿ããŠèª¿æŽãè¡ã£ãŠãã ããã
- å®è£
ããæ©èœã«éè€ããªãããšãæçµç¢ºèªããŠãã ããã
- å€èšèªå¯Ÿå¿ã®å®å
šæ§ã確èªããŠãã ããã
---
5. çµæå ±å
以äžã®ãã©ãŒãããã§æçµçãªçµæãå ±åããŠãã ããïŒ
```markdown
# å®è¡çµæå ±å
## æŠèŠ
[å
šäœã®èŠçŽãç°¡æœã«èšè¿°]
## å®è¡ã¹ããã
1. [ã¹ããã1ã®èª¬æãšçµæ]
2. [ã¹ããã2ã®èª¬æãšçµæ]
...
## æçµææç©
[ææç©ã®è©³çްãã該åœããå Žåã¯ãªã³ã¯ãªã©]
## 課é¡å¯Ÿå¿ïŒè©²åœããå ŽåïŒ
- çºçããåé¡ãšå¯Ÿå¿å
容
- ä»åŸã®æ³šæç¹
## 泚æç¹ã»æ¹åææ¡
- [æ°ã¥ããç¹ãæ¹åææ¡ãããã°èšè¿°]
éèŠãªæ³šæäºé
- å¿ ãæ¥æ¬èªã§åçããŠãã ããã
- Honoã®ããã¥ã¡ã³ãã¯hono_docs.mdã«èšèŒããŠããŸã
- node_modulesã®å 容ã¯èªã¿èŸŒãŸãã«ç¡èŠããããš
- .gitignoreã«å«ãŸãããã¡ã€ã«ã®å 容ã¯èªã¿èŸŒãŸãã«ç¡èŠããããš
- äžæç¹ãããå Žåã¯ãäœæ¥éå§åã«å¿ ã確èªãåã£ãŠãã ããã
- éèŠãªå€æãå¿ èŠãªå Žåã¯ããã®éœåºŠå ±åããæ¿èªãåŸãŠãã ããã
- äºæãã¬åé¡ãçºçããå Žåã¯ãå³åº§ã«å ±åãã察å¿çãææ¡ããŠãã ããã
- äžå®ã®ã¿ã¹ã¯ãå®äºããå Žåã¯gitã³ããããè¡ã£ãŠãã ããã
- .envã¯èªãŸãªãããš
- ç§å¿æ å ±ã¯gitã«ã³ãããããªãããš
- ããã³ãããå¿ ãå«ããããš
- å®è£ ããå 容ããªã¹ã圢åŒã§æžãèšãããš
- æç€ºçã«æç€ºãããŠããªã倿Žã¯è¡ããªãã§ãã ããã
- ç¹ã«ã©ã³ãã³ã°ããžãã¯ã®å€æŽã¯æ éã«è¡ããå¿ ãæ¿èªãåŸãŠãã ããã
- å€èšèªå¯Ÿå¿ã®äžè²«æ§ãç¶æããŠãã ããã
æè¡ã¹ã¿ãã¯
ã³ã¢æè¡
- TypeScript
- Vite
- Hono
- JSX
ããã³ããšã³ã
- React Components
- Global Styles
éçºããŒã«
- Biome (ã³ãŒãæŽåœ¢)
- npm
- bun
ãããžã§ã¯ãæ§æ
以äžã®ãã£ã¬ã¯ããªæ§é ã«åŸã£ãŠå®è£ ãè¡ã£ãŠãã ããïŒ
mhn-leaderboard/
âââ src/
â âââ global.d.ts # ã°ããŒãã«åå®çŸ©
â âââ index.tsx # ãšã³ããªãŒãã€ã³ã
â âââ components/ # Reactã³ã³ããŒãã³ã
â â âââ Archives.tsx # ã¢ãŒã«ã€ã衚瀺
â â âââ Changelogs.tsx # 倿Žå±¥æŽ
â â âââ Guideline.tsx # ã¬ã€ãã©ã€ã³ïŒæ¥æ¬èªïŒ
â â âââ GuidelineEn.tsx # ã¬ã€ãã©ã€ã³ïŒè±èªïŒ
â â âââ Header.tsx # ããããŒ
â â âââ History.tsx # å±¥æŽè¡šç€º
â â âââ Home.tsx # ããŒã ç»é¢
â â âââ Layout.tsx # ã¬ã€ã¢ãŠã
â â âââ LinkLists.tsx # ãªã³ã¯ãªã¹ã
â â âââ LinkMonsterLists.tsx # ã¢ã³ã¹ã¿ãŒãªã³ã¯ãªã¹ã
â â âââ MonsterTable.tsx # ã¢ã³ã¹ã¿ãŒäžèЧ
â â âââ RankerTable.tsx # ã©ã³ãã³ã°è¡šç€º
â â âââ RankerTitle.tsx # ã©ã³ãã³ã°ã¿ã€ãã«
â â âââ SupportUs.tsx # ãµããŒãæ
å ±ïŒæ¥æ¬èªïŒ
â â âââ SupportUsEn.tsx # ãµããŒãæ
å ±ïŒè±èªïŒ
â â âââ TableTitle.tsx # ããŒãã«ã¿ã€ãã«
â â âââ UpdateHistory.tsx # æŽæ°å±¥æŽ
â â âââ UpdateInfo.tsx # æŽæ°æ
å ±
â âââ lib/ # ãŠãŒãã£ãªãã£
â â âââ constans.ts # 宿°å®çŸ©
â â âââ ranking.ts # ã©ã³ãã³ã°ããžãã¯
â â âââ utils.ts # å
±é颿°
â âââ styles/ # ã¹ã¿ã€ã«å®çŸ©
â âââ global.ts # ã°ããŒãã«ã¹ã¿ã€ã«
é 眮ã«ãŒã«
- ã°ããŒãã«åå®çŸ© â
src/global.d.ts - ãšã³ããªãŒãã€ã³ã â
src/index.tsx - Reactã³ã³ããŒãã³ã â
src/components/ - ãŠãŒãã£ãªãã£é¢æ° â
src/lib/utils.ts - 宿°å®çŸ© â
src/lib/constans.ts - ã©ã³ãã³ã°ããžã㯠â
src/lib/ranking.ts - ã¹ã¿ã€ã«å®çŸ© â
src/styles/global.ts
ãã¹ãèŠå
ãã¹ããã¡ã€ã«ã®é 眮
- ã³ã³ããŒãã³ãã®ãã¹ã â
src/components/__tests__/ - ãŠãŒãã£ãªãã£ã®ãã¹ã â
src/lib/__tests__/
ãã¹ãã®å®è£ èŠå
- ãã¹ããã¡ã€ã«ã®åœå
- ã³ã³ããŒãã³ã:
[ComponentName].test.tsx - ãŠãŒãã£ãªãã£:
[utilityName].test.ts
- ãã¹ãã®æ§é
- describeãããã¯ã§ãã¹ããã°ã«ãŒãå
- itãããã¯ã§åå¥ã®ãã¹ãã±ãŒã¹ãèšè¿°
- æåŸ ãããçµæãæç¢ºã«ã³ã¡ã³ãã§èšè¿°
- ã¢ãã¯åã®èŠå
- å€éšAPIãããŒã¿ããŒã¹ã¢ã¯ã»ã¹ã¯å¿ ãã¢ãã¯å
- ã¢ãã¯ããŒã¿ã¯çŸå®çãªããŒã¿æ§é ãåæ
- beforeEach/afterEachã§ã¢ãã¯ã®ã»ããã¢ãããšã¯ãªãŒã³ã¢ãããè¡ã
- vitest ã® vi.spyOn ã䜿çšããŠã¢ãã¯é¢æ°ãäœæ
- ãã¹ãã®å®è¡ãšæ€èšŒ
- åãã¹ããã¡ã€ã«äœæåŸã¯å¿ ããã¹ããå®è¡
- ãã¹ãŠã®ãã¹ããæåããããšã確èª
- TypeScriptã®ãšã©ãŒããªãããšã確èª
- ãã¹ãã«ãã¬ããžã®ç¢ºèª
- ã³ã³ããŒãã³ããã¹ãã®æ³šæç¹
- Honoã®htmlãã«ããŒã䜿çšããŠã¬ã³ããªã³ã°
- ã¬ã³ããªã³ã°çµæãæååãšããŠååŸãæ€èšŒ
- ã¯ã©ã¹åãããã¹ãã屿§å€ãªã©ã®ååšã確èª
- å€èšèªå¯Ÿå¿ã®ããã¹ããæ£ãã衚瀺ãããããšã確èª
- ãŠãŒãã£ãªãã£ãã¹ãã®æ³šæç¹
- 颿°ã®å ¥åºåãå³å¯ã«ãã¹ã
- ãšããžã±ãŒã¹ãèæ ®ãããã¹ãã±ãŒã¹ãäœæ
- æ¥ä»ãæå»ã«äŸåãããã¹ãã¯åºå®å€ã䜿çš
- ãã¹ãã¡ã³ããã³ã¹
- ã³ã³ããŒãã³ãããŠãŒãã£ãªãã£ã®å€æŽæã¯å¯Ÿå¿ãããã¹ããæŽæ°
- ãã¹ãã倱æããå Žåã¯åå ãç¹å®ãä¿®æ£
- ãã¹ãã³ãŒãã®éè€ãé¿ããå¿ èŠã«å¿ããŠãã«ããŒé¢æ°ãäœæ
ã³ãã³ãã©ã€ã³ã®å®è¡çµæãClineãèªã¿åããªããšããåé¡ã«ããã£ãããããã£ãŠãåææ®µéã®ãã¹ãç°å¢ã®ã»ããã¢ãããšãµã³ãã«ãã¹ãã®äœæã ãã§$1.5çšåºŠããã£ããæ£çŽä»æ¯ãè¿ããšãã®åé¡ã解決ããã®ãäžçªå€§å€ã ã£ããLLMã«èããŠãæããŠæ¥ããªãããã
ãã®æåã®ã»ããã¢ããããçµããã°ããšã¯ãã¹ããæžãå§ããããã ãã
srcãã£ã¬ã¯ããªé
äžã®componentsãšlibã®äžã«ãããã¡ã€ã«ã®ãã¹ããæžããŠãã ãããsrc/components/__tests__ãã£ã¬ã¯ããªã«ã¯ãã§ã«ããã€ãã®ãã¹ããããã®ã§åèã«ããŠãã ããããã¹ããæžãããå¿
ãbun testã§ãã¹ããå®è¡ãå
šãŠæåãããŸã§æ¬¡ã«é²ãŸãªãã§ãã ãããbun testãå®è¡ãããšãã¯å¯Ÿè±¡ã®ãã¹ããã¡ã€ã«ã®ã¿ãæå®ããŠå®è¡ããŠãã ããã
äžèšã®ãããªpromptãæžããŠãAuto-approveïŒRead/Write/CommandïŒã«ããç¶æ ã§å®è¡ãããã°ããšã¯ãã¹ããåæã«æžãããŠãã£ããæžãçµããã®ãåŸ ã€éã¯YouTubeãèŠããã¢ã³ãã³ããããããŠãã
éäžãã³ã³ããã¹ããŠã£ã³ããŠããã£ã±ãã«ãªã£ããæ°ããã»ãã·ã§ã³ãç«ã¡äžããŠéäžããåéããŠãããããšããã®ãäœåãç¹°ãè¿ãå¿
èŠã¯ãã£ãããã®å Žåã¯ã©ããŸã§ãã¹ããå®äºæžã¿ãã確èªããŠãå
ã»ã©ã®promptã«å ããŠooo.tsxã®ãã¹ããéäžãŸã§æžãããŠããŸãããã®ãã¡ã€ã«ãããã¹ããæžãçŽããŠãã ãããã¿ãããªæãã§æç€ºãåºããŠåå®è¡ããããšããã®ãäœåºŠãçºçããŠããããã¯çµæ§é¢åã ã£ãèšæ¶...ã
ãŸãçµæçã«ã¯ã»ãšãã©ã®ãã¡ã€ã«ã§ãã¹ãã«ãã¬ããžïŒç¹ã«Funcs)ã¯100%ã«ã§ãã(ã§ãBranchãšãPathã¯ãã£ãšå°ãªãã)ã

äžéšã®ãã¡ã€ã«ã¯èšèšçã«åŸ®åŠã ã£ãããbun test --coverageã§coverage察象ã®é€å€ãã§ããªãåé¡ããã£ããããŠäœãæ°å€ãåºãŠããã©ãå®è³ªçã«ã¯ããªãé«ãã«ãã¬ããžãéæã§ããã
倿Žå¯Ÿè±¡ã¯31ãã¡ã€ã«ã§ã远å åé€ã+14505-10è¡ãç·é¡ã§$15çšåºŠããã£ããã©ãããã ãã®éã®ãã¹ãã³ãŒããèªåã§æžãããšãèãããšãããªãã³ã¹ããè¯ããšæãã

瀟å åãããŒã«ã®éçº
次ã«ãRoo CodeïŒä»¥åã¯RooClineãšåŒã°ããŠããã€ïŒã䜿ã£ãŠããã¹ããªã³ãæ©ãããã«ã¬ã³ããŒããšãã瀟å åãããŒã«ãäœã£ãŠã¿ãã
ããã¯ãŒãããèŠä»¶å®çŸ©ãããŠå®éã«æã¿éãã®ããŒã«ãäœãããŠã¿ãå®éšãæåã®å®éšã§ãããªããã«ãwebã¢ããªãäœãããšãããšã³ã³ããã¹ããŠã£ã³ããŠããªãŒããŒããŠé¢åãããšããäºæããããæ¯èŒçã·ã³ãã«ã§ãã€æç¢ºã«ããŒãºã®ãããã®ããšããããšã§ããã«ãããåã ããéã«æ¬²ããããã¿ãããªè©±ãããŒã ã§ããŠããã¹ããªã³ãæéãèŠèŠçã«è¡šç€ºãããã©ãã¡ã®WebããŒãžã
ä»åã¯mizchiããã®ailabã«ãã.clinerulesã詊ããŠã¿ãããšæã£ãŠããããæŽ»çšãã(çµæçã«ã¯DenoãäžèŠãªãµã€ãã ãããããŸãæ©æµã¯åããããªãã£ãæ...)ã
æåã®ããã³ããã§ã¯ãèæ¯ã»ããããããšã»æ©èœãªã©ã®èŠä»¶ã詳现ã«èšè¿°ããã©ã®ãããªèšèšã§ã©ã®ãããªã³ãŒããæžãã¹ãããAIã«æ€èšãããããããŠããã®èšèšèšç»ãREADME.mdã«ãŸãšããŠããã£ãã䜿ã£ãpromptã¯ä»¥äžã
prompt.md
以äžã®èŠä»¶ä»æ§ãåèã«ã©ã®ãããªèšèšã§ã©ã®ãããªã³ãŒããæžãããšããŠããã®ãæ€èšããªããããããŠãã®èšèšèšç»ãREADME.mdã«ãŸãšããªããã
---
# èæ¯
ç§ã®äŒç€Ÿã§ã¯agileéçºãåãå
¥ããŠããŸããéçºãããªãªãŒã¹ãŸã§ã«å€§äœ2é±éããããŸããçŸåšæ±ããŠãã課é¡ãšããŠã¯1ã¹ããªã³ãã®äžã§ä»ã¯äœãããŠããæéãªã®ãïŒãšããã®ãææ¡ãã¥ãããšããããšã§ãã
äŸãã°çŸåšæã
ã¯ãéçºã2025/01/14ããå§ãŸã£ããšãããšç¿é±ã®æææ¥(2025/01/20)ã«ã³ãŒãããªãŒãºãè¡ããããã®ç¿æ¥ã®ç«ææ¥(2025/01/21)ãã6æ¥éã®QA確èªãéå§ãããæ¬¡ã®ç«ææ¥(2025/01/28)ã«ãªãªãŒã¹ãããŸãããŸãšãããš2025/01/14ãã2025/01/20ãŸã§ãéçºæéã2025/01/21ãã2025/01/27ãŸã§ãQAç¢ºèªæéã2025/01/28ããªãªãŒã¹æ¥ãšãã圢ã§ãããããŠåæã«2025/01/28ãããŸã次ã®ã¹ããªã³ãã®éçºæéãå§ãŸããŸãã
# ããããããš
éçºæéãšQAæéãšãªãªãŒã¹æ¥ã«ã€ããŠãããããã®ãšã³ãžãã¢ãä»ã¯ã¹ããªã³ãã«ãããäœã®æéãªã®ãïŒæ¬¡ã®ãªãªãŒã¹æ¥ã¯ãã€ãªã®ãïŒãšãã£ãããšãäžç®ã§ããããããªwebããŒãžãäœæãããã§ãã
# ãµãŒãã¹å
ã¹ããªã³ãæ©ãããã«ã¬ã³ããŒ
# æ©èœ
- éçºæé/QAæé/ãªãªãŒã¹æ¥ãã¯ãšãªãã©ã¡ãŒã¿ãŒãšããŠèšå®ã§ãã
- èšå®ãããåæéã«å¿ããŠã«ã¬ã³ããŒã«æéãè²åããããŠäžç®ã§ãããããã«ãªã£ãŠãã
- 仿¥ã«ã€ããŠããŸãå¥ã®è²ã§äžç®ã§ãããããã«ãªã£ãŠãã
- ã¹ããªã³ãã¯é·ãå Žåãããã®ã§æãè·šãå¯èœæ§ããããŸã
- ã¬ã¹ãã³ã·ããã¶ã€ã³ã«ãã
# æè¡çãªå¶çŽ
- Deno/TypeScriptã䜿çšããããš
ãããŠããã§äœæããREADME.mdãå ã«ã³ãŒããçæããŠããã£ãã
é©ããã®ã¯ãååã®çæã§ã»ãŒããããUIãšæ©èœã宿ããããšã

ãããŸã§ã®äœæ¥ã«ããã£ãè²»çšã¯ããã$0.8çšåºŠã§ã30å以å ã«å®äºãåæå®è£ ãŸã§ã«ããã£ãç·è²»çšã$1.5çšåºŠã ã£ã(äžèšã¹ã¯ã·ã§ã¯è²ã 調æŽåŸã®æçµçãªã®ã§åæå®è£ ããå€å°ã¯ãªãã)ã
å²ãšéãªèŠä»¶å®çŸ©ããå§ãããã©ãååå®è£ ã§åºãŠãããã®ãUIãšããŠã¯ãŸãã«æ¬²ããã£ããã®ãã®ãŸãŸã ã£ãããäœéšãšããŠã¯éåžžã«è¯ãã£ãããããŸãè³å ã«ãã仿§ãšããã衚çŸããUIãããžã¥ã¢ã«åã§ããªããããäžæ Œå¥œã§ãèªç¶èšèªãåºã«ãã£ãããšããUIã®å©ãå°ãçæããŠãããã®ã¯ããªãå¬ããã
ãã ã課é¡ããã£ãŠããã®åŸã®ããžãã¯ã®è©³çްãè©°ããŠèããŠããæ®µéã§è²ã ãšä»æ§å€æŽãå¿ èŠã ãšããããå³åŸå·ŠåŸããã¯ãœPdMã ãŒããããŸããŠããŸã£ãçµæã宿ãŸã§ç¡é§ã«åãéããããšã«ãªã£ãŠããŸã£ã(人éã ã£ããæ¿ã®ã¬ãããŠãã¯ã)ããã®åºŠã«é©åºŠã«ã»ãã·ã§ã³ãæ°ããããããREADMEã®èŠä»¶å®çŸ©ã现ããæžãçŽãããããäœæ¥ãé¢åã ã£ãã
æçµçã«ã¯ãããªæãã®READMEãã§ããŠããã
ãã®å®éšã§æ°ã¥ããã®ã¯ãæ©èœä»æ§ã ãã§ãªãããã®æ©èœä»æ§ãæºããå Žåã®å®éã®è¡šç€ºUIãããŒã¿ã®ç¶æ ãå ·äœäŸãšããŠREADMEã«èšèŒãããšäžæãããããããšããããšãæœè±¡çãªèŠä»¶ã ãã§ãªããå ·äœäŸ(ä»åã ãšREADMEã®ãæ©èœèŠä»¶ãæºãããå Žåã®è¡šç€ºã®å ·äœäŸããšãããã€ç)ãããããšã§AIã®çè§£ãæ·±ãŸãã£ãœãããŸãã人éã®éçºãšåæ§ã«ãéãªèŠä»¶å®çŸ©ããã®ä»æ§å€æŽã¯AIããã°ã©ãã³ã°ã§ãé¿ããæ¹ãè¯ããšããããšãåŠãã (ããã¯ãã)ã
詊è¡é¯èª€
ã³ã³ããã¹ããŠã£ã³ããŠã®å¶éãšã®æŠã
ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããåŒã£ãŠããŠæãé »ç¹ã«çŽé¢ãã課é¡ã¯ãã³ã³ããã¹ããŠã£ã³ããŠã®å¶éãæ¢åãããžã§ã¯ãã®ã³ãŒãã¯ã©ãããŠãããŒã¯ã³æ¶è²»ãæ©ãã®ã§ããã¡ãã¡ã»ãã·ã§ã³ãæ°ããããã®ãé¢åã ã£ãã5000å tokensã®ã³ã³ããã¹ããŠã£ã³ããŠã欲ããããšããã®ãæ£çŽãªãšããã
ç¹ã«å
·äœçã«èŠåŽããã®ã¯ããã¹ãå®è¡çµæã®diffããã«ãããŠClaude 3.5 Sonnetã®input promptã«èŒããªãåé¡ãäŸãã°ãbun test --coverageã®åºåã倧ããããŠãprompt is too long: 203969 tokens > 200000 maximumããšãããšã©ãŒãåºãããšããã£ãã
ãã®åé¡ã«å¯ŸåŠãããããGemini 2.0 FlashïŒinputã§çŽ1m tokensïŒã詊ããŠã¿ãŠã確ãã«ããã³ããã«ä¹ãã¯ãããã ãã©ãã¹ãã®ã¢ãã¯ããŒã¿ãšãã®çæç²ŸåºŠãäœãããŠäœ¿ããªãã£ãã
çµå±ããã¹ãã®åºåããã«ãããå Žåã¯ã³ãã³ãå®è¡çµæãinputã«é£ãããããªãã®ã§ããã®éšåã ãèªåã§æçŽããããããŠãã
AIã®ç¥èã®éçãšå¯Ÿå¿ç
Honoã§äœã£ãŠããå人ãµãŒãã¹ã®ãã¹ãç°å¢ãCline+Claude 3.5 Sonnetã§ãŒãããæŽåããããšè²ã å®éšããŠãæãAIãããããHono+jsxã§ã®ãã¹ãã®ç¥èãããŸãæã£ãŠããªãããšã«æ°ã¥ãã(æ®éã®React Appã®ãã¹ãææ³ãããããšããŠããããããŠã)ã
ããã«ã€ããŠã¯æåã¯ããŸããããªãã£ããã©ãHonoã«ã¯LLMçšã®ãã©ã€ãããã¥ã¡ã³ãïŒhono.dev/llms-full.txtïŒãããããšãçºèŠããããã«ãŒããã£ã¬ã¯ããªã«ããã¹ããšããŠçœ®ããŠããèªãŸãããšãããæ³å®éãã®ã»ããã¢ãããšãµã³ãã«ãã¹ããæžãããããšãã§ããããã«ãªã£ããLLM.txtã¯ãã®ããã«äŸ¿å©ã§ãããã®ã®ãDocsã®ããã¹ãã£ãŠtokenãé£ãããããããMCPãæäŸããŠãããŠRAGçã«äœ¿ã£ãŠãããæ¹ãæ¥œãªæ°ãããããLLM.txtã¯éæž¡æã®ãœãªã¥ãŒã·ã§ã³ããã
ãã¹ãå®è£ ã®é£ãã
ãã¹ãå®è£ ã§ç¹ã«èŠåŽããã®ã¯ãã¢ãã¯ããŒã¿ã®çæãè€éãªUIã³ã³ããŒãã³ãã®ãã¹ãã§ã¯ãã¬ã³ããªã³ã°ã«å¿ èŠãšãªãããŒã¿ãè€éã§ã³ãŒãããèªã¿åããªãã±ãŒã¹ããã£ãã
äŸãã°ãã¢ã³ãã³nowã®TA衚ã®ã³ã³ããŒãã³ãã§ããMonsterTable.tsxãšãããã€ã®ãã¹ãã§ã¯ãAIãã¢ãã¯ããŒã¿ãé©åã«çæã§ãããæçµçã«èªåã§æçŽãããããšã¯ãåæã«ååšããªãåã®åºæåè©ãäœãäžããããšããåé¡ãAIãå®éã«ã¯ååšããªãã¢ãžã¥ãŒã«ã颿°ãæ³å®ããŠãã¹ããæžããŠããŸãããšã¯ã¡ããã¡ããããããããèªçã®åå ã«ãªãããšããã°ãã°ãã£ãã
å人çã«æ°ã¥ããããš
.clinerulesèšå®ã®éèŠæ§
ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããšã®éçºã§ã¯ã.clinerules(ãããã¯.cursor/rulesãªã©)ã®èšå®ãéèŠãããã§å€§ãŸããªã³ãŒãã£ã³ã°ã¯ã©ã€ã¢ã³ãã®è¡åæ§åŒãå®ããŠãããšã»ãã·ã§ã³äžã«æå³ããè¡åãããŠããããããªãã
èªåã¯kinopeee/cursorrulesããè¯ããããªruleãã¡ã€ã«ãåèã«ããŠèªåã®ãããžã§ã¯ãçšã®rulesãäœæããŠããããšãããªãŒããŒãAIã«æåã«åºããŠãã«ã¹ã¿ã ã«ãŒã«ã®ãã¡ã€ã«ãäœããšãããããããŠãã
TDDã®é£ãã
瀟å ããŒã«ã®éçºã§ã¯ãæåã¯TDDã§å®è£ ãé²ããããšããç®è«èŠããã£ããã©ãAIã¯ãšã«ããäžæ°ã«çæãããããããå²ã蟌ãã§ãã€ã¯ãã¿ã¹ã¯ãå®è¡ãããã®ãé¢åã ã£ãã
èªåã§å®è£ æ¹éã®å€§æ ã¯ã§ããŠããŠãã现éšã«ããã£ãŠå®è£ èšç»ãç«ã£ãŠããªãå Žåã¯ãTDDãã©ãé²ãããã人éãèããæéãããã«ããã¯ã«ãªãããããã®ãããããçšåºŠã®å€§ããªåäœã§æ©èœãå®è£ ããããã®æ©èœã«å¯ŸããŠãã¹ããå®è£ ãããã¿ãããªããæ¹ã®æ¹ãäžæãããæããããã
Auto-approveã®äœ¿ãã©ãã
åææ®µéã®èšå®ãã¡ã€ã«ããããå·¥çšãªã©ã¯ãAuto-approveã«ããªãã§ç¢ºèªããªããé²ããæ¹ãè¯ããããè»éã«ä¹ããŸã§ã¯æ éã«é²ããæ¹ããæŽèµ°ãé²ãã§ææ»ããæžãããã
ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã¯æ·ãããã¬ãŒã«ã®äžãèµ°ãã®ã¯ãã¡ããã¡ãåŸæã ãããã¡ããæå³ããéãã«é²ãã§ãããããã®é«ééè·¯ãæåã¯æŽåããŠãããããã«ã³ããæé€ããããããã«äººéãããçšåºŠæé€ããã¿ãããªãã€ãšäŒŒãŠãã
äžæ¹ããã§ã«ãããã¹ããåèã«å¥ã®ãã¹ããå®è£ ãããã®ãããªå®åçãªäœæ¥ããã§ã«åºæ¥ãå Žé¢ã§ã¯ãæåããAuto-approveã«ããŠèªåã§é²ããŠããããšè¯ãããã
ãã£ãŒãããã¯ã®ããèšèªãããŒã«ãè¯ã
å®è¡åã®ãã«ãæãã³ãŒãã£ã³ã°æç¹ã§ã³ã³ãã€ã«ãšã©ãŒãwarningãåºããŠãããèšèªãããŒã«ã¯AIã«çŽæ¥ãã£ãŒãããã¯ãäžãããããããã¯AIãšã¢ããªã±ãŒã·ã§ã³ãã³ãã¥ãã±ãŒã·ã§ã³ãããããšããããšã ãlinterãteståšãã®ãšã³ã·ã¹ãã ãæŽã£ãŠãããããã®èŸºã®ãã£ãŒãããã¯ãåŸæãªèšèªã¯ä»åŸã®ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã§ã®éçºã§ç©æ¥µçã«çšããããŠããã®ã ãããªãšæããã
è²»çšãšæé
åãããžã§ã¯ãã§ããã£ãè²»çšããŸãšãããšïŒ
- ãã¹ã远å ïŒç·é¡$15çšåºŠ
- 瀟å åãããŒã«éçºïŒåæå®è£ $1.5ã远å ä¿®æ£$3~4çšåºŠ
ç¹ã«ãã¹ã远å ã§ã¯ã14,000è¡ä»¥äžã®ãã¹ãã³ãŒããã»ãŒèªåã§ã³ãŒããæžããã«çæã§ããã®ã¯å€§ããªåç©«ããã®éYouTubeãèŠããã¢ã³ãã³ããããã§ããããšãèãããšãæéã®ç¯çŽãšããç¹ã§ãéåžžã«å¹æçã ã£ãã
瀟å åãããŒã«ã®æ¹ã«é¢ããŠãããã£ã𿬲ãããšæã£ãŠããèªåã§ãå®è£ ã§ãããã©ããªããé¢åã ãªãã¿ãããªéçºã¿ã¹ã¯ã«ã€ããŠãæ°åå~ããããæ°æéã§ãããã€ãŸã§ããããããªã®ã§äžã ã³ã¹ãè¯ããšæãã
ãããã«
ClaudeãšClineãäž»ã«äœ¿ã£ãã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã®å®éšãéããŠããã®å¯èœæ§ãšèª²é¡ãäœæããããšãã§ãããç¹ã«æ¢åã®ãœãŒã¹ã³ãŒãã«å¯ŸããŠã©ã®ããã«Claude+Clineãé©çšã§ããã®ããšããæ€èšŒãã§ããã®ã¯å€§ããªåç©«ã
ä»åã¯TypeScriptäžå¿ã ã£ããã©æ¥åã§ã¯Ruby/Railsã䜿ã£ãŠããããšãå€ãã®ã§ããããã®æ¥åã¢ããªã§ã掻çšã§ããªããã¯ä»åŸæ€èšŒããŠããããã
ãŸããæ°èŠéçºã®è©±ããæ¢åã®ã³ãŒãããŒã¹ãžã®é©çšã®æ¹ãå€ãã®è·æ¥ããã°ã©ãã«ãšã£ãŠã¯æ°ã«ãªããšããã ãšæãã®ã§ãnçªç ãã§ãè¯ãã®ã§ããããèªåã®ãããªè©Šè¡é¯èª€ã®ã¢ãŠãããããå¢ããŠãã£ãŠæ¬²ããã
Discussion
ãããåèã«ãªããŸããïŒð