CasusultというSNSクラウドソーシングの開発で採用した技術
Casusult(カジュサル)というSNSクラウドソーシングサービスを作り、ベータ版のローンチをしました。現在、ワーカーの先行登録受付中です。
この投稿では、Casusultで採用している技術の紹介をします。
フロントエンド
React
フロントエンドにはReactを採用しています。
採用理由は、モバイルアプリを作る可能性が高いと判断したので、React Nativeとのコンポーネントの再利用や言語的親和性による開発ハードルを下げるためにReactを採用しました。
Next.jsの採用も検討しましたが、見送りました。
理由は、学習コストです。React自体も独学で少し触っていた程度の状態だったため、開発速度を考慮してNext.jsは使用しませんでした。
Vite
ビルドツールにはViteを採用しています。
Casusultの開発環境を整え出した2024年上旬では、React+Viteの構成一択みたいな状態だったと記憶しています。
ビルド、ホットリロードが高速というだけで、Viteを採用する理由になるかと思います。
もうCreate React Appを使用している人はいないよね...?いるのかな?
Zustand
状態管理ライブラリにはZustandを採用しています。
シンプルで軽量、という点で採用しました。
サービス的に状態管理が複雑になることはなさそうだと判断したので、シンプルなライブラリを採用しています。
以前Reduxを使用していたのですが、複雑で学習コストが高いと感じていました。
Zustandはすぐに理解でき、使いやすいと感じました。
MUI
CSSライブラリにはMUIを採用しています。
採用理由は、"使い慣れている"からです。以上。
Tailwind CSSの採用も検討しましたが、使ったことがないため開発速度を優先してMUIを採用しました。
バックエンド
Ruby on Rails (APIモード)
バックエンドにはRuby on Railsを採用しています。
昔から業務で利用しており、最も使い慣れているため採用しています。
昨今の開発界隈を見ていると、ExpressやNest.js、Hono等でバックエンドにTypeScriptを使っているサービスが多いと感じます。
Railsを採用しているのは、規模が大きめでチームエンジニアリングが活きてくる開発現場が多いような気がしています。
小規模開発の場合は、フロントエンドもバックエンドもTypeScriptで統一すると、開発効率が良い&手軽なデプロイ先も多いというイメージがあります。
Casusultは、SNS+クラウドソーシングのサービスで、将来的にバックエンドの規模も大きくなる(ように成長させたい)ので、Railsの選択は悪くないと思っています。
デプロイ環境
サービスはAWSにデプロイしています。
料金コストだけを見れば、AWSよりもコストを抑えるサービスの検討余地はあったと思いますが、運用コストと知見的にAWSで環境構築を完結するのが良さそうと判断しました。
AWS
- フロントエンド: Amazon S3 + Amazon CloudFront
- バックエンド: Amazon ECS(Fargate)
- 監視/ログ: Amazon CloudWatch
- CI/CD: GitHub Actions + AWS CodeDeploy
最後に
今後、内容に変更があれば、追記・修正します。
これからサービス開発しようと考えている方の参考になれば嬉しいです!
サービスについて知りたい場合は、こちらから覗いてみてください👀
X公式アカウント
Discussion