ããã«ã¡ã¯ãã½ã¦ã¾ã¦ã® Software Engineer (CTO) ã® @suguru ã§ããé£è¼ï¼ãã¡ã«ã«ãªShopsããã¬ãªã¼ãã³ã¾ã§ã®éçºã®è£å´ã®1æ¥ç®ãæ å½ããã¦ããã ãã¾ãã
7ææ«ã«ã¡ã«ã«ãªShopsã¨ããæ°ãããµã¼ãã¹ãå ¬éããã¾ãããã¡ã«ã«ãªShops ã¯ã2021å¹´1æã«ã¡ã«ã«ãªã®ã°ã«ã¼ãä¼ç¤¾ã¨ãã¦è¨ç«ããã½ã¦ã¾ã¦ãæ°ãã«ç«ã¡ä¸ãããµã¼ãã¹ã§ãã
ãã®è¨äºã§ã¯ãã¡ã«ã«ãªShops ãä½ãã«ããããã©ããã£ãæè¡ãã¢ã¼ããã¯ãã£ãé¸å®ããã®ãããã®èæ¯ã¨æææ±ºå®ãã¾ã¨ãã¦å ±æãããã¨æãã¾ãã
monorepo

ã¾ãæåã«ããã¸ã§ã¯ããã¹ã¿ã¼ãããã¨ãã«ããµã¼ãã¹ã®ãªãã¸ããªãä½ãã®ã§ãããè¿·ãã monorepo ã«ããæ§æã鏿ãã¾ãããmonorepo ã¯ãã·ã¹ãã ãæ§æããè¤æ°ã®ã³ã³ãã¼ãã³ãã®ç¬ç«æ§ãä¿ã¡ã¤ã¤ãå ¨ã¦ã®æ§æã1ã¤ã®ãªãã¸ããªã§ç®¡çããææ³ã§ããä»åã®éçºã§monorepo ãæ¡ç¨ããçç±ã¯ããã¤ãããã¾ãã
ã·ã¹ãã å ¨ä½ã®ææ¡
monorepo ã®å©ç¹ã¯ãã·ã¹ãã ã«å¿ è¦ãªã³ã³ãã¼ãã³ããå ¨ã¦1ã¤ã®ãªãã¸ããªã«éç´ããã¦ãããã¨ã§ããgit clone ãä¸åº¦å®è¡ããã ãã§ãã·ã¹ãã ã®éçºã«å¿ è¦ãªã³ã¼ãããã¹ã¦æã«å ¥ãã¾ããã·ã¹ãã å ¨ä½ã®ææ¡ã容æã«ãªããã³ã³ãã¼ãã³ãå士ã®ä¾åé¢ä¿ãå ±æã³ã¼ãã®ç®¡çããããããªãã¾ããã¾ããåç §ããã³ã¼ãã常㫠Single Source of Truth ã¨ãªããããã³ã³ãã¼ãã³ãéã®ã³ã³ããªã¯ããèµ·ãã«ãããªãã¾ãã
Pull Request ãã¼ã¹éçºã¨ã®ç¸æ§
monorepo ã§æãæããå¤åã¯ãPull Request ãä½ãæããããã¾ãããé常ãªãã¸ããªãè¤æ°ããå ´åãPull Request ã¯å¤æ´ã«å½±é¿ãããåãªãã¸ããªã«ä½ããé åºãããã¼ã¸ãããã¼ã¸ã§ã³ã®ä¾åé¢ä¿ãæ´æ°ããªããã°ãªãã¾ãããmonorepo ã§ã¯ã1ã¤ã® Pull Request ã«è¤æ°ã®ã³ã³ãã¼ãã³ãã®å¤æ´ãå«ãããããããæ©è½å¤æ´ã®ä¾å管çããããããPull Requestãã¨ã®ãããã¤ç°å¢ã®æä¾ã容æã«ãªãã¾ããå®éã«ãã¡ã«ã«ãª Shops ã§ã¯ Pull Request ãã¨ã«ç¬ç«ããç°å¢ããããã¤ããæ©è½ã稼åãã¦ããã monorepo ã®æ©æµãåãã¦éçºãã¦ãã¾ãã

