Ruby on Rails は、Ruby で Web アプリを作るときの代表的なフレームワークです。 投稿・予約・会員機能・管理画面といった、よくある Web サービスの土台を短時間で立ち上げられます。
「設定より規約」がすべての前提
Rails の速さは、決めごとを先に固定してあることから来ています。テーブル名は複数形、モデル名は単数形、ファイルはこの場所——といった規約に従っている限り、設定を書かずに動きます。
裏返すと、規約から外れた瞬間に急に難しくなります。既存DBのテーブル名が規約と違う、主キーが id ではない、といった案件では、Rails の利点が一気に薄れます。導入判断では「規約に乗れるデータ構造か」を先に確認してください。
最初にぶつかるのは N+1
Rails の Active Record は、関連データを自然な書き方で取得できます。その自然さゆえに、一覧画面で1件ずつ追加クエリが飛ぶ N+1 問題が非常に起きやすいフレームワークでもあります。
記事20件の一覧で著者名を表示するだけで 1+20=21回のクエリになります。対策は関連の先読み(includes)で、これは Eloquent の with() と同じ考え方です。表示が遅いと感じたら、まずクエリ本数が件数に比例していないかを見ます。
速く作れることと、長く保守できることは別
Rails は初期開発が速いぶん、設計を整理しないまま機能が積み上がりやすいという性質があります。モデルにロジックが集中して肥大化する(いわゆるファットモデル)のは典型的な症状です。
小さく作って検証する段階では正しく、規模が出てきたら責務の整理が必要になります。この切り替え時期を逃さないことが、Rails 案件の成否を分けます。
押さえておきたい注意点
チームに経験者がいないと、便利さより「なぜ動いているのか分からない」が先に来ます。Rails は暗黙の処理が多いため、経験値が成果に直結する度合いが他のフレームワークより高いです。
実務で見るポイント
- CRUD 中心の Web サービス、初期検証を急ぐ案件と相性がよい
- バージョンアップは Ruby 本体と足並みを揃えて計画する
- 既存システムの改修では、規約から外れた箇所がコストの中心になる