ã«ããã®äžã§ãWeb APIãã¶ã€ã³ã®äœæãå€æŽã®èšç»ãããŒãžã§ãã³ã°ã®ç®¡çãAPIãŠãŒã¶ãŒãšã®å¯Ÿè©±æ¹æ³ã«é¢ããå®çšçãªãã³ããèŠã€ããããšããŸããã ç§ãã¡ã¯ãã©ã®ãããªå°é£ãçããå¯èœæ§ããããã©ããªå žåçãªééããéåžžãªãããããèŠã€ããããšããŸããã ãŸããæŽå²ããã®ããŸããŸãªèå³æ·±ãäºå®ããå°æ¥ã®äºæ³ãããå€åã«ã€ããŠãèªãã§ãã ããã
ç§ãã¡ã®å¯Ÿè«è ã§ãããã£ã©ã³ã»ããŒãã£ãŒã¯ã StackOverflowã§é«ãè©äŸ¡ãåŸãŠããŸããã€ãŸãã圌ã¯ãããŸããé¢çœãããããŠéèŠãªããšã«ã質åã«æ£ããçããæ¹æ³ãç¥ã£ãŠããŸãã çŽ æŽãããçµéšã«ããã圌ã¯åœŒèªèº«ã®äŸã䜿ã£ãŠéå»ããäœããèªãããšãã§ãã建ç¯å®¶ã®è·æ¥ã¯åœŒã®å£èª¿ãä¿ã¡ããã¬ã³ããšé«åºŠãªæè¡ã«é¢ããæ°ããç¥èããããããŸãã

