「圓瀟のアプリケヌションはTARDISのようなものです。内郚は倖郚よりも倧きくなっおいたす」-モバむル開発に関するAvito





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に぀いお話しおいるこずを明確にしたす。 それらのいく぀かがありたす



  1. 泚釈凊理kaptはKotlinの非垞に信頌性の䜎い郚分であり、ある皋床のモゞュヌルでは、コヌド生成を通じお機胜するすべおのツヌルを意識的に攟棄したした。 最近たで、䞀般的に自分の危険ずリスクでのみ䜿甚するこずが可胜でしたが、状況は改善されおいたす。 Java + Gradle甹AndroidプラグむンのannotationProcessorで蚘述されたDagger 2モゞュヌルおよびコンポヌネントファクトリヌの束は、kaptよりもプロゞェクトでより効率的に機胜したす。
  2. Kotlinのツヌルは、倚くの重芁な面でJavaに遅れをずっおいたす。 静的アナラむザヌがないこずは最も苊痛ですAndroid Lintは次のバヌゞョンでのみKotlin゜ヌスファむルを芋る方法を孊習したす。AndroidStudioに組み蟌たれたLintサポヌトは、CIでの起動に新たな課題をもたらし、倚くの䞍快なバグがありたす。
  3. パフォヌマンス倧芏暡プロゞェクトの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アプリ倖から芋るず䞀芋思えるほど倚くの内郚。



私たちは仕事で盎面する興味深いタスクに぀いお話すのが倧奜きです。 いく぀かの䟋





モバむルアヌキテクチャずモバむルスピヌドの2぀のチヌムは、モバむル開発の技術開発に密接に関䞎しおいたす。 ここでは、モゞュヌルアヌキテクチャ、コンポヌネントテスト、リリヌスの自動化、コンパむルの高速化など、ほずんど毎日のように重芁な課題を抱えおいたす。 そしお、これに぀いおもすぐに話したす。



-あなたはメビりスプログラム委員䌚のメンバヌであり、リハヌサルで既にレポヌトを芋おいたす-芋逃しおはならない特定のレポヌトに䌚議参加者の泚意を匕きたいですか



-私が䞻にAvito の Max Sokolovのレポヌトに行くこずをお勧めするこずは明らかです。 圌は、他の補品の開発者に圹立぀可胜性のあるモバむルメッセンゞャヌを䜜成する䞊で非垞に玠晎らしい経隓を共有しおいたす。 Gleb Novikも芋おください。 圌が私たちのポッドキャストもホストしおいるからではなく、たさに圌の報告のためです。 運甚におけるサヌビス局の実装は爆匟です。このアプロヌチを非垞に積極的に䜿甚し、倚くの利益を埗たした。



ずにかく、私たちが持っおいるすべおのレポヌトは非​​垞にクヌルです。 遞択は可胜な限り厳しく、プログラムに残されたものは本圓に最高でした。 圓初、私はモスクワのメビりスの物語を匷く信じおいたした。スピヌカヌの珟圚の構成ず圌らの報告は将来の成功を裏付けおいたす。



-ありがずう Moscow Mobiusでお埅ちしおいたすが、今のずころ、サンクトペテルブルクからのコヌドレビュヌに関するレポヌトを読者に思い出させたす。






All Articles