はじめに
今年に入ってからふとネイティブアプリの開発がしたいなーと思いたち、
技術選定をゆるゆるしてみた結果
React-Native
で開発してみることにしました。
開発する中で、正直メリットデメリットが大きくあるなあと思い、
個人的にまとめておきたかったので、この記事を書いてみました。
メリット
その1: Webエンジニア(Reactでのフロント開発経験あり)が開発する場合学習コストが少ない気がする
元々ネイティブアプリの開発経験がある方はそうでもないと思うのですが、
0ベースでFlutterやSwiftなどを勉強するのって結構ハードルが高い....
その点、React-Nativeは、Reactまたはjavascriptの開発経験がある人からすると
ハードルが一気に下がる気がしました。
あくまで私個人でですが、
学習時間はほぼ0の状態で開発をスタートしても問題ないレベルで開発が進められました。
その2: クロスプラットフォームでいろんな端末に対応しやすい
React-Nativeで開発すると、
iOS, Android, Web, Windows, Macとさまざまな端末に対応することができます。
今回個人開発でReact-Nativeの開発を行ったのですが、
近々AndroidからiOSに機種変更しようか悩んでたこともあり、
機種変したら別言語で開発もう一回は流石に...って思ってたので、いいなあと思いました。
実際の現場でも
「今はiOSだけだけどゆくゆくは〜」
みたいな要件があるとしたら使ってみるのもありな気がする。
その3: UIライブラリを入れなくてもいけてるUIのアプリが作れる
React-Nativeの公式ドキュメントを見ていただければわかるのですが、
別でUIライブラリを入れなくても、
ある程度シンプルでいけてるものが作れるようになってます。
あくまで個人開発で自分しか使わないものなんだとしたら
正直事足りるレベルかなと思いました。
(実際の現場ではちょっとシンプルすぎるので検討は必要かもしれません...)
デメリット
その1: React-Native独自のコードで記述する必要がある
React-NativeはシンプルにHTML, CSS, Javascriptのコードが書けません。
一部Javascriptの関数などは使うことができますが、
HTML, CSSは独自のタグや記述方法があるので、
ちょっと慣れるまでは大変かもしれないです。
ただ、この辺も公式ドキュメントでわかりやすくまとまってるので、
調べながらやれば全然大丈夫ではあります。
その2: 導入できるライブラリが少ない
ReactはサポートしてるけどReact-Nativeはサポートしてない
みたいなライブラリが結構多いです。
今回私は、メモアプリを開発していたのですが
monaco-editerが使いたかったのですが、はreact-nativeが対応しているライブラリが、
最終アップデートが何年も前で、インストールしてみたら使えない...みたいな感じでした。
(もし、最新のバージョンで使えるライブラリご存知の方いたら教えてほしいです)
また、デメリットその1にも関係するのですが、
シンプルなHTML,CSS,Javascriptで記述されているライブラリは
入れることができないので結構狭き門な感じでしたね。
比較的新しいフレームワークだと思うので、
これから増えてくれたらこの辺は解決するかもしれません。
その3: 参考記事が少ない
比較的新しいフレームワークということもあり、
エラーなどの対処方法がまとまっている日本語の記事が結構少ないです。
なので、英語のドキュメントが読み慣れてない人や、
自力でエラー文が読めない&解決できないとかだと結構厳しいかもしれないです。
(私は結構苦しみながらこの辺は開発してました...。)
まとめ
今回はReact-Nativeで開発をしてみて
個人的にまとめておきたいメリットデメリットをまとめてみました。
あくまで個人の意見ですし、ここまでいろんなことを書きましたが、
私はReact-Nativeの開発すごく好きでした。
シンプルなアプリを作る分には正直全然あり!
むしろ積極的に開発したいなーと思うくらいには面白かった...
元々ネイティブアプリはハードルがなんとなく高くて開発してきませんでしたが、
これを機会に、他のネイティブアプリの開発を
もっと勉強してみて比較してみるのも楽しいなあと思いました。