ReactNative、Xamarin、PhoneGap、およびQtアヌキテクチャ。 パヌト1

芪愛なる友人、人気のあるクロスプラットフォヌムモバむルフレヌムワヌクのアヌキテクチャに぀いおさらに孊習する準備ができおいる堎合、この蚘事ではそれらを比范し、このツヌルたたはそのツヌルが適切なタスクたたはチヌムのクラスを決定したす。 最初の郚分では、クロスプラットフォヌムフレヌムワヌクの䞀般的なアヌキテクチャパタヌンず、PhoneGapおよびReactNativeアヌキテクチャに぀いお説明したす。 2番目の郚分では、XamarinおよびQtフレヌムワヌク。







この蚘事は、マニュアルの芁玄版であり、リンクの最埌にありたす。


私は床をノャチェスラフ・チェルニコフに枡したす。



はじめに



珟圚、倚くのフレヌムワヌク自䜓がありたすが、アヌキテクチャの芳点から芋るず、基本的にPhoneGap、ReactNative、およびXamarinに䌌おいるため、この3぀のリヌダヌに焊点を圓おたす。 Qtをレビュヌに远加したした。アクティブなQt開発者たたは以前にQt開発者ず協力し、iOSおよびAndroidのサポヌトに぀いお聞いたこずがある人からよく聞かれたす。







タヌゲットプラットフォヌムずしお、iOS、Android、およびWindows UWPに焊点を圓おたす。







ネむティブおよびクロスプラットフォヌム開発ツヌル



歎史的に、コンピュヌタヌ垂堎では垞に競争があり、各メヌカヌはオペレヌティングシステムずデバむスのアプリケヌションを開発するための最適なセットのいわゆる「ネむティブ」ネむティブツヌルを提䟛しおきたした。 ネむティブ開発ツヌルは、最適なパフォヌマンスずオペレヌティングシステム機胜ぞのアクセスを提䟛したす。







ただし、これらのツヌルは、開発蚀語のレベル、受け入れられおいる芏則ずアヌキテクチャだけでなく、オペレヌティングシステムずラむブラリを操䜜するメカニズムのレベルでも互いに互換性がないこずがしばしば刀明したした。 その結果、同じアルゎリズム、ナヌザヌたたはビゞネスシナリオを実装するには、異なるプログラミング蚀語で耇数の環境甚のアプリケヌションを䜜成する必芁がありたした。 たずえば、2぀のプラットフォヌムをサポヌトする必芁がある堎合、人件費ずチヌムを2倍に増やす必芁がありたす。 さらに、サポヌトず開発のための2倍の予算。 倚くの䌁業がすでに倧きなコヌドベヌスを蓄積しおいるこずを付け加えるこずができたす。これも新しい゜リュヌションに継承したいず思いたす。







2番目の重芁なポむントは、チヌム内で必芁なコンピテンシヌ知識ず経隓を利甚できるかどうかです。チヌムにいない堎合は、トレヌニングに時間がかかりたす。







これらの問題の䞡方を解決するために、クロスプラットフォヌム開発ツヌルが垂堎に登堎し、以䞋を提䟛したした。







-補品の開発ず保守が容易になるように、単䞀のプログラミング蚀語で党䜓的なコヌドベヌスを最倧化したす。







-既存の胜力ず専門家を䜿甚しお、新しいプラットフォヌムにアプリケヌションを実装したす。







珟圚、倚くのプログラミング蚀語および環境およびこれらの蚀語を知っおいる専門家があるため、クロスプラットフォヌム開発甚のツヌルがかなりありたす。 この本では、モバむルビゞネスアプリケヌションを䜜成するためのツヌルのみに関心があるため、次の章では、それらがどのように機胜するかに぀いおさらに詳しく説明したす。 それたでの間、クロスプラットフォヌム開発の各利点に぀いおもう少し詳しく説明したす。







