アプリ開発の初心者にReactNativeをおすすめする7つの理由

皆さんこんにちは。プログラミング指導・小さな会社を経営しております、打田裕馬です。

この記事では、読者の方からの質問にお答えします。

数ある方法の中でも、「ReactNative(リアクトネイティブ)を選んだ理由について、詳しく聞かせて欲しい」という内容です。

 

Reactの他にも

  • Flutter(フラッター)
  • FlutterFlow(フラッターフロー)

という、ノーコード開発プラットフォーム(No-code development platform, NCDP)があるのですが、

 

なぜそちらを選ばずに、今回、ReactNativeで 直接「React」いう、プログラミングのフレームワークを使うことにしたのか、ということについて、詳しく説明していきます。

理由は、主に7つあります。1つずつ解説します。

 

ノーコードプラットフォームに振り回されたくない

  

ノーコードプラットフォームの仕様の変化、制約など、制作以外の諸事情に、振り回されたくなかったからです。

僕が何を大きな目的にして「ReactNative」を選んだかというのは、 僕のスクールに参加してくれている皆さんが、総合的に、一番役立つ選択肢が、ReactNativeだと思ったからです。

 

制約を受けず仕事の本質に集中したい 

ノーコードプラットフォームは

  • ストアにリリースしようとすると、基本的には有料プランだったり、
  • CORDURA(コーデュラ)のように、何か制約があったり

しまして、 これまでけっこうノーコードのAdalo(アダロ)がいいと思っていたんですけど、  

 

ノーコードプラットホームを利用する上での

  • 規約変更
  • 円安でのレート変更

このような状況変化にけっこう振り回されてしまって、「開発」という本来の仕事、本質的な事があまり出来なくなってしまいました。  

 

今後はこういったプラットホームに振り回されにくい性質である 「ReactNativeのようなプログラミング言語で行こうかな」 と考えたのが、最初に挙げる理由です。  

