Riderã¯ããã§äœåºŠãèšåãããŠããŸãããèªè ã«å éšããã®éçºããã»ã¹ãèŠãŠãããããã«ãçç£ã®ããŸããŸãªæ®µéã§ããã»ã¹ã®è©³çŽ°ãç解ããªãããJetBrainsã«ç®ãåããŠè³ªåã«çããŸããã
- Riderãããžã§ã¯ãã®ããŒã ãªãŒããŒã§ãããäžçŽéçºè
ã§ããKirill Skrygan ã
- Riderã®ãªã¢ã¯ãã£ããã«ãããã»ã¹éä¿¡ãããã³ã«ã®ããŒãããããããŒã§ããDmitry Ivanov ã
- ACM ICPCã®éã¡ããªã¹ãã§ããAndrey Akinshin㯠ãRiderã®NuGetãããŒãžã£ãŒãæ
åœããŠããŸãã
Riderãããžã§ã¯ãã®ã©ã®éšåãæ åœããŠããŸããïŒ ã©ã®ãããªã¿ã¹ã¯ãèšå®ãããŠããŸããïŒ
ããªã«ã»ã¹ã¯ãªã¬ã³ïŒ
ç§ã¯Riderãããžã§ã¯ãã®ããŒã ãªãŒããŒã§ãã ç§ã®ã¿ã¹ã¯ã«ã¯ãã¿ã¹ã¯ãã©ã³ãã³ã°ãããŒã å šäœã®èª¿æŽãããã³éšåçã«è£œåèšèšãå«ãŸããŸãã ããã«ãç§ã¯å€ãã®ããã°ã©ã ãäœæããããã¹ãããšãã£ã¿ãŒãã³ãŒãè£å®ãå€æ°ã®äºæ¬¡çãªå°ããªã¿ã¹ã¯ã®åæãæ åœããŠããŸãã
ããããªãŒã»ã€ã¯ããïŒ
Javaãš.NETã®éã®ãªã¢ã¯ãã£ãããŒã¿è»¢éãããã³ã«ã«åŸäºããŠããŸãã
ã¢ã³ãã¬ã€ã»ã¢ãã³ã·ã³ïŒ
Ryderã«ã¯å€ãã®ããŒããããããããã¯ãã¹ãŠäºãã«å¯æ¥ã«é¢é£ããŠããŸãã ååãšããŠããµãã·ã¹ãã ããšã«è²¬ä»»è ãããŸãã ãã ããå®éã«ã¯ããã®è²¬ä»»ç¯å²ã«å ããŠãããŒã ãšç©æ¥µçã«å¯Ÿè©±ããä»ã®ãµãã·ã¹ãã ã®æ¹åãæ¯æŽããå¿ èŠããããŸãã çŸåšãNuGetãããŒãžã£ãŒãšåäœãã¹ãã®ãµããŒãã«ç©æ¥µçã«åãçµãã§ããŸãã
æè¡çãªèŠ³ç¹ããå®è£ ããã®ãæãé£ãããšå€æãããã®ã¯äœã§ããïŒ
ããªã«ã»ã¹ã¯ãªã¬ã³ïŒ
ããã³ããšã³ããšããã¯ãšã³ãã®çžäºäœçšã¯äžè²«ããŠããå¿ èŠããããŸãããåæã«é«éã§ããå¿ èŠããããŸãã ãã¡ããããã¹ãŠã®ããŒã¿ãã¡ã€ã³ããã»ã¹ãããŒã§å®è¡ã§ããŸãããé«éã§ããïŒ ãã®ããã2ã€ã®ããã»ã¹ããã«ãã¹ã¬ããã¢ãŒãã§äºãã«åå¿ããã¢ãã«ã«ç§»ããŸããã ãã®ããã»ã¹ã®å®è£ äžã«çºçãããã¹ãŠã®åé¡ã解決ããããšãæãé£ããã¿ã¹ã¯ã§ãã£ãããã«æããŸãã
RiderãèšèšãããšããéèŠãªäžå€æ¡ä»¶ã䜿çšããŸããããã³ããšã³ãã¯ããã§ã«åäœããŠããããã¯ãšã³ãã«ãã€ã§ãåå ã§ããŸãããã®éãåæ§ã§ãã ããã«ãããæœåšçãªæ©èœäžã®å©ç¹ãåŸãããŸããããšãã°ãèŽåœçãªåé¡ãçºçããå Žåã«ãåäœäžã®ããã³ããšã³ãã§ããã¯ãšã³ããåèµ·åã§ãããªã©ã§ãã ãã ãããã®ã¢ãããŒããæäŸããäž»ãªãã®ã¯ãäžè²«æ§ã®ããã³ãŒããæžãããšã®å©äŸ¿æ§ã§ãã å®éããã®äžå€åŒããªããã°ãã€ãŸããããã¯ãšã³ããšããã³ããšã³ãã®ç¶æ ãç¶æããªããã°ãçžäºäœçšã¯å¹³å¡ãªèŠæ±ãã€ãŸãå¿çã¢ãŒããã¯ãã£ã«ãªããŸãã è€éãªãã«ãã¹ã¬ããIDEã®å Žåãããã®èŠæ±ãä»ããåãå ¥ããããšãã§ããŸããããŸãã¯ãã¹ãŠãããã«èªã¿èŸŒãŸããæ¢ã«åãå ¥ãå¯èœãªã¡ãã»ãŒãžãéä¿¡ããããããã¯ãšã³ãã«äŒããããšãã§ããŸããïŒããšãã粟ç¥ã§ãã³ãŒãã«äžèŠãªãã§ãã¯ãå±±ç©ã¿ã«ãªããŸãã
ããã³ããšã³ããšããã¯ãšã³ãã®äž¡æ¹ãè€éãªãã«ãã¹ã¬ããããã»ã¹ã§ããããšãèãããšããã®ãããªã¢ãããŒãã¯ãã©ã€ããšãããããã¯ã®å°çãžã®çŽæ¥çãªéã«ãªãã§ãããã ãã®çµæãã¢ãã«ã®ãªã¢ã¯ãã£ããã€å¯å€ç¶æ ãæã¡ãäž¡æ¹ã®ããã»ã¹ã§ãããã³ã«ã®äž¡åŽã«åæ£ãããã¢ãã«ã«å°éããŸããã MVVMã¢ãŒããã¯ãã£ã®ãããªãã®ã§ããã ãããããã¯çŽç²ã«ããã°ããŒã¿ã®äžæçãªè»¢éãªãã§ã¯ã§ããªãããã§ãã ãããããIntellijãã©ãããã©ãŒã ã®ãããªåŒ·åãªããã³ããšã³ãããªããã°ãMVVMã¯ããã¯ãªãŒã³ã«ãªããŸãã
ããããªãŒã»ã€ã¯ããïŒ
ãã«ãããã»ã¹ã¢ããªã±ãŒã·ã§ã³ã§å¥å šãªã¹ã¬ããã¢ãã«ãååŸããŸãã Intellij IdeaãšReSharperã®2ã€ã®ã³ãŒãããŒã¹ããããããããããã«ãã¹ã¬ããç°å¢ã§ã®çãæ¹ãç¬èªã®ããã¯ãåå ¥å¯èœæ§ã®ç®¡çãããã¡ã€ã³ã¹ã¬ãããªã©ãç解ããŠãããšããŸãã ããã«ãmsbuildã¿ã¹ã¯ããããã¬ãŒãªã©ãããã€ãã®è¿œå ããã»ã¹ããããŸãã ãããŠä»ãããªãã¯ããããã¹ãŠããé¢éžãããå¿ èŠããããããã«ãã©ã°ãã解æŸãããçž«ãç®ç°å¢ã§ãã©ãã©ã«ãªããªãããã«ããŸãã
æåã®ãããã¿ã€ã-ãŸã RiderãšåŒã°ããŠããªãã£ã-ã§ã¯ãGoogle Protobufã䜿çšããéåžžã®RPCã«åºã¥ããŠäœæ¥ãæ§ç¯ããŸããã ãã¢ã€ãã¢ãããã¥ãŒãšããŠäœ¿çšããMMVMã®åçã«åºã¥ããŠçžäºäœçšãæ§ç¯ããããšããèªèãããã«çŸããŸããã .NETã®äžçã§ã¯ããªã¢ã¯ãã£ããªXAMLã«æ £ããŠãããæ代é ããšèŠãªãããä»ã®ååã«åºã¥ããŠUIãæ§ç¯ããããããŸããã§ããã 質åãçºçããŸãã-java Swingããªã¢ã¯ãã£ããããã»ã¹éããããŠã¯ãã¹ãã©ãããã©ãŒã ã®ã¬ãŒã«ã«ä¹ããæ¹æ³ã¯ïŒ JetBrainsã§ããããããšã§ãããæ¢åã®ãœãªã¥ãŒã·ã§ã³ã¯ã©ããç§ãã¡ã«é©ããŠããªãã£ããããç¬èªã®ãœãªã¥ãŒã·ã§ã³ãéçºãå§ããŸããã
ViewModelã¯ãKotlin DSLæ©èœã䜿çšããŠéåžžã«çã圢åŒã§èª¬æãããŠããŸãã ããã»ã¹éã§åæããããªã¢ã«Javaããã³CïŒã¯ã©ã¹ã¯ãã¢ãã«ããçæãããŸãã ã¢ãã«ã®å€æŽã¯ãäžæ¹ã§ãåäœçšãçæããŸãã
ããã«ãæ£çŽãªViewModelã®ãã¬ãŒã ã¯ãŒã¯å ã§ãUIã³ã³ãããŒã«ã®å¶éãšããã°ã©ãã³ã°ã®è€éãã®ããã«æµæããããšãã§ãããäžéšã®æ©èœã§ã¯ããŒã¿å šäœã転éããå¿ èŠããããŸãã-ããšãã°ãã³ãŒãè£å®ã¯ãã®5äžèŠçŽ ãã¹ãŠã転éã§ããããšãæããã«ãªããŸããã ããã«ãããã³ã«ããã€ããªåããæé©åããããšãã§ããŸããïŒææå°æ©ã®æé©åã®ãã¹ãŠã®å察è ã«ããã«ã¡ã¯=ïŒã äžè¬ã«ããããã³ã«ã®ããã©ãŒãã³ã¹ã«ãã ããããšã¯ãããŸããã ç§ã®æèŠã§ã¯ãå©äŸ¿æ§/é床ã®ç¹ã§ã¯ããã10ã§ããããŸãã«ãã®ãããªæè¡çãœãªã¥ãŒã·ã§ã³ãéžæããããšã«ããŸããã
ã¢ã³ãã¬ã€ã»ã¢ãã³ã·ã³ïŒ
æãé£ããéšåã®1ã€ãç¹å®ããããšã¯å°é£ã§ãã ã¿ã¹ã¯ã¯éåžžã«ç°ãªãããããããç¬èªã®æ¹æ³ã§è€éã§ãããæ¯æ¥æ°ãã課é¡ã«çŽé¢ããªããã°ãªããŸããã ä»æ¥ãããªãã¯RïŒãšIDEAã®ããã€ãã®ãµãã·ã¹ãã ã®ããã€ã¹ãæ±ã£ãŠãããææ¥ããããã®ãµãã·ã¹ãã ãåéã«ãªãããšãå¯èœã«ããåå¿æ§éåæã¢ãã«ãèšèšããããšããŠããŸãïŒãããŠãè¿ éãã€å¿ççã«ãããè¡ããŸãïŒããããŠæåŸæ¥ãããªãã¯ãã®ãããªçç±ãç解ããããšããŠããŸãLinuxããŒãžã§ã³ã¯æ©èœããŸããã
Linuxçšã®ããŒãžã§ã³ãéçºããéã«ã©ã®ãããªåé¡ãçºçããŸãããïŒ MacOS
ããªã«ã»ã¹ã¯ãªã¬ã³ïŒ
Linuxããã³MacOSã®å Žåãããã¯ãšã³ãã³ãŒãã¯çŸåšMonoã§å®è¡ãããŸãã äž»ãªã¿ã¹ã¯ã¯ãååãšããŠMonoã§å®è¡ãããããã«ãããžã§ã¯ãã³ãŒããæžãçŽããããã«é¢é£ãããã¹ãŠã®ãããžã§ã¯ãã€ã³ãã©ã¹ãã©ã¯ãã£ãä¿®æ£ããããšã§ããã ããã«ãç§ãã¡ã¯å®æçã«ããããçš®é¡ã®ç¹å®ã®Monoãã°ã«ééããŸããããã®æ€çŽ¢ãšãããã°ã¯å¿«é©ãªããã»ã¹ãšã¯èšããŸããã
ç¹å®ã®ã±ãŒã¹ã§ã®ãã«ãã§ãã¯ã®äžè¬çãªæ¬ åŠã«ãããå®å šãªããã¯ãšã³ãã¯ã©ãã·ã¥ãçºçããŸããã Monoã¯åçŽãã€ãã£ãããšãI / Oã³ãŒãã¯Monoã§èšè¿°ãããŸããããšãã°ãããŒãžãè¡ãããšãªããåãªã¯ãšã¹ãã«å¯ŸããŠFileSystemTrackerãã³ãã«ãéãããŸãŸã«ããŸãïŒãããŠãããã§OutOfMemoryã«æšæ¶ãéä¿¡ããããã©ãŒãã³ã¹ã®åé¡ãæããã«ããŸããïŒã äžéšã®ããŒãžã§ã³ãããMonoã¯Webãããžã§ã¯ãã®ã¿ãŒã²ãã£ã³ã°ãåæ¢ããŸããã å¥ã®èšèã§xbuildã«å€ããŸããxbuildã®APIã¯ãéåžžã«ãåµé çã«ãæ©èœããŸããããã¯ãç¹ã«èšèšã¢ãã«ã®å€æŽã«é¢ãããã®ã§ãã ãã®äžéšã¯ãMonoã³ãŒãèªäœã§ä¿®æ£ããããããé åžããç¬èªã®æ段ã§äœãããã€ãã¹ããŸãã ããã§ããäžè¬çã«èšã£ãŠãMonoã®ä»äºã®è³ªã«ã¯ããããé©ãããããšèšããŸãã ã¯ãããã°ã¯ãããŸãããäžè¬ã«ããã¹ãŠãäœããã®åœ¢ã§æ©èœããããŸããŸãªãã©ãããã©ãŒã ã§å€å°å®å®ããŠããŸã-ç§ã¯å人çã«ææªã®äºæ ãäºæ³ããŠããŸããã
ããããªãŒã»ã€ã¯ããïŒ
Monoã«ã¯åé¡ããããŸãã ããšãã°ãããŒãžã§ã³4.4ã§ã¯ããœã±ããããã³ã°ãå§ããŸãã-ãã°ã§ããããšãå€æããŸããã ããã§ãã.NET Frameworkã¯ã¯ããã«å®å®ããŠããŸãã ããããç§ãã¡ã¯æå¥ãèšããŸãã-ããããéããŸã=ïŒ
ã¢ã³ãã¬ã€ã»ã¢ãã³ã·ã³ïŒ
æåã«ãMonoã§RïŒãå®è¡ããåé¡ã解決ãããŸããïŒWPFãšCOMãžã®äŸåé¢ä¿ãã«ããããå®å šã§ãªãããžãã¯ãããçŽããMonoèªäœã®ãã°ãç·šéãããªã©ïŒã 次ã«ããã©ãããã©ãŒã åºæã®åé¡ã解決ããŸããïŒããšãã°ãRïŒã®\ r \ n vs Ideaã®\ n;ãã¡ã€ã«ã·ã¹ãã ãšã®çžäºäœçšãªã©ïŒã çŸåšãã¯ãã¹ãã©ãããã©ãŒã éçºã¹ã¿ãã¯ã®å®æãç©æ¥µçã«è©Šã¿ãŠããŸãïŒããšãã°ãXBuildãšã®ä»²è¯ãã«ãªãããšãåŠã³ãŸãïŒã
IDEã®æ©èœã¯OSããšã«ç°ãªããŸããïŒ ãããããªããäœã§ïŒ
ããªã«ã»ã¹ã¯ãªã¬ã³ïŒ
ããããå®è³ªçã«éãã¯ãããŸããã å°ãªããšãç§ã¯ãã¹ãã§ã¯ãããŸãã:)
ããããªãŒã»ã€ã¯ããïŒ
ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ãã£ãŠç°ãªãããšããªãããã«åªããŠããŸãã ããããããã«ãã·ã¹ãã ãç°ãªãå¯èœæ§ããããŸãã
ã¢ã³ãã¬ã€ã»ã¢ãã³ã·ã³ïŒ
ç§ãã¡ã®ã¿ã¹ã¯ã¯ãæ©èœã«éãããªãããšã確èªããããšã§ãã æã«ã¯ç©äºãæãããã«ã¹ã ãŒãºã«é²ãŸãªãããšããããŸãããããŒãžã§ã³1.0ãåŠçã§ãããšæããŸãã
ããªãã®æèŠã§ã¯ãRiderãMSVSãšæ¯èŒãããšããã©ã®Rideræ©èœããã©ãŒæ©èœã§ããïŒ
ããªã«ã»ã¹ã¯ãªã¬ã³ïŒ
ãŸãããã¹ãŠã®æ¹åã§æ¡éãã«åŒ·åãªæ©èœããããŸãã ããã²ãŒã·ã§ã³ãã³ãŒãåæããªãã¡ã¯ã¿ãªã³ã°ïŒè¿ éãªä¿®æ£ãæå³ãã³ã³ããã¹ãã¢ã¯ã·ã§ã³ïŒã®æ°ååããœãªã¥ãŒã·ã§ã³ã¯ã€ãåæãåäœãã¹ãã©ã³ããŒãã»ãŒãã¹ãŠã®VCSã®åªãããµããŒããããã³éå»10幎éã§æ£åžžã«äœæãããããã«å€ãã®ãªã·ã£ãŒãæ©èœã ã¯ãããŸã ãã¹ãŠããåæãããããšã¯ã§ããŠããŸããããè¿ãå°æ¥ã«ãããå®è¡ã§ããªãçç±ã¯ãããŸããã ãšããããRiderã¯CïŒã ãã§ãªããJavaScriptãTypeScriptãHTMLãCSSãRazorãVB.NETãRegexãªã©ã®å€ãã®ä»ã®èšèªã«ãåªãããµããŒããæäŸããŠããŸãã
第äºã«-ãã¡ããæ©èœçãšåŒã¶ã®ã¯é£ããã§ãããä»ã§ã¯å€ãã®ãŠãŒã¶ãŒãRiderã®éåžžã«é«éã«æ³šç®ããŠããŸãã ããã¯ããããžã§ã¯ãæé©åã®ã¢ã¯ãã£ããã§ãŒãºãéå§ããåã§ãã äºå®ãäžã«20æ³ã®COM'aããªããšããå¯èœæ§ããããŸã:)ã
å€ããå°ãªãã倧èŠæš¡ãªãããžã§ã¯ããéããŠVisual Studioã§è©ŠããŠã.csprojãã¡ã€ã«ãæŽæ°ããgit pullãäœæããŸãããã®åŸã30åéå®å šã«ãè¶ã飲ãããšãã§ããŸãã ãã®çç±ã¯ãVisual Studioèªäœã®ã³ãŒãã§ãããMSBuildã¯å€æŽããããããžã§ã¯ãã«å¯ŸããŠäœããã®åœ¢ã§èª€ã£ãŠåèµ·åããŸãã äžè¬ã«ãResharperã§ã®5幎以äžã®äœæ¥ã§ã¯ãVSã³ãŒãã§å€ãã®ããšãèŠãŠããŸãããããšãã°ãGC.CollectïŒïŒã¯ã«ãŒãã§åŒã³åºãããŸãã
ããããªãŒã»ã€ã¯ããïŒ
ç§ã®æèŠã§ã¯ãæãéèŠãªããšã¯ãResharperã®ãã¹ãŠã®äž»èŠãªæ©èœã®ååšã§ãããåæã«ãã©ã°ããªãããšã§ãã ç§ã®æèŠã§ã¯ãããã§ååã§ãã
ã¢ã³ãã¬ã€ã»ã¢ãã³ã·ã³ïŒ
Visual Studioãšã®æ¯èŒããéããå ŽåãRiderã®ç§ã®ãæ°ã«å ¥ãã®æ©èœã¯IDEã«çµã¿èŸŒãŸããã³ã³ãœãŒã«ã§ãã æ¯æ¥ãã°ãããã³ã³ãœãŒã«ã¢ããªã±ãŒã·ã§ã³ãèµ·åããŠåãã§ããŸãã
ä»æ¥ã®ã©ã€ããŒã®ç¯å²ã¯ã©ã®ããã«èŠããŸããïŒ
ããªã«ã»ã¹ã¯ãªã¬ã³ïŒ
Visual Studioã§äœæ¥ãããã¹ãŠã®ãããžã§ã¯ãã§äœæ¥ããMacOSãLinuxçšã®ã¯ãã¹ãã©ãããã©ãŒã ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãéçºããŸããã€ãŸããRiderã¯Xamarin StudioãšMono Developã«åã£ãŠä»£ããããšãã§ããŸãã ã»ãšãã©ã®éçºããŒã ã¯ãRiderèªäœãããã°ã©ã ããŠããŸã:)
ããããªãŒã»ã€ã¯ããïŒ
JetBrainsã§ã¯ãdogfoodã¯éçºã®äžå¿çãªãã©ã¯ãã£ã¹ã®1ã€ã§ãã Riderã䜿çšããŠRiderãéçºããŸãã äžå®å®ã§ã¯ãããŸãããã¹ã ãŒãºãªåŸæãåããRider IDEã§ã®èšè¿°ã¯ãã§ã«åã³ã§ãã
ã¢ã³ãã¬ã€ã»ã¢ãã³ã·ã³ïŒ
ããã¯äž»ã«ã¯ãã¹ãã©ãããã©ãŒã ã®.NETéçºã§ãã LinuxãMacOSã奜ãã§ãéåžžã«ã¯ãŒã«ã§ãã«æ©èœã®IDEã§CïŒãæžãããå Žåã¯ãRiderãæé©ã§ãã
ãã§ã«ãµã³ã¯ãããã«ãã«ã¯ã«éãŸã£ãããšããããŸããïŒ çµå±ã®ãšããã6æ3æ¥ã«DotNext 2016 Piterã«ã³ãã¡ã¬ã³ã¹ã§ããªããåŸ ã£ãŠããŸããRiderã«é¢ããã¯ãŒã«ãªã¬ããŒãããããŸãïŒ
- Cyril Skrygan- ã©ã€ã㌠-JetBrains ã®æ°ããã¯ãã¹ãã©ãããã©ãŒã .NET IDEã ããã¯äœã§ãããã©ã®ããã«æ©èœããŸããã
- Dmitry Ivanov- åå¿åãã«ãããã»ã¹éä¿¡ïŒJetBrains Rider Frameworkã
ãããŠãç§ãã¡ã®ã€ã³ã¿ãã¥ãŒã®3çªç®ã®åå è ã¯ãããŒãã³ã¢ã¬ããŒããäœæããŸã...ç®è¡ã«ã€ããŠïŒå®éãããã»ã©åçŽã§ã¯ãããŸããïŒïŒ
- ã¢ã³ãã¬ã€ã»ã¢ãã³ã·ã³ - ç®æ°ã«ã€ããŠè©±ããŸããã
ä»ã®ã¬ããŒããããã§ãããã ã ãããTã·ã£ãããžã£ã±ããããžã£ã±ãããã»ãŒã¿ãŒãæã£ãŠ-ãããŠããŒã¿ãŒã«ã 倩æ°ã1æ¥ã§ã©ã®ããã«å€åãããã誰ãç¥ã£ãŠããŸããã