Avitoãã¢ãã€ã«éçºã«æ³šæãæã£ãŠããããšã䞻匵ããããšã¯ã§ããŸããã圌ãã¯ã Kotlinãæµè¡ãããã£ãšåã«Kotlinã䜿çšãå§ãããã®äŒç€Ÿã®ã¹ããŒã«ãŒã¯Mobiusã«ã³ãã¡ã¬ã³ã¹ã§å®æçã«è¬æŒããŠããŸãã ãããŠãã¢ã¹ã¯ã¯ã¡ããŠã¹ã®åå€ã2人ã®Avitoã®åŸæ¥å¡ã«å°ããŸãããDmitrydivor VoroninãKotlinã®äœ¿çšçµéšã«ã€ããŠæ£ç¢ºã«èªãã Yegor YourDestiny Tolstoyãã¢ãã€ã«éçºå šè¬ã«ã€ããŠèªããŸããã
ããããªãŒã»ãããã³
-以åãAvitoã®çµéšã«åºã¥ããŠãKotlinãšRxã«ã€ããŠã®ã¬ããŒãããããŸããããäŒç€Ÿã§å ·äœçã«äœãããŠããŸããïŒ
-çŸæç¹ã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ãªãªãŒã¹ãµã€ã¯ã«ãççž®ããããã«çµç¹ãããç¹å¥ãªããŒã ã®äžéšãšããŠãã»ã«ããã¹ãçšã®ã€ã³ãã©ã¹ãã©ã¯ãã£ãéçºããŠããŸãã
-çŸåšãAndroidã®äžçã§ã¯èª°ããKotlinãæããŠããŸãããAvitoã¯ããããã£ãšæ©ã䜿ãå§ããŸããã
-Avitoã®Kotlinã®æåã®ã¯ã©ã¹ã¯ã2014幎12æã®å°åã«ç»å ŽããŸããã ãã®åŸã2015幎ã«ãKotlinã§ãã¹ãŠã®æ°ããAndroidã¢ããªã±ãŒã·ã§ã³ã³ãŒããèšè¿°ããããšã«ããŸããã ããŒã¿ç以éãKotlinã䜿çšããŠããããšãããããŸããã
-ããšããšåœŒã«äœ¿çšãä¿ããã®ã¯äœã§ããïŒ Avitoã¯ãã³ããªã³æ奜家ã®ãžã§ã€ã¯ãŠã©ãŒãã³ãåããŠããSquareã®ã¢ãã€ã«éçºãç©æ¥µçã«äœ¿çšããŠããŸãã
-2014幎ãæåŸãŸã§Java 6ãç»å Žããããã§ããã Googleã¯ãã®æç¹ã§ãããªãèšç»ãé瀺ããŠããŸããã æ¢åã®ãããžã§ã¯ãã®Kotlinã§æ°åã®ã¯ã©ã¹ãäœæããåŸãJava + Guavaãã³ãã«ãèŠããšãããã«èœèãåŒãèµ·ããããŸããã ããèªã¿ãããã³ãŒãã«å ããŠããã匷ãåä»ããããã³ãŒãã«å ããŠãæ¢åã®ã³ãŒããšã®çžäºéçš-åæ¹ã«ãšã£ãŠå¥œéœåãªç¶æ³ã®ããã«èŠããŸããã
ãžã§ã€ã¯ãšä»ã®äŒéè ã¯ç¢ºãã«ããã®æ±ºå®ãåŸæŒããã倧ããªåœ±é¿ãäžããŸããã 圌ã®è±¡åŸŽçãªæçš¿ãèªã¿çŽãããšã¯éåžžã«èå³æ·±ãããšã§ããã
-èšèªã䜿çšããŠããéã«Kotlinã®éçºã«ã©ã®çšåºŠã®å€åããããŸãããïŒ ã©ãã»ã©äŸ¿å©ã«ãªããå®æçã«ãååŠç¿ãããå¿ èŠããããŸãããïŒ
-ã¯ããå€ããå€æŽãããŸãããKotlinã§äœæ¥ããã®ãèããå¿«é©ã«ãªããŸããã Gradleãããžã§ã¯ãã®ã€ã³ã¯ãªã¡ã³ã¿ã«ã³ã³ãã€ã«ããªããã³ãŒãã®æžåŒèšå®ãããã€ãã®ãã§ãã¯ããã¯ã¹ããè¡ãããæ€æ»ãç¡å¹ã«ããªããã°ãªããªãã£ããããIDEã®é床ãäœäžããŸããã ä»ãããã¯ãã¹ãŠéå»ã§ãã
èšèªã®æ°ããæ©èœã衚瀺ãããããã«äœ¿çšããããšããŠããŸãããã³ã«ãŒãã³ãäžå€ã³ã¬ã¯ã·ã§ã³ããããžã§ã¯ãã«ãŸã å«ããŠããŸããããããã¯ããã«æ¥ããšæããŸãã ãã®ãããªå€æŽã¯ããããžã§ã¯ãå šäœã«äžåºŠã«å±éãããã®ã§ã¯ãªããåŸã ã«ã³ãŒãããŒã¹ã«æµžéããŸãã 誰ããå®è¡å¯èœæ§ãšèœãšãç©Žã«æ £ããŠè°è«ããæéããããŸãã
äž»ã«Javaã§ãœãŒã¹ãéããšãã«ååŠç¿ããå¿ èŠããããŸããè¡æ«ã«ã»ãã³ãã³ãå ¥ããã®ãå¿ãããã³ã«;ïŒ
-Kotlinã®ãèœãšãç©Žãã匷調ããŠããããŸããããããŸã§ã®ãšããããã®èšèªã®äœ¿çšã®ã¿ãèããŠãã人ã®æ³šæãåèµ·ããããšæããŸããã
-Androidã«ã€ããŠè©±ããŠããããšãæ確ã«ããŸãã ãããã®ããã€ãããããŸãïŒ
- 泚éåŠçïŒkaptïŒã¯Kotlinã®éåžžã«ä¿¡é Œæ§ã®äœãéšåã§ãããããçšåºŠã®ã¢ãžã¥ãŒã«ã§ã¯ãã³ãŒãçæãéããŠæ©èœãããã¹ãŠã®ããŒã«ãæèçã«æŸæ£ããŸããã æè¿ãŸã§ãäžè¬çã«èªåã®å±éºãšãªã¹ã¯ã§ã®ã¿äœ¿çšããããšãå¯èœã§ããããç¶æ³ã¯æ¹åãããŠããŸãã Java + GradleçšAndroidãã©ã°ã€ã³ã®annotationProcessorã§èšè¿°ãããDagger 2ã¢ãžã¥ãŒã«ããã³ã³ã³ããŒãã³ããã¡ã¯ããªãŒã®æã¯ãkaptããããããžã§ã¯ãã§ããå¹ççã«æ©èœããŸãã
- Kotlinã®ããŒã«ã¯ãå€ãã®éèŠãªé¢ã§Javaã«é ãããšã£ãŠããŸãã éçã¢ãã©ã€ã¶ãŒããªãããšã¯æãèŠçã§ãïŒAndroid Lintã¯æ¬¡ã®ããŒãžã§ã³ã§ã®ã¿KotlinãœãŒã¹ãã¡ã€ã«ãèŠãæ¹æ³ãåŠç¿ããŸãïŒãAndroidStudioã«çµã¿èŸŒãŸããLintãµããŒãã¯ãCIã§ã®èµ·åã«æ°ããªèª²é¡ããããããå€ãã®äžå¿«ãªãã°ããããŸãã
- ããã©ãŒãã³ã¹ïŒå€§èŠæš¡ãããžã§ã¯ãã®Kotlinãã©ã°ã€ã³ã¯è²§åŒ±ã§ãã ãã®ãããã¯ã«é¢ããåé¡ã«ããããã¹ãŠã®æ°ãããªãªãŒã¹ãéããããŸãããJavaã¯ãŸã ãŸã å ã§ãã
ã¢ãŒãµãŒã»ãã¬ã¢ãã¯ããããããã³ä»ã®æ¬ ç¹ã®åªããæŠèŠãæã£ãŠããŸã ã
-å ¬åŒã®GoogleãµããŒãã¯Kotlinã®äœ¿çšã«ã©ã®ããã«åœ±é¿ããŸããããGoogleI / Oã®åã«ã³ãã¥ããã£ã§äœãèŠãŸãããã
-2016幎ã«Dmitry Zhemerovã®åå ãåŸãŠAndroidéçºè ã®äŒè°ãéå¬ããŸããã人ã ããããžã§ã¯ãã§æ°ããèšèªãè©ŠããŠã¿ããã£ãã®ã¯æããã§ããããäžç¢ºå®æ§ãå€ããæ¢ããŸããã Googleã®ãµããŒãã¯å€ãã®äººã«éãéãããšæããŸãã
äžå®ã®ä¿¡é Œã®åºç€ãçŸããŸããã ãšã«ããJetBrainsã«çãããªããã°ãAndroid StudioãšåŒã°ããIntellij IDEAããã®åå²ç¹ã¯ãŸããŸãèã«å¯ã£ãŠããŸããïŒããã§ã¯å°ãã€ã³ã¹ã¿ã³ãããžãã¯ãããã§ã¯ã¯ã©ã¹ãã¹ã§å°ãããŒãã³ãŒã...ïŒããã®ããã«ã ããã§æ¯ãåãããšãã§ããŸãã
-KotlinããµããŒãããAndroid Studio 3.0ã¯ããã®ãŸãŸããµããŒããããŠããããã®ä»ã®æè¡é©æ°ã¯çŸåšãªãªãŒã¹ãããŠããŸã-ãããããã®ãªãªãŒã¹ã¯ããªãã®ããã«äœããå€æŽããŸããïŒ
ãæ£çŽãªãšããäœãæ°ã¥ããªãã£ããã ããã€ãã®ããŒãžã§ã³ãªãªãŒã¹ã§å»æ¢ãããKotlin IDEãã©ã°ã€ã³ãäºåå®çŸ©ãªã¹ãã«è¿œå ããããã«èŠããŸãã
Kotlinãã¡ã€ã«ã®æåã®Android LintãµããŒãã«ãããããŒãžã§ã³3.1ã§å€§ããªå€æŽãè¡ãããŸãã
-æè¿ã2018幎æ«ã«Androidã¢ããªã±ãŒã·ã§ã³ãJavaãããKotlinã§ããé »ç¹ã«æžã蟌ã¿ãéå§ãããšããäºæž¬ããããŸããããã®ãããªäºæž¬ãã©ã®çšåºŠä¿¡ããŠããŸããããŸããå°æ¥Kotlinã«äœãæåŸ ããŸããïŒ
-äºæž¬ã¯éåžžã«çŸå®çã§ãé害ã¯ãããŸããã 人æ°ã®ããã©ã€ãã©ãªã«ã¯Kotlinã®ãµããŒããè¿œå ãããŸãïŒAndroidãµããŒãã©ã€ãã©ãªã®nullabilityã¢ãããŒã·ã§ã³ã¯çŽ æŽãããäŸã§ãïŒã
éçºè ãã³ã³ãã€ã©ã®ããã©ãŒãã³ã¹ãšéçºããŒã«ã«çŠç¹ãåãããKotlinããŒãžã§ã³1.2ããã³1.3ã§ã¯ãèšèªã«ã»ãšãã©å€æŽããªãããšã¯æ¢ã«ç¥ãããŠããŸãã ç§ã«ãšã£ãŠãããã¯è¯ãå åã§ããåé¡ã®ããé åãç«ã¡äžãã£ãŠããŸãã
ç§ã¯Kotlin / Nativeã«èå³ãæã£ãŠããŸãããç§ã®çŸå®ã§ã¯ããã©ãããã©ãŒã éã§ã³ãŒããææ¢ãããæåã®äººã«ãªããšã¯æããŸããã ç§ãã¡ã¯ä»²éã®ãããã¹ã¿ãŒããã®ãµã¯ã»ã¹ã¹ããŒãªãŒã楜ãã¿ã«ããŠããŸãïŒ
ãšãŽãŒã«ã»ãã«ã¹ãã€
-Avitoã§ã¯äœãããŠããŸããïŒ
-éå»1幎éãç§ã¯Avitoã®ãã¹ãŠã®ã¢ãã€ã«éçºãæ åœããŸãã-ãšã³ãžãã¢ãªã³ã°æåã®æ§ç¯ãããŒã éçºæŠç¥ã®éçºãšå®è£ ãã¢ããªã±ãŒã·ã§ã³ã®å®å®æ§ãšãªãªãŒã¹ã®ç¶ç¶æ§ã®è²¬ä»»ã ããæç¹ã§ãé·ã説æã«å ¥ããªãããã«ã1ã€ã®åçŽãªæ¯phorã䜿ãå§ããŸããã ã¢ãã€ã«éçºãæåæ©ã§ãããšæ³åããå Žåãç§ã®åœ¹å²ã¯ããããé©åã«æ©èœããæ éãªãã§æåã§ããã¿ã³ã¯å ã®çæãçµäºããªãããšãä¿èšŒããããšã§ããã
æè¿ãç¶æ³ãå€ãããŸããã çŸåšãç§ã®è²¬ä»»ç¯å²ã¯ãAvitoãåäœãããã¹ãŠã®ãã©ãããã©ãŒã ïŒWebãã¢ãã€ã«WebãiOSãAndroidïŒã®æè¡éçºãæ åœããããŒã ã§ãã ãããã®ãã©ãããã©ãŒã ã®ãªãªãŒã¹ãµã€ã¯ã«ãã¢ãŒããã¯ãã£ã®éçºãéçºè åãã®äŸ¿å©ãªããŒã«ã®äœæããã®ä»å€ãã®ãããžã§ã¯ããæ åœããŠããŸãã æåæ©ã§æ¯phorã«æ»ããšããã®ãµãŒãã¹ã«å ããŠãç§ã¯ä»ããã®é転æãšããŠãè¡åããŠããŸãã
-ããã¹ããžã®ãªã³ã¯ã䜿çšããŠã Android Good ReadsãšiOS Good Readsã® 2ã€ã®é»å ±ãã£ãã«ãåæã«å®è¡ããŸãã åæ·±å»ãªè³ªåã«å¶çŽã¯ãããŸããã2ã€ã®äžçãåæã«ç©æ¥µçã«ç£èŠããããã«ãããªãã®é ãè£ããªãã®ã§ããïŒ ã©ã®ããã«ãããšäžç·ã«äœãã§ããŸããïŒ
-ã¯ããããã»ã©é£ãããããŸãããç§ã¯ãã¹ãŠã®èå³æ·±ããªã³ã¯ãPocketã«ä¿åããå®æçã«èªãã§ããŸãã ãŸããé·ãéãæãèå³æ·±ããã£ã³ãã«ã«å ¥ããŠãã ããã ãã¡ãããç§ã¯å€ãã®ããšãæãããèŠãŠãããããèŠããã®ã賌èªè ã«ãšã£ãŠæœåšçã«æçšã§ãããšæããããªããç§ããããå ¬éããŸãã
-Avitoå šäœã®ã¢ãã€ã«éçºã§ã¯ã人ãç°ãªãäžçãåæã«èŠãŠããå Žåãäžè¬çã§ããããããšãããäžè¬çãªéšéãåªå ãããŸããïŒ
-ãã¹ãŠãç§ãã¡ãšäžç·ã«ã¯ãŒã«ã§ãã å€ãã®éçºè ã¯ããã©ãããã©ãŒã ãšèšèªã ãã«çŠç¹ãåãããŠããããåžæãŸãã¯å¿ èŠã«å¿ããŠååãæ¯æŽããŸãã ã¢ãã€ã«éçºè ãèªåã®ã¿ã¹ã¯ã®ããã¯ãšã³ããèšè¿°ãããšããã®éãèµ·ãããŸãã
Tååã¹ãã«ã®éèŠæ§ã匷ãä¿¡ããŠãããæ¬åœã«ã¯ãŒã«ãªéçºè ã«ãšã£ãŠã¯ãèšèªãšãã¬ãŒã ã¯ãŒã¯ãå€æŽããããšã¯åé¡ã§ã¯ãããŸããã
-é»å ±ãã£ã³ãã«ã«å ããŠãããªãã¯æœæ°ŽèŠããããã£ã¹ãã«åå ããMobiusã®ã¹ããŒã«ãŒãšããŠæŽ»åããçŸåšã¯ããã°ã©ã å§å¡äŒã«åå ããŠããŸããïŒããã¯ãã¹ãŠãèªåã®ããã ããã§ãããããã¯ããªãã®ä»äºã«æçãªå¹æããããšæããŸããïŒ
-åºæ¬çã«èªåã®ããã«-ç§ã¯ãããè¡ãããšã«æ¬åœã«èå³ããããŸããããã¯è©±é¡ããããã趣å³ã§ãã ãã以å€ã¯ãã¹ãŠãã¯ãŒã«ãªè¿œå ããŒãã¹ãä»ããŠããŸãã
圌ãã®å°éèœåéçºã®ããã®ããããã¹ãŠã®éèŠæ§ã¯åŠå®ã§ããŸããã ããããã£ã¹ããžã®åå ã¯ç¹ã«éç«ã£ãŠããŸãããããã§ãæ¯é±äœããã®åœ¢ã§ç§ããããã£ããã人ãæ¯é±ç¥ãã圌ããç§ã®ç¥èãã¹ãã«ãåŠãã§ããŸãã
-ã³ãŒãã¬ãã¥ãŒã«ã€ããŠã話ãããŸãããããã®ããã»ã¹ã¯Avitoã§å ·äœçã«ã©ã®ããã«èŠããŸããïŒ
-Avitoã®äœæ¥ã¯æ°åã®ããŒã ã§äžŠè¡ããŠè¡ãããåããŒã ã¯è£œåã®æ©èœã®ç¹å®ã®éšåãŸãã¯äžéšã®ãŠãŒã¶ãŒããŒãºã®å 足ãæ åœããŸãã åããŒã ã¯å¯èœãªéãç¬ç«ããŠããããã®æ©èœã®å®è£ ã®å質ãšã¿ã€ãã³ã°ã«ã€ããŠå®å šã«è²¬ä»»ãè² ããŸãã ã³ãŒãã¬ãã¥ãŒã®æ®µéã§ä»ã®äººãžã®äŸåãæé€ââããããã«ã1ã€ã®ããŒã ã®ãã¬ãŒã ã¯ãŒã¯å ã§ãã®ããã»ã¹ãçµäºããããšããŸãã
ããã¯ã³ãŒãã¬ãã¥ãŒã®1ã€ã®åŽé¢ã§ãã ãã1ã€ã¯ãããã§ã1ã€ã®è£œåãèŠãŠãããšããããšã§ãããã®ãããããããŒã ã®äººãå¥ã®ããŒã ãæ åœããã³ãŒããå€æŽããªããã°ãªããªãç¶æ³ããã°ãã°çºçããŸãã æ··ä¹±ãé²ãããã«ãã³ãŒãææè ãšç¹å®ã®ãã¡ã€ã«ãã¢ãžã¥ãŒã«ããŸãã¯ãã©ã«ããŒã®å€æŽããµãã¹ã¯ã©ã€ãããæ©èœãèªåçã«æ€åºããã·ã¹ãã ãç©æ¥µçã«éçºããŠããŸãã ããã«ãããçºçããå€æŽã«ã€ããŠç¥ãå¿ èŠããã人ã¯èŠéãããšã¯ãããŸããã
-å€éšããã¯ãAvitoã«ã¯åçŽãªã¢ããªã±ãŒã·ã§ã³ïŒå€§ãŸãã«èšããšããã«ã¿ãã°ãšãã£ã¹ãã¬ã€ãçšæãããïŒãå¿ èŠãªããã«æãããããããŸããããæãäžããŠã¿ããšãããã«ãã¥ã¢ã³ã¹ãèŠã€ãããŸãã èªæã§ãªãã¿ã¹ã¯ã®äŸããã£ãšæããŠããã ããŸããïŒ
-ãã·ã³ãã«ãªã¢ããªã±ãŒã·ã§ã³ãã«é¢ãããããã®ã¹ããŒãªãŒã倧奜ãã§ãã Uberã«ã¯éåžž1ã€ã®ç»é¢ãããã100人以äžã®ã¢ãã€ã«éçºè ãäœæ¥ããŠããŸãã TARDISã®ãããªAvitoã¢ããªïŒå€ããèŠããšäžèŠæããã»ã©å€ãã®å éšã
ç§ãã¡ã¯ä»äºã§çŽé¢ããèå³æ·±ãã¿ã¹ã¯ã«ã€ããŠè©±ãã®ã倧奜ãã§ãã ããã€ãã®äŸïŒ
- Lesha Shpirkoã ããã¯ãšã³ãé§åUI
- Timur Yusipovã ãã£ãããªã³ã¯ã䜿çš
- Artem RazinovãšInessa Voroninaã ã¢ãã€ã«ãã¶ã€ã³ã·ã¹ãã
ã¢ãã€ã«ã¢ãŒããã¯ãã£ãšã¢ãã€ã«ã¹ããŒãã®2ã€ã®ããŒã ã¯ãã¢ãã€ã«éçºã®æè¡éçºã«å¯æ¥ã«é¢äžããŠããŸãã ããã§ã¯ãã¢ãžã¥ãŒã«ã¢ãŒããã¯ãã£ãã³ã³ããŒãã³ããã¹ãããªãªãŒã¹ã®èªååãã³ã³ãã€ã«ã®é«éåãªã©ãã»ãšãã©æ¯æ¥ã®ããã«éèŠãªèª²é¡ãæ±ããŠããŸãã ãããŠãããã«ã€ããŠãããã«è©±ããŸãã
-ããªãã¯ã¡ããŠã¹ããã°ã©ã å§å¡äŒã®ã¡ã³ããŒã§ããããªããŒãµã«ã§æ¢ã«ã¬ããŒããèŠãŠããŸã-èŠéããŠã¯ãªããªãç¹å®ã®ã¬ããŒãã«äŒè°åå è ã®æ³šæãåŒãããã§ããïŒ
-ç§ãäž»ã«Avito ã® Max Sokolovã®ã¬ããŒãã«è¡ãããšããå§ãããããšã¯æããã§ãã 圌ã¯ãä»ã®è£œåã®éçºè ã«åœ¹ç«ã€å¯èœæ§ã®ããã¢ãã€ã«ã¡ãã»ã³ãžã£ãŒãäœæããäžã§éåžžã«çŽ æŽãããçµéšãå ±æããŠããŸãã Gleb NovikãèŠãŠãã ããã 圌ãç§ãã¡ã®ããããã£ã¹ãããã¹ãããŠããããã§ã¯ãªãããŸãã«åœŒã®å ±åã®ããã§ãã éçšã«ããããµãŒãã¹å±€ã®å®è£ ã¯ç匟ã§ãããã®ã¢ãããŒããéåžžã«ç©æ¥µçã«äœ¿çšããå€ãã®å©çãåŸãŸããã
ãšã«ãããç§ãã¡ãæã£ãŠãããã¹ãŠã®ã¬ããŒãã¯éââåžžã«ã¯ãŒã«ã§ãã éžæã¯å¯èœãªéãå³ãããããã°ã©ã ã«æ®ããããã®ã¯æ¬åœã«æé«ã§ããã åœåãç§ã¯ã¢ã¹ã¯ã¯ã®ã¡ããŠã¹ã®ç©èªã匷ãä¿¡ããŠããŸãããã¹ããŒã«ãŒã®çŸåšã®æ§æãšåœŒãã®å ±åã¯å°æ¥ã®æåãè£ä»ããŠããŸãã
-ããããšãïŒ Moscow Mobiusã§ãåŸ ã¡ããŠããŸãããä»ã®ãšããããµã³ã¯ãããã«ãã«ã¯ããã®ã³ãŒãã¬ãã¥ãŒã«é¢ããã¬ããŒããèªè ã«æãåºãããŸãã