
TDD
ã€ãã³ã
該åœããã³ã³ãã³ããèŠã€ãããŸããã§ãã
ãã¬ãžã³
æè¡ããã°
ã¯ããã« # Claude Code ãå©çšããå人éçºã®é²ãæ¹ããæè¿äžå®ã®åœ¢ã«èœã¡çããŠããŸããã äœåºŠãäœãå€ããŠããã®ã§ãããŸã®åœ¢ãééç¹ã ãšæããŸããããã§ããã©ããã£ãŠ Claude Code ãšéçºããŠããã§ããïŒããšèããããšãã«æž¡ãããã®ãšããŠãçŸç¶ã®æ§é ãã²ãšãšããæžãåºããŠãããŸãã --> Information ãã®èšäºã¯ãããäœãã¹ãããšããææ¡ã§ã¯ãããŸããã ãããŸã§ããŒãã¯ããåããŠãã ãšããèšé²ã§ãã ãã®èšäºã®æ§æ # æ¬èšäºã®æ§æã¯ä»¥äžã®éãã§ãã å
šäœåïŒéçºãµã€ã¯ã«å
šäœã1æã®å³ã§ç€ºããèªã¿æ¹ã説æããŸã ãã®ãããžã§ã¯ãã®æ²æ³ïŒå³ã®åæã«ãªã£ãŠãããäœãã©ãã«æžãæ®ããããã©ãå®ããããããã©ãã§äººéã倿ãããããšãã3ã€ã®ã«ãŒã«ã説æããŸã ã第1éšã1ã€ã®æ©èœãã§ãããŸã§ïŒ Plan â TDD â Review â Verify â Commit â CI ãšããå®éã®1ãµã€ã¯ã«ãã4ã€ã® Gate ãšåãããŠå·Šããé ã«è¿œããŸã ã第2éšãã©ã®æ
å ±ããã©ãã«çœ®ããŠãããïŒã«ãŒã«ã»ã¹ãã«ã»ãµããšãŒãžã§ã³ãã»ã¹ã¯ãªãããªã©ã«äœãæžãããªãããã«çœ®ããã®ããæžããŸã ãããã«ïŒããŸã®åœ¢ãééç¹ã§ããããšãšããŸã çããåºãŠããªã課é¡ãæžããŸã å
šäœã®èšèšã ãç¥ããããã°æåã®2ç« ãå®éã®éçšãããŒãŸã§ç¥ããããã°ç¬¬1éšãŸã§ãè³æã®çœ®ãæ¹ãŸã§èžã¿èŸŒã¿ãããã°ç¬¬2éšãŸã§èªãã§ããããã°å¹žãã§ãã å
šäœå # ãŸã1æã§ããããããŸåã£ãŠãããã®ã®å
šäœã§ãã ãã®å³ã®èªã¿æ¹ã¯ä»¥äžã®éãã§ãã äžã®æ ã ææ ã§ããéçºäžã«äººéã Claude Code ãç¹°ãè¿ãèªãããã¥ã¡ã³ãã§ã docs/adr/ ã .claude/rules/ çã
ã䞊ãã§ããŸã äžã®æ ã å®è¡ ã§ãã 01 Plan ãã 06 CI ãŸã§ãå·Šããå³ã«æéãæµããŸã 05 Commit ãŸã§ã¯æå
ã®ç°å¢ã 06 CI ããå
㯠GitHub Actions ã§ããå®è¡ç°å¢ãå€ããã®ã§ãè²ãå€ããŠç Žç·ã§åºåã£ãŠãããŸã é»ãè±åœ¢ AãD ã¯ããŒãã倿ããå Žæã§ã ããŒã³ã¿ã® docs/adr/ / criteria.yaml ã¯äžäžã«2ã€ãããŸãããããã¯åããã®ã§ããå€æãææãèšé²ããããããæ¬¡ã®éçºãµã€ã¯ã«ã®ææã«æ»ããŸã ãã®èšäºã§ã¯ããã®å³ãå·Šããé ã«è¿œã£ãããšãå³ã«ã¯æããªãã£ãéšåã詳解ããŠãããŸãã ãã®ãããžã§ã¯ãã®æ²æ³ # å³ã®åæã«ãªã£ãŠããã«ãŒã«ã3ã€ãããŸãã ã«ãŒã« æŠèŠ è¡ãå
ãæ±ºããŠãããæžãæ®ã 4段éã®ãµããã§ ADR / ã³ãŒã / èšèšæž / æžããªã ã«æ¯ãåãã æžããŠå®ãããã®ã§ã¯ãªããæžããªããã åã§è¡šçŸäžèœã«ããããšãæåªå
ã«ãã ãŒãã倿ããå Žé¢ã決ããŠãã 倿ãåŒãåãå Žæãå·¥çšã®äžã«4ç®æåºå®ãã è¡ãå
ãæ±ºããŠãããæžãæ®ã # å®è£
ããŠãããšãã³ãŒãã®å€ã«æžãæ®ããŠããããããšã次ã
ã«åºãŠããŸããããªããã®æ¹åŒãéžãã ãããå
šäœã¯ã©ãåã¿åã£ãŠããããããã®å€ã®äžéã¯ããã€ããããããã€ã¯ã©ãåãããçã
ã§ãã 以åã¯ãããçã£ç«¯ããèšèšæžã«è¶³ããŠããŸããããã®çµæãèªèšŒãŸããã®èšèšæžã 3,000 è¡ãè¶
ãããããã§ã³ãŒããšèšèšæžã®å
容ãé£ãéãã¯ãããŸããã©ã¡ããæ£ããã®ãåãããªããçŽãã«ã¯2ç®æãçŽããªããšãããªãããã®ãã¡èšèšæžã®ã»ããèŠãªããªãã ããã§ãæžãæ®ãããããšãåºãŠããã å
ã«çœ®ãå Žæã決ãã ããã«ããŸããã圹å²ããšã®åªäœã¯ããã§ãã åœ¹å² åªäœ WHATïŒäœãäœããïŒ èŠä»¶å®çŸ©æž WHYïŒãªãããäœããïŒ ADR HOWïŒã©ãäœããïŒ ãœãŒã¹ã³ãŒãïŒåã»é¢æ°ã»zod schemaïŒ VERIFYïŒæ£ããäœããããïŒ ãã¹ãã³ãŒã OVERVIEWïŒä¿¯ç°ã»çµ±åïŒ èšèšæž ãã ããã®è¡šã ãã§ã¯æ±ºãŸããŸãããããšãã°ããšã©ãŒåŠçã¯ããã«ãŠã§ã¢ã§äžå
åããããšããå
容ã¯ãããæ±ºããçç±ïŒWHYïŒã§ããããå
šäœæ§æã®äžéšïŒOVERVIEWïŒã§ããããŸããåãå
容ã ADR ã«ãèšèšæžã«ãè¡ããŠããŸããŸãã åããç®ãã æ±ºå®ã1ã€åãåãããå
šäœã®æŽåã1æã«ãŸãšããã ã«èšå®ããŸãããADR ã¯æ±ºå®ãããã³ã«1ãã¡ã€ã«å¢ããã®ã§ãã㟠124 æ¬ãããŸããèšèšæžã¯ãå
šäœæ§æãããããã€æé ãã®ããã«ææ°ã決ãŸã£ãŠããŠã決å®ãå¢ãããšäžèº«ã远åŸããŸãã ããã®æ¹åŒãéžãã çç±ããªã ADRããå
šäœãã©ãåã¿åã£ãŠãããããªãèšèšæžãžãšããå
·åã§ãã ãã®ããã§ãæžãæ®ãããå
容ããšã«4ã€ã®åããäžããé ã«ãããŠãæåã« YES ãåºãè¡ãå
ãžæžãæ®ãããããšãéããŸãã åã YES ã®è¡ãå
Q1. ããã¯ã決å®ããïŒïŒä»£æ¿æ¡ã»ãã¬ãŒããªããããïŒ ADRïŒ1決å®1ãã¡ã€ã«ïŒ Q2. ã³ãŒã / å / ãã¹ã / OpenAPI ãèªãã°åçæã§ããäºå®ãïŒ ã³ãŒããçæ£ãœãŒã¹ãããã¥ã¡ã³ãã«ã¯åç
§ã ãæ®ã Q3. ã³ãŒããå€ãããã³ã«å€ããïŒæ®çºããïŒãïŒ ããã¥ã¡ã³ãã«ã¯æžããªããã³ãŒãåŽã«æãããããã³ãŒãããèªåçæãã Q4. å®å® â§ ã³ãŒãã®åäžç®æããäžå¯èŠãïŒ èšèšæžã®é å åé ã«æãã4ã€ãããã®è¡šã«éããŠã¿ãŸããããªããã®æ¹åŒãéžãã ãã㯠Q1 ã§ ADR ãžãããã®å€ã®äžéã¯ããã€ãã㯠Q2 ã§ã³ãŒããžããå
šäœã¯ã©ãåã¿åã£ãŠãããããšããããã€ã¯ã©ãåããã㯠Q4 ã§èšèšæžãžè¡ããŸãã ãã®4ã€ã®åãã§æ¯ãåãããšãQ4 ãŸã§çãæ®ãã®ã¯äžèš4é¡åãšæŽçã§ããŸããã çµ±å俯ç°ïŒå
šäœæ§æå³ïŒ 暪æã®æµåïŒåœåããã°é
ç®ã®æšæºïŒ éçšç¥èïŒãããã€æé ã»runbookïŒ ãã¡ã€ã³èšèªïŒçšèªéã»ã³ã³ããã¹ããããïŒ ãããããæ°ã¶æã»å€ãã¡ã€ã«ããŸããã§çã§ããç¶ããããã€ãã³ãŒãã®1ç®æãèªãã§ãèŠããªããã®äº€å·®é åã§ãã çµæãšããŠã詳现èšèšæžã¯æžããŸãããããã§ãã詳现èšèšæžã¯ãã³ãŒããæžãåã«ã¯ã©ã¹æ§æã»é¢æ°ã®ã·ã°ããã£ã»é
ç®å®çŸ©ã»ããªããŒã·ã§ã³èŠåã»åŠçã·ãŒã±ã³ã¹ãæç« ã§æ±ºããŠããããŠã©ãŒã¿ãŒãã©ãŒã«ã§ããã詳现èšèšãå·¥çšã®ææç©ã§ããã·ã°ããã£ãé
ç®å®çŸ©ã¯åãèªãã°åçæã§ããã®ã§ Q2 ã§ãã¯ã©ã¹æ§æãåŠçã·ãŒã±ã³ã¹ã¯ã³ãŒããå€ãããã³ã«å€ããã®ã§ Q3 ã§èœã¡ãŸãã æžããŠå®ãããã®ã§ã¯ãªããæžããªããã # èŠçŽãå®ãããææ®µã¯ããã€ããããŸããã ãã¡ã°ãåªå
ããã®ã¯ãåã§è¡šçŸäžèœã«ãããããš ãšæ±ºããŠããŸããããã¥ã¡ã³ãã«ãããããŠãã ããããšæžããŠå®ãããã®ã§ã¯ãªããéåãã®ãã®ãèµ·ãããªãããã å®éã«ããããŠããç®æã2ã€æããŸãã ID ã®åœé ããåãš lint ã§çŠæ¢ãã ãŠãŒã¶ãŒ ID ã®ãããªèå¥åã¯ããã ã® string ã§ã¯ãªã branded type ã«ããŠããŸãã export const UserIdSchema = z .string() .min(1) .max(128) .regex(/^[A-Za-z0-9_-]+$/) .brand<"UserId">(); export type UserId = z.infer<typeof UserIdSchema>; export const userId = (raw: string): UserId => enforceInvariant(UserIdSchema, raw, "UserId"); .brand<"UserId">() ãä»ããŠããã®ã§ãçã® string ã UserId åã®åŒæ°ã«æž¡ããšã³ã³ãã€ã«ãšã©ãŒã«ãªããŸãã UserId ãäœãã«ã¯ userId() ãéããããªããããã§é·ããšæåçš®ã®æ€èšŒãèµ°ããŸããæ€èšŒãéã£ãŠããªãå€ã¯ãåã®ããã§ååšã§ããŸããã ãã ããåã«ã¯æãéããããŸãã "anything" as UserId ãšãã£ã¹ãããã°ãæ€èšŒãéããã« UserId åãåä¹ããŸãã ããã§ããã®æãéã ESLint ã§å¡ãããã«ããŸããã // eslint.config.mjs const noAsBrandedScalarVo = { selector: "TSAsExpression[typeAnnotation.typeName.name=/^(UserId|BudgetId|SpendingQuadrant|BudgetQuadrant)$/]", message: "branded scalar / åæ VO ãžã® as ãã£ã¹ãã¯ååœé ã®æãéãçæã¯ VO ã® factory çµç±ã®ã¿ã", }; as UserId ãšæžããæç¹ã§ lint ãèœã¡ãŸãããID ã¯å¿
ã userId() ã§äœã£ãŠãã ããããšããã¥ã¡ã³ãã«æžã代ããã«ã åã§å¡ããåã®æãéã lint ã§å¡ãã§ããŸã ã 察å¿è¡šã®æžãæŒãããã³ã³ãã€ã«ãšã©ãŒã«ãã literal union ã§å®çŸ©ããå€ããšã«ã察å¿ããå€ãçŽã¥ããããããã察å¿è¡šãããã€ã䜿ã£ãŠããŸãã type Status = "todo" | "doing" | "done"; const STATUS_SLUG = { todo: "to-do", doing: "in-progress", done: "done", } as const satisfies Record<Status, string>; æ«å°Ÿã® satisfies Record<Status, string> ã«ãããunion ã®å
šã¡ã³ããŒãæã£ãŠããªããšåãšã©ãŒã«ãªããŸãã Status ã«ã¡ã³ããŒã1ã€è¶³ããç¬éããã®è¡šã®æŽæ°æŒãããã«ãæã«èœã¡ãŸããã¬ãã¥ãŒã§æ°ã¥ãå¿
èŠããããŸããã ã©ã¡ããå
±éããŠããã®ã¯ã å®ããããã©ããã人éã確èªããŠããªã ããšã§ããéåãããã³ã³ãã€ã«ã lint ã§èœã¡ãŠãã¬ãã¥ãŒãŸã§å±ããŸããã ãŒãã倿ããå Žé¢ã決ããŠãã # èŠçŽãšåã§çžã£ãŠããå®è£
äžã«ã¯å¿
ã倿ã®èŠãå Žé¢ãåºãŠããŸããããã§ãŒãã倿ãåŒãåãå Žæãå·¥çšã®äžã«4ç®æé
眮ããŸããã å³ã®é»ãè±åœ¢ AãD ã§ãã Gate ãŒãã倿ããããš A æ¿èªæžã¿ãã¹ãã±ãŒã¹ãå€ãããã©ãã B å®è£
äžã«çºèŠããèšèšæ¹éãã©ãå€ããã C é倧ãªã¬ãã¥ãŒææããããŸçŽããå
éãããã D æ¢åã® ADR ãšçŸå®ã®ã³ãŒããé£ãéã£ããšãã®è§£é ã第1éšã1ã€ã®æ©èœãã§ãããŸã§ # ãã®ç« ã§ã¯ã1ã€ã®æ©èœãäœãéã«åç« ã®3ã€ã®ã«ãŒã«ãã©ãåããã远ã£ãŠãããŸãã å³ã®äžã®æ ãå·Šããé ã«ãã©ã圢ã§ãå·¥çšããšã«ãäœãããŠãã©ãã§æ¢ãŸãããã解説ããã€ããã§ãã Plan â TDD â Review â Verify â Commit â CI A B C D ãã§ãŒã³ã®äžã® AãD ã Gate ã®äœçœ®ã§ããTDD ã§2åãReview ãš Commit ã§1åãã€ã倿ããŒãã«æ»ã£ãŠããŸãã åå·¥çšã®æé 㯠feature-implementation ã¹ãã«ã«ãŸãšããŠãããClaude Code ã¯æåã®ãã¡ã€ã«ãæžãåã«ãããèªã¿èŸŒã¿ãŸãã 1. èšç»ãã # ãŸããããããè§Šãé åã«é¢ä¿ãã ADR ã Claude Code ã«èªãŸããŸãããšã¯ãã 124 æ¬(çŸæç¹ã®æ°å€)ããã®ã§ãæ¯åå
šéšæž¡ãããã«ã¯ãããŸãããããã§ CLAUDE.md ã«çŽ¢åŒãæã£ãŠããŸãã è§Šãé å å¿
èª ADR é¢é£èšèšæž èªèšŒ / èªå¯ 0030, 0031, 0032, 0042 authentication-design.md ãã®ã³ã° / ç£æ»ãã° 0009, 0033 §1.3, 0037 §3, 0042 logging-monitoring.md Hono ããã«ãŠã§ã¢ 0037, 0038 middleware-architecture.md ãšã©ãŒæŠç¥ 0035, 0041, 0042, 0043, 0045, 0047 error-handling-architecture.md Claude Code ã¯çæåã«ãã®è¡šãåŒããŠã該åœãã ADR ã ããèªã¿ãŸãã æ¬¡ã«ã銎æã¿ã®ãªãé åãªã Explore ãšãŒãžã§ã³ãã§åäŸãæ¢ããŸããããã¯ãæ¢åã®å®è£
ãã¿ãŒã³ãæ¢ããããã®ãã®ã§ãçãã¯å®è£
ã®äžæŽåãé²ãããšã§ãã ããšãã°æ°ãã xxxConfig.ts ãäœãããšãããšãããã§ã« authConfig.ts ãåãæ§é ã§ååšããŠãããªããããã«å£ãã¹ãã§ãã æŸã£ãŠãããšãšãŒãžã§ã³ãã¯æ¯åãŒããããè¯ãèšèšããèããŠã埮åŠã«éãæµåãæã¡èŸŒã¿ãŸãã 3ãã¡ã€ã«ä»¥äžã«è§Šããã¢ãŒããã¯ãã£ãå€ããããããã¯åäŸãæ¢ãããé£ãéããã®ã2ã€åºãŠããããã®ã©ãããªããããã« Plan ãšãŒãžã§ã³ããæã¿ãŸãã èšç»ã¯ã Plan ãšãŒãžã§ã³ãã䜿ã£ããã©ããã«é¢ãããã .claude/docs/plan/ ã«ã¹ãããã·ã§ãããšããŠä¿åããŸãã ãã®ã¹ãããã·ã§ãã㯠é³è
åããåæ ã§çœ®ããŠããŸããå®è£
ãé²ãã°èšç»ãšã¯ãºã¬ãã®ã§ãææ°ã«ä¿ã€åªåã¯ããŸããããåœæã©ã段åãããããã®èšé²ãšããŠæ®ãã ãã§ããããããåžžã«æ£ããä¿ã€ããã¥ã¡ã³ããã«ããããšãããšããŸãäºé管çãå§ãŸããŸãã ãªãã Explore ãš Plan 㯠Claude Code ã«çµã¿èŸŒãŸããŠãããšãŒãžã§ã³ãã§ããã®ãããžã§ã¯ãã§å®çŸ©ãããã®ã§ã¯ãããŸããã --> Information Explore ãš Plan ãåŒã¶æ¡ä»¶ãäžèšã®ããã«è³æãžæèšããŠããŸããããšãŒãžã§ã³ããæ¯åãã®éãã«åãããã§ã¯ãããŸãããæ¡ä»¶ã«åœãŠã¯ãŸã£ãŠããã®ã« Explore ãé£ã°ããŠæžãå§ããããšããããšã¯æ®éã«èµ·ããŸããããã«æžããŠããã®ã¯ãããæç€ºããŠãããã§ãã£ãŠããå¿
ããããªããã§ã¯ãããŸããã 2. ãã¹ãããæžã # ãã¹ãã®æžãæ¹ã¯ã«ãŒã«ãã¡ã€ã« testing.md ãæã£ãŠããŠããšãŒãžã§ã³ãã¯ããã«åŸããŸãã Always follow a two-phase approach: define test cases â review â implement . Never implement tests before the user approves the test case list. 空ã®ãã¹ãã±ãŒã¹ã ããå
ã«æžããŠããŒãã«ã¬ãã¥ãŒãåºãæé ã§ããå®éã«ã¯ãããããã®ãæç€ºãããŸãã describe("BudgetAmount", () => { // æ£åžžç³» test("æ£ã®æŽæ°ããçæã§ãã", () => {}); test("äžéå€ã¡ããã©ã¯çæã§ãã", () => {}); // ç°åžžç³» test("0 以äžã¯çæã§ããªã", () => {}); test("äžéãè¶
ããé¡ã¯çæã§ããªã", () => {}); test("å°æ°ãå«ãå€ã¯çæã§ããªã", () => {}); // å¢ç test("äžé + 1 ã¯çæã§ããªã", () => {}); }); äžèº«ã¯ç©ºã§ã test ã®èª¬ææã ããããç¶æ
ã§ãããã®ç¶æ
ã§ããã®èгç¹ã§åã£ãŠããŸããããšèãããŸãã ããã§æ¿èªãããã¹ãã±ãŒã¹ãããšãã倿Žããã«ã¯ããŒãã®æ¿èªãèŠããŸããããã Gate A ã§ãã æ¿èªãªãã§å€æŽã§ããããã«ããŠãããšãã¯ããã¹ããéããªãçç±ããã¬ãŒã ã¯ãŒã¯ã®éœåãšèª¬æããŠãã¹ãã±ãŒã¹ããšåé€ããããšããããšãèµ·ããŠããŸãããããã§æ¿èªæžã¿ãã¹ãã±ãŒã¹ã®å€æŽã¯ãçç±ã®èª¬æãšã»ããã§æ¢ããããã«ããŠããŸãã Green ã®ããšã¯ refactorer ãšãŒãžã§ã³ããåŒã³ãŸããClaude Code ãå®è£
ããã³ãŒããèªã¿ãã³ãŒãã¹ã¡ã«ãæ€åºããªãã¡ã¯ã¿ãªã³ã°ã宿œãããµããšãŒãžã§ã³ãã§ãã æžããæ¬äººã«ã¯èªåã®ã³ãŒãã®åé¡ãèŠãã«ãããšãã話ãèããå®è£
çŽåŸã«å¥ã®ãšãŒãžã§ã³ãã§èŠãããã«ããŸããã 3. ã¬ãã¥ãŒã«åºã # 芳ç¹ããšã«ãšãŒãžã§ã³ããåããŠããŸãã ãšãŒãžã§ã³ã åŒã¶æ¡ä»¶ code-reviewer 3ãã¡ã€ã«ä»¥äž or 100è¡ä»¥äžã®å€æŽ feedback-reviewer code-reviewer ãåŒã¶ãšãã¯å¿
ãäžç·ã« security-reviewer èªèšŒã»èªå¯ã»APIã»ãŠãŒã¶ãŒå
¥åã»æ©å¯ããŒã¿ã»DB ã¯ãšãªã»ãã¡ã€ã«ã¢ããããŒãã»æ±ºæžã»ãã°åºåã»ãšã©ãŒåŠçã«è§Šãããšã code-quality-analyzer 5ãã¡ã€ã«ä»¥äž or 300è¡ä»¥äžããŸã㯠code-reviewer ãæ§é çãªæžå¿µãæãããšã feedback-reviewer ã ã圹å²ãéããŸããã³ãŒãã®äžè¬çãªå質ã§ã¯ãªããéå»ã«ãŒãèªèº«ãææãã芳ç¹ã«ç
§ãããŠå·®åãèŠããšãŒãžã§ã³ãã§ãã芳ç¹ãã©ãããæ¥ããã¯ç¬¬2éšã§æžããŸãã ããããšãŒãžã§ã³ãã®ã¬ãã¥ãŒçµæã¯èªåã§ä¿åãããŸããã¬ãã¥ãŒç³»ãšãŒãžã§ã³ããå®äºãããš PostToolUse ããã¯ãçºç«ããŸãããã®ããã¯ã§ persist-review-output.py ãåºåã®å
šæã .claude/docs/reviews/ ã«æžãåºããŸãã ææã®ãã¡ MEDIUM / LOW ã¯ãNotion ã®ããã¯ãã°ã«ç©ã¿ãŸããHIGH / CRITICAL ã¯æ¬¡ã® Gate C ã§æ±ããŸãã Gate â 人éã倿ãã # åç« ã§æãã4ã€ã® Gate ããããããã©ãã§çºç«ãããããŸãšããŸãã Gate çºç«ããå·¥çš çºç«æ¡ä»¶ ãŒããæ±ºããããš A TDD æ¿èªæžã¿ã®ãã¹ãã±ãŒã¹ãå€ããããšãã 倿Žãèªããã B TDD å®è£
ããŠã¿ãŠèšèšæ¹éãå€ããå¿
èŠãåºã æ¹éãå€ããããå€ãããªã ADR ãæžããŠããé²ãã C Review ã¬ãã¥ãŒã HIGH / CRITICAL ãå ±åãã ããŸçŽã / çç±ã€ãã§å
éããã / ãªã¹ã¯ãå容ãã D Commit ã®çŽå æžããã³ãŒããæ¢åã® ADR ãšé£ãéã£ãŠãã è§£éãæ±ºããADR ãæžããŠããã³ããããã B ãš D ã¯ããããã ADR ãã³ãããåã«æžãããšã«ããŠããŸãã --> Gate D ã®å®äŸ ADR ã«ã¯ããšã©ãŒåŠç㯠errorMiddleware ã§è¡ãããšæžããŠãããŸããããªã¯ãšã¹ãåŠçã®éäžã«æãããã«ãŠã§ã¢ã§ããã³ãã©ãæããäŸå€ãæãŸããæ³å®ã§ãããšãããå®è£
ããŠã¿ããšãããã¯ãšã³ãã«äœ¿ã£ãŠãã Hono ã§ã¯ãããã«ãŠã§ã¢ã®äžã§ try/catch ããŠããã³ãã©ã®äŸå€ãæãŸããããŸããã§ããããã¬ãŒã ã¯ãŒã¯ãå
éšã§äŸå€ãåŠçããŠããŸãããã§ããæãŸããã«ã¯ãHono ãçšæããŠãã app.onError() ãšããå¥ã®ç»é²å£ã䜿ãå¿
èŠããããŸããã ããã§ ADR ã®ãerrorMiddlewareããã app.onError ã®ããšã ããšèªã¿æ¿ããŠé²ããããšãã§ããŸãããã ããããããšãå®è£
ã«ååšããªãä»çµã¿ã ADR ã«æžããããŸãŸæ®ããŸããããã§æ°ãã ADR ãæžããŠããã®æè¡å¶çŽãšã以éã¯ãerrorMiddlewareãã app.onError ã®ãã³ãã©ãšããŠèªãããšããè§£éãæ®ããŸãããå
ã® ADR ã®æ¬æã¯æžãæããŠããŸããã 4. æ€èšŒãã # ã³ãããåã«ããšãŒãžã§ã³ããè§Šã£ãããã±ãŒãžã§4ã€ãéããŸãã npm run typecheck npm run depcheck npm run lint:biome npm run lint:eslint npm run test npm run test:integration æ²æ³ã®2ã€ç®ã§æžãã仿ããå®éã«èœã¡ãã®ã¯ãããã§ãã as UserId ã®ãã£ã¹ã㯠lint ã§ã察å¿è¡šã®æžãæŒã㯠typecheck ã§èœã¡ãŸãããšãŒãžã§ã³ããèŠçŽãèªã¿èœãšããŠããŠããéåã¯ãã®æ®µéã§æ¢ãŸããŸãã 5. ã³ããããã # ã³ãããã¯1ã€ã®æ©èœã§1åã§ã¯ãªããåºåããã€ããã³ã«ç©ã¿ãŸãããããã /commit ãå®è¡ã㊠Conventional Commits 圢åŒã®ã¡ãã»ãŒãžãäœãããã«ããŸããã Gate B / D ã§èšèšå€æãåããŠããå Žåããã®å€æãå«ãã³ãããããåã« ADR ãæžãããŠããŸããå³ã§ docs/adr/ ã«ãã³ãããåã«èµ·ç¥šããšæ³šèšããã®ã¯ãã®ããã§ãã ADR ã¯ã³ãããã®ææç©ã§ã¯ãªããã³ãããã®åææ¡ä»¶ãšããäœçœ®ã¥ãã«ããŸããã 6. push ã㊠CI ã«æž¡ã # ããã§å®è¡ç°å¢ãå€ãããŸããå³ã§è²ãå€ãã£ãŠãããšããã§ãã CI ã¯ãèœã¡ããããŒãžã§ããªããã®ãšãèœã¡ãªããã®ã«åããŠããŸãã 系統 ã¯ãŒã¯ãã㌠äžèº« æå 匷å¶ç³» back-ci lint / typecheck / äŸåé¢ä¿ / åäœãã¹ã / çµ±åãã¹ã èœãšã front-ci lint / typecheck / ãã¹ãïŒVRT å«ãïŒ èœãšã secret-scan gitleaks ã«ããå
šå±¥æŽã®ç§å¯æ
å ±ã¹ãã£ã³ èœãšã dependency-audit äŸåã®è匱æ§ã®å€å®æŒãã»å€ãå€æã®æ€åº èœãšã èšæž¬ç³» code-metrics qlty ã¡ããªã¯ã¹ / ã«ãã¬ããž èœãšããªããgit notes ã«èç©ããPR ã«å·®åã³ã¡ã³ã dependency-audit ãèœã¡ããšã㯠ããŒã«ã«ç°å¢ã§ dependency-analyzer ãšãŒãžã§ã³ããåŒã³ãŸãã è匱ãªé¢æ°ã«å®éã«å°éããããå容ããŠããããšãããæ©æ¢°ã§ã¯æ±ºããããªã2ç¹ã倿ãããµããšãŒãžã§ã³ãã§ãã å·¥çšã®åéã§ãåæã«èµ°ããã® â ãã㯠# ãããŸã§ã®å·¥çšãšã¯å¥ã«ã決ãŸã£ãç¬éã«èªåã§èµ°ããã®ããããŸãã ç¬é ãã㯠ããããš ãŒããçºèšãããšã capture-turn çºèšãéèªã§çŽ¢åŒã«æ®ãïŒç¬¬2éšã§äœ¿ãïŒ ãã¡ã€ã«ãç·šéãããšã config-protection lint / formatter ã®èšå®ãã¡ã€ã«ãžã®ç·šéããããã¯ãã lint-on-save / typecheck-on-save ç·šéãããã¡ã€ã«ãæŽåœ¢ãã忀æ»ãã console-log-warn æ®ã£ã console.log ãèŠåãã feedback-validate 芳ç¹è¡šãžã®æç·šéãæ€ç¥ããïŒç¬¬ïŒéšåç
§ïŒ ãšãŒãžã§ã³ããå®äºãããšã persist-review-output ã¬ãã¥ãŒåºåãä¿åãã feedback-prune 䜿ãããªããªã£ã芳ç¹ã芳ç¹è¡šããèœãšãïŒç¬¬ïŒéšåç
§ïŒ ãšãŒãžã§ã³ããããããšæã£ãŠããã®ã§ã¯ãªãããã®ç¬éãæ¥ããå®è¡ãããä»çµã¿ã§ãã ãªãã config-protection ã ãæ§æ ŒãéããŸããä»ã¯èšé²ãæŽåœ¢ã§ãããããã¯ç·šéãã®ãã®ãæ¢ããŸãã lint ã®èšå®ãç·©ããã°èŠçŽéåã¯æ¶ããã®ã§ããã®æãæåãã䜿ããªãããã«ããŸããã ã第2éšãã©ã®æ
å ±ããã©ãã«çœ®ããŠããã # ãããŸã§ãåé ã®å³ã®ç¯å²ã§ããå³ã«ã¯ãäœããããããŸã§ãæããŸãããããããã¯ãããããã«äœãæžããŠããŠããªãããã«çœ®ããã®ãã解説ããŠãããŸãã Claude Code ã«åžžã«èªãŸããŠãããéã«ã¯éãããããŸããå
šéšã CLAUDE.md ãã«ãŒã«ã«æžããšãèªã¿èŸŒãã ãã§æèãåãŸããèå¿ã®æç€ºãåãããŸãã ããã§ãæ
å ±ããšã«ãã€èªãŸããã¹ãããæ±ºããŠã眮ãå ŽæãåããŸããã 眮ãå Ž èªãŸããã¿ã€ãã³ã° 眮ããŠãããã® CLAUDE.md / .claude/rules/ 垞㫠玢åŒãåžžã«å¹ãå¶çŽãšäºå® .claude/skills/ 該åœããäœæ¥ã®ãšãã ã æé ããããžã§ã¯ãåºæã®æ¹æ³è« lint / äŸåæ€æ» æ©æ¢°ãåžžã« å®ããããèŠçŽ docs/ 玢åŒããåŒãããšãã ã ADRãèšèšæžãèŠä»¶ããã€ã«ã¹ããŒã³ãæè¡ããŒã .claude/agents/ åŒã°ãããšã 圹å²ãäžå€æ¡ä»¶ãåºåã®åœ¢ ã¹ã¯ãªãã ãšãŒãžã§ã³ããçµæãèªã èšç® criteria.yaml ã¬ãã¥ãŒã®ãšã ãŒãã®éå»ã®ææ ããã¯ã眮ãå Žã®ã²ãšã€ã§ããã第1éšã§æžããã®ã§ããã§ã¯çããŸãã æ²æ³ã®1ã€ç®ã§ãæžãæ®ãããããšã ADR / ã³ãŒã / èšèšæž / æžããªã ã«æ¯ãåãã4ã€ã®åããæžããŸãããClaude Code åãã®è³æã«ããåãåããåœãŠãŠããŸãã ãã®ãããã³ãŒããåããåæ§æã§ããããšã¯æžããªããã³ãŒããå€ãããã³ã«å€ããããšãæžããŸããã åžžã«å¹ããããã® â CLAUDE.md ãš .claude/rules/ # CLAUDE.md ã¯149è¡ã§ãäžå¿ã¯ç¬¬1éšã§åºãŠãããè§Šãé å â å¿
èª ADRãã®çŽ¢åŒã§ããADR ã®äžèº«ã¯æžãããåŒãæ¹ã ããæãããŠããŸãã ã»ãã«ã¯ãæ¬çªç°å¢ãæ©å¯ã®æåšãšãã£ããã©ã®äœæ¥ã§ãèžã¿è¶ããŠã¯ãããªãå¢çãæžããŠããŸãã äžæ¹ã .claude/rules/ ã«ã¯9æ¬ã®ãã¡ã€ã«ããããã©ãã 16ã75 è¡ã§ãã ãã¡ã€ã« æã£ãŠãããã® development-workflow.md å·¥çšã®é åºãšãã©ã®å·¥çšã§ãå¹ãå¶çŽ coding-principles.md æ»ãåæ³šéã®å¿
é åãªã©ãå
šãã¡ã€ã«ã«å¹ãåå code-smells.md éå»ã®ã¬ãã¥ãŒã§ææãå€ãã£ãã³ãŒãã¹ã¡ã«7〠error-handling.md ãšã©ãŒãäŸå€ã§æããŠãã5ã€ã®å Žé¢ïŒãã以å€ã¯æ»ãå€ã§è¿ããšããã«ãŒã«ïŒ security.md ãªãœãŒã¹ã®ææè
æ€èšŒãªã©ãã³ãŒããæžããšãã«åžžã«å®ãã»ãã¥ãªãã£äžã®ã¬ãŒãã¬ãŒã« testing.md æ¬çªã³ãŒãåŽã®çŠæ¢ãšããã¹ãç°å¢ã®äºå® tsdoc.md ã³ã¡ã³ãã®æžãæ¹ã®ãã¡ãæ¢åã³ãŒããç䌌ããŠã決ãŸããªãäºé
ïŒADRããã¥ã¡ã³ãå
ã®å
éšèšå·ãæžããªãããªã©ïŒ language.md èå¥åã»æååã»ã³ã¡ã³ããäœèªã§æžãã codex-delegation.md Codex ã«çžè«ããŠããæ¡ä»¶ïŒæè¿ã¯ã»ãšãã©äœ¿ã£ãŠããŸããïŒ ã«ãŒã«ã«çœ®ãã®ã¯ã次ã®3ã€ã§ãã äºå® çŠæ¢äºé
çæ£ãœãŒã¹ãžã®éæ¡å
ãã以å€ã¯ã«ãŒã«ã«èšèŒãããããããã®çœ®ãå Žã«ä»»ããŠããŸãã ã«ãŒã«ã«æžããªãã㮠眮ãå Ž äŸ æé ã¹ãã« å·¥çšã®é²ãæ¹ïŒ feature-implementation ïŒ ADR ã«æžããŠããããš ADR ã¬ã€ã€ãŒå¥ã®è€é床ã®éŸå€ ã³ãŒããèªãã°åããããš å®éã®ã³ãŒãïŒçæ£ãœãŒã¹ïŒ ãšã©ãŒåã®äœãæ¹ãã³ã¡ã³ãã®æžåŒ ã³ãŒããçæ£ãœãŒã¹ã«ããŠãããã®ã¯ãClaude Code ã«è¿ãã®ãã¡ã€ã«ãç䌌ãããŠããŸãã 該åœããäœæ¥ã®ãšãã ãèªã¿èŸŒããã® â .claude/skills/ # ã¹ãã«ã¯èª¬ææã§ç€ºããäœæ¥ã«åœãŠã¯ãŸã£ããšãã ãèªã¿èŸŒãŸããŸããåžžã«ã¯èªã¿èŸŒãŸããªãã®ã§ãæé ã®ããã«é·ããªããã®ã眮ããŠããŸãã äžèº«ã¯2çš®é¡ã«åãããŸãã çš®é¡ æžããŠããããš äž»ã«äœ¿ãåŽ äŸ æé ããã®äœæ¥ã¯æ¯åãã®åœ¢ã§ããããšããé²ãæ¹ Claude Code æ¬äœ feature-implementation / persist-plan-output / persist-review-output / notion-task extract-learning / consulting-codex / observe-metrics æ¹æ³è« äžè¬è«ãããã®ãããžã§ã¯ãåãã«äžæžãããç®æã ã ãµããšãŒãžã§ã³ã refactoring / unit-testing / web-vulnerability-catalog ã«ãŒã«ãšã¹ãã«ã®ã©ã¡ãã«çœ®ãã # ã²ãšã€ã®æ±ºãŸããã«ãŒã«ãšã¹ãã«ã®ã©ã¡ãã«æžããã§è¿·ãããšããããŸããããšãã°ãã¹ãã«é¢ããæ±ºãŸãã¯ããã¹ãã®ã¹ãã«ã«æžãã®ãèªç¶ã«èŠããŸãã ãã ã2ã€ã¯ Claude Code ã«èªã¿èŸŒãŸããã¿ã€ãã³ã°ãéãã®ã§ã眮ãå Žæãééãããšå¿
èŠãªå Žé¢ã§ Claude Code ã®ç®ã«å
¥ããŸããã çš®é¡ èªã¿èŸŒãŸããã¿ã€ãã³ã° äŸ ã«ãŒã« ã©ããªäœæ¥ãããŠããŠãåžžã« testing.md ã¹ãã« ã¹ãã«ã®èª¬ææã«æžããäœæ¥ã«åœãŠã¯ãŸã£ããšãã ã unit-testing ïŒãã¹ããæžããšãã ãïŒ ããã§ãã©ã¡ãã«çœ®ããã¯æ¬¡ã®3ã€ã®åãã§æ±ºããŸããã è¿ãã®ãã¡ã€ã«ãç䌌ããã°åãããã«æžããã â æžãããªããã©ã¡ãã«ãæžããªã ãã®æ±ºãŸããç Žãããã®ã¯ãã¹ãã«ãèªã¿èŸŒãŸããŠããäœæ¥ã®æäžã â ããã§ãªããªããã«ãŒã«ã«çœ®ã ç ŽãããŠãããã¹ãã lint ã§æ°ã¥ããªãã â æ°ã¥ããªããªããã«ãŒã«ã«çœ®ã äŸãã°ãã¹ãã«é¢ããæ±ºãŸãã2ã€ããã®åãã«åœãŠããšãããªããŸãã æ±ºãŸã ç Žãããã®ã¯ãã€ã ãã¹ãã®ã¹ãã«ã¯èªã¿èŸŒãŸããŠããã 眮ãå Ž æ¬çªã³ãŒãã«ãã¹ãéœåã®åå²ãè¶³ããªã æ¬çªã³ãŒããæžããŠããæäž ããªã ã«ãŒã«ïŒ testing.md ïŒ ãšã©ãŒã®ã¡ãã»ãŒãžæèšã§ã¢ãµãŒãããªã ãã¹ããæžããŠããæäž ãã ã¹ãã«ïŒ unit-testing ïŒ ã©ã¡ãããã¹ãã®æ±ºãŸãã§ããã眮ãå ŽãåããŸããã ãæ¬çªã³ãŒãã«ãã¹ãéœåã®åå²ãè¶³ããªãããç Žãããã®ã¯ãæ¬çªã³ãŒããæžããŠããæäžã§ãããã®ãšããã¹ãã®ã¹ãã«ã¯èªã¿èŸŒãŸããŠããªãã®ã§ãã¹ãã«ã«æžããŠã Claude Code ã®ç®ã«å
¥ããŸãããããã§ã«ãŒã«ã«çœ®ããŸããã ææžã«æžãããæ€æ»ã«æããããã® # lint ãäŸåæ€æ»ã§æ°ã¥ãããã®ã¯ãã«ãŒã«ã«ã¯æžãããæ€æ»ã®èšå®ãšããŠçœ®ããŠããŸãã æ²æ³ã®2ã€ç®ã«æžãããæžããªããããããåã§è¡šçŸã§ããªããã®ã«åºãã圢ã§ãã äŸåæ¹å â dependency-cruiser ïŒ15ã«ãŒã«ïŒ ã«ãŒã« çŠæ¢ããŠããããš domain-no-infrastructure Domain ãã Infrastructure ãžã®äŸå application-no-infrastructure Application ãã Infrastructure ãžã®äŸå hono-only-in-interface-http Hono ã HTTP å±€ã®å€ã§äœ¿ãããš no-cross-context-domain ã³ã³ããã¹ãããŸããã Domain ã®åç
§ ã»ãã«åŸªç°äŸåã»å€ç«ãã¡ã€ã«ã»Port å±€ã®äŸåå¶çŽãªã©ãããããŠ15æ¬ãADR 0002 ã§æ±ºããã¬ã€ã€ãŒæ§é ãããã®ãŸãŸã«ãŒã«ã«èœãšããŠãããŸãã æ»ãå€ã®å â èªäœã® ESLint ã«ãŒã« UseCase ãš PortïŒRepository ã® interfaceïŒã®æ»ãå€ã®åã Result ã«ãªã£ãŠããããæ€æ»ããŸãã æ¢è£œã® ESLint ã«ãŒã«ã«ã¯ãæ»ãå€ã®åãç¹å®ã®åã«éå®ãããã®ããªãã£ãã®ã§èªåã§æžããŸããã äŸåæ¹åã®æ€æ»ãæ»ãå€ã®åã®æ€æ»ããéåããã³ãŒãã¯æ€æ»ã§èœã¡ãŸãããã®ãšã Claude Code ãã«ãŒã«ãã¹ãã«ãèªã¿èŸŒãã§ãããã©ããã¯é¢ä¿ãããŸãããã ãããåãæ±ºãŸããã«ãŒã«ãã¡ã€ã«ã«æžããŠããå¿
èŠããããŸããã 玢åŒããåŒããã® â docs/ # docs/ 㯠Claude Code ãåžžã«ã¯èªãŸããå¿
èŠãªãšãã« CLAUDE.md ã®çŽ¢åŒãã蟿ã£ãŠéãå Žæã§ããäžèº«ã¯5ã€ã«åãããŸãã 眮ãå Ž äžèº« ã©ãããåŒãã docs/adr/ 決å®ã®èšé² 玢åŒã®ãè§Šãé å â å¿
èª ADRã docs/design/ èšèšæžïŒå
šäœæ§æããããã€æé ãªã©ïŒ åã玢åŒã®ãé¢é£èšèšæžã docs/requirements/ èŠä»¶å®çŸ©æž äœãäœããã確ããããšã docs/milestones.md Phase ã®å®çŸ©ãšé²æ 玢åŒã®ãPhase ã®çŸåšå°ã docs/learning/ æè¡ã®åŠç¿ããŒã ãšãŒãžã§ã³ãå®çŸ©ãã¹ãã«ããåæãã§ ADR ãšèšèšæžã«äœãæžããã¯ãæ²æ³ã®1ã€ç®ã§æžãããšããã§ããããã§ã¯ docs/learning/ ã«ã€ããŠæžããŸãã docs/learning/ ã¯ãããšããšã¯ Claude Code ãšäœæ¥ããäžã§ãŒããçè§£ããæè¡ã®ä»çµã¿ããããšã§èªã¿è¿ããããã«æ®ããŠããåŠç¿ããŒãã®çœ®ãå Žã§ãã ãã®ãã¡ Fowler ã®ãªãã¡ã¯ã¿ãªã³ã°ã®ã«ã¿ãã°ã¯ã refactorer ãšãŒãžã§ã³ããã¹ã¡ã«ãææ³ã®ååã確ããããšãã«ãåŒããŠããŸããClaude ã¯ã¹ã¡ã«åãææ³ã®æé ãããšããšäžè¬ç¥èãšããŠç¥ã£ãŠããã®ã§ãæ¯åã¯èªãŸãããååãæé ãåºãŠããªããšãã ãéãããã«æžããŠããŸãã æ¹æ³è«ã®ãã¡äžè¬è«ãšããŠéçšãããã®ã¯ããã®ããã«æžç±çããåããŠããŸãã眮ãå Žã¯åŠç¿ããŒããã¹ãã«ã§ãåºå
žã¯æ¬¡ã®ãšããã§ãã ç¥è åºå
ž docs/learning/refactoring-smells-and-techniques.md Martin Fowlerããªãã¡ã¯ã¿ãªã³ã°ïŒç¬¬2çïŒ: æ¢åã®ã³ãŒããå®å
šã«æ¹åããããªãŒã 瀟 unit-testing Vladimir Khorikovãåäœãã¹ãã®èãæ¹/äœ¿ãæ¹ã web-vulnerability-catalog IPAãå®å
šãªãŠã§ããµã€ãã®äœãæ¹ æ¹èšç¬¬7çã(2021-03-31) åŒã°ãããšãã ãå¹ããã® â ãµããšãŒãžã§ã³ã # ããã§ãããšãŒãžã§ã³ãã¯ãClaude Code æ¬äœããåŒã³åºãããå¥ã®ãšãŒãžã§ã³ãïŒãµããšãŒãžã§ã³ãïŒã§ãããããžã§ã¯ãã§å®çŸ©ããŠãããã®ã¯æ¬¡ã®ãšããã§ãã ãšãŒãžã§ã³ã 責å åç
§ããæ¹æ³è« code-reviewer å質ã»åå®å
šæ§ã»ä¿å®æ§ unit-testing / code-quality-metrics / refactoring feedback-reviewer ãŒããéå»ã«ææãã芳ç¹ã«ç
§ãã criteria.yaml ïŒèгç¹è¡šïŒ security-reviewer èåŒ±æ§æ€åº web-vulnerability-catalog code-quality-analyzer å®éåæã»åªå
é äœä»ã scripts/metrics-digest.py ïŒèšæž¬ã¹ã¯ãªããïŒ refactorer æ¯ãèããå€ããªãæ§é æ¹å refactoring / simplify / docs/learning/ ã®ã«ã¿ãã° dependency-analyzer äŸåè匱æ§ã®å°éæ§ãšå容ã®å€å® scripts/audit-digest.mjs ã®åºå å³ç«¯ã®åã®ãšããããšãŒãžã§ã³ãå®çŸ©ãã®ãã®ã«ã¯æ¹æ³è«ãæžããŠããŸãããäŸãã° refactorer ã®å®çŸ©ã¯ãããå§ãŸããŸãã ã¹ã¡ã«ã®åé¡ãšææ³ã®æé ã¯äžè¬ç¥èãš docs/learning/refactoring-smells-and-techniques.md ããã®äžè¬è«ããã®ãããžã§ã¯ãã§éããªãç®æã¯ refactoring ã¹ãã«ãæã€ã ãšãŒãžã§ã³ãå®çŸ©ã«çœ®ããŠããã®ã¯ã圹å²ããšãæé ããšãããŠã¯ãããªãããšãã§ãããæ¹ã®ç¥èã¯ã¹ãã«ãšã«ã¿ãã°ã«åãåºããŸããã ãã€åŒã¶ãïŒäœãã¡ã€ã«ä»¥äžã®å€æŽã§åŒã¶ãããªã©ïŒãåãšãŒãžã§ã³ãã® description ã«ã ãæžããã«ãŒã«ã«ã¯éè€ãããŠããŸããã å®äŸâ â code-reviewer ã¯ãã©ããèŠãŠå€æããŠããã code-reviewer ã¯ãã¬ãã¥ãŒã®éäžã§ããã€ãã®çœ®ãå Žãåç
§ããŸãããšãŒãžã§ã³ãå®çŸ©ã«ã¯ã倿ã®çš®é¡ããšã«ã©ããèŠããã®å¯Ÿå¿è¡šãæãããŸããã 倿ãã察象 èŠãå Žæ 颿°ããã¡ã€ã«ã®è€é床ã®éŸå€ ADRïŒã¬ã€ã€ãŒå¥ã®éŸå€ïŒ ãšã©ãŒã®æ±ãïŒäŸå€ãæ»ãå€ãïŒ ADR ãã°ããšã©ãŒã¡ãã»ãŒãžã«å人æ
å ±ãåºããªã ã«ãŒã«ïŒ security.md ïŒ ã³ã¡ã³ãã®æžãæ¹ è¿ãã®ãã¡ã€ã«ã®å®ç©ãšãã«ãŒã«ïŒ tsdoc.md ïŒ ãã®ããã§ãåç
§ã®ãããã2ã€æ±ºããŠããŸãã éŸå€ãªã©ã®å€ã¯ãšãŒãžã§ã³ãå®çŸ©ã«æžãåãããåºå
žãåŒçšãããæžãåããšãADR ãæ¹èšãããšãã«è¿œéããªããã åç
§å
ã©ãããé£ãéã£ãããADR â ã³ãŒãã®ã³ã¡ã³ã â ã«ãŒã«ã®é ã«åªå
ãã ãµãŒããšãŒãžã§ã³ããå©çšããã¹ãã«ã¯ãå¿
èŠã«å¿ããŠéœåºŠèªã¿èŸŒãããã«ããŸããã ã¹ãã« èªã¿èŸŒãæ¡ä»¶ unit-testing å·®åã«ãã¹ããã¡ã€ã«ãå«ãŸãã code-quality-metrics ææã«æ°å€ã®è£ä»ããèŠã refactoring éå€§ãªææã®ä¿®æ£æ¡ãæžãçŽå éã«ãlint ãå
šä»¶æ€åºãããã®ïŒ any ã®äœ¿çšãæªäœ¿çšã® import ãªã©ïŒã¯ããã§ãã¯ãªã¹ãããå€ããŠããŸãã ç®ã§æ¢ããã®ã§ã¯ãªããæ©æ¢°ã«ä»»ãããã®ãšããŠåããŸããã å®äŸâ¡ â dependency-analyzer ã¯ãäœãåŒãåããŠããªãã CI ã® dependency-audit ãèœã¡ããšãã«åŒã¶ãšãŒãžã§ã³ãã§ããå®çŸ©ã®åé ã«ã¯ããæžããŠããŸãã ããªãã®åœ¹å²ã¯è匱æ§ã æ€åºãã ããšã§ã¯ãããŸãããæ€åºãšãæ©æ¢°çã«å°åºã§ããè§£éïŒäŸåçµè·¯ãdev/prodãCVSS ã®åè§£ãä¿®æ£ææ®µïŒã¯ scripts/audit-digest.mjs ãæ¢ã«æžãŸããŠããŸããããªããåŒãåããã®ã¯ digest ãåççã«çããããªã 2 ç¹ ã ãã§ãã è匱æ§ã®æ€åºãšãæ©æ¢°çã«åºããæ
å ±ïŒã©ã®äŸåããå
¥ã£ãŠããããæ¬çªã«èŒãããã©ãçŽãããïŒã¯ã¹ã¯ãªãããå
ã«åºããŠããŸãã ãšãŒãžã§ã³ããåãæã€ã®ã¯æ¬¡ã®2ç¹ã§ãã å°éå¯èœæ§ â è匱ãªé¢æ°ã«ããã®ã³ãŒãããŒã¹ããå®éã«å°éããã åå®¹ã®æ¯é â çŽãããåãå
¥ããããå
éãããã å°éå¯èœæ§ã¯æ¬¡ã®é ã§èª¿ã¹ãããã«æžããŠããŸãã äŸåã®èµ·ç¹ãéçºçšãæ¬çªçšããèŠãã æ¬çªçšãªããèªåã®ã³ãŒãããã®äŸåãçŽæ¥äœ¿ã£ãŠãããã grep ã§èŠãã è匱æ§ã®å¯Ÿè±¡ã«ãªã£ãŠããæ©èœããèªåã®ã³ãŒããéãããèªããããšãã°ãHono ã® CORS ããã«ãŠã§ã¢ã« ReDoSããªããCORS ããã«ãŠã§ã¢ã䜿ã£ãŠãããã確ãããã ãªããè匱æ§ã®éèŠåºŠïŒseverityïŒããã®ãŸãŸåªå
床ãšããŠæ±ããªãããã«ããŸããã ããã«ããšãŒãžã§ã³ãå®çŸ©ã«ã¯ãããªãããšãæžããŠããŸãã ã¹ã¯ãªããã®åºåããèªåã§èšç®ãçŽããªã 倿ã®å°åž³ã«èªåã§æžã蟌ãŸãªãã貌ãä»ããããæé¢ãè¿ããšãããŸã§ã çŽãããã®ã«ã€ããŠã¯ãå°éå¯èœæ§ã調ã¹ãªããçŽãã°æžãã®ã§ã --> Information å®äŸâ â¡ã«æžããã®ã¯ããšãŒãžã§ã³ãå®çŸ©ã«æžããŠããæç€ºã§ãã ããã¯ãªã©ã§åŒ·å¶ããŠããããã§ã¯ãªãã®ã§ãããšãã° dependency-analyzer ãå°åž³ã«æžã蟌ãããšãæè¡çã«ã¯ã§ããŸãã èšç®ãããªããã® â ã¹ã¯ãªãã # èšç®ãæ©æ¢°çã«åºããæ
å ±ã¯ãšãŒãžã§ã³ãã«èšç®ããããã¹ã¯ãªããã«æãããŠããŸãã äŸãã° code-quality-analyzer ã¯ã scripts/metrics-digest.py ã®çµæãèªã¿ãŸãã dependency-analyzer ã¯ã scripts/audit-digest.mjs ãåºããè匱æ§ã®äžèЧãèªã¿ãŸãã ã¹ã¯ãªããã«æãããã®ã¯ããã¹ããæžããããã§åºåãæ£ããããæ©æ¢°çã«ç¢ºãããããããã§ãã å€ã¯ã¹ã¯ãªãããåºãããšãŒãžã§ã³ãã«ã¯ãã®å€ãäœãæå³ãããã®å€æã ããä»»ããããšããåæ
ã§ãã ãŒãã®ææãæºãããã® â 芳ç¹è¡š # 第1éšã«åºãŠãã Review å·¥çšã§ feedback-reviewer ãç
§ããã芳ç¹ãã¯ã .claude/feedback/criteria.yaml ãšãã芳ç¹è¡šã«ãããŸãã äžèº«ã¯ããŒãããšãŒãžã§ã³ãã«å¯ŸããŠéå»ã«ããææããã¿ãŒã³ã«èžçãããã®ã§ããäŸãã°1é
ç®ã¯ãããªåœ¢ã§ãã - id: corrections:260816-115935-1 pattern: 倿Žããçšèªã»å€ã»ã³ãã³ãã»æé ããåããã®ãèšè¿°ããä»è³æïŒä» ADR / plan / CLAUDE.md / rules / èšå®ãã¡ã€ã«ïŒãžæ³¢åããããæ§èšè¿°ãæ®ãããŸãŸæç€ºãã scope: docs/**/*.md, .claude/**/*.md, CLAUDE.md detection_hint: å·®åã§çœ®ãæããçšèªã»æ°å€ã»ã³ãã³ãæååã rg ã§ãªããžããªå
šäœã«æ€çŽ¢ãããããããä»ãã¡ã€ã«ãåãå·®åã«å«ãŸããŠããããç
§åãã occurrence: 10 ãŒãã®çºèšã芳ç¹è¡šã®é
ç®ã«ãªããã¬ãã¥ãŒã§äœ¿ããã圹ç®ãçµããŠæ¶ãããŸã§ã®æµãã¯ããã§ãã capture-turn ããã¯ãããŒãã®çºèšãéèªã§çŽ¢åŒã«æ®ã feedback-distiller ãšãŒãžã§ã³ããèç©ãããçºèšãèªã¿ãç¯æ£ã«ããããã®ãæœåºããŠãæ¢åã®é
ç®ãšåçš®ããåé¡ãã ææ Œåè£ããŒãã«æç€ºããæ¿èªããåã ã芳ç¹è¡šã«æžã feedback-reviewer ããReview å·¥çšã§ã³ãŒãå·®åã芳ç¹è¡šã«ç
§ãã äœåºŠç
§ãããŠãéåãèŠã€ãããªãé
ç®ã¯ã feedback-prune ããã¯ã芳ç¹è¡šããèœãšãã ãªãããã®èžçã¯éçºãµã€ã¯ã«ã®äžã§ã¯åããŸããã ã»ãã·ã§ã³ã®åé ã§ feedback-nudge ããã¯ãæªèžçã®çºèšããããšç¥ãããŠãããšãã«ãŸãšããŠåããŠããŸãã ADR ãèŠçŽããæ±ºããããšããæ®ãä»çµã¿ã ãšãããšããã¡ãã¯ãèšã£ãã®ã«å®ãããªãã£ãããšããæ®ãä»çµã¿ã§ãã ãããã« # ã¯ããã«ã§æžãããšããããã®åœ¢ãééç¹ã ãšæããŸããå®éã第1éšã§æžãã Gate ã¯ããã®èšäºãæžããŠããéã«èŠçŽããŸããã Gate ã®ãã³ã«ãŒãã®å€æåŸ
ã¡ã§å®è£
ãæ¢ãŸãã1ã€ã®ã¿ã¹ã¯ãäœåºŠãæ¢ãŸã£ãŠããããã§ãããã®èšäºã§ã¯ãèŠçŽãåã®åœ¢ã®ãŸãŸæžããŠããŸãã ã»ãã«ãããŸã çããåºãŠããªãããšããããŸãã ãŒããã¿ã¹ã¯ã®ããã«ããã¯ã«ãªã£ãŠãã ïŒããŸã¯ååŒ·ã®æå³ã蟌ããŠãææç©ã«å
šéšç®ãéããŠããŸãããã®ã¶ããã¿ã¹ã¯ããŒãã®ãšããã§æ¢ãŸããŸãã ããŒã ã§éçºãããšãã®ä»çµã¿ããªã ïŒãããŸã§ã®ä»çµã¿ã¯ããŒã1人ã§ã®éçºãåæã«äœã£ãŠããŸããè€æ°äººã§äžç·ã«éçºããå Žé¢ã§ã®ä»çµã¿ã¯ããŸã æŽããããŠããªããšæããŠããŸãã èŠæ±ããå®è£
ãŸã§ããã²ãšç¶ãã«ãªã£ãŠããªã ïŒãã®èšäºã§æžããã®ã¯ãèŠä»¶ã決ãŸã£ãããšã®éçºããã»ã¹ã§ãããã®äžæµã§é¡§å®¢ã®èŠæã»èŠæ±ãæŽçããŠéçºã®èŠä»¶ã«èœãšã蟌ã¿ãèšèšããŠå®è£
ãããŸã§ãéãã§ã€ãªãä»çµã¿ã¯ããŸã æŽåã§ããŠããªããšæããŠããŸãã ã©ããããã«çããåºããã®ã§ã¯ãªãã®ã§ãä»åŸãèªåã§è©Šè¡é¯èª€ããªãããå°ããã€æŽåããŠãããããšæããŸãã
ãã®èšäºãèªãã§ããã ãããããšãããããŸããã¢ãžã£ã€ã«ã°ã«ãŒãã«æå±ãããè€äºæºåŒã§ãã 質å # âãã¡ã®ããŒã ã¯æ¢åã·ã¹ãã ã®ä¿å®éçšãäžå¿ã§ããäžå
·å察å¿ãæ¹åèŠæãžã®å¯Ÿå¿ãã¡ã€ã³ã§ã倧ããªæ°æ©èœãã¹ããªã³ãã§èšç»çã«äœã£ãŠãããããªä»äºã§ã¯ãããŸãããç ä¿®ã§ç¿ã£ãã¹ã¯ã©ã ã¯æ°èŠéçºãåæã®ããã«èŠããŸããããã¡ã¯å²ã蟌ã¿ãå€ãã ãã¡ã«ã¯ã¹ã¯ã©ã ã¯åããªãã®ã§ã¯ãªãã§ããããïŒ åç # âåããªãã®ã¯ãã¹ã¯ã©ã ã§ã¯ãªããã¹ã¯ã©ã 解説ã®åæãã®ã»ãã§ããèŠç¹ãå€ãããšãä¿å®éçšã¯ã¢ãžã£ã€ã«ã«ãšã£ãŠããªãèªç¶ãªç°å¢ã§ãããŠã©ãŒã¿ãŒãã©ãŒã«æåãèº«ã«æã¿ä»ããéçºããŒã ã¯ããæåã«ãã¹ãŠã決ããªãããšããèãæ¹ã«æ
£ããã®ã«èŠåŽããŸããäžæ¹ãä¿å®éçšã®äžçã§ã¯ãæåãããã¹ãŠæ±ºããªããã®ã¯âåœããåâã§ãã âããã«èšãã°ãä¿å®éçšãåããŠããã®ã¯ã¹ã¯ã©ã ã®ãä»äºã®ç®¡çãã®åŽé¢ã ãã§ã¯ãããŸãããã¹ã¯ã©ã ãå®çŸ©ããŠããªãããããã¢ãžã£ã€ã«ã«äžå¯æ¬ ãªããååââãã¹ããèšèšããªãªãŒã¹ãšãã£ãâã¢ãã¥ããã®æè¡âââãéããå ŽãšããŠãä¿å®éçšã¯ããããæè¯ã®èå°ã§ããæ¬çš¿ã®åŸåã¯ããã«éå¿ã眮ããŸãã âãŸãã¯ãåãåããªããæéã«çµè«ã¥ããåã«ããæ°èŠéçºãšä¿å®éçšã¯ãæ¬åœã«å¥ç©ãªã®ããããèãçŽããŠã¿ãŸãããã ãæ°èŠéçºããšãä¿å®éçšãã¯ãæ¬åœã«å¥ç©ã # âãã®è³ªåã®åå°ã«ã¯ããæ°èŠæ©èœã®éçºããšãä¿å®éçšã®äžå
·å察å¿ã»æ¹åèŠæå¯Ÿå¿ãã¯ãŸã£ããéãä»äºã ããšããæèŠããããŸãã âã¹ã¯ã©ã ãåæã«ããŸãã¯ãããçã£ãŠã¿ãŸãã以äžãåè
ããæ°èŠéçºç³»ããåŸè
ããä¿å®ç³»ããšäŸ¿å®äžåŒã³åããŸãã âããã¯ãã°ã®èŠç¹ã§äž¡è
ã䞊ã¹ãŠã¿ããšããããªããŸãã æ°èŠéçºç³»: äœãããæ©èœã䞊㶠â 䟡å€ããªã¹ã¯ã§åªå
é äœãã€ãã â å°ãã宿ãããŠå±ãã â ãã£ãŒãããã¯ãåŸãŠæ¬¡ã決ãã ä¿å®ç³»: äžå
·åå ±åãæ¹åèŠæãæµã蟌ã â 圱é¿åºŠãç·æ¥åºŠã§åªå
é äœãã€ãã â çŽããŠå±ãã â å©çšè
ã®åå¿ãåçºç¶æ³ãèŠãŠæ¬¡ã決ãã âãæ°èŠãã©ããã«ãããããã䟡å€ã®ããäœæ¥é
ç®ãæµå
¥ãããããã«åªå
é äœãã€ããå°ãã宿ãããŠå±ããçµæãèŠãŠæ¬¡ã倿ãããäžæ©åŒããŠã¿ããšãäž¡è
ã¯æ§é çã«ã¯åãã§ããã¹ã¯ã©ã ãåãããšããŠããã«ãŒããã®ãã®ããã©ã¡ãã®ãç³»ããåããŠããŸãããããŠã©ã¡ãã®ããã¯ãã°ããé
ç®ãåŸããæµã蟌ãããšãåæã«ãããªã¹ãã§ããå
šä»¶ãæåã«æã£ãŠããã¹ããšãããªã¹ãã§ã¯ãããŸããã âã§ã¯ãäœãéããªãã®ããšãããšãå·®ã¯ãããŸãããã ãããã¯ãçš®é¡ã®å·®ãã§ã¯ãªããçšåºŠã®å·®ãã§ãã é
ç®ã®ãµã€ãºãšç¬ç«æ§ : ä¿å®ç³»ã®é
ç®ã¯å°ç²ã§ãäºãã«ç¬ç«ããŠããããšãå€ããæ°èŠéçºç³»ã¯å€§ãããé
ç®éã®äŸåã匷ããªããã¡ æµå
¥ã®äºæž¬å¯èœæ§ : ä¿å®ç³»ã¯çªçºã®æµå
¥ãå€ããæ¥é±äœãããããä»é±æ±ºããããªããæ°èŠéçºç³»ã¯ïŒä¿å®ç³»ãšæ¯ã¹ãŠïŒèšç»ãç«ãŠããã ã¹ããŒã¯ãã«ããŒã®æåŸ
ã®åœ¢ : æ°èŠéçºç³»ã«ã¯ããã€ãäœãåºãã®ãããåãããä¿å®ç³»ã«ã¯ãã©ãã ãæ©ãã確å®ã«çŽãã®ãããåããã âãããã¯ã¹ããªã³ãã®é·ãããŽãŒã«ã®ç«ãŠæ¹ããã£ãã·ãã£ã®é
åãšãã£ããéçšãã©ã¡ãŒã¿ïŒç¬¬1ååç
§ïŒããå€ããçç±ã«ã¯ãªããŸããããã¹ã¯ã©ã ããã/ãããªãããåããçç±ã«ã¯ãªããŸãããåãèãæ¹ã®äžã§ããã©ã¡ãŒã¿ïŒèª¿æŽã®ããããéãã ãã§ãã ã¹ã¯ã©ã ãå®çŸ©ããŠããªããããååã # âããäžæ©é²ããŸãããããŸã§ã®è©±ã¯ãããã¯ãã°ãšåªå
é äœã¥ããã€ãŸãã¹ã¯ã©ã ãå®çŸ©ãããä»äºã®ç®¡çãã®åŽé¢ã§ããããããã¹ã¯ã©ã ã¬ã€ããèªã¿è¿ããšãæ°ã¥ãããšããããŸãã ã¹ã¯ã©ã ã¯ãã©ãäœããããäžåå®çŸ©ããŠããŸããã ãã¹ããã©ãæžãããèšèšãã©ãä¿ã€ããã©ã®é »åºŠã§çµ±åããªãªãŒã¹ãããâŠãããã¯ã¹ã¯ã©ã ã®å€ã«ãããŸãã âã¢ãžã£ã€ã«ã®ãã®ãããååããæ
ã£ãŠããã®ããXPïŒãšã¯ã¹ããªãŒã ã»ããã°ã©ãã³ã°ïŒã«ä»£è¡šãããæ§ç¯ãã©ã¯ãã£ã¹ã§ããèªåãã¹ãïŒãããŠãã¹ããå
ã«æžããŠããå®è£
ãããã¹ãé§åéçºïŒããªãã¡ã¯ã¿ãªã³ã°ïŒåããå€ããã«å
éšæ§é ãæŽããããšïŒãç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ïŒå€æŽãé »ç¹ã«çµ±åãèªåã§ãã«ãã»ãã¹ãããããšïŒãå°ããªãªãªãŒã¹ãã·ã³ãã«ãªèšèšãã¹ã¯ã©ã ã ããå°å
¥ããŠãã¹ããªã³ãããšã«åããã®ãåºãŠããªãããã¹ããŒããèœã¡ç¶ããããšæ©ãããŒã ã®å€ãã¯ããã®ååãæ¬ ããŠããŸãã管çã®æ çµã¿ã ããã£ãŠããã®äžã§åãã¢ãã¥ããã®è¶³è
°ããªãç¶æ
ã§ãã ä¿å®éçšã¯ããã®ãããååããéããæè¯ã®èå°ã # âãŠã©ãŒã¿ãŒãã©ãŒã«æåã«æãŸã£ãéçºããŒã ãã¢ãžã£ã€ã«ã«ç§»è¡ãããšããæå€§ã®é害ã¯ãããŠããå
šéšæ±ºããŠããäœãããããšããç¿æ
£ïŒããæ¬²æ±ïŒã§ããç·è¡šãåŒããèŠä»¶ãåºããèšèšãåºããå®è£
ãžâŠãã®ç¿æ
£ãæšãŠãã®ã«ãå€ãã®ããŒã ãäœã¶æãããšãã«äœå¹ŽãèŠãã¿ãŸãã âãšãããä¿å®éçšã®çŸå ŽãèŠãŠãã ããã âæ¥æã©ããªäžå
·åãå ±åããããã誰ãç¥ããŸãããå幎å
ã®å¯Ÿå¿èšç»ã粟緻ã«ç«ãŠãããšã«æå³ããªãããšããå
šå¡ãäœã§ç¥ã£ãŠããŸããã€ãŸãã ãæåã«ãã¹ãŠæ±ºããªããç¶æ
ããæå³ãããã§ã«éæãããŠãã ã®ã§ããéçºããŒã ãèŠåŽããŠææŸãç¿æ
£ããç°å¢ãšããŠããããæç«ããŸããã âãããŠããããããæ¬é¡ã§ããä¿å®éçšã®æ¥åžžæ¥åã¯ãXPã®æè¡ãã©ã¯ãã£ã¹ã®ç·Žç¿åé¡ãã®ãã®ã§ãã èªåãã¹ã : äžå
·åãçŽããšããããŸãåçŸãããã¹ããæžãããããéããã®ã¯æãèªç¶ãªæé ã§ããçŽããç®æãæ¬¡ã®æ¹ä¿®ã§å£ããªãããååž°ãã¹ãã®ç¶²ãå¢ãããŠããããšããä¿å®ã®çŸå Žã§ã¯ãåœç¶ã®ããšããšããŠåãå
¥ããããŸããå€ãã®æªçãªã¢ãžã£ã€ã«ãããžã§ã¯ãã§ããã¹ãã¯ãªãªãŒã¹ééã«ããã°ããããšãã誀解ïŒéããªããïŒïŒãå¹³ç¶ãšéã£ãŠããã®ãšã¯å€§ããªéãã§ãã ãªãã¡ã¯ã¿ãªã³ã° : ä¿å®ç³»ã®å€æŽã¯å°ç²ã§ãããè§Šã£ããšãããå°ãã ããããã«ããŠæ»ãããæ¯åããç¿æ
£ããå€§èŠæš¡ãªäœãçŽããããã«ã³ãŒããå¥å
šã«ä¿ã€å¯äžã®çŸå®çãªæ¹æ³ã§ãããä¿å®éçšã¯éçºè
ã«ç·Žç¿ããæ©äŒãå€ãäžããŠãããŸãã ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ãšå°ããªãªãªãŒã¹ : é
ç®ãç¬ç«ããŠããããã1ä»¶ãã€çµ±åãã1ä»¶ãã€å±ããããŸãããå°ãã宿ãããŠå±ããããµã€ã¯ã«ãçãããã«ãã»ãã¹ãã»ãããã€ã®èªååã«æè³ããåæ©ãèŠè¿ãããæ°èŠéçºããæç¢ºã§ãã 宿ã®å®çŸ© ïŒäœããã£ãŠãçµãã£ãããšãããã®ããŒã ã®åæïŒ: ã¹ããªã³ãããšã«äœåºŠãã宿ããçµéšã§ããã®ã§ãèŠç©ãã»åå²ã»ã宿ãšã¯äœããã®åæãšãã£ãåºæ¬åäœã®ç·Žç¿åæ°ããæ°èŠéçºæ¡ä»¶ããã¯ããã«å€ã皌ããŸããæ€æ»ãšé©å¿ã®ãªãºã ããéå®³ã®æ¯ãè¿ããåçºé²æ¢ãšããåœ¢ã§æ¥åžžæ¥åãšå°ç¶ãã§ãã âãã®ããã«èŠãŠãããšããä¿å®éçšã«ã¹ã¯ã©ã ã¯åããªããã®ã§ã¯ãªããããããã¹ã¯ã©ã ã®ç®¡çã®æ çµã¿ãšãXPçãªã¢ãã¥ããã®æè¡ã®äž¡æ¹ã身ã«ã€ãããªããä¿å®éçšã¯è¯ãèå°ã§ããããšããèŠæ¹ããååã«æãç«ã¡ãŸãã ã§ãéçãç¥ã£ãŠããã # âãã ããéçããããŸããä¿å®éçšã§éããããã®ã¯ã¢ãã¥ããã®åŽã§ãã£ãŠãã¹ã¯ã©ã ã®ç®¡çã®åŽã«ã¯ç·Žç¿ãã«ããããšã2ã€ãããŸãã ã¹ããªã³ããŽãŒã«ã§ä»äºããæãããå ãå°ç²ã§ç¬ç«ããé
ç®ãããªãã ããªãããŽãŒã«ã¯ãä»ã¹ããªã³ãã®åãçµãããããã«éåããã¡ã§ãããã©ãã©ã®äœæ¥ã1ã€ã®ç®çã«æããç·Žç¿ã¯ãæèããªããšçºçããŸããã 䟡å€ã®åªå
é äœãå·¡ã倿 ããçŽãã®ãåœç¶ãã®äžå
·åãçžæã§ã¯ãããããã䟡å€ã«åºã¥ããŠäœãäœããäœãäœããªããåªå
é äœãã€ããããšããããããã¯ããªãŒããŒã®çãã¬ã®æ©äŒãä¹ãããªããŸãã âã»ãŒã¢ãžã£ã€ã«ååŠè
ã°ããã®ããŒã ãããããªãæ¬çªéçºã«çªæããŠå€±æããŠããçŸå Žãå°ãªãããèŠãŠãããšãããŸãä¿å®éçšã§ã¢ãã¥ããã®æè¡ã身ã«ã€ãããâãæ°èŠéçºã§ãŽãŒã«ãPOã®çãã¬ã«åãçµã¿ãªããéçºãé²ããããšããã¢ãããŒãã¯ãååã«æ€èšã«å€ãããšæããŸãã âãšãããæ¥æ¬ã§ã¯ããã®ãã¢ãã¥ããã®æè¡ããžã®æè³ãæ§é çã«äžè¶³ããã¡ã§ããçµå¶å±€ã®äžã«ã¯ãã¢ãžã£ã€ã«ããæ©ããå®ãããšããæèã§æããŠããæ¹ãå°ãªããããŸããããã®çµæãäœå¶ã®ç·šæã¯å䟡åªå
ã«ãªããè²æãžã®æè³ãçãããèšèšããã³ãŒãã£ã³ã°ããã¹ãã«è³ãâã¢ãã¥ããâã®èœåãããŒã ãšããŠæŽããªããªããŸããã¹ã¯ã©ã ã®ç ä¿®ã¯åãããããã¹ãã®èªååããªãã¡ã¯ã¿ãªã³ã°ã誰ããã£ãããšããªãââãããªããŒã ããã¹ã¯ã©ã ãå§ããããšç§°ããŠæ¬çªéçºã«çªæããå
æ¯ã¯ãçãããããŸããã責ããã¹ãã¯åã
ã®ãšã³ãžãã¢ã§ã¯ãªãããã®ç·šæãšæè³ã®æææ±ºå®ã§ãã âãã£ãšããã®æææ±ºå®ããã³ã¹ãåæžã®å¶çŽã®äžã§ã¯ããã®å Žãã®å Žã§ã¯åççãªéžæã§ã¯ãããŸããåççãªéžæã®ç©ã¿éããæãŸã¬çµæã«è¡ãçãââãã®æ§é ã¯ã次åããã®æŽæ¹æ¡ä»¶ã®è©±ã§ãç¹°ãè¿ãç»å ŽããŸãã âç§èŠã§ã¯ããããã¢ãžã£ã€ã«éçºã®å€±æã®å€§ããªèŠå ã®ã²ãšã€ã§ããä¿å®éçšãéé¬ã®èå°ã«ããææ¡ã¯ããã®è¶³è
°ãæ¥åžžæ¥åã®äžã§éãçŽãææ¡ã§ããããŸãã âçµå¶å±€ã®æ¹ã«ããæ©ããå®ããã®ä»£ããã«æåŸ
ããŠããã ãããã®ã¯ãã倿Ž1ä»¶ã®ãªãŒãã¿ã€ã ãçž®ãããåæ¿ããªãªãŒã¹ã®äºæ
ãæžãããèŠç©ã®å€ãå¹
ãçãŸãããšãããæž¬ããå€åã§ãããããã¯ãæ¬é£èŒã®ä»åŸã®åã§æ¡ãäžãããããšèããŠããŸãã âãããŠãã¡ãããéçºããŒã ãã䟡å€ã®åµé ãšã³ãžã³ããšããç®ã§èŠãŠããã ããããã³ã¹ãã»ã³ã¿ãŒãšããŠå䟡ãåã察象ã§ã¯ãªãã æè³ããŠè²ãŠã察象 ãšããŠã ããã§ãçŸå Žã§å°ãããšãžã®åŠæ¹ # âä¿å®éçšãžé©çšãããšããŠãããèµ·ããã ããå°ãããšãžã®å¯ŸåŠæ³ãããã€ãæããŠãããŸãããã ã¹ããªã³ããŽãŒã«ãç«ãŠãããªã âåè¿°ããããã«ãŽãŒã«èšå®ã¯ãªããªãé£ãããããããŸãããã¹ããªã³ããåãå§ããŠæ°ã¶æã®ããŒã ãªããããã§ãã£ãã®ããšå²ãåã£ãŠãã ãªã«ãŽãŒã«èšå®ããããŸããèªåãã¹ããšãªãã¡ã¯ã¿ãªã³ã°ãæ¥åžžã®æé ã«çµã¿èŸŒãããšãã£ãã¢ãã¥ããã®åºæ¬åäœã«éäžããŠãããããããªãããšæããŸãã âãã¡ãããããŽãŒã«æ±ºããçŠæ¢ãããæå³ã¯ãããŸããããŽãŒã«ããæ©èœã®ãŸãšãŸããã§ç«ãŠãããšãããšè©°ãŸããŸããæ¹åã»åæžã»å®å®åã®èгç¹ã§èãããšç«ãŠããããªãã§ããããã仿ã®ã¢ã©ãŒãä»¶æ°ãåæžãããããã®æé æžã廿¢ã§ããèªååã宿ãããããåãåããäžäœ3ä»¶ãFAQåããŠåãåãããæžãããããããã¯ç«æŽŸãªã¹ããªã³ããŽãŒã«ã§ãããåè¿°ã®ãæããåãã®ç·Žç¿ã«ããªããŸãã å²ã蟌ã¿ã§èšç»ãå£ãã âãŸã1ã2ã¹ããªã³ããå²ã蟌ã¿ã®ä»¶æ°ã»æéã»çºçå
ãèšé²ããæèŠã§ã¯ãªãå®çžŸã®æ¯çã§ãèšç»æ ããšãå²ãèŸŒã¿æ ããåããŠãã£ãã·ãã£ãèšèšããŠãã ããã詳ããéçšïŒèšé²ã®ãšãæ¹ãåœçªå¶ãåä»ã®äžæ¬åãªã©ïŒã¯ã第12åãããã§ãŸãšããŠæ±ãäºå®ã§ãã ããããã¹ããªã³ããšããåºåãã宿
ã«åããªã âå²ã蟌ã¿ãæåžžçã«éåãå ãããããªããã¹ã¯ã©ã ã«ãã ããããã«ã³ãã³ïŒã¹ããªã³ããåºåãããæµãã§ä»äºã管çããææ³ïŒã®äœµçšã»ç§»è¡ãæ£é¢ããæ€èšããŠãã ãããæµããŠããä»äºãé ã«åŒãåããæµãã®éããšè©°ãŸããæ¹åããã«ã³ãã³ã¯ããããŒäžå¿ã®çŸå Žã®å®æ
ã«çŽ çŽã«åããŸãã âã¹ã¯ã©ã ã¯ç®çã§ã¯ãªãææ®µã§ãããã¹ã¯ã©ã ãããããããšã¯ãã¢ãžã£ã€ã«ãããããããšã§ã¯ãããŸããã ãªããã®è³ªåã¯30幎繰ãè¿ãããã®ã # âçç±ã¯åçŽã§ãã¢ãžã£ã€ã«ã®è§£èª¬ã»ç ä¿®ã»æåäºäŸã®ã»ãšãã©ããæ°æ©èœãéçºããããŒã ããæé»ã®äž»äººå
¬ã«ããŠæžãããŠããããã§ããèªè
ã®å€æ°æŽŸãä¿å®éçšã«æºãã£ãŠããã«ãããããããææã®äž»äººå
¬ã¯åžžã«æ°èŠéçºããŒã ã§ãããå ããŠæ¥æ¬ã§ã¯ãæ°å
¥ç€Ÿå¡ç ä¿®ã§ãŠã©ãŒã¿ãŒãã©ãŒã«åã®éçºã¯ãã£ããæããããäžæ¹ãã¢ãžã£ã€ã«ã¯ã»ãšãã©æ±ãããŸããããææããªããç¶æ
ã¯ããã£ãªã¢ã®å
¥å£ããå§ãŸã£ãŠããã®ã§ãã âã ããä¿å®éçšã®å®è·µè
ã¯ãäžä»£ãæ¿ãããã³ã«ãèªåãã¡ã¯äŸå€ãªã®ã§ã¯ãªããããæ°ããã¢ãããŒãã«è§Šããæ©äŒã奪ãããŠããã®ã§ã¯ãªããããšããåãäžå®ãæ±ããŸãã âãããæ¬çš¿ã§èŠãããã«ãäŸå€ãªã®ã¯çŸå Žã§ã¯ãªãææã®åæã®ã»ãã§ãããå
ãèªããªãäžã§ãå°ãã宿ãããåŠã³ãªããé²ãããšããã¹ã¯ã©ã ã®èå°è£
çœ®ã¯æŽã£ãŠããããã®ãããã¹ã¯ã©ã ãå®çŸ©ããªãã¢ãã¥ããã®æè¡ãéããç·Žç¿åé¡ããæ¯æ¥æµã蟌ãã§ããã âä¿å®éçšã¯ ã¢ãžã£ã€ã«ã®åšçžã§ã¯ãªã ãããã ãã®è¶³è
°ãäœãå Žæ ã ãšèããŠã¯ãããã§ããããïŒ æ¬¡å: ãã¢ããã°ã¬ãŒãæ¡ä»¶ã®ãçŸè¡æ©èœä¿èšŒãã«ã©ãåãåãïŒã
AWSãæå±ãããAI-DLCããšããæ¹æ³è«ã«ã€ããŠãå
¬åŒããã°ã調ã¹ãªããæŽçããèšäºã§ããAIæ¯æŽéçºã»AIèªåŸéçºãšããåŸæ¥ã®2ãã¿ãŒã³ãšã®éããããInceptionã»Constructionã»Operationsãšãã3ã€ã®ãã§ãŒãºæ§é ããããŠãã¹ãŠã®æŽ»åã貫ãèšç»ã»ç¢ºèªã»æ¿èªã»å®è¡ã®ã«ãŒããŸã§ãAI-DLCã®ç«ã¡äœçœ®ãšä»çµã¿ããŸãšããŠããŸããSDDãTDDãšã®é¢ä¿ãç¥ãåã«ããŸãAI-DLCãã®ãã®ãçè§£ãããæ¹åãã®å
容ã§ãã












