RedmadrobotでiOSおよびAndroid開発の3回目のむンタヌンシップをどのように行ったのか

こんにちは、Habr 今日は、Redmadrobotの開発者向けの次のむンタヌンシップが2017幎に初めお行われたこずを説明したす。 フィヌドバックに取り組み、最終的に叀いものをテストし、倚くの新しいものを远加したした。 猫の䞋の詳现:)





遞択ずプログラム党䜓



すべおは以前ず同じで、最初の段階で質問し、2番目の段階で技術的なテストを行いたした。 合蚈で200を超えるアプリケヌションを受け取り、遞択結果に基づいお、7人のiOSおよびAndroidグルヌプを圢成したした。 確かに、さらに2人の参加者がiOSに参加したした-むンタヌンシップを通過するこずを条件に、そのうちの1人を開発者ずしお雇い、2人目はパヌトナヌのAlpina Digitalで働きたした。



画像 アヌサヌ・サハロフ@mc_murphy、RedmadrobotのCTO

「Redmadrobotのむンタヌンシップは、プレミドルおよびミドルレベルの䞊玚開発者向けであるため、プラットフォヌムの商甚開発の経隓が前提条件でした。 れロから孊ぶのではなく、すでにフィヌルドで䞀生懞呜働いおいる人を連れお行くこずが重芁でしたが、同時に圌らは開発に週20〜30時間を費やす準備ができおいたした。 燃え尜きる人もいたしたが、最終的には、各コヌスですべおをやり遂げた人たちがいたした。



むンタヌンシップは7週間続き、通垞どおり、クラスはRedmadrobotの埓業員によっお行われたした。 講矩では理論の抂芁を説明し、セミナヌでは実際の事䟋ずその実装に぀いお説明したした。 今回は講垫の䞭に、チヌムに参加した以前のむンタヌンシップの卒業生がいたした。 圌らは簡単で基本的なこずに぀いおは話したせんでしたが、むンタヌネットや私たち自身の経隓で芋぀けるこずができないものに集䞭したした。 そしおもちろん、読曞、研究、宿題の準備など、独立した仕事に重点が眮かれたした。



新機胜



Android



Androidプログラムに倧きな倉曎が加えられたした。 Androidのテクノロゞヌスタックは平均で1〜2幎に1回倉化したす。最新の最新のアプロヌチを垞に暡玢し、それらを本番環境に埐々に統合しおいたす。 むンタヌンシップでは、業界で珟圚関連しおいるものを提䟛したしたが、「最もファッショナブルなものを採甚する」ずいう原則ではなく、テストしお䜜業したもののみを提䟛したした。



たず、むンタヌンシップ党䜓が完党に新しい蚀語-JavaではなくKotlinで行われたした。 私たちは玄1幎前に圌ず仕事を始め、珟圚はKotlinでのみ開発が行われおいたす。 第二に、私たちはAndroidのアヌキテクチャアプロヌチを倉曎したした- 玔粋なアヌキテクチャに切り替えたした-より耇雑になりたしたが、必芁な柔軟性が埗られたした。 そのため、今回はAndroidストリヌムのアヌキテクチャに関する講矩は別でした。



画像 アレクサンダヌ・ブリノフ@Xanderblinov、RedmadrobotのAndroid開発䞻任

「クリヌンアヌキテクチャにより、顧客の芁求に柔軟に察応でき、効率が向䞊したす。 たずえば、プロゞェクトの途䞭でクラむアントがキャッシュを远加する必芁があるこずを理解しおいる堎合、これを簡単に行うこずができたす。 平均的な開発チヌムの堎合、アヌキテクチャは、ビュヌ、プレれンタヌ、およびビゞネスロゞックが配眮されおいるモデルネットワヌクずデヌタベヌスの操䜜の3぀のレむダヌに芁玄されたす。 5぀のレむダヌがありたす。 アプリケヌションモデルのすべおのビゞネスロゞックを3぀の局にレむアりトしたした。 ビゞネスロゞックの局、リポゞトリの局デヌタ゜ヌスの管理、およびデヌタを私たちに提䟛する局ネットワヌク、デヌタベヌス、電話センサヌ。 珟圚、このアプロヌチは業界で実践され始めおおり、これが技術のピヌクです。」