-ã©ã®APIãéçºããŠããŸããïŒ APIã®èšèšã¯ã©ã®æç¹ã§çªç¶ãœãããŠã§ã¢éçºã«ç§»è¡ããŸããïŒ
Dylan BeattyïŒããã¯éåžžã«èå³æ·±ã質åã§ãããœãããŠã§ã¢éçºã®åéã§ã®æ倧ã®èª€è§£ã®1ã€ã¯ãAPIã®èšèšãä»ã®ãã¹ãŠãšã¯å¥ã«çºçãããã®ã ãšæãããã§ãã ãã¡ãããHTTP APIãªã©ã®ç¹å®ã®çš®é¡ã®APIãããžã§ã¯ãã¯äžè¬å ¬éãããŸãããèšèšãäœæ¥ã®å¥ã®éšåãšèŠãªãããšã¯çã«ããªã£ãŠããŸãã ããããå®éã«ã¯ãã»ãšãã©ã®éçºè ã¯ãå®éã«åžžã«APIãäœæããŸãã圌ãã¯ãAPIãå®è¡ããŠããããšã«æ°ä»ããªãã®ã§ãã ã¯ã©ã¹ã®1ã€ã§ãããªãã¯ã¡ãœãããèšè¿°ããããããŒã¿ããŒã¹ããŒãã«ã®ååãéžæãããã³ã«ãã€ã³ã¿ãŒãã§ãŒã¹ãäœæããŸã-éåžžã®æ¥åžžçãªè±èªã®æå³ã§-ããã¯ãå°æ¥ç¹å®ã®æç¹ã§ä»ã®éçºè ã«ãã£ãŠæçµçã«äœ¿çšããããã®ã§ãã ããŒã ã®ä»ã®äººãã¯ã©ã¹ãšã¡ãœããã䜿çšããŸãã ä»ã®ã³ãã³ãã¯ãããŒã¿ã¹ããŒã ãŸãã¯ã¡ãã»ãŒãžåœ¢åŒã䜿çšããŸãã
èå³æ·±ãã®ã¯ãéçºè ãäœæ¥äžã®ã³ãŒããAPIã®äžéšã«ãªãå¯èœæ§ãããããšãç解ããŠããå Žåãéçºè ã¯åãæ¹åã«è¡ãéããŠãããšããããšã§ãã ãšããžã±ãŒã¹ããå®éã«ã¯å¿ èŠã®ãªããã®ä»ã®ããããçš®é¡ã®å®è£ ãéå§ããŸããåã«åŸã§ä»ã®äººãå¿ èŠã«ãªãå¯èœæ§ãããããã§ãã ããã§ã©ã€ã³ã埮åŠã«æããå¿ èŠããããšæããŸãããã®ã©ã€ã³ãç解ããããã®éµã¯ãããªããä»å¿ èŠãªé¢æ°ã®ã»ãããäœæããéã«éåžžã«å ·äœçã§ããå¿ èŠãããããšã§ãã ãã ãããã®ã»ãããå¯èœãªéãåå©çšå¯èœãã€èªå·±èšè¿°çã«ããããšãéèŠã§ãã Pieter Hintjensã«ã¯ãè¯ãAPIèšèšã®ããã®10ã®ã«ãŒã«ãšåŒã°ããåªãããšãã»ã€ãããããã®ã¿ã€ãã®ã¢ã€ãã¢ã®ãã詳现ãªãã¥ãŒãæäŸããŸãã
ç§ãçŸåšåãçµãã§ããæ倧ã®APIãããžã§ã¯ãã¯ãã€ã®ãªã¹ã®Spotlightã§è¡ã£ãŠãããããžã§ã¯ãã§ãã ããã¯ãããã®ä¿³åªã«é¢ããããŸããŸãªæ å ±ãæããã«ãããã€ããŒã¡ãã£ã¢APIã§ãã ä»äºã¯ãæŒæãããžã§ã¯ããæ ç»ããã¬ããããã³ãã£ã¹ãã£ã³ã°æ¥çã§äœ¿çšããããã®ä»ã®ããŸããŸãªããŒã¿ã§æäŸãããŠããŸãã RESTãšããŠç¥ãããã¢ãŒããã¯ãã£ã¹ã¿ã€ã«ã§ãã®APIãæ§ç¯ããŠããŸããRESTãäœã§ããããå®å šã«èªèããŠããªãå Žåã¯ããµã³ã¯ãããã«ãã«ã¯ã§éå¬ãããDotNextã«ã³ãã¡ã¬ã³ã¹ã§ç§ã®ãã¬ãŒã³ããŒã·ã§ã³ã«ã¢ã¯ã»ã¹ããããã«ã€ããŠèª¿ã¹ãã ãã§ãã
HTTP APIãäœæããããã®ããŸããŸãªãã¿ãŒã³ããããŸã-RESTããããGraphQLããããSOAPãRPCãªã©ããããŸãã ããããç§ã«ãšã£ãŠãRESTã®æ倧ã®é åã¯ãRESTfulã¹ã¿ã€ã«ã®å¶éã«ãããAPIããµããŒãããå¿ èŠãããæŠå¿µãšæäœã®æ¥ç¶ãèªç¶ã«åŒ±ããªãããšã§ãã
-äžäœäºææ§ã«ãã£ãŠã殺ããããæãæåãªããã°ã©ã ã®1ã€ã¯IEã§ãã ãã®ãã©ãŠã¶ã«ã¯ã以åã®ããŒãžã§ã³ãšã®äºææ§ãç¶æããããã«å¿ èŠãªã¢ããªã±ãŒã·ã§ã³ãå€ãããŸããã ãã®åé¡ã¯ãEdgeãšåŒã°ããæ°ããã¢ããªã±ãŒã·ã§ã³ãè¿œå ããããšã§è§£æ±ºãããŸããããã®ã¢ããªã±ãŒã·ã§ã³ã¯æŽæ°ããããã¹ãŠã®æ°ããæšæºããµããŒãããŸãã åŸæ¹äºææ§ã®trapã«é¥ããªãããã«ããã«ã¯ïŒ ãã¶ããã¢ãžã¥ãŒã«ã䜿çšãã䟡å€ããããŸãããã¢ãžã¥ãŒã«ã¯ã¬ã€ã€ãŒã䜿çšããŸãããïŒ ãããã¯ãRESTful APIãService Oriented ArchitectureããŸãã¯ä»ã®äœãã䜿çšããŠãã©ããããããAPIã眮ãæããŸããïŒ
Dylan BeattyïŒãã£ãšåã«Webã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ãå§ããŸããã 圌ã¯Internet Explorerãç»å Žããæ°å¹Žåã«æåã®ããŒãžãæžããŸããã ãããŠãå¯äžã®ãã©ãŠã¶ãNCSA MosaicãšErwiseã ã£ããšãã Webã®æŽå²ãæ¯ãè¿ããšãçŸåšååšããWebãInternet Explorerã®ãããªãã®ã«ãã£ãŠã¢ãã«åããã圱é¿ãåããŠããããšã«æ°ä»ãã®ã¯é åçã§ãã ãããŠãããªãã¯çµ¶å¯Ÿã«æ£ããã§ãã Microsoftãææ°ããŒãžã§ã³ã®Windowsã«ãŸã£ããæ°ããEdgeãã©ãŠã¶ãŒãå°å ¥ããçç±ã®1ã€ã¯ãInternet Explorerã®äžäœäºææ§ãžã®åãçµã¿ããæ¢åã®IEã³ãŒãããŒã¹ã«åºã¥ãæ°ããWebæšæºã®å®è£ ãéåžžã«å°é£ã«ããããã§ãã
IEã«ãã®äžäœäºææ§ãååšããçç±ã®äžéšã¯ã2000幎é ã«äŒæ¥ã®ITã·ã¹ãã ã®éçºæ¹æ³ã«ããããªå€åããã£ãããšã§ãã
ãšã¯ã€ãã£ã³ã³ãããŒã«ããããã¯ãã¢ã«ãŠã³ãã£ã³ã°ãHRããããžã§ã¯ã管çãªã©ãããŸããŸãªã¿ã€ãã®ããžãã¹ãªãã¬ãŒã·ã§ã³ã«ç¬èªã®ã¢ããªã±ãŒã·ã§ã³ã䜿çšããŠããäŒæ¥ã¯ç¡æ°ã«ãããŸãã 1980幎代ãã1990幎代åé ã«ãããŠããããã®ã»ãšãã©ã¯äžå€®ã®ã¡ã€ã³ãã¬ãŒã ã·ã¹ãã ã䜿çšããåŸæ¥å¡ã¯ã¿ãŒããã«ãšãã¥ã¬ãŒã¿ã®ãããªãã®ã䜿çšããŠäžå€®ã®ãµãŒããŒã«æ¥ç¶ããŠããŸããã ãããã1990幎代åŸåã®ãããã³ã ã®æåã®æ³¢ã®åŸãäŒæ¥ã¯ã»ãšãã©ã®ã³ã³ãã¥ãŒã¿ãŒãWebãã©ãŠã¶ãŒãšãããã¯ãŒã¯æ¥ç¶ãåããå€ãã¡ã€ã³ãã¬ãŒã 端æ«ã¢ããªã±ãŒã·ã§ã³ãæ°ããWebã¢ããªã±ãŒã·ã§ã³ã«çœ®ãæããããšãã§ããããšã«æ°ä»ããŸããã
åœæã®Windowsã¯å€§ããªåžå Žã·ã§ã¢ãå ããŠãããã»ãšãã©ã®Windows PCã§Internet Explorerãããã©ã«ãã®ãã©ãŠã¶ãŒã§ãã£ããããå€ãã®çµç¹ã¯Internet Explorerã®ç¹å®ã®ããŒãžã§ã³ã§ã®ã¿åäœããã€ã³ãã©ãããã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããŸããã ActiveXãµããŒããªã©ã®ç¹å®ã®æ©èœãå©çšããããã«ããããè¡ãããšããããŸããã ããããå€ãã®å Žåãã¯ãã¹ãã©ãŠã¶ãã¹ããå®æœããå¿ èŠããªããšããäºå®ã®ããã«ã圌ãã¯ãéãç¯çŽããããã«ããããããšæããŸãã ããã¯ãããªã倧ããªåçšã¢ããªã±ãŒã·ã§ã³ã§çºçããŸããã 2011幎ã§ãã£ãŠããMicrosoft Dynamics CRMã¯Internet Explorer以å€ã®ãã©ãŠã¶ãŒããµããŒãããŠããŸããã§ããã
ãã®ãããInternet Explorerã§åäœããã¢ããªã±ãŒã·ã§ã³ã®äœæã«æéãšãéãè²»ãããå€ãã®äŒæ¥ããããŸãã ãããã®ã¢ããªã±ãŒã·ã§ã³ã¯ãWebæšæºã挞é²çãªæ¹åã䜿çšããŠäœæããããã®ã§ã¯ãªããåŸç¶ããŒãžã§ã³ãšã®äºææ§ãäœæããããšãããã®ã§ããããŸããããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§å®è¡ãããç¹å®ããŒãžã§ã³ã®ãã©ãŠã¶ãŒçšã«æ瀺çã«éçºãããŸããã ãŸããMicrosoftãInternet Explorerã®æ°ããããŒãžã§ã³ããªãªãŒã¹ãããã³ã«ããããã®ã¢ããªã±ãŒã·ã§ã³ã¯ãã¯ã©ãã·ã¥ãããäŒæ¥ã¯å€ãã€ã³ãã©ãããã¢ããªã±ãŒã·ã§ã³ã®æŽæ°ã«æè³ããããšãæãŸãããã¹ãŠããã©ãŠã¶ãŒã®ããã«ããŸããã ãããã話ã¯çµããã§ã¯ãããŸããã2017幎ã«ã¯ãMicrosoftã¯ãŸã IE11ãåºè·ããŠããŸããIE11ã¯ãIE9ãšã³ãžã³ã«åãæ¿ããäºæã¢ãŒããåããŠããŸãããIE7ã§ãããšãããŠãŒã¶ãŒãšãŒãžã§ã³ãæååãéä¿¡ããŸãã çŸåšãç§ãç¥ã£ãŠãããã¹ãŠã®äººãGoogle ChromeãŸãã¯Safariã䜿çšããŠããããµãŒãã£ã³ãããŠããŸãããåæã«ãå€ãã®äººã ã¯ãŸã ãã¹ã¯ãããã«IEã·ã§ãŒãã«ãããæã£ãŠããã®ã§ãããããã¬ã¬ã·ãŒã·ã¹ãã ã®1ã€ãå ¥åã§ããŸãã
ã ãã...ãã€ã¯ããœããããã®trapãã©ã®ããã«åé¿ã§ããã®ããšãã質åã«æ»ããŸãã å€ãã®æ©äŒããã£ããšæããŸãã ãŸãã¯ãæåã«ã¢ãžã¥ã©ãŒã¬ã³ããªã³ã°ãšã³ãžã³ã䜿çšããŠIEãäœæããåŸç¶ã®ããŒãžã§ã³ãé©åãªãšã³ãžã³ãéžæçã«å®è¡ããŠç¹å®ã®Webãµã€ããŸãã¯ã¢ããªã±ãŒã·ã§ã³ãã¬ã³ããªã³ã°ã§ããããã«ããŸãã MARQUEEã¿ã°ãActiveXãã©ã°ã€ã³ãªã©ã®ã¢ãããã¯ãµããŒããå®è£ ãã代ããã«ãåœæååšããŠããWebæšæºããµããŒãããããã«ãã£ãšåªåããããšãã§ããã§ããããããã«ããããããã®é£è§£ãªæ©èœããµããŒãããåŸã®é çãåé¿ã§ããŸãããŒãžã§ã³ã ããããããã¯ãã¹ãŠæå³ããããŸããã Internet Explorerã®æåã®ããŒãžã§ã³ãéçºãããšããWebæšæºãäžæµã§ãµããŒãããåªããã¢ããªã±ãŒã·ã§ã³ãäœæããã®ã§ã¯ãªããNetscape Navigatorã殺ããŠåžå Žã»ã¯ã·ã§ã³ã§åã€ããšãéèŠã§ããã ãããŠããã¯åããã
-誰ããæ°ããAPIãå°å ¥ããããšããŠãããšããŸãã 圌ã¯ããã€ãã®èŠä»¶ãåéããããŒãžã§ã³ãæäŸãããã£ãŒãããã¯ãåãåããŸãã ããã»ã¹ã¯ã·ã³ãã«ã«èŠããŸãã ããããéäžã§èœãšãç©Žã¯ãããŸããïŒ
ãã£ã©ã³ã»ããŒãã£ïŒãã€ãïŒ èŠä»¶ãå€æŽãããŸã-ããã¯äºå®ã§ãã ããªããç¯ãå¯èœæ§ãããæ倧ã®ééãã®1ã€ã¯ããããã®å€æŽãäºæž¬ããå°æ¥ãèŠè¶ããèšèšãè¡ãããšã§ãã çè«çã«ã¯ããã§ææãåŸãããå¯èœæ§ããããŸãããå€ãã®å Žåãå°æ¥ã®å€æŽãåãå ¥ããããšãããããããã«è€éãªãã¶ã€ã³ãæå ã«ãããŸãã å€ãã®å Žåãèœãšãç©Žã¯ããªããå¶åŸ¡ã§ããªããã®ã§ãã ããšãã°ãæ³åŸãå€ãããããŒã¿ãç°ãªãæ¹æ³ã§æäŸããå¿ èŠããããŸãã ãŸãã¯ãçµç¹å ã®ä»ã®ã·ã¹ãã ã«å€æŽãå ããããŸãã ãŸãã¯ãã¯ã©ãŠããã¹ãã£ã³ã°ãããã€ããŒã®1ã€ãããå¿ èŠãªæ©èœãå»æ¢ãããã«ããŽãªãŒã«ç§»è¡ããããšèšãããŸãã
å¯èœãªã€ã³ã¿ãŒãã§ãŒã¹ãªãã·ã§ã³ããã·ã³ãã«ã§äœ¿ãããããã®ãéžæãããããå®è¡ããŠæž¡ãããšãæåã§ãã APIãå®å®ããŠãã段éã«è¿ éã«é²ãããã«ãå€éšã®æè¡çãªè² åµã¯ãªããããŒã ã¯æ¬¡ã®ã¿ã¹ã¯ã«é²ãããšãã§ããŸãã ãã®ããããã®åŸäºæãã¬åé¡ãçªç¶çºçããå Žåããœãªã¥ãŒã·ã§ã³ã§äœ¿çšã§ããå®å®ããã³ãŒãããŒã¹ãšããã¹ãŠã解決ããããã«æéãšæ欲ãæã£ãŠããããŒã ãã§ããŸãã å¶ç¶ã«èœãšãç©Žã«åºäŒããªãå Žåã¯ãåã«ããã¯ãã°ã®æ¬¡ã®é ç®ã«é²ãããšãã§ããŸãã
-ããã§ã¯ãAPIã®ããŒãžã§ã³v1.0ããã³ã¢ãããŒãv1.1ããªãªãŒã¹ããŸããã ããããç§ãã¡ã®å€ãã¯ã httpïŒ//example.com/v1/testãšhttp://example.com/v1.1/testãŸãã¯ãã®ãããªãã®ã®äž¡æ¹ãäœæããŸãã ããªãã®æèŠã§ã¯ãéçºè ãv1.0ã«é¢ããŠv1.1 APIèšèšãæ¹åããã®ã«åœ¹ç«ã€ãã©ã¯ãã£ã¹ã¯äœã§ããïŒ
Dylan BeattyïŒã»ãã³ãã£ãã¯ããŒãžã§ãã³ã°ïŒSemVerïŒã®æŠå¿µãèªãã§ãã¡ãžã£ãŒããŒãžã§ã³ããã€ããŒããŒãžã§ã³ãããã³ãããããŒãžã§ã³ã®éããå®éã«ç解ããŠãã ããã SemVerã¯ã0.xãã0.1ã®éã§é倧ãªå€æŽãè¡ãã¹ãã§ã¯ãªããšè¿°ã¹ãŠãããããæãéèŠãªéšåã¯ãç¹å®ã®APIã®é倧ãªå€æŽãç解ããããšã§ãã
ããšãã°ãJSONãè¿ãHTTP APIã䜿çšããå Žåãäžè¬çãªéèŠã§ã¯ãªãå€æŽã¯ããªãœãŒã¹ã®1ã€ã«æ°ããããŒã¿ãã£ãŒã«ããè¿œå ããããšã§ãã ããŒãžã§ã³1.1ã䜿çšããã¯ã©ã€ã¢ã³ãã«ã¯è¿œå ãã£ãŒã«ãã衚瀺ããããã®ãã£ãŒã«ããæ倧éã«æŽ»çšã§ããããšãæåŸ ãããŸãããããŒãžã§ã³1.0ã䜿çšãã顧客ã¯èªèãããªãããããã£ãç¡èŠã§ããŸãã ããã¯ãAPIã®ããŒãžã§ã³ç®¡çãã©ã®ããã«ç®¡çãã¹ããã«ã€ããŠã®ãã1ã€ã®éåžžã«è¿ã質åã§ãã æãäžè¬çãªãœãªã¥ãŒã·ã§ã³ã®1ã€ã¯ãã«ãŒãã£ã³ã°ãä»ããŠURLãéä¿¡ããããšã§ã-api.example.com/v1.1ã®ä»£ããã«api.example.com/v1/
ãã ããRESTfulã·ã¹ãã ã®å¶éã«æºæ ããå Žåã¯ãããŒãžã§ã³ã®å€æŽãåºç€ãšãªããªãœãŒã¹ãŸãã¯ãã¥ãŒã®å€æŽãè¡šããã©ãããç解ããå¿ èŠããããŸãã URIã¯Uniform Resource Identifierã§ãããåããªãœãŒã¹ã«åããããã«äœ¿çšããURIãå®éã«å€æŽãã¹ãã§ã¯ãªãããšã«æ³šæããŠãã ããã
ããšãã°ããªãœãŒã¹api.example.com/images/monalisaããããŸãã ãã®ãªãœãŒã¹ãJPEGïŒAcceptïŒimage / jpegïŒãŸãã¯PNGïŒAcceptïŒimage / pngïŒãšããŠèŠæ±ãããããµãŒããŒã«ãã®ãªãœãŒã¹ã®ãã¬ãŒã³ããã¹ãè¡šçŸããããã©ããã確èªã§ããŸãïŒAcceptïŒapplication / jsonïŒ-ããã ãã§ãåãåºã«ãªããªãœãŒã¹ã®ç°ãªãè¡šçŸã®ã¿ã§ããããããã¯ãã¹ãŠåãURIãæã€å¿ èŠããããŸãã
ãŸãã¯ãããšãã°ãçµç¹ã§äœ¿çšãããŠããCRMã·ã¹ãã ãå®å šã«çœ®ãæããŸããããã®å Žåãã¯ã©ã€ã¢ã³ãã®ãããŒãžã§ã³1ãã¯å€ãCRMã·ã¹ãã ã§äœ¿çšãããŠããã¬ã³ãŒããè¡šãããããŒãžã§ã³2ãã¯åãã¯ã©ã€ã¢ã³ããè¡šããŸãããå®å šã«æ°ãããã©ãããã©ãŒã ã ãã®å Žåãããããããããç°ãªããªãœãŒã¹ãšèŠãªããç°ãªãURIãäžããããšãçã«ããªã£ãŠããŸãã
ããŒãžã§ãã³ã°ã¯æ³šæãå¿ èŠã§ãã æãç°¡åãªæ¹æ³ã¯ãäœãå€æŽããªãããšã§ãã
-.NET Core-ãã®APIã«ã€ããŠã©ãæããŸããïŒ
Dylan BeattyïŒ .NET Coreã¯2015幎ã«åããŠçºè¡šãããåœåã¯.NET Core 5.0ãšåŒã°ããŠããŸããã ããã¯ã.NET Frameworkããã³Common Language Runtimeã®åçŽåããã代æ¿æ段ã«ãªããšäºæ³ãããŠããŸããã .NET Coreãä»ã®ãã©ãããã©ãŒã ã«ç§»æ€ããããããããã«ããã¹ãŠã®æ¡ä»¶ãäœæããããšã¯çŽ æŽãããã¢ã€ãã¢ã§ããã 確ãã«ãåæã«ã.NET Coreã§éãããŠããAPIãšãã»ãšãã©ã®ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ãããŠãããæšæºãã®.NET / CLR APIãšã®éã«ã¯ãŸã ããªãã®éãããããŸãã
ããã¯ãç§ãèªãã ããšãããŸããŸãªäººã ãšã®äŒè©±ã«åºã¥ããåãªã解éã§ãããšæããŸããã¢ã€ãã¢ã¯ã.NET Coreãã¹ã¬ããããã¡ã€ã«ã·ã¹ãã ãžã®ã¢ã¯ã»ã¹ããããã¯ãŒã¯ã¢ã¯ã»ã¹ããã©ãããã©ãŒã ãã³ããŒãããã³ãªãŒãã³ãœãŒã¹ã³ãã¥ããã£ã¯ãã¢ãžã¥ãŒã«ãšããã±ãŒãžã®éçºãæ¢ã«éå§ããŠããããã®çµæãJavaã¯ã©ã¹ã©ã€ãã©ãªã.NET Frameworkãªã©ã®ãœãªã¥ãŒã·ã§ã³ãæäŸããæ©èœã¬ãã«ã«å°éããŸãã ååãšããŠãããã¯çŽ æŽãããã¢ã€ãã¢ã§ãããæªåŸªç°ã®ãããªãã®ãäœæããŸãããŠãŒã¶ãŒãªãã§ãã©ãããã©ãŒã çšã®ã©ã€ãã©ãªãäœæããã人ããã©ã€ãã©ãªãªãã§ãã©ãããã©ãŒã ã䜿çšããã人ã¯ããŸããã
ãã®ãããã¯ãã¹ãã©ãããã©ãŒã ã®.NETã«ã¯ããµããŒããããŠããããŸããŸãªãã©ãããã©ãŒã ã®ãŠãŒã¶ãŒãéçºè ãæåŸ ããã©ã€ãã©ãªãæäŸããæšæºAPIä»æ§ãå¿ èŠã§ãããšå€æãããŸããã ããã¯ã.NET Framework 4.6.1ã§æ¢ã«å®å šã«ãµããŒããããŠãã.NET Standard 2.0ã§ããã.NET Coreããã³Xamarinã®å°æ¥ã®ããŒãžã§ã³ã§å®å šã«ãµããŒããããäºå®ã§ãã ãã¡ããã.NET Core 1.1ã¯æ¢ã«ãªãªãŒã¹ãããŠãããæ£åžžã«åäœããŠããŸããWindowsãŸãã¯LinuxãŸãã¯macOSã䜿çšããŠããã«ãããããããCïŒWebã¢ããªã±ãŒã·ã§ã³ãäœæããããã«äœ¿çšã§ããããã«ãªããŸããã ãããã.NET Coreã®æ¬¡ã®ãªãªãŒã¹ã§ã¯ããã¬ãŒã ã¯ãŒã¯ãšããã±ãŒãžã®å€ãã®éçºè ãããââãžã§ã¯ãã.NET Coreã«ç§»è¡ããããšæãããã«ãªããéçºè ãçµç¹ãç¬èªã®ã¢ããªã±ãŒã·ã§ã³ãç°¡åã«ç§»è¡ã§ããããã«ãªããšæããŸãã
-APIã®æè»æ§ãšAPIã®ç²ŸåºŠã å€ãã®ç°ãªãã¿ã€ãã®å€ãååŸããæ©èœãåããAPIã¡ãœããèšèšãäœæã§ããŸãã ãã ãããã©ã¡ãŒã¿ãŒã«ããã€ãã®ã«ãŒã«ãæå®ããŠã¡ãœãããäœæã§ããŸãã äž¡æ¹ã®ãã¹ãæ£ããã§ãã ããã2ã€ã®å¯èœæ§ã®å¢çã¯ã©ãã«ãããŸããïŒ ãã€å³å¯ãªAPIãäœæããå¿ èŠãããããã€æè»ãªAPIãã¶ã€ã³ãäœæããå¿ èŠããããŸããïŒ
Dylan BeattyïŒã¡ãœããã·ã°ããã£ãæè»ãªAPIãå®è£ ãããšãã¯ãã¹ã¿ãã¯ã®ã©ããã«è€éããéä¿¡ããã ãã§ãã ã¹ããŒãã¹ãèŠã€ããããã®APIãäœæããDoSearchïŒSearchCriteriaåºæºïŒãšDoSearchïŒstring resortNameãstring countryCodeãint minAltitudeãint maxDistanceToSkiListïŒã®ãããããéžæãããšããŸãã
ãããã®ã¡ãœããã®æåã¯éåžžã«ç°¡åã«æ¡åŒµå¯èœã§ãã ã¡ãœããã®ã·ã°ããã£ãå€æŽããã«SearchCriteriaãªããžã§ã¯ãã®å®çŸ©ãæ¡åŒµã§ããŸãã ãã ãããã®å Žåãç¹å®ã®ã¡ãœãããå€æŽããã ãã§ãªããã·ã¹ãã ã®åäœãå€æŽããŸãã
å¯Ÿç §çã«ã2çªç®ã®DoSearchã¡ãœããã®ã·ã°ããã£ã«æ°ããåŒæ°ãè¿œå ã§ããŸãã CïŒãªã©ã®èšèªã䜿çšããå Žåã¯ãåŒæ°ã«ããã©ã«ãå€ãæå®ã§ããŸãã ãããŠãã¡ãœããã«æ°ããåŒæ°ãè¿œå ããŠãããããžã§ã¯ãå ã§äœãå£ãããšã¯ãããŸãããåæã«ããããã®åãåŒæ°ã«é©åãªããã©ã«ãå€ãèšå®ããŸãã
ããæç¹ã§ãAPIãŠãŒã¶ãŒãšéä¿¡ããAPIããµããŒãããæ€çŽ¢ãã©ã¡ãŒã¿ãŒãäŒããå¿ èŠããããŸãã ãããŠããããè¡ãã«ã¯ããã€ãã®æ¹æ³ããããŸãã NuGetããã±ãŒãžãšããŠã€ã³ã¹ããŒã«ãããã³ãŒããã䜿çšããã.NET APIãäœæããå Žåãã¡ãœãããšãã©ã¡ãŒã¿ãŒã«XMLã³ã¡ã³ãã䜿çšããããšã¯ãAPIã«ãªã¯ãšã¹ããè¡ããšãã«æå®ããå¿ èŠããããã®ããŠãŒã¶ãŒã«äŒããããã®åªããæ¹æ³ã§ãã APIãHTTPãµãŒãã¹ã®å Žåã SIRENãªã©ã®ãã€ããŒã¡ãã£ã¢åœ¢åŒã«æ³šæããŠãã ãããããã«ããããµããŒãããããã©ã¡ãŒã¿ãŒãšç¯å²ãæå®ã§ããŸãã
次ã®10幎ã§ãæ©æ¢°åŠç¿ã·ã¹ãã ã«ãã£ãŠé§åãããAPIã®å®å šã«ç°ãªãã«ããŽãªãç»å Žããäžè¬ã«åãå ¥ããããŠããå€ãã®APIèšèšã«ãŒã«ãé©çšãããªããªããšæããŸãã éåžžã®èšèªã§å¿ èŠãªãã®ãæå®ããã ãã®ã¹ããŒãã±ããæ€çŽ¢APIãçªç¶ååŸããŠãããŸã£ããé©ããŸããã ã¡ãœããã·ã°ããã£ããããããŸãã-DoSearchïŒãã¹ããŒã·ã£ã¬ãŒããã©ã³ã¹ãŸãã¯ã€ã¿ãªã¢ã1400m以äžã8ãããã«ãŒã ã§12人ãç ãã2018幎1æ18ã25æ¥ããå©çšå¯èœãïŒã®ãããªãã®ãåŒã³åºãã ãã§ããã³ã¢ã§ã¯ãã·ã¹ãã ããã¹ãŠãè¡ããŸãã ãããã®æ©æ¢°åŠç¿ã®éçºæ¹æ³ã¯åºæ¿çã§ãã ãããã圌ãã®ã¯ãªãšã€ã¿ãŒã¯ãããã«æ³šç®ãéããããã«ãéçºè ãšãã¶ã€ããŒã®ããã«ããã€ãã®èå³æ·±ãå€æŽãå ããããšèããŠããŸãã
ä»å¹Žããã£ã©ã³ããŒãã£ãŒã¯åã³ãã·ã¢ã蚪åãã5æã«ãµã³ã¯ãããã«ãã«ã¯ã§éå¬ãããDotNextã«ã³ãã¡ã¬ã³ã¹ã§è¬æŒããŸãããã®ããã 圌ã®æ°ããã¬ããŒããèãã ãã§ãªãã圌ã«è³ªåãããããã³ãã³.NETãŠãŒã¶ãŒã°ã«ãŒãã«æšæ¶ãããããããšãã§ããŸãã