
CLAUDE.md ã§è§ŠããŠããããäºã¡ã¢
以äžãèªåçšã¡ã¢ã
12/15 æŽæ°
# ã³ãŒãã£ã³ã°èŠåŸ
ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããé¥ããããæªçãé²ãããã®ã¬ã€ãã©ã€ã³ã
---
## å®è£
ããã»ã¹ïŒæéèŠïŒ
**å³åº§ã«ã³ãŒããæžãå§ããªãã**
ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã®æå€§ã®æªçã¯ãäŸé Œãåããç¬éã«å®è£
ãå§ããŠããŸãããšã§ããããããè¿èŠçŒçãªã³ãŒãã£ã³ã°ãã³ãŒãéè€ãèšèšç Žç¶»ã®æ ¹æ¬åå ãšãªãã
### å®è£
åïŒå
šäœä¿¯ç°
1. **圱é¿ç¯å²ã®ææ¡**: 倿Žãåã¶ãã¡ã€ã«ãã¢ãžã¥ãŒã«ãæ©èœãç¹å®ãã
2. **æ¢åã³ãŒãã®èª¿æ»**: åå©çšã§ãããã®ã圱é¿ãåãããã®ã確èªãã
3. **èšèšæ¹éã®ç¢ºèª**: æ¢åã®ã¢ãŒããã¯ãã£ããã¿ãŒã³ãèŠçŽãçè§£ãã
4. **ãã©ã³ãã®åé¢**: éçºãã©ã³ã㯠feature/<name_of_topic> ãã©ã³ãã«åãåºãããã®äžã§äœæ¥ããã
5. **TodoWriteã®æŽ»çš**: éçºã¹ãããã¯æé æŒããç¡ããã TodoWrite ããŒã«ã䜿ã£ãŠé²æç®¡çãè¡ãäºã
### èšç»ïŒæŠç¥çã¢ãããŒã
1. **å®è£
èšç»ãèšèªåãã**: äœããã©ã®é åºã§ãã©ãå®è£
ãããæç€ºãã
2. **åå²çµ±æ²»**: 倧ããªå€æŽã¯å°ããªã¹ãããã«åè§£ãã
3. **äžæç¹ã¯ç¢ºèª**: 仿§äžãäžç¢ºããªç¹ã¯æ¢åã³ãŒãã®èª¿æ»ãè¡ããšãšãã«ããŠãŒã¶ãŒãšå¯Ÿè©±çã«ä»æ§ã確å®ãããŠããããš
4. **äŸåé¢ä¿ã®æŽç**: å
ã«äœãã¹ããã®ãåŸããäœããã®ãæç¢ºã«ãã
5. **ããã¥ã¡ã³ãå**: docs/work/yyyy-mm-dd_<name_of_topic>.md ãã¡ã€ã«ã«ä»¥äžãèšèŒãã
- èæ¯: ãªããã®å€æŽãå¿
èŠã
- 課é¡: 解決ãã¹ãå
·äœçãªåé¡
- å¯Ÿå¿æ¹é: ã©ã®ãããªã¢ãããŒãã§è§£æ±ºããã
- 倿Žå¯Ÿè±¡ãã¡ã€ã«: 圱é¿ãåãããã¡ã€ã«äžèЧ
- ç¢ºèªæ¹æ³: ã©ã®ããã«åäœç¢ºèªããã
6. **ã»ã«ãã¬ãã¥ãŒ**: äžèšãã¬ãã¥ãŒèгç¹ãã«åºã¥ããèªèº«ã§èšç»ã®åŠ¥åœæ§ãæ€èšŒãã
7. **Codex MCPã¬ãã¥ãŒ**: ã»ã«ãã¬ãã¥ãŒå®äºåŸãCodex MCPã®ã¬ãã¥ãŒãåãããCodexã®ææäºé
ã¯éµåã¿ã«ãããèªèº«ã§ãåŠ¥åœæ§ãæ€èšŒããããšãã¬ãã¥ãŒææç¹ããªããªããŸã§ç¹°ãè¿ãããã¥ã¡ã³ãããã©ãã·ã¥ã¢ãããã
### å®è£
äžïŒæ®µéçãªãã¡ã¯ã¿ãªã³ã°
1. **åãæå°åäœãäœã**: ãŸãåããã®ãäœããããããæ¹åãã
2. **ããŸãã«èŠçŽã**: äžæ°ã«å®æããããåã¹ãããã§ç«ã¡æ¢ãŸã
3. **ç¶ç¶çãªæŽç**: éè€ã«æ°ã¥ããããã®å Žã§å
±éåãæ€èšãã
### å®è£
åŸïŒæ¯ãè¿ã
1. **å
šäœãšã®æŽåæ§ç¢ºèª**: 屿æé©ãå
šäœãå£ããŠããªãã
2. **äžèŠãªå€æŽã®é€å»**: ã¹ã³ãŒãå€ã®å€æŽãçŽã蟌ãã§ããªãã
3. **次ã®äœæ¥è
ãžã®é
æ
®**: æå³ãäŒããã³ãŒãã«ãªã£ãŠããã
4. **Codex MCPã®äºåŸã¬ãã¥ãŒ**: å®è£
å®äºåŸã«å®è£
å
容ãããã¥ã¡ã³ãå
容ãé©åãªãã®ã§ãã£ãããå床Codex MCPã®ã¬ãã¥ãŒãåããäºãææç¹ãããã°ãããŸã§ã®é²æãäžåºŠã³ãããããŠããïŒã³ãããåã«ãããªãã feature/<name_of_topic> ãã©ã³ãã«åé¢ãããŠããäºã確èªïŒæ¹ããŠCodexããã®ææç¹ã»æ¹åç¹ãããã¥ã¡ã³ãã«åæ ãèšç»ïŒ æŠç¥çã¢ãããŒãããããããªãã
5. **ããã¥ã¡ã³ããžã®æ¯ãè¿ã远èš**: å®è£
å®äºåŸãããã¥ã¡ã³ãã«ä»¥äžã远èšãã
- èšç»ãšã®å·®å: èšç»éãã«å®è£
ã§ãããã倿Žç¹ãããã°çç±ãšãšãã«èšèŒ
- åŠã³: å®è£
ã§åŸãç¥èŠãä»åŸã«æŽ»ããããã€ã³ã
- æ®èª²é¡: çºèŠãã課é¡ãå°æ¥ã®æ¹åç¹ïŒããã°ïŒ
```
â äŸé Œ â å³å®è£
â 宿
â
äŸé Œ â èª¿æ» â èšç» â å®è£
â èŠçŽã â æ¹å â 宿
```
---
## ã¬ãã¥ãŒèгç¹
ã»ã«ãã¬ãã¥ãŒããã³Codex MCPã¬ãã¥ãŒæã«ç¢ºèªãã¹ã芳ç¹ãäžäœæŠå¿µããé ã«æ€èšŒããã
### 1. 課é¡ã®çè§£ã¯æ£ããã
- 課é¡ã®æ¬è³ªãæ£ããæããŠããã
- 課é¡ã®ç¯å²ã«æŒãã¯ãªãã
- åææ¡ä»¶ã»å¶çŽãèŠèœãšããŠããªãã
### 2. 察å¿çã¯èª²é¡ã解決ããã
- 察å¿çãå®è¡ããçµæã課é¡ã解決ãããç¶æ
ã«å°éããã
- 察å¿çã®åæã¯æ£ãããïŒæ€èšŒãããŠããããæšæž¬ã«éããªããïŒ
- 察å¿çã«æŒããŠããçµè·¯ã»ã±ãŒã¹ã¯ãªãã
- ããŒã¿ã®æµãã端ãã端ãŸã§è¿œè·¡ãããïŒç¹ã«å¢çãè·šãç®æïŒ
### 3. 察å¿çã¯CLAUDE.mdã®ã³ãŒãã£ã³ã°ã«ãŒã«ã«æºæ ããŠããã
- ã¹ã³ãŒãå€ã®å€æŽãå«ãã§ããªãã
- æ¢åã®ã¢ãŒããã¯ãã£ã»ãã¿ãŒã³ãšæŽåããŠããã
- ãã©ãŒã«ããã¯ã«é Œããããšã©ãŒãé©åã«åŠçããŠããã
- äžèŠãªæœè±¡åã»éå°ãªèšèšãããŠããªãã
- KISSãYAGNIãFail Fastååã«åããŠããªãã
### 4. 察å¿çã®èšèšã¯åŠ¥åœã
- 察å¿çãå®çŸããèšèšã«è«ççãªæ¬ é¥ã¯ãªãã
- 倿Žãã¡ã€ã«äžèŠ§ã«æŒãã¯ãªããïŒç¹ã«DTOãåå®çŸ©ãããªããŒã·ã§ã³ïŒ
- åã³ã³ããŒãã³ãéã®ã€ã³ã¿ãŒãã§ãŒã¹ã¯æ£ããå®çŸ©ãããŠããã
### 5. å®è£
ã¯èšèšéãã
- ã³ãŒããèšèšãæ£ããåæ ããŠããã
- ãšã©ãŒãã³ããªã³ã°ãåå®çŸ©çã«åé¡ã¯ãªãã
- ãã¹ãã±ãŒã¹ã¯ç¶²çŸ
çã
---
## åºæ¬åå
- **KISS (Keep It Simple, Stupid)**: æãåçŽãªè§£æ±ºçãéžã¶ããå°æ¥ã®ãããã®æœè±¡åã¯äžèŠ
- **YAGNI (You Aren't Gonna Need It)**: èŠæ±ãããŠããªãæ©èœã¯å®è£
ããªã
- **ã¹ã³ãŒãå³å®**: äŸé Œãããç¯å²ã®ã¿ãå®è£
ããããã€ãã§ã«ãã¯çŠæ¢
- **Fail Fast, Fail Loud**: åé¡ã¯æ©æã«ãæç¢ºã«å€±æããã
---
## å®è£
åã®ç¢ºèªäºé
1. æ¢åã³ãŒãã«åå©çšã§ãããã®ã¯ãªããïŒ
2. æ°èŠãã¡ã€ã«/ã¯ã©ã¹/颿°ã¯æ¬åœã«å¿
èŠãïŒ
3. äŸåé¢ä¿ãå¢ããå¿
èŠããããïŒãã軜éãªä»£æ¿ææ®µã¯ïŒ
4. æ¢åã®å®æ°ã»èšå®ãã¡ã€ã«ã«è¿œå ãã¹ããïŒ
---
## çŠæ¢äºé
### ã¹ã³ãŒãã»èšèš
- èŠæ±ãããŠããªãããªããŒã·ã§ã³ããã°ãèšå®ãã¡ã€ã«åã®è¿œå
- 1ãã¡ã€ã«ã§æžããã®ã®äžèŠãªåå²
- åäœæªç¢ºèªã®ã³ãŒãããããã§åããŸãããšæèšããããš
- æ¢åã®åœåèŠåã»ã³ãŒãã¹ã¿ã€ã«ãç¡èŠããå®è£
- ä¿®æ£äŸé Œæã«é¢ä¿ãªãéšåãæžãæããããš
### ãã©ãŒã«ããã¯ã®ä¹±çš
- 宿ãªããã©ã«ãå€ (`?? []`, `|| 0`, `|| {}`) ã§åé¡ãæ¡ãã€ã¶ããªã
- try-catch ã§é»ã£ãŠããã©ã«ãå€ãè¿ããªãããšã©ãŒã¯é©åã«äŒæããã
- Optional chaining (`?.`) ã®é£éã§ããšããããå®å
šãã«ããªã
- ãã©ãŒã«ããã¯ãå¿
èŠãªå Žåã¯ããªããããé©åãæç€ºçã«èª¬æã§ããããš
- ãã©ãŒã«ããã¯ãå¿
èŠãªãããã®æåã§æç€ºçã«ã¬ãŒãããïŒ`if (x == null) { ... }`ïŒãæé»ã®ãã©ãŒã«ããã¯ã§ã¯ãªããæå³ãèŠããåå²ã«ãã
### 宿°ã»ããžãã¯ãã³ããŒ
- åããªãã©ã«å€ãè€æ°ç®æã«æžããªã
- æ°å€ã»æååã¯æå³ã®ããååã®å®æ°ãšããŠå®çŸ©ãã
- 宿°ã¯é©åãªå ŽæïŒèšå®ãã¡ã€ã«ãconstants ãã¡ã€ã«çïŒã«éçŽãã
- URLããã¹ãAPIãšã³ããã€ã³ãã®çŽæžãçŠæ¢
```typescript
// â Bad
if (status === 1) { ... }
if (role === 'admin') { ... }
const url = 'https://api.example.com/v1/users'
// â
Good
if (status === STATUS.ACTIVE) { ... }
if (role === ROLES.ADMIN) { ... }
const url = `${API_BASE_URL}${ENDPOINTS.USERS}`
```
### ããžãã¯ãšè¡šçŸã®åé¢
- ããžãã¹ããžãã¯å
ã«UIããã¹ãã»ã¡ãã»ãŒãžãçŽæžãããªã
- 衚瀺æååã¯ãªãœãŒã¹ãã¡ã€ã«ãŸãã¯å°çšã¢ãžã¥ãŒã«ã«åé¢
- ãã©ãŒãããåŠçïŒæ¥ä»ãéè²šãæ°å€ïŒã¯è¡šç€ºå±€ã§è¡ã
- èšç®ã»å€å®ããžãã¯ãšè¡šç€ºããžãã¯ãåã颿°ã«æ··ããªã
```typescript
// â Bad
function processOrder(order) {
if (order.total > 10000) {
return { message: 'ãæ³šæããããšãããããŸãïŒéæç¡æã§ãïŒ', ... }
}
}
// â
Good
function calculateShipping(order): ShippingResult {
return { freeShipping: order.total > SHIPPING_THRESHOLD, ... }
}
// 衚瀺局ã§çµæãè§£éããŠã¡ãã»ãŒãžãçæ
```
---
## æ§é ã»å¯èªæ§
### 颿°èšèš
- 1ã€ã®é¢æ°ã¯1ã€ã®è²¬åã®ã¿
- æ©æãªã¿ãŒã³ã掻çšãããã¹ããæµ
ãä¿ã€
- åŒæ°ã¯æå°éã«ã3ã€ãè¶
ããå Žåã¯ãªããžã§ã¯ãåãæ€èš
- å¯äœçšã®ããåŠçã¯æç€ºçã«åé¢ãã
```typescript
// â Bad: æ·±ããã¹ã
function process(data) {
if (data) {
if (data.items) {
if (data.items.length > 0) {
// åŠç
}
}
}
}
// â
Good: æ©æãªã¿ãŒã³
function process(data) {
if (!data?.items?.length) return
// åŠç
}
```
### åå®çŸ©
- `any` åã®äœ¿çšã¯ååçŠæ¢
- å€éšããŒã¿ïŒAPI ã¬ã¹ãã³ã¹çïŒã«ã¯æç€ºçãªåå®çŸ©ãäžãã
- Unionåã§åãããå€ãæç¢ºã«ãã
### ãšã©ãŒãã³ããªã³ã°
- ãšã©ãŒã¯æ¡ãã€ã¶ãããé©åãªå±€ã§åŠçãã
- ãšã©ãŒã¡ãã»ãŒãžã¯å
·äœçã«ãäœãããªã倱æãããåããããã«
- ãªã«ããªå¯èœãªãšã©ãŒãšèŽåœçãšã©ãŒãåºå¥ãã
---
## ã³ãŒãéè€ã»æœè±¡å
### éè€ã®æé€
- åãã³ãŒãã2åæžãããå
±éåãæ€èš
- 3å以äžåºçŸãããã¿ãŒã³ã¯ãªãã¹ãæœè±¡åãã
- ãã ããç¡çãªå
±éåã¯çŠæ¢ïŒå¶ç¶ã®äžèŽã¯å
±éåããªãïŒ
### é©åãªæœè±¡åã¬ãã«
- æœè±¡åã¯ãçŸåšã®éè€ãã«å¯ŸããŠè¡ãããå°æ¥ã®å¯èœæ§ãã«å¯ŸããŠè¡ããªã
- éåºŠãªæ±çšåãããå
·äœçã§èªã¿ãããã³ãŒããåªå
- ã¬ã€ã€ãŒã»éå±€ã¯å¿
èŠæå°éã«
---
## åºå圢åŒ
- ã³ãŒãã«å¯ŸããŠéå°ãªã³ã¡ã³ããæžããªã
- å®è£
ã®èæ¯èª¬æã¯èãããå Žåã®ã¿
- å®åçãªç· ãã®æšæ¶ã»ç¢ºèªãã¬ãŒãºã¯äžèŠ
---
## 倿޿ã®ãã§ãã¯ãªã¹ã
### å®è£
å
- [ ] æ¢åã³ãŒãã調æ»ããã
- [ ] å®è£
èšç»ãèšèªåããã
- [ ] 圱é¿ç¯å²ãææ¡ããã
- [ ] ãã©ã³ããåã£ãã
- [ ] å®è£
èšç»ãããã¥ã¡ã³ãåããã
- [ ] Codex MCPã¬ãã¥ãŒãéããã
### å®è£
äž
- [ ] ã¹ã³ãŒãå€ã®å€æŽãããŠããªãã
- [ ] æ¢åã®ã¢ãŒããã¯ãã£ã»ãã¿ãŒã³ãšæŽåããŠããã
- [ ] åæ§ã®åŠçãä»ã«ãªãã確èªããã
- [ ] 远å ããäŸåé¢ä¿ã¯æå°éã
- [ ] æ°ãã宿°ã¯ããŒãã³ãŒãã§ã¯ãªãé©åãªå Žæã«å®çŸ©ããã
- [ ] ããžãã¯ãšè¡šçŸãåé¢ãããŠããã
- [ ] ãã©ãŒã«ããã¯ã«é Œããããšã©ãŒãé©åã«åŠçããŠããã
- [ ] åå®çŸ©ã¯æç¢ºãïŒany ã䜿ã£ãŠããªããïŒ
### å®è£
åŸ
- [ ] å®éã«åäœç¢ºèªãããïŒãåãã¯ããã§ã¯ãªãïŒ
- [ ] æ°ããç°å¢ã§ãåçŸããã
- [ ] ã»ãã¥ãªãã£äžã®åé¡ã¯ãªãã
- [ ] äžç¢ºå®ãªéšåãæ£çŽã«å ±åããã
- [ ] Codex MCPã¬ãã¥ãŒãéããã
- [ ] ããã¥ã¡ã³ãã«æ¯ãè¿ãã远èšãããïŒèšç»ãšã®å·®åãåŠã³ãæ®èª²é¡ïŒ