èªå·±çŽ¹ä» åããŸããŠïŒ2023幎4æã«æ°åã§å
¥ç€Ÿããäžæååã§ãïŒ å
¥ç€ŸããŠæ©2ã¶æçµã¡ãŸããããæ©ãä»äºãèŠããããã«ãããããã«åããŠãããŸãã ãã®èšäºã§ã¯ããšã³ãžãã¢å°±æŽ»ã®ããšãã ãšãã°ã¢ ã«å
¥ç€ŸããŠã©ãæãããã話ãããŠè¡ãããšæããŸãã ãšã³ãžãã¢ãç®æãããã£ãã ç§ããšã³ãžãã¢ãç®æãããã£ããã¯ãå°åŠæ ¡ããã®å¹ŒéŠŽæã§ãã 圌ãšã¯å€§åŠçã«ãªã£ãŠãæ¯å¹ŽäŒããããªä»²ã§ããããã ããªã話ã§çãäžãã£ãŠããŸããããããã倧åŠ3幎çã«ãªããšæ¥ã«æèãé«ããªã£ãŠãããå¥äººã®ããã§ããã話ãèããšãšã³ãžãã¢ãç®æãããã«ãªã£ãŠããèãæ¹ã»è¡ååãæèããŠå€ããŠãã£ããšã®ããšã å°æ¥ã®çæ³çãªãã£ãªã¢ãæ³åããããããéç®ããŠä»äœããã¹ããèãå®è¡ããããããªåœŒã®è¡åã»å§¿å¢ã«æéãåãã圌ã®ããã«èªåã®èããæã£ã人éã«ãªããããšæããšã³ãžãã¢ãšããè·æ¥ã«èå³ãæã¡å§ããŸããã ããããããšããããå¢ãã«ä»»ã㊠Python ã®å
¥éæžãè²·ã£ãŠããã°ã©ãã³ã°ã®å匷ãå§ããŸãããæå€ãšæ°ããããšããã£ãŠã¿ãã®ã¯æ¥œããã ç«¶æããã°ã©ãã³ã° ã§ ã¢ã«ãŽãªãºã ã®å匷ãããããã«ãªããŸããã åŠéšæä»£ã¯ããã°ã©ãã³ã°ã®ææ¥ããããæ
å ±ç³»ã®ç¥èã«è§Šããæ©äŒããããŸããããåœæã¯èŠææèãæã£ãŠããããŸããèªåããšã³ãžãã¢ãå¿ããšã¯å€¢ã«ãæããŸããã§ããã ãšã³ãžãã¢ã«ãªãããã«ãã£ãã㚠倧åŠé¢ã«é²åŠããã¿ã€ãã³ã°ã§å°±æŽ»ãã¹ã¿ãŒãããŸããããITæ¥çã»ãšã³ãžãã¢çš®é¡ãªã©ã®ç¥èãçç¡ã ã£ãããšãããã©ããªãšã³ãžãã¢ã«ãªããããèãããšããããã¹ã¿ãŒãããŸããã 詊è¡é¯èª€ ãŸã㯠Python ããã£ãŠããããšãããããŒã¿åšãã®æè¡ãåŠã³ãŸããããéäžããã³ããããã¯ãšã³ãã®æè¡ãåŠã³ãçŸç¶ã®ã¹ãã«ã®ã¿ã§èªèº«ã®é©æ£ã倿ããªãããå¿ãããŸããã ãã®æç¹ã§ã¯ç¢ºä¿¡ã¯æãŠãªãã£ããã®ã®ãããŒã¿åšãã®æè¡ã«èå³ãæ¹§ããããŒã¿ãµã€ãšã³ãã£ã¹ããç®æãããã«ãªããŸããã倧åŠé¢ã®å°æ»ã¯é»åå·¥åŠãšãããœãããŠã§ã¢ãšçéã®ãã®ã§ããããæå°å¡ã®æ¹ãšçžè«ããŠ æ©æ¢°åŠç¿ ãåãå
¥ããç ç©¶ãã§ããããšã«ãªãå¬ããã£ãæãåºããããŸãã ããããã¯ã çµ±èšåŠ ã»ããŒã¿åæãã¯ãããšããSIGNATEãšããããŒã¿åæã³ã³ããªã©ã§ æ©æ¢°åŠç¿ ã¢ãã«ã®å匷ã«åãçµã¿ãŸããã æ¹åæ§ã®æ±ºå® ããŒã¿ãµã€ãšã³ã¹ãåŠãã§ããã«ã€ãããŒã¿ãçšæãããšãããé£ããããšãç¥ãããã®æ³¥èãäœæ¥ãæ
åœããããŒã¿ãšã³ãžãã¢ãšããè·çš®ãããããšãèªèããŸããã 確ãã«å人ã¬ãã«ã§æ±ããããªããŒã¿ã¯ç¶ºéºãªãã®ãå€ããæŽåœ¢ãããšã䜿ããããšãå€ãã£ãã®ã§æ°ã«ããŠããŸããã§ããããäŒæ¥ãæ±ããã㪠ããã°ããŒã¿ ã¯æ±ãã圢ã«ããã«ã¯å€ãã®èŠåŽã䌎ãã ãããšæ³åã§ããŸããã ããã§ãããžãã¹ã®äžçã§ã©ã®ãããªããŒã¿ãæ±ãããã©ããªèŠåŽãçºçããã®ãç¥ããããšæãã 修士 äžå¹Žã®12æããæ±äº¬ã®ãšããäŒæ¥ã§ããŒã¿ãµã€ãšã³ãã£ã¹ããšã㊠ã€ã³ã¿ãŒã³ ãå§ããŸããã ã€ã³ã¿ãŒã³ çµéš ã€ã³ã¿ãŒã³ ã§ã¯ä»¥äžã®ããã«å¹
åºãæè¡ãçµéšãããŠããã ããŸããã ããŒã¿åæåºç€ã®éçºã»éçš BIããŒã«ã®æŽåã»ããžãã¹ãµã€ããžã®å±é èªç¶èšèªåŠç NLP ã¢ãã«ã®PoCã»ãããã¯ãå¿çš MLOps ããã³ãããšã³ãžãã¢ãªã³ã° ãã®äžã§ããç§ãç¹ã«èå³ãæã£ãã®ã¯ããŒã¿åæåºç€ã®éçºæ¥åã§ããããšããã®ããããŒã¿ã掻çšãããã«ãããŒã¿ã掻çšã§ããç°å¢ããªãããšã«ã¯äœãå§ãŸããªãã®ã§ãéåžžã«éèŠãªé åã ãšæããããã§ãã ãã®ãããªåºç€äœãã«æºããã瀟å
ã®é¢ä¿è
ã»ããžãã¹ã«è²¢ç®ããŠãããããšæããããŒã¿ãšã³ãžãã¢ã«ãªãããšã軞ã«å°±è·æŽ»åã«èšã¿ãŸããã ããŒããã©ãªãª ã®äœæ å°±è·æŽ»åã«æãã«ããã£ãŠãèªåã®ããããããšã»æè¡ã¹ã¿ãã¯ã»èª²é¡è§£æ±ºèœåãªã©ãäŒããããã« ããŒããã©ãªãª ã®äœæãè¡ããŸããã ç§ã¯åœæããããµã«éšã«æå±ããŠãããæãéšã®ã³ãã¥ãã±ãŒã·ã§ã³ã«ããã課é¡ã解決ããããã«éšæŽ»ä»²éãšååããLINEbotãäœæããŸããããŠãŒã¶ãŒã®èŠæ±ãæºããããšãæåªå
ã«èããã§ããã ããã©ãããªèŠç¹ã§æè¡éžå®ãè¡ã£ãããç§ã忥ããåŸã®ããšãèŠæ®ããéçšããããæ§æã«ãããªã©ã®å·¥å€«ãåãããŸããã ãã®éçºçµéšã¯ãããŒã¿ãšã³ãžãã¢ãšããŠã®æè¡ã䌞ã°ããšãããããããšã³ãžãã¢ãšããŠèª²é¡ã解決ããéã®æèã»åãçµã¿æ¹ãæ¹ããŠèããè¯ãæ©äŒãšãªããŸããã å°±è·æŽ»åãå
¥ç€Ÿ 修士 äžå¹Žã®1æãããããæ¬æ Œçã«å°±è·æŽ»åãã¹ã¿ãŒãããŸããã ãã¡ã€ã³ ã«ãã ããã¯ãããŸããã§ããããæããæã奜ãã ã£ãã®ã§ãã§ããã°ã¢ãã¬ã«ç³»ã®ããŒã¿ãæ±ããäŒæ¥ã§åããããšãã顿ããããŸãããããããã¢ãã¬ã«ç³»ã®äºæ¥äŒç€Ÿã§ãšã³ãžãã¢ãåéããŠãããšããã¯ããããæ¯æ°ãå°ãªãã®ã§ãæ¢ãã ãã§ãäžèŠåŽã§ããã ãããªäžãèªåã®å¥œããªã€ã³ããŒãç³»ã®ãã©ã³ããæ±ãã€ã€ãšã³ãžãã¢ãåéããŠãã ãšãã°ã¢ ãèŠã€ããŸããã ãšãã°ã¢ ã®ããšã調ã¹ãŠãããã¡ã«ãããããããªãïŒããšæãããã«å¿åããŸããã äžæ¬¡é¢æ¥ããæ©éããŒã¿ãšã³ãžãã¢ã»ãããŒãžã£ãŒã®æ¹ãšã話ãããããšãã§ããèªåã®ããããããšã ãšãã°ã¢ ã®ç®æããŠãããšãããæ©ãæ®µéã§æŠãåãããããšãã§ããŸãããå人çãªéæãšããŠããã©ã³ãã®æ
å ±ãéããŠææ°ã®ãã¡ãã·ã§ã³ååãç¥ãããããªãã©ãããã©ãŒã ãäœããããšæã£ãŠããããã®ãããªèãã«å
±æããŠãã ãããçŸå Žã®ãšã³ãžãã¢ã®æ¹ãšææ°æåããããšãèŠããŠããŸãã ãã®æç¹ã§ããçžããã£ãã絶察㫠ãšãã°ã¢ ã§åããããšæã£ãŠããã®ã§ãç¶ãäºæ¬¡é¢æ¥ã»æçµé¢æ¥ã§ã¯ä»ã®ããŒã ã®æ¥åãã瀟é·ã®ç®æããŠãããšãããææ¡ããããšãäž»çŒã«ãããŠé¢æ¥ã«èšã¿ãŸããã 颿¥ãæ
åœããŠããã ããæ¹ã
ã¯å
šå¡åªãããçŽ ã®èªåãåãå
¥ããŠããã£ãããšãå°è±¡çã§ãããå
å®åŸã人äºã®æ¹ãšäœåãé¢è«ããæ©äŒãèšããŠããã ããäžå®èŠçŽ ãå
šããªãç¶æ
ã§å
¥ç€Ÿããããšãã§ããŸããã å
¥ç€ŸããŠ2ã¶æçµã¡æããããš å
¥ç€ŸåŸãããŒã¿ã» æ©æ¢°åŠç¿ ã»æ€çŽ¢ã®åºç€éçºã»éçšãè¡ãããŒã¿ã㯠ãã ãžãŒ ã°ã«ãŒãã«é
å±ãããŸãããå
·äœçãªæ¥åãšããŠã¯ãããŒã¿ãšã³ãžãã¢ãšããŠããŒã¿åæåºç€ã®éçºã»éçšãæ
åœããä»éšçœ²ããã®ããŒãºã«å¿ããããæ¥ã
ããŒã¿åšãã®æŽåãè¡ããŸãã å
¥ç€ŸããŠäžã¶æãããã¯åèªã¬ãã«ã§ããããªãããšãå€ãããããããããã¯ãŸãŒã³ã«å
¥ã£ãŠããŸãããç¹ã«ãçŸç¶ææ¡ããäžã§ããã¥ã¡ã³ãçãå®å
šã«æŽã£ãŠããèš³ã§ã¯ãªãã®ã§ãçŸå Žã®ãšã³ãžãã¢ãåæãšããŠåããŠããæè¡ã»ç¥èããã£ããã¢ããããã®ã«èŠåŽããŸããã ããããå°ã£ãŠãããšãã¯ãäžäººã§ããŒã¿ãšã³ãžãã¢ãåããŠããã¡ã³ã¿ãŒã®æ¹ãã ãšãã°ã¢ ã§ã®ãšã³ãžãã¢æŽãé·ããéçºèæ¯ãçç¥ããŠãããããŒãžã£ãŒã®æ¹ã芪身ã«çžè«ã«ä¹ã£ãŠãã ããã®ã§ãæ»ããªãæ¥åããããšãã§ããŸããã äºã¶æçµã£ãä»ããŸã åšãã®æ¹ã
ã®æå©ããªãã§ã¯ã¿ã¹ã¯ãå®éã§ããªãã®ã§ãæ©ãããŒã ã®æ¹ã
ãäŒç€Ÿã«è²¢ç®ã§ãããããªäººæã«ãªãã¹ããå€ãã®çµéšãç©ãã§ãããããšæã£ãŠããŸãã ä»åŸã®æ±è² ãŸãã¯ãäžäººã§æ»ããªãæ¥åãéè¡ã§ããããã«ãªãããšãç®æšã«ããŠããŸãã 倧ããªç®æšãšããŠã¯ãããŒã¿ããªãã³ãªæææ±ºå®ãã§ããç°å¢ãããã«æŽããããŒã¿ã® æ°äž»å ãç®æããŠãããããšèããŠããŸãã å
¥ç€ŸåŒã§ç€Ÿé·ããæ¿å±ã®ãèšèãããã ãããã®äžã§ããã³ã³ãã©ãŒããŸãŒã³ã«éããªãããšããèšèãèžã«åºãããŸããããã®èšèãä¿¡æ¡ã«ãæ¥ã
æ¥åã«åãçµãã§ããããã§ãã æåŸã« ãã®èšäºãèŠãŠããšã³ãžãã¢å°±æŽ»ã«åœ¹ç«ãŠãŠãã ããæ¹ãããã£ãããã°å¹žãã§ãã ããŒã¿ãšã³ãžãã¢ã¯å°å³ãªã€ã¡ãŒãžãæãããæ¹ãå€ããšæããŸããããã¡ãã·ã§ã³ããŒã¿ãæ±ããåŒç€Ÿã¯ãæå¥œãã«ãšã£ãŠã¯æ¥œåã®ãããªç°å¢ã ãšæããŸãã ãšã¯èšã£ãŠããåŒç€Ÿã¯ãã¡ãã·ã§ã³ã«ãããŸã§èå³ãããããã§ã¯ãªããšã³ãžãã¢ãå€ãã§ãããã¡ãã·ã§ã³ã«èå³ããªããã©ããŒã¿ãšã³ãžãã¢ãå¿ãæ¹ã«ãšã£ãŠã¯ãåæåºç€ã®æ¡å€§ãã§ãŒãºãçµéšã§ãããšããç¹ã§ãšãŠãé
åçãªç°å¢ã ãšæããŸãïŒ ãã£ãã°ãããªè©±ã«ãªã£ãŠããŸããŸããããæåŸãŸã§ãèªã¿ããã ãããããšãããããŸããïŒ
ããã«ã¡ã¯ããµãŒãã¹ãšã³ãžãã¢ãªã³ã°æ¬éšã®å¯ºç°ãšæ©éã§ãã RubyKaigi 2023ã«enigmoãã2åãçŸå°ã®åå ãããŸããã ä»å¹Žã®RubyKaigi 2023ã¯2023幎5æ11æ¥ã5æ13æ¥ã«é·éç æŸæ¬åž ã® ãŸã€ããšåžæ°èžè¡é€š ã§éå¬ãããŸããã å»å¹Žãšå€§ããéããšããã¯ãå
¬åŒã㌠ãã£ãŒ ãã¹ãã³ãµãŒäŒæ¥ã«ããããªã³ã¯ã¢ããã®äŒç»ããã£ããšããã§ãã å»å¹Žããå€ãã® Rubyist ãšã®äº€æµãã§ããããã«ãªããŸããïŒ æ¬ããã°ã¯ãåç·šãšåŸç·šã«åããŠãå±ãããŸãã 1æ¥ç® ä»å¹Žã¯å€ã« Official Partyã Hotel Buena Vista ã§éå¬ãããŸããã ããããã®ããªã³ã¯ãããŒããçšæãããŠãããç«é£åœ¢åŒã§ãããªãããèªç±ã«åå è
ãšäº€æµããããšãã§ããŸããã åå è
ã®äžã«ã¯ç¥ãåãã®ç¥ãåãã«åºäŒãããããŠããšã³ãžãã¢ã®èŒªã¯ã€ãªãã£ãŠããããšã宿ããããšãã§ããŸããã Official PartyåŸã«ã¯ãFindyããã«ããããªã³ã¯ã¢ããã®äŒç»ããããŸããã ããã§ã¯ãå»å¹ŽRubyKaigiã§ç¥ãåã£ãæ¹éãšåéããããšãã§ããæ¥œããæéãéããããšãã§ããŸããã ãŸãããåºã ãã©ã€ãã©ã¯ãŒ ããããã食ã£ãŠãã£ãŠãšãŠãããããã§ããïŒ 2æ¥ç® 2æ¥ç®ã«ã¯ã¹ã¿ã³ãã©ãªãŒããããªãããŠããŸããã 察象ã®äŒæ¥ããŒã¹ãå·¡ããã¹ã¿ã³ããå
šãŠéãããšãã³ããããããããŸãïŒ ãã³ãããã¯è€æ°çš®é¡ããããã©ããé
åçã§ããã ã·ãŒã«ã ã£ããã¹ã¿ã³ãã ã£ããâš å€ã«ã¯ãã¹ãã³ãµãŒäŒæ¥ãããããªã³ã¯ã¢ããã®äŒç»ãè€æ°ãããŸããã æ©éã¯ã©ã€ã¶ããããã®ããªã³ã¯ã¢ããã«åå ãããŠããã ãã銬èãé£ã¹ãªããã Rubyist ãšäº€æµããŸããã åå è
ã®äžã«MatzãããããŠãè²ã
ãšã話ãèãããšãã§ããŸããã 3æ¥ç® RubyKaigiçµäºåŸã«ã¯ãã¢ãã¿ãŒã㌠ãã£ãŒ ãéå¬ãããŸããã ãŸããå€ã«ã¯RubyMusicMixinãéå¬ãããŠããŸããã (ç§ãã¡ã¯äžåå ã ã£ããããåçãææ³ã¯ãããŸãã!!ð) ä»å¹Žã¯è²ã
ãªäŒç»ãã€ãã³ãããããããããã® Rubyist ãšäº€æµããããšãã§ããŸããã 芳å
芳å
åæãžè¡ã£ããçã¯ãªãã£ãã®ã§ãããåç©ã§ãããã°ãé£ã¹ãŸããïŒ å仿ã«è²°ãã3000ååã®ããŠãã£ãŒãã±ãããããã®ã§ãã¡ãã䜿çšããŸããã é§
åšãã«ã¯ããããã®é£²é£åºããããã飯ã«å°ãããšã¯ãããŸããã§ããã çç²å±ãããå« è¶åº ãªã©ã®é
åçãªãåºããããããããŸããã ããã¶ããã¶ãé£ã¹ãŸãã ææ³ ç§ã«ãšã£ãŠã¯åããŠã® RubyKaigi ã§ãããæè¡ã«ã³ãã¡ã¬ã³ã¹ãšããŠå€ãã®æå
端ã®ç ç©¶ã«è§Šããããããšã¯ãã¡ããã®ããšãäœãã Ruby ã³ãã¥ããã£ã®ããšã倧奜ãã«ãªãã3æ¥éã ã£ããªããšæããŸããã㌠ãã£ãŒ ã§ã¯æ®æ®µãããäžè©±ã«ãªã£ãŠãã Ruby ã Gem ã®ã³ããã¿ãŒãšåºäŒãã貎éãªã話ããèãããšãã§ããŸãããããã«ããã§åºäŒã£ãã³ããã¿ãŒã®æ¹ãšãã®åŸãäžç·ã« ãªãŒãã³ãœãŒã¹ ã®ãããžã§ã¯ãã«åå ãããŠããããããã«ãªã£ãããšãèªèº«ãš Ruby ãšã®é¢ãããäžæ°ã«è¿ã¥ããŠãããŸãããã¹ãã³ãµãŒããŒã¹ã§ã¯ããŸããŸãªäŒæ¥ã®æ¹ã
ãšã話ããããŠãåãã Ruby ã䜿ã£ãŠ Web ã¢ããªã±ãŒã·ã§ã³ãäœã仲éãšããŠããŸããŸãªèŠæ©ãå
±æããããããã¯ãããªãšãã㢠ã€ã㢠ãåŸãããšå€ãã®åŠã³ããããŸãããååºã亀æãããŠããã ããä»äºã®é¢ã§ã®ã€ãªãããäœããŸãããïŒå¯ºç°ïŒ å»å¹Žåå ããRubyKaigi 2022ã§ã®åçãããããŠãæ°ã«ãªãçºè¡šã®æ
å ±ãäºåã«èª¿ã¹ãããã«ããããäºåã€ãã³ãã«åå ãããããŸããã ãã®çµæãå»å¹Žãã話ã®å
容ãããããšãããå¢ããã®ã§ãçšæãããŠããåå ãããŠããã£ãã§ãïŒ ä»å¹Žãåäžä»£ã®ãšã³ãžãã¢ã®æ¹ãšã®äº€æµãã§ãããããŸãã女æ§ãšã³ãžãã¢ã®æ¹ãšç¥ãåãããšãã§ããŸãããåãæ©ã¿ãå
±æãããããã£ãªã¢ã«ã€ããŠè²ã
æããŠããã ãããããŠæè¡ä»¥å€ã®ããšãæ°ããªçºèŠãããããšãã§ããŸããã 3æ¥éãçºè¡šãèããããã³ããã¿ãŒãããã¡ã®è©±ãèãã«ã€ããŠã Ruby ã®ããšããã£ãšç¥ã£ãŠãããããšããæ°ããæ°æã¡ãèœçããŸããã Ruby ã®ããã¿ã賌å
¥ããã®ã§èªã¿é²ããããšæããŸãã é·éçã«ã¯åããŠèšªããã®ã§ããããšãŠãããå Žæã ã£ãã®ã§ã次ã¯èгå
ãã«è¡ãããã§ãïŒ(æ©é) åŸç·šã¯å°è±¡ã«æ®ã£ãã»ãã·ã§ã³ã®ç޹ä»ãããŠãããŸãïŒ ãæ¥œãã¿ã«ïŒ æ ªåŒäŒç€Ÿ ãšãã°ã¢ ãã¹ãŠã®æ±äººäžèЧ hrmos.co
ããã«ã¡ã¯ã æ ªåŒäŒç€Ÿ ãšãã°ã¢ ãæ°å 2 å¹Žç® ãšã³ãžãã¢ã®æ©éã§ãã å
æéå¬ãããã AWS Summit Tokyo 2023 ã«è¡ã£ãŠããŸããã ä»å¹Žã® AWS Summitã¯ãã€ããªããéå¬ã§ããªã³ã©ã€ã³ããªãã©ã€ã³å
±ã«åå ã§ããããã«ãªã£ãŠããŸããã äŒå Žã§ã®éå¬ã¯ã2019幎以æ¥ã®4幎ã¶ããšããããšã§ãïŒ ç§ã¯ãçŸå°ã§1æ¥ç®ã®ã¿åå ãããŠããã ããŸããïŒäŒå Žã¯ãåèçã® å¹åŒµã¡ãã» ã§ãã AWS ã«ã€ããŠã¯åå¿è
ã§ãããåå¿è
ã§ã楜ããããšããããšã§è¡ã£ãŠã¿ãŸããïŒ ãµãããã§ã®éããæ¹ æé è¡çš 10:00~ åä» ææŒå
Œçšãã¯ã 11:00~ ã¹ãã³ãµãŒããŒã¹ 12:00~ ããããå§ãã AWS ã¯ã©ãŠã ãæåã®äžæ©ã¯ AWS Cloud Essentials 13:00~ AWSome Day ïœèžã¿åºããã AWS ãžã®æåã®äžæ©ïœ 16:00~ ãã³ãã³ã㌠ã¢ã«ãŠã³ã ãªãããŒã·ã§ã³ãããžã§ã¯ã 17:00~ AWS AI ãµãŒãã¹ã䜿ã£ãŠããªãã®ã·ã¹ãã ã«ã æ©æ¢°åŠç¿ ãå°å
¥ãããïŒ å¹åŒµã¡ãã» ã®äŒå Žã«ã€ããŠãããã«åä»ãè¡ããŸãããäºåã«åè¬ç¥šãå°å·ããŠããã®ã§ãã¹ã ãŒãºã«äŒå Žå
ã«å
¥ãããšãã§ããŸããã ã¹ãã³ãµãŒããŒã¹ã§ã¯ãäŒæ¥ãã ããã«ã㣠ãããããšåè¬ç¥šãã¹ãã£ã³ãããšããä»çµã¿ã¯æ°ãããŠé¢çœãã£ãã§ãã ãŸãã AWS 瀟å¡ããçŽæ¥è©±ãèããããã¹ãã³ãµãŒã®å°å
¥äºäŸãã¹ãã³ãµãŒã®ãµãŒãã¹ã詳ããèŽãããšãã§ããŸããã ååŸããã¯äºçŽããŠããã»ãã·ã§ã³ã«åå ããŸããã ãããã¯æ¥åã§ AWS ãæ
åœããŠããªãã®ã§ãåå¿è
åãã®ã»ãã·ã§ã³ã«åå ããŸããã ç§ãåå ããã»ãã·ã§ã³ã¯ã»ãšãã©ããµã€ã¬ã³ãã»ãã·ã§ã³ã§ãããçºè¡šè
ã®ãã€ã¯ã®é³ãæå
ã®ã¬ã·ãŒãã®ãã£ã³ãã«ãèšå®ããããšã«ãã£ãŠãèŽãããšãã§ããŸããæ°ããïŒïŒ ãã®åãçµã¿ã¯ã没å
¥æããã£ãŠåè¬è
ãšããŠã¯éåžžã«äœéšãè¯ãã£ãã§ãããã ã座åžãåããªããšç«ã¡èŠã§ããªãã®ã§ãæ©ãã«ãåžã確ä¿ããŠãããŸãããïŒ ä»å¹Žã¯ãäºåã«ã»ãã·ã§ã³äºçŽãããŠããŠãã5ååããããŸã§ã«å
¥å ŽããŠãããªããšãäºçŽããŠããªãæ¹ã§ãå
¥å Žããããšãã§ããããã«ãªãããã§ããã(ç§ãèŠãéãã§ã¯) ã¡ãªã¿ã«ãæ€
åã¯ãã€ãæ€
åãªã®ã§é·æéã®ã»ãã·ã§ã³ãåè¬ãããšãå°»ãçããªãã®ã§ã ããã«ã㣠ã®ã¯ãã·ã§ã³ããã£ãŠããã£ãã§ãã å°è±¡ã«æ®ã£ãã»ãã·ã§ã³ã®ææ³ AWS Cloud EssentialsãšAWSome Day AWS Cloud EssentialsãšAWSome Dayã¯ã AWS ã¯ã©ãŠã ãããããå©çšããæ¹ã«ãšã£ãŠéåžžã«åœ¹ç«ã€ããã°ã©ã ã§ããã ãã®ïŒã€ã®ããã°ã©ã ãåè¬ããã°ã AWS ã«å€æ§ãªãµãŒãã¹ã«ã€ããŠãã©ã®ãããªããšãå®çŸã§ããã®ããšããããšãçè§£ããããšãã§ããããã«ãªã£ãŠããŸãã AWS Cloud Essentialsã¯ã AWS ã®åºæ¬çãªãµãŒãã¹ã®ç޹ä»ã§ãããå
·äœçã«ã¯ãããªãŒãžã§ã³ãšAZããEC2ããRDSãã VPC ãã責任å
±æã¢ãã«ãã«ã€ããŠçè§£ããããšãã§ããŸãã 話ã®ãã³ãããã£ããã§èãåãããããéäžããŠåè¬ã§ãããããªã»ãã·ã§ã³ã§ããã AWSome Dayã®æ¹ã¯ã AWS Cloud Essentialsãããããã倿§ãª AWS ã®äž»èŠãªãµãŒãã¹ã«ã€ããŠãçè§£ããããšãã§ããããã°ã©ã ã§ãã AWS Cloud Essentialsã®å
容ã«å ããŠããIoTãµãŒãã¹ãã æ©æ¢°åŠç¿ ãã ãããã¯ãã§ãŒã³ ããªã©ã«ã€ããŠã®èª¬æãåããããšãã§ããŸãããèããããšããªããµãŒãã¹ãªã©ããããããã£ãã®ã§ãã¯ã¯ã¯ã¯ããªããåè¬ããããšãã§ããŸããã è¬æŒåŸã«ã¯ã AWS ã®ãšãã¹ããŒãã®æ¹ãšçŽæ¥è©±ãããšãã§ããã®ã§ã質åãçåç¹ãè§£æ¶ããããšãã§ããŸããçŸå°åå ãªãã§ã¯ã®é
åã§ãïŒ ä»¥äžã®ããã«ã AWS Cloud EssentialsãšAWSome Dayãåè¬ããããšã§ã AWS ã®äž»èŠãªãµãŒãã¹ã«ã€ããŠç¥ãããšãã§ããŸããïŒ ãã®ïŒã€ãåè¬ããããšã«ãã£ãŠãããçè§£ãé²ãããšãã§ããŸããã ããšãã°ãã¹ãã¬ãŒãžã§ã¯ãS3ãEFSãEBSãšããïŒã€ã®ãµãŒãã¹ã玹ä»ãããŠããŸãããç§ã¯ãã¡ã€ã«ã®ç®¡çã«ã¯S3ã䜿ã£ãŠããŸãããä»ã®2ã€ã®ãµãŒãã¹ã«ã€ããŠã¯ç¥ããŸããã§ããã S3ã¯éåžžã«äŸ¿å©ã§ããããã¡ã€ã«ãçŽæ¥ããŠã³ããããå Žåããããé«é㪠ã¹ã«ãŒããã ãæ±ããããã¯ãŒã¯ããŒãã§ã¯ãEBSãEFSã®å©çšãæ€èšã§ãããšæããŸããã ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã§ã¯ã Amazon RDSãšã Amazon Aurora ãšãããµãŒãã¹ã玹ä»ãããŠããŸãããç§ã¯ã¢ããªã±ãŒã·ã§ã³éçºãããŠããã®ã§ã SQL ã¯ãšãªãéããŠããŒã¿ããŒã¹ãšã®ããåããããŸããããã®ã€ã³ãã©ã AWS ããªã³ãã¬ãã¹ã®ãµãŒããŒäžã§ã©ã®ããã«åäœããŠããã®ãã«ã€ããŠã¯ããŸãèããããšããããŸããã§ããã ãã®è¬æŒãèãã Amazon Aurora ãšããããŒã¿ããŒã¹ã䜿ãããšã§ãé«ãéå®³èæ§ãããŒã¿èä¹
æ§ãæäŸããŠãããšç¥ããŸããã Auroraãå©çšããããšã§DBã®éçšã楜ã«ãªããšæããŸããã ãããã AWS ãåŠã³ãããšããæ¹ã¯ãæ¥å¹Žã®Summitã§ã AWS ãããæ·±ãçè§£ããããã®ç¬¬äžæ©ãšããŠåè¬ããããšãããããããŸãïŒ ãã³ãã³ã㌠ã¢ã«ãŠã³ ããªã ããŒã·ã§ã³ãããžã§ã¯ã 次ã«åè¬ããã»ãã·ã§ã³ã¯ãã ãã³ãã³ã㌠ã¢ã«ãŠã³ ããªã ããŒã·ã§ã³ãããžã§ã¯ãããšãã ä»»å€©å æ ªåŒäŒç€Ÿãšæ ªåŒäŒç€Ÿ ãã£ãŒã»ãšãã»ãšãŒ ã®ã»ãã·ã§ã³ã§ãã ãã®ã»ãã·ã§ã³ã§ã¯ã ãã³ãã³ã㌠ã¢ã«ãŠã³ããšãã Nintendo Switch ãªã©ã§ã²ãŒã ãããéã«å©çšãããŠãŒã¶ãŒã¢ã«ãŠã³ãã·ã¹ãã ã«ããããªãããŒã·ã§ã³æ¡ä»¶ãã©ãé²ãããã®ã»ãã·ã§ã³ã§ããã å
ã
ã¯EC2 + Perl ã§æ§æãããã·ã¹ãã ã§ããã®ãªãããŒã·ã§ã³ã宿œããçç±ãšããŠã¯ãããã€ãæããããŠããŸãããããããªãå©çšè
ã®å¢å ã«äŒŽã£ãŠãçŸç¶ã®æè¡ã¹ã¿ãã¯ã§ã®ãµãŒãã¹ã¬ãã«ã®ç¶æãå°é£ãšå€æããããšãšéçŽã§ãããã§ããã ãªãããŒã·ã§ã³ã¯ãã¢ããªã±ãŒã·ã§ã³ãå
šé¢çã« Perl ãã Java ã«æžãæããã€ã³ãã©ãã³ã³ããã«çœ®ãæããŠããã ã¢ãŒããã¯ã㣠ããã€ã¯ããµãŒãã¹ã«ããŠãããšããå
容ã§ãã å€ãã®äŒæ¥ãæ¡çšããŠããã¢ãã³ãª ã¢ãŒããã¯ã㣠ãèšèªã®æ¡çšãšãããããªäžè¬çãªå
容ã«èŠããŸãã å®éã«ç§»è¡ãé²ããäžã§ãè«å€§ãª Perl ã®ã³ãŒããå
šãŠ Java ã«æžãæããã®ã¯ããªãã®åŽåã§ãã ããã§ã ãã³ãã³ã㌠ã§ã¯ãäžæçã«äººå¡ãå¢å ãããããã®ãªãããŒã·ã§ã³ããŒã ãçºè¶³ããŸãããããããç§ããã®ç»å£ã§äžçªè峿·±ããšæã£ãç¹ã§ãã ãã®ããŒã ã¯ãªãããŒã·ã§ã³ãå®äºãããæ®µéã§ãè§£äœãããããšãç®æšã«äœãããããŒã ã§ããªãããŒã·ã§ã³ãããžã§ã¯ããæšé²ãã責åãæ
ã£ãŠããŸãã ãµãŒãã¹ã¬ãã«ã«ã€ããŠã®è²¬åãæã£ãŠããããŒã ãšç¬ç«ããããŒã ãäœãããšã«ãã£ãŠãä¿å®çã«ãªãããããžã§ã¯ããé²ããããšãã§ãããšããåŽé¢ããããšæããŸããã ãããåãããŒã ã«ããŠããŸã£ãããç®å
ã®ãµãŒãã¹ã¬ãã«ã®æ¹ãéèŠã«ãªãããããªããªãé²ãŸãªãã£ãã®ã§ã¯ãªãããšæããŸãã æ®æ®µäœ¿ã£ãŠãããµãŒãã¹ã®ã·ã¹ãã ã«ã€ããŠç¥ãããšãã§ããŠå€§å€è峿·±ãã£ãã§ãã åå ãéã㊠AWS ã¯ã©ãŠã ã«ã€ããŠåããŠåŠã¶ããšãã§ããéåžžã«å匷ã«ãªããŸããã AWS ã®åºç€ç¥èãäž»èŠãªãµãŒãã¹ã«ã€ããŠã®èª¬æããããããæŽ»çšããã¡ãªãããå
·äœçãªæŽ»çšäŸãªã©ããããããã解説ããŠããã ããåå¿è
ã§ããšãŠã楜ãããŸããïŒ AWS ã¯ã©ãŠã ã®ç¡ææ ã®ç޹ä»ããã£ãã®ã§ãå人ã®éçºã§ãå©çšããŠã¿ãããšæããŸããã ã»ãã·ã§ã³ç»é²ã®éã«ã¬ãã«ãèšèŒãããŠããã®ã§ãèªåã«åã£ãã¬ãã«ã®ã»ãã·ã§ã³ãç»é²ããããšã§ã楜ããããšæããŸãïŒ ãŸããäŒæ¥ããŒã¹ã§ã¯ãããããã®å±ç€ºã AWS ã®äºäŸç޹ä»ãããã®ã§ãäœè£ã®ããã¹ã±ãžã¥ãŒã«ãçµããšããæ¥œããããã§ãã ãšãã°ã¢ ã§ã AWS ãå©çšããŠããŸãïŒ æ ªåŒäŒç€Ÿ ãšãã°ã¢ ãã¹ãŠã®æ±äººäžèЧ hrmos.co
ãšã³ãžãã¢ã®ç«¹ç°ã§ãã BUYMA ã®æ€çŽ¢ã·ã¹ãã ãMLOpsåºç€ã®éçºã»éçšãæ
åœããŠãããŸãã ä»åã¯Solr Operatorã«ããæ€çŽ¢ã·ã¹ãã æ§ç¯ãè¡ããŸããã®ã§ããã®å®æœå
容ãšåŸãããç¥èŠã«ã€ããŠã玹ä»ããããšæããŸãã ã¯ããã« æšæãã仿ã«ãããŠããªã³ãã¬ãã¹ã®ã·ã¹ãã ããã®è±åŽãããã³ãã€ã¯ããµãŒãã¹åãç®æããååæ€çŽ¢ã·ã¹ãã ã®ãªãã¬ã€ã¹ãé²ããŠããŸããã ãšãã°ã¢ ã§ã¯æ©èœæ¯ã« Apache Solrãçšããè€æ°ã®æ€çŽ¢ã·ã¹ãã ãä¿æããŠããã ã¯ã©ãŠã ç§»è¡ã«äŒŽããæ§ç¯é¢ãéçšé¢ã®è² æ
ã¯å€§å¹
ã«è»œæžã§ããŠãããŸãã ãªãããªãã¬ã€ã¹ãè¡ã£ãååæ€çŽ¢ã·ã¹ãã ã®æ§æãäžèšã®èšäºãšå€§ããã¯å€ãã£ãŠããŸããã tech.enigmo.co.jp ä»åãã©ãŒã«ã¹ããæ€çŽ¢ã·ã¹ãã ã®èª²é¡ æ€çŽ¢ã·ã¹ãã ã®éçšã«ã¯ãéçºæ¡ä»¶ãé害察å¿ãã·ã¹ãã ã®ããŒãžã§ã³ã¢ãããã·ã¹ãã å¢åŒ·äœæ¥ãªã©ããããŸãã äžã§ãéçºæ¡ä»¶ã¯ãæ¬çªãšåçã®ããŒã¿ãå©çšããã·ã¹ãã ã«ãŠæ€çŽ¢ã®äžŠã³é ãæ€çŽ¢ãããå
å®¹ã®æ€èšŒãå¿
èŠãšãªãå ŽåããããŸãã ä»ãŸã§ã¯ãªã³ãã¬ãã¹ç°å¢ã«ãã®ã·ã¹ãã ãæ§ç¯ããŠããŸããããä»åã®ååæ€çŽ¢ã® ã¯ã©ãŠã ç§»è¡ã«åãããåç°å¢ã ã¯ã©ãŠã äžã«æ§ç¯ããããšã«ãªããŸããã ã·ã¹ãã ã®ã©ã€ããµã€ã¯ã«ãçããããããç°¡çŽ ã«æ§ç¯ã»å»æ£ãè¡ããããã«ããããšãã課é¡ããããããã§æ¡ãšããŠåºãã®ãSolr Operatorã®å©çšã§ãã çµææ¬¡ç¬¬ã§ã¯ãµãŒãã¹éçšã§ãå©çšã§ããå¯èœæ§ãèæ
®ããŠSolr Operatorãå©çšããæ§ç¯ã®æ€èšŒãè¡ããŸããã ãªããæ¬èšäºã§ã¯ããçšåºŠ Kubernetes ã Apache Solrã®ããšããåç¥ã®æ¹ã察象ãšããŠããç¹ãã容赊ãã ããã Solr Operatorã«ã€ã㊠Welcome - Apache Solr Operator Solr Operator㯠Kubernetes ã®CRD(Custom Resource Definition)ãšããŠæäŸãããŠãããã®ã§ãSolrCloudãZookeeperClusterãšãã£ãkindã«ããSolrã·ã¹ãã ãäžå
管çããã€ã¡ãŒãžãšããçè§£ã§è¯ãããšæããŸãã 2023/04/24ã«v0.7.0ããªãªãŒã¹ãããŠããŸãã Solr Operatorã®æŠèŠãç°¡çŽ ãªæ§ç¯æ¹æ³ã«ã€ããŠã¯ã Google Cloudã®Shimojoæ§ãéåžžã«åãããããããã°èšäºãå
¬éãããŠããŸãã®ã§æ¯éãåèã«ããŠã¿ãŠãã ããã Solr Operator ãå©çšã㊠SolrCloud ã¯ã©ã¹ã¿ ã GKE Autopilot ã«æ§ç¯ãã (åç·š) zenn.dev Solr Operator ãå©çšã㊠SolrCloud ã¯ã©ã¹ã¿ ã GKE Autopilot ã«æ§ç¯ãã (åŸç·š) zenn.dev æ§ç¯æã®ç°¡åãªæ§æã¯ã以äžã®ããã«ãªã£ãŠããŸãã Zookeeper Operatorã«ã€ããŠã¯ç¹ã«è§Šãå¿
èŠããªãã£ããããæ¬èšäºã§ã¯è§ŠããŠããŸããã æ§æå³ Solr Operator CRDã®åãªãœãŒã¹é
ç®ã«ã€ã㊠Solr Operatorã¯Custom Resource Definition(CRD)ãšããŠæäŸãããŠãããé
ç®ã«åãããŠå®çŸ©ãåããŠãã圢ã«ãªããŸãã æ§æç®¡çãèããå Žåã helm install ã§SolrCloud ã¯ã©ã¹ã¿ ãæ§ç¯ããéã«é©å®ãã©ã¡ãŒã¿ãšããŠæå®ãããããã Kubernetes ãããã§ã¹ã ãšããŠç®¡çããã®ãæãŸãããšæãããŸãã â» helm install ã§ã¯ãªãã ãããã§ã¹ã ãäœæã㊠kubectl apply -f <äœæãããããã§ã¹ãã®yamlãã¡ã€ã«> ã§æ§ç¯ããæ¹åŒ ä»¥äžã«ã kind: SolrCloud ã«ãããŠå©çšé »åºŠãé«ããšèŠèŸŒãŸãããã©ã¡ãŒã¿ãåæããŠã¿ãŸããã specé
äžã®èšå®é
ç® å
容 åè solrImage å©çšããsolrã®ã³ã³ããã€ã¡ãŒãžãæå® ç¬èªãã«ãããã€ã¡ãŒãžãæå®å¯èœ solrOpts solrèµ·åæã®ãã©ã¡ãŒã¿ãæå® solrJavaMem java ã®ããŒããµã€ãºãæå® solrAddressability solrã®è§£æŸããŒããå€éšæ¥ç¶å®çŸ©ãæå® solrGCTune GarbageCollecitonçšã®ãã¥ãŒãã³ã°ãã©ã¡ãŒã¿ãæå® customSolrKubeOptions solrã®ã«ã¹ã¿ã é
ç®ãæå® (â»1) updateStrategy solrã®æŽæ°æ¹åŒããæå® æªæå®æã®ããã©ã«ããrollingUpdateã®ããæ³šæ dataStorage solrã®ããŒã¿æ ŒçŽå
ã¹ãã¬ãŒãž persistentã«ããŠæ°žç¶ãã£ã¹ã¯ãå©çš replicas solr podã®ã¬ããªã«æ° (â»1) 以äžãcustomSolrKubeOptionsé
äžã®é
ç® spec.customSolrKubeOptionsé
äžã®èšå®é
ç® å
容 åè ingressOptions å€éšã« ingress ãå©çšããŠããå Žåã«å©çš annotationsã§BackendConfigãæå®ãããªã©ã§å©çš configMapOptions providedConfigMapã«ã«ã¹ã¿ã ConfigMapãæå® solr.xml ã log4j2.xml ãå®çŸ©ã§ãã podOptions solr podã«å¯Ÿãããªãã·ã§ã³é
ç® (â»2) (â»2) 以äžãpodOptionsé
äžã®é
ç® spec.customSolrKubeOptions.podOptionsé
äžã®èšå®é
ç® å
容 åè resources CPUãã¡ã¢ãªã®limits/requestsãèšå® livenessProbe SolrãåäœããŠãããã©ãã æå®ããªããšhealthcheckãéãããpodãèµ·åããªã readinessProbe Solrã ãã©ãã£ã㯠ãåãããããã©ãã æå®ããªããšhealthcheckãéãããpodãèµ·åããªã initContainers Solr Podã®initContainersãå®çŸ©ã§ãã sidecarContainers Solr Podã«èšçœ®ãã ãµã€ãã«ãŒ ã³ã³ãããå®çŸ©ã§ãã ãããŸã§ãµã³ãã«ã§ããã以äžã®ãã㪠ãããã§ã¹ã ã«ãªãããšæããŸãã apiVersion : solr.apache.org/v1beta1 kind : SolrCloud metadata : name : example namespace : solr spec : replicas : 3 solrImage : tag : 9.2.1 pullPolicy : IfNotPresent solrGCTune : -XX:NewRatio=3 -XX:SurvivorRatio=4 solrJavaMem : -Xms2048M -Xmx2048M solrAddressability : commonServicePort : 8983 updateStrategy : method : StatefulSet dataStorage : persistent : pvcTemplate : spec : resources : requests : storage : 100Gi reclaimPolicy : Retain customSolrKubeOptions : configMapOptions : providedConfigMap : solr-config-map # configMapã¯å
ã«äœæã»é©çšããŠããå¿
èŠããã ingressOptions : annotations : cloud.google.com/backend-config : '{"ports": {"8983":"solrcloud-backend-config"}}' cloud.google.com/neg : '{"ingress": true}' podOptions : resources : limits : cpu : 2 memory : 6Gi requests : cpu : 2 memory : 6Gi livenessProbe : initialDelaySeconds : 30 periodSeconds : 10 httpGet : scheme : HTTP path : /solr/admin/info/health port : 8983 readinessProbe : initialDelaySeconds : 15 periodSeconds : 5 httpGet : scheme : HTTP path : /solr/admin/info/health port : 8983 è£è¶³ãšãªããŸãããSolrãèµ·åããªãå Žåã¯ãæŠã以äžã®æ¹æ³ã§åå ãç¹å®ã§ããŸãã Solr Podã kubectl describe ã§ç¢ºèª kubectl describe pod example-solrcloud-0 -n solr solr-operator Podã kubectl logs ã§ç¢ºèª kubectl logs solr-operator-xxxxxxxxxx-xxxx -n solr ãããã§ã¹ã é©çšåŸã¯ãsolr ã¹ããŒã å®çŸ©ãsolrconfig. xml ã®é
眮ãã³ã¬ã¯ã·ã§ã³ã®äœæãšé²ããŠæ€çŽ¢ã§ããç¶æ
ã«ããŸãã ãã¡ãã®äœæ¥ã«ã€ããŠã®æé ã¯å²æããŸãã Solrèµ·ååŸã®ç®¡çç»é¢çãžã®æ¥ç¶ã«ã€ããŠã¯ãäžèšã§å³ç€ºããéã ingress çµç±ãšããŸããã å®éã«æ§ç¯ããŠã¿ãææ ãŸã æ€èšŒæ®µéã§ã¯ãããŸããã以äžã®æ©æµãåŸããããã®ãšæããŸãã Zookeeperãç¹ã«æèããªããŠè¯ã ãã£ã¬ã¯ã ãªæ§æãåºæ¬çã«ã¯æèããªããŠè¯ã SolrCloudãæ§ç¯ããäžã§ã®Solrã®åŠç¿ã³ã¹ããäžãã ãããã§ã¹ã ããçšæããŠããã°SolrCloudã·ã¹ãã ã®äœæãåé€ãkubectlã³ãã³ãäžçºã§å®éãã CRDã®é
ç®ãå
å®ããŠãããããªã现ããç¹ãŸã§å®çŸ©å¯èœ èŠåŽããç¹ãšããŠã¯ä»¥äžã«ãªããŸãã ãããã¡ã¹ãã®èšå®èª€ããæŒãããããšçµæ§ããã ç¹ã«ãã«ã¹ãã§ãã¯ããªãœãŒã¹å®çŸ©åšãã®å®çŸ©èª€ãã¯äœãåé¡ãªã®ãåããèŸã CRDã¯ããªãé·å€§ãª ãããã§ã¹ã ã®ããèªã¿è§£ãã®ãå€§å€ Yamlã®åèãªã³ã¯ æ¥æ¬èªã§ã®åèæç®ãã»ãšãã©ãªã éçšå©çšã«åœãã£ãŠã¯ä»¥äžã®é
ç®ãæèã»æ€èšããå¿
èŠãããããšãåãããŸããã Solr Operatorã§æ§ç¯ã§ããã®ã¯Solrã®ã€ã³ãã©é¢ã®ã¿ Solrã® ã¹ããŒã å®çŸ©ãæ§æãã¡ã€ã«ã®é
眮㯠configsets API ã zkCliã³ãã³ã ãå©çšããå¿
èŠããã ã¢ã¯ã»ã¹åšãã®ã»ãã¥ãªãã£ãæ°ã«ããŠããå¿
èŠããã ç£èŠé¢é£ã®å®çŸ©ã¯å¥éæ€èšã®å¿
èŠããã ãšãã°ã¢ ã§ã¯æ€çŽ¢ã·ã¹ãã ã®ç£èŠã«Datadogãå©çšããŠãããããå¯Ÿå¿æ¹æ³ã調æ»ã»æ€èšããå¿
èŠãã Solr Prometheus Exporterãå©çšããæ¹æ³ããã çšéã®ç°ãªãæ€çŽ¢ã·ã¹ãã ã1ã€ã®SolrCloud kindã«éçŽããªãæ¹ãè¯ããããããªã Solr Podã®åç§°ãprefixåºå®ã®é£çªsuffix(äŸ: xxx-solrcloud-1 ã xxx-solrcloud-2 )ã§ã®ç®¡çãšãªããããPodåç§°ããçšéãå€å¥ãèŸã å®ãµãŒãã¹ã§ã®å©çšã¯Autopilot ã¯ã©ã¹ã¿ ããStandard ã¯ã©ã¹ã¿ ã®æ¹ãè¯ããããããªã ãªãŒãã¹ã±ãŒã«ã«æéãèŠãããããããçšåºŠãªãœãŒã¹ã確ä¿ãããç¶æ
ã§ãªããšéçšã¯é£ããã Solr Operatorèªäœã®ããŒãžã§ã³ã¢ãããžã®è¿œåŸ ãŸããåãããŠSolræ§æãèŠçŽããæ¹ãè¯ããšæããŸããã NRTãå
šTLOGã®ã¬ããªã«ã¿ã€ãã§ã³ã¬ã¯ã·ã§ã³ãäœæããæ¹ãè¯ã 1podãããŠã³ããŠãæŽæ°ãæ€çŽ¢ã«åœ±é¿ã®ãªãã·ã¹ãã æ§æã«ããå¿
èŠãã å¿
ç¶çã«DataImportHandlerã®ããã«ããŒã¿ãpullããæ¹åŒã®æ¡çšã¯é£ãããªã æ€èšŒçšéã«ã¯æé ãå§çž®ã§ãããã䟿å©ã«æããäžæ¹ããµãŒãã¹éçšã«ã¯æ€èšãã¹ãããšãå€ããšããå°è±¡ã§ããã æ¥åçã§Solr Operatorã®å©çšãæ€èšãããŠããããã§ããããæ¬èšäºãäžå©ã«ãªãã°å¹žãã§ãã æåŸã« åŒç€Ÿã§ã¯ãæ¬èšäºã«èšèŒãããããªæ°ããåãçµã¿ããããè¯ãã·ã¹ãã ãäœããäžç·ã«é²ããŠããããã®ã¡ã³ããŒãéæåéããŠããŸãïŒ æ ªåŒäŒç€Ÿ ãšãã°ã¢ ãã¹ãŠã®æ±äººäžèЧ hrmos.co
BUYMA Globalã®äºæ¥çµ±æ¬è²¬ä»»è
ãããŠããHibaruã§ãã ç§ã¯ãšã³ãžãã¢ã§ã¯ãªãã®ã§ããããããã¯ããããŒãžã¡ã³ãæ¥åã«ãæºãã£ãŠãããä»åã¯ç§ã BUYMA Globalã®ãã©ãããã©ãŒã ã«å°å
¥ããAIäŒæ¥ã Mad Street Den ïŒä»¥äžMSDïŒããéå¬ããã«ã³ãã¡ã¬ã³ã¹ã«æåŸ
ããã ããããããã®ã€ã³ã¹ãã¬ãŒã·ã§ã³ãåŸãããšãã§ããã®ã§ãããã°ãæžãããŠããã ããŸãã Montego Bay, Jamaica ã«ã³ãã¡ã¬ã³ã¹ãè¡ãããã®ã¯ããªããš ã«ãªãæµ· ã«ãããžã£ã ã€ã« ã ç§ã¯æ®æ®µããµã³ãŒã«ã¹åšäœãªã®ã§ããããžã£ã ã€ã« ã¯åäžéžã§ããã ä»åã¯éå¬äŒæ¥ã®ååŒå
ã§ç±³åœäŒæ¥ãäžå¿ã«äžçäžãããªãŒããŒã·ãããæåŸ
ããã ã±ãŒã¹ã¹ã¿ãã£ ãæ°ããæè¡ãžã®ã¢ãããŒãæ¹æ³ãªã©ããã£ã¹ã«ãã·ã§ã³ãã2æ¥éã®ã€ãã³ãã§ããã DAY 1: Dinner / Meet & Greet çŸãã ã«ãªãæµ· ã«æµ®ãã¶ãžã£ã ã€ã« ã®Montego Bayã«ãããªãŸãŒãã«å
šå¡å®¿æ³ãããããããã¹ã§æŽå²çãªããŠã¹ ãã¥ãŒãžã¢ã ã§ããããŒãºããŒã«ã»ã²ã¹ãããŠã¹ãžã Rose Hall Guest House REBUILDãšé¡ãããã€ãã³ãã¯ä»åã§3åç®ã®éå¬ã ããã§ãååã¯ã€ã³ãïŒMSDã¯ã€ã³ããæ¬æ å°ã§ãïŒã2åç®ãããã€ã ã£ãããã§ãã REBUILDã¯åãªãã€ãã³ãã§ã¯ãªãããã³ãã¥ããã£ãã ãšéå¬ã«ãããæããªã©ãMSDã®CEOãšCTOããèªãããŸããã âã㯠ãã ãžãŒ ã®ãã¬ã³ãã¯ããŠãŒã¶ãŒã®ã€ã³ãã«ãšã³ã¹åã倧ããªãã¯ãŒãšã¹ããŒããããããâ Dinnerã® Keynote ã¹ããŒãã¯ãå
P&Gã§Globalã®ITããŒããããŠããAndy Walteræ°ãåããã¬ã¬ã·ãŒçãªå€§ããªçµç¹ã«ãã€ã³ã¿ãŒãããããå°å
¥ããéã®ã話ãã圌ã®ãã£ãªã¢ã§ã¯åžžã«ããã£ãšç€Ÿå
ã®äººã«ã€ã³ãã«ãšã³ã¹ããªããããšèšããç¶ããŠããã¹ããŒãªãŒã話ããŠãããŸããã ãããããChat GPTã®è©±ã«ããªããŸãããåå è
ãã¡ã®æèŠã§ã¯ Google ããããovertakeããã ãããšã®èŠè§£ã ãã®å€§ããªãã¬ã³ãã«ã¯ãæ¥çã® ã€ã³ãã«ãšã³ãµãŒ ãã¡ã倧ããè²¢ç®ããŠãããšããäŸã§ããã Dinner Dinnerã§ã¯æµ·å€ã®ããžãã¹ã·ãŒã³ã§ã¯æ¬ ãããªããããã¯ãŒãã³ã°ã§ããäºãã®ããžãã¹ããã£ã¬ã³ãžãã³ã©ãã¬ãŒã·ã§ã³ã®å¯èœæ§ãªã©ã話ããŸããïŒãããããŸã ã«èŠæã§ããé 匵ããŸããïŒ ã¢ããªã«åãã«ããã£ãã¯é£æºãã ããŒã±ãããã¬ã€ã¹ ãå±éããŠããäŒç€Ÿãã äžåç±³ ã® Amazon ãšåŒã°ãã ããŒã±ãããã¬ã€ã¹ ãªã©Ecommerceã«é¢ããäŒæ¥ããã¡ãã£ã«ã«ã ãã¡ã€ãã³ã¹ ãªã©æ§ã
ãªæ¥çãããCEOãCTOããããã¯ããããžã£ãŒãåå ããŠããŸããã Day 2: Case Studies & Panel Discussion 2æ¥ç®ã¯ã«ã³ãã¡ã¬ã³ã¹æ¬çªã§ãäŒå Žã Half Moon Resortã«ç§»ããæãã倿¹ãŸã§ ã±ãŒã¹ã¹ã¿ã㣠ãããã«ãã£ã¹ã«ãã·ã§ã³ãè¡ãããŸãããïŒã¡ãªã¿ã«ãã® Half Moon Resortã¯ã ãšãªã¶ãã¹å¥³ç ãå§ãå€ãã®ãã€ã€ã«ãã¡ããªãŒã宿æ³ããããïŒïŒ ããŒã¿ã»ã³ããªã㯠vs ã¢ãã«ã»ã³ããªãã¯ïŒ äžçã®CIO, CDTO, CDO , CEOãåçããçãã¯ã¯ãªã¢ã ã£ã Data centric AI approach AIã«ãã©ãŒã«ã¹ããåžå Žã§ã®çãã¯ã ããŒã¿ã»ã³ããªã㯠ã CDO ãšCIOã¯ã20-21幎ã«AIã« $50B ãè²»ãããããããžãã¹ã®ææãšããç¹ã§ã¯ãäœã®ææãåŸãããŠããªãïŒ*MITSloanïŒ æ©æ¢°åŠç¿ ãAIã®æè¡è
ã»æ
åœè
ã¯ããã¢ãã«æ§ç¯ãããããšã«ãã©ãŒã«ã¹ããã¡ããããæ£è§£ã¯ã ããŒã¿ã®ã¯ãªãŒã³ã¢ãããã³ãã¯ãïŒ ã¢ã¯ãã£ããŒã·ã§ã³ ãã§ããïŒã¢ãã«æ§ç¯ãçãã§ã¯ãªãïŒ å
šãŠã®åºç€ãšãªããããŒã¿ã Data is everything MSDãèããAIã¢ãããŒãã»AI Transformationã®å§ãŸãã¯ãå
šãŠããŒã¿ããå§ãŸãã ããŒã¿ãã¯ãªãŒã³ã§ãªããçµ±åãããŠããªããæ£ããããŒã¿ãœãŒã¹ãèŠæ¥µããããªããããããã§ããŠããªããšãçµæãšããŠã³ã¹ããé«ããªãïŒããŒã¿ãµã€ãšã³ãã£ã¹ããããã¥ã¢ã«äœæ¥ã®æéçã³ã¹ããå«ããïŒROIãèŠåããªããªãããšã³ãã¬ã¹ã«ã¢ãã«æ§ç¯ãããªããã°ãªããªãã âãããŸã§ã®ãAI TransformationããããROI-Driven AI Transformationããžâ ã±ãŒã¹ã¹ã¿ã㣠ããåŠã¶AIã¢ãããŒã AYA Healthcare : San Diegoçºã®ãã©ãã«ããŒã¹æŽŸé£ãµãŒãã¹ãPandemicã§æ¥æ¿ã«å¢ãããã©ãã«ããŒã¹ã® ã¢ãµã€ ã³ã¡ã³ãã®ãããã³ã°ãããããããªã¢ã«ã¿ã€ã ã§å¯Ÿå¿ã§ããAIã¬ã³ã¡ã³ããŒã·ã§ã³ã䜿çšã ããŒã¹ã®ãããã£ãŒã«ãã¹ãã«ã»è³æ Œãš ã¢ãµã€ ã³ã¡ã³ããåã£ãŠããããã絊æã®åžæã¬ã³ãžãåžæãã±ãŒã·ã§ã³ãªã©ããããŠç¹å¥ãª ã¢ãµã€ ã³ã¡ã³ãã«ã¯æ¡ä»¶ãã¯ãªã¢ã§ããããŒã¹ãç»é²ããŠããäžãã2åãšãããããªãå Žåãããã®ã§ããããã£ãæ¥åãªæ¡ä»¶ããã®ããŒã¹ã®æ€çŽ¢çµæã®ãããã«åºããããã«ããã ä»åŸã¯Documentationã¹ãã£ã³ã®Automationãå°å
¥ããããšæã£ãŠãããããŒã¹ç»é²ã ã¢ãµã€ ã³ã¡ã³ãã«å
¥ãéã®Agreementãæžé¡ã®ã¢ããããŒããªã©ãã¹ã ãŒãºã«ã§ããããã«ãã Fedex : Fedex x ShopRunner ã®Fulfillment Optimizationã«AI掻çšã ç¹ã«è·ç©ãã©ãã®ãã±ãŒã·ã§ã³ã«ãããã©ããžéãã®ãããŸãã«ã¹ã¿ããŒãåžæããŠããåªå
é äœã¯äœãïŒé
éã®éããSustainabilityãäŸ¡æ ŒïŒã«ãã£ãŠé
éãªãã·ã§ã³ã®åºããããã§ããããã«ãããä»åŸCross-borderåãã®Documentationã¹ãã£ã³ãAIå°å
¥äºå® PICARD : ãã€ãçºã®èèããã°ãã©ã³ããPandemicããã£ããã«Online Storeã«åãå
¥ããããšã«ãªã£ãããã¢ãã«ççšç»åããªãEcommerceããã©ãŒãã³ã¹ã¯äœè¿·ãMSDã®æäŸããVue.aiã¢ãã«ççšAIãå©çšããCVR +65%ãAOV +12%ãè¿åç 22%ããŠã³ãå®çŸãããã Retailæ¥çãAIãã©ãå€ããŠããïŒïŒ å®ã¯ãã®ããŒãã®ããã«ãã£ã¹ã«ãã·ã§ã³ã«ç§ãç»å£ãããŠããã ããŸããã è±èªã§äžçã®ãªãŒããŒãã¡ãšã²ã¹ãã®åã§ç»å£ãããã®ã¯ãšãŠãç·åŒµããŸããããåãã£ãŠããªãç·Žç¿ãããŠãã£ãã®ã§ãã¹ã ãŒãºã«çºèšã§ããã®ã§ã¯ãªãããšæããŸãã çµãã£ãåŸã«ããããçããã«å£°ããããŠããã ãããŸã BUYMA ã®ãµãŒãã¹ã«ããšãŠãèå³ããã£ãŠããã ããŸããïŒ æ¶è²»è
ã®æ€çŽ¢ååãã¬ã³ãã«åãããŠAIãæŽ»çšããŠããã±ãŒã¹ã ãŠãŒã¹ã±ãŒã¹ ãåºãŠããŠãã AIãå°å
¥ããããšã§ããŒãœãã©ã€ãŒãŒã·ã§ã³ãã¬ã³ã¡ã³ããŒã·ã§ã³ã倧å¹
é²åããŠããïŒäŸãã°åãã¢ã«ãŠã³ãã䜿ã£ãŠéãå®¶æã®ã¡ã³ããŒããè²·ãç©ãããããšããŠãããïŒã¢ã¯ã»ã¹ããæé垯ãšåŸåããã·ã³ã©ãŒãã³ã°ããããã§ããŒãœãã©ã€ãŒãŒã·ã§ã³ãã¬ã³ã¡ã³ããŒã·ã§ã³ãåºãåããäŸãŸã§ããããã éå°åšåº«ã®äžççåé¡ã«AIãã©ãè²¢ç®ã§ããã®ãïŒãã®éå°åšåº«ãšããåé¡ã¯ç°å¢ããšã³ãããŒã«ãéåžžã«å€§ãã圱é¿ããŠããäžççåé¡ãAIã䜿ã£ãŠãéå°åšåº«ã«ãªãåã«ãããã®ååãäºæž¬ããããã¢ãŒã·ã§ã³ããããã远å çºæ³šãããªãããã«ã§ããæè¡ãéçºãããŠããã Innovation x LeadershipïŒAIãæ°ããæè¡ãžã®ã¢ãããŒããçµç¹æ¹é©ãžã®ã¢ãããŒãïŒ Victoria's Secret: ã©ã®ããã«Digital innovationãLegacyåãã倧ããªçµç¹ã«çŽ æ©ãå°å
¥ãããã Story-tellingã§ãããããã¿ã€ããäœãããšãéèŠã 50ã€ã®ã¢ã€ãã£ã¢ããã£ãŠããããããæ€èšããŒãã«ã«äžããã®ã7-8ã€ã ã£ãããã PassionãInnovationãäœã£ãŠããããšã瀟å
ã§æ°ããInnovationãã¢ã€ãã£ã¢ãã€ã³ãã«ãšã³ã¹ããŠããããšãéèŠã ãšããã§ãèªããŸããã ãããŠGen-zäžä»£ã¯Technologyãšå
±ã«çããŠããã®ã§å¿
èŠäžå¯æ¬ ã§ããããšãçè§£ããã Mercado Libre : äžåç±³ ã® Amazon ãšåŒã°ããå€§èŠæš¡ãª ããŒã±ãããã¬ã€ã¹ ã ããžãã¹æ¡å€§ãå éãã1000äººæªæºã ã£ããšã³ãžãã¢ãæ°å¹Žã§15000人ã®ãšã³ãžãã¢çµç¹ã«æ¥éæ¡å€§ã 倧ããªæè¡ã»çµç¹æ¹é©ã«ãããŠããCulture / Language / TechnologyããçŽ æ©ãå
±æããé©å¿ããŠãããã«ã¯ããªãã®ãã£ã¬ã³ãžããã£ãã 10000人以äžã«New Hireã®ãã¡ããªããš70%ãRefarralã§æ§æãããŠããããšã§ããCulture / Language / Technologyãã®é©å¿ã®å€§éšåãã«ããŒã30%ã¯å
šãã®æªçµéšãå«ãã§ãããããã®3å²ã«ã¯ã ã¬ãŒãã³ ã°ã«æ³šåããã ããããã®åŠã³ããããŸãããã Key Takeaway ããŸãšããŠã¿ãŸãã â
åºç€ãšãªãããŒã¿ã®éèŠæ§ â
Technologyã¯Cultureã§ããããšïŒæè¡ãã®ãã®ã人ã®åœ¹å²ãTake overããã®ã§ã¯ãªããæè¡ãçè§£ãã©ã®ããã«æ±ãã»æŽ»çšãããèãã人ãéèŠã§ããïŒ â
Technologyã¯Communityã§ããããšïŒä»åã®ã€ãã³ãã®ããã«ãæ§ã
ãªæ¥çãã人ãéãŸã ã±ãŒã¹ã¹ã¿ã㣠ãUse caseãã·ã§ã¢ãã課é¡ãå
±æããã¢ã€ãã£ã¢ãåºããããšïŒ 2æ¥ç®ã¯ã«ã³ãã¡ã¬ã³ã¹åŸããã©ã€ããŒãã¢ã€ã©ã³ãã§ãµã³ã»ãããèŠãªããã®ã㌠ãã£ãŒ ã ãããªèŠæš¡ã§ã€ãã³ããéå¬ããMSDã«ãšãŠãé©ãæå¿ããŸããïŒ ãããŠäœããMSDã®CEOã¯ã€ã³ã人ã®å¥³æ§ã§ãã㯠ãã ãžãŒ æ¥çã§æåãã女æ§ãšããŠã€ã³ã¹ãã¬ãŒã·ã§ã³ããããåæ°ã¥ããããŸããïŒ Bonding with girls in tech! ãšã³ãžãã¢ã§ã¯ãªãç§ã®äœéšïŒææ³ãæžãããŠããã ããŸãããããããã§ããã§ããããïŒ æ¬¡åã¯ãã²ç€Ÿå
ã®ããŒã¿ãµã€ãšã³ãã£ã¹ãããšã³ãžãã¢ã®æ¹ã«ãåå ããŠãããããããŸãéã£ãèŠç¹ã§ã€ã³ã¹ãã¬ãŒã·ã§ã³ãããã®ã§ã¯ãªãããšããããŸããã æåŸãŸã§èªãã§ããã ããããããšãããããŸããïŒ Hibaru
ãµãŒããŒãµã€ããšã³ãžãã¢ã®å²¡æ¬ã§ãã BUYMA ã®åºåè
åãæ©èœã®éçºãæ
åœããŠããŸãã åŒç€Ÿã®ãšã³ãžãã¢ããŒã ã§ã¯ãæšå¹ŽåŸåããããããããåãåãã察å¿ãã®çµç¹çãªåãçµã¿ãè¡ã£ãŠãããŸãã®ã§ãå°ãã§ã¯ãããŸãããã®åãçµã¿ã«ã€ããŠç޹ä»ããããšæããŸãã ãšãã°ã¢ã«ããããåãåããå¯Ÿå¿ ãåãåãã察å¿ã®æµã èª¿æ» äŒæ¥ã®å¯Ÿå¿ 身ã«ä»ããããšãæ¹åç¹ãªã© ãšãã°ã¢ ã«ããããåãåããå¯Ÿå¿ ãããŸã§ç€ŸæŽã®é·ããšã³ãžãã¢æ°åã察å¿ããããšãå€ãã£ãã®ã§ããããšã³ãžãã¢çµç¹äœå¶ã®èŠçŽãã«äŒŽããCS察å¿ã®éçšæ¹éã«é¢ããŠããã³å
¥ããè¡ãããšã«ãªããŸããã ç¹å®ã®ã¡ã³ããŒããåãåããã«å¯Ÿå¿ããããšã§ä»ã®ã¡ã³ããŒã«å¯ŸããŠãã¬ããžãå
±æããæ©äŒãå°ãªããªãããåãåãã察å¿ãå±äººåããŠããŸããšããåé¡ãæ±ããŠããŸããã BUYMA ã¯æ©èœããšã«å€§ããSELL/BUY/SI *1 ã®3ããŒã ïŒä»¥äžã ãã¡ã€ã³ ãšåŒã¶ïŒã«åå²ããŠãã *2 ã®ã§ãå ãã¡ã€ã³ ããäžæ¬¡æ
åœãè¡ãã¡ã³ããŒãéžæãã ãã¡ã€ã³ ããšã«ãåãåããã«å¯Ÿå¿ããéçšãè¡ãããã«ããŸããã éçšéå§ããå幎以äžãçµéããŸããã®ã§ãæ¯ãè¿ããè¡ããŸãã ãåãåãã察å¿ã®æµã ãåãåãã察å¿ã§åãçµãã§ããããšã¯ä»¥äžã«ãªããŸãã äžæ¬¡å¯Ÿå¿ åçºé²æ¢çã®æ€èš ãã¬ããžå
±æã®ããã®ããã¥ã¡ã³ãäœæã»å®æãã±ããã®äœæ äŒã¿ã®å
±æã»ç·æ¥æå¯Ÿå¿ãžã®åã èª¿æ» ã«ã¹ã¿ããŒãµãŒãã¹ ããŒã ïŒä»¥äžãCSããŒã ïŒã®æ¹ãCS察å¿çšã®ãã±ãããäœæããã ããSlackã§é£çµ¡ããŠããã ããŸãããããã¿ãŠå¯Ÿå¿ã§ããããªã¡ã³ããŒãé æ¬¡ãã±ããã®å
容ã確èªããŸãã äžå
·åã®å ±åã®å Žåã¯ãåŒç€Ÿã§ç®¡çããŠããã客æ§ã®ã¢ã«ãŠã³ãæ
å ±ãããšã« ã¢ããªã±ãŒã·ã§ã³ãµãŒã ã®ãã°ã远跡ãããã仿§ã®èª¿æ»ãè¡ããŸãã調æ»ãçµããã°ãã±ããã«èª¿æ»å
容ãèšèŒããäžã§CSããŒã ã®æ¹ã«é£çµ¡ãããŸããããã§ããã±ããäœæããäžæ¬¡èª¿æ»å®äºãŸã§ã®ã¹ãã³ãã§ããã ãçãã§ããããã«åèªå¿æããŠããŸããCSããŒã ã®æ¹ã調æ»ãé£èªããå ŽåããããŸãã®ã§ããã®å Žåã¯ãæããå
¥ããäžã§èª¿æ»ãç¶ããŸãã 調æ»ã®äžã§ã¢ããªã±ãŒã·ã§ã³ã³ãŒãã®ä¿®æ£ãå¿
èŠãªå Žåã¯å¯Ÿå¿ãè¡ããŸããå¥é起祚ãããŠå¯Ÿå¿ããããšãå€ãã§ãã ããŒã¿è£æ£ãå¿
èŠãªå Žåã¯ä¿®æ£çšã® SQL æãäœæããã¬ãã¥ãŒãçµãäžã§æ¬çªã®DBãµãŒãã«å¯ŸããŠå®è¡ããŸãã äžæ¬¡å¯Ÿå¿ã®æµã 察å¿ãããã±ãã㯠ã¹ãã¬ããã·ãŒã ã«èšèŒãããŠããµãããããè¡ãéãå¥ã®ãåãåããã®èª¿æ»ãè¡ãéã«æŽ»çšããŠããŸãã 調æ»ãããŠã¿ãŠã察å¿ããå
容ãåç
§ãããã°ãå®è¡ããã³ãã³ããªã©ãªã©ã esa äžã®ããã¥ã¡ã³ãã«èšãåãçµã¿ã宿œããŠããŸãã ãã¡ã€ã³ ããšã«æŽçã§ãããšãŠãè¯ããšæããŠããŸãã äžæ¬¡å¯Ÿå¿~察ç鲿¢çæ€èš~ãµãããã äŒæ¥ã®å¯Ÿå¿ æçµŠäŒæãåãå Žåã¯äºåã« ãã¡ã€ã³ å
ã§äŒããŠãããå¥ã®ã¡ã³ããŒã察å¿ã§ããäœå¶ãæŽããŠããŸãã ãŸã極ããŠçšã§ã¯ãããŸãããåæ¥ç¥æ¥ã«ç·æ¥å¯Ÿå¿ãå¿
èŠãªå ŽåããããŸãã®ã§ãåŸ
æ©ã§ããã¡ã³ããŒãäºãéžåºããŠããŸãã 身ã«ä»ããããšãæ¹åç¹ãªã© å
æ¥ããåãåãããæ
åœããã¡ã³ããŒã«æèŠãèãããããŸã§ã®åãçµã¿ãéããŠèº«ã«ã€ããããšãä»åŸã®èª²é¡ãªã©ã話ããŸããã 身ã«ä»ããããš ãã°ç£èŠããŒã«ã䜿ã£ãã該åœã®ãã°ãµãŒãã« ssh ãããªã©ããŠã ã¢ã¯ã»ã¹ãã° ãã¹ãããã·ã§ãããåç
§ããæ¹æ³ã身ã«ã€ãã BUYMA ã® ããžãã¹ããžã㯠ãçè§£ããæ©äŒãå¢ããããŸããèªèº«ã®æ
åœ ãã¡ã€ã³ 以å€ã®ã³ãŒããèªãæ©äŒãå¢ãã äœæ¥èŠç©ããã®èœå äŸãã°ãååŸ1æã«ãåãåãããããã調æ»ãäœæ¥ã«4æéããã確ä¿ã§ãããšèŠç©ããããã®æéå
ã§ã§ããããªããšãäºæ³ããã éãããæéå
ã§åºæ¥ãè€æ°ã®å¯Ÿå¿çãææ¡ãã CSããŒã ã®ã¡ã³ããŒãšã®é£æºãæ€çŽ¢ãã¢ãã€ã«ãªã©ä»ããŒã ãšã®é£æºãä»°ã ä»åŸæ¹åã§ããããªããš å人ç㪠ãã€ã³ãã»ãã å¯ãããããåãåããã«æ¯ãŸãæ·¡ã
ãšãã äŸé ŒãåããŠããè¿çãããŸã§ã®æéã®ççž®ã»å€æåã®åäž çµç¹çä»çµã¿ã¥ãã å±äººåããªãããã«èª¿æ»æé ããã¥ã¡ã³ãã仿§ã®æ¡å
ãåãåãã察å¿ã®ãªãŒãã¿ã€ã èšæž¬ ãã°åŸåã®åæ ãåãåããå ±åãå€ãæ©èœãåæããæ¹åã«ã€ãªããã 宿ãã±ããã®äœæ ãã©ã¹ã«ãªãç¹ãšããŠã BUYMA åã³ ECãµã€ã ã® ãã¡ã€ã³ ç¥èã身ã«ã€ãã®ã¯å€§ãããšæããŸããç§ãå
¥ç€ŸããŠ3幎ç®ãšãªããæ
åœããŠããåºåè
åãæ©èœã«ã€ããŠå°ãã¯ç¥ã£ãŠãããšæããŸããããŸã ææ¡ãåããŠããªã仿§ã»æ©èœã¯å€ããããŸããç¹ã«æ±ºæžãé
éæ¹æ³ã¯é£ããâŠãæ¥ã
ã®ãåãåãã察å¿ãéããŠç¥èŠãã¢ããããŒãããŠããŸãã æ¹åç¹ã¯æ§ã
ãããŸãããéé±ã§å®äŸäŒè°ãè¡ã£ãŠãããæ¥ã
æ¹åã«åããŠåãçµãã§ããŸãã æ ªåŒäŒç€Ÿ ãšãã°ã¢ ãã¹ãŠã®æ±äººäžèЧ hrmos.co *1 : SELLã¯åºåè
åãæ©èœãBUYã¯è³Œå
¥è
åãæ©èœãSIã¯æ±ºæžãé
éãªã©ãµãŒãã¹åºç€ãæ
åœ *2 : ã¢ãã€ã«ã¢ããªãããŒã¿åæã æ©æ¢°åŠç¿ ç³»ãäŒç»ç³»ãªã©ããŒã ã¯ä»ã«ããããŸã
ããã«ã¡ã¯ã22åãšã³ãžãã¢ã® å·æ¬ ã§ãã å
æ¥ã AWS JumpStart 2023 èšèšç·šããšããç ä¿®ã«åå ããŠããŸããã 2æ¥éãšçãæéã§ãããããšãŠãå
å®¹ãæ¿ããŠå匷ã«ãªã£ãã®ã§ãæ¬èšäºã§ã¯ç ä¿®ã®å
容ãåå ããææ³ãç¶Žã£ãŠãããããšæããŸãã AWS JumpStartãšã¯ïŒ AWSå
¬åŒHP ã§ã¯ä»¥äžã®ããã«æžãããŠãããŸãã ã AWS JumpStart 2023 èšèšç·šã㯠AWS ååŠè
ã®ãšã³ãžãã¢ã®æ¹ã
ã察象ãšãããå®è·µçãªç ä¿®ããã°ã©ã ã§ã å°æ¥çã« AWS 掻çšããªãŒããã人æã«ãªãããã®ç¬¬äžæ©ãã¹ã ãŒãºã«èžã¿åºãããããªããã°ã©ã ããæäŸããŸã åãªã AWS ãµãŒãã¹ã®åŠç¿ã ãã§ãªããèŠä»¶ã«åãããŠé©å㪠ã¢ãŒããã¯ãã£ ãæ€èšã»èšèšããçµéšãç©ãéšåã«ãã©ãŒã«ã¹ããå
容ãšãªã£ãŠãããŸã äŸãã°ã以äžã®ãããªæ¹ã
ã«ããªã¹ã¹ã¡ã§ãïŒ ã» AWS ã®ååã¯ç¥ã£ãŠãã䜿ã£ãããšã¯ç¡ã ã» EC2 çã®åäœãµãŒãã¹ã¯è§Šã£ãããšããããå
šäœã®ã¢ãŒããã¯ãã£ã³ã°ã¯çµéšããªã ã» ã¯ã©ãŠã ãã€ãã£ããªã¢ããªã±ãŒã·ã§ã³ãèšèšããäžã§éèŠãªèгç¹ãç¥ããã AWS ååŠè
åãã® ã¯ã©ãŠã ã¢ãŒããã¯ãã£ ãæ€èšã»èšèšããã€ãã³ãã§ãåå 人æ°ã600人以äžããå€§èŠæš¡ã€ãã³ãã§ããã ããã°ã©ã å
容 ç ä¿®ã¯ä»¥äžã®æ§æã§è¡ãããŸããã äºååŠç¿ ãã³ãºãªã³ ã°ã«ãŒãã¯ãŒã¯ äºååŠç¿ ç ä¿®åå åã«äºååŠç¿ãšããŠã AWS SAAåãã®åç»åŠç¿ææãéãããŠããã®ã§ãã¡ãã§ AWS ã®åºæ¬çãªãµãŒãã¹ã«ã€ããŠåŠç¿ããŸãã ãŸãã AWS ã®ãµãŒãã¹èª¬æã ãã§ãªããã¢ãŒããã¯ãã£ã³ã°ã®ã³ãã¿ãããªå
容ãçã蟌ãŸããŠãããç ä¿®åœæ¥ã«éåžžã«åœ¹ã«ç«ã¡ãŸããã ç§ã¯å®å
šã« AWS æªçµéšã ã£ãããããã¡ãã®ææã§äºååŠç¿ããŠãããŠã»ããšã«ããã£ãã§ãã ãã³ãºãªã³ 1æ¥ç®ã«ãŸããã³ãºãªã³ãããã AWS äžã«Todo管çã¢ããªãæ§ç¯ãããšãã£ãå
容ã§ããã 以äžã®å³ã®ããã« ALB + ECS on Fargate + Aurora MySQL ã® ã¢ãŒããã¯ãã£ ãæ§ç¯ããŸããã ãã³ãºãªã³ã®äžã§é¢çœããŠå匷ã«ãªã£ãã®ããäžèšã® ã¢ãŒããã¯ã㣠ã§ECSã¿ã¹ã¯ãçæ¹åæ¢ããããšãã®æåããAurora MySQL ã®ãã§ãŒã«ãªãŒããŒãå®è¡ãããšãã®æåãå®éã«æãåãããŠç¢ºèªããããšã§ãã ECSã¿ã¹ã¯ãçæ¹æ»ãã§ãèªå埩æ§ããŠããæ§åãããã§ãŒã«ãªãŒããŒããããšã«ããAurora MySQL ã®ãªãŒããŒãšã©ã€ã¿ãŒãåãæ¿ããæ§åã確èªããããšãã§ããŸããã ãã®ãããªå®è·µçãªãã³ãºãªã³ã®ãããã§ãå¯çšæ§ãã¹ãŒã±ã©ããªãã£ãæèãã ã¢ãŒããã¯ã㣠ãšã¯ã©ãããããšãªã®ããšããã€ã¡ãŒãžãããå
·äœçã«ãªããŸããã ãŸãããããŸã§ã® ã¢ãŒããã¯ã㣠ãå人ã§äœæãããšãéãããããŸããããã®èŸºããæèããã« AWS ãµãŒãã¹ãè§Šãããšãã§ããã®ããããããã€ã³ãã§ããïŒ ã°ã«ãŒãã¯ãŒã¯ 2æ¥ç®ã¯ã°ã«ãŒãã§èª²é¡ã«æ²¿ã£ã ã¢ãŒããã¯ãã£ ãæ§ç¯ãããšãã£ãå
容ã§ããã 以äžã®ãããªèŠä»¶ãæºãã ECãµã€ã ãæ§ç¯ããŠãã ãããšãã課é¡ãäžããããŸããã æäŸèŠæš¡ å©çšè
æ°:æ°äžäºº ããŒã¯æé垯:æ¥æ¬æéã®æå€ æäŸãšãªã¢:æ¥æ¬ æäŸãã©ãããã©ãŒã :web ã·ã¹ãã èŠä»¶ ããã¯ãšã³ã: Java /Spring BootïŒDockerã§éçºäžïŒ ããã³ããšã³ã:TypeScript/ReactJS ããŒã¿ããŒã¹: MySQL å¿
é æ©èœ ååäžèЧããŒãž ååæ
å ± ååç»å ã«ãŒãæ©èœã賌å
¥æ©èœ 決æžãåšåº«ç®¡çãé
éã·ã¹ãã ã¯å€éšã® SaaS API ãå©çšãããã®ãšãã ã¢ã«ãŠã³ãç®¡çæ©èœ è¿œå èŠä»¶ CI/CD BI ããã·ã¥ ããŒãæ©èœ ã¬ã³ã¡ã³ãæ©èœ æ®æ®µãã BUYMA ã®éçºãããŠããECãµãŒãã¹ã«ã¯éŠŽæã¿ããã£ãã®ã§ã€ã¡ãŒãžããããã£ãã§ãã ããã BUYMA ã¯å
šãŠã®ç®æã§ AWS äžã®ãµãŒãã¹ã䜿ã£ãŠããããã§ã¯ãããŸããã ãªã®ã§ã BUYMA ã®ãã®éšå㯠AWS ã ãšãã®ãµãŒãã¹ã䜿ãããªãšãããããªèгç¹ã§ ã¢ãŒããã¯ãã£ ãæ§ç¯ããŠãããŸããã ãã®ãããªèгç¹ã§ ã¢ãŒããã¯ãã£ ãæ§ç¯ããããšã§ BUYMA ãžã®çè§£ãæ·±ãŸã£ãã®ã§ãç§ã«ãšã£ãŠã¯äžç³äºé³¥ãªèª²é¡å
容ã§ããã æçµçã«æ§ç¯ãã ã¢ãŒããã¯ã㣠ã¯ä»¥äžæ§æå³ã§ãâ 工倫ããç¹ãšããŠã¯ã ECS on Fargateã®æ§æã«ããã³ã³ããã®AutoScalingãå®çŸããŠãµãŒããŒã®å¯çšæ§up RDSã¯Multi-AZæ§æãšããŠãé害çºçæã«ãã§ãŒã«ãªãŒããŒããŠãªãŒããŒãã©ã€ã¿ãŒ ã€ã³ã¹ã¿ã³ã¹ ãåãæ¿ããããã«ããŠå¯çšæ§up ElastiCacheã䜿ãããšã§ããŒã¿ããŒã¹ã¯ãšãªã®ã¬ã¹ãã³ã¹ãé«éå Cloud Frontã䜿ãããšã§éçã³ã³ãã³ãé
ä¿¡ã®é«éå ä»ã«ãCI/CDã®æŽåãBIããŒã«ã®å°å
¥ãã¬ã³ã¡ã³ãæ©èœãžã®å¯Ÿå¿ãªã©ãè¡ããŸãããã AWS ã«ã¯ããããã«é©ãããµãŒãã¹ãçšæãããŠãããæ¬åœã«ãµãŒãã¹ã®çš®é¡ãè±å¯ã ãªãšæããŸããã ç ä¿®ãçµããææ³ åå å㯠AWS ã«ã€ããŠã¯ãªããšãªããµãŒãã¹åãç¥ã£ãŠããçšåºŠã§ããããç ä¿®ã§å®éã«ãã³ãºãªã³ã§æãåãããããããŒã ã§ ã¢ãŒããã¯ã㣠è°è«ãããããšã§ AWS ã®å
šäœæãæŽãããšãã§ããŸããã ãŸããWebã¢ããªã±ãŒã·ã§ã³ã® ã¢ãŒããã¯ã㣠ãèšèšããäžã§æèãã¹ãå¯çšæ§ãã¹ã±ãŒã©ããªãã£ã«ã€ããŠåŠã¹ãããšã倧ããªåç©«ã ã£ãããªãšæããŸãã AWS ã®ãµãŒãã¹åã«ã€ããŠç¥ã£ãŠããŠãã ã¢ãŒããã¯ã㣠ãèšèšããäžã§éèŠãªããšãããã£ãŠããªããšé©åãªãµãŒãã¹ãéžæããããšãã§ããŸããããèšèšããããšãã§ããªããšæããŸããã æåŸã« ä»åã®ç ä¿®ãæ©ã«ã€ã³ãã©ã®ããšã«ã€ããŠãå°ãèå³ãæ¹§ããŸããã AWS SAAã®è³æ ŒååŸãªã©ãç®æããŠããããã§ãã æåŸã«ããã®ãããªçŽ æŽãããç ä¿®ãç¡åã§éå¬ããŠãã ãã£ãã¢ããŸã³ ãŠã§ã ãµãŒãã¹ ãžã£ãã³ ååäŒç€Ÿ ã®çããŸãããããšãããããŸãã! æ ªåŒäŒç€Ÿ ãšãã°ã¢ ãã¹ãŠã®æ±äººäžèЧ hrmos.co
ããã«ã¡ã¯ãã€ã³ãã©ãšã³ãžãã¢ã® å è€( @kuromitsu_ka )ã§ãã ã¯ããã« Amazon RDSã®EoS察å¿ã§ã ã€ã³ã¹ã¿ã³ã¹ ã¯ã©ã¹ãšãšã³ãžã³ããŒãžã§ã³ã倿Žããäœæ¥ãããŸããããã®éã ã€ã³ã¹ã¿ã³ã¹ ã¯ã©ã¹ãšãšã³ãžã³ããŒãžã§ã³ãåæã«å€æŽããããšããã®ã§ãã峿é©çšãããå°ããŸããã EoSé¢ä¿ã®ããã¥ã¡ã³ã Amazon RDS for PostgreSQL リリースカレンダー - Amazon Relational Database Service DB instance classes - Amazon Relational Database Service è§£æ±ºã®æµã 瀟å
ã®ãµããŒããåããŠãä¿çã«ãªã£ã倿Žãåãæ¶ãæ¹æ³ãæããŠè²°ããŸãããä¿çã«ãªã£ãŠãã ã€ã³ã¹ã¿ã³ã¹ ã¯ã©ã¹ãšãšã³ãžã³ããŒãžã§ã³ã®å€æŽã®å
ããšã³ãžã³ããŒãžã§ã³ã®å€æŽãåãæ¶ãããšããã ã€ã³ã¹ã¿ã³ã¹ ã¯ã©ã¹ã®å€æŽãèµ°ããŸããããã®åŸããšã³ãžã³ããŒãžã§ã³ã倿ŽããŠãç¡äºãã¡ã³ããã³ã¹å¯Ÿå¿ã§ããŸããã ããã£ãããš Amazon RDSã®å€æŽãä¿çã«å
¥ã£ãŠããŸã£ãåé¡ã§ããã AWS ãµããŒãçªå£ã«è³ªåãããšãããæ¢ç¥ã®åé¡ã ã£ãããã§ãã Amazon RDSã® ã€ã³ã¹ã¿ã³ã¹ ã¯ã©ã¹ãšãšã³ãžã³ããŒãžã§ã³ã倿Žããéã¯ã ã€ã³ã¹ã¿ã³ã¹ ã¯ã©ã¹ãšããšã³ãžã³ããŒãžã§ã³ãšã§ã2åã«åããŠå€æŽããæé ãæšå¥šããŠãããšã®ããšã§ããã 以äžãäœæ¥ãã° ã€ã³ã¹ã¿ã³ã¹ ã¯ã©ã¹ ãšã³ãžã³ããŒãžã§ã³ äœæ¥å db.m3.xlarge 11.15 äœæ¥åŸ db.m5.xlarge 11.18 ã€ã³ã¹ã¿ã³ã¹ ã¯ã©ã¹å€æŽãšãšã³ãžã³ããŒãžã§ã³ã®ããŒãžã§ã³ã¢ãããåæã«é©çšããããšãããã倿Žãä¿çã«ãªã£ãŠããŸã£ãã å®è¡ããã³ãã³ã $ aws rds modify-db-instance \ --db-instance-identifier ${DBå} \ --engine-version ${ããŒãžã§ã³} \ --db-instance-class ${ã€ã³ã¹ã¿ã³ã¹ã¯ã©ã¹} \ --no-allow-major-version-upgrade \ --apply-immediately --apply-immediately ãã€ããŠããã®ã«ä¿çãšãªã£ãŠããŸã£ãã "PendingModifiedValues": { "DBInstanceClass": "xxx", "EngineVersion": "xxx" }, ä¿çã®åãæ¶ã 倿Žåã®å€ãé©çšããããšã§ãä¿çç¶æ
ãè±ããããšãã§ããŸãã $ aws rds modify-db-instance \ --db-instance-identifier ${DBå} \ --engine-version ${倿Žåã®ãšã³ãžã³ããŒãžã§ã³} \ --apply-immediately ä¿çãããŠãã ã€ã³ã¹ã¿ã³ã¹ ã¿ã€ã倿Žãå§ãŸã£ãã ããã£ã!! æ¯ãè¿ã 該åœã® ã€ã³ã¹ã¿ã³ã¹ ã¯ã©ã¹ãããšã³ãžã³ããŒãžã§ã³ããµããŒãããŠããªããšããããã§ã¯ãããŸããã§ããã Amazon RDS DB エンジンとインスタンスクラスでサポートされている Performance Insights - Amazon Relational Database Service ä»åã®åé¡ã§ãããéçºç°å¢ã§ã¯ããŸãè¡ã£ãŠãæ¬çªç°å¢ã ãçºçããŸããã ãã¡ãã¯äžåºŠã®ã³ãã³ãã§ ã€ã³ã¹ã¿ã³ã¹ ã¯ã©ã¹ããšã³ãžã³ããŒãžã§ã³ã倿Žã§ãããïŒããŸããŸãããããªãã ã€ã³ã¹ã¿ã³ã¹ ã¯ã©ã¹ ãšã³ãžã³ããŒãžã§ã³ äœæ¥å db.t2.micro 11.15 äœæ¥åŸ db.t3.micro 11.18 åœæ¥ã¯ãå°ããŸãããããã®å Žã§ç€Ÿå
ã®ãµããŒããåããŠè§£æ±ºã§ããŸãããå人çã«ã Amazon RDSã®å€æŽåãæ¶ãïŒãšèšã£ãŠããã®ã埮åŠã§ããïŒã³ãã³ãããè£ã³ãã³ãã£ãœãã®ã§æ°ã«å
¥ããŸããã æ ªåŒäŒç€Ÿ ãšãã°ã¢ ãã¹ãŠã®æ±äººäžèЧ hrmos.co
ïœåè°å¶ âCommitteeäœå¶â ã®å°å
¥ïœ ç®æ¬¡ æ°äœå¶ã®å°å
¥ã®èæ¯ã«ã€ã㊠Committeeäœå¶ã®å®è¡ã«åã㊠Committeeäœå¶ã®è©³çްã«ã€ã㊠ããžãã¹ãµã€ããšã®é£æºã«ã€ã㊠ãã€ã³ã¿ãã¥ã€ãŒçµæŽã»ç޹ä»ã å®è€ è±ç·ãCOOïŒåç· åœ¹ æé«å·è¡è²¬ä»»è
1997å¹Žã«æ ªåŒäŒç€Ÿ é»éåœéæ
å ±ãµãŒãã¹ ã«å
¥ç€Ÿã2004å¹Žæ ªåŒäŒç€Ÿ ãšãã°ã¢ èšç«ã2005幎åœç€Ÿåç· åœ¹ã2010幎ã«åœç€ŸCOO(åç· åœ¹ æé«å·è¡è²¬ä»»è
)ã«å°±ä»»ã æšæ æ
倪é / ãšã³ãžã㢠ãªã³ã°ã ããŒãžã£ãŒ Committee Head 2013幎㫠ãšãã°ã¢ ã«Webã¢ããªã±ãŒã·ã§ã³ãšã³ãžãã¢ãšããŠå
¥ç€Ÿã ããŒã¿ã» æ©æ¢°åŠç¿ ã»æ€çŽ¢ã®åºç€éçºã»éçšãæ
åœãããšã³ãžãã¢ããŒã ãç«ã¡äžãã BUYMA ã®ãšã³ãžãã¢çµç¹ã®ãããŒãžã£ãŒããã³ãçµç¹ã®éå¶æ¹éãæ±ºå®ããåè°äœã®Headãåããã å±±æ¬ æµ©è²Ž/ ãšã³ãžã㢠ãªã³ã°ã ããŒãžã£ãŒ Committee Vice Head 2016幎㫠ãšãã°ã¢ ã«Webã¢ããªã±ãŒã·ã§ã³ãšã³ãžãã¢ãšããŠå
¥ç€Ÿã çŸåšã¯åºåè
åãæ©èœãéçºããããŒã ãšããã³ããšã³ãããŒã ã®ãããŒãžã£ãŒããã³ãçµç¹ã®éå¶æ¹éãæ±ºå®ããåè°äœã®Vice Headãåããã ãã€ã³ã¿ãã¥ã¢ãŒçµæŽã»ç޹ä»ã 倧谷地埳/ ã³ãŒãã¬ãŒããªãã¬ãŒã·ã§ã³æ¬éšã人äºç·åã°ã«ãŒãéšé· 2002å¹Žæ ªåŒäŒç€Ÿ åå ±å å
¥ç€Ÿãã¢ã«ãŠã³ããããã¥ãŒã¹è·ãšããŠåœå
å€äŒæ¥ã®ã³ãã¥ãã±ãŒã·ã§ã³æœçã«æºããã2015幎㫠ãšãã°ã¢ ã«å
¥ç€Ÿãã³ãŒãã¬ãŒããªãã¬ãŒã·ã§ã³æ¬éšïŒäººäºç·åã°ã«ãŒãã®éšé·ã«å°±ä»»ãæ¡çšã人äºäŒç»ã åŽå ãç·åãã³ãŒãã¬ãŒãITã®é åãçµ±æ¬ã æ°äœå¶ã®å°å
¥ã®èæ¯ã«ã€ããŠ å€§è°·ïŒ ä»åãåœç€Ÿã®ãšã³ãžãã¢çµç¹ã®ãããžã¡ã³ãäœå¶ã倧ãããªãã¥ãŒã¢ã«ãããŸãããããã®èæ¯ãçµç·¯ã«ã€ããŠCOOã®å®è€ããããšã³ãžã㢠ãªã³ã°ã ããŒãžã£ãŒïŒä»¥äžEMïŒã®æšæããã»å±±æ¬ããã«ã話ãã䌺ãã§ããã°ãšæããŸãã ãŸãã¯æ¬é¡ã«å
¥ãåã«å®è€ããã«ã䌺ããããã®ã§ãããCOOãšããŠã©ã®ãããªããšãæèããŠãæ¥é ãããšã³ãžãã¢ã®çµç¹ãã¡ã³ããŒãšé¢ãã£ãŠããã£ããããŸããã å®è€ïŒ ãšã³ãžãã¢ä»¥å€ã«ãåœãŠã¯ãŸãããšã§ãããç¹ã«æèããŠããéšåã¯ããŸãã人ãã®éšåã«ãªããŸãã ã©ã®ã¡ã³ããŒã«éèŠãªããŒã«ïŒåœ¹å²ïŒãæ
ã£ãŠããããã®å€æã¯ãšãŠã倧äºãªãããããã¯ãã£ãããšèªåãªãã®ç¢ºä¿¡ãæãŠãç¶æ
ã«ããããšæã£ãŠããŸãã æè¡çãªéšåã¯åºæ¬çã«èªåãæŠç¥ãç«ãŠãããã§ã¯ãããŸããããäŒç€Ÿã¬ãã«ã§æ±ºããã¹ãéèŠãªããšã¯ãæè¡çãªé åã§ãéèŠãªããŒã«ãæ
ãã¡ã³ããŒãšãã£ã¹ã«ãã·ã§ã³ããéã«ããã®è¯ãæªããèªä¿¡ããã£ãŠå€æã§ããç¶æ
ã«ããŠããŸãã å€§è°·ïŒ ãã©ããã人ã«ã©ã®ãããªããŒã«ãæ
ã£ãŠãããã®ãããšãã倿ã¯ããŸãã«çµç¹äœãã«ã倧ããé¢ããéšåã§ãããä»åãã®çµç¹äœãã®åçµã¿ã®ã²ãšã€ãšããŠå®æœããã ãCommitteeäœå¶ã ã®å°å
¥ã«ã€ããŠãèãããããšæããŸãã ä»åã ãšã³ãžãã¢çµç¹ãCTOãéšé·ãé ç¹ãšããã¯ã³ãããåã§ã¯ãªããEMé£ã§æ§æãããCommitteeããšããåè°äœãæææ±ºå®ã®ãããæ©é¢ãšããŠæ°èšãããã®HeadãVice Headã1幎亀代ã®èŒªçªå¶ã§éå¶ãã ãšããäœå¶ãžã®ç§»è¡ããŸãããããã®å°å
¥èæ¯ãæããŠãã ããã å®è€ïŒ ãããŸã§ ãšãã°ã¢ ã¯ãšã³ãžãã¢çµç¹ã«é¢ããããäŒç€Ÿå
šäœãšããŠå°æ°ç²Ÿéã®çè質ãªçµç¹ã§æé·ããŠããŸããããã®çºãåœç€Ÿã®æè¡å¿åã®é«ããšã³ãžãã¢éã«ã¯é床ãªãããžã¡ã³ãè² è·ããããã«éçºã«å°å¿µããŠããããããšããæãããããŸãããããããã©ãããªçµç¹ã§ ãã«ã¹ã¿ ãã¯ã«èªåã®ã¹ãã«ãçºæ®ã§ããç°å¢ã«ç¹ããããããé
åã«æãããšã³ãžãã¢ãèªç¶ãšéãŸã£ãŠããŸããã ãããŠäžå Žãã10幎ãçµã¡ãæè¡é åãå€å²ã«åºãããçµç¹ããµãŒãã¹ãæ Œæ®µã«å€§ãããªããä»ãŸã§ã®ããæ¹ã§çµç¹ãæé©ã«ãããžã¡ã³ãããããšãé£ãããªã£ãŠããŸããã ãããŸã§ã¯çµå¶é£ããšã³ãžãã¢ã«ã¯ãããžã¡ã³ãã®è² è·ããªãã¹ããããªãããã«ãšèããŠããŸããããåœç€Ÿããããšã³ãžãã¢æµã®ãããžã¡ã³ãäœå¶ãžã®é²åãå¿
èŠãªãã§ãŒãºã«ãªããŸããã ãããŠEMãã¡ããããçµç¹çãªèª²é¡ã解決ãããããããããçµç¹ã«ããŠããããããšããååããªæèŠãèªç¶ãšåºãŠããããã«ãªããŸããããã®ãããªäžã§ããããŸã§ã® ãšãã°ã¢ ã®ãšã³ãžãã¢çµç¹ã®ã«ã«ãã£ãŒã倧åã«ããªããæé©ãªæ¹åãæ€èšããäžã§Committeeãšããã³ã³ã»ãããæãæµ®ãã³ãŸããã å€§è°·ïŒ æ°äœå¶ã®äžã§ãç¹åŸŽç㪠ãEMé£ã«ããåè°å¶ã ã®ã³ã³ã»ããã ãCommitteeã®HeadãšVice Headã1幎亀代ã®èŒªçªå¶ã ã«ããããšèããèæ¯ã¯ãªãã§ããããïŒ å®è€ïŒ 瀟å
ã®ãšã³ãžãã¢ã§çµç¹ã®ãããã®çµéšããªãã¡ã³ããŒã§ããããŒãã«ãé«ããªãããã£ã¬ã³ãžããããããã«ãããã£ãã®ãäžã€ã§ãããŸããå±äººåãããè²ã
ãªã¡ã³ããŒã®æèŠãåãå
¥ããŠå€é¢çã«é²åããŠããçµç¹äœå¶ã«ããããšèããŸããã å±äººåããããªãããã«ããããè¡ãæ¥åãåè§£ããŠãããŒã«ïŒåœ¹å²ïŒããšããæœè±¡çãªèšèã§å®çŸ©ããããããããããªäººã®æã§è²ãŠãŠãããããªäœå¶ã§ãã£ãŠãè¯ãã®ã§ã¯ãªãããšæããŸãããéèŠãªå€æããšããªãããŒã«ãªã©ã«ãããŠããããããµããŒãããä»ã®Committeeã¡ã³ããŒã次åèªåãããå¯èœæ§ãããç¶æ³ã«çœ®ãããšã§ããèªåã ã£ããã©ããããããšããèŠç¹ã«ãªããèªåããšåããŠæ¥åã«åã蟌ãããšãã§ããŸãããããã£ãç¶æ
ãçµç¹ãšããŠå¥å
šã§ã¯ãªãããšæãã茪çªå¶ãåãå
¥ããŸããã ããã«ããããŒãžã£ãŒããããã®æ¥åã1ã€ã®ããŒã«ã§ãããšèããŠããŸãã åªç§ãªãšã³ãžãã¢ã ãšãã°ã¢ ã§é·ã掻èºããéã«ããããŒãžã£ãŒãšããŠããã©ãŒãã³ã¹ãé«ãã£ã人ã§ããèªèº«ããã£ã¬ã³ãžãããããšã«å¿ããŠèªçºçã« ã¹ãã·ã£ ãªã¹ãïŒæè¡è
ïŒã«æ»ããšãããã£ãªã¢ããã£ãŠãè¯ããšèããŠããŸãã ãããŒãžã£ãŒã«ãªãããšïŒå¯äžã®ãã£ãªã¢ã¹ãããã¢ããã«ããããªã ãšæã£ãŠããŸãã ãããŒãžã£ãŒã¯ãããŸã§çµç¹ã®äžã§ãã㌠ãžã£ãŒã ãŒã«ãæ
ã£ãŠãã人ãšãã圢ã§å®çŸ©ããããšã§ãäžäžãšããç«ã¡äœçœ®ã«ãããããæã¯ãããŒãžã£ãŒããã£ãŠããããããæã¯ ã¹ãã·ã£ ãªã¹ãã§ããããããéæ®µãç»ã£ãŠãããããªãã£ãªã¢ã®éžæããã£ãŠãé¢çœãã®ã§ã¯ãªãããããã§çµç¹å
šäœã«ãã©ã¹ã«ãªãããšãããããã£ãªã¢ã¢ããã®å€æ§åã«ãç¹ãããšèããŸãã è²ã
ãªèгç¹ã§ãšã³ãžãã¢ãäž»äœçã«èªãã®çµç¹ãå°éæ§ãæé·ãããŠãããäœå¶ã«ãªãããšãç®æããããšèããã®ãèæ¯ã§ãã Committeeäœå¶ã®å®è¡ã«åããŠ å€§è°·ïŒ ç¶ããŠãæšæãããšå±±æ¬ããã«ãèããããã®ã§ãããéšé·ãCTOã眮ããªããã©ãããªçµç¹éå¶ã§ããCommitteeäœå¶ã«ã€ããŠãåããŠæ¹éãèããæã«ã©ãæããŸãããïŒ æšæïŒ ç§ãããšã³ãžãã¢çµç¹å
šäœã«ã€ããŠãèªåçã«ã¯ããããæ¹ããããã¿ãããªãšããã¯èããŠããŠãå®éã«è©±ãå§ããŠããã¿ã€ãã³ã°ã§ããã ãã©ãããªçµç¹äœå¶ã«ã€ããŠã¯ãä»ç€Ÿã§ãããã«CTOãããå Žåã§ããCTOãè£äœããã¡ã³ããŒãããããããCTO宀ãèšçœ®ãããããªäŒç€ŸããããããããŸãããããã£ãããããè£äœããä»çµã¿ãå¿
èŠã§ãããšããã®ã¯çè§£ããŠããŸããããããã£ããšããããå®è€ããããææ¡ã«ã€ããŠãããããªããšæããŸããã茪çªå¶ã«ã€ããŠããHeadã«ãªãããšãžã® å¿çç ããŒãã«ãäžãããŸãããèªåã«å°±ä»»ãæèšºãããéãããžãã£ãã«åãæ¢ããããšãã§ããŸããã å±±æ¬ïŒ èªåãä»åã®è©±ãããåãããçµç¹çã«ããå°ããã£ãæ¹ãè¯ãéšåããããªãšæããŠããŸãããä»ç€Ÿã®äœå¶ãåãçµã¿ã調ã¹ãŠã¿ãŠã ãšãã°ã¢ ã«ã¯ã©ããªããæ¹ãæé©ãªã®ããèããŠããã®ã§ãCommitteeäœå¶ã«ã€ããŠãååãã«ãšãããŸããã ãã ãåãã¯éšé·ãCTOãšããåãããããããããããªãããšã«ã€ããŠã¯å°ãäžå®ããããŸããã ã§ãå®éã«Committeeãçºè¶³ãããããã§ãçµç¹äœãã«ã€ããŠEMå士ã§å®æçãã€ç©æ¥µçã«äŒè©±ããå Žãã§ããããšã§ãä»ãŸã§ä»¥äžã«çµç¹ãã¯ã€ãã¯ã«è¯ãæ¹åã«åããå§ããããšãããã«å®æã§ããŸããã Committeeäœå¶ã®è©³çްã«ã€ããŠ å€§è°·ïŒ æšæãããå代Headã«æ±ºãŸã£ãŠãããããã«å
·äœçãªCommitteeéå¶ã«åããäœå¶ã¥ããã«çæãããŸããããæçµçãªå®æœäœå¶ã«ã€ããŠæŠç¥ãæããŠããã ããŸããã æšæïŒ ç¹°ãè¿ãã«ãªããŸãããæ°äœå¶ã¯CTOãVPoEãšãã圹è·ã眮ãããè€æ°åã®EMãCommitteeãšããåè°äœã圢æããŠãæææ±ºå®ã®ãããæ©é¢ãšãªã£ãŠããŸãããããã¯èŒªçªå¶ãšãªããŸããåªå
é äœãé«ãçµç¹èª²é¡ã¯åç§äŒãé
äžã«èšçœ®ããŠè°è«ã»æ±ºå®ã®ã¹ããŒããäžããŠãããŸãã Committeeãçºè¶³ããŠãŸãè¡ã£ãããšã¯ãããããåç¬ã§æ
ã£ãŠããããŒã«ã»ã¿ã¹ã¯ãåè§£ã»æœè±¡åããŠãã£ãŠçµç¹ã«èœãšãä»èŸŒã¿ãCommitteeã¡ã³ããŒã®èª°ãæ
åœããããæ±ºããŠãããŸããã ãã®éã«çŸåšè¶³ããªã圹å²ããæ°ãã«æ¡çšãã¹ãããžã·ã§ã³ãªã©ãåæã«æŽçããŸããã å±±æ¬ïŒ ãšã³ãžãã¢çµç¹ã®ããããããã¹ãä»äºã¯éåžžã«å€å²ã«æž¡ããŸãã ãããã®åœ¹å²ã¯ãããŒã ã®ãããžã¡ã³ãïŒããŒãã«ããããžã§ã¯ããããžã¡ã³ãïŒãæè¡çæææ±ºå®ãæ¡çšã»è©äŸ¡ã«æ¢ãŸãããã·ã¹ãã ç£æ»ãã€ã³ã·ãã³ãææ®ãäºç®ã»çµè²»ç®¡çãšãã£ãæ§ã
ãªåœ¹å²ããããŸããæè¡è·ããèŠããšå°ãæ¬é ããããªã"éåâãšæããæ¥åããããã«éãŸããã¡ã«ãªãã®ã§ãããããæ¥åãå«ããŠã誰ãæ
åœãããïŒä»åŸã©ã®ããã«ç®¡çã»æææ±ºå®ããã®ãïŒãCommitteeã¡ã³ããŒå
ã§ååãã«è°è«ããªããæ±ºããããšãã§ããŸããã ããžãã¹ãµã€ããšã®é£æºã«ã€ããŠ å€§è°·ïŒ ãšã³ãžãã¢ãšããžãã¹ãµã€ããå¯ã«é£æºããŠæ¥åãæšé²ããåœç€Ÿã«ãããŠã¯ãä»åã®äœå¶å€æŽã¯ããžãã¹ãµã€ãã®ç¹ã«ãããžã¡ã³ãé£ã«ãã£ãããšçè§£ããŠãããå¿
èŠããããŸããããã©ã®ãããªåœ¢ã§ã€ã³ããããè¡ã£ããæããŠãã ããã æšæïŒ ã¯ããä»åã®çµç¹äœå¶ã¯ãšã³ãžãã¢ã ãã§ãªããããžãã¹ãµã€ãã«ããªã³ã¯ããããšããšãŠãéèŠã ãšèããŸãããçµå¶é£ãããããã£ãããªã®ã§ãªãã£ã¹ããé¢ããå Žæã§1æ¥ã¯ãŒã¯ã·ã§ãã圢åŒã§æéãåã£ãŠå
±æãšãã£ã¹ã«ãã·ã§ã³ãããããããšææ¡ããã ããã®ã¯ãããããã£ãã§ãã å®è€ïŒ ãšãã°ã¢ ã¯ãšã³ãžãã¢ãšããžãã¹åŽãäŒç»ã¡ã³ããŒãäžç·ã«ãªã£ãŠãããã¯ãããµãŒãã¹ãåµãäžããŠããããšã倧åã«ããŠãã颚åã§ãã ä»åã¯ãšã³ãžãã¢çµç¹ã®ã¿ãŒãã³ã°ãã€ã³ããšãªã£ãã®ã§ãããžãã¹åŽã®éšé·ãããšã³ãžãã¢ãšå¯ã«ä»äºãããŠããã¡ã³ããŒãšã¯äºåã«ããã¯ãªããããããçè§£ããŠããããããçåãããã°è§£æ¶ããŠããå¿
èŠããããšèããŸããã ãã¯ãããšã³ãžãã¢ãšããžãã¹ãµã€ãã®ã¡ã³ããŒãå¢çãªãåããããªäŸ¡å€èгã§åããããªèæ¯ãçè§£ããäžã§ãååã»é£æºããŠä»äºãããããšã¯ããã倧åãªããšã§ãã æšæ: ä»åã®ããã¯ãªããéããŠããšã³ãžãã¢çµç¹ã®è©±ã«ãšã©ãŸãããéçºåŽãšããžãã¹åŽã®ãããªã飿ºåŒ·åã«ã€ããŠã®è°è«ã«ãçºå±ããäŸãã°ãå
šç€ŸæšªæçãªéèŠãããžã§ã¯ãã®æšé²æ¹éïŒã«ã³ãããŒãããã®æŠå¿µïŒã«ã€ããŠãèªç¶ãšè°è«ãæ¹§ãèµ·ãã£ããããŠãéåžžã«ææçŸ©ãªæ¥ã«ãªããŸããã ããã¯ãªãçµäºåŸããã®ãã«ã®å±äžã§ã¿ããªã§BBQããã£ãã®ãããæãåºã§ãïŒç¬ïŒ ä»åã®èšäºã§ã¯æ°äœå¶ïŒCommitteeäœå¶ïŒã®ç§»è¡ã«ã€ããŠã話ãããŸãããåŸåã¯æ°ããªéçºäœå¶ã«ã€ããŠã話ãããŸããåŸåããæ¥œãã¿ã«ïŒ
ããã«ã¡ã¯ãã€ã³ãã©ãšã³ãžãã¢ã® é«å±± ã§ãã ãã®èšäºã¯ Enigmo Advent Calendar 2022 ã®25æ¥ç®ã®èšäºã§ãã ã¯ããã« ãšãã°ã¢ å
¥ç€ŸåŸã« AWS ãåŸã
ã«è§Šãå§ã æ°å¹ŽçµéããŸããã æåã¯Webã³ã³ãœãŒã«ããããããããŠããã®ã§ãããCloudFormationã§ã³ãŒãåãé²ããã AWSCLIã SDK ã䜿ãããã«ãªããæè¿ã¯ Ruby ã§ AWS ãªãœãŒã¹ã®æ
å ±ååŸãæäœãããããšãå€ããªã£ãŠããŸããã (以äžã Rubyã§AWSãªãœãŒã¹ã®æ
å ±ååŸãæäœããã ããšã AWSãRubyã§æäœãã ãšè¡šçŸããŸã) AWS ã Ruby ã§æäœããããã«ãªã£ãçç±ã¯ä»¥äžã§ãã ããããWebã³ã³ãœãŒã«ã¯èŠæ(ãšããããæã)ã§ã CLI ã§æäœãããæŽŸã§ãã æ§é çãªããŒã¿ãæ±ãã®ã¯ Shell ã¹ã¯ãªãã ã ãšå³ãã(jqãå«ã) Ruby on Rails (以äžã Rails ãšè¡šèšããŸã)ã䜿ã£ãããšãããã®ã§ã Ruby ã«å°ãã¯æ
£ããŠãã BUYMA ã§ã¯ Rails ãæ¡çšããŠããã®ã§ã瀟å
ã§èãã AWS ãæäœããã«ã¯ python (+boto3)ã䜿ã£ãŠãããŠãŒã¶ã®æ¹ãå§åçã«å€ãããªæ°ãããŸããã python ãšæ¯èŒããŠããããã§ã¯ãªãã®ã§ãçæèœã¡æã¯åŠããªãèšäºã«ãªã£ãŠãŸãã çžæ§ãè¯ããšæãçç± AWS ãš Ruby ã¯çžæ§ãè¯ããšæãçç±ãããã¯ããŒã¿ã® ã·ãªã¢ã©ã€ãº ãç°¡åã«ã§ããããã§ãã ãã®äžç¹ã«å°œããã®ã§ãããã§èšäºçµäºã§ãè¯ããããã ã·ãªã¢ã©ã€ãº ãšã¯ ã·ãªã¢ã©ã€ãº ãšããã®ã¯ ããŒã¿ããªããžã§ã¯ãããã¡ã€ã«ã«æžã蟌ã¿ã§ããããã«å€æããããšã§ãã å察ã¯ã ã·ãªã¢ã©ã€ãº ã èšãã«ããã§ããã ãã£ãŠã¿ãã ã·ãªã¢ã©ã€ãº 㯠yaml ã©ã€ãã©ãªã䜿ãããªããžã§ã¯ãã yaml åããŠããã¡ã€ã«ã«ä¿åããã ãã§ãã $ export AWS_REGION = " ap-northeast-1 " $ pry [ 1 ] pry(main)> require ' aws-sdk-ec2 ' => true [ 2 ] pry(main)> require ' yaml ' => true [ 3 ] pry(main)> ec2_client = Aws :: EC2 :: Client .new(); [ 4 ] pry(main)> ec2_data_list = ec2_client.describe_instances(); [ 5 ] pry(main)> File .open( " ec2_data_list.yml " , ' w ' ){|h| h.write ec2_data_list.to_yaml} => 896272 [ 6 ] pry(main)> quit $ ls -l ec2_data_list.yml -rw-rw-r-- 1 ec2-user ec2-user 896272 Dec 21 15 : 49 ec2_data_list.yml ã ã·ãªã¢ã©ã€ãº ãåãããã«ã yaml ã©ã€ãã©ãªã䜿ã£ãŠloadããã ãã§ã â» aws-sdk-ec2 ã require ããå¿
èŠã¯ãããŸã $ pry [ 1 ] pry(main)> require ' aws-sdk-ec2 ' => true [ 2 ] pry(main)> require ' yaml ' => true [ 3 ] pry(main)> ec2_data_list = YAML .load_file( " ec2_data_list.yml " ); [ 4 ] pry(main)> p ec2_data_list.reservations.count; 149 ç°¡åã§ããã ã·ãªã¢ã©ã€ãº ã§ããããšã®äœãå¬ããã®ã ç°¡åã« ã·ãªã¢ã©ã€ãº ã§ããããšã¯ ããã£ãŠããã ãããšæããŸãããããã®äœãå¬ããã®ãïŒ ããŒã¿æ§é ã ãã®ãŸãŸãã¡ã€ã«ã«ããŠããããèªã¿èŸŒãããšãã§ããã®ã§ 以äžãåé¢ããããšãã§ããŸãã æéããããããŒã¿ååŸã®åŠç ãããã詊è¡é¯èª€ãããããŒã¿æŽåœ¢ã®åŠç ðãå¬ããããšãªã®ã§ãããäŒãããŸããããå®éã«ãã£ãŠã¿ãŸãããã ã¹ã¯ãªãã ã®äŸ ããŒã¿ãååŸãã ã¹ã¯ãªãã ãŸãããŒã¿ãååŸãã ã¹ã¯ãªãã ã§ãã EC2 ã€ã³ã¹ã¿ã³ã¹ ãå€ãå Žå㯠next_token ã nil ã«ãªããŸã§ã«ãŒãããå¿
èŠããããŸãã (ããŒã¿ãå°ãªããã°äžèŠã§ã) ãã㯠ã§ããã ããã£ã«ã¿ãŒããæ¹ãè¯ãã§ãããä»åã¯æ€èšŒãªã®ã§ããŠããŸããã ããŒã¿ååŸã¯æ°ç§çšåºŠã§ãããæ€èšŒã®ãã³ã«ååŸãçŽãã¯å°å³ã«ã¹ãã¬ã¹ã§ãããã $ cat get_all_ec2_data.rb #!/usr/bin/env ruby require ' aws-sdk-ec2 ' require ' yaml ' ec2_client = Aws :: EC2 :: Client .new() all_ec2_data_list = [] token = nil loop do ec2_data_list = ec2_client.describe_instances({ next_token : token}) token = ec2_data_list.next_token all_ec2_data_list += ec2_data_list.reservations break if token.nil? end File .open( " all_ec2_data_list.yml " , ' w ' ){|h| h.write all_ec2_data_list.to_yaml} ã€ã³ã¿ã©ã¯ãã£ã ã·ã§ã«(pry)ã§ç¢ºèª 次ã¯ããŒã¿æ§é ããããŒã¿ãã©ããã£ãŠæŽåœ¢ããã確èªããŸãããã 以äžã¯ Nameã¿ã°ã®ååŸæ¹æ³ã確èªããæã®ãã°ã§ãã [ 1 ] pry(main)> require ' aws-sdk-ec2 ' => true [ 2 ] pry(main)> require ' yaml ' => true [ 3 ] pry(main)> [ 4 ] pry(main)> all_ec2_data_list = YAML .load_file( " all_ec2_data_list.yml " ); [ 5 ] pry(main)> all_ec2_data_list[ 6 ].instances.first.tags => #<struct Aws::EC2::Types::Tag key="Name", value="Test-BM-Rails-19">, #<struct Aws::EC2::Types::Tag key="role", value="Railsweb">, #<struct Aws::EC2::Types::Tag key="Service", value="Buyma">, #<struct Aws::EC2::Types::Tag key="CreateUser", value="takayama">, [ 6 ] pry(main)> all_ec2_data_list[ 6 ].instances.first.tags.class => Array [ 7 ] pry(main)> all_ec2_data_list[ 6 ].instances.first.tags.find{|tag|tag[ " key " ]== " Name " } => #<struct Aws::EC2::Types::Tag key="Name", value="Test-BM-Rails-19"> [ 8 ] pry(main)> all_ec2_data_list[ 6 ].instances.first.tags.find{|tag|tag[ " key " ]== " Name " }[ " value " ] => " Test-BM-Rails-19 " åEC2 ã€ã³ã¹ã¿ã³ã¹ ã®ena_supportãæå¹ã«ãªã£ãŠããã©ããããã§ãã¯ãã ã¹ã¯ãªãã åEC2 ã€ã³ã¹ã¿ã³ã¹ ã® ena_support ãæå¹ã«ãªã£ãŠããã©ãã ãã§ãã¯ãã ã¹ã¯ãªãã ãæžããŠã¿ãŸããã ïŒäŸãšããŠè¯ããã®ãæãã€ããªãã£ãã§ãããïŒ $ cat check_all_ec2_ena_support.rb #!/usr/bin/env ruby require ' aws-sdk-ec2 ' require ' yaml ' all_ec2_data_list = YAML .load_file( " all_ec2_data_list.yml " ) all_ec2_data_list.each do |ec2| name = ec2.instances.first.tags.find{|tag|tag[ " key " ]== " Name " }[ " value " ] puts "#{ name } : #{ ec2.instances.first.ena_support }" end 以äžã®ãããªæãã§åºåãããŸãã $ ./check_all_ec2_ena_support.rb | head -5 Test-Railsweb-Server : true Test-Phpweb-Server : true Test-EC2-Instance : false Test-Airflow-Server : false Test-Redash-Server : false EC2ã®ã¿ã°ã ãåã£ãŠãã¡ã€ã«ã«ä¿åãã ã¹ã¯ãªãã æ¬¡ã¯ EC2ã®ã¿ã°ã ãåã£ãŠãã¡ã€ã«ã«ä¿åãã ã¹ã¯ãªãã ãäœæããŠã¿ãŸããã $ cat check_all_ec2_tags.rb #!/usr/bin/env ruby require ' aws-sdk-ec2 ' require ' yaml ' def convert_tags_to_hash (tags) hash_tags = {} tags.each{|e| hash_tags[e[ " key " ]] = e[ " value " ]} hash_tags end all_ec2_data_list = YAML .load_file( " all_ec2_data_list.yml " ) all_ec2_tag_info_list = {} all_ec2_data_list.each do |ec2| tags = convert_tags_to_hash(ec2.instances.first.tags) all_ec2_tag_info_list[tags[ " Name " ]] = tags end File .open( " all_ec2_tag_info_list.yml " , ' w ' ){|h| h.write all_ec2_tag_info_list.to_yaml} å®è¡ããŠã¿ãŸãã $ ./check_all_ec2_tags.rb $ head all_ec2_tag_info_list.yml --- Test-Railsweb-Server : Name : Test-Railsweb-Server role : Railsweb CreateUser : takayama Test-Phpweb-Server : Name : Test-Phpweb-Server role : Phpweb CreateUser : takayama Test-EC2-Instance : yaml ã«ãªã£ãŠãããšãå¯èªæ§ãé«ããšãããã¡ãªããã§ãïŒ ãã£ãããçµè« ãšããããšã§ã ã·ãªã¢ã©ã€ãº ã®ç°¡åããš ã¡ãªãããããã£ãŠããã ããã®ã§ã¯ãªãããšæããŸãã ã¡ãªãããŸãšã ãã®ãŸãŸã®ããŒã¿æ§é ã§ä¿åã§ãã ã€ã³ã¿ã©ã¯ãã£ã ã·ã§ã«ã§ã®ç¢ºèªãæ€èšŒãããããã ããŒã¿ã®ååŸãšããŒã¿æŽåœ¢ãªã©ã®åŠçãåãããã yaml ã§ä¿åããã®ã§ å¯èªæ§ãé«ã Ruby ã§ã®èªèšŒæ
å ±ã®ååŸ ãããŸã§ã®æ€èšŒã§ã¯ ãããããããããã Readæš©éã®ããEC2äžã§å®è¡ããŠããã®ã§ èªèšŒæ
å ±ã®ååŸã¯äžèŠã§ããããPCäžãªã©ä»ã®å Žæã§ AWS ã® SDK ã䜿çšããå Žå㯠èªèšŒæ
å ±ã®ååŸãå¿
èŠã§ãã $ ls -l ~/.aws/cli/cache/ total 24 -rw------- 1 takayama staff 1421 12 8 20:16 3a9ab49ce67fe5806c5af3d5a378fbbb470561d9.json -rw------- 1 takayama staff 1445 10 24 15:24 65d08609cd764dc442d836e7665fbbd663992aea.json -rw------- 1 takayama staff 1433 8 25 16:07 6c11869d293d59bf5a50ceef707e37b36524415d.json AWSCLIã ãšãäžæèªèšŒæ
å ±ãä¿åããåå©çšã§ããŸããã Ruby ã® SDK ã䜿ã£ãŠ ã¹ã¯ãªãã ãäœã£ãŠããå Žåã¯åå©çšã§ããã ã¹ã¯ãªãã ãå®è¡ãããã³ã«èªèšŒæ
å ±ãååŸãçŽããªããšãããªãã®ãé£ç¹ã§ããã ããããããã ã·ãªã¢ã©ã€ãº ã§è§£æ±ºã§ããŸãããããã ã·ãªã¢ã©ã€ãº ããïŒ ä»¥äžã®ãããªæãã§ãã role_credentials = Aws :: AssumeRoleCredentials .new( client : sts_client, ...) role_credentials.client.config.retry_backoff = nil role_credentials.client.config.defaults_mode_config_resolver = nil File .open( " role_credentials.yml " , ' w ' ){|h| h.write role_credentials.to_yaml} ãã®ãŸãŸä¿åãããšèªã¿èŸŒãæã«ãšã©ãŒã«ãªãã®ã§ äžéšã®äžèŠãªããŒã¿ãåé€ããŠããä¿åããå¿
èŠããããŸããã aws-sdk-core ã®ããŒãžã§ã³ã«ãã£ãŠåé€ããå¿
èŠã®ããããŒã¿ãå€ããããã§ãããå€ãããŒãžã§ã³ã ãš retry_backoff ã®ã¿åé€ã§å€§äžå€«ã§ããã ææ°ããŒãžã§ã³ã ãš defaults_mode_config_resolver ãåé€ããå¿
èŠããããŸããã åé€ããŠãåäœã«ã¯åé¡ãªãããã§ããã èªèšŒåšãã®æ©èœã¯ã¯ã©ã¹ã«ã㊠ããããã® ã¹ã¯ãªãã ã§ç°¡åã«äœ¿ããããã«ããŠããã®ã§ããã AWSCLIã䜵çšããŠäœ¿ãå Žå èªèšŒæ
å ±ã®ååŸã2åã«ãªã£ãŠããŸãåé¡ããããŸãã AWSCLIã䜵çšããå Žåã®èªèšŒ ãšããããšã§ãAWSCLIã®äžæèªèšŒæ
å ±ãã¡ã€ã«ã Ruby ã§ãäœ¿ãæ¹æ³ãèããŸããã ç°¡åã«æžããšã以äžã®ãããªæãã§ äžæèªèšŒæ
å ±ãã¡ã€ã«( json )ãããŒã¹ã㊠ç°å¢å€æ° ãšããŠèšå®ããã ãã§ãã jqå«ãã ãã©ããã®ãããã¯ããããã awscli_credentials_cache=~/.aws/cli/cache/xxxxx.json export AWS_ACCESS_KEY_ID= $( jq -r ".Credentials.AccessKeyId" < $awscli_credentials_cache) export AWS_SECRET_ACCESS_KEY= $( jq -r ".Credentials.SecretAccessKey" < $awscli_credentials_cache) export AWS_SESSION_TOKEN= $( jq -r ".Credentials.SessionToken" < $awscli_credentials_cache) export AWS_REGION=ap-northeast-1 å®éã«è©ŠããŠã¿ãŸããã $ awscli_credentials_cache=~/.aws/cli/cache/3a9ab49ce67fe5806c5af3d5a378fbbb470561d9.json $ export AWS_ACCESS_KEY_ID= $( jq -r ".Credentials.AccessKeyId" < $awscli_credentials_cache) $ export AWS_SECRET_ACCESS_KEY= $( jq -r ".Credentials.SecretAccessKey" < $awscli_credentials_cache) $ export AWS_SESSION_TOKEN= $( jq -r ".Credentials.SessionToken" < $awscli_credentials_cache) $ export AWS_REGION=ap-northeast-1 $ pry [ 1 ] pry(main) > require 'aws-sdk-ec2' = > true [ 2 ] pry(main) > ec2_client = Aws::EC2::Client.new(); = > #<Aws::EC2::Client> æ°ãã«èªèšŒæ
å ±ãååŸããã«å®è¡ã§ããŸããã ã¹ã¯ãªãã ã¹ã¯ãªãã ã«ãããã®ã¯ãã¡ãã§ãã( mac ã䜿ã£ãŠããã®ã§ãdataãgdateã«ãªã£ãŠããŸã) ã¹ã¯ãªãã(é·ãã®ã§ãæãç³ãã§ãã) $ cat create_set_env.sh #!/bin/bash help () { echo -e " \n --- usage $0 <awd_profile_name> \n " exit } get_jq() { jq -r " $2 " < $awscli_credentials_cache } mk_credential_file() { rm -f ~/.aws/cli/cache/* aws sts get-caller-identity --profile $1 > /dev/null awscli_credentials_cache= $( ls -1tr ~/.aws/cli/cache/* | tail -1 ) rm -f $credential_file echo "export AWS_ACCESS_KEY_ID= $( get_jq .Credentials.AccessKeyId ) " >> $credential_file echo "export AWS_SECRET_ACCESS_KEY= $( get_jq .Credentials.SecretAccessKey ) " >> $credential_file echo "export AWS_SESSION_TOKEN= $( get_jq .Credentials.SessionToken ) " >> $credential_file echo "AWS_Expiration= $( get_jq .Credentials.Expiration ) " >> $credential_file echo "export AWS_REGION=ap-northeast-1" >> $credential_file echo -e " \n --- creation of $credential_file was completed!!" echo -e " please exec fllow command" echo -e " source ./ $credential_file \n " exit } check_expiration_time() { local expiration_time= $( awk -F "=" '$0 ~ /AWS_Expiration/{print $NF}' $credential_file) local expiration_unixtime= $( gdate -d " $expiration_time " "+%s" ) local current_unixtime= $( gdate "+%s" ) local diff_time= $(( expiration_unixtime - current_unixtime - 60 )) [ 0 -lt $diff_time ] && echo ok } [ $# -ne 1 ] && help credential_file=set_env.sh [ ! -f $credential_file ] && mk_credential_file $1 [ " $( check_expiration_time ) " != "ok" ] && mk_credential_file $1 echo -e " \n --- no need to update !!" echo -e " please exec fllow command" echo -e " source ./ $credential_file \n " $ ./create_set_env.sh < awd_profile_name > Enter MFA code for arn:aws:iam:: 123456789012 :mfa/takayama: --- creation of set_env.sh was completed!! please exec fllow command source ./set_env.sh $ source ./set_env.sh $ pry [ 1 ] pry(main) > require 'aws-sdk-ec2' = > true [ 2 ] pry(main) > ec2_client = Aws::EC2::Client.new() = > #<Aws::EC2::Client> æå¹æéã1å以å
ã«åããå Žåã¯èªèšŒæ
å ±ãåååŸããããã«ããŠãããŸãã ããããŒã«äœã£ã ã¹ã¯ãªãã ã§ äžæèªèšŒæ
å ±ã®ãã¡ã€ã«ãå
šæ¶ãããŠããã®ãã€ã±ãŠãªãã§ãããåèã«ããŠã¿ãŠãã ããã ãã®æ¹æ³ã¯ Ruby ã¹ã¯ãªãã 以å€ã§ãã AWS ã® ç°å¢å€æ° ã§èªèšŒæ
å ±ååŸã§ããæ©èœãªã䜿ããŸãã äŸãã° Serverless Framework ãšãã Terraform ãšã (æè¿ è§Šã£ãŠããªãã®ã§ã 確èªã§ããŠãŸããã) å®é å®éã«ã¯ ã¯ã©ã¹ãã¢ãžã¥ãŒã«ãäœæããŠDRYãªæãã§ ã¹ã¯ãªãã ãäœã£ãŠããŸãã ãŸããäŸã㰠以äžã®ãããªæ©èœã§ Ruby ã䜿çšããŠããŸãã CloudFormationã¹ã¿ãã¯äœæã倿Žã»ããäœæã倿Žã»ããã®ç¢ºèª ELBãžã®ã€ã³ã¹ã¿ã¹ã®çµã¿èŸŒã¿ãåãé¢ã ã»ãã¥ãªãã£ã°ã«ãŒããžã®è¿œå æŽæ°çšWebã¢ã㪠åçš®èª¿æ» etc ãã®äžãã2ã€ç޹ä»ããŸãã 倿Žã»ããã®ç¢ºèªæ©èœ CloudFormationã¹ã¿ãã¯ã®å€æŽã»ãã㯠以äžã確èªããŠããé©å¿ããããã«ããŠããŸãã ãã³ãã¬ãŒãã®å·®å ãã©ã¡ãŒã¿ã®å€æŽ ã¿ã°ã®å€æŽ ãªãœãŒã¹ãäœãçŽãããã 以äžãç¢ºèªæã®å
容ã§ãã $ ./scripts/check_change_set.sh Lb-Instance-01.yml === Stack Name: Test-Lb-Instance-01 === Diff Check ================================================================ --- [Info]: Lb-Instance-01.yml Template Difference Exist !!! Instance: Instance: InstanceType: { Type: String } InstanceType: { Type: String } Role: { Type: String } Role: { Type: String } Instance: Instance: Type: AWS::EC2::Instance Type: AWS::EC2::Instance > - { Key: addtag, Value: dummy } - | - | RecordSet: RecordSet: Type: AWS::Route53::RecordSet Type: AWS::Route53::RecordSet === Change-Set Check ================================================================ --- - :logical_resource_id: Instance ------------------------- :resource_type: AWS::EC2::Instance :action: Modify :replacement: Conditional !!!!!!!!!!!!!!!!!!!!!!!!! :details: - :attribute: Tags :name: :change_source: - :attribute: Properties :name: InstanceType :change_source: ParameterReference - :attribute: Properties :name: InstanceType :change_source: DirectModification - :logical_resource_id: RecordSet ------------------------- :resource_type: AWS::Route53::RecordSet :action: Modify :replacement: False :details: - :attribute: Properties :name: ResourceRecords :change_source: ResourceAttribute === Change-Set Params Check ================================================================ NAME | CURRENT | NEW | STATUS -------------|----------|-----------|---------- InstanceType | t3.small | t3.medium | change Role | lb | lb | no change === Change-Set Tags Check ================================================================ NAME | CURRENT | NEW | STATUS -----------|---------------------|---------------------|---------- Name | Test-Lb-Instance-01 | Test-Lb-Instance-01 | no change Role | lb | lb | no change CreateUser | dummy | takayama | change === Validation Check ================================================================ --- [Info]: Lb-Instance-01.yml Validation Check OK === Lint Check ====================================================================== --- [Info]: Lb-Instance-01.yml Lint Check OK è£è¶³ Shell ã¹ã¯ãªãã ãå®è¡ããŠãŸãããè€æ°ã®Shell ã¹ã¯ãªãã ãš Ruby ã¹ã¯ãªãã ãã©ããã³ã°ããŠããŸãã ãã³ãã¬ãŒãã®å·®å㯠差åãšé
ç®åã®ã¿æœåºããŠããã®ã§ãããã¥ããã§ãããä»å㯠- { Key: addtag, Value: dummy } ã®è¡ã ãã远å ã«ãªã£ããšããçµæã§ãã ã»ãã¥ãªãã£ã°ã«ãŒããžã®è¿œå æŽæ°çšWebã¢ã㪠ãã¡ãã¯Webã¢ããªãªã®ã§ããããªã¢ãŒãã¯ãŒã¯ãå§ãŸã£ãæã« ç°¡æçã«ã»ãã¥ãªãã£ã°ã«ãŒããžåã¡ã³ããŒã® IPã¢ãã¬ã¹ ã远å ããããšæã£ãŠäœæããæ©èœã§ãã AWS ã Ruby ã§æäœããããšã«æ
£ããŠããã®ã§ã Rails ã¢ããªã ãããšç°¡åã«äœæããããšãã§ããŸããã (ãã®æ©èœèªäœã¯ ãšããããã§äœæãããã®ã§ãã æè¿ ä»ã®æœçã§ ã»ãŒäžèŠã«ãªã 圹ç®ãçµããŸããã) ã»ãã¥ãªãã£ã°ã«ãŒããžã®è¿œå æŽæ°çšWebã¢ã㪠æåŸã« ä»å㯠Ruby ã® ã¹ã¯ãªãã ã®è©±ãããŸããã Ruby ã® ã¹ã¯ãªãã ã£ãŠ ããŸãæžããŠãã人ãããªãã€ã¡ãŒãžãããã®ã§ããããã£ããæžããããã®ã§ã¯ãªãããšæããŸãã AWS ã§æ
å ±ååŸãããšè€éãªããŒã¿æ§é ã§è¿ã£ãŠããããšãå€ãã®ã§ ã·ãªã¢ã©ã€ãº ãç°¡åã«ã§ãã Ruby ãéžæè¢ã«å
¥ããŠãè¯ãããªãšæããŸããã ãã ã€ã³ãã©ãšã³ãžãã¢ã§ã¯ ããã«æžããŠãã人ãå°ãªããšæãã®ã§ãå¯èªæ§ã«æ°ã䜿ã£ãã ã³ã¡ã³ãã§èª¬æããã£ããæžããã ä»ã®äººã®è¿·æã«ãªããªãããã«ããæ¹ãè¯ãããã ãªãšã¯æããŸãã(èªæã蟌ããŠ) ã©ãªããã®åèã«ãªããã°å¹žãã§ãã ãã¡ãã§ Enigmo Advent Calendar 2022 ã¯ä»¥äžãšãªããŸãã 2023幎ããããããé¡ãããŸãïŒ
ãã®èšäºã¯ Enigmo Advent Calendar 2022 ã®23æ¥ç®ã®èšäºã§ãã ããã«ã¡ã¯ã ãšãã°ã¢ åæŸã§ãã ããŒã¿æŽ»çšæšé²å®€ãšããããŒã ã§ãªãŒããŒããããŠããã ããŠããŸãã ããŒã ã«ã¯ããŒã¿ã¢ããªã¹ãïŒåã瀟å
ã®æ¥åã·ã¹ãã ãéçºããGASãšã³ãžãã¢ïŒåããããŠç§ã®èšïŒåãæå±ããŠããŸãã ç®æ¬¡ ç®æ¬¡ ãšãã°ã¢ãåãå·»ãITç°å¢ AppSheetãšã¯ AppSheetã«ããã¢ããªã®éçº AppSheetéçºã®ãã㌠1. ããŒã¿ãçšæ 2. ããŒã¿ãåã蟌㿠3. ã¢ããªãäœæ 4. ã¢ããªãã«ã¹ã¿ãã€ãº 5. ã¢ããªãå
¬éïŒãããã€ïŒ 6. ã¢ããªãã·ã§ã¢ AppSheet è§Šã£ãŠã¿ãææ³ è¯ãã£ãç¹ ä»åã®æ€èšŒã§ã¯åãããªãã£ãç¹ äžæºã»äžå®ã«æã£ãç¹ æåŸã« ãšãã°ã¢ ãåãå·»ãITç°å¢ ãšãã°ã¢ ã§ã¯æäŸããŠãããµãŒãã¹ã BUYMA ãšããæµ·å€é販ãµã€ãïŒ ECãµã€ã ïŒãšããããšããããæ¥åžžçãªæ¥åã«ãããŠå€çš®å€æ§ãªã·ã¹ãã ãITãµãŒãã¹ãããŒã«ã掻çšããŠããŸãã 䜿çšããŠããã·ã¹ãã ãåé¡ãããšã BUYMA ã®ç®¡çç»é¢ BUYMA ã®æ¥åãè¡ãäžå¿çãªã·ã¹ãã ã§ãã ãã£ãããšèŠä»¶ãè©°ããäžã§ãšã³ãžãã¢ã«ãã£ãŠéçºãããŸãã ã¢ããªã±ãŒã·ã§ã³ãœããïŒããŒã«ïŒ ãœãããŠã§ã¢ã»ãã³ããŒãæäŸããŠããããŒã«ãããªãŒã§äœ¿çšã§ããããŒã« äŸãã°ä»¥äžã®ãããªããŒã«ãããã«ããããŸãã Gmail ã Outlook ãªã©ã®ã¡ãŒã«ãœãã Google Spreadsheetã Excel ãªã©ã® 衚èšç® ãœãã Google SlidesãPower Pointãªã©ã®ãã¬ãŒã³ããŒã·ã§ã³ããŒã« ç§äžž ãCodEditoerãªã©ã® ããã¹ããšãã£ã¿ desknetâs ã ãµã€ããŠãº ãªã©ã® ã°ã«ãŒããŠã§ã¢ Google Analytics ãRTmetricsãªã©ã® ã¢ã¯ã»ã¹è§£æ ããŒã« LookerãTableauãRedashãªã©ã®BIããŒã« ãªã©ããªã©ããªã©ã æè¿ã¯ãã©ãŠã¶äžã§å©çšã§ããããŒã«ãå€ãã§ããã ïŒã¡ãªã¿ã«äžã«ãããããŒã«ãç§ã¯è¬ã«å
šéšäœ¿ã£ãããšãããŸãã幎ã®åãïŒïŒ ãå©ãããŒã« 管çç»é¢ã§ã¯ã«ããŒã§ãããã¢ããªã±ãŒã·ã§ã³ãœããã ãã§ãã«ããŒã§ããªãé åã 人åã§è¡ã£ãŠããç¹°ãè¿ãäœæ¥ãèªååïŒãã¿ã³ã²ãšã€ã§å®è¡ïŒããããŒã«ããè€æ°ã®ã¢ããªã±ãŒã·ã§ã³ãœãããçµã¿åãããŠè¡ã£ãŠããäœæ¥ãçµ±åããããŒã«ãªã©ã 代衚çã®ãã®ãšããŠã¯ Excel ãš VBA ãçµã¿åãããæ¥åå¹çåããŒã«ã ãµãŒãã¹ã®æ¹åãéçšã»ä¿å®ã§å¿ãããšã³ãžãã¢ã«éçºããé¡ãããããšãã§ãããçŸå Žã®ITã«è©³ããã¡ã³ããŒããããã§èª¿ã¹ãªããéçºããããšãå€ããïŒç§ããããŸã§æå±ããŠããäŒæ¥ãäžè¬è«ãšããŠãïŒ ããŒã«ã䜿ãã人åã§è¡ã£ãŠããããšãå€ãããã®æ¥åã¯ãšãŠãçç£æ§ãäœããïŒæ¥æ¬ã® åŽåçç£æ§ ã OECD 37å çåœäž21äœïŒ2020幎床ïŒãšäœè¿·ããŠããïŒã€ã®èŠå ããšãå¯ãã«æã£ãŠããŸããïŒ ãšããããšã§ïŒïŒïŒ ãšãã°ã¢ ã§ããã®æã®ãå©ãããŒã«ã®éçºã«åãå
¥ããŠããŸãã Google Spreadsheet + GASã®ããã«ã Google WorkspaceïŒæ§ G SuiteïŒã Google Cloud( GCP ïŒãšãã£ã Google ãµãŒãã¹ãäžæãããšçµã¿åãããŠãå©ãããŒã«ãéçºããããšãå€ãã§ãã Google ãµãŒãã¹ã掻çšããçç±ãšããŠã¯ã å€ãã®æ©èœïŒãµãŒãã¹ïŒãæã£ãŠããããšïŒäžèšã«èšèŒïŒ ããããå®äŸ¡ã«ãã€çŽ æ©ãïŒãµãŒãã®æ§ç¯ãªã©ãå¿
èŠãªãïŒå©çšã§ããããš ãããŠåæ©èœã Google Apps Scriptã§é£æºããããšã§ããçšåºŠã®ã·ã¹ãã ãçæéã«éçºã§ããããš ãæããããŸãã 䞻㪠Google ãµãŒãã¹ Gmail ïŒã¡ãŒã«ïŒ Google Drive ïŒã¹ãã¬ãŒãžïŒ Google SpreadsheetïŒ è¡šèšç® ïŒ Google ã«ã¬ã³ããŒïŒã¹ã±ãžã¥ãŒã«ç®¡çïŒ Google FormïŒã¢ã³ã±ãŒãïŒ Google MapïŒå°å³ïŒ Google Apps ScriptïŒ ããã°ã©ãã³ã°èšèª ïŒ BigQueryïŒããŒã¿ããŒã¹ïŒDWHïŒïŒ ãã ããããã® Google ãµãŒãã¹ãçµã¿åããããšãã«èª²é¡ã«ãªãã®ãããŒã¿ã®å
¥åã§ãã å€ãã®å Žå㯠Google Spreadsheetã«ããŒã¿ãå
¥åããŸããã Google Spraeadsheetã¯èªç±ãããã®ã§ãè¡ãåã®è¿œå ãåé€ã容æã«åºæ¥ãŠããŸããŸããããã°ã©ã ïŒ Google Apps ScriptïŒã§ã¯ã©ã®åïŒäŸãã°CåïŒã«ã¯äœã®å€ïŒäŸãã°ååIDïŒãå
¥ã£ãŠãããããŒã¿ã¯äœè¡ç®ããå
¥åãããããšãã£ãããšã決ãŸã£ãŠããããšãåæãšããŠäœãããŠããã®ã§ãèªç±ã«ïŒåæã«ïŒè¡ãåã远å ãåé€ããããšãšã©ãŒã«ãªã£ããããŸãã ãã¡ãããã»ã«ã®ä¿è·ïŒå€æŽã§ããªãããã«ããïŒãã·ãŒãã®ä¿è·ãªã©ã§å¯Ÿå¿ã¯åºæ¥ãªãã¯ãããŸããããWebã¢ããªã®ããã«çŸããå
¥åãå¶åŸ¡ããããšãé£ãããæŽã«èšãã°ãå
¥åã®ãã§ãã¯ïŒããªããŒã·ã§ã³ã»ãã§ãã¯ïŒãåºæ¥ããçæ³ã§ãã ãšããããšã§ïŒïŒïŒïŒç®ãã€ããã®ãGoogle AppSheetã å眮ãããšãŠãé·ããªããŸãããã以äžã§ã¯Google AppSheetã«ã€ããŠãã£ãšç޹ä»ããŸãã AppSheetãšã¯ ãã£ãã Wiki ã§èª¿ã¹ãŠã¿ããšã AppSheet is an application that provides a no-code development platform for application software, which allows users to create mobile, tablet , and web applications using data sources like Google Drive , DropBox , Office 365, and other cloud-based spreadsheet and database platforms. The platform can be utilized for a broad set of business use cases including project management, customer relationship management, field inspections, and personalized reporting. ããã Google TranslateïŒç¿»èš³ïŒã§æ¥æ¬èªã«èš³ããšã AppSheet ã¯ãã¢ããªã±ãŒã·ã§ã³ ãœãããŠã§ã¢çšã®ããŒã³ãŒãéçºãã©ãããã©ãŒã ãæäŸããã¢ããªã±ãŒã·ã§ã³ã§ããããã«ããããŠãŒã¶ãŒã¯ã Google ãã©ã€ã ã DropBox ãOffice 365ãããã³ãã®ä»ã® ã¯ã©ãŠã ããŒã¹ã® ã¹ãã¬ããã·ãŒã ããã³ããŒã¿ããŒã¹ ãã©ãããã©ãŒã ãªã©ã®ããŒã¿ ãœãŒã¹ã䜿çšããŠãã¢ãã€ã«ã ã¿ãã¬ãã ãããã³ Web ã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸãããã®ãã©ãããã©ãŒã ã¯ããããžã§ã¯ã管çã顧客é¢ä¿ç®¡çãçŸå Žæ€æ»ãããŒãœãã©ã€ãºãããã¬ããŒããªã©ãå¹
åºãããžãã¹ ãŠãŒã¹ ã±ãŒã¹ã«å©çšã§ããŸãã ã ãããæå³ãããã翻蚳ã«ãªããŸãããïŒåªç§ïŒïŒïŒ èŠçŽãããšã ããŒã³ãŒãã§ã¢ããªãéçºã§ãããã©ãããã©ãŒã ãããŒã³ãŒãããšã¯ãã³ãŒããæžããªããŠè¯ããããã°ã©ãã³ã°ãäžèŠãã£ãŠããšã§ããïŒäžå¿è£è¶³ïŒ å€ãã®ããŒã¿ãœãŒã¹ã«å¯Ÿå¿ïŒ ã¹ãã¬ããã·ãŒã ãããŒã¿ããŒã¹ãªã©ïŒ ãã«ããã©ãããã©ãŒã ïŒã¢ãã€ã«ã ã¿ãã¬ãã ã Webãã©ãŠã¶ ã§äœ¿çšã§ããïŒ ãŸãã AppSheet was acquired by Google in January 2020. ãšããããã«ã2020幎㫠Google ã«è²·åããã Google Cloudã«çµã¿èŸŒãŸããŸããã ãããŒã³ãŒãã§ã¢ããªãéçºããšãã£ãŠããã©ããªã¢ãã«ã§ãäœããèš³ã§ã¯ãªãã§ãããããããããããŒã³ãŒãã§ãããã ã§ã¯å®éã«ã¢ããªãäœããªããAppSheetã§ã® ã¢ããªéçº ã«ã€ããŠèŠãŠãããŸãããã AppSheetã«ããã¢ããªã®éçº ãŸããAppSheetã®éçºã«ã¯AppSheetã®ç»é¢ããã©ãŠã¶ã§éãå¿
èŠããããŸãã ä»åã¯ä»¥äžã®ããŒãžãããç¡æãã©ã€ã¢ã«ãã§è©ŠããŠãããŸãã cloud.google.com AppSheet TOPããŒãž ç¡æãã©ã€ã¢ã«ãªã®ã§åºæ¥ãããšã«å¶éããããŸãã ãŸããç¡æãã©ã€ã¢ã«ãªãã§ã¯ã®èšå®ãå¿
èŠã«ãªããŸãã ãã ããã£ãããšäœ¿çšæã詊ãã«ã¯ååããšæããŸãã AppSheetéçºã®ãã㌠AppSheetã§ã¢ããªãéçºããæµãã¯ä»¥äžã®ãšããã§ãã ããŒã¿ãçšæ ããŒã¿ãåã蟌㿠ã¢ããªãäœæ ã¢ããªãã«ã¹ã¿ãã€ãº ã¢ããªãå
¬éïŒãããã€ïŒ ã¢ããªãã·ã§ã¢ 1. ããŒã¿ãçšæ AppSheetã¯AppSheetèªäœã«ããŒã¿ãä¿æããããã§ã¯ãªãã以äžã®ãããªã¢ããªãããŒã¿ã®ä¿åå
ïŒããŒã¿âãœãŒã¹ïŒãšããŠåäœããŸãã ïŒææçã§ã¯AppSheetèªäœã«ããŒã¿ãä¿æã§ããããã«ãªã£ãããã§ãïŒ Google SheetsïŒ Google ã¹ãã¬ããã·ãŒã ã®æ£åŒåç§°ã§ãããïŒ Microsoft Excel ïŒOffice 365ã Dropbox ãªã© ã¯ã©ãŠã ã«ä¿åãããŠãããã¡ã€ã«ãå¯Ÿè±¡ïŒ ããŒã¿ãŒããŒã¹ïŒ Microsoft SQL Server ã MySQL ã PostgreSQL ãªã©ïŒ ä»å㯠Google Sheetsã«ä»¥äžã®ãããªããŒã¿ãçšæããŠé²ããŠããããšæããŸãã id name category brand sale_start_date url pic ããŒã¿ãçšæ 2. ããŒã¿ãåã蟌㿠AppSheetã®ç»é¢ããçšæããããŒã¿ãåã蟌ã¿ãŸãã ããŒã¿ãAppSheetã«åã蟌㿠Google Sheetsã®ããŒã¿ãAppSheetã«åã蟌ãŸããŸããã ããŒã¿ãåã蟌ãŸããŸããã 3. ã¢ããªãäœæ åã蟌ãã ããŒã¿ãæå®ããŠã¢ããªãäœæããŸãã ã¢ããªãäœæ ããã§ïŒããã ãã§ïŒèªåçã«ã¢ããªãäœæãããŸãã å³ã«åã£ãŠããã®ã ã¹ãã çã®ã¢ããªã®ãã¬ãã¥ãŒç»é¢ã§ãã ã¢ããªã宿 4. ã¢ããªãã«ã¹ã¿ãã€ãº èªåã§äœæãããã¢ããªãã«ã¹ã¿ãã€ãºããŸãã åã蟌ãŸããããŒã¿ã®ããŒã¿åã倿ŽããŸãã sale_start_date ã Data ã«ã url ã Url ã«ã pic ã Image ã«å€æŽããŠãããŸãã é
ç®ã®ã«ã¹ã¿ãã€ãº ãã¬ãã¥ãŒç»é¢ã§ã¯ã sale_start_date ãå¹Žææ¥ã®åœ¢åŒã«ã url ã«å³åŽã«ãªã³ã¯ãã¿ã³ãã pic ãç»åã«å€æŽãããŸããã é
ç®ã®ããŒã¿æ¹ãå€æŽ id ã® EDITABLE ã®ãã§ãã¯ãå€ããŠå€æŽãåºæ¥ãªãããŸãã idã倿Žäžå¯ã« 5. ã¢ããªãå
¬éïŒãããã€ïŒ ã«ã¹ã¿ãã€ãºããã¢ããªãå
¬éïŒãããã€ïŒãã€ãŸãå©çšã§ããããã«ããŸãã Not Deployed ãããã€ã§ãããããã§ãã¯ããŠããŸãã ããã§ãšã©ãŒãã§ãããšã©ãŒãä¿®æ£ããŠãããŸãã ç¡æãã©ã€ã¢ã«ã§ã¯ãå©çšå¶éãããã®ã§ãããã€ãã®èšå®ã倿Žããå¿
èŠããããŸãã ãããã€ãã§ã㯠6. ã¢ããªãã·ã§ã¢ ãããã€ãç¡äºã«å®äºãããšãå©çšããããã®URLãååŸã§ããŸãã LINK Editor Link ãã®ã¢ããªãä¿®æ£ããç»é¢ãžã®URLã§ãã Browser Link Webãã©ãŠã¶ ã§å©çšãããšãã®URLã§ãã Install Link ã¹ãã ã§å©çšãããšãã®URLã§ãã ã¹ãã ã« Install Link ã転éããŠã¯ãªãã¯ãããšãæåïŒãŸã ãAppSheetãã¢ããªã ã¹ãã ã«ã€ã³ã¹ããŒã«ããŠããªãå ŽåïŒã¯ãã¹ãã¢ã«é·ç§»ããã®ã§ãAppSheetãã¢ããªãã€ã³ã¹ããŒã«ããŸãã ã¡ãããš ã¹ãã ã§ã衚瀺ãããŸããã ã¹ãã ç»é¢ ã¹ãã ã§ããŒã¿ã倿ŽããããããŒã¿ãœãŒã¹ã® ã¹ãã¬ããã·ãŒã ã®ããŒã¿ãæ£ãã倿ŽãããŠããŸããã AppSheet è§Šã£ãŠã¿ãææ³ ä»åããã£ãšïŒçŽïŒæéãããïŒAppSheetã䜿ã£ãŠã¿ãŸããã ãã®äžã§æããè¯ãç¹ãšäžæºã»äžå®ã«æã£ãç¹ããŸãä»åã®æ€èšŒã§ã¯åãããªãã£ãç¹ã以äžã«ãããŸãã è¯ãã£ãç¹ ã¹ãã¬ããã·ãŒã ã«ããŒã¿ãçšæããŠèªã¿èŸŒãã ãã§ããŒã¿å®çŸ©ãèªåã§äœæããã ããŒãã«å®çŸ©ãïŒããèšå®ããå¿
èŠããªãã®ã§ããã®æéãçãã åã蟌ãã ããŒã¿ã®å㯠Image ã Url ãªã©å€ããçšæãããŠããããŸã倿Žã容æ ããŒã¿ã®åã«å¿ããŠè¡šç€ºãèªåã§å€ããã®ã§ãUIã®äœæãå¿
èŠãªã ããŒã¿ã®åç
§ã倿Žã远å ã®æ©èœãèªåã§äœæãããã®ã§ãããã䟿å©ã ä»åã®æ€èšŒã§ã¯åãããªãã£ãç¹ ããŒã¿ã®å®çŸ©ãããŒã¿ã®è¡šç€ºã«ã€ããŠã¯ãå€ãã®ãã©ã¡ãŒã¿ïŒèšå®ã§ããé
ç®ïŒããã£ãããã©ã®ãããªèšå®ãã§ããã®ããŸã§ã¯åãããªãã£ãã ãããã€ã®èšå®ãå€ãã®èšå®é
ç®ããã£ãããã©ã®ãããªã«ã¹ã¿ãã€ãºãå¯èœãªã®ãã¯åãããªãã£ãã äžæºã»äžå®ã«æã£ãç¹ AppSheet㯠Google Workspaceã®Enterpriseãã©ã³ã§å©çšãã§ããããBusinessãã©ã³ïŒBusiness StarterãBusiness StandardãBusiness PlusïŒã§ã¯å©çšã§ããªãã Enterpriseãã©ã³ãå¥çŽããŠããããAppSheetãå©çšããå Žåã¯ãAppSheetåå¥ã®å¥çŽãå¿
èŠãšãªãã MOST POPULAR ã®Coreãã©ã³ã§ $10 USD/ user / month ãšãªããªãã®ã倿®µã AppSheetã®ç»é¢ãããã¥ã¡ã³ããè±èªã ããã¥ã¡ã³ã㯠Google Translateãå©çšããã°ããçšåºŠã¯è§£æ±ºãããããããããšãã«å°ããããªæ°ãããã Google ãAppSheetã«ã©ããŸã§ã³ãããããŠãããäžå®ã 2021幎ã«ãµãŒãã¹çµäºããApp Makerã®ãããªæ«è·¯ã蟿ããªããäžå®ã æåŸã« ã§ã¯ãAppSheetã¯ã Google ãµãŒãã¹ãçµã¿åããããšãã«èª²é¡ã«ãªãã®ãããŒã¿ã®å
¥åãã解決ã§ããã®ãïŒ æ£çŽãåºæ¥ããšæããŸãã AppSheetã§ã¢ããªãäœæããŠããã®äœ¿ãæ¹ãå«ããæ¥åããã¥ã¢ã«ãçšæããã°æ¥åã¯åããšæããŸãã ã¢ããªãéã㊠ã¹ãã¬ããã·ãŒã ã®ããŒã¿ãè§ŠãããïŒå€æŽããïŒããšã§ãããŒã¿ã®ä¿è·ãåºæ¥ãã®ã§ããªããã¹ã«ããããŒã¿ã®æ¶å€±ãªã©ãé²ãããšæããŸãã ããã¯ã¯ã©ã€ã»ã³ã¹ã§ãããå€ãã®äŒæ¥ãå¥çŽããŠããïŒã§ãããïŒBusinessãã©ã³ã§å©çšã§ããããã«ããŠã»ããã ããããã°ããå€ãã®ãŠãŒã¶ãå¢ããŠãããã¥ã¢ã«ã®æ¥æ¬èªåãªã©ãé²ãã®ã§ã¯ãªãããšæããŸããã 以äžãèªãã§ããã ãããããšãããããŸããã æ ªåŒäŒç€Ÿ ãšãã°ã¢ ãã¹ãŠã®æ±äººäžèЧ hrmos.co
ããã«ã¡ã¯ã ãšãã°ã¢ ã§ããŒã¿ã¢ããªã¹ããããŠããäºåã§ãã ãã®èšäºã¯ Enigmo Advent Calendar 2022 ã®22æ¥ç®ã®èšäºã§ãã æ¬èšäºã®æŠèŠ ãã®èšäºã¯ãããŒã¿åææ¡ä»¶ã®é²ãæ¹ã«é¢ããŠã課é¡ã®éžå®ãããŽãŒã«ã®å
·äœåãåæå®äºã«è³ããŸã§ãç§ãä»å¹Žå®éã«å¯Ÿå¿ããäºäŸã§ã©ã®ãããªããšã«æ°ãã€ããªãã察å¿ããã®ããæ¯ãè¿ã£ãŠã¿ãããšãè¶£æšãšããèšäºã«ãªããŸãã ããŒã¿åæã®æ¡ä»¶ã¯å¿
ãããå
·äœçãªç®çããŽãŒã«ãããæã°ãããšã¯éããŸããã æŒ ç¶ãšããèª²é¡æèããå§ãŸãã ãã¢ãª ã³ã°ãéããŠå
·äœçãªç®çããŽãŒã«ãæç¢ºåããŠããããã»ã¹ãå
¥ãããšããããŸãã ããšã«ãããšãåãããç®çããŽãŒã«ãæç¢ºåãããŠããæ¡ä»¶ã®æ¹ãã¬ã¢ã±ãŒã¹ãããããŸããã ãã®åæä»¥å€ã®ããã»ã¹ã®é²ãæ¹ã«ã€ããŠãåæãã®ãã®ãšåçããããã¯ãã以äžã«é£ãããšæããããšãå€ã
ãããŸãã ããããåæã®ææ³ã ã¢ã«ãŽãªãºã ã®è§£èª¬èšäºãªã©ã¯ããèŠãããäžæ¹ãããã»ã¹ã®é²ãæ¹ã«ã€ããŠã¯ãªããªãå
·äœçãªå¯Ÿå¿äºäŸãšãããã®ãç¥ãæ©äŒãå°ãªãå°è±¡ããããŸãã ããã»ã¹ã® ãã¬ãŒã ã¯ãŒã¯ ãšããŠCRISP-DMãšãã£ãæŠå¿µã¯ååšããŠãããããèªäœã¯éåžžã«æçšããšæãã®ã§ãããæŠå¿µã§ãããã解説ãèªããšããæœè±¡çãªå°è±¡ããããŸãã ããã¯èŽãæ¹ãªããšããããããšã¯æããŸããŠããããã£ãããã»ã¹ã®é²ãæ¹ã¯åå¥ç¶æ³ã«å¿ããŠæè»ã«å¯Ÿå¿ãæ±ããããå Žåãå€ãããããããã°ãããšããéã®åŒŸã¯ãªããšããããšããªãšæã£ãŠããŸãã ãã ããã¯ããå
·äœçãªäºäŸã§ããã»ã¹ã®é²ãæ¹ã«ã€ããŠèããŠã¿ãããšãéèŠã§ãèªåã®äžã§ç³§ã«ããŠãããããèªåã®ãã£ãŠããããŒã¿åæã®ããã»ã¹ãæ¯ãè¿ã£ãŠã¿ãããšãããããã®ãããªåœ¢ã§ã¢ãŠããããããŠã¿ãããšã¯ãäžå®ã®æå³ãããã®ã§ã¯ãªãããšæããŸãã®ã§ãã®æ©äŒã«æ¯ãè¿ããããŠã¿ãããšæããŸãã ãã®èšäºã§ã¯ããŒã¿åæãã©ã®ãããªããã»ã¹ãçµãŠå®è¡ããŠãã£ããããšããããŒããã¡ã€ã³ã«ãªããŸãã å
·äœçãªåæææ³ãªã©ã®èª¬æã¯èšèŒããŠãããŸããã®ã§ããäºæ¿ãã ããã 解決ããã課é¡ã確èªãã ãŸãåãã«å®æœããããšã¯ãããããã©ã®ãããªèª²é¡ã解決ããããšãæçã§ãããã確èªããããšã§ããã ç¶æ³ã軜ã説æãããšãç§ã¯æšå¹Ž ãšãã°ã¢ ã«ãžã§ã€ã³ããã°ãããšããããšããããæ¥åã課é¡ã®çè§£ã¯ãŸã ãŸã æµ
ãç¶æ
ã§ããã å察ã«ãä»åèªåãæ
åœããããŒã ã«ã¡ã€ã³ã§ããŒã¿ã¢ããªã¹ãã ã¢ãµã€ ã³ãããã®ãèªåãåããŠãšããããšããããããžãã¹åŽã§ãããŒã¿åæã§ã©ã®ãããªããšãåºæ¥ãã®ããããããã€ã¡ãŒãžãæŒ ç¶ãšããŠããã§ããããšãæã£ãŠããŸããã ãã®ããããŸãã¯ãã£ãã°ããã«éè«ãšããåç®ã§ãåããŒã ã¡ã³ããŒã« ãã¢ãª ã³ã°ããããŠããããŸããã ãã®ææ°ãä»ããã®ã¯ããŒã¿åæãšããããšã«ãã ããããæ®æ®µã©ã®ãããªæ¥åãè¡ã£ãŠããŠãã¡ã€ã³ã§å¯Ÿå¿ããŠããããšã¯ã©ã®ãããªããšããå°ã£ãŠããããšã¯äœãããšããçžæã®æ¥åçè§£ã«éäžããããšã§ãã ããã¯ãã€ã¡ãŒãžãæŒ ç¶ãšããŠããäžã§ããŒã¿åæã®è©±ã«å¯ããŠããŸããšãæ¬è³ªçãªèª²é¡ãåºã¥ããã®ã§ã¯ãªãããšæã£ãŠã®ããšã§ã話ãçºæ£ããŠãããã®ã§ãŸãã¯èªåã®çè§£ãé«ããããšæã£ãŠã®ããšã§ããã äžäººã²ãšãåããæéã¯çããã®ã§ããã®ã§ãå®å
šã«çè§£ãã§ãããšãããã®ã§ã¯ãªãã£ãã§ãããããã§ããæ®æ®µããŒã ã¡ã³ããŒãå°ã£ãŠãã課é¡ãããçšåºŠææ¡ããããšãã§ããŸããã å
šãŠã®èª²é¡ã«çæããããšã¯åºæ¥ãªãã®ã§ãéè«ã®åŸã§èŠããŠãã課é¡ã«å¯ŸããŠããŒã¿åæã§ãµããŒãåºæ¥ãããªããšãçŸ
åããããžãã¹ãµã€ãåŽã®éšé·ãšåªå
床ã®ç¢ºèªãè¡ããšããäœæ¥ãè¡ããŸããã ã¡ãªã¿ã«ãã€ã¡ãŒãžãšã㊠ãã¢ãª ã³ã°ããçµæã以äžã®ãããªè¡šã«ãŸãšããŠäŒè©±ãè¡ããŸããã èª²é¡ ãã¢ãª ã³ã°åŸã®ãŸãšãã·ãŒãïŒã€ã¡ãŒãžïŒ ãã®ããã»ã¹ãçµãŠããã€ã察å¿ããã¹ãããŒããçµã蟌ã¿ã次㮠ãŠãŒã¹ã±ãŒã¹ ã®å
·äœåã«é²ãããšãšãªããŸããã ãŠãŒã¹ã±ãŒã¹ ãå
·äœåãã 察å¿ããããŒãã¯æ±ºãŸããŸããããå
·äœæ§ã«æ¬ ããéšåããããŸããã®ã§ãããžãã¹ã® ãŠãŒã¹ã±ãŒã¹ ãå
·äœåããŠãããã§ãŒãºã«å
¥ããŸãã â»å¯Ÿå¿ããããŒãã¯ããã€ããããŸãããããã§ã¯ãéèŠäºæž¬ã«ãã売ãçååã®åºå匷åãã®ããŒããäŸã«èšèŒããŸãã ããã§ã¯ãå®éã«ããžãã¹ã®å¯Ÿå¿ãããããŒã ã¡ã³ããŒãšé±æ¬¡ã® MTG ã§å
·äœçãªå
容ãããåãããŠãããŸããã ããžãã¹ã§ããããããšãšããŒã¿åæã®ã¢ãŠããããã«éœéœ¬ãçããŠããŸããšãæçšãªåæãåºæ¥ãªããªã£ãŠããŸããŸãã®ã§ãããã¯ããªãéèŠãªãã€ã³ãã§ã念å
¥ãã«çްããèªèåãããããŠããããšãèã«ãªããŸãã äžã€äžã€è©³çŽ°ã«æžãããšã¯ããŸããããäŸãšããŠå
·äœçã«ç¢ºèªããé
ç®ãçŸ
åãããšã éèŠäºæž¬ã®ããŒã¿ãã©ã®ããã«æŽ»çšãããïŒ å¯Ÿè±¡ãšãããã«ããŽãªããã©ã³ãã¯ã©ããïŒ ååã¯ã©ã®çšåºŠã®ç²åºŠã§ç¢ºèªããããïŒïŒã«ããŽãªããã©ã³ããSKUãªã©ïŒ äºæž¬ãè¡ãããæéã¯ãã€ãããã€ãŸã§ãïŒ äžåããã®å¯Ÿå¿ãïŒå®åžžçã«ãããããïŒ ã¹ã±ãžã¥ãŒã«æ åæçµæã®ã¢ãŠããããã€ã¡ãŒãž ãªã©ã®èŠçŽ ããããŸãã ãããã¯äžã€ãã€ãããã«æ±ºãŸã£ãŠãã£ãããã§ã¯ãªããäœåºŠãäŒè©±ã®è¡ãæ¥ãç¹°ãè¿ããåŸã
ã«ãäºãã®èªèãããåãããŠããæµãã«ãªããŸããã ããã§èªåãæ°ãä»ããããšãšããŠã¯ãæ¥åçè§£ãæµ
ããªãã«ããçšåºŠã®ä»®èª¬ããã£ãŠ MTG ã«èšãããã«ããããšã§ãã äžäŸãšããŠãæåãèªåã®äžã§éèŠäºæž¬ã® ãŠãŒã¹ã±ãŒã¹ ã¯ä»¥äžã®ãããªæ³å®ãããŠããŸããã æ¥æ¬¡ã§ç¢ºèªãã äºæž¬æ¥ãã30æ¥çšåºŠå
ã®äºæž¬ãã§ãã éèŠäºæž¬ãšåšåº«éïŒåºåååæ°ïŒãæ¯èŒããŠãäŸçµŠäžè¶³ã«ãªããããªååãããã¯ã¢ããããŠåºåä¿é²ïŒâ»ïŒãã â» BUYMA ã¯ååã®åºåããŠãŒã¶ãŒã«ããŠããã ãCtoCã®ãµãŒãã¹ã§ãã®ã§ã BUYMA ã§ååã ä»å
¥ ããŠåºåãããšããããšã¯åºæ¬çã«ãªããPSããïŒåºåè
ïŒã«åºååéãè¡ããšããã¢ã¯ã·ã§ã³ããšããŸãã ãããã話ãããäžã§ãŸãšãŸã£ãŠãã£ã ãŠãŒã¹ã±ãŒã¹ ã¯ä»¥äžã®ãããªãã®ã§ããã å£ç¯ãã®ã®ååã® ä»å
¥ ãææãçã£ãŠãã¡ãŒã«ã§åºåä¿é²ãè¡ããã ç¹ã«äŒè©±ãããŠããææïŒ6ææ«ïœ7æåæ¬ïŒã¯ãã¢ãŠã¿ãŒã® ä»å
¥ ãã8æããããå§ãŸãã®ã§ã8æã«äžåºŠåºåä¿é²ã¡ãŒã«ãéããååãèŠãããã§9æã«å床ã¡ãŒã«ãéãããã ã¢ãŠã¿ãŒã®å£²ããææã§ãã9æïœç¿å¹Ž1æãŸã§ã®éèŠïŒã©ã®ãã©ã³ãã¢ãã«ãç¹ã«å£²ããã®ãïŒïŒãç¥ãããã å°æ¥çã«ã¯ãå£ç¯ã«å¿ããã«ããŽãªã®éèŠã宿çã«ååŸããŠãåºåä¿é²ã¡ãŒã«ãéããããã«ãããã æ¥æ¬¡ã§ã®ç¢ºèªãäºæž¬æéã30æ¥çšåºŠãšããç§ã®æ³å®ã¯ééã£ãŠããããã§ãããããèªäœã¯åé¡ã§ã¯ãªããããããã€ã¡ãŒãžã§åé¡ããªããïŒãããåãããªãã®ã ãã©ããªããïŒãšäžã€ãã€ç¢ºèªãé²ããŠãã£ãããšã§ã ãŠãŒã¹ã±ãŒã¹ ã®ã€ã¡ãŒãžã®éœéœ¬ããªããªã£ãŠãããŸããã åæãŽãŒã«ã®èšèš ãããŸã§ããžãã¹ã®ã€ã¡ãŒãžãæç¢ºã«ãªããšãåæãŽãŒã«ã¯å€§åèšèšãããããªãããšæããŸãã ä»åã®å Žåã¯ã éèŠäºæž¬ãæ¥åå©çšå¯èœãªã¬ãã«ã®ç²ŸåºŠã§äºæž¬å¯èœãïŒãšããæ€èšŒçµæ 仿ã®éèŠäºæž¬çµæ ãšããäºã€ã®ã¢ãŠãããããå¿
èŠã«ãªããŸãã äžã€ç®ã«é¢ããŠãããŒã¿ãµã€ãšã³ã¹ã«é¢ãã£ãããšã®ããæ¹ãªããåç¥ã ãšæããŸãããäºæž¬ã¿ã¹ã¯ã¯ããŒã¿ã®è³ªãªã©ã«ãã£ãŠå¿
ãããããŸããããšã¯éããªããšãããªã¹ã¯ããããŸãã ãã®ãããä»åãäœæããã¢ãã«ã®ç²ŸåºŠã劥åœã§ãããåŠãïŒãšããæ€èšŒãè¡ã£ãããã§ãåé¡ããªããã°äºã€ç®ã®ã¢ãŠãããããåºããšããã¹ããããèžãå¿
èŠããããŸããã ãã®ãªã¹ã¯ã«ã€ããŠããžãã¹ãµã€ãã«ãçè§£ãããŠããã£ãããã§ãææªããŸããããªãã£ãå Žåãããžãã¹ãµã€ãã§ããçšåºŠå£²ãçã®ååã¯ãã¬ããžãšããŠæŒãããŠããããšããã®ãã¬ããžã ãã§ãåºåä¿é²ã¡ãŒã«ã®äœæã»é
ä¿¡ã«ã¯æ¯éããªãããšã®ç¢ºèªã¯ããŠããŸããã ããå°ã现ãã話ããããšã人ã®ãã¬ããžã ãã§ã¯éçãããã ãããšããåæã§ããã®éèŠäºæž¬ã®çµæãåãå
¥ããããšã§ãããæçšãªåºåä¿é²ãè¡ãããšããžãã¹ãµã€ããæããããšãã宿§ç芳ç¹ã®æ€èšŒãããããŠç¢ºèªããå¿
èŠããããŸããã 宿§ç芳ç¹ã¯ã¢ãŠããããçµæãèŠãŠãããããšã§å€æãããšããŠã å®é çã«éèŠäºæž¬ãæ¥åå©çšå¯èœãªã¬ãã«ã®ç²ŸåºŠãšã¯ã©ããããã®ãïŒãšããå®çŸ©ãããå¿
èŠããããŸããã ããã§ã¯ ãŠãŒã¹ã±ãŒã¹ ãèžãŸãã ã¢ãŠã¿ãŒã®ãã©ã³ãã¢ãã«ã«ãããŠã売äžä»¶æ°äžäœ100ä»¶ãäºæž¬ã§ããããš ãã¡ã€ã³ã®æ€èšŒèгç¹ãšããŸããã ãŸããããçšåºŠåå¹Žã«æ¯ã¹ãŠäŒžã³ããåŠããšããèŠç¹ãå«ãŸãããšãããšããæèŠãããã坿¬¡çã§ã¯ãããŸããã å幎æ¯100%ã120%ã150%ãçšåºŠã®ç²åºŠã§äŒžé·çã®äºæž¬ãå¯èœãïŒ ãšããç¹ãæ€èšŒããããšãšããŸããã ãããã®æ€èšŒèгç¹ã«ã€ããŠãå®éã«æšå¹ŽåºŠã®ããŒã¿ã§ã©ã®ãããªçµæã«ãªãããæ€èšŒããããšãšããŸããã éèŠäºæž¬ã¿ã¹ã¯ã§ã¯ããæéã«å£²ããååä»¶æ°ãäºæž¬ããŸãããä»åã®ç®çã¯å£²ããããªååãããã¯ã¢ããããŠåºåä¿é²ãè¡ããšãããã®ã§ãã®ã§ãå¿
èŠãªåšåº«æ°ã®èæ
®ãªã©ã¯äžèŠã§ããã売äžä»¶æ°ã®äºæž¬ç²ŸåºŠã¯ïŒå
šãèŠãªããšããããšã¯ãªãã§ãããïŒéèŠèŠããªãããšãããžãã¹ãµã€ããšåæããŸããã ããäœè«ã§ãããã¢ãã«ã®ç²ŸåºŠããããããšããã«ã¯æ€èšŒæéãçãã£ãããšãååŸã§ããããŒã¿ãéãããããšããã売äžä»¶æ°ã®äºæž¬ç²ŸåºŠã«ã€ããŠã¯äžå®ããã£ãã®ã§ãããã§ããŒãã«ãäžããããããšã¯å€§åãããããããã®åŸã®çµæãèŠãŠãæåŸ
å€ã³ã³ ãããŒã« ã¯å€§äºã ãªãšæãããšããã§ããã çµæ åæã®ãŽãŒã«ãåæåºæ¥ãããæé©ãªäºæž¬ãåºããã¢ãã«ã®äœæãç®æãã ã¢ã«ãŽãªãºã ããã©ã¡ãŒã¿ã®å€æŽãããŒã¿éïŒæéãç¹åŸŽéïŒã®å¢æžãªã©ãæéã®èš±ãç¯å²ã§è©ŠããŸããã ã¡ãªã¿ã«ãããŒã¹ã©ã€ã³ãšããŠåçŽãªçŽè¿1ã¶æã®å£²äžä»¶æ°ã®æšå¹Žæ¯ããã®ãŸãŸäºæž¬æéã«ãåœãŠã¯ããããšããã«ãŒã«ããŒã¹ã®ææ³ã詊ãããããŠããŸãïŒæå€ãšç²ŸåºŠã¯æªããªãã£ããããŸããïŒã æçµçãªçµæãšããŠã¯ãç¶æ
空éã¢ãã«ã䜿çšããäºæž¬ããã£ãšã粟床ãé«ãã売äžäžäœ100ä»¶ã«å
¥ããã©ã³ãã¢ãã«ã®ãã¡80ä»¶ã®ãã©ã³ãã¢ãã«ãäºæž¬ããããšãåºæ¥ãŠããŸããã 䌞é·çã®äºæž¬ã¯çްããèŠããšåŸ®åŠãªéšåããããŸãããã倧éæã«æšå¹Žãã䌞ã³ãããåŠãçšåºŠã®äºæž¬ã¯æªããªããããã¯å¯æ¬¡çãªæ€èšŒèгç¹ã§ããããã蚱容ãšããŸããã ãªãã売äžä»¶æ°ã®äºæž¬ç²ŸåºŠããã¡ããã¡ããªäºæž¬çµæã§ãåé¡ãªã®ã§ç¢ºèªããããšãããäºæž¬çµæãæãæéäžã®é±æ¬¡å£²äžä»¶æ°ãšå®çžŸã®æ¯èŒçµæã§ã¯ã倧éæã«ç§ïœå¬ã«ãããŠå£²äžä»¶æ°ã䌞ã³ãŠããäºæž¬ã°ã©ããäœæåºæ¥ãŠããïŒäžèšã°ã©ãåç
§ïŒãããžãã¹ãµã€ãã®å®æ§è©äŸ¡ãèžãŸããŠç·åçã«æ¥åå©çšå¯èœã§ãããšã®å€æã«è³ããŸããã ãããã©ã³ãã¢ãã«ã®å®çžŸïŒéç·ïŒãšäºæž¬çµæïŒãªã¬ã³ãžç·ïŒ ãŸãšã ç§ãä»å¹ŽåºŠå¯Ÿå¿ããŠããéèŠäºæž¬ã¿ã¹ã¯ã®äŒç»ã®å§ãŸãïœäºæž¬ã¢ãã«ã®æ€èšŒãŸã§ãç°¡åã«ã§ããæ¯ãè¿ã£ãŠããŸããã ãã®åŸãããžãã¹ãµã€ãã«ä»æã®éèŠäºæž¬çµæãå
±æãåºåä¿é²ã¡ãŒã«ãé
ä¿¡ããçµæãé
ä¿¡åŸã«å¯Ÿè±¡ååã®åºåæ°ã¯å¢å ããPSããããã奜æçãªåé¿ãããã ãããšã®ãã£ãŒãããã¯ãããã ããŠãããŸãã æ¯ãè¿ã£ãŠã¿ãŠãæ¹ã㊠ãã£ã¬ã¯ã·ã§ã³ ãã³ãã¥ãã±ãŒã·ã§ã³ã®å€§åããæããããšãšãªããŸããã 倧ããªéœéœ¬ããªãããŸããããããåæã®çµæãæŸçœ®ãããããšããªããããžãã¹ãµã€ãã®ã¢ã¯ã·ã§ã³ã«ç¹ãã£ãã®ã¯ãæéã¯ããããªãããïŒãããããããïŒïŒçžäºçè§£ãé²ãé©åãªåæãè¡ããããã§ã¯ãªãããšèããŠããŸãã 现ããã¯æžããŠããŸããããä»åæããªãããããžã§ã¯ããããžã¡ã³ãã®ç¥èãªã©ãèŠæã§æèããªããæ¡ä»¶ãé²ããŠãããŸããã ããŒã¿åæã®ææ³ã ã¢ã«ãŽãªãºã ãªã©ã®å匷ã¯ãã¡ããéèŠã§ãããšæãã€ã€ãåæã«ãããžã§ã¯ããããžã¡ã³ããCRISP-DMãªã©ãããžã§ã¯ããåã«é²ããããã®ç¥èãããŒã¿ã¢ããªã¹ããšããŠç£šããŠãããããšæã1幎ã§ããã ä»åã®èšäºã¯ä»¥äžã«ãªããŸãã æåŸãŸã§èªãã§ããã ããããããšãããããŸããã ææ¥ã®èšäºã®æ
åœã¯ããŒã¿ã¢ããªã¹ãããŒã ãããŒãžã£ãŒã®åæŸããã§ãããæ¥œãã¿ã«ã æ ªåŒäŒç€Ÿ ãšãã°ã¢ ãã¹ãŠã®æ±äººäžèЧ hrmos.co
ããã«ã¡ã¯ãããŒã¿ãšã³ãžãã¢ã®è°·å
ã§ãã ãã®èšäºã¯ Enigmo Advent Calendar 2022 ã®21æ¥ç®ã®èšäºã§ãã ç®æ¬¡ ã¯ããã« ã©ãããŠããŒã¿åºç€ãæé©åããå¿
èŠãããã®ïŒ ã©ããããæ¹åã§ããã®ïŒ çŸç¶ã®ããŒã¿åºç€ã®ãããã äž»èŠãªBUYMAåºå¹¹ããŒã¿ã®ææ°ãã¥ãŒã«çç®ããŠã¿ã ææ°ãã¥ãŒãã©ã倿Žããã®ïŒ ã·ã¹ãã æŠèŠãšããŠã¯ã©ããªæãïŒ ãã®æ¹éã§æã£ãããš BQå±¥æŽããŒãã«ã®äœææ¹éã ãã© æ¬åœã«ãã®æ¹æ³ã§æ¹åããã®ïŒ éçšä¿å®ããäžã§æ°ã«ãªã£ãŠããããš èŠèŸŒã¿å¹æã¯ã©ããªã®ïŒ å®è£
ããäžã§æèãããšãã BQå±¥æŽããŒãã«äœæåæãšãªãDAGäŸåé¢ä¿ æ¬çªããŒã¿ã䜿ã£ãç¢ºèªæéãã§ããã ãé·ãã«ãšãã ããŒã¿å質æ
ä¿ã¯ã©ãããã£ã㪠ä»åã¯èŠéã£ãããŒã¿åè³ªå¯Ÿå¿ æ¢åã®æåå®è¡ã¹ã¯ãªãããAirflowã«ç§»æ€ããããšæã£ãã ãããããªãªãŒã¹åŸã®è©±ãããã 广ã¯ã©ãã ã£ãã®ïŒ BQã¯ãšãªã³ã¹ããšãã®ã¯ãšãªæ°ãææ¬¡åäœã§æ¯èŒããŠã¿ã(課é察象ã®ã¿) å¹ææž¬å®ããã«ããã£ãŠ BQã¯ãšãªå¹³åå®è¡æéãšåŠçéãææ¬¡åäœã§æ¯èŒããŠã¿ã(課é察象ã®ã¿) ãšããLookerããã·ã¥ããŒãå
éšã®ã¯ãšãªå®è¡æéãæ¥æ¬¡ã§èŠãŠã¿ã éå»ã®ãšããæç¹ã®ããŒã¿ãé¡ã£ãŠã¿ã ãããªæãã®ã¯ãšãªã㪠ã¿ã€ã ãªãŒãããŠæã£ãããš Lookeräžã§ãexploreãäœæããŠã¿ã€ã ãªãŒãããŠã¿ã ææ æåŸã« ã¯ããã« çããã©ã®ããã«ãéããã§ããããã ç§ã¯æšå¹Žã«ç«ã¡ããã®å¯æãã«ç®èŠããŠããŸãããªã¢ãŒãã¯ãŒã¯äžãè¿ãã§æç«ã«èŠå®ãããçæŽ»ãéãããŠãããŸãã ä»å¹Žãããæ€å®åçŽã«åæ Œããæç«ãšä»²è¯ããªããæ°ãããŸãð± ããŠãããŒã¿åºç€ã®éçºéçšä¿å®ãBIäžã§ã®ããŒã¿æŽåãªã©ã察å¿ãããŠãŸããŠã ä»å㯠"ããŒã¿åºç€ã®åŠçæé©åã«ããBigQueryã³ã¹ãåæž" ã®è©±ããããŠããã ããããšæããŸãã ã©ãããŠããŒã¿åºç€ãæé©åããå¿
èŠãããã®ïŒ ãšãã°ã¢ ã¯å
šç€Ÿçã«ããŒã¿ã掻çšããæåã匷ãã誰ã§ãããŒã¿æŽ»çšãããããããã«æ§ã
ãªããŒã¿ãBigQuery(以äžãBQ)ã«èªåéçŽããŠãããŸãã èŠæš¡ã§ãããšããŒã¿åºç€äžã®ã¯ãšãªã¹ãã£ã³é㯠ãã¿ãã€ã [PB]èŠæš¡/æã§ããã åå¹Žåææ¯ çŽ300%ã§ã®å¢å åŸåã«ãããŸãã ããããããŒã¿æŽ»çšãé²ãã«ã€ããŠäžèšã®èª²é¡ãæããŠããŸããã æšä»ã®åå®äºæ
ãéãªããBQã¯ãšãªã³ã¹ãã倧å¹
ã«å¢å åŸåã«ãã ããŒã¿åç
§ãé
ããã·ãŒã ã¬ã¹ã«åæãããªã«ããŠã³ããã¥ãã (BIã ã¢ããã㯠ã¯ãšãª) æèã®åŠšãã«ã€ãªãã£ãŠããŸããåææ©äŒã®æå€±ã«ã€ãªãã£ãŠãããšæãã 飿ºå
ã§å±¥æŽãæ®ã£ãŠããªãããŒãã«ã®å Žåãè€æ°ã®ããŒãã«ãçšããéå»ã®ãšããæç¹ã®ããŒã¿ãé¡ãã«ãã ããã«äžèšã®çŸç¶ããããããŒã¿åºç€ã®æé©åãé²ããããšæããŸããã åºå¹¹ããŒã¿ã§ãæ°åäžãæ°åã¬ã³ãŒãããããŒãã«ãè€æ°ååšãã çŸç¶ã®ä»çµã¿ã§ã¯æéçµéãšå
±ã«BQã¯ãšãªã¹ãã£ã³éãå¢å ããŠããŸã ã©ããããæ¹åã§ããã®ïŒ çŸç¶ã®ããŒã¿åºç€ã®ãããã ãããåŠç ã§BQ飿ºããŠãããããŒã¿é®®åºŠã¯ååãæå€§1æéé
å»¶ã§ãã BQ飿ºæã¯å·®åæŽæ°åã飿ºãããããã®ããŒã¿ããéè€ãç©çåé€ãªã©ãèæ
®ãããã¥ãŒ(以äžãææ°ãã¥ãŒ)ã§é£æºå
ãšåãææ°ç¶æ
ã®ããŒã¿ãåçŸããŠãŸãã åè: Apache Airflow ã§å®çŸããSQL ServerããBigQueryãžã®ããŒã¿åæ äž»èŠãª BUYMA åºå¹¹ããŒã¿ã®ææ°ãã¥ãŒã«çç®ããŠã¿ã æ±çšçã«å
šãŠã®ææ°ãã¥ãŒãæé©åããæ¹éã«ããŸãããçç±ã¯äžèšãšãªããŸãã BQ飿ºããŠããåºå¹¹ããŒã¿ã ãã§ã200ããŒãã«ä»¥äžãããä»åŸãå«ããŠããŒãã«ã®å©çšç¶æ³ã¯ããããªã çŸç¶ã®ã¢ã¯ã»ã¹å
容ã調æ»ããŠåã
ã«æ§èœæ¹åãããšãªããš ããŒãã«æ°ãåŠçéãå€ã 調æ»ãå¯Ÿå¿æ¹æ³ãèããã®ã倧å€ã ããéçšä¿å®è² æ
ã倧ããã ãã¥ãŒå
éšã®æ¹åãªã®ã§ãBQå©çšè
ãžã®åœ±é¿ãèæ
®ããå¿
èŠããªãããµã€ã¬ã³ãã§ãªãªãŒã¹ã§ããã®ãè¯ããã ææ°ãã¥ãŒãã©ã倿Žããã®ïŒ ææ°ãã¥ãŒã¯å·®åæŽæ°ããŒã¿ããåçŸããŠãããããäžèŠãªã¹ãã£ã³ãå€ãããç¶æ
ã§ããã ãªã®ã§ãåºå¹¹DBå
šäœã宿çã«ããŒãã«åããææ°ãã¥ãŒã§ãã®ããŒãã«ãå©çšããŠã¹ãã£ã³éãæ¹åããããšèããŸããã ææ°ãã¥ãŒã®å€æŽæ¹éã¯ä»¥äžã®ãšããã§ãã çŸç¶. ææ¬¡å·®å+æé次差åã®BQããŒã¿ãçµã¿åããã ææ¡. æ¥æ¬¡å
šä»¶(â»)+æé次差åã®BQããŒã¿ãçµã¿åããã â» ææ¬¡å·®å+æé次差åã§ããŒãã«åãAM0:00åºå®ã以äžãBQå±¥æŽããŒãã«ãšåŒã¶ ã·ã¹ãã æŠèŠãšããŠã¯ã©ããªæãïŒ å³ã«ãããšäžèšã®ããã«ãªããŸãã å°ãçœè²ã®ç®æã¯æ¢ã«ãããä»åæ°èŠã«å¯Ÿå¿ããã®ã¯é»è²ã®ç®æã«ãªããŸãã ããŒã¿åºç€ã®ã·ã¹ãã æŠèŠ ãã®æ¹éã§æã£ãããš ãªã¢ã«ã¿ã€ã 飿ºãå®çŸã§ããå Žåã§ãBQã«å
¥ããåŠçã®çœ®æã§æžã¿ç§»è¡ãã¹ã ãŒãºãã åºå¹¹DBå
šäœãBQå±¥æŽããŒãã«ãšããŠæ®ãããšã§ãéå»ã«é¡ã£ãŠããŒã¿æŽ»çšããããã BQãªã®ã§ããŒã¿éãããŸãæ°ã«ããªããŠè¯ãã¡ãªãããæŽ»ããã BQå±¥æŽããŒãã«ã®äœææ¹éã ãã© æ¢ã«BQäžã«ååŸæžã¿ã®æŽæ°å·®åããŒã¿ãçšããããšã§åŸããã§ãéå»ã®ä»»ææç¹ãŸã§é¡ã£ãŠããŒã¿ãåçŸã§ããã®ãè¯ããã åºå¹¹DBãå€ããããã§ããã ã圱é¿ãäžããªãããã«ãããã£ã å°ãBQã®ãããã¥ãŒãå°ãæ€èšããã®ã§ããçŸç¶ã§ã¯å©çšå¶çŽã«åŒã£ãããèŠéããŸããã æ¬åœã«ãã®æ¹æ³ã§æ¹åããã®ïŒ ä»çµã¿ãããããšæ§èœã¯æ¹åãããšã¯æã£ãŠãŸãããã以äžã®æžå¿µããããŸããã ææ°ãã¥ãŒãã©ã®çšåºŠäœ¿ãããŠããã®ããããããªãã£ã BQå±¥æŽããŒãã«äœæãªã©ãä»åã®å¯Ÿå¿ã«ããå¢å ããBQã¯ãšãªã³ã¹ãããã éçšä¿å®ããäžã§æ°ã«ãªã£ãŠããããš ããŒã¿åºç€ã®ä»çµã¿ãçŸç¶ããè€éã«ãªã ãã©ãã«ã·ã¥ãŒãã£ã³ã° ã倧å€ã«ãªã BQå±¥æŽããŒãã«ãææ°ãã¥ãŒã«çµã¿èŸŒãŸãããããããããŒã¿åè³ªã«æ³šæãæãå¿
èŠãã ããŒã¿åºç€ã®éçšä¿å®ã§æ°èŠããŒãã«åãèŸŒã¿æã¯äžéšæåéçšããŠãã æ¬å¯Ÿå¿åŸã¯ãªãã¬ãŒã·ã§ã³ãããè€éåãã æå ã¹ã¯ãªãã å®è¡ãèšå®ãã¡ã€ã«ä¿®æ£ãããŒã¿ã®åæç§»è¡ãªã© æç«ã®å¯æãé¡ãã¿ãªããã ãšãªããã¹ãããããããªã 瀟å
å€ã§BQããŒã¿ãæ¢ã«å€æ¹é¢ã§æŽ»çšãããŠãã 察å¿åŸã®ããŒã¿äžåã¯åœ±é¿ã倧ããã ããŒã¿ã®åŸ©æ§ã倧å€ãã èŠèŸŒã¿å¹æã¯ã©ããªã®ïŒ ããŸãæéããããããªãã£ãã®ããããäžèšã®ç¢ºèªã«çããŸããã çŸç¶ã®BQã¯ãšãªã³ã¹ãç¢ºèª äž»èŠããŒãã«ãçšãã SQL åäœã§ã®å¹ææ€èšŒ æ¹åçã®ææ°ãã¥ãŒãçšãã广æ€èšŒã§ã¯ ã¹ãã£ã³éãšå®è¡æéå
±ã«1/2çšåºŠåæž ã確èªã§ããŸããã 1/5ã1/8çšåºŠæ¹åããŠããã±ãŒã¹ãããæ³å®ãã广ãããã®ãããšæããŸããã å°ã宿çãªBQå©çšç¶æ³ã®å¹ææž¬å®ã¯Lookeräžã®Marketplaceã§BQå©çšç¶æ³ãç°¡åã«èŠããããããã¡ããå©çšããŸãããæ
£ããŠãæ¹ã§ããã1æ¥ã§äœæã§ããããšæããŸãã å®è£
ããäžã§æèãããšãã å®éãã£ãŠã¿ããšãããããã£ãæ°ãããã®ã§ããããããšæãåºãã話ãããŠã¿ãŸãã BQå±¥æŽããŒãã«äœæåæãšãªãDAGäŸåé¢ä¿ æ¬çªããŒã¿ã®ç¢ºèªæéãã§ããã ãé·ãã«ãšãã æå ã¹ã¯ãªãã ãAirflowã«ç§»æ€ããããšæã£ãã ããŒã¿å質æ
ä¿ã¯ã©ãããã£ã㪠BQå±¥æŽããŒãã«äœæåæãšãªãDAGäŸåé¢ä¿ BQå±¥æŽããŒãã«ãäœæéå§ããã«ãããã ãã®æœåºããã¯ãšãªå
éšã§åç
§ãããŠããããŒãã«ã§å¿
èŠãªæ
å ±ãæã£ãŠããå¿
èŠããããŸãã ææ°ãã¥ãŒã¯æé軞ã®ç°ãªãããŒã¿ãè€æ°çµã¿åãããŠç©çåé€ãèæ
®ããŠããããããŒãã«æ¯ã«äŸåå
DAGãæé軞ãäŸåå
ã®ããŒãã«æ°ãç°ãªããŸãã ãããã®æ
å ±ãèšå®æ
å ±ãšããŠäºåã«å®çŸ©ããæ
å ±ããèªåã§æ§æããŠããŸãã å³ã«ãããšäžèšãšãªããŸãã å·ŠãExternalTaskSensorãå³ãBigQueryExecuteQueryOperatorãšãªãã å³ã®æ°ã ãããŒãã«ããããããªã€ã¡ãŒãžã§ãã åè: DAGéã®äŸåã®è©± DAGäŸåé¢ä¿ æ¬çªããŒã¿ã䜿ã£ãç¢ºèªæéãã§ããã ãé·ãã«ãšãã æ¬çªããŒã¿ã§ã®ç¢ºèªæéãå°ãã§ãé·ãã«åãããã æ¬çªåœ±é¿ããªãããéšåçã«å
è¡ãªãªãŒã¹ãç¹°ãè¿ããŸããã ããããããšã§ãæ¬çªããŒã¿ã§ç¢ºèªãé²ãã€ã€éçºãé²ããããŸããã å¥ä»¶ã®å¯Ÿå¿ã䞊è¡ããŠé²ããããããããšãå¯èœã§ããã ç¢ºèªæéã¯2,3é±éã»ã©åãããŠãšã©ãŒæ€ç¥ãããªããã°å€§äžå€«ã ãããããã§èããŠãŸããã ããŒã¿å質æ
ä¿ã¯ã©ãããã£ã㪠çµéšäžããŸãæãæããªãæ¹ãè¯ããšèããããªããŒã·ã§ã³ãå
¥ããŸããã çŸç¶ã§ã¯æ°ã«ãªãæã ãã«ããŠãããä»åŸå¿
èŠã«å¿ããŠå¢ãããŠããã°è¯ããšèããŸããã äž»èŠããŒãã«ã®æå³åããã§ãã¯ æ°æ§ã®ææ°ãã¥ãŒã§ä»¶æ°æ¯èŒ ãªã© å°ãBigQueryCheckOperatorãã·ã³ãã«ã§æ±çšæ§ãé«ãã£ãã®ã§æ¡çšããŠããŸãã éçºéäžã§ãæ³å®å€ã«ãšã©ãŒæ€ç¥ãããããä»åŸã®éçšã§ãããŒã¿å質ã®ç£èŠã«ããªãã®ã§ããã¯ã倧äºã ãšæããŸããã ä»åã¯èŠéã£ãããŒã¿åè³ªå¯Ÿå¿ æšä»ã®æè¡é²æ©ã ãšãã£ãšè³¢ãããæ¹æ³ãããã¯ãã ïŒãšèª¿ã¹ãŠããã Great Expectations ãšããã®ããããŸããã ä»åãæéã®å
Œãåãã§æ€èšŒã¯ã§ããªãã£ãã®ã§ãããBQããŒãã«ãèªå蚺æããŠããŒã¿ã®å質蚺æçµæãŸã§ãã¡ã€ã«åºåããŠãããããã§ãã GreatExpectationsOperatorãããããã§ãããæ©äŒãããã°è§Šã£ãŠã¿ããããªãšæããŸãã æ¢åã®æåå®è¡ ã¹ã¯ãªãã ãAirflowã«ç§»æ€ããããšæã£ãã ææ°ãã¥ãŒã«ã¯å人æ
å ±åãã/ãªãã®2ã€ååšããŠãããä»ãŸã§ã¯æ°èŠããŒãã«è¿œå æã®ãªãã¬ãŒã·ã§ã³æã¯ ruby ã¹ã¯ãªãã ãçšããŠããŒã«ã«ããæåå®è¡ããŠäœæããŠãŸããã ããªããŒã·ã§ã³ã§æ°æ§ã®ææ°ãã¥ãŒãæ¯èŒããã®ã«å¿
èŠã§ããããæåã§ããã®ãæéã§ããã®ã§ã ãããæ°ã«Airflow( python )ã«ç§»æ€ããŠèªåã§å®è¡ããããšèããŸããã 察å¿éäžã§ãããã¿ããšå
éšã§gsutilã³ãã³ã䜿ã£ãŠãããšã«æ°ã¥ãã ãã "çŸè¡ã®Airflowç°å¢ã ãšgsutilã³ãã³ã( CLI )ãå
¥ã£ãŠãªãããããã䜿ããžãããïŒ" ãšãªããŸããã ç®æšãªãªãŒã¹æéã®2é±éåãåã£ãŠãããå¹ææž¬å®ããã®ããã°ãæžãã¿ã€ãã³ã°ã®ããšããã£ãã®ã§æéãããããããªãã£ãã®ã§ãã CLI å
¥ãããšãªããšããããéã«åãããªããåŸåãã«ããããããšãªããŸãã(æ± ãã ãããèãããšå
šãåãæ¹æ³ã§ãããªããŠãããããšé ãåãæ¿ãã BQã®INFORMATION_SCHEMAãBigQueryHookãäœ¿ãæ¹æ³ã§å¯Ÿå¿ãé²ããŠä¹ãåããŸããã èéããã CLI ãç§»è¡å
ã§äœ¿ããªããŠãå¯Ÿå¿æéãè¿ã¥ããŠãã®ã§æ
ãŠããšãã話ã§ããw ãããããªãªãŒã¹åŸã®è©±ãããã ç¡äºã«äºå®éãã10ææ«ã«ãªãªãŒã¹ã§ããŸããŠããã®åŸã®è©±ãããããšæããŸãã 广ã¯ã©ãã ã£ãã®ïŒ BQã¯ãšãªã³ã¹ããšãã®ã¯ãšãªæ°ãææ¬¡åäœã§æ¯èŒããŠã¿ã(課é察象ã®ã¿) BQã¯ãšãªã³ã¹ãã§ããç±³ãã«æ¯èŒã§ "åææ¯ çŽ25%åæž" ãšãªããŸããã BQã¯ãšãªã¹ãã£ã³éã ãšPB( ãã¿ãã€ã )ã¬ãã«ã§ã®åæžã§ãã æ¡ã倧ããããŠããããããªãã§ãã.. æå¥BQã¯ãšãªã³ã¹ããšã¯ãšãªæ° å¹ææž¬å®ããã«ããã£ãŠ ãã¡ããæ¯èŒæã§äœ¿ããæ¹ã倿Žã«ãªã£ãã墿žããåããã ãšãã°ã¢ å
ã®ã»ãŒå
šãŠã®ãããžã§ã¯ããå«ãã æ°å€ã§ãã ã€ãŸããä»åæ¹åããææ°ãã¥ãŒä»¥å€ã®æ°å€ãå«ãã§ãã ã¯ãšãªæ°ã§ãããBQå±¥æŽããŒãã«èªäœã¯7æã«ã¯åãããŠãã 10æããããªããŒã·ã§ã³ãå
¥ããŠå
è¡ãªãªãŒã¹ããŠã圱é¿ãããã¯ãšãªæ°ãå¢ããŠãã çŽ14äžåã¯ä»å远å ããåŠçãåå ãã BQã¯ãšãªå¹³åå®è¡æéãšåŠçéãææ¬¡åäœã§æ¯èŒããŠã¿ã(課é察象ã®ã¿) BQã¯ãšãªå¹³åå®è¡æéã§ããã "åææ¯ çŽ40%åæž" ãããŠãããŸããã ææ°ãã¥ãŒã絡ãŸãªãã¯ãšãªã倿°ãããšæãã®ã§ããã åçŽãªå¹³åã§ãã®æ°å€ã¯æã£ãŠã以äžã«å¹æããã£ãã®ãããããŸããã åŸã10ææç¹ã§å°ãäžãã£ãŠãã®ã¯ãªãã§ã ããã å
è¡ãªãªãŒã¹ã§ããªããŒã·ã§ã³ãšãã§è»œãã¯ãšãªãæµãå§ãã圱é¿ãã ãŸãã¯éããã®ãå¥ä»¶ã§æ¹åãããã®ã§ãããã æå¥BQã¯ãšãªå¹³åå®è¡æé ãšããLooker ããã·ã¥ ããŒãå
éšã®ã¯ãšãªå®è¡æéãæ¥æ¬¡ã§èŠãŠã¿ã Lookerã§ã¯System Activity ãçšæãããŠããã®ã§ããã¡ãã§ç¢ºèªããŠã¿ãŸããã ãã¯ãååçšåºŠã®æ§èœæ¹åããããŠããã§ãã ç§ã ããã·ã¥ ããŒããããã€ãè§Šã£ãŠã¿ãŸãããã äœæã§ããããã¡ãã£ãšæ©ããªã£ããªããšããããããã§ããã ãšããLooker ããã·ã¥ ããŒãã®æ¥å¥ã¯ãšãªå®è¡æé éå»ã®ãšããæç¹ã®ããŒã¿ãé¡ã£ãŠã¿ã ãããªæãã®ã¯ãšãªã㪠äžèšã®ããã«ãããšãéå»ã®ãšããæç¹ã®ããŒã¿åç
§ãã§ãããã§ããã æ¬æ¥ã®ããŒãã«ãªã¬ãŒã·ã§ã³ã ãæèããã°è¯ãã®ã§æ¥œã§ããã DECLARE target_date string; SET target_date = ' 20221201 ' ; WITH _table_a AS ( SELECT _TABLE_SUFFIX AS tabledate, id, value, times FROM table_a__* WHERE target_date <= _TABLE_SUFFIX -- èŠããå±¥æŽã®æéãæå® ), _table_b AS ( SELECT _TABLE_SUFFIX AS tabledate, id, value2 FROM table_b__* WHERE target_date <= _TABLE_SUFFIX -- èŠããå±¥æŽã®æéãæå® ) SELECT ta.tabledate, ta.id, ta.value, ta.times, tb.value2 FROM _table_a ta -- BQå±¥æŽããŒãã« INNER JOIN _table_b tb -- BQå±¥æŽããŒãã« ON ta.id = tb.id -- æ¬æ¥ã®ããŒãã«çµåæ¡ä»¶ AND ta.tabledate = tb.tabledate -- _TABLE_SUFFIXå士ã§çµåãã ORDER BY ta.tabledate, ta.id ã¿ã€ã ãªãŒã ããŠæã£ãããš èŠããå±¥æŽã®æéã倧ããåãããããšå©çšããããŒãã«ã«ãã£ãŠã¯ããŒã¿ã®åç
§ãé
ãã§ããããã¯ãã¹ãã£ã³éããã°ãããšã«ãªãããã§ãã ãŸããæ¥æ¬¡ã®AM0:00æç¹ã®ã¿ããBQå±¥æŽããŒãã«ãæ®ããŠãªãã®ããããŸãã®ã§ã åŸåãæŽããããªåæãä»ã«èŠãåç
§ããæ¹æ³ããªãæãªã©ã®å©çšçšéã§åããŠããã§ãã Lookeräžã§ãexploreãäœæã㊠ã¿ã€ã ãªãŒã ããŠã¿ã ãã¯ãå°ãéãã§ãã... ãããªæãã§äœ¿ãã®ãè¯ãããã§ãããã ä»ã®exploreã§æ¢çŽ¢çã«åæãã€ã€ éå»ã®ãã®æã®ããŒã¿ã¯ã©ãã ã£ããã ãããšæ°ã«ãªã ä»åäœæããBQå±¥æŽããŒãã«ãçšããexploreã§ç¢ºèªãã 宿çã«ç¢ºèªããããªå Žå㯠ããã·ã¥ ããŒãåããŠæ§èœæ¹åããã ææ å
šäœãéããŠæŠãèšç»éãã«é²ããã倧ããªåé¡ãçºçãããã»ã£ãšããŸããã æžå¿µããŠãBQå±¥æŽäœæåãªã©ã§å¢ããã³ã¹ãããããŸãããããã以äžã«æžå°ããŠãããã®ã§è¯ãã£ãã§ãã ã¹ãã£ã³éãå³è©äžããã ã£ãã®ã§ã宿œã¿ã€ãã³ã°ãè¯ãã£ãã®ããªãšæããŸãã ãŸãããã®æ©äŒã«æåã§å®æœããŠããç®æãå°ãèªååã§ããã®ãè¯ãã£ãã§ãã ãã ãä»åäœæãããªãã¬ãŒã¿æ°ãçŽæ°åãã£ãŠãAirflowã®WebUIç»é¢ã§ãã°è¡šç€ºããããšãããå°ãéããŠéãã¥ãããªã£ãŠãŸãã(ã) ä»åŸãããŒã¿åºç€ã®æŽ»çšãé²ãã»ã©ãä»å察å¿ããã³ã¹ãåæžå¹æãå¢ãããšæããŸãã æåŸã« ããŒã¿åºç€ã®éçºéçšä¿å®ã«æºãããŠããæ¹ã«å°ãã§ãåèã«ãªãã°ãšæãããã®ããŒãã§èšäºãæžããŠã¿ãŸãããæ¬èšäºãéããŠå°ãã§ãã€ã¡ãŒãžãæŽããŠé ããŸããšå¹žãã§ãã ãŸãããå¿ããäžãèšèšã®çžè«ãã³ãŒãã¬ãã¥ãŒãããŠé ããäžåžã«ã¯æè¬ããŠãããŸãã ç§ããã¯ä»¥äžãšãªããŸããæåŸãŸã§ãèªã¿é ãããããšãããããŸããã ææ¥ã®èšäºã®æ
åœã¯ããŒã¿ã¢ããªã¹ãã®äºåããã§ãããæ¥œãã¿ã«ã æ ªåŒäŒç€Ÿ ãšãã°ã¢ æ£ç€Ÿå¡ã®æ±äººäžèЧ hrmos.co
ããã«ã¡ã¯ã iOS ãšã³ãžãã¢ ã® æ± ç° ã§ãã ãã®èšäºã¯ Enigmo Advent Calendar 2022 ã® 20æ¥ ç®ã®èšäºã§ãã ã¯ããã« 2018幎㮠WWDC ã§çºè¡šãããCreateMLã§ãããçºè¡šåœå Xcode ãçšããã¢ãã«äœæãªã© Mac ã§ã®å©çšã«éå®ãããŠããŸããã ã§ããæè¿ã§ã¯ iOS ãiPadOSãtvOSã§ãå©çšã§ããããã«ãªã£ãŠããããªã³ã ãã€ã¹ ã§ã® æ©æ¢°åŠç¿ ã¢ãã«äœæãã§ããŸãã ïŒå©çšå¯èœOS㯠iOS15.0以éãiPadOS15.0以éãtvOS16.0以éã§ããïŒ ãã®èšäºã§ã¯ iOS ãçšãããªã³ã ãã€ã¹ ã§ã® æ©æ¢°åŠç¿ ã¢ãã«äœæãšãäœæããã¢ãã«ã®å©çšãããŠã¿ãããšæããŸãã MLStyleTransfer ãå©çšããŠã¢ãã«äœæãè¡ããç»åã®ç»é¢šå€æãããŠã¿ãŸãã ã³ãŒãå
ã«èŠãããã®ãã Forced Unwrapping ããŠãç®æããããŸãããå®è£
æã¯guardæçã䜿ã£ãŠé©å®æžãæããæ³å®ãããŠããŸãã æ©æ¢°åŠç¿ ã¢ãã«ã®äœæ ã¢ãã«ã®äœæã¯ä»¥äžã®ãããªã³ãŒãã§äœæã§ããŸããã³ãŒãéãå€ããªããç°¡åã« æ©æ¢°åŠç¿ ã®ã¢ãã«äœæãã§ããŸãã å¿
èŠã©ã€ãã©ãªã®èªã¿èŸŒã¿ import CreateML import CoreML import Combine åŠç¿çšã®ããŒã¿ããã©ã¡ãŒã¿ã®æºå let styleUrl : URL // ã¹ã¿ã€ã«ç»åã®URL let contentUrl : URL // åŠç¿çšã³ã³ãã³ãç»åã®ãã£ã¬ã¯ããªURL let data = MLStyleTransfer.DataSource.images(styleImage : styleUrl , contentDirectory : contentUrl ) let sessionParameters = MLTrainingSessionParameters(sessionDirectory : sessionUrl ) åŠç¿å®è¡ let job = try MLStyleTransfer.train(trainingData : data , sessionParameters : sessionParameters ) åŠç¿çµæã®åŸ
ã¡åããšã¢ãã«ã®ä¿å let writeToUrl : URL // ã¢ãã«ã®æžã蟌ã¿å
URL var mlModel : MLModel // äœæããæ©æ¢°åŠç¿ã¢ãã« job.result.sink { result in switch result { case .failure( let error ) : // ãšã©ãŒæã®åŠç case .finished : // å®äºåŸã®åŠç } receiveValue : { model in do { try model.write(to : writeToUrl ) let compiledUrl = try MLModel.compileModel(at : writeToUrl ) mlModel = try MLModel(contentsOf : compiledUrl ) } catch { // ãšã©ãŒæã®åŠç } } .store( in : & cancellables) ã¢ãã«äœæã³ãŒãå®è£
æã®æ³šæäºé
ã·ãã¥ã¬ãŒã¿ã®ãã«ãã§ã¯åããªãããã宿©ãã«ãã§ãã«ãããå¿
èŠããããŸãã ã·ãã¥ã¬ãŒã¿ã§ãã«ãããããšãããšãCreateMLã® ãã¬ãŒã ã¯ãŒã¯ èªäœãèŠã€ããã以äžãšã©ãŒãåºãŸãã No such module 'CreateML' æ©æ¢°åŠç¿ ã¢ãã«ã®å©çš äžèšã§äœæããã¢ãã«ã¯ä»¥äžã®ããã«å©çšã§ããŸãã ç»é¢šå€æå¯Ÿè±¡ã®UIImageãçšæããåºåãUIImageãšããŠå©çšã§ããããã«å®è£
ããŠã¿ãŸãã å¿
èŠã©ã€ãã©ãªã®èªã¿èŸŒã¿ import CoreML import Vision import VideoToolbox å
¥åå€ã®æºå let inputImage : UIImage // ç»é¢šå€æã®é©å¿å¯Ÿè±¡ç»å let cgImage = inputImage.cgImage let imageConstraint = mlModel.modelDescription.inputDescriptionsByName[ "image" ]?.imageConstraint let featureValue = try MLFeatureValue(cgImage : cgImage! , constraint : imageConstraint! ) let featureProvider = try MLDictionaryFeatureProvider(dictionary : [ "image": featureValue ] ) ç»é¢šå€æåŸã®åºåããŒã¿åãåºã let mlModel : MLModel // äœæããæ©æ¢°åŠç¿ã¢ãã« let stylizedImage = try mlModel.prediction(from : featureProvider ) let imgBuffer = stylizedImage.featureValue( for : "stylizedImage" )?.imageBufferValue UIImageã«å€æ var cgImageForConvert : CGImage? VTCreateCGImageFromCVPixelBuffer(imgBuffer ! , options : nil , imageOut : & cgImageForConvert) let stylizedUIImage = UIImage(cgImage : cgImageForConvert! , scale : 1.0 , orientation : inputImage.imageOrientation ) çµæã®ç¢ºèª å€æçµæ å€æå¯Ÿè±¡ã®ç»åã« ã¹ã¿ã€ã«ç» åã®ç»é¢šãé©å¿ãããšããããã£ãçµæã«ãªãããã§ãã ä»åã¯ããã©ã«ãã®èšå®ããã®ãŸãŸå©çšããŸããããã¢ãã«äœææã«IterationsãStrengthãDensityãªã©ã®ãã©ã¡ãŒã¿ã調æŽããããšãã§ããã®ã§ããã¡ãã倿ŽãããšãŸãéã£ãåºåãåºãããšãã§ããŸãã ãããã« ã¢ãã«ã®äœæã»å©çšãå°ãªãã³ãŒãéã§ç°¡åã«å®çŸã§ããŸããã ãã®èšäºã§ã¯ç»é¢šå€æãæ±ã£ãããšãããå©çšã±ãŒã¹ã¯å€ããªããããããŸããããClassfier ã Regressor ãå©çšã§ãããã®ãããããæ§ã
ãªå±éãèãããããã§ãã ã¹ããŒããã©ã³ ã®ã ãã€ã¹ äžã§åãã®ã§ãããŒã¿ãã¯ããŒãºããªç¶æ
ã§ç®¡çã§ããWebAPIã«æããå¿
èŠããªãã®ã§å®å
šã«æ±ãããšãã§ããã®ã倧ããªã¡ãªããã ãšæããŸãã åé¢ã®æžå¿µäºé
ãšããŠã¯ãã ãã€ã¹ ã®åŠçèœåã«äŸåããã®ã§ãå¿«é©ãªå©çšãèãããšããçšåºŠ ãŠãŒã¹ã±ãŒã¹ ã«å¶éãããã£ãŠãããããããŸããã ïŒä»åã¯ãã¥ãŒãã³ã°ãªã©ã¯ç¹ã«å ããŠãªãã®ã§ã iPhone 11 Pro 端æ«ã§ã¢ãã«äœææã«30åã»ã©æéãèŠããŠããŸããïŒ ãšã¯ããç°¡åã«å®è£
ã§ãã æ©æ¢°åŠç¿ ã®ã¢ãã«äœæãå©çšããªã³ã ãã€ã¹ ã§å®çµããŠåãããšãŠã匷åãªFrameworkã ãšæããŸããçŽè¿ã® WWDC ã§ã¯ Create ML Components ãçºè¡šãããŠãããã iOS ã§ã æ©æ¢°åŠç¿ é¢é£ã¯ããã«é²åãç¶ããŠããã®ã§ãããããæ¥œãã¿ã§ãã ææ¥ã®èšäºã®æ
åœã¯ããŒã¿ãšã³ãžãã¢ã®è°·å
ããã§ãããæ¥œãã¿ã«ã æ ªåŒäŒç€Ÿ ãšãã°ã¢ ãã¹ãŠã®æ±äººäžèЧ hrmos.co
ãã®èšäºã¯ Enigmo Advent Calendar 2022 ã® 19 æ¥ç®ã®èšäºã§ãã ããã«ã¡ã¯ãWebãšã³ãžãã¢ã®å¹³äºã§ããæ®æ®µã¯SELLããŒã ã«æå±ããŠã㊠BUYMA ã«ãããåºåè
åŽã®æ©èœéçºãæ
åœããŠããŸãã ä»åã¯ãæè¿ãªãªãŒã¹ããã«ã¿ãã°ã·ã¹ãã ããµãŒãã¬ã¹ ã¢ãŒããã¯ã㣠ã§éçºããã®ã§å©çšããæè¡ãåŠã³ã«ã€ããŠæžããããšæããŸãã ç®æ¬¡ ç®æ¬¡ ãµãŒãã¬ã¹ã¢ãŒããã¯ã㣠ã¡ãªãã ãã¡ãªãã ã«ã¿ãã°ã·ã¹ãã ãšã¯ ã·ã¹ãã èšèš æè¡ã¹ã¿ã㯠ãµãŒãã¬ã¹ãã¬ãŒã ã¯ãŒã¯ API ã«ã¿ãã°ããŒã¿æ°èŠäœæãæŽæ°åŠç ã¡ãªãã ãã¡ãªãã åŠã³ è¯ãã£ãç¹ æªãã£ãç¹ ãµãŒãã¬ã¹ ã¢ãŒããã¯ã㣠ãããããµãŒãã¬ã¹ ã¢ãŒããã¯ã㣠ãšã¯äœã§ããããã人ã«ãã£ãŠè§£éã¯ç°ãªãããšæããŸãããç§ã¯ã€ãã³ãé§ååã®ããã°ã©ã å®è¡ç°å¢ãå©çšããŠã¢ããªã±ãŒã·ã§ã³ãéçºãã ã¢ãŒããã¯ã㣠ã ãšçè§£ããŠããŸããã·ã¹ãã ãéçºããŠããäžã§ãµãŒããŒãæèããå¿
èŠãç¡ããšããç¹åŸŽããããŸãããã£ããã¡ãªãããšãã¡ãªããã¯ä»¥äžãæããããŸãã ã¡ãªãã ãµãŒããŒãæ§ç¯ããæéãçããŠãéçºè
ãã¢ããªã±ãŒã·ã§ã³ã®éçºã«å°å¿µã§ããã ãªãœãŒã¹ã®å©çšæéã¯ã³ãŒããå®è¡ããæéã«å¯ŸããŠèª²éããããã¢ã€ãã«æéã¯èª²éãããªãã ãã¡ãªãã å©çšã§ããèšèªãéãããŠããã å®è¡æéå¶é Lambdaã ãšæå€§15å ã«ã¿ãã°ã·ã¹ãã ãšã¯ 次ã«ä»åéçºããã«ã¿ãã°ã·ã¹ãã ã«ã€ããŠèª¬æããŸããã«ã¿ãã°ã·ã¹ãã 㯠BUYMA ã®ã«ã¿ãã°åºåæ©èœã®ããã®ã·ã¹ãã ã§ãã ã«ã¿ãã°åºåæ©èœã¯ãåºåè
ã«å¯Ÿã㊠BUYMA åŽã§çšæããã«ã¿ãã°ãæäŸããããšã§ãåºåè
ã®åºåäœæ¥ã®å¹çåãé«å質ãªç»åã®æäŸãç®çãšããŠããŸãã ã«ã¿ãã°åºåã®å€§ãŸããªæµãã¯ä»¥äžã«ãªããŸãã æ®åœ±ããŒã ãååãæ®åœ±ãç»åã ã¯ã©ãŠã ã«ã¢ããããŒã ãªãã¬ãŒã·ã§ã³ããŒã ãè²åãåçªã®ç¢ºèªããµã€ãºã®èšæž¬ã宿œ 1,2ã®æ
å ±ãã«ã¿ãã°ã·ã¹ãã ã® API çµç±ã§ããŒã¿ä¿å 4ã§ä¿åããããŒã¿ã API ã§ BUYMA åŽã«æäŸ BUYMA äžã®ã«ã¿ãã°åºåç»é¢ããåºåè
ãé©åœãªã«ã¿ãã°ãéžæããŠãåºå 以äžã®æµãã®3,4ã®éšå(ã«ã¿ãã°ããŒã¿ã®æ°èŠäœæ/æŽæ°ãæäŸ)ãã«ã¿ãã°ã·ã¹ãã ãæ
åœããŠããŠãåŒç€Ÿã® ã¯ã©ãŠã ãµãŒãã¹å©çšå®çžŸãã AWS äžã«æ§ç¯ããŸããã ã·ã¹ãã èšèš 詳现ã¯çç¥ããŠããŸããã以äžã ã¢ãŒããã¯ã㣠å³ã«ãªããŸãã ã«ã¿ãã°ããŒã¿æ°èŠäœæ/æŽæ°ã¯ Google App Scriptãã API çµç±ã§å®è¡ãããå³ã®äžéšã該åœéšåã§ãã ã«ã¿ãã°ããŒã¿æäŸã API çµç±ã§å®çŸããŠããŸãã æè¡ã¹ã¿ã㯠次ã«ã«ã¿ãã°ã·ã¹ãã ã®éçºã«å©çšããæè¡ã䞻㫠AWS ã®ãµãŒãã¹ã«ã€ããŠç޹ä»ããŸãã ãµãŒãã¬ã¹ ãã¬ãŒã ã¯ãŒã¯ ãŸãããµãŒãã¬ã¹ ãã¬ãŒã ã¯ãŒã¯ ã«ã€ããŠã¯ SAM ãå©çšããŸããã ãµãŒãã¬ã¹ ãã¬ãŒã ã¯ãŒã¯ ãšã¯ãµãŒãã¬ã¹ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããäžã§Infrastructure as Codeãå®çŸããããã®ãã®ã§ããä»åå©çšããSAMã®ç¹åŸŽã¯ä»¥äžã«ãªããŸãã ãµãŒãã¬ã¹ã¢ããªã±ãŒã·ã§ã³æ§ç¯çšã® ãªãŒãã³ãœãŒã¹ ãã¬ãŒã ã¯ãŒã¯ YAML ãã¡ã€ã«ã§ãªãœãŒã¹ç®¡ç CloudFormationæ§æãæ¡åŒµããŠãµãŒãã¬ã¹ã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ãç°¡åã«ãªã£ãŠãã ãµãŒãã¬ã¹ ãã¬ãŒã ã¯ãŒã¯ ã«ã¯SAMãå«ããŠä»£è¡šçãª3ã€ã®ãµãŒãã¹ããããããããã®ã¡ãªããã»ãã¡ãªããã¯ä»¥äžã ãšèããŠããŸãã SAM ã¡ãªãã CloudFormationãæœè±¡åãããã®ãªã®ã§, CloudFormationãç¥ã£ãŠãããæžããããã ãã¡ãªãã æ§æãè¥å¹²åé· serverless ã¡ãªãã AWS , GCP , Azureã§å©çšã§ããã ãã¡ãªãã serverlessç¬èªã®æ§æãèŠããå¿
èŠãããã AWS CDK ãã¡ãªãã ããã°ã©ãã³ã°èšèªã§èšå®ãèšèŒã§ããããå¯èªæ§ã yaml ã«æ¯ã¹ããšäœã ããŒã«ã«ã§ã®ãã¹ãå®è¡ã«ã¯ãSAMã䜿ãå¿
èŠãããã ããæ¹ ä»åãéçºããŒã ã«CloudFormationã®çµéšããããšã³ãžãã¢ãå±
ãç¹ããã«ã ã¯ã©ãŠã ã«å¯Ÿå¿ããå¿
èŠããªãç¹ãããŒã«ã«ç°å¢ã§ã®å®è¡ãç°¡åãªç¹ãã SAM ãéžæããŸããã API API ã¯äžè¬ç㪠API Gateway ãšLambdaã®æ§æã§ãã工倫ããç¹ãšããŠã¯ API Gateway ãšSwaggerã® yaml ãã¡ã€ã«ã飿ºã㊠API å®çŸ©ããããã«ããŸããã 以äžã®ããã«Swaggerã§å®çŸ©ãã yaml ãã¡ã€ã«ã®ãã¹ãæå®ããããšã§é£æºã§ããŸããSwaggerã§ API å®çŸ©ããããã«ããããšã§ API ã远å ããããã«ã¯ API å®çŸ© yaml ãã¡ã€ã«ãæŽæ°ããå¿
èŠãããããã API 远å ã«ããããã¥ã¡ã³ãã®æŽæ°æŒããé²ãããšãã§ããŸãã Resources : Api : Type : AWS::Serverless::Api Properties : DefinitionBody : 'Fn::Transform' : Name : 'AWS::Include' Parameters : Location : api.yaml ã«ã¿ãã°ããŒã¿æ°èŠäœæãæŽæ°åŠç ã«ã¿ãã°ããŒã¿ã®æ°èŠäœæãæŽæ°åŠçéšåã«ã¯ AWS Step Functions ãå©çšããLambdaãã¯ãŒã¯ãããŒçã«å®è¡ããŠããŸãã AWS Step Functionsã¯ã¯ãŒã¯ãããŒç®¡çãµãŒãã¹ã§ json ã§ã¯ãŒã¯ãããŒãå®çŸ©ããŸãã AWS Step Functionsãå°å
¥ããŠã¿ãŠæããã¡ãªããããã¡ãªããã¯ä»¥äžã«ãªããŸãã ã¡ãªãã Step Functionsã® GUI ããªããã§ããã ã¯ãŒã¯ãããŒã®å
šäœåãåã¿ã¹ã¯ã®é²è¡ç¶æ³ããã°ãæåç¶æ³ãããããããã Lambdaãåå²ããããšã§åLambdaã®åé床ãé«ãŸããã¡ã³ããã³ã¹æ§ããããã åLambdaã®ãªãã©ã€èšå®ãç°¡åã ãã¡ãªãã éäžã®Lambdaã§å€±æããéã®ããŒã¿æŽåæ§ãèæ
®ããå¿
èŠãããã å人çã«ã¯ GUI ããªãããªç¹ãç¹ã«å¥œãã§ãããŒã¿äœæãæŽæ°åŠçã«äœãäžå
·åãããéã¯åºæ¬çã«ãã® GUI ãã ãããã° ãéå§ããããã ãããã° ãå¹ççã«ãªãããã«ã¿ã¹ã¯æåæã®åºåå
容ã倱ææã®äŸå€ã¡ãã»ãŒãžã®å
容ã工倫ããŠå®è£
ããŸããã 以äžãåŠç詳现ç»é¢ã§ãå·Šã®ã¢ã€ã³ã³ãã¯ãªãã¯ããããšã§åã¿ã¹ã¯ã®Input, Outputã確èªã§ããŸãã åŠã³ æåŸã«éçºããŠåŸãåŠã³ã«ã€ããŠæžããããšæããŸãããŸãããµãŒãã¬ã¹ ã¢ãŒããã¯ã㣠ã§éçºããŠäœæããè¯ãã£ãç¹ãæªãã£ãç¹ã¯ä»¥äžã«ãªããŸãã è¯ãã£ãç¹ éçºè
ã ãã§æ§ç¯ã§ãããªãœãŒã¹ãå€ãã管çãäžèŠãªã®ã§éçºäœéšãè¯ãã£ãã AWS ãå©çšããéå»ã® ãŠãŒã¹ã±ãŒã¹ ãå€ããåèã«ããæ
å ±ã«å°ããªãã£ãã å
¬åŒããã¥ã¡ã³ã Serverless Land æªãã£ãç¹ ã³ãŒãã®å
± éå ãé£ãã Lambda Layer ã䜿ãã°å¯èœããã ä»åã®å ŽååLambdaã«å
±éããã¢ãã«å®çŸ©ã¯å
± éå ãããã£ãã ãŸããä»åLambda㯠Python ã§éçºããŸãããéçºåæã¯æ®æ®µå©çšããŠãã Ruby ãšã®èšèªçéããåå ã§éçºã«æéãããããŸããã Lambdaã®å
58%ãPythonãå©çš ããŠãããšããæ
å ±ãç¥ããã¡ã€ã³ã®æœ®æµã«ä¹ã£ãã»ããè¯ããšå€æã㊠Python ãéžæããŸãããã ç¹ã« Python ãå©çšããŠè¯ãã£ãç¹ãç¡ãã£ãã®ã§ã¹ã±ãžã¥ãŒã«ãããªãã¿ã€ããªå Žåã¯æ®æ®µæ
£ããŠããèšèªã䜿ã£ãŠããããšæããŸããã 以äžã«ãªããŸãã ææ¥ã®èšäºã®æ
åœã¯ãšã³ãžãã¢ã®æ± ç°ããã§ãããæ¥œãã¿ã« æ ªåŒäŒç€Ÿ ãšãã°ã¢ ãã¹ãŠã®æ±äººäžèЧ hrmos.co
ããã«ã¡ã¯ãUIUXãã¶ã€ããŒã®åç°ã§ãã ãã®èšäºã¯ Enigmo Advent Calendar 2022 ã®18æ¥ç®ã®èšäºã§ãïŒ åŒç€Ÿã§ã¯ã BUYMA ã®ãµãŒãã¹ãã¢ããªã»Webãµã€ãã®UIUXãããããããŠããããšãç®çã«ã ãããæ·±ããŠãŒã¶ãŒãçè§£ããŠãããŠãŒã¶ãŒã«ãšã£ãŠäŸ¡å€ã®ããäœéšããå±ããŠããããã«ãUXãªãµãŒãã«åºã¥ããæ¹åã«åãå
¥ããŠããŸãã ä»åã¯ã BUYMA ã®é¡§å®¢çè§£ã®ããã«é²ããŠããUXãªãµãŒãã®åãçµã¿ã«ã€ããŠã玹ä»ããŸãã ã1ããŠãŒã¶ãŒã»ã°ã¡ã³ãåé¡ïœUser Segmentation BUYMA ã®äŒå¡ã«ã€ããŠãRFMã®ææšãããŒã¹ã«ã å©çšé »åºŠè»ž ïŒRecencyïŒFrequencyïŒãã äŸ¡æ Œå¿å軞 ïŒMonetaryïŒãã 幎代軞 ã ãããŠãŒã¶ãŒã»ã°ã¡ã³ãã®åé¡ãé²ããŠããŸãã ãåã»ã°ã¡ã³ãã®ããªã¥ãŒã ããææ¡ããŠã äž»èŠãªã»ã°ã¡ã³ãã«ããããŠãŒã¶ãŒã®è³Œè²·åŸåãå©çšåŸå ã«ã€ããŠã èŠèŠçã«æããããããã«Lookerã®ããŒã«æŽåãããŒã¿ã¢ããªã¹ããšUIUXãã¶ã€ããŒãååã§å®æœããŠããŸãã å©çšé »åºŠè»žïŒRecencyïŒFrequencyïŒ å
šäœã®è³Œè²·åŸåããé©å㪠éŸå€ ãæ€èšããŠããå©çšé »åºŠããšãçŽè¿ã®å©çšåŸåãããã»ã°ã¡ã³ãã®åé¡ãé²ããŠããŸãã äŸ¡æ Œå¿å軞ïŒMonetaryïŒ ãŠãŒã¶ãŒã«ãããçŽç²ãªç涯环èšè³Œå
¥éé¡ã§åé¡ããã®ã§ã¯ãªãããã©ã®ãããã®äŸ¡æ Œåž¯ã®ã¢ã€ãã ãäžå¿ã«è³Œå
¥ããŠãããïŒããã©ããªäŸ¡æ Œåž¯ã®ã¢ã€ãã ã«èå³é¢å¿ãé«ããïŒããšãã芳ç¹ã§ãF0ãŠãŒã¶ãŒãF1-2ãšãã£ãå©çšæŽã®æµ
ããŠãŒã¶ãŒã«ã€ããŠãäŸ¡æ ŒïŒè³Œè²·è¡åïŒã«é¢ããå¿åãææ¡ã§ããããã«åé¡ãé²ããŠããŸãã 幎代軞 幎代ã«ã€ããŠã¯ãçæŽ»ã¹ã¿ã€ã«ãè¡åç¹æ§ã®ç°ãªããèæ
®ããŠåé¡ããŠããŸãã äžèšã®ïŒã€ã®è»žãèæ
®ããŠãã瀟å
ã§äž»èŠãªã»ã°ã¡ã³ãã®ãŠãŒã¶ãŒã¢ãã«ã«ã€ããŠå
±éçè§£ã§ããããã«ããããšããç®æšã«ãŠãŒã¶ãŒã»ã°ã¡ã³ãã®èª¿æ»ã»åé¡ãé²ããŠããŸãã ãŸãããããã® å®é çãªãŠãŒã¶ãŒã»ã°ã¡ã³ãã®åé¡ãããšã«ã ã2ããã3ãã®å®æ§èª¿æ»ãé²ããããšã§ãåã»ã°ã¡ã³ãã®ãããªã¢ã«ãªäŸ¡å€èгã»è¡åç¹æ§ãUXã«é¢ãã課é¡ãææ¡ããŠãå
·äœçãªæ¹åãé²ããããããã«ããŠããŸãã ã2ããŠãŒã¶ãŒã¢ã³ã±ãŒãïœUser questionnaire åŒç€Ÿã§ã¯ã䞻㫠Google ãã©ãŒã ãçšããŠãŠãŒã¶ãŒã¢ã³ã±ãŒããéçšããŠããŸãã äž»ã«ä»¥äžã®ãããªæé ã§ãã1ãã®ãŠãŒã¶ãŒã»ã°ã¡ã³ãåé¡ãããŒã¹ã«ãUXã«ã€ããŠæ·±å ã調æ»ãããã»ã°ã¡ã³ãã«çµã£ãŠã¢ã³ã±ãŒãã宿œããŠããŸãã ã¢ã³ã±ãŒãã¯ãã¡ãŒã«ãLINEã«ããé
ä¿¡ããWebãµã€ãäžã«ã¢ã³ã±ãŒãåéãããŒãåºããªã©ã察象ã®ãŠãŒã¶ãŒã»ã°ã¡ã³ãã«åã£ãã¿ã€ãã§å®æœããããã«å¿ãããŠããŸãã ã¢ã³ã±ãŒãã®èšç»ã»å®æœæé ã¢ã³ã±ãŒãã®ãªãµãŒãç®çã»æ€èšŒå
å®¹ã®æŽç é
信察象è
ã®éžå® ã¢ã³ã±ãŒãèšåã®èšèšã Google ãã©ãŒã ã®äœæ ã¢ã³ã±ãŒãã®é
ä¿¡ã»å
¬é ã€ã³ã»ã³ãã£ã ïŒè¬ç€ŒïŒã®ä»äž ã¢ã³ã±ãŒãçµæãŸãšãã»å
±æã»ãµãããã ã3ãã®ãŠãŒã¶ãŒã€ã³ã¿ãã¥ãŒãåæã«ã èšåã®äžã§ã€ã³ã¿ãã¥ãŒã«ååããã ããååè
ãåãããã¡ã§ã¢ã³ã±ãŒãã宿œããããšããããŸãã äŒå¡åãã®ãŠãŒã¶ãŒã¢ã³ã±ãŒãã§ã¯ãäŒå¡ããŒã¿ãšçŽä»ããŠåæã§ããããã«ããŠããããã ãŠãŒã¶ãŒã»ã°ã¡ã³ãããŠãŒã¶ãŒã®è³Œè²·åŸåã»å©çšåŸåãèžãŸããŠããŠãŒã¶ãŒã€ã³ã¿ãã¥ãŒã«ãååããã ãããæ¹ãéžå®ãããŠããã ãããã«ããŠããŸãã ãŸãã现ããæ€èšŒãããUXã«ã€ããŠã®èšåãã¢ã³ã±ãŒãã«çšæããããšã§ã ã¢ã³ã±ãŒãåçå
容ããããããã䟡å€èгãè¡åç¹æ§ãæã€ãŠãŒã¶ãŒãã«å¯ŸããŠã€ã³ã¿ãã¥ãŒã宿œã§ããããã«å·¥å€«ããŠããŸãã ã3ããŠãŒã¶ãŒã€ã³ã¿ãã¥ãŒïœUser Interview ãŠãŒã¶ãŒã€ã³ã¿ãã¥ãŒã¯ã2ãã®ãŠãŒã¶ãŒã¢ã³ã±ãŒããããUXã«ã€ããŠããæ·±å ãããŠèª¿æ»ãããå Žåã«å®æœããŠããŸãã è¿å¹Žã®ã€ã³ã¿ãã¥ãŒã¯ããã¹ãŠãªã³ã©ã€ã³ïŒZoomïŒãçšããã€ã³ã¿ãã¥ãŒãšãããŠããã ããŠãããããŸããŸãªå°åãããåå ããã ããŠããŸãã ã€ã³ã¿ãã¥ãŒã¯çŽ60åéã§å®æœããŠããã ãŠãŒã¶ãŒã®äŸ¡å€èгãè¡åç¹æ§ïŒæ¥é ã®è¡åãå奜ãªã©ïŒãã ã€ã³ãµã€ã ãæ·±å ãããŠãã ã A. ãŠãŒã¶ãŒ ã¢ããªã³ã° åã®èšå ããšã éå»ã®äœéšãããããè¡ãããäºæãå®éã®ç»é¢ãçšããŠã·ãã¥ã¬ãŒã·ã§ã³ããã ãã€ã€ã ãã®æ§åã芳å¯ã»ãããŒã«æ²¿ã£ãŠUXïŒãã®ã¿ã€ãã³ã°ã«ãããæèããã€ã³ã»ã²ã€ã³ãªã©ïŒã«ã€ããŠæ·±å ãããŠãã ã B. UXæ€èšŒåã®èšå ãã®ïŒã€ããæ§æããŠããŸãã ã€ã³ã¿ãã¥ãŒã®äž»ãªèšç»ã»å®æœæé ã«ã€ããŠãã玹ä»ããŸãã ã€ã³ã¿ãã¥ãŒã®èšç»ã»å®æœæé ã€ã³ã¿ãã¥ãŒã®ç®çã» ãã¢ãª ã³ã°ãã€ã³ãã®æŽç ã€ã³ã¿ãã¥ãŒåè£è
éžå® *1 ã€ã³ã¿ãã¥ãŒã·ããªãªã®äœæ ã€ã³ã¿ãã¥ãŒæèšºã»èª¿æŽãã¹ã±ãžã¥ãŒã«äœæ åå¥ã€ã³ã¿ãã¥ãŒã·ãŒãã®äœæ ãŠãŒã¶ãŒã€ã³ã¿ãã¥ãŒã®å®æœ ã€ã³ã»ã³ãã£ã ïŒè¬ç€ŒïŒã®ä»äž ã€ã³ã¿ãã¥ãŒçµæãŸãšãã»å
±æã»ãµãããã ãŠãŒã¶ãŒã€ã³ã¿ãã¥ãŒã®åã«ããŠãŒã¶ãŒããããã®ãåå¥ã€ã³ã¿ãã¥ãŒã·ãŒãããçšæããããã«ããŠããŸãã ããããã£ãŒã«ããã賌買åŸåãããå©çšåŸåïŒãæ°ã«å
¥ããç»é²å¹Žãªã©ïŒããã賌買ãåãåããã®å±¥æŽãããã¢ã³ã±ãŒãã®åçããªã©ã现ãããŸãšããã·ãŒããšãªã£ãŠããã åºæ¬çãªã€ã³ã¿ãã¥ãŒã·ããªãªã«åºã¥ãã ãã¢ãª ã³ã°ã®äžã§ãã€ã³ã¿ãã¥ãŒå¯Ÿè±¡è
ããããã«åã£ã ãã¢ãª ã³ã°ãã§ããããã«å·¥å€«ããŠããŸãã ãŸãããã€ã³ã¿ãã¥ãŒã®èšé²ãã«ã€ããŠãåäžã·ãŒãå
ã«åããããšã§ããŠãŒã¶ãŒåäœã§ä¿¯ç°ã§ããããã«ããŠãåŸåã®ææ¡ãããæ¯ãè¿ãããããããã¡ãã«ããŠããŸãã åŒç€Ÿã§ã¯ã宿çã«ãŠãŒã¶ãŒã€ã³ã¿ãã¥ãŒã宿œãããŠããã ããŠãããŸãã ä»åŸãããŠãŒã¶ãŒã€ã³ã¿ãã¥ãŒãéã㊠å®é çãªæ°å€ããã¯èªã¿åãããšãé£ããããŸããŸãªãã€ã³ãæ°ä»ããåŸãŠãããããšèããŠããŸãã ãããã« åŒç€Ÿã§ã¯ãUXãªãµãŒãããå°ããUXã«ããã課é¡ïŒAS-ISïŒãããæœçã»äŒç»ïŒTO-BEïŒãæ€èšããŠãæ¥ã
ãµãŒãã¹ãšUIUXã®æ¹åã«åãçµãã§ããŸãã 仮説éãã®å¹æãåŸãããŠããã®ã確èªããŠããããããã¡ã«ããŠããããã«ãABãã¹ãã®æŽ»çšã广æ€èšŒã宿œããŠçްããã¢ããããŒããæ¹åä¿®æ£ããããªã£ãŠããŸãã UXãªãµãŒããéããŠãããæ·±ããŠãŒã¶ãŒãçè§£ããŠãããŠãŒã¶ãŒã«ãšã£ãŠäŸ¡å€ã®ããäœéšããå±ããããããã BUYMA ã®ãµãŒãã¹ã»UIUXã®æ¹åã«ãæåŸ
ããã ããŸããšå¹žãã§ãã ææ¥ã®èšäºã®æ
åœã¯ ãµãŒããŒãµã€ããšã³ãžãã¢ ã® å¹³äº ããã§ãïŒ ãæ¥œãã¿ã«ã æ ªåŒäŒç€Ÿ ãšãã°ã¢ ãã¹ãŠã®æ±äººäžèЧ hrmos.co *1 : ã2ããŠãŒã¶ãŒã¢ã³ã±ãŒãã«ãŠãã€ã³ã¿ãã¥ãŒååè
ãåæã«åãããã«ããŠããŸã
ããã«ã¡ã¯ãããŒã¿ãµã€ãšã³ãã£ã¹ãã®å éšã§ãã ãã®èšäºã¯ Enigmo Advent Calendar 2022 ã®16æ¥ç®ã®èšäºã§ãã æ®æ®µã®æ¥åã§ã¯æ
å ±æ€çŽ¢(æ€çŽ¢/ã¬ã³ã¡ã³ã)ãäžæ£æ€ç¥ããŠãŒã¶ãŒå±æ§ã®æšå®ãªã©ã BUYMA ã«ãããã¯ããšããŠçµã¿èŸŒãããšãè¡ã£ãŠããŸãããã®äžã§ã ã¢ããªã³ã° 以åã®ã¿ã¹ã¯èšèšãæ¢çŽ¢çããŒã¿åæ( EDA : Explanatory Data Analysis)ãããŒã¿ã®ã¯ã¬ã³ãžã³ã°ã»ååŠçãç¹åŸŽéãšã³ãžãã¢ãªã³ã°ãªã©ã䞻㫠SQL (BigQuery)ã§è¡ãéšåã«å€ãã®æéãå²ããŠããŸãã 1 ä»åã¯ãéåæã®ããäºæž¬çµæããæ°ã¥ããåŸåãå
ã«ããŒã¿ã®ååŠçã远å ããããšã§ã¢ãã«ã®ç²ŸåºŠæ¹åã«ã€ãªãã£ãäžäŸã玹ä»ããããŸãã æŠèŠ æ°ã¥ããçµç·¯ æ€åºæ¹æ³ çµæ ãŸãšã ããŸã æŠèŠ ããŒã¿ãã æ©æ¢°ç ãª(ãããã®ãããª)ã¢ã¯ã»ã¹ãé€å€ããããšã§ã æ©æ¢°åŠç¿ ã¢ãã«ã®ç²ŸåºŠãæ¹åããŸããã ããããæ°ã¥ããçµç·¯ãæ€åºæ¹æ³ãé€å€ããçµæã«ã€ããŠç޹ä»ããããŸãã æ°ã¥ããçµç·¯ ååã®ãã©ã³ãã®item2vecãé²èЧ履æŽããçæããéã«ã BUYMA å
ã§äººæ°ã®ãã©ã³ããšçŽè¿1幎ã§1ä»¶ã賌å
¥ãããŠããªããã€ããŒãªãã©ã³ãã®é¡äŒŒåºŠãéåžžã«é«ãåºãŠãããã¿ãŒã³ãè€æ°èŠåããããŸãããéåæãæããåŠç¿ããŒã¿ã§ãã€ããŒãªãã©ã³ãã«å¯ŸããŠã¢ã¯ã·ã§ã³ãè¡ãªã£ãŠãããŠãŒã¶ãŒã®logãé²èЧæ°ãå€ãé ã«èŠããšãããäžå®ééã§å¥ã®åå詳现ã«é·ç§»ãããšããã®ãç¹°ãè¿ããŠããlogãèŠåãããã人éã§ã¯ãªãã¢ã¯ã»ã¹ã®å¯èœæ§ãé«ããšå€æããŸããã ã¡ãªã¿ã«ãitem2vecãªã©ã®ãã¯ãã«ã¯arrayåã§BigQueryã«æ ŒçŽããã³ãµã€ã³é¡äŒŒåºŠãªã©ã SQL ã§èšç®ã§ããæ§ã«ããŠããŸãããšãŠã䟿å©ã§ãã create temp function cos_sim(vec1 array<float64>, vec2 array<float64>) returns float64 as ( ( select sum (elem1 * elem2) / sqrt ( sum (elem1 * elem1))/ sqrt ( sum (elem2 * elem2)) from unnest(vec1) elem1 with offset pos1 inner join unnest(vec2) elem2 with offset pos2 on pos1 = pos2 ) ); æ€åºæ¹æ³ ã1床ã§ã1å以å
ã«æ¬¡ã®åå詳现ãžã®é·ç§»ã100å以äžç¹°ãè¿ããŠãããŠãŒã¶ãŒããšããæ¡ä»¶ã§æ€åºããŸããã 2 ãã¡ãã SQL ã§ã»ãã·ã§ãã€ãºãè¡ãããšã§å®è£
ããŸããã 3 ã»ãã·ã§ãã€ãºã®ã€ã¡ãŒãž ãµã³ãã«ã¯ãšãª with item_action_view_detail as ( select ial.user_id, ial.time, ial.time - lag(ial.time) over ( partition by ial.id order by ial.time ) as interval_action from item_action_log as ial where ial.action = " view_detail " ), session_head as ( select id, time, case when lag(time) over ( partition by user_id order by time ) is null then 1 when time - lag(time) over ( partition by user_id order by time ) > interval 60 second then 1 else 0 end as session_head_flg from item_action_view_detail ), session as ( select user_id, time, concat ( user_id, " - " , sum (session_head_flg) over ( partition by user_id order by time rows between unbounded preceding and current row ) ) as session_id, from session_head ), session_summary as ( select session_id, user_id, count ( 1 ) as cnt_view, from session group by 1 , 2 ) select distinct user_id from session_summary where cnt_view >= 100 çµæ ã©ã³ãã³ã°åŠç¿ãè¡ã£ãŠããã¢ãã«ã«å¯Ÿããæ€åºãããŠãŒã¶ãŒIDãé€å€ããåãšé€å€ããåŸã®ããŒã¿ããããåŠç¿ãããã¢ãã«ã§ã®ãã¹ãããŒã¿ã§ã®ç²ŸåºŠãæ¯èŒãããšããMAP(Mean Average Precision)ãçŽ2%æ¹åããŸãããååã®ãã©ã³ãã®item2vecãé€å€åŸã®ããŒã¿ã§çæãçŽãããšãããçŽæã«åããããªãã©ã³ãå士ãé¡äŒŒåºŠãé«ãåºãããã«ãªããŸããã æ©æ¢°åŠç¿ ã§ã®æšè«çµæãBigQueryã«æ ŒçŽããŠãããããMAPãªã©ã®è©äŸ¡ææšã SQL ã§èšç®ã§ããããã«ããŠããŸãã (äžèšãaverage_precisionã®å¹³åããšã£ããã®ãMAPã«ãªããŸã) create temp function precision (y_true array<int64>, y_pred array<int64>, n int64) returns float64 as ( ( select sum ( case when elem1 = elem2 then 1 else 0 end ) / n from unnest(y_true) elem1 with offset pos1, unnest(y_pred) elem2 with offset pos2 where pos2 < n ) ); create temp function average_precision(y_true array<int64>, y_pred array<int64>, n int64) returns float64 as ( ( select sum ( precision (y_true, y_pred, m+ 1 )) / array_length(y_true) from unnest(generate_array( 0 , n -1 )) as m where y_pred[safe_offset(m)] in unnest(y_true) ) ); ãŸãšã ãã£ãããšã¯åçŽã§ãããããŒã¿ã®ååŠçã®å€§åããäœæã§ããäºäŸã ã£ãã®ã§ç޹ä»ãããŠããã ããŸããã Garbage In, Garbage Outãèžã«å»ã¿ãŸãããã ããŸã æè¿è©±é¡ã®chatGPTã« BUYMA ã«ã€ããŠæè©ãæžããŠããããŸãã æã«ããããã®ã æãæµ®ãã¹ãã BUYMAã«è¡ãã ã¿ããªã®æ³ããéãŸã äžçäžã®ååã ããããèŠã€ããã ãæ±ããããäŸ¡æ Œã§ ä»æ¥ãæ°ãããã®ãå±ãã ãã€ãã©ã³ãã®æãéŽ ãããããªããã°ãã¢ã¯ã»ãµãªãŒ é貚ãå®¶é»ãŸã§ BUYMAã§æ¢ããŠã¿ãã äŒå¡ç»é²ããã° ããã«ãåŸãªç¹å
žã ããããããã ãæ°ã«å
¥ããèŠã€ã㊠買ãç©ã®æ¥œãã¿ãå¢ããã BUYMAã§æ¥œããè²·ãç© æã«ããããã®ã æãæµ®ãã¹ãã BUYMAã«è¡ãã ã¿ããªã®æ³ããéãŸã ä»ããBUYMAã§ è²·ãç©ãããïŒ å®£äŒäžæã§ããã 話é¡ã®AIã«åŒç€Ÿã®ãµãŒãã¹ãèªç¥ãããŠããŠå°ãå¬ããã£ãã§ãã ææ¥ã®èšäºã®æ
åœã¯äººäºã®å³å·ããã§ãããæ¥œãã¿ã«ã æ ªåŒäŒç€Ÿ ãšãã°ã¢ ãã¹ãŠã®æ±äººäžèЧ hrmos.co ããŒã¿ã¯ã¬ã³ãžã³ã°ãç¹åŸŽéçæéšåã§ dbt ã®æŽ»çšãæ€èšäžã§ã ↩ å®éã® SQL ã§ã¯ãŠãŒã¶ãŒãšãŒãžã§ã³ã( UA )ã§ã®ãããé€å€ãè¡ã£ãããŒã¿ã«å¯ŸããŠåŠçããŠããŸã ↩ SQL ã§ã®ã»ãã·ã§ãã€ãºã¯ã 10幎æŠããããŒã¿åæå
¥é ã ããã°ããŒã¿åæã»æŽ»çšã®ããã®SQLã¬ã·ã ã«è©³ããèšèŒãããŠããŸã ↩
ããã«ã¡ã¯ããšã³ãžãã¢ã®ç«¹ç°ã§ãã ãã®èšäºã¯ã Enigmo Advent Calendar 2022 ã®15æ¥ç®ã®èšäºã§ãã ãã£ããã§ããããšã³ãžãã¢ã®ã¿ãªããŸã¯äžæµã®ãšã³ãžãã¢ãšã¯ã©ããªãšã³ãžãã¢åããæã¡ã§ããããã èªåã¯ãéå®³ãæªç¶ã«é²ããç¶ç¶çã«å®å®éçšå¯èœãªã·ã¹ãã ãæ§ç¯ã§ãããšã³ãžãã¢ããäžæµã®ãšã³ãžãã¢ã ãšèããŠããŸãã ã²ãšãã«é害ãšèšã£ãŠãã仿§ãšç°ãªãåäœãããªãããªãœãŒã¹äžè¶³çã«ããã·ã¹ãã 忢ãçºçããªãããªã©ãããããšå®çŸ©ã¯ããããªãšæããŸãã ä»åã®ãšã³ããªã§ã¯åè
ã®ã仿§ãšç°ãªãåäœãããªãããšããç¹ã«ã€ããŠãæ¥åãéããŠèŠèãæ·±ããããå Žé¢ããããŸããã®ã§ã玹ä»ããããšæããŸãã æ€çŽ¢ã·ã¹ãã ã®ãªãã¬ã€ã¹ 仿ã¯ããšããæ€çŽ¢ã·ã¹ãã ã®ãªãã¬ã€ã¹ã«æ³šåããŠããŸããã ãšãã°ã¢ ã§ã¯æ€çŽ¢ã·ã¹ãã ã« Apache Solrãå©çšããŠãããä»åãªãã¬ã€ã¹ããã·ã¹ãã ã«ã€ããŠãæ§æãšããŠã¯éå»ã« ãã¡ãã®ããã° ã§ç޹ä»ãããã®ãšè¿ãæ§æãšãªããŸãã èªåã¯æ€çŽ¢ã·ã¹ãã ãžã®ããŒã¿æå
¥ãããã³æ€çŽ¢ãªã¯ ãšã¹ ããè¡ã£ãŠçµæãæŽåœ¢ããç®æ(䞻㫠Rails )ã®æ¹ä¿®ãæ
åœããŠããŸãã ãªãã¬ã€ã¹ã«åœããã Rails ããSolrãžã®çŽæ¥ãªã¯ ãšã¹ ãã§ã¯ãªããäžéåªäœãšããŠæ€çŽ¢ API ãçµç±ãã圢åŒã«å€æŽããŸããã ãã®ããããŸãã¯æ¢åã³ãŒãããã°ã調æ»ããŠãªã¯ ãšã¹ ãæ¹æ³ãåäœä»æ§ããŸãšããããã³ãŒãæ¹ä¿®ã«ç§»ããŸããã ã³ãŒãæ¹ä¿® 調æ»ãã仿§ãå
ã«äžæŠã³ãŒãæ¹ä¿®ãå®äºããããçšåºŠåäœãããã®ãã§ããŸããã ãã®åŸãæ¢åã®ãã¹ãã³ãŒããå
ã«æ°ã³ãŒãã®ãã¹ãã³ãŒãã«ç§»æ€ãé²ããäžã§ã现ããªåããå®è£
ã§ããŠããªãããšã«æ°ä»ããŸããã (ç»åã¯ã€ã¡ãŒãžã§ã) åãæ°å€ãªã®ãæååãªã®ã nil 蚱容ããã®ã 調æ»ããããŠããªãã£ããªã¯ ãšã¹ ãæ¹æ³ãå©çšç®æããã äžã«ã¯ããã£ããããªåãããã®ãã¿ãããªãã®ãŸã§... ã³ãŒãããã°ãç®èŠããã ãã§ã¯åãããªãã£ãããšã次ã
ãšã§ãŠããŸããã ãã¹ãã³ãŒãã®éèŠæ§ã®åèªè ãã¹ãã³ãŒããåäœãããããšã§ããã詳现ãªåäœãç¥ãããšãã§ããŸããã åŸããèãããšããã£ãšãã£ãããšã³ãŒããã§ãã¯ãããŠããã°ææ¡ã§ããŠããç¹ããããšæããŸããããã¯ãäœæ¥ããŠããã®ã人ã§ãã®ã§ãã©ãããŠãèŠèœãšãã¯é¿ããããªããšæããŸãã ãã¹ãã³ãŒãããªããã° ãã°ã¬ ãåŒãèµ·ãããŠããå¯èœæ§ããããã仿§ãšç°ãªãåäœãããªããç¹ãæºè¶³ã§ããªãç¶æ
ã«ããŠããŸããšããã§ããã æ®æ®µã³ãŒããæžãéããã¹ãã³ãŒããæèããŠæžããŠã¯ãããã®ã®ãäœæã«åœãã£ãŠã¯ã³ãŒã ã«ãã¬ããž ãã¢ãã¯ã®äœ¿çšãå¢çå€ãè€éãªãã¿ãŒã³ã®ç¶²çŸ
ãã©ããŸã§å³å¯ã«ãããçããèæ
®ããããšãå€ãã§ãã ãããªãã«æéãèŠããŸããããã¹ãã³ãŒãèªäœã®èŠèªæ§ã«çŽåŸããããªãã£ãããšãæ£çŽããŸããã¹ãã³ãŒããæžãããšã¯å¥œãã§ã¯ãããŸããã§ããã ã§ãããä»åãå€ãã®ç¹ããã¹ãã³ãŒãã«å©ããããŸããã ãã¹ãã³ãŒãã®æçŸ©ãªã©ãæ€çŽ¢ãããšæ§ã
ãªæ¹ã®èšäºãããããããããã®èŸºãã®èšåã¯ããŸããããçå±ãšããŠã¯çè§£ã§ãããã®ã®ãªããªãæºé£²ãäžããããªããã®ã ãšæã£ãŠããŸãã ãã®ç¹ã«ãããŠããå®éã«ãã¹ãã³ãŒãã«å©ãããããšããäœéšã¯éåžžã«è²Žéãªãã®ã§ããã æåŸã« éå»ã«ãã¹ãã³ãŒããå°éã«äœæããã ããæ
åœã®æ¹ã«æè¬ããã€ã€ãä»åŸã®èª°ãã®å©ãã«ãªããšããããšãæèããŠããã¹ãã³ãŒããæžãããšãå¿æããŠããããšæããŸãã ãã¹ãã³ãŒããå
šãŠãã¹ããç¶æ
ã§ã®ãªãªãŒã¹ã¯ã粟ç¥çãªå®å¿æã«ãç¹ãããŸããã ææ¥ã®èšäºæ
åœã¯ãããŒã¿ãµã€ãšã³ãã£ã¹ãã®å éšããã§ãããæ¥œãã¿ã«ïŒ æ ªåŒäŒç€Ÿ ãšãã°ã¢ ãã¹ãŠã®æ±äººäžèЧ hrmos.co
ããã«ã¡ã¯ããµãŒããŒãµã€ããšã³ãžãã¢ ã® æ©æ¬ ã§ãã ãã®èšäºã¯ Enigmo Advent Calendar 2022 ã® 14 æ¥ç®ã®èšäºã§ãã ã¯ããã« ãšã³ãžãã¢ãšããŠä»äºãããŠãããšã³ãŒããèªãããšãå€ããšæããŸããäŸãã°ã仿§èª¿æ»ãCSããã®ãååã察å¿ãã¬ãã¥ãŒå¯Ÿå¿ãªã©ããããšæããŸãã ä»å¹Žãæ¯ãè¿ããšã³ãŒããæžã以äžã«èªãããšãå€ããã³ãŒããããæ£ç¢ºãã€éãèªãã«ã¯ã©ãããã°ããããèããããšãå€ããããŸããã ãšããããšã§ããã®èšäºã§ã¯ç§å人ãã³ãŒããèªãæã«æèããŠããããšã玹ä»ããŠããããšæããŸãã ãããªãã³ãŒãã¯èªãŸãªã 1ã€ç®ã¯ãããªãã³ãŒãã¯èªãŸãªãããšã§ããæ¥åã§äœ¿ãããŠããã³ãŒãã®éã¯1ã€ã®æ©èœã§ããšãŠãå€ãã§ãããããªãèªã¿å§ãããšãšãŠãæéãããã£ãããè¿·åã«ãªã£ãŠããŸããããããŸããããªã®ã§ãŸãã¯ã·ã¹ãã å
šäœãææ¡ããŠã€ã³ããããšã¢ãŠãããããäœãªã®ãã®çè§£ãé²ããŸããææ¡ã®ä»æ¹ã¯ãã·ã¹ãã 仿§æžãèªãã ããæ
åœããæ¹ãš MTG ããŠåŠçã®å€§ãŸããªæµããæããŠããã£ãŠããŸãã å
šäœã®ææ¡ãšåæäžŠè¡ã§ãå®éã«åãããŠã¿ãããšãå€ãã§ããå®éã«åãããšçè§£ãé²ã¿ãŸãã èªãç®çãæèãã 2ã€ç®ã¯èªãç®çãæèããããšã§ããã³ãŒããèªãç®çã¯æ§ã
ã ãšæããŸãã衚ã¯äžäŸã§ãã ã³ãŒããèªãã±ãŒã¹ ç¥ãããããš ã¬ãã¥ãŒå¯Ÿå¿ ãã°ãç¡ããã仿§ãæºãããŠããããèšèšçã«åé¡ãªããã確èªããã CSããã®ãååãå¯Ÿå¿ ãã°ãçºçããŠããåå ãç¥ãã ç®çãææ§ãªç¶æ
ã§ã³ãŒããèªã¿å§ãããšãæ¬æ¥ã¯èªãå¿
èŠãç¡ãã³ãŒããèªãããšã«ãªãæéãè¶³ããªããªãã±ãŒã¹ããããšæããŸããæ¥åã¯æéãæ±ºãŸã£ãŠããããšãå€ãã®ã§ãå¹ççã«é²ããããã«ãç®çãæèããããšã¯å€§äºã ãšèããŠããŸãã é©åºŠã«ã¡ã¢ãåã 3ã€ç®ã¯é©åºŠã«ã¡ã¢ãåãããšã§ããæ¥åã§äœ¿ãããŠããã³ãŒãã¯éãå€ããäžåºŠã«èªãã§å
šãŠãææ¡ããã®ã¯å€§å€ã§ãããªã®ã§ç§ã¯ã¡ã¢ãåããªããèªã¿é²ããããšãå€ãã§ããã¡ã¢ã®åãæ¹ã§ããã ãœãŒã¹ã³ãŒã äžã«çŽæ¥æžããããå¥éããã¹ããã¡ã€ã«ã«æžããããslackã®ã¹ã¬ããã«æžããããªã©ããŠæµããæŽçããŠããŸãããŸã æ
£ããŠããªã ããã°ã©ãã³ã°èšèª ã®å Žåã¯èªãã®ã«æéãããããšæãã®ã§ãã¡ã¢ã¯ããªãæå¹ã ãšæããŠããŸãã ãããã« ä»å¹Žã¯è²ã
ãªæ©èœã®ã³ãŒããèªãããšãå€ãã BUYMA ã®ä»æ§ã«ã€ããŠè©³ãããªããŸãããããã ãã§ãªãã³ãŒãã£ã³ã°ã®æè¡ã«ã€ããŠãåŠã¶ããšãå€ãã£ãã®ã§ãã³ãŒããèªããšããã®ã¯ãšãŠã倧äºã ãªãšæ¹ããŠæããŸãããå€åæ¥å¹Žãèªãããšãå€ãã®ã§é 匵ããããšæããŸãã ææ¥ã®èšäºã®æ
åœã¯ãšã³ãžãã¢ã®ç«¹ç°ããã§ãããæ¥œãã¿ã«ã æ ªåŒäŒç€Ÿ ãšãã°ã¢ ãã¹ãŠã®æ±äººäžèЧ hrmos.co
ãã®èšäºã¯ Enigmo Advent Calendar 2022 ã®13æ¥ç®ã®èšäºãšãªããŸãã ãç²ãããŸã§ããã€ã³ãã©ããŒã ã®å±±å£ã§ãã åŒç€Ÿã§ã¯äžéšã€ã³ ãã©ãª ãœãŒã¹ã®ã¢ãã¿ãªã³ã°ã«Datadogãå©çšããŠããŸãã ãã®äžã§ãä»åã¯Datadogã®å©çšéå§åœåã« GUI ã§äœæãããã¢ãã¿ãŒãTerraformerãšTerraformã䜿çšããŠæ§æç®¡çããéã®äºäŸã«ã€ããŠå ±åããŸãã åæ§ã®æè¡ã¹ã¿ãã¯ã䜿çšããã€ã³ããŒããæ§æç®¡çã«ãããå
·äœçãªãã³ãã¬ãŒãçã®äºäŸã«ã¯äºæ¬ ããªããšæããŸãã®ã§ãäœæ¥èšç»ãäžå¿ã«èª¬æããŸãã èŠã¯ãTerraformerãTerraformã®äœ¿ãæ¹ã¯æ§ã
è¯ãè³æããããšæããããä»ååºæã®å¯Ÿå¿ãããç¹ã泚åããŠèª¬æããŸãã æ¬çš¿ã®æ§æã以äžã«èšèŒããŸãããŸãã察象ãšããã¢ãã¿ãŒã®ç¶æ
ãªã©ã®åæã説æããŸããæ¬¡ã«ãäœæ¥ã®æµããæŠèª¬ããTerraformã® ãã£ã¬ã¯ã ãªæ§æçãå°ã説æããŸãããããŠæåŸã«ãŸãšããŸãã 1. åæ ãŸãäœæ¥ã®ç®çãšå¯Ÿè±¡ãšããã¢ãã¿ãŒã«ã€ããŠèª¬æããŸãã ç®ç GUI ã§äººéãæã§äœæããã¢ãã¿ãŒãTerraformã§æ§æç®¡çããã 察象ãšããã¢ãã¿ãŒ æ§æç®¡çã®å¯Ÿè±¡ãšããã¢ãã¿ãŒã®æŠèŠã以äžã«èšèŒããŸãã ãããããžã§ã¯ãã§ã®ã€ã³ ãã©ãª ãœãŒã¹ã®ç£èŠã®ããã«æã§äœæãããã¢ãã¿ãŒ309ä»¶ã察象ãšããŸãã è€æ°çš®é¡ã®ã€ã³ ãã©ãª ãœãŒã¹ã®ç£èŠã®ããã®ã¢ãã¿ãŒçŸ€ã§ãããåœè©²ãããžã§ã¯ãã§ããããšã瀺ãã¿ã°ã®ã¿ãä»äžãããæ³¥å£åç¶æ
ã§ãã察象ã®ã¢ãã¿ãŒãããµãŒãããŒã«ããšã®ã¿ã°ãä»äžããäžã§ãããŒã«ããšã«moduleåãåãæ±ããããããããããšãç®çãšããŸãã ã¢ãã¿ãŒä»¶æ° ç¹åŸŽ 309ä»¶ ã»ã€ã³ããŒã察象ãèå¥ã§ããç¹å®ã®ã¿ã°ãä»äžãããŠãã(äŸ: project: xxx ãšãã£ãã¿ã°ã®ã¿) ã»ã¢ãã¿ãŒã¯ Rails ã®WebãµãŒãããããããµãŒããDBãµãŒããšãã£ãã€ã³ ãã©ãª ãœãŒã¹ã®ç£èŠç®ç 2. äœæ¥ã®æŠèŠ äœæ¥ã®æŠèŠã«ã€ããŠèª¬æããŸããä»åã®å¯Ÿå¿ã¯å€§ãã2段éã«åãããŸãã ãŸããSTEP1ãšããŠã€ã³ããŒã察象ã®ã¢ãã¿ãŒãTerrformerã§äžæŠ1ã€ã®tfãã¡ã€ã«ã«ã€ã³ããŒããããã®åŸäººæã§ãµãŒãã®ããŒã«ã衚ãã¿ã°ãã¢ãã¿ãŒã«ä»äžãapplyããããšã§ãæ³¥å£åç¶æ
ãæ¹åãããŸãã æ¬¡ã«ãSTEP2ãšããŠããµãŒãã®ããŒã«ããšã«å床Terraformerã§ã€ã³ããŒãããtfãã¡ã€ã«ã ãªãã¡ã¯ã¿ãªã³ã° ãapplyãè¡ããŸãã 以éã§åSTEPã®å
容ãšãã€ã³ãã説æããŸãã STEP1: äºåæºå STEP1ã§ã¯æ³¥å£åç¶æ
ãè±ããããšãæåªå
ãšããŸãã ãã®ãããäžæŠTerraformerã§ã€ã³ããŒãããåŸã«ã人éã倧éæã«ã¢ãã¿ãŒã«ã¿ã°ãä»äžãapplyããŸãããã®éã®ãã€ã³ããšããŠã¯ãã¢ãã¿ãŒã«ãã£ãŠã¯ãã©ã®ãããªã¿ã°ãä»äžããã¹ãããæ©ãã±ãŒã¹ããããšæããŸãããTerraformã§ç®¡çå¯èœã«ãªãããšã§æ³¥å£åç¶æ
ããæªãã¯ãªããªãããé床åªå
ã§ããšã€ã€ãã§ã¿ã°ãä»äžãapplyããŠããŸããŸãã å®éã«ã¿ã°ã®ä»äžã¯ç§ãäœæ¥ããã®ã§ãããäœæ¥åœæã®èšé²ãèŠããš10åã§25%é²ãã ãšèšé²ãããã1æéãããããã«æãã®ä»æ©ãæžãã§ããããã§ãã äžæŠæ¢åã®ã¢ãã¿ãŒãTerraformerã§äžæ¬ã§1ã€ã®tfãã¡ã€ã«ã«ã€ã³ããŒããã tfãã¡ã€ã«ã®ã¢ãã¿ãŒã®å
容ã粟æ»ããåã¢ãã¿ãŒã®çšé(ãµãŒãããŒã«)ãå€å¥å¯èœãªãããªã¿ã°ã人æã§ä»äžãapplyãã å³1 STEP2: ãµãŒãããŒã«åäœã§ã®ã€ã³ããŒããš ãªãã¡ã¯ã¿ãªã³ã° 以äžããµãŒãããŒã«æ°åç¹°ãè¿ããŸãã 端çã«ã¯ãTerraformerã§ã€ã³ããŒãããtfãã¡ã€ã«ã®å
容ã人éãèªã¿ãããããã«ä¿®æ£ãããã€æå³ããªããªãœãŒã¹åäœæãªã©ãçºçããªãããã«tfstateãä¿®æ£ããäžã§applyããŸãã ç¹å®ã®ãµãŒãããŒã«ã®ã¢ãã¿ãŒãterrformerã§ã€ã³ããŒã tfãã¡ã€ã«ã ãªãã¡ã¯ã¿ãªã³ã° ããŠapplyãã å³2 3. ã€ã³ããŒãåŸã® ãã£ã¬ã¯ã ãªæ§æãä¿®æ£å
容 ã€ã³ããŒãåŸã® ãã£ã¬ã¯ã ãªæ§æãTerraformerãèªåçæããå
容ããã®ä¿®æ£ãã€ã³ãã説æããŸãã æ¬èšäºã¯ãæè¡çãªèª¬æãäž»ãšããèšäºã§ã¯ãªãããæŠèŠã®ã¿ãç°¡åã«èšèŒããŸãã ãã£ã¬ã¯ã ãªæ§æ ãã£ã¬ã¯ã ãªæ§æã以äžå³ã«èšèŒããŸãã è€æ°ç°å¢ã«å¯Ÿå¿å¯èœãªããmoduleåŽã«äž»ãªãªãœãŒã¹ãåãåºããŠããã®moduleãç°å¢ããšã«åŒã³åºãã¢ãã¿ãŒãäœæããæ§æãšããŠããŸãã ãŸãã terraform workspace çã¯äœ¿ããã«æçŽã«ç°å¢ã»ãµãŒãããŒã«åäœã§tfstateãåããæ§æãšããŠããŸãã ãªã¢ãŒãããã¯ãšã³ãã䜿ããã«ãåå§çã«tfstateã ãªããžã㪠ã«ã³ãããããŸãã ããã¯ãè€æ°äººã§ 人海æŠè¡ çãªæ¹éã§åæ
ããŠäœæ¥ããéã«ãªã¢ãŒãããã¯ãšã³ããæäœããããã®ããŒã®èšå®ããã¹ããå¯èœæ§ã®ããç®æãæ¥µåæžããããšã念é ã«ããããšããã®ããã£ãšããããèšãèš³ã§ãããå®éã¯æšªçãããããã§ãã å³3 tfãtfstateã® ãªãã¡ã¯ã¿ãªã³ã° Terraformerã§ã€ã³ããŒãããéã« ãªãã¡ã¯ã¿ãªã³ã° ãè¡ã£ã芳ç¹ã以äžã§ç®æ¡æžããŸãã ãªãœãŒã¹åã人éãå€èªå¯èœãªãã®ã«ãã resource "datadog_monitor" "tfer--monitor_1234567" ãšãã£ãèªåçæããããªãœãŒã¹åã人éãå€å¥ãããããã®ã«ä¿®æ£ããŸãã 1ã®ãªãœãŒã¹åã®ä¿®æ£ã«äŒŽãtfstateãä¿®æ£ãã ããã¯ãã¢ãã¿ãŒã®å Žåã¯ç¶æ
ãæããªããªãœãŒã¹ã®ããç¹ã«åäœæã§ã倧ããªåé¡ã¯ç¡ãã§ããã ãªãã¡ã¯ã¿ãªã³ã° æã®ä¿®æ£å·®åçã terraform plan ã§ç¢ºèªãããããã« tfstateãä¿®æ£ã極ååäœæãåé¿ããŸãã ãã¢ããã¥ã¡ã³ãã䜿ã Terraformerã§ã€ã³ããŒãããã¢ãã¿ãŒã¯ message ã1è¡ã§å¯èªæ§ãè¯ããªããããã¢ããã¥ã¡ã³ãã䜿ãããä¿®æ£ããŸãã ãŸãšãããããªãœãŒã¹ã¯for_eachã§ãŸãšãã for_eachã§ãŸãšãããããªãœãŒã¹ã¯ for_eachã§è€æ°äœæããŸãããã®éã®2ãšã®å
Œãåãã¯ç¶æ³ãèŠãŠå€æããŸã(å Žåã«ãã£ãŠã¯åäœæããããªããšãã)ã 4. ãŸãšã(ææ) æåŸã«ææãšãŸãšããèšèŒããŠçµãããŸãã ææ å©çšéå§çŽåŸã§ãæäœéã®åæèšèšã¯éèŠ ãã®æã¯ãã®æã®ãã¹ããå°œãããŠãã¯ããªã®ã§æãæªãæ§ã«æããªãæ°æã¡ãéèŠ(ä»ããã®ãã¡æã«ãªãã®ã§) ãã ãéå»ã®çµç·¯ã倿ã«é床ã«å¿åºŠãããå¿
èŠæ§ã¯ãªã(ã§ãªããšãã£ãšèŸããŸãŸã®ãã) ãããã£ããéå»ã®ãããã¿èžãŸããæ¹åæŽ»åãã§ããã®ã¯äºæ¥äŒç€Ÿãªãã§ã¯ ãŸãšã ããäœæ¥ããããã¹ãŠäººé or ãã¹ãŠ ã¹ã¯ãªãã ã§å¯Ÿå¿ããããšãã£ãåœ¢ã«æã£ãŠããŸããšèŸãããšãããããæãæ©ãç®çãéæã§ããããªæ¹æ³ãéžã¶ããšãéèŠãããã¯äŒç€Ÿã®äººçãªãœãŒã¹ã®ç¶æ³ã«ããããšæ³åããããããé©åºŠãªå¡©æ¢
ã¯èªåãã¡ã§èããŠããããç¡ã(身ãèããªããŸãšã)ã ææ¥ã®èšäºã®æ
åœã¯ãšã³ãžãã¢ã®æ©æ¬ããã§ãããæ¥œãã¿ã«ã æ ªåŒäŒç€Ÿ ãšãã°ã¢ ãã¹ãŠã®æ±äººäžèЧ hrmos.co