皆さんこんにちは。プログラミング指導・小さな会社を経営しております、打田裕馬です。
この記事では、読者の方からの質問にお答えします。
数ある方法の中でも、「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をオススメする、という形にいたしました。
- ノーコードプラットフォームに振り回されたくない
- Expoによる圧倒的簡単な開発環境構築
- npmパッケージの恩恵が大きい
- Webにも応用できる
- Dartのオブジェクト指向は初心者には厳しいと感じた
- Flutter派の肯定理由がビルドだったこと
- 英語圏アプリ以外にも役立つ
僕の主観が入っている部分ももちろんありますが、僕の意見に賛同してくださって、この記事を読んでいただければ幸いです。
今後も、プログラミングの情報を沢山作っていこうと思いますので、今後ともよろしくお願いします。
↓皆様の役に立つメールマガジンも配信しています。