前提の前提
初心者です。Webアプリを作ろうとしています。
内容は大喜利サイトで、様々なジャンルのお題と回答が存在する。また、ランキング機能やいいね機能などを組み込む予定です。
技術選定としては
フロントエンド HTML+CSS+JavaScript
バックエンド Rails
データベース MySQL
その他 Docker CircleCI
を考えています。
まずはWebアプリで作ろうと考えていますが、サービスが大きくなるのを予想してネイティブアプリを作るのも検討しています。その場合の技術選定としては
Flutter+Firebase
を考えています。
前提
調べているうちに、Webアプリ側のフロントエンド(HTML+CSS+JavaScript)はJavaScriptフレームワークのReactやVue.jsで置換可能だという話が出てきました。SPAはユーザーが頻繁にページ遷移をする滞在時間の多いアプリに適しているとのことで適しているとのことですが、開発速度が遅くなることやSEO対策の不備、これまではRails Wayに乗っかっていればよかった意識しない部分の設計周りをしっかりやらなければならない。というデメリットも存在します。
https://www.oro.com/ja/technology/001/
それを踏まえてもユーザー体験を優先させた方がいいなと感じたためReactを採用しようと考えました。そうなるとRailsはapiモードでAPIサーバーとしての使い方が主になります。一方でAPIモードでRailsを使うとなると、Railsを採用するメリットがあまりなくなるという話をたまにTwitterや技術記事で耳にします。
また、よく聞くのがReactとFirebaseの組み合わせです。0→10の開発ではFirebaseの組み合わせがいいとの話も伺います。ネイティブアプリもFlutter+Firebaseの組み合わせで開発ができるため、Webアプリの技術スタックはReactとFirebase。ネイティブアプリはFlutter+Firebaseで、バックエンドはFirebaseで統一してしまった方がソースを書く手間が二度手間にならずに済むというメリットがあるなと考えています。
しかし、Firebaseはサービスをスケールさせていくにつれてつらみが出てくるとの話を聞きます。Firebaseを0→10まで使う前提の技術として据えた時に、サービスをスケールさせた後の10→100を担うバックエンド言語はRailsやGoなどを採用するのかなとうっすら思っています。FirebaseはNoSQLですが、RailsやGoは主にRDBを採用した言語だと認識しております。つまり、①NoSQLに入ったデータの移行と②RDBを組み、データを移植する。という作業が必要になるのかなと考えました。この考えが正しければ死ぬほどめんどくさいなと思いました。
質問
ここで質問です。
- フロントエンドにReactを採用した時、Railsのメリットが失われるというのは本当か?
- サービスを意地でもスケールさせるのを前提で考えた時、データや言語の移行の煩雑さを考えるとWeb側でもネイティブ側でもFirebaseは最初から採用しない方がいいのか?またその場合、ネイティブアプリ側のバックエンドはなんの言語で記載した方がいいか?
- FirebaseはNoSQLでFlutterと一緒に採用されているケースが多いが、Web側でRDBライクなRailsやGoを採用している話もちょくちょく聞きます。そうなるとWeb側とネイティブアプリ側でDBの形式が異なることになりますが、どうやって整合性をとっているのか?
- ReactとRails、ReactとFirebaseだとRailsWayから外れてもRailsを採用した方がいいのか。それとも、0→10が得意なFirebaseを採用した方が良さげか?
- Firebaseをスケールさせていくと①NoSQLに入ったデータの移行と②RDBを組み、データを移植する。という作業が必要になるのかなと考えているのですが、そもそもそれは正しいのか?正しいとしたらこれが具体的にどれくらい大変なのか?
以上の5点をお伺いできればなと思っております。