1. Kotlin ã©ã€ãã©ãªãšã¯ïŒ
1.1 Kotlin ã©ã€ãã©ãªã®å®çŸ©
ãŸãã¯åºæ¬ãããã£ãããšç解ãæ·±ããŠãããŸããããKotlin ã©ã€ãã©ãªãšã¯ãKotlinã§æžãããåå©çšå¯èœãªã³ãŒãã®éåäœã®ããšãæããŸãããããã®ã©ã€ãã©ãªã¯ãéçºè ãäžãããã¹ãŠãã³ãŒãã£ã³ã°ããã®ã§ã¯ãªãããã§ã«äœæãããã©ã€ãã©ãªã掻çšããããšã§å¹çè¯ãéçºãé²ããããšãã§ããŸãã
ãããã®ã©ã€ãã©ãªã¯å€æ§ãªæ©èœãæäŸããŠããããããã¯ãŒãã³ã°ãç»ååŠçãããŒã¿ããŒã¹æäœãUIã®äœæãªã©ãããããéçºé åã§å©çšããããšãå¯èœã§ããèªåèªèº«ã§å šãŠãéçºããæéãšã³ã¹ããåæžããããéèŠãªããžãã¹ããžãã¯ã«æ³šåã§ããã®ããã©ã€ãã©ãªã®å€§ããªã¡ãªãããšèšããŸãã
ãŸããKotlin ã©ã€ãã©ãªã¯å ¬éãããŠãããã®ãããèªç€Ÿå ã§ã®ã¿å©çšããããã©ã€ããŒããªã©ã€ãã©ãªãŸã§å€çš®å€æ§ã§ãããã©ã€ãã©ãªããšããèšèãæãç¯å²ã¯éåžžã«åºå€§ã§ãããåºæ¬çã«ã¯éçºã®å¹çåãç®æããŠæŽ»çšããããã®ããšèŠããŠãããšè¯ãã§ãããã
1.2 Kotlin ã©ã€ãã©ãªã®ç¹æ§
Kotlin ã©ã€ãã©ãªã«ã¯ããã®ä»ã®èšèªã§æäŸãããŠããã©ã€ãã©ãªãšæ¯èŒããŠããããã€ãã®åŒ·åãªç¹æ§ããããŸãããã®äžã€ãNullå®å šã§ãããã㯠Kotlin ãæã€ç¹æ§ã§ãNullåç §ãæé€ããããšãæå³ãããã®ã§ãããã®ç¹æ§ã¯ Kotlin ã©ã€ãã©ãªèªäœã«ãé©çšãããŠãããNullåç §ã®åé¡ã«ãã£ãŠåŒãèµ·ãããããã°ãå€§å¹ ã«æžããããšãæåŸ ã§ããŸãã
ãŸããKotlin ã©ã€ãã©ãªã¯Javaãšã®çžäºéçšæ§ãæããŠãããããJavaã§æžãããã³ãŒããšäžç·ã«äœ¿çšããããšãå¯èœã§ãããã®ç¹æ§ã«ãããJavaã®æ¢åã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ããã®ãŸãŸå©çšããããšãã§ãããããæ¢åã®Javaãããžã§ã¯ããžã®Kotlinã®å°å ¥ã容æã«ãããšãšãã«ãéçºè ã®å€ç«æã軜æžããŸãã
ããã«ãKotlin ã©ã€ãã©ãªã¯ããã®ãã¬ãã·ãã«ãªæ§é ã«ãã£ãŠç¹åŸŽä»ããããŸãããã©ã°ã€ã³ã®åœ¢ã§æäŸãããããç¬ç«ããã©ã€ãã©ãªãšããŠæäŸãããããšãã£ã圢æ ãåãããšãå¯èœã§ãããã«ããç¹å®ã®ãããžã§ã¯ããšã®çµã³ä»ããæè»ã«ããããšãåºæ¥ãŸãã
1.3 Kotlin ã©ã€ãã©ãªã®çš®é¡
Kotlin ã©ã€ãã©ãªã¯ãã®çšéã«ãã£ãŠå€çš®å€æ§ã«åããããŸããäŸãã°ãHTTPã¯ã©ã€ã¢ã³ãã©ã€ãã©ãªãJSONããŒãµãŒã©ã€ãã©ãªãããŒã¿ããŒã¹æäœã©ã€ãã©ãªãªã©ãšãã£ãå ·äœçãªçš®é¡ããããŸããããããã®ã©ã€ãã©ãªã¯ãå ·äœçãªæè¡çãªèª²é¡ã®è§£æ±ºã«åœ¹ç«ãŠãããŸãã
ãŸããé¢æ°åããã°ã©ãã³ã°ããµããŒãããã©ã€ãã©ãªããã³ã«ãŒãã³ç®¡çãç°¡ç¥åããã©ã€ãã©ãªãªã©ãKotlinã®ç¹æ§ãæ倧éã«åŒãåºãããã®ã©ã€ãã©ãªãååšããŸãããããã®ã©ã€ãã©ãªãé©åã«çµã¿åãããããšã§ãããå¹ççã§ãã¯ãã«ãªã¢ããªã±ãŒã·ã§ã³ã®éçºãå¯èœãšãªããŸãã
ãã®ä»ã«ããAndroidéçºãå©ããããã®ã©ã€ãã©ãªããããŒã¿æäœãå¹çåããããã®ã©ã€ãã©ãªãGUIã®éçºããµããŒãããã©ã€ãã©ãªãªã©ãéçºè ã®ããŒãºã«åãããŠå€ãã®ã©ã€ãã©ãªãååšããŸããèªåãã©ã®ãããªåé¡ã解決ãããã®ãããŸãã¯äœãå®çŸãããã®ãã«å¿ããŠé©åãªã©ã€ãã©ãªãéžæããããšãéèŠã§ãã
1.4 Kotlin ã©ã€ãã©ãªã®æŽå²
Kotlinèªäœã®ç»å Žã¯2011幎ã§ããã以éãæ°å€ãã®ã©ã€ãã©ãªãéçºãããŠããŸãããããã«ãããçŸåšã§ã¯å€çš®å€æ§ãªã©ã€ãã©ãªãååšãããããããéçºè ã®ããŒãºãæºããããã«æ¥ã é²åãç¶ããŠããŸãã
ãã®äžã§ããGoogleã2017幎ã«KotlinãAndroidéçºã®å ¬åŒèšèªãšçºè¡šããããšã«ãããAndroidéçºã®é åã§ã®Kotlin ã©ã€ãã©ãªã®æé·ã¯ç¹ã«é¡èã§ããããã«ããæ°å€ãã®Androidåãã©ã€ãã©ãªãç»å Žãããã®äžã«ã¯ä»æ¥ãæ°å€ãã®Androidã¢ããªéçºã§å©çšãããŠãããã®ãå°ãªããããŸããã
ãŸããKotlinã¯ãµãŒããŒãµã€ãéçºã§ã人æ°ããããSpring Bootãšã®çžæ§ã®è¯ãã泚ç®ãéããŠããŸããããã«äŒŽãããµãŒããŒãµã€ãéçºã§å©çšãããKotlin ã©ã€ãã©ãªãå¢ãç¶ããŠããŸãããã®ããã«ãKotlin ã©ã€ãã©ãªã¯æ§ã ãªé åã§åºãå©çšãããŠãããããããããã®é åã®éçºãå¹çåã»åŒ·åã®ããã«è²¢ç®ããŠããŸãã
2. Kotlin ã©ã€ãã©ãªã䜿ãã¡ãªãã
Kotlinã®ã©ã€ãã©ãªã¯ãéçºè ã«å€ãã®ã¡ãªãããæäŸããŸãããããã®ã©ã€ãã©ãªã䜿çšãããšãéçºãããç°¡åãè¿ éãå¹æçã«ãªããŸããããã§ã¯ãKotlin ã©ã€ãã©ãªãå©çšããäž»ãªå©ç¹4ã€ã«ã€ããŠè§£èª¬ããŸãã
ããããã®ã¡ãªããã«ãã£ãŠãKotlin ã©ã€ãã©ãªã¯ããªãã®ãããžã§ã¯ãã«è±å¯ãªæ©èœããããããŸããé åçãªçµã¿èŸŒã¿ããŒã«ã補åã®è³ªãåçã«æ¹åããå¯èœæ§ããããŸãã
以äžã§è¿°ã¹ã4ã€ã®ã¡ãªããã¯ãavalidationã®ãããªç¹å®ã®ã©ã€ãã©ãªã ãã§ãªããKotlinã®ã©ã€ãã©ãªå šè¬ã«å ±éããç¹æ§ã§ãã
2.1 ã³ãŒãã£ã³ã°å¹çã®åäž
Kotlinã®ã©ã€ãã©ãªãå©çšãããšãã³ãŒãã£ã³ã°å¹çãå€§å¹ ã«åäžããããšãèŠèŸŒãŸããŸããã©ã€ãã©ãªã«ã¯ãç¹°ãè¿ã䜿çšããäžè¬çãªã³ãŒãã®ã»ãããå«ãŸããŠãããããã䜿çšããããšã§éçºè ã¯ã³ãŒãã®èšè¿°éãå€§å¹ ã«åæžã§ããŸãã
ãŸããæ¢åã®æ©èœãåå©çšããããšã«ãããæ°èŠã«ã³ãŒããæžãå¿ èŠããªããªããŸããè»èŒªã®åçºæãé¿ããããšãã§ããã®ã¯äžå€§ã¡ãªããã§ãã
ããã«ãããéçºè ã¯ãããžã§ã¯ãã«éäžããããšãã§ããæéãšåŽåãç¯çŽããããšãã§ããŸãããã®çµæãå šäœã®éçºã¹ããŒããåäžãããããžã§ã¯ãã®éæãè¿ éã«ããããšãå¯èœã«ãªããŸãã
2.2 ãã€ããã©ãŒãã³ã¹ãªå®è¡
Kotlinã®ã©ã€ãã©ãªã¯ãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãæé©åããããã®æ°å€ãã®æ©èœãæäŸããŸããããã«ãããããå¹ççã«ã³ãŒããå®è¡ããããšãå¯èœã«ãªããŸãã
Kotlinã®ã©ã€ãã©ãªã¯æé©åãããŠããããããã䜿çšããããšã§ããã©ãŒãã³ã¹ã®åé¡ã軜æžãŸãã¯è§£æ±ºããããšãã§ããŸããããã«ãããã¢ããªã±ãŒã·ã§ã³ã®ã¬ã¹ãã³ã¹ãåŠçé床ãåäžããŸãã
ããã«ãäžéšã®Kotlinã©ã€ãã©ãªã¯ç¹å®ã®ã¿ã¹ã¯ãæé©åããŸããããšãã°ãç»ååŠçããããã¯ãŒã¯éä¿¡ãé«éåããã©ã€ãã©ãªãªã©ã§ãããããã䜿çšããããšã§ãç¹å®ã®æ©èœã®ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããšãã§ããŸãã
2.3 åªããäºææ§
Kotlinã®ã©ã€ãã©ãªã¯ãJavaãJava Scriptãšãã£ãä»ã®èšèªãšã®äºææ§ãéåžžã«é«ãã®ãç¹é·ã§ããããã«ãããæ¢åã®ãããžã§ã¯ãã«Kotlinãç°¡åã«çµ±åã§ããã³ãŒãã«å¯Ÿãããªã¹ã¯ãæå°éã«æããããšãå¯èœã«ãªããŸãã
ãŸããKotlinã®ã©ã€ãã©ãªã¯Javaã®ã©ã€ãã©ãªãšäºææ§ããããããJavaã§äœæãããèšå€§ãªã©ã€ãã©ãªãåŒãç¶ãå©çšããããšãã§ããŸããããã¯JavaããKotlinãžã®ç§»è¡ã容æã«ãããããžã§ã¯ãã®ã¹ã ãŒãºãªé²è¡ãæ¯ããŸãã
ããã«ãKotlinã®ã©ã€ãã©ãªã«ã¯AndroidéçºããµããŒãããããã®ã©ã€ãã©ãªãå€ãå«ãŸããŠããŸããããã«ãããAndroidéçºè ã¯Kotlinã掻çšãã匷åãªAndroidã¢ããªã±ãŒã·ã§ã³ãå¹ççã«æ§ç¯ããããšãå¯èœã«ãªããŸãã
2.4 é«åºŠãªæ©èœæ§
Kotlinã®ã©ã€ãã©ãªã¯ãé«åºŠãªæ©èœæ§ãæäŸããŸããããšãã°ãéåæåŠçããããã¯ãŒã¯éä¿¡ãããŒã¿ãã€ã³ãã£ã³ã°ãªã©ãçŸä»£ã®ã¢ããªã±ãŒã·ã§ã³éçºã§å¿ èŠãšãªãå€ãã®é«åºŠãªæ©èœããµããŒãããŠããŸãã
ãããã®æ©èœã掻çšããããšã§ãã¢ããªã±ãŒã·ã§ã³ã¯ãããŠãŒã¶ãŒãã¬ã³ããªãŒã«ããããŠãã¯ãã«ã«ãªããŸãããŸããéçºè ã¯è€éãªã³ãŒããæžãããšãªãããããã®é«åºŠãªæ©èœãå®çŸããããšãã§ããŸãã
çµè«ãšããŠãKotlinã®ã©ã€ãã©ãªã®äœ¿çšã¯ãéçºå¹çã®åäžãããã©ãŒãã³ã¹ã®æ¹åãäºææ§ã®ç¢ºä¿ãé«åºŠãªæ©èœã®å®è£ ãªã©ãå€å€§ãªãã¡ãªãããæäŸããŸãããããã®ã¡ãªããã«ãããéçºè ã¯ããå¹ççã§ããã¯ãã«ãªã¢ããªã±ãŒã·ã§ã³ãçŽ æ©ããç°¡åã«äœãäžããããšãã§ããŸãã
3. 代衚çãªKotlin ã©ã€ãã©ãªã®è§£èª¬
ããã§ã¯ãKotlinã®ã©ã€ãã©ãªãšããŠäžè¬çã«å©çšãããŠãããã®ã®äžãããããã€ãããã¯ã¢ããããŠãã®ç¹åŸŽãšå©çšæ¹æ³ã«ã€ããŠã玹ä»ããŸãã
ãŸãã¯ããµãŒããŒãµã€ãã®éçºã§å©çšãããKtorãã玹ä»ããŠãããŸãããã
ãã®æ¬¡ã«ãAndroidå°çšã®Ankoã«ã€ããŠèŠãŠãããŸããKotlinãAndroidå ¬åŒèšèªã«æ¡çšãããŠãããã®å©çšãåºãã£ãŠããŸãã
3.1 Ktor
Ktorã¯ãéåæI/Oã®ãµãŒããŒãµã€ãã¢ããªã±ãŒã·ã§ã³ãéçºããããã®ãã¬ãŒã ã¯ãŒã¯ã§ããJetBrainsãéçºãæšé²ããŠããããã¬ãŒã ã¯ãŒã¯èªäœãKotlin補ã§ãã
Ktorã¯ãã®ã·ã³ãã«ãªèšèšãç¹åŸŽã§ããµãŒããŒãµã€ãã®éçºã§å®¹æã«Kotlinãåãå ¥ããããšãã§ããŸãããŸãããã¬ãã·ãã«ãªãã©ã°ã€ã³ã¢ãŒããã¯ãã£ã圹ç«ã¡ãŸãã
HTTPãµãŒããŒãšããŠãžã§ããªãã¯ãªã¢ããªã±ãŒã·ã§ã³ãRESTã¢ããªã±ãŒã·ã§ã³ãWebSocketã«ã察å¿ããŠãããå€ãã®çšéã§å©çšã§ããŸãã
3.2 Anko
Ankoã¯ãAndroidéçºã§å®è£ ãå©ããããã®åŒ·åãªã©ã€ãã©ãªã§ããKotlinã§æžãããŠããããã®äžéšã¯Androidã®ç¹å®ããŒãžã§ã³ã§ã®ã¿å©çšå¯èœã§ãã
ãã®ã©ã€ãã©ãªã¯ãæ®éã¯XMLã§èšè¿°ãããLayoutã®å®çŸ©ãKotlinã®DSL(Domain Specific Language)ã§æžãããšãã§ããŸããããã«ãããåå®å šã§ã³ã³ãã€ã«æã«æ€èšŒå¯èœãªUIãå®çŸå¯èœã§ãã
ãŸããäžéšã¯ãªã¹ãããããŒããã£ã¹ãã¬ã·ãŒããŒã®ç»é²ãå¿«é©ã«ãäžéšã¯ããŒã¿ããŒã¹ã®ã¯ãšãªãç°¡åã«ããããã«æäŸãããŠããŸãã
3.3 Exposed
Exposedã¯ãKotlin補ã®è»œéã§åå®å šãªSQLã©ã€ãã©ãªã§ããããã«ãããSQLæäœãKotlinã®ã³ãŒãå ã§ã¿ã€ãã»ãŒããšãªããSQLã¯ãšãªã®äœæã容æã«ãªããŸãã
Exposedã«ã¯2ã€ã®å€§ããªAPIããããŸããäžã€ã¯ããŒã¿ããŒã¹ã«å¯ŸããçŽæ¥çãªæäœãæäŸããDAO APIãããäžã€ã¯SQLæãæäŸããSQL DSL APIã§ããã©ã¡ããKotlinããã匷åãªã¿ã€ãã»ãŒããç¹åŸŽã§ãã
ãã®ã©ã€ãã©ãªã¯JetBrainsãéçºããŠãããå¯çšæ§ãšä¿¡é Œæ§ãé«ããšèšãããŠããŸãã
3.4 Spek
Spekã¯ãã¹ããã¬ãŒã ã¯ãŒã¯ã®äžã€ã§ã”specification”ãšããåèªã®ã¹ã©ã³ã°ããåä»ããããŸãããSpekã¯ããã¹ãã”Given, When, Then”ã®åœ¢ã§èšè¿°ããããšãéèŠããŠããŸãã
ãã®ãã¬ãŒã ã¯ãŒã¯ã¯ãäžè¬çãªxUnitã¹ã¿ã€ã«ã®ãã¹ããšã¯ç°ãªãããã¹ãã¹ã€ãŒãããã¬ãã·ãã«ã«æ§é åå¯èœã§ããããã«ãã£ãŠããã¹ãã®æå³ãã¯ã£ãããšäŒããããã«ãªããŸãã
Junit 5ãã©ãããã©ãŒã äžã§åããããJunitãšåãããã«EclipseãIntellij IDEAãNetBeansãšãã£ãäž»èŠãªJava IDEãšäºææ§ããããŸãã
4. Kotlin ã©ã€ãã©ãªã®éžã³æ¹
Kotlinã®å€çš®å€æ§ãªã©ã€ãã©ãªã®äžãããèªåã®ãããžã§ã¯ãã«æé©ãªãã®ãéžã¶ã®ã¯å°é£ãªããšããããŸããããããã®ã©ã€ãã©ãªãæã€ç¹æ§ãæ©èœããããŠãã®è©äŸ¡ãå®å®æ§ã確èªããæ¹æ³ãç¥ãããšã§ãããæ¥ã ã®éçºãã¹ã ãŒãºã«é²ãããšã§ãããã
ãŸããKotlinã®ã©ã€ãã©ãªã¯ããã®ã³ãã¥ããã£ã®æŽ»æ§åºŠãéèŠãªéžæææšãšãªããŸãã掻çºãªã³ãã¥ããã£ã¯åé¡è§£æ±ºãžã®ãµããŒãããæ°æ©èœã®è¿œå ã«ã€ãªããããã§ãã
ããã§ã¯ãKotlinã®ã©ã€ãã©ãªéžã³ã«åœ¹ç«ã€ãã€ã³ãã«ã€ããŠèª¬æããŸãã
4.1 ãããžã§ã¯ãã®èŠä»¶ã«åã£ãã©ã€ãã©ãªã®éžã³æ¹
è¯ãã©ã€ãã©ãªãéžã¶ããã®äžã€ã®æ¹æ³ã¯ããŸãèªåã®ãããžã§ã¯ãã®èŠä»¶ãæ£ç¢ºã«ææ¡ããããšã§ããã©ã®ãããªæ©èœãå¿ èŠããã©ã®çšåºŠã®ããã©ãŒãã³ã¹ãæ±ãããããããããã¯ç¹å®ã®ãã©ãããã©ãŒã ã«å¯Ÿããäºææ§ã¯ããããªã©ãå ·äœçãªèŠä»¶ãæŽãåºãããšããå§ããŸãããã
次ã«ããããã®èŠä»¶ãæºããã©ã€ãã©ãªãèŠã€ããããšãç®æšã§ããã©ã€ãã©ãªã®ããã¥ã¡ã³ããŒã·ã§ã³ãAPIããããŠè§£èª¬èšäºãªã©ãèªãããšã§ããã®ã©ã€ãã©ãªãèªåã®èŠæ±ã«é©åãããã確èªããŸãã
è€æ°ã®åè£ãããå Žåã«ã¯ãããããã®ã©ã€ãã©ãªã®ç¹æ§ãè©å€ããããŠéå»ã®ããŒãžã§ã³ã¢ããããŒãã®é »åºŠãå 容ãæ¯èŒããŠãæçµéžæãè¡ããŸãã
4.2 ã©ã€ãã©ãªã®è©äŸ¡ãšæŽ»çšã®ãã€ã³ã
ã©ã€ãã©ãªãéžã¶éã«ã¯ããã®è©äŸ¡ãèŠãããšãéèŠã§ãããã䜿çšãããŠããã©ã€ãã©ãªã¯è©äŸ¡ãå€ããªããŸãã®ã§ããã®ç¹æ°ãå 容ã確èªããŸããé«è©äŸ¡ã§ããã°ããã»ã©ãä¿¡é Œæ§ãé«ããäžå ·åãå°ãªãå¯èœæ§ããããŸãã
ãŸããã©ã€ãã©ãªã®æŽ»çšæ¹æ³ãç解ããããã«ã¯ããã®ããã¥ã¡ã³ããŒã·ã§ã³ããã¥ãŒããªã¢ã«ã®æç¡ããããã®è³ªã倧åã§ããç解ãããã説æããµã³ãã«ã³ãŒããæäŸãããŠãããªããããã¯ãã®ã©ã€ãã©ãªãå°å ¥ãããã蚌æ ã§ãã
ããã«ãGitHubãªã©ã§ã®ã¹ã¿ãŒæ°ãåèã«ãªããŸããã¹ã¿ãŒæ°ãå€ãã»ã©ãå€ãã®éçºè ãããã®ã©ã€ãã©ãªã®äŸ¡å€ãèªèãããŠãããšèšããŸãã
4.3 ã©ã€ãã©ãªã®å®å®æ§ã確ãããæ¹æ³
ã©ã€ãã©ãªã®å®å®æ§ã¯ããããžã§ã¯ãå šäœã®å®å šæ§ã«çŽçµãããããéèŠãªææšã§ãããŸãã¯ããã®ã©ã€ãã©ãªããã¡ããšã¡ã³ããã³ã¹ãããŠããããé »ç¹ã«æŽæ°ãè¡ãããŠãããã確èªããŸãããã
ãŸãããšã©ãŒããã°å ±åã®æç¡ã確èªãããšè¯ãã§ããããGitHubãªã©ã§ãã°å ±åãé »ç¹ã«äžãã£ãŠããå Žåã¯ããã®ã©ã€ãã©ãªã®å®å®æ§ã«æžå¿µãæããããããããŸããã
ãããŠããã¹ããè±å¯ã«ååšãããã確èªãã€ã³ãã§ãããã¹ããå€ããã°å€ãã»ã©ããã®ã©ã€ãã©ãªã¯å®å®æ§ãé«ããšãããŸãã
4.4 ã³ãã¥ããã£ã®æŽ»æ§åºŠãšã©ã€ãã©ãªéžã³
Kotlinã®ã©ã€ãã©ãªã¯ããã®ã³ãã¥ããã£ã®æŽ»æ§åºŠãéèŠãªéžæææšã®äžã€ã§ãã掻çºãªã³ãã¥ããã£ã¯åé¡è§£æ±ºãžã®ãµããŒãããæ°æ©èœã®è¿œå ã«ã€ãªãããé·æçã«ãã®ã©ã€ãã©ãªãå©çšããããšã«ãªã£ãå Žåã«ã¯ç¹ã«æçã§ãã
ãã®ã³ãã¥ããã£ã®æŽ»æ§åºŠã枬ãæ¹æ³ãšããŠã¯ãGitHubã®issueã®é »åºŠããã¡ã³ããã³ã¹ã®ã¢ã¯ãã£ããã£ããã£ã¹ã«ãã·ã§ã³ã®çãäžããå ·åãªã©ãæããããŸãããããã®èŠçŽ ã掻çºã§ããã°ããã®ã©ã€ãã©ãªã¯æ£åžžã«ã¡ã³ããã³ã¹ãããŠãã蚌æ ãšãªããŸãã
ããå ·äœçãªæ¹æ³ãšããŠã¯ãStack Overflowã§ã®è³ªåæ°ãåççãTwitterãRedditãªã©ã§ã®è°è«ã®ç±éãªã©ã確èªãããšè¯ãã§ãããã
5. Kotlin ã©ã€ãã©ãªã掻çšããéçºææ³
ä»åã¯ãKotlinã©ã€ãã©ãªã®æŽ»çšæ¹æ³ã«ã€ããŠè§£èª¬ããŸããããããããéçºå¹çãå€§å¹ ã«åäžããããããžã§ã¯ãã®æåã«ç¹ããå¯èœæ§ãç§ããŠããŸãã
Kotlinã©ã€ãã©ãªã¯å€çš®å€æ§ã§ãããããç¹åããæ©èœãæã£ãŠããŸããããããçµã¿åãããããšã§ããã匷åã§æè»ãªéçºãå¯èœãšãªããŸãã
ããã§ã¯ãæ©èœå¥ã®çµã¿åããæŠç¥ãããå°å ¥ãšæŽæ°æ¹æ³ããããŠä»èšèªã©ã€ãã©ãªãšã®é£æºæ¹æ³ãŸã§è©³ããèŠãŠãããŸãããã
5.1 æ©èœå¥Kotlin ã©ã€ãã©ãªã®çµåãæŠç¥
Kotlinã©ã€ãã©ãªã¯æ§ã ãªæ©èœããããé©åã«çµã¿åãããããšãéèŠã§ããKotlinx.coroutinesã¯éåæåŠçãããã®ã«åœ¹ç«ã¡ãKtorã¯HTTPãµãŒãã®æ§ç¯ãExposedã¯SQLããŒã¿ããŒã¹ãæ±ããŸãã
ãããã®ã©ã€ãã©ãªãé©åã«çµã¿åãããããšã§ãéåæã®ãµãŒããµã€ãéçºãå¹ççã«è¡ãããšãå¯èœã§ãã
å ·äœçã«ã¯ãåãã«Ktorã䜿çšããŠHTTPãµãŒããæ§ç¯ããExposedã§ããŒã¿ããŒã¹ãæäœããKotlinx.coroutinesã§éåæåŠçãå®è£ ããããšããæµãã«ãªããŸãã
5.2 Kotlin ã©ã€ãã©ãªã掻çšãããã¹ããã©ã¯ãã£ã¹
Kotlin ã©ã€ãã©ãªã®æŽ»çšæ¹æ³ãšãã¹ããã©ã¯ãã£ã¹ã«ã€ããŠã§ããã©ã€ãã©ãªã®éžæãšå°å ¥ã¯ãæèçãèšèšçãªå€æãšãã¹ããã©ã¯ãã£ã¹ãããšã«è¡ãå¿ èŠããããŸãã
äŸãã°ãããŒã¿æäœã®éã«ã¯å€§éã®ããŒã¿ãå¹ççã«åŠçããå¿ èŠããããããAnkoã®ããã«SQLiteã®æäœãé«éåã§ããã©ã€ãã©ãªãéžæããŸãã
ãŸããAPIãå©ãéã«ã¯ãéåæåŠçãå¿ èŠãšãªããããéåæéä¿¡ããšã¬ã¬ã³ãã«æ±ãããšãã§ããKotlinx.coroutinesã掻çšããŸãã
5.3 Kotlin ã©ã€ãã©ãªã®å°å ¥ãšæŽæ°æ¹æ³
ããã§ã¯ãKotlinã©ã€ãã©ãªã®å°å ¥ãšæŽæ°æ¹æ³ã«ã€ããŠè§£èª¬ããŸãããŸãã¯ãGradleã䜿çšããæ¹æ³ããèŠãŠãããŸããããããšãã°ã次ã®ããã«dependenciesãããã¯ã«ã©ã€ãã©ãªãè¿œå ããŸãã
implementation ‘org.jetbrains.kotlinx:kotlinx-coroutines-core:1.x.x’
æŽæ°æãåæ§ã§ãããŒãžã§ã³çªå·ãæ°ãããã®ã«æŽæ°ãããããžã§ã¯ããåæããã°åæ ãããŸãã
5.4 Kotlin ã©ã€ãã©ãªãšä»èšèªã©ã€ãã©ãªãšã®é£æºæ¹æ³
Kotlinã¯ã100ïŒ ã®Javaäºææ§ãã売ãã«ããŠããŸããããã¯ãJavaã©ã€ãã©ãªãšã®é£æºã容æã§ãããšããæå³ã§ãã
å ·äœçã«ã¯ãJavaã®ã©ã€ãã©ãªããã®ãŸãŸäœ¿çšããããšãå¯èœã§ããåæ§ã«ãä»ã®JVMèšèªã®ã©ã€ãã©ãªãå©çšå¯èœã§ããæ瀺çã«Kotlinã§ã©ã€ãã©ãªãåå®è£ ããå¿ èŠã¯ãããŸããã
ãã ããKotlinã®ç¹æ§ã掻ãããŠæ倧éã«ããã©ãŒãã³ã¹ãåºãããã«ã¯ãKotlin察å¿ã®ã©ã€ãã©ãªã䜿ãããšããå§ãããŸãã
6. ãŸãšãïŒKotlin ã©ã€ãã©ãªã®å¹æçãªæŽ»çšæ³
Kotlin ã©ã€ãã©ãªã¯åçš®éçºã§å€§å€æçšã§ããã®æè»æ§ãšäŸ¿å©ãã¯æ¥ã å¢ããŠããŸããããã§ã¯ãéçºã«ãããKotlin ã©ã€ãã©ãªã®çæ³çãªæŽ»çšæ³ã«ã€ããŠãŸãšãããã®éªšå€ªãªã¬ã€ãã©ã€ã³ã瀺ããŸãã
ãŸãããããã®ã©ã€ãã©ãªãä»åŸãç¶ç¶ããŠæé·ãããã匷åãªããŒã«ãšãªãããã®å¯èœæ§ã«ã€ããŠãèªããŸããæåŸã«ãã©ã®ã©ã€ãã©ãªãéžã¶ã¹ããã«ã€ããŠã®ã¢ããã€ã¹ãæäŸããŸãã
ãã®ã¬ã€ããéããŠãããªããKotlin ã©ã€ãã©ãªãããå¹æçã«æŽ»çšããããã®ç¥èãšå¿ èŠãªæ å ±ãåŸãããããšãé¡ã£ãŠããŸãã
6.1 åçš®æœçã§ã®Kotlin ã©ã€ãã©ãªã®æŽ»çšæ³
Kotlin ã©ã€ãã©ãªã¯ããã®å®è£ ã®æéãå€§å¹ ã«è»œæžããã ãã§ãªããå¹ççãªã³ãŒãæ§é ãå¯èœã«ãããšãã£ãã¡ãªãããæäŸããŸãããããã®ã©ã€ãã©ãªãå¹æçã«æŽ»çšããããšã§ãããžãã¹ã®æé·ã«å€§ããå¯äžããããšãå¯èœãšãªããŸãã
æåã«ãããŒã¿æäœã«é¢ããŠæ³šç®ãã¹ãã©ã€ãã©ãªããããŸãã
次ã«ãéçºãè¿ éåããããã«å¿ èŠäžå¯æ¬ ãªãã¬ãŒã ã¯ãŒã¯ã©ã€ãã©ãªã«ã€ããŠèª¬æããŸããæåŸã«ãã¢ãã€ã«ã¢ããªéçºã«åœ¹ç«ã€ã©ã€ãã©ãªã«ã€ããŠã觊ããŸãã
6.2 Kotlin ã©ã€ãã©ãªã䜿ã£ãéçºã®ä»åŸã®å±æ
Kotlin ã©ã€ãã©ãªã䜿ã£ãéçºã¯ãããããããŸããŸãåºãããèŠããŠããã§ããããã€ã³ãã©ã¹ãã©ã¯ãã£ã®ç¯å²ãããŒã«ã»ããã®å€æ§æ§ããããŠã³ãã¥ããã£ã®æé·ãšãã£ãèŠçŽ ãããã®å±éãåŸæŒããããšèããããŸãã
ãŸããããKotlinã®äžæµéçºè ãæ°ããã©ã€ãã©ãªã«åãçµããšããããä»åŸããã®åœ±é¿åãæç¶ããŠãããã§ããããçµæãšããŠãéçºè ã®å©ãã«ãªãæ°ããªããŒã«ãšããŠæ®åããŠããå¯èœæ§ããããŸãã
å ·äœçãªäºæ³ãšããŠã¯ãAIãããã°ããŒã¿ãæ±ãããã®ã©ã€ãã©ãªã®éèŠãé«ãŸãã§ãããããŸããã¯ãã¹ãã©ãããã©ãŒã éçºãå©ããã©ã€ãã©ãªãäŸç¶ãšããŠæ³šç®ãããŠããŸãã
6.3 Kotlin ã©ã€ãã©ãªã®æŽ»çšã«åããã¢ããã€ã¹
Kotlin ã©ã€ãã©ãªã掻çšããã«ããã£ãŠã¯ããŸãäœãéæãããã®ããã©ããªåé¡ã解決ãããã®ããæ確ã«ããŸããããããããèªåã®ããŒãºã«æé©ãªã©ã€ãã©ãªãéžã¶ããšãã§ããŸãã
次ã«ããã®ã©ã€ãã©ãªãé »ç¹ã«æŽæ°ãããŠããããè±å¯ãªããã¥ã¡ã³ããŒã·ã§ã³ãä»å±ããŠãããããŸãã¡ã³ããã³ã¹ãè¯å¥œã§ããããšãã£ãããšãè©äŸ¡åºæºãšããŠèæ ®ãã¹ãã§ãã
ãããŠãæåŸã«ãå¯èœã§ããã°ãã®ã©ã€ãã©ãªã®ã³ãã¥ããã£ã«åå ããããšããå§ãããŸããããã§ã¯ãä»ã®éçºè ããåŸããã invaluable advice ãšãµããŒããåŸãããã§ãããã
6.4 Kotlin ã©ã€ãã©ãªéžã³ã®æåŸã®ãã€ã³ã
Kotlin ã©ã€ãã©ãªãéžã¶éã®æåŸã®ãã€ã³ãã¯ããå®éã«ããã䜿ã£ãŠäœãéæãããã®ãããç解ããããšã§ããç®çãæ確ã§ããã°ããã»ã©ãé©åãªã©ã€ãã©ãªãèŠã€ããããšã容æã«ãªããŸãã
ãŸããç¹å®ã®ã©ã€ãã©ãªãä»ã®äŒŒããããªã©ã€ãã©ãªãšæ¯ã¹ãŠã©ããªå©ç¹ãæã£ãŠããã®ããç解ããããšãéèŠã§ããçµå±ã®æãããªãã®ãããžã§ã¯ãã®ããŒãºãæãããæºããã©ã€ãã©ãªãéžã¶ããšãæè¯ã®çµæããããããŸãã
ããšãã°ãããã©ã€ãã©ãªãéåžžã«åŒ·åãªæ©èœãæã£ãŠããäžæ¹ã§ãåŠç¿æ²ç·ãéºããå Žåããããã¯äžååãªããã¥ã¡ã³ããŒã·ã§ã³ãããå Žåã¯ãä»ã®ãªãã·ã§ã³ãæ€èšãã¹ããããããŸããã