Ruby on Rails 7の新機能と開発の始め方

プログラミング言語

Ruby on Rails 7は、Rails 6からの長足の進化を経て、Hotwire・importmaps・Tailwind等のモダンなフロントエンド技術を標準採用しています。本記事では、Rails 7の新機能と開発の始め方を解説します。

Rails 7の特徴

  • Hotwire(Turbo + Stimulus)でリアクティブなUIを最小JSで実現
  • importmapsによるwebpackなしのモダンJS運用
  • esbuild / Rollup / Tailwindなどのフロントエンドオプション
  • 暗号化された属性(encrypts)標準サポート
  • 非同期クエリ(load_async)

環境構築

# Rubyインストール
brew install rbenv
rbenv install 3.3.0
rbenv global 3.3.0

# Rails
gem install rails

# 新規プロジェクト
rails new my_app --css=tailwind
cd my_app
bin/rails server

scaffold で素早く動かす

bin/rails generate scaffold Post title:string body:text
bin/rails db:migrate
bin/rails server
# /posts でCRUD画面が動く

Hotwireによるリアクティブ更新

Turbo Frames・Turbo Streamsを使うと、ほぼJSを書かずにSPAライクなUIが作れます。コメント追加や、いいね数の更新などが部分置き換えで実現します。

<!-- _comment.html.erb -->
<%= turbo_frame_tag comment do %>
  <p><%= comment.body %></p>
<% end %>

暗号化された属性

class User < ApplicationRecord
  encrypts :email, deterministic: true
end

user.email = "user@example.com" # 自動暗号化される

非同期クエリ

posts = Post.where(published: true).load_async
users = User.recent.load_async
# 後でアクセスすると並列実行された結果が得られる

本番運用に向くスタック

  • DB:PostgreSQL(推奨)/ MySQL
  • ジョブ:Sidekiq / GoodJob
  • キャッシュ:Redis
  • ファイル:Active Storage(S3等)
  • デプロイ:Heroku / Fly.io / Render / 自前Docker

まとめ

Rails 7はHotwireによる「JSをほぼ書かないリッチUI」を中心に、現代的なWeb開発の体験を再定義しました。少人数で高速にプロダクトを立ち上げたい場合に依然として強力な選択肢です。新規プロジェクトは rails new --css=tailwind から始めるのが定番。