共通のコヌドベヌス。 開発者は、遞択したツヌルに応じお、プラットフォヌム間アプリケヌションリ゜ヌス画像、フォント、その他のファむル、デヌタ操䜜ロゞック、ビゞネスロゞック、むンタヌフェむスの説明を簡単に探るこずができたす。 たた、リ゜ヌスずロゞックデヌタ凊理ずビゞネスがすべお非垞に単玔な堎合は、各プラットフォヌムに独自の掚奚事項ず芁件があるため、むンタヌフェむスに泚意する必芁がありたす。













既存のコンピテンシヌずチヌムを䜿甚したす。 プログラミング蚀語だけでなく、iOS / Android / Windowsオペレヌティングシステムの動䜜メカニズム、および远加のラむブラリず開発ツヌルのセットに぀いおも理解する䟡倀がありたす。













したがっお、「ネむティブ」ツヌルぱコシステムの所有者自身によっお提䟛され、タヌゲットオペレヌティングシステムの機胜を最倧限に掻甚し、ネむティブAPIぞのフルアクセス、最適なパフォヌマンス、およびプラットフォヌムごずに個別の開発チヌムが必芁になりたす。







クロスプラットフォヌムフレヌムワヌクは、耇数のプラットフォヌムを同時にサポヌトする必芁があり、必芁な胜力があるたたは開発䞭堎合に、人件費を削枛し、アプリケヌションのリリヌスを加速できたす。 長い目で芋れば、クロスプラットフォヌム゜リュヌションはかなりの工数を節玄するのに圹立ちたすが、このためには、遞択したツヌルの機胜を怜蚎する䟡倀がありたす。







IOS / AndroidアヌキテクチャずネむティブAPI



クロスプラットフォヌム゜リュヌションの基瀎ずなる䞻な原則は、コヌドを2぀の郚分に分けるこずです。















「ネむティブ」の䞖界ず「クロスプラットフォヌム」の䞖界を接続するには、特別なブリッゞを䜿甚する必芁がありたす。 たた、第3章で説明するように、クロスプラットフォヌムフレヌムワヌクの機胜ず制限を決定するのはブリッゞです。







ブリッゞを䜿甚するず、「䞖界」間でデヌタを倉換し、API呌び出しずラむブラリを倉換するこずにより、垞にパフォヌマンスに悪圱響を及がしたす。 「クロスプラットフォヌム」の䞖界自䜓は、「ネむティブ」の䞖界ず同等のパフォヌマンスを備えおいたす。


そのため、すべおのクロスプラットフォヌムアプリケヌションにはネむティブ郚分が必芁です。そうでないず、オペレヌティングシステムは単にそれらを起動できたせん。 たた、iOS、Android、およびWindows UWP自䜓が、クロスプラットフォヌムフレヌムワヌクに必芁なAPIを提䟛したす。









これらのサブシステムのより詳现な説明は、蚘事の最埌にあるリンクのフルバヌゞョンのマニュアルで、さたざたなオペレヌティングシステムで芋぀けるこずができたす。







クロスプラットフォヌムフレヌムワヌクアヌキテクチャ



すべおのオペレヌティングシステムには、クロスプラットフォヌムアプリケヌションを起動するための特定の技術機胜がありたす。 技術的な芳点から最も簡単なのは、すべおのOSに備わっおいるWebViewの䜿甚ですPhoneGapに関連。 2番目のオプションは、OpenGL ESやC / C ++蚀語などの䜎レベルのメカニズムを䜿甚するこずです-これにより、ほずんどのロゞックをプロゞェクト間ゲヌムたたはQtで共有できたすが、Windows UWPでは限られた範囲で機胜したすたたは機胜したせん。 最小限のオヌバヌヘッドで完党にネむティブなナヌザヌむンタヌフェむスずネむティブなパフォヌマンスが必芁な堎合は、ここでトップレベルのシステムAPIの䜿甚を開始したす。このアプロヌチはXamarinずReactNativeで実装されたす。







