
PHP
ã€ãã³ã

ãã¬ãžã³
æè¡ããã°
ã¯ããã« ããã«ã¡ã¯ãCheckout ReliabilityããŒã ã§ããã¯ãšã³ããšã³ãžãã¢ãããŠããããã®ïŒ @ykagano ïŒã§ãïŒ Checkout ReliabilityããŒã ã¯ã«ãŒãã®ä¿¡é Œæ§ãåäžãããããã®ããŒã ã§ãã ä»åãBASEã®ã«ãŒãæ©èœãå®å®çã«æäŸããããã«ãç¶ç¶çãªè² è·ãã¹ãç°å¢ãæ§ç¯ããŸããã®ã§ç¬¬1åãšããŠãæ¬èšäºã§ã¯å
šäœåã玹ä»ããŸãã å
š3åã®èšäºãäºå®ããŠããŸãã®ã§ããããããé¡ãããŸãã BASEã®è² è·ãã¹ã BASEã§ã¯ãããŸã§è² è·ãã¹ãã¯å¿
èŠã«å¿ããŠéœåºŠå®æœããŠããŸããã k6 ãšãããªãŒãã³ãœãŒã¹ãœãããŠã§ã¢ïŒä»¥éOSSïŒã®è² è·ãã¹ãããŒã«ã䜿ã£ãŠãBASEã®ã«ãŒããžã®åå远å ãã賌å
¥å®äºãŸã§ã®ã·ããªãªã®è² è·ãã¹ããè¡ããè² è·ãé«ãŸã£ãŠãæ©èœçãªåé¡ããªãããšã確èªããŠããŸããã ãããããã®éœåºŠå®æœã®è² è·ãã¹ãã«ã¯ä»¥äžã®èª²é¡ããããŸããã è² è·ãã¹ãã®èª²é¡ 1. 以åäœæãããã¹ãã·ããªãªãã·ã¹ãã ã®ä»æ§å€æŽã§åããªãç¶æ
ã«ãªã£ãŠãã k6ã®ãã¹ãã·ããªãªã¯JavaScriptã§æžããã®ã§ãããäŸãã°è³Œå
¥å¯èœãªç¶æ
ã«ããããã«å¿
èŠãªAPIããã©ã¡ãŒã¿ãäžã€å¢ããŠããããããšä¿®æ£ãå¿
èŠã«ãªããŸãã 2. å€éšAPIã®ä»æ§å€æŽã§ãå€éšAPIã«èŠç«ãŠãã¢ãã¯ã®ã³ãŒãä¿®æ£ãå¿
èŠã«ãªã£ãŠãã ååã賌å
¥ããéã«ã¯ãBASEãã瀟å€ã®æ±ºæžAPIãåŒã³åºããŠããã®ã§ãããéçºç°å¢ãšã¯ããã瀟å€ã®æ±ºæžAPIã«è² è·ããããããã«ã¯ãããªããããæ±ºæžAPIã®å¿çã«èŠç«ãŠãã¢ãã¯ãçšæããŠããŸãããã®ããããã®ç€Ÿå€APIã®ä»æ§ã倿Žã«ãªããšã¢ãã¯ã®æ¹ãã³ãŒãä¿®æ£ãå¿
èŠãšãªããŸãã 3. æ°æ©èœãäœæããåŸãæ¹ä¿®ã®åºŠã«è² è·ãã¹ããè¡ã£ãŠããããçŸåšã®ãã£ãã·ãã£ïŒè² è·ã«å¯Ÿãã蚱容éïŒãåãããªã åœæè¡ã£ãè² è·ãã¹ãã®èšé²ã¯æ®ã£ãŠããã®ã§ããã仿§å€æŽããã£ãä»ãåããã£ãã·ãã£ãç¶æã§ããŠããã®ãã¯è² è·ãã¹ããããŠã¿ãªããšåãããŸãããããããååºŠè² è·ãã¹ããããããã«ã¯ãåè¿°ã®ããŒãã«ããããŸãã ãããã®èª²é¡ã解決ããŠãç¶ç¶çã«è² è·ãã¹ããè¡ããããã«ãããããšããã®ãä»åã®åãçµã¿ã§ãã è² è·ãã¹ãç°å¢ã®èŠä»¶ ç¶ç¶çãªè² è·ãã¹ãç°å¢ãšããŠæ±ããèŠä»¶ã¯ä»¥äžãšãªããŸãã 1. è² è·ãã¹ããèªåã§å®æå®è¡ããçµæãã¬ããŒãã§ãã 宿çã«è² è·ãã¹ããè¡ãããšã§ã仿§å€æŽã«ãããšã©ãŒçãæ©æã«æ€ç¥ã§ããããšãæ±ããŸããã 2. è² è·çæããŒã«ãã¢ãã¯ãã¹ã±ãŒã«ã¢ãŠãã§ãã k6ã®ãããªã·ã¹ãã ã«è² è·ãäžããããã®ããŒã«ãè² è·çæããŒã«ãšåŒã³ãŸãããã®è² è·çæããŒã«ãšã¢ãã¯ã®äž¡æ¹ãä»åŸã·ã¹ãã èŠæš¡ã倧ãããªã£ãŠã远åŸããŠé«è² è·ãäžããããããã«ãè² è·çæããŒã«ãã¢ãã¯ã®å°æ°ãå¢ããæ©èœãæ±ããŸããã 3. ã¢ãã¯ãããŒã³ãŒãã§æŽæ°ã§ãã ãããŸã§äœ¿ã£ãŠããã¢ãã¯ã¯PHPã«ããç¬èªå®è£
ãããŠããŸãããããã ãšä»æ§ãå€ãããšã³ãŒãã®å€æŽãå¿
èŠã§ããä»åã¯OSSã®ã¢ãã¯ããŒã«ã䜿çšããããšã§ãã³ãŒãã®å€æŽãããã«ã¢ãã¯ã®ä»æ§ãæŽæ°ã§ããæ©èœãæ±ããŸããã ãã¹ããã©ã¯ãã£ã¹ã®èª¿æ» ãããã®èŠä»¶ã«å ããè² è·ãã¹ãç°å¢ãšããŠã®ãã¹ããã©ã¯ãã£ã¹ã調æ»ãããšãããäžèšã®èšäºãèŠã€ããŸããã åŒçšïŒ è² è·ãã¹ãã®å
šäœåãçè§£ãããïœAWSïŒç¬¬1å/å
š3åïŒ ãã¹ããã©ã¯ãã£ã¹ã®éšåãæç²ããŸãã å®éã®ã¯ãŒã¯ããŒãã䜿çšããŠè² è·ãã¹ããè¡ããèªèº«ã®ã¯ãŒã¯ããŒããæ¬çªç°å¢ã§ã©ãåäœããã®ãã確èªããããš æ¬çªç°å¢åçã®ãµã€ãºã®ç°å¢ãå©çšããŠè©Šéšãè¡ãããšããŸããæ¬çªç°å¢åçã®éã»ããªãšãŒã·ã§ã³ã®ããŒã¿ããæ¬çªç°å¢ããŒã¿ãå¿ååãããæš¡æ¬çã«äœæãããããŠçšæããããš ãŠãŒã¶ãŒã®å®éã®è¡åããªãã¬ã€ããããã¯ããã°ã©ã çã«åçŸããããšã§ãå€§èŠæš¡ã«ã¢ãŒããã¯ãã£å
šäœã«å¯ŸããŠè² è·ããããããš ããªããªãŒãã€ãã©ã€ã³ã®äžç°ãšããŠè² è·ãã¹ããèªåçã«å®è¡ããäºåã«å®çŸ©ããæ§èœç®æšãšæ¯èŒããŠè©äŸ¡ããèŠæ±æ§èœãæºããããã©ãããç¶ç¶çã«ä¿èšŒããããš ãã¹ããã©ã¯ãã£ã¹ã«æžãããŠããããšã¯ãç§ãè² è·ãã¹ãç°å¢ã«æ±ããèŠä»¶ãšã»ãšãã©åãã§ãããè² è·ãã¹ãã®èãæ¹ãééã£ãŠããªãè£ä»ããšããŠéåžžã«åèã«ãªããŸããã è² è·ãã¹ãããŒã«ã®éžå® ããããèãæ¹ãå
ã«ãç¶ç¶çãªè² è·ãã¹ãç°å¢ã®èŠä»¶ãæºããããã®è² è·ãã¹ãããŒã«ãéžå®ããŸããã è² è·çæããŒã«ã«ã¯ Locust ãéžå®ããŠããŸãã ãŸãå€éšAPIã®ãªã¯ãšã¹ããåããããã« WireMock ãéžå®ããŸããã ããããã®è©³çްã«ã€ããŠã¯ç¬¬2å以éã®èšäºã§èª¬æããããšæããŸãã è² è·ãã¹ãç°å¢ã®æ§æ æçµçã«è² è·ãã¹ãç°å¢ã®æ§æã¯äžå³ãšãªã£ãŠããŸãã å·Šãè² è·çæããŒã«ãšã¢ãã¯ããŒã«ã䜿çšããè² è·ãã¹ãããŒã«ã å³ãæ¢åã®BASEã·ã¹ãã ãšåçã®è² è·æ€èšŒã·ã¹ãã ïŒç°¡ç¥ïŒãšãªããŸãã è² è·ãã¹ãç°å¢ã®ã·ã¹ãã æ§æå³ å®éã®ãªã¯ãšã¹ããšåæ§ã«ã€ã³ã¿ãŒããããè·šãã§ãªã¯ãšã¹ããåŠçããããã«ããŠããŸãã ããããã¯è² è·ãã¹ãã®æ§ç¯ã«ãããé²ããå
容ã«ã€ããŠã話ãããŸãã ãã£ãã·ãã£ãã©ã³ãã³ã° è² è·ãã¹ãç°å¢ãæ§ç¯ããããã«ããã£ãã·ãã£ãã©ã³ãã³ã°ãè¡ããŸããã ãŸã以äžã®2ç¹ã確èªããŸããã BASEã®GMVïŒæµéååŒç·é¡ïŒããã®å
ã©ããããå¢å ããæ³å®ãªã®ã çŸæç¹ã§ã®æ¬çªç°å¢ã§ã®æå€§è² è·ã¯ããã€ãªã®ã 1ã«é¢ããŠã¯äºæ¥èšç»ãåç
§ããã°åãããŸããã2ã«é¢ããŠã¯ãã©ãã®è² è·ãåºæºãšããããæ€èšããŸããã BASEã®ã«ãŒãæ©èœã«ã¯æ³šæAPIããããŸãã®ã§ããã®APIã«å¯Ÿããè² è·ãåºæºã«ããããšã«ããŸããã ãŸãBASEã§ã¯ãããŸã§rpmïŒrequests per minuteïŒãåºæºã«ããŠããŸããããä»åã¯é«è² è·ç¶æ
ãåºæºã«ãããããrpsïŒrequests per secondïŒãåºæºã«ããããšã«ããŸããã ããã§ã¯æ³šæAPIã®éå»ã®æå€§è² è·ãä»®ã«1,000rpsãšããŸãã ãŸãäºæ¥èšç»ãšããŠ2幎åŸã®GMVãä»®ã«1.5åã«ãªããšããŸãã ãããããšã2幎åŸã«ã¯rpsã1.5åã®1,500rpsãæå€§è² è·ãšããŠæ³å®ãããŸãã ãããããããŸã§æãè¡ãã§å¢ããèŠç©ãããšãªããããäžãã¬ããããšãèããŠå€ãã«èŠç©ãããè¡ããŸããã å¢å åã®500rpsã2åã«ããŠäžæ¯ãå«ã1,000rpsã«ãªãããã 2,000rpsãç®æšå€ ãšããŸãã ãã®ãããªèãæ¹ã§ãä»åæ§ç¯ããã·ã¹ãã ã®è² è·ãã¹ãå¯èœãªãã£ãã·ãã£ãšããŠèšå®ããŸããã è² è·ãã¹ãç°å¢ã®æ§ç¯ ãã£ãã·ãã£ãã©ã³ãã³ã°ã§ã¯ã泚æAPIã®è² è·ãä»®ã«2,000rpsãšèšå®ããŸãããã2,000rpsã¯ãããŸã§æ³šæAPIåäœã®è² è·ãšãªããŸãã ä»å賌å
¥ã®ã¯ãŒã¯ããŒãã察象ãšããŠããããããã®ã¯ãŒã¯ããŒãã§ã¯20ãè¶
ããAPIãå©çšããŠãããå
šäœãšããŠã¯æ°äžrpsã®è² è·ãæ³å®ãããŸããã ããããèŠçŽ ãå å³ããŠãè² è·ãã¹ãç°å¢ã®ã·ã¹ãã èŠä»¶ã決ããŠãããŸããã Goldç°å¢ æ¬çªãšåçã®è² è·æ€èšŒã·ã¹ãã ã¯ãæ¢ã«ä»¥åãã䜿ã£ãŠããGoldãšããååã®ç°å¢ããã£ãããããããä»åãå©çšããããšã«ããŸããã ããããã®Goldç°å¢ã¯ãæ¬çªãšåçã®DBã䜿çšãããããæ¬çªçžåœã®ããŒã¿éã®æºåã«æ°æéããããšãã課é¡ããããŸããã è² è·ãã¹ãç°å¢ã¯æçµçã«è² è·ãã¹ãã®å®æå®è¡ãŸã§ãèŠæ®ããŠããŸããã è² è·ãã¹ãç°å¢ã®èµ·ååŸãè² è·ãã¹ããå®è¡ããè² è·ãã¹ãç°å¢ã®ç Žæ£ãŸã§è¡ãæ³å®ã§ãã ãããã宿å®è¡ãæºåã ãã§æ°æéããããšãªããšãã³ã³ãã³ãã®ããªããªãŒéäžã§ã¿ã€ã ã¢ãŠãããå¯èœæ§ããããŸãïŒå®éã«ãã®ããŒã¿æºåã®åŠçãäœåºŠãæ¢ãŸã£ãŠããããšããããŸããïŒã åå®è¡ãé »ç¹ã«å¿
èŠã«ãªã£ãŠãããšå®æå®è¡ã«æ¯éãåºãŸãã DBã巚倧ããããããGoldç°å¢ã§ã®å®æå®è¡ã¯é£ããããšãåãã£ãŠããŸããã 巚倧ãªDBã¯ååšããã ãã§å€å€§ãªã³ã¹ãããããããã宿çã«æ°æéå©çšããã ãã§ãå€å€§ãªã³ã¹ããããããŸãã 宿å®è¡ã§ã¯ãã®èª²é¡ã解決ããå¿
èŠããããŸããã Bronzeç°å¢ æ¬çªåçã®ç°å¢ã§è² è·ãã¹ããè¡ããšãããã¹ããã©ã¯ãã£ã¹ã«ã¯åããã®ã§ãããGoldç°å¢ã§ã®å®æå®è¡ã®èª²é¡ã解決ãããããè² è·ãã¹ããèªåã§å®æå®è¡ããçµæãã¬ããŒãããããã®ç°å¢ãšããŠæ¬çªããã¹ããã¯ã®äœãçž®å°ç°å¢ãä»åçšæããããšã«ããŸããã ãã®çž®å°ç°å¢ã«ã¯ Bronze ãšåä»ããŸããã åœåçç±ãšããŠã¯ãã§ã«Silverç°å¢ãå¥çšéã§äœ¿ã£ãŠããããã§ãã ãã®Bronzeç°å¢ãããã°ããã¹ãã·ããªãªã®ä¿®æ£ãšç¢ºèªãBronzeç°å¢ã§å®¹æã«è¡ããŸãã æçµç¢ºèªãšããŠã®è² è·ãã¹ãã¯ãããŸã§Goldç°å¢ã䜿çšããŸãããå®åžžçã«å¿
èŠæå°éã®ãã£ãã·ãã£ãæ
ä¿ããã«ã¯ãBronzeç°å¢ã§ãååèŠä»¶ãæºããããšèããŸããã Bronzeç°å¢ã§ã¯éçºç°å¢ã®ããŒã¿ããŒã¹ããã®ãŸãŸæµçšããããšã«ããŸãããã·ã¹ãã ã®ä»æ§ãšããŠã¯ãæ¬çªç°å¢ã®æ§æãçž®å°ãã圢ã§ä»æ§ã決ããŠãããŸããã Goldç°å¢ãšBronzeç°å¢ã®æ¯èŒ é
ç® Goldç°å¢ Bronzeç°å¢ ç®ç æ¬çªæ³å®ã®æçµçãªè² è·æ€èšŒ ç¶ç¶çãªè² è·ãã¹ãã»å®ç¹èŠ³æž¬ ã¹ãã㯠æ¬çªåç æ¬çªããçž®å° ããŒã¿é æ¬çªåçïŒå€§èŠæš¡ïŒ éçºç°å¢ã®ããŒã¿ãæµçš èµ·åæé æ°æéïŒããŒã¿æºåã«æéããããïŒ æ¯èŒççæé ã³ã¹ã é«ã äœã å®è¡é »åºŠ å¿
èŠã«å¿ããŠå®æœ 宿å®è¡ïŒé±æ¬¡ïŒ äž»ãªçšé æçµç¢ºèªã»æ§èœéçã®æ€èšŒ æ©ææ€ç¥ã»ç¶ç¶çãªå質æ
ä¿ ã¡ãªãã æ¬çªã«è¿ãç²ŸåºŠã®æ€èšŒãå¯èœ æè»œã«äœåºŠã§ãå®è¡ã§ãã ãã¡ãªãã ã³ã¹ãã»æºåæéã倧ãã æ¬çªãšã®å·®ç°ããã Bronzeç°å¢ã§ç¶ç¶çã«ç°åžžæ€ç¥ãè¡ããæçµçãªæ§èœæ€èšŒã¯Goldç°å¢ã§è¡ãããšãã圹å²åæ
ã«ããŠããŸãã ããŒã ã§ã®æ§ç¯ ä»åãããŒã ã§è² è·ãã¹ãç°å¢ã®æ§ç¯ãé²ããŠãããŸããã èæ¡ã¯ç§ã®æ¹ã§äœæããŸããããèšèšã¯å
šå¡ã§è¡ããŸããã ãã®åŸãBronzeç°å¢ã®æ§ç¯ãAWSã€ã³ãã©ãšLocustç°å¢ã®æ§ç¯ãWireMockç°å¢ã®æ§ç¯ãš3ã€ã«åãããŠæ§ç¯ãè¡ããŸããã ç§ã¯äž»ã«Bronzeç°å¢ã®æ§ç¯ãè¡ã£ãã®ã§ãããBASEã®ãã¹ãç°å¢ã1ã»ããäœæããäœæ¥ã®ãããBASEã®ã·ã¹ãã ã«å¯Ÿããè§£å床ãäžããããšãã§ããéåžžã«è¯ãçµéšãåŸãããŸããã Bronzeç°å¢ã§ã®ç¶ç¶çè² è·ãã¹ã æ¯é±ææã«ä»¥äžã®ã¹ã±ãžã¥ãŒã«ã§è² è·ãã¹ããèªåå®è¡ããŠããŸãã æå» å
容 AM3:00 ã¢ããªã±ãŒã·ã§ã³ã®èªåããã〠AM7:00 è² è·ãã¹ãã®èªåå®è¡ è² è·ãã¹ãã®èªåå®è¡ã¯GitHub Actionsã®ã¯ãŒã¯ãããŒã§è¡ã£ãŠããŸãã 以äžã®ãžã§ãã40åçšåºŠã§å®è¡ãããŸãã è² è·ãã¹ãéå§ã®éç¥ Bronzeç°å¢ã®èµ·å è² è·ãã¹ãããŒã«ã®èµ·å è² è·ãã¹ãã®å®è¡ïŒã¡ã€ã³ã·ããªãª1ïŒ è² è·ãã¹ãçµæã®éç¥ è² è·ãã¹ãã®å®è¡ïŒã¡ã€ã³ã·ããªãª2ïŒ è² è·ãã¹ãçµæã®éç¥ è² è·ãã¹ãããŒã«ã®åæ¢ Bronzeç°å¢ã®åæ¢ è² è·ãã¹ãå®äºã®éç¥ è² è·ãã¹ãçµæã¯Slackã«æçš¿ãããŸãã 以äžã¯ã¬ããŒãå
容ã®äŸã§ãããæ³šæAPIïŒpost_ordersïŒã«å¯ŸããrpsãšAPIå
šäœïŒaggregatedïŒã®rpsãèŠããããã«ããŠããŸãã post_orders: requests=2000 failures=0 avg_time=20ms avg_rps=8.0, aggregated: requests=80000 failures=400 avg_time=500ms avg_rps=300.0 ããã§æ¯é±ææ°ã®ã¢ããªã±ãŒã·ã§ã³ã§ãã£ãã·ãã£ã®å®ç¹èŠ³æž¬ãã§ããç¶æ
ã«ãªããŸããã æ¬çªãšåçã®æåã§ã¯ãªãã§ãããããããã©ãŒãã³ã¹ã®äœäžãããã°é±æ¬¡ã§æ€ç¥ã§ããŸãã ãŸãä»åŸè² è·ãã¹ãã宿œãããå Žåã«ããããã«äœ¿ããç°å¢ããããããè² è·ãã¹ã宿œã®ããŒãã«ãäžãã£ãŠãããã®ã§ã¯ãªãããšæåŸ
ããŠããŸãã Goldç°å¢ã§ã®æ¬çªæ³å®ã®è² è·ãã¹ã Goldç°å¢ã§ã®è² è·ãã¹ãã¯åœåããã©ãŒãã³ã¹ãæ³å®ãããããåºãŸããã§ããã æ¬çªãšåçã®ç°å¢ã§ã¯ãããŸãããæ¬çªãšä»æ§ãèšå®ãäžéšç°ãªã£ãŠãããããããããæ¬çªãšæããäœæ¥ãå¿
èŠã§ããã ãŸãæ¬çªãšæåãç°ãªãéšåããããŸããã ããã¯å€éšAPIã®éä¿¡æéã现ããæ¬çªãšåãããããå€éšAPIãæ¬æ¥æã£ãŠããRate LimitïŒäžå®æéå
ã«ãªã¯ãšã¹ãåæ°ã®äžéãèšããæ©èœïŒã®æ©èœãåçŸããããã®ä»çµã¿ãå
¥ããããšã§åŸã
ã«è§£æ±ºããŠãããŸããã è² è·ãã¹ãã¯å®è¡ããŠããã©ãŒãã³ã¹ãåºãªãå Žåã«ã©ããåå ã調æ»ãããã«ããã¯ãèŠã€ããããšã倧äºã§ãããããã©ãŒãã³ã¹ããã£ãšåºãããã«ã¯ã©ãããã°ãããã¯ã仮説ãç«ãŠãå¿
èŠããããŸãã ãã®ãããè² è·ãã¹ãã®å®æœåã«è² è·æ¹åã®ä»®èª¬DBãNotionã«äœæãããã®èŸºããæ¹åããã°ããæ©ããªãã®ã§ã¯ãªããããšãã£ã仮説ãããŒã å
ã§æãä»ãããã®ãããã°ã確床ãäœããŠãè¯ãã®ã§ã©ãã©ãDBã«å
¥ããŠããããšã«ããŸããã ä»åŸã¯ãã®è² è·ãã¹ãã®çµæãšä»®èª¬ãå
ã«ãBASEã®ã«ãŒãã®å®å®æ§ãããé«ããããã®æœçã宿œããŠããäºå®ã§ãã ãããã« ä»åã®èšäºã§ã¯ãç¶ç¶çãªè² è·ãã¹ãç°å¢ã®å
šäœåãšèšèšæ¹éã«ã€ããŠç޹ä»ããŸããã 第2åã§ã¯è² è·çæããŒã«ã®æ§ç¯ãšéçšã«ã€ããŠã第3åã§ã¯ã¢ãã¯ããŒã«ã®æ§ç¯ãšéçšã«ã€ããŠã話ãããäºå®ã§ãã é æ¬¡å
¬éããŸãã®ã§ããæåŸ
ããã ããã°ãšæããŸãã ãã®ãããªã·ã¹ãã ç°å¢ã§åããããšã³ãžãã¢ã®æ¹ã¯ãã²æ¡çšæ
å ±ãã芧ãã ããïŒ binc.jp
ã¯ããã« ããã«ã¡ã¯ïŒPay ID Engineering Sectionã®å²¡éšïŒ @rerenote ïŒã§ãã ä»åã¯BASEã竹ã¹ãã³ãµãŒãšããŠåè³ããŠããã«ã³ãã¡ã¬ã³ã¹ã PHPã«ã³ãã¡ã¬ã³ã¹å°ç°å2026 ã®ã玹ä»ãšãªããŸãã phpcon-odawara.jp PHPã«ã³ãã¡ã¬ã³ã¹å°ç°å2026 æŠèŠ PHPã«ã³ãã¡ã¬ã³ã¹å°ç°åã¯ãå°ç°åã®å°ã§ã€ãªãããæ°åŒµããªãã«ã³ãã¡ã¬ã³ã¹ããã¹ããŒã¬ã³ã«ãåå ãããšã³ãžãã¢ãæ°ããªç¥èãå
±æãåããäºãã«åŠã³ãæé·ã§ããå Žæãã€ãããã€ãã³ãã§ãã 2026/4/11ïŒåïŒããã ããåžæ°äº€æµã»ã³ã¿ãŒãUMECOãã§éå¬ãããŸãã æšå¹Žã®æš¡æ§ã¯ãã¡ãã®èšäºãã芧ãã ããã devblog.thebase.in ç»å£ã¡ã³ããŒã®ãçŽ¹ä» BASEã§æŽ»èºããŠããã¡ã³ããŒã®ãã¡ã2åãç»å£äºå®ã§ãããã²èãã«ããããŠãã ããã ã¬ã¬ã·ãŒPHP転ç ãç¶ããã¡ã€ã³ãšãã¹ããŒãã ã£ãã®ã§DDD+Claude Codeã§ããŒãéçºããŸãã ããã°ã©ãã³ã°ããããã³ã ïŒ @Panda_Program ïŒ äŒå ŽïŒã㟠14:45ã fortee.jp ã¹ãã³ãµãŒLT å·å£å°è²ŽïŒ @dmnlk ïŒ äŒå ŽïŒã㟠15:35ã ããŒã¹ã®ãçŽ¹ä» åœæ¥ã¯BASEæ ªåŒäŒç€ŸãšããŠã¹ãã³ãµãŒããŒã¹ã®åºå±ãè¡ããŸãã ä»å¹Žã¯ãUMECOåšèŸºã®BASEã·ã§ãããå·¡ããïŒ å°ç°åã·ã§ããã¹ã¿ã³ãã©ãªãŒããšé¡ããäŒç»ã宿œäºå®ã§ãã BASEããå©çšã®ã·ã§ãããªãŒããŒã®äžã«ã¯ããããã·ã§ããã ãã§ãªãã䞊è¡ããŠå®åºèãéå¶ãããŠããæ¹ãããã£ããããŸããäŒå Žã§ããUMECOåšèŸºã«ãå®åºèãæ§ããŠããã·ã§ããããããŸãã®ã§ãã«ã³ãã¡ã¬ã³ã¹ã§å°ç°åã«ãè¶ãã®éã¯ããã²è¶³ãéãã§ã¿ãŠãã ããã BASEã®ããŒã¹ã§ãäŒãã§ããããšã楜ãã¿ã«ããŠãããŸãã ãããã« PHPã«ã³ãã¡ã¬ã³ã¹å°ç°å 2026 ã®ãã±ããã¯ãã®èšäºæ²èŒæç¹ã§ãã§ã«å®å£²ããŠããããã§ããåŸæ¥ãã¡ãã®ããã°ã§ãåå ã¬ããŒãããå±ãããäºå®ã§ããæ¥œãã¿ã«ãåŸ
ã¡ãã ããã PHPã«ã³ãã¡ã¬ã³ã¹å°ç°å 2026ã§ãã¿ãªããŸã«ãäŒãã§ããããšã楜ãã¿ã«ããŠãããŸãïŒ çºè¡šãèŠãŠBASEã§åãããšã«èå³ãæã£ãæ¹ã¯ããã²æ¡çšæ
å ±ãã芧ãã ããã binc.jp
ã¯ããã« BASE Order Section ã§Webã¢ããªã±ãŒã·ã§ã³ãšã³ãžã㢠ãããŠãã Capi(ããŽ) ã§ãã 2026/3/20ïŒéïŒ- 3/22ïŒæ¥ïŒã®3æ¥éãBASEæ ªåŒäŒç€ŸããŽãŒã«ãã¹ãã³ãµãŒãšããŠåè³ãã PHPerKaigi 2026 ãéå¬ãããŸãããä»åã¯PHPerKaigi 2026ã«åå ããã¡ã³ããŒã®ã³ã¡ã³ããææ³ããå±ãããŸãïŒ PHPerKaigiãšã¯ PHPerKaigiã¯ããªãŒãã³ãœãŒã¹ã®ã¹ã¯ãªããèšèª PHP ïŒæ£åŒåç§° PHP:Hypertext PreprocessorïŒã䜿çšããŠããæ¹ãéå»ã«PHPã䜿çšããŠããæ¹ãããããPHPã䜿ããããšæã£ãŠããæ¹ããããŠPHPã倧奜ããªæ¹ãã¡ããæè¡çãªããŠããŠãšPHPæãå
±æããããã®ã€ãã³ãã§ããã³ãã¥ããã£è²¢ç®æŽ»åã®äžç°ãšããŠãä»å¹ŽããŽãŒã«ãã¹ãã³ãµãŒãšããŠåè³ããŸããã ç»å£è
ã³ã¡ã³ã å·å³¶æ
§ ã¢ãžã¥ã©ã¢ããªã¹ãå°å
¥ããŠãã4幎ãçµã¡ããããããçãåãããã§ããã®ã§ã¯ããšããæ°æã¡ã§ä»åã®çºè¡šã«èšã¿ãŸããã ãäœã解決ããããšããŠããã®ãåãããªããŸãŸãã€ã¯ããµãŒãã¹ïŒorã¢ãžã¥ã©ã¢ããªã¹ïŒãéå§ããããšããã®ã¯ã»ãšãã©æªãã¢ã€ãã£ã¢ã ããšãããæè¡äž»å°ã¯å€§æµèª€ãã§ãããšããæèãïŒå¹Žåãããã£ãšæã£ãŠæãã§ããŸãããçµæçã«æããããªãã€ãŸã¥ãããããŸããããç¡äºã«è§£æ±ºããã¹ãIssueã®è§£å床ãäžãã£ãïŒå¹Žéã§ããã ã¹ã©ã€ãäžã§ã¯ãAIã«èŠçŽãããªããèªãããšãæšå¥šããšæžããã®ã§ãããã¢ããããŒãåŸã«è©ŠããŠã¿ããšãæå€ãªããšã«ChatGPTãGeminiã§ã¯äœåºŠèšæ£ãããŠãå
šãéãå
容ãè¿ã£ãŠããŸãããã©ããã100æè¶
ã®ã¹ã©ã€ããAIã«èŠçŽãããã®ã¯ãŸã é£ããããã§ããClaudeãšNotebookLMã ãšããçšåºŠããŸããã£ãŠãããŸãã å人çã«ã¯ããªãçæã§ããããã»ã©ã®æéãèªããšã³ãžãã¢ã¯ä»ã®æä»£ã«ãŸãããªãã®ã§ãã»ãšãã©ã®äººã«å±ããªãå
容ã«ãªã£ãŠããŸã£ããšæããŸããã¹ã©ã€ããèªãéã¯ãèªèº«ã®ç®ã§ãã£ããèªãã§ããã ãããåç»ãèŠãããClaudeãŸãã¯NotebookLMãããã«ã«ãé¡ãããã®ãããããã§ãïŒåäººã®ææ³ã§ãïŒã speakerdeck.com ããã°ã©ãã³ã°ããããã³ã ã»ãŒã«éå§ã®ãããã®ããã©ãŒãã³ã¹ãããŒã ã§æ¹åãããšãã話ãå
±æããŸãããçºè¡šåŸã«ããã¡ã§ãé
ãããããããããšãã話ãèããããããã£ããé
ãããšã«æ°ã¥ããŠæ¹åã«æã£ãŠãããäœå¶ãäœãããŠããã®ãçŽ æŽãããããšãè€ãã®èšèãããã ãããããŸããã ç¹ã«ãã¹ãã¢ãŒãã å
±æäŒããã£ãŠãããšããããšãä»åã®ãããã®æ¹åã®èµ·ç¹ã«ãªã£ãã®ã§ããããã®åãçµã¿ããšãŠãè¯ããšèšã£ãŠãããããšãå€ãããã¹ãã¢ãŒãã å
±æäŒãå¥ã®ã¡ã³ããŒãå§ããŠããã®ã§å€§å€ããããããªãšæã£ãŠããŸãã ã¹ã©ã€ãã®æåŸã®æ¹ã§ãè§ŠããŸããããä»åã®çºè¡šãæ©ã«ããäžæ®µæ¹åã§ãããšãããèŠçŽãããšæãã®ã§ãããã«æ©ãã§ããã®ã§ã¯ãªãããªãšæã£ãŠããŸããåœæ¥çºè¡šãèãã«æ¥ãŠãã ãã£ãæ¹ãããããšãããããŸãããããã§ãªãæ¹ããã²ã¹ã©ã€ããäžåºŠã芧ãã ãããçæ§ã®ã圹ã«ç«ãŠãã°å¹žãã§ãã speakerdeck.com 02 PHP8.5ã«è¿œå ãããarray_first / array_lastã®æŽå²çèæ¯ã«ã€ããŠè©±ããŸããã5åãšããçãæéã§7幎åã®è°è«ã®æµãã远ããŸããããéèŠãªè©±ã¯ã§ããã ãåããã«äŒãããããšæããŸãã ããŸããŸãªèгç¹ããè°è«ãéããŠæªè§£æ±ºã®çåããªããå¿
èŠãããäžæ¹ã§ãçºæ£ããè°è«ã¯ã¹ã³ãŒããçµã£ãããç¹å®ã®èгç¹ãéèŠããŠä»æ§ã決ãããã»ã»ã»ä»äºã®é²ãæ¹ããã¡ã·ãªããŒã·ã§ã³ããããžã¡ã³ããªã©ãæ®æ®µã®ãããã¯ãéçºã§éèŠãªåããRFCã®æ¡æã«ãããŠãéèŠã ãšããææãæããŸããã PHP Internalsã®è°è«ã®æµãã远ãäžã§åŠã³ãå€ããä»åã®array_first / array_last以å€ã®è°è«ã远ã£ãŠã¿ãããšæããŸãããèå³ãæã£ãçãããããŸãã¯åèæç®ã®URLããarray_first / array_lastã®è°è«ã远ã£ãŠã¿ãŠãã ããïŒ speakerdeck.com ãã³ãã¬ããèšäºå·çè
ã³ã¡ã³ã meihei ãã«ã³ãã¡ã¬ã³ã¹ãçµãã£ãããšã«ããšãããã³ãã¬ãããå¯çš¿ããŸãããå
æ¥ã®PHPerKaigiã§ã¯å€ãã®åŠã³ããã£ãããšæããŸããããããèªåã®äžã§ããŸãããŒã ã¡ã³ããŒãšãšãã«ç¥èãšããŠåæ§ç¯ããä»åŸããŸããŸãªæ©äŒã§æŽ»ãããæŠåšã«ããŠãããããå¬ããã§ãã ãã³ãã¬ããã¯ãã³ã¬ã§è§£èª¬ããŠããŸãã®ã§ããæ°è»œã«ãèªã¿ãã ããïŒ çŸå°ã§èŠãã»ãã·ã§ã³ãäžéšçŽ¹ä» åœæ¥ã€ãã³ãã«åå ããèªåå«ãåŒç€Ÿã¡ã³ããŒãçŸå°ã§èŠãã»ãã·ã§ã³ã®ãã¡ç¹ã«æ°ã«ãªã£ãã»ãã·ã§ã³ã®ã¬ããŒãã§ãïŒ 1. ãæ¥ç¶ãâããã©ãŒãã³ã¹ãã¥ãŒãã³ã°ã®æåŸã®äžæ ãç¹ãšç¹ãçµã¶ããã®äžç¬ã®ããã«ã by æŠç° æ²å€ªéãã é«ãã©ãã£ãã¯ãæãæè¡çãªè§£æ±ºãèªä¿¡æã£ãŠè¡ãããã«ã§ããããšã玹ä»ããŠããã ããŸãããã¢ããªã±ãŒã·ã§ã³ã³ãŒããããããã«ãŠã§ã¢ã®è©±ãäžå¿ã§ããã Keep AliveãPersistent Connectionãã³ãã¯ã·ã§ã³ããŒã«âŠ åèªã¯ç¥ã£ãŠããããã©èªåã䜿ãããªããŠããªããã®ãããããåºãŠããŠéåžžã«å匷ã«ãªããŸãããã¹ã©ã€ãã«ã¯å³ãã°ã©ããã³ãŒããæ·»ä»ãããŠããã®ã§é£ããå
容ã§ãçè§£ããããã£ãã§ããèå³ã®ããæ¹ã¯ãã²ã¹ã©ã€ãã ãã§ãã¿ãŠããã ãããã§ãããªã¹ã¹ã¡ã§ãã èªåã¯ç»å£ã®äžã§æŠç°ããããã£ããã£ãŠãããèšæž¬ã¯ä»®èª¬ãæã£ãŠè¡ãããšããèšèãå°è±¡ã«æ®ã£ãŠããŸãããŸããç»å£ãèããªããã·ã¹ãã ã®æ¥ç¶ã¯ãšãŠãå¥¥ãæ·±ãæè¡è
ã®è
ã®èŠãæãªã®ã§ã¯ãªãããšèããŸããã (BASE Order Section @Capi) 2. ããã°ã©ãã³ã°èšèªè«ããèŠãPHPã®æ£äœ by ããã¿ããããã ãPHPãã©ããªæŽå²ãç©ã¿éããä»ã®æžãæ¹ã«ãªã£ãã®ãããçŽè§£ããŠãããŸãããPHPããããµãèšèªãšããã®ã¯èªåããªããšãªãçè§£ããŠããŸãããæ³å以äžã«ãããµãèšèªã§ããããšãç¥ããPHPããããå床èªèããè¯ãæ©äŒã«ãªããŸããã ãŸããç»å£ã®äžã§ã¯PHPäœè
Rasmus Lerdorf(ã©ã¹ãã¹ã»ã©ãŒãã)æ°ã®çºèšãåãäžããŠããŸãããèšèªäœè
ã®äººãšãªããç¥ãã®ãé¢çœããªãšç»å£ãèããªããèããŸããããªãèšèªãäœãããã®ããã©ããªææ³ã§èšèªãæé·ããŠããã®ããç¥ãããšã§ãã®èšèªãžã®æçã匷ãŸããŸãã ç»å£ã§åºãŠãããã®ã¹ã©ã€ããèªåã¯å¥œãã§ãç¬ (BASE Order Section @Capi) 3. 俺ã®/ç§ã®æåŒ·ã¢ãŒããã¯ãã£æ±ºå®æŠéå¬ â ããŒã ã§æ°ããã¢ãŒããã¯ãã£ã«é©åããŠããããã« by 髿©çŽèŠãã æç¶å¯èœãªããŒã éçºãç®æãäžã§ããã¢ãŒããã¯ãã£ãå·æ°ããå¿
èŠããããããããããŠã³ã§æ±ºããã®ã¯é¿ãããããšããèæ¯ããããæåŒ·ã¢ãŒããã¯ãã£æ±ºå®æŠããéå¬ãããšããå
容ã®ã©ã€ããã³ã°ããŒã¯ã§ããã 2人çšåºŠã§äŒŒããããªã€ãã³ããéå¬ããããšã¯ãããŸããããçµéšå€ã«å·®ãããããŒã ã§å®æœããããšã¯ãªãã£ãããããã¹ãŠã®åŠçãç¥ã¡ãœããã§å®çŸããããšããææ¡ã®ããŒãã«ãäžããããã®å·¥å€«ããã€ãã³ãã®æµããªã©éçºããŒã ã®éå¶ã«ãããŠå€§å€åèã«ãªãå
容ãå€ãã£ãã§ããïŒPay ID Engineering Section å²¡éš @rerenoteïŒ 4.AIæä»£ã®è³ç²åŒãšåãåã ~èšèªåŠãšããŠã®PHP~ by ãããããã æ¥ã
ã®æ¥åã®äžã§ãäœãããAIãšãããšãããæ©äŒãå¢ããŠããŸãããã®äžã§ãæœè±¡çãªå
容ãå
·äœçãªè¡šçŸã«èœãšã蟌ãå Žé¢ã以åããå€ããªã£ãŠãããšæããŠããŸããããŸããAIãšé·æéãããšãããåŸã«åŒ·ãç²åŽæãèŠããããšãå¢ããŠããŠããŸãã ãã®ã©ã€ããã³ã°ããŒã¯ã§ã¯ãããããç²ããã©ãããçããã®ãããããŠãã®å¯Ÿçã«ã€ããŠè§£èª¬ãããŠããŸããã察çã®äžã§ããæèããŠæéã䜿ãåãããã¯ããã«å®è·µã§ãããã ãšæããæ©éåãå
¥ããŠããŸãã以åãšæ¯ã¹ãŠãç²åŽæãèŠããå Žé¢ãå°ãªããªã£ãŠããããã«æããŠããŸããïŒPay ID Engineering Section å²¡éš @rerenoteïŒ ãããã« å»å¹Žã«åŒãç¶ãã¬ããŒã¿ãŒãšããŠPHPerKaigiã«åå ãããŠããã ããŸããã ä»å¹Žãåè³æŽ»åã瀟å¡ã®ã¹ããŒã«ãŒåå ãéã㊠PHPã³ãã¥ããã£ã®çãäžããã«è²¢ç®ã§ããåŒç€ŸãšããŠã倧倿æçŸ©ãªæéãšãªããŸããã ã¹ã¿ããã®æ¹ã
ã«ã¯æ¥åã§ãå¿ããã«ãé¢ããããå€ãã®æéãã€ãã³ãæºåãžæ³šãã§ããã ããããšæããŸãããã®å ŽãåããŠåŸ¡ç€Œç³ãäžããŸãã