ã³ãããã¿ã¤ã ã©ã¤ã³ã¨å¤æ´ã®å¯è¦é å
monorepo ã§éçºãããã¨ãå ¨ã¦ã®å¤æ´ãPull Request ãç®ã«å ¥ããã¨ã«ãªãã¾ãããªãã¸ããªãåå²ããå ´åãé常ã¯èªåãæ å½ãããªãã¸ããªããè¦ãªããã¨ãå¤ãã§ãããmonorepo ã§ã¯èªåãæ®æ®µé¢ãããªãé åã®å¤æ´ãç®ã«å ¥ã£ã¦ãããããã·ã¹ãã å ¨ä½ãã©ããã£ã夿´ããªããã¦ããã®ããä½ãèµ·ãã¦ãããã®ãã©ããã³ã°ããããããªãã¾ããã¾ããã¿ã¤ã ã©ã¤ã³ã1ã¤ã«çµ±åããããããã³ãããå±¥æ´ãè¦ãã°æç³»åã§èµ·ãã¦ããå ¨ä½ã®å¤æ´ãç°¡åã«ææ¡ã§ãã¾ãã
Protobuf ã Schema ã¨ã®ç¸æ§
Protobuf ã使ã£ãéçºãçµé¨ãããã¨ãããå ´åãçæã³ã¼ãã®ç®¡çããprotobuf ã¸ã®ä¾å管çã«åè¦å «è¦ãããã¨ãããã¨æãã¾ãã monorepo ã§ã¯ã protobuf ãå ¨ä½ã®ä¸é¨ã¨ãã¦çµã¿è¾¼ã¾ãããããprotobuf ã®å¤æ´ã¨ãã¢ããªã±ã¼ã·ã§ã³ã³ã¼ãã®å¤æ´ãä½µãã¦è¡ããã¨ãã§ãã¾ããããã«ãçæã³ã¼ãããªãã¸ããªã«ã³ãããããå¿ è¦ããªããªããprotoå®ç¾©ã¨ã³ã¼ãã®æ´åæ§ãèããªãã¦ãããªãã¾ããå¾è¿°ãã GraphQL ã®ã¹ãã¼ãã«ã¤ãã¦ãåæ§ã®ã¡ãªãããããã¾ãã
ã¡ã«ã«ãªShops ã®ãªãã¸ããªæ§æ
é常 monorepo ã§ã¯ãè¨èªã«é¢ä¿ãªããæ©è½ããã¼ã¹ã¨ãã¦æ§æããã®ãä¸è¬çã ã¨æãã¾ããã¡ã«ã«ãªShops ã§ã¯ãTypescript, Go, Python ã主è¦ãªè¨èªã¨ãã¦ä½¿ããã¦ãããåè¨èªã®ã¨ã³ã·ã¹ãã ã CI/CD ã管çãããããããããè¨èªãã¨ã«ã«ã¼ããã£ã¬ã¯ããªãåå²ãããã¨ã«ãã¾ããã

