çŸä»£ã®éçºè
ã¯ãã¯ãã¹ãã©ãããã©ãŒã ã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ãã¡ã³ããã³ã¹ãããã³å±éã«åŸäºããŠããŸãã 圌ãã®èŠåŽã軜æžããããã«ãæ°ããMicrosoftãã¬ãŒã ã¯ãŒã¯ASP.NET CoreãäœæãããŸããã ããã§ãããŸããŸãªãªãŒãã³ãœãŒã¹ã©ã€ãã©ãªãèªç±ã«äœ¿çšã§ããŸããããã«ããã¬ãŒã ã¯ãŒã¯èªäœã¯ãªãŒãã³ãœãŒã¹è£œåã§ãã
ASP.NET CoreãæäŸãããã¹ãŠã®æ°æ©èœãç¿åŸããã«ã¯ã©ãããã°ããã§ããïŒ èè
ã¯ãæ¶ç©ºã®äŒç€ŸAlpine Ski HouseãäŸãšããŠäœ¿çšããŠãç¹å®ã®åé¡ã®è§£æ±ºçã説æããŸãã åç« ã®åã«ã¯ãéçºããŒã ãçŽé¢ããŠããåé¡ãšããã®åé¡ãã©ã®ããã«å
æãããã«ã€ããŠã®çãã¹ããŒãªãŒããããŸãã ã¢ããªã±ãŒã·ã§ã³ã®ã¢ãŒããã¯ãã£ãŒãã¯ã©ãŠãã§äœæ¥ããããã®ã¢ããªã±ãŒã·ã§ã³ã®å±éããã³èšèšã®æ¹æ³ããã®ä»å€ãã®ããšãç解ããå¿
èŠããããŸãã
ãã®æ¬ã¯ãæ¶ç©ºã®äŒç€ŸAlpine Ski Houseã§ã®æåã®ã¢ããªã±ãŒã·ã§ã³éçºã¹ããªã³ããæ±ã£ãŠããŸãã åç« ã®åã«ã¯ãéçºããŒã ãçŽé¢ããŠããåé¡ãšããããã©ã®ããã«å
æãããã«ã€ããŠã®çãã¹ããŒãªãŒããããŸãã ãã£ã¯ã·ã§ã³ã®èŠçŽ ãååšããã«ããããããããã®æ¬ã¯ãASP.NET Core MVCã®æ©èœã ãã§ãªããéçºè
ãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ãä¿å®ãããã³å±éããããã«äœ¿çšããããŒã«ã«ã€ããŠãæ·±ãã«ããŒããŠããŸãã
ASP.NET Core MVCã«é¢ããã¹ããŒãªãŒãšæè¡æ
å ±ã«å ããŠãæ¬æžã§ã¯ãææ°ã®Webéçºè
ã䜿çšããEntity Frameworkã®æ°ããããŒãžã§ã³ãããã±ãŒãžç®¡çã·ã¹ãã ãããã³åšèŸºæè¡ã«ã€ããŠèª¬æããŠããŸãã çè«çãªãã¬ãŒãã³ã°è³æã«å ããŠãã¢ã«ãã³ã¹ããŒããŠã¹ã®ããã°ã©ããŒã«ãã£ãŠéçºããããããžã§ã¯ããä»å±ããŠããŸãã
ãã®æ¬ã¯èª°ã®ããã«æžãããã®ã§ããïŒ
ãã®æ¬ã¯ãASP.NET Coreã«åºã¥ããŠæ°ããã¢ããªã±ãŒã·ã§ã³ãäœæããã€ã³ã¿ãŒããããä»ããŠãã®ã¢ããªã±ãŒã·ã§ã³ãžã®ã¢ã¯ã»ã¹ãæäŸãããã¹ãŠã®æ®µéãéããŠããã°ã©ããŒãã¬ã€ãããŸãã å€ãã®ããã°ã©ããŒã¯ãçŸåšå©çšå¯èœãªãœãããŠã§ã¢ããŒã«ãè±å¯ã«ããã«ããããããããŸã Webéçºã®äžçããé ãé¢ããŠããããWebFormsãä»ããŠWebéçºãšãããã«ããæ¥è§ŠããŠããŸããã ãã®æ¬ã¯ãèªè
ãç©æ¥µçã«éçºããŠãããã¬ãŒã ã¯ãŒã¯ã§ææ°ã®ã¢ããªã±ãŒã·ã§ã³ãèšèšããããã«å¿
èŠãªã¹ãã«ãç¿åŸããã®ã«åœ¹ç«ã¡ãŸãã ã¯ã©ãŠãã§äœæ¥ããããã®ã¢ããªã±ãŒã·ã§ã³ã¢ãŒããã¯ãã£ãå±éãèšèšããŒã«ã«ã€ããŠåŠç¿ããŸãã
ãã®æ¬ã¯ããªãã«é©ããŠããªãå Žå...
ããªããASP.NET Core MVCã®éçºã«å¯æ¥ã«åŸããããŸãã¯çŽæ¥é¢äžããŠããçµéšã®ããASP.NET MVCéçºè
ã§ããå Žåããã®æ¬ã¯ããªãã«é©ããªããããããŸããã
æ¬ã®æ§é
ãã®æ¬ã¯ãã¢ããªã±ãŒã·ã§ã³éçºäžã«åã
ã®ã¹ããªã³ãã«ã€ããŠéçºè
ãã¬ã€ããããšããçããã¢ãããŒãã䜿çšããŠããŸãã ãã¯ãããžãŒã ãã§ãªãããšã©ãŒããã®å埩ããã»ã¹ãšããŠãŒã¶ãŒã®ãã£ãŒãããã¯ã«å¯Ÿããéçºè
ã®åå¿ãèæ
®ããŸãã æåããå§ããŠãæ¬æ Œçãªå®è¡å¯èœãªè£œåã§çµãããŸãã
æ¬ã¯4ã€ã®éšåã«åãããŠããŸãã
â¢ããŒãIãã¹ããªã³ãã¯ã³ïŒã¢ã«ãã€ã³ã¹ããŒããŠã¹ã¢ããªã±ãŒã·ã§ã³ãã§ã¯ãèªè
ã«ç¶æ³ã®æ¬è³ªã玹ä»ããŸããæ¬ã§äœ¿çšãããã¢ããªã±ãŒã·ã§ã³ãšã¹ããŒãªãŒã®æ¶ç©ºã®ç»å Žäººç©ã«ã€ããŠèª¬æããŠããŸãã
â¢ããŒãIIãã¹ããªã³ã2ïŒ1000ã¹ãããã®æ
ãã¯ãã¢ããªã±ãŒã·ã§ã³ã®äž»ãªæ©èœçåŽé¢ãšãå±éããã®å Žã§éå§ãããã€ãã©ã€ã³ã®èšå®ã«å°å¿µããããã»ã¹ã¯éçºããŒã å
šäœãç解ã§ããããã«ããŸãã
â¢ããŒãIIIãã¹ããªã³ã3ïŒããŒã¹ããªãã¶ããŒã¹ãã§ã¯ãå®éã®ããžãã¹ããã»ã¹ã§ãã¹ãã¢ããªã±ãŒã·ã§ã³ã®äœ¿çšãéå§ããããã«å¿
èŠãªåºæ¬æ©èœã«çŠç¹ãåœãŠãŸãã ç¹ã«ãEntity Frameworkã³ã¢ãä»ããããŒã¿ã®æäœãRazorããŒã¹ã®ãã¥ãŒã®äœæãæ§æãšãã°ãã»ãã¥ãªãã£ãšæš©éã®ç®¡çãæåŸã«äŸåé¢ä¿ã®æ³šå
¥ã«ã€ããŠèª¬æããŸãã
â¢ããŒãIVãã¹ããªã³ã4ïŒãã£ããã·ã¥ã©ã€ã³ã§ã¯ãJavaScriptãšäŸåé¢ä¿ã®ç®¡çã«ã€ããŠèª¬æããåã®ãããã¯ã®ããã€ããéçºããŸãã
ãã®æ¬ã¯ããã¹ãããªãã¡ã¯ã¿ãªã³ã°ãæ¡åŒµæ©èœã®è¿œå ãªã©ã®éèŠãªãããã¯ã§çµãããŸãã
æç² ã³ãŒãå質ã®ãªãã¡ã¯ã¿ãªã³ã°ãšæ¹å
1幎åã«æžããã³ãŒãã«æºè¶³ããŠããéçºè
ã¯ã»ãšãã©ããŸããã å€ãã®ããã°ã©ãã³ã°ã»ãããŒã§ãããããžã§ãŒã¯ïŒããã°ã©ããŒã¯ã誰ããã®ãŽããæžããã®ãïŒããšå«ã³ãæŽå²ã調ã¹ãŠãããã圌ã ãšããããŸãã ããã¯å®éã«çŽ æŽãããæ©äŒã§ãã ã³ãŒãã®èšè¿°ãéå§ãããšãå€ãã®å Žåããµããžã§ã¯ãé åãããã°ã©ãã³ã°ã®åé¡ãããã³èšè¿°ããªããã°ãªããªãã¢ããªã±ãŒã·ã§ã³ã®æ§é ã®ã¿ãç解ããããšããŠããŸãã å¿ãäžåºŠã«åžåã§ããæ
å ±ã®éã¯éãããŠãããå€ãã®ãå¯åéšåããã³ãŒãã®æ§é ãæ©èœã®ãšã©ãŒã«ã€ãªããããšããããããŸãã æ°ãæåŸãã¢ããªã±ãŒã·ã§ã³ã®ç解ãåäžãããšãã«æ»ã£ãŠå€ãã³ãŒããä¿®æ£ããããšã¯ãæ倧ã®èŽ
æ²¢ã§ãã
ãã®ç« ã§ã¯ããªãã¡ã¯ã¿ãªã³ã°ã®æŠå¿µãšãããã©ãŒãã³ã¹ãæãªãããšãªãã¢ããªã±ãŒã·ã§ã³ã®æ©èœãæ¹åããå¯èœæ§ã«ã€ããŠèª¬æããŸãã
ãªãã¡ã¯ã¿ãªã³ã°ãšã¯äœã§ããïŒ
ããªãã¡ã¯ã¿ãªã³ã°ããšããçšèªã¯ã1990幎代åé ã«William OpdykeãšRalph Johnsonã«ãã£ãŠææ¡ãããŸããã ã¯ããThe Gang of Fourã«ãã£ãŠæžãããæ¬ããããŸã1 ãªãã¡ã¯ã¿ãªã³ã°ã¯ãã³ãŒããããã¯ã®å
éšæ§é ã®å€åãšããŠç解ããããã®çµæãã³ãŒããããç解ãããããªãããã¹ãã§äŸ¿å©ã«ãªããå€æŽã«ããããé©å¿ãããã®å€éšæ©èœã¯å€åããŸããã å
¥åããŒã¿ãåãåããåºåããŒã¿ãæäŸããããã©ãã¯ããã¯ã¹ãã®åœ¢åŒã®é¢æ°ãæ³åãããšãå
¥åãšåºåãå€æŽãããªãå Žåãããã©ãã¯ããã¯ã¹ãã®å
éšæ§é ã®å€æŽã¯ç¹å¥ãªåœ¹å²ãæãããŸããïŒå³23.1ïŒã
ãã®èŠ³å¯ã«ãããæ©èœãç¶æããã¢ããªã±ãŒã·ã§ã³ã®å
šäœçãªå質ãåäžãããªãããã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒãã眮ãæããããšãã§ããŸãã ãŸãããé¢æ°ããšããçšèªãã³ãŒããããã¯ã®æå®ãšããŠäœ¿çšããŸããããã®ç¯å²ã¯é¢æ°ã®å
éšæ§é ã«éå®ãããå¿
èŠã¯ãããŸããã ãªããžã§ã¯ãæåããã°ã©ãã³ã°ã®ãã€ã³ãã¯ãå®è£
ã®è©³çŽ°ãé瀺ããªãããã«æœè±¡åãåºãå°å
¥ããããšã§ãã ãªãã¡ã¯ã¿ãªã³ã°ã®ç®çã§ããã©ãã¯ããã¯ã¹ããšèŠãªãããšãã§ããå€ãã®ãã¶ã€ã³ããããŸãã æåã®åè£ã¯ã¯ã©ã¹ã§ãã å
¥åããŒã¿ãšåºåããŒã¿ãå€æŽãããªãå Žåãã¯ã©ã¹ã®å®è£
ã¯éèŠã§ã¯ãªããããé©åãšæãããå
éšã¡ã«ããºã ãå€æŽã§ããŸãã åå空éã¯ãã¯ã©ã¹ãšåãã¬ãã«ã®ä¿è·ãæäŸããŸãããã眮æã®åè£ãšèŠãªãããšãã§ããŸãã æåŸã«ããã€ã¯ããµãŒãã¹ã®äžçã§ã¯ãã¢ããªã±ãŒã·ã§ã³å
šäœãå¥ã®ã¢ããªã±ãŒã·ã§ã³ã«çœ®ãæããããšãã§ãããã®ãããªçœ®ãæãããªãã¡ã¯ã¿ãªã³ã°ã®äžéšã«ãªããŸãã
ã¡ãŒãªã³ã°ãªã¹ããä»ããŠé»åã¡ãŒã«ãéä¿¡ããããšã責åãšãããµãŒãã¹ãæ€èšããŠãã ããã å
¥åã¯ãåä¿¡è
ãšéä¿¡ããã¡ãã»ãŒãžã®ãªã¹ãã§ãã ããã§ã®åºåã®å Žæã¯ãçµæã«ãã£ãŠå ããããŠããŸãïŒåä¿¡è
ã®ãªã¹ãããã®ãã¹ãŠã®åä¿¡è
ã«ããã¡ãã»ãŒãžã®åä¿¡ïŒå³23.2ïŒã
ãã€ã¯ããµãŒãã¹ãã¡ãã»ãŒãžãéä¿¡ããæ¹æ³ã¯é¢ä¿ãããŸããïŒSendgridã䜿çšããããç¬èªã®ãµãŒããŒããã ãããã«ããŠããçµæã¯åããŸãŸã§ãã ãã®å Žåããã€ã¯ããµãŒãã¹ã®çœ®æã¯ãªãã¡ã¯ã¿ãªã³ã°ãšèŠãªãããšãã§ããŸãã
ããã°ã©ãã¯éåžžãã³ãŒãã®æ¹åã«åœ¹ç«ã€ãªãã¡ã¯ã¿ãªã³ã°ãåŒã³åºããŸãã äœåãªã¡ãœãããã©ã¡ãŒã¿ãŒãé€å€ããŸããïŒ DevOpsã®ãµããŒããæ¹åããããã«ãé°æ¹¿ãªæ¹æ³ã§ãã°ãšã³ããªãè¿œå ããŸãããïŒ ã©ã¡ãã®å Žåãã³ãŒãã®å質ãŸãã¯ã¢ããªã±ãŒã·ã§ã³ã®å質ã¯åäžããŸããããããã¯ããããã¢ããªã±ãŒã·ã§ã³ã®æ©èœãå€æŽããããããªãã¡ã¯ã¿ãªã³ã°ãšæ£åŒã«èŠãªãããšã¯ã§ããŸããã ãªãã¡ã¯ã¿ãªã³ã°ã®å®çŸ©ãå®å
šã«é å®ããã«ã¯ãå
¥åïŒãã©ã¡ãŒã¿ãŒã®æ§æãå«ãïŒãšåºåïŒãžã£ãŒãã«å
ã®ã¡ãã»ãŒãžãå«ãïŒã®äž¡æ¹ãå€æŽããªãããšãå¿
èŠã§ãã
ã³ãŒãå質è©äŸ¡
éçºè
ãã³ãŒãã®å質ãæ¹åããããã®ãªãã¡ã¯ã¿ãªã³ã°ã«é¢äžããŠããå Žåããã¡ãããã³ãŒãã®å質ãè©äŸ¡ããããã®äœããã®åºæºãå¿
èŠã§ãã ã³ãŒãå質ãè©äŸ¡ããããã®ããŒã«ãããã°ãããã¯çŽ æŽãããããšã§ããããã¯ãã³ãŒãå質ã®ããããåŽé¢ãåäžã®æ°å€ã§è¡šãããšãã§ããéã®æã¡ã©ããã®ãªãã¡ããªãã¯ã§ãã æ®å¿µãªããããã®ãããªã¡ããªãã¯ã¯ååšããŸããã é·å¹Žã«ããããé å¿ã¯ã©ããããã³æ±å¿ã¯ã©ããããã³ãŒãè¡ã®ãšã©ãŒæ°ã®æšå®ãã³ãŒãã®ãã¹ãç¯å²ã®æšå®ãŸã§ãç¡æ°ã®å質ã¡ããªãã¯ãææ¡ãããŠããŸããã ã³ãŒãå質ã¡ããªãã¯ã®ã»ãããéžæããããšã¯ãããèªäœãæ¬å
šäœã«å€ãããããã¯ã§ãã
ãã ããã³ãŒãã®å質ãè©äŸ¡ããã«ã¯ãããã€ãã®ç°¡åãªã¡ããªãã¯ã匷調衚瀺ãããšäŸ¿å©ã§ãã
â¢ã³ãŒãã¯ãæ³å®ãããŠããããšãè¡ããŸããïŒ äžèŠãããšæããã§ããããã®ææšã¯ãã°ãã°å¿ããããŸãã ã³ãŒã1,000è¡ãããã®å ±åããããšã©ãŒã®æ°ããŸãã¯ã¯ã©ã¹ããšã®ãšã©ãŒã®æ°ã«ãã£ãŠæšå®ã§ããŸãã äžéšã®éçºè
ã¯ãã®ã¡ããªãã¯ãã°ããŒãã«ã«äœ¿çšãã2ã€ã®ãããžã§ã¯ãã®çžå¯Ÿçãªå質ãæ€åºãããæ¬ é¥ã®æ°ã§æ¯èŒããŸãã ãã ãã2ã€ã®ãããžã§ã¯ãã1ã€ã®åé¡ã解決ããããšã¯ãªãããããã®ã¢ãããŒãã¯éçç£çã§ãã é»åã°ãªãŒãã£ã³ã°ã«ãŒããäœæããã³é
ä¿¡ããã·ã¹ãã ããã€ã³ã¹ãªã³ãã£ã¹ãã³ãµãŒå¶åŸ¡ã·ã¹ãã ãšåãçšåºŠã®è€éããŸãã¯ãšã©ãŒçãæã€ããšãæåŸ
ããããšã¯å¯èœã§ããïŒ ãããããã¡ããã§ãã ãã®ã¡ããªãã¯ã¯ãä»ã®ã»ãšãã©ã®è£œåãšåæ§ã«ãã°ã«ãŒããšè£œåãæéãšãšãã«æ¹åãããŠãããã©ããã調ã¹ãã®ã«åœ¹ç«ã¡ãŸãã
â¢ã³ãŒãã¯éæ©èœèŠä»¶ãæºãããŠããŸããïŒ é¢æ°ã®å
¥åãŸãã¯åºåã«é¢ä¿ããªãèŠä»¶ïŒããšãã°ãã³ãŒããã©ã°ã¡ã³ãã®ããã©ãŒãã³ã¹ããã®ã»ãã¥ãªãã£ãªã©ïŒã«ã€ããŠè©±ããŠããã
â¢ã³ãŒãã¯ã©ããããæ確ã§ããïŒ çæ³çãªã³ãŒãã¯ãŸã£ããååšããããšã©ãŒãæ€åºããããèŠä»¶ãå€åããããããããé
ããæ©ãã誰ãããããæŽæ°ããå¿
èŠããããŸãã ã³ãŒãã®äœæè
ãã€ãŸãããªããããã®ã誰ããã«ãªãããšãã§ããŸãïŒ æ¬¡ã®ã¹ãããããã芧ãã ããã
for (var i = 1; i < parts.length; i++) { root[parts[i]] = root[parts[i]] || (root[parts[i]] = {}); root = root[parts[i]]; }
ããã¯å¹ççã§ã¹ããŒããªã³ãŒããããããŸãããããããç解ããããšã¯ã»ãšãã©äžå¯èœã§ãã ãããããããèªã¿ãããã®å®¢èŠ³çãªææšãèŠã€ããããšã¯å°é£ã§ãã ãã®ã¡ããªãã¯ã¯ãã¡ã³ããã³ã¹ã®å©äŸ¿æ§ã«é¢ããéçºè
ã®åæãããæèŠã®å
·äœåã»ã©ã§ã¯ãããŸããã éå¿ã«æ©ãŸãããŠããªãæ®éã®äººã
ã®ã°ã«ãŒãã§ã¯ãã³ãŒãã®èªã¿æ¹ã«é¢ããŠæ·±å»ãªéããçããããšã¯ãã£ãã«ãããŸããã ã³ãŒãã¬ãã¥ãŒã¯ãã³ãŒãã®ãããŸããªã»ã¯ã·ã§ã³ãçºèŠããããã®åªããããŒã«ã§ãã
å¥ã®åçŽã ãå®çšçãªã¡ããªãã¯-埪ç°çè€éã-ã¡ãœããã®ã³ãŒãåå²ã®æ°ã«ãã£ãŠé¢æ°ã®è€éããæšå®ããŸãã ifã³ãã³ãã1ã€æã€ã¡ãœããã«ã¯ãã³ãŒãã®2ã€ã®å¯èœãªåå²ãå«ãŸããŸããã€ãŸãããã®åŸªç°çè€é床ã¯2ã§ãïŒå³23.3ïŒã
â¢ã³ãŒãã¯èŠä»¶ã®å€æŽã«ç°¡åã«å¯Ÿå¿ã§ããŸããïŒ ç¹°ãè¿ããŸããããã®ã¡ããªãã¯ã¯çŽ æ°ãšããŠè¡šçŸã§ããŸããã ããããããã¯çµéšè±å¯ãªéçºè
ã®ã°ã«ãŒãã§çããæèŠã§ãã éçºè
ã®é¡ã®é
žæ§è¡šçŸã«ãããšãã³ãŒãã«é倧ãªå€æŽãå ããããå Žåããã®ç®æšãéæããããã©ãããèªä¿¡ãæã£ãŠå€æã§ããŸãã
ãããã®4ã€ã®åçŽãªã¡ããªãã¯ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ã©ã®éšåããªãã¡ã¯ã¿ãªã³ã°ããå¿
èŠãããããå€æããããã®è¯ãåºçºç¹ã§ãã ãããããã¢ããªã±ãŒã·ã§ã³ã®æé·ãšéçºäžã«ãæ°ããã¡ããªãã¯ãçºèŠããŠè¿œå ã§ããããã«ãªãã§ãããã
è€æ°ã®ã¡ããªãã¯ãèªç±ã«äœ¿çšã§ããå Žåãã¢ããªã±ãŒã·ã§ã³ã誀ã£ãã¡ããªãã¯çšã«æé©åãããŠããªãããšã確èªããããšãéèŠã§ãã 人ã
ã¯ãæ
æã«ã·ã¹ãã ã欺ãåŸåããããŸãã é¢æ°ããæãéããªã¿ãŒã³ãæäŸããããã©ãŒãã³ã¹ã¡ããªãã¯ãéžæããããã¡ã¢ãªã³ã¹ãã«åççãªå¶éãèšå®ããã¡ããªãã¯ãè¿œå ããªãå Žåãèšç®ãªãœãŒã¹ãšåŒãæãã«ã¡ã¢ãªãæ¶è²»ããããã«é¢æ°ãæé©åããããšããã§ãããã ãããæ¬åœã«å¿
èŠãªãã®ãªã®ããæçµçãªç®æšããã©ã³ã¹ãªã®ããèããŠãã ããã ã¡ããªãã¯ãåæããæé©åãééã£ãæ¹åã«é²ãŸãªãããšã確èªãããããããªããã¡ããªãã¯ã®ã»ãããæŽæ°ããŸãã
èè
ã«ã€ããŠ
éçºæè¡ã«ããã5åã®Microsoft MVPã¹ããŒã¿ã¹ã§ãããžã§ãŒã ãºãã§ã³ããŒãºã¯ãAzureããã³AWSã§ASP.NET CoreãšMVCãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠçŸåšéçºäžã§ãã 圌ã¯ç¬ç«ããã³ã³ãµã«ã¿ã³ãã§ãããæåž«ã§ãããç©æ¥µçãªããã¬ãŒã§ãããå€ãã®ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã®ã¡ã³ããŒã§ããããŸãã
4åMicrosoft MVPã§ããDavid Packettã¯ããœãããŠã§ã¢éçºè
ã§ãããç¬ç«ã³ã³ãµã«ã¿ã³ãã§ãã 圌ã¯ãWindowsããã³Webã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ã«.NETã䜿çšããè±å¯ãªçµéšãæ·±ãæè¡çèæ¯ãé«å質ã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãžã®æ
ç±ãæã£ãŠããŸãã
Microsoft MVPãã«ããŒã§ããSimon Timmsã¯ãã³ãã¥ããã£ã®äž»å¬è
ãããã¬ãŒãéçºè
ãããã³ç¬ç«ã³ã³ãµã«ã¿ã³ãã§ãã 圌ã®æè¡çé¢å¿ã¯éåžžã«å€æ§ã§ãããåæ£ã·ã¹ãã ããææ°ã®JavaScriptãã¬ãŒã ã¯ãŒã¯ãŸã§ãã¹ãŠã楜ããã§ããŸãã éçºã®åéãšé²è¡äžã®äœæ¥ã®çµç¹ã®äž¡æ¹ã§åªãããã¬ãŒãã³ã°ãåããŠããããã圌ã¯ãã°ãã°ã°ã«ãŒããçæ°ã«è¿œã蟌ã¿ã建èšãšéçºãããµãŒããŒã®ã¡ã³ããã³ã¹ãŸã§ã®ãã¹ãŠã®æ®µéã«åå ããŸãã
»æ¬ã®è©³çŽ°ã«ã€ããŠã¯
ãåºç瀟ã®ãŠã§ããµã€ããã芧ãã ãã»
ã³ã³ãã³ã»
æç²ããŒã«ãŒã®ã¯ãŒãã³ã20ïŒ
ãªã-ASP.NET
Core