ãã¯ãããžãŒãã©ã€ãã©ãªã®æ°ã¯æ¥ã
å¢å ããŠãããã¢ãã€ã«ãããžã§ã¯ããéå§ãŸãã¯éçºããããã®ãã¯ãããžãŒãšã¢ãŒããã¯ãã£ã®ã¹ã¿ãã¯ãéžæããéã«è¿·åã«ãªãããšããããããŸãã ãªã¹ã¯ãæå°éã«æããããšã¯ééããªãå¯èœã§ãããªãã·ã§ã³ã®1ã€ã¯ãAndroidéçºã®å°éå®¶ã®æèŠãèãããšã§ãã
ããã§ã 90Seconds.comã®Androidéçºè
ã§ããDenis
nekdenis NeklyudovïŒAndroid GDEïŒãšStepan
stepango Goncharovã«æ³šç®ããŸããã ã€ã³ã¿ãã¥ãŒã§ã¯ãã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã®ã¢ãŒããã¯ãã£ãããããžã§ã¯ãã§ã®Rxã©ã€ãã©ãªã®äœ¿çšãŸã§ãããã€ãã®éèŠãªãããã¯ã«è§ŠããŸãã ããã§ã¯å§ããŸããã...
ããã¹ã»ãã¯ãªãã
-
ããã«ã¡ã¯ãããã¹ïŒ çŸæç¹ã§éçºã®ã³ã³ããã¹ãã§ããªããæ³šåããŠããããšãæããŠãã ããã-ããã«ã¡ã¯ïŒ çŸåšãMobiusã®ããŒãããŒã§ããStepan Goncharovãšåæ§ã«ãã·ã³ã¬ããŒã«ã«æ ç¹ã眮ã90Seconds.comã®æ°ããã¢ãã€ã«ã¯ã©ã€ã¢ã³ããéçºããŠããŸãã çŸåšã®ãããžã§ã¯ãã§äžçªæ°ã«å
¥ã£ãŠããã®ã¯ãStepanãã¢ããªã±ãŒã·ã§ã³ããŒãããäœæãå§ããéåžžã«è峿·±ãã¢ãŒããã¯ãã£ãæ§ç¯ã§ããããšã§ãã ããã«ãKotlinãããã°ã©ãã³ã°èšèªãšããŠäœ¿çšããããããŒã¿ãæäœããããã®äºåŸå¯Ÿå¿çãªã¢ãããŒããªã©ããã¡ãã·ã§ããã«ãªã¢ãããŒãã§ãããšèšãããããããŸããã
-
æ°å¹Žåã®ã€ã³ã¿ãã¥ãŒã§ããGoogle Developer Expertãã®ã¹ããŒã¿ã¹ãšãããããªãã«ãšã£ãŠäœãæå³ããã®ãã«ã€ããŠè©±ããŸããã ç§ã®æèŠã§ã¯ãéèŠãªãã¬ãŒãºã®1ã€ã¯æ¬¡ã®ãšããã§ãããããŸããç§ã®å¥œããªè¶£å³ã«åå ããããšïŒäŒè°ãããããã£ã¹ããèšäºã§äººã
ãšç¥èãå
±æããããšããæ
å ±ãåºããã¢ã€ãã¢ãä¿é²ããå¿
èŠæ§ã«ã€ããŠèããå€ããŠãã ããã-ç§ã¯å€æŽããŠããŸãããã
Androidéçºã«é¢ããããããã£ã¹ãã® 30ã®åé¡ãããã¯çŽ æŽããã確èªã§ãã ãã®2幎éã§åºäŒã£ããGDEã®ã¹ããŒã¿ã¹ã«ããå¥ã®åé¡ãå
±æã§ããŸãã ãæ°ããAndroidã®æ°æ©èœããšãããããã¯ãæãä»ããšãããã¥ã¡ã³ããèªãã§ããå€ãã®äººã
ãããŸãã20ããŒãžãã¹ãŠã1ã€ã®äŸ¿å©ãªãã¬ãŒã³ããŒã·ã§ã³ã«ãã¡ããšå
¥ããŠããããããŸããããã¯ç§ã§ããèªåã§èªãããšãã§ããŸãããã ãããŠãããªãã倧倿°ã«ç¥ãããŠããªããããã¯ãæãã€ãããšããããªãã¯ãããäŒããŸãããããŠã圌ãã¯å®å
šã«æºåãããŠãããã30åã®ãã¬ãŒã³ããŒã·ã§ã³ã§å
¥éè³æã®æéããªãã®ã§ãèŽè¡ã®ã»ãã®äžéšã ãã圌ãã話ããŠããããšãçè§£ããŠããŸãã ãããŠãããªãã®æåã®ãã¬ãŒã³ããŒã·ã§ã³ãå»ã£ã人ã
ã2çªç®ããåããå»ããªããšããäºå®ãããããŸããã
ããããããããã£ã¹ããé²é³ããããšã«ããçç±ã§ãã ããããã¬ãã«ã®åé¡ã«ã€ããŠè©±ãåãã®ã§ã誰ããè³ãåŸããããšã¯è峿·±ãã§ããããåå¿è
ãšæ¥çã®å°éå®¶ãèªåèªèº«ã«åœ¹ç«ã€ãã®ãèŠã€ããã§ãããã
-
ããªãã®ä¿¡æ¡ã¯ãææ°ã®éçºãšå€æŽã«é
ããã«ã€ããŠããããšã§ããïŒ èšèªã®ä»åŸã®å€æŽã«é¢ããç¥èã¯ãã³ãŒããèšè¿°ããç¹å®ã®ã¹ã¿ã€ã«ã®é å®ã«åœ±é¿ãäžããŸããããããšãããªãã¯ææ°ã®ãã¯ãããžãŒã®æ¯æè
ã§ããïŒ-ç§ã¯ãã©ã³ã¹ãç¶æããæ¯æŽè
ã§ãã ãç§ãã¡ã«ã¯ããŸã ãªãªãŒã¹ãããŠããªãææ°ã®ã©ã€ãã©ãªããããæãçµã£ãŠããã¹ããããŠããªãã¢ãããŒãããããŸãããšããæ¥µç«¯ã«èããããšã¯ã§ããŸããã ãŸããé·å¹Žã®çµéšã§12å以äžã®ã³ãŒã³ãèç©ããŠãã人ã
ãæ°ããããšã詊ã¿ãŠãããšããå®å
šãªä¿å®äž»çŸ©ã奜ãã§ã¯ãããŸããã 仿¥ã®ããžãã¹ã«å¿
èŠãªéçºé床ãšãææ¥ããžãã¹ã«å¿
èŠãªã¢ããªã±ãŒã·ã§ã³ãä»ã®ããŒã ãšãšãã«æ¡åŒµãæ¡åŒµãç¶æããèœåãšã®ãã©ã³ã¹ããšãå¿
èŠããããŸãã
-
ãã¹ãŠã®æ³šæãAndroid Nougatã«éäžããŠããŸããïŒ éçºè
ãã©ã®ãããªã€ãããŒã·ã§ã³ãç©æ¥µçã«åãå
¥ããã®ãããªãªãŒã¹ããç¬éãããã§ã«æ±ºå¿ãããšæããŸãã-å®éãå
æ¥çºè¡šãããNougatãMarshmallowãAndroid O Developer Previewã¯ãAndroid Lollipopã®ææ©çãªéçºã§ãããSDKã®æ ¹æ¬çãªå€æŽã詊ã¿ãããšã¯ãããŸããã äžæ¹ã§ãããã¯è¯ãããšã§ããã¢ããªã±ãŒã·ã§ã³ã§OSã®æ°ããããŒãžã§ã³ããµããŒãããããã«ãå€ãã®äœæ¥ãå¿
èŠãšããŸããã ãããäžæ¹ã§ãAndroidã®å€ãæ¬ é¥ãšãã®ã«ãŒãã¢ãŒããã¯ãã£ã¯ãæ¯æ¥å€ãã®èŠçããããããŸãã
-
ããªãã®æèŠã§ã¯ãé©çšãããMVVMã¢ãŒããã¯ãã£ãModel-View-ViewModelããäž»å°çå°äœãå ããŠãããææ°ã®æè¡ãšèŠãªãããŠããŸããïŒ ãã®æ¹åã®å€åãæåŸ
ããŠããŸããïŒ ãã®ã¢ãŒããã¯ãã£ã®ã¢ãããŒãã«ã¯äœãããããããšãã§ããŸããïŒ-ã¢ãŒããã¯ãã£ã¢ãããŒãã®äž»èŠãªäœçœ®ã«ã€ããŠè©±ãããšã¯å°é£ã§ãã ã©ãã«ãé·æãšçæããããŸãã åžå Žã§äººæ°ã®ããã»ãšãã©ã®ã¢ããªã±ãŒã·ã§ã³ã®å€èгãåäœãããã³ãå
éšããèŠããšãäž»èŠãªã¢ãããŒãã§ããããããã¯ã·ã§ã³ã§ã®å€§å€±æãã«çãã®äœå°ã¯ãªãã®ã§ãMVVMã¯ç¹ã«äººæ°ããããšã¯æããŸããã ãŸããAndroidã®äžçã§ã¯ãiOSãšã¯ç°ãªããGoogleã®DataBindingãå°ãåã«å®å®ããããããããããªãè¥ãæ¹åã§ãã
-
ç§ã®ç¥ãéããã¬ããŒãã®äžéšã¯MVVMãã³ãã¬ãŒããšãªã¢ã¯ãã£ãç°å¢ã§ã®ãã©ã€ããã«åœãŠãããŸãã ãããã¢ããªã±ãŒã·ã§ã³ã®ã¢ãŒããã¯ãã£ã®æ°ããå€èгãªã®ããæ°ãããœãŒã¹ã§èšèšããããã®å€ãã¢ãããŒãã®ã¬ãã¥ãŒãªã®ããæããŠãã ããã-ããã¯ç§ãã¡ã®å
ã®èŠè§£ã§ãããæè¯ãã€æãæ£ç¢ºã§ãããšäž»åŒµããã®ã§ã¯ãªããããç¥ããããœãªã¥ãŒã·ã§ã³ãçµã¿åãããŠããŸãããç¬èªã®ææãæã£ãŠããŸãã ç§ãã¡ã¯ãã®æ¹æ³ã§ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããŸãããAndroid SDKãšã¢ããªã±ãŒã·ã§ã³ã©ã€ããµã€ã¯ã«ã®å€ãã®å¶éãšã®éããæé€ããã¢ãããŒããèŠã€ããããã®çµ¶ææããŸã æ®ããŠããªããã·ã¢ã®ååãšãããå
±æããããšæããŸãã
-
çŸåšãéçºè
ã«ã¯å€§ããªãã£ã³ã¹ããããåæã«å€ãã®èœãšã穎ããããç¹ã«å€§èŠæš¡ãªãããžã§ã¯ãã§ã¯ãã¹ãŠã远跡ããããšã¯ã§ããŸããã ãã®ç¶æ³ã§ã¯ãäŸåæ§æ³šå
¥ïŒDIïŒã䜿çšããã®ãåªãããœãªã¥ãŒã·ã§ã³ã§ãããšæããŸãããïŒ-ã¯ããDIã¯ãªãã¡ã¯ã¿ãªã³ã°ãé«éåããçŽ æŽãããæ¹æ³ã§ãã ãããããããããã°è³ã®DIã«å€ããŠããã¹ãŠãç¡å·®å¥ã«æ³šå
¥ããå¿
èŠã¯ãããŸããã ç§ãã¡ã¯90ç§ã§ãèªå®
ã®ãããžã§ã¯ãã§ãDIã倧奜ãã§ãDagger2ã§å®è£
ããããšããããããŸãã ãŸãããããžã§ã¯ãã§ãã®ã¢ãããŒãã䜿çšããããšãå
šå¡ã«æšå¥šããŸãã ã¹ããã³ãšã®ç§ã®ãã®ãå«ãããã¹ããããŠããã¢ãŒããã¯ãã£ãšé©åãªã³ãŒããµããŒããå¯èœã«ããããšã«ã€ããŠãMobiusã«ã€ããŠã®ããã€ãã®ã¬ããŒãããããŸãã
-
äŒè©±ããããšãããããŸããã ãå ±åããåŸ
ã¡ããŠãããŸããç§ãã¡ã¯
ãã¬ãŒã³ããŒã·ã§ã³ã§çãåŸ
ã£ãŠããŸããããã¯é¢çœãã§ãããïŒ
ã¹ããã³ã»ãŽã³ãã£ãã

