åå ãã代ããã«
ããã°ã©ãã³ã°ã®dææããããŠããæè¿ãŸã§ãããã°ã©ã ã¯å®å šãªãã®ã§ãããæ©èœã®ã¿ãå®è¡ããç¬ç«ãããŠããããå®å šã«äœ¿çšã§ããç¶æ ã§ããã
ããããã¢ãã€ã«ããã€ã¹ããªããããžãã¯Webãµã€ãããœãŒã·ã£ã«ãããã¯ãŒã¯ã®åºçŸã«ãããç¶æ³ã¯å€ããå§ããŸããã çŸåšããªã³ã©ã€ã³ã«ãªããªãããã°ã©ã ã¯ãFacebookã«äœããèŒããæ¹æ³ãç¥ãããäžè¬çã«ã¯åç¬ã§åäœããå®è³ªçã«çåœæš©ã¯ãããŸããã Microsoft Office 2013ãªã©ã®ãããã§ãã·ã§ãã«ããŒã«ã§ãããããã¥ã¡ã³ãå ±æã®ããã®ã¯ã©ãŠãã¹ãã¬ãŒãžããµããŒããå§ããŸããã
äžçã¯å€åããŠããŸãã çŸåšããœãããŠã§ã¢ã売ã£ãŠãéã皌ãããã«ãããªãã¯ããªãèªèº«ã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãŸãã¯ã¢ã³ããŠã€ã«ã¹ãæžãå¿ èŠããªããå€ãã®æéãšãªãœãŒã¹ãè²»ãããŠããŸãã ããªãã®åŠ»ã«å°ããã ãã§ååã§ãã ãããã£ãŠãä»æ¥ã®å€ãã®äººã ã¯ãç¬èªã®éªæªãªé³¥ãåãæããäœæãã iOS ã Android ã Windows Phoneã®éçºãç 究ããããšã倢èŠãŠããŸã ã
ã¢ããªã±ãŒã·ã§ã³ãäœæããããããã®ã¹ãã¢ã§å ¬éãããšããŸãã ãã¹ãŠãé 調ã§ãå©çãäžããŸããããã£ãšæ¬²ããã§ãã ãŠãŒã¶ãŒããŒã¹ãæ¡å€§ããã«ã¯ãä»ã®ãã©ãããã©ãŒã çšã®ã¢ããªã±ãŒã·ã§ã³ãäœæããå¿ èŠãããããšãç解ããŠããŸãã ããã¯æåã®åŸ ã¡äŒããååšããå Žæã§ããã¢ããªã±ãŒã·ã§ã³ãåãããã«åäœããå€èŠ³ïŒããã³äºå®ã§ã¯ãªãïŒãšããã°ã©ãã³ã°èšèªã®ã¿ãç°ãªãå Žåã«èšè¿°ããã³ãŒãã®éãæå°éã«æããæ¹æ³ã¯ãããŸããïŒ
ãã®è³ªåã«å¯Ÿããçãã¯ããã¡ãã·ã§ããã«ãªæãçãŠååãå€ããè人OOPã§ãã ã¢ããªã±ãŒã·ã§ã³ã³ãŒãããç¹å®ã®äžè¬çãªãµãŒãã¹ã«äžè¬çãªããžãã¯ã䜿çšãããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ãæ¥ç¶ã§ããããã«ãã®ãµãŒãã¹ãã€ã³ã¿ãŒãããã«é 眮ããŠãããç¹å®ã®ãã©ãããã©ãŒã ã«ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãå®è£ ããå ŽåããµãŒããŒããã®ããŒã¿ã衚瀺ããããã®ã³ãŒããèšè¿°ããã ãã§ãã ããªãã¿ã§ããã ããã¯MVCãã¿ãŒã³ã«éåžžã«äŒŒãŠããŸãã ããã§ãModelã¯ããŒã¿ãéåä¿¡ããã€ã³ã¿ãŒãããäžã®ãµãŒãã¹ã§ãããViewãšControllerã¯ã¢ãã€ã«ããã€ã¹ã«å®è£ ãããŠãããå¯èœãªéãç°¡çŽ åã§ããŸãã ãã®ãããªãµãŒãã¹ã®ããã€ã¹ã®ã¢ãã«ãšããŠãä»æ¥ã§ã¯ãããããRESTful APIïŒæšæºã®HTTPã¡ãœãããä»ããŠã¢ã¯ã»ã¹ã§ããããã°ã©ã ã€ã³ã¿ãŒãã§ã€ã¹ïŒããŸããŸã䜿çšããŠããŸãã
ãããŠããã¹ãŠãè¯ãèŠããããã§ããã§ã«è§£æ±ºçãèŠã€ãã£ãŠããããã§ãã ãã ããèªåã§ãµãŒããŒã«ããã¯ãšã³ããµãŒãã¹ãå±éãå§ãããšåé¡ãå§ãŸããŸãã ç§ã¯ããã°ã©ããŒã§ãããµãŒããŒã®ã€ã³ã¹ããŒã«ãšæ§æã«é¢ããŠã¯ãããã«äžå®ã«ãªããŸãã ãŸããããã¯å®å šã«æ°ããç¥èã§ããããã¹ãŠãæ£åžžã«æ©èœããããã«ç 究ããå¿ èŠããããŸãã 第äºã«ãè² è·ãæ»æã®å¢å ã«äŒŽã£ãŠãã¹ãŠãæ£åžžã«æ©èœããæ£åžžã«æ©èœããããã«ã¯ããããããã«æç¶çã«åžãå¿ èŠããããŸãã ãµãŒããŒã«ç ©ããããããšãé²ããPHPãä»ã®äœããäºåã«ã€ã³ã¹ããŒã«ãããã¹ããèŠã€ããããšãã§ããŸãã ãã ããå®å šãªREST APIãå®è£ ããã«ã¯ãå¿ èŠãªãã¹ãŠã®ãµãŒããŒã€ãã³ããã³ãã©ãŒãåå¥ã«å®è£ ããå¿ èŠããããšããåé¡ãæ®ããŸãã ãããŠãããã¯åã³ããªãã®æ¥œããæéãåããäžå¿ èŠãªãã®ã«è²»ãããŸãã
ãªãç§ã¯ãããã¹ãŠã§ããïŒ
ç§èªèº«ãé·ãéãã®è³ªåã«æ©ãŸãããŠããŸããããã¢ããªã±ãŒã·ã§ã³ã®ãµãŒããŒããã¯ãšã³ããã©ã®ããã«æŽçã§ããŸããã æåã¯ãWCFãµãŒãã¹ã䜿çšããŠç¬èªã®äœããæžããŸããã 次ã«ã ASP.NET Web APIãç»å ŽããŸããã ããããä»æ¥ã¯äœãä»ã®ããšã«ã€ããŠã話ããããšæããŸãã 䜿ãããããã®ã®ãã¡ã³ãšããŠãç§ã¯Windows Azureã¯ã©ãŠããã©ãããã©ãŒã ã«ç»å Žããæ¯èŒçæ°ãããµãŒãã¹ãããæããããšãã§ããŸããã§ããã ãã®ãµãŒãã¹ã®ååã¯ãWindows Azureã¢ãã€ã«ãµãŒãã¹ã«ã¹ã¿ã APIã§ãã
ãã®ãµãŒãã¹ã¯ãWindows Azureã¢ãã€ã«ãµãŒãã¹ã®ä»ã®äŸ¿å©ãªæ©èœãšãšãã«ãPaaSãœãªã¥ãŒã·ã§ã³ã§ãããã¯ã©ãŠãããŒã¹ã®RESTful APIãè¿ éã«å±éããæ©èœãæäŸããŸããããã«ã¯ãä»»æã®èšèªããã³ãã©ãããã©ãŒã ã®ããã°ã©ã ããã¢ã¯ã»ã¹ã§ããŸãã ãã®ãœãªã¥ãŒã·ã§ã³ã®åºç€ã¯ãæ°ãããã®ã§ã¯ãªããããã人æ°ã®ããNode.jsãã¯ãããžãŒã§ããã ã«ã¹ã¿ã APIã¯ããã¹ãŠã®çµæã䌎ãå®å šã«æ©èœããNode.jsã¢ããªã±ãŒã·ã§ã³ã§ãã劥åã®ãªãå®å šãªãœãªã¥ãŒã·ã§ã³ã§ãã ãããŠã3ã€ã®äººæ°ã®ããã¢ãã€ã«ãã©ãããã©ãŒã ãã¹ãŠã§ãã€ãã£ãSDKã䜿çšããããã«ãã€ãã£ãSDKãäœæããããšããäºå®ãèæ ®ãããšããã®ãœãªã¥ãŒã·ã§ã³ã¯ããã«èå³æ·±ããã®ã«ãªããŸãã
ããã«ãã®ããŒãã§ã¯ãWindows Azureã§ã¯ã©ãŠãããã¯ãšã³ããäœæããŠäœ¿çšãéå§ããã¢ãã€ã«ããã€ã¹ããã¯ã©ãŠãããã¯ãšã³ãã«ã¢ã¯ã»ã¹ããæ¹æ³ã«ã€ããŠèª¬æããŸãã åãæ¿ããªãã§ãã ããïŒ
ã¯ã©ãŠãããã¯ãšã³ãã®äœæ
Windows Azureã®ä»ã®ãµãŒãã¹ãšåæ§ã«ãã¯ã©ãŠã管çããŒã¿ã«ããã¯ã©ãŠãããã¯ãšã³ããäœæããŸã ã ãŸããã¢ãã€ã«ãµãŒãã¹ãäœæããå¿ èŠããããŸããããçš®ã®æ£æ°ãªååãèãåºããŸãã

