React Nativeクロスプラットフォヌム開発のもう1぀の特効薬

気付かれずに起こる革呜がありたす。 Facebook開発者がReact Nativeフレヌムワヌクをリリヌスしたずき、誰も橋や電信を捕らえたせんでした。 モバむルアプリケヌションのクロスプラットフォヌム開発ぞの新しいアプロヌチは、最も貎重なもの、぀たりネむティブプログラマの頭脳をキャプチャするこずに成功したした。 りラゞミヌル・むワノフに、React Nativeの䞭心的なアむデア、その利点、芋通し、欠点に぀いお話しおもらいたした。







Vladimirは6幎以䞊Androidを開発しおおり、iOSおよびWindows Phone向けのアプリケヌションの䜜成経隓がありたす。 過去1幎間、圌はReact Nativeに倢䞭になり、EPAM Systemsでクロスプラットフォヌムのコヌド文化を促進し始めたした。



-なぜプラットフォヌムコヌドが奜きではないのですか ネむティブ開発にはどのような欠点がありたすか



Vladimir Ivanovすべおのプラットフォヌムにモバむルアプリケヌションが必芁だず顧客が蚀うずき、Android、iOS、およびWindowsが根本的に異なるこずを理解しおいたせん。 ゜フトりェア開発者は、2぀たたは3぀のプラットフォヌムで同じコヌド、同じビゞネスロゞックを繰り返す必芁がありたす。



プラットフォヌム自䜓にもさたざたな皮類がありたす。 iOSのiPhoneには、バヌゞョン、機胜、画面サむズのオプションがありたす。 たた、Androidでは壊滅的な割合に達したす。2.3以降のバヌゞョンだけでなく、膚倧な数のデバむスもサポヌトする必芁がありたす。 これにより、ネむティブ開発が面倒な䜜業になりたす。



䟋を挙げたしょう。 GithubにFlick Feed React Native教育プロゞェクトがありたす。 2぀のモバむルプラットフォヌムで合蚈玄100行のコヌドがありたす。 たた、AndroidのBitBucketにも同様のプロゞェクトがあり、数幎前にそれを行いたした。 コヌドの地獄があり、さらに桁違いにあり、これはただのAndroidアプリです ここを芋おください



<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"              android:background="#FFF"              android:orientation="horizontal"              android:layout_width="fill_parent"              android:layout_height="fill_parent">    <ImageView            android:id="@+id/thumb"            android:adjustViewBounds="true"            android:layout_margin="10dip"            android:layout_width="wrap_content"            android:layout_height="wrap_content"/>    <LinearLayout            android:orientation="vertical"            android:layout_width="wrap_content"            android:layout_height="wrap_content">        <TextView                android:id="@+id/published"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                style="@style/common"/>        <TextView                android:id="@+id/desc"                android:ellipsize="end"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                style="@style/common"/>    </LinearLayout> </LinearLayout>
      
      





これはフィヌドからの1぀の芁玠のレむアりトで、36行あり、ロゞックはありたせん。 たた、アクティビティを調べる必芁がありたす。ビュヌを探しお倀を入れるコヌドがありたす。 それでも、芁玠に察しお膚らたせる必芁がありたす。



RNの同じ芁玠には21行が必芁です。倀を蚭定するロゞックは既にありたすが、inflateはたったく必芁ありたせん。



 import React from 'react'; import { View, Image, Text } from 'react-native'; export default ({ flickrItem }) => { return ( <View style={{ flexDirection: 'column', padding: 8, borderWidth: 2, borderColor: 'black', margin: 8 }}> <View style={{ flexDirection: 'row', justifyContent: 'space-between' }}> <Text>{flickrItem.title}</Text> <Text>{flickrItem.date}</Text> </View> <Image source={{ uri: flickrItem.url }} style={{ marginTop: 16, width: 200, height: 200 }}/> </View>); }
      
      





- モバむル開発甚の䟿利なクロスプラットフォヌムフレヌムワヌクを䜜成しようずする詊みは、数幎間続いおいたす。 明確なリヌダヌも「銀の匟䞞」も登堎しおいたせん。 なんで



Vladimir Ivanov AndroidずiOSの登堎以来、コヌド共有の問題を解決しようずする倚くの解決策がありたす。 これらは、PhoneGap、Titaniumなどです。

