この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:4
ページ更新者:guest
更新日時:2026-06-11 07:07:02

タイトル: eRuby
SEOタイトル: eRuby とは?Ruby のテンプレートエンジン(ERB / Erubi 構文・タグ・サンプル)

この記事の要点
  • eRuby (embedded Ruby) は HTML などのテキスト中に Ruby コードを埋め込むテンプレート技術
  • 標準実装は ERB(Ruby 標準ライブラリ)と高速版の Erubi / Erubis
  • 4 種のタグ: <% %> (実行のみ) / <%= %> (出力) / <%# %> (コメント) / <%- -%> (改行削除)
  • Rails のビュー (.html.erb) は内部でErubi で処理 — XSS 対策の自動エスケープあり
  • 主な用途: Rails / Sinatra のビュー、メール本文の生成、設定ファイルのテンプレート化

eRuby とは

eRuby (embedded Ruby) は、HTML や設定ファイルなどのテキスト中に Ruby コードを埋め込むためのテンプレート技術の総称です。<% %> のような特殊タグでマークアップ中にロジックを書き、結果のテキストを生成します。

代表実装に Ruby 標準の ERB、高速な Erubi / Erubis があります。Ruby on Rails のビュー (.html.erb) では現在 Erubi が使われています。

4 種類のタグ

タグ意味出力
<% Ruby %>Ruby コードを実行(結果は出力しない)なし
<%= 式 %>式の結果を文字列として出力あり
<%# コメント %>テンプレート上のコメントなし
<%- -%>前後の余分な改行・空白を抑制抑制

基本サンプル (ERB)

require 'erb'

template = <<~ERB
  

<%= title %>

    <% items.each do |i| %>
  • <%= i %>
  • <% end %>
ERB title = "果物リスト" items = ["りんご", "みかん", "ぶどう"] erb = ERB.new(template) puts erb.result(binding)

果物リスト

  • りんご
  • みかん
  • ぶどう

ファイルからテンプレートを読む

# template.html.erb
# 

こんにちは、<%= name %> さん!

template = File.read('template.html.erb') name = "Alice" puts ERB.new(template).result(binding)

余白制御 (trim_mode)

ERB.new の第 2 引数 (Ruby 2.6+ は trim_mode: キーワード) で改行・空白の扱いを指定できます。

# "-" モード: <%- -%> で改行抑制
erb = ERB.new(template, trim_mode: '-')

# ">" モード: %> 直後の改行を削除
erb = ERB.new(template, trim_mode: '>')

# "<>" モード: 行頭/行末の余分な改行を削除
erb = ERB.new(template, trim_mode: '<>')

# "%" モード: 行頭 % で始まる行を Ruby とみなす
erb = ERB.new(template, trim_mode: '%')

Rails での使い方

Rails のビューは app/views/コントローラ名/アクション名.html.erb に置きます。コントローラのインスタンス変数 (@user 等) がそのままビューで使えます。

# app/controllers/users_controller.rb
class UsersController < ApplicationController
  def show
    @user = User.find(params[:id])
  end
end

<%= @user.name %>

Email: <%= @user.email %>

<% if @user.admin? %>

管理者です

<% end %> <%# このコメントはレンダリングされない %>

自動エスケープ (XSS 対策)

Rails の .html.erb では <%= %>自動で HTML エスケープされます。ユーザー入力をそのまま表示しても " が入っていても安全 %>

名前: <%= @user.name %>

<%# 意図的にエスケープしない (信頼できる HTML のみ) %>
<%= raw @article.body_html %>
<%== @article.body_html %>

ERB vs Erubi vs Erubis

実装特徴主な利用
ERBRuby 標準ライブラリ。シンプルスクリプト / メールテンプレ
ErubiErubis の後継。高速 + 自動エスケープRails 5.1+ のデフォルト
Erubis歴史的に高速。メンテ終了古い Rails アプリ

主な用途

  • Rails / Sinatra のビュー: HTML 出力の定番
  • メール本文の生成: ActionMailer の .text.erb / .html.erb
  • 設定ファイルのテンプレート化: Chef / Puppet などの構成管理ツールが採用
  • 静的サイトジェネレータ: Middleman など
  • コード生成: Rails の generate がスキャフォールドに ERB を使う

FAQ

Q: ERB と Haml / Slim どちらを使う?
A: ERB は HTML 知識がそのまま使え学習コストが低い。Haml/Slim は記述量が少ないが独自記法の学習が必要。新規 Rails は ERB がほぼ標準

Q: パフォーマンスは?
A: 標準 ERB は遅め。Rails の本番運用なら Erubi に切り替わっておりキャッシュも効くので体感は十分高速

Q: テンプレート内で複雑なロジックを書きたい
A: アンチパターン。ヘルパープレゼンター (Draper など) にロジックを移すべき。ビューは表示のみが理想。