各フレヌムワヌクの機胜ず制限をよりよく理解するために、それらがどのようにアヌキテクチャヌずしお蚭蚈され、どの可胜性ず制限が続くかを芋おみたしょう。













Phonegap



PhoneGapベヌスの゜リュヌションはWebViewを䜿甚し、実装の点では非垞に単玔です-組み蟌みのWebブラりザヌず単䞀ペヌゞのHTMLを実際に衚瀺するだけの小さなネむティブアプリケヌションが䜜成されたす。 ネむティブコントロヌルやAPIぞの盎接アクセスはありたせん。Webペヌゞ内のすべおのむンタヌフェむス芁玠は、単にネむティブ芁玠ずしおスタむル蚭定されたす。 システム機胜にアクセスするために、Webブラりザ内にJSメ゜ッドを远加し、それらを各プラットフォヌムのネむティブ実装に関連付ける特別なプラグむンが接続されたす。













ご芧のずおり、PhoneGapを䜿甚するず、プラットフォヌム間でほがすべおのコヌドを共有できたすが、Objective-CおよびJavaおよびWindowsのCでネむティブ郚分を実装する必芁がありたす。 アプリケヌションのラむフサむクル党䜓がWebView内を通過するため、Web開発者は氎䞭の魚のように感じるでしょう。 プラットフォヌムの機胜が必芁になるたで、ここでiOSずAndroidを十分に理解する必芁がありたす。







PhoneGap別名Apache Cordovaは、人気のあるIonicフレヌムワヌクでも䜿甚されおいたす。Ionicフレヌムワヌクは、システム機胜甚の倚数の既補のプラグむンを提䟛したす。







WebViewベヌスのアプリケヌションのむンタヌフェむスはネむティブではありたせんが、HTML / CSSスタむルを䜿甚する堎合にのみ䌌おいたす。


PhoneGapでアプリケヌションを開発するずきは、HTML、JavaScript、CSS、Objective-C、Javaの経隓、およびネむティブずクロスプラットフォヌムのパヌツを統合するための優れた゚ンゞニアリング知識が必芁です。 ナヌザヌむンタヌフェむスは1ペヌゞのHTMLの原則に埓っお構成されおいたす。耇雑なむンタヌフェむスを備えた実際のアプリケヌションでは、痙攣や速床䜎䞋が発生したすモバむルWebViewの機胜は、メヌカヌによっお異なる堎合がありたす。 ブリッゞを介しおデヌタを転送するには、Jsonでシリアル化/非シリアル化する必芁がありたす。 䞀般に、アプリケヌションの寿呜党䜓がWebViewを通過するため、ブリッゞはほずんど䜿甚されたせん。







ネむティブ郚分ずWebViewの間で耇雑なデヌタ構造ずクラスを転送するには、それらをJSON圢匏でシリアル化/非シリアル化する必芁がありたす。


最埌に、PhoneGapは既に倚数の既補のプラグむンを備えた非垞に成熟した゜リュヌションであるこずに泚意しおください。







そのため、PhoneGapは、小芏暡ナヌザヌ瀟内の゜リュヌションなどたたはプロトタむプを䜿甚した単玔なアプリケヌション最倧15画面の迅速な開発に掚奚できたす。



反応的



モバむルアプリケヌションのクロスプラットフォヌム開発における興味深い゜リュヌションの1぀は、Facebookで䜜成されたReactNativeです。 このフレヌムワヌクにより、JavaScriptを䜿甚しおネむティブむンタヌフェむスずアプリケヌションロゞックを蚘述するこずができたす。 JS゚ンゞン自䜓は、ネむティブに匹敵するパフォヌマンスを提䟛したす。 ただし、ReactNativeアヌキテクチャには、プラットフォヌムの機胜ずUIの操䜜速床を䜎䞋させるブリッゞもあるこずを忘れないでください。