次ã«ãã¢ãã€ã«ãµãŒãã¹ããŒã¿ãä¿åããSQLããŒã¿ããŒã¹ãéžæããå¿ èŠããããŸãã 20Mbã®ç¡æã³ããŒãäœæãããªãã·ã§ã³ããããŸãã ãã¹ãã®æ©äŒã®ããã«-ç®ã®ããã«ååã ãããŠãããªããããã奜ãã°ããã€ã§ãããæ·±å»ãªæ±ºå®ã«ã¢ããã°ã¬ãŒãã§ããŸãã
次ã®ç¢å°ãã¯ãªãã¯ããŠããŒã¿ããŒã¹ãµãŒããŒã®ãã©ã¡ãŒã¿ãŒãå ¥åããåŸïŒæ°ãããµãŒããŒãäœæããããæ¢åã®ç®¡çè ã®ãŠãŒã¶ãŒå/ãã¹ã¯ãŒãããã³ãã®ä»ã®éå±ã䜿çšïŒãæ°ããã¢ãã€ã«ãµãŒãã¹ãã¯ã©ãŠãã«äœæããå§ããŸãã ããã¯éåžžã1åæªæºã§éåžžã«è¿ éã«çºçããŸãã ãµãŒãã¹ãäœæãããŠããã«å ¥ããšã次ã®ãããªãŠã£ã³ããŠã衚瀺ãããŸãã