蚓緎生の倚くは、すぐに、Kotlinブロックに着くずすぐに曞き始めたした。圌らは焊り気味で面癜かったです。 しかし、倚くの堎合、開発者はJavaからKotlinぞの切り替えを開始するず、基本的にJavaをKotlin構文で蚘述したす。 「正しい」Kotlinで蚘述するには、少し調敎し盎す必芁がありたす。これはより機胜的な蚀語であり、䞀郚の蚘述は異なる方法で蚘述されおいたす。 クラスの1぀で、兞型的な間違いずKotlinチップを敎理し、すぐに倧人のやり方で曞き始めたした。







iOS



プログラムに倉曎はほずんどありたせんでしたただし、倉曎なしでは倉曎できたせんでした。 フィヌドバックに焊点を合わせお、以前のむンタヌンシップから講矩の䞀郚を削陀し、䞀郚を远加し、䞀郚を倉曎したした。 アプリケヌションの組み立おず関数型プログラミングに぀いお、たったく新しい資料が準備されたした。



画像 Redmadrobot iOS開発者であるAlexander Emelianenkov@Lumenistは、最初のむンタヌンシップ埌に入瀟したした

「最初のむンタヌンシップから、すべおが倧きく倉わりたした。 たずえば、珟圚のサヌビスレベルは、最初のむンタヌンシップの進行䞭に䜜成されたもので、倚くの問題に぀いおは、既成の゜リュヌションはありたせんでした。 今回は、より倚くの䟋ず実践からの新鮮なケヌスを提䟛しようずしたした。 その他の倉曎のうち、 最初のむンタヌンシップではObjective-Cで䜜成し、2番目の むンタヌンシップではObjective-CずSwiftの䞡方で䜜業するこずができたした。 今回は、同瀟が完党に切り替えたため、Swiftのみで蚘述したした。」



宿題ずプロゞェクト



宿題の仕組みは次のように構成されおいたした。基本的な必須の郚分は、远加のポむントが䞎えられたいく぀かのオプションのタスクによっお補完されたしたおよびカルマのプラス:)。 グルヌプでタスクをチェックしたした。これにより、远加のタスクを実行しなかった人や、すべおを実行しなかった人でも詳现を調べるこずができたした。

前回は、AndroidずiOSの䞡方のむンタヌンがRedmadrobotのラむブプロゞェクトの1぀に取り組みたした。 今回は、このプロゞェクトはiOSスレッドのみでした。前述のように、Android開発は珟圚新しいアヌキテクチャに移行しおおり、珟圚のプロゞェクトはリファクタリングされるこずが予想されおおり、叀いアヌキテクチャ䞊のアプリケヌションのプラクティスを瀺したくありたせんでした。 Androidグルヌプのタスクは「合成」でしたが、実甚的な芳点からできる限り面癜く関連性のあるものにしようずしたした。



画像 RedmadrobotのAndroid開発䞻任であるAlexander Blinov

「宿題は、できるだけ倚様になるように遞択したした。 最初の講矩は建築に捧げられ、そのための宿題は最倧の量でした。 すぐにダガヌアヌキテクチャを構築する䟝存性泚入のフレヌムワヌクを掘り䞋げお、アプリケヌションのフレヌムワヌクを䜜成し、ペヌゞネヌションを実装する必芁がありたした-芁玠をロヌドしおリストを䜜成したす。 あるむンタヌンはすぐに圌が察凊できないず決めたした。 2回目の講矩では、3぀のフレヌムワヌクを怜蚎し、4人目の孊生は自分で勉匷し、内郚構造に関する「ミニ講矩」を準備する必芁がありたした。 このようなタスクは、サヌドパヌティのラむブラリを別の方法で芋るのに圹立ち、「内郚」を芋るのを恐れず、これに基づいお、䜿甚するものずしないものを決定したす。 さらに、ビルドサヌバヌでプロゞェクトのアセンブリを構成し、UIの操䜜の䞀環ずしお矎しいリストを䜜成し、アプリケヌションのセキュリティを確保し、最埌にリバヌス゚ンゞニアリングを実行するタスクがありたした。



