最近のモダンなWebサービス開発の構成について調べるメモ
ここのところ雑にWebサービスをリリースする機会が減って最近はFlutterでネイティブアプリばかり書いてるのでWebの最新に追いつけてない。
最近の流行りのWebサービス開発について自分の必要そうな範囲でちょっと調べてみる。
自分の場合、フロントエンドはTypeScript+(Vue or Nuxt)でやって、サーバーサイドはRailsで書いちゃうことがまだ多い。
これでもなんとかなるけど、もうどうせならJSで一気通貫でフロントエンドとサーバーサイドを書ければ楽なのにと思いつつある。
パッと思いつくのはTypeScriptでフロントエンドをNext,Nuxtあたりでやって、バックエンドAPIをexpressとかサーバーレスAPIを適当に書くとかだけど、今だともっと良い方法ありそう。
本当はDartでサーバーサイド、FlutterでwebまでいければDart統一時代になって願ったり叶ったりになるのだけどその未来は遠そう...
mBaaSのFirebaseがあればフロントエンドだけでいけるみたいな話もあるんだけど、こうRDB使いたいじゃんということもあったりするので。
まぁその辺りを調べてみる。
とりあえずBoothにあるnabettuさんのこの本読んでみる。去年の9月なのでまだ新しいはず。28人の個人開発者が選んだwebサービスの構成が載ってるので流行りの傾向とかわかりそう。無料で読めてお得すぎる。
個人Webサービスシステム構成事典
(Next|Nuxt).js + (Vercel|Netlify|Firebase Hosting)派がまずは多そう。
Vueはプロダクション利用経験も結構あるしNuxt.jsとNetlifyとFirebase Hostingに関してはよく知ってるので省略。
Next.js
Next.jsはReactのフレームワークでJamStackを作る際の急先鋒という感じ。フロントエンドでやりたいことはなんでも出来るマン。
Vercel
VercelはNext.jsの作者のうちの一人がCEOをやってるPaaS。Next.jsのデプロイ先として使うとめちゃくちゃ便利マン。APIルーティングにも対応してるのでNext.jsだけでフロントエンド,サーバレスAPIで完結可能。まぁ主張には賛否あるがNext.js+Vercelで出来ることに関してはこのQiitaが割と参考になる。
※ CEOによるVercelについて記事
なんかmonorepoもデプロイできるっぽいな
- ※yarn workspaceの話。こんなんできるの知らなかった
https://numb86-tech.hatenablog.com/entry/2020/07/21/155343
(Rails|Laravel|Node|django|Go) + (Next|Nuxt|React|Vue) + (Heroku|CluoudRun|EC2|GCE|GAE|GKE|レンタルサーバー)勢。フロントエンドとサーバーサイドをしっかり分けたパターン。昔ながらの人が多そうだった。
この辺は自分は大体経験済みでわかるから特段調べることもなさそうな感じであった。あえていうなら自分はAWS主体で使ってるからGCPに疎い。なのでGCP系のサービスを使って色々作ってみるのは勉強になりそうと思った。
それにしてもAWSを使ってる人少ない印象であった...。管理画面ひとつとってもDXはGCPの方が上だし、ゼロからどのクラウドインフラ使うかと聞かれたらGCPとなるのもわかる。
※ ちょっと横道逸れるけどVSCode remote container便利そうだった
(Next|Nuxt|React|Vue) + Firebaseというのも多い。フロントエンドとバックエンドをFirebaseのFirestore,Authentication,Functionsなどで全部補うパターン。自分も結構使うのだけど、RDS使わなくて良いならこれは楽である。
個人的にはBlitz.jsがフルスタックフレームワークとして台頭して、フロントエンドからバックエンドまで統一してくれる機運を少し感じるので期待してる。
Laravel,Rails方面からはLiveWireやHotwireみたいなアプローチも出てきてるが、これを採用して使うかと言われると全くわからん侍になる。
ちょうどActiveRecordとRailsの将来、フロントエンドについての示唆深いスライドもあってフロントエンドとサーバサイド両面からのアプローチに注目が集まったりしてる。
お仕事ではRailsを書いてきた時間も割と長いから訳わからん方向に進んで自滅しないでほしい(しコミュニティ側で議論していけば良いな)と思う。とはいえRails7でHotwireがデフォルトで有効になってるのマジか!?となるな。