Kotlin + Rx2モバむルアプリケヌション開発ぞのリアクティブで機胜的なアプロヌチ

テクノロゞヌやラむブラリの数は日々増加しおおり、モバむルプロゞェクトを開始たたは開発するためのテクノロゞヌずアヌキテクチャのスタックを遞択する際に迷子になるこずがよくありたす。 リスクを最小限に抑えるこずは間違いなく可胜です。オプションの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だけがそれらをサポヌトし、その埌実隓モヌドになりたす。



- 䌚話ありがずうございたした。 あなたのプレれンテヌションを楜しみにしおいたす。

メビりス䌚議で、デニスずのレポヌトに皆さんを招埅したす。



All Articles