この一人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アプリを作ってみようと思います。