äŒæ¥éã«ãããAPIå©çšãæ¡å€§ããŠãããšãAPIèªäœãå©çãçã¿åºãAPIãšã³ãããŒãåºãã£ãŠãããŸãã APIãšã³ãããŒèªäœã«ã€ããŠã¯ä»¥åèšäºã«ããŠããŸã ãããã®äžã§èããã¹ãèŠç¹ããµãŒãã¹ã®APIåã§ãã ããè€éãªåŠçãRESTfulã§åŠçãã åçŽãªããŒã¿ããŒã¹æ§é ãã¢ãã«ã®å
¬éã¯RESTfulã«ãã£ãŠåŠçãè¡ããŸããRESTfulã¯éçºè
ã«ãšã£ãŠåãããããã䜿ãåæã®è¯ãAPIãã©ãŒãããã«ãªããŸããã幟ã€ãã®åé¡ç¹ããããŸãããã®äžã€ãã¯ã©ã€ã¢ã³ãåŽïŒå©çšåŽïŒã®ã³ãŒãéãå¢å€§ããããšã§ãã åçŽãªã¢ãã«æäœã ããRESTfulã§å
¬éããŠããå Žåãè€æ°ã®ã¢ãã«ã飿ºããããããªæäœãå®çŸããã«ã¯APIãå©çšããåŽã®ã³ãŒãéãå¢ããã¡ã§ããäŸãã°ã«ã¬ã³ããŒã«é¡§å®¢ãšã®æã¡åããã远å ããå ŽåãRESTfulã§èãããšæ¬¡ã®ããã«ãªããŸãã 顧客APIã«å¯ŸããŠé¡§å®¢ã®ååšç¢ºèªãè¡ãïŒGETïŒ ããŒã¿ããªããã°äœæãè¡ãïŒPOSTïŒ ã«ã¬ã³ããŒAPIã䜿ã£ãŠæ¥ä»ã空ããŠããã確èªããïŒGETïŒ ç©ºããŠããã°é¡§å®¢ãšèªåã®æ
å ±ãåãããŠã¹ã±ãžã¥ãŒã«ãç»é²ããïŒPOSTïŒ ãã®ããžãã¯ã¯ãã¹ãŠã¯ã©ã€ã¢ã³ãåŽã§è¡ããªããã°ãªããŸãããããã«4ã®ã¹ã±ãžã¥ãŒã«ç»é²èªäœã¯é¡§å®¢ããŒã¿ãååŸããŠããªããŠãå®è¡ã§ããŠããŸããããäœãæã«ãã£ãŠããŒã¿æ§é ãå€ãã£ãŠããŠããŸãå¯èœæ§ããããŸãã ãµãŒãã¹ã®APIåãèããéã«ã¯ããããã®åŠçãããçšåºŠããã¯ã«ããäžã€ã®APIãšããŠå
¬éããã®ãè¯ãã§ããããå¿
ãèžãŸãªããã°ãªããªãã¹ãããããããªãã°ãããã¯ã¯ã©ã€ã¢ã³ãã§ã¯ãªããµãŒãåŽã§åŠçããæ¹ãå¹ççã§ãã RESTfulã§ã¯ãããã¯ãŒã¯éä¿¡éãå¢ãã å
ã»ã©ã®äŸã«ãããŠã4åã®ãããã¯ãŒã¯éä¿¡ãçºçããŸãããããã¯ãŒã¯éä¿¡ã¯ã©ãã§ãšã©ãŒãçºçãããåãããªãããããªãã¹ãå°ãªãåæ°ã§çµããããæ¹ã广çã§ããã·ã¹ãã 飿ºãåæã®APIã§ã¯ã³ãã¯ã·ã§ã³æ°å¢å€§ã«ãããªãœãŒã¹æ¬ ä¹ã«ããªããããããã®æå³ã§ãã³ãã¯ã·ã§ã³æ°ã¯å°ãªãã«è¶ããããšã¯ãããŸããã ãããã¯ãŒã¯æ°ãæžããæ¹æ³ãšããŠããããåŠçã§è€æ°ã®åŠçãäžåã§éããããã«ãããã®ããããŸããããããã®å Žåã顧客ã®ååšç¢ºèªãè¡ã£ãäžã§ããŒã¿ã®äœæã倿ãããšèšã£ãæ¡ä»¶åŠçã¯å°é£ã§ããçµå±ãå¿
èŠãªããŒã¿ãéããŠå€å®ãè¡ã£ãŠAPIãã³ãŒã«ãããšããã¹ãããã¯å€ãããŸããã éä¿¡ãæžããããã®æ¹æ³ãšããŠãæ€çŽ¢ããŠããŒã¿ããªããã°äœæããŠè¿ããšãã£ããããªAPIãçšæããæ¹æ³ãèããããŸããããããåŠçã«ã€ããŠäžã€ã«ãŸãšããŠããŸãããšã§ã¯ã©ã€ã¢ã³ãåŽããµãŒãåŽã®åŠçäž¡æ¹ãæžããããšãã§ããã§ãããã ãŸããå
éšã®ã¡ãœãããåŒã³åºãã®ããå§ãã§ãããã®æãHTTPãçµç±ããŠåŒã³åºãã®ã¯ãããããŸãããã³ãã¯ã·ã§ã³æ°ãå¢ããŠããŸãããã§ãããã ããã€ã¯ããµãŒãã¹ã«ãã£ãŠã·ã¹ãã ãççµåã«ããŠããå Žåã¯ããŸããããªãå¯èœæ§ããããŸãã RESTfulã¯ãã©ã³ã¶ã¯ã·ã§ã³ã«åŒ±ã RESTfulã®åŒ±ç¹ãšããŠãã©ã³ã¶ã¯ã·ã§ã³ããããŸããæ¥åã·ã¹ãã ã«ãããŠéäžã§ãšã©ãŒãèµ·ãã£ãæã®ããŒã«ããã¯åŠçã¯å¿
ãæ±ããããã®ã§ãããRESTfulã§ã¯ããŸãå®è£
ããã®ãå°é£ã§ããããããã¯HTTPã®ä»çµã¿äžãäžåäžåã®ã³ãã¯ã·ã§ã³ã§éããŠããŸããšèšãåé¡ã«ãé¢ä¿ããŠããŸãã äžåºŠã«ããŒã¿ããã¹ãŠåãåããã°ããµãŒãå
éšã§ã¯ãã©ã³ã¶ã¯ã·ã§ã³ã䜿ã£ãåŠçãå¯èœã«ãªããŸããç¹ã«äŒæ¥éã«ãããAPI掻çšã«ãããŠã¯ãã©ã³ã¶ã¯ã·ã§ã³ãæèããèšèšãå¿
èŠã«ãªãã§ãããã RESTfulãšãããšããŒã¿ããŒã¹ã®ããŒãã«ã¯ã¢ãã«åäœã§ã®æäœãæãæµ®ãã³ãŸãããã¢ãã«ã®æäœã ãã§æžãã±ãŒã¹ã¯å€ããããŸãããéçºè
ããã®APIã䜿ã£ãŠäœãå®è£
ããã®ããæèãã圌ãã«ãšã£ãŠäœ¿ãããã圢ã§å
¬éããå¿
èŠããããŸãã ããŒã¿ããŒã¹ã§ã¯ãªããå©çšããæ©èœããµãŒãã¹ãšèšã£ãåäœã§RESTfulãªAPIãäœããšäœ¿ããããã§ãããã
APIã¯äžè¬çã«ãã«åã®æè¡ã§ããã¯ã©ã€ã¢ã³ãåŽããã¢ã¯ã»ã¹ããããŸã§ã¯åŸ
ã¡ã®ç¶æ
ã«ãªããŸããã¯ã©ã€ã¢ã³ãåŽããèŠãŠãããµãŒãå
éšã§ã©ã®ããŒã¿ãæŽæ°ãããŠããã®ãã¯ã¢ã¯ã»ã¹ããŠã¿ããŸã§åãããŸããããã®æã®åé¡ã§åä»ã«ãªãã®ããã©ã®ããŒã¿ãåé€ãããã®ããã確èªãã¥ãããšããããšã§ãããã¹ãŠã®ããŒã¿ãèŠãäžã§ãæãèœã¡ãŠããã°åé€ããããšãã£ãç¢ºèªæ¹æ³ã§ãã£ãããåŠçã®å±¥æŽãèŠãŠå€æãããšèšã£ãæ¹æ³ã«ãªã£ãŠããŸããŸãã ããã§ãµãŒãåŽããã§ãããŒã¿ã®æŽæ°ãäŒããããæ¹æ³ã䜿ã£ãŠãã¯ã©ã€ã¢ã³ããšã®ã³ãã¥ãã±ãŒã·ã§ã³ã«åœ¹ç«ãŠãŠã¿ãŸãããã WebSocket WebSocketã¯HTML5仿§ã®äžéšãšããŠå®çŸ©ãããŠããŸããããçŸåšã¯æ¬äœãšã¯åãé¢ãããŠããŸããWebSocketã¯ããããPubSubãªåœ¢ã§ãã¯ã©ã€ã¢ã³ãããµãŒãåŽã®ã¡ãã»ãŒãžã賌èªïŒSubscribeïŒããŸãããµãŒãã¯èª°ã賌èªããŠãããã¯æ°ã«ãããçºä¿¡ïŒPublishïŒããã ãã§ãããšã¯èšãã賌èªçžæã«å¯ŸããŠãã¡ããšå±ãããã«ããŸãã¯å±ããªããŠãè¯ããšèšã£ãå質管çãã§ããããã«ãªã£ãŠããŸãã HTML5ã®äžã§çãŸããã®ã§ä»çµã¿ãšããŠã¯Webãã©ãŠã¶ã察象ã«ããŠããŸãããåçš®ããã°ã©ãã³ã°èšèªåãã«è³Œèª/çºä¿¡ã§ããã©ã€ãã©ãªãååšããŸããws://ããŸãã¯wss://ïŒSSL/TLSçïŒã§ã¯ããŸãå°çšã®ãããã³ã«ãå©çšããŸãã IoTåéã§ããã°äŒŒããããªä»çµã¿ã«MQTTããããŸãããã¡ãã¯ãããã®ããŒã¿éãå°ãããšããç¹åŸŽããããŸãããããã³ã«ã¯mqtt/mqttsãšãã£ãç¬èªã®ãã®ã«ãªããŸãã WebRTC WebRTCã¯P2Pãªã¡ãã»ãŒãžãããã³ã«ã«ãªããŸããåç»ãé³å£°ãæµãããšãã§ããã®ã§ãåç»ãã£ãããé³å£°ãã£ããã«äœ¿ãããããšãå€ãããã§ããæåã®ã³ãã¯ã·ã§ã³æ
å ±ã亀æããéã«ã¯STUNãµãŒããä»ããŸãããå®éã®ããŒã¿éåä¿¡ã¯P2Pã«ãŠå®è¡ãããŸãã åºæ¬çã«ã¯ã©ã€ã¢ã³ãå士ã®ã¡ãã»ãŒãžéåä¿¡ã«ã€ããŠè¡ãããŸãã®ã§ãAPIã«ã¯åããªãããç¥ããŸããããšã¯èšãããªã¢ã«ã¿ã€ã ã«ããŒã¿ã®éåä¿¡ãã§ãããããã³ã«ãªã®ã§ãæŽ»çšæ³ã¯ããã§ãããã WebHooks WebHooksã¯ãµãŒãã«å¯ŸããŠãããããURLãç»é²ããŠããããµãŒãåŽã§äœãã€ãã³ãããã£ãæã«éç¥ããŠãããä»çµã¿ã§ããã¯ã©ã€ã¢ã³ããéç¥ããŠæ¬²ããURLãç»é²ããã®ã§ãã»ãã¥ãªãã£ã«ã€ããŠã¯ããŸãèæ
®ãããããšã¯ãªãããã§ãã HTTP/HTTPSã䜿ãã®ã§ä»ã®ä»çµã¿ã«æ¯ã¹ããšæè»œã§ãããã ããµãŒãåŽã®è² è·ã¯é«ããªãåŸåããããŸããéç¥ãåãåãåŽã¯ã€ã³ã¿ãŒãããäžã«å
¬éãããŠããå¿
èŠããããéçºæã¯è¥å¹²æéãããããŸãã Webãµã€ãããã·ã¥ ã¹ããŒããã©ã³ã§ã¯ããç¥ãããŠããããã·ã¥éç¥ã®ä»çµã¿ãWebãã©ãŠã¶ã§å®çŸã§ããã®ãWebãµã€ãããã·ã¥ã§ãããŸã Google ChromeãFirefoxãªã©éããããã©ãŠã¶ã®ã¿å®çŸã§ããŸãã ãµãŒãåŽã§ã¯å¯Ÿè±¡ã«ãªãWebãã©ãŠã¶ã®ããŒã¯ã³ãä¿æããŠããå¿
èŠããããŸãããã®ããŒã¯ã³ãæå®ããŠã¡ãã»ãŒãžãéä¿¡ããŸããããã°ã©ã åãã«JSONããŒã¿ãPayloadãšããŠéãããšãã§ããŸãã APIããµãŒãéã§ãªã¢ã«ã¿ã€ã ã«éåä¿¡ããããã«äœ¿ãã®ã§ããã°ãçŸæç¹ã§ã¯WebSocketãŸãã¯WebHooksã䜿ãã®ãè¯ãããã§ããWebãã©ãŠã¶ãšã®æ¥ç¶ã§ããã°ãWebSocketãŸãã¯Webãµã€ãããã·ã¥ã«ãªãã§ãããããªãããªã¢ã«ã¿ã€ã éä¿¡ç³»ã¯RESTfulã®ããã«ããã¡ã¯ãã¹ã¿ã³ããŒããšèšãã圢åŒã決ãŸã£ãŠããªãããããµãŒãã¹ããšã«éåä¿¡ãããããŒã¿ãã©ãŒããããç°ãªã£ãŠããŸãïŒããã§ãJSONã䜿ãã±ãŒã¹ãå€ãã§ããïŒãå°å
¥ããå Žåã«ã¯äžè²«ããèšèšã«ãªãããã«æ³šæãå¿
èŠã§ãããã
ãã€ã¯ããµãŒãã¹ ã·ã¹ãã ãããå°ãããŸãšããAPIããŒã¹ã§æ©èœãæäŸãããã€ã¯ããµãŒãã¹ãããåºãã£ãŠãããšèããããŸããå€ãã®ã¢ããªã·ãã¯ãªã·ã¹ãã ã«ãããŠå¯çµåãæ¡åŒµæ§ãã¡ã³ããã³ã¹æ§ã«ãããŠè² ã®è³ç£ãšãªã£ãŠããŸãããã€ã¯ããµãŒãã¹åããããšã§çµåãã€ã³ããæžãããéçºã容æã«ããŸãã ãã€ã¯ããµãŒãã¹ã¯å€ããã¢ãã«ããŒã¿ã®CRUDæäœãREST APIã«ãŠæäŸããŸããHTMLãè¿ããã®ã¯å€ããããŸããããŸãã«APIåãã®æœçãšèšããã§ãããããã ãããµãŒãã¹ã®åãæ¹ãããŸããããªããšããã ã·ã¹ãã ã现ååãããã ãã§è€éãªã·ã¹ãã æ§æã«ãªã£ãŠããŸããŸãã æè¿ã§ã¯ãã€ã¯ããµãŒãã¹çšã®ãã¬ãŒã ã¯ãŒã¯ãç»å Žããéçºãããç°¡åã«ãªã£ãŠããŸããæ¬¡ã®æ®µéãšããŠã¯ã¢ãŒããã¯ãã£ã§ãã£ããããµãŒãã¹ã®åãåãæ¹ã«é¢ãããœãªã¥ãŒã·ã§ã³ãå
±æããã幎ã«ãªã£ãŠããããšã§ãããã Swagger æšå¹Žã§ããOpenAPI Initiativeã«ãã£ãŠSwaggerã¯äžç€Ÿã®æ
å ±ãããªãŒãã³ãœãŒã¹ãžããããŠæ¥çã®ããã¡ã¯ãã¹ã¿ã³ããŒããžæé·ããããšããŠããŸããAPIã®ããã¥ã¡ã³ãèšæ³ã«ã€ããŠã¯ä»ã«ã幟ã€ããããŸãããSwaggerããã³OpenAPIãæã倧ããªã·ã§ã¢ãåããšæãããŸãã ãã ãçŸç¶ã®ããŒãžã§ã³2ãšãæ°ããããŒãžã§ã³3ã¯å
šãæ§é ãå€ããããšã決ãŸã£ãŠããŸãã®ã§ããããŸã§ã«äœæããããŒã«ã¯å¯Ÿå¿ãè¿«ãããã§ããããããã¥ã¡ã³ãã«ã€ããŠã¯ã³ã³ããŒã¿ãŒãçšæãããäºå®ãšãªã£ãŠããŸããããŒãžã§ã³3ã¯ä»å¹Žäžã«ãªãªãŒã¹ãããäºå®ã§ãã æšæºãã©ãŒããããã§ããããããšã§ãåšèŸºããŒã«ãäœãããããªããŸãããããŸã§ã«ãããã¥ã¡ã³ããã¢ãã¯ãµãŒãããã¹ããªã©å€ãã®ã©ã€ãã©ãªããããŸããããããã«å©çšç¯å²ãåºãã£ãŠãããã®ãšæãããŸãã APIãããŒãžã¡ã³ã å€ãã®APIã¯ãµãŒãã¹ã«çŽä»ããŠäœæãããŸãããã®ãããåãµãŒãã¹è²¬ä»»è
ã®ããæ¹ã§ãã£ãããéçºããã¿ã€ãã³ã°ã§ãã¬ã³ããå€ãã£ãŠããããšããããŸãããããããã©ãŒãããã®äžçµ±äžæã¯å©çšè
ãæ··ä¹±ãããããéè€ããéçºãå¿
èŠãšãããããŸãã ãããã£ãåé¡ã解決ããããã«APIãããžã¡ã³ããå°å
¥ããäŒæ¥ãå¢ããŠããŸããAPIãããžã¡ã³ããå°å
¥ããããšã§ã»ãã¥ãªãã£ãè² è·å¯Ÿçãã€ã³ã¿ãã§ãŒã¹ã®çµ±äžããã°ç®¡çãªã©ãšãã£ãæ©èœãäžå
管çã§ããããã«ãªããŸãã APIã®ã€ã³ã¿ãã§ãŒã¹ãå€ããã®ã¯å°é£ã§ãããã®ãããæä¹
çã«äœ¿ãããããªæç¢ºãªåºæºããã£ãŠèšèšã«åãçµãå¿
èŠãããã§ããããAPIãããžã¡ã³ãã®å€ãã¯ããããåºæºããããããåããŠãããå©çšè
ã«ãšã£ãŠåãããããAPIãéçºã§ããããã«ãªã£ãŠããŸãã å
éšAPIã®å¢å BtoBã«ãããŠã¯äŒæ¥éã®ã¿ã§æäŸãããAPIãååšããŸãããããã®APIã¯å¥çŽããäŒæ¥ã ãã«å
¬éããããã®ã§ãããã¥ã¡ã³ããªã©ãéå
¬éã«ãªã£ãŠããŸããããããå€ãã®APIé¢é£ããŒã«ã¯å
¬éåæã«äœãããŠãããã®ããããŸããäžè¬çãªããã°ã©ãã³ã°èšèªã«ãããŠã¡ãœããã®å
¬éãéå
¬éãæå®ã§ããã®ãšåæ§ã«ãAPIã«ãããŠãå
¬éãéå
¬éãèšå®ã§ããããã«ãªã£ãŠããã§ãããã å
éšAPIã®å¢å ã¯äŒæ¥éã«ãããAPIãã©ã³ã¶ã¯ã·ã§ã³ã®å¢å ã«ã€ãªããã®ã§æ±ºããŠæªãå
åã§ã¯ãããŸããããã ããäŒæ¥ã飿ºå
ãæ¢ãéã«APIæ
å ±ãèŠã€ãããªãã®ã¯åé¡ããããããäœããã®ããã¥ã¡ã³ãã¯äžè¬å
¬éãããã¹ãã§ãããã ããŒããŠã§ã¢é£æºåAPIã®å¢å æ°å¹ŽåããIoTãäžã€ã®ããŒã¯ãŒãã«ãªã£ãŠããŸãããå€ãã®äŒæ¥ãããŒããè²·ã£ãŠããããããããã¯ãŒã¯ãžã®ç¹ã蟌ã¿ãèªåãã¡ã§éçºããŠããŸãããããã¯ãšãŠããªãœãŒã¹ã®ãããäœæ¥ã§ãããæè¿ã§ã¯ã¯ã©ãŠããµãŒãã¹ãšèªå飿ºããIoTããã€ã¹ãç»å ŽããŠããŸãã ããã€ã¹ããããã¯ãŒã¯ãåããŠããå Žåã¯MQTTãŸãã¯WebSocketã®ãããªãããã³ã«ãå Žåã«ãã£ãŠã¯REST APIãã³ãŒã«ããä»çµã¿ã«ãªã£ãŠããŸããããã€ã¹ã®èšå®ããè¡ãã°ããã«ãããã¯ãŒã¯äžã«ããŒã¿ãäžããããã®ã§ãéçºããšãŠãå¹çåããŸãã IoTåãã«ã¯ã©ãŠããµãŒãã¹ãéçºããŠããäŒæ¥ã«ãããŠã¯ãããã€ã¹äŒæ¥ãšçµãã äžã§ãµãŒãã¹ã®æäŸãæ±ããããŠããã§ãããã HTTPãšã©ãŒè¡šçŸã®çµ±äž 2016幎03æã«åºã RFC 7807 - Problem Details for HTTP APIs ãåèã«ãªããŸãããã®äžã§ã¯application/problem+json ãŸã㯠application/problem+xml ãšããã¬ã¹ãã³ã¹ããããŒãææ¡ãããŠããŸãããããŸã§REST APIã§ã¯HTTPã¹ããŒã¿ã¹ã䜿ã£ãŠãšã©ãŒè¡šçŸãè¡ã£ãããç¬èªã®ãšã©ãŒãªããžã§ã¯ããè¿ãããããŠããŸãããããããçµ±äžããŠããããšããåãã§ãã è¿åŽããå
容ã§ãããäŸãã°JSONã®å Žåã¯æ¬¡ã®ããã«ãªããŸãã { "type": "https://example.com/probs/out-of-credit", "title": "You do not have enough credit.", "detail": "Your current balance is 30, but that costs 50.", "instance": "/account/12345/msgs/abc", "balance": 30, "accounts": [ "/account/12345", "/account/67890" ] } ããããJSONãšHTTPã¹ããŒã¿ã¹ãåãããŠãšã©ãŒã衚çŸããŠãããŸãã äŒæ¥ã«ãããAPIå©çšãå
¬éãåŸã
ã«é²ãã§ããŠããŸãã2017幎ããŸããææºã§ãã£ããèªç€Ÿã·ã¹ãã å士ã®é£æºã«APIãå©çšãããšèšã£ãã±ãŒã¹ãå¢ããŠããããšã§ãããã
æè¿ã®APIã§ã¯JSONããªã¯ãšã¹ã/ã¬ã¹ãã³ã¹ãã©ãŒããããšããŠæ¡çšããããšãå€ãã§ããããµã€ãºã決ããŠå°ãããªãããšãããŒã¹ã«ãããæéãªã©ãæ°ã«ããã±ãŒã¹ããããŸããããã§èããŠã¿ããã®ãã·ãªã¢ã©ãºããããã©ãŒãããã§ãã£ãããä»ã®ãã©ãŒãããã§ããä»åã¯ãããªãã©ãŒãããäŸã玹ä»ããŸãã JSON RESTful APIã§æãå€ããã¡ã€ã«ãã©ãŒãããã§ã¯ãªãããšæããŸããJavaScriptã®ãªããžã§ã¯ããã©ãŒãããã§ãããå€ãã®ããã°ã©ãã³ã°èšèªã§ããŒã¹ããããçæã§ããããã«ãªã£ãŠããŸããããã ãã·ã³ãã«ãªãã©ãŒãããã§ãããšèšããŸãã åé·æ§ã¯ããŸããããŸããããJavaScriptç¹æã®æ³¢ãã£ãã®å€ããããã«ã¯ã©ãŒãã«å²ã¿ãªã©ã¯ããŸã奜ãŸããªãéšåãšèšããŸãã google/protobuf: Protocol Buffers - Google's data interchange format GoogleãéçºããŠãããã©ãŒãããã§ããXMLãã3ã10åå°ãããããŒã¹ã¯20ã100åé«éã§ãããšããŠããŸããããããããããã³ã«å®çŸ©ãã¡ã€ã«ãäœæããã³ã³ãã€ã«ããããšã§å€ãã®ããã°ã©ãã³ã°èšèªã«å¯Ÿå¿ããã³ãŒããçæãããŸãã MessagePack: It's like JSON. but fast and small. JSONãšäŒŒãŠããããã§ã¯ãããŸãããããµã€ãºã«ã€ããŠã¯å¯ŸJSONãšããŠåŒ·ãæèããŠããããã§ããJSONããäžèŠãªéšåãåãåã£ãããšã§ããµã€ãºã¯å€§å¹
ã«æžã£ãŠããŸãã察å¿ããŠããã©ã€ãã©ãªãå€ãã®ã§ããã人ã«ããå¯èªæ§ãäœãã®ãé£ç¹ãšèšããããç¥ããŸããã Welcome to Apache Avro! JavaãPythonãCãC++ãC#ãªã©ã§äœ¿ããããŒã¿ã®ã·ãªã¢ã©ãºãã©ãŒãããã«ãªããŸããããã°ã©ãã³ã°èšèªãéãããŠããŸããŸããããšã³ã¿ãŒãã©ã€ãºãªäŒæ¥ã·ã¹ãã ã§ããã°æ¡çšã§ããå¯èœæ§ãããããã§ããã¹ããŒãã¯JSONã§å®çŸ©ããŸãã The Official YAML Web Site 人ãèªã¿ããããšããç¹ãéèŠãããã©ãŒãããã§ããéåžžã«å€ãã®ããã°ã©ãã³ã°èšèªã§ãµããŒããããŠããŸãããAPIã®ãã©ãŒããããããèšå®ãã¡ã€ã«ã®ãã©ãŒããããšããŠæ¡çšãããããšãå€ãããã§ãã Extensible Markup Language - Wikipedia ããããXMLã®ããšã§ããWebãµãŒãã¹ã®é ã«æã䜿ããããã©ãŒãããã§ããéãã¿ã°ã§å²ããšããã®ãåé·çã§é¢åãšããã®ãæ©ã¿ã®ã¿ãã§ãããäŒæ¥éã§ã䜿ããããã«æ€èšŒããä»çµã¿ãªã©ããããããçšæãããŠããç¹ãå©ç¹ã§ãã å€ãã®å ŽåãXMLãè§£éããã©ã€ãã©ãªã¯ãã®ã³ãŒããç¬ç¹ãªãã®ã«ãªããã¡ã§ããJSONã®ããã«ããã·ã¥ã飿³é
åãDictionaryã«ãªãããã§ã¯ãããŸããã ã·ãªã¢ã©ãºããããã©ãŒãããã¯äººãèªãããšã¯ã»ãŒæ³å®ãããŠããŸããããã®ããããã°ã©ãã³ã°èšèªå士ã®äžã§ãã䜿ãããŸããããµã€ãºãå°ããã£ãããé«éã«åŠçãã§ããããã«ãªããŸãããµãŒãã¹ã®èŠæš¡ãå©çšæ³å®ã«ãã£ãŠæ¡çšãèããŠã¿ãŠãè¯ãã§ãããã
ãããŸã§ãµããŒããåãåããã«å¯ããããã¡ãã»ãŒãžã¯äººã®ç®ã§èŠãŠããã®æå³ãè§£éããäžã§ããŒã¿ããŒã¹ã«æ§é åããŠç»é²ãããŠããŸããããããäœçŸãäœåãšããæç« ãèªãã®ã¯å€§å€ãªããšã§ãã ããããæ©æ¢°ã§åŠçã§ããå¯èœæ§ãæã£ãŠããã®ãèªç¶èšèªåæã§ããæ©æ¢°åŠç¿ã¢ãã«ãããŒã¹ã«ããããšã§ããã¹ãã®æ§é ã¯ãã¡ãããæå³ãåæã§ããããã«ãªã£ãŠããŠããŸãã Cloud Natural Language API  | Google Cloud Platform GoogleãæäŸããèªç¶èšèªåæAPIã§ããéæ§é åããã¹ãã®äžããå Žæãäººã®æ
å ±ãåãåºããããææ
ãæœåºããããšãã§ããŸããä»ã®APIãšåãããããšã§é³å£°ããŒã¿ãåæããããææžãææžããããŒã¿ãèªã¿åãããšãã§ããŸãã IBM - Natural Language Classifier èªç¶èšèªåé¡ | Watson Developer Cloud - Japan IBMãæäŸããèªç¶èšèªåé¡APIã§ããããã¹ãã®èåŸã«ããæå³ãè§£éãããããããçšæããŠããã«ããŽãªã®ã©ãã«ãããããã®ããåé¡åãã§ããŸããã¯ã©ã¹ã¿ãªã³ã°ã®é«æ§èœçãšèšããŸãã 解説ã»äºäŸ | docomo Developer support | NTTãã³ã¢ RESTfulã«ããã¹ãæ
å ±ãåé¡åãã§ããŸãããããŠããäžã€äžè¬çã«ã»ã³ã·ãã£ããšåŒã°ããèšèãåæããããã¹ãå
容ãå±éºã®é«ãã«ããŽãªã«ã©ããããè¿ãããåæã§ããŸãã ããã¹ãåæ - Cognitive Services | Microsoft Azure Azureã§æäŸãããèšèªåŠçAPIã§ããè±èªã®ããã¹ããåæããèªç€Ÿãã©ã³ãã«å¯Ÿããè©äŸ¡ã倿ã§ããŸããããã«éèŠãªãã¬ãŒãºãæœåºãããããããã¯æ€åºãèšèªå€å®ãå¯èœã§ãã Conversational User Experience Platform for products and services - API.AI äžããããããã¹ãããã¢ã¯ã·ã§ã³ãååãäººãæ¥ä»ãªã©ãJSONã§ååŸã§ããŸããããã«ãã£ãŠããã¹ããäœãç®çãšããŠãããã倿ã§ããããã«ãªããŸããè±èªã®ã¿ãµããŒãããŠããŸãã éæ§é åããã¹ãããæå³ãèŠãã ããšããã®ã¯ãšãŠãå°é£ã§ããããã¹ããåæããåãã¡æžãã®ãããªåŠçã¯åé¡åãã¯ã§ããŸããããã®å¥¥ã«ããæå³ãŸã§ã¯èªã¿åããŸããã§ãããèªç¶èšèªåæAPIã䜿ãããšã§ã¡ãŒã«ããã£ãããªã©ã®ããã¹ããèªåçã«åæããé©åãªå¯Ÿå¿ãè¡ããããã«ãªãã§ãããã
ããŒã¿ãå¯èŠåããæ¹æ³ãšããŠã°ã©ãããã£ãŒããçšããããŸãããŠãŒã¶ã«ãšã£ãŠã¯ã¡ãªãããããåé¢ãéçºè
ãšããŠã¯ã°ã©ããåºåããã®ã¯ããç°¡åã§ã¯ãããŸãããç»åã©ã€ãã©ãªãå
¥ããããJavaScriptã®ã°ã©ãã©ã€ãã©ãªã«åãããããŒã¿åºåãæ±ããããŸãã ããã§ä»åã¯ã°ã©ããç°¡åã«äœæã§ããAPIããŒã¹ã®ã°ã©ããµãŒãã¹ã玹ä»ããŸãã Charts  | Google Developers Googleã®æäŸããã°ã©ããµãŒãã¹Google Chartsã§ããã«ã¹ã¿ãã€ãºã容æã§ãã°ã©ãã¯ç»åã®ä»SVGã§ã®åºåãã§ããŸããå»ã
ãšæŽæ°ãããããŒã¿ã«åããããªã¢ã«ã¿ã€ã ã°ã©ããäœæã§ããŸãã Charts  | Google Developers HeartRails Graph | ãã¥ãŒããªåã°ã©ãç°¡åäœæãµãŒãã¹ HeartRailsãæäŸããåã°ã©ãäœæãµãŒãã¹ã§ããé
ç®ãšå²åãèšå®ããã ãã§ã°ã©ããäœæã§ããŸããã¹ã€ããã¡ãœãããšåŒã°ããã°ã©ããæš¡ããŠããããã©ã³ãã坿ããããã®ãæ¡çšãããŠããŸãã HeartRails Graph | ãã¥ãŒããªåã°ã©ãç°¡åäœæãµãŒãã¹ rurihabachi.com - Web API - Function(x) Graph 颿°ã°ã©ããæãããã®ãµãŒãã¹ã§ããå®ããŒã¿ã§ã¯ãªãã颿°ãäžãããšã°ã©ãã衚瀺ãããŸãã rurihabachi.com - Web API - Function(x) Graph ChartBlocks Charting API ããŒã¿ã»ãããé©çšããŠã°ã©ããçæããŸããã°ã©ãã¯SVG/PNG/JPEG/PDFãšãã£ããã©ãŒãããã§åºåã§ããŸããããŒã¿ã®ã¢ããããŒãïŒãªã¢ã«ã¿ã€ã ããŒã¿å«ãïŒãã°ã©ãã®ã«ã¹ã¿ãã€ãºãAPIçµç±ã§ã§ããŸãã ChartBlocks Charting API APIã䜿ãããšã§ãµãŒãåŽã§ã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããããJavaScriptã§åŠçãããšèšã£ãã³ãŒããäžèŠã«ãªããŸããæå
ã«ããŒã¿ããããªãã°ãããã®APIã䜿ãã°ããã«ããžã¥ã¢ã«åãå®çŸããã§ãããã
APIã¯å€éšãªãœãŒã¹ããããŒã¿ãååŸããŠä»ã®ããŒã¿ãšåãããŠèªåãã¡ã®ãµãŒãã¹ã«ä»å 䟡å€ã远å ã§ããŸãããåãããã«å€éšããããŒã¿ãååŸããææ³ãšããŠã¹ã¯ã¬ã€ãã³ã°ãç¥ãããŠããŸããä»åã¯ã¹ã¯ã¬ã€ãã³ã°ãšAPIã®éãã玹ä»ããŸãã ã¹ã¯ã¬ã€ãã³ã°ãšã¯ïŒ ã¹ã¯ã¬ã€ãã³ã°ã¯ãµãŒããµã€ãã®ããã°ã©ãã³ã°èšèªã䜿ã£ãŠå€éšãµãŒããžã¢ã¯ã»ã¹ãããã®ã³ã³ãã³ãããèªåãã¡ã®æ¬²ããæ
å ±ãåŒãåºãææ³ã§ããå€ãã¯HTMLãè¿ãå Žåã«äœ¿ãããDOMãè§£æãããæ£èŠè¡šçŸã䜿ã£ãŠããŒã¿ãæãåºããŸãã ã¹ã¯ã¬ã€ãã³ã°ã¯ãµãŒãã¹ãèªããŠããªãæ¹æ³ APIã¯ãµãŒãã¹æäŸåŽãäžå®ã®æ¡ä»¶ãèšããäžã§å
¬éããŠããéçºè
åãã®æ©èœã«ãªããŸãã察ããŠã¹ã¯ã¬ã€ãã³ã°ã¯æ¬æ¥ã¯ãŠãŒã¶åãã§ããHTMLã³ã³ãã³ããã³ã³ãã¥ãŒã¿ã«è§£æããããã®ã§ãå
¬åŒã«ãµããŒããããŠãããã®ã§ã¯ãããŸããã ãã®ããã³ã³ãã¥ãŒã¿ã«ãã£ãŠè² è·ãé«ãããã蚱容ãããŠããªãã¢ã¯ã»ã¹ãè¡ããšäžæ£ã¢ã¯ã»ã¹é²æ¢æ³éåã«ãã£ãŠåŠçœ°ãããå¯èœæ§ããããŸãã ãªãã¹ã¯ã¬ã€ãã³ã°ãããã®ã æã倧ããªçç±ãšããŠã¢ã¯ã»ã¹å
ã®ãµãŒãã¹ãAPIãæäŸããŠããªããšããåé¡ããããŸããAPIããããªãã°ããã䜿ããããšèããã§ãããããAPIããªãããã«ã¹ã¯ã¬ã€ãã³ã°ã«é ŒããããåŸãªããšèšããã§ãããããŸããAPIãå
¬éãããŠãããšããŠãå¿
èŠãªæ
å ±ãã¹ã¯ã¬ã€ãã³ã°ããªããã°ååŸã§ããªããšèšã£ãã±ãŒã¹ããããŸãã ã³ã³ãã³ãã¯äŒæ¥ã«ãšã£ãŠçåœç·ã§ããå Žåãå€ãããããã®ããŒã¿ããŸãšããŠæãããŠããŒã¿ããŒã¹åãããããšãæžå¿µãã声ããããŸãã ã¹ã¯ã¬ã€ãã³ã°ã®ãã¡ãªãã ã¹ã¯ã¬ã€ãã³ã°ã¯HTMLã³ã³ãã³ãã®åœ¢åŒã«å·Šå³ãããŸãããã®ãããã¶ã€ã³ãå€ãããšããŒã¿ãããŸãåããªããªãå¯èœæ§ããããŸãããã®å Žåãå床ã¹ã¯ã¬ã€ãã³ã°ã®äœæãçŽãã«ãªããŸããã倧å¹
ã«ãã¶ã€ã³ãå€ãã£ããURLã®éå±€ãå€ãã£ããããã±ãŒã¹ããããŸãïŒå®éã«ã¯SEOãžã®åœ±é¿ãããã®ã§URLã¯å€ãããªãããšã®ãå€ãã§ãããïŒã ãŸãããµãŒãã¹æäŸåŽã§ãã°ãè§£æããŠããå Žåãæªããåãããããã°ã確èªãããšã¢ã¯ã»ã¹æåŠãããå¯èœæ§ããããŸããGoogleãªã©ã·ã¹ãã ã匷åºãªãµãŒãã¹ã¯ããã«åŒŸãããå¯èœæ§ãããããã®çµæãšããŠã¹ã¯ã¬ã€ãã³ã°ä»¥å€ã§ã®ãµãŒãã¹å©çšã«ãããŠã圱é¿ãåããããšã«ãªããŸãã ããã«èªèšŒåŸã®ããŒã¿ãååŸãããããªã¹ã¯ã¬ã€ãã³ã°ã¯ãµãŒãåŽã«IDããã¹ã¯ãŒããªã©ãä¿åããªããã°ãªããŸãããããã¯å©çšè
ã«ãšã£ãŠå€§ããªã»ãã¥ãªãã£ãªã¹ã¯ã«ãªãããšã§ãããã ã¹ã¯ã¬ã€ãã³ã°ã鲿¢ããã«ã¯ ã¹ã¯ã¬ã€ãã³ã°ã¯APIãæäŸãããŠããã°é²ããè¡çºã§ããã¹ã¯ã¬ã€ãã³ã°ã¯ããããããªããã°ãªããªãã»ã©ãã³ã³ãã³ãã«é
åããããšãã蚌æ ãšãèšããŸããã§ããã°å
¬åŒãšããŠãã¡ããšã¢ã¯ã»ã¹ã³ã³ãããŒã«ããäžã§ã³ã³ãã³ããAPIæäŸããæ¹ãå¥å
šãšèšããã®ã§ã¯ãªãã§ããããã ã¹ã¯ã¬ã€ãã³ã°ã¯ã€ã¿ããã£ãã«ãªããã¡ã§ãé²ãããã®ã§ã¯ãããŸããããããŠéçºè
ã®äžçšæãªã³ãŒãã«ãã£ãŠãµãŒãã¹æäŸåŽã圱é¿ãåãããããµãŒãã¹å©çšè
ãè¿·æã被ãããšã«ãªãã§ãããããããªããªãããã«APIãå
¬éãããšããã®ã¯å€§åãªããšã§ãã ã¹ã¯ã¬ã€ãã³ã°ã®äŸ æè¿ã§ã¯ã¢ããªãWebãµãŒãã¹ã§èªåã®è³ç£ç®¡çãè¡ã系統ã®ãµãŒãã¹ã«ãããŠãåéèæ©é¢ãã¯ã¬ãžããã«ãŒãã®ãµã€ããžã¹ã¯ã¬ã€ãã³ã°ãè¡ã£ãŠããã±ãŒã¹ããããŸããéèæ©é¢ã®IDããã¹ã¯ãŒããç»é²ããªããã°ãªãããäžäžæŒæŽ©ãªã©ãèµ·ãã£ãæã«ã¯å€§ããªæå®³ã«ã€ãªããå¯èœæ§ããããŸãã çæ³çã«ã¯åéèæ©é¢ãOAuth2ããŒã¹ã®APIãå
¬éããé©åãªã¢ã¯ã»ã¹ã³ã³ãããŒã«ãå®çŸã§ããä»çµã¿ãçšæããã®ãäžçªã§ãããã
å€ãã®APIãèªèšŒæ
å ±ãšãšãã«å®è¡ãããŸããå®è¡ãŠãŒã¶ãç¹å®ããç®çã®å Žåãããã°ãAPIããŒã®ãããªæ
å ±ã䜿ã£ãŠã³ãŒã«æ°ãã«ãŠã³ãããç®çã§äœ¿ãããšããããŸãã ä»åã¯ãããªAPIã«ãããèªèšŒæ
å ±ãAPIäžã®ã©ãã«æãããã®ãè¯ããã玹ä»ããŸãã URLãã©ã¡ãŒã¿ URLã®ãã©ã¡ãŒã¿ãšããŠæãããå Žåã¯ã»ãã·ã§ã³ããŒãããŒã¯ã³æååã§ããããšãå€ãã§ããããäžã€ã®ãã©ã¡ãŒã¿ïŒã¢ããªã±ãŒã·ã§ã³ããŒãªã©ïŒãšåãããŠãèªèšŒãæ£ããããšãæ€èšŒããããã«ãªã£ãŠããŸãã ããŒã¯ã³æååã¯äžå®æéã§åããä»çµã¿ã«ãªã£ãŠãããæå¹æéãéããåŸã¯ãªãã¬ãã·ã¥ããŠæ°ããããŒã¯ã³æååãååŸãçŽããŸãã URLã®å ŽåãWebãã©ãŠã¶ããã®æ€èšŒãããããã®ãã¡ãªããã§ããåçŽã«URLããã©ãŠã¶ã§éããŠçµæãè¿ã£ãŠããã°ãã©ã¡ãŒã¿ãæ£ãããã©ããã確èªã§ããŸãã HTTPããã㌠HTTPããããŒã«èªèšŒããŒãåãèŸŒãæ¹æ³ãããèŠãããŸããWebãã©ãŠã¶ããã®ç¢ºèªã¯è¥å¹²é£ãããªããŸãããAjaxã®ãããªä»çµã¿ã䜿ãã°ããããŒã«æååã¯ç°¡åã«è¿œå ã§ããŸãã ã¯ãšãªãŒæååã¯ã©ããã£ãæäœãè¡ããæå®ãããã®ãšããããããŒã¯èªèšŒãªã©ã·ã¹ãã ã®ã¹ã³ãŒããåããã®ã¯éçºè
ã«ãšã£ãŠåãããããåºåãããç¥ããŸããã ã»ãã·ã§ã³ãã¯ãã㌠ããŸããå§ãããŸãããã»ãã·ã§ã³ãã¯ãããŒã«èªèšŒæ
å ±ãæãããããšããããŸããã¹ããŒããã©ã³ã¢ããªãªã©ã§ãéå
¬éãªèªç€Ÿã¢ããªéå®ã§äœ¿ã£ãŠããAPIã®å Žåããã®ãããªã±ãŒã¹ããããŸãã å©ç¹ãšããŠã¯æ¢åã®WebãµãŒãã¹ãšåãä»çµã¿ã§äœ¿ããŸããããšããç¹ãæããããŸããWebãµãŒãã¹ã§ã¯èªèšŒæ
å ±ãURLã«èŒãããããŸãããããããŒã«ãããšWebãã©ãŠã¶ããã¯å©çšã§ããªããªããŸãã WebãµãŒãã¹ãšAPIã¯åããŠæäŸããæ¹ãè¯ãã®ã§ãããWebãµãŒãã¹åŽã§èªèšŒãéã£ãŠããã«ãé¢ãããAPIåŽã®èªèšŒãéã£ãŠããªããšå€æãããã®ã¯ãŠãŒã¶ããªãã£ãè¯ããããŸããããã®ãããã»ãã·ã§ã³ããŒãå©çšããã±ãŒã¹ãå°ãªãããååšããŸãã ãå§ããªæ¹æ³ã¯ïŒ OAuth2ã§ã¯URLã«èªèšŒããŒã¯ã³ã远å ããæ¹æ³ã«ãªã£ãŠããŸããå®è£
ãšããŠã¯äžçªæè»œãšèšããããç¥ããŸãããæ¬¡ã«ããããŒãžã®è¿œå ãè¯ãã§ããããã»ãã·ã§ã³ãçšããã®ã¯ãã»ã©ã®ããšããªãéãé¿ããã®ãè¯ãã§ãããã WebãµãŒãã¹ãšã®é£æºã«ã€ããŠããã°ãã»ãã·ã§ã³ã®èªèšŒããŒãšAPIã®èªèšŒããŒã¯ã³ãšã亀æããAPIãçšæããã®ãè¯ãããã§ãããŸããããã«ã¢ã¯ã»ã¹ããããšã§APIã¢ã¯ã»ã¹ã«äœ¿ããèªèšŒããŒã¯ã³ãæã«å
¥ããŸãããã®åŸããã®ã¢ã¯ã»ã¹ã¯èªèšŒããŒã¯ã³ã䜿ãã°è¯ãã®ã§ããèªèšŒããŒã¯ã³ã¯ãªã³ã¡ã¢ãªã«ä¿åããå¥ãªURLã«ç§»åããéã«ã¯å床亀æããã°è¯ãã§ããããèªèšŒããŒã¯ã³ã¯éèŠãªæ
å ±ãªã®ã§localStorageã«ä¿åããã®ã¯é¿ããæ¹ãè¯ãã§ãããã èªèšŒããŒã¯ã³ã¯å®æçã«ã¢ããããŒãããŸããã èªèšŒããŒã¯ã³ã¯1é±éçšåºŠã®æå¹æéãè¯ãããšæããŸããå€ãã®ã¹ããŒããã©ã³ã¢ããªã§ã¯èªèšŒããŒã¯ã³ãã¢ããªå
ã«ã¹ãã¢ããããã䜿ãç¶ããŸãããããäžäžèªèšŒããŒã¯ã³ãæŒæŽ©ããå Žåã誰ã§ããã®ãµãŒãã¹ãžãªãããŸãã§ã¢ã¯ã»ã¹ã§ããããã«ãªã£ãŠããŸããŸãã èªèšŒããŒã¯ã³ãã¢ããªå
ã«ã¹ãã¢ããã®ã¯èŽãæ¹ãããŸããããã¢ããªã®èµ·åæã«æ°ãããã®ãšå·®ãæ¿ããŠãè¯ãã§ãããããããŠèªèšŒããŒã¯ã³ã¯è€æ°ã®ç«¯æ«ããã¯äœ¿ããªãããã«å¶åŸ¡ããã®ãè¯ãã§ãããããã®ãã1ãŠãŒã¶ã«å¯ŸããŠè€æ°ã®èªèšŒããŒã¯ã³ãä¿åã§ããããã«ãªã£ãŠããã®ããå§ãã§ãã APIã«ãããèªèšŒããŒã¯ã³ã¯èªèšŒæ
å ±ãã®ãã®ã§ããæŒæŽ©ãããšãAPIãçµç±ããŠããŒã¿æäœãèªç±ã«ã§ããããã«ãªã£ãŠããŸããŸããããã ãã«æŒæŽ©ãã¥ããå Žæã«ä¿åããããäœ¿ãæ¹ã«ã泚æãå¿
èŠã§ãããã ã©ã®ã¢ããªãã©ã®ãã©ãŠã¶ãŸãã¯ã·ã¹ãã ããã¢ã¯ã»ã¹ããããåããããã«ãèªèšŒããŒã¯ã³ã¯è€æ°çºè¡ã§ããããã«ããŸããããããããŠãŠãŒã¶ããä»»æã®ã¿ã€ãã³ã°ã§ããŒã¯ã³ãåé€ããããåçæãçŽããããã«ãªã£ãŠãããšäŸ¿å©ã§ã¯ãªãã§ããããã
Webãã©ãŠã¶ã¯åžžã«ã»ãã¥ãªãã£ããŠãŒã¶ãžã®å®å
šãªã€ã³ã¿ãŒãããæäŸãåæã«äœãããŠããŸãããã®ããå€éšãªãœãŒã¹ãçµã¿åãããŠäœ¿ãAPIãšã¯çžæ§ãæªãããšããããŸããiOSãAndroidãšãã£ãã¹ããŒããã©ã³ã¢ããªããµãŒããµã€ãã®ããã°ã©ãã³ã°èšèªã§ã¯åœããåã®ããã«ã§ããããšãWebãã©ãŠã¶ã§ã¯ã§ããªãã®ã§ãã ä»åã¯APIå©çšæã«æ³šæãããJavaScriptã«ããå€éšãªãœãŒã¹ååŸæ¹æ³ã«ã€ããŠç޹ä»ããŸãã JSONP HTML4ã®æä»£ã«ãããŠãJavaScriptããå€éšãªãœãŒã¹ãååŸããæ¹æ³ã¯éãããŠããŸãããããã§èããããã®ãJSONPãšåŒã°ããæ¹æ³ã§ããåçã«JavaScriptã¿ã°ãçæãããã®äžã§ãªã¯ãšã¹ãæã«æå®ãã颿°åã§åŠçãåŒã³åºããŠããããŸãããããŠãã®é¢æ°ã®åŒæ°ãšããŠAPIã§æž¡ãããããŒã¿ãJSON圢åŒã§æå®ããŸãã JSONPã¯å€§ãã«å©çšãããŠããŸããããåé¡ç¹ã¯ã¹ã¯ãªããã¿ã°ãåºåãããšããé¢ä¿äžãGETåŠçããã§ããŸããã§ããããã®ããããŒã¿ãäœæãæŽæ°ãåé€ãããããªäœ¿ãæ¹ã«å¯ŸããŠæäŸãããšæªæã®ããããŒã¿æäœãå¯èœã«ããŠããŸãå±éºæ§ããããŸãã ãããã· å
éšã§ç«ãŠããµãŒãã«å¯ŸããŠã¢ã¯ã»ã¹ã代è¡ããŠããããããã·æ¹åŒããã䜿ãããŸããããã®æ¹æ³ã®å Žåãåäžãã¡ã€ã³ã§ããã°JavaScriptåŽãããPOST/PUT/DELETEã¢ã¯ã»ã¹ãã§ããŸãããããŠãã®å
容ããµãŒãåŽãAPIã«ãã®ãŸãŸãªã¯ãšã¹ãããŠã¬ã¹ãã³ã¹ãè¿ãã®ã§ãã åé¡ç¹ãšããŠã¯ãµãŒããçšæãããããããã·ã¢ã¯ã»ã¹ããã³ãŒããæžããªããã°ãªããªãç¹ãšããããã·ã¢ã¯ã»ã¹ã®å ŽåãèªèšŒæ
å ±ãæž¡ãã¥ãããšããããšãæããããŸããå€ãã®å Žåãå¿åã¢ã¯ã»ã¹ã§ãããµãŒãã¹ã§ãã£ãããç¹å®ã®ã¢ã¯ã»ã¹ããŒã䜿ããããªãµãŒãã¹ã§äœ¿ãããŠããŸãã CORS HTML5ã®æä»£ã«ãªã£ãŠäœ¿ãããããã«ãªã£ãã®ãCORSã§ããã¯ã©ã€ã¢ã³ãããOPTIONSããããŒã§ãªã¯ãšã¹ãããããã«å¯ŸããŠãµãŒããã¢ã¯ã»ã¹ãèš±å¯ãããã©ãããè¿ããŸãããã®çµæã«ãã£ãŠWebãã©ãŠã¶åŽãããŒã¿ååŸãèš±å¯ããŸãã ãã®æ¹æ³ã¯çŸåšåºã䜿ãããŠãããAPIã¢ã¯ã»ã¹ã®ä»ãCanvasã«æç»ããç»åãªãœãŒã¹ã®ã¢ã¯ã»ã¹æš©éã«ã€ããŠãCORSã§å¶åŸ¡ã§ããŸãã CORSã¯ã¢ã¯ã»ã¹å
ã®ãã¡ã€ã³ã§åäœã§ãã©ã®ã¡ãœãããèš±å¯ããããæå®ã§ããŸãããã ããããã§å¶åŸ¡ãããšããŠãã¹ããŒããã©ã³ã¢ããªããµãŒããµã€ãã®ã¹ã¯ãªããããã®ã¢ã¯ã»ã¹ã¯å¶åŸ¡ã§ããŸããã®ã§ã泚æãã ããã iframe iframeãåçã«çæãã芪ãã¬ãŒã ãšåãã¬ãŒã ã§postMessageã䜿ã£ãŠããŒã¿ã®éåä¿¡ãè¡ãæ¹æ³ããããŸããåãã¬ãŒã åŽã®ã³ã³ãã³ãã§ãpostMessageã䜿ãå¿
èŠãããã®ã§ãJSONãåçŽã«åã£ãŠãããšèšãã»ã©ç°¡åã§ã¯ãããŸããã äŸãã°Facebookã®FBã¢ããªã¯ã³ã³ãã³ãã®é«ããåçã«å€æŽã§ããŸããããã¯åãã¬ãŒã åŽã«çµã¿èŸŒãŸããFacebook SDKãã³ã³ãã³ãã®é«ãã芪ãã¬ãŒã ã«postMessageã§æãã芪ãã¬ãŒã åŽã§iframeã®ãµã€ãºã倿ŽããŠããŸããè¥å¹²APIã«æ¯ã¹ããšããªãããŒãªå®è£
ã«ãªãã§ãããã HTML5ã§XMLHttpRequest2ã«ãªããCORSã䜿ããããã«ãªããŸãããããHTML5ã«å¯Ÿå¿ããŠããªããã©ãŠã¶ã§ã¯äœ¿ããªãæè¡ãªã®ã§ãã¬ã¬ã·ãŒãªãã©ãŠã¶ããµããŒãããå Žåã¯å¥ãªæè¡ãšçµã¿åãããå¿
èŠãããããã§ãã ã¯ãã¹ãã¡ã€ã³ã«ããã¢ã¯ã»ã¹ã¯JavaScriptã§åžžã«åé¡ã«ãªããŸãã®ã§ãAPIãå©çšããéã¯ãã¡ãããæäŸããéã«ã泚æããŠãã ãããäžçšæã«ãã¹ãŠãéæŸããã®ã§ã¯ãªããèšå®ã§å©çšã§ãããã¡ã€ã³ãå¶éãããšèšã£ãä»çµã¿ãæäŸããã®ãè¯ãããšæããŸãã
APIã䜿ã£ãã·ã¹ãã éçºã§åžžã«åé¡ã«ãªãã®ãã¬ã¹ãã³ã¹ã§ããäžã€äžã€ã®ã¬ã¹ãã³ã¹ã¯é«éã§ãã£ããšããŠãããªã¯ãšã¹ãæ°ãå¢ããã°ããŒã¿ã«ã®ã¬ã¹ãã³ã¹ãé
ããªã£ãŠãããŸãã ä»åã¯APIã®ã¬ã¹ãã³ã¹ãæé©åããããã«ã§ããæ¹åæ¡ã«ã€ããŠç޹ä»ããŸãã åŠçã®äžŠåå 10åã®ãªã¯ãšã¹ããé çªã«è¡ãªã£ãŠããå Žåãåã®åŠçãçµãããŸã§æ¬¡ã®åŠçãã§ããŸãããäžã€ã§ãã¬ã¹ãã³ã¹ãé
ãåŠçããããšããããããã«ããã¯ã«ãªã£ãŠå
šäœãé
ããªããŸãããããé²ãã®ã䞊ååã§ãã JavaScriptãªã©ã¯ãããã¯ãŒã¯åŠçã䞊åã§è¡ããŸããããã°ã©ãã³ã°äžã®æ³šæç¹ã¯ãããŸãããè€æ°ã®ãããã¯ãŒã¯ãªã¯ãšã¹ãã䞊åã§è¡ãã°äžçªéããåŠçãçµãã£ã段éã§å
šãŠã®åŠçãçµãã£ãŠãã§ããããä»ã®ããã°ã©ãã³ã°èšèªã§ãã¹ã¬ããåŠçã䜿ãããšã§äžŠååŠçãè¡ããããã«ãªããŸãã åé¡ç¹ãšããŠã¯1ã€ã®åŠççµæãåããŠå¥ãªåŠçãè¡ãå Žåã«åããªãããšã§ãããªãã¹ãåå²åŠçãå
¥ããªã圢ã§äžæ°ã«ããŒã¿ã®æå
¥ãæŽæ°ãè¡ãããã«ãã¹ãã§ããããããäžã€ã®åé¡ã¯å€æ°ã®ãªã¯ãšã¹ããåæã«èµ°ãããšã§ãµãŒãã®è² è·ãäžãã£ãŠããŸãããšã§ãããµãŒãã«ãã£ãŠã¯åããªã¯ãšã¹ãå
ããã®å€§éã®ã¢ã¯ã»ã¹ããããšDoSæ»æãšèŠãªããŠãªã¯ãšã¹ããç Žæ£ããŠããŸãããšããããŸãã ãã£ãã·ã¥ ã¯ã©ã€ã¢ã³ãåŽã§åŠçããã£ãã·ã¥ããã®ãäžã€ã®æã§ããã¡ã¢ãªäžã«ä¹ããã®ã¯ãã¡ããã®ããšãã¯ã©ã€ã¢ã³ãäžã®ã¹ãã¬ãŒãžäžã«ä¿åããŠããããã«ããã°åå®è¡ããéã«ãããŒã¿ãååŸããã«æžãããã«ãªããŸããç°¡æçã«ã¯KVSã®ãããªããŒãšå€ã ãã®ä¿å圢åŒãããSQLiteãªã©ã䜿ã£ãããŒã¿ããŒã¹ãŸã§èããããŸãã åé¡ç¹ã¯ããŒã¿ã®ç¶æ
ãææ°ã§ãããã©ããã®ç¢ºèªããææ®µãçšæããªããã°ãªããªããšããããšã§ããç¹ã«ãµãŒãåŽã§åé€ãããããŒã¿ããããã©ããã®ç¢ºèªãåé¡ã«ãªããã¡ã§ãã ããŒã¿ããŸãšããŠè¿ãïŒç»é¢æé©åïŒ ã¹ããŒããã©ã³ã¢ããªã§ããããæ¹æ³ã§ãããå¿
èŠãªããŒã¿ããŸãšããŠè¿ããŠããŸãããšã§ãããã¯ãŒã¯ãªã¯ãšã¹ãæ°ãåæžã§ããŸããå°çšã®APIãçšæããããšã§ãã»ãŒãã®ç»é¢ãäœãããã ãã®APIãšããŠæé©åãããŸããå€ãã®ã¹ããŒããã©ã³ã¢ããªã§ã¯å°çšã®éå
¬éAPIãçšããŠéçºãããŠããããããã®ãããªæ¹æ³ã䜿ããŸãããªããç»é¢ã®å€æŽã«äŒŽã£ãŠAPIã®åœ¢åŒãå€åããŸãããåŸæ¹äºææ§ãç¶æããå¿
èŠãããããAPIã®ã¬ã¹ãã³ã¹ãåŸã
ã«è¥å€§åããåŸåããããŸãã ããŒã¿ããŸãšããŠè¿ãïŒãããåŠçïŒ ãŸããã²ãŒã ã¢ããªãªã©ã§äœ¿ãããŠããæ¹æ³ã§ãè€æ°ã®APIã¢ã¯ã»ã¹ããããåŠçãšããŠäžã€ã®ãªã¯ãšã¹ãã«éçŽãããšãããã®ããããŸããããã¯äž»ã«ååŸç³»APIã«å¯ŸããŠçšããããŸããäžã€äžã€ã¯RESTfulãªAPIã§ããããŸãšããŠã¢ã¯ã»ã¹ããããšã§äžåºŠã«è€æ°ã®ããŒã¿ãååŸã§ããŸãã ããã¯å®è£
ãæ¥œã§ããããã·ãµãŒããç«ãŠãã ãã§æžã¿ãŸãããããã·ãµãŒããè€æ°ã®APIã¢ã¯ã»ã¹ãåå¥ã«è¡ããã¬ã¹ãã³ã¹ããŸãšããŠè¿åŽããŸãããã®æ¹æ³ã¯ç°¡æçãªäžæ¹ãéããAPIã¢ã¯ã»ã¹ããããšããã«ããã¯ã«ãªã£ãŠçµæãè¿ãã®ãé
ããªãåŸåããããŸãã GraphQLã䜿ã GraphQLããã¹ããã¯åãããŸããããåççã«ã¯ã¯ã©ã€ã¢ã³ãåŽããèªåãå¿
èŠãªããŒã¿ãæå®ãããšããæ¹æ³ã«ãªããŸããã€ãŸãå¿
èŠãªããŒã¿ããååŸããªãããšã§ããŒã¿ããŒã¹åŽã®è² è·ãäžãããã転ééãå°ããã§ããŸãããŸããç»é¢æé©åã®ããã«ã¯ã©ã€ã¢ã³ãåŽã®ããŒãžã§ã³ã¢ããã«äŒŽãåŸæ¹äºææ§ãæ°ã«ããå¿
èŠããããŸããã åé¡ç¹ãšããŠã¯GraphQLèªäœããŸã ãŸã æ°ããæè¡ã§ãããããGraphQLã®APIãå€ããå¯èœæ§ãããããšããã¯ã©ã€ã¢ã³ãåŽã§èªç±ã«ããŒã¿ååŸæ¹æ³ãæå®ã§ããããã«ããµãŒãåŽã®æé©åãè¡ãã¥ãããšããåé¡ããããŸããå
ã
APIã¯ã¬ã¹ãã³ã¹ãå«ããŠãµãŒãåŽã§ã³ã³ãããŒã«ããŠããŸããããGraphQLã§ã¯éã«ãªããŸããå©ç¹ãšãèšããŸãããéçºè
ããã®å Žãã®å Žã®æé©è§£ãéžã¶ãšãå
šäœãšããŠã¯ã¢ã³ãã©ã³ã¹ã«ãªãã®ã¯è¯ãããããšã§ãã ãã¡ãããã¢ããªã±ãŒã·ã§ã³ãµãŒããæ¹åããããããŒã¿ããŒã¹ã®æ§é ãã€ã³ããã¯ã¹ãèŠçŽããšããã®ã¯è¡ããªããã°ãªããŸããããããAPIãµãŒãã ããèŠãã®ã§ã¯ãªããã¯ã©ã€ã¢ã³ãåŽã§ãã§ããããšã倿°ããã§ããããæäŸåŽãšå©çšåŽåæ¹ã§æ¹åãããŠãŒã¶ã«å¿«é©ãªãµãŒãã¹ãæäŸããããã«ããŸãããã
SwaggerãããŒã¹ãšããŠçå®ãé²ãã§ããOpenAPI Specification 3.0ã§ããããã®å
容ãããã°èšäºã«ãªã£ãŠããŸããã 倧ããåããŠ6ã€ã®ç¹ã課é¡ãšããŠæ²ããããŠããŸãã 1. æ§é ã®æ¹å Swaggerã§ã¯ç²åºŠãç°ãªãç¶æ
ã§æ··åšããŠããæ§é ã«ã€ããŠã倧ãã倿ŽãããŠããŸãã以äžã¯ TDC: Structural Improvements: explaining the 3.0 spec, part 2 | Open API Initiative ã«ãŠç޹ä»ãããŠããç»åã§ãã via TDC: Structural Improvements: explaining the 3.0 spec, part 2 | Open API Initiative definitions/parameters/responses/produces/consumesãšãã£ããªããžã§ã¯ãããªããªãããã¹ãŠcomponentsã«çµ±åãŸãã¯å»æ¢ãããããã§ããçµæãšããŠæ§é ã¯ãšãŠããã£ããããŠããŸãã 2. ããŒãžã§ã³å®çŸ©ã®å€æŽ ãããŸã§ã¯ 2.0 ãšããæžãæ¹ã§ããããä»åŸã¯ 3.0.0 ã®ããã«ãããããŒãžã§ã³ãå«ãããã«ãªããŸããããŒãžã§ã³çªå·ã¯ ã»ãã³ãã£ã㯠ããŒãžã§ãã³ã° 2.0.0 - Semantic Versioning ã«åã£ã圢ã§ç®¡çãããŸãã 3. Components äžèšç»åã§ããããŸãããComponentsãšãããªããžã§ã¯ãã远å ãããŸãã2.0ã§ã¯å¹Ÿã€ãã®ããããã£ãã°ããŒãã«ã«é©çšãããŠããããã¹ã³ãŒãã«ççŸãèŠãããŸãããããã§Componentsã§ã¯åå©çšãããã¡ã¿ããŒã¿ã ãããŸãšããŠç®¡çããããã«ãªããŸãã 4. ãã«ããã¹ã Swaggerã§ã¯hostã¯äžã€ããååšã§ããŸããã3.0ã§ã¯hostsãšãªããè€æ°ãã¹ãã管çã§ããããã«ãªããŸããããããããŒã¹ãã¹ãã¹ããŒããæ ŒçŽãããããã«ãªããŸããããã«pathã®äžã§hostãå®çŸ©ããŠäžæžããã§ãããšã®ããšã§ãã 5. ä»ã®èšè¿°ãªãã·ã§ã³ ãããŸã§ã¯ãªãã¬ãŒã·ã§ã³ã¬ãã«ã§æžãããŠããã®ããä»åŸã¯ãªãœãŒã¹æåã§äœãããããã«ãªããŸãããªãœãŒã¹æåã§ã¯ GET a foo ã POST a foo ã DELETE a foo ãšãã£ãå
·åã«ãªãœãŒã¹ïŒfooïŒã«å¯ŸããŠäœããããšãã£ãå
·åã«èªãããã®ã§ãããã¹ã®èª¬æã§ã¯çã説ææãšé·ã説ææã䜿ããããã«ãªããŸãã 6. ã¬ã¹ãã³ã¹äŸã®æ¡åŒµ ãããŸã§ã¯JSONãŸãã¯YAMLã§ã®ã¿èšè¿°ã§ããŸããããããã倧å¹
ã«æ¡åŒµãããŸããJSONã䜿ã£ãŠä»»æã®ãã©ãŒãããã§èšè¿°ã§ãããšã®ããšã§ã $ref ããããã£ã䜿ã£ãŠå€éšãã¡ã€ã«ãåç
§ããããã«ãã§ããŸãã åºæ¬çã«ã¯æ§é ãå€ãããšã®ããšã§ãããã«åãããŠSwaggerçšã®ããŒã«ã倿Žãæ±ããããã§ããããæ§é çã«ã¯åããã¥ããéšåãå€ãã£ãã®ã§ã3.0ã«ãã£ãŠå
šäœã®èŠéããè¯ããªã£ãããã«æããããŸãããªãªãŒã¹ã¯ãŸã ã§ããã OAI/OpenAPI-Specification: The OpenAPI Specification Repository ã«ãŠãã£ã¹ã«ãã·ã§ã³å
容ã¯èŠãããããã«ãªã£ãŠããŸãã via TDC: Structural Improvements: explaining the 3.0 spec, part 2 | Open API Initiative
æšä»äººæ°ãéããŠããGoèšèªã§ãããã¡ãªãããšããŠä»¥äžã®ç¹ãæããããŸãã ãã«ãåŸã®å®è¡é床ãéã ç°å¢æ§ç¯ã®ã¹ããŒããéã ããŒãžã§ã³äŸåã®åé¡ãå°ãªã ç°å¢äŸåã®åé¡ãå°ãªã ããŒã¿ã«æ§ããã éã«ãã¡ãªãããšããŠã¯ä»¥äžã®ç¹ãè¯ãæããããŸãã JSONãXMLãªã©ã®æ±ãã«ãå³å¯ãªæ§é äœãå¿
èŠã«ãªã åé·çã«ãªããã¡ãªæ»ãå€ã®ãšã©ãŒãã§ã㯠ãããã¬ããLoggerãªã©ãå
å®ããŠããªã éçºæã»éçšæã®ããŠããŠã»ãã¬ããžãããŸã ãŸã å°ãªã ãããªäžãäžèšã®ãã¡ãªãããã«ããŒããããã«Goã«ãããã€ã¯ããµãŒãã¹ãã¬ãŒã ã¯ãŒã¯ã®ååšããããŸããä»åã¯Go補ã®ãã€ã¯ããµãŒãã¹ã®ãã¬ãŒã ã¯ãŒã¯ãããŒã«ããããã玹ä»ããŸãã goa :: Design-first API Generation ãã¶ã€ã³ãã¡ãŒã¹ãã謳ãGO補ãã€ã¯ããµãŒãã¹ãã¬ãŒã ã¯ãŒã¯ã§ãããã¶ã€ã³ã³ãŒã (goa API Design Language) ã®ãã¡ã€ã«ãäœæããã ãã§ããã€ã¯ããµãŒãã¹ã®ã³ã¢ãšãªããã¡ã€ã«ãçæããŠãããŸãã goa API Design Language ãæ¹ããŠåŠç¿ããå¿
èŠããããŸãããAPIéçºãäžåºŠã§ãè¡ã£ãŠããã°åŠç¿ã³ã¹ãã¯é«ããªãã§ãããã éçºãµã€ã¯ã«ã¯goa DSLã«æ²¿ã£ãŠAPIããã¶ã€ã³ãã goagen ã³ãã³ãã«ããæ§é äœãããªããŒã·ã§ã³ã³ãŒãããã³ãã©ãçæãããšããæµãã§ãã goa DSL ã¯ãã«ã¹ã¿ã DSLãäœæããããšãå¯èœã§ãã go-kit/kit: A standard library for microservices. Go Kitã¯åæ£ããã°ã©ãã³ã°çšã®ããŒã«ãããã§ãããã€ã¯ããµãŒãã¹ãå€§èŠæš¡ãµãŒãã¹ãæ§ç¯ããããã«ãæ¢åã®ã©ã€ãã©ãªã®ééãåããããšãã§ããããžãã¹ããžãã¯ã«éäžã§ãããšãããŸããåŸè¿°ãããã€ã¯ããµãŒãã¹ãã¬ãŒã ã¯ãŒã¯ã®GizmoããGo-Microãªã©ã§ãå©çšãããŠããŸãã NYTimes/gizmo: A Microservice Toolkit from The New York Times gizmoã¯ãNewyork Timesããéçºãããã€ã¯ããµãŒãã¹ãã¬ãŒã ã¯ãŒã¯ã§ãã倧ãã4ã€ã®ããã±ãŒãžã«ããæ§æãããŠããŸãã config ããã±ãŒãž ã¢ããªã±ãŒã·ã§ã³èšå®çšã®ããã±ãŒãžã§ãã server ããã±ãŒãž ã«ãŒã¿ãšãµãŒãã¹ãªã©ã®ãµãŒãããã±ãŒãžã§ãã web ããã±ãŒãž HTTPåãã®ããã±ãŒãžã§ãã pubsubããã±ãŒãž ã¡ãã»ãŒãžãã¥ãŒåãã®ããã±ãŒãžã§ãã ãã¬ãŒã ã¯ãŒã¯ã®æŠèŠã¯ Introducing Gizmo - The New York Times ã§ç޹ä»ãããŠããŸãã â» ã©ã€ã»ã³ã¹ã¯Apache 2.0 ãããŒã¹ã«ãèäœæš©ã¯The New York Times CompanyïŒãã¥ãŒãšãŒã¯ã¿ã€ã ãºç€ŸïŒãšãªã£ãŠããŸãã Go Micro Microã¯ãã€ã¯ããµãŒãã¹ã®ããŒã«ããããšããŠãåãµãŒã/ãµãŒãã¹ããŒã«ãããããåå²ããŠå¥ã
ã«ããã±ãŒãžããããã®ã§ããäžæ žãšãªã go-micro ãWebãµãŒãã¹ãå±éããããã® go-web ãã¢ãã¿ãªã³ã°ããŒã«ã® monitor-web ããµãŒãã¹ããã¬ãŒã¹ããããã® trace-web ãªã©ããã€ã¯ããµãŒãã¹ãæ§ç¯ããã³éçšããããã®ããã±ãŒãžãæã£ãŠããŸããäžéãææ³ããçè§£ããªããã°äœ¿ãããªãã®ãé£ãããã§ãããMicroã§çµ±äžããããšã§å¿
èŠãªæ©èœãæãã®ã§çµ±äžæã®ããéçºãã§ããã§ãããã The Micro Blog - Simplifying building and managing microservices ã«ãMicroã®æŠèŠããããŸãã®ã§ãã²ã芧ãã ããïŒè±èªïŒã Micro - A microservice ecosystem. Simplifying building and managing distributed systems. ã§ã¯ãã¢ãã¿ãªã³ã°ç³»ããŒã«ã®ãã¢ã詊ããŸãã koding/kite: Micro-service framework in Go Kiteã¯Goèšèªã«ãã忣ã·ã¹ãã ãç°¡åã«æžããããã«ããRPCã©ã€ãã©ãªã§ãã倧ããªç¹åŸŽãšããŠã¯ããµãŒãã¹åŽã®URLãç¥ã£ãŠããã°çŽæ¥æ¥ç¶ã§ããURLããªãå Žåã¯KONTROLãšåŒã°ãããµãŒãã¹çºèŠã¡ã«ããºã ãå©çšããŠæ¥ç¶ã§ããããã«ãªã£ãŠããŸããæ¥ç¶èªèšŒã«ã¯JWTãæ¡çšãããŠããŸãã ããã°ã§è§£ãããã玹ä»ãããèšäº ããããŸãã ãªãGoèšèªã§ãã€ã¯ããµãŒãã¹ãéçºããã®ãïŒ ä»åã¯4ã€ã®ãã¬ãŒã ã¯ãŒã¯ãã玹ä»ããŸãããããããããªãGoèšèªããã€ã¯ããµãŒãã¹ã«åããŠããã®ã§ããããïŒ ãã«ãã¹ã¬ããã®ã³ãŒãã£ã³ã°ã楜ã§ãã Goèšèªã¯å®å
šã«ãã«ãã¹ã¬ããã³ãŒãã£ã³ã°ãæžããèšèªã§ããä»ã®èšèªãšæ¯ã¹ãå Žåã®ããã©ãŒãã³ã¹ãªã©ã¯ç¹çãã¹ããã®ããããŸãããããAPIéçºã«ãããŠå€§éã®POSTããŒã¿ããã«ãã¹ã¬ãããªããã¯ãšã³ãã®åŠçããå¿
èŠãããå Žåã«ã¯ããã®åšåãçºæ®ããã§ãããã ããŒã¿ããªãã£ã«åªãã Goèšèªã¯ããŒã¿ã«æ§ã«åªããèšèªã§ããäŸãã°éçšåŸã«ãµãŒããç§»èšãããã±ãŒã¹ã§ã¯ãç¹å®ã®ãµãŒãç°å¢ã«ã·ã¹ãã ãããã¯ãªã³ãããŠããŸããæãã¬è¿œå éçºãè¡ãããããšã«ãªããããŸãããAPIã·ã¹ãã ã¯æ¯ã®é·ãã·ã¹ãã ã«ãªããŸããéçºåŸã®éçšãèãããšãããŒã¿ããªãã£ã«åªããGoèšèªã¯è¯ãéžæè¢ãšãªããŸãã èšèªç¹æã®çžãããã èšèªã®çžããããããšã¯APIéçºåŸã®éçšã«ãããŠãæå€§ã®ã¡ãªãããšãªãã§ãããã äžéšã§Goèšèªã¯ã³ãŒãèšè¿°æ¹æ³ãéåããŠãããšè¡šçŸãããŠããŸãããããããã®èšèªã®çžãããããããã«ç¶ç¶çãªã¡ã³ããã³ã¹ãéçºè
ãå€ãã床ã«ã³ãŒãã®çãå€ãã£ãããããéçšä¿å®ã§ããããã«ãªããŸãã Goèšèªèªäœãæ¡çšäºäŸãå€ããªããæ¥æ¬èªã®æ
å ±ãå
å®ãã€ã€ãããŸããçŸåšãGo補ã®ãã€ã¯ããµãŒãã¹ãæ¥ã
é²åãç¶ããŠããŸããå®è£
ã®æ·å±
ãäœãããããããžã§ã¯ãåæã®éçºã«ãããã¢ãã¯ã¢ããå¶äœã®ã¹ããŒãã«ãããŠãGoèšèªã¯æåãªéçºèšèªãšãªãã§ãããã ãã²ä»å玹ä»ãããã€ã¯ããµãŒãã¹ãã¬ãŒã ã¯ãŒã¯ãå©çšããã¹ããŒãæããéçºãè¡ã£ãŠãã ããã
AWS Lambdaã䜿ãã°ãµãŒãã¬ã¹ã§ã·ã¹ãã æ§ç¯ãã§ããŸããæè¿ã§ã¯ãããããµãŒãã¬ã¹ãªã·ã¹ãã ããµãŒãã¬ã¹ã¢ãŒããã¯ãã£ãšããŠäººæ°ããããŸããä»åã¯ãããªãµãŒãã¬ã¹ã¢ãŒããã¯ãã£ãå®çŸããããã®ãµãŒãã¹ã玹ä»ããŸãã AWS Lambda (ãµãŒããŒã¬ã¹ã§ã³ãŒããå®è¡ã»èªå管ç) | AWS æãæåãªã®ãAWS Lambdaã§ãããã1ã¶æ100äžåãŸã§ã®ãªã¯ãšã¹ããç¡æã§ããã®åŸãäœæéã§åŠçãã§ããŸããJavaãNode.jsãPythonããµããŒããããŠããŸãã Functions | Microsoft Azure Microsoft Azureã§ãLambdaãšåçã®ãµãŒãã¹ãæäŸãããŠããŸããç¡ææ ãæ100äžåãªã¯ãšã¹ããšåãããã«èšå®ããŠããŸããå©çšã§ããèšèªã¯å¹
åºããC#ãPythonãNode.jsãPHPãªã©ã®ä»ãBashãBatchãPowerShellã§ã¹ã¯ãªããã®äœæãã§ããŸãã Webtask Node.jsã§æžããã³ãŒãããã®ãŸãŸå®è¡ã§ããŸããç¡æããå©çšã§ããŸãããæ9ãã«ãŸãã¯ã«ã¹ã¿ãã€ãºã®æéãã©ã³ãçšæãããŠããŸãã webscript - scripting on the web ãµãŒããµã€ãã§åããã³ãŒããLuaãªã®ãç¹åŸŽã§ããã¹ã±ãžã¥ãŒã«å®è¡ããµããŒããããŠããã®ã§ãCronã®ä»£ããã«äœ¿ããšèšã£ãããšãã§ããŸãã hook.io ãµããŒãããŠããèšèªã¯JavaScript/Python/PHP/Bash/Luaãšå€æ°ãããŸããã«ã¹ã¿ã ãã¡ã€ã³ãCronãªã©ãšãªã£ãŠãããæ©èœãå€ãã®ãç¹åŸŽã§ãã nstack - algebraic infrastructure PythonããµããŒãããŠããŸããããå°ããªã³ãŒããæžããŠãåŸã¯å°çšã®ã³ãã³ãã䜿ã£ãŠWebãµãŒãã¹äžã«ãããã€ã§ããŸãã Breadboard.io GitHubäžã«ããã³ãŒãããã®ãŸãŸãµãŒããµã€ãã§å®è¡ã§ããã®ãç¹åŸŽã§ããããŒã¿ããŒã¹ã¯MongoDBãã¡ãŒã«ãSMSéä¿¡ãç»å倿ãšãã£ãã©ã€ãã©ãªãå©çšã§ããŸããå©çšã§ããèšèªã¯Node.jsã«éå®ãããŠããŸãã ãããã§ãããããå€ãã®å ŽåãNode.jsã䜿ã£ãŠããŸãããããŠãåãµãŒãã¹ã®ç¹åŸŽã«åãããŠããã°ã©ãã³ã°èšèªã远å ãããŠããããã§ãããŸããå€ãã¯ãªãŒãã³ãœãŒã¹ãšããŠãã©ãããã©ãŒã ãå
¬éããŠãããããŒã«ã«ãéçºç°å¢äžã§ã¯ãªãŒãã³ãœãŒã¹çã§è©Šããæ¬çªç°å¢ã¯ã¯ã©ãŠããµãŒãã¹ã䜿ããšèšã£ãå
·åã«äœ¿ãåããããããã«ãªã£ãŠããŸãã ãµãŒãã¬ã¹ã¢ãŒããã¯ãã£ãããŸã䜿ããšãµãŒããªãœãŒã¹ã®äœæžãã¡ã³ããã³ã¹ã³ã¹ãåæžã«ç¹ãããŸãããã²ã·ã¹ãã ã«åãããå©çšæ³ãèããŠã¿ãŠãã ããã
10æ13æ¥ã« Enterprise APIs Hack-Night #7 ãéå¬ãããŸãããä»åã¯MarTechïŒããŒã±ãã£ã³ã°Ããã¯ãããžãŒïŒãããŒãã«è¡ãããŸãããããŒã±ãã£ã³ã°åéã¯ãã¯ãããžãŒã®çºå±ããããŸãããããŒã±ãã£ã³ã°ãªãŒãã¡ãŒã·ã§ã³ãªã©ã®ããŒã¯ãŒãã«ã泚ç®ãéãŸã£ãŠããŸãã ãã®èšäºã§ã¯åç»å£å
容ã«ã€ããŠç޹ä»ããŸãã APIã§ã€ãªããããŒã±ãã£ã³ã°ã®å®çŸ æ ªåŒäŒç€Ÿã·ã£ãã³ æè¡çµ±æ¬æ¬éš åç· åœ¹ å è²æ²» ããŸ è³æã¯ãã¡ã ã·ã£ãã³ã§ã¯ããŒã±ãã£ã³ã°ãã©ãããã©ãŒã ãããŒã±ãã£ã³ã°ãªãŒãã¡ãŒã·ã§ã³ããŒã«ãéçºããŠããŸããã·ã¹ãã ã®ã³ã³ã»ãããšããŠãããŒã±ãã£ã³ã°ã«å¿
èŠãªãã®ãäžåæäŸããŸããã¡ãŒã«é
ä¿¡ãã»ãããŒç®¡çããã¬ããŒã±ãã£ã³ã°ããã€ã¬ã¯ãã¡ãŒã«ãªã©ãªã©ãããŒã±ãã£ã³ã°ãªãŒãã¡ãŒã·ã§ã³ãæè¿ãããã§ãæµ·å€ãããè²ã
å
¥ã£ãŠããŠããŸããã·ã£ãã³ã§ã¯ãªãã©ã€ã³ã§ã®ååºæ
å ±ç®¡çãã»ãããŒãã€ãã³ã管çãªã©ã®æ©èœãå®è£
ãããŠããã®ãç¹åŸŽã§ãããªãã©ã€ã³ããªã³ã©ã€ã³ã®äž¡æ¹ããµããŒãããŠããŸãã ãããŠæã
ã®ã·ã¹ãã ã§ã¯APIãæäŸãããŠããŸãã ãªãAPIãéçºããã®ãïŒ 2009幎ïŒè£œåããªãªãŒã¹ããŠ3幎ç®ïŒãAPIæäŸã®æåã®å¹Žã«ãªããŸããå¢ãç¶ããèŠæã«å¯ŸããŠéçºãªãœãŒã¹ãè¶³ããŠããŸããã§ããããããã®éçºãå€éšéçºããŒãããŒã«ãé¡ãããããšã¯æãã€ã€ãã顧客ããšã«ã³ãŒããå€ããŠã«ã¹ã¿ãã€ãºããã®ã¯é·æçã«èŠãæã«é£ãããšèããŸãããããã§APIãéçºããããšã決ããæ¬¡ç¬¬ã§ãã ã€ãŸãå¿
èŠã«è¿«ãããŠAPIéçºãã¹ã¿ãŒããããšããã®ãæ¬é³ã§ãã APIãããããšã®ã¡ãŒã«ãŒãšããŠã®ã¡ãªãã APIã«ãã£ãŠãŠãŒã¶ããã³ããŒããã¯ã€ã³ãåé¿ã§ããããã«ãªããŸãããAPIããªãã£ããã補åãè²·ã£ããæåŸã亀æãã§ããŸããããŸããAPIãããããšã§è¿œå éçºãã§ããããã«ãªããŸãããAPIã«ããå
鲿§ã®ã€ã¡ãŒãžãã¡ãªããã§ããä»ã¯èããŠããŸãããåœæãã³ãã£ãŒã§æåããAPIãæäŸããŠããã±ãŒã¹ã¯å€ããããŸããã§ããã ãããŠãœãªã¥ãŒã·ã§ã³ã®å€§èŠæš¡åãæããããŸããAPIãããããšã§CRMãCSRãšã®é£æºãªã©ãããŒã±ãã£ã³ã°å
šäœãèããææ¡ãå¶æ¥ãã§ããããã«ãªããŸãããæåã¯ç©å£²ãã§ããããAPIã«ãã£ãŠãœãªã¥ãŒã·ã§ã³ç³»ãã³ããŒã«ãªã£ããšèšããŸããããã«å¿ããŠéçºããŒãããŒãªã©ãå¢ããŠããŸããã ããã«èªç€Ÿã®äžã§ãã€ã¯ããµãŒãã¹åãå¯èœã«ãªããŸãããèªç€Ÿã®äžã§ãAPIã䜿ãããšã§ãäžã€ã®ãµãŒãã¹ãå°ããªãµãŒãã¹ã®éåäœãšããŠäœããããã«ãªããŸããã APIã®çš®é¡ çŸåš2çš®é¡ã®APIãæäŸããŠããŸããããã¯ãšã³ãçšAPIã¯XMLã§ãèªèšŒããããŸããäž»ã«ãµãŒãé飿ºã«äœ¿ãããŠããŸããããäžã€ã¯ããã³ããšã³ãçšã§ã察象ã¯JavaScriptãšãªã£ãŠããŸãããã¡ãã¯èªèšŒäžèŠã§ãã€ããã©ãŒãã³ã¹ãªãã®ã§ãããã©ãŒãããã¯JSONã䜿ã£ãŠããŸãã APIæäŸè
ãšããŠã®èŠåŽ å€§ããªåé¡ãšããŠã¯ãªãœãŒã¹å¶éããããŸããçŸç¶ã§ã¯ããŒããªå¶éã§ã¯ãªã玳士åå®ã§ãã£ãŠããŸãããã®äžã§ãµãŒããªãœãŒã¹ãèŠãªãã調æŽããããã¢ã©ãŒããåºããã¯ã©ã€ã¢ã³ãã«é£çµ¡ããŠèª¿æŽããŠããããŸããAPIã€ã³ã¿ãã§ãŒã¹ã®å€æŽã¯åºæ¬çã«è¡ããŸããããå®éã®å©çšç¶æ³ãèŠãªãã倿Žããã廿¢ãè¡ã£ãŠããŸããAPIã®ããŒãžã§ãã³ã°ã¯ä»ã®ãšããè¡ã£ãŠããŸããã APIãå
¬éããã ãã§ã¯äœ¿ã£ãŠããããŸããããã®ããã®åžææŽ»åãå¿
èŠã§ããäºäŸãå¿
èŠãªã®ã§ããŸãæ°ç€Ÿã«çãæ·±ã䜿ã£ãŠãããå¿
èŠããããŸããããã«èªç€Ÿã§ãç©æ¥µçã«äœ¿ã£ãŠãåé¡ãããã°APIã倿ŽããŠäœ¿ãåæãé«ããŠããŸãã APIã®æŽ»çšäºäŸ ä»åã¯ä»¥äžã®äºäŸã玹ä»ããŸãã - ååºã¢ã㪠- ç¬èªã®ç®¡çç»é¢æ§ç¯ æš©éã«ãã£ãŠå€ããããå€§èŠæš¡ã€ãã³ãã®æã«å©çšããããšãå€ãã§ãã - å±ç€ºäŒã§ã®äžæ¬è³æè«æ±ãã©ãŒã äžç€Ÿããšã§ã¯ãªããã§ãã¯ããã¯ã¹ã§ãŸãšããŠã§ããŸãã ä»åŸ ããŒã±ãã£ã³ã°ã«ãããçµ±å管çãéèŠã«ãªã£ãŠããŸããäŸãã°Webã¯é 匵ã£ãŠãããã ãã©ãã»ãããŒãé»è©±ã代çåºã¯å端âŠãšãã£ãããšã¯ãããããŸããWebã¯KPIããšããããã§ãããä»ã®æœçã¯äººåãªãšãããããããªããªã管çããããŠããŸããã 2011幎æç¹ã§ããŒã±ãã£ã³ã°ãã³ããŒã¯150瀟ãããã§ãããã2016幎ã§ã¯3,500ã«ãã®ãŒã£ãŠããŸããããŒã±ãã£ã³ã°ãªãŒãã¡ãŒã·ã§ã³ã ãã§100瀟以äžãããŸããä»åŸãå¢ããŠããããç¥ããŸãããããã¯ãªãããšãããšãããŒã±ãã£ã³ã°ã®æœçãå¢ããŠããããã§ããæã¯ãã¬ããæ°èãšãã ãã ã£ãã®ããä»ã¯èšå€§ã«å¢ããŠããŸããããããæ£ãã倿ããŠäºç®é
åããã®ã¯ãšãŠãé£ããã®ã宿
ã§ãããŒã±ãã£ã³ã°ãªãŒãã¡ãŒã·ã§ã³ã®æŽ»ãããéã ãšèããŠããŸãã APIå©çšéçºã®TIPSãçŽ¹ä» æ ªåŒäŒç€Ÿã¢ã¯ãã£ãã»ã¯ãŒã¯ãCross Device Solution Assistant Leader åç° æŽæš¹ ã㟠SMP APIãå©çšããéçºäºäŸçŽ¹ä» çåœä¿éºäŒç€Ÿã®ããŒã¹ããŒã¡ãŒã«éçºã玹ä»ããŸããçåœä¿éºäŒç€Ÿã®é¡§å®¢ã®èµ€ã¡ããã«å¯ŸããŠã¡ãŒã«ãéããšãããã®ã§ããå
ã
åãä»çµã¿ã¯ãããŸããããæ®éã«ã¡ãŒã«ãéãã ãã§å³æ°ãªããã®ã§ãããããã§Facebookã³ãã¯ããéããŠã¹ã©ã€ãã·ã§ãŒã衚瀺ããããã«ããŸããã ããã¯APIã䜿ã£ãŠããã®ã§ã顧客ã®ã¡ãŒã«ã¢ãã¬ã¹ãæããã«ãµãŒãã¹ãæäŸã§ãããšãããã®ã§ãã Webãã¬ãŒã ã¯ãŒã¯ãšAPI ããããã¯éçºè
ã®èŠç¹ã§ã話ããŠãããŸãã SPAïŒã·ã³ã°ã«ããŒãžã¢ããªã±ãŒã·ã§ã³ïŒã§ã¯ãªããåŸæ¥ã®Webã·ã¹ãã ã®å Žåã¯äžèЧã詳现ç»é¢ãšäžåäžåéä¿¡ãè¡ããŸãã察ããŠSPAã¯äžåã«ãã¹ãŠååŸããŠè¡šç€ºã¯é ããŠãããŸãããããŠå¿
èŠã«å¿ããŠè¡šç€ºãåãæ¿ããŸããäž»ãªãã¬ãŒã ã¯ãŒã¯ãšããŠã¯AngularJSãReactããããŸãã SPAã§ã¯ããã³ããšã³ãåŽã§ããŒã¿ãããžãã¹ããžãã¯ãæ®ã©æãããããŸããããã®ããéåæã§ãµãŒããšéä¿¡ãè¡ã£ãŠããŒã¿ååŸãè¡ããŸããã€ãŸãAPIå©çšãåæã«ãªã£ãŠããŸãããããŠããã®éã«ã¯REST APIã䜿ã£ãŠéçºããããšãå¢ããŠããŸãã äŸãã°AngularJSã®$resourceã©ã€ãã©ãªã¯REST APIã䜿ãããããªãã©ã€ãã©ãªã§ããããã䜿ãããšã§APIãæ±ãéšåã®ã³ãŒãéãæ°åã®äžã«ãªã£ãŠããŸããŸãã éçºè
ãæ¯ããMcokAPI ããã«å¿
èŠãªã®ãMockAPIã§ããAPIæäŸå
ã§ããµã³ãããã¯ã¹ãçšæããŠãããŠããŸãããããŸãåæã«å©ãããã«ããããŸãããããã«APIããŸã ãªãå ŽåããããŸããä»ã«ããšã©ãŒãã¿ãŒã³ãè²ã
詊ããããå®è¡é床ãèœãšããŠAPIã詊ãããæããããŸãããããããšãã«äŸ¿å©ãªã®ãMockAPIã§ãã MockAPIãšã¯APIã®ããã«åããµãŒãã¹ã§ããããŒã®ã¬ã¹ãã³ã¹ãç°¡åã«åŸãããããã«ãªããŸããäŸãã°easymockãstubby4nodeãªã©ããããŸããstubby4nodeã¯æ©èœããªããã§ãããèšå®ãã¡ãã£ãšé¢åã§ãã ä»ã«ãAmazon API Gatewayã䜿ãæããããŸããç»é¢ããç°¡åã«APIãå®çŸ©ã§ããŠãã¢ãã¯çšã®APIãäœãã®ã«äœ¿ããŸãã Q. Angularãæ¡çšããçç± ã¹ããŒããã©ã³çšã«ãªãããªUIã§èŠããããšèšã£ãæã«äœ¿ããŸãã Q. ã客ããããAPIã䜿ã£ãŠäœããããšèšã£ãèŠæãæ¥ãŸããïŒ APIãæã£ãŠããäŒç€ŸããããèŠæãæ¥ãããšãå€ãã§ãã APIãå©çšããMauticïŒããŒã±ãã£ã³ã°ã»ãªãŒãã¡ãŒã·ã§ã³ããŒã«ïŒãšä»ã·ã¹ãã ãšã®é£æºã«ã€ã㊠ANNAIæ ªåŒäŒç€ŸãPrincipal Software Engineer éå±± çŸ©äž ããŸ è³æã¯ãã¡ã Mauticã¯äžçåã®ãªãŒãã³ãœãŒã¹ã®MAïŒããŒã±ãã£ã³ã°ãªãŒãã¡ãŒã·ã§ã³ïŒãœãããŠã§ã¢ã«ãªããŸããæ¥æ¬èªãå«ã52èšèªã«å¯Ÿå¿ããŠããŸãã8äžä»¥äžã®äŒæ¥ã§å°å
¥ãããŠããã1æ¥250瀟ãããå°å
¥ãå¢ããŠããŸãã ä»ã®åçšã·ã¹ãã ãšã®éããšããŠã¯ã - ã«ã¹ã¿ãã€ãºãã§ãã - ãªã³ãã¬ãã¹ã§ãéçšã§ãã - ã»ããã¢ããããã¬ãŒãã³ã°ãã£ãŒãç¡æ - ã³ã³ã¿ã¯ãã®ããŒã¿ã«å¿ããåŸé課éããªã ãšãã£ãç¹ã«ãªããŸããä»ã«ãMautic CloudããããŸããããªãŒãšããããã£ãŠããµã€ã³ã¢ãããã5åçšåºŠã§å©çšå¯èœã§ãã åäœç°å¢ã¯LAMPã¹ã¿ãã¯ã§ãã©ã€ã»ã³ã¹ã¯GPL v3ã«ãªã£ãŠããŸãããœãŒã¹ã³ãŒãã¯GitHubã§å
¬éãããŠãããæ¥æ¬äººã¯ã³ã³ããªãã¥ãŒã¿ã3åããããšãã£ãèŠæš¡ã§ããææ°ãªãªãŒã¹ã®2.1ã2016/08ã§ã3ã¶æã«äžåããã倧ããªãªãªãŒã¹ãè¡ãããŠããŸãã 2015幎æ«ãããããæ¥æ¬èªãªãœãŒã¹ãå
å®ããŠããŸãããçŸåšã翻蚳ã¯ã»ãŒ100%ãšãªã£ãŠããŸããæ±äº¬ãåå€å±ãæå¹ã§ããŒãã¢ããã€ãã³ãããã£ãŠããŸããä»ã«ãSlackã®æ¥æ¬èªãã£ã³ãã«ãæ¥æ¬èªãã©ãŒã©ã ãç«ã¡äžãã£ãŠããŸãã Mauticã«ãã£ãŠã誰ã§ãããã«ããŒã±ãã£ã³ã°ãªãŒãã¡ãŒã·ã§ã³ãã¯ãããããããã«ãªããŸããã MauticãšAPI Mauticã§ã¯ä»¥äžã®APIãæäŸããŠããŸãã - REST API - Webhook - Plugin REST APIã§ã¯OAuth2ã§èªèšŒããŠãŠãŒã¶æš©éã«å¯Ÿå¿ããã¢ã¯ã»ã¹å¶åŸ¡ãå¯èœã§ããPHPçšã®ã©ã€ãã©ãªããããŸãã Webhookã§ã¯ç¹å®ã®ã€ãã³ããçºçããã¿ã€ãã³ã°ã§ãã®æ
å ±ãJSONããŒã¿ãšããŠèšå®ããURLã«ãã¹ãããŸãã ãã©ã°ã€ã³ã¯ã»ãŒWebHookãšåãä»çµã¿ã§ãããã©ã°ã€ã³ã¯æšæºã§21åæäŸãããŠããŸãã MAã§äœã解決ãããã®ãïŒ ã¹ã¿ã³ãã¢ããŒã³ã§éçšããã®ã§ã¯ãªããæ¢åã®ITã€ã³ãã©ãšæ¥ç¶ãä»å 䟡å€ãçã¿åºãä»çµã¿ãéèŠã ãšèããŠããŸãã APIãå©çšããäŸ SFA/CRMãšã®é£æº Salesforceäžã®é¡§å®¢ããŒã¿ãšMauticã®é£æº ChatOps æ°ããã³ã³ã¿ã¯ãã远å ããããšSlackã«ã¡ãã»ãŒãžãæ¥ã CMS飿º æ¢åã®Webãµã€ããšã®é£æºãäŸãã°Drupalã§ç»é²ãããšMAã«ãããŒã¿ãç»é²ãããã Mauticã«ãã£ãŠèª°ã§ãMAãå®çŸã§ããããã«ãªããŸãããèªç€Ÿã®ãµãŒãã¹ããããã¯ããšæ¥ç¶ã§ããã®ã§ããžãã¹ãã£ã³ã¹ãåºããã§ãããã Splunkã§ããžãã¹ã¢ããªãã£ã¯ã¹?äžççã«æåãªã客æ§ã®äºäŸãã玹ä»ããŸã Splunk Service Japan Senior Partner Sales Engineer å°æŸå 貎åžã㟠Splunkã«ã¯ãã°è§£æã ãã§ãªããããžãã¹ã䌞ã°ãä»çµã¿ããããŸãããã·ã³ããŒã¿ããã¹ãŠã®äººã«ã¢ã¯ã»ã¹å¯èœã«ã䟿å©ãªãã®ã«ããããŠäŸ¡å€ãããã®ã«ãšããã®ãæã
ã®ããªã·ãŒã§ãã ä»åã¯ãã®äŸã玹ä»ããŠãããŸãã REST APIã§ããŒã¿ãç»é²ããŸããã¹ããã¢ããªã®ãã¹ãŠã®ããŒã¿ãSplunkã«éä¿¡ããŠããŸããäŸãã°ã¹ããã®äžäžã倿ããŠããŒãããŠãããã©ããã倿ããããSplunkã«ããŒã¿ãç»é²ããŸããããã«ãã£ãŠé£²ã¿ç©ãé£ã¹ç©ã®æ¶è²»ãå€åããŸããè² ããŠããããŒã åŽã¯çŸç·çŸå¥³ã®å£²ãåãéã蟌ã¿ãŸããã²ãŒã ã®ç¶æ³ã«ãã£ãŠã³ãŒã©ãããŒã«ãªã©ã調æŽããŸãã é§è»å Žã®ããŒã¿ãçµ±åãããŠããã®ã§ãåžã®è¿ãã®é§è»å Žãæ¡å
ããä»çµã¿ããããŸãã ã¢ã¡ãªã«ã®ã²ãŒã äŒç€ŸãUbisoftã®ããã¯ãšã³ãã§äœ¿ãããŠããäºäŸã§ãããŠãŒã¶ã®ãžã£ã³ããªã©ãã²ãŒã å
ã®åäœãã¹ãŠããã°ããŒã¿ã«å
¥ã£ãŠããŸããçŸåšãã²ãŒã ã®äžçã¯æ®ã©APIããŒã¹ã«ãªã£ãŠããŸããããããæž¬å®ãããµãŒãã¹åäœã®åŠçé床ãåãããŸããABãã¹ããã²ãŒã ã®äžã§è¡ã£ãŠããã®ãåãããŸãããã®åå¿ãSplunkã§åããŸãããã®çµæã課éããã€ã³ãååŸãªã©ããªã¢ã«ã¿ã€ã ã«å¯èŠåã§ãããŸãã ãšã©ãŒãåãããŸãããã¹ãŠãçŽãã®ã§ã¯ãªããè¯ãçºçããŠãããã®ãã察å¿ããã®ãçŸåšã®ããæ¹ã§ããä»ã«ãAPIã®è² è·äºæž¬ã·ã¹ãã ããããŸãããããè¶ããå€ãåºããšãã¢ã©ãŒããåºãããã«ãªã£ãŠããŸãã æèŠªäŒ&LT çºè¡šåŸã¯æèŠªäŒãšLTããããŸãããä»åã¯3人ã®ç»å£è
ããããŸããïŒãäžäººã¯éå
¬éïŒã è³æã¯ãã¡ã ããŒã±ãã£ã³ã°ãšãã¯ãããžãŒãçµã¿åããããšã©ããªããšãã§ããã®ããæ³šç®ã®åéã§ã¯ãªãã§ãããããæèŠªäŒã§ã倧ãã«çãäžãã£ãŠããŸããã
ããããæ°æ©èœããã€ã¯ããµãŒãã¹ãšããŠäœãå Žåãã©ããã£ãçšéã§ããã°åããŠããèšããã§ãããããåãäžåããæ£ããææ¡ã§ããã°ãéçºããããããã€ã¡ã³ããã³ã¹ããããã·ã¹ãã ãäœããã¯ãã§ãã 1ã¢ã¯ã»ã¹ã1ç§ä»¥äž ãµãŒãã¬ã¹ã¢ãŒããã¯ãã£ã¯é·æéã®ã¢ã¯ã»ã¹ãæ±ãããããããªä»çµã¿ã¯äžåãã§ãããã®ãããããŒã¿ããŒã¹ãRDBMSããNoSQLã§ãã£ããKVSã®ãã®ãåããŠãããšèšããŸããäžç¬ã®ã¢ã¯ã»ã¹ã§çµæãåãåã£ãŠè¿ãããšãã£ããã®ãåããŠããŸãã é·æéã®åŠçãå¿
èŠãªãã®ã¯çŸç¶ã®ãµãŒãç°å¢ã䜿ã£ãä»çµã¿ã®ãå®å¿ã§ãããã çãããžãã¯ åºæ¬çã«ãã€ã¯ããµãŒãã¹ã§ã¯1ã€ã®ãµãŒãã¹ã1ã€ã®åŠçãè¡ããŸãããã®ããèªç¶ãšã³ãŒãéãçããªãã§ããããããŸãé·ããªããšåŠçæéãããã£ãŠããŸããŸããå¿
èŠãããã°è€æ°ã®ãã€ã¯ããµãŒãã¹ãçµã¿åãããããšãã§ããã§ãããã APIã1URLã«å¯ŸããŠ1ãªãœãŒã¹ãšããŠç¬ç«æ§ãæç¢ºããã¡ãªãããšããŠããããã«ãã€ã¯ããµãŒãã¹ã1ã€1ã€ã®URLã§ã§ããããšãæç¢ºã«ããããšã§äœ¿ãããããªããŸãã 倧éã®ã¢ã¯ã»ã¹ãçºçãã ãµãŒãã§å€§éã®ã¢ã¯ã»ã¹ããã°ãããšæããšçžåœãªãªãœãŒã¹ãå¿
èŠã§ããããµãŒãã¬ã¹ã¢ãŒããã¯ãã£ã®å Žåã¯æ°ã«ããããšã¯ãããŸããã倧éã®ã¢ã¯ã»ã¹ããŸãšããŠåŠçã§ããŸãããã€ãåŠçãçµãã£ãããµãŒããååšããŠããªãã®ãšåãã§æéãããããŸããã ãã ã倧éã®ã¢ã¯ã»ã¹ã«ãã£ãŠããã°ãšã³ãåŽã«åœ±é¿ãåãŒãå¯èœæ§ããããŸãããµãŒãã¬ã¹ã¢ãŒããã¯ãã£ãåé¡ãªãã£ããšããŠããåŸæ¥ã®ã¢ãŒããã¯ãã£éšåãæ®ã£ãŠãããšããããããã«ããã¯ã«ãªãã¯ãã§ãã ãªã¢ã«ã¿ã€ã æ§ãæ±ããããªã ãµãŒãã¬ã¹ã¢ãŒããã¯ãã£ã®æ¬ ç¹ãšããŠãæåã®åŠçã«å¯ŸããŠã¬ã¹ãã³ã¹ãéåžžã«æªããšããåé¡ããããŸããããã¯ãªã¯ãšã¹ãã«ãã£ãŠå®è¡ç°å¢ããããã€ãããããã§ããäžåºŠèµ·åããåŸãã¢ã¯ã»ã¹ãããã°ãã°ããå®è¡ç°å¢ã¯æ®ãç¶ããã®ã§ã¬ã¹ãã³ã¹ã¯ç¶æãããŸãã ãã®ãããå©çšåŽãšããŠãå³å¿æ§ãæ±ãããããããªå Žæã«ã¯å©çšããªãæ¹ãè¯ãã§ãããããã¡ããåžžã«ã¢ã¯ã»ã¹ãçºçããŠãããªãã°ã¬ã¹ãã³ã¹ãè¯ãã¯ãã§ãããããã100%ãšã¯èšãåããŸããã æ©èœã®ç¬ç«æ§ãç¶æããã ãµãŒãã¬ã¹ã¢ãŒããã¯ãã£ã§ã¯åã
ã®æ©èœåäœã§ã³ãŒããç¬ç«ããŠããŸãããã®ãããäžéšã ãã©ã€ãã©ãªãããŒãžã§ã³ã¢ãããããããŒããŠã§ã¢ãªãœãŒã¹ãã¢ããã°ã¬ãŒãããããšãã§ããŸããè€éæ§ãå¢ãã®ã§ããŸããå§ãããŸããããæè»ãªã·ã¹ãã æ§æãå®çŸã§ããã§ãããã éçºé£ã倧ããªããŒã ã«ãªã£ãŠããæãã·ã¹ãã å
šäœãææ¡ããã®ã¯å€§å€ã§ãããã€ã¯ããµãŒãã¹ã§ããã°åã
ã®ã·ã¹ãã ã«ã€ããŠçè§£ããŠããã°è¯ããšããã¡ãªããããããŸãã APIãã¡ãŒã¹ã ãã€ã¯ããµãŒãã¹ã§ã¯åºæ¬çã«JSONãXMLãè¿åŽãããã®ãå€ãããã§ããå®éãAPIããã€ã¯ããµãŒãã¹ã§å®çŸããã®ã¯çžæ§ãè¯ãã§ãããããã€ã¯ããµãŒãã¹å士ã§ã¡ãã»ãŒãžã亀æããéã«ãAPIã䜿ãããŸãã éã«HTTPã§ãã£ãããç»åãªã©ãè¿ãã®ã§ããã°åŸæ¥ã®ã¢ãŒããã¯ãã£ã§ååãšèšããã§ããããRESTful APIããªãœãŒã¹åäœã§ç¬ç«ããŠããããã«ããµãŒãã¬ã¹ã¢ãŒããã¯ãã£ã§ã·ã¹ãã ãæ§ç¯ããéã«ã¯ãŸãAPIã軞ã«èããŠããã®ãè¯ãã§ãããã ãã€ã¯ããµãŒãã¹ãçªãè©°ããŠãããšäœã§ããã€ã¯ããµãŒãã¹åããããªããŸãããããåãäžåãããããåããŠããªããã®ãŸã§å€ããŠããŸããšåŽã£ãŠå€æŽãããŒãžã§ã³ç®¡çãç
©éã«ãªã£ããããŸããæ±ºããŠéã®åŒŸäžžã§ã¯ãããŸããã ç¹æ§ãæ£ãã倿ããŠãµãŒãã¹éçºã«æŽ»ãããŠãã ããã
ãµãŒãã¬ã¹ã¢ãŒããã¯ãã£ã®ä»£è¡šäŸãšããŠç¥ãããŠããAWS Lambdaãä»åã¯ãããªLambdaãã©ããªç®çã§äœ¿ãããŠããã玹ä»ããŸãã CI ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ãLambdaã§è¡ãæ¹æ³ã§ããæã¯CIãµãŒããçšæããã®ãåºæ¬ã§ããããéçºçšéã®ãµãŒããæ§ç¯ãã¡ã³ããã³ã¹ããã®ã¯æéãªã®ã§Lambdaã§ä»£çšããããšã§éçšã³ã¹ããæžãããããã«ãªããŸãã ãã®æã«äœ¿ãããã®ãWebHookã§ããGitHubãªã©ã®ãªããžããªãµãŒãã¹ã¯ã³ãŒãã¢ããããŒãæã®WebHookéç¥ã«å¯Ÿå¿ããŠããŸãã®ã§ããã®éç¥å
ãLambdaã«ããããšã§ãã¹ããèªåçã«è¡ãããããã«ãªããŸãã ããã¹ãåŠç ããã¹ãã®åãã¡æžãåŠçã§ãã£ããã倧éã®ããã¹ããäžæ°ã«åŠçããå Žåã«Lambdaã䜿ãããŸããäžå®æéã ã倧éã®åŠçèœåãå¿
èŠãªå Žåãã¯ã©ãŠããµãŒããç«ã¡äžããã®ããããŸã§ã®ããæ¹ã§ããããããã§ã¯æéãé«ããªã£ãŠããŸããŸãã åŠçç¯å²ãéå®çãªå ŽåãLambdaã䜿ãããšã§æéã倧å¹
ã«äžããããããã«ãªããŸãããµãŒããç«ã¡äžããåã«ãããã¯Lambdaã§ãã§ããã®ã§ã¯ãªãããšããèãã¯ä»åŸå€§äºããç¥ããŸããã ãã£ããããã æè¿äºäŸãå€ãã®ããã£ãããããã§ããããžãã¯ã«ã€ããŠã¯ããŸãæžãããã¡ãã»ãŒãžãåãåã£ããAIç³»ãããã¹ãåŠçç³»ã®APIã«éä¿¡ããŸãããããŠããã®çµæããã£ãããšããŠè¿åŽããŸããä»çµã¿ã¯åçŽã§ãããã¹ãã¡ãã»ãŒãžåãã®ä»çµã¿ãšèšããã§ãããã ãã ãã€ã³ã¿ã©ã¯ãã£ããªå¯Ÿè©±ãè¡ãããšæããšå€å°é¢åããç¥ããŸãããããŒã¿ã®ä¿åå Žæãæ®ããŠããå¿
èŠãããã§ãããã åãåãããã©ãŒã Webãµã€ãã«ãããããåãåãããã©ãŒã ã§ãããLambdaã䜿ãããšã§ãµãŒãåŽã®ããžãã¯ã¬ã¹ã§æ§ç¯ã§ããŸããä»çµã¿ãšããŠã¯Amazon S3ã®JavaScript SDKã«ãã£ãŠãåãåããå
容ãAmazon S3äžã«ä¿åããŸãããããŠããããããã¯ãšããŠLambdaãå®è¡ããŠã¡ãŒã«éä¿¡ããŸãã Lambdaã®å Žåãåç¬ã§ã®å©çšãããããšãªãããS3ãâãšãã£ãä»ã®AWSã®ãµãŒãã¹ãšçµã¿åãããŠäœ¿ããã®ãé
åçã§ã¯ãªãã§ããããã APIãµãŒã Lambdaã䜿ã£ãAPIãµãŒããšããŠã¯ããŸãããã³ãã«API Gatewayã䜿ã£ãŠã¢ã¯ã»ã¹ãäžæã«è¡ããŸãããããŠããªã¯ãšã¹ãå
容ã«å¿ããŠLambdaãå®è¡ããŠçµæãè¿åŽããŸããLambdaã䜿ãããšã§çžåœæ°ã®ã¢ã¯ã»ã¹ãæ¥ãŠãå®å¿ãªã¢ãŒããã¯ãã£ã«ãªããŸããAPI Gatewayã«ãã£ãŠã¢ã¯ã»ã¹æ°ãå¶éããããšãã§ããã§ãããã APIãµãŒããšããŠã®ããŒã¿ãœãŒã¹ã¯ããŒã¿ããŒã¹ã䜿ãããšãã§ããŸãããAmazon S3äžã«ä¿åããCSVãã¡ã€ã«ã䜿ãããšãã§ããŸããåŸã¯ãã¡ã€ã«ãå·®ãæ¿ããã ãã§APIããŒã¿ã®æŽæ°ãå®çŸã§ããŸãã ãµãŒãã¬ã¹ã¢ãŒããã¯ãã£ãæè¿ã®æ³šç®ã¯ãŒãã§ããããã¹ãŠã®ãµãŒãç°å¢ã眮ãæãããããã®ã§ã¯æ±ºããŠãããŸãããåãäžåããããããšãèªèããå¿
èŠããããŸããç¹æ§ãåããã°ãã·ã¹ãã ã®äžéšã¯ãµãŒãã¬ã¹ã¢ãŒããã¯ãã£ã«ãäžéšã¯ãããŸã§ã®ãµãŒãã䜿ããšèšã£ããã€ããªãããªæ§æãæå¹ã«ãªãã®ãåããã¯ãã§ãã
ãã1ã2幎ãããã§æ³šç®ãéãŸã£ãŠããã®ããã€ã¯ããµãŒãã¹ãšèšãããã·ã¹ãã ã¢ãŒããã¯ãã£ã§ããä»åã¯ãããªãã€ã¯ããµãŒãã¹ã®ç¹åŸŽã玹ä»ããŸãã å°ããã·ã¹ãã ãå®çŸ©ããŠçµã¿åããã ãã€ã¯ããµãŒãã¹ã¯ãã®åã®éããå°ããªïŒãã€ã¯ãïŒãµãŒãã¹ã«ç¹åããã¢ãŒããã¯ãã£ã§ããäŸãã°èªèšŒ/ãŠãŒã¶ç®¡çãæ±ºæžãªã©ç¹å®ã®æ©èœã«ç¹åããéšåãäžãŸãšãã«ããŠæ§ç¯ããŸããããã¯ã°ã©ãŠã³ãã®ããŒã¿ããŒã¹ã«ã€ããŠã¯å
±éåãããŠããããã¯ã©ã¹ã¿ãªã³ã°ãçµãã§åç
§ã«ã€ããŠã¯åã
ã®ãã€ã¯ããµãŒãã¹ã§ããŒã¿ããŒã¹ãæã£ãŠããå ŽåããããŸãã ãã€ã¯ããµãŒãã¹å士ã¯APIãéããŠæ
å ±ã亀æããŸãããã€ã¯ããµãŒãã¹ãšAPIã¯å¯æ¥ãªé¢ä¿ã«ãããšèšããŸãã æŽæ°ã容æã«ãªã ãã€ã¯ããµãŒãã¹å士ã¯ç¬ç«ããŠããã®ãéèŠã§ããåãµãŒãã¹ãççµåã«ããããšã§ã¹ã³ãŒããæç¢ºã«ããããã¡ã³ããã³ã¹ã容æã«ãªããŸããäžã€ã®å€§ããªã·ã¹ãã ïŒã¢ããªã·ãã¯ïŒã®å Žåãäžã€ã®å€æŽãç¡é¢ä¿ãªåŠçã«åœ±é¿ãåãŒãããšãå°ãªããããŸããããã€ã¯ããµãŒãã¹ã§ã¯ããããå¿é
ããããŸããã ãšã¯èšããå€ãã®å Žåå
±éããåŠçãå¿
èŠã«ãªãããšããããŸããã¢ãã«ãªã©ã䜿ãåããããšããããŒãºãããã§ããããããããæã«ã¯å®çŽã«å
±æåããã®ã§ã¯ãªãããµãŒãã¹ã®ã¹ã³ãŒããèŠçŽãå¿
èŠãããã§ãããã ã·ã¹ãã å
šäœã®ææ¡ã容æã«ãªã ã·ã¹ãã ã¯æ§ç¯æãããæŽæ°æã«åé¡ãèµ·ãããããã§ããããè€éãªã·ã¹ãã ã«ãªãã»ã©ãäžã€ã®ä¿®æ£ã圱é¿ãåãŒãç¯å²ãåºããªã£ãŠãããŸãããã¹ãã§ã«ããŒãã¹ããšããã§ãããå
±éã©ã€ãã©ãªã®å€æŽã¯æããŠæãã€ããããªããªããŸãããã®çµæãšããŠã³ãŒãã®ã³ããŒ&ããŒã¹ããå¢ããŠãããŸãã ãã€ã¯ããµãŒãã¹ã®å Žåãç¬ç«æ§ãæ
ä¿ãããŠããŸãã®ã§ä¿®æ£ã容æã«ãªããŸããæ
åœè
ã®ç¥èãå
šäœã«åãã§ããªãå Žåã§ããã¬ã¹ãã³ã¹ãå€ãããªãéãã¯å®å¿ããŠä¿®æ£ã§ããŸãã è€é床ãå¢ãããšãå€ã ã·ã³ãã«ãªã¯ãã®ãã€ã¯ããµãŒãã¹ã§ããã倿°ã®ãµãŒãã¹ãä¹±ç«ããããšã§è€éã«çµ¡ã¿åã£ãŠããŸãããšããããŸããã·ã¹ãã ã®ç²åºŠãããŸã现ãããããšãäžã€ã®åŠçãè¡ãããã«è€æ°ã®ãµãŒãã¹ãçµã¿åãããªããã°ãªããªããªããŸããHTTPã®APIãæ¡çšããŠããå Žåããã©ã³ã¶ã¯ã·ã§ã³ãããã¯ã«ãªã£ãŠããŸãã®ã§è€æ°ã®ãµãŒãã¹ãåŒã³åºãã®ã¯çŸå®çã§ã¯ãããŸããã ãŸãããµãŒãã¹ãå¥ãªãµãŒãã¹ãåŒã³åºãã®ãé¿ããæ¹ãè¯ãã§ããããäžã€ã®ãµãŒãã¹ãžã®è² è·ãé«ãŸãå¯èœæ§ããããçµæãšããŠããã«ããã¯ã«ãªã£ãŠããŸããŸããã¯ã©ã€ã¢ã³ãåŽããã®ã¿åŒã³åºãæ¹ãã·ã³ãã«ããä¿ãŠãããã«ãªããŸãã å®è¡é床ã®åé¡ è€æ°ã®ãµãŒãã¹ãåŒã³åºãä»çµã¿ã«ããå Žåã«ããã«ããã¯ã«ãªãã®ã¯ãããã¯ãŒã¯é床ã§ããäžéšã®åŠçã«ãããŠã¯äžŠååãããããšãã§ããŸããããããã¯ãŒã¯ã³ãã¯ã·ã§ã³ã³ã¹ãã¯ç©ã¿éãªããšç¡èŠã§ããªããªããŸãã äžã€ã®è§£æ±ºæ³ãšããŠãããã·ãµãŒããç«ãŠãæ¹æ³ããããŸãããããã·ãµãŒããè€æ°ã®åŠçãäžæã«åãä»ããåãã€ã¯ããµãŒãã¹ã§åŠçãå®è¡ããŠçµæãå床æããŠè¿ãããã«ããŸããããã«ãã£ãŠã¯ã©ã€ã¢ã³ããšãããã·ãµãŒãéã®ãããã¯ãŒã¯ã³ã¹ãã倧å¹
ã«æžãããããã«ãªããŸãã ç§»è¡ã容æ ã¬ã¹ãã³ã¹ãä¿èšŒãããŠããç¶æ
ã§ããã°ãããã¯ãšã³ãã®ããã°ã©ãã³ã°èšèªãããŒã¿ããŒã¹ãå€ãã£ããšããŠãåé¡ãããŸãããã¢ããªã·ãã¯ãªå Žåã¯ããã°ã©ãã³ã°èšèªã®ç§»è¡ãããŒãžã§ã³ã¢ããã«å¯ŸããŠèç
ã«ãªããã¡ã§ãããã€ã¯ããµãŒãã¹ã®å Žåã¯ãäžéšã®ã·ã¹ãã ããé çªã«å€æŽã§ããããã«ãªããŸãã ããã°ãã³ã¢ããããŒãã«ãªããªãåãã¹ã ãŒãºãªç§»è¡ãå®çŸã§ããããã«ãªããŸãã RESTful APIãåºæ¬ ãã€ã¯ããµãŒãã¹ã®éä¿¡ã«ã¯APIãæ¬ ãããŸããããã®å€ãã¯RESTful APIãšãªã£ãŠãããCRUDæäœã容æã«ã§ããããã«ãªã£ãŠããŸããèªèšŒã«ã€ããŠã¯ãã®éšåã ãããã€ã¯ããµãŒãã¹åãããŠãããOAuth2ã«ãã£ãŠèªèšŒ/æš©é管çãããŠããã®ãããã¡ã¯ãã«ãªã£ãŠããŸãã ãã ããã€ã¯ããµãŒãã¹ãå¢ãããšæš©éãä»äžããæäœãäœåºŠãè¡ãããšã«ãªããŸããããããåé¡ãé²ããããã·ã¹ãã ã«ãã£ãŠã¯äžåºŠã®æ¿èªã§ãã€ã¯ããµãŒãã¹å
šäœã®ã·ã¹ãã ã§äœ¿ããããã«ããã±ãŒã¹ããããŸãã ãã€ã¯ããµãŒãã¹ãåããŠããã®ã¯ç¶ç¶çãªæŽæ°ãç¶ããããŠããã·ã¹ãã ã«ãªãã§ããããäžåºŠäœã£ãŠããã®åŸã¯æ®ã©æŽæ°ããªããããªæ¥åã·ã¹ãã ãªã©ã¯ã¢ããªã·ãã¯ãªæ¹ãéçºãã¡ã³ããã³ã¹ããããã§ãããã ãããŠãã€ã¯ããµãŒãã¹ã®åé¡ã¯ã¹ã³ãŒãã«ãããŸããç²åºŠãããŸã现ãããšã·ã¹ãã ã®è€é床ãå¢ããããã³ãŒãã®å
±æãå¢ããåŸåã«ãããŸãããŠãŒã¹ã±ãŒã¹åäœã§åºåã£ããã垳祚ããããåŠçãªã©çžäºã«åœ±é¿ãäžããªãéšåãåãåºããŠãã€ã¯ããµãŒãã¹ã«ããã®ãè¯ãã§ãããã
ãã€ã¯ããµãŒãã¹ãšã¯ ãã€ã¯ããµãŒãã¹ãšã¯ãåäžã®ã¢ããªã±ãŒã·ã§ã³ãå°ããªãµãŒãã¹çŸ€ã®çµã¿åãããšããŠæ§ç¯ããææ³ã§ããããããã®ãµãŒãã¹å士ã¯ççµåãšããRESTful APIãªã©ã§æ¥ç¶ããããªããŸãããã®ã¢ãŒããã¯ãã£ãæ¯ãããããåèšèªã§ãã€ã¯ããµãŒãã¹ãã¬ãŒã ã¯ãŒã¯ãååšããŸããä»åã¯ãèšèªããšã«äž»ãªãœãããŠã§ã¢ãããã¯ã¢ããããŠç޹ä»ããŸãã PHP Lumen LaravelãããŒã¹ãšãªãPHPã®ãã€ã¯ããã¬ãŒã ã¯ãŒã¯ã§ãããã³ãããŒã¯ã§ã¯PHPç³»ãã€ã¯ããã¬ãŒã ã¯ãŒã¯ã§æéãšããŠããŸãããŸãLaraveléçºè
ã§ããã°ãååŠç¿ããããšãªãå©çšã§ããã§ãããããã«ã¹ã¿ãã¯ã®Laravelã«ã³ãŒããã³ã³ããŒãããããšãå¯èœã§ãLaraveléçºçµéšè
ãªãéžææãšããŠå€§ããªã¢ããã³ããŒãžã«ãªãã§ãããã License: MIT license Lumen - PHP Micro-Framework By Laravel Slim Framework Slimã¯ãã·ã³ãã«ã§åŒ·åãªWebã¢ããªã±ãŒã·ã§ã³ãAPIãããã«æžããPHPã®ãã€ã¯ããã¬ãŒã ã¯ãŒã¯ã§ããWebã®ãã€ã¯ããã¬ãŒã ã¯ãŒã¯ãšããŠãHTTPã®ã«ãŒãã£ã³ã°ã¯åœç¶ã§ãããPSR-7ããµããŒãããã®ã§HTTPã¡ãã»ãŒãžãäœæããã®ã容æã§ãããã License: MIT license Slim Framework Silex SymfonyãããŒã¹ã«éçºãããSinatraã«ã€ã³ã¹ãã€ã¢ãããPHP補ã®ãã€ã¯ããã¬ãŒã ã¯ãŒã¯ã§ãã çŽæçã§ç°¡æœãªAPI æ¡åŒµã·ã¹ãã ãšããŠPimple micro serviceãæã£ãŠãããããæ¡åŒµã容æ ãªã¯ãšã¹ããšã¬ã¹ãã³ã¹ãæœè±¡åããSymfonyã®HttpKernelã䜿çšããŠããã®ã§ãã¹ãã容æ ãšãã£ãç¹åŸŽãæã£ãŠããŸãã License: MIT license Silex - The PHP micro-framework based on the Symfony Components Python Flask Flaskã¯Pythonçšã®ãã€ã¯ãWebéçºãã¬ãŒã ã¯ãŒã¯ã§ã2010幎é ããéçºãããŠããŸãããã®æŠå¿µã¯ããã¬ãŒã ã¯ãŒã¯ã®ç°¡ææ§ããã¬ãŒã ã¯ãŒã¯ã®å°ãããã®ãšããã ãã§ãªãããã¬ãŒã ã¯ãŒã¯ã§æžããããè€éããšã¢ããªã±ãŒã·ã§ã³ã®ãµã€ãºã«å¶éãããããã®ã ãšããŠããŸãã License: three clause BSD License Welcome | Flask (A Python Microframework) Bottle Bottleã¯é«éãã·ã³ãã«ãã€è»œéãªPythonã®ãã€ã¯ãWebãã¬ãŒã ã¯ãŒã¯ã§ããåäžã®ãã¡ã€ã«ã»ã¢ãžã¥ãŒã«ãšããŠé
åžãããPythonæšæºã©ã€ãã©ãªä»¥å€ã®äŸåé¢ä¿ããªããšãããŠããŸãã License: MIT License Bottle: Python Web Framework Pyramid Pyramidã¯ãå°ãããæ©ããå
å®ãã謳ãPythonã®ãã€ã¯ããµãŒãã¹ãã¬ãŒã ã¯ãŒã¯ã§ããã€ã³ã¹ããŒã«ããã¹ã¯ãªããã®èµ·åãŸã§ãéåžžã«ç°¡åã«ã»ããã¢ããå¯èœã§ããPythonç³»ã¯Pythonã³ã³ãœãŒã«ããããã«å®è¡ã§ãããã®ãå€ãã®ãç¹åŸŽã§ããããã«ãµã³ãã«ã¹ã¯ãªããã®ç¢ºèªãå¯èœã§ãããã License: Repoze Public License The Pyramid Web Framework Java Lagom Lagomã¯ã¹ãŠã§ãŒãã³èªã§ãååãªããšèšãæå³ã§ããéçºè
ã«ãããšããã€ã¯ããµãŒãã¹ã®ãã€ã¯ãã匷調ããããªããšã®çç±ããåœåãããäžåºŠè¯ãé©åãªãµã€ãºã®ãµãŒãã¹ãäœæããããšãç®çãšããŠéçºãããŸãããããã¥ã¡ã³ããªã©ã確èªãããšãJavaãšãããããScalaè²ã匷ãæãã§ããçŸæç¹ã§ã¯Java APIãçšæãããŠããŸãããScala APIãéçºäžã®ããã§ãã License: Apache2 License Lagom ãŸãšã ãããã§ãããããå
šãŠã玹ä»ã§ããªãã»ã©ã§ããã€ã¯ããµãŒãã¹ã謳ã£ãŠããã¬ãŒã ã¯ãŒã¯ãå€ãããç¶æ³ã§ããä»ã«ããã€ã¯ããµãŒãã¹ãæ¯ããåºç€ãšãªããã¢ãŒããã¯ãã£ãã¬ãŒã ã¯ãŒã¯ãååšããŸãããã²èªåã®å¥œããªèšèªã§ãã€ã¯ããµãŒãã¹ãã¬ãŒã ã¯ãŒã¯ãããã調ã¹ãŠã¿ãŠãã ããã
9/27@ãµã³ãã©ã³ã·ã¹ã³ã«ãŠéå¬ãããApigeeäž»å¬ã® ADAPT or DIE ã®éå ±ã¬ããŒããã®ïŒã§ãã ååŸããã®ã»ãã·ã§ã³ãã玹ä»ããŸãã ãã®ä»ã®ã»ãã·ã§ã³ã¯ãã¡ã * ãã®1 * ãã®2 äŒå Žã¯ãµã³ãã©ã³ã·ã¹ã³ Market Stã«ããVillageã§ãã ååŸãããåŒãç¶ãåçš®ã»ãã·ã§ã³ããããŸããããŸãã¯Adapt or Die Movieã®ãæ«é²ã ããªãŠããããªããã®æŒåºã¯ããããApigeeã¹ã¿ãããåºæŒïŒ 20åã»ã©ã®äžæ ã®ããšã¯ãInnovation Showcaseã§ãã 以äž3瀟ãããŠãŒã¹ã±ãŒã¹ã®ç޹ä»ããããŸããã Peter Miron - Software ArchitectâAdvanced Technologies Group, Apcera Todd Thayer - Senior Director Software Developer Programs, Silver Spring Networks Alex McClure - Sr. Product Manager - Platform/API, Mindbody Silver Spring Networks IoT PlatformãæãããäŒæ¥ã§ãNetwork PlatformãControl PlatformãData Platformãªã©ãæäŸããŠããŸãã APIãå
å®ããŠããã ãããã Data Platform API Docsã確èªã§ããŸãã ããã€ã¹ãã€ãã³ãã®ãµãŒãAPIããåçš®ã€ãã³ããéç¥ããWebhook APIããã®ä»ãããã¯ãŒã¯ç³»ã ãšããã€ã¹ãšãçé確èªãã§ããPING APIãªããããããŸãã Mindbody APIã«ãã£ãŠæ§ã
ãªäŒæ¥ãšææºããŠãFitness Mobile Appsãäœã£ãŠã話ã 31äžãŠãŒã¶ãé¢é£ããŠãã55,000ã®ããžãã¹ãã«ããŒããŠãããšã®äºã ç±³åœã®æåãããŸãããžãã¹ã«ä»ç«ãŠäžããè¯ã¢ãã«ã ãããŠãããããã©ã¹ãã®ã»ãã·ã§ã³ãå§ãŸããŸãã ãClosing Keynoteã Closing keynote with Apigee CTO, Anant Jhingran Open API Specification Throughout the API Lifecycle API LifecycleããSpeed Mattersãã«äŸããŸãã ãããŠãApigeeã䜿ãã°Very GoodãªãSpeed Mattersãã宿ãããã§ãïŒ ä»¥äžãä»å¹Žã¯1dayã§ã®éå¬ã§ãããããšãŠãå
å®¹ã®æ¿ãå
å®ãã1æ¥ã§ããã ã¬ããŒãã§ã¯æžããããŸããã§ããããå¥ã®ããã¢ã§ã¯Apigee Partnerã«ããRoundtablesãéå¬ãããŠããããã¡ãããŸãçãäžãã£ãŠãããŸããã æ¥å¹Žã¯ããããããšå¥ã®ã€ãã³ãåã«ãªã£ãŠããããïŒã§ããïŒç¹ã«è§ŠããããŠãŸããã§ãããïŒãããã«ãã¯ãŒã¢ããããã€ãã³ãã«ãªã£ãŠããããšãæåŸ
ããŸãã ããã·ã¥ã¿ã°[# DigitalKnowHow]
9æ27æ¥ããµã³ãã©ã³ã·ã¹ã³ã«ãŠAdapt or Dieãéå¬ãããŸãããæšå¹Žã¯ãI Love APIã§3æ¥ã³ãŒã¹ã§ããããä»å¹Žã¯1æ¥ã«å§çž®ã§ã5éœåžã§å®æœãšã®ããšãå
æ¥ãGoogleãè²·åãçºè¡šããApigeeäž»å¬ã®ã€ãã³ãã§ããããè峿·±ããšããã§ãããã¡ãã¯ãã®ã¬ããŒãã«ãªããŸãããã®1ã«ç¶ããŠãã¯ã©ãŠããšãã€ã¯ããµãŒãã¹ã»ãã·ã§ã³ãã¬ããŒãã Adapt or Die Microservices with Node.js and DockerïŒ ç»å£è
ïŒTony Pujals - Director of Cloud Engineering, Appcelerator Microservices and Docker æšå¹Žã®ã€ãã³ãã§ãå
¬æŒãããŠãŸãããããããnode.jsç³»ã ã£ãããšãä»å¹Žã¯ãDockerãã£ããã³ãšããŠã åºæ¬ã¯Docker玹ä»ãªãã§ãDocker1.1.2ãªãªãŒã¹æŠèŠããªãªãŒã¹æŠèŠã¿ããã1.1.3ãã§ãŠãŸãã!! Docker Release Notes Docker Swarmã®ããããžãŒèª¬æããã®èŸºãã«ãªã£ãŠãããšãK8ãšã®éãã質åãã人ããããŸãããã©ã¡ãã«ããããã®äžçã¯ç«ã¡äžããäžãªã®ã§ãå®éã«å©çšããŠã¿ãã®ããªã¹ã¹ã¡ã§ãã Plan for Swarn in Production Serverless Microservices ç»å£è
ïŒAlan Williams - Enterprise Architect, Autodesk ãã¡ãã¯ãApigeeãŠãŒã¶äŒæ¥ã®Autodeskã®äººãçºè¡šã§ããApigee + AWS Lambdaãšããæãã§ãã Serverlessã®attributeãVMã§ãã³ã³ããã§ããªããã³ãŒããã€ãã³ãèŠæ±ã§åŠçã Autodeskã®Serverlessã®ããã¯ãšã³ãã§APIæäŸã®äºäŸãããããã®ãä»åŸããããåºãŠãããšæãããŸãã AWS LambdaããµããŒããããserverless.com ããšã§ãå©çšããŠã¿ãŸãã Serverless.com