1. ã¯ããã«ïŒKotlinãšã¯ïŒ
ããã°ã©ãã³ã°èšèªã®äžçã¯æ¥ã é²åããŠãããæ°ããèšèªãæè¡ã次ã ãšç»å ŽããŠããŸãããã®äžã§ãè¿å¹Žæ³šç®ãéããŠããã®ãKotlinã§ãããã®ã»ã¯ã·ã§ã³ã§ã¯ãKotlinã®æŽå²ãèæ¯ããããŠãã®äž»ãªç¹åŸŽã«ã€ããŠè§£èª¬ããŸãã
1.1 Kotlinã®æŽå²ãšèæ¯
Kotlinã¯ã2011幎ã«ãã·ã¢ã®ãœãããŠã§ã¢éçºäŒç€ŸãJetBrainsãã«ãã£ãŠéçºãããŸãããJetBrainsã¯ãIntelliJ IDEAãšããéåžžã«äººæ°ã®ããçµ±åéçºç°å¢ãæäŸããŠããäŒç€ŸãšããŠç¥ãããŠããŸããKotlinã®éçºèæ¯ã«ã¯ãJavaã®æã€ããã€ãã®å¶çŽãåé¡ç¹ã解æ¶ããããå¹ççã§ç°¡æœãªã³ãŒããæžãããšãç®çãšããæ°ããèšèªã®å¿ èŠæ§ããããŸããã
åããŠã®å ¬åŒãªãªãŒã¹ã¯2016幎ã§ããã以éãKotlinã¯æ¥éã«æ®åããŠãããŸãããç¹ã«ã2017幎ã«GoogleãAndroidã®å ¬åŒéçºèšèªãšããŠKotlinãæ¡çšããããšãããã®æ®åãå éããã倧ããªèŠå ãšãªããŸããã
1.2 Kotlinã®äž»ãªç¹åŸŽ
Kotlinã¯ãJavaãšã®äºææ§ãæã¡ãªããããããç°¡æœã§èªã¿ãããã³ãŒããå®çŸããããã®å€ãã®æ©èœãåããŠããŸãã以äžã«ãKotlinã®äž»ãªç¹åŸŽãããã€ãæããŸãã
ç¹åŸŽ | 説æ |
---|---|
ç°¡æœæ§ | åé·ãªã³ãŒããæžå°ãããããã®æ§æãæäŸãããŠãããåãæ©èœãæã€Javaã®ã³ãŒããããçãæžãããšãã§ããŸãã |
å®å šæ§ | Nullå®å šãªã©ã®æ©èœã«ãããã©ã³ã¿ã€ã ãšã©ãŒãå€§å¹ ã«æžå°ãããããšãã§ããŸãã |
Javaãšã®äºææ§ | Javaãšã®å®å šãªäºææ§ãæã£ãŠãããããJavaã®ã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ããã®ãŸãŸå©çšããããšãã§ããŸãã |
ãããã®ç¹åŸŽã«ãããKotlinã¯å€ãã®éçºè ããæ¯æãåããŠããŸããç¹ã«ãAndroidã¢ããªã®éçºã«ãããŠã¯ãKotlinã®æ¡çšãé²ãã§ãããä»åŸããã®ååã泚ç®ãããŸãã
2. Kotlinç¬åŠã®ã¡ãªãã
è¿å¹Žãããã°ã©ãã³ã°èšèªã®ç¬åŠãäžè¬çã«ãªã£ãŠããŸãããç¹ã«ãKotlinã¯ãã®ç¬ç¹ã®ç¹åŸŽãšå©ç¹ãããå€ãã®äººã ã«ç¬åŠã®å¯Ÿè±¡ãšããŠéžã°ããŠããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãKotlinãç¬åŠããéã®ã¡ãªããã«ã€ããŠè©³ãã解説ããŸãã
2.1 ã³ã¹ãã®é¢ã§ã®å©ç¹
å€ãã®ããã°ã©ãã³ã°åŠç¿ãªãœãŒã¹ãç¡æã§æäŸãããŠããçŸä»£ã«ãããŠãKotlinã®åŠç¿ã«é¢ããŠãå€ãã®ç¡æãªãœãŒã¹ãååšããŸããããã«ãããäœã³ã¹ãã§é«å質ãªåŠç¿ãå¯èœãšãªã£ãŠããŸããæžç±ãææã®ãªã³ã©ã€ã³ã³ãŒã¹ãååšããŸãããåå¿è ãåºæ¬ãåŠã¶æ®µéã§ã¯ãç¡æã®ãªãœãŒã¹ã ãã§ååãªå Žåãå€ãã§ãã
2.2 åŠç¿ãªãœãŒã¹ã®è±å¯ã
Kotlinã®æ®åã«äŒŽããåŠç¿ãªãœãŒã¹ãå¢å ããŠããŸããå ¬åŒããã¥ã¡ã³ããããããã°ããã¥ãŒããªã¢ã«ãåç»ãªã©ãããŸããŸãªåœ¢åŒã§ã®æ å ±ãæäŸãããŠããŸãããã®è±å¯ãªãªãœãŒã¹ã«ãããèªåã®åŠç¿ã¹ã¿ã€ã«ãããŒã¹ã«åãããŠãå¹æçã«åŠç¿ãé²ããããšãã§ããŸãã
2.3 èªåã®ããŒã¹ã§ã®åŠç¿
ç¬åŠã®æ倧ã®ã¡ãªããã¯ãèªåã®ããŒã¹ã§åŠç¿ãé²ããããšãã§ããç¹ã«ãããŸããç¹ã«ãKotlinã¯ãã®çŽæçãªæ§æãæ確ãªããã¥ã¡ã³ãã«ãããèªåã®ç解床ã«åãããŠåŠç¿ãé²ããããšã容æã§ãããŸããçåç¹ã課é¡ã«çŽé¢ããéã«ããªã³ã©ã€ã³ã³ãã¥ããã£ã§ã®ãµããŒããåãããããããå€ç¬ã«æããããšãªãåŠç¿ãç¶ããããšãã§ããŸãã
以äžã®ã¡ãªãããèæ ®ãããšãKotlinã¯ç¬åŠã«é©ããããã°ã©ãã³ã°èšèªã®äžã€ãšèšããã§ãããã次ã®ã»ã¯ã·ã§ã³ã§ã¯ãKotlinãç¬åŠããéã®å ·äœçãªã¹ãããã«ã€ããŠè©³ãã解説ããŸãã
3. Kotlinãç¬åŠããããã®ã¹ããã
ããã°ã©ãã³ã°èšèªãç¬åŠããéãèšç»çã«é²ããããšãæåã®éµãšãªããŸããç¹ã«Kotlinã¯ããã®ç¬èªã®ç¹åŸŽãšæ©èœãæã€ãããå¹æçãªåŠç¿ã¹ããããèžãããšãéèŠã§ãããã®ã»ã¯ã·ã§ã³ã§ã¯ãKotlinãç¬åŠããããã®å ·äœçãªã¹ãããã解説ããŸãã
3.1 åºæ¬çãªããã°ã©ãã³ã°ç¥èã®ç²åŸ
ãŸãæåã«ãKotlinãåŠã¶åã«åºæ¬çãªããã°ã©ãã³ã°ã®ç¥èãç²åŸããããšãæšå¥šãããŸããå€æ°ãé¢æ°ãã«ãŒããªã©ã®åºæ¬çãªæŠå¿µã¯ãKotlinã ãã§ãªããä»ã®å€ãã®ããã°ã©ãã³ã°èšèªã«ãå ±éããŠããŸãããããã®åºæ¬çãªæŠå¿µãç解ããããšã§ãKotlinã®åŠç¿ãããã¹ã ãŒãºã«é²ãã§ãããã
3.2 å®è·µçãªãããžã§ã¯ãã®éžæ
çè«çãªç¥èã ãã§ãªããå®éã«æãåãããŠããã°ã©ãã³ã°ãè¡ãããšããåŠç¿ã®å¹æãé«ãããã€ã³ããšãªããŸããKotlinãåŠã¶éã«ã¯ãå®è·µçãªãããžã§ã¯ããéžã³ããããéããŠåŠç¿ãé²ããããšãããããããŸããäŸãã°ãã·ã³ãã«ãªèšç®æ©ã¢ããªãToDoãªã¹ãã¢ããªãªã©ãåå¿è ã§ãåãçµã¿ããããããžã§ã¯ãããå§ãããšè¯ãã§ãããã
3.3 ã³ãŒãã¬ãã¥ãŒãšãã£ãŒãããã¯ã®åé
ç¬åŠã§ã®ããã°ã©ãã³ã°åŠç¿ã®é£ç¹ã¯ãèªåã®æžããã³ãŒãã®è³ªãå¹çæ§ãæ£ããè©äŸ¡ããã®ãé£ããç¹ã§ãããã®åé¡ã解決ããããã«ãã³ãŒãã¬ãã¥ãŒãåããããšãéåžžã«æå¹ã§ãããªã³ã©ã€ã³ã®ã³ãã¥ããã£ããã©ãŒã©ã ã§ãçµéšè ãä»ã®åŠç¿è ããã®ãã£ãŒãããã¯ãåãåãããšã§ãèªåã®ã³ãŒãã®æ¹åç¹ãæ°ããåŠã³ãåŸãããšãã§ããŸãã
ãããã®ã¹ããããèžãããšã§ãKotlinã®ç¬åŠãããå¹æçã«é²ããããã§ãããã次ã®ã»ã¯ã·ã§ã³ã§ã¯ãKotlinã®åŠç¿ã«ããããã®ãªãœãŒã¹ã«ã€ããŠè©³ãã解説ããŸãã
4. ããããã®åŠç¿ãªãœãŒã¹
ããã°ã©ãã³ã°èšèªãåŠã¶éãé©åãªåŠç¿ãªãœãŒã¹ãéžã¶ããšã¯éåžžã«éèŠã§ããç¹ã«Kotlinã¯ããã®äººæ°ãšæ®åã«äŒŽããå€ãã®åŠç¿ãªãœãŒã¹ãæäŸãããŠããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãKotlinã®åŠç¿ã«ç¹ã«ããããã®ãªãœãŒã¹ã玹ä»ããŸãã
4.1 å ¥éæžãšããã¹ã
æžç±ã¯ãäœç³»çã«ç¥èãåŠã¶ã®ã«æé©ãªãªãœãŒã¹ã®äžã€ã§ããKotlinã«é¢ããŠããåå¿è åãããäžçŽè åããŸã§ãããŸããŸãªæžç±ãåºçãããŠããŸããç¹ã«ãå ¬åŒããã¥ã¡ã³ãããå®è·µçãªå 容ãåãæ±ã£ãããã¹ãã¯ãæ·±ãç解ãåŸãã®ã«åœ¹ç«ã¡ãŸãã
4.2 ãªã³ã©ã€ã³ãã¥ãŒããªã¢ã«ãšã³ãŒã¹
ãªã³ã©ã€ã³äžã«ã¯ãç¡æã§å©çšã§ãããã¥ãŒããªã¢ã«ãã³ãŒã¹ãæ°å€ãæäŸãããŠããŸãããããã®ãªãœãŒã¹ã¯ãåç»ãã€ã³ã¿ã©ã¯ãã£ããªã³ã³ãã³ããéããŠãå®éã«æãåãããªããåŠã¶ããšãã§ããã®ãç¹åŸŽã§ããç¹ã«ãåå¿è ã«ã¯ãåºæ¬çãªæ§æãæŠå¿µãèŠèŠçã«ç解ããã®ã«åœ¹ç«ã€ã§ãããã
4.3 å®è·µçãªãããžã§ã¯ãã®äŸ
çè«çãªç¥èãåŠãã åŸã¯ãå®éã«ãããžã§ã¯ããäœæããããšã§ããã®ç¥èãå®çãããããšãéèŠã§ããå€ãã®ãµã€ããããã°ã§ã¯ãKotlinã䜿çšããå®è·µçãªãããžã§ã¯ãã®äŸã玹ä»ãããŠãããããããåèã«èªåèªèº«ã®ãããžã§ã¯ããäœæããããšã§ãæ·±ãç解ãšã¹ãã«ã®åäžãç®æãããšãã§ããŸãã
以äžã®ãªãœãŒã¹ã掻çšããããšã§ãKotlinã®åŠç¿ãããå¹æçã«é²ããããã§ãããã次ã®ã»ã¯ã·ã§ã³ã§ã¯ãKotlinç¬åŠã®éã®ãããã誀解ãšãã®å¯ŸåŠæ³ã«ã€ããŠè©³ãã解説ããŸãã
5. Kotlinç¬åŠã®éã®ãããã誀解ãšå¯ŸåŠæ³
ããã°ã©ãã³ã°èšèªãç¬åŠããéãå€ãã®äººãé¥ããã¡ãªèª€è§£ãééã£ãã¢ãããŒããååšããŸããç¹ã«Kotlinã®ãããªæ¯èŒçæ°ããèšèªãåŠã¶éã«ã¯ããããã®èª€è§£ãé¿ããå¹æçãªåŠç¿ãé²ããããã®å¯ŸåŠæ³ãç¥ãããšãéèŠã§ãããã®ã»ã¯ã·ã§ã³ã§ã¯ãKotlinç¬åŠã®éã®ãããã誀解ãšãã®å¯ŸåŠæ³ã«ã€ããŠè©³ãã解説ããŸãã
5.1 誀解1ïŒé床ãæ±ãããã
å€ãã®ååŠè ã¯ãçæéã§é«ãã¹ãã«ãç²åŸããããšèããã¡ã§ããããããããã°ã©ãã³ã°ã®åŠç¿ã¯ãçŠãããã£ãããšåãçµãããšãå¿ èŠã§ããç¹ã«ãKotlinã®ãããªå€æ©èœãªèšèªãåŠã¶éã«ã¯ãåºæ¬çãªæŠå¿µãæ§æããã£ãããšç解ããããšãå 決ã§ããé床ãè¿œæ±ããããŸããè¡šé¢çãªç¥èããåŸãããªãããšãé¿ããããã«ãäžã€äžã€ã®ãããã¯ãæ·±ãæãäžããŠåŠã¶ããšãããããããŸãã
5.2 誀解2ïŒå€§ããªãããžã§ã¯ãããå§ãã
å®è·µçãªãããžã§ã¯ããéããŠåŠã¶ããšã¯éåžžã«å¹æçã§ãããåããã倧èŠæš¡ãªãããžã§ã¯ããå§ããã®ã¯é¿ããã¹ãã§ãã倧ããªãããžã§ã¯ãã¯è€éã§ãããååŠè ã«ã¯ããŒãã«ãé«ãå¯èœæ§ããããŸãããã®ãããå°ããªãããžã§ã¯ãããå§ããåŸã ã«ã¹ãã«ãç©ã¿äžããã¢ãããŒããåãããšãããããã§ãã
5.3 誀解3ïŒããŒã«ãã©ã€ãã©ãªã«é Œãããã
Kotlinã®åŠç¿ã«ãããŠãå€ãã®ããŒã«ãã©ã€ãã©ãªãå©çšã§ããã®ã¯å€§ããªå©ç¹ã§ãããããããããã«é床ã«äŸåããããšã¯é¿ããã¹ãã§ããåºæ¬çãªæŠå¿µãæ§æããã£ãããšç解ããããšãªããããŒã«ãã©ã€ãã©ãªã«é Œã£ãŠããŸããšãå°æ¥çã«åé¡ãçºçããéã®å¯ŸåŠãé£ãããªãå¯èœæ§ããããŸãããŸãã¯ãåºæ¬ãããã£ãããšåŠã³ããã®äžã§ããŒã«ãã©ã€ãã©ãªã掻çšããããšãããããããŸãã
ãããã®èª€è§£ãé¿ãã察åŠæ³ãåãå ¥ããããšã§ãKotlinã®ç¬åŠãããå¹æçã«é²ããããã§ãããã次ã®ã»ã¯ã·ã§ã³ã§ã¯ãKotlinã®åŠç¿ãç¶ç¶ããããã®ã¢ãããŒã·ã§ã³ç¶æã®æ¹æ³ã«ã€ããŠè©³ãã解説ããŸãã
6. Kotlinã§ã®ãããžã§ã¯ãå®è·µäŸ
ããã°ã©ãã³ã°èšèªãåŠã¶éãçè«ã ãã§ãªãå®éã®ãããžã§ã¯ããéããŠã®å®è·µãéåžžã«éèŠã§ããç¹ã«Kotlinã¯ããã®å€æ©èœæ§ãšæè»æ§ãããããŸããŸãªãããžã§ã¯ãã§ã®å©çšãå¯èœã§ãããã®ã»ã¯ã·ã§ã³ã§ã¯ãKotlinã䜿çšãããããžã§ã¯ãã®å®è·µäŸãããã€ã玹ä»ããŸãã
6.1 ã·ã³ãã«ãªã¢ããªã±ãŒã·ã§ã³ã®éçº
Kotlinã¯ãAndroidã¢ããªã±ãŒã·ã§ã³ã®éçºã«ç¹ã«é©ããŠããŸããäŸãã°ã倩æ°äºå ±ã¢ããªãã·ã§ããã³ã°ãªã¹ãã¢ããªãªã©ãã·ã³ãã«ãªãã®ããå§ããããšã§ãKotlinã®åºæ¬çãªæ©èœãã©ã€ãã©ãªã®äœ¿çšæ¹æ³ãåŠã¶ããšãã§ããŸãããã®ãããªã¢ããªã±ãŒã·ã§ã³ãéçºããããšã§ãå®éã®ããã€ã¹äžã§ã®åäœç¢ºèªãããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã®èšèšãªã©ã®çµéšãç©ãããšãã§ããŸãã
6.2 Webãµã€ãã®ããã¯ãšã³ãéçº
Kotlinã¯ãWebãµã€ãã®ããã¯ãšã³ãéçºã«ãå©çšãããŠããŸããç¹ã«ãKtorãSpring Bootãšãã£ããã¬ãŒã ã¯ãŒã¯ãå©çšããããšã§ãå¹ççã«Webã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããšãã§ããŸããããŒã¿ããŒã¹ãšã®é£æºãAPIã®èšèšãªã©ãWebéçºã«å¿ èŠãªç¥èãå®è·µçã«åŠã¶ããšãã§ããã§ãããã
6.3 ã²ãŒã ãã¢ãã¡ãŒã·ã§ã³ã®å¶äœ
Kotlinã䜿çšããŠãã²ãŒã ãã¢ãã¡ãŒã·ã§ã³ã®å¶äœãå¯èœã§ããç¹ã«ãlibGDXãšããã²ãŒã éçºãã¬ãŒã ã¯ãŒã¯ãå©çšããããšã§ãã¯ãã¹ãã©ãããã©ãŒã ã®ã²ãŒã ãå¹ççã«éçºããããšãã§ããŸããã·ã³ãã«ãª2Dã²ãŒã ããå§ããããšã§ãã²ãŒã ã®ããžãã¯èšèšãã¢ãã¡ãŒã·ã§ã³ã®å®è£ æ¹æ³ãåŠã¶ããšãã§ããã§ãããã
ãããã®ãããžã§ã¯ãå®è·µäŸãéããŠãKotlinã®å€æ©èœæ§ãå®è·µçãªå©çšæ¹æ³ãæ·±ãç解ããããšãã§ããŸãã次ã®ã»ã¯ã·ã§ã³ã§ã¯ãKotlinåŠç¿ã®éã®ã¢ãããŒã·ã§ã³ç¶æã®æ¹æ³ã«ã€ããŠè©³ãã解説ããŸãã
7. ãŸãšãïŒKotlinç¬åŠã®æåãžã®é
ãã®èšäºãéããŠãKotlinã®åºæ¬çãªç¹åŸŽããåŠç¿ã®æ¹æ³ãå®è·µçãªãããžã§ã¯ãã®äŸãŸã§ãå¹ åºã玹ä»ããŠããŸãããKotlinã¯çŸä»£ã®ããã°ã©ãã³ã°èšèªãšããŠéåžžã«æ³šç®ãããŠããããã®åŠç¿ã¯å€ãã®ã¡ãªããããããããŸããããããæåãžã®éã¯å¿ ãããå¹³åŠã§ã¯ãããŸããããã®ã»ã¯ã·ã§ã³ã§ã¯ãKotlinç¬åŠã®æåãžã®éããŸãšããŠã¿ãããšæããŸãã
7.1 ç¶ç¶çãªåŠç¿ã®éèŠæ§
ã©ããªã¹ãã«ãç¿åŸããéããç¶ç¶çãªåŠç¿ã¯æ¬ ãããŸãããç¹ã«ããã°ã©ãã³ã°èšèªã®åŠç¿ã«ãããŠã¯ãæ¥ã ã®ç©ã¿éããéåžžã«éèŠã§ããæ°ããæŠå¿µãæ§æãåŠãã ããããã«å®éã®ãããžã§ã¯ãã§è©ŠããŠã¿ãããšã§ãç¥èãå®çãããããšãã§ããŸãã
7.2 ã³ãã¥ããã£ãšã®ç¹ãã
Kotlinã®ã³ãã¥ããã£ã¯äžçäžã«åºãã£ãŠãããå€ãã®æ å ±ããµããŒããæäŸãããŠããŸãããªã³ã©ã€ã³ã®ãã©ãŒã©ã ããã£ãããå°åã®ããŒãã¢ãããªã©ãéããŠãä»ã®åŠç¿è ãçµéšè ãšç¹ããããšã§ãåŠç¿ã®ã¢ãããŒã·ã§ã³ãç¶æããããšãã§ããŸãããŸããçåãå°ã£ãããšããã£ãéã«ã¯ãã³ãã¥ããã£ã®ã¡ã³ããŒããã®ãµããŒããåããããšãã§ããã§ãããã
7.3 ä»åŸã®Kotlinã®å±æ
Kotlinã¯ãä»åŸããã®äººæ°ãšæ®åãç¶ããšäºæ³ãããŠããŸããç¹ã«ãAndroidã¢ããªã±ãŒã·ã§ã³ã®éçºãããµãŒããŒãµã€ãã®éçºãªã©ãå€å²ã«ãããåéã§ã®å©çšãæåŸ ãããŠããŸãããã®ãããªèæ¯ãèžãŸããKotlinã®åŠç¿ã¯ä»åŸã䟡å€ããããšèšããã§ãããã
æåŸã«ãKotlinã®åŠç¿ã¯æ±ºããŠç°¡åãªãã®ã§ã¯ãããŸããããé©åãªã¢ãããŒããšç¶ç¶çãªåªåãéããŠããã®é åãæ倧éã«æŽ»ããããšãã§ããã§ãããããã®èšäºããããªãã®Kotlinç¬åŠã®äžå©ãšãªãããšãé¡ã£ãŠããŸãã