ããã«ã¡ã¯ãã¡ã«ã«ãª Engineering Officeã®yasu_shiwakuã§ãã ä»å¹Žãã¡ã«ã«ãªãšã¡ã«ãã€ã»ã¡ã«ã³ã€ã³ã§2æ¬ã®Advent Calendarã宿œããŸãïŒ â¶ Merpay & Mercoin Advent Calendar 2025 ã¯ãã¡ã Mercari Advent Calendar ãšã¯ïŒ ã¡ã«ã«ãªã°ã«ãŒãã®ãšã³ãžãã¢ããããã¯ããäŒç€Ÿã§å©çšããŠããæè¡ãèå³ã®ããæè¡åéãã¡ãã£ãšãããã¯ããã¯ãªã©ç¥èŠãã¢ãŠããããããŠãããŸãããã®Advent CalendarãéããŠã¯ãªã¹ãã¹ãŸã§ã®æ¯æ¥ã楜ããéãããŠããã ããã°ãšæã£ãŠããŸãã 2024幎ã®Mercari / Merpay Advent Calendar Mercari Advent Calendar 2024 Merpay & Mercoin Advent Calendar 2024 å
¬éäºå®è¡š ïŒãã¡ãã¯ãåŸæ¥ãåèšäºãžã®ãªã³ã¯éã«ãªããŸãïŒ Date Theme / Title Author 12/1 Websocket XSS vulnerability discovery: My security journey at Mercari @philolo1 12/2 LLM Key Server: Providing Secure and Convenient Access to Internal LLM APIs @Hiroki Akamatsu 12/3 Shops Monorepo 5 years later: a tale of Bazel and Cursor @Jazz 12/4 Enhancing DX through Mercari’s Unified Platform Interface @whygee 12/5 [TBD] ããã®ããã³ããšã³ãã¢ãŒããã¯ãã£æ¯ãè¿ã or Apollo MCP ã§ãã¹ãå·¥æ°åæž @mattsuu 12/6 Engineering the Semantic Layer: Principles for Data at Scale @sathiya 12/7 [TBD] QAãšã³ãžãã¢ãAIã§æ¥ã
ã®èª²é¡ã解決ãã話 @yuga 12/8 Navigating Change: Learning to Reinvent in an Unstable World @Antony Chane-Hive 12/9 Search Results Quality Monitoring with LLMs @otter 12/10 [TBD] DCR ã®è©± @task 12/11 [TBD] claims parameter ã®è©± @kgoro 12/11 LiveContactToolã«ãããæ©åŸ®æ
å ±ã®åãæ±ã~CloudDLPã䜿ã£ããã¹ãã³ã° @sters 12/12 TBD @tokku 12/13 [TBD] ã¡ã«ã«ãªã®ãã¬ããžãããžã¡ã³ãæŠç¥ @t-hiroi 12/14 ã¡ã«ã«ãªAdsãåºåãå±ãããŸã§ã®è©± @yanap 12/15 TiDB Resource Groupã§ã¯ãŒã¯ããŒããå¶åŸ¡ãã @ogataka50 12/16 [TBD] From brownfield to greenfield: Shops FinOps journey @Sneha & @Darius 12/17 Building a Learning Culture with DevDojo @mariz 12/18 [TBD] Kubernetes Packet Capture @mshibuya 12/19 AI-Nativeéçºãå éãã AWS Kiro ã®å°å
¥ãšãOkta ãæŽ»çšããã¢ã«ãŠã³ã管çã®èªåå @amenbo & @siroken3 12/20 PRé§åã®å€æŽãCI/CDã§èªååæ ââTerraformã§å®çŸããJamf Proã®IaCïŒGitOpsåºç€ @yu 12/21 [TBD] Non-AI Tasks in the AI Task Force @akkie 12/22 What It Takes to Trust a Token: Tales of OIDC & OAuth Security @Kahla 12/23 [TBD] Pj-neco development @Sneha & @Yu 12/24 ã¡ã«ã«ãªã®Notion Architecture ver.1 ã®è©± @kiko & aisaka 12/25 TBD @kimuras æåã®èšäºã¯ãã Google CloudããGitHub PATãšç§å¯éµããªãã – Token Serverã®Google Cloudãžã®æ¡åŒµ ãã§ãã ã©ãããæ¥œãã¿ã«ïŒ
ããã«ã¡ã¯ïŒã¡ã«ã«ãª Engineering Office ã® @mikichin ã§ãã æ¥ã11æ13æ¥ãã¡ã«ã«ãªã°ã«ãŒãã®ããã¯ã«ã³ãã¡ã¬ã³ã¹ãmercari GEARS 2025ããéå¬ãããŸãïŒ 2018幎ã«å®æœãããMercari Tech Conf 2018ããã7å¹Žã®æãçµãŠãä¹
ãã¶ãã®ãªãã©ã€ã³ã§ã®éå¬ãšãªããŸãã ããŒãã¯ãã¡ã«ã«ãªãšã³ãžãã¢ãªã³ã°ã®ä»ãã ä»å¹Žã®å
šç€ŸçãªããŒãã§ããããAI-Nativeãã«ã€ããŠã¯ãã¡ããã2018幎以éã¡ã«ã«ãªã°ã«ãŒãã®ãšã³ãžãã¢ãªã³ã°ãã©ã®ããã«å€åããŠãããããæè¡ã»çµç¹ã»ã«ã«ãã£ãŒã®èгç¹ããã玹ä»ããŸãã ãªã³ã©ã€ã³é
ä¿¡ã¯ãããŸããã®ã§ããã²äŒå Žã§ãèªèº«ã®ç®ãšè³ã§ç¢ºãããŠãã ããïŒïŒ ã»ãã·ã§ã³ã®ç޹ä»èšäºã¯ãã¡ããã確èªãã ããã PASSION Stage ã®URLïŒ https://engineering.mercari.com/blog/entry/20251008-mercarigears2025-passion-stage/ GROW Stage ã®URLïŒ https://engineering.mercari.com/blog/entry/20251009-mercarigears2025-grow-stage/ MECHANISM Stage ã®URLïŒ https://engineering.mercari.com/blog/entry/20251010-mercarigears2025-mechanism-stage/ æ¬èšäºã§ã¯ããªãã©ã€ã³ã€ãã³ããªãã§ã¯ã®ã»ãã·ã§ã³ä»¥å€ã®æ¥œãã¿æ¹ãã玹ä»ããŸãïŒ ããã¢ããã äŒå Žã¯ãã¡ã«ã«ãªã®ãšã³ãžãã¢ãªã³ã°çµç¹ã«ããã信念ãè¡åã®åºç€ãšãªãå
±éèªèãææåããã Mercari Engineering Principles ããã¢ããŒãã«ãããPASSION StageããGROW StageããMECHANISM Stageãã®3ã€ã®ã¹ããŒãžããããããã§ãã¬ãŒã³ããŒã·ã§ã³ãèãããšãã§ããŸãã ãã®ä»ãAsk the SpeakerãTech Quizã宿œããŠãããCOLLABORATION LoungeãããUnconferenceãã«ãŒã ããBreak AreaãããããŸãã ã¹ã¿ã³ãã©ãªãŒ äŒå Žã«å°çããããåæãåãåããŸããäŒå Žã§åå è
å士ã話ããããããããã«ããååãæè¡é åãæå±ãªã©èšèŒããŠãã ãããã å仿ã«ãåæãšããããŠã¹ã¿ã³ãã©ãªãŒã®ã«ãŒãããæž¡ãããŸããã¹ã¿ã³ãã©ãªãŒã®è©³çްã¯ã«ãŒãã«èª¬ææããããŸãããã»ãã·ã§ã³ã«åå ããããTech Quizã«åçããããããšã¹ããã«ãŒãããããã»ããåå è
å士ã§äº€æããªããéããŠãããŸããéããã¹ããã«ãŒã®ææ°ã§ããããã°ããºãç°ãªããŸãã®ã§ããã²å
šéšéããŠã¿ãŠãã ããïŒ ãã¹ã¿ãŒã»ãã·ã§ã³ æ¬ã€ãã³ãã§ã¯ãã¬ãŒã³ããŒã·ã§ã³ã ãã§ã¯ãªãããã¹ã¿ãŒã»ãã·ã§ã³ãæºåããŠããŸããä»åã¯Engineeringçµç¹ã ãã§ã¯ãªããã¡ã«ã«ãªR4Dã©ãã§ã®ç ç©¶ãå«ã14ã€ã®çºè¡šããããŸãã ãã¹ã¿ãŒã»ãã·ã§ã³ã®è©³çްã¯ãäžèšããã°èšäºãã確èªãã ããã https://engineering.mercari.com/blog/entry/20251029-mercarigears2025-poster/ ãã¹ã¿ãŒã»ãã·ã§ã³ã§ã¯ãçºè¡šè
ã®æ¹ãæ²ç€ºãããŠãããã¹ã¿ãŒã®åã«ç«ã£ãŠããã®ã§ã質åãããããæ
å ±äº€æããããã§ããŸãããã²ããæ°è»œã«ãç«ã¡å¯ããã ããã â»åžžã«ãçºè¡šè
ããã¹ã¿ãŒåã«ç«ã£ãŠããããã§ã¯ãããŸãããããªãæé垯ããããŸãããšããäºæ¿ãã ããã Ask the Speaker ã»ãã·ã§ã³ã¯èããŠçµããã§ã¯ãããŸãããåã»ãã·ã§ã³çµäºåŸã«ã¯ãç»å£è
ãšçŽæ¥ã話ãããã ããæéãèšããŠãããŸããã»ãã·ã§ã³å
ã§ã¯è§Šããããªãã£ã詳现ãªå
容ãããççŽãªã質åãŸã§ãçåãè§£æ¶ãçè§£ãæ·±ããŠããã ãã貎éãªæ©äŒã§ãã ãCOLLABORATION LoungeããŸã§ãè¶ããã ããã Unconference Area äºåã«çšæãããããŒããåŸ
ã€å¿
èŠã¯ãããŸããããèªèº«ã話ããããããã¯ãæã¡èŸŒã¿ããã®å Žã§è°è«ãå§ããŠã¿ãŸããããã¡ã«ã«ãªã¡ã³ããŒãšæèŠã亀ããã®ã¯ãã¡ãããåœæ¥ã«æç€ºãããããŒãããã£ããã«ç¥èŠã亀æããããšãå¯èœã§ããç¥èãçµéšã亀差ããå Žãããã²ã掻çšãã ããã ãUnconferenceãã«ãŒã ãŸã§ãè¶ããã ããã Tech Quiz ã¡ã«ã«ãªã®ã¹ãã·ã£ãªã¹ããçšæããã¯ã€ãºã«ææŠããŠã¿ãŸããããBackendãClientãªã©åæè¡é åããšã«ã¯ã€ãºãæºåããŠããŸããæ®æ®µããŸãè§Šããããšã®ãªãåéã§ã倧äžå€«ã§ãã Tech Quiz Areaã«ã¯Quizäœæè
ãããäºå®ãªã®ã§ããæ°è»œã«ã声ãããã ããããŸããåå è
åå£«ã§æèŠãåºãåã£ãŠäžç·ã«èããŠã¿ãŸãããïŒ ãªãªãžãã«ã°ããºããèå æ¬ã€ãã³ãçšã«æºåããŠãããmercari GEARS 2025ããªãªãžãã«ã°ããºã§ãã ãã²ãã¹ããã«ãŒãéããŠãStamp Rally Kioskãã§GETããŠãã ãããïŒ åå è
å士ã§ã話ããããšãã®ãäŸã«ãCoffee Standã«ãŠããªãªãžãã«ã®ãèåãã³ãŒããŒãåãåã£ãŠãã ããã ãmercari GEARS 2025ãã§ã¯ãåãªãæ
å ±äŒéã®å Žã§ã¯ãªãããªãã©ã€ã³ã€ãã³ããªãã§ã¯ã®çµéšãå
±æãã亀æµãéããŠæ°ããªæ©äŒãçã¿åºãããããšãæåŸ
ããŠããŸãã ãã¬ãŒã³ããŒã·ã§ã³ä»¥å€ã«ãããŸããŸãªã³ã³ãã³ããæºåããŠããŸãã®ã§ããã²ç©æ¥µçã«ãåå ãã ããã ãmercari GEARS 2025ãã®ãç³ã蟌ã¿ã¯ ãã¡ããã ã ã€ãã³ã詳现 é嬿¥æïŒ 2025幎11æ13æ¥ïŒæšïŒ 11:00-18:00 æŠèŠïŒ mercari GEARS 2025ã¯ãã¡ã«ã«ãªã°ã«ãŒãã®ãšã³ãžãã¢ãªã³ã°çµç¹ã®æè¡ãžã®ææŠãšãã«ã«ãã£ãŒãäœæããæè¡ã€ãã³ãã§ãã æ¬ã€ãã³ãã¯ãåãªãæ
å ±äŒéã®å Žã§ã¯ãªãããšã³ãžãã¢ãã¡ãåºäŒããçµéšãå
±æãã亀æµãéããŠæ°ããªæ©äŒãçã¿åºãããããšãç®çãšããŠããŸãã åå è²»ïŒç¡æ äŒå ŽïŒTODA HALL & CONFERENCE TOKYO åå æ¹æ³ïŒ ãã¡ãã®ããŒãž ã«ãŠãç³ã蟌ã¿ãã ããã ã å
¬åŒãµã€ã ã æ¬ã€ãã³ãã«é¢ããè¿œå æ
å ±ãããã°ãéæ @MercariGears ã§ãç¥ããããŸãã®ã§ãæ°ã«ãªãæ¹ã¯ãã²ãã©ããŒããé¡ãããŸãã
ããã«ã¡ã¯ãæ ªåŒäŒç€Ÿã¡ã«ã«ãª iOSãšã³ãžãã¢ã® kntk ã§ãã 9æ19æ¥ãã9æ21æ¥ã«ãããŠéå¬ãããã iOSDC Japan 2025 ãã«ã¡ã«ã«ãªã¯ãŽãŒã«ãã¹ãã³ãµãŒãšããŠåå ããŸããã æ¬èšäºã§ã¯ããã®åå ã¬ããŒãããå±ãããŸãïŒ Swiftã³ãŒãããã« ç§kntkã¯iOSDC Japan 2025ã®day 0ã«éå¬ãããäŒç»ã Swiftã³ãŒãããã«2025 ã§åªåããŸããã iOSDC Japan 2025ã®éå¶ã®çããã«ã¯è²ŽéãªäœéšããããŠããã ããæ¬åœã«ããããšãããããŸããã åŸæ¥iOSDC Japan 2025éå¶ããé ããåªåèšå¿µå Swiftã³ãŒãããã«ãšã¯ Swiftã³ãŒãããã«ã¯ãé¡ã§æç€ºãããåäœãããSwiftã³ãŒããããçãæžããæ¹ãåã¡ããšããç«¶æã§ãã ãé¡ã¯æ±ºããŠé£ãããã®ã§ã¯ãªããå°ãç·Žç¿ããã°Swiftããã°ã©ãã§ããã°ã©ãªãã§ãåå ã§ããé£æåºŠãç®æããŠããŸãã ãé¡äŸ1: å
¥åãããæååãéé ã«ããŠåºåããããã°ã©ã ãæžããŠãã ããã ãé¡äŸ2: äžããããæŽæ°ãªã¹ãã®èŠçŽ ã®åèšãèšç®ããããã°ã©ã ãæžããŠãã ããã Swiftã³ãŒãããã«2025äºéž ã®èª¬ææããåŒçš äžè¬çã«ã¯ã³ãŒããŽã«ããšåŒã°ããç«¶æã«ãªããŸãã æšå¹Žã®iOSDC Japan 2024ããéå¬ãããŠããäŒç»ã§ãä»å¹Žã第2åç®ãšãªããŸãã 第1åç®ã¯ç§ãåå ãæºåªåããŸããã iOSDC Japan 2024ã«åå ã»ç»å£ããŸãã #iosdc #iwillblog æšå¹Žããã®å€åãšããŠãåé¡ã®è€é床ãäžãã£ãããã«æããŸããããã®çµæ åçã倿§åããæŠç¥çãªç«ã¡åããæ±ããããããã«ãªã£ã ãšæããŸãã ãã®åœ±é¿ããã£ãŠããä»å¹Žã¯å顿ãšäžç·ã«ãµã³ãã«ã³ãŒããæäŸãããããã«ãªããŸããã ææ³ å»å¹Žã¯æ±ºåã§æéããŠæããã£ãã®ã§ãããä»å¹Žã¯åé¡ãšã®çžæ§ãªã©ãå·¡ã£ãŠç¡äºåªåããããšãã§ããŠéåžžã«å¬ããã£ãã§ããäºéžããæ¥æŠãå€ããSwiftã³ãŒãããã«ã®ç°å¢ãæçããŠæ¥ãŠããã®ãæããŸããã ãŸãã åæŠããããšã§å¯ŸæŠäžã«ããè¯ãè§£æ³ãæãã€ããéã®çœå¿«æããéã«æãä»ããªãã£ãéã®æãããå³ããããšãã§ããSwiftã³ãŒãããã«ãããæ·±ã楜ããããšãã§ããŸãã æ¯éçãããæ¥å¹ŽïŒéå¬ãããå Žåã¯ïŒåæŠããŠã¿ãŠã¯ãããã§ããããã Swiftã³ãŒãããã«ã®è©³ãã解説ãç§ã®æŠç¥ãæžããèšäºããããŸãã®ã§ããã²èå³ãããã°ã芧ãã ããïŒ Swiftã³ãŒãããã«2025ã§åªåããŸãã #iosdc #iwillblog ç»å£ æ ªåŒäŒç€Ÿã¡ã«ã«ãªããã¯ç§ãLTã§ç»å£ããŸããã âå¥åŠâãªSwift ïŒLT5åïŒ: kntk Swiftã«ã¯ããŸããŸãªææ³ãããããããã¯æç€ºçã»çŽæçã§èªã¿ãããããšã«å®è©ãããäžæ¹ã§ãSwiftã®ç¹å®ã®ææ³ãå¿çšãããšäžèŠ"å¥åŠ"ãªããã°ã©ã ãèšè¿°ã§ããŸãã âå¥åŠâãªããã°ã©ã ã®èæ¯ã«ã¯ããŸããŸãªSwiftã®ãã¯ããã¯ãå«ãŸããŠãããè§£ãæããããšã§æ°ããªçºèŠãåŸãããšãã§ããŸãã ãã®LTã§ã¯ãâå¥åŠâãªSwiftã®äŸãšãããã®èæ¯ã«ãããã¯ããã¯ã3ã€ç޹ä»ããŸãããç¹ã«2ã€ç®ã®äŸã§ç޹ä»ãããSwitchæã®å
éšã§å©çšãããŠãããã¿ãŒã³ãããã³ã°æŒç®åã¯å©çšããããšã§åé·ãªè¡šçŸãæžãããå®çšçãªãã¯ããã¯ã ãšèããŠããŸãã å®éã«SwiftSyntaxãªã©ã®1st party libraryã§ãå©çšãããŠããŸã ã ãŸããæåŸã®äŸã§ã¯Swiftã³ãŒãããã«ã§å©çšã§ãã颿°åŒã³åºãã®æåæ°ççž®ãã¯ããã¯ã玹ä»ããŸããããã®æ§æã¯ããããŒã¶ã«æåºæã«èãããã®ãªã®ã§ãããday0ã®Swiftã³ãŒãããã«ã§åªåããããšã«ãã£ãŠç¶ºéºãªãªãã«ãªã£ãŠè¯ãã£ããªãšæããŸãã ã¡ã«ã«ãªã¹ãã³ãµãŒããŒã¹ ã¡ã«ã«ãªã¹ãã³ãµãŒããŒã¹ã§ã¯AIããŒã«ã«é¢ãããã¹ãã€ããäŒç»ã宿œããŸããã1æ¥1åãåèš3åã®è³ªåãçšæã宿œããŸããããã®ã»ã¯ã·ã§ã³ã§ã¯ããã¹ãã€ããã®åççµæãå
±æããŸãïŒ â»ç®èŠã§åçã®éèšãè¡ã£ãŠããé¢ä¿äžãéèšçµæã¯ããããã®å€ãšãªããŸãã Day 0: æ®æ®µiOSéçºã§äœ¿ã£ãŠããAI Coding Assistant Toolã¯äœã§ããïŒ åèšåçæ°: çŽ90ä»¶ïŒ1ä»¶ã®ãã¹ãã€ããã«å¯ŸããŠè€æ°åçããïŒ åçæ°äžäœã®ããŒã«ããé ã«åæãããšä»¥äžã®æ§ã«ãªããŸãã Claude Code æå®é¡ã§å©çšã§ããå©çšäžéãå€ãã³ã¹ããè¯ããšæããŠããããã GitHub Copilot äŒæ¥ãå°å
¥ããŠããããã åŠçã¯ç¡æã§å©çšã§ããããã Gemini åŠçã¯ç¡æã§å©çšã§ããããã Cursor ChatGPT Codex Devin Amazon Q Developer Codeium Alex Sidebar Xcodeçšã®AI Coding Assistantã Zed Grok ç§ãåè³ã®ããŒã«ãå«ãŸããŠãããæ°ããããŒã«ãç¥ãè¯ãæ©äŒãšãªããŸããã Day 1: iOSã¢ããªã®éçºã§ãçæAIãæã圹ç«ã€ãšæãäœæ¥ã¯äœã§ããïŒ åèšåçæ°: çŽ180ä»¶ 次ã®åçãäžäœãšãªããŸããã ãã¹ãã³ãŒãçæ ãããã¿ã€ãäœæ UIå®è£
ã³ãŒãã¬ãã¥ãŒ 調æ»ã»ã³ãŒããªãŒãã£ã³ã° ãªãã¡ã¯ã¿ãªã³ã° ãŸããæ¥å Žè
ã®æ¹ããå
·äœçãªãã©ã¯ãã£ã¹ãèãããšãã§ããŸããã å®è£
ããå
ã«ãã¹ãã³ãŒããçæããããšã§ãAIãç¹å®ã®å®è£
ã«äŸåãããã¹ãã³ãŒããæžãã®ãé²ãã§ãããïŒãã¹ãã³ãŒãçæïŒ AIã®çæããã³ãŒãã¯å質ã«çåãããã®ã§ãäž»ã«ã³ãŒããèªãŸããçšéã§å©çšããŠãããïŒèª¿æ»ã»ã³ãŒããªãŒãã£ã³ã°ïŒ å
šäœçã«AIã®äœ¿ãæ¹ã詊è¡é¯èª€ããŠããã話ãå€ããããŸããŸãªåãçµã¿ãçŸç¶ã®æè§Šãå
±æããã ããŸãããä»åŸAI Codingææ³ãçºå±ããŠããã®ã楜ãã¿ã§ããïŒ Day 2: çæAIãã¢ããªéçºè
ã®äœæ¥ãã©ãå¹çåããŠãããšæããŸããïŒ åèšåçæ°: çŽ100ä»¶ å
šäœçã«äœæ¥å¹çåã«é¢ããåçãå€ããå
·äœçã«ã¯æ¬¡ã®é
ç®ã®å¹çåã倧ãããšãã声ããããŸããã ã¢ã€ãã¢åºãã»å£æã¡ èª¿æ» ãããã¿ã€ã å®è£
ã¬ãã¥ãŒ å¹çåã®çµæããèšèšã«éäžã§ããããæææ±ºå®ãæ©ããªã£ãããšããã話ããããŸããã ç§ãæ¥åã§AIã䜿ãåé·ãªäœæ¥ãæžã£ãçµæãèšèšã«éäžã§ããããã«ãªã£ããšæããŠãããå
±æã§ããã話ãå€ããããŸããã ãŸãšã ã¡ã«ã«ãªããŒã¹ã«æ¥ãŠãã ãã£ãåå è
ã®çãããAIããŒã«ã«é¢ããããŠããŠãå
±æããŠããã ãããããšãããããŸããïŒç§èªèº«ãåå è
ã®æ¹ãšAIããŒã«ã®ããŠããŠã«ã€ããŠè©±ãäžã§å€§å€å匷ã«ãªããŸããã æåŸã«ãiOSDC Japan 2025 ã®éå¶ã®çæ§ãç²ãæ§ã§ãã&ããããšãããããŸããïŒãŸãæ¥å¹Žãåå ããããªãšæããŸãïŒ #iosdc #iwillblog
ããã«ã¡ã¯ãæ ªåŒäŒç€Ÿã¡ã«ã«ãª iOSãšã³ãžãã¢ã® kntk ã§ãã ç§kntkã¯9æ19æ¥ãã9æ21æ¥ã«ãããŠéå¬ãããã iOSDC Japan 2025 ãã®day 0ã«éå¬ãããäŒç»ã Swiftã³ãŒãããã«2025 ã§åªåããŸããã iOSDC Japan 2025ã®éå¶ã®çããã«ã¯è²ŽéãªäœéšããããŠããã ããæ¬åœã«ããããšãããããŸããã ãã£ããã®æ©äŒãªã®ã§ããã®èšäºã§ã¯ ç§ãã©ã®ãããªæŠç¥ãããã»ã¹ã§åæŠããã®ããèšèªå ããããšæããŸãã åŸæ¥iOSDC Japan 2025éå¶ããé ããåªåèšå¿µå ãŸããã¡ã«ã«ãªã¯ã iOSDC Japan 2025 ãã«ãŽãŒã«ãã¹ãã³ãµãŒãšããŠåå ããŠããããã®æ§åã¯ãã¡ããã確èªãã ããïŒ iOSDC Japan 2025ã«åå ããŸãã #iosdc #iwillblog Swiftã³ãŒãããã«ãšã¯ Swiftã³ãŒãããã«ã¯ãé¡ã§æç€ºãããåäœãããSwiftã³ãŒããããçãæžããæ¹ãåã¡ããšããç«¶æã§ãã ãé¡ã¯æ±ºããŠé£ãããã®ã§ã¯ãªããå°ãç·Žç¿ããã°Swiftããã°ã©ãã§ããã°ã©ãªãã§ãåå ã§ããé£æåºŠãç®æããŠããŸãã ãé¡äŸ1: å
¥åãããæååãéé ã«ããŠåºåããããã°ã©ã ãæžããŠãã ããã ãé¡äŸ2: äžããããæŽæ°ãªã¹ãã®èŠçŽ ã®åèšãèšç®ããããã°ã©ã ãæžããŠãã ããã Swiftã³ãŒãããã«2025äºéž ã®èª¬ææããåŒçš äžè¬çã«ã¯ã³ãŒããŽã«ããšåŒã°ããç«¶æã«ãªããŸãã æšå¹Žã®iOSDC Japan 2024ããéå¬ãããŠããäŒç»ã§ãä»å¹Žã第2åç®ãšãªããŸãã 第1åç®ã¯ç§ãåå ãæºåªåããŸããã iOSDC Japan 2024ã«åå ã»ç»å£ããŸãã #iosdc #iwillblog æšå¹Žããã®å€åãšããŠãåé¡ã®è€é床ãäžãã£ãããã«æããŸããããã®çµæ åçã倿§åããæŠç¥çãªç«ã¡åããæ±ããããããã«ãªã£ã ãšæããŸãã ãã®åœ±é¿ããã£ãŠããä»å¹Žã¯å顿ãšäžç·ã«ãµã³ãã«ã³ãŒããæäŸãããããã«ãªããŸããã äœãããç«¶æãªã®ã Swiftã³ãŒãããã«ã®åé¡ã«ã¯æåæ°ççž®äœå°ã®ãã ãæé©åãã€ã³ãã ãè€æ°åååšããæã
éžæã¯ åã
ã®æé©åãã€ã³ãã«å¯ŸããŠæåæ°ççž®æ¹æ³ãèããæåæ°ççž®ãè¡ã£ãŠããŸãã åé¡ãè€æ°åã®å°åã§æ§æãããŠãããå°åã®åèšã¹ã³ã¢ã§ç«¶ã£ãŠããããšããã€ã¡ãŒãžãç§ã¯æã£ãŠããŸããïŒå®éã«ã¯å°åãçžäºã«é¢ä¿ãããå ŽåããããåçŽã«å¯åã§ããããã§ã¯ãªããïŒ æé©åãã€ã³ãã«ã€ããŠãæšå¹Žã®æ±ºååé¡ãäŸã«ç޹ä»ããŸãã æšæºå
¥åã®åè¡ã«ãã¡ããã©5æåãããªãè±åèªãäžã€ãã€äžŠãã§ããŸãã äžããããåèªãšãiOSDCãã®ããã³ã°è·é¢ãåºåããŠãã ããã倧æåãšå°æåã¯åºå¥ããŸãã ãiOSDCããªãã0ãããCDSOiããªãã4ãããiososããªãã4ããåºåããŸãã ãã¹ãŠã®è¡ã«ã€ããŠãã®æé ãç¹°ãè¿ããŠãã ããã // åça while let a = readLine() { print(zip("iOSDC", a).filter { $0 != $1 }.count) } // åçb while let a = readLine() { print(zip(a, "iOSDC").reduce(0) { $0 + ($1.0 != $1.1 ? 1 : 0) }) } ãã®åé¡ã«ã¯çµæçã«ä»¥äžã®æé©åãã€ã³ãããããŸããã âiOSDCâãšå
¥åã«ã©ã®ããã«ã¢ã¯ã»ã¹ãããïŒ a. ããããã«ã€ã³ããã¯ã¹ã¢ã¯ã»ã¹ b. zip ã§ãŸãšããŠããã¢ã¯ã»ã¹ (æçè§£) ç°ãªãæåæ°ãã©ã®æ§ã«ã«ãŠã³ããããïŒ a. ã«ãŠã³ã¿ãæã£ãŠforæã§ã€ã³ã¯ãªã¡ã³ã b. reduce ã§ã«ãŠã³ã¿ãã€ã³ã¯ãªã¡ã³ã c. filter.count (æçè§£) ãããã®æé©åãã€ã³ãã¯åé¡ã«æç€ºãããŠããªãã®ã§ããŸãæé©åãã€ã³ããçºèŠããå¿
èŠããããŸãã ãããã¯è€æ°ã®æžãæ¹ãã§ãããªããšãäžç®èŠãã ãã§çºèŠã§ãããããããããã€ã³ããããã°ãåé¡ãè§£ãäžã§åé¡ã®ç解床ãäžããããšã§çºèŠã§ãããã€ã³ãããééãæ¢ãã®ããã«ãã£ããèã蟌ãã§ãã£ãšçºèŠã§ãããã€ã³ãããããŸãã æé©åãã€ã³ããçºèŠããåŸã¯æåæ°ççž®æ¹æ³ãèããŠå®è£
ããŸãã Swiftã®ç¥èãšç«¶ããçãªç¥èãç·åçã«æŽ»çšããŠççž®æ¹æ³ãèããå¿
èŠããããŸã ïŒè©³ããã¯åŸè¿°ïŒã å®éã®åçãèŠãŠã¿ããšãåçaã ãš1, 2äž¡æ¹ã®ãã€ã³ãã§æçè§£ãæ¡çšã§ããŠããäžæ¹ã§ãåçbã ãš2ã§éæçè§£ã§ããreduceãæ¡çšããŠããã2.ã®ççž®æ¹æ³ã§åæã決ãŸã£ãçµæã«ãªã£ãŠããŸãã ãã®ããã«ã åé¡ã«ååšããæé©åãã€ã³ããçºèŠããæé©ãªççž®æ¹æ³ãèãã ããšããã®ç«¶æã®åºæ¬çãªäœæ¥ã«ãªããšèããŠããŸããåé¡ãè€éãªå Žåã¯å
šãŠã®æé©åãã€ã³ããçºèŠã»åçããããæéåãã«ãªãããšãããã æé©åãã€ã³ããçºèŠããéããšççž®æ¹æ³ãèããéããéèŠã«ãªã£ãŠããŸãã ãµã³ãã«ã³ãŒã vs 0ããå®è£
å顿ãšäžç·ã«ãµã³ãã«ã³ãŒããæäŸãããããã«ãªã£ãããšã«ããã 倧ããªæ¹éãšããŠäºã€ã®äœæŠ ãååšããŠããŸãããïŒã³ãŒãããã«äºéžã§ãåå è
éã§è©±é¡ã«ãªã£ãŠããŸãããïŒ ãµã³ãã«ã³ãŒããå
ã«æåæ°ççž®ãè¡ãäœæŠ åæå®è£
ã³ã¹ãããªããåã
ã®æé©åãã€ã³ãã«é ã«å¯ŸåŠããŠããã°å®å®ããŠã¹ã³ã¢ã䌞ã°ããå©ç¹ããããŸãããã®äžæ¹ã§ããµã³ãã«ã³ãŒãã«ååšããåé·ãªè¡šçŸã®ä¿®æ£ã«æéãèŠããããæ¢åã®ããžãã¯ãæ§é ã«çžãããŠå€§å¹
ãªå€æŽããã«ãããªã©ã®æ¬ ç¹ããããŸãã ãµã³ãã«ã³ãŒããçšãã0ããã³ãŒããå®è£
ããäœæŠ ãµã³ãã«ã³ãŒãã®æ§é ãããžãã¯ã«çžãããªããããæåããäžæ°ã«çãããã°ã©ã ãèšè¿°ããŠé«ãã¹ã³ã¢ãçããå©ç¹ããããŸãããã®äžæ¹ã§ãåæå®è£
ã³ã¹ããå¿
èŠãªäžããã¹ãã±ãŒã¹ãéããªãééã£ãã³ãŒããæžããŠããŸããæéãæ¶è²»ããå±éºæ§ããããŸãã å®éã«åã£ãäœæŠ ç§ã¯ãµã³ãã«ã³ãŒããå
ã«æåæ°ççž®ãè¡ãäœæŠã§é²ããŸãããçç±ãšããŠã¯åŸè
ã«å¿
èŠãšãªãç«¶ããçãªèœåã«èªä¿¡ããªãã£ããšããã®ãšãåè
ã®å®å®ããŠã¹ã³ã¢ãåããç¹ãè€æ°è©Šåãè¡ãäžã§æå©ã ãšèããããã§ãã 察æŠåã®æºå ç«¶ããçã§ãäžè¬çã«æå¹ãªææ³ã ãšæããŸããã åŸåãææ¡ãããã®å¯Ÿçãè¡ã£ãŠããŸããã äºåã«é »åºãã¿ãŒã³ãšãã®ççž®æ¹æ³ïŒãã¯ããã¯ïŒèª¿æ»ããŠç¥èåãã察æŠäžã¯ãããã®ç¥èãé©çšã§ããããã«ããŠããŸãããããã«ãã£ãŠãåé¡ã«ååšããè€æ°ã®æé©åãã€ã³ãã®ãã¡ 8-9å²çšåºŠãäºåç¥èã§ç¬æã«çºèŠããŠè§£ãããšãã§ããå¯ŸæŠæéãæ®ãã®1-2å²ïŒåèŠã®ãã¿ãŒã³ãäžè¬åãé£ããè€éãªãã¿ãŒã³ïŒãžã®å¯ŸåŠã«éäžã§ããŠããŸããã å
·äœçã«ã©ã®ãããªççž®ãã¯ããã¯ã調æ»ã»å©çšããŠããã®ããå®éã®æºæ±ºåã®åé¡ãäŸã«ç޹ä»ããŸãã æšæºå
¥åã®åè¡ã«ãè±åã®ã¿ãããªãæååãäžããããŸãããã£ã¡ã«ã±ãŒã¹ãã¹ããŒã¯ã±ãŒã¹ã«å€æããæ¹è¡åºåãã§åºåããŠãã ããã åºé¡åŽããæäŸããããµã³ãã«åçïŒèªã¿ãããã®ããäžéšå€æŽïŒ while let line = readLine() { var result = "" for (index, character) in input.enumerated() { if character.isUppercase && index > 0 { result.append("_") result.append(character.lowercased()) } else { result.append(character.lowercased()) } } print(result) } ãã®åé¡ã§ã¯æ¬¡ã®ãããªæåæ°ççž®ãã¯ããã¯ãå©çšã§ããŸãã String.append(Character) 㯠+= ã§ä»£æ¿å¯èœ RangeReplaceableCollection ã®å®è£
ç±æ¥ã String 㯠RangeReplaceableCollection ã«æºæ ããŠããããã If aaa && bbb 㯠if aaa, bbb ã«ä»£æ¿å¯èœ 倿°åã®äžæåå å
±éé
ã®æãåºãïŒ r += c.lowercased() ïŒ ãããã®ãã¯ããã¯ãå©çšããããã°ã©ã while let l = readLine() { var r = "" for (i, c) in l.enumerated() { if c.isUppercase, i > 0 { r += "_" } r += c.lowercased() } print(r) } ãã®ä»ã倿°ã®ãã¯ããã¯ãããã¥ã¡ã³ãã«ãŸãšããŠããã察æŠåã«çºããŠããŸããã ãŸãã ããã®ææ³ã§ã¯ççž®ã§ããªãããšããç¥èãæã£ãŠããããšã§ã察æŠäžã®è©Šè¡é¯èª€æã«ããããã€ãºãæžãããŠããŸããã äŸãäžã€ç޹ä»ãããš for æãã .forEach ã§æžããæ¹ãçãïŒ-> foræã®æ¹ãåžžã«çãã for i in a { ãš a.forEach { i in ãæ¯èŒãããšåŸè
ã®æ¹ã5æåå€ããªããŸãã ãŸãã forEach ã®ã¯ããŒãžã£ãŒã§çç¥åŒæ°å $0 ã䜿ã£ãå Žå i in ãçç¥ã§ããŸãããããã§ã®çç¥æ°ã¯3æåãªã®ã§ã¡ãœããåŒã³åºãéšåã ãã§çµæã«2æåå€ããªãèµ€åã§ãã // 8æå for i in a { // 13æå a.forEach { i in // 10æå a.forEach { 察æŠäž å
è¿°ã®éãã察æŠäžã¯åé ã«äºåç¥èãçšããŠé »åºã®ãã¿ãŒã³ã®æåæ°ççž®ãè¡ãã ã»ãšãã©ã®æéãåèŠãã¿ãŒã³ãäžè¬åãé£ããè€éãªãã¿ãŒã³ã®æåæ°ççž®æ¹æ³ãèããããšã«éäžããŠããŸããã å
·äœçã«æåæ°ççž®æ¹æ³ãèããããã»ã¹ã«ã€ããŠç޹ä»ãããšã åæé©åãã€ã³ãã«ã€ããŠã æåæ°ççž®æ¹æ³ã«ã¯äž»ã«äºã€ã®åŽé¢ ããããšèããŠããŸããã A: ææ³ã»èšæ³ã工倫ãã B: ããžãã¯ã工倫ãã A: ææ³ã»èšæ³ã工倫ãã æ¢åã®èšè¿°ã®ææ³ãèšæ³ã工倫ããããšã§æåæ°ççž®ãè¡ãåŽé¢ ã§ããå
è¿°ã®æºæ±ºåã§ã®äŸã«ããããã«å€æ°åãäžæåã«ãããã String.append(Character) ã += ã«çœ®ãæããããããªã©ãåœãããŸãã ãŸããäºéžã®åé¡ã§ã¯Swiftã®åæšè«ãæšæºã©ã€ãã©ãªã®é¢æ°ã»ã¡ãœãããå¿çšããŠæåæ°ãæžããå Žé¢ããããŸãããïŒSwiftãããã匷ãçŸããåé¡ã§ç¹ã«èšæ¶ã«æ®ã£ãŠããŸããïŒ ã³ãŒãããã«äºéžãROT13倿åé¡ã®ç§ã®åç while let p = readLine() { print(String(p.map { a in let k = a.asciiValue! &- 52 return a.isLetter ? .init( .init( 13...38 ~= k ? k % 26 + 65 : (k - 32) % 26 + 97 ) ) : a })) } Character.init(UnicodeScalar.init(...)) ã .init(.init()) ã§ä»£æ¿ åæšè«ã«ãã£ãŠååãçç¥ String.init ã®æåŸ
ããåïŒ [Character] ïŒã p.map ã®åž°ãå€ã®åãçµç±ããŠã¯ããŒãžã£ãŒã®return statementã®åæšè«ãŸã§äŒæ Range.contains ã ~= ã§ä»£æ¿ æšæºã©ã€ãã©ãªã«æŒç®åå®çŸ©ãååš ãªãŒããŒãããŒæŒç®å &- ãå©çšããŠäºåèšç® éåžžã®æŒç®åã ãšã©ã³ã¿ã€ã ãšã©ãŒã«ãªããã¹ãã±ãŒã¹ãååš ãã®ããã«ã Swiftã®ç¥èïŒåæšè«ã»ææ³ã»èšèªæ©èœã»æšæºã©ã€ãã©ãªãªã©ïŒã掻ããããåŽé¢ ã§ããAppleã®å
¬åŒããã¥ã¡ã³ãã TSPL (The Swift Programming Language) ãèªãããšã§ãã®åŽé¢ã®æèåãéãããããšæããŸãã B: ããžãã¯ã工倫ãã æ¢åã®ããžãã¯ãããçãèšè¿°ã®ããžãã¯ã«å€ããããšã§æåæ°ççž®ãè¡ãåŽé¢ ã§ãããã¡ãã¯å¹³ããèšãã°ç«¶ããçãªåŽé¢ã§ãããã ããå®è¡é床åäžã§ã¯ãªãæåæ°ççž®ãç®çã§ãã å®ã¯å
è¿°ããæºæ±ºåã®ç§ã®åçã¯æçè§£ã§ã¯ãªããããã«ããžãã¯ã工倫ããããšã§ççž®ã§ããäœå°ããããŸãããïŒåååªåè
ã«ãææããã ããŸãããïŒ while let l = readLine() { var r = "" for c in l { if c.isUppercase, r != "" { r += "_" } r += c.lowercased() } print(r) } index > 0 ãšããã®ã¯ãã€ãŸããæå以å€ã®èŠçŽ ã®æããæå³ããæ¡ä»¶ãªã®ã§ããã¡ã㯠r != "" ã§ä»£æ¿å¯èœãªããã§ãããŸããã³ãŒãããã«äºéžã§ã¯æåãªãçªå
µæ³ããå©çšããããšã§æåæ°ã倧å¹
ã«æžããã·ãŒã³ããããŸããã ãã®ããã«ã åé¡ã»ããã°ã©ã ã®æå³ãèªã¿ãšãã®ããã¡ãã®åŽé¢ã«ãªããç«¶ããçãªåãæŽ»ããããåŽé¢ ã§ããç«¶æããã°ã©ãã³ã°ãµã€ãçã§éå»åãè§£ãããšã§ããã®åŽé¢ã®æèåãéããããšãã§ãããšæããŸãã ãŸããAãšBã®åŽé¢ã¯æä»çã§ã¯ãªããBãé©çšããåŸã®èšè¿°ã«æ°ãã«Aãé©çšã§ããå Žåãããã AãšBã®çµã¿åããã«ãã£ãŠæåæ°ççž®æ¹æ³ã倿°ååšããŠããŸããã æŠç¥ Aã»Bã®äŸã§ç€ºããããã«ã ããçãè§£ã«èŸ¿ãçãã«ã¯AãšBäž¡æ¹ã®åŽé¢ãçµã¿åãããŠè§£æ³ãèããããšãå¿
èŠã«ãªã£ãŠããŸãã ããããè§£æ³ãèããéã¯ã³ãŒããæžããŠã¿ãªããšå®éã«æåæ°ççž®ãå¯èœãåãããªãããšãå€ããå¶éæéã®äžã§è©Šããè§£æ³ã®åè£æ°ãéãããŠããããã ããçšåºŠè§£æ³ã«âãããâãä»ããå¿
èŠããããŸãã ããã§ã ç§ã¯è¿·ã£ããAãåªå
ããŠæ»ããæŠç¥ãç«ãŠãŸããã çç±ãšããŠã¯ç§ãAã®æ¹ãåŸæãšããã®ãšããAã®åŽé¢ã極ããåçã®æ¹ãSwiftç¹æã®ãã¯ããã¯ãçŸããŠé¢çœãã ããããšèããããã§ãã çµæçã«æ±ºåã§ãSwiftã®æååå±éãå©çšããææ³ãéžæããSwiftãããã³ãŒãã§åªåãã§ããã®ã¯è¯ãã£ããªãšèããŠããŸãã ã¢ã¹ããŒã¢ãŒããåºåããæ±ºååé¡ã®ç§ã®åçïŒèŠãããã®ããäžéšã¹ããŒã¹ãçç¥ïŒ let a = "######", i = a + a, f = "\(i)##", j = f + f ïŒäžç¥ïŒ print( """ \(f) \(j) \(f) \(j) ## \(a) \(a) ## \(a) \(a) \(a)#### ## \(a) \(f+a) \(a) \(a)#### ## \(a) \(f+a) \(a) ïŒäžç¥ïŒ """ ) ãŸãšã Swiftã³ãŒãããã«ã¯åé¡ã«ååšããæé©åãã€ã³ããçºèŠããSwiftã®ç¥èãšç«¶ããçãªç¥èãç·åçã«æŽ»çšããŠæé©ãªççž®æ¹æ³ãèããç«¶æã§ããå¶éæéããããããäºåã«é »åºãã¿ãŒã³ã®å¯Ÿçãè¡ãããšã«ãã£ãŠå¯ŸæŠæéãæå¹ã«æŽ»çšããããšãã§ããŸãã Swiftã³ãŒãããã«ã®ãã¯ããã¯ã¯äžèŠå¥åŠã§åœ¹ã«ç«ããªããã«èŠãããããããŸãããããã ãã®èæ¯ã«ã¯Swiftã®ææ³ã»èšèªæ©èœã®ç¥èãããžãã¯ãèªã¿ãšãåãªã©ãé ããŠããããããã¯æ¥ã
ã®éçºã§ãæçãªãã®ã ãšèããŠããŸãã èªåãåæŠããäžã§å€ããåŠã¶ããšãã§ããŸããã ãŸããåæŠããããšã§å¯ŸæŠäžã«ããè¯ãè§£æ³ãæãã€ããéã®çœå¿«æããéã«æãä»ããªãã£ãéã®æãããå³ããããšãã§ããSwiftã³ãŒãããã«ãããæ·±ã楜ããããšãã§ããŸããæ¯éçãããæ¥å¹ŽïŒéå¬ãããå Žåã¯ïŒåæŠããŠã¿ãŠã¯ãããã§ããããã æåŸã«ãæ¹ããŠiOSDC Japan 2025ã»Swiftã³ãŒãããã«2025 ã®éå¶ã®çãããäºéžã»æ¬æŠã§å¯ŸæŠããŠãããéžæã®çãããæ¬åœã«ããããšãããããŸããïŒ #iosdc #iwillblog
ããã«ã¡ã¯ïŒã¡ã«ã«ãª Engineering Office ã® @mikichin ã§ãã æ¥ã11æ13æ¥ãã¡ã«ã«ãªã°ã«ãŒãã®ããã¯ã«ã³ãã¡ã¬ã³ã¹ãmercari GEARS 2025ããéå¬ãããŸãïŒ 2018幎ã«å®æœãããMercari Tech Conf 2018ããã7å¹Žã®æãçµãŠãä¹
ãã¶ãã®ãªãã©ã€ã³ã§ã®éå¬ãšãªããŸãã ããŒãã¯ãã¡ã«ã«ãªãšã³ãžãã¢ãªã³ã°ã®ä»ãã ä»å¹Žã®å
šç€ŸçãªããŒãã§ããããAI-Nativeãã«ã€ããŠã¯ãã¡ããã2018幎以éã¡ã«ã«ãªã°ã«ãŒãã®ãšã³ãžãã¢ãªã³ã°ãã©ã®ããã«å€åããŠãããããæè¡ã»çµç¹ã»ã«ã«ãã£ãŒã®èгç¹ããã玹ä»ããŸãã ãªã³ã©ã€ã³é
ä¿¡ã¯ãããŸããã®ã§ããã²äŒå Žã§ãèªèº«ã®ç®ãšè³ã§ç¢ºãããŠãã ããïŒïŒ ãŸããä»åã¯ãã¬ãŒã³ããŒã·ã§ã³ã ãã§ã¯ãªããã¹ã¿ãŒã»ãã·ã§ã³ããããŸãã ãã¹ã¿ãŒã»ãã·ã§ã³ã§ã¯ãçºè¡šè
ã®æ¹ãæ²ç€ºãããŠãããã¹ã¿ãŒã®åã«ç«ã£ãŠããã®ã§ã質åãããããæ
å ±äº€æããããã§ããŸãããã²ããæ°è»œã«ãç«ã¡å¯ããã ããã â»åžžã«ãçºè¡šè
ããã¹ã¿ãŒåã«ç«ã£ãŠããããã§ã¯ãããŸãããããªãæé垯ããããŸãããšããäºæ¿ãã ããã æ¬èšäºã§ã¯ãäŒå Žã§ããèŠããªããã¹ã¿ãŒã»ãã·ã§ã³ãäžæã玹ä»ïŒ ãã¬ãŒã³ããŒã·ã§ã³ã®ç޹ä»ã¯äžèšèšäºããåç
§ãã ããã PASSION Stageã®ã»ãã·ã§ã³ç޹ä»ã¯ ãã¡ã ã GROW Stageã®ã»ãã·ã§ã³ç޹ä»ã¯ ãã¡ã ã MECHANISM Stageã®ã»ãã·ã§ã³ç޹ä»ã¯ ãã¡ã ã ãŸã ç³ã蟌ã¿ããããŠããªãæ¹ããèå³ã®ããã»ãã·ã§ã³ãããã¯ãã§ãããç³ã蟌ã¿ã¯ ãã¡ã ãããé¡ãããŸãã ã¡ã«ã«ãªã°ã«ãŒãã«ãããAI-Nativeãªã€ã³ã·ãã³ã管çã®å
šè²ãšæªæ¥å LLMã®æ®åã«ãããã€ã³ã·ãã³ã察å¿ã»ç®¡çã®ããæ¹ã倧ããå€ããã€ã€ãããŸãã ã¡ã«ã«ãªã°ã«ãŒãã§ã¯ãè€éã§è² æ
ã®å€§ããã€ã³ã·ãã³ã管çããAI-Nativeãã«é²åãããããšã決å®ããŸããã ãã§ã«å°å
¥ããŠãããIBISããã¯ããããã®åšèŸºã®ä»çµã¿ãä»ã®AI掻çšäºäŸã玹ä»ããŸãã AIãåãå
¥ããããšã§ãMTTRã®ççž®ã ãã§ãªãã察å¿è
ã®è² æ
ã»ã¹ãã¬ã¹è»œæžãã³ã¹ãåæžãããã«ãµãŒãã¹ä¿¡é Œæ§ã®åäžãæåŸ
ã§ããŸãã ãã ãã人éãæ
ãã¹ãé åãæ®ããŸããæ¬çºè¡šã§ã¯ãã¡ã«ã«ãªã°ã«ãŒãã®çŸåšã®åãçµã¿ãšä»åŸã®å±æããäŒãããŸãã The 3Aâs: Simple Steps For Clean Unit Tests ãœãããŠã§ã¢éçºã®ã¹ããŒããå éããäžãæ°æ©èœã®è¿œå ãä¿®æ£ã«ã¯ãæ¢åã®æ©èœãæå³ããå£ããŠããŸããªã¹ã¯ãåžžã«äŒŽããŸããé©åãªå®å
šçããªããã°å°ããªãã¹ãæ¬çªç°å¢ã«ãªãªãŒã¹ãããå€ãã®ã客ããŸã«åœ±é¿ãåãŒãå¯èœæ§ããããŸãã ã ããããããŠããããã¹ãã¯æ¥µããŠéèŠã§ããåªãããŠããããã¹ãã¯ã³ãŒãã®åäœãæ€èšŒããã ãã§ãªãããããã¯ãã®å®å®æ§ãšä¿¡é Œæ§ã確ä¿ããéçºããŒã ãèªä¿¡ãæã£ãŠå€æŽãè¡ããç°å¢ãæ¯ããŸãã ã§ã¯ãã©ãããã°ãã¹ããã·ã³ãã«ã§ã¯ãªãŒã³ããã€å¹æçã«ä¿ã€ããšãã§ããã®ã§ããããã ãã®ããã®å®çžŸããã¢ãããŒãã®ã²ãšã€ããArrangeïŒæºåïŒãActïŒå®è¡ïŒãAssertïŒæ€èšŒïŒã®3Aãã¬ãŒã ã¯ãŒã¯ã§ãããã®3ã€ã®ã¹ãããã«åŸãããšã§ãæç¢ºã§ä¿å®æ§ãé«ããä¿¡é Œã§ãããŠããããã¹ããç°¡åã«æžããããã«ãªããŸãã Autonomous Support – Leveraging AI Bots for Scalable and Intelligent Operational Assistance çŸåšããšã³ãžãã¢ã¯Slackäžã§ã®å Žåœããçãã€å埩çãªè³ªå察å¿ããçµµæåã«ããããªã¢ãŒãžãšãã£ãéå¹çãªã¯ãŒã¯ãããŒã«å€ãã®æéãè²»ãããŠãããããŒã ã«ãã£ãŠã¯æ¥åæéã®10ã20%以äžãåãåãã察å¿ã«å²ããããšãã課é¡ããããŸããç§ãã¡ã¯ãã®èª²é¡ã«å¯ŸããSlackäžã®éå€ãªåãåãããè¿
éã§ä¿¡é Œæ§ã®é«ãåçãšæšæºåããããã±ããã«å€æãããAIæ¯æŽã®èªåŸåãµããŒãã·ã¹ãã ãæ§ç¯ããŠããŸãããã®botã¯Slackäžã§çŽæ¥å¯Ÿå¿ãè¡ããé©åãªJIRA/GitHubãã±ããã®ããªã¢ãŒãžãå
±æãã¬ããžããŒã¹ïŒããã¥ã¡ã³ããéå»ã®ãã±ãããSlackããœãŒã¹ã³ãŒãïŒã®æ€çŽ¢ãè¡ããåçãææ¡ããŸãã人éã®å¯Ÿå¿ãå¿
èŠãªå Žåã¯æ
åœè
ãžåŒãç¶ããèªå·±å®çµå¯èœãªå Žåã¯ãã®å Žã§å¯Ÿå¿ãå®äºããããããåŠç¿ãéããŸããããã«ãããå¿çãšè§£æ±ºã®è¿
éåãäžæã®åæžããããŠèªåŸè§£æ±ºçããšã¹ã«ã¬ãŒã·ã§ã³çãåæžã§ãããšã³ãžãã¢å·¥æ°ãCSATïŒé¡§å®¢æºè¶³åºŠïŒãç¹å®ããããã¬ããžã®ã£ãããšãã£ãææšãéããŠå¹æã枬å®ããŸãããŸããæ¢åã®ãã©ãããã©ãŒã ããŒã«ãåå©çšããããšã§ãè¿
éãªéçºãå¯èœã«ããŠããŸãã Toward a Global Identity Platform ã¡ã«ã«ãªã¯2019幎ã«è¶å¢ECäºæ¥ãã¹ã¿ãŒãããŸãããéå§åœæãæµ·å€ã®ã客ããŸã¯æ©èœã®éãããä»£è¡æ¥è
ã®è³Œå
¥ããŒãžã䜿ã£ãŠååãæ€çŽ¢ãã賌å
¥ããå¿
èŠããããŸããããã®åŸãæµ·å€ã®ã客ããŸã«ããè¯ã賌買äœéšãæäŸãããããã¡ã«ã«ãªã¯ã·ã¹ãã ãæ¡åŒµããæµ·å€ã§ã®ãµãŒãã¹å±éãå§ããŸããããã®æ¡å€§ã«ãããŠéèŠãªèŠä»¶ãã°ããŒãã«ã¢ã«ãŠã³ãã®å°å
¥ã§ããæ¬ã»ãã·ã§ã³ã§ã¯ããããŸã§ã®åãçµã¿ã§éæããææãå
±æãããšãšãã«ãè€æ°ã®åœã®ã客ããŸããµããŒãããããã«ã¢ã€ãã³ãã£ãã£åºç€ãããã«æ¡åŒµããŠããä»åŸã®èšç»ã«ã€ããŠã話ãããŸãã éãšã³ãžãã¢çµç¹ã®AI-Nativeåã«äŒŽèµ°ããå®è·µç¥ éãšã³ãžãã¢çµç¹ããAI-Nativeããžãšå€é©ããéçšã«ã¯ããšã³ãžãã¢ã®äŒŽèµ°ãäžå¯æ¬ ã§ãã æ¬ã»ãã·ã§ã³ã§ã¯ããã®ãªã¢ã«ãªçµéšã玹ä»ããŸãã (1) AI掻çšã§æåŸ
ããçµæãåŸãããã«å
¥åºå圢åŒã工倫ããäºäŸ (2) AIã¯ãŒã¯ãããŒãçªç¶åæ¢ããäºäŸããåŠã¶ã©ã€ããµã€ã¯ã«ç®¡çã®æèš (3) AIçæã¢ããªãGASã䜿ã£ãŠå®å
šã«ãããã€ããææ³ ãšãã£ããAI掻çšããããã¿ã€ãããå®éçšãžã®å°ãããã®å®è·µç¥ãå
±æããŸãã From Cluttered to Clear: Improving the Web Accessibility Design for Screen Reader Users in E-commerce With Generative AI èŠèŠéããè
ã匱èŠã®ãŠãŒã¶ãŒã¯ãã¹ã¯ãªãŒã³ãªãŒããŒã䜿ã£ãŠãªã³ã©ã€ã³ã·ã§ããã³ã°ãµã€ããå©çšããéã«ãå€ãã®éå£ã«çŽé¢ããŠããŸããè€éãªã¬ã€ã¢ãŠããäžæç¢ºãªã³ã³ãã³ãæ§é ãèŠèŠéèŠã®ãã¶ã€ã³ã«ãããç¹ã«åããŠå©çšãããµã€ãã§ã¯ã¹ãã¬ã¹ãå€ãéå¹çãªäœéšãšãªã£ãŠããŸãããããŸã§ã®æ¯æŽããŒã«ã¯åå説æãç»åã®ä»£æ¿ããã¹ããªã©ãåå¥ã®èŠçŽ ã«çŠç¹ãåœãŠãããŠããŸããããããŒãžå
šäœã«ããã¶æ§é ãããã²ãŒã·ã§ã³ã®èª²é¡ã«ã¯åå察å¿ã§ããŠããŸããã§ãããæ¬ç ç©¶ã§ã¯ãçæAIãæŽ»çšããŠã·ã§ããã³ã°ãµã€ãã®HTMLã³ã³ãã³ããèªåçã«åæ§æããã¢ã¯ã»ã·ããªãã£ãæ¹åããæ¹æ³ãæ€èšããŸãããç ç©¶ã¯3段éã®æ§æã§è¡ãããŸãã¹ã¯ãªãŒã³ãªãŒããŒã®ãŠãŒã¶ãŒã«ã€ã³ã¿ãã¥ãŒãè¡ããæ¬¡ã«çæAIãæèŒãããã©ãŠã¶æ¡åŒµæ©èœãéçºããæåŸã«èªåç£æ»ãšå®éã®äœ¿çšã§è©äŸ¡ãè¡ããŸããããã®ããŒã«ã¯ã¹ã¯ãªãŒã³ãªãŒããŒã®æäœãã¿ãŒã³ã«åãããŠãŠã§ãã³ã³ãã³ããåçã«æŽããŸããå®éšã®çµæãçæAIã§åæ§æãããããŒãžã§ã¯ããã²ãŒã·ã§ã³å¹çãã³ã³ãã³ãã®åããããããå
šäœçãªäœ¿ããããã倧ããæ¹åããããšãåãããŸãããåå è
ããã¯ãã»ã¯ã·ã§ã³ã®é åºãããè«ççã«ãªã£ãããé²èЧã«ããç²åŽãæžã£ãããšãã£ã声ãå¯ããããŸããããã®ææã¯çæAIãæ¢åãµã€ãã®æ§é ãã®ãã®ã«äœçšããããšã§ãå
æ¬çãã€ãŠãŒã¶ãŒäžå¿ã®ã¢ã¯ã»ã·ããªãã£æ¹åãå®çŸã§ããå¯èœæ§ã瀺ããŠããŸãã éåã€ã³ã¿ãŒããã ãŒå®å¿ã»å®å
šã§ãµã¹ãããã«ãªãªã³ã©ã€ã³ç€ŸäŒã®å®çŸã«åããŠãŒ ã¡ã«ã«ãªã®ç ç©¶éçºçµç¹ãR4Dãã§ã¯ãè¿ãå°æ¥ã«å°æ¥ãäºæ³ãããŠãããéå忿代ããçãæãã¡ã«ã«ãªãäœãããã«ãéåæ
å ±éä¿¡æè¡ã«é¢ããç ç©¶ãè¡ã£ãŠããŸããæ¬ãã¹ã¿ãŒã§ã¯ãR4Dã®éåããŒã ãåœå
ã®ç ç©¶æ©é¢ãšå
±åã§è¡ãªã£ãŠããéåã€ã³ã¿ãŒãããã«é¢ããç ç©¶éçºã®å
šäœåã«ã€ããŠç޹ä»ããŸãã äžæ§ååéåã³ã³ãã¥ãŒã¿ã«ããã衚é¢ç¬Šå·ãçšããæ¶å€±ãšã©ãŒèæ§ãããã³ã« å
ãã³ã»ããã«ããäžæ§ååã¢ã¬ã€ã¯ããã®åªããç¹æ§ããéåã³ã³ãã¥ãŒã¿ã®ææãªåè£ãšãããŠããŸãããéããŠãªèª€ããæ¶å€±èª€ãããªãŒã±ãŒãžèª€ãã倧ããªèª²é¡ãšãªã£ãŠããŸããåŸæ¥ã®ç ç©¶ã§ã¯ããªãŒã±ãŒãžèª€ããæ¶å€±èª€ãã«å€æã§ããããšã¯ç€ºãããŠããŸãããã倿ãããæ¶å€±èª€ããç¶ç¶çã«çºçã»èç©ããåé¡ãæ®ã£ãŠããŸãããæ¬ç ç©¶ã§ã¯ããã®èª²é¡ã«å¯ŸããŠãè±å極誀ããšæ¶å€±èª€ããå«ãåè·¯ããŒã¹ã®ã¢ã³ãã«ã«ãã·ãã¥ã¬ãŒã·ã§ã³ã«ãããæ¶å€±èª€ããå¹³é¢ã³ãŒãã«äžãã圱é¿ãè©äŸ¡ããŸãããããã«ãæ¶å€±èª€ããžã®èæ§ãé«ããããã®æ°ãããããã³ã«ãææ¡ããŸãããã®ãããã³ã«ã§ã¯ããªã³ã©ã€ã³ã§ã®ã³ãŒãå€åœ¢ãå©çšããŠãæ¶å€±èª€ããèç©ããããã©ãããããè«çéåããããæ°ãããã©ãããžãšè»¢éããŸãã ã䜿ãç¶ããåãæªæ¥ãã€ãªãã 人ã䜿ããªããªã£ã補åãäžåºŠã§äœ¿ãçµãããæ¬¡ã®èª°ããžç¹ãããªãŠãŒã¹ãã¯ãç§ãã¡æ¶è²»è
ãæç¶å¯èœãªç€ŸäŒã®ããã«éžã¹ããæã身è¿ã§å®è·µããããéžæè¢ã®äžã€ã§ããæ¬ãã¬ãŒã³ããŒã·ã§ã³ã§ã¯ããªãŠãŒã¹ã«ãã£ãŠè£œåã®äœ¿çšæéãã©ãã»ã©å»¶é·ãããæ°åã®è³Œå
¥ãã©ãã ã代æ¿ã§ããã®ãããã®ã€ã³ãã¯ããæããã«ããŸãã ãã®ã話ãéããŠãçæ§ãã¢ããææŸããšãããããã¯æ°ããã¢ããæ¬²ãããªã£ããšãã«ããªãŠãŒã¹ãåœããåã®éžæè¢ãšããŠç掻ã«åãå
¥ãããã¢ãã«é ãããæ°ããªäŸ¡å€ããå®è·µããŠããã ãããã®ãã£ããããæäŸããŸãã ãªã³ã©ã€ã³ããªãã¢ããªã«ãããåå説æã®äººéâAIååå·çïŒå£²ãæããã³è²·ãæã®èŠç¹ããã®èå¯ ãªã³ã©ã€ã³ã®ããªãã¢ããªã¯ãå人ãäžå€åãä»ã®å人ã«è²©å£²ããææ®µãšããŠãç¹ã«æ¥æ¬ã§äººæ°ãåããŠããŸããåºåã®ããã»ã¹ã«ã¯ãåºåè
ãåçãã¢ããããŒãããæœåšçãªè³Œå
¥è
ãé²èЧããããã®åå説æãæžãäœæ¥ãå«ãŸããŸããè¿å¹Žã¯ãå€§èŠæš¡èšèªã¢ãã«ïŒLLMïŒãçšããåå説æäœæãéããŠåºåæã®åºåè
ã®è² æ
ã軜æžããã人éãšAIã®ååã®å¿çšé åãæ³šç®ãããŠããŸããæ¬ç ç©¶ã§ã¯ãLLMã«åºã¥ãæ¯æŽãåºåè
ã®äœéšãååã®åºåäŸ¡æ Œã«äžãã圱é¿ã«å ãã人éãšAIãååããŠäœæããåå説æã®é
åã«å¯Ÿããè²·ãæã®äž»èгçãªå°è±¡ãéžå¥œã«ã©ã®ããã«åœ±é¿ããããæ€èšããŸããæ¬ç ç©¶ã®çµæã¯ãLLMããŒã¹ã®ããŒã«ããªã³ã©ã€ã³äžå€åžå Žã«åãŒãåŸã圱é¿ã®çè§£ã«å¯äžãããšãšãã«ãããªãã¢ããªåãã®äººéâAIååå·çã·ã¹ãã ã®èšèšäžã®èæ
®ç¹ãä»åŸã®ç ç©¶ã®æ¹åæ§ã«é¢ãã瀺åãæäŸããŸãã ã¡ã«ã«ãªAdsã«ãããAIãæŽ»çšããåºå審æ»ã®åãçµã¿ 2024幎9æã«éå§ããã¡ã«ã«ãªAdsã¯ãåœååºåäž»ããå
¥çš¿ããã ããŠããåºåã«å¯ŸããŠã®å¯©æ»ãæåéçšã«ãŠå¯©æ»ããŠããŸããã å¹ççãªå¯©æ»ã暡玢ããAIãæŽ»çšããåºå審æ»ã·ã¹ãã ãæ§ç¯ããããšã§éçšã³ã¹ããåæžãã€ã€ãå€ãã®åºåçŽ æã«å¯ŸããŠå¯©æ»ããããšãå¯èœãšãªããŸããã ãã®AI掻çšäºäŸãå
±æããŸãã BFFä¿å®ã®èª²é¡ãšgRPC Federationã«ãã解決ã¢ãããŒã ãã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ã«ãããBFFéçºã§ã¯ãè€æ°ãµãŒãã¹éã®å倿ãäŸåé¢ä¿ç®¡çã«ããä¿å®ã³ã¹ããå¢å€§ããŸããæ¬çºè¡šã§ã¯ããã®èª²é¡ã«å¯ŸããŠgRPC Federationãæ¡çšããProtocol Buffersã«DSLã§å®çŸ©ããããšã«ãã£ãŠBFFãèªåçæããä¿å®ã³ã¹ãã倧å¹
ã«åæžããå®äŸã玹ä»ããŸãããŸããAIãæŽ»çšããDSLèšè¿°æ¯æŽã®åãçµã¿ã«ã€ããŠãå ±åããŸãã Engineering Office is a Hub, connecting Engineering together Engineering Officeã¯ãšã³ãžãã¢ãªã³ã°éšéã®ããããéšåãç¹ãããã®åœ¹å²ãæã¡ãŸããå
±éã®ãªã³ããŒãã£ã³ã°ãããããžã§ã¯ãã®ãµããŒãããšã³ãžãã¢ãªã³ã°ã«é¢ããæ
å ±ãŸã§ãããŸããŸãªèŠçŽ ãéããŠã°ã«ãŒããæ¹åæ§ãåãããéäžã§ããããã«ããŸãã æ¬çºè¡šã§ã¯ãèªååãAIãç¶ç¶çãªãµãŒãã¹ã©ã€ããµã€ã¯ã«ã掻çšããŠããžãã¹ããŒãºã«è¿
éã«å¯Ÿå¿ããã¡ã«ã«ãªç¬èªã®ãšã³ãžãã¢ãªã³ã°æåãç¶æããããã®ãç§ãã¡ã®ãããžã§ã¯ãã®äžéšãã玹ä»ããŸãã Mercari ã«ããã Recommendation System ã®æŠèŠ ã¡ã«ã«ãªã§ã¯ããŒã ã¹ã¯ãªãŒã³ãåå詳现ç»é¢ãªã©æ§ã
ãªæã§ recommendation ãè¡ãããŠããããã®è£åŽã«ã¯ããããã®ç¹æ§ã«å¿ããæè¡ã䜿ãããŠããŸãã æ¬çºè¡šã§ã¯ã¡ã«ã«ãªã«ãããæ§ã
㪠recommendation ãšãã®è£ã§äœ¿ãããŠããæè¡ã«ã€ããŠæŠèŠãå
±æããè°è«ãéããŠæ
å ±äº€æããããšèããŠããŸãã ãmercari GEARS 2025ãã®ãç³ã蟌ã¿ã¯ ãã¡ããã ã ã€ãã³ã詳现 é嬿¥æïŒ 2025幎11æ13æ¥ïŒæšïŒ 11:00-18:00 æŠèŠïŒ mercari GEARS 2025ã¯ãã¡ã«ã«ãªã°ã«ãŒãã®ãšã³ãžãã¢ãªã³ã°çµç¹ã®æè¡ãžã®ææŠãšãã«ã«ãã£ãŒãäœæããæè¡ã€ãã³ãã§ãã æ¬ã€ãã³ãã¯ãåãªãæ
å ±äŒéã®å Žã§ã¯ãªãããšã³ãžãã¢ãã¡ãåºäŒããçµéšãå
±æãã亀æµãéããŠæ°ããªæ©äŒãçã¿åºãããããšãç®çãšããŠããŸãã åå è²»ïŒç¡æ äŒå ŽïŒTODA HALL & CONFERENCE TOKYO åå æ¹æ³ïŒ ãã¡ãã®ããŒãž ã«ãŠãç³ã蟌ã¿ãã ããã ã å
¬åŒãµã€ã ã æ¬ã€ãã³ãã«é¢ããè¿œå æ
å ±ãããã°ãéæ @MercariGears ã§ãç¥ããããŸãã®ã§ãæ°ã«ãªãæ¹ã¯ãã²ãã©ããŒããé¡ãããŸãã
1. ã€ã³ãããã¯ã·ã§ã³ ããã«ã¡ã¯ãCross Border(XB) Engineeringã®ããã¯ãšã³ããšã³ãžãã¢ã®osari.kã§ããæ¬æ¥ã¯ç§ãæå±ãããªãŒãããªãã£ããŒã ã®æŽ»åãšãå
·äœäŸãšããŠéçºããããã¯ãšã³ãã®å
±éããã±ãŒãžã«ã€ããŠç޹ä»ããŸãã ã¡ã«ã«ãªã°ããŒãã«ã¢ããªã¯ãéçºè€éæ§ãæããªããæ¡åŒµæ§ãä¿ã€ããã¢ãžã¥ã©ã¢ããªã¹ã¢ãŒããã¯ãã£ãæ¡çšããŠããŸããã¢ãžã¥ãŒã«éã®äŸåé¢ä¿ã峿 Œåãããããã·ã¹ãã ã¯BFFå±€ãšTier1-4ã®éå±€æ§é ã§æ§æããããªã¯ãšã¹ãã¯äžäœããäžäœTierãžæµããŸããã¢ãžã¥ãŒã«ééä¿¡ã¯Protocol Buffer + gRPCã§æšæºåãããŠããŸãã詳ãã㯠ããã°ã·ãªãŒãº ããåç
§ãã ãã: ã°ããŒãã«å±éã«ãããã¢ããªãšåºç€ã®åæ§ç¯ ã°ããŒãã«å±éãæ¯ããåºç€ã®è£åŽ ããããã¢ãžã¥ã©ã¢ããªã¹ãæ¡çšããã ãã§ã¯ããã€ã¯ããµãŒãã¹éçºã§çºçãã課é¡ã解決ã§ããŸããããµãŒãã¹éã®å·®ç°ã«ããã¡ã³ããã³ã¹ã³ã¹ãããªã³ããŒãã£ã³ã°ã³ã¹ãã®å¢å ã¯ãã¢ãžã¥ãŒã«éã§ãåæ§ã«çºçããå¯èœæ§ããããŸãããããã解決ããã«ã¯ãã³ãŒãã®ãªãŒãããªãã£ãšäžè²«æ§ã®ç¶æãäžå¯æ¬ ã§ãã ããã§ãã°ããŒãã«ã¢ããªéçºã®åœåãã ãªãŒãããªãã£ããŒã ãçµæãããŸããããã®ããŒã ã¯ãã¢ãžã¥ã©ã¢ããªã¹ã®å©ç¹ãæå€§é掻ãããããBackendã·ã¹ãã å
šäœã®ã³ãŒãã®ãªãŒãããªãã£ãæ¹åã»ç¶æãã圹å²ãæ
ã£ãŠããŸããã¡ã³ããŒã¯ãã¢ãŒããã¯ããSREã¡ã³ããŒãããã¯ãšã³ããšã³ãžãã¢ã§æ§æãããæ¥æ¬ãšã€ã³ãã®äž¡æ ç¹ããåå ããŠããŸãã äžè²«æ§ã®ããã³ãŒããç¶æããããšã§ãéçºè
ãæè»ã«ã¢ãµã€ã³ã§ããå¹ççãªé
眮ãå¯èœã«ãªããŸãããŸããAI AgentãæŽ»çšããéçºã«ãããŠããæç¢ºãªã¬ã€ãã©ã€ã³ãèªåãã§ãã¯ãäžè²«ããã³ãŒãããŒã¹ãAIã®æŽ»çšå¹æãé«ããŸãã 2. ãªãŒãããªãã£ããŒã ã®åœ¹å²ãšæŽ»å 2.1 ç®ç ãªãŒãããªãã£ããŒã ã®äž»ãªç®æšã¯ãã³ãŒãã®å¯èªæ§ãåäžãããããšã§ããå¯èªæ§ãé«ããäžè²«æ§ã®ããã³ãŒãã¯ã以äžã®å¹æããããããŸã: æ°ãããšã³ãžãã¢ã®åŠç¿æ²ç·ãç·©åãããªã³ããŒãã£ã³ã°ãå é çµç¹å
ã§ã®æ
åœå€æŽãããŒã éã®è²¢ç®ãåæ»å ãã°ã®æ€åºãä¿®æ£ã容æã«ããéçºã®å質ãšã¹ããŒããåäž 2.2 掻åå
容 ãªãŒãããªãã£ããŒã ã¯ä»¥äžã®æŽ»åãéããŠãã³ãŒãã®å質åäžãšéçºã¹ã±ãŒã«ãæ¯æŽããŠããŸã: ã³ãŒãã¬ãã¥ãŒ : è€é床ã®é«ãPRãäžå¿ã«ã¬ãã¥ãŒ ã¬ã€ãã©ã€ã³ã®äœæãšç¶æ : ã³ãŒãããã³PRã¬ã€ãã©ã€ã³ãGitHubãªããžããªã«éçŽ èªååããŒã«ã®éçº : CIã«ããèªåãã§ãã¯ãå®è£
ã¯ãŒã¯ã·ã§ããã®éå¬ : ãã¹ããã©ã¯ãã£ã¹ã®å
±æ éé±ããŒãã£ã³ã° : ã¬ã€ãã©ã€ã³ã課é¡ãæ¹åç¹ã®è°è« ã¡ããªã¯ã¹é§åã®æ¹å : éçºããã«ããã¯ã®ç¹å®ãšç¶ç¶çãªæ¹å äžã§ãã¡ããªã¯ã¹é§åã®æ¹åã«ã€ããŠã¯ãGitHubã®ã¡ããªã¯ã¹ã掻çšããŠç®æšãèšå®ãã宿çã«ããã«ããã¯ãåæããŠããŸããç¹ã«ä»¥äžã®2ã€ã®ã¡ããªã¯ã¹ã®æ¹åã«åãçµãã§ããŸãã: äžäººãããé±äœåã®Pull RequestãããŒãžã§ããã Pull RequestãOpenããŠããããŒãžãŸã§ã®æé ããããå¯èŠåããããšã§ãéçºããã»ã¹ã®ããã«ããã¯ãç¹å®ããç¶ç¶çãªæ¹åã«ã€ãªããŠããŸãã 3. AIæä»£ã®ã¹ã±ãŒã©ãã«ãªå質管ç éçºåæã¯ã¡ã³ããŒãå°ãªãããªãŒãããªãã£ããŒã ãã»ãŒå
šãŠã®Pull Requestãã¬ãã¥ãŒã§ããŠããŸãããããããéçºãæ¬æ Œåããéçºã¡ã³ããŒã®å¢å ãAI Agent掻çšã®æ®åã«ãããPRã®ããªã¥ãŒã ãæ¥å¢ããåŸæ¥ã®æ¹æ³ã§ã¯å¯Ÿå¿ã§ããªããªã£ãŠããŸããã 幞ããã¬ã€ãã©ã€ã³ãGitHubãªããžããªã«éçŽã»ç¶æããŠãããããLLMãæŽ»çšããã¬ãã¥ãŒã®èªåååºç€ã¯æŽã£ãŠããŸããã課é¡ã¯ããã®åºç€ã§ã©ãã¹ã±ãŒã©ãã«ã«å質ãæ
ä¿ãããã§ããã以äžãå
·äœçãªåãçµã¿ãããã€ã玹ä»ããŸãã ClaudeæŽ»çš Claudeã§Pull Requestãè€éæ§ãšãµã€ãºã®èгç¹ããèªååé¡ããã©ãã«ä»ããè¡ã£ãŠããŸããClaudeã¯ãPRãããå°ããåäœã«åå²ããå©èšãæäŸããŸãã ãã®ã©ãã«ã䜿ããè€é床ãé«ãPull Requestãåªå
çã«ã¬ãã¥ãŒã§ããããã«ãªããŸããã ãŸããGitHubã«éçŽããã¬ã€ãã©ã€ã³ã掻çšããClaudeã«ããã¬ãã¥ãŒã®èªååã§ãã³ãŒãã¬ãã¥ãŒãšã¬ã€ãã©ã€ã³ã®é©çšãå¹çåããŠããŸãã å¹ççã¬ãã¥ãŒ ãªãŒãããªãã£ããŒã ã®ã¬ãã¥ãŒã¯å¿
é ã§ã¯ãããŸãããå°ãªããšãäžäººã®ã³ãŒããªãŒããŒããã¬ãã¥ãŒããããã°PRã¯ããŒãžã§ããŸããããã«ããããªãŒãããªãã£ããŒã ãéçºã®ããã«ããã¯ã«ãªããŸããã äžæ¹ã§ãããŒãžãããPRã®äžã§è€é床ãé«ããã®ã¯åŸè¿œãã§ã¬ãã¥ãŒããŸããããããè€éãªPRãã課é¡ãæ€ç¥ããæ°ãããã¿ãŒã³ãã©ã€ãã©ãªãå°å
¥ããããšã§ãä»åŸã®éçºãæ¹åããŠãããŸãããã®ã¢ãããŒãã§ãå¹ççã«ã¬ãã¥ãŒãªãœãŒã¹ãé
åããæãéèŠãªéšåã«æ³šåã§ããŠããŸãã èªåå ã¬ã€ãã©ã€ã³ãå
šãŠææ¡ããã®ã¯å°é£ãªãããæ©æ¢°çã«ãã§ãã¯å¯èœãªã«ãŒã«ã¯CIã«çµã¿èŸŒãã§ããŸãã äŸãã°ãããŒã¿ããŒã¹ã®ã¹ããŒãèšèšã§ã¯ã瀟å
ã®Database ãªã©ã€ã¢ããªãã£ãšã³ãžãã¢ãšçžè«ãã PostgreSQL ã¬ã€ãã©ã€ã³ ãªã©ãåèã«ã¬ã€ãã©ã€ã³ãçå®ããŸãããããã SQL Fluff ã®ãã©ã°ã€ã³ãšããŠå®è£
ããèªåãã§ãã¯ãè¡ã£ãŠããŸãã ããã«ãããã¬ãã¥ã¢ãŒã®è² æ
ã軜æžãã人éã®ã¬ãã¥ã¢ãŒã¯ããé«åºŠãªèšèšå€æãã¢ãŒããã¯ãã£ã®åŠ¥åœæ§ã«éäžã§ããŸãã 4. Feature FlagäŒæ¬ã·ã¹ãã ã®èšèš ããããã¯ããªãŒãããªãã£ããŒã ãèšèšããå質管çã®å
·äœäŸãšããŠãBackendã·ã¹ãã å
šäœã§å©çšãããFeature FlagäŒæ¬ã®ä»çµã¿ã玹ä»ããŸãã 4.1 èæ¯: Experiment Platformãšã¢ãžã¥ã©ã¢ããªã¹ã¢ãŒããã¯ã㣠ã°ããŒãã«ã¢ããªã§ã¯ãæ°æ©èœã®ãªãªãŒã¹ãå®å
šã«è¡ããããã¡ã«ã«ãªã®åºç€ã·ã¹ãã ã§ãã Experiment Platform ãå©çšããŠããŸãããã®äžã§ãFeature FlagãæŽ»çšããŠãããã客ããŸããšã«åçš®æ©èœã®ãªã³ã»ãªãã管çã§ããŸãã Feature Flagã䜿ãããšã§ãWeb UIäžã§æ©èœããªã³ã«ããã客ããŸã段éçã«å¢ããããããæ°æ©èœã®ãªãªãŒã¹ãæ§åãèŠãªããé²ããããšãã§ããŸããåé¡ãçºçããå Žåããã·ã¹ãã èªäœãåãããã€ããããšãªããWeb UIäžã§æ©èœããªãã«èšå®ããå³åº§ã«ç¡å¹åã§ããŸããExperiment Platformã¯å²åœ(Assignments)ã管çããã·ã¹ãã åŽã§ãã®å²åœãååŸããŠå®è£
ã«çµã¿èŸŒã¿ãŸãã Feature Flagã¯Mobileã¢ããªãWebã¢ããªã§ãå©çšãããŠããŸãããããã®ã¯ã©ã€ã¢ã³ãã¢ããªã§ã¯ã1人ã®ã客ããŸãç¶ç¶ããŠå©çšãããããã¢ããªèµ·åæãªã©ã«Feature FlagãååŸããŠãã£ãã·ã¥ã§ããŸããäžæ¹ãããã¯ãšã³ãã·ã¹ãã ã§ã¯ãªã¯ãšã¹ãããšã«ã客ããŸãç°ãªããããExperiment Platformã®APIãæ¯ååŒã³åºããŠããŒã¿ãååŸããå¿
èŠããããŸãã åè¿°ã®éããã°ããŒãã«ã¢ããªã®Backend systemã§ã¯ã¢ãžã¥ã©ãŒã¢ããªã¹ãæ¡çšããŠãããã¯ã©ã€ã¢ã³ãã¢ããªããã®ïŒãªã¯ãšã¹ããå
éšçã«ã¯è€æ°ã®ã¢ãžã¥ãŒã«ãžã®ãªã¯ãšã¹ããçºçãããŸãã å³1. åçŽåããååããŒãžã®äŸ å
šãŠã®ã¢ãžã¥ãŒã«ãFeature Flagã®Assignmentsãå¿
èŠãšããå¯èœæ§ããããŸãã ãã®ãããªã¢ãŒããã¯ãã£ã®ãããããåã¢ãžã¥ãŒã«ãæ¯åExperiment PlatformããããŒã¿ãååŸããå ŽåãAPIã®ã¬ã€ãã³ã·ããã®åå¢å ããŠããŸããŸãã å³2. åã¢ãžã¥ãŒã«ãExperiment PlatformãåŒã³åºããšã¬ã€ãã³ã·ãå¢å ã°ããŒãã«ã¢ããªã®éçºãé²ã¿ãFeature Flagãå©çšããç¶æ³ã«ãªã£ãŠããäžã§ãã¬ã€ãã³ã·ã®å¢å ãé²ããããå¹ççã«Assignmentsãåç
§ããã¡ã«ããºã ãšã¬ã€ãã©ã€ã³ãå¿
èŠã«ãªããŸããã 4.2 èšèšèŠä»¶ãšå®è£
Assignmentsã®å¹ççãªåç
§ã¡ã«ããºã ãèšèšããã«ãããã以äžã®èŠä»¶ãå®çŸ©ããŸãã: Experiment PlatformãäžåºŠã ãåŒã³åºã ãããã¯ãŒã¯ãã©ãã£ãã¯ãæãã å²åœã«åå®å
šãªã¢ã¯ã»ã¹ææ®µãæäŸãã æ¢åã®ã³ãŒããå²åœã䜿ããããªã£ãå Žåã®ã³ãŒãã®å€æŽéãæå°éã«ãã ãããã®èŠä»¶ãæºããããã«ã æçµçã«æ¡çšãã解決çã¯ã以äžã®3ã€ã®èŠçŽ ãçµã¿åããããã®ã§ã: gRPC metadataã䜿ã£ãŠã¢ãžã¥ãŒã«éã®AssignmentsäŒæ¬ : ã·ãªã¢ã©ã€ãºããAssignmentsãgRPC metadataïŒHTTP HeaderïŒã§éã¶ BFFå±€ã®Server InterceptorãExperiment Platformã®APIãåŒã³åºããAssignmentsãååŸ åã¢ãžã¥ãŒã«ã®Client interceptorãAssignmentsãã·ãªã¢ã©ã€ãºããŠgRPC metadataã«èšå® BFF局以å€ã®Server InterceptorãgRPC metadataããååŸããããªãªã¢ã©ã€ãºããŠAssignmentsãååŸ context.Contextã䜿ã£ãŠã¢ãžã¥ãŒã«å
ã®AssignmentsäŒæ¬ : Server InterceptorãAssignmentsã context.Context ã«æ ŒçŽ ã¢ããªã±ãŒã·ã§ã³ããžãã¯ã¯Assignmentsã context.Context ããååŸ Protocol Bufferã§ã®åå®çŸ© : Assignmentsãæç€ºçã«å®çŸ©ããåå®å
šæ§ã確ä¿ãã€ã³ã³ãã¯ããªã·ãªã¢ã©ã€ãºãå®çŸ å³3. BFFãExperiment PlatformãåŒã³åºããAssignmentsãgRPC metadataã§äŒæ¬ BFFã¢ãžã¥ãŒã«ãExperiment platformã®APIãåŒã³åºãAssignmentsãååŸãããããäžäœTierã®ã¢ãžã¥ãŒã«ãåŒã³åºããšãã«gRPC metadataã§äŒæ¬ããŠããŸãã å
çšã®å³ãšç°ãªããBFFã®ã¿ãExperiment platformãåŒã³åºããããã¬ã€ãã³ã·ãžã®åœ±é¿ãæããããšãã§ããŠããŸãã ã¢ãžã¥ãŒã«å
ã®äŒæ¬ã« context.Context ãå©çšããŠããã®ã§ãã¢ããªã±ãŒã·ã§ã³ããžãã¯ãAssignmentsãåç
§ããããªã£ãå Žåããã³ãŒãã®å€æŽã¯æå°éã«æããããŸãã äžæ¹ã§Assignmentsããªã¯ãšã¹ãã«ä»äžããããšã§ãããã¯ãŒã¯ãã©ãã£ãã¯ã«ã¯åœ±é¿ããããŸããããã§å¹ççãªã·ãªã¢ã©ã€ãºæ¹æ³ãå¿
èŠã§ãã Experiment Platformã®Assignmentsã¯ããã©ã¡ãŒã¿åãšå€ã®key-value圢åŒã§ããFeature Flagã®å€ã¯ "true" ã "false" ããŸãã¯æªå²ãåœãŠã®3ã€ã®ç¶æ
ãåããŸããæªå²ãåœãŠã¯ã段éçãªãªãŒã¹ã§ã客ããŸã®äžéšã®ã¿ãå²åœå¯Ÿè±¡ã«ãªã£ãŠããå Žåã«çºçããŸãã äŸãã°ä»¥äžã®ãããªåœ¢åŒã§ãïŒ"feature_flag1"ã¯æªå²ãåœãŠã®ããå«ãŸããŠããªãïŒ: { "feature_flag2": "false", "feature_flag3": "true", "foo": "10", "bar": "OK" } åœå㯠map[string]string ã®JSONæååãšããŠã·ãªã¢ã©ã€ãºããæ¡ãæ€èšããŸããããããããã®æ¹æ³ã§ã¯ ãã©ã¡ãŒã¿åã®é·ããã·ãªã¢ã©ã€ãºçµæã«åœ±é¿ã ãæ°çŸãæ°åã®ãã©ã¡ãŒã¿ããµããŒãããå Žåã«ç Žç¶»ããŸãã ããã§ã AssignmentsãProtocol Bufferã§æç€ºçã«å®çŸ©ããã·ãªã¢ã©ã€ãºãã ããšã«ããŸããã äžèšã®äŸãProtocol Bufferã§å®çŸ©ãããšãã®ããã«ãªããŸã: message Assignments { optional bool parameter1 = 1; optional bool parameter2 = 2; optional bool parameter3 = 3; optional int64 foo = 4; optional string bar = 5; } ãã®æ¹æ³ã«ããã以äžã®å©ç¹ãåŸãããŸã: ã³ã³ãã¯ããªã·ãªã¢ã©ã€ãºçµæ : ãã©ã¡ãŒã¿åã¯ã·ãªã¢ã©ã€ãºåŸã®ãã€ãé·ã«åœ±é¿ãäžããããšããªããªããExperiment Platformå©çšè
ã¯ããããããååã䜿ãããšãã§ããŸã åå®å
šæ§ : optional ãã€ããããšã§ãæªå²ãåœãŠã®å Žåãšfalseãåºå¥ã§ããŸãã *bool åãšããããšã§ãExperiment Platformã®å©çšæã«é¥ããããçœ ã§ãããæªå²ãåœãŠïŒ nil ïŒãš false ã®åºå¥ãæç€ºçã«ãªããŸãã Protocol Bufferã§æç€ºçã«å®çŸ©ããæ¹æ³ã¯ãæ°èŠãã©ã¡ãŒã¿è¿œå æã«Protoãã¡ã€ã«ã®å€æŽãå¿
èŠãšããæ¬ ç¹ããããŸããããããã©ã¡ãã®æ¹æ³ã§ãGoã³ãŒãã®å€æŽãšãããã€ã¯å¿
èŠã§ããäžæ¹ã§ã ã©ã®ãã©ã¡ãŒã¿ãã©ãã§å©çšãããŠãããæç¢ºã«ææ¡ã§ãã å©ç¹ãæã
ã¯éèŠããŸããã 4.3 æ€èšã®è©³çް ããã§ã¯èšèšã§åè£æ¡ãšããŠäžãã£ããã®ãšã®æ¯èŒå
容ãéããŠæ€èšã®è©³çްã®äžéšã玹ä»ããŸãã 4.3.1 in-memory cacheæ¡ gRPC metadataã䜿ã£ãã¢ãžã¥ãŒã«éã®äŒæ¬ä»¥å€ã®æ¹æ³ãšããŠãin-memory cacheãå©çšããããŒã¿å
±æãšããæ¡ããããŸããã Experiment Platform ClientãProxyããŠin-memory cacheã®ããŒã¿ãè¿ãããšã§ãAPIåŒã³åºãã®ã¬ã€ãã³ã·ãåæžããæ¹æ³ã§ãã in-memory cacheã®å Žåãã¢ãžã¥ãŒã«éã§Assignmentsã®äŒæ¬ãããå¿
èŠããªãããããããã¯ãŒã¯ãã©ãã£ãã¯ãæããããšãå¯èœã§ãã ç¹ã«ãå€ãã®ã¢ãžã¥ãŒã«ãAssignmentsãå©çšããªãå Žåã«gRPC metadataãäœ¿ãæ¹æ³ã«å¯ŸããŠåªäœæ§ããããŸãã å³4. in-memory cacheãå©çšããæ¹æ³ïŒBFFãšTier2 Productã ããAssignmentsãå©çšããå ŽåïŒ æçµçã«ã¯ãProtocol bufferãå©çšããassignmentsã®ã·ãªã¢ã©ã€ãºã«ãããããã¯ãŒã¯ãã©ãã£ãã¯ã®åªäœæ§ãå°ããããšã åå²ããŠéçšãå¯èœãªã¢ãžã¥ã©ã¢ããªã¹ ãå®çŸããŠããäžã§ãã¢ãžã¥ãŒã«éã§cacheãå
±æãããªãã±ãŒã¹ãå¢ããŠããããšãäºæ³ããããã gRPC metadata ãå©çšããæ¹æ³ãéžæããŸããã 4.3.2 æç€ºçãªãªã¯ãšã¹ããã£ãŒã«ãæ¡ gRPC metadataã§ã¯ãªããProtocol Bufferã§æç€ºçãªãªã¯ãšã¹ããã£ãŒã«ããšããŠå®çŸ©ããæ¡ãæ€èšããŸãããã°ããŒãã«ã¢ããªBackendã§ã¯ãAPI仿§ã®å¯èŠæ§ãåå®å
šæ§ã®èгç¹ãããäžè¬çã«ã¯æç€ºçãªãã£ãŒã«ããéžæããŠããŸãã ãããããã®æ¹æ³ã«ã¯å
šãŠã®ã¢ãžã¥ãŒã«ã®å
šãŠã®ãšã³ããã€ã³ãã«Assignmentsãã£ãŒã«ããå®çŸ©ããªããã°ãªããªããšããåé¡ããããŸããTier2ã®Productã¢ãžã¥ãŒã«ãAssignmentsãå¿
èŠãšããå Žåãäžç¶ããã ãã®Tier1ã®ãšã³ããã€ã³ãã«ãåæ§ã®ãã£ãŒã«ããå¿
èŠã«ãªããŸãããã§ã«å€ãã®ãšã³ããã€ã³ããéçºãããŠãããå
šãŠã«ä¿®æ£ãå ããã®ã¯çŸå®çã§ã¯ãããŸããã§ããã ãŸããProtocol Bufferãå©çšããããšã§gRPC metadataã®é·ããååå°ãããªãããšãåãã£ããããgRPC metadataã«ããäŒæ¬ãéžæããŸããã 4.4 å°æ¥å¯Ÿå¿ gRPC metadataã䜿ããããHeaderã®ãµã€ãºå¶éã«åŒã£ããããªããã察çãè¬ããŠããŸãããŠããããã¹ãã§æå€§ãã€ãé·ã«ãªãããã·ãªã¢ã©ã€ãºçµæããããå€ãè¶
ããŠããªããæ€ç¥ã§ããããã«ããŠããŸãã çŸåšã¯å
šãŠã®ãã©ã¡ãŒã¿ã optional bool åã§ããããéåžžã«ã³ã³ãã¯ãã§ããããããå€ãè¶
ããå Žåã®å¯Ÿå¿çãšããŠãã©ã®ã¢ãžã¥ãŒã«ãã©ã®ãã©ã¡ãŒã¿ãåç
§ããŠããããéçã«è§£æããå¿
èŠãªãã©ã¡ãŒã¿ã ããäŒæ¬ããããã«æ©èœãæ¡åŒµããäºå®ã§ããProtocol Bufferã§æç€ºçã«ãã©ã¡ãŒã¿ãå®çŸ©ããŠãããããAssignmentsã®åç
§ã®è§£æã容æã«ãªããŸããããããæç€ºçãªå®çŸ©ãéžæããå©ç¹ã®äžã€ã§ãã 5. ãŸãšã æ¬èšäºã§ã¯ãã¡ã«ã«ãªã°ããŒãã«ã¢ããªã®ãªãŒãããªãã£ããŒã ã®æŽ»åãšãFeature FlagäŒæ¬ã·ã¹ãã ã®èšèšã«ã€ããŠç޹ä»ããŸããã ãªãŒãããªãã£ããŒã ã¯ãã¢ãžã¥ã©ã¢ããªã¹ã¢ãŒããã¯ãã£ã®å©ç¹ãæå€§é掻ãããããã³ãŒãã®å¯èªæ§ãšäžè²«æ§ãç¶æããéçºãã¹ã±ãŒã«ããã圹å²ãæ
ã£ãŠããŸããGitHubã¡ããªã¯ã¹ã掻çšããç¶ç¶çãªæ¹åãClaudeã«ããè€é床åæãCIã«ããèªåãã§ãã¯ãªã©ãæ§ã
ãªæŽ»åãéããŠå質ãæ
ä¿ããŠããŸãã Feature FlagäŒæ¬ã·ã¹ãã ã§ã¯ã以äžãéèŠããŸãã: Protocol Bufferã«ããæç€ºçãªåå®çŸ© : åå®å
šæ§ãšå©çšç¶æ³ã®å¯èŠå gRPC metadataãšcontext.Contextã«ããééçãªäŒæ¬ : æ¢åã³ãŒããžã®åœ±é¿ãæå°éã« ãããã®èšèšå€æã¯ãæè¡çãªå®è£
ã®åé¡ã ãã§ãªããéçºããŒã å
šäœã®ã¹ã±ãŒã©ããªãã£ãèæ
®ãããã®ã§ãã AIæä»£ã«ãããŠãã¬ã€ãã©ã€ã³ã®ææåãèªåãã§ãã¯ãäžè²«ããã³ãŒãããŒã¹ã®ç¶æã¯ãAI AgentãæŽ»çšããéçºã®éèŠãªåºç€ãšãªããŸãããªãŒãããªãã£ããŒã ã¯ãéçºã®å質ãšã¹ããŒãã®äž¡ç«ãç®æããŠæŽ»åãç¶ããŠãããŸãã æåŸãŸã§ãèªã¿ããã ããããããšãããããŸããã
ããã«ã¡ã¯ãæ€çŽ¢é åã§ãšã³ãžãã¢ããã£ãŠãããŸããshinpeiã§ãã æ¬èšäºã¯ é£èŒäŒç»ïŒã¡ã«ã«ãªåã®äžçå
±éã¢ããªãã¡ã«ã«ãª ã°ããŒãã«ã¢ããªãã®éçºèå°è£ ã®äžç°ãšããŠãã¡ã«ã«ãªã°ããŒãã«ã¢ããªã®æ€çŽ¢ããã¯ãšã³ããã¹ã¯ã©ããã§éçºããããšã«äŒŽãã倧äºã«ããèšèšã®ãã€ã³ããã玹ä»ããŸãããŸãä»åã®æ°ããªèŠæ±ã奿©ã«æ¢åã®æ€çŽ¢åºç€ã®æ¡å
ãå¿
èŠã ã£ãã®ã§ããã«ã€ããŠãæžãããŠããã ããŸããã ã°ããŒãã«ã¢ããªã§ã®æ€çŽ¢ã®èŠä»¶ãšèª²é¡ å
æ¥ãåŒç€Ÿããã®çºè¡šã®éããã¡ã«ã«ãªã¯ã°ããŒãã«ã¢ããªã®æäŸãéå§ããŸãããããã«åãããŠãæ€çŽ¢ãã°ããŒãã«ãªæ€çŽ¢ãäœãã¹ãæºåãããããŠããŸããã ã°ããŒãã«å±éã«ãããã¢ããªãšåºç€ã®åæ§ç¯ ã§ç޹ä»ããããã«ã°ããŒãã«ã¢ããªãæäŸããã«ãããããã¯ãšã³ãåºç€ã®åæ§ç¯ãè¡ã£ãŠããŸããåºç€ã掻ãããªããå¿
èŠãªéšåã¯æ°ããäœãçŽãã¢ãããŒãããšã£ãŠãããæ€çŽ¢ããã¯ãšã³ããããã«åãããŠåèšèšãè¡ããŸãããæäœèŠä»¶ã¯ã3幎ã§50ã«åœå±éãåºåæ°ã¯çޝèš40åã§ãïŒ2025幎9ææç¹ïŒãæ¥æ¬äºæ¥ïŒæ¥æ¬ã®ã客ããŸåãã¡ã«ã«ãªã¢ããªïŒã®æ€çŽ¢ãšã®éãã¯è€æ°ãããŸãããäž»ãªãã®ã¯ä»¥äžã§ãã è€æ°åœå±éãããããã®å€èšèªå¯Ÿå¿ æ€çŽ¢å¯Ÿè±¡ãšããŠãã¢ã€ãã ã¢ãã«ãšãããã¯ãã¢ãã«ãšã®äž¡ç« è¶å¢äºæ¥ã«ãããŠãã©ãŒã«ã¹ããŠããéã®ãšã³ã¿ã¡ãããŒé åã«ç¹åã§ãããããªç¬èªã®æ€çŽ¢çµæãã¥ãŒãã³ã° 1.ã¯æ¥æ¬èªä»¥å€ãæ±ãããã®èŠä»¶ã§ããäžçå±éãšãªãã°ãèšèªã®å£ã¯é¿ããŠã¯éããªã課é¡ã§ããå
šææ€çŽ¢ã¯ããããã®èšèªèªäœãåŠçããå¿
èŠããããŸããäžåœèªã®ã¯ãšãªãè±èªã®ã¯ãšãªããã©ã³ã¹èªã®ã¯ãšãªãããããååæ
å ±ãšããããããå¿
èŠããããŸããçŸåšã¯æ¥æ¬ã§åºåãããæ¥æ¬èªã®ååãã¡ã€ã³ã«æ±ã£ãŠããŸãããé·æçã«ã¯æ¥æ¬èªä»¥å€ã®ååãæ±ãå¯èœæ§ãèæ
®ããå¿
èŠããããŸããã 2.ã¯æ€çŽ¢ãšã³ãžã³ã§æ€çŽ¢å¯Ÿè±¡ãšããŠæ±ãããŒã¿ã¢ãã«ã®è©±ã§ããã¢ã€ãã ãšã¯ãçŸåšã®ã¡ã«ã«ãªã®äž»æµã§ãããåäžã®ååãæ€çŽ¢å¯Ÿè±¡ãšãªããããªããŒã¿ã¢ãã«ã§ããäžæ¹ããããã¯ãã¢ãã«ãšã¯ãäžã€ã®æ€çŽ¢å¯Ÿè±¡ã ãã©ãäŸãã°è²éãïŒããªã¢ã³ãïŒãè€æ°ååšãããããšãã§ãããããªããŒã¿ã¢ãã«ã§ããC2Cã®ååã¯ã¢ã€ãã ã¢ãã«ã§å¯Ÿå¿ã§ããã®ã§ãããB2Cã®ååã®äžéšã¯ããªã¢ã³ããæã€ããããããã¯ãã¢ãã«ãå¿
èŠã«ãªããŸããã¡ã«ã«ãªã¯C2CããŒã±ãããã¬ã€ã¹ãšããŠã¹ã¿ãŒããããããæ¥æ¬äºæ¥ã®æ€çŽ¢ã§ã¯ä»ããªããã¢ã€ãã ã¢ãã«ã§åããŠããŸãããã°ããŒãã«ã¢ããªã§ã¯ã¢ã€ãã ããããã¯ãåæ¹ãåçã«æ±ããå¿
èŠããããŸãã 3.ã¯ã°ããŒãã«ã¢ããªã¯æ€çŽ¢çµæãç¬ç«ããŠã³ã³ãããŒã«ããããšããæå³ã§ããã°ããŒãã«å±éãèãããšãã«åœããšã®ãã¥ãŒãã³ã°ãäºæ¥ã®æ¹åæ§ã«åãããæè»æ§ãå¿
èŠã«ãªããŸããäŸãã°ãã¯ãšãªãèªåãã¡ã§çµã¿ç«ãŠãŠãèªç±ã«æ€çŽ¢çµæããã¥ãŒãã³ã°ãã§ããããã«äœãå¿
èŠããããŸã ãæ€çŽ¢ã¯æ¥æ¬äºæ¥ãšè¶å¢äºæ¥äž¡æ¹ã§éèŠãªæ©èœã§ãããéçºã®åªå
床ããªãœãŒã¹ãªã©ãéãã«åœ±é¿ãåããªãããã«ããããšãéèŠã§ãã Vertex AI Search for Commerce ã®æ¡ç𠿥æ¬äºæ¥ã®æ€çŽ¢ã§ã¯Elasticsearchã䜿ã£ãŠããŸããã°ããŒãã«ã¢ããªã§ã¯æ¥æ¬ã«ããååå
šäœãæ±ãäºå®ã ã£ãã®ã§ã売äžã«æ¯ã¹ãŠããŒã¿éãæ¡éãã«å€§ããç¶æ
ã§ãã売äžãšã³ã¹ããäž¡ç«ãããã«ã¯Elasticsearchã®åå©çšãããããæãã€ããŸããã§ããããå€èšèªå¯Ÿå¿ãç¬ç«æ§ã®ç¢ºä¿ããªãªãŒã¹ãŸã§ã®æéãšéçºãªãœãŒã¹ãèãããšãã©ãããŠããã®åã®äº€éæŽçã«é·ãæéãããããŸããã©ããããææ¡ããŠããæã«ãæããããæ¡ã«äžãã£ãŠããã®ãGoogleãæäŸããŠãVertex AI Search for CommerceïŒä»¥äžãVAIS:C)ã§ããä»åã®äŸã§ã¯ä»¥äžã®ç¹ã§é
åçã§ããã ãã«ãããŒãžããªå°å£²ãµã€ãåãæ€çŽ¢ãµãŒãã¹ ãªã¯ãšã¹ãããŒã¹ã®èª²éã¢ãã«ïŒãã©ãã£ãã¯ããªããã°èª²éãããªãïŒ å€èšèªå¯Ÿå¿ãã å
¥åããããŒã¿ã¯ãããã¯ãã¢ãã«ïŒããªã¢ã³ãããïŒ ããçšåºŠã®æ€çŽ¢çµæãã¥ãŒãã³ã°ãå¯èœ ãŠãŒã¶ãŒã€ãã³ãããŒã¹ã®æ€çŽ¢çµææé©åãã ã°ããŒãã«ãšã³ããã€ã³ãïŒäžçäžãã䜿ããïŒ ããã ïŒãšæããŸãããèŠä»¶ãšVAIS:Cãã§ããããšãèŠæ¯ã¹ãŠããã ããã°ããããŸãããã°ããŒãã«ã¢ããªã«ãšã£ãŠå¿
èŠãªèŠæ±ãã»ãŒæºãããŠãããããã¯ãªã®ã¯ã³ã¹ãã ãã§ããããã§æã
ãç«ãŠãæŠç¥ã¯ä»¥äžã§ãã VAIS:Cãå°å
¥ããçŽ æ©ãã¹ã¢ãŒã«ã¹ã¿ãŒããã ãã©ãã£ãã¯ã䌞ã³ãŠããŠããã€ã§ããªãã¬ãã«ã«ãªãã°ãElasticsearchã«åãæ¿ãã ãã®æ¹æ³ã§ããã°ãElasticsearchåŽãã°ããŒãã«ã¢ããªã«é©çšããããã«å¿
èŠãªæºåæéã皌ãããšæããŸãããäžæ¹ã§ãããžãã¹åŽã®æžå¿µã¯çŸåšã®æ¥æ¬äºæ¥ã®æ€çŽ¢ãšãåæ§ã®å£²ãäžããåŸãæ€çŽ¢çµæãã ãããšãã§ãããã©ãããã§ãããããã¯ãã£ãŠã¿ãªããã°ããããªãã£ãã®ã§ãA/Bãã¹ããè¡ãããšã«ãªããŸããã ç°¡åã«VAIS:Cã説æããŸããšãååæ
å ±ãšããŠãŒã¶ãŒã€ãã³ããå
¥ãããšãæé©ãªæ€çŽ¢çµæãè¿ã£ãŠãããšãããã®ã§ããæé©åã«å¿
èŠãšãªããŠãŒã¶ãŒã€ãã³ãã¯ãGoogle Analytics 4(以äžãGA4)ã§åéãããã®ãåæãšãªã£ãŠãŸããããã¹ããŒãããåãããã°ç¬èªã€ãã³ãã®å
¥åãå¯èœã§ãããã¡ã«ã«ãªã¯GA4ã§ã¯ãªããç¬èªã®ã€ãã³ãåºç€ãæã£ãŠããããããªããšã倿ããŠåãããŸãããïŒGoogle Cloud Japanã®çæ§ã«ã¯å€å€§ãªããååãããã ããŸããŠã倧å€ãäžè©±ã«ãªããŸãããïŒ çµæçã«ã¯ãæã
ã®ååæ
å ±ãšããªããšã倿ãããŠãŒã¶ãŒã€ãã³ãã§ã¯ãæ¥æ¬äºæ¥ã®æ€çŽ¢ãããçµæãå£ãããšã確èªã§ããŸããããŸããåŸè¿°ããããã€ãã®èŠä»¶ãæºããããšãé£ããããšãããããŸãããã§ããããã®ãªã¹ã¯ãè£ã£ãŠããŸãã¡ãªãããããã®ãäºå®ã§ããïŒãããå
šéšãç§äžäººã§ã§ããŠãã®ã§ãããïŒïŒæ€çŽ¢ãšã³ãžã³ãå€ããããšã§ã®ãªã¹ã¯ã¯åæããäžã§ãã°ããŒãã«ã¢ããªã®åæãªãªãŒã¹ã¯VAIS:Cã§è¡ãããšæ±ºããŸããã æ°ããæ€çŽ¢ããã¯ãšã³ãã®èšèš æ€çŽ¢ãšã³ãžã³ã®ç®åŠãç«ã£ãã®ã§ã次ã¯ããã¯ãšã³ãã®è©±ã§ããããã§ã¯ãç¹ã«ãã ãã£ãç¹ãã玹ä»ããŸãã ç§ã¯7幎åãçŸåšã®æ¥æ¬äºæ¥ã®æ€çŽ¢ã·ã¹ãã ã®èšèšã«ãé¢ãã£ãŠããŸãããåœæã¯çæ³ãæåŸ
ã蟌ããŠèšèšããŸããããå®éã«éçšãç¶ããäžã§ãããã¯èšèšããèŠçŽããæ¹ãããããšæããéšåãå€ããä»åã¯ããããæ¹åãã圢ã«ããŠããŸãã ããŒã¿ã¢ãã«ã«äŸåããAPI ããŒã¿ãååŸããã¿ã€ãã®ã€ã³ã¿ãŒãã§ãŒã¹ã¯âã©ããªããŒã¿âã察象ãšãããã§ã¬ã©ããšèšèšãå€ãããŸããæ±çšçã«ãªãã®ãäœãããšãããšãæœè±¡åãé²ã¿ãããŠãäœèšãããã«ãããªã£ãŠããŸããã¡ã§ãã察象ãç¡éã«å¢ããããã§ã¯ãªãã®ã§ãæ±çšåã¯ããã«ãããšãã°ProductãSearchããããã®ãšã³ããã€ã³ãããšãããµãã«å²ãåããŸãããProductã®ããŒã¿ã¢ãã«ã¯æ±ºãŸã£ãŠããŸããã¿ã€ãã«ããã£ãŠãååã®èª¬æããã£ãŠã倿®µããã£ãŠããããšãã©ãã«è¡ã£ãŠãåãã§ãã æè»ãªåŠçãå¯èœã«ãããã©ã°ã€ã³æ©æ§ ElasticsearchãSolrãªã©ã«ãããããã«ãæ€çŽ¢ã¯ãšãªãçµæã«å¯ŸããŠç¬èªã®åŠçãå ããããšããããŒãºã¯ã©ã®æ€çŽ¢ã·ã¹ãã ã«ããããŸããæ¥æ¬äºæ¥ã®æ€çŽ¢éçºã§ãããããŸã§å€ãã®æ¡ä»¶åå²ïŒifæïŒãã³ãŒãã«åã蟌ãŸããæŽçãé£ãããªã£ãŠããŸãããããã§ãä»åã®ã°ããŒãã«ã¢ããªåãæ€çŽ¢ããã¯ãšã³ãã§ã¯ãã¯ãšãªã®ååŠçã»åŸåŠçãããã¯ã§ãããã©ã°ã€ã³æ©æ§ãå°å
¥ããŠããŸããæ€çŽ¢æ©èœã®éçºè
ã¯ãå¿
èŠãªåŠçããã©ã°ã€ã³ãšããŠè¿œå ããã ãã§æ¡åŒµãå¯èœã§ããå€ãã®ãœãããŠã§ã¢ã§ã䌌ããããªä»çµã¿ã䜿ãããŠããŸãããçµå±ãã®æ¹æ³ã«è¡ãçãããªããšãã宿ããããŸãã æ€çŽ¢ãšã³ãžã³æ©èœã®å®è£
ãšæœè±¡ãããã åºæ¬çãªããžãã¯ã¯æœè±¡å±€ã«ãŸãšããå®è£
éšåã¯åãæ¿ãå¯èœãªæ§æã«ããŠããŸããããšããšãVAIS:CãšElasticsearchã®äž¡æ¹ã§åãå¿
èŠããããŸãããããã®èŠä»¶ããªããŠãåãèšèšã«ãããšæããŸãããšããã®ããæ€çŽ¢ãšã³ãžã³ã®äžçã¯ãŸãã«âæŠåœæä»£âã§ãVectoræ€çŽ¢ã«åŒ·ãæ°ãããšã³ãžã³ãªã©ã次ã
ãšç»å ŽããŠããŸããçŸåšã¯Elasticsearchã䜿ã£ãŠããŸãããå°æ¥çã«ä»ã®éžæè¢ãæåã«ãªãå¯èœæ§ããããŸãããã®ãããæœè±¡åããŠããããšã§ãåŸã
ã®ç§»è¡ãæ¯èŒã³ã¹ãã倧ããæžããããšèããŠãŸãã ãã®ä» ã°ããŒãã«ã¢ããªã§ã¯ãããšããšããã¯ãšã³ãå
šäœã«é¢ããèšèšæ¹éãæç¢ºã«ãããŸã ( ã°ããŒãã«å±éãæ¯ããåºç€ã®è£åŽ ãåç
§)ããã®ãããã§ãäœãã©ãã«ãããããããçšåºŠæç¢ºã«ãªã£ãŠãŸããç¹ã«å€§äºã ãšæãã®ã¯ãBFFã®åãåãã§ããBFFã¯ããã«ãããïŒéã«ãããšãããã«ãããªããïŒãšããã®ã¯ãèŠãç®æãéå®ã§ããã®ã§æ¢çŽ¢ã®ã³ã¹ããæžãã®ã§ãããããŸã§ã®ãã€ã¯ããµãŒãã¹ã§ã¯ãã©ãã®èª°ãæ€çŽ¢APIãå©ããŠããããã客ããŸã«åºããŠãããããã¡ãããææ¡ããã®ã¯å°é£ã§ãããæ€çŽ¢ããã¯ãšã³ãã§ãããã¡ã€ã³ç¹åã®ããŠããŠããããŸããäœãã©ãã«å®è£
ããããæç¢ºã«æç€ºããŠãã®ã¯æ°ããæ€çŽ¢ããã¯ãšã³ãã®ç¹åŸŽã§ããããã¯ãšã³ãå
šäœã®èšèšã§ããæããããŠåããããªããšãããŠããã®ã¯ããããŸã§ã®èŠçã䌌ãŠããããã ãšæããŸããã ãã§ããªãã§ãã©ãã«ã§ãäœãããšããã®ã¯ãã¡ã³ããã³ã¹ã³ã¹ããäžããçµæã«ãªã£ãŠãããšããçµéšåã ãšæããŸãã ãããã¯ããªãŒããŒããã®æ³å®å€ã®èŠæ±ã§å·ãæ± æåã¯VAIS:Cã䜿ããšã¯ãããé·æçã«ã¯Elasticsearchã«åãæ¿ããªããã°ãªããŸãããç§ã¯ãããŸã§ãElasticsearch as a Service (以äžãEaaS) ãšããã ECK ãªã©ãããŒã¹ã«äœã£ã瀟å
ã®Elasticsearchãã¹ãåºç€ãéçºïŒéçšããŠããŸãããããŒã ã®æŽ»èºã§ãã°ã«ãŒãå
ã®ã»ãŒãã¹ãŠã®æ€çŽ¢ãµãŒãã¹ã¯EaaSã®äžã§åããŠããšèšãããšãããŸã§æ¥ãŠããŸããé¢é£ãããšã³ã·ã¹ãã ãå
å®ãããŠããŸãããã«ã¹ã¿ãã€ãºæ§ãé«ããå®éãã¡ã«ã«ãªã®è€æ°ã®ããžãã¹ã§äœ¿ãããŠããããšããã®èšŒå·Šã§ããã°ããŒãã«ã¢ããªã®æºåæéäžã責任è
ã§ãã@SuwenãããšçŽæ¥è©±ãæ©äŒãå€ããEaaSã¯ãªãã§ãã§ããã®ã§å®å¿ããŠãã ããããšäŒããŠãŸãããããã§äœåºŠããã£ãŒãããã¯ãããã®ãã以äžã®ãããªç¹ã§ãã ãæ¥æ¬äºæ¥ã®ãã®æ€çŽ¢æ©èœãã°ããŒãã«ã¢ããªã§ã䜿ããããªããæ¥æ¬äºæ¥ã®ãã®æ©èœãã°ããŒãã«ã¢ããªã ã£ãããããããµãã«ã«ã¹ã¿ãã€ãºãããããããã ãããããã§ç§ã®éå»ã®èšäºãèªãã§ããã ããã¿ãªããŸãªããç§ãå·ãæ±ãæµããçç±ãããããã§ããïŒEaaSã¯ãElasticsearchã®æäŸãäž»ã§ããããã®äžã«äœãããæ©èœã®åå©çšãŸã§ã¯è²¬ä»»ãæã£ãŠããŸããããã¡ããããã©ãããã©ãŒã ãšããŠãæ©èœã®åå©çšæ§ãç¡èŠããŠãããããããããŸãããElasticsearchã«ã¯ãã©ã°ã€ã³æ©æ§ããããå®éã«ãã®ãã©ã°ã€ã³ãçšããæ©èœãªãåå©çšã§ããŸãããããã¡ã«ã«ãªã§ã¯Javaãšã³ãžãã¢ã¯å°æ°æŽŸã§ãElasticsearchãã©ã°ã€ã³ã®éçºã¯ã»ãŒé²ã¿ãŸããã§ãããæ©èœã®ã»ãŒå
šãŠã¯Goã®ãã€ã¯ããµãŒãã¹ã«äœã蟌ãŸããŠããŸãã以äžã«ãèª²é¡æã説æããã®ã«äœ¿ã£ãã¹ã©ã€ãã®äžéšãæããŸããæ¥æ¬äºæ¥ã®äœã蟌ãã æ€çŽ¢æ©èœè³ç£ã䜿ããããã©ã䜿ããªããšããç¶æ
ã§ãã å®ã¯ãã®åé¡ã¯ä»¥åã«ãã¶ã€ãã£ãŠãŸãããåºåäºæ¥ããããEaaSã䜿ã£ãŠããã£ãŠããã®ã§ãããããžãã¹åŽããã®æåŸ
å€ã¯ãEaaSã䜿ãã°ãæ¥æ¬äºæ¥ã®æ€çŽ¢ãšåãã¯ãªãªãã£ã®æ€çŽ¢çµæãã§ãŠãããšæãããŠããã®ã§ããå®éã«ã¯ãEaaSã¯æ¥æ¬äºæ¥ã®æ€çŽ¢ãšåãæ€çŽ¢çµæãæäŸããããã§ã¯ãªãã®ã§ããã®æã¯æ¥æ¬åãã«äœãããã·ããã ãæ¥æ¬èªåœ¢æ
çŽ è§£æãªã©ã®ã©ã€ãã©ãªãåºåããŒã ã®ããã¯ãšã³ãããåå©çšããŠããã圢ã§èœã¡çããŸããããã®é ã«ã¹ã©ã€ããæžããæ¥æ¬ã®æ€çŽ¢ããŒã ãžãGoã§äœãããæ€çŽ¢æ©èœã®åå©çšæ§ãé«ããã¹ãã ãšã®åé¡æèµ·ã¯ããŠããŸãããããåœæã®æ¥æ¬äºæ¥ã®åªå
床çã«ã¯ãåå©çšæ§ã«ãªãœãŒã¹ãå²ããŠãããããšã¯ãªããªãé£ããã£ãã®ã§ãã All for oneã§æ€çŽ¢åºç€ã®æ¡å
ãž ç§ã¯ããããã¯è¿·èµ°ããŸãããæ¥æ¬äºæ¥ã®éçºãåªå
床ãéªéããªãç¯å²ã§ããªããšãæ©èœã®åå©çšåãé²ããæ¡ãæ»ãåºãããšããŸãããäžæã¯ãå¿
èŠãªæ©èœãElasticsearchãã©ã°ã€ã³ã§æžãçŽããããšãŸã§èããŠããŸãããããã§èãšãªã£ãåé¡ç¹ãæŽçããŸãã EaaSã¯æåããè€æ°äºæ¥ã§ã®å©çšãèŠæ®ããèšèšã§ãããããã®äžã«äœã£ãæ¥æ¬äºæ¥ã®æ€çŽ¢ãµãŒãã¹ã¯æ¥æ¬äºæ¥ã«åŒ·ãçµåããŠãããããä»äºæ¥ããã®åå©çšãå°é£ã§ãã æ¥æ¬äºæ¥ã®æ€çŽ¢ã¯7幎éçšããŠããã³ãŒãããŒã¹ã§ãããåè¿°ã®ãšãããããŸãæŽçãããŠããªããªã©ã®è² åµããã æ¥æ¬äºæ¥ã®æ€çŽ¢ã¯åŒãç¶ãéèŠã§ããããã®ã³ãŒãããŒã¹èªäœãåå©çšã§ããããã«æ¹å€ãã€ã€ãæ¥æ¬äºæ¥åãã®éçºãåæäžŠè¡ããã®ã¯å°é£ ã°ããŒãã«ã¢ããªã®æè¡è²¬ä»»è
ã§ãã@deeeeetãšãè°è«ãéããŠã以äžã®ãããªæ¡ãåºããŸãããããŸããEaaSã®äžã«ãåå©çšå¯èœãªæ©èœãäžåãã€åãåºããŠäœ¿çšãããšãããã®ã§ãã æ¥æ¬äºæ¥åŽã«ãåé¡ãšæ¡ãåæ²ç€ºããè°è«ãéããŸãããæçµçã«ãã°ããŒãã«ã¢ããªã®åªå
床ãäžãã£ãããšããããæ¥æ¬äºæ¥åŽãããç©æ¥µçã«åããŠãããŠãæ¥æ¬äºæ¥ã®æ€çŽ¢æ©èœãåå©çšããããã®æ°ããå±€ãäœãããšã決ãŸããŸããããã®å±€ã«é¢ããŠã¯ãäž»å°æš©ãããããã§ã¯ãªãã®ã§ãç§ããã¯EaaSãšãããã©ãããã©ãŒã ã倧äºã«ããŠãããšããããªãã¹ãå
±æããŠãããŸã®ãšããå
±éããæ¹éã®ããšäžç·ã«äœã£ãŠããŸããå
·äœçã«ã¯ä»¥äžã§ãã Platformããã®äžã§äœ¿ãããŠããªãŒãã³ãœãŒã¹ãœãããŠã§ã¢ã«å¿
èŠä»¥äžã®å¶çŽãå ããªãããš ããã§ãããªãŒãã³ãœãŒã¹ãœãããŠã§ã¢ãšã¯ãæã
ã®å Žåã¯Elasticsearchã§ããElasticsearchã«ã¯æã
ããã 䜿ã£ãŠãªãã ãã§ããŸã ãŸã ããããã®å¯èœæ§ããããŸãããããçŸæç¹ã§ã¯äœ¿ããªããããšããçç±ã§äžã®ãã©ãããã©ãŒã ãçµç±ãããšäœ¿ããªããªãã®ã¯æ¬æ«è»¢åã ãšæã£ãŠãŸããå®ã¯ããã¯è°è«ã«ãªããããç¹ã§ãå¶çŽãå ããæ¹ãäžå¯æž¬äºæ
ãé¿ããããŠãã¡ã³ããæ¥œã«ãªããšãã話ããããŸãã®ã§ãæ
éãªèª¬åŸãšåšãã®çè§£ãå¿
èŠã§ãã åããžãã¹ãã¡ã€ã³ããç¬ç«ããŠäœ¿ããããš å
±éåºç€ãäœã£ãŠããããè€æ°ã®ãªãŒããŒããå©çšããæã«åé¡ã«ãªãã®ã¯æ©èœã®éçºåªå
床ã ãšæããŸããäºæ¥Aã¯èŠæš¡ãå°ããããåŸåããäºæ¥Bã®ãªãŒããŒã¯çºèšåããããããåªå
ãããªã©ãªã©ãããããâæ¿æ²»âã«ãªãããããšããã ãšæããŸããå®å
šãªç¬ç«ã¯äžå¯èœã§ãããããããªãã¹ãé¿ããããã«ã¯ãåºç€ãžã®éçºãéãããŠããããšãéèŠã§ããéãããŠãããšèšã£ãŠããèªç±ã«äœãããšã¯ãŸãéããŸããããã°ã®å段ã§èª¬æããéããã©ãã§ãã ãã§ããããããšåæŸãã€ããªããªã£ãŠããŸããŸããããã解決ããäžã€ã®æã¯ãã©ã°ã€ã³æ©æ§ã§ããã©ããã©ãããã¯ãããã¯ãŸã ãŸã è°è«ããŠããå¿
èŠãããã®ã§ãããåºæ¬çãªæ¹éã«é¢ããŠã¯åæã§ããŠããŸãã ããããŠãçŸåšã®ã°ããŒãã«ã¢ããªã®æ€çŽ¢ã¯ãVAIS:CãšEaaSã®äžã«äœãããæ°ããä»çµã¿ãšã®ãã€ããªããã§çšŒåããŠããŸãã ãŸãšã ä»åã¯ã°ããŒãã«ã¢ããªã§ã®æ°ããªæ€çŽ¢èŠæ±ã«å¯ŸããŠã©ã®ãããªæ¹éã§å¯ŸåŠããã®ãã«ã€ããŠæžãããŠããã ããŸãããåŸæ¥ã®æ¥æ¬äºæ¥ã®æ€çŽ¢ãšã¯æ¯è²ã®éãèŠæ±ãããªãããã«ããã«ãããŒãžãã®æ€çŽ¢ãµãŒãã¹ã§ãããVAIS:Cãäžæçã«å°å
¥ããŸããããŸããã°ããŒãã«ã¢ããªã®éçºèŠæ±ãèµ·ç¹ã«è°è«ãåºããã瀟å
æ€çŽ¢åºç€ãæ¡å
ãããããšã§ãä»åŸã®èŠæ±ã«ã€ããŠã察åŠã§ããããã«åºç€ãäœã£ãŠããããšã«ã€ããŠãè§ŠããããŠããã ããŸãããå
·äœçãªå€èšèªå¯Ÿå¿æ¹æ³ãªã©ãä»åãæžããããªãã£ãéšåãããã®ã§ããŸã次å以éã§ã玹ä»ã§ããã°ãããªãšæã£ãŠãŸãã åè âã¡ã«ã«ãªã®æ€çŽ¢åºç€ã®å€é·ã«ã€ããŠâ https://engineering.mercari.com/blog/entry/20220207-776318b784/ æé2000äžäººã䜿ããã¡ã«ã«ãªæ€çŽ¢æ©èœã®ã¢ãŒããã¯ã㣠https://findy-tools.io/articles/mercari-elasticsearch/38
ã¯ããã« ããã«ã¡ã¯ãCross Border (XB) Engineeringã§SRE & Enablingãæ
åœããŠãã @ryotarai ã§ãã æ¬èšäºã¯ é£èŒäŒç»ïŒã¡ã«ã«ãªåã®äžçå
±éã¢ããªãã¡ã«ã«ãª ã°ããŒãã«ã¢ããªãã®éçºèå°è£ ã®äžç°ãšããŠããã®ãããžã§ã¯ãã®ããã¯ãšã³ãAPIã®E2EïŒEnd-to-EndïŒãã¹ãã«ã€ããŠæ·±æãããŸããç¹ã«ãéçºè
å
šå¡ãã¡ã³ããã³ã¹ã§ããE2Eãã¹ãåºç€ãã©ã®ããã«å®çŸããã®ãããã®èšèšææ³ãšå®è£
ã«ã€ããŠç޹ä»ããŸãã ãªãE2Eãã¹ãã®æ¹åãå¿
èŠã ã£ãã®ã åŸæ¥ã®E2Eãã¹ããæ±ããŠããèª²é¡ ããã¯ãšã³ãAPIã®E2Eãã¹ãã¯ãã·ã¹ãã å
šäœãæ£ããåäœããããšã確èªããéèŠãªåœ¹å²ãæ
ã£ãŠããŸããããããå€ãã®ãããžã§ã¯ãã§ä»¥äžã®ãããªèª²é¡ã«çŽé¢ããŸã: ã»ããã¢ããã®è€éã: ãã¹ãç°å¢ã®æºåã«æéãããããéçºè
ãæ°è»œã«å®è¡ã§ããªã 䞊åå®è¡ã®é£ãã: ãã¹ãéã§ãªãœãŒã¹ã®ç«¶åãçºçããå®è¡æéãé·ããªã å±äººå: QAããŒã ãäž»ã«ã¡ã³ããã³ã¹ããéçºè
ãè§Šãã«ãã åŠç¿ã³ã¹ãã®é«ã: å°çšã®ãã¬ãŒã ã¯ãŒã¯ãDSLãåŠã¶å¿
èŠããã ãã®ãããžã§ã¯ãã§ãåœåããããã®èª²é¡ã«çŽé¢ããŠããŸãããç¹ã«ãQAããŒã ã®ã¿ãE2Eãã¹ãã®ã¡ã³ããã³ã¹ãæ
åœããç¶æ³ã§ã¯ã以äžã®åé¡ãçºçããŸã: APIã®å€æŽæã«ãE2Eãã¹ãã®æŽæ°ãåŸåãã«ãªã ãã¹ãã®è¿œå ã«æéãããããã«ãã¬ããžãäœäžãã éçºè
ããã¹ãã®å®è£
ãçè§£ããããããã°ãå°é£ã«ãªã ç®æããå§¿ïŒéçºè
å
šå¡ãåå ã§ããE2Eãã¹ã ç§ãã¡ãç®æããã®ã¯ãQAããŒã ã ãã§ãªããAPIã®ã³ãŒããæžããŠããéçºè
å
šå¡ãE2Eãã¹ãã®ã¡ã³ããã³ã¹ãè¡ããäœå¶ã§ãã ãããå®çŸããããã«ã¯ã以äžã®èŠä»¶ãæºããå¿
èŠããããŸããïŒ éçºè
ãæ¥åžžçã«äœ¿ã£ãŠããæè¡ã§ãã¹ããæžãã åŠç¿ã³ã¹ããäœããããã«æžãå§ãããã IDEã®è£å®ããªãã¡ã¯ã¿ãªã³ã°æ©èœã䜿ãã ããŒã«ã«ã§ãCIã§ãåãããã«å®è¡ã§ãã ãã¬ãŒã ã¯ãŒã¯ã®èšèšææ³ ãæ®éã®go testã§æžããããšããå²åŠ ã¡ã«ã«ãª ã°ããŒãã«ã¢ããªã®ããã¯ãšã³ãAPIã¯ãGoã§å®è£
ãããŠããŸãããã®ãããæçµçã«ç§ãã¡ã¯æ®éã®Goã³ãŒãïŒgo testïŒã§E2Eãã¹ããæžãæ¹åŒãéžæããŸããããã®çç±ã¯ïŒ åŠç¿ã³ã¹ãããŒã: éçºè
ã¯æ¢ã«go testã®æžãæ¹ãç¥ã£ãŠãã åå®å
šæ§: Connect ã®ã¯ã©ã€ã¢ã³ãã³ãŒãããã®ãŸãŸäœ¿ããã³ã³ãã€ã«æã«åããã§ãã¯ã§ãã IDEã®æ©æµ: è£å®ããªãã¡ã¯ã¿ãªã³ã°ãå®çŸ©ãžã£ã³ããªã©ã䜿ãã ãããã°ã®ãããã: éåžžã®Goããã°ã©ã ãšããŠãããã°ã§ãã æ¢åã³ãŒãã®æŽ»çš: ãã¹ããã«ããŒé¢æ°ãã¢ãã¯ãªã©ãåå©çšã§ãã ãã®æ±ºå®ã«ãããE2Eãã¹ããç¹å¥ãªãã®ã§ã¯ãªããæ¥åžžã®éçºãããŒã®äžéšã«ããããšãã§ããŸããã ç§ãã¡ãå®è£
ããE2Eãã¹ããã¬ãŒã ã¯ãŒã¯ã®æ žå¿ã¯ããæ®éã®go testã§æžããããšããèšèšææ³ã§ãã å®éã®ãã¹ãã³ãŒãäŸãèŠãŠã¿ãŸãããïŒ func TestUpdateNickname(t *testing.T) { t.Parallel() tests := []struct { name string userID int64 nickname string wantCode connect.Code }{ { name: "Success", userID: createTestUser(t).ID, nickname: "NewNickname", wantCode: connect.CodeOK, }, { name: "Blank nickname returns error", userID: readonlyUser().ID, nickname: "", wantCode: connect.CodeInvalidArgument, }, { name: "Non-logged in user returns error", userID: 0, nickname: "TestNickname", wantCode: connect.CodeUnauthenticated, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { t.Parallel() testenv.Run(t, func(params env.RunParams) { client := accountv1connect.NewBFFAccountServiceClient( http.DefaultClient, params.Server.URL, ) req := connect.NewRequest(&accountv1.UpdateNicknameRequest{ Nickname: tt.nickname, }) if tt.userID != 0 { // èªèšŒããããŒãèšå® setAuthHeader(t.Context(), req.Header(), tt.userID) } _, err := client.UpdateNickname(t.Context(), req) if connect.CodeOf(err) != tt.wantCode { t.Errorf("error code = %v, want %v", connect.CodeOf(err), tt.wantCode) } }) }) } } ãã®ã³ãŒãã¯ãgo testã®ããŒãã«é§åãã¹ããšããæšæºçãªãã¿ãŒã³ã§æžãããŠããŸãïŒ t.Parallel() ã§äžŠåå®è¡ãæå®ïŒéåžžã®go testãšåãïŒ ãã¹ãã±ãŒã¹ãæ§é äœã®ã¹ã©ã€ã¹ã§å®çŸ© t.Run() ã§ãµããã¹ããå®è¡ããåãµããã¹ãã䞊åå®è¡ testenv.Run() ã®äžã§ãã¹ããµãŒãã®URLãååŸ Connectã®èªåçæãããã¯ã©ã€ã¢ã³ãããã®ãŸãŸäœ¿çš éåžžã®go testãšåãã¢ãµãŒã·ã§ã³ E2Eãã¹ãç¹æã®è€éãªèšè¿°ã¯ã»ãšãã©ãªããæ®æ®µã®ãŠããããã¹ããšåãããã«æžããããšãåãããŸãã ããã«ãæ®éã®Goã³ãŒãã§æžãããšããããšã¯ãClaude Codeãªã©ã®AIã³ãŒãã£ã³ã°ããŒã«ã广çã«æŽ»çšã§ãããšããããšã§ãããã¹ãã±ãŒã¹ã®è¿œå ããšããžã±ãŒã¹ã®æŽãåºããªã©ãAIã®æ¯æŽãåããªããå¹ççã«ãã¹ããæžãããšãã§ããŸãã QAããŒã ãªã©ãããã¯ãšã³ããšã³ãžãã¢ä»¥å€ã§Goèšèªã«æ
£ããŠããªãã¡ã³ããŒãããŸãããAIãæŽ»çšããããšã§ãã¹ãã³ãŒããäœæã§ããããã«ãªã£ãŠããŸãã å®éã«ãæ¢åã®Jestã§å®è£
ãããŠããE2Eãã¹ãããã®ãã¬ãŒã ã¯ãŒã¯ã«ç§»è¡ããéã«ããAIã倧ãã«æŽ»çšããŸãããæ¢åã®ãã¹ãã³ãŒããåç
§ããªãããAIãGoã®ãã¹ãã³ãŒããçæããéçºè
ãã¬ãã¥ãŒã»èª¿æŽããããšã§ãç§»è¡äœæ¥ãå¹ççã«é²ããããšãã§ããŸããã å
šäœã¢ãŒããã¯ã㣠E2Eãã¹ãã®å®è¡æ¹æ³ãšããŠãå
šå¡ãã¢ã¯ã»ã¹ã§ããå
±æã®developmentç°å¢ã«ãããã€ããã¢ããªã±ãŒã·ã§ã³ã«å¯ŸããŠãã¹ããå®è¡ãããšããéžæè¢ããããŸãããããããã®æ¹æ³ã§ã¯éçºäžã®ããã¯ãšã³ãã®å€æŽã«å¯ŸããŠããã«ãã¹ããå®è¡ã§ããªããšããåé¡ããããŸãã ç§ãã¡ã¯ãã¢ããªã±ãŒã·ã§ã³ã³ãŒãã倿ŽããªããE2Eãã¹ããéãããã远å ã»ä¿®æ£ã§ãããããç°å¢ãéèŠããŸããããã®ããããã¹ãããšã«ãµãŒããåçã«èµ·åããèšèšãæ¡çšããŠããŸããããã«ãããéçºè
ã¯èªåã®å€æŽãããã«E2Eãã¹ãã§æ€èšŒã§ãããã¹ãé§åã§ã®éçºãå¯èœã«ãªããŸãã ãã¬ãŒã ã¯ãŒã¯ã®äž»ãªè²¬åã¯ïŒ ãã¹ããµãŒãã®èªåèµ·åãšç®¡ç: å¿
èŠã«å¿ããŠãµãŒããèµ·åããããŒã«ã§ç®¡ç ããŒã¿ããŒã¹ã®èªåæºå: AlloyDB Omniãèµ·åããè«çããŒã¿ããŒã¹ãäœæããŠãã€ã°ã¬ãŒã·ã§ã³ãå®è¡ 䞊åå®è¡ã®ãµããŒã: è€æ°ã®ãã¹ããåæã«å®è¡ã§ãããããªãœãŒã¹ã管ç ã¯ãªãŒã³ã¢ããã®èªåå: ãã¹ãçµäºæã«èªåçã«ããŒã¿ãã¯ãªãŒã³ã¢ãããããªãœãŒã¹ãããŒã«ã«è¿åŽ éçºè
ããèŠããšããããã®è€éãªåŠçã¯å®å
šã«é èœãããŠããã testenv.Run() ãåŒã¶ã ãã§ãã¹ãç°å¢ãæŽãä»çµã¿ã«ãªã£ãŠããŸãã å
éšå®è£
ã®å·¥å€« ããããã¯ããã¬ãŒã ã¯ãŒã¯ãã©ã®ããã«äžŠåå®è¡ãšãªãœãŒã¹ç®¡çãå®çŸããŠããããå
éšå®è£
ãèŠãŠãããŸãã ãªãœãŒã¹ããŒã«ã«ãã䞊åå®è¡ E2Eãã¹ãã®äžŠåå®è¡ãå®çŸããããã«ããµãŒããããŒã«ç®¡çããŠããŸãã éèŠãªã®ã¯ã testenv.Run() ã«æž¡ãã颿°ãçµäºãããšãèªåçã«ãµãŒããããŒã«ã«è¿åŽãããä»çµã¿ã§ããéçºè
ã¯æç€ºçã«ãªãœãŒã¹ãè¿åŽããå¿
èŠããªããéåžžã®ãã¹ããšåãããã«æžãã ãã§ããã¬ãŒã ã¯ãŒã¯ãèªåçã«ã¯ãªãŒã³ã¢ãããšããŒã«ãžã®è¿åŽãè¡ããŸãã ãã®ä»çµã¿ã«ããïŒ äžŠåå®è¡æã«ãªãœãŒã¹ã®ç«¶åãçºçããªã ãµãŒãã®èµ·åã³ã¹ããæå°åïŒããŒã«ããåå©çšïŒ ãã¹ãéã®ããŒã¿æ±æãé²ãïŒTRUNCATEã§åæåïŒ ãªãœãŒã¹ç®¡çãéæïŒéçºè
ã¯æèããå¿
èŠããªãïŒ ããŒã¿ããŒã¹ã®ç®¡ç ããŒã¿ããŒã¹ã«ã€ããŠã¯ãAlloyDB Omniã®ã³ã³ããã¯1ã€ã ãèµ·åããŸãããã®äžã§ããã¹ãããšã«è«çããŒã¿ããŒã¹ãèªåçã«äœæãããã€ã°ã¬ãŒã·ã§ã³ãå®è¡ããŸãã ãã®èšèšã«ãã: ããŒã¿ããŒã¹ã³ã³ããã®èµ·åã³ã¹ããåæžïŒ1ã€ã ãèµ·åããã°ããïŒ äžŠåå®è¡ã§ãããŒã¿ãåé¢ãããïŒè«çDBããšã«ç¬ç«ïŒ ãã€ã°ã¬ãŒã·ã§ã³ã®å®è¡ãèªååïŒéçºè
ã¯æèäžèŠïŒ è«çããŒã¿ããŒã¹ãããŒã«ã§ç®¡çãããŠããããã¹ãçµäºåŸã¯TRUNCATEã§ããŒã¿ãã¯ãªãŒã³ã¢ããããŠããåå©çšãããŸãã ã³ãŒãã«ãã¬ããžã®åé ãã®ãã¬ãŒã ã¯ãŒã¯ã¯ãGo 1.20以éã§å°å
¥ããã go build -cover ããµããŒãããŠããŸãã éåžžã®ãã¹ãã«ãã¬ããžïŒ go test -cover ïŒã¯ãã¹ãã³ãŒãå
ã§ã®å®è¡ããèšæž¬ã§ããŸããããE2Eãã¹ãã§ã¯ãµãŒãããã»ã¹ãšããŠå®è¡ãããŠããã³ãŒãã®ã«ãã¬ããžãèšæž¬ããå¿
èŠããããŸãããããå®çŸããã®ã go build -cover æ©èœã§ãã ãã¬ãŒã ã¯ãŒã¯ã®å®è£
ã§ã¯: ãµãŒãããšã«ç¬ç«ããã«ãã¬ããžãã£ã¬ã¯ããªãèªåäœæ åãµãŒãèµ·åæã«äžæãã£ã¬ã¯ããªãäœæ GOCOVERDIR ç°å¢å€æ°ãèªåèšå® 䞊åå®è¡ã§ãã«ãã¬ããžãæ£ç¢ºã«åéããã åãµãŒããç¬ç«ãããã£ã¬ã¯ããªã«æžã蟌ããããç«¶åããªã ãã¹ãçµäºæã«èªåããŒãž ãã¹ãŠã®ãµãŒãã®ã«ãã¬ããžããŒã¿ã go tool covdata merge ã§çµ±å æçµçã«1ã€ã®çµ±åãããã«ãã¬ããžããŒã¿ãçæããã éçºè
ã¯ç¹å®ã®ç°å¢å€æ°ãèšå®ããã ãã§ãè€æ°ãµãŒãã®ã«ãã¬ããžãèªåçã«åéã»ããŒãžã§ããŸã: # ã«ãã¬ããžä»ãã§ãµãŒããã€ããªããã«ã go build -cover -o server ./server # ã«ãã¬ããžãåéããªãããã¹ãå®è¡ GLOBAL_GOCOVERDIR=/tmp/coverage go test ./e2etest/... # ã«ãã¬ããžã¬ããŒãçæ go tool covdata percent -i /tmp/coverage ãã®ä»çµã¿ã«ãããE2Eãã¹ãã§ã®ã³ãŒãã«ãã¬ããžãæ£ç¢ºã«èšæž¬ããAPIã®å質ãå®éçã«è©äŸ¡ã§ããããã«ãªããŸããã Kubernetesäžã§ã®å®è¡ E2Eãã¹ãã¯ãéçºç°å¢ã§ã¯ããŒã«ã«ã§å®è¡ããCIã§ã¯Kubernetesäžã§å®è¡ããŸããããã§ã¯ãKubernetesäžã§ã®å®è¡æ¹æ³ã«ã€ããŠãããã€ãã®è峿·±ã工倫ã玹ä»ããŸãã go test -c ã䜿ã£ãé«éãªããã〠éåžžãKubernetesäžã§ãã¹ããå®è¡ããå Žåã以äžã®æé ãèžãããšæããŸã: ã³ã³ããã€ã¡ãŒãžããã«ã ã€ã¡ãŒãžãã¬ãžã¹ããªã«ããã·ã¥ Kubernetes Podã§ã€ã¡ãŒãžããã« ã³ã³ãããèµ·å ãããããã®æ¹æ³ã«ã¯åã¹ãããã«æéãããããšããåé¡ããããŸããE2Eãã¹ãã§ã¯å®è¡é床ãéèŠãªã®ã§ãç§ãã¡ã¯ç°ãªãã¢ãããŒããåããŸãã: # ãã¹ããã€ããªããã«ã go test -c \ -o package/e2etest \ ./path/to/e2etest # ãµãŒããã€ããªããã«ã go build \ -o package/server \ ./path/to/server # tarã§ã¢ãŒã«ã€ãããŠkubectl execã§è»¢é tar -czf - -C ./package . | \ kubectl exec -c main -i -n ${POD_NAMESPACE} ${POD_NAME} -- \ tar xzf - -C /tmp/e2e # Podå
ã§çŽæ¥å®è¡ kubectl exec -c main -it -n ${POD_NAMESPACE} ${POD_NAME} -- \ /path/to/entrypoint.sh go test -c ã䜿ãããšã§ããã¹ãã³ãŒããå®è¡å¯èœãªãã€ããªã«ã³ã³ãã€ã«ã§ããŸããããã«ãã: ã³ã³ããã€ã¡ãŒãžã®ãã«ããäžèŠ ã¬ãžã¹ããªãžã®ããã·ã¥ã»ãã«ãäžèŠ kubectl execã§çŽæ¥ãã¡ã€ã«ã転é ãã®æ¹æ³ã«ããããã¹ãå®è¡ãŸã§ã®æéã倧å¹
ã«ççž®ã§ããŸãããå
·äœçã«ã¯1ååçšåºŠã§ãã«ããããã¹ãã®éå§ãã§ããŠããŸãã ãªããKubernetesäžã§å®è¡ããçç±ã¯ã䞊åå®è¡ã«å¿
èŠãªååãªãªãœãŒã¹ã確ä¿ããããã§ãã䞊å床ãäžãããšã¬ãŒã¹ã³ã³ãã£ã·ã§ã³ãé²ãããã«ãã®æ°ã ããµãŒããå¿
èŠãšãªããå¿
èŠãªãªãœãŒã¹ãç·åœ¢ã«å¢ãããããKubernetesã¯ã©ã¹ã¿ã䜿çšããŠããŸãã ãŸãšã æ¬èšäºã§ã¯ãã¡ã«ã«ãª ã°ããŒãã«ã¢ããªã®ããã¯ãšã³ãAPIã®E2Eãã¹ãã«ã€ããŠç޹ä»ããŸããã ãã®ã¢ãããŒãã«ãããE2Eãã¹ãã¯ç¹å¥ãªãã®ã§ã¯ãªããæ¥åžžã®éçºãããŒã®äžéšãšãªããŸããéçºè
ã¯APIã倿Žããéã«ãèºèºãªãE2Eãã¹ãã远å ã»ä¿®æ£ã§ããããã«ãªã£ãŠããŸãã ãã¡ããããŸã æ¹åã®äœå°ã¯ãããŸããäŸãã°: ãã¹ãã®å®è¡æéã®ãããªãççž® AIãå©çšããŠã倿Žç®æã«é¢ä¿ãããã¹ãã®ã¿ãå®è¡ããåãçµã¿ãé²ããŠããŸã ãã¹ãããŒã¿ã®ã»ããã¢ããã®ç°¡ç¥å ãã¹ãçµæã®ã¬ããŒãã£ã³ã° ããããéçºè
äœéšãæåªå
ã«ããèšèšã«ãããæç¶å¯èœãªE2Eãã¹ãåºç€ãæ§ç¯ã§ãããšèããŠããŸãã åããããªèª²é¡ãæ±ããŠãããããžã§ã¯ãã®åèã«ãªãã°å¹žãã§ãã
Cross Border (XB) Engineeringã§SRE & EnablingãããŠãã hatappi ã§ããç§ãã¡ã®ããŒã ã¯SREã®ã¿ã§ã¯ãªãã Team Topologies ã«ãããEnablingããŒã ãšããŠã®åœ¹å²ãæã£ãŠããŸããSREãšããŠä¿¡é Œæ§ã®åäžãããã©ãŒãã³ã¹ã®æ¹åãè¡ãã ãã§ã¯ãªããXBã®ãããã¯ãããŒã ã®éçºè
äœéšãšå¹çãåäžãããããã¹ã ãŒãºãã€é«éã«äŸ¡å€æäŸã§ãããããæè¡çãªèª²é¡è§£æ±ºãç°å¢æŽåãéããŠæ¯æŽ (Enable) ããŸãã 2025幎7æã«Platform NetworkããŒã ããXB SRE & EnablingããŒã ãžç°åããæåã®ä»äºãšããŠã¡ã«ã«ãª ã°ããŒãã«Webã®ç«ã¡äžãã«æºãã£ãŠããŸããæ¬èšäºã¯ é£èŒäŒç»ïŒã¡ã«ã«ãªåã®äžçå
±éã¢ããªãã¡ã«ã«ãª ã°ããŒãã«ã¢ããªãã®éçºèå°è£ ã®äžç°ãšããŠãã¢ããªãšåæã«éçºãé²ãã§ããã°ããŒãã«WebãããŒãã«ãæ°ããç°å¢ã§SREãšããŠäŸ¡å€ãåºãããã«ç§ãå®è·µããŠããã¢ãããŒããã玹ä»ããŸãã Enablingã®ããã®èª²é¡çºèŠã¢ãããŒã 7æã«XB SRE & EnablingããŒã ãžç°åããŠããŠãç§ã®æåã®ããã·ã§ã³ã¯ãã°ããŒãã«Web ã®ç«ã¡äžããEnablingããããšãã§ããããããç°åããŠéããªãããã©ã®ãããªèª²é¡ãæ¹åãã€ã³ãããããåãããªãç¶æ
ã§ãããããã§ãŸãã¯çŸç¶ãæ£ããçè§£ããããšãäžå¯æ¬ ã ãšèããç§ã¯2ã€ã®ã¢ãããŒãããšããŸããã 1. ãŸãã¯èªåã§ãã£ãŠã¿ã ã°ããŒãã«Webã®ã¡ã³ããŒãã©ããã£ãéçšã§å°ã£ãŠããŠäœãæ¹åã§ããããç¥ããå
±æããããã«ã¯ãèªåã§äœéšããŠã¿ãã®ãæ©ãã§ããããã§ïŒã€ã®æ©èœéçºã¿ã¹ã¯ã«åãçµã¿ãŸãããããã«ãããã ããŒã«ã«ç°å¢ãã»ããã¢ããããŠåäœç¢ºèªãããšããç¹ã ãã§ãªãå®è£
ãããŠãã«ãªã¯ãšã¹ããäœæããŠãã¬ãã¥ãŒãåããããŒãžãããŸã§ã®äžé£ã®éçºãµã€ã¯ã«ãäœéšããŸããã ãã®ã¢ãããŒãã«ãã£ãŠãCIã®å®è¡ãé
ãããã£ãŒãããã¯ãåŸããŸã§ã®åŸ
ã¡æéãé·ãããããŒã«ã«ãµãŒããŒã®èµ·åãé
ãããªã©æ§ã
ãªæ¹åç¹ãç¹å®ã§ããŸããã 2. çŸå Žã®å£°ãèã èªåïŒäººã®äœéšã ãã§ã¯ãã©ãããŠãèŠéãçããªã£ãŠããŸããŸããç¹ã«æ¥åžžæ¥åãšããŠã°ããŒãã«WebãéçºãããŠããã¡ã³ããŒã®å£°ãèãã®ã¯ãšãŠãéèŠã§ããSlackã§æ¹åç¹ãèããããã©ã³ãã³ã°ãã¬ããã¹ãã¯ãã£ãã®äŒè°ã«åå ãããªã©ããŠæ
å ±ãåéããŸããã ãããã«ããæåã®ã¢ãããŒãã§ã¯çºèŠã§ããªãã£ã課é¡ãèŠã€ããããã ãã§ãªãåªå
床ã®éžå®ã«ãã€ãªãããŸããã äŸãã°CIã®å®è¡æéãé
ããšããæ¹åç¹ãæåã®ã¢ãããŒãã§ç¹å®ããŸãããããã¯ééããªãæ¹åç¹ã§ãããããå®éã®éçºã§CIã®å®è¡æéãæ°ã«ãªãã®ã¯ãä»ã®ã¡ã³ããŒããã¬ãã¥ãŒãåãåãæåŸã®æ®µéã§ããããããããæã
äžå®å®ã«ãªã£ãŠå€±æããCIãããŒã«ã«ãµãŒããŒã®èµ·åæéã®é
ãã®ã»ããããã倧ããªèª²é¡ã ãšæããŠããããã§ããã Platform Engineeringã®çµéšããåŸãæ°ã¥ã ãã®2ã€ã®ã¢ãããŒããå®è·µããäžã§ã以åã®Platform NetworkããŒã ã§ã®çµéšãæ¯ãè¿ãæ©äŒãšãªããŸããã Platform NetworkããŒã ã§ã¯Platform EngineeringãšããŠãã¡ã«ã«ãªã®è€æ°ã®ãããã¯ãã§æšªå±éã§ããå
±éåºç€ãããŒã«ãæäŸããŠããŸãããã¡ã«ã«ãªã«ã¯è€æ°ã®ãããã¯ããããããããããç°ãªãã³ã³ããã¹ãããã¡ã€ã³ç¥èãæã£ãŠããŸãããã®ããPlatformåŽãããã¹ãŠã®ãããã¯ãã®çŸå Žã«æ·±ãå
¥ã蟌ãã§çè§£ããããšã¯é£ãããšãã課é¡ããããŸããã ä»åãXBã®SRE & EnablingãšããŠïŒã€ã®ã¢ãããŒããå®è·µããããšã§ãçŸå Žã«æ·±ãå
¥ã蟌ãéèŠæ§ãåèªèããŸãããäžæ¹ã§ãPlatform Engineeringã®çµéšãããã¡ã«ã«ãªå
šäœãèãããšãã®æšªå±éã®éèŠæ§ãçè§£ããŠããŸãã ã¡ã«ã«ãªã§ããäž¡æ¹ã®çµéšãæã€ãšã³ãžãã¢ã¯ãŸã å€ããããŸãããã ãããããä»ã¯XBã§åŸãçµéšãäŸãã°ä»åã®ã°ããŒãã«Webé¢é£ã®æ¹åå
容ããPlatformããŒã ã«ç©æ¥µçã«ãã£ãŒãããã¯ããªããäžç·ã«æ¹åãé²ããŠããŸãã AIãæŽ»çšãã課é¡è§£æ±º åã®ã»ã¯ã·ã§ã³ã®2ã€ã®ã¢ãããŒãã«ãã£ãŠãåãçµãã¹ã課é¡ã®è§£å床ã倧ããäžãããŸãããããããæ¹åãã¹ã課é¡ãåãã£ãŠãããŸã ç°åããŠéããªãç§ã¯ã°ããŒãã«WebãCross Borderã®ã³ã³ããã¹ããWebé¢é£ã®æè¡ãªã©å€ãã®æ
å ±ããã£ããã¢ããããå¿
èŠããããŸãããã°ããŒãã«Webã®ç«ã¡äžããã¹ã ãŒãºã«Enablingããããã«ãAIãæŽ»çšããããšã§ãã®ããã»ã¹ãã¹ã ãŒãºã«é²ããããªãã詊ã¿ãŸããã åŠç¿ã»èª¿æ» äŸãã° CIã®å®è¡æéãé
ãããšãã課é¡ã«åãçµããšããŸãããããçè§£ããããã«ã¯ããããã©ã®ãããªä»çµã¿ã§åããŠããã®ããçè§£ããå¿
èŠããããŸããããã§äžèšã«èª¬æããããã« Claude ã Claude Code ãæŽ»çšããªããå¿
èŠãªæ
å ±ãæ¹åçãæ€èšããŠãããŸããã ãŸãåãã«ãClaude Codeã䜿çšããŠæ¢åã®CIé¢é£ã®èšå®ã調æ»ããŸããã¡ã«ã«ãªã§ã¯GitHub Actionsã䜿çšããŠããããActionã®ç®çãå°ããããJobéã®äŸåé¢ä¿ã確èªãããªã©ãœãŒã¹ã³ãŒããèªã¿ãªããçè§£ãæ·±ããŸãã調æ»ãé²ããŠãããšãèªåã®ç¥ããªãæè¡ãåºãŠããŸããäŸãã° Turborepo ãªã©ã§ãã ç¥ããªãæè¡ãåºãŠããæã¯ãããçè§£ããããã«ãäžæ¬¡ãœãŒã¹ã§ããå
¬åŒã®ããã¥ã¡ã³ããèªã¿ãŸãããã®éã«ããã¥ã¡ã³ãã®èŠçŽãªã©ã®ããã«ClaudeãæŽ»çšããŸããããã ãã§ããã°Claude Codeããã®ãŸãŸäœ¿ãããšãã§ããŸããClaude ã䜿çšããçç±ã¯ Claudeã®Artifactsæ©èœãå©çšããããã§ãã(Fig1) Artifactsã¯Claudeãšã®äŒè©±äžã«äœæã»ç·šéã§ããç¬ç«ããã³ã³ãã³ããäœæããããã®æ©èœã§ããããã䜿çšããããšã§ç¥ããªãã£ãæè¡ãæ·±å ããªããæçµçã«ãŸãšãŸã£ãããã¥ã¡ã³ãã宿ããããåŸããèŠè¿ãããããªããŸããã Fig1: Claude Artifacts æåŸã®ã¹ãããã¯æ¹åã®ããã®èª¿æ»ã§ããæ¹åæ¹æ³ã®æ€èšã®ããã®ç¬¬äžæ©ãšããŠäžè¬çãªæ¹åçãåéããããã«Claude ResearchãæŽ»çšããŸãããäŸãã°ãTurborepoã䜿ã£ããªããžããªã§CIãé«éåããäžè¬çãªæ¹æ³ã調æ»ããšãã£ãå
容ã§ããããã«ããããã£ãã·ã¥æŠç¥ã®æ¹åã䞊åå®è¡ã®æé©åãªã©ãè€æ°ã®ã¢ãããŒããçæéã§ãªã¹ãã¢ããã§ããæ¹åçã®ä»®èª¬ãå¹ççã«ç«ãŠãããšãå¯èœã«ãªããŸããããŸãArtifactsãæŽ»çšããããšã§èª¿æ»ããå
容ãããšã«å
·äœçãªæ¡ãªã©æçµçãªå®è£
ãžåããæ
å ±ãäžç·ã«ãŸãšããããšãå¯èœã§ããã å®è£
ã»ã¬ãã¥ãŒ æ¹åã®ä»®èª¬ãç«ã£ãããæ¬¡ã«è¡ãã®ã¯å®è£
ã§ãã調æ»ã§ãŸãšããæ
å ±ã¯Artifactsã«ååšããŠããMarkdownãšããŠåºåã§ããŸãããããClaudeã GPTã Geminiãªã©ä»»æã®ããŒã«ã»ã¢ãã«ã§äœ¿çšã§ããŸãã ç§ã¯ã¡ã€ã³ã§Claude Codeãå©çšããŠããŸããããã®çç±ã¯ Slash commands ãããããã§ããSlash commandsã¯Claude Codeäžã§ / ããå§ãŸãç¹æ®ãªã³ãã³ãã§ãClaude Codeã§ç¹å®ã®æäœãå®è¡ããããšãã§ããŸããç§ã¯èªåãéçºã®äžã§è¡ãããã»ã¹ããã®Slash commandsã«ç§»è¡ããŠããŸãã äŸãã°å€æŽå
容ãããã«ãªã¯ãšã¹ããäœæããSlash commandããããŸãããã®Slash commandã«ã¯åãªããã«ãªã¯ãšã¹ãã®äœæã ãã§ãªã倿Žå
容ããã³ãããã¡ãã»ãŒãžãæ€èšããŠã³ããããããªã©ç§ãããè¡ãã¹ããããå®çŸ©ããŠããŸãã å®è£
ãçµãã£ããã¬ãã¥ãŒã§ãã Claude Code èªèº«ã«ãã¬ãã¥ãŒã¯ãããã®ã§ããèªåã§ãã¬ãã¥ãŒããŸããä»ãŸã§ã¯ git diff ããšãã£ã¿ãŒã«ã€ããŠãã diff viewer ãªã©ã䜿çšããŠããŸããããããããŒã«ã«ã§ã¬ãã¥ãŒãããšãã¯åé¡ãªããšæã£ãã®ã«GitHubã§ãã«ãªã¯ãšã¹ããäœæããŠå床ã¬ãã¥ãŒãããšæ¹åç¹ã«æ°ã¥ããšããããšããããããŸããã倿Žãå ããŠæ¯åpushããŠãã«ãªã¯ãšã¹ãäžã§ç¢ºèªããã®ã¯æéãããããŸãããã®åé¡ã解決ããããã« difit ã䜿ãã¯ãããŸããã difitã¯ãGitHub ã©ã€ã¯ãªãã¥ãŒãããŒã«ã«ç°å¢ã§å®çŸããŠããã CLI ã§ãã(Fig2) npm ããã±ãŒãžãšããŠè¿œå ãããŠããã®ã§ã€ã³ã¹ããŒã«ãç°¡åã§ãã䜿ãå§ããããŸããGitHubã©ã€ã¯ãªãã¥ãŒã«ããä»ãŸã§ãã«ãªã¯ãšã¹ãäžã§è¡ã£ãŠããããšãããŒã«ã«ã§è¡ããããã«ãªããŸããããŸãdifitã¯ã³ã¡ã³ãæ©èœãã€ããŠããã远å ããã³ã¡ã³ãã¯AIã«ããã³ãããšããŠæž¡ãããããªã³ããŒæ©èœãã€ããŠããŸãããããã§Claude Codeã§éçºããªããã¬ãã¥ãŒããŠæ¹åãšãããµã€ã¯ã«ãããŒã«ã«ã§å®çµããããã«ãªããŸããã Fig2, difit ( https://github.com/yoshiko-pg/difit ) ãããã° æåŸã¯ãããã°ã§ãã ç§ã¯æ®æ®µ Chromeã䜿çšããããšãå€ãã§ããChromeãçšãããããã°ã§ã¯Chrome DevToolsãæ¬ ãããŸãããããããæ§ã
ãªæ©èœããããããã©ã®æ©èœã䜿ã£ãŠã©ããèŠããèªåãç¥ãããæ
å ±ãèŠãããšãã§ããã®ãæ¯åèŠåŽããŠããŸããã ããã§æè¿ãªãªãŒã¹ããã Chrome DevTools MCP ãæŽ»çšããŠã¿ãŸãããããã¯ãèªç¶èšèªã§æç€ºããã ãã§MCP Serverãä»ããŠDevToolsãæäœããŠå¿
èŠãªæ
å ±ãåŒãåºããŠãããæ©èœã§ããäŸãã°ããã°ããŒãã«Webã®ãã®ããŒãžã®ããã©ãŒãã³ã¹ããã§ãã¯ããŠããšå
¥åããã ãã§ãé¢é£ããææšãåæããŠãããŸãã ããã«ããæ¯åèŠåŽããŠããDevToolsã®æäœãã¹ã ãŒãºã«è¡ãããšãã§ããåé¡çºèŠãŸã§ã®æéãççž®ããããšãã§ããŸããã Enabling掻åããåŸãããåŠã³ ä»åã®ã°ããŒãã«Webã®EnablingãéããŠåŠãã ããšã2ã€ãããŸãã çŸå Žã«å
¥ãäžæ¬¡æ
å ±ã«è§Šããããšã®éèŠæ§ 1ã€ç®ã¯ãçŸå Žã®äžæ¬¡æ
å ±ã«è§Šããããšã§åããŠãæ¬åœã«è§£ãã¹ã課é¡ãšãã®åªå
é äœãèŠããŠãããšããç¹ã§ããããç§ã客芳çãªã¡ããªã¯ã¹ã ããèŠãŠå€æããŠãããéçºã¡ã³ããŒãæããŠããCIã®å®è¡æéããããCIãæã
äžå®å®ã«ãªãããšãããããŒã«ã«ãµãŒããŒã®èµ·åæéããããåé¡ã§ããããšã«æ°ã¥ãã®ã¯é£ããã£ãã§ãããã æ°ããæè¡é åãžææŠããéã®AIã®æå¹æ§ 2ã€ç®ã¯ãAIãæ°ããæè¡é åãžææŠããéã®ããŒãã«ãäžããŠãããããšããããšã§ãã 1ã€ç®ã®åŠã³ã®éèŠæ§ãçè§£ããŠããŠããå®è·µãããŸã§ã®ããŒãã«ãé«ããšèºèºããŠããŸããŸãããããAIãæŽ»çšããããšã§ãã®ãæåã®å£ããä¹ãè¶ãããããªã£ããšæããŸããããã¡ããAIããã¹ãŠã解決ããŠãããããã§ã¯ãªãã§ããããŸãã¯åããã®ãäœã£ãŠããããã®ä»çµã¿ãæ·±ãçè§£ããŠãããšããç§ã®å¥œããªã¢ãããŒããé«éã§ã§ããããã«ãªã£ããšæããŠããŸãã ä»åŸã®å±æ ã°ããŒãã«å±éã«ãããã¢ããªãšåºç€ã®åæ§ç¯ ã§ãè§ŠããããŠããããã«ãä»åŸ3幎以å
ã«50ã«åœã»å°åãžã®å±éãäºå®ãããŠãããããã¯æè¡çã«ãéåžžã«ãã£ã¬ã³ãžã³ã°ã§ãããã®ã¹ããŒãã§äžçã«å±éããããã«ã¯ãã©ã®ãããªå®è£
ãèšå®ãå¿
èŠããã©ã®ããã«å¹çåã§ããããããŒã¿ã¯ã©ãã«é
眮ããããWebãµãŒããŒã¯ã©ãã«çœ®ãã®ããCDNã¯ã©ã®ããã«æŽ»çšã§ããããªã©ãèããã¹ãããšã倿°ãããŸããèããããšãå€ãããããé¢çœããSRE & Enablingã®è
ã®èŠãæã«ãªããšæããŠããã®ã§ãéåžžã«æ¥œãã¿ã§ãã ãããã« æ¬èšäºã§ã¯ãPlatform NetworkããŒã ããç°åããŠæ°ããç°å¢ã§ã°ããŒãã«Webã®Enablingãã©ã®ããã«é²ããŠãããã玹ä»ããŸããã 2025幎11æ13æ¥ã«ãã¡ã«ã«ãªã°ã«ãŒãã®ããã¯ã«ã³ãã¡ã¬ã³ã¹ãmercari GEARS 2025ããéå¬ãããŸããç§ã¯ç°ååã® Platform NetworkããŒã ã®æã«è¡ã£ãCDNãã€ã°ã¬ãŒã·ã§ã³ã«ã€ããŠè©±ããŸãã ä»ã«ãé¢çœãããªã»ãã·ã§ã³ã沢山ããã®ã§ãã²ãè¶ããã ããïŒ åå ç»é²ã¯ãã¡ã ð https://gears.mercari.com/ ææ¥ã®èšäºã¯ @gia ããã§ããåŒãç¶ã é£èŒäŒç»ïŒã¡ã«ã«ãªåã®äžçå
±éã¢ããªãã¡ã«ã«ãª ã°ããŒãã«ã¢ããªãã®éçºèå°è£ ããæ¥œãã¿ãã ããã
ããã«ã¡ã¯ïŒã¡ã«ã«ãª Engineering Office ã® @mikichin ã§ãã æ¥ã11æ13æ¥ãã¡ã«ã«ãªã°ã«ãŒãã®ããã¯ã«ã³ãã¡ã¬ã³ã¹ãmercari GEARS 2025ããéå¬ãããŸãïŒ 2018幎ã«å®æœãããMercari Tech Conf 2018ããã7å¹Žã®æãçµãŠãä¹
ãã¶ãã®ãªãã©ã€ã³ã§ã®éå¬ãšãªããŸãã ããŒãã¯ãã¡ã«ã«ãªãšã³ãžãã¢ãªã³ã°ã®ä»ãã ä»å¹Žã®å
šç€ŸçãªããŒãã§ããããAI-Nativeãã«ã€ããŠã¯ãã¡ããã2018幎以éã¡ã«ã«ãªã°ã«ãŒãã®ãšã³ãžãã¢ãªã³ã°ãã©ã®ããã«å€åããŠãããããæè¡ã»çµç¹ã»ã«ã«ãã£ãŒã®èгç¹ããã玹ä»ããŸãã ãªã³ã©ã€ã³é
ä¿¡ã¯ãããŸããã®ã§ããã²äŒå Žã§ãèªèº«ã®ç®ãšè³ã§ç¢ºãããŠãã ããïŒïŒ äŒå Žã¯ãã¡ã«ã«ãªã®ãšã³ãžãã¢ãªã³ã°çµç¹ã«ããã信念ãè¡åã®åºç€ãšãªãå
±éèªèãææåãããMercari Engineering Principlesããã¢ããŒãã«ãããPASSION StageããGROW StageããMECHANISM Stageãã®3ã€ã®ã¹ããŒãžããããŸãã æ¬èšäºã§ã¯ããMECHANISM Stageãã®ã»ãã·ã§ã³ãã玹ä»ïŒ ãŸã ç³ã蟌ã¿ããããŠããªãæ¹ããèå³ã®ããã»ãã·ã§ã³ãããã¯ãã§ãããç³ã蟌ã¿ã¯ ãã¡ããã ãé¡ãããŸãã 13:00 – 13:20ãã¡ã«ã«ãªããã§ã®LLMæŽ»çš ã¡ã«ã«ãªããã¯ã¹ãããã€ãé åã«ãããã¡ã«ã«ãªã®æ°èŠäºæ¥ã§ãã2024幎ã®3æã«ãµãŒãã¹ãããŒã³ããããŠä»¥æ¥ãæé·ãç¶ããŠãããå
æ¥ç»é²è
æ°1200äžäººãçªç ŽããŸããã ã¡ã«ã«ãªããã®MLããŒã ã¯ãµãŒãã¹ããŒã³ãããçŽå幎ãçµéãã2024幎10æã®ã¿ã€ãã³ã°ã§å§åãã以æ¥ãAI/MLãçšããå€ãã®ãããã¯ãæ¹åã«åãçµãã§ããŸããã æ¬ã»ãã·ã§ã³ã§ã¯ãã®äžã§ãç¹ã«ã¡ã«ã«ãªããã®LLMãçšããæ©èœãããããæ¯ããLLMOpsåºç€ã«ã€ããŠç޹ä»ãè¡ããŸããå
·äœçã«ã¯LLMãçšããæ±äººã®èªåäœææ©èœã§ãããããããæ±äººäœæããLLMãçšããæ±äººã®æ²èŒåãªã¹ã¯äºæž¬çã«ã€ããŠã§ããã¡ã«ã«ãªããã§ã¯æ¢ã«å€ãã®LLMãçšããæ©èœããªãªãŒã¹ããŠãããçšéã®ç°ãªã50çš®é¡ä»¥äžã®ããã³ãããæ¬çªã§éçšããŠããŸãããã®ããããã³ããã®å質ã管çããããã®LLMOpsåºç€ãéåžžã«éèŠã§ãã æ¬ã»ãã·ã§ã³ãéããŠãã¡ã«ã«ãªããã§LLMå®è£
ãé²ããäžã§åŸãããLLMã®ãããã¯ãå®è£
ã®ããã®åæããããã³ãã管çã»èªåè©äŸ¡åºç€ãªã©ã®å®è·µçãªLLMOpsã®ããã®Tipsãšãã£ãç¥èŠãå
±æã§ããã°ãšæããŸãã 13:30 – 13:50ãFastlyããCloudflareãž 100%ç§»è¡ãéæããMercariã®ã¢ãããŒã ã¡ã«ã«ãªã§ã¯ã2023幎ããCDNãããã€ããŒãFastlyããCloudflareãžæ®µéçã«ç§»è¡ãéå§ãã2025幎çŸåšãç§»è¡ãå®å
šã«å®äºããŸããã ãã®ã»ãã·ã§ã³ã§ã¯ãå®å
šãã€ã¹ã ãŒãºã«ç§»è¡ãé²ããããã«å®æœããã¢ãããŒããšããã®éçšã§åŸãåŠã³ãå
±æããŸãã CDN ãããã€ããŒã®æ¯èŒã§ã¯ãªããç§»è¡ããã»ã¹ãäž»ã«è©±ããããCDNãããã€ããŒã®å€æŽãèããŠããªãæ¹ã«ããç§»è¡ã«é¢ããèãæ¹ãããã»ã¹ã®ãã³ããæã¡åž°ã£ãŠããã ãããšèããŠããŸãã 14:15 – 14:35ãThe Invisible Backbone: AI-Native Observability for Modern Platforms ãããèªåã§èšå®ãããå€åã«ãã·ãŒã ã¬ã¹ã«é©å¿ããå€ãããã¢ã©ãŒãã®ãã€ãºãäžæããŠããããªãã¶ãŒãããªãã£ããã£ããïŒæ¬ã»ãã·ã§ã³ã§ã¯ãã¡ã«ã«ãªãã©ã®ããã«AI-Nativeãªãã©ãããã©ãŒã ãæ§ç¯ããèšå®äžèŠã®ã¢ãã¿ãªã³ã°ãäžè²«ããå¯èŠæ§ããããŠAI掻çšåã®ã¢ã©ãŒããæšæºæ©èœãšããŠå®çŸããã®ããã玹ä»ããŸãã ä¿¡é Œæ§ãé«ãéçºè
ã«ããããã¯ã©ãŠããã©ãããã©ãŒã ã®æªæ¥ããèªåŸåãªãã¶ãŒãããªãã£ãã©ã®ããã«åœ¢äœãã®ãããã²ãåå ã®ããããã®ç®ã§ã芧ãã ããã 14:35 – 15:05ãRunning 1000 End-To-End Web Tests Daily Mercari USã§ã¯éåžžã«å€ãã® E2E Webãã¹ã ãå®è¡ããŠããŸãããããããçŽ æ©ãããã€æ¬åœã«åœ¹ç«ã€ãã¹ãã«ããããšã倧ããªèª²é¡ãšãªã£ãŠããŸããæ¬ã»ãã·ã§ã³ã§ã¯ããã«ãªã¯ãšã¹ãããšã«ãã¹ããå®è¡ãããæ°ãããã¹ãã远å ãããåæ©èœé åã察象ã«ãããã¹ããå®è¡ãããªã©ãç§ãã¡ãè¡ã£ãŠãã工倫ãã玹ä»ããŸããæ¯æ¥äœåä»¶ãã®E2Eãã¹ããã©ã®ããã«åããŠããã®ããç¥ãããæ¹ã«ã¯ããŸãã«ãŽã£ããã®ã»ãã·ã§ã³ã§ãã 15:15 – 15:35ãMercari’s Internationalization Journey ãã®2幎éãç§ãã¡ã¯æµ·å€ã®ã客ããŸãã¡ã«ã«ãªã®ããŒã±ãããã¬ã€ã¹ã§ååã賌å
¥ããããšãå¯èœã«ããŠããŸããã æ¬ã»ãã·ã§ã³ã§ã¯ããããã¯ããæµ·å€å±éããŠããããã®éã®ããããšãã«ãŠãŒã¶ãŒçæã³ã³ãã³ãïŒUGCïŒã®ç¿»èš³ã«çŠç¹ãåœãŠãŠã玹ä»ãã翻蚳ã³ã¹ãã100åã®1ã«åæžããããã§LLMïŒå€§èŠæš¡èšèªã¢ãã«ïŒãã©ã®ããã«åœ¹ç«ã£ããã«ã€ããŠãã話ãããŸãã 16:00 – 16:20ãEGP – Mercariâs CRM Platform: Built Once, Powering Many ããšããšã·ã³ãã«ãªããŒãã³ãŒãã®CRMãšããŠçãŸããEGPã¯ãããŒã±ã¿ãŒåãã®ã¹ã±ãŒã©ãã«ã§UIäž»å°ã®ãã©ãããã©ãŒã ãžãšé²åããŠããŸãããã·ã¹ãã ãæ¡å€§ããã«ã€ãããšãããEGPã®å©çšèŠæš¡ã倧ãããªããšããã®è€éãã䜿ãããããéçšé¢ã§ã®èª²é¡ãåŒãèµ·ããããã«ãªããŸãããæ¬ã»ãã·ã§ã³ã§ã¯ãç§ãã¡ãã·ã¹ãã èšèšãAI掻çšã«ããUIæ¹åãéããŠãããã®èª²é¡ã«ã©ã®ããã«åãçµãã§ããã®ãããããŠãã®éçšã§ã©ã®ãããªåŠã³ãåŸãã®ããå
±æããŸãã 16:30 – 16:50ãSecuring the Future of Workflow Automation and AI Agents äŒæ¥ãã¯ãŒã¯ãããŒã®èªååãAIãšãŒãžã§ã³ããç©æ¥µçã«æŽ»çšããã«ã€ããå€ç«ããã·ã¹ãã ãéå°ãªæš©éãæã€ãšãŒãžã§ã³ããè€éã«çµ¡ã¿åã£ãæš©éã¢ãã«ãšãã£ãæ°ããªãªã¹ã¯ãçããŠããŸããæ¬ã»ãã·ã§ã³ã§ã¯ããããã®èª²é¡ãã©ã解決ããèªååãšAIãæã€æœåšèœåãå®å
šãã€æå€§éã«åŒãåºãæ¹æ³ãæ¢ããŸããããã«ãã»ãã¥ã¢ã§ã¹ã±ãŒã©ãã«ãªå°å
¥ãå®çŸãã€ã€ããŠãŒã¶ãŒãå®å¿ããŠã€ãããŒã·ã§ã³ã«åãçµããããã«ããããã®å®è·µçãªã¢ãããŒããã玹ä»ããŸãã 17:00 – 17:20ãAI/LLMãæãããŒã¿æŽ»çšã®æ°æä»£ïŒäººéãšããŒã¿åæAI ãšãŒãžã§ã³ãã忥ããåæåºç€ãž ç§ãã¡ã¯ãèªç¶èšèªã§ã®å¯Ÿè©±ãéããŠããŒã¿åæãè¡ããAIãšãŒãžã§ã³ããSocratesããéçºã»æäŸããŠããŸããSocratesã®ç»å Žã¯ãSQLã¯ãšãªã®çæããå®è¡ãçµæã®å¯èŠåãè§£éãŸã§ã誰ã§ãç°¡åã«å®è¡ã§ãããããªå€é©ããããããããŒã¿æŽ»çšã®ããŒãã«ã倧ããäžããŸãããæ¬ã»ãã·ã§ã³ã§ã¯ãSocratesãèªçããèæ¯ãSocratesãæ¯ããæè¡ããããŠAIãšã®åæ¥ã«ãã£ãŠããããããããŒã¿æŽ»çšäœéšã®æªæ¥åã«ã€ããŠã話ãããŸãã ãmercari GEARS 2025ãã®ãç³ã蟌ã¿ã¯ ãã¡ããã ã ãŸãããã®ä»ã®ã»ãã·ã§ã³ç޹ä»ã¯äžèšãã確èªãã ããã PASSION Stageã®ã»ãã·ã§ã³ç޹ä»ã¯ ãã¡ã ã GROW Stageã®ã»ãã·ã§ã³ç޹ä»ã¯ ãã¡ã ã ã€ãã³ã詳现 é嬿¥æïŒ 2025幎11æ13æ¥ïŒæšïŒ 11:00-18:00 æŠèŠïŒ mercari GEARS 2025ã¯ãã¡ã«ã«ãªã°ã«ãŒãã®ãšã³ãžãã¢ãªã³ã°çµç¹ã®æè¡ãžã®ææŠãšãã«ã«ãã£ãŒãäœæããæè¡ã€ãã³ãã§ãã æ¬ã€ãã³ãã¯ãåãªãæ
å ±äŒéã®å Žã§ã¯ãªãããšã³ãžãã¢ãã¡ãåºäŒããçµéšãå
±æãã亀æµãéããŠæ°ããªæ©äŒãçã¿åºãããããšãç®çãšããŠããŸãã åå è²»ïŒç¡æ äŒå ŽïŒTODA HALL & CONFERENCE TOKYO åå æ¹æ³ïŒãã¡ãã® ããŒãž ã«ãŠãç³ã蟌ã¿ãã ããã ã å
¬åŒãµã€ã ã æ¬ã€ãã³ãã«é¢ããè¿œå æ
å ±ãããã°ãéæ @MercariGears ã§ãç¥ããããŸãã®ã§ãæ°ã«ãªãæ¹ã¯ãã²ãã©ããŒããé¡ãããŸãã
ããã«ã¡ã¯ïŒã¡ã«ã«ãª Engineering Office ã® @mikichin ã§ãã æ¥ã11æ13æ¥ãã¡ã«ã«ãªã°ã«ãŒãã®ããã¯ã«ã³ãã¡ã¬ã³ã¹ãmercari GEARS 2025ããéå¬ãããŸãïŒ 2018幎ã«å®æœãããMercari Tech Conf 2018ããã7å¹Žã®æãçµãŠãä¹
ãã¶ãã®ãªãã©ã€ã³ã§ã®éå¬ãšãªããŸãã ããŒãã¯ãã¡ã«ã«ãªãšã³ãžãã¢ãªã³ã°ã®ä»ãã ä»å¹Žã®å
šç€ŸçãªããŒãã§ããããAI-Nativeãã«ã€ããŠã¯ãã¡ããã2018幎以éã¡ã«ã«ãªã°ã«ãŒãã®ãšã³ãžãã¢ãªã³ã°ãã©ã®ããã«å€åããŠãããããæè¡ã»çµç¹ã»ã«ã«ãã£ãŒã®èгç¹ããã玹ä»ããŸãã ãªã³ã©ã€ã³é
ä¿¡ã¯ãããŸããã®ã§ããã²äŒå Žã§ãèªèº«ã®ç®ãšè³ã§ç¢ºãããŠãã ããïŒïŒ äŒå Žã¯ãã¡ã«ã«ãªã®ãšã³ãžãã¢ãªã³ã°çµç¹ã«ããã信念ãè¡åã®åºç€ãšãªãå
±éèªèãææåãããMercari Engineering Principlesããã¢ããŒãã«ãããPASSION StageããGROW StageããMECHANISM Stageãã®3ã€ã®ã¹ããŒãžããããŸãã æ¬èšäºã§ã¯ããGROW Stageãã®ã»ãã·ã§ã³ãã玹ä»ïŒ ãŸã ç³ã蟌ã¿ããããŠããªãæ¹ããèå³ã®ããã»ãã·ã§ã³ãããã¯ãã§ãããç³ã蟌ã¿ã¯ ãã¡ããã ãé¡ãããŸãã 13:00 – 13:40ãLeaderâs Talk: Moving Fast Without Breaking Things ã¡ã«ã«ãªã®ããªã¥ãŒã®ã²ãšã€ã«ãMove FastïŒã¯ããåãïŒãããããŸãã ãã®äžæ¹ã§ãéçºè
ãæè»ã«è€æ°ã®ãµãŒãã¹ãè¡ãæ¥ã§ããããã«ããããšãå¿
èŠã§ããã§ã¯ããã®äž¡æ¹ãããªããã«ã¯ã©ãããã°ããã®ã§ãããïŒ æ¬ã»ãã·ã§ã³ã§ã¯ãAIæä»£ã«ãããŠã¡ã«ã«ãªã®ãšã³ãžãã¢ãªã³ã°çµç¹ãããã«éçºããã»ã¹ãé²åãããã¹ããŒããšã¬ãžãªãšã³ã¹ã®ãã©ã³ã¹ãåãããšããŠããã®ããããªãŒããŒãã¡ãèªèº«ã®èŠç¹ãã玹ä»ããŸãã çºè¡šã¯äž»ã«è±èªã§è¡ããŸãããæ¥æ¬èªã§ã®è³ªåã倧æè¿ã§ãïŒ 14:15 – 14:35ãGoogle Customer Engagement Suiteã䜿ã£ã顧客ãšã³ã²ãŒãžã¡ã³ãå€é© 2025幎ã«è¡ãããGoogle Cloud Next Tokyoã«ãŠãã¡ã«ã«ãªã¯åºèª¿è¬æŒãšãã¬ã€ãã³ã°ã»ãã·ã§ã³ãéããGoogle瀟ãæäŸããCustomer Engagement SuiteãæŽ»çšãã顧客ãšã³ã²ãŒãžã¡ã³ãã®å€é©ã«ã€ããŠçºè¡šããŸããããã®ã»ãã·ã§ã³ã§ã¯ããã®çºè¡šã§ç޹ä»ããããããã¯ããã©ã®ãããªæ¹æ³ã§æ§ç¯ãããã®ãã«ã€ããŠç޹ä»ããŸãã 14:45 – 15:05ãPJ-Auroraãæãæªæ¥ãšãUIå質è©äŸ¡ãèªååãããšãŒãžã§ã³ãéçº ã¡ã«ã«ãªã®ã¢ãã¥ããã®ã¢ãããŒããå€ããããšã䜿åœãšãããPJ-Auroraããæ¬ã»ãã·ã§ã³ã§ã¯ãã®æªæ¥åã玹ä»ããããããŠUIå質è©äŸ¡ãèªååããAIãšãŒãžã§ã³ãéçºã®çŸåšå°ãã話ãããŸããAI-Nativeæä»£ã«ãããå質ä¿èšŒã®å¯èœæ§ãæ¢ã詊ã¿ãå
±æããŸãã 15:15 – 15:35ããªããã¡ã«ã«ãªã¯ããŒã³ãŒããéžã°ãªãã£ãã®ãïŒ ç€Ÿå
åãåããå·¥æ°ã60ïŒ
åæžããLLM掻çšã®è£åŽ çæAIããŒã ã®äžãå€ãã®äŒæ¥ãããŒã³ãŒãããŒã«ã詊ãäžæ¹ã§ãã¡ã«ã«ãªã¯æ¢åã®çæLLMã瀟å
ããŒã¿ã§åŸ¹åºçã«ãã¥ãŒãã³ã°ããããšã§ãé«ãç²ŸåºŠãšæè»æ§ã远æ±ããŠããŸãããæ¬ã»ãã·ã§ã³ã§ã¯ã瀟å
åãåããå·¥æ°ã60%åæžããLLM掻çšäºäŸãHiYo-Chanããäžå¿ã«ãããŒã³ãŒãããŒã«ã§ã¯å®çŸã§ããªãã¡ã«ã«ãªç¬èªã®æè¡çãªå·¥å€«ããããŠãã®è£åŽã«ããããžã§ã³ãŸã§ã赀裞ã
ã«ã話ãããŸãã 16:00 – 16:40ãAI Native ãžã®éã®ã â æ°åã§ã¿ãå
šç€Ÿæšé²ãšçŸå Žã®å®è·µ ã¡ã«ã«ãªã°ã«ãŒãã¯ãAI-Nativeããæ²ããçµç¹ãšçŸå Žã®äž¡èŒªã§ææŠãé²ããŠããŸãããæ¬ã»ãã·ã§ã³ã§ã¯ããã®å
šäœåãããŒã¿ãšå®äŸã§è§£å床é«ãå
±æããŸãããŸãã瀟å
ã®éçºç¶æ³ãå¯èŠåããåãçµã¿ãéããŠãAI掻çšã®åºãããšã€ã³ãã¯ããæ°å€ã§ç€ºããŸããæ¬¡ã«ãå
šç€Ÿã§AIãšãŒãžã§ã³ãã䜿ããçµç¹ã¥ãããæ¢åäºæ¥ããAI-Nativeããªéçºäœå¶ãžç§»è¡ããèšèšãšéçšãããã§çŽé¢ãã課é¡ãšçæ³ã®å§¿ãæãäžããŸããæåŸã«ãæ°èŠäºæ¥éçºã顿ã«ãçæAIãæŽ»çšããŠPMãšãšã³ãžãã¢ãèŠä»¶å®çŸ©ããå®è£
ãŸã§ãã©ãå éããŠããããéçºãæ¯ããæšæºåããã¥ã¡ã³ããAgent Specãã®äžèº«ãšéçšãå
·äœçã«ç޹ä»ããŸããæ°èŠäºæ¥ãšæ¢åäºæ¥ã«AIãçµã¿èŸŒã¿ãªãããæ°ããéçºã®åãã€ããããã®å®è·µçãªç¥èŠããå±ãããŸãã 17:00 – 17:30ãLTã»ãã·ã§ã³ 6人ã®LTãè¡ããŸãã æªå® / kuu GitHubãªããžããªã®èª¿æ»ããåãã£ããã€ã¯ããµãŒãã¹éçºã§ã®ããŒã¿ããŒã¹ã®èª²é¡ / Tomoyuki Koyama Claude Codeã§ä»æ§é§åéçºãããäžã§èãããšã³ãžãã¢ã®åœ¹å² / Toshiki Kawamura Mercari Ads Optimizations For Profitable Revenue Stream / Kumar Abhinav Exploring LLM-Driven Formal Verification for Robust Continuous Integration of Services / Cheng-Hui Weng Evaluations for LLM Apps / jd ãmercari GEARS 2025ãã®ãç³ã蟌ã¿ã¯ ãã¡ããã ã ã€ãã³ã詳现 é嬿¥æïŒ 2025幎11æ13æ¥ïŒæšïŒ 11:00-18:00 æŠèŠïŒ mercari GEARS 2025ã¯ãã¡ã«ã«ãªã°ã«ãŒãã®ãšã³ãžãã¢ãªã³ã°çµç¹ã®æè¡ãžã®ææŠãšãã«ã«ãã£ãŒãäœæããæè¡ã€ãã³ãã§ãã æ¬ã€ãã³ãã¯ãåãªãæ
å ±äŒéã®å Žã§ã¯ãªãããšã³ãžãã¢ãã¡ãåºäŒããçµéšãå
±æãã亀æµãéããŠæ°ããªæ©äŒãçã¿åºãããããšãç®çãšããŠããŸãã åå è²»ïŒç¡æ äŒå ŽïŒTODA HALL & CONFERENCE TOKYO åå æ¹æ³ïŒãã¡ãã® ããŒãž ã«ãŠãç³ã蟌ã¿ãã ããã ã å
¬åŒãµã€ã ã æ¬ã€ãã³ãã«é¢ããè¿œå æ
å ±ãããã°ãéæ @MercariGears ã§ãç¥ããããŸãã®ã§ãæ°ã«ãªãæ¹ã¯ãã²ãã©ããŒããé¡ãããŸãã
Cross Border(XB) Engineeringã§Architectå
ŒSREãããŠãã yanolab ã§ãã ããã°ã·ãªãŒãºåæ¥ã§ã¯ã ã°ããŒãã«å±éã«ãããåºç€ã®åæ§ç¯ ãšããŠã¡ã«ã«ãªã«ãããåãçµã¿ã®é·ç§»ã®ç޹ä»ããããŸããããæ¬èšäºã§ã¯ã°ããŒãã«å±éãæ¯ããåºç€ã®è£åŽãšé¡ããŠãããã¯ãšã³ãã·ã¹ãã ã®ã¢ãŒããã¯ãã£ãŒããã¬ãŒã ã¯ãŒã¯ãåãçµã¿ãªã©ãå°ãæãäžããŠç޹ä»ããããšæããŸãã Background ã¡ã«ã«ãªã«ãããŠã¯é·ããMicroserviceã¢ãŒããã¯ãã£ãæ¡çšããŠéçšãããã®ãšã³ã·ã¹ãã ã«ãæè³ãããŠããŸãããechoãµãŒãã¹ãšåŒã°ããMicroserviceã®ãã³ãã¬ãŒãããGoã§Microserviceã®éçºãè¡ãããã®SDKãåºæ¬çãªã€ã³ãã©é¢ä¿ã®èšå®ããŸãšããã¹ã¿ãŒã¿ãŒããããšåŒã°ããTerraformã®ã¢ãžã¥ãŒã«ãKubernetesã®èšå®ãæœè±¡åããå°ãªãèšè¿°ã§Deploymentã管çã§ããSDKãªã©ããããŸãããŸããMicroserviceã®ãªãªãŒã¹ã«éããŠã¯Production Readiness Check(PRC)ãšåŒã°ããããã»ã¹ããããæ°ããéçºããããããã¯ããMicroserviceã¯ãã®ãã§ãã¯ãªã¹ãã«åæ Œããå¿
èŠããããŸãããããã®ãšã³ã·ã¹ãã ãããã»ã¹ã¯æçããŠãããã®ã®ãè€éåãããšã³ã·ã¹ãã ã¯åŠç¿ã³ã¹ããé«ããè¥å€§åããPRCã«ãã£ãŠãïŒã€ã®Microserviceãç«ã¡äžããã®ã«ã¯æäœã§ã3ã¶æãããããã«ãªã£ãŠããŸã£ãŠããŸããããŸããæ°ããããžãã¹ãç«ã¡äžããéã¯æ§ç¯åæã®äººæ°ã¯å°ãªãã«ãããããããæ°åã®Microserviceãç«ã¡äžããªããã°ãªããªãå Žåãå€ãããã®ãããªå Žåã«ãããŠMicroserviceæ°Ã3ã¶æãšããå·¥æ°ã¯çŸå®çã§ã¯ãªããçŽè¿ã®ã¡ã«ã«ãªã®æ°èŠããžãã¹ã¯Monolithçãªã¢ãããŒããæ¡çšããããšãå€ããªã£ãŠããŠããŸãã(ref: ã¡ã«ã«ãª ããã®æè¡ã¹ã¿ãã¯ãšãã®éžå®çç± ) ã°ããŒãã«å±éã«ãããåºç€ã®åæ§ç¯ã«ãããŠã¯å°æ¥çã«çŸåšã®ã¡ã«ã«ãªMarketplaceãšåããããªèŠæš¡ã«ãªãããšãæ³å®ããããããåçŽãªMonolithã§ã¯ãªããæ¢åã®ãšã³ã·ã¹ãã ãæå€§é掻çšãã€ã€ãMicroserviceçãªéçšãã§ãããããªç¹æ®ãªModular MonolithãèšèšããéçšããŠããŸãã åå²ããŠéçšãå¯èœãªModular Monolith ã¡ã«ã«ãªã®Microservicesãæ³å®ãããšã³ã·ã¹ãã ã¯ïŒã¬ããžããªãïŒãµãŒãã¹ãåºæ¬ãšãªã£ãŠãããå€§èŠæš¡ãã€è€éãªæ§æã®ã·ã¹ãã ã¯æ³å®ãããŠããŸãããäŸãã°CI/CDã§ã¯ïŒãã€ããªãïŒã³ã³ãããïŒDeploymentãæ³å®ããŠããŸãããã®ãããªç°å¢ããéžè±ããå Žåãã·ã¹ãã ã®å®è£
åŽã§ç¬èªã«ã¯ãŒã¯ãããŒãäœæãã¡ã³ããã³ã¹ãè¡ãå¿
èŠããããŸããCross BorderããŒã ã§ã¯ç¬èªã§ã¡ã³ããã³ã¹ãç¶ããã³ã¹ããåé¿ããããããã®æ¹éã«åŸãã€ã€ãå°æ¥ã®ããžãã¹ã®æé·ã«äŒŽãéçšè² è·ã®åæ£ã®ãããMicroserviceçãªéçšãã§ããããã«ã·ã¹ãã ãäžã€ã®ãã€ããªã«ã³ã³ãã€ã«ããããèšå®ãã¡ã€ã«ã§ã¢ãžã¥ãŒã«ã®æå¹ã»ç¡å¹ãåãæ¿ããããããã«ããŠããŸãããŸããã¢ãžã¥ãŒã«éã®ã€ã³ã¿ãã§ãŒã¹ã¯Protocol Bufferã§å®çŸ©ãããã®éä¿¡ã¯gRPCãå©çšããããã«ããããšã§ãåãã€ã³ã¹ã¿ã³ã¹å
ã®éä¿¡ã«ãšãããããéçšã®èªç±åºŠãé«ããŠããŸããããã«ãã£ãŠãïŒãã€ããªãïŒã³ã³ãããšããŠæ¢åã®CIãã«ãã·ã¹ãã ãå©çšãã€ã€ãèšå®ãã¡ã€ã«ã§ã¢ãžã¥ãŒã«ããªã³ã»ãªãããããã¢ãžã¥ãŒã«éã®éä¿¡çžæãä»»æã«èšå®ããMicroservicesçãªéçšãå¯èœã«ããŠããŸãããŸããã¢ãžã¥ãŒã«éã®ã€ã³ã¿ãŒãã§ãŒã¹ãProtocol Bufferã«ããããšã§ãã¢ãžã¥ãŒã«ã®ç¬ç«æ§ãé«ãã€ã€ã¢ãžã¥ãŒã«ã®ã€ã³ã¿ãã§ãŒã¹ã®èšèšããããŒã ã§é£æºããªããã¢ãžã¥ãŒã«ã®éçºãè¡ããããã«ãªã£ãŠããŸãã(Fig. 1) Fig.1 Modular Monolith with Flexible Deployments æ°åºç€ã®ããŒã¿ããŒã¹ã«ã¯AlloyDBãçšããŠããŸããéå»ã®ã¡ã«ã«ãªã®Monolithã«ãããŠã¯ãã·ã¹ãã å
šäœã§å
±æã®ããŒã¿ããŒã¹ãçšããŠããããã¡ã€ã³ããšã®ããŒãã«ã®é£çµãæš©éã«å¶éã¯ãããŸããã§ããããã®ããããµãŒãã¹ãæé·ããã«ã€ããŠãã¡ã€ã³éã®äŸå床ã¯é«ãŸããéçšã³ã¹ãã¯å¢å€§ããŠãããŸãããããã«å¯ŸããŠMicroserviceãžç§»è¡ããéã«ã¯å€ãã®ãµãŒãã¹ãããŒã ã§ãSpannerãCloudSQLãæ¡çšãããŠããŸããããµãŒãã¹æ¯ã«ç¬èªã«ããŒã¿ããŒã¹ãæã£ãŠããŒã ã§éçšããããšã¯ããã¡ã€ã³ããµãŒãã¹ã®ç¬ç«æ§ãé«ãããªãŒããŒã·ãããã¡ã³ããã³ã¹ã®é¢ã§ãšãŠãåªããŠããéžæã§ãããããããããããã®ããŒã ã§ç¬èªã«ããŒã¿ããŒã¹ãæã¡ãå°ãªããªã¯ãšã¹ãã§ãå®å®éçšã®ããã«HAæ§æãšããªããã°ãªããªããšããããšã¯ã³ã¹ãã®é¢ããèŠããšéå¹çã§ããªã¯ãšã¹ãã®å°ãªããµãŒãã¹ã§ã¯ç¹ã«ã³ã¹ãçã«ç¡é§ãå€ãç¶æ
ãšãªã£ãŠããŸãããããã§ãCross BorderããŒã ã§ã¯ãã³ã¹ãç¯çŽã®ãããªãã¹ãåãã¯ã©ã¹ã¿ãå©çšããããã¢ãžã¥ãŒã«ããšã«ãµãŒãã¹ã¢ã«ãŠã³ããåãã¢ã¯ã»ã¹ã§ããããŒã¿ããŒã¹ãå¶éããããŒã¿ããŒã¹ãã¢ãžã¥ãŒã«åäœã§åå²ããããšãšããŸãããããã«ãã£ãŠãã³ã¹ããæãã€ã€å°æ¥ã®åå²ãã¹ã±ãŒã«ã«åããŠããŸãã(Fig. 2) Fig.2 DB Isolation åŸæ¥ãã¡ã«ã«ãªã§ã¯Microserviceã®èšå®ãç°å¢å€æ°ã«ãŠè¡ã£ãŠããŸããããMonolithã«ãªã£ãå Žåã¯èšå®ãéåžžã«å€ããªããç°å¢ããšã®èšå®ã®ç®¡çãªã©ãç
©éã«ãªã£ãŠããŸãããšãäºæ³ãããŸãããããã§ãèšå®ãã¡ã€ã«ã«ã¯ CUE lang ãæ¡çšããããã©ã«ãã®èšå®ãã·ã³ã°ã«ãœãŒã¹ã§ç®¡çã§ããããã«ããéçºç°å¢ãæ¬çªç°å¢ãªã©ãç°å¢ããšã«éãå€ã®ã¿ãå·®å管çã§ããããã«ããŠããŸãããããã®èšå®ãã¡ã€ã«ã¯ã³ã³ããã®ãã«ãæã«ã³ã³ããã«å梱ãããç°å¢ã«å¿ããŠãããŒã«ã«ç°å¢ã§ããã°ããŒã«ã«çšã®èšå®ãéçºç°å¢ã»æ¬çªç°å¢ã§ããã°ããã«å¿ããèšå®ãèªåçã«äœ¿ãããããã«ãªã£ãŠããŸãããŸããå®è¡æã«CUE/YAMLã§æšæºã®èšå®ãäžæžããã§ããããã«ããããšã§ãDeploymentããšã«éãèšå®ãè¡ãããšãå¯èœã«ããŠããŸãã(Fig. 3) Fig. 3 Difference management of config äŸãã°éçºç°å¢ãšæ¬çªç°å¢ã®æšæºã®èšå®ãæšæºã®ã³ã³ãã£ã°ãšããŠäžèšïŒFig. 4ïŒã®ããã«å®çŸ©ããŸãããã®å ŽåãProductã¢ãžã¥ãŒã«ã®ProductInventoryã¢ããªã±ãŒã·ã§ã³ã¯Searchã¢ãžã¥ ãŒã«ã®ã¢ãã¬ã¹ãšããŠlocalhostãå©çšããŸãã #GRPCClientConfigSpec: { address: string | *"localhost:\(#HTTPPort)" timeout: =~"^([0-9]+(\\.[0-9]+)?(ns|us|µs|ms|s|m|h))+$" | int | *"3s" retry: int & >=0 | *3 } components: "layers/tire2/product/applications/productinventory": enabled: bool | *false search_module: #GRPCClientConfigSpec "layers/tire3/search/applications/productsearch": enabled: bool | *false ... Fig. 4 Common part of development and production éçºç°å¢ã®å
±éã®èšå®ãäžèšïŒFig. 5ïŒã®ããã«å®çŸ©ãããšããŸãããã®å Žåãéçºç°å¢ã®äžéšã§ããGKEã®ç°å¢ã§ããããŒã«ã«ç°å¢ã§ãå
šãŠã®æ©èœãæå¹ãšãªãããã¹ãŠã®ã¢ãžã¥ãŒã«ã¯ããŒã«ã«ãã¹ãã®ã¢ãžã¥ãŒã«ãå©çšããŸãã components: "layers/tire2/product/application/productinventory": enable: true "layers/tire3/search/applications/productsearch": enabled: true ... Fig. 5 Development specific configurationïŒEnabled all of modulesïŒ æ¬çªç°å¢ã§GKEã®Deploymentãåããå Žåã¯ãã³ã³ããã«å梱ããŠãããã®ãšã¯å¥ã«ConfigMapãYAMLãšããŠããŠã³ããããããèªã¿èŸŒãŸããŸããäŸãã°DeploymentAã®Productã¢ãžã¥ãŒã«ã®Inventoryã¢ããªã±ãŒã·ã§ã³ã®æ¥ç¶å
ãDeploymentBãšãïŒFig. 6ïŒãDeploymentBã§ã¯Searchã¢ãžã¥ãŒã«ã®ProductSearchã¢ããªã±ãŒã·ã§ã³ã®ã¿ãæå¹ã«ããïŒFig. 7ïŒããšã§Searchã¢ãžã¥ãŒã«ã®ã¿ãç¬ç«ããŠéçšããããšãå¯èœãšãªã£ãŠããŸãã components: "layers/tire2/product/applications/productinventory": enable: true search_module: address: deploymentB.xxxx.svc.local "layers/tire3/search/applications/productsearch": enable: false ... Fig. 6 The Search module used by the Product module can be switched to a different Deployment components: "layers/tire2/product/applications/productinventory": enable: false "layers/tire3/search/applications/productsearch": enable: true ... Fig. 7 Deployment with only the Search module enabled ãããã®æè»ãªã¢ãŒããã¯ãã£ã¯ããŒã«ã«éçºãéçºç°å¢ã§ã¯ã·ã³ã°ã«ãã€ããªã§éçšããæ¬çªç°å¢ã«ãããŠã¯é©åãªåäœã§ã¢ãžã¥ãŒã«ãåãåãéçšãè¡ãããšãå¯èœã«ããŠããŸããããã¯ç¹ã«ããŒã«ã«éçºã«ãããŠéåžžã«åŒ·åã§ãMicroserviceã®éçºæã®èª²é¡ã§ãããäŸåããMicroserviceãå«ããå®è¡ç°å¢ãçšæããå¿
èŠããªããªããéçºç°å¢ã®æ§ç¯ãšã¡ã³ããã³ã¹å¹çãåçã«åäžããããšãã§ããŸãããã ããä»åã®åºç€åæ§ç¯ã«ãããŠã¯ããã¹ãŠã®Microservicesã眮ãæããããã§ã¯ãªããçŸåããã¡ã«ã«ãªã®Microservicesãžã®äŸåãååšããŠããŸãããããã®äŸåé¢ä¿ã«å¯Ÿå¿ããããã« mirrord ãšãããããã¯ããçšããŠãããŒã«ã«ç°å¢ãããªã¢ãŒãã®Kubernetesç°å¢ã«ç¹ãã§éçºãè¡ã£ãŠããŸãããŸãã air ãšãããããã¯ããå©çšããŠããã倿Žã®åçãªããŒããã§ããããã«ãªã£ãŠãããWebã¢ããªãéçºãããããªã¢ãã³ãªéçºç°å¢ãå®çŸããŠããŸãã ã¢ãã¬ãã«ããå€åãžã®å¯Ÿå¿ ã¡ã«ã«ãªã®Microserviceã§ã¯ãµãŒãã¹æ¯ã«ã¬ããžããªãäœæããProtocol Bufferã®å®çŸ©ãTerraformãçšããã€ã³ãã©ã¹ãã©ã¯ãã£ã®ç®¡çãKubernetesãžã®ãããã€ç°å¢ã®ã¬ããžããªã®ã¿ãããããå
šå¡ãå
±æããã¢ãã¬ããšããŠéçšããŠããŸãããã®ã¢ãããŒãã¯æå¹ã§ãããã¡ã€ã³ã§å©çšããã¬ããžããªãšç°ãªã£ãŠããããšã§ãã¬ããžããªéãç§»åããå¿
èŠããããŸãããã®ã³ã³ããã¹ãã¹ã€ãããé »ç¹ã«çºçããããšã¯éçºè
ã«ãšã£ãŠéåžžã«ã¹ãã¬ã¹ãšãªããŸãããŸããã¬ããžããªããŸããã èªååã¯ãåå¥ã«åäœããCIã«ãã£ãŠåŠçæéãé·ããªãã ãã§ãªããåé¡ãçºçããå Žåã«ã©ãã§äœãèµ·ããŠããããææ¡ããããšãé£ãããéçºè
ã®äœéšãæªãããèŠå ãšãªã£ãŠããŸããä»ååºç€åæ§ç¯ã«ãããããããéçºè
ã®äœéšãèŠçŽãããããã®æ§æãèŠçŽããBackendãããžã§ã¯ããFrontendãããžã§ã¯ããProtobufã®å®çŸ©ãTerraformãäžç®æã«éããŠã極åã¢ãã¬ãã§éçºãå®çµãããããªè©Šã¿ãè¡ã£ãŠããŸããïŒKubernetesãžã®ãããã€ã®ã¿ãšã³ã·ã¹ãã ã®éœåäžæ¢åã®ã¢ãã¬ããå©çšããŠããŸããïŒ Modular Monolithã§å¢çãæç¢ºã«ãã€ã€ãã¢ãã¬ãã§Backendãããžã§ã¯ãã®ã¿ãªããFrontendãããžã§ã¯ãã管çããããšã§ãã¢ããªã±ãŒã·ã§ã³ãã¢ãŒããã¯ãã£ããã¬ãŒã ã¯ãŒã¯ãæãã€ã€ãèšèªã圹å²ãè¶
ããè²¢ç®ãããããããŠããŸãããŸããã¡ã³ããã³ã¹ã®é¢ã«ãããŠããã¹ã¯ãªãããWorkflowãCIãªã©äžç®æãã¡ã³ããã³ã¹ããã°è¯ããã¡ã³ããã³ã¹å¹çãé«ããšèããŠããŸããã¡ã«ã«ãªã§ã¯é·ããçµç¹ãããŒã ã®çç£æ§ãå¯èŠåã§ããŠããããéçºè
ã®çç£æ§ãæ£ç¢ºã«æž¬å®ããæ¹æ³ã課é¡ãšãªã£ãŠããŸããã2024幎ãããéçºè
ã®çç£æ§ãå¯èŠåããæ¹åããããšãç®çã« DX ãå°å
¥ããŠããŸããDXã§ã¯ãµãŒãã€ãçšãã宿§çããŒã¿ãšGitHubãªã©ã®çç£æ§ã«é¢ããã¡ããªã¯ã¹ãªã©ã®å®éããŒã¿ãåãããŠãå¹çãã¹ããŒããåè³ªãæ°èŠæ§ã®ïŒç¹ãå¯èŠåããŠããŸããã¢ãã¬ããçšããã¢ãããŒãã¯ãããã®å€ã§ã¡ã«ã«ãªå
šäœã®ã¹ã³ã¢ãããè¯ãçµæãåºãŠããããšãããããŸããã ä»åæ§ç¯ããã¢ãã¬ãã«ãããŠå°ããŠããŒã¯ãªç¹ãšããŠã¯ãã€ã³ãã©ã¹ãã©ã¯ãã£ã®ç®¡çã«TerraformãšCUE langãçšããŠãããšããã§ãïŒåŸæ¥éãtfãã©ãŒããããå©çšå¯èœã§ãïŒãCIã«ãŠCUEããjsonã«å€æããŠé©çšããŠããŸããã€ã³ãã©ã¹ãã©ã¯ãã£ã®å®çŸ©ãCUEã«ããããšã§ãäžã§ç޹ä»ããModular Monolithã®èšå®ç®¡çã®ããã«å·®åãæèããç°å¢æ§ç¯ãå¯èœã«ãªããŸããCUEã¯YAMLãJSONãšããŒãžããŠå©çšããããšãå¯èœãªã®ã§ãèªååã®é¢ã§éåžžã«æå¹ã ãšæããŠããŸããä»åŸãã¢ãã¬ãã®ãã¹ãŠã®ããŒã¿ãåãã¬ããžããªã«ãããšããã¡ãªãããæŽ»ãããŠãModular Monolithã®èšå®ããã¬ãŒã ã¯ãŒã¯ããèªåçã«ã€ã³ãã©ã¹ãã©ã¯ãã£ã®æ§æãã¡ã€ã«ãçæããFramework defined Infrastructureã«åãçµã¿ãããšããéæããããŸãã(Fig. 8) Fig. 8 Framework Defined Infrastructure è€éåãããã¡ã€ã³ãäŸåé¢ä¿ã«å¯Ÿããã¢ãããŒã çŸåšãã¡ã«ã«ãªã«ã¯Marketplaceäºæ¥ã«é¢ä¿ããMicroserviceã®ã¿ã§ããã250ã»ã©ã®GCP ProjectãååšããŠãããMerpayãå«ãããš400è¿ãæ°ã«ãªããŸãããããã®ãµãŒãã¹ã¯å¿
èŠä»¥äžã«çްããåå²ãããŠããããçžäºã«äŸåãåã£ãŠãããããŠã¡ã³ããã³ã¹ãå°é£ã«ããã ãã§ãªããæ°èŠã«æ©èœãäœæããããšæã£ããšãã«ãã©ã®Microserviceã«æ©èœã远å ããã¹ããããŸãã©ã®Microserviceã®æ©èœãå©çšã§ããã®ããããããæ°èŠã«Microserviceãäœæããã¹ããªã®ããªã©ã®å€æãéåžžã«å°é£ã«ããŠããŸããããã§ãCross Borderã§ã¯æ°èŠã«Marketplaceã®åºç€ãåæ§ç¯ããã«åœãã£ãŠãTierãšããæŠå¿µãšäŸåé¢ä¿ããããå°å
¥ãã€ã€ãLikeãµãŒãã¹ã®ããã«ç¹å®ã®æ©èœã«ãã©ãŒã«ã¹ããå°ããåãããããµãŒãã¹ãSocialã¢ãžã¥ãŒã«ã«ãŸãšãããªã©ãããçšåºŠãŸãšãŸã£ã倧ããã®ãã¡ã€ã³ã«åéçŽãããªã©ããã¡ã€ã³ã圹å²ãæŽçããªããé²ããŠããŸããã ãã®Tierã³ã³ã»ããã§ã¯ãBFF(Backend for Frontend)/GatewayãTier 1ãTier 2ã…Tier 4ã®5ã€ã®å±€ã«åœ¹å²ãåå²ããããããã®å±€ã®åœ¹å²ãšå¶éã远å ããŸããã BFF/Gatewayå±€ BFFã¯ããç¥ãããŠããŸããããã®å±€ã§ã¯MobileãWebç»é¢ã«æé©åããAPIãå®çŸ©ããã¹ãŠã®ãªã¯ãšã¹ãã¯BFFãéããŠããäžäœã®å±€ãžéãããŸããã客ããŸã«å¿ããèšèªã®å€æãé貚ã®å€æããã¡ãã®å±€ã§æ
åœããŸããMobileãšã³ãžãã¢ãWebãšã³ãžãã¢ãããã¯ãšã³ããšã³ãžãã¢ã§å
±åã§ææãã¡ã³ããã³ã¹ãè¡ã£ãŠããŸãã Tier 1 äž»ã«ãªã¯ãšã¹ããªãŒã±ã¹ãã¬ãŒã·ã§ã³ãããžãã¹ãããŒãæ
åœããŸããTier 1ã®è²¬ä»»ã¯ãTier 2以äžã®ã¢ãžã¥ãŒã«ã䜿çšããŠããžãã¹ããã»ã¹ãæ§ç¯ããããšã§ããã€ã¡ãŒãžãšããŠã¯Marketplaceã®æ§ã
ãªæ©èœãå©çšããŠããã»ã¹ãæ§ç¯ããã®ã§ãæ°Žå¹³æ¹åã®åŠçãæ
åœããé åã§ãã Tier 2 äž»ã«Marketplaceã®ã³ã¢ã®æ©èœãå®çŸãããã¡ã€ã³ç¹åã®å±€ã«ãªããŸããProductã¢ãžã¥ãŒã«ãOrderã¢ãžã¥ãŒã«ãªã©ã該åœããŸããã€ã¡ãŒãžãšããŠã¯è©²åœã®ãã¡ã€ã³ã«ç¹åããåçŽæ¹åã®åŠçãæ
åœããé åã§ãã Tier 3 åºæ¬çã«Marketplaceã«äŸåããªãããæ±çšçãªæ©èœãæäŸããå±€ã«ãªããŸããSearchãNotificationãªã©ã該åœããŸãã Tier 4 ãã®å±€ã¯å°ãç¹æ®ã§ãç¹å®ã®ç¹æ®ãªèŠä»¶ãæºãããªããã°ãªããªãã¢ãžã¥ãŒã«ããTier 1 ã Tier 3ã«å±ããããšãé£ããæ©èœãæäŸããå±€ã«ãªããŸããä»ã®ã¢ãžã¥ãŒã«ãšã¯é©çšãããã»ãã¥ãªãã£ãŒãéçšèŠä»¶ãªã©ãç°ãªãå人æ
å ±ãå°éã§åãæ±ãã¢ãžã¥ãŒã«ããã®å±€ã«é
眮ããŠããŸãã ãªã¯ãšã¹ãã¯åžžã«äžããäžãžãšæµããåãTierå士ã®éä¿¡ã¯çŠæ¢ãããšããå¶çŽãèšããŠããŸãããã ããäžäœTierããäžäœTierã«ã¢ã¯ã»ã¹ããå ŽåãäžéTierã¯é£ã°ããŠè¯ããšããã«ãŒã«ãèšããŠãããBFFããNotificationãžã®ã¢ã¯ã»ã¹ã¯èš±å®¹ããŠããŸããïŒFig. 9ïŒããŒã¿ããŒã¹ãã¢ãžã¥ãŒã«åäœã§åãããŠãããã¢ãžã¥ãŒã«ããŸããã§ãã©ã³ã¶ã¯ã·ã§ã³ã匵ããšããããšãã§ããŸããããããã®ã«ãŒã«ã«ãããã¢ãžã¥ãŒã«ã®ç¬ç«æ§ãéåžžã«é«ãŸããšãšãã«å°ããªã¢ãžã¥ãŒã«ãä¹±ç«ãããšãã£ãããšãé²ãã§ããŸãããããåãTierå士ã®ã¢ãžã¥ãŒã«ã®éä¿¡ãå¿
èŠã«ãªã£ãå Žåããã®ã¢ãžã¥ãŒã«å士ã®ãã¡ã€ã³ãéåžžã«è¿ããããšãæå³ãããã¡ã€ã³ã®å¢çã®èŠçŽãã®è¯ãã·ã°ãã«ãšããŠæããŠããŸãã Fig. 9 Tier Concept åºç€ã®åæ§ç¯ã¯ãŸã ãŸã å§ãŸã£ãã°ããã§ãããPaymentãIdPãšãã£ããŸãšãŸã£ããã¡ã€ã³ãã€ãç°å¢ãå®å®ããŠãããµãŒãã¹çŸ€ã掻çšãã€ã€ããã®ãã¶ã€ã³ææ³ãçšããŠMarketplaceã®ãã¡ã€ã³ãåæŽçãå®è£
ããããšã§ã2025幎10æã®çŸæç¹ã§18ã¢ãžã¥ãŒã«ã«çããããšãã§ããŠããŸãã çŸåšã®èª²é¡ çŸç¶ã§ã¯ã¢ãžã¥ãŒã«åäœã§ã®ãããã€ãå¯èœã«ããããã«ãã¢ãžã¥ãŒã«ããšã«ããŒãžã§ã³ããã¡ã€ã«ã§ç®¡çãããªãªãŒã¹æã«ã¯ãã®ããŒãžã§ã³ãã€ã³ã¯ãªã¡ã³ãããããšã§ãã¢ãžã¥ãŒã«ããšã®ããŒãžã§ã³ã¢ãããæ€ç¥ããŠããŸãããããããã®æ¹æ³ã¯mainãã©ã³ãããªãªãŒã¹çšãšããGitHub Flowãšã¯çžæ§ãæªããæå³ããªã倿ŽããªãªãŒã¹ã«å«ãŸããŠããŸããããããããŸããçŸåšãã®åé¡ã解決ããããã«è©Šè¡é¯èª€ãããŠããŸãã ä»åŸã®å±é AIã«ããéçºãäž»æµã«ãªã£ãŠããŠããæšä»ãç«¶äºå確ä¿ã®ããã«ã¯æ°èŠã«ããžãã¹ãçŽ æ©ãç«ã¡äžããå¿
èŠããããŸããä»å玹ä»ããCross BorderããŒã ã®MonorepoãModular Monolithã¢ãããŒãã¯åæã®æ§ç¯ã³ã¹ãããããªãã«é«ããããã¡ã«ã«ãªã®ä»åŸã®æ°èŠããžãã¹ã«é©çšã§ããããã«PlatformããŒã ãšé£æºããŠããã£ãšç°¡åã«çŽ æ©ãæ§ç¯ã§ããããã«ææŠäžã§ããä»åŸäœåŠãã§æ©äŒãããã°ããããã®çµæããŸãèšäºã«ããããšæããŸãã æåŸã« 2025幎11æ13æ¥ã«ãã¡ã«ã«ãªã°ã«ãŒãã®ããã¯ã«ã³ãã¡ã¬ã³ã¹ãmercari GEARS 2025ããéå¬ãããŸãããã¡ãã«ããã²ãè¶ããã ããïŒ åå ç»é²ã¯ãã¡ã ð https://gears.mercari.com/ ææ¥ã®èšäºã¯ @Garyããã§ããåŒãç¶ãã é£èŒäŒç»ïŒã¡ã«ã«ãªåã®äžçå
±éã¢ããªãã¡ã«ã«ãª ã°ããŒãã«ã¢ããªãã®éçºèå°è£ ãããæ¥œãã¿ãã ããã
ããã«ã¡ã¯ïŒã¡ã«ã«ãª Engineering Office ã® @mikichin ã§ãã æ¥ã11æ13æ¥ãã¡ã«ã«ãªã°ã«ãŒãã®ããã¯ã«ã³ãã¡ã¬ã³ã¹ãmercari GEARS 2025ããéå¬ãããŸãïŒ 2018幎ã«å®æœãããMercari Tech Conf 2018ããã7å¹Žã®æãçµãŠãä¹
ãã¶ãã®ãªãã©ã€ã³ã§ã®éå¬ãšãªããŸãã ããŒãã¯ãã¡ã«ã«ãªãšã³ãžãã¢ãªã³ã°ã®ä»ãã ä»å¹Žã®å
šç€ŸçãªããŒãã§ããããAI-Nativeãã«ã€ããŠã¯ãã¡ããã2018幎以éã¡ã«ã«ãªã°ã«ãŒãã®ãšã³ãžãã¢ãªã³ã°ãã©ã®ããã«å€åããŠãããããæè¡ã»çµç¹ã»ã«ã«ãã£ãŒã®èгç¹ããã玹ä»ããŸãã ãªã³ã©ã€ã³é
ä¿¡ã¯ãããŸããã®ã§ããã²äŒå Žã§ãèªèº«ã®ç®ãšè³ã§ç¢ºãããŠãã ããïŒïŒ äŒå Žã¯ãã¡ã«ã«ãªã®ãšã³ãžãã¢ãªã³ã°çµç¹ã«ããã信念ãè¡åã®åºç€ãšãªãå
±éèªèãææåãããMercari Engineering Principlesããã¢ããŒãã«ãããPASSION StageããGROW StageããMECHANISM Stageãã®3ã€ã®ã¹ããŒãžããããŸãã æ¬èšäºã§ã¯ããPASSION Stageãã®ã»ãã·ã§ã³ãã玹ä»ïŒãPASSION Stageãã¯åæéèš³ã®æäŸããããŸãã ãŸã ç³ã蟌ã¿ããããŠããªãæ¹ããèå³ã®ããã»ãã·ã§ã³ãããã¯ãã§ãããç³ã蟌ã¿ã¯ ãã¡ããã ãé¡ãããŸãã 12:15 – 12:45ãKeynote 13:00 – 13:20ãTechniques for Reliable Code Generation Using AI Agents ä»å¹Žãã³ãŒãã®æžãæ¹ã¯å€§ããªå€åãèŠãããŸãããã³ãŒã倿Žã¯äž»ã«AIãšãŒãžã§ã³ããè¡ãããã«ãªããç§ãã¡äººéã®ä»äºã¯å
šäœçãªèª¿æŽãææç©ã®ä¿®æ£ãäžå¿ãšãªã£ãŠããŠããŸãããããå€§èŠæš¡ãã€ã¬ã¬ã·ãŒãªã³ãŒãããŒã¹ãæ±ãå ŽåãAIãšãŒãžã§ã³ããã©ããŸã§èªåŸçã«äœæ¥ã§ãããã«ã¯æç¢ºãªéçããããŸãããããžã§ã¯ãå
šäœã®æèãååã«çè§£ã§ããŠããªããã¬ã€ãã©ã€ã³ãå®ãããŠããªããšããçç±ãããçæãããã³ãŒãã¯ããŒãžåã«å€§å¹
ãªæçŽããå¿
èŠãšãªãããšãå°ãªããããŸããã æ¬ã»ãã·ã§ã³ã§ã¯ãAIãšãŒãžã§ã³ããèªåŸçã«ã³ãŒã倿Žãè¡ããããã«èšå®ããæ¹æ³ã«ã€ããŠãç¹ã«ãã€ã°ã¬ãŒã·ã§ã³ãå®ååŠçã®å€ãã³ãŒããæ±ãå Žé¢ã§æå¹ãªãã¯ããã¯ã玹ä»ããŸãã 13:30 – 13:50ãAIã®ç€ ââãããã¯ããæ¯ãããç®ã«èŠããªãåãã€ããã ãèŠãç®ã䌌ãååãããå§ãŸã£ãç»ååã蟌ã¿ã®å°ããªå®éšã¯ããããŠâEmbeddingsâé©åœãžãšçºå±ããã¡ã«ã«ãªã®ãããã¯ããã«ã«ãã£ãŒããããŠããžãã¹ã«å€§ããªå€é©ããããããŸãããæ¬è¬æŒã§ã¯ããã®æ©ã¿ãæ¯ãè¿ããªãããç»åæ€çŽ¢ããAI Listingãã»ãã³ãã£ãã¯æ€çŽ¢ã«è³ããŸã§ãåãèŸŒã¿æè¡ãããã«ãã¬ãŒã¯ã¹ã«ãŒãå®çŸããŠããã®ããçŽè§£ããŸãããŸãããããã¿ã€ãããå
ç¢ãªã€ã³ãã©ãžãšæ¡åŒµããŠããéçšã§çŽé¢ãã課é¡ããããããåŸãããåŠã³ã«ã€ããŠãã玹ä»ããŸãã 14:15 – 14:55ãBuilding Foundation for Mercariâs Global Expansion ã¡ã«ã«ãªã¯åµæ¥åœæããã°ããŒãã«ãªããŒã±ãããã¬ã€ã¹ãå®çŸããããšãããžã§ã³ãšããŠæ²ããŠããŸããããããŸã§ã®ææŠããåŸãããåŠã³ãåçãèžãŸããçŸåšã¯âGlobal One Productâãšããããã°ããŒãã«ãžã®å±éãå éãããããã®æ°ããªå
±éåºç€ã®æ§ç¯ã«åãçµãã§ããŸããæ¬ã»ãã·ã§ã³ã§ã¯ãªããã®ã¢ãããŒãã«è³ã£ãã®ããã©ã®ãããªã¢ãŒããã¯ãã£ãå®è£
ã§æ¯ããŠããã®ããçµç¹çãªãã£ã¬ã³ãžãšæè¡ã®äž¡é¢ãã詳ãã玹ä»ããŸããè€æ°ãªãŒãžã§ã³å±éã«ãããéçºã»éçšäžã®ãã£ã¬ã³ãžããçµç¹æšªæã§ã®æææ±ºå®ã®å·¥å€«ã«ã€ããŠãå
±æããŸãã 15:15 – 15:35ãã¡ã«ã«ãªã«ããããã£ãã·ã³ã°å¯Ÿçã®è»è·¡ãšæªæ¥ ãã£ãã·ã³ã°æ»æã¯é²åãç¶ãããµãŒãã¹ããŠãŒã¶ãŒãçãæå£ã¯å¹Žã
å·§åŠåããŠããŸããã¡ã«ã«ãªã§ãããã®é²åã«å¯Ÿæããããã«å€æ§ãªé²åŸ¡çãè¬ããŠããŸããããããŠãã¹ããŒå°å
¥ã奿©ã«ãæŠãã®çŠç¹ã¯å€§ããå€ããããããã«ãã£ãã·ã³ã°ãé²ãããããããããã«å®ãããŠãŒã¶ãŒãæ©èœãåºããããããããã«åŒ·åºã§ãããªããUXãæãªããªãèªèšŒäœéšãå®çŸãããããžãšã·ããããŠããŸãããæ¬ã»ãã·ã§ã³ã§ã¯ãæ»æææ³ã®å€é·ãšãããã«åŒå¿ããŠçºå±ããŠãããã£ãã·ã³ã°å¯ŸçãèªèšŒã»ãªã«ããªãŒæœçã®æ©ã¿ãæ¯ãè¿ããŸãã 16:00 – 16:40ãThe Future of Platform in the Age of AI æ¬ã»ãã·ã§ã³ã§ã¯ãç§ãã¡ãçŸåšAIã瀟å
ã§ã©ã®ããã«æŽ»çšããŠãããã瀟å
ã®ãšã³ãžãã¢ãªã³ã°çµç¹ã®ããŒãºãã©ã®ããã«é²åãããšèãããããããããŠAIãšãŒãžã§ã³ããæ£èŠã®ãŠãŒã¶ãŒãšããŠãµããŒãã§ãããã©ãããã©ãŒã æ§ç¯ãšã¯äœãªã®ãã«ã€ããŠã話ãããŸãã AIæä»£ã«ããããã©ãããã©ãŒã ãšã³ãžãã¢ãªã³ã°ã®å§¿ããä»åŸ3幎ãã5幎ã®éã«åãã¹ã倧èãªäžæã«ã€ããŠäžç·ã«æ¢ã£ãŠãããŸãããã 17:00 – 17:40ãBackend Standardization with MCP ä»ã®ããŒã ã®ãµãŒãã¹ãçè§£ããã®ã«é ãæ±ããããšã¯ãããŸãããïŒåããŒã ãããããç°ãªãã³ãŒãæ§é ã䜿ã£ãŠããããéšéããšã«åæãããŠãããããŠãäœæ¥ããªããªãé²ãŸãªãããããªç¶æ³ãAIãšModel Context Protocol (MCP) ã§ã©ãå€ããããã®ããã玹ä»ããŸããæ¬ã»ãã·ã§ã³ã§ã¯ãŸãMCPãšã¯äœãã説æãããªãããã瀟å
ã®ããã¯ãšã³ãéçºãæšæºåããæè³å¯Ÿå¹æïŒROIïŒãé«ãããã²ãŒã ãã§ã³ãžã£ãŒãã«ãªãåŸãã®ããã話ãããŸãããã®åŸãå®éã«MCPãåããã¢ãã芧ããã ããçŸåšçŽé¢ããŠãã課é¡ãä»åŸã®èšèšã®å¯èœæ§ã«ã€ããŠãæ¢ã£ãŠãããŸãã ãmercari GEARS 2025ãã®ãç³ã蟌ã¿ã¯ ãã¡ããã ã ã€ãã³ã詳现 é嬿¥æïŒ 2025幎11æ13æ¥ïŒæšïŒ 11:00-18:00 æŠèŠïŒ mercari GEARS 2025ã¯ãã¡ã«ã«ãªã°ã«ãŒãã®ãšã³ãžãã¢ãªã³ã°çµç¹ã®æè¡ãžã®ææŠãšãã«ã«ãã£ãŒãäœæããæè¡ã€ãã³ãã§ãã æ¬ã€ãã³ãã¯ãåãªãæ
å ±äŒéã®å Žã§ã¯ãªãããšã³ãžãã¢ãã¡ãåºäŒããçµéšãå
±æãã亀æµãéããŠæ°ããªæ©äŒãçã¿åºãããããšãç®çãšããŠããŸãã åå è²»ïŒç¡æ äŒå ŽïŒTODA HALL & CONFERENCE TOKYO åå æ¹æ³ïŒãã¡ãã® ããŒãž ã«ãŠãç³ã蟌ã¿ãã ããã ã å
¬åŒãµã€ã ã æ¬ã€ãã³ãã«é¢ããè¿œå æ
å ±ãããã°ãéæ @MercariGears ã§ãç¥ããããŸãã®ã§ãæ°ã«ãªãæ¹ã¯ãã²ãã©ããŒããé¡ãããŸãã
èªå·±çŽ¹ä» ããã«ã¡ã¯ã@KiKiãšç³ããŸããä»å¹Ž9æã«1ã¶æéãã¡ã«ã«ãªã®ã€ã³ã¿ãŒã³ã«åå ãããŠããã ããŸããã 倧åŠã§ã¯æ
å ±ç³»ãå°æ»ããŠããŠã倧åŠã®ææ¥ã§ã¯ããŒããŠã§ã¢ããã¢ããªã±ãŒã·ã§ã³ã«è³ããŸã§å¹
åºãåéã«ã€ããŠåŠãã§ããŸãã ä»åã®ã¡ã«ã«ãªã®ã€ã³ã¿ãŒã³ã¯èªåã«ãšã£ãŠåããŠåå ããã€ã³ã¿ãŒã³ã§ããããå€ãã®ããšãåŠã³ãªãã倧ããæé·ããããšãã§ãããšæããŠããŸããæ¬èšäºã§ã¯å®éã«ã€ã³ã¿ãŒã³ã§åãçµãã å
容ãšåŠãã ããšãã玹ä»ã§ããã°ãšæããŸããã©ãããããããé¡ãããããŸãã åå ããã€ã³ã¿ãŒã³ã«ã€ã㊠ç§ãä»ååå ããã®ã¯ãBuild@Mercariããšããããã°ã©ã ã®äžéšã§ããã€ã³ã¿ãŒã³ã·ããã§ãã ãªããBuild@Mercariã®ããã°ã©ã èªäœã®è©³ããå
容ã«ã€ããŠã¯ãä»ã®èšäºã§ãšãŠã詳ãã玹ä»ãããŠããŸãã®ã§ããã¡ããã芧ãã ããã https://careers.mercari.com/mercan/articles/40098/ ã©ãããŠBuildã€ã³ã¿ãŒã³ã«ç³ã蟌ãã ã®ã äžè¬çãªã€ã³ã¿ãŒã³ã«å¿åããéãæè¡èŠä»¶ãäºåç¥èã®é«ãã«ããŒãã«ãæããæ¹ãå€ãã®ã§ã¯ãªãã§ãããããç¹ã«ãæ
å ±ç³»ãå°æ»ããŠããªãæ¹ã¯ãã¡ãããå°æ»ããŠããæ¹ã§ããã€ã³ã¿ãŒã³ã®å¿åæã«æ±ããããæè¡èŠä»¶ãç¥èã«äžå®ãæããããšã¯ãããããããŸããã 倧åŠã§ã¯ãã¢ã«ãŽãªãºã ãããŒããŠã§ã¢ãOSã®åºæ¬åçãªã©åºç€çãªå
容ãäžå¿ã§ãWebã¢ããªã±ãŒã·ã§ã³éçºãªã©ã®å®è·µçãªã¹ãã«ãåŠã¶æ©äŒã¯éãããããšããããŸãã ç§èªèº«ãããã³ããšã³ããããã¯ãšã³ããšãã£ãWebé¢é£æè¡ã¯å
šãã®æªçµéšã§ããã©ãããå§ããã°ããã®ãããããªãããšæããŠããŸããããããªäžãSTEMåéã»ITåéã«ããããã€ããªãã£ã§ãã女æ§ããLGBT+ã³ãã¥ããã£ã®æ¹ã察象ã«ãã¬ãŒãã³ã°ãšã€ã³ã¿ãŒã³ã·ããã®æ©äŒãæäŸãããBuild@Mercariããšãããªã³ã©ã€ã³ããã°ã©ã ãç¥ããŸããã ãã®ããã°ã©ã ã¯ãWebé¢é£æè¡ã®ç¥èã¯å
šããªãããã©ããã®æ¥çã«èå³ãããïŒããšããæ°æã¡ã²ãšã€ã§å¿åã§ããæã®æ·±ããé
åã§ãããããããªãç§ã«ãææŠã§ãããããããªãããšæããæãåã£ãŠå¿åããããšã«ããŸããã é
å±ãããããŒã ã«ã€ã㊠ç§ãé
å±ãããã®ã¯ãContact Centerããšãããã¡ã«ã«ãªã§ã®ãåãåãã察å¿ããµããŒããã瀟å
ã·ã¹ãã ãéçºããŠããããŒã ã§ãã çŸåšãã¡ã«ã«ãªã®ãåãåãã察å¿ã¯ãã客ããŸããã©ãŒã ãããåãåããããã客ããŸããããã ãããåãåããå
容ãªã©ã®æ
å ±ãå
ã«CSïŒã«ã¹ã¿ããŒãµãŒãã¹ïŒãªãã¬ãŒã¿ãŒã察å¿ããããšããæµãã«ãªã£ãŠããŸãããã ãããã®CSãªãã¬ãŒã·ã§ã³ã§ã¯ãåãåããã®è§£æ±ºãŸã§ã«æéãããããããããšãã課é¡ããããŸããã ãã®ããŒã ã§ã¯ãããã£ãCSãªãã¬ãŒã·ã§ã³ãææ¬çã«åæ§ç¯ãããããžã§ã¯ããé²ããŠããŸãããå
·äœçã«ã¯ãã客ããŸã®ãåãåããã«ãªã¢ã«ã¿ã€ã ã§Botã察å¿ããBotã§è§£æ±ºãé£ããå Žåã¯ãæäººãã£ãããéããŠCSãªãã¬ãŒã¿ãŒã察å¿ã«ãããããšããæ¹åŒãžã®ç§»è¡ãç®æããŠããŸããã€ã³ã¿ãŒã³æéäžã¯ããã®æ°ãããã£ããäœéšãžã®ç§»è¡ãé²ããŠãããã§ãŒãºã ã£ãã®ã§ãã¡ã«ã«ãªã®æªæ¥ã®CSäœéšãæ¯ããéèŠãªä»çµã¿ã«é¢ãããã®ã¯ããšãŠãé
åçãªãã€ã³ãã§ããã å®éã«åãçµãã å
容 ãããã¯ãã«é¢ããæ¥åã¯å€§ããåããŠãããã¯ãšã³ããšããã³ããšã³ãã«åãããŸãã ããã¯ãšã³ãã¯ãµãŒããŒåŽãããŒã¿ããŒã¹ã®åŠçãæ
ããããã³ããšã³ãã¯ãŠãŒã¶ãŒã«çŽæ¥è§Šããç»é¢ãæäœéšåãæ
åœããŸããä»åç§ã¯ãããã¯ãšã³ããšããã³ããšã³ãã®ã¿ã¹ã¯ãïŒã€ãã€æ
åœãããŠããã ããŸããã ããã¯ãšã³ãéçº äœ¿çšããèšèªã»ããŒã« èšèª: Go, SQL ããŒã«: GCP, Spanner, Kubernetes, BigQuery, Spinnaker, yo èæ¯ ãåãåãã察å¿ã·ã¹ãã ã®éçºãé²ããäžã§ãäŒè©±å±¥æŽãé¢é£ããŒã¿ã«çŽã¥ãè奿
å ±ãã¹ã ãŒãºã«ååŸããããšãã調æ»ãåæäœæ¥ãåæ»ã«é²ããäžã§ã®èª²é¡ãšãªã£ãŠããŸããã ãã®ãã£ããã®ã·ã¹ãã ã¯ãGCPã®ãµãŒãã¹ã䜿ã£ãå®è£
ã«ãªã£ãŠããŸããåã
ã®ãã£ãããç¹å®ããããã®IDã¯é£æºã»ä¿åããŠããŸããããConversationIDãšåŒã°ãããBotãäŒè©±ããIDã¯ãããšã¯ç°ãªãIDãšãªã£ãŠãããããã¯ã·ã¹ãã äžã§ã¯ä¿åããŠããŸããã§ããã ãã®ããããããŸã§ã®éçšã§ã¯ã察象ãšãªãäŒè©±ããŒã¿ãããConversationIDãååŸãããŸã§ã«ãè€æ°ã®æé ãèžãå¿
èŠããããŸãããäŸãã°ãäŒè©±ã®èšé²ããæ
å ±ãäžã€ã²ãšã€æ€çŽ¢ããããã§ãç®çã®ããŒã¿ãç¹å®ãããšãã£ãããã»ã¹ãçºçããŸãããã®ãããªæéã¯ãè¿
éãªåé¡è§£æ±ºãæ±ããããå Žé¢ã§ã¯ç¹ã«å€§ããªéå£ãšãªã£ãŠããŸããã å®è£
ããããš ãããã課é¡ã解決ãããããConversationIDãèªåçã«åéã»æ ŒçŽããä»çµã¿ãæ€èšããŸãããå
·äœçã«ã¯ãäŒè©±çµäºæã«å¿
èŠãªããŒã¿ãèªåçã«ååŸãããããŸã§ããŒãã«ã«ä¿åããŠããªãã£ãConversationIDããäŒè©±çµäºæã«ããŒãã«ãžãã®ãŸãŸä¿åããããã«å€æŽããŸããããã®ä»çµã¿ã掻çšããããšã§ã調æ»ããã»ã¹ã倧å¹
ã«ç°¡ç¥åããããå¹ççãªå¯Ÿå¿ãç®æããŸããã çµæ ãã®çµæãã€ã³ã¿ãŒã³ã®æéãéããŠãã¡ã³ã¿ãŒãããã¯ãããšããããŒã ã®æ¹ã®å©åãããã ãããã®ä»çµã¿ãå®éã®ã·ã¹ãã ã«åæ ãããããšãã§ããŸãããçŸå Žã§ã¯ã調æ»ã®é«éåã«åœ¹ç«ã£ãŠããããšãã£ã声ãããã ããŠãããèªåãé¢ãã£ãä»çµã¿ãå®éã«äœ¿ãããŠãããšå®æã§ãããšãŠãå¬ããæããŠããŸãããã®çµéšãéããŠãéçºãããã®ã誰ãã®äœæ¥ãå°ãã§ãå©ããããããšã®ãããããæ¹ããŠæããŸããã ããã³ããšã³ãéçº äœ¿çšããèšèªã»ããŒã« èšèª: TypeScript, GraphQL ããŒã«: Ant Design èæ¯ ãåãåããã«é¢ããæ
å ±ã«ã客ããŸã®ã¡ãŒã«ã¢ãã¬ã¹ãç»é²ãããŠããªãå Žåããã®ãåãåããã«ã¯ãããŒã®ã¡ãŒã«ã¢ãã¬ã¹ãç»é²ãããŸãããã ããã®ãããªå Žåã§ããCSãªãã¬ãŒã¿ãŒãæäœããç»é¢äžã«ã¯ããã客æ§ã®ã¡ãŒã«ã¢ãã¬ã¹å®ã«ã¡ãã»ãŒãžãéä¿¡ãããã¿ã³ãã衚瀺ãããŠããŸããã ããããæå¹ãªã¡ãŒã«ã¢ãã¬ã¹ã§ã¯ãªãããããã®ãã¿ã³ãæŒããŠãã¡ãŒã«ã®éä¿¡ã¯å®è¡ãããŸãããããã«ãããããããCSãªãã¬ãŒã¿ãŒã®ç»é¢äžã«ã¯ãã®æšã衚瀺ãããªããããã¡ãŒã«éä¿¡ãå®äºãããšãã誀èªèãæãå¯èœæ§ãããUIãšãªã£ãŠããŸããã å®è£
ããããš ãã®åé¡ã解決ããããããããŒã®ã¡ãŒã«ã¢ãã¬ã¹ãèšå®ãããŠããå Žåã«éä¿¡ãã¿ã³ãæŒããããããšã©ãŒã¡ãã»ãŒãžãã¢ãŒãã«ã§è¡šç€ºããåŠçã远å ããŸããã ãã®å®è£
ãè¡ãããã«ãéä¿¡å
ã¡ãŒã«ã¢ãã¬ã¹ã®æ
å ±ãååŸã§ããããã«ãããŒã¿ååŸã¯ãšãªã®äžéšã倿ŽããŸããããã®å€æŽã«ãããç»é¢åæèªã¿èŸŒã¿æã«å¿
èŠãªæ
å ±ãæŽã仿§ã«æ¹ããŸããã çµæ ç»é¢äžã«ãšã©ãŒã¡ãã»ãŒãžãæ£ãã衚瀺ãããããšã確èªã§ããŸãããããã«ãããCSãªãã¬ãŒã¿ãŒã誀èªèããããªã¹ã¯ãæžå°ããæ¥ã
ã®æ¥åãããæ£ç¢ºã«é²ããããšã«åœ¹ç«ã€æ¹åãå®çŸããŸããã ããŒã éçºãªãã§ã¯ã®åŠã³ ãã©ã€ããŒãã®å人éçºã§ã¯ãèªåã®æãã€ããŸãŸã«èªç±ã«å®è£
ããããšãå€ãããšæããŸããããããå人ã§ã¯éæãé£ãã倧ããªç®æšããããŒã ã§ããã°å®çŸã§ããããšããããŸããäžäººã§ã¯èšå€§ãªæéãšåŽåããããäœæ¥ããããŒã ã§åãçµãããšã§ãããããã®åŸæåéãæŽ»ãããç¥èãã¹ãã«ãå
±æããªããå¹çããé²ããããšãã§ããŸãã ããã«ãããŒã éçºã§ã¯åãªãäœæ¥ã®åæ
ã«ãšã©ãŸãããäºãã«ãã£ãŒãããã¯ãäžãåãããšã§ãããã¯ãã®å¯èœæ§ãåºããŠãããŸãã ä»åã®ã€ã³ã¿ãŒã³ã¯ãç§ã«ãšã£ãŠåããŠããä»äºã§ã®ããŒã éçºãããå€§èŠæš¡ãªéçºãã«è§Šããæ©äŒãšãªããŸãããç§ãããã§åŸãåŠã³ããæ¬¡ã«ã玹ä»ããŸãã ãããã¯ããžã®æºããæ¹ã¯æ¥çš®ã«ãã£ãŠããŸã㟠ä»åãContact CenterããŒã ã«é
å±ãããŠããã ããããŒã ã®æ¹ã
ã«ãµããŒãããŠããã ããããåãæ§åãéè¿ã§èŠãäžã§ãããŒã ã¡ã³ããŒããããã®åœ¹å²ãæ¥åå
容ã«ã€ããŠçè§£ãæ·±ããããšãã§ããŸããã ç§ãä»åã®ã€ã³ã¿ãŒã³ã«ãããŠã¯ã以äžã®ãããªããžã·ã§ã³ã®æ¹ãšé¢ããããããŸããã Product Manager ãããã¯ãã䜿ãã客ããŸïŒç§éã®å ŽåCustomer Serviceã®ã¡ã³ããŒïŒããã®ããŒãºãåããŸãšããŠãæé©ãªåœ¢ã§å®è£
ã§ããããã«ä»æ§ã決å®ãã圹å²ã§ããä»åã®ã€ã³ã¿ãŒã³ã§ã¯ãããã³ããšã³ãã®å®è£
ãè¡ãéããšã©ãŒã¡ãã»ãŒãžã®å
容ããã¶ã€ã³ã«ã€ããŠçžè«ãããŠããã ããŸããã Engineering Manager ãšã³ãžãã¢ã®æèŠãããŒã ããããžã§ã¯ãã«åæ ããããããå€ãã®äŒè°ã«åºåžãé¢ä¿è
ãšèª¿æŽãè¡ã£ãããä»ã®ãšã³ãžãã¢ãæææ±ºå®ã«è¿·ã£ãéã«çžè«ã«ä¹ãã®ãäž»ãªåœ¹å²ã§ãããŸããããŒã ã®ãšã³ãžãã¢äžäººã²ãšããšæ¯é±1on1ãè¡ããå°ãããšã課é¡ã«è³ãåŸãããªã©ãã³ãŒããæžãããšä»¥å€ã«ãããŒã ã¡ã³ããŒãšã®ã³ãã¥ãã±ãŒã·ã§ã³ãéèŠããŠããå°è±¡ãåããŸããã ç§ãã€ã³ã¿ãŒã³æéäžã«äœåºŠã1on1ãèšå®ããŠããã ããçŽæ¥ã話ãããæ©äŒããããŸããã Frontend Engineer ããã³ããšã³ããšã³ãžãã¢ã¯ãŠãŒã¶ãŒãçŽæ¥ç®ã«èŠããéšåãå®è£
ãããšã³ãžãã¢ã§ããããŒã ã§ã®äŒè°ã®éã«ãå®è£
ãåºæ¥äžãã£ãéšåã玹ä»ããæéãããã®ã§ãããããã³ããšã³ãã®ãã¢ã³ã¹ãã¬ãŒã·ã§ã³ã¯è¯ããã£ãŠèŠå¿ããããã®ã§ããã€ãç§ã楜ãã¿ã«ããŠããŸããã Backend Engineer ããã³ããšã³ããšã³ãžãã¢ãšã¯éã«ã衚ããã¯èŠããªãéšåãæ
åœãããšã³ãžãã¢ã§ãããããã¯ãã®æ©èœã®ã«é¢ããè£åŽã®åŠçãè¡ãããšãã§ãããšããç¹ãé
åã§ããé©åãªããŒã¿æ§é ãAPIã®æ±ºå®ãã·ã¹ãã ã®ããã©ãŒãã³ã¹ã«é¢ããä»äºãã§ããã®ãå人çã«é¢çœããšèããŠããŸããçžã®äžã®åæã¡ãšããå°è±¡ã§ãã éçºã®æµã ããŒã éçºã§ã¯ãã¡ã³ããŒãšååããŠåããããããå人éçºã«ã¯ãªãã¹ããããå¿
èŠã«ãªããŸãã ããã§ã¯ããã®ãªãªãŒã¹ãŸã§ã®æµããç°¡åã«ã玹ä»ããŸãã Planning (äœããããæ±ºãã) 解決ãã¹ã課é¡ãšäœããã®ãæç¢ºã«ããæ®µéã§ããProduct Managerã®æ¹ãäžå¿ã«è°è«ããäœæ¥ã®æ¹åæ§ãå®ããŸãã Specäœæ / ãã±ãã起祚 Planningã§æ±ºãŸã£ãå
容ãããšã«ã仿§ãå
·äœåããã¿ã¹ã¯ç®¡çããŒã«ã«ç»é²ããŸãããã®æç¹ã§ã¬ãã¥ãŒãäžåºŠåããããšããããŸãã Technical Spec / 詳现èšèš æè¡çãªè©³çްèšèšãè¡ããããŒã¿ã®æµããAPIéžå®ãªã©ãå
·äœçãªå®è£
å
容ãè©°ããŠãããŸããä»åã®ã€ã³ã¿ãŒã³ã§ã¯ãããŒã ã®æ¹ããã§ã«ãã±ãã起祚ãŸã§ãçµããŠãã ãã£ãŠããããã詳现èšèšã®äœæããäœæ¥ãåŒãç¶ããŸããã éçº èšèšã«åºã¥ããŠã³ãŒããå®è£
ããŸãã Pull RequestïŒPRïŒäœæ GitHubäžã§ã³ãŒããå
±æããå®è£
ã®æå³ããã¹ãå
容ã説æããŸããæ±ã£ããªããžããªã§ã¯åæã«ãPRäœææã«ã¯èªåçã«CIããŒã«ãå®è¡ãããã³ãŒãã«å¯ŸããŠlintãåäœãã¹ãïŒunit testsïŒãèµ°ãä»çµã¿ã«ãªã£ãŠããŸããã ã¬ãã¥ãŒ ããŒã ã¡ã³ããŒãã³ãŒãã®å質ãèšèšã®æå³ã確èªããŸããã¬ãã¥ãŒã®çµææ¬¡ç¬¬ã§ã¯4ã®éçºã«æ»ã£ãŠã³ãŒããæžãçŽããå床ã¬ãã¥ãŒãåããæ¿èªãåŸããããŸã§ç¹°ãè¿ãããšã«ãªããŸãâŠã ãªãªãŒã¹æºå ç°å¢èšå®ãå®è¡æš©éã®ååŸãè¡ããéçºçšã®ç°å¢ã§ãã¹ããçµãããã§æ¬çªãªãªãŒã¹ã«åããŸãã ãªãªãŒã¹ 宿ããã³ãŒããæ¬çªç°å¢ã«ãªãªãŒã¹ãããŠãŒã¶ãŒãå©çšã§ããç¶æ
ã«ããŸãã å€§èŠæš¡éçºã«åããèšèšææ³ãClean Architectureãã«ã€ã㊠ä»åãããã¯ãšã³ãéçºã§è§Šãããšã«ãªã£ããªããžããªã¯ããClean Architectureãã«åºã¥ããŠèšèšãããŠããŸããã ã³ãŒãã®èšèšææ³ãšã¯ãç¹ã«å€§èŠæš¡ãªéçºã«ãããŠéèŠãšãªãæŠå¿µã§ããããã¯ããã³ãŒããã©ã®ããã«æŽçããé
眮ãããããæ±ºããéã«åèã«ããããªã·ãŒã®ããšã§ãããŒã å
šäœã§ã®å¹ççãªäœæ¥ãæ¯ããŸããããšãã°ãããã®ã³ãŒãã¯ããã«çœ®ãããŠããã«éããªãããšããŒã å
šå¡ãå
±éèªèãæãŠãããšã§ãéçºå¹çã倧ããåäžããŸãã Clean Architectureã§ã¯ãããã°ã©ã ã®åœ¹å²ã責任ã«å¿ããŠã³ãŒããã¬ã€ã€ãŒã«åãããŠããŸããããããã®ã¬ã€ã€ãŒã¯ãç¬ç«ããŠåœ¹å²ãæãããããã«èšèšãããŠãããç°ãªãã¬ã€ã€ãŒéã®äŸåé¢ä¿ãæå°éã«æããããšãç¹åŸŽã§ãããã®èšèšã«ããã倿Žãæ¡åŒµããããããªããšããå©ç¹ããããŸãã å€§èŠæš¡éçºã«è§Šããããšããªãã£ãç§ã«ãšã£ãŠãã³ãŒãã®èšèšææ³ãšããæŠå¿µã«è§Šããããšèªäœãéåžžã«å€§ããªåŠã³ãšãªããŸããã çæAIãçšããéçºã«ã€ã㊠ã¡ã«ã«ãªã§ã¯ç©æ¥µçã«æ¥åã«çæAIãå°å
¥ããŠããŸãã ä»åã®ã€ã³ã¿ãŒã³ãéããŠããœãããŠã§ã¢éçºã®çŸå Žã§ã¯ãèšèªã®ææ³ãèŠããŠã¹ã©ã¹ã©ãšæžãã ããã¹ãã«ã§ã¯ãªããã ããšå®æããŸãããçæAIã®é²åã«ãã£ãŠãã³ãŒããæžãäœæ¥ãããªãå¹çåãããŠãããå€§èŠæš¡ãªãããžã§ã¯ãã®ã³ãŒããçè§£ããéã«ãéåžžã«æçšã ãšããããšãåŠã³ãŸããã äžæ¹ã§ããã以äžã«éèŠã ãšæããã®ã¯ãå€§èŠæš¡ãªéçºã«é©ããèšèšææ³ããå°æ¥çã«ä»æ§å€æŽãããããèšèšãèªå以å€ã®äººã«ãåãããããã³ãŒããæžãããšã®å€§åãã§ãããŸããã¢ãžã¥ãŒã«åãã¡ã³ããã³ã¹æ§ãæèããéçºã®èãæ¹ããçŸå Žã§ã¯éèŠãããŠããããšã匷ãæããŸããã ãããã®çµéšããããç¥ããªãèšèªã䜿ããããžã§ã¯ãã ããâŠããšæ©äŒãéãã®ã¯ãå°ããã£ãããªããšæ°ä»ããããŸãããèšèªèªäœã®ç¥èã¯å¿
èŠã«å¿ããŠèº«ã«ã€ããŠããã°ãããçŸå Žã§åŠã¹ãèšèšãéçºã®èãæ¹ããããããé·ãèªåã®ç³§ã«ãªããçæAIã«åã£ãŠä»£ããããããšã®ãªã人æãžãšæé·ããããšã«ã€ãªããã®ã§ã¯ãªãããšæããŸãã çµããã« ãã®èšäºã§ã¯ãç§ãåããŠã®ã€ã³ã¿ãŒã³ãéããŠåŠãã ããŸããŸãªããšã«ã€ããŠã玹ä»ãããŠããã ããŸããã ïŒã¶æãšããæéã¯ãšãŠãçãæããŸãããããã«ã¿ã€ã ã§ç€Ÿå¡ã®æ¹ã
ã«æ··ãã£ãŠåããããããã話ããããŠããã ãäžã§ããã®èšäºã«ã¯æžããããªãã»ã©ã®å€§ããªåŠã³ãåŸãŸããããªã«ãããæ¬åœã«æ¥œããã£ãã§ããã¡ã³ã¿ãŒãããŠãã ãã£ã Peranikov ãããã¯ãããContact CenterããŒã ã®çæ§æ¹ãããããšãããããŸããã
Cross Border (XB) Engineeringã® @deeeeeeeeeet ã§ãïŒ å
æ¥ã®äºæ¥æŠç¥çºè¡šäŒã«ãããŠå
±æããŸãããïŒä»åŸæŽã«ã¡ã«ã«ãªã®æµ·å€å±éãå éãããããã«ã°ããŒãã«çã®ã¡ã«ã«ãªã¢ããªãå
æ¥ãªãªãŒã¹ããŸããïŒ ãã®ã¢ããªã¯çŸåšæäŸããŠãæ¥æ¬çã»ã¢ã¡ãªã«çã®ã¡ã«ã«ãªãšã¯ç°ãªãæ°ããã¢ããªã§ããïŒãŸãã¢ããªã ãã§ã¯ãªããã®è£åŽã®ããã¯ãšã³ãåºç€ãæ°ãã«åæ§ç¯ããŠããŸãïŒæ¬èšäºã§ã¯ïŒãšã³ãžãã¢ãªã³ã°ã®èгç¹ããã¡ã«ã«ãª ã°ããŒãã«ã¢ããªïŒä»¥äžãã°ããŒãã«ã¢ããªïŒãšãã®åºç€ã®æŠç¥ãã¢ãŒããã¯ãã£ãŒããããŸã§ã®ã¡ã«ã«ãªã®ææŠããåŸãããåŠã³ãæ¯ãè¿ãã€ã€ç޹ä»ããŸãïŒ ã¡ã«ã«ãªã«ãããè¶å¢ååŒ ãã¡ã«ã«ãªãã«åºåããããšãããã¿ãªããã®äžã«ã¯ïŒèªåã®ååãäžè¬ã®ã客ããŸã§ã¯ãªãäºæ¥è
ã«ãã£ãŠã代ç賌å
¥ããããçµéšãããæ¹ãããã£ããããããããŸããïŒããã¯ïŒæµ·å€ã®ã客ããŸãæ¥æ¬ã®ãã¡ã«ã«ãªãã«åºåãããŠããååã賌å
¥ã§ããè¶å¢ (Cross-Border, XB) ååŒãšããä»çµã¿ã«ãããã®ã§ãïŒ ã¡ã«ã«ãªã«ãããè¶å¢ååŒã¯ä»£ç賌å
¥ããŒãããŒãšã®é£æºã«ãã£ãŠå®çŸãããŠããŸãïŒæµ·å€ã®ã客ããŸã¯ïŒãŸãææºããŒãããŒã®Webãµã€ãäžã§ãã¡ã«ã«ãªãã®ååãæ³šæããŸãïŒãããšïŒããŒãããŒã賌å
¥ä»£è¡è
ãšããŠãã¡ã«ã«ãªãäžã§ååã賌å
¥ãïŒæ¯æãæç¶ããè¡ããŸãïŒåœå
ã®åºåè
ã¯ïŒãã®ä»£ç賌å
¥è
ã§ããããŒãããŒã®æå®ããæ¥æ¬ã®å庫ãžïŒéåžžã®åœå
ååŒãšåãããã«ååãçºéããŸãïŒååãå庫ã«å°çåŸïŒããŒãããŒãæ€åãæµ·å€åãã®æ¢±å
ãè¡ãïŒæµ·å€ã®ã客ããŸã®å
ãžåœéçºéãããšããæµãã§å®çŸãããŠããŸãïŒ ãã®ä»çµã¿ã¯ïŒæµ·å€ãšåœå
ã®ã客ããŸã®åæ¹ã«ã¡ãªããããããŸãïŒæµ·å€ã®ã客ããŸã«ãšã£ãŠã¯ïŒèšèªã®å£ãé貚ã®éããæ°ã«ããããšãªãïŒæ¥æ¬ã®ãŠããŒã¯ãªååãæè»œã«è³Œå
¥ã§ããŸãïŒäžæ¹ã§ïŒåœå
ã®ã客ããŸã«ãšã£ãŠã¯ïŒæµ·å€ã®ã客ããŸãšã®çŽæ¥çãªã³ãã¥ãã±ãŒã·ã§ã³ãåœéçºéãšãã£ãè€éãªæç¶ãã¯äžåäžèŠã§ïŒåœå
ååŒãšåãããã«è²©å£²ã®æ©äŒãäžçäžã«åºããããšãã§ããŸãïŒ è¶å¢ååŒäºæ¥ã¯2019幎ã«å§ãŸãïŒè¿å¹Žããã«æé·ããŠãã, GMVãšããŠã¯éå»3幎ã§15åã«æé·ããŠããŸãïŒç¹ã«ïŒã¢ãã¡ïŒã³ããã¯ïŒã²ãŒã ïŒãšã³ã¿ã¡é¢é£ã°ããºã®ã«ããŽãªãŒãååŒå
šäœã®å€ããå ããŠããæµ·å€ã®ã客ããŸããã®åŒ·ãéèŠããããŸãïŒ ãã®ãããªåŒ·ãéèŠãšæé·ãé¡§ã¿ãŠïŒä»£ç賌å
¥ããŒãããŒã®ãµã€ããéããä»çµã¿ã«å ãïŒ æ¥æ¬ã®ã¡ã«ã«ãªã®WebãµãŒãã¹ ãéããŠä»£ç賌å
¥ãå¯èœã«ããåãçµã¿ãéå§ããŸããïŒãã®ä»çµã¿ã«ããïŒæµ·å€ã®ã客ããŸã¯çŽæ¥ãã¡ã«ã«ãªãäžã§ã¢ã«ãŠã³ããäœæãïŒãã¡ã«ã«ãªããæäŸããäœéšãéããŠååã®æ€çŽ¢ãšè³Œå
¥ãè¡ãããšãå¯èœã«ãªããŸãã (åŒãç¶ãããŒãããŒäŒæ¥ãéã«æã圢åŒã¯ç¶ç¶ããŠããŸã)ïŒãã®åãçµã¿ã¯2024幎ã«ãªãªãŒã¹ã, çŸåšå°æ¹ŸãšéŠæž¯ããå©çšå¯èœã§å©çšè
æ°ã䌞ã°ããŠããŸãïŒ ããããŠè¶å¢ååŒäºæ¥ã¯é èª¿ã«æé·ããŠããŸãããïŒåæã«ããã€ãã®éèŠãªèª²é¡ãèŠããŠããŸããïŒä»¥äžã§èª¬æããããã«æ¢åã®æ¥æ¬ã®ã·ã¹ãã ã¯æ¥æ¬åžå Žã«ç¹åããŠäœãããŠããïŒåäžé貚ã»åäžèšèªãåæãšããèšèšã«ãªã£ãŠããŸãïŒè¶å¢ååŒæ©èœã¯ãã®äžã«è¿œå çã«å®è£
ããããïŒè€æ°åœãžã®å±éãååœåºæã®åç¿æ
£ãžã®å¯Ÿå¿ãå®çŸããŠããã«ã¯éçããããŸããïŒç¹ã«ã¢ãžã¢åžå Žã§ã¯ECå©çšã®å€ããã¢ãã€ã«çµç±ãšããç¶æ³ã«ãããŠïŒWebçã®ã¿ã®æäŸã§ã¯ç«¶äºåã«æ¬ ãããšããåé¡ããããŸããïŒ ãã®ãããªèª²é¡ãæ±ããªãããïŒæµ·å€åžå Žããã®éèŠã¯ç¢ºå®ã«ååšããŠããïŒç¹ã«ã¢ãã¡ã»ã²ãŒã é¢é£ååãžã®é¢å¿ã¯éåžžã«é«ãããšãããã£ãŠããŸãïŒçŸåšã¯å°æ¹ŸãšéŠæž¯ã®2ãæã®ã¿ã§ããïŒæ±åã¢ãžã¢ã欧米ã«ãåæ§ã®æœåšçãªéèŠãããããšã¯æããã§ããïŒãã®æ©äŒãæå€§éã«æŽ»ããããã«ã¯ããæ©ãå±éåœãæ¡å€§ããŠããæ°ããªã¢ãããŒããå¿
èŠã§ããïŒ ããã§ç§ãã¡ã¯ïŒåã«æ¢åã·ã¹ãã ãæ¡åŒµããã®ã§ã¯ãªãïŒã°ããŒãã«å±éãåæãšããæ°ããªã¢ããªã±ãŒã·ã§ã³ãšãã®åºç€ãæ§ç¯ãããšããæ±ºæã«è³ããŸããïŒããã¯è¶å¢ååŒããå§ããŠïŒå°æ¥çã«ã¯ååœã§ã®ããŒã«ã«ããŒã±ãããã¬ã€ã¹ã®ç«ã¡äžãïŒãããŠæçµçã«ã¯åœå¢ãè¶ããã°ããŒãã«ãªããŒã±ãããã¬ã€ã¹ã®å®çŸãèŠæ®ããæŠç¥çãªå€æã§ããïŒ æµ·å€å±éã®ã¢ãããŒã ã°ããŒãã«ãªããŒã±ãããã¬ã€ã¹ã®å®çŸã¯ïŒã¡ã«ã«ãªåµæ¥åœæããã®ããžã§ã³ã§ããïŒæµ·å€å±éãžã®ææŠã¯ä»åãåããŠã§ã¯ãããŸããïŒãããŸã§ã«ãã¢ã¡ãªã«ã§ã®äºæ¥å±éã«ææŠãïŒçŸåšããã®æé·ã«æ³šåããŠããŸãïŒéå»ã«ã¯ã€ã®ãªã¹ãžã®å±éã詊ã¿ãçµéšããããŸãïŒ ãããŸã§ã®æµ·å€å±éã§ã¯ïŒããããã®åœã«ãããŠïŒæ¥æ¬ãšåæ§ã®ããŒã«ã«ãªC2CããŒã±ãããã¬ã€ã¹ããŒãããç«ã¡äžãããšããã¢ãããŒããåã£ãŠããŸããïŒãããïŒä»åã®ã°ããŒãã«å±éã¯è¶å¢ååŒã®æåãšèª²é¡ããåŠãã æ°ããªã¢ãããŒããåã£ãŠããŸãïŒæ¥æ¬ããæµ·å€ãžååãå±ãããè¶å¢ååŒããäºæ¥ã®è»žã«æ®ãïŒããã§æ§ç¯ãã顧客åºç€ã掻ãããªããæ®µéçã«ãµãŒãã¹ãæ¡å€§ããŠããæŠç¥ã§ãïŒãŸãå±éãšãªã¢ã3幎以å
ã«50ã«åœãšå°åãç®æããŠããïŒã¹ããŒãæãåŸæ¥ãšã¯å€§ããç°ãªããŸãïŒããã¯æ¥æ¬ã®ã客ããŸãäºæ¥è
ã«åºåããŠããã ãããŠããŒã¯ã§è±å¯ãªååãäžçäžã«å±ããããšãèµ·ç¹ãšãïŒããããæŽãªãå¯èœæ§ã暡玢ããŠããæŠç¥ãžã®è»¢æãæå³ããŠããŸãïŒ ãã®äºæ¥æŠç¥ã®è»¢æã«ãããšã³ãžãã¢ãªã³ã°æŠç¥ã倧ããå€ããŸããïŒ ãããŸã§ã®æ¥æ¬ãšã¢ã¡ãªã«ïŒãããŠã€ã®ãªã¹ãžã®å±éã¯ããããç¬ç«ããç°ãªãã·ã¹ãã ã«ããå®çŸããŠããŸããïŒãã¡ããåœåã¯å
±éã®ã³ãŒãããŒã¹ãååœã«ãããã€ããæ¹åŒ (ãã ãããŒã¿ã¯åé¢) ãåã£ãŠããŸããïŒãããïŒæ¥æ¬åãã«äœãããã·ã¹ãã ãååœã®äºæ
ã«å¯Ÿå¿ãããŠããããšã«ããã³ãŒãããŒã¹ã®è€éå (e.g., åœã®ã¹ã€ããã®ããã®ifæãå€ãã®å Žæã§æžãããããšã«ãªã£ã) ãïŒåœéã§ã®æ¹éã®ã¢ã©ã€ã³ãå¿
èŠã§ããããã«ååœã®æææ±ºå®ã®ã¹ããŒãã®äœäžãšãã£ã課é¡ã«ã¶ã€ãããŸãã. æçµçã«ã¯ãã©ãŒã¯ã決å®ãïŒããããç¬ç«ããã·ã¹ãã ãšãªãïŒéçºéçšã®äœå¶ãåé¢ããŠããããšã«ãªããŸããïŒã¢ã¡ãªã«ã¯ãã®åŸã¢ããªèªäœãçŸå°ã®UI/UXã«åãããŠå·æ°ãè¡ãïŒç¬èªã®æ©èœããã®äžã«å®è£
ããŠããããšã«ãªãïŒæ¥æ¬ãšã¢ã¡ãªã«ã®ã·ã¹ãã ã¯ä»æ¥ã§ãåé¢ãããŠããŸãïŒ ãã®æ¹æ³ã¯ïŒè¿
éã«äºæ¥ãç«ã¡äžãïŒååœã®åžå Žã«æ·±ãæé©åã§ããç¹ã§ã¯æå¹ãªã¢ãããŒãã§ããïŒååœã®äºæ¥ãããããã§äŒžã°ããŠããããã«ç¬ç«ããçµç¹äœããšã·ã¹ãã ãéçºããŠããã®ãéèŠã ã£ããšæããŸãïŒäžæ¹ã§ããé·æçãªèŠç¹ã«ç«ã£ããšãã«ä»¥äžã®ãããªèª²é¡ãããïŒæ¬¡ã®å±éãžãšç¹ããããšãå°é£ã«ãªã£ãŠããŸããïŒ å±éã®ã³ã¹ããšã¹ããŒã : å±éåœãå¢ãããšãã芳ç¹ã§ã®å
±éã®åºç€ã®æŽåã¯ã§ããŠãããïŒæ¬¡ã®åœãèãããšãã«æ°ããªã¢ããªã±ãŒã·ã§ã³ãšããã¯ãšã³ãåºç€ãæ§ç¯ãçŽãããšïŒãããã¯æ¢åã®ã·ã¹ãã ã®å€§èŠæš¡ãªæ¹ä¿®ãèããå¿
èŠãããïŒ éçºãªãœãŒã¹ã®éå¹çæ§ : åããããªæ©èœãããããã®åœã§åå¥ã«å®è£
ããïŒååºç€ã«å°ä»»ã®ããŒã ãå¿
èŠãšãªãããïŒéçºãªãœãŒã¹ã®éè€ãéçšã®éå¹çæ§ãçºçããïŒ çŸç¶ã®ãè¶å¢ååŒãèªäœã¯æ¢åã®æ¥æ¬ã®ã·ã¹ãã äžã«æ§ç¯ã§ããŠããŸãïŒãããïŒä»¥äžã§ãã詳ããè¿°ã¹ãããã«æ¢åã®ã·ã¹ãã ã¯è€éåããŠããïŒä»åŸã®ããé«éã«å±éåœãå¢ãããŠããïŒã°ããŒãã«ã«åããããè¯ãUI/UXã®æäŸãè¡ã£ãŠããã®ã¯éçãããŠããŸããïŒãããŠãè¶å¢ååŒãã®æ¬¡ïŒäŸãã°æ°ããªåœã§ããŒã«ã«ã®ããŒã±ãããã¬ã€ã¹ãå±éãããšãã£ãããšã«ç¹ããããšã¯éåžžã«å°é£ã§ãïŒ ãã®ãããªèª²é¡ãæ ¹æ¬çã«è§£æ±ºãïŒãããŠãè¶å¢ååŒããäžå¿ãšããæ°ããªæµ·å€å±éãå¹ççã«å éãããããã«ã¯æ°ããªæŠç¥ãå¿
èŠã§ããïŒããã§ãåœãå°åããšã«åå¥ã®ã·ã¹ãã ãæ§ç¯ããã®ã§ã¯ãªãïŒåäžã®ã°ããŒãã«ãªåºç€ã§å
šãŠã®åœãå°åããµããŒãããããšããæ°ããªããžã§ã³ãæã¡ç«ãŠãã®åºç€ã®éçºãå§ããŸããïŒ ã°ããŒãã«åºç€ã®éçºæŠç¥ ãã®åäžã®ã°ããŒãã«åºç€ã®éçºã®æŠç¥ã«ã¯ããã€ãã®ã¢ãããŒããèããããŸãããæ¡åŒµãšåæ§ç¯ã®ãã€ããªãããªã¢ãããŒãããéžæããŠããŸãïŒãã®ã¢ãããŒãã«è³ã£ãèæ¯ããããŸã§ã®ã¡ã«ã«ãªã®ããã¯ãšã³ãã·ã¹ãã ã®å€é·ãã説æããŸãïŒ ã¡ã«ã«ãªã®ããã¯ãšã³ãã·ã¹ãã ã®å€é· ã¡ã«ã«ãªã®ããã¯ãšã³ãã·ã¹ãã ã¯Monolithã¢ãŒããã¯ã㣠(åäžã³ãŒãããŒã¹ã«å
šãŠã®æ©èœãå®è£
ããæ¹åŒ) ãšããŠå§ãŸã£ãŠããŸãïŒã¢ã¡ãªã«äºæ¥ãã€ã®ãªã¹äºæ¥ãéå§ãããšãã«ãã©ãŒã¯ãšããéžæè¢ããšãããšãã§ããã®ã¯ãã®ããã§ã (ããããã®åœã®ã¹ã±ãŒã«ãæ¯ããããã«è£åŽã®ã€ã³ãã©ãããŒã«ãšããŠå€ãã®ä»çµã¿ãããããããè€è£œããã®ã¯å®¹æã§ã¯ãªãã£ãã¯ãã§ãã)ïŒ 2017幎ãããããç¹ã«æ¥æ¬ã®çµç¹ã®èŠæš¡ã¯æ¥æ¿ã«æ¡å€§ãå§ããŸãïŒçµç¹ã®æ¡å€§ã«ããåäžã®å·šå€§ãªã³ãŒãããŒã¹ã«å€ãã®äººãåæã«éçºãè¡ãããšãå°é£ã«ãªãïŒãŸãäžéšã®æ©èœã®ãã°ã§ãµãŒãã¹å
šäœã«éå®³ãæ³¢åããäºãå€ãçºçããŸããïŒå ããŠã»ãšãã©ã®ã·ã¹ãã ããªã³ãã¬äžã«æ§ç¯ãããŠããïŒãã®éçšãæ¡åŒµãããã«ããã¯ã«ãªã£ãŠããŸããïŒãã®ãããªåé¡ã解決ããããã«Microservicesã¢ãŒããã¯ãã£ç§»è¡ãšã¯ã©ãŠãç§»è¡ (ããã«äŒŽãDevOpsåãžã®ç§»è¡) ãéå§ããŸãïŒç§èªèº«ãå
¥ç€Ÿããã®ã¯ãã®çŽåã§ïŒç§»è¡ãããžã§ã¯ãã®æšé²ãšMicroserviceséçºã®åºç€ãããŒã«ãæŽãã Platform EngineeringããŒã ã®ç«ã¡äžããšæ¡å€§ ãæ
ã£ãŠããŸããïŒ Microservicesã¢ãŒããã¯ãã£ç§»è¡ã®ã¢ãããŒããšããŠã¯ Stranglerãã¿ãŒã³ ãæ¡çšããŸããïŒããã¯æ¢åã®ã·ã¹ãã ã®å段ã«Gatewayã眮ãïŒãã®Gatewayã軞ã«ãã©ãã£ãã¯ãåŸã
ã«æ°ããã·ã¹ãã ã«ç§»è¡ããŠãããšããæ¹éã§ãïŒããå
·äœçã«ã¯ïŒ(1) æ¢åã·ã¹ãã ã«å®è£
ãããŠããæ©èœçŸ€ãMicroservicesãšããŠåãåºã (2) Gatewayãããã®æ©èœã®å©çšãã©ãã£ãã¯ãåŸã
ã«MicroservicesåŽã«æµãïŒãç¹°ãè¿ãããšã§æ®µéçã«æ°ã·ã¹ãã ã«ç§»è¡ããŠããã¢ãããŒãã§ãïŒç§»è¡éå§ããæ°å¹ŽãçµéããŸãããïŒå€ãã®æ©èœãMonolithããåãåºãïŒãŸããã®äžã§æ°ããæ©èœãéçºããŠããŸããïŒãŸãã»ãŒå
šãŠã®ãµãŒãã¹ã®ã¯ã©ãŠãç§»è¡ãå®äºããŠããŸã (ãµãŒãã¹æ°ã§ãããš100ãè¶
ããŠããŸã)ïŒ Microserviceså以éã§ã¯æ¥æ¬ã§ã¯ã¡ã€ã³ãšãªãC2CããŒã±ãããã¬ã€ã¹äºæ¥ã«å ããŠè€æ°ã®æ°èŠäºæ¥ã®ç«ã¡äžããå§ãŸãããšã«ãªããŸãïŒãã£ã³ããã¯äºæ¥ã®ã¡ã«ãã€ïŒæå·è³ç£ã®ã¡ã«ã³ã€ã³ïŒB2Cäºæ¥ã®ã¡ã«ã«ãªShopsïŒãããŠã¹ãããã€ããµãŒãã¹äºæ¥ã®ã¡ã«ã«ãªããã§ãïŒã¡ã«ãã€ã¯ã¡ã«ã«ãªã®æ±ºæžã·ã¹ãã ãåãåºããŠããïŒMicroservicesã¢ãŒããã¯ãã£ãšããŠC2Cãšåãã€ã³ãã©åºç€äžã«æ§ç¯ããŠããŸãïŒã¡ã«ã³ã€ã³ã¯ã»ãã¥ãªãã£ã®ããã«ã€ã³ãã©ã¯å€§ããåé¢ããŠããŸããïŒåºæ¬çã«ã¯åæ§ã®ã¢ãŒããã¯ãã£ãã¿ãŒã³ã§éçºããŠããŸãïŒShopsã¯Microservicesã¢ãŒããã¯ãã£ã§ããC2Cãšã¯åãé¢ããç¬ç«ããã·ã¹ãã ã«ãªã£ãŠããŸã (ã¢ãã€ã«ã¢ããªãšããŠã¯äžã€ã§ããïŒè£åŽã®ããã¯ãšã³ãã¯åé¢ããŠããŸã)ïŒ ãã®æ°å¹Žã«æž¡ãMicroservicesç§»è¡ãšè€æ°äºæ¥ã®ç«ã¡äžãã«åãããŠæšé²ããŠããã®ã¯å
±éåºç€ã®æŽåã§ãïŒèªåããªãŒãããŠããPlatform Engineeringã®ã¬ã€ã€ãŒãšããŠã®éçºåºç€ãããŒã«ã ãã§ã¯ãªãïŒ IDåºç€ ã æ±ºæžåºç€ ïŒããŒã±ãã£ã³ã°åºç€ã®ãããªè€æ°äºæ¥ã«ãŸããã£ãŠå©çšã§ããåºç€ãéçºããŠããŸããïŒãããã嵿¥ä»¥æ¥ã¡ã«ã«ãªã®ããã¯ãšã³ãã·ã¹ãã ã®å€é·ã§ãïŒ æ¢åã·ã¹ãã ã®èª²é¡ 2025幎ã®çŸåšïŒæ¢åã®ã·ã¹ãã ã俯ç°ãããšãã«ããã€ãã®æ§é çãªèª²é¡ãæ±ããŠããŸãïŒ æã倧ããªåé¡ã¯ïŒC2CããŒã±ãããã¬ã€ã¹ãšããŠéèŠãªæ©èœãMonolithåºç€ã«æ®ã£ãŠãããšããç¹ã§ãïŒStranglerãã¿ãŒã³ãšããŠããã€ãã®æ©èœãMicroserviceãšããŠæãåºãããšã¯ã§ããŠã¯ããŸããïŒãã®æ¹åŒã¯Proxyçã«äžç©ã®æ©èœãæãåºãã«æ¢ãŸãããŒã¿ç§»è¡ãŸã§é²ãŸãªãã£ãéšåãå€ããããŸãïŒç¹ã«ããã©ã³ã¶ã¯ã·ã§ã³ç®¡çããé
éããšãã£ãæ©èœãMonolithãšãã®DBããæãåºãããšãã§ããŠããŸããïŒãããã¯ããžãã¯ãšããŠå¯çµåã匷ãããŸãåé¢ãé²ããããªãã£ããšããã®ã倧ããªçç±ã§ãïŒãã®ããMonolithãžã®åŒ·ãäŸåãæªã ã«æ®ã£ãŠããŸãïŒãã®éšåã¯ä»ã§ãå€ãã®éçºãšå€æŽãå¿
èŠãªäžæ¹ã§è€éãªã³ãŒãããŒã¹äžã«æ®ã£ãŠãããã«ïŒæ¥æ¬äºæ¥ã®ç¶ç¶çãªæ¹åã«ãããŠãæ©æ¥ãªå¯ŸåŠãå¿
èŠã§ãïŒMicroservicesç§»è¡ã®åæããé¢ãã£ãŠãã人éãšããŠã¯ïŒãã®éèŠéšã«åæããæãŸãªãã£ãã®ã¯å€§ããªåçã§ãïŒ ã°ããŒãã«å±éãèŠæ®ããŠãããã¯å€§ããªèª²é¡ã«ãªããŸãïŒMonolithã«æ®ããã©ã³ã¶ã¯ã·ã§ã³ç®¡çãšé
éã·ã¹ãã ã¯æ¥æ¬åžå Žã«ç¹åããèšèšã«ãªã£ãŠããŸãïŒãã©ã³ã¶ã¯ã·ã§ã³ç®¡çã¯æ¥æ¬åã®ã¿ãåæãšããŠããïŒè€æ°é貚ã§ã®ååŒïŒçºæ¿åŠçïŒååœç°ãªãçšå¶ãžã®å¯Ÿå¿ã远å ããããšã¯éåžžã«ã³ã¹ãã¯é«ãã§ãïŒé
éã·ã¹ãã ãæ¥æ¬åœå
ã®é
鿥è
ã®ã·ã¹ãã ãšå¯çµåããŠããïŒååœã®ããŒã«ã«é
鿥è
ïŒç°ãªãé
éãªãã·ã§ã³ãžã®å¯Ÿå¿ã¯æ ¹æ¬çãªäœãçŽããªãã«ã¯å®çŸã¯é£ãããªã£ãŠããŸããïŒ ãŸãïŒC2CããŒã±ãããã¬ã€ã¹ãšB2C Shopsã®ã·ã¹ãã ä¹é¢åé¡ããããŸãïŒçŸç¶ã¯å¥ã
ã®ãã©ã³ã¶ã¯ã·ã§ã³ïŒé
éã·ã¹ãã ããããããæã£ãŠããã ãã§ãªãïŒãããã¯ãã®ç®¡çãåãããŠããïŒçµæãšããŠæ¥æ¬ã®ã客ããŸã«å¯ŸããŠãçµ±äžçãªäœéšãæäŸã§ããŠããŸããïŒããã¯ïŒããšããšã®ããžã§ã³ãšããŠç¬ç«ãããµãŒãã¹ãèæ
®ãããŠããããšïŒæ¹åæ§ãå€ããçµ±åããããšæã£ãŠãäžã®Monolithåé¡ã«ããå®è¡ãé£ããã£ãããšãåå ãšããŠæããããŸãïŒ Microservicesã¢ãŒããã¯ãã£èªäœã«ã課é¡ããããŸãïŒåãµãŒãã¹ã®ãªãŒããŒã·ãããšèªç±åºŠãéèŠãïŒãµãŒãã¹éã§ååãªæœè±¡åãè¡ããŠããªãã£ãããšïŒé©åãªãã¡ã€ã³åé¢ãè¡ããŠãããåå²ã®åäœãéåžžã«å°ããããŠããŸã£ãããšãåå ã§ïŒå€ãã®å°ããªïŒäœãæ¹ã埮åŠã«ç°ãªãMicroservicesãæ°å€ãæ§ç¯ãããŠããŸããŸããïŒãã®ããMicroservicesã®éçšã®ã³ã¹ããéåžžã«é«ããªã£ãŠããŸã£ãŠããŸãïŒã¡ã«ã«ãªã¯ã¹ããŒãæãæã£ãŠç©äºãé²ããããçµç¹å€æŽãé »ç¹ã«è¡ããŸããïŒãã®ãã³ã«Microservicesã®ãªãŒããŒã·ããã®ç§»ç®¡ãå¿
èŠã«ãªãïŒå®è£
ã®å·®ç°ã«ãããªã³ããŒãã®ã³ã¹ããé«ããªã£ãŠããŸãïŒ ãããã®å¶çŽã«ããïŒæ¢åã·ã¹ãã ã®å»¶é·ç·äžã§ã°ããŒãã«å±éãé²ããããšã¯ïŒæè¡çã«ãããžãã¹çã«ãéçãããããšãæç¢ºã«ãªããŸããïŒ ã°ããŒãã«åºç€ã®æ¹åæ§ ãã®ãããªå€é·ãšçŸç¶ã®èª²é¡ãããŒã¹ã«ã°ããŒãã«åºç€ã®éçºæ¹éãšããŠããã€ãã®ã¢ãããŒããèæ
®ããŸããïŒãŸãïŒéå»ã®ã¢ã¡ãªã«å±éã®ããã«ãã©ãŒã¯ãšããéžæè¢ãåãããšã¯éåžžã«é£ãããªã£ãŠããŸãïŒMicroservicesåãããå€ãã®ã·ã¹ãã ãè€è£œããŠããã®ã¯çŸå®çã§ã¯ãããŸããïŒå
šãŠããŒãããåæ§ç¯ããããšãèããŸãããïŒãããã³ã¹ããšå¹çã®èгç¹ããéžæè¢ããå€ããŸããïŒçµè«ãšããŠãæ¢åã®ã·ã¹ãã ã®æ¡åŒµãšåæ§ç¯ã®ãã€ããªãããªã¢ãããŒãããéžæããŠããŸãïŒ ãã®ã¢ãããŒãã§ã¯ïŒã©ããŸã§ãæ¡åŒµãšãïŒã©ããŸã§ãåæ§ç¯ããã? ã®ã©ã€ã³ã決ããã®ãéèŠã§ããïŒæ¢åã®ã·ã¹ãã ã®å€ãã¯æ¥æ¬ã®åžå Žã«ç¹åãããã®ã«ãªã£ãŠããïŒãŸãå€ãã®ãµãŒãã¹ãMicroservicesåãããŠããŸãïŒãããå
šãŠãæ¡åŒµããŠããã®ã¯çŸå®çã§ã¯ãããŸãããïŒæ¥æ¬äºæ¥ã¯åŒãç¶ãéèŠã§ããããïŒã°ããŒãã«å±éã¯ããããç¬ç«ããŠé²ããããããšãéèŠã§ããïŒãŸãæªã æ®ãMonolithã«ã°ããŒãã«ããäŸåããããšãé¿ããããšããåŒ·ãæ°æã¡ããããŸããïŒ ãæ¡åŒµããšããŠã¯è€æ°äºæ¥ã®ç«ã¡äžããšãšãã«çºå±ããå
±éåºç€ãäž»ã«æŽ»çšããããšã«ããŸããïŒç¹ã«åŒ·ãå°éæ§ãæ±ããããïŒãããŠæ¡åŒµæ§ãèæ
®ããŠèšèšãããŠããµãŒãã¹ãéžå®ããŠããŸãïŒä»¥äžã§è©³ããè¿°ã¹ãŸããMicroservicesããã®è±åŽãåæã«èããŠããïŒå°ããªçްããªãµãŒãã¹ã«ã¯äŸåããã®ã§ã¯ãªãïŒååãªå€§ãããã€ç¬ç«ããããã¡ã€ã³ã(SaaSãšããŠçœ®ãæããããã¬ãã«) ã«äŸåããããšã決ããŸããïŒãã®åºæºã«ããïŒäŸãã°ïŒIDåºç€ã¯ã°ããŒãã«ã§å
±éã«ïŒãŸã決æžåºç€ã¯ã¡ã«ãã€åºç€ãéããŠStripeã«æ¥ç¶ãã°ããŒãã«ã®é貚ãããŒã«ã«ã®æ±ºæžææ®µã«å¯Ÿå¿ããŠããïŒãšãã£ãããšãé²ããŠããŸãïŒä»ã«ãæ€çŽ¢åºç€ïŒããŒã±ãã£ã³ã°åºç€ãªã©ãæ¢åã®ã·ã¹ãã ãæ¡åŒµããããšã§æŽ»çšããŠããŸãïŒ ãã以å€ã®éšåã¯ãåæ§ç¯ãã®éžæè¢ããšã£ãŠããŸãïŒç¹ã«äžè¿°ããC2CãµãŒãã¹ãšããŠã®ããã©ã³ã¶ã¯ã·ã§ã³ç®¡çããé
éããã¢ã€ãã ã»ãããã¯ã管çãã¯äœãçŽããããããŸããã§ããïŒæ¥æ¬ãšåãåé¡ãé¿ããããã«ïŒ(1) ãããããçã«é·æçãªæ¡åŒµæ§ã容æã«ãã (2) CãšBã®ååãåçã«æ±ãïŒçµ±äžããUI/UXãæäŸããããšãã§ããããšãèæ
®ãïŒãŸãè€æ°ã«åœå±éãå¥ã®åœã«ãããŠæ°ããªããŒã«ã«ããŒã±ãããã¬ã€ã¹ãå®çŸã§ããããã«ããããã« (3) ååœã®é貚ïŒèšèªïŒçšå¶ã»é¢çšïŒæ³èŠå¶ã«æè»ã«å¯Ÿå¿ã§ãã (è€æ°ã§ããããšãåæã«ããïŒä»¥äžã®Tenetsãåç
§) (4) æ¥æ¬ä»¥å€ã®åœã®ååãé
éææ®µãæ±ãããšã«ãªã£ãŠã察å¿ã§ããããã«ããïŒãåæãšããŠæ§ç¯ããŠããŸãïŒ ãŸãåã«äœãçŽãã ãã§ã¯ãŸãæ°ããªå¥åºç€ãèªçããã ãã§ãïŒåæã¯ã°ããŒãã«ã§ã®æåãã¡ã€ã³ãšãã€ã€ãïŒæçµçã«ã¯æ¥æ¬ã®C2CãšB2Cã®åºç€ã眮ãæããŠããïŒãšããæ³å®ã§åãå§ããŠããŸã (å®éã«ãªãªãŒã¹ãŸã§éæããã®ã§ãã®åºç€ãæ¥æ¬ã§ã掻çšããŠããããã®ãããžã§ã¯ããå§åããŠããŸã)ïŒ ã¢ãã€ã«ã¢ããªãšWebã«é¢ããŠãã°ããŒãã«ã§ã¯ç°ãªãUI/UXã¯å¿
é ãªã®ã§äœãçŽãã®éžæã«ãªã£ãŠããŸãïŒå ããŠããã¯ãšã³ããå·æ°ããããšã§APIèªäœãåãæ¿ããããšãã§ãïŒå®è£
èªäœãããè¯ãã§ããŸãïŒ MicroservicesããModular Monolithãž äžè¿°ããMicroservicesã¢ãŒããã¯ãã£ã®æ±ãã課é¡ã«åãçµããããåæ§ç¯ãããããã¯ãšã³ãåºç€ã¯Modular monolithã¢ãŒããã¯ãã£ãšããŠéçºããŠããŸãïŒ Microservicesã®èª²é¡ ã¡ã«ã«ãªã«ãããŠMicroservicesã¢ãŒããã¯ãã£ã®éçšã³ã¹ããé«ããªã£ãŠããŸã£ã倧ããªçç±ã¯ïŒåãµãŒãã¹ã®éçºã®èªç±åºŠãé«ããŠããŸã£ããšããã«ãããŸãïŒãµãŒããŒå®è£
ã¯Goã§ïŒããŒã¿ããŒã¹ãšããŠSpanner/CloudSQL (MySQL)ïŒã€ã³ãã©ãšããŠKubernetesãå©çšããïŒãšããæäœéã®æè¡ã¹ã¿ãã¯ã®çµ±äžã¯é²ããŠããŸããïŒäžæ¹ã§ïŒã¬ããžããªæŠç¥ã¯Polyrepo (1ãµãŒãã¹ = 1 GitHub ã¬ããžããª)ãšããŠïŒåºæºãšãªããã³ãã¬ãŒããæäœéã®å
±éã©ã€ãã©ãªã¯ããã©ïŒã¬ããžããªã®æ§æãå®è£
æ¹éã¯åããŒã ã«å§ãã圢ã«ãªã£ãŠããŸããïŒãã®ããïŒãã¯ãã§èŠããšåãGoã®Microservicesã§ããïŒãã¯ãã§ã¿ããšããªãç°ãªããµãŒãã¹ãéç£ãããŸããïŒäžã€äžã€ã®ãµãŒãã¹ã®éçšã®ã³ã¹ãã¯å°ãããŠãïŒç°ãªããµãŒãã¹ãè€æ°é¢åèŠãå¿
èŠããããšãã®å·®ç°ã«ããå
±éåãã§ããïŒã³ã¹ããé«ããªããšããããšãèµ·ãã£ãŠããŸãïŒ ããã«å ããŠã¡ã«ã«ãªã¯ãšã«ããã¹ããŒãæãæã£ãŠç©äºãé²ãæ¹åæ§ã転æããŠããããçµç¹å€æŽãé »ç¹ã«è¡ããŸãïŒãã®ããMicroservicesã®ãªãŒããŒã·ããã®ç§»ç®¡ãé »ç¹ã«è¡ãå¿
èŠããããŸãïŒç§»ç®¡ã®ãã³ã«ãªã³ããŒããå¿
èŠã§ããå®è£
ã®å·®ç°ã«ãããã®ã³ã¹ããé«ããªããŸãïŒãŸãå
±éåãé²ããã®ãé£ããã§ãïŒ ãŸãç¹ã«Monolithããç§»è¡ãé²ããC2CåŽã¯ãã¡ã€ã³ã®é©åãªåé¢ãã§ããŠããªããšãããå€ãïŒãµãŒãã¹ã®åé床ãäœããšãããå€ããããŸãïŒããã«ããæ©èœè¿œå ã®ããã«è€æ°ã®ãµãŒãã¹ïŒããŒã ã«è·šã£ã倿Žãå¿
èŠã«ãªãïŒã³ãã¥ãã±ãŒã·ã§ã³ã³ã¹ãã®å¢å€§ã«ãç¹ãã£ãŠããŸãïŒãµãŒãã¹ããšã®ãªãŒããŒã·ããã匷åãããšããæ¹åæ§ã¯éã«å€ããã®å€æŽãåãå
¥ãã«ãããããšããããšã«ãç¹ãã£ãŠããŸãïŒ ãã®ãããªèª²é¡ã«å¯ŸããŠäžæãMicroservicesã¢ãŒããã¯ãã£ã«ããå®è£
ãé²ããã®ã ã¡ã«ã«ãªShopsã«ããMonorepoã䜿ã£ãã¢ãããŒã ã§ãïŒãã®æ¹åŒã§ã¯Shopsã«é¢ããå
šãŠã®Microservicesã1ã€ã®Repoã«ãŸãšãïŒãµãŒãã¹éã®å®è£
ãæœè±¡åã»çµ±äžåãããšããããšãå®çŸããŠããïŒè€æ°ãµãŒãã¹ã«ããéçšã®ã³ã¹ããåæžããŠããŸãïŒéçºäœéšãšããŠã¯Monolithçã«ïŒè£ã§ã¯ãµãŒãã¹ãåé¢ãããŠãããã€ããã(ããã«ããèé害æ§ã®ã¡ãªãããåŸããã)ïŒãšããäž¡æ¹ã®è¯ãéšåãåãå
¥ããããšãã§ããŠããŸãïŒ äžæ¹ã§ãã®ã¢ãããŒãã§ãã£ãŠã課é¡ã¯ãããŸãïŒããããMonorepoã®ããã®ã€ã³ãã©ãèªååã®ä»çµã¿ã管çç¶æããŠããã®ã¯éåžžã«ã³ã¹ããé«ãã§ã (æ¢åã®Platformãšå€§ããåããŠæ§ç¯ãããããå
±éåºç€ããŒã ãšã®é£æºãé£ãããªã£ãŠããããšãåå ãšããŠæããããŸã)ïŒããããMicroservicesã®ãã¹ãïŒãããã€ïŒéçºç°å¢ã®æ§ç¯ã¯è€éã«ãªããããåŸãŸããïŒäŸãã°ãã¹ãç°å¢ã¯å
šéšã®ãµãŒãã¹ãPRããšã«è€è£œãããšããå¯è±ªçãªã¢ãããŒãããšã£ãŠããŸãïŒãŸããµãŒãã¹ããšã«DBãåãããªã©ãå³å¯ã«è¡ãªã£ãŠããïŒã€ã³ãã©ã®ã³ã¹ããé«ããªã£ãŠããŸã£ãŠããŸãïŒ Modular Monolith ãã®ãããªèæ¯ãããïŒæ°ããåºç€ã®æ§ç¯ã«ã¯Modular monolithã¢ãŒããã¯ãã£ãŒãéžæããŠããŸãïŒåãªãModular monolithã§ã¯ãªãç¹å®ã®Moduleãå¿
èŠãšããã°ç¬ç«ããŠãããã€å¯èœãªåœ¢ã«ããŠããŸã (Service Weaverã®ã³ã³ã»ããã«è¿ã)ïŒ åæã®ã¡ã«ã«ãªã®Monolithã§ã¯é©åãªãã¡ã€ã³åé¢ã»ã¢ãžã¥ãŒã«åé¢ãã§ããªãã£ãããã«ã³ãŒãã®å¯çµåãšããã«ããè€éåãçºçãããšæã£ãŠããŸãïŒãµãŒãã¹ã®å¢çïŒäŸåé¢ä¿ãã¢ãžã¥ãŒã«ããšã«æç¢ºã«æŽçããããšã§åæ§ã®åé¡ã«åœãããªãããã«ããŠããŸãïŒMicroservicesã®ããã«çްããåé¢ããããããšã§è€éã«ãªãã®ãé¿ãïŒååã«æ©èœãåçž®ãããã¢ãžã¥ãŒã«ãäœãããã«ããŠããŸãïŒãŸãå¿
èŠãªãšãã«ç¬ç«ãããããã€ãå¯èœã«ããããšã§Microservicesçãªèé害æ§ã®å©ç¹ãå¯èœã«ããŠããŸãïŒ åæã®éçºãã§ãŒãºã§ã¯äººæ°ãå€ããªãã®ã§åºæ¬ã¯ç¹å®ã®ã¢ãžã¥ãŒã«ã«ãªãŒããŒã·ãããéå®ããããšã¯ããŠããŸãã (ãã¡ããç¹å®ã®é åã«åŒ·ã人ã¯ãã)ïŒçãã³ãŒãããŒã¹å
šäœã«ãªãŒããŒã·ãããæã£ãŠãããããã«ããŠããŸãïŒããã«ããïŒãããã¯ãéçºã®åªå
床ã«ãã£ãŠã¢ãžã¥ãŒã«ã®ã¢ãµã€ã³ãåçã«æ±ºãŸãïŒMicroservicesã§çºçããç¡é§ãªã³ãã¥ãã±ãŒã·ã§ã³èª¿æŽã³ã¹ãããªãããŠããŸãïŒäžæ¹ã§ïŒä»åŸçµç¹ãæ¡å€§ãããšããŠãïŒã¢ãžã¥ãŒã«åäœã§ã®ã¢ãµã€ã³ã¯å¯èœã§ããïŒãã€ãŠã®Monolithã§ããã£ãåé¡ã解決ã§ããäœå°ããããŸãïŒ Monolithã§ããããšã§ïŒã¯ã³ãã€ããªã«ããããŒã«ã«éçºç°å¢ã®æ§ç¯ã¯å®¹æã«ãªãïŒãŸããã¹ãããããã€ãã·ã³ãã«ã«ãªãïŒMicroservicesã«ãã£ãŠçããŠããéçºè² è·ããªããããšã§ããè¯ãéçºäœéšãäœããŠããŸãïŒã€ã³ãã©ãCI/CDåºç€ãPlatform EngineeringããŒã ãæäŸãããã®ããã®ãŸãŸäœ¿ãããšãã§ãïŒShopsã®Monorepoã¢ãããŒãã§é¥ã£ãåºç€éçšã³ã¹ããæããããšãã§ããŠããŸã (ããè©³çŽ°ã¯æ¬¡ã®ãã¹ãã§ @yanolabãã玹ä»ããŸã)ïŒ äžæ¹ã§ãã®æ¹éã¯çµç¹å
šäœã®äžã§ã¯æ°ããïŒæ¢åã®Microservicesã¢ãããŒããšã©ãå
±åããŠããããšãã課é¡ããããŸãïŒçŸå®çã«äžåºŠåé¢ããMicroservicesãå
šãŠMonolithãžãšæ»ããŠããããšã¯ç°¡åã§ã¯ãããŸããïŒãã®ããMicroservicesèªäœã¯ä»åŸãæ®ãããšã«ãªããšæããŸãïŒMicroserviceséçºãšéçšã®ã³ã¹ããæžãããŠããããã«ïŒãµãŒãã¹ã®åå²åäœãããé©åãªã¬ãã«ã«åãããŠããããšãïŒããã«èšãã°Shopsã§å®çŸãããããªMonorepoã¢ãããŒãã«ããçµ±äžåãé«ããŠããããšãéèŠã ãšæã£ãŠããŸãïŒãããŠå°æ¥çãªæ°èŠäºæ¥ã§ããããMicroservicesã¢ãŒããã¯ãã£ãŒãåæã§éžæããããšã¯ïŒç¹å¥ãªçç±ããªãéãã¯ïŒããªãæ¹ããããšæã£ãŠããŸãïŒãã®ã°ããŒãã«åºç€ã®Modular monolithæ§ç¯ãã¿ãŒã³ã暪ã«å±éãïŒå®è£
ãã¿ãŒã³ãå
±éåããŠããããšãèããŠããŸãïŒ æè¡ã¹ã¿ã㯠以äžã¯ãã®åºç€ã®æ§ç¯ã«å©çšããŠããæè¡ã¹ã¿ãã¯ã®äžèЧã«ãªããŸãïŒåºæ¬çã«ã¯ã¡ã«ã«ãªããããŸã§å¹ã£ãŠããã¹ã¿ãã¯ãåæã«å€§ããå€ããªãã§ããããããŸã掻çšããããã«ããŠããŸãïŒ ã€ã³ãã©: åŒãç¶ãã¡ã€ã³ã®ã¯ã©ãŠãã«ã¯Google Cloudãæ¡çšããŠããŸãïŒã¡ã€ã³ã®ãªãŒãžã§ã³ã¯æ±äº¬ã䜿ã£ãŠããŸããïŒå°æ¥çã«ã¯(ç¹ã«ããã©ãŒãã³ã¹ã®èгç¹ãã) å¥ã®ãªãŒãžã§ã³ãå©çšããå¯èœæ§ãèæ
®ããŠããŸãïŒã¢ããªã±ãŒã·ã§ã³ã®å®è¡åºç€ã«ã¯Platform EngineeringããŒã ã管çããKubernetes (GKE) ãå©çšããŠããŸãïŒ ããŒã¿ããŒã¹: ããŒã¿ããŒã¹ã«ã¯AlloyDBãéžæããŸããïŒãããŸã§ã¯ã¡ã«ãã€ãäžå¿ã«Spannerãéžå®ããŠããŸãããïŒ (1) é·æçãªå±éãèæ
®ããæã«Google Cloud å
šãŠã§æ
ããªãå¯èœæ§ãèæ
®ãïŒãªãã¹ãããã¯ã€ã³ãé¿ããããš (2) PostgreSQLã«ããããè¯ãéçºäœéšãšã³ã·ã¹ãã ãå©çšããããšïŒãèæ
®ããŠAlloyDBãéžå®ããŸããïŒä»ã«ãCockroachDBãèããŠããïŒä»åŸã®å±éã«ãã£ãŠã¯ä¹ãæããèæ
®ããå¯èœæ§ããããŸã èšèªã»ãã¬ãŒã ã¯ãŒã¯: ãµãŒããŒã¯GoïŒiOSã¯SwiftïŒAndroidã¯KotlinïŒWebã¯Next.js (TypeScript)ãšããŠããŸãïŒããã¯å€§ããå€ããŠããŸãã Monorepo: ãã詳现ã¯å¥ã®ããã°ããã®ããšæžãããŸããïŒiOS, AndroidïŒWebã¯ããããæ¥æ¬ã®ãµãŒãã¹ã®ã¬ããžããªãMonorepoãšããŠæ¡åŒµããããšã§éçºãããŠããŸãïŒæ¥æ¬ãšã°ããŒãã«ã§å
±æå¯èœãªã¢ãžã¥ãŒã«ãåãåºãïŒCI/CDãå
±éåããããšã§ïŒéçºãšéçšã®å¹çåãããŠããŸãïŒ Tenets ãã®æ°ããªåºç€ãšã¢ããªã®éçºã«ã¯æ¥æ¬ã®ã¿ã§ã¯ãªãã€ã³ãæ ç¹ã®ã¡ã³ããŒãå«ããŠå€ããåå ããŠããŸãïŒããŸããŸãªèæ¯ã®ã¡ã³ããŒãåå ããŠãïŒãããŸã§äžã§ç޹ä»ããŠãããããªæ¹åæ§ãå®çŸããã«ã¯ïŒçãåçã®æéã«ãããã£ãŠæææ±ºå®ãè¡ããããšãéèŠã§ãïŒ ãããå®çŸããããã«ãGlobal Engineering Tenetsããçå®ããŸããïŒTenetsã¯Amazonã® Tenets: supercharging decision-making ãåèã«ããŠããŸãïŒ äž»ãªTenetsãããã€ã玹ä»ããŸã: Design for two : ãœãããŠã§ã¢éçºã«ãããŠããæ©èœã®ãµããŒãã1ãã2ã«å¢ãããããïŒ2ãã3ã«å¢ããæ¹ã容æã§ããããšã¯å®æãšããŠããããšæããŸãïŒäŸãã°ïŒã¢ããªã±ãŒã·ã§ã³ãæ¢ã«2ã€ã®èšèªããµããŒãããŠããå ŽåïŒ3ã€ç®ã®èšèªã远å ããã®ã¯ç°¡åã§ãïŒäžæ¹ãã¢ããªã±ãŒã·ã§ã³ã1ã€ã®èšèªãããµããŒãããŠããªãå Žåã2ã€ç®ã®èšèªã远å ããã«ã¯i18nã®ä»çµã¿ãªã©å€ãã®æºåãå¿
èŠã«ãªããŸãïŒããã¯ã°ããŒãã«å±éã«ãããŠãåæ§ã®ããšãèšããŸãïŒæ¢ã«è€æ°åœã»å°åã«å¯Ÿå¿ããŠããåºç€ã«æ°èŠã®å°åãåœã远å ããã®ã¯ãåäžå°å/åœåãã®ã¢ããªã±ãŒã·ã§ã³ãæ¡åŒµãããããã¯ããã«å®¹æã§ãïŒæ©èœãã·ã¹ãã èšèšã«ãããŠã¯åžžã«2ã«åœã»å°å以äžãæ³å®ããããã«ããŠããŸãïŒ Global by default but enable localization : ã°ããŒãã«å©çšã«åããã·ã¹ãã éçºãé²ããäžæ¹ã§ïŒåã«è€æ°åœãžäºæ¥ãæ¡å€§ããã ãã§ãªãïŒäž»èŠåžå Žã§ã¯ããŒã«ã©ã€ãŒãŒã·ã§ã³æœçã宿œããŸãïŒãã®ããïŒã·ã¹ãã ã¯è€æ°ã®åœã
ãžè¿
éãã€å®¹æã«æ¡åŒµã§ãã€ã€ïŒãã€ç¹å®ã®åœã®èŠä»¶ããµããŒãããæè»æ§ãèæ
®ããå¿
èŠããããŸãïŒé·æçã«ã¯ããŒã«ã©ã€ãŒãŒã·ã§ã³ã®ããçŸå°ã«ãšã³ãžãã¢ãªã³ã°ããŒã ãèšçœ®ããå¯èœæ§ãããïŒåœŒããç¬ç«ããŠããŒã«ã©ã€ãºæ©èœãéçºã§ããããã«ããå¿
èŠããããŸãïŒ Learn and unlearn from the past experience: ä»åæ°èŠã§ãåæ§ç¯ãããéšåãå€ããããŸãïŒãã ãïŒããã¯å®å
šã«æ°èŠã§ããã¹ãã§ã¯ãªãïŒäžã§ç޹ä»ãããããªéå»ã®åŠã³ãéèŠãªè³ç£ãšããŠæŽ»çšããã¹ãã§ãïŒèªåã¯æŠèŠã説æããŸãããïŒããããã®é åïŒã¢ãã€ã«éçºïŒWebéçºïŒãããã¯ãéçºãªã©ããŸããŸãªé åã§èŠçŽãã¹ã課é¡ããããŸãïŒæ°ããæ¡çšããã¡ã³ããŒã«é¢ããŠããããã®æŽ»çšã¯åŒ·ããé¡ãããŸããïŒ Keep each country’s business isolated : æ¢åã®åºç€ããã©ãããã©ãŒã ãæŽ»çšããå Žåã§ããçžäºã«åœ±é¿ãäžããªãããã«ãã¹ãã§ãïŒäŸãã°ïŒã°ããŒãã«ã§çºçãããã°ãã€ã³ã·ãã³ããæ¥æ¬ã®äºæ¥ã«åœ±é¿ãäžãããïŒãã®éãçããããšãé¿ããå¿
èŠããããŸãïŒ ãããã¯ãã¶ã€ã³ããã¥ã¡ã³ããæžãæãªã©å€ãã®å Žé¢ã§æéãšããŠå©çšãããŠããŸã (ç¹ã«Design for Twoã¯åæã§èšããã)ïŒãã¡ããïŒå€ãã®äººãåå ããŠãïŒé·æçãªãããžã§ã¯ããã§ãã以äžã¯çްããªéšåã§ã¯ãºã¬ã¯çºçããŠããŸããïŒå€§ããªæ¹åæ§ãšããŠã¯çãåãæ¹åãåããã®ã§ã¯ãªãããšæã£ãŠããŸãïŒ ä»åŸã®å±æ ä»åã®ãªãªãŒã¹ã§ã¯åºæ¬ãšãªãæ©èœã®å®è£
ãå®äºããç¶æ
ã§ãïŒä»åŸã¯ãã®äžã«è¶å¢ååŒã«ãšã£ãŠéèŠã«ãªãæ©èœïŒäŸãã°äºæ¥è
ååã®äºçŽè²©å£²æ©èœãé宿©èœïŒãªã©ãå®è£
ãã€ã€ïŒå±éåœãã©ãã©ãå¢ãããŠããããšãç®æšãšããŠããŸãïŒæšªå±éã ãã§ã¯ãªãïŒç¹å®ã®åœãžã®ããŒã«ã©ã€ãºãšã°ããŒã¹ãè¡ã£ãŠããå¿
èŠãããïŒããã«åºç€ã掻çšããŠãããã§ãŒãºã«ãªããŸãïŒãŸãäžã§ç޹ä»ããããã«åºç€èªäœã¯æ¥æ¬ã§ã䜿ããããšãæ³å®ããŠããïŒãã®çœ®ãæãã®ãããžã§ã¯ããå§ããŠããŸãïŒããã«ãããããŸã§æ±ããŠããæè¡çãªè² åµãåæã«è¿æžããŠããããšãèããŠããŸãïŒ mercari Gears 2025 2025幎11æ13æ¥ã«ãå®ã«7幎ã¶ããšãªãã¡ã«ã«ãªã°ã«ãŒãã®ããã¯ã«ã³ãã¡ã¬ã³ã¹ãmercari GEARS 2025ããéå¬ãããŸãïŒ@yanolob ãšãšãã«ãBuilding Foundation for Mercariâs Global Expansionããšé¡ããŠç»å£ããããŸãïŒ ã°ããŒãã«ã¢ããªãéçºããã«ãããããªããã®ã¢ãããŒãã«è³ã£ãã®ãïŒã©ã®ãããªã¢ãŒããã¯ãã£ãå®è£
ã§æ¯ããŠããã®ãïŒçµç¹çãªãã£ã¬ã³ãžãšæè¡ã®äž¡é¢ãã詳ãã玹ä»ããŸãïŒè€æ°ãªãŒãžã§ã³å±éã«ãããéçºã»éçšäžã®ãã£ã¬ã³ãžãïŒçµç¹æšªæã§ã®æææ±ºå®ã®å·¥å€«ã«ã€ããŠãå
±æããŸãïŒ ãã²ïŒã»ãã·ã§ã³ãèãã«æ¥ãŠãã ããïŒ åå ç»é²ã¯ãã¡ã ð https://gears.mercari.com/ ææ¥ã®èšäºã¯ @yanolobããã§ããåŒãç¶ã é£èŒäŒç»ïŒã¡ã«ã«ãªåã®äžçå
±éã¢ããªãã¡ã«ã«ãª ã°ããŒãã«ã¢ããªãã®éçºèå°è£ ããæ¥œãã¿ãã ããã
ããã«ã¡ã¯ãCross Border (XB) Engineeringã® @deeeeet ã§ãã å
æ¥ã2025幎9æ30æ¥ã«è¶å¢ååŒäºæ¥ã®æ°æŠç¥ãçºè¡šããã¡ã«ã«ãªåã®äžçå
±éã¢ããªãã¡ã«ã«ãª ã°ããŒãã«ã¢ããªãïŒä»¥äžãã°ããŒãã«ã¢ããªïŒã®æäŸãéå§ããŸããã ããã§ä»åã¯ãã°ããŒãã«ã¢ããªã®éçºãããžã§ã¯ãã®éçºèå°è£ãã玹ä»ããé£èŒäŒç»ãã¹ã¿ãŒãããããŸãã ãããã¯ã¯ããã¯ãšã³ãéçºã®ã¿ã§ã¯ãªããã¢ãã€ã«éçºãWebéçºãSRE & Enablingãªã©ãªã©å€å²ã«ãããã®ã§ã楜ãã¿ã«ã ãã¡ã«ã«ãª ã°ããŒãã«ã¢ããªãã®æŠèŠã ã¡ã«ã«ãªåãšãªãäžçå
±éã¢ããªã§ã æµ·å€ã®è³Œå
¥è
ã¯ãã°ããŒãã«ã¢ããªããéããŠæ¥æ¬ã®ãã¡ã«ã«ãªããšãã¡ã«ã«ãªShopsãã®ååãé²èЧã»è³Œå
¥ããããšãã§ããŸããèšèªã決æžãè€éãªæç¶ããªã©ã®èª²é¡ãè§£æ¶ãããæµ·å€ã®è³Œå
¥è
ã¯æ¥æ¬ã®ãã¡ã«ã«ãªããšåæ§ããããããã€å®å¿ã»å®å
šã«ãè²·ãç©ã楜ãããŸãã2025幎9æ30æ¥ããå°æ¹Ÿã»éŠæž¯ã§æäŸãéå§ããä»åŸãå±éããåœãå°åãé æ¬¡æ¡å€§ããäºå®ã§ãã å
¬éäºå®è¡š ãã¡ãã¯ãåŸæ¥ãåèšäºãžã®ãªã³ã¯éã«ãªããŸãã Title Author Rebuilding Foundation for Global Expansion @deeeet Behind the Infrastructure Powering Global Expansion @yanolab TBD: Multi-domain strategy with Next.js @gary Order management in GOP @takady TBD: Global search strategy @shinpei The journey of item translation @aymeric Platform ãã SRE ã«è»¢çïŒçŸå Žã®å£°ãèããªããæ¹åããŠããïŒ @hatappi Something about global IdP @gia TBD: GOP Android strategy and execution and all in between @Karthi Mirrord + E2E testing @ryotarai TBD: How we overcome Project management challenges (How to plan a product launch in 6 months) @g-bansal TBD: B items integrations strategies in GOP @ahsun Guest post from FT payment platform â Engineering for Multi-Currency and Multi-Provider Payments @ryuyama TBD @manas TBD @vb TBD: GOP App Release Strategy @manoj readability; backend common packages etc @osari.k Scaling iOS Development: Building and Operating Multiple Apps in a Large-Scale Monorepo @shingt TBD: distributed transactions on checkout flow, specially error handling, retry @ahsun TBD: Framework for handling i18n resources in web modular monorepo @gary TBD: Order (Double Master Data Migration); ItemxTransaction (decoupling using sagas/external locking) @andrei Something about global payment and checkout @huhu TBD: Ops development with AI @waiting.lau Taming Agents in the Mercari Web Monorepo @maxi Sync Saga @Shishir TBD: High output teams @Atif TBD: Ordering Features @Shreyasi TBD @Chong (ãã§ã³) TBD @chris ã²ãšã€ã§ãæ°ã«ãªãèšäºãããæ¹ã¯ããã®èšäºãããã¯ããŒã¯ããŠãããã ãšã³ãžãã¢åãå
¬åŒX ããã©ããŒïŒãã§ãã¯ããŠãã ãããïŒ
ã¯ããã« 2025幎床ã®Build@Mercariã«åå ããã¡ã«ã«ãª ããã®MLããŒã ã§ã€ã³ã¿ãŒã³ãããŠããïŒ Ariaãš@Ririkoã§ããç§ãã¡ã¯ã¡ã«ã«ãª ããã®æ±äººã®ãªã¹ã¯äºæž¬ã«åãçµã¿ãŸããããã®èšäºã§ã¯ãã€ã³ã¿ãŒã³ã§åãçµãã ããšã»ææ³ãªã©ã«ã€ããŠæžããŠãããããšæããŸãïŒ èªå·±çŽ¹ä» ïŒ Aria ããã«ã¡ã¯ïŒå€§åŠïŒå¹Žã®ïŒ Ariaã§ããç§ã¯é«æ ¡çã®æBuild@Mercariã«åå ããå€äŒã¿ã§Buildã€ã³ã¿ãŒã³ãããŠããŸãïŒæ©æ¢°åŠç¿ã»AIã«ã€ããŠåŠãã§ã¿ãããšæããã¡ã«ã«ãªããã®MLã«å¿åããŸããã ïŒ Ririko 倧åŠã®åŠéš3幎ã®@Ririkoã§ãïŒå€§åŠã§ã¯é»åæ
å ±å·¥åŠãå°æ»ããŠããŸããæ¥äŒã¿ã«Build@Mercariã«åå ããŸãããæ©æ¢°åŠç¿ãAIã«ä»¥åããèå³ããããä»åã®Buildã€ã³ã¿ãŒã³ã«å¿åããŸãããæ¬æ Œçã«ã€ã³ã¿ãŒã³ã«åå ããã®ã¯ãããåããŠã§ãã èæ¯ ã¡ã«ã«ãª ããã§ã¯ãæ±äººã®å
容ãé©åãããäžé©åãªè¡šçŸãå«ãŸããŠããªããããªã©ãšãã£ããªã¹ã¯ã®ããæ±äººããªãããå
šä»¶ãã§ãã¯ããŠããŸãã ä»åãç§ãã¡ã¯ãæ§ã
ãªæ©æ¢°åŠç¿ææ³ã§æ±äººã®ãªã¹ã¯äºæž¬ã¢ãã«ãäœæããããããã®ã³ã¹ãã»ç²ŸåºŠã»ç®¡çã®ãããããªã©ã®æ€èšŒãè¡ããŸããã ãã£ãã㚠以äžã®ã¢ãã«ã詊ããã³ã¹ãã»ç²ŸåºŠã»ç®¡çã®ãããããªã©ã®æ¯èŒãè¡ããŸããã çµ±èšã¢ãã« ããžã¹ãã£ãã¯ååž° LightGBM NNã¢ãã« BERT LLM åã¢ãã«ã®æ§ç¯ã«ã€ã㊠æŠèŠ æ±äººã®ãªã¹ã¯äºæž¬ã«ãããŠã¯ãå
šäœæ°ã«å¯ŸããŠãªã¹ã¯ã®ããæ±äººæ°ãå°ãªãã§ããã¢ãã«äœæã®éã«æãéèŠãªããšã¯ãªã¹ã¯ã®ããæ±äººãåãããŒããã«æ€ç¥ããããšã§ããã¢ãã«ã誀ã£ãŠãªã¹ã¯ãããšå€æããæ±äººã®æ°(False Positiveæ°)ãããçšåºŠå¢ããŠããŸã£ãŠã§ããã¢ãã«ã誀ã£ãŠãªã¹ã¯ãªããšå€æããæ±äººã®æ°(False Negativeæ°)ããŒãã«ããããšãéèŠã«ãªããŸãã ãŸããçµ±èšã¢ãã«ããã¥ãŒã©ã«ãããã¯ãŒã¯ã¢ãã«ãæ±ãéãèšç·Žæã«æçŽã«åŠç¿ããããšãããŒã¿ã«äžåè¡¡ãããããã«ãã¹ãŠã®æ±äººããªã¹ã¯ãªããšå€æããããã«ãªã£ãŠããŸããŸãããã®ãããæ£äŸ(ãªã¹ã¯ãããæ±äººããŒã¿)ã®æ°ãæ¡åŒµããããæå€±é¢æ°ã«éã¿ã¥ããããããããªã©ããŠåŠç¿ã工倫ããå¿
èŠããããŸãã çµ±èšã¢ãã« ããžã¹ãã£ãã¯ååž°ãšLightGBMãã©ã¡ãã®ã¢ãã«ãçšããå Žåã§ããã³ã³ãã¥ãŒã¿ãŒãæç« ãçè§£ã§ããããååŠçãå¿
èŠã§ãããŸããæç« ã®ããã¹ãããŒã¿ã圢æ
çŽ è§£æã«ãã£ãŠåèªã«åè§£ããŸããäŸãã°ããç«ã¯ã³ã¿ãã§äžžããªãããšããæã¯ããç«ããã¯ããã³ã¿ãããã§ããäžžããããªãããšãã£ãåèªã«åããããŸãã æ¬¡ã«ãTF-IDF(Term Frequency Inverse Document Frequency)ãšããææ³ãçšããŸããTFã¯ææžå
ã§ã®åèªã®é »åºåºŠã衚ããIDFã¯åèªã®åžå°åºŠã衚ããŸããTFãšIDFãæãåãããããšã§ãåèªãæ°å€åããææžå
šäœããã¯ãã«ãšããŠè¡šãããšãå¯èœã«ãªããŸãããã®ãã¯ãã«åã®éã«ã¯ãæ£äŸã«ç¹åŸŽçãªåèªãFeature(ãã¯ãã«ã®åºåº)ãšããŠæœåºããŸãããTF-IDFãçšããããšã§ããã¯ãããã§ãã®ããã«é »ç¹ã«åºçŸããããéèŠåºŠãäœãåèªã§ã¯ãªããç¹å®ã®æç« ã«ã®ã¿çŸããéèŠåºŠã®é«ãç¹åŸŽçãªåèªãéç«ãããããšãã§ããŸãã ãã®ããã«ããŠäœããããã¯ãã«ãå
¥åãšããŠãåã¢ãã«ã¯ãæ±äººã«ãªã¹ã¯ãããå Žåã¯1ããªãå Žåã¯0ã®ã©ãã«ãåºåããããåŠç¿ãããŸããã ããžã¹ãã£ãã¯ååž° ããžã¹ãã£ãã¯ååž°ã¯ãæ©æ¢°åŠç¿ã«ãããŠæãåºæ¬çãªåé¡ã¢ãã«ã§ãçµæã0ã1ããšãã£ãäºå€ã§ããäºè±¡ãäºæž¬ããããã®çµ±èšçææ³ã§ããç¹å®ã®äºè±¡ãèµ·ãã確çãã説æå€æ°ã䜿ã£ãŠèšç®ããŸãããã®ã¢ãã«ã¯ã確çã0ãã1ã®éã«åããããã®ã·ã°ã¢ã€ã颿°ãšããç¹æ®ãªé¢æ°ãçšããã®ãç¹åŸŽã§ãã èšç·ŽããŒã¿ãæçŽã«åŠç¿ããããšãããŒã¿ã«äžåè¡¡ãããããã«ãããŸãåŠç¿ã§ãããã¹ãŠãªã¹ã¯ãªããšå€æããã¢ãã«ã«ãªã£ãŠããŸããŸãããã®ãããä»åã®ããžã¹ãã£ãã¯ååž°ã§ã¯æå€±é¢æ°ã®èšç®æã«ãæ°å°ãªãæ£äŸã®ããã«ãã£ã倧ãããªãããã«éã¿ä»ããããªããèšç®ããŠåŠç¿ãåããŸããããŸãããã€ããŒãã©ã¡ãŒã¿ã®ã°ãªãããµãŒããªã©ã«ããã¢ãã«ã®æ§èœåäžãç®æããŸããã LightGBM LightGBMã¯æ±ºå®æšãããŒã¹ãšããæ©æ¢°åŠç¿ã¢ã«ãŽãªãºã ã§ããç¹ã«ãå€§èŠæš¡ãªããŒã¿ã»ãããæ±ãéã«ããã®é«éæ§ãšé«ãäºæž¬æ§èœãããããŒã¿ãµã€ãšã³ã¹ã®åéã§åºãå©çšãããŠããŸãã LightGBMã«ã¯ããã€ããŒãã©ã¡ãŒã¿ãšåŒã°ããèšå®é
ç®ããããããããŸãããããã®ãã©ã¡ãŒã¿ãé©åã«èšå®ããããšã§ãã¢ãã«ã®æ§èœã¯å€§ããå€ãããŸãããã®ãããã°ãªãããµãŒããšããææ³ã䜿ã£ãŠãæé©ãªãã©ã¡ãŒã¿ã®çµã¿åãããèªåçã«æ¢çŽ¢ããã¢ãã«ã®æ¹åã«åãçµã¿ãŸããã BERT BERTã¯ã2018幎ã«Googleã«ããéçºãããTransformerã®ãšã³ã³ãŒããŒéšåãåºç€ãšããäºååŠç¿æžã¿èšèªã¢ãã«ã§ãã倧éã®ããã¹ãããŒã¿ããåèªã®æèãåæ¹åã§åŠç¿ãããããæå
šäœã®æå³ãæ·±ãçè§£ã§ããŸããããã«ããã質åå¿çãæç« èŠçŽãªã©ãããŸããŸãªNLPã¿ã¹ã¯ã§é«ãæ§èœãçºæ®ããŸãã BERTã¯æ£äŸãšè² äŸã®æ°ã®äžåè¡¡ãªããŒã¿ã»ããã®åŠç¿ãèŠæã§ãããã®ãããLLMãçšããŠåæããŒã¿ãäœæããæ£äŸã®æ°ãå¢ãããŸãããããŒã¿æ¡åŒµã®éã«LLMã«æž¡ããããã³ããã«ã¯å
ã®æ£äŸã®äžããã©ã³ãã ã«éžãã ããŒã¿ãfew-shotãšããŠçµã¿èŸŒã¿ãçæãããããŒã¿ã®æäœã«å€æ§æ§ãçãŸããããã«å·¥å€«ããŸãããããã«ãBERTã®åŠç¿ã«ãããŠéèŠãªãã©ã¡ãŒã¿(ããŒã¯ã³åã®éã®æå€§æåæ°ãããããµã€ãºããšããã¯æ°ãåŠç¿çãªã©)ãã°ãªãããµãŒãã«ããæ¢çŽ¢ããã¢ãã«ã®æ§èœåäžã«åãçµã¿ãŸããã LLM LLMã«åŠç¿ã¯å¿
èŠãªãã®ã§ãããŒã¿ã®ååŠçãªãã§ããã³ããã工倫ããŠã粟床æ¹åãããŸãããåã«ããªã¹ã¯ããããããªãããã®ã©ãã«ã ãã§ãªãããªããã®ããã«å€æããã®ããšããçç±ãåºåãããŸãããLLMã®åºåããã誀ã£ã倿ãäžããçç±ããäžè¶³ããŠããæ
å ±ããªãããåæããè¶³ããªãæç€ºãããã³ããã«è¿œå ãæ¹åããŸããããŸããæ±äººå¯©æ»ã«ã¯ã«ãŒã«ãããããããã®ã«ãŒã«ããã£ããçè§£ããããã¹ãããŒã¿ãèŠçŽãããšã粟床æ¹åã«ã€ãªãããŸããã å®çšäžã®èгç¹ããèããåã¢ãã«ã®é·æã»çæ é·æ çæ ããžã¹ãã£ãã¯ååž°/ Light GBM 2å€ã®ã¯ã©ã¹ã«åé¡ããããã®å¢çç·ã§ããéŸå€ã®èª¿æŽã«ãã£ãŠã©ããŸã§æ€ç¥ãããæ±ºãããã åŠçãéåžžã«æ©ã æ±äººä»¶æ°ãå¢ããŠãéçšã³ã¹ããããŸãå€ãããªã èª¬ææ§ãäœã ã«ãŒã«ãæ¹å®ããããšãã«æ°ããªåŠç¿ããŒã¿ã®çšæãåŠç¿ã«æéãããã BERT 2å€ã®ã¯ã©ã¹ã«åé¡ããããã®å¢çç·ã§ããéŸå€ã®èª¿æŽã«ãã£ãŠã©ããŸã§æ€ç¥ãããæ±ºãããã æèã®çè§£ãåŸæ èª¬ææ§ãäœã ã«ãŒã«ãæ¹å®ããããšãã«æ°ããªåŠç¿ããŒã¿ã®çšæãåŠç¿ã«æéãããã æšè«ã«GPUããŸãã¯å€ãã®CPUã䜿ãã®ã§çµ±èšã¢ãã«ã«æ¯ã¹ãŠéçšã³ã¹ããé«ã LLM 管çãããã³ããã®æŽæ°ã®ã¿ã§ç°¡å ã«ãŒã«ãæ¹å®ãããæãæŽæ°ã容æ éå»ã«ããŒã¿ããªããã®ãžã®å¯Ÿå¿ãå¯èœ ãªããã®ããã«å€æãããã®çç±ãèªç¶èšèªã§èª¬æã§ãã ä»¶æ°ãå¢ãããšãåŠçæéã»éçšã³ã¹ããç·åœ¢çã«å¢ãã æ¯èŒçµæÂ çµ±èšã¢ãã«ã¯è€éãªæèã®åé¡ã«é¢ããŠã®æ±äººã®ãªã¹ã¯æ€ç¥ã¯èŠæã§ãããã®ã®ãä»ååãçµãã ã¿ã¹ã¯ã«ãããŠã¯ãåŠç¿æ¹æ³ã工倫ããããšã«ãããLLMãšåçã®ç²ŸåºŠãåºãããšãã§ããŸããã BERTã«ã€ããŠããåŠç¿ã«äœ¿ãããŒã¿ãæ¡åŒµããŠæ£äŸã»è² äŸã®æ°ãåçšåºŠã«ããããšã«ãããLLMãšåçã®ç²ŸåºŠãåºãããšãã§ããŸããããéçšã³ã¹ããçµ±èšã¢ãã«ã«å¯ŸããŠé«ãã®ã§ãä»åã®æ±äººã®ãªã¹ã¯äºæž¬ã«é¢ããŠã¯BERTãéžæããã¡ãªããããªããšããçµæã«ãªããŸããã éçšã³ã¹ãé¢ã§æ¯èŒãããšãçµ±èšã¢ãã«ã¯å°ããªã€ã³ã¹ã¿ã³ã¹ã§åãã®ã§ãåé·æ§ãèæ
®ããŠãéçšã³ã¹ããäœãããŸãæ±äººä»¶æ°ãå¢ããŠãã³ã¹ããå€åãã«ããã§ããBERTã¯çµ±èšã¢ãã«ã«æ¯ã¹ãŠCPUãããããå¿
èŠãªã®ã§ãå
ã
ã®ã³ã¹ããé«ããªããŸããäžæ¹ãLLMã¯ããŒã¯ã³ããšã®èª²éã®ãããæ±äººä»¶æ°ãå¢ããããšã«ã³ã¹ããç·åœ¢çã«é«ããªããŸãã ãããã®çµæãããæ±äººä»¶æ°ãå°ãªã段éã§ã¯LLMãæè»ã«æŽ»çšã§ããäžæ¹ãæ±äººæ°ãå¢ãããšLLMã§ã¯ãªãã¢ãã«ãžã®åãæ¿ããã³ã¹ãåæžã«ãªãããšãåãããŸãã ã€ã³ã¿ãŒã³ã§ã®åŠã³ã»æ°ã¥ããããš ä»åã®ã€ã³ã¿ãŒã³ãéããŠãããã¹ãããŒã¿ãååŠçããŠçµ±èšã¢ãã«ã«é©å¿ããææ³ãä»ãŸã§åŠã¶æ©äŒããªãã£ãBERTãªã©ã®ã¢ãã«ã«ã€ããŠçè§£ãæ·±ããããšãã§ããŸãããã¢ãã«ã®æ§èœãåäžãããããã«ããã¹ãææ³ã«ã€ããŠãå®éã«æãåãããªããåŠã¶ããšãã§ããŸããããŸããã¢ãã«ã«å€æŽãå ããŠæ§èœåäžãç®æãã ãã§ãªããäžããããããŒã¿ãèªåã®ç®ã§ãã確èªããŠããŒã¿ã®ç¹åŸŽãæŽãããšãéåžžã«éèŠã§ããããšãåŠã³ãŸããã å®éã®æ¥åã«ãããŠã¯ãèªåãèããŠããããšã詊ããŠã¿ãããšæã£ãŠããããšãä»ã®äººã確èªã§ãã圢ã§èšèªåããŠããããšã§ãã³ãã¥ãã±ãŒã·ã§ã³ãã¹ã ãŒãºã«ãªããšããããšãèªèããŸããã å·Šãã@Aria, @Ririko çµããã« æ¬èšäºã§ã¯ãã€ã³ã¿ãŒã³ã§åãçµãã ã¿ã¹ã¯ãææ³ã«ã€ããŠã話ããããŠããã ããŸãããä»åã®ã€ã³ã¿ãŒã³ãéããŠãéçºã«å¿
èŠãªç¥èããŸããã£ãªã¢é¢ã§ã®ç¥èãªã©æ§ã
ãªåŠã³ãåŸãããšãã§ããŸãããäžã¶æãšããæéã¯ãã£ãšããéã§ãããããšãŠãæ¿ãæéãéãããŸããã ã¡ã³ã¿ãŒã®@ku-muãããã¢ããã€ã¹ããã ãã£ã@arr0wãããML teamã®çãããæ¬åœã«ããããšãããããŸããïŒ
ã¯ããã« ã¯ãããŸããŠïŒïŒæã®ïŒã¶æéãBuildã€ã³ã¿ãŒã³ã«åå ããkyoroã§ãã æç³»ã®ç§ã«ãšã£ãŠãBuild@Mercariã¯ããšã³ãžãã¢ãžã®ç¬¬äžæ©ããšãªã£ã倧å€è²Žéãªæé·æ©äŒã§ãããç§ãBuild@Mercariã§åŠãã ããšãçµéšããããšãå
±æããããšã§ãåãããã«ããšã³ãžãã¢ã«ãªããããã©ãéSTEMé ååºèº«ã§èªä¿¡ããªãããããæé·ã®æ©äŒã«æµãŸããŠããªãããšæããŠããæ¹ã
ã«ãBuild@Mercariãšããéžæè¢ãããããšãç¥ã£ãŠã»ãããšæããŸããã ç§ã«äŒŒãããã¯ã°ã©ãŠã³ãããæã¡ã®æ¹ããããããåå ãæ€èšãããŠããæ¹ã
ã®åèã«ãªãã°å¹žãã§ãã ãªãBuild@Mercariã«åå ããã ç§ã¯å€§åŠïŒå¹Žçã§åè¬ããããŒã¿ãµã€ãšã³ã¹ã®ææ¥ããã£ããã«ããã°ã©ãã³ã°ã«èå³ãæã¡ãŸãããããããç§ã®åŠéšã¯å®å
šã«æç³»ã§CSé¢é£ã®ææ¥ããªãã£ãããããã以éã¯ç¬åŠã§åŠç¿ãé²ããŠããŸããã ç¬åŠã§åŠç¿ãé²ããŠãããã®ã®ãå®è·µã®æ©äŒãå°ãªããããŸãæé·ã宿ã§ããŠããªãéšåããããŸãããã€ã³ã¿ãŒã³ã·ãããéããŠå®è·µçã«æé·ã§ãããããšæã£ãŠããŸããããå¿åæç¹ã§äžå®ã®éçºçµéšãå¶äœç©ãæ±ããããããšãå€ãããªããªãåãå
¥ããŠããããªãç¶æ³ãç¶ããŠããŸããããããªæãããã¯ã³ãã¥ããã£çµç±ã§Build@Mercariã®ååšãç¥ããŸãããçŸæç¹ã§ã®çµéšãæµ
ããŠãåå ã§ãããšã³ãžãã¢è²æããã°ã©ã ãšèããŠããã«å¿åãæ±ºããŸããã Build@Mercariã£ãŠã©ããªããã°ã©ã ïŒ æ§èªèªã女æ§ã§ããæ¹ã察象ã«ããœãããŠã§ã¢ãšã³ãžãã¢ãªã³ã°ã®ã¹ãã«ãã¬ãŒãã³ã°ãšã€ã³ã¿ãŒã³ã·ããã®æ©äŒãæäŸããããã°ã©ã ã§ãã çŸåšSTEMé åã§ã¯å¥³æ§ããã€ããªãã£ãšãªã£ãŠããŸããæ¥çå
šäœã®D&Iãæšé²ããã¹ããã¡ã«ã«ãªã§ã¯ããããåŠç¿æ©äŒãç§ãã¡ã«æäŸããŠãããŠããŸãã Buildãã¬ãŒãã³ã°ã«ã€ã㊠ïŒé±éã§ãã¡ã«ã«ãªãæ³å®ããç°¡æåºåã¢ããªãåäººã§æ§ç¯ããŸãã ãã®èª²é¡ãéããŠãGitã®äœ¿ãæ¹ããAPIéçºãããã³ããšã³ãã®å®è£
ãDockerã«ããã³ã³ããåãŸã§ãWebã¢ããªã±ãŒã·ã§ã³éçºã®åºæ¬ãäžéãåŠã¶ããšãã§ããŸãããã¢ããªæ§ç¯ä»¥å€ã«ããã¢ã«ãŽãªãºã ãšããŒã¿æ§é ãããããŒã¿åæããåŠã¶ã¹ããããçšæãããŠãããéåžžã«å
容ãå
å®ããŠããŸãã éžèã®è©± éžèã§ã¯ãå¿æåæ©ãšã³ãŒãã£ã³ã°ãã¹ããæåºããŸããã³ãŒãã£ã³ã°ãã¹ãã¯ãã³ã³ãã¥ãŒã¿ãµã€ãšã³ã¹ã«é¢ããåºç€ç¥èã確èªããããã«ãªã³ã©ã€ã³ã§å®æœãããŸããBuildãã¬ãŒãã³ã°ããã°ã©ã ã¯ãéåžžã®ã€ã³ã¿ãŒã³ã·ããéžèãšã¯ç°ãªããå€ãã®æ¹ã«ãã£ã¬ã³ãžããŠããã ããããšããæ³ããããã³ãŒãã£ã³ã°ãã¹ãã®é£æåºŠã¯äœãã«èšå®ãããŠããŸãããã®ãããçŸæç¹ã§ã®ã¹ãã«ã«èªä¿¡ããªãæ¹ãå¿åãããããå¿
èŠã¯ãããŸããã ãã®ãã¬ãŒãã³ã°ã®è¯ãã£ãç¹ ïŒã€ç®ã¯ãæ°äººã®ããŒã ã«åãããŠãåèªèª²é¡ã«åãçµããããšã§ããå¹³æ¥ã¯æ¯æ¥ãã°ã«ãŒãå
ã§é²æå
±æã®æéããããã¡ã³ã¿ãŒããã«è³ªåããããä»ã®ã¡ã³ããŒã®é²ã¿å
·åãç¥ãããšãã§ããŸãããããã§èªåã®é
ããèªèããè¯ãæå³ã§çŠããããšãããã¬ãŒãã³ã°ãå®éã§ãã倧ããªèŠå ã§ãããååŠè
ãäžäººã§åŠç¿ããŠãããšãããããªããšããã§ç«ã¡æ¢ãŸã£ãŠããŸãããã®ãŸãŸåŠç¿ãäžæããŠããŸãããšãå€ãã§ãããããã£ãæå³ã§ãããã®ããã«ä»²éããµããŒããããç°å¢ã¯ããšãŠãå¿åŒ·ãã£ãã§ãã ïŒã€ç®ã¯ããåå è
ã¯ïŒå¹Žéç¡æã§Udemyã®è¬çŸ©ãåè¬ã§ãããããšã§ãã åå æç¹ã§ã¯åšèŸºç¥èãã»ãšãã©ãªãã£ãããããšã«ãããã¬ãŒãã³ã°äžã¯ã³ãŒããåããããšã§ç²Ÿäžæ¯ã§ããããããããã¬ãŒãã³ã°çµäºåŸã«Udemyã倧ãã«æŽ»çšããç¹ãšç¹ã ã£ãçè§£ãå°ããã€ã€ãªããŠè
¹èœã¡ãããããªããã®ã³ãŒããå¿
èŠãªã®ãããã©ããªä»çµã¿ã§åããŠããã®ãããçè§£ããããšãã§ããŸããã ãã¬ãŒãã³ã°ã®ææ åå åã®ç§ã¯ git ãš github ã®éãããããããªãã¬ãã«ã§ããããããããã¬ãŒãã³ã°çµäºã®ïŒã¶æåŸã«ïŒäººã§åå ããããã«ãœã³ã§äŒæ¥è³ãããããã¬ãã«ã«æé·ããŠããŸãããBuildãã¬ãŒãã³ã°ã¯ç¬åŠã§äŒžã³æ©ãã§ããç§ã«å€§ããªæé·ãäžããŠãããŸããã Build ã€ã³ã¿ãŒã³ã«ã€ã㊠éžèã®è©± æ§ç¯ããåºåAPIãåäœç¢ºèªã®ãã¹ãã«éã£ããã¬ãŒãã³ã°åå è
ã¯ãïŒã¶æéã®Buildã€ã³ã¿ãŒã³ã«é²ãããšãã§ããŸãã åºæ¬çã«ã¯ããã¬ãŒãã³ã°çµäºåŸã«æåºããã¢ã³ã±ãŒãã«åçããåžæããžã·ã§ã³ãšéšçœ²ãåæã«éžèãé²ã¿ãŸãã ãŸããå°±æ¥åã€ã³ã¿ãŒã³ã«å¿åããŠäžåæ Œãšãªã£ãå Žåã§ããå床Buildã€ã³ã¿ãŒã³ãžå¿åããããšãå¯èœã ããã§ãã Buildã€ã³ã¿ãŒã³ã®éžèã§ã¯ïŒïŒåçšåºŠã®é¢æ¥ãïŒåèšããããŸãããã®é¢æ¥ã¯éçºçµéšãªã©ã®æ·±æããšããããããé
å±å
ã®ãšã³ãžãã¢ãããŒãžã£ãŒãããšã€ã³ã¿ãŒã³ãžã®åå ææ¬²ã®ç¢ºèªãè¡ããŸããã é
å±å
ç§ã¯ã¡ã«ã«ãªã®ã客ããŸã®ãåãåãã管çã·ã¹ãã ãæ§ç¯ããŠããContact CenterããŒã ã«ããã¯ãšã³ããšã³ãžãã¢ãšããŠé
å±ãããŸããã åãçµãã ããš çŸç¶ã®ã·ã¹ãã ã§ã¯ããåãåããã«å¯Ÿããèªåè¿ä¿¡ãéç¥ã¡ãŒã«ã®æèšãããŒãã³ãŒããããŠãããæèšã®å€æŽã³ã¹ãããããããšã課é¡ã§ãããç§ã¯ããã®æèšãããŒã¿ããŒã¹ããååŸã§ããããã«ããã¿ã¹ã¯ã«åãçµã¿ãŸããã å°æ¥çã«ãã®æ©èœãæ¡åŒµããã管çç»é¢ããæèšã«å€æŽãå ããããããã«ããããšã§ãå®éã«ãåãåããã«å¯Ÿå¿ããéãšã³ãžãã¢ã®æ¹ã§ãæèšã®å€æŽãå¯èœãšãªããéçšã³ã¹ãåæžãã倿Žã¹ããŒãã®åäžãæåŸ
ã§ããŸãã 倧ããåããŠïŒã€ã®ãã§ãŒãºã§ã¿ã¹ã¯ã«åãçµã¿ãŸããã 1. DBèšèš ã©ã®æèšãããŒã¿ããŒã¹ã«ç§»è¡ãããããæèšã䜿ãããå Žé¢ãããã®å€æŽå¯èœæ§ãèæ
®ããªããæ€èšããŸããã æåã¯æ·±ãèããã«ãæ¢åã®ä»ã®DBèšèšãåèã«èšèšããŠããŸãããããŒã ã®æ¹ã«èšèšãã¬ãã¥ãŒããŠããã ããéããªãããã§ãã®å¶çŽãå
¥ããã®ããšãã質åã«å¯ŸããŠããã«çããããªãã£ãçµéšãããèªåã®èšèšæ ¹æ ã®çãã«æ°ã¥ãããšãã§ããŸããã DBèšèšã®ã¿ãªãããèšèšãæ¹éã«å¯äžã®æ£è§£ã¯ãªãããšã³ãžãã¢éã§è°è«ããäžã§èªåäžäººã§ã¯æ°ä»ããªãã£ãç¹ã«æ°ã¥ãããšã§ãæé©ãªè§£ãå°ãåºãããããšãåŠã³ãŸãããè°è«ãåæ»ã«é²ããããã«ããåžžã«ãªãèªåããã®æ¹éãè¯ããšæã£ãã®ããä»ã«èããããæ¹éã¯ãªãã®ãæ¯èŒæ€èšããäžã§ãèšèšã®æå³ãæ ¹æ ãæç¢ºã«ãã€éèŠæ§ãåŠã³ãŸããã 2. DBãžã®æèšæ¿å
¥ å®éã«ããŒã¿ããŒã¹ãžæèšãæ¿å
¥ããæ®µéã§ã¯ãç§»è¡ãã倧éã®æèšãæ¢åã®æèšãšäžèšäžå¥ã®ãããèµ·ããªããããæ£ç¢ºãªã¯ãšãªãäœæããäœæ¥ãçºçããŸããã ãŸããSpanner CLIã®ä»æ§äžãæèšã«å«ãŸãã空è¡ãSQLæã®çµäºãšèªèããŠããŸããããå
šãŠã®ç©ºè¡ãæ¹è¡æåã«å€æŽããå¿
èŠããããéåžžã«ãã¹ãçºçããããäœæ¥ã§ãããäœæããSQLæã®æçµç¢ºèªã¯å€§å€éªšã®æããäœæ¥ã§ãããæçµç¢ºèªãããŠããã ããããŒã ã®æ¹ã
ãæ¥åžžã®å¿ããæ¥åã®æäžãæéãå²ããŠããã ããŠããããšãããããŸããã 3. æèšååŸã®å®è£
詳现èšèšã®è©± å®è£
æã®å€§å¹
ãªææ»ããåé¿ããããã詳现èšèšãè©°ããŠããå®è£
ã«å
¥ããŸããã詳现èšèšãç«ãŠãã«ã¯ãïŒå¹Žåã®ã³ã³ããã¹ããããæ¢åã³ãŒãã®æµããçæéã§ææ¡ããå¿
èŠããããæãæéãããããŸããããŸãããããžã§ã¯ãåæã»ã©èŠç©ããã®èª€å·®ã倧ãããªããšãããã äžç¢ºå®æ§ã³ãŒã³ ãã®ã話ãè峿·±ãã£ãã§ãã æåã«ç§ãç«ãŠã詳现èšèšã¯èŠç©ãããçããããå°ãå
容ãè©°ããããã¬ãã¥ãŒãããã ããŸããããã®çµæãåŸã®å®è£
å·¥çšã§ã¯è¿·ããæãåããããšãã§ããŸãããéçºããã»ã¹ã®äžã§èšèšãçãã«ãããšãã®åã®èŠç©ããã®èª€å·®ãå®è£
ã«åŒãç¶ãããŠããŸããšããããšã身ããã£ãŠåŠã¶ããšãã§ããŸããã ããŒã ã§ã¯ãArchitecture Decision RecordããšåŒã°ããæææ±ºå®èšé²ã«èšèšæ¹éãæ®ããŠããŸãããããªããããããèšèšã«ãªã£ãã®ããããä»ã®æ¡ã¯ãã£ãã®ãïŒããªã©ã®è°è«ã決å®äºé
ãèšé²ããŠããããšã§ãä»åŸæ°ããæ©èœãå®è£
ããããšããæã«ãéå»ã®èšèšããã®ãŸãŸäœ¿çšã§ããããåèã«ããŠæ¡åŒµããããšãã§ããå©ç¹ããããšæããŠããã ããŸãããããã«ãœã³ã®ããŒã éçºçµéšãšã¯æ¯ã¹ãã®ã«ãªããªããçŸå Žã®ããŒã éçºããåŠã¶ããšãã§ããŸããã ãã¹ãã³ãŒãã®è©± ãã¹ãã³ãŒããçµã¿ç«ãŠãã®ã¯ä»åãåããŠã§ãããä»ãŸã§ã¯æ£åžžã«åäœããŠããããšã確èªããã ãã§æºè¶³ããŠããŸããããã³ãŒãã®å質ãä¿å®æ§ãé«ããéèŠãªææ®µã§ããããšãåŠã³ãŸãããGoç¹æã®ãããŒãã«é§åãã¹ãããããã¹ãé§åéçºããæ£åžžã«å€ãè¿ããããã ãã§ã¯ãªããæž¡ãå€ãªã©ãå€ããæããšã©ãŒããã¡ããšè¿ãããããªã©ããå¹
åºããã¹ãã±ãŒã¹ã®æ³å®ããå¿
èŠã§ããããšãåŠã³ããã¹ãã³ãŒãã®å¥¥æ·±ããç¥ããŸããã Goã®è©± Contact CenterããŒã ã§ã¯ããã¯ãšã³ãéçºèšèªã«Goãæ¡çšãããŠããŸãããGoã«è§Šããã®ã¯ä»åã®ã€ã³ã¿ãŒã³ãåããŠã ã£ããããéçºãé²ããªããå€ãã®Goç¬èªã®æ§æãèãæ¹ãåŠã¹ãŸããã å
šäœãéããŠåŠãã ããš ãšã³ãžãã¢ã®ä»äº ã€ã³ã¿ãŒã³ãéããŠå®åã«å
¥ã£ãããšã§ããšã³ãžãã¢ã«æ±ããããããšã¯ã³ãŒããæžãåã ãã§ã¯ãªãããšã匷ã宿ããŸãããç¹ã«å°è±¡çã ã£ãåŠã³ãã以äžã®ïŒã€ã§ãã ïŒã€ç®ã¯ããããã°ã©ãã³ã°ã¯ãã³ãŒããâæžãâæéãããã³ãŒããâèªãâæéã®æ¹ãå€ããã ãšããããšã§ããæ©èœãæ°ãã远å ããã«ããŠãããŸãã¯æ¢åã®ã³ãŒããèªã¿è§£ããŠãã©ããã©ã倿Žãã¹ãããçè§£ããå¿
èŠããããŸãã ïŒã€ç®ã¯ãéçºã«ã¯æéãããããã®äžã§ããã«åªå
é äœãã€ããŠã¿ã¹ã¯ãé²ããŠããããä»äºã§ã¯æ±ãããããšããããšã§ããããŒã ã«é²æãäŒããéããããŸã çµãã£ãŠãŸããããšäŒããã®ã§ã¯ãªãããçŸç¶ã§ã%é²ãã§ããŸãããããŸã§ã«ãæ¥ããã£ãã®ã§ãæ®ããåããããã®ããŒã¹ã§é²ãã°ãããšãæ¥çšåºŠãããããã§ãããšããããã«ã鲿ãšäºæž¬ãã»ããã§äŒããå ±åã®ä»æ¹ãããŒã ãšããŠã®åããããã«ãã€ãªãããšããã話ããèãããå匷ã«ãªããŸããã ïŒã€ç®ã¯ãä»äºãããŒã ã§é²ããäžã§æè¡åãšåããããããäŒããåãã倧åãšããããšã§ããPRãäœæããéãã¬ãã¥ãŒããåŽã®ç®ç·ã«ç«ã£ãŠãæå³ãèæ¯ãäžå¯§ã«æžãããšã§ãã£ãããïŒonïŒã§ã®è³ªåã«ãããŠãããã ããããããããŸããããšèšãã®ã§ã¯ãªããããã«ã€ããŠèª¿ã¹ããããã詊ããããã©ããã®æç¹ã§è©°ãŸã£ãŠããŸãããšãããµãã«ãèªåã®æèããã»ã¹ãæŽçããŠäŒããããšã§ãããç確ãªã¢ããã€ã¹ããããããšæããŸããã ã¢ãŒããã¯ã㣠ã¢ãŒããã¯ãã£ã«é¢ãã話ã®äžã§ãã¡ã«ã«ãªãã¢ããªã·ãã¯ãªæ§æãããã€ã¯ããµãŒãã¹åãžãšç§»è¡ããŠãã£ãèæ¯ãããã®éçšã§èµ·ããæè¡çã»çµç¹çãªå€åã«ã€ããŠäŒºããŸããã ç¹ã«å°è±¡çã ã£ãã®ã¯ããã€ã¯ããµãŒãã¹åã«ãã£ãŠåã¢ãžã¥ãŒã«ãèªåŸçã«æ©èœããããã«ãªã£ãããšã§ãéçºããŒã ããããããç¬ç«ããŠåããããã«ãªããçµç¹æ§é ãã®ãã®ã«ãå€åããã£ããšããç¹ã§ãã ãŸããæ¢åã³ãŒãã®æµããææ¡ããéã«ãããã¡ã€ã³é§åèšèšãããã¯ãªãŒã³ã¢ãŒããã¯ãã£ããšãã£ãèãæ¹ãæããŠããã ããŸããã ããããèšèšææ³ã¯ãåã«ãããããªã³ãŒããæžããããã§ã¯ãªããé·æçã«å®å®ããã·ã¹ãã ãäœãããã®èãæ¹ã§ããããšãåŠã³ãŸããã ã¡ã«ã«ãªæå 瀟å
ååŒ·äŒ ç€Ÿå
å匷äŒã掻çºã§ãç§ã¯OpenAI瀟ã®è¬åž«ã«ãããã¬ãŒãã³ã°ããã°ã©ã ã«åå ããŸãããäŒè©±ãããAIãããæç€ºãç¥èãã¢ã¯ã·ã§ã³ãã®èгç¹ãã现ããèšå®ã§ããã«ã¹ã¿ã GPTã®æŽ»çšäºäŸã宿Œåœ¢åŒã§åŠã³ãŸããã æ®æ®µãããã³ã«ã¹ã¿ã GPTã¯åçã®æ
å ±éãå€ããäœã質åã«å¯Ÿããåçã®æ¬è³ªãªã®ãèŠå€±ããã¡ã ã£ããããããªãã¹ãäžå¿
èŠãªéšåãåãèœãšããã·ã³ãã«ã§ååŠè
ã«ãšã£ãŠãããããã説æãå¿ãããããšããããã人éããããåŸèŒ©ããæ
ããããããªãšã³ãžãã¢ãšããŠæ¯ãèãããšããæç€ºããã«ã¹ã¿ã GPTãäœæããŸãããã€ã³ã¿ãŒã³æéäžãã®GPTãžã®è³ªåã§ããã¹ããŒãã£ãŒã«çåãè§£æ¶ããªããéçºã§ããããšããããå®éã«ç€Ÿå
å匷äŒã§ã®åŠã³ã®æ©æµãåããŸãããããããæ§ã
ãªå匷äŒã«åå ã§ããç°å¢ãéåžžã«é
åçã§ãããšæããŸããã éçºææ³ ããŒã ã§ã¯ãã¹ã¯ã©ã ããšããéçºææ³ãåãå
¥ããããŠããŸãããã¹ããªã³ããšåŒã°ããæ°é±éã®åäœã§éçºæéãçãåºåããæ¯åãä»åã®ã¹ããªã³ãã§ã¯ãããããããšããç®æšãããŒã ã§ãããŠããéçºã«å
¥ã圢ã§ããã ã¹ããªã³ãæéäžã¯æ¯æã®Daily ScrumïŒæäŒïŒã§ããŒã å
ã§é²æã課é¡ãå
±æããããã¿ã¹ã¯ã®é²è¡ãåžžã«å¯èŠåããªããããŒã å
šäœã®éçºãåã«é²ããŠããããšãå°è±¡çã§ããã ãã®ä» ã€ã³ã¿ãŒã³æéäžãContact CenterããŒã ã®æ¹ã
ããã¬ãŒãã³ã°ã§æ
åœããŠããã ããã¡ã³ã¿ãŒãããšäœåºŠãã©ã³ãã«è¡ãããŠããã ããŸãããããã£ãªã¢ã®è©±ãããæ¥æ¬äººããŒã ãšå€åœäººããŒã ã®éããããã¡ã«ã«ãªã®æãšä»ããããšã³ãžãã¢ã®æé·ã¹ãããããšãã£ãããŒãã«ã€ããŠãå®éã«åããšã³ãžãã¢ã®æ¹ã
ããçŽæ¥ã話ã䌺ãããšãã§ããŸãããæ®æ®µãªããªãèãããšãã§ããªããããªããªã¢ã«ãªçŸå Žã®è©±ãèãã«è§Šããããšãã§ããããšã§ãèªåèªèº«ã®ãã£ãªã¢ãåãæ¹ãèãããã£ããã«ããªãã倧å€è²ŽéãªåŠã³ãšãªããŸããã çµããã« ã¡ã«ã«ãªãšé
å±å
ããŒã ã®çãããž Build@Mercariãšããæé·æ©äŒãæäŸããŠãããã¡ã«ã«ãªããããŠã€ã³ã¿ãŒã³ã§åãå
¥ããŠãã ãã£ãContact CenterããŒã ã®ã¡ã³ã¿ãŒãããã¯ãããšããã¡ã³ããŒã®çããã«å¿ããæè¬ã®æ°æã¡ãè¿°ã¹ãããšæããŸããçãæéã§ãããããã«ã¯æžããããªãã»ã©ããããã®ããšãåŠã¹ãŸãããæ¬åœã«ããããšãããããŸããã ããããåå ããããšèããŠããæ¹ãž ã»ãŒãŒãã ã£ãç§ããããŸã§å€ãã®ããšãåŠã³æé·ããããšãã§ããã®ã¯Build@Mercariã®ãããã§ããããä»ã®èªåã®ã¹ãã«ã«èªä¿¡ããªããŠãããšã³ãžãã¢ãšããŠæé·ããããšèããŠãããªãããã²Build@Mercariãžåå ããŠæ¬²ããã§ãããŸããBuildã€ã³ã¿ãŒã³ãå°±æ¥åã€ã³ã¿ãŒã³ã§å®éã«ã¡ã«ã«ãªã®ãµãŒãã¹ã«è§Šããããšã§åŸãããåŠã³ã¯éåžžã«å€§ããã§ãããã²Buildãã¬ãŒãã³ã°ã§çµãããã«ãæçµŠã€ã³ã¿ãŒã³ã·ãããŸã§é²ãã§æ¬²ããã§ãã â»ãã®äœéšèšã¯2025幎床ïŒä»å¹ŽåºŠïŒã®ããã°ã©ã å
容ã§ããæ¥å¹ŽåºŠä»¥éã®ããã°ã©ã ã«ãããŠã¯å
容ã倿Žã«ãªãå¯èœæ§ããããŸãã®ã§ããäºæ¿ãã ããã
ã¡ã«ã«ãªããã§ QA Engineering manageãããŠãã @____rina____ ã§ãã æ¬èšäºã§ã¯ããããžã§ã¯ãããŒã ã§å®æœãããªããµã€ãã«ã€ããŠãã¹ã¯ã©ã ãã¹ã¿ãŒãšããŠã¯ãŒã¯ã·ã§ãããã¶ã€ã³ãæ
åœããçµéšãå
±æããŸãã ãªã¢ãŒãã¯ãŒã¯ãç¶ç¶ããäžã§ã察é¢ã§ã®ãªããµã€ããã©ã®ããã«èšèšããåååå è
ãžã®é
æ
®ãã©ã®ããã«å®è·µãããã«ã€ããŠè©³ãã解説ããŸãã ãã®èšäºããèªè
ãåŠã¹ãããšïŒ é·æãããžã§ã¯ãã®å¹æçãªãµããããææ³ïŒã¿ã€ã ã©ã€ã³ãµããããïŒ AIãæŽ»çšããã¯ãŒã¯ã·ã§ãããã¶ã€ã³ã®å®è·µäŸ åååå è
ãžã®é
æ
®ãšå¿ççå®å
šæ§ã®ç¢ºä¿æ¹æ³ 5ã°ã©ãŠã³ãã«ãŒã«ã掻çšãã質ã®é«ãè°è«ã®å®çŸæ¹æ³ 察é¢ã§ã®ããŒã ãã«ãã£ã³ã°ã®éèŠæ§ãšå¹æ ãªã¢ãŒãã¯ãŒã¯ç°å¢ã§ã®ã³ãã¥ãã±ãŒã·ã§ã³æè¡ç課é¡ãšè§£æ±ºç ã¢ããã°ææ³ã«ãã察é¢ã¯ãŒã¯ã·ã§ããã®å¹æãšéèŠæ§ å·çè
èªèº«ã®åŠã³ïŒ ã¹ã¯ã©ã ãã¹ã¿ãŒãšããŠã¯ãŒã¯ã·ã§ãããã¶ã€ã³ãæ
åœããçµéšãéããŠãåå è
ã®å¿ççå®å
šæ§ã確ä¿ããããšã®éèŠæ§ãæ¹ããŠå®æããŸãããç¹ã«ãåååå è
ãžã®äžå¯§ãªèª¬æãèŠèŠçãªè³æã®æŽ»çšã段éçãªé²è¡ããã¯ãŒã¯ã·ã§ããã®æåã«çŽçµããããšãåŠã³ãŸããããŸããAIãæŽ»çšããå¹ççãªã¯ãŒã¯ã·ã§ããèšèšã®å¯èœæ§ã宿ã§ãã人éãªãã§ã¯ã®åµé æ§ãé
æ
®ãšçµã¿åãããããšã§ããã广çãªã¯ãŒã¯ã·ã§ãããèšèšã§ããããšã確èªããŸããã é嬿ŠèŠ ä»å宿œããã®ã¯ãã¡ã«ã«ãªããã§äºæ¥è
åããµãŒãã¹ãéå§ããã«ããããäºæ¥è
ããææ°æã城åããä»çµã¿ãæ§ç¯ãããããžã§ã¯ãããŒã åãã®ãªããµã€ãã§ãããã®ããŒã ã®ã¡ã³ããŒããçŠå²¡åžå
ã®äŒå Žã«éãŸãã5æéã«ããã£ãŠãªããµã€ããéå¬ããŸãããæ®æ®µã¯ãªã¢ãŒãã§æ¥åãé²ããŠããã¡ã³ããŒã§ããããã®æ¥ã¯å
šåœããã¡ã³ããŒãäžå ã«äŒãã察é¢ãªãã§ã¯ã®ç±éãšäžäœæãæããªããããããžã§ã¯ãã®ãããŸã§ãšããããã«ã€ããŠãã£ãããšèªãåã貎éãªæéãšãªããŸããã åå è
ã¯PMããšã³ãžãã¢ãEMããã¶ã€ããŒãQAãã10åãè¶
ããã¡ã³ããŒãåå ããåååå è
ãå«ããŠå€æ§ãªããã¯ã°ã©ãŠã³ããæã€ã¡ã³ããŒãéãŸããŸããã èæ¯ã»ç®ç ä»åã®ãªããµã€ããäŒç»ããèæ¯ã«ã¯ãé·æã«ãããææ°æãããžã§ã¯ãããµãããããä»åŸã®æ¹åãããŒã ã®é£æºåŒ·åãå³ããããšããæãããããŸããããªã¢ãŒãã¯ãŒã¯ãç¶ãäžãæ¥ã
ã®ã³ãã¥ãã±ãŒã·ã§ã³ã¯ã©ãããŠãããã¹ãããªã³ã©ã€ã³äŒè°ã«åããã¡ã§ããã ããããã察é¢ã§éãŸããæ®æ®µã¯è©±ããªããããªæ·±ãè°è«ããã«ãžã¥ã¢ã«ãªäº€æµãéããŠãããŒã ãšããŠã®çµæåãé«ããããšãäžå¯æ¬ ã ãšèããŸããã ææ°æãããžã§ã¯ãã§ã¯ç§ãã¹ã¯ã©ã ãã¹ã¿ãŒãåããŠãããä»åã®ãªããµã€ãã¯ã¯ãŒã¯ã·ã§ãããã¶ã€ã³ããå
šäœã®é²è¡ãŸã§ãäžè²«ããŠèšèšã»éå¶ãæ
åœããŸãããç¹ã«æèããã®ã¯ãåååå è
ãå®å¿ããŠåå ã§ããç°å¢ãæŽããããšã§ããã ã¯ãŒã¯ã·ã§ãããã¶ã€ã³ã®å·¥å€« AIãæŽ»çšããã¢ãžã§ã³ãäœæãšã¢ã€ã¹ãã¬ã€ã¯èšèš ä»åã®ãªããµã€ãã®æºå段éã§ã¯ãAIãç©æ¥µçã«æŽ»çšããŸããããŸããã¯ãŒã¯ã·ã§ããå
šäœã®ã¢ãžã§ã³ãäœæã«ãããŠãAIã«ææ°æãããžã§ã¯ãã®ç¹æ§ãåå è
ã®æ§æãç®çãªã©ãå
¥åããæé©ãªé²è¡ã¹ã±ãžã¥ãŒã«ã®ææ¡ãåããŸãããAIãææ¡ããæéé
åãã»ãã·ã§ã³æ§æãããŒã¹ã«ãå®éã®åå è
æ°ãäŒå Žã®å¶çŽãèæ
®ããŠèª¿æŽãå ããããšã§ãå¹ççã§å¹æçãªã¢ãžã§ã³ããäœæã§ããŸããã ç¹ã«å°è±¡çã ã£ãã®ã¯ãã¢ã€ã¹ãã¬ã€ã¯çšã®ã¯ã€ãºäœæã§ããAIã«çŠå²¡ã®æåãç®ã«ããäºå®ã®å»ºç¯ç©ã«é¢ããåé¡ãçæããŠããããåå è
ã®æ»åšããã£ãšæ¥œããããå
容ã«ããŸããã åååå è
ãžã®é
æ
®ïŒäžå¯§ãªãã§ãã¯ã€ã³ãšèª¬æ ã¯ãŒã¯ã·ã§ãããã¶ã€ã³ã«ãããŠæãéèŠèŠããã®ã¯ãåããŠã¯ãŒã¯ã·ã§ããã«åå ããã¡ã³ããŒãžã®é
æ
®ã§ãããåå è
ã®äžã«ã¯ãä»ç®ã䜿ã£ãã¯ãŒã¯ã·ã§ããããã°ã«ãŒããã£ã¹ã«ãã·ã§ã³ã«äžæ
£ããªæ¹ãããŸããããã®ãããåã»ãã·ã§ã³ã®éå§æã«ã¯å¿
ãäžå¯§ãªèª¬æãè¡ããåå è
ãè¿·ããªãããé
æ
®ããŸããã åã»ãã·ã§ã³ã§ã®å
·äœçãªé
æ
® ã¿ã€ã ã©ã€ã³ãµããããã§ã¯ãå
·äœçãªæé ãèŠèŠçãªè³æãšãšãã«èª¬æããŸãããã°ã«ãŒãã³ã°äœæ¥ã§ã¯ãæœè±¡çãªæç€ºã§ã¯ãªãå
·äœçãªäŸã瀺ãããšã§ãåå è
ãè¿·ããã«äœæ¥ãé²ãããããã工倫ããŸããã åã»ãã·ã§ã³ã®éå§æã«ã¯å¿
ãç®çãæé ãæåŸ
ããææç©ãæç¢ºã«äŒãã質åããããé°å²æ°ãäœãããšã§ãåå è
å
šå¡ãå®å¿ããŠã¯ãŒã¯ã·ã§ããã«åå ã§ããç°å¢ãæŽããŸããã åœæ¥ã®æµã ãªããµã€ãã¯ãåå è
å
šå¡ãæå€§éã«éäžããæŽ»çºãªè°è«ãã§ãããããç¶¿å¯ã«ãã¶ã€ã³ãããããã°ã©ã ã§é²è¡ããŸããã ã¢ã€ã¹ãã¬ã€ã¯ã®æå³ãšç®çã®èª¬æ ã¯ãŒã¯ã·ã§ããã®åé ã§ã¯ããŸããã¢ã€ã¹ãã¬ã€ã¯ãšã¯äœããããªãã¢ã€ã¹ãã¬ã€ã¯ãå¿
èŠãªã®ããã«ã€ããŠãåå è
å
šå¡ã«äžå¯§ã«èª¬æããŸããããã®é
æ
®ãç¹ã«éèŠããã®ã¯ãç§èªèº«ãéå»ã«ã¯ãŒã¯ã·ã§ããã«åå ããéãçªç¶ã²ãŒã ãå§ãŸã£ãŠããããããæå³ãããããããªãããšæ··ä¹±ããçµéšããã£ãããã§ãã ã¢ã€ã¹ãã¬ã€ã¯ãåãªãå ŽãåãŸããããã®æéã§ã¯ãªãããã®åŸã®è°è«ã®è³ªãå·Šå³ããéèŠãªèŠçŽ ã§ããããšãçè§£ããŠãããããã以äžã®4ã€ã®ç®çãæç¢ºã«äŒããŸããïŒ åå è
å士ã®ç·åŒµãã»ãã : å察é¢ãä¹
ãã¶ãã®å¯Ÿé¢ã§çããããã¡ãªããè§£æ¶ããå¿ççå®å
šæ§ãé«ãã å Žã®é°å²æ°ãæãããã : ããžãã£ããªç©ºæ°ãäœãåºãããã®åŸã®è°è«ã掻çºã«ãªãåå°ãç¯ã èŠªè¿æãé«ãã : å
±éã®äœéšãéããŠããäºããžã®çè§£ãæ·±ããããŒã ãšããŠã®ç¹ããã匷åãã éäžåãé«ãã : 軜ãã¢ã¯ãã£ããã£ãéããŠãåå è
ã®æèããªããµã€ãã®ããŒããžãšèªç¶ã«åŒã蟌ã ãã®èª¬æã«ãããåå è
ã¯ã¢ã€ã¹ãã¬ã€ã¯ã®éèŠæ§ãçè§£ããç©æ¥µçã«åå ããããšãã§ããŸããããã®äºåã®é
æ
®ããæ¬¡ã®ã¢ã€ã¹ãã¬ã€ã¯ã»ãã·ã§ã³ã§ã®èªç¶ãªåå ã«ã€ãªãããŸããã ã¢ã€ã¹ãã¬ã€ã¯ïŒç·åŒµãã»ãããäžäœæãè²ãæé ã¢ã€ã¹ãã¬ã€ã¯ãšããŠãäºåã«AIãæŽ»çšããŠäœæããçŠå²¡ã«ã¡ãªãã ã¯ã€ãºããã¹ã¿ãŒãããŸãããã¢ã€ã¹ãã¬ã€ã¯ã®ç®çã¯ãåå è
å士ã®ç·åŒµãã»ãããå Žã®é°å²æ°ãæããããèŠªè¿æãé«ããããšã§ãããäºãã®æå€ãªäžé¢ãç¥ããããªè³ªåãæããããããšã§ãç¬ã声ãçµ¶ããªãåãããªé°å²æ°ãäœãåºãããšãã§ããŸããã ç¹ã«ãã¯ãŒã¯ã·ã§ãã圢åŒã«äžæ
£ããªã¡ã³ããŒãããèªç¶ãªç¬ã声ãèãããç·åŒµããŠãã衚æ
ãåããã§ããæ§åãå°è±¡çã§ããããã®ã¢ã€ã¹ãã¬ã€ã¯ãéããŠãåå è
å
šå¡ãåãå俵ã«ç«ã¡ã次ã®ã»ãã·ã§ã³ã«åããæºåãæŽããŸããã 5ã°ã©ãŠã³ãã«ãŒã«ã®å
±æ ã¢ã€ã¹ãã¬ã€ã¯ã®åŸãã¯ãŒã¯ã·ã§ãããåæ»ã«é²ããããã®ã 5ã°ã©ãŠã³ãã«ãŒã« ããåå è
å
šå¡ã§å
±æããŸããããã®ã«ãŒã«ã¯ãä»å¹Žç§ãåå ãã瀟å€ã€ãã³ãã§è¬åž«ã®æ¹ã䜿çšããŠãããã®ã§ãéå¶è
ãšããŠåå ããç§ããã®å¹æã宿ããä»åã®ãªããµã€ãã§æ¡çšããããšã«ããŸããã ã»ãã èŽã åããšãã åŸ
〠æãã å®éã«äœéšè
ãšããŠåå ããããšã§ããããã®ã«ãŒã«ãåå è
ã®å¿ççå®å
šæ§ãé«ãã質ã®é«ãè°è«ãçã¿åºã广ã宿ã§ããŸãããä»åã®ãªããµã€ãã§ããåå è
å
šå¡ãåã䟡å€èгã§ã¯ãŒã¯ã·ã§ããã«èšãããšãã§ããŸããã ã¿ã€ã ã©ã€ã³ã«ãããããžã§ã¯ãã®ãµãããã ã¢ã€ã¹ãã¬ã€ã¯ã§å Žãæž©ãŸããã5ã°ã©ãŠã³ãã«ãŒã«ãã§åå è
å
šå¡ã®èªèãããã£ããšããã§ãã¡ã€ã³ã³ã³ãã³ãã§ãããã¿ã€ã ã©ã€ã³ã䜿ã£ããããžã§ã¯ãã®ãµããããããžãšç§»ããŸãããææ°æãããžã§ã¯ãã¯é·æã«ããããããéå»ã®åºæ¥äºãæç³»åã§æŽçããå
±éèªèãæã€ããšãéåžžã«éèŠã ãšèããŸããã ã¹ããã1ïŒã§ãããšãšæããããšãæžã ãŸããããŒã«äžã®æš¡é çŽã«ãããžã§ã¯ãã®ã¿ã€ã ã©ã€ã³ãåŒããåã¡ã³ããŒãå°è±¡ã«æ®ã£ãŠããã§ãããšãæããããšãä»ç®ã«æžãåºãã該åœããææã«è²Œãä»ããŠãããŸããããã®ããã»ã¹ã§ã¯ããŸãäºå®ãšããŠã®ãã§ãããšããæžãåºããããã«å¯ŸããŠãæããããšããè€æ°æžãåºããšããæç¢ºãªæé ã瀺ããŸããã äºåæºåãšããŠããããŸã§ã®è°äºé²ãNotebookLMã«èªã¿èŸŒã¿ãé³å£°åºåãµããªãŒãäœæããŸããããã®ãµããªãŒãåå è
å
šå¡ã§èãããšã§ããããžã§ã¯ãã®å
šäœåãå
±éèªèãšããŠæã€ããšãã§ããããå
·äœçã§æ·±ãè°è«ã«ã€ãªãããŸããã ä»ç®ã«ã¯è²åããæ¡çšããã§ãããšã¯é»è²ãæããããšã¯ãã®ä»ã®è²ã§åé¡ããããšã§ãèŠèŠçã«æ
å ±ãæŽçããããããŸãããã¢ããã°ãªææ³ã ãããããåå è
ãçŽæ¥æãåãããŠæ
å ±ãæŽçã§ããããžã¿ã«ã§ã¯åŸãããªãç©ççãªäœéšãéããŠãããæ·±ãè°è«ãçãŸããŸããã ã¹ããã2ïŒä»ç®ã貌ã ã¿ã€ã ã©ã€ã³äžã«ãéèŠãªãã€ã«ã¹ããŒã³ãèšå®ããååå è
ã該åœããææã®ä»ç®ã貌ãä»ããŠãããŸããã ãã®ã¹ãããã§ã¯ãã§ãããšã«ã€ããŠç°¡åã«èª¬æããæéãèšããŸãããããã«ãããä»ã®ã¡ã³ããŒãç¥ããªãã£ãåºæ¥äºããç°ãªãèŠç¹ã§ã®æãæ¹ãå
±æããããšãã§ãããããžã§ã¯ãã®å€é¢çãªçè§£ãæ·±ãŸããŸããã ç¹ã«å°è±¡çã ã£ãã®ã¯ãæžãã人ãèªã¿äžããããšã§ããããããã£ãããããããã£ãããšæ¬¡ã
ãšæãåºãæ¹§ãäžãããä»ç®ãã©ãã©ãå¢ããŠãã£ãããšã§ãããã®æ®µéã§åå è
å
šå¡ã®ç±éãäžæ°ã«äžãããã¯ãŒã¯ã·ã§ããã®é°å²æ°ã倧ããå€ãããŸããã ã¹ããã3ïŒã°ã«ãŒãã³ã°ãã ã¿ã€ã ã©ã€ã³ã«æ²¿ã£ãŠæžãåºãããä»ç®ããé¢é£æ§ã®ãããã®å士ã§ãŸãšããäœæ¥ãè¡ããŸãããåããããªèª²é¡ããåãææã®åºæ¥äºãåãããŒã ã«é¢é£ãããã®ãã°ã«ãŒãåããããšã§ããããžã§ã¯ãå
šäœã®èª²é¡ãããæç¢ºã«ãªããŸããã ã¹ããã4ïŒè©±ãæ·±æããããä»ç®ã«ã·ãŒã«ã貌ã ã°ã«ãŒãã³ã°ãããä»ç®ã®äžãããããã«è©³ããè°è«ããããããã¯ã課é¡ã«ã·ãŒã«ã貌ãããšã§ãåªå
é äœä»ããæ·±æãã®å¯Ÿè±¡ãæç¢ºã«ããŸããããã®ããã»ã¹ãéããŠããããžã§ã¯ãã®æåäœéšã課é¡ã転æç¹ãªã©ãèŠèŠçã«æç¢ºã«ãªããåå è
å
šå¡ãåãèŠç¹ã§ãããžã§ã¯ãã®å
šäœåãææ¡ã§ããããã«ãªããŸããã ã°ã«ãŒããã£ã¹ã«ãã·ã§ã³ ã¿ã€ã ã©ã€ã³ã®ãµããããåŸãæœåºããããããã¯ãåºã«ã°ã«ãŒãã«åãããã°ã«ãŒããã£ã¹ã«ãã·ã§ã³ã宿œããŸãããåã°ã«ãŒãã«ã¯45åéã®æéãèšããç¹å®ã®èª²é¡ãããŒãã«ã€ããŠæ·±æãããå
·äœçãªèª²é¡ã®æœåºã次ã®ãã¯ã¹ãã¢ã¯ã·ã§ã³ãå°ãåºãããšã«æ³šåããŸããã ãã¯ã¹ãã¢ã¯ã·ã§ã³ã®æœåºãšåªå
床決ã ã°ã«ãŒããã£ã¹ã«ãã·ã§ã³ã§åºãããå€ãã®ã¢ã€ãã¢ã課é¡ã®äžãããæãéèŠã§å®è¡å¯èœãªããã¯ã¹ãã¢ã¯ã·ã§ã³ããç¹å®ãããã®åªå
é äœã決å®ããŸããããã®æ®µéã§ã¯ãåã¢ã¯ã·ã§ã³ã®å®çŸå¯èœæ§ã圱é¿åºŠãèæ
®ããããŒã å
šäœã§åæã§ããåªå
é äœãèšå®ããããšãã§ããŸããã ãªããµã€ãèªäœã®ãµãããã ä»åã®ãªããµã€ããã©ãã ã广çã ã£ãããè©äŸ¡ãããããããµããããã®ãµãããããã宿œããŸãããæ©ãã«å
šå¡ãããœã³ã³ãéããŠããªããµã€ãã«éäžã§ããç°å¢ãäœã£ãããšããçŠå²¡ãšããå Žæãéžãã ããšã§æ®æ®µåå ãé£ããã¡ã³ããŒãåå ã§ããããšããç¹ã«è¯ãã£ãç¹ãšããŠæããããŸãããé·æéã®éå¬ã«ãé¢ããããè°è«ãéåããããšãªã掻çºã«é²è¡ã§ããã®ã¯ããªã¢ãŒãã¯ãŒã¯ã§ã¯å®çŸå°é£ãªå¯Ÿé¢ãªãã§ã¯ã®éäžåãšäžäœæã®è³ç©ã§ããã ãŸãšã ä»åã®ãªããµã€ãã¯ãææ°æãããžã§ã¯ãã®çŸç¶ã課é¡ãæŽçããä»åŸã®ã¢ã¯ã·ã§ã³ã«ã€ãªããã ãã§ãªããããŒã ãšããŠã®çµæåãé«ãã貎éãªæ©äŒãšãªããŸãããã¹ã¯ã©ã ãã¹ã¿ãŒãšããŠã¯ãŒã¯ã·ã§ãããã¶ã€ã³ãæ
åœããçµéšã¯ãä»åŸã®ãããžã§ã¯ãéå¶ã«ã倧ããªåŠã³ãšãªããŸããã ãããªææïŒ é·æãããžã§ã¯ãã®å¹æçãªãµããããææ³ïŒã¿ã€ã ã©ã€ã³ãµããããïŒã®å®è·µ AIãæŽ»çšããã¯ãŒã¯ã·ã§ãããã¶ã€ã³ã®å¹ææ€èšŒ åååå è
ãžã®é
æ
®ãšå¿ççå®å
šæ§ã®ç¢ºä¿ã«ãã質ã®é«ãè°è«ã®å®çŸ 5ã°ã©ãŠã³ãã«ãŒã«ã掻çšããããŒã å
šäœã®äŸ¡å€èŠ³çµ±äž å¯Ÿé¢ã§ã®ããŒã ãã«ãã£ã³ã°ã«ããä¿¡é Œé¢ä¿ã®åŒ·å
ã¡ã«ã«ãªããã§ QA Engineering manageãããŠãã @____rina____ ã§ãã æšå¹Ž2024幎11æã«éå¬ããã Agile Testing Days ãšããã§åå ããã¯ãŒã¯ã·ã§ããã«ã€ããŠç޹ä»ããŸãã Agile Testing Daysãšã¯äœã ã Agile Testing Days ãšã¯ããã€ãã®ãããã ã§æ¯å¹Žéå¬ãããŠããã«ã³ãã¡ã¬ã³ã¹ã§ããåå è
å±€ã¯ãã¹ã¿ãŒãã¢ãžã£ã€ã«ãã¹ã¿ãŒãQAãšã³ãžãã¢ããã¹ããªãŒãããã¹ããªãŒãã¡ãŒã·ã§ã³ãšã³ãžãã¢ãšãã£ãQAããã¹ãã«é¢ãããšã³ãžãã¢ã«å ãããã£ãããããŒããœãããŠã§ã¢ãšã³ãžãã¢ãã¢ãžã£ã€ã«ã³ãŒããã¹ã¯ã©ã ãã¹ã¿ãŒããããã¯ããªãŒããŒãããŒã ãªãŒããªã©æ§ã
ãªæ¹ã察象ã®ã«ã³ãã¡ã¬ã³ã¹ã§ããä»ååå ããæ¥æ¬èªè©±è
ã®åå è
ã¯æ°åã ã£ãããšããšãŒãããã®åå è
ãå€ãã£ãããã§ãã³ãã¥ãã±ãŒã·ã§ã³ã¯è±èªã§ãããªããŸããã Agile Testing Daysã§ã¯ã1æ¥ã®ã¯ãŒã¯ã·ã§ãããš3æ¥éã®ã«ã³ãã¡ã¬ã³ã¹ã§æ§æãããŠããŸããã«ã³ãã¡ã¬ã³ã¹ã§ã¯ãããŒããŒããã¯ãããã»ãã·ã§ã³ãããã«ãã£ã¹ã«ãã·ã§ã³ãã¯ãŒã¯ã·ã§ãããªã©ãéå¬ãããŸãããŸããã»ãã·ã§ã³ã®åéã«ã¯ã³ãŒããŒãã¬ã€ã¯ãã©ã³ããªã©ããæäŸãããæã®ãžã§ã®ã³ã°ããå€ã®é³æ¥œã€ãã³ããŸã§ãäžžäžæ¥ã€ãã³ããæ¥œããããã®ä»æããããããçšæãããŠããŸããã ãã«ã³ãã¡ã¬ã³ã¹äŒå Žã¯ã¢ãžã£ã€ã«ãã¹ãã®ç¬¬äžäººè
ãšãèšãã Lisa Crispin ã«äŒãããšãã§ããããããããã®æèè
ã«äŒããããåãæ©ã¿ãæã£ããšã³ãžãã¢ãšäº€æµã§ããããããšãŠãåºæ¿çãªã€ãã³ãã§ããã ãã¹ããŒã«ãŒã¯ã·ãã¢ãšã³ãžãã¢ã«éãããã¯ãããŠç»å£ãããæ¹ã®ã»ãã·ã§ã³ãªã©ãå¹
åºãç»å£è
ã®ããããã®çºè¡šãèãããšãã§ããŸããã Getting a grip on exploratory testing with test charters ãEwald WassinkSconewileæ°ãšRob van Sttenbergenæ°ã«ãããæ¢çŽ¢çãã¹ãã®ã¯ãŒã¯ã·ã§ããã§ããæ¢çŽ¢çãã¹ãã®ã¯ãŒã¯ã·ã§ããã¯åœå
ã§ãæã
èŠãããããã«ãªããŸããã ããã®ã¯ãŒã¯ã·ã§ããã¯ããã€ãã®ããŒãã«ã«åãããŠã°ã«ãŒãã¯ãŒã¯ãããŸãããç§ã®ã°ã«ãŒãã¯4åã§ã2åã¯ãã€ãããã®åå ã§ãè±èªã§ã³ãã¥ãã±ãŒã·ã§ã³ãããŸããã æ¬¡ã«ã¯ãŒã¯ã·ã§ããã®æµãã玹ä»ããŸãã ã¯ãŒã¯ã·ã§ããã®æµã 以äžã®ãããªæµãã§ã¯ãŒã¯ã·ã§ããããã¶ã€ã³ããŠããŸããã è¬åž«ã®èªå·±ç޹ä»ãšã¯ãŒã¯ã·ã§ããã®èª¬æ ããªãŒã¹ã¿ã€ã«ã§æ¢çŽ¢çãã¹ãããã 2ã§èŠã€ããäžå
·åã®çŽ¹ä» ãã¹ããã£ãŒã¿ãŒãå©çšããæ¢çŽ¢çãã¹ã ã°ã«ãŒããã£ã¹ã«ãã·ã§ã³ãšçºè¡š ç»å£è
ã®èæ¡ãããã¬ãŒã ã¯ãŒã¯ãå©çšããæ¢çŽ¢çãã¹ã ã°ã«ãŒããã£ã¹ã«ãã·ã§ã³ãšçºè¡š 1. è¬åž«ã®èªå·±ç޹ä»ãšã¯ãŒã¯ã·ã§ããã®èª¬æ è¬åž«2人ã®èªå·±ç޹ä»ããããŸãããæµ·å€ã®ããŒããŒããªã©ã¯åœå
ã§ãèŠãæ©äŒããããŸããããèªå·±ç޹ä»ãããªãå°è±¡ããã£ãã®ã§ãå°ãæå€ã§ããã圌ãã®ããã¯ããŒã³ãªã©ãç¥ãããšãã§ããŸããã 2. ããªãŒã¹ã¿ã€ã«ã§ãã¹ããå®è¡ãã 以äžã®URLã«ã¢ã¯ã»ã¹ããŠãå人ã§ããªãŒã¹ã¿ã€ã«ã§ãã¹ããããŸããã https://www.eviltester.com/page/tools/thepulper/ 顿ã¯Webãµã€ãã§ãåã
ã«äžå
·åãåºããŠãããŸãããã¹ãèšèšã¯ããã«ãçµéšããŒã¹ã§ãã¹ããå®è¡ããŸãã HTMLãšã³ã³ãŒããè¡ãããŠããªããããå
¥åãããå€ããã®ãŸãŸHTMLãšããŠè¡šç€ºãããäžå
·å HTMLãšã³ã³ãŒããããŠããªãããã«ãå
¥åå€ãšinput formã®è¡šç€ºãå€ãã£ãŠããŸãäžå
·å æ¥ä»ãå
¥åããæ¬ã«å€§ããªæ°åããããããã«Number Format ExceptionãçºçããŠããŸã£ãããããäžå
·åãšãããã©ããã¯ä»æ§æ¬¡ç¬¬ 3. çºèŠãããäžå
·åã®å
±æ ãåå è
å
šå¡ã§ãæ¢çŽ¢çãã¹ãäžã«çºèŠããäžå
·åã«ã€ããŠçºè¡šããŸãããç§ã¯èªèº«ãå ±åããããšããŠããäžå
·åããæ¢ã«ä»ã®åå è
ã«ãã£ãŠå ±åæžã¿ã§ããã確信ãæãŠãŸããã§ãããããã§ã念ã®ããé£åžã®æ¹ã«äžå
·åã®ç»é¢ãèŠããªãããããã®ãã°ã«ã€ããŠå ±åããããšæã£ãŠããã®ã§ãããæ¢ã«çºè¡šãããæ¹ã¯ããŸããïŒããšç¢ºèªããŸããããããšããã®æ¹ã¯ç§ã®çºè¡šããã©ããŒããŠãã ãããå®å¿ããŠçºè¡šã«èšãããšãã§ããŸããã 4. æ¢çŽ¢çãã¹ããšãã¹ããã£ãŒã¿ãŒã®è§£èª¬ ããã§ã¯ãæ¢çŽ¢çãã¹ããšã¯äœãããããŠãã¹ããã£ãŒã¿ãŒãšã¯äœãã«ã€ããŠè§£èª¬ããããŸãããè¬åž«ããã¯ãèåãªãœãããŠã§ã¢ãã¹ãç ç©¶è
ã§ãã Cem Kaner æ°ã®èšèãåŒçšãã€ã€ãããã¹ããã£ãŒã¿ãŒã¯ããã¹ãã®ãŽãŒã«ãæç¢ºã«ããããã®èšç»ã§ããããšãã説æããããŸããã 以äžã¯ãã¹ããã£ãŒã¿ãŒã®äŸã§ãã define your goal; charter template target where are you exploring? resources what resources do you need ? information what kind of information do you want to discover 5. ãã¹ããã£ãŒã¿ãŒãçšããæ¢çŽ¢çãã¹ã é£ã®åžã®æ¹ãšãã¢ã«ãªããå
ã»ã©ã®ãã¹ã察象ã®Webã¢ããªã±ãŒã·ã§ã³ã«å¯ŸããŠãä»ç®ã䜿ã£ãŠãã¹ããã£ãŒã¿ãŒãäœæããŸããããã¢ã¯ãŒã¯åŸãã°ã«ãŒãå
šäœã§ããããã®ãã¢ãã©ã®ãããªèãã§ãã¹ãé
ç®ãéžã³ããã¹ããã£ãŒã¿ãŒãäœæããããå
±æããè°è«ããŸããã 6. BRIEFãã¬ãŒã ã¯ãŒã¯ã®ææ¡ è¬åž«ãããElizabath Hendricsonæ°ãæå±ãããã¹ããã£ãŒã¿ãŒã«ã€ããŠã®èª¬æããããŸãããç§ã¯ãã¹ããã£ãŒã¿ãŒã«ã€ããŠã圌女ã®èæžã§ç¥ã£ãŠã¯ãããã®ã®ãæ¹ããŠèª¬æãåããããšã§ãèªèº«ã®æ±ããŠããéåæãæç¢ºã«ãªããŸãããããã¯ãåãå
¥ãæ¡ä»¶ïŒAcceptance CriteriaïŒãæžãéãã€ãŸããã¹ãèšèšæã«ãæ
å ±ããã¹ã芳ç¹ããèšè¿°ããŠããç¹ã§ããã ãããŠãè¬åž«ããæå±ããæ°ãããã¬ãŒã ã¯ãŒã¯ãBRIEFãã®èª¬æããããŸããã BRIEFã¯ãBehaviorïŒè¡åïŒãResultïŒçµæïŒãImpedimentsïŒé害ïŒãExpectationïŒæåŸ
ïŒãFeelingïŒææ
ïŒ ã®é æåãåã£ããã®ã§ãããã®ãã¬ãŒã ã¯ãŒã¯ãçšããããšã§ãæ¯ãèãã軞ãšãããã¹ããã£ãŒã¿ãŒãäœæããããšãã§ããŸããæåŸã«ããã®BRIEFãã¬ãŒã ã¯ãŒã¯ã䜿ã£ãŠãã¢ã¯ãŒã¯ãè¡ãããã®åŸãä»ã®ã°ã«ãŒããšå
¥ãæ¿ãã£ãŠãã£ã¹ã«ãã·ã§ã³ãè¡ããŸããã ãã¢ã¯ãŒã¯ã§äœ¿ã£ãä»ç® ãã®ã¯ãŒã¯ã·ã§ããã§ç¹ã«çŽ æŽããããšæããã®ã¯ãè¬åž«èªèº«ãèæ¡ãããã¬ãŒã ã¯ãŒã¯ãBRIEFããæŽ»çšããŠããç¹ã§ããæ¢çŽ¢çãã¹ãã®ã¯ãŒã¯ã·ã§ããã§ã¯ãæãåããæŒç¿ãåå è
åå£«ã®æèŠäº€æããã¹ããã£ãŒã¿ãŒã®äœæãªã©ã¯ããè¡ãããŸããããããä»åã®ããã«æ°ãããã£ãŒã¿ãŒã®ãã¬ãŒã ã¯ãŒã¯ãå®éã«è©Šãæ©äŒã¯åããŠã§ãéåžžã«ææçŸ©ã§ãããå人çã«ããBRIEFã®ãã¬ãŒã ã¯ãŒã¯ã¯æ®æ®µç§ããã¹ããèããéã®æèåè·¯ã«è¿ãããšãŠããã£ããããŸããã Journey From Manual to Automation Pythonic Tester ç¶ããŠãMateusz Adamczakæ°ãšMichal Pilarskiæ°ã«ããããã¹ãèªååã®ååŠè
ã察象ãšããã¯ãŒã¯ã·ã§ããã«ã€ããŠã玹ä»ããŸãããã®ã¯ãŒã¯ã·ã§ããã¯ãã³ãºãªã³åœ¢åŒã§è¡ãããåå è
ã¯èªèº«ã®PCã䜿ã£ãŠå®éã«èªåãã¹ããäœæããŸããã ã¯ãŒã¯ã·ã§ããã®æµã ã¯ãŒã¯ã·ã§ããã§ã¯ä»¥äžã®ãããªæµãã§ã¯ãŒã¯ã·ã§ããããã¶ã€ã³ããŠããŸããã å¿
èŠãªããŒã«ãšãªããžããªã®ããŠã³ããŒã Scrachã䜿ã£ãŠã¢ãã¡ã®äœæ Pythonã®ã³ãŒãã«ã³ã³ããŒããã ãã¹ãã³ãŒãã®äœæ ã°ã«ãŒããã£ã¹ã«ãã·ã§ã³ãšçºè¡š ç»å£è
ã®èæ¡ãããã¬ãŒã ã¯ãŒã¯ãå©çšããæ¢çŽ¢çãã¹ã ã°ã«ãŒããã£ã¹ã«ãã·ã§ã³ãšçºè¡š ãã¡ããã²ãšã€ãã€ç޹ä»ããŸãã 1. å¿
èŠãªããŒã«ãšãªããžããªã®ããŠã³ããŒã GitLabã®ãªããžããªãPythonãJetBrainsãããŠã³ããŒãããŸãã GitLab – GitLab.com – Files · ATD_workshop_manual2auto · Michal Pilarski / python_kids · GitLab Python.org – Python.org JetBrains – PyCharm – https://www.jetbrains.com/pycharm/download/download-thanks.html?platform=macM1&code=PCC 2.Scratchã䜿ã£ãã¢ãã¡ãŒã·ã§ã³åç»äœæ Scratchã䜿ã£ãŠã¢ãã¡ãŒã·ã§ã³åç»ãäœæããŸãããæåã«è¬åž«ãç»é¢å
±æããªããäœãæ¹ã説æããåå è
ã¯ããã«å£ã£ãŠäœæ¥ãé²ããŸãããScratchã¯ãåäŸåãã®ããã°ã©ãã³ã°åŠç¿ããŒã«ãšããŠæ¥æ¬ã§ã人æ°ããããçŽæçãªæäœã§ã¢ãã¡ãŒã·ã§ã³ãäœæã§ããŸãããã®ãããããã°ã©ãã³ã°ååŠè
ã§ãåé¡ãªãåãçµãããšãã§ããŸãããè¬åž«ã®æç€ºã«åŸãããã£ã©ã¯ã¿ãŒãååŸã«åãããããé³ã鳎ãããããšãã£ãç°¡åãªåäœãäœæããŸããã 3. Pythonã³ãŒããžã®å€æ Scratchã§äœæããã¢ãã¡ãŒã·ã§ã³ã宿ããã®ã§ã次ã¯ãããPythonã®ã³ãŒãã«å€æããŸã 倿ã«å¿
èŠãªã³ãŒãã¯äºåã«çšæãããŠããŸããã ãŸãã¿ãŒããã«ã§ python -V ãå®è¡ããŠPythonã®ããŒãžã§ã³ã確èªããæ¬¡ã« pip install -r requirements.txt ãå®è¡ããŠå¿
èŠãªã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããŸãããã®åŸãScratchã§äœæãã kitty.sb3 ãã¡ã€ã«ã倿ããããšã§ãPythonã®ã³ãŒããçæãããŸããã è¬åž«ããåºæ¬çãªPythonã³ãŒãã®èª¬æãããããã®åŸã¯åå è
èªèº«ã§ã³ãŒãã®å®è£
ãè¡ããŸãããç§ã®äœæããã¢ãã¡ãŒã·ã§ã³ã«ã¯èæ¯ããªãã£ããããçæãããã³ãŒãã®6è¡ç®ãã³ã¡ã³ãã¢ãŠãããå¿
èŠããããŸããã 4. ãã¹ãã³ãŒãã®äœæ ãããããã¹ãã³ãŒãã®äœæã§ããå
ã»ã©ã³ã³ããŒãããã³ãŒãã«å¯ŸããŠãã¹ãã³ãŒããå®è£
ããŸãã ãè¬åž«ãç°¡åãªãã¹ãã®ãµã³ãã«ã³ãŒãã玹ä»ããŠãããŸããããã®ãµã³ãã«ã³ãŒãã¯ãScratchã§äœæããã¢ãã¡ãŒã·ã§ã³ã®åãããã¹ããããã®ã§ãpytestã©ã€ãã©ãªã䜿çšããŠããŸãããäŸãã°ããã£ã©ã¯ã¿ãŒãæå®ãããäœçœ®ã«ç§»åããããšãæ€èšŒãããã¹ãããç¹å®ã®é³ã鳎ãããšãæ€èšŒãããã¹ããªã©ããããŸãããè¬åž«ãã³ãŒããç»é¢å
±æããªãã説æããŠãããã®ã§ãç§ãã¡ãèªèº«ã®PCã§åãããã«ã³ãŒããæžãåããŸããããšã©ãŒãçºçããç®æã¯ããšã©ãŒã¡ãã»ãŒãžãèªã¿ãªããä¿®æ£ããããè¬åž«ã«è³ªåãããããŠè§£æ±ºããŸããããã®åŸãã¿ãŒããã«ã§pytestã³ãã³ããå®è¡ããŠãã¹ããå®è¡ãããã¹ããæåããããšã確èªããŸããã詳现ãªãã¹ãã³ãŒãã«ã€ããŠã¯ããã²GitLabã®ãªããžããªïŒ[GitLabã®ãªããžããªURL]ïŒã«ã¢ã¯ã»ã¹ããŠç¢ºèªããŠãã ãããã¯ãŒã¯ã·ã§ããã§äœ¿çšãããã¹ãŠã®ãã¹ãã³ãŒããé¢é£è³æãå
¬éãããŠããŸãã®ã§ããã¹ãã³ãŒãã®å
šäœåãææ¡ããããå®éã«ãã¹ããå®è¡ãããããããšãã§ããŸãã ãã®ã¯ãŒã¯ã·ã§ããã®ç¹çãã¹ãç¹ã¯ããŸãååŠè
ã®åå è
ãå®éã«åãããã°ã©ã ãäœæã§ããããšã§ããScratchãæŽ»çšããããšã§ãåå è
ãåãããã°ã©ã ãèªãäœããããã«ãããšããã¢ã€ãã¢ã¯éåžžã«çŽ æŽããããšæããŸãããéåžžã®èªåãã¹ãã«é¢ãããã³ãºãªã³ã§ã¯ãå€ãã®å Žåãäºåã«çšæãããããã°ã©ã ã«å¯ŸããŠãã¹ãã³ãŒããæžãããšãäžè¬çã§ããããããä»åã®ã¯ãŒã¯ã·ã§ããã§ã¯ãåããã®ããŒãããèªåã§äœãããã®ãã¹ãã³ãŒããŸã§æžããšããäžé£ã®æµãããæ°æéãšããçãæéã§äœéšã§ããç¹ãçŽ æŽããããšæããŸãããã¯ãŒã¯ã·ã§ããã®æéå
ã§ãã¹ãŠã®ãã¹ãã³ãŒããå®è£
ããããšã¯ã§ããŸããã§ããããåå è
å
šå¡ãäœããã®åœ¢ã§ãã¹ãã³ãŒããå®è£
ããããšãã§ããŸãããååŠè
åãã«Scratchã§ã¢ããªäœæãäœéšããããããPythonã³ãŒãã«å€æããèªèº«ãäœæãããããã¯ãã³ãŒãã«å¯ŸããŠãã¹ãã³ãŒããå®è£
ãããšããã¯ãŒã¯ã·ã§ããã®ãã¶ã€ã³ã¯ãæ¬åœã«çŽ æŽããããšæããŸããã ãããã« ä»åã®èšäºã§ã¯åå ãã2ã€ã®ã¯ãŒã¯ã·ã§ããã«ã€ããŠã玹ä»ããŸãããã©ã¡ãã®ã¯ãŒã¯ã·ã§ããããçæéã§ææã宿ã§ãããããªå·¥å€«ãåããããŠããããã®å
容ãšãšãã«å€§å€å匷ã«ãªããŸãããã¯ãŒã¯ã·ã§ããã®ãªãŒããŒã®æ¹ã
ã«ã¯ãçŽæ¥ãäŒãããŠæè¬ã®æ°æã¡ããäŒããããã²ãã®çŽ æŽãããã»ãã·ã§ã³ãæ¥æ¬ã«ããã¿ããªã«ãåºãããã®ã§ããµã€ãã®URLãªã©ãå
¬éããŠãè¯ãã確èªãããŠããã ããŸããã ãç§èªèº«ãé·å¹Žè±èªã«èŠææèããããã¯ãŒã¯ã·ã§ãããžã®åå ã¯ãä»ã®åå è
ãè¬åž«ã®æ¹ã
ã«ãè¿·æããããŠããŸãã®ã§ã¯ãªãããšããäžå®ããããŸãããããããåãå¿ãæã€ä»²éãã¡ãšãäºãã®äŒãããå
容ãçè§£ããããšããå§¿å¢ã«è§Šãããã®ãã¡ã®äžäººãšã¯æ°é±éåŸã«ç§ã®äœãè¡ãžå¶ç¶æ
è¡ã«æ¥ããšã®ããšã§ãé£äºã®çŽæãŸã§ã§ããŸããããŸããåå è
ã®äžã«ã¯ç¬¬äºå€åœèªãšããŠè±èªãåŠãã§ããæ¹ãããããã§ãã¿ããªãçå£ã«è³ãåŸããŠãããå§¿å¢ãå°è±¡çã§ããã ãçµæãšããŠãç§èªèº«ãéåžžã«æ¥œããåŠç¿ã§ããæéãéããããšãã§ããŸãããåãã°ã«ãŒãã«ãªã£ãåå è
ã®æ¹ã
ãããšãŠã芪åã§å©ããããŸãããç§ã¯è±èªãåŸæã§ã¯ãããŸããããAgile Testing Daysã§ã¯ããŒããŒããã¯ãããæ°å€ãã®ã»ãã·ã§ã³ãã¯ãŒã¯ã·ã§ãããããã«ãã£ã¹ã«ãã·ã§ã³ãéå¬ãããç»å£è
ã®çµéšã«åºã¥ããçºè¡šãå€ããå
±æã§ããå
å®¹ãæ°å€ããããŸããã ãã»ãã·ã§ã³ä»¥å€ã®æéã«ãé£äºãæäŸãããåå è
åå£«ãæ¥œãã亀æµã§ããå ŽãèšããããŠããã3æ¥éãéããŠå€ãã®æ¹ã
ãšè©±ãããšãã§ããŸããã ãä»å¹Žã® Agile Testing Daysã®åå åä» ãå§ãŸããŸããããã®ããã°ããã£ããã«ãèªè
ã®ã¿ãªããŸãã¯ãŒã¯ã·ã§ããã詊ããŠã¿ãããæµ·å€ã®ã«ã³ãã¡ã¬ã³ã¹ãžã®åå ã«ææŠããŠã¿ãããšæã£ãŠããã ãããããšãŠãããããã§ãã