ブラウザ、スマホアプリから利用できるサービスを作りたい場合  
SNSのようなサービスなのですが、  
ブラウザ(Webアプリ)とスマホアプリ(iOS, Android)の両方から利用可能なサービスを開発したいと考えています。  
スマホアプリはネイティブアプリにする予定です。ハイブリッドではありません。  
イメージとしてはTwitterのようなものです。  
Twitterもブラウザとアプリの両方がありますよね。

WebアプリはReact, Next.js で、  
スマホアプリは Flutter で開発を行う予定です。

質問①  
バックエンドは完全なWeb APIとして開発可能でしょうか？  
ブラウザの方はReactでSPAにするため、バックはAPIを利用することになりそうです。  
スマホも当然APIになります。

質問②  
ブラウザとスマホアプリで利用するAPIは完全に共通化可能でしょうか？  
たとえばブラウザのほうではSSRを行うとレスポンスがHTMLになることがある一方で、スマホアプリでは常にjsonを返すため、完全な共通化は難しい気がしています。このあたりどう解決できますでしょうか。

質問③  
バックエンド言語、フレームワークの選定について  
このような条件の場合どの言語、フレームワークが望ましいでしょうか？  
シェアが高いものなど教えていただけますと幸いです。
CC BY-SA 4.0
2022-06-02T16:33:44.240
89204
2022-06-08T09:29:32.080
50616
question
ios android reactjs flutter next.js
ブラウザ、スマホアプリから利用できるサービスを作りたい
「RESTfulにしたい」と「SSRしたい」はすでにバックエンドに二つの性質があります。RESTfulにおけるURLはリソースを示すものでSSRにおけるURLはドキュメントの置き場を表します。  
SSRしたい主な理由としては、最初の読み込みスピードを上げるためやOGPなどの動的に変わった場合にうまく機能してくれないBotやクローラーに対策するためです。  
そのためSSRするということはURLにドキュメントがありクローラーたちがやってくるという要素があります。  
逆にRESTfulはURLにはリソースを一意で表すものであり、ボットのアクセスやドキュメントの置き場という要素はありません。

例えば  
<http://example.com/table/>  
というURLの場合、  
RESTfulの場合はテーブルのリソースに対するAPIであり  
SSRの場合はテーブルのドキュメントが置いてあります。

そのため  
質問①、質問②  
に関していえば、難しいという印象です。  
SSRをやめるとかRESTfulをやめるという選択肢があるのであれば可能でしょう。  
もしくはバックエンドはSSRをするサイトとRESTfulを行うWebAPIと完全に分かれれば問題ないでしょう。

質問③  
に関していえば情報が足りません。  
フレームワークや技術の選定は市場の状況（シェア、ドキュメント、サポート、発展度）も大事ですが、プロダクトの性質（要件、セキュリティレベル）やプロジェクトの状況（予算、人、保守）も大事になってきます。

例えばシェアの高いものを選んだとしても、プロジェクトのメンバーが全く習得していないものを選んでしまうと、そもそも開発する前の学習コストが高くなってしまいます。  
しかし、将来的なことを考えて予算をかけてでもその言語で学ぶべきということであれば全く問題ないでしょう。

つまりは総合的に判断されるもので、CTOなどの技術責任者やプロジェクトマネージャー層と決定が必要な重要な項目になります。

もし個人で学習のためということであれば、やってみたいものをやってみればいいでしょう。  
もちろん言語によって年収の差や将来つける職務が変わるという記事もいくつも出ていますが、そこはご自身のキャリアプランややりたいことベースで考えてみるとよいでしょう。  
個人的には、学習であればどの言語で作るかよりも、プロダクトを出すことのほうが大事だと思っています。一つの言語を学んでプロダクトを生み出せるのであれば、いつでも新しい言語を学んでモノづくりできる人間であるとも言えます。
CC BY-SA 4.0
2022-06-08T08:02:57.243
89292
2022-06-08T09:29:32.080
2022-06-08T09:29:32.080
22665
22665
89204
answer