結論
- Heroku × Ruby on Rails × jQuery × Tailwind CSS + 既存のSaaS
- 仕様自体を上記の技術に寄せる。
強み
Heroku
- インフラの構築→デプロイの設定が数分で終わる
- サーバーのことをほとんど意識しなくてよくなる
- アドオンがそこそこ豊富(パフォーマンス監視、バグ管理、etc)
- Heroku Flowが手軽かつ強力
Ruby on Rails
- 設定より規約(デフォルトの設定でいい感じになることが多い)
- Active Recordが強力
- 情報が多い(遭遇したエラーは大体誰かがすでに遭遇してる)
- gem(ライブラリ)が豊富
jQuery
Railsをモノリスで使う場合、VueやReact、Angularはしんどい。
Stimulusは情報が少なく、ライブラリも少ない。
極めればStimulusが一番かもしれないが、今の自分には厳しい。
消去法でjQuery
Tailwind CSS
- クラス名を決める必要がない
- クラス名の衝突がなくなり、BEMやCSS設計から開放される
- デザインの修正により不要になったCSSが残ってしまうことがない
- どの要素にどんなスタイルが当たっているかがすぐにわかる
- カラーコードやフォントサイズ、ブレイクポイント等の統一性を保ちやすい
- ネット上に転がっているサンプルコードを気軽に取り入れやすい(他の人が書いたコードでもカスタマイズが楽)
- スタイルの修正のたびにapp/assets/stylesheets/任意のフォルダ/任意のファイルを開く必要がなくなる
既存のSaaS
メール: SendGrid
決済: Stripe
認証: Auth0
etc...
外部サービスを活用して楽に実装できる場合は積極的に活用します。
弱み+それをカバーする方法
パフォーマンス(スピード)が不安
- CDNを使う
- クエリ最適化
- パーシャルを使いすぎないように注意する
- HTMLをgzip圧縮
- 画像を圧縮
- ブラウザにキャッシュさせる期間を伸ばす
- 重い処理があればバックグラウンドに回す
- (金を積む)
この辺りの基本的なことをしっかりやって、Herokuの月25ドル以上のプランを使っていれば普通はそこそこのスピードがでます。
Tailwind CSS単体では実装が難しいデザインがある
Tailwind CSSで実装しやすいデザインにする。
クロスプラットフォーム対応する場合、APIが使いまわせない
webアプリだけ作る場合は問題なし。
jQueryを使うとコードがカオスになる
- なるべくjQueryを使わなくて良いような仕様にする
-
js.erb
やremote: true
を使っていい感じに書く - 開発に関わる人数を極力減らす
ここが一番の肝だと思います。
JavaScript SPA 周りの議論で出た私なりの答え - ボクココ
Railsで remote: true と js.erbを使って簡単にAjax(非同期通信)を実装しよう!(いいね機能のデモ付) - Qiita
機能するケース、しないケース
特に機能するケース
- 個人開発
- MVP作り
- 小~中規模の受託開発
エンジニアが仕様決めから関われる新規開発案件で、かつ小規模なチームであれば、8割以上のケースでいけると思います。
機能しないケース
- 上記の技術スタックでは実装できない機能があるケース
- 技術力でブランディングをしたいケース
- エンジニアが仕様に口を出せないケース
- 大規模チーム
- 「このサービスを作るには◯人必要だな」ではなく「このメンバーで開発するならこの技術」という順番で技術選定するケース
エンジニアが仕様に口を出せない現場とか、大規模チームだとたぶんきついです。