ã·ããã¬ãã: Docker ã§ã€ãã¬ãŒã·ã§ã³ãé«éå
ãã·ããã¬ãããã«ã¯å€ãã®å®çŸ©ããããŸããããã®è¬æŒã§ã¯ããã£ãŒãããã¯ã«ãŒããæ¹åããå埩æéãççž®ããããã«ãã¢ã€ãã ãå€åŽã®ã«ãŒã(CIãã€ãã©ã€ã³ããããã€ãªã©)ããå åŽã®ã«ãŒã(éçºè ã®ã¯ãŒã¯ã¹ããŒã·ã§ã³)ã«ç§»åããããšã«çŠç¹ãåœãŠãŸãã Dockerã¯ãéçºè ç°å¢ããµããŒãããã³åŒ·åããçµ±åãã¹ããä¿¡é Œæ§ãšé床ã«ããããšã§ç¹ã«ããŒã ãæ¯æŽããéçºè ã«çŽæ¥å®çšçãªæŽå¯ãæäŸããŠã»ãã¥ãªãã£æèãé«ããŸãã ãããã®åãããã¯ã®è©³çްãšãå®éã®ã©ã€ããã¢ãã芧ãã ããã
Â
åã
ããã«ã¡ã¯ããã€ã±ã«ã»ã¢ãŒãŠã£ã³ã§ãã ç§ã¯ãã Docker ã®ããããã㌠ãªã¬ãŒã·ã§ã³ãº ããŒã ã®ã¡ã³ããŒã§ãã ã·ããã¬ããã«ã€ããŠã話ãã§ããããšã楜ãã¿ã«ããŠããŸãã ããŠãããã«é£ã³èŸŒããšããŸããå°ãæéããããŠãã·ããã¬ãããäœãæå³ããã®ãããããäœã§ããããäœãéèŠã§ãªããããªããããéèŠãªã®ããªã©ãå®éã«å®çŸ©ããŸãã æ¬¡ã«ãDockerãã·ããã¬ãããæ¯æŽãã3ã€ã®ç°ãªãæ¹æ³ã«ã€ããŠèª¬æããŸãã ãŸããéçºç°å¢ã®ç§»è¡ã次ã«çµ±åãã¹ããè匱æ§è©äŸ¡ãã»ãã¥ãªãã£å šè¬ã«ã€ããŠã話ãããæåŸã«ãŸãšããŸãã ãã£ããå§ããŸãããã
Â
ç®æ¬¡
- ãã·ããã¬ãããã®å®çŸ© (0:35)
- éçºç°å¢ã®ã·ãã (4:20)
- ãã¢:éçºç°å¢(9:26)
- çµ±åãã¹ãã®ç§»è¡ (15:05)
- Testcontainersã®çŽ¹ä» (17:43)
- ãã¢: Testcontainers (21:30)
- è匱æ§è©äŸ¡ã®ã·ãã (26:32)
- Docker Scoutãšã¯äœã§ãã? (28:20)
- ãã¢: Docker Scout (29:31)
- ç·éç·š (35:19)
- ããã«è©³ãã
Â
ãã·ããã¬ãããã®å®çŸ© (0:35)
ã·ããã¬ãããšã¯ã©ãããæå³ã§ãã? ããã¯ã©ãããæ¥ãã®ãããŸããããã¯äœã§ãããäœã§ã¯ãªãã®ãããªã©ããŸãããœãããŠã§ã¢éçºã©ã€ããµã€ã¯ã«ããŸãã¯SDLCãšåŒã°ãããã®ãèŠãŠã¿ãŸãããã éåžžãå åŽã®ã«ãŒããšå€åŽã®ã«ãŒããšåŒã°ãã 2 ã€ã®ã«ãŒããããããšãããããŸãã åã«ãŒãã¯ããã£ãŒãããã¯ãåãåããæ¬¡ã®ã«ãŒãã«åããããã«èšèšãããŠããŸãã å åŽã®ã«ãŒãã¯ãã³ãŒãããªããžããªã«ããã·ã¥ãããåã«çºçãããã¹ãŠã®ããšã«çŠç¹ãåœãŠãŠããŸãã èšç»ãã»ããã¢ãããå®éã®ã³ãŒãã£ã³ã°ãæ§ç¯ããã¹ããªã©ã ãã ããã³ãŒããããã·ã¥ããããšãé垞㯠CI ãžã§ããããªã¬ãŒãããã¢ããªã±ãŒã·ã§ã³ããã«ãããã¹ããæ€èšŒãããçµç¹ã®æšæºãæºãããŠããããšã確èªãããŸãã ãã®åŸãã¢ããªããããã€ãããç£èŠãããŸããæããã«ãSDLCã«ã¯ããå€ãã®ãã¥ã¢ã³ã¹ãããã詳现ããããããã«ããSDLCã¯é«ãã¬ãã«ã«ä¿ãããŠããŸãã ãããã¯éåžžãSDLC ã«åãŸãã³ã³ããŒãã³ãã§ãã ããã§è峿·±ãããšã®1ã€ã¯ããã®ããã»ã¹ãæ¬åœã«äœå¹Žãå€ãã£ãŠããªããšããããšã§ãã 確ãã«ãããŒã«ã¯é²åããŠããããããã®åã¹ãããéã®ããã»ã¹ãšåŒãç¶ãã®äžéšã¯å°ãé²åããŠããŸãã ããããSDLCå ã«ååšããå šäœçãªç®æšãšå šäœçãªã¹ãããã¯ãããªãäžè²«ããŠããŸãã
æ°å¹Žåãã»ãšãã©ã®äººãDevOpsã®åãã«ã€ããŠèããããšããããšæããŸãããããã¯å€ãã®æ¹æ³ã§åãå åŽãšå€åŽã®ã«ãŒãã§ãããä»ã§ã¯ç¡é倧èšå·ã«ããã·ã¥ã¢ãããããŠãããããªãã®ã§ãã ããããå®éã«ã¯ãDevOpsã®çŠç¹ã¯ãããŒã éã®åŒãç¶ããåŸæ¥ã®éçºã®ãããªãã®ãåŸæ¥ã®éçšãå éšã«ãŒããšå€éšã«ãŒãããããŠãããã®ããã»ã¹ãã©ã®ããã«åçåããããšããããšã§ããã åé¡ç¹ã¯ã©ãã«ããã®ã? æ©æŠã¯ã©ãã«ãããŸãã? ã©ãããã°ããŒã ãšããŠããè¯ãååã§ããã§ãããã? ãããããœãããŠã§ã¢ãè¿ éã«æäŸãããšåæã«ãå質ã皌åæéãã»ãã¥ãªãã£ã®é¢ã§ææãåããªãããã«ããããšèããŠããŸãã çµå±ã®ãšãããäž»ãªç®æšã¯ãœãããŠã§ã¢ãæäŸããé¡§å®¢ãæºè¶³ãããããšã ããã§ãã
ããŠãã·ããã¬ããã«ã€ããŠèãããšããŸããå åŽã®ã«ãŒããå€åŽã®ã«ãŒãããããŠSDLCã«æ»ããšãã·ããã¬ããã®å šäœçãªèãæ¹ã¯ããã£ãŒãããã¯ãã©ãããæ¥ãŠããã®ãããããŠãã®ãã£ãŒãããã¯ã«ãŒããã©ã®ããã«ççž®ã§ããããèŠãããšã§ãã DevOps ã«è©±ãæ»ããšãæ©æŠç¹ã¯ã©ãã«ããã®ã§ãããã? ã¯ãŒã¯ãããŒã®åé¡ç¹ã¯ã©ãã«ããã®ã? ã§ã¯ãéåžžã¯å€åŽã®ã«ãŒãã§å®è¡ããããã®ããå€åŽã®ã«ãŒãã«äŸåãããã®ã¯ãããŸãã? ãããŠãããããå·Šã«åããããšãã§ããã§ãããã? å åŽã®ã«ãŒãã«åãã£ãŠåããããšãã§ããã§ãããã? ãªããªããããã§å·Šã«åããããšãã§ããã°ããã£ãŒãããã¯ãéããªãããã§ãã ãããŠãéçºè ããããŒã«è²»ããæéãå¢ããã°å¢ããã»ã©ã ã§ã¯ãç¹°ãè¿ãã«ãªããŸãããããŸããããªãå¯èœæ§ã®ããããšã¯ã©ãã«ããã®ã§ãããã? é ããã®ã¯äœã§ãã? ãããã®åé¡ãæ©æã«çºèŠããããã®è¿œå ã®ã³ã³ããã¹ããšããŒã«ãã©ã®ããã«æäŸã§ããŸãã?
ããŠãåãã£ãŠæç¢ºã«ããŠããããããšã®1ã€ã¯ãã·ããã¬ãããšã¯ãåã«éçºè ã«ããå€ãã®äœæ¥ãäžããããšãæå³ããã®ã§ã¯ãªããšããããšã§ãã ãªããªããããã¯äººã ãå·Šã«ã·ãããããšãã«ããèãããšã ããã§ã:ãçŽ æŽããããããã¯éçºè ãšããŠã®ç§ããã£ãšãããªããã°ãªããªããšããããšã§ããã ããã¯ç§ãã¡ãããã§åãããã¢ãããŒãã§ã¯ãããŸããã ã·ããã¬ããã«ã€ããŠè©±ããšããç§ãã¡ã¯ããªãããã§ã«ããªããã°ãªããªã責任ãšç©äºã«ã€ããŠèããããšæããŸãã ãããŠãŸããããããå°ãå·Šã«åãããŠããããŒãç¶æãããã£ãŒãããã¯ãããè¿ éã«ååŸãããã广çã«ãããç°¡åã«éçºã§ããããã«ããã«ã¯ã©ãããã°ããã§ããããã ãããŠããããå¯èœã«ããããã«å¿ èŠãªããŒã«ã¯äœã§ãã? ããã§ãDockerãæ¯æŽãã3ã€ã®ç°ãªãéåžžã«å ·äœçãªé åãã€ãŸãã·ããã¬ãããšéçºè ãããç°¡åã«éçºã§ããããã«ããããšã«ã€ããŠèª¬æããŸãã
Â
éçºç°å¢ã®ã·ãã (4:20)
ãŸããéçºç°å¢ãšãDockerãããã«ã©ã®ããã«åœ¹ç«ã€ãã«ã€ããŠè©±ããŸãããã ããŠãå€ãã®äººããã§ã«ãã®ã¢ã€ãã¢ãæã£ãŠãããã³ã³ãããããã«ã©ã®ããã«åœ¹ç«ã€ããèããŠãããšæããŸãã ãã®ãããç¹°ãè¿ãã«ãªããã®ãããã°ãåããŠã®ãã®ããããããããŸããã ãŸãããµã³ãã« ã¢ããªã±ãŒã·ã§ã³ããå§ããŸãããã ç§ãã¡ã®ã¢ããªã®å€ãã¯ãããŸããŸãªãµãŒãã¹ã§æ§æãããŠããŸãã ãã®ç¹å®ã®ã¢ããªã±ãŒã·ã§ã³ã§ããã«ã¿ãã°ãµãŒãã¹ã¯ããã®ããŒã¿ãPostgreSQLããŒã¿ããŒã¹ãã€ã¡ãŒãžãããã³AWS S3ãªã©ã®ãããã¹ãã¬ãŒãžã«ä¿åããå€éšã®ã€ã³ãã³ããªãµãŒãã¹ããã€ã³ãã³ããªããŒã¿ãååŸããŸãã ããã«ãæŽæ°ã€ãã³ããKafkaã«å ¬éããŠãä»ã®ãµãŒãã¹ã«ãããã®å€æŽãéç¥ã§ããããã«ããéç¥ãé»åã¡ãŒã«ãªã©ãäœã§ãéä¿¡ã§ããããã«ããŸãã ããŠãåé¡ã¯ããã¹ãç°å¢ã§éçºç°å¢ãã©ã®ããã«èšå®ããããšããããšã§ãã ããŠãããŸããŸãªããŒã ãçµç¹ãšè©±ãåãäžã§ãããŸããŸãªæ¹æ³ãèŠãŠããŸããã
æåã®éžæè¢ã¯ãããã¯ååã«è€éã«ãªãå§ããŠãããã·ã¹ãã å ã«ã¯éåžžã«å€ãã®ç°ãªããã€ã¯ããµãŒãã¹ããããããããŒã«ã«éçºç°å¢ãã»ããã¢ããããããšããããªããšèšãããšã§ãã 倿Žããã¹ãããã«ã¯ãDev ç°å¢ã«ãããã€ããã ãã§ãã ãããã£ãŠããã®å Žåãéçºè ã¯ã³ãŒãããŒã¹ã«å€æŽãå ããŸãã ãããã®å€æŽãã³ãŒããªããžããªã«ããã·ã¥ããŸãã ãããããCI ã·ã¹ãã ããã¹ãããã«ããããããéçºç°å¢ã«ãããã€ããŸãã ãããŠããããããå¿ èŠãªããŸããŸãªãµãŒãã¹ãã¹ãŠã«æ¥ç¶ããããšãã§ããŸãã ããããç¹°ãè¿ãã«ãªããŸãããCI ç°å¢ã®é·ãã«ãã£ãŠã¯ãããšã 5 åã§ãã£ãŠãã 10 åã§ãã£ãŠããã³ãŒã倿Žããã¹ãããããã ãã«é·ããã£ãŒããã㯠ã«ãŒãã«ãªããŸãã ãããŠããããè¡ããã³ã«ãéçºè ã¯ãããŒãé¢ããããšãã§ããä»ã®ãªã¯ãšã¹ããå ¥ã£ãŠãããªã©ããŸãã ã§ã¯ãã©ãããã°ãã®ãã£ãŒãããã¯ã«ãŒããççž®ã§ããã®ã§ãããã?
éåžžãæ¬¡ã«è¡šç€ºãããå埩ã¯ãããŸããŸãªãµãŒãã¹ããã¹ãŠæã£ãŠããåãDevç°å¢ã䜿çšã§ããããä»åºŠã¯ã¢ããªã±ãŒã·ã§ã³ãããŒã«ã«ã§å®è¡ããŠã¿ãŸãããã ãããã£ãŠããã®å Žåãã¢ããªã¯ããŒã«ã«ã§å®è¡ãããŠãããDev ç°å¢ã§å®è¡ãããŠããããŸããŸãªãµãŒãã¹ã«æ¥ç¶ããŠããŸãã ãããã£ãŠããã®ãªãã·ã§ã³ã䜿çšãããšãéçºè ã§ããç§ã¯ãã¢ããªã±ãŒã·ã§ã³ã«å€æŽãå ããããšãã§ããŸãã ãããã®å€æŽã¯ããŒã«ã«ã«ãããã€ã§ããŸãã ç§ã¯ãããããã¹ãããããšãã§ããŸãã ç§ã¯ãããæ©èœãããã¹ãŠãæ€èšŒããããšãã§ããŸãã ããããåé¡ã¯ãéçºè ã 1 ã€ã®ã¢ããªã±ãŒã·ã§ã³ã§ 1 人ã§äœæ¥ããããšãã©ãã»ã©å€ãããšããããšã§ãã éåžžãä»ã®éçºè ãåãã¢ããªããŸãã¯åããµãŒãã¹ããªãœãŒã¹ã掻çšããè¿ãã®ã¢ããªã±ãŒã·ã§ã³ã«åãçµãã§ããŸãã ããã«ããããããã¯ãŒã¯ãšãªãœãŒã¹ã®ç«¶åãéåžžã«è€éã«ãªãå§ããŸãã ãããŠãããéçºè ãããŒã¿ããŒã¹ãæ žæ»æããä»ã®éçºè ãéçºãç¶ããããšãã§ããªããªã£ãå Žåãåã³äºæ ã¯æ¬åœã«è€éã«ãªããŸãã ãŸããDevç°å¢ã§ã¯ããããªãã«ãªã£ãŠãããããã¯ã©ãŠãäžã®ãã®éçºç°å¢ã§åé¡ãçºçããå Žåãéçºç°å¢ã®ä¿®æ£ãåé¡ã®ä¿®æ£ãªã©ã®ããã«å¥ã®ããŒã ãåŒã蟌ãå¿ èŠãããå¯èœæ§ãé«ããªããŸãã
ã§ã¯ãã·ããã¬ããã§ã¯ãã©ãããã°å€åŽã®ã«ãŒããã€ãŸãCIããã»ã¹ãåãé€ãããããå åŽã«ç§»åãããããšãã§ããã®ã§ãããã? Dockerã®ã³ã³ãããå®è¡ããæ©èœã䜿ãã°ãåãç°å¢ãæš¡å£ããéçºç°å¢ãã»ããã¢ããã§ããŸãã ã§ã¯ããªã¢ãŒãã¯ã©ãŠãã€ã³ãã©ã¹ãã©ã¯ãã£ããããã€ããIMããªã·ãŒãšãã®AWS S3 ãã±ããã®ãã¹ãŠã管çãã代ããã«ããã·ã³ã§MinIOãããŒã«ã«ã¹ã¿ãã¯ãªã©ã®S3 äºæãµãŒãã¹ãå®è¡ãããšã©ããªãã§ããããã ç§ã®ã¢ããªã¯ãŸã S3ãšè©±ããŠãããšèªèããŠããŸãã åããããã³ã«ãšAPIã話ããŠããŸãããä»ã§ã¯ãã®ããŒã«ã«ã³ããŒã«ãããŸããã å€éšã®ã€ã³ãã³ããªãµãŒãã¹ã«é Œã代ããã«ãwire mockã®ãããªããŒã«ã䜿çšããŠãããã¢ãã¯ã§ãããããããŸããã ãããã£ãŠãç§ã®ã¢ããªã±ãŒã·ã§ã³ã¯ãŸã APIãšéä¿¡ããŠãã®å Žåã¯ã€ã³ãã³ããªããŒã¿ãååŸããŠããŸããããã¹ãŠã¢ãã¯ããŒã¿ã§ãã è¿ãããå¿çã¯ãç§ãæåŸ ããã®ãšåãæ§é ã«ãŸã é©åããŸãããç§ã®ã¢ããªã¯ã¢ãã¯ãšè©±ããŠããã®ã§ããã®ããŠã³ã¹ããªãŒã ã®äŸåé¢ä¿ãªã©ããã¹ãŠå®è¡ããå¿ èŠã¯ãããŸããã ãŸããKafkaãšPostgreSQLãããŒã«ã«ã§å®è¡ããããšãã§ããŸãã ãããŠãå€ãã®ããŒã ããã§ã«ãã®éšåãè¡ã£ãŠããŸãã ããããç¹°ãè¿ãã«ãªããŸãããã³ã³ããã«ã€ããŠèãå§ãããšãããã§ç°å¢ãåçŸã§ããã ãã§ãªããç°å¢ã匷åãå§ããããšãã§ããŸãã ãããã£ãŠããã®å ŽåãKafkaã§äœãèµ·ãã£ãŠããã®ãã確èªãããå Žåã¯ãããžã¥ã¢ã©ã€ã¶ãŒãå®è¡ã§ããŸãããŸãã¯ãç§ããã©ãããã©ãŒã ããŒã ã§ãããKafkaãå®è¡ããŠããéçºè ããµããŒããããå Žåã圌ãã¯ããã«ããŸã詳ãããªããããããŸããã ããããããããã®Kafkaã¯ã©ã¹ã¿ãããã¹ãã¡ãã»ãŒãžãå ¬éãŸãã¯æ¶è²»ããã®ã«åœ¹ç«ã€ããŒã«ãäœæã§ãããããããŸããã ãããããããPostgreSQLã®ããŸããŸãªãã¥ã¢ã³ã¹ã«ããŸã詳ãããªã人ããããããããŸããã ãããŠçŽ æŽããããpgAdminãå®è¡ããããŒã¿ããŒã¹ããžã¥ã¢ã©ã€ã¶ãŒãæäŸããŠãäœãèµ·ãã£ãŠããã®ããèŠãŠã¿ãŸãããã ã€ãŸãããã®èãæ¹ã¯ãã³ã³ããã䜿çšããŠéçºç°å¢ãæ§ç¯ããã ãã§ãªããããã«åŒ·åãã ã³ã³ãããµããŒãéçº ãšåŒã°ãããã®ã§ãã ããŠãçŽ æŽãããããšã«ããã®ã¢ããªã±ãŒã·ã§ã³ãã³ã³ããã§å®è¡ãããŠããªãå Žåã§ãããããçºçããããšããããŸãã ããããã¹ãŠã®ä»ã®ãã¹ãŠã®ãµãŒãã¹ãã³ã³ããã§å®è¡ã§ããã¡ã€ã³ã¢ããªã¯ãã€ãã£ãã«å®è¡ã§ããŸãã ãããŠå®éãä»ããããã詊ããŠã¿ãŸãããã
Â
ãã¢:éçºç°å¢(9:26)
VS codeã«åãæ¿ããŸãã ãŸããVS Code ã«ã¯ãå ã»ã©èŠãã®ãšåãã¢ãŒããã¯ãã£ã®æŠèŠã瀺ã compose ãã¡ã€ã«ããããŸãã ã€ãŸããPostgresããŒã¿ããŒã¹ãPGAdminãAWSãå®è¡ããããã®ããŒã«ã«ã¹ã¿ãã¯ããããŸãã ãã®å Žåãã¢ããªã䜿çšãããã±ãããã¢ãã¯ã€ã³ãã³ããªãKafkaæ§æãªã©ãäœæããããŒã«ããããŸããããŠãããã§ãDocker compose upãå®è¡ããããšãã§ããŸãã -dã远å ããŠãããã¯ã°ã©ãŠã³ãã§å®è¡ãããããã«ããŸãã ãããŠãããã¯ãåæ Œããªããã°ãªããªããã«ã¹ãã§ãã¯ããã®ä»ãã¹ãŠããããããã¹ãã³ã¢ããããã®ã«æ°ç§ããããŸãã ããããæ°ç§ã§ããŒã¿ããŒã¹ãæã«å ¥ãããã¹ãŠã皌åãããŸããã ãããŠããããåŸ ã¡ãŸãã ããã§ãã«ã¹ãã§ãã¯ãééããã®ãåŸ ã£ãŠããã ãã§ãã ããŠãããã§çµããã§ãã 倧äžå€«ã§ãã ãããŠä»ãç§ãããããšããŠããããšã¯ãå®éã«yard devãå®è¡ããŠã¿ãŸãããã ãããã£ãŠããã®ã¢ããªã±ãŒã·ã§ã³ãèªåã®ãã·ã³ã§ãã€ãã£ãã«å®è¡ããŸãã ç¹°ãè¿ãã«ãªããŸãããç§ã¯ããŒãã䜿çšããŠããããã€ãã£ãã«å®è¡ãããŠããŸãããããŒã¿ããŒã¹ãšããŒã«ã«ã¹ã¿ãã¯ãã³ã³ããã§å®è¡ãããŠããä»ã®ãã¹ãŠã®ãã®ã«æ¥ç¶ããŠããŸãã ã ããç§ãããããšããŠããããšã¯ããã®ãªããžããªã«ããã€ãã®ãã«ããŒã¹ã¯ãªããããããAPIã«å¯ŸããŠã¯ãšãªãå®è¡ããŠãªã¯ãšã¹ããè¡ãããšãã§ãããšããããšã§ãã
ãããã£ãŠããã®å Žåãç§ã¯ããã€ãã®è£œåãäœãã€ããã§ãã 3ã€äœã£ãŠã¿ãŸãããã ãããŠãååã®ååãšäŸ¡æ Œãéä¿¡ããã ãã§ãã ã ãããç§ã®ããŒã¿ããŒã¹ã«ã¯3ã€ã®è£œåããããŸããããã¯çŽ æŽãããã§ãã ä»ãç§ãã§ããããšã¯ãããŒã¿ããŒã¹ã§äœãèµ·ãã£ãŠããããèŠèŠåããå¿ èŠãããå ŽåããŸãããã©ãŠã¶ã«è¡ãããšãã§ãããšããããšã§ãã ãããŠãããã§PGadminãå®è¡ããŠãããããŒã¿ããŒã¹ãéãããšãã§ããŸãã ãããŠãããªããçåã«æã£ãŠããå Žåããã®ãã¹ã¯ãŒãã¯å®éã«ã¯ããã®äœæãã¡ã€ã«ã§æ§æãããŠããŸãã ããã¯ããã«ããããã©ã«ãã®ãã¹ã¯ãŒãã ãã§ãã PGAdminã§ãããèªåæ§æããæ¹æ³ã¯ãŸã ããã£ãŠããŸããããããã¯åé¡ãããŸããã ããããããã§ãããŒã¿ããŒã¹ãéãããšãã§ããŸãã ã¹ããŒããéãããšãã§ããŸãã ããŒãã«ã«ç§»åããŠããã¹ãŠã®ããŒã¿ã衚瀺ããŠã¿ãŸãããã ãããã®ã¢ã€ãã ã®1ã€ã«å€æŽãå ããŠãå¥ã®è£œåãšåŒã³ãŸãããã 倿Žãä¿åããŸãã ç¹°ãè¿ãã«ãªããŸãããããŒã¿ããŒã¹ãšå¯Ÿè©±ããŠããŸããããããäºå®ã§ããããšã蚌æããããã«ãVSã³ãŒãã«æ»ããID 2ã®è£œåãååŸãããšãæŽæ°ãããååãé¢é£ä»ããããŠããããšãããããŸãã ãŸããã€ã³ãã³ããªãµãŒãã¹ããã€ã³ãã³ããªããŒã¿ãååŸããŠãããããã§ãã€ã³ãã³ããªãŒ2ããªã¯ãšã¹ããããšã 15ã®æ°éãåŸããããããããã«åæ ãããŸãã ãããã 3ãå®éã«ã¯ããã¹ãããã®ãé£ããã³ãŒããŒã±ãŒã¹ããã¹ãããŠããŸãã ãã®ããã3 ã€ããªã¯ãšã¹ããããšãã€ã³ãã³ã㪠ãµãŒãã¹ãã 500 ãè¿ãããŸãã ãããŠä»ãç§ã¯ãã¹ãããããšãã§ããŸããç§ã®ã¢ããªã±ãŒã·ã§ã³ã¯ããµãŒãã¹ãããŸãå¿çããŠããªããããã®çš®é¡ã®ãšããžã±ãŒã¹ãŸãã¯ãšã©ãŒã±ãŒã¹ã«å¿çããŸããã ãããŠãŸããä»ã®æ¹æ³ã§ã¯é£ãããããããªãããšããç§ã¯æ¬åœã«ç°¡åã«å²ç¬ããããšãã§ããŸãã
ãã©ãŠã¶ã«æ»ããšããã®å Žåã¯kafbatã䜿çšããŠKafkaã¯ã©ã¹ã¿ãŒã§äœãèµ·ãã£ãŠããããèŠèŠåããŠããŸãã ãŸãã補åã®äœæäžã«å ¬éãããã¡ãã»ãŒãžã確èªã§ããŸãã ãããŠã圌ããæ£ããæ§é ãæã£ãŠããããšãªã©ãæ€èšŒã§ããŸãã ãŸãããã©ãã«ã·ã¥ãŒãã£ã³ã°ããããã°ã«ã䜿çšããŸãã ãŸããKafkaã¯ã©ã¹ã¿ãŒãšå¯Ÿè©±ããããã«ãããŸããŸãªCLIã³ãã³ãããã¹ãŠãåŠã¶å¿ èŠã¯ãããŸããã ããŠãè©±ãæ»ããŸããããããæ©èœãããããã«ã¯ããããã³ã«ãšãã¢ããªã±ãŒã·ã§ã³ãšå€éšãµãŒãã¹ãšã®éã®æœè±¡åã«çŠç¹ãåœãŠãå¿ èŠããããŸãã ããŒã¿ããŒã¹ã«ã¯ããã€ããªãããã³ã«ããããŸãã èªåã®ãã·ã³ãŸãã¯ãããŒãžã ãµãŒãã¹ã§ããŒã«ã«ã«å®è¡ãããŠãã Postgres ããŒã¿ããŒã¹ãšéä¿¡ããå Žåãåããã€ã㪠ãããã³ã«ã話ããŠããŸãã ãããã ããããAPIãKafkaã¯ã©ã¹ã¿ã§ãåãããšãèšããŸãããä»ã®ãµãŒãã¹ã§ãããããæœè±¡åããŠããŒã«ã«ã³ããŒãå®è¡ããæ¹æ³ããããŸãã ãŸããKey Cloakã®ã³ããŒãããŒã«ã«ã§å®è¡ããŠããã¹ããŠãŒã¶ãŒã ãã§ãã·ã³äžã§OAuthãŸãã¯OIDCèªèšŒãããŒã«ã«ã«å®è¡ããã¢ããªã±ãŒã·ã§ã³ãæã€ããŸããŸãªãŠãŒã¶ãŒããã«ãœãã®ããŸããŸãªããŒã«ããã¹ãã§ããããã«ãããšããããŒã ãèŠãããšããããŸãã ç¹°ãè¿ãã«ãªããŸããããããã®ãããã³ã«ãšãµãŒãã¹éã®æœè±¡åã«çŠç¹ãåœãŠããµãŒãã¹ã«ãã£ãããšããAPIãåãã£ãŠããããšã確èªãããšããã®çš®ã®æ©äŒãã¯ããã«ç°¡åã«ãªããŸãã
ãã®å Žåãã³ã³ããåãããŠããªãã¢ããªããæ¥ç¶ããããã«ãã³ã³ããããŒãããã¹ãã«ããããããŸãã ã§ããããç§ã¯Postgresãéå¶ããŠããŸããã ç§ã¯ããããã¹ããã·ã³ã«å ¬éããã ãã§ãã ãããŠããã®å ŽåãCLIã䜿çšããŠæ¥ç¶ããããŒã«ã«ãã¹ãããŠãŒã¶ãŒã«æ¥ç¶ããããšãã§ããŸãã ãããããŸããçµãã£ãããã³ã³ãããå£ãã ãã§ãã ç§ã®ãã·ã³ã«ã¯äœãã€ã³ã¹ããŒã«ãããŠããããæ¬¡ã®ãããžã§ã¯ãã«é²ãããšãã§ããŸãããææ¥ä»äºã«æ»ã£ãŠã¹ãã³ã¢ããããäžæãããšããããåéããããšãã§ããŸãã ãããããã®ã³ã³ããã®çŸããã§ãã ãããŠæåŸã«ãéçºç°å¢ãæ§ç¯ããŠãããšããä»ã®ããŒã«ã远å ããããšãæ€èšããŠãããšããããžã¥ã¢ã©ã€ã¶ãŒãã¡ãã»ãŒãžãããªãã·ã£ãŒããŸãã¯éçºè ããã©ãã«ã·ã¥ãŒãã£ã³ã°ããããã°ããã广çã«è¡ãã®ã«åœ¹ç«ã€ç°å¢ã®æ§ç¯ã«åœ¹ç«ã€ä»ã®ããŒã«ãªã©ãéçºç°å¢ã匷åããä»ã®ãã®ã¯äœã§ããã ãããéçºç°å¢ã§ãã
Â
çµ±åãã¹ãã®ç§»è¡ (15:05)
çµ±åãã¹ãã«ã€ããŠè©±ããŸãããã çµ±åãã¹ãã¯ãå€ãã®äººãçµ±åãã¹ããšã¯äœãã«ã€ããŠç°ãªãèããæã£ãŠãããããæ¥œãããã®ã§ããããã§ã¯ããããå®çŸ©ããããã«å°ãæéãè²»ãããŸãã å ·äœçã«ã¯ãã³ãŒããããã·ã¥ããå€åŽã®ã«ãŒãã®ãã®éšåãèŠãŠãã¢ããªã±ãŒã·ã§ã³ãå€éšäŸåé¢ä¿ã§åäœããããšãæ€èšŒãããå ŽæãããŒã¿ããŒã¹ãå€ãã®ç¹ã§éçºã§èŠããã®ãªã©ããã¹ãã«ãŒãã§ãããã©ã®ããã«è¡ãããèŠãŠããŸãã ç¹°ãè¿ãã«ãªããŸããããã¹ããè¡ãã°è¡ãã»ã©ãããã¯éåžžããããã€åã®æåŸã®ã¹ãããã§ãã ãããã£ãŠãããã§ã®ã«ãŒãå ã®ãã¹ãã«ãã¬ããžãåªããŠããã»ã©ãã³ãŒããããé »ç¹ã«ãããã€ããããšã«æ £ããŸãã
ããŠãçµ±åãã¹ãã«ã¯å€ãã®èª²é¡ã䌎ããŸãã ããŸããŸãªãµãŒãã¹ã管çããå¿ èŠããããŸãã ãããŠãããããCIã§å®è¡ãããšãã¯ããã§ã«ã©ããã§çšŒåãããŠããããã¹ãã³ã¢ããããå¿ èŠããããŸãã ã§ããããã©ã€ããµã€ã¯ã«ã®ç®¡çããŸãã¯ãããããµããŒãããã³ç¶æããããã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã®ã¿ã®ç®¡çãéå§ããå¿ èŠããããŸãã ãã¹ãéã§ãããã®ç°ãªãåãµãŒãã¹ã«ãªã»ããããã«ã¯ã©ãããã°ããã§ãã? ãã¹ãã®å®è¡ããšã«ããŒã¿ããªã»ããããå¿ èŠããããã¹ãã¹ã€ãŒããããããšãããã£ãŠããå Žåãããã°ãåãã¹ããçžäºäœçšããå¯èœæ§ã®ããããŒã¿ã«é¢ããç°ãªãã«ãŒã«ãæåŸ å€ãæã€ãªã©ããã®ã¹ã€ãŒãå šäœãäžåºŠã«å®è¡ã§ããå ŽåããããŸãã ãããããã©ããã£ãŠæžãã®ã§ãããã? ãããèžãŸããŠããµãŒãã¹ã®ã©ã€ããµã€ã¯ã«ã管çããå¿ èŠãããå Žåãå®éã«ãã¹ããäœæããåã«ãããããã©ã®ããã«èšå®ããã°ããã®ã§ããããã ãŸãããã¹ãŠã®ãã®ãã¯ã©ãŠãã«ã¹ãã³ã¢ããããèœåããªãå ŽåããŸãã¯CIç°å¢ã掻çšããŠããå¯èœæ§ã®ããå Žæã§ããããããŒã«ã«ã§ã©ã®ããã«å®è¡ããŸãã?
ãããŠãã§ããã°ãç§ãã¡ãæãã§ããã®ã¯ãçæ³çãªãã¹ããã©ãããã«åããŠåãçµãããšã§ãã ãã®ãããäžéšã«ãŠããããã¹ãããããŸãã çµ±åãã¹ãããããçµ±åãã¹ããå€ããã°å€ãã»ã©ãã¢ããªã±ãŒã·ã§ã³ãä»ã®ãµãŒãã¹ãšããŸã飿ºããããšãããã£ãŠããŸãã ããããå€ãã®å Žåããããã®ç°ãªããµãŒãã¹ã管çããå¿ èŠããããããããã¯é£ããããšãããããŸãã ãã®ãããå€ãã®å ŽåãããŒã ã¯ãã¹ãã®ç æèšã§çµããããã¯ããçµ±åãã¹ããããŸãè¡ãããŠããªãã®ã¯å€§å€ã ããã§ãããšããæãã«ãªããŸãã ã¹ããŒãžã³ã°ç°å¢ãæ¬çªç°å¢ãªã©ã«ãããã€ããã ãã§ãã ãŸãããããã€ããããããšã³ãããŒãšã³ããŸã㯠UI ãã¹ããããã«è¡ãäºå®ã§ãã ããŠãç¹°ãè¿ãã«ãªããŸããããããã€ããŠæåŸ ããªãããã«ãé©åãªãã¹ãæ§é ãåŸãã«ã¯ã©ãããã°ããããèããããšæããŸãã ããããã³ãŒããå ¬éãããåã«èªä¿¡ãæã€ããšãã§ããŸãã
Â
Testcontainersã®çŽ¹ä» (17:43)
ãã®ããã«ãTestcontainersãã¬ãŒã ã¯ãŒã¯ãšã©ã€ãã©ãªã«ã€ããŠèª¬æããŸãã ã€ãŸããTestcontainersã¯ãããã§è¿°ã¹ãŠããããã«ããã¹ãäŸåé¢ä¿ã®äžæçãªè»œéã€ã³ã¹ã¿ã³ã¹ãæäŸããããã®ã©ã€ãã©ãªã®ãªãŒãã³ãœãŒã¹ã³ã¬ã¯ã·ã§ã³ã§ãã çµå±ã®ãšãããããã¯ããã°ã©ããã£ãã¯ã³ã³ããã§ãã 以åã¯ãDocker compose upãšèšããComposeãããããããYAMLããã¥ã¡ã³ãã§å®£èšããŸããããTestcontainersã䜿çšããŠãããã¯éåžžã«ããã°ã©ã çãªã¢ãããŒãã§ããã ãããŠãã¯ããããã«ã¯ããããã®æ°åããããã«ã®æ°ãããã³çµç¹ãããã䜿çšããŠãããã確èªã§ããŸãã ãããŠãããã€ãã®å€§ããªäŒç€Ÿã®ååããããŸãã å®éãNetflixã¯ãTestcontainersããšã³ãžãã¢ãªã³ã°æåããã¹ãæåã«ããã®ã«ã©ã®ããã«åœ¹ç«ã£ããã«ã€ããŠããªãèªã£ãŠããããããèŠãã®ã¯æ¬åœã«é åçã§ããã
ããããç¹°ãè¿ãã«ãªããŸããããã®ããã°ã©ã ã«ããã¢ãããŒãã«ãããããããã¹ãèªäœã®ã©ã€ããµã€ã¯ã«ã«çµã¿èŸŒãããšãã§ããŸãã ããŠããã®äŸã§ã¯ããã®ç¹å®ã®ç»åã®postgresã³ã³ããã«é¢é£ä»ããããpostgresãšãã倿°åpostgresã§å®çŸ©ãããã³ãŒãã¹ããããããããŸãã ãã®å Žåããã®ã€ã¡ãŒãžã¯Docker Hubããæ¥ãŠããŸãããããã¯ç¬èªã®å éšã¬ãžã¹ããªããã®ç¬èªã®ã€ã¡ãŒãžã«ããããšãã§ããŸãã ãããå®è¡ããŠããã³ãŒãã«ããã©ã€ããŒã ã¬ãžã¹ããªãããã«ã§ããè³æ Œæ å ±ãããéããã©ãããã§ãã€ã¡ãŒãžã䜿çšã§ããŸãã ãããã£ãŠãããããã¹ãã«ãã©ã°ã€ã³ãããšããã¹ãã®å®è¡åã«ã³ã³ãããéå§ãããã¹ããå®è¡ããŠãããå®äºãããã³ã³ãããã¯ãªãŒã³ã¢ããã§ããŸãã ãŸãããã¹ãã®ç¯å²ã«å¿ããŠããã®ã¹ã¿ãŒãã¢ããã®åè§£ããã¹ãŠã®ãã¹ãã§è¡ãããäžé£ã®ãã¹ãã§è¡ããããŸãã¯äœã§ãéžæã§ããŸããããã¯ããã°ã©ã ã€ã³ã¿ãŒãã§ã€ã¹ã®äžéšã§ããããããã®å¶åŸ¡ãå¯èœã§ãã
çŸåšã§ã¯ãããŒã¿ããŒã¹ãã¡ãã»ãŒãžãã¥ãŒãAIæ©æ¢°åŠç¿ã¢ãã«ãªã©ãå€ãã®äžè¬çãªãŠãŒã¹ã±ãŒã¹ã«å¯Ÿå¿ããå€ãã®é Œãã«ãªãã¢ãžã¥ãŒã«ãšããã«äœ¿ããã¢ãžã¥ãŒã«ããããŸãã ã§ããããæ¬åœã«è¯ãã¢ãžã¥ãŒã«ããããããããŸãã å®éãç§ã¯ãããããã©ãŠã¶ã§ããã«åŒã£åŒµãåºããŸãã ãã®ãããããŸããŸãªã¢ãžã¥ãŒã«ããããããŸããŸãªã«ããŽãªãèŠãããšãã§ããŸãã ãããŠãããªãã¯ãããã®ãã¡ã®1ã€ãæŸã£ãŠããã䜿ãããšãã§ããŸãã ãŸããå€ãã®äŒæ¥ãTestcontainersã䜿ãå§ãããšãç¬èªã®ã¢ãžã¥ãŒã«ãäœãå§ããã®ã§ãå®éã«ã¯ã¢ãžã¥ãŒã«ã¯åãªãã©ãããŒã§ãããTestcontainersãããããããªããã£ãã®äžã«ããå¥ã®é«ã¬ãã«ã®æœè±¡åã®ãããªãã®ã§ãã äŸãã°ãKafkaãäŸã«ãšããšãKafkaã1ã€ã®ã³ã³ããã§å®è¡ã§ãããã®ã«ãªãåã¯ãZookeeperãå®è¡ããå¿ èŠããããŸããã ãããŠãç§ã¯Kafkaã¢ãžã¥ãŒã«ã䜿çšããŸãã ãããŠãã¯ããããã¯ç§ãKafkaã®ã¯ã³ã©ã€ããŒãæã£ãŠããããã«èŠããŸãããèå°è£ã§ã¯ãå®éã«ã¯ãZookeeperãèµ·åããè€æ°ã®ãµãŒãã¹ãæ¥ç¶ãããã«ã¹ãã§ãã¯ãåæ Œããã®ãåŸ ã£ãŠãKafkaãèµ·åããããã®æœè±¡åã§ãã æ£çŽãªãšãããããªãã¯ãŒã«ãªæœè±¡ç»ã§ãã ãã®ãããå€ãã®äŒæ¥ãçµç¹ããç¬èªã®ãµãŒãã¹ãã¯ãŒã¯ãããŒãªã©ããµããŒãããããã®ç¬èªã®ã¢ãžã¥ãŒã«ãäœæãå§ããã§ãããã
ããŠããããã®ãã¹ããæžããŠããŠãããã§ããã«ãã¢ãè¡ããšããéçºè ãšããŠãããã®ãã¹ããèšè¿°ããããŒã«ã« ãã·ã³ã§åäœãæ€èšŒã§ããããšããããããŸãã ããŠãCIãååŸãããšã©ããªããŸãã? ãŸããå€ãã®CIç°å¢ã§ã¯ãDockerã§Dockerãå®è¡ã§ããªãå ŽåããKubernetesãããã§å®è¡ããŠããŠã察話ããããã®Docker CLIãDockerãšã³ãžã³ãããªãå Žåãªã©ãå°ãå¶éãããŠããããããã¯ããŠã³ãããŠãããããããšããããŸãã Testcontainers Cloudã¯ãã³ã³ããã®å®è¡ãã¯ã©ãŠããªãœãŒã¹ã«å§ä»»ã§ããããã«ãªã£ããã®åé¡ã解決ããã®ã«åœ¹ç«ã¡ãŸãã ãããŠåºæ¬çã«ãå¿ èŠãªãšãã«å転ããäžèŠã«ãªã£ããšãã«åè§£ããŸãã ãããŠãããã¯ä¿¡ããããªãã»ã©éãã§ãã ãããŠãããã¯ããã§ããã«ããããŸãã ç¹°ãè¿ãã«ãªããŸãããç¹ã«CIç°å¢ã§ã¯ãéåžžã«è²ŽéãªãªãœãŒã¹ã§ãã
Â
ãã¢: Testcontainers (21:30)
ããã§ã¯ãIntelliJã«ãžã£ã³ãããŸãã ãããŠããã®IntelliJãããžã§ã¯ãããããSpringbootã¢ããªã±ãŒã·ã§ã³ã§ãã ãããŠãããã«ãã¹ãããããŸãã®ã§ããã®ãã¬ãŒã¯ãã€ã³ããåé€ããŸãã åºæ¬çã«ã¯ãã¢ããªã±ãŒã·ã§ã³ãã¹ãã³ã¢ããããŠAPIããããããããŒã¿ããŒã¹ã«ç©ãä¿åãããŠããããšãæ€èšŒããŸãã ãŸããRedisã䜿çšããŠããŸãã ã§ããããç¹°ãè¿ãã«ãªããŸããããã¹ãŠãæ©èœããããšã確èªããŠãã ããã ãã®ç¹å®ã®ãã¹ãã±ãŒã¹ã¯ãPostgresããŒã¿ããŒã¹ãã¹ãã³ã¢ããããRedisãã¹ãã³ã¢ãããããšããæœè±¡ãæ¡åŒµããŠããŸãã ããŠãç§ããã åŒã³åºãã¯ãŒã«ãªããšã®1ã€ã¯ãããã¯Springbootãã¬ãŒã ã¯ãŒã¯ã®äžçš®ã®ç¹å¥ãªçµ±åã§ãããPostgresãèµ·åãããšã å ¬éãããããŒããšè¡šç€ºãããŸã 5432ã ããŠãããã¯å¿ ããã 5432ã§ãã¹ãã«å ¬éãããããã§ã¯ãããŸããã 䜿çšãããšãã§ã¡ã©ã«ããŒããéžæããã ãã§ãã ãããããµãŒãã¹æ¥ç¶ã¢ãããŒã·ã§ã³ã¯åºæ¬çã«ãããã¯ã³ã³ããã§ãããããèŠãŠãPostgresã³ã³ããã§ããããšã倿ããå®è¡äžã®ã³ã³ããããæ§æãæœåºããŠãæ®ãã®Springæ§æãæŽæ°ããããšã瀺ããŠããŸãã ãããã£ãŠããã®å Žåãã©ã³ãã ãªããŒããéžæããã ãã ãšããŸããã 50000ã ãã®ãããPostgres ãããŒã 50000ã§èµ·åãããšãJDBC URL ã¯ããã®å ¬éããŒãã®ã³ã³ãããæãããã«èªåçã«åæ§æãããŸãã ç¹°ãè¿ãã«ãªããŸãããç§ã¯ããã«ã€ããŠäœãããå¿ èŠã¯ãããŸããã ããã§ã®Redisã«ã€ããŠãåãããšãèšããŸãã
ããã§ã¯ããããã®ãã¹ããå®è¡ããŠã¿ãŸãããã ããããã¹ãŠãå®è¡ããŸãããã ãããŠããããè¡ã£ãŠããéãç§ã¯ããã®åŽé¢ãŸãã¯ããã·ã¥ããŒãã§Docker DesktopãåŒã£åŒµãã€ããã§ãããããŠããã§ç©äºãå§ãŸããšãç§ã¯ä»ãããTestcontainersã¯ã©ãŠãã§å®è¡ããŠããããšãããããŸãã ã ãããæåã«ãã®ãã¢ããããŸãã ãªãã·ã§ã³ãæã«å ¥ããŸããã ãã®ãããã³ã³ãããåŒã£åŒµã£ãŠããã§äœããå§ããŠããããšãããããŸãããå®éã«ã¯ç§ã®ããŒã«ã«ãã·ã³ã§ã¯äœãå®è¡ããŠããªãããšã«æ°ä»ãã§ãããã ãããŠãããã¯åé¡ãããŸããã ããã§ããç§ã®ãã¹ããã¹ã¯ã³ã³ããã䜿çšããŠããŸãã ãŸãããã®å Žåã¯ãã¯ã©ãŠãã§äžè¶³ããŠããã³ã³ããã«æ¥ç¶ããããã«äœãããå¿ èŠã¯ãããŸããã§ããã ããŠãããã¯ã«ã€ããŠã¯ãå ã«é²ãã§ãä»ããããŒã«ã«ã§å®è¡ããããã«åæ§æããŸãã ãããŠãã®å Žåããã¬ãŒã¯ãã€ã³ããèšå®ããããšæããŸãã ããã§æ»ããŸãããã ãããŠä»ãç§ã¯ãã®ç¹å®ã®ãã®ããããã°ããŸãããã å³ã¯ãªãã¯ã¡ãã¥ãŒãç»é¢å ±æã«è¡šç€ºãããªãã£ãããšã¯ç¥ã£ãŠããŸããããŸãããã®ç¹å®ã®ãã¹ããå®è¡ããŠããŸãã ãã¬ãŒã¯ãã€ã³ããèšå®ããŸãã ã³ã³ãããèµ·åããããšãããããŸãã ãããŠããã¬ãŒã¯ãã€ã³ãããããããã®ãåŸ ã¡ãŸãããã 倧äžå€«ã§ãã ãããã£ãŠããã¬ãŒã¯ãã€ã³ãããããããŸãã
ãããŠãããã§ããã·ã¥ããŒããå šç»é¢è¡šç€ºã«ããŠã¿ãŸãããã ã§ã¯ãããŒã¿ããŒã¹ãèŠãŠã¿ãŸãããã ãããŠãç§ã¯å®è¡ããŠããã¹ããŠãŒã¶ãŒãšããŠæ¥ç¶ããŸãããã ãããŠãããã«ããŒãã«ã衚瀺ãããŸãã ã㢠ãšã³ãã£ãã£ãã æ ãéžæããŸãã ããã«äŸ¡å€ãããããšãããããŸãã ãããŠããã¹ããããŸãã ããã§åŒãäžããŸãã å€ãäœããã®å€ãæã€ããšãæåŸ ããŠããããšã確èªããŸãã ã ãããä»ããããã調æŽããŠããã€ããã§ãã ãããã£ãŠããã¢ãšã³ãã£ãã£ã®æŽæ°èšå®å€ã¯ããã¹ãã«å€±æããå¥ã®å€ããšçãããªããŸãã ãããŠãããäžåºŠéžæãããšãæŽæ°ãããŠããããšãããããŸãã 倧äžå€«ã§ãã ããã§IntelliJã«æ»ããŸãããã ãããŠãããã§ã¯ãšãªãå®è¡ããããã«æç€ºããŸãããã ãããã£ãŠãããã§ã®çµæãªããžã§ã¯ãã«ã¯ããã¹ãã«å€±æããä»ã®å€ãšä»ã®å€ãããããšãããããŸãã ç¹°ãè¿ãã«ãªããŸãããããã§ã¯ããŒã¿ããŒã¹ãããã«ããã©ã€ããã¢ã§ãã ããŠãæããã«ãããã¯ãã¹ãã«å€±æããŸãã ãã¹ããäžåæ Œã«ãªããªã© ãããŠãå®éã«ããããŠããéã«ãããã¹ãŠã®ãã¹ããä»ã®ã³ã³ããã¯ãã§ã«æ»ãã§ããŸã£ãŠããŸãã
ãŸããTestcontainersãã¬ãŒã ã¯ãŒã¯ã䜿çšãããšããã¹ãã倱æããããšãããããŸãã ããã«åºåã衚瀺ãããŸãã ç¹°ãè¿ãã«ãªããŸãããããã°ã©ã ã§ã³ã³ãããã¹ãã³ã¢ããããŠãããããç§ã®ã¢ããªã±ãŒã·ã§ã³ã«å¿ èŠãªãã®ã§ãããšã ãèšãããšãã§ããŸãã ãããŠãã®å Žåããããç§ã®springbootã³ãŒãã«ãã©ã°ã€ã³ããã®ã¯éåžžã«ç°¡åã§ãã ããããSDKã¯ããŸããŸãªæ¹æ³ã§æ©èœããŠããŸãã ç°ãªãèšèªãç°ãªããã¬ãŒã ã¯ãŒã¯ãªã©ã ããã«ã¯ãæ¬åœã«ãæ¬åœã«ã¯ãŒã«ãªäŸ¡å€ããããããããŸãã ãããŠä»ãåã³ãç§ã¯ãã®ã³ãŒããã³ãããããããšãã§ããŸãã ç§ã¯ãããç§ã®ã³ãŒããªããžããªã«ããã·ã¥ããããšãã§ããŸããç§ã®CI / CDã·ã¹ãã ã¯ãã€ãã©ã€ã³ã§ãããå®è¡ããããTestcontainersCloudã䜿çšããããšãã§ããŸãã ãããŠãããã¯ãŸã£ããåãããã«æ©èœããŸãã ãããŠä»ãç§ã¯èªåã®ã³ãŒããæ¬çªç°å¢ã§æåŸ ã©ããã«åäœãããšããèªä¿¡ãã¯ããã«å€§ãããªããŸããã
Â
è匱æ§è©äŸ¡ã®ã·ãã (26:32)
æåŸã«ã話ããããã®ã¯ãè匱æ§è©äŸ¡ã®ã·ãããšãã»ãã¥ãªãã£å šè¬ã«ã€ããŠã§ãã SDLCã«è©±ãæ»ããšãéçºè ããããèãããšã®1ã€ã¯ãã³ãŒããããã·ã¥ããŠãã«ãããã¹ããåŸ ããªããã°ãªãããæçµçã«ã¯ã»ãã¥ãªãã£è©äŸ¡ãå®è¡ãããã®ãåŸ ããªããã°ãªããªããšããããšã§ãã ãããŠãããã»ã¹ã®ãã£ãšåŸã«ãªã£ãŠããããã£ãšãäŸåé¢ä¿ãå€ããªã£ãŠããããŸãã¯ããã§äœããä¿®æ£ããå¿ èŠããããšèãããŸãã ã§ã¯ãã©ãããã°ãããå°ãå·Šã«åãããŠãå°ãæ©ãç©äºã解決ã§ããã§ãããã?
çŸåšãã³ã³ããã¯ãã¢ããªã±ãŒã·ã§ã³ã®ããã±ãŒãžã³ã°ãšã»ãã¥ãªãã£ã«ã€ããŠã®èãæ¹ã«ãç°ãªãã¢ãããŒããšæŠè¡ããããããŠããŸãã ãããã£ãŠãã³ã³ããã䜿çšããŠãç°å¢å ã§ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããã¢ããªãå®è¡ããå¿ èŠããããã¹ãŠã®å Žæã«ã¢ããªã±ãŒã·ã§ã³ãææ ŒãããŸãã ã¹ããŒãžã³ã°ç°å¢ã«ç§»åããŠVMãååŸããå¿ èŠãªãã®ããã¹ãŠã€ã³ã¹ããŒã«ããæ¬çªç°å¢ã§ãåããã®ãã€ã³ã¹ããŒã«ããããšã¯ãããããŸããã ä»ã§ã¯ãåé¡ãçºçãããšãã«ãããããã¹ãŠã®ãã·ã³ã«ããããé©çšããå¿ èŠããããŸãã ããããç§ã¯ã€ã¡ãŒãžãæ§ç¯ããŠãããã¢ããªã±ãŒã·ã§ã³ãå®è¡ããå¿ èŠããããã¹ãŠã®å Žæã§ããã宣äŒããŠããŸãã ã€ãŸããã¢ããªã±ãŒã·ã§ã³ã«è匱æ§ãããå Žåã¯ãæ°ããã³ã³ããã€ã¡ãŒãžããã«ãããã ãã§æžã¿ãŸãã ããããããã¯ãŸãããã®ã€ã¡ãŒãžãéçºç°å¢ã§ããŒã«ã«ã«ãã«ãã§ããã°ãã³ã³ããã€ã¡ãŒãžãããã·ã¥ãªãããŠCIã·ã¹ãã ããã«ãããŠå®è¡ããåã«ãã³ã³ããã€ã¡ãŒãžã«åé¡ããããã©ããã確èªã§ãããšããããšãæå³ããŸããçè«çã«ã¯ãCI/CDã·ã¹ãã ããã«ãããŠãããã®ãšãŸã£ããåãã€ã¡ãŒãžãããŒã«ã«ã§ãã«ãããåºåãšçµæãååŸã§ããã¯ãã§ãã çã ãããŠãããããã Docker Scout ãæå³ããŠããããšã§ãã
Â
Docker Scoutãšã¯äœã§ãã? (28:20)
Docker Scout ã¯ããµãŒãã¹ã¹ã€ãŒãã®äžéšã§ãã補åã® 1 ã€ã§ãããäžæ¥ã®çµããã«è¯ãã€ã¡ãŒãžãæ§ç¯ããŠãããã©ãããç¥ãã®ã«åœ¹ç«ã¡ãŸãã ã©ã³ã¿ã€ã æ§æãšè匱æ§ãCDEããªãŒãã³ãœãŒã¹ã©ã€ã»ã³ã¹ã®åé¡ãªã©ã«é¢ããç§ã®çµç¹ã®ããªã·ãŒãæºãããŠããŸãã? ãããŠãåé¡ãèŠã€ãã£ããšãã«ã¯ãéçºè ãšããŠãã©ã®ããã«ä¿®æ£ããã°ãããã«ã€ããŠãå®çšçãªæŽå¯ãåŸãããšãã§ããŸãã ããŠãç§ãèŠãŠããããŸããŸãªæ©èœãšããŸããŸãªãã¥ãŒã«å¿ããŠããããæäŸããããã€ãã®ç°ãªãæ¹æ³ããããããã§ã¯ããããã®åäœãããã«èŠãŠãããŸãã
ã€ãŸããæ©èœã®1ã€ç®ã¯éäžåãã¥ãŒã§ãã äžå åãããWebããã«ãéããŠãçµç¹å šäœãèŠæž¡ãããšãã§ããä»ã®ãªããžããªãCI/CDã·ã¹ãã ãšã®ããŸããŸãªçµ±åãæŽ»çšããŠããœãããŠã§ã¢ãµãã©ã€ãã§ãŒã³å šäœã®æŽå¯ãåŸãããšãã§ããŸãã éçºè ãšããŠãæšå¥šãããã¯ãŒã¯ãããŒãååŸããã©ã®ããã«åé¡ãä¿®æ£ããŸãã? ãããŠãå®å šãªéçºã®å©ããåããŠãç»ååæãè¡ããç©äºãã©ã®ããã«çºçããŠããããçè§£ããããšãã§ããŸãã
Â
ãã¢: Docker Scout (29:31)
ããã§ã¯ãããã§å®éã«è©ŠããŠã¿ãŸãããã ç§ãããããšããŠããããšã¯ããŸã scout.docker.com ãéããããã§ãã¢ç°å¢ã«å ¥ããŸãããã®ç¹å®ã®ãã¢ç°å¢ã§ã¯ãããªãå€ãã®ç°ãªãããªã·ãŒãäžéšã«è¡šç€ºããããããã®ããã€ãã¯è匱æ§ã«åºã¥ããŠãããäžéšã¯ããã§ãªãããšãããããŸãã ããšãã°ããã®æåã®ãŠãŒã¶ãŒ (ããã©ã«ãã®éã«ãŒã ãŠãŒã¶ãŒ) ã¯ãã€ã¡ãŒãžãæ¢å®ã§éã«ãŒã ãŠãŒã¶ãŒãšããŠå®è¡ãããããã«æ§æãããŠãããšããçµç¹ã®ããªã·ãŒãèšå®ããããšèããŠããŸãã ãã®å Žåãã€ã¡ãŒãžã¯ 1 ã€ã ãã§ãç£èŠãããŠãããæºæ ããŠããŸããã ã€ãŸãããã®ç¹å®ã®æ¿çãèŠãŠã¿ãŸãããã ãã®ç¹å®ã®ã€ã¡ãŒãžã¯æºæ ããŠããŸããã ããã§ã¯ãéã«ãŒããŠãŒã¶ãŒãšããŠå®è¡ãããããã«ä¿®æ£ããŸãããã ãŸããã³ããŒã¬ããã®ãªãŒãã³ãœãŒã¹ã©ã€ã»ã³ã¹ãããã§æ³šæãã¹ãç¹ãè匱æ§è©äŸ¡(å€ãããŒã¹ã€ã¡ãŒãžã䜿çšããŠããããæªæ¿èªã®ããŒã¹ã€ã¡ãŒãžã䜿çšããŠããã)ããµãã©ã€ãã§ãŒã³ã®èªèšŒãå®éã«ã€ã¡ãŒãžã«æ·»ä»ãããŠããããªã©ãä»ã«ãé¢é£ãããã®ããããŸãã
ã€ãŸããããã¯ç§ãã©ã®ããã«ãã£ãŠãããã«ã€ããŠã®çµç¹æšªæçãªèŠç¹ãäžããŠãããã ãã§ãã? ãŸããæ°ããè匱æ§ãçºèŠãããæ°ããCVEãçºè¡šããããšãã³ã³ããã®åªããç¹ã®1ã€ã¯ããœãããŠã§ã¢éšå衚(SBOM)ãåºæ¬çã«ãããã¯ã¹ã®äžèº«ãã³ã³ããã€ã¡ãŒãžã®äžèº«ã瀺ãã«ãŒãŽãããã§ã¹ããšããŠæ©èœããããšã§ãã ãã®ãããæ°ããè匱æ§ãåºãŠãããããã®è匱æ§ããã®ããŒãžã§ã³ã®ãããã®ããã±ãŒãžã«åœ±é¿ãäžãããã©ãããåçŽã«ã¯ãã¹ãã§ãã¯ããã ãã§ãã æ¶Œããã SBOMã«ã¯ãã®è匱ãªããã±ãŒãžãå ¥ã£ãŠããŠããããéããŠããããããšèšããã ãã§ãã ãã®CVEãããã®åœ±é¿ãåããã€ã¡ãŒãžãèŠãŠãããã«è©³ããåŠã³ãã©ã®ããã«ä¿®æ£ããããªã©ãåŠã³ãŸããããã¹ã«ãŠããããããããŸãã
ããŠãéçºè ãšããŠãããã«ããããŒã«ã®ããã€ããèŠãŠã¿ãŸãããã ããã«ãããžã§ã¯ãããããŸãã ããã¯ããŒããããžã§ã¯ãã§ããããã®å Žåã¯DockerfileããããŸãã ããã¯ããã¢ã³ã¹ãã¬ãŒã·ã§ã³ã®ããã ãã«å€ãDockerfileã§ãã ããŒã 16ãããã«ãããŸãã ããã±ãŒãžJSONãã³ããŒããŸãã ã€ã³ã¹ããŒã«ãè¡ã£ãããã¢ããªã®ã³ãŒããã³ããŒãããããŸãã ããã§ã¯ãå ã«é²ãã§Dockerãã«ããè¡ãããããScoutãã¢v1ãšåŒã³ãŸãã ãããŠãããã¯æ§ç¯ãããã§ãããã ãããŠãããã以åã«å®è¡ããã®ã§ããã®ã»ãšãã©ããã£ãã·ã¥ãããã®ã¯ããªãéãã§ãã ãããŠãDocker Scoutã®ã¯ã€ãã¯ãã¥ãŒãããã«å®è¡ã§ããŸãã ã ãããããã§ãã³ããããããã ã ãããŠãã¹ã«ãŠãã®ãã¢ãš1ããã£ãŠã¿ãŸãããã ã§ããããåã³ããã®SBOMãèŠãŠãããã«ã¯ã©ã®ãããªåé¡ãååšããã®ããèããŠããŸãã ããŠãããã§CLIãæäœããŠããŸãããGUIããã·ã¥ããŒãã§ããããããã«è¡ãããšãã§ããŸãã ããããScoutãèªèããŠããããšã®1ã€ã¯ãã³ã³ããã€ã¡ãŒãžãè€éã§ãããšããããšã§ãã ãããã¯å±€ã§ã§ããŠããŸãã ã§ã¯ãç§ãããã«è匱æ§ãæã£ãŠãããšããããã¯ç§ãåãç¶ãã ãã®ããæ¥ãŠããã®ã§ãããã? ç§ã¯æªãããŒã¹ããå§ããŸããã? ãããšããç§ãæ§ç¯ããã€ã¡ãŒãžãéããŠãããã®åé¡ãå°å ¥ããŸããã? ãããã£ãŠããã®å ŽåãããŒã¹ã€ã¡ãŒãžãããã§ããªãã®æ°ã®è匱æ§ãå°å ¥ããŠããããšãããããŸãã ããããããŒã¹ã€ã¡ãŒãžãããŒã 16-ã¢ã«ãã€ã³ããããŒã 18ã¢ã«ãã€ã³ã«å€æŽãããšãã¯ãªãã£ã«ã«ã 1 ãã 0 ã«äžãããé«ã¯ 4 ãã 0ã«ãããã£ã¢ã 㯠9 ãã 0 ã«ãäœã€ã¡ãŒãžã 0 ã«ãªããŸãã ã ãããããã¯ããªãè¯ãç¶æ ã§ãã ã§ã¯ããã®å€æŽãè¡ããŸãããã 倧äžå€«ã§ãã
ããã§ v2 ããã«ãããŸãããã ãããŠä»ãç§ãåãããšãã§ããããã«ãªã£ãã Scoutã®ã¯ã€ãã¯ãã¥ãŒããã£ãŠã¿ãŸããã v2ã ãã®å ŽåãSBOMãåæãããã®ãåŸ ã€å¿ èŠããããŸãã ãããŠãããã«ã¯æ°ç§ãããå ŽåããããŸãã ååãã®ãã¢ãè¡ã£ããšãã18ã§ã¯ãªãããŒã20ã«è¡ã£ããšæããŸããã€ãŸããã€ã³ããã¯ã¹äœæãè¡ã£ãŠããããšãããããŸãã ä»ã¯ãããæã«å ¥ããŸããã ãããŠãŸããç§ãã¡ã¯ããã§ããªãåªããŠããããšãããããŸãã ããããããã«ã¯ãŸã ããã€ãã®è匱æ§ãããããšãããããŸãã ããŒã¹ã€ã¡ãŒãžããã¯ååŸã§ããŸããã§ããã ãªãã»ã©ãããã¯çŽ æŽãããã§ããã ã ãããç§ã¯ããã§äœãä»ã®ããšãããŸããã ãããŠãCVEãèŠãããšãã§ããŸãã ã€ãŸããDocker Scoutã¯CVEã§ãã ãããŠãããã¯ç§ã«ããªãã®åºåãäžããã§ãããã ãããŠãç§ã¯Expressã䜿çšããŠããããšãããããŸãã ãããŠãç§ã¯å€ãããŒãžã§ã³ã®Expressã䜿çšããŠããŸãã ãŸããããã€ãã®ç°ãªãè匱æ§ããããŸãã ãããŠããªã³ã¯ãã¯ãªãã¯ããŠããã«ã€ããŠãã£ãšåŠã¶ããšãã§ãããšããæããŠãããŸãã CVSSã¹ã³ã¢ãªã©ããããŸãã ããããä¿®æ£ããŒãžã§ã³ãæããŠãããŸãã ãããã£ãŠããã®å Žåã 4173 ããã¯ä¿®æ£ãããŸãããä»ã®2ã€ã¯ä¿®æ£ãããŸããã ããã§ã¯ãããã§ããŒãžã§ã³çªå·ãæã倧ãããã®ã«è¡ããŸãããã ã ããç§ã¯ç§ã®ããã±ãŒãžJSONãæã«å ¥ããŸããã expressããã®æ°ããããŒãžã§ã³ã«å€æŽããŸãã
ãããŠä»ãç§ã®V3ããã£ãŠã¿ãŸãããã ãããŠãŸããã¹ã«ãŠãã¯ç§ãå©ããŠãããŸããããããŠç§ãè¯ãã€ã¡ãŒãžãäœã£ãŠãããã©ãããçè§£ããã®ãå©ããŠãããŸããã? ãã®ãã¢ã§ã¯è匱æ§ã«çŠç¹ãåœãŠãŠããŸãããããã·ã¥ããŒãã§ç¢ºèªããããã«ãä»ã«ã掻çšã§ããããªã·ãŒããããŸãã ãŸããCLIãããŸã䜿ãããªããªã人ã®ããã«ãGUIãã¢ããã°ã¬ãŒãããããšãã§ããŸãã ãããŠãç§ã¯ç»åãèŠãããšãã§ããŸãã ãããŠãå ã»ã©èŠãV2 ãèŠãŠã¿ãŸãããã ããã§ããåºæ¬ã€ã¡ãŒãžããã®è匱æ§ã¯ãªãããšãããããŸãã ã§ããç§ãªãã®ã€ã¡ãŒãžã§çµæ§ç޹ä»ããŠã¿ãŸããã ãããŠãã¬ã€ã€ãŒããšã«é²ãããå Žåã¯ããããå¯èœã§ãã ãŸãããããã®è匱æ§ãå«ãŸããŠãã 4171 衚çŸãããã®ãšåãæ å ±ãšãä¿®æ£ããŒãžã§ã³ãªã©ãèŠãããšãã§ããŸãã ãããã£ãŠãç¹°ãè¿ãã«ãªããŸãããããããã¹ãŠã¯GUIãããå©çšã§ããŸãã
Â
ç·éç·š (35:19)
ããŠãããã§ç· ãããããšããŠãçµå±ã®ãšããããœãããŠã§ã¢ãã©ã®ããã«æäŸãããã«ã€ããŠã§ãã ã©ãããã°å¹æçã«æäŸã§ããã®ã? ã©ãããã°å¹ççã«é ä¿¡ã§ããã®ã? ã©ãããã°è¿ éãã€å®å šã«é éã§ããã®ã§ãããã? ãã¡ãããæµè¡èªã¯ãããããããŸãã ã§ããããã·ããã¬ãããšããèãæ¹ã¯ããéçºè ã®çããããã£ãšããã¹ãããšã¯äœãããããšèšãããã®ãã®ã§ã¯ãããŸããã ããã¯ããããããªãããã§ã«äžè©±ãããªããã°ãªããªãããšããããŠããªããèããã¹ãããšã¯äœã§ãã? ãããŠããããå·Šã«åãããŠãéçºããŠããå Žæããã§ã«æéãè²»ãããŠããå Žæã«è¿ã¥ããã«ã¯ã©ãããã°ããã§ããããã ããããã°ããããŒç¶æ ãä¿ã€ããšãã§ããŸãããããã¯éåžžãèªåèªèº«ã®ããšãèšã£ãŠããã®ã§ããããããç§ãæã幞ããªãšããã§ãã ã§ã¯ãã©ãããã°ããã®ã§ãããã?
仿¥ã¯ãç¹ã«éçºç°å¢ãçµ±åãã¹ããã»ãã¥ãªãã£ããŒã«ã®3ã€ã®å ·äœçãªæ©äŒã«ã€ããŠè©±ããŸããã ããããç¹°ãè¿ãã«ãªããŸãããã³ã³ããã«ã€ããŠèãå§ãããšããã®ããã»ã¹ãç°¡çŽ åããã®ã«åœ¹ç«ã€ããŸããŸãªæ¹æ³ããããŸãããªããªããäžåºŠæ§ç¯ããã°ãã©ãã§ãå®è¡ã§ããã³ã³ããã䜿çšããŠéçºã§ããããã§ãã æ¬åœã«è¯ãæ©äŒããããŸãã
ããã§ã¯ãããããšãããããŸããã ãèŠèŽããã ãããããšãããããŸãã ãããèŠãŠããã ãããããšãããããŸãã äœããåŠãã ããšãé¡ã£ãŠããŸãã ãäžæãªç¹ãããããŸãããããæ°è»œã«ãåãåãããã ããã ç¹°ãè¿ãã«ãªããŸãããç§ã®ååã¯ãã€ã±ã«ã»ã¢ãŒãŠã£ã³ã§ãã ç§ã¯ããDockerã®DevRelããŒã ã®ã¡ã³ããŒã§ãã ãããŠãçãããšäžç·ã«ããã«ããããããšãå¬ããæããŸãã çæ§ãããããšãããããŸããã
Â
ããã«è©³ãã
- ããã«ãŒã¯åããŠã§ãã? å§ããŸãããã
- 泚ç®ã®ã¬ã€ãã§Docker補åãæ·±ãæãäžããŸãã
- Docker Newsletter ã賌èªããŠãã ããã
- Docker ãã¹ã¯ãããã®ææ°ãªãªãŒã¹ãå ¥æããŸãã
- 質åããããŸãã? Docker ã³ãã¥ããã£ããæäŒãããŸãã