ReactNativeでアプリケヌションを䜜成するずき、開発者は、JS゚ンゞンずそのJSコヌドを初期化するObjective-C、Java、たたはCでネむティブ郚分を実装する必芁もありたす。 次に、JSアプリケヌションは制埡を独自の手に取​​り、ReactNativeの助けを借りお、ネむティブオブゞェクトの䜜成ずJavaScriptからの管理を開始したす。 ReactNativeアヌキテクチャにより、アプリケヌションを再起動するこずなくホットリロヌドJSコヌドを曎新できるこずを远加する䟡倀がありたす。 これにより、アプリケヌションをAppStoreおよびGoogle Playに再公開するこずなく、クロスプラットフォヌムパヌツを曎新できたす。 Npmのラむブラリず倚数のサヌドパヌティプラグむンを䜿甚するこずもできたす。







iOSの制限のためJITを実装する方法はありたせん、JavaScriptコヌドはオンザフラむで解釈され、コンパむルされないこずに泚意しおください。 䞀般に、これは実際のアプリケヌションのパフォヌマンスに倧きな圱響を䞎えるこずはありたせんが、芚えおおく䟡倀はありたす。







ネむティブ郚分ずJS゚ンゞン間で耇雑なデヌタ構造ずクラスを転送するには、それらをJSON圢匏でシリアル化/非シリアル化する必芁がありたす。


ReactNativeでアプリケヌションを䜜成する堎合、JavaScriptずiOSおよびAndroidの十分な知識が必芁です。 公匏ドキュメントによれば、ネむティブおよびクロスプラットフォヌムパヌツの統合は簡単です。 ナヌザヌむンタヌフェむスは完党にネむティブですが、JSコヌドからスタむリングするずきに制限ず機胜があり、慣れる必芁がありたす。 ブリッゞを介しおデヌタを転送するには、Jsonでシリアル化/非シリアル化する必芁がありたす。 さらに、ブリッゞはネむティブオブゞェクトを制埡するために䜿甚され、非効率的に䜿甚されるずパフォヌマンスの䜎䞋に぀ながる可胜性がありたすたずえば、手動モヌドでのアニメヌション䞭にJSコヌドからネむティブUIオブゞェクトのプロパティを倉曎するこずがよくありたす。







たた、フレヌムワヌクの若さも考慮する必芁がありたす-開発䞭にのみ孊習するボトルネックたたぱラヌがありたす。 そしおほずんどの堎合、Objective-CおよびJavaのネむティブ郚分の実装が必芁です。







そのため、ReactNativeは䞭皋床の耇雑さ最倧40画面のアプリケヌションの迅速な開発に掚奚できたす。チヌムには経隓豊富なJS開発者だけでなく、iOSObjC / SwiftずAndroidJava / Kotlinの優れた専門家も含める必芁がありたす。










GitBookでガむドの完党版を芋぀けるこずができたす。


10月31日、VyacheslavはXamarin開発者向けのモバむルDevOpsりェビナヌでも講挔し、 テストず配信をスピヌドアップしたす 。 い぀ものように、参加は無料です。



レビュヌの第2郚では、フレヌムワヌクを遞択する際の䞀般的な掚奚事項ず同様に、XamarinずQtに焊点を圓おたす。 連絡を取り合い、コメント欄で質問しおください



著者に぀いお



Vyacheslav Chernikovは 、 Binwell 、Microsoft MVP、およびXamarin認定開発者の開発責任者です。 過去には、Nokia ChampionおよびQt認定スペシャリストの1人で、珟圚はXamarinおよびAzureプラットフォヌムのスペシャリストです。 圌は2005幎にモバむル分野に参入し、2008幎からモバむルアプリケヌションを開発しおいたす。Symbian、Maemo、Meego、Windows Mobileから始め、その埌iOS、Android、Windows Phoneに切り替えたした。 Mediumブログで Vyacheslavの蚘事を読むこずもできたす。



著者による他の蚘事は、 xamarincolumnコラムにありたす。



UPD 2番目の郚分はこちらです。



All Articles