reactnative

Introduction - Why React Native?

More than 3 years have passed since last update.

この一人React Nativeアドベントカレンダー2015を始めるにあたって、最初に前提条件を整理しておきます。

まず私のバックグランドは、外資系金融会社でインフラ業務を7年間、その間Perlを用いてツールなどを開発していました。昨年、スタートアップ業界に転職し、Rails, iOS(swift), Angularを主に業務を行っています。Reactはメイン業務では使用しておらず、ReactNativeを自分のプロジェクトで利用しています。したがって、React自体の理解不足の可能性があるのでその辺はご容赦いただき、何かありましたらご指摘していただければ思います。


What is React Native?


React Native enables you to build world-class application experiences on native platforms using a consistent developer experience based on JavaScript and React.


React NativeはJavascriptとReactを用いてネイティブアプリを作るための開発ツールセットです。


How is React Native?

私が見るところ、ReactNativeは海外ではちらほら話題が出ているのにもかかわらず、日本ではほとんどReactNativeというワードを見ません。例えば、下記のポストのようにiOSデベロッパーのMarc氏は、"ReactNativeを始めて数ヶ月経った今、「もうObjectCやSwiftでアプリを作らない」と自信を持って言える"、と言っているように、さらにReactNativeのレポジトリのスター数は23,000を超えるモンスターレポジトリになっています。そして、Releaseスピードも早く2,3週間に一回、新しいバージョンをリリースするサイクルになっています。


'Fast-forward a couple of months, and I’m confident enough to say I may never write an iOS app in Objective-C or Swift again.'

"An iOS Developer on React Native" from Medium post



Pros and Cons of React Native

私の視点で良い点と悪い点を箇条書きしておきます。


Pros(良い点)


  • iOS,androidのネイティブアプリをJavascriptで作れる

  • iOSとAndroidのコードの共有化


    • コンポーンネントは無理なところもあるが、ロジックは共有できる



  • Reactを使う

  • Reactのエコシステムを利用できる。(Flux, Redux等)

  • BabelでtransformしているのでES6,7等の新しいシンタックスで書ける

  • 非同期のプログラムを書く(業務で同期プログラムのみを書いている人には勉強になる)


Cons(悪い点)


  • リリースサイクルが早くてバージョンアップについていかないといけない

  • 問題があるとgithubのissueをあさったり、stack overflowで探さないといけない。(英語リソースの数は少なくはありません)

  • 後発のAndroidの利用できるAPI,Component数がiOSに比べて少ない


    • したがって、githubのモジュールを入れる必要がある(が、リリースサイクルが早いため、メンテされてないと使えない場合がある。モジュールを使うリスクを考慮する必要がある)




Summary

海外では注目を集めていて、ReactとJSで開発でiOS, Androidアプリを開発できていまうReactNativeは視野に入れる価値のある開発手段であると思います。またReactやそのエコシステムを実際に触れ、学ぶことができ、それがWebにそのまま生かせる(逆の発想ですが)のも魅力的です。このアドベントカレンダーでは、稚拙ですが、ReactNativeについて色々書きたいと思います。

明日はiOSアプリを作ってみようと思います。