自作アプリをどの言語で作るのが良いか迷っています

2021年9月6日
ユーザー

初めまして。HTML、CSS、JavaScript がある程度できるくらいの駆け出しエンジニアです。
( JavaScript はドットインストールのミニアプリレベルのものがなんとか作れるレベルです)。

今後、作りたいアプリのアイデアがあり、ユーザーがスマホで操作するのに加えて、PC のブラウザで開く管理画面からユーザーの管理などができるようなものを考えております。

今のところ、管理画面側は React、ユーザー側は React Native で作り、データベースは Firebase を使えばいいかなと考えているのですが、管理画面側を React ではなく PHP で作るという選択肢もあると思っています。

個人的には現状 JavaScript はある程度身につけているので、React および React Native を勉強するのが一番近道かなと思っているのですが、一方で PHP で作るメリットももしかしたらあるのかもという気がしています。

  • React + React Nativeで作る
  • PHP + React Nativeで作る

どちらが良いか、メリットとデメリットを整理したく、アドバイスいただければ幸いです。

ちなみにこのアプリは BtoBtoC のようなアプリを想定しているため、ユーザー数が数万とか数十万というレベルになるようなものではありません)。

先生

ご質問ありがとうございます。

作りたいアプリのアイデアがあるとのこと、素晴らしいですね!

管理画面を React で作るか PHP で作るかというご質問ですが、React はフロントエンド側のフレームワークであり、一方で PHP はサーバーサイドの言語であるため、両者でできることが違ってしまいます。

React で作る場合

Firebase は JavaScript から操作できますので、サーバーサイドのプログラムおよびサーバーを用意しなくても実装できるでしょう。ただし、JavaScript のコードはすべてブラウザから閲覧できますので、ユーザーに秘匿したい処理を実施するならサーバーサイドを経由する(別途 PHP などで処理する)必要があります。

PHP で作る場合

PHP でできるのはサーバーサイドの処理なので、フロント側は別途 HTML / CSS / JavaScript で実装する必要がありますね。フロント側で React や Vue などのフレームワークを使用する場合もあります。また、PHP の動作するサーバーを用意する必要があります。


これらは実際に実装してみないとなかなかイメージが掴みづらいかもしれませんので、まずはどちらでも構わないので作り始めてみることが大切ですね。こういった回答でよろしかったでしょうか?

ユーザー

ご返信ありがとうございます..!

すみません、もう少し掘り下げてご質問させていただきたいのですが、ユーザーに秘匿したい処理というのは例えばどのような処理が考えられますでしょうか?

自分の作りたいアプリは基本的にはフロントエンドは React、バックエンドは PHP で作るのが一番間違いないとは思うのですが、場合によっては React(React Native)+ Firebaseだけでも作れるのではないかという気がしています。

また、昨今 React など JS フレームワークで Web サービスを作るのが流行っていると思うのですが、JS フレームワークだけで作る Web サービスはユーザーに秘匿したい処理がない場合だけという認識で大丈夫でしょうか?

ちょっとまだ JS フレームワークでできることとできないことの整理ができておらず恐縮ですが、ご回答いただければ幸いです。

先生

処理をユーザーに秘匿にしたいかどうかはサービスのポリシーに依りますね。例えばユーザーが投稿したデータをデータベースに保存する際の詳細仕様として、

  • どんな名称(フィールド名など)で保存するか?
  • 投稿者の IP アドレスやユーザーエージェントを記録するか?

といった仕様が考えられますが、これらをユーザー側に見せてもいいサービスもあれば、見せないサービスもあります。

先ほどの回答にも書きましたが、まずは作ってみることが一番です。そうすれば JavaScript のフレームワークでできることとできないことも自ずと分かってきます。できないことがあると分かった時点でバックエンドと連携するように方針を切り替えても遅くはありません。

ユーザー

ありがとうございます、分かりました!

まずは React を勉強しつつ、機能の一部でも作ってみたいと思います。その過程で PHP が必要と分かったら都度勉強していくというスタンスでやっていきたいと思います。

引き続きドットインストールの授業も活用させていただきます!

この質問はユーザーによって解決済みになりました