monorepo ã§ã®éçºä½é¨è¨ã徿¥å ¬éäºå®ã§ãããã詳ããå 容ã«ã¤ãã¦ã¯ãã¡ãã®è¨äºãåç §ãã¦ãã ããã
Bazel
![]()
monorepo ãæ§æããä¸ã§ããã«ãã·ã¹ãã ã¯éè¦ãªé¸æã§ããã¡ã«ã«ãªShops ã§ã¯ãå®ç¸¾ã®å¤ã Bazel ãæ¡ç¨ãã¾ããã
Bazel ã®è¯ãã¨ãã
Bazel ã®å©ç¹ã¯ãbazel ã³ãã³ãããããã°ãmonorepo ã®ããããã³ã¼ãããã«ãããå®è¡ãããã¨ãã§ããç¹ã§ãã
monorepo ã«ããã¦ãåè¨èªãã¨ã®ç°å¢ãæ´åãããããã¼ã«ã«ç°å¢ãæ´ãããã¨ã¯ããªããªã骨ãæãã使¥ã§ããBazel ã¯ããã®ç°å¢æ§ç¯ãã¹ããããã¦ãå¿
è¦ãªãã¼ã«ããã®ãã¼ã¸ã§ã³ããã«ãã·ã¹ãã ã«çµã¿è¾¼ãã§ãã¾ãã¾ãã
ã¾ããä¾åé¢ä¿ã管çããã¦ããããããããã«ãã«å¿ è¦ãªãã«ããèªåã§è¡ããã¾ããä¾ãã°ãprotobuf ã«ä¾åããã³ã¼ãããã«ãããå ´åã¯ãprotobuf ã®ã³ã¼ãçæãèªåã§å®è¡ããã¾ãã
ããã«ãBazel 㯠Cache System ãåªãã¦ãããããå·®åã®ãã«ããé常ã«é«éã§ããç°å¢æ´åã¯å¤§å¤ã§ããããã¾ãæ©è½ããã¨ãã®ãã«ãéåº¦ã¯æ°æã¡ãããããã«é«éã§ãã
Bazel ã®é£ããã¨ãã
Bazel ã®æå¤§ã®é£ç¹ã¯ãè¨èªãæã¤ã¨ã³ã·ã¹ãã ã使ããªããã¨ãå¤ãæã§ããä¾ãã°ãYarn/npm workspaces ã«å¯¾å¿ãã¦ããªãããããããã®æ©è½ã¨ã®ä½µåã¯å°é£ãªå£ãããã¾ããBUILD ãã¡ã¤ã«ã常ã«å¿ è¦ã¨ããããããããã®ãã¡ã¤ã«ãæ¯åä½ããç·¨éããå¿ è¦ãããã¾ãã
Goè¨èªã¯ Gazelle ã®ãããªçæãã¼ã«ãå å®ãã¦ãããããæ¯è¼çè¦ã«ã¯ãªãã¾ããããä»ã®è¨èªã¯ãªããªãããã¯è¡ãã¾ããã
Bazel ã対å¿ãã¦ããªãæ©è½ã使ãå ´åãå¿ ã Bazel ã¨ã®æ ¼éãå§ã¾ãã¾ãã ããã¦ãBazel ã® Sandbox ç°å¢ã¨ Starlark è¨èªãæéãããã¦çè§£ãã解決ããªããã°ãªãã¾ãããããã«æéãåããããã¨ããBazelã®é£ããæã§ãã
ã¡ã«ã«ãªShopsã§ã¯ãä¸è¨ã®èª²é¡ãããããã«ä¸é¨ Bazel ã«å¯¾å¿ãã¦ããªããµã¼ãã¹ãããã¾ãã社å ã§ã¯ "Bazel Engineer" ãå¿ è¦ã ãããã¨ã¤ã¶ãããããã¦ãã¾ãã
ã¢ã¼ããã¯ãã£ã®å ¨ä½å
ã¡ã«ã«ãªShops 㯠Google Cloud Platform ãå©ç¨ãã¦ãããç°¡åãªå ¨ä½åã¯ä»¥ä¸ã®ããã«ãªã£ã¦ãã¾ãã

ããã³ãã¨ã³ã㯠web ãã¼ã¹ã«ãªã£ã¦ãããBFFã¨ã㦠GraphQL ãµã¼ãã¼ããã㦠Backend 㯠Go ã Python ã§ç¨¼åãã Microservices 群ã¨ãªã£ã¦ãã¾ãããã¼ã¿ãã¼ã¹ã¯ Microservices ãã¨ã«ç¬ç«ãããã¼ã¿ãã¼ã¹ãæã£ã¦ãã¾ãããã¼ã¿ãã¼ã¹ã¯ PostgreSQL ã主ä½ã«ãªã£ã¦ãã¾ãã
以ä¸ã«ãé åãã¨ã®æè¡æææ±ºå®ã«ã¤ãã¦ã¾ã¨ãã¦ãã¾ãã
Serverless
ã½ã¦ã¾ã¦ã§ã¯ãã¨ã³ã¸ãã¢ãã¼ã ãã¾ã å°ããããããªãã¬ã¼ã·ã§ã³ã®è² æ ãæå°åããããã«ããµã¼ãã¬ã¹ã¢ã¼ããã¯ãã£ãç©æ¥µçã«æ¡ç¨ãã¦ãã¾ãã
ä¾ãã°ããµã¼ãã¼ãµã¤ãã®ã»ã¨ãã©ã®ã¢ããªã±ã¼ã·ã§ã³ã¯ãGoogle Cloud Platform ä¸ã® Cloud Run ã使ã£ã¦ç¨¼åãã¦ãã¾ãã

