ç§ã¯ãžã§ã³ãšè©±ãããŠã圌ã«.NETã.NET Coreã®éåœãCïŒ7ã®é©æ°ããããŠ2017幎ã®å¹³åçãªéçºè ã®äžè¬çãªéçºã¬ãã«ã«ã€ããŠå€ãã®ããšãã€ã³ã¿ãã¥ãŒããŸããã
å ·äœçã«ã¯ã次ã®åé¡ã«ã€ããŠèª¬æããŸããã
- .NETéçºã®äžè¬çãªæ¹åæ§ãšMicrosoftãšã©ãŒã
- è¿ãå°æ¥ã.NET Coreã«æåŸ ããããšã
- å€ã.NET Frameworkãããå Žåã.NET Coreã«ç§»è¡ããå¿ èŠããããŸãã
- ã¯ãã¹ãã©ãããã©ãŒã ã®åéã«ããã.NETã®åé¡ãšåå©ã
- ãšã³ã¿ãŒãã©ã€ãºãœãªã¥ãŒã·ã§ã³åžå Žã«ãããJavaãš.NETã
- CïŒ7ã§ã¿ãã«ãšãã¿ãŒã³ãããã³ã°ãåªããŠããçç±ãšãå¥ã®æ¹æ³ã§è¡ãã¹ãããšã
- å°ãããŠãçŽ æŽãããæ©èœCïŒ7;
- éçºè ã³ãã¥ããã£ã®å£åïŒããã³å£åãã©ããïŒ;
- ãã°ã蚺æããSOã«é¢ããé©åãªè³ªåãããããã®é©åãªã¢ãããŒãã
- æ°ããèšèªãšãã©ãããã©ãŒã ã®åŠç¿ã¬ã€ãã
- åºæ¬ã¿ã€ãã®åé¡ïŒæ°åãããã¹ããæ¥ä»ãšæå»ã
ã€ã³ã¿ãã¥ãŒã¯éåžžã«å€§èŠæš¡ã§ããããšãå€æããŸãããã1åããšã«è²»ãã䟡å€ãããããã«æããŸãã
ãã©ãããã©ãŒã ãšããŠã®.NETã®éçºã«ã€ããŠ
ããããã€ããžã§ã³ãç°¡åãªè³ªåããå§ããŸããããã æè¿ã.NET CoreãšASP.NET Coreã¯éåžžã«è¿ éã«éçºããã絶ããå€åããŠããŸãã éçºè ãšããŠããã©ãããã©ãŒã ã¯é©åãªã³ãŒã¹ãåã£ãŠãããšæããŸããïŒ
-ãã®è³ªåã¯2ã€ã®ç°ãªãåŽé¢ã«é¢ä¿ããŠãããšæããŸãã 1ã€ç®ã¯ãã©ãããã©ãŒã ã®éçºã®æ¹åã§ããã2ã€ç®ã¯ãã®æ¹åãæ€çŽ¢ããããã»ã¹ã§ããMicrosoftã¯.NETã«é¢é£ãããã¹ãŠã®ç¹ã§ã¯ããã«ãªãŒãã³ã«ãªã£ãŠããŸãã ä»ã§ã¯ã»ãšãã©ãã¹ãŠããªãŒãã³ãœãŒã¹ã«ãªã£ãŠãããããã¯çŽ æŽãããããšã§ãã äžæ¹ãããã«ã¯å€ãã®å€æŽãå¿ èŠã§ããããšãã°ãææ決å®ããã»ã¹ãªã©ã§ãã project.jsonãããžã§ã¯ããKVMãªã©ã®äžéã¹ãããã芳å¯ããŸãã ãå€ãããã€ã¯ããœããã®æ代ã«ã¯ããœãããŠã§ã¢ãéçºããåŸæ¥ã®äŒæ¥ã®æ¹æ³ã§ã¯ãããã¯èµ·ãããŸããã§ããããããããçŸåšã®åœ¢åŒã®.NETããŒã«ãããã«èŠãŠããã§ãããã ã¯ããã³ãã¥ããã£ã«ã¯å®å šãªæ··ä¹±ããããå人çã«ã¯ããŸãç解ããŠããŸããã§ããããæéãçµã€ã«ã€ããŠç¶æ³ã¯æããã«ãªããŸããã ä»é±ã.NETæšæºã©ã€ãã©ãªãšã¯äœãããããŠç¶æ³ã¯æ¹åãã€ã€ãããšããããšã«ã€ããŠãã¹ã¿ãã¯ãªãŒããŒãããŒã«é¢ãã質åãããŸããã
ããããç§ã®æèŠã§ã¯ãã³ãã¥ããã£ãšããŠãç§ãã¡ã¯ãèµ·ãã£ãŠããããšãèšç»ããèŠã圱é¿ãäžãããšãã圢ã§ã®ãªãŒãã³ãã©ãããã©ãŒã ã®å©ç¹ã«ã¯ã1ã€ã®æ¬ ç¹ã䌎ãããšãç解ããå¿ èŠããããŸãïŒãããã®å€æŽãããŒã«ããã¯ãããšãæéã倱ãããšã«ãªããŸãã ã©ããããããã¯ã»ãšãã©ã®å Žåã«é©ããŠããããªãŒãã³ã§ããããšã¯æçã§ããã.NETã³ãã¥ããã£ã«ãšã£ãŠã¯ãããã¯äžçš®ã®æåçã·ã§ãã¯ã§ãã
ããããã¹ãŠå¿µé ã«çœ®ããŠãããã€ãã®èšãæ¹ã«æ³šæãããããããŸãã...ç°¡åã«ç解ã§ããã³ãã¥ãã±ãŒã·ã§ã³ã®äžçºïŒäœãã®æ ¹æ¬çã«æ°ããããŒãžã§ã³ãäœæãããšãã«ééããç¯ããããã§ãã ãã¡ããããªãªãŒã¹æ¥ãéžæããããæºåç¶æ³ã決å®ãããããããŒãžã§ã³çªå·ä»ãã«ã¯ãŸã ãšã©ãŒããããŸããã äžè¬ã«ããã¹ãŠãç§ãã¡ãæãã»ã©ã¹ã ãŒãºã«é²ã¿ãŸããã§ããããããã¯æãã¯ãããŸãããçµå±ã誰ãå®ç§ã§ã¯ãªããç§ãã¡ã¯ã³ãã¥ããã£ãšããŠãããåãå ¥ããªããã°ãªããŸããã èŠãã°èŠãã»ã©ãããå€ãã®æ¬ é¥ã«æ°ã¥ããŸãã ããã¯ããã©ãããã©ãŒã ã®éçºããã»ã¹ã«é©çšãããŸãã
åãã®æ¹åã«ã€ããŠè©±ãã°ãNETãããã§ç§ã¯éåžžã«ãéåžžã«æ¥œèŠ³çã§ãã ãã©ãããã©ãŒã ãšããŠã®.NETã®ç©æ¥µçãªéçºãã¢ãã€ã«ãã©ãããã©ãŒã ãžã®æ¡åŒµãXamarinãã¹ããŒãªãŒå šäœã«ã©ã®ããã«é©åããããèŠãã®ã¯çŽ æŽãããããšã§ãã ãããã¯ãã¹ãŠè€éã§ãããåºæ¿çã§ãããèšèªãããŒã«ã§ã倧ããªé²æ©ããããŸããã ç§ã®æèŠã§ã¯ãå šäœçãªç¶æ³ã¯çŽ æŽãããã§ãã ç§ã«ãšã£ãŠãGCPãCïŒéçºè ã«ãšã£ãŠçŽ æŽãããç°å¢ã«ããããšããŠãGoogleã§Google Cloud Platformã«åãçµãã§ããéãããã¯ãŸã èµ·ãã£ãŠããŸãããããŠãã¡ããã.NET Coreã¯ãã®éèŠãªéšåã§ãã
æè¿ãGoogle Cloud Next 2017ã«ã³ãã¡ã¬ã³ã¹ã§ããããŒãžã£ãŒãšç§ã¯ãApp Engineãã¬ãã·ãã«ç°å¢ãšã³ã³ãããŒã®äž¡æ¹ã§GCPäžã§å®è¡ãããASP.NET Coreã¢ããªã±ãŒã·ã§ã³ã®å¯èœæ§ã«ã€ããŠè°è«ããŸããã ãããŠãããã¯ã»ãã®æ°å¹Žåã«ã°ãããŠãããšèãããããã®ã®äžã€ã§ãã ç§ãã¡ã®åŽã§äœæ¥ãè¡ãå¿ èŠããããŸããïŒGoogleã«ã¯ãVSããäž¡æ¹ã®ç°å¢ã«çŽæ¥å±éã§ããVisual Studioã®æ¡åŒµæ©èœããããŸãïŒããããã¯Microsoftã.NET Coreã§è¡ã£ãããšãªãã§ã¯æå³ããããŸããã æ£çŽãªãšããã誰ã«ãšã£ãŠãåå©ã®ç¶æ³ãããããã«æããŸãã
-çŸåšãMS Azureã®çŽæ¥ã®ç«¶äºçžæã§ããGoogle Cloud Platformã«åå ããŠããããšãæ£ããç解ã§ããŸããïŒ
-ããã ãã§ããGCPã¯MS Azureããã³Amazon AWSãšç«¶åããŸãã äžè¬ã«ããã©ãããã©ãŒã ã®ãã¬ãããã®éçºã«ã¯çŽæ¥é¢äžããŠããŸããã Cloud SpannerãBigQueryãDatastoreããŸãã¯ããŸããŸãªæ©æ¢°åŠç¿APIãªã©ãååãäœæããçŽ æŽããããã®ã¯ãã¹ãŠçŽ æŽãããã§ãããCïŒéçºè ãããã䜿çšã§ããªãå Žåã¯æ©èœããŸããã ããã§ãç§ã¯ããªããžãäœæããŠããŸããããã»ã¹å šäœãç°¡çŽ åããããã«ãèªåçæãããã¯ã©ã¹ã©ã€ãã©ãªãšããã€ãã®æ°ããçš®é¡ã®ã³ãŒããžã§ãã¬ãŒã¿ããããŸãã ãããŠãããã«å°ããªææžãã³ãŒããæ¥çå€ãŸãã¯ã©ãããŒãšããŠè¿œå ããŠããã¹ãŠãå¯èœãªéãã·ãŒã ã¬ã¹ã§ãšã¬ã¬ã³ãã«ããŸãã
å€ãã®å Žåãèªåçæãããã³ãŒããèŠããšãããŸãè¯ããªãã®ã§ããããçæãããŠããããšãç解ã§ããŸãã ç§ã®ä»äºã®äžéšã¯ãã³ãŒãçæãå¯èœãªéãèªç¶ã«èŠããããšã§ãã ããã€ãã®ãªãœãŒã¹ã®ãªã¹ããååŸããå¿ èŠããããæåŸã«ãªã¢ãŒãããã·ãŒãžã£ãžã®åŒã³åºãã«å¯ŸããŠ20ã®çããååŸããå¿ èŠããããšæ³åããŠãã ãããããããå埩ããã ãã§ããã®ãããªç¶æ³ãã·ãŒã ã¬ã¹ã«è§£æ±ºããããã®ãããªã³ãŒããæžãããšã確èªããŸã-å°ããæåŸã®ä»äžããå šäœçãªåçã¯å®å šã«ç°ãªã£ãŠèŠããŸãã
-ã€ãŸããããªãã®ä»äºã¯ãå®éã«ã¯ãèªåçæãããã³ãŒãããã¥ãŒãªã³ã°ãã¹ãã«åæ Œãããããšã§ããïŒ :)
ãæ¯ãããã¯çŽ æŽãããããšã ïŒã ç§ãã¡ã¯ããã«è¿ããšã¯æããŸãããã圌ã¯å¥ã®ãã¹ãã«åæ ŒããŸããã³ãŒããžã§ãã¬ãŒã¿ãŒã䜿çšãããšãæ°ãŸããã«åŸå±ããŠãããšæãããã圌ãããªãã®ããã«åããŠãããšæããŸãã ç§ãã¡ã®ã±ãŒã¹ã§ã¯ãéçºè ãããââã»ã¹ãå¶åŸ¡ããŠãããšç¢ºä¿¡ããŠããŸãã
-.NETãã©ãããã©ãŒã ã«æ»ãïŒ.NETéçºè ãè¿ãå°æ¥ã«äºæ³ããæãéå¿çãªå€æŽã¯äœã§ããïŒ ããããäœå¹Žãå ãè¡ãã®ã¯é£ããã§ãããããããä»åŸæ°ãæéã®æåŸ ãå ±æããŠãã ããã
ããã¹ãŠã¯ããªããã©ãã«ãããã«äŸåããŸããã ãããžã§ã¯ããproject.jsonã®æ代ã«åæ»ããŠããå ŽåããŸãã¯ããã¹ãŠã«ã€ããŠæ°ã«ããªãã£ãã®ã§ãç§ã¯ãŸã VS2013ã䜿çšããŠããŸãããã€ãŸãææ°ãªãªãŒã¹ã«è¿œãã€ããã®ã§ãã VS2017ãç»å Žãã.NET Core SDKãç»å Žãããã¹ãŠããªãªãŒã¹ãããããŒã¿çã§ã¯ãªããªããŸããããããäœãæå³ããã®ããç解ããããšãçããã«ãé¡ãããŸãã ã¯ããæéãããããŸãããããã¥ã¡ã³ãã¯åŒãç¶ãç©æ¥µçã«æ¹åãããŠããŸãã ããããããã¯çŸåšã®ç¶æ³ã«è¿œãã€ãããã«ãã©ããªããã°ãªããªãéã«ã€ããŠã§ãã
ãããŠæªæ¥ã«ã€ããŠèšãã°ãç§ãã¡ãåŸ ã£ãŠãã次ã®ã°ããŒãã«ãªãã®ã¯.NET Standard 2.0ã§ãã æ¢ã«.NET Standard 1.0ã1.2ã1.3ãªã©ããããŸããã -ããã¯ãããŒã¿ãã«ã¯ã©ã¹ã©ã€ãã©ãªã«é¢ããã¯ãã¹ãã©ãããã©ãŒã éçºãä¿é²ããæåã®è©Šã¿ã§ã¯ãããŸããã ãããã.NET Standard 2.0ã¯ã.NETãã¹ã¯ãããã§äœ¿çšããŠãããããã¯ããã«å€ãã®ãã©ãããã©ãŒã ã«ãŸãããåæ¢ãªæ°ããäžçã§ãã .NET 4.5å°çšã«äœæãããã¯ã©ã¹ã©ã€ãã©ãªã䜿çšã§ããããã«ããéåžžã«ã¹ããŒããªããŒã«ããããŸããäœæè ã¯ãããµããŒãããŠããŸãããã.NET Standard 2.0ã§å®è¡ããŠã害ã¯ãããŸããã ããã«ãããŒã«ãããã¯ãŸããŸãäœã¬ãã«ã«ãªã£ãŠãããšæããŸãã äž»ãªããšã¯ãWPFãšWinFormsã䜿çšããŠããªãããšã確èªããããšã§ãããã¹ãŠãæ£åžžã«åäœãããã®ãããªã©ã€ãã©ãªã¯.NET Standard 2.0ã®ã³ã³ããã¹ãã§äœ¿çšã§ããŸãã
ãŸãã«ãã®ãããªéçºæ¹æ³ãçŽæãããŠãããçŸåšã®.NET Core SDKã¯åã«è¯ãã ãã§ãªããæ¬åœã«è¯ããã®ã§ããã以åãšæ¯èŒããŠå€§ããªåé²ã§ãã ãããŠããã€ã¯ããœããã¯ããã§æ¢ãŸããªããšæããŸãã ãããã£ãŠããŠãŒã¶ãŒã¢ããªã±ãŒã·ã§ã³ãäœæããªãå ŽåïŒæããã«UIã¯éèŠã§ãããå€ãã¯ãã©ãããã©ãŒã ã«äŸåããŸãïŒã. NETã.NETã§ãããã¯ãã¹ãã©ãããã©ãŒã ãæ倧éã«æŽ»çšããŠãããšããäºå®ã«é Œãããšãã§ããŸãã Xamarin for Androidããã³iOSããã®å±éã®ã³ã³ããã¹ãã§ãããæå³ããããšã¯ãŸã æ確ã§ã¯ãããŸããããã©ã®ããã«æ©èœããããèŠãã®ã¯éåžžã«èå³æ·±ãã§ãããã
ããã§ã«å®å®ããŠããããã誰ã§ãã§ããã ãæ©ã.NET Coreã®ææ°ããŒãžã§ã³ã«ã¢ããã°ã¬ãŒãããããšããå§ãããŸããã ãããŠãå€ä»£ã®.NET 4.0ã¬ã¬ã·ãŒãããžã§ã¯ããã©ããããïŒ
-ãã®å Žåã.NET Coreã«ã¢ããã°ã¬ãŒãããå¿ èŠã¯ãããŸããã å€ãSDKã§.NET Coreã䜿çšãã project.jsonã䜿çšããå Žåãã§ããã ãæ©ãæ°ããããŒã«ãããã«ç§»è¡ãã䟡å€ããããŸãã æ¥ãå¿ èŠã¯ãããŸããããããŒããããã«è¿œå ãã䟡å€ããããŸãã
ãŸãã.NET 4ã§ã®ã¿åäœããã¬ã¬ã·ãŒã¢ããªã±ãŒã·ã§ã³ã®ã¿ã䜿çšããŠããå Žå...ãã¹ãŠã¯ç¹å®ã®ã±ãŒã¹ã«äŸåããŸãïŒé·æçãªå°æ¥ãããå Žåã¯ã.NET Coreãžã®æŽæ°ã«æéããããããšãçã«ããªã£ãŠããŸãã TargetFrameworkã.NET 4.0ã§ãããçãããã©ã€ãã©ãªã䜿çšããªãå Žåãã»ãšãã©ã®å Žåã.NET Coreã«ç§»æ€ããã ãã§ãå±éç°å¢ã®éžæè¢ãå€§å¹ ã«æ¡å€§ããŠããããšãããããŸãã
æ¢ã«Windows Serverã§å€æ°ã®ãµãŒãã¹ãå®è¡ããŠãããLinuxã³ã³ãããŒã«ã€ããŠå€ãã®è¯ãããšãèããŠãããšããŸãããïŒWinã³ã³ãããŒãããããšã¯ç¥ã£ãŠããŸãããLinuxã®å Žåãéžæã®å¹ ã¯ã¯ããã«åºãã§ãïŒã ãããã.NET Coreã«ç§»æ€ããå ŽåïŒASP.NETã¢ããªã±ãŒã·ã§ã³ããããšä»®å®ãããšãASP.NET Coreã¯å°ãç°ãªããŸãïŒããã¥ãŒãã³ã°ãšãã©ãããã©ãŒã ã®éžæå¹ ãæ¹åãããŸãã ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ã«é¢ããŠèšãã°ãWindowsã§ãµããŒããããŠããªãTravisã䜿çšã§ããŸããããããããã¯åé¡ã§ã¯ãããŸãããéåžžã®CIã®äžéšãšããŠTravisã§ãã¹ããå®è¡ã§ããŸããã ããããã¹ãŠã人çãããè¯ãããŸãã
ãã¡ãããããã¯ãã¹ãŠã®äººã«åœãŠã¯ãŸãããã§ã¯ãããŸããã 倧ããªå€æŽãæåŸ ãããŠããããçæ³çã«ã¯è¿ãå°æ¥ã«çœ®ãæããããå€ãã¢ããªã±ãŒã·ã§ã³ãããå Žåããã¹ãŠã®ç§»æ€äœæ¥ã¯ç¡æå³ã§ãã ããããç§ãã¡ã¯ãããžã§ã¯ããå®çšŒåããæéãšãå€æŽã®æ°ãéå°è©äŸ¡ããåŸåããããšæããŸãã ãäœããããŸãããããã§çµãããŸããå€ãVSãªã©ã«åºã¥ããŠãã«ãããã«ãããŸããæçµçã«ã¯ããã®ãããªå€æŽã¯ãããŸããã æ代é ãã®ç°å¢ã§ã®å±éã«å¹Žã è²»ãããŠããã®ãããª20ã®å€æŽãè¡ãå¿ èŠããããšãããããã以åã«è©ŠããŠã¿ãŠãããçŸä»£çãªãã®ã«é²ãã¹ãã ããšããèãã«ãã©ãçããŸãã
ã¯ãã¹ãã©ãããã©ãŒã ã®.NETãšãµãŒããŒã®ãšã³ã¿ãŒãã©ã€ãºåžå Žã®ç«¶äº
-ãªãã»ã©ã ã¯ãã¹ãã©ãããã©ãŒã ã®.NETã«ã€ããŠã¯ãŸã çåããããŸããå€ãã®ãã©ãããã©ãŒã ããµããŒãããã®ã¯è¯ãèãã ãšæ¬åœã«æããŸããïŒ å·šå€§ãªã€ã³ãã©ã¹ãã©ã¯ãã£ãããããšã¯æ¢ã«è¿°ã¹ãŸãããã.NETã¯ã¯ãã¹ãã©ãããã©ãŒã ãšã³ã¿ãŒãã©ã€ãºããã³ããã¯ãšã³ãã«ããŽãªã§Javaãšç«¶åã§ããŸããïŒ
-絶察ã«ïŒ ããã¯ã.NETã«ãšã£ãŠè¯ãã¢ã€ãã¢ã§ã¯ãªãã.NETã«ãšã£ãŠå¿ èŠãªã¢ã€ãã¢ã ãšæããŸãã ãµãŒãããŒãã£ã®ããŸããµããŒããããŠããªãç°å¢ããµããŒãããWindowså°çšãã©ãããã©ãŒã ã®åœ¢ã§ã®.NETã®éåœã¯ã人ã ãä»äºä»¥äžã«èŠããã§ããããããªãã©ãããã©ãŒã ã§ãããšã¯èããããŸããã ãããã£ãŠãããã¯å¿ èŠãªä»äºã§ãããå€ãã®å¯èœæ§ã解ãæŸã€ã ãã§ãªãã.NETãæ°å¹Žã§é³è åããããšãèš±ããŸããã§ããã ã¯ãã¹ãã©ãããã©ãŒã 以å€ã®ãµãŒããŒãœãªã¥ãŒã·ã§ã³ã¯èŠåŽãããšæããŸãã Linuxã®ã¿ã䜿çšããŠããç°å¢ããWindowsç°å¢ããå£æªãªåŸå åŒããšããŠæ±ã£ãŠããç°å¢ã§ãåãããšãããããŸããWindowsã¯ãRubyãšPythonã®ãµããŒããå°å ¥ããŸããã Gitã§ãåãã§ããã¯ããBashïŒShellïŒã§ããWindowsã«ãªããŸããã ãã«ããã©ãããã©ãŒã ã¯ä»ããç掻è³éãã ãšæããŸãã
-ãªãã»ã©ã ç§ã¯ããªããªã¢ã³ã®è³ªåãããã«ã¯ããããŸããïŒJavaãšæ¯èŒãã.NETã«ã€ããŠã©ãæããŸããïŒ ç¹ã«ãšã³ã¿ãŒãã©ã€ãºåžå Žã§ã¯ãç§ãç解ããŠããããã«ãAzureãšãšã³ã¿ãŒãã©ã€ãºã€ã³ãã©ã¹ãã©ã¯ãã£ã«é¢ããMicrosoftã®åãçµã¿ãèŠãŠãããããã¯ã¿ãŒã²ããäŒæ¥ã®1ã€ã§ãã
-.NETã¯ééããªãJavaãšç«¶åã§ããæ£çŽãªãšãããç§ã¯åžžã«CïŒã§éçºããããšã奜ã¿ãŸãã èšèªèªäœãã¯ããã«åªããŠããããã§ãã
ããã«ãé¢ããããJavaã«ã¯äžå®ã®å©ç¹ããããŸãããªãŒãã³ãœãŒã¹ã©ã€ãã©ãªãïŒåªããŠãããšããäºå®ã§ã¯ãããŸãããïŒã¯ããã«å€ããåé¡ã解決ããããã®ãªãã·ã§ã³ãå€ããããŸãã WebãµãŒãã¹ãã¬ãŒã ã¯ãŒã¯ãéžæããå ŽåãJavaã§ã¯å°ãªããšã30ã®ãªãã·ã§ã³ãããã.NETã§ã¯ãããã5ã§ãããããããããã«ããŠãããã®ãã¡ã®1ã€ã ãã䜿çšãããããJavaã®å Žåã¯ãããã³.NETã«ã¯å°ãªããšã1ã€ã®åªãããªãã·ã§ã³ããããããŸããŸãªJavaã圹ç«ã¡ãŸãããåæã«æ··ä¹±ãæãå¯èœæ§ããããŸãã ãããŠãæ¯é çãªãã¬ãŒã€ãŒãããªãå Žåãå€æ§æ§ã¯è¯ã解決çãèŠã€ããããã»ã¹ãè€éã«ããŸãã ãããã£ãŠãé©åãªå®è£ ãåãããã¬ãŒã ã¯ãŒã¯ãèŠã€ãããã ãã®å Žåãããã¯.NETåŽã§ã»ãšãã©å©ç¹ã«ãªããŸãã
ããã«ãæ £æ§ããããŸãã äžçäžã«ãšã³ã¿ãŒãã©ã€ãºJavaããã°ã©ããŒãšã¢ããªã±ãŒã·ã§ã³ãããããããããšãç¥ã£ãŠããŸããå€ãã®äººãããã®åäœããJavaã¢ããªã±ãŒã·ã§ã³ã䜿ã£ãŠ.NETçšã«æžãçŽããããšèšãããšã¯ãªããšæããŸãã ãããã次ã®ããã«ãªããŸãããã¢ããªã±ãŒã·ã§ã³ãä»»æã®æ¹æ³ã§æžãæããããšãã§ãããããããã€ãã®ãã©ãããã©ãŒã ããéžæããå¿ èŠããããŸããã æ°ããã¢ããªã±ãŒã·ã§ã³ãäœæããå ŽåãWebã¢ããªã±ãŒã·ã§ã³ããµãŒãã¹ããŸãã¯ãã®ãããªãã®ã¯é¢ä¿ãããŸããããã®å ŽåãJavaãš.NETã¯çã£åããããçŽãã¹ãã ãšæããŸãã äŒæ¥ã¯ãã®äŸ¡å€ã蚌æããããŸã§ããš1ã2幎ã¯.NET Coreã«æ³šæããã ãããšæããŸããããã®åŸãäŒæ¥ã§ã®äœ¿çšãå¢å ããCïŒã®å©ç¹ãæããããã¯ãã§ãã
-ã¯ããããããŸãããããããšãã ããã§ã¯éçºè åãã®JVMèšèªã«ã€ããŠã¯è§ŠããŸããããªããªããç§ãã¡ã¯holivarã®ããã«ããã«ããªãããã§ãããããããã1ã€è³ªåããããŸãã.NETäžã®Linuxã®ã¢ããªã±ãŒã·ã§ã³ãŸãã¯ãµãŒãã¹ã®éçºã§å®éã®çµéšããããŸããïŒ
-äžè¬ã«ãçŽç²ãªåœ¢ã§ã¢ããªã±ãŒã·ã§ã³ãéçºããããã§ã¯ãããŸããããæè¿ãGoogle Cloud Next 2017ã§ããããŒãžã£ãŒãšãšãã«ãASP.NET Coreã«éåžžã«å°ããªWebã¢ããªã±ãŒã·ã§ã³ãå®è£ ããAppEngineFlexible Environmentã®ã³ã³ãããŒã«å±éããŸããã ãã®ãããªèŠæš¡ã§-ã¯ããçµéšããããŸãã éç°ã¿ã€ã ã®Webãµã€ããASP.NET Coreã§æ§ç¯ãããçŸåšã¯Windowsã«å±éãããŠããŸãããLinuxã«ç§»æ€ããããšèããŠããŸããããã«åäœããªãçç±ã¯ãŸã£ãããããŸããã
ãããŠãç§ã®çµéšã§ã¯ã.NET Core for Linuxã¯ãããã ãã䜿çšããŠããéããéåžžã«åªããŠããŸãã ç§ãåé¡ãèŠã€ããå Žæã¯ãã«ãã¹ã¯ãªããã«ãããŸããïŒä»æã ãLinuxããã¯ã¹ã«VS Codeãã€ã³ã¹ããŒã«ããŸãããNodaTimeã䜿çšãããšãnetcoreappããã³netstandardããŒãžã§ã³ã§ã¯åé¡ãããŸããã§ãããã.NET 4.5ã®ã³ãŒãããã«ãããããšããŸããã 1ããã¯èšã£ãïŒããããç§ã¯.NET 4.5.1ãäœã§ãããããããªãã-ããã§ãã«ãã®åç §ã¢ã»ã³ããªãžã®ãªã³ã¯ãããã€ãåããŸããã ã ãããããªãã絶察ã«ã¯ãã¹ãã©ãããã©ãŒã ã§ããã.NET Coreã®ã¿ã«çŠç¹ãåœãŠãŠããå Žåãç§ã¯ãã¹ãŠãããŸããããšæããŸãããããã€ãã®éšåãã¯ãã¹ãã©ãããã©ãŒã ã§ãããä»ã®éšåãå®å šãªãã«ãªããŸãã MSãããã«åãçµãã§ãããšç¢ºä¿¡ããŠãããåç §ã¢ã»ã³ããªãç¹å®ã®å Žæã«ã€ã³ã¹ããŒã«ããããšã§ç¶æ³ãä¿®æ£ã§ããŸããããLinuxã§Windowsã³ãŒããå®è¡ããããããŸãããã¯ãã¹ãã©ãããã©ãŒã ã³ãŒããå¿ èŠã§ãã ãããŠãç§ãèšã£ãããã«ããã®éšåã¯ç¹ã«è¯ãã§ãã
CïŒ7ã«ã€ããŠäžèš
-CïŒã«ã€ããŠè©±ãã CïŒ7ããŒãžã§ã³ã¯æ¢ã«ãªãªãŒã¹ãããŠãããVS 2017ã§å©çšå¯èœã§ããã¿ãã«ã¯ã©ã¹ããã¿ãŒã³ãããã³ã°ããã®ä»ã®æ©èœããããŸãã éçºè ãšããŠããã®ãªãªãŒã¹ãšæ°ãããããã«ã€ããŠã©ãæããŸããïŒ ãããã¯åºã䜿çšãããŸããïŒ ãŸãã¯ãä»ã®ã¬ãžã§ãããååŸããèšèªã奜ãã§ããããïŒ
-ç§ã¯CïŒ7ã«éåžžã«æºè¶³ããŠããŸããä»ã§ã¯ã ãCïŒin Depthãã®ç¬¬4çã§ããã«ã€ããŠæžããŠããŸãã çŸåšãã¿ãã«ã«ã€ããŠæžããŠããŸããã¿ãã«ã¯ãã·ã³ãã«ã«èŠããŸãããé ããå°ããªãã®ããããããããŸãã åœåãã¿ãã«ã«ã¯èŠæããŠããŸããããä»ã§ã¯å®è£ ã§ã®å©ç¹ãããããŸãã ç§ãä»ç¢ºä¿¡ããŠããªãã®ã¯ããããªãã¯APIãäœæããŠã¿ãã«ãåºããã©ããã§ãã ãã®ãœãªã¥ãŒã·ã§ã³ã¯ãèšèªéçºè ããã«ãã»ã«åãããŠããªã軜éã®æ»ãå€åã«å¶éããŸãã äžæ¹ãç¹å®ã®ã¯ã©ã¹ãè¿ãå Žåãããã¯æéã®çµéãšãšãã«æ¹åãããå¯èœæ§ããããŸãã
ã¿ãã«ã¯ãæ ãè ã®éçºè ã«ãšã£ãŠå€§ããªå©ãã«ãªããŸãã ç¹å®ã®ã¯ã©ã¹ããŸãã¯å€æ°ãã°ã«ãŒãåãã軜éãªæ¹æ³ãšããŠã¿ãã«ã䜿çšããã©ã€ãã©ãªãŒå ã§ãããã¹ãŠãã¯ãŒã«ã§ãªããã°ãªããŸããã
ããªããèšåããå¥ã®éèŠãªæ©èœã¯ãã¿ãŒã³ãããã³ã°ã§ãã ãããŠãCïŒ7ã§ã®ãã¿ãŒã³ãããã³ã°ã§æã䟡å€ã®ããããšã¯ãååŸãããã¿ãŒã³ã§ã¯ãªãããã¿ãŒã³ã®æŠå¿µã®å°å ¥ã§ãã ç§ã¯ãããã®æŠå¿µãæèçã«å ±æããŠããŸãã çŸæç¹ã§ã¯ããisãæŒç®åããã³ã¹ã€ããã±ãŒã¹ã§ãã¿ãŒã³ã䜿çšã§ããŸãã ç§ãã¡ãçŸåšæã£ãŠããå¯äžã®ãã¿ãŒã³ã¯ãç䟡æ§ãšåã®äžèŽã§ãã ãããã£ãŠããcase x is 5ããèšå®ããå€ã5ã®å Žåã«äžèŽããããã¿ã€ããx is Stringãã§äžèŽãæ€çŽ¢ã§ããŸãã 以åã®ã¿ã€ããããã³ã°ã¯å¥œãŸãããããŸããã§ããããå®éã«ã¯éåžžã«æçšã§ããããšãå€æããŸããã
å人ã®ãã«ã»ã¯ã°ããŒããã®éç°ã¿ã€ã ã§ã®æåã®CïŒ7 ãã«ãªã¯ãšã¹ããæ¢ã«åãå ¥ããŸããããã®ãã«ãªã¯ãšã¹ãã¯ããã¿ãŒã³ãããã³ã°ã®å©ç¹ãå ·äœäŸãšæ確ã«ç€ºããŠããŸãã ãããå®éã«ã¯ãããã¯FïŒãšHaskellããåŠãã æèšã瀺ããŠãããããŸããŸãªç¶æ³ã§ã®åäœãä»ããŠé¢æ°ãèšè¿°ããããšãã§ããŸããããã¯if-else-if-else-if-elseãšæ¯èŒããŠéåžžã«æ確ãªèšè¿°ãã¹ã§ãã ããã®ã±ãŒã¹ã¯ãã®çµæã«å¯Ÿå¿ããããã¯ããã«å¯Ÿå¿ããããšèšããšããæ¬è³ªçã«if-elseãšåãããšãè¡ããŸãããç解ããã®ã¯ã¯ããã«ç°¡åã§ãã ããã¯ãã¹ãŠææã«èŠããŸããCïŒ7.1ã®ãããªããã€ãã®äžéãªãªãŒã¹ã§ã¯ãå€ã®å解ãªã©ãããå€ãã®ãã¿ãŒã³ãèŠãããããšãæåŸ ããŠããŸãã
ãã®ç¶æ³ãæ³åããŠãã ããã DateTimeãããããããå解ããŠããã¿ãŒã³ãããã³ã°ã§å¹Žã2016幎ãè¶ ããã±ãŒã¹ãèŠã€ããããšãã§ããŸãCïŒ6ã§åæ§ã®ããšãã§ããŸããããããã³ã°æ€çŽ¢ã§ã¯å解ã䜿çšããŸããã ãããã£ãŠããã¿ãŒã³ãããã³ã°ã¯å°æ¥ããã«å€ãã®æ©èœãæäŸã§ããŸãã ãããã¯CïŒ7ã®æ倧ã®æ©èœã§ãããéå°è©äŸ¡ãã¹ãã§ã¯ãããŸããã
ã»ãšãã©ã®ASP.NET CoreãŠãŒã¶ãŒã«ãšã£ãŠã®ãã1ã€ã®å€§ããªå©ç¹ã¯ãéåæ/åŸ æ©ã®å¹³åŠæ§ã«ãããŸãã以åã«éåæã¡ãœãããTaskãTaskããŸãã¯voidã®ã¿ãè¿ãããšãã§ããå Žåãç¹å®ã®ãã¿ãŒã³ã«äžèŽãããã®ãè¿ãããšãã§ããŸãïŒãã ããããã¯ãã¿ãŒã³ãããã³ã°ïŒïŒããã®ã¿ã€ãã®å€ãäœæããŠããªããã©ããã瀺ãå±æ§ãããå Žåã¯ããã®ãã¡ã¯ããªã䜿çšããŸãã å€ãã®äººããã®ãã¿ãŒã³ãã³ãŒãã§äœ¿çšãããšã¯æããªãããä»ã®äººã®å®è£ ã䜿çšã§ããã ãããŠãValueTask-Taskã®ãã軜ãããŒãžã§ã³-ã¯ã»ãŒå šå¡ã䜿çšããŸããããã¯ASP.NET CoreããŒã ãããŸããŸãªæ¹æ³ã§æé©åããæ§é ã§ãããéåæã®ãã¹ãŠã®å©ç¹ãååŸããããããŒãããªãå Žåã®å¿çæéãçãç¶æ³ã§ç¹ã«åœ¹ç«ã¡ãŸãäžèŠãªTaskãªããžã§ã¯ããåŠçããGCã ç§ã®æèŠã§ã¯ãããã¯å€ãã®äººããç¬èªã®æ»ãå€åãå®è£ ããæ¹æ³ãã®è©³çŽ°ã«å ¥ããã«äœ¿çšããèå³æ·±ãæ©èœã§ãã
æ©èœã®ãªã¹ãã ããèŠããšãCïŒã¯ãäž»èŠãªé©æ°ã«å ããŠãref-localãref-returnã®ãããªå°ããªãã®ãååŸããŸãããããã¯ç解ããã®ãéåžžã«å°é£ã§ãïŒå°ãªããšãç§ã«ãšã£ãŠïŒã GCãªã©ã®ããã©ãŒãã³ã¹ã®ç¹å®ã®åŽé¢ã«éåžžã«ææãªé«æ§èœã²ãŒã ã®Unityéçºè ã«ãšã£ãŠéåžžã«åœ¹ç«ã€ãšä¿¡ããŠããŸã-ä»ã®éçºè ãããæ§é äœã䜿çšãããšããæèŠããããŸãã
outå€æ°ã®ãããªããã€ãã®çŽ æŽãããæ¹åããããŸããå€æ°ãåºåãã©ã¡ãŒã¿ãŒã®åŒæ°ãšããŠäœ¿çšãããšåæã«å€æ°ã宣èšã§ããããã宣èšããå¿ èŠã¯ãããŸããã
int x; if (int.TryParse("some text", out x)) { // ... }
if (int.TryParse("some text", out int x))
, . , C#: , - - , , , . out- , .
, . , , : async-, , , , iterator-, , , , , FooImpl, . FooImpl . , , , .
â , .NET, . #1 Stack Overflow â . , ?
â , . : Stack Overflow , . , â , , , . , , , . , , : « , , , , ». , , , , , . C# 7 .
, , , . ⊠: ( ), . : « , , », â , : « , ?». , , . , , . , . , , .
- , NUnit Noda Time, - Linux , Windows. , en-uk, NUnit, ,
String.EndsWith()
assert.EndsWith()
, NUnit , . , . :
- ,
- â , - ?
- ,
- ,
- Noda Time, , NUnit
- NUnit , NUnit- «,
String.EndsWith()
, , , » - 10 ,
String.EndsWith()
- , Linux , Windows
- SO, , : Windows UK English Linux
- US English, Linux.
, , .
, , , â . , . , , , : « . Android Java, SQLite. », â , Java, Android SQLite? . , , ? , , . , « », « » â , - .
â ? , ? ?
â -, , â , , . «# », . , , , , . , , /. , .
, . JavaScript , Node.js - . C#, Java, Ruby, Python , , . - - â . , . â , , 5 , , , .
, , , , . , . : «, , , ». -, : , , iOS-, . , iOS , , .
, , , . , , : « Strings Strings» â , . - , , , . , . . , - . « , , , ». , , â . .
â , . , DotNext «Back to Basics» , : , . - ?
â : , , /. , , , - Unicode . 65536 , , Basic Multilingual Plane. planes, « , , - , BMP», -BMP BMP. - ! 10 BMP, , , -BMP .
: , 10 , ? BMP «e» , , , . emoji: Java .NET,
String.Length()
, . , ? : , , . , .
, , . , , - .NET: Noda Time, . , 2.0. , , , . , JavaScript , Date JS , . JavaScript API , .
, , , , : « 5 10 0, 0.5», â , .
â , , . , , â , ?
â , :
1. , Noda Time, - . DateTime.Now() - , , . Noda Time.
2. , , . DocFX, Sandcastle, , . . , , , - Stack Overflow, , , : « , ?» , .
3. . , , , â , . , , ⊠. , . , , , .
, â , , 2,5 . - «Everyday sexism», , . , , , .
phillennium DreamWalker . !