ä»å¹Žã®åããClaude Codeã䜿ã£ãŠããã°ãAstroã«å€§éç§»è¡ããŸãããæçš¿146ã6ã024 ç»åãæšæºçãªURLãJSON-LDããŒã¯ã¢ããããµã€ããããçæãå šã¹ã¿ãã¯ã§ããç§ã¯äœæéããããŠã¹ãã«ãã¡ã€ã«ãæžãããšãŒãžã§ã³ãã«ããã°ã®ã¢ãŒããã¯ãã£ããããã€ã®ä»çµã¿ãè§ŠããŠã¯ãããªãããšãæããŸããããããŠãããã¯ããŸããã£ããClaude Codeã¯ã³ã³ããŒãã³ããæžãæããæ°çŸããŒãžã«ããããã¬ãŒãªã³ã°ã¹ã©ãã·ã¥ã®äžäžèŽãä¿®æ£ããæ°çŸã®ã«ãŒãã«BreadcrumbListã®æ§é åããŒã¿ã远å ããŸãããLighthouseã®ã¹ã³ã¢ã¯ããã©ãŒãã³ã¹é¢ã§ 97 ãåŸãŠããŸããããã°ã¯ãããŸã§ã§æãè¯ãèŠããŸããã
åé¡ã¯ãèªåã®ã³ãŒãããŒã¹ãçè§£ããããªããªã£ãŠããããšã§ãã
å®å šã«ã¯ããã¡ã€ã«ã¯ãŸã èªãããããããååã®ä¿®æ£ã§çãããšã©ãŒãä¿®æ£ããããšãã3åç®ã®ã©ãŠã³ããããã§ãã¹ã¿ãã¯ã®çè·¡ãClaudeã«ã³ããŒ&ããŒã¹ãããŠæ»ã£ãŠããŠãè¿ã£ãŠãããã®ãä¿¡ããŠããèªåã«æ°ã¥ããŸãããæ åœè ã倿Žãããå¥ã®äœããå£ããŠããŸãããããçŽããŠããããæ°ãµã€ã¯ã«åŸã«ã¯ããã°ããŸãåäœããŸãããPostCSSã®èšå®ã«äœãå ¥ã£ãŠããã®ãããªãGA4 çµ±åããã®ãããªé ç·ã«ãªã£ãŠããã®ããç§ã«ã¯èª¬æã§ããŸããã§ãããããŸããã£ãããšãŠãçŽ æŽãããã£ãã§ãããã®äžã«ãããã®ãžã®èªä¿¡ã¯éãã«æ¶ããŠããŸã£ãã
ãã®æèŠ(ããŸãããã®ã¯ããããããè§Šããªãã§ããã)ã¯ãèªåŸçãªãšãŒãžã§ã³ãã«ã³ãŒãããŒã¹ãžã®æ¬åœã®ã¢ã¯ã»ã¹ãäžãããšããæèŠã ããããã®ããŒã«ã䜿ããã¹ãŠã®éçºè ã¯ãããç¥ã£ãŠããŸãããã³ããŒã®ããã°èšäºã§æžã人ã¯ããŸããããããŠãããã¥ã¡ã³ããèªã以äžã«æ·±ãã¬ãã«ã§ããªãDockerããµã³ãããã¯ã¹ãäœããªããã°ãªããªãã£ãã®ããçè§£ãããŠãããŸããã
ãªããªããç§ãèããŠããªãã£ãã®ã¯ãClaude Codeãç§ã®Astroã³ã³ããŒãã³ããæžãçŽããæ°çŸã®ãã¡ã€ã«ã«ãããç»åCLSãä¿®æ£ããŠããéãå®è¡ npm install ãã¹ãŠãç§ã®ããŒãããœã³ã³äžã§è¡ãããŠããããšã§ãã倿Žãããã¡ã€ã«ããã«ããããã±ãŒãžãåæ§ã§ãããŠãŒã¶ãŒæš©éã¯ãå¢çãèŠããŸããããããšãŒãžã§ã³ããGitããã¯ãä¿®æ£ãããCIã®ã¯ãŒã¯ãããŒãæžãæãããããŠããããç§ã¯æ°ã¥ããªãã£ãã§ãããããã®æç¹ã§ã¯åã
ã®ãã¡ã€ã«å€æŽãèŠçŽããŠããŸããã§ãããçµæãèŠçŽããŠããŸããã倿Žãçç¥ããªããçµæãèŠçŽãããšã¯ã»ãã¥ãªãã£ã¢ãã«ã§ã¯ãããŸãããç¥ãã ã
Docker Sandboxã¯ãã®ã®ã£ãããåããããã«ååšããŸãã
ã³ã³ããã¢ãã«ãšããªãããã§ã¯é©çšãããªãã®ã
ã³ã³ããã¯æ±ºããŠééã£ãæœè±¡æŠå¿µã§ã¯ãªãã£ãããããã¯ããã®äžã«äœãå ¥ã£ãŠããããç¥ãäžçã«ãµããããçæ³çãªæœè±¡æŠå¿µã ã£ãã12幎éããã®äžçã¯ç¶ããŸãããã³ãŒããæžããã¬ãã¥ãŒããDockerfileã«å ¥ããã³ã³ãããã¯ãªãŒã³ã«ãŒã ã§åäœãããŠãããŸãããå ±æã«ãŒãã«ã¯åé¡ãããŸããã§ããããªããªãè åšã¢ãã«ã¯èªç€ŸãœãããŠã§ã¢ã®ãã°ã§ãããæåŸ ããããã³ãããã®é©ãã§ã¯ãªãã£ãããã§ãã
AIã®ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã¯åããŸããããããã¯ããªãã®ãœãããŠã§ã¢ã®ãã°ã§ã¯ãããŸããããªããªãããããã¯ããªãã®ãœãããŠã§ã¢ã§ã¯ãªãããã§ãã圌ãã¯æ°ããã¿ã€ãã®ããã³ãã§ãããèªåŸçã§ç¹æš©çãªååšã§ãããã©ããªã»ãã¥ãªãã£ãšã³ãžãã¢ã§ãäžå®ã«ãªãã»ã©ã§ãããšãŒãžã§ã³ãã¯ããªããéžãã§ããªãããã±ãŒãžãã€ã³ã¹ããŒã«ããã¹ã¯ãªããããŠããªãã³ãã³ããå®è¡ããŸããäŸåé¢ä¿ããªãŒã«å±ããŠãããšã¯ç¥ããªãã£ããšã³ããã€ã³ãã«å¯ŸããŠãäºæ³ãããªãã£ããããã¯ãŒã¯ã³ãŒã«ãçºä¿¡ããŸããä¿¡é Œãããã¡ã€ã«ã¯ä»ãŸãã«ã³ãŒãã§ãããèš±å¯ãæ±ããããã«äžæåæ¢ããªãäœãã«ãã£ãŠæžãããŠããŸããã³ã³ããã¯ç°ãªãçš®é¡ã®ã³ãŒãã®ããã«äœãããŸããã
ããã¯ä»®å®ã®è©±ã§ã¯ãããŸããã2026幎3æ19æ¥ãæ»æè ãã¡ã¯aquasecurity/trivy-actionã§77ããŒãžã§ã³ã¿ã°ã®76ã匷å¶çã«æŒãåºããæªæã®ããTrivy v0ãå ¬éããŸããã69ã4ãã€ããªããGitHubãªãªãŒã¹ãžã®å€æãé²å æéã¯çŽ 12 æéã§ããã䟵害ãããã³ãŒãã¯CIã©ã³ããŒã®ã¡ã¢ãªãã¹ã¯ã¬ã€ãã³ã°ããç§å¯æ å ±ãã¯ã©ãŠãèªèšŒæ å ±ãSSHããŒãKubernetesããŒã¯ã³ãååŸããèª€åæ€åºãã¡ã€ã³ã«æµåºãããŸããããã®ãŠã£ã³ããŠäžã«ããŒãžã§ã³ã¿ã°ããšã«ããªãã¢ã¯ã·ã§ã³ãåç §ãããã¹ãŠã®ãã€ãã©ã€ã³ã¯ãåä¿¡åŽã®èª°ãã¬ãã¥ãŒããŠããªãã³ãŒããå®è¡ããŠããŸããã
Trivyã§æ°ã«ãªãã®ã¯ãæŠåšåãããããŒã«ãè匱æ§ã¹ãã£ããŒã ã£ãããšã§ããçµç¹ãæªæã®ããã³ãŒããèŠã€ããããã«å±éãããã®ããæªæã®ããã³ãŒããã®ãã®ã«ãªããŸããã管çè ã¯æªããã€ããªãæžããããã§ã¯ãããŸãããã¢ã¯ã»ã¹ãå€ãããŠå°ã蟌ããäžè¶³ãã䟵害ãããCIã¯ãŒã¯ãããŒããããæãéããŸãããã䟵害ãããCIã¯ãŒã¯ãããŒããã蚱容ã¢ãŒãã®AIãšãŒãžã§ã³ããã«çœ®ãæããã°ãåãè åšã¢ãã«ããã¹ãŠã®éçºè ãã·ã³ã§äžæ¥äžçšŒåããããšã«ãªããŸãã
ã³ã³ããã¯ããã®ã³ãŒããä¿¡é ŒããŠãããã¯ãªãŒã³ã«å®è¡ãããããšããæ£è§£ã§ãããããã®ã³ãŒããå®å šã«ã¯ä¿¡çšããŠããªãããæ¬åœã®ä»äºãäžãããããšããçãã«ã¯æ±ºããŠé©ããŠããŸããã§ããããããmicroVMãåããã®ã£ããã§ãã
Dockerã¯äœãäœã£ãã®ãããããŠããããã®ããŒãããªãååšããŠããã®ã
第äžéžæ:ã³ã³ããã¯ãããã貌ããªãããšã§ããç§ãã¡ã®æ¥çã«ã¯ã銎æã¿ã®ããæœè±¡åã«ãã©ã°ãå ããŠæ°ããåé¡ãæ±ããšããé·ãäŒçµ±ããããŸããç¹æš©ã¢ãŒããèœåäœäžãseccompãããã¡ã€ã«ãruncã®åã«gVisorã眮ããããããã¹ãŠã«ããããã®åœ¹å²ããããŸããããããèªåŸãšãŒãžã§ã³ããç¬èªã®DockerããŒã¢ã³ãå¿ èŠãšãããšããå ·äœçãªåé¡ã¯è§£æ±ºããŠããŸãããDocker-in-Dockerã¯ãé颿§(ç¹æš©ã¢ãŒãããã¹ããœã±ããããŠã³ã)ãæãªããããã¹ããããè€éæ§ãçã¿åºãããããç¬èªã®æ»æé¢ãšãªããŸããDockerã®ããã¥ã¡ã³ãã¯ããã«ã€ããŠççŽã«è¿°ã¹ãŠããŸããã³ã³ããã¯ãã¹ãã«ãŒãã«ãå ±æãããç¬èªã®DockerããŒã¢ã³ãå¿ èŠãªãã®ãå®å šã«åé¢ã§ããªãããšèšãããŠããŸãã
ãããåãå ¥ãããšãçµå±ã¯VMã«ãã©ãçããŸããéããã®ã§ã¯ãªã(æ¯åã®ã³ãŒãã£ã³ã°ã»ãã·ã§ã³ããšã«Ubuntu Serverãèµ·åããã®ã¯ç¡çã§ã)ãmicroVMã§ããæ°ç§ã§èµ·åã§ããã»ã©è»œéã§ããšãŒãžã§ã³ãã®ã³ã³ãããåããã®ã«ååãªã«ãŒãã«å®¹éããããŸãã
Docker Sandboxã¯Firecrackerã§ã¯ãªãã«ã¹ã¿ã VMMã䜿ã£ãŠããŸããããFirecrackerã®ä»æ§ãèªãã§ããŠã 125msã§èµ·åãããªãŒããŒããã㯠5MBæªæºããšèããŠãããªããããã¯Firecrackerã®æ°åã§ãã£ãŠDockerã®ãã®ã§ã¯ãããŸãããç°ãªãmicroVMã®å®è£ ã¯ç°ãªãã³ã¹ããããã¡ã€ã«ãæã£ãŠããŸãããã©ãããã©ãŒã ã®è©³çް:macOSã§ã¯Hypervisor.frameworkãWindowsã§ã¯Windows Hypervisorãã©ãããã©ãŒã ãLinuxã§ã¯KVMã
ãã£ãã·ã§ã³:ãµã³ãããã¯ã¹ã¢ãŒããã¯ãã£ãåmicroVMã¯ç¬èªã®ã«ãŒãã«ãšDockerãšã³ãžã³ãå®è¡ããŸããèªèšŒæ å ±ã¯VMã®å¢çãè¶ããããšã¯ãããŸããã
åmicroVMå
ã§ããµã³ãããã¯ã¹ã¯å®å
šãªDockerãšã³ãžã³ãå®è¡ããŸãããšãŒãžã§ã³ãã docker buildãå®è¡ãããšããã®ã³ãã³ãã¯ãã¹ãã³ã³ããã®ååšãç¥ããªããã©ã€ããŒãããŒã¢ã³ã«éãããŸããã€ã¡ãŒãžãåŒããšããã®ã€ã¡ãŒãžã¯ãµã³ãããã¯ã¹VMå
ã«ååšããŸãããµã³ãããã¯ã¹ãåé€ãããšãç»åãã£ãã·ã¥å
šäœãäžç·ã«æ¶ããŸããè€æ°ã®ãµã³ãããã¯ã¹ã¯ã¬ã€ã€ãŒãå
±æããŸãããç¡é§é£ãã ãããã ãã®äŸ¡å€ã¯ããã
åããŠå®è¡äžã®ãµã³ãããã¯ã¹ã®äžãèŠããšãããšãŒãžã§ã³ãã¯rootãšããŠå®è¡ãããVMå
ã§ã¯å®å
šãªDocker Engineã¢ã¯ã»ã¹æš©ãæã£ãŠããŸãããåå°çã«ãããã¯ééã£ãŠããã«éããªããšæããŸãããä¿¡é Œã§ããªãã³ãŒãã«ã¯rootæš©éãäžããŸããããããèšèšã¯æ£ãããã¢ã€ãœã¬ãŒã·ã§ã³ã¢ãã«ã¯å¢çå
ã§ãšãŒãžã§ã³ãã®è¡åãå¶çŽããŸãããããã¯çµæã®è¡ãå
ãå¶çŽããŸããä»®æ³ãã·ã³å
ã§ã¯ããšãŒãžã§ã³ãã¯å¥œããªããšãã§ããŸããå€ã§?äœããVMå
ã§ãã£ãããªãã£ãããããããŠãšãŒãžã§ã³ããããã¯ããããšãããšãééã£ãåé¡ã解決ããããšã«ãªããŸãããšãŒãžã§ã³ãã¯ããã±ãŒãžãã€ã³ã¹ããŒã«ã㊠docker buildãå®è¡ããå¿
èŠããããŸããå¿
èŠãªãã®ã¯ãããããããŒãããœã³ã³ã«è§Šããããšã§ãã
ãã£ãã·ã§ã³:ãã¹ãããããµã³ãããã¯ã¹ã¯ã³ã³ããã§ã¯ãªãããã docker ps ã«ã¯è¡šç€ºãããŸããã sbx ls ããã®ããã«èŠããŸãã
ãããã¯ãŒã¯å±€ãé¢çœããšããã§ãèªèšŒæ å ±ã®å¢çãšããŠãæ©èœããŸãã
éä¿¡HTTP/HTTPSãã©ãã£ãã¯ã¯ãã¹ãäžã®ãããã·ãçµç±ããVMå
éšããã¢ã¯ã»ã¹å¯èœã§ã host.docker.internal:3128ãUDPãšICMPã¯ãããã¯ãŒã¯å±€ã§ãããã¯ãããŠãããããªã·ãŒã«ãã£ãŠèš±å¯ãããŸãããéHTTP TCP(SSHãªã©)ã«ã¯æç¢ºãªIP+ããŒãã«ãŒã«ãå¿
èŠã§ããDNSã®è§£æ±ºã¯ãããã·çµç±ã§è¡ãããŸãããªã¯ãšã¹ãããããã·ãéããªããã°ããã®èŠæ±ã¯åºãŸããããããã·ã¯TLSãçµäºãããã¹ãããããŒãæ€æ»ããããªã·ãŒãé©çšãããµã³ãããã¯ã¹ãä¿¡é Œããèªèº«ã®èšŒææžå±ã§åæå·åããŸããèšèšäžãäžéçãªç·ãDockerã¯ããã¥ã¡ã³ãã§ãŸãã«ãã®ãã¬ãŒãã³ã°ã䜿çšããŠããŸãã
MITMãããèªèšŒæ³šå ¥ãæ©èœãããèŠçŽ ã§ãããšãŒãžã§ã³ãã«ã¯APIããŒãå¿ èŠã§ããAIãããã€ããŒçšãã¬ãžã¹ããªçšãæã«ã¯ã¯ã©ãŠãã¢ã«ãŠã³ãçšã§ããåçŽãªçããšããŠã¯ããã®èªèšŒæ å ±ãç°å¢å€æ°ãšããŠæž¡ããVMå ã«çœ®ããŠã©ããžã§ã远跡ããããšã§ããDockerã¯ãã¹ãäžã®èªèšŒæ å ±ãOSã®ããŒãã§ãŒã³ã«ä¿æãããããã·ããããã¢ãŠãããŠã³ããªã¯ãšã¹ãã«ééçã«æ³šå ¥ãããŸãããšãŒãžã§ã³ãã¯åäœãããªã¯ãšã¹ããèŠãŠããŠãããããVMã«ã¯ç§å¯æ å ±ããªãã£ãã®ã§ããããã¥ã¡ã³ãã¯ããã«æ³šæãæã£ãŠããŸãããèªèšŒæ å ±ã®å€ã¯VMå ã«ä¿åãããããšã¯ãããŸããã䟵害ããããµã³ãããã¯ã¹ã¯APIããŒãå€ãããšã¯ã§ããŸããããªããªãAPIããŒã¯ããã«ååšããªãã£ãããã§ãã
Dockerã¯äœãããŸããããªããæããŠãããŸã
ãµã³ãããã¯ã¹ã®ããã¥ã¡ã³ãã«ã¯ã»ãã¥ãªãã£ã¢ãŒããã¯ãã£ã®ããã¥ã¡ã³ãã§ã¯çããç¹åŸŽããããŸããã·ã¹ãã ãäœããå®ã£ãŠããªãããæããŠãããã®ã§ãããããã®ææžã®å€ãã¯ã補åã匷åã«èŠããããã«æžãããŠããŸããDockerã®ããã¥ã¡ã³ãã¯éçãæããã«ããŠããŸãããã®ãã¡äºã€ã¯éèŠãªã
æåã®åé¡ã¯ãããã¯ãŒã¯ããªã·ãŒã«é¢ãããã®ã ã
æåã«SBXãã°ã€ã³æã«ã3ã€ã®ããã©ã«ãããªã·ãŒã®ãããããéžæããŸããOpenã¯ãããã¯ãããCIDRç¯å²(ãã©ã€ããŒããããã¯ãŒã¯ããªã³ã¯ããŒã«ã«ã¢ãã¬ã¹ãã¯ã©ãŠãã¡ã¿ããŒã¿ãšã³ããã€ã³ã)以å€ã®ãã¹ãŠãèš±å¯ããŸãããã©ã³ã¹åã¯ããã©ã«ãã§ã¯æåŠããŸãããå ±éã®éçºãã¡ã€ã³ã¯äºåèš±å¯ãããŠããŸããããã¯ããŠã³ã¯ãæç¢ºã«èš±å¯ãããŸã§ãã¹ãŠãæåŠããŸããããã¯ããŠã³ã¯æãå³ããéžæè¢ã§ãããè¢«å®³åŠæ³ãªãæããããã©ã«ãæåŠãã¢ãŒãã§ããããããLocked Downããã¥ã¬ãŒã·ã§ã³ãããèš±å¯ãªã¹ãã䜿ã£ãŠãããããã·ã¯ã³ã³ãã³ãã§ã¯ãªããã¡ã€ã³ã§ãã£ã«ã¿ãªã³ã°ããŸãã
ææžã®æ£ç¢ºãªæèšã¯ããã§ãã github.com ã®ãããªåºç¯ãªãã¡ã€ã³ãèš±å¯ãããšããã®ãã¡ã€ã³å
ã®ããããã³ã³ãã³ããžã®ã¢ã¯ã»ã¹ãèš±ãããããšãŒãžã§ã³ãã¯ããããããŒã¿æµåºã®ãã£ãã«ãšããŠäœ¿ãããšãã§ããããšãããŠããŸããã»ãã¥ãªãã£ãã³ããŒã¯éåžžãèªç€Ÿè£œåã«ã€ããŠããèšããŸãããgithub.com ãèš±å¯ãªã¹ãã«å
¥ã£ãŠããå Žå(ã»ãŒééããªãå
¥ã£ãŠããŸãããšãŒãžã§ã³ãã¯ãªããžããªãã¯ããŒã³ããå¿
èŠããããã)ããããã·ã¯ãªã¯ãšã¹ãã github.com ãããããšãç¥ã£ãŠããŸãããšãŒãžã§ã³ããããã¥ã¡ã³ããèªãã§ããã®ãããªããžããªãã¯ããŒã³ããŠããã®ãããããšãããªãã®å
容ã§ãããªãã¯ã®ã¹ããäœæããŠããã®ãã¯åãããŸãã .envãã¡ã€ã«ãããã3ã€ãšããã¡ã€ã³ã¬ãã«ã§ã¯ã»ãŒåãã«èŠããŸãããŠãŒã¶ãŒçæã³ã³ãã³ããå«ããã¹ãŠã®èš±å¯ãªã¹ããšã³ããªãŒãåæ§ã§ã:Discordã®ãŠã§ãããã¯ãNotionã®ããŒãžãããã¡ã€ã³ã¯èš±å¯ãããŠããããšããã®ã¯ãå®å
šãªã³ã³ãã³ãã ããããã«ååšããŠããããšããæå³ã§ã¯ãããŸããã
ãã£ãã·ã§ã³:æåŠããªã·ãŒã®äžã§ãèš±å¯ãããŠããªããã¡ã€ã³ã¯ãããã¯ãããŸããèš±å¯ãªã¹ãããããã¡ã€ã³ã¯æåããŠãããä»»æã®ãŠãŒã¶ãŒçæã³ã³ãã³ãããã¹ããããã¡ã€ã³ãå«ãŸããŸãã
ããã¥ã¡ã³ãã¯ãŸãããã¡ã€ã³ããã³ãã³ã°ãHTTPSãããã·ã®æ¬è³ªçãªå¶éã§ããããšãèªããŠããŸãããããã·ã¯ãªã¯ãšã¹ããã©ã®ãã¡ã€ã³ã«åãã£ãŠããããèªèããŸããèš±å¯ãããCDNãéããŠãªã¯ãšã¹ããä»ã®å Žæã«ã«ãŒãã£ã³ã°ãããã®ãå¿ ãããé²ãããšã¯ã§ããŸããã
microVMå¢çãäž»èŠãªéé¢ã§ãããããã¯ãŒã¯ãããã·ã¯ãç¹ã«å éšãããã¯ãŒã¯ãžã®èª€ã£ãŠã¢ã¯ã»ã¹ããããã¯ããã®ã«åœ¹ç«ã€è¿œå å¶åŸ¡ææ®µã§ããããã¯å¯éã·ãŒã«ã§ã¯ãªããDockerãããããã䞻匵ããŠããŸãããããšãŒãžã§ã³ãã¯æåŠããªã·ãŒã«å ¥ã£ãŠããããšããšãŒãžã§ã³ãã¯ã©ãã«ãããŒã¿ãéããªãããšã¯éããŸãã
äœæ¥ã¹ããŒã¹ã¯åžžã«å ±æãããŠããŸã
ãããã¯ãŒã¯ããªã·ãŒã¯ãããå°ããªæ£çŽãªé床é¡ã§ããã¯ãŒã¯ã¹ããŒã¹å ±æã倧ããªåé¡ã§ãã
microVMã®å¢çã¯ãæå³çã«æšªåãäžã€ã®çµè·¯ãããªãã¡ã¯ãŒã¯ã¹ããŒã¹ãã£ã¬ã¯ããªãé€ããŠãã©ãã§ã匷åºã§ãã
ãµã³ãããã¯ã¹ã§ãšãŒãžã§ã³ããåããç®çã¯ããšãŒãžã§ã³ããå®éã®ã³ãŒãããŒã¹ã§å®éã®äœæ¥ãè¡ãããšã§ããDockerã¯ãã¹ããšãµã³ãããã¯ã¹ã®éã§åã絶察ãã¹ã§ã¯ãŒã¯ã¹ããŒã¹ãå ±æããŠããŸãããšãŒãžã§ã³ãããµã³ãããã¯ã¹å ã§ãã¡ã€ã«ãç·šéãããšããã®ãã¡ã€ã«ã¯ãã¹ãäžã§å€æŽãããŸãããã¹ãã«æ°ããã³ããããåŒããšããšãŒãžã§ã³ãã¯ããã確èªããŸãããããèšèšå³ã§ãããŸãã«éçºè ããŒã«ã«æ±ãããã®ã§ãã
ãŸãããšãŒãžã§ã³ããæ£åœãªæžã蟌ã¿ã¢ã¯ã»ã¹æš©ãæã€ç§å¯ã®ãã£ãã«ã§ããããŸãã
Dockerã®ã»ãã¥ãªãã£ããã¥ã¡ã³ãã«ã¯ãåããã¡ã€ã«ããäœãå«ãããæèšãããŠãããéèŠãªã®ã¯éåžžéçºäžã«æé»çã«å®è¡ããããã¡ã€ã«ã§ããã®ããããã¯ãCIæ§æãIDEã¿ã¹ã¯ã®å®çŸ©ãã¡ã€ã¯ãã¡ã€ã«ã®ã¿ãŒã²ãããpackage.json å°æ¬ãäºåã³ãããèšå®ããéå
·ã䜿ã£ãŠããããããªæãã®åããããŠãããšãã«åããã®ãªãäœã§ãããã§ãã
æ»æã®æãåçŽãªããŒãžã§ã³ã¯ããµã³ãããã¯ã¹å
ã®ãšãŒãžã§ã³ãã.git/hooks/post-commitã«æªæã®ããpost-commitããã¯ãæžã蟌ãããšã§ããgit diffã«ã¯ã®ããããã¯ã¯ç»å ŽããŸããã圌ã㯠.git/ã«äœãã§ããŸããã»ãšãã©ã®éçºè
ã¯éããªããæ¬¡ã«ãã¹ãã§ã³ããããããšãã¯ãããã¯ã¯ãŠãŒã¶ãŒæš©éã§ãã¹ãäžã§å®è¡ãããŸãããµã³ãããã¯ã¹ã®å¢çã¯éèŠã§ã¯ãããŸããããªããªãå¢çã¯ã¯ãŒã¯ã¹ããŒã¹ã§çµãã£ãŠãããã¯ãŒã¯ã¹ããŒã¹ã¯åžžã«å
±æãããŠããããã§ãã
ãããç§èªèº«ã®ã¢ã¹ããç§»è¡ãæãåºãããŸããããå±
å¿å°ã®æªããæããŸãããç§ã¯Claude Codeã§ããã°ã®äœçŸãã®ãã¡ã€ã«ãæžãæããŠãããã§ããããçµæ(Lighthouseã¹ã³ã¢ãå€èгããã«ãæå床)ã¯ç¢ºèªããŸããããè§Šãããã¹ãŠã®ãã¡ã€ã«ãç£æ»ããããã§ã¯ãããŸããã.git/hooks/ã確èªããŠããªãã£ããç§ã¯ãã®ãã£ã¬ã¯ããªãäžåºŠãéããããšããªãã£ããnpm installãåºãåã«ãã¹ãŠã®package.jsonèæ¬ãèªãã ããã§ã¯ãããŸãããããã¥ã¡ã³ãã§èŠåãããŠããéãããšãŒãžã§ã³ãã®åºåãã¬ãã¥ãŒæžã¿ã³ãŒããšããŠæ±ã£ãŠããŸããããå®éã«ã¯èªåã®ãã·ã³äžã§å®è¡ããããšããŠããæªæ€èšŒã³ãŒãã§ããã
ãããããµã³ãããã¯ã¹ã¯å£ããŠããããšèªã¿åãã®ã¯ç°¡åã§ããããããæå³ãããªããmicroVMã¯ãŸãã«microVMãæ¬æ¥ããã¹ãããšãè¡ããŸããã€ãŸããããŒããŠã§ã¢ã®å¢çã®åããåŽã§ä»»æã®ã³ãŒãå®è¡ã®çµæãå«ã¿ãŸãããšãŒãžã§ã³ããã§ããªãã®ã¯ãã¯ãŒã¯ã¹ããŒã¹ã®å 容ãå®å šã«ããããšã§ãããªããªããã¯ãŒã¯ã¹ããŒã¹ã®å 容ããããšãŒãžã§ã³ãã®ä»äºã®ããæ¹ã ããã§ãããšãŒãžã§ã³ãã¯ãã¡ã€ã«ãæžããå¿ èŠããããŸããèªããããšã倧äºã§ããå ±æå°åãå¿ èŠã§ãããå ±æå°åãããè åšã¢ãã«ã®è峿·±ãéšåã§ãã
ç·©åçã¯ãããªãéé¢ã§ã¯ãããŸãããmicroVMã¯ã¡ãããšåœ¹å²ãæãããŠããŸããç·©åãšã¯èŠåŸã§ã:ã¯ãŒã¯ã¹ããŒã¹ã®å
容ãããŸã ç¥ããªãè²¢ç®è
ããã®ãã«ãªã¯ãšã¹ããæ±ãããã«æ±ãã®ã§ããéã .git/hooks/ãšãŒãžã§ã³ãã»ã»ãã·ã§ã³ãºã®åŸã ãnpm installããåã«package.jsonèæ¬ãèªãã§ãã ããã--branchãã©ã°ã䜿ããšããšãŒãžã§ã³ããç¬ç«ãããã©ã³ãã§åäœããããŒãžåã«ã¬ãã¥ãŒã§ããGitã¯ãŒã¯ããªãŒãäœæãããŸãããããã¯äœãçãããã®ã§ã¯ãããŸãããããã¯åã«èªåŸãšãŒãžã§ã³ãã®åºåãä¿¡é Œã§ããã³ãŒããšããŠæ±ããªãæ
£ç¿ã§ãããªããªããããã§ã¯ãªãããã§ãã
ããã ãã®ã¹ããŒã¹ã䜿ã£ãŠããã®ã¯ãå€ãã®äººãééããéšåã ããã§ãããã€ããŒãã€ã¶ãŒã®å¢çç·ã¯å®å¿æãäžããŸãããå®éã¯ããã§ã¯ãããŸãããå®å šã«ã¯ã補åãåäœããããã«ã¯äž¡æ¹ã®èŠçŽ ãåæã«æç«ããŠããªããã°ãªãããDockerããŒã ã¯æå³çã«ããèšèšããŸãããåªããã»ãã¥ãªãã£ã¢ãŒããã¯ãã£ã¯ãã®ã®ã£ãããèšé²ãããŠãŒã¶ãŒãäœã«ãµã€ã³ã¢ããããŠããã®ãã確å®ã«çè§£ãããŸãã
å®éã®è²»çšã¯ã©ãã
ãã€ããŒãã€ã¶ãŒã®éé¢ã¯ç¡æã§ã¯ãªããããã§ãªããµããã§ããŸãããç§ã¯ããããåé ã§æããAstroããã°ã®èªåã®æ¬çªã³ãŒãããŒã¹ã§ãã¹ãããŸããããµã³ãããã¯ã¹åããããšãŒãžã§ã³ãã¯ãŒã¯ããŒãã®åæãã³ãããŒã¯ã§ã¯ããŸãå€ããèªããªãããã§ããæ¬åœã®ä»äºãããæèŠãç¥ãããã®ã§ãã
ãã£ãã·ã§ã³:åã docker build --no-cache ãåãAstroã³ãŒãããŒã¹ãåžäŒè
: 1:44ã62ããµã³ãããã¯ã¹microVM: 1:28ã58ãã¢ã€ãœã¬ãŒã·ã§ã³å¢çã¯ã¯ãŒã¯ããŒãã«ã¯èŠããŸããããã®ã©ã³ã§ã¯ããµã³ãããã¯ã¹ã®æ¹ãæ©ãçµãã£ãã
åãDockerfileãšã³ãŒãããŒã¹ã§ããã¹ãåŽãšãµã³ãããã¯ã¹å
ã§1åã〠docker build --no-cache å®è¡ããŸããããã¹ãã¯4 1ã§ãŽãŒã«ããŸãã:44ã62ããµã³ãããã¯ã¹ã¯ 1幎ã«çµäºããŸãã:28ã58ãå®éã«ã¯ãã©ã³ã®ãã€ãºã®äžã§ãéããªã£ãŠããŸãããµã³ãããã¯ã¹å
ã®Docker Engineã¯ããã¹ãããå®å
šã«éé¢ãããç¬èªã®ã«ãŒãã«ãšãããã¯ããã€ã¹äžã§åäœããŠããããã«ãã¯æ°ã«ããŸãããmicroVMã¯å®éã®ãã«ãã«ã»ãŒãªãŒããŒããããå ããŸããã
Apple Siliconã§ãããå®è¡ããŠããçŸå®çãªæ³šæç¹ãšããŠãç§ã®Astroãã€ãã©ã€ã³ã®jemalloc㯠4KããŒãžãµã€ãºãåæã«åºè·ãããŠããããµã³ãããã¯ã¹åã®VM(16KããŒãž)ã§ã¯å€±æããŸããçµã¿ç«ãŠèªäœã¯æ£ããå®äºããŸããããã¹ãŠã®ããŒãž 354 ã¬ã³ããªã³ã°ããããã£ã¹ãçæãããŸããããåè§£ã¹ãããã¯ãŒãã§ãªã段éããåºãŠããŸããŸãããä¿®æ£ã¯ãDockerãã¡ã€ã«å ã«æå¹ãªãã«ãåºåã確èªããäžè¡ã®ã¬ãŒããå°å ¥ããããšã§ããã远跡ããã®ã« 30 åããã£ããApple Siliconã§ãµã³ãããã¯ã¹å¯Ÿå¿ã®Dockerãã¡ã€ã«ãåºè·ããåã«ç¥ã£ãŠãã䟡å€ããããŸãããªããªããå®éã«ã¯æåããŠããã®ã«ãçç¶ã¯ãã«ã倱æã®ããã«èŠããããã§ãã
çµè«:ã»ãã·ã§ã³ããŒã¹ã®ãšãŒãžã§ã³ãäœæ¥(ãããžã§ã¯ãã«æ°æéããã)ã§ã¯ããªãŒããŒãããã¯æ¶ããŸããé«é »åºŠã®ãµã³ãããã¯ã¹äœæ(çæéã¿ã¹ã¯ã§æ¯åæ°åå)ã§ã¯ãã³ãŒã«ãã¹ã¿ãŒãã³ã¹ããç©ã¿éãªããŸããSandboxãèšèšãããŠããäœæ¥è² è·ãã€ãŸããšãŒãžã§ã³ãã«å®éã®ã»ãã·ã§ã³ã®ããã®ç°å¢ãæäŸãããšããç¹ã§ã¯ããã®ååŒã¯åŠ¥åœã§ãã
å€ç«ãšä¿¡é Œã®ãããã³ã°
ã³ã³ãããšVMã®è°è«ã§ã¯ãã€ããªãšããŠæ±ãããŸãããããã¯ééã£ãæ çµã¿ã§ããç§ã圹ç«ã€æ çµã¿ã¯ãèªåèªèº«ã®ä»äºã§ãããšã³ãžãã¢ãªã³ã°ãªãŒããŒãã¡ãšãæ¬åœã«microVMãå¿ èŠãªã®ã?ããšåããããäŒè©±ã§ããã¹ãã¯ãã©ã ã§ãã
ãã£ãã·ã§ã³:ä¿¡é Œã¹ãã¯ãã©ã ãéé¢ã®åŒ·ããã¯ãŒã¯ããŒãã®ä¿¡é Œãããã¡ã€ã«ã«ããããããŸãã
äžæ¹ã«ã¯èªåã§æžããã³ãŒãããããŸããããŒã ãã¬ãã¥ãŒããCIããã¹ãããæ¬çªãå®è¡ããŸããæšæºçãªå®¹åšãæ£è§£ã§ããã«ãŒãã«ã¯å ±æãããããŒã¢ã³ãå ±æãããŸããããããã¯éèŠã§ã¯ãããŸããããªããªãã¯ãŒã¯ããŒãã¯æ¢ç¥ã ããã§ãã
ããã«äžæ©å ã«ãããŒã ã®ã³ãŒããåããCI/CDãã€ãã©ã€ã³ããäž»ã«ä¿¡é Œããã¬ãžã¹ããªããã®äŸåé¢ä¿ããããŸããã»ãšãã©ã¯ç¥ãããŠããããå ¥åã¯ãã倿§ã ãã»ãã¥ãªãã£ã³ã³ããããã¡ã€ã«ã远å ããããæ©èœããããããããããããã¯ãŒã¯ããªã·ãŒãäœæãããããŸãã
ããã«é²ããšãç£ç£ä»ãAIãšãŒãžã§ã³ã:éçºè ãåã¹ããããã¬ãã¥ãŒããªããã³ãŒããææ¡ããããŒã«ã§ãã人éãã«ãŒãã«é¢ããã®ã§ã峿 Œãªããªã·ãŒãæã€ããŒãã³ã³ããã§ãæ©èœããŸãã
ãã®ç«¯ã«ã¯èªåŸåAIãšãŒãžã§ã³ããããŸãã誰ãåã³ãã³ãã確èªããŠããŸãããããªãã®ä»£ããã«æææ±ºå®ãè¡ããšãŒãžã§ã³ããã¡ãããããããååãšã¯ç°ãªãå¯èœæ§ããããŸããä¿¡é Œãããã¡ã€ã«ã¯ããã®ã³ãŒããä¿¡é ŒããŠããããšãããã®ã§ã¯ãããŸããããªããªããä¿¡é Œãã¹ãåºå®ãããã³ãŒãã¯ååšããªãããã§ãããç£èŠãªãã§ã·ã¹ãã äžã§äœããåãããŠããã®ã§ãæ éã¢ãŒãã¯ãããŒãããœã³ã³äžãã§ã¯ãªããäœ¿ãæšãŠã®ä»®æ³ãã·ã³ã«éå®ããããããšãããã®ã§ãããã®ã¯ãŒã¯ããŒãã¯microVMãå¿ èŠã§ãã
ããã¯ã³ã³ãããæä»£é ãã ãšå®£èšãããã®ã§ã¯ãããŸããããããéã§ããã³ã³ããã¯ããã®ã¹ãã¯ãã©ã ã®å·ŠåŽã«ãããã¹ãŠã®åé¡ã«å¯Ÿããæ£è§£ã§ãããçŸåšçšŒåããŠãããã®ã®ã»ãšãã©ããã®éšåã§ããMicroVMã¯ã¹ãã¯ãã«ãå³ã«åºããã³ã³ãããé©åãªããŒã«ã«ãªãããšã¯æ±ºããŠãªãã£ãããµã³ãããã¯ã¹ã®4ã€ã®åé¢å±€(ãã€ããŒãã€ã¶ãŒããããã¯ãŒã¯ãDocker EngineãèªèšŒãããã·)ã¯å ç®çã§ãã容åšã眮ãæããã®ã§ã¯ãªãã远å ã®ä¿è·ãšããŠå ãã§ããŸãããã¹ãŠã®ãµã³ãããã¯ã¹ã®äžã«ã¯ãã³ã³ãããå®è¡ãããã€ã¯ãVMããããŸããã³ã³ããã¯ã©ãã«ãè¡ã£ãŠããŸãããä¿¡é Œã®ç©ã¿éãã®äžã§äžæ®µéèžã¿èŸŒãã§ããŸã£ãã ãã§ãã
ãAIãšãŒãžã§ã³ãçšã®ãã€ã¯ãVMããã®ä»ãã¹ãŠã¯ã³ã³ããããšãã衚çŸã¯ããŸãã«ãç²éã§ãããéé¢ãã¯ãŒã¯ããŒãã®ä¿¡é Œãããã¡ã€ã«ã«åãããããšããã®ãä»ãéçšããŸãã
ãªãã¿ããªãããã«éãŸãã®ã
Dockerã ãããã®çãã«è³ã£ãããã§ã¯ãªãããã®èåã¯äœããæããŠãããŸãã
Firecrackerã¯AWS LambdaãšFly.ioã®microVMãã©ãããã©ãŒã ãé§åããŠããŸããgVisorã¯ãŠãŒã¶ãŒã¹ããŒã¹ã«ãŒãã«å ã®ã·ã¹ã³ãŒã«ãååããŸããKata Containersã¯ãã³ã³ããäºæã€ã³ã¿ãŒãã§ãŒã¹ã®èåŸã§VMã®åé¢ãæäŸããŸããModalã¯gVisoräžã§ãµãŒããŒã¬ã¹ãšãŒãžã§ã³ãã®ã¯ãŒã¯ããŒããå®è¡ããŸããE2Bã¯ãFirecrackerããŒã¹ã®ãµã³ãããã¯ã¹ããããŒãžãã¯ã©ãŠããµãŒãã¹ãšããŠæäŸããŠããŸããããŒã¹ãã©ã³ã¯ã¯æ¬çªAIã¯ãŒã¯ããŒãåãã«åããŒã¹ã®ã¢ã€ãœã¬ãŒã·ã§ã³ãåºè·ããŸããåãçç±ã§ããã¹ãŠåæã«é€åã«ããããã¢ãŒããã¯ãã£ã¯ã©ãã§ãåãããã«èŠããŸããå éšã«ã³ã³ãã(éçºè ã®èãæ¹ã ãã)ãå€éšã«VM(å¢çãããã«ããå¿ èŠããããã)ã§ãã
Docker Sandboxesã¯ããŒã«ã«ãã¡ãŒã¹ãã®ããŒãžã§ã³ã§ããã»ãšãã©ã®ä»£æ¿ææ®µã¯ã¯ã©ãŠããµãŒãã¹ã§ãå®è¡ããšã«æéãæ¯æããèªåã®ã³ãŒããä»äººã®ãã·ã³äžã§åäœããŸããDockerã¯éçºè ã®ããŒãããœã³ã³ã«åãã¢ãŒããã¯ãã£ãé©çšããŸãããCLIã¯ãã€ãã£ãã§8ã€ã®ãšãŒãžã§ã³ã(Claude CodeãCodexãCopilotãGemini CLIãKiroãOpenCodeãDocker AgentãDroid)ããµããŒãããã«ã¹ã¿ã ããŒã«çšã®ã·ã§ã«ã¢ãŒããåããŠããŸããã¹ã¿ã³ãã¢ãã³ã®SBX CLIã¯Docker Desktopã䜿ããã«åäœãããããã¢ãŒããã¯ãã£ã¯åçšè£œåã«çžãããŠããŸãããMicroVMã¬ã€ã€ãŒã«ã¯HTTP APIãããããªãŒãã³ãœãŒã¹ã³ãã¥ããã£ã¯ãã§ã«ãã®åºç€ãç¯ãå§ããŠããŸãã
ãããã©ã³ã¿ã€ã ã§ãããããŠDockerã¯ã10幎åã«ãã€ã¯ããµãŒãã¹ã®æšæºçãªéçšæ¹æ³ãšãªã£ã docker run ã®ãšåæ§ã«ãèªåŸã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã®æšæºçãªéçšæ¹æ³ãšããŠäœçœ®ã¥ããŠããŸãã
ããäžã€ãããŒãã³ãã€ã¡ãŒãžãšãµã³ãããã¯ã¹ã¯åãåé¡ã®ç°ãªãå±€ã«å¯ŸåŠããŸããäŸãã°ããµãã©ã€ãã§ãŒã³(ãã€ããªã®çºçæº)ã®ããã®ããŒããã€ã¡ãŒãžãã©ã³ã¿ã€ã åé¢(ãã€ããªãè§Šããç¯å²)ã®ããã®ãµã³ãããã¯ã¹ã§ããã©ã¡ãããä¿¡é Œã§ãããããªãã·ã£ãŒã®ã³ãŒãã¯å®å šã ããšããåæãä¿¡é Œã§ããªããªã£ãããã«ååšããŠããŸãã
æ¯ãè¿ããæªæ¥ãèŠã€ããŠ
ç§ã¯20幎éã§æ¥çãä¿¡é Œã¢ãã«ãåæ§ç¯ããã®ã3åèŠãŠããŸããã
è€æ°ã®ã¯ãŒã¯ããŒããåãããŒããŠã§ã¢ã«å®å šã«é 眮ããå¿ èŠããã£ãããããã¢ã¡ã¿ã«ããä»®æ³ãã·ã³ãžã®å€æã§ãã
ä»®æ³ãã·ã³ããã³ã³ãããžããªããªããããéãç«ã¡äžããäœã³ã¹ãããããŠéçºè ãå®éã«ã³ãŒããé ä¿¡ããæ¹æ³ã«åã£ãããã±ãŒãžã³ã°ã¢ãã«ãå¿ èŠã ã£ãããã§ãã
ãããä»ã¯ãã¯ãŒã¯ããŒããå€ããã«ãŒãã«åå空éãäžååã«ãªã£ããããã³ã³ããã¯å¥ã®çš®é¡ã®ä»®æ³ãã·ã³ã«ç§»ãããŸãããã³ã³ãããééã£ãŠããããã§ã¯ãªããæ°ããããã³ãããã£ãšå¿ èŠãšããŠãããããããŸããã€ããŒãã€ã¶ãŒã®ããã«èŠããããã§ãã
ãããã®è»¢æç¹ã¯ãæ¯ãè¿ãã°æããã§ãåœæã¯è°è«ã®çãšãªã£ãŠããŸãããã³ã³ãããæ¬åœã«ãã«ãããã³ãã¯ãŒã¯ããŒãã«ååå®å šãã©ããã®è°è«ãèŠããŠããŸãã(ã»ãšãã©ã¯ããã§ã¯ãªãã£ããããæçµçã«ååã¹ããŒã¹ä»ãã®ã¯ã©ã¹ã¿ãããã³ãããšã®VMãgVisorããããŠä»ã§ã¯ãšãŒãžã§ã³ãçšã®microVMã䜿ãããã«ãªããŸããã)microVMã®è°è«ãåãæµãããã©ããšäºæ³ããŠããŸããçŽ1幎éäºããã3幎以å ã«æããã«ãªãã®ã§ãã
ç§ã®Astroç§»è¡ã¯ãã·ã¹ãã ã«æ¬æ Œçã«ã¢ã¯ã»ã¹ã§ããèªåŸçãªãšãŒãžã§ã³ããšå ±ã«åãæèŠãæããŠãããŸãããæäœæ¥ãããçç£çã§ãã©ãã ã远跡ããããŠãããã«æ°ã¥ãããšãã®äžå®ãäºæ³ä»¥äžã«äžå®ã§ããããµã³ãããã¯ã¹ããšãŒãžã§ã³ããä¿¡çšã§ãããã®ã«ã¯ããŸããããšãŒãžã§ã³ããäºæãã¬è¡åãåã£ããšãããã®ãã¡ãŒãžã¯æšãŠãããç®±ã®äžã«çãŸãã ãã§ããã¯ãŒã¯ã¹ããŒã¹ã¯äŸç¶ãšããŠããªãã®æ³šæãå¿ èŠãšããŸããåã®æçå¿ããã®çµã¿åãã(匷å¶å¯èœãªåŒ·ãå¢çç·ãã§ããªããšããã¯èŠåŸããã¬ãã¥ãŒ)ãèªåŸçãªã³ãŒãã®ã¢ãã«ã§ããããã°ããã¯ãã®ãŸãŸç¶ãã§ãããã
ããèš±å¯ã®ããã³ããã誀ã£ããã¡ã€ã«å€æŽããããã¯å šäœã®é 眮ã«äœããå®å šã§ãªããšæããŠãããã£ãŠãããªãããã®æèŠã¯æ£ããã£ãã§ããã³ã³ããã¯ãã®äœæ¥éã«ã¯åã£ãŠããŸããã§ããããµã³ãããã¯ã¹ãæé©ã§ããæ¬åœã«èå³ã®ãããããžã§ã¯ãã§è©ŠããŠã¿ãŠãã ããããããå¯äžéèŠãªãã¹ãã§ãã