å®éãkubernetes ã®ã¯ã©ã¹ã¿ã¼ãã¤ã³ã¹ã¿ã³ã¹ã¯ãããã¯ã·ã§ã³ç¨¼åç°å¢ã§ã¯å©ç¨ãã¦ãã¾ããã
ã¾ãã購買å¦çãªã©ã« Cloud Workflow ãå©ç¨ããã¯ã¼ã¯ããã¼ãå¿ è¦ãªã±ã¼ã¹ããµã¼ãã¬ã¹ã§å¦çãã¦ãã¾ãã
Cloud Run ã¯ãªãã¬ã¼ã·ã§ã³ã®è² æ ãå°ãªã便å©ã§ãããããã¯ã¨ã³ãããã»ã¹ãåããªããªã©ãå¤ãã®å¶ç´äºé ãããã¾ãããã®å¶ç´ã«ãã£ã¦è¨è¨ã®é£æåº¦ã¯ä¸ãã£ã¦ãã¾ãã䏿¹ã§ãå¶ç´ãããããã«ãå¿ ç¶çã«ã·ã³ãã«ãªè¨è¨ã«ãªããå ¨ä½ã®æ§æãã·ã³ãã«ã«ãªã£ã¦ãã¾ãã
ãµã¼ãã¬ã¹ã§ã®éç¨ç°å¢ã¯éçºã«éä¸ã§ãã䏿¹ã§ããµã¼ãã¬ã¹ç¹æã®å¶ç´ãåé¡ã解決ããå¿ è¦ããããããã¡ãªããã»ãã¡ãªãããæ··å¨ãã¾ããã¡ã«ã«ãª Shops ã«ããã¦ã¯ãå¶ç´ããã¾ãåããã·ã³ãã«ãªæ§æãç¶æããã¦ãããããkubernetes ã®è¤éãªè¨å®ãã«ã¼ã«ãèããªãã¦è¯ããªããé常ã«è¯ã鏿ã§ããã
Next.js

ã¡ã«ã«ãªShopsã®ããã³ãã¨ã³ãã¯å ¨ã¦Webãã¼ã¹ã«ãªã£ã¦ãã¾ããããã¯ãã¡ã«ã«ãªã¨ããæ¢åã®ã¢ããªã«çµã¿è¾¼ãææ®µã¨ãã¦ãç¬ç«ããç°å¢ã§ã·ã¹ãã ãæè»ã«æ§ç¯ããææ®µã§ãããã¾ããã
Webã®ãã¬ã¼ã ã¯ã¼ã¯ã¨ãã¦é¸å®ããã®ã¯ next.js ã§ããWebã§ãã以ä¸ãã¼ã¸è¡¨ç¤ºã®é度ã¯ä½ãããåªå ããã¾ããCSR, SSR, ISR ãªã©ã®æ©æ§ãæã¡ãCDN ã¨ã®æ§æã¨ãç¸æ§ãè¯ã next.js ã¯ãã¹ããªé¸æã§ããã
詳細ã«ã¤ãã¦ã¯ã徿¥å¥ã®è¨äºã§å ¬éäºå®ã§ãã
Microservices


ã¡ã«ã«ãªShopsã®ããã¯ã¨ã³ãã¯ãMicroservices ã¢ã¼ããã¯ãã£ãæ¡ç¨ãã¦ãã¾ããè¨èªã¨ãã¦ã¯ Go ãå¤ãã ããããã®ãµã¼ãã¹ã¯ gRPC ãæ¡ç¨ãã¦ãã¾ãããµã¼ãã¹ãã¼ã³ãæã«ã¯ã30以ä¸ã® Microservices ã稼åãã¦ããç¶æ ã§ããã
Microservices ã鏿ããçç±ã¯ããããã¤ã夿´ã®é度ã¨ã責任ã®ç´°ååã§ããã¾ããgRPC ã«ããã¤ã³ã¿ã¼ãã§ã¤ã¹ã®å¼·å¶åãé¸å®ã®çç±ã«ãªãã¾ããmonorepo ã®æ©æµãããããµã¼ãã¹å ¨ä½ã®æ§é ã¯ã·ã³ãã«ã§å¯è¦æ§ã®é«ãç¶æ ãç¶æã§ãã¦ãã¾ãã
詳細ã«ã¤ãã¦ã¯ã徿¥å¥ã®è¨äºã§å ¬éäºå®ã§ãã
GraphQL / NestJS


