
- TOP
- ã¿ã°äžèЧ
- JavaScript
JavaScript
ã€ãã³ã
ãã¬ãžã³
æè¡ããã°
ã¯ããã« ããã«ã¡ã¯ãZOZOTOWNäŒç»éçºéš äŒç»ããã³ããšã³ã2ãããã¯ã®ãã¯ãµã³ã€ã§ããæ®æ®µã¯ZOZOTOWNã«ããCMSããŒã¹ã®LPããŒãžã®ã¡ã³ããã³ã¹ãæ©èœè¿œå ãäŒç»LPããŒãžç°å¢ã®ã¡ã³ããã³ã¹ãæ
åœããŠããŸãã ZOZOTOWNã®è€æ°ã®Webã¢ããªã±ãŒã·ã§ã³éã§ãããã¢ãŒã·ã§ã³çšã©ã³ãã£ã³ã°ããŒãžã³ã³ããŒãã³ããå
±æããããã«ã Lit ããŒã¹ã®Web Componentsãå°å
¥ããŸãããæ¬èšäºã§ã¯ãã®äºäŸã玹ä»ããŸãã ZOZOTOWNã§ã¯å€æ°ã®LPããŒãžãéèšã»æŽæ°ãããŠãããåŸæ¥ã¯iframeã䜿ã£ãåãèŸŒã¿æ¹åŒã§UIãå
±æããŠããŸããããããããã®æ¹åŒã«ã¯ããŸããŸãªèª²é¡ãååšããã¬ã¬ã·ãŒç°å¢ããNext.jsããŒã¹ã®æ°ç°å¢ãžã®ãªãã¬ã€ã¹ãé²ããäžã§ããã¬ãŒã ã¯ãŒã¯ã«äŸåããªãUIå
±æã¢ãŒããã¯ãã£ãå¿
èŠãšãªããŸããã æ¬èšäºã§ã¯ãiframeããŒã¹ã®å
±ææ¹åŒãæ±ããå
·äœçãªèª²é¡ãšãLitããŒã¹ã®Web Componentsãæ¡çšããçç±ãšéžå®ããã»ã¹ã解説ããŸããããã«ããã¬ãŒã ã¯ãŒã¯éäŸåãªã³ã³ããŒãã³ãå
±æåºç€ãèšèšã»å®è£
ããäžã§åŸãçµéšãå
±æããŸãã 察象èªè
ãã«ãWebã¢ããªã±ãŒã·ã§ã³ç°å¢ã§UIå
±æã«èª²é¡ãæããŠããããã³ããšã³ããšã³ãžã㢠iframeã䜿ã£ãUIå
±ææ¹åŒã®ä»£æ¿ææ®µãæ¢ããŠããæ¹ Web Componentsã®å°å
¥ãæ€èšããŠããæ¹ ç®æ¬¡ ã¯ãã㫠察象èªè
ç®æ¬¡ èæ¯ã»èª²é¡ ZOZOTOWNããã³ããšã³ãã®ãã«ãWebã¢ããªã±ãŒã·ã§ã³æ§æ LPã³ã³ããŒãã³ãã®å
±æä»æ§ åŸæ¥ã®iframeããŒã¹å
±ææ¹åŒãšãã®èª²é¡ 1. ã¬ã€ã¢ãŠãå¶åŸ¡ã®ç
©éã 2. UIå¶åŸ¡ã®è€éå 3. SEOã®å¶çŽ ã¢ãããŒãïŒWeb Componentsã®å°å
¥ èŠä»¶æŽç æè¡éžå®ïŒLitåºç€Web Components Litãéžæããçç± npmããã±ãŒãžæ¹åŒãé€å€ããçç± èšèšã»å®è£
å
šäœã¢ãŒããã¯ã㣠1. å©çšåŽã¢ããªã±ãŒã·ã§ã³ã«ããããŒã¿ååŸã»å å·¥ 2. Lit Contextã«ããProps Drilling鲿¢ 3. ScriptããŒãã£ã³ã°ã«ããç¬ç«ããUIæŽæ° 4. Shadow DOMããLight DOMãžã®åãæ¿ã ãã«ãã»é
ä¿¡ å
šäœãã㌠LPã³ã³ããŒãã³ãéçºåŽïŒã³ã³ãã³ãå
±æå°çšãªããžããªïŒ å©çšåŽWebã¢ããªã±ãŒã·ã§ã³ 广 åŠãã ããš ä»åŸã®èª²é¡ ä»åŸã®å±æ ãŸãšã æåŸã« åèè³æ èæ¯ã»èª²é¡ ZOZOTOWNããã³ããšã³ãã®ãã«ãWebã¢ããªã±ãŒã·ã§ã³æ§æ çŸåšãZOZOTOWNã®ããã³ããšã³ãã¯3ã€ã®ãã«ãWebã¢ããªã±ãŒã·ã§ã³ã§éçšãããŠããŸãã ãªããžã㪠説æ äž»ãªåœ¹å² ãªããžããªAïŒã¬ã¬ã·ãŒç°å¢ïŒ çµ±åãªããžã㪠æ¢åã®å
šããŒãžã管ç ãªããžããªBïŒãªãã¬ã€ã¹ç°å¢ïŒ ã³ã¢ã¡ã€ã³ããŒãž ããŒã ãã«ãŒããæ€çŽ¢çµæãåå詳现ããŒãžãªã© ãªããžããªCïŒãªãã¬ã€ã¹ç°å¢ïŒ äŒç»ããŒãž ãã«ã¹ã¯ã©ããLPãCMS掻çšLP ã¬ã¬ã·ãŒç°å¢ã§ã¯è€æ°ã®ãµãŒãã¹ãåäžãªããžããªã§ç®¡çãããŠãããããå
±éUIå
±æã«é¢ãã課é¡ã¯ãããŸããã§ããããããããªãã¬ã€ã¹åŸã«ãã«ãWebã¢ããªã±ãŒã·ã§ã³ãå¢ããããšã§ãåŸæ¥ã®æ¹åŒã§ã¯UIãåå©çšã§ããªããªããŸããã LPã³ã³ããŒãã³ãã®å
±æä»æ§ ZOZOTOWNã§ã¯ç¹å®ã®LPã³ã³ããŒãã³ããè€æ°ã®ããŒãžã§è¡šç€ºããŠããŸããäžéšã®ããŒãžã§ã¯ä»¥äžã®2ã€ã®åœ¢æ
ã§è¡šç€ºãããŸãã åç¬ã©ã³ãã£ã³ã°ããŒãž â header/footerãå«ããã«ããŒãž ã¢ãŒãã«è¡šç€º â ç¹å®ããŒãžã®ãããŒã¯ãªãã¯æã«ãheader/footerãªãã§ã³ã³ãã³ãã»ã¯ã·ã§ã³ã®ã¿ãã¢ãŒãã«ã§è¡šç€º ã€ãŸããã»ãŒåäžã®UIã§ãããªãããheader/footerã®æç¡ãSEOã¡ã¿ã¿ã°ãèšæž¬çšãã©ããã³ã°ã¹ã¯ãªããã®æç¡ãªã©ã§å·®ç°ããã仿§ã§ããã åŸæ¥ã®iframeããŒã¹å
±ææ¹åŒãšãã®èª²é¡ ãªãã¬ã€ã¹åŸã¯ä»¥äžã®æ¹åŒã§UIãå
±æããŠããŸããã ç°å¢ éçšæ¹åŒ ãªããžããªAïŒã¬ã¬ã·ãŒïŒ LPããŒãžé
ä¿¡ + iframeçšLPããŒãžïŒheader/footerãªãïŒé
ä¿¡ ãªããžããªBã»CïŒãªãã¬ã€ã¹ïŒ ç¹å®ããŒãžã«ãããŒè¡šç€º â ã¯ãªãã¯æã«ã¢ãŒãã«å
ã§iframeãšããŠãªããžããªAã®LPãåã蟌㿠ãã®iframeæ¹åŒã«ã¯ä»¥äžã®èª²é¡ãååšããŠããŸããã 1. ã¬ã€ã¢ãŠãå¶åŸ¡ã®ç
©éã iframeã¯ç¬ç«ããããã¥ã¡ã³ããèªã¿èŸŒãããããã¬ãŒã ãµã€ãºã®èª¿æŽã䜿çšç®æããšã®é衚瀺é åã®åŠçã¯å¯Ÿå¿ããŠãããã®ã®ãç
©éãªéšåããããŸããã 2. UIå¶åŸ¡ã®è€éå åããªãšãŒã·ã§ã³ã«å¿ããŠé衚瀺ã«ãã¹ãåã³ã³ããŒãã³ãããããã¯ãšãªãã©ã¡ãŒã¿ã postMessage ã§è§£æ±ºã§ãããã®ã®ãã±ãŒã¹ãå¢ããã»ã©è€éåããŸããã 3. SEOã®å¶çŽ æ€çŽ¢ãšã³ãžã³ã¯iframeå
ã®ã³ã³ãã³ãã src åŽã®ææãšããŠèªèãããããSEOäžã®å¶çŽããããŸããã ã¢ãããŒãïŒWeb Componentsã®å°å
¥ èŠä»¶æŽç äžèšã®èª²é¡ã解決ããããã«ã以äžã®4ã€ã®èŠä»¶ãæŽçããŸããã èŠä»¶ 説æ åã¢ããªã®ãããã€ãªãã«UIæŽæ° iframeæ¹åŒã®å©ç¹ã§ãã£ãåãã«ãWebã¢ããªã±ãŒã·ã§ã³ã®ãããã€ãªãã«UI倿Žãåæ ãããããšãç¶æ iframeè±åŽ åã¢ããªã±ãŒã·ã§ã³ã§ãã€ãã£ãã«UIãã¬ã³ããªã³ã° ãã¬ãŒã ã¯ãŒã¯éäŸå ReactãVueãªã©ãã©ã®ãã¬ãŒã ã¯ãŒã¯ã§ã䜿çšå¯èœã§ããã㚠軜éãã³ãã«ãµã€ãº å©çšåŽã«è² æ
ã®ãªãæå°éã®ãµã€ãºãç¶æ æè¡éžå®ïŒLitåºç€Web Components Web Componentsã¯ãã©ãŠã¶ã®ãã€ãã£ãã³ã³ããŒãã³ãã¢ãã«ã§ãããç¹å®ã®ãã¬ãŒã ã¯ãŒã¯ïŒReactãVueãªã©ïŒã«äŸåããããã©ãŠã¶ãçŽæ¥çè§£ããæšæºæè¡ã§ããäž»ã«ä»¥äžã®3ã€ã®äžæ žæè¡ã§æ§æãããŠããŸãã Custom Elements ïŒéçºè
ãç¬èªã®HTMLã¿ã°ãå®çŸ©ã§ãããã¿ã°åã«ã¯ãã€ãã³ïŒ - ïŒãå«ãèŠçŽãããã Shadow DOM ïŒã³ã³ããŒãã³ãã®ã¹ã¿ã€ã«ãšããŒã¯ã¢ãããå€éšããŒãžããéé¢ïŒEncapsulationïŒããã HTML Templates ïŒ <template> ãš <slot> èŠçŽ ã«ãããåå©çšå¯èœãªããŒã¯ã¢ããæ§é ãå®çŸ©ããã ãã®Web Componentsãããå¹ççã«éçºããããã Lit ã©ã€ãã©ãªãæ¡çšããŸããã Litãéžæããçç± éžå®åºæº Litã®ç¹åŸŽ ãã³ãã«ãµã€ãº çŽ5KBïŒminified + compressedïŒã§éåžžã«è»œé ãªã¢ã¯ãã£ããããã㣠Reactive Propertiesã«ããç¶æ
倿޿ã«èªååã¬ã³ããªã³ã° ãã³ãã¬ãŒã Tagged Template LiteralsããŒã¹ã§å¥éã³ã³ãã€ã«äžèŠ ããã©ãŒãã³ã¹ Virtual DOM diffingãªãã«åçéšåã®ã¿ãçŽæ¥æŽæ° çžäºéçšæ§ ãã¹ãŠã®Litã³ã³ããŒãã³ãã¯ãã€ãã£ãWeb Componentã§ãããHTMLã䜿ãããããå Žæã§åäœ npmããã±ãŒãžæ¹åŒãé€å€ããçç± LPããŒãžã¯ããã¹ãæŽæ°ã®é »åºŠãé«ããUIãäžå®æã«å€æŽãããŸããnpmããã±ãŒãžã§éçšãããšã倿Žã®ãã³ã«åç°å¢ã§ããã±ãŒãžæŽæ°ïŒãããã€ãå¿
èŠãšãªããéçšè² è·ã倧ããããé€å€ããŸããã èšèšã»å®è£
å
šäœã¢ãŒããã¯ã㣠ã³ã³ãã³ãå
±æå°çšãªããžããªãæ°ãã«æ§ç¯ãã以äžã®èšèšååãé©çšããŸããã 1. å©çšåŽã¢ããªã±ãŒã·ã§ã³ã«ããããŒã¿ååŸã»å å·¥ ZOZOTOWNã«ã¯ããŒãžã¢ã¯ã»ã¹æã«åæèšå®ãã¹ãå€ãAPIãã§ããã®ããã®ããžãã¯ãåã¢ããªã±ãŒã·ã§ã³ã«ååšããŸãããããã®ããžãã¯ãã³ã³ãã³ãå
±æå°çšãªããžããªã«ãå«ãããšç®¡çãäºéã«ãªãã¡ã³ããã³ã¹è² è·ã倧ãããªãããããã®ãªããžããªã§ã¯ UIã¬ã³ããªã³ã°ã®ã¿ ã責任ç¯å²ãšããŸããã å©çšåŽã®èŠªã¢ããªã±ãŒã·ã§ã³ã§ããŒã¿ãååŸã»å å·¥ããŠpropsã§æž¡ã圢åŒãæ¡çšããŠããŸãã 2. Lit Contextã«ããProps Drilling鲿¢ UIå
éšã§å¿
é çã«å
±æãã¹ãæ
å ±ïŒããã€ã¹çš®å¥ãæ§å¥ãªã©ïŒã¯ã Lit Context ãæŽ»çšããã«ã¹ã¿ã èŠçŽ ãèšããŠåŠçããŸããã Lit Contextã¯Reactã®Context APIãšåæ§ã®æŠå¿µã§ãProps Drillingãªãã«äžäœããäžäœã³ã³ããŒãã³ããžããŒã¿ãæž¡ãããšãã§ããŸãã 3. ScriptããŒãã£ã³ã°ã«ããç¬ç«ããUIæŽæ° åWebã¢ããªã±ãŒã·ã§ã³ã§å¥éãããã€ãªãã«UI倿Žãå¯èœãªããã ScriptããŒãã£ã³ã° ãæ¡çšããŸãããåã¢ããªã±ãŒã·ã§ã³ã§ã¯ <script> ã¿ã°ã§å¿
èŠãªã³ã³ããŒãã³ãã®JSãã¡ã€ã«ãèªã¿èŸŒã¿ãã¯ã©ã€ã¢ã³ãã§Web Componentãã¬ã³ããªã³ã°ãããŸãã 4. Shadow DOMããLight DOMãžã®åãæ¿ã Web Componentsã®ä»£è¡šçãªç¹åŸŽã§ããShadow DOMã¯ãã¹ã¿ã€ã«ãå®å
šã«éé¢ããã³ã³ããŒãã³ãå
éšã®CSSãå€éšã«åœ±é¿ãããå€éšCSSãå
éšã«åœ±é¿ããŸããã ããããä»åã®ã±ãŒã¹ã§ã¯ãShadow DOMã§éé¢ããŠç®¡çããUIã§ã¯ãªããå©çšåŽããèªç±ã«ã¹ã¿ã€ã«ã ãã§ãªãèŠçŽ ã«ãã¢ã¯ã»ã¹ã§ããããšãéèŠã§ããããã®ãããShadow DOMã®ä»£ããã« Light DOM ãæ¡çšããŸããã ãã«ãã»é
ä¿¡ Viteã䜿çšããŠLitåºç€Web Componentããã«ãããS3ã«ãããã€ããŠCDNçµç±ã§é
ä¿¡ããŸãã å
šäœãã㌠LPã³ã³ããŒãã³ãéçºåŽïŒã³ã³ãã³ãå
±æå°çšãªããžããªïŒ Lit + Vite dev serverã§ããŒã«ã«éçº åãã¹ãç°å¢ã«ãŠHTML + JSã§åäœç¢ºèª åé¡ãªããã°åç°å¢ïŒS3ïŒã«ãããã€ããŠç¢ºèª å©çšåŽWebã¢ããªã±ãŒã·ã§ã³ SSRæã«CMS APIã§ããŒã¿ååŸïŒã¹ã±ãžã¥ãŒã«ã«å¿ããŠå€æŽãããããã¹ããªã©ã¯CMSã§ç®¡çïŒ ã¯ã©ã€ã¢ã³ãã§ <script> ã¿ã°ã«ããJSãã¡ã€ã«ããŒãã£ã³ã°ãWeb Componentã®ã¬ã³ããªã³ã° ã«ã¹ã¿ã ã¿ã°ãžCMS API仿§ã«åãããããŒã¿ãpropsã§æž¡ã 广 ãã®ä»çµã¿ã®å°å
¥ã«ããã以äžã®å¹æãåŸãããŸããã ãã«ãWebã¢ããªã±ãŒã·ã§ã³éã§iframeã䜿ããã«UIã³ã³ããŒãã³ããå
±æã§ããããã«ãªã£ã åã¢ããªã±ãŒã·ã§ã³åŽã®ãªãªãŒã¹ïŒãããã€ïŒãªãã§ã³ã³ãã³ãæŽæ°ãå¯èœã«ãªã£ã å©çšåŽããã¹ã¿ã€ã«ã ãã§ãªãèŠçŽ ãžã®ã¢ã¯ã»ã¹ãèªç±ã«å¯èœã«ãªã£ãïŒLight DOMæ¡çšïŒ CMS飿ºã«ããããšã³ãžãã¢ä»¥å€ã§ãçŽæ¥ã¹ã±ãžã¥ãŒã«ããŒã¹ã®ããŒã¿ç®¡çãå¯èœã« åŠãã ããš LitãéããŠéçºããäžã§ãWeb Componentsã®ããŒã¹ãšãªããŠã§ãæšæºæè¡ãããæ·±ãçè§£ããé¢å¿ãæã€ããã«ãªããŸããããŸããCSS倿°ãªã©ã掻çšããŠJavaScriptãªãã«CSSã ãã§ã¹ã¿ã€ã«ãå¶åŸ¡ããæ¹æ³ãç¥ãããšãã§ããŸããã ä»åŸã®èª²é¡ Web Componentså
¬åŒã®SSR察å¿ã¯ãŸã éå®çã§ãããLit SSRãªã©è€æ°ã®è§£æ±ºçãã©ã€ãã©ãªãã³ãã¥ããã£ã§å
±æãããŠããŸããçŸåšããã®ãããžã§ã¯ãã§ç®¡çããŠããLPããŒãžã®ä»æ§ã§ã¯Web Componentã®SSRã¯äžèŠã§ãããå°æ¥ã«åããæºåã¯å¿
èŠã ãšèããŠããŸãã ãŸããçŸåšã®éçšæ¹åŒã§ã¯ãScriptããŒãã£ã³ã°ïŒCMSããŒã¿é£æºãšããæ§é äžããã¹ããéåžžã«éèŠã§ããè£åŒ·ãå¿
èŠã§ãã ä»åŸã®å±æ ç§»è¡ãã¹ãLPããŒãžã倿°æ®ã£ãŠãããæ®µéçã«ãã€ã°ã¬ãŒã·ã§ã³ãé²ããŠããäºå®ã§ããããå°ããªåäœã®å
±çšã³ã³ããŒãã³ãããã®åºç€ã§ç®¡çã§ããããæ¡åŒµãæ€èšããŠããŸãããŸããå¯èœã§ããã°ããã€ãã£ãã¢ããªã±ãŒã·ã§ã³ã§ã®æŽ»çšãæ€èšããããšèããŠããŸãã ãŸãšã æ¬èšäºã§ã¯ãZOZOTOWNã®ãã«ãWebã¢ããªã±ãŒã·ã§ã³ç°å¢ã«ãããiframeããŒã¹UIå
±ææ¹åŒã®èª²é¡ã解説ããŸããããŸããLitããŒã¹ã®Web ComponentsãæŽ»çšãããã¬ãŒã ã¯ãŒã¯éäŸåã®ã³ã³ãã³ãå
±æåºç€ã®æ§ç¯äºäŸã玹ä»ããŸããã ReactããŒã¹ã§ããã°Reactã§ãUIãå
±æããæ¹æ³ã¯ãããŸããããããä»åŸã©ã®ãã¬ãŒã ã¯ãŒã¯ã§ãåé¡ãªãç§»æ€ã§ããWeb Componentsãéžæããã¡ã€ã³ã¹ã¿ãã¯ãšå
±åããªããéçšããã®ãããã®ã§ã¯ãªãã§ãããããåæ§ã®èª²é¡ããæã¡ã®æ¹ã®åèã«ãªãã°å¹žãã§ãã æåŸã« ZOZOã§ã¯ãäžç·ã«ãµãŒãã¹ãäœãäžããŠãããæ¹ãåéäžã§ãããèå³ã®ããæ¹ã¯ã以äžã®ãªã³ã¯ãããã²ãå¿åãã ããã corp.zozo.com åèè³æ MDN - Web Components Lit å
¬åŒããã¥ã¡ã³ã Lit Context MDN - Using Shadow DOM MDN - iframe Vite - Building for Production
ãã®èšäºã¯ãå䜵åã®æ§ããã°ã«æ²èŒããŠããèšäºïŒååºïŒ2020幎9æ8æ¥ïŒããçŸåšã®ããã°ãžç§»ç®¡ãããã®ã§ããçŸæç¹ã®æ
å ±ã«åããã衚èšããªã³ã¯ã®èª¿æŽãè¡ã£ãŠããŸããããã«ã¡ã¯ããä¹
ãã¶ãã§ãã岡éšå...
ã¯ããã« ããã«ã¡ã¯ïŒ26åãšã³ãžãã¢ã§ã2025幎9æããã¬ãã¬ãžãŒãºã§å
å®è
ã€ã³ã¿ãŒã³ãããŠããè°·å£åæš¹ã§ãïŒ ãã®èšäºãéããŠã å
å®è
ã€ã³ã¿ãŒã³ãšããŠTQCããŒã ã§æŽ»èºããŠãã äžã§ãåãã©ã®ããã«ãšã³ãžãã¢ãšããŠã®èŠç¹ãåºããŠãã£ãã®ããæ¯ãè¿ããŸãã çªç¶ã§ãããçããã¯æ©ããŠããæãæ®æ®µã©ããèŠãŠããŸããïŒ è»¢ã°ãªãããã«å°é¢ãèŠãŠããŸããïŒ ãããšãã誰ããšã¶ã€ãããªãããã«çã£çŽãåãèŠãŠããŸããïŒ åã¯ãæèçã«ç©ºãèŠäžããããã«ããŠããŸãããã€ãŠäžã°ããåããŠããèªåããããã«å°ããªäžçã«éãããã£ãŠãããã«æ°ã¥ããŠããŸã£ãããã§ãã 空ãçºããŠãããšãèªåã®å¯èœæ§ãç¡éã«ãããããªããããªæ°ãããŠããŸãã âŠãšããããªããããªæœè±¡çãªããšãèªã£ãã®ã«ã¯çç±ãåœç¶ãããŸãã ä»åã®ã€ã³ã¿ãŒã³ã§åãæããããŸãã«ãããªèªåã®ææã§ã® ãèŠçãšå¯èœæ§ã®åºããã ããäŒãã§ããã°ãšæããŸãïŒ èªå·±çŽ¹ä» æ¹ããŠèªå·±ç޹ä»ããããŠããã ããŸããè°·å£åæš¹ã§ãããããªæ®éã®ååã§ããã å®ã¯ã¢ã¡ãªã«çãŸãã®ã¢ã¡ãªã«è²ã¡ã§ãïŒ æ¥æ¬ç掻æŽã¯ãçåŠãšå€äŒã¿ã®æ
è¡ãå«ããŠåèš2幎ãããã§ãã 倧åŠã§ã¯ã³ã³ãã¥ãŒã¿ãŒãµã€ãšã³ã¹ãå°æ»ããäž»ã«AIãçµ±èšåŠãåŠãã§ããŸãããåæã«ãæ¥æ¬èªã𿥿¬æåã®ææ¥ãé »ç¹ã«å±¥ä¿®ããŠããŸããããã®çžãããã2024å¹Žã®æ¥ã«ã¯äº¬éœå€§åŠãžçåŠããŠããŸããã ãªãæ¥æ¬ã§å°±è·ïŒãªãã¬ãã¬ãžãŒãºïŒ ãã®äº¬éœã§ã®çåŠããåã«ãšã£ãŠå€§ããªè»¢æç¹ãšãªããŸãããå®éã«æ¥æ¬ã§ç掻ããŠã¿ãäžãèªåã®ã©ã€ãã¹ã¿ã€ã«ã¯æ¥æ¬ã«åã£ãŠãããšç¢ºä¿¡ãã忥åŸã¯ æ¥æ¬ã§ãã£ãªã¢ãç¯ããã ãšèããããã«ãªããŸããã ãã®äžã就掻ãéããŠãã¢ã¡ãªã«ã𿥿¬ã®ãœãããŠã§ã¢ãšã³ãžãã¢æ¥çã®éããçæããããšãçç±ã®äžã€ã§ããçŸåšã®ã¢ã¡ãªã«ã§ã¯ãAIã®å°é ããã£ãŠãæ°åãšã³ãžãã¢ã®æ ãçéã§çž®ãŸããå®éã«åãã¢ã¡ãªã«ã®äŒæ¥ãã颿¥ã®æ¡å
ãããã ãããšã¯äžåºŠããããŸããã§ããã ã¢ã¡ãªã«ã®äŒæ¥ã«ãšã£ãŠã®æ°åã¯ãå°æ¥ãžã®æè³ã§ã¯ãªããåãªãå®äŸ¡ãªåŽååã«éããªãã£ãã®ã§ã¯ãªãããšãåæãªãããããªé¢šã«æããŠããŸããŸãããäžæ¹ã§ãæ¥æ¬ã®äŒæ¥ã«ã¯ããŸã è¥èœã®å¯èœæ§ãä¿¡ããŠãããã³ã·ã£ã«ãè²ãŠãããšããæåãæ®ã£ãŠããããã«èŠããŸããã ãããªäžåå ãã 2024幎11æã®Boston Career Forumã§åºäŒã£ãã®ãã¬ãã¬ãžãŒãºã§ããã 颿¥ã§äžçªå°è±¡ã«æ®ã£ãã®ã¯ãäŒç€ŸåŽããåãã©ãã»ã©ã®äŸ¡å€ãæäŸã§ããããã ãã§ãªãããäŒç€Ÿãåã«ã©ããªçµéšãæäŸã§ãããããçå£ã«èããŠãããããšã§ããäžæ¹çãªæ¡çšã§ã¯ãªãããäºãã®æé·ã暡玢ãããã®å§¿å¢ã«æ¹ããã2025幎5æã«åæ¥ããçŽåŸãå
å®ãããã ã峿¿è«ŸããããŠ9æããå
å®è
ã€ã³ã¿ãŒã³ãšããŠåå ããããšã決ããŸããã ã€ã³ã¿ãŒã³äžã®é
å±ã¯TQCããŒã ïŒãŠãTQCã£ãŠäœïŒ ã€ã³ã¿ãŒã³éå§åã®é¢è«ã§ããããªè³ªåããããŸããã ãå°æ¥æ£ç€Ÿå¡ã«ãªã£ãæã«ãããããªæ¥åïŒã€ãŸããµãŒãã¹éçºïŒããããšããããŠãããªããããªããšãã©ã£ã¡ãçµéšããŠã¿ããïŒã æãã¬è³ªåã«æ°ç§éè¿·ããŸããããä»åã®ã€ã³ã¿ãŒã³ã«ãããåã®ç®æšã¯ãã§ã«æç¢ºã§ããã æ¥æ¬ã§ã®çæŽ»ã«æ
£ãã æ¥æ¬ã®ããžãã¹ã«ã«ãã£ãŒãç¥ã ãšã«ããæ°ããããšãåŠã¶ ãããŠãã¯ããåã¯ããããªããããªããšããéžæããŸãããããããŠé
å±ãããã®ãããã¯ãããžãŒæŠç¥å®€ã®TQCããŒã ã§ããã ã...ã§TQCã£ãŠäœïŒã ãšæããããããããŸãããå°ãªããšãåã¯æããŸãããTQCã¯Total Quality Controlã®ç¥ã§ãéçºãããŠãããµãŒãã¹ãã¢ããªã®å質管çãè¡ã£ãŠãããçŸåšã¯ã»ãã¥ãªãã£ãšè² è·ã»ããã©ãŒãã³ã¹é åã«æ³šåããŠãããŸãããã ãã°ãèŠã€ããã ãã§ãªããéçºå·¥æ°åæžã顧客ã®ä¿¡é Œç²åŸããããŠããžãã¹é¢ã§ã®æå€±åé¿ãªã©ãäŒç€Ÿã圱ããæ¯ããéèŠãªåœ¹å²ãæ
ã£ãŠããŸãã å質åäžãžã®é ã¬ãã¬ãžãŒãºã®å
å®è
ã€ã³ã¿ãŒã³ãšã¯ãã€ã³ã¿ãŒã³ã£ãŠãããããã»ãŒæ£ç€Ÿå¡ã§ããã ãã¡ããæ£åŒãªç«å Žã¯ãã€ã³ã¿ãŒã³ãã§ãããä»»ãããæ¥åã¯åšãã®ãšã³ãžãã¢ãšããŸãå€ãããŸãããTQCããŒã ã®äžå¡ãšããŠãäž»ã«ä»¥äžã®3ã€ã®å®åã«åãçµã¿ãŸããã ãããã¬ãŒã·ã§ã³ãã¹ã æ»æè
ã®èŠç¹ã«ç«ã¡ã瀟å
ãµãŒãã¹ã®è匱æ§ãæ¢ããŸãããå
·äœçã«ã¯ãBurp Suiteã䜿ã£ãŠHTTPãªã¯ãšã¹ããè§£æã»æ¹ããããããPythonãã·ã§ã«ã¹ã¯ãªãããæžããŠãã¹ããèªååãããããŸãããããŸãã§ãåãµãŒãã¹ã®æè¡ã¹ã¿ãã¯ã暪æçã«ç¥ãè¯ãæ©äŒã«ããªããŸããã ãã£ãŠã¿ãŠäžçªé©ããã®ã¯ã倧æäŒæ¥ã®éçºããŒã ãäœã£ããããã¯ãã§ããå®å
šã«è匱æ§ãç¡ããããšã¯ã§ããªããšèšãããšã§ãããã¡ããTQCããŒã ã®å
å®ãããã¹ãé
ç®ã®ããã¥ã¢ã«ããã£ãããããèŠã€ããããé¢ããããŸãããæåã¯ãåå¿è
ã®èªåã§ããããªã«ç°¡åã«èŠã€ããŠããŸããã®ãããšé©ããšåæã«ããã®äœæ¥ã®éèŠæ§ã匷ã宿ããŸããã è² è·è©Šéš è² è·è©Šéšã¯2åãã宿œããŸããã§ãããããã®2åã ãã§ãè²ã
ç¥èã¯åŸãããŸããã 詳ãã㯠åã®äžåžãæžããèšäº ã«å
šãŠãããŸãããæµãããã£ãã説æãããšããã©ãŠã¶æäœã.harãã¡ã€ã«ãšããŠä¿åããJavaScriptã§è©Šéšã·ããªãªãèšè¿°ã§ããè² è·è©ŠéšããŒã«ã§ãã k6 ãèªã¿èŸŒãã圢åŒã«har-to-k6ãšããã©ã€ãã©ãªã§å€æããŠå®è¡ãããšãããã®ã§ããç£èŠã«ã¯GrafanaãPrometheusãAWS CloudWatchãæŽ»çšããããã·ã¥ããŒããèªäœããããã«PromQLããè² è·ãã¹ã±ãŒãªã³ã°ã«ã©ã圱é¿ãããçè§£ããããã«Kubernetesãå°ãåŠç¿ããŸããã ç¹å®ã®è匱æ§ãçªããããã¬ãŒã·ã§ã³ãã¹ããšã¯éããè² è·è©Šéšã¯ãµãŒãã¹å
šäœã俯ç°ããŠæããããšãéèŠã ãšåŠã³ãŸããã èªäœã®Grafanaããã·ã¥ããŒã ã€ã³ãã©æ§ç¯ ããšã«ããæ°ããããšãåŠã¶ããããæªçµéšã ã£ãã¯ã©ãŠãã€ã³ãã©ãTerraformãGitHub ActionsïŒCI/CDïŒãã»ããã§æ±ãã課é¡ãäžåžã«é Œã¿ãŸããã å
·äœçã«ã¯ãGitHub ActionsãšTerraformã飿ºãããŠAWSäžã«ApacheãµãŒããŒãç«ã¡äžããä»»æã®Dockerã³ã³ããã皌åã§ããç°å¢ãæ§ç¯ããŸããããããŠéçšæ§ãèæ
®ããCloudWatch Logsã§ç°¡åã«ãã°ã確èªã§ããä»çµã¿ã䜵ããŠå®è£
ããŸããã ãã®æ§ç¯äœæ¥ã¯ã€ã³ãã©ã®åºç€ãäœç³»çã«åŠã¶è¯ãæ©äŒãšãªã£ãã ãã§ãªããåŸè¿°ããAIãšãŒãžã§ã³ãã®æ€èšŒç°å¢ãšããŠããéèŠãªåœ¹å²ãæããããšã«ãªããŸããã ããããå®è·µïŒãããã¬ãŒã·ã§ã³ãã¹ãèªååãšãŒãžã§ã³ãã®éçº ãããŠãä»åã®ã€ã³ã¿ãŒã³æéã®é倧æã¯ãPythonãšGoogle ADKïŒAgent Development KitïŒãé§äœ¿ããã ãããã¬ãŒã·ã§ã³ãã¹ãèªååãšãŒãžã§ã³ãã®éçº ã§ããïŒ ç°¡åã«ãããšãAIã«ãºããã¬ãŒã·ã§ã³ãã¹ããèªåŸçã«è¡ã£ãŠãããããŒã«ãªã®ã§ãããåã«ããã³ãããæããŠæŽããŠãããã ãã§ã¯ãããŸããããšãŒãžã§ã³ãããã éé²ã«åãã®ã§ã¯ãªããè«ççã«åãããã®èšèšã«ãåãå
¥ããŸããã 倧åŠã§AIãçµ±èšåŠã履修ããŠãããšã¯ãããAIã®æ°åŠçãªçè«ãåºç€çãªã¢ã«ãŽãªãºã ã®åŠç¿ãäžå¿ã ã£ãã®ã§ãLLMããšãŒãžã§ã³ãã®å®è£
ã¯ã åã«ãšã£ãŠå
šãæ°ããææŠã§ããã éçºã«çæããŠçã£å
ã«çŽé¢ããã®ãå®è¡åºç€ã®éžå®ã§ãGoogle Cloudã®å©çšãåæãšãã€ã€ããã€ãã£ããªç®¡çç°å¢ãªãã10åã§ã¿ã€ã ã¢ãŠãããŠããŸãVertex AI Agent Engineãã1æéå¶éã®Cloud Run Serviceã§ã¯é·æéã®ã¹ãã£ã³èŠä»¶ãæºãããªãããšãåãããŸãããæçµçã«ã¯ãæå€§1é±éã®å®è¡ãå¯èœãªCloud Run Jobsãæ¡çšãããšãã倿ãçµãŠããããããšãŒãžã§ã³ãæ¬äœã®éçºãžãšé²ãããšãã§ããŸããã 1. æåäºéšã°ã©ãã§æ§é åãã ãŸãããšãŒãžã§ã³ãã®æèããã»ã¹ãããã¿ã¹ã¯ããšãçºèŠããšãã2çš®é¡ã®ããŒãã§æ§æãããæåäºéšã°ã©ããšããŠå®çŸ©ããŸããã ToolAgentïŒå®è¡åœ¹ïŒ : å²ãæ¯ããããã¿ã¹ã¯ããå®è¡ãããã®åºåçµæããè匱æ§ã®æããããšãªããçºèŠããæœåºããŸãã PlanningAgentïŒèšç»åœ¹ïŒ : åŸããããçºèŠããåæããæ¬¡ã«è¡ãã¹ããã¿ã¹ã¯ããæ°ããçæããŸãã ãã¥ãŒãã¹ã¿ãã¯ã¯å®è¡é åºã管çããããã®äžæçãªãã®ã§ãããã°ã©ãã¯èª¿æ»ã®è«çãã®ãã®ãèç©ããããã«ååšããŸããæšæ§é ã§ã¯ãªãã°ã©ããæ¡çšããããšã§ãè€æ°ã®èª¿æ»çµè·¯ãåãçµè«ã«èŸ¿ãçããéã«æ
å ±ãéçŽããåŸç¶ã¿ã¹ã¯ã®éè€çºçãæããããããã«ãªããŸãããããã«ãããŒããã¿ã¹ã¯ãšçºèŠã«åããäºéšã°ã©ãã®å¶çŽãèšããããšã§ãå®è¡ãšèšç»ãšãã圹å²ãåé¢ããäºå®ã«åºã¥ããªãèšç»ãé²ãã§ããŸããããããæåã®äŸåé¢ä¿ã§çµã¶ããšã§ãã©ã®çºèŠãã©ã®ã¿ã¹ã¯ã«èµ·å ããã®ããšããå æé¢ä¿ãæ£ç¢ºã«èšé²ãã蚺æã®å±¥æŽãé¡ããä»çµã¿ãæŽããŸããã ãã® ãã¿ã¹ã¯ â çºèŠ â ã¿ã¹ã¯ã ãšããååž°çãªãµã€ã¯ã«ãã°ã©ãæ§é ã«èœãšã蟌ãããšã§ãè€éãªæ»æã«ãŒããè«ççã«åãéããŠããä»çµã¿ãæ§ç¯ããŸããã 2. è©äŸ¡é¢æ°ã§æåã ç¡éã«åºããæ¢çŽ¢ã«ãŒããå¶åŸ¡ãããããè©äŸ¡é¢æ°ãå®è£
ããŸããã f(n) = h(n) - g(n) h(n) = ç®æšãšããè匱æ§ã®æ·±å»åºŠ g(n) = (1 - 芪çºèŠã®ã¹ã³ã¢) * 芪ã®çޝç©ã³ã¹ã + åœã¿ã¹ã¯ã®ã³ã¹ã g(n)ã¯ã芪ããŒãã§ãããçºèŠãã®éèŠåºŠãåæ ããŸãã芪ã®éèŠåºŠãäœãã»ã©ã³ã¹ããè·³ãäžããèšèšã«ãªã£ãŠãããèšç®çµæãéŸå€ãäžåã£ãã¿ã¹ã¯ã¯å®è¡äŸ¡å€ãªããšããŠç Žæ£ãããŸãã ããã«ãããéèŠãªã«ãŒãã®ã¿ãå¹çãã蟿ãããšãã§ããŸãã 3. ã³ãŒã«ããã¯é¢æ°ãçšããLLMã®ããŒã¯ã³ç®¡ç ãããã¬ãŒã·ã§ã³ãã¹ãã®å®è¡ã¯æ°æéã«åã¶ããšãæ³å® ããŠãããããæ
å ±ã®åæšéžæãããªããã°äžåã®ã»ãã·ã§ã³ã§æ¶è²»ãããå
¥åããŒã¯ã³æ°ã¯æ°çŸäžèŠæš¡ã«èšãäžããã ã³ã¹ãã®å¢å€§ãã³ã³ããã¹ãã®äžéè¶
éãæãããšã確èªããŸããã ãã®èª²é¡ã解決ããããã«ã Google ADKã®ã³ãŒã«ããã¯é¢æ°ã掻çšããŸããã ã³ãŒã«ããã¯é¢æ°ãšã¯ãLLMã®æšè«ãããŒã«ã®å®è¡ã®ååŸã®ã¿ã€ãã³ã°ã§ããããããæå®ããŠãããç¬èªã®ããã°ã©ã ãèªåçã«å®è¡ãããä»çµã¿ã®ããšã§ãã ãããçšããããšã§ãLLMã«éãæ
å ±ãã¡ã¿ããŒã¿ãããã°ã©ã åŽã§ç·šéã§ããã ãã§ãªããåºåãããæ
å ±ã®æ€èšŒãå å·¥ãå¯èœã«ãªããŸãã ãŸãã¢ãã«ãžãªã¯ãšã¹ããéãçŽåã«ãéå»ã®ã¿ã¹ã¯ã®ã¡ãã»ãŒãžå±¥æŽãå
šãŠåé€ããåŠçãå®è£
ãããšãŒãžã§ã³ããå€éšã®æ
å ±ã«æãããããçŸåšã®äœæ¥ã®ã¿ã«éäžã§ããç°å¢ãäœããŸããã ãŸããããŒã«ã®åŒã³åºãåæ°ãäžéã«éããéã«ã¯ãã¢ãã«ããããŒã«å®çŸ©èªäœãå¥å¥ªããŠåŒ·å¶çã«çµæå ±åãžç§»è¡ãããå¶åŸ¡ãè¡ã£ãŠããŸãã åºååŽã§ã¯ãããŒã«ããè¿ã£ãŠããå®è¡çµæãå€éšã¹ãã¬ãŒãžã«ä¿åããLLMã«å
é ã®2000æåã®ã¿ãæž¡ãããšã§ããŒã¯ã³æ¶è²»ã倧å¹
ã«æå¶ããŸããã ãããŠãäŸãã°äœãããŒã«ã䜿ããã«åçããããšãããããå Žåã«ã¯ã空ã®ãªã¹ãã匷å¶çã«è¿åŽãããŠå®è¡ãæ£åžžã«çµäºãããã¬ãŒãã¬ãŒã«ãèšããŠããŸãã ãããã å
¥åºå管çãããšãŒãžã§ã³ããå®çšçãªã³ã¹ããšç²ŸåºŠã§é·æé皌åãããããã®éµ ãšãªããŸããã ããŒã¯ã³è²»çšã®æ¯èŒ 4. ããã³ããšã³ã ããã³ããšã³ãã¯ãPythonã§webã¢ããªãæ§ç¯ã§ãããã¬ãŒã ã¯ãŒã¯ã§ãã Streamlit ãæ¡çšããã¹ãã£ã³èšå®ç®¡çãé²æç¢ºèªãå¯èœãªç®¡çç»é¢ãæ§ç¯ããŸããã äžèšã§è©±ããã°ã©ããå¯èŠåãããããStreamlitã®Reactã³ã³ããŒãã³ããšããŠD3.jsãš React Flowãçµã¿èŸŒã¿ããšãŒãžã§ã³ãã®æèãåºãã£ãŠããæ§åããªã¢ã«ã¿ã€ã ã§æç»ã§ããããã«ããŸããã 5. åäœç¢ºèª åç« ã§æ§ç¯ããAWSç°å¢ã«ããããšå€æ°ã®è匱æ§ãå«ãŸããã»ãã¥ãªãã£åŠç¿çšã®ãã¢ã¢ããªã§ãã OWASP Juice Shop ããããã€ãããšãŒãžã§ã³ããèµ°ãããŸãããå¯èŠåããã°ã©ããåºãã£ãŠããæ§åãçºããŠããŠã ã€ã³ã¿ãŒã³æéäžã«åãçµãã§ãããã¹ãŠãããã®äžã€ã®å®æãããããžã§ã¯ããžãšç¹ãã£ãŠã㊠ããããéææãæããŸããã çµããã« ã€ã³ã¿ãŒã³éå§æã«æãã3ã€ã®ç®æš ã«ã€ããŠãéæã§ãããæ¯ãè¿ã£ãŠã¿ãŸãã æ¥æ¬ã§ã®ç掻ã«ã¯ããã®å幎ã§ããªãæ
£ããŸããã TQCããŒã ã§ã®æ¥åãéããŠã**æ°ããããšãååã«åŠã³ãŸããã ã§ã¯ãæ¥æ¬ã®ããžãã¹ã«ã«ãã£ãŒã«ã€ããŠã¯âŠïŒ ãŸããäžåžãååãšã®æ¥ãæ¹ã¯åŠã³ãŸããããå®ç§ã«ããªããããšèšããããšåŸ®åŠãããããŸãããã§ããã®ä»£ããã«ã ã¬ãã¬ãžãŒãºã®ãšã³ãžãã¢ã¯çèªç±ã§ãã ãšããããã®äŒç€Ÿãªãã§ã¯ã®æé«ã®æåãèã§æããããšãã§ããŸããã ããä»ã®èšäºã§ãèªãããŠããããšã§ããã ã¬ãã¬ãžãŒãºã¯æ¬äººãæã¿ããããã°ãã©ããŸã§ãæé·ã§ããå Žæã§ãã æ¥æããã¯ãããããæ£ç€Ÿå¡ãšããŠã®ã¹ã¿ãŒãã§ããããã«æé·ãç¶ããã¬ãã¬ãžãŒãºãçãäžããŠããåã®ããããã®æŽ»åã«ããã²æ³šç®ããŠãã ããïŒ ããã§ã¯ãŸããã€ãïŒ We are hiring! ã¬ãã¬ãžãŒãºæ ªåŒäŒç€Ÿã§ã¯äžç·ã«ãµãŒãã¹ãéçºããŠããã仲éãåéäžã§ãã ãããèå³ãæã£ãŠããã ãããªãã以äžã®ãµã€ããããå¿åãã ããã HRMOSæ±äººããŒãž hrmos.co äŒç€Ÿèª¬æè³æ speakerdeck.com
