ãããèŠããŠãããŠãã ãããããã¯ç§ãã¡ã«ãšã£ãŠããã«åœ¹ã«ç«ã€ã§ãããã
APIã®äœæ
æåã®ã¯ã©ãŠãAPIãäœæããã«ã¯ã[API]ã¿ãã«ç§»åããŠã[ã«ã¹ã¿ã APIã®äœæ]ãã¿ã³ãã¯ãªãã¯ããŸãã

以åã«Windows Azureã¢ãã€ã«ãµãŒãã¹ã䜿çšããããšãããå Žåã次ã®ãŠã£ã³ããŠã¯ããªãã¿ã®ãã®ã§ãã å°æ¥ã®APIã®ååãšãããŸããŸãªã¡ãœãããžã®4ã€ã®ã¢ã¯ã»ã¹ã¬ãã«ã®ãããããæå®ããå¿ èŠããããŸãã ãã¹ãŠãããã©ã«ãã®ãŸãŸã«ããŠãèªèšŒãã©ã¡ãŒã¿ãŒãæã€ã¯ã©ã€ã¢ã³ãã®ã¿ãAPIã«æ¥ç¶ã§ããããã«ããŸãã

æ°ããAPIãäœæãããããç·šéãéå§ã§ããŸãã æåã«ã次ã®ãããªã¹ã¯ãªããã衚瀺ãããã¯ãã§ãã

