1. Scalaãšã¯ïŒåºæ¬çãªç¹æ§ã«ã€ããŠ
Scalaã¯ãªããžã§ã¯ãæåãšé¢æ°åããã°ã©ãã³ã°ã®èåãããšèšãããé©æ°çãªããã°ã©ãã³ã°èšèªã§ããTwitterãLinkedinãªã©å€§æäŒæ¥ã§ãæ¡çšããããã®é«æ§èœãšæè»æ§ã®äž¡é¢ãè©äŸ¡ãããŠããŸãã
Javaã®åŸç¶ãšãäœçœ®ã¥ããããããScalaã¯ãJavaãšé«ãäºææ§ãæã¡ã€ã€ãããã«çºå±ããæ©èœãšæè»æ§ãå ŒãåããŠããŸããæ¬é ç®ã§ã¯Scalaã®åºæ¬çãªç¹æ§ã«ã€ããŠè©³ãã解説ããŸãã
ãªããScalaã®è³æ Œå¶åºŠã¯çŸåšãªããã®ã®ãScalaã®ç¥èã»çµéšãæã€ããšã§ãšã³ãžãã¢ãšããŠã®ããªã¥ãŒãé«ããããšãã§ããŸãã
1.1 Scalaã®äž»ãªç¹åŸŽãšããŒãã€ã³ã
äžéšã«Scalaã¯ãªããžã§ã¯ãæåãšé¢æ°åããã°ã©ãã³ã°ã®
äž¡æ¹ã®ç¹åŸŽ
ãæã€ããšãç¹çãã¹ãç¹åŸŽãšãªããŸããããã«ãããã·ã¹ãã èšèšãããã°ã©ã ã®èšè¿°ã極ããŠè±ããã€å¹ççã«ãªãåŸãŸãã
ãŸããScalaã¯Javaã®ã©ã€ãã©ãªã®ã»ãšãã©ã䜿çšå¯èœã§ãããããJavaã§å¯èœãªããšã¯ã»ãŒå šãŠScalaã§ãå¯èœã§ããããã«ãJavaãããå°ãªãã³ãŒãéã§å®è£ ãå¯èœãªç¹ãã¡ãªããã®äžã€ã§ãã
ãã®äžæ¹ã§ãScalaã¯ã³ãŒããã·ã³ãã«ã§ãã°ãå°ãªããªããšèšãããŠããŸãããäžæ¹ã§æ·å± ãé«ããIDEã®äœ¿ãåæãã³ã³ãã€ã«é床ã«èª²é¡ããããšãææãããŸãã
1.2 ãªããžã§ã¯ãæåãšé¢æ°åããã°ã©ãã³ã°ã®èå
Scalaã¯ãªããžã§ã¯ãæåãšé¢æ°åããã°ã©ãã³ã°ã®èåããèšèªã§ããããã®ãã©ãã€ã ããã©ã³ã¹è¯ã䜿ãåããããšã§ãå¹ççãã€å ç¢ãªã·ã¹ãã ãæ§ç¯ããããšãå¯èœãšãªã£ãŠããŸãã
å ·äœçã«ã¯ããªããžã§ã¯ãæåããã°ã©ãã³ã°ã®ç¹åŸŽãšããŠããªããžã§ã¯ãã®ç¶æ ã管çãããããã³ãŒãã®åå©çšãšä¿å®æ§ãé«ãç¹ãæããããŸããäžæ¹ã§ãé¢æ°åããã°ã©ãã³ã°ã®ç¹åŸŽãšããŠãç¶æ ãæããªããããã¹ãããããã°ã容æã§ãããäžéšã®èšç®ãé«éåããå¯èœæ§ãããç¹ãäžããããŸãã
ãã®ãããªScalaã®ç¹æ§ãç解ã掻çšããããšã§ããã®åŒ·åãªããã©ãŒãã³ã¹ãæ倧éã«åŒãåºãããšãå¯èœãšãªããŸãã
1.3 Javaãšã®äºææ§ã«ã€ããŠ
Scalaã¯Javaãšã®é«ãäºææ§ã«ãããæ¢åã®Javaã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯çãåŒãç¶ã䜿çšããªããScalaã®ç¹æ§ã掻ããããšãå¯èœã§ãã
JVM(Runtime Environment of Java)äžã§å®è¡ããããããOSãåããã«å®è¡å¯èœãšãªãããããScalaã®å€§ããªåŒ·ã¿ãšãªã£ãŠããŸãããŸããJavaèšèªã§èšè¿°ããã³ãŒããšScalaã®ã³ãŒããåäžã®ãããžã§ã¯ãå ã§æ··åšãããããšãå¯èœã§ãã
ãã®Javaãšã®äºææ§ããããScalaãåºãå©çšãããŠãã倧ããªçç±ã®äžã€ãšãªã£ãŠããŸãã
1.4 Scalaã䜿ã£ãŠäœãã§ããã®ãïŒ
Scalaã¯Javaãšåæ§ã«ããšã³ã¿ãŒãã©ã€ãºã·ã¹ãã ããŠã§ãã¢ããªã±ãŒã·ã§ã³ããããåŠçã·ã¹ãã ãAndroidã¢ããªã±ãŒã·ã§ã³ãªã©æ§ã ãªã¢ããªã±ãŒã·ã§ã³ã®éçºã«äœ¿çšå¯èœã§ããç¹ã«ããã°ããŒã¿ã®åæããé«è² è·ãªã·ã¹ãã ã®éçºã«ã¯é©ããŠããŸãã
ãã®çç±ã¯Scalaã®æã€åŒ·åãªäžŠååŠçæ©èœã«ãããŸãã䞊ååŠçã«åªããé¢æ°åããã°ã©ãã³ã°ã®ç¹æ§ã掻ããããšã§ã倧éã®ããŒã¿ãå¹çããåŠçããããšãå¯èœãšãªããŸãã
ãŸããScalaã®æã€ç¹æ§ã掻ããããšã§ãJavaã«æ¯ã¹ãŠã³ãŒãéãå€§å¹ ã«æžããããããã¡ã³ããã³ã¹æ§ãé«ãå ç¢ãªã·ã¹ãã æ§ç¯ãå®çŸããããšãå¯èœã§ãã
2. Scalaã®è³æ Œæ å ±ãšçŸç¶
ããæ·±ãScalaã«ã€ããŠåŠã³ãããã蚌æããæ段ãšããŠè³æ ŒããããŸãããçŸåšã¯Scalaå°éã®è³æ Œå¶åºŠã¯ååšããŸãããããã«ã¯äžäœã©ããªçç±ãããã®ã§ããããããŸããå ·äœçã«ã©ã®ããã«ããŠScalaã®ç¥èã蚌æããããšãå¯èœãªã®ã§ããããæ°ã«ãªãScalaã®è³æ Œæ å ±ã«ã€ããŠè©³ãã説æããŸãã
2.1 ãªãScalaã®è³æ Œãååšããªãã
Scalaãé«æ©èœã§æè»ãªããã°ã©ãã³ã°èšèªã§ããããšã¯åºãèªèãããŠããŸãããããå°çšã®è³æ Œå¶åºŠãå®æœãããŠããªãäž»ãªçç±ã¯ãScalaãæ¯èŒçæ°ããèšèªã§ãããJavaã®ããã«æ¥çæšæºãšãªããŸã§ã«ã¯ãŸã æéãå¿ èŠãšãããŠããããã§ãã
ãŸããScalaã¯Javaãšé«ãäºææ§ãæã€ãããJavaã®è³æ ŒãååŸããããšãScalaã®ã¹ãã«èšŒæã«ãã€ãªãããšäžéšã§èããããŠããŸãããã®ãããçŸæ®µéã§ã¯Scalaå°éã®è³æ Œå¶åºŠããªããŠãåé¡ãªããšããæèŠãããã®ã§ãã
ããããScalaãæ±ãããããããžã§ã¯ããå¢ããŠããŠãããããä»åŸå°éã®è³æ Œå¶åºŠãèšããããå¯èœæ§ããããŸãã
2.2 Scalaã®ç¥èã蚌æããä»ã®æ¹æ³
Scalaã®è³æ ŒãååšããªãçŸç¶ã§ã¯ãScalaã®ç¥èãã©ã®ããã«èšŒæãã¹ããçåã«æããããããŸããããã®äžã€ã®æ¹æ³ãšããŠãå®éã«Scalaã䜿ã£ããããžã§ã¯ãã«åå ãããã®çµéšãšã¹ãã«ãããŒããã©ãªãªãšããŠèšŒæããæ¹æ³ããããŸãã
ãŸãããªãŒãã³ãœãŒã¹ãããžã§ã¯ãã«åå ããããšã§ãScalaã®å®æŠçµéšãç©ãããšãã§ããŸããããã¯å°æ¥çãªä»äºã®é¢æ¥ãã¹ãã«èšŒæã«å€§ãã«åœ¹ç«ã€ã§ãããã
ããã«ãScalaã®æ·±ãç解ã瀺ãããã«ã¯ããŠã§ãäžã®æè²ãã©ãããã©ãŒã ã§æäŸãããŠããScalaã®ã³ãŒã¹ãä¿®äºãããã®èšŒææžãååŸããããšãæå¹ã§ãã
2.3 çŸåšã®Scalaã®è³æ Œå¶åºŠã«ã€ããŠã®æ å ±
åè¿°ããããã«ãçŸåšãScalaã®å ¬åŒãªè³æ Œå¶åºŠã¯ååšããŠããŸãããããããããã¯Scalaã®äŸ¡å€ãéèŠãäœãããšãæå³ããããã§ã¯ãããŸãããScalaã¯ãã®ç¹æ§åæè»æ§ãããç¹å®ã®çšéã«ç¹åããéçºã«éåžžã«é©ããŠããããã§ãã
Scalaã¹ãã«ã®èšŒæãšããŠã¯ãScalaé¢é£ãããžã§ã¯ããžã®è²¢ç®ããScalaã䜿çšãããœãããŠã§ã¢ãã©ã€ãã©ãªã®éçºçµéšãªã©ãè©äŸ¡ãããŸãããŸãããœãããŠã§ã¢éçºã®çŸå Žã§ã¯ãããŒã ãšã®ååãå®éã®æ¥åçµéšãéèŠãããŸãã
Scalaã®ã³ãã¥ããã£ã掻çºã§ãå€ãã®æ å ±ãå ±æãããŠããŸãããã®ãããã³ãã¥ããã£ã«åå ããŠçµéšãç©ãããšããScalaã¹ãã«ã®åäžã«ã€ãªããã§ãããã
2.4 ä»åŸã®è³æ Œå¶åºŠã®å±éäºæ³
Scalaã®è³æ Œå¶åºŠãä»åŸå±éããããã©ããã¯ç¢ºå®çãªããšã¯èšããŸããããããã€ãã®å¯èœæ§ãèããããŸããäžã€ã¯ãScalaèªäœã®æ®åãšå°éæ§ã®é«ãŸããšãšãã«ãå°çšã®è³æ Œå¶åºŠãèšããããããšã§ãã
ãŸããããåºç¯ãªããã°ã©ãã³ã°è³æ Œã®äžã«ãScalaãå«ãããŸããŸãªèšèªã«å¯Ÿå¿ããã»ã¯ã·ã§ã³ãèšãããããšããå¯èœæ§ããããŸããããã«ãããè€æ°ã®èšèªã«å¯Ÿããç¥èã蚌æããããã®äžç°ãšããŠãScalaã®ã¹ãã«ãè©äŸ¡ããããšãå¯èœã«ãªãã§ãããã
ãããã«ãããScalaã®ç¥èãšã¹ãã«ã¯çŸä»£ã®ãœãããŠã§ã¢éçºã·ãŒã³ã§éèŠãªã¢ã»ããã§ãããããã磚ãããšã¯ç¢ºå®ã«æè³ãšèšããã§ãããã
3. Scalaã®åŒ·ã¿ãšã¡ãªãã
ããã°ã©ãã³ã°èšèªã«ã¯æ§ã ãªç¹æ§ãšå©ç¹ãããããã®éžæã¯ãããžã§ã¯ãã®ç®çãèŠä»¶ã«ãããŸããScalaã¯ããã®ç¹æ§ãšé«åºŠãªæ©èœã«ãããå€ãã®éçºè ãäŒæ¥ã«éžã°ããŠããŸããããã§ã¯Scalaã®äž»ãªåŒ·ã¿ãšã¡ãªããã«ã€ããŠè§£èª¬ããŸãã
3.1 ã³ãŒãéã®åæžãšã·ã³ãã«ãªèšè¿°
Scalaã¯ã³ãŒãéã®åæžãšã·ã³ãã«ãªèšè¿°ãå¯èœãªèšèªã§ããé 匷ãªåã·ã¹ãã ãšé¢æ°åããã°ã©ãã³ã°ã®ç¹æ§ã«ããããã®å€ãã¯åé·ãªã³ãŒããæé€ããããèªã¿ãããå¹ççãªã³ãŒããæžãããšãã§ããŸãã
ãŸããScalaã®ç°¡æœãªèšè¿°æ¹åŒã¯å°ãªãè¡æ°ã§å€ãã®æ©èœãè¡šçŸããããšãå¯èœã«ããããã¯ãããžã§ã¯ãã®çç£æ§ã倧ãã«åäžãããèŠå ãšãªããŸããScalaãæäŸããè±å¯ãªæœè±¡åæ©èœã®ãããã§ãéçºè ã¯ããŸããŸãªãã¿ãŒã³ãä»çµã¿ãå®çŸ©ã§ãããããåå©çšãšã¢ãžã¥ãŒã«æ¡åŒµã容æã«ããŸãã
ã³ãŒãéãå°ãªãããšã¯ãã³ãŒãã¬ãã¥ãŒããããã°ã®æéãåæžããå šäœçãªéçºå¹çãåäžããã倧ããªã¡ãªãããšãªããŸãã
3.2 ãã°ã®å°ãªããšå®å šæ§
Scalaã¯ãã°ã®å°ãªããšå®å šæ§ãç¹åŸŽã®äžã€ã§ããããã¯äž»ã«Scalaã®éçåä»ãã«ãããã®ã§ããããã«ãããå€ãã®äžè¬çãªåãšã©ãŒã¯ã³ã³ãã€ã«æã«æ€åºã§ãããããå®è¡ãšã©ãŒã®ãªã¹ã¯ãå€§å¹ ã«æžãããŸãã
ãŸããScalaã¯é¢æ°åããã°ã©ãã³ã°ãšãªããžã§ã¯ãæåããã°ã©ãã³ã°ã®äž¡æ¹ã®ãã©ãã€ã ã調åãããŠããŸããããã«ãããããå®å šã§ç解ããããã³ãŒããäœæã§ããå¯äœçšãé²ãããã¹ãããããã°ã容æã«ãªããŸãã
çµæãšããŠããããã®ç¹æ§ã¯ãœãããŠã§ã¢ã®å質ãšä¿¡é Œæ§ãåäžãããé·æçã«ã¯ã¡ã³ããã³ã¹ã³ã¹ããæããããšãå¯èœãšãªããŸãã
3.3 Javaãšã®é«ãäºææ§
ãŸããJavaãšã®é«ãäºææ§ãScalaã®å€§ããªã¡ãªããã§ããScalaã¯Java Virtual MachineïŒJVMïŒäžã§å®è¡ããããšãã§ããããã«JavaããScalaã«ç°¡åã«ç§»è¡ããããšãã§ããŸããããã¯ScalaãJavaãšã®ã·ãŒã ã¬ã¹ãªã€ã³ã¿ãŒãªãã©ããªãã£ãæäŸããããã§ãã
ã€ãŸããéçºè ã¯æ¢åã®Javaã³ãŒãããŒã¹ãšã©ã€ãã©ãªããã®ãŸãŸå©çšå¯èœã§ãæ°ããæè¡ãæ¢åã®ãããžã§ã¯ãã«è¿œå ããæ¹éã«åŸã£ãŠæ®µéçã«Scalaãžç§»è¡ããããšãã§ããŸãã
ãã®äºææ§ã«ãããæ¢åã®Javaãããžã§ã¯ããScalaã§çœ®ãæããäžæ¹ã§ãç¹å®ã®ã¿ã¹ã¯ã«ã¯Javaã䜿çšãããšããéžæãå¯èœã§ããããã¯æã«ã¯å¹çæ§ãšçµæžæ§ãé«ããããžãã¹ç®æšãéæããããã®æè»æ§ãæäŸããŸãã
3.4 ã¹ã±ãŒã©ãã«ãªæ§é ãšããã©ãŒãã³ã¹
Scalaã®ã¹ã±ãŒã©ããªãã£ã¯å€§èŠæš¡ãªãããžã§ã¯ããã·ã¹ãã ã§ç¹ã«éèŠãªèŠçŽ ãšãªããŸãããã®å称ïŒScalaã¯ã¹ã±ãŒã©ãã«ãªèšèªãæå³ããŸãïŒã瀺ãããã«ããã®èšèªã¯å°èŠæš¡ãªã¹ã¯ãªãããã倧èŠæš¡ãªã·ã¹ãã ãŸã§å¹ åºãçšéã§äœ¿çšããããšãã§ããŸãã
Scalaã¯ãŸããããã©ãŒãã³ã¹ãéèŠããŠããŸããScalaã¯JVMäžã§å®è¡ããããããJavaãšåçã®ããã©ãŒãã³ã¹ãæäŸããŸããããã¯ãç¹ã«å€§èŠæš¡ã§ããã©ãŒãã³ã¹ãéèŠãªã¢ããªã±ãŒã·ã§ã³ãéçºããéã«éèŠãªã¡ãªãããšãªããŸãã
èŠããã«ãScalaã®ã¹ã±ãŒã©ããªãã£ãšããã©ãŒãã³ã¹ã¯ãäŒæ¥ããã¯ãããžãŒãã¹ã±ãŒã«ã¢ãããã€ã€ãããã©ãŒãã³ã¹ãç ç²ã«ããããšãªããè€éã§å€§èŠæš¡ãªã·ã¹ãã ãå¹ççã«éçºã»éçšããããã®æ段ãæäŸããŸãã
3. Scalaã®æ¬ ç¹ãšæ³šæç¹
Scalaã«ã¯æ°å€ãã®é åçãªç¹æ§ãšæ©èœããããŸãããå šãŠãå¿ ãããå©ç¹ãšã¯éããŸãããæ¬ç« ã§ã¯ãã®æœåšçãªæ¬ ç¹ã泚æç¹ã«ã€ããŠè©³ãã説æããŸãã
4.1 Scalaã®åŠç¿æ²ç·ãšé£æ床
ãŸãScalaã®åŠç¿æ²ç·ãšé£æ床ã«ã€ããŠã§ããScalaã®åŒ·åãªæ©èœãšæè»æ§ã¯ãããèªäœãæ·å± ãé«ãããŠããŸããJavaããã®ç§»è¡ãèããŠããæ¹ã«ãšã£ãŠã¯ãç¹ã«é¢æ°åããã°ã©ãã³ã°ã®æŠå¿µãç解ããã®ãé£ãããããããŸããã
Scalaã¯é«åºŠãªèšèªæ©èœãæã£ãŠããåãé£æ床ã¯é«ããªããŸããããã¯ç¹ã«æ°ããããã°ã©ãã³ã°ãã©ãã€ã ã«èŠªããããã®æéãšåŽåãå¿ èŠã«ãªããŸãã
ããããScalaã®é£æ床ã«ãããããããå€ãã®äŒæ¥ãScalaãæ¡çšããçç±ã¯ãã¹ã±ãŒã©ãã«ã§åŒ·åãªäžŠè¡æ§ãšåæ£ã·ã¹ãã ãå®çŸã§ããããã§ããScalaããã¹ã¿ãŒããããšã¯ã倧ãã«äŸ¡å€ã®ããææŠãšèšããã§ãããã
4.2 æ±äººæ°ã®çŸç¶ãšå°æ¥äºæ³
次ã«æ±äººæ°ã®çŸç¶ãšå°æ¥äºæ³ã«ã€ããŠã§ããçŸåšãScalaã®æ±äººæ°ã¯JavaãPythonã«æ¯ã¹ããšãŸã å°ãªãã§ããããã¯Scalaãæ°ããèšèªã§ãããããäŒæ¥ãScalaã®æ¡çšãããããããŸãScalaéçºè ãåžå Žã«ãŸã å°ãªãããã ãšèããããŸãã
ããããä»åŸã¯Scalaãæã€ãã¯ãã«ãªç¹æ§ãæ±ããäŒæ¥ãå¢ããå¯èœæ§ããããããæ±äººæ°ã¯å¢å ããã§ãããããŸãã倧èŠæš¡ãªã·ã¹ãã éçºã§ã®å©ç¹ãèªç¥ãããã°ãããå€ãã®äŒæ¥ãScalaãæ¡çšããå¯èœæ§ããããŸãã
ç¹ã«ããã°ããŒã¿é åã§ã¯ãApache Sparkãªã©ScalaãããŒã¹ãšãããã¬ãŒã ã¯ãŒã¯ã泚ç®ã济ã³ãŠãããä»åŸã®æ±äººæ°å¢å ã«å¯äžããã§ãããã
4.3 éçºããŒã«ïŒIDEïŒã®è¯ä»·
éçºããŒã«ïŒIDEïŒã®è¯ä»·ã«ã€ããŠã§ããScalaã®éçºãå¹ççã«è¡ãã«ã¯ã匷åãªéçºããŒã«ãå¿ èŠã§ããããããScalaã«å¯Ÿå¿ããIDEã¯ãŸã å®å šãšã¯ãããŸããã
äžéšã®IDEïŒIntelliJ IDEAãªã©ïŒã§ã¯ãScalaã®ã³ãŒãè£å®ããšã©ãŒãã§ãã¯ãæäŸãããŠããŸãããJavaããµããŒãããIDEã»ã©çµ±åããµããŒããé²ãã§ããŸãããããã¯Scalaã®éçºäœéšãå°ã å°é£ã«ããå¯èœæ§ããããŸãã
ãã ããããã¯IDEã®éçºãè¿œãã€ããŠããªãã ãã§ãä»åŸScalaã®äººæ°ãé«ãŸãã°ãIDEã®ãµããŒããåäžãããšæåŸ ãããŸãã
4.4 ã³ã³ãã€ã«é床ãšå®è¡é床ã®åé¡
ãããŠæåŸã«ãã³ã³ãã€ã«é床ãšå®è¡é床ã®åé¡ã«ã€ããŠã§ããScalaã®ã³ã³ãã€ã«é床ã¯ç¢ºãã«Javaãããé ããšèšãããŠããŸããããã¯ãScalaãæã€è±å¯ãªæ©èœãšæè»æ§ãåå ã§ãããšèããããŸãã
ããããé ãã³ã³ãã€ã«é床ãScalaã®ã¡ãªãããç¡å¹åããã»ã©ã§ã¯ãããŸããã倧èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ã§ã¯ããã«ãæéã¯å šäœã®éçºæéã®ããäžéšã§ãããé©åãªæé©åãšã¹ã±ãžã¥ãŒãªã³ã°ã§åé¡ãç·©åããããšãå¯èœã§ãã
ãŸããå®è¡é床ã®é¢ã§ã¯Scalaã¯Javaãšåçã®ããã©ãŒãã³ã¹ãçºæ®ããŸããScalaã¯Javaãã€ãã³ãŒããçæãããããé«åºŠãªæé©åãå¯èœã§ãããå®è¡é床ã¯ã»ãšãã©åé¡ã«ãªããŸããã
5. Scalaã®å°æ¥æ§ãšãã£ãªã¢ãã¹
Scalaã¯ããªããžã§ã¯ãæåããã°ã©ãã³ã°ãšé¢æ°åããã°ã©ãã³ã°ãèåããç¬ç¹ã®ç¹æ§ãæã€èšèªã§ãããä»åŸãåŒãç¶ããã®éèŠãé«ãŸãããšãäºæ³ãããŸããããã«ãScalaã®ã¹ãã«ã身ã«ã€ããããšã§éãããã£ãªã¢ãã¹ã¯éåžžã«å€å²ã«ããããŸãã
ãã ããScalaã®åŠç¿ã¯äžççžã§ã¯ãããªããã®ã§ããããã®æ·å± ã®é«ããæ«æã®äžå ãšãªããããããŸããããããããã®é£æ床ãä¹ãè¶ããå ã«ã¯ãä»ã®ããã°ã©ãã³ã°èšèªãšã¯äžç·ãç»ãç¬èªã®ã¹ãã«ãšãã£ãªã¢ãåŸ ã£ãŠããŸãã
ããã§ã¯ãScalaã®å°æ¥æ§ãåžå ŽååããããŠScalaãåŠã¶ããšã§éãããã£ãªã¢ã«ã€ããŠè©³ãã解説ããããŸãã
5.1 Scalaã®å°æ¥æ§ãšåžå Žåå
Scalaã¯ããªããžã§ã¯ãæåãšé¢æ°åã®äž¡æ¹ã®ãã©ãã€ã ãåããããã°ã©ãã³ã°èšèªã§ãããããæ§ã ãªçšéãç¶æ³ã«å¯Ÿå¿ã§ããã®ã匷ã¿ã§ããããã«ããã倧èŠæš¡ãªããŒã¿åŠçã䞊è¡åŠçã®ããã®ããã°ã©ã ã®éçºã«äœ¿ãããããšãå€ãã§ãã
ç¹ã«ãTwitterãLinkedInãªã©å€§æäŒæ¥ãScalaã掻çšããŠããããã®ããã©ãŒãã³ã¹ã®é«ããéçºå¹çã®è¯ããããä»åŸããã®ããŒãºã¯å¢å ããããšãäºæ³ãããŸãã
ããããScalaã¯Javaãšæ¯èŒããŠåŠç¿é£æ床ãé«ãããããã®å°å ¥ã¯æ éã«è¡ãããã¹ãã§ãããã®åœ±é¿ããçŸç¶ã§ã¯æ±äººæ°ã¯ããã»ã©å€ãã¯ãããŸããããäžæ¹ã§ãã®è³ªã¯éåžžã«é«ããšèšããã§ãããã
5.2 äŒæ¥ã§ã®Scalaã®äœ¿çšäºäŸ
Scalaã¯TwitterãLinkedInãã¯ãããšãã倧æäŒæ¥ã§åºã䜿ãããŠããŸãããããã®äŒæ¥ã¯Scalaã®åŒ·åãªäžŠè¡æ§ãåŠçèœåã掻çšããŠã倧éã®ããŒã¿ããªã¢ã«ã¿ã€ã ã«åŠçããã·ã¹ãã ãæ§ç¯ããŠããŸãã
ãŸããScalaã¯Javaãšäºææ§ããããããJavaã®ã©ã€ãã©ãªãåŒãç¶ãå©çšããªããScalaãžç§»è¡ãããšããæ¹æ³ãå¯èœã§ããããã«ãããæ¢åã®ã·ã¹ãã ãéãããŸãŸæ°ããªæè¡ãå°å ¥ã§ãããšããã¡ãªããããããŸãã
ãããã®äºäŸããããããéããScalaã®ç¹æ§ãç解ããé©åã«æŽ»çšããããšã§ããžãã¹ã®çç£æ§ã倧ãã«é«ããããšãå¯èœã§ãã
5.3 ScalaãåŠã¶ããšã§éãããã£ãªã¢ãã¹
Scalaãç¿åŸããããšã§ãé«åºŠãªããã°ã©ãã³ã°æè¡ãæã€éçºè ãšããŠã®ãã£ãªã¢ãéããŸããäž»ã«ä»¥äžã®ãããªè·çš®ãèããããŸãã
Scalaãšã³ãžãã¢: ããã¯æãçŽæ¥çãªãã£ãªã¢ãã¹ã§ãã倧æäŒæ¥ããã³ãã£ãŒäŒæ¥ãªã©ã§ã®ããã°ã©ãã³ã°æ¥åãæ åœããŸãã
ããŒã¿ãšã³ãžãã¢: Scalaã¯å€§èŠæš¡ãªããŒã¿åŠçã«é©ããŠããŸãã®ã§ãããŒã¿ãšã³ãžãã¢ãšããŠæŽ»èºããéãéããŸãã
5.4 ããªãŒã©ã³ã¹ãšã³ãžãã¢ãšããŠã®Scala
Scalaã®ã¹ãã«ãæã€éçºè ã¯çŸç¶ã§ã¯ãŸã å°ãªãããã®éèŠãšäŸçµŠã®ãã©ã³ã¹ããèããŠããããªãŒã©ã³ã¹ãšã³ãžãã¢ãšããŠã®æŽ»åã¯å€§å€ææã§ãã
äžæ¹ã§ãScalaã®æ¡ä»¶ã¯Javaãšæ¯èŒããŠå°ãªãã§ã¯ãããŸããããã®å競äºçã¯äœãããŸãå䟡ãé«ãåŸåã«ãããŸãã
ã€ãŸããScalaãç¿åŸããããšã§ãããªãŒã©ã³ã¹ãšããŠæŽ»èºããéãããåºãããšèšããã§ãããã
6. ãŸãšãïŒScalaã®è³æ Œã«ã€ããŠã®èŠèãšå©èš
æ¬èšäºã§ã¯ãScalaã®è³æ Œããã®æç¡ã«ã€ããŠã®çŸç¶ããã®ä»£æ¿çãããã³Scalaã®åŠç¿ãšãã®ã¹ãã«ã¢ããã®éèŠæ§ã«ã€ããŠè§£èª¬ããŸãããç¬ç¹ãªãã£ãŒã ãã€ã³ããæã£ãScalaã«ã€ããŠãæ·±ãåŠã¶ããšã§ãããªãŒã©ã³ã¹ãšã³ãžãã¢ã®ä»äºã®å¹ ãåºããå¯èœæ§ããããŸãã
çŸåšå ¬åŒã®Scalaã®è³æ Œãååšããªãç¶æ³äžã§ãã©ã®ããã«èªèº«ã®Scalaã¹ãã«ã蚌æããããã©ã®ããã«åŠãã§ããã¹ããããã®æéãæäŸããŸããããããåèã«ãããªãã®Scalaã¹ãã«ã¢ããã«ã圹ç«ãŠãã ããã
ãŸããäœãããäžå®ã®ã¬ãã«ä»¥äžã®ã¹ãã«ãæã£ãŠããããšã蚌æããæ¹æ³ãšããŠããããžã§ã¯ããžã®å®çžŸãããŒããã©ãªãªã®éèŠæ§ã«ã€ããŠãèªããŸãããScalaã«é¢ããç¶ç¶çãªåŠç¿ã®å¿ èŠæ§ãšå ±ã«ã
6.1 è³æ Œãç¡ããããšèšã£ãŠScalaã®äŸ¡å€ã¯èããªã
Scalaã®è³æ ŒãçŸåããªããããšèšã£ãŠããã®Scalaã®äŸ¡å€ãèããããšã¯ãããŸãããèšèªã®æã€é åãæ©èœæ§ã¯ããã®ãŸãŸã«ååšãããããã®ç¥èãšã¹ãã«ãæã€ããšã§éãããå¯èœæ§ããŸãå€ãããŸããã
å®éãScalaã¯å€§æäŒæ¥ã§ããTwitterãLinkedInã§ã䜿çšãããŠããŸããããã¯Scalaã®æ©èœæ§ãšçç£æ§ã®é«ããåŠå®ã«ç€ºããŠããŸãã
ãŸããScalaã®ã¹ãã«ã身ã«ã€ããããšã§ãããªãã ãã®ç¬èªã®è§£æ±ºçãèŠã€ããããå€ãã®äººã ã«ã€ã³ãã¯ããäžãããµãŒãã¹ãæäŸãããã¢ãåºããããšã§ãããã
6.2 代æ¿ãšãªãã¹ãã«èšŒææ¹æ³ã®ææ¡
è³æ Œãååšããªãå Žåããã®ã¹ãã«ãã©ã®ããã«èšŒæããããåãããŸããããã§åŒ·èª¿ãããã®ã¯ããªãŒãã³ãœãŒã¹ãããžã§ã¯ããžã®è²¢ç®ããåã ã®ããŒããã©ãªãªã§ãããããã¯ãããªããScalaã§äœãéæã§ãããã瀺ãæè¯ã®èšŒæ ãšãªããŸãã
å ·äœçãªææãæ瀺ããããšã¯ãããªãã®èœåã蚌æããä»ã«ãæ¡çšåŽã«å¯Ÿããä¿¡é Œæ§ãé«ããå¹æããããŸããããã«ã¯ããŒã ã§ã®éçºçµéšãã³ãŒãã®å質ãåé¡è§£æ±ºèœåãªã©ãå«ãŸããŸãã
ãŸããGitHubäžã§ã®æŽ»åããŸããããªãã®ã¹ãã«ãšScalaãžã®ç±æã瀺ã貎éãªèšŒæ ãšãªããŸãã掻çºãªã³ãããå±¥æŽãã³ãŒãã¬ãã¥ãŒãIssueã®ã³ã¡ã³ããªã©ãScalaã«å¯Ÿããè±ããªç¥èãšæèã瀺ããŸãã
6.3 Scalaã®ç¶ç¶çãªåŠç¿ãšã¹ãã«ã¢ããã®éèŠæ§
Scalaã®åŠç¿ãšã¹ãã«ã¢ããã¯ãããªããScalaãšã³ãžãã¢ãšããŠæåããããã«éèŠã§ããæ°ããScalaãåŠã³å§ãã人ã ã«ã¯ãScalaã®åºæ¬çãªææ³ãšãªããžã§ã¯ãæåã»é¢æ°åäž¡æ¹ã®æèæ³ã身ã«ã€ããããšããããŠå®éã«ã¢ããªã±ãŒã·ã§ã³ããµãŒãã¹ã®éçºã«çµã¿èŸŒãã§ã¿ãããšãæšå¥šããŸãã
ãŸããScalaã®åŠç¿ã¯ãäžåºŠèº«ã«ã€ãããããšãã£ãŠçµããã§ã¯ãããŸãããScalaã¯ç¶ç¶çã«ããŒãžã§ã³ã¢ãããããŠãããæ°ããæ©èœãè¿œå ããããã³ã«ããã®ãã¹ãŠããã£ããã¢ããããå¿ èŠããããŸãã
å¹ççãªåŠç¿æ段ãšããŠã¯ããªã³ã©ã€ã³ææããã¥ãŒããªã¢ã«ã掻çšããããšãä»ã®Scalaãšã³ãžãã¢ãšå¯ã«äº€æµããŠæ°ããªç¥èãåžåããããšããããŠäœãããææ°ã®ç¥èãç¶ç¶çã«è¿œæ±ãç¶ããããšãããŒãšãªããŸãã
6.4 ãã£ãªã¢åœ¢æã«åããŠã®é²è¡è·¯ã®ææ¡
Scalaã®ã¹ãã«ã掻ããããã£ãªã¢åœ¢æã«ã¯ãå ·äœçãªç®æšèšå®ãšã¹ãã«ã¢ãããæ¬ ãããŸãããæ±ãããããã¯ãã«ã«ã¹ãã«ãšãœããã¹ãã«ã®äž¡æ¹ã身ã«ã€ããå€æ§ãªæ±äººåžå Žããããžã§ã¯ãã«å¯Ÿå¿ã§ããæè»æ§ãæã€ããšãæšå¥šãããŸãã
ç¹å®ã®åéãç£æ¥ã«çŠç¹ãåœãŠãŠããã®é åã§æ·±ãåŠã¶ãšããæŠç¥ãããã®åéã«ãããå°é家ãšããŠã®å°äœã確ç«ããã®ã«åœ¹ç«ã¡ãŸãã
ãŸããScalaã®ã¹ãã«ãæã€ããšã¯äžã€ã®åŒ·ã¿ã§ãããããã ãã§ãªããããŒã¿ããŒã¹ãããã³ããšã³ããã·ã¹ãã ã¢ãŒããã¯ãã£ãªã©ãé¢é£ããä»ã®ã¹ãã«ãšç¥èã䜵ããŠèº«ã«ã€ããå šäœçãªãšã³ãžãã¢ãªã³ã°ã¹ãã«ãé«ããããšãæ±ããããŸãã