ReactNativeさえあればもうAndroid/iOS固有のスキルはいらないんじゃね?と思い始めてしまいました。
Qiita他を見る限り、Web専門の人が結構ReactNativeでアプリを組み始めている んですよね。
間違いなく自分のReactNativeより上手に組んでいるでしょう。
となると、もうJava/Swift/Obj-Cでアプリを組む必要ってない=ガチNativeしか開発できない人はもう不要になるのではないかという気がしました。
OS固有環境(以下ガチNativeと呼びます)とくらべてReactNativeで開発するメリットとして
- クロスプラットフォーム
- View構築が楽
- 共通のView-Style定義が楽
- Hot-Reload
- Instant-Runより安定しており、かつリロードが早い
デメリットとして
- 最新OSの対応が若干遅れる可能性あり
- ただし自分自身、そこまで最新OSに追従してるかというとそうではない
- View周りが仮想DOM(React)に固定される
- 最も自分は気に入っているのでなんら問題ではないですが
- Facebookの機嫌次第なところはある
- 特にUpdateに関するマージの不安定さ
- 型チェック周り
- さすがにここはJava/Swiftの圧勝
という印象。ReactNativeはあまりデメリットがない上にメリット多数。
ある程度の規模までなら確実にReactNativeのメリットが大きくなると思います。
特にクロスプラットフォームとHot-Reloadは大きい。
つまり大げさな言い方をすると、 自分がXcodeでIOS-Appを作る時間で、Webの人はReactNativeで両対応アプリを作れる わけです。
下手するとiOSよりReactのほうが早く作れるかもしれません。View周りならReactのほうが楽な上にHotReload完備ですから。(その上両OS対応ということを忘れずに!)
もはやガチNativeを上回る開発パフォーマンスをReactNativeは備えている可能性があります。
さらにReactNativeをHTML/CSSにコンバートするライブラリもあるらしいですからね...これが安定動作した日にはもうね、ガチNativeで組むメリットがないです。
大きいデメリットは型チェック でしょうか? 大規模・複数人になると厳しい問題になるはず。
ただTypeScriptがしっかりすれば、もしくはFlowが安定すればある程度解決できると思います(Javascript界そのものが型チェックに積極的になっている印象を受けます)。
また完全にOS作法に従ってUIを作りたい、となるとReactNativeでは厳しいはずです(ただしちゃんと組み分けているアプリがあまり多くないのも事実。自分含め)
そういうわけで Nativeしか開発できない自分は強い危機感 を覚えています...
本当にやばい。このままだとWebの人に職を奪われる
付け加えるならReactNativeでは、ガチNativeあがりよりWebあがりの人のほうがスムーズに組めます。本当にまずい。
この間のアプリをReactNativeで組んでよかった...Xamarinで組んでいたらここまでの危機感は覚えなかったと思います。
もっと専門のガチNative職人として最先端を突っ走るか、Native以外にも分野を広げるかはまだわかりませんがもっと勉強しないとですね...この間のアプリはいいきっかけになりました。