
- TOP
- ã¿ã°äžèЧ
- Ruby on Rails
Ruby on Rails
ã€ãã³ã
ãã¬ãžã³
æè¡ããã°
ããã«ã¡ã¯ãã¹ã¿ã¡ã³ã§CTOããŠãããŸããã¡ãããã ( @tnir / @takuya_stmn ) ã§ãã å
æ¥7æ12æ¥ã«TUNAGãããã¯ãã¯10åšå¹Žãè¿ããŸãããïŒ2026-07-12 14:41 JSTã³ãããïŒ 2016幎7æ12æ¥git init ç§ãã¡ã¯åœç€Ÿäž»å¹¹ãããã¯ãã§ããTUNAGã®æ¥ã
ã®éçºã«GitHubããã«æŽ»çšããŠãããã³ãŒãã®å質ãšã»ãã¥ãªãã£ãé«ãä¿ã€ããã®åãçµã¿ãç¶ç¶ããŠããŸãã ãã®äžç°ãšããŠãæè¿GAïŒäžè¬æäŸïŒãããGitHubã®ãã€ãã£ããªã³ãŒãã¹ãã£ã³ããŒã«ã§ããCodeQL-powered analysis for Code Qualityãå°å
¥ããé«åºŠãªã³ãŒãã»ãã¥ãªãã£æ©èœããã«æŽ»çšããŠããŸãããã®ã³ã¢æè¡ãšãªã£ãŠããCodeQLã®ãããã§ãè匱æ§ã®æ©æçºèŠãå¯èœã«ãªããããå®å
šãªãããã¯ãéçºãå®çŸã§ããããã«èšèšããŠããŸãã ããããCodeQLãéçšããŠããäžã§ããšãã倧ããªãå£ãã«ã¶ã€ãããŸããã ä»åã¯ã10幎以äžã®æŽå²ãæã€ãªããžããªã«çŽ8å¹Žéæœãã§ããã¬ã¬ã·ãŒã³ãŒããçºèŠã»åé¢ããå®è¡æéãå¹³å20åãã3åãžãšççž®ããåãçµã¿ãã玹ä»ããŸãã 課é¡ïŒé·ãããCodeQLã®å®è¡æéïŒå¹³å20åïŒãšã»ãã¥ãªãã£äžã®ãªã¹ã¯ CodeQLã¯éåžžã«åŒ·åãªããŒã«ã§ãããç§ãã¡ã®ã¡ã€ã³ãªããžããªã§å®è¡ãããšãå®äºãããŸã§ã«å¹³åã§çŽ20åãããã£ãŠããŸã£ãŠããŸããã 20åãšããæéã¯ãCI/CDãã€ãã©ã€ã³ã«ãããŠèŽåœçã§ããPull RequestãäœæããŠããçµæãåºããŸã§é·æéåŸ
ãããããããéçºè
ã®ãã£ãŒãããã¯ã«ãŒããé
å»¶ããéçºäœéšïŒDXïŒã®èããäœäžãæããŠããŸããã ããã«é倧ãªåé¡ãšããŠãå¹³å20åãæéãããããšãPull Requestã«ãããCIã¹ããŒã¿ã¹ã®ã¯ãªãªãã£ã²ãŒãïŒå¿
é ã¯ãŒã¯ãããŒïŒãšããŠçµã¿èŸŒãããšãã§ããªããšããç¹ããããŸãããããŒãžã®ãã³ã«20ååŸ
ãããéçšã¯çŸå®çã§ã¯ãªãã£ãããã§ãã ãã®çµæãé«åºŠãªã³ãŒãã»ãã¥ãªãã£æ©èœãå°å
¥ãããã®ã®ã CI/CDããã»ã¹èªäœã¯ã»ãã¥ãªãã£å¯ŸçãšããŠè匱ãªç¶æ
ïŒå±éºãªã³ãŒãã®ããŒãžãCIã§ãããã¯ã§ããªãç¶æ
ïŒ ã®ãŸãŸéçšããããåŸãªããšããæ¬æ«è»¢åãªç¶æ³ã«é¥ã£ãŠããŸããã ç§ãã¡ã®ãªããžããªã¯10幎以äžã«ããã£ãŠéçšãããŠããæŽå²ããããã³ãŒãããŒã¹ã®è¥å€§åã¯èªèããŠããŸããããã»ãã¥ãªãã£ã¯ãªãªãã£ã²ãŒããæ£åžžã«æ©èœãããããã«ãããã®20åãšããå®è¡æéã¯çµ¶å¯Ÿã«è§£æ±ºãã¹ã課é¡ã§ããã Datadog CI/CD Optimization (CI/CD Explorer) ãçšãã GitHub Code Quality (CodeQLããŒã) ã®å®è¡æéåæ åå ã®ç¹å®ïŒå°å
¥è
ã¯äžåšâŠããããGitã®æŽå²ããçããæããŠããã ãªãããã»ã©ãŸã§ã«æéãããã£ãŠããã®ããè§£æã®ãã°ã察象ãã¡ã€ã«ã詳现ã«èª¿æ»ããŸããã ãããã調æ»å¯Ÿè±¡ãšãªã£ãã³ãŒãã¯ãçŸåšåšç±ããŠãããšã³ãžãã¢ããããŒãžã£ãŒã®èª°ãèæ¯ãç¥ããªããã©ãã¯ããã¯ã¹ãšåããŠããŸããã倧æã«å°å
¥ããããã®ã§ãããåœæã®é¢ä¿è
ã¯ãã§ã«ç€Ÿå
ã«äžäººãæ®ã£ãŠããªãã£ãããã§ãã ããã§åãçºæ®ããã®ãããã¹ãŠã®å€æŽå±¥æŽãæ£ç¢ºã«èšé²ãç¶ããŠããGitã§ããã Gitã®ã³ãããå±¥æŽããã®blameãé¡ã£ãŠèª¿æ»ããçµæãçŽ8幎åã«ãµãŒãããŒãã£ãŒãã賌å
¥ãããªããžããªå
ã«é
åããã ã管çç»é¢çšã®UIã©ã€ãã©ãªã ãåå ã§ããããšã倿ããŸãããäžè¬çãªç€Ÿå
ãšã³ãžãã¢ãå®è£
ããJSã©ã€ãã©ãªãããžãã¹ããžãã¯ã§ã¯ãªããéçãã¡ã€ã«ãšããŠãªããžããªå
ã«é®åº§ãç¶ããŠãããã³ããŒè£œã®ã³ãŒãã§ããã CodeQLã¯åŸåã«ãã®çŽ8å¹ŽéæŸçœ®ãããŠããå€éšã©ã€ãã©ãªã®é
ã
ãŸã§è匱æ§ã¹ãã£ã³ãè¡ã£ãŠããŸãããç§ãã¡ãæ¥åžžçã«æãå ããããšã®ãªãå€ããã³ããŒã³ãŒãã®è§£æã«ãCIã®è²Žéãªæéã倧éã«å¥ªãããŠããŸããã 解決çïŒ235 MBã«åã¶ã³ãŒãã®åãåºããšå¥ãªããžããªã§ã®åé¢éçš åå ãç¹å®ã§ããã°ãããã¹ãæ¹éã¯æç¢ºã§ããã ä»åç¹å®ããããµãŒãããŒãã£ãŒè£œã©ã€ãã©ãªã¯ãã³ãŒãã®åéãçŽ100 MBã«ãåã¶éåžžã«å·šå€§ãªãã®ã§ãããããã»ã©å€§èŠæš¡ãªã³ãŒãããã¡ã€ã³ãããã¯ãã®åäžãªããžããªå
ã§ç¶æãç¶ããå¿
èŠæ§ã¯ãããŸããã ãããŠã¢ããªã·ãã¯ã«ç¶æããã®ã§ã¯ãªããã¡ã€ã³ãããã¯ããšã¯æç¢ºã« ãã©ã€ããµã€ã¯ã«ã®ç°ãªããœãããŠã§ã¢ããšããŠãæå³çã«å¥ãªããžããªãžåãåºããŠç¬ç«ç®¡çããã®ãé©åã§ãã ãšå€æããŸããã ããã§ãã¡ã€ã³ãªããžããªããã¯ãã®100 MBã®UIã©ã€ãã©ãªãå®å
šã«åé€ããå¥ãªããžããªãšããŠç¬ç«ãããŠç°ãªãã©ã€ããµã€ã¯ã«ã§ç®¡çããæœçãå®è¡ããŸããã é©ãã®çµæãšã»ãã¥ãªãã£ã¯ãªãªãã£ã²ãŒãã®å®çŸ ãã®235 MBã®ã¬ã¬ã·ãŒã³ãŒããã¡ã€ã³ãªããžããªããåé€ããçµæãCodeQLã®å®è¡æéã¯å¹³å20åããã3åããžãšåçã«ççž®ãããŸããïŒ å®è¡æéã3åã«ãªã£ãããšã§ãCodeQLãPull Requestã®å¿
é ã¯ãªãªãã£ã²ãŒããšããŠæ£åŒã«èšå®å¯èœãšãªããã»ãã¥ãªãã£ãªã¹ã¯ãæ±ããã³ãŒããããŒãžãããã®ãCIäžã§ç¢ºå®ã«ãããã¯ã§ããããã«ãªããŸããã éçºè
ã®ãã£ãŒãããã¯ã«ãŒãïŒDXïŒãé£èºçã«åäžããã ãã§ãªããCI/CDãã€ãã©ã€ã³å
šäœã®ã»ãã¥ãªãã£åŒ·åºŠãçã®æå³ã§é«ããããšãã§ããŸããã ãã«ããã€ãã©ã€ã³ ãã«ããã€ãã©ã€ã³ã¯åµæ¥æã®2016幎7æããRuby on Railsã«ä»å±ã®SprocketsããŒã¹ã®ã¢ã»ãããã«ããå©çšããŠããŸããã7幎匷ç¶ããã¢ã»ãããã€ãã©ã€ã³ã2023幎ç§ã«èŠçŽããŠãããããYarn+esbuildã«ããå®è£
ã«ä¿®æ£ãããããžã§ã¯ããããããããã3幎ã»ã©ã¯ã¢ããªã±ãŒã·ã§ã³ã¬ã€ã€ãŒã®ããã³ããšã³ãã¢ã»ãããã€ãã©ã€ã³ãåé¡ãªãç¶æéçšããŠããŸããã ãªããããŒã¹ãšãªããµãŒãããŒãã£ãŒè£œã©ã€ãã©ãªã¯gulpãèšå®ãããŠããŸããããåœè©²ãããã¯ããžã®å°å
¥æç¹ããwebpackã§ã®ãã«ããšããŠéçºãããŠããŸããããã®ç¹ã¯ããã³ããšã³ããã€ãã©ã€ã³ãã¢ããã€ãºããäžã§ã¯ãšãŠãå©ããç¹ã§ããã Bootstrap 4ããŒã¹ã®UIã©ã€ãã©ãª ä»ååãåºããããµãŒãããŒãã£ãŒè£œã©ã€ãã©ãªãã¯Bootstrap 4.0.0 (alpha) ããŒã¹ã§ãããããªãã¬ã¬ã·ãŒã§ãããçè
èªèº«ã¯5幎以äžåããBootstrap 5.0ããããŠãææ°ã®5.3ã«é¢ãããŸã§1ãŠãŒã¶ãŒã§ããããã®ã®ãTailwind CSS v4.3ïŒå·çæã®ææ°ããŒãžã§ã³ïŒããŒã¹ã«åãæ¿ãããããžã§ã¯ããæªçæã®ãŸãŸæž©ããŠããç¶æ³ã§ãã åœè©²ããŒãžçŸ€ã䜿ããŠãŒã¶ãŒã¯TUNAGå
šäœã®å€§èŠæš¡ãªãŠãŒã¶ãŒããŒã¹ãšæ¯ã¹ããšå°ãªãã®ã§ããããã€ãã¯ãããªããŠã¯ãªããªãã¿ã¹ã¯ã ãšèªèããŠãããLLMã䜿ã£ãŠäžæ°ã«å¯ŸåŠããŠããããšã³ãžãã¢ãç¶ç¶åéããŠããŸãã èªè
ã®çæ§ãžã®TakeawayïŒæã¡åž°ãç¥èïŒ ä»åã®ç§ãã¡ã®çµéšãããçããã®éçºçŸå Žã§ã掻ããããã€ã³ãããŸãšããŸããã CIå®è¡æéã®ççž®ã¯ãã»ãã¥ãªãã£ã¯ãªãªãã£ã²ãŒãåãã®çµ¶å¯Ÿæ¡ä»¶ ã»ãã¥ãªãã£ã¹ãã£ã³ããŒã«ïŒSASTïŒãå°å
¥ããŠããå®è¡æéãé·ããšPRã®å¿
é ãã§ãã¯ã«èšå®ã§ãããã»ãã¥ãªãã£ããã»ã¹ã圢骞åã»è匱åããŠããŸããŸãããã¹ãã£ã³ãé«éåããå¿
é ã¯ãªãªãã£ã²ãŒããšããŠCIã«çµã¿èŸŒãããšãããããå
ç¢ãªCI/CDã»ãã¥ãªãã£ãå®çŸããéµãšãªããŸãã ã©ã€ããµã€ã¯ã«ãç°ãªã巚倧ã³ãŒãã¯å¥ãªããžããªãžåé¢ãã 200 MBã倧å¹
ã«è¶
ãã巚倧ãªãµãŒãããŒãã£ãŒè£œã©ã€ãã©ãªãã¡ã€ã³ãªããžããªã«å«ãç¶ãããšãéçè§£æããã«ãæéã®ããã«ããã¯ã«ãªããŸãããããã¯ãæ¬äœãšã©ã€ããµã€ã¯ã«ãç°ãªããœãããŠã§ã¢ã¯ããããŠåäžãªããžããªã§ç¶æãããå¥ãªããžããªãšããŠåé¢ã»éçšããããšãã¢ãŒããã¯ãã£äžãæå¹ã§ãã Gitã®å±¥æŽã¯å±äººåãããã¬ããžãæãæåŒ·ã®ããã¥ã¡ã³ã åœæã®æ
åœè
ãäžäººãæ®ã£ãŠããªãç¶æ³ã§ããGitã®å±¥æŽããã£ããæ®ã£ãŠããã°ããã€ã»ãªãã»äœãå°å
¥ãããã®ãããæ£ç¢ºã«çªãæ¢ããããšãã§ããŸããæŽå²ãããªããžããªã®èª¿æ»ã«ãããŠãGitã®ãã°ã蟿ãéèŠæ§ãå確èªããŸããã ãããã« CodeQL-powered analysis for Code Qualityã¯ãã¹ãã£ã³å¯Ÿè±¡ãæé©åããããžã§ã¯ãã®æ§æãé©åã«ä¿ã€ããšã§ãæ¬æ¥ã®åªããããã©ãŒãã³ã¹ãçºæ®ããŠãããŸãã 10幎以äžã®æŽå²ããããªããžããªã§ããé©åãªæ£åžããšã¢ãŒããã¯ãã£ã®èŠçŽããè¡ãã°ãDXãšã»ãã¥ãªãã£ã®äž¡ç«ã¯ååã«å¯èœã§ãããããCIãé
ããŠå¿
é åã§ããªãããšãæ©ã¿ã®å Žåã¯ããªããžããªå
ã«é·å¹Žé®åº§ããŠããå€éšã³ãŒããåé¢å¯èœãªã¢ãžã¥ãŒã«ããªããããã²æ¢ããŠã¿ãŠãã ããïŒ ãŸãããããããšäžç·ã«ã¬ã¬ã·ãŒã¢ããªã±ãŒã·ã§ã³ã®ç¶ç¶çã¢ããã€ãºãããããšã³ãžãã¢ãåéããŠããŸãã詳ããã¯åœç€Ÿæ¡çšãµã€ããã芧ãã ããã
ã¯ããã« ããã«ã¡ã¯ãAIãã¯ãããžãŒã°ã«ãŒãã®æ€çŽ¢ããŒã ã§ãã æšå¹Žå
¬éãã ãšãã°ã¢ã®AI掻çšãæ¯ãããAIãã¯ãããžãŒã°ã«ãŒããã«ã€ããŠç޹ä»ããŸãïŒ ã§ã¯ãã°ã«ãŒãå
šäœã®äœå¶ãšåããŒã ã®åœ¹å²ã玹ä»ããŸããã æ¬èšäºã§ã¯ãã®ãªãã®æ€çŽ¢ããŒã ã«çŠç¹ãåœãŠãæ¥ã
ã©ããªã·ã¹ãã ãéçšããã©ããªæ¡ä»¶ãé²ããŠããããããäžæ®µè©³ãããäŒãããŸãã æ€çŽ¢ããŒã ã¯ååã®ãšãã BUYMA ã®æ€çŽ¢ã·ã¹ãã ãæ
åœããŠããŸãããããã ãã§ã¯ãããŸããã ããŒã¿ãµã€ãšã³ãã£ã¹ããéçºããã¢ãã«ãå®å®ããŠåãã MLOps ãšãçæAIã䜿ã£ãã·ã¹ãã ã®å®è£
ã»PoC ãæ
ã£ãŠããŸããæ€çŽ¢åºç€ããæ©æ¢°åŠç¿ã®æ¬çªåãAI ã®å®è£
ãŸã§ãåãããŒã ãèŠãããšã§ãã€ã³ãã©ããã¢ããªã±ãŒã·ã§ã³ãŸã§äžæ°é貫ã§èª²é¡ãè§£ããã®ããã®ããŒã ã®ç¹åŸŽã§ãã 察象èªè
ãšããŠã¯ãæ€çŽ¢ã»MLOpsã»ããŒã¿åºç€ãŸããã®ãšã³ãžãã¢ã®æ¹ãæ³å®ããŠããŸããæ€çŽ¢ãšã³ãžãã¢ãšããè·çš®ã¯å°éæ§ãé«ããäŒç€Ÿã«ãã£ãŠæ
åœç¯å²ã倧ããéããã®ãšæãããŸããBUYMA ã®æ€çŽ¢ããŒã ãå®éã«äœãããŠãããããã®å
·äœæ§ã瀺ãããã®é åã®ã€ã¡ãŒãžãæã£ãŠãããããšãããã®èšäºã®ç®çã§ãã æ€çŽ¢ããŒã ã®åœ¹å² æ€çŽ¢ããŒã ã®æ¥åã¯ã次ã®3ã€ã®æ±ã§æŽçã§ããŸããã°ã«ãŒã玹ä»èšäºã§è§Šããå
容ããæ¬èšäºã§ã¯æ¡ä»¶ã®ç²åºŠãŸã§èœãšããŸãã BUYMA ã®æ€çŽ¢ã·ã¹ãã ã®éçšæ¹å 倧å°ããããŠ8ã€ã®æ€çŽ¢ã·ã¹ãã ãéçšãããã®äžæ žã§ããååæ€çŽ¢ã§ã¯ããŠãŒã¶ãŒãæ¢ããŠããååãèŠã€ããããç¶æ
ãç¶æããã MLOps ããŒã¿ãµã€ãšã³ãã£ã¹ããéçºããã¢ãã«ããæ±ããããã¬ã€ãã³ã·ã»å¯çšæ§ã»ã»ãã¥ãªãã£ãæºããåœ¢ã§æ¬çªã«èŒããç¹°ãè¿ãæ¹åã§ãããµã€ã¯ã«ãã€ããã AIã·ã¹ãã ã®éçºã»PoC çæAIãã¯ãããšãããµãŒãã¹ã䜿ããBUYMA åãã® AI æ©èœãå®è£
ããPoC ã§çµããããéçšã«èŒããšãããŸã§æã£ãŠããã æ€çŽ¢ããŒã ã®3ã€ã®æ±ãæ€çŽ¢ãMLOpsãçæAIã®å®è£
ã»PoC æ
åœç¯å²ã¯æ€çŽ¢ãšã³ãžã³ãã®ãã®ã«ãšã©ãŸããŸãããæ€çŽ¢APIãååããŒã¿ã®æå
¥ãäžéDBïŒMySQLïŒãã¯ã©ã¹ã¿ãç£èŠãCI/CD ãŸã§ãæ€çŽ¢ãšæ©æ¢°åŠç¿ãµãŒãã¹ãåãããã®äžåŒãèŠãŠããŸãã ãããã®åºç€ã¯ Google CloudïŒä»¥äžãGCPïŒ äžã§éçšããŠãããGKEãCloud RunãVertex AI ãªã©ãçµã¿åãããŠæ§æããŠããŸãã æ€çŽ¢ã·ã¹ãã ã®éçšæ¹å æ€çŽ¢ã·ã¹ãã ã®éçšæ¹åã§ã¯ããŸããæ€çŽ¢ãæ¢ãŸããšäœãèµ·ãããããæ¬¡ã«ããªãæ¬äœããç¬ç«ã§ãããããæåŸã«ãç¬ç«ããããããé²ãã§ãã Elasticsearch ãžã®èŒãæ¿ããã®é ã§æžããŸããæ€çŽ¢ãæ¢ããªãããšãåæã§ããã®ããã§åºç€ãé²åãããããšããã®ããã®é åã®é²ãæ¹ã§ãã 1. æ€çŽ¢ãæ¢ãŸããšãçºèŠã賌å
¥ãæ¢ãŸã BUYMA ã¯äžçäžã®ãã¡ãã·ã§ã³ã¢ã€ãã ã賌å
¥ã§ããããŒã±ãããã¬ã€ã¹ã§ãã åºåäžçŽ630äžç¹ã®ãªãããããŠãŒã¶ãŒããããã ããšæããååã«ãã©ãçãããã®å
¥å£ãæ€çŽ¢ã§ããããŒã¯ãŒããã«ããŽãªããã©ã³ããäŸ¡æ Œãªã©ã®æ¡ä»¶ãçµã¿åãããŠæ¢ãäœéšããçºèŠãšè³Œå
¥ãæ¯ããŠããŸãã ããŒã¯æã®æ€çŽ¢ãªã¯ãšã¹ãã¯çŽ400 RPS ã«éããŸããæ€çŽ¢ãæ¢ãŸããšãç»é¢ã¯æ®ã£ãŠããŠãã賌å
¥ãŸã§ã®å°ç·ãéåããŸãã ãµãŒãã¹ã®äž»è»žãæ
ã£ãŠããããšãã宿ã¯ããã«ãããŸãã çµã蟌ã¿ããã¡ã»ããã䞊ã³é ãå«ããçŸè¡ã®æ€çŽ¢äœéšãç¶æãããŸãŸãåºç€ãé²åãããŠããå¿
èŠããããŸãã æ€çŽ¢ããŒã ã管çããŠããæ€çŽ¢ã·ã¹ãã ã¯ã倧å°ããããŠ8ã€ãããèŠæš¡ãçšéãããŸããŸã§ããæ¬èšäºã§ã¯ãã®ãã¡ããŠãŒã¶ãŒã®çºèŠãšè³Œå
¥ã«çŽçµããååæ€çŽ¢ã«çµã£ãŠæžããŸãã ååæ€çŽ¢ã§ã¯ãGKE ç°å¢ã®æŽæ°ãäžéDBã® MySQLãæ€çŽ¢APIãã€ã³ããã¯ã¹æŽæ°ãŸã§ãäžäœã§èŠãŠããŸããããŸã¯æ€çŽ¢ãæ¢ããªãéçšãšåºç€æŽæ°ãäžå¿ã§ãæ€çŽ¢çµæã®ç²ŸåºŠãããããããŠããã®ã¯ãã®å
ã§ãã æ€çŽ¢ã·ã¹ãã ã®å€é·ã«ã€ããŠã¯ã以åã®å·æ°ã®èšé²ããããŸãã BUYMAã®æ€çŽ¢ã·ã¹ãã ãå·æ°ããã話 2. GCP ç§»èšãšåæã«å¢çãèšããBUYMA æ¬äœããç¬ç«ã§ãã 2024幎7æã«ã倧å°ããããŠ8ã€ã®æ€çŽ¢ã·ã¹ãã ããã¹ãŠ GCP ãžç§»èšããŸãããç§»èšãšåæã«ãBUYMA æ¬äœãšã®å¢çãèšããŠããŸãã ãåœæã®èª²é¡ã ç§»èšåã¯ãæ€çŽ¢ã®å€§ããªå€æŽã BUYMA æ¬äœïŒRails / PHP åŽïŒã®ãªãªãŒã¹ãµã€ã¯ã«ã«åŒãããããããæ§é ã§ãããæ€çŽ¢ãšã³ãžã³ã®ã€ã³ããã¯ã¹ã®æŽãæ¿ããªã©ããæ¬äœãšåãé¢ããŠé²ãã«ããç¶æ
ã§ãã ãèšãã2ã€ã®å¢çã åç
§ : æ¬äœã¯æ€çŽ¢ãšã³ãžã³ã®å®è£
ãæèãããæ€çŽ¢APIã®ã€ã³ã¿ãã§ãŒã¹ãéããŠæ€çŽ¢ãå©çšãã æŽæ° : ååããŒã¿ã®æŽæ°ã¯ãMySQL ãæãã§æ€çŽ¢åŽãžæž¡ã æ€çŽ¢APIãšæ€çŽ¢ãšã³ãžã³ã¯ãæ€çŽ¢ããŒã ã®ãªããžããªãšãããã€ã§å®çµããŸãããã®å¢çãããããšã§ãæ€çŽ¢åŽã®åºç€å€æŽã BUYMA æ¬äœã®ãªãªãŒã¹ãåŸ
ã€å¿
èŠããªããªããŸããã åç
§ã¯æ€çŽ¢APIãæŽæ°ã¯MySQL 8ã€ãã¹ãŠãåãåãåºãæ¹ã«ãªã£ãŠããããã§ã¯ãããŸããã ååæ€çŽ¢ãã¯ãããšããäž»èŠãªæ€çŽ¢ã¯ãæ€çŽ¢APIãå¢çã«ç¬ç«ããæ§æ ã§éçšããŠããŸããæ®ãã®ã·ã¹ãã 㯠GCP äžã§åããŠããŸãããæ¬äœãšã®çµåã®åºŠåãã¯ããããç°ãªããŸãã ãç¬ç«ããŠé²ããããã«ãªã£ãããšã ç¬ç«ããæ€çŽ¢ã§ã¯ã æ€çŽ¢é åã ãã®æ¡ä»¶ããæ€çŽ¢ããŒã ã®è£éã§äŒç»ã»æ€èšŒã»ãªãªãŒã¹ãããããªã£ã ããšã倧ããã§ãããã€ã¯ããµãŒãã¹åã®å¹æã¯ãéçšã楜ã«ãªãããšã ãã§ã¯ãããŸããã ããšãã°æ¬¡ã®ãããªæ¥åããæ¬äœã®å€§èŠæš¡ãªãªãŒã¹ã«ä¹ããããšãªãé²ããããŸãã æ€çŽ¢ã¯ã©ã¹ã¿ã®æ§æå€æŽãã¹ã±ãŒã« ã€ã³ããã¯ã¹ã®æå
¥ãã€ãã©ã€ã³ã®å·æ° æ€çŽ¢APIã®çœ®ãæã æ€çŽ¢ãšã³ãžã³ãã®ãã®ã®æ€èšŒã𿮵éçãªèŒãæ¿ã èŸæžããããã³ã°ã®æŽæ°ããæ€çŽ¢ãæ¢ããã«åæ ããä»çµã¿ é垞㯠BUYMA æ¬äœãåŸæ¥ã©ããæ€çŽ¢APIãåŒã¹ã°ãããè£åŽã®å®è£
ã¯æ€çŽ¢ããŒã ãå·®ãæ¿ããããŸãããããã€ã¯æ€çŽ¢åŽã§å®çµããŸããã€ã³ã¿ãã§ãŒã¹ãããŒã¿ã®æå
¥å£ãå€ãããšãã ããæ¬äœåŽã®ãªã¯ãšã¹ãåŠçãæŽæ°åŠçãŸã§æ€çŽ¢ããŒã ãæ
ããŸããå°éæ§ã®é«ãæ€çŽ¢ã®åé¡ããæ€çŽ¢ãã¡ã€ã³ã®äžã§å®çµããŠè§£ããç¶æ
ã§ããæ€çŽ¢ãç¬ç«ãããããã¯ããšããŠæ±ããããšããã®ãããŸã®é²ãæ¹ã®åæã§ãã 3. Solr ãã Elasticsearch ãžã®èŒãæ¿ãããæ€çŽ¢ããŒã ã®ããŒã¹ã§é²ãã ç¬ç«ããŠæ¡ä»¶ãé²ããããããã«ãªã£ãå
·äœäŸããçŸåšé²è¡äžã® Solr ãã Elasticsearch ãžã®ç§»è¡ã§ãã ãåœæã®èª²é¡ã ååæ€çŽ¢ãæ¯ããŠããã®ã¯ Apache Solr ã§ããGCP äžã§åäžããŒã¿ãæã€2ã¯ã©ã¹ã¿ãåèš24ããŒãã®åé·æ§æã§ããã¹ã±ãŒã«ãéçšã®æè»æ§ãäžããããŠããæ¬äœãšçµåãããŸãŸã§ã¯ãšã³ãžã³ããšå€ãã倿ã¯çŸå®çã§ã¯ãããŸããã§ããã ããŸã¯åã GCP äžã§ãElasticsearch ãžã®çœ®ãæããæ€èšŒã»æ§ç¯ããŠããŸãã ãç§»è¡ã§å€ããªãèŠä»¶ã åºåäžçŽ630äžç¹ã®ååã察象ã«ããå
šææ€çŽ¢ ãã©ã³ãã»ã«ããŽãªã»äŸ¡æ Œãªã©ã®ãã¡ã»ãã çŸè¡ã«è¿ã䞊ã³é ã»ã°ã«ãŒãå ããŒã¯çŽ400 RPS ã§ãããŠãŒã¶ãŒåãã®å¿çé床ãç¶æããããš ã€ã³ããã¯ã¹ã®æŽãæ¿ãã®ããã«æ€çŽ¢ãæ¢ããªãããš ã解決ãžã®ã¢ãããŒãã ãšã³ãžã³éžå® ãã«ãããŒãžãã®æ€çŽ¢ãµãŒãã¹ãæ€èšããŸãããããã¡ã»ãããè€éãªãœãŒããçŸè¡ã©ããèŒããã«ã¯ãã«ã¹ã¿ãã€ãºã®äœå°ãè¶³ããŸããã§ãããæ¢åã® GCP ç°å¢ãšã®çµ±åã®ãããããèžãŸããElasticsearch ã GKE äžã§éçšããæ¹éã«ããŠããŸã ã¯ã©ã¹ã¿æ§æ Solr ã§ã¯å®å®éçšã®ããã«å¿
èŠã ã£ã2ã¯ã©ã¹ã¿ã®åé·æ§æããElasticsearch ã§ã¯1ã¯ã©ã¹ã¿ã«ãŸãšããæ³å®ã§ã æ€çŽ¢APIã®å·æ° æ€çŽ¢APIãšããŒã¿æå
¥ãæ€çŽ¢ã·ã¹ãã åŽã§äœãçŽããŠããŸããæ¬äœåãã®ã€ã³ã¿ãã§ãŒã¹ã¯çŸè¡ã«åããã€ã€ãè£åŽã¯ Solr åæã®å®è£
ããåãé¢ããŸããçŸè¡ã®æ€çŽ¢API㯠Python ã§ãCPU 䜿çšçãé«ããã¢ã¯ã»ã¹ãå¢ãããš 20ã30 ã€ã³ã¹ã¿ã³ã¹ãèµ·åããã³ã¹ããå¢ããããç¶æ
ã§ããæ°ããAPI㯠Go ã«æžãæããCloud Run äžã«èšçœ®æžã¿ã§ãããæ¬çªãã©ãã£ãã¯ã®åæ¿ã¯ããããã§ã ã¯ãšãªã®èŠçŽã Solr åãã®ã¯ãšãªããã®ãŸãŸåãããšãããèŠãç®ã®æ€çŽ¢çµæã¯è¿ã¥ããã€ããã§ããæ¬çªçžåœã®è² è·ãããããšããã200 RPS ã§é æã¡ããããŒãã® CPU ã飜åããŸãããçŸè¡ã®æ€çŽ¢äœéšã¯æ®ãããŸãŸäœåºŠãã¯ãšãªã®çµã¿ç«ãŠãèŠçŽããããŒã¯çŽ400 RPS ã®èŠä»¶ã«ä¹ãããããšãã¯å€§ããªéææããããŸãã çŸè¡ Solr ã¯åäžããŒã¿ã®2ã¯ã©ã¹ã¿ãElasticsearch ã¯1ã¯ã©ã¹ã¿ã«ãŸãšãã æ€çŽ¢ããã€ã¯ããµãŒãã¹ãšããŠç¬ç«ããŠãããããããçŸè¡ Solr ãæ¢ããã«äžŠè¡ããŠæ€èšŒããæ€çŽ¢ããŒã ã®ããŒã¹ã§èŒãæ¿ããé²ããããŠããŸãã MLOpsïŒã¢ãã«ãã宿çã«ãå®å
šã«ãæ¬çªãžèŒãã æ€çŽ¢ããŒã ã¯ãããšããšæ€çŽ¢ãšã³ãžãã¢ãªã³ã°ã®å°ä»»ã§ããã æšèŠãæ©æ¢°åŠç¿ã®æ¡ä»¶ãå¢ããã«ã€ããŠãã¢ãã«ãæ¬çªã§åããç¶ããåºç€ããããã MLOps ãæ
åœããããã«ãªããŸããã å®éšãæ¬çªã®å®æãžã§ãã«èŒããéçšãåã ã圹å²åæ
ã ããŒã¿ãµã€ãšã³ãã£ã¹ãã¯ãæœçã®èšèšãç¹åŸŽéãåŠç¿ãè©äŸ¡ãæ
ããŸããæ€çŽ¢ããŒã ã¯ããã®ææç©ããªã³ã©ã€ã³ã®æšè«ã§ããæ¯æ¥ã»æ¯é±ã®ãããã§ããæ³å®ããå質ã§åãç¶ããããã®å®è¡åºç€ãæ
ããŸãã äžæ£æ€ç¥ã«ã€ããŠã¯ãåæã»å°å
¥å€æã®çµç·¯ãå¥èšäºã§ã玹ä»ããŠããŸããæ€çŽ¢ããŒã ã®åœ¹å²ã¯ãããããã¢ãã«ããæ€èšŒã§çµãããããéçšã«èãããµãŒãã¹ãã«ããåŽã§ãã 察å¿äŸ: äžæ£å¯Ÿçã®æ©æ¢°åŠç¿å°å
¥ãŸã§ã«æ€èšŒããããš ãåºç€ã®æ§æã åŠç¿ã»æšè«ã¯ Vertex AI PipelinesïŒKubeflow PipelinesïŒäžã®ãã€ãã©ã€ã³ãšããŠå®çŸ©ããååŠçã»åŠç¿ã»äºæž¬ã»è©äŸ¡ãªã©ã®ã³ã³ããŒãã³ãã¯ã³ã³ããã€ã¡ãŒãžãšããŠããŒãžã§ã³ç®¡çããŸããGitLab CI/CD ã§ãã¹ãããã«ãããããã€ãŸã§ã€ãªããæšè«çµæãäžæµã®ãµãŒãã¹ãããããåãåãã圢ã§å±ããŸãã ãã€ãã©ã€ã³ã«ã¯ãæšèŠãäžæ£å¯Ÿçã宿ãããã§åãã¹ã³ã¢ç³»ãªã©ããªã³ã©ã€ã³ã®æšè«ãšãããã®äž¡æ¹ãèŒããŠããŸãã ããŒã¿ãµã€ãšã³ãã£ã¹ãã®å®éšããCI/CD ãš Vertex AI Pipelines ãçµãŠåœ¢ã«ãã ããã¡ã°ãè©°ãŸã£ããšããïŒããŒãžã§ã³æŽåã ãã€ãã©ã€ã³å®çŸ©ãã³ã³ããŒãã³ããäžæµã®ãžã§ãã§å
±éã©ã€ãã©ãªã䜿ãåããšãã®ããŒãžã§ã³æŽåã§ããçæ¹ã ãæ°ããã€ã¡ãŒãžã«èŒãæ¿ãããšãåŠç¿ã¯éã£ãŠããæšè«åŽã§æ³å®ã©ããåããªãããšããããŸããæŽŸæãªé害ã§ã¯ãªãã®ã§ãããåå ã®åãåãã«æéããããã¿ã€ãã§ããã³ã³ããŒãã³ããšãã€ãã©ã€ã³ã®ããŒãžã§ã³ãåããå
±éã©ã€ãã©ãªã®æŽåãåããªããåãããã«ããããšã§ã倧ããªå®å¿æãåŸãããŸããã ããã®é åã®é¢çœãã æ©æ¢°åŠç¿ã·ã¹ãã ã¯ãäžåºŠåºãã°çµããã§ã¯ãããŸãããããŒã¿ãå€ãããã¢ãã«ãæŽæ°ããããããå€ãåããŸãããã®ãã³ã«åãå質ã§åºãçŽããç¶æ
ãç¶æããŸããã¬ã¹ãã³ã¹é床ãå¯çšæ§ãã»ãã¥ãªãã£ã¯ãæ€çŽ¢APIãšåãç®ç·ã§èšèšããŸãã ããã§ã®é¢çœãã¯ãã¢ã«ãŽãªãºã ãã®ãã®ãšããããã å®éšãæ¬çªã®å®æãžã§ãã«èŒããéçšãåããç¶æ
ã«ããããš ã§ãã AIã·ã¹ãã ã®éçºã»PoC 以åã¯æ€çŽ¢éçšãš MLOps ãäž»ã§ããããçæAIã® API ãå®çšçã«ãªã£ãããšããããAI ã䜿ã£ãã·ã¹ãã ã®éçºã PoC ãæ
åœããããã«ãªã£ãŠããŸãã ããã¹ããç»åã察象ã«ãããã§ãã¯åŠçãæ¬çªã«èŒããã»ããååæ€çŽ¢ãšã€ãªãããAIã§ããããã«ãé¢ãã£ãŠããŸãã çæAIã«ããææ
åæã»åçš®ãã§ã㯠ã察象ã«ããŠãããã®ã BUYMA ã¯ãåºåè
ãšè³Œå
¥è
ãã¡ãã»ãŒãžã亀ãã CtoC ã®å Žã§ããããŸããæ£åœãªååã®ãããšãïŒåšåº«ããµã€ãºãè²å³ãé
é远跡ãå
¬åŒãµã€ããšã®ç
§åïŒãšãã¹ãã ã»ãã£ãã·ã³ã°ã»å€éšèªå°ãåãåããå¿
èŠããããŸãã ãã«ãŒã«ããŒã¹ã ãã§ã¯è¶³ããªãçç±ã ã«ãŒã«ããŒã¹ã ãã§ã¯ãæ°ããæå£ã«è¿œãã€ããŸãããéã«ãå€éšURLãããããBUYMA ã®å€ã®ãµã€ãã ãã ãã§æ¢ãããšãæ£åžžãªè³Œå
¥äŒè©±ãŸã§äžå¯ãšãªã£ãŠããŸããŸãã ãå®è£
ããŠãããã§ãã¯ã æ€çŽ¢ããŒã ã§ã¯ Gemini ã䜿ããæ¬¡ã®ãããªãã§ãã¯ããã€ã¯ããµãŒãã¹ãšããŠå®è£
ããŠããŸãã åãåããã¡ãã»ãŒãžã®ã¹ãã ã»ãã£ãã·ã³ã°å€å® ææ
åæãªã©ãããã¹ãã®ããŒã³ããªã¹ã¯ãèŠãåŠç ç»åã«å«ãŸãããå€éšãµã€ããžã®èªå°ã«ã€ãªãããããèŠçŽ ã®æ€åº ãéçšäžã®å€æã åæã® API ãšããŸãšããŠåŠçãããããã®äž¡æ¹ããããŸãã鿀ç¥ãšèŠéãã®ã©ã¡ãã蚱容ãããã¯ãã«ã¹ã¿ããŒãµããŒããäžæ£å¯Ÿçã®éçšããŒã ãšããåãããŸããã¢ãã«ã®äžä»£ãäžãã£ããšãã¯ã粟床ã»é床ã»ã³ã¹ãã®ãã©ã³ã¹ãèŠãŠèŒãæ¿ãããã©ãããæ±ºããŸããéããé«ã³ã¹ãããããã¯é«ç²ŸåºŠã ãã¬ã€ãã³ã·ãåããªãããšãã£ãäžäœã¢ãã«ãèŠéã倿ãããã«å«ãŸããŸãã ãBUYMAãã¡ã€ã³ã®å¶çŽã æ€çŽ¢ã§ãçŸè¡ã®äœéšãç¶æãããŸãŸè£åŽãå·®ãæ¿ãããã®ãšåãã§ãçæAIã§ãããŸããã¡ã€ã³ã®å¶çŽããèšèšããŸãããã¡ãã·ã§ã³ã® CtoC ã§ã¯ãéåœã»æ¬§ç±³ã®æ£èŠ EC ã® URL ãé
éäŒç€Ÿã®è¿œè·¡ãªã³ã¯ã¯æ¥åžžçã«ç»å ŽããŸãããã®æèãç¡èŠããæ±çšã®ã¹ãã å€å®ã§ã¯ãå®éçšã«ã¯èããŸããã çæAIãšååæ€çŽ¢ã®æ¥ç¹ïŒãAIã§ãããã BUYMA ã®ãAIã§ããããã¯ãèšäºã³ã³ãã³ããæ ¹æ ã«ããææ¡ãžãšé²åããŠããŸãã ããã¯ãæ€çŽ¢ããŒã ãéçšããååæ€çŽ¢APIãšãçæAIåŽã®ããŒã¯ãŒãçæã»ææžæ€çŽ¢ãæ¥ç¶ããé åã§ããæ€çŽ¢åºç€ãç¬ç«ããŠããããšã§ãAI åŽã®å€æŽãšãååæ€çŽ¢ãšã³ãžã³åŽã®å€æŽã䞊è¡ããŠé²ããããŸãã 察å¿äŸ: ãAIã§ãããããµãŒãã¹ã®ãªãã¥ãŒã¢ã« ããããåãçµãããš æ€çŽ¢ããŒã ãšããŠãç®ã®åã«ãã倧ããªæ¥åã¯æ¬¡ã®ãããªãã®ã§ãã Elasticsearch ã®å質確èªãšãGo 補æ€çŽ¢APIãå«ãããã©ãã£ãã¯ã®æ®µéçãªåæ¿ ç¬ç«ããæ€çŽ¢åºç€ã®äžã§ãæ€çŽ¢çµæã®ç²ŸåºŠãããããããŠããããš æšèŠã»äžæ£æ€ç¥ãªã©ã® ML ãã€ãã©ã€ã³ããããå®å®ããŠåããããèŒããããããããš çæAIã®ãã§ãã¯ã AI æ€çŽ¢ããæ¢åã®æ€çŽ¢ã»ML åºç€ãšç¡çãªãã€ãªãããš ã宿ããåºç€ãä¿å®ããããã§ãŒãºã§ã¯ãããŸãããåãé¢ããæ€çŽ¢ãã©ãããã©ãŒã ã®äžã§ããšã³ãžã³ã ML ã AI ãããŸã èŒãæ¿ããšæ¡åŒµã®éäžã«ãããŸããæ°ã¡ã³ããŒã«ã¯ãã¢ãŒããã¯ãã£èšèšããäž»å°ããŠããã ãäœå°ãååã«ãããŸãã ã€ã³ãã©ãã APIãããŒã¿ãè©äŸ¡ãŸã§ããåãããŒã ã§æ
ã£ãŠããã®ãééå³ã®äžã€ã§ãã ãããã« æ€çŽ¢ããŒã ã¯ãåºåäžçŽ630äžç¹ãæ¯ããååæ€çŽ¢ãã¯ãããBUYMA ã®æ€çŽ¢ãæ¢ããªãããšãšãæ©æ¢°åŠç¿ãšçæAIãæ¬çªã«èŒããããšã䞊è¡ããŠå®æœããŠããŸãã 2024幎㮠GCP ç§»èšã§æ€çŽ¢APIãå¢çã«ããŠååæ€çŽ¢ãç¬ç«ãããããšããããŸã® Elasticsearch ç§»è¡ã®ãããªãæ€çŽ¢åäœã®å€§ããªæ¡ä»¶ããå¯èœã«ããŠããŸãã çŸåšã¯æ€çŽ¢ããŒã ãšããŠã®å¹
ãåºããæ€çŽ¢åºç€ã»MLOpsã»çæAIãŸã§ãèŠãŠããŸãã ä»åŸã¯ããŒã¿åºç€ããŒã çãšçµ±åãããããã©ãããã©ãŒã å
šäœãèŠãäœå¶ãžå€é·ããŠããäºå®ã§ããæ€çŽ¢ã«éãããããŒã¿ãéããã¢ãã«ãåãããµãŒãã¹ãšããŠå±ãããšãããŸã§ãåãèŠç¹ã§æ±ããå Žããããã«åºãã£ãŠãããšèããŠããŸãã ãããŸã§ãããŸç§ãã¡ãæ
åœããŠãããã®ãšãããããåºãã£ãŠããæ¥åã®ç¯å²ãæžããŠããŸãããå°ãã§ãæ¥åã€ã¡ãŒãžãäŒããã°å¹žãã§ãã æ ªåŒäŒç€Ÿãšãã°ã¢ ãã¹ãŠã®æ±äººäžèЧ hrmos.co
ãã¡ãã®èšäºã¯ãMEDLEY Summer Tech Blog Relayãã®17æ¥ç®ã®èšäºã§ãã MEDLEY Summer Tech Blog Relay | MEDLEY Developer Portal ããã«ã¡ã¯ïŒDevRelã®éç°ïŒ@Shige0096ïŒã§ãã ã¡ãã¬ãŒã§ã¯å€äŒç»ãšããŠãMEDLEY Summer Tech Blog Relayããšé¡ããŠãããã°ãªã¬ãŒãéå¬ããŸãïŒ 7/13(æ)ã8/21(é)ãŸã§æ¯æ¥ç°ãªãã¡ã³ããŒã... developer.medley.jp ã¯ããã« æ ªåŒäŒç€Ÿã¡ãã¬ãŒ 人æãã©ãããã©ãŒã æ¬éšã§ãšã³ãžãã¢ãããŠããŸããäœè€ã§ãã çŽè¿ã®7æã«ãšã³ããŠãŒã¶ãŒåãã®éçºæ
åœããŒã ã®ãªãŒããŒããããã©ãããã©ãŒã éçºæ
åœã®ããŒã ãžãªãŒããŒãšããŠç°åããŸããã1ã¶æåã»ã©çµã¡ãŸããã®ã§ãç°ååŸã®ãã€ã³ãã»ããã®å€åãåŠã³ãèšèŒãããŠããã ããã°ãšæããŸãã ãã©ãããã©ãŒã ããŒã ã«ã€ã㊠åŒç€Ÿäººæãã©ãããã©ãŒã æ¬éšã§ã®ãã©ãããã©ãŒã ããŒã ã§ã¯ãéçºè
äœéšã®åäžããããã¯ãéçºã®ã¹ããŒãã»åè³ªã®æç¶çãªåäžãç®çãšããçŸç¶ä»¥äžã®ãããªåãçµã¿ã宿œããŠããŸãã ã·ã¹ãã ãšããŠå¿
é ã®ãµããã¡ã€ã³ãå
±éåºç€ãšããŠåãåºãã»MSAå Ruby on Railsãã¯ãããšããå©çšã©ã€ãã©ãªã®ããŒãžã§ã³ã¢ããã®ä»çµã¿å CI/CDã»ç£èŠã¢ã©ãŒãçã®æé©å AIãå©çšãããã°æ€åºâèªåè§£æ¶ã®ä»çµã¿å AIã§ã®éçºãåæãšããéçºç°å¢ã®æŽåããªã© â»ã¡ãã¬ãŒã§ã¯çæAIå©çšã®ã¬ã€ãã©ã€ã³ã瀟å
ã§å±éãããŠãããåéšéã®æ¥åã§ã¯ãã®ã¬ã€ãã©ã€ã³ã«æ²¿ã£ãŠå©çšãããŠããŸãã ç°ååã«ãã£ãŠããããš ãšã³ããŠãŒã¶ãŒåãã®éçºãè¡ã£ãŠãããšãã¯ãåœç¶ã§ããæ
åœãã¡ã€ã³é åã«ãããŠã®äŸ¡å€ã®æå€§åãç®çãšããŠããŸãããPdMãšååããªãããæ¯èŒççæã®ãããžã§ã¯ããæ¹åæœçãç¶ç¶çã«ãªãªãŒã¹ããäœå¶ãäœãããšããåãã§ãã å質åé¡ããªãç¶æ³ã§ãæ©ãåºããæ©ããã£ãŒãããã¯ãåŸãŠãKPIã«å¯Ÿã广ãåºãã°ãã®ãŸãŸç¶ç¶ãæªåœ±é¿ãåºããåãæ»ãããšãã圢ã§ãã£ãŒãããã¯ãµã€ã¯ã«ãé«éã«åãããšãäž»çŒã«ãããŠããŸããã ãã¡éçºè
ãšããŠã®ãã€ã³ãæããå Žé¢ãå€ãã£ãããããã©ãããã©ãŒã ããŒã ãžã®ç°ååŸã¯ãããã£ããã®ãé«éã§è§£æ¶ããŠããããšãããã€ã³ãã»ããã§ããŸããã ç°ååŸã®æžæã ç°ååŸã¯ãããŒã ã®çŸç¶ã®åãçµã¿ãææ¡ãã€ã€ã以äžã®ãããªæ¥åã宿œããŠããŸããã å
±éåºç€ãžã®æ©èœè¿œå æ¢åã³ãŒãã®ç®¡çäœå¶ãšCDã®æŽå éçšæ¥åã®å®çŸ©ãšå¯Ÿå¿èšç»ã®ç«æ¡ éçºç°å¢ã®æŽå 宿œããäžã§ãã1ã2æ¥çšåºŠã§çµãããšæã£ãŠãããã®ãæã£ããããããããäžã€äžã€ã®çè§£ã«æéããããããšãã£ããèªåã®äžã®èŠèŸŒã¿ãšã®ãºã¬ãæããããã«ãªããæ³å®ããã¹ããŒããåºããªãããšã«çŠããšæžæããæããŠããŸããã æè¡ã¹ã¿ãã¯èªäœã¯ç°ååãšå€§ããå€ãã£ãŠããªãã®ã«ããŸããããªãããã®éåæã®æ£äœãæ¯ãè¿ããšãéçºã®æ§è³ªã®éããšããŠä»¥äžã®2ç¹ããã£ãããã«æããŸãã 宿ããéã 1. ãµãŒãã¹éã®è²¬åãæ
éã«åãæ±ãå¿
èŠããã ç°ååã¯åºæ¬çã«åäžãã¡ã€ã³ãšããã«çŽã¥ãã·ã¹ãã ã®éçºãäžå¿ã ã£ãããã責åã®å¢çãã³ãŒãã¬ãã«ä»¥äžã«æèããããšã¯ããŸããããŸããã§ãããèªåã®ãã¡ã€ã³ã®äžãå€ããèªæã§ãå€ãªãå¥ã®ããŒã ã«çžè«ããã°æžãã ããã§ãã äžæ¹ã§ãå
±éåºç€ãšåã·ã¹ãã ããŸããéçºã§ã¯ãã©ã¡ãã«è²¬åãæãããã¹ãããäŸåã¯ã©ã®çšåºŠã«ãšã©ããã¹ãããããã¡ããæ±ºããåŽã«åããŸãã 象城çã ã£ãã®ããå
±éåºç€åŽã§èµ·ããç¶æ
å€åãåã¢ããªã±ãŒã·ã§ã³ãžäŒããä»çµã¿ãæ€èšãããšãã®ããšã§ããæåã«çæããã®ã¯ææ®µã®æ¯èŒã§ããã åæ¹åã§éä¿¡ã§ããããã«ããå
±éåºç€åŽããã¢ããªã±ãŒã·ã§ã³åŽã®APIãå©ã å
±éåºç€ãéåæã®ã€ãã³ããšããŠæµããã¢ããªã±ãŒã·ã§ã³ãåãåã ã¢ããªã±ãŒã·ã§ã³åŽã§ããŒãªã³ã°ãã ãªã©ããã€ãææ®µãæ¯èŒæ€èšããæ¹åŒã決ããããŠããŸããã éäžã§æ°ã¥ããã®ã¯ãæ¯èŒããŠããæ¡ã®ããã€ãã ãå
±éåºç€ãåã¢ããªã±ãŒã·ã§ã³ã®ããšãç¥ã£ãŠããã 圢ã«ãªã£ãŠããããšã§ãããåºç€åŽããåã¢ããªã±ãŒã·ã§ã³ãžéä¿¡ããã«ã¯ãå°ãªããšãå®å
ã®URLã»èªèšŒæ
å ±ãªã©ãåã
ã®ã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠå€ããæ
å ±ãåºç€ãç¥ã£ãŠããå¿
èŠããããŸãã ãããã¯ãŒã¯çã«ã¯ãçµè·¯ãçšæããã°åæ¹åã®éä¿¡èªäœã¯å®çŸã§ããŸããå
±éåºç€åããŠéããªãææã§ãå©çšããã¢ããªã±ãŒã·ã§ã³ããŸã å°ãªãç¶æ³ã§ãããããã§ããã®åœ¢ãæ¡ããªãã£ãã®ã¯ãå
±éåºç€ã¯å©çšããåŽãå¢ããŠããåæã®ãã®ãªã®ã§ã å©çšåŽã1ã€å¢ãããã³ã«åºç€ãç¥ãã¹ãããšãå¢ãã æ§é ã¯èš±å®¹ããªãã»ãããããšå€æããããã§ãã æçµçã«ã¯èŠä»¶ã®åå®çŸ©ã«ããããªã¢ã«ã¿ã€ã æ§ã®èŠåŠã忀èšããäžã§ãå
±éåºç€åŽã§èµ·ããç¶æ
å€åãã¢ããªã±ãŒã·ã§ã³åŽãç¹å®ã®ããªã¬ãŒã§ååŸãã«è¡ã圢ã«èœã¡çãã責åãäŸåãããã¿ã«å¢ãããã«æžã¿ãŸããã ãã ãåæã§å®è£
ã®ææ®µæ€èšããå
¥ã£ãŠããŸã£ãã¶ããæéã®ãã¹ã¯å€§ããã£ãããã«æããŸãã æéã®ãã¹ä»¥äžã«æ°ã«ããŠããã®ã¯ã倿ã誀ã£ããŸãŸé²ããŠããŸãå¯èœæ§ã®ã»ãã§ãããäŸåã®åœ¢ã¯ãåã¢ããªã±ãŒã·ã§ã³ãããã«ä¹ã£ãããšã§å€ããããšãããšãçžå¿ã®ã³ã¹ãããããå¯èœæ§ãåŠå®ã§ããŸããã誀ã£ã倿ããã®ãŸãŸè² åµãšããŠæ®ãåŸãŸãããåé¡ãšããŠè¡šé¢åããã®ã¯å©çšåŽãå¢ããããšã«ãªããã¡ã§ãã責åãäŸåãæ
éã«åãæ±ãå¿
èŠããããšæããã®ã¯ããã®åŸæ»ãã®ãã«ãããããããã§ããã 2. ãå©çšè
ããšããŠçè§£ããŠããã€ããã®ç°å¢ãããæäŸè
ããšããŠã¯çè§£ã§ããŠããªãã£ã ãšã³ããŠãŒã¶ãŒåãã®éçºãè¡ã£ãŠããéã¯ãèªèº«ããå©çšè
ããšããŠéçºç°å¢ãå©çšããŠããããã®ç¹åŸŽã¯ååã«ææ¡ããŠããã€ããã§ããããæäŸè
ãã®ç®ç·ã§èŠããšããŸã£ããè¶³ããŠããŸããã§ããã éçºçšã®ãã¹ãããŒã¿ã®ä¿®æ£ãã¡ã³ããŒãšé²ããŠãããšãã®ããšã§ããå©çšè
ãšããŠã¯ãå€éã®è€æ°ã®ããŒã¿åŠçãããã«ãã£ãŠããã¹ãããŒã¿ãæå
¥ããããµã³ãããã¯ã¹ç°å¢ãäœãããå§æ¥æã«ã¯å©çšå¯èœã«ãªãããšããçè§£ã§ããããããå®éã«ã¯ãç°å¢ããšã®ããŒã¿åæ æ¡ä»¶ã«å·®åãããããšããäºåæ€èšŒã§æããã«ãªããŸããã æäŸè
ãšããŠã¯ããã®ããŒã¿ãã©ã®ãããªã¯ãŒã¯ãããŒã§äœãããã®ããã©ã®ç°å¢ã«ã¯èªåã§æå
¥ãããŠã©ã®ç°å¢ã«ã¯æå
¥ãããªãã®ããåç
§å
ãç°å¢ããšã«ã©ãåãæ¿ããã®ããŸã§ãææ¡ããŠããå¿
èŠããããŸããã©ãã«æãå ãããšã©ãã«å¯äœçšãåºãã®ããããããåãã£ãŠããªããã°å€æã§ããŸãããããããååã§ãªãã£ãããã忥ããŠããã¡ã³ããŒããã®åé¡æèµ·ãçè§£ããã®ã«æéãèŠããŠããŸããŸããã å©çšè
ãšããŠã®ç¿çã¯ãæäŸè
ãšããŠã®çè§£ã®ä»£ããã«ã¯ãªããªã ãšããã®ãççŽãªå®æã§ããããäžã€äžã€ã®çè§£ã«æéããããããšæããŠããåå ã®å€ãã¯ãå¿
èŠãªçè§£ã®çš®é¡ãå€ãã£ãŠããããšã«æ°ã¥ããªãã£ãããšã«ãããŸããã ãã®äžä»¶ããã£ããã«ãæäŸåŽã®èŠç¹ã§ç°å¢å
šäœã®ã¯ãŒã¯ãããŒãææ¡ãçŽããŸãããå©çšè
ãšæäŸè
ã®éãã¯ãåããããã¯ããè§Šã£ãŠããŠãæ°ä»ãã«ãããã®ã ãšæããŸãã ãããã« ç°ååã¯ãæ©ãåºããŠãæ©ããã£ãŒãããã¯ãåŸããäœå¶ãäœãããšãåªå
ããŠããŸãããå¯éæ§ã®ãããã®ã¯åºãããšããå€æè»žã§èŠèŸŒã¿ãç«ãŠãŠãããšããããšã§ãã äžæ¹ã§ãäžèšã®ãããªçµéšãããçŸåšã¯äºåã®èª¿æ»ã»æ€èšã»çè§£ã«ãªãœãŒã¹ãå²ããäžã§å€æããããšãéèŠããããã軞ãå€ãã£ãŠããŠããŸãã ä»åã®ç°åã§2ã€ã®ç«å Žãçµéšããããšã¯ãéçºã«ãããå€æè»žãå Žæã«ãã£ãŠå€ãããã®ã ãšç¥ãè¯ãæ©äŒã«ãªããŸãããåãããã«ãã©ãããã©ãŒã ãšã³ãžãã¢ãžã®è»¢èº«ãæ§ããŠããæ¹ã®åèã«ãªãã°å¹žãã§ãã Weâre hiring ã¡ãã¬ãŒã§ã¯ãSREãã¯ãããå»çãã«ã¹ã±ã¢ã®æªæ¥ãã€ãããããšã«åãçµããšã³ãžãã¢ãåéããŠããŸãããèå³ããæã¡ããã ããŸãããããã²ãå¿åãã ããã â»ã«ãžã¥ã¢ã«é¢è«ã倧æè¿ã§ãïŒãåžæã®éã¯ãããã®ä»ã®é
ç®ïŒåžæèšå
¥æ¬ïŒãã«ãŠãã®æšããèšèŒãã ããã ã¡ãã¬ãŒã§åãïœæ ªåŒäŒç€Ÿã¡ãã¬ãŒ ã¡ãã¬ãŒã§ã®åãæ¹ã人äºå¶åºŠãæ±äººæ
å ±ãªã©ãæ¡çšã«é¢ããæ
å ±ãã玹ä»ããŸãã www.medley.jp MEDLEY Summer Tech Blog Relay 18æ¥ç®ã®èšäºã¯ç§ããã§ãïŒã楜ãã¿ã«ïŒïŒ
åç»
該åœããã³ã³ãã³ããèŠã€ãããŸããã§ãã















