ã¢ãã€ã«ã®ããããªãŒã«åªããAPIèšèšïŒéä¿¡ã®å€ããæžãã
ã¢ãã€ã«ã®ããããªãŒãç¯çŽããAPIèšèšïŒãããåŠçããã£ãã·ã¥ããããŒããã€ããŒãåæžã§ã©ãžãªã®èµ·åãæžãããç»é¢ã®è¡šç€ºãéãããŠæ¶è²»ãæããæ¹æ³ãåŠã¶ã

ãªããã£ããã£ãªAPIã¯ã¢ãã€ã«ã®ããããªãŒãæ¶è²»ããã®ã
ããã£ããã£ããªAPIã¯ã1ã€ã®ç»é¢ã衚瀺ããããã«å€æ°ã®å°ããªãªã¯ãšã¹ããçºè¡ãããŸããåã ã®ãªã¯ãšã¹ãã¯çŽã®äžã§ã¯å®ãããã«èŠããŸãããæºåž¯ã§ã¯ããã«ç©ã¿éãªããŸãã
æå€§ã®ããããªãŒè² è·ã¯å€ãã®å Žåãããã¯ãŒã¯ãªã¢ã®èµ·åããæ¥ãŸããã»ã«ã©ãŒãWiâFiã®ãããã¯ããŒã¿éåä¿¡ã®ããã«é«æ¶è²»ç¶æ ã«åãæ¿ãããŸããã¢ããªãçæéã«å€ãã®ãªã¯ãšã¹ããæãããšãã©ãžãªã¯äœåºŠãèµ·åãé·ãåäœãç¶ããŸããåã¬ã¹ãã³ã¹ãå°ãããŠããç¹°ãè¿ãã®èµ·åã¯å®éã®ãšãã«ã®ãŒãæ¶è²»ããŸãã
CPUã®äœæ¥ããããŸããåãªã¯ãšã¹ãã¯ããããŒã®æ§ç¯ãTLSåŠçãJSONã®è§£æããã£ãã·ã¥æŽæ°ãçµæã®ããŒãžãè¡ãã¢ããªã³ãŒãã®å®è¡ã䌎ããŸããæ¥ç¶ãåããã°ãã»ããã¢ããã®äœæ¥ãç¹°ãè¿ãããŸãã
ãã£ããã£ãã¯UIãé ãæããããããšããããŸããäºæž¬å¯èœãª1ã€ã®èªã¿èŸŒã¿ã§ã¯ãªããåŒã³åºãã®é£éãåŸ ã€ããšã«ãªããã¹ãããŒãé·ããªã£ãããéšåçãªã¬ã³ããªã³ã°ããžã£ã³ããããããããã¯ãŒã¯ã匱ããšãã«ã¿ã€ã ã¢ãŠããå¢ããŸããããã¯ã°ã©ãŠã³ãæŽæ°ãåæ§ã«æªåããŸãïŒãªãã©ã€ãå¢ããã©ãžãªãäœåºŠãèµ·ããããããªãŒæ¶è²»ãå¢ããŸãã
ãã¢ãã€ã«ã®ããããªãŒã®ããã®APIèšèšããå®è·µçã«èãããšãåçŽã§ãïŒåãUIãããå°ãªãåŸåŸ©ãããå°ãªããã€ããããå°ãªãããã¯ã°ã©ãŠã³ãäœæ¥ã§è¡šç€ºããããšã
广ã¯ä»¥äžã®å ·äœçãªå€åã§èšæž¬ã§ããŸãïŒ
- ç»é¢èªã¿èŸŒã¿ãããã®APIåŒã³åºããæžã
- ç»é¢ãããã®ããŠã³ããŒããã€ãæ°ãæžã
- ã»ã«ã©ãŒã§ã®äžå€®å€ãšææªã±ãŒã¹ã®ã€ã³ã¿ã©ã¯ãã£ããŸã§ã®æéãæ¹åãã
- åãçµæãåŸãããã®ããã¯ã°ã©ãŠã³ããã§ãããšãªãã©ã€ãæžã
ããããæ¹åãããã°ãå¿çæ§ãšããããªãŒæç¶æéã¯éåžžäžç·ã«è¯ããªããŸãã
äœããå€ããåã«æž¬ãã¹ãããš
ãªã¯ãšã¹ãããããããããã£ãã·ã¥ã調æŽããåã«ããŸãã¢ããªãä»äœãããŠããããæç¢ºã«ææ¡ããŠãã ãããæéã§å¹ãæ¹åã¯éåžžããã€ãã®ç¹°ãè¿ãåå ãä¿®æ£ããããšã§ããããããèŠã€ããã«ã¯å®éã®ç»é¢ããããŒïŒåäžã®ããããŒãã¹ã®ãã¹ãã§ã¯ãªãïŒãèšæž¬ããå¿ èŠããããŸãã
é«ãã©ãã£ãã¯ã®ç»é¢æ°åã«ã€ããŠãåºæ¬çãªãã°ãåããŸãããïŒèªã¿èŸŒã¿ãããäœåãªã¯ãšã¹ããçºçããããã©ã®ãšã³ããã€ã³ããåŒã°ããããéåä¿¡ãã€ãæ°ïŒããããŒãšããã£ãå«ãïŒããªãã©ã€ãšã¿ã€ã ã¢ãŠãçãUIã䜿ãããšæãããŸã§ã®æéãå¯èœãªããããã¯ãŒã¯çš®å¥ïŒWiâFi vs ã»ã«ã©ãŒïŒããšã«ãšã©ãŒçãåããŠãã ããããã®å·®ã§å®å®ããæ¥ç¶ã§ã¯èŠèœãšãåé¡ãæããã«ãªãããšããããããŸãã
ãã©ã¢ã°ã©ãŠã³ãã®ãã©ãã£ãã¯ãšããã¯ã°ã©ãŠã³ãã®ãã©ãã£ãã¯ãåããŠãã ãããããç»é¢ã¯éãã«èŠããŠããé»è©±ã¯ããã¯ã°ã©ãŠã³ããªãã¬ãã·ã¥ãããã·ã¥ã§ã®åæãåæã¢ããããŒãããããã¯â念ã®ããâã®ããªãã§ããã§å¿ãããããããŸãããå¥ã ã«è¿œè·¡ããŠã誀ã£ã察象ãæé©åããªãããã«ããŸãã
ãããã¹ãããã¯éåžžããã€ãã®ç¬éã«éäžããŸãïŒã¢ããªèµ·åãããŒã ïŒãã£ãŒãç»é¢ã詳现ç»é¢ïŒå€ãã®åŒã³åºãã«åºããïŒããã«ã»ãã¥ã»ãªãã¬ãã·ã¥ããããã®ãã¡1ã€ãéžãã§ãšã³ãããŒãšã³ãã§æž¬å®ããŠãã ããã
ããŒã ããè¯ãããåæã§ããããŒã¹ã©ã€ã³äºç®ãèšå®ããŸããããäŸïŒã泚æè¿œè·¡ç»é¢ã®ã³ãŒã«ãããŒãã¯ãã¹ããŒã¿ã¹è¡šç€ºåã«6ãªã¯ãšã¹ã以äžã§ãããŠã³ããŒãã¯250KB以äžã«ããããªã©ã
ã·ã³ãã«ãªKPIã®çµã¿åãããå§ãã«äœ¿ããªãã(1) ç»é¢ããŒããããã®ãªã¯ãšã¹ãæ° ãš (2) ãªãã©ã€ç ã䜿ã£ãŠãã ããããªãã©ã€ã®åæžã¯æã£ãããããããªãŒãç¯çŽããããšãå€ãã§ããç¹°ãè¿ãã®ãªãã©ã€ãã©ãžãªãé·ãèµ·åãããããã§ãã
ã¹ããããã€ã¹ãããïŒãããã§ãªã¯ãšã¹ããæžãã
ãã£ããã£ãªAPIã¯å¶ç¶ã«çãŸããããã§ããåãŠã£ãžã§ããããèªåã®ãããŒã¿ãèªã¿èŸŒã¿ã1ç»é¢ã§åæ°ã®å°ããªåŒã³åºããçºçããŸããä¿®æ£ã¯å€ãã®å ŽååçŽã§ãïŒãã€ãäžç·ã«ããŒãããããã®ãç¹å®ããå°ãªãåŒã³åºãã§è¿ãããã«ããŸãã
ãŸãã¯é«ãã©ãã£ãã¯ã®1ã€ã®ç»é¢ïŒããŒã ãåä¿¡ç®±ãæ³šæäžèЧïŒããããã³ã°ããŸãããã¡ãŒã¹ããã¥ãŒã«äœã衚瀺ãããããæžãåºããåUIèŠçŽ ãã©ã®ãªã¯ãšã¹ãã§è³ãããŠãããã远跡ããŸããéè€ïŒåããŠãŒã¶ãŒãããã£ãŒã«ãäºåºŠååŸããŠãããªã©ïŒãåžžã«äžç·ã«æ¥ãåŒã³åºãïŒãããã£ãŒã«ãšæš©éãšæªèªã«ãŠã³ããªã©ïŒãããèŠã€ããŸãã
次ã«ã確å®ã«äžç·ã«çºçããåŒã³åºããã°ã«ãŒãåããŸããäžè¬ã«2ã€ã®éžæè¢ããããŸãïŒ
- ãã®ç»é¢å°çšã®ç®çå¥ãšã³ããã€ã³ããäœãïŒå€ãã®å Žåäžçªå®å®ããïŒ
- å°ããäºæž¬å¯èœãªãªãœãŒã¹ã®ãªã¹ããåãåãããããšã³ããã€ã³ãã远å ãã
ãããã¯ç»é¢åäœã§å¢çãæ±ºãããã£ãã·ã¥ãç£èŠããããã°ãããããããã«ããŠãã ããã
ããããåä»ã«ãªããªãããã®ã«ãŒã«ãããã€ããããŸããä»è¡šç€ºããå¿ èŠã®ãããã®ã ããè¿ããã念ã®ãããã®å®å šãªããžã§ã¯ãã¯é¿ããŠãã ãããããã€ãã®éšåããªãã·ã§ã³ãªããããæç€ºããUIãéèŠãªéšåãçŽ æ©ãã¬ã³ããªã³ã°ã§ããããã«ããŸããéšåçãªå€±æã§å šäœã®å詊è¡ãå¿ èŠã«ãªããªãããã«ã¬ã¹ãã³ã¹ãèšèšããŠãã ããã倱æããéšåã ããå詊è¡ããæ¹ããã£ãšå®äŸ¡ã§ãã
ããããªãŒãç¯çŽãããã£ãã·ã¥ããããŒïŒåž¯åå¹ ã ãã§ãªãïŒ
ãã£ãã·ã¥ã¯ããããªãŒæ©èœã§ããåãªã¯ãšã¹ãã¯ã©ãžãªãèµ·åããCPUã䜿ããããŒã¹ãã¢ããªããžãã¯ãåŒãèµ·ãããŸããé©åãªãã£ãã·ã¥ããããŒã¯å€ãã®ãªãã¬ãã·ã¥ã軜éãªãã§ãã¯ã«å€ããŸãã
æå€§ã®åã¡åã¯æ¡ä»¶ä»ããªã¯ãšã¹ãã§ããããŒã¿ãåããŠã³ããŒããã代ããã«ãå€ãã£ããïŒããšå°ããå€ãã£ãŠããªããã°ãµãŒããŒã¯å°ã㪠304 Not Modified ãè¿ããŸãã
ãªãœãŒã¹ã®ããŒãžã§ã³ã衚ãã¬ã¹ãã³ã¹ã«ã¯ ETag ã䜿ããæ¬¡åãã§ããæã«ã¯ã©ã€ã¢ã³ãã If-None-Match ãéãããã«ããŠãã ãããETag ã®çæãé£ããå Žåã¯ãåçŽãªãæŽæ°æ¥æããªãœãŒã¹ã«ã¯ Last-Modified ãš If-Modified-Since ãããå¹ããŸãã
æ»
å€ã«å€ãããªãããŒã¿ã¯ãã£ãã·ã¥æ¹éãæç¢ºã«ããŠãã ãããCache-Control ã¯å®éã®æŽæ°é »åºŠã«åãããŠãã ããããŠãŒã¶ãŒãããã£ãŒã«ãªãçãã® max-age ã劥åœãããããŸããããã¢ããªèšå®ãåç
§ãªã¹ããæ©èœãã©ã°ã¯é·ãã«ã§ããŸãã
ã¢ããªåŽã§ã¯ 304 ãé«éãã¹ãšããŠæ±ã£ãŠãã ãããJSONãè§£æããªãïŒååšããªãïŒãã¢ãã«ãåæ§ç¯ããªããUIãã¡ãã€ãããªããç»é¢ã«ãããã®ãä¿æããã€ã³ãžã±ãŒã¿ã ããæŽæ°ããŠãã ããã
äŸïŒæ³šæè¿œè·¡ç»é¢ã15ç§ããšã«ã¹ããŒã¿ã¹ãããŒãªã³ã°ããå Žåãã¬ã¹ãã³ã¹ã« ETag ãå«ãŸããŠããã°å€ãã®ãã§ãã¯ã¯ 304 ã§åž°ããŸããã¢ããªã¯æåŸã®ã¹ããŒã¿ã¹ãä¿æããã¹ããŒã¿ã¹ãå€ãã£ããšãã ãå®éã®åŠçãè¡ããŸãïŒäŸïŒã梱å
æžã¿ããããçºéæžã¿ããžïŒã
æ©å¯ããŒã¿ã«ã€ããŠã¯æå³çã«æ±ã£ãŠãã ããããã£ãã·ã¥ãèªåçã«å±éºãšããããã§ã¯ãããŸããããæç¢ºãªã«ãŒã«ãå¿
èŠã§ããå人æ
å ±ãããŒã¯ã³ãå«ãã¬ã¹ãã³ã¹ã¯ãããã¯ãèŠä»¶ãèš±ãå Žå以å€ãã£ãã·ã¥ããªãã§ãã ããããŠãŒã¶ãŒåºæããŒã¿ã«ã¯çã寿åœãèšå®ããå
±æãã£ãã·ã¥ã«å人ã¬ã¹ãã³ã¹ãèç©ãããªãããã«ïŒå¿
èŠãªã Cache-Control: private ã䜿ãïŒæ³šæããŠãã ããã
è³¢ããã€ããŒãïŒéãéãæžãããè§£æãæžãã
远å ã®1ãã€ãã¯ã¢ãã€ã«ã§ã¯åž¯åå¹
以äžã®ã³ã¹ããçã¿ãŸããã©ãžãªãé·ãèµ·ããã¢ããªãJSONããã³ãŒããã¢ãã«ãæŽæ°ããCPUæéãæ¶è²»ããŸããAPIã®åé·ãªéä¿¡ãæžãã ããšãçããªãããã€ããŒãã®åæžã¯æéã®åã¡çã§ãã
ãŸãç»é¢ããšã«ãã€ããŒããç£æ»ããŠãã ããã1ã€ã®ç»é¢ïŒäŸãã°ããŒã ãã£ãŒãïŒãéžã³ãã¬ã¹ãã³ã¹ãµã€ãºããã°ã«åãããã£ãŒã«ãããšã«ïŒã¯ã©ã€ã¢ã³ãã¯ãããã¬ã³ããªã³ã°ããŠããããè¡šç€ºãæ±ºããããã«äœ¿ã£ãŠãããïŒããéããªãããã®ãšã³ããã€ã³ãããå€ããŠãã ããã
ãªã¹ãã§ã¯å°ããªããµããªãŒã圢ç¶ãéåžžååã§ãããªã¹ãã®è¡ã¯å€ãã®å Žå idãã¿ã€ãã«ãã¹ããŒã¿ã¹ãã¿ã€ã ã¹ã¿ã³ãã ãã§è¯ããå®å šãªèª¬æãé·ãããŒããæ·±ããã¹ããããªããžã§ã¯ãã¯äžèŠã§ãã詳现ã¯ãŠãŒã¶ãŒãé ç®ãéãããšãã ãååŸããŸãã
ããã€ãã®å€æŽã§ãã€ããŒãã¯ããã«å°ãããªããŸãïŒ
- ç¹°ãè¿ãããé·ãæååã®ä»£ããã« id ãçãåæã³ãŒãã䜿ã
- ã¯ã©ã€ã¢ã³ããå®å šã«æ³å®ã§ããæçœãªããã©ã«ãã¯åéããªã
- åããã¹ããªããžã§ã¯ããåãªã¹ãé ç®ã§ç¹°ãè¿ããªã
- ãã£ãŒã«ãåãšåãå®å®ãããã¯ã©ã€ã¢ã³ãã®åå²ãåããŒã¹ãæžãã
å§çž®ã¯ç¹ã«é ããããã¯ãŒã¯ã§åœ¹ç«ã¡ãŸãããå®éã®ããã€ã¹ã§CPUãã¬ãŒããªãããã¹ãããŠãã ãããGzipãBrotliã¯è»¢éãµã€ãºã倧ããäžããããšãå€ãã§ãããå€ã端æ«ã§ã¯éåžžã«å€§ããªã¬ã¹ãã³ã¹ã®è§£åã«ç®ã«èŠããæéãããããããããŸãããæè¯ã®åã¡åã¯ãã¯ãæåããéãããŒã¿ãæžããããšã§ãã
ã¬ã¹ãã³ã¹åœ¢ç¶ãå¥çŽãšèããŠãã ããããã£ãŒã«ãåãšåãäžè²«ããŠããã°ãã¯ã©ã€ã¢ã³ãã¯ãã©ãŒã«ããã¯ãå°ãªãã§ããé²åŸ¡çãªã³ãŒããæžããUIã®æ»ããããšããããªãŒæ¶è²»ã®äœäžã«å¯äžããŸãã
æªããããã¯ãŒã¯ãšãªãã©ã€ãå°ãªãããèšèš
ã¢ãã€ã«ã¢ããªã¯ãªã¯ãšã¹ããéä¿¡ããæã ãããããªãŒãæ¶è²»ããããã§ã¯ãããŸããã倱æããŠãªãã©ã€ããã©ãžãªãå床起ãããäœæ¥ãç¹°ãè¿ãæãããããªãŒãæ¶è²»ããŸããAPIãå®ç§ãªWiâFiãåæã«ããŠãããšãå®éã®ãŠãŒã¶ãŒã¯äžå®å®ãª4Gã§ä»£åãæããŸãã
ããå°ãªãããŒã¿ãèŠæ±ããããããŠãã ãããã¯ã©ã€ã¢ã³ãåŽã§ãå šéšããŠã³ããŒãããŠãããã£ã«ã¿ãããããããµãŒããŒåŽã®ãã£ã«ã¿ãããŒãžã³ã°ãåªå ããŸããç»é¢ãæåŸã®20ä»¶ã®ã€ãã³ãã ããå¿ èŠãšãããªãããã®ã¯ãšãªããµããŒãããŠãã¯ã©ã€ã¢ã³ããäœçŸè¡ãååŸããŠå€§åãæšãŠãããšããªãããã«ããŸãã
ãã«ã¿åæããµããŒããããšãã¢ããªã¯ãæåŸã«èŠãåŸã§äœãå€ãã£ãïŒããšå°ããããŸããããã¯æŽæ°æå»ãå¢åã«ãŠã³ã¿ãè¿ããã¯ã©ã€ã¢ã³ãããã®æç¹ä»¥éã®æŽæ°ãšåé€ã ããèŠæ±ããããã«ã§ããŸãã
ãªãã©ã€ã¯é¿ããããŸããããæŽæ°ãåªçã«ããŠãã ããããªãã©ã€ã§äºéè«æ±ãäºéç»é²ãéè€ãèµ·ããªãããã«ããŸããäœææäœã«å¯ŸããåªçããŒããç¶æ ãèšå®ããæŽæ°ã»ãã³ãã£ã¯ã¹ïŒãå ãããã§ã¯ãªããèšå®ãããïŒãéåžžã«æå¹ã§ãã
ãªãã©ã€ãçºçãããšãã¯ãªãã©ã€ã¹ããŒã ãé¿ããŠãã ãããææ°ããã¯ãªãã«ãžãã¿ã䜿ããäœåãã®ããã€ã¹ãåæã«ãµãŒããŒã«æŒãå¯ããªãããã«ããé»è©±ãæ¯ç§èµ·ããã®ãé²ããŸãã
æç¢ºãªãšã©ãŒã³ãŒããè¿ããŠãã¯ã©ã€ã¢ã³ããäœããã¹ãã倿ã§ããããã«ããŠãã ããã401 ã¯åèªèšŒã404 ã¯éåžžãªãã©ã€åæ¢ã409 ã¯ç¶æ
ã®æŽæ°ãå¿
èŠã429 ã 503 ã¯ããã¯ãªããé©åããªã©ã§ãã
ã¯ã©ã€ã¢ã³ãåŽã®æ¯ãèãã§APIã³ã¹ããå¢ããã±ãŒã¹
è¯ãAPIèšèšããã£ãŠããã¯ã©ã€ã¢ã³ãåŽãéãã«ãããã¯ãŒã¯äœæ¥ãå¢ããããšããããŸããã¢ãã€ã«ã§ã¯è¿œå ã®ã©ãžãªèµ·åãšçšŒåæéããå®éã®ãã€ãæ°ãããããããªãŒã«å€§ããªåœ±é¿ãäžããããšãå€ãã§ãã
æ»
å€ã«å€ãããªãããŒã¿ã¯ãã£ãã·ã¥ããŠãã ããããããã£ãŒã«åçãæ©èœãã©ã°ãåç
§ããŒã¿ïŒåœäžèЧãã¹ããŒã¿ã¹ãã«ããŽãªïŒã¯æ¯åååŸããã¹ãã§ã¯ãããŸããã劥åœãªå¯¿åœãäžãããã£ã¹ã¯ã«ä¿åããå¿
èŠæã ãæŽæ°ããŠãã ãããAPIãæ€èšŒïŒETag ã Last-ModifiedïŒããµããŒããããªããçŽ æ©ãåãã§ãã¯ã¯å®å
šãªããŠã³ããŒããããã£ãšå®äŸ¡ã§ãã
å¥ã®äžè¬çãªåé¡ã¯åæé²è¡ã®éè€ãªã¯ãšã¹ãã§ããã¢ããªã®2ã€ã®éšåãåããªãœãŒã¹ãåæã«èŠæ±ããïŒäŸïŒããããŒãšèšå®ç»é¢ãäž¡æ¹ãããã£ãŒã«ãèŠæ±ããïŒãšãã³ã¢ã¬ã¹ããŠããã°2åã®åŒã³åºããçºçãã2åè§£æã2åç¶æ ãæŽæ°ããŸãããããã¯ãŒã¯ãªã¯ãšã¹ããåäžã®çå®ã®æºãšæ±ããè€æ°ã®å©çšè ã¯ãããåŸ ãŠãããã«ããŠãã ããã
ããã¯ã°ã©ãŠã³ããªãã¬ãã·ã¥ã¯æå³çã«è¡ã£ãŠãã ããããŠãŒã¶ãŒãããã«èŠããã®ãå€ããªãããããã¯éç¥ãããªã¬ãŒããªããªããå€ãã®å ŽååŸ ãããããŸããæ¯åã®ã¢ããªåéã§ãªãã¬ãã·ã¥ããžãã¯ãèµ°ãããªãã§ãã ãããçãã¯ãŒã«ããŠã³ãå ¥ããããŒã¿ãæåŸã«æŽæ°ãããæéã確èªããŠãã ããã
AppMasterã§ããã¯ãšã³ããäœãå Žåãç»é¢ã«åããããšã³ããã€ã³ãèšèšãäžè²«ããã¹ããŒããå¶åŸ¡ããããã£ãã·ã¥ããããŒã«ãããã¯ã©ã€ã¢ã³ããå€ãã®æééãã«ããŠããããããã«ãµããŒããããããªããŸãã
ãããããã£ãã·ã¥ããã€ããŒãã§ã®ãããã倱æ
ç®æšã¯ã©ãžãªã®èµ·åãæžãããCPUäœæ¥ãæžããããªãã©ã€ãæžããããšã§ããããã€ãã®ãã¿ãŒã³ã¯ç¯çŽãå°ç¡ãã«ããŠãç»é¢ãé ãæããããããšãããããŸãã
ããããé广ã«ãªããšã
ãããã¯äŸ¿å©ã§ããããããããå šéšã¡ããã ããåŒã³åºãã«ãªããšåé¡ã§ãããµãŒããŒãå€ãã®ããŒãã«ãçµåããéãæš©éãã§ãã¯ãè¡ã巚倧ãªã¬ã¹ãã³ã¹ãçµã¿ç«ãŠããªãããã®åäžãªã¯ãšã¹ãã¯å°ããªè€æ°ãªã¯ãšã¹ãããé ããªãããšããããŸããã¢ãã€ã«ã§ã¯1ã€ã®é ããªã¯ãšã¹ããã¢ããªãåŸ ããããããã¯ãŒã¯ãã¢ã¯ãã£ãã«ä¿ã¡ãã¿ã€ã ã¢ãŠããªã¹ã¯ãå¢ãããŸãã
å¥å šãªãããã¯ç»é¢åœ¢ç¶ã«åããã1ã€ã®ãã¥ãŒãå¿ èŠãšãããã®ã ããæç¢ºãªäžéãèšããŸããã¬ã¹ãã³ã¹ã1æã§èª¬æã§ããªããªãããã®ãšã³ããã€ã³ãã¯ããããåºãããŸãã
ã¹ããŒã«ãªç»é¢ãçããã£ãã·ã¥
æç¢ºãªç¡å¹åæŠç¥ãªãã®ãã£ãã·ã¥ã¯å€ãããŒã¿è¡šç€ºã®æªåŸªç°ãçã¿ãŸãïŒãŠãŒã¶ãŒã¯å€ãããŒã¿ãèŠãŠãã«ã»ãã¥ã»ãªãã¬ãã·ã¥ãããã¢ããªã¯äœåãªãã«ãªããŒããè¡ããŸããCache-Control ã䜿ããªãããã®ããŒã¿ãäœã§æŽæ°ããããïŒäœæïŒæŽæ°ã¢ã¯ã·ã§ã³ããµãŒããŒã€ãã³ããçãæ°é®®åºŠãŠã£ã³ããŠãªã©ïŒãèšç»ããŠãã¯ã©ã€ã¢ã³ãããã£ãã·ã¥ã¬ã¹ãã³ã¹ãä¿¡é Œã§ããããã«ããŠãã ããã
ããŒãªã³ã°ãããããªãŒã®çœ ã§ããå³ãã5ç§ã¿ã€ããŒã¯äœãå€ãããªããšãã§ãããã€ã¹ãå¿ããããŸããå¯èœãªããµãŒããŒé§åã®æŽæ°ã«åãæ¿ããããç©æ¥µçã«ããã¯ãªãããŠãã ããïŒå€æŽããªããšãã¯ééã䌞ã°ããããã¯ã°ã©ãŠã³ãã§ã¯åæ¢ããïŒã
巚倧ãªãã€ããŒãã¯éããªã³ã¹ãã§ãã䟿å©ãã®ããã«å·šå€§ãªãã¹ããªããžã§ã¯ããè¿ããšãããå€ãã®ãã€ããããå€ãã®JSONããŒã¹ãããå€ãã®ã¡ã¢ãª churn ãçã¿ãŸããç»é¢ã«å¿ èŠãªãã®ã ããéãã詳现ã¯ãªã³ããã³ãã§ååŸããŠãã ããã
æåŸã«ããããå ã®éšåç倱æãç¡èŠããªãã§ãã ããããµãçµæã®1ã€ã倱æããŠãããå šäœãå詊è¡ãããšãã©ãã£ãã¯ãéè€ããŸããã¯ã©ã€ã¢ã³ãã倱æããéšåã ããå詊è¡ã§ããããã«èšèšããŠãã ããã
ç°¡åãªãã§ãã¯ãªã¹ãïŒãããã¯å¢çåãããã£ãã·ã¥ã®æ°é®®åºŠãæåã«å®çŸ©ããå³ããããŒãªã³ã°ãé¿ãããã€ããŒããåããéšåæåããµããŒãããã
ãªãªãŒã¹åã®ç°¡åãã§ãã¯ãªã¹ã
åºè·åã«ãããã¯ãŒã¯åäœã ãã«éäžããäžåã®èŠçŽããè¡ã£ãŠãã ãããå€ãã®ããããªãŒæ¹åã¯é©ããåãé€ãããšã§åŸãããŸãïŒèµ·åãæžãããããŒã¹ãæžãããããã¯ã°ã©ãŠã³ãã§ã®ãªãã©ã€ãæžããã
äžäœ3ç»é¢ã§ãããå®è¡ããŠãã ããïŒ
- ã³ãŒã«ãããŒãã¯å°ããäºæž¬å¯èœãªãªã¯ãšã¹ãæ°ã§çµããïŒåã¢ã€ãã ã®ã«ãã¯ã¢ãããªã©ã®é ãã远åŸåŒã³åºãã«æ³šæããïŒ
- ã¬ã¹ãã³ã¹ã«ã¯æç¢ºãªãã£ãã·ã¥ã«ãŒã«ãå«ãŸããïŒé©æã«
ETagãLast-ModifiedïŒãšãäœãå€ãã£ãŠããªããšãã«304 Not Modifiedãè¿ã - ãªã¹ããšã³ããã€ã³ãã¯å¢çåãããŠããïŒå®å®ãããœãŒããããŒãžã³ã°ãããã©ã«ãã§äžèŠãã£ãŒã«ããè¿ããªã
- ãªãã©ã€ããžãã¯ã¯ãžãã¿ä»ãã®ããã¯ãªããè¡ããèªå·±ä¿®åŸ©ããªããšã©ãŒã§ã¯åæ¢ããïŒç·ãªãã©ã€æéã«äžéããã
- ããã¯ã°ã©ãŠã³ãæŽæ°ã¯æ£åœåãããŠããïŒãŠãŒã¶ãŒãèŠãå 容ãæç¢ºã«å€ããªãéãåžžæããŒãªã³ã°ã¯é¿ãã
ç°¡åãªçŸå®ãã§ãã¯ïŒããç»é¢ã1åèªã¿èŸŒã¿ãæ©å ã¢ãŒãã«ããŠããå床éããŠã¿ãŠãã ããããã£ãã·ã¥ãããã³ã³ãã³ããæåŸã«ç¥ãããŠããç¶æ ããã¬ã³ããªãŒãªãã¬ãŒã¹ãã«ãã衚瀺ããããªããäžå¿ èŠãªåŒã³åºããæžãããäœæéåºŠãæ¹åããŠããå¯èœæ§ãé«ãã§ãã
äŸïŒæ³šæè¿œè·¡ç»é¢ãå®ãèªã¿èŸŒãŸãã
顧客ãã¢ãã€ã«ããŒã¿ã§ããããªãŒæ®é20%ã®ç¶æ ã§æ³šæè¿œè·¡ã¢ããªãéããŸãã圌ããæ¬²ããã®ã¯ã²ãšã€ïŒãä»ã©ãã«è·ç©ããããïŒãç»é¢ã¯åçŽã«èŠããŸããããã®èåŸã®APIãã©ãã£ãã¯ã¯æãã®ã»ãé«ã³ã¹ãã§ãã
以åã¯ã¢ããªãç»é¢ãèªã¿èŸŒããšäžé£ã®ãªã¯ãšã¹ããé£ã³ãUIã¯ã©ãžãªã®èµ·åãåŸ ã¡ãããã€ãã®åŒã³åºãã¯åŒ±ãæ¥ç¶ã§ã¿ã€ã ã¢ãŠãããŠããŸããã
å žåçãªã以åãã®ãã¿ãŒã³ã¯æ¬¡ã®ãšããã§ãïŒ
GET /orders/{id}ã§æ³šæã®ãµããªãååŸGET /orders/{id}/itemsã§è¡ã¢ã€ãã ãååŸGET /orders/{id}/historyã§ã¹ããŒã¿ã¹ã€ãã³ããååŸGET /meã§ãŠãŒã¶ãŒãããã£ãŒã«ãšèšå®ãååŸGET /settingsã§è¡šç€ºã«ãŒã«ïŒéè²šãæ¥ä»åœ¢åŒïŒãååŸ
ããã§UIãå€ããã«3ã€ã®å€æŽãé©çšããŸãã
ãŸããç»é¢ãå¿
èŠãšãããã®ã ãã1åŸåŸ©ã§è¿ãåäžã®ã¹ã¯ãªãŒã³ãšã³ããã€ã³ãã远å ããŸãïŒæ³šæãµããªãææ°ã¹ããŒã¿ã¹ãæè¿ã®å±¥æŽãã¢ã€ãã ã®ã¿ã€ãã«ã次ã«ãããã£ãŒã«ããã£ãã·ã¥ããŸãïŒGET /me 㯠ETag ãš Cache-Control: private, max-age=86400 ãè¿ããå€ãã®éå°ã¯é«é㪠304 ã«ãªãïŒãã£ãã·ã¥ãæ°é®®ãªããããããªã¯ãšã¹ããçºçããªãå ŽåãããïŒãäžã€ç®ã«ãã€ããŒãã现ãããŸãïŒã¢ã€ãã ãªã¹ã㯠id, name, qty, thumbnail_url ã®ã¿ãéä¿¡ãã補å説æãæªäœ¿çšã®ã¡ã¿ããŒã¿ã¯å«ããŸããã
çµæã¯ããå°ãªãåŸåŸ©ãããå°ãªããã€ãããããŠãããã¯ãŒã¯ãäžå®å®ãªãšãã®ãªãã©ã€ãæžãããšã§ããé»è©±ã®ã©ãžãªã¯ããé·ãç ã£ãŠããããããã«ãªããããã«ããããªãŒç¯çŽã®å€§éšåãçŸããŸãã
ãŠãŒã¶ãŒã«ãšã£ãŠèŠãç®ã¯äœãå€ãããŸãããç»é¢ã¯åãã§ãããèªã¿èŸŒã¿ãéãæããå¿çæ§ãè¯ããæ¥ç¶ãäžå®å®ã§ãåäœãç¶ããŸãã
次ã®ã¹ãããïŒå®è·µçãªå±éèšç»ïŒãšAppMasterãå©ããããç¹ïŒ
æ©ãåã¡ãçããªããå°ããå§ããŠåœ±é¿ãæ€èšŒããŠãã ãããããããªãŒç¯çŽã¯éåžžãã©ãžãªèµ·åãšããŒã¹äœæ¥ãæžããããšããæ¥ãŠãããå€§èŠæš¡ãªæžãæããå¿ èŠã«ãªãããšã¯çšã§ãã
å®å šã§æž¬å®å¯èœããã€æ»ãããã3ã€ã®å€æŽïŒ
- 1ã€ã®ç»é¢ããšã³ãããŒãšã³ãã§èšæž¬ããïŒãªã¯ãšã¹ãæ°ãåèšãã€ããã€ã³ã¿ã©ã¯ãã£ããŸã§ã®æéããšã©ãŒãšãªãã©ã€çïŒ
- ãã®ç»é¢ã®ãªã¯ãšã¹ãã1ã2åã®åŒã³åºãã«ãããããïŒäºææ§ã®ããã«å€ããšã³ããã€ã³ãã¯æ®ãïŒ
- ãã©ãã£ãã¯ã®å€ãGETãšã³ããã€ã³ãã«
ETagã远å ããŠãã¯ã©ã€ã¢ã³ããIf-None-Matchã䜿ã304 Not Modifiedãåãåããããã«ãã
䜿çšé »åºŠãå®å®ããæ©èœïŒæ³šæäžèЧãã¡ãã»ãŒãžåä¿¡ç®±ãªã©ïŒãéžãã§ãã ãããå¯èœãªããµãŒããŒãµã€ãã®ãã©ã°ã®èåŸã«åºè·ããæ°æ¥éã«ããã£ãŠå€ãçµè·¯ãšæ°ããçµè·¯ã®KPIãæ¯èŒããŠãã ãããã»ãã·ã§ã³ãããã®ãªã¯ãšã¹ãæ°æžå°ããªãã©ã€æžå°ãã¢ã¯ãã£ããŠãŒã¶ãŒãããã®ããŠã³ããŒããã€ãæžå°ãæ¢ããŸãã
å€ãã¯ã©ã€ã¢ã³ããå£ããªãããAPIãšã¢ããªã®ãªãªãŒã¹ã調æŽããŠãã ãããå®çšçãªã«ãŒã«ïŒæ°ããæ¯ãèããå ã«è¿œå ããã¯ã©ã€ã¢ã³ããç§»è¡ããæåŸã«å€ãæ¯ãèããåé€ããããã£ãã·ã¥åäœãå€ããéã¯å人åããŒã¿ã«æ³šæããå ±æãã£ãã·ã¥ã§ãŠãŒã¶ãŒãæ··ãããªãããã«ããŠãã ããã
ããã¯ãšã³ã倿ŽãçŽ æ©ã詊äœããŠåºè·ããããªããAppMasterïŒappmaster.ioïŒã¯èŠèŠçã«ããŒã¿ãã¢ãã«åãããã©ãã°ïŒããããã§ããžãã¹ããžãã¯ãäœããèŠä»¶ãå€ãããã³ã«æ¬çªåãã®ãœãŒã¹ã³ãŒããåçæããã®ã«åœ¹ç«ã¡ãŸãã
ãŸãã¯é«ãã©ãã£ãã¯ç»é¢1ã€ã«å¯ŸããŠããããšã³ããã€ã³ã1ã€ãšäž»èŠGETã« ETag ã远å ããŠã¿ãŠãã ãããæ°å€ãæ¹åããã°ãã©ãã«ããã«å·¥æ°ãæè³ããããæç¢ºã«ãªããŸãã
ãããã質å
è¯ãåºçºç¹ã¯ç»é¢ããšã«äºç®ã決ããŠãå®éã®ã»ãã·ã§ã³ãèšæž¬ããããšã§ããå€ãã®ããŒã ã¯ã³ãŒã«ãããŒãæã«ã»ã«ã©ãŒã§4ïœ8ãªã¯ãšã¹ãçšåºŠãç®æšã«å§ããææªã®èŠå ãæœ°ããããšã§å³ããããŠãããŸããæ£ããæ°ã¯ãã¿ã€ã ã»ãã¥ã»ã€ã³ã¿ã©ã¯ãã£ãç®æšã確å®ã«æºããããªãã©ã€ãé·æéã®ã©ãžãªèµ·åãåŒãèµ·ãããªããã®ã§ãã
è€æ°ã®åŒã³åºããåžžã«äžç·ã«çºçãããªããããã¯åœ¹ã«ç«ã¡ãŸãããããããé ã倧ãããªã£ãŠããŸããšé广ã§ãããããã¬ã¹ãã³ã¹ã¯ç»é¢åäœã§å¢çãæ±ºãã1ã€ã®ãªã¯ãšã¹ããåäžç¹ã®é害ãšãªããªãããã«ããŠãã ããã宿çã«ã¿ã€ã ã¢ãŠããããæªäœ¿çšããŒã¿ãå€ããªããå°ããªçŠç¹ãçµã£ãåŒã³åºãã«æ»ãæ¹ãè¯ãã§ãã
æåã«è©Šãã¹ã㯠ETag ãš If-None-Match ã䜿ã£ãæ¡ä»¶ä»ããªã¯ãšã¹ãã§ããå€ãã®ãªãã¬ãã·ã¥ãå°ã㪠304 Not Modified ã¬ã¹ãã³ã¹ã«å€ããããŸããå ããŠãCache-Control ãããŒã¿ã®å®éã®æŽæ°é »åºŠã«åãããŠèšå®ãããšãäžèŠãªãããã¯ãŒã¯ã¯ãŒã¯ãé¿ããããŸããETag ãé£ããå Žåã¯ãæŽæ°æå»ããŒã¹ã®ãªãœãŒã¹ã«ã¯ Last-Modified ãš If-Modified-Since ãå®çšçãªä»£æ¿ã§ãã
ETag ã¯ãªãœãŒã¹ã®ãããŒãžã§ã³ããã§ãã¯ãšããŠä¿¡é Œæ§ãé«ããå
容ã®å€æŽãã¿ã€ã ã¹ã¿ã³ãã«ãããã«å¯Ÿå¿ããªãå Žåã«åããŸãããµãŒããŒã«æç¢ºãªæŽæ°æå»ããããã¿ã€ã ã¹ã¿ã³ã粟床ã§ååãªã Last-Modified ã§ãè¯ãã§ããã©ã¡ããäžã€ã ãå®è£
ã§ãããªããç¡é§ãªããŠã³ããŒããé¿ãã粟床ã®é«ã ETag ãããããããŸãã
APIãå€ããåã«ç»é¢ãã»ãã·ã§ã³åäœã§èšæž¬ããŠãã ããããšã³ããã€ã³ãåäœã ãã§ãªãããªã¯ãšã¹ãæ°ãéåä¿¡ãã€ãæ°ïŒããããŒãšããã£ãå«ãïŒããªãã©ã€ãã¿ã€ã ã¢ãŠããã€ã³ã¿ã©ã¯ãã£ããŸã§ã®æéããã°ã«åãããã©ã¢ã°ã©ãŠã³ããšããã¯ã°ã©ãŠã³ããåããŠèšæž¬ããŸããå€ãã®å Žåãæ°ç»é¢ããããŒãç¹°ãè¿ãã®èµ·åãçãã§ããŸãã
ãããã¬ã¹ãã³ã¹ã¯åãµãçµæãç¬ç«ããŠæåïŒå€±æã§ããããã«èšèšããã¯ã©ã€ã¢ã³ãã倱æããéšåã ããå詊è¡ã§ããããã«ååãªãšã©ãŒè©³çްãå«ããŠãã ããã1ã€ãå£ãããããšãã£ãŠãããå šäœãåèŠæ±ããã®ã¯é¿ããäºéã®ãã©ãã£ãã¯ãäœåãªã©ãžãªèµ·åãé²ããŸãã
ç»é¢ãä»ã¬ã³ããªã³ã°ãããã®ã ãã«ã¬ã¹ãã³ã¹ãçµãããªã¹ãã¯ãµããªãŒåœ¢ç¶ã䜿ãã®ãæãæ©ã广ãåºãŸããéããã£ãŒã«ããæ» å€ã«äœ¿ããªããã®ã¯è©³çްçšãšã³ããã€ã³ãã«ç§»ãããŠãŒã¶ãŒãé ç®ãéãããšãã ãååŸããŸããããã«ãã転éãã€ããšJSONã®ããŒã¹éãã¢ãã«æŽæ°ãæžããCPUãšããããªãŒã®ç¯çŽã«ãªããŸãã
ææ°ããã¯ãªãã«ãžãã¿ãæ··ããŠãªãã©ã€ã®ç·æéãäžéããé»è©±ãæ°ç§ããšã«ç®ãèŠãŸãã®ãé²ããŸããæžãèŸŒã¿æäœã¯åªçã«ããŠããªãã©ã€ã§éè€ãäºé課éãèµ·ããªãããã«ããŸããããã«ããµãŒããŒãæç¢ºãªã¹ããŒã¿ã¹ã³ãŒããè¿ããšã¯ã©ã€ã¢ã³ãã¯ãã€ãªãã©ã€ãæ¢ããã¹ãã倿ã§ããŸãã
çãããŒãªã³ã°ééã¯ãäœãå€ãã£ãŠããªããŠãã©ãžãªãšCPUãå¿ããããŸããããããŒãªã³ã°ãå¿ èŠãªãã倿Žããªãå Žåã¯ééãå»¶ã°ããããã¯ã°ã©ãŠã³ãã§ã¯äžæåæ¢ãããªã©ãè¡ã£ãŠãã ãããå¯èœãªãã€ãã³ãé§åïŒãµãŒããŒéç¥ïŒã«åãæ¿ããäœãæ°ãããã®ããããšãã ãã¢ããªãèµ·åãããŸãã
AppMasterã§ã¯ç»é¢å¿åã®ãšã³ããã€ã³ããäœããã¬ã¹ãã³ã¹ã¹ããŒãã®äžè²«æ§ãä¿ã¡ãããã§ããŸããããã«ãããããããã€ããŒãã®æŽåœ¢ã容æã«ãªããæ¡ä»¶ä»ããªã¯ãšã¹ãããµããŒãããããããŒãè¿ãããšã§ã¯ã©ã€ã¢ã³ããçããå€åãªããã¬ã¹ãã³ã¹ãåŸãããããã«ãªããŸããé«ãã©ãã£ãã¯ç»é¢1ã€ããå§ããŠã1ã€ã®ããããšã³ããã€ã³ããšäž»èŠGETã« ETag ã远å ããŠããªã¯ãšã¹ãããªãã©ã€ã®æžå°ãèšæž¬ããã®ãå®çšçãªã¢ãããŒãã§ãã


