ã¯ãœ7幎éãç§ã¯å°ãªããšãäœããã®åœ¢ã§ç§ã®æ¬²æ±ã®äžéšã«çããèšèªãåŸ ã£ãŠããŸããã ãã®éããããŠããã¯ã°ã©ãŠã³ãã§ãç§ã¯ãã¹ãŠãè©ŠããŸããã ãã¹ãŠ-ãã¹ãŠã®æ±çšã¬ããŒãžãæå³ãããã¹ãŠã®ã¬ããŒãžã¯ãŸã£ããæ±çšã§ã¯ãããŸããã èšèªã«ã€ããŠäœããèªãã§Hello Worldãæžãã ãã§ã¯ãèšèªãæããããšã¯ã§ããŸããã ç解ããã«ã¯-å°ãªããšãå°ãããã°ã©ãã³ã°ããå¿ èŠããããŸã-ã©ã®ã¹ã¬ããã®ãã®ãæžããã ãããŠããã®éãã£ãšã絶æã®ç¬éã«ããçŽ æŽãããèšèªããšããã¹ã¬ãããããŠã³ããŒãããäœããæžã蟌ãããšããŸããã ããã€ãã®ããšã¯ãŸã ãªãã£ã¹ã§å転ããŠããŸãïŒãŸãã¯å転ããŠããŸãïŒã
ã¯ããŒãžã¥ã¢
圌ã¯ãClojureã®ã©ã€ã»ã³ã¹ã®RESTãµãŒããŒã®ããã«ããããªããšããã¹ãŠè¡ããŸããããåŸã«å»¶æããŸããã è©æ±ºïŒClojure-æ©èœçãªPHPã ããã°ã©ãã³ã°æã®ææ ïŒææ ïŒã¯ãPHPã§ããã°ã©ãã³ã°ãããšããšåãã§ãã ãããããããšãããã¯ã·ã§ã³ã®å€ãã®èšèªã®ããã«ãïŒç¹ã«æåã¯ïŒããžãã£ãã§ããå ŽåããããŸãïŒãããããããšãããã¯ã·ã§ã³ããã¹ãŠãçŸããåäœããæ¬åŒ§ãèªèããããã«ç®ãèšç·Žãããšã³ãŒãã¯éåžžã«ãšã¬ã¬ã³ãã§ã äžè¬ã«ãç§ã圢æããæ 床ã¯PHPã®å Žåãšåãã§ãããµãŒããŒäžã®ããŒãžãããŒã¿ããŒã¹ã®ååã«äœãã衚瀺ããã¹ã¬ããã衚瀺ããå¿ èŠãããå Žåã¯ãPHPã䜿çšããŸãããã®ãããªåé¡ãè¿ éãã€ç¢ºå®ã«è§£æ±ºããæ¹æ³ã¯ãããŸããã ãã£ãšè€éãªã®ã¯ã¯ã©ã³ãã§ãã 倧ããªé ãããçš®ã®çç£æåãããŒã«/ããã»ã¹ãªã©ãå¿ èŠã§ãã ãããŠãããã¯ãŸããŸãæªåããŸãã
Clojureãæªããšã¯æ±ºããŠèšããŸããã Rich HickeyïŒClojureã®äœæè ïŒ-ClojureïŒPDSãSTMïŒã®é ãæŠå¿µã¯åé¡ãããŸããããèšèªãšã¯ã»ãšãã©é¢ä¿ããªããã©ãã§ãå®è£ ã§ããŸãã ãŸããã³ã³ã»ãããèœãšãã®ã¯Lispã§ããã幞éãªããšã«ã2015幎ã«Lispã§æžãããã®ã²ãã¯ãããŸããã Clojureã®äžéšãšPHPã®äžéšã¯ãæ¬åœã«å€§ãããè€éã§ãClojureãšé©ãã¹ãããšãæžããŠããŸãïŒ1ã€ã®Datomicã«å€ããŸãïŒããåã³ãåçåä»ãã«ã¯èå³ããããŸããã ããã¯ãé ã«å€§ããªã¡ã¢ãªã¢ãžã¥ãŒã«ããã人åãã§ãã èŠããã«ãæ°ããã¢ãã«ã®ãã©ã«ã¯ã¹ã¯ãŒã²ã³ããŒãã«-ããªãã¯ã¯ã©ãã«è¡ãããšãã§ããŸããããã£ã¡ã«ãããã£ãŒã®ããã«åœ¹ã«ç«ããªãã
ã¹ã«ã©
Scala-äœåºŠã圌女ã«æ»ã£ãŠãäœåºŠãæããŸããã Scalaãæªçµéšã®è¥è ãåŒãä»ããæ¹æ³ãå®å šã«ç解ããŠããŸãïŒåºæ¬çã«Scalaãæãã§ããŸãïŒã ããã€ãã®ããšãåŒãä»ããŸãïŒ
- ãšãªãŒã䞻矩ã®å 茪ïŒå®éãæãè ã¯Scalaã§æžããªããªã©ãæãè³¢ã人ã¯Scalaã§é²æ©ãéããŸããScalaã§æžãã°ãããªãã¯è³¢ããªããŸãã ãããããã°ã©ãã³ã°ã¯å€§åŠã§ã®å匷ã§ã¯ãããŸãããããªãã¯ããããè³¢ããããã°ã©ããŒã§ã¯ãªããããªãã決ããã®ã¯é£ãããªããŸãã
- é£æ床ïŒããããScalaã®ãã¡ã³ãšã¢ããã¥ã¢ã®å€ãã¯æ°ã¥ããŠããããè€éããæ¹ãã€ãããã®ãå®åŒåã§ããŸããã ç¡æèã®ãã¡ã«ã誰ããè€éã==ãã¯ãŒãèããã é£æ床ãé«ãã»ã©åŒ·åã«ãªããŸãã ããã¯çŽ 人ã«ãšã£ãŠã¯èªç¶ãªããšã§ãïŒãããŠãç§ã¯çŸåšãããã°ã©ããŒ-çŽ äººã®ã¯ã©ã¹ã«ã€ããŠäž»ã«æžããŠããŸãïŒã 人çã§å®éã«äœãããã°ã©ã ããŠããªã人ïŒãããŠäœãèŠããŠãããªã人ïŒã æ ç»ã®ããã«ã100åã®ã¬ããŒãšãã¿ã³ãåãããšã€ãªã¢ã³ãã·ã³ãšã¯ãã©ã®ãããªçš®é¡ã®ã¹ã¬ããã䜿çšããããšããèªç¶ãªåå¿ã§ãã åé¡ã¯ããã®ã¿ã€ãã®æŠåšã¯èª°ãã浞ãã®ã§ã¯ãªããå éšã®ãã¹ãŠããšã¬ã¬ã³ãã§çŸããåã/åºå·ããããšãä¿èšŒããããã«äœããããšçŽ 人ã«èšãããªãã£ãããç§åŠã«ãããšã§ãã ããããäžè¬çã«ãæèã®æ¹åã¯æ£ããã§ãïŒæ°åŠè ã¯èª°ã§ãåé¡ã®çµ¶å¯Ÿçãªè€éãã¯å€ãããªãããšãç¥ã£ãŠããŸããã解決çã¯åçŽãŸãã¯è€éã§ãããè€éãªåé¡ã®åçŽãªè§£æ±ºçïŒ1è¡ã§ïŒã¯ãåé¡ã®è€éãããã§ã«è§£æ±ºæžã¿ã®ãã®ïŒå®çïŒ ã€ãŸããéåžžã«é£ããã¿ã¹ã¯ã¯ãè€éãªãœãªã¥ãŒã·ã§ã³ãåå©çšããããšã§ç°¡åã«è§£æ±ºã§ããŸãã ç§ãã¡ã®å Žåãã³ã³ãã€ã©ã¯ãœãªã¥ãŒã·ã§ã³ãç°¡çŽ åããªããå¯èœãªéãè€éã«ããå¿ èŠããããŸãã Scalaã³ã³ãã€ã©ãŒã¯ç¢ºãã«è€éã§ãããåé¡ããããŸã-ãã®è€éããè¡šçŸããèšèªã§ãã ãã®ãããªèšèªã®äœ¿çšã¯ãã¡ããã¡ãé£ããïŒScalaããæ¹åããããJavaãšããŠäœ¿çšãããŠããå Žåã«ã€ããŠè©±ãããšããã¯çšé ã-ãã®ã»ã¯ã·ã§ã³ã¯ãšãªãŒãã®ãããŒã§ããïŒã
ãããŸã§ã®ãšãããç§ã1é±éåã«Scalaã«æåŸã«æ»ã£ããšãã§ãã ãæšæ¥ããšããèšèªãéžæããå¿ èŠããããæãæ¹ããŠãScalaã¯æå°éã®æªã§ãããšå€æããŸããã ScalaJSã®ååšãšæ¯èŒçè±å¯ãªã¡ã¿ããã°ã©ãã³ã°æ©èœïŒãã¯ãã®èªã¿åãïŒã«ãããã¿ã¯ã·ãŒã«ä¹ãããšãã§ããŸãã ããã«ãEPFLã®ããçš®ã®ãããã¹ã¿ãŒããèšäºã®æåã®éšåã§è¿°ã¹ããªãããŒãããŒã¿æ§é ã«é¢ããããã€ãã®åé¡ã解決ãå§ããŸããã
äžè¬çã«ãç§ã¯æ·±åŒåžãããŠååã«æ¬¡ã®ããã«èªã£ãã ãèŠããã«ãç§ãã¡ã¯ãã£ã³ããŒã³ã®ããã«Scalaã§Next Big ThingãæžããŸãã ããã§ã¿ããªãããããã£ããããŸã-ç§ã¯ããã§äœå¹ŽãScalaã§é転ããŸããããä»ã§ã¯ãã®ãããªã¯ãªãŒãïŒæŠå¿µãå€ãããŸãã... ããžãã£ããªæ°åã§ãç§ã¯äœããããã°ã©ã ããããšãå§ããŸããã Scalaã®ç¥èãšçµéšã¯ãŒãã«è¿ããšããã«èšããªããã°ãªããŸããããããã¯äººçã®ç¥èãšçµéšã§è£ããŸãã ã¿ã€ãã¯ã©ã¹ãå¿ èŠãªããšã¯ããã«æããã«ãªããŸãããã§ã¯ãã€ã³ã¿ãŒããããèŠãŠã¿ãŸãããã ããã«ç§ã¯ãããã®ã«åºããã ãMiles Sabinã®Scalaãã¡ã³ïŒåœ¢ãããããªãïŒãèš±ããŠãã ããã
ç°¡åã«åŸéããŸãããæåãšæåŸã®ããŒãã£ã³ã°ã®ç¬éãããã®ã¿ã€ãã®ãã€ã«ã¯å¥œãã§ã¯ãããŸããã EclipseCon 2009ïŒããããïŒã§ããã ç§ã¯ã¹ã¿ã³ãã§ããŒã«ã«é ã£ãŠç«ã¡ããã®ã³ã·ã§ãŠãããã«æ¥ãŸããç§ã¯ããã®ãã€ã«ãºã»ãŒãã³ã®ããã§ããç§ã¯Scalaã®EclipseããŒã¹ã®IDEãæžããŸããç§ã¯ãããã®äºã®ããã«DLTKããã°ã©ããŒãšäžç·ã«ã°ã©ã€ã³ããããã§ããã¿ãåºãŠããŠã圌ã¯IDEãæã£ãŠããŸãã-ããããšãç§ãç解ããããã«ãTypeSafeã¯åŸã§åœŒèªèº«ãæžããŸãã-ããããç§ã¯ãããèŠãŸããã§ããïŒã ããŠããã®ãã€ã«ã¯ããã°ã©ããŒãã©ãã«ããã®ãæããŠãããŸããïŒ ç§ã¯åœŒãããã°ã©ããŒã§ããããªãã¯ç§ã«è©±ãããšãã§ããŸãã åœæã®ç§ã¯ãããã°ã©ããŒã®ããã«èŠãããè£å©åŽåè ã®ããã«èŠããŸããã§ããã ãŸãããã€ã«ãºã¯ãç§ãããªããå¿ èŠãšããªãããã«ãããã°ã©ããŒã«æ¥ãŠèšãã Bitch :)ããããç§ã¯åœŒã«ç§ãDLTKãããžã§ã¯ããªãŒããŒã®ããã ãšèª¬æããŸããã§ãããããã«ã圌ã¯ããã«çããªãã£ãã®ã§ã圌ã¯IDEãæ®éã«ãããªãããšãç¥ã£ãŠããŸãã 圌ã¯ãããã¬ãã»ãã³ãã§ã³ã³ã«éããå°å¹Žãã¡ãšäžç·ã«åŒ·æããŸãã...äžè¬ã«ãäžçã¯å°ããã§ãã
ãŸããç§ã¯ã°ãŒã°ã«ããããŠãã®åœ¢ã®ãªãïŒãããŠåã¯ã©ã¹ãå¿ èŠã§ãïŒã ãšãªãŒããæ³å®ãããŠããããã«ã圌ãã«ã¯ææžããªããæåã®æ®µèœã§ã¯ããã«4ã€ã®ç§åŠè«æã«ãªã³ã¯ããŠããŸãã ããã«ã圌ããå©ããæ¹æ³ãè²¢ç®ããå Žæãã³ã³ãã€ã«ããæ¹æ³ãæžãããŠããŸãã ãããŠããããã ããŠãããã«ã°ãŒã°ã«ã§æ€çŽ¢ããŠã¿ãŸããã-圌ã®å¥è·¡ã«ã€ããŠèªããã®ãã€ã«ã®ãããªããããŸãã 40ã45åéã圢ã®ãªãããšãHListãšåŒã°ãã圌ã®éæ³ã®çºæã«åºã¥ããŠãããšããäºå®ã«ã€ããŠã ãããŠãããã¯åœŒãè¿å¹ŽèŠããã§ããã¡ã€ã³ãããã®ãããªãã®ã§ãã»ãšãã©æ©èœãããã¯ããScalaã«è¿œå ããã圌ã¯ãããïŒHListïŒãäœãçŽããŸããããããŠããã®HListã¯å€ãHListããã話é¡ã«ãªããŸããã 圌ã¯éåžžã«é·ãéãåºæ¬çã«æ¬¡ã®ãããªã³ãŒãã®å€§èŠæš¡ãªã¯ã©ãŠãã§ãããæ±ããŸããïŒ
ãªããžã§ã¯ãIsHCons1 { ã¿ã€ãAux [L [_]ãFH [_ [_]]ãFT [_ [_]]ãH0 [_]ãT0 [_] <ïŒHList] = IsHCons1 [LãFHãFT] {type H [ t] = H0 [t]; ã¿ã€ãT [t] = T0 [t]} def apply [L [_]ãFH [_ [_]]ãFT [_ [_]]]ïŒæé»ã®tcïŒIsHCons1 [LãFHãFT]ïŒïŒAux [LãFHãFTãtc.Hã tc.T] = tc æé»çãªdef mkIsHCons1 [L [_]ãFH [_ [_]]ãFT [_ [_]]]ïŒIsHCons1 [LãFHãFT] =ãã¯ãIsHCons1Macros.mkIsHCons1Impl [LãFHãFT] }
ãã§ãŒã§ããïŒ ããã¯èª°ã®ããã§ããïŒ ããã¯äººã ã®ããã§ããïŒ ããªãã¯ç§ããã®ãããªããšãæ¯æ¥äœçŸè¡ãæžããŠãç§ã®å¿ã«ãšã©ãŸãããšãææ¡ããŸãããããããšãã€ãªã¿ã®ããã§ããããããŠç§ãã¡ãå¹³å¡ãªéæ¥å»ã¯ãããããªãã®ãã®ã«äœ¿ãã§ããããïŒ
次ã«äœããã¹ããããªã¹ããŒãHListãç¥ã£ãåŸã圌ã¯3åãã¹ãŠã話ãæéããªãã®ã§ãèªåã®ã¯ãŒã¯ã·ã§ããããããªãããã³ã³ãŒã¹ãåç §ããŠãã ããã ãéã®ããã«ç¥èãç¿åŸããŠãæ§ããŸãããïŒ
ã³ã³ãã€ã«ã®æ®µéã§äœããããæ··ãããå ŽåïŒã³ã¬ã¯ã·ã§ã³ã®ãµã€ãºã調ã¹ããªã©ïŒããã®ããã«ããããã¿ã€ããåç §ããå®è¡æã«å€ã®ã¿ã€ããç解ããããã«ã人ã ã¯é±ãšæã殺ãããã«å¹Žã殺ããŸãããããªãã¯ããªãã®è³ããšãŠãããŸãäœããäžã§åŒçšãããããªã³ãŒããæŠèª¬ããå¿ èŠããããŸãã ãã¡ãããç§ã¯æ·±ãæãäžããããã§ã¯ãããŸãããããããããã®åœ¢ã®ãªããã®ã¯ãããªããæéã®é²ã殺ãå¿ èŠããããŸãïŒããããäžçã§æãæŽç·ŽãããScalaã©ã€ãã©ãªã§ã¯ãããŸããïŒ ãã¯ãŒã¯ã·ã§ããã Demystifying Shapelessã®ãããª56ããŒãžã®ããªã»ãã ã ãããŠããªããããã¹ãŠã§ããïŒ ã³ã³ãã€ã«æã«å€ã®ã¿ã€ããéžæããã«ã¯ã仲éã
ãã¡ãã¯ãã¯ãããã«ãã§95幎ã«ããã°ã©ã ããŸããããããã«ãããæã«å ¥ããŸããã ããªã¢ãŒãã£ãã¯åã®Î»èšç®ã«ã€ããŠã¯äœãç¥ããŸããã§ããããä»ã¯äœãç¥ããŸããããç¥èããªããšã€ã«ã«ã®åŠçã¯10åã§ãã®ãããªHListãäœæããå®è¡æã®åã¯ãããç¥ã£ãŠåç §ããŸããæ¯èŒããŠå°çã¯ä»ã«äœãç¥ã£ãŠããã ãããŠãããããã¹ãŠè¡ãæ¹æ³ã«ã€ããŠãèããªãã§ãã ããã ãã«ãã«ãã¯ããšãžã§ããªãã¯ãããã°ãå°åŠçã¯ãã®ãšãªãŒããScalaã§æžãããã®ãšãŸã£ããåãããã«æžããšæããŸããããããã®åç¶ãããæ¡éãã«éããããã«ã€ããŠããèããŸããã§ãããæ§é ã®æ¹è¯ã¿ã€ããšãã®ä»ã®ãããããå¿ èŠã§ãïŒæ¬åœã«å¿ èŠã§ããïŒïŒã 人çã¯ç§ã«ããã確èªããŸããã ã¯ãããšããã§ãçç£ã®ãã®åŠæ ¡ã®ã³ãŒãã¯ã¯ããã«éãåäœããŸã-ããŒã©ã³ãã®å€ãåŠæ ¡ã¯ç©äºãè¡ãæ¹æ³ãç¥ã£ãŠããŸããã
äžè¬çã«ãScalaã®æŠèŠã¯ããã§ããç·ã¯ããŒã«ã®ã¿ã¹ã¯ã®è€éããé ããããŒã«ã䜿çšããè€éãã§çœ®ãæããŸããã çµæãšããŠããå°é£ã§ããããšãå€æãããã®-ãã£ãã¯ã¯åœŒãç¥ã£ãŠããŸããç§ã«ãšã£ãŠãScalaã§ã®ããã°ã©ãã³ã°ã®è€éãã¯ããã®äœ¿çšããåŸãããå©ç¹ãããã¯ããã«é«ãã§ãã è»ãšã®é¡æšã«ãããããã¯Googleã¢ãã€ã«ã®æåã®ããŒãžã§ã³ã§ãã ã¯ã€ã€ãŒããã¹ãŠã®ãŽããã«ã¡ã©ãåããå¿ èŠããããŸãããããŠãæã«ã¯ãã³ãã«ããæãæŸãããšãã§ããŸãããããã€ã¹ããç®ãé¢ããªãã§ãã ããã ãããŠãããäœããå£ããŠããããããªãããããç¶ãããšãç解ããæ¥ãŸã§ã ãããèµ€ãããŒã«ãèŠãããšå€±éããŸãã ãã¡ã€ã¢ããã¯ã¹å ã
ææã®JVMã®äžçã«å¥ããåããæ¢ããŠãããã®ãèŠã€ãããŸããã§ãã
æçã«èšãã°ãç§ã¯JVMããŒã¹ã®ã¹ããŒãªãŒã§å€§éšãããŸãããç§ã®ãæ°ã«å ¥ãã®Fantomã¯ãããã€ãã®çç±ã§ç§ã«ã¯åããŠããŸããã§ãã ãå®æçã«CeylonãšKotlinãèŠãŸããã ãŸããåçåä»ãã䜿çšããŠãã¹ãŠã®ã¹ããŒãªãŒãäžæããŸãïŒcore.typedã¯ãå§ãããŸããïŒã ç¹°ãè¿ããŸããã倱æãããç§ã¯TeaVMãæ€èšããããšæããŸãããããã¯ãåè£è ã®ãªã¹ããæ¡åŒµããŸãããå°éããŸããã§ãããåè£è ãèŠããªãã£ãããã§ãã èŠããã«ãããããã¹ãŠã®ãã®ã¯åãã¯ã©ã¹ã§ã-æžæ»ã§ããŸãé転ãããããªãã©ãŒããã©ãŒã«ã¹ããã°ã©ãã³ã°èšèªã§ããããããã§ãã
JVMã®äžçã§äœãèŠã€ãããªãã£ãã®ã§ãç§ã¯ãã¹ãŠåºãããŸããã éç¬ã¯ãå°ãªããšãäœããã®çç±ã§èŽèäŒã«ãã£ããã®ãã¹ãŠãããã³èŽèäŒã«ãŸã£ãããªãäœãã«ãã觊ããŸããã ç§ã奜ããªããŸãç¥ãããŠããªããã®- ã¯ã¬ã€ ã 圌ã«ã¯å¯èœæ§ããããŸãããç§ã«ã¯æããŸãã ãŸãšããªèšèªã¯ãéçã«åä»ããããJuliaã®ããŒãžã§ã³ã§ãã äœæè ã¯ãã®èšèªãæŸæ£ããŸãããç§ãçŸåšAppleã«ããèè ã®1人ãç解ããSwiftãšé¢ä¿ãããããã§ãã
ããããä»æ¥ã¯ããã«ã€ããŠæžãæéããããŸããã 次ã®ããŒããŸã§ã