ã¯ããã« ããã«ã¡ã¯ãInsight Edgeã®å°æãŸãã¿ã€ã§ãã â» æ¬èšäºã¯PoCæ¡ä»¶ã§ã®æè¡æ€èšŒã®å
容ã§ãããåçšç°å¢ã§ã®å®çšæ§ã¯ä»åŸã®æ€èšŒèª²é¡ã§ã Claude Codeã®ãããªã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã«å®è£
ãä»»ããå Žé¢ã¯çãããªããªããŸãããäžæ¹ã§ãå®è£
ãä»»ããããšã®ãæå³ã©ããã«åããŠãããã確èªããããã¬ãã¥ãŒããããããŒãžããŠåŸçä»ããããããšãã£ãäœæ¥ã¯ãäººã®æã«æ®ããã¡ã§ãã ä»åã¯ãããPoCæ¡ä»¶ã®éçºã§ãã¿ã¹ã¯ã®èµ·ç¥šããã¬ãã¥ãŒãããŒãžäŸé ŒãŸã§ãAIãšãŒãžã§ã³ãã«ä»»ããä»çµã¿ãäœã£ãŠéçšããŸãããæ¬èšäºã§ã¯ãèæ¯ãèšèšã®èãæ¹ã§ããããŒãã¹ãšã³ãžãã¢ãªã³ã°ãå
·äœçãªä»çµã¿ãå°å
¥çµæãšä»åŸã®èª²é¡ã玹ä»ããŸãã ãªããæ¬èšäºã¯å®åã§è¡ã£ãå
容ãããšã«ããŠããŸãããæ¡ä»¶ãç¹å®ã§ããªããããæ¡ä»¶ã®å
容ã¯ãŒãããŠæžããŠããŸãã TL;DR ã¿ã¹ã¯ã®èµ·ç¥šãèšèšãå®è£
ãã¬ãã¥ãŒãããŒãžäŸé ŒãåŸçä»ããAIãšãŒãžã§ã³ãã«ä»»ãã人ã¯ãplanãšDRã®ã¬ãã¥ãŒããšãããŒãžãã®å€æã ããæ
åœãã ä»çµã¿ã§åŒ·å¶ããå¶çŽ( deny ãããã¯ãCI)ãšãããã³ããåŽã§èŠå®ããæ¯ãèã(ã¬ãã¥ãŒã®3åé¡ãªã©)ãåããŠèšèšãã PoCã§ã®ææã§ãããåçšã®éçºã§éçšãããã¯ä»åŸã®æ€èšŒèª²é¡ ç®æ¬¡ èæ¯ ããŒãã¹ãšã³ãžãã¢ãªã³ã°ã掻çšããéçº å
·äœçãªä»çµã¿ å°å
¥çµæ ä»åŸã®èª²é¡ ãŸãšã åèæç® èæ¯ 察象ã¯ãããã¥ã¡ã³ããåæããæææ±ºå®ãæ¯æŽããã¬ããŒããäœãPoCã§ããããã¯ãšã³ãã¯FastAPIãããã³ããšã³ãã¯Reactãåæã¯ã¯ã©ãŠãäžã®LLMã䜿ã£ããã«ããšãŒãžã§ã³ãã§è¡ã£ãŠããŸãã ãã®PoCã§ã¯ã次ã®ç¶æ³ãéãªã£ãŠããŸããã 仿¡ä»¶ã®ãªãªãŒã¹ãšææãéãªãã人æãè¶³ããªã éçºè
ã1人ã®ãããã³ãŒãã¬ãã¥ãŒããã人ãããªã éçºã¿ã¹ã¯ã60ä»¶ãè¶
ããã©ãããworktreeãåã â å®è£
â PR â ã¬ãã¥ãŒ â ããŒãž â åŸçä»ãããšããåãäœæ¥ã®ç¹°ãè¿ãã«ãªã äžæ¹ã§ãPoCãªã®ã§èŠä»¶ãéãããŠããã詊ãããææ³ãããæ€èšŒã§ããç«å Žã§ããããŸãããããã§ãå®åäœæ¥ããŸãšããŠAIã«æž¡ãã人ã¯ãäœãäœãããã®å€æã«éäžãã圢ãç®æããŸããã å®éã«ã©ã®çšåºŠã®ç¯å²ãåãããã¯ãã¿ã¹ã¯ã®å
èš³ã§äŒããããããšæããŸããèªèšŒèªå¯ãã»ãã¥ãªãã£å¯Ÿçãæ§èœãšã³ã¹ãã®æ¹åããã¹ãæŠç¥ãšE2Eãã¹ããã€ã³ãã©ã®ã³ãŒãåãšCI/CDãã¢ã¯ã»ã·ããªãã£ã®æ¹åãšãã£ããæ©èœèŠä»¶ããéæ©èœèŠä»¶ãDevOpsãŸã§å¹
åºãé åãå«ãŸããŸããããããã¹ãŠã®ã¿ã¹ã¯ãããã®ä»çµã¿ã§é²ããŸããã ããŒãã¹ãšã³ãžãã¢ãªã³ã°ã掻çšããéçº ãã®ä»çµã¿ãèšèšããããã§åèã«ããã®ããBirgitta Böckelerããã®èšäº Harness engineering for coding agent users (martinfowler.comã2026幎4æ)ã§ãã Agent = Model + Harness èšäºã§ã¯ããšãŒãžã§ã³ãããAgent = Model + HarnessããšæããŸããããŒãã¹ãšã¯ãã¢ãã«ä»¥å€ã®ãã¹ãŠãã€ãŸããšãŒãžã§ã³ããåãå·»ãä»çµã¿ã®ããšã§ãããšãŒãžã§ã³ã補åã«æåããçµã¿èŸŒãŸããéšå(inner harness)ãšãå©çšè
ãèªåã®ãŠãŒã¹ã±ãŒã¹åãã«äœãéšå(outer harness)ããããæ¬èšäºã§æ±ãã®ã¯åŸè
ã§ãã outer harnessã¯ã2çš®é¡ã®å¶åŸ¡ã§æ§æãããŸãã ã¬ã€ã ïŒãšãŒãžã§ã³ããåãåã«æ¹åã¥ãã(feedforward) ã»ã³ãµãŒ ïŒåããçµæã芳枬ããèªå·±ä¿®æ£ããã(feedback) ããã«ããããããæ¬¡ã®2çš®é¡ã«åããŠèããããŸãã computational ïŒæ©æ¢°çã«æ±ºãŸãããã¹ãããªã³ã¿ãŒãæš©éèšå®ãªã© inferential ïŒLLMã®å€æã«é Œããã¬ãã¥ãŒãæ¹éã®èšè¿°ãªã© 人ã®åœ¹å²ã¯ãåãåé¡ãç¹°ãè¿ããããšãã«ãã¬ã€ããšã»ã³ãµãŒãæ¹åããŠãšãŒãžã§ã³ããæãããšã§ãã ãã®é¢ä¿ããæ¬èšäºã®å
容ã«åœãŠã¯ããŠå³ã«ãããšæ¬¡ã®ããã«ãªããŸãã ããŒãã¹æŠèŠ ãã®å³ã¯ãBöckelerããã®èšäºã«ããå³ããæ¬ãããžã§ã¯ãã®éšåã§æãçŽãããã®ã§ããåå
žã®å³ã¯ èšäº ã§ç¢ºèªã§ããŸãã 人ãããããšãAIãããããš ããŒãã¹ã§åšå²ãåºããããã§ã人ã®ä»äºã¯ã倿ãã«çµããŸããã æ
åœ ããã㚠人 èµ·ç¥šã®æç€ºãçæã®æç€ºãplanãã¡ã€ã«ãšDecision Recordã®ã¬ãã¥ãŒ(éèŠãªã¿ã¹ã¯ã¯ãã¹ãã±ãŒã¹ã確èª)ãããŒãžãå¿
èŠã«å¿ãããããã€äœæ¥ AI èŠæã®åè§£ãšèª¿æ»ãIssueã®èµ·ç¥šãã«ã³ãã³ã®ç§»åãèšèšãå®è£
ããã¹ããPRäœæããã¢åç»ã®æ®åœ±ãšæ·»ä»ãã¬ãã¥ãŒãšææå¯Ÿå¿ãããŒãžäŸé Œãworktreeãªã©ã®åŸçä»ã Decision Record(DR)ã¯ãæææ±ºå®ã®çç±ãšæ¡çšããªãã£ãä»£æ¿æ¡ãæ®ãããã®Markdownã§ããã¿ã¹ã¯ããšã«AIãæžãã人ãèªãã§æ¹éã確èªããŸãã ãã®ãããžã§ã¯ãã®éšåã䞊ã¹ã æ¬ãããžã§ã¯ãã®éšåããã¬ã€ããšã»ã³ãµãŒãcomputationalãšinferentialã®2è»žã§æŽçãããšæ¬¡ã®ããã«ãªããŸããåéšåã®è©³çްã¯ãæ¬¡ç« ã§ç޹ä»ããŸãã computational(æ©æ¢°ç) inferential(LLMã®å€æ) ã¬ã€ã (äºå) settings.json ã® deny ã§PRã®ããŒãžãçŠæ¢ãã¬ãã¥ãŒç³»ãšãŒãžã§ã³ãã«æžã蟌ã¿ããŒã«ãäžããªããworktreeã«ããäœæ¥ã®åé¢ CLAUDE.md ã®èšèšååãšã³ã¡ã³ãèŠçŽãDRã®ãã³ãã¬ãŒããIssueã®ããããªãããšã ã»ã³ãµãŒ (äºåŸ) ç·šéåŸã®formatããã¯ãã³ãããæã®ã·ãŒã¯ã¬ããæ€æ»ãCI(lintãåäœãã¹ããE2Eãããžã¥ã¢ã«ãša11yã®æ€æ»ãã©ã€ã»ã³ã¹æ€æ»)ãPRãžã®ã«ãã¬ããžã³ã¡ã³ãããã¥ãŒããŒã·ã§ã³ãã¹ã ã¬ãã¥ãŒææã®3åé¡ããã¢åç»ã®æ¯èŒ ãã®è¡šãäœããšãäœãã匷å¶ãã§äœããçŽæããªã®ããèŠããŸããå®éã«ã¯ãä»çµã¿ã§åŒ·å¶ã§ããŠããã®ã¯ã deny ãããŒã«æš©éãã·ãŒã¯ã¬ããæ€æ»ãCIã ãã§ããã«ãŒãã®3ã©ãŠã³ãäžéããææã®3åé¡ãSlackéç¥ã®æ¡ä»¶ã¯ãããã³ããã«æžããçŽæã«ãããŸããããã®ç·åŒããã©ãèãããã¯ã ä»åŸã®èª²é¡ ã§è§ŠããŸãã å
·äœçãªä»çµã¿ æ§æ æ§æã¯ãClaude Codeã®ã¹ãã«2ã€( /create-task ã /run-task )ãšããµããšãŒãžã§ã³ã3ã€(planãšãŒãžã§ã³ããdevãšãŒãžã§ã³ããreviewãšãŒãžã§ã³ã)ã§ãã ãšãŒãžã§ã³ãã®ã¯ãŒã¯ãã㌠ãã€ã³ãã¯ããšãŒãžã§ã³ãå士ãçŽæ¥ããåãããªãããšã§ããåžä»€å¡(Orchestratorã /run-task )ã SendMessage ã§ä»²ä»ãããããåãšãŒãžã§ã³ãã¯èªåã®åœ¹å²ã ããèŠãã°ãããªããŸãããŸããClaude Codeã®ãµããšãŒãžã§ã³ãæ©èœãå©çšããããšã§ãã³ã³ããã¹ããåé¢ãã€ã€ãå¿
èŠãªæ
å ±ãå
±æã§ããŸãã 1ã¿ã¹ã¯ã®æµã å
šäœã®æµãã¯æ¬¡ã®ãšããã§ãã人ãé¢ããã®ã¯ãplanãšDRã®ã¬ãã¥ãŒãšãæåŸã®ããŒãžã ãã§ãã 起祚( /create-task ) ïŒèŠæãåè§£ããã³ãŒãããŒã¹ã䞊åã«èª¿æ»ããŠæ¢åIssueãšã®éè€ãå€å®ããŸããç¶ããŠãéžæåŒã®è³ªåã§èŠä»¶ãåºããåªå
床ãšã¹ããŒãªãŒãã€ã³ããèŠç©ãããŸããæçµç¢ºèªãåã£ãããã§ãåºå®ã®ç¯æ§æ(èæ¯ã»ç®çãèŠä»¶ãããããšããããªãããšãäŸåé¢ä¿)ãšåºå®ã®ã©ãã«(åªå
床ãã¹ããŒãªãŒãã€ã³ãã倿Žå¯Ÿè±¡é
ç®ãªã©)ã§Issueã起祚ããã«ã³ãã³ã«ç»é²ããŸããããããªãããšããæèšããŠãããšãåŸã®ã¬ãã¥ãŒã§ç¯å²ã®éžè±ãæ€åºã§ããŸãã ããšãã°ã次ã®ããã«èŠæãäžèšäŒããã ãã§èµ·ç¥šãããŸãã以äžã¯ãå®éã«èµ·ç¥šãããIssueã®äŸã§ã(äžéšããã¹ã¯ããŠããŸã)ã /create-task ç»é¢ãµã€ãºã倧ãããšäœçœãç®ç«ã€ãèŠã¥ããã®ã§å¹
ããã£ã¹ãã¬ã€ãµã€ãºã«å¿ããŠèª¿æŽããã 起祚ãããIssue èšèš(planãšãŒãžã§ã³ã) ïŒIssueã確èªããäœæ¥çšã®worktreeãšãã©ã³ããäœããŸããã«ã³ãã³ããé²è¡äžãã«ç§»ããplanãã¡ã€ã«ãšDRãæžããŸããplanãå®äºãããŸã§å®è£
ã¯å§ããŸããã人ã確èªãããã€ã³ãã¯ããã§ããæ£ããèšèšãè¡ãããŠããããã¬ãã¥ãŒããå¿
èŠã«å¿ããŠä¿®æ£æç€ºãåºããŸããåé¡ãç¡ããªãã°ãå®è£
ãã§ãŒãºã«é²ã¿ãŸãã planãã¡ã€ã«ã«ã¯ãèæ¯ãšèŠä»¶ã®èŠçŽãèšèšæ¹éã®çµè«ããã¡ã€ã«åäœã®å®è£
ã¹ãããããã¹ãæ¹éããããŠãèšèšäžã®æžå¿µç¹ã»å€æãåãããç¹ããæžãããŸããæåŸã®é
ç®ã¯ã人ãã¬ãã¥ãŒãããšãã®ççŒç¹ã«ãªããŸããDRã«ã¯ãèæ¯ãæ±ºå®äºé
ãšãã®çç±ãæ€èšããä»£æ¿æ¡ãšæ¡çšããªãã£ãçç±ãæ®ããŸããåŸããããªããããªã£ãŠããã®ããããã©ãããã®èšé²ã§ãã å®è£
(devãšãŒãžã§ã³ã) ïŒplanã«æ²¿ã£ãŠå®è£
ããŸãããã¹ãã¯å¿
é ã§ãLLMåŒã³åºãã®ã¿æéãšã³ã¹ãã®å
Œãåãããã¢ãã¯ã«ããŸããformatãšãã¹ããéããŠããPRãäœããPRã®å
é è¡ã«Issueãéããèšæ³ãæžããŠã«ã³ãã³ãšé£åãããŸããããã«ã人ã®ã¬ãã¥ãŒãããããããããã«ã倿ŽååŸã®ç»é¢ã䞊ã¹ããã¢åç»ãé²ç»ããŠPRã«æ·»ä»ããŸããåŸæ®µã®ã¬ãã¥ãŒææãåãåã£ãéãå
容ã«åæã§ããªãå Žåã¯ãåè«ããŠããããšã«ããŠããŸãã äžæ¹ã§ãforce pushãããŒãžãIssueã®ããããªãããšããžã®çæã¯çŠæ¢ã§ãã PRã«æ·»ä»ããããã¢åç»ãå·Šã倿Žåãå³ã倿ŽåŸ ã¬ãã¥ãŒ(reviewãšãŒãžã§ã³ã) ïŒæ¬¡ã®8芳ç¹ãã¬ãã¥ãŒããŸãã ã·ãŒã¯ã¬ããã®æ··å
¥ ããããªãããšããžã®éžè± èŠä»¶ã®å
è¶³ ã¢ãŒããã¯ãã£æ¹éãé©åã ãã¹ãã®æç¡ãšåŠ¥åœæ§ Decision Recordãé©åã«èšé²ãããŠããã å®è£
å質 ã»ãã¥ãªã㣠ããã«å ããŠããã¢åç»ã®æåãIssueã®èŠä»¶ãšäžèŽããŠãããã確èªããŸããã«ãŒãã¯æå€§3ã©ãŠã³ãã§ãåè«ã2åŸåŸ©ç¶ããå Žåã¯æã¡åã£ãŠäººã«å€æãä»°ããŸããããã¯éå°ãªè°è«ãå®è£
ãé²ãããã®ä»çµã¿ã§ãã詊ãã«ã©ãŠã³ãæ°ã«å¶éããããã«éçšããŠã¿ããšããã4ã©ãŠã³ã以éã¯äºçŽ°ãªææãå»¶ã
ãšç¶ããå¹çã倧å¹
ã«äœäžããŸããããã®ããã3ã©ãŠã³ããäžéãšããŸããã reviewerãšãŒãžã§ã³ããæçš¿ããã¬ãã¥ãŒã³ã¡ã³ãã®äŸ ããŒãžãšåŸçä»ã ïŒã¬ãã¥ãŒãæ¿èªããããšãSlackã®Incoming Webhookã«ããéç¥ãå±ããŸãã人ãå
容ã確èªããŠããŒãžãããšãåžä»€å¡ãããŒãžã確èªããworktreeãããŒã«ã«ãã©ã³ãããªã¢ãŒããã©ã³ããåé€ã㊠main ãæŽæ°ããŸããããŒãžã ãã¯äººãæ¡ãããã以å€ã¯èªåã§çä»ãèšèšã§ãããŸããSlackã®ã¡ãã»ãŒãžã«ã¯è¿œå ã§å¯Ÿå¿ãå¿
èŠãªäºæ(äŸãã°ãã€ã³ãã©ãªãœãŒã¹ã®å€æŽãªã©)ãå«ããããã«ããäœãããã°è¯ãããäžç®ã§ãããããã«å·¥å€«ããŠããŸãã å®è£
äŸïŒcomputationalãªã¬ã€ããšã»ã³ãµãŒ 匷å¶åã®ããéšåã¯ãèšå®ãã¡ã€ã«ã«æ°è¡æžãã ãã§å®çŸã§ããŸããããšãã°ãPRã®ããŒãžããšãŒãžã§ã³ãã«çŠæ¢ãããã¡ã€ã«ãç·šéãããã³ã«èªåã§ãã©ãŒãããããããèšå®ã¯ã .claude/settings.json ã«æ¬¡ã®ããã«æžããŸãã { " permissions ": { " deny ": [ " Bash(gh pr merge:*) " ] } , " hooks ": { " PostToolUse ": [ { " matcher ": " Edit|Write|MultiEdit ", " hooks ": [{ " type ": " command ", " command ": " mise run format " }] } ] } } deny ã¯ããã³ããã§ã®ãããŒãžããªãã§ãã ããããšéãããšãŒãžã§ã³ãããã®ã³ãã³ããå®è¡ã§ããªããªããŸããå®ã¯æåã®çã§ã¯ãreviewãšãŒãžã§ã³ããæ¿èªåŸã«èªåã§ããŒãžããŠããŸãããããŒãžã ãã¯äººãæ¡ãããšããæ¹éãã«ãŒã«ãšããŠæžãã®ã§ã¯ãªããä»çµã¿ã§æ
ä¿ããäŸã§ãã --- name : review description : devãšãŒãžã§ã³ããäœæããPRãã¬ãã¥ãŒããæ¿èªæã¯åžä»€å¡ãžå ±åãããããŒãžã¯è¡ããªãã tools : Bash, Read, Glob, Grep, SendMessage model : opus --- ã³ãããæã®ã·ãŒã¯ã¬ããæ€æ»(pre-commit)ã¯ããããŠæ€æ»ã1ã€ã«çµã£ãŠããŸããæŽåœ¢ãåäœãã¹ãã¯æ°åç§ããããã³ãããã®ãã³ã«èµ°ãããã«ã¯éãããã§ããããã¯ãå®ãã®ã¯ãäžåºŠã³ããããããšå±¥æŽããæ¶ãã®ã極ããŠé«ã³ã¹ããªãã·ãŒã¯ã¬ãããã ãã«ããæ®ãã¯CIã«ä»»ããŠããŸããCIãšåãã³ãã³ããåãgitleaksã®ããŒãžã§ã³ã䜿ããããããã¯ãéãã°CIã§ãéããŸãããªããåè¿°ã®PostToolUseããã¯ã«ããããã¡ã€ã«ãç·šéãããã³ã«èªåã§ãã©ãŒãããããããããã«ãªã£ãŠãããããåºæ¬çã«ã¯CIã§Linter/Formatterã«ãã倱æã¯èµ·ãããŸããã #!/bin/sh set -e exec mise run scan:secrets:staged ã»ã³ãµãŒã®äºäŸâ ïŒææãæ¡ãã€ã¶ãããªã3åé¡ æåã®ã¬ãã¥ãŒã®éçšã§ã¯ããè»œåŸ®ãªææãªãAPPROVEããŠã³ã¡ã³ããæ®ãããšããäœå°ããããŸããããã®çµæãããŒãžæžã¿ã®3ã¿ã¹ã¯ã§ã10件以äžã®ææã誰ã«ã察å¿ãããªããŸãŸæ®ããŸããããä»»æå¯Ÿå¿ãã¯ã誰ã察å¿ããªãããšã®äžå¯§ãªèšãæãã§ããã ããã§ãã¬ãã¥ãŒã®ææãå¿
ãæ¬¡ã®3ã€ã®ã©ããã«åé¡ããããã«ããŸããããä»»æããšããåé¡ã¯äœããŸããã åé¡ å€æ æ±ã çã èŠä¿®æ£ ãã®PRã®ç®çãå質ã«å¿
èŠ ãã®PRã§çŽã å質ãå®ããèŠä»¶ãæºãã å¥ã¿ã¹ã¯å éèŠã§ã¯ãªããããããçŽãã¹ã åªå
床ãäžããŠIssueã起祚ãã ã¬ãã¥ãŒè² è·ã®è»œæžãšãéå°ãªå®è£
ã®é²æ¢ åãäžã äºçްã§ãçŽããŠã䟡å€ãã»ãšãã©ãªã çç±ãæžããŠæ€åãã äºçްãªå¯Ÿå¿ã®ç¹°ãè¿ãã«ããããããŒã®é·æåãšç¡é§ãªå®è£
ã®é²æ¢ ãå¥ã¿ã¹ã¯åãã«ã¯ãããŸã¯éå°ã§ãå°æ¥ãããšããæ¹åãå«ããŸãã起祚ãçµãããŸã§ã¯ãSlackéç¥ãããŒãžãã§ããªãæµãã«ããŸãããããã§ãææãæŸçœ®ãããããšããäºçŽ°ãªææã§PRãå»¶ã
ãšåŸåŸ©ããããšãæžããŸããã reviewãšãŒãžã§ã³ãã®ããã³ããã«ã¯ã次ã®ããã«æžããŠããŸã(æç²)ã ãã¹ãŠã®ææã¯ã次ã®3åé¡ã®ããããã«å¿
ãå²ãåœãŠãŸãã ãä»»æå¯Ÿå¿ããåèãã奜ã¿ã®åé¡ããäœåãããã°ããšãã£ãææ§ãªåé¡ãäœãããšãçŠæ¢ããŸããææ§ãªåé¡ã¯ã察å¿ãããªãããšãäžå¯§ã«èšãæããã ãã§ãå®è³ªçã«ææãæšãŠãŠããŸãã ãåãäžãããåé¡ã«çšæããŠããã®ã¯ãææã®æ°Žæºã«éããªãäºçŽ°ãªæ°ã¥ããç¡çã«èµ·ç¥šãããªãããã§ãããã¹ãŠãå¥ã¿ã¹ã¯åãããšèµ·ç¥šãèšåŒµããProjectsã®ããŒããæ©èœããªããªããŸãã çŽã䟡å€ãããããèªåã«åããç¡ããã°åãäžããŠãã ããã çŠæ¢ããåé¡ã®ååãŸã§å
·äœçã«åæããããªãçŠæ¢ããã®ããããªããã®åé¡ãå¿
èŠãªã®ãããšããçç±ãæ·»ããŠããç¹ããã€ã³ãã§ããçç±ãæžããŠãããšããšãŒãžã§ã³ããæ³å®å€ã®ã±ãŒã¹ã«åºäŒã£ãŠããæå³ã«æ²¿ã£ãŠå€æããŠãããŸããå€å®ã¯ãèŠä¿®æ£ã1ä»¶ã§ãããã°REQUEST_CHANGESã0ä»¶ãªãAPPROVEããšæ©æ¢°çã«æ±ºãŸãããã«ããå¥ã¿ã¹ã¯åãææ¡ããææã¯ãGitHubã®ã¬ãã¥ãŒæ¬æã«ããå¥ã¿ã¹ã¯åãææ¡ããšæèšãããŠããŸããã¬ãã¥ãŒãèªãã 人ãããã®ææãæŸçœ®ãããã®ãã起祚ãããã®ããå€å¥ã§ããããã«ããããã§ãã ã»ã³ãµãŒã®äºäŸâ¡ïŒäœ¿ãæšãŠã®ãã¢åç» ããäžã€ã®ã»ã³ãµãŒãããã¢åç»ã§ããPRã®ããŒã¹ãšãªãã³ããããšãPRã®ãã©ã³ãã䞊ã¹ãŠé²ç»ããPRã«æ·»ä»ããŸããã³ãŒããèªãã ãã§ã¯æ°ã¥ãã«ãããèŠãç®ãåãã®é£ãéããããã¬ãã¥ãŒæã«ç¢ºèªã§ããŸããåç»ã¯äœ¿ãæšãŠã§ããªããžããªã«ã¯ã³ãããããŸããã 工倫â ïŒåœ¹å²ããšã«ã¢ãã«ãå€ãã ãšãŒãžã§ã³ãããšã«ã䜿ãã¢ãã«ãå€ããŠããŸãã ãšãŒãžã§ã³ã ã¢ãã« çç± plan fable èšèšã®è³ªãåŸå·¥çšã®åè³ªãæ±ºãã dev sonnet èšèšã©ããã«ã³ãŒããžèœãšãäœæ¥ã®ãã review opus å質ãæ
ä¿ãããããæäžäœã®ã¢ãã«ã§ã¯ã³ã¹ããé«ããããããæè¡·æ¡ãšãã 工倫â¡ïŒéçšã®æéãæžãã 人ãšãšãŒãžã§ã³ãã®æäœæ¥ããèªååãšæ€åºã«çœ®ãæããŸããã ã«ã³ãã³ã®ç§»å ïŒã«ã³ãã³ã®ãTodo â é²è¡äžãã ãã¯ãplanãšãŒãžã§ã³ããç§»ããŸããæ®ãã¯GitHub Projectsã®èªååã«ä»»ããŠããŸããPRã®å
é è¡ã«Issueãéããèšæ³ãããã°ãã¬ãã¥ãŒäžããžãããŒãžãããã°ãå®äºããžç§»ããŸãã Slackéç¥ ïŒéç¥ã¯1ã¿ã¹ã¯ã«ã€ã1éã«çµããŸãããéãæ¡ä»¶ã¯ãã¬ãã¥ãŒãAPPROVEã§ããããšãå¥ã¿ã¹ã¯ã®èµ·ç¥šãçµãã£ãŠããããšãPRãããŒãžå¯èœãªç¶æ
( MERGEABLE ã〠CLEAN )ã§ããããšãã®3ã€ããã¹ãŠæã£ããšãã§ãããªããMCPçµç±ã§æçš¿ãããšæçš¿è
ãèªåèªèº«ã«ãªããéç¥ã鳎ããŸããããã®ãããSlack AppãäœããIncoming Webhookçµç±ã§æçš¿ããŠããŸãã æçš¿ã¯ã·ã§ã«ã¹ã¯ãªããã«éã蟌ããŠããŸããWebhook URLãååŸãããã®ã¹ã¯ãªããã®äžã§ã ãæ±ãããšã§ãURLãã·ã§ã«å±¥æŽãäŒè©±ãã°ã«æ®ããªãããã«ããŠããŸãããšãŒãžã§ã³ãã«ã¯ããã®ã¹ã¯ãªããã®å®è¡ã ããèš±å¯ããŸãã #!/usr/bin/env bash set -euo pipefail WEBHOOK_URL = " <YOUR_WEBHOOK_URL_HERE> " RESPONSE = " $( curl -sS -X POST -H ' Content-type: application/json ' \ --data @ " $1 " " $WEBHOOK_URL " ) " unset WEBHOOK_URL [ " $RESPONSE " = "ok" ] || { echo " Slackãžã®éä¿¡ã«å€±æ: ${RESPONSE} " >&2; exit 3 ; } éç¥ã®æ¬æã«ã¯ãããŒãžã³ãã³ããšãããŒãžåŸã«äººãããããšãå«ããŸããããšãã°ã€ã³ãã©ã®å€æŽã䌎ãPRãªãããããŒãžåŸã«terraform applyãå®è¡ããå®ç°å¢ã§ç¢ºèªããããšãã£ãæé ãŸã§æžããŠãããããéç¥ãéããæç¹ã§äœãããã°ããããåãããŸãã Slackã«å±ãããŒãžã¬ãã¥ãŒäŸé Œã®éç¥ ã³ã³ããªã¯ã ïŒæåã¯ã䞊è¡ããŠé²ããã¿ã¹ã¯ã®ãã¡ã³ã³ããªã¯ãããããªçµãäºåã«äºæž¬ããããšããŸããããäºæž¬ã¯å€ããŸãããããã§ãäºæž¬ããããŠæ€åºã«åãæ¿ããŸããã人ãã1ä»¶ã®ããŒãžå ±åãåãããã³ã«ãåžä»€å¡ãæ®ãã®PRã«ã€ããŠæ¬¡ã®ã³ãã³ããå®è¡ããŸãã for n in { æ®ã£ãŠããPRçªå· } ; do gh pr view $n --json number,mergeable,mergeStateStatus done çµæã MERGEABLE ãªããã®ãŸãŸé²ãã CONFLICTING ãªãdevãšãŒãžã§ã³ãã«ã³ã³ããªã¯ãã®è§£æ¶ãäŸé ŒããŸãã UNKNOWN ã¯ãGitHubããŸã å€å®ãèšç®äžã®ç¶æ
ã§ãããããã³ã³ããªã¯ããšèª€èªãããšäžèŠãªåã蟌ã¿ãäŸé ŒããŠããŸããããæ°ç§åŸ
ã£ãŠããåååŸããããã«ããã³ããã«æèšããŠããŸããè§£æ¶ã¯rebaseã§ã¯ãªãmergeã§è¡ããŸããrebaseã¯force pushãå¿
èŠã«ãªããdevãšãŒãžã§ã³ãã«çŠæ¢ããŠããã«ãŒã«ãšã¶ã€ããããã§ããåãPRã§è§£æ¶ã«2å倱æããå Žåã¯ãå¥ã®å€æŽãå£ããŠããå¯èœæ§ãããããã人ã«ãšã¹ã«ã¬ãŒã·ã§ã³ããŸãã å°å
¥çµæ æ°å€ 0.8人æã§ã®éçºå®çžŸã¯æ¬¡ã®ãšããã§ãã é
ç® å€ ããŒãžããPR(boté€ã) 86æ¬ PRäœæããããŒãžãŸã§ã®æé äžå€®å€ çŽ0.8æéãå¹³å çŽ2.6æé ãã¹ãã³ãŒããšãããã¯ãã³ãŒãã®è¡æ°æ¯ çŽ1.7å 人ã®å·¥æ° 1ã¿ã¹ã¯ãããå¹³å çŽ15å å®è£
æžã¿ã®äž»ãªæ©èœ/éæ©èœã¯æ¬¡ã®ãšããã§ãã åºå äž»ãªå
容 æ©èœèŠä»¶ïŒåæ è€æ°ã®èгç¹ã§ã®åæãšéçŽã远å ã®è³ªåãã£ãããæ ¹æ ç®æãžã®ãã¬ãŒãµããªãã£ã远å è³æã§ã®ååæãšããŒãžã§ã³ç®¡çã倱æåã ãã®åå®è¡ æ©èœèŠä»¶ïŒã¬ããŒããšUX çµæžæ§ã·ãã¥ã¬ãŒã·ã§ã³ããªã¹ã¯æ³šèšãå±¥æŽã®æ€çŽ¢ãPDFã»JSONã®å
¥åºåããã©ãŠã¶ãéããŠãç¶ãåæãšé²æé
ä¿¡ãããŒã¯ã¢ãŒããšã¢ã¯ã»ã·ããªãã£å¯Ÿå¿ éæ©èœïŒèªèšŒãšã»ãã¥ãªã㣠MFA蟌ã¿ã®èªèšŒèªå¯ãšãŠãŒã¶ãŒç®¡çãLLMèªèšŒã®éµã¬ã¹åãä¿åããŒã¿ã®æå·åãã·ãŒã¯ã¬ããã»ã©ã€ã»ã³ã¹æ€æ» éæ©èœïŒæ§èœãšã³ã¹ã ããã³ãããã£ãã·ã¥ãšå§çž®ãã¹ããªãŒãã³ã°åããªãã©ã€ãåæçµæã®æ°žç¶å éæ©èœïŒå質ä¿èšŒ åäœãã¹ããE2Eãããžã¥ã¢ã«ãªã°ã¬ãã·ã§ã³ãša11yã®èªåç£æ»ããã¥ãŒããŒã·ã§ã³ãã¹ã DevOpsã»åºç€ Terraformã«ããã€ã³ãã©ã®ã³ãŒãåãGitHub Actionsã®CIãmainããŒãžã§ã®èªåãããã€ãäŸåæŽæ°ã®èªåå 宿§çãªå€å 人ãããããšã¯ããäœãäœããããšãplanãšDRã®ã¬ãã¥ãŒãã«çµãããŸããã仿¡ä»¶ã®å¯Ÿå¿ãšäžŠè¡ããªããã§ãããã®æ¡ä»¶ãæ¢ããã«é²ããããã®ã倧ããªå€åã§ãã ä»åŸã®èª²é¡ è¯ãç¹ã ãã§ãªããæ®ã£ãŠãã課é¡ãä»åŸæ€èšŒãããç¹ãæããŠãããŸãã èšèšãšé©çšç¯å² AIã®åŠçæéãšã¬ãŒããªããã ïŒäººã®å·¥æ°ã¯å°ãããªããŸããããPRãåºããŸã§ã®æéã¯ãAIã®åŠçæéãšã¬ãŒããªãããã«çžãããŸããèšèšãå®è£
ãæå€§3ã©ãŠã³ãã®ã¬ãã¥ãŒããã¢åç»ã®é²ç»ã«ã¯ããããæéãããããŸãã䞊è¡ããŠåãã¿ã¹ã¯ã¯æå€§5ä»¶ãç®å®ã«ããŠããŸãããå¢ããã»ã©ã¬ãŒããªãããã«ã¶ã€ããããããªããŸãããŸãã䞊è¡ããPRãå¢ããã»ã©ãã³ã³ããªã¯ãã®ç¢ºçãäžãããŸã ããã³ããäžã®ã«ãŒã«ãã©ããŸã§ä»çµã¿ã§åŒ·å¶ããã ïŒä»çµã¿ã§åŒ·å¶ã§ããŠããã®ã¯ deny ãããŒã«æš©éãã·ãŒã¯ã¬ããæ€æ»ãCIã ãã§ãã«ãŒãã®3ã©ãŠã³ãäžéãææã®3åé¡ãSlackéç¥ã®æ¡ä»¶ã¯ããã³ããã«æžããçŽæã«ãããŸãããPoCã§ã¯ããã§ååã§ããããåçšéçºã«é©çšãããªãããããæåã®è«ç¹ã«ãªããšèããŠããŸã åçšéçºã§ãåã圢ãéçšããã ïŒä»åã®PoCã¯èŠä»¶ãéãããŠãããå¹çãæåªå
ã§ããŸãããå質ãç£æ»ã®èŠæ±ãé«ãåçšéçºã§ãåã人ã®é¢äžã®åºŠåãã§ãããã¯ãä»åŸã®æ€èšŒèª²é¡ã§ã éçšäžã®èª²é¡ devãšãŒãžã§ã³ããreviewãšãŒãžã§ã³ãã人ãåãGitHubã¢ã«ãŠã³ãã䜿ã£ãŠãããããGitHubäžã®æ¿èªã圢åŒçã«ãªãããããå®éãèªåã®PRã«ã¯GitHubã®æ©èœã«ãããAPPROVEãã§ãããã³ã¡ã³ãã§ä»£çšããŠãã ãã¥ãŒããŒã·ã§ã³ãã¹ãã¯æåã§ãé©åãªé »åºŠã¯æ€èšäž ããã¯ã°ã©ãŠã³ãã§åããµããšãŒãžã§ã³ãããæš©éã®ç¢ºèªåŸ
ã¡ã§äœãèšããã«æ¢ãŸãããšããã ãŸãšã æ¬èšäºã§ã¯ãã¿ã¹ã¯ã®èµ·ç¥šããã¬ãã¥ãŒãããŒãžäŸé ŒãŸã§ãAIãšãŒãžã§ã³ãã«ä»»ããä»çµã¿ããããŒãã¹ãšã³ãžãã¢ãªã³ã°ã®èãæ¹ãšããããŠç޹ä»ããŸããã人ã«ããã¬ãã¥ãŒç²åºŠãšããã³ããã®èšèšãé©åã«è¡ãã°ã广çã«äœ¿ãããšããæå¿ããåŸãŸãããåçšã®éçºã§ãã®ãŸãŸéçšãããã¯ãä»åŸã®æ€èšŒèª²é¡ã§ãã æ¡ä»¶ã«äŸåãããä»ã®ãããžã§ã¯ãã«ãæã¡åºãããšèããŠããç¹ã¯æ¬¡ã®3ã€ã§ãã AIã«äœæ¥ãä»»ããã ãã§ãªããåšå²ã®ä»çµã¿ãèšèšãã ïŒäºåã«çžãã¬ã€ãã ãã§ããäºåŸã«æ€ç¥ããã»ã³ãµãŒã ãã§ãè¶³ããŸãããææã®3åé¡ã®ããã«ãæãéãå®éã«ææã®æŸçœ®ãçãã ç®æããã»ã³ãµãŒåŽã§å¡ããŸããã 匷å¶ã§ãããã®ã¯ä»çµã¿ã«å¯ãã ïŒããŒãžã®çŠæ¢ã¯ deny ã§ãã·ãŒã¯ã¬ããã®æ··å
¥ã¯pre-commitãšCIã§é²ãã§ããŸããããã³ããã«æžããçŽæã¯ããããŸã§ãå®ããããããªããã ãã§ãããŸããæåãã宿ããä»çµã¿ã§ã¯ãªããèªåããŒãžã®å
šå»ã3åé¡ãã³ã³ããªã¯ãæ€åºããã¢åç»ã®æ¯èŒæ¹åŒãžã®ä¿®æ£ãªã©ãäºæ
ã®ãã³ã«DRã«æ®ããŠçŽããŠããçµæã§ãã 人ã®ä»äºããäœæ¥ãããã倿ãã«å¯ãã ïŒäººã®ä»äºãã倿ãã«çµããããšãã1人ã§ãè€æ°ã®æ¡ä»¶ã䞊è¡ããŠé²ããããäžçªã®èŠå ã§ããã AIãšãŒãžã§ã³ãã«ããéçºã®åèªååãæ€èšãããŠããæ¹ã®åèã«ãªãã°å¹žãã§ãã åèæç® Harness engineering for coding agent users(Birgitta Böckelerãmartinfowler.com)
ã¯ããã« ããã«ã¡ã¯ïŒ KINTOéçºéš KINTOã·ã¹ãã éçºG ãã¹ã¿ãŒã¡ã³ããã³ã¹ããŒã«éçºããŒã ãæè¡åºå ±éšå
ŒåãOsaka Tech Lab æå±ã® high-gïŒ @high_g_engineer ïŒã§ããããã³ããšã³ããšã³ãžãã¢ããã£ãŠããŸãã 以åã瀟å
ã§éå¬ããŠããããã³ããšã³ãå匷äŒã«ã€ããŠç޹ä»ããŸããã https://blog.kinto-technologies.com/posts/2025-06-30-frontend-study-group/ ããããå匷äŒã¯ç¶ãã2026幎10æã§ç¬¬91åãè¿ããŸããã ä»åã¯ãã®äžã§ã2026幎8æã9æã«å
š5åã§å®æœãã ãHTMLè§£äœæ°æžãã®èŒªèªäŒ ã«ã€ããŠç޹ä»ããŸãã æ£çŽãªãšãããæžç±ã®èŒªèªäŒã¯ããã³ããšã³ãå匷äŒã§ã¯åäŸããªãããšããããååãæè¡æžã®èŒªèªäŒãšãªããšããéäžã§å€±éããã¡ãããã èªã¿äžããã ãã®äŒã«ãªããã¡ããšããå°è±¡ããããå°ãããŒãã«ãé«ãæããŠããŸããã å®éãç§èªèº«ãåè·ã§åãæ¬ã®èŒªèªäŒãçµéšãããšããå
容ãçè§£ããªããŸãŸèªã¿é²ããã ãã®äŒã«ãªã£ãŠããŸã£ãèŠãæãåºããããŸãã ã§ãããä»åã¯æåŸãŸã§èµ°ãåããããã«ãåå è
å
šå¡ãåã®ããã«è°è«ããå Žã«ãªããŸããã ãã®èšäºã§ã¯ããã®çµç·¯ãšé²ãæ¹ãããŸããã£ãçç±ãªã©ããŸãšããŸãã 顿ã«ããæžç± https://www.borndigital.co.jp/book/25999/ ãHTMLè§£äœæ°æž â仿§ããçŽè§£ãæ¬æ Œå
¥éãã¯ãHTMLã®ä»æ§ïŒHTML StandardïŒãããŒã¹ã«ãåèŠçŽ ã®æå³ãäœ¿ãæ¹ãã¢ã¯ã»ã·ããªãã£ãšã®é¢ä¿ãäžå¯§ã«è§£èª¬ããæžç±ã§ãã ãªãHTMLã®èŒªèªäŒãããããšã«ãªã£ãã®ã ãæ¬¡ã«äœããããããã¿ããªã§è©±ãåã£ã 茪èªäŒãå§ããçŽåãå匷äŒã§ã¯TSKaigi 2026ã®ã»ãã·ã§ã³åç»ãã¿ããªã§èŠèŽããŠããŸããããã ãæè¿ã®ããã³ããšã³ãå匷äŒã¯TypeScriptã®åã®è©±ã«å¯ããã¡ãªå
容ã«ãªã£ãŠããŠãåç»ãèŠãã ãã®äŒãç¶ããŠããããšãããããããå°ãçŸå Žã«å¯ãæ·»ã£ãå匷äŒã«ãããããšèããŠããŸããã ããã§7æã«2åã»ã©æéãåããåå è
ãæå±ããåããŒã ã§å®éã«èµ·ããŠããããã³ããšã³ãã®èª²é¡ããã¢ãªã³ã°ããŸããã ãããšãããŒã ã¯éã£ãŠã次ã®ãããªæ©ã¿ãå
±éããŠæãããŸããã ãã¶ã€ããŒãšã®åæ¥ã®é²ãæ¹ã«èª²é¡ããã UI / UXã«é¢ããç¥èããã£ãšäŒžã°ããã ã¢ã¯ã»ã·ããªãã£ãæçµçã«ã³ãŒããžã©ãèœãšã蟌ãããã©ãåšå²ãå·»ã蟌ãã ããŒã¯ãŒãã¯ãæ
å ±èšèšã è°è«ãéãããã¡ã«èŠããŠããã®ããã æ
å ±èšèš ããšããããŒã¯ãŒãã§ããã å匷äŒã§ç«ãŠã仮説ã¯ããã§ãã æ£ããæ
å ±èšèšãããŠããUI â æ£ããããŒã¯ã¢ãããããŠãã â Webã¢ã¯ã»ã·ããªãã£ãæºãããŠãã ãã¶ã€ããŒãšåæ¥ããããã§ããã¢ã¯ã»ã·ããªãã£ãæºãããã³ã³ãã³ããäœãããã§ããåå°ã«ãªãã®ã¯HTMLã®æ£ããçè§£ã§ãã ãHTMLã®ç¥èã匷åããããšããæ
å ±èšèšã®çè§£ã«ã€ãªãããã²ããŠã¯ããã³ããšã³ãã®å
šããŒã ã«å
±éãã課é¡ã®è§£æ±ºã«ã€ãªãããããããªãããšèãããŸã㯠h1 ã h6 ãæ£ããé åºã§äœ¿ããšããåºç€çãªã¬ãã«ããçè§£ãçŽããããšããçµè«ã«ãªããŸããããã®ææãšããŠãã£ãŠã€ãã ã£ãã®ããHTMLè§£äœæ°æžãã§ãã ãããªãå§ãããæ¬ã玹ä»ããäŒããæãã ãšã¯ããããã®æ¬ã¯å
š352ããŒãžãšãããªããªãã®åãã§ãããããªããæ¥é±ãã茪èªäŒããããŸãããšèšããšãåå ã®ããŒãã«ãäžæ°ã«äžãã£ãŠããŸããŸãã äžæ¹ã§ãã¿ããªã®æºåãæŽã£ããããããã§ã¯ããã€ãŸã§ãå§ãŸããªãå¯èœæ§ãé«ãã§ãã ããã§ããŸã㯠ãã§ã«æ¬ãæã£ãŠããäººã«æåããŠããããã©ããªæ¬ãªã®ãã玹ä»ããäŒ ãäžåºŠæã¿ãŸããã ãã®äŒã§äžèº«ããã©ãã©ãšçºããããšã§ããšããããè²·ã£ãŠäžèªããŠã¿ãŸãããä»Kindleã§è²·ããŸããããšãã声ãåºãŠããã®å Žã§é²ãæ¹ã®ã«ãŒã«ã決ããããšãã§ããŸããã ãŸãããããŒãžã£ãŒã®æ¿èªãããããæ±äº¬ïŒå®€çºïŒãšå€§éªã®ãªãã£ã¹ã«1åãã€äŒç€Ÿã§æžç±ã賌å
¥ã§ããŸããã ãã ããµããéããŠã¿ããšå€ãã®åå è
ãèªåã§è³Œå
¥ããŠããŠããäŒç€Ÿã§è²·ããªããŠããã¿ããªæã£ãŠãããããããªãããšãããããã§ããã 茪èªäŒã®é²ãæ¹ ã«ãŒã« ã«ãŒã«ã¯ã·ã³ãã«ã«ããŸããã åå è
ã¯ã§ããéãäºåã«èªãã§ããïŒ ãã¡ãããèªããªããŠã倧äžå€« ïŒ èª¬ææ
åœã¯æ
åœç®æãäºåã«ç²Ÿèªããåœæ¥ã«èª¬æããïŒ èª¬ææ¹æ³ã¯ããŸãã ïŒ æžç±ã¯äŒç€Ÿè³Œå
¥åã貞ãåºãå¯ïŒå人ã§ã®çšæãOKïŒ ãèªããªããŠã倧äžå€«ããšæèšããŠããããšã§ãæ
åœä»¥å€ã®äººãæ°è»œã«åå ã§ããããã«ããŠããŸãã 1åïŒçŽ1æéïŒã®ã¿ã€ã ããŒãã« æé å
容 10ã30å æ
åœè
ãæ
åœç®æããã£ãã説æ 20ã30å å
šå¡ã§ææ³ãæ°ã«ãªã£ãããšã話ã 3å æ¬¡åã®æ
åœæ±ºãã«ãŒã¬ãã æ¬¡åã®æ
åœã¯ãClaude Artifactsã§äœã£ãã«ãŒã¬ããã§æ±ºããŸãããã¡ãã£ãšããã²ãŒã æèŠããããã誰ã«ãªãããªããšçãäžãããã€ã³ãã§ããããŸããã ç¯å²ã¯ãäž»èŠãªç¯ã ããã«çµã£ã å
šç« ãèªããšé·ææŠã«ãªã£ãŠããŸããããCHAPTER 3ã®èŠçŽ è§£èª¬ãããç¹ã«æ¥åã«é¢ãããæ·±ã5ã€ã®ç¯ã«çµããŸããã å é嬿¥ ç¯å² æ
åœ ç¬¬1å 8/7 ã»ã¯ã·ã§ã³ è±èŒªãã 第2å 8/28 ã°ã«ãŒãã³ã°ã³ã³ãã³ã äžäžãã 第3å 9/4 ããã¹ãã¬ãã«ã»ãã³ãã£ã¯ã¹ éœè€ãã 第4å 9/11 ãã©ãŒã ãã®1 high-g 第5å 9/18 ãã©ãŒã ãã®2 æºå£ãã ãçãç§ã®äŒæã§äœåºŠãã¹ããããæã¿ãŸããããåœåã®èŠèŸŒã¿ã©ãã5åã§å®èµ°ã§ããŸããã ã¢ã¯ã»ã·ããªãã£ã®æèè
ãåå ããŠããã ä»åã®èŒªèªäŒã§å€§ããã£ãã®ãã瀟å
ã®ã¢ã¯ã»ã·ããªãã£ã®æèè
ã§ãã 蟻ãã ã å®è°·ãã ãåå ããŠãããããšã§ãã æ¬ã«æžãããŠããå
容ã«å¯ŸããŠãå®éã®ã¹ã¯ãªãŒã³ãªãŒããŒã§ã¯ããèªã¿äžããããããæã¯ãã䜿ãããŠããããšãã£ãã æ¬ã®äžæ©å
ã®ç¥èŠ ããã®å Žã§è£è¶³ããŠããããããšã§ãè°è«ã®è³ªã倧ããäžãããŸããã ååã®æ§å ååãšããæ
åœè
ãæ¬ã®å
容ããªããã ãã§ãªããç¬èªã®åãå£ã§ããã¹ãããŒã¹ã®ãŸãšããäœã£ãŠããŠãããŸãããããã§ã¯ååã§å°è±¡ã«æ®ã£ããããã¯ãããã€ã玹ä»ããŸãã 第1åïŒã»ã¯ã·ã§ã³ section / article / aside / nav ãšãã£ãã»ã¯ã·ã§ãã³ã°ã³ã³ãã³ããã header / footer ãã©ã³ãããŒã¯ã«ãªãæ¡ä»¶ãªã©ãæ±ããŸããã å°è±¡çã ã£ãã®ã¯ãæžç±ã®åè¡ãšåã2022幎㫠ã¢ãŠãã©ã€ã³ã¢ã«ãŽãªãºã ãHTML Standardããåé€ãããŠãã ããšã§ãã https://github.com/whatwg/html/pull/7829 çŸåšã¯ã section ã§å²ãã§ãèŠåºãã¬ãã«ã¯äžãããã h1 ã h6 ã®æ°åã§æ±ºãŸããŸãã ãŸãããReactã¢ããªã±ãŒã·ã§ã³ã§ã¯ãæçµçã«ã¬ã³ããªã³ã°ãããHTMLå
šäœãç®ã«ããæ©äŒãã»ãšãã©ãããŸãããã»ã¯ã·ã§ã³æ§é ãæ£ããããšãæ¥ã
ã®éçºã§ã©ãæ€èšŒããã°ãããïŒããšãããã³ã³ããŒãã³ãéçºãªãã§ã¯ã®æ©ã¿ã話é¡ã«ãªããŸããã 第2åïŒã°ã«ãŒãã³ã°ã³ã³ãã³ã p ã ul ã ol ã dl ã figure ã main ãªã©ãæ¯æ¥æžããŠããèŠçŽ ããããŒãã§ããããæ
åœã®äžäžããã¯æå³ã®æ·±ã説æããããå人çã«ããããªãã ããšæããéšåãäžå¿ã«ãŸãšããŠãããŸããã ããšãã°ã p ã®äžã« ul ãæžããšãšã©ãŒã«ã¯ãªãããããŒãµãŒãé»ã£ãŠ p ãéããŠããŸããŸãã <!-- æžããã€ããã®HTML --> <p> <ul> <li>é
ç®</li> </ul> </p> <!-- ããŒã¹åŸã®DOM --> <p></p> <ul> <li>é
ç®</li> </ul> <p></p> ãã®çµæã p > ul ãåæã«ããCSSãå¹ããªããªã£ãããæ«å°Ÿã«çãã空㮠p ã§äœçœãå¢ãããããŸããSSRç°å¢ã§ã¯ãµãŒããŒã§çæããHTMLãšã¯ã©ã€ã¢ã³ãã®DOMãé£ãéããhydrationãšã©ãŒã®åå ã«ããªããŸãã ã»ãã«ããæ¬¡ã®ãããªè©±é¡ã§çãäžãããŸããã ol ã®çªå·ã¯DOMã«ååšããªããããã³ããŒïŒããŒã¹ããããšæ¶ãã main 㯠hidden 屿§ãä»ãããã®ãå«ããã°ã1ããŒãžã«è€æ°çœ®ãã hr ã¯ãç·ãã§ã¯ãªããæ®µèœã¬ãã«ã®ããŒãã®åºåããã¹ã¯ãªãŒã³ãªãŒããŒã§ã¯ãåºåãããšèªã¿äžãããã dl ã®èªã¿äžãã¯ãã©ãŠã¶ãšã¹ã¯ãªãŒã³ãªãŒããŒã®çµã¿åããã«ãã£ãŠå·®ãããããã»ãã³ãã£ã¯ã¹ãšããŠæ£ãããªã䜿ã䟡å€ããã ãã®åã§ç¹ã«å°è±¡ã«æ®ã£ãã®ãããã»ãã³ãã£ã¯ã¹ïŒã¹ã¯ãªãŒã³ãªãŒããŒã®ããããšãããã£ããã®çºèšã«å¯Ÿããã蟻ããã®ã²ãšèšã§ãã ãã¹ã¯ãªãŒã³ãªãŒããŒã®ãããã£ãŠã®ã¯ãã¶ãã¡ãã£ãšéããªãã¹ã¯ãªãŒã³ãªãŒããŒã¯HTMLã®ä»æ§ã«åãããŠè§£éããåŽãªã®ã§ã ã¹ã¯ãªãŒã³ãªãŒããŒã§æãã©ããã«èªãŸããããã«ã³ã³ãã³ããæ²ããã®ã§ã¯ãªãã仿§ã«æ²¿ã£ãŠæ£ããããŒã¯ã¢ããããã¹ã¯ãªãŒã³ãªãŒããŒåŽããããæ£ããè§£éãããã¢ã¯ã»ã·ããªãã£ãèããããã§ã®é åºããæ¹ããŠç¢ºèªã§ããŸããã 第3åïŒããã¹ãã¬ãã«ã»ãã³ãã£ã¯ã¹ em ãš strong ã small ã s ã time ã ruby ã bdi ã br ã wbr ãªã©ãæ±ããŸããã æ
åœã®éœè€ããããã¯ãæ®æ®µã¯ãã¬ãŒã ã¯ãŒã¯äžã§ã³ã³ããŒãã³ãåäœã§ããHTMLãæžããªãã®ã§ãèŠçŽ ãã®ãã®ãæèããããšããªãã£ãããšããççŽãªææ³ãããããŸãã«ãã®èŒªèªäŒã®çãã©ããã®æ°ã¥ããå
±æãããŸããã æžç±ã®åè¡åŸã«ä»æ§åŽã§å€ãã£ãç¹ã話é¡ã«ãªããŸãããããšãã°ãæžç±ã®æç¹ã§ã¯å¯Ÿå¿ããARIAããŒã«ããªãã£ãèŠçŽ ã«ããWAI-ARIA 1.2ã§ã¯ããŒã«ãå²ãåœãŠãããŠããŸãã HTMLèŠçŽ WAI-ARIA 1.2ã§ã®ããŒã« em emphasis strong strong del / ins deletion / insertion sub / sup subscript / superscript b / i / small / s / u generic ã»ãã«ãã <p>H<sub>2</sub>O</p> ãVoiceOverã§èªãŸãããšããšã€ãã»ããŒã»ãªãŒãã§ã¯ãªãããšã€ãããªãŒããšèªãŸãããæ¥æ¬èªã«ã¯ã€ã¿ãªãã¯äœã®æåããªãã®ã§ i èŠçŽ ã¯ããŒã¯ã¢ãããšèŠãç®ãäžèŽãã«ããããšãã£ãå®éã«è©ŠããŠã¿ãããããã®è©±ãåºãŸããã ãã£ããã§ã¯ãæäœ¿ã£ãŠããHTMLãšãã£ã¿ã®è©±ããã¬ã©ã±ãŒã§HTMLãæžããŠããæãåºè©±ã§äžä»£ãè¶
ããŠçãäžããäžå¹ããããŸããã 第4åïŒãã©ãŒã ãã®1 ç§ã®æ
åœåã§ãã form ã label ãåçš® input ã® type ãããªããŒã·ã§ã³å±æ§ã autocomplete ãªã©ãæ±ããŸããã ç¹ã«åŒ·èª¿ããã®ã¯ã label ã® for 屿§ã®èœãšã穎ã§ããååšããªã id ãæå®ãããšHTMLãã§ãã«ãŒã§ãšã©ãŒãšããŠæ€åºã§ããŸããã å¥ã®èŠçŽ ã® id ãæå®ããŠããŸã£ãå Žåã¯HTMLãã§ãã«ãŒã§ã¯æ€åºã§ããŸããã ã©ãã«ãã³ããŒïŒããŒã¹ãã㊠for ãçŽãå¿ãããšãã³ããŒããã©ãã«ãŸã§æåã®å
¥åæ¬ã«çŽã¥ããŠããŸãããšãã£ãäºæ
ãèµ·ããåŸãŸãã ããã¯ç®ã§èŠãŠãæ°ã¥ãã«ããäžæ¹ãã¹ã¯ãªãŒã³ãªãŒããŒã§èªã¿äžãããšããã«åããããšãã話ã蟻ãããããããŸããã ãã®ã»ãã«ããæ¬¡ã®ãããªè©±é¡ãåºãŸããã type="hidden" ã¯ãç§å¯ãã«ã¯ãªããªãïŒå€ã¯æ¹ããã§ããïŒ pattern 屿§ã¯ã»ãã¥ãªãã£ã®ããã®ãã®ã§ã¯ãªã placeholder ã¯ã©ãã«ã®ä»£ããã«ãªããªã é»è©±çªå·ãããã€ãã³ãªãããšæ³šéã㊠type="number" ã§åãåãã®ã¯é¿ããã KINTOã®ãµãŒãã¹ã«ã¯ç³èŸŒãã©ãŒã ãå€ãã®ã§ããã®ãŸãŸæ¥åã«çãããå
容ã ã£ããšæããŸãã 第5åïŒãã©ãŒã ãã®2 æçµåã¯æºå£ããã®æ
åœã§ã button ã select ã datalist ã progress / meter ã fieldset / legend ãªã©ãæ±ããŸããã æºå£ããã®åãå£ããšãŠãé¢çœãããä»ã¯ãŒããããã©ãŒã éšåãææžãããããšã¯å°ãªããUIã©ã€ãã©ãªã䜿ãããšãã»ãšãã©ããšããåæã«ç«ã£ãŠã MUIã»Ant Designã»Radix UIãããããã®èŠçŽ ãã©ãå®è£
ããŠããã ããæžç±ã®å
容ãšçªãåãããŠãããŸããã ããšãã°ã¹ã€ããïŒSwitchïŒã³ã³ããŒãã³ãã²ãšã€ãšã£ãŠããå®è£
æ¹éã¯ã©ã€ãã©ãªããšã«ç°ãªããŸãã ã©ã€ãã©ãª Switchã®å®è£
MUI èŠãç®çšã® span ãšãéæãª <input type="checkbox" role="switch"> Ant Design input ã䜿ãã <button type="button" role="switch" aria-checked> Radix UI <button role="switch" aria-checked> ã«å ãããã©ãŒã å
ã§ã®ã¿é衚瀺㮠input ã远å select ãåæ§ã§ããã€ãã£ãã® select ã䜿ããã« role="combobox" ãš role="listbox" ãçµã¿åãããŠåçŸããŠãããããã©ãŒã äºæã®ããã«èŠããªã select ã眮ããŠããããšãåã©ã€ãã©ãªã®å·¥å€«ãèŠããŠããŸããã ãã¢ã¯ã»ã·ãã«ãªè€æ°éžæUIãèªåã§å®è£
ããã®ã¯ããªã倧å€ãªã®ã§ãã©ã€ãã©ãªã䜿ãã®ãããããããšããçµè«ã«ã説åŸåããããŸããã ãŸããã¹ã€ããã¯ãæŒããç¬éã«åæ ããããã®ããªã®ã§ããä¿åããã¿ã³ãšçµã¿åãããããæé¡ïŒå¹Žé¡ã®ãããªäºæã«äœ¿ã£ããããã®ã¯æ¬æ¥ã®çšéãšãããããšããSwitchãšãã°ã«ãã¿ã³ã®äœ¿ãåãã®è©±ãçãäžãããŸããã ãµãããã å
š5åãçµããããšãå匷äŒã®1ååã䜿ã£ãŠãµãããããè¡ããŸããã ãã¬ãŒã ã¯ãŒã¯ã«ã¯ãKPTã§ã¯ãªã Fun / Done / Learn ãæ¡çšããŠããŸããKPTã ãšç¹ã«åé¡ããªããŠãProblemãæããå¿
èŠãããããã¬ãã£ããªç©ºæ°ã«ãªãããããšèããããã§ãã FunïŒæ¥œããã£ãã㚠茪èªäŒã¯è² è·ã®é«ããã©ãŒããããªã®ã«ãæ
åœè
ãçè§£ããããšãç©æ¥µçã«ã·ã§ã¢ããŠããã ãã èªãã§ããã ãã§ãªããæ
åœè
ãç¬èªã®è§£éãç¹ã亀ããŠãããé«åºŠãªå
容ã«ä»äžããŠãããïŒUIã©ã€ãã©ãªã®å¯Ÿå¿ç¶æ³ãªã©ïŒ çºè¡šè
ããšã«æ¬ã®ã©ãã«çç®ããŠããããè³æã«è¡šããŠããŠãä»ã®äººãã©ãæè¡æžãèªãã§ããã®ããç¥ãããšãã§ãã æèè
ã®ã¢ã¯ã»ã·ããªãã£ã®ç¥èŠãèžãŸããŠæ¬ãèªã¿é²ããäœéšãã§ãã çºè¡šåŸã®ãã£ã¹ã«ãã·ã§ã³ã§ãå
šå¡ãåã®ããã«å»ºèšçãªæèŠãåºãå Žã«ãªã£ã 蟻ããããã¯ããããªã³ã¡ã³ããããããŸããã æã®Webå¶äœè
ã¯ãHTMLè§£äœæ°æžã«æžããŠãããããã®ããšã¯æ®æ®µäœ¿ãããŠãããä»ã®æä»£ã¯ãããããç¥èããªããŠããããã¯ããäœããŠããŸããã ããããããã®èŒªèªäŒãéããŠã¿ãªãããç¥ãããšããŠãããŠããããšãããããã£ãã ããã«ããäžã®äžã®ç»å£ã«ã¯ãç»é¢ãèŠãŠããªããšçœ®ããŠãããããã®ãæå€ãšå€ãããã©ãä»åã®ã¿ãªããã®çºè¡šã¯ãç»é¢ãèŠãŠããªããŠã話ãšããŠçè§£ã§ããããšãããããããèšèãããã ããŸããã蟻ããããã®ç¹ã«ã€ããŠæžããèšäºã玹ä»ãããŠããã®ã§ãçºè¡šãããæ¹ã«ã¯ãã²èªãã§ã»ããã§ãã https://note.com/debugon/n/nae7f164bf8a7 DoneïŒããéããããš ããã³ããšã³ãå匷äŒã§æžç±ã茪èªããã¹ã¿ã€ã«ã¯åããŠã ã£ãããç¡äºã«å®èµ°ã§ãã 瀟å
ã«ãHTMLè§£äœæ°æžãã®ååšãåºãããã è€æ°åã«ããã£ãŠ1åã®æè¡æžãèªãããšããã¹ã¿ã€ã«ãå匷äŒãšããŠ1ã€ç¢ºç«ã§ãã äžäººã§èªãã®ãã€ããæ¬ã§ããå匷äŒã«æã¡èŸŒãã§ã¿ããªã§èªãããšããéžæè¢ãã§ããã®ã¯å€§ããªåç©«ã§ãã LearnïŒåŠãã ããš HTMLã®çŸè¡ä»æ§ã¯åžžã«æŽæ°ããç¶ããHTML Standardãªã®ã§ãæžç±ã®å
容ã¯ãã§ã«å€ããªã£ãŠããéšåããããã ãããã æžç±ã¯åã£ããããšããŠäœ¿ããæªãããšæã£ãã仿§ãåŒã ã»ã¯ã·ã§ãã³ã°ã³ã³ãã³ããã°ã«ãŒãã³ã°ã³ã³ãã³ããããã¹ãã¬ãã«ã»ãã³ãã£ã¯ã¹ãšãã£ãHTMLã®åç¹ãæ¹ããŠæãåºãã a èŠçŽ ã®å
容ã¢ãã«ã¯TransparentïŒééçïŒã§ã芪ããããŒã³ã³ãã³ããªã a ã®äžã« div ãªã©ã眮ãããšãã§ãã ã»ãã³ãã£ãã¯ãªHTMLãæžãã°ã¢ã¯ã»ã·ããªãã£ãç¶²çŸ
ã§ããããã§ã¯ãªãã çµå±ãèŠåºããã©ãã«ãé©åã«ä»ããããšããã¢ã¯ã»ã·ããªãã£çã«äžçªéèŠ èŠãç®ã«é Œã£ãŠããããŒã¯ã¢ããããèŠçŽ ã®æå³ããèãçŽããã£ããã«ãªã£ã æ
åœã«ãªã£ã人ã¯èª°ãçºè¡šãé¿ããã1é±éã§1æéåã®è°è«ãã§ããè³æãäœã£ãŠããŠãããã 1åãããã®é©åãªããªã¥ãŒã æ ãã€ããã ããŸããã£ãçç±ããµãããã£ãŠã¿ã ãµããããã®å
容ãèžãŸããŠãä»åã®èŒªèªäŒãããŸããã£ãçç±ãæŽçãããšã次ã®4ã€ã ãšæããŸãã çŸå Žã®èª²é¡ãã顿ãéžãã ããªããšãªãè¯ããããªæ¬ãã§ã¯ãªããåããŒã ãžã®ãã¢ãªã³ã°ã§èŠããå
±é課é¡ïŒæ
å ±èšèšã»ã¢ã¯ã»ã·ããªãã£ïŒããéç®ããŠæ¬ãéžã³ãŸããããã®ãããåå è
ã«ãšã£ãŠãèªåããšãã«ãªããããã£ãã®ã ãšæããŸãã å§ããããŒãã«ã培åºçã«äžãã 玹ä»ããäŒãæãããèªããªããŠã倧äžå€«ããšæèšãããç¯å²ãäž»èŠãªç¯ã«çµããæžç±ãäŒç€Ÿã§çšæããããšãã£ã工倫ã§ãåå ã®å¿ççãªããŒãã«ãäžããŸããã èª¬ææ¹æ³ãæ
åœè
ã«ä»»ãã æ¬ã®å
容ããªããã®ã§ã¯ãªããããããªãã ããšæããç¹ã«çµããUIã©ã€ãã©ãªãšçªãåãããããªã©æ
åœè
ããšã®åãå£ãçãŸããæ¯åéã£ãé¢çœãããããŸããã æèè
ãäžç·ã«èªãã§ããã æžç±ã®å
容ããçŸåšã®ä»æ§ãå®éã®ã¹ã¯ãªãŒã³ãªãŒããŒã®æåãšç
§ããåãããŠè£è¶³ããŠããããããšã§ããèªãã ãã®äŒããããçè§£ããŠè°è«ããäŒãã«ãªããŸããã ãããã« ä»åã®èŒªèªäŒãéããŠãHTMLã®ç¥èãã®ãã®ã¯ãã¡ããããå匷äŒã§1åã®æ¬ãèªã¿åãããšããæ°ããåãæã«å
¥ããããšãã§ããŸããã ãµããããã§ã¯ã次ã®é¡æãšããŠReactã®å
¬åŒããã¥ã¡ã³ãã®ãããªç¡æã§èªãããªãã¡ã¬ã³ã¹ãèªãã®ãè¯ãããããšãã声ããæžç±ã®å
容ãèµ·ç¹ã«ãçŸåšã®HTMLã®ä»æ§ãAIæä»£ã®ããŒã¯ã¢ããã«ã€ããŠããã«è°è«ãæ·±ããå Žãã€ãããªããããšããã¢ã€ãã¢ãåºãŠããŸãã å°äººæ°ã®ãµããããã§ã¯ãããŸãããããã®èŒªèªäŒãä¹ãè¶ããããšã§ãæ°ããããšãã§ããããªå¯èœæ§ãæããŠããŸãã 瀟å
ã§èŒªèªäŒãäŒç»ããããšããŠããæ¹ã®åèã«ãªãã°ããããã§ãã
ããã«ã¡ã¯ããã€ãã¹ Tech Officeã§ãã ãã€ãã¹æ ªåŒäŒç€Ÿã®ããã¯ããŒã ãçŽè¿ã§éçºããæ©èœãåãçµã¿ãçŸå Žã®ãšã³ãžãã¢ããå
±æãããMIIDAS Tech LIVEãã 第15åç®ã®éå¬ãšãªãä»åã¯3ã€ã®ãªãªãŒã¹ã»åãçµã¿ããå±ãããŸããã