- TOP
- ã¿ã°äžèЧ
- Xcode
Xcode
ã€ãã³ã
該åœããã³ã³ãã³ããèŠã€ãããŸããã§ãã
ãã¬ãžã³
該åœããã³ã³ãã³ããèŠã€ãããŸããã§ãã
æè¡ããã°
æ ªåŒäŒç€Ÿã¿ããã«ã§å
å®è
ã¢ã«ãã€ããããŠããåå·å¯å€ª (@kanta_cky) ã§ãã æ¬èšäºã§ã¯ã ...
æ¬èšäºã¯ 2026 幎 8 æ 3 æ¥ã«å
¬éããã Clare LiguoriãRomain DuraãAl HarrisãRichard Threlkeld ã«ãã â One agent, every surface: how we built the Kiro agent harness â ã翻蚳ãããã®ã§ãã Kiro ã®éçºåæãç§ãã¡ã¯éçºè
ã® 1 æ¥ã®ãªãã§ãšãŒãžã§ã³ãé§åã®éçºãã©ã®ããã«æããããã¹ãããè°è«ãå§ããŸãããç¹°ãè¿ãç«ã¡è¿ã£ãã®ã¯ãã»ãã·ã§ã³ãã©ããããããšã¯ã©ãŠããµã³ãããã¯ã¹ã®éãæ©æŠãªãè¡ãæ¥ããå§¿ã§ããã1 æ¥ã®çµããã«ã©ããããããéããŠããKiro ã»ãã·ã§ã³ã¯ã¯ã©ãŠãã§åãç¶ããŸããã³ãŒããŒãåãã«è¡ãåéã«ã¹ããŒããã©ã³ããç¶æ³ã確èªã§ããŸããç¿æãKiro IDE ãéããŠäžæãããšããããäœæ¥ãåéããŸãã Web ç Kiro ã§ãããžã§ã¯ããéå§ããKiro IDE ã§ã³ã³ããã¹ãã远å ããæ¢ã«ãã¹ããšã€ãã¬ãŒã·ã§ã³ãé²ããŠããã¿ãŒããã«ã§ã¯ Kiro CLI ã䜿ãç¶ããSlack ãã鲿ã確èªããŸãããšãŒãžã§ã³ãé§åã®éçºãšã¯ãäœæ¥ããããããã¯ã©ã€ã¢ã³ããæšªæãã 1 ã€ã®é£ç¶ããäŒè©±ã§ããã¹ãã§ãã ä»å¹Žã®åããç§ãã¡ã¯ãšãŒãžã§ã³ãã®ã¢ãŒããã¯ãã£ããã®ããžã§ã³ã®å®çŸã劚ããŠããããšã«æ°ã¥ããŸãããåœæãKiro IDEãCLIãWeb ã®åã¯ã©ã€ã¢ã³ãã¯ãããããç¬èªã®ã»ãã·ã§ã³ãã©ãŒããããããŒã«ã»ãããèšå®ã¢ãã«ãæã€å°çšã®ãšãŒãžã§ã³ããå®è¡ããŠããŸãããã»ãã·ã§ã³ãšç°å¢ã®éã容æã«ç§»åããã«ã¯ãã©ã®ã¯ã©ã€ã¢ã³ãã䜿ã£ãŠããŠããã©ãã§åäœããŠããŠãåãããã«æ¯ãèãåäžã®ãšãŒãžã§ã³ããå¿
èŠã§ããã¯ã©ã€ã¢ã³ãå°çšã®ãšãŒãžã§ã³ãã¢ãŒããã¯ãã£ã§ã¯ããšãŒãžã§ã³ãå士ãååãªå
±éåºç€ãæã£ãŠããªãã£ããããããã¯ã©ã€ã¢ã³ãã§éå§ããã»ãã·ã§ã³ãå¥ã®ã¯ã©ã€ã¢ã³ãã«ç§»ãããšãã§ããŸããã§ãããæ¬èšäºã§ã¯ã3 ã€ã®ãšãŒãžã§ã³ãã®ã³ãŒãããŒã¹ã 1 ã€ã® Kiro ãšãŒãžã§ã³ãããŒãã¹ã«çµ±åããéçš (ãã¡ãã Kiro èªèº«ã䜿ã£ãŠæ§ç¯ããŸãã) ãšãç§ãã¡ã®ããžã§ã³ãå®çŸå¯èœã«ããã¢ãŒããã¯ãã£äžã®æ±ºå®ã«ã€ããŠè§£èª¬ããŸãã åå²ããŠãã£ã 3 ã€ã®ããŒãã¹ Kiro ãäœãå§ããåœåãç§ãã¡ã¯ã¹ããŒããšå®éšãåªå
ããŸãããåã¯ã©ã€ã¢ã³ãããŒã ãç¬èªã®ãšãŒãžã§ã³ãããŒãã¹ãäœãããšãæšå¥šããŸããããšãŒãžã§ã³ãããŒãã¹ãšã¯ããšãŒãžã§ã³ãã«ãŒããããŒã«å®è¡ããµããšãŒãžã§ã³ããžã®å§è²ãã»ãã·ã§ã³ç®¡çãèšå®ã®ããŒããã¢ãã«ãšã®éä¿¡ã管çãããªãŒã±ã¹ãã¬ãŒã·ã§ã³å±€ã®ããšã§ããIDE ããŒã 㯠Code OSS ã®æ¡åŒµã¢ãã«ã«åãã㊠TypeScript ã§ãCLI ããŒã ã¯ããã©ãŒãã³ã¹ãéèŠã㊠Rust ã§ãWeb ããŒã ã¯ææ°ã®ãšãŒãžã§ã³ãç ç©¶ã«è¿ãå Žæã«å±
ãããã« Python ã§ãããããç¬èªã«æ§ç¯ããŸããã ããŒãã¹ãåããããšã§åããŒã ã¯ç¬ç«ããŠçŽ æ©ããªãªãŒã¹ããã€ãã¬ãŒã·ã§ã³ã§ããŸããããåæã«ããããã®ããŒã ãç°ãªãéžæãããããšãæå³ããŸãããã»ãã·ã§ã³ã¹ãã¬ãŒãžã¯ã¯ã©ã€ã¢ã³ãããšã«åäœãç°ãªããŸãããæš©éã·ã¹ãã ã¯ç¬ç«ããŠèšèšãããŠãããäºææ§ã®ãªãæ§æã䜿ã£ãŠããŸãããCLI ã¯æ£èŠè¡šçŸããŒã¹ã® allowedCommands / deniedCommands ã䜿ããIDE 㯠trustedCommands ã«ãã¬ãã£ãã¯ã¹ãããããdenylist ã«ã¯ãµãã¹ããªã³ã°ãããã䜿ã£ãŠããŸãããã³ã³ãã¯ã·ã§ã³æŠç¥ãåå²ããŸããããµããšãŒãžã§ã³ãã®ã³ã³ããã¹ãå
±æãç°ãªãã¢ãã«ã«åŸã£ãŠããŸãããã«ã¹ã¿ã ãšãŒãžã§ã³ããã¯ã©ã€ã¢ã³ãããšã«åäœãéããŸãããæ©èœã»ãããåè£ããŸããã仿§é§åéçºãš powers 㯠IDE ã®ã¿ã§åäœãããã©ã³ã¢ãŒããšã³ãŒãã€ã³ããªãžã§ã³ã¹ã¯ CLI ã®ã¿ã§åäœããŠããŸããã å®è£
ã³ã¹ãã¯æéãšãšãã«è€å©ã§èšãã¿ãŸãããæ°ããæ©èœã¯ 3 åäœã£ãŠ 3 åä¿å®ããå¿
èŠãããããã®çµæãšããŠãšãŒãžã§ã³ãã®æåããããã«ç°ãªãããšããããŸããããã°ã 3 åä¿®æ£ããå¿
èŠããããŸããããŠãŒã¶ãŒã¯ã©ã®ã¯ã©ã€ã¢ã³ããéžã¶ãã«ãã£ãŠäžæŽåãäœéšããããšã«ãªããŸãããã»ãã·ã§ã³ãã¯ã©ã€ã¢ã³ããšã³ã³ãã¥ãŒããæšªæããŠç§»åãããšããç§ãã¡ã®ããžã§ã³ã¯ãå
±æã®ã»ãã·ã§ã³ãã©ãŒããããå
±æã®ããŒã«ã»ãããå
±æã®èšå®ã¢ãã«ãååšããªãããã¢ãŒããã¯ãã£çã«äžå¯èœã§ãããåããŒã ã®ç¬ç«æ§ãšåå¥ã®ã¹ããŒããç¶æããããã«ãã¯ã©ã€ã¢ã³ãéã§ãšãŒãžã§ã³ãã®æ¯ãèãã«é¢ããå¥çŽãåæãã3 ã€ã®ããŒãã¹ããããã§å®è£
ãããšããæ¡ãæ€èšããŸããããããã€ã³ã¿ãŒãã§ãŒã¹ã®æŽåãåãããšããæ°æ©èœããšã«å¢ããŠãã調æŽã³ã¹ããçã¿ãŸããæ°æ©èœããšã«ä»æ§æžã3 ã€ã®å®è£
ããããŠåäžã®æ¯ãèããç¶ç¶çã«æ€èšŒããäœæ¥ãå¿
èŠã«ãªãã®ã§ãã 転æ©ãšãªã£ãã®ã¯ãWeb ç Kiro ã®ãããªãã¯ããŒã³ãã®æºåãé²ããŠãããšãã§ãããWeb ç Kiro ãç¬èªã®ãšãŒãžã§ã³ããšãšãã«ããŒã³ããããã®è€å©çãªå®è£
ã³ã¹ããæãç¶ããã®ã§ã¯ãªããåããŒã ãåŠãã ãã¹ããªç¥èŠãçµã¿åãããåäžã®ãšãŒãžã§ã³ãããŒãã¹ãæ§ç¯ããããšã決ããŸãããåäžã®ããŒãã¹ã§ããã°ããŒã éã®éè€ããªããªãããã¹ãŠã®åŽåã 1 ç®æã«éäžæè³ã§ããŸãã Kiro ãšãŒãžã§ã³ãããŒãã¹ã®ã¢ãŒããã¯ã㣠ç§ãã¡ãæ©ã段éã§äžããéèŠãªã¢ãŒããã¯ãã£å€æã¯ãããŒãã¹ãåã¯ã©ã€ã¢ã³ãã«ã³ã³ãã€ã«ããŠçµã¿èŸŒãã©ã€ãã©ãªã§ã¯ãªããç¬ç«ãããµãŒããŒããã»ã¹ãšããŠæ§ç¯ããããšã§ãããéå»ã®è©Šã¿ãããå
±æã©ã€ãã©ãªã§ã¯ååã«åŒ·ãå¢çã匷å¶ã§ããªãããšãããã£ãŠããŸãããã¯ã©ã€ã¢ã³ãã³ãŒãã¯å
¬éãæå³ããŠããªãå
éšã¡ãœãããåŒã³åºãå§ããããã©ã€ãã©ãªã®äžã«ç¬èªã®ãšãŒãžã§ã³ãããžãã¯ãéããŠããŸããŸãããããªãã°å®è£
ã¯åã³åå²ããŠãããŸããç¬ç«ããããã»ã¹ã§ããã°ããã®åé¢ãçŸå®ã®ãã®ã«ãªããŸããããŒãã¹ãšã¯ã©ã€ã¢ã³ãã¯åãèšèªãã©ã³ã¿ã€ã ãå
±æããå¿
èŠããªããããåã¯ã©ã€ã¢ã³ãã¯èªåã®ãã©ãããã©ãŒã ã«é©ããã¹ã¿ãã¯ã®ãŸãŸçãŸããŸãã ããã«ããã3 ã€ã®å¯çµåããã¯ã©ã€ã¢ã³ããšãšãŒãžã§ã³ãã®ãã¢ã§ã¯ãªãã ââââââââââââââ ââââââââââââââââââââââââââââââââââ â Kiro IDE ââââââââ IDE agent (TypeScript) â ââââââââââââââ ââââââââââââââââââââââââââââââââââ ââââââââââââââ ââââââââââââââââââââââââââââââââââ â Kiro CLI ââââââââ CLI agent (Rust) â ââââââââââââââ ââââââââââââââââââââââââââââââââââ ââââââââââââââ ââââââââââââââââââââââââââââââââââ â Kiro Web ââââââââ Web agent (Python) â ââââââââââââââ ââââââââââââââââââââââââââââââââââ ã¯ã©ã€ã¢ã³ããšåäžã®ãšãŒãžã§ã³ãããŒãã¹ãšã®éã«ããããªåé¢ãã§ããŸããã âââââââââââââââââââââââââââ âââââââââââââââââââââââââââââââââââ â Clients â â Kiro agent harness â â â â â â UX and presentation â â Agent loop â â User interaction ââââprotocolââââ Tools and sub-agents â â Platform-native tools â â Session state â â (optional overrides) â â MCP client â â â â Configuration and steering â â â â Permissions â â â â Telemetry â âââââââââââââââââââââââââââ âââââââââââââââââââââââââââââââââââ Kiro ãšãŒãžã§ã³ãããŒãã¹ã¯ã³ãŒãããŒã¹ã®é£ã§åäœãã軜éãªããã»ã¹ã§ãé«éã«èµ·åãããšãŒãžã§ã³ãåŽã®ãã¹ãŠãææããŸããã¯ã©ã€ã¢ã³ãã¯ãŠãŒã¶ãŒããšãŒãžã§ã³ããšã©ã®ããã«ããåããããããšãŒãžã§ã³ãã®äœæ¥ãã©ã®ããã«æç€ºããããææããŸãããã®å¢çãè¶ããå¯äžã®æ¹æ³ã¯ãå®çŸ©ããããããã³ã«ã€ã³ã¿ãŒãã§ãŒã¹ã§ããã³ã³ãã€ã«ãããŠçµã¿èŸŒãŸããã©ã€ãã©ãªã§ã¯ãªãç¬ç«ããããã»ã¹ã§ãããããããããã³ã³ãã¥ãŒãäžã§åäœã§ããŸããåãããŒãã¹ãã©ãããããäžã§ããã¯ã©ãŠãäžã® VM å
ã§ããã¯ã©ã€ã¢ã³ãã«æèãããããšãªãèµ·åã§ããŸãã ãµãŒããŒãšã¯ã©ã€ã¢ã³ãã®éã«æç¢ºãªã€ã³ã¿ãŒãã§ãŒã¹ããããšããããšã¯ããšãŒãžã§ã³ãã®ã³ãŒããã¯ã©ã€ã¢ã³ããšã¯ç¬ç«ããŠé²åããããšãæå³ããŸããããŒãã¹ã®å€æŽããããã³ã«ã€ã³ã¿ãŒãã§ãŒã¹ã«åœ±é¿ãäžããªãå Žå (ããšãã°æ°ããããŒã«ã®è¿œå ããã©ã³ãã³ã°ã®æ¹åããšãŒãžã§ã³ãã«ãŒãã®ãã¥ãŒãã³ã°)ãã¯ã©ã€ã¢ã³ãåŽã®å€æŽãŒãã§ããã«ãã¹ãŠã®ã¯ã©ã€ã¢ã³ãã«ãªãªãŒã¹ã§ããŸããããšãã°æè¿ãã«ã¹ã¿ã ãšãŒãžã§ã³ãã®ã©ã€ããªããŒãæ©èœã远å ããŸãããã»ãã·ã§ã³äžã« .kiro/agents/ ã®ãã¡ã€ã«ãç·šéãããšãããŒãã¹ãããã«æ€ç¥ããå©çšå¯èœãªã³ãã³ããã¯ã©ã€ã¢ã³ãã«å床éç¥ããŸããå©çšå¯èœãªã³ãã³ãã®éç¥ã¿ã€ãã¯ãã§ã«ãããã³ã«ã«ååšããŠãããããã¯ã©ã€ã¢ã³ãã®å€æŽã¯äžèŠã§ãããã©ã®ã¯ã©ã€ã¢ã³ãã远å ã®å€æŽãªãã«ãã®æ©èœãæã«å
¥ããããã®ã§ãã ãµããŒã察象ã®ã¯ã©ã€ã¢ã³ãã倿§ãªããããã®ããŒãã¹ã¯ç»äžçãªèšèšã§ã¯ãããŸãããã¯ã©ã€ã¢ã³ãããšã«æ©èœãç°ãªããäžéšã®æäœã¯ã¯ã©ã€ã¢ã³ããã€ãã£ãã®æ©èœã䜿ã£ãŠã¯ã©ã€ã¢ã³ãå±€ã§å®è£
ããã»ããçã«ããªã£ãŠããŸããã¯ã©ã€ã¢ã³ãã¯ç¬èªã®ããŒã«ãæäŸããŠçµã¿èŸŒã¿ããŒã«ãæå¶ã§ããèªåã®ãã©ãŒã ãã¡ã¯ã¿ãŒ (form factor) ã«åã£ããã®ã䜿ããŸããããšãã° IDE ã¯ãã¡ã€ã«æäœã« Code OSS ã® API ã䜿ãããã¡ã€ã«ã·ã¹ãã äžã§çŽæ¥åäœããããŒãã¹ã®çµã¿èŸŒã¿ããŒã«ã§ã¯ãªããç¬èªã®ãã¡ã€ã«èªã¿æžãããŒã«ãæäŸããŠããŸãããšãŒãžã§ã³ãããããã®ã¯ã©ã€ã¢ã³ãæäŸããŒã«ã®ãããããå®è¡ããå¿
èŠããããšãã¯ãã¯ã©ã€ã¢ã³ãã«éç¥ããã¯ã©ã€ã¢ã³ããããŒã«ãå®è¡ããŠçµæãè¿ããŸãã ãããã³ã«: Agent Client Protocol (ACP) ã¯ã©ã€ã¢ã³ããšããŒãã¹ã®å¢çãå®çŸ©ãããããã³ã«ãšããŠã Agent Client Protocol (ACP) ãéžã³ãŸãããACP ã¯ãšãŒãžã§ã³ããšã¯ã©ã€ã¢ã³ãã®éä¿¡ãæšæºåãã仿§ã§ã2026 幎 6 æã« 1.0 ã«å°éããŸããããã®ãããã³ã«ã¯ JetBrains ã® IDEãXcodeãZed ãšãã£ã IDE ããObsidianãEmacsãNeovim ãšãã£ãã»ãã®ãšãã£ã¿ãŒã§ããµããŒããããŠããŸããç§ãã¡ã¯ä»å¹Žã®åãã« Kiro CLI ã§ ACP ãæ¡çšããçµéš ããããããã®ã¢ããªã±ãŒã·ã§ã³å
ã§çŽæ¥ Kiro ãšããåãã§ããããã«ããŠããŸãããçµ±äžãããããŒãã¹ã«ã ACP ãæ¡çšããããšã«ããã®ã¯ããµãŒãããŒãã£è£œãšãã£ã¿ãŒåãã ãã§ãªããKiro èªèº«ã®ã¯ã©ã€ã¢ã³ããšç§ãã¡èªèº«ã®ãšãŒãžã§ã³ãã®éã®ã€ã³ã¿ãŒãã§ãŒã¹ãšããŠäœ¿ãããã§ããACP ã® 2 ã€ã®æ§è³ªããããå¯èœã«ããŸãããã«ã¹ã¿ã ã¡ãœããã«å¯Ÿããæ¡åŒµæ§ãšããã©ã³ã¹ããŒãã®æè»æ§ã§ãã ACP ã¯å
¬åŒã«ãã©ã³ã¹ããŒããšã㊠stdio ããµããŒãããŠããŸããããã¯ããŒãã¹ããšãã£ã¿ãŒãã¿ãŒããã«ã®åããã»ã¹ãšããŠåäœããããŒã«ã«ã¯ã©ã€ã¢ã³ãã§æ©èœããŸããWeb ç Kiro ã iOS ã¢ããªã®ãããªãªã¢ãŒãã¯ã©ã€ã¢ã³ãã«ã¯ãå¥ã®ãã©ã³ã¹ããŒããå¿
èŠã§ããããããã®ã¯ã©ã€ã¢ã³ããã¯ã©ãŠããµã³ãããã¯ã¹ã§åäœããããŒãã¹ã«æ¥ç¶ã§ããããã«ãç¬èªã® WebSocket ããŒã¹ã®ãã©ã³ã¹ããŒãã远å ããŸãããã¯ã©ã€ã¢ã³ããã©ã®ãã©ã³ã¹ããŒãã䜿ããã«é¢ãããããã€ããªãããŒã«ããšãŒãžã§ã³ãã®æ¯ãèãã¯åäžã§ãã âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â Kiro agent harness â ââââââââââââ¬âââââââââââââââââ¬âââââââââââââââââ¬âââââââââââââââââ â stdio â stdio â WebSocket â â â ââââââââŽâââââââ ââââââââŽââââââ âââââââââŽâââââââââââââââ â Kiro CLI â â Kiro IDE â â Kiro Web · iOS app â â (terminal) â â (Code OSS) â â (browser · mobile) â âââââââââââââââ ââââââââââââââ ââââââââââââââââââââââââ ãã©ã³ã¹ããŒããè¶
ããŠãç§ãã¡ã¯ ACP ã®ã¡ãœããã»ããã Kiro-ACP ãšåŒã¶ãã®ã«æ¡åŒµããŸãããæšæºã® ACP ã¯åºæ¬çãªéšå (ã»ãã·ã§ã³ã®ã©ã€ããµã€ã¯ã«ãã¡ãã»ãŒãžã®ã¹ããªãŒãã³ã°ãããŒã«åŒã³åºãã®ã¬ããŒã) ãæ±ããŸãããKiro ã®æ©èœã«ã¯ãã以äžã®ãã®ãå¿
èŠã§ãããããšãã°ã©ã€ãã¹ãã¢ãªã³ã°ã远å ããŸããããŠãŒã¶ãŒã¯ãšãŒãžã§ã³ãã®äœæ¥äžã§ãã¡ãã»ãŒãžãéä¿¡ã§ãããã®ã¡ãã»ãŒãžãæ¬¡ã®æšè«ã¿ãŒã³ã§æ³šå
¥ãããããšã§ããã£ã³ã»ã«ãåŸ
æ©ãªãã«ãšãŒãžã§ã³ãã®æ¹åæ§ã調æŽã§ããŸããACP ã¯ã¡ãã»ãŒãžã®ãã¥ãŒã€ã³ã°ããµããŒãããŠããªããããã©ã€ãã¹ãã¢ãªã³ã°ãå®çŸããããã«æ°ããã¡ãœããããããã£ãšéç¥ã§ ACP ãæ¡åŒµããŸããããŸã Kiro ã®ä»æ§é§åéçºã¯ãŒã¯ãããŒãå°çšã®ã¡ãœãã矀ãšããŠã¢ãã«åããACP ã®åºæ¬çãªããŒã«æ¿èªãè±å¯ãªãã«ãã¹ã³ãŒãã®æš©éã·ã¹ãã ãžãšæ¡åŒµããã³ã³ããã¹ããŠã£ã³ããŠã®äœ¿çšç¶æ³ãšããã¯å®è¡ã«é¢ããéç¥ã远å ããŸãããåèšã§ Kiro-ACP ã¯ããŒã¹ãããã³ã«ã«å ã㊠20 ãè¶
ãããšãŒãžã§ã³ãåŒã³åºãå¯èœãªã¡ãœããã15 ã®ã¯ã©ã€ã¢ã³ãåŒã³åºãå¯èœãªã¡ãœããã20 ã®éç¥ã¿ã€ãã远å ããŠããŸããACP ã®æ¡åŒµã¢ãã«ã¯ããããããã«ä¿ã¡ãŸãã仿§ã©ãããã«ã¹ã¿ã ã¡ãœããã¯ã¢ã³ããŒã¹ã³ã¢ã®ãã¬ãã£ãã¯ã¹ã䜿ããKiro ã®æ¡åŒµã¯ãã¹ãŠ _kiro/ åå空éã®äžã«é
眮ãããŠããŸãããããã³ã«ããã©ãŒã¯ããããšãªããKiro åºæã®æ©èœã®ããã«æ¡åŒµã§ããã®ã§ãã çµæãšããŠããµãŒãããŒãã£ã®ã¯ã©ã€ã¢ã³ãã¯ãã¡ãŒã¹ãããŒãã£ã®ã¯ã©ã€ã¢ã³ããšåãæ¹æ³ã§æ¥ç¶ã§ããŸããACP äºæã®ã¯ã©ã€ã¢ã³ãã§ããã°ãããŒã«ããµããšãŒãžã§ã³ããã»ãã·ã§ã³ç®¡çãMCP æ¥ç¶ãå«ãå®å
šãªãšãŒãžã§ã³ããå©çšã§ããŸãããã¡ãŒã¹ãããŒãã£ã®ã¯ã©ã€ã¢ã³ã (IDEãCLIãWebãiOS) ã¯å ã㊠Kiro-ACP ã®æ¡åŒµãå©çšããŠãã©ã€ãã¹ãã¢ãªã³ã°ã仿§ããªãããªæš©é UIãã³ã³ããã¹ã䜿çšéãã©ããã³ã°ãšãã£ãæ©èœãæäŸããŸãã 仿§ããšãŒãžã§ã³ããããã¯ãã©ãã§ã䜿ãã åäžã®ããŒãã¹ãããããçŽæ¥çãªã¡ãªããã¯ããããŸã§ 1 ã€ã®ã¯ã©ã€ã¢ã³ãã«éã蟌ããããŠããæ©èœããåãèšå®ãã©ãŒããããšåãæ¯ãèãã§ãã©ã®ã¯ã©ã€ã¢ã³ãã§ã䜿ããããã«ãªã£ãããšã§ãã 仿§é§åéçº ã¯ä»¥å㯠IDE éå®ã§ãããä»ã§ã¯ CLI ( /spec new ã§éå§ã§ããŸã) ãš Web ç Kiro ã§ãåäœããŸãããšãŒãžã§ã³ãã¯ä»æ§ã¯ãŒã¯ãããŒãé§åãã LLM ãšã®ããåããšèªååãããæšè« (èŠä»¶ã®çæãæè¡èšèšã®äœæãäœæ¥ã®ã¿ã¹ã¯ãžã®åè§£) ãæ±ããåã¯ã©ã€ã¢ã³ãã¯èªåã®ãã©ãŒã ãã¡ã¯ã¿ãŒã«åã£ã圢ã§ãããæç€ºããŸããIDE ã¯ä»æ§ã®ã¢ãŒãã£ãã¡ã¯ããæšªäžŠã³ã®ãã€ã³ã§è¡šç€ºããŸããCLI ã¯ã¿ãŒããã«å
ã§ã¬ã³ããªã³ã°ããŸããWeb ç Kiro ã¯ãã©ãŠã¶ãŒã§ã€ã³ã©ã€ã³ã¬ãã¥ãŒãšãã«ããŠãŒã¶ãŒã³ã©ãã¬ãŒã·ã§ã³ãšãšãã«è¡šç€ºããã®ã§ãããŒã ãäžç·ã«ä»æ§ãã€ãã¬ãŒã·ã§ã³ã§ããŸãããšãŒãžã§ã³ã㯠ACP ã話ããã¯ã©ã€ã¢ã³ãã¯åºåãã©ãæç€ºããããæ±ºããŸãã ã«ã¹ã¿ã ãšãŒãžã§ã³ã ã¯ãã©ã®ã¯ã©ã€ã¢ã³ãã§ãåã .kiro/agents/ Markdown ãã©ãŒãããã䜿ããŸãããšãŒãžã§ã³ãã«ã¯èª¬æãã·ã¹ãã ããã³ãããã¿ã°ããŒã¹ã®ããŒã«éžæ (åå¥ã®ããŒã«åã§ã¯ãªã read ã write ã shell ãšãã£ãã·ã³ãã«ãªã¿ã°)ãã¢ã¯ã»ã¹å¯èœãªãµããšãŒãžã§ã³ããã€ã³ã©ã€ã³ã® MCP ãµãŒããŒå®çŸ©ãã€ã³ã©ã€ã³ã®æš©éã«ãŒã«ãå®çŸ©ã§ããŸããã«ã¹ã¿ã ãšãŒãžã§ã³ãã®èšå®ãããŒãžã§ã³ç®¡çã«ã³ãããããã°ãããŒã ã¡ã³ããŒå
šå¡ããã¹ãŠã®ã¯ã©ã€ã¢ã³ãã§äœ¿ããããã«ãªããŸãã --- description: ã»ãã¥ãªãã£äžã®åé¡ã確èªããã³ãŒãã¬ãã¥ãŒãšãŒãžã§ã³ã tools: [read, shell, "@github"] permissions: rules: - capability: fs_read effect: allow - capability: shell match: ["git diff *", "git log *", "npm audit"] effect: allow mcpServers: github: url: https://api.githubcopilot.com/mcp/ headers: Authorization: Bearer ${GITHUB_TOKEN} --- ããªãã¯ã»ãã¥ãªãã£ã«éç¹ã眮ããã³ãŒãã¬ãã¥ã¢ãŒã§ããçŸåšã®å·®åã ã¬ãã¥ãŒããè匱æ§ãèªèšŒæ
å ±ã®æŒæŽ©ãå®å
šã§ãªããã¿ãŒã³ã確èªããŠãã ããã äŸåé¢ä¿ã®ã¢ããã€ã¶ãªã¯ npm audit ã§ç¢ºèªããŠãã ããã ãã㯠ã¯åã .kiro/hooks/*.json ãã©ãŒãããã䜿ããåãããªã¬ãŒ ( SessionStart ã PreToolUse ã PostToolUse ã FileCreate ã FileSave ) ã§ããã¹ãŠã®ã¯ã©ã€ã¢ã³ãã§åãããã«åäœããŸãã æ©èœã®å¯çšæ§ãè¶
ããŠãçµ±äžãããããŒãã¹ã¯ãæ£ããäœãã®ãé£ããé åã§ãäžè²«ããæ¯ãèããæäŸããŸããã³ã³ããã¹ã管çãã³ã³ãã¯ã·ã§ã³ãèŠçŽã¯ãã©ã®ã¯ã©ã€ã¢ã³ãã䜿ã£ãŠããã¹ãŠåãããã«åäœããŸãã以åã¯ããŒãã¹ããšã«ç¬èªã®ã³ã³ãã¯ã·ã§ã³æŠç¥ãæã£ãŠãããããIDEãCLIãWeb ã¯ã©ã€ã¢ã³ãã®ã©ãã䜿ã£ãŠãããã«ãã£ãŠã»ãã·ã§ã³ãé·ããªãã«ã€ããŠæ¯ãèããå€ããããšããããŸãããä»ã§ã¯ 1 ç®æã§å®è£
ããã¹ããæ¹åãããåäžã®å®è£
ããããŸããçµ±äžãããããŒãã¹ãã¯ã©ã€ã¢ã³ãå
šäœã«å±éããŠä»¥æ¥ãã³ã³ããã¹ãä¿æãæ¹åãããããããŒãã¹ã«ããè¯ãã³ã³ãã¯ã·ã§ã³ããã³ããããã§ã«ãªãªãŒã¹ããŠããŸãããŸãããŒãã¹ã®æ·±ãéšåã§ã¬ãžãªãšã³ã¹ãšããã©ãŒãã³ã¹ã®æ¹åããªãªãŒã¹ããŸãããã¢ãã«æšè«ãªã¯ãšã¹ãã®æ¹åããããªãã©ã€ããžãã¯ãé«éãªæš©éè©äŸ¡ãããåŒŸåæ§ã®ãã MCP ãµãŒããŒæ¥ç¶ãªã©ã§ãããã¹ãŠã®ã¯ã©ã€ã¢ã³ãããããã®å€æŽã®æ©æµãåããŸããçµæãšããŠãã©ã®ã¯ã©ã€ã¢ã³ãã奜ããã«é¢ããããäžè²«ããå質ãšä¿¡é Œæ§ãåŸãããŸãã åäžã®ããªã·ãŒèšèª çµ±äžããŒãã¹ãç»å Žããåãåã¯ã©ã€ã¢ã³ãã¯ç°ãªãæ§æãç°ãªãã»ãã³ãã£ã¯ã¹ãç°ãªãèšå®å Žæãæã€ç¬èªã®æš©éã·ã¹ãã ãæã£ãŠããŸãããCLI ã¯æ£èŠè¡šçŸãã¿ãŒã³ã«ãã allowedCommands / deniedCommands ã䜿ããŸãããIDE ã¯ãã¬ãã£ãã¯ã¹ãããã«ãã trustedCommands ãšããµãã¹ããªã³ã°ãããã«ããå¥ã® commandDenylist ã䜿ããŸãããã©ã¡ãã®ã¯ã©ã€ã¢ã³ãã§ãæš©éã¯ããŒã«åäœã§ããã .env ãžã®èªã¿åããæåŠãã ãšãã£ãåäžã®æå³ã¯ããã¡ã€ã«ãèªããåããŒã« (readãglobãgrepãã³ãŒãã€ã³ããªãžã§ã³ã¹) ã«å¯ŸããŠåå¥ã«èšå®ããå¿
èŠããããŸãã1 ã€ã§ãèŠèœãšããšããšãŒãžã§ã³ãã¯å¥ã®ããŒã«çµç±ã§ãã®ãã¡ã€ã«ã«ã¢ã¯ã»ã¹ã§ããŠããŸãã®ã§ãããŠãŒã¶ãŒã¯ããŒã«åŒã³åºãããšã« y ãæŒãç¶ãããããã¹ãŠãä¿¡é Œãããã®äºæãè¿«ããããã®äžéã®å®çšçãªéžæè¢ããããŸããã§ãããç§ãã¡ãæ±ããŠããã®ã¯ãã±ã€ãããªãã£ã¬ãã«ã§æå³ã衚çŸã§ããæ°žç¶çãã€çµã¿åããå¯èœãªåæã«ãã£ãŠæ¿èªç²ã (acceptance fatigue) ãæžãããæš©éã¢ãã«ã§ããã ä»ã§ã¯ã圢åŒçã«æ€èšŒãããããªã·ãŒèšèªã§ãã Cedar ã«æ¯ãããããåäžã®ã±ã€ãããªãã£ããŒã¹ã®æš©éã¢ãã«ããããŸãã1 ã€ã®ã«ãŒã«ã§ããã¹ãŠã®ããŒã«ã«ãŸãããåçš®ã®æäœããŸãšããŠå¯Ÿè±¡ã«ã§ããŸãã rules: # Block all tools that read files from accessing secrets - capability: fs_read match: [".env", ".env.*", "secrets/**", "**/*.pem"] effect: deny # Allow specific shell commands without prompting - capability: shell match: ["npm test *", "npm run build", "git status"] effect: allow # Allow an MCP server's tools - capability: mcp match: ["github/*"] effect: allow ã±ã€ãããªãã£ã¯ããŒã«ãæ©èœããšã«ã°ã«ãŒãåããŸãã fs_read ã fs_write ã shell ã web_fetch ã mcp ã subagent ãªã©ã§ããfs_read ã® deny ã¯ããã¡ã€ã«ãèªããã¹ãŠã®ããŒã« ( read_file ã grep_search ã file_search ããããŠä»åŸè¿œå ããã read ç³»ããŒã«) ãåå¥ã«åæããããšãªããããã¯ããŸãã ããªã·ãŒã¯è€æ°ã®ã¹ã³ãŒãã«ãŸããã£ãŠåæã§ããdeny ãåžžã«åã€ã»ãã³ãã£ã¯ã¹ã§ããŒãžãããŸããKiro èªäœã¯å€æŽäžå¯èœãªã»ãã¥ãªãã£äžå€æ¡ä»¶ãé©çšããŸã (ããšãã°ããšãŒãžã§ã³ãã¯èªèº«ã®æš©éãã¡ã€ã«ã倿Žã§ããŸãã)ããšã³ã¿ãŒãã©ã€ãºç®¡çè
㯠MDM çµç±ã§å¶éãããã·ã¥ã§ããŸãããŠãŒã¶ãŒã¯èªåã®ã«ãŒã«ããŠãŒã¶ãŒã¬ãã«ãŸãã¯ã¯ãŒã¯ã¹ããŒã¹ã¬ãã«ã§èšå®ããŸãããšãŒãžã§ã³ããããã¡ã€ã«ã¯ãã®åœ¹å²ã«å¿ããæš©éã宣èšã§ããŸããã»ãã·ã§ã³ã¬ãã«ã®å€æã¯ãäœæ¥ããªããç©ã¿äžãã£ãŠãããŸããäºåã®èšå®ã¯äžèŠã§ããããªã·ãŒã¯åæã®å€æãäžãã«ã€ããŠèªç¶ã«è²ã£ãŠãããæå³ã®ããã¹ã³ãŒãã§ãããæ°žç¶åã§ããŸãã ããŒãã¹ãããžã§ã³ãè§£ãæŸã€ æ°ãããšãŒãžã§ã³ãããŒãã¹ã¢ãŒããã¯ãã£ã®ææã¯ãã§ã«çŸããŠããŸãããã¹ãŠã®ã¯ã©ã€ã¢ã³ããçµ±äžããŒãã¹ã«ç§»è¡ããŠä»¥æ¥ãã¯ã©ã€ã¢ã³ãåŽã®å€æŽãŒãã§è€æ°ã®æ©èœãã¯ã©ã€ã¢ã³ã暪æã§ãªãªãŒã¹ããŠããŸãããã°ããŒãã«ããã¯ãšããªã·ãŒããªã»ããããã®äžäŸã§ãã ã°ããŒãã«ãã㯠㯠~/.kiro/hooks/ ã§ããã¯ãäžåºŠå®çŸ©ããã ãã§ããã¹ãŠã®ã¯ãŒã¯ã¹ããŒã¹ã§èªåçã«çºç«ãããããä¿åæã®ãªã³ãå®è¡ãã³ãããåã®ã»ãã¥ãªãã£ãã§ãã¯ãšãã£ã暪æçãªæ¯ãèãããããžã§ã¯ãããšã«è€è£œããå¿
èŠããªããªããŸãã ããªã·ãŒããªã»ãã 㯠edit-workspace ã dev-shell ã®ãããªåæå¯èœãªååä»ãã«ãŒã«ã»ããã§ãäžè¬çãªã¯ãŒã¯ãããŒã«ãããããã³ããç²ã (prompt fatigue) ãæžãããŸããæš©éã«ããªã·ãŒããªã»ããã远å ãããš (ããšãã° policies: [dev-shell, edit-workspace, read-all] )ãããŒãã¹ã®ããªã·ãŒãšã³ãžã³ãããŒãæã«ããããåå¥ã®ã«ãŒã«ã«å±éããŸããã©ã¡ãã®æ©èœãããŒãã¹ã®ã¢ããããŒãã ãã§ãã¹ãŠã®ã¯ã©ã€ã¢ã³ãã«æäŸãããŸããã æ¬èšäºã®åé ã§è¿°ã¹ãããžã§ã³ã«ã¯ããŸã æ§ç¯ãå¿
èŠãªãšãŒãžã§ã³ãã®èœå (ã±ã€ãããªãã£) ãããã€ããããŸããããšãã°ãç°å¢éã§ã»ãã·ã§ã³ãç§»åããããã®ã»ãã·ã§ã³ããã±ãŒãžã³ã°ããããŒã«ã«ãšã¯ã©ãŠãã®äž¡æ¹ã®ã»ãã·ã§ã³ãã©ã®ã¯ã©ã€ã¢ã³ããããå¶åŸ¡ã§ããæ©èœãªã©ã§ããçµ±äžãããããŒãã¹ãªããæ°ããèœåãäžåºŠäœãã ãã§æžã¿ãŸããå€ãã®å Žåãã°ããŒãã«ããã¯ãããªã·ãŒããªã»ããã®ããã«ãã¯ã©ã€ã¢ã³ãåŽã®å€æŽãŒãã§ãã¹ãŠã®ã¯ã©ã€ã¢ã³ãã«é
ä¿¡ã§ããŸããçµ±äžããŒãã¹ãã¯ã©ã€ã¢ã³ãåŽã®äœæ¥ãå®å
šã«ãªãããããã§ã¯ãããŸãããããããããããã§ããããŸããã§ãããã¿ãŒããã«ããã¹ã¯ãããã® IDEããã©ãŠã¶ãŒãã¹ããŒããã©ã³ã¯ç°ãªãã€ã³ã¿ã©ã¯ã·ã§ã³ã¢ãã«ãæã£ãŠãããç§ãã¡ã¯ç»äžçãªäœéšãæäŸããã®ã§ã¯ãªããåã¯ã©ã€ã¢ã³ãããã®ãã©ãŒã ãã¡ã¯ã¿ãŒã«åã£ãäœéšã«æããããããšãæãã§ããŸããæ°ãããšãŒãžã§ã³ãããŒãã¹ã¢ãŒããã¯ãã£ãªãããšãŒãžã§ã³ãã®ããžãã¯ã¯ã¯ã©ã€ã¢ã³ãå
šäœã§åäžã§ãåã¯ã©ã€ã¢ã³ãããŒã ã¯ãããšã©ãããåãããã®ããã¹ããã«éäžã§ããŸãã Kiro ã®ãŠãŒã¶ãŒãšããŠãæ°ãããšãŒãžã§ã³ãããŒãã¹ã¢ãŒããã¯ãã£ã¯ãæ°ããèœåãããéãå±ããäžè²«ããæ¯ãèãã瀺ããããªãã奜ãã¯ã©ã€ã¢ã³ãã«é¢ãããåãèšå®ã§åäœããããšãæå³ããŸãã æ°ãã Kiro ãšãŒãžã§ã³ãããŒãã¹ãè©Šã æ°ãã Kiro ãšãŒãžã§ã³ãããŒãã¹ã¯ 4 ã€ã® Kiro ã¯ã©ã€ã¢ã³ããã¹ãŠã§ã©ã€ã皌åããŠããã®ã§ã仿¥ãã詊ããŸãã Kiro IDE 1.0 ã¯ãã±ã€ãããªãã£ããŒã¹ã®æš©éãã¿ã°ããŒã¹ããŒã«ãšã€ã³ã©ã€ã³ MCP ãåããã«ã¹ã¿ã ãšãŒãžã§ã³ãã䞊åã»ãã·ã§ã³ãææ®ããããã®ãšãŒãžã§ã³ããã©ãŒã«ã¹ã¢ãŒãããããã³ã°å¯èœãªãã£ããã¿ããã»ãã·ã§ã³ãšã¯ã¹ããŒããæäŸããŸãã IDE 1.0 ã®ããã¥ã¡ã³ããšç§»è¡æ¹æ³ ãåç
§ããŠãã ããã Kiro CLI v3 (ã¢ãŒãªãŒã¢ã¯ã»ã¹) ã¯ã仿§é§åéçºãpermissions.yamlãæ¡åŒµãããããã¯ãæ°ãããšãŒãžã§ã³ãèšå®ãã©ãŒããããåããã¿ãŒããã«ã§åãçµ±äžããŒãã¹ãå®è¡ããŸãã kiro-cli --v3 ã§è©ŠããŸãã CLI v3 ã®ããã¥ã¡ã³ããšç§»è¡æ¹æ³ ãåç
§ããŠãã ããã Web ç Kiro (ãã¬ãã¥ãŒ) ã¯ã¯ã©ãŠããµã³ãããã¯ã¹ã§ããŒãã¹ãå®è¡ãããã©ãŠã¶ãŒã§ä»æ§ã䜿ã£ãèªåŸçãªéçºããã«ããªããžããªã»ãã·ã§ã³ãGitHub ãš GitLab ã®çµ±åãæäŸããŸãã ãµã€ã³ã€ã³ / ãµã€ã³ã¢ãã ã§ããŸãã iOS ç Kiro (ãã¬ãã¥ãŒ) 㯠Web ç Kiro ãšåãã¯ã©ãŠãã»ãã·ã§ã³ã«ã¹ããŒããã©ã³ããæ¥ç¶ããã©ããããããéããã«èªåŸçãªäœæ¥ã®ããã¯ãªããå·®åã®ã¬ãã¥ãŒã倿Žã®æ¿èªãè¡ããŸãã ã¢ãŒãªãŒã¢ã¯ã»ã¹ããªã¯ãšã¹ã ããŠãã ããã 翻蚳㯠Solutions Architect ã®åæãæ
åœããããŸããã
ããã«ã¡ã¯ããã¢ããéçºéš iOS ãšã³ãžãã¢ã®æç°ã§ãã iOS ãšã³ãžãã¢ããã㯠Androidã»ã¯ãã¹ãã©ãããã©ãŒã ãå«ããŠã¢ãã€ã«ãšã³ãžãã¢ã®çããã«å¯ŸããŠæ°ã«ãªã£ãŠããããšããããŸãã ã¿ãªãã AI éçºã©ããªæãã§ãã£ãŠãŸããïŒã©ããªããŒãã¹çµãã§ãŸããïŒ ãšã³ãžãã¢ãªã³ã°æ¥çã§ã¯ãåã«æç€ºãåºããŠæžããŠãããããã€ãã³ãŒãã£ã³ã°ãã®æ¬¡ã®æ®µéãšããŠãAI ãšãŒãžã§ã³ãã®èªåŸåããããŒãã¹ãšã³ãžãã¢ãªã³ã°ããã«ãŒããšã³ãžãã¢ãªã³ã°ããšãã£ã話é¡ãæ¥éã«åºãã£ãŠããŸãã Web ããµãŒããŒãµã€ãé åã§ã¯ãããããææ°ã® AI 掻çšã®æ
å ±ãæŽ»çºã«å
±æãããŠããäžæ¹ãiOSïŒã¢ãã€ã«ïŒéçºã«ãããå®è·µçãªãã¬ããžã¯ãŸã ãŸã åæã«æ£ãã°ã£ãŠããåã
ã§å€è»å¥®éããŠããå°è±¡ãåããŠããŸãã ç§èªèº«ãä¹
ãã¶ãã« iOS éçºã«åãçµãã§ããŠãClaude Code ãš git worktree ãçšãã䞊è¡éçºãããäžã§ iOS ç¹æã®ãããã©ãããããã€ãæããŸããã ä»åã¯ã䞊è¡éçºããšãã芳ç¹ã«ãã©ãŒã«ã¹ããŠãiOS ã§äžŠè¡éçºãããšãã«æãã課é¡ãšå¯ŸåŠæ¹æ³ãèšèŒããŸãã éçºç°å¢ åæãšããŠã以äžã®ãããªç°å¢ã»ä»çµã¿ã§éçºããŠããŸãã äœ¿çšæè¡ AIãšãŒãžã§ã³ã : Claude Code ãšãã£ã¿ : VSCode 䞊è¡éçº : Git Worktree 察象 : iOS ã¢ããªïŒSwift / UIKit / SPM / .xcodeprojïŒ ãã«ãæ¹æ³ : XcodeBuildMCPïŒClaude çµç±ã® MCPïŒã»XcodeBuildMCPïŒCLI çïŒã»XcodeïŒGUIïŒ ãã£ã¬ã¯ããªæ§æ <repo>-trees/ â worktree develop/ â ã¡ã€ã³ worktreeïŒbase ãã©ã³ãïŒ feature-A/ â ã¿ã¹ã¯ããšã® worktreeïŒäžŠåïŒ feature-B/ â ã¿ã¹ã¯ããšã® worktreeïŒäžŠåïŒ refactor-C/ â ã¿ã¹ã¯ããšã® worktreeïŒäžŠåïŒ ... éçºæé ã¿ã¹ã¯éå§æã« git worktree add ã§ develop ãã©ã³ãããæ°èŠ worktree ãåã worktree é
äžã§ Claude Code ã®ã»ãã·ã§ã³ãéå§ããèŠä»¶å®çŸ© â å®è£
â PR äœæãªã©éçºãããŒãé²è¡ ã¿ã¹ã¯ãçµãã£ããããã® worktree ããšçä»ãã ---bin ãªã䞊è¡éçºãæ¬ ãããªãã®ã ãã¡ãã¡ã§èªãããŠãã話ãªã®ã§ãèŠç¹ã ãã AI ã«éçºããããšã人éã®åœ¹å²ã¯ãå®è£
ãã人ããããè€æ°ã®ãšãŒãžã§ã³ããç£ç£ãã人ãã«å€ãããŸãããã©ããŸã§èªåŸçã« AI ã«éçºãããããŠããããã«ãäŸããŸãããèšèšã»å®è£
ã»ãã«ãã»ãã¹ããšå€ãã®ãã§ãŒãºã§äººéã®æã空ãããã«ãªãããã1 ã¿ã¹ã¯ãçŽåã§é²ãããããè€æ°ã¿ã¹ã¯ã䞊è¡ã§åãæ¹ãå¹çããé²ããããŸãã ããã§æ³šç®ã济ã³ãã®ã git worktree ã§ãããã©ã³ãããšã«ç¬ç«ããäœæ¥ãã£ã¬ã¯ããªïŒworktreeïŒãæãŠããããäœæ¥ãã¡ã€ã«ã®ç«¶åãæ°ã«ãããå®å
šã«è€æ°ã¿ã¹ã¯ãåæé²è¡ã§ããŸãã ããã㊠git worktree ãçšã㊠iOS éçºãå§ããã®ã§ãããããã€ã課é¡ãçºçããŸããã åé¡ãã®1: DerivedData ãã¹ãã¬ãŒãžãé£ãå°œãã äœãèµ·ããã iOS ã®ãã«ãã§ã¯ DerivedData ãçæããŸããDerivedData ã«ã¯ Xcode ããã«ãã®ãã³ã«åãåºãäžéçæç©ïŒãã«ããã£ãã·ã¥ã»ã€ã³ããã¯ã¹ã»ææç©ãªã©ïŒãå«ãŸããŠãããããã©ã«ãã§ã¯ ~/Library/Developer/Xcode/DerivedData/ ã«çæãããŸããXcodeBuildMCP ã§ãã«ãããå Žåã¯ã ~/Library/Developer/XcodeBuildMCP/workspaces/<worktree>-<hash>/DerivedData/<ãããžã§ã¯ãå>-<hash> ã«çæãããŸãã DerivedData 㯠worktree ã®å
éšã§ã¯ãªãããŠãŒã¶ãŒå
±éã®å Žæã«ãŸãšããŠæºãŸããããworktree ã®æ°ã«æ¯äŸããŠç¬ç«ãããã«ããã£ãã·ã¥ãèç©ãããŠãããŸãã ç§ã®ç°å¢ã§ã¯ 1 worktree ãããæ° GBã20 GB å°ãåèšããã 86 GB ã«ãªã£ãŠããŸããã çµæãšããŠãã£ã¹ã¯ã®ç©ºã容éãæ¯æžããã¹ã¯ããé åã確ä¿ã§ããªããªã£ãŠããã«ãã©ããã§ã¯ãªããªããŸããã # XcodeïŒGUIïŒã®æ¢å® â ãããžã§ã¯ãå + ããã·ã¥å ~/Library/Developer/Xcode/DerivedData/ âââ <ãããžã§ã¯ãå>-a1b2c3d4efghâŠ/ âââ <ãããžã§ã¯ãå>-e5f6g7h8ijklâŠ/ âââ <ãããžã§ã¯ãå>-i9j0k1l2mnopâŠ/ âââ <ãããžã§ã¯ãå>-q7r8s9t0uvwxâŠ/ âââ ⊠# XcodeBuildMCP ã®æ¢å® â worktree å + ããã·ã¥å ~/Library/Developer/XcodeBuildMCP/workspaces/ âââ develop-a1b2c3âŠ/DerivedData/ 19 GB âââ feature-A-d4e5f6âŠ/DerivedData/ 21 GB âââ feature-B-g7h8i9âŠ/DerivedData/ 11 GB âââ feature-C-j0k1l2âŠ/DerivedData/ 8.8 GB âââ âŠïŒä» 4 worktreeïŒ 26 GB èš 86 GB ãã£ãã·ã¥ãåé€ããããšè©Šã¿ããšããã§ Xcode ã®å ŽåãDerivedData ã®ãã©ã«ãåãããã·ã¥åãããŠããŠããã©ã«ãåã ãã§ã¯ã©ã® worktree ã«å¯Ÿå¿ãããããããªã ãã«ãããªããŠãã€ã³ããã¯ã¹æŽæ°ãªã©ã§æŽæ°æ¥æãå€ããããããæŽæ°æ¥ãå€ãïŒäžèŠããšãã倿ãå¹ããªã ãšãã£ãçç±ã«ããã䜿ãçµãã£ã worktree ã®ãŽãã ããåé€ããããšãé£ããã£ãã§ãã ããšãã£ãŠå
šéšæ¶ããšãå
š worktree ãã³ãŒã«ããã«ãã«éæ»ãããŠããŸããŸãã XcodeBuildMCP ã¯ããã©ã«ãã§ãã©ã«ãåã« worktree åãå
¥ããã察å¿é¢ä¿ã¯åãããããã®ã§ããã git worktree remove ïŒworktree ã®åé€ïŒãããŠãããã®å€å
ãã©ã«ããæ®ãç¶ããç¹ã¯ Xcode ã®æ¢å®ãšåãã§ãã å¯ŸåŠæ¹é: DerivedData ã worktree é
äžã«ä¿åãã 察å¿çãšã㊠DerivedData ã®çœ®ãå Žæã worktree ãã©ã«ãã®çŽäžïŒ <worktree>/DerivedData ïŒã«åºå®ãããšã次ã®ã¡ãªãããåŸãããŸããã ã©ã®ãã£ãã·ã¥ãã©ã® worktree ã®ãã®ãã眮ãå ŽæãèŠãã°åãã git worktree remove ããã° DerivedData ãäžç·ã«æ¶ãã éçºæã®ã©ã€ããµã€ã¯ã«ã¯ä»¥äžã®ãããªã€ã¡ãŒãžã§ãã DerivedData ã®çœ®ãå Žæã倿Žããæ¹æ³ â Xcode ã® GUI ã§ãã«ãããå Žå å
šãããžã§ã¯ãäžåŸã§ããå Žå ïŒ Xcode â Settings â Locations â Derived Data ã Default ãã Relative ã«å€ãã ç¹å®ã®ãããžã§ã¯ãã ãæå¹ã«ãããå Žå ïŒå¯Ÿè±¡ãããžã§ã¯ãã Xcode ã§éããç¶æ
ã§ã¡ãã¥ãŒã® File â Workspace SettingsâŠ ïŒ .xcworkspace ãéããŠããªãå Žå㯠Project Settings⊠ïŒãéžã³ã Derived Data ã Workspace-relative Location ã«åãæ¿ãã åŸè
ã®å Žåã宿
ãšããŠã¯ãããžã§ã¯ãå
ã® WorkspaceSettings.xcsettings ïŒ xcuserdata é
äžã»é垞㯠Git 管çå€ã®ãŠãŒã¶ãŒããŒã«ã«ïŒã®èšå®ãšåçã®ãããGUI ã䜿ããæ¬¡ã®å
容ãçŽæ¥æžããŠãå®çŸã§ããŸãã <? xml version = "1.0" encoding = "UTF-8" ?> <!-- <project>.xcodeproj/project.xcworkspace/xcuserdata/<user>.xcuserdatad/WorkspaceSettings.xcsettings --> <! DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd" > <plist version = "1.0" > <dict> <key> DerivedDataLocationStyle </key> <string> WorkspaceRelativePath </string> <key> DerivedDataCustomLocation </key> <string> DerivedData </string> </dict> </plist> â¡ XcodeBuildMCP ã§ãã«ãããå Žå ãã¡ã㯠.xcodebuildmcp/config.yaml ã® derivedDataPath ã§æ±ºãŸããŸãïŒworktree ã®ã«ãŒãããã®çžå¯Ÿãã¹ã§è§£æ±ºãããŸãïŒã # <worktree>/.xcodebuildmcp/config.yaml schemaVersion : 1 sessionDefaults : projectPath : "<ãããžã§ã¯ããã¹>" scheme : "<ã¹ããŒã å>" derivedDataPath : "./DerivedData" platform : "iOS" useLatestOS : false bundleId : "<ãã³ãã« ID>" ð¡ ã©ã¡ãã®æ¹æ³ã§ã DerivedData ããªããžããªé
äžã«çæãããããã .gitignore ã« DerivedData/ ã远å ããå¿
èŠããããŸãã ãã ããXcode çã§ç¹å®ã®ãããžã§ã¯ãã ã Relative ã«ããŠããå ŽåãããXcodeBuildMCP çã§ .xcodebuildmcp/config.yaml ã Git 管çããŠããªãå Žåãã¯ãæ°ãã worktree ãäœããã³ã«ãããã®èšå®ãè¡ãå¿
èŠããããŸããæ¯åæåã§èšå®ããã®ã¯é¢åãªã®ã§ãGit ã® post-checkout hook ã§ worktree ã®äœææã«èªåèšå®ãããããã«ããã®ãããããã§ãã post-checkout hook ã§ DerivedData ã®èšå®ãèªååãã git worktree add ã git checkout ãå®è¡ãããšã post-checkout ãšãã hook ãçºç«ããŸããhook ã¯å
±éã® Git ãã£ã¬ã¯ããªïŒ git rev-parse --git-common-dir ïŒã«çœ®ããå
š worktree ã§å
±æãããã®ã§ãããã«èšå®ããããšã§æ°èŠ worktree äœææã®åŠçãä»èŸŒãããšãã§ããŸãã äžèšã®ãããªåŠçã .git/hooks/post-checkout ã«èšè¿°ããããšã§ãæ°èŠ worktree äœææã«ãDerivedData ãå worktree é
äžïŒ <worktree>/DerivedData ïŒã«ä¿åãããããã«èšå®ã§ããŸãã ãªã以äžã® hook ã§ã¯ â¡ ã® config.yaml ãçŽæ¥åºåããŠããŸãããæ£ã® config.yaml ãããã©ã«ããã©ã³ããªã©ã§ç®¡çããpost-checkout ã§ cp ããæ¹åŒã§ãæ§ããŸããã #!/bin/bash # .git/hooks/post-checkout if [ " $3 " = "1" ]; then PROJECT = $( find . -maxdepth 1 -name " *.xcodeproj " | head -1 ) if [ -n " $PROJECT " ]; then # â Xcode GUI çš: WorkspaceSettings ã« worktree çžå¯Ÿã® DerivedData ãæžã DIR = " ${PROJECT} /project.xcworkspace/xcuserdata/ $( whoami ) .xcuserdatad " PLIST = " ${DIR} /WorkspaceSettings.xcsettings " mkdir -p " $DIR " [ ! -f " $PLIST " ] && plutil -create xml1 " $PLIST " plutil -replace DerivedDataLocationStyle -string WorkspaceRelativePath " $PLIST " plutil -replace DerivedDataCustomLocation -string DerivedData " $PLIST " # â¡ XcodeBuildMCP çš: config.yaml ã worktree çŽäžã«çæ if [ ! -f .xcodebuildmcp/config.yaml ]; then mkdir -p .xcodebuildmcp cat > .xcodebuildmcp/config.yaml <<'YAML' schemaVersion: 1 sessionDefaults: projectPath: "<ãããžã§ã¯ããã¹>" scheme: "<ã¹ããŒã å>" derivedDataPath: "./DerivedData" platform: "iOS" useLatestOS: false bundleId: "<ãã³ãã« ID>" YAML fi fi fi åé¡ãã®2: ã·ãã¥ã¬ãŒã¿ãè€æ°ã»ãã·ã§ã³ã奪ãåã äœãèµ·ããã iOS éçºã§ã¯ãã·ãã¥ã¬ãŒã¿äžã§ã®å®æäœãå¿
èŠãªå Žé¢ãå€ã
ãããŸãã ç»é¢æ
å ±ã»é·ç§»æ
å ±ã®ååŸ ã³ãŒã倿ŽåŸã®åäœç¢ºèª E2E ãã¹ãã®å®è¡ AI ã«äžŠè¡éçºãããŠããäžã§ãããã®åäœããããããšãããšã1 å°ã®ã·ãã¥ã¬ãŒã¿ãè€æ°ã®ã»ãã·ã§ã³ïŒãšãŒãžã§ã³ãïŒã奪ãåããéçºãæ»ãåé¡ãçºçããŸããã æäœã®å²ã蟌ã¿ã»ç«¶åïŒ ãããšãŒãžã§ã³ãã®æ€èšŒäžã«ãå¥ã®ãšãŒãžã§ã³ããèµ·åã»æäœãè¡ã£ãŠç»é¢ã奪ãåã ç¶æ
ã®ç Žå£ïŒ å®è¡äžã®ã¢ããªé åãããŒã¿ãäžæžããããE2E ãã¹ããåäœç¢ºèªã誀å€å®ããã åŠçã®é çªåŸ
ã¡ïŒ ã·ãã¥ã¬ãŒã¿ã®ç©ºãåŸ
ã¡ãçºçãã䞊è¡éçºã®ã¹ããŒãæã倱ããã å¯ŸåŠæ¹é: worktree ããšã«å°çšã·ãã¥ã¬ãŒã¿ãæããã 察çãšããŠã worktree ããšã«å°çšã·ãã¥ã¬ãŒã¿ãæãããéçšã«ããŸããã å
·äœçã«ã¯ã·ãã¥ã¬ãŒã¿åã <worktree å> - <å
ã®æ©çš®å> ïŒäŸ: feature-A - iPhone 16 Pro ïŒã®ããã«çŽä»ããŸããããã«ããããã®ã»ãã·ã§ã³ãè§Šã£ãŠããã®ã¯ãã® 1 å°ã®ã¿ããšæç¢ºã«ããä»ã®ã»ãã·ã§ã³ã§çšŒåäžã®ã·ãã¥ã¬ãŒã¿ãžã®èª€å¹²æžãé²ãã§ããŸããã¿ã¹ã¯ãå®äºããŠåœ¹ç®ãçµããã·ãã¥ã¬ãŒã¿ã¯ã·ã£ããããŠã³ããå¥ã® worktree ã§ã®éçºã§ååã倿ŽããŠåå©çšããæµãã§ãã ð¡ åºæ¬çã«ã¯ AI ã«ãã䞊è¡éçºãåæãšããŠããŸããã人éãæçµçãªåäœç¢ºèªãè¡ãå Žåã«ãã¡ãªããããããŸããå worktree å°çšã®ã·ãã¥ã¬ãŒã¿äžã«ãã«ãæžã¿ã¢ããªããã®ãŸãŸæ®ã£ãŠãããããã¹ã ãŒãºã«åäœç¢ºèªãé²ããããŸãã ã·ãã¥ã¬ãŒã¿ã®éžå®ã«ãŒã« ãã worktree ã®éçºã§äœ¿ãã·ãã¥ã¬ãŒã¿ã®éžå®ã«ãŒã«ã¯ã以äžã®ããã«ããŸããã worktree åã§å§ãŸãã·ãã¥ã¬ãŒã¿ãèµ·åæžã¿ãªããããããã®ãŸãŸäœ¿ã worktree åã§å§ãŸãã·ãã¥ã¬ãŒã¿ãæªèµ·åãªããèµ·åããŠäœ¿ã ç¡ããã°ãèµ·åããŠããªãã·ãã¥ã¬ãŒã¿ã <worktree å> - <å
ã®æ©çš®å> ã«ãªããŒã ããŠèµ·åãã ãããå®è£
ã«èœãšã蟌ãã ãã®ã以äžã®ã³ãŒãã§ãã resolve_udid 㯠â â⢠ã®é ã«ããã®æ¡ä»¶ã«åãã·ãã¥ã¬ãŒã¿ãããããã確èªããŠãããæåã«èŠã€ãã£ã 1 å°ãããã® worktree ã«å¯Ÿå¿ããã·ãã¥ã¬ãŒã¿ã® UDIDïŒããã€ã¹ã®äžæ IDïŒãšããŠæ¡çšããŸãïŒèŠã€ãã£ãæç¹ã§æ®ãã¯ç¢ºèªããŸããïŒãããšã¯ãã® UDID ãæå®ããŠãã«ãããã°ããã® worktree å°çšã®ã·ãã¥ã¬ãŒã¿ã«åããŠå®è¡ã§ããŸãã wt = " $( basename " $PWD " ) " # worktree åïŒäŸ: feature-AïŒãã·ãã¥ã¬ãŒã¿åã®æ¥é èŸã«äœ¿ã # ã·ãã¥ã¬ãŒã¿äžèЧã JSON ã§ååŸã㊠devices_json ã«ãã£ãã·ã¥ãã refresh_devices() { devices_json = $( xcrun simctl list devices available --json ) ; } # æªèµ·åã®ã·ãã¥ã¬ãŒã¿ãèµ·åãã boot_sim() { xcrun simctl boot " $1 " 2 > /dev/null ; } # UDID ããå
ã®æ©çš®åãåŒãïŒæ¢ã« worktree åãä»ããŠããã°èœãšããä»ãè¶³ããšåå©çšã®ãã³ã«æ¥é èŸãç©ã¿éãªãããïŒ sim_name() { printf ' %s ' " $devices_json " | jq -r --arg u " $1 " \ ' [.devices[][] | select(.udid == $u) | .name][0] // empty | sub("^.+ - "; "") ' } # æå®ããèµ·åç¶æ
ïŒbooted / unbootedïŒã§ãworktree åã§å§ãŸãã·ãã¥ã¬ãŒã¿ã® UDID ãè¿ãïŒç¡ããã°ç©ºæåïŒ pick_named() { printf ' %s ' " $devices_json " | jq -r --arg wt " $wt " --arg want " $1 " \ ' [.devices[][] | select((.name | startswith($wt + " - ")) and (if $want == "booted" then .state == "Booted" else .state != "Booted" end)) | .udid][0] // empty ' } # æªèµ·åïŒShutdownïŒã®ç©ºãã·ãã¥ã¬ãŒã¿ã1å°è¿ãïŒç¡ããã°ç©ºæåïŒ pick_spare() { printf ' %s ' " $devices_json " | jq -r \ ' [.devices[][] | select(.state == "Shutdown") | .udid][0] // empty ' } resolve_udid() { refresh_devices # â worktree åã§å§ãŸãã·ãã¥ã¬ãŒã¿ãèµ·åæžã¿ãªãããã®ãŸãŸäœ¿ã udid = $( pick_named booted ) ; [ -n " $udid " ] && { echo " $udid "; return; } # â¡ worktree åã§å§ãŸãã·ãã¥ã¬ãŒã¿ãæªèµ·åãªããèµ·åããŠäœ¿ã udid = $( pick_named unbooted ) ; [ -n " $udid " ] && { boot_sim " $udid "; echo " $udid "; return; } # ⢠ç¡ããã°ã空ãã·ãã¥ã¬ãŒã¿ã®æ¥é èŸãã<worktree å> - ãã«ä»ãæ¿ããŠèµ·åãã spare = $( pick_spare ) [ -z " $spare " ] && { echo " 空ãã·ãã¥ã¬ãŒã¿ããããŸãã " >&2; return 1 ; } xcrun simctl rename " $spare " " $wt - $( sim_name " $spare " ) " boot_sim " $spare " echo " $spare " } éçºãããŒãšã¯ããŒãžã³ã°åŠç ãããŸã§ã®åŠçãéçºãããŒã«æ²¿ã£ãŠäžŠã¹ããšæ¬¡ã®ããã«ãªããŸãã éå§ ïŒ ã¿ã¹ã¯ããšã« worktree ãåããå°çšã®äœæ¥å Žãçšæãã å®è£
ïŒ ãã® worktree ã§ Claude ã»ãã·ã§ã³ãéå§ãã1 ã€ã®æ©èœãå®è£
ãã åäœç¢ºèª ïŒ ãã® worktree å°çšã®ã·ãã¥ã¬ãŒã¿ãèµ·åãããã«ã & å®è¡ã»ãã¹ããè¡ã ã¬ãã¥ãŒ ïŒ å®è£
ãåºãŸã£ãã PR ãäœæãã ã¯ããŒãžã³ã°åŠç ïŒ PR ããŒãžãšåæã«ãworktree åé€ã»Issue ã¯ããŒãºã»ã·ãã¥ã¬ãŒã¿ã®ã·ã£ããããŠã³ãè¡ã éçºãããŒã®æåŸã«ã¯ãã¯ããŒãžã³ã°åŠçã眮ããŠããŸãã close-feature ã®ãããªã¹ãã«ã«ãŸãšããPR ããŒãž â Issue ã¯ããŒãº â worktree åé€ â å°çšã·ãã¥ã¬ãŒã¿ã®ã·ã£ããããŠã³ãäžæ¬ã§å®è¡ããŠããŸãã ãã®ã¯ããŒãžã³ã°åŠçããããŒã«çµã¿èŸŒãããšã§ãåé¡ãã®1ã§æãã DerivedData ã«ããã¹ãã¬ãŒãžå§è¿«ãé²ãã€ã€ïŒworktree ãåé€ããã°é
äžã® DerivedData ãäžç·ã«æ¶ããïŒãèµ·åãããŸãŸã®ã·ãã¥ã¬ãŒã¿ãç©ã¿äžãã£ãŠã¡ã¢ãªãå§è¿«ããã®ãåæã«æããããŸãïŒã·ã£ããããŠã³ãã端æ«ã¯ã次ã®ã¿ã¹ã¯ã§åå©çšãããïŒã åé¡ãã®3: .xcodeproj ã®ã³ã³ããªã¯ããå€çºãã .xcodeproj ã Git 管çããŠãããšãã©ã³ãã®åãæ¿ããããŒãžã®ãã³ã«ã³ã³ããªã¯ããèµ·ããããããšããåé¡ããããŸããããèªäœã¯æãããã iOS éçºã®æ©ã¿ã§ãããAI ã«è€æ°ã¿ã¹ã¯ã䞊è¡éçºãããããã«ãªã£ãŠã³ã³ããªã¯ãã®é »åºŠãå¢ããç¡èŠã§ããªãã³ã¹ãã«ãªã£ããšæããŠããŸãã ãã¢ããã® PJ ã§ã¯å®çŸã§ããŠããŸããããäžèšã®çç±ã«ãã XcodeGen ãçšãã YAML 管çãžã®ç§»è¡ãæ€èšããŠããŸãã 1. 䞊è¡éçºã§ã®ã³ã³ããªã¯ãè»œæž git worktree ãªã©ã掻çšããŠè€æ°ãã©ã³ãã§ã®äžŠè¡éçºãé²ããå Žåã project.pbxproj ã®ã³ã³ããªã¯ããå€çºããå¯èœæ§ããããŸãã ç¹ã« AI ã®æŽ»çšã«ãã£ãŠéçºã®é床ãäžŠè¡æ§ãäžããã»ã©ããã®çºçé »åºŠãå€ããªããã¡ã§ãã XcodeGen ãå°å
¥ã㊠.xcodeproj ãèªåçæã®ææç©ãšããŠæ±ã .gitignore ã«è¿œå ããããšã§ã .xcodeproj ã§ã®ã³ã³ããªã¯ãåé¡ãè§£æ¶ã§ãããšèããŠããŸãã 2. AI ãš YAML ã®çžæ§ Xcode ã®ãããžã§ã¯ã管ç㯠GUI æäœãåæãšããä»çµã¿ã§ãããAI ãšãŒãžã§ã³ããšã¯çžæ§ãè¯ããããŸãããããã project.yml ã«ãã宣èšçãªããã¹ã管çã«åãæ¿ããããšã§ããYAML ã§ã®ç®¡çã»å€æŽ â ã³ãã³ãå®è¡ïŒ xcodegen generate ïŒããšãã AI ã«é©ãããããŒã§æ§æã倿Žã§ããããã«ãªããšèããŠããŸãã 3. ã³ãŒãã¬ãã¥ãŒã®ãããã ã³ãŒãå·®åãè€é㪠pbxproj ããã·ã³ãã«ãª project.yml ã«å€ããããšã§ã倿Žå
容ã容æã«ææ¡ã§ããŸãã AI ãã³ãŒããæžãã人éãã¬ãã¥ãŒãããã§ãŒãºã§ã¯å¯èªæ§ã®èгç¹ã§ãã¡ãªããããããšèããŠããŸãã ãŸãšããšæ®èª²é¡ ãããŸã§ git worktree ãçšãã iOS ã®äžŠè¡éçºã§åºäŒã£ãåé¡ç¹ãšããã®å¯ŸåŠæ¹æ³ã玹ä»ããŠããŸããã ãšã¯ãããããããŠäžŠè¡ã¿ã¹ã¯ãåãä»çµã¿ãæŽããŠããhuman-in-the-loop çãªäœå¶ã§ã¯äžŠè¡éçºã®å¹æãéçããããšæããŠããŸããç£ç£ãã人éã®ã³ã³ããã¹ãã¹ã€ãããããã«ããã¯ã«ãªãããç§ã®å Žåãåæã«èŠãããã®ã¯ 3ã4 ã¿ã¹ã¯ã»ã©ã§ãããããã§ã¯éçºçç£æ§ãé æã¡ã«ãªããããããã¯ããäºæ¥ãã©ã䌞ã°ããããšããæ¬è³ªçãªåãã«éäžã§ããªããšæããŠããŸãã ãã®èª²é¡ãçªç Žããããã«ã¯ããã¯ããã«ãŒããšã³ãžãã¢ãªã³ã°ããªã© AI ãããèªåŸçã«éçºãåãããããªä»çµã¿ã远æ±ããŠããããšãäžå¯æ¬ ã ãšæããŠããŸãã é¢é£ãªã³ã¯ XcodeBuildMCP XcodeGen
åç»
該åœããã³ã³ãã³ããèŠã€ãããŸããã§ãã