Microservices ã¢ã¼ããã¯ãã£ãæ¡ç¨ããå ´åãMicroservices ã¸ã®ã¢ã¯ã»ã¹ãã·ã³ãã«ã«ããããã«ã BFF (Backend for Frontend) ã®ã¬ã¤ã¤ã¼ã¯å¿
é ã§ãã
ã¡ã«ã«ãª Shops ã§ã¯ãGraphQL ãBFFã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¨ããNestJS ãã¬ã¼ã ã¯ã¼ã¯ãæ¡ç¨ãã¾ãããå¤ãã®ä¾åããã³ã³ãã¼ãã³ãã«ã¢ã¯ã»ã¹ããããã«ãNestJS ã®æã¤ DI(Dependency Injection) ã®ã¢ããã¼ãã¯ç¸æ§ãè¯ãããã§ãã
ã¾ããGraphQL ã®ã¹ãã¼ã管çã¯æ©ã¾ãã課é¡ã§ãããNestJS ã® Code First ã¢ããã¼ãã¯ã³ã¼ãã«éä¸ãããã¨ãã§ããè¯ãææ³ã§ãããããã«ãã£ã¦ã¨ã³ã¸ãã¢ã¯ã¹ãã¼ãã¨ã³ã¼ããåæããå¿ è¦ããªããªããã³ã¼ãã ãã管çããã°ãããªãã¾ããã
PostgreSQL
![]()
ãã¼ã¿ãã¼ã¹ã¯ Microservices ãããããç¬ç«ãã¦ç®¡çãã¦ãã¾ããã¡ã«ã«ãªShops ã§ã¯ãPostgreSQL ãæ¡ç¨ãã¾ãããã¹ã¿ã¼ãåæã¯ CockroachDB ãæ¤è¨ãã¦ãã¾ãããã Go ã§æ¡ç¨ãã ORM ã§ãã ent ã対å¿ãã¦ããªãã£ãã®ã¨ãCloud SQL ã§ã®éç¨ãåªå ãã PostgreSQL ã鏿ãã¦ãã¾ããä»å¾ CockroachDB ã¸ã®ç§»è»¢ãæ¤è¨ãã¦ãã¾ãã
Code Server
![]()
ã¡ã«ã«ãªShopsã§ã¯ãéçºç°å¢ã¨ã㦠code-server ãæä¾ãã¦ãã¾ããããã¯ããµã¼ãã¼ãµã¤ãã§ç¨¼åãã Visual Studio Code ã§ããã©ã¦ã¶ã Chrome App ã§ã¢ã¯ã»ã¹ãããã¨ã§ Visual Sudio Code ã«è¿ãéçºç°å¢ããã¼ã«ã«ãã·ã³ã«æä¾ã§ãã¾ãã