æè²/ãã¹ãã®ç®çã§ã次ã®ããã«å€æŽããããšããå§ãããŸãã

ãã®å Žåã®äž»ãªå€æŽç¹ã¯ãPOSTãªã¯ãšã¹ããã³ãã©ãŒããŒã¿ãåçŽãªæååãšããŠè¿ããå§ããå€æ°ãGETã«è¿œå ããããã®ãªããžã§ã¯ãã«è€æ°ã®ãã£ãŒã«ããããããšã§ãã ããã¯ãããŒã¿ãæäœããããŸããŸãªå¯èœæ§ã瀺ãããã«ã説æã®ããã«è¡ããŸããã
APIã®äœ¿çš
ãã®èšäºã§ã¯ãWindows Azureã¢ãã€ã«ãµãŒãã¹ãæäŸããŠããããã¹ãã¢ããªã±ãŒã·ã§ã³ã䜿çšããŸãã ãããè¡ãã«ã¯ã[ã¯ã€ãã¯äœæ]ããŒãžïŒããã¯ã¯ã©ãŠããšã¢ã€ã³ã³ãç¹ç¯ããŠããããŒãžïŒã«æ»ãã[Windows Phone 8]ãéžæããŸãïŒè±å¯ãªéžæã«æ³šæããŠãã ããïŒã[æ°ããWindows Phoneã¢ããªã®äœæ]ãã¯ãªãã¯ããŸãã

å¿ èŠãªãã¬ãŒãïŒTodoItemïŒãäœæãã[ããŠã³ããŒã]ãã¿ã³ã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ãããŠã³ããŒãããåŸãVisual Studioã§éããŸãã
ãŸãã2ã€ã®ããšã«èå³ããããŸãã ãã¡ã€ã«App.xaml.csã«ã¯ã次ã®ãããªè¡ããããŸãã
public static MobileServiceClient MobileService = new MobileServiceClient( "https://mva-test-api.azure-mobile.net/", "___" );
ãã®ãã£ãŒã«ãã䜿çšããŠãæ°ããäœæããã¢ãã€ã«ãµãŒãã¹ãšéä¿¡ããŸãã ãããŸããªæåã®ã»ããã¯ããµãŒãã¹ã®åã ã®ããŒã§ããApplicationKeyã§ãã
ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããŠãå°ãªããšããã®å€èŠ³ãèŠãŠã¿ãŸãããã