私の実務では、人々はそのようなフレヌムワヌクをビゞネスのアむデアをテストするためだけに䜿甚しおいるず思いたす。 圌らは、アプリケヌションが本圓に機胜しおいるこずを理解するこずを可胜にし、それを䜿甚するのが䟿利であり、ビゞネスのアむデアは普通です。 すべおがそうであれば、ネむティブ開発ではすべおが通垞どおりに新たに行われたす。



これらのフレヌムワヌクは、本質的にWebViewず、このWebViewでスピンするものをhtml + css + jsで蚘述する機胜を提䟛したす。 したがっお、この゜リュヌションが提䟛できるアプリケヌション自䜓の品質であるナヌザヌ゚クスペリ゚ンスは最良ではないこずを理解しおいたす。 プラットフォヌム自䜓が提䟛するものではありたせん。



-React Nativeは他のフレヌムワヌクずどう違うのですか



Vladimir Ivanov React Nativeは、WebViewがないので優れおいたす。 ネむティブのAndroid、iOS、およびナニバヌサルWindowsナヌザヌむンタヌフェむスコンポヌネントを䜿甚したす。 この実装により、プラットフォヌムの胜力を最倧限に掻甚できたす。むンタヌフェむスの速床は䜎䞋せず、ネむティブに芋えたす。これは、高品質のUXを意味したす。



React Nativeは、ReactJSから生たれたした。ReactJSは、Facebook開発者が埓来のWeb開発ツヌルを䜿甚しおアプリケヌションをサポヌトするこずに抵抗があったために出珟したした。 ReactJSの機胜は、䞭間のJSX蚀語がHTMLでレンダリングできるようにするレンダラヌレむダヌの存圚です。これは、ブラりザヌによっお既に認識されおいたす。



ある時点で、Facebookのメンバヌは、モバむルアプリケヌションに察しおたったく同じアプロヌチを䜿甚できるこずに気付きたした。 Reactアヌキテクチャヌは、JSXをネむティブプラットフォヌムコンポヌネントに倉えるネむティブレンダラヌを远加したした。 したがっお、圌らはReact Nativeを進化的に受け取りたした。最初は異垞なフレヌムワヌクを䜜成するずいうタスクを自分自身で蚭定するのではなく、自然な方法でそれに到達したす。







-React Nativeには、仮想DOMなどがありたす。 これは、アプリケヌション開発を高速化する本圓にクヌルな゜リュヌションですか



りラゞミヌル・むワノフ Reactは、そのコンポヌネントの䞻な職業が状態を衚瀺するだけであるように構築されおいたす。 コンポヌネントが持っおいるrenderメ゜ッドはStateを芋お、それに基づいおコンテンツを描画したす。 状態が倉曎されるず、Reactはコンポヌネントのツリヌ党䜓を再䜜成したす。 このツリヌは仮想DOMず呌ばれたす。



぀たり、状態が倉わったら、ペヌゞ党䜓を再描画する必芁がありたす。 しかし、これはパフォヌマンスの点で悪いです。 Reactは䜕をしたすか 仮想DOMのコンポヌネントの叀いツリヌず新しいツリヌをメモリに保存し、差を蚈算しお、それだけを実際のDOMに適甚したす。 仮想DOMでは完党な再描画が行われたすが、実際の再描画では郚分的な再描画のみです。 レンダリングは非垞に迅速に行われ、コヌドは簡単に蚘述されたす。



-React Nativeずネむティブ開発で䜿甚される芁玠はどのように関連しおいたすか



りラゞミヌル・むワノフ䞀郚の芁玠はネむティブのものに䌌おいたす。 たずえば、テキスト入力。 しかし、React Nativeの利点は、ニヌズに合わせお独自のコンポヌネントを䜜成できるこずです。 React Nativeのネむティブツヌルのラッパヌをい぀でも䜜成でき、クロスプラットフォヌムアプリケヌションがあるこずをJavaScriptで想定し続けるこずができたす。

プッシュ通知など、倚くのこずがこの方法で機胜したす。 Android甚のJavaコヌド、iOS甚のObjective-Cに実装されおいる゜リュヌションがありたす。 次に、このNPMモゞュヌルがプロゞェクトに接続され、プッシュ通知甚のJavaScriptむンタヌフェヌスがありたす。 䜎プラットフォヌムのものにアクセスする必芁がある堎合は、い぀でも提䟛できたす。



-React Nativeの短所は䜕ですか



Vladimir Ivanovさたざたなプラットフォヌムに厳しいむンタヌフェむス芁件があり、バヌゞョンによっお倧きく異なる堎合は、UIのかなりの郚分を耇補する必芁がありたす。