ã¯ã©ã¦ãIDEã®å©ç¹ã¯ããã¤ã¹ããã¯ãªãµã¼ãã¼ã§ç¨¼åã§ãããããmonorepo ã®ããã«æ§æã³ã³ãã¼ãã³ããå¤ãå ´åãé«éã«ãã«ãããã¹ãããããã¨ãã§ãã¾ããã¡ã«ã«ãª Shops ã§ã¯ããã©ã«ãã§ 32ã³ã¢ã®ãµã¼ãã¼ç°å¢ãæä¾ãã¦ãã¾ãã
ã¾ãããã¼ã«ã«ã®PCã«ãè² æ ããããªããããéçºã«ãããCPUè² è·ããè§£æ¾ããã¾ãããã¹ããã¯ã®ä½ãã©ãããããã§ãã¤ã³ã¿ã¼ãããããç¹ãã£ã¦ããã°ãå¿«é©ã«éçºãã§ãã¾ãããµã¼ãã¼èªä½ãã¯ã©ã¦ããããã¯ã¼ã¯å ã«ãããããé«éãªãããã¯ã¼ã¯ç°å¢ä¸ã«ããã¨å ±ã«ãéçºç°å¢ã¸ã®ãããã¯ã¼ã¯ã¢ã¯ã»ã¹ãã§ãããããããããã¨ä¾¿å©ãªãã¨ãå¤ãã§ãã
ããã«ãã¼ã«ã«ãã·ã³ãè¤æ°ãã£ã¦ãããµã¼ãã¼å´ã«å¸¸ã«éçºç¶æ³ãç¶æããã¦ãããããããããã®ç°å¢ã«ãããããªéçºç¨ã½ããã¦ã¨ã¢ãã»ããã¢ããããå¿ è¦ãããã¾ããããã©ã¦ã¶ããããã°åä½ããã¨ããã便å©ã§ãã
Vertex AI
ãµã¼ãã¹ãã¼ã³ãæã«ã¯AIã«é¢ããæ©è½è¦ä»¶ã¯ãªãã£ãã®ã§ããããã¼ã³ãå¾ã®éè¦ãäºæ¸¬ããAI, Machine Learning ã®æ©è½éçºã¯é²ãã¦ãã¾ãããéçºä¸ã«ä¸åº¦ Google ãçºè¡¨ãã Vertex AI ãã©ãããã©ã¼ã ã使ããããã«ãªã£ããããMLã¨ã³ã¸ã㢠@wakanapo ã®ææ¡ããããVertex AI ãã©ãããã©ã¼ã ãæ´»ç¨ãã¦éçºãé²ãã¦ãã¾ããMLãã¼ã ã®æ´»åã«ã¤ãã¦ã¯ã徿¥è¨äºã«ã¦å ¬éãããäºå®ã§ãã
ã¾ã¨ã
ããã¾ã§å ¨ä½ã®æè¡ã¹ã¿ãã¯ãç´¹ä»ãã¾ãããã¡ã«ã«ãªShops ã§ã¯ãã¨ã³ã¸ãã¢ã® DX (Developer eXperience) ãæå¤§åãããã¨ãæèããæè¡é¸å®ã«ãªã£ã¦ãã¾ããæ¨ä»ã§ã¯å¤§éãã©ãã£ãã¯ã®å¯¾å¿ãå¯ç¨æ§ã対é害æ§ãªã©ã®åé¡ã¯ãã¯ã©ã¦ããã©ãããã©ã¼ã ãæä¾ããæ©è½ã«ãã£ã¦è§£æ±ºãããã¨ãå¤ããªã£ã¦ãã¾ããCloud Native ãªç°å¢ã§ã®éçºã§ã¯ãä½ãããã¨ã³ã¸ãã¢ã®çç£æ§ãéçºãããã¨ã®æ¥½ãããåªå ãããã¨ãè¯ãã ããã¨èããä¸è¨ã®ãããªæè¡ã鏿ãã¦ãã¾ããã
ãã®ãã¼ã ãè¡ã£ã¦ããæè¡ã®æææ±ºå®ããããããããã¸ã§ã¯ããã¹ã¿ã¼ãããæ¹ã ã¸ãå°ãã§ãæçãªæ å ±ã«ã«ãªãã°å¹¸ãã§ãã
徿¥å ¬éããè¨äºã§ãããè©³ç´°ãªæ å ±ã«è§¦ãã¦ããã¾ããå ·ä½çãªå 容ãç¥ãããæ¹ã¯ãä»å¾ã®è¨äºã«ãã²ãæå¾ ãã ããã
ä¸ç·ã«ä½ã£ã¦ããã¡ã³ãã¼ãåéä¸
æã ã¯å¸¸ã«æ°ããªææ³ãæè¡ã模索ããç°å¢ãæ¹åãç¶ãã¦ãã¾ããå¤åã¯æ¿ããã§ãããã¨ã³ã¸ãã¢ã«ã¨ã£ã¦ã¯ãããªãåºæ¿ã®ããç°å¢ã«ãªã£ã¦ãã¾ãããããã¯ãã¨ãã¦ãæè¡å´ã§ããããããã¨ãææ¦ããããã¨ãããããããã¾ããããããããã¨ã«ãå¤ãã®ã客ãã¾ããµã¼ãã¹ã®å©ç¨ãã¹ã¿ã¼ããã¦ãã¾ããã¨ã³ã¸ãã¢ã¨ãã¦å¤åã®æ¿ããç°å¢ã«èº«ãç½®ãã¤ã¤ãå¤ãã®æ¹ã«ä¾¡å¤ã®ãããã®ãæä¾ãã¦ããããããããªæ¹ã«ã¨ã£ã¦ã¯ç´ æ´ãããç°å¢ã«ãªã£ã¦ããã¨æãã¾ãã
ã½ã¦ã¾ã¦ã§ã¯ã¨ã³ã¸ãã¢ãçµ¶è³åéä¸ã§ããããä¸è¨ã®ãããªç°å¢ã«å°ãã§ãèå³ãããã°ãä¸è¨ãããé£çµ¡ãã ããã
ã¨ã³ã¸ãã¢ã¨ãã¦ä¸ç·ã«åãã¦ã¿ããæ¹ã¯ãã¡ã
https://careers.mercari.com/jp/search-jobs/?cat=souzoh-inc
ã½ã¦ã¾ã¦ã®ã¡ã³ãã¼ã¨ã«ã¸ã¥ã¢ã«ã«è©±ãã¦ã¿ããæ¹ã¯ãã¡ã
https://docs.google.com/forms/d/e/1FAIpQLSe_YPZc0uj0gCGymBGPWQv9zNEjNUMYeQwQyaQAPuvIhaQ7dQ/viewform