ですので、今後は、ノーコードはあまり使わない方向で行こうかな・・・と考え直しております。

       

      Expoによる圧倒的簡単な開発環境構築

      ReactNative、2つめの理由は、Flutterの場合と大きく違う点です。 ReactNativeでは、圧倒的に簡単に、開発環境の構築ができます。

      これは、僕がReactNativeを選んだ、一番大きな理由だと考えております。

       

      というのも、僕は、Svelte Native(スヴェルトネイティブ)である程度

      • サーバーの知識
      • Linuxの知識

      その他もろもろ知識があるので、環境構築なども自分で進めることができます。  

       

      しかし、この記事を読んでくれている方たちは、

      • これからプログラミングを学びたい方
      • まだプログラミングを学び始めて間もない方々

      なので、開発環境の構築には、けっこう苦労すると思います。

       

      開発環境で皆さんをつまずかせたくない

      しかも、 開発環境の構築というのは、Web上ではなくて、ご自分のPC上でやるものです。

      僕が何か教えたり、アドバイスできないかな・・・と思っても 僕自身が、皆さんの状況、困りごとを把握できないケースが、多々あると思います。  

      自習型のスクールで、開発環境の構築に手間取るっていうのは、あまり良くないことだと考えました。

       

      今、僕がオンラインで追加している「Expo」(エクスポ)というコースがあります。

      ReactNativeは、Expoを使うことによって、圧倒的に簡単に、実機で動かすことができます。

      この環境開発の構築のやりやすさ、ReactNativeを選んだ、かなり大きな理由でした。

       

      npmパッケージの恩恵が大きい

      3つめは、ReactNativeだと、npmパッケージの恩恵を受けられることです。

      npmがライブラリである、のためですが、Reactは、とにかく数が圧倒的に多いです。

      Svelte Native、それから、Flutterもnpmには勝てず、まだまだですね。  

       

      npmパッケージとは何か?

      npmパッケージとは、いわゆる「ライブラリ」です。

      誰か、優秀なプログラマーが作った汎用的なものを、僕たちがインポートするだけで、使えるようになる仕組みです。  

       

      例えば、Reactですぐ使える便利なものですと、 Day.jsで、日時をいろいろとコントロールしたりするのですが

      • 表示を日本語・英語用に切り替えたり
      • 日時の比較をしたり

       そういった、過去に使ってきたJavaScriptの資産で、使えるものがすごく沢山あるんです。

       

      このnpmパッケージの恩恵が大きいので、僕も、「超・一流」のプログラマー・・・というわけでもないんですけど(笑)

      他の人が作ったライブラリーの恩恵を受けることによって、開発時間を短縮することができているんです。  

       

      なので、こういった

      • npmパッケージ
      • ライブラリ

      そろっている数の多さというのも、Reactが有利だなと感じております。  

       

      Webにも応用できる

      4つめの理由は、ReactNativeはWebにも応用できる、という点です。

      以前、質問いただいた内容より 「スマホアプリからもやりたいのですが、Webでも同時に使えるようにしたい。」というケースも、けっこうあると思います。  

       

      コピペで作れるとラク

      Udemyで作成する教材「Tap Diary」(タップダイアリー)も、今はスマホアプリだけですが、今後はWebでも使えるようにしていく可能性があります。

      その場合、 Reactにすると、

      • 見た目(View)の部分は、スマホアプリと、Webの部分で異なるんですけど
      • ロジックの部分・・・データを取りに行ったり、入力したり

       

      そういった部分というのは、ほとんど一緒です。 なので、Web用のものを作り足す時にも、ほとんどコピペで作れてしまいます。  

      このように、「React」に統一しておくと、Web用の開発も非常にラクになる! と考えました。  

       

      Dartのオブジェクト指向は初心者には厳しいと感じた

      5つめ、初心者の方にとって、オブジェクト指向型言語は、けっこう難しい所があります。

      Flutterにも、Flutter Webというのがあります。

      このFlutterは、JavaScriptでなくて、Dart(ダート)という、オブジェクト指向型言語を使っています。

       

      Dart、イメージ的には、Javaと近いようなイメージです。

      僕自身が、Javaに、少し苦手意識を持っていまして。

      オブジェクト指向は、初心者には理解がけっこう難しいなと、感じているんです。  

       

      昔、Javaはとっつき辛いと感じた

      実は僕が最初にプログラミングを始めた時に、「オブジェクト指向の、カッチリとした言語から始めた方がいいかな?」・・・と、Javaを勉強したことがあります。

      Java、けっこうとっつき辛かったです。

       

      今はもう、十分オブジェクト指向を理解できているんですけど、始めた当時は全く理解できなくて。

      「何でこんなにややこしい事をするんだ!」・・・と常に考えていて、違和感がありました。  

      「オブジェクト指向、初心者の方にはとてもオススメできないな。」と考えて、 Flutterではなくて、ReactNativeを選びました。

       

      JavaScriptはいろんな書き方ができるので、ひとまずそんなに難しい書き方はしないことにします。

      Reactは極力シンプルな形で、皆さんにお届けしていこうと考えています。   オブジェクト指向を使うメリットというのは、特に、個人開発においては、けっこう少ないと思います。

      Dartを皆さんに積極的にオススメする理由は、あまりないな・・・と考えました。

       

      Flutter派の肯定理由がビルド周りだったこと

      「Flutter」肯定派の理由もいろいろ、見たり聞いたりしました。

      肯定された一番大きな理由は 最新ver.のビルド周り でした。  

       

      Flutterがいろんな人に使われる理由

      Flutterが、いろんな人に使われる大きな理由に、ビルドがラクというのがあるようです。

      このようなケースです。

      • 大きな会社のアプリとかだと、アップデートにドンドン対応していかないといけないので、
      • FlutterとかDartのバージョンも、同様に、ドンドン上げていかないといけないです。  

       

      iOSのアップデート等にも合わせて、Flutterとかをアップデートしていく必要がります。

      その場合、ReactNativeよりもFlutterの方が、ビルドがラクらしいんです。

       

      • 大きな会社で働いている人は、Flutterの方がいいよ、
      • ネイティブで元々やっていた人は、Flutterの方がいいよ

      ということだったんですけど、  

      小規模で作っている僕達は、このようなアップデートに、スグスグの対応が求められるのは、少ないかな・・・ と考えておりましたので

       

      • Flutterのいい所よりも
      • (先に6つ挙げた)ReactNativeのメリットの方が大きい

        ・・・ということで、僕は皆さんに、ReactNativeをオススメして、コースを作っていくことにしました。

       

      英語圏アプリ以外にも役立つ

      最後7つめ、ReactNativeは、英語圏アプリ以外でも、役に立つんですよ。

       

      Reactは案件多し!

      例えば、

      • どこかに就職する
      • どこかに転職する

      もしくは、フリーランスで、何か案件を受けるときにも、 DartとかFlutterよりも、Reactとかジャバスクリプトの方が圧倒的に案件が多いんです。

      英語圏アプリ以外でも、役に立つなと考えました。  

       

      まとめ

      7つのメリット、理由を総合して、皆さんにReactNativeをオススメする、という形にいたしました。

      1. ノーコードプラットフォームに振り回されたくない
      2. Expoによる圧倒的簡単な開発環境構築
      3. npmパッケージの恩恵が大きい
      4. Webにも応用できる
      5. Dartのオブジェクト指向は初心者には厳しいと感じた
      6. Flutter派の肯定理由がビルドだったこと
      7. 英語圏アプリ以外にも役立つ

        僕の主観が入っている部分ももちろんありますが、僕の意見に賛同してくださって、この記事を読んでいただければ幸いです。

       

      今後も、プログラミングの情報を沢山作っていこうと思いますので、今後ともよろしくお願いします。  

      ↓皆様の役に立つメールマガジンも配信しています。

      【 打田裕馬の「メールマガジン」登録  】

      英語圏アプリで会社や嫌な取引先に依存しない収入を作りませんか?
      その裏側を紹介するメールマガジンを配信しているので、ご興味あれば覗いてみてくださいね。