この広告は、90日以上更新していないブログに表示しています。
AirBnb がReactNativeをやめることが話題になってますね。
RNの未熟さ、社のRNのForkのメンテナンスコスト、JavaScriptのスケールのしなさ、JavaScriptCoreの実装の違い、クラッシュレポートが信頼できない、開発者は主に片方のプラットフォームしか知らないのでOSSのライブラリはバグってる、結局ブリッジを描く人間が必要、人が雇えない、山ほど出てくる…
— Hello (@rejasupotaro)2018年6月19日
以下私見です。
自分がRN使いたいといって相談された際にはこういう感じで返してます。基本的にはExpo 採用可能か否かで判断してます。Expo ではじめる ReactNative 開発環境 - Qiita
Expo を推してる理由は、RNの根本的に不安定な部分を、比較的安定している Expoに押し付けることができるからです。Expoを使わない場合、現時点ではRNのバージョンアップの追従で3プラットフォーム全てに習熟する必要があり、技術的な要求レベルも割くべきリソースも必要です。
正直なところ、 RN も PWA も、現時点では貧者のツールなのは否定できません。また、RN 開発で必要なノウハウはWebのスキルと言うより、もはやGUI 開発のスキルなので、JSが使える以上のスキル転用は望めません。僕のようなSPA開発者が漲ってコード書ける環境、という方が近いでしょう。
UXを突き詰めたい、というのも温度感次第で、突き詰めたくないと思ってる人はいないので、程度問題です。簡単な答えはなく、結局チーム構成に依存します。AirBnbのような会社なら重いパラメーターでしょうが、とりあえずAppStoreのディスカバリーに載せたい程度の気持ちで作ってるならRNでも十分だと思います。色々いいましたが、いわゆるウェブサービスのモバイルアプリは、ほとんどはこれに該当すると思います。
以下ツイートから引用
RNはNative部分を使わないWebアプリとは違う別のガワ+αぐらいで使わないときついだろうという気はする
— human eslint --fix (@mizchi)2018年6月20日
僕がRN薦める際は、要件をエンジニアがコントロールできるときに expo 使って expo 由来のもの以外使わないか、Web開発者多数 +iOS 専属 +Android 専属というチーム構成を取れるときです
— human eslint --fix (@mizchi)2018年6月20日
Native要件が少なくて expo を採用できれば RN は最高なんだけど、 expo を採用できるかどうかはかなり社内政治の色が強いので、正直技術の話ではない
— human eslint --fix (@mizchi)2018年6月20日
RN のバージョンアップ、 Web/iOS/Android どれか一つに付いていくのは簡単だけど、全部についていくのは地獄
— human eslint --fix (@mizchi)2018年6月20日
現状RNが貧者の開発ツールなのは否定しません
— human eslint --fix (@mizchi)2018年6月20日
一応AndroidとFlashとUnityの経験した上で、仮想DOM+Fluxのアーキテクチャに未来を見出してて、今その原稿を書いてるんですが、正直なところ仮想DOMというコンセプトを実現するだけなら Flutter 使えという話で終わってしまう
— human eslint --fix (@mizchi)2018年6月20日
Flutter コミット見る限りは、Android側へ開発リソースが偏ってるので、たぶん本当に色々使うとiOS 側のAPI足りないんだろうなという予感がある
— human eslint --fix (@mizchi)2018年6月20日
AirBnbみたいなリソースがある会社だと、特定の UIViewやActivity の中で RNを小さく使うという選択は技術的にあるはずで、個人的にその検証は済ませてるんだが、コミュニティはそっちを向いてないので自前でやることになるhttps://t.co/x70aux3ynl
— human eslint --fix (@mizchi)2018年6月20日
RCTRootView(
— human eslint --fix (@mizchi)2018年6月20日
bundleURL: jsCodeLocation,
moduleName: "app",
initialProperties:nil,
launchOptions: launchOptions
)
でパスを指定する
なぜ RN + expo を採用することが「社内政治」なのかというと、僕の経験上モバイル開発の末期は開発側でアンコントローラブルな広告SDKを要求されることが多く、expo だとそもそも要求仕様が詰んでることが多いからです
— human eslint --fix (@mizchi)2018年6月20日
RN+Expo を採用できればフロントエンド開発者のリソースをそのままネイティブ転用できるが、細かい要件をコントロールするにはネイティブ側のブリッジが必要で、そうも言ってられなくなる。広告SDKなどアンコントローラブルな事情が発生しうる
— human eslint --fix (@mizchi)2018年6月20日
「普通の」ウェブ開発者のスキルをRNに転用できるかというと怪しくて、仮想DOM概念やFluxとReactは完全にGUIの開発フローになるので、マインドセットがRailsみたいなWAFのMVCべったりの人間がこれにスイッチするには時間がかかる。JSである以上の共通点はない。
— human eslint --fix (@mizchi)2018年6月20日
あとWebの人間はモバイル基準だとインタラクションに激弱なので、スワイプ周りを制御するための PanResponder とかで手こずる。Flashの経験がある人は強いと思う
— human eslint --fix (@mizchi)2018年6月20日
引用をストックしました
引用するにはまずログインしてください
引用をストックできませんでした。再度お試しください
限定公開記事のため引用できません。