
- TOP
- ã¿ã°äžèЧ
- PostgreSQL
PostgreSQL
ã€ãã³ã

ãã¬ãžã³
æè¡ããã°
æ¬èšäºã¯ 2026 幎 10 æ 30 æ¥ã« Kiro ããã°ã§å
¬éãããã Spec it safe: shift left and harden your specs with security requirements ãã翻蚳ãããã®ã§ãã SDD ã®åºãããšããã®æ»è§ 仿§é§åéçº (SDD) ã¯ãå€§èŠæš¡ãªããŒã ã®ãœãããŠã§ã¢éçºã®ããæ¹ãå€ãã€ã€ãããŸããããã³ããã ãã«é Œãã®ã§ã¯ãªã仿§ãæžããããã«æ²¿ã£ãŠ AI ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã«èšèšãã¿ã¹ã¯ãå®è£
ãé²ããããŸããæ¬èšäºã§ã¯ãã®æµãã Specify â Plan â Execute ãšç¥ããŠæžããŸãããã ããã»ãšãã©ã® 仿§ã«æžãããŠããã®ã¯ããœãããŠã§ã¢ãäœããã¹ãããã€ãŸããŠãŒã¶ãŒãç®ã«ããŠå®éã«äœ¿ãæ©èœã§ãã誀çšããããšãã«ã©ãèãããã¯æžãããŠããŸãããæ©èœèŠä»¶ã¯ãããšããšåããã°æ£ãããåãããŸãããã°ã€ã³ãå£ããŠããã°ã誰ããæ°ã¥ããŸããã»ãã¥ãªãã£èŠä»¶ã¯ããã§ãªãããšãå€ããã€ã³ãžã§ã¯ã·ã§ã³ãèªå¯ã®æ¬ é¥ãéãããŸãŸã§ããã¢ããªã¯ãã¹ãŠã®æ©èœãã§ãã¯ã«éãããšããããŸãã倱æããã±ãŒã¹ã誰ã詊ããªãããã§ãããã®ããã仿§ã«ã»ãã¥ãªãã£ã®å¶çŽãæ¬ ããŠãããšããšãŒãžã§ã³ãã«ã¯ã»ãã¥ãªãã£ãç®æšã«äœã蟌ã¿ãç¹°ãè¿ãæ¹åããŠãã察象ããããŸããããšãŒãžã§ã³ãã¯ãã¬ãŒã ã¯ãŒã¯ã®æ¢å®ã®åäœã«é ŒããŸããããã§è¶³ããããšãããã°ç©Žãæ®ãããšãããã仿§ã«ã¯ã©ã¡ããªã®ããåãèšè¿°ããããŸããã ãã®ã®ã£ãããåããæ¹æ³ã¯ãããè¯ãã¢ãã«ãè¶³ãããšã§ããæåŸã«ã»ãã¥ãªãã£ã¬ãã¥ãŒãä»ãè¶³ãããšã§ããããŸãããäœæ¥ãååãããŠãèªåã§å®å
šã«ã³ã³ãããŒã«ã§ããå±€ãã€ãŸã仿§ã«ç§»ãããšã§ãã仿§ã«ã»ãã¥ãªãã£äžã®çŸ©åãæžãã°ãã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã«ã¯äœã蟌ã¿ãç¹°ãè¿ãæ¹åããŠããå
·äœçãªç®æšãã§ããŸããã³ãŒããã§ãããã£ãŠããã¬ãã¥ã¢ãŒãèŠã€ããã®ãåŸ
ã€å¿
èŠã¯ãããŸãããããã¯ãèšèšãåºãŸã£ãŠããã»ãã¥ãªãã£ãåŸä»ãããèãæ¹ãããæåããã»ãã¥ãªãã£ãåæã«èšèšããèãæ¹ãžã®è»¢æã§ãããããŠãã¯ã¢ãŒããã¯ãã£ã«ãè¯ã广ããããŸããã»ãã¥ãªãã£èŠä»¶ãæ©ã段éã§æžããŠãããšããããã£ããããèšèšã«ã€ãªããããšããããŸããåŸããæ¹ä¿®ããã®ã§ã¯ãªãèŠä»¶ãåæã«çµã¿ç«ãŠãã®ã§ãèŠä»¶ãæºããã®ãç°¡åã«ãªãããã§ãã仿§ã®å質ã¯ãã³ãŒãã 1 è¡ãç¡ããã¡ããäœã蟌ããŸãã仿§ã®ããŒããã³ã° (specification hardening) ã¯ããã®ããã«èšèšããŸããã 仿§ã®ããŒããã³ã°ã®ãçŽ¹ä» ä»æ§ãããŒããã³ã°ãã Kiro Power ã玹ä»ããŸããSDD ã®ã¯ãŒã¯ãããŒã«ã¹ãããã 1 ã€è¿œå ãããã©ã°ã€ã³ã§ããæ©èœèŠä»¶ãæžãçµããŠããèšç»ãå§ãããŸã§ã®éã«ãEARS 圢åŒã®èŠä»¶ãèªã¿ããã®æžãæ¹ããæ³å®ãããè匱æ§ã®çš®é¡ãææããŠã远跡ãšãã¹ããã§ããã»ãã¥ãªãã£äžã®çŸ©åãææ¡ããŸããææ¡ã¯ãCWE ã®è匱æ§ã¿ã€ããåå©çšã§ããã»ãã¥ãªãã£äžã®çŸ©åã«å¯Ÿå¿ä»ãããå³éžããã©ã€ãã©ãªããäœãããŸãããã®ããã仿§ã®ããŒããã³ã°ã®ææ¡ã¯ã¢ãã«ã®æšæž¬ã§ã¯ãªããæ¢ç¥ã®è匱æ§ã«åºã¥ããŠããŸããææ¡ãçå€ãã«ãªããªãã®ã¯ãèŠä»¶ãã®ãã®ããå°ãããã§ãã仿§ã®ããŒããã³ã°ã矩åãææ¡ããã®ã¯ããŠãŒã¶ãŒå
¥åãèªèšŒãããŒã¿ã®æ±ããªã©ãæåã®æžãæ¹ããã®çŸ©åã§å¯ŸåŠããè匱æ§ã瀺ããŠãããšãã ãã§ãããã®ãããã¢ããªã±ãŒã·ã§ã³ãå®éã«è¡ãããšã«åã£ãå¶çŽã ããæç€ºãããŸããã»ãã¥ãªãã£ã¯åŸã®ã³ãŒãã¬ãã¥ãŒã§ã¯ãªã仿§ãã®ãã®ã«å
¥ããŸããããã§ããåŸæ®µã«ã»ãã¥ãªãã£ã¬ãã¥ãŒã®ã¹ããããå
¥ããããšã匷ããå§ãããŸãã å³ 1: spec ã®ããŒããã³ã°ã¯ãKiro ã® Specify â Plan â Execute ã®æµãã«ãã³ãŒããæžãåã®æ©ã段éã®ç®¡çãã€ã³ããšããŠãããŒããã³ã°ã®ã¹ãããã 1 ã€æ¿å
¥ããŸãã 仿§ã®ããŒããã³ã°ã¯ äžæµã®ç®¡çãã€ã³ãã§ãããå®è¡æã®ã»ãã¥ãªãã£å¢çã§ã¯ãããŸããã ããããè匱æ§ã¿ã€ããæãèœã¡ãå¯èœæ§ãæžãããã»ãã¥ãªãã£ã®æå³ãæç€ºçã§ã远跡ã§ãããã¹ãã§ãã圢ã«ããŸããçæãããã³ãŒããæ€èšŒããããè匱æ§ãç¡ãããšã蚌æãããã¯ããŸãããSASTãDASTãäŸåé¢ä¿ã®ã¹ãã£ã³ã人ã«ããã¬ãã¥ãŒã®ä»£ããã«ããªããŸããã 仿§ã®ããŒããã³ã°ã察象ãšãããã®ïŒ èŠä»¶ãšããŠè¡šçŸã§ããã〠EARS ã®æžãæ¹ããæ€åºã§ããè匱æ§ã¿ã€ãã§ããã€ã³ãžã§ã¯ã·ã§ã³ãèªèšŒã®æ¬ åŠã匱ãèªèšŒæ
å ±ã®ä¿åããšã³ã³ãŒããããŠããªãåºåããããŠãããã«é¡ããæãæŒããåœãŠã¯ãŸããŸãã 仿§ã®ããŒããã³ã°ã察象ãšããªããã®ïŒ ããŒã¿ãããŒãã³ãŒãã¬ãã«ã®è§£æãå¿
èŠãªè匱æ§ãåå¥äžã®æããããç¡ãèªå¯ã®æããå®è¡ç°å¢ãã€ã³ãã©ã¹ãã©ã¯ãã£ãäŸåé¢ä¿ã«é¢ãããã®ãã¹ãŠã§ãããããã«ã¯åŒãç¶ãã人ã®ã¬ãã¥ã¢ãŒãšåŸæ®µã®ããŒã«ãå¿
èŠã§ãã 仿§ããŒããã³ã°ãšã³ãžã³ã®äžæ žïŒCWE ãã仿§ãžã®å¯Ÿå¿ä»ãã©ã€ãã©ãª ãã¹ãŠã®è匱æ§ã仿§ã§çŽããããã§ã¯ãããŸãããå€ãã¯ã¢ãŒããã¯ãã£ã«èµ·å ããããã³ãŒãã§ããèŠããŸããããããã èŠä»¶ãšããŠè¡šçŸã§ãã CWE ã¯ã©ã¹ãéžãã§ãåå©çšã§ããã»ãã¥ãªãã£äžã®çŸ©åã«å¯Ÿå¿ä»ããããšã¯ã§ããŸãã ãã®çŸ©åãæ£ããå®è£
ããŠæ€èšŒããã°ãããããã®è匱æ§ã®ãããã圢ãç·©åã§ããŸãã仿§ã®ããŒããã³ã°ã¯ããã®å¯Ÿå¿ä»ããæ±ºå®çã«åã TypeScript ã®ã©ã€ãã©ãªãš CLI ãšããŠæäŸããŠããã®ã§ãã©ã®å¶çŽãåçŸã§ããŸãã CWE èåŒ±æ§ ããªã¬ãŒæ¡ä»¶ å¿
èŠãª EARS å¶çŽ CWE-89 SQL ã€ã³ãžã§ã¯ã·ã§ã³ èŠä»¶ãå€éšå
¥åã䜿ã£ãŠããŒã¿ããŒã¹ãç
§äŒãã ãã¹ãŠã®ã¯ãšãªããã©ã¡ãŒã¿åã¯ãšãª / ããªãã¢ãã¹ããŒãã¡ã³ãã ãã§å®è¡ããæååã®é£çµã¯æ±ºããŠäœ¿ããªãã CWE-862 èªå¯ã®æ¬ åŠ ããªã³ã·ãã«ãææãããªãœãŒã¹ãè¿ãããŸãã¯å€æŽãã èŠæ±å
ã®ããªã³ã·ãã«ããªãœãŒã¹ãææããŠããããæç€ºçãªèš±å¯ãæã£ãŠããããšã確èªããã CWE-306 èªèšŒã®æ¬ åŠ ãšã³ããã€ã³ãããªãœãŒã¹ãå
¬éãã åŠçã®åã«ãæå¹ãªèªèšŒæžã¿ã»ãã·ã§ã³ãŸãã¯çœ²åä»ãããŒã¯ã³ãå¿
é ã«ããã CWE-79 ã¯ãã¹ãµã€ãã¹ã¯ãªããã£ã³ã° ãŠãŒã¶ãŒãå
¥åããã³ã³ãã³ãããã©ãŠã¶ã§è¡šç€ºãã ãã¹ãŠã®åºåãã³ã³ããã¹ãã«å¿ããŠãšã³ã³ãŒãããå€å±€é²åŸ¡ãšã㊠Content Security Policy ããããŒã远å ããã CWE-522 äžååãªèªèšŒæ
å ±ã®ä¿è· ãã¹ã¯ãŒããä¿åãŸãã¯æ€èšŒãã 匷åãªé©å¿å颿°ã§ãã¹ã¯ãŒããããã·ã¥åãã (å¹³æãå
ã«æ»ãã圢åŒã¯æ±ºããŠäœ¿ããªã)ã CWE-434 ç¡å¶éã®ãã¡ã€ã«ã¢ããããŒã ãã¡ã€ã«ã®ã¢ããããŒããåãä»ãã ããžãã¯ãã€ãã MIME ã®èš±å¯ãªã¹ããšç
§åãããµã€ãºã«äžéãèšããWeb ã«ãŒãã®å€ã«ä¿åããã CWE-639 IDOR / BOLA åŒã³åºãå
ãæå®ããèå¥åã§ãªããžã§ã¯ããååŸãã è¿ãåã«ããªããžã§ã¯ããææããããã³ããèªèšŒæžã¿ã®åŒã³åºãå
ãšäžèŽããããšã確èªããã ã©ã€ãã©ãªã«ã¯ã 8 ã€ã®ã»ãã¥ãªãã£é åã«ããã 60 ã® CWE ã®å¯Ÿå¿ä»ã ãå«ãŸããŠããŸã (ã€ã³ãžã§ã¯ã·ã§ã³ãèªèšŒãèªå¯ãããŒã¿ã®é²åºãæå·ãå
¥åã®æ€èšŒãã»ãã¥ãªãã£ã®èšå®ãã¹ãããžãã¹ããžãã¯)ãè匱æ§ã¯ MITRE ã® Common Weakness Enumeration (CWE) ããåã£ãŠããŸããã©ããéžã¶ããšæ€åºãã¿ãŒã³ã¯ã䞻㫠OWASP Top 10:2021 ãš Amazon Q Developer Detector Library (æ§ CodeGuru) ãããšã«ããŠããŸããå察å¿ä»ãã«ã¯ãOWASP ã®ã«ããŽãªãŒãšã人ãå²ãåœãŠãæ·±å»åºŠãä»ããŠããŸãã衚ã®å¶çŽã¯ä»£è¡šçãªäŸãèšãæãããã®ã§ãã©ã®ã¢ãŒããã¯ãã£ã«ããã®ãŸãŸäœ¿ããå®å
šãªå¯Ÿçã§ã¯ãããŸããã ãšã³ãžã³ã®ä»çµã¿ 仿§ã®ããŒããã³ã°ã¯ãèŠä»¶ãã¡ã€ã«ããšã« 3 段éã®ãã€ãã©ã€ã³ãå®è¡ããŸãããšã³ãžã³ã®åäœã¯æ±ºå®çã§ããããŒã«ã®ããŒãžã§ã³ã察å¿ä»ãããªãã·ã§ã³ãããŒããã³ã°åã®å
¥åãåããªããåã仿§ã«ã¯åžžã«åãããŒããã³ã°ãæœãããŸãããã®åŸã«ç¶ããšãŒãžã§ã³ãã®æå³çãªã¬ãã¥ãŒ (å³ 2) ã¯æ±ºå®çã§ã¯ãããŸããã 1. ããªã¬ãŒã®æ€åº ãšã³ãžã³ã¯ã2 çš®é¡ã®åå¥äžã®ã·ã°ãã«ã䜿ã£ãŠãåèŠä»¶ã 60 ã® CWE ã®å¯Ÿå¿ä»ããšç
§åããŸããéšåæååã®ããŒã¯ãŒã (ãdatabaseããuploadããsessionã) ãšãæ£èŠè¡šçŸã®ãã¿ãŒã³ã§ããããããçµã¿åãããŠäžéã®ããã¹ã³ã¢ã«ããã¹ã³ã¢ããããå€ (æ¢å®ã¯ 0.3) ãè¶
ãã CWE ã«å°ãä»ããŸããç
§åã¯æå³ã§ã¯ãªãåå¥ã«åºã¥ãã®ã§ãæžãæ¹ã«æç€ºãããŠããªãè匱æ§ã¯èŠéãããšããããŸãã 2. ã«ãã¬ããžã®ç¢ºèª ãšã³ãžã³ã¯ãå°ãä»ãã CWE ããšã«ãå¿
èŠãªåºæ¬èŠçŽ ããã§ã«ä»æ§ã«æžãããŠãããã確èªããŸããããšãã°ããã©ã¡ãŒã¿åã¯ãšãªã®æ¡é
ãææè
ã®ç¢ºèªãåºåã®ãšã³ã³ãŒãã§ããææ¡ãäœãããã®ã¯ããŸã 察å¿ãããŠããªãæãã ãã§ãã確èªã¯ãã¡ã€ã«å
šäœã察象ã«åå¥ã§è¡ãã®ã§ãããèŠä»¶ã«æžããã察çã«ãã£ãŠãå¥ã®èŠä»¶ãžã®ææ¡ãåºãªããªãããšããããŸãã 3. å¶çŽã®ææ¡ ãšã³ãžã³ã¯åŠçãæ¢ããã®ã§ã¯ãªããè¶³ããªãå¶çŽã EARS ã®é
ç®ãšã㊠1 ã€ãã€æ¿å
¥ããŸãããã¬ãŒã¹ãã«ããŒã¯ãå¯èœãªãå
ã®èŠä»¶ã®èšèã§åããã§ããªããšãã¯äžè¬çãªèšãæ¹ (ãa userããthe resourceã) ã«ããŸããæ¿å
¥ããåè¡ã«ã¯ææ¡ ID ãš [SECURITY: âŠ] ã¿ã°ãä»ãã®ã§ãäœæè
ã¯å€æŽãå·®åãšããŠã¬ãã¥ãŒã§ããŸããè€æ°ã®å¯Ÿçãéãã察å¿ä»ãããããŸããCWE-89 ã§ã¯ããã©ã¡ãŒã¿åã¯ãšãªã®æ¡é
ãšå
¥åã®æ€èšŒã®æ¡é
ã®äž¡æ¹ã远å ãããŸããããã°ã©ã ãã䜿ã API ã¯ãåå¶çŽã® CWEãåªå
åºŠãæ ¹æ ããŸãšããæ§é åã¬ããŒããè¿ããŸããCLI ã¯å¶çŽããã¡ã€ã«ã«çŽæ¥æžã蟌ã¿ããã®ã¬ããŒãã¯ä¿åããŸããã 仿§ã®ããŒããã³ã°ãèªãã®ã¯ä»æ§ã ãã§ãã³ãŒãã¯èªã¿ãŸãããèŠä»¶ã®æé¢ã瀺ããCWE ã«ç±æ¥ããå¶çŽãææ¡ããäœæè
ããããå®éã«åããŠããã·ã¹ãã ãšç
§ããåãããŠç¢ºãããŸããããããäžå€æ¡ä»¶ãæç€ºããŠãããšãå®ãç¶ããããšããã¹ãããããšã容æã«ãªããŸãã å³ 2: ãšã³ãããŒãšã³ãã®ã¯ãŒã¯ãããŒããšã³ãžã³ (玫) ã¯åèŠä»¶ã 60 ã® CWE ã®å¯Ÿå¿ä»ããšç
§åããè¶³ããªãå¶çŽã EARS ã® [SECURITY:] é
ç®ãšããŠæžã蟌ã¿ãŸãããšãŒãžã§ã³ãã®æå³çãªã¬ãã¥ãŒ (ãªã¬ã³ãž) ã¯ãèªå¯ã«é¢ãã匱ããããã確èªãã確èªã§ããæãããšã«ãã®åéã«åã£ãå¶çŽã远å ããŸãã仿§ãå€ãã£ãããåããã¡ã€ã«ã§ãšã³ãžã³ãåå®è¡ãããšãæ°ããèŠä»¶ãšå€æŽãããèŠä»¶ã ããããŒããã³ã°ãããŸããã©ã®èŠä»¶ãã¬ãã¥ãŒæžã¿ãã¯ãã¬ãã¥ãŒããŒã«ãŒã§ãšã³ãžã³ã«äŒãããŸã (ç¹ç·ã®ã«ãŒã)ã å
·äœäŸïŒæ£è
èšé²ã®æ€çŽ¢ ããããªãéèŠããçè§£ãããã¡ã°ãç°¡åãªæ¹æ³ã¯ãåãæ©èœã 2 åãªãªãŒã¹ããŠã¿ãããšã§ãã1 åç®ã¯æ©èœã ããæžãã仿§ããã2 åç®ã¯ä»æ§ããŒããã³ã°ãšã³ãžã³ã§ããŒããã³ã°ãã仿§ããã§ããããããžã¿ã«ãã«ã¹ã®ã¹ã¿ãŒãã¢ããããå»åž«ãæ£è
åã§èšºçèšé²ãæ€çŽ¢ã§ããæ£è
ããŒã¿ã«ãäœã£ãŠããŸãããããã¯ããããŒãžã£ãŒã¯ãå€ãã®äººãæžãã§ãããèŠä»¶ãæžããŸãã èŠä»¶ïŒæäœéã®æ©èœã ãã§ãã»ãã¥ãªãã£ã«ã¯è§ŠããŠããªã (EARSãã€ãã³ãé§å) WHEN a physician searches for clinical notes by patient name, THE SYSTEM SHALL return all matching clinical notes from the records database. äžèŠãããšå®å
šã«èŠããŸããã æäœéã®æ©èœ ããæžãããŠããŸãããã©ãäžèŽãããããããŒãžã³ã°ãçµæã空ã®ãšããã©ã®ãã£ãŒã«ããè¿ããŠãããã誰ãå®è¡ã§ãããã«ã€ããŠã¯äœãæžãããŠããŸãããã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã¯ã次ã®ãã㪠Express.js ã®ãšã³ããã€ã³ããçæãããããããŸãã (説æçšã®ç䌌ã³ãŒã)ã æç€ºçãªã»ãã¥ãªãã£ã®å¶çŽãç¡ãå Žå (説æçšã®ç䌌ã³ãŒã) // Agent-generated code from the security-silent spec app.get('/clinical-notes/search', async (req, res) => { const { patientName } = req.query; const notes = await db.query( `SELECT * FROM clinical_notes WHERE patient_name LIKE '%${patientName}%'` ); res.json(notes); }); ããã«ã¯ 2 ã€ã®è匱æ§ãåã蟌ãŸããŠããŸããSQL æã«æååãåã蟌ãã§ããç®æã¯ãæç§æžã©ããã® CWE-89 (SQL ã€ã³ãžã§ã¯ã·ã§ã³) ã§ãã %' OR '1'='1' -- ã®ãããªå
¥åãäžãããšãåžžã«çã«ãªãæ¡ä»¶ã远å ãããŠæ®ããã³ã¡ã³ãã¢ãŠãããããã¹ãŠã®è¡ãè¿ãããŸã (æ£ç¢ºãªæ§æã¯ããŒã¿ããŒã¹ã«ãã£ãŠç°ãªããŸã)ããããŠããã®ãšã³ããã€ã³ãã«ã¯èªèšŒã®ç¢ºèªããŸã£ãããããŸããããã㯠CWE-306 (Missing Authentication for Critical FunctionãéèŠãªæ©èœã«å¯ŸããèªèšŒã®æ¬ åŠ) ã§ãã3 ã€ç®ã®ããæ ¹ã®æ·±ãåé¡ãã€ãŸãèªèšŒæžã¿ã®èšåºå»ããã¹ãŠã®æ£è
ã®èšé²ãèŠãŠããã®ããšããåé¡ã¯ãåŸã§åãäžããŸããæãèœã¡ã¯èŠä»¶ã®æ®µéã§èµ·ããŠãããå®è£
ãæ¢å®ã§ã¯é²åŸ¡çã«ãªã£ãŠããŸããã§ããã ã§ã¯ãåãèŠä»¶ã仿§ããŒããã³ã°ãšã³ãžã³ã«ãããŠã¿ãŸããåå¥ããŒã¹ã®æ€åºåšã¯ 2 ã€ã®è匱æ§ã¿ã€ã (CWE-89 SQL ã€ã³ãžã§ã¯ã·ã§ã³ãš CWE-306 èªèšŒã®æ¬ åŠ) ã«å°ãä»ããæçªä»ãã® EARS å¶çŽã 7 ã€èŠä»¶ã«æžãæ»ããŸããäžã«ç€ºããšãããããããã«è¿œè·¡ã§ããææ¡ ID ãš [SECURITY: âŠ] ã¿ã°ãä»ããŸãã3 ã€ä»¥äžã®èŠä»¶ã§ææ¡ãããæ¡é
ã¯ãå
±éã® ## Security Baseline (Cross-Cutting) ã»ã¯ã·ã§ã³ã« 1 åã ãç§»ãããŸããããã¯ãã¥ãŒãªã¹ãã£ãã¯ãªã®ã§ãå·®åã§ç¢ºãããŠãã ããã ã¬ãã¥ãŒåŸã« requirements.md ã«æžãæ»ãããã仿§ã®ããŒããã³ã°ã®åºåããšã³ãžã³ã¯ 2 ã€ã® CWE ã«ããã£ãŠ 7 ã€ã®çŸ©åã远å ããŸããCWE-89 (ãã©ã¡ãŒã¿åã¯ãšãª) ã® 1.1ã1.2ãCWE-89 (å
¥åã®æ€èšŒ) ã® 1.3ã1.4ãCWE-306 (èªèšŒ) ã® 1.5ã1.7 ã§ããç¶ããŠã¬ãã¥ãŒã®å·¥çš (Power ã§ã¯ Kiro ãšãŒãžã§ã³ãããCLI ã§ã¯èªåã§è¡ããŸã) ã§ã1.8 (ããŒã¿ã®æå°åãCWE-200) ãš 1.9 (蚺çé¢ä¿ã«åºã¥ãèªå¯ãCWE-862) ã远å ããŸããããã§ã¯ä»£è¡šçãªæ¡é
ã ãã瀺ããæ®ãã¯çç¥ããŠããŸããããã°ã©ã ãã䜿ã API ã¯ããšã³ãžã³ã远å ããåå¶çŽã® CWEãåªå
åºŠãæ ¹æ ããŸãšããæ§é åã¬ããŒããè¿ããŸããCLI ã¯ãã®ã¬ããŒããä¿åããŸããã 1. WHEN a physician searches for clinical notes by patient name, THE SYSTEM SHALL return all matching clinical notes from the records database. 1.1. SEC-REQUIREMENTS-REQ-1-EC-89-1-1 [SECURITY: parameterized-query] THE SYSTEM SHALL execute all database queries using parameterized statements or prepared statements only. 1.5. SEC-REQUIREMENTS-REQ-1-EC-306-1 [SECURITY: authentication-required] IF a request that the specification does not explicitly allow without authentication arrives without a valid authenticated session or signed token, THEN THE SYSTEM SHALL reject the request. ⊠engine clauses 1.2â1.4 and 1.6â1.7 omitted for brevity. 1.8. SEC-REQUIREMENTS-REQ-1-SEM-200-1 [SECURITY: data-minimization] THE SYSTEM SHALL return only the patient name, note date and summary fields of each matching clinical note. 1.9. SEC-REQUIREMENTS-REQ-1-SEM-862-1 [SECURITY: ownership-verification] THE SYSTEM SHALL return clinical notes only for patients with whom the requesting physician has an active care relationship. ID ã¯æ¬¡ã®ããã«èªã¿ãŸãã SEC-REQUIREMENTS-REQ-1-EC-89-1-1 ã¯å·Šããé ã«ã SEC (ã»ãã¥ãªãã£ã®å¶çŽ)ã REQUIREMENTS-REQ-1 ( requirements.md ã® 1 ã€ç®ã®èŠä»¶ããRequirement NããšããèŠåºãã®ãã仿§ã§ã¯ãRequirement 1 ã®åºæº 1 ã衚ã REQ-1.1 ã«ãªããŸã)ã EC-89-1 (CWE-89 ã®å¯Ÿå¿ä»ãã«ãã 1 ã€ç®ã® EARS å¶çŽãã³ãã¬ãŒã) ã衚ããŸããæ«å°Ÿã® 1 ã¯æ¡é
ã®çªå·ã§ã1 ã€ã®ãã³ãã¬ãŒããè€æ°ã® EARS ã®è¡ã«å±éããããšãã ãä»ããŸããæ¡é
ã 1 ã€ã ãã® EC-306-1 ã«æ«å°Ÿã®çªå·ãç¡ãã®ã¯ãã®ããã§ããã¬ãã¥ãŒã§è¿œå ããæ¡é
ã§ã¯ã EC ã®ä»£ããã« SEM ã䜿ããŸã (äŸïŒ SEM-862-1 )ã éçºè
ã¯ããŒããã³ã°ããã仿§ã®å·®åãã¬ãã¥ãŒããæ¡é
ããšã«å€æããŸãããšã³ãžã³ã®æ¡é
ã¯ã€ã³ãžã§ã¯ã·ã§ã³ãšèªèšŒãã«ããŒããŠããŸãããè¿ããã£ãŒã«ããçµãã¹ãã ãšç€ºãèšèã¯èŠä»¶ã«ç¡ãã£ãã®ã§ãã¬ãã¥ãŒã§ 1.8 ã远å ããŸã ( --semantic-all ãä»ããŠå®è¡ãããšãCWE-200 ãåè£ãšããŠè¡šç€ºãããŸã)ã仿§ã«åé¡ãç¡ããã°ããšãŒãžã§ã³ãã¯ããããã³ãŒããçæããæšæž¬ã§ã¯ãªãæç€ºããã矩åã«æ²¿ã£ãŠäœããŸããæ¬¡ã®å®è£
åè£ã¯ããã§ã€ã«ã¯ããŒãºã® 401 ã§ãšã³ããã€ã³ããä¿è·ã (1.5ã1.7)ãæ€çŽ¢èªãæ€èšŒã (1.3)ãæç€ºç㪠LIKE ã®ãšã¹ã±ãŒããä»ããŠãã©ã¡ãŒã¿ãšããŠãã€ã³ãã (1.1ã1.2)ã1.8 ãæãããã£ãŒã«ãã ããè¿ããŸãã é©åæ§ã確ãããããã®äžæžãïŒãã©ã¡ãŒã¿åã¯ãšãª (1.1ã1.2)ãå
¥åã®æ€èšŒ (1.3)ãèªèšŒ (1.5ã1.7)ãããŒã¿ã®æå°å (1.8) ã®æ¡é
ãæºãããŠããŸããããŸã å®éã®æ£è
ããŒã¿ã«äœ¿ããã»ã©å®å
šã§ã¯ãããŸããã1.9 ããŸã å®ã£ãŠããªãããã§ãã // Implementation candidate for the security clauses above. authenticate, req.user, // and the schema are application-specific placeholders; still NOT object-level authorized (1.9). app.get('/clinical-notes/search', authenticate, async (req, res) => { // 1.5â1.7: fail closed if the request is not authenticated; return no data if (!req.user) return res.status(401).end(); const raw = String(req.query.patientName ?? '').trim(); // 1.3: reject blank or too-short terms so an empty search cannot match every row if (raw.length < 2) return res.status(400).end(); // 1.1â1.2: parameterized query; escape LIKE metacharacters incl. the // escape char itself, with an explicit ESCAPE clause const term = `%${raw.replace(/[\\%_]/g, c => '\\' + c)}%`; // 1.8: return only the fields the requirement names (data-minimization) const notes = await db.query( `SELECT patient_name, note_date, summary FROM clinical_notes WHERE patient_name ILIKE $1 ESCAPE '\\' ORDER BY note_date DESC`, [term]); res.status(200).json(notes.rows); }); åããããéèŠãªã®ã¯ãããŒã«ãå°ãä»ããã®ã«æžã蟌ãŸãªãã£ããã®ã§ããèªèšŒæžã¿ã®å»åž«ãªã誰ã§ããã©ã®æ£è
ã®èšé²ã§ãèªããŠããŸããŸãã蚺çé¢ä¿ã®ç¢ºèªãç¡ãããã§ããããã¯èªå¯ã®ç¢ºèªã®æ¬ åŠ (CWE-862) ã§ãããã¹ã³ã¢ããããå€ãäžåã£ãŠããŸããããŒã«ã¯ãããæžã蟌ã代ããã«ãã¬ãã¥ã¢ãŒã確ãããã¹ãæå³äžã®åè£ãšããŠç€ºããŸããKiro Power ã§ã¯ãšãŒãžã§ã³ãããCLI ã§ã¯èªåãã¬ãã¥ã¢ãŒã§ãã確èªãããæãã¯ããã®åéã«åãããæ¡é
1.9ãèŠæ±ããŠããå»åž«ãšæå¹ãªèšºçé¢ä¿ã«ããæ£è
ã®èšºçèšé²ã ããè¿ããã«ãªããŸãããããšã¯ãšãªã¯ãèªå¯ã®ç¯å²ã«çµããããã®ã«ãªããŸãã èªå¯ã®ç¯å²ã«çµã£ãã¯ãšãªïŒãã©ã¡ãŒã¿åãããèªèšŒæžã¿ã®èªã¿åãã«ãã¬ãã¥ãŒã§è¿œå ãã蚺çé¢ä¿ã®æ¡ä»¶ (1.9ãCWE-862) ãå ããŠããŸããå¿
èŠãª ILIKE ã®åäœããã PostgreSQL ã®ãã±ãŒã«ãšç
§åé åºãåæã«ããŠããŸããã¹ããŒããšããªã·ãŒã¯èª¬æçšã§ãã // Authorization-scoped query (1.9): parameterized, authenticated read plus the review-added CWE-862 // care-relationship constraint. Schema and policy are illustrative. EXISTS enforces // an ACTIVE relationship without duplicating notes when several rows match. const notes = await db.query( `SELECT cn.patient_name, cn.note_date, cn.summary FROM clinical_notes cn WHERE cn.patient_name ILIKE $2 ESCAPE '\\' AND EXISTS ( SELECT 1 FROM care_relationships cr WHERE cr.patient_id = cn.patient_id AND cr.physician_id = $1 AND cr.status = 'active') ORDER BY cn.note_date DESC`, [req.user.physicianId, term]); ãã®äŸã§ã¯ã決å®çãªããŒããã³ã°ã«ãã£ãŠã2 ã€ã® CWE ã«ããã 7 ã€ã®çŸ©åãæããã«ãªããŸãããããŒã¿ã®æå°åã®ã«ãŒã«ãšããã®åéã«åºæã®èªå¯ã®ã«ãŒã«ã¯ããã¯ãã¬ãã¥ãŒããçãŸããŠããŸãã 仿§ã®ããŒããã³ã°ã¯ã»ãã¥ãªãã£ã®å€æãè£ããã®ã§ããã眮ãæãããã®ã§ã¯ãããŸããã å®è¡æ¹æ³ 仿§ã®ããŒããã³ã°ã¯ Kiro Power ãšããŠããã±ãŒãžåãããŠããã GitHub ã® sample-kiro-spec-security-hardening ãªããžã㪠ã§å
¥æã§ããŸããå®è¡æ¹æ³ã¯ 2 ã€ãããŸãã Kiro Power ããå®è¡ããã æ©èœèŠä»¶ãåºãŸã£ãããKiro ã«ãharden my specsããšé Œã¿ãŸãã harden-spec ã¹ãã«ã¯æ¬¡ã®ããšãè¡ããŸãã 忢±ã®ãšã³ãžã³ãèŠã€ããååã®å©çšæã«ãã«ãããŸãã .kiro/specs/*/requirements.md ã«å¯ŸããŠãšã³ãžã³ãå®è¡ããŸãã ããŒã¯ãŒãã®ç
§åã§ã¯èŠããªãèªå¯ã®ç¢ºèªã®æ¬ åŠã«ã€ããŠãæå³çãªã¬ãã¥ãŒãè¡ããŸãã 远å ããå¶çŽãšã泚æãå¿
èŠãªèŠåããŸãšããŠå ±åããŸãã CLI ããå®è¡ããã cwe-to-spec-mapping-library/ ã§ npm install ã 1 åå®è¡ããŠãã«ãããŸãããã®åŸãã³ã³ãã€ã«æžã¿ã® CLI ã« spec ãã¡ã€ã«ã specs ãã£ã¬ã¯ããªã絶察ãã¹ã§æå®ããŸãã node dist/cli/harden-requirements.js /abs/path/to/.kiro/specs/ --semantic-candidates --semantic-candidates ãã©ã°ãä»ãããšãèªå¯ã«é¢ãã匱ãäžèŽãã¬ãã¥ãŒçšã«è¡šç€ºããŸããããã¡ã€ã«ã«ã¯æžã蟌ã¿ãŸããã ã©ã¡ãã®æ¹æ³ã§ãã requirements.md ããã®å Žã§ç·šéããŸãããã®ãããããŒããã³ã°ãããŒãžã§ã³ç®¡çãšã³ãŒãã¬ãã¥ãŒã®æµãã«çµã¿èŸŒããŸãããšã³ãžã³ã¯è¡ã远å ããã ãã§ãèŠä»¶ã倿Žãåå²ãäžŠã¹æ¿ãããããšã¯ãããŸãããå³å¯ãª EARS ã«ãªã£ãŠããªãèŠä»¶ã¯ãæžãæããã«å ±åããŸããgit ã®å·®åã¯å¿
ãã¬ãã¥ãŒããŠãã ãããåå®è¡ã§ã¯å·®åã ããåŠçããŸããé ããã¬ãã¥ãŒããŒã«ãŒã«ããŒããã³ã°æžã¿ã®èŠä»¶ãèšé²ãããŠããã®ã§ã仿§ã®ããŒããã³ã°ã¯æ°ããèŠä»¶ãšå€æŽãããèŠä»¶ã ããããŒããã³ã°ããã¬ãã¥ã¢ãŒãåé€ããå¶çŽãåã³ææ¡ããããšã¯ãããŸãããä»ãã仿§ã«ãã®ãŸãŸå®è¡ããŠãã ãããããŒããã³ã°åã®ã³ããŒãåã£ãŠããå¿
èŠã¯ãããŸããã å³ 3: Kiro IDE ã«ã€ã³ã¹ããŒã«ãã仿§ã®ããŒããã³ã°ã® Powerã å³ 4: Kiro IDE ã§ä»æ§ã®ããŒããã³ã°ã® Power ãåŒã³åºãã å³ 5: ããŒããã³ã°ããèŠä»¶ã«å¯Ÿã㊠Requirements Analysis ãå®è¡ããã 仿§ã®ããŒããã³ã°ã®äœ¿ãã©ããïŒã°ãªãŒã³ãã£ãŒã«ãããã©ãŠã³ãã£ãŒã«ããã¢ããã€ãŒãŒã·ã§ã³ 仿§ã®ããŒããã³ã°ã¯ã³ãŒãã§ã¯ãªã仿§ã«å¯ŸããŠåãã®ã§ãåãããŒããã³ã°ã®ã¹ãããã 3 çš®é¡ã®äœæ¥ã«çµã¿èŸŒããŸããéãã®ã¯ãèŠä»¶ãã©ãããæ¥ãããšã仿§ã®ããŒããã³ã°ããã€å®è¡ãããã ãã§ãã ã°ãªãŒã³ãã£ãŒã«ã (æ°èŠãããžã§ã¯ã)ã ããŒããã³ã°ã¯ãã³ãŒããæžãåã®ä»æ§ã®ã¯ãŒã¯ãããŒã® 1 ã¹ããããšããŠå®è¡ããŸããEARS ã®èŠä»¶ãåãåã£ã仿§ã®ããŒããã³ã°ããè¶³ããªã [SECURITY: âŠ] ã®å¶çŽã远å ãããšãŒãžã§ã³ãã¯ããŒããã³ã°ããã仿§ã«æ²¿ã£ãŠå®è£
ããŸããã»ãã¥ãªãã£ã®æå³ã¯ãåŸããä»ãè¶³ãããã®ã§ã¯ãªããæåã®ã³ããããã仿§ã«å
¥ã£ãŠããŸãã ãã©ãŠã³ãã£ãŒã«ã (æ¢åã®ã³ãŒã)ã èŠä»¶ã远å ãŸãã¯å€æŽããããæ¢åã®ä»æ§ã«å¯ŸããŠä»æ§ã®ããŒããã³ã°ãåå®è¡ããŸããæ°ããèŠä»¶ãšå€æŽãããèŠä»¶ã ããããŒããã³ã°ãããã¬ãã¥ãŒæžã¿ã®èŠä»¶ã¯ãã®ãŸãŸæ®ããŸãã远å ããã SEC- ã®å¶çŽã¯ãæ©èœã®äœæ¥ãšäžŠãã§ã¬ãã¥ãŒã§ããå·®åãšããŠçŸããã®ã§ã倿Žã¯ä¿®æ£ããéšåã ãã«åãŸããŸãã仿§ã®ããŒããã³ã°ãèªãã®ã¯ã³ãŒãã§ã¯ãªã仿§ãªã®ã§ãææ¡ããã矩åãæ¢åã®ã·ã¹ãã ã®å®éã®åäœãšåã£ãŠãããã 1 ã€ãã€ç¢ºãããŠãã ãããé£ãéã£ãŠããã°ãã³ãŒãã®æãããåãããŠèª¿æŽãã¹ãå¶çŽãèŠã€ãã£ãããšã«ãªããŸãã 仿§é§åã®ã¢ããã€ãŒãŒã·ã§ã³ (ã¬ã¬ã·ãŒã®æžãçŽã)ã ãŸãã¬ã¬ã·ãŒã·ã¹ãã ããèŠä»¶ãåãåºã㊠EARS ã®ä»æ§ã«ããŸããããšãã° AWS Transform ã䜿ããŸããç¶ããŠãåå®è£
ã®åã«ãåãåºããèŠä»¶ã仿§ã®ããŒããã³ã°ã§ãŸãšããŠããŒããã³ã°ããŸããã¢ããã€ãºããã·ã¹ãã ã¯ãå
ã®æããåŒãç¶ãããæç€ºçã«ããŒããã³ã°ããã仿§ã«æ²¿ã£ãŠäœãçŽãããŸãã å³ 6: 3 çš®é¡ã®ãããžã§ã¯ãã§ä»æ§ã®ããŒããã³ã°ãåŒã³åºãå ŽæãããŒããã³ã°ã®ã¹ããã (ãªã¬ã³ãž) ã¯ã©ããåãã§ãéãã®ã¯èªã¿èŸŒã仿§ã®åºã©ããã ãã§ãã ãããã« ä»æ§ã®ããŒããã³ã°ã¯ãæ¯èŒçæ°ããåéãžã®æåã®äžæ©ã§ãã仿§ãã®ãã®ãå®å
šã«ããããã䜿ã£ãŠã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããèšè𿮵éããå®å
šãªã³ãŒããžå°ãåéã§ãã仿§ã¯äººããšãŒãžã§ã³ããæåã«æ±ãææç©ãªã®ã§ãããããå§ããã®ãé©åã ãšç§ãã¡ã¯èããŠããŸãããã ãã仿§ã®ããŒããã³ã°ã¯ç 究段éã®ãããã¿ã€ãã§ããã1 ã€ã®ä»®èª¬ã§ãããã®ããã°ã§ã¯ã仿§ã®ã¬ãã«ã§å¯Ÿçãå
¥ããããšã®æçŸ©ãè«ããŸããã ãŸãã仿§ã®ããŒããã³ã°ã¯ãšãŒãžã§ã³ãããå®å
šãªã³ãŒããåŸãå¯äžã®æ¹æ³ã§ã¯ãªããã»ãã®æ¹æ³ãšçµã¿åããããšãã«æã广ãçºæ®ããŸããè
åšã¢ããªã³ã°ã¯ãããŒã¯ãŒãã®ç
§åã§ã¯èŠéãããèšèšã¬ãã«ã®ãªã¹ã¯ãæããŸããKiro ã® steering ãã¡ã€ã«ã®ããã«ããšãŒãžã§ã³ãã®ã³ã³ããã¹ãã«å
¥ããã»ãã¥ã¢ã³ãŒãã£ã³ã°ã®ã¬ã€ãã³ã¹ã¯ãæžãããæç¹ã§ã³ãŒããæ¹åã¥ããŸããå®å
šãªæ¢å®å€ãæã€ãã¬ãŒã ã¯ãŒã¯ã¯ããã¹ãçš®é¡ããšåãé€ããŸããåŸæ®µã§ã¯ãSASTãDASTãäŸåé¢ä¿ã®ã¹ãã£ã³ãAI ãæŽ»çšããã³ãŒãã®ã»ãã¥ãªãã£ã¹ãã£ã³ (AWS Continuum ãæäŸãããã®ãªã©)ãã»ãã¥ãªãã£ãã¹ãã人ã«ããã¬ãã¥ãŒããäœããããã®ãåŒãç¶ã確èªããŸãã仿§ã®ããŒããã³ã°ã¯ãæå³ãæžãçããããæç¹ã«ãã 1 ã€ã®å±€ãå ããŸãã ããŒããã³ã°ããã仿§ã¯ãªããžããªã«æ®ãã®ã§ãã¿ã¹ã¯ãå®è¡ããåŸããããããã®çŸ©åã®çç±ãç£æ»ã§ããŸããããŒã ã§ SDD ãå°å
¥ããŠãããªããå®äºã®å®çŸ© (definition of done) ã«ä»æ§ã®ã»ãã¥ãªãã£ã¬ãã¥ãŒãå ããŠãã ããããšãŒãžã§ã³ãã¯æåããã»ãã¥ãªãã£ãçµã¿èŸŒããŸãããããã«ã¯ãã»ãã¥ãªãã£ãäœãæå³ããã®ããç§ãã¡ãäŒããå¿
èŠããããŸãã 翻蚳è
ã«ã€ããŠ çš²ç° å€§éž â ããªãã AWS Japan ã§åã Kiro ããããªãæããœãªã¥ãŒã·ã§ã³ã¢ãŒããã¯ããæ®æ®µã¯è£œé æ¥ã®ã客æ§ãæ¯æŽããŠããŸãããã®æŽ»åã®åããæè¿ã¯ AI é§åéçºã©ã€ããµã€ã¯ã« (AI-DLC) ã®æ¥æ¬ã®ã客æ§ãžã®åžææŽ»åããã€ã€ã Kiro ã®ããã° ãªã©ãå·çããŠããŸãã
PostgreSQLãµããŒãã§ã¯ãSELECTãçªç¶é
ããªã£ãããããŒã¿ããŒã¹ãå
šäœçã«é
ãæé垯ããããããããã®å®è¡æéã5åãã2æéã«ãªã£ãããªã©ã®åãåãããããã ããŸãã ãã®éã調æ»ãããããã®æ
å ±ãšããŠã ...
ã¯ããã« ããã«ã¡ã¯ãæ ªåŒäŒç€ŸãšããªãŒã§çŽ1ãµæéã€ã³ã¿ãŒã³ã·ããã«åå ããŠããå±±äžãšç³ããŸãã ä»åã®ã€ã³ã¿ãŒã³ã§ã¯ãAIãæŽ»çšããŠç€Ÿå
ã®æ¥åå€é©ãé²ãããAX(AI Transformation)ãããžã§ã¯ããã«åå ããŸãããäž»ã«åãçµãã ã®ã¯ã次ã®2ã€ã§ãã å¶æ¥æŽ»åïŒEventïŒã®èšé²ãå¹çåããããã®ãSlack botã®ããã¯ãšã³ãèšèšã»å®è£
æ¡ä»¶ïŒOpportunityïŒã®èšé²ãå¹çåããããã®ãææ¡è³æããã®æ
å ±æœåºã®æ€èšŒ ãã®èšäºã§ã¯ãéçºã®èæ¯ãæè¡çãªåãçµã¿ã«å ããŠãåããŠã®æè¡ãå¶æ¥æ¥åãã©ã®ããã«çè§£ãã瀟å¡ã®æ¹ãšçžè«ããªããé²ãããã«ã€ããŠã玹ä»ããŸãã ãããžã§ã¯ãã®èæ¯ AXãããžã§ã¯ãã§ã¯ãAIãæŽ»çšããŠå¶æ¥æ
åœè
ã®ç®¡çæ¥åçã®è² æ
ãæžããã顧客ãžã®ã¢ãããŒãã«äœ¿ããæéãå¢ããããšã§ãæçµçã«ã¯å£²äžã®å¢å ã«è²¢ç®ããããšãç®æããŠããŸãããã®ç¬¬äžæ©ãšããŠåãçµãã ã®ããSalesforceãžã®å¶æ¥æŽ»åã»æ¡ä»¶æ
å ±ã®èšé²ãæ¯æŽããä»çµã¿ã§ãã Salesforceã¯ã顧客æ
å ±ãå¶æ¥æŽ»åãæ¡ä»¶ã®é²æãªã©ã管çãããã©ãããã©ãŒã ã§ããå¶æ¥æ
åœè
ã¯ãäŒè°ãã¡ãŒã«ã§ã®ããåããæ¯ãè¿ãããã®å
容ãç»é¢ããæäœæ¥ã§èšé²ããå¿
èŠããããŸãããæŽ»åã®å
容ãæãåºããé¢é£ããé¡§å®¢ãæ¡ä»¶ã確èªããªããå
¥åããäœæ¥ã«ã¯å€§ããªåŽåãšå¿ççè² æ
ãããããŸãã ããã§ãããŸããŸãªå Žæã«æ£åšããæ
å ±ãéçŽããAIãäœæããç»é²åè£ãSlackäžã§ç¢ºèªã»æ¿èªããããšã§ãå
¥åã®è² æ
ãæžããä»çµã¿ã¥ãããç®æããŠããŸãã ã·ã¹ãã ã®å
šäœåãšæ
åœç¯å² å¶æ¥æŽ»åã®æ
å ±ã¯ãZoomã§ã®äŒè°ãGmailãªã©ãè€æ°ã®ãœãŒã¹ã«åãããŠããŸããæ¢åã®èšèšã§ã¯ããããã®æ
å ±ãDatabricksã«åã蟌ã¿ãETLã§çµ±åã»å å·¥ããŸããããã«AIã®å€æãå ããçŽã¥ãå
ãšãªãååŒå
ãæ
åœè
ãæ¡ä»¶ã®åè£ãå«ãGoldããŒãã«ãäœæããŸãã GoldããŒãã«ã§ã¯ãå¶æ¥æŽ»å1ä»¶ã1è¡ã«å¯Ÿå¿ããŸãããã®æ
å ±ãå¶æ¥æ
åœè
ã«æç€ºããå
容ã確èªããŠæ¿èªããŠããã£ãåŸã«Salesforceãžç»é²ããããšããæµãã§ãã æ
å ±ãœãŒã¹ããSalesforceãžã®ç»é²ãŸã§ã®ã·ã¹ãã å
šäœå ETLããã¢ããªã±ãŒã·ã§ã³ã«æž¡ãããŒã¿ãŸã§ã®èšèšã»å®è£
ã¯ãäž»ã«ã¡ã³ã¿ãŒã®æ¹ãæ
åœããŸãããç§ã¯ãã®èšèšãçè§£ããäžã§ãç»é²åè£ãSlackã«æç€ºããå¶æ¥æ
åœè
ã®æäœãåãåã£ãŠSalesforceã«ç»é²ããããã¯ãšã³ããæ
åœããŸããã ãŸããå¶æ¥æŽ»åãšã¯å¥ã«ãæ¡ä»¶æ
å ±ã®èšé²ãæ¯æŽãããããSlackããã®æ
å ±ååŸãã€ãã©ã€ã³ã®å®è£
ãšãææ¡è³æããã®æ
å ±æœåºã®æ€èšŒã«ãåãçµã¿ãŸããã èšèšã»å®è£
ã«åãçµããŸã§ 以åããETLã«ã¯èå³ããã£ããã®ã®ãå®éã«è§Šããã®ã¯ä»åãåããŠã§ããããŸãã¯ã段éçã«ããŒã¿å質ãé«ãã ã¡ããªãªã³ã¢ãŒããã¯ã㣠ã®èãæ¹ããDatabricksã§ã®ãã€ãã©ã€ã³ã®èšè¿°æ¹æ³ãåŠã¶ãšããããå§ããŸãããæ¢åã®å®è£
ãããã¥ã¡ã³ããèªã¿ãªãããã©ã®æ®µéã§äœã®æ
å ±ãäœãããã¢ããªã±ãŒã·ã§ã³ãã©ã®ããŒã¿ã䜿ãã®ãããææ¢ããªãã確èªããŠãããŸããã åæã«ãå¶æ¥æ¥åã®çè§£ãå¿
èŠã§ãããå¶æ¥æ
åœè
ã顧客ãžã®ææ¡ã«äœ¿ãè³æãSalesforceã®å
¥åç»é¢ãçŽæ¥è§Šã£ãŠç¢ºèªããããå¶æ¥æ
åœè
ãšã®ããŒãã£ã³ã°ã«åå ãããŠããã ãããããŠãå®éã«ã©ã®ãããªæ
å ±ãæ±ã£ãŠããã®ããåŠã³ãŸããã æåã¯åãããªãããšã°ããã§ããããã¡ã³ã¿ãŒã®æ¹ã¯å®äŸäŒã ãã§ãªããéœåºŠã®çžè«ã«ãå¿«ã察å¿ããŠãã ãããŸãããå®è£
ãèªã¿ãæ¥åã®æ
å ±ã確èªããåãããªãç¹ãçžè«ããããšãç¹°ãè¿ãäžã§ãå°ããã€ãããžã§ã¯ãã®å
šäœåãšãèªåã®æ
åœããéšåãçè§£ã§ããããã«ãªããŸããã å¶æ¥æŽ»åã®èšé²ãæ¯æŽããSlack bot ç»é²åè£ã®æç€ºããSalesforceãžã®æžã蟌ã¿ãŸã§ Slack botã¯ãGoldããŒãã«ãšåæãã Lakebase ãåç
§ããŸããã¢ããªã±ãŒã·ã§ã³åŽããã¯PostgreSQLãšããŠã¢ã¯ã»ã¹ã§ãããããããã¯ãšã³ãã¯å®æçã«LakebaseãããŒãªã³ã°ããæ°ãã«æç€ºãã察象ããªããã確èªããŸãã æçš¿å¯Ÿè±¡ãããã°ãå¶æ¥æŽ»åã®å
容ãšãé¢é£ããååŒå
ãæ¡ä»¶ãªã©ã®åè£ãSlackã«è¡šç€ºããŸããå¶æ¥æ
åœè
ãåè£ãéžæããŠæ¿èªãããšãããã¯ãšã³ãããã®æäœãåãåããSalesforce APIãéããŠå¶æ¥æŽ»åãç»é²ããŸãã å®è£
ã«ã¯ãSlackã¢ããªéçºçšã®ãã¬ãŒã ã¯ãŒã¯ã§ãã Bolt for Python ãå©çšããŸãããSlackã§ã®ãã¿ã³æäœãªã©ã¯WebSocketæ¥ç¶ã䜿ãSocket Modeã§åãåãããã«ããŠãããã€ã³ã¿ãŒãããã«ããŒããå
¬éããã«Slackãšããåããããããšãã§ããŸãã ãããã€å
ã«ã¯Databricks Appsãéžã³ãŸãããETLãšåããã©ãããã©ãŒã ãå©çšããããšã§ãçŽ æ©ããããã¿ã€ããäœæã§ãããšå€æããããã§ããäžæ¹ã§ãä»åŸã®éçšã³ã¹ãã®èгç¹ãããAWS ECSãªã©ãžã®ç§»è¡ãæ€èšãå¿
èŠã ãšèããŠããŸãã å¶æ¥æ
åœè
ã確èªãããããã©ãŒã ãèãã å®è£
ã§å·¥å€«ããã®ã¯ãSlackã«è¡šç€ºãããã©ãŒã ã§ããå¶æ¥æ
åœè
ã«ãã£ãŠã¯ã1æ¥ã«10ä»¶ã»ã©ã®æçš¿ãå±ãå ŽåããããŸããAIãETLã§æç€ºããåè£ã¯æå€§3ä»¶ã«æããããŠããŸãããããã§ãåè£ãå€ããšã¡ãã»ãŒãžã®çžŠå¹
ã倧ãããªããŸããå
¥åã®è² æ
ãæžãããšããç®çãèãããšãSlackã§ã®æ¿èªã®å¿ççããŒãã«ãæããããšã¯éèŠã§ãããšèããŸããã åè£ã®è¡šç€ºæ¹æ³ãšããŠãã©ãžãªãã¿ã³ãšã»ã¬ã¯ãã¡ãã¥ãŒãæ¯èŒããŸãããä»åã¯ãéžæè¢ãäžèЧã§ããããšãšãã¹ããŒããã©ã³ãšPCã§èŠãæ¹ã倧ããå€ãããªãããšãéèŠããã©ãžãªãã¿ã³ãæ¡çšããŸãããã»ã¬ã¯ãã¡ãã¥ãŒã¯ã³ã³ãã¯ãã«åãŸããã®ã®ãPCã§ã¯åè£ã®ããã¹ãã®çç¥ãçºçããŠããŸãããã奜ãŸãããããŸããã§ããã ãã®äžã§ã衚瀺ããæ
å ±ãæžãã工倫ãè¡ããŸãããååŒå
äŒæ¥ã1ç€Ÿã«æ±ºãŸã£ãŠããå Žåã¯ãååŒå
äŒæ¥ã1è¡ã§ç€ºããæ¡ä»¶ã ããéžãã§ããããŸããåè£ã1ä»¶ãããªãé
ç®ããåãããã«1è¡ã§è¡šç€ºããŸããæ±ºãŸã£ãŠããé
ç®ãéžæè¢ã«ããªãããšã§ããã©ãŒã ã®è¡æ°ãæžãããŸããã Slackã«è¡šç€ºãããå¶æ¥æŽ»åã®ç»é²ãã©ãŒã æ€èšŒç°å¢ã§Slackã§ã®æ¿èªããSalesforceã®æžã蟌ã¿ãŸã§åäœããããšã確èªãããªãªãŒã¹çŽåã®ãšãããŸã§å®è£
ããããšãã§ããŸããã ææ¡è³æããã®æ¡ä»¶æ
å ±æœåºã®æ€èšŒ äœãæœåºãããã®ã Salesforceã«ã¯ãå¶æ¥æŽ»åã«å ããŠæ¡ä»¶ïŒOpportunityïŒãšããæ
å ±ãèšé²ããŸããæ¡ä»¶ã§ã¯ãã©ã®å¶æ¥æ
åœè
ããã©ã®é¡§å®¢ã«ãã©ã®åæãææ¡ããçŸåšã©ã®å泚ãã§ãŒãºã«ããããªã©ã管çããŸãã æ¡ä»¶æ
å ±ãååŸãããœãŒã¹ãšããŠãSlackã®æçš¿ãGoogle Slidesã®ææ¡è³æãæçšã§ãããããã§ãSlackããã®æ
å ±ååŸãã€ãã©ã€ã³ã®å®è£
ãšäžŠè¡ããŠãææ¡è³æããæ
å ±ãæœåºããæ¹æ³ãæ€èšŒããŸãããææ¡è³æã«ã¯ãã©ã®é¡§å®¢ã«ãã©ã®åæãããããã§ææ¡ããããšãã£ãæ
å ±ãå«ãŸããŸããä»åã¯ãLLMã䜿ã£ãŠè³æã®å
å®¹ãææ¡ã¡ãã¥ãŒã®åè£ãšç
§åãã該åœããã¡ãã¥ãŒãã©ã®çšåºŠæ£ç¢ºã«æœåºã§ãããã確èªããŸããã æ€èšŒæ¹æ³ãšã³ã¹ãåæžã®ä»®èª¬ è©äŸ¡ã®ããã«ã9ã€ã®ææ¡è³æãšææ¡ã¡ãã¥ãŒã®åè£ãèªåã§ç¢ºèªãã察å¿ããåæãçŽã¥ããæ£è§£ããŒã¿ãäœæããŸãããææ¡ã®åææ®µéã§ã¯è€æ°ã®ãã©ã³ãæç€ºãããå Žåãããããã該åœããåè£ãåãããŒããªãããš(é«ãåçŸç)ãéèŠããŸããã è³æã«ã¯ãææ¡å
容ã«çŽæ¥é¢ä¿ããªãæ
å ±(åžå Žèª¿æ»ããŒã¿ãåºåæŠç¥ãªã©)ãå«ãŸããŠããŸãããã®ãããLLMã«æž¡ãåã«äžèŠãªæ
å ±ãåãé€ãã°ãå
¥åããŒã¯ã³ãæžãããŠã³ã¹ãäœæžã«ã€ãªããã®ã§ã¯ãªããããšèããŸãããããã§ãé«é/äœã³ã¹ãã§å€æãäžãããšã®ã§ããã Typesafe AI ã®Jevã«ãããã£ã«ã¿ãªã³ã°ãååŠçã«å ããå Žåãšãå ããªãå Žåãæ¯èŒããŸããããŸããLLMã®æ§èœã®éããthinkingã®æç¡ã«ããçµæã®éãã確èªããŸãããææ¡è³æã¯Google Slides APIãä»ããŠååŸããJSONãããã¹ãã«å€æããäžãLLMã«å
¥åããŠããŸãã Jevã«ã¯äŸ¡æ Œæ
å ±ã®æç¡ãã¡ãã¥ãŒæ
å ±ã®æç¡ã®èгç¹ããã¹ã©ã€ããè©äŸ¡ãããéŸå€0.5ã§ãã£ã«ã¿ãªã³ã°ããŠããŸããå®è¡å¯Ÿè±¡ã®ã¹ã©ã€ãã«ã¯ãæ£è§£ããŒã¿ãã€ãã9ã€ã®è³æã«å ããã³ã¹ã枬å®çšã«6ä»¶ãå ããèš15ä»¶ãšããŠããŸãã æ€èšŒçµæ è©äŸ¡ã«ã¯åçŸçãšF1ã¹ã³ã¢ã䜿ããŸãããåçŸçã¯ãæ£è§£ããŒã¿ã®åæã®ãã¡LLMãæœåºã§ããå²åã§ããåãããŒããå°ãªãã»ã©é«ããªããŸããé©åçã¯ãLLMãæœåºããåæã®ãã¡æ£è§£ã ã£ãå²åã§ããF1ã¹ã³ã¢ã¯åçŸçãšé©åçã®èª¿åå¹³åã§ãåãããŒããšèª€ã£ãæœåºãã©ã¡ããå°ãªãã»ã©é«ããªããŸããã©ã®ææšã1ã«è¿ãã»ã©ããçµæã§ãã ã¢ãã« Jev åçŸç F1 ã³ã¹ãïŒä»¶ æéïŒä»¶ gpt-6-luna thinking ãªã ãªã 0.931 0.718 Â¥0.18 6.1 ç§ gpt-6-luna thinking ãªã ãã 0.797 0.721 Â¥0.24 11.1 ç§ gpt-6-luna thinking ãã ãªã 0.972 0.862 Â¥0.30 25.0 ç§ gpt-6-luna thinking ãã ãã 0.794 0.733 Â¥0.34 27.2 ç§ gpt-5-6-terra thinking ãã ãªã 0.954 0.788 Â¥5.09 14.6 ç§ gpt-5-6-terra thinking ãã ãã 0.757 0.731 Â¥3.08 17.1 ç§ ä»åã®æ€èšŒã§ã¯ã軜éã¢ãã«( gpt-6-luna )ã§ã¯Jevã«ããåŠçã³ã¹ããäžä¹ããããã³ã¹ãã¯ãããå¢å ããŸãããããéãã¢ãã«( gpt-5-6-terra )ã§ã¯ãå
¥åããŒã¯ã³ã®åæžå¹æãçŸããŠããŸããäžæ¹ãä»å詊ãã軜éã¢ãã« gpt-6-luna ã§ããæ€èšŒçšããŒã¿ã«å¯ŸããŠã¯ååé«ããããã³ã°ç²ŸåºŠãåŸãããŸãããã³ã¹ãã®å
èš³ã確èªãããšãthinkingãå«ãåºåããŒã¯ã³ã®ã³ã¹ããæ¯é
çã§ãããthinkingãç¡å¹ã«ããå Žåã¯ãããã³ã°ç²ŸåºŠã倧ããäœäžããŠããŸãã ãŸããJevãå©çšããå Žåã®åçŸçã®äœäžã確èªãããã³ã³ãã¯ã¹ããåžèã«ãªãããšã§åãããŒããçããŠããŸãã ãã®çµæãããä»åã®æ€èšŒæ¡ä»¶ã§ã¯ãJevã«ãããã£ã«ã¿ãªã³ã°ãè¡ãããthinkingãæå¹ã«ãã軜éã¢ãã«ãäœ¿ãæ§æããããšèããŠããŸãã ä»åŸã®èª²é¡ æ€èšŒãšå¶æ¥æ
åœè
ãžã®èãåããé²ããäžã§ã顧客ã«èŠããè³æã«ã¯ãææ¡ãç®çãšããªããã®ãæ··ãã£ãŠããããšãåãããŸãããä»å詊ãããè³æå
ã®äžèŠãªæ
å ±ãæžãããçšéãšã¯å¥ã«ããåŠç察象ãšãªãææ¡è³æãã©ãããå€å¥ãããçšéã§JevãæŽ»çšã§ããªãããä»åŸæ€èšã®äœå°ããããšèããŠããŸãã ãŸããä»åäœæããæ€èšŒã»ããã§ã¯é«ã粟床ãåŸããããã®ã®ãåæã®åç§°ã«ã¯å€çŸ©æ§ããããæééå®ã®ãã®ãååšããŸããå¶æ¥ããŒã ã®äžã§å
±æãããŠããæé»ç¥ããããã³ã°ã«åœ±é¿ããå¯èœæ§ãããã粟床ãããã«é«ããããã«ã¯ãããããã®ã¡ãã¥ãŒã®å®çŸ©ãªã©ã倿ã«å¿
èŠãªæ
å ±ãæŽåããããšãå¿
èŠã ãšæããŸããã AXãããžã§ã¯ãå
šäœãšããŠã¯ã宿ããè³æããæ
å ±ãæœåºããã ãã§ãªããææ¡è³æãäœãåã®æ®µéããæ¯æŽããæ
å ±ãèšé²ã§ããä»çµã¿ãèããããšããä»åŸã®æ¹åæ§ã ãšèããŠããŸãã ã€ã³ã¿ãŒã³ãéããŠæããããš ããŒã¿åºç€ããã¢ããªã±ãŒã·ã§ã³ãŸã§ãã€ãªãçµéš ä»åã®ã€ã³ã¿ãŒã³ã§ã¯ã以åããèå³ã®ãã£ãETLãå«ããDatabricksã«è§Šããããšãã§ããŸãããè€æ°ã®ãœãŒã¹ããçµ±åããããŒã¿ããSlack botãšããŠå©çšãããšãããŸã§ã€ãªããããã®ã¯ã貎éãªçµéšã§ããã ä»åã¯æ¢åèšèšãçè§£ããããšã§ç²Ÿäžæ¯ãªéšåããããŸããããä»åŸã¯ETLå
šäœã®èšèšã«ãææŠã§ãããããç¥èãšå®åã身ã«ã€ããŠããããã§ãã ããŒã ã§èšèšãå
±æããæ
åœç¯å²ãèããé£ãã ãããŸã§ãè€æ°äººã§1ã€ã®ãããžã§ã¯ãã«åãçµã¿ã䞊è¡ããŠéçºããçµéšããããŸããã§ãããä»åã¯ã瀟å¡ã®æ¹ãšèšèšãå
±æãããã®å
容ãçè§£ããäžã§å¿
èŠãªèšèšã«ã€ããŠçžè«ããããšãããããžã§ã¯ãã®ç®çãšè²¬ä»»ç¯å²ããèªåã®ããã¹ãããšãæŽçããããšã«é£ãããæããŸããã èªåã®å®è£
ãã·ã¹ãã å
šäœã®äžã§ã©ã®åœ¹å²ãæã€ã®ããèããèªèãåãããªããé²ããçµéšãã§ããããšã¯ãä»åŸã®éçºã«ãã€ãªããåŠã³ã«ãªããŸããã æ¥åã»ãã¡ã€ã³ã®çè§£ããã£ãšå€§åã«ããããšæã£ã å¶æ¥æ¥åãSalesforceã®ä»æ§ãçè§£ããã«ã¯ãæ³å以äžã«æéãããããŸãããäžæ¹ã§ãå¶æ¥æ
åœè
ãå®éã«äœ¿ãè³æãç»é¢ã確èªããããšã§ãå¿
èŠãªæ
å ±ãä»çµã¿ãå°ããã€çè§£ã§ããããã«ãªããŸãããç§ãæ
ã£ãæ¥åã®äžã§ããSlackã®UIã§æç€ºãã¹ãæ
å ±ã®å€æãææ¡è³æããã®æ
å ±æœåºã®æ€èšŒã«ãããŠãæ¥åçè§£ã®å¿
èŠæ§ã匷ãæããŸããã ãšããªãŒã§ã¯ããžãã¹ãµã€ããšã®è·é¢ã®è¿ããæããæ©äŒãããã誰ã®ã©ã®ãããªæ¥åãæ¯æŽããã®ããå
·äœçã«æããªããåãçµããããšããèªåã®ã¢ãããŒã·ã§ã³ã«ãã€ãªãããŸããã æ¯ãè¿ããšããã£ãšæ©ã段éã§å¶æ¥è³æãå®éã®å
¥åäœæ¥ãšãã£ãäžæ¬¡æ
å ±ã«åœããå¿
èŠæ§ã«æ°ã¥ããã°ããã£ããšæããŸããããããã®éçºã«åœãã£ãŠãæè¡ã®çè§£ã ãã§ãªããã§ããéãäžæ¬¡æ
å ±ã«è§Šããäœããªãå¿
èŠãªã®ãããçè§£ã»å€æã§ããããã«å¿ãããããããšèããŠããŸãã ãããã« ä»åã®ã€ã³ã¿ãŒã³ã§ã¯ã瀟å
ã®æ¥åå€é©ã«åãçµããããžã§ã¯ãã«åå ããSlack botã®éçºãšæ¡ä»¶æ
å ±æœåºã®æ€èšŒã«åãçµã¿ãŸãããåããŠã®æè¡ãæ¥åã«è§Šããªããã瀟å¡ã®æ¹ãšçžè«ããŠé²ããçµéšãã§ããŸããã ãŸããæ¥åå€ã§ãããŸããŸãªç€Ÿå¡ã®æ¹ãšã話ãããæ©äŒãçšæããŠããã ãããšããªãŒã®ããšã ãã§ãªããä»åŸã®ãã£ãªã¢ã«ã€ããŠèãããã£ãããããã ããŸããã AXãããžã§ã¯ãã®çæ§ã¯ãããæ§ã
ãªåœ¢ã§é¢ãã£ãŠãã ãã£ãçæ§ã1ãµæãšããçãéã§ããããæ¬åœã«ããããšãããããŸããã
åç»
該åœããã³ã³ãã³ããèŠã€ãããŸããã§ãã