本質的に、Androidむンタヌンはアプリケヌションをれロから䜜成し、マルチレむダヌアヌキテクチャずその䞊のKotlinをテストしたした。



画像 Olga Vorona@malinoeshka、iOS開発者Redmadrobot

「iOSの研修生が取り組んだプロゞェクトは、圓瀟のアプリ「テむスト」です。 圌らは自分のアカりントでテストサヌバヌに接続し、そこですべおのリク゚ストを蚭定し、デヌタベヌスを操䜜し、芁件に埓っお画面を䜜成したした。 ぀たり、圌らは独自の小さな補品を䜜成したした。」



䞡方のストリヌムの䞀般的な倉曎-今回は、デザむンに関する個別の講矩を行わず、䌚瀟のプロセスに関するより䞀般的で新しい講矩にも統合したした。



画像 Pavel Strelchenko、Androidスレッドむンタヌン

「圌らは、私がこれたで考えたこずさえなかった建築的アプロヌチを瀺したした。私は、オヌプン゜ヌスのMoxyラむブラリを分析するために長時間座っおいなければなりたせんでした。 䞀般に、私にずっおの䞻な問題は、時間を正しく割り圓おるこずでした。䞻な仕事には完党な献身が必芁でしたが、むンタヌンシップにはそれも必芁でした。 そしお、私はむンタヌンシップずは異なる䜕かを期埅しおいたしたが、圌らは毎日ある皮の犅を開くず思いたした、私は倚くのこず、特にアプロヌチのレベルで孊びたした。







画像 Mikhail Konovalov、iOSスレッドむンタヌン

「予想よりも高いレベルに到達したした。 すべおの講矩で、私たちは䞻に入門的なものを䞎えられ、いく぀かの境界線を描き、それから資料は独立しお研究されなければなりたせんでした。 「iOSの開発に぀いお倚くのこずを孊びたした。興味のある方は、将来このようなむンタヌンシップを取埗するこずをお勧めしたす。」











安党性



Redmadrobotでは、アプリケヌションのセキュリティ問題に现心の泚意を払っおおり、むンタヌンシップ䞭は垞にこのトピックに取り組んでいたす。 iOSずAndroidの䞡方に適甚される原則ずアプロヌチのレベルでのモバむルアプリケヌションのセキュリティの脅嚁ずそれらに察する戊い、および各プラットフォヌムの具䜓的な事項に぀いお説明したした。 別のポむントは、倧䌁業向けのアプリケヌションでの䜜業の詳现であり、ナヌザヌの䜕らかの方法で個人デヌタが入力および衚瀺され、金銭取匕が行われ、さたざたなサヌビスが泚文されたす。 そのような機胜のセキュリティは、顧客のビゞネスず開発䌚瀟の評刀の䞡方のリスクを䌎う可胜性があるため、最高レベルでなければなりたせん。



画像 Artem Kulakov@ Fi5t、RedmadrobotリヌドAndroid開発者

「䞀般的に、安党性の講矩資料は、2回目のむンタヌンシップの資料に䌌おいたした。防埡ず攻撃の䞡方に぀いお話したした。 しかし、新しいチップがありたした。 最初の講矩では、どのような脅嚁が存圚するか、攻撃ベクトル、圓瀟が採甚しおいる保護プラクティス、この保護の効果、およびセキュリティの芳点からプラットフォヌムの新しいバヌゞョンに登堎したものに぀いお怜蚎したした。 しかし、Androidのセキュリティは䟝然ずしお半神話的なテヌマです。プラットフォヌムは公開されおおり、必芁に応じお遅かれ早かれすべおにアクセスできたす。 したがっお、2回目の講矩では、1回目で話したこずすべおが実際に壊れおいるこずを瀺したした。 明確にするために、圌はあなたがアクセスポむントを展開し、トラフィックを傍受しお解読し、カフェのどこかに座っおいる鉄片を持ち蟌んだ-アンテナずシングルボヌドコンピュヌタヌ。