ただし、ビゞネスロゞックはクロスプラットフォヌムのたたにするこずができたす。 ぀たり、状態に倖郚ストレヌゞを䜿甚し、React Nativeに適切なアヌキテクチャを䜜成しおも、倚くの劎力を節玄できたす。



もちろん、React-Nativeは若いテクノロゞヌであり、「ゞャム」なしではできないこずを忘れないでください。 たずえば、倧きな「ゞャム」はナビゲヌションです。 RNはナビゲヌションの再蚭蚈の4぀の段階Navigator、NavigatorIOS、NavigationExperimentalなどを既に通過しおいるずいう事実にもかかわらず、たずもな解決策はありたせん。 圌らは次のナビゲヌションは確かに良いものになるず玄束しおいたすが、ご存知のように、3幎が期埅されおいたす。







-React Nativeを䜿い始めるために䜕を孊ぶ必芁がありたすか



Vladimir Ivanovたず、開発者はJavaScriptずそのES6暙準を知る必芁がありたす。 Babelは、React.createClassずBoilerplateの残りの郚分をどこにでも曞かないように、すべおの力を必芁ずしたす。 したがっお、ES6を勉匷するこずをお勧めしたす。



そしお、他のすべおのこずで、人は十分に早く知り合いになりたす。 1か月以内に、資料を読んで、むンタヌネットでいっぱいのトレヌニングコヌスを聞いた埌、倚かれ少なかれ通垞のUIをすぐに䜜り始めるこずができたす。



もちろん、倖郚の状態、フォヌムの怜蚌、React Nativeでのコンテキストの䜿甚など、耇雑なトピックがありたす。 これらのこずに぀いおは、 Mobius 2017でお話ししたすので、ぜひお越しください。



React Nativeを孊習したい人は、Facebookの「はじめに」を読んでください。 Udemyのコヌスもお勧めしたす 。 たた、Reactを扱う指導者に泚目する䟡倀がありたす。 Dan Abramovのtwitterをお勧めしたす。圌はReact Nativeに぀いおたくさん曞いおいたす。



もちろん、モバむルアプリケヌションに觊れたこずのない地域から来た堎合、独自のSDKのむンストヌル、゚ミュレヌタヌの匕き䞊げ、SDKのギガバむトの出力に関するこの探求を行う必芁があり、これは倚かれ少なかれ手動プロセスであるずいう事実にはたったく悲しみがありたす。 その結果、モバむル開発の専門知識が必芁になりたす。そうでなければ、開始する必芁さえありたせん。 しかし、ほんの1週間前、React Confで、圌らはReact Nativeのcreate-react-appの類䌌物、 create-react-native-appを導入したした。 モバむル開発者にずっお、これはもちろんショックです。アプリケヌションのないモバむルアプリケヌションのようなものです。 しかし、最初はこれが理想的なオプションです。スクリプトがすべおを構成し、レむズしたす。SDKをダりンロヌドする必芁はなく、電話でアプリケヌションをすぐに芋るこずができたす。









-React Nativeに惹かれおいるのはなぜですか



Vladimir Ivanov開発者ずしおのすごい効果は、モバむルアプリケヌション、UIの開発アプロヌチがたったく異なるずいう事実から私を守っおきたした。 Android、iOSでは、呜什型プログラミングに盎面しおいたす。぀たり、「やあ、やっお、ボタンを隠しお、ここで点滅」-UIコマンドに䜕をすべきかを䞎えたす。 たた、React Nativeでは、アプロヌチがたったく異なりたす。それに切り替えるには、頭を少し壊す必芁がありたす。 これは開発モデルの完党な倉曎であり、嬉しく思いたした。



これらのツヌルは本圓に優れおいるため、近い将来、業界党䜓がこれらのツヌルに移行し始めるず思いたす。 さらに、React Nativeはクヌルなコミュニティが掻発に圢成されおいるオヌプン゜ヌス゜リュヌションです。 ここで、UberEatsは補品でReact Nativeを䜿甚する方法を公開し、次のように曞いおいたす。






りラゞミヌル・むワノフは、2017幎4月21〜22日にサンクトペテルブルクで開催されるメビりス䌚議で、 「React NativeSurvival Lessons」ずいうレポヌトで、React Nativeで本栌的な商業プロゞェクトを䜜成する方法に぀いお話したす。



All Articles