-
ã¹ããã¡ã³ãããã«ã¡ã¯ïŒ ããªãèªèº«ãšä»ã®ä»äºã«ã€ããŠå°ãæããŠãã ããã-ãããã ç§èªèº«ã«ã€ããŠããç°¡åã«èšãã°ã2008幎ãå
¬åŒãªãªãŒã¹1.0ããåã®Androidéçºã«èå³ãæã¡å§ããŸããã2009幎ååã«ã¯ãAndroidããŒã±ããã«æ¢ã«ã¢ããªã±ãŒã·ã§ã³ããããŸããïŒGoogle PlayããããšåŒã°ããããšãèŠããŠãã人ã¯ã»ãšãã©ããŸããïŒãä»ã®ããã€ãã®ãµãŒãããŒãã£åžå Žã åºåãããç§ã¯çŽ1,000ãã«ã皌ãããã®ã¢ããªã±ãŒã·ã§ã³ãå®éã®ããã€ã¹ã§ã©ã®ããã«æ©èœããããèŠãããã«æåã®Androidãã©ã³ã賌å
¥ããŸããã åæã«ããã§ã«ãæ°ã¥ãã®ããã«ãã²ãŒã ã®äœæã«å€¢äžã«ãªããŸãããã²ãŒã ã®1ã€ã¯ããã®åŸAndroidããŒã±ãããšApp Storeã«ç»å ŽããŸããã ãã®åŸãã«ã¹ã¿ã ã¢ããªã±ãŒã·ã§ã³ã®éçºã«åãæ¿ããŠãããã«4幎éãè²»ãããåŸã補åéçºã«ææŠããããšæããŸããã ãã®ãããã·ã³ã¬ããŒã«ã®ã¹ã¿ãŒãã¢ããã®1ã€ã§ããŒã ãªãŒããŒã«ãªãããã®åŸ90ç§ã§ãæå
ç«¯ã®æè¡ã䜿çšããŠç¬èªã®ã¢ããªã±ãŒã·ã§ã³ããŒãããäœæããããšãã§ããŸããã
-
2011幎ã«ãèªè
ã確å®ã«æ¹ãã€ããã²ãŒã ã®äœæã«é¢ããäžé£ã®èšäºããªãªãŒã¹ããŸããã 仿¥ããããã®ææã®éèŠããããŸããïŒ-æ®å¿µãªãããç§ã¯ã²ãŒã éçºã«é¢ããèšäºãé·ãéæžããŠããŸããã çŽ1幎åã圌ã¯
Mediumã« ãäž»ã«KotlinãšAndroidã«é¢ããå°ããªèšäºã远å ãå§ããŸããã
-
ç§ãã¡ã®äŒè©±ã®ãããã¯ã«çŽæ¥é¢é£ãã質åããããã£ãã å°ãåã«ãKotlin ã«é¢ããéä¿¡ãèŠãŸãããããç§ã«ãšã£ãŠå¹žéãªããšã«ãKotlinã¯Javaã®äžçã§ã¯ã¹ã€ã¹ã¢ãŒããŒãã€ãã§ããïŒç§ã«ãšã£ãŠã¯ãKotlinã¯Javaã®äžçã§ã¯ã¹ã€ã¹ã®ãã€ãã§ãïŒãšããçããæ¬åœã«æ°ã«å
¥ããŸããã Kotlinã¯ã¯ã³ã¹ãããéçºãœãªã¥ãŒã·ã§ã³ã ãšæ¬åœã«æããŸããïŒ-ã¯ããKotlinã¯ãã®æ¬ ç¹ã«ãããããããçç£æ§ã倧å¹
ã«åäžãããéçºè
ã®æ©èœãæ¡åŒµãããŠããŒã¯ãªããŒã«ã§ãããã»ãšãã©ãã¹ãŠã®Javaã©ã€ãã©ãªã§äœæ¥ã§ããŸãã
ããŒã¿ã¯ã©ã¹ãšããã©ã«ããã©ã¡ãŒã¿ã®åªãã䜿çšäŸãéçºè
ã®
çç£æ§ãåäžã
ããæ¹æ³ã®äŸã ãããŠ
ããªã¹ãã§ã®äœæ¥ã瀺ããã1ã€ã®ãªãã·ã§ã³ã
-Kotlinã®äœ¿çšã«ããã³ãŒãã®å質ãå¯èªæ§ãåäžããå Žåã«ãã£ãŠã¯nullã®äžèŠãªãã§ãã¯ã軜æžã§ããç¶æ³ã«ã€ããŠæããŠãã ããã-å®éãKotlinãšJavaã®æãé¡èãªéãã®1ã€ã¯Nullableåã§ãã nullãã§ãã¯ãæç€ºçã«è¡ãå¿
èŠããããããã³ãŒãã®å質ã¯å€§å¹
ã«åäžããŸãããNPEãå®å
šã«åé€ããããšãä¿èšŒãããã®ã§ã¯ãããŸããã ç§ã®ãæ°ã«å
¥ãã®Kotlinæ©èœã®1ã€ã¯ãæšæºJavaã³ã¬ã¯ã·ã§ã³ã®
æ¡åŒµæ©èœã»ããã§ããããã«ãããããŒã¿ã®æäœã倧å¹
ã«ç°¡çŽ åãããã³ãŒãéãåæžãããŸããããã«ããããã®åŸã®å€æŽã容æã«ãªããæœåšçãªãšã©ãŒã®æ°ãåæžãããŸãã ãããŠããã¡ãããã€ã³ã¿ãŒãã§ã€ã¹ã®ã¡ãœããã®ããã©ã«ãå®è£
ãšçµã¿åãããŠ
ããªã²ãŒãã䜿çšãããšãã³ã³ããžã·ã§ã³ã100ïŒ
䜿çšã§ããŸããããã¯ã倧éã®ã³ãŒããèšè¿°ããç¶æããå¿
èŠããããããJavaã§éæããã®ã¯éåžžã«å°é£ã§ãã
-Kotlinã³ãŒãã®ç°¡æœããšã³ã³ãã¯ããã«ã€ããŠããããã¯ãŒã¯äžã§å€ãã®è³æãèŠã€ãããŸãããããã§ãã¹ãŠãæããã«ãªããŸããã ãããããã®ãããªã³ãŒãã®ãµããŒããå¿ããªãã§ãã ããã ããšãã°Javaã®éçºè
ã¯ãKotlinã®ãããžã§ã¯ããåžžã«ãã°ããçè§£ã§ããŸããïŒ Java / Scalaãªã©ã§ã¯çããèšèªã®åé¡/埮åŠãªç¹ã¯ãããŸããïŒ-ç§ã¯2012幎ã«Kotlinã«èå³ãæã¡å§ããŸããããçµéšè±å¯ãªJavaéçºè
ãKotlinã«å¯ŸåŠããããšã¯é£ãããªããšæããŸããããã¹ã¯æè¿ãããçµéšããŸããã åå¿è
ã®Javaéçºè
ã«ãšã£ãŠã¯ããã¹ãŠãã¯ããã«è€éã§ããç§ã®èгç¹ãããããšãKotlinãåŠã³å§ããã«ã¯Javaã®æ·±ãç¥èãå¿
èŠã§ãã
å€ãã®å ŽåãKotlinã®æ©èœã«é¢ããç¥èã¯ãç¹å®ã®ã©ã€ãã©ãªãæåŸ
ã©ããã«æ©èœããªãçç±ãçè§£ããã®ã«åœ¹ç«ã¡ãŸãã 埮åŠãªç¹ã®ãã¡ãå€ãã®äžè¬çãªã©ã€ãã©ãªïŒDagger2ãRxBindingsãªã©ïŒã§äœ¿çšãããŠãã
泚éåŠçã«ã¯æ³šæãã䟡å€ããããŸãããããã§ãå€å°ã®äžéœåãçããŸããããšãã°ãDagger2ã¯ã@ JvmSuppressWildcardsã¢ãããŒã·ã§ã³ã®ãªããžã§ããªãã¯åã§ã¯æ©èœããŸããã ãŸããåå¿è
ã¯ã€ã³ã©ã€ã³é¢æ°ãš
ã³ã«ãŒãã³ã®ã¹ã¿ãã¯ãã¬ãŒã¹ã®ç°åžžãªåœ¢åŒã«å¯ŸåŠããå¿
èŠããããŸãã
-Androidã®å¥ã®éçºãããã¯ã«è§ŠããããšæããŸãã ããªãé·ãé ãã¢ããªã±ãŒã·ã§ã³ã§RxJavaã䜿çšããå©ç¹ã«ã€ããŠèãããèªãã ãããŠããŸãã ãã®ã©ã€ãã©ãªã«ã€ããŠã®ããªãã®æèŠãèãã®ã¯è峿·±ãã§ãã ç§ã¯ãReactiveXã«ã€ããŠåžžã«ãŠããŒã¯ã«è¯å®çã§ã¯ãªãè³æãããèŠãŸãã-ã¯ããããªãã¯æ£ããã§ãããã®ã¢ãããŒããŸãã¯ãã®ã¢ãããŒãããåžžã«å«æªè
ãšãã¡ã³ã®äž¡æ¹ãååšããã§ããããrxJavaãäŸå€ã§ã¯ãããŸããã ç§ã¯ä»ã®ã°ã«ãŒããšåæ§ã«ãã¢ãããŒãèªäœã«é·æãšçæã®äž¡æ¹ãããããšãçè§£ããŠããŸãããç§ã¯2çªç®ã®ã°ã«ãŒãã«ããŸãã ãããããã¹ãŠã®æ¬ ç¹ã«ãããããããå°ãªããšãåAndroidéçºè
ã®ãããã¯ãå®å
šã«çè§£ããããšããå§ãããŸãã
-RxAndroidããã³RxBindingã®åœ¢åŒã§ã®RxJavaã®ãç¶ç¶ãã«ã€ããŠã©ãæããŸããïŒ ãããžã§ã¯ãã§ãã®æ©èœã䜿çšããŠããŸããïŒ-RxKotlinãžã®è²¢ç®è
ããã³
RxDataBindingsã®äœæè
ãšããŠãåæ§ã®Rxã©ã€ãã©ãªã«å€§ããªã¡ãªããããããšæããŸãã ãããŠãåãããžã§ã¯ãã§RxAndroidã䜿çšããŠããŸãã
RxDataBindingsã¯ãDataBindingsã©ã€ãã©ãªãšrxJava2ã®ã¯ã©ã¹ã®çžäºäœçšã«å¿
èŠãªã³ãŒãã®éã倧å¹
ã«åæžã§ããŸãã
-
äŒè©±ããŸãšãããšãä»åŸ2幎éã®Androidéçºã®åŸåã«ã€ããŠã®æèŠãèããããšæããŸãã åå¿æ§ãã³ã³ãã¯ãããããã³ã³ãŒãåæžã«åããåãã¯ç¶ããŸããïŒ-確ãã«ãAndroidã³ãã¥ããã£ã¯ãã§ã«Javaã®åé·æ§ã«é£œã飜ãããŠãããç¹ã«AppleãSwiftã宣äŒããã®ãèŠãŠããã ä»åŸæ°å¹Žéã§ãAndroidéçºçšã®ä»£æ¿JVMèšèªïŒKotlinãScalaãGroovyãCeylonãClojureïŒã®äœ¿çšãæ¥éã«å¢å ãããšæãããŸãã Rxã¯ãã¢ãã€ã«éçºã®äž»èŠãªã¢ãããŒããšããŠã®å°äœãåŒãç¶ã匷åããå¯èœæ§ããããŸããä»åŸæ°å¹Žã§ãã³ã«ãŒãã³ã®æŠå¿µã«åºã¥ããã¢ãããŒããšããç«¶äºã§ããªããªããŸãããæ®å¿µãªãããKotlinã ãããããããµããŒããããã®åŸå®éšã¢ãŒãã«ãªããŸãã
-
äŒè©±ããããšãããããŸããã ããªãã®ãã¬ãŒã³ããŒã·ã§ã³ã楜ãã¿ã«ããŠããŸããã¡ããŠã¹äŒè°ã§ãããã¹ãšã®ã¬ããŒãã«çãããæåŸ
ããŸãã