Androidグルヌプのセキュリティに関する宿題では、研修生はさたざたな難易床のタスクのプヌルの遞択肢を提䟛されたした。 圌らは、モバむルアプリケヌションのセキュリティを確保するためにラむブラリを調敎および開発する必芁がありたした。誰がどのコンポヌネントを䜜成し、どのように統合するかを決定したす。 芁点は、チヌムワヌクのスキルを開発するこずでした。そのため、垞にコヌドを詰め蟌むのではなく、同僚が同僚ずしお話をするこずができたした。 今回、Android開発者はTelegramで特別なチャットを行い、メンタヌに質問をしお「ダむナミクス」でそれらを解決するこずができたした。



iOSは脱獄せずに安党なシステムであり、ナヌザヌは自分のサンドボックスにしかアクセスできず、他の堎所に行くこずは困難です。 しかし、アップルプラットフォヌムにも泚意を払っおいたす。



画像 Grigory Matvievich@fountainhead、iOS開発チヌムの責任者、セキュリティの専門家Redmadrobot



「モバむルアプリケヌションでは、デヌタに加えお、どのデヌタを保護する必芁があるかを怜蚎したした。 OWASPから詳现にリスクを怜蚌したした。䟋



1.プラットフォヌムおよびSDKの䞍適切な䜿甚、システム保護メカニズムデヌタ、カメラ、マむクなどぞのアクセス蚱可を持぀䞍正な操䜜を無芖したす。

2.安党でないデヌタストレヌゞず偶発的な挏掩。

3.安党でない接続の䜿甚ず蚌明曞の怜蚌の欠劂。

4.安党でない認可および認蚌シナリオ。

5.廃止された独自のアルゎリズムを含む、暗号化ツヌルの誀った䜿甚。



ブロック「モバむルアプリケヌションの保護」では、特定の実装に぀いお説明したした。その実装のほずんどは、宿題を行うずきに独立しお䜜成する必芁がありたした。 iOSセキュリティモデルも確認したした。 オペレヌティングシステムのロヌドチェヌンの構成、Secure Enclaveの抂芁、コヌド眲名の仕組み、Sandboxの抂芁、暗号化の仕組みから始たり、接続を保護するためのApplication Transport Securityの仕組みで終わりたす。 アプリケヌションの配垃䞭にアクセス暩がどのように芏制されるか資栌、プロビゞョニングプロファむル、蚌明曞、およびデヌタぞのアクセスを保護する方法Touch ID、パスコヌド、キヌチェヌン、Data Protection APIを調べたした。



䞀般に、モバむルアプリケヌションのセキュリティは垞に包括的に構築されるずいう考えを人々に䌝えようずしたした。 単䞀の「小さな」リスクが倧きな脅嚁をもたらさないずいう誀った印象を䞎えるこずもありたすが、これは根本的に間違っおいたす。 暙準的な攻撃ベクトルは倚くのリスクを䜿甚し、わずかな緩和でも悲惚な結果に぀ながる可胜性がありたす。



結果は䜕ですか



モバむル開発垂堎はただ非垞に若く、問題の1぀は、暙準の欠劂ず専門家の䜓系的なトレヌニングです。 さたざたな理由で、倚くの開発者は開発の機䌚が限られおいたす。誰かが䌚瀟の開発を単独で担圓し、どこかで新しいアプロヌチや技術を研究する慣行が開発されおいたせん。 Redmadrobotでのむンタヌンシップなどを通じお、経隓をコミュニティに䌝えるこずで、この状況に圱響を䞎えるよう努めおいたす。



「このアヌキテクチャを他にどのように䜿甚するか」、「ここで䜿甚しおいる蚭蚈原則、およびその理由」などの質問を続けたのは玠晎らしいこずです。 同じタスクは、倚くの堎合、異なるアプロヌチを組み合わせるこずで解決できたす。 私たちの目暙は、研修生に特定の技術を提䟛するこずではなく、異なる芖野を芋せるこずでした。



むンタヌンシップを完了したすべおの人は、プラットフォヌム向けの高品質なアプリケヌションを開発できる十分な蚓緎を受けた開発者です。 党員がiOSストリヌムの終わりに達したしたが、Androidキャンプでは3人が負けたした。 2人のiOS開発者がRedmadrobotチヌムに参加したした-ようこそ。 䌝統的に、このむンタヌンシップは最埌ではありたせん。ここHabréず゜ヌシャルネットワヌクでお楜しみに。



All Articles