æ¬æ¥ã¯ãAPIã®èšèšãšé¢é£ããèœãšãç©Žã«é¢ããèå³æ·±ãèšäºãæäŸããããšæããŸãã ã©ããã£ãŠããã«åºäŒã£ãã®ãèããªãã§ãã ãã;åµé çãªæ€çŽ¢ã¯éåžžã«éç·åœ¢ã®åé¡ã§ãã
èªæžã楜ãã
埩ç¿
APIãèšèšããéã«èæ ®ãã¹ãå€ãã®èŠçŽ ããããŸãã ã»ãã¥ãªãã£ãäžè²«æ§ãç¶æ 管çãã¹ã¿ã€ã«ã ãã®ãªã¹ãã¯ç¡éã®ããã§ãã ãã ããèŠèœãšãããã¡ãªèŠçŽ ã1ã€ãããŸããããã¯èŠæš¡ã«é¢ãããã®ã§ãã APIãæåããèšèšãããšãã«ã·ã¹ãã ã®èŠæš¡ãèæ ®ãããšãåŸã§ïŒã·ã¹ãã ãæé·ãããšãïŒæ°çŸæéã®äœæ¥æéãç¯çŽã§ããŸãã
ã¯ããã«
ã¢ããªã±ãŒã·ã§ã³ããã°ã©ãã³ã°ã€ã³ã¿ãŒãã§ã€ã¹ïŒAPIïŒãæ§æãããã®ãå®åŒåããã®ãé£ããå ŽåããããŸãã æè¡çãªèŠ³ç¹ããèŠããšãä»ã®ããã°ã©ããŒã®ã³ãŒãã«ãã£ãŠåŒã³åºãããé¢æ°ã¯ãã¹ãŠãAPIã«èµ·å ããå¯èœæ§ããããŸãã ã©ã®ã³ãŒããAPIãããã«ããããã«ã€ããŠã®è°è«ã¯ãã®èšäºã®ç¯å²ãè¶ ããŠãããããAPIã¯æãåçŽãªé¢æ°ã§ãããšæ³å®ããŸãã
ãã®èšäºã§ã¯ãäž»ãªããŒãã説æããããã ãã®ç°¡åãªäŸãç¹å¥ã«éžæããŸããã CïŒã®é¢æ°ã䜿çšãããŸããããããã§æŠèª¬ããåºæ¬ååã¯ãã»ãŒãã¹ãŠã®èšèªããã¬ãŒã ã¯ãŒã¯ããŸãã¯ã·ã¹ãã ã«é©çšã§ããŸãã ãã®èšäºã®ããŒã¿æ§é ã¯ãå€ãã®ç£æ¥çšããŒã¿ããŒã¹ã§äœ¿çšãããŠããäžè¬çãªãªã¬ãŒã·ã§ãã«ã¹ã¿ã€ã«ã§ã¢ãã«åãããŠããŸãã ç¹°ãè¿ããŸãããäŸã¯èª¬æãšããŠã®ã¿æžãããŠãããæšå¥šäºé ãšèŠãªãã¹ãã§ã¯ãããŸããã
å¿ èŠæ¡ä»¶
顧客åãã®æãåçŽãªæ³šæåŠçã·ã¹ãã ãäœæããŠããã3ã€ã®äž»èŠãªã¯ã©ã¹ïŒãŸãã¯å¿ èŠã«å¿ããŠãããŒã¿æ§é ãïŒããã§ã«å®çŸ©ããŠãããšããŸãã Customerã¯ã©ã¹ã«ã¯Addressã¯ã©ã¹ã®ãå€éšããŒãïŒããŒã¿ããŒã¹çšèªïŒããããOrderã¯ã©ã¹ã«ã¯Addressã¯ã©ã¹ãšCustomerã¯ã©ã¹ã®å€éšããŒããããŸãã ããªãã®ä»äºã¯ã泚æã®åŠçã«äœ¿çšã§ããã©ã€ãã©ãªãäœæããããšã§ãã ãã®å Žåã®æåã®ããžãã¹ã«ãŒã«ïŒé¡§å®¢ïŒé¡§å®¢ïŒã®HomeAddressç¶æ ã¯ã泚æã®BillingAddressç¶æ ãšåãã§ããå¿ èŠããããŸãã çç±ãèããªãã§ãã ãããããžãã¹ã«ãŒã«ã¯éåžžãç¥çã«ç解ãããŠããŸãã:)
public class Address { public int AddressId { get; set; } public string Street { get; set; } public string City { get; set; } public string State { get; set; } public string Zipcode { get; set; } } public class Customer { public Address HomeAddress { get; set; } public int CustomerId { get; set; } public int HomeAddressId { get; set; } public string CustomerName { get; set; } } public class Order { public Customer MainCustomer { get; set; } public Address ShippingAddress { get; set; } public Address BillingAddress { get; set; } public int OrderId { get; set; } public int CustomerId { get; set; } public int ShippingAddressId { get; set; } public int BillingAddressId { get; set; } public decimal OrderAmount { get; set; } public DateTime OrderDate { get; set; } }
å®è£
2ã€ã®ãã£ãŒã«ããåããã©ããã確èªããããšã¯ãæããã«ç°¡åãªã¿ã¹ã¯ã§ãã äžåžã«æéãäžãããã®ã§ã10åãããããã«è§£æ±ºçãäœæããŸããã VerifyStatesMatché¢æ°ã¯ãåŒã³åºãå ãããžãã¹ã«ãŒã«ãå®è¡ãããŠãããã©ãããå€æã§ããããŒã«å€ãè¿ããŸãã ã©ã€ãã©ãªãããã€ãã®ç°¡åãªãã¹ãã§å®è¡ããã³ãŒãã®å®è¡ã«å¹³å50ããªç§ãããããšã確èªããŸãã äžåžã¯éåžžã«åãã§ãããªãã®ã©ã€ãã©ãªãä»ã®éçºè ã«æäŸããã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšããŸãã
public bool VerifyStatesMatch(Order order) { bool retVal = false; try { // , 25 . Customer customer = SomeDataSource.GetCustomer(order.CustomerId); // , 25 . Address shippingAddress = SomeDataSource.GetAddress(order.ShippingAddressId); retVal = customer.HomeAddress.State == shippingAddress.State; } catch (Exception ex) { SomeLogger.LogError(ex); } return retVal; }
åé¡
ç¿æ¥ãä»äºã«æ¥ããšãã¢ãã¿ãŒã«ã¹ããã«ãŒããããŸãããæ©æ¥ã«ç§ã®ãšããã«æ¥ãŠãã ãã-ã·ã§ããã ããªãã¯ãæšæ¥ããªããããªãã®å³æžé€šã§éåžžã«ããŸããã£ãã®ã§ãä»æ¥äžåžãããªãã«ããã«æ·±å»ãªä»äºãä»»ããããšã«ããããšãç解ããŸãã ããããããã«ã³ãŒãã«é倧ãªåé¡ãããããšãããããŸããã
ããªã ïŒãã¯ããããããŸããã·ã§ããã©ãããã®ïŒ
ããŒã ïŒããã¯ããªãã®ã©ã€ãã©ãªã§ããããããã³ãŒãã«ç¶ç¶çãªåé¡ããããŸãïŒ
ããªã ïŒäœïŒ ã©ããã£ãŠïŒ
ããã ïŒããã¯ã¢ã«ãŽãªãºã ãé ããããšèšãããžã§ã³ã¯ãã¹ãŠãæ£ããæ©èœããŠããªããšäžæºãèšããã¹ãã£ãŒãã¯ããèšããŸãããããªããžã§ã¯ããžã®åç §ã¯ãªããžã§ã¯ãã®ã€ã³ã¹ã¿ã³ã¹ã瀺ããŠããªãã
ããªã ïŒããããªããæšæ¥ãã¹ãããŠããã¹ãŠãé 調ã ã£ã
ããŒã ïŒäœãèããããããŸããã è¡ã£ãŠç解ããŠãã ããïŒ
ãã®æ¥ã¯æé«ã®ã¹ã¿ãŒãã§ã¯ãããŸãããïŒ ç§ã«ã¯ãã»ãšãã©ã®éçºè ãåæ§ã®ç¶æ³ã«åºããããããšãããããã§ãã ããªãã¯ã©ã€ãã©ãªããå®ç§ã«ãæžãããšæã£ãŠããŸããããããã¯ããããã®åé¡ããããããŸããã ãããããOneãããManyãããZeroããããã³ãNothingããäœã§ããããæ£ããç解ããã°ãAPIãååã®æåŸ ã«å¿ããŠããªãå Žæãåºå¥ããããšãã§ããŸãã
äž
en.wikipedia.org/wiki/The_Matrix
è¡åãžã®æåã®ã¬ã€ãã¯ãã1ããšã¯äœãããããŠãããã©ãæ±ãããç解ããããšã§ãã ã€ãŸããAPIã¯ãããã®å Žåã§ããäºæãããå ¥åã®äžéšããšã©ãŒãªãã§åŠçããå¿ èŠããããŸãã ãã®ãããªãšã©ãŒã¯çè«çã«ã¯å¯èœã§ãããåŒã³åºãå ã«å ±åããå¿ èŠã¯ãããŸããã ãããã¯æããã§ã¯ãªãã§ããïŒããšæããããããŸããã ããŠãäŸãèŠãŠãOrderã®åŠçäžã«çºçããå¯èœæ§ã®ãããšã©ãŒãèŠãŠã¿ãŸãããã
Customer customer = SomeDataSource.GetCustomer(order.CustomerId); Address shippingAddress = SomeDataSource.GetAddress(order.ShippingAddressId); // customer.HomeAddress null? retVal = customer.HomeAddress.State == shippingAddress.State;
äžèšã®ã³ã¡ã³ãããæãããªããã«ãHomeAddressããããã£ãããŒã¿ãœãŒã¹ããæ£ããããŒãããããšæ³å®ããŠããŸãã 99.99ïŒ ã®ã±ãŒã¹ã§ã¯ãããªãå¯èœæ§ããããŸãããçã«ä¿¡é Œã§ããAPIã¯ããããèµ·ãããªãå Žåã«ããã®ãããªã·ããªãªãèæ ®ããå¿ èŠããããŸãã ããã«ãèšèªã«ãã£ãŠã¯ããããã®ããããã£ã®ãããããæ£ããããŒããããªãå Žåã2ã€ã®Stateããããã£ã®æ¯èŒã倱æããå ŽåããããŸãã ãã®å Žåãåãåãããšãã§ããå ¥åããŸãã¯å¶åŸ¡ããŠããªãã³ãŒãããæœåºãããããŒã¿ã«ã€ããŠäœãç¥ããªãããšãéèŠã§ãã
ããã¯æãåçŽãªäŸãªã®ã§ãã³ãŒããä¿®æ£ããŠå ã«é²ã¿ãŸãããã
Customer customer = SomeDataSource.GetCustomer(order.CustomerId); Address shippingAddress = SomeDataSource.GetAddress(order.ShippingAddressId); if(customer.HomeAddress != null) { retVal = customer.HomeAddress.State == shippingAddress.State; }
ãããã
msdn.microsoft.com/en-us/library/w5zay9db.aspx
äžèšã®ã·ããªãªã«æ»ããŸãã ãããšè©±ãå¿ èŠããããŸãã ããã¯ãã³ãŒããé ããšæå¥ãèšããŸãããã50ããªç§ã®å€ã¯ããã®ã¢ãŒããã¯ãã£ãåããã·ã¹ãã ã§äºæ³ãããæéãšäžèŽããŠããŸããã ããããããã¯1ã€ã®ããã±ãŒãžã§æ倧ãŠãŒã¶ãŒã®100件ã®æ³šæãåŠçããããããããµã€ã¯ã«ã§ã¯ã¡ãœãããå®äºããã®ã«5ç§ããããŸãã
// : foreach(Order order in bobsOrders) { ... bool success = OrderProcess.VerifyStatesMatch(order); .... }
ããªã ïŒãããã©ãããŠç§ã®ã³ãŒããé ããããšæã£ãã®ïŒ 泚æã®åŠçã«ãããæéã¯ããã50ããªç§ã§ãã
Bob ïŒç§ãã¡ã®é¡§å®¢ã¯Acme Inc.ã§ãã ããã泚æãã§ããã ãæ©ãåŠçããå¿ èŠããããŸãã 100件ã®æ³šæãåŠçããå¿ èŠãããããã5ç§ã¯é·ãããŸãã
ããªã ïŒããã泚æããããã§åŠçããå¿ èŠãããããšãç¥ããŸããã§ããã
ãã ïŒãŸããããã¯Acmeã ãã®ããã§ãã圌ãã¯ç§ãã¡ã®æ倧ã®ã¯ã©ã€ã¢ã³ãã§ãã
ããªã ïŒAcmeãããã泚æã«ã€ããŠã¯äœãèšããªãã£ãã
ãã ïŒããªãã®ã³ãŒãã¯äžåºŠã«è€æ°ã®æ³šæãå¹ççã«åŠçãã¹ãã§ã¯ãããŸãããïŒ
ããªã ïŒãã...ã¯ãããã¡ããã
äœãèµ·ãã£ãã®ãããããŠã³ãŒããããããé ãããããšæãããçç±ã¯æããã§ãã AcmeããããåŠçã«ã€ããŠã¯äœãèšãããŸããã§ããã Bobã«ãŒãã¯éåžžã®Customerã¯ã©ã¹ãããŒãããã»ãšãã©ã®å ŽååãAddressã¬ã³ãŒãã100åããŒãããŸãã ãã®åé¡ã¯ã1ã€ã ãã§ã¯ãªããäžé£ã®æ³šæãåãå ¥ããããã«ããã€ãã®åçŽãªãã£ãã·ã¥ãè¿œå ãããšç°¡åã«è§£æ±ºã§ããŸãã CïŒã®paramsããŒã¯ãŒãã¯ããŸãã«ãã®ãããªç¶æ³ã®ããã«ååšããŸãã
public bool VerifyStatesMatch(params Order[] orders) { bool retVal = false; try { var customerMap = new Dictionary<int, Customer>(); var addressMap = new Dictionary<int, Address>(); foreach (Orderorder in orders) { Customer customer = null; if(customerMap.ContainsKey(order.CustomerId)) { customer = customerMap[order.CustomerId]; } else { customer = SomeDataSource.GetCustomer(order.CustomerId); customerMap.Add(order.CustomerId, customer); } Address shippingAddress = null; if(addressMap.ContainsKey(order.ShippingAddressId)) { shippingAddress = addressMap[order.ShippingAddressId]; } else { shippingAddress = SomeDataSource.GetAddress(order.ShippingAddressId); addressMap.Add(order.ShippingAddressId,shippingAddress); } retVal = customer.HomeAddress.State == shippingAddress.State; if(!retVal) { break; } } } catch (Exception ex) { SomeLogger.LogError(ex); } return retVal; }
ãã®æ¹æ³ã§é¢æ°ãå€æŽãããšãBobã®ãããåŠçãåçã«å éããŸãã äžæãã£ãã·ã¥ïŒãã£ã¯ã·ã§ããªïŒã§IDã«ãã£ãŠãšã³ããªãç°¡åã«èŠã€ããããšãã§ãããããã»ãšãã©ã®ããŒã¿åŒã³åºãã¯æ¶ããŸãã
ãå€ããã®APIãéããšããã«ãããã«äœããã®å¢çç·ã³ã³ãããŒã«ãæ¥ç¶ããå¿ èŠããããŸãã ããšãã°ã誰ããã¡ãœããã«100äžä»¶ã®æ³šæãéä¿¡ããå Žåã¯ã©ããªããŸããïŒ ãã®ãããªå€æ°ã¯ããã®ã¢ãŒããã¯ãã£ã®æ©èœãè¶ ããŠããŸããïŒ ãã®å Žåãã·ã¹ãã ã¢ãŒããã¯ãã£ãšããžãã¹ããã»ã¹ã®äž¡æ¹ã®æŠå¿µã圹ç«ã¡ãŸãã å®éã«æ倧10,000件ã®æ³šæãåŠçããå¿ èŠãããå Žåãèªä¿¡ãæã£ãŠ50,000件ã®å¶åŸ¡ã確ç«ã§ããŸããããã«ããã誰ãã·ã¹ãã ã1ã€ã®å·šå€§ãªåãå ¥ããããªãåŒã³åºãã«å ¥ããããšãã§ããªããªããŸãã
ãã¡ãããå¯èœãªæé©åã®ãªã¹ãã¯ããã«éå®ãããŸãããããã®äŸã¯ãæåãããå€ãã®ãã€ã³ã¹ã¿ã³ã¹ãåœãŠã«ããå Žåã«ãäžèŠãªäœæ¥ãåãé€ãæ¹æ³ã瀺ããŠããŸãã
ãŒã
ããªã ïŒã¹ãã£ãŒããç§ã®ã³ãŒãã«ãã«ãã€ã³ã¿ãŒãæž¡ããŠããŸããïŒ
ã¹ãã£ãŒã ïŒç§ã¯ããã¯æããªãããäœã ïŒ
ããªã ïŒäžåžã¯ãã·ã¹ãã ãããªã³ã¯ã¯ç€ºããŠããªã...ããšèªããŸãã
ã¹ãã£ãŒã ïŒãããããã¯ããããã¬ã¬ã·ãŒã·ã¹ãã ã®å Žåã§ãããã ãã®ã·ã¹ãã ããã®åºåãå¶åŸ¡ããã®ã§ã¯ãªãããã€ãã©ã€ã³ãéããŠæ°ããã·ã¹ãã ã«åºåããã®ãŸãŸã¢ããããŒãããŸãã
ããªã ïŒããçš®ã®ãã³ã»ã³ã¹ã ããããããã®ãŒãã§åé¡ã解決ããŠã¿ãŸãããïŒ
ã¹ãã£ãŒã ïŒç§ã¯æ±ºããã ã³ãŒãã§ãŒããã§ãã¯ãè¡ããŸãã ãããããªãïŒ
ããªã ïŒO ...ã¯ãããã¡ããã
ããªããžã§ã¯ãåç §ã¯ããªããžã§ã¯ãã®ã€ã³ã¹ã¿ã³ã¹ã瀺ããã®ã§ã¯ãããŸãããã ãã®ãšã©ãŒã®æå³ã説æãã䟡å€ã¯ãããŸããïŒ ç§ãã¡ã®å€ãã¯ããããšæŠãããã«äººçã®1æé以äžãè²»ãããŸããã ã»ãšãã©ã®èšèªã§ã¯ãnullã空ã®ã»ãããªã©ã -æªå®çŸ©ã®å€ãæã€ä»»æã®åïŒéå€åïŒã«å¯ŸããŠå®å šã«æå¹ãªç¶æ ã ãããã£ãŠãåŒã³åºãåŽãæè¡çã«æž¡ãããšãèš±å¯ãããŠããªãå Žåã§ããæ¬æ ŒçãªAPIã¯å€ãNullããèæ ®ããå¿ èŠããããŸãã
ãã¡ããããŒããžã®ãã¹ãŠã®åç §ããã§ãã¯ããããšã¯è€éãªåé¡ã§ãããæã«ã¯éå°ãªæž¬å®ã§ãã ãã ããã©ã®ãããªå Žåã§ãã管çããŠããªããœãŒã¹ããã®å ¥åãä¿¡é Œããã¹ãã§ã¯ãããŸããã ãããã£ãŠããŒãã®ãordersããã©ã¡ãŒã¿ãŒãšããã®äžã®Orderã€ã³ã¹ã¿ã³ã¹ã®ãŒãããã§ãã¯ããå¿ èŠããããŸãã
ãŒããã§ãã¯ãæ£ããå®è¡ããããšã«ããããã¯ãã«ã«ãµããŒãã«ç³ã蟌ãã§ããªããžã§ã¯ãã®ã€ã³ã¹ã¿ã³ã¹ããšã¯äœããå°ãã顧客ããã®è¿·æãªé»è©±ãé¿ããããšãã§ããŸãã ç§ã¯åžžã«è¿œãè¶ãã奜ãã ç§ã®é¢æ°ã¯ãããªããžã§ã¯ãã®ã€ã³ã¹ã¿ã³ã¹ã瀺ããŠããªãããšããããªã圹ã«ç«ããªããšã©ãŒãã¹ããŒããããããããã©ã«ãå€ãè¿ããã¡ãã»ãŒãžããã°ã«èšé²ããïŒãŸãã¯èŠåãéä¿¡ããïŒæ¹ãè¯ãã§ãã ãã¡ããããã®ãããªãœãªã¥ãŒã·ã§ã³ã¯ãã·ã¹ãã ã®ã¿ã€ããã³ãŒããã¯ã©ã€ã¢ã³ãã§å®è¡ãããããµãŒããŒã§å®è¡ãããããªã©ã«å®å šã«äŸåããŸãã éèŠãªã®ã¯ããŒããç¡èŠãããããšã§ããããããæ»ã£ãŠãããŸã§ã§ãã
説æïŒæ£çŽãªãšãããç¡å¹ãªç¶æ ã«ééããå Žåãé¢æ°ã¯ãéã¢ã¯ãã£ããã§ããã¹ãã ãšèšã£ãŠããã®ã§ã¯ãããŸããã nullãã©ã¡ãŒã¿ãã·ã¹ãã ã§åãå ¥ããããªãå ŽåãäŸå€ãã¹ããŒããŸãïŒ.NETã®ArgumentNullãªã©ïŒã ãã ããç¶æ³ã«ãã£ãŠã¯ãæå³ã®ããããã©ã«ããè¿ãããšã¯å®å šã«åãå ¥ããããäŸå€ãã¹ããŒããå¿ èŠã¯ãããŸããã ããšãã°ãéåžžãçŸåšã®ã¡ãœããã¯ããã®å€ã§äœãã§ããªãå Žåã«æž¡ãããå€ãè¿ããŸãã ãŒãã«çŽé¢ããªããã°ãªããªãå Žåã«äžè¬çãªæšå¥šäºé ãäžããããšãã§ããªãèŠå ãå€ãããŸãã
ãªã
youtu.be/CrG-lsrXKRM
ããªã ïŒãžã§ã³ãç§ã®ã³ãŒãã«äœãæž¡ããŸããïŒ äžå®å šãªæ³šæã®ããã§ãã
ãžã§ã³ ïŒãããããããªããã ã¡ãœããã¯å¿ èŠãããŸããããå¥ã®ã©ã€ãã©ãªã§Orderãã©ã¡ãŒã¿ãŒãæž¡ãå¿ èŠããããŸãã ãã®ã©ã€ãã©ãªã¯ããªãã®ã³ãŒããåŒã³åºããšæããŸãã 泚æã¯åŠçããŸããããå¥ã®ã©ã€ãã©ãªã䜿çšããå¿ èŠããããŸãã
ããªã ïŒãã®ã©ã€ãã©ãªã¯ä¿®æ£ããå¿ èŠããããŸãïŒæ²ãã£ãŠèšèšãããŠããŸãïŒ
ãžã§ã³ ïŒãªãã»ã©ããã®ã©ã€ãã©ãªã¯ããžãã¹ã¿ã¹ã¯ãšå ±ã«ææ©çã«éçºãããŸãã-ãããã¯å€åããŠããŸããã ãããã¯ãããæžãããã圌ã¯ä»é±ã¯ããŸããã äžè¬ã«ãå€æŽæ¹æ³ã¯ããããŸããã ããããå ¥åãæå¹ãã©ãããã³ãŒãã§ãã§ãã¯ãã¹ãã§ã¯ãããŸãããïŒ
ããªã ïŒã¯ã...確ãã«ã
4ã€ã®ååãã¹ãŠã®ãã¡ã説æããã®ãæãé£ãããã®ã¯ãããããããŸããã ãŒãã¯ããç¡ãããã³ãç¡å¹ãã®ããã«èŠããŸãããå®çŸ©ããããå®éåã§ããŸãã ããã¯ãã»ãšãã©ã®èšèªã§ããŒãçšã«ç¹å¥ãªããŒã¯ãŒããçµã¿èŸŒãŸããŠããŸãã nullã䜿çšããå ŽåãAPIã¯ãã®ãããªå ¥åãåŠçããå¿ èŠããããŸãããããã¯æ¬è³ªçã«ãŽãã§ãã ãã®äŸã§ã¯ãCustomerIdãæããªãããŸãã¯5äžçŽåã®OrderDateãæã€Orderã®åŠçã«ã€ããŠèª¬æããŠããŸãã ããæçœãªäŸã¯ãåäžã®èŠçŽ ããªãã³ã¬ã¯ã·ã§ã³ã§ãã ãã®ã³ã¬ã¯ã·ã§ã³ã¯nullã§ã¯ãªããããã«ããŽãªãå€ãã«å±ããå¿ èŠããããŸãããåŒã³åºãå ã¯ã³ã¬ã¯ã·ã§ã³ã«ããŒã¿ãå ¥åããŸããã§ããã ãäœãã衚瀺ãããªããããªã·ããªãªãåžžã«èæ ®ããå¿ èŠããããŸãã ãã®äŸã§ã¯ããäœãããåŠçãããªãããã«èª¿æŽããŸãããã åŒã³åºãå ã¯ãåã«Orderã®ãããªãã®ãæž¡ãããšã¯ã§ããŸããã 圌女ã®æ³šæã¯ãæäœéã®äžè¬çãªèŠä»¶ãæºããå¿ èŠããããŸãã ãã以å€ã®å Žåããã®æ å ±ã¯ããªãããšèŠãªãããŸãã
... // , . ;-) if (order != null && order.IsValid) ...
ãããã«
ãã®èšäºã®äž»æšãèªè ã«äŒããããšãã§ããããšãé¡ã£ãŠããŸããã³ãŒããåé¡ãªãå ¥åæ å ±ãåãå ¥ããããšãã§ãããšããããšã¯èµ·ãããŸããã é¢æ°ãŸãã¯APIãå®è£ ãããšãã¯ããã®APIã®äœ¿çšæ¹æ³ãèæ ®ããå¿ èŠããããŸãã ãã®äŸã§ã¯ãå ã®é¢æ°ã¯12è¡ãã50è¡ã«å¢å ããŸããããåºæ¬çãªå€æŽã¯å ããŠããŸããã è¿œå ãããã¹ãŠã®ã³ãŒãã¯ãã¹ã±ãŒãªã³ã°ãå¢çç·å¶åŸ¡ãããã³é¢æ°ãå ¥åãæ£ããå¹ççã«åŠçããããã«å¿ èŠã§ãã
è¿å¹Žã®ä¿åããŒã¿ã®éã¯ææ°é¢æ°çã«å¢å ããŠãããããå ¥åããŒã¿ã®èŠæš¡ã¯å€§ãããªããŸããããã®ããŒã¿ã®å質ã¯äœäžããŸãã APIãæåããæ£ããèšè¿°ãããšãããã¯ããžãã¹ã®æé·ãå¢å ãã顧客ããŒã¹ãžã®é©å¿ãããã³é·æçã«éèŠãªåœ¹å²ãæããããšãã§ããŸã-æè¡ãµããŒãã³ã¹ããç¯çŽã§ããŸãïŒãããŠé çãå°ãªããªããŸãïŒã