ããã§ã 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ã ãããããããµããŒããããã®åŸå®éšã¢ãŒãã«ãªããŸãã
- äŒè©±ããããšãããããŸããã ããªãã®ãã¬ãŒã³ããŒã·ã§ã³ã楜ãã¿ã«ããŠããŸãã
ã¡ããŠã¹äŒè°ã§ãããã¹ãšã®ã¬ããŒãã«çãããæåŸ ããŸãã