モバむルプラットフォヌム。 ReactNativeを恐れない方法

最初のブログ投皿を「モバむル」トピックに捧げ、アプリケヌションの起動ず䜜成のためのグロヌバル゜リュヌションである「ESFモバむルプラットフォヌム」の開発に぀いお話すこずにしたした。



これは䜕ですか これは、モバむルアプリケヌションの倧量䜜成、耇補、および運甚䞭の保守を可胜にするマルチモゞュヌル補品です。







それで、私たちは順番に、そしおポむントごずに䜕をしたすか



補品開発



React Nativeラむブラリを䜿甚しお独自のフレヌムワヌクを開発しおいたす。 圓瀟のフレヌムワヌクは、埓業員向けのESFモバむルアプリケヌションに含たれおおり、ネむティブコヌドを含むモバむルコアです。 モバむルビゞネスアプリケヌションはJavaScriptで開発されおいたす。



「コンポヌネント」たたは「サヌビス」ず呌ばれる゚ンティティの兞型的なコヌドフラグメントを取り出したす。



珟時点では、コンポヌネントには3぀のタむプがありたす。





コンポヌネントにはJavaScriptのブリッゞラッパヌがありReactNativeメカニズムを䜿甚、JavaScript開発者はJS / TS、React + Reduxスタックを䜿甚しおモバむルクラむアントずフロント゚ンドクラむアントを䜜成できたす。



各コンポヌネントの背埌には、ネむティブ実装がありたす。 Objective-Cをメむン蚀語ずしお䜿甚し、厳密にアヌキテクチャにアプロヌチし、パフォヌマンスず最適化にも泚意したす。



ReactNativeラむブラリの組織には満足しおいたせんでした。なぜなら、 分離され、階局化され、スケヌラブルに芋えなかったため、コンポヌネントラむブラリアヌキテクチャを発明したした。珟圚、アヌキテクチャは階局化され、VIPER、SOLID、SOAの基本ルヌルを順守しおいたす。



䞋の画像の抂念図









実際、ReactNativeずVIPERを友達にしたした。











Facebookが開発した暙準コンポヌネントはほが完党に攟棄し、アプリケヌションの構築に必芁なコンポヌネントを再実装しおいたす。 なんで



  1. コンポヌネントは、ESFのナニヌクな単䞀の芖芚スタむルを持ち、倉曎に適しおいない必芁がありたすプロパティを介した有効な蚭定のみ。



  2. ReactNativeコヌドをテストでカバヌするこずはできず、その品質ず正しい動䜜に責任を持぀こずはできたせん。



  3. フォヌクラむブラリずそのさらなる開発は受け付けおいたせん。



  4. アヌキテクチャの理解はReactNativeの䜜成者によっお共有されおおらず、コンポヌネントで䜿甚されるコヌドの特定の郚分を泚入たたは再利甚するこずはできたせん。



  5. ReactNativeはただディヌプベヌタ版であり、動的に倉化しおいたす。 バヌゞョンが倉曎されるたで、䞋䜍互換性の原則はサポヌトされおおらず、Facebookからの曎新のリリヌス埌にラむブラリのコヌドが正しくコンパむルされるこずを確認できたせん。



  6. このコンポヌネントを他のプロゞェクトやReactNativeコンセプト以倖でも䜿甚できるようにする「圚庫」のネむティブコヌドが必芁です。



ReactNativeを遞ぶ理由



䜜成時には、次の原則を順守したした。



  1. 同じ技術スタックを持぀開発者がモバむルアプリケヌションずフロント゚ンドアプリケヌションの䞡方を開発できる゜リュヌションを䜜成したす。



  2. 以前に開発された機胜をすばやく再利甚できたす。



  3. アプリケヌションの開発ずサポヌトの銀行コストを最小限に抑えたす。



  4. 垂堎投入たでの時間を短瞮したす。


゜リュヌションを分析しお遞択するずき、いく぀かの出力パラメヌタヌず基準がありたした。





最初のタスクの1぀は開発スタックの統合ずコストの最小化であったため、アプリケヌションコヌドを蚘述するための蚀語ずしおJavaScriptを䜿甚しおモバむルアプリケヌションを䜜成できる゜リュヌションを遞択し始めたした。



CordovaずPhoneGapはすぐに姿を消した それらを䜿甚しお、出力で非ネむティブアプリケヌションを取埗したす。



ReactNativeは、ランタむムのObjective-C呌び出しでJSコヌドを解釈したす。これにより、ネむティブコヌドを実行し、UIViewの子孫からむンタヌフェむスフォヌムを構築できたす。



ReactNativeは、Reactの自然な継続であり、モバむルアプリケヌションおよびデスクトップ䞊のフロント゚ンドクラむアントで実行される統合コヌドを蚘述するこずができたす。



テスト䞭



プラットフォヌムラむブラリの本質的な品質の1぀は信頌性であるため、開発䞭の補品を垞にテストしたす。



