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 から始めるのが定番。