ãŸããããã¯æ°èäŒæ¥ã®ãããã§ã¯ãããŸããããã¹ã¿ãŒãã«ã¯æªããããŸããã è¿œå ã®ããžãã¯ãä»äžããŠãAPIã¡ãœãããåŒã³åºããŸãããã MainPage.xaml.csãã¡ã€ã«ã«ç§»åããŸãã 圌ããã[ä¿å]ãã¿ã³ãã¯ãªãã¯ãããšããµãŒãã¹ãžã®ã¢ã¯ã»ã¹ãçºçãããã®åŸãçµæããããã°ã³ã³ãœãŒã«ã«åçŽã«æžã蟌ãŸããããšã確èªããããšæããŸãã ãããè¡ãã«ã¯ãInsertTodoItemã¡ãœããã®æåŸã«æ¬¡ã®ã³ãŒããè¿œå ããŸãã
// POST var result = await App.MobileService.InvokeApiAsync("CoolAPI", null, HttpMethod.Post, null, null); Debug.WriteLine(result.StatusCode); var stringData = await result.Content.ReadAsStringAsync(); Debug.WriteLine(stringData); // GET var resultJson = await App.MobileService.InvokeApiAsync("CoolAPI", HttpMethod.Get, null); Debug.WriteLine(resultJson);
ãã®ã³ãŒãã®ã¡ã€ã³ã¡ãœããã¯ãInvokeApiAsyncãšåŒã°ããŸãã 圌ã¯APIã¡ãœããã®åŒã³åºããæ åœããŠããŸãã ãã®ã¡ãœããã¯ãªãŒããŒããŒããããç°ãªããã©ã¡ãŒã¿ãŒã®ã»ãããåããŠããŸãã ãã®äŸã¯ãPOSTã®å Žåãæ倧5ã€ã®ãã©ã¡ãŒã¿ãŒãæž¡ããGETã®å Žåã3ã€ã ããæž¡ãããšã瀺ããŠããŸããããã¯ãPOSTã®ã¡ãœãããéåžžã®æååã«ãªãããã«èšèšãããŠããããã§ãïŒããã¯ãšã³ãã§ã®ã¹ã¯ãªããã®å®è£ ãæãåºããŠãã ããïŒã GETã䜿çšãããªãã·ã§ã³-JSONãªããžã§ã¯ããæäœããïŒçµæã¯Newtonsoft.Jsonã«ãªããŸã ïŒã
ã¢ããªã±ãŒã·ã§ã³ãèµ·åããŠ[ä¿å]ãã¿ã³ãã¯ãªãã¯ãããšãã¢ããªã±ãŒã·ã§ã³ã®ãããã°ã³ã³ãœãŒã«ã«æ¬¡ã®ãããªãã®ã衚瀺ãããŸãã

圌ãã¯ã©ãã§ãã
Windows Azureã³ã³ãããŒã«ããã«ã®[ã¯ã€ãã¯äœæ]ããŒãžã§ã¢ããªã±ãŒã·ã§ã³ã®çš®é¡ãéžæããå¯èœæ§ã«æ³šæãæãã ãã§ã¯ãããŸããã å®éãã¢ãã€ã«ãµãŒãã¹ãæäœããããã®ãã€ãã£ãSDKã¯ãWindowsããã€ã¹çšã ãã§ãªãäœæãããŠããŸãã ãããã®ã©ã€ãã©ãªã¯iOSãšAndroidã®äž¡æ¹ã§ãªãªãŒã¹ãããŠãããããããããã¹ãŠã®ãã©ãããã©ãŒã ã§åããã®ã䜿çšã§ããŸãã 以äžã¯ãäŸãšã»ãŒåãããšãè¡ãObjectiveCã³ãŒãã®äŸã§ãã
[self.client invokeAPI:@"CoolAPI" data:nil HTTPMethod:"POST" parameters:nil headers:nil completion:^(NSData *result, NSHTTPURLResponse *response, NSError *error) { NSLog(@"%i", response.statusCode); NSString *stringData = [[NSSatring alloc] initWithData:result encoding:NSUTF8StringEncoding]; }];
ã芧ã®ãšãããè©æ¬ºã®ãªããã¯ãªãŒã³ãªãObjectiveCã AndroidãWinRTãããã³WebããŒãžã§ã³ïŒHTMLããã³JavaScriptïŒã§ãåæ§ã§ãã
次ã¯äœã§ãã
åœåãWindows Azureã¢ãã€ã«ãµãŒãã¹ã®ãµãŒããŒåŽã³ãŒãã®ãã¹ãŠã®æ©èœã«ã€ããŠäžåºŠã«1ã€ã®èšäºã®ã¿ãæžãäºå®ã§ããããè³æãå€ãããŸãã ããã§çµããã§ãã次ã®ããŒãã§ã¯ãGitã䜿çšããŠããŒã ã®ã¯ã©ãŠãããã¯ãšã³ãã§äœæ¥ããæ¹æ³ã«ã€ããŠèª¬æããŸãã ãŸããäžè¬çãªã¹ã¯ãªãããšNPMããã±ãŒãžã䜿çšããŠæ©èœãæ¡åŒµããæ¹æ³ã«ã€ããŠã説æããŸãã