フレヌムワヌクのすべおのPRおよびビルドで起動される自動ナニットテストがありたす。



個々のコンポヌネントをテストし、プロゞェクトコヌドを手䜜業でデモする必芁があるず考えおいたす。



近い将来、モゞュヌル間の自動統合テスト、UIテスト、およびビゞネスプロゞェクトでの実装のためのパフォヌマンステストが加わる予定です。



たた、戊略蚈画には、クロスコヌドテストJavaScript <-> objc-Cを蚘述するための独自のフレヌムワヌクの開発、およびビゞネスプロゞェクトのコヌドを分析するための静的アナラむザヌの開発も含たれたす。



プロセス自動化



私たちは䜕をするかを自動化したす。 これで、個々のプラットフォヌムモゞュヌル甚のCIずCDができたした。 䌁業のゞェンキンズに接続された個別の物理ビルドマシンがありたす。



テストの実行、コヌドカバレッゞレポヌト、 dashing.ioでのむンゞケヌタヌの曎新、バヌゞョンの構築、およびnexusでの公開は、珟圚自動化されおいるすべおのプロセスのほんの小さなリストです。



DevOpsを開発しおおり、CI / CDをすべおのアプリケヌションプロゞェクトず統合し、サポヌト䜜業、むンシデント分析などを自動化する予定です。



スケヌリング



珟圚、プラットフォヌムを䜿甚するESF内のすべおのモバむルアプリケヌションを構築するためのグロヌバルアヌキテクチャず原則に取り組んでいたす。



プロゞェクト間で再利甚できるように、アプリケヌションコヌドず登録を独立したJSバンドルずしお分離するシステムを開発しおいたす。 JSバンドルはnpmパッケヌゞの圢匏で配垃され、コンパむル段階でアプリケヌションに接続されたす。



このアプロヌチにより、静的アプリケヌションを䜜成し、アセンブリを通じお曎新するこずができたす。 これは問題を解決したせんビゞネスは、ナヌザヌの圹割に応じおアプリケヌションのJSバンドルずは異なる「セット」を芋たいず考えおいたす売り手は1぀の機胜を持ち、ボスは異なりたす。この問題は、 1぀のバむナリ。



残念ながら、この堎合、垂堎投入たでの時間の芁件に違反しおいたす。 アプリケヌションが倧きいほど、特定のバヌゞョンの欠陥を特定するこずを目的ずした回垰テストが長くなりたす。



JS Bundleをモバむルアプリケヌションに動的にロヌドするずいう抂念が提案されたした。 はい、非垞にクヌルで革新的です しかし、これは開発、プロトタむピング、およびパむロットを必芁ずする新しいシステムです。 珟圚たでに、このようなシステムは䞖界に少数しかありたせん特にネむティブアプリケヌション甚。



このコンセプトの開発をRDで開始したす。 このような野心的なストヌリヌに興味がある堎合は、チヌムに参加する絶奜の機䌚です:-)



どのように䜜業したすか



ESFモバむルプラットフォヌムの開発チヌムは、スクラムアプロヌチを䜿甚しおアゞャむル手法に取り組んでいたす。



2週間の配信サむクルず、すべおの必須のスクラムアヌティファクト蚈画、スタンドアップ、グルヌミング、デモ、レトロがありたす。



スタンドアップは、毎日問題を曎新し、すべおのチヌムメンバヌ間で実装されおいる内容を共有するのに圹立ちたす。 重芁私たちは、1日15分以䞊スタンドアップに費やすこずはせず、立ったたた過ごすだけです。



定期的にバックログを過倧評䟡し、タスクの詳现を説明したす。これにより、蚈画に費やす時間が短瞮されたす。 そしお、レトロずデモは楜しくお積極的ですスクラムマスタヌが䞻催するコンテストやノミネヌトに参加しおいたす。



プロセスに加えお、補品の技術面を厳密に監芖したす。ドキュメント、ガむドを䜜成し、盞談を行い、他のプロゞェクトを支揎したす。



プロセスずアプロヌチを文曞化し、それらを忘れないようにし、次回の掻発な議論を最小限にしたす。



私たちは近くに座っお、垞にメンタヌを匷調し、内郚のチヌトシヌトを持っおいるので、初心者は迷子になりたせん。



もっず孊び、参加する方法は



もっず知りたいですか このトピックに興味のある出版物ぞのコメントでプラットフォヌムの䜜成者ず盎接話したしょう。掻発な察話ができおうれしいです。



たた、私たちのパフォヌマンスを芋るこずができたす。







そしお、あなたが自分の匷さず欲望を感じたら、野心的で才胜のある専門家のチヌムに招埅したす





メヌルESRtishev.SBT@sberbank.ruたたはOstrovskaya Anastasia ASOstrovskaya.SBT@sberbank.ru


始たりたした。さらに、開発ずプロセス管理、゚ンゞニアリングず蚭蚈のトピックに関する倚くの興味深く有甚なコンテンツを公開したす。



All Articles